prevent totally out of bounds card accesses from crashing emulator by masking to rom size

This commit is contained in:
zeromus 2009-04-10 22:38:29 +00:00
parent a48b1a725d
commit 07e090c224
2 changed files with 3 additions and 1 deletions

View File

@ -759,6 +759,7 @@ void MMU_setRom(u8 * rom, u32 mask)
{ {
unsigned int i; unsigned int i;
MMU.CART_ROM = rom; MMU.CART_ROM = rom;
MMU.CART_ROM_MASK = mask;
for(i = 0x80; i<0xA0; ++i) 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)); 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; break;

View File

@ -64,6 +64,7 @@ struct MMU_struct {
//Card rom & ram //Card rom & ram
u8 * CART_ROM; u8 * CART_ROM;
u32 CART_ROM_MASK;
u8 CART_RAM[0x10000]; u8 CART_RAM[0x10000];
//Unused ram //Unused ram