JASDriverIF, JASAiCtrl, JASDSPInterface (#1907)

* JASDriverIF

* JASDriverIF sinit

* JASAiCtrl

* JASDSPInterface
This commit is contained in:
Jcw87
2023-09-03 01:34:50 +03:00
committed by GitHub
parent 71b0551040
commit ce78c773b7
69 changed files with 787 additions and 1419 deletions
+1 -1
View File
@@ -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"
File diff suppressed because it is too large Load Diff
+1
View File
@@ -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"
+1 -1
View File
@@ -4,7 +4,7 @@
//
#include "JSystem/JAudio2/JASCallback.h"
#include "JSystem/JAudio2/JASAudioReseter.h"
#include "JSystem/JAudio2/JASCriticalSection.h"
//
// Types:
File diff suppressed because it is too large Load Diff
+36 -165
View File
@@ -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
+19 -17
View File
@@ -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 */