add some ExecFetch stuff to NES/6502 cores for memorycallbacks and whatnot

This commit is contained in:
zeromus 2013-11-12 01:06:33 +00:00
parent 323df9b92e
commit 9fed70a49c
4 changed files with 21 additions and 0 deletions

View File

@ -199,6 +199,17 @@ namespace BizHawk.Emulation.Common
}
}
public void CallExecute(uint addr)
{
for (int i = 0; i < _writes.Count; i++)
{
if (_writeAddrs[i] == addr)
{
_writes[i]();
}
}
}
public bool HasReads { get { return _reads.Any(); } }
public bool HasWrites { get { return _writes.Any(); } }

View File

@ -590,6 +590,7 @@ namespace BizHawk.Emulation.CPUs.M6502
{
if (debug) Console.WriteLine(State());
branch_irq_hack = false;
if (OnExecFetch != null) OnExecFetch(PC);
opcode = ReadMemory(PC++);
mi = -1;
}

View File

@ -180,6 +180,9 @@ namespace BizHawk.Emulation.CPUs.M6502
public Func<ushort, byte> PeekMemory;
public Action<ushort, byte> WriteMemory;
//this only calls when the first byte of an instruction is fetched.
public Action<ushort> OnExecFetch;
public void SetCallbacks
(
Func<ushort, byte> ReadMemory,

View File

@ -160,6 +160,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
}
};
cpu.BCD_Enabled = false;
cpu.OnExecFetch = ExecFetch;
ppu = new PPU(this);
ram = new byte[0x800];
CIRAM = new byte[0x800];
@ -512,6 +513,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo
//old data bus values from previous reads
public byte DB;
public void ExecFetch(ushort addr)
{
CoreComm.MemoryCallbackSystem.CallExecute(addr);
}
public byte ReadMemory(ushort addr)
{
byte ret;