📄 mapper051.cpp
字号:
//////////////////////////////////////////////////////////////////////////
// Mapper051 11-in-1 //
//////////////////////////////////////////////////////////////////////////
void Mapper051::Reset()
{
bank = 0;
mode = 1;
SetBank_CPU();
SetCRAM_8K_Bank( 0 );
}
void Mapper051::WriteLow( WORD addr, BYTE data )
{
if( addr>=0x6000 ) {
mode = ((data & 0x10) >> 3) | ((data & 0x02) >> 1);
SetBank_CPU();
}
}
void Mapper051::Write( WORD addr, BYTE data )
{
bank = (data & 0x0f) << 2;
if( 0xC000 <= addr && addr <= 0xDFFF ) {
mode = (mode & 0x01) | ((data & 0x10) >> 3);
}
SetBank_CPU();
}
void Mapper051::SetBank_CPU()
{
switch(mode) {
case 0:
SetVRAM_Mirror( VRAM_VMIRROR );
SetPROM_8K_Bank( 3, (bank|0x2c|3) );
SetPROM_8K_Bank( 4, (bank|0x00|0) );
SetPROM_8K_Bank( 5, (bank|0x00|1) );
SetPROM_8K_Bank( 6, (bank|0x0c|2) );
SetPROM_8K_Bank( 7, (bank|0x0c|3) );
break;
case 1:
SetVRAM_Mirror( VRAM_VMIRROR );
SetPROM_8K_Bank( 3, (bank|0x20|3) );
SetPROM_8K_Bank( 4, (bank|0x00|0) );
SetPROM_8K_Bank( 5, (bank|0x00|1) );
SetPROM_8K_Bank( 6, (bank|0x00|2) );
SetPROM_8K_Bank( 7, (bank|0x00|3) );
break;
case 2:
SetVRAM_Mirror( VRAM_VMIRROR );
SetPROM_8K_Bank( 3, (bank|0x2e|3) );
SetPROM_8K_Bank( 4, (bank|0x02|0) );
SetPROM_8K_Bank( 5, (bank|0x02|1) );
SetPROM_8K_Bank( 6, (bank|0x0e|2) );
SetPROM_8K_Bank( 7, (bank|0x0e|3) );
break;
case 3:
SetVRAM_Mirror( VRAM_HMIRROR );
SetPROM_8K_Bank( 3, (bank|0x20|3) );
SetPROM_8K_Bank( 4, (bank|0x00|0) );
SetPROM_8K_Bank( 5, (bank|0x00|1) );
SetPROM_8K_Bank( 6, (bank|0x00|2) );
SetPROM_8K_Bank( 7, (bank|0x00|3) );
break;
}
}
void Mapper051::SaveState( LPBYTE p )
{
p[ 0] = mode;
p[ 1] = bank;
}
void Mapper051::LoadState( LPBYTE p )
{
mode = p[ 0];
bank = p[ 1];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -