//////////////////////////////////////////////////////////////////////////
// Mapper003 CNROM                                                      //
//////////////////////////////////////////////////////////////////////////
using static VirtualNes.MMU;


namespace VirtualNes.Core
{
    public class Mapper003 : Mapper
    {

        public Mapper003(NES parent) : base(parent) { }

        public override void Reset()
        {
            switch (PROM_16K_SIZE)
            {
                case 1: // 16K only
                    SetPROM_16K_Bank(4, 0);
                    SetPROM_16K_Bank(6, 0);
                    break;
                case 2: // 32K
                    SetPROM_32K_Bank(0);
                    break;
            }
            //	nes.SetRenderMethod( NES::TILE_RENDER );
            uint crc = nes.rom.GetPROM_CRC();

            if (crc == 0x2b72fe7e)
            {   // Ganso Saiyuuki - Super Monkey Dai Bouken(J)
                nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER);
                nes.ppu.SetExtNameTableMode(true);
            }

            //	if( crc == 0xE44D95B5 ) {	// ひみつw
            //	}
        }

#if FALSE//0
void	Mapper003::WriteLow( WORD addr, BYTE data )
{
	if( patch ) {
		Mapper::WriteLow( addr, data );
	} else {
		if( nes.rom.IsSAVERAM() ) {
			Mapper::WriteLow( addr, data );
		} else {
			if( addr >= 0x4800 ) {
				SetVROM_8K_Bank( data & 0x03 );
			}
		}
	}
}
#endif

        //void Mapper003::Write(WORD addr, BYTE data)
        public override void Write(ushort addr, byte data)
        {
            SetVROM_8K_Bank(data);
        }

    }
}