- int cbase=(V&0x80)<<5;
- swsetchr2((cbase^0x000),DRegBuf[0]>>1);
- swsetchr2((cbase^0x800),DRegBuf[1]>>1);
- swsetchr1(cbase^0x1000,DRegBuf[2]);
- swsetchr1(cbase^0x1400,DRegBuf[3]);
- swsetchr1(cbase^0x1800,DRegBuf[4]);
- swsetchr1(cbase^0x1c00,DRegBuf[5]);
-}
-
-static DECLFW(Super24hiwrite)
-{
- //printf("$%04x:$%02x, %d\n",A,V,scanline);
- switch(A&0xE001)
- {
- case 0x8000:
- if((V&0x40) != (MMC3_cmd&0x40))
- FixMMC3PRG(V);
- if((V&0x80) != (MMC3_cmd&0x80))
- FixMMC3CHR(V);
- MMC3_cmd = V;
- break;
-
- case 0x8001:
- {
- int cbase=(MMC3_cmd&0x80)<<5;
- DRegBuf[MMC3_cmd&0x7]=V;
- switch(MMC3_cmd&0x07)
- {
- case 0: V>>=1;swsetchr2((cbase^0x000),V);break;
- case 1: V>>=1;swsetchr2((cbase^0x800),V);break;
- case 2: swsetchr1(cbase^0x1000,V); break;
- case 3: swsetchr1(cbase^0x1400,V); break;
- case 4: swsetchr1(cbase^0x1800,V); break;
- case 5: swsetchr1(cbase^0x1C00,V); break;
- case 6: if (MMC3_cmd&0x40) swsetprg8(0xC000,V);
- else swsetprg8(0x8000,V);
- break;
- case 7: swsetprg8(0xA000,V);
- break;
- }
- }
- break;
-
- case 0xA000:
- mbia=V;
- setmirror((V&1)^1);
- break;
- }
-}
-
-
-DECLFW(Super24Write)
-{
- //printf("$%04x:$%02x\n",A,V);
- switch(A)
- {
- case 0x5ff0:sizer=V;
- FixMMC3PRG(MMC3_cmd);
- FixMMC3CHR(MMC3_cmd);
- break;
- case 0x5FF1:
- bigbank=V;
- FixMMC3PRG(MMC3_cmd);
- break;
- case 0x5FF2:
- bigbank2=V;
- FixMMC3CHR(MMC3_cmd);
- break;
- }