summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2024-01-08 04:15:44 +0100
committerAdmiral H. Curtiss <pikachu025@gmail.com>2024-01-08 10:23:29 +0100
commit3a9160100d6fce294ba2d08c9d1f0f4fa8e9c528 (patch)
tree0469cd0d88097834b7219fda269aef96c28e7ece /Source/Core
parente9ab33b8713ae19a6d3ba5db0068750884b1f359 (diff)
Core/DSPHLE: Store reference to DSPManager in AESndAccelerator.
Avoids the use of the global System in ReadMemory() and WriteMemory().
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/DSPHLE/UCodes/AESnd.cpp13
-rw-r--r--Source/Core/Core/HW/DSPHLE/UCodes/AESnd.h16
2 files changed, 26 insertions, 3 deletions
diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.cpp
index 8a71b8a355..5084a6ed24 100644
--- a/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.cpp
+++ b/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.cpp
@@ -81,7 +81,8 @@ bool AESndUCode::UseNewFlagMasks() const
m_crc == HASH_2022_PAD || m_crc == HASH_2023;
}
-AESndUCode::AESndUCode(DSPHLE* dsphle, u32 crc) : UCodeInterface(dsphle, crc)
+AESndUCode::AESndUCode(DSPHLE* dsphle, u32 crc)
+ : UCodeInterface(dsphle, crc), m_accelerator(dsphle->GetSystem().GetDSP())
{
}
@@ -239,6 +240,12 @@ void AESndUCode::DMAOutParameterBlock()
HLEMemory_Write_U32(memory, m_parameter_block_addr + 40, m_parameter_block.flags);
}
+AESndAccelerator::AESndAccelerator(DSP::DSPManager& dsp) : m_dsp(dsp)
+{
+}
+
+AESndAccelerator::~AESndAccelerator() = default;
+
void AESndAccelerator::OnEndException()
{
// exception5 - this updates internal state
@@ -249,12 +256,12 @@ void AESndAccelerator::OnEndException()
u8 AESndAccelerator::ReadMemory(u32 address)
{
- return Core::System::GetInstance().GetDSP().ReadARAM(address);
+ return m_dsp.ReadARAM(address);
}
void AESndAccelerator::WriteMemory(u32 address, u8 value)
{
- Core::System::GetInstance().GetDSP().WriteARAM(value, address);
+ m_dsp.WriteARAM(value, address);
}
static constexpr std::array<s16, 16> ACCELERATOR_COEFS = {}; // all zeros
diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.h b/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.h
index 0d55f2ed06..874e0440db 100644
--- a/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.h
+++ b/Source/Core/Core/HW/DSPHLE/UCodes/AESnd.h
@@ -10,16 +10,32 @@
#include "Core/DSP/DSPAccelerator.h"
#include "Core/HW/DSPHLE/UCodes/UCodes.h"
+namespace DSP
+{
+class DSPManager;
+}
+
namespace DSP::HLE
{
class DSPHLE;
class AESndAccelerator final : public Accelerator
{
+public:
+ explicit AESndAccelerator(DSP::DSPManager& dsp);
+ AESndAccelerator(const AESndAccelerator&) = delete;
+ AESndAccelerator(AESndAccelerator&&) = delete;
+ AESndAccelerator& operator=(const AESndAccelerator&) = delete;
+ AESndAccelerator& operator=(AESndAccelerator&&) = delete;
+ ~AESndAccelerator();
+
protected:
void OnEndException() override;
u8 ReadMemory(u32 address) override;
void WriteMemory(u32 address, u8 value) override;
+
+private:
+ DSP::DSPManager& m_dsp;
};
class AESndUCode final : public UCodeInterface