md, minor cleanup for region code handling
authorkub <derkub@gmail.com>
Sat, 15 Jun 2024 09:28:04 +0000 (09:28 +0000)
committerkub <derkub@gmail.com>
Sat, 15 Jun 2024 10:15:19 +0000 (10:15 +0000)
pico/cart.c
pico/pico.c

index 339b9fe..1321803 100644 (file)
@@ -1341,10 +1341,6 @@ static void PicoCartDetect(const char *carthw_cfg)
     memset(Pico.sv.data, 0xff, Pico.sv.size);\r
   }\r
 \r
-  // Unusual region 'code'\r
-  if (rom_strcmp(0x1f0, "EUROPE") == 0 || rom_strcmp(0x1f0, "Europe") == 0)\r
-    *(u32 *) (Pico.rom + 0x1f0) = CPU_LE4(0x20204520);\r
-\r
   // tweak for Blackthorne: master SH2 overwrites stack of slave SH2 being in PWM\r
   // interrupt. On real hardware, nothing happens since slave fetches the values\r
   // it has written from its cache, but picodrive doesn't emulate caching.\r
index 0e7e1d8..b84fda6 100644 (file)
@@ -97,15 +97,21 @@ PICO_INTERNAL void PicoDetectRegion(void)
 {\r
   int support=0, hw=0, i;\r
   unsigned char pal=0;\r
+  char *pr = (char *)(Pico.rom + 0x1f0);\r
 \r
   if (PicoIn.regionOverride)\r
   {\r
     support = PicoIn.regionOverride;\r
   }\r
+  else if (strcmp(pr, "EUROPE") == 0 || strcmp(pr, "Europe") == 0)\r
+  {\r
+    // Unusual cartridge region 'code'\r
+    support|=8;\r
+  }\r
   else\r
   {\r
     // Read cartridge region data:\r
-    unsigned short *rd = (unsigned short *)(Pico.rom + 0x1f0);\r
+    unsigned short *rd = (unsigned short *)pr;\r
     int region = (rd[0] << 16) | rd[1];\r
 \r
     for (i = 0; i < 4; i++)\r