GBA: Only unhalt CPU if appropriate bit is set in IE

This commit is contained in:
Jeffrey Pfau 2016-12-11 20:40:14 -08:00
parent 881c10b40e
commit 64d3f48cd8
2 changed files with 6 additions and 3 deletions

View File

@ -22,6 +22,7 @@ Bugfixes:
- All: Fix fullscreen config option being ignored
- GBA: Add savegame override for Crash Bandicoot 2
- ARM7: PSR mode bits should not get sign extended
- GBA: Only unhalt CPU if appropriate bit is set in IE
Misc:
- PSP2: Improved controller rumble
- GB, GBA: Prevent loading null ROMs

View File

@ -656,10 +656,12 @@ void GBAWriteIME(struct GBA* gba, uint16_t value) {
void GBARaiseIRQ(struct GBA* gba, enum GBAIRQ irq) {
gba->memory.io[REG_IF >> 1] |= 1 << irq;
gba->cpu->halted = 0;
if (gba->memory.io[REG_IME >> 1] && (gba->memory.io[REG_IE >> 1] & 1 << irq)) {
ARMRaiseIRQ(gba->cpu);
if (gba->memory.io[REG_IE >> 1] & 1 << irq) {
gba->cpu->halted = 0;
if (gba->memory.io[REG_IME >> 1]) {
ARMRaiseIRQ(gba->cpu);
}
}
}