mirror of https://github.com/mgba-emu/mgba.git
GB Video: Fix drawing background when window is force-disabled by frontend
This commit is contained in:
parent
4a4b6fd605
commit
2e104b8553
1
CHANGES
1
CHANGES
|
@ -3,6 +3,7 @@ Emulation fixes:
|
|||
- GB Audio: Fix initial sweep state
|
||||
- GB Audio: Fix deserializing audio channels 2 and 3
|
||||
- GB Audio: Fix deserializing while audio was disabled (fixes mgba.io/i/1305)
|
||||
- GB Video: Fix drawing background when window is force-disabled by frontend
|
||||
- GBA Audio: Fix deserializing SOUNDCNT_L
|
||||
- GBA Audio: Fix stereo in XQ audio
|
||||
- GBA Audio: Fix volume/mute in XQ audio (fixes mgba.io/i/1864)
|
||||
|
|
|
@ -133,15 +133,15 @@ static bool _parsePacket(struct mVideoLogger* logger, const struct mVideoLoggerD
|
|||
}
|
||||
break;
|
||||
case DIRTY_VRAM:
|
||||
proxyRenderer->backend->disableBG = proxyRenderer->d.disableBG;
|
||||
proxyRenderer->backend->disableWIN = proxyRenderer->d.disableWIN;
|
||||
proxyRenderer->backend->disableOBJ = proxyRenderer->d.disableOBJ;
|
||||
if (item->address <= GB_SIZE_VRAM - 0x1000) {
|
||||
logger->readData(logger, &logger->vram[item->address >> 1], 0x1000, true);
|
||||
proxyRenderer->backend->writeVRAM(proxyRenderer->backend, item->address);
|
||||
}
|
||||
break;
|
||||
case DIRTY_SCANLINE:
|
||||
proxyRenderer->backend->disableBG = proxyRenderer->d.disableBG;
|
||||
proxyRenderer->backend->disableWIN = proxyRenderer->d.disableWIN;
|
||||
proxyRenderer->backend->disableOBJ = proxyRenderer->d.disableOBJ;
|
||||
if (item->address < GB_VIDEO_VERTICAL_PIXELS) {
|
||||
proxyRenderer->backend->finishScanline(proxyRenderer->backend, item->address);
|
||||
}
|
||||
|
|
|
@ -516,7 +516,7 @@ static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, i
|
|||
if (GBRegisterLCDCIsWindow(softwareRenderer->lcdc) && wy == y && wx <= endX) {
|
||||
softwareRenderer->hasWindow = true;
|
||||
}
|
||||
if (GBRegisterLCDCIsWindow(softwareRenderer->lcdc) && softwareRenderer->hasWindow && wx <= endX) {
|
||||
if (GBRegisterLCDCIsWindow(softwareRenderer->lcdc) && softwareRenderer->hasWindow && wx <= endX && !softwareRenderer->d.disableWIN) {
|
||||
if (wx > 0 && !softwareRenderer->d.disableBG) {
|
||||
GBVideoSoftwareRendererDrawBackground(softwareRenderer, maps, startX, wx, softwareRenderer->scx - softwareRenderer->offsetScx, softwareRenderer->scy + y - softwareRenderer->offsetScy);
|
||||
}
|
||||
|
@ -525,9 +525,7 @@ static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, i
|
|||
if (GBRegisterLCDCIsWindowTileMap(softwareRenderer->lcdc)) {
|
||||
maps += GB_SIZE_MAP;
|
||||
}
|
||||
if (!softwareRenderer->d.disableWIN) {
|
||||
GBVideoSoftwareRendererDrawBackground(softwareRenderer, maps, wx, endX, -wx - softwareRenderer->offsetWx, y - wy - softwareRenderer->offsetWy);
|
||||
}
|
||||
GBVideoSoftwareRendererDrawBackground(softwareRenderer, maps, wx, endX, -wx - softwareRenderer->offsetWx, y - wy - softwareRenderer->offsetWy);
|
||||
} else if (!softwareRenderer->d.disableBG) {
|
||||
GBVideoSoftwareRendererDrawBackground(softwareRenderer, maps, startX, endX, softwareRenderer->scx - softwareRenderer->offsetScx, softwareRenderer->scy + y - softwareRenderer->offsetScy);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue