mirror of https://github.com/zeldaret/tp.git
60 lines
1.5 KiB
C++
60 lines
1.5 KiB
C++
#ifndef JASAICTRL_H
|
|
#define JASAICTRL_H
|
|
|
|
#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);
|
|
|
|
void initAI(void (*)(void));
|
|
void startDMA();
|
|
void stopDMA();
|
|
void setOutputRate(JASOutputRate);
|
|
void updateDac();
|
|
void updateDSP();
|
|
void readDspBuffer(s16*, u32);
|
|
void finishDSPFrame();
|
|
void registerMixCallback(MixCallback, JASMixMode);
|
|
f32 getDacRate();
|
|
u32 getSubFrames();
|
|
u32 getDacSize();
|
|
u32 getFrameSamples();
|
|
void mixMonoTrack(s16*, u32, MixCallback);
|
|
void mixMonoTrackWide(s16*, u32, MixCallback);
|
|
void mixExtraTrack(s16*, u32, MixCallback);
|
|
void mixInterleaveTrack(s16*, u32, MixCallback);
|
|
u32 getSubFrameCounter();
|
|
void subframeCallback();
|
|
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 */
|