mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 07:09:48 -06:00
Move UDSPControl structure into DSP.h .
This commit is contained in:
@ -12,31 +12,6 @@ class CMixer;
|
|||||||
|
|
||||||
extern SoundStream *soundStream;
|
extern SoundStream *soundStream;
|
||||||
|
|
||||||
// UDSPControl
|
|
||||||
union UDSPControl
|
|
||||||
{
|
|
||||||
u16 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u16 DSPReset : 1; // Write 1 to reset and waits for 0
|
|
||||||
u16 DSPAssertInt : 1;
|
|
||||||
u16 DSPHalt : 1;
|
|
||||||
|
|
||||||
u16 AI : 1;
|
|
||||||
u16 AI_mask : 1;
|
|
||||||
u16 ARAM : 1;
|
|
||||||
u16 ARAM_mask : 1;
|
|
||||||
u16 DSP : 1;
|
|
||||||
u16 DSP_mask : 1;
|
|
||||||
|
|
||||||
u16 ARAM_DMAState : 1; // DSPGetDMAStatus() uses this flag
|
|
||||||
u16 DSPInitCode : 1;
|
|
||||||
u16 DSPInit : 1; // DSPInit() writes to this flag
|
|
||||||
u16 pad : 4;
|
|
||||||
};
|
|
||||||
UDSPControl(u16 _Hex = 0) : Hex(_Hex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace AudioCommon
|
namespace AudioCommon
|
||||||
{
|
{
|
||||||
SoundStream *InitSoundStream(CMixer *mixer, void *hWnd);
|
SoundStream *InitSoundStream(CMixer *mixer, void *hWnd);
|
||||||
|
@ -76,34 +76,6 @@ union UARAMCount
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// UDSPControl
|
|
||||||
#define DSP_CONTROL_MASK 0x0C07
|
|
||||||
union UDSPControl
|
|
||||||
{
|
|
||||||
u16 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// DSP Control
|
|
||||||
u16 DSPReset : 1; // Write 1 to reset and waits for 0
|
|
||||||
u16 DSPAssertInt : 1;
|
|
||||||
u16 DSPHalt : 1;
|
|
||||||
// Interrupt for DMA to the AI/speakers
|
|
||||||
u16 AID : 1;
|
|
||||||
u16 AID_mask : 1;
|
|
||||||
// ARAM DMA interrupt
|
|
||||||
u16 ARAM : 1;
|
|
||||||
u16 ARAM_mask : 1;
|
|
||||||
// DSP DMA interrupt
|
|
||||||
u16 DSP : 1;
|
|
||||||
u16 DSP_mask : 1;
|
|
||||||
// Other ???
|
|
||||||
u16 DMAState : 1; // DSPGetDMAStatus() uses this flag. __ARWaitForDMA() uses it too...maybe it's just general DMA flag
|
|
||||||
u16 unk3 : 1;
|
|
||||||
u16 DSPInit : 1; // DSPInit() writes to this flag
|
|
||||||
u16 pad : 4;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// DSPState
|
// DSPState
|
||||||
struct DSPState
|
struct DSPState
|
||||||
{
|
{
|
||||||
@ -394,7 +366,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
|
|||||||
if (tmpControl.DSP) g_dspState.DSPControl.DSP = 0;
|
if (tmpControl.DSP) g_dspState.DSPControl.DSP = 0;
|
||||||
|
|
||||||
// unknown
|
// unknown
|
||||||
g_dspState.DSPControl.unk3 = tmpControl.unk3;
|
g_dspState.DSPControl.DSPInitCode = tmpControl.DSPInitCode;
|
||||||
g_dspState.DSPControl.pad = tmpControl.pad;
|
g_dspState.DSPControl.pad = tmpControl.pad;
|
||||||
if (g_dspState.DSPControl.pad != 0)
|
if (g_dspState.DSPControl.pad != 0)
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,35 @@ enum
|
|||||||
ARAM_MASK = 0x00FFFFFF,
|
ARAM_MASK = 0x00FFFFFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// UDSPControl
|
||||||
|
#define DSP_CONTROL_MASK 0x0C07
|
||||||
|
union UDSPControl
|
||||||
|
{
|
||||||
|
u16 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
// DSP Control
|
||||||
|
u16 DSPReset : 1; // Write 1 to reset and waits for 0
|
||||||
|
u16 DSPAssertInt : 1;
|
||||||
|
u16 DSPHalt : 1;
|
||||||
|
// Interrupt for DMA to the AI/speakers
|
||||||
|
u16 AID : 1;
|
||||||
|
u16 AID_mask : 1;
|
||||||
|
// ARAM DMA interrupt
|
||||||
|
u16 ARAM : 1;
|
||||||
|
u16 ARAM_mask : 1;
|
||||||
|
// DSP DMA interrupt
|
||||||
|
u16 DSP : 1;
|
||||||
|
u16 DSP_mask : 1;
|
||||||
|
// Other ???
|
||||||
|
u16 DMAState : 1; // DSPGetDMAStatus() uses this flag. __ARWaitForDMA() uses it too...maybe it's just general DMA flag
|
||||||
|
u16 DSPInitCode : 1; // Indicator that the DSP was initialized?
|
||||||
|
u16 DSPInit : 1; // DSPInit() writes to this flag
|
||||||
|
u16 pad : 4;
|
||||||
|
};
|
||||||
|
UDSPControl(u16 _Hex = 0) : Hex(_Hex) {}
|
||||||
|
};
|
||||||
|
|
||||||
void Init(bool hle);
|
void Init(bool hle);
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ void DSPHLE::InitMixer()
|
|||||||
// Other DSP fuctions
|
// Other DSP fuctions
|
||||||
u16 DSPHLE::DSP_WriteControlRegister(unsigned short _Value)
|
u16 DSPHLE::DSP_WriteControlRegister(unsigned short _Value)
|
||||||
{
|
{
|
||||||
UDSPControl Temp(_Value);
|
DSP::UDSPControl Temp(_Value);
|
||||||
if (!m_InitMixer)
|
if (!m_InitMixer)
|
||||||
{
|
{
|
||||||
if (!Temp.DSPHalt)
|
if (!Temp.DSPHalt)
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "AudioCommon/SoundStream.h"
|
#include "AudioCommon/SoundStream.h"
|
||||||
|
|
||||||
#include "Core/DSPEmulator.h"
|
#include "Core/DSPEmulator.h"
|
||||||
|
#include "Core/HW/DSP.h"
|
||||||
#include "Core/HW/DSPHLE/MailHandler.h"
|
#include "Core/HW/DSPHLE/MailHandler.h"
|
||||||
|
|
||||||
class IUCode;
|
class IUCode;
|
||||||
@ -73,7 +74,7 @@ private:
|
|||||||
IUCode* m_pUCode;
|
IUCode* m_pUCode;
|
||||||
IUCode* m_lastUCode;
|
IUCode* m_lastUCode;
|
||||||
|
|
||||||
UDSPControl m_DSPControl;
|
DSP::UDSPControl m_DSPControl;
|
||||||
CMailHandler m_MailHandler;
|
CMailHandler m_MailHandler;
|
||||||
|
|
||||||
bool m_bHalt;
|
bool m_bHalt;
|
||||||
|
@ -192,13 +192,9 @@ void DSPLLE::InitMixer()
|
|||||||
|
|
||||||
u16 DSPLLE::DSP_WriteControlRegister(u16 _uFlag)
|
u16 DSPLLE::DSP_WriteControlRegister(u16 _uFlag)
|
||||||
{
|
{
|
||||||
UDSPControl Temp(_uFlag);
|
|
||||||
if (!m_InitMixer)
|
if (!m_InitMixer)
|
||||||
{
|
{
|
||||||
if (!Temp.DSPHalt)
|
InitMixer();
|
||||||
{
|
|
||||||
InitMixer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
DSPInterpreter::WriteCR(_uFlag);
|
DSPInterpreter::WriteCR(_uFlag);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user