X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Flightrec%2Fplugin.c;h=4b28c5661eff248e3a2083f0026d668acedd434b;hb=2f609094ad9ec14212fb730897ccb63f2f44bc40;hp=d042fc4fb24fc33b20a5a6592e89a8a94a6954dd;hpb=46a38bdab1a4d9f578a368705a9e3e144fd81189;p=pcsx_rearmed.git diff --git a/libpcsxcore/lightrec/plugin.c b/libpcsxcore/lightrec/plugin.c index d042fc4f..4b28c566 100644 --- a/libpcsxcore/lightrec/plugin.c +++ b/libpcsxcore/lightrec/plugin.c @@ -311,6 +311,12 @@ static int lightrec_plugin_init(void) lightrec_map[PSX_MAP_SCRATCH_PAD].address = psxH; lightrec_map[PSX_MAP_PARALLEL_PORT].address = psxP; + if (LIGHTREC_CUSTOM_MAP) { + lightrec_map[PSX_MAP_MIRROR1].address = psxM + 0x200000; + lightrec_map[PSX_MAP_MIRROR2].address = psxM + 0x400000; + lightrec_map[PSX_MAP_MIRROR3].address = psxM + 0x600000; + } + lightrec_debug = !!getenv("LIGHTREC_DEBUG"); lightrec_very_debug = !!getenv("LIGHTREC_VERY_DEBUG"); use_lightrec_interpreter = !!getenv("LIGHTREC_INTERPRETER"); @@ -554,6 +560,28 @@ static void lightrec_plugin_reset(void) booting = true; } +void lightrec_plugin_prepare_load_state(void) +{ + struct lightrec_registers *regs; + + regs = lightrec_get_registers(lightrec_state); + memcpy(regs->cp2d, &psxRegs.CP2, sizeof(regs->cp2d) + sizeof(regs->cp2c)); + memcpy(regs->cp0, &psxRegs.CP0, sizeof(regs->cp0)); + memcpy(regs->gpr, &psxRegs.GPR, sizeof(regs->gpr)); + + lightrec_invalidate_all(lightrec_state); +} + +void lightrec_plugin_prepare_save_state(void) +{ + struct lightrec_registers *regs; + + regs = lightrec_get_registers(lightrec_state); + memcpy(&psxRegs.CP2, regs->cp2d, sizeof(regs->cp2d) + sizeof(regs->cp2c)); + memcpy(&psxRegs.CP0, regs->cp0, sizeof(regs->cp0)); + memcpy(&psxRegs.GPR, regs->gpr, sizeof(regs->gpr)); +} + R3000Acpu psxRec = { lightrec_plugin_init,