//////////////////////////////////////////////////////////////////////////
// Mapper000                                                            //
//////////////////////////////////////////////////////////////////////////
using static VirtualNes.MMU;


namespace VirtualNes.Core
{
    public class Mapper000 : Mapper
    {

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

        public override void Reset()
        {
            switch (PROM_16K_SIZE)
            {
                default:
                case 1: // 16K only
                    SetPROM_16K_Bank(4, 0);
                    SetPROM_16K_Bank(6, 0);
                    break;
                case 2: // 32K
                    SetPROM_32K_Bank(0);
                    break;
            }

            uint crc = nes.rom.GetPROM_CRC();
            if (crc == 0x4e7db5af)
            {   // Circus Charlie(J)
                nes.SetRenderMethod(EnumRenderMethod.POST_RENDER);
            }
            if (crc == 0x57970078)
            {   // F-1 Race(J)
                nes.SetRenderMethod(EnumRenderMethod.POST_RENDER);
            }
            if (crc == 0xaf2bbcbc       // Mach Rider(JU)
             || crc == 0x3acd4bf1)
            {   // Mach Rider(Alt)(JU)
                nes.SetRenderMethod(EnumRenderMethod.POST_RENDER);
            }
        }
    }
}