-// FCEU_printf(" prot write");\r
-// FCEU_printf("write: %04x:%04x\n",A,V);\r
- if (V==0xAB) setprg8(0xE000,7);\r
- else if(V==0x26) setprg8(0xE000,8);\r
-// else if(V==0x26) setprg8(0xE000,1); // MK3\r
-// else if(V==0x26) setprg8(0xE000,0x15); // sonic 3D blast, 8003 - command (0x26), 8001 - data 0x2A (<<1 = 0x15)\r
- else if(V==0xFF) setprg8(0xE000,9);\r
- else if(V==0x28) setprg8(0xC000,0xC);\r
- else if(V==0xEC) setprg8(0xE000,0xD); \r
-// else if(V==0xEC) setprg8(0xE000,0xC);//MK3\r
- else if(V==0xEF) setprg8(0xE000,0xD); // damn mess, need real hardware to figure out bankswitching\r
- else if(V==0x2A) setprg8(0xA000,0x0E);\r
-// else if(V==0x2A) setprg8(0xE000,0x0C); // MK3\r
- else if(V==0x20) setprg8(0xE000,0x13);\r
- else if(V==0x29) setprg8(0xE000,0x1B);\r
- else \r
- {\r
-// FCEU_printf(" unknown");\r
- FixMMC3PRG(MMC3_cmd);\r
- MMC3_CMDWrite(A,V);\r
- }\r
-// FCEU_printf("\n");\r
+ case 0x20: EXPREGS[7] = 1; EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x29: EXPREGS[7] = 1; EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x26: EXPREGS[7] = 0; EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x2B: EXPREGS[7] = 1; EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x2C: EXPREGS[7] = 1; if(EXPREGS[6]) EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x3F: EXPREGS[7] = 1; EXPREGS[0]=EXPREGS[6]; break;\r
+ case 0x28: EXPREGS[7] = 0; EXPREGS[1]=EXPREGS[6]; break;\r
+ case 0x2A: EXPREGS[7] = 0; EXPREGS[2]=EXPREGS[6]; break;\r
+ case 0x2F: break;\r
+ default: EXPREGS[5] = 0; break;\r