GB I/O: Fix SGB command clocking (fixes #1029)

This commit is contained in:
Vicki Pfau 2018-03-30 21:11:34 -07:00
parent 36de596fdb
commit 16eed8ed34
1 changed files with 6 additions and 3 deletions

View File

@ -106,7 +106,7 @@ static const uint8_t _registerMask[] = {
static void _writeSGBBits(struct GB* gb, int bits) {
if (!bits) {
gb->sgbBit = 0;
gb->sgbBit = -1;
memset(gb->sgbPacket, 0, sizeof(gb->sgbPacket));
}
if (bits == gb->currentSgbBits) {
@ -122,9 +122,12 @@ static void _writeSGBBits(struct GB* gb, int bits) {
}
switch (bits) {
case 1:
if (gb->sgbBit < 0) {
return;
}
gb->sgbPacket[gb->sgbBit >> 3] |= 1 << (gb->sgbBit & 7);
// Fall through
case 2:
break;
case 3:
++gb->sgbBit;
default:
break;