AxibugEmuOnline/References/VirtuaNESex_src_191105/NES/Mapper/BoardBS5.cpp
2024-08-05 17:58:53 +08:00

50 lines
1.1 KiB
C++

//////////////////////////////////////////////////////////////////////////
// BoardBS5 Êý¶ÀËĺÏÒ» //
//////////////////////////////////////////////////////////////////////////
void BoardBS5::Reset()
{
dip_s++;
if(dip_s==4) dip_s=0;
reg_prg[0] = reg_prg[1] = reg_prg[2] = reg_prg[3] = 0x0f;
reg_chr[0] = reg_chr[1] = reg_chr[2] = reg_chr[3] = 0x00;
SetVRAM_Mirror( VRAM_VMIRROR );
SetBank();
}
void BoardBS5::Write( WORD addr, BYTE data )
{
int bank = (addr & 0xC00) >> 10;
switch (addr & 0xF000) {
case 0x8000:
reg_chr[bank] = addr & 0x1F;
break;
case 0xA000:
if (addr & (1 << ((dip_s&3)|4)))
reg_prg[bank] = addr & 0x0F;
break;
}
SetBank();
}
void BoardBS5::SetBank()
{
SetPROM_8K_Bank(4, reg_prg[0]);
SetPROM_8K_Bank(5, reg_prg[1]);
SetPROM_8K_Bank(6, reg_prg[2]);
SetPROM_8K_Bank(7, reg_prg[3]);
SetVROM_2K_Bank(0, reg_chr[0]);
SetVROM_2K_Bank(2, reg_chr[1]);
SetVROM_2K_Bank(4, reg_chr[2]);
SetVROM_2K_Bank(6, reg_chr[3]);
}
void BoardBS5::SaveState( LPBYTE p )
{
//
}
void BoardBS5::LoadState( LPBYTE p )
{
//
}