GB Video: Changing LYC while LCDC off doesn't affect STAT (fixes #1224)
Vicki Pfau vi@endrift.com
Fri, 23 Nov 2018 16:29:52 -0500
2 files changed,
7 insertions(+),
4 deletions(-)
M
CHANGES
→
CHANGES
@@ -138,6 +138,7 @@ - Qt: Grab focus when game starts (fixes mgba.io/i/804)
- Core: Remember to deinit proxy ring FIFO - GBA Savedata: Fix EEPROM writing codepath when savetype is not EEPROM - Core: Reroot timing list when (de)scheduling + - GB Video: Changing LYC while LCDC off doesn't affect STAT (fixes mgba.io/i/1224) Misc: - mGUI: Add SGB border configuration option - mGUI: Add support for different settings types
M
src/gb/video.c
→
src/gb/video.c
@@ -449,10 +449,12 @@ }
void GBVideoWriteLYC(struct GBVideo* video, uint8_t value) { GBRegisterSTAT oldStat = video->stat; - video->stat = GBRegisterSTATSetLYC(video->stat, value == video->ly); - if (!_statIRQAsserted(video, oldStat) && _statIRQAsserted(video, video->stat)) { - video->p->memory.io[REG_IF] |= (1 << GB_IRQ_LCDSTAT); - GBUpdateIRQs(video->p); + if (GBRegisterLCDCIsEnable(video->p->memory.io[REG_LCDC])) { + video->stat = GBRegisterSTATSetLYC(video->stat, value == video->ly); + if (!_statIRQAsserted(video, oldStat) && _statIRQAsserted(video, video->stat)) { + video->p->memory.io[REG_IF] |= (1 << GB_IRQ_LCDSTAT); + GBUpdateIRQs(video->p); + } } video->p->memory.io[REG_STAT] = video->stat; }