fix crash in PCE debugger by adding peek and poke to the cpu instead of using read/write memory which triggers callbacks. however, the peek and poke are incomplete, as this requires deeper development (in this case, implementation in the memory maps)
This commit is contained in:
parent
aad592cc1c
commit
31d83d0d6e
|
@ -322,10 +322,15 @@ namespace BizHawk.Emulation.Cores.Components.H6280
|
||||||
|
|
||||||
public IMemoryCallbackSystem MemoryCallbacks;
|
public IMemoryCallbackSystem MemoryCallbacks;
|
||||||
|
|
||||||
public byte ReadMemory(ushort address)
|
public byte PeekMemory(ushort address)
|
||||||
{
|
{
|
||||||
byte page = MPR[address >> 13];
|
byte page = MPR[address >> 13];
|
||||||
var result = ReadMemory21((page << 13) | (address & 0x1FFF));
|
return ReadMemory21((page << 13) | (address & 0x1FFF));
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte ReadMemory(ushort address)
|
||||||
|
{
|
||||||
|
byte result = PeekMemory(address);
|
||||||
|
|
||||||
if (MemoryCallbacks.HasReads)
|
if (MemoryCallbacks.HasReads)
|
||||||
{
|
{
|
||||||
|
@ -336,10 +341,15 @@ namespace BizHawk.Emulation.Cores.Components.H6280
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteMemory(ushort address, byte value)
|
public void PokeMemory(ushort address, byte value)
|
||||||
{
|
{
|
||||||
byte page = MPR[address >> 13];
|
byte page = MPR[address >> 13];
|
||||||
WriteMemory21((page << 13) | (address & 0x1FFF), value);
|
WriteMemory21((page << 13) | (address & 0x1FFF), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteMemory(ushort address, byte value)
|
||||||
|
{
|
||||||
|
PokeMemory(address, value);
|
||||||
if (MemoryCallbacks.HasWrites)
|
if (MemoryCallbacks.HasWrites)
|
||||||
{
|
{
|
||||||
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
uint flags = (uint)(MemoryCallbackFlags.AccessWrite);
|
||||||
|
|
|
@ -37,13 +37,13 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
{
|
{
|
||||||
if (addr < 0 || addr >= 0x10000)
|
if (addr < 0 || addr >= 0x10000)
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
return Cpu.ReadMemory((ushort)addr);
|
return Cpu.PeekMemory((ushort)addr);
|
||||||
},
|
},
|
||||||
(addr, value) =>
|
(addr, value) =>
|
||||||
{
|
{
|
||||||
if (addr < 0 || addr >= 0x10000)
|
if (addr < 0 || addr >= 0x10000)
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
Cpu.WriteMemory((ushort)addr, value);
|
Cpu.PokeMemory((ushort)addr, value);
|
||||||
},
|
},
|
||||||
wordSize: 2);
|
wordSize: 2);
|
||||||
domains.Add(cpuBusDomain);
|
domains.Add(cpuBusDomain);
|
||||||
|
|
Loading…
Reference in New Issue