prevent totally out of bounds card accesses from crashing emulator by masking to rom size
This commit is contained in:
parent
a48b1a725d
commit
07e090c224
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue