From 5811736b9aa826da1fe5a5b5ab3445534d65819c Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 9 Feb 2025 23:21:37 +0000 Subject: [PATCH] VideoCommon: log display list base address for invalid opcode errors --- Source/Core/VideoCommon/OpcodeDecoding.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Source/Core/VideoCommon/OpcodeDecoding.cpp b/Source/Core/VideoCommon/OpcodeDecoding.cpp index 768356aea8..1c2802cac4 100644 --- a/Source/Core/VideoCommon/OpcodeDecoding.cpp +++ b/Source/Core/VideoCommon/OpcodeDecoding.cpp @@ -14,6 +14,8 @@ #include "VideoCommon/OpcodeDecoding.h" +#include + #include "Common/Assert.h" #include "Common/Logging/Log.h" #include "Core/FifoPlayer/FifoRecorder.h" @@ -164,7 +166,9 @@ public: if (start_address != nullptr) { + m_display_list_addr = address; Run(start_address, size, *this); + m_display_list_addr.reset(); } } else @@ -188,7 +192,10 @@ public: // temporarily swap dl and non-dl (small "hack" for the stats) g_stats.SwapDL(); + m_display_list_addr = address; Run(start_address, size, *this); + m_display_list_addr.reset(); + INCSTAT(g_stats.this_frame.num_dlists_called); // un-swap @@ -220,6 +227,8 @@ public: else { auto& system = Core::System::GetInstance(); + if (m_display_list_addr) + ERROR_LOG_FMT(VIDEO, "in display list @ 0x{:08X}", m_display_list_addr.value()); system.GetCommandProcessor().HandleUnknownOpcode(opcode, data, is_preprocess); m_cycles += 1; } @@ -255,6 +264,7 @@ public: u32 m_cycles = 0; bool m_in_display_list = false; + std::optional m_display_list_addr; }; template