diff --git a/CHANGES b/CHANGES index 000c92ebb..9db0feba6 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,7 @@ Bugfixes: - GBA Video: Force align 256-color tiles - GBA DMA: ROM reads are forced to increment + - GB Video: Only trigger STAT write IRQs when screen is on (fixes mgba.io/i/912) 0.6.1: (2017-10-01) Bugfixes: diff --git a/src/gb/video.c b/src/gb/video.c index ea879d5c8..f0cd97cc7 100644 --- a/src/gb/video.c +++ b/src/gb/video.c @@ -373,7 +373,10 @@ void GBVideoWriteLCDC(struct GBVideo* video, GBRegisterLCDC value) { void GBVideoWriteSTAT(struct GBVideo* video, GBRegisterSTAT value) { GBRegisterSTAT oldStat = video->stat; video->stat = (video->stat & 0x7) | (value & 0x78); - if (video->p->model == GB_MODEL_DMG && !_statIRQAsserted(video, oldStat) && video->mode < 3) { + if (!GBRegisterLCDCIsEnable(video->p->memory.io[REG_LCDC]) || video->p->model >= GB_MODEL_CGB) { + return; + } + if (!_statIRQAsserted(video, oldStat) && video->mode < 3) { // TODO: variable for the IRQ line value? video->p->memory.io[REG_IF] |= (1 << GB_IRQ_LCDSTAT); GBUpdateIRQs(video->p);