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

52 lines
1.3 KiB
C++

//////////////////////////////////////////////////////////////////////////
// Mapper113 PC-Sachen/Hacker //
//////////////////////////////////////////////////////////////////////////
void Mapper113::Reset()
{
// SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 );
SetPROM_32K_Bank( 0 );
SetVROM_8K_Bank( 0 );
}
void Mapper113::WriteLow( WORD addr, BYTE data )
{
//DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes->GetScanline() );
switch( addr ) {
case 0x4100:
case 0x4111:
case 0x4120:
case 0x4194:
case 0x4195:
case 0x4900:
if( nes->rom->GetPROM_CRC() == 0xA75AEDE5 ) { // HES 6-in-1
if( data & 0x80 ) {
SetVRAM_Mirror( VRAM_VMIRROR );
} else {
SetVRAM_Mirror( VRAM_HMIRROR );
}
}
SetPROM_32K_Bank( data >> 3 );
SetVROM_8K_Bank( ((data>>3)&0x08)+(data&0x07) );
break;
}
}
void Mapper113::Write( WORD addr, BYTE data )
{
//DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes->GetScanline() );
switch( addr ) {
case 0x8008:
case 0x8009:
SetPROM_32K_Bank( data >> 3 );
SetVROM_8K_Bank( ((data>>3)&0x08)+(data&0x07) );
break;
case 0x8E66:
case 0x8E67:
SetVROM_8K_Bank( (data&0x07)?0:1 );
break;
case 0xE00A:
SetVRAM_Mirror( VRAM_MIRROR4L );
break;
}
}