From 2a3147db461d8538334245cb1073e8b46ad2a99d Mon Sep 17 00:00:00 2001 From: RSDuck Date: Fri, 31 Jul 2020 22:39:27 +0200 Subject: [PATCH] reset fastmem on DSi soft reset --- src/ARMJIT_Internal.h | 1 + src/ARMJIT_Memory.cpp | 2 +- src/DSi.cpp | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ARMJIT_Internal.h b/src/ARMJIT_Internal.h index bb6621f4..42444701 100644 --- a/src/ARMJIT_Internal.h +++ b/src/ARMJIT_Internal.h @@ -114,6 +114,7 @@ struct __attribute__((packed)) TinyVector void Remove(int index) { + assert(Length > 0); assert(index >= 0 && index < Length); Length--; diff --git a/src/ARMJIT_Memory.cpp b/src/ARMJIT_Memory.cpp index cc8ad676..35cfdf0f 100644 --- a/src/ARMJIT_Memory.cpp +++ b/src/ARMJIT_Memory.cpp @@ -414,7 +414,7 @@ void RemapDTCM(u32 newBase, u32 newSize) u32 start = mapping.Addr; u32 end = mapping.Addr + mapping.Size; - printf("mapping %d %x %x %x %x\n", region, mapping.Addr, mapping.Size, mapping.Num, mapping.LocalOffset); + printf("unmapping %d %x %x %x %x\n", region, mapping.Addr, mapping.Size, mapping.Num, mapping.LocalOffset); bool oldOverlap = NDS::ARM9->DTCMSize > 0 && !(oldDTCMBase >= end || oldDTCBEnd <= start); bool newOverlap = newSize > 0 && !(newBase >= end || newEnd <= start); diff --git a/src/DSi.cpp b/src/DSi.cpp index 56f5356b..42541fe9 100644 --- a/src/DSi.cpp +++ b/src/DSi.cpp @@ -181,15 +181,17 @@ void SoftReset() // also, BPTWL[0x70] could be abused to quickly boot specific titles +#ifdef JIT_ENABLED + ARMJIT_Memory::Reset(); + ARMJIT::CheckAndInvalidateITCM(); +#endif + NDS::ARM9->Reset(); NDS::ARM7->Reset(); NDS::ARM9->CP15Reset(); memcpy(NDS::ARM9->ITCM, ITCMInit, 0x8000); -#ifdef JIT_ENABLED - ARMJIT::CheckAndInvalidateITCM(); -#endif DSi_AES::Reset();