C64: AEC does not prohibit the CPU from functioning, only BA (RDY) does
This commit is contained in:
parent
9758efe604
commit
2abe832289
|
@ -207,7 +207,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64
|
||||||
{
|
{
|
||||||
_board.InputRead = false;
|
_board.InputRead = false;
|
||||||
_board.PollInput();
|
_board.PollInput();
|
||||||
_board.Cpu.LagCycles = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_board.Execute();
|
_board.Execute();
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
|
|
||||||
private void StepOver()
|
private void StepOver()
|
||||||
{
|
{
|
||||||
var instruction = CpuPeek(_cpu.PC);
|
var instruction = Peek(_cpu.PC);
|
||||||
|
|
||||||
if (instruction == Jsr)
|
if (instruction == Jsr)
|
||||||
{
|
{
|
||||||
|
@ -116,13 +116,13 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
private void StepOut()
|
private void StepOut()
|
||||||
{
|
{
|
||||||
var instructionsBeforeBailout = 1000000;
|
var instructionsBeforeBailout = 1000000;
|
||||||
var instr = CpuPeek(_cpu.PC);
|
var instr = Peek(_cpu.PC);
|
||||||
_jsrCount = instr == Jsr ? 1 : 0;
|
_jsrCount = instr == Jsr ? 1 : 0;
|
||||||
|
|
||||||
while (--instructionsBeforeBailout > 0)
|
while (--instructionsBeforeBailout > 0)
|
||||||
{
|
{
|
||||||
StepInto();
|
StepInto();
|
||||||
instr = CpuPeek(_cpu.PC);
|
instr = Peek(_cpu.PC);
|
||||||
if (instr == Jsr)
|
if (instr == Jsr)
|
||||||
{
|
{
|
||||||
_jsrCount++;
|
_jsrCount++;
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
|
|
||||||
public string Disassemble(MemoryDomain m, uint addr, out int length)
|
public string Disassemble(MemoryDomain m, uint addr, out int length)
|
||||||
{
|
{
|
||||||
return MOS6502X.Disassemble((ushort)addr, out length, CpuPeek);
|
return MOS6502X.Disassemble((ushort) addr, out length, a => unchecked((byte) Peek(a)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,25 +67,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
set { _cpu.TraceCallback = value; }
|
set { _cpu.TraceCallback = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetOverflow()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private byte CpuPeek(ushort addr)
|
|
||||||
{
|
|
||||||
return unchecked((byte)Peek(addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
private byte CpuRead(ushort addr)
|
|
||||||
{
|
|
||||||
return unchecked((byte)Read(addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CpuWrite(ushort addr, byte val)
|
|
||||||
{
|
|
||||||
Write(addr, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HardReset()
|
public void HardReset()
|
||||||
{
|
{
|
||||||
_cpu.NESSoftReset();
|
_cpu.NESSoftReset();
|
||||||
|
@ -109,22 +90,15 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
{
|
{
|
||||||
_cpu.RDY = ReadRdy();
|
_cpu.RDY = ReadRdy();
|
||||||
|
|
||||||
if (ReadAec())
|
// if (!ReadAec())
|
||||||
{
|
// return;
|
||||||
_cpu.IRQ = !ReadIrq();
|
_cpu.IRQ = !ReadIrq();
|
||||||
_pinNmiLast = _thisNmi;
|
_pinNmiLast = _thisNmi;
|
||||||
_thisNmi = ReadNmi();
|
_thisNmi = ReadNmi();
|
||||||
_cpu.NMI |= _pinNmiLast && !_thisNmi;
|
_cpu.NMI |= _pinNmiLast && !_thisNmi;
|
||||||
_cpu.ExecuteOne();
|
_cpu.ExecuteOne();
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LagCycles++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int LagCycles;
|
|
||||||
|
|
||||||
internal bool AtInstructionStart()
|
internal bool AtInstructionStart()
|
||||||
{
|
{
|
||||||
return _cpu.AtInstructionStart();
|
return _cpu.AtInstructionStart();
|
||||||
|
@ -216,7 +190,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
case 0x0001:
|
case 0x0001:
|
||||||
return PortData;
|
return PortData;
|
||||||
default:
|
default:
|
||||||
return ReadMemory(addr);
|
return ReadAec() ? ReadMemory(addr) : 0xFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +207,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
ser.EndSection();
|
ser.EndSection();
|
||||||
|
|
||||||
ser.Sync(nameof(_thisNmi), ref _thisNmi);
|
ser.Sync(nameof(_thisNmi), ref _thisNmi);
|
||||||
ser.Sync(nameof(LagCycles), ref LagCycles);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Write(int addr, int val)
|
public void Write(int addr, int val)
|
||||||
|
@ -249,7 +222,8 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
WriteMemoryPort(addr, val);
|
WriteMemoryPort(addr, val);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WriteMemory(addr, val);
|
if (ReadAec())
|
||||||
|
WriteMemory(addr, val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue