u8 psxMemRead8(u32 mem) { char *p; u32 t; psxRegs.cycle += 0; t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) return psxHu8(mem); else return psxHwRead8(mem); } else { p = (char *)(psxMemRLUT[t]); if (p != NULL) { if (Config.Debug) DebugCheckBP((mem & 0xffffff) | 0x80000000, BR1); return *(u8 *)(p + (mem & 0xffff)); } else { #ifdef PSXMEM_LOG PSXMEM_LOG("err lb %8.8lx\n", mem); #endif return 0; } } }
u8 psxMemRead8(u32 mem) { u32 t; t = mem >> 16; if (t == 0x1f80) { if (mem < 0x1f801000) return psxHu8(mem); else return psxHwRead8(mem); } else { char *p = (char *)(psxMemRLUT[t]); if (p != NULL) { return *(u8 *)(p + (mem & 0xffff)); } else { #ifdef PSXMEM_LOG PSXMEM_LOG("err lb %8.8lx\n", mem); #endif return 0; } } }
mem8_t __fastcall _ext_memRead8 (u32 mem) { switch (p) { case 1: // hwm return hwRead8(mem); case 2: // psh return psxHwRead8(mem); case 3: // psh4 return psxHw4Read8(mem); case 6: // gsm return gsRead8(mem); case 7: // dev9 { mem8_t retval = DEV9read8(mem & ~0xa4000000); SysPrintf("DEV9 read8 %8.8lx: %2.2lx\n", mem & ~0xa4000000, retval); return retval; } } MEM_LOG("Unknown Memory Read8 from address %8.8x\n", mem); cpuTlbMissR(mem, cpuRegs.branch); return 0; }