From ef5bfc49a78f2592feae3a30bae0da0ab592e699 Mon Sep 17 00:00:00 2001 From: zeromus Date: Thu, 17 Sep 2015 14:10:31 -0500 Subject: [PATCH] gambatte - add LY to trace log --- .../Nintendo/Gameboy/Gambatte.ITraceable.cs | 9 +++++---- libgambatte/src/cpu.cpp | 3 ++- libgambatte/src/memory.h | 2 ++ libgambatte/src/video.h | 2 ++ output/dll/libgambatte.dll | Bin 151040 -> 151040 bytes 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs index 73129071f7..20855e1988 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs @@ -13,12 +13,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy private void MakeTrace(IntPtr _s) { - int[] s = new int[13]; - System.Runtime.InteropServices.Marshal.Copy(_s, s, 0, 13); + int[] s = new int[14]; + System.Runtime.InteropServices.Marshal.Copy(_s, s, 0, 14); ushort unused; Tracer.Put(string.Format( - "{13} SP:{2:x2} A:{3:x2} B:{4:x2} C:{5:x2} D:{6:x2} E:{7:x2} F:{8:x2} H:{9:x2} L:{10:x2} {11} Cy:{0}", + "{13} SP:{2:x2} A:{3:x2} B:{4:x2} C:{5:x2} D:{6:x2} E:{7:x2} F:{8:x2} H:{9:x2} L:{10:x2} LY:{14:x2} {11} Cy:{0}", s[0], s[1] & 0xffff, s[2] & 0xffff, @@ -32,7 +32,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy s[10] & 0xff, s[11] != 0 ? "skip" : "", s[12] & 0xff, - Common.Components.Z80GB.NewDisassembler.Disassemble((ushort)s[1], (addr) => LibGambatte.gambatte_cpuread(GambatteState, addr), out unused).PadRight(30) + Common.Components.Z80GB.NewDisassembler.Disassemble((ushort)s[1], (addr) => LibGambatte.gambatte_cpuread(GambatteState, addr), out unused).PadRight(30), + s[13] & 0xff )); } } diff --git a/libgambatte/src/cpu.cpp b/libgambatte/src/cpu.cpp index 92173d1f44..e1674bebb1 100644 --- a/libgambatte/src/cpu.cpp +++ b/libgambatte/src/cpu.cpp @@ -505,7 +505,7 @@ void CPU::process(const unsigned long cycles) { unsigned char opcode; if (tracecallback) { - int result[13]; + int result[14]; result[0] = cycleCounter; result[1] = PC; result[2] = SP; @@ -520,6 +520,7 @@ void CPU::process(const unsigned long cycles) { result[11] = skip; PC_READ(opcode); result[12] = opcode; + result[13] = memory.debugGetLY(); tracecallback((void *)result); } else { diff --git a/libgambatte/src/memory.h b/libgambatte/src/memory.h index 70f4bafac3..8ffd355c31 100644 --- a/libgambatte/src/memory.h +++ b/libgambatte/src/memory.h @@ -85,6 +85,8 @@ public: bool loaded() const { return cart.loaded(); } const char * romTitle() const { return cart.romTitle(); } + int debugGetLY() const { return display.debugGetLY(); } + void setStatePtrs(SaveState &state); void loadState(const SaveState &state/*, unsigned long oldCc*/); void loadSavedata(const char *data) { cart.loadSavedata(data); } diff --git a/libgambatte/src/video.h b/libgambatte/src/video.h index 67c0856aed..4b722f1ebe 100644 --- a/libgambatte/src/video.h +++ b/libgambatte/src/video.h @@ -175,6 +175,8 @@ public: void setCgbPalette(unsigned *lut); void setVideoBuffer(uint_least32_t *videoBuf, int pitch); + int debugGetLY() const { return ppu.lyCounter().ly(); } + void dmgBgPaletteChange(const unsigned data, const unsigned long cycleCounter) { update(cycleCounter); bgpData[0] = data; diff --git a/output/dll/libgambatte.dll b/output/dll/libgambatte.dll index 752768150d2978fded27eede6999b17777410e46..381b65d8292a338bf12f3f1f5ebb0c5d4ed4ce65 100644 GIT binary patch delta 23226 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 delta 23224 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