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");
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,