mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 15:31:17 +01:00
Core/DSPHLE: Store reference to DSPManager in AESndAccelerator.
Avoids the use of the global System in ReadMemory() and WriteMemory().
This commit is contained in:
parent
e9ab33b871
commit
3a9160100d
@ -81,7 +81,8 @@ bool AESndUCode::UseNewFlagMasks() const
|
|||||||
m_crc == HASH_2022_PAD || m_crc == HASH_2023;
|
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);
|
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()
|
void AESndAccelerator::OnEndException()
|
||||||
{
|
{
|
||||||
// exception5 - this updates internal state
|
// exception5 - this updates internal state
|
||||||
@ -249,12 +256,12 @@ void AESndAccelerator::OnEndException()
|
|||||||
|
|
||||||
u8 AESndAccelerator::ReadMemory(u32 address)
|
u8 AESndAccelerator::ReadMemory(u32 address)
|
||||||
{
|
{
|
||||||
return Core::System::GetInstance().GetDSP().ReadARAM(address);
|
return m_dsp.ReadARAM(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AESndAccelerator::WriteMemory(u32 address, u8 value)
|
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
|
static constexpr std::array<s16, 16> ACCELERATOR_COEFS = {}; // all zeros
|
||||||
|
@ -10,16 +10,32 @@
|
|||||||
#include "Core/DSP/DSPAccelerator.h"
|
#include "Core/DSP/DSPAccelerator.h"
|
||||||
#include "Core/HW/DSPHLE/UCodes/UCodes.h"
|
#include "Core/HW/DSPHLE/UCodes/UCodes.h"
|
||||||
|
|
||||||
|
namespace DSP
|
||||||
|
{
|
||||||
|
class DSPManager;
|
||||||
|
}
|
||||||
|
|
||||||
namespace DSP::HLE
|
namespace DSP::HLE
|
||||||
{
|
{
|
||||||
class DSPHLE;
|
class DSPHLE;
|
||||||
|
|
||||||
class AESndAccelerator final : public Accelerator
|
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:
|
protected:
|
||||||
void OnEndException() override;
|
void OnEndException() override;
|
||||||
u8 ReadMemory(u32 address) override;
|
u8 ReadMemory(u32 address) override;
|
||||||
void WriteMemory(u32 address, u8 value) override;
|
void WriteMemory(u32 address, u8 value) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DSP::DSPManager& m_dsp;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AESndUCode final : public UCodeInterface
|
class AESndUCode final : public UCodeInterface
|
||||||
|
Loading…
x
Reference in New Issue
Block a user