GB I/O: Fix incrementing SGB controller when P14 is low (fixes #2202)

This commit is contained in:
Vicki Pfau 2021-09-05 12:20:46 -07:00
parent f2f75b3b00
commit 337ca2cfaf
2 changed files with 6 additions and 9 deletions

View File

@ -10,6 +10,7 @@ Features:
- Discord Rich Presence now supports time elapsed
- Additional scaling shaders
Emulation fixes:
- GB I/O: Fix incrementing SGB controller when P14 is low (fixes mgba.io/i/2202)
- GB Memory: Add cursory cartridge open bus emulation (fixes mgba.io/i/2032)
- GB Video: Render SGB border when unmasking with ATTR/PAL_SET (fixes mgba.io/i/2261)
- GBA: Improve timing when not booting from BIOS

View File

@ -119,19 +119,15 @@ static void _writeSGBBits(struct GB* gb, int bits) {
if (bits == gb->currentSgbBits) {
return;
}
switch (bits) {
case 0:
case 1:
if (gb->currentSgbBits & 2) {
gb->sgbIncrement = !gb->sgbIncrement;
}
break;
case 3:
if (bits & 2) {
if (gb->sgbIncrement) {
gb->sgbIncrement = false;
gb->sgbCurrentController = (gb->sgbCurrentController + 1) & gb->sgbControllers;
}
break;
} else {
if (gb->currentSgbBits & 2) {
gb->sgbIncrement = !gb->sgbIncrement;
}
}
gb->currentSgbBits = bits;
if (gb->sgbBit == 128 && bits == 2) {