From 255cc868e43f3754b29fa089a2a02e617ecb09bb Mon Sep 17 00:00:00 2001 From: Caroline Madsen <69010899+randomsalience@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:08:37 -0500 Subject: [PATCH] work on Z2SoundMgr and Z2SeMgr (#2055) --- Progress.md | 8 +- asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s | 52 - .../isLevelSe__7Z2SeMgrF10JAISoundID.s | 40 - .../messageSePlay__7Z2SeMgrFUsP3VecSc.s | 16 - .../modHeightAtCamera__7Z2SeMgrFPPC3Vec.s | 77 -- .../Z2SeMgr/seStopAll__7Z2SeMgrFUl.s | 43 - .../Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s | 44 - .../Z2SoundMgr/framework__10Z2SoundMgrFv.s | 14 - .../Z2SoundMgr/mixOut__10Z2SoundMgrFv.s | 98 -- .../resetFilterAll__10Z2SoundMgrFv.s | 74 -- .../setFilterOff__10Z2SoundMgrFP8JAISound.s | 67 -- .../setIIR__10Z2SoundMgrFP8JAISoundPCs.s | 57 -- .../stopSoundID__10Z2SoundMgrF10JAISoundID.s | 29 - .../Z2SoundMgr/stopSync__10Z2SoundMgrFv.s | 36 - .../Z2SoundMgr/stop__10Z2SoundMgrFv.s | 17 - include/JSystem/JAudio2/JAISe.h | 2 +- include/JSystem/JAudio2/JAISeMgr.h | 2 +- include/JSystem/JAudio2/JAISeqMgr.h | 4 +- include/JSystem/JAudio2/JAISoundHandles.h | 2 + include/JSystem/JAudio2/JAISoundInfo.h | 2 +- include/JSystem/JAudio2/JAIStreamMgr.h | 3 +- include/JSystem/JAudio2/JAUSectionHeap.h | 3 +- include/JSystem/JAudio2/JAUSeqDataBlockMgr.h | 10 +- include/Z2AudioLib/Z2AudioMgr.h | 2 +- include/Z2AudioLib/Z2Calc.h | 1 + include/Z2AudioLib/Z2Creature.h | 4 +- include/Z2AudioLib/Z2Param.h | 4 + include/Z2AudioLib/Z2SceneMgr.h | 1 + include/Z2AudioLib/Z2SeMgr.h | 76 +- include/Z2AudioLib/Z2SeqMgr.h | 1 + include/Z2AudioLib/Z2SoundInfo.h | 2 +- include/Z2AudioLib/Z2SoundMgr.h | 4 +- include/Z2AudioLib/Z2SoundStarter.h | 4 +- include/Z2AudioLib/Z2SpeechMgr2.h | 2 +- include/Z2AudioLib/Z2StatusMgr.h | 1 + libs/JSystem/JAudio2/JAISeMgr.cpp | 6 +- libs/JSystem/JAudio2/JAISeqMgr.cpp | 2 +- libs/JSystem/JAudio2/JAIStreamMgr.cpp | 2 +- libs/JSystem/JAudio2/JAUSectionHeap.cpp | 12 +- libs/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp | 40 +- libs/Z2AudioLib/Z2AudioMgr.cpp | 2 +- libs/Z2AudioLib/Z2Creature.cpp | 2 +- libs/Z2AudioLib/Z2LinkMgr.cpp | 4 +- libs/Z2AudioLib/Z2Param.cpp | 9 +- libs/Z2AudioLib/Z2SeMgr.cpp | 931 +++++++++++++++--- libs/Z2AudioLib/Z2SoundInfo.cpp | 2 +- libs/Z2AudioLib/Z2SoundMgr.cpp | 449 +++++++-- libs/Z2AudioLib/Z2SoundStarter.cpp | 56 +- libs/Z2AudioLib/Z2SpeechMgr2.cpp | 2 +- 49 files changed, 1341 insertions(+), 980 deletions(-) delete mode 100644 asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeMgr/isLevelSe__7Z2SeMgrF10JAISoundID.s delete mode 100644 asm/Z2AudioLib/Z2SeMgr/messageSePlay__7Z2SeMgrFUsP3VecSc.s delete mode 100644 asm/Z2AudioLib/Z2SeMgr/modHeightAtCamera__7Z2SeMgrFPPC3Vec.s delete mode 100644 asm/Z2AudioLib/Z2SeMgr/seStopAll__7Z2SeMgrFUl.s delete mode 100644 asm/Z2AudioLib/Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s diff --git a/Progress.md b/Progress.md index 8f505825ae2..f0c9223ebdb 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 45.154571% | 1624004 | 3596544 +.text | 45.220412% | 1626372 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 50.935267% | 2047940 | 4020672 +Total | 50.994162% | 2050308 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 50.935267% | 2047940 | 4020672 +main.dol | 50.994162% | 2050308 | 4020672 RELs | 35.541016% | 4087332 | 11500324 -Total | 39.528855% | 6135272 | 15520996 +Total | 39.544112% | 6137640 | 15520996 ## RELs diff --git a/asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s b/asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s deleted file mode 100644 index 2463430b10b..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_802AB750: -/* 802AB750 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AB754 7C 08 02 A6 */ mflr r0 -/* 802AB758 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AB75C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AB760 48 0B 6A 75 */ bl _savegpr_27 -/* 802AB764 7C 7B 1B 78 */ mr r27, r3 -/* 802AB768 3B 80 00 00 */ li r28, 0 -/* 802AB76C 3B E0 FF FF */ li r31, -1 -/* 802AB770 3B C0 00 00 */ li r30, 0 -/* 802AB774 48 00 00 24 */ b lbl_802AB798 -lbl_802AB778: -/* 802AB778 57 80 06 3E */ clrlwi r0, r28, 0x18 -/* 802AB77C 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 802AB780 7F BB 02 14 */ add r29, r27, r0 -/* 802AB784 38 7D 00 68 */ addi r3, r29, 0x68 -/* 802AB788 48 00 35 35 */ bl resetMultiSePos__12Z2MultiSeMgrFv -/* 802AB78C 93 FD 00 84 */ stw r31, 0x84(r29) -/* 802AB790 9B DD 00 88 */ stb r30, 0x88(r29) -/* 802AB794 3B 9C 00 01 */ addi r28, r28, 1 -lbl_802AB798: -/* 802AB798 57 80 06 3E */ clrlwi r0, r28, 0x18 -/* 802AB79C 28 00 00 0A */ cmplwi r0, 0xa -/* 802AB7A0 41 80 FF D8 */ blt lbl_802AB778 -/* 802AB7A4 3B C0 00 00 */ li r30, 0 -/* 802AB7A8 9B DB 01 D0 */ stb r30, 0x1d0(r27) -/* 802AB7AC 3B 80 00 00 */ li r28, 0 -/* 802AB7B0 3B E0 FF FF */ li r31, -1 -/* 802AB7B4 48 00 00 24 */ b lbl_802AB7D8 -lbl_802AB7B8: -/* 802AB7B8 57 80 06 3E */ clrlwi r0, r28, 0x18 -/* 802AB7BC 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 802AB7C0 7F BB 02 14 */ add r29, r27, r0 -/* 802AB7C4 38 7D 01 D4 */ addi r3, r29, 0x1d4 -/* 802AB7C8 48 00 34 F5 */ bl resetMultiSePos__12Z2MultiSeMgrFv -/* 802AB7CC 93 FD 01 F0 */ stw r31, 0x1f0(r29) -/* 802AB7D0 9B DD 01 F4 */ stb r30, 0x1f4(r29) -/* 802AB7D4 3B 9C 00 01 */ addi r28, r28, 1 -lbl_802AB7D8: -/* 802AB7D8 57 80 06 3E */ clrlwi r0, r28, 0x18 -/* 802AB7DC 28 00 00 0A */ cmplwi r0, 0xa -/* 802AB7E0 41 80 FF D8 */ blt lbl_802AB7B8 -/* 802AB7E4 38 00 00 00 */ li r0, 0 -/* 802AB7E8 98 1B 03 3C */ stb r0, 0x33c(r27) -/* 802AB7EC 7F 63 DB 78 */ mr r3, r27 -/* 802AB7F0 48 00 00 1D */ bl resetModY__7Z2SeMgrFv -/* 802AB7F4 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AB7F8 48 0B 6A 29 */ bl _restgpr_27 -/* 802AB7FC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AB800 7C 08 03 A6 */ mtlr r0 -/* 802AB804 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AB808 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeMgr/isLevelSe__7Z2SeMgrF10JAISoundID.s b/asm/Z2AudioLib/Z2SeMgr/isLevelSe__7Z2SeMgrF10JAISoundID.s deleted file mode 100644 index 82220954b08..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/isLevelSe__7Z2SeMgrF10JAISoundID.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_802AE524: -/* 802AE524 80 84 00 00 */ lwz r4, 0(r4) -/* 802AE528 3C 60 00 08 */ lis r3, 0x0008 /* 0x00080018@ha */ -/* 802AE52C 38 03 00 18 */ addi r0, r3, 0x0018 /* 0x00080018@l */ -/* 802AE530 7C 04 00 00 */ cmpw r4, r0 -/* 802AE534 41 82 00 6C */ beq lbl_802AE5A0 -/* 802AE538 40 80 00 38 */ bge lbl_802AE570 -/* 802AE53C 3C 60 00 02 */ lis r3, 0x0002 /* 0x00020039@ha */ -/* 802AE540 38 03 00 39 */ addi r0, r3, 0x0039 /* 0x00020039@l */ -/* 802AE544 7C 04 00 00 */ cmpw r4, r0 -/* 802AE548 41 82 00 60 */ beq lbl_802AE5A8 -/* 802AE54C 40 80 00 14 */ bge lbl_802AE560 -/* 802AE550 38 03 00 38 */ addi r0, r3, 0x38 -/* 802AE554 7C 04 00 00 */ cmpw r4, r0 -/* 802AE558 40 80 00 48 */ bge lbl_802AE5A0 -/* 802AE55C 48 00 00 4C */ b lbl_802AE5A8 -lbl_802AE560: -/* 802AE560 38 03 00 3B */ addi r0, r3, 0x3b -/* 802AE564 7C 04 00 00 */ cmpw r4, r0 -/* 802AE568 40 80 00 40 */ bge lbl_802AE5A8 -/* 802AE56C 48 00 00 34 */ b lbl_802AE5A0 -lbl_802AE570: -/* 802AE570 3C 60 00 09 */ lis r3, 0x0009 /* 0x00090010@ha */ -/* 802AE574 38 03 00 10 */ addi r0, r3, 0x0010 /* 0x00090010@l */ -/* 802AE578 7C 04 00 00 */ cmpw r4, r0 -/* 802AE57C 41 82 00 24 */ beq lbl_802AE5A0 -/* 802AE580 40 80 00 28 */ bge lbl_802AE5A8 -/* 802AE584 38 03 00 07 */ addi r0, r3, 7 -/* 802AE588 7C 04 00 00 */ cmpw r4, r0 -/* 802AE58C 40 80 00 1C */ bge lbl_802AE5A8 -/* 802AE590 38 03 00 03 */ addi r0, r3, 3 -/* 802AE594 7C 04 00 00 */ cmpw r4, r0 -/* 802AE598 40 80 00 08 */ bge lbl_802AE5A0 -/* 802AE59C 48 00 00 0C */ b lbl_802AE5A8 -lbl_802AE5A0: -/* 802AE5A0 38 60 00 01 */ li r3, 1 -/* 802AE5A4 4E 80 00 20 */ blr -lbl_802AE5A8: -/* 802AE5A8 38 60 00 00 */ li r3, 0 -/* 802AE5AC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeMgr/messageSePlay__7Z2SeMgrFUsP3VecSc.s b/asm/Z2AudioLib/Z2SeMgr/messageSePlay__7Z2SeMgrFUsP3VecSc.s deleted file mode 100644 index 3d3e3265709..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/messageSePlay__7Z2SeMgrFUsP3VecSc.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802ADB14: -/* 802ADB14 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802ADB18 7C 08 02 A6 */ mflr r0 -/* 802ADB1C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802ADB20 7C 88 23 78 */ mr r8, r4 -/* 802ADB24 7C A0 2B 78 */ mr r0, r5 -/* 802ADB28 7C C7 33 78 */ mr r7, r6 -/* 802ADB2C 80 6D 85 F0 */ lwz r3, __OSReport_disable-0x28(r13) -/* 802ADB30 38 80 00 00 */ li r4, 0 -/* 802ADB34 7D 05 43 78 */ mr r5, r8 -/* 802ADB38 7C 06 03 78 */ mr r6, r0 -/* 802ADB3C 48 01 EE DD */ bl playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc -/* 802ADB40 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802ADB44 7C 08 03 A6 */ mtlr r0 -/* 802ADB48 38 21 00 10 */ addi r1, r1, 0x10 -/* 802ADB4C 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeMgr/modHeightAtCamera__7Z2SeMgrFPPC3Vec.s b/asm/Z2AudioLib/Z2SeMgr/modHeightAtCamera__7Z2SeMgrFPPC3Vec.s deleted file mode 100644 index 7cb09fa77c2..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/modHeightAtCamera__7Z2SeMgrFPPC3Vec.s +++ /dev/null @@ -1,77 +0,0 @@ -lbl_802AB830: -/* 802AB830 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AB834 80 C4 00 00 */ lwz r6, 0(r4) -/* 802AB838 28 06 00 00 */ cmplwi r6, 0 -/* 802AB83C 41 82 00 F8 */ beq lbl_802AB934 -/* 802AB840 38 E0 27 0F */ li r7, 0x270f -/* 802AB844 39 00 00 00 */ li r8, 0 -/* 802AB848 38 A0 00 00 */ li r5, 0 -/* 802AB84C 38 00 00 08 */ li r0, 8 -/* 802AB850 7C 09 03 A6 */ mtctr r0 -lbl_802AB854: -/* 802AB854 38 05 03 A0 */ addi r0, r5, 0x3a0 -/* 802AB858 7C 03 00 2E */ lwzx r0, r3, r0 -/* 802AB85C 7C 00 30 40 */ cmplw r0, r6 -/* 802AB860 40 82 00 0C */ bne lbl_802AB86C -/* 802AB864 7D 07 43 78 */ mr r7, r8 -/* 802AB868 48 00 00 10 */ b lbl_802AB878 -lbl_802AB86C: -/* 802AB86C 39 08 00 01 */ addi r8, r8, 1 -/* 802AB870 38 A5 00 04 */ addi r5, r5, 4 -/* 802AB874 42 00 FF E0 */ bdnz lbl_802AB854 -lbl_802AB878: -/* 802AB878 2C 07 27 0F */ cmpwi r7, 0x270f -/* 802AB87C 40 82 00 48 */ bne lbl_802AB8C4 -/* 802AB880 39 00 00 00 */ li r8, 0 -/* 802AB884 38 A0 00 00 */ li r5, 0 -/* 802AB888 38 00 00 08 */ li r0, 8 -/* 802AB88C 7C 09 03 A6 */ mtctr r0 -lbl_802AB890: -/* 802AB890 38 05 03 A0 */ addi r0, r5, 0x3a0 -/* 802AB894 7C 03 00 2E */ lwzx r0, r3, r0 -/* 802AB898 28 00 00 00 */ cmplwi r0, 0 -/* 802AB89C 40 82 00 14 */ bne lbl_802AB8B0 -/* 802AB8A0 7D 07 43 78 */ mr r7, r8 -/* 802AB8A4 7C A3 2A 14 */ add r5, r3, r5 -/* 802AB8A8 90 C5 03 A0 */ stw r6, 0x3a0(r5) -/* 802AB8AC 48 00 00 10 */ b lbl_802AB8BC -lbl_802AB8B0: -/* 802AB8B0 39 08 00 01 */ addi r8, r8, 1 -/* 802AB8B4 38 A5 00 04 */ addi r5, r5, 4 -/* 802AB8B8 42 00 FF D8 */ bdnz lbl_802AB890 -lbl_802AB8BC: -/* 802AB8BC 2C 08 00 08 */ cmpwi r8, 8 -/* 802AB8C0 41 82 00 74 */ beq lbl_802AB934 -lbl_802AB8C4: -/* 802AB8C4 80 A4 00 00 */ lwz r5, 0(r4) -/* 802AB8C8 C0 05 00 00 */ lfs f0, 0(r5) -/* 802AB8CC 1C E7 00 0C */ mulli r7, r7, 0xc -/* 802AB8D0 7C C3 3A 14 */ add r6, r3, r7 -/* 802AB8D4 D0 06 03 40 */ stfs f0, 0x340(r6) -/* 802AB8D8 C0 05 00 04 */ lfs f0, 4(r5) -/* 802AB8DC D0 06 03 44 */ stfs f0, 0x344(r6) -/* 802AB8E0 C0 05 00 08 */ lfs f0, 8(r5) -/* 802AB8E4 D0 06 03 48 */ stfs f0, 0x348(r6) -/* 802AB8E8 80 AD 85 C4 */ lwz r5, __OSReport_disable-0x54(r13) -/* 802AB8EC E0 25 01 70 */ psq_l f1, 368(r5), 0, 0 /* qr0 */ -/* 802AB8F0 C0 05 01 78 */ lfs f0, 0x178(r5) -/* 802AB8F4 F0 21 00 08 */ psq_st f1, 8(r1), 0, 0 /* qr0 */ -/* 802AB8F8 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 802AB8FC 80 A1 00 08 */ lwz r5, 8(r1) -/* 802AB900 80 01 00 0C */ lwz r0, 0xc(r1) -/* 802AB904 90 A1 00 14 */ stw r5, 0x14(r1) -/* 802AB908 90 01 00 18 */ stw r0, 0x18(r1) -/* 802AB90C 80 01 00 10 */ lwz r0, 0x10(r1) -/* 802AB910 90 01 00 1C */ stw r0, 0x1c(r1) -/* 802AB914 C0 06 03 44 */ lfs f0, 0x344(r6) -/* 802AB918 C0 21 00 18 */ lfs f1, 0x18(r1) -/* 802AB91C FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 802AB920 40 81 00 08 */ ble lbl_802AB928 -/* 802AB924 D0 26 03 44 */ stfs f1, 0x344(r6) -lbl_802AB928: -/* 802AB928 38 07 03 40 */ addi r0, r7, 0x340 -/* 802AB92C 7C 03 02 14 */ add r0, r3, r0 -/* 802AB930 90 04 00 00 */ stw r0, 0(r4) -lbl_802AB934: -/* 802AB934 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AB938 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeMgr/seStopAll__7Z2SeMgrFUl.s b/asm/Z2AudioLib/Z2SeMgr/seStopAll__7Z2SeMgrFUl.s deleted file mode 100644 index 53a92140fda..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/seStopAll__7Z2SeMgrFUl.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_802AD94C: -/* 802AD94C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802AD950 7C 08 02 A6 */ mflr r0 -/* 802AD954 90 01 00 14 */ stw r0, 0x14(r1) -/* 802AD958 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802AD95C 93 C1 00 08 */ stw r30, 8(r1) -/* 802AD960 7C 9E 23 78 */ mr r30, r4 -/* 802AD964 83 ED 85 E0 */ lwz r31, __OSReport_disable-0x38(r13) -/* 802AD968 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802AD96C 4B FF 24 75 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD970 38 7F 00 84 */ addi r3, r31, 0x84 -/* 802AD974 7F C4 F3 78 */ mr r4, r30 -/* 802AD978 4B FF 24 69 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD97C 38 7F 00 F0 */ addi r3, r31, 0xf0 -/* 802AD980 7F C4 F3 78 */ mr r4, r30 -/* 802AD984 4B FF 24 5D */ bl stop__16JAISeCategoryMgrFUl -/* 802AD988 38 7F 01 5C */ addi r3, r31, 0x15c -/* 802AD98C 7F C4 F3 78 */ mr r4, r30 -/* 802AD990 4B FF 24 51 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD994 38 7F 01 C8 */ addi r3, r31, 0x1c8 -/* 802AD998 7F C4 F3 78 */ mr r4, r30 -/* 802AD99C 4B FF 24 45 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9A0 38 7F 02 34 */ addi r3, r31, 0x234 -/* 802AD9A4 7F C4 F3 78 */ mr r4, r30 -/* 802AD9A8 4B FF 24 39 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9AC 38 7F 02 A0 */ addi r3, r31, 0x2a0 -/* 802AD9B0 7F C4 F3 78 */ mr r4, r30 -/* 802AD9B4 4B FF 24 2D */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9B8 38 7F 03 0C */ addi r3, r31, 0x30c -/* 802AD9BC 7F C4 F3 78 */ mr r4, r30 -/* 802AD9C0 4B FF 24 21 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9C4 38 7F 03 78 */ addi r3, r31, 0x378 -/* 802AD9C8 7F C4 F3 78 */ mr r4, r30 -/* 802AD9CC 4B FF 24 15 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9D0 38 7F 03 E4 */ addi r3, r31, 0x3e4 -/* 802AD9D4 7F C4 F3 78 */ mr r4, r30 -/* 802AD9D8 4B FF 24 09 */ bl stop__16JAISeCategoryMgrFUl -/* 802AD9DC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802AD9E0 83 C1 00 08 */ lwz r30, 8(r1) -/* 802AD9E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802AD9E8 7C 08 03 A6 */ mtlr r0 -/* 802AD9EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 802AD9F0 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s b/asm/Z2AudioLib/Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s deleted file mode 100644 index 21d82354a29..00000000000 --- a/asm/Z2AudioLib/Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_802AD8B0: -/* 802AD8B0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 802AD8B4 7C 08 02 A6 */ mflr r0 -/* 802AD8B8 90 01 00 34 */ stw r0, 0x34(r1) -/* 802AD8BC 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AD8C0 48 0B 49 15 */ bl _savegpr_27 -/* 802AD8C4 7C 7B 1B 78 */ mr r27, r3 -/* 802AD8C8 7C 9C 23 78 */ mr r28, r4 -/* 802AD8CC 7C BD 2B 78 */ mr r29, r5 -/* 802AD8D0 80 64 00 00 */ lwz r3, 0(r4) -/* 802AD8D4 3C 03 00 01 */ addis r0, r3, 1 -/* 802AD8D8 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AD8DC 41 82 00 58 */ beq lbl_802AD934 -/* 802AD8E0 3B C0 00 00 */ li r30, 0 -/* 802AD8E4 48 00 00 44 */ b lbl_802AD928 -lbl_802AD8E8: -/* 802AD8E8 80 7B 00 60 */ lwz r3, 0x60(r27) -/* 802AD8EC 57 DF 15 BA */ rlwinm r31, r30, 2, 0x16, 0x1d -/* 802AD8F0 7C 63 F8 2E */ lwzx r3, r3, r31 -/* 802AD8F4 28 03 00 00 */ cmplwi r3, 0 -/* 802AD8F8 41 82 00 2C */ beq lbl_802AD924 -/* 802AD8FC 80 83 00 18 */ lwz r4, 0x18(r3) -/* 802AD900 90 81 00 08 */ stw r4, 8(r1) -/* 802AD904 80 1C 00 00 */ lwz r0, 0(r28) -/* 802AD908 7C 04 00 40 */ cmplw r4, r0 -/* 802AD90C 40 82 00 18 */ bne lbl_802AD924 -/* 802AD910 7F A4 EB 78 */ mr r4, r29 -/* 802AD914 4B FF 4B C9 */ bl stop__8JAISoundFUl -/* 802AD918 80 1B 00 60 */ lwz r0, 0x60(r27) -/* 802AD91C 7C 60 FA 14 */ add r3, r0, r31 -/* 802AD920 4B FF 48 65 */ bl releaseSound__14JAISoundHandleFv -lbl_802AD924: -/* 802AD924 3B DE 00 01 */ addi r30, r30, 1 -lbl_802AD928: -/* 802AD928 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 802AD92C 28 00 00 18 */ cmplwi r0, 0x18 -/* 802AD930 41 80 FF B8 */ blt lbl_802AD8E8 -lbl_802AD934: -/* 802AD934 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AD938 48 0B 48 E9 */ bl _restgpr_27 -/* 802AD93C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802AD940 7C 08 03 A6 */ mtlr r0 -/* 802AD944 38 21 00 30 */ addi r1, r1, 0x30 -/* 802AD948 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s b/asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s deleted file mode 100644 index fac7b6caa82..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_802AA67C: -/* 802AA67C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802AA680 7C 08 02 A6 */ mflr r0 -/* 802AA684 90 01 00 14 */ stw r0, 0x14(r1) -/* 802AA688 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802AA68C 7C 7F 1B 78 */ mr r31, r3 -/* 802AA690 4B FF FB 21 */ bl calc__10Z2SoundMgrFv -/* 802AA694 7F E3 FB 78 */ mr r3, r31 -/* 802AA698 4B FF FE 91 */ bl mixOut__10Z2SoundMgrFv -/* 802AA69C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802AA6A0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802AA6A4 7C 08 03 A6 */ mtlr r0 -/* 802AA6A8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802AA6AC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s b/asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s deleted file mode 100644 index 2eb5ab94014..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s +++ /dev/null @@ -1,98 +0,0 @@ -lbl_802AA528: -/* 802AA528 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AA52C 7C 08 02 A6 */ mflr r0 -/* 802AA530 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AA534 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AA538 48 0B 7C 99 */ bl _savegpr_26 -/* 802AA53C 7C 7E 1B 78 */ mr r30, r3 -/* 802AA540 88 0D 8D C0 */ lbz r0, struct_80451340+0x0(r13) -/* 802AA544 28 00 00 00 */ cmplwi r0, 0 -/* 802AA548 41 82 01 04 */ beq lbl_802AA64C -/* 802AA54C 80 6D 86 00 */ lwz r3, __OSReport_disable-0x18(r13) -/* 802AA550 88 03 00 1E */ lbz r0, 0x1e(r3) -/* 802AA554 28 00 00 00 */ cmplwi r0, 0 -/* 802AA558 41 82 00 F4 */ beq lbl_802AA64C -/* 802AA55C 3B E0 00 01 */ li r31, 1 -/* 802AA560 88 0D 8D C2 */ lbz r0, struct_80451340+0x2(r13) -/* 802AA564 28 00 00 00 */ cmplwi r0, 0 -/* 802AA568 41 82 00 08 */ beq lbl_802AA570 -/* 802AA56C 3B E0 00 00 */ li r31, 0 -lbl_802AA570: -/* 802AA570 1F BF 00 6C */ mulli r29, r31, 0x6c -/* 802AA574 48 00 00 D0 */ b lbl_802AA644 -lbl_802AA578: -/* 802AA578 7C 7E EA 14 */ add r3, r30, r29 -/* 802AA57C 80 03 00 80 */ lwz r0, 0x80(r3) -/* 802AA580 7C 1B 03 78 */ mr r27, r0 -/* 802AA584 2C 00 00 00 */ cmpwi r0, 0 -/* 802AA588 40 81 00 64 */ ble lbl_802AA5EC -/* 802AA58C 83 43 00 70 */ lwz r26, 0x70(r3) -/* 802AA590 3C 60 80 3A */ lis r3, CUTOFF_TO_IIR_TABLE__7JASCalc@ha /* 0x8039ABB8@ha */ -/* 802AA594 3B 83 AB B8 */ addi r28, r3, CUTOFF_TO_IIR_TABLE__7JASCalc@l /* 0x8039ABB8@l */ -/* 802AA598 48 00 00 2C */ b lbl_802AA5C4 -lbl_802AA59C: -/* 802AA59C 28 04 00 00 */ cmplwi r4, 0 -/* 802AA5A0 41 82 00 08 */ beq lbl_802AA5A8 -/* 802AA5A4 38 84 00 10 */ addi r4, r4, 0x10 -lbl_802AA5A8: -/* 802AA5A8 7F C3 F3 78 */ mr r3, r30 -/* 802AA5AC 88 0D 8D C1 */ lbz r0, struct_80451340+0x1(r13) -/* 802AA5B0 54 00 18 38 */ slwi r0, r0, 3 -/* 802AA5B4 7C BC 02 14 */ add r5, r28, r0 -/* 802AA5B8 4B FF FC B9 */ bl setIIR__10Z2SoundMgrFP8JAISoundPCs -/* 802AA5BC 83 5A 00 0C */ lwz r26, 0xc(r26) -/* 802AA5C0 3B 7B FF FF */ addi r27, r27, -1 -lbl_802AA5C4: -/* 802AA5C4 28 1A 00 00 */ cmplwi r26, 0 -/* 802AA5C8 41 82 00 74 */ beq lbl_802AA63C -/* 802AA5CC 2C 1B 00 00 */ cmpwi r27, 0 -/* 802AA5D0 40 81 00 6C */ ble lbl_802AA63C -/* 802AA5D4 80 9A 00 00 */ lwz r4, 0(r26) -/* 802AA5D8 80 64 00 B0 */ lwz r3, 0xb0(r4) -/* 802AA5DC 3C 03 00 01 */ addis r0, r3, 1 -/* 802AA5E0 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AA5E4 40 82 FF B8 */ bne lbl_802AA59C -/* 802AA5E8 48 00 00 54 */ b lbl_802AA63C -lbl_802AA5EC: -/* 802AA5EC 83 43 00 70 */ lwz r26, 0x70(r3) -/* 802AA5F0 3C 60 80 3A */ lis r3, CUTOFF_TO_IIR_TABLE__7JASCalc@ha /* 0x8039ABB8@ha */ -/* 802AA5F4 3B 83 AB B8 */ addi r28, r3, CUTOFF_TO_IIR_TABLE__7JASCalc@l /* 0x8039ABB8@l */ -/* 802AA5F8 48 00 00 28 */ b lbl_802AA620 -lbl_802AA5FC: -/* 802AA5FC 28 04 00 00 */ cmplwi r4, 0 -/* 802AA600 41 82 00 08 */ beq lbl_802AA608 -/* 802AA604 38 84 00 10 */ addi r4, r4, 0x10 -lbl_802AA608: -/* 802AA608 7F C3 F3 78 */ mr r3, r30 -/* 802AA60C 88 0D 8D C1 */ lbz r0, struct_80451340+0x1(r13) -/* 802AA610 54 00 18 38 */ slwi r0, r0, 3 -/* 802AA614 7C BC 02 14 */ add r5, r28, r0 -/* 802AA618 4B FF FC 59 */ bl setIIR__10Z2SoundMgrFP8JAISoundPCs -/* 802AA61C 83 5A 00 0C */ lwz r26, 0xc(r26) -lbl_802AA620: -/* 802AA620 28 1A 00 00 */ cmplwi r26, 0 -/* 802AA624 41 82 00 18 */ beq lbl_802AA63C -/* 802AA628 80 9A 00 00 */ lwz r4, 0(r26) -/* 802AA62C 80 64 00 B0 */ lwz r3, 0xb0(r4) -/* 802AA630 3C 03 00 01 */ addis r0, r3, 1 -/* 802AA634 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AA638 40 82 FF C4 */ bne lbl_802AA5FC -lbl_802AA63C: -/* 802AA63C 3B FF 00 01 */ addi r31, r31, 1 -/* 802AA640 3B BD 00 6C */ addi r29, r29, 0x6c -lbl_802AA644: -/* 802AA644 2C 1F 00 09 */ cmpwi r31, 9 -/* 802AA648 41 80 FF 30 */ blt lbl_802AA578 -lbl_802AA64C: -/* 802AA64C 38 7E 00 04 */ addi r3, r30, 4 -/* 802AA650 4B FF 60 B5 */ bl mixOut__8JAISeMgrFv -/* 802AA654 38 7E 07 28 */ addi r3, r30, 0x728 -/* 802AA658 4B FF 78 A5 */ bl mixOut__9JAISeqMgrFv -/* 802AA65C 38 7E 07 9C */ addi r3, r30, 0x79c -/* 802AA660 4B FF 9A B9 */ bl mixOut__12JAIStreamMgrFv -/* 802AA664 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AA668 48 0B 7B B5 */ bl _restgpr_26 -/* 802AA66C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AA670 7C 08 03 A6 */ mtlr r0 -/* 802AA674 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AA678 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s b/asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s deleted file mode 100644 index 56fb2f5d334..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s +++ /dev/null @@ -1,74 +0,0 @@ -lbl_802AA430: -/* 802AA430 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AA434 7C 08 02 A6 */ mflr r0 -/* 802AA438 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AA43C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AA440 48 0B 7D 95 */ bl _savegpr_27 -/* 802AA444 7C 7F 1B 78 */ mr r31, r3 -/* 802AA448 3B A0 00 01 */ li r29, 1 -/* 802AA44C 88 0D 8D C2 */ lbz r0, struct_80451340+0x2(r13) -/* 802AA450 28 00 00 00 */ cmplwi r0, 0 -/* 802AA454 41 82 00 08 */ beq lbl_802AA45C -/* 802AA458 3B A0 00 00 */ li r29, 0 -lbl_802AA45C: -/* 802AA45C 1F DD 00 6C */ mulli r30, r29, 0x6c -/* 802AA460 48 00 00 A8 */ b lbl_802AA508 -lbl_802AA464: -/* 802AA464 7C 7F F2 14 */ add r3, r31, r30 -/* 802AA468 80 03 00 80 */ lwz r0, 0x80(r3) -/* 802AA46C 7C 1C 03 78 */ mr r28, r0 -/* 802AA470 2C 00 00 00 */ cmpwi r0, 0 -/* 802AA474 40 81 00 50 */ ble lbl_802AA4C4 -/* 802AA478 83 63 00 70 */ lwz r27, 0x70(r3) -/* 802AA47C 48 00 00 20 */ b lbl_802AA49C -lbl_802AA480: -/* 802AA480 28 04 00 00 */ cmplwi r4, 0 -/* 802AA484 41 82 00 08 */ beq lbl_802AA48C -/* 802AA488 38 84 00 10 */ addi r4, r4, 0x10 -lbl_802AA48C: -/* 802AA48C 7F E3 FB 78 */ mr r3, r31 -/* 802AA490 4B FF FE AD */ bl setFilterOff__10Z2SoundMgrFP8JAISound -/* 802AA494 83 7B 00 0C */ lwz r27, 0xc(r27) -/* 802AA498 3B 9C FF FF */ addi r28, r28, -1 -lbl_802AA49C: -/* 802AA49C 28 1B 00 00 */ cmplwi r27, 0 -/* 802AA4A0 41 82 00 60 */ beq lbl_802AA500 -/* 802AA4A4 2C 1C 00 00 */ cmpwi r28, 0 -/* 802AA4A8 40 81 00 58 */ ble lbl_802AA500 -/* 802AA4AC 80 9B 00 00 */ lwz r4, 0(r27) -/* 802AA4B0 80 64 00 B0 */ lwz r3, 0xb0(r4) -/* 802AA4B4 3C 03 00 01 */ addis r0, r3, 1 -/* 802AA4B8 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AA4BC 40 82 FF C4 */ bne lbl_802AA480 -/* 802AA4C0 48 00 00 40 */ b lbl_802AA500 -lbl_802AA4C4: -/* 802AA4C4 83 63 00 70 */ lwz r27, 0x70(r3) -/* 802AA4C8 48 00 00 1C */ b lbl_802AA4E4 -lbl_802AA4CC: -/* 802AA4CC 28 04 00 00 */ cmplwi r4, 0 -/* 802AA4D0 41 82 00 08 */ beq lbl_802AA4D8 -/* 802AA4D4 38 84 00 10 */ addi r4, r4, 0x10 -lbl_802AA4D8: -/* 802AA4D8 7F E3 FB 78 */ mr r3, r31 -/* 802AA4DC 4B FF FE 61 */ bl setFilterOff__10Z2SoundMgrFP8JAISound -/* 802AA4E0 83 7B 00 0C */ lwz r27, 0xc(r27) -lbl_802AA4E4: -/* 802AA4E4 28 1B 00 00 */ cmplwi r27, 0 -/* 802AA4E8 41 82 00 18 */ beq lbl_802AA500 -/* 802AA4EC 80 9B 00 00 */ lwz r4, 0(r27) -/* 802AA4F0 80 64 00 B0 */ lwz r3, 0xb0(r4) -/* 802AA4F4 3C 03 00 01 */ addis r0, r3, 1 -/* 802AA4F8 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AA4FC 40 82 FF D0 */ bne lbl_802AA4CC -lbl_802AA500: -/* 802AA500 3B BD 00 01 */ addi r29, r29, 1 -/* 802AA504 3B DE 00 6C */ addi r30, r30, 0x6c -lbl_802AA508: -/* 802AA508 2C 1D 00 09 */ cmpwi r29, 9 -/* 802AA50C 41 80 FF 58 */ blt lbl_802AA464 -/* 802AA510 39 61 00 20 */ addi r11, r1, 0x20 -/* 802AA514 48 0B 7D 0D */ bl _restgpr_27 -/* 802AA518 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AA51C 7C 08 03 A6 */ mtlr r0 -/* 802AA520 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AA524 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s b/asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s deleted file mode 100644 index 512cb61cffe..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_802AA33C: -/* 802AA33C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 802AA340 7C 08 02 A6 */ mflr r0 -/* 802AA344 90 01 00 34 */ stw r0, 0x34(r1) -/* 802AA348 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AA34C 48 0B 7E 7D */ bl _savegpr_24 -/* 802AA350 28 04 00 00 */ cmplwi r4, 0 -/* 802AA354 41 82 00 C4 */ beq lbl_802AA418 -/* 802AA358 7C 83 23 78 */ mr r3, r4 -/* 802AA35C 81 84 00 00 */ lwz r12, 0(r4) -/* 802AA360 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802AA364 7D 89 03 A6 */ mtctr r12 -/* 802AA368 4E 80 04 21 */ bctrl -/* 802AA36C 7C 7C 1B 78 */ mr r28, r3 -/* 802AA370 3B 20 00 00 */ li r25, 0 -/* 802AA374 3B E0 00 00 */ li r31, 0 -lbl_802AA378: -/* 802AA378 38 1F 01 30 */ addi r0, r31, 0x130 -/* 802AA37C 7F 7C 00 2E */ lwzx r27, r28, r0 -/* 802AA380 28 1B 00 00 */ cmplwi r27, 0 -/* 802AA384 41 82 00 84 */ beq lbl_802AA408 -/* 802AA388 88 1B 02 15 */ lbz r0, 0x215(r27) -/* 802AA38C 28 00 00 01 */ cmplwi r0, 1 -/* 802AA390 40 82 00 78 */ bne lbl_802AA408 -/* 802AA394 7F 63 DB 78 */ mr r3, r27 -/* 802AA398 3C 80 80 3A */ lis r4, cResetFilterTable@ha /* 0x8039B9C0@ha */ -/* 802AA39C 38 84 B9 C0 */ addi r4, r4, cResetFilterTable@l /* 0x8039B9C0@l */ -/* 802AA3A0 4B FE 84 FD */ bl setIIR__8JASTrackFPCs -/* 802AA3A4 7F 63 DB 78 */ mr r3, r27 -/* 802AA3A8 3C 80 80 3A */ lis r4, cResetFilterTable@ha /* 0x8039B9C0@ha */ -/* 802AA3AC 38 84 B9 C0 */ addi r4, r4, cResetFilterTable@l /* 0x8039B9C0@l */ -/* 802AA3B0 4B FE 84 AD */ bl setFIR__8JASTrackFPCs -/* 802AA3B4 3B 00 00 00 */ li r24, 0 -/* 802AA3B8 3B C0 00 00 */ li r30, 0 -/* 802AA3BC 3C 60 80 3A */ lis r3, cResetFilterTable@ha /* 0x8039B9C0@ha */ -/* 802AA3C0 3B A3 B9 C0 */ addi r29, r3, cResetFilterTable@l /* 0x8039B9C0@l */ -lbl_802AA3C4: -/* 802AA3C4 38 1E 01 30 */ addi r0, r30, 0x130 -/* 802AA3C8 7F 5B 00 2E */ lwzx r26, r27, r0 -/* 802AA3CC 28 1A 00 00 */ cmplwi r26, 0 -/* 802AA3D0 41 82 00 28 */ beq lbl_802AA3F8 -/* 802AA3D4 88 1A 02 15 */ lbz r0, 0x215(r26) -/* 802AA3D8 28 00 00 01 */ cmplwi r0, 1 -/* 802AA3DC 40 82 00 1C */ bne lbl_802AA3F8 -/* 802AA3E0 7F 43 D3 78 */ mr r3, r26 -/* 802AA3E4 7F A4 EB 78 */ mr r4, r29 -/* 802AA3E8 4B FE 84 B5 */ bl setIIR__8JASTrackFPCs -/* 802AA3EC 7F 43 D3 78 */ mr r3, r26 -/* 802AA3F0 7F A4 EB 78 */ mr r4, r29 -/* 802AA3F4 4B FE 84 69 */ bl setFIR__8JASTrackFPCs -lbl_802AA3F8: -/* 802AA3F8 3B 18 00 01 */ addi r24, r24, 1 -/* 802AA3FC 28 18 00 04 */ cmplwi r24, 4 -/* 802AA400 3B DE 00 04 */ addi r30, r30, 4 -/* 802AA404 41 80 FF C0 */ blt lbl_802AA3C4 -lbl_802AA408: -/* 802AA408 3B 39 00 01 */ addi r25, r25, 1 -/* 802AA40C 28 19 00 04 */ cmplwi r25, 4 -/* 802AA410 3B FF 00 04 */ addi r31, r31, 4 -/* 802AA414 41 80 FF 64 */ blt lbl_802AA378 -lbl_802AA418: -/* 802AA418 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AA41C 48 0B 7D F9 */ bl _restgpr_24 -/* 802AA420 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802AA424 7C 08 03 A6 */ mtlr r0 -/* 802AA428 38 21 00 30 */ addi r1, r1, 0x30 -/* 802AA42C 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s b/asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s deleted file mode 100644 index 75df5f83cfb..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_802AA270: -/* 802AA270 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 802AA274 7C 08 02 A6 */ mflr r0 -/* 802AA278 90 01 00 34 */ stw r0, 0x34(r1) -/* 802AA27C 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AA280 48 0B 7F 4D */ bl _savegpr_25 -/* 802AA284 7C B9 2B 78 */ mr r25, r5 -/* 802AA288 28 04 00 00 */ cmplwi r4, 0 -/* 802AA28C 41 82 00 98 */ beq lbl_802AA324 -/* 802AA290 7C 83 23 78 */ mr r3, r4 -/* 802AA294 81 84 00 00 */ lwz r12, 0(r4) -/* 802AA298 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802AA29C 7D 89 03 A6 */ mtctr r12 -/* 802AA2A0 4E 80 04 21 */ bctrl -/* 802AA2A4 7C 7D 1B 78 */ mr r29, r3 -/* 802AA2A8 3B 60 00 00 */ li r27, 0 -/* 802AA2AC 3B E0 00 00 */ li r31, 0 -lbl_802AA2B0: -/* 802AA2B0 38 1F 01 30 */ addi r0, r31, 0x130 -/* 802AA2B4 7F 9D 00 2E */ lwzx r28, r29, r0 -/* 802AA2B8 28 1C 00 00 */ cmplwi r28, 0 -/* 802AA2BC 41 82 00 58 */ beq lbl_802AA314 -/* 802AA2C0 88 1C 02 15 */ lbz r0, 0x215(r28) -/* 802AA2C4 28 00 00 01 */ cmplwi r0, 1 -/* 802AA2C8 40 82 00 4C */ bne lbl_802AA314 -/* 802AA2CC 7F 83 E3 78 */ mr r3, r28 -/* 802AA2D0 7F 24 CB 78 */ mr r4, r25 -/* 802AA2D4 4B FE 85 C9 */ bl setIIR__8JASTrackFPCs -/* 802AA2D8 3B 40 00 00 */ li r26, 0 -/* 802AA2DC 3B C0 00 00 */ li r30, 0 -lbl_802AA2E0: -/* 802AA2E0 38 1E 01 30 */ addi r0, r30, 0x130 -/* 802AA2E4 7C 7C 00 2E */ lwzx r3, r28, r0 -/* 802AA2E8 28 03 00 00 */ cmplwi r3, 0 -/* 802AA2EC 41 82 00 18 */ beq lbl_802AA304 -/* 802AA2F0 88 03 02 15 */ lbz r0, 0x215(r3) -/* 802AA2F4 28 00 00 01 */ cmplwi r0, 1 -/* 802AA2F8 40 82 00 0C */ bne lbl_802AA304 -/* 802AA2FC 7F 24 CB 78 */ mr r4, r25 -/* 802AA300 4B FE 85 9D */ bl setIIR__8JASTrackFPCs -lbl_802AA304: -/* 802AA304 3B 5A 00 01 */ addi r26, r26, 1 -/* 802AA308 28 1A 00 04 */ cmplwi r26, 4 -/* 802AA30C 3B DE 00 04 */ addi r30, r30, 4 -/* 802AA310 41 80 FF D0 */ blt lbl_802AA2E0 -lbl_802AA314: -/* 802AA314 3B 7B 00 01 */ addi r27, r27, 1 -/* 802AA318 28 1B 00 04 */ cmplwi r27, 4 -/* 802AA31C 3B FF 00 04 */ addi r31, r31, 4 -/* 802AA320 41 80 FF 90 */ blt lbl_802AA2B0 -lbl_802AA324: -/* 802AA324 39 61 00 30 */ addi r11, r1, 0x30 -/* 802AA328 48 0B 7E F1 */ bl _restgpr_25 -/* 802AA32C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802AA330 7C 08 03 A6 */ mtlr r0 -/* 802AA334 38 21 00 30 */ addi r1, r1, 0x30 -/* 802AA338 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s b/asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s deleted file mode 100644 index 18cfc879011..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_802AA7DC: -/* 802AA7DC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AA7E0 7C 08 02 A6 */ mflr r0 -/* 802AA7E4 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AA7E8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802AA7EC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 802AA7F0 7C 7E 1B 78 */ mr r30, r3 -/* 802AA7F4 7C 9F 23 78 */ mr r31, r4 -/* 802AA7F8 80 04 00 00 */ lwz r0, 0(r4) -/* 802AA7FC 90 01 00 10 */ stw r0, 0x10(r1) -/* 802AA800 38 7E 00 04 */ addi r3, r30, 4 -/* 802AA804 38 81 00 10 */ addi r4, r1, 0x10 -/* 802AA808 4B FF 5A ED */ bl stopSoundID__8JAISeMgrF10JAISoundID -/* 802AA80C 80 1F 00 00 */ lwz r0, 0(r31) -/* 802AA810 90 01 00 0C */ stw r0, 0xc(r1) -/* 802AA814 38 7E 07 28 */ addi r3, r30, 0x728 -/* 802AA818 38 81 00 0C */ addi r4, r1, 0xc -/* 802AA81C 4B FF 76 71 */ bl stopSoundID__9JAISeqMgrF10JAISoundID -/* 802AA820 80 1F 00 00 */ lwz r0, 0(r31) -/* 802AA824 90 01 00 08 */ stw r0, 8(r1) -/* 802AA828 38 7E 07 9C */ addi r3, r30, 0x79c -/* 802AA82C 38 81 00 08 */ addi r4, r1, 8 -/* 802AA830 4B FF 98 89 */ bl stopSoundID__12JAIStreamMgrF10JAISoundID -/* 802AA834 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802AA838 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 802AA83C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AA840 7C 08 03 A6 */ mtlr r0 -/* 802AA844 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AA848 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s b/asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s deleted file mode 100644 index cc957c983bd..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_802AA84C: -/* 802AA84C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802AA850 7C 08 02 A6 */ mflr r0 -/* 802AA854 90 01 00 14 */ stw r0, 0x14(r1) -/* 802AA858 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802AA85C 7C 7F 1B 78 */ mr r31, r3 -/* 802AA860 48 00 00 69 */ bl stop__10Z2SoundMgrFv -/* 802AA864 48 00 00 34 */ b lbl_802AA898 -lbl_802AA868: -/* 802AA868 7F E3 FB 78 */ mr r3, r31 -/* 802AA86C 4B FF F9 45 */ bl calc__10Z2SoundMgrFv -/* 802AA870 38 7F 00 04 */ addi r3, r31, 4 -/* 802AA874 4B FF 60 5D */ bl getNumActiveSe__8JAISeMgrCFv -/* 802AA878 2C 03 00 00 */ cmpwi r3, 0 -/* 802AA87C 40 82 00 10 */ bne lbl_802AA88C -/* 802AA880 80 1F 07 94 */ lwz r0, 0x794(r31) -/* 802AA884 2C 00 00 00 */ cmpwi r0, 0 -/* 802AA888 41 82 00 2C */ beq lbl_802AA8B4 -lbl_802AA88C: -/* 802AA88C 7F E3 FB 78 */ mr r3, r31 -/* 802AA890 4B FF FC 99 */ bl mixOut__10Z2SoundMgrFv -/* 802AA894 4B FF 38 F5 */ bl waitSubFrame__9JASDriverFv -lbl_802AA898: -/* 802AA898 38 7F 00 04 */ addi r3, r31, 4 -/* 802AA89C 4B FF 60 35 */ bl getNumActiveSe__8JAISeMgrCFv -/* 802AA8A0 2C 03 00 00 */ cmpwi r3, 0 -/* 802AA8A4 41 81 FF C4 */ bgt lbl_802AA868 -/* 802AA8A8 80 1F 07 94 */ lwz r0, 0x794(r31) -/* 802AA8AC 2C 00 00 00 */ cmpwi r0, 0 -/* 802AA8B0 41 81 FF B8 */ bgt lbl_802AA868 -lbl_802AA8B4: -/* 802AA8B4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802AA8B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802AA8BC 7C 08 03 A6 */ mtlr r0 -/* 802AA8C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802AA8C4 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s b/asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s deleted file mode 100644 index f2fc6d46171..00000000000 --- a/asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802AA8C8: -/* 802AA8C8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802AA8CC 7C 08 02 A6 */ mflr r0 -/* 802AA8D0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802AA8D4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802AA8D8 7C 7F 1B 78 */ mr r31, r3 -/* 802AA8DC 38 7F 00 04 */ addi r3, r31, 4 -/* 802AA8E0 4B FF 59 C1 */ bl stop__8JAISeMgrFv -/* 802AA8E4 38 7F 07 28 */ addi r3, r31, 0x728 -/* 802AA8E8 4B FF 75 15 */ bl stop__9JAISeqMgrFv -/* 802AA8EC 38 7F 07 9C */ addi r3, r31, 0x79c -/* 802AA8F0 4B FF 97 39 */ bl stop__12JAIStreamMgrFv -/* 802AA8F4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802AA8F8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802AA8FC 7C 08 03 A6 */ mtlr r0 -/* 802AA900 38 21 00 10 */ addi r1, r1, 0x10 -/* 802AA904 4E 80 00 20 */ blr diff --git a/include/JSystem/JAudio2/JAISe.h b/include/JSystem/JAudio2/JAISe.h index 044f18af32e..07624b2a068 100644 --- a/include/JSystem/JAudio2/JAISe.h +++ b/include/JSystem/JAudio2/JAISe.h @@ -47,7 +47,7 @@ public: JAISeqData* getSeqData() { return &inner_.mSeqData; } u32 JAISeCategoryMgr_getProperPriority_() const { return inner_.mProperPriority; } u32 JAISeCategoryMgr_getPriority_() const { return inner_.mPriority; } - bool isFarAway() const { return mPriority == -1; } + bool isFarAway() const { return inner_.mPriority == -1; } /* 0x0ac */ TInner inner_; }; diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index 3fe166473e0..f335f37b10a 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -74,7 +74,7 @@ public: /* 802A0484 */ JAISe* newSe_(int, u32); /* 802A0574 */ void calc(); /* 802A0704 */ void mixOut(); - /* 802A0768 */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A0768 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A08D0 */ int getNumActiveSe() const; /* 802A08FC */ virtual ~JAISeMgr(); // inline? diff --git a/include/JSystem/JAudio2/JAISeqMgr.h b/include/JSystem/JAudio2/JAISeqMgr.h index 86b5dbe21af..ca3ee1f8e7c 100644 --- a/include/JSystem/JAudio2/JAISeqMgr.h +++ b/include/JSystem/JAudio2/JAISeqMgr.h @@ -13,7 +13,7 @@ class JAISeqMgr : public JAISeqDataUser, public JASGlobalInstance { public: /* 802A1914 */ JAISeqMgr(bool); /* 802A1A08 */ void freeDeadSeq_(); - /* 802A1B48 */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A1B48 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A1C90 */ void calc(); /* 802A1DFC */ void stop(); /* 802A1E3C */ void stop(u32); @@ -43,6 +43,8 @@ public: } JAISoundParamsMove* getParams() { return &mMove; } bool isActive() { return mSeqList.getNumLinks() != 0; } + int getNumActiveSeqs() { return mSeqList.getNumLinks(); } + void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } private: /* 0x04 */ JAISoundActivity mActivity; diff --git a/include/JSystem/JAudio2/JAISoundHandles.h b/include/JSystem/JAudio2/JAISoundHandles.h index ffe285d8186..4182a560a6f 100644 --- a/include/JSystem/JAudio2/JAISoundHandles.h +++ b/include/JSystem/JAudio2/JAISoundHandles.h @@ -35,6 +35,8 @@ public: numHandles_ = param_1; }; + JAISoundHandle& operator[](int n) { return mSoundHandle[n]; } + JAISoundHandle* getHandleSoundID(JAISoundID); JAISoundHandle* getFreeHandle(); diff --git a/include/JSystem/JAudio2/JAISoundInfo.h b/include/JSystem/JAudio2/JAISoundInfo.h index 081a9e6afe2..84b10883b17 100644 --- a/include/JSystem/JAudio2/JAISoundInfo.h +++ b/include/JSystem/JAudio2/JAISoundInfo.h @@ -6,7 +6,7 @@ struct JAISoundInfo : public JASGlobalInstance { /* 802A2D34 */ JAISoundInfo(bool); - virtual u32 getSoundType(JAISoundID) const = 0; + virtual int getSoundType(JAISoundID) const = 0; virtual int getCategory(JAISoundID) const = 0; virtual u32 getPriority(JAISoundID) const = 0; virtual void getSeInfo(JAISoundID, JAISe*) const = 0; diff --git a/include/JSystem/JAudio2/JAIStreamMgr.h b/include/JSystem/JAudio2/JAIStreamMgr.h index c98c1b9d6bb..6d498da9ba2 100644 --- a/include/JSystem/JAudio2/JAIStreamMgr.h +++ b/include/JSystem/JAudio2/JAIStreamMgr.h @@ -13,7 +13,7 @@ class JAIStreamDataMgr; class JAIStreamMgr : public JASGlobalInstance { public: /* 802A3B68 */ JAIStreamMgr(bool); - /* 802A3C3C */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A3C3C */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A3D70 */ void freeDeadStream_(); /* 802A3EBC */ void calc(); /* 802A4028 */ void stop(); @@ -32,6 +32,7 @@ public: JUT_ASSERT(157, !isActive()); mStreamAramMgr = param_0; } + void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } private: /* 0x00 */ JAISoundActivity mActivity; diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index aa1bde433a7..ad14fa5c20a 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -82,7 +82,7 @@ public: /* 0x000 */ JAUWaveBankTable waveBankTable; /* 0x404 */ JAISeqDataUser* seqDataUser; - /* 0x408 */ JAUDynamicSeqDataBlocks field_0x408; + /* 0x408 */ JAUDynamicSeqDataBlocks seqDataBlocks; /* 0x430 */ JAISeqDataMgr* seSeqDataMgr_; /* 0x434 */ JAIStreamDataMgr* streamDataMgr_; /* 0x438 */ JAUSoundTable* soundTable; @@ -100,6 +100,7 @@ public: /* 802A6270 */ int releaseSeqData(); /* 802A6278 */ ~JAUSectionHeap(); + TSectionHeapData const& getSectionHeapData() const { return sectionHeapData_; } JAUWaveBankTable& getWaveBankTable() { return sectionHeapData_.waveBankTable; } JKRHeap* getHeap() { if (getOpenSection()->isBuilding() != 0) { diff --git a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h index c3176f9ab71..c3dca05ad98 100644 --- a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h +++ b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h @@ -18,15 +18,13 @@ struct JAUSeqDataBlock { /* 0x1C */ int field_0x1c; }; -class JAUSeqDataBlocks { +class JAUSeqDataBlocks : public JSUList { public: /* 802A6928 */ u8* getSeqData(JAISoundID); /* 802A6974 */ JSULink* seekFreeBlock(u32); /* 802A69D8 */ bool append(JSULink*); /* 802A69F8 */ bool remove(JSULink*); /* 802A6A18 */ bool hasFailedBlock(JAISoundID); - - /* 0x00 */ JSUList field_0x0; }; class JAUDynamicSeqDataBlocks { @@ -40,11 +38,13 @@ public: /* 802A6E00 */ JAUSeqDataBlock* releaseIdleDynamicSeqDataBlock_(JAISeqDataUser*, u32); /* 802A6EDC */ void rearrangeLoadingSeqs_(); + JAUSeqDataBlocks const& getFreeBlocks() const { return mFreeBlocks; } + JAUSeqDataBlocks const& getLoadedBlocks() const { return mLoadedBlocks; } JKRArchive* getSeqDataArchive() { return seqDataArchive_; } - /* 0x00 */ JAUSeqDataBlocks field_0x0; + /* 0x00 */ JAUSeqDataBlocks mFreeBlocks; /* 0x0C */ JAUSeqDataBlocks field_0xc; - /* 0x18 */ JAUSeqDataBlocks field_0x18; + /* 0x18 */ JAUSeqDataBlocks mLoadedBlocks; /* 0x24 */ JKRArchive* seqDataArchive_; }; diff --git a/include/Z2AudioLib/Z2AudioMgr.h b/include/Z2AudioLib/Z2AudioMgr.h index ef1aaf4fdfc..86ae43696a5 100644 --- a/include/Z2AudioLib/Z2AudioMgr.h +++ b/include/Z2AudioLib/Z2AudioMgr.h @@ -34,7 +34,7 @@ public: static Z2AudioMgr* mAudioMgrPtr; - /* 0x0514 */ virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 0x0514 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 0x0518 */ bool mResettingFlag; /* 0x0519 */ bool field_0x519; /* 0x051C */ JASAudioReseter mAudioReseter; diff --git a/include/Z2AudioLib/Z2Calc.h b/include/Z2AudioLib/Z2Calc.h index fbaf0d4a9d6..de5f10d71c3 100644 --- a/include/Z2AudioLib/Z2Calc.h +++ b/include/Z2AudioLib/Z2Calc.h @@ -7,6 +7,7 @@ namespace Z2Calc { enum CurveSign { CURVE_SIGN_0 = 0, CURVE_SIGN_1 = 1, + CURVE_SIGN_2 = 2, }; struct FNoise1f { diff --git a/include/Z2AudioLib/Z2Creature.h b/include/Z2AudioLib/Z2Creature.h index a3307a0f1d2..00506ac0ddf 100644 --- a/include/Z2AudioLib/Z2Creature.h +++ b/include/Z2AudioLib/Z2Creature.h @@ -39,7 +39,7 @@ struct Z2LinkSoundStarter : public Z2SoundStarter { Z2LinkSoundStarter(); inline virtual ~Z2LinkSoundStarter(); - virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); }; @@ -127,7 +127,7 @@ struct Z2RideSoundStarter : public Z2SoundStarter { /* 802C5234 */ Z2RideSoundStarter(Z2CreatureRide*); /* 802C5078 */ inline virtual ~Z2RideSoundStarter(); - /* 802C5284 */ virtual int startSound(JAISoundID, JAISoundHandle*, + /* 802C5284 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); diff --git a/include/Z2AudioLib/Z2Param.h b/include/Z2AudioLib/Z2Param.h index c4889e56408..d98289f7ef5 100644 --- a/include/Z2AudioLib/Z2Param.h +++ b/include/Z2AudioLib/Z2Param.h @@ -56,4 +56,8 @@ extern u8 struct_8045086A; extern u8 struct_8045086B; extern u8 data_8045086C; +extern u8 struct_80451340; +extern u8 struct_80451341; +extern u8 struct_80451342; + #endif /* Z2PARAM_H */ diff --git a/include/Z2AudioLib/Z2SceneMgr.h b/include/Z2AudioLib/Z2SceneMgr.h index 17623a51087..5f6a2b60926 100644 --- a/include/Z2AudioLib/Z2SceneMgr.h +++ b/include/Z2AudioLib/Z2SceneMgr.h @@ -37,6 +37,7 @@ public: void setInGame(bool i_inGame) { inGame = i_inGame; } bool isInDarkness() const { return inDarkness; } s8 getRoomReverb() const { return dComIfGp_getReverb(roomNum); } + bool isMovieDemo() { return sceneNum == 2 || sceneNum == 8 || sceneNum == 9; } private: /* 0x00 */ long BGM_ID; diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h index d7c0ba33304..3760af1fa55 100644 --- a/include/Z2AudioLib/Z2SeMgr.h +++ b/include/Z2AudioLib/Z2SeMgr.h @@ -8,19 +8,69 @@ struct Z2MultiSeMgr { Z2MultiSeMgr(); ~Z2MultiSeMgr(); - void registMultiSePos(Vec*); + s8 registMultiSePos(Vec*); void resetMultiSePos(); - void getPanPower(); - void getDolbyPower(); + f32 getPanPower(); + f32 getDolbyPower(); void setVolumeScale(f32 param_0) { mVolumeScale = param_0; } + f32 getMaxVolume() { + if (mMaxVolume > 1.0f) { + return 1.0f; + } else if (mMaxVolume < 0.0f) { + return 0.0f; + } else { + return mMaxVolume; + } + } + + f32 getMaxPowR() { + if (mMaxPowR > 1.0f) { + return 1.0f; + } else if (mMaxPowR < 0.0f) { + return 0.0f; + } else { + return mMaxPowR; + } + } + + f32 getMaxPowL() { + if (mMaxPowL > 1.0f) { + return 1.0f; + } else if (mMaxPowL < 0.0f) { + return 0.0f; + } else { + return mMaxPowL; + } + } + + f32 getMaxPowB() { + if (mMaxPowB > 1.0f) { + return 1.0f; + } else if (mMaxPowB < 0.0f) { + return 0.0f; + } else { + return mMaxPowB; + } + } + + f32 getMaxPowF() { + if (mMaxPowF > 1.0f) { + return 1.0f; + } else if (mMaxPowF < 0.0f) { + return 0.0f; + } else { + return mMaxPowF; + } + } + /* 0x00 */ float mVolumeScale; /* 0x04 */ float mMaxVolume; /* 0x08 */ float mMaxPowL; /* 0x0C */ float mMaxPowR; - /* 0x10 */ float mMaxPowB; - /* 0x14 */ float mMaxPowF; + /* 0x10 */ float mMaxPowF; + /* 0x14 */ float mMaxPowB; /* 0x18 */ s8 mPosCount; }; // Size = 0x1C @@ -28,8 +78,8 @@ struct Z2MultiSeObj : Z2MultiSeMgr { Z2MultiSeObj(); ~Z2MultiSeObj() {} - /* 0x1C */ u32 field_0x1c; - /* 0x20 */ u8 field_0x20; + /* 0x1C */ u32 mSoundID; + /* 0x20 */ s8 field_0x20; }; // Size = 0x24 class Z2SeMgr : public JASGlobalInstance { @@ -40,8 +90,8 @@ public: /* 802AB830 */ void modHeightAtCamera(Vec const**); /* 802AB93C */ void incrCrowdSize(); /* 802AB960 */ void decrCrowdSize(); - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); + /* 802AB984 */ bool seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); + /* 802AC50C */ bool seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); /* 802AD8B0 */ void seStop(JAISoundID, u32); /* 802AD94C */ void seStopAll(u32); /* 802AD9F4 */ void seMoveVolumeAll(f32, u32); @@ -52,19 +102,19 @@ public: /* 802ADE5C */ void setLevObjSE(u32, Vec*, s8); /* 802ADFF4 */ void setMultiTriggerSE(u32, Vec*, s8); /* 802AE184 */ void processSeFramework(); - /* 802AE524 */ void isLevelSe(JAISoundID); + /* 802AE524 */ bool isLevelSe(JAISoundID); /* 802AE5B0 */ bool isSoundCulling(JAISoundID); /* 802B9AC4 */ void resetCrowdSize(); private: /* 0x000 */ JAISoundHandle mSoundHandle[24]; - /* 0x060 */ JAISoundHandles field_0x60; + /* 0x060 */ JAISoundHandles mSoundHandles; /* 0x068 */ Z2MultiSeObj mLevelObjSe[10]; /* 0x1D0 */ u8 mLevelObjectSeCount; /* 0x1D4 */ Z2MultiSeObj mMultiTriggerSe[10]; /* 0x33C */ u8 mMultiTriggerSeCount; - /* 0x33D */ u8 field_0x33d[0x60]; - /* 0x3A0 */ u32 mModY[8]; + /* 0x340 */ Vec field_0x340[8]; + /* 0x3A0 */ Vec const* mModY[8]; /* 0x3C0 */ u8 field_0x3c0; /* 0x3C1 */ u8 field_0x3c1; /* 0x3C2 */ u8 field_0x3c2; diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index 8ec6b6ffba3..d7db687363e 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -183,6 +183,7 @@ public: } JAISoundHandle* getMainBgmHandle() { return &mMainBgmHandle; } + JAISoundHandle* getSubBgmHandle() { return &mSubBgmHandle; } /* 0x00 */ JAISoundHandle mMainBgmHandle; /* 0x04 */ JAISoundHandle mSubBgmHandle; diff --git a/include/Z2AudioLib/Z2SoundInfo.h b/include/Z2AudioLib/Z2SoundInfo.h index 369d5fd311a..675fb0992ab 100644 --- a/include/Z2AudioLib/Z2SoundInfo.h +++ b/include/Z2AudioLib/Z2SoundInfo.h @@ -12,7 +12,7 @@ public: /* 802BB448 */ virtual u16 getAudibleSw(JAISoundID) const; /* 802BB00C */ virtual u16 getBgmSeqResourceID(JAISoundID) const; /* 802BBA88 */ virtual s32 getStreamFileEntry(JAISoundID); - /* 802BB090 */ virtual u32 getSoundType(JAISoundID) const; + /* 802BB090 */ virtual int getSoundType(JAISoundID) const; /* 802BB0D8 */ virtual int getCategory(JAISoundID) const; /* 802BB0E0 */ virtual u32 getPriority(JAISoundID) const; /* 802BB6DC */ virtual void getSeInfo(JAISoundID, JAISe*) const; diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index 73b6ad59820..76e091574e8 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -23,7 +23,7 @@ public: /* 802AA8C8 */ void stop(); /* 802AA908 */ void initParams(); /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32); - /* 802AAAC4 */ void isPlayingSoundID(JAISoundID); + /* 802AAAC4 */ bool isPlayingSoundID(JAISoundID); /* 802A9EE8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); @@ -36,7 +36,7 @@ private: /* 0x004 */ JAISeMgr mSeMgr; /* 0x728 */ JAISeqMgr mSeqMgr; /* 0x79C */ JAIStreamMgr mStreamMgr; - /* 0x80C */ JAISoundID field_0x80c; + /* 0x80C */ JAISoundID mSoundID; }; // Size: 0x810 STATIC_ASSERT(sizeof(Z2SoundMgr) == 0x810); diff --git a/include/Z2AudioLib/Z2SoundStarter.h b/include/Z2AudioLib/Z2SoundStarter.h index ba165155ced..f133ebb5e61 100644 --- a/include/Z2AudioLib/Z2SoundStarter.h +++ b/include/Z2AudioLib/Z2SoundStarter.h @@ -10,8 +10,8 @@ struct Z2SoundStarter : public JAISoundStarter, public JASGlobalInstance const*); - virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, float, + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, float, float, float, float, float, u32); }; diff --git a/include/Z2AudioLib/Z2SpeechMgr2.h b/include/Z2AudioLib/Z2SpeechMgr2.h index 242d1ec9b0d..bbc86ba3e07 100644 --- a/include/Z2AudioLib/Z2SpeechMgr2.h +++ b/include/Z2AudioLib/Z2SpeechMgr2.h @@ -10,7 +10,7 @@ struct Z2SpeechStarter : public Z2SoundStarter { /* 802CCFB8 */ Z2SpeechStarter(); /* 802CBCEC */ virtual ~Z2SpeechStarter(); - /* 802CCFF8 */ virtual int startSound(JAISoundID, JAISoundHandle*, + /* 802CCFF8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); }; diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 470b899294a..40b0ee3aa3a 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -29,6 +29,7 @@ struct Z2StatusMgr : public JASGlobalInstance { f32 getCameraInWaterDepthRatio() const { return mCameraInWaterDepthRatio; } u8 getHour() { return mHour; } bool isPaused() { return mIsMenuIn; } + bool isHeartGuageOn() { return mHeartGaugeOn; } /* 0x00 */ u8 mHour; /* 0x01 */ u8 mMinute; diff --git a/libs/JSystem/JAudio2/JAISeMgr.cpp b/libs/JSystem/JAudio2/JAISeMgr.cpp index 9f2631a5127..1fc87103710 100644 --- a/libs/JSystem/JAudio2/JAISeMgr.cpp +++ b/libs/JSystem/JAudio2/JAISeMgr.cpp @@ -464,7 +464,7 @@ void JAISeMgr::mixOut() { /* 802A0768-802A08D0 29B0A8 0168+00 0/0 1/1 0/0 .text * startSound__8JAISeMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -int JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +bool JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { if (param_1 && param_1->isSoundAttached()) { param_1->getSound()->stop(); @@ -483,7 +483,7 @@ int JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JAISe* pJAISe = newSe_(categoryIndex, uVar4); if (pJAISe == NULL) { JASReport("cannot new Se %08x.", param_0.mId.mFullId); - return 0; + return false; } JAIAudience* pAudience = getAudience(categoryIndex); pJAISe->JAISeMgr_startID_(param_0, param_2, pAudience); @@ -493,7 +493,7 @@ int JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, if (param_1 != NULL) { pJAISe->attachHandle(param_1); } - return 1; + return true; } /* 802A08D0-802A08FC 29B210 002C+00 0/0 2/2 0/0 .text getNumActiveSe__8JAISeMgrCFv */ diff --git a/libs/JSystem/JAudio2/JAISeqMgr.cpp b/libs/JSystem/JAudio2/JAISeqMgr.cpp index d76ba7b0c7f..36a55fb907a 100644 --- a/libs/JSystem/JAudio2/JAISeqMgr.cpp +++ b/libs/JSystem/JAudio2/JAISeqMgr.cpp @@ -185,7 +185,7 @@ extern "C" asm void func_802A1AF4(void* _this) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int JAISeqMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool JAISeqMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { nofralloc #include "asm/JSystem/JAudio2/JAISeqMgr/func_802A1B48.s" diff --git a/libs/JSystem/JAudio2/JAIStreamMgr.cpp b/libs/JSystem/JAudio2/JAIStreamMgr.cpp index fa02145a0d9..a8b2f6f771d 100644 --- a/libs/JSystem/JAudio2/JAIStreamMgr.cpp +++ b/libs/JSystem/JAudio2/JAIStreamMgr.cpp @@ -107,7 +107,7 @@ asm JAIStreamMgr::JAIStreamMgr(bool param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int JAIStreamMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool JAIStreamMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { nofralloc #include "asm/JSystem/JAudio2/JAIStreamMgr/func_802A3C3C.s" diff --git a/libs/JSystem/JAudio2/JAUSectionHeap.cpp b/libs/JSystem/JAudio2/JAUSectionHeap.cpp index cd54f152064..f4eae1cc49a 100644 --- a/libs/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/libs/JSystem/JAudio2/JAUSectionHeap.cpp @@ -318,7 +318,7 @@ JAUSection::JAUSection(JAUSectionHeap* param_0, u32 param_1, s32 param_2) : JSUL field_0x2c = 1; data_.field_0x98 = param_2; if (this != sectionHeap_) { - data_.field_0x00.setSeqDataArchive(sectionHeap_->sectionHeapData_.field_0x408.getSeqDataArchive()); + data_.field_0x00.setSeqDataArchive(sectionHeap_->sectionHeapData_.seqDataBlocks.getSeqDataArchive()); } } #else @@ -773,7 +773,7 @@ JAUSectionHeap::TSectionHeapData::TSectionHeapData() { /* 802A5E60-802A5EC0 2A07A0 0060+00 0/0 1/1 0/0 .text * setSeqDataArchive__14JAUSectionHeapFP10JKRArchive */ void JAUSectionHeap::setSeqDataArchive(JKRArchive* param_0) { - sectionHeapData_.field_0x408.setSeqDataArchive(param_0); + sectionHeapData_.seqDataBlocks.setSeqDataArchive(param_0); for (JSULink* link = mSectionList.getFirst(); link; link = link->getNext()) { link->getObject()->data_.field_0x00.setSeqDataArchive(param_0); } @@ -782,13 +782,13 @@ void JAUSectionHeap::setSeqDataArchive(JKRArchive* param_0) { /* 802A5EC0-802A5EF8 2A0800 0038+00 0/0 1/1 0/0 .text * loadDynamicSeq__14JAUSectionHeapF10JAISoundIDb */ bool JAUSectionHeap::loadDynamicSeq(JAISoundID param_0, bool param_1) { - return sectionHeapData_.field_0x408.loadDynamicSeq(param_0, param_1, sectionHeapData_.seqDataUser); + return sectionHeapData_.seqDataBlocks.loadDynamicSeq(param_0, param_1, sectionHeapData_.seqDataUser); } /* 802A5EF8-802A5F24 2A0838 002C+00 0/0 1/1 0/0 .text * releaseIdleDynamicSeqDataBlock__14JAUSectionHeapFv */ void JAUSectionHeap::releaseIdleDynamicSeqDataBlock() { - sectionHeapData_.field_0x408.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); + sectionHeapData_.seqDataBlocks.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); } namespace { @@ -865,7 +865,7 @@ bool JAUSectionHeap::newDynamicSeqBlock(u32 size) { seqDataBlock->field_0x14.size = size; seqDataBlock->field_0x10.setAnonymous(); JASCriticalSection cs; - if (base1.sectionHeap_->sectionHeapData_.field_0x408.appendDynamicSeqDataBlock(seqDataBlock)) { + if (base1.sectionHeap_->sectionHeapData_.seqDataBlocks.appendDynamicSeqDataBlock(seqDataBlock)) { return true; } return false; @@ -881,7 +881,7 @@ s32 JAUSectionHeap::getSeqData(JAISoundID param_0, JAISeqData* param_1) { return 2; } } - return sectionHeapData_.field_0x408.getSeqData(param_0, sectionHeapData_.seqDataUser, param_1, true); + return sectionHeapData_.seqDataBlocks.getSeqData(param_0, sectionHeapData_.seqDataUser, param_1, true); } /* 802A6270-802A6278 2A0BB0 0008+00 2/1 0/0 0/0 .text releaseSeqData__14JAUSectionHeapFv diff --git a/libs/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp b/libs/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp index 63e340b5a02..b9c939809a7 100644 --- a/libs/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp +++ b/libs/JSystem/JAudio2/JAUSeqDataBlockMgr.cpp @@ -20,7 +20,7 @@ u8* JAUSeqDataBlocks::getSeqData(JAISoundID param_0) { if ((u32)param_0 == 0xffffffff) { return NULL; } - for (JSULink* link = field_0x0.getFirst(); link != NULL; + for (JSULink* link = getFirst(); link != NULL; link = link->getNext()) { if ((u32)link->getObject()->field_0x10 == (u32)param_0) { @@ -34,7 +34,7 @@ u8* JAUSeqDataBlocks::getSeqData(JAISoundID param_0) { JSULink* JAUSeqDataBlocks::seekFreeBlock(u32 size) { u32 currentBlockSize = 0xffffffff; JSULink* rv = NULL; - for (JSULink* link = field_0x0.getFirst(); link != NULL; link = link->getNext()) + for (JSULink* link = getFirst(); link != NULL; link = link->getNext()) { if (link->getObject()->field_0x10.isAnonymous()) { u32 blockSize = link->getObject()->field_0x14.size; @@ -53,20 +53,20 @@ JSULink* JAUSeqDataBlocks::seekFreeBlock(u32 size) { /* 802A69D8-802A69F8 2A1318 0020+00 5/5 0/0 0/0 .text * append__16JAUSeqDataBlocksFP26JSULink<15JAUSeqDataBlock> */ bool JAUSeqDataBlocks::append(JSULink* param_0) { - return field_0x0.append(param_0); + return JSUList::append(param_0); } /* 802A69F8-802A6A18 2A1338 0020+00 4/4 0/0 0/0 .text * remove__16JAUSeqDataBlocksFP26JSULink<15JAUSeqDataBlock> */ bool JAUSeqDataBlocks::remove(JSULink* param_0) { - return field_0x0.remove(param_0); + return JSUList::remove(param_0); } /* 802A6A18-802A6A58 2A1358 0040+00 1/1 0/0 0/0 .text * hasFailedBlock__16JAUSeqDataBlocksF10JAISoundID */ bool JAUSeqDataBlocks::hasFailedBlock(JAISoundID param_0) { JSULink* rv = NULL; - for (JSULink* link = field_0x0.getFirst(); link != NULL; link = link->getNext()) + for (JSULink* link = getFirst(); link != NULL; link = link->getNext()) { if (link->getObject()->field_0x10 == param_0) { link->getObject()->field_0x10.setAnonymous(); @@ -93,7 +93,7 @@ void JAUDynamicSeqDataBlocks::setSeqDataArchive(JKRArchive* param_0) { s32 JAUDynamicSeqDataBlocks::getSeqData(JAISoundID param_0, JAISeqDataUser* param_1, JAISeqData* param_2, bool param_3) { rearrangeLoadingSeqs_(); - if (field_0x0.hasFailedBlock(param_0)) { + if (mFreeBlocks.hasFailedBlock(param_0)) { return 0; } @@ -101,7 +101,7 @@ s32 JAUDynamicSeqDataBlocks::getSeqData(JAISoundID param_0, JAISeqDataUser* para return 1; } - u8* seqData = field_0x18.getSeqData(param_0); + u8* seqData = mLoadedBlocks.getSeqData(param_0); if (seqData != NULL) { param_2->field_0x0 = seqData; param_2->field_0x4 = 0; @@ -119,9 +119,9 @@ s32 JAUDynamicSeqDataBlocks::getSeqData(JAISoundID param_0, JAISeqDataUser* para bool JAUDynamicSeqDataBlocks::appendDynamicSeqDataBlock(JAUSeqDataBlock* seqDataBlock) { rearrangeLoadingSeqs_(); if (seqDataBlock->field_0x10.isAnonymous()) { - field_0x0.append(&seqDataBlock->field_0x0); + mFreeBlocks.append(&seqDataBlock->field_0x0); } else { - field_0x18.append(&seqDataBlock->field_0x0); + mLoadedBlocks.append(&seqDataBlock->field_0x0); } return 1; } @@ -150,7 +150,7 @@ bool JAUDynamicSeqDataBlocks::loadDynamicSeq(JAISoundID param_0, bool param_1, } u16 resourceId = soundInfo->getBgmSeqResourceID(param_0); size_t resSize = JASResArcLoader::getResSize(seqDataArchive_, resourceId); - JSULink* link = field_0x0.seekFreeBlock(resSize); + JSULink* link = mFreeBlocks.seekFreeBlock(resSize); if (link == NULL) { if (param_1) { link = &releaseIdleDynamicSeqDataBlock_(param_2, resSize)->field_0x0; @@ -161,7 +161,7 @@ bool JAUDynamicSeqDataBlocks::loadDynamicSeq(JAISoundID param_0, bool param_1, return false; } } - field_0x0.remove(link); + mFreeBlocks.remove(link); JAUSeqDataBlock* seqDataBlock = link->getObject(); seqDataBlock->field_0x10 = param_0; link->getObject()->field_0x1c = 1; @@ -179,17 +179,17 @@ u32 JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock(JAISeqDataUser* para rearrangeLoadingSeqs_(); u32 size = 0; JSULink* nextLink; - for (JSULink* link = field_0x18.field_0x0.getFirst(); link != NULL; ) { + for (JSULink* link = mLoadedBlocks.getFirst(); link != NULL; ) { nextLink = link->getNext(); JAUSeqDataBlock* seqDataBlock = link->getObject(); if (param_0 == NULL || !param_0->isUsingSeqData(seqDataBlock->field_0x14)) { - field_0x18.remove(link); + mLoadedBlocks.remove(link); JAUSeqDataBlock* seqDataBlock = link->getObject(); link->getObject()->field_0x10.setAnonymous(); if (size < seqDataBlock->field_0x14.size) { size = seqDataBlock->field_0x14.size; } - field_0x0.append(link); + mFreeBlocks.append(link); } link = nextLink; } @@ -203,7 +203,7 @@ JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock_(JAISeqDataUser* param_0 rearrangeLoadingSeqs_(); u32 minSize = 0xffffffff; JSULink* foundBlock = NULL; - JSULink* link = field_0x18.field_0x0.getFirst(); + JSULink* link = mLoadedBlocks.getFirst(); JSULink* nextLink; while (link != NULL) { nextLink = link->getNext(); @@ -218,10 +218,10 @@ JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock_(JAISeqDataUser* param_0 link = nextLink; } if (foundBlock != NULL) { - field_0x18.remove(foundBlock); + mLoadedBlocks.remove(foundBlock); JAUSeqDataBlock* seqDataBlock = foundBlock->getObject(); seqDataBlock->field_0x10.setAnonymous(); - field_0x0.append(foundBlock); + mFreeBlocks.append(foundBlock); return foundBlock->getObject(); } return NULL; @@ -230,17 +230,17 @@ JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock_(JAISeqDataUser* param_0 /* 802A6EDC-802A6F70 2A181C 0094+00 4/4 0/0 0/0 .text * rearrangeLoadingSeqs___23JAUDynamicSeqDataBlocksFv */ void JAUDynamicSeqDataBlocks::rearrangeLoadingSeqs_() { - JSULink* link = field_0xc.field_0x0.getFirst(); + JSULink* link = field_0xc.getFirst(); JSULink* nextLink; while (link != NULL) { nextLink = link->getNext(); JAUSeqDataBlock* seqDataBlock = link->getObject(); if (seqDataBlock->field_0x1c == 0) { field_0xc.remove(link); - field_0x0.append(link); + mFreeBlocks.append(link); } else if (seqDataBlock->field_0x1c == 2) { field_0xc.remove(link); - field_0x18.append(link); + mLoadedBlocks.append(link); } link = nextLink; } diff --git a/libs/Z2AudioLib/Z2AudioMgr.cpp b/libs/Z2AudioLib/Z2AudioMgr.cpp index d7c6138751b..1aeb3eec2ab 100644 --- a/libs/Z2AudioLib/Z2AudioMgr.cpp +++ b/libs/Z2AudioLib/Z2AudioMgr.cpp @@ -415,7 +415,7 @@ asm bool Z2AudioMgr::hasReset() const { * startSound__10Z2AudioMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ // vtable order #ifdef NONMATCHING -int Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { if (mResettingFlag) { return 0; diff --git a/libs/Z2AudioLib/Z2Creature.cpp b/libs/Z2AudioLib/Z2Creature.cpp index 78e20450742..86e68e212bf 100644 --- a/libs/Z2AudioLib/Z2Creature.cpp +++ b/libs/Z2AudioLib/Z2Creature.cpp @@ -1145,7 +1145,7 @@ Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID i_soundID, u * startTentacleSound__12Z2CreatureOIF10JAISoundIDUcUlSc */ Z2SoundHandlePool* Z2CreatureOI::startTentacleSound(JAISoundID i_soundID, u8 param_1, u32 param_2, s8 param_3) { - mTentacleSounds[param_1].startSound(i_soundID, param_2, param_3); + return mTentacleSounds[param_1].startSound(i_soundID, param_2, param_3); } /* 802C2CD4-802C2DE0 2BD614 010C+00 0/0 0/0 1/1 .text diff --git a/libs/Z2AudioLib/Z2LinkMgr.cpp b/libs/Z2AudioLib/Z2LinkMgr.cpp index ef8cd542262..27ecf3ac690 100644 --- a/libs/Z2AudioLib/Z2LinkMgr.cpp +++ b/libs/Z2AudioLib/Z2LinkMgr.cpp @@ -634,7 +634,7 @@ SECTION_SDATA2 static f32 lit_4399 = 9.0f / 10.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int Z2LinkSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool Z2LinkSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2, u32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7, f32 param_8, u32 param_9) { @@ -697,7 +697,7 @@ Z2RideSoundStarter::Z2RideSoundStarter(Z2CreatureRide* ride) : Z2SoundStarter(fa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int Z2RideSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool Z2RideSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2, u32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7, f32 param_8, u32 param_9) { diff --git a/libs/Z2AudioLib/Z2Param.cpp b/libs/Z2AudioLib/Z2Param.cpp index e131fa3a6f9..ac70c6c77b3 100644 --- a/libs/Z2AudioLib/Z2Param.cpp +++ b/libs/Z2AudioLib/Z2Param.cpp @@ -160,8 +160,13 @@ f32 Z2Param::ENEMY_LASTHIT_MUTE_VOLUME; /* 80451340 0001+00 data_80451340 None */ /* 80451341 0001+00 data_80451341 None */ /* 80451342 0006+00 data_80451342 None */ -extern u8 struct_80451340[8]; -u8 struct_80451340[8]; +#pragma push +#pragma force_active on +u8 struct_80451340; +u8 struct_80451341; +u8 struct_80451342; +u8 pad_80451344[4]; +#pragma pop /* 80451348-80451350 000848 0008+00 0/0 4/4 0/0 .sbss None */ extern u8 data_80451348[8]; diff --git a/libs/Z2AudioLib/Z2SeMgr.cpp b/libs/Z2AudioLib/Z2SeMgr.cpp index 9792e01a73b..c9d0ce61ac4 100644 --- a/libs/Z2AudioLib/Z2SeMgr.cpp +++ b/libs/Z2AudioLib/Z2SeMgr.cpp @@ -4,6 +4,15 @@ // #include "Z2AudioLib/Z2SeMgr.h" +#include "Z2AudioLib/Z2Audience.h" +#include "Z2AudioLib/Z2Calc.h" +#include "Z2AudioLib/Z2Param.h" +#include "Z2AudioLib/Z2SceneMgr.h" +#include "Z2AudioLib/Z2SeqMgr.h" +#include "Z2AudioLib/Z2SoundMgr.h" +#include "Z2AudioLib/Z2SoundStarter.h" +#include "Z2AudioLib/Z2SpeechMgr2.h" +#include "Z2AudioLib/Z2StatusMgr.h" #include "dol2asm.h" #include "global.h" @@ -11,75 +20,10 @@ // Types: // -struct Z2StatusMgr { - /* 802B613C */ void menuIn(); - /* 802B617C */ void menuOut(); - /* 802B61BC */ void isMovieDemo(); -}; - -struct Z2SpeechMgr2 { - /* 802CCA18 */ void playOneShotVoice(u8, u16, Vec*, s8); -}; - -struct Z2SoundMgr { - /* 802AA7DC */ void stopSoundID(JAISoundID); - /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32); -}; - -struct Z2SeqMgr { - /* 802AF010 */ void bgmStart(u32, u32, s32); -}; - -struct Z2Param { - static f32 VOL_SE_SYSTEM_DEFAULT; - static f32 VOL_SE_LINK_VOICE_DEFAULT; - static f32 VOL_SE_LINK_MOTION_DEFAULT; - static f32 VOL_SE_LINK_FOOTNOTE_DEFAULT; - static f32 VOL_SE_CHAR_VOICE_DEFAULT; - static f32 VOL_SE_CHAR_MOVE_DEFAULT; - static f32 VOL_SE_OBJECT_DEFAULT; - static f32 VOL_SE_ATMOSPHERE_DEFAULT; - static f32 VOL_SE_SYSTEM_TALKING; - static f32 VOL_SE_LINK_VOICE_TALKING; - static f32 VOL_SE_LINK_MOTION_TALKING; - static f32 VOL_SE_LINK_FOOTNOTE_TALKING; - static f32 VOL_SE_CHAR_VOICE_TALKING; - static f32 VOL_SE_CHAR_MOVE_TALKING; - static f32 VOL_SE_OBJECT_TALKING; - static f32 VOL_SE_ATMOSPHERE_TALKING; - static f32 VOL_SE_SYSTEM_PAUSING; - static f32 VOL_SE_LINK_VOICE_PAUSING; - static f32 VOL_SE_LINK_MOTION_PAUSING; - static f32 VOL_SE_LINK_FOOTNOTE_PAUSING; - static f32 VOL_SE_CHAR_VOICE_PAUSING; - static f32 VOL_SE_CHAR_MOVE_PAUSING; - static f32 VOL_SE_OBJECT_PAUSING; - static f32 VOL_SE_ATMOSPHERE_PAUSING; -}; - struct Z2CreatureLink { static u8 mLinkPtr[4 + 4 /* padding */]; }; -struct Z2Calc { - struct CurveSign {}; - - /* 802A968C */ void linearTransform(f32, f32, f32, f32, f32, bool); - /* 802A96F4 */ void getParamByExp(f32, f32, f32, f32, f32, f32, Z2Calc::CurveSign); -}; - -struct Z2Audience { - /* 802BD704 */ void calcOffMicSound(f32); - /* 802BD92C */ void convertAbsToRel(Vec&, Vec*, int); - /* 802BD95C */ void calcRelPosVolume(Vec const&, f32, int); - /* 802BDA44 */ void calcRelPosPan(Vec const&, int); - /* 802BDB44 */ void calcRelPosDolby(Vec const&, int); -}; - -struct JAISeCategoryMgr { - /* 8029FDE0 */ void stop(u32); -}; - // // Forward References: // @@ -192,7 +136,7 @@ extern "C" extern u8 __OSReport_disable; // /* 802AB64C-802AB710 2A5F8C 00C4+00 0/0 1/1 0/0 .text __ct__7Z2SeMgrFv */ -Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), field_0x60(mSoundHandle, 0x18) { +Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18) { field_0x3c0 = 0; field_0x3c1 = 0; field_0x3c2 = 0; @@ -207,55 +151,66 @@ Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), field_0x60(mSoundHandle, 0x18) { } Z2MultiSeObj::Z2MultiSeObj() { - field_0x1c = 0xFFFFFFFF; + mSoundID = 0xFFFFFFFF; field_0x20 = 0; } /* 802AB750-802AB80C 2A6090 00BC+00 0/0 1/1 0/0 .text initSe__7Z2SeMgrFv */ -#ifdef NONMATCHING void Z2SeMgr::initSe() { - for (int i = 0; i < 10; i++) { + for (u8 i = 0; i < 10; i++) { mLevelObjSe[i].resetMultiSePos(); - mLevelObjSe[i].field_0x1c = 0xffffffff; + mLevelObjSe[i].mSoundID = 0xffffffff; mLevelObjSe[i].field_0x20 = 0; } mLevelObjectSeCount = 0; - for (int i = 0; i < 10; i++) { + for (u8 i = 0; i < 10; i++) { mMultiTriggerSe[i].resetMultiSePos(); - mMultiTriggerSe[i].field_0x1c = 0xffffffff; + mMultiTriggerSe[i].mSoundID = 0xffffffff; mMultiTriggerSe[i].field_0x20 = 0; } mMultiTriggerSeCount = 0; resetModY(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::initSe() { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s" -} -#pragma pop -#endif void Z2SeMgr::resetModY() { for (int i = 0; i < 8; i++) { - mModY[i] = 0; + mModY[i] = NULL; } } /* 802AB830-802AB93C 2A6170 010C+00 1/1 0/0 0/0 .text modHeightAtCamera__7Z2SeMgrFPPC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/modHeightAtCamera__7Z2SeMgrFPPC3Vec.s" +void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { + if (*param_0 != NULL) { + int idx = 9999; + for (int i = 0; i < 8; i++) { + if (mModY[i] == *param_0) { + idx = i; + break; + } + } + if (idx == 9999) { + int i; + for (i = 0; i < 8; i++) { + if (mModY[i] == NULL) { + idx = i; + mModY[i] = *param_0; + break; + } + } + if (i == 8) { + return; + } + } + field_0x340[idx] = **param_0; + JGeometry::TVec3 cam_pos = Z2GetAudience()->getAudioCamPos(); + if (field_0x340[idx].y > cam_pos.y) { + field_0x340[idx].y = cam_pos.y; + } + *param_0 = &field_0x340[idx]; + } } -#pragma pop void Z2SeMgr::incrCrowdSize() { mCrowdSize++; @@ -365,15 +320,240 @@ SECTION_SDATA2 static f64 lit_4070 = 4503601774854144.0 /* cast s32 to float */; /* 802AB984-802AC50C 2A62C4 0B88+00 1/1 196/196 549/549 .text * seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */ +#ifdef NONMATCHING +// something is wrong with the switch, also isMovieDemo needs to not get inlined +bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_reverb, + f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u8 param_8) { + if (i_soundID == 0xffffffff) { + return false; + } + if (param_8 != 1) { + switch (i_soundID) { + case Z2SE_OBJ_L8_STAIR_ON: + case Z2SE_OBJ_L8_STAIR_MV_UP: + case Z2SE_OBJ_L8_STAIR_MV_DW: + case Z2SE_OBJ_L8_STAIR_ST_UP: + case Z2SE_OBJ_L8_STAIR_ST_DW: + case Z2SE_OBJ_L8_L_BALL_SW_ON: + case Z2SE_OBJ_L8_L_LIFT_ON: + case Z2SE_OBJ_GANON_BARRIER_APPR: + setMultiTriggerSE(i_soundID, const_cast(i_pos), i_reverb); + return false; + } + } + switch (i_soundID) { + case Z2SE_QUIT_GAME: + Z2GetStatusMgr()->menuOut(); + break; + case Z2SE_OBJ_DOOR_STEEL_BAR: + seStop(Z2SE_OBJ_DOOR_STEEL_BAR, 0); + break; + case JA_SE_OBJ_STN_DOOR_MOVE_U: + seStop(JA_SE_OBJ_STN_DOOR_MOVE_U, 0); + seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0); + break; + case JA_SE_OBJ_STN_DOOR_STOP_D: + seStop(JA_SE_OBJ_STN_DOOR_STOP_D, 0); + seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0); + break; + case JA_SE_OBJ_STN_DOOR_MOVE_D: + case JA_SE_OBJ_STN_DOOR_STOP_U: + seStop(JA_SE_OBJ_STN_DOOR_MOVE_U, 0); + seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0); + break; + case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2: + case Z2SE_OBJ_WOOD_DR_OP_MDN: + case Z2SE_OBJ_WOOD_DR_OP_MDN_FX: + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0); + break; + case Z2SE_OBJ_WOOD_DOOR_CLOSE_STOP: + seStop(Z2SE_OBJ_WOOD_DOOR_CLOSE_STOP, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0); + break; + case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN: + case Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE: + case Z2SE_OBJ_WOOD_DOOR_OPEN_STOP: + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2, 0); + seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0); + break; + case Z2SE_SY_DUMMY: + case Z2SE_OBJ_LUPY_BOUND: + case Z2SE_OBJ_MAGIC_POT_BOUND: + case Z2SE_OBJ_ARROW_BOUND: + if (param_2 >= 100) { + param_2 = 100; + } + if (param_2 == 0) { + return false; + } + param_2 = param_2 * param_2; + i_volume = param_2 / 10000.0f; + break; + case Z2SE_OBJ_BOMB_BOUND: + if (i_volume >= 100.0f) { + i_volume = 100.0f; + } + if (i_volume <= 0.0f) { + return false; + } + i_volume = (i_volume * i_volume) / 10000.0f; + break; + case Z2SE_OBJ_KEY_BOUND: + if (param_2 == 0) { + return false; + } + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.2f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_0); + break; + case Z2SE_MAGIC_METER_DEC: + if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL + || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL) + { + return false; + } + break; + case Z2SE_MAGIC_METER_FINISH: + seStop(Z2SE_MAGIC_METER_DEC, 0); + break; + case Z2SE_ITEM_RING_IN: + case Z2SE_SY_MENU_IN: + case Z2SE_SY_MAP_OPEN_L: + Z2GetStatusMgr()->menuIn(); + break; + case Z2SE_ITEM_RING_OUT: + case Z2SE_SY_MENU_OUT: + case Z2SE_SY_CONTINUE_OK: + case Z2SE_SY_MAP_CLOSE_L: + Z2GetStatusMgr()->menuOut(); + break; + case Z2SE_OBJ_BOARD_BOUND: + case Z2SE_OBJ_BOARD_PUT: + if (param_2 < 90) { + i_volume = 0.7f; + i_pitch = 1.25f; + } else if (param_2 < 60) { + i_volume = 0.4f; + i_pitch = 1.5f; + } + break; + case Z2SE_SY_TALK_START: + case Z2SE_SY_TALK_END: + if (Z2GetSceneMgr()->getCurrentSceneNum() != 0) { + return false; + } + break; + case Z2SE_SY_TALK_NEXT: + if (Z2GetSceneMgr()->isMovieDemo()) { + i_soundID = Z2SE_SY_DEMO_MESSAGE_NEXT; + } + break; + case Z2SE_SY_TALK_WIN_CLOSE: + if (Z2GetSceneMgr()->getCurrentSceneNum() == 1) { + i_soundID = Z2SE_SY_TALK_END; + } else if (Z2GetSceneMgr()->isMovieDemo()) { + i_soundID = Z2SE_SY_DEMO_MESSAGE_END; + } + break; + case Z2SE_HP_GAUGE_INC: + if (!Z2GetStatusMgr()->isHeartGuageOn() || !Z2GetSceneMgr()->isSceneExist()) { + return false; + } + break; + case Z2SE_OBJ_CHANDELIER_SWING: + if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { + return false; + } + break; + case Z2SE_OBJ_CHANDLV5_SWING: + i_volume = Z2Calc::getParamByExp(param_2, 353.0f, 261.0f, 0.4f, 0.05f, 1.0f, + Z2Calc::CURVE_SIGN_2); + break; + case Z2SE_OBJ_IRONBALL_HIT: + if (param_2 > 150) { + i_volume = 1.4f; + } else { + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f, + Z2Calc::CURVE_SIGN_2); + } + break; + case Z2SE_OBJ_IRONBALL_HIT_SNOW: + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_SIGN_2); + break; + case Z2SE_OBJ_IRONBALL_HIT_ICE: + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_SIGN_2); + break; + case Z2SE_OBJ_L8_B_FOG_FLY: + if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { + return false; + } + break; + case Z2SE_OBJ_BLN_BREAK_S: + case Z2SE_OBJ_BLN_BREAK_M: + case Z2SE_OBJ_BLN_BREAK_L: + if (param_2 > 10) { + param_2 = 10; + } + seStart(param_2 + 0x8C, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + break; + case Z2SE_OBJ_AMATA_ACTION: + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_SIGN_0); + i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f, + Z2Calc::CURVE_SIGN_0); + break; + case Z2SE_OBJ_TOY_BONE_BOUND: + i_volume = Z2Calc::getParamByExp(param_2, 15.0f, 60.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_1); + break; + case Z2SE_FN_ROPE_CREAK_ADD: + param_2 = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.0f, 127.0f, + Z2Calc::CURVE_SIGN_0); + i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.2f, 1.0f, + Z2Calc::CURVE_SIGN_0); + i_pitch = Z2Calc::getParamByExp(param_2, 127.0f, 0.0f, 0.2f, 0.8f, 1.2f, + Z2Calc::CURVE_SIGN_1); + break; + case Z2SE_OBJ_DARK_GATE_RIPPLE: + if (Z2GetSceneMgr()->getCurrentSceneNum() == 3) { + i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; + } else if (Z2GetSceneMgr()->getCurrentSceneNum() == 30 + && Z2GetSceneMgr()->getCurrentRoomNum() == 7) { + i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; + } + break; + } + if (isLevelSe(i_soundID)) { + return seStartLevel(i_soundID, i_pos, param_2, i_reverb, i_pitch, + i_volume, i_pan, i_dolby, param_8); + } + if (isSoundCulling(i_soundID)) { + return false; + } + JAISoundHandle* handle = mSoundHandles.getFreeHandle(); + if (handle == NULL) { + return false; + } + return Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3*)i_pos, + param_2, i_reverb / 127.0f, + i_pitch, i_volume, i_pan, i_dolby, 0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SeMgr::seStart(JAISoundID param_0, Vec const* param_1, u32 param_2, s8 param_3, +asm bool Z2SeMgr::seStart(JAISoundID param_0, Vec const* param_1, u32 param_2, s8 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7, u8 param_8) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803C9D98-803C9DF8 -00001 0060+00 1/1 0/0 0/0 .data @4619 */ @@ -509,7 +689,7 @@ SECTION_SDATA2 static f32 lit_4615 = 90.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SeMgr::seStartLevel(JAISoundID param_0, Vec const* param_1, u32 param_2, s8 param_3, +asm bool Z2SeMgr::seStartLevel(JAISoundID param_0, Vec const* param_1, u32 param_2, s8 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7, u8 param_8) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc.s" @@ -517,26 +697,62 @@ asm void Z2SeMgr::seStartLevel(JAISoundID param_0, Vec const* param_1, u32 param #pragma pop /* 802AD8B0-802AD94C 2A81F0 009C+00 1/1 0/0 4/4 .text seStop__7Z2SeMgrF10JAISoundIDUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::seStop(JAISoundID param_0, u32 param_1) { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/seStop__7Z2SeMgrF10JAISoundIDUl.s" +void Z2SeMgr::seStop(JAISoundID i_soundID, u32 i_count) { + if (i_soundID != -1) { + for (u8 i = 0; i < 24; i++) { + if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID) { + mSoundHandles[i]->stop(i_count); + mSoundHandles[i].releaseSound(); + } + } + } } -#pragma pop /* 802AD94C-802AD9F4 2A828C 00A8+00 0/0 1/1 0/0 .text seStopAll__7Z2SeMgrFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::seStopAll(u32 param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/seStopAll__7Z2SeMgrFUl.s" +void Z2SeMgr::seStopAll(u32 i_count) { + JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); + se_mgr->getCategory(0)->stop(i_count); + se_mgr->getCategory(1)->stop(i_count); + se_mgr->getCategory(2)->stop(i_count); + se_mgr->getCategory(3)->stop(i_count); + se_mgr->getCategory(4)->stop(i_count); + se_mgr->getCategory(5)->stop(i_count); + se_mgr->getCategory(6)->stop(i_count); + se_mgr->getCategory(7)->stop(i_count); + se_mgr->getCategory(8)->stop(i_count); + se_mgr->getCategory(9)->stop(i_count); } -#pragma pop /* 802AD9F4-802ADB14 2A8334 0120+00 3/3 5/5 1/1 .text seMoveVolumeAll__7Z2SeMgrFfUl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::seMoveVolumeAll(f32 i_volume, u32 i_count) { + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + i_volume = 0.0f; + } + JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); + se_mgr->getCategory(1)->getParams() + ->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT * i_volume, i_count); + se_mgr->getCategory(2)->getParams() + ->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT * i_volume, i_count); + se_mgr->getCategory(3)->getParams() + ->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT * i_volume, i_count); + se_mgr->getCategory(4)->getParams() + ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count); + se_mgr->getCategory(5)->getParams() + ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count); + se_mgr->getCategory(6)->getParams() + ->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT * i_volume, i_count); + se_mgr->getCategory(7)->getParams() + ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count); + se_mgr->getCategory(8)->getParams() + ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count); + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + se_mgr->getCategory(9)->getParams() + ->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * i_volume, i_count); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -545,19 +761,38 @@ asm void Z2SeMgr::seMoveVolumeAll(f32 param_0, u32 param_1) { #include "asm/Z2AudioLib/Z2SeMgr/seMoveVolumeAll__7Z2SeMgrFfUl.s" } #pragma pop +#endif /* 802ADB14-802ADB50 2A8454 003C+00 0/0 1/1 0/0 .text messageSePlay__7Z2SeMgrFUsP3VecSc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::messageSePlay(u16 param_0, Vec* param_1, s8 param_2) { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/messageSePlay__7Z2SeMgrFUsP3VecSc.s" +void Z2SeMgr::messageSePlay(u16 param_0, Vec* param_1, s8 param_2) { + Z2GetSpeechMgr2()->playOneShotVoice(0, param_0, param_1, param_2); } -#pragma pop /* 802ADB50-802ADC54 2A8490 0104+00 0/0 1/1 0/0 .text talkInSe__7Z2SeMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::talkInSe() { + if (Z2GetSceneMgr()->isInGame()) { + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } + JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); + se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2); + se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2); + se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2); + se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2); + se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2); + se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -566,8 +801,32 @@ asm void Z2SeMgr::talkInSe() { #include "asm/Z2AudioLib/Z2SeMgr/talkInSe__7Z2SeMgrFv.s" } #pragma pop +#endif /* 802ADC54-802ADD58 2A8594 0104+00 0/0 2/2 0/0 .text talkOutSe__7Z2SeMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::talkOutSe() { + if (Z2GetSceneMgr()->isInGame()) { + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } + JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); + se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2); + se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2); + se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2); + se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2); + se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2); + se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -576,8 +835,32 @@ asm void Z2SeMgr::talkOutSe() { #include "asm/Z2AudioLib/Z2SeMgr/talkOutSe__7Z2SeMgrFv.s" } #pragma pop +#endif /* 802ADD58-802ADE5C 2A8698 0104+00 0/0 1/1 0/0 .text menuInSe__7Z2SeMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::menuInSe() { + if (Z2GetSceneMgr()->isInGame()) { + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } + JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); + se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2); + se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2); + se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2); + se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2); + se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2); + se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -586,6 +869,7 @@ asm void Z2SeMgr::menuInSe() { #include "asm/Z2AudioLib/Z2SeMgr/menuInSe__7Z2SeMgrFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039B9F0-8039B9FC 028050 000C+00 1/1 0/0 0/0 .rodata @5054 */ @@ -598,6 +882,50 @@ COMPILER_STRIP_GATE(0x8039B9F0, &lit_5054); SECTION_SDATA2 static f32 lit_5085 = 4.0f; /* 802ADE5C-802ADFF4 2A879C 0198+00 1/1 0/0 0/0 .text setLevObjSE__7Z2SeMgrFUlP3VecSc */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) { + u8 i = 0; + for (; i < mLevelObjectSeCount; i++) { + if (mLevelObjSe[i].mSoundID == i_soundID) { + break; + } + } + if (i == mLevelObjectSeCount) { + if (mLevelObjectSeCount == 10) { + return; + } + mLevelObjSe[i].mSoundID = i_soundID; + mLevelObjectSeCount++; + } + f32 volume_scale = 1.0f; + Vec pos = {0.0f, 0.0f, -50.0f}; + if (i_pos != NULL) { + pos = *i_pos; + } else { + // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); + Vec tmp; + JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); + pos = tmp; + } + switch (i_soundID) { + case Z2SE_OBJ_FIRE_BURNING: + volume_scale = 0.7f; + break; + case Z2SE_EN_ZZ_MV: + volume_scale = 4.0f; + break; + case Z2SE_FAIRY_S_LV: + case Z2SE_OBJ_L8_L_BALL_SW: + break; + } + mLevelObjSe[i].mVolumeScale = volume_scale; + mLevelObjSe[i].registMultiSePos((Vec*)&pos); + if (mLevelObjSe[i].field_0x20 < param_2) { + mLevelObjSe[i].field_0x20 = param_2; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -606,6 +934,7 @@ asm void Z2SeMgr::setLevObjSE(u32 param_0, Vec* param_1, s8 param_2) { #include "asm/Z2AudioLib/Z2SeMgr/setLevObjSE__7Z2SeMgrFUlP3VecSc.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039B9FC-8039BA08 02805C 000C+00 1/1 0/0 0/0 .rodata @5100 */ @@ -618,6 +947,52 @@ COMPILER_STRIP_GATE(0x8039B9FC, &lit_5100); SECTION_SDATA2 static f32 lit_5134 = 3.0f; /* 802ADFF4-802AE184 2A8934 0190+00 1/1 0/0 0/0 .text setMultiTriggerSE__7Z2SeMgrFUlP3VecSc */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) { + u8 i = 0; + for (; i < mMultiTriggerSeCount; i++) { + if (mMultiTriggerSe[i].mSoundID == i_soundID) { + break; + } + } + if (i == mMultiTriggerSeCount) { + if (mMultiTriggerSeCount == 10) { + return; + } + mMultiTriggerSe[i].mSoundID = i_soundID; + mMultiTriggerSeCount++; + } + f32 volume_scale = 1.0f; + Vec pos = {0.0f, 0.0f, -50.0f}; + if (i_pos != NULL) { + pos = *i_pos; + } else { + // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); + Vec tmp; + JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); + pos = tmp; + } + switch (i_soundID) { + case Z2SE_OBJ_L8_STAIR_ON: + case Z2SE_OBJ_L8_STAIR_MV_UP: + case Z2SE_OBJ_L8_STAIR_MV_DW: + case Z2SE_OBJ_L8_STAIR_ST_UP: + case Z2SE_OBJ_L8_STAIR_ST_DW: + case Z2SE_OBJ_L8_L_LIFT_ON: + volume_scale = 3.0f; + break; + case Z2SE_OBJ_L8_L_BALL_SW_ON: + volume_scale = 1.3f; + break; + } + mMultiTriggerSe[i].mVolumeScale = volume_scale; + mMultiTriggerSe[i].registMultiSePos((Vec*)&pos); + if (mMultiTriggerSe[i].field_0x20 < param_2) { + mMultiTriggerSe[i].field_0x20 = param_2; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -626,8 +1001,88 @@ asm void Z2SeMgr::setMultiTriggerSE(u32 param_0, Vec* param_1, s8 param_2) { #include "asm/Z2AudioLib/Z2SeMgr/setMultiTriggerSE__7Z2SeMgrFUlP3VecSc.s" } #pragma pop +#endif /* 802AE184-802AE524 2A8AC4 03A0+00 0/0 1/1 0/0 .text processSeFramework__7Z2SeMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeMgr::processSeFramework() { + if (Z2GetSceneMgr()->isSceneExist() && mCrowdSize != 0) { + seStartLevel(Z2SE_ENV_PEOPLE_CROWD, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + for (u8 i = 0; i < mLevelObjectSeCount; i++) { + f32 volume = mLevelObjSe[i].getMaxVolume(); + seStartLevel(mLevelObjSe[i].mSoundID, NULL, 0, mLevelObjSe[i].field_0x20, 1.0f, + volume, mLevelObjSe[i].getPanPower(), mLevelObjSe[i].getDolbyPower(), 1); + } + for (u8 i = 0; i < 10; i++) { + mLevelObjSe[i].resetMultiSePos(); + mLevelObjSe[i].mSoundID = -1; + mLevelObjSe[i].field_0x20 = 0; + } + mLevelObjectSeCount = 0; + for (u8 i = 0; i < mMultiTriggerSeCount; i++) { + f32 volume = mMultiTriggerSe[i].getMaxVolume(); + seStartLevel(mMultiTriggerSe[i].mSoundID, NULL, 0, mMultiTriggerSe[i].field_0x20, 1.0f, + volume, mMultiTriggerSe[i].getPanPower(), + mMultiTriggerSe[i].getDolbyPower(), 1); + } + for (u8 i = 0; i < 10; i++) { + mMultiTriggerSe[i].resetMultiSePos(); + mMultiTriggerSe[i].mSoundID = -1; + mMultiTriggerSe[i].field_0x20 = 0; + } + mMultiTriggerSeCount = 0; + field_0x3c9 = 0; + field_0x3ca = 0; + field_0x3cb = 0; + if (field_0x3c2 != 0) { + field_0x3c2--; + } else { + field_0x3c2 = 0; + } + if (field_0x3c3 != 0) { + field_0x3c3--; + } else { + field_0x3c3 = 0; + } + if (field_0x3c4 != 0) { + field_0x3c4--; + } else { + field_0x3c4 = 0; + } + if (field_0x3c5 != 0) { + field_0x3c5--; + } else { + field_0x3c5 = 0; + } + if (field_0x3c0 != 0) { + field_0x3c0--; + } else { + field_0x3c0 = 0; + } + if (field_0x3c1 != 0) { + field_0x3c1--; + } else { + field_0x3c1 = 0; + } + if (field_0x3c6 != 0) { + field_0x3c6--; + } else { + field_0x3c6 = 0; + } + if (field_0x3c7 != 0) { + field_0x3c7--; + } else { + field_0x3c7 = 0; + } + if (field_0x3c8 != 0) { + field_0x3c8--; + } else { + field_0x3c8 = 0; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -636,18 +1091,174 @@ asm void Z2SeMgr::processSeFramework() { #include "asm/Z2AudioLib/Z2SeMgr/processSeFramework__7Z2SeMgrFv.s" } #pragma pop +#endif /* 802AE524-802AE5B0 2A8E64 008C+00 1/1 0/0 0/0 .text isLevelSe__7Z2SeMgrF10JAISoundID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeMgr::isLevelSe(JAISoundID param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeMgr/isLevelSe__7Z2SeMgrF10JAISoundID.s" +bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) { + switch (i_soundID) { + case JA_SE_LK_MOVE_ROCK: + case JA_SE_LK_MOVE_WBLOCK: + case Z2SE_OBJ_FIRE_BURNING: + case JA_SE_MAGMA_L: + case JA_SE_MAGMA_R: + case JA_SE_MAGMA_SR: + case JA_SE_FIREBLAST_NOISE: + case JA_SE_ATM_WIND_HOT: + return true; + default: + return false; + } } -#pragma pop /* 802AE5B0-802AEB04 2A8EF0 0554+00 2/2 3/3 0/0 .text isSoundCulling__7Z2SeMgrF10JAISoundID */ +#ifdef NONMATCHING +// matches with literals +bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { + if (Z2GetSeqMgr()->isItemGetDemo()) { + switch (i_soundID) { + case Z2SE_HP_GAUGE_INC: + case Z2SE_SY_TALK_NEXT: + case Z2SE_SY_TALK_END: + case Z2SE_SY_DEMO_MESSAGE_NEXT: + case Z2SE_SY_DEMO_MESSAGE_END: + case Z2SE_AL_FISH_JUMP_DOWN: + case Z2SE_CAT_CRY_ANNOY_D: + case Z2SE_CAT_CRY_ATTACK_D: + case Z2SE_MIDNA_APPEAR: + case Z2SE_HENA_CLAP: + case Z2SE_EN_PO_V_DEATH: + case Z2SE_EN_SG_BOUND: + case Z2SE_OBJ_TBOX_OPEN_A: + case Z2SE_OBJ_TBOX_OPEN_B: + case Z2SE_OBJ_TBOX_OPEN_B_SLOW: + case Z2SE_OBJ_TBOX_OPEN_C: + case Z2SE_OBJ_NIOIMASU_BOUND: + return false; + default: + return true; + } + } + switch (i_soundID) { + case Z2SE_MIDNA_APPEAR: + case Z2SE_MIDNA_DISAPPEAR: + if (!Z2GetSceneMgr()->isSceneExist()) { + return true; + } + break; + case Z2SE_EN_BE_DEATH: + case Z2SE_EN_BUG_DIE: + if (field_0x3c0 != 0) { + return true; + } + field_0x3c0 = 4; + break; + case Z2SE_EN_BE_GO_HOME: + case Z2SE_EN_BUG_JUMP: + if (field_0x3c1 != 0) { + return true; + } + field_0x3c1 = 4; + break; + case JA_SE_FT_ADD_GRASS: + if (field_0x3c2 != 0) { + return true; + } + field_0x3c2 = 2; + break; + case JA_SE_OBJ_BREAK_WRAILING: + if (field_0x3c9 != 0) { + return true; + } + field_0x3c9 = 1; + break; + case JA_SE_LK_CUT_GRASS: + if (field_0x3c3 != 0) { + return true; + } + field_0x3c3 = 4; + break; + case JA_SE_OBJ_BREAK_CHINA_S: + if (field_0x3c4 != 0) { + return true; + } + field_0x3c4 = 2; + break; + case Z2SE_OBJ_SKULL_BREAK: + if (field_0x3c5 != 0) { + return true; + } + field_0x3c5 = 2; + break; + case JA_SE_CM_MONS_EXPLODE: + if (field_0x3ca != 0) { + return true; + } + field_0x3ca = 1; + Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f); + break; + case Z2SE_DARK_VANISH: + if (field_0x3cb != 0) { + return true; + } + field_0x3cb = 1; + Z2GetSoundMgr()->stopSoundID(i_soundID); + Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f); + break; + case Z2SE_EN_BS_V_DEAD: + case Z2SE_EN_FZ_BOUND: + if (field_0x3c6 != 0) { + return true; + } + field_0x3c6 = 3; + break; + case Z2SE_EN_DB_BERON: + case Z2SE_EN_YK_V_DEATH: + case Z2SE_EN_YG_FOOTNOTE: + if (field_0x3c0 != 0) { + return true; + } + field_0x3c0 = 3; + break; + case Z2SE_EN_DB_APPEAR: + case Z2SE_EN_BS_DEAD: + if (field_0x3c1 != 0) { + return true; + } + field_0x3c1 = 3; + break; + case Z2SE_EN_YK_WING: + if (field_0x3c2 != 0) { + return true; + } + field_0x3c2 = 4; + break; + case Z2SE_EN_YK_V_FURA: + if (field_0x3c3 != 0) { + return true; + } + field_0x3c3 = 4; + break; + case Z2SE_EN_GBA_FOOTNOTE: + if (field_0x3c7 != 0) { + return true; + } + field_0x3c7 = 1; + break; + case Z2SE_EN_GBA_V_DEATH: + case Z2SE_EN_GBA_LAYEGG: + case Z2SE_EN_GBA_FUKA: + case Z2SE_EN_GBA_LAND: + if (field_0x3c8 != 0) { + return true; + } + field_0x3c8 = 1; + break; + case Z2SE_EN_BS_APPEAR: + break; + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -656,6 +1267,7 @@ asm bool Z2SeMgr::isSoundCulling(JAISoundID param_0) { #include "asm/Z2AudioLib/Z2SeMgr/isSoundCulling__7Z2SeMgrF10JAISoundID.s" } #pragma pop +#endif Z2MultiSeMgr::Z2MultiSeMgr() { resetMultiSePos(); @@ -664,41 +1276,112 @@ Z2MultiSeMgr::Z2MultiSeMgr() { Z2MultiSeMgr::~Z2MultiSeMgr() {} /* 802AEB70-802AECBC 2A94B0 014C+00 2/2 6/6 0/0 .text registMultiSePos__12Z2MultiSeMgrFP3Vec */ +#ifdef NONMATCHING +// matches with literals +s8 Z2MultiSeMgr::registMultiSePos(Vec* i_pos) { + if (i_pos == NULL) { + return 0; + } + if (mPosCount < 0) { + mPosCount = 0; + } + Vec rel_pos; + Z2GetAudience()->convertAbsToRel(*i_pos, &rel_pos, 0); + f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, mVolumeScale, 0); + if (volume <= 0.0f) { + return mPosCount; + } + f32 pan = Z2GetAudience()->calcRelPosPan(rel_pos, 0); + f32 dolby = Z2GetAudience()->calcRelPosDolby(rel_pos, 0); + f32 pow_l = (1.0f - pan) * volume; + f32 pow_r = pan * volume; + f32 pow_f = (1.0f - dolby) * volume; + f32 pow_b = dolby * volume; + if (volume > mMaxVolume) { + mMaxVolume = volume; + } + if (pow_l > mMaxPowL) { + mMaxPowL = pow_l; + } + if (pow_r > mMaxPowR) { + mMaxPowR = pow_r; + } + if (pow_f > mMaxPowF) { + mMaxPowF = pow_f; + } + if (pow_b > mMaxPowB) { + mMaxPowB = pow_b; + } + mPosCount++; + return mPosCount; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2MultiSeMgr::registMultiSePos(Vec* param_0) { +asm s8 Z2MultiSeMgr::registMultiSePos(Vec* param_0) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/registMultiSePos__12Z2MultiSeMgrFP3Vec.s" } #pragma pop +#endif void Z2MultiSeMgr::resetMultiSePos(void) { mPosCount = -1; f32 _0 = FLOAT_LABEL(lit_4040); mMaxPowL = _0; mMaxPowR = _0; - mMaxPowB = _0; mMaxPowF = _0; + mMaxPowB = _0; mMaxVolume = _0; } /* 802AECE0-802AEDC0 2A9620 00E0+00 1/1 8/8 0/0 .text getPanPower__12Z2MultiSeMgrFv */ +#ifdef NONMATCHING +// regalloc +f32 Z2MultiSeMgr::getPanPower() { + f32 pow_r = getMaxPowR(); + f32 pow_l = getMaxPowL(); + if (pow_l + pow_r > 0.0f) { + f32 pow_r = getMaxPowR(); + f32 pow_l = getMaxPowL(); + return getMaxPowR() / (pow_l + pow_r); + } else { + return 0.5f; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2MultiSeMgr::getPanPower() { +asm f32 Z2MultiSeMgr::getPanPower() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/getPanPower__12Z2MultiSeMgrFv.s" } #pragma pop +#endif /* 802AEDC0-802AEEA0 2A9700 00E0+00 1/1 8/8 0/0 .text getDolbyPower__12Z2MultiSeMgrFv */ +#ifdef NONMATCHING +// regalloc +f32 Z2MultiSeMgr::getDolbyPower() { + f32 pow_b = getMaxPowB(); + f32 pow_f = getMaxPowF(); + if (pow_f + pow_b > 0.0f) { + f32 pow_b = getMaxPowB(); + f32 pow_f = getMaxPowF(); + return getMaxPowB() / (pow_f + pow_b); + } else { + return 0.5f; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2MultiSeMgr::getDolbyPower() { +asm f32 Z2MultiSeMgr::getDolbyPower() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/getDolbyPower__12Z2MultiSeMgrFv.s" } #pragma pop +#endif diff --git a/libs/Z2AudioLib/Z2SoundInfo.cpp b/libs/Z2AudioLib/Z2SoundInfo.cpp index c0e32f37087..e55b97deb1c 100644 --- a/libs/Z2AudioLib/Z2SoundInfo.cpp +++ b/libs/Z2AudioLib/Z2SoundInfo.cpp @@ -92,7 +92,7 @@ u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID param_0) const { } /* 802BB090-802BB0D8 2B59D0 0048+00 1/0 0/0 0/0 .text getSoundType__11Z2SoundInfoCF10JAISoundID */ -u32 Z2SoundInfo::getSoundType(JAISoundID param_0) const { +int Z2SoundInfo::getSoundType(JAISoundID param_0) const { switch (param_0.mId.mBytes.b0) { case 0: return 0; diff --git a/libs/Z2AudioLib/Z2SoundMgr.cpp b/libs/Z2AudioLib/Z2SoundMgr.cpp index fe7103627ee..70604713810 100644 --- a/libs/Z2AudioLib/Z2SoundMgr.cpp +++ b/libs/Z2AudioLib/Z2SoundMgr.cpp @@ -4,33 +4,17 @@ // #include "Z2AudioLib/Z2SoundMgr.h" +#include "Z2AudioLib/Z2Param.h" +#include "Z2AudioLib/Z2SceneMgr.h" +#include "Z2AudioLib/Z2SeMgr.h" +#include "Z2AudioLib/Z2SeqMgr.h" +#include "Z2AudioLib/Z2SoundInfo.h" +#include "Z2AudioLib/Z2SpeechMgr2.h" +#include "JSystem/JAudio2/JASCalc.h" +#include "JSystem/JAudio2/JASDriverIF.h" +#include "JSystem/JAudio2/JAUSectionHeap.h" #include "dol2asm.h" -// -// Types: -// - -struct Z2SpeechMgr2 { - /* 802CC190 */ void speakOneWord(bool); -}; - -struct Z2SoundInfo { - /* 802BBAC8 */ void getSwBit(JAISoundID) const; -}; - -struct JAUSectionHeap { - /* 802A5EC0 */ void loadDynamicSeq(JAISoundID, bool); - /* 802A5EF8 */ void releaseIdleDynamicSeqDataBlock(); -}; - -struct JASDriver { - /* 8029E188 */ void waitSubFrame(); -}; - -struct JASCalc { - static u8 const CUTOFF_TO_IIR_TABLE[1024]; -}; - // // Forward References: // @@ -53,6 +37,8 @@ extern "C" void multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf(); extern "C" void isPlayingSoundID__10Z2SoundMgrF10JAISoundID(); extern "C" extern char const* const Z2SoundMgr__stringBase0; +void dComIfGs_staffroll_next_go(); + // // External References: // @@ -106,7 +92,6 @@ extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); -extern "C" void sprintf(); extern "C" u8 const CUTOFF_TO_IIR_TABLE__7JASCalc[1024]; extern "C" extern u8 data_80450B4C[4]; extern "C" extern u8 data_80450B70[4]; @@ -114,7 +99,6 @@ extern "C" extern u8 data_80450B80[4]; extern "C" extern u8 data_80450B84[4]; extern "C" extern u8 data_80450B88[4]; extern "C" extern u8 data_80450CC0[4 + 4 /* padding */]; -extern "C" extern u8 struct_80451340[8]; extern "C" extern u8 __OSReport_disable; // @@ -155,6 +139,90 @@ SECTION_SDATA2 static f32 lit_3688 = 1.0f; SECTION_SDATA2 static f32 lit_3689 = -1.0f; /* 802A9BC8-802A9E80 2A4508 02B8+00 1/0 1/1 0/0 .text seqCallback__FP8JASTrackUs */ +#ifdef NONMATCHING +// matches with literals +u16 seqCallback(JASTrack* i_track, u16 param_1) { + JSUList* list; + switch (param_1) { + case 0x1000: + Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(), + 3, 1.0f, 0, -1.0f, -1.0f); + Z2GetSoundMgr()->getSeqMgr()->calc(); + Z2GetSoundMgr()->getSeqMgr()->mixOut(); + break; + case 0x1001: + Z2GetSeqMgr()->onFieldBgmJumpStart(); + break; + case 0x1002: + Z2GetSeqMgr()->onFieldBgmJumpEnd(); + break; + case 0x1003: + Z2GetSpeechMgr2()->speakOneWord(true); + break; + case 0x1004: + Z2GetSeqMgr()->onVariantBgmJumpEnd(true); + break; + case 0x1005: + Z2GetSeqMgr()->onVariantBgmJumpEnd(false); + break; + case 0x1006: + list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList(); + for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { + switch (link->getObject()->getID()) { + case Z2SE_GRO_MV_SINGING: + case Z2SE_GRR_MV_SINGING: + case Z2SE_CLERK_MV_SONG_HO: + case Z2SE_WAD_A_MV_DANCE: + case Z2SE_MCN_A_V_DANCE: + case Z2SE_WCN_A_V_DANCE: + link->getObject()->getTrack()->writePort(14, 1); + break; + } + } + break; + case 0x1015: + list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList(); + for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { + switch (link->getObject()->getID()) { + case Z2SE_MCN_A_V_DANCE: + case Z2SE_WCN_A_V_DANCE: + link->getObject()->getTrack()->writePort(14, 1); + break; + } + } + break; + case 0x1007: + Z2GetSeqMgr()->changeBgmStatus(7); + break; + case 0x1008: + Z2GetSeqMgr()->changeBgmStatus(8); + break; + case 0x1014: + dComIfGs_staffroll_next_go(); + break; + } + if (param_1 >= 0x1009 && param_1 <= 0x1013) { + JAISoundID sound_id = Z2SE_CSL_TOWN_BAND_VOCAL; + if (param_1 <= 0x100a) { + sound_id = Z2SE_CSL_TOWN_BAND_GT_1; + } else if (param_1 <= 0x100c) { + sound_id = Z2SE_CSL_TOWN_BAND_GT_2; + } else if (param_1 <= 0x100f) { + sound_id = Z2SE_CSL_TOWN_BAND_GT_3; + } else if (param_1 <= 0x1011) { + sound_id = Z2SE_CSL_TOWN_BAND_FLUTE; + } + list = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList(); + for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->getID() == sound_id) { + link->getObject()->getTrack()->writePort(14, param_1); + break; + } + } + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -163,6 +231,7 @@ asm u16 seqCallback(JASTrack* param_0, u16 param_1) { #include "asm/Z2AudioLib/Z2SoundMgr/seqCallback__FP8JASTrackUs.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803C9D70-803C9D80 026E90 000C+04 1/1 1/1 0/0 .data __vt__10Z2SoundMgr */ @@ -175,6 +244,17 @@ SECTION_DATA extern void* __vt__10Z2SoundMgr[3 + 1 /* padding */] = { }; /* 802A9E80-802A9EE8 2A47C0 0068+00 0/0 1/1 0/0 .text __ct__10Z2SoundMgrFv */ +#ifdef NONMATCHING +// matches but generates an extra weak function +Z2SoundMgr::Z2SoundMgr() : + JASGlobalInstance(this), + mSeMgr(true), + mSeqMgr(true), + mStreamMgr(true) +{ + mSoundID.setAnonymous(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -183,6 +263,7 @@ asm Z2SoundMgr::Z2SoundMgr() { #include "asm/Z2AudioLib/Z2SoundMgr/__ct__10Z2SoundMgrFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -209,6 +290,64 @@ SECTION_SDATA2 static f64 lit_3909 = 4503599627370496.0 /* cast u32 to float */; /* 802A9EE8-802AA1B0 2A4828 02C8+00 1/0 0/0 0/0 .text * startSound__10Z2SoundMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ +#ifdef NONMATCHING +// matches with literals +bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, + JGeometry::TVec3 const* i_pos) { + switch (Z2GetSoundInfo()->getSoundType(i_soundID)) { + case 0: + if (Z2GetSoundInfo()->getSwBit(i_soundID) & 8) { + Z2GetSeqMgr()->bgmAllMute(3, 0.3f); + mSoundID = i_soundID; + } + return mSeMgr.startSound(i_soundID, i_handle, i_pos); + case 1: + if (i_soundID == Z2BGM_LUTERA_DEMO) { + Z2GetSeqMgr()->bgmStart(Z2BGM_LUTERA2, 0, 0); + Z2GetSeqMgr()->i_unMuteSceneBgm(0); + Z2GetSeqMgr()->changeBgmStatus(0); + return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos); + } else { + bool loaded = false; + JAUSectionHeap* heap = JASGlobalInstance::getInstance(); + JAUSeqDataBlocks const& loaded_blocks = + heap->getSectionHeapData().seqDataBlocks.getLoadedBlocks(); + JSULink* link; + for (link = loaded_blocks.getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->field_0x10 == i_soundID) { + loaded = true; + break; + } + } + if (!loaded) { + heap->releaseIdleDynamicSeqDataBlock(); + if (!heap->loadDynamicSeq(i_soundID, true)) { + JAUSeqDataBlocks const& free_blocks = + heap->getSectionHeapData().seqDataBlocks.getFreeBlocks(); + for (link = free_blocks.getFirst(); link != NULL; link = link->getNext()) { + } + } + + } + return mSeqMgr.startSound(i_soundID, i_handle, i_pos); + } + case 2: + if (i_soundID == 0x2000001 || i_soundID == 0x200004d) { + mStreamMgr.stop(180); + return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos); + } + if (i_soundID == 0x2000005) { + mSeMgr.getCategory(9)->pause(false); + mSeMgr.getCategory(9)->getParams()->moveVolume(1.0f, 45); + } + return mStreamMgr.startSound(i_soundID, i_handle, i_pos); + default: + char error[32]; + sprintf(error, "Unknown Sound-Type id :%08x\n", (u32)i_soundID); + return false; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -218,8 +357,22 @@ asm bool Z2SoundMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, #include "asm/Z2AudioLib/Z2SoundMgr/func_802A9EE8.s" } #pragma pop +#endif /* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */ +#ifdef NONMATCHING +void Z2SoundMgr::calc() { + mSeMgr.calc(); + if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) { + if (Z2GetSceneMgr()->isSceneExist()) { + Z2GetSeqMgr()->bgmAllUnMute(3); + } + mSoundID.setAnonymous(); + } + mSeqMgr.calc(); + mStreamMgr.calc(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -228,67 +381,148 @@ asm void Z2SoundMgr::calc() { #include "asm/Z2AudioLib/Z2SoundMgr/calc__10Z2SoundMgrFv.s" } #pragma pop +#endif /* 802AA270-802AA33C 2A4BB0 00CC+00 1/1 2/2 0/0 .text setIIR__10Z2SoundMgrFP8JAISoundPCs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s" +void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) { + if (param_0 != NULL) { + JASTrack* track = param_0->getTrack(); + for (u32 i = 0; i < 4; i++) { + JASTrack* child = track->getChild(i); + if (child != NULL && child->getStatus() == 1) { + child->setIIR(param_1); + for (u32 j = 0; j < 4; j++) { + JASTrack* child2 = child->getChild(j); + if (child2 != NULL && child2->getStatus() == 1) { + child2->setIIR(param_1); + } + } + } + } + } } -#pragma pop -/* ############################################################################################## */ /* 8039B9C0-8039B9D0 028020 0010+00 1/1 0/0 0/0 .rodata cResetFilterTable */ -SECTION_RODATA static u8 const cResetFilterTable[16] = { - 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static s16 const cResetFilterTable[8] = { + 0x7FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; -COMPILER_STRIP_GATE(0x8039B9C0, &cResetFilterTable); /* 802AA33C-802AA430 2A4C7C 00F4+00 1/1 0/0 0/0 .text setFilterOff__10Z2SoundMgrFP8JAISound */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::setFilterOff(JAISound* param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s" +void Z2SoundMgr::setFilterOff(JAISound* param_0) { + if (param_0 != NULL) { + JASTrack* track = param_0->getTrack(); + for (u32 i = 0; i < 4; i++) { + JASTrack* child = track->getChild(i); + if (child != NULL && child->getStatus() == 1) { + child->setIIR(cResetFilterTable); + child->setFIR(cResetFilterTable); + for (u32 j = 0; j < 4; j++) { + JASTrack* child2 = child->getChild(j); + if (child2 != NULL && child2->getStatus() == 1) { + child2->setIIR(cResetFilterTable); + child2->setFIR(cResetFilterTable); + } + } + } + } + } } -#pragma pop /* 802AA430-802AA528 2A4D70 00F8+00 0/0 1/1 0/0 .text resetFilterAll__10Z2SoundMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::resetFilterAll() { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s" +void Z2SoundMgr::resetFilterAll() { + int i = 1; + if (struct_80451342 != 0) { + i = 0; + } + for (; i < 9; i++) { + JAISeCategoryMgr* category = mSeMgr.getCategory(i); + int se_count = category->getMaxActiveSe(); + if (se_count > 0) { + for (JSULink* link = category->getSeList()->getFirst(); + link != NULL && se_count > 0 && !link->getObject()->isFarAway(); + link = link->getNext(), se_count--) + { + setFilterOff(link->getObject()); + } + } else { + for (JSULink* link = category->getSeList()->getFirst(); + link != NULL && !link->getObject()->isFarAway(); + link = link->getNext()) + { + setFilterOff(link->getObject()); + } + } + } } -#pragma pop /* 802AA528-802AA67C 2A4E68 0154+00 2/2 0/0 0/0 .text mixOut__10Z2SoundMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::mixOut() { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s" +void Z2SoundMgr::mixOut() { + if (struct_80451340 != 0 && Z2GetSceneMgr()->isInDarkness()) { + int i = 1; + if (struct_80451342 != 0) { + i = 0; + } + for (; i < 9; i++) { + JAISeCategoryMgr* category = mSeMgr.getCategory(i); + int se_count = category->getMaxActiveSe(); + if (se_count > 0) { + for (JSULink* link = category->getSeList()->getFirst(); + link != NULL && se_count > 0 && !link->getObject()->isFarAway(); + link = link->getNext(), se_count--) + { + setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]); + } + } else { + for (JSULink* link = category->getSeList()->getFirst(); + link != NULL && !link->getObject()->isFarAway(); + link = link->getNext()) + { + setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]); + } + } + } + } + mSeMgr.mixOut(); + mSeqMgr.mixOut(); + mStreamMgr.mixOut(); } -#pragma pop /* 802AA67C-802AA6B0 2A4FBC 0034+00 0/0 1/1 0/0 .text framework__10Z2SoundMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::framework() { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s" +void Z2SoundMgr::framework() { + calc(); + mixOut(); } -#pragma pop /* 802AA6B0-802AA7DC 2A4FF0 012C+00 0/0 1/1 0/0 .text pauseAllGameSound__10Z2SoundMgrFb */ +#ifdef NONMATCHING +// matches with literals +void Z2SoundMgr::pauseAllGameSound(bool i_pause) { + mSeMgr.getCategory(0)->pause(i_pause); + mSeMgr.getCategory(1)->pause(i_pause); + mSeMgr.getCategory(2)->pause(i_pause); + mSeMgr.getCategory(3)->pause(i_pause); + mSeMgr.getCategory(4)->pause(i_pause); + mSeMgr.getCategory(5)->pause(i_pause); + mSeMgr.getCategory(6)->pause(i_pause); + mSeMgr.getCategory(7)->pause(i_pause); + mSeMgr.getCategory(8)->pause(i_pause); + mSeMgr.getCategory(9)->pause(i_pause); + mSeqMgr.pause(i_pause); + mStreamMgr.pause(i_pause); + if (i_pause) { + Z2GetSeMgr()->seMoveVolumeAll(0.0f, 10); + mSeqMgr.getParams()->moveVolume(0.0f, 10); + mStreamMgr.getParams()->moveVolume(0.0f, 10); + } + else { + Z2GetSeMgr()->seMoveVolumeAll(1.0f, 10); + mSeqMgr.getParams()->moveVolume(1.0f, 10); + mStreamMgr.getParams()->moveVolume(1.0f, 10); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -297,36 +531,34 @@ asm void Z2SoundMgr::pauseAllGameSound(bool param_0) { #include "asm/Z2AudioLib/Z2SoundMgr/pauseAllGameSound__10Z2SoundMgrFb.s" } #pragma pop +#endif /* 802AA7DC-802AA84C 2A511C 0070+00 0/0 1/1 0/0 .text stopSoundID__10Z2SoundMgrF10JAISoundID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::stopSoundID(JAISoundID param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s" +void Z2SoundMgr::stopSoundID(JAISoundID i_soundID) { + mSeMgr.stopSoundID(i_soundID); + mSeqMgr.stopSoundID(i_soundID); + mStreamMgr.stopSoundID(i_soundID); } -#pragma pop /* 802AA84C-802AA8C8 2A518C 007C+00 0/0 1/1 0/0 .text stopSync__10Z2SoundMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::stopSync() { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s" +void Z2SoundMgr::stopSync() { + stop(); + while (mSeMgr.getNumActiveSe() > 0 || mSeqMgr.getNumActiveSeqs() > 0) { + calc(); + if (mSeMgr.getNumActiveSe() == 0 && mSeqMgr.getNumActiveSeqs() == 0) { + break; + } + mixOut(); + JASDriver::waitSubFrame(); + } } -#pragma pop /* 802AA8C8-802AA908 2A5208 0040+00 1/1 0/0 0/0 .text stop__10Z2SoundMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SoundMgr::stop() { - nofralloc -#include "asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s" +void Z2SoundMgr::stop() { + mSeMgr.stop(); + mSeqMgr.stop(); + mStreamMgr.stop(); } -#pragma pop /* ############################################################################################## */ /* 80455850-80455858 003E50 0004+04 1/1 0/0 0/0 .sdata2 @4313 */ @@ -337,6 +569,14 @@ SECTION_SDATA2 static f32 lit_4313[1 + 1 /* padding */] = { }; /* 802AA908-802AA9E8 2A5248 00E0+00 0/0 1/1 0/0 .text initParams__10Z2SoundMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SoundMgr::initParams() { + mSeMgr.initParams(); + mSeqMgr.getParams()->init(); + mStreamMgr.getParams()->init(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -345,9 +585,23 @@ asm void Z2SoundMgr::initParams() { #include "asm/Z2AudioLib/Z2SoundMgr/initParams__10Z2SoundMgrFv.s" } #pragma pop +#endif /* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text * multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */ +#ifdef NONMATCHING +void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { + if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { + JSUList* list = + mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList(); + for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->getID() == i_soundID) { + link->getObject()->getAuxiliary().mParams.mVolume *= i_multi; + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -356,16 +610,35 @@ asm void Z2SoundMgr::multiVolumeSoundID(JAISoundID param_0, f32 param_1) { #include "asm/Z2AudioLib/Z2SoundMgr/multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf.s" } #pragma pop +#endif /* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID */ +#ifdef NONMATCHING +bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) { + if (i_soundID.isAnonymous()) { + return 0; + } + if (Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { + JSUList* list = + mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList(); + for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->getID() == i_soundID) { + return true; + } + } + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SoundMgr::isPlayingSoundID(JAISoundID param_0) { +asm bool Z2SoundMgr::isPlayingSoundID(JAISoundID param_0) { nofralloc #include "asm/Z2AudioLib/Z2SoundMgr/isPlayingSoundID__10Z2SoundMgrF10JAISoundID.s" } #pragma pop +#endif /* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/libs/Z2AudioLib/Z2SoundStarter.cpp b/libs/Z2AudioLib/Z2SoundStarter.cpp index 0157d6064b1..b05da8234a5 100644 --- a/libs/Z2AudioLib/Z2SoundStarter.cpp +++ b/libs/Z2AudioLib/Z2SoundStarter.cpp @@ -13,66 +13,66 @@ Z2SoundStarter::Z2SoundStarter(bool param_0) : JAISoundStarter(param_0), JASGlob /* 802AABF4-802AAC3C 2A5534 0048+00 1/0 5/0 0/0 .text * startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -int Z2SoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3 const* param_2) { - return Z2SoundStarter::startSound(param_0, param_1, param_2, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, - 0); +bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* i_handlePtr, + JGeometry::TVec3 const* i_pos) { + return Z2SoundStarter::startSound(i_soundID, i_handlePtr, i_pos, + 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0); } /* 802AAC3C-802AAEDC 2A557C 02A0+00 2/1 2/2 0/0 .text * startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ -int Z2SoundStarter::startSound(JAISoundID param_1, JAISoundHandle* handlePtr, - JGeometry::TVec3 const* param_3, u32 param_4, f32 param_5, - f32 param_6, f32 param_7, f32 param_8, f32 param_9, u32 param_10) { +bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* handlePtr, + JGeometry::TVec3 const* i_pos, u32 param_4, f32 i_fxMix, + f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u32 i_count) { JUT_ASSERT(45, handlePtr); if (param_4 == 6) { - switch (param_1) { + switch (i_soundID) { case Z2SE_CM_BODYFALL_S: - param_1 = Z2SE_CM_BODYFALL_ASASE_S; + i_soundID = Z2SE_CM_BODYFALL_ASASE_S; break; case Z2SE_CM_BODYFALL_M: - param_1 = Z2SE_CM_BODYFALL_ASASE_M; + i_soundID = Z2SE_CM_BODYFALL_ASASE_M; break; case Z2SE_CM_BODYFALL_L: - param_1 = Z2SE_CM_BODYFALL_ASASE_L; + i_soundID = Z2SE_CM_BODYFALL_ASASE_L; break; } } - if (param_1.mId.mBytes.b1 != 0 && param_1.mId.mBytes.b1 != 9) { + if (i_soundID.mId.mBytes.b1 != 0 && i_soundID.mId.mBytes.b1 != 9) { if (Z2GetSceneMgr()->isInDarkness()) { - param_5 = 1.0f; + i_fxMix = 1.0f; } else { f32 ratio = Z2GetStatusMgr()->getCameraInWaterDepthRatio(); f32 uStack_8c = ratio > 0.0f; if (uStack_8c) { - param_5 = uStack_8c; + i_fxMix = uStack_8c; } else { - param_5 += 0.5f * Z2GetEnvSeMgr()->getFogDensity(); - if (param_5 > 1.0f) { - param_5 = 1.0f; + i_fxMix += 0.5f * Z2GetEnvSeMgr()->getFogDensity(); + if (i_fxMix > 1.0f) { + i_fxMix = 1.0f; } } } } - int startSoundRes = Z2GetAudioMgr()->startSound(param_1, handlePtr, param_3); + bool startSoundRes = Z2GetAudioMgr()->startSound(i_soundID, handlePtr, i_pos); if (*handlePtr) { if (param_4 != 0) { setPortData(handlePtr, 6, param_4, -1); } - if (param_5 > 0.0f) { - (*handlePtr)->getAuxiliary().moveFxMix(param_5, param_10); + if (i_fxMix > 0.0f) { + (*handlePtr)->getAuxiliary().moveFxMix(i_fxMix, i_count); } - if (param_6 != 1.0f) { - (*handlePtr)->getAuxiliary().movePitch(param_6, param_10); + if (i_pitch != 1.0f) { + (*handlePtr)->getAuxiliary().movePitch(i_pitch, i_count); } - if (param_7 != 1.0f) { - (*handlePtr)->getAuxiliary().moveVolume(param_7, param_10); + if (i_volume != 1.0f) { + (*handlePtr)->getAuxiliary().moveVolume(i_volume, i_count); } - if (param_8 != -1.0f) { - (*handlePtr)->getAuxiliary().movePan(param_8, param_10); + if (i_pan != -1.0f) { + (*handlePtr)->getAuxiliary().movePan(i_pan, i_count); } - if (param_9 != -1.0f) { - (*handlePtr)->getAuxiliary().moveDolby(param_9, param_10); + if (i_dolby != -1.0f) { + (*handlePtr)->getAuxiliary().moveDolby(i_dolby, i_count); } } return startSoundRes; diff --git a/libs/Z2AudioLib/Z2SpeechMgr2.cpp b/libs/Z2AudioLib/Z2SpeechMgr2.cpp index 20643284328..36e94594053 100644 --- a/libs/Z2AudioLib/Z2SpeechMgr2.cpp +++ b/libs/Z2AudioLib/Z2SpeechMgr2.cpp @@ -1984,7 +1984,7 @@ SECTION_SDATA2 static f32 lit_4572 = 0.5f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int Z2SpeechStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool Z2SpeechStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2, u32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7, f32 param_8, u32 param_9) {