diff --git a/asm/JSystem/JAudio2/JASAiCtrl/updateDac__9JASDriverFv.s b/asm/JSystem/JAudio2/JASAiCtrl/updateDac__9JASDriverFv.s deleted file mode 100644 index 2be30bc155..0000000000 --- a/asm/JSystem/JAudio2/JASAiCtrl/updateDac__9JASDriverFv.s +++ /dev/null @@ -1,94 +0,0 @@ -lbl_8029C568: -/* 8029C568 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029C56C 7C 08 02 A6 */ mflr r0 -/* 8029C570 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029C574 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8029C578 88 0D 8D 4C */ lbz r0, data_804512CC(r13) -/* 8029C57C 7C 00 07 75 */ extsb. r0, r0 -/* 8029C580 40 82 00 14 */ bne lbl_8029C594 -/* 8029C584 38 00 00 00 */ li r0, 0 -/* 8029C588 90 0D 8D 48 */ stw r0, dacp(r13) -/* 8029C58C 38 00 00 01 */ li r0, 1 -/* 8029C590 98 0D 8D 4C */ stb r0, data_804512CC(r13) -lbl_8029C594: -/* 8029C594 83 ED 8D 34 */ lwz r31, lastRspMadep__9JASDriver(r13) -/* 8029C598 38 00 00 00 */ li r0, 0 -/* 8029C59C 90 0D 8D 34 */ stw r0, lastRspMadep__9JASDriver(r13) -/* 8029C5A0 28 1F 00 00 */ cmplwi r31, 0 -/* 8029C5A4 41 82 00 14 */ beq lbl_8029C5B8 -/* 8029C5A8 48 00 04 51 */ bl getDacSize__9JASDriverFv -/* 8029C5AC 54 64 08 3C */ slwi r4, r3, 1 -/* 8029C5B0 7F E3 FB 78 */ mr r3, r31 -/* 8029C5B4 48 0B 37 01 */ bl AIInitDMA -lbl_8029C5B8: -/* 8029C5B8 48 00 04 4D */ bl getFrameSamples__9JASDriverFv -/* 8029C5BC 7C 64 1B 78 */ mr r4, r3 -/* 8029C5C0 80 0D 8D 48 */ lwz r0, dacp(r13) -/* 8029C5C4 54 00 10 3A */ slwi r0, r0, 2 -/* 8029C5C8 3C 60 80 43 */ lis r3, sDmaDacBuffer__9JASDriver@ha /* 0x80431C58@ha */ -/* 8029C5CC 38 63 1C 58 */ addi r3, r3, sDmaDacBuffer__9JASDriver@l /* 0x80431C58@l */ -/* 8029C5D0 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8029C5D4 7C 9F 23 78 */ mr r31, r4 -/* 8029C5D8 48 00 02 09 */ bl readDspBuffer__9JASDriverFPsUl -/* 8029C5DC 80 0D 8D 2C */ lwz r0, sDspStatus__9JASDriver(r13) -/* 8029C5E0 2C 00 00 00 */ cmpwi r0, 0 -/* 8029C5E4 40 82 00 08 */ bne lbl_8029C5EC -/* 8029C5E8 48 00 03 19 */ bl finishDSPFrame__9JASDriverFv -lbl_8029C5EC: -/* 8029C5EC 80 AD 8D 3C */ lwz r5, extMixCallback__9JASDriver(r13) -/* 8029C5F0 28 05 00 00 */ cmplwi r5, 0 -/* 8029C5F4 41 82 00 38 */ beq lbl_8029C62C -/* 8029C5F8 80 0D 8D 48 */ lwz r0, dacp(r13) -/* 8029C5FC 54 00 10 3A */ slwi r0, r0, 2 -/* 8029C600 3C 60 80 43 */ lis r3, sDmaDacBuffer__9JASDriver@ha /* 0x80431C58@ha */ -/* 8029C604 38 63 1C 58 */ addi r3, r3, sDmaDacBuffer__9JASDriver@l /* 0x80431C58@l */ -/* 8029C608 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8029C60C 7F E4 FB 78 */ mr r4, r31 -/* 8029C610 80 0D 82 2C */ lwz r0, sMixMode__9JASDriver(r13) -/* 8029C614 54 00 10 3A */ slwi r0, r0, 2 -/* 8029C618 3C C0 80 3A */ lis r6, sMixFuncs__9JASDriver@ha /* 0x8039B2E0@ha */ -/* 8029C61C 38 C6 B2 E0 */ addi r6, r6, sMixFuncs__9JASDriver@l /* 0x8039B2E0@l */ -/* 8029C620 7D 86 00 2E */ lwzx r12, r6, r0 -/* 8029C624 7D 89 03 A6 */ mtctr r12 -/* 8029C628 4E 80 04 21 */ bctrl -lbl_8029C62C: -/* 8029C62C 48 0A 10 C9 */ bl OSDisableInterrupts -/* 8029C630 90 61 00 08 */ stw r3, 8(r1) -/* 8029C634 48 00 03 C5 */ bl getDacSize__9JASDriverFv -/* 8029C638 54 64 08 3C */ slwi r4, r3, 1 -/* 8029C63C 80 0D 8D 48 */ lwz r0, dacp(r13) -/* 8029C640 54 00 10 3A */ slwi r0, r0, 2 -/* 8029C644 3C 60 80 43 */ lis r3, sDmaDacBuffer__9JASDriver@ha /* 0x80431C58@ha */ -/* 8029C648 38 63 1C 58 */ addi r3, r3, sDmaDacBuffer__9JASDriver@l /* 0x80431C58@l */ -/* 8029C64C 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8029C650 48 09 EF 8D */ bl DCStoreRange -/* 8029C654 80 61 00 08 */ lwz r3, 8(r1) -/* 8029C658 48 0A 10 C5 */ bl OSRestoreInterrupts -/* 8029C65C 80 8D 8D 48 */ lwz r4, dacp(r13) -/* 8029C660 54 80 10 3A */ slwi r0, r4, 2 -/* 8029C664 3C 60 80 43 */ lis r3, sDmaDacBuffer__9JASDriver@ha /* 0x80431C58@ha */ -/* 8029C668 38 63 1C 58 */ addi r3, r3, sDmaDacBuffer__9JASDriver@l /* 0x80431C58@l */ -/* 8029C66C 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8029C670 90 0D 8D 34 */ stw r0, lastRspMadep__9JASDriver(r13) -/* 8029C674 38 04 00 01 */ addi r0, r4, 1 -/* 8029C678 90 0D 8D 48 */ stw r0, dacp(r13) -/* 8029C67C 28 00 00 03 */ cmplwi r0, 3 -/* 8029C680 41 80 00 0C */ blt lbl_8029C68C -/* 8029C684 38 00 00 00 */ li r0, 0 -/* 8029C688 90 0D 8D 48 */ stw r0, dacp(r13) -lbl_8029C68C: -/* 8029C68C 80 0D 8D 38 */ lwz r0, dacCallbackFunc__9JASDriver(r13) -/* 8029C690 28 00 00 00 */ cmplwi r0, 0 -/* 8029C694 41 82 00 1C */ beq lbl_8029C6B0 -/* 8029C698 48 00 03 6D */ bl getFrameSamples__9JASDriverFv -/* 8029C69C 7C 64 1B 78 */ mr r4, r3 -/* 8029C6A0 80 6D 8D 34 */ lwz r3, lastRspMadep__9JASDriver(r13) -/* 8029C6A4 81 8D 8D 38 */ lwz r12, dacCallbackFunc__9JASDriver(r13) -/* 8029C6A8 7D 89 03 A6 */ mtctr r12 -/* 8029C6AC 4E 80 04 21 */ bctrl -lbl_8029C6B0: -/* 8029C6B0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8029C6B4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029C6B8 7C 08 03 A6 */ mtlr r0 -/* 8029C6BC 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029C6C0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASDSPInterface/initFilter__Q26JASDsp8TChannelFv.s b/asm/JSystem/JAudio2/JASDSPInterface/initFilter__Q26JASDsp8TChannelFv.s deleted file mode 100644 index 6a0108982b..0000000000 --- a/asm/JSystem/JAudio2/JASDSPInterface/initFilter__Q26JASDsp8TChannelFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8029DFB0: -/* 8029DFB0 38 80 00 00 */ li r4, 0 -/* 8029DFB4 7C 85 23 78 */ mr r5, r4 -/* 8029DFB8 38 00 00 08 */ li r0, 8 -/* 8029DFBC 7C 09 03 A6 */ mtctr r0 -lbl_8029DFC0: -/* 8029DFC0 38 04 01 20 */ addi r0, r4, 0x120 -/* 8029DFC4 7C A3 03 2E */ sthx r5, r3, r0 -/* 8029DFC8 38 84 00 02 */ addi r4, r4, 2 -/* 8029DFCC 42 00 FF F4 */ bdnz lbl_8029DFC0 -/* 8029DFD0 38 00 7F FF */ li r0, 0x7fff -/* 8029DFD4 B0 03 01 20 */ sth r0, 0x120(r3) -/* 8029DFD8 38 A0 00 00 */ li r5, 0 -/* 8029DFDC 38 80 00 00 */ li r4, 0 -/* 8029DFE0 38 00 00 08 */ li r0, 8 -/* 8029DFE4 7C 09 03 A6 */ mtctr r0 -lbl_8029DFE8: -/* 8029DFE8 38 04 01 48 */ addi r0, r4, 0x148 -/* 8029DFEC 7C A3 03 2E */ sthx r5, r3, r0 -/* 8029DFF0 38 84 00 02 */ addi r4, r4, 2 -/* 8029DFF4 42 00 FF F4 */ bdnz lbl_8029DFE8 -/* 8029DFF8 38 00 7F FF */ li r0, 0x7fff -/* 8029DFFC B0 03 01 48 */ sth r0, 0x148(r3) -/* 8029E000 38 00 00 00 */ li r0, 0 -/* 8029E004 B0 03 01 50 */ sth r0, 0x150(r3) -/* 8029E008 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASDSPInterface/playStart__Q26JASDsp8TChannelFv.s b/asm/JSystem/JAudio2/JASDSPInterface/playStart__Q26JASDsp8TChannelFv.s deleted file mode 100644 index 38545cad49..0000000000 --- a/asm/JSystem/JAudio2/JASDSPInterface/playStart__Q26JASDsp8TChannelFv.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8029DCE0: -/* 8029DCE0 38 A0 00 00 */ li r5, 0 -/* 8029DCE4 90 A3 01 0C */ stw r5, 0x10c(r3) -/* 8029DCE8 B0 A3 00 60 */ sth r5, 0x60(r3) -/* 8029DCEC 38 00 00 01 */ li r0, 1 -/* 8029DCF0 B0 03 00 08 */ sth r0, 8(r3) -/* 8029DCF4 B0 A3 00 66 */ sth r5, 0x66(r3) -/* 8029DCF8 7C A4 2B 78 */ mr r4, r5 -/* 8029DCFC 38 00 00 04 */ li r0, 4 -/* 8029DD00 7C 09 03 A6 */ mtctr r0 -lbl_8029DD04: -/* 8029DD04 7C C3 22 14 */ add r6, r3, r4 -/* 8029DD08 B0 A6 00 78 */ sth r5, 0x78(r6) -/* 8029DD0C B0 A6 00 A8 */ sth r5, 0xa8(r6) -/* 8029DD10 38 84 00 02 */ addi r4, r4, 2 -/* 8029DD14 42 00 FF F0 */ bdnz lbl_8029DD04 -/* 8029DD18 38 A0 00 00 */ li r5, 0 -/* 8029DD1C 38 80 00 00 */ li r4, 0 -/* 8029DD20 38 00 00 14 */ li r0, 0x14 -/* 8029DD24 7C 09 03 A6 */ mtctr r0 -lbl_8029DD28: -/* 8029DD28 38 04 00 80 */ addi r0, r4, 0x80 -/* 8029DD2C 7C A3 03 2E */ sthx r5, r3, r0 -/* 8029DD30 38 84 00 02 */ addi r4, r4, 2 -/* 8029DD34 42 00 FF F4 */ bdnz lbl_8029DD28 -/* 8029DD38 38 00 00 01 */ li r0, 1 -/* 8029DD3C B0 03 00 00 */ sth r0, 0(r3) -/* 8029DD40 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASDSPInterface/setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_.s b/asm/JSystem/JAudio2/JASDSPInterface/setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_.s deleted file mode 100644 index 472c8d91f2..0000000000 --- a/asm/JSystem/JAudio2/JASDSPInterface/setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_8029DB78: -/* 8029DB78 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029DB7C 7C 08 02 A6 */ mflr r0 -/* 8029DB80 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029DB84 39 61 00 20 */ addi r11, r1, 0x20 -/* 8029DB88 48 0C 46 51 */ bl _savegpr_28 -/* 8029DB8C 7C 9D 23 78 */ mr r29, r4 -/* 8029DB90 7C BE 2B 78 */ mr r30, r5 -/* 8029DB94 80 8D 8D 6C */ lwz r4, FX_BUF__6JASDsp(r13) -/* 8029DB98 54 60 2C F4 */ rlwinm r0, r3, 5, 0x13, 0x1a -/* 8029DB9C 7F E4 02 14 */ add r31, r4, r0 -/* 8029DBA0 48 09 FB 55 */ bl OSDisableInterrupts -/* 8029DBA4 90 61 00 08 */ stw r3, 8(r1) -/* 8029DBA8 38 00 00 00 */ li r0, 0 -/* 8029DBAC B0 1F 00 00 */ sth r0, 0(r31) -/* 8029DBB0 28 1E 00 00 */ cmplwi r30, 0 -/* 8029DBB4 41 82 00 54 */ beq lbl_8029DC08 -/* 8029DBB8 A8 1E 00 04 */ lha r0, 4(r30) -/* 8029DBBC B0 1F 00 0A */ sth r0, 0xa(r31) -/* 8029DBC0 A0 1E 00 02 */ lhz r0, 2(r30) -/* 8029DBC4 54 00 08 3C */ slwi r0, r0, 1 -/* 8029DBC8 3C 60 80 3C */ lis r3, SEND_TABLE__6JASDsp@ha /* 0x803C78F0@ha */ -/* 8029DBCC 38 63 78 F0 */ addi r3, r3, SEND_TABLE__6JASDsp@l /* 0x803C78F0@l */ -/* 8029DBD0 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8029DBD4 B0 1F 00 08 */ sth r0, 8(r31) -/* 8029DBD8 A8 1E 00 08 */ lha r0, 8(r30) -/* 8029DBDC B0 1F 00 0E */ sth r0, 0xe(r31) -/* 8029DBE0 A0 1E 00 06 */ lhz r0, 6(r30) -/* 8029DBE4 54 00 08 3C */ slwi r0, r0, 1 -/* 8029DBE8 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8029DBEC B0 1F 00 0C */ sth r0, 0xc(r31) -/* 8029DBF0 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 8029DBF4 B0 1F 00 02 */ sth r0, 2(r31) -/* 8029DBF8 38 7F 00 10 */ addi r3, r31, 0x10 -/* 8029DBFC 38 9E 00 10 */ addi r4, r30, 0x10 -/* 8029DC00 38 A0 00 08 */ li r5, 8 -/* 8029DC04 4B FF FE 45 */ bl setFilterTable__6JASDspFPsPsUl -lbl_8029DC08: -/* 8029DC08 28 1D 00 00 */ cmplwi r29, 0 -/* 8029DC0C 41 82 00 34 */ beq lbl_8029DC40 -/* 8029DC10 28 1E 00 00 */ cmplwi r30, 0 -/* 8029DC14 41 82 00 2C */ beq lbl_8029DC40 -/* 8029DC18 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 8029DC1C 1F 80 00 A0 */ mulli r28, r0, 0xa0 -/* 8029DC20 93 BF 00 04 */ stw r29, 4(r31) -/* 8029DC24 7F A3 EB 78 */ mr r3, r29 -/* 8029DC28 7F 84 E3 78 */ mr r4, r28 -/* 8029DC2C 4B FF 18 55 */ bl bzero__7JASCalcFPvUl -/* 8029DC30 7F A3 EB 78 */ mr r3, r29 -/* 8029DC34 7F 84 E3 78 */ mr r4, r28 -/* 8029DC38 48 09 D9 75 */ bl DCFlushRange -/* 8029DC3C 48 00 00 18 */ b lbl_8029DC54 -lbl_8029DC40: -/* 8029DC40 28 1E 00 00 */ cmplwi r30, 0 -/* 8029DC44 41 82 00 0C */ beq lbl_8029DC50 -/* 8029DC48 28 1D 00 00 */ cmplwi r29, 0 -/* 8029DC4C 41 82 00 08 */ beq lbl_8029DC54 -lbl_8029DC50: -/* 8029DC50 93 BF 00 04 */ stw r29, 4(r31) -lbl_8029DC54: -/* 8029DC54 80 1F 00 04 */ lwz r0, 4(r31) -/* 8029DC58 28 00 00 00 */ cmplwi r0, 0 -/* 8029DC5C 41 82 00 10 */ beq lbl_8029DC6C -/* 8029DC60 88 1E 00 00 */ lbz r0, 0(r30) -/* 8029DC64 B0 1F 00 00 */ sth r0, 0(r31) -/* 8029DC68 48 00 00 0C */ b lbl_8029DC74 -lbl_8029DC6C: -/* 8029DC6C 38 00 00 00 */ li r0, 0 -/* 8029DC70 B0 1F 00 00 */ sth r0, 0(r31) -lbl_8029DC74: -/* 8029DC74 7F E3 FB 78 */ mr r3, r31 -/* 8029DC78 38 80 00 20 */ li r4, 0x20 -/* 8029DC7C 48 09 D9 31 */ bl DCFlushRange -/* 8029DC80 80 61 00 08 */ lwz r3, 8(r1) -/* 8029DC84 48 09 FA 99 */ bl OSRestoreInterrupts -/* 8029DC88 38 60 00 01 */ li r3, 1 -/* 8029DC8C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8029DC90 48 0C 45 95 */ bl _restgpr_28 -/* 8029DC94 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029DC98 7C 08 03 A6 */ mtlr r0 -/* 8029DC9C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029DCA0 4E 80 00 20 */ blr diff --git a/include/JSystem/JAudio2/JASDSPInterface.h b/include/JSystem/JAudio2/JASDSPInterface.h index 174cc6138d..bae5e430ac 100644 --- a/include/JSystem/JAudio2/JASDSPInterface.h +++ b/include/JSystem/JAudio2/JASDSPInterface.h @@ -6,7 +6,28 @@ struct JASWaveInfo; namespace JASDsp { - struct FxlineConfig_ {}; + struct FxlineConfig_ { + u8 field_0x0; + u8 field_0x1; + u16 field_0x2; + s16 field_0x4; + u16 field_0x6; + s16 field_0x8; + u16 field_0xa; + u32 field_0xc; + s16 field_0x10[8]; + }; + + typedef struct { + s16 field_0x0; + s16 field_0x2; + s16* field_0x4; + s16 field_0x8; + s16 field_0xa; + s16 field_0xc; + s16 field_0xe; + s16 field_0x10[8]; + } FxBuf; struct TChannel { /* 8029DCA4 */ void init(); @@ -89,13 +110,13 @@ namespace JASDsp { /* 8029DA6C */ void flushBuffer(); /* 8029DAA0 */ void invalChannelAll(); /* 8029DAC8 */ void initBuffer(); - /* 8029DB78 */ void setFXLine(u8, s16*, JASDsp::FxlineConfig_*); + /* 8029DB78 */ int setFXLine(u8, s16*, JASDsp::FxlineConfig_*); extern u8 const DSPADPCM_FILTER[64]; - extern void* const DSPRES_FILTER[320]; + extern u32 const DSPRES_FILTER[320]; extern u16 SEND_TABLE[12 + 12 /* padding */]; extern TChannel* CH_BUF; - extern void* FX_BUF; + extern FxBuf* FX_BUF; extern f32 sDSPVolume; }; diff --git a/libs/JSystem/JAudio2/JASAiCtrl.cpp b/libs/JSystem/JAudio2/JASAiCtrl.cpp index fad0cd0a4b..0120962208 100644 --- a/libs/JSystem/JAudio2/JASAiCtrl.cpp +++ b/libs/JSystem/JAudio2/JASAiCtrl.cpp @@ -156,7 +156,7 @@ void JASDriver::initAI(void (*param_0)(void)) { JASCalc::bzero(sDmaDacBuffer[i], size); DCStoreRange(sDmaDacBuffer[i], size); } - sDspDacBuffer = new(JASDram, 0) void*[data_804507A8]; + sDspDacBuffer = new(JASDram, 0) s16*[data_804507A8]; for (int i = 0; i < data_804507A8; i++) { sDspDacBuffer[i] = new(JASDram, 0x20) s16[getDacSize()]; JASCalc::bzero(sDspDacBuffer[i], size); @@ -250,15 +250,7 @@ COMPILER_STRIP_GATE(0x8039B2E0, &JASDriver::sMixFuncs); /* 804512C4-804512C8 0007C4 0004+00 2/1 0/0 0/0 .sbss sSubFrameCounter__9JASDriver */ u32 JASDriver::sSubFrameCounter; -/* 804512C8-804512CC 0007C8 0004+00 1/1 0/0 0/0 .sbss dacp$239 */ -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; @@ -266,7 +258,7 @@ void JASDriver::updateDac() { if (r30) { AIInitDMA((u32)r30, getDacSize() * 2); } - u32 frameSamples = getFrameSamples(); + s32 frameSamples = getFrameSamples(); readDspBuffer(sDmaDacBuffer[dacp], frameSamples); if (sDspStatus == 0) { finishDSPFrame(); @@ -287,16 +279,6 @@ void JASDriver::updateDac() { dacCallbackFunc(lastRspMadep, getFrameSamples()); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASDriver::updateDac() { - nofralloc -#include "asm/JSystem/JAudio2/JASAiCtrl/updateDac__9JASDriverFv.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -471,7 +453,7 @@ SECTION_DEAD static char const* const stringBase_8039B315 = "MONO-MIX"; 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) { + if (r31 == NULL) { return; } JASProbe::stop(5); diff --git a/libs/JSystem/JAudio2/JASDSPInterface.cpp b/libs/JSystem/JAudio2/JASDSPInterface.cpp index 240fcf5efb..9e3844cfdf 100644 --- a/libs/JSystem/JAudio2/JASDSPInterface.cpp +++ b/libs/JSystem/JAudio2/JASDSPInterface.cpp @@ -9,8 +9,8 @@ #include "JSystem/JAudio2/JASWaveInfo.h" #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp_task.h" +#include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dol2asm.h" #include "dolphin/dsp/dsp.h" #include "dolphin/os/OSCache.h" @@ -18,67 +18,10 @@ // Forward References: // -extern "C" void boot__6JASDspFPFPv_v(); -extern "C" void releaseHalt__6JASDspFUl(); -extern "C" void finishWork__6JASDspFUs(); -extern "C" void syncFrame__6JASDspFUlUlUl(); -extern "C" void setDSPMixerLevel__6JASDspFf(); -extern "C" void getDSPMixerLevel__6JASDspFv(); -extern "C" void getDSPHandle__6JASDspFi(); -extern "C" void setFilterTable__6JASDspFPsPsUl(); -extern "C" void flushBuffer__6JASDspFv(); -extern "C" void invalChannelAll__6JASDspFv(); -extern "C" void initBuffer__6JASDspFv(); -extern "C" void setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_(); -extern "C" void init__Q26JASDsp8TChannelFv(); -extern "C" void playStart__Q26JASDsp8TChannelFv(); -extern "C" void playStop__Q26JASDsp8TChannelFv(); -extern "C" void replyFinishRequest__Q26JASDsp8TChannelFv(); -extern "C" void forceStop__Q26JASDsp8TChannelFv(); -extern "C" void isActive__Q26JASDsp8TChannelCFv(); -extern "C" void isFinish__Q26JASDsp8TChannelCFv(); -extern "C" void setWaveInfo__Q26JASDsp8TChannelFRC11JASWaveInfoUlUl(); -extern "C" void setOscInfo__Q26JASDsp8TChannelFUl(); -extern "C" void initAutoMixer__Q26JASDsp8TChannelFv(); -extern "C" void setAutoMixer__Q26JASDsp8TChannelFUsUcUcUcUc(); -extern "C" void setPitch__Q26JASDsp8TChannelFUs(); -extern "C" void setMixerInitVolume__Q26JASDsp8TChannelFUcs(); -extern "C" void setMixerVolume__Q26JASDsp8TChannelFUcs(); -extern "C" void setPauseFlag__Q26JASDsp8TChannelFUc(); -extern "C" void flush__Q26JASDsp8TChannelFv(); -extern "C" void initFilter__Q26JASDsp8TChannelFv(); -extern "C" void setFilterMode__Q26JASDsp8TChannelFUs(); -extern "C" void setIIRFilterParam__Q26JASDsp8TChannelFPs(); -extern "C" void setFIR8FilterParam__Q26JASDsp8TChannelFPs(); -extern "C" void setDistFilter__Q26JASDsp8TChannelFs(); -extern "C" void setBusConnect__Q26JASDsp8TChannelFUcUc(); -extern "C" void DSP_CreateMap2__FUl(); -extern "C" u8 const DSPADPCM_FILTER__6JASDsp[64]; -extern "C" void* const DSPRES_FILTER__6JASDsp[320]; -extern "C" u8 SEND_TABLE__6JASDsp[24 + 24 /* padding */]; -extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */]; -extern "C" u8 CH_BUF__6JASDsp[4]; -extern "C" u8 FX_BUF__6JASDsp[4]; -extern "C" f32 sDSPVolume__6JASDsp; - // // External References: // -extern "C" void cDyl_InitAsyncIsDone__Fv(); -extern "C" void bzero__7JASCalcFPvUl(); -extern "C" void DSPReleaseHalt2__FUl(); -extern "C" void DsetupTable__FUlUlUlUlUl(); -extern "C" void DsetMixerLevel__Ff(); -extern "C" void DspBoot__FPFPv_v(); -extern "C" void DspFinishWork__FUs(); -extern "C" void DsyncFrame2__FUlUlUl(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - // // Declarations: // @@ -88,7 +31,7 @@ extern "C" void _restgpr_29(); JASDsp::TChannel* JASDsp::CH_BUF; /* 804512EC-804512F0 0007EC 0004+00 3/3 0/0 0/0 .sbss FX_BUF__6JASDsp */ -void* JASDsp::FX_BUF; +JASDsp::FxBuf* JASDsp::FX_BUF; /* 804512F0-804512F4 0007F0 0004+00 2/2 0/0 0/0 .sbss sDSPVolume__6JASDsp */ f32 JASDsp::sDSPVolume; @@ -117,10 +60,6 @@ void JASDsp::syncFrame(u32 param_0, u32 param_1, u32 param_2) { DsyncFrame2(param_0, param_1, param_2); } -/* ############################################################################################## */ -/* 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 */ void JASDsp::setDSPMixerLevel(f32 dsp_level) { sDSPVolume = dsp_level; @@ -148,7 +87,7 @@ void JASDsp::setFilterTable(s16* param_0, s16* param_1, u32 param_2) { /* 8029DA6C-8029DAA0 2983AC 0034+00 1/1 0/0 0/0 .text flushBuffer__6JASDspFv */ void JASDsp::flushBuffer() { DCFlushRange(CH_BUF, sizeof(TChannel) * 64); - DCFlushRange(FX_BUF, 0x80); + DCFlushRange(FX_BUF, sizeof(FxBuf) * 4); } /* 8029DAA0-8029DAC8 2983E0 0028+00 0/0 1/1 0/0 .text invalChannelAll__6JASDspFv */ @@ -158,345 +97,343 @@ void JASDsp::invalChannelAll() { /* ############################################################################################## */ /* 8039B360-8039B3A0 0279C0 0040+00 1/1 0/0 0/0 .rodata DSPADPCM_FILTER__6JASDsp */ -SECTION_RODATA u8 const JASDsp::DSPADPCM_FILTER[64] = { +u8 const JASDsp::DSPADPCM_FILTER[64] = { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x10, 0x00, 0xF8, 0x00, 0x0E, 0x00, 0xFA, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0x12, 0x00, 0xF6, 0x00, 0x10, 0x68, 0xF7, 0x38, 0x12, 0xC0, 0xF7, 0x04, 0x14, 0x00, 0xF4, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x04, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x04, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, }; -COMPILER_STRIP_GATE(0x8039B360, &JASDsp::DSPADPCM_FILTER); /* 8039B3A0-8039B8A0 -00001 0500+00 1/1 0/0 0/0 .rodata DSPRES_FILTER__6JASDsp */ -SECTION_RODATA void* const JASDsp::DSPRES_FILTER[320] = { - (void*)0x0C3966AD, - (void*)0x0D46FFDF, - (void*)0x0B396696, - (void*)0x0E5FFFD8, - (void*)0x0A446669, - (void*)0x0F83FFD0, - (void*)0x095A6626, - (void*)0x10B4FFC8, - (void*)0x087D65CD, - (void*)0x11F0FFBF, - (void*)0x07AB655E, - (void*)0x1338FFB6, - (void*)0x06E464D9, - (void*)0x148CFFAC, - (void*)0x0628643F, - (void*)0x15EBFFA1, - (void*)0x0577638F, - (void*)0x1756FF96, - (void*)0x04D162CB, - (void*)0x18CBFF8A, - (void*)0x043561F3, - (void*)0x1A4CFF7E, - (void*)0x03A46106, - (void*)0x1BD7FF71, - (void*)0x031C6007, - (void*)0x1D6CFF64, - (void*)0x029F5EF5, - (void*)0x1F0BFF56, - (void*)0x022A5DD0, - (void*)0x20B3FF48, - (void*)0x01BE5C9A, - (void*)0x2264FF3A, - (void*)0x015B5B53, - (void*)0x241EFF2C, - (void*)0x010159FC, - (void*)0x25E0FF1E, - (void*)0x00AE5896, - (void*)0x27A9FF10, - (void*)0x00635720, - (void*)0x297AFF02, - (void*)0x001F559D, - (void*)0x2B50FEF4, - (void*)0xFFE2540D, - (void*)0x2D2CFEE8, - (void*)0xFFAC5270, - (void*)0x2F0DFEDB, - (void*)0xFF7C50C7, - (void*)0x30F3FED0, - (void*)0xFF534F14, - (void*)0x32DCFEC6, - (void*)0xFF2E4D57, - (void*)0x34C8FEBD, - (void*)0xFF0F4B91, - (void*)0x36B6FEB6, - (void*)0xFEF549C2, - (void*)0x38A5FEB0, - (void*)0xFEDF47ED, - (void*)0x3A95FEAC, - (void*)0xFECE4611, - (void*)0x3C85FEAB, - (void*)0xFEC04430, - (void*)0x3E74FEAC, - (void*)0xFEB6424A, - (void*)0x4060FEAF, - (void*)0xFEAF4060, - (void*)0x424AFEB6, - (void*)0xFEAC3E74, - (void*)0x4430FEC0, - (void*)0xFEAB3C85, - (void*)0x4611FECE, - (void*)0xFEAC3A95, - (void*)0x47EDFEDF, - (void*)0xFEB038A5, - (void*)0x49C2FEF5, - (void*)0xFEB636B6, - (void*)0x4B91FF0F, - (void*)0xFEBD34C8, - (void*)0x4D57FF2E, - (void*)0xFEC632DC, - (void*)0x4F14FF53, - (void*)0xFED030F3, - (void*)0x50C7FF7C, - (void*)0xFEDB2F0D, - (void*)0x5270FFAC, - (void*)0xFEE82D2C, - (void*)0x540DFFE2, - (void*)0xFEF42B50, - (void*)0x559D001F, - (void*)0xFF02297A, - (void*)0x57200063, - (void*)0xFF1027A9, - (void*)0x589600AE, - (void*)0xFF1E25E0, - (void*)0x59FC0101, - (void*)0xFF2C241E, - (void*)0x5B53015B, - (void*)0xFF3A2264, - (void*)0x5C9A01BE, - (void*)0xFF4820B3, - (void*)0x5DD0022A, - (void*)0xFF561F0B, - (void*)0x5EF5029F, - (void*)0xFF641D6C, - (void*)0x6007031C, - (void*)0xFF711BD7, - (void*)0x610603A4, - (void*)0xFF7E1A4C, - (void*)0x61F30435, - (void*)0xFF8A18CB, - (void*)0x62CB04D1, - (void*)0xFF961756, - (void*)0x638F0577, - (void*)0xFFA115EB, - (void*)0x643F0628, - (void*)0xFFAC148C, - (void*)0x64D906E4, - (void*)0xFFB61338, - (void*)0x655E07AB, - (void*)0xFFBF11F0, - (void*)0x65CD087D, - (void*)0xFFC810B4, - (void*)0x6626095A, - (void*)0xFFD00F83, - (void*)0x66690A44, - (void*)0xFFD80E5F, - (void*)0x66960B39, - (void*)0xFFDF0D46, - (void*)0x66AD0C39, - (void*)0x00000C8B, - (void*)0x18F82527, - (void*)0x30FB3C56, - (void*)0x471C5133, - (void*)0x5A8262F1, - (void*)0x6A6D70E2, - (void*)0x76417A7C, - (void*)0x7D897F61, - (void*)0x7FFF7F61, - (void*)0x7D897A7C, - (void*)0x764170E2, - (void*)0x6A6D62F1, - (void*)0x5A825133, - (void*)0x471C3C56, - (void*)0x30FB2527, - (void*)0x18F80C8B, - (void*)0x0000F375, - (void*)0xE708DAD9, - (void*)0xCF05C3AA, - (void*)0xB8E4AECD, - (void*)0xA57E9D0F, - (void*)0x95938F1E, - (void*)0x89BF8584, - (void*)0x8277809F, - (void*)0x8001809F, - (void*)0x82778584, - (void*)0x89BF8F1E, - (void*)0x95939D0F, - (void*)0xA57EAECD, - (void*)0xB8E4C3AA, - (void*)0xCF05DAD9, - (void*)0xE708F375, - (void*)0x000007FF, - (void*)0x0FFF17FF, - (void*)0x1FFF27FF, - (void*)0x2FFF37FF, - (void*)0x3FFF47FF, - (void*)0x4FFF57FF, - (void*)0x5FFF67FF, - (void*)0x6FFF77FF, - (void*)0x7FFF7800, - (void*)0x70006800, - (void*)0x60005800, - (void*)0x50004800, - (void*)0x40003800, - (void*)0x30002800, - (void*)0x20001800, - (void*)0x10000800, - (void*)0x0000F801, - (void*)0xF001E801, - (void*)0xE001D801, - (void*)0xD001C801, - (void*)0xC001B801, - (void*)0xB001A801, - (void*)0xA0019801, - (void*)0x90018801, - (void*)(((char*)cDyl_InitAsyncIsDone__Fv) + 0x68), - (void*)0x90009800, - (void*)0xA000A800, - (void*)0xB000B800, - (void*)0xC000C800, - (void*)0xD000D800, - (void*)0xE000E800, - (void*)0xF000F800, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)0x1FFF3FFF, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)0x1FFFC001, - (void*)0x00000192, - (void*)0x032404B6, - (void*)0x064707D9, - (void*)0x096A0AFB, - (void*)0x0C8B0E1B, - (void*)0x0FAB1139, - (void*)0x12C71455, - (void*)0x15E1176D, - (void*)0x18F81A82, - (void*)0x1C0B1D93, - (void*)0x1F19209F, - (void*)0x222323A6, - (void*)0x252726A7, - (void*)0x282629A3, - (void*)0x2B1F2C98, - (void*)0x2E102F87, - (void*)0x30FB326E, - (void*)0x33DE354D, - (void*)0x36B93824, - (void*)0x398C3AF2, - (void*)0x3C563DB7, - (void*)0x3F174073, - (void*)0x41CD4325, - (void*)0x447A45CC, - (void*)0x471C4869, - (void*)0x49B34AFB, - (void*)0x4C3F4D81, - (void*)0x4EBF4FFB, - (void*)0x51335268, - (void*)0x539A54C9, - (void*)0x55F5571D, - (void*)0x58425964, - (void*)0x5A825B9C, - (void*)0x5CB35DC7, - (void*)0x5ED75FE3, - (void*)0x60EB61F0, - (void*)0x62F163EE, - (void*)0x64E865DD, - (void*)0x66CF67BC, - (void*)0x68A6698B, - (void*)0x6A6D6B4A, - (void*)0x6C236CF8, - (void*)0x6DC96E96, - (void*)0x6F5E7022, - (void*)0x70E2719D, - (void*)0x72547307, - (void*)0x73B5745F, - (void*)0x750475A5, - (void*)0x764176D8, - (void*)0x776B77FA, - (void*)0x78847909, - (void*)0x79897A05, - (void*)0x7A7C7AEE, - (void*)0x7B5C7BC5, - (void*)0x7C297C88, - (void*)0x7CE37D39, - (void*)0x7D897DD5, - (void*)0x7E1D7E5F, - (void*)0x7E9C7ED5, - (void*)0x7F097F37, - (void*)0x7F617F86, - (void*)0x7FA67FC1, - (void*)0x7FD87FE9, - (void*)0x7FF57FFD, +u32 const JASDsp::DSPRES_FILTER[320] = { + 0x0C3966AD, + 0x0D46FFDF, + 0x0B396696, + 0x0E5FFFD8, + 0x0A446669, + 0x0F83FFD0, + 0x095A6626, + 0x10B4FFC8, + 0x087D65CD, + 0x11F0FFBF, + 0x07AB655E, + 0x1338FFB6, + 0x06E464D9, + 0x148CFFAC, + 0x0628643F, + 0x15EBFFA1, + 0x0577638F, + 0x1756FF96, + 0x04D162CB, + 0x18CBFF8A, + 0x043561F3, + 0x1A4CFF7E, + 0x03A46106, + 0x1BD7FF71, + 0x031C6007, + 0x1D6CFF64, + 0x029F5EF5, + 0x1F0BFF56, + 0x022A5DD0, + 0x20B3FF48, + 0x01BE5C9A, + 0x2264FF3A, + 0x015B5B53, + 0x241EFF2C, + 0x010159FC, + 0x25E0FF1E, + 0x00AE5896, + 0x27A9FF10, + 0x00635720, + 0x297AFF02, + 0x001F559D, + 0x2B50FEF4, + 0xFFE2540D, + 0x2D2CFEE8, + 0xFFAC5270, + 0x2F0DFEDB, + 0xFF7C50C7, + 0x30F3FED0, + 0xFF534F14, + 0x32DCFEC6, + 0xFF2E4D57, + 0x34C8FEBD, + 0xFF0F4B91, + 0x36B6FEB6, + 0xFEF549C2, + 0x38A5FEB0, + 0xFEDF47ED, + 0x3A95FEAC, + 0xFECE4611, + 0x3C85FEAB, + 0xFEC04430, + 0x3E74FEAC, + 0xFEB6424A, + 0x4060FEAF, + 0xFEAF4060, + 0x424AFEB6, + 0xFEAC3E74, + 0x4430FEC0, + 0xFEAB3C85, + 0x4611FECE, + 0xFEAC3A95, + 0x47EDFEDF, + 0xFEB038A5, + 0x49C2FEF5, + 0xFEB636B6, + 0x4B91FF0F, + 0xFEBD34C8, + 0x4D57FF2E, + 0xFEC632DC, + 0x4F14FF53, + 0xFED030F3, + 0x50C7FF7C, + 0xFEDB2F0D, + 0x5270FFAC, + 0xFEE82D2C, + 0x540DFFE2, + 0xFEF42B50, + 0x559D001F, + 0xFF02297A, + 0x57200063, + 0xFF1027A9, + 0x589600AE, + 0xFF1E25E0, + 0x59FC0101, + 0xFF2C241E, + 0x5B53015B, + 0xFF3A2264, + 0x5C9A01BE, + 0xFF4820B3, + 0x5DD0022A, + 0xFF561F0B, + 0x5EF5029F, + 0xFF641D6C, + 0x6007031C, + 0xFF711BD7, + 0x610603A4, + 0xFF7E1A4C, + 0x61F30435, + 0xFF8A18CB, + 0x62CB04D1, + 0xFF961756, + 0x638F0577, + 0xFFA115EB, + 0x643F0628, + 0xFFAC148C, + 0x64D906E4, + 0xFFB61338, + 0x655E07AB, + 0xFFBF11F0, + 0x65CD087D, + 0xFFC810B4, + 0x6626095A, + 0xFFD00F83, + 0x66690A44, + 0xFFD80E5F, + 0x66960B39, + 0xFFDF0D46, + 0x66AD0C39, + 0x00000C8B, + 0x18F82527, + 0x30FB3C56, + 0x471C5133, + 0x5A8262F1, + 0x6A6D70E2, + 0x76417A7C, + 0x7D897F61, + 0x7FFF7F61, + 0x7D897A7C, + 0x764170E2, + 0x6A6D62F1, + 0x5A825133, + 0x471C3C56, + 0x30FB2527, + 0x18F80C8B, + 0x0000F375, + 0xE708DAD9, + 0xCF05C3AA, + 0xB8E4AECD, + 0xA57E9D0F, + 0x95938F1E, + 0x89BF8584, + 0x8277809F, + 0x8001809F, + 0x82778584, + 0x89BF8F1E, + 0x95939D0F, + 0xA57EAECD, + 0xB8E4C3AA, + 0xCF05DAD9, + 0xE708F375, + 0x000007FF, + 0x0FFF17FF, + 0x1FFF27FF, + 0x2FFF37FF, + 0x3FFF47FF, + 0x4FFF57FF, + 0x5FFF67FF, + 0x6FFF77FF, + 0x7FFF7800, + 0x70006800, + 0x60005800, + 0x50004800, + 0x40003800, + 0x30002800, + 0x20001800, + 0x10000800, + 0x0000F801, + 0xF001E801, + 0xE001D801, + 0xD001C801, + 0xC001B801, + 0xB001A801, + 0xA0019801, + 0x90018801, + 0x80018800, + 0x90009800, + 0xA000A800, + 0xB000B800, + 0xC000C800, + 0xD000D800, + 0xE000E800, + 0xF000F800, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0x1FFF3FFF, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0x1FFFC001, + 0x00000192, + 0x032404B6, + 0x064707D9, + 0x096A0AFB, + 0x0C8B0E1B, + 0x0FAB1139, + 0x12C71455, + 0x15E1176D, + 0x18F81A82, + 0x1C0B1D93, + 0x1F19209F, + 0x222323A6, + 0x252726A7, + 0x282629A3, + 0x2B1F2C98, + 0x2E102F87, + 0x30FB326E, + 0x33DE354D, + 0x36B93824, + 0x398C3AF2, + 0x3C563DB7, + 0x3F174073, + 0x41CD4325, + 0x447A45CC, + 0x471C4869, + 0x49B34AFB, + 0x4C3F4D81, + 0x4EBF4FFB, + 0x51335268, + 0x539A54C9, + 0x55F5571D, + 0x58425964, + 0x5A825B9C, + 0x5CB35DC7, + 0x5ED75FE3, + 0x60EB61F0, + 0x62F163EE, + 0x64E865DD, + 0x66CF67BC, + 0x68A6698B, + 0x6A6D6B4A, + 0x6C236CF8, + 0x6DC96E96, + 0x6F5E7022, + 0x70E2719D, + 0x72547307, + 0x73B5745F, + 0x750475A5, + 0x764176D8, + 0x776B77FA, + 0x78847909, + 0x79897A05, + 0x7A7C7AEE, + 0x7B5C7BC5, + 0x7C297C88, + 0x7CE37D39, + 0x7D897DD5, + 0x7E1D7E5F, + 0x7E9C7ED5, + 0x7F097F37, + 0x7F617F86, + 0x7FA67FC1, + 0x7FD87FE9, + 0x7FF57FFD, }; -COMPILER_STRIP_GATE(0x8039B3A0, &JASDsp::DSPRES_FILTER); /* 8029DAC8-8029DB78 298408 00B0+00 0/0 1/1 0/0 .text initBuffer__6JASDspFv */ void JASDsp::initBuffer() { CH_BUF = new(JASDram, 0x20) TChannel[64]; - FX_BUF = new(JASDram, 0x20) u8[0x80]; + FX_BUF = new(JASDram, 0x20) FxBuf[4]; JASCalc::bzero(CH_BUF, 0x6000); - JASCalc::bzero(FX_BUF, 0x80); + JASCalc::bzero(FX_BUF, sizeof(FxBuf) * 4); for (u8 i = 0; i < 4; i++) { setFXLine(i, NULL, NULL); } @@ -506,7 +443,7 @@ void JASDsp::initBuffer() { /* ############################################################################################## */ /* 803C78F0-803C7920 024A10 0018+18 1/1 0/0 0/0 .data SEND_TABLE__6JASDsp */ -SECTION_DATA u16 JASDsp::SEND_TABLE[12 + 12 /* padding */] = { +u16 JASDsp::SEND_TABLE[12 + 12 /* padding */] = { 0x0D00, 0x0D60, 0x0DC8, @@ -536,14 +473,35 @@ SECTION_DATA u16 JASDsp::SEND_TABLE[12 + 12 /* padding */] = { /* 8029DB78-8029DCA4 2984B8 012C+00 1/1 1/1 0/0 .text * setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_ */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASDsp::setFXLine(u8 param_0, s16* param_1, JASDsp::FxlineConfig_* param_2) { - nofralloc -#include "asm/JSystem/JAudio2/JASDSPInterface/setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_.s" +int JASDsp::setFXLine(u8 param_0, s16* param_1, JASDsp::FxlineConfig_* param_2) { + FxBuf* puVar3 = FX_BUF + param_0; + JASCriticalSection aJStack_20; + puVar3->field_0x0 = 0; + if (param_2 != NULL) { + puVar3->field_0xa = param_2->field_0x4; + puVar3->field_0x8 = SEND_TABLE[param_2->field_0x2]; + puVar3->field_0xe = param_2->field_0x8; + puVar3->field_0xc = SEND_TABLE[param_2->field_0x6]; + puVar3->field_0x2 = param_2->field_0xc; + setFilterTable(puVar3->field_0x10, param_2->field_0x10, 8); + } + if (param_1 != NULL && param_2 != NULL) { + u32 iVar1 = param_2->field_0xc * 0xa0; + puVar3->field_0x4 = param_1; + JASCalc::bzero(param_1, iVar1); + DCFlushRange(param_1, iVar1); + } else if (param_2 == NULL || param_1 != NULL) { + puVar3->field_0x4 = param_1; + } + + if (puVar3->field_0x4 != NULL) { + puVar3->field_0x0 = param_2->field_0x0; + } else { + puVar3->field_0x0 = 0; + } + DCFlushRange(puVar3, sizeof(FxBuf)); + return 1; } -#pragma pop /* 8029DCA4-8029DCE0 2985E4 003C+00 0/0 1/1 0/0 .text init__Q26JASDsp8TChannelFv */ void JASDsp::TChannel::init() { @@ -557,32 +515,21 @@ void JASDsp::TChannel::init() { } /* 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++) { + int i; + for (i = 0; i < 4; i++) { field_0x078[i] = 0; field_0x0a8[i] = 0; } - for (int i = 0; i < 20; i++) { + for (i = 0; i < 20; i++) { field_0x080[i] = 0; } mIsActive = 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASDsp::TChannel::playStart() { - nofralloc -#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 */ void JASDsp::TChannel::playStop() { @@ -612,12 +559,12 @@ bool JASDsp::TChannel::isFinish() const { /* ############################################################################################## */ /* 8045574C-80455754 003D4C 0008+00 1/1 0/0 0/0 .sdata2 COMP_BLOCKSAMPLES$331 */ -SECTION_SDATA2 static u8 COMP_BLOCKSAMPLES[8] = { +static const u8 COMP_BLOCKSAMPLES[8] = { 0x10, 0x10, 0x01, 0x01, 0x01, 0x10, 0x10, 0x01, }; /* 80455754-8045575C 003D54 0008+00 1/1 0/0 0/0 .sdata2 COMP_BLOCKBYTES$332 */ -SECTION_SDATA2 static u8 COMP_BLOCKBYTES[8] = { +static const u8 COMP_BLOCKBYTES[8] = { 0x09, 0x05, 0x08, 0x10, 0x01, 0x01, 0x01, 0x01, }; @@ -730,29 +677,18 @@ void JASDsp::TChannel::flush() { } /* 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++) { + int i; + for (i = 0; i < 8; i++) { fir_filter_params[i] = 0; } fir_filter_params[0] = 0x7fff; - for (int i = 0; i < 8; i++) { + for (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 -asm void JASDsp::TChannel::initFilter() { - nofralloc -#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 */ void JASDsp::TChannel::setFilterMode(u16 param_0) { @@ -788,11 +724,10 @@ void JASDsp::TChannel::setDistFilter(s16 param_0) { /* ############################################################################################## */ /* 8039B8A0-8039B8B8 027F00 0018+00 1/1 0/0 0/0 .rodata connect_table$463 */ -SECTION_RODATA static u16 const connect_table[12] = { +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 */ void JASDsp::TChannel::setBusConnect(u8 param_0, u8 param_1) { @@ -816,19 +751,8 @@ u16 DSP_CreateMap2(u32 param_0) { /* ############################################################################################## */ /* 804507B8-804507C0 000238 0004+04 0/0 5/5 0/0 .sdata one__11JASWaveInfo */ -SECTION_SDATA u32 JASWaveInfo::one[1 + 1 /* padding */] = { +u32 JASWaveInfo::one[1 + 1 /* padding */] = { 0x00000001, /* padding */ 0x00000000, }; - -/* 8045575C-80455760 -00001 0004+00 0/0 0/0 0/0 .sdata2 None */ -#pragma push -#pragma force_active on -SECTION_SDATA2 static u8 pad_8045575C[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -#pragma pop