consistently check if callbacks exist before calling memory callbacks, across all cores
This commit is contained in:
parent
1060bbc155
commit
325551ecd0
|
@ -183,7 +183,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
|
|||
|
||||
TraceCallback?.Invoke(CP1610State());
|
||||
|
||||
if (MemoryCallbacks != null)
|
||||
if (MemoryCallbacks != null && MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(RegisterPC, 0, flags, "System Bus");
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
|
|||
|
||||
public ushort ReadMemoryWrapper(ushort addr, bool peek)
|
||||
{
|
||||
if (MemoryCallbacks != null && !peek)
|
||||
if (MemoryCallbacks != null && MemoryCallbacks.HasReads && !peek)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
|
@ -45,7 +45,7 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
|
|||
|
||||
public void WriteMemoryWrapper(ushort addr, ushort value, bool poke)
|
||||
{
|
||||
if (MemoryCallbacks != null && !poke)
|
||||
if (MemoryCallbacks != null && MemoryCallbacks.HasWrites && !poke)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
|
|
|
@ -205,18 +205,27 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII
|
|||
{
|
||||
_machine.Memory.ReadCallback = (addr) =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
};
|
||||
_machine.Memory.WriteCallback = (addr) =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
};
|
||||
_machine.Memory.ExecuteCallback = (addr) =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
};
|
||||
_machine.Memory.InputCallback = InputCallbacks.Call;
|
||||
}
|
||||
|
|
|
@ -288,8 +288,11 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
|
|||
|
||||
private void ExecFetch(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void Reset_Mapper(string m)
|
||||
|
|
|
@ -18,8 +18,12 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
|
|||
{
|
||||
public byte ReadMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(Common.MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)Common.MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
|
||||
|
||||
if ((addr & 0xFCE0) == 0)
|
||||
{
|
||||
|
@ -103,8 +107,11 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
|
|||
|
||||
public void WriteMemory(ushort addr, byte value)
|
||||
{
|
||||
uint flags = (uint)(Common.MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)Common.MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
|
||||
if ((addr & 0xFCE0) == 0)
|
||||
{
|
||||
|
|
|
@ -16,8 +16,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
|
|||
{
|
||||
public byte ReadMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
|
||||
if (addr < 0x8000)
|
||||
{
|
||||
|
@ -51,8 +54,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
|
|||
|
||||
public void WriteMemory(ushort addr, byte value)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
|
||||
if (addr < 0x8000)
|
||||
{
|
||||
|
|
|
@ -151,10 +151,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
|
|||
_framebuffer = new int[VirtualWidth * VirtualHeight];
|
||||
}
|
||||
|
||||
// TODO: move this inside the cpu to avoid a non-inlinable function call
|
||||
private void ExecFetch(ushort addr)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void Setup_Mapper()
|
||||
|
|
|
@ -13,8 +13,11 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
|
|||
{
|
||||
public byte ReadMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
|
||||
if (addr < 0x400)
|
||||
{
|
||||
|
@ -26,8 +29,11 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
|
|||
|
||||
public void WriteMemory(ushort addr, byte value)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
|
||||
if (addr < 0x400)
|
||||
{
|
||||
|
|
|
@ -144,10 +144,14 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
|
|||
|
||||
public string BoardName => mapper.GetType().Name;
|
||||
|
||||
// TODO: move callbacks to cpu to avoid non-inlinable function call
|
||||
private void ExecFetch(ushort addr)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void Setup_Mapper()
|
||||
|
|
|
@ -162,18 +162,27 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
{
|
||||
padcb = new LibVBANext.StandardCallback(() => InputCallbacks.Call());
|
||||
fetchcb = new LibVBANext.AddressCallback((addr) => {
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
});
|
||||
readcb = new LibVBANext.AddressCallback((addr) =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
});
|
||||
writecb = new LibVBANext.AddressCallback((addr) =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
});
|
||||
tracecb = new LibVBANext.TraceCallback((addr, opcode) => Tracer.Put(Trace(addr, opcode)));
|
||||
_inputCallbacks.ActiveChanged += SyncPadCallback;
|
||||
|
|
|
@ -304,10 +304,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
frame_buffer = new int[VirtualWidth * VirtualHeight];
|
||||
}
|
||||
|
||||
// TODO: move callbacks to cpu to avoid having to make a non-inlinable
|
||||
private void ExecFetch(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void Setup_Mapper()
|
||||
|
|
|
@ -27,8 +27,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
{
|
||||
public byte ReadMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
|
||||
addr_access = addr;
|
||||
|
||||
if (ppu.DMA_start)
|
||||
|
@ -149,8 +153,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
|
||||
public void WriteMemory(ushort addr, byte value)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
|
||||
addr_access = addr;
|
||||
|
||||
if (ppu.DMA_start)
|
||||
|
|
|
@ -47,22 +47,34 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
private void ReadCallback(uint address, ulong cycleOffset)
|
||||
{
|
||||
callbackCycleCount = _cycleCount + cycleOffset;
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus");
|
||||
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteCallback(uint address, ulong cycleOffset)
|
||||
{
|
||||
callbackCycleCount = _cycleCount + cycleOffset;
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags,"System Bus");
|
||||
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags,"System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecCallback(uint address, ulong cycleOffset)
|
||||
{
|
||||
callbackCycleCount = _cycleCount + cycleOffset;
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus");
|
||||
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -888,8 +888,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public void ExecFetch(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
public byte ReadMemory(ushort addr)
|
||||
|
@ -939,8 +942,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
}
|
||||
}
|
||||
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, ret, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, ret, flags, "System Bus");
|
||||
}
|
||||
|
||||
DB = ret;
|
||||
return ret;
|
||||
|
@ -987,8 +993,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
Board.WritePrg(addr - 0x8000, value);
|
||||
}
|
||||
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessWrite | MemoryCallbackFlags.SizeByte);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.CPUZero | MemoryCallbackFlags.AccessWrite | MemoryCallbackFlags.SizeByte);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
// the palette for each VS game needs to be chosen explicitly since there are 6 different ones.
|
||||
|
|
|
@ -372,47 +372,65 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
|||
|
||||
private void ReadHook(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecHook(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteHook(uint addr, byte val)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, val, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, val, flags, "System Bus");
|
||||
// we RefreshMemoryCallbacks() after the trigger in case the trigger turns itself off at that point
|
||||
// EDIT: for now, theres some IPC re-entrancy problem
|
||||
// RefreshMemoryCallbacks();
|
||||
}
|
||||
}
|
||||
|
||||
private void ReadHook_SMP(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "SMP");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "SMP");
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecHook_SMP(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "SMP");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "SMP");
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteHook_SMP(uint addr, byte val)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, val, flags, "SMP");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, val, flags, "SMP");
|
||||
}
|
||||
}
|
||||
|
||||
private enum LoadParamType
|
||||
|
|
|
@ -296,8 +296,11 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|||
|
||||
public byte ReadMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
|
||||
return ReadMemoryMapper(addr);
|
||||
}
|
||||
|
@ -306,8 +309,11 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|||
{
|
||||
WriteMemoryMapper(addr, value);
|
||||
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
public byte FetchMemory(ushort addr)
|
||||
|
@ -317,8 +323,11 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|||
|
||||
private void OnExecMemory(ushort addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -57,18 +57,27 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
|||
{
|
||||
ExecCallback = new LibGPGX.mem_cb(a =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
}
|
||||
});
|
||||
ReadCallback = new LibGPGX.mem_cb(a =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
}
|
||||
});
|
||||
WriteCallback = new LibGPGX.mem_cb(a =>
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(a, 0, flags, "M68K BUS");
|
||||
}
|
||||
});
|
||||
_memoryCallbacks.ActiveChanged += RefreshMemCallbacks;
|
||||
}
|
||||
|
|
|
@ -909,6 +909,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
|||
flags |= MemoryCallbackFlags.AccessExecute;
|
||||
break;
|
||||
}
|
||||
|
||||
MemoryCallbacks.CallMemoryCallbacks(address, value, (uint)flags, "System Bus");
|
||||
}
|
||||
|
||||
|
|
|
@ -139,18 +139,27 @@ namespace BizHawk.Emulation.Cores.WonderSwan
|
|||
|
||||
void ReadCallback(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessRead);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasReads)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
void WriteCallback(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasWrites)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
void ExecCallback(uint addr)
|
||||
{
|
||||
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
if (MemoryCallbacks.HasExecutes)
|
||||
{
|
||||
uint flags = (uint)MemoryCallbackFlags.AccessExecute;
|
||||
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
||||
}
|
||||
}
|
||||
void ButtonCallback()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue