Permalink
Browse files

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

  • Loading branch information...
endrift committed Mar 31, 2018
1 parent 36de596 commit 16eed8ed34d6cbe366fce2d2335b04418c489031
Showing with 6 additions and 3 deletions.
  1. +6 −3 src/gb/io.c
View
@@ -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;

0 comments on commit 16eed8e

Please sign in to comment.