📄 mapper135.cpp
字号:
//////////////////////////////////////////////////////////////////////////
// Mapper135 SACHEN CHEN //
//////////////////////////////////////////////////////////////////////////
void Mapper135::Reset()
{
cmd = 0;
chr0l = chr1l = chr0h = chr1h = chrch = 0;
SetPROM_32K_Bank( 0 );
SetBank_PPU();
}
void Mapper135::WriteLow( WORD addr, BYTE data )
{
switch( addr & 0x4101 ) {
case 0x4100:
cmd = data & 0x07;
break;
case 0x4101:
switch( cmd ) {
case 0:
chr0l = data & 0x07;
SetBank_PPU();
break;
case 1:
chr0h = data & 0x07;
SetBank_PPU();
break;
case 2:
chr1l = data & 0x07;
SetBank_PPU();
break;
case 3:
chr1h = data & 0x07;
SetBank_PPU();
break;
case 4:
chrch = data & 0x07;
SetBank_PPU();
break;
case 5:
SetPROM_32K_Bank( data&0x07 );
break;
case 6:
break;
case 7:
switch( (data>>1)&0x03 ) {
case 0: SetVRAM_Mirror( VRAM_MIRROR4L ); break;
case 1: SetVRAM_Mirror( VRAM_HMIRROR ); break;
case 2: SetVRAM_Mirror( VRAM_VMIRROR ); break;
case 3: SetVRAM_Mirror( VRAM_MIRROR4L ); break;
}
break;
}
break;
}
CPU_MEM_BANK[addr>>13][addr&0x1FFF] = data;
}
void Mapper135::SetBank_PPU()
{
SetVROM_2K_Bank( 0, 0|(chr0l<<1)|(chrch<<4) );
SetVROM_2K_Bank( 2, 1|(chr0h<<1)|(chrch<<4) );
SetVROM_2K_Bank( 4, 0|(chr1l<<1)|(chrch<<4) );
SetVROM_2K_Bank( 6, 1|(chr1h<<1)|(chrch<<4) );
}
void Mapper135::SaveState( LPBYTE p )
{
p[ 0] = cmd;
p[ 1] = chr0l;
p[ 2] = chr0h;
p[ 3] = chr1l;
p[ 4] = chr1h;
p[ 5] = chrch;
}
void Mapper135::LoadState( LPBYTE p )
{
cmd = p[ 0];
chr0l = p[ 1];
chr0h = p[ 2];
chr0l = p[ 3];
chr0h = p[ 4];
chrch = p[ 5];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -