mirror of
https://github.com/zeldaret/tp
synced 2026-06-30 03:48:59 -04:00
JASDriverIF, JASAiCtrl, JASDSPInterface (#1907)
* JASDriverIF * JASDriverIF sinit * JASAiCtrl * JASDSPInterface
This commit is contained in:
@@ -3,4 +3,57 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
enum JASOutputRate {
|
||||
OUTPUT_RATE_0,
|
||||
};
|
||||
|
||||
enum JASMixMode {
|
||||
MIX_MODE_MONO,
|
||||
MIX_MODE_MONO_WIDE,
|
||||
MIX_MODE_EXTRA,
|
||||
MIX_MODE_INTERLEAVE,
|
||||
};
|
||||
|
||||
namespace JASDriver {
|
||||
typedef s16* (*MixCallback)(s32);
|
||||
typedef void (*MixFunc)(s16*, u32, MixCallback);
|
||||
|
||||
/* 8029C388 */ void initAI(void (*)(void));
|
||||
/* 8029C4E4 */ void startDMA();
|
||||
/* 8029C504 */ void stopDMA();
|
||||
/* 8029C524 */ void setOutputRate(JASOutputRate);
|
||||
/* 8029C568 */ void updateDac();
|
||||
/* 8029C6C4 */ void updateDSP();
|
||||
/* 8029C7E0 */ void readDspBuffer(s16*, u32);
|
||||
/* 8029C900 */ void finishDSPFrame();
|
||||
/* 8029C9DC */ void registerMixCallback(MixCallback, JASMixMode);
|
||||
/* 8029C9E8 */ f32 getDacRate();
|
||||
/* 8029C9F0 */ u32 getSubFrames();
|
||||
/* 8029C9F8 */ u32 getDacSize();
|
||||
/* 8029CA04 */ u32 getFrameSamples();
|
||||
/* 8029CA10 */ void mixMonoTrack(s16*, u32, MixCallback);
|
||||
/* 8029CAC0 */ void mixMonoTrackWide(s16*, u32, MixCallback);
|
||||
/* 8029CB70 */ void mixExtraTrack(s16*, u32, MixCallback);
|
||||
/* 8029CC50 */ void mixInterleaveTrack(s16*, u32, MixCallback);
|
||||
/* 8029CCD4 */ u32 getSubFrameCounter();
|
||||
/* 8029E2A8 */ void subframeCallback();
|
||||
/* 8029E2D0 */ void DSPSyncCallback();
|
||||
|
||||
extern const MixFunc sMixFuncs[4];
|
||||
extern s16* sDmaDacBuffer[3];
|
||||
extern JASMixMode sMixMode;
|
||||
extern f32 sDacRate;
|
||||
extern u32 sSubFrames;
|
||||
extern s16** sDspDacBuffer;
|
||||
extern s32 sDspDacWriteBuffer;
|
||||
extern s32 sDspDacReadBuffer;
|
||||
extern s32 sDspStatus;
|
||||
extern void (*sDspDacCallback)(s16*, u32);
|
||||
extern s16* lastRspMadep;
|
||||
extern void (*dacCallbackFunc)(s16*, u32);
|
||||
extern MixCallback extMixCallback;
|
||||
extern u32 sOutputRate;
|
||||
extern u32 sSubFrameCounter;
|
||||
};
|
||||
|
||||
#endif /* JASAICTRL_H */
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
#ifndef JASAUDIORESETER_H
|
||||
#define JASAUDIORESETER_H
|
||||
|
||||
#include "dolphin/os/OSInterrupt.h"
|
||||
|
||||
struct JASCriticalSection {
|
||||
inline JASCriticalSection() {mInterruptState = OSDisableInterrupts();};
|
||||
inline ~JASCriticalSection() {OSRestoreInterrupts(mInterruptState);};
|
||||
u32 mInterruptState;
|
||||
};
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JASAudioReseter {
|
||||
/* 8029D0B4 */ JASAudioReseter();
|
||||
|
||||
@@ -19,6 +19,9 @@ struct JASAudioThread : public JKRThread, public JASGlobalInstance<JASAudioThrea
|
||||
/* 8029CFBC */ static void DSPCallback(void*);
|
||||
/* 8029D028 */ virtual ~JASAudioThread() {}
|
||||
|
||||
static int getDSPSyncCount() { return snIntCount; }
|
||||
static void setDSPSyncCount(u32 param_0) { snIntCount = param_0; }
|
||||
|
||||
/* 0x7c */ OSThreadQueue sThreadQueue;
|
||||
/* 0x84 */ bool sbPauseFlag; // type unsure
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef JASCRITICALSECTION_H
|
||||
#define JASCRITICALSECTION_H
|
||||
|
||||
#include "dolphin/os/OSInterrupt.h"
|
||||
|
||||
class JASCriticalSection {
|
||||
public:
|
||||
JASCriticalSection() { mInterruptState = OSDisableInterrupts(); };
|
||||
~JASCriticalSection() { OSRestoreInterrupts(mInterruptState); };
|
||||
|
||||
private:
|
||||
u32 mInterruptState;
|
||||
};
|
||||
|
||||
#endif /* JASCRITICALSECTION_H */
|
||||
@@ -3,4 +3,100 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JASWaveInfo;
|
||||
|
||||
namespace JASDsp {
|
||||
struct FxlineConfig_ {};
|
||||
|
||||
struct TChannel {
|
||||
/* 8029DCA4 */ void init();
|
||||
/* 8029DCE0 */ void playStart();
|
||||
/* 8029DD44 */ void playStop();
|
||||
/* 8029DD50 */ void replyFinishRequest();
|
||||
/* 8029DD60 */ void forceStop();
|
||||
/* 8029DD6C */ bool isActive() const;
|
||||
/* 8029DD7C */ bool isFinish() const;
|
||||
/* 8029DD8C */ void setWaveInfo(JASWaveInfo const&, u32, u32);
|
||||
/* 8029DEAC */ void setOscInfo(u32);
|
||||
/* 8029DEC4 */ void initAutoMixer();
|
||||
/* 8029DEF0 */ void setAutoMixer(u16, u8, u8, u8, u8);
|
||||
/* 8029DF1C */ void setPitch(u16);
|
||||
/* 8029DF34 */ void setMixerInitVolume(u8, s16);
|
||||
/* 8029DF54 */ void setMixerVolume(u8, s16);
|
||||
/* 8029DF80 */ void setPauseFlag(u8);
|
||||
/* 8029DF8C */ void flush();
|
||||
/* 8029DFB0 */ void initFilter();
|
||||
/* 8029E00C */ void setFilterMode(u16);
|
||||
/* 8029E044 */ void setIIRFilterParam(s16*);
|
||||
/* 8029E06C */ void setFIR8FilterParam(s16*);
|
||||
/* 8029E094 */ void setDistFilter(s16);
|
||||
/* 8029E09C */ void setBusConnect(u8, u8);
|
||||
|
||||
/* 0x000 */ u16 mIsActive;
|
||||
/* 0x002 */ u16 mIsFinished;
|
||||
/* 0x004 */ u16 mPitch;
|
||||
/* 0x006 */ short field_0x006;
|
||||
/* 0x008 */ short field_0x008;
|
||||
/* 0x00A */ u8 field_0x00A[0x00C - 0x00A];
|
||||
/* 0x00C */ s16 mPauseFlag;
|
||||
/* 0x00E */ short field_0x00E;
|
||||
/* 0x010 */ u16 field_0x010[1][4]; // array size unknown
|
||||
/* 0x018 */ u8 field_0x018[0x050 - 0x018];
|
||||
/* 0x050 */ short field_0x050;
|
||||
/* 0x052 */ u16 field_0x052;
|
||||
/* 0x054 */ u16 field_0x054;
|
||||
/* 0x056 */ u16 field_0x056;
|
||||
/* 0x058 */ u16 field_0x058;
|
||||
/* 0x05A */ u8 field_0x05A[0x060 - 0x05A];
|
||||
/* 0x060 */ short field_0x060;
|
||||
/* 0x062 */ u8 field_0x062[0x064 - 0x062];
|
||||
/* 0x064 */ short field_0x064;
|
||||
/* 0x066 */ short field_0x066;
|
||||
/* 0x068 */ int field_0x068;
|
||||
/* 0x06C */ u8 field_0x06C[0x070 - 0x06C];
|
||||
/* 0x070 */ int field_0x070;
|
||||
/* 0x074 */ int field_0x074;
|
||||
/* 0x078 */ short field_0x078[4];
|
||||
/* 0x080 */ short field_0x080[20];
|
||||
/* 0x0A8 */ short field_0x0a8[4];
|
||||
/* 0x0B0 */ u16 field_0x0b0[16];
|
||||
/* 0x0D0 */ u8 field_0x0D0[0x100 - 0x0D0];
|
||||
/* 0x100 */ u16 field_0x100;
|
||||
/* 0x102 */ u16 field_0x102;
|
||||
/* 0x104 */ s16 field_0x104;
|
||||
/* 0x106 */ s16 field_0x106;
|
||||
/* 0x108 */ u16 mFilterMode;
|
||||
/* 0x10A */ u16 mForcedStop;
|
||||
/* 0x10C */ int field_0x10c;
|
||||
/* 0x110 */ u32 field_0x110;
|
||||
/* 0x114 */ u32 field_0x114;
|
||||
/* 0x118 */ u32 field_0x118;
|
||||
/* 0x11C */ int field_0x11c;
|
||||
/* 0x120 */ s16 fir_filter_params[8];
|
||||
/* 0x130 */ u8 field_0x130[0x148 - 0x130];
|
||||
/* 0x148 */ s16 iir_filter_params[8];
|
||||
/* 0x158 */ u8 field_0x158[0x180 - 0x158];
|
||||
};
|
||||
|
||||
/* 8029D958 */ void boot(void (*)(void*));
|
||||
/* 8029D9A4 */ void releaseHalt(u32);
|
||||
/* 8029D9C4 */ void finishWork(u16);
|
||||
/* 8029D9E4 */ void syncFrame(u32, u32, u32);
|
||||
/* 8029DA04 */ void setDSPMixerLevel(f32);
|
||||
/* 8029DA30 */ f32 getDSPMixerLevel();
|
||||
/* 8029DA38 */ TChannel* getDSPHandle(int);
|
||||
/* 8029DA48 */ void setFilterTable(s16*, s16*, u32);
|
||||
/* 8029DA6C */ void flushBuffer();
|
||||
/* 8029DAA0 */ void invalChannelAll();
|
||||
/* 8029DAC8 */ void initBuffer();
|
||||
/* 8029DB78 */ void setFXLine(u8, s16*, JASDsp::FxlineConfig_*);
|
||||
|
||||
extern u8 const DSPADPCM_FILTER[64];
|
||||
extern void* const DSPRES_FILTER[320];
|
||||
extern u16 SEND_TABLE[12 + 12 /* padding */];
|
||||
extern TChannel* CH_BUF;
|
||||
extern void* FX_BUF;
|
||||
extern f32 sDSPVolume;
|
||||
};
|
||||
|
||||
#endif /* JASDSPINTERFACE_H */
|
||||
|
||||
@@ -1,37 +1,29 @@
|
||||
#ifndef JASDRIVERIF_H
|
||||
#define JASDRIVERIF_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JAudio2/JASCallback.h"
|
||||
|
||||
typedef s32 (*DriverCallback)(void*);
|
||||
|
||||
struct JASDriver {
|
||||
/* 8029E130 */ static void setDSPLevel(f32);
|
||||
namespace JASDriver {
|
||||
/* 8029E130 */ void setDSPLevel(f32);
|
||||
/* 8029E150 */ u16 getChannelLevel_dsp();
|
||||
/* 8029E158 */ static f32 getDSPLevel();
|
||||
/* 8029E178 */ static void setOutputMode(u32);
|
||||
/* 8029E158 */ f32 getDSPLevel();
|
||||
/* 8029E178 */ void setOutputMode(u32);
|
||||
/* 8029E180 */ u32 getOutputMode();
|
||||
/* 8029E188 */ void waitSubFrame();
|
||||
/* 8029E1C4 */ void rejectCallback(DriverCallback, void*);
|
||||
/* 8029E240 */ static bool registerDspSyncCallback(DriverCallback, void*);
|
||||
/* 8029E274 */ static bool registerSubFrameCallback(DriverCallback, void*);
|
||||
/* 8029E1C4 */ int rejectCallback(DriverCallback, void*);
|
||||
/* 8029E240 */ bool registerDspSyncCallback(DriverCallback, void*);
|
||||
/* 8029E274 */ bool registerSubFrameCallback(DriverCallback, void*);
|
||||
/* 8029E2A8 */ void subframeCallback();
|
||||
/* 8029E2D0 */ void DSPSyncCallback();
|
||||
/* 8029E2F8 */ void updateDacCallback();
|
||||
/* 8029C9F0 */ static u32 getSubFrames();
|
||||
static void initAI(void (*)());
|
||||
static void startDMA();
|
||||
static void stopDMA();
|
||||
static void updateDac();
|
||||
static void updateDacCallback();
|
||||
static void finishDSPFrame();
|
||||
static void updateDSP();
|
||||
|
||||
static u8 sDspSyncCallback[256];
|
||||
static u8 sSubFrameCallback[256];
|
||||
static u8 sUpdateDacCallback[256 + 8 /* padding */];
|
||||
static u16 MAX_MIXERLEVEL[1 + 1 /* padding */];
|
||||
static u32 JAS_SYSTEM_OUTPUT_MODE;
|
||||
extern JASCallbackMgr sDspSyncCallback;
|
||||
extern JASCallbackMgr sSubFrameCallback;
|
||||
extern JASCallbackMgr sUpdateDacCallback;
|
||||
extern u16 MAX_MIXERLEVEL;
|
||||
extern u32 JAS_SYSTEM_OUTPUT_MODE;
|
||||
};
|
||||
|
||||
#endif /* JASDRIVERIF_H */
|
||||
|
||||
@@ -9,6 +9,8 @@ struct JASLfo {
|
||||
/* 8029BDD8 */ void incCounter(f32);
|
||||
/* 8029BE2C */ void resetCounter();
|
||||
|
||||
static void updateFreeRun(f32 param_0) { sFreeRunLfo.incCounter(param_0); }
|
||||
|
||||
static JASLfo sFreeRunLfo;
|
||||
|
||||
/* 0x00 */ u32 field_0x0;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef JASWAVEINFO_H
|
||||
#define JASWAVEINFO_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JASWaveInfo {
|
||||
/* 0x00 */ u8 field_0x00;
|
||||
/* 0x01 */ u8 field_0x01;
|
||||
/* 0x02 */ u8 field_0x02;
|
||||
/* 0x04 */ int field_0x04;
|
||||
/* 0x08 */ int field_0x08;
|
||||
/* 0x0C */ int field_0x0c;
|
||||
/* 0x10 */ u32 field_0x10;
|
||||
/* 0x14 */ int field_0x14;
|
||||
/* 0x18 */ int field_0x18;
|
||||
/* 0x1C */ s16 field_0x1c;
|
||||
/* 0x1E */ s16 field_0x1e;
|
||||
/* 0x20 */ void* field_0x20;
|
||||
|
||||
static u32 one[1 + 1 /* padding */];
|
||||
};
|
||||
|
||||
#endif /* JASWAVEINFO_H */
|
||||
@@ -1,5 +1,9 @@
|
||||
#ifndef DSPTASK_H
|
||||
#define DSPTASK_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
void DspBoot(void (*)(void*));
|
||||
void DspFinishWork(u16 param_0);
|
||||
|
||||
#endif /* DSPTASK_H */
|
||||
|
||||
@@ -17,4 +17,6 @@ void __DSPHandler(OSInterrupt interrupt, OSContext* context);
|
||||
}
|
||||
#endif
|
||||
|
||||
void DsyncFrame2(u32 param_0, u32 param_1, u32 param_2);
|
||||
|
||||
#endif /* OSDSP_TASK_H */
|
||||
|
||||
Reference in New Issue
Block a user