BizHawk/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper115.cs

68 lines
1.3 KiB
C#
Raw Normal View History

2012-03-09 04:15:56 +00:00
using System;
using System.IO;
using System.Diagnostics;
namespace BizHawk.Emulation.Consoles.Nintendo
{
public class Mapper115 : MMC3Board_Base
{
public override bool Configure(NES.EDetectionOrigin origin)
{
//analyze board type
switch (Cart.board_type)
{
case "MAPPER115":
break;
default:
return false;
}
BaseSetup();
return true;
}
public override void SyncState(Serializer ser)
{
base.SyncState(ser);
ser.Sync("prg_mode", ref prg_mode);
ser.Sync("prg_page", ref prg_page);
ser.Sync("chr_block_or", ref chr_block_or);
}
bool prg_mode;
int prg_page, chr_block_or;
public override void WriteWRAM(int addr, byte value)
{
base.WriteWRAM(addr, value);
switch (addr & 1)
{
case 0:
prg_mode = value.Bit(7);
prg_page = (value & 0xF) * 2;
break;
case 1:
chr_block_or = (value & 0x1)<<8;
break;
}
}
protected override int Get_PRGBank_8K(int addr)
{
int bank_8k = mapper.Get_PRGBank_8K(addr);
if (prg_mode == false) return bank_8k;
else if (addr < 0x4000)
{
return (addr >> 13) + prg_page;
}
else return bank_8k;
}
protected override int Get_CHRBank_1K(int addr)
{
int bank_1k = base.Get_CHRBank_1K(addr);
return bank_1k | chr_block_or;
}
}
}