From 16259ec265b11275f3401916904953b943ff7b1d Mon Sep 17 00:00:00 2001 From: Caroline Madsen <69010899+randomsalience@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:50:13 -0500 Subject: [PATCH] Z2SeqMgr mostly done (#2053) --- Progress.md | 8 +- .../bgmStreamCheckReady__8Z2SeqMgrFv.s | 13 - .../Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s | 58 - .../Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s | 52 - .../checkBgmIDPlaying__8Z2SeqMgrFUl.s | 48 - .../Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s | 72 - .../onFieldBgmJumpStart__8Z2SeqMgrFv.s | 20 - .../resetBattleBgmParams__8Z2SeqMgrFv.s | 17 - .../Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s | 53 - .../setBattleDistIgnore__8Z2SeqMgrFb.s | 5 - .../setTimeProcVolMod__8Z2SeqMgrFbUl.s | 5 - include/JSystem/JAudio2/JAISound.h | 15 +- include/JSystem/JAudio2/JAISoundParams.h | 16 +- include/Z2AudioLib/Z2Creature.h | 1 + include/Z2AudioLib/Z2Param.h | 1 + include/Z2AudioLib/Z2SceneMgr.h | 2 + include/Z2AudioLib/Z2SeqMgr.h | 125 +- include/Z2AudioLib/Z2SoundMgr.h | 2 +- include/Z2AudioLib/Z2SoundObjMgr.h | 1 + include/Z2AudioLib/Z2SoundStarter.h | 4 + include/Z2AudioLib/Z2StatusMgr.h | 3 + include/d/d_demo.h | 4 - libs/Z2AudioLib/Z2Creature.cpp | 2 +- libs/Z2AudioLib/Z2Param.cpp | 2 +- libs/Z2AudioLib/Z2SceneMgr.cpp | 2 +- libs/Z2AudioLib/Z2SeqMgr.cpp | 2267 ++++++++++++++++- libs/Z2AudioLib/Z2SoundMgr.cpp | 2 +- 27 files changed, 2275 insertions(+), 525 deletions(-) delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/checkBgmIDPlaying__8Z2SeqMgrFUl.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpStart__8Z2SeqMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/resetBattleBgmParams__8Z2SeqMgrFv.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/setBattleDistIgnore__8Z2SeqMgrFb.s delete mode 100644 asm/Z2AudioLib/Z2SeqMgr/setTimeProcVolMod__8Z2SeqMgrFbUl.s diff --git a/Progress.md b/Progress.md index f7c14cafd0d..8f505825ae2 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 | 44.556552% | 1602496 | 3596544 +.text | 45.154571% | 1624004 | 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.400331% | 2026432 | 4020672 +Total | 50.935267% | 2047940 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 50.400331% | 2026432 | 4020672 +main.dol | 50.935267% | 2047940 | 4020672 RELs | 35.541016% | 4087332 | 11500324 -Total | 39.390281% | 6113764 | 15520996 +Total | 39.528855% | 6135272 | 15520996 ## RELs diff --git a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s b/asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s deleted file mode 100644 index a1a1be10956..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_802AFDEC: -/* 802AFDEC 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802AFDF0 28 03 00 00 */ cmplwi r3, 0 -/* 802AFDF4 41 82 00 1C */ beq lbl_802AFE10 -/* 802AFDF8 88 83 00 1E */ lbz r4, 0x1e(r3) -/* 802AFDFC 38 00 00 03 */ li r0, 3 -/* 802AFE00 38 60 FF FF */ li r3, -1 -/* 802AFE04 7C 00 20 10 */ subfc r0, r0, r4 -/* 802AFE08 7C 63 01 90 */ subfze r3, r3 -/* 802AFE0C 4E 80 00 20 */ blr -lbl_802AFE10: -/* 802AFE10 38 60 00 00 */ li r3, 0 -/* 802AFE14 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s b/asm/Z2AudioLib/Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s deleted file mode 100644 index dae03378422..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_802AFE18: -/* 802AFE18 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AFE1C 7C 08 02 A6 */ mflr r0 -/* 802AFE20 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AFE24 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802AFE28 7C 7F 1B 78 */ mr r31, r3 -/* 802AFE2C 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802AFE30 28 03 00 00 */ cmplwi r3, 0 -/* 802AFE34 41 82 00 0C */ beq lbl_802AFE40 -/* 802AFE38 38 63 00 1C */ addi r3, r3, 0x1c -/* 802AFE3C 4B FF 24 09 */ bl unlockIfLocked__15JAISoundStatus_Fv -lbl_802AFE40: -/* 802AFE40 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 802AFE44 28 03 00 00 */ cmplwi r3, 0 -/* 802AFE48 41 82 00 10 */ beq lbl_802AFE58 -/* 802AFE4C 80 83 00 18 */ lwz r4, 0x18(r3) -/* 802AFE50 90 81 00 0C */ stw r4, 0xc(r1) -/* 802AFE54 48 00 00 08 */ b lbl_802AFE5C -lbl_802AFE58: -/* 802AFE58 38 80 FF FF */ li r4, -1 -lbl_802AFE5C: -/* 802AFE5C 3C 04 00 01 */ addis r0, r4, 1 -/* 802AFE60 28 00 FF FF */ cmplwi r0, 0xffff -/* 802AFE64 40 82 00 1C */ bne lbl_802AFE80 -/* 802AFE68 80 7F 00 00 */ lwz r3, 0(r31) -/* 802AFE6C 28 03 00 00 */ cmplwi r3, 0 -/* 802AFE70 41 82 00 58 */ beq lbl_802AFEC8 -/* 802AFE74 38 80 00 1E */ li r4, 0x1e -/* 802AFE78 4B FF 26 65 */ bl stop__8JAISoundFUl -/* 802AFE7C 48 00 00 4C */ b lbl_802AFEC8 -lbl_802AFE80: -/* 802AFE80 28 03 00 00 */ cmplwi r3, 0 -/* 802AFE84 41 82 00 10 */ beq lbl_802AFE94 -/* 802AFE88 80 83 00 18 */ lwz r4, 0x18(r3) -/* 802AFE8C 90 81 00 08 */ stw r4, 8(r1) -/* 802AFE90 48 00 00 08 */ b lbl_802AFE98 -lbl_802AFE94: -/* 802AFE94 38 80 FF FF */ li r4, -1 -lbl_802AFE98: -/* 802AFE98 3C 04 FE 00 */ addis r0, r4, 0xfe00 -/* 802AFE9C 28 00 00 00 */ cmplwi r0, 0 -/* 802AFEA0 40 82 00 28 */ bne lbl_802AFEC8 -/* 802AFEA4 28 03 00 00 */ cmplwi r3, 0 -/* 802AFEA8 41 82 00 08 */ beq lbl_802AFEB0 -/* 802AFEAC 4B FF 26 ED */ bl stop__8JAISoundFv -lbl_802AFEB0: -/* 802AFEB0 7F E3 FB 78 */ mr r3, r31 -/* 802AFEB4 3C 80 01 00 */ lis r4, 0x0100 /* 0x010000A9@ha */ -/* 802AFEB8 38 84 00 A9 */ addi r4, r4, 0x00A9 /* 0x010000A9@l */ -/* 802AFEBC 38 A0 00 00 */ li r5, 0 -/* 802AFEC0 38 C0 00 00 */ li r6, 0 -/* 802AFEC4 4B FF F1 4D */ bl bgmStart__8Z2SeqMgrFUlUll -lbl_802AFEC8: -/* 802AFEC8 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802AFECC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AFED0 7C 08 03 A6 */ mtlr r0 -/* 802AFED4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AFED8 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s b/asm/Z2AudioLib/Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s deleted file mode 100644 index 6b58b894ab4..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_802AFEDC: -/* 802AFEDC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802AFEE0 7C 08 02 A6 */ mflr r0 -/* 802AFEE4 90 01 00 24 */ stw r0, 0x24(r1) -/* 802AFEE8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802AFEEC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 802AFEF0 7C 7E 1B 78 */ mr r30, r3 -/* 802AFEF4 7C 9F 23 78 */ mr r31, r4 -/* 802AFEF8 80 83 00 0C */ lwz r4, 0xc(r3) -/* 802AFEFC 28 04 00 00 */ cmplwi r4, 0 -/* 802AFF00 41 82 00 10 */ beq lbl_802AFF10 -/* 802AFF04 80 64 00 18 */ lwz r3, 0x18(r4) -/* 802AFF08 90 61 00 0C */ stw r3, 0xc(r1) -/* 802AFF0C 48 00 00 08 */ b lbl_802AFF14 -lbl_802AFF10: -/* 802AFF10 38 60 FF FF */ li r3, -1 -lbl_802AFF14: -/* 802AFF14 3C 03 FE 00 */ addis r0, r3, 0xfe00 -/* 802AFF18 28 00 00 3F */ cmplwi r0, 0x3f -/* 802AFF1C 41 82 00 28 */ beq lbl_802AFF44 -/* 802AFF20 28 04 00 00 */ cmplwi r4, 0 -/* 802AFF24 41 82 00 10 */ beq lbl_802AFF34 -/* 802AFF28 80 64 00 18 */ lwz r3, 0x18(r4) -/* 802AFF2C 90 61 00 08 */ stw r3, 8(r1) -/* 802AFF30 48 00 00 08 */ b lbl_802AFF38 -lbl_802AFF34: -/* 802AFF34 38 60 FF FF */ li r3, -1 -lbl_802AFF38: -/* 802AFF38 3C 03 FE 00 */ addis r0, r3, 0xfe00 -/* 802AFF3C 28 00 00 5C */ cmplwi r0, 0x5c -/* 802AFF40 40 82 00 18 */ bne lbl_802AFF58 -lbl_802AFF44: -/* 802AFF44 80 6D 85 FC */ lwz r3, __OSReport_disable-0x1C(r13) -/* 802AFF48 3C 80 80 3A */ lis r4, Z2SeqMgr__stringBase0@ha /* 0x8039BA08@ha */ -/* 802AFF4C 38 84 BA 08 */ addi r4, r4, Z2SeqMgr__stringBase0@l /* 0x8039BA08@l */ -/* 802AFF50 38 84 02 76 */ addi r4, r4, 0x276 -/* 802AFF54 48 00 62 95 */ bl setDemoName__11Z2StatusMgrFPc -lbl_802AFF58: -/* 802AFF58 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 802AFF5C 28 03 00 00 */ cmplwi r3, 0 -/* 802AFF60 41 82 00 0C */ beq lbl_802AFF6C -/* 802AFF64 7F E4 FB 78 */ mr r4, r31 -/* 802AFF68 4B FF 25 75 */ bl stop__8JAISoundFUl -lbl_802AFF6C: -/* 802AFF6C 38 7E 00 0C */ addi r3, r30, 0xc -/* 802AFF70 4B FF 22 15 */ bl releaseSound__14JAISoundHandleFv -/* 802AFF74 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802AFF78 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 802AFF7C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802AFF80 7C 08 03 A6 */ mtlr r0 -/* 802AFF84 38 21 00 20 */ addi r1, r1, 0x20 -/* 802AFF88 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/checkBgmIDPlaying__8Z2SeqMgrFUl.s b/asm/Z2AudioLib/Z2SeqMgr/checkBgmIDPlaying__8Z2SeqMgrFUl.s deleted file mode 100644 index 183f20ce115..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/checkBgmIDPlaying__8Z2SeqMgrFUl.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_802B3EAC: -/* 802B3EAC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802B3EB0 80 A3 00 00 */ lwz r5, 0(r3) -/* 802B3EB4 28 05 00 00 */ cmplwi r5, 0 -/* 802B3EB8 41 82 00 10 */ beq lbl_802B3EC8 -/* 802B3EBC 80 05 00 18 */ lwz r0, 0x18(r5) -/* 802B3EC0 90 01 00 10 */ stw r0, 0x10(r1) -/* 802B3EC4 48 00 00 08 */ b lbl_802B3ECC -lbl_802B3EC8: -/* 802B3EC8 38 00 FF FF */ li r0, -1 -lbl_802B3ECC: -/* 802B3ECC 7C 04 00 40 */ cmplw r4, r0 -/* 802B3ED0 40 82 00 0C */ bne lbl_802B3EDC -/* 802B3ED4 38 60 00 01 */ li r3, 1 -/* 802B3ED8 48 00 00 60 */ b lbl_802B3F38 -lbl_802B3EDC: -/* 802B3EDC 80 A3 00 04 */ lwz r5, 4(r3) -/* 802B3EE0 28 05 00 00 */ cmplwi r5, 0 -/* 802B3EE4 41 82 00 10 */ beq lbl_802B3EF4 -/* 802B3EE8 80 05 00 18 */ lwz r0, 0x18(r5) -/* 802B3EEC 90 01 00 0C */ stw r0, 0xc(r1) -/* 802B3EF0 48 00 00 08 */ b lbl_802B3EF8 -lbl_802B3EF4: -/* 802B3EF4 38 00 FF FF */ li r0, -1 -lbl_802B3EF8: -/* 802B3EF8 7C 04 00 40 */ cmplw r4, r0 -/* 802B3EFC 40 82 00 0C */ bne lbl_802B3F08 -/* 802B3F00 38 60 00 01 */ li r3, 1 -/* 802B3F04 48 00 00 34 */ b lbl_802B3F38 -lbl_802B3F08: -/* 802B3F08 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802B3F0C 28 03 00 00 */ cmplwi r3, 0 -/* 802B3F10 41 82 00 10 */ beq lbl_802B3F20 -/* 802B3F14 80 03 00 18 */ lwz r0, 0x18(r3) -/* 802B3F18 90 01 00 08 */ stw r0, 8(r1) -/* 802B3F1C 48 00 00 08 */ b lbl_802B3F24 -lbl_802B3F20: -/* 802B3F20 38 00 FF FF */ li r0, -1 -lbl_802B3F24: -/* 802B3F24 7C 04 00 40 */ cmplw r4, r0 -/* 802B3F28 40 82 00 0C */ bne lbl_802B3F34 -/* 802B3F2C 38 60 00 01 */ li r3, 1 -/* 802B3F30 48 00 00 08 */ b lbl_802B3F38 -lbl_802B3F34: -/* 802B3F34 38 60 00 00 */ li r3, 0 -lbl_802B3F38: -/* 802B3F38 38 21 00 20 */ addi r1, r1, 0x20 -/* 802B3F3C 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s b/asm/Z2AudioLib/Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s deleted file mode 100644 index 336426dc391..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s +++ /dev/null @@ -1,72 +0,0 @@ -lbl_802B545C: -/* 802B545C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802B5460 7C 08 02 A6 */ mflr r0 -/* 802B5464 90 01 00 24 */ stw r0, 0x24(r1) -/* 802B5468 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802B546C 7C 7F 1B 78 */ mr r31, r3 -/* 802B5470 80 6D 86 00 */ lwz r3, __OSReport_disable-0x18(r13) -/* 802B5474 88 03 00 1D */ lbz r0, 0x1d(r3) -/* 802B5478 28 00 00 00 */ cmplwi r0, 0 -/* 802B547C 41 82 00 DC */ beq lbl_802B5558 -/* 802B5480 88 1F 00 D0 */ lbz r0, 0xd0(r31) -/* 802B5484 54 00 F7 FF */ rlwinm. r0, r0, 0x1e, 0x1f, 0x1f -/* 802B5488 41 82 00 D0 */ beq lbl_802B5558 -/* 802B548C 80 6D 85 FC */ lwz r3, __OSReport_disable-0x1C(r13) -/* 802B5490 48 00 12 A5 */ bl checkDayTime__11Z2StatusMgrFv -/* 802B5494 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802B5498 41 82 00 8C */ beq lbl_802B5524 -/* 802B549C 3C 00 01 00 */ lis r0, 0x100 -/* 802B54A0 90 01 00 0C */ stw r0, 0xc(r1) -/* 802B54A4 80 6D 85 E0 */ lwz r3, __OSReport_disable-0x38(r13) -/* 802B54A8 38 81 00 0C */ addi r4, r1, 0xc -/* 802B54AC 7F E5 FB 78 */ mr r5, r31 -/* 802B54B0 38 C0 00 00 */ li r6, 0 -/* 802B54B4 81 83 00 00 */ lwz r12, 0(r3) -/* 802B54B8 81 8C 00 08 */ lwz r12, 8(r12) -/* 802B54BC 7D 89 03 A6 */ mtctr r12 -/* 802B54C0 4E 80 04 21 */ bctrl -/* 802B54C4 7F E3 FB 78 */ mr r3, r31 -/* 802B54C8 38 80 00 00 */ li r4, 0 -/* 802B54CC 4B FF AA C1 */ bl changeBgmStatus__8Z2SeqMgrFl -/* 802B54D0 38 80 00 00 */ li r4, 0 -/* 802B54D4 98 9F 00 C4 */ stb r4, 0xc4(r31) -/* 802B54D8 80 6D 8D E0 */ lwz r3, mLinkPtr__14Z2CreatureLink(r13) -/* 802B54DC 88 03 00 CB */ lbz r0, 0xcb(r3) -/* 802B54E0 54 00 FF FF */ rlwinm. r0, r0, 0x1f, 0x1f, 0x1f -/* 802B54E4 41 82 00 24 */ beq lbl_802B5508 -/* 802B54E8 38 60 00 01 */ li r3, 1 -/* 802B54EC 88 1F 00 D0 */ lbz r0, 0xd0(r31) -/* 802B54F0 50 60 1F 38 */ rlwimi r0, r3, 3, 0x1c, 0x1c -/* 802B54F4 98 1F 00 D0 */ stb r0, 0xd0(r31) -/* 802B54F8 98 9F 00 C3 */ stb r4, 0xc3(r31) -/* 802B54FC 7F E3 FB 78 */ mr r3, r31 -/* 802B5500 48 00 00 6D */ bl fieldRidingMute__8Z2SeqMgrFv -/* 802B5504 48 00 00 54 */ b lbl_802B5558 -lbl_802B5508: -/* 802B5508 88 1F 00 D0 */ lbz r0, 0xd0(r31) -/* 802B550C 50 80 1F 38 */ rlwimi r0, r4, 3, 0x1c, 0x1c -/* 802B5510 98 1F 00 D0 */ stb r0, 0xd0(r31) -/* 802B5514 98 9F 00 C3 */ stb r4, 0xc3(r31) -/* 802B5518 7F E3 FB 78 */ mr r3, r31 -/* 802B551C 48 00 00 51 */ bl fieldRidingMute__8Z2SeqMgrFv -/* 802B5520 48 00 00 38 */ b lbl_802B5558 -lbl_802B5524: -/* 802B5524 3C 60 01 00 */ lis r3, 0x0100 /* 0x01000001@ha */ -/* 802B5528 38 03 00 01 */ addi r0, r3, 0x0001 /* 0x01000001@l */ -/* 802B552C 90 01 00 08 */ stw r0, 8(r1) -/* 802B5530 80 6D 85 E0 */ lwz r3, __OSReport_disable-0x38(r13) -/* 802B5534 38 81 00 08 */ addi r4, r1, 8 -/* 802B5538 7F E5 FB 78 */ mr r5, r31 -/* 802B553C 38 C0 00 00 */ li r6, 0 -/* 802B5540 81 83 00 00 */ lwz r12, 0(r3) -/* 802B5544 81 8C 00 08 */ lwz r12, 8(r12) -/* 802B5548 7D 89 03 A6 */ mtctr r12 -/* 802B554C 4E 80 04 21 */ bctrl -/* 802B5550 38 00 00 00 */ li r0, 0 -/* 802B5554 98 1F 00 BC */ stb r0, 0xbc(r31) -lbl_802B5558: -/* 802B5558 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802B555C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802B5560 7C 08 03 A6 */ mtlr r0 -/* 802B5564 38 21 00 20 */ addi r1, r1, 0x20 -/* 802B5568 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpStart__8Z2SeqMgrFv.s b/asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpStart__8Z2SeqMgrFv.s deleted file mode 100644 index fa5ed3002d3..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpStart__8Z2SeqMgrFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_802B5750: -/* 802B5750 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802B5754 7C 08 02 A6 */ mflr r0 -/* 802B5758 90 01 00 14 */ stw r0, 0x14(r1) -/* 802B575C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802B5760 7C 7F 1B 78 */ mr r31, r3 -/* 802B5764 7F E4 FB 78 */ mr r4, r31 -/* 802B5768 38 A0 00 05 */ li r5, 5 -/* 802B576C 4B FF E7 D5 */ bl getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei -/* 802B5770 D0 3F 00 C8 */ stfs f1, 0xc8(r31) -/* 802B5774 7F E3 FB 78 */ mr r3, r31 -/* 802B5778 7F E4 FB 78 */ mr r4, r31 -/* 802B577C 38 A0 00 0C */ li r5, 0xc -/* 802B5780 4B FF E7 C1 */ bl getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei -/* 802B5784 D0 3F 00 CC */ stfs f1, 0xcc(r31) -/* 802B5788 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802B578C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802B5790 7C 08 03 A6 */ mtlr r0 -/* 802B5794 38 21 00 10 */ addi r1, r1, 0x10 -/* 802B5798 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/resetBattleBgmParams__8Z2SeqMgrFv.s b/asm/Z2AudioLib/Z2SeqMgr/resetBattleBgmParams__8Z2SeqMgrFv.s deleted file mode 100644 index e0f7d3b7ad9..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/resetBattleBgmParams__8Z2SeqMgrFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802B4128: -/* 802B4128 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802B412C 7C 08 02 A6 */ mflr r0 -/* 802B4130 90 01 00 14 */ stw r0, 0x14(r1) -/* 802B4134 80 6D 85 C8 */ lwz r3, __OSReport_disable-0x50(r13) -/* 802B4138 28 03 00 00 */ cmplwi r3, 0 -/* 802B413C 41 82 00 18 */ beq lbl_802B4154 -/* 802B4140 38 80 00 00 */ li r4, 0 -/* 802B4144 38 A0 02 BC */ li r5, 0x2bc -/* 802B4148 38 C0 04 4C */ li r6, 0x44c -/* 802B414C 38 E0 05 DC */ li r7, 0x5dc -/* 802B4150 48 00 B8 31 */ bl setForceBattleArea__13Z2SoundObjMgrFbUsUsUs -lbl_802B4154: -/* 802B4154 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802B4158 7C 08 03 A6 */ mtlr r0 -/* 802B415C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802B4160 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s b/asm/Z2AudioLib/Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s deleted file mode 100644 index ee821017cf2..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_802B4164: -/* 802B4164 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802B4168 7C 08 02 A6 */ mflr r0 -/* 802B416C 90 01 00 24 */ stw r0, 0x24(r1) -/* 802B4170 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802B4174 93 C1 00 18 */ stw r30, 0x18(r1) -/* 802B4178 7C 7E 1B 78 */ mr r30, r3 -/* 802B417C 7C 9F 23 78 */ mr r31, r4 -/* 802B4180 88 03 00 D0 */ lbz r0, 0xd0(r3) -/* 802B4184 54 03 E7 FE */ rlwinm r3, r0, 0x1c, 0x1f, 0x1f -/* 802B4188 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 802B418C 7C 03 00 40 */ cmplw r3, r0 -/* 802B4190 41 82 00 68 */ beq lbl_802B41F8 -/* 802B4194 28 00 00 00 */ cmplwi r0, 0 -/* 802B4198 41 82 00 60 */ beq lbl_802B41F8 -/* 802B419C 80 9E 00 04 */ lwz r4, 4(r30) -/* 802B41A0 28 04 00 00 */ cmplwi r4, 0 -/* 802B41A4 41 82 00 10 */ beq lbl_802B41B4 -/* 802B41A8 80 64 00 18 */ lwz r3, 0x18(r4) -/* 802B41AC 90 61 00 0C */ stw r3, 0xc(r1) -/* 802B41B0 48 00 00 08 */ b lbl_802B41B8 -lbl_802B41B4: -/* 802B41B4 38 60 FF FF */ li r3, -1 -lbl_802B41B8: -/* 802B41B8 3C 03 FF 00 */ addis r0, r3, 0xff00 -/* 802B41BC 28 00 00 0F */ cmplwi r0, 0xf -/* 802B41C0 41 82 00 28 */ beq lbl_802B41E8 -/* 802B41C4 28 04 00 00 */ cmplwi r4, 0 -/* 802B41C8 41 82 00 10 */ beq lbl_802B41D8 -/* 802B41CC 80 64 00 18 */ lwz r3, 0x18(r4) -/* 802B41D0 90 61 00 08 */ stw r3, 8(r1) -/* 802B41D4 48 00 00 08 */ b lbl_802B41DC -lbl_802B41D8: -/* 802B41D8 38 60 FF FF */ li r3, -1 -lbl_802B41DC: -/* 802B41DC 3C 03 FF 00 */ addis r0, r3, 0xff00 -/* 802B41E0 28 00 00 1B */ cmplwi r0, 0x1b -/* 802B41E4 40 82 00 14 */ bne lbl_802B41F8 -lbl_802B41E8: -/* 802B41E8 7F C3 F3 78 */ mr r3, r30 -/* 802B41EC 88 8D 82 E2 */ lbz r4, struct_80450862+0x0(r13) -/* 802B41F0 88 AD 82 E1 */ lbz r5, struct_80450861+0x0(r13) -/* 802B41F4 48 00 10 11 */ bl stopBattleBgm__8Z2SeqMgrFUcUc -lbl_802B41F8: -/* 802B41F8 88 1E 00 D0 */ lbz r0, 0xd0(r30) -/* 802B41FC 53 E0 26 F6 */ rlwimi r0, r31, 4, 0x1b, 0x1b -/* 802B4200 98 1E 00 D0 */ stb r0, 0xd0(r30) -/* 802B4204 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802B4208 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 802B420C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802B4210 7C 08 03 A6 */ mtlr r0 -/* 802B4214 38 21 00 20 */ addi r1, r1, 0x20 -/* 802B4218 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/setBattleDistIgnore__8Z2SeqMgrFb.s b/asm/Z2AudioLib/Z2SeqMgr/setBattleDistIgnore__8Z2SeqMgrFb.s deleted file mode 100644 index 5c5ddaa56e8..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/setBattleDistIgnore__8Z2SeqMgrFb.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_802B43D0: -/* 802B43D0 88 03 00 D0 */ lbz r0, 0xd0(r3) -/* 802B43D4 50 80 3E 30 */ rlwimi r0, r4, 7, 0x18, 0x18 -/* 802B43D8 98 03 00 D0 */ stb r0, 0xd0(r3) -/* 802B43DC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2SeqMgr/setTimeProcVolMod__8Z2SeqMgrFbUl.s b/asm/Z2AudioLib/Z2SeqMgr/setTimeProcVolMod__8Z2SeqMgrFbUl.s deleted file mode 100644 index 1b5b0491e3c..00000000000 --- a/asm/Z2AudioLib/Z2SeqMgr/setTimeProcVolMod__8Z2SeqMgrFbUl.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_802B3398: -/* 802B3398 88 03 00 D0 */ lbz r0, 0xd0(r3) -/* 802B339C 50 80 07 FE */ rlwimi r0, r4, 0, 0x1f, 0x1f -/* 802B33A0 98 03 00 D0 */ stb r0, 0xd0(r3) -/* 802B33A4 4E 80 00 20 */ blr diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 8d9793d9da9..a71bb983282 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -51,7 +51,7 @@ struct JAISoundStatus_ { bool isDead() { return state.unk == 6;} inline bool isPlaying() { return state.unk == 5; } - + bool isPrepared() { return state.unk >= 3; } inline bool isMute() { return field_0x0.flags.mute; } inline bool isPaused() { return field_0x0.flags.paused; } void pauseWhenOut() { @@ -97,7 +97,7 @@ struct JAISoundStatus_ { } flags; } state; /* 0x4 */ u32 user_data; -}; // Size: 0x6 +}; // Size: 0x8 struct JAISoundFader { void forceIn() { @@ -236,10 +236,14 @@ public: bool isHandleAttached() const { return handle_ != NULL; } bool hasLifeTime() const { return status_.field_0x1.flags.flag2; } void removeLifeTime_() { status_.field_0x1.flags.flag1 = false; } + bool isPrepared() { return status_.isPrepared(); } + void unlockIfLocked() { status_.unlockIfLocked(); } + void lockWhenPrepared() { status_.lockWhenPrepared(); } void stop_JAISound_() { status_.state.flags.flag5 = 0; status_.state.flags.flag1 = 1; } + bool isStopping() { bool isStopping = false; if (status_.state.flags.flag1) { @@ -278,10 +282,9 @@ public: return audible_ != NULL; } - void fadeIn(u32 param_1) { - fader.fadeInFromOut(param_1); - return; - } + JAISoundFader& getFader() { return fader; } + void fadeIn(u32 i_count) { fader.fadeInFromOut(i_count); } + void fadeOut(u32 i_count) { fader.fadeOut(i_count); } JAISoundParamsProperty& getProperty() { return params.mProperty; } diff --git a/include/JSystem/JAudio2/JAISoundParams.h b/include/JSystem/JAudio2/JAISoundParams.h index 9d913505eaa..7c0da397df8 100644 --- a/include/JSystem/JAudio2/JAISoundParams.h +++ b/include/JSystem/JAudio2/JAISoundParams.h @@ -18,32 +18,32 @@ struct JAISoundParamsProperty { struct JAISoundParamsTransition { struct TTransition { void zero() { - field_0x0 = 0.0f; + mStep = 0.0f; mCount = 0; - field_0x4 = 0.0f; + mDest = 0.0f; } void set(f32 newValue, f32 intensity, u32 fadeCount) { mCount = fadeCount; - field_0x0 = (newValue - intensity) / mCount; - field_0x4 = newValue; + mStep = (newValue - intensity) / mCount; + mDest = newValue; } f32 apply(f32 param_0) { if (mCount > 1) { mCount--; - param_0 += field_0x0; + param_0 += mStep; } else { if (mCount == 1) { mCount = 0; - param_0 = field_0x4; + param_0 = mDest; } } return param_0; } - /* 0x0 */ f32 field_0x0; - /* 0x4 */ f32 field_0x4; + /* 0x0 */ f32 mStep; + /* 0x4 */ f32 mDest; /* 0x8 */ u32 mCount; }; // Size: 0xC diff --git a/include/Z2AudioLib/Z2Creature.h b/include/Z2AudioLib/Z2Creature.h index 1ca1552738b..a3307a0f1d2 100644 --- a/include/Z2AudioLib/Z2Creature.h +++ b/include/Z2AudioLib/Z2Creature.h @@ -81,6 +81,7 @@ public: void i_setLinkState(u8 i_state) { mLinkState = i_state; } Z2SoundObjSimple& getKantera() { return mKantera; } u8 getLinkHp() const { return mLinkHp; } + u8 getMovingTime() { return mMovingTime; } static Z2CreatureLink* mLinkPtr; diff --git a/include/Z2AudioLib/Z2Param.h b/include/Z2AudioLib/Z2Param.h index 6ba40e0ddd8..c4889e56408 100644 --- a/include/Z2AudioLib/Z2Param.h +++ b/include/Z2AudioLib/Z2Param.h @@ -54,5 +54,6 @@ extern u8 struct_80450868; extern u8 struct_80450869; extern u8 struct_8045086A; extern u8 struct_8045086B; +extern u8 data_8045086C; #endif /* Z2PARAM_H */ diff --git a/include/Z2AudioLib/Z2SceneMgr.h b/include/Z2AudioLib/Z2SceneMgr.h index 76ca05df973..17623a51087 100644 --- a/include/Z2AudioLib/Z2SceneMgr.h +++ b/include/Z2AudioLib/Z2SceneMgr.h @@ -32,7 +32,9 @@ public: bool isSceneExist() const { return sceneExist; } int getCurrentSceneNum() const { return sceneNum; } + s8 getCurrentRoomNum() { return roomNum; } bool isInGame() const { return inGame; } + void setInGame(bool i_inGame) { inGame = i_inGame; } bool isInDarkness() const { return inDarkness; } s8 getRoomReverb() const { return dComIfGp_getReverb(roomNum); } diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index ba97cf2e25e..8ec6b6ffba3 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -4,13 +4,6 @@ #include "JSystem/JAudio2/JAISoundHandles.h" #include "JSystem/JAudio2/JASGadget.h" -// move TTransition / Z2SoundFader ? -struct TTransition { - /* 0x0 */ float field_0x0; - /* 0x4 */ float field_0x4; - /* 0x8 */ u32 mCount; -}; // Size = 0xC - struct Z2SoundFader { void move(f32 vol, u32 count) { if (count != 0) { @@ -21,6 +14,61 @@ struct Z2SoundFader { } } + void forceIn() { + mIntensity = 1.0f; + mTransition.zero(); + } + + void forceOut() { + mIntensity = 0.0f; + mTransition.zero(); + } + + void fadeIn(u32 count) { + if (count != 0) { + mTransition.set(1.0f, mIntensity, count); + } else { + forceIn(); + } + } + + void fadeOut(u32 count) { + if (count != 0) { + mTransition.set(0.0f, mIntensity, count); + } else { + forceOut(); + } + } + + void fadeInFromOut(u32 count) { + mIntensity = 0.0f; + fadeIn(count); + } + + u32 getCount() { + return mTransition.mCount; + } + + f32 getIntensity() { + return mIntensity; + } + + f32 getDest() { + if (getCount() != 0) { + return mTransition.mDest; + } else { + return mIntensity; + } + } + + void calc() { + mIntensity = mTransition.apply(mIntensity); + } + + f32 get() { + return getIntensity(); + } + /* 0x0 */ float mIntensity; /* 0x4 */ JAISoundParamsTransition::TTransition mTransition; }; // Size = 0x10 @@ -35,7 +83,7 @@ public: void subBgmStop(); void subBgmStopInner(); void bgmStreamPrepare(u32); - int bgmStreamCheckReady(); + bool bgmStreamCheckReady(); void bgmStreamPlay(); void bgmStreamStop(u32); void changeBgmStatus(s32); @@ -52,7 +100,7 @@ public: void setTimeProcVolMod(bool, u32); void processBgmFramework(); bool checkBgmIDPlaying(u32); - void getChildTrackVolume(JAISoundHandle*, int); + f32 getChildTrackVolume(JAISoundHandle*, int); void setChildTrackVolume(JAISoundHandle*, int, float, u32, float, float); void resetBattleBgmParams(); void setBattleBgmOff(bool); @@ -90,20 +138,24 @@ public: void i_bgmAllUnMute(u32 count) { mAllBgmMaster.move(1.0f, count); } void i_muteSceneBgm(u32 count, f32 vol) { - field_0x44.move(vol, count); + mSceneBgm.move(vol, count); } void i_unMuteSceneBgm(u32 count) { mBgmPause.move(1.0f, 0); - field_0x44.move(1.0f, count); + mSceneBgm.move(1.0f, count); } void bgmAllMute(u32 count, f32 val) { mAllBgmMaster.mTransition.set(val, mAllBgmMaster.mIntensity, count); } + void bgmAllUnMute(u32 count) { + mAllBgmMaster.move(1.0f, count); + } + bool isItemGetDemo() { - return field_0x08.isSoundAttached() || field_0xba != 0; + return mFanfareHandle.isSoundAttached() || mFanfareCount != 0; } u32 getMainBgmID() { @@ -122,39 +174,56 @@ public: return -1; } + u32 getStreamBgmID() { + if (mStreamBgmHandle) { + return mStreamBgmHandle->getID(); + } + + return -1; + } + JAISoundHandle* getMainBgmHandle() { return &mMainBgmHandle; } /* 0x00 */ JAISoundHandle mMainBgmHandle; /* 0x04 */ JAISoundHandle mSubBgmHandle; - /* 0x08 */ JAISoundHandle field_0x08; - /* 0x0C */ JAISoundHandle field_0x0c; - /* 0x10 */ JAISoundID field_0x10; + /* 0x08 */ JAISoundHandle mFanfareHandle; + /* 0x0C */ JAISoundHandle mStreamBgmHandle; + /* 0x10 */ JAISoundID mFanfareID; /* 0x14 */ Z2SoundFader mMainBgmMaster; /* 0x24 */ Z2SoundFader mSubBgmMaster; /* 0x34 */ Z2SoundFader mBgmPause; - /* 0x44 */ Z2SoundFader field_0x44; + /* 0x44 */ Z2SoundFader mSceneBgm; /* 0x54 */ Z2SoundFader mFanfareMute; - /* 0x64 */ Z2SoundFader field_0x64; + /* 0x64 */ Z2SoundFader mStreamBgmMaster; /* 0x74 */ Z2SoundFader mAllBgmMaster; /* 0x84 */ Z2SoundFader field_0x84; /* 0x94 */ Z2SoundFader mWindStone; /* 0xA4 */ Z2SoundFader field_0xa4; /* 0xB4 */ f32 mTwilightGateVol; - /* 0xB8 */ u16 field_0xb8; - /* 0xBA */ u8 field_0xba; - /* 0xBB */ u8 field_0xbb; - /* 0xBC */ u8 field_0xbc; - /* 0xBD */ u8 field_0xbd; - /* 0xBE */ u8 field_0xbe; - /* 0xBF */ u8 field_0xbf; - /* 0xC0 */ u8 field_0xc0; + /* 0xB8 */ s16 field_0xb8; + /* 0xBA */ u8 mFanfareCount; + /* 0xBB */ u8 mDekuToadCount; + /* 0xBC */ u8 mBgmStatus; + /* 0xBD */ u8 mSubBgmStatus; + /* 0xBE */ u8 mBattleDistState; + /* 0xBF */ u8 mBattleSeqState; + /* 0xC0 */ u8 mBattleSeqCount; /* 0xC1 */ u8 field_0xc1; - /* 0xC2 */ u8 field_0xc2; - /* 0xC3 */ u8 field_0xc3; + /* 0xC2 */ u8 mBattleLastHit; + /* 0xC3 */ u8 mRideCount; /* 0xC4 */ u8 field_0xc4; /* 0xC8 */ f32 field_0xc8; /* 0xCC */ f32 field_0xcc; - /* 0xD0 */ u8 mFlags; + /* 0xD0 */ struct { + bool mBattleDistIgnore : 1; + bool flag1 : 1; + bool mBattleSearched : 1; + bool mBattleBgmOff : 1; + bool mRiding : 1; + bool flag5 : 1; + bool flag6 : 1; + bool flag7 : 1; + } mFlags; }; // Size = 0xD4 inline Z2SeqMgr* Z2GetSeqMgr() { diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index afeb75a1012..73b6ad59820 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -25,7 +25,7 @@ public: /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32); /* 802AAAC4 */ void isPlayingSoundID(JAISoundID); - /* 802A9EE8 */ virtual int startSound(JAISoundID, JAISoundHandle*, + /* 802A9EE8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); JAISeMgr* getSeMgr() { return &mSeMgr; } diff --git a/include/Z2AudioLib/Z2SoundObjMgr.h b/include/Z2AudioLib/Z2SoundObjMgr.h index 66ca7bfcddb..4456130a275 100644 --- a/include/Z2AudioLib/Z2SoundObjMgr.h +++ b/include/Z2AudioLib/Z2SoundObjMgr.h @@ -30,6 +30,7 @@ public: bool removeEnemy(JSULink*); u8 isTwilightBattle(); + u8 getEnemyNumVeryFar() { return mEnemyNumVeryFar; } bool isForceBattle() { return mForceBattle; } JSUList* getEnemyList() { return this; } diff --git a/include/Z2AudioLib/Z2SoundStarter.h b/include/Z2AudioLib/Z2SoundStarter.h index 42d6404a7a0..ba165155ced 100644 --- a/include/Z2AudioLib/Z2SoundStarter.h +++ b/include/Z2AudioLib/Z2SoundStarter.h @@ -15,4 +15,8 @@ struct Z2SoundStarter : public JAISoundStarter, public JASGlobalInstance::getInstance(); +} + #endif /* Z2SOUNDSTARTER_H */ diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 272d7124d65..470b899294a 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -25,7 +25,10 @@ struct Z2StatusMgr : public JASGlobalInstance { void setHour(s32 hour) { mHour = hour; } void setMinute(s32 min) { mMinute = min; } void setWeekday(s32 day) { mWeekday = day; } + f32 getCameraInWaterDepth() { return mUnderwaterDepth; } f32 getCameraInWaterDepthRatio() const { return mCameraInWaterDepthRatio; } + u8 getHour() { return mHour; } + bool isPaused() { return mIsMenuIn; } /* 0x00 */ u8 mHour; /* 0x01 */ u8 mMinute; diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 3288cdd95b1..bab6da8a597 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -303,8 +303,4 @@ public: static const u8* m_branchData; }; -inline Z2SoundStarter* Z2GetSoundStarter() { - return JASGlobalInstance::getInstance(); -} - #endif /* D_D_DEMO_H */ diff --git a/libs/Z2AudioLib/Z2Creature.cpp b/libs/Z2AudioLib/Z2Creature.cpp index b8ca3c564e3..78e20450742 100644 --- a/libs/Z2AudioLib/Z2Creature.cpp +++ b/libs/Z2AudioLib/Z2Creature.cpp @@ -629,7 +629,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID * startCreatureVoice__15Z2CreatureEnemyF10JAISoundIDSc */ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8 param_1) { if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_BOSS_ZANT) { - switch (Z2GetSeqMgr()->field_0xbc) { + switch (Z2GetSeqMgr()->mBgmStatus) { case 0: case 1: break; diff --git a/libs/Z2AudioLib/Z2Param.cpp b/libs/Z2AudioLib/Z2Param.cpp index 64ff29c7aec..e131fa3a6f9 100644 --- a/libs/Z2AudioLib/Z2Param.cpp +++ b/libs/Z2AudioLib/Z2Param.cpp @@ -147,7 +147,7 @@ u8 struct_8045086B = 0x14; #pragma pop /* 8045086C-80450870 0002EC 0004+00 0/0 3/3 0/0 .sdata None */ -extern u32 data_8045086C = 0x01000000; +u8 data_8045086C = 1; /* 80451338-8045133C 000838 0004+00 0/0 1/1 0/0 .sbss MIN_DISTANCE_VOLUME__7Z2Param */ f32 Z2Param::MIN_DISTANCE_VOLUME; diff --git a/libs/Z2AudioLib/Z2SceneMgr.cpp b/libs/Z2AudioLib/Z2SceneMgr.cpp index 9dd92318d55..4c989d77d1d 100644 --- a/libs/Z2AudioLib/Z2SceneMgr.cpp +++ b/libs/Z2AudioLib/Z2SceneMgr.cpp @@ -717,7 +717,7 @@ extern "C" void __ct__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID /* 802B9968-802B9978 2B42A8 0010+00 1/1 0/0 0/0 .text setFieldBgmPlay__8Z2SeqMgrFb */ void Z2SeqMgr::setFieldBgmPlay(bool param_1) { - mFlags = (param_1 & 1U) << 2 | (mFlags & ~4); + mFlags.flag5 = param_1; } /* 802B9978-802B9988 2B42B8 0010+00 1/1 0/0 0/0 .text isActive__12JAIStreamMgrCFv */ diff --git a/libs/Z2AudioLib/Z2SeqMgr.cpp b/libs/Z2AudioLib/Z2SeqMgr.cpp index 3fd22713e41..6df0cb42bb2 100644 --- a/libs/Z2AudioLib/Z2SeqMgr.cpp +++ b/libs/Z2AudioLib/Z2SeqMgr.cpp @@ -4,56 +4,17 @@ // #include "Z2AudioLib/Z2SeqMgr.h" +#include "Z2AudioLib/Z2Calc.h" +#include "Z2AudioLib/Z2Creature.h" #include "Z2AudioLib/Z2Param.h" +#include "Z2AudioLib/Z2SceneMgr.h" +#include "Z2AudioLib/Z2SoundMgr.h" +#include "Z2AudioLib/Z2SoundObjMgr.h" +#include "Z2AudioLib/Z2StatusMgr.h" +#include "JSystem/JAudio2/JAISeq.h" +#include "JSystem/JAudio2/JAISoundChild.h" #include "dol2asm.h" -// -// Types: -// - -struct Z2StatusMgr { - /* 802B61E8 */ void setDemoName(char*); - /* 802B6734 */ void checkDayTime(); -}; - -struct Z2SoundStarter { - /* 802AAEDC */ void setPortData(JAISoundHandle*, u32, u16, s8); - /* 802AAF74 */ void getPortData(JAISoundHandle*, u32, s8); -}; - -struct Z2SoundObjMgr { - /* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16); - /* 802BF994 */ void searchEnemy(); - /* 802C0100 */ void setBattleInit(); - /* 802C0120 */ void checkBattleFinish(); - /* 802C01E4 */ void isTwilightBattle(); -}; - -struct Z2SceneMgr { - /* 802B68E0 */ void setSceneExist(bool); -}; - -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 JAIStreamMgr { - /* 802A4068 */ void stop(u32); -}; - -struct JAISeqMgr { - /* 802A1C90 */ void calc(); - /* 802A1E3C */ void stop(u32); - /* 802A1EFC */ void mixOut(); -}; - // // Forward References: // @@ -145,7 +106,6 @@ extern "C" void _restgpr_29(); extern "C" f32 VOL_BGM_DEFAULT__7Z2Param; extern "C" f32 VOL_BGM_TALKING__7Z2Param; extern "C" f32 VOL_BGM_PAUSING__7Z2Param; -extern "C" extern u32 data_8045086C; extern "C" extern u8 data_80450B48[4]; extern "C" extern u8 data_80450B60[4]; extern "C" extern u8 data_80450B74[4]; @@ -172,6 +132,38 @@ SECTION_SDATA2 static u8 lit_3373[4] = { }; /* 802AEEA0-802AF010 2A97E0 0170+00 0/0 1/1 0/0 .text __ct__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance(this) { + mMainBgmMaster.forceIn(); + mSubBgmMaster.forceIn(); + mBgmPause.forceIn(); + mSceneBgm.forceIn(); + mFanfareMute.forceIn(); + mStreamBgmMaster.forceIn(); + field_0x84.forceIn(); + mWindStone.forceIn(); + mTwilightGateVol = 1.0f; + mAllBgmMaster.forceIn(); + field_0xa4.forceIn(); + field_0xb8 = -1; + resetBattleBgmParams(); + mBgmStatus = 0xff; + mSubBgmStatus = 0xff; + mFanfareCount = 0; + mDekuToadCount = 0; + mFanfareID.setAnonymous(); + field_0xc4 = 0; + mFlags.mRiding = false; + field_0xc8 = 1.0f; + field_0xcc = 1.0f; + mRideCount = 0; + mFlags.flag5 = false; + mFlags.mBattleBgmOff = true; + mFlags.flag6 = false; + mFlags.flag7 = false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -180,6 +172,7 @@ asm Z2SeqMgr::Z2SeqMgr() { #include "asm/Z2AudioLib/Z2SeqMgr/__ct__8Z2SeqMgrFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804559A0-804559A8 003FA0 0004+04 1/1 0/0 0/0 .sdata2 @3559 */ @@ -193,6 +186,89 @@ SECTION_SDATA2 static f32 lit_3559[1 + 1 /* padding */] = { SECTION_SDATA2 static f64 lit_3561 = 4503599627370496.0 /* cast u32 to float */; /* 802AF010-802AF408 2A9950 03F8+00 3/3 5/5 38/38 .text bgmStart__8Z2SeqMgrFUlUll */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { + switch (i_bgmID) { + case -1: + return; + case 0x200005D: + bgmAllUnMute(0x21); + bgmStreamPrepare(0x200005d); + bgmStreamPlay(); + return; + case Z2BGM_BOSSBABA_1: + param_2 = 1; + mMainBgmMaster.forceIn(); + break; + case Z2BGM_GAME_OVER: + if (getMainBgmID() != i_bgmID) { + Z2GetSceneMgr()->setInGame(false); + Z2GetSceneMgr()->setSceneExist(false); + setBattleBgmOff(true); + Z2GetSoundMgr()->getSeqMgr()->stop(0); + Z2GetSoundMgr()->getStreamMgr()->stop(0); + Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL); + mBgmStatus = 0xff; + } + return; + case Z2BGM_LAKE: + if (Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL && + Z2GetLink()->getCurrentPos()->y > -10000.0f) + { + i_bgmID = Z2BGM_RAKKA_HOUSE; + } + break; + case Z2BGM_VS_GANON_01: + bgmAllUnMute(0); + // no break + case Z2BGM_VS_GANON_02: + case Z2BGM_VS_GANON_04: + case Z2BGM_GOMA_BTL02: + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(0); + } + mStreamBgmMaster.forceIn(); + } + + if (Z2GetStatusMgr()->getDemoStatus() == 9) { + if (mMainBgmHandle) { + mMainBgmHandle->stop(0); + } + if (param_2 == 0) { + if (mSubBgmHandle) { + mSubBgmHandle->stop(0); + } + mMainBgmMaster.forceIn(); + } + } else { + bgmStop(0, param_2); + } + + if (i_bgmID == Z2BGM_FIELD_LINK_DAY || i_bgmID == Z2BGM_FIELD_LINK_NIGHT) { + fieldBgmStart(); + } else { + Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL); + mBgmStatus = 0xff; + } + + if (param_2 == 0 && i_count != 0) { + mMainBgmMaster.fadeInFromOut(i_count); + } + + if (i_bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || i_bgmID == Z2BGM_HORSE_BATTLE + || i_bgmID == Z2BGM_VS_GANON_02 || i_bgmID == Z2BGM_TOAL_VILLEGE) + { + changeBgmStatus(0); + } + + if (mFlags.flag7 && !Z2GetStatusMgr()->checkDayTime()) { + field_0xa4.forceOut(); + } else { + field_0xa4.forceIn(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -201,8 +277,26 @@ asm void Z2SeqMgr::bgmStart(u32 param_0, u32 param_1, s32 param_2) { #include "asm/Z2AudioLib/Z2SeqMgr/bgmStart__8Z2SeqMgrFUlUll.s" } #pragma pop +#endif /* 802AF408-802AF49C 2A9D48 0094+00 3/3 5/5 30/30 .text bgmStop__8Z2SeqMgrFUll */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::bgmStop(u32 i_count, s32 param_1) { + if (mMainBgmHandle) { + mMainBgmHandle->stop(i_count); + } + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(i_count); + } + if (param_1 == 0) { + if (mSubBgmHandle) { + mSubBgmHandle->stop(i_count); + } + mMainBgmMaster.forceIn(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -211,6 +305,7 @@ asm void Z2SeqMgr::bgmStop(u32 param_0, s32 param_1) { #include "asm/Z2AudioLib/Z2SeqMgr/bgmStop__8Z2SeqMgrFUll.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039BA08-8039BA08 028068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -470,6 +565,194 @@ SECTION_DATA static void* lit_3900[165] = { }; /* 802AF49C-802AF884 2A9DDC 03E8+00 3/2 6/6 65/65 .text subBgmStart__8Z2SeqMgrFUl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::subBgmStart(u32 i_bgmID) { + if (i_bgmID == -1) { + return; + } + + int count_in, count_out; + switch (i_bgmID) { + case Z2BGM_ITEM_GET: + case Z2BGM_ITEM_GET_MINI: + case Z2BGM_OPEN_BOX: + case Z2BGM_ITEM_GET_ME: + case Z2BGM_HEART_GET: + case Z2BGM_FISHING_BARE: + case Z2BGM_FISHING_GET1: + case Z2BGM_FISHING_GET2: + case Z2BGM_FISHING_GET3: + case Z2BGM_HOWL_TOBIKUSA: + case Z2BGM_HOWL_UMAKUSA: + case Z2BGM_HOWL_ZELDASONG: + case Z2BGM_HOWL_LIGHT_PRLD: + case Z2BGM_LIGHT_PRLD_DUO: + case Z2BGM_SOUL_REQ_HOWL: + case Z2BGM_SOUL_REQ_DUO: + case Z2BGM_HEALING_HOWL: + case Z2BGM_HEALING_DUO: + case Z2BGM_NEW_01_HOWL: + case Z2BGM_NEW_01_DUO: + case Z2BGM_NEW_02_HOWL: + case Z2BGM_NEW_02_DUO: + case Z2BGM_NEW_03_HOWL: + case Z2BGM_NEW_03_DUO: + case Z2BGM_ITEM_GET_INSECT: + case Z2BGM_ITEM_GET_SMELL: + case Z2BGM_ITEM_GET_POU: + case Z2BGM_ITEM_GET_ME_S: + case Z2BGM_KOMONJO_GET_INTRO: + if (getSubBgmID() == Z2BGM_OBACHAN) { + subBgmStop(); + } + mFanfareID = i_bgmID; + return; + case Z2BGM_FACE_OFF_BATTLE: + case Z2BGM_BOSS_OCTAEEL_D02: + case Z2BGM_DRAGON_D02: + case Z2BGM_FACE_OFF_BATTLE2: + case Z2BGM_FACE_OFF_BATTLE3: + count_in = 0; + count_out = -1; + break; + case Z2BGM_LUTERA1: + case Z2BGM_BOSS_SNOWWOMAN_D1: + Z2GetStatusMgr()->setDemoName("force_start"); + count_in = 0; + count_out = struct_80450862; + break; + case Z2BGM_TARO_RESCUE: + count_in = 0; + count_out = 120; + bgmStop(0, 0); + break; + case Z2BGM_OBACHAN: + case Z2BGM_POSTMAN: + if (mSubBgmHandle) { + mSubBgmHandle->stop(0); + } + // no break + case Z2BGM_FISHING_HIT: + case Z2BGM_SNOW_BOARD: + case Z2BGM_RIVER_GAME: + case Z2BGM_RIVER_GAME_00: + setBattleBgmOff(true); + // no break + case Z2BGM_BOSSBABA_0: + case Z2BGM_WILD_GOAT: + case Z2BGM_EVENT01: + case Z2BGM_MAGNE_GORON: + case Z2BGM_MAGNE_GORON_D02: + case Z2BGM_SUMO: + case Z2BGM_DEKUTOAD: + case Z2BGM_RODEO: + case Z2BGM_BOSSFIREMAN_1: + case Z2BGM_SUMO_D1: + case Z2BGM_STATUE_GAME: + case Z2BGM_BOSS_OCTAEEL_D01: + case Z2BGM_HIDDEN_VIL_D1: + case Z2BGM_IB_MBOSS: + case Z2BGM_GG_MBOSS: + case Z2BGM_WCS_GAME: + case Z2BGM_HARAGIGANT_D01: + case Z2BGM_HARAGIGANT_D02: + case Z2BGM_DRAGON_D01: + case Z2BGM_KOROKORO_GAME: + case Z2BGM_YAMIMUSHI_B_D01: + case Z2BGM_GOMA_D01: + case Z2BGM_MINIGAME_WIN01: + case Z2BGM_MINIGAME_WIN02: + count_in = 0; + count_out = 1; + break; + case Z2BGM_COWBOY_GAME: + mAllBgmMaster.forceIn(); + count_in = 0; + count_out = 1; + break; + case Z2BGM_SNOWBOARD_WIN: + case Z2BGM_SNOWBOARD_LOSE: + if (mSubBgmHandle) { + mSubBgmHandle->stop(0); + } + // no break + case Z2BGM_BOOMERAMG_MONKEY: + case Z2BGM_VARIANT: + case Z2BGM_TN_MBOSS: + case Z2BGM_P_ZANT: + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(0); + } + // no break + case Z2BGM_HORSE_BATTLE: + case Z2BGM_TN_MBOSS_LV9: + mStreamBgmMaster.forceIn(); + count_in = 0; + count_out = 1; + break; + case Z2BGM_MAGNE_GORON_D01: + case Z2BGM_DEKUTOAD_D01: + count_in = 0; + count_out = 20; + break; + case Z2BGM_IB_MBOSS_D01: + case Z2BGM_GG_MBOSS_D01: + count_in = 0; + count_out = struct_80450862; + break; + default: + count_in = struct_80450861; + count_out = struct_80450862; + break; + } + + if (i_bgmID == getSubBgmID()) { + if (i_bgmID == Z2BGM_SUMO || i_bgmID == Z2BGM_COWBOY_GAME) { + mSubBgmHandle->stop(0); + mSubBgmHandle.releaseSound(); + } else { + field_0xb8 = -1; + return; + } + } else if (mSubBgmHandle) { + subBgmStop(); + subBgmStopInner(); + } + + Z2GetSoundMgr()->startSound(i_bgmID, &mSubBgmHandle, NULL); + mSubBgmStatus = 0xff; + + switch (i_bgmID) { + case Z2BGM_HORSE_BATTLE: + case Z2BGM_FACE_OFF_BATTLE2: + changeSubBgmStatus(0); + break; + case Z2BGM_VARIANT: + case Z2BGM_TN_MBOSS: + bgmStreamStop(0); + // no break + case Z2BGM_TN_MBOSS_LV9: + mStreamBgmMaster.forceIn(); + // no break + case Z2BGM_RODEO: + changeSubBgmStatus(1); + break; + } + + if (count_in != 0) { + mSubBgmMaster.fadeInFromOut(count_in); + } else { + mSubBgmMaster.forceIn(); + } + + if (count_out >= 0) { + mMainBgmMaster.fadeOut(count_out); + } + + field_0xb8 = -1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -478,6 +761,7 @@ asm void Z2SeqMgr::subBgmStart(u32 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/subBgmStart__8Z2SeqMgrFUl.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039BA08-8039BA08 028068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -650,6 +934,96 @@ SECTION_DATA static void* lit_3988[159] = { }; /* 802AF884-802AF9D0 2AA1C4 014C+00 4/3 4/4 42/42 .text subBgmStop__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::subBgmStop() { + switch (getSubBgmID()) { + case Z2BGM_ITEM_GET: + case Z2BGM_ITEM_GET_MINI: + case Z2BGM_OPEN_BOX: + case Z2BGM_ITEM_GET_ME: + case Z2BGM_HEART_GET: + case Z2BGM_FISHING_BARE: + case Z2BGM_FISHING_GET1: + case Z2BGM_FISHING_GET2: + case Z2BGM_FISHING_GET3: + case Z2BGM_ITEM_GET_INSECT: + case Z2BGM_ITEM_GET_SMELL: + case Z2BGM_ITEM_GET_POU: + case Z2BGM_SNOWBOARD_WIN: + case Z2BGM_SNOWBOARD_LOSE: + case Z2BGM_MINIGAME_WIN01: + case Z2BGM_MINIGAME_WIN02: + case Z2BGM_ITEM_GET_ME_S: + case Z2BGM_KOMONJO_GET_INTRO: + return; + case Z2BGM_LUTERA1: + case Z2BGM_BOSS_SNOWWOMAN_D1: + Z2GetStatusMgr()->setDemoName("force_end"); + field_0xb8 = 0; + break; + case Z2BGM_HIDDEN_VIL_D1: + bgmStart(Z2BGM_HIDDEN_VILLAGE, 0, 0); + // no break + case Z2BGM_BOSSBABA_0: + case Z2BGM_MAGNE_GORON: + case Z2BGM_MAGNE_GORON_D01: + case Z2BGM_MAGNE_GORON_D02: + case Z2BGM_DEKUTOAD: + case Z2BGM_DEKUTOAD_D01: + case Z2BGM_BOSSFIREMAN_1: + case Z2BGM_SUMO_D1: + case Z2BGM_BOSS_OCTAEEL_D01: + case Z2BGM_BOSS_OCTAEEL_D02: + case Z2BGM_VARIANT: + case Z2BGM_DEATH_MOUNTAIN02: + case Z2BGM_SNOW_BOARD: + case Z2BGM_IB_MBOSS_D01: + case Z2BGM_SUMOMO: + case Z2BGM_RIVER_GAME: + case Z2BGM_GG_MBOSS_D01: + case Z2BGM_HARAGIGANT_D01: + case Z2BGM_HARAGIGANT_D02: + case Z2BGM_DRAGON_D01: + case Z2BGM_DRAGON_D02: + case Z2BGM_YAMIMUSHI_B_D01: + case Z2BGM_GOMA_D01: + case Z2BGM_FACE_OFF_BATTLE3: + case Z2BGM_RIVER_GAME_00: + field_0xb8 = 0; + break; + case Z2BGM_FISHING_HIT: + setBattleBgmOff(false); + mSubBgmHandle->stop(23); + field_0xb8 = 55; + break; + case Z2BGM_IB_MBOSS: + field_0xb8 = 420; + mSubBgmHandle->stop(45); + break; + case Z2BGM_TN_MBOSS: + field_0xb8 = 510; + mSubBgmHandle->stop(45); + break; + case Z2BGM_TN_MBOSS_LV9: + field_0xb8 = 360; + mSubBgmHandle->stop(45); + break; + case Z2BGM_GG_MBOSS: + case Z2BGM_P_ZANT: + field_0xb8 = 420; + mSubBgmHandle->stop(45); + break; + case Z2BGM_OBACHAN: + case Z2BGM_POSTMAN: + setBattleBgmOff(false); + // no break + default: + field_0xb8 = 15; + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -658,8 +1032,50 @@ asm void Z2SeqMgr::subBgmStop() { #include "asm/Z2AudioLib/Z2SeqMgr/subBgmStop__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802AF9D0-802AFB94 2AA310 01C4+00 2/2 0/0 0/0 .text subBgmStopInner__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// regalloc +void Z2SeqMgr::subBgmStopInner() { + if (field_0xb8 == -1) { + return; + } + if (!mSubBgmHandle) { + return; + } + + int count = struct_80450862; + switch (getSubBgmID()) { + case Z2BGM_MAGNE_GORON: + case Z2BGM_MAGNE_GORON_D01: + case Z2BGM_DEKUTOAD: + case Z2BGM_DEKUTOAD_D01: + case Z2BGM_SUMO_D1: + case Z2BGM_VARIANT: + case Z2BGM_IB_MBOSS_D01: + count = 10; + break; + case Z2BGM_LUTERA1: + count = 50; + break; + case Z2BGM_RIVER_GAME: + case Z2BGM_RIVER_GAME_00: + count = 33; + setBattleBgmOff(false); + break; + case Z2BGM_SNOW_BOARD: + count = 90; + setBattleBgmOff(false); + break; + } + + mSubBgmHandle->stop(count); + mSubBgmHandle.releaseSound(); + mMainBgmMaster.fadeIn(struct_80450862); + field_0xb8 = -1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -668,8 +1084,54 @@ asm void Z2SeqMgr::subBgmStopInner() { #include "asm/Z2AudioLib/Z2SeqMgr/subBgmStopInner__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802AFB94-802AFDEC 2AA4D4 0258+00 1/1 3/3 46/46 .text bgmStreamPrepare__8Z2SeqMgrFUl */ +#ifdef NONMATCHING +// regalloc +void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) { + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(0); + } + Z2GetSoundMgr()->startSound(i_bgmID, &mStreamBgmHandle, NULL); + mStreamBgmHandle->lockWhenPrepared(); + + switch (i_bgmID) { + case 0x2000010: + mAllBgmMaster.forceIn(); + // no break + case 0x200000f: + return; + case 0x2000014: + Z2GetSceneMgr()->setSceneExist(true); + return; + case 0x2000023: + if (mMainBgmHandle) { + mMainBgmHandle->stop(struct_80450862); + } + return; + case 0x2000038: + if (mMainBgmHandle) { + mMainBgmHandle->stop(0); + } + // no break + case 0x2000003: + case 0x2000047: + case 0x200005f: + mStreamBgmMaster.forceOut(); + return; + case 0x200007c: + mStreamBgmMaster.fadeOut(45); + return; + case 0x200003f: + case 0x200005c: + Z2GetStatusMgr()->setDemoName("force_start"); + break; + } + + mStreamBgmMaster.fadeOut(struct_80450862); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -678,36 +1140,44 @@ asm void Z2SeqMgr::bgmStreamPrepare(u32 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/bgmStreamPrepare__8Z2SeqMgrFUl.s" } #pragma pop +#endif /* 802AFDEC-802AFE18 2AA72C 002C+00 0/0 1/1 0/0 .text bgmStreamCheckReady__8Z2SeqMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int Z2SeqMgr::bgmStreamCheckReady() { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s" +bool Z2SeqMgr::bgmStreamCheckReady() { + if (mStreamBgmHandle) { + return mStreamBgmHandle->isPrepared(); + } else { + return false; + } } -#pragma pop /* 802AFE18-802AFEDC 2AA758 00C4+00 1/1 4/4 46/46 .text bgmStreamPlay__8Z2SeqMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::bgmStreamPlay() { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/bgmStreamPlay__8Z2SeqMgrFv.s" +void Z2SeqMgr::bgmStreamPlay() { + if (mStreamBgmHandle) { + mStreamBgmHandle->unlockIfLocked(); + } + if (getStreamBgmID() == -1) { + if (mMainBgmHandle) { + mMainBgmHandle->stop(30); + } + } else if (getStreamBgmID() == 0x2000000) { + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(); + } + bgmStart(Z2BGM_MENU_SELECT, 0, 0); + } } -#pragma pop /* 802AFEDC-802AFF8C 2AA81C 00B0+00 2/2 1/1 27/27 .text bgmStreamStop__8Z2SeqMgrFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::bgmStreamStop(u32 param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/bgmStreamStop__8Z2SeqMgrFUl.s" +void Z2SeqMgr::bgmStreamStop(u32 i_count) { + if (getStreamBgmID() == 0x200003f || getStreamBgmID() == 0x200005c) { + Z2GetStatusMgr()->setDemoName("force_end"); + } + if (mStreamBgmHandle) { + mStreamBgmHandle->stop(i_count); + } + mStreamBgmHandle.releaseSound(); } -#pragma pop /* ############################################################################################## */ /* 803CA308-803CA33C -00001 0034+00 1/1 0/0 0/0 .data @4739 */ @@ -774,6 +1244,436 @@ SECTION_SDATA2 static f32 lit_4738[1 + 1 /* padding */] = { SECTION_SDATA2 static f64 lit_4741 = 4503601774854144.0 /* cast s32 to float */; /* 802AFF8C-802B1DF4 2AA8CC 1E68+00 5/4 8/7 26/26 .text changeBgmStatus__8Z2SeqMgrFl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::changeBgmStatus(s32 param_0) { + if (!mMainBgmHandle) { + return; + } + + u32 count = 0; + f32 volume1, volume2, volume3, volume4; + switch (getMainBgmID()) { + case Z2BGM_TOAL_VILLEGE: + if (param_0 == mBgmStatus) { + return; + } + if (mBgmStatus != 0xff) { + count = 60; + } + if (param_0 == 1) { + volume1 = 0.65f; + volume2 = 1.0f; + volume3 = 0.0f; + count = 30; + } else { + volume1 = 0.0f; + volume2 = 0.0f; + volume3 = 1.0f; + } + setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume3, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); + break; + case Z2BGM_HORSE_BATTLE: + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, 0, -1.0f, -1.0f); + break; + case Z2BGM_DUNGEON_FOREST: + bool mute = false; + switch (param_0) { + case 4: + case 0xc: + i_muteSceneBgm(struct_80450860, 0.0f); + // no break + case 7: + mute = true; + break; + case 2: + Z2GetSoundObjMgr()->setForceBattleArea(true, 1500, 5000, 10000); + break; + } + if (!mute) { + i_unMuteSceneBgm(struct_80450860); + } + break; + case Z2BGM_DUNGEON_LV2: + switch (param_0) { + case 0xe: + case 0x10: + case 0x11: + subBgmStart(Z2BGM_DEATH_MOUNTAIN02); + return; + default: + if (getSubBgmID() == Z2BGM_DEATH_MOUNTAIN02) { + subBgmStop(); + } + return; + } + break; + case Z2BGM_DUNGEON_LV5: + if (mBgmStatus != 0xff) { + count = 45; + } + if (param_0 == 2 || param_0 == 1) { + volume1 = 0.0f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } + setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f); + if (param_0 == 4) { + i_muteSceneBgm(60, 0.29f); + } else { + i_unMuteSceneBgm(60); + } + break; + case Z2BGM_CASTLE_TOWN: + if (mBgmStatus != 0xff) { + count = 45; + } + switch (param_0) { + case 0: + case 1: + case 5: + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + break; + case 2: + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + break; + case 3: + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, count, -1.0f, -1.0f); + break; + case 4: + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + break; + } + if (param_0 == 5) { + i_muteSceneBgm(count, 0.35f); + mFlags.flag6 = false; + } else { + i_unMuteSceneBgm(count); + if (param_0 < 2) { + mFlags.flag6 = false; + } else { + mFlags.flag6 = true; + } + } + break; + case Z2BGM_HOLY_FOREST: + if (mBgmStatus != 0xff) { + count = 45; + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 5, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); + } + if (param_0 == 1) { + volume1 = 0.6f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } + setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f); + break; + case Z2BGM_LUTERA2: + if (param_0 == 0) { + i_muteSceneBgm(0, 0.5f); + } else if (param_0 == 1) { + i_unMuteSceneBgm(80); + } + break; + case Z2BGM_DEMO08: + if (param_0 == 1) { + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, 90, -1.0f, -1.0f); + } else if (param_0 == 2) { + bgmStop(90, 0); + } else { + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_DEMO10: + if (param_0 == 1) { + setChildTrackVolume(&mMainBgmHandle, 0, 0.3f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.3f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.6f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 0.6f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 0.6f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, 143, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_BOSS_SNOWWOMAN_1: + if (param_0 == 1) { + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_DUNGEON_LV8: + if (param_0 == mBgmStatus) { + return; + } + if (mBgmStatus != 0xff) { + count = 45; + } + if (param_0 == 0 || param_0 == 0xb) { + volume1 = 1.0f; + volume2 = 0.0f; + volume3 = 0.0f; + volume4 = 0.0f; + } else if (param_0 >= 100) { + volume1 = 0.0f; + volume2 = 1.0f; + f32 volume; + if (param_0 < 200) { + volume = 1.0f; + } else if (param_0 > 3100) { + volume = 0.0f; + } else { + volume = Z2Calc::getParamByExp(param_0, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_1); + } + volume3 = volume; + if (param_0 < 200) { + volume = 1.0f; + } else if (param_0 > 1600) { + volume = 0.0f; + } else { + volume = Z2Calc::getParamByExp(param_0, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_1); + } + volume4 = volume; + } else { + volume1 = 0.0f; + volume2 = 1.0f; + volume3 = 0.0f; + volume4 = 0.0f; + } + setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume3, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume3, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume4, count, -1.0f, -1.0f); + break; + case Z2BGM_BOSS_ZANT: + if (param_0 == 0xd) { + mSceneBgm.move(0.3f, 134); + } else { + mSceneBgm.forceIn(); + if (param_0 > 6) { + param_0 = (param_0 - 7) * 2; + } else { + param_0 = param_0 * 2 - 1; + } + } + break; + case Z2BGM_FORTUNE: + if (param_0 == 1) { + i_muteSceneBgm(45, 0.5f); + } else { + i_unMuteSceneBgm(45); + } + break; + case Z2BGM_DUNGEON_LV9_02: + if (mBgmStatus != 0xff) { + count = 30; + } + if (param_0 == 0xc) { + volume4 = 1.0f; + volume1 = 0.0f; + volume2 = 0.5f; + volume3 = 0.0f; + } else if (param_0 == 8) { + volume4 = 0.0f; + volume1 = 0.5f; + volume2 = 1.0f; + volume3 = 0.8f; + } else if (param_0 > 3000) { + volume4 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 1.0f, 0.0f, false); + volume1 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + volume2 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.5f, 1.0f, false); + volume3 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + } + setChildTrackVolume(&mMainBgmHandle, 0, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume3, count, -1.0f, -1.0f); + break; + case Z2BGM_VS_GANON_02: + if (param_0 == mBgmStatus) { + return; + } + if (mBgmStatus != 0xff) { + count = 45; + } + if (param_0 == 1) { + volume1 = 0.0f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } + setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f); + break; + case Z2BGM_TOAL_NIGHT: + case Z2BGM_FILONE_FOREST: + if (param_0 == 1) { + i_muteSceneBgm(45, 0.5f); + } else if (param_0 == 2) { + i_muteSceneBgm(0, 0.5f); + } else { + i_unMuteSceneBgm(45); + } + break; + case Z2BGM_VS_GANON_04: + if (param_0 == mBgmStatus) { + return; + } + if (param_0 >= 4) { + count = 50; + if (param_0 == 4) { + volume4 = 1.0f; + volume1 = 0.0f; + } else if (param_0 == 5) { + volume4 = 0.0f; + volume1 = 1.0f; + } else if (param_0 == 6) { + volume4 = 0.0f; + volume1 = 0.0f; + } else if (param_0 == 7) { + volume4 = 0.0f; + volume1 = 0.0f; + count = 0; + } else if (param_0 == 8) { + volume4 = 1.0f; + volume1 = 1.0f; + count = 0; + } + setChildTrackVolume(&mMainBgmHandle, 12, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume1, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 15, volume1, count, -1.0f, -1.0f); + } + break; + } + + Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, param_0, -1); + mBgmStatus = param_0 & 0xff; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -782,9 +1682,180 @@ asm void Z2SeqMgr::changeBgmStatus(s32 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/changeBgmStatus__8Z2SeqMgrFl.s" } #pragma pop +#endif /* 802B1DF4-802B299C 2AC734 0BA8+00 2/2 3/3 31/31 .text changeSubBgmStatus__8Z2SeqMgrFl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { + if (!mSubBgmHandle) { + return; + } + + u32 count = 0; + bool bvar2 = true; + switch (getSubBgmID()) { + case Z2BGM_DEKUTOAD: + if (param_0 == 1 && mSubBgmStatus == 2) { + mSubBgmMaster.forceOut(); + mDekuToadCount = 100; + } else if (param_0 == 3) { + mSubBgmMaster.forceOut(); + mDekuToadCount = 30; + } + break; + case Z2BGM_HORSE_BATTLE: + if (param_0 == mSubBgmStatus) { + return; + } + if (param_0 != 2) { + bvar2 = false; + if (mSubBgmStatus != 0xff) { + count = 40; + } + } + if (param_0 == 1) { + setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 1, 0.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 60, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); + } + break; + case Z2BGM_FACE_OFF_BATTLE2: + if (param_0 == mSubBgmStatus) { + return; + } + bvar2 = false; + if (mSubBgmStatus != 0xff) { + count = 30; + } + if (param_0 == 1) { + setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 10, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); + } + break; + case Z2BGM_RODEO: + if (param_0 == mSubBgmStatus) { + break; + } + if (param_0 == 1) { + if (mSubBgmStatus != 0xff) { + count = 60; + } + setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, count, -1.0f, -1.0f); + } else if (param_0 == 2) { + if (mSubBgmStatus != 0xff) { + count = 20; + } + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, count, -1.0f, -1.0f); + } + break; + case Z2BGM_VARIANT: + switch (param_0) { + case 1: + switch (mSubBgmStatus) { + case 2: + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 15, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, 15, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, 15, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, 15, -1.0f, -1.0f); + break; + case 3: + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1); + return; + } + break; + case 2: + setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 1.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, 10, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, 10, -1.0f, -1.0f); + break; + } + break; + case Z2BGM_BATTLE_TWILIGHT: + if (mSubBgmStatus == param_0) { + return; + } + if (mSubBgmStatus != 0xff) { + count = 25; + } + bvar2 = false; + if (param_0 == 2) { + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + } else if (param_0 == 3) { + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 6, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 7, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + } + break; + case Z2BGM_BATTLE_NORMAL: + return; + } + + if (bvar2) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, param_0, -1); + } + mSubBgmStatus = param_0 & 0xff; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -793,8 +1864,28 @@ asm void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/changeSubBgmStatus__8Z2SeqMgrFl.s" } #pragma pop +#endif /* 802B299C-802B2A88 2AD2DC 00EC+00 0/0 1/1 0/0 .text onVariantBgmJumpEnd__8Z2SeqMgrFb */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::onVariantBgmJumpEnd(bool param_0) { + if (param_0) { + u32 count = 0; + if (mSubBgmStatus == 3) { + count = 45; + mSubBgmStatus = 1; + } + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 0, -1.0f, -1.0f); + } + Z2GetSoundMgr()->getSeqMgr()->calc(); + Z2GetSoundMgr()->getSeqMgr()->mixOut(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -803,8 +1894,38 @@ asm void Z2SeqMgr::onVariantBgmJumpEnd(bool param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/onVariantBgmJumpEnd__8Z2SeqMgrFb.s" } #pragma pop +#endif /* 802B2A88-802B2CA4 2AD3C8 021C+00 1/1 0/0 9/9 .text changeFishingBgm__8Z2SeqMgrFl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::changeFishingBgm(s32 param_0) { + switch (param_0) { + case 0: + if (getSubBgmID() == Z2BGM_FISHING_HIT) { + subBgmStop(); + } + i_unMuteSceneBgm(struct_80450862); + break; + case 1: + if (getSubBgmID() == Z2BGM_FISHING_HIT) { + subBgmStop(); + } + i_muteSceneBgm(2, 0.5f); + break; + case 2: + subBgmStart(Z2BGM_FISHING_HIT); + i_muteSceneBgm(1, 0.0f); + break; + case 4: + if (getSubBgmID() == Z2BGM_FISHING_HIT) { + subBgmStop(); + } + i_muteSceneBgm(1, 0.0f); + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -813,8 +1934,20 @@ asm void Z2SeqMgr::changeFishingBgm(s32 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/changeFishingBgm__8Z2SeqMgrFl.s" } #pragma pop +#endif /* 802B2CA4-802B2D64 2AD5E4 00C0+00 0/0 1/1 0/0 .text talkInBgm__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::talkInBgm() { + if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c + || getMainBgmID() == Z2BGM_WCS_D01) + { + return; + } + mBgmPause.move(Z2Param::VOL_BGM_TALKING, 2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -823,8 +1956,15 @@ asm void Z2SeqMgr::talkInBgm() { #include "asm/Z2AudioLib/Z2SeqMgr/talkInBgm__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B2D64-802B2DAC 2AD6A4 0048+00 0/0 1/1 0/0 .text talkOutBgm__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::talkOutBgm() { + mBgmPause.move(Z2Param::VOL_BGM_DEFAULT, 2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -833,8 +1973,15 @@ asm void Z2SeqMgr::talkOutBgm() { #include "asm/Z2AudioLib/Z2SeqMgr/talkOutBgm__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B2DAC-802B2DF4 2AD6EC 0048+00 0/0 1/1 0/0 .text menuInBgm__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::menuInBgm() { + mBgmPause.move(Z2Param::VOL_BGM_PAUSING, 2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -843,8 +1990,15 @@ asm void Z2SeqMgr::menuInBgm() { #include "asm/Z2AudioLib/Z2SeqMgr/menuInBgm__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B2DF4-802B2E3C 2AD734 0048+00 0/0 1/1 0/0 .text menuOutBgm__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::menuOutBgm() { + mBgmPause.move(Z2Param::VOL_BGM_DEFAULT, 2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -853,8 +2007,84 @@ asm void Z2SeqMgr::menuOutBgm() { #include "asm/Z2AudioLib/Z2SeqMgr/menuOutBgm__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B2E3C-802B327C 2AD77C 0440+00 1/1 0/0 0/0 .text fanfareFramework__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::fanfareFramework() { + switch (mFanfareID) { + case Z2BGM_OPEN_BOX: + mFanfareCount = 150; + // no break + case Z2BGM_KOMONJO_GET_INTRO: + Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); + mFanfareMute.fadeOut(1); + mFanfareID.setAnonymous(); + break; + case Z2BGM_ITEM_GET_ME: + if (mFanfareCount == 0) { + Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); + mFanfareCount = 25; + } + if (mFanfareCount == 1) { + mFanfareMute.fadeOut(1); + mFanfareID.setAnonymous(); + mFanfareCount = 0; + } + break; + case Z2BGM_FISHING_BARE: + case Z2BGM_FISHING_GET1: + case Z2BGM_FISHING_GET2: + case Z2BGM_FISHING_GET3: + changeFishingBgm(0); + // no break + case Z2BGM_ITEM_GET: + case Z2BGM_ITEM_GET_MINI: + case Z2BGM_HEART_GET: + case Z2BGM_ITEM_GET_INSECT: + case Z2BGM_ITEM_GET_SMELL: + case Z2BGM_ITEM_GET_POU: + case Z2BGM_ITEM_GET_ME_S: + if (mFanfareCount == 0) { + Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); + mFanfareMute.fadeOut(1); + mFanfareID.setAnonymous(); + } + break; + case Z2BGM_HOWL_TOBIKUSA: + case Z2BGM_HOWL_UMAKUSA: + case Z2BGM_HOWL_ZELDASONG: + case Z2BGM_HOWL_LIGHT_PRLD: + case Z2BGM_LIGHT_PRLD_DUO: + case Z2BGM_SOUL_REQ_HOWL: + case Z2BGM_SOUL_REQ_DUO: + case Z2BGM_HEALING_HOWL: + case Z2BGM_HEALING_DUO: + case Z2BGM_NEW_01_HOWL: + case Z2BGM_NEW_01_DUO: + case Z2BGM_NEW_02_HOWL: + case Z2BGM_NEW_02_DUO: + case Z2BGM_NEW_03_HOWL: + case Z2BGM_NEW_03_DUO: + if (mFanfareCount == 0) { + mFanfareCount = 50; + mFanfareMute.fadeOut(30); + } else if (mFanfareCount == 1) { + Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); + mFanfareID.setAnonymous(); + } + break; + } + + if (!isItemGetDemo() && mFanfareMute.getDest() != 1.0f) { + mFanfareMute.fadeIn(struct_80450861); + } + if (mFanfareCount != 0) { + mFanfareCount--; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -863,6 +2093,7 @@ asm void Z2SeqMgr::fanfareFramework() { #include "asm/Z2AudioLib/Z2SeqMgr/fanfareFramework__8Z2SeqMgrFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803CA33C-803CA3F8 -00001 00BC+00 1/1 0/0 0/0 .data @5219 */ @@ -968,6 +2199,52 @@ SECTION_DATA static void* lit_5218[47] = { }; /* 802B327C-802B3318 2ADBBC 009C+00 2/0 1/1 0/0 .text stopWolfHowlSong__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::stopWolfHowlSong() { + switch (mFanfareID) { + case Z2BGM_HOWL_TOBIKUSA: + case Z2BGM_HOWL_UMAKUSA: + case Z2BGM_HOWL_ZELDASONG: + case Z2BGM_HOWL_LIGHT_PRLD: + case Z2BGM_LIGHT_PRLD_DUO: + case Z2BGM_SOUL_REQ_HOWL: + case Z2BGM_SOUL_REQ_DUO: + case Z2BGM_HEALING_HOWL: + case Z2BGM_HEALING_DUO: + case Z2BGM_NEW_01_HOWL: + case Z2BGM_NEW_01_DUO: + case Z2BGM_NEW_02_HOWL: + case Z2BGM_NEW_02_DUO: + case Z2BGM_NEW_03_HOWL: + case Z2BGM_NEW_03_DUO: + mFanfareID.setAnonymous(); + mFanfareCount = 0; + break; + } + + if (mFanfareHandle) { + switch (mFanfareHandle->getID()) { + case Z2BGM_HOWL_TOBIKUSA: + case Z2BGM_HOWL_UMAKUSA: + case Z2BGM_HOWL_ZELDASONG: + case Z2BGM_HOWL_LIGHT_PRLD: + case Z2BGM_LIGHT_PRLD_DUO: + case Z2BGM_SOUL_REQ_HOWL: + case Z2BGM_SOUL_REQ_DUO: + case Z2BGM_HEALING_HOWL: + case Z2BGM_HEALING_DUO: + case Z2BGM_NEW_01_HOWL: + case Z2BGM_NEW_01_DUO: + case Z2BGM_NEW_02_HOWL: + case Z2BGM_NEW_02_DUO: + case Z2BGM_NEW_03_HOWL: + case Z2BGM_NEW_03_DUO: + mFanfareHandle->stop(30); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -976,8 +2253,18 @@ asm void Z2SeqMgr::stopWolfHowlSong() { #include "asm/Z2AudioLib/Z2SeqMgr/stopWolfHowlSong__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B3318-802B3398 2ADC58 0080+00 0/0 1/1 0/0 .text setHeightVolMod__8Z2SeqMgrFbUl */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setHeightVolMod(bool param_0, u32 i_count) { + mFlags.flag6 = param_0; + if (!param_0) { + field_0x84.fadeIn(i_count); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -986,16 +2273,12 @@ asm void Z2SeqMgr::setHeightVolMod(bool param_0, u32 param_1) { #include "asm/Z2AudioLib/Z2SeqMgr/setHeightVolMod__8Z2SeqMgrFbUl.s" } #pragma pop +#endif /* 802B3398-802B33A8 2ADCD8 0010+00 0/0 1/1 0/0 .text setTimeProcVolMod__8Z2SeqMgrFbUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::setTimeProcVolMod(bool param_0, u32 param_1) { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/setTimeProcVolMod__8Z2SeqMgrFbUl.s" +void Z2SeqMgr::setTimeProcVolMod(bool param_0, u32 i_count) { + mFlags.flag7 = param_0; } -#pragma pop /* ############################################################################################## */ /* 80450870-80450874 0002F0 0004+00 1/1 0/0 0/0 .sdata sDeathMtBottom */ @@ -1005,11 +2288,8 @@ SECTION_SDATA static f32 sDeathMtBottom = -1000.0f; SECTION_SDATA static f32 sDeathMtTop = 3650.0f; /* 80450878-80450880 0002F8 0004+04 1/1 0/0 0/0 .sdata sUnderWaterDepthMax */ -SECTION_SDATA static f32 sUnderWaterDepthMax[1 + 1 /* padding */] = { - 3500.0f, - /* padding */ - 0.0f, -}; +SECTION_SDATA static f32 sUnderWaterDepthMax = 3500.0f; +SECTION_SDATA static f32 pad = 0.0f; /* 804559F0-804559F4 003FF0 0004+00 1/1 0/0 0/0 .sdata2 @5673 */ SECTION_SDATA2 static f32 lit_5673 = -10500.0f; @@ -1039,6 +2319,157 @@ SECTION_SDATA2 static f32 lit_5680 = -3000.0f; SECTION_SDATA2 static f32 lit_5681 = 900.0f; /* 802B33A8-802B3EAC 2ADCE8 0B04+00 0/0 1/1 0/0 .text processBgmFramework__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::processBgmFramework() { + fanfareFramework(); + battleBgmFramework(); + mbossBgmMuteProcess(); + fieldBgmFramework(); + + if (!mStreamBgmHandle && mStreamBgmMaster.getDest() != 1.0f) { + mStreamBgmMaster.fadeIn(struct_80450861); + } + + if (field_0xb8 != -1) { + if (field_0xb8 > 0) { + field_0xb8--; + } else { + subBgmStopInner(); + field_0xb8 = -1; + } + } else if (!mSubBgmHandle && mMainBgmMaster.getDest() != 1.0f) { + mMainBgmMaster.fadeIn(struct_80450861); + } + + if (mFlags.flag7) { + if (Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 1.0f) { + field_0xa4.fadeIn(600); + } else if (!Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 0.0f) { + field_0xa4.fadeOut(600); + } + } + + if (mFlags.flag6 && Z2GetSceneMgr()->isSceneExist() + && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL) + { + f32 link_y = Z2GetLink()->getCurrentPos()->y; + f32 volume; + switch (getMainBgmID()) { + case Z2BGM_DEATH_MOUNTAIN01: + volume = Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + break; + case Z2BGM_RAKKA_HOUSE: + if (link_y < -10500.0f) { + bgmStart(Z2BGM_LAKE, 150, 0); + field_0x84.forceIn(); + } else if (link_y < -7500.0f) { + volume = Z2Calc::getParamByExp(link_y, -10500.0f, -7500.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + } + break; + case Z2BGM_FIELD_LINK_DAY: + case Z2BGM_FIELD_LINK_NIGHT: + case Z2BGM_ZORA_VILLAGE: + case Z2BGM_FISHING: + case Z2BGM_LAKE: + f32 depth = Z2GetStatusMgr()->getCameraInWaterDepth(); + if (depth > sUnderWaterDepthMax) { + field_0x84.forceOut(); + } else if (depth > 0.0f) { + volume = Z2Calc::getParamByExp(depth, sUnderWaterDepthMax, 0.0f, 0.3f, 0.1f, 1.0f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + } else if (field_0x84.getDest() != 1.0f) { + field_0x84.fadeIn(30); + } + break; + case Z2BGM_SNOW_MOUNTAIN: + if (Z2GetSceneMgr()->getCurrentRoomNum() == 0) { + if (link_y > -1500.0f) { + field_0x84.move(0.3f, 0); + } else if (link_y > -13000.0f) { + volume = Z2Calc::getParamByExp(link_y, -1500.0f, -13000.0f, 0.3f, 0.3f, 1.0f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + } else { + field_0x84.forceIn(); + } + } else if (Z2GetSceneMgr()->getCurrentRoomNum() == 1) { + if (link_y > -4500.0f) { + field_0x84.fadeOut(30); + } else if (link_y > -45000.0f) { + volume = Z2Calc::getParamByExp(link_y, -3000.0f, -45000.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + } else { + field_0x84.forceIn(); + } + } else if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) { + if (link_y > 900.0f) { + field_0x84.forceOut(); + } else if (link_y > -1500.0f) { + volume = Z2Calc::getParamByExp(link_y, 900.0f, -1500.0f, 0.3f, 0.0f, 0.3f, + Z2Calc::CURVE_SIGN_0); + field_0x84.move(volume, 0); + } else { + field_0x84.move(0.3f, 0); + } + } + break; + case Z2BGM_DUNGEON_LV9_02: + changeBgmStatus(link_y); + break; + } + } + + if (mDekuToadCount != 0) { + mDekuToadCount--; + if (getSubBgmID() == Z2BGM_DEKUTOAD) { + if (mDekuToadCount == 60) { + mSubBgmMaster.fadeIn(60); + mDekuToadCount = 0; + } else if (mDekuToadCount == 0) { + mSubBgmMaster.fadeIn(30); + } + } + } + + mAllBgmMaster.calc(); + mBgmPause.calc(); + mFanfareMute.calc(); + mSceneBgm.calc(); + mMainBgmMaster.calc(); + mSubBgmMaster.calc(); + mStreamBgmMaster.calc(); + field_0x84.calc(); + mWindStone.calc(); + field_0xa4.calc(); + + f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get() + * mWindStone.get() * mTwilightGateVol; + if (mMainBgmHandle) { + f32 volume = 1.0f; + if (getMainBgmID() != Z2BGM_GAME_OVER) { + volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get() + * mStreamBgmMaster.get() * field_0x84.get() * field_0xa4.get(); + } + mMainBgmHandle->getAuxiliary().moveVolume(volume, 0); + } + if (mSubBgmHandle) { + f32 volume = base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get(); + mSubBgmHandle->getAuxiliary().moveVolume(volume, 0); + } + if (mStreamBgmHandle) { + f32 volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get(); + mStreamBgmHandle->getAuxiliary().moveVolume(volume, 0); + } + i_setWindStoneVol(1.0f, 30); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1047,62 +2478,137 @@ asm void Z2SeqMgr::processBgmFramework() { #include "asm/Z2AudioLib/Z2SeqMgr/processBgmFramework__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B3EAC-802B3F40 2AE7EC 0094+00 0/0 2/2 0/0 .text checkBgmIDPlaying__8Z2SeqMgrFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool Z2SeqMgr::checkBgmIDPlaying(u32 param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/checkBgmIDPlaying__8Z2SeqMgrFUl.s" +bool Z2SeqMgr::checkBgmIDPlaying(u32 i_bgmID) { + if (getMainBgmID() == i_bgmID) { + return true; + } + if (getSubBgmID() == i_bgmID) { + return true; + } + if (getStreamBgmID() == i_bgmID) { + return true; + } + return false; } -#pragma pop /* 802B3F40-802B3FEC 2AE880 00AC+00 1/1 0/0 0/0 .text * getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei */ +#ifdef NONMATCHING +// matches with literals +f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* i_handle, int i_track) { + f32 volume = 0.0f; + if (*i_handle) { + JAISeq* seq = i_handle->getSound()->asSeq(); + if (seq != NULL && seq->getChildTrack(i_track) != NULL) { + JAISoundChild* child = seq->getChild(i_track); + if (child != NULL) { + volume = child->mMove.mParams.mVolume; + } + } + } + return volume; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SeqMgr::getChildTrackVolume(JAISoundHandle* param_0, int param_1) { +asm f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* param_0, int param_1) { nofralloc #include "asm/Z2AudioLib/Z2SeqMgr/getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei.s" } #pragma pop +#endif /* 802B3FEC-802B4128 2AE92C 013C+00 9/9 2/2 0/0 .text * setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* i_handle, int i_track, f32 i_volume, + u32 i_count, f32 i_pan, f32 i_dolby) { + if (!*i_handle) { + return; + } + JAISeq* seq = (*i_handle)->asSeq(); + if (seq == NULL) { + return; + } + if (seq->getChildTrack(i_track) == NULL) { + return; + } + JAISoundChild* child = seq->getChild(i_track); + if (child == NULL) { + return; + } + if (i_volume > 1.0f) { + i_volume = 1.0f; + } else if (i_volume < 0.0f) { + i_volume = 0.0f; + } + child->mMove.moveVolume(i_volume, i_count); + if (i_pan != -1.0f) { + child->mMove.movePan(i_pan, i_count); + } + if (i_dolby != -1.0f) { + child->mMove.moveDolby(i_dolby, i_count); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* param_0, int param_1, f32 param_2, - u32 param_3, f32 param_4, f32 param_5) { +asm void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* i_handle, int param_1, f32 i_volume, + u32 i_count, f32 i_pan, f32 i_dolby) { nofralloc #include "asm/Z2AudioLib/Z2SeqMgr/setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff.s" } #pragma pop +#endif /* 802B4128-802B4164 2AEA68 003C+00 1/1 1/1 0/0 .text resetBattleBgmParams__8Z2SeqMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::resetBattleBgmParams() { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/resetBattleBgmParams__8Z2SeqMgrFv.s" +void Z2SeqMgr::resetBattleBgmParams() { + if (Z2GetSoundObjMgr() != NULL) { + Z2GetSoundObjMgr()->setForceBattleArea(false, 700, 1100, 1500); + } } -#pragma pop /* 802B4164-802B421C 2AEAA4 00B8+00 4/4 3/3 10/10 .text setBattleBgmOff__8Z2SeqMgrFb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::setBattleBgmOff(bool param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/setBattleBgmOff__8Z2SeqMgrFb.s" +void Z2SeqMgr::setBattleBgmOff(bool i_value) { + if (mFlags.mBattleBgmOff != i_value && i_value && + (getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT)) + { + stopBattleBgm(struct_80450862, struct_80450861); + } + mFlags.mBattleBgmOff = i_value; } -#pragma pop /* 802B421C-802B43D0 2AEB5C 01B4+00 0/0 1/1 0/0 .text setBattleSearched__8Z2SeqMgrFb */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setBattleSearched(bool i_value) { + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() + && mFlags.mBattleSearched != i_value && mBattleSeqState != 3) + { + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && mBattleSeqState == 1) { + if (i_value) { + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, struct_80450864, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, struct_80450864, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, struct_80450864, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, struct_80450864, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, struct_80450865, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, struct_80450865, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, struct_80450865, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, struct_80450865, -1.0f, -1.0f); + } + } + mFlags.mBattleSearched = i_value; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1111,22 +2617,30 @@ asm void Z2SeqMgr::setBattleSearched(bool param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/setBattleSearched__8Z2SeqMgrFb.s" } #pragma pop +#endif /* 802B43D0-802B43E0 2AED10 0010+00 3/3 0/0 0/0 .text setBattleDistIgnore__8Z2SeqMgrFb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::setBattleDistIgnore(bool param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/setBattleDistIgnore__8Z2SeqMgrFb.s" +void Z2SeqMgr::setBattleDistIgnore(bool i_value) { + mFlags.mBattleDistIgnore = i_value; } -#pragma pop /* ############################################################################################## */ /* 80455A14-80455A18 004014 0004+00 1/1 0/0 0/0 .sdata2 @5913 */ SECTION_SDATA2 static f32 lit_5913 = 2.0f / 5.0f; /* 802B43E0-802B4498 2AED20 00B8+00 0/0 2/2 0/0 .text setBattleGhostMute__8Z2SeqMgrFb */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setBattleGhostMute(bool i_value) { + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { + if (i_value) { + mSubBgmMaster.move(1.0f, 5); + } else { + mSubBgmMaster.move(0.4f, 5); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1135,18 +2649,131 @@ asm void Z2SeqMgr::setBattleGhostMute(bool param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/setBattleGhostMute__8Z2SeqMgrFb.s" } #pragma pop +#endif /* 802B4498-802B4844 2AEDD8 03AC+00 0/0 1/1 0/0 .text setBattleDistState__8Z2SeqMgrFUc */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setBattleDistState(u8 i_state) { + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) { + if (!mFlags.mBattleDistIgnore) { + if (i_state < 2 && mBattleSeqCount != 0) { + mBattleSeqCount = 0; + if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT + || getSubBgmID() == Z2BGM_BATTLE_NORMAL) + { + mSubBgmHandle->getFader().fadeIn(10); + mMainBgmMaster.fadeOut(10); + } + } + if ((Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_NORMAL) || + (!Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_TWILIGHT)) + { + mSubBgmHandle->stop(30); + mSubBgmHandle->releaseHandle(); + } + if (Z2GetSoundObjMgr()->isTwilightBattle() || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { + switch (i_state) { + case 0: + if (mBattleSeqState == 0) { + startBattleBgm(true); + } + break; + case 1: + if (mBattleSeqState == 0) { + startBattleBgm(true); + } + break; + case 3: + if (mBattleSeqState != 0) { + stopBattleBgm(25, 25); + } + break; + } + } else if (getMainBgmID() != Z2BGM_FIELD_LINK_DAY) { + switch (i_state) { + case 0: + if (mBattleSeqState == 0) { + startBattleBgm(true); + } else if (mBattleSeqState == 1) { + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, struct_80450866, -1.0f, -1.0f); + } + break; + case 1: + if (mBattleSeqState == 0) { + startBattleBgm(true); + } else if (mBattleSeqState == 1) { + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, struct_80450867, -1.0f, -1.0f); + } + break; + case 2: + if (mBattleSeqState == 1) { + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, struct_80450867, -1.0f, -1.0f); + } + break; + case 3: + if (mBattleSeqState == 1 || mBattleSeqState == 2) { + stopBattleBgm(struct_80450862, struct_80450861); + } + break; + } + } + } + mBattleDistState = i_state; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SeqMgr::setBattleDistState(u8 param_0) { +asm void Z2SeqMgr::setBattleDistState(u8 i_state) { nofralloc #include "asm/Z2AudioLib/Z2SeqMgr/setBattleDistState__8Z2SeqMgrFUc.s" } #pragma pop +#endif /* 802B4844-802B4AFC 2AF184 02B8+00 1/1 3/3 1/1 .text setBattleSeqState__8Z2SeqMgrFUc */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setBattleSeqState(u8 i_state) { + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != i_state) { + if (i_state == 0) { + stopBattleBgm(struct_80450862, struct_80450861); + } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && + !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) + { + switch (i_state) { + case 2: + if (mBattleSeqState == 1) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1); + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, 0, -1.0f, -1.0f); + } + if (mBattleSeqCount != 0) { + mBattleSeqCount = 0; + mSubBgmHandle->getFader().fadeIn(10); + mMainBgmMaster.fadeOut(10); + } + break; + case 3: + mMainBgmMaster.forceOut(); + mSubBgmMaster.forceIn(); + if (mBattleSeqState == 1) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 3, -1); + } else if (mBattleSeqState == 2) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 2, -1); + } + break; + } + mBattleSeqState = i_state; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1155,8 +2782,20 @@ asm void Z2SeqMgr::setBattleSeqState(u8 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/setBattleSeqState__8Z2SeqMgrFUc.s" } #pragma pop +#endif /* 802B4AFC-802B4BD0 2AF43C 00D4+00 0/0 4/4 0/0 .text setBattleLastHit__8Z2SeqMgrFUc */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::setBattleLastHit(u8 param_0) { + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { + setBattleDistIgnore(true); + mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, struct_80450868); + field_0xc1 = struct_80450863; + mBattleLastHit = param_0; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1165,8 +2804,55 @@ asm void Z2SeqMgr::setBattleLastHit(u8 param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/setBattleLastHit__8Z2SeqMgrFUc.s" } #pragma pop +#endif /* 802B4BD0-802B4EB0 2AF510 02E0+00 1/1 0/0 0/0 .text battleBgmFramework__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::battleBgmFramework() { + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { + if (mBattleSeqCount != 0) { + mBattleSeqCount--; + if (mBattleSeqCount == 0) { + mSubBgmHandle->stop(); + mBattleSeqState = 0; + } + } + } + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) { + Z2GetSoundObjMgr()->searchEnemy(); + switch (getSubBgmID()) { + case Z2BGM_BATTLE_TWILIGHT: + break; + case Z2BGM_BATTLE_NORMAL: + if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle()) { + return; + } + if (field_0xc1 != 0) { + field_0xc1--; + if (field_0xc1 < mBattleLastHit && mSubBgmMaster.getDest() != 1.0f) { + mSubBgmMaster.fadeIn(struct_8045086A); + } + if (field_0xc1 == 0) { + setBattleDistIgnore(false); + if (Z2GetSoundObjMgr()->checkBattleFinish()) { + setBattleSeqState(3); + } else if (mSubBgmMaster.getDest() != 1.0f) { + mSubBgmMaster.fadeIn(struct_8045086A); + } + } + } + break; + default: + mBattleSeqState = 0; + setBattleDistIgnore(false); + mFlags.mBattleSearched = 0; + field_0xc1 = 0; + mBattleLastHit = struct_80450869; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1175,8 +2861,62 @@ asm void Z2SeqMgr::battleBgmFramework() { #include "asm/Z2AudioLib/Z2SeqMgr/battleBgmFramework__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B4EB0-802B5204 2AF7F0 0354+00 1/1 0/0 0/0 .text startBattleBgm__8Z2SeqMgrFb */ +#ifdef NONMATCHING +void Z2SeqMgr::startBattleBgm(bool i_fade) { + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() + && mBattleSeqState == 0 && (mFlags.mBattleDistIgnore || mBattleDistState <= 1)) + { + JAISoundID bgm_id = Z2BGM_BATTLE_NORMAL; + if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) { + bgm_id = Z2BGM_BATTLE_TWILIGHT; + } + if (getSubBgmID() != bgm_id) { + mBattleSeqState = 1; + if (Z2GetSoundMgr()->startSound(bgm_id, &mSubBgmHandle, NULL)) { + Z2GetSoundObjMgr()->setBattleInit(); + mSubBgmStatus = 0xff; + s16 ivar2 = Z2GetLink()->getMoveSpeed() - 23; + if (ivar2 < 0) { + ivar2 = 0; + } + if (ivar2 > struct_80450861) { + ivar2 = struct_80450861; + } + u8 count_in, count_out; + switch (bgm_id) { + case Z2BGM_BATTLE_NORMAL: + count_in = struct_80450861 - ivar2; + count_out = struct_80450862 - ivar2 / 2; + if (!mFlags.mBattleSearched) { + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, 0, -1.0f, -1.0f); + } + if (mBattleDistState != 0) { + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_BATTLE_TWILIGHT: + changeSubBgmStatus(Z2GetSoundObjMgr()->isTwilightBattle()); + count_in = 25 - ivar2 / 4; + count_out = 25 - ivar2 / 4; + break; + } + if (i_fade) { + mSubBgmMaster.fadeInFromOut(count_in); + } else { + mSubBgmMaster.forceIn(); + } + mMainBgmMaster.fadeOut(count_out); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1185,8 +2925,45 @@ asm void Z2SeqMgr::startBattleBgm(bool param_0) { #include "asm/Z2AudioLib/Z2SeqMgr/startBattleBgm__8Z2SeqMgrFb.s" } #pragma pop +#endif /* 802B5204-802B545C 2AFB44 0258+00 3/3 1/1 0/0 .text stopBattleBgm__8Z2SeqMgrFUcUc */ +#ifdef NONMATCHING +// regalloc +void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) { + if (mBattleSeqCount == 0) { + u8 count; + s16 ivar6 = 0; + if (Z2GetLink() != NULL) { + ivar6 = Z2GetLink()->getMoveSpeed() - 23; + } + if (ivar6 < 0) { + ivar6 = 0; + } + if (ivar6 > struct_80450861) { + ivar6 = struct_80450861; + } + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { + u8 count_out = struct_80450861 + ivar6; + count = struct_80450862 + ivar6 / 2; + mSubBgmHandle->fadeOut(count_out); + mBattleSeqCount = count_out; + } else if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { + if (mSubBgmStatus > 1) { + count = struct_80450861 + ivar6 / 4; + } else { + count = 25 + ivar6 / 4; + } + mSubBgmHandle->fadeOut(count); + mBattleSeqCount = count; + } + mMainBgmMaster.fadeIn(count); + mBattleDistState = 3; + setBattleDistIgnore(false); + mFlags.mBattleSearched = false; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1195,18 +2972,58 @@ asm void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) { #include "asm/Z2AudioLib/Z2SeqMgr/stopBattleBgm__8Z2SeqMgrFUcUc.s" } #pragma pop +#endif /* 802B545C-802B556C 2AFD9C 0110+00 1/1 0/0 0/0 .text fieldBgmStart__8Z2SeqMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::fieldBgmStart() { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/fieldBgmStart__8Z2SeqMgrFv.s" +void Z2SeqMgr::fieldBgmStart() { + if (Z2GetSceneMgr()->isSceneExist() && mFlags.flag5) { + if (Z2GetStatusMgr()->checkDayTime()) { + Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL); + changeBgmStatus(0); + field_0xc4 = 0; + if (Z2GetLink()->isRiding()) { + mFlags.mRiding = true; + mRideCount = 0; + fieldRidingMute(); + } else { + mFlags.mRiding = false; + mRideCount = 0; + fieldRidingMute(); + } + } else { + Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_NIGHT, &mMainBgmHandle, NULL); + mBgmStatus = 0; + } + } } -#pragma pop /* 802B556C-802B5750 2AFEAC 01E4+00 3/3 0/0 0/0 .text fieldRidingMute__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::fieldRidingMute() { + if (Z2GetSceneMgr()->isSceneExist() && mMainBgmHandle) { + f32 volume1, volume2; + if (mFlags.mRiding) { + volume1 = 1.0f; + volume2 = 0.0f; + } else { + volume1 = 0.0f; + volume2 = 1.0f; + } + setChildTrackVolume(&mMainBgmHandle, 5, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume1, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume2, mRideCount, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 15, volume2, mRideCount, -1.0f, -1.0f); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1215,18 +3032,36 @@ asm void Z2SeqMgr::fieldRidingMute() { #include "asm/Z2AudioLib/Z2SeqMgr/fieldRidingMute__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B5750-802B579C 2B0090 004C+00 0/0 1/1 0/0 .text onFieldBgmJumpStart__8Z2SeqMgrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SeqMgr::onFieldBgmJumpStart() { - nofralloc -#include "asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpStart__8Z2SeqMgrFv.s" +void Z2SeqMgr::onFieldBgmJumpStart() { + field_0xc8 = getChildTrackVolume(&mMainBgmHandle, 5); + field_0xcc = getChildTrackVolume(&mMainBgmHandle, 12); } -#pragma pop /* 802B579C-802B594C 2B00DC 01B0+00 0/0 1/1 0/0 .text onFieldBgmJumpEnd__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::onFieldBgmJumpEnd() { + setChildTrackVolume(&mMainBgmHandle, 5, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, field_0xc8, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, field_0xcc, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, field_0xcc, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, field_0xcc, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 15, field_0xcc, 0, -1.0f, -1.0f); + Z2GetSoundMgr()->getSeqMgr()->calc(); + Z2GetSoundMgr()->getSeqMgr()->mixOut(); + if (mRideCount != 0) { + fieldRidingMute(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1235,6 +3070,7 @@ asm void Z2SeqMgr::onFieldBgmJumpEnd() { #include "asm/Z2AudioLib/Z2SeqMgr/onFieldBgmJumpEnd__8Z2SeqMgrFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803CA4B4-803CA508 -00001 0054+00 1/1 0/0 0/0 .data @6877 */ @@ -1263,6 +3099,168 @@ SECTION_DATA static void* lit_6877[21] = { }; /* 802B594C-802B5E80 2B028C 0534+00 2/1 0/0 0/0 .text fieldBgmFramework__8Z2SeqMgrFv */ +#ifdef NONMATCHING +void Z2SeqMgr::fieldBgmFramework() { + if (Z2GetSceneMgr()->isSceneExist() && !Z2GetSceneMgr()->isInDarkness() + && (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e + || Z2GetSceneMgr()->getCurrentSceneNum() == 0x1f) + && mFlags.flag5) + { + if (mRideCount != 0) { + mRideCount--; + } + if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY) { + field_0xc4 = Z2GetSoundStarter()->getPortData(&mMainBgmHandle, 10, -1); + if (Z2GetStatusMgr()->isPaused()) { + changeBgmStatus(13); + } else { + if (field_0xc4 != 16) { + if (mFlags.mRiding != Z2GetLink()->isRiding()) { + mFlags.mRiding = Z2GetLink()->isRiding(); + mRideCount = 50; + fieldRidingMute(); + } + } + if (field_0xc4 == 0 || field_0xc4 == 21 || field_0xc4 == 22 + || field_0xc4 == 23 || field_0xc4 == 24) { + return; + } + if (Z2GetStatusMgr()->getDemoStatus() == 10) { + switch (field_0xc4) { + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 17: + case 18: + case 19: + case 20: + changeBgmStatus(2); + break; + default: + changeBgmStatus(13); + break; + } + } else if (mBattleDistState <= 2) { + if ((field_0xc4 < 7 || field_0xc4 > 15) && mBattleDistState <= 1) { + switch (field_0xc4) { + case 2: + changeBgmStatus(7); + break; + case 3: + changeBgmStatus(6); + break; + case 4: + changeBgmStatus(5); + break; + default: + changeBgmStatus(4); + break; + } + } + } else if (Z2GetStatusMgr()->checkDayTime()) { + if (Z2GetLink()->getMovingTime() < 150) { + switch (field_0xc4) { + case 3: + if (mFlags.mRiding + && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) { + changeBgmStatus(3); + } + break; + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 17: + case 18: + case 19: + case 20: + changeBgmStatus(2); + break; + default: + changeBgmStatus(13); + break; + } + } else { + switch (field_0xc4) { + case 2: + case 3: + changeBgmStatus(13); + break; + default: + changeBgmStatus(12); + break; + } + } + } else { + if (field_0xc4 >= 7 && field_0xc4 <= 15 + && Z2GetStatusMgr()->getHour() >= 20) { + mMainBgmHandle->stop(60); + mMainBgmHandle.releaseSound(); + } else { + switch (field_0xc4) { + case 2: + case 3: + break; + case 17: + case 18: + case 19: + case 20: + changeBgmStatus(11); + break; + default: + changeBgmStatus(10); + break; + } + } + } + } + } else if (getMainBgmID() == Z2BGM_FIELD_LINK_NIGHT) { + if (!Z2GetStatusMgr()->isPaused()) { + u8 hour = Z2GetStatusMgr()->getHour(); + if (hour >= 5 && hour < 20) { + mMainBgmHandle->stop(60); + mMainBgmHandle.releaseSound(); + } + } + } else if (getMainBgmID() == -1 && !Z2GetStatusMgr()->isPaused() && mBattleSeqState == 0) { + u8 hour = Z2GetStatusMgr()->getHour(); + if (hour >= 6 && hour < 19) { + if (hour >= 8) { + Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL); + changeBgmStatus(9); + field_0xc4 = 24; + } else { + Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL); + changeBgmStatus(8); + field_0xc4 = 23; + } + if (Z2GetLink()->isRiding()) { + mFlags.mRiding = true; + mRideCount = 0; + fieldRidingMute(); + } else { + mFlags.mRiding = false; + mRideCount = 0; + fieldRidingMute(); + } + } else if (hour >= 20 || hour < 5) { + Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_NIGHT, &mMainBgmHandle, NULL); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1271,6 +3269,7 @@ asm void Z2SeqMgr::fieldBgmFramework() { #include "asm/Z2AudioLib/Z2SeqMgr/fieldBgmFramework__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B5E80-802B5E84 2B07C0 0004+00 1/1 0/0 0/0 .text mbossBgmMuteProcess__8Z2SeqMgrFv */ void Z2SeqMgr::mbossBgmMuteProcess() { @@ -1288,6 +3287,12 @@ void Z2SeqMgr::bgmNowBattle(f32 param_0) { } /* 802B5E8C-802B5ED4 2B07CC 0048+00 0/0 1/1 0/0 .text taktModeMute__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::taktModeMute() { + mBgmPause.move(0.3f, 10); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1296,8 +3301,15 @@ asm void Z2SeqMgr::taktModeMute() { #include "asm/Z2AudioLib/Z2SeqMgr/taktModeMute__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 802B5ED4-802B5F1C 2B0814 0048+00 0/0 1/1 0/0 .text taktModeMuteOff__8Z2SeqMgrFv */ +#ifdef NONMATCHING +// matches with literals +void Z2SeqMgr::taktModeMuteOff() { + mBgmPause.fadeIn(10); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1306,5 +3318,6 @@ asm void Z2SeqMgr::taktModeMuteOff() { #include "asm/Z2AudioLib/Z2SeqMgr/taktModeMuteOff__8Z2SeqMgrFv.s" } #pragma pop +#endif /* 8039BA08-8039BA08 028068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/libs/Z2AudioLib/Z2SoundMgr.cpp b/libs/Z2AudioLib/Z2SoundMgr.cpp index b10e894e417..fe7103627ee 100644 --- a/libs/Z2AudioLib/Z2SoundMgr.cpp +++ b/libs/Z2AudioLib/Z2SoundMgr.cpp @@ -212,7 +212,7 @@ SECTION_SDATA2 static f64 lit_3909 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int Z2SoundMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +asm bool Z2SoundMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { nofralloc #include "asm/Z2AudioLib/Z2SoundMgr/func_802A9EE8.s"