GB: Yet more SGB cleanup

This commit is contained in:
Vicki Pfau 2019-09-06 19:22:18 -07:00
parent 34529398bb
commit e925148573
2 changed files with 6 additions and 3 deletions

View File

@ -115,10 +115,12 @@ static void _writeSGBBits(struct GB* gb, int bits) {
if (bits == gb->currentSgbBits) { if (bits == gb->currentSgbBits) {
return; return;
} }
gb->currentSgbBits = bits;
switch (bits) { switch (bits) {
case 0:
case 1: case 1:
gb->sgbIncrement = !gb->sgbIncrement; if (gb->currentSgbBits & 2) {
gb->sgbIncrement = !gb->sgbIncrement;
}
break; break;
case 3: case 3:
if (gb->sgbIncrement) { if (gb->sgbIncrement) {
@ -127,6 +129,7 @@ static void _writeSGBBits(struct GB* gb, int bits) {
} }
break; break;
} }
gb->currentSgbBits = bits;
if (gb->sgbBit == 128 && bits == 2) { if (gb->sgbBit == 128 && bits == 2) {
GBVideoWriteSGBPacket(&gb->video, gb->sgbPacket); GBVideoWriteSGBPacket(&gb->video, gb->sgbPacket);
++gb->sgbBit; ++gb->sgbBit;

View File

@ -702,7 +702,7 @@ void GBVideoWriteSGBPacket(struct GBVideo* video, uint8_t* data) {
break; break;
case SGB_MLT_REQ: case SGB_MLT_REQ:
video->p->sgbControllers = video->sgbPacketBuffer[1] & 0x3; video->p->sgbControllers = video->sgbPacketBuffer[1] & 0x3;
video->p->sgbCurrentController = 0; video->p->sgbCurrentController &= video->p->sgbControllers;
return; return;
case SGB_MASK_EN: case SGB_MASK_EN:
video->renderer->sgbRenderMode = video->sgbPacketBuffer[1] & 0x3; video->renderer->sgbRenderMode = video->sgbPacketBuffer[1] & 0x3;