From 9c661125bebeb10fbd6cdeeabe6c7754bd72ced7 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Tue, 5 Sep 2023 17:49:55 -0400 Subject: [PATCH] Small matches, nothing super special (#400) Signed-off-by: Taggerung --- asm/bss_8001C4D0.s | 23 +- .../code_80071F00/func_80076ED8.s | 23 -- .../code_80071F00/func_8007CC00.s | 135 --------- .../code_80071F00/func_800859C8.s | 69 ----- data/data_code_80071F00_2.s | 50 +++- include/objects.h | 8 + src/code_80057C60.c | 25 -- src/code_80057C60.h | 24 ++ src/code_80071F00.c | 265 +++++------------- src/code_80071F00.h | 18 +- 10 files changed, 162 insertions(+), 478 deletions(-) delete mode 100644 asm/non_matchings/code_80071F00/func_80076ED8.s delete mode 100644 asm/non_matchings/code_80071F00/func_8007CC00.s delete mode 100644 asm/non_matchings/code_80071F00/func_800859C8.s diff --git a/asm/bss_8001C4D0.s b/asm/bss_8001C4D0.s index 5121d3fd9..bb1863eb2 100644 --- a/asm/bss_8001C4D0.s +++ b/asm/bss_8001C4D0.s @@ -591,22 +591,16 @@ glabel D_80165A90 # object list begin # D_80165C18 should be of size 123,200 (0xE0 * 0x226) -# D_80165C94 through D_80165CED are all fake variables +# D_80165CBC, D_80165CBE, and D_80165CED are all fake variables glabel D_80165C18 -.skip 124 - -glabel D_80165C94 -.skip 40 +.skip 164 # Currently referenced in func_800534E8.s, but that function is in NEEDS_RODATA state glabel D_80165CBC .skip 2 glabel D_80165CBE -.skip 8 - -glabel D_80165CC6 -.skip 39 +.skip 47 glabel D_80165CED .skip 122987 @@ -1667,16 +1661,7 @@ glabel gGPPointsByCharacterId # List of character IDs indicating where each character # is in the Grand Prix standings glabel gCharacterIdByGPOverallRank -.skip 1 - -glabel D_8018D9D1 -.skip 1 - -glabel D_8018D9D2 -.skip 1 - -glabel D_8018D9D3 -.skip 5 +.skip 8 glabel D_8018D9D8 .skip 1 diff --git a/asm/non_matchings/code_80071F00/func_80076ED8.s b/asm/non_matchings/code_80071F00/func_80076ED8.s deleted file mode 100644 index 5a5abd1d2..000000000 --- a/asm/non_matchings/code_80071F00/func_80076ED8.s +++ /dev/null @@ -1,23 +0,0 @@ -glabel func_80076ED8 -/* 077AD8 80076ED8 000470C0 */ sll $t6, $a0, 3 -/* 077ADC 80076EDC 01C47023 */ subu $t6, $t6, $a0 -/* 077AE0 80076EE0 000E7140 */ sll $t6, $t6, 5 -/* 077AE4 80076EE4 3C028016 */ lui $v0, %hi(D_80165CC6) # x8016 -/* 077AE8 80076EE8 004E1021 */ addu $v0, $v0, $t6 -/* 077AEC 80076EEC 84425CC6 */ lh $v0, %lo(D_80165CC6)($v0) # 0x5cc6($v0) -/* 077AF0 80076EF0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 077AF4 80076EF4 AFBF0014 */ sw $ra, 0x14($sp) -/* 077AF8 80076EF8 10400006 */ beqz $v0, .L80076F14 -/* 077AFC 80076EFC 24010001 */ li $at, 1 -/* 077B00 80076F00 14410004 */ bne $v0, $at, .L80076F14 -/* 077B04 80076F04 00000000 */ nop -/* 077B08 80076F08 0C021BF5 */ jal func_80086FD4 -/* 077B0C 80076F0C AFA40018 */ sw $a0, 0x18($sp) -/* 077B10 80076F10 8FA40018 */ lw $a0, 0x18($sp) -.L80076F14: -/* 077B14 80076F14 0C022FC6 */ jal func_8008BF18 -/* 077B18 80076F18 00000000 */ nop -/* 077B1C 80076F1C 8FBF0014 */ lw $ra, 0x14($sp) -/* 077B20 80076F20 27BD0018 */ addiu $sp, $sp, 0x18 -/* 077B24 80076F24 03E00008 */ jr $ra -/* 077B28 80076F28 00000000 */ nop diff --git a/asm/non_matchings/code_80071F00/func_8007CC00.s b/asm/non_matchings/code_80071F00/func_8007CC00.s deleted file mode 100644 index 5c2808882..000000000 --- a/asm/non_matchings/code_80071F00/func_8007CC00.s +++ /dev/null @@ -1,135 +0,0 @@ -glabel func_8007CC00 -/* 07D800 8007CC00 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 07D804 8007CC04 AFBF004C */ sw $ra, 0x4c($sp) -/* 07D808 8007CC08 AFBE0048 */ sw $fp, 0x48($sp) -/* 07D80C 8007CC0C AFB70044 */ sw $s7, 0x44($sp) -/* 07D810 8007CC10 AFB60040 */ sw $s6, 0x40($sp) -/* 07D814 8007CC14 AFB5003C */ sw $s5, 0x3c($sp) -/* 07D818 8007CC18 AFB40038 */ sw $s4, 0x38($sp) -/* 07D81C 8007CC1C AFB30034 */ sw $s3, 0x34($sp) -/* 07D820 8007CC20 AFB20030 */ sw $s2, 0x30($sp) -/* 07D824 8007CC24 AFB1002C */ sw $s1, 0x2c($sp) -/* 07D828 8007CC28 AFB00028 */ sw $s0, 0x28($sp) -/* 07D82C 8007CC2C F7B60020 */ sdc1 $f22, 0x20($sp) -/* 07D830 8007CC30 0C01F29C */ jal func_8007CA70 -/* 07D834 8007CC34 F7B40018 */ sdc1 $f20, 0x18($sp) -/* 07D838 8007CC38 3C01401A */ li $at, 0x401A0000 # 2.406250 -/* 07D83C 8007CC3C 3C148019 */ lui $s4, %hi(D_8018BFA8) # $s4, 0x8019 -/* 07D840 8007CC40 3C1E800E */ lui $fp, %hi(gPlayerOne) # $fp, 0x800e -/* 07D844 8007CC44 3C158016 */ lui $s5, %hi(D_80165C18) # $s5, 0x8016 -/* 07D848 8007CC48 4481B800 */ mtc1 $at, $f23 -/* 07D84C 8007CC4C 4480B000 */ mtc1 $zero, $f22 -/* 07D850 8007CC50 26B55C18 */ addiu $s5, %lo(D_80165C18) # addiu $s5, $s5, 0x5c18 -/* 07D854 8007CC54 27DEC4DC */ addiu $fp, %lo(gPlayerOne) # addiu $fp, $fp, -0x3b24 -/* 07D858 8007CC58 2694BFA8 */ addiu $s4, %lo(D_8018BFA8) # addiu $s4, $s4, -0x4058 -/* 07D85C 8007CC5C 24170DD8 */ li $s7, 3544 -/* 07D860 8007CC60 241600E0 */ li $s6, 224 -/* 07D864 8007CC64 8E920000 */ lw $s2, ($s4) -.L8007CC68: -/* 07D868 8007CC68 02560019 */ multu $s2, $s6 -/* 07D86C 8007CC6C 00007012 */ mflo $t6 -/* 07D870 8007CC70 02AE8021 */ addu $s0, $s5, $t6 -/* 07D874 8007CC74 860F00A6 */ lh $t7, 0xa6($s0) -/* 07D878 8007CC78 11E00051 */ beqz $t7, .L8007CDC0 -/* 07D87C 8007CC7C 00000000 */ nop -/* 07D880 8007CC80 0C01F1A1 */ jal func_8007C684 -/* 07D884 8007CC84 02402025 */ move $a0, $s2 -/* 07D888 8007CC88 0C022DE3 */ jal func_8008B78C -/* 07D88C 8007CC8C 02402025 */ move $a0, $s2 -/* 07D890 8007CC90 820200D1 */ lb $v0, 0xd1($s0) -/* 07D894 8007CC94 3C09800E */ lui $t1, %hi(camera1) # $t1, 0x800e -/* 07D898 8007CC98 8D29DB40 */ lw $t1, %lo(camera1)($t1) -/* 07D89C 8007CC9C 00570019 */ multu $v0, $s7 -/* 07D8A0 8007CCA0 00024080 */ sll $t0, $v0, 2 -/* 07D8A4 8007CCA4 01024023 */ subu $t0, $t0, $v0 -/* 07D8A8 8007CCA8 000840C0 */ sll $t0, $t0, 3 -/* 07D8AC 8007CCAC 01024023 */ subu $t0, $t0, $v0 -/* 07D8B0 8007CCB0 000840C0 */ sll $t0, $t0, 3 -/* 07D8B4 8007CCB4 01091821 */ addu $v1, $t0, $t1 -/* 07D8B8 8007CCB8 846A0026 */ lh $t2, 0x26($v1) -/* 07D8BC 8007CCBC 340B8000 */ li $t3, 32768 -/* 07D8C0 8007CCC0 8FD90000 */ lw $t9, ($fp) -/* 07D8C4 8007CCC4 016A8823 */ subu $s1, $t3, $t2 -/* 07D8C8 8007CCC8 0000C012 */ mflo $t8 -/* 07D8CC 8007CCCC 322CFFFF */ andi $t4, $s1, 0xffff -/* 07D8D0 8007CCD0 01808825 */ move $s1, $t4 -/* 07D8D4 8007CCD4 3184FFFF */ andi $a0, $t4, 0xffff -/* 07D8D8 8007CCD8 0C0AE00E */ jal coss -/* 07D8DC 8007CCDC 03199821 */ addu $s3, $t8, $t9 -/* 07D8E0 8007CCE0 46000506 */ mov.s $f20, $f0 -/* 07D8E4 8007CCE4 0C0AE006 */ jal sins -/* 07D8E8 8007CCE8 3224FFFF */ andi $a0, $s1, 0xffff -/* 07D8EC 8007CCEC C6040010 */ lwc1 $f4, 0x10($s0) -/* 07D8F0 8007CCF0 C6060028 */ lwc1 $f6, 0x28($s0) -/* 07D8F4 8007CCF4 C6700014 */ lwc1 $f16, 0x14($s3) -/* 07D8F8 8007CCF8 3224FFFF */ andi $a0, $s1, 0xffff -/* 07D8FC 8007CCFC 46062200 */ add.s $f8, $f4, $f6 -/* 07D900 8007CD00 C6060018 */ lwc1 $f6, 0x18($s0) -/* 07D904 8007CD04 C6040030 */ lwc1 $f4, 0x30($s0) -/* 07D908 8007CD08 4608A282 */ mul.s $f10, $f20, $f8 -/* 07D90C 8007CD0C 46062200 */ add.s $f8, $f4, $f6 -/* 07D910 8007CD10 460A8480 */ add.s $f18, $f16, $f10 -/* 07D914 8007CD14 46004402 */ mul.s $f16, $f8, $f0 -/* 07D918 8007CD18 46109281 */ sub.s $f10, $f18, $f16 -/* 07D91C 8007CD1C C6120014 */ lwc1 $f18, 0x14($s0) -/* 07D920 8007CD20 E60A0004 */ swc1 $f10, 4($s0) -/* 07D924 8007CD24 C6640074 */ lwc1 $f4, 0x74($s3) -/* 07D928 8007CD28 46009421 */ cvt.d.s $f16, $f18 -/* 07D92C 8007CD2C 460021A1 */ cvt.d.s $f6, $f4 -/* 07D930 8007CD30 C604002C */ lwc1 $f4, 0x2c($s0) -/* 07D934 8007CD34 4626B200 */ add.d $f8, $f22, $f6 -/* 07D938 8007CD38 460021A1 */ cvt.d.s $f6, $f4 -/* 07D93C 8007CD3C 46304280 */ add.d $f10, $f8, $f16 -/* 07D940 8007CD40 462A3480 */ add.d $f18, $f6, $f10 -/* 07D944 8007CD44 46209220 */ cvt.s.d $f8, $f18 -/* 07D948 8007CD48 0C0AE006 */ jal sins -/* 07D94C 8007CD4C E6080008 */ swc1 $f8, 8($s0) -/* 07D950 8007CD50 46000506 */ mov.s $f20, $f0 -/* 07D954 8007CD54 0C0AE00E */ jal coss -/* 07D958 8007CD58 3224FFFF */ andi $a0, $s1, 0xffff -/* 07D95C 8007CD5C C6100030 */ lwc1 $f16, 0x30($s0) -/* 07D960 8007CD60 C6040018 */ lwc1 $f4, 0x18($s0) -/* 07D964 8007CD64 C6120010 */ lwc1 $f18, 0x10($s0) -/* 07D968 8007CD68 C6080028 */ lwc1 $f8, 0x28($s0) -/* 07D96C 8007CD6C 46048180 */ add.s $f6, $f16, $f4 -/* 07D970 8007CD70 02402025 */ move $a0, $s2 -/* 07D974 8007CD74 46089400 */ add.s $f16, $f18, $f8 -/* 07D978 8007CD78 46003282 */ mul.s $f10, $f6, $f0 -/* 07D97C 8007CD7C C666001C */ lwc1 $f6, 0x1c($s3) -/* 07D980 8007CD80 4610A102 */ mul.s $f4, $f20, $f16 -/* 07D984 8007CD84 46043480 */ add.s $f18, $f6, $f4 -/* 07D988 8007CD88 46125200 */ add.s $f8, $f10, $f18 -/* 07D98C 8007CD8C 0C01F154 */ jal func_8007C550 -/* 07D990 8007CD90 E608000C */ swc1 $f8, 0xc($s0) -/* 07D994 8007CD94 02402025 */ move $a0, $s2 -/* 07D998 8007CD98 0C01C88F */ jal func_8007223C -/* 07D99C 8007CD9C 24050080 */ li $a1, 128 -/* 07D9A0 8007CDA0 10400005 */ beqz $v0, .L8007CDB8 -/* 07D9A4 8007CDA4 3C0E800E */ lui $t6, %hi(D_800E4470) # $t6, 0x800e -/* 07D9A8 8007CDA8 3C0D800E */ lui $t5, %hi(D_800E44B0) # $t5, 0x800e -/* 07D9AC 8007CDAC 25AD44B0 */ addiu $t5, %lo(D_800E44B0) # addiu $t5, $t5, 0x44b0 -/* 07D9B0 8007CDB0 10000003 */ b .L8007CDC0 -/* 07D9B4 8007CDB4 AE0D0074 */ sw $t5, 0x74($s0) -.L8007CDB8: -/* 07D9B8 8007CDB8 25CE4470 */ addiu $t6, %lo(D_800E4470) # addiu $t6, $t6, 0x4470 -/* 07D9BC 8007CDBC AE0E0074 */ sw $t6, 0x74($s0) -.L8007CDC0: -/* 07D9C0 8007CDC0 3C0F8019 */ lui $t7, %hi(D_8018BFD0) # $t7, 0x8019 -/* 07D9C4 8007CDC4 25EFBFD0 */ addiu $t7, %lo(D_8018BFD0) # addiu $t7, $t7, -0x4030 -/* 07D9C8 8007CDC8 26940004 */ addiu $s4, $s4, 4 -/* 07D9CC 8007CDCC 568FFFA6 */ bnel $s4, $t7, .L8007CC68 -/* 07D9D0 8007CDD0 8E920000 */ lw $s2, ($s4) -/* 07D9D4 8007CDD4 8FBF004C */ lw $ra, 0x4c($sp) -/* 07D9D8 8007CDD8 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 07D9DC 8007CDDC D7B60020 */ ldc1 $f22, 0x20($sp) -/* 07D9E0 8007CDE0 8FB00028 */ lw $s0, 0x28($sp) -/* 07D9E4 8007CDE4 8FB1002C */ lw $s1, 0x2c($sp) -/* 07D9E8 8007CDE8 8FB20030 */ lw $s2, 0x30($sp) -/* 07D9EC 8007CDEC 8FB30034 */ lw $s3, 0x34($sp) -/* 07D9F0 8007CDF0 8FB40038 */ lw $s4, 0x38($sp) -/* 07D9F4 8007CDF4 8FB5003C */ lw $s5, 0x3c($sp) -/* 07D9F8 8007CDF8 8FB60040 */ lw $s6, 0x40($sp) -/* 07D9FC 8007CDFC 8FB70044 */ lw $s7, 0x44($sp) -/* 07DA00 8007CE00 8FBE0048 */ lw $fp, 0x48($sp) -/* 07DA04 8007CE04 03E00008 */ jr $ra -/* 07DA08 8007CE08 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/asm/non_matchings/code_80071F00/func_800859C8.s b/asm/non_matchings/code_80071F00/func_800859C8.s deleted file mode 100644 index fdaccafd7..000000000 --- a/asm/non_matchings/code_80071F00/func_800859C8.s +++ /dev/null @@ -1,69 +0,0 @@ -.section .late_rodata - -glabel D_800EF3E0 -.float 0.03 -.word 0x00000000 - -.section .text - -glabel func_800859C8 -/* 0865C8 800859C8 000478C0 */ sll $t7, $a0, 3 -/* 0865CC 800859CC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0865D0 800859D0 01E47823 */ subu $t7, $t7, $a0 -/* 0865D4 800859D4 3C188016 */ lui $t8, %hi(D_80165C18) # $t8, 0x8016 -/* 0865D8 800859D8 AFB00028 */ sw $s0, 0x28($sp) -/* 0865DC 800859DC 27185C18 */ addiu $t8, %lo(D_80165C18) # addiu $t8, $t8, 0x5c18 -/* 0865E0 800859E0 000F7940 */ sll $t7, $t7, 5 -/* 0865E4 800859E4 01F88021 */ addu $s0, $t7, $t8 -/* 0865E8 800859E8 860200A6 */ lh $v0, 0xa6($s0) -/* 0865EC 800859EC AFBF002C */ sw $ra, 0x2c($sp) -/* 0865F0 800859F0 AFA40030 */ sw $a0, 0x30($sp) -/* 0865F4 800859F4 10400012 */ beqz $v0, .L80085A40 -/* 0865F8 800859F8 24010001 */ li $at, 1 -/* 0865FC 800859FC 10410005 */ beq $v0, $at, .L80085A14 -/* 086600 80085A00 24010002 */ li $at, 2 -/* 086604 80085A04 10410007 */ beq $v0, $at, .L80085A24 -/* 086608 80085A08 8FA40030 */ lw $a0, 0x30($sp) -/* 08660C 80085A0C 1000000C */ b .L80085A40 -/* 086610 80085A10 00000000 */ nop -.L80085A14: -/* 086614 80085A14 0C02161E */ jal func_80085878 -/* 086618 80085A18 8FA40030 */ lw $a0, 0x30($sp) -/* 08661C 80085A1C 10000008 */ b .L80085A40 -/* 086620 80085A20 00000000 */ nop -.L80085A24: -/* 086624 80085A24 2419FFFF */ li $t9, -1 -/* 086628 80085A28 AFB90014 */ sw $t9, 0x14($sp) -/* 08662C 80085A2C 00002825 */ move $a1, $zero -/* 086630 80085A30 860600A4 */ lh $a2, 0xa4($s0) -/* 086634 80085A34 24070001 */ li $a3, 1 -/* 086638 80085A38 0C01CB95 */ jal func_80072E54 -/* 08663C 80085A3C AFA00010 */ sw $zero, 0x10($sp) -.L80085A40: -/* 086640 80085A40 3C088019 */ lui $t0, %hi(D_8018D40C) # $t0, 0x8019 -/* 086644 80085A44 8D08D40C */ lw $t0, %lo(D_8018D40C)($t0) -/* 086648 80085A48 26040004 */ addiu $a0, $s0, 4 -/* 08664C 80085A4C 26050038 */ addiu $a1, $s0, 0x38 -/* 086650 80085A50 15000003 */ bnez $t0, .L80085A60 -/* 086654 80085A54 3C061901 */ lui $a2, (0x19018057 >> 16) # lui $a2, 0x1901 -/* 086658 80085A58 0C03262E */ jal func_800C98B8 -/* 08665C 80085A5C 34C68057 */ ori $a2, (0x19018057 & 0xFFFF) # ori $a2, $a2, 0x8057 -.L80085A60: -/* 086660 80085A60 3C01800F */ lui $at, %hi(D_800EF3E0) # $at, 0x800f -/* 086664 80085A64 C424F3E0 */ lwc1 $f4, %lo(D_800EF3E0)($at) -/* 086668 80085A68 3C06BF4C */ lui $a2, (0xBF4CCCCD >> 16) # lui $a2, 0xbf4c -/* 08666C 80085A6C 3C073F4C */ lui $a3, (0x3F4CCCCD >> 16) # lui $a3, 0x3f4c -/* 086670 80085A70 2409FFFF */ li $t1, -1 -/* 086674 80085A74 AFA90018 */ sw $t1, 0x18($sp) -/* 086678 80085A78 34E7CCCD */ ori $a3, (0x3F4CCCCD & 0xFFFF) # ori $a3, $a3, 0xcccd -/* 08667C 80085A7C 34C6CCCD */ ori $a2, (0xBF4CCCCD & 0xFFFF) # ori $a2, $a2, 0xcccd -/* 086680 80085A80 8FA40030 */ lw $a0, 0x30($sp) -/* 086684 80085A84 26050044 */ addiu $a1, $s0, 0x44 -/* 086688 80085A88 AFA00014 */ sw $zero, 0x14($sp) -/* 08668C 80085A8C 0C01D0D1 */ jal func_80074344 -/* 086690 80085A90 E7A40010 */ swc1 $f4, 0x10($sp) -/* 086694 80085A94 8FBF002C */ lw $ra, 0x2c($sp) -/* 086698 80085A98 8FB00028 */ lw $s0, 0x28($sp) -/* 08669C 80085A9C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0866A0 80085AA0 03E00008 */ jr $ra -/* 0866A4 80085AA4 00000000 */ nop diff --git a/data/data_code_80071F00_2.s b/data/data_code_80071F00_2.s index 087d2e6d8..6ed000069 100644 --- a/data/data_code_80071F00_2.s +++ b/data/data_code_80071F00_2.s @@ -456,27 +456,47 @@ glabel D_800E5DB4 .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +# Spawn data for the flag poles in Yoshi Valley +# YVFlagPoleSpawn glabel D_800E5DF4 -.hword 0xfc7a, 0x0046, 0xfa82, 0x3800, 0xfc4c, 0x0046, 0xfa03, 0x3800 -.hword 0xf786, 0x0000, 0x02d3, 0x0400, 0xf76f, 0x0000, 0x02f9, 0x0400 +.hword 0xfc7a, 0x0046, 0xfa82, 0x3800 +.hword 0xfc4c, 0x0046, 0xfa03, 0x3800 +.hword 0xf786, 0x0000, 0x02d3, 0x0400 +.hword 0xf76f, 0x0000, 0x02f9, 0x0400 glabel D_800E5E14 -.hword 0xf96d, 0xffb0, 0xffa8, 0x0009, 0xf99c, 0xffa3, 0xff6d, 0x0009 -.hword 0xf9a4, 0xffaa, 0xff94, 0x0009, 0xf974, 0xffbb, 0xffe2, 0x0009 -.hword 0xfb35, 0xffe5, 0xfc23, 0x001a, 0xfb13, 0xffd7, 0xfc90, 0x001a -.hword 0xfac2, 0xffc4, 0xfcc2, 0x001a, 0xfa6b, 0xffb2, 0xfcaf, 0x001a -.hword 0xfa2c, 0xffa2, 0xfcfa, 0x001a, 0xfa53, 0xffa9, 0xfcf0, 0x001a -.hword 0xfa30, 0xffa7, 0xfcac, 0x001a, 0xfaeb, 0xffd1, 0xfc78, 0x001a -.hword 0xf5e5, 0xffc8, 0xfefd, 0x001c, 0xf643, 0xffa2, 0xfe3a, 0x001c +.hword 0xf96d, 0xffb0, 0xffa8, 0x0009 +.hword 0xf99c, 0xffa3, 0xff6d, 0x0009 +.hword 0xf9a4, 0xffaa, 0xff94, 0x0009 +.hword 0xf974, 0xffbb, 0xffe2, 0x0009 +.hword 0xfb35, 0xffe5, 0xfc23, 0x001a +.hword 0xfb13, 0xffd7, 0xfc90, 0x001a +.hword 0xfac2, 0xffc4, 0xfcc2, 0x001a +.hword 0xfa6b, 0xffb2, 0xfcaf, 0x001a +.hword 0xfa2c, 0xffa2, 0xfcfa, 0x001a +.hword 0xfa53, 0xffa9, 0xfcf0, 0x001a +.hword 0xfa30, 0xffa7, 0xfcac, 0x001a +.hword 0xfaeb, 0xffd1, 0xfc78, 0x001a +.hword 0xf5e5, 0xffc8, 0xfefd, 0x001c +.hword 0xf643, 0xffa2, 0xfe3a, 0x001c .hword 0xf653, 0xfffd, 0xffc7, 0x001c glabel D_800E5E8C -.hword 0xf98e, 0xffaa, 0xff8e, 0xf983, 0xffa3, 0xff69, 0xf97e, 0xffb5 -.hword 0xffc6, 0xf98d, 0xffb9, 0xffe6, 0xfb56, 0xffe7, 0xfc19, 0xfb43 -.hword 0xffe0, 0xfca0, 0xfb1f, 0xffd9, 0xfc61, 0xfabd, 0xffc5, 0xfc9e -.hword 0xfa6d, 0xffb5, 0xfc85, 0xfa1b, 0xffa1, 0xfcd7, 0xfa48, 0xffa8 -.hword 0xfcca, 0xf9ff, 0xffa4, 0xfcaa, 0xf5c0, 0xffd1, 0xff0f, 0xf637 -.hword 0xffa7, 0xfe73, 0xf615, 0xfffd, 0xffbe +.hword 0xf98e, 0xffaa, 0xff8e +.hword 0xf983, 0xffa3, 0xff69 +.hword 0xf97e, 0xffb5, 0xffc6 +.hword 0xf98d, 0xffb9, 0xffe6 +.hword 0xfb56, 0xffe7, 0xfc19 +.hword 0xfb43, 0xffe0, 0xfca0 +.hword 0xfb1f, 0xffd9, 0xfc61 +.hword 0xfabd, 0xffc5, 0xfc9e +.hword 0xfa6d, 0xffb5, 0xfc85 +.hword 0xfa1b, 0xffa1, 0xfcd7 +.hword 0xfa48, 0xffa8, 0xfcca +.hword 0xf9ff, 0xffa4, 0xfcaa +.hword 0xf5c0, 0xffd1, 0xff0f +.hword 0xf637, 0xffa7, 0xfe73 +.hword 0xf615, 0xfffd, 0xffbe glabel D_800E5EE6 .hword 0x0000 diff --git a/include/objects.h b/include/objects.h index f4fc3949e..4316d6a54 100644 --- a/include/objects.h +++ b/include/objects.h @@ -121,14 +121,22 @@ extern Collision D_8018C0B0[]; * Neon signs in Rainbow Road? * Thwomps in Bower's Castle? * Penguins in Sherbet Land? + * Flag Poles in Yoshi Valley? **/ extern s32 D_80183EA0[]; /** * Snowmen in Frappe Snowland * Chain Chomps in RaindbowRoad? * Trophy in award ceremony? + * Seagulls in Koopa Troopa Beach? **/ extern s32 D_80183F28[]; + +#define NUM_BOOS 0xA + +/** + * Boos in Banshee Boardwalk +**/ extern s32 D_8018BFA8[]; extern s32 D_8018C030[]; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index d7595ec3d..798f93755 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -2186,31 +2186,6 @@ void func_8005C6B4(s8 arg0, s16* arg1, s16* arg2, s16* arg3) { } } -void func_8005C674(s8, s16*, s16*, s16*); -void func_8005C980(); - -extern s32 D_80165590; -extern s32 D_80165594; -extern s32 D_80165598; -extern s32 D_8016559C; -extern s32 D_801655A4; -extern s32 D_801655AC; -extern s32 D_801655B4; -extern s32 D_801655BC; -extern s32 D_801655C4; -extern s32 D_801655CC; -extern s32 D_801655D8; -extern s32 D_801655E8; -extern s32 D_801655F8; -extern s32 D_80165608; -extern s32 D_80165618; -extern s32 D_80165628; -extern s8 D_801658A8; -extern s32 D_8018D2AC; -extern s32 D_8018D400; -extern s32 D_8018D40C; -extern s32 D_8018D410; - void func_8005C728(void) { s16 sp26; s16 sp24; diff --git a/src/code_80057C60.h b/src/code_80057C60.h index b3eceb8b0..4cd9d2069 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -83,6 +83,7 @@ void func_8005C654(s32*); void func_8005C65C(s32); void func_8005C6B4(s8, s16*, s16*, s16*); void func_8005C728(void); +void func_8005C980(void); void func_8005CB60(s32, s32); void func_8005D0FC(s32); @@ -312,6 +313,29 @@ extern s16 D_8018CF98[]; extern Camera *D_8018CF14; extern Player *D_8018CF1C; + +extern s32 D_80165590; +extern s32 D_80165594; +extern s32 D_80165598; +extern s32 D_8016559C; +extern s32 D_801655A4; +extern s32 D_801655AC; +extern s32 D_801655B4; +extern s32 D_801655BC; +extern s32 D_801655C4; +extern s32 D_801655CC; +extern s32 D_801655D8; +extern s32 D_801655E8; +extern s32 D_801655F8; +extern s32 D_80165608; +extern s32 D_80165618; +extern s32 D_80165628; +extern s8 D_801658A8; +extern s32 D_8018D2AC; +extern s32 D_8018D400; +extern s32 D_8018D40C; +extern s32 D_8018D410; + extern s32 D_8018D120; extern s32 D_8018D170; extern s32 D_8018D178; diff --git a/src/code_80071F00.c b/src/code_80071F00.c index e4e6b72d6..69d7a426f 100644 --- a/src/code_80071F00.c +++ b/src/code_80071F00.c @@ -3773,24 +3773,11 @@ u8 func_8007AF78(UNUSED s32 arg0, s16 arg1) { return gen_random_item(arg1, 1); } -/** - * todo: verify that these two variables are fake ptrs. - * As seen below, they were replaced with gLapCountByPlayerId and gGPCurrentRaceRankByPlayerId - * - * Notice how matching with the two variables below required two s16s. The lapcount gets cast to s16 to match. -typedef struct { - s16 val; - s16 pad; -} a; -extern a D_80164392[]; -extern a D_801643BA[]; -*/ - s16 func_8007AFB0(s32 objectIndex, s32 arg1) { UNUSED s32 pad[3]; s16 randomItem; - randomItem = (s16) func_8007AF40((s16) gLapCountByPlayerId[arg1], (s16) gGPCurrentRaceRankByPlayerId[arg1]); + randomItem = func_8007AF40(gLapCountByPlayerId[arg1], gGPCurrentRaceRankByPlayerId[arg1]); if (D_8018CA70[arg1].itemOverride != 0) { randomItem = (s16) D_8018CA70[arg1].itemOverride; @@ -3802,83 +3789,61 @@ s16 func_8007AFB0(s32 objectIndex, s32 arg1) { return randomItem; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_80164392; -extern ? D_801643BA; -extern s32 gItemWindowObjectByPlayerId; +#ifdef NON_MATCHING +// https://decomp.me/scratch/yWKlx +// More stupid register allocation nonsense -s32 func_8007B040(s32 objectIndex, s32 arg1) { - s32 sp64; - s32 sp60; - Player *sp38; - s16 temp_a1; - s16 temp_t0_2; - s32 *var_a0; - s32 temp_a0; - s32 temp_t0; - s32 temp_v0; +s32 func_8007B040(s32 objectIndex, s32 playerId) { + s16 stackPadding; s32 temp_v1; s32 var_a3; s32 var_t3; + s32 temp_a0; + s32 var_v1; + s32 sp50[4]; + s32 sp40[4]; s32 var_v1_2; - struct_80165C18_entry *temp_a3; - struct_80165C18_entry *temp_a3_2; - struct_80165C18_entry *temp_s0; - u16 temp_v0_2; - u8 var_v1; + Player *sp38; + s16 temp_a1; var_a3 = 0; var_t3 = 0; if (gModeSelection == GRAND_PRIX) { if (random_int(0x0064U) < 0x51) { - temp_v0 = arg1 * 4; - var_v1 = func_8007AF40((s32) *(&D_80164392 + temp_v0), *(&D_801643BA + temp_v0)); + var_v1 = func_8007AF40(gLapCountByPlayerId[playerId], gGPCurrentRaceRankByPlayerId[playerId]); } else { - sp60 = 0; - func_800C9060(arg1 & 0xFF, 0x1900A058U); - var_v1 = (u8) sp60; + var_v1 = 0; + func_800C9060(playerId, 0x1900A058U); } var_t3 = 1; - temp_a3 = &D_80165C18[objectIndex]; - temp_a3->unk_0A2 = (s16) var_v1; - temp_a3->unk_0D2 = (s8) var_v1; + D_80165C18[objectIndex].unk_0A2 = var_v1; + D_80165C18[objectIndex].unk_0D2 = var_v1; } else { - temp_t0 = gPlayerCountSelection1; - var_v1_2 = 0; - if (temp_t0 > 0) { - var_a0 = &gItemWindowObjectByPlayerId; - do { - if (var_v1_2 != arg1) { - temp_a1 = D_80165C18[*var_a0].unk_0A4; - if (temp_a1 != 0) { - (&sp50[0])[var_a3] = var_v1_2; - (&sp40[0])[var_a3] = (s32) temp_a1; - var_a3 += 1; - } + for (var_v1_2 = 0; var_v1_2 < gPlayerCountSelection1; var_v1_2++) { + temp_a0 = gItemWindowObjectByPlayerId[var_v1_2]; + if (var_v1_2 != playerId) { + if (D_80165C18[temp_a0].unk_0A4 != 0) { + sp50[var_a3] = var_v1_2; + sp40[var_a3] = D_80165C18[temp_a0].unk_0A4; + var_a3 += 1; } - var_v1_2 += 1; - var_a0 += 4; - } while (var_v1_2 < temp_t0); + } } if (var_a3 != 0) { - temp_v0_2 = random_int(var_a3 & 0xFFFF); - temp_v1 = (&sp50[0])[temp_v0_2]; - temp_t0_2 = (&sp40[0])[temp_v0_2].unk2; - temp_a3_2 = &D_80165C18[objectIndex]; - temp_a3_2->unk_0D1 = (s8) temp_v1; - temp_a3_2->unk_0A2 = temp_t0_2; - temp_a3_2->unk_0D2 = (s8) temp_t0_2; - temp_a0 = (&gItemWindowObjectByPlayerId)[temp_v1]; + var_v1 = random_int(var_a3); + temp_v1 = sp50[var_v1]; + D_80165C18[objectIndex].unk_0D1 = temp_v1; + temp_a1 = sp40[var_v1]; + D_80165C18[objectIndex].unk_0A2 = temp_a1; + D_80165C18[objectIndex].unk_0D2 = temp_a1; + temp_a0 = gItemWindowObjectByPlayerId[temp_v1]; sp38 = &gPlayerOne[temp_v1]; - sp64 = temp_a0; func_800722A4(temp_a0, 1); - temp_s0 = &D_80165C18[temp_a0]; - temp_s0->unk_0A4 = 0; + D_80165C18[temp_a0].unk_0A4 = 0; sp38->unk_010 = 0; if (func_80072320(temp_a0, 2) != 0) { - func_800722CC(sp64, 2); - temp_s0->unk_098 = 0; + func_800722CC(temp_a0, 2); + D_80165C18[temp_a0].unk_098 = 0; } var_t3 = 1; } @@ -3931,50 +3896,11 @@ GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007B254.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 44f261a363c51a295be8efe3d7ca7f4d2c967e9b on Dec-30-2022 -? func_8007AC9C(s32); /* extern */ -s8 func_8007AFB0(s32, s32); /* extern */ -s32 func_8007B040(s32, s32); /* extern */ +//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-05-2023 ? func_8007B254(s32, s32); /* extern */ -? func_800C8F80(u8, ?); /* extern */ -? func_800C9018(u8, ?); /* extern */ extern s8 D_80165888; -static s32 *gItemWindowTLUTs[0x10] = { - (s32 *) gTLUTItemWindowNone, - (s32 *) gTLUTItemWindowBanana, - (s32 *) gTLUTItemWindowBananaBunch, - (s32 *) gTLUTItemWindowGreenShell, - (s32 *) gTLUTItemWindowTripleGreenShell, - (s32 *) gTLUTItemWindowRedShell, - (s32 *) gTLUTItemWindowTripleRedShell, - (s32 *) gTLUTItemWindowBlueShell, - (s32 *) gTLUTItemWindowThunderBolt, - (s32 *) gTLUTItemWindowFakeItemBox, - (s32 *) gTLUTItemWindowStar, - (s32 *) gTLUTItemWindowBoo, - (s32 *) gTLUTItemWindowMushroom, - (s32 *) gTLUTItemWindowDoubleMushroom, - (s32 *) gTLUTItemWindowTripleMushroom, - (s32 *) gTLUTItemWindowSuperMushroom, -}; -static s8 *gItemWindowTextures[0x10] = { - gTextureItemWindowNone, - gTextureItemWindowBanana, - gTextureItemWindowBananaBunch, - gTextureItemWindowGreenShell, - gTextureItemWindowTripleGreenShell, - gTextureItemWindowRedShell, - gTextureItemWindowTripleRedShell, - gTextureItemWindowBlueShell, - gTextureItemWindowThunderBolt, - gTextureItemWindowFakeItemBox, - gTextureItemWindowStar, - gTextureItemWindowBoo, - gTextureItemWindowMushroom, - gTextureItemWindowDoubleMushroom, - gTextureItemWindowTripleMushroom, - gTextureItemWindowSuperMushroom, -}; +static u8 *gItemWindowTLUTs[0x10]; +static u8 *gItemWindowTextures[0x10]; void func_8007B34C(s32 playerId) { s32 sp40; @@ -4080,7 +4006,7 @@ void func_8007B34C(s32 playerId) { break; case 11: if (gActiveScreenMode == 0) { - if (s16_step_down_towards((playerId * 0x84) + 0x48 + D_8018CA70, 0, 4) != 0) { + if (s16_step_down_towards(&D_8018CA70[playerId].slideItemBoxY, 0, 4) != 0) { func_80072488(temp_s0); } } else if (gActiveScreenMode == 3) { @@ -4099,7 +4025,7 @@ void func_8007B34C(s32 playerId) { func_80072488(temp_s0); } } - } else if (s16_step_down_towards((playerId * 0x84) + 0x46 + D_8018CA70, 0, 8) != 0) { + } else if (s16_step_down_towards(&D_8018CA70[playerId].slideItemBoxX, 0, 8) != 0) { func_80072488(temp_s0); } break; @@ -4145,7 +4071,7 @@ void func_8007B34C(s32 playerId) { break; } if (func_80072320(temp_s0, 2) != 0) { - temp_v0 = (u16) sp2C->unk_098; + temp_v0 = sp2C->unk_098; if (temp_v0 == 0) { func_8007AC9C(playerId); } else { @@ -4753,52 +4679,36 @@ void func_8007CA70(void) { GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007CA70.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-09-2023 -? func_8007CA70(); /* extern */ -extern ? D_8018BFD0; -static Vtx D_800E4470; /* unable to generate initializer */ -static Vtx D_800E44B0; /* unable to generate initializer */ - void func_8007CC00(void) { - Player *temp_s3; - f32 temp_f20; - f32 temp_f20_2; - s32 *var_s4; - s32 temp_s2; - s32 temp_t4; - s8 temp_v0; - struct_80165C18_entry *temp_s0; + u16 temp_t4; + s32 someIndex; + s32 objectIndex; + Player *player; + Camera *camera; + struct_80165C18_entry *object; func_8007CA70(); - var_s4 = D_8018BFA8; - do { - temp_s2 = *var_s4; - temp_s0 = &D_80165C18[temp_s2]; - if (temp_s0->unk_0A6 != 0) { - func_8007C684(temp_s2); - func_8008B78C(temp_s2); - temp_v0 = temp_s0->unk_0D1; - temp_t4 = (0x8000 - camera1[temp_v0].rot[1]) & 0xFFFF; - temp_s3 = &gPlayerOne[temp_v0]; - temp_f20 = coss(temp_t4 & 0xFFFF); - temp_s0->pos[0] = (temp_s3->pos[0] + (temp_f20 * (temp_s0->unk_010[0] + temp_s0->unk_028[0]))) - ((temp_s0->unk_028[2] + temp_s0->unk_010[2]) * sins(temp_t4 & 0xFFFF)); - temp_s0->pos[1] = (f32) ((f64) temp_s0->unk_028[1] + (6.5 + (f64) temp_s3->unk_074 + (f64) temp_s0->unk_010[1])); - temp_f20_2 = sins(temp_t4 & 0xFFFF); - temp_s0->pos[2] = ((temp_s0->unk_028[2] + temp_s0->unk_010[2]) * coss(temp_t4 & 0xFFFF)) + (temp_s3->pos[2] + (temp_f20_2 * (temp_s0->unk_010[0] + temp_s0->unk_028[0]))); - func_8007C550(temp_s2); - if (func_8007223C(temp_s2, 0x00000080) != 0) { - temp_s0->unk_074 = &D_800E44B0; + for (someIndex = 0; someIndex < NUM_BOOS; someIndex++) { + objectIndex = D_8018BFA8[someIndex]; + object = &D_80165C18[objectIndex]; + if (object->unk_0A6 != 0) { + func_8007C684(objectIndex); + func_8008B78C(objectIndex); + player = &gPlayerOne[object->unk_0D1]; + camera = &camera1[object->unk_0D1]; + temp_t4 = (0x8000 - camera->rot[1]); + object->pos[0] = player->pos[0] + (coss(temp_t4) * (object->unk_010[0] + object->unk_028[0])) - (sins(temp_t4) * (object->unk_010[2] + object->unk_028[2])); + object->pos[1] = 6.5 + player->unk_074 + object->unk_010[1] + object->unk_028[1]; + object->pos[2] = player->pos[2] + (sins(temp_t4) * (object->unk_010[0] + object->unk_028[0])) + (coss(temp_t4) * (object->unk_010[2] + object->unk_028[2])); + func_8007C550(objectIndex); + if (func_8007223C(objectIndex, 0x00000080) != 0) { + object->unk_074 = D_800E44B0; } else { - temp_s0->unk_074 = &D_800E4470; + object->unk_074 = D_800E4470; } } - var_s4 += 4; - } while (var_s4 != &D_8018BFD0); + } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007CC00.s") -#endif void func_8007CE0C(s32 objectIndex) { struct_80165C18_entry *temp_s0; @@ -7232,35 +7142,17 @@ void func_80082E5C(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -struct _struct_D_800E5DF4_0x8 { - /* 0x0 */ s16 unk0; /* inferred */ - /* 0x2 */ s16 unk2; /* inferred */ - /* 0x4 */ s16 unk4; /* inferred */ - /* 0x6 */ u16 unk6; /* inferred */ -}; /* size = 0x8 */ - -extern ? D_06014794; -extern ? D_06014798; -extern f32 D_8018D01C; -static struct _struct_D_800E5DF4_0x8 D_800E5DF4[0]; /* unable to generate initializer */ - +#ifdef NON_MATCHING +// https://decomp.me/scratch/RquH0 +// Gollygee I sure love register allocation :^) void func_80082F1C(s32 objectIndex, s32 arg1) { - struct _struct_D_800E5DF4_0x8 *sp24; - struct _struct_D_800E5DF4_0x8 *temp_v0_2; - struct_80165C18_entry *temp_v0; - - temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_070 = (s32) &D_06014798; - temp_v0->unk_074 = (s32) &D_06014794; - temp_v0->sizeScaling = 0.027f; + D_80165C18[objectIndex].unk_070 = D_06014798; + D_80165C18[objectIndex].unk_074 = D_06014794; + D_80165C18[objectIndex].sizeScaling = 0.027f; func_80072488(objectIndex); - temp_v0_2 = &D_800E5DF4[arg1]; - sp24 = temp_v0_2; - func_8008B7D4(objectIndex, (f32) temp_v0_2->unk0 * D_8018D01C, (f32) temp_v0_2->unk2, (f32) temp_v0_2->unk4); + func_8008B7D4(objectIndex, D_800E5DF4[arg1].pos[0] * D_8018D01C, D_800E5DF4[arg1].pos[1], D_800E5DF4[arg1].pos[2]); func_8008B80C(objectIndex, 0.0f, 0.0f, 0.0f); - func_8008B888(objectIndex, 0U, temp_v0_2->unk6, 0U); + func_8008B888(objectIndex, 0U, D_800E5DF4[arg1].rot, 0U); } #else GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80082F1C.s") @@ -7285,7 +7177,7 @@ void func_80083080(void) { s32 objectIndex; s32 var_s1; - for (var_s1 = 0; var_s1 < 4; var_s1++) { + for (var_s1 = 0; var_s1 < NUM_YV_FLAG_POLES; var_s1++) { objectIndex = D_80183EA0[var_s1]; if (D_80165C18[objectIndex].unk_0A6 != 0) { func_80083018(objectIndex, var_s1); @@ -8159,17 +8051,11 @@ void func_80085878(s32 objectIndex, s32 arg1) { func_80072488(objectIndex); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-10-2023 -extern s32 D_8018D40C; - void func_800859C8(s32 objectIndex, s32 arg1) { - s16 temp_v0; struct_80165C18_entry *temp_s0; temp_s0 = &D_80165C18[objectIndex]; - temp_v0 = temp_s0->unk_0A6; - switch (temp_v0) { /* irregular */ + switch (temp_s0->unk_0A6) { /* irregular */ case 0: break; case 1: @@ -8184,9 +8070,6 @@ void func_800859C8(s32 objectIndex, s32 arg1) { } func_80074344(objectIndex, &temp_s0->unk_044, -0.8f, 0.8f, 0.03f, 0, -1); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800859C8.s") -#endif void func_80085AA8(void) { s32 temp_s2; diff --git a/src/code_80071F00.h b/src/code_80071F00.h index 862b81efa..305708f77 100644 --- a/src/code_80071F00.h +++ b/src/code_80071F00.h @@ -5,6 +5,8 @@ #include "common_structs.h" #include "camera.h" +#define NUM_YV_FLAG_POLES 4 + // This struct is used by a lot of different objects // Stars, clouds, exahust smoke (I think?) typedef struct { @@ -12,6 +14,11 @@ typedef struct { u16 id; } StarSpawn; +typedef struct { + Vec3s pos; + u16 rot; +} YVFlagPoleSpawn; + void func_80077D5C(s32); s32 find_unused_obj_index(s32*); void func_80071F6C(s32*); @@ -204,6 +211,8 @@ void func_8007AC9C(s32); u8 gen_random_item(s16, s16); u8 func_8007AF40(s16, s16); u8 func_8007AF78(s32, s16); +s16 func_8007AFB0(s32, s32); +s32 func_8007B040(s32, s32); void func_8007B34C(s32); void func_8007BB9C(s32); void func_8007BBBC(s32); @@ -212,6 +221,7 @@ void func_8007BDA8(void); void func_8007BDE0(s32); void func_8007BEC8(s32); void func_8007BFB0(s32); +void func_8007CA70(void); void func_8007CC00(void); void func_8007C280(void); void func_8007C2F8(s32); @@ -393,6 +403,8 @@ extern u8 d_course_moo_moo_farm_mole_frames[][2048]; // From Yoshi Valley course data, haven't created a .h file for it yet extern u8 gTLUTHedgehog[]; +extern animation_type_2 *D_06014794[]; +extern u32 D_06014798[]; extern u8 gTextureHedgehog[]; // From Frappe Snowland course data, haven't created a .h file for it yet @@ -404,7 +416,7 @@ extern u8 gTextureSnowmanBody[]; // From Sherbet Land course data, haven't created a .h file for it yet extern u32 D_06008EB0[]; // d_course_sherbet_land_unk_data1 -extern animation_type_2 D_06009AC8[]; // d_course_sherbet_land_unk_data11 +extern animation_type_2 *D_06009AC8[]; // d_course_sherbet_land_unk_data11 extern u8 d_course_sherbet_land_ice[]; // From Rainbow Road course data, haven't created a .h file for it yet @@ -429,6 +441,8 @@ extern u8 *D_8018C028; // I think the entires in this array are way over-sized extern u8 D_80183FA8[4][0x2000]; +extern YVFlagPoleSpawn D_800E5DF4[NUM_YV_FLAG_POLES]; + // Something related to the rotation(?) of ice in Sherbet Land extern u16 D_801657A2; @@ -464,5 +478,7 @@ extern Gfx D_0B008A90[]; // The other entries appear to be unused. // data/data_code_80071F00_2.s extern Vec3s D_800E634C[3]; // static? +extern Vtx D_800E4470[]; +extern Vtx D_800E44B0[]; #endif