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