//////////////////////////////////////////////////////////////////////////
// Mapper202  150-in-1                                                  //
//////////////////////////////////////////////////////////////////////////
void	Mapper202::Reset()
{
	SetPROM_16K_Bank( 4, 6 );
	SetPROM_16K_Bank( 6, 7 );

	if( VROM_1K_SIZE ) {
		SetVROM_8K_Bank( 0 );
	}
}

void	Mapper202::ExWrite( WORD addr, BYTE data )
{
	if( addr >= 0x4020 ) {
		WriteSub( addr, data );
	}
}

void	Mapper202::WriteLow( WORD addr, BYTE data )
{
	WriteSub( addr, data );
}

void	Mapper202::Write( WORD addr, BYTE data )
{
	WriteSub( addr, data );
}

void	Mapper202::WriteSub( WORD addr, BYTE data )
{
	INT	bank = (addr>>1) & 0x07;

	SetPROM_16K_Bank( 4, bank );
	if( (addr & 0x0C) == 0x0C ) {
		SetPROM_16K_Bank( 6, bank+1 );
	} else {
		SetPROM_16K_Bank( 6, bank );
	}
	SetVROM_8K_Bank( bank );

	if( addr & 0x01 ) {
		SetVRAM_Mirror( VRAM_HMIRROR );
	} else {
		SetVRAM_Mirror( VRAM_VMIRROR );
	}
}