namespace MyNes.Core;

[BoardInfo("Camerica", 71)]
internal class Mapper071 : Board
{
	private bool fireHawk;

	internal override void HardReset()
	{
		base.HardReset();
		Switch16KPRG(PRG_ROM_16KB_Mask, PRGArea.AreaC000);
		fireHawk = SHA1.ToUpper() == "334781C830F135CF30A33E392D8AAA4AFDC223F9";
	}

	internal override void WritePRG(ref ushort addr, ref byte val)
	{
		if (addr < 40960)
		{
			if (fireHawk)
			{
				Switch01KNMTFromMirroring(((val & 0x10) == 16) ? Mirroring.OneScB : Mirroring.OneScA);
			}
		}
		else if (addr >= 49152)
		{
			Switch16KPRG(val, PRGArea.Area8000);
		}
	}
}