GBA: Add option to not hard-crash when a game crashes

This commit is contained in:
Jeffrey Pfau 2015-08-02 11:45:26 -07:00
parent 7fb1b90abf
commit ea91c48d3e
3 changed files with 6 additions and 2 deletions

View File

@ -94,6 +94,7 @@ static void GBAInit(struct ARMCore* cpu, struct ARMComponent* component) {
gba->idleDetectionFailures = 0;
gba->realisticTiming = true;
gba->hardCrash = true;
gba->performingDMA = false;
}

View File

@ -124,6 +124,7 @@ struct GBA {
bool taintedRegisters[16];
bool realisticTiming;
bool hardCrash;
};
struct GBACartridge {

View File

@ -278,9 +278,11 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) {
memory->activeRegion = -1;
cpu->memory.activeRegion = _deadbeef;
cpu->memory.activeMask = 0;
if (!gba->yankedRomSize) {
GBALog(gba, GBA_LOG_FATAL, "Jumped to invalid address");
enum GBALogLevel errorLevel = GBA_LOG_FATAL;
if (gba->yankedRomSize || !gba->hardCrash) {
errorLevel = GBA_LOG_GAME_ERROR;
}
GBALog(gba, errorLevel, "Jumped to invalid address: %08X", address);
return;
}
cpu->memory.activeSeqCycles32 = memory->waitstatesSeq32[memory->activeRegion];