- exclude check address range in VRAM (may crash in some games :( );

This commit is contained in:
mtabachenko 2008-12-08 10:18:50 +00:00
parent 445c953371
commit 626e94e493
1 changed files with 4 additions and 1 deletions

View File

@ -408,6 +408,7 @@ u8 *MMU_RenderMapToLCD(u32 vram_addr)
u8 engine = (vram_addr >> 21); u8 engine = (vram_addr >> 21);
vram_addr &= 0x01FFFFF; vram_addr &= 0x01FFFFF;
u8 engine_offset = (vram_addr >> 14); u8 engine_offset = (vram_addr >> 14);
if (engine_offset > 31) return NULL;
u8 block = MMU.VRAM_MAP[engine][engine_offset]; u8 block = MMU.VRAM_MAP[engine][engine_offset];
if (block == 7) return NULL; if (block == 7) return NULL;
vram_addr -= MMU.LCD_VRAM_ADDR[block]; vram_addr -= MMU.LCD_VRAM_ADDR[block];
@ -452,11 +453,13 @@ static FORCEINLINE u32 MMU_LCDmap(u8 proc, u32 addr)
addr -= MMU.LCD_VRAM_ADDR[block]; addr -= MMU.LCD_VRAM_ADDR[block];
addr += LCDdata[block][0]; addr += LCDdata[block][0];
#if 0
if ((addr < 0x6800000) || (addr> 0x68A3FFF)) // FIXME: this is hack if ((addr < 0x6800000) || (addr> 0x68A3FFF)) // FIXME: this is hack
{ {
//LOG("Address is out range 0x%X in block %i\n", addr, block); LOG("Address is out range 0x%X in block %i\n", addr, block);
addr = save_addr; addr = save_addr;
} }
#endif
} }
return (addr); return (addr);
} }