From 9b840ad84229dee3afc64e49df1250e06bfc7bc2 Mon Sep 17 00:00:00 2001 From: zelda2774 <69368340+zelda2774@users.noreply.github.com> Date: Thu, 2 Sep 2021 00:33:37 +0200 Subject: [PATCH] code_800EC960 OK + data migrated (#937) * Match AudioDebug_ProcessInput_SEFlagSwap * Data migration * Migrate in-function statics for func_800EE824 * More data migration * Migrate in-function static for func_800F510C * Last bit of migration * formatting * naming fix * Prune variables.h Co-authored-by: zelda2774 --- .../AudioDebug_ProcessInput_SEFlagSwap.s | 233 ------ .../code/code_800EC960/func_800EE824.s | 76 -- .../code/code_800EC960/func_800F510C.s | 114 --- data/audio_synthesis.data.s | 20 +- data/code_800EC960.data.s | 460 ----------- include/variables.h | 98 +-- include/z64audio.h | 18 +- spec | 2 +- src/code/audio_sound_params.c | 241 ++++++ src/code/code_800EC960.c | 778 +++++++++++------- src/code/code_800F7260.c | 79 +- 11 files changed, 796 insertions(+), 1323 deletions(-) delete mode 100644 asm/non_matchings/code/code_800EC960/AudioDebug_ProcessInput_SEFlagSwap.s delete mode 100644 asm/non_matchings/code/code_800EC960/func_800EE824.s delete mode 100644 asm/non_matchings/code/code_800EC960/func_800F510C.s delete mode 100644 data/code_800EC960.data.s create mode 100644 src/code/audio_sound_params.c diff --git a/asm/non_matchings/code/code_800EC960/AudioDebug_ProcessInput_SEFlagSwap.s b/asm/non_matchings/code/code_800EC960/AudioDebug_ProcessInput_SEFlagSwap.s deleted file mode 100644 index 0d5917814e..0000000000 --- a/asm/non_matchings/code/code_800EC960/AudioDebug_ProcessInput_SEFlagSwap.s +++ /dev/null @@ -1,233 +0,0 @@ -glabel AudioDebug_ProcessInput_SEFlagSwap -/* B69604 800F2464 3C058013 */ lui $a1, %hi(sAudioSEFlagSwapIsEditing) # $a1, 0x8013 -/* B69608 800F2468 24A51F00 */ addiu $a1, %lo(sAudioSEFlagSwapIsEditing) # addiu $a1, $a1, 0x1f00 -/* B6960C 800F246C 90AE0000 */ lbu $t6, ($a1) -/* B69610 800F2470 27BDFFF8 */ addiu $sp, $sp, -8 -/* B69614 800F2474 3C028017 */ lui $v0, %hi(sDebugPadPress) # $v0, 0x8017 -/* B69618 800F2478 15C0003F */ bnez $t6, .L800F2578 -/* B6961C 800F247C 00000000 */ nop -/* B69620 800F2480 8C42BAB8 */ lw $v0, %lo(sDebugPadPress)($v0) -/* B69624 800F2484 3C048013 */ lui $a0, %hi(sAudioSEFlagSwapSel) # $a0, 0x8013 -/* B69628 800F2488 24841F04 */ addiu $a0, %lo(sAudioSEFlagSwapSel) # addiu $a0, $a0, 0x1f04 -/* B6962C 800F248C 304F0800 */ andi $t7, $v0, 0x800 -/* B69630 800F2490 11E00008 */ beqz $t7, .L800F24B4 -/* B69634 800F2494 304C0400 */ andi $t4, $v0, 0x400 -/* B69638 800F2498 90830000 */ lbu $v1, ($a0) -/* B6963C 800F249C 24190009 */ li $t9, 9 -/* B69640 800F24A0 18600003 */ blez $v1, .L800F24B0 -/* B69644 800F24A4 2478FFFF */ addiu $t8, $v1, -1 -/* B69648 800F24A8 10000002 */ b .L800F24B4 -/* B6964C 800F24AC A0980000 */ sb $t8, ($a0) -.L800F24B0: -/* B69650 800F24B0 A0990000 */ sb $t9, ($a0) -.L800F24B4: -/* B69654 800F24B4 3C048013 */ lui $a0, %hi(sAudioSEFlagSwapSel) # $a0, 0x8013 -/* B69658 800F24B8 11800008 */ beqz $t4, .L800F24DC -/* B6965C 800F24BC 24841F04 */ addiu $a0, %lo(sAudioSEFlagSwapSel) # addiu $a0, $a0, 0x1f04 -/* B69660 800F24C0 90830000 */ lbu $v1, ($a0) -/* B69664 800F24C4 28610009 */ slti $at, $v1, 9 -/* B69668 800F24C8 10200003 */ beqz $at, .L800F24D8 -/* B6966C 800F24CC 246D0001 */ addiu $t5, $v1, 1 -/* B69670 800F24D0 10000002 */ b .L800F24DC -/* B69674 800F24D4 A08D0000 */ sb $t5, ($a0) -.L800F24D8: -/* B69678 800F24D8 A0800000 */ sb $zero, ($a0) -.L800F24DC: -/* B6967C 800F24DC 304E8000 */ andi $t6, $v0, 0x8000 -/* B69680 800F24E0 11C00003 */ beqz $t6, .L800F24F0 -/* B69684 800F24E4 30584000 */ andi $t8, $v0, 0x4000 -/* B69688 800F24E8 240F0001 */ li $t7, 1 -/* B6968C 800F24EC A0AF0000 */ sb $t7, ($a1) -.L800F24F0: -/* B69690 800F24F0 13000009 */ beqz $t8, .L800F2518 -/* B69694 800F24F4 30591000 */ andi $t9, $v0, 0x1000 -/* B69698 800F24F8 90860000 */ lbu $a2, ($a0) -/* B6969C 800F24FC 3C018017 */ lui $at, %hi(gAudioSEFlagSwapSource) -/* B696A0 800F2500 00063040 */ sll $a2, $a2, 1 -/* B696A4 800F2504 00260821 */ addu $at, $at, $a2 -/* B696A8 800F2508 A420E2E0 */ sh $zero, %lo(gAudioSEFlagSwapSource)($at) -/* B696AC 800F250C 3C018017 */ lui $at, %hi(gAudioSEFlagSwapTarget) -/* B696B0 800F2510 00260821 */ addu $at, $at, $a2 -/* B696B4 800F2514 A420E2F8 */ sh $zero, %lo(gAudioSEFlagSwapTarget)($at) -.L800F2518: -/* B696B8 800F2518 1320008E */ beqz $t9, .L800F2754 -/* B696BC 800F251C 3C0C8017 */ lui $t4, %hi(gAudioSEFlagSwapSource) # $t4, 0x8017 -/* B696C0 800F2520 90830000 */ lbu $v1, ($a0) -/* B696C4 800F2524 3C0D8017 */ lui $t5, %hi(gAudioSEFlagSwapTarget) # $t5, 0x8017 -/* B696C8 800F2528 25ADE2F8 */ addiu $t5, %lo(gAudioSEFlagSwapTarget) # addiu $t5, $t5, -0x1d08 -/* B696CC 800F252C 258CE2E0 */ addiu $t4, %lo(gAudioSEFlagSwapSource) # addiu $t4, $t4, -0x1d20 -/* B696D0 800F2530 00033040 */ sll $a2, $v1, 1 -/* B696D4 800F2534 00CC3821 */ addu $a3, $a2, $t4 -/* B696D8 800F2538 10600004 */ beqz $v1, .L800F254C -/* B696DC 800F253C 00CD4021 */ addu $t0, $a2, $t5 -/* B696E0 800F2540 2463FFFF */ addiu $v1, $v1, -1 -/* B696E4 800F2544 10000002 */ b .L800F2550 -/* B696E8 800F2548 306300FF */ andi $v1, $v1, 0xff -.L800F254C: -/* B696EC 800F254C 24030009 */ li $v1, 9 -.L800F2550: -/* B696F0 800F2550 00032840 */ sll $a1, $v1, 1 -/* B696F4 800F2554 3C0E8017 */ lui $t6, %hi(gAudioSEFlagSwapSource) -/* B696F8 800F2558 01C57021 */ addu $t6, $t6, $a1 -/* B696FC 800F255C 95CEE2E0 */ lhu $t6, %lo(gAudioSEFlagSwapSource)($t6) -/* B69700 800F2560 3C0F8017 */ lui $t7, %hi(gAudioSEFlagSwapTarget) -/* B69704 800F2564 01E57821 */ addu $t7, $t7, $a1 -/* B69708 800F2568 A4EE0000 */ sh $t6, ($a3) -/* B6970C 800F256C 95EFE2F8 */ lhu $t7, %lo(gAudioSEFlagSwapTarget)($t7) -/* B69710 800F2570 10000078 */ b .L800F2754 -/* B69714 800F2574 A50F0000 */ sh $t7, ($t0) -.L800F2578: -/* B69718 800F2578 3C028017 */ lui $v0, %hi(sDebugPadPress) # $v0, 0x8017 -/* B6971C 800F257C 8C42BAB8 */ lw $v0, %lo(sDebugPadPress)($v0) -/* B69720 800F2580 30580200 */ andi $t8, $v0, 0x200 -/* B69724 800F2584 1300000A */ beqz $t8, .L800F25B0 -/* B69728 800F2588 304D0100 */ andi $t5, $v0, 0x100 -/* B6972C 800F258C 3C038013 */ lui $v1, %hi(sAudioSEFlagSwapNibbleSel) # $v1, 0x8013 -/* B69730 800F2590 24631F08 */ addiu $v1, %lo(sAudioSEFlagSwapNibbleSel) # addiu $v1, $v1, 0x1f08 -/* B69734 800F2594 90640000 */ lbu $a0, ($v1) -/* B69738 800F2598 240C0007 */ li $t4, 7 -/* B6973C 800F259C 18800003 */ blez $a0, .L800F25AC -/* B69740 800F25A0 2499FFFF */ addiu $t9, $a0, -1 -/* B69744 800F25A4 10000002 */ b .L800F25B0 -/* B69748 800F25A8 A0790000 */ sb $t9, ($v1) -.L800F25AC: -/* B6974C 800F25AC A06C0000 */ sb $t4, ($v1) -.L800F25B0: -/* B69750 800F25B0 3C038013 */ lui $v1, %hi(sAudioSEFlagSwapNibbleSel) # $v1, 0x8013 -/* B69754 800F25B4 11A00008 */ beqz $t5, .L800F25D8 -/* B69758 800F25B8 24631F08 */ addiu $v1, %lo(sAudioSEFlagSwapNibbleSel) # addiu $v1, $v1, 0x1f08 -/* B6975C 800F25BC 90640000 */ lbu $a0, ($v1) -/* B69760 800F25C0 28810007 */ slti $at, $a0, 7 -/* B69764 800F25C4 10200003 */ beqz $at, .L800F25D4 -/* B69768 800F25C8 248E0001 */ addiu $t6, $a0, 1 -/* B6976C 800F25CC 10000002 */ b .L800F25D8 -/* B69770 800F25D0 A06E0000 */ sb $t6, ($v1) -.L800F25D4: -/* B69774 800F25D4 A0600000 */ sb $zero, ($v1) -.L800F25D8: -/* B69778 800F25D8 30440800 */ andi $a0, $v0, 0x800 -/* B6977C 800F25DC 14800003 */ bnez $a0, .L800F25EC -/* B69780 800F25E0 304F0400 */ andi $t7, $v0, 0x400 -/* B69784 800F25E4 11E00047 */ beqz $t7, .L800F2704 -/* B69788 800F25E8 00000000 */ nop -.L800F25EC: -/* B6978C 800F25EC 1080000B */ beqz $a0, .L800F261C -/* B69790 800F25F0 30460400 */ andi $a2, $v0, 0x400 -/* B69794 800F25F4 3C188017 */ lui $t8, %hi(sDebugPadHold) # $t8, 0x8017 -/* B69798 800F25F8 8F18BAB0 */ lw $t8, %lo(sDebugPadHold)($t8) -/* B6979C 800F25FC 24090001 */ li $t1, 1 -/* B697A0 800F2600 33190008 */ andi $t9, $t8, 8 -/* B697A4 800F2604 53200005 */ beql $t9, $zero, .L800F261C -/* B697A8 800F2608 A7A90006 */ sh $t1, 6($sp) -/* B697AC 800F260C 24090008 */ li $t1, 8 -/* B697B0 800F2610 10000002 */ b .L800F261C -/* B697B4 800F2614 A7A90006 */ sh $t1, 6($sp) -/* B697B8 800F2618 A7A90006 */ sh $t1, 6($sp) -.L800F261C: -/* B697BC 800F261C 10C00009 */ beqz $a2, .L800F2644 -/* B697C0 800F2620 87A90006 */ lh $t1, 6($sp) -/* B697C4 800F2624 3C0C8017 */ lui $t4, %hi(sDebugPadHold) # $t4, 0x8017 -/* B697C8 800F2628 8D8CBAB0 */ lw $t4, %lo(sDebugPadHold)($t4) -/* B697CC 800F262C 2409FFFF */ li $t1, -1 -/* B697D0 800F2630 318D0008 */ andi $t5, $t4, 8 -/* B697D4 800F2634 11A00003 */ beqz $t5, .L800F2644 -/* B697D8 800F2638 00000000 */ nop -/* B697DC 800F263C 10000001 */ b .L800F2644 -/* B697E0 800F2640 2409FFF8 */ li $t1, -8 -.L800F2644: -/* B697E4 800F2644 90660000 */ lbu $a2, ($v1) -/* B697E8 800F2648 3C048013 */ lui $a0, %hi(sAudioSEFlagSwapSel) # $a0, 0x8013 -/* B697EC 800F264C 24841F04 */ addiu $a0, %lo(sAudioSEFlagSwapSel) # addiu $a0, $a0, 0x1f04 -/* B697F0 800F2650 28C10004 */ slti $at, $a2, 4 -/* B697F4 800F2654 10200015 */ beqz $at, .L800F26AC -/* B697F8 800F2658 3C188017 */ lui $t8, %hi(gAudioSEFlagSwapSource) # $t8, 0x8017 -/* B697FC 800F265C 908E0000 */ lbu $t6, ($a0) -/* B69800 800F2660 2718E2E0 */ addiu $t8, %lo(gAudioSEFlagSwapSource) # addiu $t8, $t8, -0x1d20 -/* B69804 800F2664 00065823 */ negu $t3, $a2 -/* B69808 800F2668 000E7840 */ sll $t7, $t6, 1 -/* B6980C 800F266C 01F83821 */ addu $a3, $t7, $t8 -/* B69810 800F2670 94E80000 */ lhu $t0, ($a3) -/* B69814 800F2674 000B5880 */ sll $t3, $t3, 2 -/* B69818 800F2678 256B000C */ addiu $t3, $t3, 0xc -/* B6981C 800F267C 01685007 */ srav $t2, $t0, $t3 -/* B69820 800F2680 01495021 */ addu $t2, $t2, $t1 -/* B69824 800F2684 2419000F */ li $t9, 15 -/* B69828 800F2688 314A000F */ andi $t2, $t2, 0xf -/* B6982C 800F268C 01796004 */ sllv $t4, $t9, $t3 -/* B69830 800F2690 314AFFFF */ andi $t2, $t2, 0xffff -/* B69834 800F2694 398DFFFF */ xori $t5, $t4, 0xffff -/* B69838 800F2698 016A7804 */ sllv $t7, $t2, $t3 -/* B6983C 800F269C 010D7024 */ and $t6, $t0, $t5 -/* B69840 800F26A0 01CFC021 */ addu $t8, $t6, $t7 -/* B69844 800F26A4 10000017 */ b .L800F2704 -/* B69848 800F26A8 A4F80000 */ sh $t8, ($a3) -.L800F26AC: -/* B6984C 800F26AC 3C048013 */ lui $a0, %hi(sAudioSEFlagSwapSel) # $a0, 0x8013 -/* B69850 800F26B0 24841F04 */ addiu $a0, %lo(sAudioSEFlagSwapSel) # addiu $a0, $a0, 0x1f04 -/* B69854 800F26B4 90990000 */ lbu $t9, ($a0) -/* B69858 800F26B8 3C0D8017 */ lui $t5, %hi(gAudioSEFlagSwapTarget) # $t5, 0x8017 -/* B6985C 800F26BC 25ADE2F8 */ addiu $t5, %lo(gAudioSEFlagSwapTarget) # addiu $t5, $t5, -0x1d08 -/* B69860 800F26C0 00196040 */ sll $t4, $t9, 1 -/* B69864 800F26C4 018D4021 */ addu $t0, $t4, $t5 -/* B69868 800F26C8 95070000 */ lhu $a3, ($t0) -/* B6986C 800F26CC 00065823 */ negu $t3, $a2 -/* B69870 800F26D0 000B5880 */ sll $t3, $t3, 2 -/* B69874 800F26D4 256B001C */ addiu $t3, $t3, 0x1c -/* B69878 800F26D8 01675007 */ srav $t2, $a3, $t3 -/* B6987C 800F26DC 01495021 */ addu $t2, $t2, $t1 -/* B69880 800F26E0 240E000F */ li $t6, 15 -/* B69884 800F26E4 314A000F */ andi $t2, $t2, 0xf -/* B69888 800F26E8 016E7804 */ sllv $t7, $t6, $t3 -/* B6988C 800F26EC 314AFFFF */ andi $t2, $t2, 0xffff -/* B69890 800F26F0 39F8FFFF */ xori $t8, $t7, 0xffff -/* B69894 800F26F4 016A6004 */ sllv $t4, $t2, $t3 -/* B69898 800F26F8 00F8C824 */ and $t9, $a3, $t8 -/* B6989C 800F26FC 032C6821 */ addu $t5, $t9, $t4 -/* B698A0 800F2700 A50D0000 */ sh $t5, ($t0) -.L800F2704: -/* B698A4 800F2704 3C048013 */ lui $a0, %hi(sAudioSEFlagSwapSel) # $a0, 0x8013 -/* B698A8 800F2708 304E8000 */ andi $t6, $v0, 0x8000 -/* B698AC 800F270C 11C00002 */ beqz $t6, .L800F2718 -/* B698B0 800F2710 24841F04 */ addiu $a0, %lo(sAudioSEFlagSwapSel) # addiu $a0, $a0, 0x1f04 -/* B698B4 800F2714 A0A00000 */ sb $zero, ($a1) -.L800F2718: -/* B698B8 800F2718 304F4000 */ andi $t7, $v0, 0x4000 -/* B698BC 800F271C 51E0000E */ beql $t7, $zero, .L800F2758 -/* B698C0 800F2720 30590002 */ andi $t9, $v0, 2 -/* B698C4 800F2724 90780000 */ lbu $t8, ($v1) -/* B698C8 800F2728 90860000 */ lbu $a2, ($a0) -/* B698CC 800F272C 2B010004 */ slti $at, $t8, 4 -/* B698D0 800F2730 10200005 */ beqz $at, .L800F2748 -/* B698D4 800F2734 00063040 */ sll $a2, $a2, 1 -/* B698D8 800F2738 3C018017 */ lui $at, %hi(gAudioSEFlagSwapSource) -/* B698DC 800F273C 00260821 */ addu $at, $at, $a2 -/* B698E0 800F2740 10000004 */ b .L800F2754 -/* B698E4 800F2744 A420E2E0 */ sh $zero, %lo(gAudioSEFlagSwapSource)($at) -.L800F2748: -/* B698E8 800F2748 3C018017 */ lui $at, %hi(gAudioSEFlagSwapTarget) -/* B698EC 800F274C 00260821 */ addu $at, $at, $a2 -/* B698F0 800F2750 A420E2F8 */ sh $zero, %lo(gAudioSEFlagSwapTarget)($at) -.L800F2754: -/* B698F4 800F2754 30590002 */ andi $t9, $v0, 2 -.L800F2758: -/* B698F8 800F2758 13200006 */ beqz $t9, .L800F2774 -/* B698FC 800F275C 304E0004 */ andi $t6, $v0, 4 -/* B69900 800F2760 3C038013 */ lui $v1, %hi(gAudioSEFlagSwapOff) # $v1, 0x8013 -/* B69904 800F2764 246333F4 */ addiu $v1, %lo(gAudioSEFlagSwapOff) # addiu $v1, $v1, 0x33f4 -/* B69908 800F2768 906C0000 */ lbu $t4, ($v1) -/* B6990C 800F276C 398D0001 */ xori $t5, $t4, 1 -/* B69910 800F2770 A06D0000 */ sb $t5, ($v1) -.L800F2774: -/* B69914 800F2774 11C00008 */ beqz $t6, .L800F2798 -/* B69918 800F2778 00000000 */ nop -/* B6991C 800F277C 908F0000 */ lbu $t7, ($a0) -/* B69920 800F2780 3C188017 */ lui $t8, %hi(gAudioSEFlagSwapMode) # $t8, 0x8017 -/* B69924 800F2784 2718E310 */ addiu $t8, %lo(gAudioSEFlagSwapMode) # addiu $t8, $t8, -0x1cf0 -/* B69928 800F2788 01F81021 */ addu $v0, $t7, $t8 -/* B6992C 800F278C 90590000 */ lbu $t9, ($v0) -/* B69930 800F2790 3B2C0001 */ xori $t4, $t9, 1 -/* B69934 800F2794 A04C0000 */ sb $t4, ($v0) -.L800F2798: -/* B69938 800F2798 03E00008 */ jr $ra -/* B6993C 800F279C 27BD0008 */ addiu $sp, $sp, 8 - diff --git a/asm/non_matchings/code/code_800EC960/func_800EE824.s b/asm/non_matchings/code/code_800EC960/func_800EE824.s deleted file mode 100644 index 06fdf922fe..0000000000 --- a/asm/non_matchings/code/code_800EC960/func_800EE824.s +++ /dev/null @@ -1,76 +0,0 @@ -glabel func_800EE824 -/* B659C4 800EE824 3C058013 */ lui $a1, %hi(D_80131C80) # $a1, 0x8013 -/* B659C8 800EE828 90A51C80 */ lbu $a1, %lo(D_80131C80)($a1) -/* B659CC 800EE82C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B659D0 800EE830 AFBF0014 */ sw $ra, 0x14($sp) -/* B659D4 800EE834 10A00008 */ beqz $a1, .L800EE858 -/* B659D8 800EE838 00A01025 */ move $v0, $a1 -/* B659DC 800EE83C 24010001 */ li $at, 1 -/* B659E0 800EE840 1041001D */ beq $v0, $at, .L800EE8B8 -/* B659E4 800EE844 24010002 */ li $at, 2 -/* B659E8 800EE848 1041002E */ beq $v0, $at, .L800EE904 -/* B659EC 800EE84C 00000000 */ nop -/* B659F0 800EE850 10000034 */ b .L800EE924 -/* B659F4 800EE854 8FBF0014 */ lw $ra, 0x14($sp) -.L800EE858: -/* B659F8 800EE858 3C038013 */ lui $v1, %hi(D_80131C88) # $v1, 0x8013 -/* B659FC 800EE85C 94631C88 */ lhu $v1, %lo(D_80131C88)($v1) -/* B65A00 800EE860 3C018013 */ lui $at, %hi(D_80131C88) # $at, 0x8013 -/* B65A04 800EE864 3C0E8013 */ lui $t6, %hi(D_80131C84) # $t6, 0x8013 -/* B65A08 800EE868 2C620001 */ sltiu $v0, $v1, 1 -/* B65A0C 800EE86C 2463FFFF */ addiu $v1, $v1, -1 -/* B65A10 800EE870 1040002B */ beqz $v0, .L800EE920 -/* B65A14 800EE874 A4231C88 */ sh $v1, %lo(D_80131C88)($at) -/* B65A18 800EE878 91CE1C84 */ lbu $t6, %lo(D_80131C84)($t6) -/* B65A1C 800EE87C 24A50001 */ addiu $a1, $a1, 1 -/* B65A20 800EE880 00002025 */ move $a0, $zero -/* B65A24 800EE884 29C10007 */ slti $at, $t6, 7 -/* B65A28 800EE888 10200003 */ beqz $at, .L800EE898 -/* B65A2C 800EE88C 3C018013 */ lui $at, %hi(D_80131C80) # $at, 0x8013 -/* B65A30 800EE890 10000005 */ b .L800EE8A8 -/* B65A34 800EE894 A0251C80 */ sb $a1, %lo(D_80131C80)($at) -.L800EE898: -/* B65A38 800EE898 24050003 */ li $a1, 3 -/* B65A3C 800EE89C 3C018013 */ lui $at, %hi(D_80131C80) # $at, 0x8013 -/* B65A40 800EE8A0 0C03B616 */ jal func_800ED858 -/* B65A44 800EE8A4 A0251C80 */ sb $a1, %lo(D_80131C80)($at) -.L800EE8A8: -/* B65A48 800EE8A8 240304B0 */ li $v1, 1200 -/* B65A4C 800EE8AC 3C018013 */ lui $at, %hi(D_80131C88) # $at, 0x8013 -/* B65A50 800EE8B0 1000001B */ b .L800EE920 -/* B65A54 800EE8B4 A4231C88 */ sh $v1, %lo(D_80131C88)($at) -.L800EE8B8: -/* B65A58 800EE8B8 0C03DC98 */ jal Audio_SetSoundBanksMute -/* B65A5C 800EE8BC 00002025 */ move $a0, $zero -/* B65A60 800EE8C0 3C048013 */ lui $a0, %hi(D_80131C84) # $a0, 0x8013 -/* B65A64 800EE8C4 0C03B616 */ jal func_800ED858 -/* B65A68 800EE8C8 90841C84 */ lbu $a0, %lo(D_80131C84)($a0) -/* B65A6C 800EE8CC 2404000F */ li $a0, 15 -/* B65A70 800EE8D0 0C03B64F */ jal func_800ED93C -/* B65A74 800EE8D4 24050001 */ li $a1, 1 -/* B65A78 800EE8D8 3C0F8013 */ lui $t7, %hi(D_80131C84) # $t7, 0x8013 -/* B65A7C 800EE8DC 91EF1C84 */ lbu $t7, %lo(D_80131C84)($t7) -/* B65A80 800EE8E0 3C058013 */ lui $a1, %hi(D_80131C80) # $a1, 0x8013 -/* B65A84 800EE8E4 90A51C80 */ lbu $a1, %lo(D_80131C80)($a1) -/* B65A88 800EE8E8 3C018013 */ lui $at, %hi(D_80131C84) # $at, 0x8013 -/* B65A8C 800EE8EC 25F80001 */ addiu $t8, $t7, 1 -/* B65A90 800EE8F0 A0381C84 */ sb $t8, %lo(D_80131C84)($at) -/* B65A94 800EE8F4 3C018013 */ lui $at, %hi(D_80131C80) # $at, 0x8013 -/* B65A98 800EE8F8 24A50001 */ addiu $a1, $a1, 1 -/* B65A9C 800EE8FC 10000008 */ b .L800EE920 -/* B65AA0 800EE900 A0251C80 */ sb $a1, %lo(D_80131C80)($at) -.L800EE904: -/* B65AA4 800EE904 0C03B8FE */ jal Audio_OcaGetDisplayStaff -/* B65AA8 800EE908 00000000 */ nop -/* B65AAC 800EE90C 90590001 */ lbu $t9, 1($v0) -/* B65AB0 800EE910 3C018013 */ lui $at, %hi(D_80131C80) # $at, 0x8013 -/* B65AB4 800EE914 57200003 */ bnezl $t9, .L800EE924 -/* B65AB8 800EE918 8FBF0014 */ lw $ra, 0x14($sp) -/* B65ABC 800EE91C A0201C80 */ sb $zero, %lo(D_80131C80)($at) -.L800EE920: -/* B65AC0 800EE920 8FBF0014 */ lw $ra, 0x14($sp) -.L800EE924: -/* B65AC4 800EE924 27BD0018 */ addiu $sp, $sp, 0x18 -/* B65AC8 800EE928 03E00008 */ jr $ra -/* B65ACC 800EE92C 00000000 */ nop - diff --git a/asm/non_matchings/code/code_800EC960/func_800F510C.s b/asm/non_matchings/code/code_800EC960/func_800F510C.s deleted file mode 100644 index d27163452a..0000000000 --- a/asm/non_matchings/code/code_800EC960/func_800F510C.s +++ /dev/null @@ -1,114 +0,0 @@ -glabel func_800F510C -/* B6C2AC 800F510C 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* B6C2B0 800F5110 3C0E8013 */ lui $t6, %hi(D_80131F6C) # $t6, 0x8013 -/* B6C2B4 800F5114 95CE1F6C */ lhu $t6, %lo(D_80131F6C)($t6) -/* B6C2B8 800F5118 AFB1001C */ sw $s1, 0x1c($sp) -/* B6C2BC 800F511C 00048E00 */ sll $s1, $a0, 0x18 -/* B6C2C0 800F5120 AFBF002C */ sw $ra, 0x2c($sp) -/* B6C2C4 800F5124 AFA40048 */ sw $a0, 0x48($sp) -/* B6C2C8 800F5128 00118E03 */ sra $s1, $s1, 0x18 -/* B6C2CC 800F512C AFB40028 */ sw $s4, 0x28($sp) -/* B6C2D0 800F5130 AFB30024 */ sw $s3, 0x24($sp) -/* B6C2D4 800F5134 AFB20020 */ sw $s2, 0x20($sp) -/* B6C2D8 800F5138 AFB00018 */ sw $s0, 0x18($sp) -/* B6C2DC 800F513C 24040001 */ li $a0, 1 -/* B6C2E0 800F5140 0C03E82D */ jal func_800FA0B4 -/* B6C2E4 800F5144 A7AE0040 */ sh $t6, 0x40($sp) -/* B6C2E8 800F5148 3401FFFF */ li $at, 65535 -/* B6C2EC 800F514C 5441004D */ bnel $v0, $at, .L800F5284 -/* B6C2F0 800F5150 8FBF002C */ lw $ra, 0x2c($sp) -/* B6C2F4 800F5154 0C03E82D */ jal func_800FA0B4 -/* B6C2F8 800F5158 24040003 */ li $a0, 3 -/* B6C2FC 800F515C 2401002F */ li $at, 47 -/* B6C300 800F5160 10410047 */ beq $v0, $at, .L800F5280 -/* B6C304 800F5164 00008025 */ move $s0, $zero -/* B6C308 800F5168 00001025 */ move $v0, $zero -/* B6C30C 800F516C 2414007F */ li $s4, 127 -/* B6C310 800F5170 2413000A */ li $s3, 10 -/* B6C314 800F5174 3C12A000 */ lui $s2, 0xa000 -.L800F5178: -/* B6C318 800F5178 14400003 */ bnez $v0, .L800F5188 -/* B6C31C 800F517C 00002825 */ move $a1, $zero -/* B6C320 800F5180 10000003 */ b .L800F5190 -/* B6C324 800F5184 322300FF */ andi $v1, $s1, 0xff -.L800F5188: -/* B6C328 800F5188 02911823 */ subu $v1, $s4, $s1 -/* B6C32C 800F518C 306300FF */ andi $v1, $v1, 0xff -.L800F5190: -/* B6C330 800F5190 28610065 */ slti $at, $v1, 0x65 -/* B6C334 800F5194 14200003 */ bnez $at, .L800F51A4 -/* B6C338 800F5198 00601025 */ move $v0, $v1 -/* B6C33C 800F519C 10000013 */ b .L800F51EC -/* B6C340 800F51A0 2406000B */ li $a2, 11 -.L800F51A4: -/* B6C344 800F51A4 28410014 */ slti $at, $v0, 0x14 -/* B6C348 800F51A8 10200003 */ beqz $at, .L800F51B8 -/* B6C34C 800F51AC 244FFFEC */ addiu $t7, $v0, -0x14 -/* B6C350 800F51B0 1000000E */ b .L800F51EC -/* B6C354 800F51B4 24060002 */ li $a2, 2 -.L800F51B8: -/* B6C358 800F51B8 01F3001A */ div $zero, $t7, $s3 -/* B6C35C 800F51BC 00003012 */ mflo $a2 -/* B6C360 800F51C0 24C60002 */ addiu $a2, $a2, 2 -/* B6C364 800F51C4 30C600FF */ andi $a2, $a2, 0xff -/* B6C368 800F51C8 16600002 */ bnez $s3, .L800F51D4 -/* B6C36C 800F51CC 00000000 */ nop -/* B6C370 800F51D0 0007000D */ break 7 -.L800F51D4: -/* B6C374 800F51D4 2401FFFF */ li $at, -1 -/* B6C378 800F51D8 16610004 */ bne $s3, $at, .L800F51EC -/* B6C37C 800F51DC 3C018000 */ lui $at, 0x8000 -/* B6C380 800F51E0 15E10002 */ bne $t7, $at, .L800F51EC -/* B6C384 800F51E4 00000000 */ nop -/* B6C388 800F51E8 0006000D */ break 6 -.L800F51EC: -/* B6C38C 800F51EC 03B03821 */ addu $a3, $sp, $s0 -/* B6C390 800F51F0 90E70040 */ lbu $a3, 0x40($a3) -/* B6C394 800F51F4 3C198017 */ lui $t9, %hi(gAudioContext) # $t9, 0x8017 -/* B6C398 800F51F8 2739F180 */ addiu $t9, %lo(gAudioContext) # addiu $t9, $t9, -0xe80 -/* B6C39C 800F51FC 0007C080 */ sll $t8, $a3, 2 -/* B6C3A0 800F5200 0307C023 */ subu $t8, $t8, $a3 -/* B6C3A4 800F5204 0018C080 */ sll $t8, $t8, 2 -/* B6C3A8 800F5208 0307C023 */ subu $t8, $t8, $a3 -/* B6C3AC 800F520C 0018C140 */ sll $t8, $t8, 5 -/* B6C3B0 800F5210 03191821 */ addu $v1, $t8, $t9 -/* B6C3B4 800F5214 00001025 */ move $v0, $zero -/* B6C3B8 800F5218 00C02025 */ move $a0, $a2 -/* B6C3BC 800F521C 00024080 */ sll $t0, $v0, 2 -.L800F5220: -/* B6C3C0 800F5220 00684821 */ addu $t1, $v1, $t0 -/* B6C3C4 800F5224 8D2A3568 */ lw $t2, 0x3568($t1) -/* B6C3C8 800F5228 240C0001 */ li $t4, 1 -/* B6C3CC 800F522C 004C6804 */ sllv $t5, $t4, $v0 -/* B6C3D0 800F5230 914B0005 */ lbu $t3, 5($t2) -/* B6C3D4 800F5234 0164082A */ slt $at, $t3, $a0 -/* B6C3D8 800F5238 50200004 */ beql $at, $zero, .L800F524C -/* B6C3DC 800F523C 24420001 */ addiu $v0, $v0, 1 -/* B6C3E0 800F5240 00AD2821 */ addu $a1, $a1, $t5 -/* B6C3E4 800F5244 30A5FFFF */ andi $a1, $a1, 0xffff -/* B6C3E8 800F5248 24420001 */ addiu $v0, $v0, 1 -.L800F524C: -/* B6C3EC 800F524C 304200FF */ andi $v0, $v0, 0xff -/* B6C3F0 800F5250 28410010 */ slti $at, $v0, 0x10 -/* B6C3F4 800F5254 5420FFF2 */ bnezl $at, .L800F5220 -/* B6C3F8 800F5258 00024080 */ sll $t0, $v0, 2 -/* B6C3FC 800F525C 00077600 */ sll $t6, $a3, 0x18 -/* B6C400 800F5260 01D27825 */ or $t7, $t6, $s2 -/* B6C404 800F5264 0C03E803 */ jal Audio_QueueSeqCmd -/* B6C408 800F5268 01E52025 */ or $a0, $t7, $a1 -/* B6C40C 800F526C 26100001 */ addiu $s0, $s0, 1 -/* B6C410 800F5270 321000FF */ andi $s0, $s0, 0xff -/* B6C414 800F5274 2A010002 */ slti $at, $s0, 2 -/* B6C418 800F5278 1420FFBF */ bnez $at, .L800F5178 -/* B6C41C 800F527C 02001025 */ move $v0, $s0 -.L800F5280: -/* B6C420 800F5280 8FBF002C */ lw $ra, 0x2c($sp) -.L800F5284: -/* B6C424 800F5284 8FB00018 */ lw $s0, 0x18($sp) -/* B6C428 800F5288 8FB1001C */ lw $s1, 0x1c($sp) -/* B6C42C 800F528C 8FB20020 */ lw $s2, 0x20($sp) -/* B6C430 800F5290 8FB30024 */ lw $s3, 0x24($sp) -/* B6C434 800F5294 8FB40028 */ lw $s4, 0x28($sp) -/* B6C438 800F5298 03E00008 */ jr $ra -/* B6C43C 800F529C 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/data/audio_synthesis.data.s b/data/audio_synthesis.data.s index 22bae93b12..b2c81bdc94 100644 --- a/data/audio_synthesis.data.s +++ b/data/audio_synthesis.data.s @@ -87,25 +87,7 @@ glabel D_8012FE24 .incbin "baserom.z64", 0xBA6FC4, 0x4 glabel gStereoPanVolume - .incbin "baserom.z64", 0xBA6FC8, 0x1D7 - -glabel D_8012FFFF - .incbin "baserom.z64", 0xBA719F, 0x2 - -glabel D_80130001 - .incbin "baserom.z64", 0xBA71A1, 0x1 - -glabel D_80130002 - .incbin "baserom.z64", 0xBA71A2, 0x2 - -glabel D_80130004 - .incbin "baserom.z64", 0xBA71A4, 0x2 - -glabel D_80130006 - .incbin "baserom.z64", 0xBA71A6, 0x1E - -glabel D_80130024 - .incbin "baserom.z64", 0xBA71C4, 0x4 + .incbin "baserom.z64", 0xBA6FC8, 0x200 glabel gDefaultPanVolume .incbin "baserom.z64", 0xBA71C8, 0x1FC diff --git a/data/code_800EC960.data.s b/data/code_800EC960.data.s deleted file mode 100644 index 745532b5aa..0000000000 --- a/data/code_800EC960.data.s +++ /dev/null @@ -1,460 +0,0 @@ -.include "macro.inc" - -# assembler directives -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 # allow use of 64-bit general purpose registers - -.section .data - -.balign 16 - -glabel D_80130570 - .incbin "baserom.z64", 0xBA7710, 0x8 - -glabel D_80130578 - .incbin "baserom.z64", 0xBA7718, 0x1C - -glabel D_80130594 - .incbin "baserom.z64", 0xBA7734, 0x1C - -glabel D_801305B0 - .incbin "baserom.z64", 0xBA7750, 0x4 - -glabel D_801305B4 - .incbin "baserom.z64", 0xBA7754, 0x4 - -glabel D_801305B8 - .incbin "baserom.z64", 0xBA7758, 0x4 - -glabel D_801305BC - .incbin "baserom.z64", 0xBA775C, 0x4 - -glabel D_801305C0 - .incbin "baserom.z64", 0xBA7760, 0x4 - -glabel D_801305C4 - .incbin "baserom.z64", 0xBA7764, 0x8 - -glabel sAudioIncreasingTranspose - .incbin "baserom.z64", 0xBA776C, 0x4 - -glabel gMorphaTransposeTable - .incbin "baserom.z64", 0xBA7770, 0x10 - -glabel sPrevChargeLevel - .incbin "baserom.z64", 0xBA7780, 0x4 - -glabel D_801305E4 - .incbin "baserom.z64", 0xBA7784, 0x10 - -glabel D_801305F4 - .incbin "baserom.z64", 0xBA7794, 0x4 - -glabel D_801305F8 - .incbin "baserom.z64", 0xBA7798, 0x8 - -glabel D_80130600 - .incbin "baserom.z64", 0xBA77A0, 0x4 - -glabel D_80130604 - .incbin "baserom.z64", 0xBA77A4, 0x4 - -glabel D_80130608 - .incbin "baserom.z64", 0xBA77A8, 0x4 - -glabel sAudioCutsceneFlag - .incbin "baserom.z64", 0xBA77AC, 0x4 - -glabel sSpecReverb - .incbin "baserom.z64", 0xBA77B0, 0x4 - -glabel sAudioEnvReverb - .incbin "baserom.z64", 0xBA77B4, 0x4 - -glabel sAudioCodeReverb - .incbin "baserom.z64", 0xBA77B8, 0x4 - -glabel D_8013061C - .incbin "baserom.z64", 0xBA77BC, 0x4 - -glabel sAudioEnemyDist - .incbin "baserom.z64", 0xBA77C0, 0x4 - -glabel sAudioEnemyVol - .incbin "baserom.z64", 0xBA77C4, 0x4 - -glabel D_80130628 - .incbin "baserom.z64", 0xBA77C8, 0x4 - -glabel D_8013062C - .incbin "baserom.z64", 0xBA77CC, 0x4 - -glabel D_80130630 - .incbin "baserom.z64", 0xBA77D0, 0x4 - -glabel D_80130634 - .incbin "baserom.z64", 0xBA77D4, 0x4 - -glabel D_80130638 - .incbin "baserom.z64", 0xBA77D8, 0x4 - -glabel D_8013063C - .incbin "baserom.z64", 0xBA77DC, 0x4 - -glabel D_80130640 - .incbin "baserom.z64", 0xBA77E0, 0x4 - -glabel D_80130644 - .incbin "baserom.z64", 0xBA77E4, 0x4 - -glabel D_80130648 - .incbin "baserom.z64", 0xBA77E8, 0x4 - -glabel sSariaBgmPtr - .incbin "baserom.z64", 0xBA77EC, 0x4 - -glabel D_80130650 - .incbin "baserom.z64", 0xBA77F0, 0x4 - -glabel D_80130654 - .incbin "baserom.z64", 0xBA77F4, 0x4 - -glabel D_80130658 - .incbin "baserom.z64", 0xBA77F8, 0x70 - -glabel sSpecReverbs - .incbin "baserom.z64", 0xBA7868, 0x14 - -glabel D_801306DC - .incbin "baserom.z64", 0xBA787C, 0x820 - -glabel sOcarinaAllowedBtnMask - .incbin "baserom.z64", 0xBA809C, 0x4 - -glabel sOcarinaABtnMap - .incbin "baserom.z64", 0xBA80A0, 0x4 - -glabel sOcarinaCUPBtnMap - .incbin "baserom.z64", 0xBA80A4, 0x4 - -glabel sOcarinaCDownBtnMap - .incbin "baserom.z64", 0xBA80A8, 0x4 - -glabel sOcarinaInpEnabled - .incbin "baserom.z64", 0xBA80AC, 0x4 - -glabel D_80130F10 - .incbin "baserom.z64", 0xBA80B0, 0x4 - -glabel sCurOcarinaBtnVal - .incbin "baserom.z64", 0xBA80B4, 0x4 - -glabel sPrevOcarinaNoteVal - .incbin "baserom.z64", 0xBA80B8, 0x4 - -glabel sCurOcarinaBtnIdx - .incbin "baserom.z64", 0xBA80BC, 0x4 - -glabel sLearnSongLastBtn - .incbin "baserom.z64", 0xBA80C0, 0x4 - -glabel D_80130F24 - .incbin "baserom.z64", 0xBA80C4, 0x4 - -glabel D_80130F28 - .incbin "baserom.z64", 0xBA80C8, 0x4 - -glabel D_80130F2C - .incbin "baserom.z64", 0xBA80CC, 0x4 - -glabel D_80130F30 - .incbin "baserom.z64", 0xBA80D0, 0x4 - -glabel D_80130F34 - .incbin "baserom.z64", 0xBA80D4, 0x4 - -glabel sPlaybackState - .incbin "baserom.z64", 0xBA80D8, 0x4 - -glabel D_80130F3C - .incbin "baserom.z64", 0xBA80DC, 0x4 - -glabel sNotePlaybackTimer - .incbin "baserom.z64", 0xBA80E0, 0x4 - -glabel sPlaybackNotePos - .incbin "baserom.z64", 0xBA80E4, 0x4 - -glabel sStaffPlaybackPos - .incbin "baserom.z64", 0xBA80E8, 0x4 - -glabel D_80130F4C - .incbin "baserom.z64", 0xBA80EC, 0x4 - -glabel sDisplayedNoteValue - .incbin "baserom.z64", 0xBA80F0, 0x4 - -glabel sNotePlaybackVolume - .incbin "baserom.z64", 0xBA80F4, 0x4 - -glabel sNotePlaybackVibrato - .incbin "baserom.z64", 0xBA80F8, 0x4 - -glabel sNotePlaybackTone - .incbin "baserom.z64", 0xBA80FC, 0x4 - -glabel sNormalizedNotePlaybackTone - .incbin "baserom.z64", 0xBA8100, 0x4 - -glabel sNormalizedNotePlaybackVolume - .incbin "baserom.z64", 0xBA8104, 0x4 - -glabel D_80130F68 - .incbin "baserom.z64", 0xBA8108, 0x4 - -glabel sOcarinaNoteValues - .incbin "baserom.z64", 0xBA810C, 0x8 - -glabel sOcaMinigameApndPos - .incbin "baserom.z64", 0xBA8114, 0x4 - -glabel sOcaMinigameEndPos - .incbin "baserom.z64", 0xBA8118, 0x4 - -glabel sOcaMinigameNoteCnts - .incbin "baserom.z64", 0xBA811C, 0x4 - -glabel sOcarinaSongs - .incbin "baserom.z64", 0xBA8120, 0x8C0 - -glabel sPlaybackSong - .word sOcarinaSongs - -glabel D_80131844 - .incbin "baserom.z64", 0xBA89E4, 0x10 - -glabel gFrogsSongPtr - .word D_80131844 - -glabel D_80131858 - .incbin "baserom.z64", 0xBA89F8, 0x4 - -glabel sRecordSongPos - .incbin "baserom.z64", 0xBA89FC, 0x4 - -glabel D_80131860 - .incbin "baserom.z64", 0xBA8A00, 0x4 - -glabel D_80131864 - .incbin "baserom.z64", 0xBA8A04, 0x4 - -glabel D_80131868 - .incbin "baserom.z64", 0xBA8A08, 0x4 - -glabel D_8013186C - .incbin "baserom.z64", 0xBA8A0C, 0x4 - -glabel D_80131870 - .incbin "baserom.z64", 0xBA8A10, 0x4 - -glabel D_80131874 - .incbin "baserom.z64", 0xBA8A14, 0x4 - -glabel D_80131878 - .incbin "baserom.z64", 0xBA8A18, 0x4 - -glabel D_8013187C - .incbin "baserom.z64", 0xBA8A1C, 0x4 - -glabel D_80131880 - .incbin "baserom.z64", 0xBA8A20, 0x4 - -glabel sPierresSong - .incbin "baserom.z64", 0xBA8A24, 0x360 - -glabel gScarecrowCustomSongPtr - .word sPierresSong - -glabel gScarecrowSpawnSongPtr - .word sOcarinaSongs+0x780 - -glabel D_80131BEC - .word sOcarinaSongs+0x820 - -glabel sNoteValueIndexMap - .incbin "baserom.z64", 0xBA8D90, 0x10 - -glabel gOcarinaSongNotes - .incbin "baserom.z64", 0xBA8DA0, 0x80 - -glabel D_80131C80 - .incbin "baserom.z64", 0xBA8E20, 0x4 - -glabel D_80131C84 - .incbin "baserom.z64", 0xBA8E24, 0x4 - -glabel D_80131C88 - .incbin "baserom.z64", 0xBA8E28, 0x4 - -glabel D_80131C8C - .incbin "baserom.z64", 0xBA8E2C, 0x4 - -glabel sAudioUpdateDuration - .incbin "baserom.z64", 0xBA8E30, 0x4 - -glabel sAudioUpdateDurationMax - .incbin "baserom.z64", 0xBA8E34, 0x4 - -glabel sAudioDebugEverOpened - .incbin "baserom.z64", 0xBA8E38, 0x4 - -glabel sAudioSEMuted - .incbin "baserom.z64", 0xBA8E3C, 0x4 - -glabel sAudioDebugPage - .incbin "baserom.z64", 0xBA8E40, 0x4 - -glabel sAudioSndContSel - .incbin "baserom.z64", 0xBA8E44, 0x4 - -glabel sAudioDebugTextColor - .incbin "baserom.z64", 0xBA8E48, 0x4 - -glabel sAudioDebugPageNames - .incbin "baserom.z64", 0xBA8E4C, 0x15C - -glabel sAudioSndContWork - .incbin "baserom.z64", 0xBA8FA8, 0x18 - -glabel sAudioSndContWorkLims - .incbin "baserom.z64", 0xBA8FC0, 0x18 - -glabel sSoundBankNames - .incbin "baserom.z64", 0xBA8FD8, 0xB - .incbin "baserom.z64", 0xBA8FE3, 0xB - .incbin "baserom.z64", 0xBA8FEE, 0xB - .incbin "baserom.z64", 0xBA8FF9, 0xB - .incbin "baserom.z64", 0xBA9004, 0xB - .incbin "baserom.z64", 0xBA900F, 0xB - .incbin "baserom.z64", 0xBA901A, 0xE - -glabel sSoundModeNames - .incbin "baserom.z64", 0xBA9028, 0x34 - -glabel sAudioIntInfoX - .incbin "baserom.z64", 0xBA905C, 0x4 - -glabel sAudioIntInfoY - .incbin "baserom.z64", 0xBA9060, 0x4 - -glabel sAudioIntInfoSel - .incbin "baserom.z64", 0xBA9064, 0x4 - -glabel sAudioIntInfoBankPage - .incbin "baserom.z64", 0xBA9068, 0x8 - -glabel sAudioScrPrtSel - .incbin "baserom.z64", 0xBA9070, 0x4 - -glabel sAudioScrPrtInd - .incbin "baserom.z64", 0xBA9074, 0x4 - -glabel sAudioScrPrtOverflow - .incbin "baserom.z64", 0xBA9078, 0x4 - -glabel sAudioScrPrtX - .incbin "baserom.z64", 0xBA907C, 0x4 - -glabel sAudioScrPrtY - .incbin "baserom.z64", 0xBA9080, 0x4 - -glabel sAudioScrPrtWork - .incbin "baserom.z64", 0xBA9084, 0xC - -glabel sAudioScrPrtWorkLims - .incbin "baserom.z64", 0xBA9090, 0xC - -glabel sAudioSubTrackInfoSpec - .incbin "baserom.z64", 0xBA909C, 0x4 - -glabel sAudioSEFlagSwapIsEditing - .incbin "baserom.z64", 0xBA90A0, 0x4 - -glabel sAudioSEFlagSwapSel - .incbin "baserom.z64", 0xBA90A4, 0x4 - -glabel sAudioSEFlagSwapNibbleSel - .incbin "baserom.z64", 0xBA90A8, 0x4 - -glabel sAudioSEFlagSwapModeNames - .incbin "baserom.z64", 0xBA90AC, 0xC - -glabel sAudioSEParamChgSel - .incbin "baserom.z64", 0xBA90B8, 0x4 - -glabel sAudioSEParamChgBitSel - .incbin "baserom.z64", 0xBA90BC, 0x4 - -glabel sAudioSEParamChgWork - .incbin "baserom.z64", 0xBA90C0, 0x8 - -glabel sAudioSubTrackInfoPlayerSel - .incbin "baserom.z64", 0xBA90C8, 0x4 - -glabel sAudioSubTrackInfoChannelSel - .incbin "baserom.z64", 0xBA90CC, 0x4 - -glabel sSeqPlayerPeakNumLayers - .incbin "baserom.z64", 0xBA90D0, 0x14 - -glabel sAudioSceneNames - .incbin "baserom.z64", 0xBA90E4, 0x8 - -glabel sAudioBlkChgBgmWork - .incbin "baserom.z64", 0xBA90EC, 0x4 - -glabel sAudioBlkChgBgmSel - .incbin "baserom.z64", 0xBA90F0, 0x4 - -glabel sBoolStrs - .incbin "baserom.z64", 0xBA90F4, 0x10 - -glabel sAudioNatureFailed - .incbin "baserom.z64", 0xBA9104, 0x4 - -glabel sPeakNumNotes - .incbin "baserom.z64", 0xBA9108, 0x4 - -glabel D_80131F6C - .incbin "baserom.z64", 0xBA910C, 0x4 - -glabel D_80131F70 - .incbin "baserom.z64", 0xBA9110, 0x7CC - -glabel D_8013273C - .incbin "baserom.z64", 0xBA98DC, 0x380 - -glabel D_80132ABC - .incbin "baserom.z64", 0xBA9C5C, 0x140 - -glabel D_80132BFC - .incbin "baserom.z64", 0xBA9D9C, 0x3E0 - -glabel D_80132FDC - .incbin "baserom.z64", 0xBAA17C, 0x120 - -glabel D_801330FC - .incbin "baserom.z64", 0xBAA29C, 0x20 - -glabel D_8013311C - .incbin "baserom.z64", 0xBAA2BC, 0x200 - -glabel D_8013331C - .word D_8013273C - .word D_80132ABC - .word D_80132BFC - .word D_80131F70 - .word D_80132FDC - .word D_801330FC - .word D_8013311C diff --git a/include/variables.h b/include/variables.h index 4d5adfe289..dec09876c8 100644 --- a/include/variables.h +++ b/include/variables.h @@ -340,8 +340,6 @@ extern s32 gDebugArenaLogSeverity; //extern ? sUCodeDisasModeLMacros; extern s16* gWaveSamples[9]; extern f32 gPitchBendFrequencyScale[256]; -//extern ? D_8012F098; -//extern ? D_8012F0B0; extern f32 D_8012F4B4[256]; extern f32 gNoteFrequencies[]; extern u8 gDefaultShortNoteVelocityTable[16]; @@ -352,109 +350,21 @@ extern NoteSubEu gDefaultNoteSub; extern u16 gHeadsetPanQuantization[0x10]; extern f32 gHeadsetPanVolume[128]; extern f32 gStereoPanVolume[128]; -//extern ? D_8012FBAA; -//extern ? D_8012FFFF; -//extern ? D_80130001; -//extern ? D_80130002; -//extern ? D_80130004; -//extern ? D_80130006; extern f32 gDefaultPanVolume[128]; extern s16 D_80130228[]; extern s16 D_80130328[]; -//extern ? D_801304A0; -//extern ? D_801304AC; -//extern ? D_801304C0; extern s32 gAudioContextInitalized; -//extern ? D_801304E8; -//extern ? D_80130500; extern f32 D_80130510; extern s32 D_80130514; -extern u8 D_80130570[8]; +extern u8 D_80130570[7]; extern u8 D_80130578[4][7]; extern u8 D_80130594[4][7]; -//extern ? D_801305B4; -//extern ? D_801305B8; -//extern ? D_801305BC; -//extern ? D_801305C0; extern u8 gMorphaTransposeTable[16]; -//extern ? D_801305E0; -//extern ? D_801305F4; -//extern ? D_80130600; -//extern ? D_80130604; -//extern ? D_80130608; -//extern ? D_8013061C; -//extern ? D_80130628; -//extern ? D_8013062C; -//extern ? D_80130630; -//extern ? D_80130634; -//extern ? D_80130638; -//extern ? D_8013063C; -//extern ? D_80130640; -//extern ? D_80130644; -//extern ? D_80130648; -//extern ? D_80130650; -//extern ? D_80130654; -//extern ? D_80130658; -//extern ? D_801306DC; -//extern ? sOcarinaAllowedBtnMask; -//extern ? sOcarinaABtnMap; -//extern ? sOcarinaCUPBtnMap; -//extern ? sOcarinaCDownBtnMap; -//extern ? sOcarinaInpEnabled; -//extern ? D_80130F10; -//extern ? sCurOcarinaBtnVal; -//extern ? sPrevOcarinaNoteVal; -//extern ? sCurOcarinaBtnIdx; -//extern ? sLearnSongLastBtn; -//extern ? D_80130F24; -//extern ? D_80130F28; -//extern ? D_80130F2C; -//extern ? D_80130F30; -//extern ? D_80130F34; -//extern ? sPlaybackState; -//extern ? D_80130F3C; -//extern ? sNotePlaybackTimer; -//extern ? sPlaybackNotePos; -//extern ? sStaffPlaybackPos; -//extern ? D_80130F4C; -//extern ? sDisplayedNoteValue; -//extern ? sNotePlaybackVolume; -//extern ? sNotePlaybackVibrato; -//extern ? sNotePlaybackTone; -//extern ? sNormalizedNotePlaybackTone; -//extern ? sNormalizedNotePlaybackVolume; -//extern ? D_80130F68; -//extern ? sOcarinaNoteValues; -//extern ? sOcaMinigameApndPos; -//extern ? sOcaMinigameEndPos; -//extern ? sOcarinaSongs; -//extern ? D_80131100; -//extern ? D_80131840; -extern u8* gFrogsSongPtr; // D_80131854: pointer to a u8 array of the notes you need to play for the frogs -//extern ? D_80131858; -//extern ? sRecordSongPos; -//extern ? D_80131860; -//extern ? D_80131864; -//extern ? D_80131868; -//extern ? D_8013186C; -//extern ? D_80131870; -//extern ? D_80131874; -//extern ? D_80131878; -//extern ? D_8013187C; -//extern ? D_80131880; -//extern ? sPierresSong; -//extern ? D_8013188C; -extern OcarinaSong* gScarecrowCustomSongPtr; +extern u8* gFrogsSongPtr; +extern OcarinaNote* gScarecrowCustomSongPtr; extern u8* gScarecrowSpawnSongPtr; -//extern ? D_80131BEC; -//extern ? D_80131BF0; extern OcarinaSongInfo gOcarinaSongNotes[]; -//extern ? D_80131C80; -//extern ? D_80131C84; -//extern ? D_80131C88; -//extern ? D_80131F6C; -extern Struct_8013331C *D_8013331C[]; -//extern ? D_80133344; +extern SoundParams* gSoundParams[7]; extern char D_80133390[]; extern char D_80133398[]; extern SoundBankEntry* gSoundBanks[7]; diff --git a/include/z64audio.h b/include/z64audio.h index 1b9ad9caba..b91e3464f9 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -1057,9 +1057,9 @@ typedef struct { /* 0x14 */ f32* unk_14; /* 0x18 */ s8* reverbAdd; /* 0x1C */ f32 dist; - /* 0x20 */ u32 unk_20; - /* 0x24 */ u8 unk_24; - /* 0x26 */ u16 unk_26; + /* 0x20 */ u32 priority; // lower is more prioritized + /* 0x24 */ u8 sfxImportance; + /* 0x26 */ u16 sfxParams; /* 0x28 */ u16 sfxId; /* 0x2A */ u8 unk_2A; /* 0x2B */ u8 unk_2B; @@ -1091,14 +1091,14 @@ typedef struct { #define SFX_BANK(sfxId) SFX_BANK_SHIFT(SFX_BANK_MASK(sfxId)) typedef struct { - u32 unk_0; + u32 priority; // lower is more prioritized u8 unk_4; } Struct_800F7CEC; typedef struct { - u8 unk_0; - u16 unk_2; -} Struct_8013331C; + u8 importance; + u16 params; +} SoundParams; typedef struct { /* 0x0000 */ u8 noteIdx; @@ -1110,10 +1110,6 @@ typedef struct { /* 0x0007 */ u8 semitone; } OcarinaNote; // size = 0x8 -typedef struct { - /* 0x0000 */ OcarinaNote notes[20]; -} OcarinaSong; // size = 0xA0 - #define Audio_DisableSeq(seqIdx, fadeOut) Audio_QueueCmdS32(0x83000000 | ((u8)seqIdx << 16), fadeOut) #define Audio_Cmd82(seqIdx, a, b) Audio_QueueCmdS32(0x82000000 | ((u8)seqIdx << 16) | ((u8)a << 8), b) #define Audio_StartSeq(seqIdx, fadeTimer, seqId) Audio_QueueSeqCmd(0x00000000 | ((u8)seqIdx << 24) | ((u8)(fadeTimer) << 0x10) | (u16)seqId) diff --git a/spec b/spec index 187864e180..7651475d85 100644 --- a/spec +++ b/spec @@ -416,7 +416,7 @@ beginseg include "build/data/audio_effects.data.o" include "build/src/code/audio_seqplayer.o" include "build/src/code/code_800EC960.o" - include "build/data/code_800EC960.data.o" + include "build/src/code/audio_sound_params.o" include "build/src/code/code_800F7260.o" include "build/data/code_800F7260.bss.o" include "build/src/code/code_800F9280.o" diff --git a/src/code/audio_sound_params.c b/src/code/audio_sound_params.c new file mode 100644 index 0000000000..a0ce296309 --- /dev/null +++ b/src/code/audio_sound_params.c @@ -0,0 +1,241 @@ +#include "ultra64.h" +#include "global.h" + +SoundParams sEnemyBankParams[] = { + { 0x18, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x3 }, + { 0x38, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x20, 0x81 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, + { 0x40, 0x3 }, { 0x20, 0x2000 }, { 0x28, 0x3 }, { 0x28, 0x3 }, { 0x20, 0x2 }, { 0x28, 0x3 }, + { 0x38, 0x3 }, { 0x30, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x18, 0x0 }, { 0x14, 0x0 }, + { 0x14, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x44, 0x3 }, { 0x18, 0x0 }, { 0x30, 0x2 }, + { 0x32, 0x2 }, { 0x38, 0x1 }, { 0x20, 0x0 }, { 0x40, 0x1 }, { 0x18, 0x0 }, { 0x28, 0x0 }, + { 0x18, 0x0 }, { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x14, 0x0 }, { 0x18, 0x80 }, + { 0x38, 0x2 }, { 0x30, 0x0 }, { 0x28, 0x1 }, { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, + { 0x30, 0x0 }, { 0x18, 0x0 }, { 0x20, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x1 }, + { 0x40, 0x1 }, { 0x38, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x38, 0x1 }, + { 0x20, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x3 }, { 0x30, 0x2000 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x18, 0x3 }, { 0x30, 0x3 }, { 0x28, 0x0 }, { 0x30, 0x0 }, + { 0x18, 0x0 }, { 0x30, 0x0 }, { 0x28, 0x0 }, { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, + { 0x28, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x14, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, + { 0x40, 0x1 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x38, 0x1 }, + { 0x20, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x14, 0x0 }, { 0x30, 0x3 }, { 0x20, 0x1 }, + { 0x20, 0x1 }, { 0x30, 0x2 }, { 0x30, 0x2 }, { 0x38, 0x2 }, { 0x40, 0x2 }, { 0x40, 0x2 }, + { 0x14, 0x81 }, { 0x34, 0x0 }, { 0x40, 0x0 }, { 0x20, 0x0 }, { 0x28, 0x0 }, { 0x28, 0x0 }, + { 0x30, 0x0 }, { 0x14, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x20, 0x0 }, { 0x30, 0x3 }, + { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x40, 0x3 }, { 0x40, 0x1 }, { 0x28, 0x1 }, { 0x30, 0x3 }, + { 0x20, 0x0 }, { 0x38, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x0 }, + { 0x38, 0x2000 }, { 0x30, 0x3 }, { 0x30, 0x2000 }, { 0x30, 0x0 }, { 0x14, 0x0 }, { 0x38, 0x1 }, + { 0x40, 0x1 }, { 0x14, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x1 }, + { 0x40, 0x1 }, { 0x30, 0x0 }, { 0x34, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x3 }, { 0x30, 0x2 }, + { 0x30, 0x2000 }, { 0x20, 0x43 }, { 0x20, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x38, 0x3 }, { 0x30, 0x2000 }, { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x30, 0x2000 }, { 0x30, 0x3 }, + { 0x38, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x403 }, { 0x38, 0x1 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x20, 0x0 }, { 0x34, 0x0 }, { 0x18, 0x1 }, { 0x20, 0x2000 }, + { 0x30, 0x2000 }, { 0x14, 0x3 }, { 0x28, 0x3 }, { 0x28, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, + { 0x20, 0x0 }, { 0x14, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x28, 0x0 }, { 0x28, 0x0 }, + { 0x40, 0x1 }, { 0x40, 0x1 }, { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x14, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x38, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x1 }, { 0x28, 0x3 }, + { 0x28, 0x83 }, { 0x28, 0x82 }, { 0x30, 0x3 }, { 0x30, 0x2000 }, { 0x30, 0x2000 }, { 0x38, 0x1 }, + { 0x20, 0x0 }, { 0x34, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x34, 0x2000 }, { 0x20, 0x0 }, + { 0x38, 0x0 }, { 0x40, 0x1 }, { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x30, 0x2 }, { 0x38, 0x3 }, + { 0x30, 0x3 }, { 0x32, 0x3 }, { 0x34, 0x3 }, { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x28, 0x82 }, { 0x40, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x80 }, { 0x30, 0x3 }, { 0x18, 0x3 }, + { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x18, 0x3 }, { 0x30, 0x2000 }, { 0x38, 0x3 }, + { 0x30, 0x3 }, { 0x40, 0x3 }, { 0x40, 0x2000 }, { 0x38, 0x3 }, { 0x30, 0x2000 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x2 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x2000 }, { 0x38, 0x3 }, { 0x38, 0x3 }, { 0x38, 0x3 }, + { 0x38, 0x2000 }, { 0x40, 0x2000 }, { 0x18, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x20, 0x2 }, + { 0x24, 0x3 }, { 0x28, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x18, 0x1 }, { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x1 }, { 0x14, 0x0 }, + { 0x40, 0x1 }, { 0x30, 0x1 }, { 0x30, 0x1 }, { 0x30, 0x1 }, { 0x38, 0x3 }, { 0x30, 0x0 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x38, 0x3 }, { 0x30, 0x2 }, { 0x38, 0x3 }, + { 0x38, 0x3 }, { 0x30, 0x83 }, { 0x38, 0x3 }, { 0x30, 0x3 }, { 0x34, 0x3 }, { 0x20, 0x2 }, + { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x20, 0x3 }, { 0x14, 0x0 }, { 0x20, 0x1 }, + { 0x30, 0x3 }, { 0x40, 0x1 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x20, 0x0 }, { 0x20, 0x0 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x28, 0x2 }, { 0x30, 0x0 }, + { 0x38, 0x1 }, { 0x28, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x40, 0x3 }, + { 0x14, 0x0 }, { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x30, 0x1 }, { 0x40, 0x1 }, { 0x28, 0x0 }, + { 0x28, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x2000 }, { 0x38, 0x3 }, { 0x38, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x34, 0x3 }, + { 0x38, 0x3 }, { 0x40, 0x3 }, { 0x10, 0x0 }, { 0x34, 0x0 }, { 0x18, 0x0 }, { 0x30, 0x0 }, + { 0x14, 0x0 }, { 0x34, 0x0 }, { 0x28, 0x1 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x0 }, + { 0x38, 0x3 }, { 0x20, 0x0 }, { 0x20, 0x2 }, { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x38, 0x3 }, { 0x30, 0x3 }, { 0x20, 0x2000 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x40, 0x1 }, + { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x2000 }, + { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x18, 0x0 }, { 0x28, 0x0 }, + { 0x34, 0x0 }, { 0x34, 0x0 }, { 0x34, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x30, 0x3 }, + { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x38, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x40, 0x3 }, { 0x40, 0x2 }, { 0x18, 0x0 }, { 0x44, 0x3 }, { 0x34, 0x0 }, { 0x18, 0x0 }, + { 0x30, 0x0 }, { 0x38, 0x1 }, { 0x40, 0x1 }, { 0x18, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, + { 0x38, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, { 0x36, 0x3 }, { 0x34, 0x3 }, { 0x28, 0x82 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x0 }, { 0x30, 0x2000 }, { 0x30, 0x2000 }, { 0x30, 0x2000 }, { 0x30, 0x0 }, { 0x30, 0x2000 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x28, 0x3 }, { 0x30, 0x3 }, { 0x40, 0x3 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x38, 0x3 }, { 0x38, 0x3 }, + { 0x20, 0x3 }, { 0x30, 0x3 }, { 0x44, 0x3 }, { 0x30, 0x83 }, { 0x30, 0x3 }, { 0x30, 0x3 }, + { 0x34, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x20, 0x2 }, { 0x30, 0x3 }, { 0x20, 0x3 }, + { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x40, 0x2 }, { 0x40, 0x3 }, { 0x34, 0x2 }, { 0x30, 0x3 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x1 }, { 0x34, 0x3 }, { 0x24, 0x3 }, { 0x34, 0x1 }, + { 0x20, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x8, 0x1 }, { 0x30, 0x1 }, { 0x30, 0x3 }, + { 0x38, 0x3 }, { 0x20, 0x2000 }, { 0x34, 0x3 }, { 0x34, 0x2000 }, { 0x8, 0x0 }, { 0x40, 0x3 }, + { 0x34, 0x3 }, +}; + +SoundParams sPlayerBankParams[] = { + { 0x20, 0x480 }, { 0x20, 0x480 }, { 0x20, 0x480 }, { 0x20, 0x480 }, { 0x20, 0x440 }, { 0x20, 0x440 }, + { 0x20, 0x440 }, { 0x20, 0x440 }, { 0x20, 0x480 }, { 0x20, 0x440 }, { 0x20, 0x480 }, { 0x20, 0x400 }, + { 0x20, 0x400 }, { 0x20, 0x400 }, { 0x20, 0x400 }, { 0x20, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, + { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, + { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x400 }, + { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, + { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, + { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, { 0x40, 0x440 }, + { 0x30, 0x80 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x400 }, { 0x30, 0x400 }, + { 0x30, 0x400 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x80 }, { 0x30, 0x400 }, { 0x30, 0x400 }, + { 0x40, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x402 }, { 0x30, 0x400 }, { 0x30, 0x40 }, { 0x30, 0x40 }, + { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, + { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, + { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, + { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, { 0x80, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x80 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2000 }, { 0x30, 0xc00 }, { 0x30, 0x400 }, + { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x20, 0x80 }, { 0x20, 0x80 }, { 0x20, 0x80 }, { 0x20, 0x80 }, + { 0x20, 0x40 }, { 0x20, 0x40 }, { 0x20, 0x40 }, { 0x20, 0x40 }, { 0x20, 0x80 }, { 0x20, 0x80 }, + { 0x20, 0x80 }, { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x0 }, { 0x20, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, + { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, + { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x40, 0x0 }, + { 0x40, 0x0 }, { 0x40, 0x0 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, + { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, + { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, { 0x30, 0x440 }, + { 0x30, 0xc00 }, { 0x30, 0x80 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x60, 0x2 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x800 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, +}; + +SoundParams sItemBankParams[] = { + { 0x30, 0x8040 }, { 0x30, 0x40 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x440 }, { 0x30, 0x440 }, + { 0x60, 0x83 }, { 0x30, 0x440 }, { 0x80, 0x43 }, { 0x30, 0x0 }, { 0x30, 0x40 }, { 0x30, 0x400 }, + { 0x30, 0x401 }, { 0x50, 0x0 }, { 0x90, 0x2 }, { 0x50, 0x2 }, { 0x30, 0x400 }, { 0x40, 0x2 }, + { 0x30, 0x40 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x34, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x80 }, { 0x30, 0x40 }, { 0x30, 0x400 }, { 0x20, 0x400 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x60, 0x43 }, + { 0x30, 0x1 }, { 0x30, 0x401 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0xa0, 0x2 }, { 0xa0, 0x2 }, + { 0x30, 0x400 }, { 0x30, 0x0 }, { 0x60, 0x0 }, { 0x60, 0x0 }, { 0x60, 0x0 }, { 0x30, 0x400 }, + { 0x30, 0x0 }, { 0x60, 0x81 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x60, 0x8003 }, { 0x60, 0x8003 }, + { 0x60, 0x8003 }, { 0x30, 0x4000 }, { 0x30, 0x4000 }, { 0x30, 0x40 }, { 0x80, 0x3 }, { 0x80, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x40 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x80, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, +}; + +SoundParams sEnvBankParams[] = { + { 0x70, 0x640 }, { 0x80, 0x40 }, { 0x30, 0x0 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x40, 0x40 }, + { 0x30, 0x480 }, { 0x38, 0x2 }, { 0x30, 0x40 }, { 0x30, 0x40 }, { 0x80, 0x2 }, { 0xa0, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x2 }, { 0x30, 0x40 }, + { 0x30, 0x40 }, { 0x30, 0x0 }, { 0x60, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x82 }, + { 0x30, 0x0 }, { 0x40, 0x0 }, { 0x38, 0x0 }, { 0x28, 0x0 }, { 0x60, 0x0 }, { 0x70, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0xa0, 0x2008 }, { 0x20, 0x2 }, { 0x30, 0x0 }, + { 0x30, 0x800 }, { 0x30, 0x8800 }, { 0x30, 0x8000 }, { 0x30, 0x2 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x400 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x80 }, + { 0x60, 0x42 }, { 0x10, 0x0 }, { 0xa0, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x10 }, { 0x30, 0x3 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x0 }, { 0xa0, 0x3 }, + { 0x30, 0x0 }, { 0x30, 0x400 }, { 0x30, 0x400 }, { 0x70, 0x13 }, { 0x60, 0x8000 }, { 0x30, 0x8000 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2003 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x2010 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x40, 0x0 }, { 0x30, 0xc2 }, { 0x70, 0x2 }, + { 0x60, 0x2 }, { 0x30, 0x0 }, { 0x60, 0x1 }, { 0x30, 0x2 }, { 0x30, 0x0 }, { 0x90, 0x3 }, + { 0x90, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x3800 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x803 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x2 }, { 0x30, 0x2 }, { 0x40, 0x0 }, { 0x1c, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x60, 0x200 }, { 0x30, 0x800 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x3 }, + { 0x30, 0x3 }, { 0x30, 0x2000 }, { 0x30, 0x2000 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x80 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x800 }, { 0x30, 0x800 }, { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x8000 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x60, 0x3 }, + { 0x30, 0x80 }, { 0x30, 0x2000 }, { 0x30, 0x0 }, { 0x30, 0x1 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x2 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0xa0, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0xc0 }, { 0x30, 0x2 }, + { 0x30, 0x2 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x0 }, { 0x30, 0x4083 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x80, 0x0 }, { 0x60, 0x0 }, { 0x90, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x60, 0xc3 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x30, 0x3 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0xa0, 0x800 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x2 }, { 0x30, 0x0 }, { 0x30, 0x3 }, { 0x20, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, +}; + +SoundParams sSystemBankParams[] = { + { 0xc0, 0x0 }, { 0xc0, 0x0 }, { 0xb0, 0x20 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x50, 0x0 }, + { 0x30, 0x20 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x28, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x18, 0x0 }, { 0x2c, 0x0 }, { 0x2c, 0x0 }, { 0x20, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x20, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x60, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, +}; + +SoundParams sOcarinaBankParams[] = { + { 0x30, 0x0 }, { 0x30, 0x20 }, { 0x30, 0x642 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, +}; + +SoundParams sVoiceBankParams[] = { + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x20, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x442 }, { 0x30, 0x442 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x50, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x482 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x80, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x20, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x442 }, + { 0x30, 0x442 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x50, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x481 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, + { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x30, 0x402 }, { 0x60, 0x20 }, { 0x30, 0x20 }, + { 0x30, 0x20 }, { 0x60, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x0 }, + { 0x30, 0x0 }, { 0x30, 0x0 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8043 }, { 0x30, 0x8043 }, { 0x30, 0x8043 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, { 0x30, 0x8041 }, + { 0x30, 0x8041 }, { 0x30, 0x8041 }, +}; + +SoundParams* gSoundParams[7] = { + sPlayerBankParams, sItemBankParams, sEnvBankParams, sEnemyBankParams, + sSystemBankParams, sOcarinaBankParams, sVoiceBankParams, +}; diff --git a/src/code/code_800EC960.c b/src/code/code_800EC960.c index e107dd93aa..fe071b65a5 100644 --- a/src/code/code_800EC960.c +++ b/src/code/code_800EC960.c @@ -2,20 +2,20 @@ #include "global.h" typedef struct { - f32 unk_00; - f32 freqScale; - s8 reverb; - s8 panSigned; - s8 stereoBits; - u8 unk_0B; - u8 unk_0C; + /* 0x0 */ f32 unk_00; + /* 0x4 */ f32 freqScale; + /* 0x8 */ s8 reverb; + /* 0x9 */ s8 panSigned; + /* 0xA */ s8 stereoBits; + /* 0xB */ u8 unk_0B; + /* 0xC */ u8 unk_0C; } unk_s1; typedef struct { - f32 value; - f32 target; - f32 step; - s32 remainingFrames; + /* 0x0 */ f32 value; + /* 0x4 */ f32 target; + /* 0x8 */ f32 step; + /* 0xC */ s32 remainingFrames; } FreqLerp; typedef struct { @@ -43,151 +43,6 @@ typedef enum { /* 0xF */ PAGE_MAX } AudioDebugPage; -#define SCROLL_PRINT_BUF_SIZE 25 - -extern f32 D_8012F6B4[]; // from audio_synthesis - -// stick float vals -extern f32 D_801305B0; -extern s8 D_801305B4; -extern s8 D_801305B8; -extern s8 D_801305BC; -extern s8 D_801305C0; -extern f32 D_801305C4[2]; // = {-15.0f, -65.0f} -extern u8 sAudioIncreasingTranspose; // = 0 -extern u8 gMorphaTransposeTable[16]; // = {0, 0, 0, 1, 1, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8} -extern u8 sPrevChargeLevel; // = 0 -extern f32 D_801305E4[4]; // = {1.0f, 1.12246f, 1.33484f, 1.33484f} = 2**({0, 2, 5, 5}/12) -extern f32 D_801305F4; // = 1.0f -extern u8 D_801305F8[8]; // = {127, 80, 75, 73, 70, 68, 65, 60} -extern u8 D_80130600; // = 0 -extern s8 D_80130604; // = 2 -extern s8 D_80130608; // = 0 -extern s8 sAudioCutsceneFlag; // = 0 -extern s8 sSpecReverb; // = 0 -extern s8 sAudioEnvReverb; // = 0 -extern s8 sAudioCodeReverb; // = 0 -extern u8 D_8013061C; // = 0 -extern f32 sAudioEnemyDist; // = 0.0f -extern s8 sAudioEnemyVol; // = 127 -extern u16 D_80130628; // = 0xFFFF -extern u8 D_8013062C; // = 0 -extern u8 D_80130630; // = 0 -extern u32 D_80130634; // = 0 -extern u32 D_80130638; // = 0 -extern u8 D_8013063C; // = 0 -extern u8 D_80130640; // = 0 -extern u8 D_80130644; // = 0 -extern u8 D_80130648; // = 0 -extern Vec3f* sSariaBgmPtr; // = 0 -extern f32 D_80130650; // = 2000.0f -extern u8 D_80130654; // = 0 -extern u8 D_80130658[]; // 0x6D <= size <= 0x70 -extern s8 sSpecReverbs[20]; // = {0, 0, 0, 0, 0, 0, 0, 40, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -extern D_801306DC_s D_801306DC[20]; -extern u32 sOcarinaAllowedBtnMask; // 80130EFC -extern s32 sOcarinaABtnMap; // 80130F00 -extern s32 sOcarinaCUPBtnMap; // 80130F04 -extern s32 sOcarinaCDownBtnMap; // 80130F08 -extern u8 sOcarinaInpEnabled; // 80130F0C -extern s8 D_80130F10; // "OCA", ocarina active? -extern u8 sCurOcarinaBtnVal; // 80130F14 -extern u8 sPrevOcarinaNoteVal; // 80130F18 -extern u8 sCurOcarinaBtnIdx; // 80130F1C, note index? -extern u8 sLearnSongLastBtn; // 80130F20 -extern f32 D_80130F24; -extern f32 D_80130F28; -extern s8 D_80130F2C; // pitch? -extern s8 D_80130F30; -extern s8 D_80130F34; -extern u8 sPlaybackState; // 80130F38 -extern u32 D_80130F3C; // "SEQ" -extern u32 sNotePlaybackTimer; -extern u16 sPlaybackNotePos; -extern u16 sStaffPlaybackPos; -extern u16 D_80130F4C; -extern u8 sDisplayedNoteValue; // Note to display on screen? -extern u8 sNotePlaybackVolume; -extern u8 sNotePlaybackVibrato; -extern s8 sNotePlaybackTone; -extern f32 sNormalizedNotePlaybackTone; -extern f32 sNormalizedNotePlaybackVolume; -extern s32 D_80130F68; -extern u8 sOcarinaNoteValues[5]; -extern u8 sOcaMinigameApndPos; -extern u8 sOcaMinigameEndPos; -extern u8 sOcaMinigameNoteCnts[]; // <= 4 -extern OcarinaSong sOcarinaSongs[14]; // 80130F80 -extern OcarinaSong* sPlaybackSong; -// extern u8 D_80131844[]; -// extern u8* gFrogsSongPtr = D_80131844; -extern u8 D_80131858; // "REC" -extern u8 sRecordSongPos; -extern u32 D_80131860; -extern u8 D_80131864; -extern u8 D_80131868; -extern u8 D_8013186C; -extern s8 D_80131870; -extern u8 D_80131874; -extern u8 D_80131878; -extern u8 D_8013187C; -extern u8 D_80131880; -extern OcarinaSong sPierresSong; -// extern OcarinaNote* gScarecrowCustomSongPtr = &sPierresSong; -// extern OcarinaNote* gScarecrowSpawnSongPtr = &sOcarinaSongs[12]; -extern OcarinaSong* D_80131BEC; // = &sOcarinaSongs[13]; -extern u8 sNoteValueIndexMap[16]; // = {0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 5, 3, 3, 4, 4, 4} -// extern OcarinaSongInfo gOcarinaSongNotes[14]; -// D_80131C80 .. 88 are in-function static in func_800EE824 -extern f32 D_80131C8C; - -// Debug variables (separate file?): -extern f32 sAudioUpdateDuration; // = 0 -extern f32 sAudioUpdateDurationMax; // = 0 -extern u8 sAudioDebugEverOpened; // = 0 -extern u8 sAudioSEMuted; // = 0 -extern u8 sAudioDebugPage; // = 0 -extern u8 sAudioSndContSel; // = 0 -extern u8 sAudioDebugTextColor; // = 0 -extern char sAudioDebugPageNames[15][23]; -/* = {"Non", "Sound Control", "Spec Info", "Heap Info", "Grp Track Info", "Sub Track Info", - * "Channel Info", "Interface Info", "SE Flag Swap", "Block Change BGM", "Natural Sound Control", - * "Ocarina Test", "SE Parameter Change", "Scroll Print", "Free Area"} */ -extern u16 sAudioSndContWork[11]; // = {0} -extern u16 sAudioSndContWorkLims[11]; // = {128, 128, 7, 512, 4, 2, 16, 32, 2, 2, 2} -extern char sSoundBankNames[7][11]; -// = {"PLAYER", "PLAYER", "ITEM", "ENVIROMENT", "ENEMY", "SYSTEM", "OCARINA", "VOICE"} -extern char sSoundModeNames[4][10]; // = {"W-STEREO", "HEADPHONE", "3D SOUND", "MONO"} -extern s8 sAudioIntInfoX; // = 0 -extern s8 sAudioIntInfoY; // = 0 -extern s8 sAudioIntInfoSel; // = 0 -extern s8 sAudioIntInfoBankPage[7]; // = {0, 0, 2, 2, 0, 0, 0} -extern u8 sAudioScrPrtSel; // = 0 -extern u8 sAudioScrPrtInd; // = 0 -extern u8 sAudioScrPrtOverflow; // = 0 -extern s8 sAudioScrPrtX; // = 26 -extern s8 sAudioScrPrtY; // = 1 -extern u8 sAudioScrPrtWork[11]; // = {1, 19, 6, 0, 0, 0, 0, 0, 0, 0, 1} -extern u8 sAudioScrPrtWorkLims[11]; // = {2, SCROLL_PRINT_BUF_SIZE, 8, 2, 2, 2, 2, 2, 2, 2, 2} -extern u8 sAudioSubTrackInfoSpec; // = 0 -extern u8 sAudioSEFlagSwapIsEditing; // = 0 -extern u8 sAudioSEFlagSwapSel; // = 0 -extern u8 sAudioSEFlagSwapNibbleSel; // = 0 -extern char sAudioSEFlagSwapModeNames[2][5]; // = {"SWAP", "ADD"} -extern u8 sAudioSEParamChgSel; // = 0 -extern u8 sAudioSEParamChgBitSel; // = 0 -extern u16 sAudioSEParamChgWork[2]; // = {0} -extern u8 sAudioSubTrackInfoPlayerSel; // = 0 -extern u8 sAudioSubTrackInfoChannelSel; // = 0 -extern u8 sSeqPlayerPeakNumLayers[4]; // = {0} -extern char sAudioSceneNames[3][2]; // = {"A", "S", "X"} -extern u8 sAudioBlkChgBgmWork[2]; // = {0} -extern u8 sAudioBlkChgBgmSel; // = 0 -extern char sBoolStrs[3][5]; // = {"OFF", "ON", "STBY"} -extern u8 sAudioNatureFailed; // = 0 -extern u8 sPeakNumNotes; // = 0 -// D_80131F6C is in-function static in func_800F510C - /** bit field of songs that can be played * 0x0800 storms * 0x0400 song of time @@ -203,6 +58,334 @@ extern u8 sPeakNumNotes; // = 0 * 0x0001 minuet */ +#define SCROLL_PRINT_BUF_SIZE 25 + +extern f32 D_8012F6B4[]; // from audio_synthesis + +u8 D_80130570[7] = { 0, 0, 0, 1, 0, 0, 0 }; +u8 D_80130578[4][7] = { + { 3, 2, 3, 3, 2, 1, 2 }, + { 3, 2, 2, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2, 2, 2 }, + { 4, 1, 0, 0, 2, 2, 2 }, +}; +u8 D_80130594[4][7] = { + { 3, 2, 3, 2, 2, 1, 1 }, + { 3, 1, 1, 1, 2, 1, 1 }, + { 3, 1, 1, 1, 2, 1, 1 }, + { 2, 1, 0, 0, 1, 1, 1 }, +}; + +f32 D_801305B0 = 0.7950898f; +s8 D_801305B4 = 35; +s8 D_801305B8 = 20; +s8 D_801305BC = 30; +s8 D_801305C0 = 20; +f32 D_801305C4[2] = { -15.0f, -65.0f }; +u8 sAudioIncreasingTranspose = 0; +u8 gMorphaTransposeTable[16] = { 0, 0, 0, 1, 1, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8 }; +u8 sPrevChargeLevel = 0; +f32 D_801305E4[4] = { 1.0f, 1.12246f, 1.33484f, 1.33484f }; // 2**({0, 2, 5, 5}/12) +f32 D_801305F4 = 1.0f; +u8 D_801305F8[8] = { 127, 80, 75, 73, 70, 68, 65, 60 }; +u8 D_80130600 = 0; +s8 D_80130604 = 2; +s8 D_80130608 = 0; +s8 sAudioCutsceneFlag = 0; +s8 sSpecReverb = 0; +s8 sAudioEnvReverb = 0; +s8 sAudioCodeReverb = 0; +u8 D_8013061C = 0; +f32 sAudioEnemyDist = 0.0f; +s8 sAudioEnemyVol = 127; +u16 D_80130628 = 0xFFFF; +u8 D_8013062C = 0; +u8 D_80130630 = 0; +u32 D_80130634 = 0; +u32 D_80130638 = 0; +u8 D_8013063C = 0; +u8 D_80130640 = 0; +u8 D_80130644 = 0; +u8 D_80130648 = 0; +Vec3f* sSariaBgmPtr = NULL; +f32 D_80130650 = 2000.0f; +u8 D_80130654 = 0; +u8 D_80130658[0x70] = { + 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 16, 0, 136, + 1, 0, 0, 32, 0, 0, 2, 4, 2, 2, 1, 16, 0, 0, 1, 2, 1, 0, 128, 0, 128, 0, 2, 2, 2, 2, 2, 2, + 136, 2, 0, 2, 17, 2, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 32, 0, 16, 2, 0, 0, + 4, 32, 64, 64, 1, 2, 2, 1, 1, 2, 0, 17, 0, 0, 128, 0, 128, 128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, +}; +s8 sSpecReverbs[20] = { 0, 0, 0, 0, 0, 0, 0, 40, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +D_801306DC_s D_801306DC[20] = { + { 0xc0ff, 0xc0fe, { 0, 2, 0, 0, 3, 0, 1, 2, 9, 1, 3, 64, 1, 4, 0, 1, 5, 32, 2, 2, 4, 2, 3, + 0, 2, 4, 1, 2, 5, 16, 3, 2, 10, 3, 3, 112, 3, 4, 1, 3, 5, 48, 4, 2, 14, 4, + 3, 127, 4, 4, 0, 4, 5, 16, 5, 2, 0, 5, 3, 127, 5, 4, 1, 5, 5, 16, 6, 2, 1, + 6, 3, 127, 6, 4, 3, 6, 5, 16, 7, 2, 17, 7, 3, 127, 7, 4, 1, 7, 5, 16, 0xFF } }, + { 0xc0fb, 0xc0fa, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 3, 2, 11, 3, 3, 112, 3, 4, 1, + 3, 5, 48, 4, 2, 14, 4, 3, 127, 4, 4, 0, 4, 5, 16, 5, 2, 0, 5, 3, 127, 5, 4, 1, 5, 5, 16, + 6, 2, 1, 6, 3, 127, 6, 4, 3, 6, 5, 16, 7, 2, 17, 7, 3, 127, 7, 4, 1, 7, 5, 16, 0xFF } }, + { 0xc001, 0x4000, { 0, 2, 0, 0, 3, 0, 2, 2, 11, 2, 3, 48, 2, 4, 1, 2, 5, 32, 0xFF } }, + { 0xc005, 0x4000, { 0, 2, 1, 0, 3, 32, 2, 2, 11, 2, 3, 48, 2, 4, 1, 2, 5, 32, 0xFF } }, + { 0xc01f, + 0xc000, + { 0, 2, 0, 0, 3, 47, 1, 2, 13, 1, 3, 0, 1, 4, 1, 1, 5, 16, 2, 2, 16, 2, 3, 0, 2, 4, 1, 2, + 5, 32, 3, 2, 14, 3, 3, 0, 3, 4, 0, 3, 5, 44, 4, 2, 11, 4, 3, 63, 4, 4, 1, 4, 5, 44, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc0fb, 0xc0fa, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 3, 2, 11, 3, 3, 112, 3, 4, 1, + 3, 5, 48, 4, 2, 14, 4, 3, 127, 4, 4, 0, 4, 5, 16, 5, 2, 0, 5, 3, 127, 5, 4, 1, 5, 5, 16, + 6, 2, 1, 6, 3, 127, 6, 4, 3, 6, 5, 16, 7, 2, 17, 7, 3, 127, 7, 4, 1, 7, 5, 16, 0xFF } }, + { 0x8001, 0x0, { 0, 2, 1, 0, 3, 32, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc001, 0xc000, { 0, 2, 2, 0, 3, 0, 0, 4, 0, 0xFF } }, + { 0xc02f, 0xc02e, { 0, 2, 2, 0, 3, 0, 0, 4, 0, 1, 2, 10, 1, 3, 64, 1, 4, 0, 1, 5, + 32, 2, 2, 15, 2, 3, 112, 2, 4, 1, 2, 5, 48, 3, 2, 14, 3, 3, 127, 3, + 4, 0, 3, 5, 16, 5, 2, 4, 5, 3, 127, 5, 4, 0, 5, 5, 16, 0xFF } }, + { 0xc07f, 0xc07e, { 0, 2, 0, 0, 3, 0, 0, 4, 0, 1, 2, 10, 1, 3, 64, 1, 4, 0, 1, 5, 32, + 2, 2, 11, 2, 3, 112, 2, 4, 1, 2, 5, 48, 3, 2, 12, 3, 3, 127, 3, 4, 0, + 3, 5, 16, 4, 2, 6, 4, 3, 0, 4, 4, 0, 4, 5, 16, 5, 2, 0, 5, 3, 0, + 5, 4, 0, 5, 5, 16, 6, 2, 1, 6, 3, 0, 6, 4, 0, 6, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc01f, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 0, 1, 3, 80, 1, 4, 1, 1, 5, 8, 2, 2, 10, 2, 3, 80, 2, 4, 1, 2, + 5, 48, 3, 2, 6, 3, 3, 0, 3, 4, 0, 3, 5, 0, 4, 2, 11, 4, 3, 96, 4, 4, 0, 4, 5, 32, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, + { 0xc003, 0xc000, { 0, 2, 0, 0, 3, 0, 1, 2, 4, 1, 3, 0, 1, 4, 1, 1, 5, 16, 0xFF } }, +}; + +u32 sOcarinaAllowedBtnMask = 0x800F; +s32 sOcarinaABtnMap = 0x8000; +s32 sOcarinaCUPBtnMap = 8; +s32 sOcarinaCDownBtnMap = 4; +u8 sOcarinaInpEnabled = 0; +s8 D_80130F10 = 0; // "OCA", ocarina active? +u8 sCurOcarinaBtnVal = 0xFF; +u8 sPrevOcarinaNoteVal = 0; +u8 sCurOcarinaBtnIdx = 0; // note index? +u8 sLearnSongLastBtn = 0; +f32 D_80130F24 = 1.0f; +f32 D_80130F28 = 0.68503934f; +s8 D_80130F2C = 0; // pitch? +s8 D_80130F30 = 0x57; +s8 D_80130F34 = 0; +u8 sPlaybackState = 0; // 80130F38 +u32 D_80130F3C = 0; // "SEQ" +u32 sNotePlaybackTimer = 0; +u16 sPlaybackNotePos = 0; +u16 sStaffPlaybackPos = 0; +u16 D_80130F4C = 0; +u8 sDisplayedNoteValue = 0xFF; // Note to display on screen? +u8 sNotePlaybackVolume = 0; +u8 sNotePlaybackVibrato = 0; +s8 sNotePlaybackTone = 0; +f32 sNormalizedNotePlaybackTone = 1.0f; +f32 sNormalizedNotePlaybackVolume = 1.0f; +s32 D_80130F68 = 0; +u8 sOcarinaNoteValues[5] = { 2, 5, 9, 11, 14 }; +u8 sOcaMinigameApndPos = 0; +u8 sOcaMinigameEndPos = 0; +u8 sOcaMinigameNoteCnts[] = { 5, 6, 8 }; + +OcarinaNote sOcarinaSongs[14][20] = { + // minuet + { + { 2, 0, 18, 86, 0, 0, 0 }, + { 14, 0, 18, 92, 0, 0, 0 }, + { 11, 0, 72, 86, 0, 0, 0 }, + { 9, 0, 18, 80, 0, 0, 0 }, + { 11, 0, 18, 88, 0, 0, 0 }, + { 9, 0, 144, 86, 0, 0, 0 }, + { 0xFF, 0, 0, 86, 0, 0, 0 }, + }, + + // bolero + { + { 5, 0, 15, 80, 0, 0, 0 }, + { 2, 0, 15, 72, 0, 0, 0 }, + { 5, 0, 15, 84, 0, 0, 0 }, + { 2, 0, 15, 76, 0, 0, 0 }, + { 9, 0, 15, 84, 0, 0, 0 }, + { 5, 0, 15, 74, 0, 0, 0 }, + { 9, 0, 15, 78, 0, 0, 0 }, + { 5, 0, 135, 66, 0, 0, 0 }, + { 0xFF, 0, 0, 66, 0, 0, 0 }, + }, + + // serenade + { + { 2, 0, 36, 60, 0, 0, 0 }, + { 5, 0, 36, 78, 0, 0, 0 }, + { 9, 0, 33, 82, 0, 0, 0 }, + { 0xFF, 0, 3, 82, 0, 0, 0 }, + { 9, 0, 36, 84, 0, 0, 0 }, + { 11, 0, 144, 90, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // requiem + { + { 2, 0, 45, 88, 0, 0, 0 }, + { 5, 0, 23, 86, 0, 0, 0 }, + { 2, 0, 22, 84, 0, 0, 0 }, + { 9, 0, 45, 86, 0, 0, 0 }, + { 5, 0, 45, 94, 0, 0, 0 }, + { 2, 0, 180, 94, 0, 0, 0 }, + { 0xFF, 0, 0, 94, 0, 0, 0 }, + }, + + // nocturne + { + { 11, 0, 36, 88, 0, 0, 0 }, + { 9, 0, 33, 84, 0, 0, 0 }, + { 0xFF, 0, 3, 84, 0, 0, 0 }, + { 9, 0, 18, 82, 0, 0, 0 }, + { 2, 0, 18, 60, 0, 0, 0 }, + { 11, 0, 18, 90, 0, 0, 0 }, + { 9, 0, 18, 88, 0, 0, 0 }, + { 5, 0, 144, 96, 0, 0, 0 }, + { 0xFF, 0, 0, 96, 0, 0, 0 }, + }, + + // prelude + { + { 14, 0, 15, 84, 0, 0, 0 }, + { 9, 0, 45, 88, 0, 0, 0 }, + { 14, 0, 15, 88, 0, 0, 0 }, + { 9, 0, 15, 82, 0, 0, 0 }, + { 11, 0, 15, 86, 0, 0, 0 }, + { 14, 0, 60, 90, 0, 0, 0 }, + { 0xFF, 0, 75, 90, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // sarias + { + { 5, 0, 17, 84, 0, 0, 0 }, + { 9, 0, 17, 88, 0, 0, 0 }, + { 11, 0, 34, 80, 0, 0, 0 }, + { 5, 0, 17, 84, 0, 0, 0 }, + { 9, 0, 17, 88, 0, 0, 0 }, + { 11, 0, 136, 80, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // epona + { + { 14, 0, 18, 84, 0, 0, 0 }, + { 11, 0, 18, 88, 0, 0, 0 }, + { 9, 0, 72, 80, 0, 0, 0 }, + { 14, 0, 18, 84, 0, 0, 0 }, + { 11, 0, 18, 88, 0, 0, 0 }, + { 9, 0, 144, 80, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // lullaby + { + { 11, 0, 51, 84, 0, 0, 0 }, + { 14, 0, 25, 88, 0, 0, 0 }, + { 9, 0, 78, 80, 0, 0, 0 }, + { 11, 0, 51, 84, 0, 0, 0 }, + { 14, 0, 25, 88, 0, 0, 0 }, + { 9, 0, 100, 80, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // suns + { + { 9, 0, 12, 84, 0, 0, 0 }, + { 5, 0, 13, 88, 0, 0, 0 }, + { 14, 0, 29, 80, 2, 0, 0 }, + { 0xFF, 0, 9, 84, 0, 0, 0 }, + { 9, 0, 12, 84, 0, 0, 0 }, + { 5, 0, 13, 88, 0, 0, 0 }, + { 14, 0, 120, 80, 3, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // song of time + { + { 9, 0, 32, 84, 0, 0, 0 }, + { 2, 0, 65, 88, 0, 0, 0 }, + { 5, 0, 33, 80, 0, 0, 0 }, + { 9, 0, 32, 84, 0, 0, 0 }, + { 2, 0, 65, 88, 0, 0, 0 }, + { 5, 0, 99, 80, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // storms + { + { 2, 0, 11, 84, 0, 0, 0 }, + { 5, 0, 11, 88, 0, 0, 0 }, + { 14, 0, 45, 80, 0, 0, 0 }, + { 2, 0, 11, 84, 0, 0, 0 }, + { 5, 0, 11, 88, 0, 0, 0 }, + { 14, 0, 90, 80, 0, 0, 0 }, + { 0xFF, 0, 0, 90, 0, 0, 0 }, + }, + + // scarecrow + { + { 2, 0, 3, 0, 0, 0, 0 }, + { 0xFF, 0, 0, 255, 0, 0, 0 }, + }, + + // OCA_MEMORYGAME_IDX + { + { 2, 0, 3, 0, 0, 0, 0 }, + { 0xFF, 0, 0, 0, 0, 0, 0 }, + }, +}; + +OcarinaNote* sPlaybackSong = sOcarinaSongs[0]; +u8 D_80131844[14] = { 0, 3, 2, 1, 3, 2, 1, 0, 1, 0, 1, 2, 3, 0 }; +u8* gFrogsSongPtr = D_80131844; +u8 D_80131858 = 0; // "REC" +u8 sRecordSongPos = 0; +u32 D_80131860 = 0; +u8 D_80131864 = 0; +u8 D_80131868 = 0; +u8 D_8013186C = 0; +s8 D_80131870 = 0; +u8 D_80131874 = 0; +u8 D_80131878 = 0; +u8 D_8013187C = 0; +u8 D_80131880 = 0; + +OcarinaNote sPierresSong[108] = { + { 0xFF, 0, 0, 0, 0, 0, 0 }, + { 0xFF, 0, 0, 0, 0, 0, 0 }, +}; +OcarinaNote* gScarecrowCustomSongPtr = sPierresSong; + +u8* gScarecrowSpawnSongPtr = (u8*)&sOcarinaSongs[12]; +OcarinaNote* D_80131BEC = sOcarinaSongs[13]; +u8 sNoteValueIndexMap[16] = { 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 5, 3, 3, 4, 4, 4 }; + +// clang-format off +OcarinaSongInfo gOcarinaSongNotes[14] = { + { 6, { 0, 4, 3, 2, 3, 2 }}, + { 8, { 1, 0, 1, 0, 2, 1, 2, 1 }}, + { 5, { 0, 1, 2, 2, 3 }}, + { 6, { 0, 1, 0, 2, 1, 0 }}, + { 7, { 3, 2, 2, 0, 3, 2, 1 }}, + { 6, { 4, 2, 4, 2, 3, 4 }}, + { 6, { 1, 2, 3, 1, 2, 3 }}, + { 6, { 4, 3, 2, 4, 3, 2 }}, + { 6, { 3, 4, 2, 3, 4, 2 }}, + { 6, { 2, 1, 4, 2, 1, 4 }}, + { 6, { 2, 0, 1, 2, 0, 1 }}, + { 6, { 0, 1, 4, 0, 1, 4 }}, + { 8, { 0, 0, 0, 0, 0, 0, 0, 0 }}, + { 0, { 0, 0, 0, 0, 0, 0, 0, 0 }}, +}; +// clang-format on + extern u8 D_801333F0; extern u8 gAudioSEFlagSwapOff; extern u8 D_80133408; @@ -372,9 +555,9 @@ void func_800ECB7C(u8 songIdx) { savedSongIdx = 0; scarecrowSongIdx = 0; while (savedSongIdx < 8 && scarecrowSongIdx < 0x10) { - noteIdx = sOcarinaSongs[songIdx].notes[scarecrowSongIdx++].noteIdx; + noteIdx = sOcarinaSongs[songIdx][scarecrowSongIdx++].noteIdx; if (noteIdx != 0xFF) { - gOcarinaSongNotes[0xC].notesIdx[savedSongIdx++] = sNoteValueIndexMap[noteIdx]; + gOcarinaSongNotes[12].notesIdx[savedSongIdx++] = sNoteValueIndexMap[noteIdx]; } } } @@ -383,15 +566,15 @@ void func_800ECB7C(u8 songIdx) { void func_800ECC04(u16 flg) { u8 i; - if ((sOcarinaSongs[0xC].notes[1].volume != 0xFF) && ((flg & 0xFFF) == 0xFFF)) { + if ((sOcarinaSongs[12][1].volume != 0xFF) && ((flg & 0xFFF) == 0xFFF)) { flg |= 0x1000; } - if ((flg == 0xCFFF) && (sOcarinaSongs[0xC].notes[1].volume != 0xFF)) { + if ((flg == 0xCFFF) && (sOcarinaSongs[12][1].volume != 0xFF)) { flg = 0xDFFF; } - if ((flg == 0xFFF) && (sOcarinaSongs[0xC].notes[1].volume != 0xFF)) { + if ((flg == 0xFFF) && (sOcarinaSongs[12][1].volume != 0xFF)) { flg = 0x1FFF; } @@ -471,7 +654,7 @@ void func_800ECDF8(void) { if (inputChanged) { // (pointless if check, this is always true) if ((D_8016BA50[i] >= D_8016BA70[i] - 0x12) && (D_8016BA50[i] >= D_8016BA70[i] + 0x12) && - (sOcarinaSongs[i].notes[sLearnSongPos[i]].unk_02 == 0) && + (sOcarinaSongs[i][sLearnSongPos[i]].unk_02 == 0) && (sLearnSongLastBtn == sLearnSongExpectedNote[i])) { D_80131878 = i + 1; sOcarinaInpEnabled = 0; @@ -480,7 +663,7 @@ void func_800ECDF8(void) { } else if (D_8016BA50[i] >= (D_8016BA70[i] - 0x12)) { if (sLearnSongLastBtn != 0xFF) { if (sLearnSongLastBtn == sLearnSongExpectedNote[i]) { - if (i == 0xC) { + if (i == 12) { D_8016BA50[i] = 0; } } else { @@ -488,8 +671,8 @@ void func_800ECDF8(void) { } } - prevNote = &sOcarinaSongs[i].notes[sLearnSongPos[i]]; - note = &sOcarinaSongs[i].notes[++sLearnSongPos[i]]; + prevNote = &sOcarinaSongs[i][sLearnSongPos[i]]; + note = &sOcarinaSongs[i][++sLearnSongPos[i]]; D_8016BA70[i] = prevNote->unk_02; sLearnSongExpectedNote[i] = prevNote->noteIdx; @@ -498,8 +681,8 @@ void func_800ECDF8(void) { } while (prevNote->noteIdx == note->noteIdx || (note->noteIdx == 0xFF && note->unk_02 != 0)) { D_8016BA70[i] += note->unk_02; - prevNote = &sOcarinaSongs[i].notes[sLearnSongPos[i]]; - note = &sOcarinaSongs[i].notes[sLearnSongPos[i] + 1]; + prevNote = &sOcarinaSongs[i][sLearnSongPos[i]]; + note = &sOcarinaSongs[i][sLearnSongPos[i] + 1]; sLearnSongPos[i]++; } } else if (D_8016BA50[i] < 0xA) { @@ -513,7 +696,7 @@ void func_800ECDF8(void) { if (sOcarinaAvailSongs == 0 && D_8016BA2E >= D_8013187C) { sOcarinaInpEnabled = 0; - if (CHECK_BTN_ANY(D_80130F3C, BTN_B) && sCurOcarinaBtnVal == sOcarinaSongs[i].notes[0].noteIdx) { + if (CHECK_BTN_ANY(D_80130F3C, BTN_B) && sCurOcarinaBtnVal == sOcarinaSongs[i][0].noteIdx) { D_80130F4C = D_80130F3C; } D_80130F3C = 0; @@ -699,9 +882,9 @@ void func_800ED93C(s8 songIdx, s8 arg1) { } if (songIdx < 0xF) { - sPlaybackSong = &sOcarinaSongs[songIdx - 1]; + sPlaybackSong = sOcarinaSongs[songIdx - 1]; } else { - sPlaybackSong = &sPierresSong; + sPlaybackSong = sPierresSong; } sPlaybackState = arg1; @@ -709,7 +892,7 @@ void func_800ED93C(s8 songIdx, s8 arg1) { sDisplayedNoteValue = 0xFF; sPlaybackNotePos = 0; sStaffPlaybackPos = 0; - while (sPlaybackSong->notes[sPlaybackNotePos].noteIdx == 0xFF) { + while (sPlaybackSong[sPlaybackNotePos].noteIdx == 0xFF) { sPlaybackNotePos++; } } @@ -734,7 +917,7 @@ void Audio_OcaPlayback(void) { if (sNotePlaybackTimer == 0) { - sNotePlaybackTimer = sPlaybackSong->notes[sPlaybackNotePos].unk_02; + sNotePlaybackTimer = sPlaybackSong[sPlaybackNotePos].unk_02; if (sPlaybackNotePos == 1) { sNotePlaybackTimer++; @@ -754,32 +937,31 @@ void Audio_OcaPlayback(void) { sNotePlaybackTimer -= nextNoteTimerStep; } - if (sNotePlaybackVolume != sPlaybackSong->notes[sPlaybackNotePos].volume) { - sNotePlaybackVolume = sPlaybackSong->notes[sPlaybackNotePos].volume; + if (sNotePlaybackVolume != sPlaybackSong[sPlaybackNotePos].volume) { + sNotePlaybackVolume = sPlaybackSong[sPlaybackNotePos].volume; sNormalizedNotePlaybackVolume = sNotePlaybackVolume / 127.0f; } - if (sNotePlaybackVibrato != sPlaybackSong->notes[sPlaybackNotePos].vibrato) { - sNotePlaybackVibrato = sPlaybackSong->notes[sPlaybackNotePos].vibrato; + if (sNotePlaybackVibrato != sPlaybackSong[sPlaybackNotePos].vibrato) { + sNotePlaybackVibrato = sPlaybackSong[sPlaybackNotePos].vibrato; Audio_QueueCmdS8(0x06020D06, sNotePlaybackVibrato); } - if (sNotePlaybackTone != sPlaybackSong->notes[sPlaybackNotePos].tone) { - sNotePlaybackTone = sPlaybackSong->notes[sPlaybackNotePos].tone; + if (sNotePlaybackTone != sPlaybackSong[sPlaybackNotePos].tone) { + sNotePlaybackTone = sPlaybackSong[sPlaybackNotePos].tone; sNormalizedNotePlaybackTone = Audio_OcaAdjStick(sNotePlaybackTone); } - if ((sPlaybackSong->notes[sPlaybackNotePos].volume == sPlaybackSong->notes[sPlaybackNotePos - 1].volume && - (sPlaybackSong->notes[sPlaybackNotePos].vibrato == - sPlaybackSong->notes[sPlaybackNotePos - 1].vibrato) && - (sPlaybackSong->notes[sPlaybackNotePos].tone == sPlaybackSong->notes[sPlaybackNotePos - 1].tone))) { + if ((sPlaybackSong[sPlaybackNotePos].volume == sPlaybackSong[sPlaybackNotePos - 1].volume && + (sPlaybackSong[sPlaybackNotePos].vibrato == sPlaybackSong[sPlaybackNotePos - 1].vibrato) && + (sPlaybackSong[sPlaybackNotePos].tone == sPlaybackSong[sPlaybackNotePos - 1].tone))) { sDisplayedNoteValue = 0xFE; } - if (sDisplayedNoteValue != sPlaybackSong->notes[sPlaybackNotePos].noteIdx) { - u8 tmp = sPlaybackSong->notes[sPlaybackNotePos].noteIdx; + if (sDisplayedNoteValue != sPlaybackSong[sPlaybackNotePos].noteIdx) { + u8 tmp = sPlaybackSong[sPlaybackNotePos].noteIdx; if (tmp == 0xA) { - sDisplayedNoteValue = tmp + sPlaybackSong->notes[sPlaybackNotePos].semitone; + sDisplayedNoteValue = tmp + sPlaybackSong[sPlaybackNotePos].semitone; } else { sDisplayedNoteValue = tmp; } @@ -808,19 +990,19 @@ void func_800EDD68(u8 arg0) { u8 j; u8 k; s32 t; - OcarinaSong* song; + OcarinaNote* song; if (D_80131858 == 1) { song = gScarecrowCustomSongPtr; } else { song = D_80131BEC; } - song->notes[sRecordSongPos].noteIdx = D_80131864; - song->notes[sRecordSongPos].unk_02 = D_8016BA04 - D_80131860; - song->notes[sRecordSongPos].volume = D_80131868; - song->notes[sRecordSongPos].vibrato = D_8013186C; - song->notes[sRecordSongPos].tone = D_80131870; - song->notes[sRecordSongPos].semitone = D_80131874 & 0xC0; + song[sRecordSongPos].noteIdx = D_80131864; + song[sRecordSongPos].unk_02 = D_8016BA04 - D_80131860; + song[sRecordSongPos].volume = D_80131868; + song[sRecordSongPos].vibrato = D_8013186C; + song[sRecordSongPos].tone = D_80131870; + song[sRecordSongPos].semitone = D_80131874 & 0xC0; D_80131864 = sCurOcarinaBtnVal; D_80131868 = D_80130F30; D_8013186C = D_80130F34; @@ -836,37 +1018,37 @@ void func_800EDD68(u8 arg0) { mad = 0xFF; while (i != 0 && mad == 0xFF) { i--; - mad = song->notes[i].noteIdx; + mad = song[i].noteIdx; } if (1) {} if (sRecordSongPos != (i + 1)) { sRecordSongPos = i + 2; - song->notes[sRecordSongPos - 1].unk_02 = 0; + song[sRecordSongPos - 1].unk_02 = 0; } - song->notes[sRecordSongPos].unk_02 = 0; + song[sRecordSongPos].unk_02 = 0; if (D_80131858 == 2) { if (D_8016BA2E >= 8) { for (i = 0; i < sRecordSongPos; i++) { - song->notes[i] = song->notes[i + 1]; + song[i] = song[i + 1]; } func_800ECB7C(0xD); - for (i = 0; i < 0xC; i++) { + for (i = 0; i < 12; i++) { for (j = 0; j < 9 - gOcarinaSongNotes[i].len; j++) { for (k = 0; k < gOcarinaSongNotes[i].len && k + j < 8 && - gOcarinaSongNotes[i].notesIdx[k] == gOcarinaSongNotes[0xC].notesIdx[k + j]; + gOcarinaSongNotes[i].notesIdx[k] == gOcarinaSongNotes[12].notesIdx[k + j]; k++) { ; } if (k == gOcarinaSongNotes[i].len) { D_80131858 = 0xFF; - sOcarinaSongs[0xC].notes[1].volume = 0xFF; + sOcarinaSongs[12][1].volume = 0xFF; return; } } @@ -874,7 +1056,7 @@ void func_800EDD68(u8 arg0) { i = 1; while (i < 8) { - if (gOcarinaSongNotes[0xC].notesIdx[0] != gOcarinaSongNotes[0xC].notesIdx[i]) { + if (gOcarinaSongNotes[12].notesIdx[0] != gOcarinaSongNotes[12].notesIdx[i]) { i = 9; } else { i++; @@ -883,17 +1065,17 @@ void func_800EDD68(u8 arg0) { if (i == 8) { D_80131858 = 0xFF; - sOcarinaSongs[0xC].notes[1].volume = 0xFF; + sOcarinaSongs[12][1].volume = 0xFF; return; } for (i = 0; i < sRecordSongPos; i++) { - sOcarinaSongs[0xC].notes[i] = sOcarinaSongs[0xD].notes[i]; + sOcarinaSongs[12][i] = sOcarinaSongs[13][i]; } sOcarinaInpEnabled = 0; } else { - sOcarinaSongs[0xC].notes[1].volume = 0xFF; + sOcarinaSongs[12][1].volume = 0xFF; } } D_80131858 = 0; @@ -920,10 +1102,10 @@ void func_800EE170(u8 arg0) { sRecordSongPos = 0; sOcarinaInpEnabled = 1; D_8016BA2E = 0; - D_8016BAA0 = sPierresSong.notes[1]; + D_8016BAA0 = sPierresSong[1]; } else { if (sRecordSongPos == 0) { - sPierresSong.notes[1] = D_8016BAA0; + sPierresSong[1] = D_8016BAA0; } else { if (D_80131858 == 2) { D_8016BA2E = 1; @@ -960,7 +1142,7 @@ void func_800EE318(void) { sDisplayedStaff.state = sPlaybackState; - if (sPlaybackSong != &sPierresSong) { + if (sPlaybackSong != sPierresSong) { sDisplayedStaff.pos = sStaffPlaybackPos; } else if (sStaffPlaybackPos == 0) { sDisplayedStaff.pos = 0; @@ -1050,22 +1232,22 @@ s32 func_800EE5EC(void) { rnd = Audio_NextRandom(); rndNote = sOcarinaNoteValues[rnd % 5]; - if (sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos - 1].noteIdx == rndNote) { + if (sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos - 1].noteIdx == rndNote) { rndNote = sOcarinaNoteValues[(rnd + 1) % 5]; } - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].noteIdx = rndNote; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].unk_02 = 0x2D; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].volume = 0x50; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].vibrato = 0; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].tone = 0; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].noteIdx = rndNote; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].unk_02 = 0x2D; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].volume = 0x50; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].vibrato = 0; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].tone = 0; sOcaMinigameApndPos++; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].noteIdx = 0xFF; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos].unk_02 = 0; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos + 1].noteIdx = 0xFF; - sOcarinaSongs[OCA_MEMORYGAME_IDX].notes[sOcaMinigameApndPos + 1].unk_02 = 0; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].noteIdx = 0xFF; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos].unk_02 = 0; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos + 1].noteIdx = 0xFF; + sOcarinaSongs[OCA_MEMORYGAME_IDX][sOcaMinigameApndPos + 1].unk_02 = 0; if (1) {} return 0; } @@ -1107,8 +1289,6 @@ void func_800EE6F4(void) { func_800EE29C(); } -#ifdef NON_MATCHING -// matches, but data needs to be migrated. void func_800EE824(void) { static u8 D_80131C80 = 0; static u8 D_80131C84 = 1; @@ -1140,9 +1320,6 @@ void func_800EE824(void) { break; } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800EC960/func_800EE824.s") -#endif void func_800EE930(void) { D_8016B9F8.noteIdx = 0xFF; @@ -1157,7 +1334,70 @@ void func_800EE930(void) { D_80131880 = 0; } -void AudioDebug_SetInput(void) { // (not 16-byte-aligned, so this cannot start a new file...) +f32 D_80131C8C = 0.0f; + +// === Audio Debugging === + +// These variables come between in-function statics in func_800EE824 and func_800F510C + +f32 sAudioUpdateDuration = 0.0f; +f32 sAudioUpdateDurationMax = 0.0f; +u8 sAudioDebugEverOpened = 0; +u8 sAudioSEMuted = 0; +u8 sAudioDebugPage = 0; +u8 sAudioSndContSel = 0; +u8 sAudioDebugTextColor = 7; +char sAudioDebugPageNames[15][23] = { + "Non", + "Sound Control", + "Spec Info", + "Heap Info", + "Grp Track Info", + "Sub Track Info", + "Channel Info", + "Interface Info", + "SE Flag Swap", + "Block Change BGM", + "Natural Sound Control", + "Ocarina Test", + "SE Parameter Change", + "Scroll Print", + "Free Area", +}; +u16 sAudioSndContWork[11] = { 0 }; +u16 sAudioSndContWorkLims[11] = { 128, 128, 7, 512, 4, 2, 16, 32, 2, 2, 2 }; +char sSoundBankNames[7][11] = { "PLAYER", "ITEM", "ENVIROMENT", "ENEMY", "SYSTEM", "OCARINA", "VOICE" }; +char sSoundModeNames[5][10] = { "W-STEREO", "HEADPHONE", "3D SOUND", "MONO", "" }; +s8 sAudioIntInfoX = 0; +s8 sAudioIntInfoY = 0; +s8 sAudioIntInfoSel = 0; +s8 sAudioIntInfoBankPage[7] = { 0, 0, 2, 2, 0, 0, 0 }; +u8 sAudioScrPrtSel = 0; +u8 sAudioScrPrtInd = 0; +u8 sAudioScrPrtOverflow = 0; +s8 sAudioScrPrtX = 26; +s8 sAudioScrPrtY = 1; +u8 sAudioScrPrtWork[11] = { 1, 19, 6, 0, 0, 0, 0, 0, 0, 0, 1 }; +u8 sAudioScrPrtWorkLims[11] = { 2, SCROLL_PRINT_BUF_SIZE, 8, 2, 2, 2, 2, 2, 2, 2, 2 }; +u8 sAudioSubTrackInfoSpec = 0; +u8 sAudioSEFlagSwapIsEditing = 0; +u8 sAudioSEFlagSwapSel = 0; +u8 sAudioSEFlagSwapNibbleSel = 0; +char sAudioSEFlagSwapModeNames[2][5] = { "SWAP", "ADD" }; +u8 sAudioSEParamChgSel = 0; +u8 sAudioSEParamChgBitSel = 0; +u16 sAudioSEParamChgWork[4] = { 0 }; +u8 sAudioSubTrackInfoPlayerSel = 0; +u8 sAudioSubTrackInfoChannelSel = 0; +u8 sSeqPlayerPeakNumLayers[20] = { 0 }; +char sAudioSceneNames[3][2] = { "A", "S", "X" }; +u8 sAudioBlkChgBgmWork[2] = { 0 }; +u8 sAudioBlkChgBgmSel = 0; +char sBoolStrs[3][5] = { "OFF", "ON", "STBY" }; +u8 sAudioNatureFailed = 0; +u8 sPeakNumNotes = 0; + +void AudioDebug_SetInput(void) { Input inputs[4]; u32 btn; @@ -1276,7 +1516,7 @@ void AudioDebug_Draw(GfxPrint* printer) { while (i != 0xFF) { GfxPrint_SetPos(printer, 3, 7 + j++); GfxPrint_Printf(printer, "%02x %04x %02x %08x", i, gSoundBanks[ind][i].sfxId, - gSoundBanks[ind][i].unk_2A, gSoundBanks[ind][i].unk_20); + gSoundBanks[ind][i].unk_2A, gSoundBanks[ind][i].priority); i = gSoundBanks[ind][i].next; } break; @@ -1340,8 +1580,8 @@ void AudioDebug_Draw(GfxPrint* printer) { if (sAudioIntInfoBankPage[k] == 1) { if ((entryIndex != 0xFF) && ((entry->unk_2A == 4) || (entry->unk_2A == 5))) { GfxPrint_Printf(printer, "%2X %5d %5d %5d %02X %04X %04X", entryIndex, (s32)*entry->posX, - (s32)*entry->posY, (s32)*entry->posZ, entry->unk_24, entry->unk_26, - entry->sfxId); + (s32)*entry->posY, (s32)*entry->posZ, entry->sfxImportance, + entry->sfxParams, entry->sfxId); } else { GfxPrint_Printf(printer, "FF ----- ----- ----- -- ---- ----"); } @@ -1784,15 +2024,15 @@ void AudioDebug_Draw(GfxPrint* printer) { GfxPrint_SetPos(printer, 20, 6); GfxPrint_Printf(printer, " : %04x", - D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_2); + gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].params); GfxPrint_SetPos(printer, 3, 6); GfxPrint_Printf( printer, "SE SW %s", - AudioDebug_ToStringBinary(D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_2, 16)); + AudioDebug_ToStringBinary(gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].params, 16)); SETCOL(127, 255, 127); - digitStr[0] = (char)('0' + ((D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_2 >> + digitStr[0] = (char)('0' + ((gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].params >> (15 - sAudioSEParamChgBitSel)) & 1)); GfxPrint_SetPos(printer, 12 + sAudioSEParamChgBitSel, 6); @@ -1801,7 +2041,7 @@ void AudioDebug_Draw(GfxPrint* printer) { SETCOL(255, 255, 255); GfxPrint_SetPos(printer, 3, 7); GfxPrint_Printf(printer, "SE PR : %02x", - D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_0); + gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].importance); break; case PAGE_FREE_AREA: @@ -1938,7 +2178,7 @@ void AudioDebug_ProcessInput_SndCont(void) { break; case 2: case 3: - Audio_PlaySoundGeneral(((sAudioSndContWork[2] << 0xC) & 0xFFFF) + sAudioSndContWork[3] + SFX_FLAG, + Audio_PlaySoundGeneral(((sAudioSndContWork[2] << 12) & 0xFFFF) + sAudioSndContWork[3] + SFX_FLAG, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); break; case 4: @@ -2098,12 +2338,10 @@ void AudioDebug_ProcessInput_ScrPrt(void) { (sAudioScrPrtWork[6] * 8) + (sAudioScrPrtWork[7] * 0x10) + (sAudioScrPrtWork[8] * 0x20); } -#ifdef NON_MATCHING -// regalloc near 'prev' void AudioDebug_ProcessInput_SEFlagSwap(void) { s16 step; u16 val; - u8 prev; // v1 + u8 prev; if (!sAudioSEFlagSwapIsEditing) { if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) { @@ -2122,7 +2360,6 @@ void AudioDebug_ProcessInput_SEFlagSwap(void) { } } - prev = 9; if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) { sAudioSEFlagSwapIsEditing = true; } @@ -2133,14 +2370,12 @@ void AudioDebug_ProcessInput_SEFlagSwap(void) { } if (CHECK_BTN_ANY(sDebugPadPress, BTN_START)) { - prev = sAudioSEFlagSwapSel; - if (prev != 0) { - prev--; + if (sAudioSEFlagSwapSel != 0) { + prev = sAudioSEFlagSwapSel - 1; } else { prev = 9; } gAudioSEFlagSwapSource[sAudioSEFlagSwapSel] = gAudioSEFlagSwapSource[prev]; - if (sAudioSEFlagSwapNibbleSel) {} gAudioSEFlagSwapTarget[sAudioSEFlagSwapSel] = gAudioSEFlagSwapTarget[prev]; } } else { @@ -2169,19 +2404,19 @@ void AudioDebug_ProcessInput_SEFlagSwap(void) { } if (sAudioSEFlagSwapNibbleSel < 4) { - val = gAudioSEFlagSwapSource[sAudioSEFlagSwapSel] >> (((-sAudioSEFlagSwapNibbleSel) * 4) + 0xC); + val = gAudioSEFlagSwapSource[sAudioSEFlagSwapSel] >> ((3 - sAudioSEFlagSwapNibbleSel) * 4); val = (val + step) & 0xF; gAudioSEFlagSwapSource[sAudioSEFlagSwapSel] = (gAudioSEFlagSwapSource[sAudioSEFlagSwapSel] & - ((0xF << (((-sAudioSEFlagSwapNibbleSel) * 4) + 0xC)) ^ 0xFFFF)) + - (val << (((-sAudioSEFlagSwapNibbleSel) * 4) + 0xC)); + ((0xF << ((3 - sAudioSEFlagSwapNibbleSel) * 4)) ^ 0xFFFF)) + + (val << ((3 - sAudioSEFlagSwapNibbleSel) * 4)); } else { - val = gAudioSEFlagSwapTarget[sAudioSEFlagSwapSel] >> (((-sAudioSEFlagSwapNibbleSel) * 4) + 0x1C); + val = gAudioSEFlagSwapTarget[sAudioSEFlagSwapSel] >> ((7 - sAudioSEFlagSwapNibbleSel) * 4); val = (val + step) & 0xF; gAudioSEFlagSwapTarget[sAudioSEFlagSwapSel] = (gAudioSEFlagSwapTarget[sAudioSEFlagSwapSel] & - ((0xF << (((-sAudioSEFlagSwapNibbleSel) * 4) + 0x1C)) ^ 0xFFFF)) + - (val << (((-sAudioSEFlagSwapNibbleSel) * 4) + 0x1C)); + ((0xF << ((7 - sAudioSEFlagSwapNibbleSel) * 4)) ^ 0xFFFF)) + + (val << ((7 - sAudioSEFlagSwapNibbleSel) * 4)); } } @@ -2206,10 +2441,6 @@ void AudioDebug_ProcessInput_SEFlagSwap(void) { gAudioSEFlagSwapMode[sAudioSEFlagSwapSel] ^= 1; } } -#else -void AudioDebug_ProcessInput_SEFlagSwap(void); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800EC960/AudioDebug_ProcessInput_SEFlagSwap.s") -#endif void AudioDebug_ProcessInput_SubTrackInfo(void) { if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) { @@ -2324,7 +2555,7 @@ void AudioDebug_ProcessInput_SEParamChg(void) { sAudioSEParamChgWork[sAudioSEParamChgSel] &= 0x1FF; } } else if (sAudioSEParamChgSel == 3) { - D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_0 -= step; + gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].importance -= step; } else { sAudioSEParamChgBitSel = (sAudioSEParamChgBitSel - 1) & 0xF; } @@ -2343,14 +2574,14 @@ void AudioDebug_ProcessInput_SEParamChg(void) { sAudioSEParamChgWork[sAudioSEParamChgSel] &= 0x1FF; } } else if (sAudioSEParamChgSel == 3) { - D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_0 += step; + gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].importance += step; } else { sAudioSEParamChgBitSel = (sAudioSEParamChgBitSel + 1) & 0xF; } } if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) { - sfx = (u16)(sAudioSEParamChgWork[0] << 0xC) + sAudioSEParamChgWork[1] + SFX_FLAG; + sfx = (u16)(sAudioSEParamChgWork[0] << 12) + sAudioSEParamChgWork[1] + SFX_FLAG; Audio_PlaySoundGeneral(sfx, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } @@ -2360,7 +2591,8 @@ void AudioDebug_ProcessInput_SEParamChg(void) { if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) { if (sAudioSEParamChgSel == 2) { - D_8013331C[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].unk_2 ^= (1 << (0xF - sAudioSEParamChgBitSel)); + gSoundParams[sAudioSEParamChgWork[0]][sAudioSEParamChgWork[1]].params ^= + (1 << (0xF - sAudioSEParamChgBitSel)); } } @@ -2522,14 +2754,14 @@ f32 func_800F3188(u8 bankIdx, u8 entryIdx) { f32 phi_f0; f32 ret; - if (bankEntry->unk_26 & 0x2000) { + if (bankEntry->sfxParams & 0x2000) { return 1.0f; } if (bankEntry->dist > 10000.0f) { ret = 0.0f; } else { - switch (bankEntry->unk_26 & 3) { + switch (bankEntry->sfxParams & 3) { case 1: phi_f0 = 666.6667f; break; @@ -2565,7 +2797,7 @@ s8 Audio_ComputeSoundReverb(u8 bankIdx, u8 entryIdx, u8 channelIdx) { SoundBankEntry* entry = &gSoundBanks[bankIdx][entryIdx]; s32 reverb; - if (!(entry->unk_26 & 0x1000)) { + if (!(entry->sfxParams & 0x1000)) { if (entry->dist < 2500.0f) { distAdd = *entry->posZ > 0.0f ? (entry->dist / 2500.0f) * 70.0f : (entry->dist / 2500.0f) * 91.0f; } else { @@ -2641,7 +2873,7 @@ f32 Audio_ComputeSoundFreqScale(u8 bankIdx, u8 entryIdx) { f32 unk1C; f32 freq = 1.0f; - if (entry->unk_26 & 0x4000) { + if (entry->sfxParams & 0x4000) { freq = 1.0f - ((gAudioContext.audioRandom & 0xF) / 192.0f); } @@ -2665,14 +2897,14 @@ f32 Audio_ComputeSoundFreqScale(u8 bankIdx, u8 entryIdx) { } if (phi_v0 == 1) { - if (!(entry->unk_26 & 0x800)) { + if (!(entry->sfxParams & 0x800)) { freq *= (1.0293 - ((gAudioContext.audioRandom & 0xF) / 144.0f)); } } unk1C = entry->dist; - if (!(entry->unk_26 & 0x2000)) { - if (!(entry->unk_26 & 0x8000)) { + if (!(entry->sfxParams & 0x2000)) { + if (!(entry->sfxParams & 0x8000)) { if (unk1C >= 10000.0f) { freq += 0.2f; } else { @@ -2681,7 +2913,7 @@ f32 Audio_ComputeSoundFreqScale(u8 bankIdx, u8 entryIdx) { } } - if (entry->unk_26 & 0xC0) { + if (entry->sfxParams & 0xC0) { freq += (entry->unk_2F / 192.0f); } @@ -2710,12 +2942,12 @@ u8 func_800F37B8(f32 arg0, SoundBankEntry* arg1, s8 arg2) { } if (phi_v1 == 0) { - if (arg1->unk_26 & 0x200) { + if (arg1->sfxParams & 0x200) { phi_v1 = 0xF; } } - switch (arg1->unk_26 & 3) { + switch (arg1->sfxParams & 3) { case 1: phi_f0 = 12.0f; break; @@ -2735,7 +2967,7 @@ u8 func_800F37B8(f32 arg0, SoundBankEntry* arg1, s8 arg2) { return (phi_v1 * 0x10) + (u8)((phi_f0 * phi_f12) / 1923.077f); } -s8 func_800F3990(f32 arg0, u16 arg1) { +s8 func_800F3990(f32 arg0, u16 sfxParams) { s8 ret = 0; if (arg0 >= 0.0f) { @@ -2768,7 +3000,7 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) { case BANK_ENEMY: case BANK_VOICE: if (D_80130604 == 2) { - sp38 = func_800F3990(*entry->posY, entry->unk_26); + sp38 = func_800F3990(*entry->posY, entry->sfxParams); } // fallthrough case BANK_OCARINA: @@ -2778,8 +3010,8 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) { panSigned = Audio_ComputeSoundPanSigned(*entry->posX, *entry->posZ, entry->unk_C); freqScale = Audio_ComputeSoundFreqScale(bankIdx, entryIdx) * *entry->freqScale; if (D_80130604 == 2) { - sp34 = D_801305C4[(entry->unk_26 & 0x400) >> 10]; - if (!(entry->unk_26 & 0x800)) { + sp34 = D_801305C4[(entry->sfxParams & 0x400) >> 10]; + if (!(entry->sfxParams & 0x800)) { if (*entry->posZ < sp34) { stereoBits = 0x10; } @@ -2803,7 +3035,7 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) { if ((sp33 | D_80130640) != 0) { sp39 = (sp33 | D_80130640); - } else if (D_80130604 == 2 && (entry->unk_26 & 0x2000) == 0) { + } else if (D_80130604 == 2 && (entry->sfxParams & 0x2000) == 0) { sp39 = func_800F37B8(sp34, entry, panSigned); } break; @@ -3221,8 +3453,6 @@ void Audio_ClearSariaBgmAtPos(Vec3f* pos) { } } -#ifdef NON_MATCHING -// matches, but need to migrate data. void func_800F510C(s8 volSplit) { u8 vol; u8 prio; @@ -3258,10 +3488,6 @@ void func_800F510C(s8 volSplit) { } } } -#else -void func_800F510C(s8 volSplit); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800EC960/func_800F510C.s") -#endif void Audio_PlaySariaBgm(Vec3f* pos, u16 seqId, u16 distMax) { f32 absY; @@ -3796,13 +4022,13 @@ void func_800F6964(u16 arg0) { for (i = 0; i < 0x10; i++) { skip = false; switch (i) { - case 0xB: - case 0xC: + case 11: + case 12: if (gAudioSpecId == 10) { skip = true; } break; - case 0xD: + case 13: skip = true; break; } diff --git a/src/code/code_800F7260.c b/src/code/code_800F7260.c index b1d4196ddc..e663d96be6 100644 --- a/src/code/code_800F7260.c +++ b/src/code/code_800F7260.c @@ -80,7 +80,6 @@ u8 D_801333F8 = 0; extern SoundRequest sSoundRequests[0x100]; extern Struct_800F8EA0 D_8016E270[7]; -extern Struct_8013331C* D_8013331C[9]; void Audio_SetSoundBanksMute(u16 muteMask) { u8 bankId; @@ -197,13 +196,13 @@ void Audio_ProcessSoundRequest(void) { u8 index; SoundRequest* req; SoundBankEntry* entry; - Struct_8013331C* sp48; + SoundParams* soundParams; s32 bankId; - u8 bestValue; - u8 bestIndex; + u8 evictImportance; + u8 evictIndex; req = &sSoundRequests[sSoundRequestReadIndex]; - bestIndex = 0x80; + evictIndex = 0x80; if (req->sfxId == 0) { return; } @@ -216,34 +215,36 @@ void Audio_ProcessSoundRequest(void) { index = gSoundBanks[bankId][0].next; while (index != 0xFF && index != 0) { if (gSoundBanks[bankId][index].posX == &req->pos->x) { - if ((D_8013331C[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].unk_2 & 0x20) && - D_8013331C[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].unk_0 == - gSoundBanks[bankId][index].unk_24) { + if ((gSoundParams[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].params & 0x20) && + gSoundParams[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].importance == + gSoundBanks[bankId][index].sfxImportance) { return; } if (gSoundBanks[bankId][index].sfxId == req->sfxId) { count = D_80130594[D_801333CC][bankId]; } else { if (count == 0) { - bestIndex = index; + evictIndex = index; sfxId = gSoundBanks[bankId][index].sfxId & 0xFFFF; - bestValue = D_8013331C[SFX_BANK_SHIFT(sfxId)][SFX_INDEX(sfxId)].unk_0; - } else if (gSoundBanks[bankId][index].unk_24 < bestValue) { - bestIndex = index; + evictImportance = gSoundParams[SFX_BANK_SHIFT(sfxId)][SFX_INDEX(sfxId)].importance; + } else if (gSoundBanks[bankId][index].sfxImportance < evictImportance) { + evictIndex = index; sfxId = gSoundBanks[bankId][index].sfxId & 0xFFFF; - bestValue = D_8013331C[SFX_BANK_SHIFT(sfxId)][SFX_INDEX(sfxId)].unk_0; + evictImportance = gSoundParams[SFX_BANK_SHIFT(sfxId)][SFX_INDEX(sfxId)].importance; } count++; if (count == D_80130594[D_801333CC][bankId]) { - index = (D_8013331C[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].unk_0 >= bestValue) - ? bestIndex - : 0; + if (gSoundParams[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)].importance >= evictImportance) { + index = evictIndex; + } else { + index = 0; + } } } if (count == D_80130594[D_801333CC][bankId]) { - sp48 = &D_8013331C[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)]; - if ((req->sfxId & 0xC00) || (sp48->unk_2 & 4) || (index == bestIndex)) { - if ((gSoundBanks[bankId][index].unk_26 & 8) && gSoundBanks[bankId][index].unk_2A != 1) { + soundParams = &gSoundParams[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)]; + if ((req->sfxId & 0xC00) || (soundParams->params & 4) || (index == evictIndex)) { + if ((gSoundBanks[bankId][index].sfxParams & 8) && gSoundBanks[bankId][index].unk_2A != 1) { Audio_ClearBGMMute(gSoundBanks[bankId][index].unk_2E); } gSoundBanks[bankId][index].unk_C = req->unk_8; @@ -253,8 +254,8 @@ void Audio_ProcessSoundRequest(void) { gSoundBanks[bankId][index].freqScale = req->freqScale; gSoundBanks[bankId][index].unk_14 = req->unk_10; gSoundBanks[bankId][index].reverbAdd = req->reverbAdd; - gSoundBanks[bankId][index].unk_26 = sp48->unk_2; - gSoundBanks[bankId][index].unk_24 = sp48->unk_0; + gSoundBanks[bankId][index].sfxParams = soundParams->params; + gSoundBanks[bankId][index].sfxImportance = soundParams->importance; } else if (gSoundBanks[bankId][index].unk_2A == 5) { gSoundBanks[bankId][index].unk_2A = 4; } @@ -275,9 +276,9 @@ void Audio_ProcessSoundRequest(void) { entry->freqScale = req->freqScale; entry->unk_14 = req->unk_10; entry->reverbAdd = req->reverbAdd; - sp48 = &D_8013331C[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)]; - entry->unk_26 = sp48->unk_2; - entry->unk_24 = sp48->unk_0; + soundParams = &gSoundParams[SFX_BANK_SHIFT(req->sfxId)][SFX_INDEX(req->sfxId)]; + entry->sfxParams = soundParams->params; + entry->sfxImportance = soundParams->importance; entry->sfxId = req->sfxId; entry->unk_2A = 1; entry->unk_2B = 2; @@ -294,7 +295,7 @@ void func_800F7B54(u8 bankId, u8 bankIndex) { SoundBankEntry* entry = &gSoundBanks[bankId][bankIndex]; u8 i; - if (entry->unk_26 & 8) { + if (entry->sfxParams & 8) { Audio_ClearBGMMute(entry->unk_2E); } if (bankIndex == D_8016E1A0[bankId]) { @@ -324,7 +325,7 @@ void func_800F7CEC(u8 arg0) { u8 i; u8 j; u8 phi_s0; - u8 spA9; + u8 sfxImportance; u8 phi_v1_5; u8 temp2; u16 temp3; @@ -336,7 +337,7 @@ void func_800F7CEC(u8 arg0) { phi_s3 = 0; for (i = 0; i < 3; i++) { - sp84[i].unk_0 = 0x7FFFFFFF; + sp84[i].priority = 0x7FFFFFFF; sp84[i].unk_4 = 0xFF; } phi_s4 = gSoundBanks[arg0][0].next; @@ -359,9 +360,9 @@ void func_800F7CEC(u8 arg0) { tempf1 = *entry->posY * 1; entry->dist = (SQ(*entry->posX) + SQ(tempf1) + SQ(*entry->posZ)) * 1; } - spA9 = entry->unk_24; - if (entry->unk_26 & 0x10) { - entry->unk_20 = SQ(0xFF - spA9) * 0x1690; + sfxImportance = entry->sfxImportance; + if (entry->sfxParams & 0x10) { + entry->priority = SQ(0xFF - sfxImportance) * SQ(76); } else { if (entry->dist > 0x7FFFFFD0) { entry->dist = 0x70000008; @@ -369,9 +370,9 @@ void func_800F7CEC(u8 arg0) { *entry->posZ); } temp3 = entry->sfxId; - entry->unk_20 = (u32)entry->dist + (SQ(0xFF - spA9) * 0x1690) + temp3 - temp3; + entry->priority = (u32)entry->dist + (SQ(0xFF - sfxImportance) * SQ(76)) + temp3 - temp3; if (*entry->posZ < 0.0f) { - entry->unk_20 += (s32)(-*entry->posZ * 6.0f); + entry->priority += (s32)(-*entry->posZ * 6.0f); } } if (entry->dist > SQ(1e5f)) { @@ -385,17 +386,17 @@ void func_800F7CEC(u8 arg0) { } else { spAE = D_80130578[D_801333CC][arg0]; for (i = 0; i < spAE; i++) { - if (sp84[i].unk_0 >= entry->unk_20) { + if (sp84[i].priority >= entry->priority) { if (phi_s3 < D_80130578[D_801333CC][arg0]) { phi_s3++; } for (j = spAE - 1; j > i; j--) { - sp84[j].unk_0 = sp84[j - 1].unk_0; + sp84[j].priority = sp84[j - 1].priority; sp84[j].unk_4 = sp84[j - 1].unk_4; } - sp84[i].unk_0 = entry->unk_20; + sp84[i].priority = entry->priority; sp84[i].unk_4 = phi_s4; - i = spAE; + i = spAE; // "break;" } } } @@ -482,11 +483,11 @@ void func_800F8480(u8 bankId) { seqChannel = gAudioContext.seqPlayers[2].channels[D_8016E260]; if (entry->unk_2A == 2) { entry->unk_2E = D_8016E260; - if (entry->unk_26 & 8) { + if (entry->sfxParams & 8) { Audio_QueueSeqCmdMute(D_8016E260); } - if (entry->unk_26 & 0xC0) { - switch (entry->unk_26 & 0xC0) { + if (entry->sfxParams & 0xC0) { + switch (entry->sfxParams & 0xC0) { case 0x40: entry->unk_2F = Audio_NextRandom() & 0xF; break;