diff options
-rw-r--r-- | io.c | 1 | ||||
-rw-r--r-- | sms.c | 4 |
2 files changed, 3 insertions, 2 deletions
@@ -1841,6 +1841,7 @@ uint8_t io_data_read(io_port * port, uint32_t current_cycle) { case IO_GAMEPAD2: input = ~port->input[GAMEPAD_TH1]; + device_driven = 0x3F; break; case IO_GAMEPAD3: { @@ -13,9 +13,9 @@ static void *memory_io_write(uint32_t location, void *vcontext, uint8_t value) sms_context *sms = z80->system; if (location & 1) { uint8_t fuzzy_ctrl_0 = sms->io.ports[0].control, fuzzy_ctrl_1 = sms->io.ports[1].control; - sms->io.ports[0].control = (~value) << 5 & 0x60; + io_control_write(sms->io.ports, (~value) << 5 & 0x60, z80->current_cycle); fuzzy_ctrl_0 |= sms->io.ports[0].control; - sms->io.ports[1].control = (~value) << 3 & 0x60; + io_control_write(sms->io.ports+1, (~value) << 3 & 0x60, z80->current_cycle); fuzzy_ctrl_1 |= sms->io.ports[1].control; if ( (fuzzy_ctrl_0 & 0x40 & (sms->io.ports[0].output ^ (value << 1)) & (value << 1)) |