mirror of
https://github.com/libretro/mgba.git
synced 2024-11-24 08:30:30 +00:00
GB, GBA: Fix interrupted cores from restarting early
This commit is contained in:
parent
e78333611d
commit
aa0f988daa
@ -644,17 +644,17 @@ void GBProcessEvents(struct LR35902Core* cpu) {
|
||||
} while (gb->cpuBlocked);
|
||||
cpu->nextEvent = nextEvent;
|
||||
|
||||
if (gb->earlyExit) {
|
||||
gb->earlyExit = false;
|
||||
break;
|
||||
}
|
||||
if (cpu->halted) {
|
||||
cpu->cycles = cpu->nextEvent;
|
||||
if (!gb->memory.ie || !gb->memory.ime) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gb->earlyExit) {
|
||||
break;
|
||||
}
|
||||
} while (cpu->cycles >= cpu->nextEvent);
|
||||
gb->earlyExit = false;
|
||||
}
|
||||
|
||||
void GBSetInterrupts(struct LR35902Core* cpu, bool enable) {
|
||||
|
@ -264,11 +264,6 @@ static void GBAProcessEvents(struct ARMCore* cpu) {
|
||||
} while (gba->cpuBlocked);
|
||||
|
||||
cpu->nextEvent = nextEvent;
|
||||
|
||||
if (gba->earlyExit) {
|
||||
gba->earlyExit = false;
|
||||
break;
|
||||
}
|
||||
if (cpu->halted) {
|
||||
cpu->cycles = nextEvent;
|
||||
if (!gba->memory.io[REG_IME >> 1] || !gba->memory.io[REG_IE >> 1]) {
|
||||
@ -280,7 +275,11 @@ static void GBAProcessEvents(struct ARMCore* cpu) {
|
||||
mLOG(GBA, FATAL, "Negative cycles will pass: %i", nextEvent);
|
||||
}
|
||||
#endif
|
||||
if (gba->earlyExit) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
gba->earlyExit = false;
|
||||
#ifndef NDEBUG
|
||||
if (gba->cpuBlocked) {
|
||||
mLOG(GBA, FATAL, "CPU is blocked!");
|
||||
|
Loading…
Reference in New Issue
Block a user