JASDSPInterface OK, minor work on JASAiCtrl (#1908)

This commit is contained in:
hatal175
2023-09-04 16:41:17 +03:00
committed by GitHub
parent d98444fe4e
commit a8c261a943
7 changed files with 394 additions and 697 deletions
@@ -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
@@ -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
@@ -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
@@ -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
+25 -4
View File
@@ -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;
};
+3 -21
View File
@@ -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);
File diff suppressed because it is too large Load Diff