diff --git a/CHANGES b/CHANGES index 166fac095..d5fee601f 100644 --- a/CHANGES +++ b/CHANGES @@ -175,6 +175,7 @@ Misc: - Qt: Move shader settings into main settings window - GB Serialize: Add MBC state serialization - Qt: Dismiss game crashing/failing dialogs when a new game loads + - GBA Memory: Call crash callbacks regardless of if hard crash is enabled 0.6 beta 1: (2017-06-29) - Initial beta for 0.6 diff --git a/src/gba/memory.c b/src/gba/memory.c index be35f4104..34e035d50 100644 --- a/src/gba/memory.c +++ b/src/gba/memory.c @@ -297,10 +297,8 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) { memory->activeRegion = -1; cpu->memory.activeRegion = _deadbeef; cpu->memory.activeMask = 0; - if (gba->yankedRomSize || !gba->hardCrash) { - mLOG(GBA_MEM, GAME_ERROR, "Jumped to invalid address: %08X", address); - } else if (mCoreCallbacksListSize(&gba->coreCallbacks)) { - mLOG(GBA_MEM, GAME_ERROR, "Jumped to invalid address: %08X", address); + + if (!gba->yankedRomSize && mCoreCallbacksListSize(&gba->coreCallbacks)) { size_t c; for (c = 0; c < mCoreCallbacksListSize(&gba->coreCallbacks); ++c) { struct mCoreCallbacks* callbacks = mCoreCallbacksListGetPointer(&gba->coreCallbacks, c); @@ -308,6 +306,10 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) { callbacks->coreCrashed(callbacks->context); } } + } + + if (gba->yankedRomSize || !gba->hardCrash) { + mLOG(GBA_MEM, GAME_ERROR, "Jumped to invalid address: %08X", address); } else { mLOG(GBA_MEM, FATAL, "Jumped to invalid address: %08X", address); }