- // notaz: sram\r
- if(SRam.resize) {\r
- int sram_size = 0;\r
- if(SRam.data) free(SRam.data); SRam.data=0;\r
- Pico.m.sram_reg = 0;\r
-\r
- if(*(Pico.rom+0x1B1) == 'R' && *(Pico.rom+0x1B0) == 'A') {\r
- if(*(Pico.rom+0x1B2) & 0x40) {\r
- // EEPROM SRAM\r
- // what kind of EEPROMs are actually used? X24C02? X24C04? (X24C01 has only 128), but we will support up to 8K\r
- SRam.start = PicoRead32(0x1B4) & ~1; // zero address is used for clock by some games\r
- SRam.end = PicoRead32(0x1B8);\r
- sram_size = 0x2000;\r
- Pico.m.sram_reg = 4;\r
- } else {\r
- // normal SRAM\r
- SRam.start = PicoRead32(0x1B4) & 0xFFFF00;\r
- SRam.end = PicoRead32(0x1B8) | 1;\r
- sram_size = SRam.end - SRam.start + 1;\r
- }\r
- Pico.m.sram_reg |= 0x10; // SRAM was detected\r
- }\r
- if(sram_size <= 0) {\r
- // some games may have bad headers, like S&K and Sonic3\r
- SRam.start = 0x200000;\r
- SRam.end = 0x203FFF;\r
- sram_size = 0x004000;\r
- }\r
-\r
- // enable sram access by default if it doesn't overlap with ROM\r
- if(Pico.romsize <= SRam.start) Pico.m.sram_reg |= 1;\r
- SRam.reg_back = Pico.m.sram_reg;\r
-\r
- if(sram_size) {\r
- SRam.data = (unsigned char *) calloc(sram_size, 1);\r
- if(!SRam.data) return 1;\r
- }\r
- SRam.resize=0;\r
- // Dino Dini's Soccer malfunctions if SRAM is not filled with 0xff\r
- if (strncmp((char *)Pico.rom+0x150, "IDOND NI'I", 10) == 0)\r
- memset(SRam.data, 0xff, sram_size);\r
- dprintf("sram: det: %i; eeprom: %i; start: %06x; end: %06x\n",\r
- (Pico.m.sram_reg>>4)&1, (Pico.m.sram_reg>>2)&1, SRam.start, SRam.end);\r
- }\r
-\r
- Pico.m.sram_reg = SRam.reg_back; // restore sram_reg\r
- SRam.changed = 0;\r
+ elprintf(EL_STATUS, "sram: det: %i; eeprom: %i; start: %06x; end: %06x",\r
+ (Pico.m.sram_reg>>4)&1, (Pico.m.sram_reg>>2)&1, SRam.start, SRam.end);\r