7 static uint8 master,chrm;
9 static void DoPRG217(void)
13 setprg16(0x8000,master&0x1F);
14 setprg16(0xc000,master&0x1F);
18 setprg8(0x8000,regs[1]);
19 setprg8(0xA000,regs[3]);
25 static void DoCHR217(void)
27 uint32 base=(cmd&0x80)<<5;
28 int orie=(chrm&0x4)<<6;
30 setchr2(0x0000^base,(orie|regs[0])>>1);
31 setchr2(0x0800^base,(orie|regs[7])>>1);
33 setchr1(0x1000,orie|regs[5]);
34 setchr1(0x1400,orie|regs[2]);
35 setchr1(0x1800,orie|regs[6]);
36 setchr1(0x1c00,orie|regs[4]);
39 static DECLFW(Write217_write)
57 case 0x4000:master=V;DoPRG217();break;
58 case 0x8000:IRQCount=V;break;
60 case 0xe000:X6502_IRQEnd(FCEU_IQEXT);break;
62 case 0xa001:setmirror((V&1)^1);break;
63 case 0x8001:cmd=V;cmdin=1;DoPRG217();DoCHR217();break;
64 case 0xa000:if(!cmdin) break;
73 static void hooko217(void)
80 X6502_IRQBegin(FCEU_IQEXT);
85 void Mapper217_init(void)
88 for(x=0;x<8;x++) regs[x]=0;
89 master=chrm=cmd=cmdin=IRQCount=0;
90 GameHBIRQHook=hooko217;
91 SetReadHandler(0x8000,0xFFFF,CartBR);
92 SetWriteHandler(0x5000,0xFFFF,Write217_write);