From c50d459b1e84f01d1c9f68f4a1a5ed9cf72e7f10 Mon Sep 17 00:00:00 2001 From: eladash Date: Fri, 14 Dec 2018 16:55:44 +0200 Subject: [PATCH] cleanup rsx fifo debugger command display --- rpcs3/Emu/RSX/gcm_printing.cpp | 2 +- rpcs3/rpcs3qt/rsx_debugger.cpp | 59 +++++++++++++++++++--------------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/rpcs3/Emu/RSX/gcm_printing.cpp b/rpcs3/Emu/RSX/gcm_printing.cpp index af2c96fbd2..ab223c8ecf 100644 --- a/rpcs3/Emu/RSX/gcm_printing.cpp +++ b/rpcs3/Emu/RSX/gcm_printing.cpp @@ -734,7 +734,7 @@ std::string rsx::get_method_name(const u32 id) return std::string("CELL_GCM_") + found->second; } - return fmt::format("Unknown/illegal method [0x%08x]", id << 2); + return fmt::format("Unknown/illegal method [0x%04x]", id << 2); } // Various parameter pretty printing function diff --git a/rpcs3/rpcs3qt/rsx_debugger.cpp b/rpcs3/rpcs3qt/rsx_debugger.cpp index 755021623b..c519b0a087 100644 --- a/rpcs3/rpcs3qt/rsx_debugger.cpp +++ b/rpcs3/rpcs3qt/rsx_debugger.cpp @@ -635,7 +635,7 @@ void rsx_debugger::GetMemory() // Write information for(u32 i=0, addr = m_addr; i < item_count; i++, addr += 4) { - QTableWidgetItem* address_item = new QTableWidgetItem(qstr(fmt::format("%08x", addr))); + QTableWidgetItem* address_item = new QTableWidgetItem(qstr(fmt::format("%07x", addr))); address_item->setData(Qt::UserRole, addr); m_list_commands->setItem(i, 0, address_item); @@ -1085,31 +1085,38 @@ QString rsx_debugger::DisAsmCommand(u32 cmd, u32 count, u32 ioAddr) std::string disasm; #define DISASM(string, ...) { if(disasm.empty()) disasm = fmt::format((string), ##__VA_ARGS__); else disasm += (' ' + fmt::format((string), ##__VA_ARGS__)); } - if((cmd & RSX_METHOD_OLD_JUMP_CMD_MASK) == RSX_METHOD_OLD_JUMP_CMD) - { - u32 jumpAddr = cmd & RSX_METHOD_OLD_JUMP_OFFSET_MASK; - DISASM("JUMP: %08x -> %08x", ioAddr, jumpAddr); - } - else if((cmd & RSX_METHOD_NEW_JUMP_CMD_MASK) == RSX_METHOD_NEW_JUMP_CMD) - { - u32 jumpAddr = cmd & RSX_METHOD_NEW_JUMP_OFFSET_MASK; - DISASM("JUMP: %08x -> %08x", ioAddr, jumpAddr); - } - else if((cmd & RSX_METHOD_CALL_CMD_MASK) == RSX_METHOD_CALL_CMD) - { - u32 callAddr = cmd & RSX_METHOD_CALL_OFFSET_MASK; - DISASM("CALL: %08x -> %08x", ioAddr, callAddr); - } - if((cmd & ~0xfffc) == RSX_METHOD_RETURN_CMD) - { - DISASM("RETURN"); - } - if((cmd & ~(RSX_METHOD_NON_INCREMENT_CMD | 0xfffc)) == 0) + if (cmd & RSX_METHOD_NON_METHOD_CMD_MASK) + { + if((cmd & RSX_METHOD_OLD_JUMP_CMD_MASK) == RSX_METHOD_OLD_JUMP_CMD) + { + u32 jumpAddr = cmd & RSX_METHOD_OLD_JUMP_OFFSET_MASK; + DISASM("JUMP to 0x%07x", jumpAddr); + } + else if((cmd & RSX_METHOD_NEW_JUMP_CMD_MASK) == RSX_METHOD_NEW_JUMP_CMD) + { + u32 jumpAddr = cmd & RSX_METHOD_NEW_JUMP_OFFSET_MASK; + DISASM("JUMP to 0x%07x", jumpAddr); + } + else if((cmd & RSX_METHOD_CALL_CMD_MASK) == RSX_METHOD_CALL_CMD) + { + u32 callAddr = cmd & RSX_METHOD_CALL_OFFSET_MASK; + DISASM("CALL to 0x%07x", callAddr); + } + else if((cmd & RSX_METHOD_RETURN_MASK) == RSX_METHOD_RETURN_CMD) + { + DISASM("RETURN"); + } + else + { + DISASM("Not a command"); + } + } + else if ((cmd & RSX_METHOD_NOP_MASK) == RSX_METHOD_NOP_CMD) { DISASM("NOP"); } - else if (!(cmd & RSX_METHOD_NON_METHOD_CMD_MASK)) + else { auto args = vm::get_super_ptr(RSXIOMem.RealAddr(ioAddr + 4)); @@ -1121,7 +1128,7 @@ QString rsx_debugger::DisAsmCommand(u32 cmd, u32 count, u32 ioAddr) break; case_16(NV4097_SET_TEXTURE_OFFSET, 0x20): - DISASM("Texture Offset[%d]: %08x", index, (u32)args[0]); + DISASM("Texture Offset[%d]: %07x", index, (u32)args[0]); switch ((args[1] & 0x3) - 1) { case CELL_GCM_LOCATION_LOCAL: DISASM("(Local memory);"); break; @@ -1145,12 +1152,12 @@ QString rsx_debugger::DisAsmCommand(u32 cmd, u32 count, u32 ioAddr) } } - if((cmd & RSX_METHOD_NON_INCREMENT_CMD_MASK) == RSX_METHOD_NON_INCREMENT_CMD) + if((cmd & RSX_METHOD_NON_INCREMENT_CMD_MASK) == RSX_METHOD_NON_INCREMENT_CMD && count > 1) { DISASM("Non Increment cmd"); } - DISASM("[0x%08x(", cmd); + DISASM("("); for(uint i=0; i