svp compiler direct calls
[picodrive.git] / Pico / Cart.c
index 7c3f36d..5e01e9a 100644 (file)
@@ -15,6 +15,8 @@
 \r
 static char *rom_exts[] = { "bin", "gen", "smd", "iso" };\r
 \r
+void (*PicoCartUnloadHook)(void) = NULL;\r
+\r
 void (*PicoCartLoadProgressCB)(int percent) = NULL;\r
 void (*PicoCDLoadProgressCB)(int percent) = NULL; // handled in Pico/cd/cd_file.c\r
 \r
@@ -493,14 +495,24 @@ int PicoCartInsert(unsigned char *rom,unsigned int romsize)
   Pico.rom=rom;\r
   Pico.romsize=romsize;\r
 \r
+  if (PicoCartUnloadHook != NULL) {\r
+    PicoCartUnloadHook();\r
+    PicoCartUnloadHook = NULL;\r
+  }\r
+\r
   PicoMemResetHooks();\r
   PicoDmaHook = NULL;\r
   PicoResetHook = NULL;\r
+  PicoLineHook = NULL;\r
+  carthw_chunks = NULL;\r
+\r
+  PicoMemReset();\r
 \r
   if (!(PicoMCD & 1))\r
     PicoCartDetect();\r
 \r
   // setup correct memory map for loaded ROM\r
+  // call PicoMemReset again due to possible memmap change\r
   if (PicoMCD & 1)\r
        PicoMemSetupCD();\r
   else PicoMemSetup();\r
@@ -638,9 +650,10 @@ void PicoCartDetect(void)
     *(int *) (Pico.rom+0x1f0) = 0x20204520;\r
 \r
   // SVP detection\r
-  if (name_cmp("Virtua Racing") == 0)\r
+  if (name_cmp("Virtua Racing") == 0 ||\r
+      name_cmp("VIRTUA RACING") == 0)\r
   {\r
-    PicoSVPInit();\r
+    PicoSVPStartup();\r
   }\r
 }\r
 \r