diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s b/asm/JSystem/JAudio2/JASBasicWaveBank/decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s deleted file mode 100644 index c5d351e32f..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_8029883C: -/* 8029883C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80298840 7C 08 02 A6 */ mflr r0 -/* 80298844 90 01 00 34 */ stw r0, 0x34(r1) -/* 80298848 39 61 00 30 */ addi r11, r1, 0x30 -/* 8029884C 48 0C 99 81 */ bl _savegpr_25 -/* 80298850 7C 79 1B 78 */ mr r25, r3 -/* 80298854 7C 9A 23 78 */ mr r26, r4 -/* 80298858 38 79 00 04 */ addi r3, r25, 4 -/* 8029885C 90 61 00 08 */ stw r3, 8(r1) -/* 80298860 48 0A 67 E1 */ bl OSLockMutex -/* 80298864 3B 60 00 00 */ li r27, 0 -/* 80298868 3B 9A 00 04 */ addi r28, r26, 4 -/* 8029886C 3B A0 00 00 */ li r29, 0 -/* 80298870 3B CD 8C F8 */ la r30, mNoLoad__16JASBasicWaveBank(r13) /* 80451278-_SDA_BASE_ */ -/* 80298874 3B E0 FF FF */ li r31, -1 -/* 80298878 48 00 00 38 */ b lbl_802988B0 -lbl_8029887C: -/* 8029887C 7F 43 D3 78 */ mr r3, r26 -/* 80298880 7F 64 DB 78 */ mr r4, r27 -/* 80298884 48 00 02 D1 */ bl getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi -/* 80298888 1C 63 00 2C */ mulli r3, r3, 0x2c -/* 8029888C 80 19 00 1C */ lwz r0, 0x1c(r25) -/* 80298890 7C 60 1A 14 */ add r3, r0, r3 -/* 80298894 80 03 00 28 */ lwz r0, 0x28(r3) -/* 80298898 7C 00 E0 40 */ cmplw r0, r28 -/* 8029889C 40 82 00 10 */ bne lbl_802988AC -/* 802988A0 93 A3 00 28 */ stw r29, 0x28(r3) -/* 802988A4 93 C3 00 24 */ stw r30, 0x24(r3) -/* 802988A8 93 E3 00 0C */ stw r31, 0xc(r3) -lbl_802988AC: -/* 802988AC 3B 7B 00 01 */ addi r27, r27, 1 -lbl_802988B0: -/* 802988B0 A0 1A 00 7C */ lhz r0, 0x7c(r26) -/* 802988B4 7C 1B 00 40 */ cmplw r27, r0 -/* 802988B8 41 80 FF C4 */ blt lbl_8029887C -/* 802988BC 80 61 00 08 */ lwz r3, 8(r1) -/* 802988C0 48 0A 68 5D */ bl OSUnlockMutex -/* 802988C4 39 61 00 30 */ addi r11, r1, 0x30 -/* 802988C8 48 0C 99 51 */ bl _restgpr_25 -/* 802988CC 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802988D0 7C 08 03 A6 */ mtlr r0 -/* 802988D4 38 21 00 30 */ addi r1, r1, 0x30 -/* 802988D8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/func_80298910.s b/asm/JSystem/JAudio2/JASBasicWaveBank/func_80298910.s deleted file mode 100644 index c98949b006..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/func_80298910.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80298910: -/* 80298910 81 03 00 1C */ lwz r8, 0x1c(r3) -/* 80298914 54 C0 04 3E */ clrlwi r0, r6, 0x10 -/* 80298918 1D 60 00 2C */ mulli r11, r0, 0x2c -/* 8029891C 39 4B 00 04 */ addi r10, r11, 4 -/* 80298920 7D 48 52 14 */ add r10, r8, r10 -/* 80298924 88 07 00 00 */ lbz r0, 0(r7) -/* 80298928 98 0A 00 00 */ stb r0, 0(r10) -/* 8029892C 88 07 00 01 */ lbz r0, 1(r7) -/* 80298930 98 0A 00 01 */ stb r0, 1(r10) -/* 80298934 88 07 00 02 */ lbz r0, 2(r7) -/* 80298938 98 0A 00 02 */ stb r0, 2(r10) -/* 8029893C C0 07 00 04 */ lfs f0, 4(r7) -/* 80298940 D0 0A 00 04 */ stfs f0, 4(r10) -/* 80298944 81 27 00 08 */ lwz r9, 8(r7) -/* 80298948 91 2A 00 08 */ stw r9, 8(r10) -/* 8029894C 80 07 00 0C */ lwz r0, 0xc(r7) -/* 80298950 90 0A 00 0C */ stw r0, 0xc(r10) -/* 80298954 80 07 00 10 */ lwz r0, 0x10(r7) -/* 80298958 90 0A 00 10 */ stw r0, 0x10(r10) -/* 8029895C 80 07 00 14 */ lwz r0, 0x14(r7) -/* 80298960 90 0A 00 14 */ stw r0, 0x14(r10) -/* 80298964 80 07 00 18 */ lwz r0, 0x18(r7) -/* 80298968 90 0A 00 18 */ stw r0, 0x18(r10) -/* 8029896C A8 07 00 1C */ lha r0, 0x1c(r7) -/* 80298970 B0 0A 00 1C */ sth r0, 0x1c(r10) -/* 80298974 A8 07 00 1E */ lha r0, 0x1e(r7) -/* 80298978 B0 0A 00 1E */ sth r0, 0x1e(r10) -/* 8029897C 80 07 00 20 */ lwz r0, 0x20(r7) -/* 80298980 90 0A 00 20 */ stw r0, 0x20(r10) -/* 80298984 39 0D 8C F8 */ la r8, mNoLoad__16JASBasicWaveBank(r13) /* 80451278-_SDA_BASE_ */ -/* 80298988 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 8029898C 7C E0 5A 14 */ add r7, r0, r11 -/* 80298990 91 07 00 24 */ stw r8, 0x24(r7) -/* 80298994 38 E0 FF FF */ li r7, -1 -/* 80298998 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 8029899C 7C 60 5A 14 */ add r3, r0, r11 -/* 802989A0 90 E3 00 0C */ stw r7, 0xc(r3) -/* 802989A4 80 64 00 78 */ lwz r3, 0x78(r4) -/* 802989A8 54 A5 18 38 */ slwi r5, r5, 3 -/* 802989AC 7C C3 2B 2E */ sthx r6, r3, r5 -/* 802989B0 80 04 00 78 */ lwz r0, 0x78(r4) -/* 802989B4 7C 60 2A 14 */ add r3, r0, r5 -/* 802989B8 91 23 00 04 */ stw r9, 4(r3) -/* 802989BC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveGroup__16JASBasicWaveBankFUl.s b/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveGroup__16JASBasicWaveBankFUl.s deleted file mode 100644 index 78e1070490..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveGroup__16JASBasicWaveBankFUl.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80298640: -/* 80298640 A0 03 00 26 */ lhz r0, 0x26(r3) -/* 80298644 7C 04 00 40 */ cmplw r4, r0 -/* 80298648 41 80 00 0C */ blt lbl_80298654 -/* 8029864C 38 60 00 00 */ li r3, 0 -/* 80298650 4E 80 00 20 */ blr -lbl_80298654: -/* 80298654 80 63 00 20 */ lwz r3, 0x20(r3) -/* 80298658 54 80 38 30 */ slwi r0, r4, 7 -/* 8029865C 7C 63 02 14 */ add r3, r3, r0 -/* 80298660 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveHandle__16JASBasicWaveBankCFUl.s b/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveHandle__16JASBasicWaveBankCFUl.s deleted file mode 100644 index e94857f7c6..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveHandle__16JASBasicWaveBankCFUl.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_802988DC: -/* 802988DC A0 03 00 24 */ lhz r0, 0x24(r3) -/* 802988E0 7C 04 00 40 */ cmplw r4, r0 -/* 802988E4 41 80 00 0C */ blt lbl_802988F0 -/* 802988E8 38 60 00 00 */ li r3, 0 -/* 802988EC 4E 80 00 20 */ blr -lbl_802988F0: -/* 802988F0 80 63 00 1C */ lwz r3, 0x1c(r3) -/* 802988F4 1C 04 00 2C */ mulli r0, r4, 0x2c -/* 802988F8 7C 63 02 14 */ add r3, r3, r0 -/* 802988FC 80 03 00 28 */ lwz r0, 0x28(r3) -/* 80298900 28 00 00 00 */ cmplwi r0, 0 -/* 80298904 4C 82 00 20 */ bnelr -/* 80298908 38 60 00 00 */ li r3, 0 -/* 8029890C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi.s b/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi.s deleted file mode 100644 index 4a010365f7..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80298B54: -/* 80298B54 80 63 00 78 */ lwz r3, 0x78(r3) -/* 80298B58 54 80 18 38 */ slwi r0, r4, 3 -/* 80298B5C 7C 63 02 2E */ lhzx r3, r3, r0 -/* 80298B60 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv.s b/asm/JSystem/JAudio2/JASBasicWaveBank/getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv.s deleted file mode 100644 index b5e9d557c9..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80298B64: -/* 80298B64 80 83 00 28 */ lwz r4, 0x28(r3) -/* 80298B68 80 84 00 38 */ lwz r4, 0x38(r4) -/* 80298B6C 28 04 00 00 */ cmplwi r4, 0 -/* 80298B70 40 82 00 0C */ bne lbl_80298B7C -/* 80298B74 38 60 00 00 */ li r3, 0 -/* 80298B78 4E 80 00 20 */ blr -lbl_80298B7C: -/* 80298B7C 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80298B80 7C 64 02 14 */ add r3, r4, r0 -/* 80298B84 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv.s b/asm/JSystem/JAudio2/JASBasicWaveBank/onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv.s deleted file mode 100644 index 1927a4b879..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80298B2C: -/* 80298B2C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80298B30 7C 08 02 A6 */ mflr r0 -/* 80298B34 90 01 00 14 */ stw r0, 0x14(r1) -/* 80298B38 7C 64 1B 78 */ mr r4, r3 -/* 80298B3C 80 63 00 74 */ lwz r3, 0x74(r3) -/* 80298B40 4B FF FC FD */ bl decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup -/* 80298B44 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80298B48 7C 08 03 A6 */ mtlr r0 -/* 80298B4C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80298B50 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv.s b/asm/JSystem/JAudio2/JASBasicWaveBank/onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv.s deleted file mode 100644 index c1d8eaff44..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80298B04: -/* 80298B04 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80298B08 7C 08 02 A6 */ mflr r0 -/* 80298B0C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80298B10 7C 64 1B 78 */ mr r4, r3 -/* 80298B14 80 63 00 74 */ lwz r3, 0x74(r3) -/* 80298B18 4B FF FC 79 */ bl incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup -/* 80298B1C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80298B20 7C 08 03 A6 */ mtlr r0 -/* 80298B24 38 21 00 10 */ addi r1, r1, 0x10 -/* 80298B28 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/setGroupCount__16JASBasicWaveBankFUlP7JKRHeap.s b/asm/JSystem/JAudio2/JASBasicWaveBank/setGroupCount__16JASBasicWaveBankFUlP7JKRHeap.s deleted file mode 100644 index 643cc827ec..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/setGroupCount__16JASBasicWaveBankFUlP7JKRHeap.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80298664: -/* 80298664 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80298668 7C 08 02 A6 */ mflr r0 -/* 8029866C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80298670 39 61 00 20 */ addi r11, r1, 0x20 -/* 80298674 48 0C 9B 69 */ bl _savegpr_29 -/* 80298678 7C 7D 1B 78 */ mr r29, r3 -/* 8029867C 7C 9E 23 78 */ mr r30, r4 -/* 80298680 7C BF 2B 78 */ mr r31, r5 -/* 80298684 80 63 00 20 */ lwz r3, 0x20(r3) -/* 80298688 3C 80 80 2A */ lis r4, __dt__Q216JASBasicWaveBank10TWaveGroupFv@ha /* 0x80298A0C@ha */ -/* 8029868C 38 84 8A 0C */ addi r4, r4, __dt__Q216JASBasicWaveBank10TWaveGroupFv@l /* 0x80298A0C@l */ -/* 80298690 48 0C 95 DD */ bl __destroy_new_array -/* 80298694 B3 DD 00 26 */ sth r30, 0x26(r29) -/* 80298698 57 C3 38 30 */ slwi r3, r30, 7 -/* 8029869C 38 63 00 10 */ addi r3, r3, 0x10 -/* 802986A0 7F E4 FB 78 */ mr r4, r31 -/* 802986A4 38 A0 00 00 */ li r5, 0 -/* 802986A8 48 03 66 69 */ bl __nwa__FUlP7JKRHeapi -/* 802986AC 3C 80 80 2A */ lis r4, __ct__Q216JASBasicWaveBank10TWaveGroupFv@ha /* 0x802989C0@ha */ -/* 802986B0 38 84 89 C0 */ addi r4, r4, __ct__Q216JASBasicWaveBank10TWaveGroupFv@l /* 0x802989C0@l */ -/* 802986B4 3C A0 80 2A */ lis r5, __dt__Q216JASBasicWaveBank10TWaveGroupFv@ha /* 0x80298A0C@ha */ -/* 802986B8 38 A5 8A 0C */ addi r5, r5, __dt__Q216JASBasicWaveBank10TWaveGroupFv@l /* 0x80298A0C@l */ -/* 802986BC 38 C0 00 80 */ li r6, 0x80 -/* 802986C0 7F C7 F3 78 */ mr r7, r30 -/* 802986C4 48 0C 98 51 */ bl __construct_new_array -/* 802986C8 90 7D 00 20 */ stw r3, 0x20(r29) -/* 802986CC 38 A0 00 00 */ li r5, 0 -/* 802986D0 38 60 00 00 */ li r3, 0 -/* 802986D4 48 00 00 18 */ b lbl_802986EC -lbl_802986D8: -/* 802986D8 80 9D 00 20 */ lwz r4, 0x20(r29) -/* 802986DC 38 03 00 74 */ addi r0, r3, 0x74 -/* 802986E0 7F A4 01 2E */ stwx r29, r4, r0 -/* 802986E4 38 A5 00 01 */ addi r5, r5, 1 -/* 802986E8 38 63 00 80 */ addi r3, r3, 0x80 -lbl_802986EC: -/* 802986EC A0 1D 00 26 */ lhz r0, 0x26(r29) -/* 802986F0 7C 05 00 00 */ cmpw r5, r0 -/* 802986F4 41 80 FF E4 */ blt lbl_802986D8 -/* 802986F8 39 61 00 20 */ addi r11, r1, 0x20 -/* 802986FC 48 0C 9B 2D */ bl _restgpr_29 -/* 80298700 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80298704 7C 08 03 A6 */ mtlr r0 -/* 80298708 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029870C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap.s b/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap.s deleted file mode 100644 index defab3a907..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80298A84: -/* 80298A84 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80298A88 7C 08 02 A6 */ mflr r0 -/* 80298A8C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80298A90 39 61 00 20 */ addi r11, r1, 0x20 -/* 80298A94 48 0C 97 49 */ bl _savegpr_29 -/* 80298A98 7C 7D 1B 78 */ mr r29, r3 -/* 80298A9C 7C 9E 23 78 */ mr r30, r4 -/* 80298AA0 7C BF 2B 78 */ mr r31, r5 -/* 80298AA4 80 63 00 78 */ lwz r3, 0x78(r3) -/* 80298AA8 28 03 00 00 */ cmplwi r3, 0 -/* 80298AAC 41 82 00 0C */ beq lbl_80298AB8 -/* 80298AB0 38 63 FF F0 */ addi r3, r3, -16 -/* 80298AB4 48 03 62 AD */ bl __dla__FPv -lbl_80298AB8: -/* 80298AB8 B3 DD 00 7C */ sth r30, 0x7c(r29) -/* 80298ABC 57 C3 18 38 */ slwi r3, r30, 3 -/* 80298AC0 38 63 00 10 */ addi r3, r3, 0x10 -/* 80298AC4 7F E4 FB 78 */ mr r4, r31 -/* 80298AC8 38 A0 00 00 */ li r5, 0 -/* 80298ACC 48 03 62 45 */ bl __nwa__FUlP7JKRHeapi -/* 80298AD0 3C 80 80 2A */ lis r4, __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv@ha /* 0x80298C4C@ha */ -/* 80298AD4 38 84 8C 4C */ addi r4, r4, __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv@l /* 0x80298C4C@l */ -/* 80298AD8 38 A0 00 00 */ li r5, 0 -/* 80298ADC 38 C0 00 08 */ li r6, 8 -/* 80298AE0 7F C7 F3 78 */ mr r7, r30 -/* 80298AE4 48 0C 94 31 */ bl __construct_new_array -/* 80298AE8 90 7D 00 78 */ stw r3, 0x78(r29) -/* 80298AEC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80298AF0 48 0C 97 39 */ bl _restgpr_29 -/* 80298AF4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80298AF8 7C 08 03 A6 */ mtlr r0 -/* 80298AFC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80298B00 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap.s b/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap.s deleted file mode 100644 index c29b0d3ef9..0000000000 --- a/asm/JSystem/JAudio2/JASBasicWaveBank/setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_80298710: -/* 80298710 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80298714 7C 08 02 A6 */ mflr r0 -/* 80298718 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029871C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80298720 48 0C 9A BD */ bl _savegpr_29 -/* 80298724 7C 7D 1B 78 */ mr r29, r3 -/* 80298728 7C 9E 23 78 */ mr r30, r4 -/* 8029872C 7C BF 2B 78 */ mr r31, r5 -/* 80298730 80 63 00 1C */ lwz r3, 0x1c(r3) -/* 80298734 3C 80 80 2A */ lis r4, __dt__Q216JASBasicWaveBank11TWaveHandleFv@ha /* 0x802985E4@ha */ -/* 80298738 38 84 85 E4 */ addi r4, r4, __dt__Q216JASBasicWaveBank11TWaveHandleFv@l /* 0x802985E4@l */ -/* 8029873C 48 0C 95 31 */ bl __destroy_new_array -/* 80298740 1C 7E 00 2C */ mulli r3, r30, 0x2c -/* 80298744 38 63 00 10 */ addi r3, r3, 0x10 -/* 80298748 7F E4 FB 78 */ mr r4, r31 -/* 8029874C 38 A0 00 00 */ li r5, 0 -/* 80298750 48 03 65 C1 */ bl __nwa__FUlP7JKRHeapi -/* 80298754 3C 80 80 2A */ lis r4, __ct__Q216JASBasicWaveBank11TWaveHandleFv@ha /* 0x80298C18@ha */ -/* 80298758 38 84 8C 18 */ addi r4, r4, __ct__Q216JASBasicWaveBank11TWaveHandleFv@l /* 0x80298C18@l */ -/* 8029875C 3C A0 80 2A */ lis r5, __dt__Q216JASBasicWaveBank11TWaveHandleFv@ha /* 0x802985E4@ha */ -/* 80298760 38 A5 85 E4 */ addi r5, r5, __dt__Q216JASBasicWaveBank11TWaveHandleFv@l /* 0x802985E4@l */ -/* 80298764 38 C0 00 2C */ li r6, 0x2c -/* 80298768 7F C7 F3 78 */ mr r7, r30 -/* 8029876C 48 0C 97 A9 */ bl __construct_new_array -/* 80298770 90 7D 00 1C */ stw r3, 0x1c(r29) -/* 80298774 B3 DD 00 24 */ sth r30, 0x24(r29) -/* 80298778 39 61 00 20 */ addi r11, r1, 0x20 -/* 8029877C 48 0C 9A AD */ bl _restgpr_29 -/* 80298780 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80298784 7C 08 03 A6 */ mtlr r0 -/* 80298788 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029878C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASVoiceBank/__dt__12JASVoiceBankFv.s b/asm/JSystem/JAudio2/JASVoiceBank/__dt__12JASVoiceBankFv.s deleted file mode 100644 index 2a5582149b..0000000000 --- a/asm/JSystem/JAudio2/JASVoiceBank/__dt__12JASVoiceBankFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80297FAC: -/* 80297FAC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80297FB0 7C 08 02 A6 */ mflr r0 -/* 80297FB4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80297FB8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80297FBC 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80297FC0 41 82 00 30 */ beq lbl_80297FF0 -/* 80297FC4 3C 60 80 3C */ lis r3, __vt__12JASVoiceBank@ha /* 0x803C76D0@ha */ -/* 80297FC8 38 03 76 D0 */ addi r0, r3, __vt__12JASVoiceBank@l /* 0x803C76D0@l */ -/* 80297FCC 90 1F 00 00 */ stw r0, 0(r31) -/* 80297FD0 41 82 00 10 */ beq lbl_80297FE0 -/* 80297FD4 3C 60 80 3C */ lis r3, __vt__7JASBank@ha /* 0x803C76BC@ha */ -/* 80297FD8 38 03 76 BC */ addi r0, r3, __vt__7JASBank@l /* 0x803C76BC@l */ -/* 80297FDC 90 1F 00 00 */ stw r0, 0(r31) -lbl_80297FE0: -/* 80297FE0 7C 80 07 35 */ extsh. r0, r4 -/* 80297FE4 40 81 00 0C */ ble lbl_80297FF0 -/* 80297FE8 7F E3 FB 78 */ mr r3, r31 -/* 80297FEC 48 03 6D 51 */ bl __dl__FPv -lbl_80297FF0: -/* 80297FF0 7F E3 FB 78 */ mr r3, r31 -/* 80297FF4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80297FF8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80297FFC 7C 08 03 A6 */ mtlr r0 -/* 80298000 38 21 00 10 */ addi r1, r1, 0x10 -/* 80298004 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASVoiceBank/getInstParam__12JASVoiceBankCFiiiP12JASInstParam.s b/asm/JSystem/JAudio2/JASVoiceBank/getInstParam__12JASVoiceBankCFiiiP12JASInstParam.s deleted file mode 100644 index 28ab885884..0000000000 --- a/asm/JSystem/JAudio2/JASVoiceBank/getInstParam__12JASVoiceBankCFiiiP12JASInstParam.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80297F74: -/* 80297F74 2C 04 00 00 */ cmpwi r4, 0 -/* 80297F78 40 80 00 0C */ bge lbl_80297F84 -/* 80297F7C 38 60 00 00 */ li r3, 0 -/* 80297F80 4E 80 00 20 */ blr -lbl_80297F84: -/* 80297F84 3C 60 80 3A */ lis r3, sOscData__12JASVoiceBank@ha /* 0x8039B1B8@ha */ -/* 80297F88 38 03 B1 B8 */ addi r0, r3, sOscData__12JASVoiceBank@l /* 0x8039B1B8@l */ -/* 80297F8C 90 0D 8C E8 */ stw r0, sOscTable__12JASVoiceBank(r13) -/* 80297F90 B0 87 00 1A */ sth r4, 0x1a(r7) -/* 80297F94 38 00 00 01 */ li r0, 1 -/* 80297F98 98 07 00 1D */ stb r0, 0x1d(r7) -/* 80297F9C 38 0D 8C E8 */ la r0, sOscTable__12JASVoiceBank(r13) /* 80451268-_SDA_BASE_ */ -/* 80297FA0 90 07 00 14 */ stw r0, 0x14(r7) -/* 80297FA4 38 60 00 01 */ li r3, 1 -/* 80297FA8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASVoiceBank/getType__12JASVoiceBankCFv.s b/asm/JSystem/JAudio2/JASVoiceBank/getType__12JASVoiceBankCFv.s deleted file mode 100644 index 4c84ec94ba..0000000000 --- a/asm/JSystem/JAudio2/JASVoiceBank/getType__12JASVoiceBankCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_80298008: -/* 80298008 3C 60 56 4F */ lis r3, 0x564F /* 0x564F4943@ha */ -/* 8029800C 38 63 49 43 */ addi r3, r3, 0x4943 /* 0x564F4943@l */ -/* 80298010 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUSeqCollection/__ct__16JAUSeqCollectionFv.s b/asm/JSystem/JAudio2/JAUSeqCollection/__ct__16JAUSeqCollectionFv.s deleted file mode 100644 index e317f0d869..0000000000 --- a/asm/JSystem/JAudio2/JAUSeqCollection/__ct__16JAUSeqCollectionFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_802A66A0: -/* 802A66A0 38 00 00 00 */ li r0, 0 -/* 802A66A4 90 03 00 08 */ stw r0, 8(r3) -/* 802A66A8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUSeqCollection/__ct__27JAUSeqDataMgr_SeqCollectionFv.s b/asm/JSystem/JAudio2/JAUSeqCollection/__ct__27JAUSeqDataMgr_SeqCollectionFv.s deleted file mode 100644 index 15cea79a23..0000000000 --- a/asm/JSystem/JAudio2/JAUSeqCollection/__ct__27JAUSeqDataMgr_SeqCollectionFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_802A677C: -/* 802A677C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A6780 7C 08 02 A6 */ mflr r0 -/* 802A6784 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A6788 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802A678C 7C 7F 1B 78 */ mr r31, r3 -/* 802A6790 3C 60 80 3D */ lis r3, __vt__13JAISeqDataMgr@ha /* 0x803C9928@ha */ -/* 802A6794 38 03 99 28 */ addi r0, r3, __vt__13JAISeqDataMgr@l /* 0x803C9928@l */ -/* 802A6798 90 1F 00 00 */ stw r0, 0(r31) -/* 802A679C 38 7F 00 04 */ addi r3, r31, 4 -/* 802A67A0 4B FF FF 01 */ bl __ct__16JAUSeqCollectionFv -/* 802A67A4 3C 60 80 3D */ lis r3, __vt__27JAUSeqDataMgr_SeqCollection@ha /* 0x803C9B38@ha */ -/* 802A67A8 38 03 9B 38 */ addi r0, r3, __vt__27JAUSeqDataMgr_SeqCollection@l /* 0x803C9B38@l */ -/* 802A67AC 90 1F 00 00 */ stw r0, 0(r31) -/* 802A67B0 38 00 00 00 */ li r0, 0 -/* 802A67B4 90 1F 00 14 */ stw r0, 0x14(r31) -/* 802A67B8 7F E3 FB 78 */ mr r3, r31 -/* 802A67BC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802A67C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A67C4 7C 08 03 A6 */ mtlr r0 -/* 802A67C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A67CC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUSeqCollection/__dt__27JAUSeqDataMgr_SeqCollectionFv.s b/asm/JSystem/JAudio2/JAUSeqCollection/__dt__27JAUSeqDataMgr_SeqCollectionFv.s deleted file mode 100644 index 9cfa027a81..0000000000 --- a/asm/JSystem/JAudio2/JAUSeqCollection/__dt__27JAUSeqDataMgr_SeqCollectionFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_802A6894: -/* 802A6894 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A6898 7C 08 02 A6 */ mflr r0 -/* 802A689C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A68A0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802A68A4 93 C1 00 08 */ stw r30, 8(r1) -/* 802A68A8 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802A68AC 7C 9F 23 78 */ mr r31, r4 -/* 802A68B0 41 82 00 28 */ beq lbl_802A68D8 -/* 802A68B4 3C 80 80 3D */ lis r4, __vt__27JAUSeqDataMgr_SeqCollection@ha /* 0x803C9B38@ha */ -/* 802A68B8 38 04 9B 38 */ addi r0, r4, __vt__27JAUSeqDataMgr_SeqCollection@l /* 0x803C9B38@l */ -/* 802A68BC 90 1E 00 00 */ stw r0, 0(r30) -/* 802A68C0 38 80 00 00 */ li r4, 0 -/* 802A68C4 4B FF AE F9 */ bl __dt__13JAISeqDataMgrFv -/* 802A68C8 7F E0 07 35 */ extsh. r0, r31 -/* 802A68CC 40 81 00 0C */ ble lbl_802A68D8 -/* 802A68D0 7F C3 F3 78 */ mr r3, r30 -/* 802A68D4 48 02 84 69 */ bl __dl__FPv -lbl_802A68D8: -/* 802A68D8 7F C3 F3 78 */ mr r3, r30 -/* 802A68DC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802A68E0 83 C1 00 08 */ lwz r30, 8(r1) -/* 802A68E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A68E8 7C 08 03 A6 */ mtlr r0 -/* 802A68EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A68F0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUSeqCollection/releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv.s b/asm/JSystem/JAudio2/JAUSeqCollection/releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv.s deleted file mode 100644 index a98a1f9bf6..0000000000 --- a/asm/JSystem/JAudio2/JAUSeqCollection/releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_802A67DC: -/* 802A67DC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A67E0 7C 08 02 A6 */ mflr r0 -/* 802A67E4 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A67E8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802A67EC 7C 7F 1B 78 */ mr r31, r3 -/* 802A67F0 80 03 00 14 */ lwz r0, 0x14(r3) -/* 802A67F4 28 00 00 00 */ cmplwi r0, 0 -/* 802A67F8 41 82 00 2C */ beq lbl_802A6824 -/* 802A67FC 38 7F 00 04 */ addi r3, r31, 4 -/* 802A6800 38 81 00 08 */ addi r4, r1, 8 -/* 802A6804 4B FF FF 51 */ bl getSeqDataRegion__16JAUSeqCollectionFP16JAISeqDataRegion -/* 802A6808 80 7F 00 14 */ lwz r3, 0x14(r31) -/* 802A680C 38 81 00 08 */ addi r4, r1, 8 -/* 802A6810 81 83 00 00 */ lwz r12, 0(r3) -/* 802A6814 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 802A6818 7D 89 03 A6 */ mtctr r12 -/* 802A681C 4E 80 04 21 */ bctrl -/* 802A6820 48 00 00 08 */ b lbl_802A6828 -lbl_802A6824: -/* 802A6824 38 60 00 02 */ li r3, 2 -lbl_802A6828: -/* 802A6828 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802A682C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A6830 7C 08 03 A6 */ mtlr r0 -/* 802A6834 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A6838 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUSeqCollection/setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser.s b/asm/JSystem/JAudio2/JAUSeqCollection/setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser.s deleted file mode 100644 index 8edd07a7ba..0000000000 --- a/asm/JSystem/JAudio2/JAUSeqCollection/setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_802A67D0: -/* 802A67D0 90 83 00 14 */ stw r4, 0x14(r3) -/* 802A67D4 38 60 00 01 */ li r3, 1 -/* 802A67D8 4E 80 00 20 */ blr diff --git a/include/JSystem/JAudio2/JAISeqDataMgr.h b/include/JSystem/JAudio2/JAISeqDataMgr.h index e211b31b62..8ef945dee4 100644 --- a/include/JSystem/JAudio2/JAISeqDataMgr.h +++ b/include/JSystem/JAudio2/JAISeqDataMgr.h @@ -37,9 +37,9 @@ struct JAISeqDataUser { struct JAISeqDataMgr { virtual ~JAISeqDataMgr(); - virtual int getSeqData(JAISoundID, JAISeqData*) = 0; + virtual s32 getSeqData(JAISoundID, JAISeqData*) = 0; virtual int releaseSeqData() = 0; - virtual void setSeqDataUser(JAISeqDataUser*) = 0; + virtual bool setSeqDataUser(JAISeqDataUser*) = 0; }; #endif /* JAISEQDATAMGR_H */ diff --git a/include/JSystem/JAudio2/JASBank.h b/include/JSystem/JAudio2/JASBank.h index 2375f92489..90ba1ebcdc 100644 --- a/include/JSystem/JAudio2/JASBank.h +++ b/include/JSystem/JAudio2/JASBank.h @@ -3,4 +3,31 @@ #include "dolphin/types.h" +class JASChannel; +class JASInstParam; +class JASWaveBank; + +namespace JASDsp { + class TChannel; +} + +class JASBank { +public: + JASBank() { mWaveBank = NULL; } + virtual ~JASBank() {}; + virtual bool getInstParam(int, int, int, JASInstParam*) const = 0; + virtual u32 getType() const = 0; + + JASWaveBank* getWaveBank() const { return mWaveBank; } + void assignWaveBank(JASWaveBank* param_0) { mWaveBank = param_0; } + + /* 80297930 */ static JASChannel* noteOn(JASBank const*, int, u8, u8, u16, + void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); + /* 80297C40 */ static JASChannel* noteOnOsc(int, u8, u8, u16, + void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); + +private: + /* 0x04 */ JASWaveBank* mWaveBank; +}; + #endif /* JASBANK_H */ diff --git a/include/JSystem/JAudio2/JASBasicWaveBank.h b/include/JSystem/JAudio2/JASBasicWaveBank.h index 227fd35ebf..3d22d24ff7 100644 --- a/include/JSystem/JAudio2/JASBasicWaveBank.h +++ b/include/JSystem/JAudio2/JASBasicWaveBank.h @@ -1,6 +1,85 @@ #ifndef JASBASICWAVEBANK_H #define JASBASICWAVEBANK_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JASWaveArcLoader.h" +#include "JSystem/JAudio2/JASWaveInfo.h" +#include "dolphin/os/OSMutex.h" + +class JASWaveHandle { +public: + /* virtual */ ~JASWaveHandle() {}; + //virtual const JASWaveInfo* getWaveInfo() const = 0; + //virtual int getWavePtr() const = 0; + + void* vtable; +}; + +class JASWaveBank { +public: + /* 80298B88 */ /* virtual */ ~JASWaveBank() {}; + //virtual JASWaveHandle* getWaveHandle(u32) const = 0; + //virtual JASWaveArc* getWaveArc(u32) = 0; + //virtual u32 getArcCount() const = 0; + + void* vtable; +}; + +struct JASBasicWaveBank : public JASWaveBank { + struct TWaveHandle : public JASWaveHandle { + /* 802985E4 */ ~TWaveHandle(); + /* 80298B64 */ int getWavePtr() const; + /* 80298C18 */ TWaveHandle() { mHeap = NULL; } + /* 80298C64 */ const JASWaveInfo* getWaveInfo() const { return &field_0x4; } + + /* 0x04 */ JASWaveInfo field_0x4; + /* 0x28 */ JASHeap* mHeap; + }; + + struct TGroupWaveInfo { + /* 80298C4C */ TGroupWaveInfo() { + field_0x0 = 0xffff; + field_0x4 = -1; + } + + /* 0x00 */ u16 field_0x0; + /* 0x04 */ int field_0x4; + }; + + struct TWaveGroup { + /* 802989C0 */ TWaveGroup(); + /* 80298A0C */ ~TWaveGroup(); + /* 80298A84 */ void setWaveCount(u32, JKRHeap*); + /* 80298B04 */ void onLoadDone(); + /* 80298B2C */ void onEraseDone(); + /* 80298B54 */ u32 getWaveID(int) const; + + /* 0x00 */ JASWaveArc base; + /* 0x74 */ JASBasicWaveBank* mBank; + /* 0x78 */ TGroupWaveInfo* mCtrlWaveArray; + /* 0x7C */ u16 mWaveCount; + + u32 getWaveCount() const { return mWaveCount; } + }; + + /* 802984F8 */ JASBasicWaveBank(); + /* 80298558 */ ~JASBasicWaveBank(); + /* 80298640 */ TWaveGroup* getWaveGroup(u32); + /* 80298664 */ void setGroupCount(u32, JKRHeap*); + /* 80298710 */ void setWaveTableSize(u32, JKRHeap*); + /* 80298790 */ void incWaveTable(JASBasicWaveBank::TWaveGroup const*); + /* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*); + /* 802988DC */ JASWaveHandle* getWaveHandle(u32) const; + /* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&); + /* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0); // { return getWaveGroup(param_0); } + /* 80298C8C */ u32 getArcCount() const { return mGroupCount; } + + /* 0x04 */ OSMutex field_0x4; + /* 0x1C */ TWaveHandle* mWaveTable; + /* 0x20 */ TWaveGroup* mWaveGroupArray; + /* 0x24 */ u16 mHandleCount; + /* 0x26 */ u16 mGroupCount; + + static u8 mNoLoad[4 + 4 /* padding */]; +}; #endif /* JASBASICWAVEBANK_H */ diff --git a/include/JSystem/JAudio2/JASChannel.h b/include/JSystem/JAudio2/JASChannel.h index 6937615778..57a7b75dbc 100644 --- a/include/JSystem/JAudio2/JASChannel.h +++ b/include/JSystem/JAudio2/JASChannel.h @@ -1,6 +1,128 @@ #ifndef JASCHANNEL_H #define JASCHANNEL_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JAudio2/JASLfo.h" +#include "JSystem/JAudio2/JASOscillator.h" +#include "JSystem/JAudio2/JASSoundParams.h" +#include "JSystem/JAudio2/JASWaveInfo.h" +#include "dolphin/os/OSMessage.h" + +class JASDSPChannel; + +namespace JASDsp { + struct TChannel; +} + +class JASChannelParams { +public: + JASChannelParams() { + field_0x0 = 1.0f; + field_0x4 = 1.0f; + field_0x8 = 0.0f; + field_0xc = 0.5f; + field_0x10 = 0.0f; + field_0x14 = 0.0f; + } + void init() { + field_0x0 = 1.0f; + field_0x4 = 1.0f; + field_0x8 = 0.0f; + field_0xc = 0.5f; + field_0x10 = 0.0f; + field_0x14 = 0.0f; + } + + f32 field_0x0; + f32 field_0x4; + f32 field_0x8; + f32 field_0xc; + f32 field_0x10; + f32 field_0x14; +}; + +class JASChannel : public JASPoolAllocObject_MultiThreaded { +public: + struct PanVector {}; + + /* 8029A800 */ JASChannel(void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); + /* 8029A918 */ ~JASChannel(); + /* 8029A9F0 */ int play(); + /* 8029AA60 */ void playForce(); + /* 8029AAD0 */ void release(u16); + /* 8029AB64 */ void setOscInit(u32, JASOscillator::Data const*); + /* 8029AB98 */ void setMixConfig(u32, u16); + /* 8029ABA8 */ void calcEffect(JASChannel::PanVector const*); + /* 8029ABC0 */ void calcPan(JASChannel::PanVector const*); + /* 8029ABEC */ void effectOsc(u32, JASOscillator::EffectParams*); + /* 8029ACD4 */ void setKeySweepTarget(s32, u32); + /* 8029AD38 */ void updateEffectorParam(JASDsp::TChannel*, u16*, + JASOscillator::EffectParams const&); + /* 8029AF78 */ static void dspUpdateCallback(u32, JASDsp::TChannel*, void*); + /* 8029B004 */ void initialUpdateDSPChannel(JASDsp::TChannel*); + /* 8029B324 */ void updateDSPChannel(JASDsp::TChannel*); + /* 8029B6A0 */ void updateAutoMixer(JASDsp::TChannel*, f32, f32, f32, f32); + /* 8029B7D8 */ void updateMixer(f32, f32, f32, f32, u16*); + /* 8029BBFC */ void free(); + /* 8029BC0C */ static void initBankDisposeMsgQueue(); + /* 8029BC48 */ static void receiveBankDisposeMsg(); + /* 8029BCC0 */ void checkBankDispose() const; + + void setPauseFlag(bool param_0) { mPauseFlag = param_0; } + void setUpdateTimer(u32 param_0) { mUpdateTimer = param_0; } + void setBankDisposeID(const void* param_0) { mBankDisposeID = param_0; } + void setDirectRelease(u16 param_0) { field_0x1c[0].setDirectRelease(param_0); } + void setVibrate(f32 param_0, f32 param_1) { + mVibrate.setDepth(param_0); + mVibrate.setPitch(param_1); + } + void setVibrateDelay(u16 param_0) { mVibrate.setDelay(param_0); } + void setTremolo(f32 param_0, f32 param_1) { + mTremolo.setDepth(param_0); + mTremolo.setPitch(param_1); + } + void setTremoloDelay(u16 param_0) { mTremolo.setDelay(param_0); } + void setPriority(u16 param_0) { mPriority = param_0; } + void setParams(const JASChannelParams& param_0) { mParams = param_0; } + void setInitVolume(f32 param_0) { field_0xb4.mVolume = param_0; } + void setInitFxmix(f32 param_0) { field_0xb4.mFxMix = param_0; } + void setInitPitch(f32 param_0) { field_0xb4.mPitch = param_0; } + void setInitPan(f32 param_0) { field_0xb4.mPan = param_0; } + void setInitDolby(f32 param_0) { field_0xb4.mDolby = param_0; } + void setKey(s32 param_0) { mKey = param_0; } + void setVelocity(u32 param_0) { mVelocity = param_0; } + void setSkipSamples(u32 param_0) { mSkipSamples = param_0; } + + /* 0x00 */ int mStatus; + /* 0x04 */ bool mPauseFlag; + /* 0x08 */ JASDSPChannel* mDspCh; + /* 0x0C */ void* field_0xc; + /* 0x10 */ void* field_0x10; + /* 0x14 */ u32 mUpdateTimer; + /* 0x18 */ const void* mBankDisposeID; + /* 0x1C */ JASOscillator field_0x1c[2]; + /* 0x5C */ JASLfo mVibrate; + /* 0x74 */ JASLfo mTremolo; + /* 0x8C */ u16 field_0x8c[6]; + /* 0x98 */ short mPriority; + /* 0x9C */ JASChannelParams mParams; + /* 0xB4 */ JASSoundParams field_0xb4; + /* 0xC8 */ s16 mKey; + /* 0xCA */ u16 mVelocity; + /* 0xCC */ f32 field_0xcc; + /* 0xD0 */ f32 field_0xd0; + /* 0xD4 */ u32 field_0xd4; + /* 0xD8 */ u32 mSkipSamples; + struct { + u32 field_0x0; + JASWaveInfo field_0x4; + } field_0xdc; + int field_0x104; + + static OSMessageQueue sBankDisposeMsgQ; + static OSMessage sBankDisposeMsg[16]; + static u32 sBankDisposeList[16]; + static u32 sBankDisposeListSize; +}; #endif /* JASCHANNEL_H */ diff --git a/include/JSystem/JAudio2/JASLfo.h b/include/JSystem/JAudio2/JASLfo.h index 3008d8b17c..85e1835052 100644 --- a/include/JSystem/JAudio2/JASLfo.h +++ b/include/JSystem/JAudio2/JASLfo.h @@ -9,6 +9,10 @@ struct JASLfo { /* 8029BDD8 */ void incCounter(f32); /* 8029BE2C */ void resetCounter(); + void setDepth(f32 param_0) { mDepth = param_0; } + void setPitch(f32 param_0) { mPitch = param_0; } + void setDelay(u16 param_0) { mDelay = param_0; } + static void updateFreeRun(f32 param_0) { sFreeRunLfo.incCounter(param_0); } static JASLfo sFreeRunLfo; @@ -16,9 +20,9 @@ struct JASLfo { /* 0x00 */ u32 field_0x0; /* 0x04 */ u32 field_0x4; /* 0x08 */ f32 field_0x8; - /* 0x0C */ f32 field_0xC; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ u16 field_0x14; + /* 0x0C */ f32 mDepth; + /* 0x10 */ f32 mPitch; + /* 0x14 */ u16 mDelay; /* 0x16 */ u16 field_0x16; }; diff --git a/include/JSystem/JAudio2/JASOscillator.h b/include/JSystem/JAudio2/JASOscillator.h index fce78363b5..808b410474 100644 --- a/include/JSystem/JAudio2/JASOscillator.h +++ b/include/JSystem/JAudio2/JASOscillator.h @@ -6,12 +6,14 @@ struct JASOscillator { struct Point {}; - + + struct EffectParams {}; + struct Data { /* 0x00 */ u32 _00; /* 0x04 */ f32 _04; - /* 0x08 */ short* _08; - /* 0x0C */ short* _0C; + /* 0x08 */ const short* _08; + /* 0x0C */ const short* _0C; /* 0x10 */ f32 _10; /* 0x14 */ f32 _14; }; @@ -25,6 +27,7 @@ struct JASOscillator { void update(); void updateCurrentValue(f32 param_0); + void setDirectRelease(u16 param_0) { mDirectRelease = param_0; } void stop() { _1C = 0; } @@ -35,7 +38,7 @@ struct JASOscillator { /* 0x0C */ f32 _0C; /* 0x10 */ f32 _10; /* 0x14 */ u16 _14; - /* 0x16 */ u16 _16; + /* 0x16 */ u16 mDirectRelease; /* 0x18 */ u8 _18; /* 0x1A */ u16 _1A; /* 0x1C */ int _1C; diff --git a/include/JSystem/JAudio2/JASVoiceBank.h b/include/JSystem/JAudio2/JASVoiceBank.h index 26ff530c2e..196ee9b148 100644 --- a/include/JSystem/JAudio2/JASVoiceBank.h +++ b/include/JSystem/JAudio2/JASVoiceBank.h @@ -1,6 +1,17 @@ #ifndef JASVOICEBANK_H #define JASVOICEBANK_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JASBank.h" +#include "JSystem/JAudio2/JASOscillator.h" + +class JASVoiceBank : public JASBank { +public: + /* 80297F74 */ virtual bool getInstParam(int, int, int, JASInstParam*) const; + /* 80297FAC */ virtual ~JASVoiceBank(); + /* 80298008 */ virtual u32 getType() const; + + static const JASOscillator::Data sOscData; + static JASOscillator::Data* sOscTable; +}; #endif /* JASVOICEBANK_H */ diff --git a/include/JSystem/JAudio2/JASWaveInfo.h b/include/JSystem/JAudio2/JASWaveInfo.h index 9227fb578a..3a806c427d 100644 --- a/include/JSystem/JAudio2/JASWaveInfo.h +++ b/include/JSystem/JAudio2/JASWaveInfo.h @@ -4,10 +4,15 @@ #include "dolphin/types.h" struct JASWaveInfo { + JASWaveInfo() { + field_0x01 = 0x3c; + field_0x20 = one; + } + /* 0x00 */ u8 field_0x00; /* 0x01 */ u8 field_0x01; /* 0x02 */ u8 field_0x02; - /* 0x04 */ int field_0x04; + /* 0x04 */ f32 field_0x04; /* 0x08 */ int field_0x08; /* 0x0C */ int field_0x0c; /* 0x10 */ u32 field_0x10; @@ -15,7 +20,7 @@ struct JASWaveInfo { /* 0x18 */ int field_0x18; /* 0x1C */ s16 field_0x1c; /* 0x1E */ s16 field_0x1e; - /* 0x20 */ void* field_0x20; + /* 0x20 */ const void* field_0x20; static u32 one[1 + 1 /* padding */]; }; diff --git a/include/JSystem/JAudio2/JAUSeqCollection.h b/include/JSystem/JAudio2/JAUSeqCollection.h index 45b40f810c..a3eae60b35 100644 --- a/include/JSystem/JAudio2/JAUSeqCollection.h +++ b/include/JSystem/JAudio2/JAUSeqCollection.h @@ -1,6 +1,35 @@ #ifndef JAUSEQCOLLECTION_H #define JAUSEQCOLLECTION_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JAISeqDataMgr.h" + +class JAISeqData; +class JAISeqDataRegion; + +class JAUSeqCollection { +public: + /* 802A66A0 */ JAUSeqCollection(); + /* 802A66AC */ void init(void const*); + /* 802A66FC */ bool getSeqData(int, int, JAISeqData*); + /* 802A6754 */ void getSeqDataRegion(JAISeqDataRegion*); + + bool isValid() { return field_0x8; } + + /* 0x00 */ u16 field_0x0; + /* 0x04 */ const u32* field_0x4; + /* 0x08 */ const void* field_0x8; + /* 0x0C */ int field_0xc; +}; + +class JAUSeqDataMgr_SeqCollection : JAISeqDataMgr, JAUSeqCollection { +public: + /* 802A677C */ JAUSeqDataMgr_SeqCollection(); + /* 802A67D0 */ bool setSeqDataUser(JAISeqDataUser*); + /* 802A67DC */ int releaseSeqData(); + /* 802A683C */ s32 getSeqData(JAISoundID, JAISeqData*); + /* 802A6894 */ ~JAUSeqDataMgr_SeqCollection(); + + /* 0x14 */ JAISeqDataUser* user_; +}; #endif /* JAUSEQCOLLECTION_H */ diff --git a/libs/JSystem/JAudio2/JASBank.cpp b/libs/JSystem/JAudio2/JASBank.cpp index d07520e28a..aa5d3fc8d6 100644 --- a/libs/JSystem/JAudio2/JASBank.cpp +++ b/libs/JSystem/JAudio2/JASBank.cpp @@ -4,49 +4,16 @@ // #include "JSystem/JAudio2/JASBank.h" +#include "JSystem/JAudio2/JASAiCtrl.h" +#include "JSystem/JAudio2/JASBasicInst.h" +#include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JASChannel.h" #include "dol2asm.h" // // Types: // -struct JASOscillator { - struct Data {}; -}; - -template -struct JASMemPool_MultiThreaded {}; -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template2 { - /* 802978DC */ void func_802978DC(void* _this); -}; - -struct JASGenericMemPool { - /* 80290848 */ JASGenericMemPool(); - /* 80290948 */ void alloc(u32); -}; - -struct JASDsp { - struct TChannel {}; -}; - -struct JASDriver { - /* 8029C9E8 */ void getDacRate(); -}; - -struct JASChannel { - /* 8029A800 */ JASChannel(void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); - /* 8029A9F0 */ void play(); - /* 8029AB64 */ void setOscInit(u32, JASOscillator::Data const*); -}; - -struct JASBank { - /* 80297930 */ void noteOn(JASBank const*, int, u8, u8, u16, - void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); - /* 80297C40 */ void noteOnOsc(int, u8, u8, u16, - void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); -}; - // // Forward References: // @@ -65,8 +32,6 @@ extern "C" void __ct__10JASChannelFPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv(); extern "C" void play__10JASChannelFv(); extern "C" void setOscInit__10JASChannelFUlPCQ213JASOscillator4Data(); extern "C" void getDacRate__9JASDriverFv(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); extern "C" void __register_global_object(); extern "C" void _savegpr_23(); extern "C" void _savegpr_25(); @@ -99,34 +64,88 @@ SECTION_SDATA2 static f32 lit_250 = 0.5f; /* 80297930-80297C40 292270 0310+00 0/0 1/1 0/0 .text * noteOn__7JASBankFPC7JASBankiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv */ +// vtables for JASWaveBank, JASWaveHandle +#ifdef NONMATCHING +JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4, + void (*param_5)(u32, JASChannel*, JASDsp::TChannel*, void*), + void* param_6) { + if (param_1 >= 0xf0) { + return noteOnOsc(param_1 - 0xf0, param_2, param_3, param_4, param_5, param_6); + } + if (!param_0) { + return NULL; + } + JASInstParam stack_60; + if (!param_0->getInstParam(param_1, param_2, param_3, &stack_60)) { + return NULL; + } + JASWaveBank* waveBank = param_0->getWaveBank(); + if (!waveBank) { + return NULL; + } + JASWaveHandle* waveHandle = waveBank->getWaveHandle(stack_60.field_0x1a); + if (!waveHandle) { + return NULL; + } + const JASWaveInfo* waveInfo = waveHandle->getWaveInfo(); + if (!waveInfo) { + return NULL; + } + int wavePtr = waveHandle->getWavePtr(); + if (!wavePtr) { + return NULL; + } + + JASChannel* channel = new JASChannel(param_5, param_6); + if (!channel) { + return NULL; + } + channel->setPriority(param_4); + channel->field_0xdc.field_0x4 = *waveInfo; + channel->field_0x104 = wavePtr; + channel->field_0xdc.field_0x0 = stack_60.field_0x1c; + channel->setBankDisposeID(param_0); + channel->setInitPitch(stack_60.mPitch * (waveInfo->field_0x04 / JASDriver::getDacRate())); + if (stack_60.field_0x1e == 0) { + channel->setKey(param_2 - waveInfo->field_0x01); + } + channel->setInitVolume(stack_60.mVolume); + channel->setVelocity(param_3); + channel->setInitPan(stack_60.mPan); + channel->setInitFxmix(stack_60.mFxMix); + channel->setInitDolby(stack_60.mDolby); + for (u32 i = 0; i < stack_60.field_0x1d; i++) { + channel->setOscInit(i, stack_60.field_0x14[i]); + } + channel->setDirectRelease(stack_60.field_0x18); + if (!channel->play()) { + return NULL; + } + return channel; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4, +asm JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4, void (*param_5)(u32, JASChannel*, JASDsp::TChannel*, void*), void* param_6) { nofralloc #include "asm/JSystem/JAudio2/JASBank/noteOn__7JASBankFPC7JASBankiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039B190-8039B19C 0277F0 000C+00 1/0 0/0 0/0 .rodata OSC_RELEASE_TABLE$260 */ -SECTION_RODATA static u8 const OSC_RELEASE_TABLE[12] = { - 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static s16 const OSC_RELEASE_TABLE[6] = { + 0x0001, 0x000A, 0x0000, 0x000F, 0x0000, 0x0000, }; COMPILER_STRIP_GATE(0x8039B190, &OSC_RELEASE_TABLE); /* 8039B19C-8039B1B8 -00001 0018+04 1/1 0/0 0/0 .rodata OSC_ENV$261 */ -SECTION_RODATA static void* const OSC_ENV[6 + 1 /* padding */] = { - (void*)NULL, - (void*)0x3F800000, - (void*)NULL, - (void*)&OSC_RELEASE_TABLE, - (void*)0x3F800000, - (void*)NULL, - /* padding */ - NULL, +SECTION_RODATA static const JASOscillator::Data OSC_ENV = { + 0, 1.0f, NULL, OSC_RELEASE_TABLE, 1.0f, 0.0f, }; COMPILER_STRIP_GATE(0x8039B19C, &OSC_ENV); @@ -135,13 +154,36 @@ SECTION_SDATA2 static f32 lit_290 = 16736.015625f; /* 80297C40-80297D78 292580 0138+00 1/1 0/0 0/0 .text * noteOnOsc__7JASBankFiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv */ +// wild ~JASMemPool_MultiThreaded destructor appeared! +#ifdef NONMATCHING +JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, + void (*param_4)(u32, JASChannel*, JASDsp::TChannel*, void*), + void* param_5) { + JASChannel* channel = new JASChannel(param_4, param_5); + if (!channel) { + return NULL; + } + channel->setPriority(param_3); + channel->field_0x104 = param_0; + channel->field_0xdc.field_0x0 = 2; + channel->setInitPitch(16736.02f / JASDriver::getDacRate()); + channel->setKey(param_1 - channel->field_0xdc.field_0x4.field_0x01); + channel->setVelocity(param_2); + channel->setOscInit(0, &OSC_ENV); + if (!channel->play()) { + return NULL; + } + return channel; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, +asm JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, void (*param_4)(u32, JASChannel*, JASDsp::TChannel*, void*), void* param_5) { nofralloc #include "asm/JSystem/JAudio2/JASBank/noteOnOsc__7JASBankFiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv.s" } #pragma pop +#endif diff --git a/libs/JSystem/JAudio2/JASBasicWaveBank.cpp b/libs/JSystem/JAudio2/JASBasicWaveBank.cpp index c5536da1d6..bebfd4832e 100644 --- a/libs/JSystem/JAudio2/JASBasicWaveBank.cpp +++ b/libs/JSystem/JAudio2/JASBasicWaveBank.cpp @@ -4,68 +4,15 @@ // #include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JASMutex.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JUtility/JUTAssert.h" #include "dol2asm.h" // // Types: // -struct JKRHeap {}; - -struct JASWaveInfo { - static u32 one[1 + 1 /* padding */]; -}; - -struct JASWaveHandle { - /* 80298BD0 */ ~JASWaveHandle(); -}; - -struct JASWaveBank { - /* 80298B88 */ ~JASWaveBank(); -}; - -struct JASWaveArc { - /* 8029A13C */ JASWaveArc(); - /* 8029A1B4 */ ~JASWaveArc(); - /* 8029A664 */ void onDispose(); -}; - -struct JASBasicWaveBank { - struct TWaveHandle { - /* 802985E4 */ ~TWaveHandle(); - /* 80298B64 */ void getWavePtr() const; - /* 80298C18 */ TWaveHandle(); - /* 80298C64 */ void getWaveInfo() const; - }; - - struct TWaveGroup { - /* 802989C0 */ TWaveGroup(); - /* 80298A0C */ ~TWaveGroup(); - /* 80298A84 */ void setWaveCount(u32, JKRHeap*); - /* 80298B04 */ void onLoadDone(); - /* 80298B2C */ void onEraseDone(); - /* 80298B54 */ void getWaveID(int) const; - }; - - struct TGroupWaveInfo { - /* 80298C4C */ TGroupWaveInfo(); - }; - - /* 802984F8 */ JASBasicWaveBank(); - /* 80298558 */ ~JASBasicWaveBank(); - /* 80298640 */ void getWaveGroup(u32); - /* 80298664 */ void setGroupCount(u32, JKRHeap*); - /* 80298710 */ void setWaveTableSize(u32, JKRHeap*); - /* 80298790 */ void incWaveTable(JASBasicWaveBank::TWaveGroup const*); - /* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*); - /* 802988DC */ void getWaveHandle(u32) const; - /* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&); - /* 80298C6C */ void getWaveArc(u32); - /* 80298C8C */ void getArcCount() const; - - static u8 mNoLoad[4 + 4 /* padding */]; -}; - // // Forward References: // @@ -107,9 +54,6 @@ extern "C" void onDispose__10JASWaveArcFv(); extern "C" void* __nwa__FUlP7JKRHeapi(); extern "C" void __dl__FPv(); extern "C" void __dla__FPv(); -extern "C" void OSInitMutex(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); extern "C" void __destroy_new_array(); extern "C" void __construct_new_array(); extern "C" void _savegpr_25(); @@ -170,6 +114,16 @@ SECTION_DATA extern void* __vt__11JASWaveBank[6] = { }; /* 802984F8-80298558 292E38 0060+00 0/0 1/1 0/0 .text __ct__16JASBasicWaveBankFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::JASBasicWaveBank() { + mWaveTable = NULL; + mWaveGroupArray = NULL; + mHandleCount = 0; + mGroupCount = 0; + OSInitMutex(&field_0x4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -178,8 +132,16 @@ asm JASBasicWaveBank::JASBasicWaveBank() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__16JASBasicWaveBankFv.s" } #pragma pop +#endif /* 80298558-802985E4 292E98 008C+00 1/0 0/0 0/0 .text __dt__16JASBasicWaveBankFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::~JASBasicWaveBank() { + delete[] mWaveTable; + delete[] mWaveGroupArray; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -188,8 +150,13 @@ asm JASBasicWaveBank::~JASBasicWaveBank() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__16JASBasicWaveBankFv.s" } #pragma pop +#endif /* 802985E4-80298640 292F24 005C+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank11TWaveHandleFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveHandle::~TWaveHandle() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -198,42 +165,54 @@ asm JASBasicWaveBank::TWaveHandle::~TWaveHandle() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__Q216JASBasicWaveBank11TWaveHandleFv.s" } #pragma pop +#endif /* 80298640-80298664 292F80 0024+00 1/1 1/1 0/0 .text getWaveGroup__16JASBasicWaveBankFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveGroup(u32 param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveGroup__16JASBasicWaveBankFUl.s" +JASBasicWaveBank::TWaveGroup* JASBasicWaveBank::getWaveGroup(u32 param_0) { + if (param_0 >= mGroupCount) { + return NULL; + } + return mWaveGroupArray + param_0; } -#pragma pop /* 80298664-80298710 292FA4 00AC+00 0/0 1/1 0/0 .text * setGroupCount__16JASBasicWaveBankFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setGroupCount(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setGroupCount__16JASBasicWaveBankFUlP7JKRHeap.s" +void JASBasicWaveBank::setGroupCount(u32 param_0, JKRHeap* param_1) { + delete[] mWaveGroupArray; + mGroupCount = param_0; + mWaveGroupArray = new(param_1, 0) TWaveGroup[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp", 0x3e, mWaveGroupArray != 0); + for (int i = 0; i < mGroupCount; i++) { + mWaveGroupArray[i].mBank = this; + } } -#pragma pop /* 80298710-80298790 293050 0080+00 0/0 1/1 0/0 .text * setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap.s" +void JASBasicWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { + delete[] mWaveTable; + mWaveTable = new(param_1, 0) TWaveHandle[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp",0x5c, mWaveTable != 0); + mHandleCount = param_0; } -#pragma pop /* 80298790-8029883C 2930D0 00AC+00 1/1 0/0 0/0 .text * incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup */ +// instruction order +#ifdef NONMATCHING +void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { + JASMutexLock lock(&field_0x4); + for (u32 i = 0; i < param_0->getWaveCount(); i++) { + TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); + if (!handle->mHeap) { + handle->mHeap = ¶m_0->base.mHeap; + handle->field_0x4.field_0x20 = ¶m_0->base._48; + handle->field_0x4.field_0x08 = param_0->mCtrlWaveArray[i].field_0x4; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -242,6 +221,7 @@ asm void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* para #include "asm/JSystem/JAudio2/JASBasicWaveBank/incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451278-80451280 000778 0004+04 2/2 0/0 0/0 .sbss mNoLoad__16JASBasicWaveBank */ @@ -249,38 +229,52 @@ u8 JASBasicWaveBank::mNoLoad[4 + 4 /* padding */]; /* 8029883C-802988DC 29317C 00A0+00 1/1 0/0 0/0 .text * decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::decWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s" +void JASBasicWaveBank::decWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { + JASMutexLock lock(&field_0x4); + for (u32 i = 0; i < param_0->getWaveCount(); i++) { + TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); + if (handle->mHeap == ¶m_0->base.mHeap) { + handle->mHeap = NULL; + handle->field_0x4.field_0x20 = mNoLoad; + handle->field_0x4.field_0x08 = -1; + } + } } -#pragma pop /* 802988DC-80298910 29321C 0034+00 1/0 0/0 0/0 .text getWaveHandle__16JASBasicWaveBankCFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveHandle(u32 param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveHandle__16JASBasicWaveBankCFUl.s" +JASWaveHandle* JASBasicWaveBank::getWaveHandle(u32 param_0) const { + if (param_0 >= mHandleCount) { + return NULL; + } + if (!mWaveTable[param_0].mHeap) { + return NULL; + } + return mWaveTable + param_0; } -#pragma pop /* 80298910-802989C0 293250 00B0+00 0/0 1/1 0/0 .text * setWaveInfo__16JASBasicWaveBankFPQ216JASBasicWaveBank10TWaveGroupiUsRC11JASWaveInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setWaveInfo(JASBasicWaveBank::TWaveGroup* param_0, int param_1, - u16 param_2, JASWaveInfo const& param_3) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/func_80298910.s" +void JASBasicWaveBank::setWaveInfo(JASBasicWaveBank::TWaveGroup* wgrp, int index, + u16 param_2, JASWaveInfo const& param_3) { + JUT_ASSERT("JASBasicWaveBank.cpp", 0xcc, wgrp); + JUT_ASSERT("JASBasicWaveBank.cpp", 0xcd, index < wgrp->mWaveCount); + JUT_ASSERT("JASBasicWaveBank.cpp", 0xce, index >= 0); + mWaveTable[param_2].field_0x4 = param_3; + mWaveTable[param_2].field_0x4.field_0x20 = mNoLoad; + mWaveTable[param_2].field_0x4.field_0x08 = -1; + wgrp->mCtrlWaveArray[index].field_0x0 = param_2; + wgrp->mCtrlWaveArray[index].field_0x4 = param_3.field_0x08; } -#pragma pop /* 802989C0-80298A0C 293300 004C+00 1/1 0/0 0/0 .text __ct__Q216JASBasicWaveBank10TWaveGroupFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveGroup::TWaveGroup() { + mBank = NULL; + mCtrlWaveArray = NULL; + mWaveCount = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -289,8 +283,15 @@ asm JASBasicWaveBank::TWaveGroup::TWaveGroup() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank10TWaveGroupFv.s" } #pragma pop +#endif /* 80298A0C-80298A84 29334C 0078+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank10TWaveGroupFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveGroup::~TWaveGroup() { + delete[] mCtrlWaveArray; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -299,67 +300,57 @@ asm JASBasicWaveBank::TWaveGroup::~TWaveGroup() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__Q216JASBasicWaveBank10TWaveGroupFv.s" } #pragma pop +#endif /* 80298A84-80298B04 2933C4 0080+00 0/0 1/1 0/0 .text * setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::setWaveCount(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap.s" +void JASBasicWaveBank::TWaveGroup::setWaveCount(u32 param_0, JKRHeap* param_1) { + delete[] mCtrlWaveArray; + mWaveCount = param_0; + mCtrlWaveArray = new(param_1, 0) TGroupWaveInfo[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp", 0xff, mCtrlWaveArray != 0); } -#pragma pop /* 80298B04-80298B2C 293444 0028+00 1/0 0/0 0/0 .text * onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::onLoadDone() { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv.s" +void JASBasicWaveBank::TWaveGroup::onLoadDone() { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x11e, mBank); + mBank->incWaveTable(this); } -#pragma pop /* 80298B2C-80298B54 29346C 0028+00 1/0 0/0 0/0 .text * onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::onEraseDone() { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv.s" +void JASBasicWaveBank::TWaveGroup::onEraseDone() { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x124, mBank); + mBank->decWaveTable(this); } -#pragma pop + /* 80298B54-80298B64 293494 0010+00 2/2 0/0 0/0 .text * getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::getWaveID(int param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi.s" +u32 JASBasicWaveBank::TWaveGroup::getWaveID(int index) const { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x12a, index < mWaveCount); + JUT_ASSERT("JASBasicWaveBank.cpp", 299, index >= 0); + return mCtrlWaveArray[index].field_0x0; } -#pragma pop /* 80298B64-80298B88 2934A4 0024+00 1/0 0/0 0/0 .text * getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveHandle::getWavePtr() const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv.s" +int JASBasicWaveBank::TWaveHandle::getWavePtr() const { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x139, mHeap); + void* base = mHeap->getBase(); + if (base == 0) { + return 0; + } + return (int)base + field_0x4.field_0x08; } -#pragma pop /* 80298B88-80298BD0 2934C8 0048+00 1/0 0/0 0/0 .text __dt__11JASWaveBankFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASWaveBank::~JASWaveBank() { +// asm JASWaveBank::~JASWaveBank() { +asm void __dt__11JASWaveBankFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__11JASWaveBankFv.s" } @@ -369,7 +360,8 @@ asm JASWaveBank::~JASWaveBank() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASWaveHandle::~JASWaveHandle() { +// asm JASWaveHandle::~JASWaveHandle() { +asm void __dt__13JASWaveHandleFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__13JASWaveHandleFv.s" } @@ -379,7 +371,8 @@ asm JASWaveHandle::~JASWaveHandle() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { +// asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { +asm void __ct__Q216JASBasicWaveBank11TWaveHandleFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank11TWaveHandleFv.s" } @@ -390,7 +383,8 @@ asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { +// asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { +asm void __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank14TGroupWaveInfoFv.s" } @@ -401,7 +395,8 @@ asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveHandle::getWaveInfo() const { +// asm JASWaveInfo* JASBasicWaveBank::TWaveHandle::getWaveInfo() const { +asm void getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv.s" } @@ -412,7 +407,8 @@ asm void JASBasicWaveBank::TWaveHandle::getWaveInfo() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveArc(u32 param_0) { +// asm JASWaveArc* JASBasicWaveBank::getWaveArc(u32 param_0) { +asm void getWaveArc__16JASBasicWaveBankFUl() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveArc__16JASBasicWaveBankFUl.s" } @@ -423,7 +419,8 @@ asm void JASBasicWaveBank::getWaveArc(u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::getArcCount() const { +// asm u32 JASBasicWaveBank::getArcCount() const { +asm void getArcCount__16JASBasicWaveBankCFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getArcCount__16JASBasicWaveBankCFv.s" } diff --git a/libs/JSystem/JAudio2/JASChannel.cpp b/libs/JSystem/JAudio2/JASChannel.cpp index 0692c84370..1abab78270 100644 --- a/libs/JSystem/JAudio2/JASChannel.cpp +++ b/libs/JSystem/JAudio2/JASChannel.cpp @@ -14,43 +14,7 @@ struct JMath { static u8 sincosTable_[65536]; }; -struct JASWaveInfo { - static u32 one[1 + 1 /* padding */]; -}; - -struct JASOscillator { - struct Data {}; - - struct EffectParams {}; - - /* 8029BE94 */ JASOscillator(); - /* 8029BEC4 */ void initStart(JASOscillator::Data const*); - /* 8029BF68 */ void incCounter(f32); - /* 8029BFC8 */ void getValue() const; - /* 8029BFE4 */ void release(); - /* 8029C0E0 */ void update(); -}; - -template -struct JASMemPool_MultiThreaded {}; -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template2 { - /* 802978DC */ void func_802978DC(void* _this); -}; - -struct JASLfo { - /* 8029BD14 */ JASLfo(); - /* 8029BD44 */ void getValue() const; - /* 8029BDD8 */ void incCounter(f32); - /* 8029BE2C */ void resetCounter(); -}; - -struct JASGenericMemPool { - /* 80290848 */ JASGenericMemPool(); - /* 80290994 */ void free(void*, u32); -}; - -struct JASDsp { +namespace JASDsp { struct TChannel { /* 8029DD8C */ void setWaveInfo(JASWaveInfo const&, u32, u32); /* 8029DEAC */ void setOscInfo(u32); @@ -77,38 +41,6 @@ struct JASDSPChannel { /* 8029D534 */ void setPriority(u8); }; -struct JASChannel { - struct PanVector {}; - - /* 8029A800 */ JASChannel(void (*)(u32, JASChannel*, JASDsp::TChannel*, void*), void*); - /* 8029A918 */ ~JASChannel(); - /* 8029A9F0 */ void play(); - /* 8029AA60 */ void playForce(); - /* 8029AAD0 */ void release(u16); - /* 8029AB64 */ void setOscInit(u32, JASOscillator::Data const*); - /* 8029AB98 */ void setMixConfig(u32, u16); - /* 8029ABA8 */ void calcEffect(JASChannel::PanVector const*); - /* 8029ABC0 */ void calcPan(JASChannel::PanVector const*); - /* 8029ABEC */ void effectOsc(u32, JASOscillator::EffectParams*); - /* 8029ACD4 */ void setKeySweepTarget(s32, u32); - /* 8029AD38 */ void updateEffectorParam(JASDsp::TChannel*, u16*, - JASOscillator::EffectParams const&); - /* 8029AF78 */ void dspUpdateCallback(u32, JASDsp::TChannel*, void*); - /* 8029B004 */ void initialUpdateDSPChannel(JASDsp::TChannel*); - /* 8029B324 */ void updateDSPChannel(JASDsp::TChannel*); - /* 8029B6A0 */ void updateAutoMixer(JASDsp::TChannel*, f32, f32, f32, f32); - /* 8029B7D8 */ void updateMixer(f32, f32, f32, f32, u16*); - /* 8029BBFC */ void free(); - /* 8029BC0C */ void initBankDisposeMsgQueue(); - /* 8029BC48 */ void receiveBankDisposeMsg(); - /* 8029BCC0 */ void checkBankDispose() const; - - static u8 sBankDisposeMsgQ[32]; - static u8 sBankDisposeMsg[64]; - static u8 sBankDisposeList[64]; - static u8 sBankDisposeListSize[4 + 4 /* padding */]; -}; - struct JASCalc { /* 8028F578 */ void pow2(f32); }; @@ -180,10 +112,6 @@ extern "C" void setPauseFlag__Q26JASDsp8TChannelFUc(); extern "C" void setBusConnect__Q26JASDsp8TChannelFUcUc(); extern "C" void getChannelLevel_dsp__9JASDriverFv(); extern "C" void getOutputMode__9JASDriverFv(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSInitMessageQueue(); -extern "C" void OSReceiveMessage(); extern "C" void __register_global_object(); extern "C" void __construct_array(); extern "C" void _savegpr_27(); @@ -234,13 +162,13 @@ asm JASChannel::JASChannel(void (*param_0)(u32, JASChannel*, JASDsp::TChannel*, /* ############################################################################################## */ /* 80431B90-80431BB0 05E8B0 0020+00 2/2 0/0 0/0 .bss sBankDisposeMsgQ__10JASChannel */ -u8 JASChannel::sBankDisposeMsgQ[32]; +OSMessageQueue JASChannel::sBankDisposeMsgQ; /* 80431BB0-80431BF0 05E8D0 0040+00 1/1 0/0 0/0 .bss sBankDisposeMsg__10JASChannel */ -u8 JASChannel::sBankDisposeMsg[64]; +OSMessage JASChannel::sBankDisposeMsg[16]; /* 80431BF0-80431C30 05E910 0040+00 2/2 0/3 0/0 .bss sBankDisposeList__10JASChannel */ -u8 JASChannel::sBankDisposeList[64]; +u32 JASChannel::sBankDisposeList[16]; /* 80431C30-80431C40 05E950 000C+04 1/1 0/2 0/0 .bss @556 */ static u8 lit_556[12 + 4 /* padding */]; @@ -259,7 +187,7 @@ asm JASChannel::~JASChannel() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASChannel::play() { +asm int JASChannel::play() { nofralloc #include "asm/JSystem/JAudio2/JASChannel/play__10JASChannelFv.s" } @@ -528,7 +456,7 @@ asm void JASChannel::free() { /* ############################################################################################## */ /* 80451298-804512A0 000798 0004+04 3/3 0/0 0/0 .sbss sBankDisposeListSize__10JASChannel */ -u8 JASChannel::sBankDisposeListSize[4 + 4 /* padding */]; +u32 JASChannel::sBankDisposeListSize; /* 8029BC0C-8029BC48 29654C 003C+00 0/0 1/1 0/0 .text initBankDisposeMsgQueue__10JASChannelFv */ #pragma push diff --git a/libs/JSystem/JAudio2/JASLfo.cpp b/libs/JSystem/JAudio2/JASLfo.cpp index 2f99845ad9..06ffc83cd9 100644 --- a/libs/JSystem/JAudio2/JASLfo.cpp +++ b/libs/JSystem/JAudio2/JASLfo.cpp @@ -29,9 +29,9 @@ JASLfo::JASLfo() { field_0x0 = 0; field_0x4 = 1; field_0x8 = 0.0f; - field_0xC = 0.0f; - field_0x10 = 1.0f; - field_0x14 = 0; + mDepth = 0.0f; + mPitch = 1.0f; + mDelay = 0; field_0x16 = 0; } @@ -43,11 +43,11 @@ f32 JASLfo::getValue() const { return 0.0f; } - if (field_0xC == 0.0f) { + if (mDepth == 0.0f) { return 0.0f; } - return field_0xC * JMASinLap(field_0x8); + return mDepth * JMASinLap(field_0x8); } /* ############################################################################################## */ @@ -59,7 +59,7 @@ void JASLfo::incCounter(f32 param_0) { return; } - field_0x8 += param_0 * ((1.0f / 72.0f) * field_0x10); + field_0x8 += param_0 * ((1.0f / 72.0f) * mPitch); if (field_0x8 >= 1.0f) { field_0x8 -= 1.0f; } @@ -71,7 +71,7 @@ JASLfo JASLfo::sFreeRunLfo; /* 8029BE2C-8029BE6C 29676C 0040+00 0/0 1/1 0/0 .text resetCounter__6JASLfoFv */ void JASLfo::resetCounter() { - field_0x16 = field_0x14; + field_0x16 = mDelay; switch (field_0x4) { case 0: field_0x8 = sFreeRunLfo.field_0x8; diff --git a/libs/JSystem/JAudio2/JASOscillator.cpp b/libs/JSystem/JAudio2/JASOscillator.cpp index ac7cecf36b..14d8ddb47a 100644 --- a/libs/JSystem/JAudio2/JASOscillator.cpp +++ b/libs/JSystem/JAudio2/JASOscillator.cpp @@ -27,7 +27,7 @@ JASOscillator::JASOscillator() { mData = NULL; _14 = 0; - _16 = 0; + mDirectRelease = 0; _18 = 0; _1C = 0; _0C = 0.0f; @@ -46,7 +46,7 @@ void JASOscillator::initStart(JASOscillator::Data const* data) { _08 = 0.0f; _0C = 0.0f; _14 = 0; - _16 = 0; + mDirectRelease = 0; if (!data) { _1C = 0; return; @@ -84,17 +84,17 @@ f32 JASOscillator::getValue() const { /* 8029BFE4-8029C0E0 296924 00FC+00 0/0 1/1 0/0 .text release__13JASOscillatorFv */ void JASOscillator::release() { - if (mData->_0C == NULL && _16 == 0) { + if (mData->_0C == NULL && mDirectRelease == 0) { stop(); return; } - if (_16 != 0) { + if (mDirectRelease != 0) { _04 = 0.0f; _0C = _08; _10 = 0.0f; _14 = 0; - _18 = (_16 >> 14) & 3; + _18 = (mDirectRelease >> 14) & 3; _1C = 4; update(); return; @@ -115,7 +115,7 @@ void JASOscillator::release() { /* 8029C0E0-8029C2C0 296A20 01E0+00 2/2 1/1 0/0 .text update__13JASOscillatorFv */ void JASOscillator::update() { if (_1C == 4) { - s16 x = _16 & 0x3FFF; + s16 x = mDirectRelease & 0x3FFF; if (_04 < x) { updateCurrentValue(x); } else { @@ -127,7 +127,7 @@ void JASOscillator::update() { if (_1C == 2) return; - short* psVar1; + const short* psVar1; if (_1C == 1) { psVar1 = mData->_08; } else { @@ -144,7 +144,7 @@ void JASOscillator::update() { _08 = _10; _14++; _0C = _08; - s16* ps = &psVar1[_14 * 3]; + const s16* ps = &psVar1[_14 * 3]; switch(ps[0]) { case 0xf: _1C = 0; diff --git a/libs/JSystem/JAudio2/JASVoiceBank.cpp b/libs/JSystem/JAudio2/JASVoiceBank.cpp index 9cdc41e5bb..87732ed6d1 100644 --- a/libs/JSystem/JAudio2/JASVoiceBank.cpp +++ b/libs/JSystem/JAudio2/JASVoiceBank.cpp @@ -4,95 +4,40 @@ // #include "JSystem/JAudio2/JASVoiceBank.h" +#include "JSystem/JAudio2/JASBasicInst.h" #include "dol2asm.h" -// -// Types: -// - -struct JASInstParam {}; - -struct JASVoiceBank { - /* 80297F74 */ void getInstParam(int, int, int, JASInstParam*) const; - /* 80297FAC */ ~JASVoiceBank(); - /* 80298008 */ void getType() const; - - static u8 const sOscData[24]; - static u8 sOscTable[4 + 4 /* padding */]; -}; - -// -// Forward References: -// - -extern "C" void getInstParam__12JASVoiceBankCFiiiP12JASInstParam(); -extern "C" void __dt__12JASVoiceBankFv(); -extern "C" void getType__12JASVoiceBankCFv(); -extern "C" u8 const sOscData__12JASVoiceBank[24]; -extern "C" u8 sOscTable__12JASVoiceBank[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void __dl__FPv(); -extern "C" extern void* __vt__7JASBank[5]; - // // Declarations: // /* ############################################################################################## */ /* 8039B1B8-8039B1D0 027818 0018+00 1/1 0/0 0/0 .rodata sOscData__12JASVoiceBank */ -SECTION_RODATA u8 const JASVoiceBank::sOscData[24] = { - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +const JASOscillator::Data JASVoiceBank::sOscData = { + 0, 1.0f, NULL, NULL, 1.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x8039B1B8, &JASVoiceBank::sOscData); /* 80451268-80451270 000768 0004+04 1/1 0/0 0/0 .sbss sOscTable__12JASVoiceBank */ -u8 JASVoiceBank::sOscTable[4 + 4 /* padding */]; +JASOscillator::Data* JASVoiceBank::sOscTable; /* 80297F74-80297FAC 2928B4 0038+00 1/0 0/0 0/0 .text * getInstParam__12JASVoiceBankCFiiiP12JASInstParam */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASVoiceBank::getInstParam(int param_0, int param_1, int param_2, +bool JASVoiceBank::getInstParam(int param_0, int param_1, int param_2, JASInstParam* param_3) const { - nofralloc -#include "asm/JSystem/JAudio2/JASVoiceBank/getInstParam__12JASVoiceBankCFiiiP12JASInstParam.s" + if (param_0 < 0) { + return false; + } + sOscTable = (JASOscillator::Data*)&sOscData; + param_3->field_0x1a = param_0; + param_3->field_0x1d = 1; + param_3->field_0x14 = &sOscTable; + return true; } -#pragma pop - -/* ############################################################################################## */ -/* 803C76D0-803C76E8 0247F0 0014+04 1/1 1/1 0/0 .data __vt__12JASVoiceBank */ -SECTION_DATA extern void* __vt__12JASVoiceBank[5 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12JASVoiceBankFv, - (void*)getInstParam__12JASVoiceBankCFiiiP12JASInstParam, - (void*)getType__12JASVoiceBankCFv, - /* padding */ - NULL, -}; /* 80297FAC-80298008 2928EC 005C+00 1/0 0/0 0/0 .text __dt__12JASVoiceBankFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JASVoiceBank::~JASVoiceBank() { - nofralloc -#include "asm/JSystem/JAudio2/JASVoiceBank/__dt__12JASVoiceBankFv.s" -} -#pragma pop +JASVoiceBank::~JASVoiceBank() {} /* 80298008-80298014 292948 000C+00 1/0 0/0 0/0 .text getType__12JASVoiceBankCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASVoiceBank::getType() const { - nofralloc -#include "asm/JSystem/JAudio2/JASVoiceBank/getType__12JASVoiceBankCFv.s" -} -#pragma pop +u32 JASVoiceBank::getType() const { + return 'VOIC'; +} \ No newline at end of file diff --git a/libs/JSystem/JAudio2/JAUSeqCollection.cpp b/libs/JSystem/JAudio2/JAUSeqCollection.cpp index d1a3c3cdfd..506cde2e10 100644 --- a/libs/JSystem/JAudio2/JAUSeqCollection.cpp +++ b/libs/JSystem/JAudio2/JAUSeqCollection.cpp @@ -4,74 +4,31 @@ // #include "JSystem/JAudio2/JAUSeqCollection.h" +#include "JSystem/JUtility/JUTAssert.h" #include "dol2asm.h" // // Types: // -struct JAISeqDataUser {}; - -struct JAISoundID {}; - -struct JAISeqData {}; - -struct JAUSeqDataMgr_SeqCollection { - /* 802A677C */ JAUSeqDataMgr_SeqCollection(); - /* 802A67D0 */ void setSeqDataUser(JAISeqDataUser*); - /* 802A67DC */ void releaseSeqData(); - /* 802A683C */ void getSeqData(JAISoundID, JAISeqData*); - /* 802A6894 */ ~JAUSeqDataMgr_SeqCollection(); -}; - -struct JAISeqDataRegion {}; - -struct JAUSeqCollection { - /* 802A66A0 */ JAUSeqCollection(); - /* 802A66AC */ void init(void const*); - /* 802A66FC */ void getSeqData(int, int, JAISeqData*); - /* 802A6754 */ void getSeqDataRegion(JAISeqDataRegion*); -}; - -struct JAISeqDataMgr { - /* 802A17BC */ ~JAISeqDataMgr(); -}; - // // Forward References: // -extern "C" void __ct__16JAUSeqCollectionFv(); -extern "C" void init__16JAUSeqCollectionFPCv(); extern "C" void getSeqData__16JAUSeqCollectionFiiP10JAISeqData(); -extern "C" void getSeqDataRegion__16JAUSeqCollectionFP16JAISeqDataRegion(); -extern "C" void __ct__27JAUSeqDataMgr_SeqCollectionFv(); -extern "C" void setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser(); -extern "C" void releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv(); -extern "C" void getSeqData__27JAUSeqDataMgr_SeqCollectionF10JAISoundIDP10JAISeqData(); -extern "C" void __dt__27JAUSeqDataMgr_SeqCollectionFv(); // // External References: // -extern "C" void __dt__13JAISeqDataMgrFv(); -extern "C" void __dl__FPv(); -extern "C" extern void* __vt__13JAISeqDataMgr[6]; - // // Declarations: // /* 802A66A0-802A66AC 2A0FE0 000C+00 1/1 0/0 0/0 .text __ct__16JAUSeqCollectionFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JAUSeqCollection::JAUSeqCollection() { - nofralloc -#include "asm/JSystem/JAudio2/JAUSeqCollection/__ct__16JAUSeqCollectionFv.s" +JAUSeqCollection::JAUSeqCollection() { + field_0x8 = NULL; } -#pragma pop /* 802A66AC-802A66FC 2A0FEC 0050+00 0/0 1/1 0/0 .text init__16JAUSeqCollectionFPCv */ #pragma push @@ -88,7 +45,7 @@ asm void JAUSeqCollection::init(void const* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAUSeqCollection::getSeqData(int param_0, int param_1, JAISeqData* param_2) { +asm bool JAUSeqCollection::getSeqData(int param_0, int param_1, JAISeqData* param_2) { nofralloc #include "asm/JSystem/JAudio2/JAUSeqCollection/getSeqData__16JAUSeqCollectionFiiP10JAISeqData.s" } @@ -105,67 +62,53 @@ asm void JAUSeqCollection::getSeqDataRegion(JAISeqDataRegion* param_0) { } #pragma pop -/* ############################################################################################## */ -/* 803C9B38-803C9B50 026C58 0018+00 2/2 0/0 0/0 .data __vt__27JAUSeqDataMgr_SeqCollection - */ -SECTION_DATA extern void* __vt__27JAUSeqDataMgr_SeqCollection[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__27JAUSeqDataMgr_SeqCollectionFv, - (void*)getSeqData__27JAUSeqDataMgr_SeqCollectionF10JAISoundIDP10JAISeqData, - (void*)releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv, - (void*)setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser, -}; - /* 802A677C-802A67D0 2A10BC 0054+00 0/0 1/1 0/0 .text __ct__27JAUSeqDataMgr_SeqCollectionFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JAUSeqDataMgr_SeqCollection::JAUSeqDataMgr_SeqCollection() { - nofralloc -#include "asm/JSystem/JAudio2/JAUSeqCollection/__ct__27JAUSeqDataMgr_SeqCollectionFv.s" +JAUSeqDataMgr_SeqCollection::JAUSeqDataMgr_SeqCollection() { + user_ = NULL; } -#pragma pop /* 802A67D0-802A67DC 2A1110 000C+00 1/0 0/0 0/0 .text * setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUSeqDataMgr_SeqCollection::setSeqDataUser(JAISeqDataUser* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JAUSeqCollection/setSeqDataUser__27JAUSeqDataMgr_SeqCollectionFP14JAISeqDataUser.s" +bool JAUSeqDataMgr_SeqCollection::setSeqDataUser(JAISeqDataUser* param_0) { + JUT_ASSERT("JAUSeqCollection.cpp", 0x3c, user_ == 0); + user_ = param_0; + return true; } -#pragma pop /* 802A67DC-802A683C 2A111C 0060+00 1/0 0/0 0/0 .text * releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUSeqDataMgr_SeqCollection::releaseSeqData() { - nofralloc -#include "asm/JSystem/JAudio2/JAUSeqCollection/releaseSeqData__27JAUSeqDataMgr_SeqCollectionFv.s" +int JAUSeqDataMgr_SeqCollection::releaseSeqData() { + if (user_) { + JAISeqDataRegion region; + getSeqDataRegion(®ion); + return user_->releaseSeqData(region); + } + return 2; } -#pragma pop /* 802A683C-802A6894 2A117C 0058+00 1/0 0/0 0/0 .text * getSeqData__27JAUSeqDataMgr_SeqCollectionF10JAISoundIDP10JAISeqData */ +// branch +#ifdef NONMATCHING +s32 JAUSeqDataMgr_SeqCollection::getSeqData(JAISoundID param_0, JAISeqData* param_1) { + if (!isValid()) { + return 0; + } + if (JAUSeqCollection::getSeqData(param_0.mId.mBytes.b1, param_0.mId.mAdvancedId.mShortId, param_1)) { + return 2; + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAUSeqDataMgr_SeqCollection::getSeqData(JAISoundID param_0, JAISeqData* param_1) { +asm s32 JAUSeqDataMgr_SeqCollection::getSeqData(JAISoundID param_0, JAISeqData* param_1) { nofralloc #include "asm/JSystem/JAudio2/JAUSeqCollection/getSeqData__27JAUSeqDataMgr_SeqCollectionF10JAISoundIDP10JAISeqData.s" } #pragma pop +#endif /* 802A6894-802A68F4 2A11D4 0060+00 1/0 0/0 0/0 .text __dt__27JAUSeqDataMgr_SeqCollectionFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JAUSeqDataMgr_SeqCollection::~JAUSeqDataMgr_SeqCollection() { - nofralloc -#include "asm/JSystem/JAudio2/JAUSeqCollection/__dt__27JAUSeqDataMgr_SeqCollectionFv.s" -} -#pragma pop +JAUSeqDataMgr_SeqCollection::~JAUSeqDataMgr_SeqCollection() {} \ No newline at end of file