55 lines
1.1 KiB
C#
55 lines
1.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
|
|
namespace BizHawk.Emulation.Consoles.Nintendo
|
|
{
|
|
public class Mapper182 : MMC3Board_Base
|
|
{
|
|
public override bool Configure(NES.EDetectionOrigin origin)
|
|
{
|
|
//analyze board type
|
|
switch (Cart.board_type)
|
|
{
|
|
case "MAPPER182":
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
BaseSetup();
|
|
|
|
return true;
|
|
}
|
|
|
|
public override void WritePRG(int addr, byte value)
|
|
{
|
|
addr += 0x8000;
|
|
switch (addr & 0xE001)
|
|
{
|
|
case 0x8000: break; //?
|
|
case 0x8001: base.WritePRG(0xA000,value); break;
|
|
case 0xA000:
|
|
value = (byte)scramble_A000(value);
|
|
base.WritePRG(0x8000,value);
|
|
break;
|
|
case 0xA001: break; //?
|
|
case 0xC000: base.WritePRG(0x8001, value); break;
|
|
case 0xC001:
|
|
base.WritePRG(0xC000, value);
|
|
base.WritePRG(0xC001, value);
|
|
break;
|
|
default:
|
|
base.WritePRG(addr, value);
|
|
break;
|
|
}
|
|
}
|
|
|
|
static byte[] scramble_table = new byte[] { 0, 3, 1, 5, 6, 7, 2, 4 };
|
|
static int scramble_A000(byte val)
|
|
{
|
|
return (val & ~0x7) | scramble_table[val & 0x7];
|
|
}
|
|
|
|
}
|
|
} |