fix broken GPGX trace logger disassembler (fixes #866)
This commit is contained in:
parent
2e4d1ef2ab
commit
c96ff28055
|
@ -25,13 +25,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
|||
public IEnumerable<string> AvailableCpus
|
||||
{
|
||||
get { yield return "M68000"; }
|
||||
}
|
||||
|
||||
public string Disassemble(MemoryDomain m, uint addr, out int length)
|
||||
}
|
||||
|
||||
public string Disassemble(MemoryDomain m, uint addr,out int length)
|
||||
{
|
||||
_disassemblerInstance.ReadWord = (a) => (short)m.PeekUshort(a, m.EndianType == MemoryDomain.Endian.Big);
|
||||
_disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a);
|
||||
_disassemblerInstance.ReadLong = (a) => (int)m.PeekUint(a, m.EndianType == MemoryDomain.Endian.Big);
|
||||
const uint mask = 0xFFFFFF;
|
||||
_disassemblerInstance.ReadWord = (a) => (short)m.PeekUshort(a & mask, m.EndianType == MemoryDomain.Endian.Big);
|
||||
_disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a & mask);
|
||||
_disassemblerInstance.ReadLong = (a) => (int)m.PeekUint(a & mask, m.EndianType == MemoryDomain.Endian.Big);
|
||||
var info = _disassemblerInstance.Disassemble((int)addr);
|
||||
|
||||
length = info.Length;
|
||||
|
|
|
@ -48,6 +48,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
|||
mm.Add(new MemoryDomainIntPtrSwap16(name, MemoryDomain.Endian.Big, area, size, name != "MD CART" && name != "CD BOOT ROM"));
|
||||
}
|
||||
}
|
||||
|
||||
//it's gross for this not to be the full 32bits.
|
||||
//Uhh I mean, I guess the bus is physically smaller.. but the cpu's view of it is larger...
|
||||
//So... I guess no matter what we do, some badness will propagate. This is probably least bad.
|
||||
//Anyway, the disassembler, for instance, must have been masked down to size, since code can run from FFxxxxxxxx...
|
||||
var m68Bus = new MemoryDomainDelegate("M68K BUS", 0x1000000, MemoryDomain.Endian.Big,
|
||||
delegate (long addr)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue