From 07e090c2246e4ae76f7353acca04770b6d7223dd Mon Sep 17 00:00:00 2001 From: zeromus Date: Fri, 10 Apr 2009 22:38:29 +0000 Subject: [PATCH] prevent totally out of bounds card accesses from crashing emulator by masking to rom size --- desmume/src/MMU.cpp | 3 ++- desmume/src/MMU.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/desmume/src/MMU.cpp b/desmume/src/MMU.cpp index 4434eb6af..9061169ae 100644 --- a/desmume/src/MMU.cpp +++ b/desmume/src/MMU.cpp @@ -759,6 +759,7 @@ void MMU_setRom(u8 * rom, u32 mask) { unsigned int i; MMU.CART_ROM = rom; + MMU.CART_ROM_MASK = mask; for(i = 0x80; i<0xA0; ++i) { @@ -3129,7 +3130,7 @@ u32 FASTCALL _MMU_ARM9_read32(u32 adr) { MMU.dscard[ARMCPU_ARM9].address = (0x8000 + (MMU.dscard[ARMCPU_ARM9].address&0x1FF)); } - val = T1ReadLong(MMU.CART_ROM, MMU.dscard[ARMCPU_ARM9].address); + val = T1ReadLong(MMU.CART_ROM, MMU.dscard[ARMCPU_ARM9].address & MMU.CART_ROM_MASK); } break; diff --git a/desmume/src/MMU.h b/desmume/src/MMU.h index abae26a0e..8b4acdf6b 100644 --- a/desmume/src/MMU.h +++ b/desmume/src/MMU.h @@ -64,6 +64,7 @@ struct MMU_struct { //Card rom & ram u8 * CART_ROM; + u32 CART_ROM_MASK; u8 CART_RAM[0x10000]; //Unused ram