diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp index 15001f8db3..2dc000dbfe 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp @@ -27,9 +27,15 @@ namespace DSP::HLE { -AXUCode::AXUCode(DSPHLE* dsphle, u32 crc) : UCodeInterface(dsphle, crc) +AXUCode::AXUCode(DSPHLE* dsphle, u32 crc, bool dummy) : UCodeInterface(dsphle, crc) +{ +} + +AXUCode::AXUCode(DSPHLE* dsphle, u32 crc) : AXUCode(dsphle, crc, false) { INFO_LOG_FMT(DSPHLE, "Instantiating AXUCode: crc={:08x}", crc); + + m_accelerator = std::make_unique(dsphle->GetSystem().GetDSP()); } AXUCode::~AXUCode() = default; @@ -37,8 +43,6 @@ AXUCode::~AXUCode() = default; void AXUCode::Initialize() { InitializeShared(); - - m_accelerator = std::make_unique(m_dsphle->GetSystem().GetDSP()); } void AXUCode::InitializeShared() diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AX.h b/Source/Core/Core/HW/DSPHLE/UCodes/AX.h index 76951d5f68..a4d8cb05f4 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AX.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AX.h @@ -110,6 +110,9 @@ protected: std::unique_ptr m_accelerator; + // Constructs without any GC-specific state, so it can be used by the deriving AXWii. + AXUCode(DSPHLE* dsphle, u32 crc, bool dummy); + void InitializeShared(); bool LoadResamplingCoefficients(bool require_same_checksum, u32 desired_checksum); diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp index cbdb814d36..36cd154f9b 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp @@ -20,21 +20,22 @@ namespace DSP::HLE { -AXWiiUCode::AXWiiUCode(DSPHLE* dsphle, u32 crc) : AXUCode(dsphle, crc), m_last_main_volume(0x8000) +AXWiiUCode::AXWiiUCode(DSPHLE* dsphle, u32 crc) + : AXUCode(dsphle, crc, false), m_last_main_volume(0x8000) { + INFO_LOG_FMT(DSPHLE, "Instantiating AXWiiUCode: crc={:08x}", crc); + for (u16& volume : m_last_aux_volumes) volume = 0x8000; - INFO_LOG_FMT(DSPHLE, "Instantiating AXWiiUCode"); - m_old_axwii = (crc == 0xfa450138) || (crc == 0x7699af32); + + m_accelerator = std::make_unique(dsphle->GetSystem().GetDSP()); } void AXWiiUCode::Initialize() { InitializeShared(); - - m_accelerator = std::make_unique(m_dsphle->GetSystem().GetDSP()); } void AXWiiUCode::HandleCommandList()