From 03543eeab4627483100c360805bf7885c86c3b60 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Fri, 29 May 2015 22:51:34 -0700 Subject: [PATCH] GBA SIO: Fix regression when switching modes --- src/gba/sio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gba/sio.c b/src/gba/sio.c index 16d9772df..49f66ff58 100644 --- a/src/gba/sio.c +++ b/src/gba/sio.c @@ -131,6 +131,10 @@ void GBASIOWriteRCNT(struct GBASIO* sio, uint16_t value) { } void GBASIOWriteSIOCNT(struct GBASIO* sio, uint16_t value) { + if ((value ^ sio->siocnt) & 0x3000) { + sio->siocnt = value & 0x3000; + _switchMode(sio); + } if (sio->activeDriver && sio->activeDriver->writeRegister) { value = sio->activeDriver->writeRegister(sio->activeDriver, REG_SIOCNT, value); } else { @@ -151,7 +155,6 @@ void GBASIOWriteSIOCNT(struct GBASIO* sio, uint16_t value) { } } sio->siocnt = value; - _switchMode(sio); } void GBASIOWriteSIOMLT_SEND(struct GBASIO* sio, uint16_t value) {