fceux/mappers/215.cpp

97 lines
1.6 KiB
C++

/*
#include "mapinc.h"
static uint8 cmdin;
static uint8 cmd;
static uint8 regs[8];
static uint8 master,chrm;
static void DoPRG215(void)
{
if(master&0x80)
{
setprg16(0x8000,master&0x1F);
setprg16(0xc000,master&0x1F);
}
else
{
setprg8(0x8000,regs[4]); 6
setprg8(0xA000,regs[6]); 7 0, 2, 5, 3, 6, 1, 7, 4
setprg8(0xC000,~1);
setprg8(0xE000,~0);
}
}
static void DoCHR215(void)
{
uint32 base=(cmd&0x80)<<5;
int orie=(chrm&0x4)<<6;
setchr2(0x0000^base,(orie|regs[0])>>1); 0
setchr2(0x0800^base,(orie|regs[5])>>1); 1
setchr1(0x1000,orie|regs[1]); 2
setchr1(0x1400,orie|regs[3]); 3
setchr1(0x1800,orie|regs[7]); 4
setchr1(0x1c00,orie|regs[2]); 5
}
static DECLFW(Write215_write)
{
switch(A&0xF001)
{
case 0xF001:IRQCount=V+2;break;
case 0xF000:X6502_IRQEnd(FCEU_IQEXT);break;
}
if(A==0x5000)
{
master=V;
DoPRG215();
// DoCHR215();
}
else if(A==0x5001)
{
chrm=V;
DoCHR215();
}
else
switch(A&0xE001)
{
case 0xC000:setmirror(((V|(V>>7))&1)^1);break;
case 0xa000:cmd=V;cmdin=1;DoCHR215();break;
case 0x8001:if(!cmdin) break;
regs[cmd&7]=V;
DoPRG215();
DoCHR215();
cmdin=0;
break;
}
}
static void hooko215(void)
{
if(IRQCount)
{
IRQCount--;
if(!IRQCount)
{
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
void Mapper215_init(void)
{
int x;
for(x=0;x<8;x++) regs[x]=0;
master=chrm=cmd=cmdin=IRQCount=0;
GameHBIRQHook=hooko215;
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x5000,0xFFFF,Write215_write);
DoPRG215();
DoCHR215();
}
*/