split memories away from Pico
[picodrive.git] / pico / cart.c
index 1ce8059..f17ce5e 100644 (file)
@@ -617,9 +617,9 @@ int PicoCartInsert(unsigned char *rom, unsigned int romsize, const char *carthw_
   Pico.rom=rom;\r
   Pico.romsize=romsize;\r
 \r
-  if (SRam.data) {\r
-    free(SRam.data);\r
-    SRam.data = NULL;\r
+  if (Pico.sv.data) {\r
+    free(Pico.sv.data);\r
+    Pico.sv.data = NULL;\r
   }\r
 \r
   if (PicoCartUnloadHook != NULL) {\r
@@ -949,8 +949,8 @@ static void parse_carthw(const char *carthw_cfg, int *fill_sram)
         elprintf(EL_STATUS, "carthw:%d: bad sram_range: %08x - %08x", line, start, end);\r
         goto bad_nomsg;\r
       }\r
-      SRam.start = start;\r
-      SRam.end = end;\r
+      Pico.sv.start = start;\r
+      Pico.sv.end = end;\r
       continue;\r
     }\r
     else if (is_expr("prop", &p)) {\r
@@ -959,9 +959,9 @@ static void parse_carthw(const char *carthw_cfg, int *fill_sram)
       rstrip(p);\r
 \r
       if      (strcmp(p, "no_sram") == 0)\r
-        SRam.flags &= ~SRF_ENABLED;\r
+        Pico.sv.flags &= ~SRF_ENABLED;\r
       else if (strcmp(p, "no_eeprom") == 0)\r
-        SRam.flags &= ~SRF_EEPROM;\r
+        Pico.sv.flags &= ~SRF_EEPROM;\r
       else if (strcmp(p, "filled_sram") == 0)\r
         *fill_sram = 1;\r
       else if (strcmp(p, "force_6btn") == 0)\r
@@ -982,8 +982,8 @@ static void parse_carthw(const char *carthw_cfg, int *fill_sram)
       type = strtoul(p, &r, 0);\r
       if (r == p || type < 0)\r
         goto bad;\r
-      SRam.eeprom_type = type;\r
-      SRam.flags |= SRF_EEPROM;\r
+      Pico.sv.eeprom_type = type;\r
+      Pico.sv.flags |= SRF_EEPROM;\r
       continue;\r
     }\r
     else if (is_expr("eeprom_lines", &p)) {\r
@@ -998,9 +998,9 @@ static void parse_carthw(const char *carthw_cfg, int *fill_sram)
           sda_out < 0 || sda_out > 15)\r
         goto bad;\r
 \r
-      SRam.eeprom_bit_cl = scl;\r
-      SRam.eeprom_bit_in = sda_in;\r
-      SRam.eeprom_bit_out= sda_out;\r
+      Pico.sv.eeprom_bit_cl = scl;\r
+      Pico.sv.eeprom_bit_in = sda_in;\r
+      Pico.sv.eeprom_bit_out= sda_out;\r
       continue;\r
     }\r
     else if ((tmp = is_expr("prot_ro_value16", &p)) || is_expr("prot_rw_value16", &p)) {\r
@@ -1040,54 +1040,54 @@ static void PicoCartDetect(const char *carthw_cfg)
 {\r
   int fill_sram = 0;\r
 \r
-  memset(&SRam, 0, sizeof(SRam));\r
+  memset(&Pico.sv, 0, sizeof(Pico.sv));\r
   if (Pico.rom[0x1B1] == 'R' && Pico.rom[0x1B0] == 'A')\r
   {\r
-    SRam.start =  rom_read32(0x1B4) & ~0xff000001; // align\r
-    SRam.end   = (rom_read32(0x1B8) & ~0xff000000) | 1;\r
+    Pico.sv.start =  rom_read32(0x1B4) & ~0xff000001; // align\r
+    Pico.sv.end   = (rom_read32(0x1B8) & ~0xff000000) | 1;\r
     if (Pico.rom[0x1B2] & 0x40)\r
       // EEPROM\r
-      SRam.flags |= SRF_EEPROM;\r
-    SRam.flags |= SRF_ENABLED;\r
+      Pico.sv.flags |= SRF_EEPROM;\r
+    Pico.sv.flags |= SRF_ENABLED;\r
   }\r
-  if (SRam.end == 0 || SRam.start > SRam.end)\r
+  if (Pico.sv.end == 0 || Pico.sv.start > Pico.sv.end)\r
   {\r
     // some games may have bad headers, like S&K and Sonic3\r
     // note: majority games use 0x200000 as starting address, but there are some which\r
     // use something else (0x300000 by HardBall '95). Luckily they have good headers.\r
-    SRam.start = 0x200000;\r
-    SRam.end   = 0x203FFF;\r
-    SRam.flags |= SRF_ENABLED;\r
+    Pico.sv.start = 0x200000;\r
+    Pico.sv.end   = 0x203FFF;\r
+    Pico.sv.flags |= SRF_ENABLED;\r
   }\r
 \r
   // set EEPROM defaults, in case it gets detected\r
-  SRam.eeprom_type   = 0; // 7bit (24C01)\r
-  SRam.eeprom_bit_cl = 1;\r
-  SRam.eeprom_bit_in = 0;\r
-  SRam.eeprom_bit_out= 0;\r
+  Pico.sv.eeprom_type   = 0; // 7bit (24C01)\r
+  Pico.sv.eeprom_bit_cl = 1;\r
+  Pico.sv.eeprom_bit_in = 0;\r
+  Pico.sv.eeprom_bit_out= 0;\r
 \r
   if (carthw_cfg != NULL)\r
     parse_carthw(carthw_cfg, &fill_sram);\r
 \r
-  if (SRam.flags & SRF_ENABLED)\r
+  if (Pico.sv.flags & SRF_ENABLED)\r
   {\r
-    if (SRam.flags & SRF_EEPROM)\r
-      SRam.size = 0x2000;\r
+    if (Pico.sv.flags & SRF_EEPROM)\r
+      Pico.sv.size = 0x2000;\r
     else\r
-      SRam.size = SRam.end - SRam.start + 1;\r
+      Pico.sv.size = Pico.sv.end - Pico.sv.start + 1;\r
 \r
-    SRam.data = calloc(SRam.size, 1);\r
-    if (SRam.data == NULL)\r
-      SRam.flags &= ~SRF_ENABLED;\r
+    Pico.sv.data = calloc(Pico.sv.size, 1);\r
+    if (Pico.sv.data == NULL)\r
+      Pico.sv.flags &= ~SRF_ENABLED;\r
 \r
-    if (SRam.eeprom_type == 1) // 1 == 0 in PD EEPROM code\r
-      SRam.eeprom_type = 0;\r
+    if (Pico.sv.eeprom_type == 1)      // 1 == 0 in PD EEPROM code\r
+      Pico.sv.eeprom_type = 0;\r
   }\r
 \r
-  if ((SRam.flags & SRF_ENABLED) && fill_sram)\r
+  if ((Pico.sv.flags & SRF_ENABLED) && fill_sram)\r
   {\r
     elprintf(EL_STATUS, "SRAM fill");\r
-    memset(SRam.data, 0xff, SRam.size);\r
+    memset(Pico.sv.data, 0xff, Pico.sv.size);\r
   }\r
 \r
   // Unusual region 'code'\r