From b0ca74ff0d78a3ed61d1bc6566cbea388f98a55e Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Sun, 10 Sep 2023 00:27:40 -0400 Subject: [PATCH] Audio/external matches (#412) * Match func_800C8920, func_800C8AE4, and.. Introduce struct Unk_800E9F7C and cleanup existing code * Match func_800C40F0, add the likely other pos vars in the unk struct * func_800C8CCC --- .../audio/external/func_800C40F0.s | 24 --- .../audio/external/func_800C8920.s | 52 ----- .../audio/external/func_800C8AE4.s | 120 ----------- .../audio/external/func_800C8CCC.s | 88 -------- src/audio/external.c | 196 +++++++----------- src/audio/external.h | 11 + 6 files changed, 84 insertions(+), 407 deletions(-) delete mode 100644 asm/non_matchings/audio/external/func_800C40F0.s delete mode 100644 asm/non_matchings/audio/external/func_800C8920.s delete mode 100644 asm/non_matchings/audio/external/func_800C8AE4.s delete mode 100644 asm/non_matchings/audio/external/func_800C8CCC.s diff --git a/asm/non_matchings/audio/external/func_800C40F0.s b/asm/non_matchings/audio/external/func_800C40F0.s deleted file mode 100644 index ccd8d158f..000000000 --- a/asm/non_matchings/audio/external/func_800C40F0.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_800C40F0 -/* 0C4CF0 800C40F0 27ADFFF0 */ addiu $t5, $sp, -0x10 -/* 0C4CF4 800C40F4 3C02800F */ lui $v0, %hi(D_800EA1C4) # $v0, 0x800f -/* 0C4CF8 800C40F8 2442A1C4 */ addiu $v0, %lo(D_800EA1C4) # addiu $v0, $v0, -0x5e3c -/* 0C4CFC 800C40FC ADA40010 */ sw $a0, 0x10($t5) -/* 0C4D00 800C4100 944F0000 */ lhu $t7, ($v0) -/* 0C4D04 800C4104 308E00FF */ andi $t6, $a0, 0xff -/* 0C4D08 800C4108 24180001 */ li $t8, 1 -/* 0C4D0C 800C410C 01D8C804 */ sllv $t9, $t8, $t6 -/* 0C4D10 800C4110 3B28FFFF */ xori $t0, $t9, 0xffff -/* 0C4D14 800C4114 01E84824 */ and $t1, $t7, $t0 -/* 0C4D18 800C4118 312AFFFF */ andi $t2, $t1, 0xffff -/* 0C4D1C 800C411C 15400007 */ bnez $t2, .L800C413C -/* 0C4D20 800C4120 A4490000 */ sh $t1, ($v0) -/* 0C4D24 800C4124 3C028019 */ lui $v0, %hi(D_801930D0) # $v0, 0x8019 -/* 0C4D28 800C4128 244230D0 */ addiu $v0, %lo(D_801930D0) # addiu $v0, $v0, 0x30d0 -/* 0C4D2C 800C412C 240B0001 */ li $t3, 1 -/* 0C4D30 800C4130 240C007F */ li $t4, 127 -/* 0C4D34 800C4134 A04B0012 */ sb $t3, 0x12($v0) -/* 0C4D38 800C4138 A04C0010 */ sb $t4, 0x10($v0) -.L800C413C: -/* 0C4D3C 800C413C 01A0E825 */ move $sp, $t5 -/* 0C4D40 800C4140 03E00008 */ jr $ra -/* 0C4D44 800C4144 25BD0010 */ addiu $sp, $t5, 0x10 diff --git a/asm/non_matchings/audio/external/func_800C8920.s b/asm/non_matchings/audio/external/func_800C8920.s deleted file mode 100644 index bb57f9c6a..000000000 --- a/asm/non_matchings/audio/external/func_800C8920.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_800C8920 -/* 0C9520 800C8920 3C0E800F */ lui $t6, %hi(D_800EA168) # $t6, 0x800f -/* 0C9524 800C8924 91CEA168 */ lbu $t6, %lo(D_800EA168)($t6) -/* 0C9528 800C8928 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0C952C 800C892C AFBE0028 */ sw $fp, 0x28($sp) -/* 0C9530 800C8930 03A0F025 */ move $fp, $sp -/* 0C9534 800C8934 11C00026 */ beqz $t6, .L800C89D0 -/* 0C9538 800C8938 AFBF002C */ sw $ra, 0x2c($sp) -/* 0C953C 800C893C 3C03800F */ lui $v1, %hi(gPlayers) # $v1, 0x800f -/* 0C9540 800C8940 24636990 */ addiu $v1, %lo(gPlayers) # addiu $v1, $v1, 0x6990 -/* 0C9544 800C8944 8C6F00BC */ lw $t7, 0xbc($v1) -/* 0C9548 800C8948 3C024000 */ lui $v0, 0x4000 -/* 0C954C 800C894C 01E2C024 */ and $t8, $t7, $v0 -/* 0C9550 800C8950 50580020 */ beql $v0, $t8, .L800C89D4 -/* 0C9554 800C8954 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C9558 800C8958 8C790E94 */ lw $t9, 0xe94($v1) -/* 0C955C 800C895C 03224024 */ and $t0, $t9, $v0 -/* 0C9560 800C8960 5048001C */ beql $v0, $t0, .L800C89D4 -/* 0C9564 800C8964 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C9568 800C8968 8C691C6C */ lw $t1, 0x1c6c($v1) -/* 0C956C 800C896C 01225024 */ and $t2, $t1, $v0 -/* 0C9570 800C8970 504A0018 */ beql $v0, $t2, .L800C89D4 -/* 0C9574 800C8974 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C9578 800C8978 8C6B2A44 */ lw $t3, 0x2a44($v1) -/* 0C957C 800C897C 01626024 */ and $t4, $t3, $v0 -/* 0C9580 800C8980 504C0014 */ beql $v0, $t4, .L800C89D4 -/* 0C9584 800C8984 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C9588 800C8988 8C6D381C */ lw $t5, 0x381c($v1) -/* 0C958C 800C898C 01A27024 */ and $t6, $t5, $v0 -/* 0C9590 800C8990 504E0010 */ beql $v0, $t6, .L800C89D4 -/* 0C9594 800C8994 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C9598 800C8998 8C6F45F4 */ lw $t7, 0x45f4($v1) -/* 0C959C 800C899C 01E2C024 */ and $t8, $t7, $v0 -/* 0C95A0 800C89A0 5058000C */ beql $v0, $t8, .L800C89D4 -/* 0C95A4 800C89A4 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C95A8 800C89A8 8C7953CC */ lw $t9, 0x53cc($v1) -/* 0C95AC 800C89AC 03224024 */ and $t0, $t9, $v0 -/* 0C95B0 800C89B0 50480008 */ beql $v0, $t0, .L800C89D4 -/* 0C95B4 800C89B4 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C95B8 800C89B8 8C6961A4 */ lw $t1, 0x61a4($v1) -/* 0C95BC 800C89BC 01225024 */ and $t2, $t1, $v0 -/* 0C95C0 800C89C0 504A0004 */ beql $v0, $t2, .L800C89D4 -/* 0C95C4 800C89C4 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C95C8 800C89C8 0C032B02 */ jal func_800CAC08 -/* 0C95CC 800C89CC 00000000 */ nop -.L800C89D0: -/* 0C95D0 800C89D0 8FDF002C */ lw $ra, 0x2c($fp) -.L800C89D4: -/* 0C95D4 800C89D4 03C0E825 */ move $sp, $fp -/* 0C95D8 800C89D8 8FDE0028 */ lw $fp, 0x28($fp) -/* 0C95DC 800C89DC 03E00008 */ jr $ra -/* 0C95E0 800C89E0 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/audio/external/func_800C8AE4.s b/asm/non_matchings/audio/external/func_800C8AE4.s deleted file mode 100644 index 643f68f8f..000000000 --- a/asm/non_matchings/audio/external/func_800C8AE4.s +++ /dev/null @@ -1,120 +0,0 @@ -.section .late_rodata - -glabel D_800F38B4 -.float 0.85 - -.section .text - -glabel func_800C8AE4 -/* 0C96E4 800C8AE4 3C0E800E */ lui $t6, %hi(gCurrentCourseId) # $t6, 0x800e -/* 0C96E8 800C8AE8 85CEC5A0 */ lh $t6, %lo(gCurrentCourseId)($t6) -/* 0C96EC 800C8AEC 27ADFFF0 */ addiu $t5, $sp, -0x10 -/* 0C96F0 800C8AF0 24010008 */ li $at, 8 -/* 0C96F4 800C8AF4 15C1005F */ bne $t6, $at, .L800C8C74 -/* 0C96F8 800C8AF8 01A0E825 */ move $sp, $t5 -/* 0C96FC 800C8AFC 3C03800F */ lui $v1, %hi(D_800EA184) # $v1, 0x800f -/* 0C9700 800C8B00 2463A184 */ addiu $v1, %lo(D_800EA184) # addiu $v1, $v1, -0x5e7c -/* 0C9704 800C8B04 94620000 */ lhu $v0, ($v1) -/* 0C9708 800C8B08 3C0F800F */ lui $t7, %hi(D_800EA16C) # $t7, 0x800f -/* 0C970C 800C8B0C 2401012C */ li $at, 300 -/* 0C9710 800C8B10 1040000E */ beqz $v0, .L800C8B4C -/* 0C9714 800C8B14 00000000 */ nop -/* 0C9718 800C8B18 91EFA16C */ lbu $t7, %lo(D_800EA16C)($t7) -/* 0C971C 800C8B1C 24580001 */ addiu $t8, $v0, 1 -/* 0C9720 800C8B20 15E00003 */ bnez $t7, .L800C8B30 -/* 0C9724 800C8B24 00000000 */ nop -/* 0C9728 800C8B28 A4780000 */ sh $t8, ($v1) -/* 0C972C 800C8B2C 3302FFFF */ andi $v0, $t8, 0xffff -.L800C8B30: -/* 0C9730 800C8B30 14410050 */ bne $v0, $at, .L800C8C74 -/* 0C9734 800C8B34 3C01800F */ lui $at, %hi(D_800F38B4) # $at, 0x800f -/* 0C9738 800C8B38 C42438B4 */ lwc1 $f4, %lo(D_800F38B4)($at) -/* 0C973C 800C8B3C 3C01800F */ lui $at, %hi(D_800EA17C) # $at, 0x800f -/* 0C9740 800C8B40 E424A17C */ swc1 $f4, %lo(D_800EA17C)($at) -/* 0C9744 800C8B44 1000004B */ b .L800C8C74 -/* 0C9748 800C8B48 A4600000 */ sh $zero, ($v1) -.L800C8B4C: -/* 0C974C 800C8B4C 3C02800F */ lui $v0, %hi(D_800EA1C0) # $v0, 0x800f -/* 0C9750 800C8B50 9042A1C0 */ lbu $v0, %lo(D_800EA1C0)($v0) -/* 0C9754 800C8B54 24010001 */ li $at, 1 -/* 0C9758 800C8B58 10400009 */ beqz $v0, .L800C8B80 -/* 0C975C 800C8B5C 00000000 */ nop -/* 0C9760 800C8B60 10410012 */ beq $v0, $at, .L800C8BAC -/* 0C9764 800C8B64 24010002 */ li $at, 2 -/* 0C9768 800C8B68 1041001E */ beq $v0, $at, .L800C8BE4 -/* 0C976C 800C8B6C 24010003 */ li $at, 3 -/* 0C9770 800C8B70 1041002D */ beq $v0, $at, .L800C8C28 -/* 0C9774 800C8B74 00000000 */ nop -/* 0C9778 800C8B78 1000003E */ b .L800C8C74 -/* 0C977C 800C8B7C 00000000 */ nop -.L800C8B80: -/* 0C9780 800C8B80 3C02800F */ lui $v0, %hi(D_800E9F7C) # $v0, 0x800f -/* 0C9784 800C8B84 24429F7C */ addiu $v0, %lo(D_800E9F7C) # addiu $v0, $v0, -0x6084 -/* 0C9788 800C8B88 80590014 */ lb $t9, 0x14($v0) -/* 0C978C 800C8B8C 13200039 */ beqz $t9, .L800C8C74 -/* 0C9790 800C8B90 00000000 */ nop -/* 0C9794 800C8B94 44803000 */ mtc1 $zero, $f6 -/* 0C9798 800C8B98 3C01800F */ lui $at, %hi(D_800EA17C) # $at, 0x800f -/* 0C979C 800C8B9C 24080001 */ li $t0, 1 -/* 0C97A0 800C8BA0 E426A17C */ swc1 $f6, %lo(D_800EA17C)($at) -/* 0C97A4 800C8BA4 10000033 */ b .L800C8C74 -/* 0C97A8 800C8BA8 A4680000 */ sh $t0, ($v1) -.L800C8BAC: -/* 0C97AC 800C8BAC 3C02800F */ lui $v0, %hi(D_800E9F7C) # $v0, 0x800f -/* 0C97B0 800C8BB0 24429F7C */ addiu $v0, %lo(D_800E9F7C) # addiu $v0, $v0, -0x6084 -/* 0C97B4 800C8BB4 80490014 */ lb $t1, 0x14($v0) -/* 0C97B8 800C8BB8 55200005 */ bnel $t1, $zero, .L800C8BD0 -/* 0C97BC 800C8BBC 44804000 */ mtc1 $zero, $f8 -/* 0C97C0 800C8BC0 804A0050 */ lb $t2, 0x50($v0) -/* 0C97C4 800C8BC4 1140002B */ beqz $t2, .L800C8C74 -/* 0C97C8 800C8BC8 00000000 */ nop -/* 0C97CC 800C8BCC 44804000 */ mtc1 $zero, $f8 -.L800C8BD0: -/* 0C97D0 800C8BD0 3C01800F */ lui $at, %hi(D_800EA17C) # $at, 0x800f -/* 0C97D4 800C8BD4 240B0001 */ li $t3, 1 -/* 0C97D8 800C8BD8 E428A17C */ swc1 $f8, %lo(D_800EA17C)($at) -/* 0C97DC 800C8BDC 10000025 */ b .L800C8C74 -/* 0C97E0 800C8BE0 A46B0000 */ sh $t3, ($v1) -.L800C8BE4: -/* 0C97E4 800C8BE4 3C02800F */ lui $v0, %hi(D_800E9F7C) # $v0, 0x800f -/* 0C97E8 800C8BE8 24429F7C */ addiu $v0, %lo(D_800E9F7C) # addiu $v0, $v0, -0x6084 -/* 0C97EC 800C8BEC 804C0014 */ lb $t4, 0x14($v0) -/* 0C97F0 800C8BF0 55800008 */ bnel $t4, $zero, .L800C8C14 -/* 0C97F4 800C8BF4 44805000 */ mtc1 $zero, $f10 -/* 0C97F8 800C8BF8 804E0050 */ lb $t6, 0x50($v0) -/* 0C97FC 800C8BFC 55C00005 */ bnel $t6, $zero, .L800C8C14 -/* 0C9800 800C8C00 44805000 */ mtc1 $zero, $f10 -/* 0C9804 800C8C04 804F008C */ lb $t7, 0x8c($v0) -/* 0C9808 800C8C08 11E0001A */ beqz $t7, .L800C8C74 -/* 0C980C 800C8C0C 00000000 */ nop -/* 0C9810 800C8C10 44805000 */ mtc1 $zero, $f10 -.L800C8C14: -/* 0C9814 800C8C14 3C01800F */ lui $at, %hi(D_800EA17C) # $at, 0x800f -/* 0C9818 800C8C18 24180001 */ li $t8, 1 -/* 0C981C 800C8C1C E42AA17C */ swc1 $f10, %lo(D_800EA17C)($at) -/* 0C9820 800C8C20 10000014 */ b .L800C8C74 -/* 0C9824 800C8C24 A4780000 */ sh $t8, ($v1) -.L800C8C28: -/* 0C9828 800C8C28 3C02800F */ lui $v0, %hi(D_800E9F7C) # $v0, 0x800f -/* 0C982C 800C8C2C 24429F7C */ addiu $v0, %lo(D_800E9F7C) # addiu $v0, $v0, -0x6084 -/* 0C9830 800C8C30 80590014 */ lb $t9, 0x14($v0) -/* 0C9834 800C8C34 5720000B */ bnel $t9, $zero, .L800C8C64 -/* 0C9838 800C8C38 44808000 */ mtc1 $zero, $f16 -/* 0C983C 800C8C3C 80480050 */ lb $t0, 0x50($v0) -/* 0C9840 800C8C40 55000008 */ bnel $t0, $zero, .L800C8C64 -/* 0C9844 800C8C44 44808000 */ mtc1 $zero, $f16 -/* 0C9848 800C8C48 8049008C */ lb $t1, 0x8c($v0) -/* 0C984C 800C8C4C 55200005 */ bnel $t1, $zero, .L800C8C64 -/* 0C9850 800C8C50 44808000 */ mtc1 $zero, $f16 -/* 0C9854 800C8C54 804A00C8 */ lb $t2, 0xc8($v0) -/* 0C9858 800C8C58 11400006 */ beqz $t2, .L800C8C74 -/* 0C985C 800C8C5C 00000000 */ nop -/* 0C9860 800C8C60 44808000 */ mtc1 $zero, $f16 -.L800C8C64: -/* 0C9864 800C8C64 3C01800F */ lui $at, %hi(D_800EA17C) # $at, 0x800f -/* 0C9868 800C8C68 240B0001 */ li $t3, 1 -/* 0C986C 800C8C6C E430A17C */ swc1 $f16, %lo(D_800EA17C)($at) -/* 0C9870 800C8C70 A46B0000 */ sh $t3, ($v1) -.L800C8C74: -/* 0C9874 800C8C74 03E00008 */ jr $ra -/* 0C9878 800C8C78 25BD0010 */ addiu $sp, $t5, 0x10 diff --git a/asm/non_matchings/audio/external/func_800C8CCC.s b/asm/non_matchings/audio/external/func_800C8CCC.s deleted file mode 100644 index 0d1992440..000000000 --- a/asm/non_matchings/audio/external/func_800C8CCC.s +++ /dev/null @@ -1,88 +0,0 @@ -glabel func_800C8CCC -/* 0C98CC 800C8CCC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0C98D0 800C8CD0 AFB10024 */ sw $s1, 0x24($sp) -/* 0C98D4 800C8CD4 3C11800F */ lui $s1, %hi(D_800EA1C0) # $s1, 0x800f -/* 0C98D8 800C8CD8 2631A1C0 */ addiu $s1, %lo(D_800EA1C0) # addiu $s1, $s1, -0x5e40 -/* 0C98DC 800C8CDC 92220000 */ lbu $v0, ($s1) -/* 0C98E0 800C8CE0 AFBE0028 */ sw $fp, 0x28($sp) -/* 0C98E4 800C8CE4 AFB00020 */ sw $s0, 0x20($sp) -/* 0C98E8 800C8CE8 24420001 */ addiu $v0, $v0, 1 -/* 0C98EC 800C8CEC 03A0F025 */ move $fp, $sp -/* 0C98F0 800C8CF0 AFBF002C */ sw $ra, 0x2c($sp) -/* 0C98F4 800C8CF4 1840001D */ blez $v0, .L800C8D6C -/* 0C98F8 800C8CF8 00008025 */ move $s0, $zero -.L800C8CFC: -/* 0C98FC 800C8CFC 0C031741 */ jal func_800C5D04 -/* 0C9900 800C8D00 320400FF */ andi $a0, $s0, 0xff -/* 0C9904 800C8D04 0C03178E */ jal func_800C5E38 -/* 0C9908 800C8D08 320400FF */ andi $a0, $s0, 0xff -/* 0C990C 800C8D0C 0C031842 */ jal func_800C6108 -/* 0C9910 800C8D10 320400FF */ andi $a0, $s0, 0xff -/* 0C9914 800C8D14 0C031928 */ jal func_800C64A0 -/* 0C9918 800C8D18 320400FF */ andi $a0, $s0, 0xff -/* 0C991C 800C8D1C 0C0319D6 */ jal func_800C6758 -/* 0C9920 800C8D20 320400FF */ andi $a0, $s0, 0xff -/* 0C9924 800C8D24 0C031A0F */ jal func_800C683C -/* 0C9928 800C8D28 320400FF */ andi $a0, $s0, 0xff -/* 0C992C 800C8D2C 0C031C2A */ jal func_800C70A8 -/* 0C9930 800C8D30 320400FF */ andi $a0, $s0, 0xff -/* 0C9934 800C8D34 0C031DB0 */ jal func_800C76C0 -/* 0C9938 800C8D38 320400FF */ andi $a0, $s0, 0xff -/* 0C993C 800C8D3C 0C03211F */ jal func_800C847C -/* 0C9940 800C8D40 320400FF */ andi $a0, $s0, 0xff -/* 0C9944 800C8D44 0C0321B6 */ jal func_800C86D8 -/* 0C9948 800C8D48 320400FF */ andi $a0, $s0, 0xff -/* 0C994C 800C8D4C 92220000 */ lbu $v0, ($s1) -/* 0C9950 800C8D50 26100001 */ addiu $s0, $s0, 1 -/* 0C9954 800C8D54 320E00FF */ andi $t6, $s0, 0xff -/* 0C9958 800C8D58 24420001 */ addiu $v0, $v0, 1 -/* 0C995C 800C8D5C 01C2082A */ slt $at, $t6, $v0 -/* 0C9960 800C8D60 1420FFE6 */ bnez $at, .L800C8CFC -/* 0C9964 800C8D64 01C08025 */ move $s0, $t6 -/* 0C9968 800C8D68 00008025 */ move $s0, $zero -.L800C8D6C: -/* 0C996C 800C8D6C 3C0F800E */ lui $t7, %hi(gModeSelection) # $t7, 0x800e -/* 0C9970 800C8D70 8DEFC53C */ lw $t7, %lo(gModeSelection)($t7) -/* 0C9974 800C8D74 15E0000C */ bnez $t7, .L800C8DA8 -/* 0C9978 800C8D78 00000000 */ nop -.L800C8D7C: -/* 0C997C 800C8D7C 0C0321DC */ jal func_800C8770 -/* 0C9980 800C8D80 320400FF */ andi $a0, $s0, 0xff -/* 0C9984 800C8D84 0C03231F */ jal func_800C8C7C -/* 0C9988 800C8D88 320400FF */ andi $a0, $s0, 0xff -/* 0C998C 800C8D8C 26100001 */ addiu $s0, $s0, 1 -/* 0C9990 800C8D90 321800FF */ andi $t8, $s0, 0xff -/* 0C9994 800C8D94 2B010008 */ slti $at, $t8, 8 -/* 0C9998 800C8D98 1420FFF8 */ bnez $at, .L800C8D7C -/* 0C999C 800C8D9C 03008025 */ move $s0, $t8 -/* 0C99A0 800C8DA0 1000000E */ b .L800C8DDC -/* 0C99A4 800C8DA4 00000000 */ nop -.L800C8DA8: -/* 0C99A8 800C8DA8 1840000C */ blez $v0, .L800C8DDC -/* 0C99AC 800C8DAC 00000000 */ nop -.L800C8DB0: -/* 0C99B0 800C8DB0 0C0321DC */ jal func_800C8770 -/* 0C99B4 800C8DB4 320400FF */ andi $a0, $s0, 0xff -/* 0C99B8 800C8DB8 0C03231F */ jal func_800C8C7C -/* 0C99BC 800C8DBC 320400FF */ andi $a0, $s0, 0xff -/* 0C99C0 800C8DC0 92280000 */ lbu $t0, ($s1) -/* 0C99C4 800C8DC4 26100001 */ addiu $s0, $s0, 1 -/* 0C99C8 800C8DC8 321900FF */ andi $t9, $s0, 0xff -/* 0C99CC 800C8DCC 25090001 */ addiu $t1, $t0, 1 -/* 0C99D0 800C8DD0 0329082A */ slt $at, $t9, $t1 -/* 0C99D4 800C8DD4 1420FFF6 */ bnez $at, .L800C8DB0 -/* 0C99D8 800C8DD8 03208025 */ move $s0, $t9 -.L800C8DDC: -/* 0C99DC 800C8DDC 0C032248 */ jal func_800C8920 -/* 0C99E0 800C8DE0 00000000 */ nop -/* 0C99E4 800C8DE4 0C032279 */ jal func_800C89E4 -/* 0C99E8 800C8DE8 00000000 */ nop -/* 0C99EC 800C8DEC 0C0322B9 */ jal func_800C8AE4 -/* 0C99F0 800C8DF0 00000000 */ nop -/* 0C99F4 800C8DF4 8FDF002C */ lw $ra, 0x2c($fp) -/* 0C99F8 800C8DF8 03C0E825 */ move $sp, $fp -/* 0C99FC 800C8DFC 8FD00020 */ lw $s0, 0x20($fp) -/* 0C9A00 800C8E00 8FD10024 */ lw $s1, 0x24($fp) -/* 0C9A04 800C8E04 8FDE0028 */ lw $fp, 0x28($fp) -/* 0C9A08 800C8E08 03E00008 */ jr $ra -/* 0C9A0C 800C8E0C 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/src/audio/external.c b/src/audio/external.c index b5aae2d95..12bd81950 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -1545,25 +1545,17 @@ void func_800C4084(u16 bankMask) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -extern ? D_801930D0; -static u16 D_800EA1C4 = 0; +extern u16 D_800EA1C4; +extern u8 D_801930D0[]; -void func_800C40F0(s32 arg0) { - u16 temp_t1; - - unksp-10.unk10 = arg0; - temp_t1 = D_800EA1C4 & ((1 << (arg0 & 0xFF)) ^ 0xFFFF); - D_800EA1C4 = temp_t1; - if (!(temp_t1 & 0xFFFF)) { - D_801930D0.unk12 = 1; - D_801930D0.unk10 = 0x7F; +void func_800C40F0(u8 arg0) { + D_800EA1C4 &= ((1 << (arg0)) ^ (u16) -1); + if (!D_800EA1C4) { + D_801930D0[18] = 1; + D_801930D0[16] = 0x7F; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/external/func_800C40F0.s") -#endif + void play_sound(u32 soundBits, f32 *position, u8 arg2, f32 *arg3, f32 *arg4, u8 *arg5) { u8 bank; @@ -3805,19 +3797,20 @@ void func_800C8770(u8 playerId) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800CAC08(); /* extern */ -static u8 D_800EA168 = 0; - +// Checks the same field for all players before doing something? void func_800C8920(void) { - if ((D_800EA168 != 0) && ((gPlayers->unk_0BC & 0x40000000) != 0x40000000) && ((gPlayers->unkE94 & 0x40000000) != 0x40000000) && ((gPlayers->unk1C6C & 0x40000000) != 0x40000000) && ((gPlayers->unk2A44 & 0x40000000) != 0x40000000) && ((gPlayers->unk381C & 0x40000000) != 0x40000000) && ((gPlayers->unk45F4 & 0x40000000) != 0x40000000) && ((gPlayers->unk53CC & 0x40000000) != 0x40000000) && ((gPlayers->unk61A4 & 0x40000000) != 0x40000000)) { - func_800CAC08(); - } + if (((u8) D_800EA168 != 0) + && ((gPlayers[0].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[1].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[2].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[3].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[4].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[5].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[6].unk_0BC & 0x40000000) != 0x40000000) + && ((gPlayers[7].unk_0BC & 0x40000000) != 0x40000000)) { + func_800CAC08(); + } } -#else -GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8920.s") -#endif void func_800C89E4(void) { if (D_800EA180 != 0) { @@ -3842,68 +3835,50 @@ void func_800C89E4(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -static ? D_800E9F7C; /* unable to generate initializer; const */ -static u8 D_800EA16C = 0; /* const */ -static u16 D_800EA184 = 0; /* const */ -static u8 D_800EA1C0 = 0; /* const */ -s16 gCurrentCourseId; /* unable to generate initializer */ +extern struct Unk_800E9F7C D_800E9F7C[]; +extern u16 D_800EA184; +static f64 D_800F38B4 = 0.85; void func_800C8AE4(void) { - u16 temp_t8; - u16 var_v0; - u8 temp_v0; - if (gCurrentCourseId == 8) { - var_v0 = D_800EA184; - if (var_v0 != 0) { - temp_t8 = var_v0 + 1; - if (D_800EA16C == 0) { - D_800EA184 = temp_t8; - var_v0 = temp_t8 & 0xFFFF; + if (D_800EA184 != 0) { + if ((u8) D_800EA16C == 0) { + D_800EA184 += 1; } - if (var_v0 == 0x012C) { - D_800EA17C = 0.85f; + if (D_800EA184 == 0x12C) { + D_800EA17C = 0.85; D_800EA184 = 0; } } else { - temp_v0 = D_800EA1C0; - switch (temp_v0) { /* irregular */ + switch (D_800EA1C0) { /* irregular */ case 0: - if (D_800E9F7C.unk14 != 0) { + if (D_800E9F7C[0].unk14[0] != 0) { D_800EA17C = 0.0f; D_800EA184 = 1; - return; } break; case 1: - if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0)) { + if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0)) { D_800EA17C = 0.0f; -block_25: D_800EA184 = 1; } break; case 2: - if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0) || (D_800E9F7C.unk8C != 0)) { + if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0) || (D_800E9F7C[2].unk14[0] != 0)) { D_800EA17C = 0.0f; D_800EA184 = 1; - return; } break; case 3: - if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0) || (D_800E9F7C.unk8C != 0) || (D_800E9F7C.unkC8 != 0)) { + if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0) || (D_800E9F7C[2].unk14[0] != 0) || (D_800E9F7C[3].unk14[0] != 0)) { D_800EA17C = 0.0f; - goto block_25; + D_800EA184 = 1; } break; } } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8AE4.s") -#endif extern f32 D_800EA130; @@ -3911,70 +3886,47 @@ void func_800C8C7C(u8 arg0) { *(&D_800EA06C[arg0].unk00[2]) = (1.0f - D_800E9F54[arg0]) - (&D_800EA130)[arg0]; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800C5D04(s32); /* extern */ -? func_800C5E38(s32); /* extern */ -? func_800C6108(s32); /* extern */ -? func_800C64A0(s32); /* extern */ -? func_800C683C(s32); /* extern */ -? func_800C70A8(s32); /* extern */ -? func_800C76C0(s32); /* extern */ -? func_800C847C(s32); /* extern */ -? func_800C8920(); /* extern */ -? func_800C8AE4(); /* extern */ -? func_800C8C7C(s32); /* extern */ -u8 D_800EA1C0 = 0; +extern void func_800C5D04(u8); /* extern */ +extern void func_800C5E38(u8); /* extern */ +extern void func_800C6108(u8); /* extern */ +extern void func_800C64A0(u8); /* extern */ +extern void func_800C683C(u8); /* extern */ +extern void func_800C70A8(u8); /* extern */ +extern void func_800C76C0(u8); /* extern */ +extern void func_800C847C(u8); /* extern */ +extern void func_800C8920(); /* extern */ +extern void func_800C8AE4(); /* extern */ -void func_800C8CCC(void) { - s32 temp_t6; - s32 temp_t8; - s32 temp_t9; - s32 var_s0; - s32 var_v0; +void func_800C8CCC() { + u8 i; - var_v0 = D_800EA1C0 + 1; - var_s0 = 0; - if (var_v0 > 0) { - do { - func_800C5D04(var_s0 & 0xFF); - func_800C5E38(var_s0 & 0xFF); - func_800C6108(var_s0 & 0xFF); - func_800C64A0(var_s0 & 0xFF); - func_800C6758(var_s0 & 0xFF); - func_800C683C(var_s0 & 0xFF); - func_800C70A8(var_s0 & 0xFF); - func_800C76C0(var_s0 & 0xFF); - func_800C847C(var_s0 & 0xFF); - func_800C86D8(var_s0 & 0xFF); - temp_t6 = (var_s0 + 1) & 0xFF; - var_v0 = D_800EA1C0 + 1; - var_s0 = temp_t6; - } while (temp_t6 < var_v0); - var_s0 = 0; + for (i = 0; i < D_800EA1C0 + 1; i++) { + func_800C5D04(i); + func_800C5E38(i); + func_800C6108(i); + func_800C64A0(i); + func_800C6758(i); + func_800C683C(i); + func_800C70A8(i); + func_800C76C0(i); + func_800C847C(i); + func_800C86D8(i); } if (gModeSelection == 0) { - do { - func_800C8770(var_s0 & 0xFF); - func_800C8C7C(var_s0 & 0xFF); - temp_t8 = (var_s0 + 1) & 0xFF; - var_s0 = temp_t8; - } while (temp_t8 < 8); - } else if (var_v0 > 0) { - do { - func_800C8770(var_s0 & 0xFF); - func_800C8C7C(var_s0 & 0xFF); - temp_t9 = (var_s0 + 1) & 0xFF; - var_s0 = temp_t9; - } while (temp_t9 < (D_800EA1C0 + 1)); + for(i = 0; i < 8; i++) { + func_800C8770(i); + func_800C8C7C(i); + } + } else { + for(i = 0; i < D_800EA1C0 + 1; i++) { + func_800C8770(i); + func_800C8C7C(i); + } } func_800C8920(); func_800C89E4(); func_800C8AE4(); } -#else -GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8CCC.s") -#endif void play_sound2(s32 soundBits) { @@ -4002,8 +3954,6 @@ void func_800C8F44(u8 arg0) { func_800C36C4(0, 0, arg0, 1); } -extern struct Unk_8018EFD8 D_800E9F7C[]; - void func_800C8F80(u8 arg0, s32 arg1) { u8 temp_v0; u8* temp_v1; @@ -4015,7 +3965,7 @@ void func_800C8F80(u8 arg0, s32 arg1) { case 2: *temp_v1 = 1; case 0: - play_sound((u32) arg1, (f32* ) &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, &D_800EA1DC); + play_sound((u32) arg1, &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, &D_800EA1DC); break; } } @@ -4032,7 +3982,7 @@ void func_800C9060(u8 arg0, u32 arg1) { case 2: D_800EA0EC[arg0] = 1; case 0: - play_sound(arg1, (f32*) &D_800E9F7C[arg0].posX, arg0, D_800EA1D4, D_800EA1D4, (u8*) &D_800E9F7C[arg0].velZ); + play_sound(arg1, &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, (u8*) &D_800E9F7C[arg0].unk14[0]); break; } } @@ -4259,11 +4209,11 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C94A4.s") #endif void func_800C97C4(u8 arg0) { - func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF00); - func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF14); - func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF2E); - func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF36); - func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF3E); + func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF00); + func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF14); + func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF2E); + func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF36); + func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF3E); } void func_800C98B8(f32* position, f32* velocity, u32 soundBits) { diff --git a/src/audio/external.h b/src/audio/external.h index b128ee086..41ce545b3 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -88,6 +88,15 @@ struct Unk_800EA06C { /* 0x0D */ // u8 compilerPadding0[3]; }; +// Similar to Unk_8018EFD8 +// Should look like 5 f32's, then 4 u8's, then 9 f32's. +struct Unk_800E9F7C { + Vec3f pos; + f32 unk4[2]; + s8 unk14[4]; + f32 unk18[9]; +}; // Size is still 0x3C. + void func_800C94A4(u8); void func_800CADD0(u8, f32); void func_800C13F0(void); @@ -134,6 +143,7 @@ void func_800C6758(u8); void func_800C86D8(u8); void func_800C8770(u8); +void func_800C8920(void); void func_800C89E4(void); void func_800C8CCC(void); void play_sound2(s32); @@ -169,6 +179,7 @@ void func_800CA388(u8); void func_800CA414(u16, u16); void func_800CA49C(u8); void func_800CAACC(u8); +void func_800CAC08(); void func_800CAC60(s32); void func_800CAD40(s32); void func_800CAEC4(u8, f32);