Update UNIF_UNL-SHERO.cs
This commit is contained in:
parent
4b51420231
commit
bb75653cd7
|
@ -1,60 +1,59 @@
|
||||||
using BizHawk.Common;
|
using BizHawk.Common;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Cores.Nintendo.NES
|
namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
{
|
{
|
||||||
public class UNIF_UNL_SHERO : MMC3Board_Base
|
public class UNIF_UNL_SHERO : MMC3Board_Base
|
||||||
{
|
{
|
||||||
[MapperProp]
|
[MapperProp]
|
||||||
public bool RegionAsia = false;
|
public bool RegionAsia = false;
|
||||||
|
|
||||||
private byte reg;
|
private byte reg;
|
||||||
|
|
||||||
public override bool Configure(NES.EDetectionOrigin origin)
|
public override bool Configure(NES.EDetectionOrigin origin)
|
||||||
{
|
{
|
||||||
switch (Cart.board_type)
|
switch (Cart.board_type)
|
||||||
{
|
{
|
||||||
case "UNIF_UNL-SHERO":
|
case "UNIF_UNL-SHERO":
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseSetup();
|
BaseSetup();
|
||||||
AutoMapperProps.Apply(this);
|
AutoMapperProps.Apply(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SyncState(Serializer ser)
|
public override void SyncState(Serializer ser)
|
||||||
{
|
{
|
||||||
base.SyncState(ser);
|
base.SyncState(ser);
|
||||||
ser.Sync("reg", ref reg);
|
ser.Sync("reg", ref reg);
|
||||||
ser.Sync("RegionAsia", ref RegionAsia);
|
ser.Sync("RegionAsia", ref RegionAsia);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void WriteEXP(int addr, byte value)
|
public override void WriteEXP(int addr, byte value)
|
||||||
{
|
{
|
||||||
if (addr == 0x100)
|
if (addr == 0x100)
|
||||||
{
|
{
|
||||||
reg = value;
|
reg = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
base.WriteEXP(addr, value);
|
base.WriteEXP(addr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override byte ReadEXP(int addr)
|
public override byte ReadEXP(int addr)
|
||||||
{
|
{
|
||||||
if (addr == 0x100)
|
if (addr == 0x100)
|
||||||
{
|
{
|
||||||
return (byte)(RegionAsia ? 0xFF : 00);
|
return (byte)(RegionAsia ? 0xFF : 00);
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.ReadEXP(addr);
|
return base.ReadEXP(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override byte ReadPPU(int addr)
|
public override byte ReadPPU(int addr)
|
||||||
{
|
{
|
||||||
// TODO: why doesn't this work?
|
|
||||||
if (addr < 0x2000)
|
if (addr < 0x2000)
|
||||||
{
|
{
|
||||||
if ((reg & 0x40) > 0)
|
if ((reg & 0x40) > 0)
|
||||||
|
@ -71,10 +70,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return VRAM[addr];
|
return VRAM[addr];
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void WritePPU(int addr, byte value)
|
public override void WritePPU(int addr, byte value)
|
||||||
{
|
{
|
||||||
if (addr < 0x2000)
|
if (addr < 0x2000)
|
||||||
{
|
{
|
||||||
|
@ -89,27 +88,27 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
VRAM[addr] = value;
|
VRAM[addr] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override int Get_CHRBank_1K(int addr)
|
protected override int Get_CHRBank_1K(int addr)
|
||||||
{
|
{
|
||||||
if (addr < 0x800)
|
if (addr < 0x800)
|
||||||
{
|
{
|
||||||
return base.Get_CHRBank_1K(addr) | ((reg & 8) << 5);
|
return base.Get_CHRBank_1K(addr) | ((reg & 8) << 5);
|
||||||
}
|
}
|
||||||
else if (addr < 0x1000)
|
else if (addr < 0x1000)
|
||||||
{
|
{
|
||||||
return base.Get_CHRBank_1K(addr) | ((reg & 4) << 6);
|
return base.Get_CHRBank_1K(addr) | ((reg & 4) << 6);
|
||||||
}
|
}
|
||||||
else if (addr < 0x1800)
|
else if (addr < 0x1800)
|
||||||
{
|
{
|
||||||
return base.Get_CHRBank_1K(addr) | ((reg & 1) << 8);
|
return base.Get_CHRBank_1K(addr) | ((reg & 1) << 8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return base.Get_CHRBank_1K(addr) | ((reg & 2) << 7);
|
return base.Get_CHRBank_1K(addr) | ((reg & 2) << 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue