+static void SRAMWrite(u32 a, u32 d)\r
+{\r
+ dprintf("sram_w: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
+ unsigned int sreg = Pico.m.sram_reg;\r
+ if(!(sreg & 0x10)) {\r
+ // not detected SRAM\r
+ if((a&~1)==0x200000) {\r
+ Pico.m.sram_reg|=4; // this should be a game with EEPROM (like NBA Jam)\r
+ SRam.start=0x200000; SRam.end=SRam.start+1;\r
+ }\r
+ Pico.m.sram_reg|=0x10;\r
+ }\r
+ if(sreg & 4) { // EEPROM write\r
+ if(SekCyclesDoneT()-lastSSRamWrite < 46) {\r
+ // just update pending state\r
+ SRAMUpdPending(a, d);\r
+ } else {\r
+ SRAMWriteEEPROM(sreg>>6); // execute pending\r
+ SRAMUpdPending(a, d);\r
+ lastSSRamWrite = SekCyclesDoneT();\r
+ }\r
+ } else if(!(sreg & 2)) {\r
+ u8 *pm=(u8 *)(SRam.data-SRam.start+a);\r
+ if(*pm != (u8)d) {\r
+ SRam.changed = 1;\r
+ *pm=(u8)d;\r
+ }\r
+ }\r
+}\r