Fix Super 24 Board

This commit is contained in:
alyosha-tas 2016-09-23 17:49:46 -04:00 committed by GitHub
parent 4fbbd15be0
commit 8d6198d337
1 changed files with 46 additions and 12 deletions

View File

@ -47,20 +47,54 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
base.WriteEXP(addr, value);
}
protected override int Get_CHRBank_1K(int addr)
public override byte ReadPRG(int addr)
{
if (!exRegs[0].Bit(5))
{
return base.Get_CHRBank_1K(addr) | (exRegs[1] << 3);
int bank_8k = addr >> 13;
bank_8k = mmc3.prg_regs_8k[bank_8k];
int NV= bank_8k & masko8[exRegs[0] & 7];
NV |= (exRegs[1] << 1);
return ROM[(NV << 13) + (addr & 0x1FFF)];
}
return base.Get_CHRBank_1K(addr);
public override byte ReadPPU(int addr)
{
if (addr < 0x2000)
{
int bank_1k = Get_CHRBank_1K(addr);
if ((exRegs[0] & 0x20)>0)
{
return VRAM[(bank_1k << 10) + (addr & 0x3FF)];
}
else
{
bank_1k = bank_1k | (exRegs[2] << 3);
return VROM[(bank_1k << 10) + (addr & 0x3FF)];
}
}
else
return base.ReadPPU(addr);
}
protected override int Get_PRGBank_8K(int addr)
public override void WritePPU(int addr, byte value)
{
// TODO
return base.Get_PRGBank_8K(addr);
if (addr < 0x2000)
{
int bank_1k = Get_CHRBank_1K(addr);
if ((exRegs[0] & 0x20) > 0)
{
VRAM[(bank_1k << 10) + (addr & 0x3FF)]=value;
}
else
{
// dont write to VROM
}
}
else
base.WritePPU(addr, value);
}
}
}