commodore64: writes to IO area and ROM space still write through to RAM underneath

This commit is contained in:
saxxonpike 2012-11-10 09:36:04 +00:00
parent a096b3f224
commit 7cf1a5cfae
2 changed files with 14 additions and 8 deletions

View File

@ -341,7 +341,7 @@ namespace BizHawk.Emulation.Computers.Commodore64
bool hiRom = ((cpuData & 0x02) != 0);
bool ioEnable = ((cpuData & 0x04) != 0);
if (loRom && hiRom && exRomPin && gamePin)
if (loRom && hiRom && gamePin && exRomPin)
{
layout.Mem1000 = MemoryDesignation.RAM;
layout.Mem8000 = MemoryDesignation.RAM;
@ -515,11 +515,16 @@ namespace BizHawk.Emulation.Computers.Commodore64
case MemoryDesignation.Expansion1:
break;
case MemoryDesignation.RAM:
ram[addr] = val;
break;
default:
break;
}
// write through to ram
if (des != MemoryDesignation.Disabled)
{
ram[addr] = val;
}
}
busData = val;
}

View File

@ -755,6 +755,12 @@ namespace BizHawk.Emulation.Computers.Commodore64
// sprite comparison
for (int i = 0; i < 8; i++)
{
if (regs.MYE[i] && regs.MCBASE[i] == 63)
{
regs.MD[i] = false;
regs.MDMA[i] = false;
}
if (regs.MxYE[i])
regs.MYE[i] = !regs.MYE[i];
@ -797,11 +803,6 @@ namespace BizHawk.Emulation.Computers.Commodore64
if (regs.MD[i])
{
regs.MCBASE[i] += 3;
if (regs.MCBASE[i] == 63)
{
regs.MD[i] = false;
regs.MDMA[i] = false;
}
}
}
}
@ -1116,8 +1117,8 @@ namespace BizHawk.Emulation.Computers.Commodore64
if ((!regs.MxXE[j]) || ((rasterOffsetX & 0x1) != (regs.MxX[j] & 0x1)))
{
regs.MSR[j] <<= 1;
regs.MSRC[j]--;
}
regs.MSRC[j]--;
}
// if not transparent, process collisions and color