Fixes disassembler for SMS
This commit is contained in:
parent
5eae2d2a9a
commit
d0bdfd3d68
|
@ -393,7 +393,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
||||||
"NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", //0x100
|
"NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", "NOP", //0x100
|
||||||
};
|
};
|
||||||
|
|
||||||
public string Disassemble(ushort addr, Func<ushort, byte> read, out ushort size)
|
public string Disassemble(ushort addr, Func<ushort, byte> read, out int size)
|
||||||
{
|
{
|
||||||
ushort start_addr = addr;
|
ushort start_addr = addr;
|
||||||
ushort extra_inc = 0;
|
ushort extra_inc = 0;
|
||||||
|
@ -434,7 +434,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
||||||
|
|
||||||
addr += extra_inc;
|
addr += extra_inc;
|
||||||
|
|
||||||
size = (ushort)(addr - start_addr);
|
size = addr - start_addr;
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,10 +458,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
||||||
|
|
||||||
public string Disassemble(MemoryDomain m, uint addr, out int length)
|
public string Disassemble(MemoryDomain m, uint addr, out int length)
|
||||||
{
|
{
|
||||||
int loc = (int)addr;
|
string ret = Disassemble((ushort)addr, a => m.PeekByte(a), out length);
|
||||||
ushort unused = 0;
|
|
||||||
string ret = Disassemble((ushort) addr, a => m.PeekByte(a), out unused);
|
|
||||||
length = loc - (int)addr;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -609,7 +609,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
||||||
|
|
||||||
public TraceInfo State(bool disassemble = true)
|
public TraceInfo State(bool disassemble = true)
|
||||||
{
|
{
|
||||||
ushort bytes_read = 0;
|
int bytes_read = 0;
|
||||||
|
|
||||||
string disasm = disassemble ? Disassemble(RegPC, ReadMemory, out bytes_read) : "---";
|
string disasm = disassemble ? Disassemble(RegPC, ReadMemory, out bytes_read) : "---";
|
||||||
string byte_code = null;
|
string byte_code = null;
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
|
|
||||||
void InitCodeMastersMapper()
|
void InitCodeMastersMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryCM;
|
ReadMemoryMapper = ReadMemoryCM;
|
||||||
WriteMemory = WriteMemoryCM;
|
WriteMemoryMapper = WriteMemoryCM;
|
||||||
MapMemory = MapMemoryCM;
|
MapMemory = MapMemoryCM;
|
||||||
WriteMemoryCM(0x0000, 0);
|
WriteMemoryCM(0x0000, 0);
|
||||||
WriteMemoryCM(0x4000, 1);
|
WriteMemoryCM(0x4000, 1);
|
||||||
|
@ -113,8 +113,8 @@
|
||||||
|
|
||||||
void InitCodeMastersMapperRam()
|
void InitCodeMastersMapperRam()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryCMRam;
|
ReadMemoryMapper = ReadMemoryCMRam;
|
||||||
WriteMemory = WriteMemoryCMRam;
|
WriteMemoryMapper = WriteMemoryCMRam;
|
||||||
MapMemory = MapMemoryCMRam;
|
MapMemory = MapMemoryCMRam;
|
||||||
WriteMemoryCM(0x0000, 0);
|
WriteMemoryCM(0x0000, 0);
|
||||||
WriteMemoryCM(0x4000, 1);
|
WriteMemoryCM(0x4000, 1);
|
||||||
|
|
|
@ -122,8 +122,8 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
|
|
||||||
void InitEEPROMMapper()
|
void InitEEPROMMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryEEPROM;
|
ReadMemoryMapper = ReadMemoryEEPROM;
|
||||||
WriteMemory = WriteMemoryEEPROM;
|
WriteMemoryMapper = WriteMemoryEEPROM;
|
||||||
MapMemory = MapMemoryEEPROM;
|
MapMemory = MapMemoryEEPROM;
|
||||||
WriteMemoryEEPROM(0xFFFC, 0);
|
WriteMemoryEEPROM(0xFFFC, 0);
|
||||||
WriteMemoryEEPROM(0xFFFD, 0);
|
WriteMemoryEEPROM(0xFFFD, 0);
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
{
|
{
|
||||||
ExtRam = new byte[size];
|
ExtRam = new byte[size];
|
||||||
ExtRamMask = size - 1;
|
ExtRamMask = size - 1;
|
||||||
ReadMemory = ReadMemoryExt;
|
ReadMemoryMapper = ReadMemoryExt;
|
||||||
WriteMemory = WriteMemoryExt;
|
WriteMemoryMapper = WriteMemoryExt;
|
||||||
MapMemory = MapMemoryExt;
|
MapMemory = MapMemoryExt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
|
|
||||||
void InitKoreaMapper()
|
void InitKoreaMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryKR;
|
ReadMemoryMapper = ReadMemoryKR;
|
||||||
WriteMemory = WriteMemoryKR;
|
WriteMemoryMapper = WriteMemoryKR;
|
||||||
MapMemory = MapMemoryKR;
|
MapMemory = MapMemoryKR;
|
||||||
RomBank0 = 0;
|
RomBank0 = 0;
|
||||||
RomBank1 = 1;
|
RomBank1 = 1;
|
||||||
|
@ -101,9 +101,9 @@
|
||||||
|
|
||||||
void InitMSXMapper()
|
void InitMSXMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryMSX;
|
ReadMemoryMapper = ReadMemoryMSX;
|
||||||
WriteMemory = WriteMemoryMSX;
|
WriteMemoryMapper = WriteMemoryMSX;
|
||||||
ReadMemory = ReadMemoryMSX;
|
ReadMemoryMapper = ReadMemoryMSX;
|
||||||
RomBank0 = 0;
|
RomBank0 = 0;
|
||||||
RomBank1 = 0;
|
RomBank1 = 0;
|
||||||
RomBank2 = 0;
|
RomBank2 = 0;
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
void InitNemesisMapper()
|
void InitNemesisMapper()
|
||||||
{
|
{
|
||||||
InitMSXMapper();
|
InitMSXMapper();
|
||||||
ReadMemory = ReadMemoryNemesis;
|
ReadMemoryMapper = ReadMemoryNemesis;
|
||||||
MapMemory = MapMemoryNemesis;
|
MapMemory = MapMemoryNemesis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,8 +132,8 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
|
|
||||||
void InitSegaMapper()
|
void InitSegaMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemorySega;
|
ReadMemoryMapper = ReadMemorySega;
|
||||||
WriteMemory = WriteMemorySega;
|
WriteMemoryMapper = WriteMemorySega;
|
||||||
MapMemory = MapMemorySega;
|
MapMemory = MapMemorySega;
|
||||||
WriteMemorySega(0xFFFC, 0);
|
WriteMemorySega(0xFFFC, 0);
|
||||||
WriteMemorySega(0xFFFD, 0);
|
WriteMemorySega(0xFFFD, 0);
|
||||||
|
@ -176,8 +176,8 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
|
|
||||||
void InitBiosMapper()
|
void InitBiosMapper()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryBIOS;
|
ReadMemoryMapper = ReadMemoryBIOS;
|
||||||
WriteMemory = WriteMemoryBIOS;
|
WriteMemoryMapper = WriteMemoryBIOS;
|
||||||
WriteMemorySega(0xFFFC, 0);
|
WriteMemorySega(0xFFFC, 0);
|
||||||
WriteMemorySega(0xFFFD, 0);
|
WriteMemorySega(0xFFFD, 0);
|
||||||
WriteMemorySega(0xFFFE, 1);
|
WriteMemorySega(0xFFFE, 1);
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
{
|
{
|
||||||
Cpu.ReadMemory = ReadMemory;
|
Cpu.ReadMemory = ReadMemory;
|
||||||
Cpu.WriteMemory = WriteMemory;
|
Cpu.WriteMemory = WriteMemory;
|
||||||
Cpu.FetchMemory = FetchMemory_StubThunk;
|
Cpu.FetchMemory = FetchMemory;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -78,10 +78,11 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
{
|
{
|
||||||
ReadHardware = ReadPort,
|
ReadHardware = ReadPort,
|
||||||
WriteHardware = WritePort,
|
WriteHardware = WritePort,
|
||||||
FetchMemory = ReadMemory,
|
FetchMemory = FetchMemory,
|
||||||
ReadMemory = ReadMemory,
|
ReadMemory = ReadMemory,
|
||||||
WriteMemory = WriteMemory,
|
WriteMemory = WriteMemory,
|
||||||
MemoryCallbacks = MemoryCallbacks
|
MemoryCallbacks = MemoryCallbacks,
|
||||||
|
OnExecFetch = OnExecMemory
|
||||||
};
|
};
|
||||||
|
|
||||||
Vdp = new VDP(this, Cpu, IsGameGear ? VdpMode.GameGear : VdpMode.SMS, Region);
|
Vdp = new VDP(this, Cpu, IsGameGear ? VdpMode.GameGear : VdpMode.SMS, Region);
|
||||||
|
@ -249,15 +250,39 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
||||||
return DisplayType.NTSC;
|
return DisplayType.NTSC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private byte ReadMemory(ushort addr)
|
||||||
|
{
|
||||||
|
MemoryCallbacks.CallReads(addr, "System Bus");
|
||||||
|
|
||||||
|
return ReadMemoryMapper(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WriteMemory(ushort addr, byte value)
|
||||||
|
{
|
||||||
|
WriteMemoryMapper(addr, value);
|
||||||
|
|
||||||
|
MemoryCallbacks.CallWrites(addr, "System Bus");
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte FetchMemory(ushort addr)
|
||||||
|
{
|
||||||
|
return ReadMemoryMapper(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnExecMemory(ushort addr)
|
||||||
|
{
|
||||||
|
MemoryCallbacks.CallExecutes(addr, "System Bus");
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The ReadMemory callback for the mapper
|
/// The ReadMemory callback for the mapper
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private Func<ushort, byte> ReadMemory;
|
private Func<ushort, byte> ReadMemoryMapper;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The WriteMemory callback for the wrapper
|
/// The WriteMemory callback for the wrapper
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private Action<ushort, byte> WriteMemory;
|
private Action<ushort, byte> WriteMemoryMapper;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A dummy FetchMemory that simply reads the memory
|
/// A dummy FetchMemory that simply reads the memory
|
||||||
|
|
|
@ -46,8 +46,8 @@
|
||||||
|
|
||||||
void InitTerebiOekaki()
|
void InitTerebiOekaki()
|
||||||
{
|
{
|
||||||
ReadMemory = ReadMemoryTO;
|
ReadMemoryMapper = ReadMemoryTO;
|
||||||
WriteMemory = WriteMemoryTO;
|
WriteMemoryMapper = WriteMemoryTO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue