32x, fix startup crash
authorkub <derkub@gmail.com>
Wed, 7 Jun 2023 21:21:58 +0000 (21:21 +0000)
committerkub <derkub@gmail.com>
Wed, 7 Jun 2023 21:21:58 +0000 (21:21 +0000)
pico/32x/32x.c
pico/pico.c
pico/pico_int.h

index 8b91c7b..e91c724 100644 (file)
@@ -120,6 +120,7 @@ void Pico32xStartup(void)
 
   rendstatus_old = -1;
 
+  Pico32xPrepare();
   emu_32x_startup();
 }
 
@@ -580,10 +581,6 @@ void sync_sh2s_lockstep(unsigned int m68k_target)
 
 void PicoFrame32x(void)
 {
-  // XXX this is somehow misplaced here
-  sh2_execute_prepare(&msh2, PicoIn.opt & POPT_EN_DRC);
-  sh2_execute_prepare(&ssh2, PicoIn.opt & POPT_EN_DRC);
-
   if (PicoIn.AHW & PAHW_MCD)
     pcd_prepare_frame();
 
@@ -627,4 +624,10 @@ void Pico32xStateLoaded(int is_early)
   p32x_run_events(SekCyclesDone());
 }
 
+void Pico32xPrepare(void)
+{
+  sh2_execute_prepare(&msh2, PicoIn.opt & POPT_EN_DRC);
+  sh2_execute_prepare(&ssh2, PicoIn.opt & POPT_EN_DRC);
+}
+
 // vim:shiftwidth=2:ts=2:expandtab
index f0128da..7976c9e 100644 (file)
@@ -227,6 +227,9 @@ void PicoLoopPrepare(void)
 \r
   Pico.m.dirtyPal = 1;\r
   rendstatus_old = -1;\r
+\r
+  if (PicoIn.AHW & PAHW_32X)\r
+    Pico32xPrepare();\r
 }\r
 \r
 #include "pico_cmn.c"\r
index 062e766..3ed7c0f 100644 (file)
@@ -996,6 +996,7 @@ void Pico32xStartup(void);
 void PicoUnload32x(void);\r
 void PicoFrame32x(void);\r
 void Pico32xStateLoaded(int is_early);\r
+void Pico32xPrepare(void);\r
 void p32x_sync_sh2s(unsigned int m68k_target);\r
 void p32x_sync_other_sh2(SH2 *sh2, unsigned int m68k_target);\r
 void p32x_update_irls(SH2 *active_sh2, unsigned int m68k_cycles);\r