From c8b2ba1bc6086f9ac954c84b39bbd62ac582000d Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Fri, 16 Nov 2012 07:51:19 +0100 Subject: [PATCH] Implement the MORE command (0D) used to read more commands from the CPU --- .../Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.cpp | 14 +++++++++++--- .../Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.cpp index a7e9c561f0..ccb1c25661 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.cpp @@ -79,6 +79,7 @@ void CUCode_NewAX::HandleCommandList() // Temp variables for addresses computation u16 addr_hi, addr_lo; u16 addr2_hi, addr2_lo; + u16 size; u32 pb_addr = 0; @@ -90,8 +91,7 @@ void CUCode_NewAX::HandleCommandList() switch (cmd) { - - // A lot of these commands are unknown, or unused in this AX HLE. + // Some of these commands are unknown, or unused in this AX HLE. // We still need to skip their arguments using "curr_idx += N". case CMD_SETUP: @@ -140,7 +140,15 @@ void CUCode_NewAX::HandleCommandList() case CMD_COMPRESSOR_TABLE_ADDR: curr_idx += 2; break; case CMD_UNK_0B: break; // TODO: check other versions case CMD_UNK_0C: break; // TODO: check other versions - case CMD_UNK_0D: curr_idx += 2; break; + + case CMD_MORE: + addr_hi = m_cmdlist[curr_idx++]; + addr_lo = m_cmdlist[curr_idx++]; + size = m_cmdlist[curr_idx++]; + + CopyCmdList(HILO_TO_32(addr), size); + curr_idx = 0; + break; case CMD_OUTPUT: // Skip the first address, it is used for surround audio diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.h index 91aa495c0e..a6cbe071de 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_NewAX.h @@ -64,7 +64,7 @@ private: CMD_COMPRESSOR_TABLE_ADDR = 0x0A, CMD_UNK_0B = 0x0B, CMD_UNK_0C = 0x0C, - CMD_UNK_0D = 0x0D, + CMD_MORE = 0x0D, CMD_OUTPUT = 0x0E, CMD_END = 0x0F, CMD_UNK_10 = 0x10,