mirror of
https://github.com/zeldaret/tp
synced 2026-08-18 13:43:24 -04:00
JASDriverIF, JASAiCtrl, JASDSPInterface (#1907)
* JASDriverIF * JASDriverIF sinit * JASAiCtrl * JASDSPInterface
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
#include "JSystem/JAudio2/JAISeq.h"
|
||||
#include "JSystem/JAudio2/JAISeqMgr.h"
|
||||
#include "JSystem/JAudio2/JASAudioReseter.h" // JASCriticalSection
|
||||
#include "JSystem/JAudio2/JASCriticalSection.h"
|
||||
#include "JSystem/JAudio2/JAISoundChild.h"
|
||||
#include "JSystem/JAudio2/JAIAudience.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
|
||||
+280
-174
@@ -4,98 +4,36 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASAiCtrl.h"
|
||||
#include "JSystem/JAudio2/JASAudioThread.h"
|
||||
#include "JSystem/JAudio2/JASCalc.h"
|
||||
#include "JSystem/JAudio2/JASCriticalSection.h"
|
||||
#include "JSystem/JAudio2/JASDSPInterface.h"
|
||||
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
||||
#include "JSystem/JAudio2/JASLfo.h"
|
||||
#include "JSystem/JAudio2/JASProbe.h"
|
||||
#include "JSystem/JAudio2/JASReport.h"
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/ai/ai.h"
|
||||
#include "dolphin/os/OSCache.h"
|
||||
#include "dolphin/os/OSTime.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRHeap {};
|
||||
|
||||
struct JASProbe {
|
||||
/* 80290EE4 */ void start(s32, char const*);
|
||||
/* 80290F24 */ void stop(s32);
|
||||
};
|
||||
|
||||
struct JASPortCmd {
|
||||
/* 80291060 */ void execAllCommand();
|
||||
};
|
||||
|
||||
struct JASOutputRate {};
|
||||
|
||||
struct JASMixMode {};
|
||||
|
||||
struct JASLfo {
|
||||
/* 8029BDD8 */ void incCounter(f32);
|
||||
|
||||
static u8 sFreeRunLfo[24];
|
||||
};
|
||||
|
||||
struct JASDsp {
|
||||
/* 8029D9E4 */ void syncFrame(u32, u32, u32);
|
||||
/* 8029DAA0 */ void invalChannelAll();
|
||||
};
|
||||
|
||||
struct JASDriver {
|
||||
/* 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(s16* (*)(s32), JASMixMode);
|
||||
/* 8029C9E8 */ void getDacRate();
|
||||
/* 8029C9F0 */ u32 getSubFrames();
|
||||
/* 8029C9F8 */ void getDacSize();
|
||||
/* 8029CA04 */ void getFrameSamples();
|
||||
/* 8029CA10 */ void mixMonoTrack(s16*, u32, s16* (*)(s32));
|
||||
/* 8029CAC0 */ void mixMonoTrackWide(s16*, u32, s16* (*)(s32));
|
||||
/* 8029CB70 */ void mixExtraTrack(s16*, u32, s16* (*)(s32));
|
||||
/* 8029CC50 */ void mixInterleaveTrack(s16*, u32, s16* (*)(s32));
|
||||
/* 8029CCD4 */ u32 getSubFrameCounter();
|
||||
/* 8029E2A8 */ void subframeCallback();
|
||||
/* 8029E2D0 */ void DSPSyncCallback();
|
||||
|
||||
static void* const sMixFuncs[4];
|
||||
static u8 sDmaDacBuffer[12 + 4 /* padding */];
|
||||
static u32 sMixMode;
|
||||
static f32 sDacRate;
|
||||
static u32 sSubFrames;
|
||||
static u8 sDspDacBuffer[4];
|
||||
static u8 sDspDacWriteBuffer[4];
|
||||
static u8 sDspDacReadBuffer[4];
|
||||
static u8 sDspStatus[4];
|
||||
static u8 sDspDacCallback[4];
|
||||
static u8 lastRspMadep[4];
|
||||
static u8 dacCallbackFunc[4];
|
||||
static u8 extMixCallback[4];
|
||||
static u8 sOutputRate[4];
|
||||
static u8 sSubFrameCounter[4];
|
||||
/* 80291060 */ static void execAllCommand();
|
||||
};
|
||||
|
||||
struct JASDSPChannel {
|
||||
/* 8029D89C */ void updateAll();
|
||||
/* 8029D910 */ void killActiveChannel();
|
||||
/* 8029D89C */ static void updateAll();
|
||||
/* 8029D910 */ static void killActiveChannel();
|
||||
};
|
||||
|
||||
struct JASChannel {
|
||||
/* 8029BC0C */ void initBankDisposeMsgQueue();
|
||||
/* 8029BC48 */ void receiveBankDisposeMsg();
|
||||
};
|
||||
|
||||
struct JASCalc {
|
||||
/* 8028F2E8 */ void imixcopy(s16 const*, s16 const*, s16*, u32);
|
||||
/* 8028F480 */ void bzero(void*, u32);
|
||||
template <typename A1, typename B1>
|
||||
void clamp(/* ... */);
|
||||
/* 8028F69C */ /* JASCalc::clamp<s16, s32> */
|
||||
void func_8028F69C(void* _this, s32);
|
||||
};
|
||||
|
||||
struct JASAudioThread {
|
||||
static u8 snIntCount[4 + 4 /* padding */];
|
||||
/* 8029BC0C */ static void initBankDisposeMsgQueue();
|
||||
/* 8029BC48 */ static void receiveBankDisposeMsg();
|
||||
};
|
||||
|
||||
//
|
||||
@@ -115,10 +53,10 @@ extern "C" void getDacRate__9JASDriverFv();
|
||||
extern "C" u32 getSubFrames__9JASDriverFv();
|
||||
extern "C" void getDacSize__9JASDriverFv();
|
||||
extern "C" void getFrameSamples__9JASDriverFv();
|
||||
extern "C" void mixMonoTrack__9JASDriverFPsUlPFl_Ps();
|
||||
extern "C" void mixMonoTrackWide__9JASDriverFPsUlPFl_Ps();
|
||||
extern "C" void mixExtraTrack__9JASDriverFPsUlPFl_Ps();
|
||||
extern "C" void mixInterleaveTrack__9JASDriverFPsUlPFl_Ps();
|
||||
extern "C" void mixMonoTrack(s16*, u32, s16* (*)(s32));
|
||||
extern "C" void mixMonoTrackWide(s16*, u32, s16* (*)(s32));
|
||||
extern "C" void mixExtraTrack(s16*, u32, s16* (*)(s32));
|
||||
extern "C" void mixInterleaveTrack(s16*, u32, s16* (*)(s32));
|
||||
extern "C" u32 getSubFrameCounter__9JASDriverFv();
|
||||
extern "C" void* const sMixFuncs__9JASDriver[4];
|
||||
extern "C" extern char const* const JASAiCtrl__stringBase0;
|
||||
@@ -158,17 +96,6 @@ extern "C" void invalChannelAll__6JASDspFv();
|
||||
extern "C" void subframeCallback__9JASDriverFv();
|
||||
extern "C" void DSPSyncCallback__9JASDriverFv();
|
||||
extern "C" void* __nwa__FUlP7JKRHeapi();
|
||||
extern "C" void DCInvalidateRange();
|
||||
extern "C" void DCStoreRange();
|
||||
extern "C" void OSDisableInterrupts();
|
||||
extern "C" void OSRestoreInterrupts();
|
||||
extern "C" void OSGetTick();
|
||||
extern "C" void AIRegisterDMACallback();
|
||||
extern "C" void AIInitDMA();
|
||||
extern "C" void AIStartDMA();
|
||||
extern "C" void AIStopDMA();
|
||||
extern "C" void AISetDSPSampleRate();
|
||||
extern "C" void AIInit();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_28();
|
||||
@@ -178,7 +105,6 @@ extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" u8 sFreeRunLfo__6JASLfo[24];
|
||||
extern "C" extern u8 JASDram[4];
|
||||
extern "C" u8 snIntCount__14JASAudioThread[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
@@ -187,39 +113,65 @@ extern "C" u8 snIntCount__14JASAudioThread[4 + 4 /* padding */];
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80431C58-80431C68 05E978 000C+04 2/2 0/0 0/0 .bss sDmaDacBuffer__9JASDriver */
|
||||
u8 JASDriver::sDmaDacBuffer[12 + 4 /* padding */];
|
||||
s16* JASDriver::sDmaDacBuffer[3];
|
||||
|
||||
/* 804507A8-804507AC 000228 0004+00 3/3 0/0 0/0 .sdata None */
|
||||
SECTION_SDATA static u32 data_804507A8 = 0x03000000;
|
||||
SECTION_SDATA static u8 data_804507A8 = 3;
|
||||
|
||||
/* 804512A0-804512A4 0007A0 0004+00 3/3 0/0 0/0 .sbss sDspDacBuffer__9JASDriver */
|
||||
u8 JASDriver::sDspDacBuffer[4];
|
||||
s16** JASDriver::sDspDacBuffer;
|
||||
|
||||
/* 804512A4-804512A8 0007A4 0004+00 3/3 0/0 0/0 .sbss sDspDacWriteBuffer__9JASDriver */
|
||||
u8 JASDriver::sDspDacWriteBuffer[4];
|
||||
s32 JASDriver::sDspDacWriteBuffer;
|
||||
|
||||
/* 804512A8-804512AC 0007A8 0004+00 3/3 0/0 0/0 .sbss sDspDacReadBuffer__9JASDriver */
|
||||
u8 JASDriver::sDspDacReadBuffer[4];
|
||||
s32 JASDriver::sDspDacReadBuffer;
|
||||
|
||||
/* 804512AC-804512B0 0007AC 0004+00 3/3 0/0 0/0 .sbss sDspStatus__9JASDriver */
|
||||
u8 JASDriver::sDspStatus[4];
|
||||
s32 JASDriver::sDspStatus;
|
||||
|
||||
/* 804512B0-804512B4 0007B0 0004+00 1/1 0/0 0/0 .sbss sDspDacCallback__9JASDriver */
|
||||
u8 JASDriver::sDspDacCallback[4];
|
||||
void (*JASDriver::sDspDacCallback)(s16*, u32);
|
||||
|
||||
/* 804512B4-804512B8 0007B4 0004+00 1/1 0/0 0/0 .sbss lastRspMadep__9JASDriver */
|
||||
u8 JASDriver::lastRspMadep[4];
|
||||
s16* JASDriver::lastRspMadep;
|
||||
|
||||
/* 804512B8-804512BC 0007B8 0004+00 1/1 0/0 0/0 .sbss dacCallbackFunc__9JASDriver */
|
||||
u8 JASDriver::dacCallbackFunc[4];
|
||||
void (*JASDriver::dacCallbackFunc)(s16*, u32);
|
||||
|
||||
/* 804512BC-804512C0 0007BC 0004+00 2/2 0/0 0/0 .sbss extMixCallback__9JASDriver */
|
||||
u8 JASDriver::extMixCallback[4];
|
||||
JASDriver::MixCallback JASDriver::extMixCallback;
|
||||
|
||||
/* 804512C0-804512C4 0007C0 0004+00 2/2 0/0 0/0 .sbss sOutputRate__9JASDriver */
|
||||
u8 JASDriver::sOutputRate[4];
|
||||
u32 JASDriver::sOutputRate;
|
||||
|
||||
/* 8029C388-8029C4E4 296CC8 015C+00 0/0 1/1 0/0 .text initAI__9JASDriverFPFv_v */
|
||||
// missing instructions
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::initAI(void (*param_0)(void)) {
|
||||
setOutputRate(OUTPUT_RATE_0);
|
||||
u32 size = getDacSize() * 2;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
sDmaDacBuffer[i] = new(JASDram, 0x20) s16[size / 2];
|
||||
JASCalc::bzero(sDmaDacBuffer[i], size);
|
||||
DCStoreRange(sDmaDacBuffer[i], size);
|
||||
}
|
||||
sDspDacBuffer = new(JASDram, 0) void*[data_804507A8];
|
||||
for (int i = 0; i < data_804507A8; i++) {
|
||||
sDspDacBuffer[i] = new(JASDram, 0x20) s16[getDacSize()];
|
||||
JASCalc::bzero(sDspDacBuffer[i], size);
|
||||
DCStoreRange(sDspDacBuffer[i], size);
|
||||
}
|
||||
sDspDacWriteBuffer = data_804507A8 - 1;
|
||||
sDspDacReadBuffer = 0;
|
||||
sDspStatus = 0;
|
||||
JASChannel::initBankDisposeMsgQueue();
|
||||
AIInit(NULL);
|
||||
AIInitDMA((u32)sDmaDacBuffer[2], size);
|
||||
AISetDSPSampleRate(sOutputRate != 0);
|
||||
AIRegisterDMACallback(param_0);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -228,30 +180,22 @@ asm void JASDriver::initAI(void (*param_0)(void)) {
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/initAI__9JASDriverFPFv_v.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029C4E4-8029C504 296E24 0020+00 0/0 1/1 0/0 .text startDMA__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::startDMA() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/startDMA__9JASDriverFv.s"
|
||||
void JASDriver::startDMA() {
|
||||
AIStartDMA();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029C504-8029C524 296E44 0020+00 0/0 1/1 0/0 .text stopDMA__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::stopDMA() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/stopDMA__9JASDriverFv.s"
|
||||
|
||||
void JASDriver::stopDMA() {
|
||||
AIStopDMA();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804507AC-804507B0 00022C 0004+00 2/2 0/0 0/0 .sdata sMixMode__9JASDriver */
|
||||
SECTION_SDATA u32 JASDriver::sMixMode = 0x00000002;
|
||||
SECTION_SDATA JASMixMode JASDriver::sMixMode = MIX_MODE_EXTRA;
|
||||
|
||||
/* 804507B0-804507B4 000230 0004+00 2/2 0/0 0/0 .sdata sDacRate__9JASDriver */
|
||||
SECTION_SDATA f32 JASDriver::sDacRate = 32028.5f;
|
||||
@@ -269,6 +213,20 @@ SECTION_SDATA2 static f32 lit_234 = 48000.0f;
|
||||
SECTION_SDATA2 static f32 lit_235 = 1.0008896589279175f;
|
||||
|
||||
/* 8029C524-8029C568 296E64 0044+00 1/1 0/0 0/0 .text setOutputRate__9JASDriverF13JASOutputRate */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::setOutputRate(JASOutputRate param_0) {
|
||||
sOutputRate = param_0;
|
||||
if (param_0 == 0) {
|
||||
sSubFrames = 7;
|
||||
sDacRate = 32000.0f;
|
||||
} else {
|
||||
sSubFrames = 10;
|
||||
sDacRate = 48000.0f;
|
||||
}
|
||||
sDacRate *= 1.00089f;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -277,27 +235,59 @@ asm void JASDriver::setOutputRate(JASOutputRate param_0) {
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/setOutputRate__9JASDriverF13JASOutputRate.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2E0-8039B2F0 -00001 0010+00 1/1 0/0 0/0 .rodata sMixFuncs__9JASDriver */
|
||||
SECTION_RODATA void* const JASDriver::sMixFuncs[4] = {
|
||||
(void*)mixMonoTrack__9JASDriverFPsUlPFl_Ps,
|
||||
(void*)mixMonoTrackWide__9JASDriverFPsUlPFl_Ps,
|
||||
(void*)mixExtraTrack__9JASDriverFPsUlPFl_Ps,
|
||||
(void*)mixInterleaveTrack__9JASDriverFPsUlPFl_Ps,
|
||||
SECTION_RODATA const JASDriver::MixFunc JASDriver::sMixFuncs[4] = {
|
||||
mixMonoTrack,
|
||||
mixMonoTrackWide,
|
||||
mixExtraTrack,
|
||||
mixInterleaveTrack,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x8039B2E0, &JASDriver::sMixFuncs);
|
||||
|
||||
/* 804512C4-804512C8 0007C4 0004+00 2/1 0/0 0/0 .sbss sSubFrameCounter__9JASDriver */
|
||||
u8 JASDriver::sSubFrameCounter[4];
|
||||
u32 JASDriver::sSubFrameCounter;
|
||||
|
||||
/* 804512C8-804512CC 0007C8 0004+00 1/1 0/0 0/0 .sbss dacp$239 */
|
||||
static u8 dacp[4];
|
||||
static u32 dacp;
|
||||
|
||||
/* 804512CC-804512D0 0007CC 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_804512CC[4];
|
||||
|
||||
/* 8029C568-8029C6C4 296EA8 015C+00 0/0 1/1 0/0 .text updateDac__9JASDriverFv */
|
||||
// regswap
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::updateDac() {
|
||||
static u32 dacp = 0;
|
||||
s16* r30 = lastRspMadep;
|
||||
lastRspMadep = NULL;
|
||||
if (r30) {
|
||||
AIInitDMA((u32)r30, getDacSize() * 2);
|
||||
}
|
||||
u32 frameSamples = getFrameSamples();
|
||||
readDspBuffer(sDmaDacBuffer[dacp], frameSamples);
|
||||
if (sDspStatus == 0) {
|
||||
finishDSPFrame();
|
||||
}
|
||||
if (extMixCallback) {
|
||||
sMixFuncs[sMixMode](sDmaDacBuffer[dacp], frameSamples, extMixCallback);
|
||||
}
|
||||
{
|
||||
JASCriticalSection cs;
|
||||
DCStoreRange(sDmaDacBuffer[dacp], getDacSize() * 2);
|
||||
}
|
||||
lastRspMadep = sDmaDacBuffer[dacp];
|
||||
dacp++;
|
||||
if (dacp >= 3) {
|
||||
dacp = 0;
|
||||
}
|
||||
if (dacCallbackFunc) {
|
||||
dacCallbackFunc(lastRspMadep, getFrameSamples());
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -306,6 +296,7 @@ asm void JASDriver::updateDac() {
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/updateDac__9JASDriverFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -316,14 +307,12 @@ SECTION_DEAD static char const* const stringBase_8039B2FB = "kill DSP channel";
|
||||
#pragma pop
|
||||
|
||||
/* 803C78B8-803C78E0 0249D8 0028+00 1/1 0/0 0/0 .data history$267 */
|
||||
SECTION_DATA static u8 history[40] = {
|
||||
0x00, 0x0F, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA static u32 history[10] = {
|
||||
0x000F4240,
|
||||
};
|
||||
|
||||
/* 804512D0-804512D4 0007D0 0004+00 1/1 0/0 0/0 .sbss old_time$264 */
|
||||
static u8 old_time[4];
|
||||
static u32 old_time;
|
||||
|
||||
/* 804512D4-804512D8 0007D4 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_804512D4[4];
|
||||
@@ -342,6 +331,32 @@ SECTION_SDATA2 static f32 lit_276[1 + 1 /* padding */] = {
|
||||
SECTION_SDATA2 static f64 lit_278 = 4503599627370496.0 /* cast u32 to float */;
|
||||
|
||||
/* 8029C6C4-8029C7E0 297004 011C+00 1/1 1/1 0/0 .text updateDSP__9JASDriverFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::updateDSP() {
|
||||
JASProbe::start(3, "SFR-UPDATE");
|
||||
JASDsp::invalChannelAll();
|
||||
JASPortCmd::execAllCommand();
|
||||
DSPSyncCallback();
|
||||
static u32 old_time = 0;
|
||||
u32 r28 = OSGetTick();
|
||||
u32 r27 = r28 - old_time;
|
||||
old_time = r28;
|
||||
u32 subFrame = getSubFrames();
|
||||
int r26 = JASAudioThread::getDSPSyncCount();
|
||||
history[subFrame - r26] = r27;
|
||||
if (subFrame != r26 && f32(history[0]) / r27 < 1.1f) {
|
||||
JASReport("kill DSP channel");
|
||||
JASDSPChannel::killActiveChannel();
|
||||
}
|
||||
JASChannel::receiveBankDisposeMsg();
|
||||
JASDSPChannel::updateAll();
|
||||
subframeCallback();
|
||||
JASLfo::updateFreeRun(32028.5f / getDacRate());
|
||||
JASProbe::stop(3);
|
||||
sSubFrameCounter++;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -350,8 +365,32 @@ asm void JASDriver::updateDSP() {
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/updateDSP__9JASDriverFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029C7E0-8029C900 297120 0120+00 1/1 0/0 0/0 .text readDspBuffer__9JASDriverFPsUl */
|
||||
// missing instruction
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::readDspBuffer(s16* param_0, u32 param_1) {
|
||||
s32 r29 = sDspDacReadBuffer + 1;
|
||||
if (r29 == data_804507A8) {
|
||||
r29 = 0;
|
||||
}
|
||||
if (r29 == sDspDacWriteBuffer && data_804507A8 >= 3) {
|
||||
s16 r25 = sDspDacBuffer[sDspDacReadBuffer][param_1 / 2 - 1];
|
||||
s16 r24 = sDspDacBuffer[sDspDacReadBuffer][param_1 - 1];
|
||||
for (int i = 0; i < param_1; i++) {
|
||||
sDspDacBuffer[sDspDacReadBuffer][i] = r25;
|
||||
}
|
||||
for (int i = param_1; i < param_1 * 2; i++) {
|
||||
sDspDacBuffer[sDspDacReadBuffer][i] = r24;
|
||||
}
|
||||
} else {
|
||||
sDspDacReadBuffer = r29;
|
||||
DCInvalidateRange(sDspDacBuffer[r29], param_1 * 4);
|
||||
}
|
||||
JASCalc::imixcopy(sDspDacBuffer[sDspDacReadBuffer] + param_1, sDspDacBuffer[sDspDacReadBuffer], param_0, param_1);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -360,6 +399,7 @@ asm void JASDriver::readDspBuffer(s16* param_0, u32 param_1) {
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/readDspBuffer__9JASDriverFPsUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -369,60 +409,53 @@ SECTION_DEAD static char const* const stringBase_8039B30C = "DSP-MAIN";
|
||||
#pragma pop
|
||||
|
||||
/* 8029C900-8029C9DC 297240 00DC+00 1/1 1/1 0/0 .text finishDSPFrame__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::finishDSPFrame() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/finishDSPFrame__9JASDriverFv.s"
|
||||
void JASDriver::finishDSPFrame() {
|
||||
int r30 = sDspDacWriteBuffer + 1;
|
||||
if (r30 == data_804507A8) {
|
||||
r30 = 0;
|
||||
}
|
||||
if (r30 == sDspDacReadBuffer) {
|
||||
sDspStatus = 0;
|
||||
return;
|
||||
}
|
||||
sDspDacWriteBuffer = r30;
|
||||
JASAudioThread::setDSPSyncCount(getSubFrames());
|
||||
JASProbe::start(7, "DSP-MAIN");
|
||||
u32 r27 = getFrameSamples();
|
||||
JASDsp::syncFrame(getSubFrames(), u32(sDspDacBuffer[sDspDacWriteBuffer]), u32(sDspDacBuffer[sDspDacWriteBuffer] + r27));
|
||||
sDspStatus = 1;
|
||||
updateDSP();
|
||||
if (sDspDacCallback) {
|
||||
sDspDacCallback(sDspDacBuffer[sDspDacWriteBuffer], r27);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029C9DC-8029C9E8 29731C 000C+00 0/0 0/0 2/2 .text
|
||||
* registerMixCallback__9JASDriverFPFl_Ps10JASMixMode */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::registerMixCallback(s16* (*param_0)(s32), JASMixMode param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/registerMixCallback__9JASDriverFPFl_Ps10JASMixMode.s"
|
||||
void JASDriver::registerMixCallback(MixCallback param_0, JASMixMode param_1) {
|
||||
extMixCallback = param_0;
|
||||
sMixMode = param_1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029C9E8-8029C9F0 297328 0008+00 1/1 5/5 0/0 .text getDacRate__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::getDacRate() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/getDacRate__9JASDriverFv.s"
|
||||
f32 JASDriver::getDacRate() {
|
||||
return sDacRate;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029C9F0-8029C9F8 -00001 0008+00 0/0 0/0 0/0 .text getSubFrames__9JASDriverFv */
|
||||
u32 JASDriver::getSubFrames() {
|
||||
return *(u32*)(&JASDriver::sSubFrames);
|
||||
return sSubFrames;
|
||||
}
|
||||
|
||||
/* 8029C9F8-8029CA04 297338 000C+00 2/2 0/0 0/0 .text getDacSize__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::getDacSize() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/getDacSize__9JASDriverFv.s"
|
||||
u32 JASDriver::getDacSize() {
|
||||
return sSubFrames * 0xa0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029CA04-8029CA10 297344 000C+00 3/3 0/0 0/0 .text getFrameSamples__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::getFrameSamples() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/getFrameSamples__9JASDriverFv.s"
|
||||
u32 JASDriver::getFrameSamples() {
|
||||
return sSubFrames * 0x50;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -433,14 +466,32 @@ SECTION_DEAD static char const* const stringBase_8039B315 = "MONO-MIX";
|
||||
|
||||
/* 8029CA10-8029CAC0 297350 00B0+00 1/0 0/0 0/0 .text mixMonoTrack__9JASDriverFPsUlPFl_Ps
|
||||
*/
|
||||
// regalloc
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::mixMonoTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
JASProbe::start(5, "MONO-MIX");
|
||||
s16* r31 = param_2(param_1);
|
||||
if (r31) {
|
||||
return;
|
||||
}
|
||||
JASProbe::stop(5);
|
||||
for (u32 i = param_1; i != 0; i--) {
|
||||
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
|
||||
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] + r31[0]);
|
||||
param_0 += 2;
|
||||
r31++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::mixMonoTrack(s16* param_0, u32 param_1, s16* (*param_2)(s32)) {
|
||||
asm void JASDriver::mixMonoTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/mixMonoTrack__9JASDriverFPsUlPFl_Ps.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -450,14 +501,32 @@ SECTION_DEAD static char const* const stringBase_8039B31E = "MONO(W)-MIX";
|
||||
#pragma pop
|
||||
|
||||
/* 8029CAC0-8029CB70 297400 00B0+00 1/0 0/0 0/0 .text mixMonoTrackWide__9JASDriverFPsUlPFl_Ps */
|
||||
// instruction order
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::mixMonoTrackWide(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
JASProbe::start(5, "MONO(W)-MIX");
|
||||
s16* r31 = param_2(param_1);
|
||||
if (!r31) {
|
||||
return;
|
||||
}
|
||||
JASProbe::stop(5);
|
||||
for (u32 i = param_1; i != 0; i--) {
|
||||
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
|
||||
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] - r31[0]);
|
||||
param_0 += 2;
|
||||
r31++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::mixMonoTrackWide(s16* param_0, u32 param_1, s16* (*param_2)(s32)) {
|
||||
asm void JASDriver::mixMonoTrackWide(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/mixMonoTrackWide__9JASDriverFPsUlPFl_Ps.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -468,28 +537,65 @@ SECTION_DEAD static char const* const stringBase_8039B331 = "MIXING";
|
||||
#pragma pop
|
||||
|
||||
/* 8029CB70-8029CC50 2974B0 00E0+00 1/0 0/0 0/0 .text mixExtraTrack__9JASDriverFPsUlPFl_Ps */
|
||||
// missing instruction
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
JASProbe::start(5, "DSPMIX");
|
||||
s16* r31 = param_2(param_1);
|
||||
if (!r31) {
|
||||
return;
|
||||
}
|
||||
JASProbe::stop(5);
|
||||
JASProbe::start(6, "MIXING");
|
||||
s16* r29 = r31 + getFrameSamples();
|
||||
for (u32 i = param_1; i != 0; i--) {
|
||||
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r29[0]);
|
||||
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] + r31[0]);
|
||||
param_0 += 2;
|
||||
r29++;
|
||||
r31++;
|
||||
}
|
||||
JASProbe::stop(6);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, s16* (*param_2)(s32)) {
|
||||
asm void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/mixExtraTrack__9JASDriverFPsUlPFl_Ps.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029CC50-8029CCD4 297590 0084+00 1/0 0/0 0/0 .text mixInterleaveTrack__9JASDriverFPsUlPFl_Ps */
|
||||
// missing instructions
|
||||
#ifdef NONMATCHING
|
||||
void JASDriver::mixInterleaveTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
s16* r31 = param_2(param_1);
|
||||
if (!r31) {
|
||||
return;
|
||||
}
|
||||
for (u32 i = param_1 * 2; i != 0; i--) {
|
||||
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
|
||||
param_0 += 1;
|
||||
r31++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::mixInterleaveTrack(s16* param_0, u32 param_1, s16* (*param_2)(s32)) {
|
||||
asm void JASDriver::mixInterleaveTrack(s16* param_0, u32 param_1, MixCallback param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAiCtrl/mixInterleaveTrack__9JASDriverFPsUlPFl_Ps.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029CCD4-8029CCDC -00001 0008+00 0/0 0/0 0/0 .text getSubFrameCounter__9JASDriverFv */
|
||||
u32 JASDriver::getSubFrameCounter() {
|
||||
return *(u32*)(&JASDriver::sSubFrameCounter);
|
||||
return sSubFrameCounter;
|
||||
}
|
||||
|
||||
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "JSystem/JAudio2/JASAudioReseter.h"
|
||||
#include "JSystem/JAudio2/JASAudioThread.h"
|
||||
#include "JSystem/JAudio2/JASCriticalSection.h"
|
||||
#include "JSystem/JAudio2/JASDriverIF.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASCallback.h"
|
||||
#include "JSystem/JAudio2/JASAudioReseter.h"
|
||||
#include "JSystem/JAudio2/JASCriticalSection.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
|
||||
@@ -4,70 +4,15 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASDSPInterface.h"
|
||||
#include "JSystem/JAudio2/JASCalc.h"
|
||||
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
||||
#include "JSystem/JAudio2/JASWaveInfo.h"
|
||||
#include "JSystem/JAudio2/dsptask.h"
|
||||
#include "JSystem/JAudio2/osdsp_task.h"
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRHeap {};
|
||||
|
||||
struct JASWaveInfo {
|
||||
static u32 one[1 + 1 /* padding */];
|
||||
};
|
||||
|
||||
struct JASDsp {
|
||||
struct FxlineConfig_ {};
|
||||
|
||||
struct TChannel {
|
||||
/* 8029DCA4 */ void init();
|
||||
/* 8029DCE0 */ void playStart();
|
||||
/* 8029DD44 */ void playStop();
|
||||
/* 8029DD50 */ void replyFinishRequest();
|
||||
/* 8029DD60 */ void forceStop();
|
||||
/* 8029DD6C */ void isActive() const;
|
||||
/* 8029DD7C */ void 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);
|
||||
};
|
||||
|
||||
/* 8029D958 */ void boot(void (*)(void*));
|
||||
/* 8029D9A4 */ void releaseHalt(u32);
|
||||
/* 8029D9C4 */ void finishWork(u16);
|
||||
/* 8029D9E4 */ void syncFrame(u32, u32, u32);
|
||||
/* 8029DA04 */ void setDSPMixerLevel(f32);
|
||||
/* 8029DA30 */ void getDSPMixerLevel();
|
||||
/* 8029DA38 */ void getDSPHandle(int);
|
||||
/* 8029DA48 */ void setFilterTable(s16*, s16*, u32);
|
||||
/* 8029DA6C */ void flushBuffer();
|
||||
/* 8029DAA0 */ void invalChannelAll();
|
||||
/* 8029DAC8 */ void initBuffer();
|
||||
/* 8029DB78 */ void setFXLine(u8, s16*, JASDsp::FxlineConfig_*);
|
||||
|
||||
static u8 const DSPADPCM_FILTER[64];
|
||||
static void* const DSPRES_FILTER[320];
|
||||
static u8 SEND_TABLE[24 + 24 /* padding */];
|
||||
static u8 CH_BUF[4];
|
||||
static u8 FX_BUF[4];
|
||||
static f32 sDSPVolume;
|
||||
};
|
||||
|
||||
struct JASCalc {
|
||||
/* 8028F480 */ void bzero(void*, u32);
|
||||
};
|
||||
#include "dolphin/dsp/dsp.h"
|
||||
#include "dolphin/os/OSCache.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
@@ -129,15 +74,10 @@ extern "C" void DspBoot__FPFPv_v();
|
||||
extern "C" void DspFinishWork__FUs();
|
||||
extern "C" void DsyncFrame2__FUlUlUl();
|
||||
extern "C" void* __nwa__FUlP7JKRHeapi();
|
||||
extern "C" void DCInvalidateRange();
|
||||
extern "C" void DCFlushRange();
|
||||
extern "C" void OSDisableInterrupts();
|
||||
extern "C" void OSRestoreInterrupts();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern u8 JASDram[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
@@ -145,122 +85,76 @@ extern "C" extern u8 JASDram[4];
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804512E8-804512EC 0007E8 0004+00 5/5 0/0 0/0 .sbss CH_BUF__6JASDsp */
|
||||
u8 JASDsp::CH_BUF[4];
|
||||
JASDsp::TChannel* JASDsp::CH_BUF;
|
||||
|
||||
/* 804512EC-804512F0 0007EC 0004+00 3/3 0/0 0/0 .sbss FX_BUF__6JASDsp */
|
||||
u8 JASDsp::FX_BUF[4];
|
||||
void* JASDsp::FX_BUF;
|
||||
|
||||
/* 804512F0-804512F4 0007F0 0004+00 2/2 0/0 0/0 .sbss sDSPVolume__6JASDsp */
|
||||
f32 JASDsp::sDSPVolume;
|
||||
|
||||
/* 804512F4-804512F8 -00001 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
/* 804512F4 0001+00 data_804512F4 None */
|
||||
/* 804512F5 0003+00 data_804512F5 None */
|
||||
static u8 struct_804512F4[4];
|
||||
|
||||
/* 8029D958-8029D9A4 298298 004C+00 0/0 1/1 0/0 .text boot__6JASDspFPFPv_v */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::boot(void (*param_0)(void*)) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/boot__6JASDspFPFPv_v.s"
|
||||
void JASDsp::boot(void (*param_0)(void*)) {
|
||||
static bool data_804512F4 = true;
|
||||
if (data_804512F4) {
|
||||
DspBoot(param_0);
|
||||
data_804512F4 = false;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029D9A4-8029D9C4 2982E4 0020+00 0/0 1/1 0/0 .text releaseHalt__6JASDspFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::releaseHalt(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/releaseHalt__6JASDspFUl.s"
|
||||
void JASDsp::releaseHalt(u32 param_0) {
|
||||
DSPReleaseHalt2(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029D9C4-8029D9E4 298304 0020+00 0/0 1/1 0/0 .text finishWork__6JASDspFUs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::finishWork(u16 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/finishWork__6JASDspFUs.s"
|
||||
void JASDsp::finishWork(u16 param_0) {
|
||||
DspFinishWork(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029D9E4-8029DA04 298324 0020+00 0/0 1/1 0/0 .text syncFrame__6JASDspFUlUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::syncFrame(u32 param_0, u32 param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/syncFrame__6JASDspFUlUlUl.s"
|
||||
void JASDsp::syncFrame(u32 param_0, u32 param_1, u32 param_2) {
|
||||
DsyncFrame2(param_0, param_1, param_2);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80455748-8045574C 003D48 0004+00 1/1 0/0 0/0 .sdata2 @176 */
|
||||
SECTION_SDATA2 static f32 lit_176 = 4.0f;
|
||||
|
||||
/* 8029DA04-8029DA30 298344 002C+00 0/0 1/1 0/0 .text setDSPMixerLevel__6JASDspFf */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::setDSPMixerLevel(f32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setDSPMixerLevel__6JASDspFf.s"
|
||||
void JASDsp::setDSPMixerLevel(f32 dsp_level) {
|
||||
sDSPVolume = dsp_level;
|
||||
dsp_level *= 4.0f;
|
||||
DsetMixerLevel(dsp_level);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DA30-8029DA38 298370 0008+00 0/0 1/1 0/0 .text getDSPMixerLevel__6JASDspFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::getDSPMixerLevel() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/getDSPMixerLevel__6JASDspFv.s"
|
||||
f32 JASDsp::getDSPMixerLevel() {
|
||||
return sDSPVolume;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DA38-8029DA48 298378 0010+00 0/0 1/1 0/0 .text getDSPHandle__6JASDspFi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::getDSPHandle(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/getDSPHandle__6JASDspFi.s"
|
||||
JASDsp::TChannel* JASDsp::getDSPHandle(int param_0) {
|
||||
return CH_BUF + param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DA48-8029DA6C 298388 0024+00 3/3 0/0 0/0 .text setFilterTable__6JASDspFPsPsUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::setFilterTable(s16* param_0, s16* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setFilterTable__6JASDspFPsPsUl.s"
|
||||
void JASDsp::setFilterTable(s16* param_0, s16* param_1, u32 param_2) {
|
||||
for (int i = 0; i < param_2; i++) {
|
||||
*param_0++ = *param_1++;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DA6C-8029DAA0 2983AC 0034+00 1/1 0/0 0/0 .text flushBuffer__6JASDspFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::flushBuffer() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/flushBuffer__6JASDspFv.s"
|
||||
void JASDsp::flushBuffer() {
|
||||
DCFlushRange(CH_BUF, sizeof(TChannel) * 64);
|
||||
DCFlushRange(FX_BUF, 0x80);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DAA0-8029DAC8 2983E0 0028+00 0/0 1/1 0/0 .text invalChannelAll__6JASDspFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::invalChannelAll() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/invalChannelAll__6JASDspFv.s"
|
||||
void JASDsp::invalChannelAll() {
|
||||
DCInvalidateRange(CH_BUF, sizeof(TChannel) * 64);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B360-8039B3A0 0279C0 0040+00 1/1 0/0 0/0 .rodata DSPADPCM_FILTER__6JASDsp */
|
||||
@@ -598,67 +492,46 @@ SECTION_RODATA void* const JASDsp::DSPRES_FILTER[320] = {
|
||||
COMPILER_STRIP_GATE(0x8039B3A0, &JASDsp::DSPRES_FILTER);
|
||||
|
||||
/* 8029DAC8-8029DB78 298408 00B0+00 0/0 1/1 0/0 .text initBuffer__6JASDspFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::initBuffer() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/initBuffer__6JASDspFv.s"
|
||||
void JASDsp::initBuffer() {
|
||||
CH_BUF = new(JASDram, 0x20) TChannel[64];
|
||||
FX_BUF = new(JASDram, 0x20) u8[0x80];
|
||||
JASCalc::bzero(CH_BUF, 0x6000);
|
||||
JASCalc::bzero(FX_BUF, 0x80);
|
||||
for (u8 i = 0; i < 4; i++) {
|
||||
setFXLine(i, NULL, NULL);
|
||||
}
|
||||
DsetupTable(0x40, u32(CH_BUF), u32(&DSPRES_FILTER), u32(&DSPADPCM_FILTER), u32(FX_BUF));
|
||||
flushBuffer();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C78F0-803C7920 024A10 0018+18 1/1 0/0 0/0 .data SEND_TABLE__6JASDsp */
|
||||
SECTION_DATA u8 JASDsp::SEND_TABLE[24 + 24 /* padding */] = {
|
||||
0x0D,
|
||||
0x00,
|
||||
0x0D,
|
||||
0x60,
|
||||
0x0D,
|
||||
0xC8,
|
||||
0x0E,
|
||||
0x28,
|
||||
0x0E,
|
||||
0x88,
|
||||
0x0E,
|
||||
0xE8,
|
||||
0x0C,
|
||||
0xA0,
|
||||
0x0F,
|
||||
0x40,
|
||||
0x0F,
|
||||
0xA0,
|
||||
0x0B,
|
||||
0x00,
|
||||
0x09,
|
||||
0xA0,
|
||||
0x00,
|
||||
0x00,
|
||||
SECTION_DATA u16 JASDsp::SEND_TABLE[12 + 12 /* padding */] = {
|
||||
0x0D00,
|
||||
0x0D60,
|
||||
0x0DC8,
|
||||
0x0E28,
|
||||
0x0E88,
|
||||
0x0EE8,
|
||||
0x0CA0,
|
||||
0x0F40,
|
||||
0x0FA0,
|
||||
0x0B00,
|
||||
0x09A0,
|
||||
0x0000,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
0x0000,
|
||||
};
|
||||
|
||||
/* 8029DB78-8029DCA4 2984B8 012C+00 1/1 1/1 0/0 .text
|
||||
@@ -673,16 +546,34 @@ asm void JASDsp::setFXLine(u8 param_0, s16* param_1, JASDsp::FxlineConfig_* para
|
||||
#pragma pop
|
||||
|
||||
/* 8029DCA4-8029DCE0 2985E4 003C+00 0/0 1/1 0/0 .text init__Q26JASDsp8TChannelFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::init() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/init__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::init() {
|
||||
mPauseFlag = 0;
|
||||
mIsFinished = 0;
|
||||
mForcedStop = 0;
|
||||
mIsActive = 0;
|
||||
field_0x058 = 0;
|
||||
field_0x068 = 0;
|
||||
initFilter();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DCE0-8029DD44 298620 0064+00 0/0 1/1 0/0 .text playStart__Q26JASDsp8TChannelFv */
|
||||
// regswap
|
||||
#ifdef NONMATCHING
|
||||
void JASDsp::TChannel::playStart() {
|
||||
field_0x10c = 0;
|
||||
field_0x060 = 0;
|
||||
field_0x008 = 1;
|
||||
field_0x066 = 0;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
field_0x078[i] = 0;
|
||||
field_0x0a8[i] = 0;
|
||||
}
|
||||
for (int i = 0; i < 20; i++) {
|
||||
field_0x080[i] = 0;
|
||||
}
|
||||
mIsActive = 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -691,56 +582,33 @@ asm void JASDsp::TChannel::playStart() {
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/playStart__Q26JASDsp8TChannelFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029DD44-8029DD50 298684 000C+00 0/0 1/1 0/0 .text playStop__Q26JASDsp8TChannelFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::playStop() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/playStop__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::playStop() {
|
||||
mIsActive = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DD50-8029DD60 298690 0010+00 0/0 1/1 0/0 .text replyFinishRequest__Q26JASDsp8TChannelFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::replyFinishRequest() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/replyFinishRequest__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::replyFinishRequest() {
|
||||
mIsFinished = 0;
|
||||
mIsActive = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DD60-8029DD6C 2986A0 000C+00 0/0 1/1 0/0 .text forceStop__Q26JASDsp8TChannelFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::forceStop() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/forceStop__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::forceStop() {
|
||||
mForcedStop = 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DD6C-8029DD7C 2986AC 0010+00 1/1 0/0 0/0 .text isActive__Q26JASDsp8TChannelCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::isActive() const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/isActive__Q26JASDsp8TChannelCFv.s"
|
||||
bool JASDsp::TChannel::isActive() const {
|
||||
return mIsActive != 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DD7C-8029DD8C 2986BC 0010+00 0/0 1/1 0/0 .text isFinish__Q26JASDsp8TChannelCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::isFinish() const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/isFinish__Q26JASDsp8TChannelCFv.s"
|
||||
bool JASDsp::TChannel::isFinish() const {
|
||||
return mIsFinished != 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8045574C-80455754 003D4C 0008+00 1/1 0/0 0/0 .sdata2 COMP_BLOCKSAMPLES$331 */
|
||||
@@ -755,102 +623,127 @@ SECTION_SDATA2 static u8 COMP_BLOCKBYTES[8] = {
|
||||
|
||||
/* 8029DD8C-8029DEAC 2986CC 0120+00 0/0 1/1 0/0 .text
|
||||
* setWaveInfo__Q26JASDsp8TChannelFRC11JASWaveInfoUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setWaveInfo(JASWaveInfo const& param_0, u32 param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setWaveInfo__Q26JASDsp8TChannelFRC11JASWaveInfoUlUl.s"
|
||||
void JASDsp::TChannel::setWaveInfo(JASWaveInfo const& param_0, u32 param_1, u32 param_2) {
|
||||
field_0x118 = param_1;
|
||||
field_0x064 = COMP_BLOCKSAMPLES[param_0.field_0x00];
|
||||
field_0x100 = COMP_BLOCKBYTES[param_0.field_0x00];
|
||||
field_0x068 = 0;
|
||||
if (field_0x100 >= 4) {
|
||||
field_0x11c = param_0.field_0x18;
|
||||
field_0x102 = param_0.field_0x02;
|
||||
if (field_0x102) {
|
||||
if (param_2 == 1) {
|
||||
param_2 = param_0.field_0x10;
|
||||
}
|
||||
field_0x110 = param_0.field_0x10;
|
||||
field_0x114 = param_0.field_0x14;
|
||||
field_0x104 = param_0.field_0x1c;
|
||||
field_0x106 = param_0.field_0x1e;
|
||||
} else {
|
||||
field_0x114 = field_0x11c;
|
||||
}
|
||||
if (param_2 && field_0x114 > param_2) {
|
||||
switch (param_0.field_0x00) {
|
||||
case 0:
|
||||
case 1:
|
||||
field_0x068 = param_2;
|
||||
field_0x118 += param_2 * field_0x100 >> 4;
|
||||
field_0x110 -= param_2;
|
||||
field_0x114 -= param_2;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
field_0x068 = param_2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 16; i++) {
|
||||
field_0x0b0[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DEAC-8029DEC4 2987EC 0018+00 0/0 1/1 0/0 .text setOscInfo__Q26JASDsp8TChannelFUl
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setOscInfo(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setOscInfo__Q26JASDsp8TChannelFUl.s"
|
||||
void JASDsp::TChannel::setOscInfo(u32 param_0) {
|
||||
field_0x118 = 0;
|
||||
field_0x064 = 16;
|
||||
field_0x100 = param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DEC4-8029DEF0 298804 002C+00 0/0 1/1 0/0 .text initAutoMixer__Q26JASDsp8TChannelFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::initAutoMixer() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/initAutoMixer__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::initAutoMixer() {
|
||||
if (field_0x058) {
|
||||
field_0x054 = field_0x056;
|
||||
} else {
|
||||
field_0x054 = 0;
|
||||
field_0x058 = 1;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DEF0-8029DF1C 298830 002C+00 0/0 1/1 0/0 .text setAutoMixer__Q26JASDsp8TChannelFUsUcUcUcUc
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setAutoMixer(u16 param_0, u8 param_1, u8 param_2, u8 param_3,
|
||||
void JASDsp::TChannel::setAutoMixer(u16 param_0, u8 param_1, u8 param_2, u8 param_3,
|
||||
u8 param_4) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setAutoMixer__Q26JASDsp8TChannelFUsUcUcUcUc.s"
|
||||
field_0x050 = (param_1 << 8) | param_2;
|
||||
field_0x052 = param_3 << 8 | param_3 << 1;
|
||||
field_0x056 = param_0;
|
||||
field_0x058 = 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DF1C-8029DF34 29885C 0018+00 0/0 2/2 0/0 .text setPitch__Q26JASDsp8TChannelFUs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setPitch(u16 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setPitch__Q26JASDsp8TChannelFUs.s"
|
||||
void JASDsp::TChannel::setPitch(u16 param_0) {
|
||||
if (param_0 >= 0x7fff) {
|
||||
param_0 = 0x7fff;
|
||||
}
|
||||
mPitch = param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DF34-8029DF54 298874 0020+00 0/0 1/1 0/0 .text setMixerInitVolume__Q26JASDsp8TChannelFUcs
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setMixerInitVolume(u8 param_0, s16 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setMixerInitVolume__Q26JASDsp8TChannelFUcs.s"
|
||||
void JASDsp::TChannel::setMixerInitVolume(u8 param_0, s16 param_1) {
|
||||
u16* tmp = field_0x010[param_0];
|
||||
tmp[2] = param_1;
|
||||
tmp[1] = param_1;
|
||||
tmp[3] = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DF54-8029DF80 298894 002C+00 0/0 1/1 0/0 .text setMixerVolume__Q26JASDsp8TChannelFUcs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setMixerVolume(u8 param_0, s16 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setMixerVolume__Q26JASDsp8TChannelFUcs.s"
|
||||
void JASDsp::TChannel::setMixerVolume(u8 param_0, s16 param_1) {
|
||||
if (mForcedStop == 0) {
|
||||
u16* tmp = field_0x010[param_0];
|
||||
tmp[1] = param_1;
|
||||
tmp[3] &= 0xff;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DF80-8029DF8C 2988C0 000C+00 0/0 2/2 0/0 .text setPauseFlag__Q26JASDsp8TChannelFUc
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setPauseFlag(u8 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setPauseFlag__Q26JASDsp8TChannelFUc.s"
|
||||
void JASDsp::TChannel::setPauseFlag(u8 param_0) {
|
||||
mPauseFlag = param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DF8C-8029DFB0 2988CC 0024+00 0/0 1/1 0/0 .text flush__Q26JASDsp8TChannelFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::flush() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/flush__Q26JASDsp8TChannelFv.s"
|
||||
void JASDsp::TChannel::flush() {
|
||||
DCFlushRange(this, sizeof(*this));
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029DFB0-8029E00C 2988F0 005C+00 1/1 0/0 0/0 .text initFilter__Q26JASDsp8TChannelFv */
|
||||
// regswap
|
||||
#ifdef NONMATCHING
|
||||
void JASDsp::TChannel::initFilter() {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
fir_filter_params[i] = 0;
|
||||
}
|
||||
fir_filter_params[0] = 0x7fff;
|
||||
for (int i = 0; i < 8; i++) {
|
||||
iir_filter_params[i] = 0;
|
||||
}
|
||||
iir_filter_params[0] = 0x7fff;
|
||||
iir_filter_params[4] = 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -859,70 +752,67 @@ asm void JASDsp::TChannel::initFilter() {
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/initFilter__Q26JASDsp8TChannelFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8029E00C-8029E044 29894C 0038+00 0/0 1/1 0/0 .text setFilterMode__Q26JASDsp8TChannelFUs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setFilterMode(u16 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setFilterMode__Q26JASDsp8TChannelFUs.s"
|
||||
void JASDsp::TChannel::setFilterMode(u16 param_0) {
|
||||
u8 r30 = param_0 & 0x20;
|
||||
u8 r31 = param_0 & 0x1f;
|
||||
if (r30) {
|
||||
if (r31 > 0x14) {
|
||||
r31 = 0x14;
|
||||
}
|
||||
} else {
|
||||
if (r31 > 0x18) {
|
||||
r31 = 0x18;
|
||||
}
|
||||
}
|
||||
mFilterMode = r30 + r31;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E044-8029E06C 298984 0028+00 0/0 1/1 0/0 .text setIIRFilterParam__Q26JASDsp8TChannelFPs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setIIRFilterParam(s16* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setIIRFilterParam__Q26JASDsp8TChannelFPs.s"
|
||||
void JASDsp::TChannel::setIIRFilterParam(s16* param_0) {
|
||||
setFilterTable(iir_filter_params, param_0, 8);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E06C-8029E094 2989AC 0028+00 0/0 1/1 0/0 .text setFIR8FilterParam__Q26JASDsp8TChannelFPs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setFIR8FilterParam(s16* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setFIR8FilterParam__Q26JASDsp8TChannelFPs.s"
|
||||
void JASDsp::TChannel::setFIR8FilterParam(s16* param_0) {
|
||||
setFilterTable(fir_filter_params, param_0, 8);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E094-8029E09C -00001 0008+00 0/0 0/0 0/0 .text setDistFilter__Q26JASDsp8TChannelFs
|
||||
*/
|
||||
void JASDsp::TChannel::setDistFilter(s16 param_0) {
|
||||
*(u16*)(((u8*)this) + 336) /* this->field_0x150 */ = (u16)(param_0);
|
||||
iir_filter_params[4] = param_0;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B8A0-8039B8B8 027F00 0018+00 1/1 0/0 0/0 .rodata connect_table$463 */
|
||||
SECTION_RODATA static u8 const connect_table[24] = {
|
||||
0x00, 0x00, 0x0D, 0x00, 0x0D, 0x60, 0x0D, 0xC0, 0x0E, 0x20, 0x0E, 0x80,
|
||||
0x0E, 0xE0, 0x0C, 0xA0, 0x0F, 0x40, 0x0F, 0xA0, 0x0B, 0x00, 0x09, 0xA0,
|
||||
SECTION_RODATA static u16 const connect_table[12] = {
|
||||
0x0000, 0x0D00, 0x0D60, 0x0DC0, 0x0E20, 0x0E80,
|
||||
0x0EE0, 0x0CA0, 0x0F40, 0x0FA0, 0x0B00, 0x09A0,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x8039B8A0, &connect_table);
|
||||
|
||||
/* 8029E09C-8029E0BC 2989DC 0020+00 0/0 1/1 0/0 .text setBusConnect__Q26JASDsp8TChannelFUcUc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDsp::TChannel::setBusConnect(u8 param_0, u8 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/setBusConnect__Q26JASDsp8TChannelFUcUc.s"
|
||||
void JASDsp::TChannel::setBusConnect(u8 param_0, u8 param_1) {
|
||||
u16* tmp = field_0x010[param_0];
|
||||
tmp[0] = connect_table[param_1];
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E0BC-8029E130 2989FC 0074+00 0/0 1/1 0/0 .text DSP_CreateMap2__FUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void DSP_CreateMap2(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDSPInterface/DSP_CreateMap2__FUl.s"
|
||||
u16 DSP_CreateMap2(u32 param_0) {
|
||||
u16 r30 = 0;
|
||||
JASDsp::TChannel* channel = &JASDsp::CH_BUF[param_0 << 4];
|
||||
for (int i = 0; i < 16; i++) {
|
||||
r30 <<= 1;
|
||||
if (channel->isActive()) {
|
||||
r30 |= 1;
|
||||
}
|
||||
channel++;
|
||||
}
|
||||
return r30;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804507B8-804507C0 000238 0004+04 0/0 5/5 0/0 .sdata one__11JASWaveInfo */
|
||||
|
||||
@@ -4,228 +4,99 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASDriverIF.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JASDsp {
|
||||
/* 8029DA04 */ void setDSPMixerLevel(f32);
|
||||
/* 8029DA30 */ void getDSPMixerLevel();
|
||||
};
|
||||
|
||||
struct JASCallbackMgr {
|
||||
struct TCallback {
|
||||
/* 8029E3A0 */ TCallback();
|
||||
};
|
||||
|
||||
/* 8028FFA8 */ void regist(s32 (*)(void*), void*);
|
||||
/* 80290030 */ void reject(s32 (*)(void*), void*);
|
||||
/* 802900C4 */ void callback();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void setDSPLevel__9JASDriverFf();
|
||||
extern "C" u16 getChannelLevel_dsp__9JASDriverFv();
|
||||
extern "C" void getDSPLevel__9JASDriverFv();
|
||||
extern "C" void setOutputMode__9JASDriverFUl();
|
||||
extern "C" u32 getOutputMode__9JASDriverFv();
|
||||
extern "C" void waitSubFrame__9JASDriverFv();
|
||||
extern "C" void rejectCallback__9JASDriverFPFPv_lPv();
|
||||
extern "C" void registerDspSyncCallback__9JASDriverFPFPv_lPv();
|
||||
extern "C" void registerSubFrameCallback__9JASDriverFPFPv_lPv();
|
||||
extern "C" void subframeCallback__9JASDriverFv();
|
||||
extern "C" void DSPSyncCallback__9JASDriverFv();
|
||||
extern "C" void updateDacCallback__9JASDriverFv();
|
||||
extern "C" void __sinit_JASDriverIF_cpp();
|
||||
extern "C" void __ct__Q214JASCallbackMgr9TCallbackFv();
|
||||
extern "C" u8 sDspSyncCallback__9JASDriver[256];
|
||||
extern "C" u8 sSubFrameCallback__9JASDriver[256];
|
||||
extern "C" u8 sUpdateDacCallback__9JASDriver[256 + 8 /* padding */];
|
||||
extern "C" u16 MAX_MIXERLEVEL__9JASDriver[1 + 1 /* padding */];
|
||||
extern "C" u32 JAS_SYSTEM_OUTPUT_MODE__9JASDriver;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void regist__14JASCallbackMgrFPFPv_lPv();
|
||||
extern "C" void reject__14JASCallbackMgrFPFPv_lPv();
|
||||
extern "C" void callback__14JASCallbackMgrFv();
|
||||
extern "C" void getSubFrameCounter__9JASDriverFv();
|
||||
extern "C" void setDSPMixerLevel__6JASDspFf();
|
||||
extern "C" void getDSPMixerLevel__6JASDspFv();
|
||||
extern "C" void OSYieldThread();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_28();
|
||||
#include "JSystem/JAudio2/JASAiCtrl.h"
|
||||
#include "JSystem/JAudio2/JASDSPInterface.h"
|
||||
#include "dolphin/os/OSThread.h"
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 8029E130-8029E150 298A70 0020+00 0/0 3/3 0/0 .text setDSPLevel__9JASDriverFf */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::setDSPLevel(f32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/setDSPLevel__9JASDriverFf.s"
|
||||
void JASDriver::setDSPLevel(f32 param_0) {
|
||||
JASDsp::setDSPMixerLevel(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804507C0-804507C4 000240 0002+02 1/0 0/0 0/0 .sdata MAX_MIXERLEVEL__9JASDriver */
|
||||
SECTION_SDATA u16 JASDriver::MAX_MIXERLEVEL[1 + 1 /* padding */] = {
|
||||
0x2EE0,
|
||||
/* padding */
|
||||
0x0000,
|
||||
};
|
||||
u16 JASDriver::MAX_MIXERLEVEL = 0x2EE0;
|
||||
|
||||
/* 8029E150-8029E158 -00001 0008+00 0/0 0/0 0/0 .text getChannelLevel_dsp__9JASDriverFv
|
||||
*/
|
||||
u16 JASDriver::getChannelLevel_dsp() {
|
||||
return *(u16*)(&JASDriver::MAX_MIXERLEVEL);
|
||||
return JASDriver::MAX_MIXERLEVEL;
|
||||
}
|
||||
|
||||
/* 8029E158-8029E178 298A98 0020+00 0/0 3/3 0/0 .text getDSPLevel__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm f32 JASDriver::getDSPLevel() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/getDSPLevel__9JASDriverFv.s"
|
||||
f32 JASDriver::getDSPLevel() {
|
||||
return JASDsp::getDSPMixerLevel();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804507C4-804507C8 000244 0004+00 2/1 0/0 0/0 .sdata JAS_SYSTEM_OUTPUT_MODE__9JASDriver
|
||||
*/
|
||||
SECTION_SDATA u32 JASDriver::JAS_SYSTEM_OUTPUT_MODE = 0x00000001;
|
||||
u32 JASDriver::JAS_SYSTEM_OUTPUT_MODE = 0x00000001;
|
||||
|
||||
/* 8029E178-8029E180 298AB8 0008+00 0/0 2/2 0/0 .text setOutputMode__9JASDriverFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::setOutputMode(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/setOutputMode__9JASDriverFUl.s"
|
||||
void JASDriver::setOutputMode(u32 param_0) {
|
||||
JAS_SYSTEM_OUTPUT_MODE = param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E180-8029E188 -00001 0008+00 0/0 0/0 0/0 .text getOutputMode__9JASDriverFv */
|
||||
u32 JASDriver::getOutputMode() {
|
||||
return *(u32*)(&JASDriver::JAS_SYSTEM_OUTPUT_MODE);
|
||||
return JASDriver::JAS_SYSTEM_OUTPUT_MODE;
|
||||
}
|
||||
|
||||
/* 8029E188-8029E1C4 298AC8 003C+00 0/0 1/1 0/0 .text waitSubFrame__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::waitSubFrame() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/waitSubFrame__9JASDriverFv.s"
|
||||
void JASDriver::waitSubFrame() {
|
||||
u32 r31 = getSubFrameCounter();
|
||||
do {
|
||||
OSYieldThread();
|
||||
} while (r31 == getSubFrameCounter());
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80431C78-80431D78 05E998 0100+00 4/4 0/0 0/0 .bss sDspSyncCallback__9JASDriver */
|
||||
u8 JASDriver::sDspSyncCallback[256];
|
||||
JASCallbackMgr JASDriver::sDspSyncCallback;
|
||||
|
||||
/* 80431D78-80431E78 05EA98 0100+00 2/4 0/0 0/0 .bss sSubFrameCallback__9JASDriver */
|
||||
u8 JASDriver::sSubFrameCallback[256];
|
||||
JASCallbackMgr JASDriver::sSubFrameCallback;
|
||||
|
||||
/* 80431E78-80431F80 05EB98 0100+08 1/3 0/0 0/0 .bss sUpdateDacCallback__9JASDriver */
|
||||
u8 JASDriver::sUpdateDacCallback[256 + 8 /* padding */];
|
||||
JASCallbackMgr JASDriver::sUpdateDacCallback;
|
||||
|
||||
/* 8029E1C4-8029E240 298B04 007C+00 0/0 2/2 0/0 .text rejectCallback__9JASDriverFPFPv_lPv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::rejectCallback(DriverCallback callback, void* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/rejectCallback__9JASDriverFPFPv_lPv.s"
|
||||
int JASDriver::rejectCallback(DriverCallback callback, void* param_1) {
|
||||
int r31 = sDspSyncCallback.reject(callback, param_1);
|
||||
r31 += sSubFrameCallback.reject(callback, param_1);
|
||||
r31 += sUpdateDacCallback.reject(callback, param_1);
|
||||
return r31;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E240-8029E274 298B80 0034+00 0/0 1/1 0/0 .text registerDspSyncCallback__9JASDriverFPFPv_lPv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool JASDriver::registerDspSyncCallback(DriverCallback callback, void* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/registerDspSyncCallback__9JASDriverFPFPv_lPv.s"
|
||||
bool JASDriver::registerDspSyncCallback(DriverCallback callback, void* param_1) {
|
||||
return sDspSyncCallback.regist(callback, param_1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E274-8029E2A8 298BB4 0034+00 0/0 3/3 0/0 .text
|
||||
* registerSubFrameCallback__9JASDriverFPFPv_lPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool JASDriver::registerSubFrameCallback(DriverCallback callback, void* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/registerSubFrameCallback__9JASDriverFPFPv_lPv.s"
|
||||
bool JASDriver::registerSubFrameCallback(DriverCallback callback, void* param_1) {
|
||||
return sSubFrameCallback.regist(callback, param_1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E2A8-8029E2D0 298BE8 0028+00 0/0 1/1 0/0 .text subframeCallback__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::subframeCallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/subframeCallback__9JASDriverFv.s"
|
||||
void JASDriver::subframeCallback() {
|
||||
sSubFrameCallback.callback();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E2D0-8029E2F8 298C10 0028+00 0/0 1/1 0/0 .text DSPSyncCallback__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::DSPSyncCallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/DSPSyncCallback__9JASDriverFv.s"
|
||||
void JASDriver::DSPSyncCallback() {
|
||||
sDspSyncCallback.callback();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E2F8-8029E320 298C38 0028+00 0/0 1/1 0/0 .text updateDacCallback__9JASDriverFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASDriver::updateDacCallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/updateDacCallback__9JASDriverFv.s"
|
||||
void JASDriver::updateDacCallback() {
|
||||
sUpdateDacCallback.callback();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029E320-8029E3A0 298C60 0080+00 0/0 1/0 0/0 .text __sinit_JASDriverIF_cpp */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __sinit_JASDriverIF_cpp() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/__sinit_JASDriverIF_cpp.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
REGISTER_CTORS(0x8029E320, __sinit_JASDriverIF_cpp);
|
||||
#pragma pop
|
||||
|
||||
/* 8029E3A0-8029E3B0 298CE0 0010+00 1/1 0/0 0/0 .text __ct__Q214JASCallbackMgr9TCallbackFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASCallbackMgr::TCallback::TCallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASDriverIF/__ct__Q214JASCallbackMgr9TCallbackFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
@@ -13,7 +13,9 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct STRUCT_DSP_TASK {};
|
||||
struct STRUCT_DSP_TASK {
|
||||
/* 0x00 */ DSPTaskInfo info;
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
@@ -559,29 +561,29 @@ SECTION_DATA static u8 jdsp[7936] = {
|
||||
};
|
||||
|
||||
/* 80431F80-80431FE0 05ECA0 0050+10 1/1 0/0 0/0 .bss audio_task */
|
||||
static u8 audio_task[80 + 16 /* padding */];
|
||||
static STRUCT_DSP_TASK audio_task ALIGN_DECL(32);
|
||||
|
||||
/* 80431FE0-80433FE0 05ED00 2000+00 1/1 0/0 0/0 .bss AUDIO_YIELD_BUFFER */
|
||||
static u8 AUDIO_YIELD_BUFFER[8192];
|
||||
static u8 AUDIO_YIELD_BUFFER[8192] ALIGN_DECL(32);
|
||||
|
||||
/* 8029E720-8029E7CC 299060 00AC+00 0/0 1/1 0/0 .text DspBoot__FPFPv_v */
|
||||
void DspBoot(void (*param_0)(void*)) {
|
||||
DspInitWork();
|
||||
((DSPTaskInfo*)audio_task)->priority = 0xf0;
|
||||
((DSPTaskInfo*)audio_task)->iram_mmem_addr = (u16*)(jdsp + 0x80000000);
|
||||
((DSPTaskInfo*)audio_task)->iram_length = sizeof(jdsp);
|
||||
((DSPTaskInfo*)audio_task)->iram_addr = 0;
|
||||
((DSPTaskInfo*)audio_task)->dram_mmem_addr = (u16*)(AUDIO_YIELD_BUFFER + 0x80000000);
|
||||
((DSPTaskInfo*)audio_task)->dram_length = sizeof(AUDIO_YIELD_BUFFER);
|
||||
((DSPTaskInfo*)audio_task)->dram_addr = 0;
|
||||
((DSPTaskInfo*)audio_task)->dsp_init_vector = 0;
|
||||
((DSPTaskInfo*)audio_task)->dsp_resume_vector = 0x10;
|
||||
((DSPTaskInfo*)audio_task)->init_cb = DspHandShake;
|
||||
((DSPTaskInfo*)audio_task)->res_cb = NULL;
|
||||
((DSPTaskInfo*)audio_task)->done_cb = NULL;
|
||||
((DSPTaskInfo*)audio_task)->req_cb = param_0;
|
||||
audio_task.info.priority = 0xf0;
|
||||
audio_task.info.iram_mmem_addr = (u16*)(jdsp + 0x80000000);
|
||||
audio_task.info.iram_length = sizeof(jdsp);
|
||||
audio_task.info.iram_addr = 0;
|
||||
audio_task.info.dram_mmem_addr = (u16*)(AUDIO_YIELD_BUFFER + 0x80000000);
|
||||
audio_task.info.dram_length = sizeof(AUDIO_YIELD_BUFFER);
|
||||
audio_task.info.dram_addr = 0;
|
||||
audio_task.info.dsp_init_vector = 0;
|
||||
audio_task.info.dsp_resume_vector = 0x10;
|
||||
audio_task.info.init_cb = DspHandShake;
|
||||
audio_task.info.res_cb = NULL;
|
||||
audio_task.info.done_cb = NULL;
|
||||
audio_task.info.req_cb = param_0;
|
||||
DSPInit();
|
||||
DSPAddPriorTask((STRUCT_DSP_TASK*)audio_task);
|
||||
DSPAddPriorTask(&audio_task);
|
||||
}
|
||||
|
||||
/* 8029E7E0-8029E8C8 299120 00E8+00 0/0 4/4 0/0 .text DSPSendCommands2__FPUlUlPFUs_v */
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "Z2AudioLib/Z2AudioMgr.h"
|
||||
#include "JSystem/JAudio2/JASAiCtrl.h"
|
||||
#include "JSystem/JAudio2/JASDriverIF.h"
|
||||
#include "MSL_C/stdio.h"
|
||||
#include "MSL_C/stdlib.h"
|
||||
|
||||
Reference in New Issue
Block a user