From c67bae549143feb7c6ff9a80fc7885d15127b4e1 Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Sun, 14 May 2017 20:33:42 -0700 Subject: [PATCH] DSP-HLE: use DumpDSPCode to de-duplicate logic (and gain disassembly) This change centralizes all of the path handling and file writing logic in DumpDSPCode. DSP-HLE also gains the feature of DSP-LLE to automatically disassemble dumped code and write it to an accompanying text file. --- Source/Core/Core/HW/DSPHLE/UCodes/ROM.cpp | 12 +++--------- Source/Core/Core/HW/DSPHLE/UCodes/UCodes.cpp | 11 +++-------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/ROM.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/ROM.cpp index 8b3c3b68a8..ae3e3d4dab 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/ROM.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/ROM.cpp @@ -17,6 +17,7 @@ #include "Common/Logging/Log.h" #include "Common/StringUtil.h" #include "Core/ConfigManager.h" +#include "Core/DSP/DSPCodeUtil.h" #include "Core/HW/DSPHLE/DSPHLE.h" #include "Core/HW/DSPHLE/MailHandler.h" #include "Core/HW/DSPHLE/UCodes/UCodes.h" @@ -107,15 +108,8 @@ void ROMUCode::BootUCode() if (SConfig::GetInstance().m_DumpUCode) { - std::string ucode_dump_path = - StringFromFormat("%sDSP_UC_%08X.bin", File::GetUserPath(D_DUMPDSP_IDX).c_str(), ector_crc); - - File::IOFile fp(ucode_dump_path, "wb"); - if (fp) - { - fp.WriteArray((u8*)HLEMemory_Get_Pointer(m_current_ucode.m_ram_address), - m_current_ucode.m_length); - } + DSP::DumpDSPCode(static_cast(HLEMemory_Get_Pointer(m_current_ucode.m_ram_address)), + m_current_ucode.m_length, ector_crc); } INFO_LOG(DSPHLE, "CurrentUCode SOURCE Addr: 0x%08x", m_current_ucode.m_ram_address); diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.cpp index cef0f00583..625e5969ed 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.cpp @@ -19,6 +19,7 @@ #include "Common/StringUtil.h" #include "Common/Swap.h" #include "Core/ConfigManager.h" +#include "Core/DSP/DSPCodeUtil.h" #include "Core/HW/DSPHLE/DSPHLE.h" #include "Core/HW/DSPHLE/UCodes/AX.h" #include "Core/HW/DSPHLE/UCodes/AXWii.h" @@ -187,14 +188,8 @@ void UCodeInterface::PrepareBootUCode(u32 mail) if (SConfig::GetInstance().m_DumpUCode) { - std::string ucode_dump_path = StringFromFormat( - "%sDSP_UC_%08X.bin", File::GetUserPath(D_DUMPDSP_IDX).c_str(), ector_crc); - - File::IOFile fp(ucode_dump_path, "wb"); - if (fp) - { - fp.WriteArray((u8*)Memory::GetPointer(m_next_ucode.iram_mram_addr), m_next_ucode.iram_size); - } + DSP::DumpDSPCode(static_cast(Memory::GetPointer(m_next_ucode.iram_mram_addr)), + m_next_ucode.iram_size, ector_crc); } DEBUG_LOG(DSPHLE, "PrepareBootUCode 0x%08x", ector_crc);