Skip to content

Commit 33fef04

Browse files
committed
fix #8
1 parent 465fcce commit 33fef04

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

source/switch/main.cpp

+24-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ extern uint64_t joy;
3838
static bool can_dupe;
3939
unsigned device_type = 0;
4040

41+
static uint32_t disableAnalogStick = 0;
42+
4143
static u32 *upscaleBuffer = NULL;
4244
static int upscaleBufferSize = 0;
4345

@@ -78,7 +80,7 @@ const int frameSkipValues[] = {0, 0x13, 0x12, 0x1, 0x2, 0x3, 0x4};
7880

7981
static uint32_t frameSkip = 0;
8082

81-
int buttonMap[10] = {KEY_A, KEY_B, KEY_MINUS, KEY_PLUS, KEY_RIGHT, KEY_LEFT, KEY_UP, KEY_DOWN, KEY_R, KEY_L};
83+
uint32_t buttonMap[10] = {KEY_A, KEY_B, KEY_MINUS, KEY_PLUS, KEY_RIGHT, KEY_LEFT, KEY_UP, KEY_DOWN, KEY_R, KEY_L};
8284

8385
static bool scan_area(const uint8_t *data, unsigned size) {
8486
for (unsigned i = 0; i < size; i++)
@@ -573,6 +575,24 @@ void threadFunc(void *args) {
573575
mutexUnlock(&emulationLock);
574576
}
575577

578+
static void applyConfig() {
579+
mutexLock(&emulationLock);
580+
SetFrameskip(frameSkipValues[frameSkip]);
581+
582+
if (!disableAnalogStick) {
583+
buttonMap[4] = KEY_RIGHT;
584+
buttonMap[5] = KEY_LEFT;
585+
buttonMap[6] = KEY_UP;
586+
buttonMap[7] = KEY_DOWN;
587+
} else {
588+
buttonMap[4] = KEY_DRIGHT;
589+
buttonMap[5] = KEY_DLEFT;
590+
buttonMap[6] = KEY_DUP;
591+
buttonMap[7] = KEY_DDOWN;
592+
}
593+
mutexUnlock(&emulationLock);
594+
}
595+
576596
int main(int argc, char *argv[]) {
577597
#ifdef NXLINK_STDIO
578598
socketInitializeDefault();
@@ -606,7 +626,9 @@ int main(int argc, char *argv[]) {
606626
uiAddSetting("Show avg. frametime", &showFrametime, 2, stringsNoYes);
607627
uiAddSetting("Screen scaling method", &scalingFilter, filtersCount, filterStrNames);
608628
uiAddSetting("Frameskip", &frameSkip, sizeof(frameSkipValues) / sizeof(frameSkipValues[0]), frameSkipNames);
629+
uiAddSetting("Disable analog stick", &disableAnalogStick, 2, stringsNoYes);
609630
uiFinaliseAndLoadSettings();
631+
applyConfig();
610632

611633
uiSetState(stateFileselect);
612634

@@ -767,9 +789,7 @@ int main(int argc, char *argv[]) {
767789
mutexUnlock(&emulationLock);
768790
} break;
769791
case resultSettingsChanged:
770-
mutexLock(&emulationLock);
771-
SetFrameskip(frameSkipValues[frameSkip]);
772-
mutexUnlock(&emulationLock);
792+
applyConfig();
773793
break;
774794
case resultNone:
775795
default:

0 commit comments

Comments
 (0)