void psxMemWrite16(u32 mem, u16 value) { char *p; u32 t; psxRegs.cycle += 1; t = mem >> 16; if (t == 0x1f80 || t == 0x9f80 || t == 0xbf80) { if ((mem & 0xffff) < 0x400) psxHu16ref(mem) = SWAPu16(value); else psxHwWrite16(mem, value); } else { p = (char *)(psxMemWLUT[t]); if (p != NULL) { if (Config.Debug) DebugCheckBP((mem & 0xffffff) | 0x80000000, BW2); *(u16 *)(p + (mem & 0xffff)) = SWAPu16(value); #ifdef PSXREC psxCpu->Clear((mem & (~3)), 1); #endif } else { #ifdef PSXMEM_LOG PSXMEM_LOG("err sh %8.8lx\n", mem); #endif } } }
void __fastcall _ext_memWrite16(u32 mem, u16 value) { switch (p) { case 1: // hwm hwWrite16(mem, value); return; case 2: // psh psxHwWrite16(mem, value); return; case 5: // ba0 MEM_LOG("ba00000 Memory write16 to address %x with data %x\n", mem, value); return; case 6: // gsm gsWrite16(mem, value); return; case 7: // dev9 DEV9write16(mem & ~0xa4000000, value); SysPrintf("DEV9 write16 %8.8lx: %4.4lx\n", mem & ~0xa4000000, value); return; case 8: // spu2 SPU2write(mem, value); return; } MEM_LOG("Unknown Memory write16 to address %x with data %4.4x\n", mem, value); cpuTlbMissW(mem, cpuRegs.branch); }
void psxMemWrite16(u32 mem, u16 value) { u32 t; t = mem >> 16; if (t == 0x1f80) { if (mem < 0x1f801000) psxHu16ref(mem) = SWAPu16(value); else psxHwWrite16(mem, value); } else { char *p = (char *)(psxMemWLUT[t]); if (p != NULL) { *(u16 *)(p + (mem & 0xffff)) = SWAPu16(value); #ifdef PSXREC psxCpu->Clear((mem&(~1)), 1); #endif } else { #ifdef PSXMEM_LOG PSXMEM_LOG("err sh %8.8lx\n", mem); #endif } } }