GB Video: Only trigger STAT write IRQs when screen is on (fixes #912)

This commit is contained in:
Vicki Pfau 2017-10-18 09:19:10 -07:00
parent dbc48fd401
commit 3f682034d6
2 changed files with 5 additions and 1 deletions

View File

@ -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:

View File

@ -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);