63 lines
2.6 KiB
C++
63 lines
2.6 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
||
// Mapper075 Konami VRC1/Jaleco D65005 //
|
||
//////////////////////////////////////////////////////////////////////////
|
||
void Mapper075::Reset()
|
||
{
|
||
SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 );
|
||
|
||
if( VROM_8K_SIZE ) {
|
||
SetVROM_8K_Bank( 0 );
|
||
}
|
||
|
||
reg[0] = 0;
|
||
reg[1] = 1;
|
||
}
|
||
|
||
void Mapper075::Write( WORD addr, BYTE data )
|
||
{
|
||
switch( addr & 0xF000 ) {
|
||
case 0x8000:
|
||
SetPROM_8K_Bank( 4, data );
|
||
break;
|
||
|
||
case 0x9000:
|
||
if( data & 0x01 ) SetVRAM_Mirror( VRAM_HMIRROR );
|
||
else SetVRAM_Mirror( VRAM_VMIRROR );
|
||
|
||
reg[0] = (reg[0] & 0x0F) | ((data & 0x02) << 3);
|
||
reg[1] = (reg[1] & 0x0F) | ((data & 0x04) << 2);
|
||
SetVROM_4K_Bank( 0, reg[0] );
|
||
SetVROM_4K_Bank( 4, reg[1] );
|
||
break;
|
||
|
||
case 0xA000:
|
||
SetPROM_8K_Bank( 5, data );
|
||
break;
|
||
case 0xC000:
|
||
SetPROM_8K_Bank( 6, data );
|
||
break;
|
||
|
||
case 0xE000:
|
||
reg[0] = (reg[0] & 0x10) | (data & 0x0F);
|
||
SetVROM_4K_Bank( 0, reg[0] );
|
||
break;
|
||
|
||
case 0xF000:
|
||
reg[1] = (reg[1] & 0x10) | (data & 0x0F);
|
||
SetVROM_4K_Bank( 4, reg[1] );
|
||
break;
|
||
}
|
||
}
|
||
|
||
void Mapper075::SaveState( LPBYTE p )
|
||
{
|
||
p[0] = reg[0];
|
||
p[1] = reg[1];
|
||
}
|
||
|
||
void Mapper075::LoadState( LPBYTE p )
|
||
{
|
||
reg[0] = p[0];
|
||
reg[1] = p[1];
|
||
}
|