all repos — mgba @ 523aaf14973d748ff0c7fe68c5a6338976696466

mGBA Game Boy Advance Emulator

GB Video: Only trigger STAT write IRQs when screen is on (fixes #912)
Vicki Pfau vi@endrift.com
Wed, 18 Oct 2017 09:19:10 -0700
commit

523aaf14973d748ff0c7fe68c5a6338976696466

parent

c94aff135f2f80a5384b470b70520fd7fcfccf83

2 files changed, 5 insertions(+), 1 deletions(-)

jump to
M CHANGESCHANGES

@@ -20,6 +20,7 @@ - GBA Video: Don't mask out high bits of BLDY (fixes mgba.io/i/899)

- GBA Video: Force align 256-color tiles - GBA DMA: ROM reads are forced to increment - GB Video: Fix loading states while in mode 3 + - GB Video: Only trigger STAT write IRQs when screen is on (fixes mgba.io/i/912) Misc: - GBA Timer: Use global cycles for timers - GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
M src/gb/video.csrc/gb/video.c

@@ -455,7 +455,10 @@

void GBVideoWriteSTAT(struct GBVideo* video, GBRegisterSTAT value) { GBRegisterSTAT oldStat = video->stat; video->stat = (video->stat & 0x7) | (value & 0x78); - if (video->p->model < GB_MODEL_CGB && !_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);