]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/joystick.cpp
Fixes for compilation against GCC 6.
[virtualjaguar] / src / joystick.cpp
index 619a751df7490dec02c0a156e71201a1de1be441..25aef85b2a23e1a72c14d2853c4988649a7ca864 100644 (file)
@@ -131,12 +131,13 @@ uint16_t JoystickReadWord(uint32_t offset)
 
                // Joystick data returns active low for buttons pressed, high for non-
                // pressed.
-               uint8_t offset0 = joypad0Offset[joystick_ram[1] & 0x0F] / 4;
-               uint8_t offset1 = joypad1Offset[(joystick_ram[1] >> 4) & 0x0F] / 4;
+               uint8_t offset0 = joypad0Offset[joystick_ram[1] & 0x0F];
+               uint8_t offset1 = joypad1Offset[(joystick_ram[1] >> 4) & 0x0F];
 
                if (offset0 != 0xFF)
                {
-                       uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, -1 }, { BUTTON_C, -1 }, { BUTTON_OPTION, -1 } };
+                       offset0 /= 4;   // Make index 0, 1, 2, 3 instead of 0, 4, 8, 12
+                       uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, 0xFF }, { BUTTON_C, 0xFF }, { BUTTON_OPTION, 0xFF } };
                        data &= (joypad0Buttons[mask[offset0][0]] ? 0xFFFD : 0xFFFF);
 
                        if (mask[offset0][1] != -1)
@@ -145,7 +146,8 @@ uint16_t JoystickReadWord(uint32_t offset)
 
                if (offset1 != 0xFF)
                {
-                       uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, -1 }, { BUTTON_C, -1 }, { BUTTON_OPTION, -1 } };
+                       offset1 /= 4;   // Make index 0, 1, 2, 3 instead of 0, 4, 8, 12
+                       uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, 0xFF }, { BUTTON_C, 0xFF }, { BUTTON_OPTION, 0xFF } };
                        data &= (joypad1Buttons[mask[offset1][0]] ? 0xFFF7 : 0xFFFF);
 
                        if (mask[offset1][1] != -1)