52 lines
1.3 KiB
C++
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;
|
|
}
|
|
}
|