+#else
+ // 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;
+
+ if (offset0 != 0xFF)
+ {
+ uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, -1 }, { BUTTON_C, -1 }, { BUTTON_OPTION, -1 } };
+ data &= (joypad0Buttons[mask[offset0][0]] ? 0xFFFD : 0xFFFF);
+
+ if (mask[offset0][1] != -1)
+ data &= (joypad0Buttons[mask[offset0][1]] ? 0xFFFE : 0xFFFF);
+ }
+
+ if (offset1 != 0xFF)
+ {
+ uint8_t mask[4][2] = { { BUTTON_A, BUTTON_PAUSE }, { BUTTON_B, -1 }, { BUTTON_C, -1 }, { BUTTON_OPTION, -1 } };
+ data &= (joypad1Buttons[mask[offset1][0]] ? 0xFFF7 : 0xFFFF);
+
+ if (mask[offset1][1] != -1)
+ data &= (joypad1Buttons[mask[offset1][1]] ? 0xFFFB : 0xFFFF);
+ }
+#endif