From d20970afa7cdb18ce78705dfdb7e71e4e4306b55 Mon Sep 17 00:00:00 2001 From: goyuken Date: Sat, 24 Nov 2012 00:45:25 +0000 Subject: [PATCH] gba: correct tracelogger address for PC pipelining. note that the disassembly for some branch instructions shows up wrong, making this seem "wrong". but it's right, and the disassembly will be fixed... core: tracelogger can now show a custom column header. GBA uses it; all other traceloggers untouched --- .../Consoles/Nintendo/GBA/Meteor.cs | 3 ++- BizHawk.Emulation/Interfaces/CoreComms.cs | 2 ++ BizHawk.MultiClient/output/dll/libmeteor.dll | Bin 133120 -> 133120 bytes BizHawk.MultiClient/tools/TraceLogger.cs | 2 ++ libmeteor/source/interpreter.cpp | 4 ++-- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/GBA/Meteor.cs b/BizHawk.Emulation/Consoles/Nintendo/GBA/Meteor.cs index d2c21a8630..dc4b56fe7c 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/GBA/Meteor.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/GBA/Meteor.cs @@ -114,7 +114,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA { VsyncNum = 262144, VsyncDen = 4389, - CpuTraceAvailable = true + CpuTraceAvailable = true, + TraceHeader = " -Addr--- -Opcode- -Instruction------------------- -R0----- -R1----- -R2----- -R3----- -R4----- -R5----- -R6----- -R7----- -R8----- -R9----- -R10---- -R11---- -R12---- -R13(SP) -R14(LR) -R15(PC) -CPSR--- -SPSR---" }; public CoreOutputComm CoreOutputComm { get { return _CoreOutputComm; } } diff --git a/BizHawk.Emulation/Interfaces/CoreComms.cs b/BizHawk.Emulation/Interfaces/CoreComms.cs index 1bf8979869..7400bf9b42 100644 --- a/BizHawk.Emulation/Interfaces/CoreComms.cs +++ b/BizHawk.Emulation/Interfaces/CoreComms.cs @@ -53,6 +53,8 @@ namespace BizHawk public int ScreenLogicalOffsetX, ScreenLogicalOffsetY; public bool CpuTraceAvailable = false; + + public string TraceHeader = "Instructions"; } public class TraceBuffer diff --git a/BizHawk.MultiClient/output/dll/libmeteor.dll b/BizHawk.MultiClient/output/dll/libmeteor.dll index c8a67b858d27b1534660a0a3be9c89f0052e5c95..dcf3915798415b8ac1af47074777068d9a5b11dc 100644 GIT binary patch delta 6163 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 In$LLu7inkMxc~qF diff --git a/BizHawk.MultiClient/tools/TraceLogger.cs b/BizHawk.MultiClient/tools/TraceLogger.cs index 7a8d274ca7..cbce82b8d7 100644 --- a/BizHawk.MultiClient/tools/TraceLogger.cs +++ b/BizHawk.MultiClient/tools/TraceLogger.cs @@ -65,6 +65,7 @@ namespace BizHawk.MultiClient LoggingEnabled.Checked = true; Global.CoreInputComm.Tracer.Enabled = true; SetTracerBoxTitle(); + Restart(); } public void UpdateValues() @@ -83,6 +84,7 @@ namespace BizHawk.MultiClient if (Global.Emulator.CoreOutputComm.CpuTraceAvailable) { ClearList(); + TraceView.Columns[0].Text = Global.Emulator.CoreOutputComm.TraceHeader; } else { diff --git a/libmeteor/source/interpreter.cpp b/libmeteor/source/interpreter.cpp index b5ae37ab1d..66731435a9 100644 --- a/libmeteor/source/interpreter.cpp +++ b/libmeteor/source/interpreter.cpp @@ -74,7 +74,7 @@ namespace AMeteor if (traceenabled) { std::stringstream ss; - ss << IOS_TRACE << R(15) << ':' << std::setw(4) << code << " "; + ss << IOS_TRACE << R(15) - 2 << ':' << std::setw(4) << code << " "; ss.setf(std::ios::left, std::ios::adjustfield); ss << std::setw(32) << std::setfill(' ') << Disassembler::Instruction(R(15), (uint16_t)code).ToString(); ss.setf(std::ios::right, std::ios::adjustfield); @@ -126,7 +126,7 @@ namespace AMeteor if (traceenabled) { std::stringstream ss; - ss << IOS_TRACE << R(15) << ':' << std::setw(8) << code << ' '; + ss << IOS_TRACE << R(15) - 4 << ':' << std::setw(8) << code << ' '; ss.setf(std::ios::left, std::ios::adjustfield); ss << std::setw(32) << std::setfill(' ') << Disassembler::Instruction(R(15), (uint32_t)code).ToString(); ss.setf(std::ios::right, std::ios::adjustfield);