fix broken GPGX trace logger disassembler (fixes #866)

This commit is contained in:
zeromus 2017-06-02 15:50:23 -05:00
parent 2e4d1ef2ab
commit c96ff28055
2 changed files with 12 additions and 6 deletions

View File

@ -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;

View File

@ -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)
{