diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 595b8aec68..a176858f0a 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -100,10 +100,24 @@ namespace rsx // They are handled elsewhere for targeted methods, so it's unexpected for them to be passed here case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0: - msg = "CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0"sv; break; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY1: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY2: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY3: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY4: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY5: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY6: + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY7: + msg = "CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFYx"sv; break; case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0: - msg = "CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0"sv; break; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_1: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_2: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_3: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_4: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_5: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_6: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_7: + msg = "CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_x"sv; break; case CELL_GCM_CONTEXT_DMA_SEMAPHORE_RW: case CELL_GCM_CONTEXT_DMA_SEMAPHORE_R: @@ -2664,7 +2678,7 @@ namespace rsx case NV4097_ZCULL_SYNC: continue; - default: + default: { if (i >= NV308A_COLOR && i < NV3089_SET_OBJECT) { diff --git a/rpcs3/Emu/RSX/gcm_enums.cpp b/rpcs3/Emu/RSX/gcm_enums.cpp index a66243b9e8..0527fa6dde 100644 --- a/rpcs3/Emu/RSX/gcm_enums.cpp +++ b/rpcs3/Emu/RSX/gcm_enums.cpp @@ -143,9 +143,22 @@ void fmt_class_string::format(std::string& out, u64 arg) case CELL_GCM_CONTEXT_DMA_MEMORY_HOST_BUFFER: return "Main-Buffer"; // Main memory for DMA operations case CELL_GCM_CONTEXT_DMA_REPORT_LOCATION_LOCAL: return "Report Local"; case CELL_GCM_CONTEXT_DMA_REPORT_LOCATION_MAIN: return "Report Main"; - case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0: return "Notify"; // TODO - - //case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0: + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0: return "_Notify0"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_1: return "_Notify1"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_2: return "_Notify2"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_3: return "_Notify3"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_4: return "_Notify4"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_5: return "_Notify5"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_6: return "_Notify6"; + case CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_7: return "_Notify7"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0: return "_Get-Notify0"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY1: return "_Get-Notify1"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY2: return "_Get-Notify2"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY3: return "_Get-Notify3"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY4: return "_Get-Notify4"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY5: return "_Get-Notify5"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY6: return "_Get-Notify6"; + case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY7: return "_Get-Notify7"; case CELL_GCM_CONTEXT_DMA_SEMAPHORE_RW: return "SEMA-RW"; case CELL_GCM_CONTEXT_DMA_SEMAPHORE_R: return "SEMA-R"; case CELL_GCM_CONTEXT_DMA_DEVICE_RW: return "DEVICE-RW"; diff --git a/rpcs3/Emu/RSX/gcm_enums.h b/rpcs3/Emu/RSX/gcm_enums.h index 9da3b73732..9769c1358d 100644 --- a/rpcs3/Emu/RSX/gcm_enums.h +++ b/rpcs3/Emu/RSX/gcm_enums.h @@ -819,8 +819,23 @@ enum CellGcmLocation : u32 CELL_GCM_CONTEXT_DMA_REPORT_LOCATION_LOCAL = 0x66626660, CELL_GCM_CONTEXT_DMA_REPORT_LOCATION_MAIN = 0xBAD68000, CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0 = 0x6660420F, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_1 = 0x6660420E, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_2 = 0x6660420D, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_3 = 0x6660420C, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_4 = 0x6660420B, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_5 = 0x6660420A, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_6 = 0x66604209, + CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_7 = 0x66604208, + + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0 = 0x66604207, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY1 = 0x66604206, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY2 = 0x66604205, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY3 = 0x66604204, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY4 = 0x66604203, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY5 = 0x66604202, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY6 = 0x66604201, + CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY7 = 0x66604200, - CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0 = 0x66604200, CELL_GCM_CONTEXT_DMA_SEMAPHORE_RW = 0x66606660, CELL_GCM_CONTEXT_DMA_SEMAPHORE_R = 0x66616661, CELL_GCM_CONTEXT_DMA_DEVICE_RW = 0x56616660, diff --git a/rpcs3/rpcs3qt/rsx_debugger.cpp b/rpcs3/rpcs3qt/rsx_debugger.cpp index 4e05c0bf71..85a4ec304a 100644 --- a/rpcs3/rpcs3qt/rsx_debugger.cpp +++ b/rpcs3/rpcs3qt/rsx_debugger.cpp @@ -744,7 +744,7 @@ 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__)); } +#define DISASM(string, ...) { disasm.empty() ? fmt::append(disasm, ("" string), ##__VA_ARGS__) : fmt::append(disasm, (" " string), ##__VA_ARGS__); } if (cmd & RSX_METHOD_NON_METHOD_CMD_MASK) { @@ -780,7 +780,8 @@ QString rsx_debugger::DisAsmCommand(u32 cmd, u32 count, u32 ioAddr) { const auto args = vm::get_super_ptr(rsx::get_current_renderer()->iomap_table.get_addr(ioAddr + 4)); - u32 index = 0; + [[maybe_unused]] u32 index = 0; + switch((cmd & 0x3ffff) >> 2) { case 0x3fead: