@@ -38,6 +38,8 @@ extern uint64_t joy;
38
38
static bool can_dupe;
39
39
unsigned device_type = 0 ;
40
40
41
+ static uint32_t disableAnalogStick = 0 ;
42
+
41
43
static u32 *upscaleBuffer = NULL ;
42
44
static int upscaleBufferSize = 0 ;
43
45
@@ -78,7 +80,7 @@ const int frameSkipValues[] = {0, 0x13, 0x12, 0x1, 0x2, 0x3, 0x4};
78
80
79
81
static uint32_t frameSkip = 0 ;
80
82
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};
82
84
83
85
static bool scan_area (const uint8_t *data, unsigned size) {
84
86
for (unsigned i = 0 ; i < size; i++)
@@ -573,6 +575,24 @@ void threadFunc(void *args) {
573
575
mutexUnlock (&emulationLock);
574
576
}
575
577
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
+
576
596
int main (int argc, char *argv[]) {
577
597
#ifdef NXLINK_STDIO
578
598
socketInitializeDefault ();
@@ -606,7 +626,9 @@ int main(int argc, char *argv[]) {
606
626
uiAddSetting (" Show avg. frametime" , &showFrametime, 2 , stringsNoYes);
607
627
uiAddSetting (" Screen scaling method" , &scalingFilter, filtersCount, filterStrNames);
608
628
uiAddSetting (" Frameskip" , &frameSkip, sizeof (frameSkipValues) / sizeof (frameSkipValues[0 ]), frameSkipNames);
629
+ uiAddSetting (" Disable analog stick" , &disableAnalogStick, 2 , stringsNoYes);
609
630
uiFinaliseAndLoadSettings ();
631
+ applyConfig ();
610
632
611
633
uiSetState (stateFileselect);
612
634
@@ -767,9 +789,7 @@ int main(int argc, char *argv[]) {
767
789
mutexUnlock (&emulationLock);
768
790
} break ;
769
791
case resultSettingsChanged:
770
- mutexLock (&emulationLock);
771
- SetFrameskip (frameSkipValues[frameSkip]);
772
- mutexUnlock (&emulationLock);
792
+ applyConfig ();
773
793
break ;
774
794
case resultNone:
775
795
default :
0 commit comments