diff --git a/asm/bss_8001C4D0.s b/asm/bss_8001C4D0.s index 922b95b89..f66063777 100644 --- a/asm/bss_8001C4D0.s +++ b/asm/bss_8001C4D0.s @@ -349,13 +349,13 @@ glabel D_80165740 glabel D_80165748 .skip 8 -glabel D_80165750 +glabel gNumActiveThwomps .skip 4 glabel D_80165754 .skip 4 -glabel D_80165758 +glabel gThowmpSpawnList .skip 8 glabel D_80165760 diff --git a/asm/non_matchings/code_8006E9C0/func_80070780.s b/asm/non_matchings/code_8006E9C0/func_80070780.s deleted file mode 100644 index ce98a686b..000000000 --- a/asm/non_matchings/code_8006E9C0/func_80070780.s +++ /dev/null @@ -1,885 +0,0 @@ -.section .late_rodata - -glabel jpt_800EEA2C -.word L800707CC -.word L80071400, L80070848, L80070AA8, L80070B30 -.word L80070C60, L80070DD8, L80070F10, L80070F8C -.word L80071024, L80071400, L800712A0, L80071348 -.word L80071378, L80071400, L80071400, L80071400 -.word L80071400, L800713E4 - -glabel D_800EEA78 -.float 0.7 - -.section .text - -glabel func_80070780 -/* 071380 80070780 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 071384 80070784 3C0E800E */ lui $t6, %hi(gCurrentCourseId) # $t6, 0x800e -/* 071388 80070788 95CEC5A0 */ lhu $t6, %lo(gCurrentCourseId)($t6) -/* 07138C 8007078C AFBF003C */ sw $ra, 0x3c($sp) -/* 071390 80070790 AFB60038 */ sw $s6, 0x38($sp) -/* 071394 80070794 2DC10013 */ sltiu $at, $t6, 0x13 -/* 071398 80070798 AFB50034 */ sw $s5, 0x34($sp) -/* 07139C 8007079C AFB40030 */ sw $s4, 0x30($sp) -/* 0713A0 800707A0 AFB3002C */ sw $s3, 0x2c($sp) -/* 0713A4 800707A4 AFB20028 */ sw $s2, 0x28($sp) -/* 0713A8 800707A8 AFB10024 */ sw $s1, 0x24($sp) -/* 0713AC 800707AC 10200314 */ beqz $at, .L80071400 -/* 0713B0 800707B0 AFB00020 */ sw $s0, 0x20($sp) -/* 0713B4 800707B4 000E7080 */ sll $t6, $t6, 2 -/* 0713B8 800707B8 3C01800F */ lui $at, %hi(jpt_800EEA2C) # 0x800f -/* 0713BC 800707BC 002E0821 */ addu $at, $at, $t6 -/* 0713C0 800707C0 8C2EEA2C */ lw $t6, %lo(jpt_800EEA2C)($at) # -0x15d4($at) -/* 0713C4 800707C4 01C00008 */ jr $t6 -/* 0713C8 800707C8 00000000 */ nop -glabel L800707CC -/* 0713CC 800707CC 3C0F800E */ lui $t7, %hi(gGamestate) # $t7, 0x800e -/* 0713D0 800707D0 8DEFC50C */ lw $t7, %lo(gGamestate)($t7) -/* 0713D4 800707D4 24010009 */ li $at, 9 -/* 0713D8 800707D8 3C18800E */ lui $t8, %hi(gModeSelection) # $t8, 0x800e -/* 0713DC 800707DC 51E10309 */ beql $t7, $at, .L80071404 -/* 0713E0 800707E0 8FBF003C */ lw $ra, 0x3c($sp) -/* 0713E4 800707E4 8F18C53C */ lw $t8, %lo(gModeSelection)($t8) -/* 0713E8 800707E8 17000003 */ bnez $t8, .L800707F8 -/* 0713EC 800707EC 00000000 */ nop -/* 0713F0 800707F0 0C01C1C5 */ jal func_80070714 -/* 0713F4 800707F4 00000000 */ nop -.L800707F8: -/* 0713F8 800707F8 3C118016 */ lui $s1, %hi(D_80165738) # $s1, 0x8016 -/* 0713FC 800707FC 26315738 */ addiu $s1, %lo(D_80165738) # addiu $s1, $s1, 0x5738 -/* 071400 80070800 86390000 */ lh $t9, ($s1) -/* 071404 80070804 3C108019 */ lui $s0, %hi(D_8018C630) # $s0, 0x8019 -/* 071408 80070808 2610C630 */ addiu $s0, %lo(D_8018C630) # addiu $s0, $s0, -0x39d0 -/* 07140C 8007080C 1B2002FC */ blez $t9, .L80071400 -/* 071410 80070810 00009825 */ move $s3, $zero -.L80070814: -/* 071414 80070814 0C01C7C0 */ jal find_unused_obj_index -/* 071418 80070818 02002025 */ move $a0, $s0 -/* 07141C 8007081C 8E040000 */ lw $a0, ($s0) -/* 071420 80070820 0C01C8E9 */ jal func_800723A4 -/* 071424 80070824 00002825 */ move $a1, $zero -/* 071428 80070828 86280000 */ lh $t0, ($s1) -/* 07142C 8007082C 26730001 */ addiu $s3, $s3, 1 -/* 071430 80070830 26100004 */ addiu $s0, $s0, 4 -/* 071434 80070834 0268082A */ slt $at, $s3, $t0 -/* 071438 80070838 1420FFF6 */ bnez $at, .L80070814 -/* 07143C 8007083C 00000000 */ nop -/* 071440 80070840 100002F0 */ b .L80071404 -/* 071444 80070844 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070848 -/* 071448 80070848 3C068016 */ lui $a2, %hi(D_80165750) # $a2, 0x8016 -/* 07144C 8007084C 3C078016 */ lui $a3, %hi(D_80165758) # $a3, 0x8016 -/* 071450 80070850 3C0A800E */ lui $t2, %hi(D_800E5894) # $t2, 0x800e -/* 071454 80070854 24E75758 */ addiu $a3, %lo(D_80165758) # addiu $a3, $a3, 0x5758 -/* 071458 80070858 24C65750 */ addiu $a2, %lo(D_80165750) # addiu $a2, $a2, 0x5750 -/* 07145C 8007085C 2409000B */ li $t1, 11 -/* 071460 80070860 254A5894 */ addiu $t2, %lo(D_800E5894) # addiu $t2, $t2, 0x5894 -/* 071464 80070864 A4C90000 */ sh $t1, ($a2) -/* 071468 80070868 ACEA0000 */ sw $t2, ($a3) -/* 07146C 8007086C 3C02800E */ lui $v0, %hi(gCCSelection) # $v0, 0x800e -/* 071470 80070870 8C42C548 */ lw $v0, %lo(gCCSelection)($v0) -/* 071474 80070874 3C0B800E */ lui $t3, %hi(D_800E5854) # $t3, 0x800e -/* 071478 80070878 24100008 */ li $s0, 8 -/* 07147C 8007087C 1040000B */ beqz $v0, .L800708AC -/* 071480 80070880 256B5854 */ addiu $t3, %lo(D_800E5854) # addiu $t3, $t3, 0x5854 -/* 071484 80070884 24030001 */ li $v1, 1 -/* 071488 80070888 1043000F */ beq $v0, $v1, .L800708C8 -/* 07148C 8007088C 24040002 */ li $a0, 2 -/* 071490 80070890 10440009 */ beq $v0, $a0, .L800708B8 -/* 071494 80070894 240C000C */ li $t4, 12 -/* 071498 80070898 24010003 */ li $at, 3 -/* 07149C 8007089C 5041000B */ beql $v0, $at, .L800708CC -/* 0714A0 800708A0 84CE0000 */ lh $t6, ($a2) -/* 0714A4 800708A4 10000009 */ b .L800708CC -/* 0714A8 800708A8 84CE0000 */ lh $t6, ($a2) -.L800708AC: -/* 0714AC 800708AC A4D00000 */ sh $s0, ($a2) -/* 0714B0 800708B0 10000005 */ b .L800708C8 -/* 0714B4 800708B4 ACEB0000 */ sw $t3, ($a3) -.L800708B8: -/* 0714B8 800708B8 3C0D800E */ lui $t5, %hi(D_800E58EC) # $t5, 0x800e -/* 0714BC 800708BC 25AD58EC */ addiu $t5, %lo(D_800E58EC) # addiu $t5, $t5, 0x58ec -/* 0714C0 800708C0 A4CC0000 */ sh $t4, ($a2) -/* 0714C4 800708C4 ACED0000 */ sw $t5, ($a3) -.L800708C8: -/* 0714C8 800708C8 84CE0000 */ lh $t6, ($a2) -.L800708CC: -/* 0714CC 800708CC 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 0714D0 800708D0 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 0714D4 800708D4 19C0002A */ blez $t6, .L80070980 -/* 0714D8 800708D8 00009825 */ move $s3, $zero -/* 0714DC 800708DC 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 0714E0 800708E0 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 0714E4 800708E4 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 0714E8 800708E8 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 0714EC 800708EC 00009025 */ move $s2, $zero -/* 0714F0 800708F0 241600E0 */ li $s6, 224 -.L800708F4: -/* 0714F4 800708F4 8E300000 */ lw $s0, ($s1) -/* 0714F8 800708F8 00002825 */ move $a1, $zero -/* 0714FC 800708FC 0C01C8E9 */ jal func_800723A4 -/* 071500 80070900 02002025 */ move $a0, $s0 -/* 071504 80070904 3C078016 */ lui $a3, %hi(D_80165758) # $a3, 0x8016 -/* 071508 80070908 24E75758 */ addiu $a3, %lo(D_80165758) # addiu $a3, $a3, 0x5758 -/* 07150C 8007090C 8CF80000 */ lw $t8, ($a3) -/* 071510 80070910 02160019 */ multu $s0, $s6 -/* 071514 80070914 C6880000 */ lwc1 $f8, ($s4) -/* 071518 80070918 03121821 */ addu $v1, $t8, $s2 -/* 07151C 8007091C 84790000 */ lh $t9, ($v1) -/* 071520 80070920 3C068016 */ lui $a2, %hi(D_80165750) # $a2, 0x8016 -/* 071524 80070924 24C65750 */ addiu $a2, %lo(D_80165750) # addiu $a2, $a2, 0x5750 -/* 071528 80070928 44992000 */ mtc1 $t9, $f4 -/* 07152C 8007092C 84CB0000 */ lh $t3, ($a2) -/* 071530 80070930 26730001 */ addiu $s3, $s3, 1 -/* 071534 80070934 468021A0 */ cvt.s.w $f6, $f4 -/* 071538 80070938 00007812 */ mflo $t7 -/* 07153C 8007093C 02AF1021 */ addu $v0, $s5, $t7 -/* 071540 80070940 026B082A */ slt $at, $s3, $t3 -/* 071544 80070944 26520008 */ addiu $s2, $s2, 8 -/* 071548 80070948 26310004 */ addiu $s1, $s1, 4 -/* 07154C 8007094C 46083282 */ mul.s $f10, $f6, $f8 -/* 071550 80070950 E44A0010 */ swc1 $f10, 0x10($v0) -/* 071554 80070954 84680002 */ lh $t0, 2($v1) -/* 071558 80070958 44888000 */ mtc1 $t0, $f16 -/* 07155C 8007095C 00000000 */ nop -/* 071560 80070960 468084A0 */ cvt.s.w $f18, $f16 -/* 071564 80070964 E4520018 */ swc1 $f18, 0x18($v0) -/* 071568 80070968 84690004 */ lh $t1, 4($v1) -/* 07156C 8007096C A04900D5 */ sb $t1, 0xd5($v0) -/* 071570 80070970 846A0006 */ lh $t2, 6($v1) -/* 071574 80070974 1420FFDF */ bnez $at, .L800708F4 -/* 071578 80070978 A44A00A0 */ sh $t2, 0xa0($v0) -/* 07157C 8007097C 00009825 */ move $s3, $zero -.L80070980: -/* 071580 80070980 3C108018 */ lui $s0, %hi(D_80183F28) # $s0, 0x8018 -/* 071584 80070984 8E103F28 */ lw $s0, %lo(D_80183F28)($s0) -/* 071588 80070988 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 07158C 8007098C 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 071590 80070990 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 071594 80070994 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 071598 80070998 241600E0 */ li $s6, 224 -/* 07159C 8007099C 00002825 */ move $a1, $zero -/* 0715A0 800709A0 0C01C8E9 */ jal func_800723A4 -/* 0715A4 800709A4 02002025 */ move $a0, $s0 -/* 0715A8 800709A8 C6840000 */ lwc1 $f4, ($s4) -/* 0715AC 800709AC 3C01C051 */ li $at, 0xC0510000 # -3.265625 -/* 0715B0 800709B0 44814800 */ mtc1 $at, $f9 -/* 0715B4 800709B4 44804000 */ mtc1 $zero, $f8 -/* 0715B8 800709B8 02160019 */ multu $s0, $s6 -/* 0715BC 800709BC 460021A1 */ cvt.d.s $f6, $f4 -/* 0715C0 800709C0 3C0142A0 */ li $at, 0x42A00000 # 80.000000 -/* 0715C4 800709C4 46283282 */ mul.d $f10, $f6, $f8 -/* 0715C8 800709C8 44819000 */ mtc1 $at, $f18 -/* 0715CC 800709CC 3C01C4E6 */ li $at, 0xC4E60000 # -1840.000000 -/* 0715D0 800709D0 44812000 */ mtc1 $at, $f4 -/* 0715D4 800709D4 3C128019 */ lui $s2, %hi(D_8018BFA8) # $s2, 0x8019 -/* 0715D8 800709D8 3C11800E */ lui $s1, %hi(D_800E5728) # $s1, 0x800e -/* 0715DC 800709DC 26315728 */ addiu $s1, %lo(D_800E5728) # addiu $s1, $s1, 0x5728 -/* 0715E0 800709E0 00006012 */ mflo $t4 -/* 0715E4 800709E4 46205420 */ cvt.s.d $f16, $f10 -/* 0715E8 800709E8 02AC1021 */ addu $v0, $s5, $t4 -/* 0715EC 800709EC 2652BFA8 */ addiu $s2, %lo(D_8018BFA8) # addiu $s2, $s2, -0x4058 -/* 0715F0 800709F0 E4520008 */ swc1 $f18, 8($v0) -/* 0715F4 800709F4 E4500004 */ swc1 $f16, 4($v0) -/* 0715F8 800709F8 E444000C */ swc1 $f4, 0xc($v0) -.L800709FC: -/* 0715FC 800709FC 8E500000 */ lw $s0, ($s2) -/* 071600 80070A00 00002825 */ move $a1, $zero -/* 071604 80070A04 0C01C8E9 */ jal func_800723A4 -/* 071608 80070A08 02002025 */ move $a0, $s0 -/* 07160C 80070A0C 862E0000 */ lh $t6, ($s1) -/* 071610 80070A10 02160019 */ multu $s0, $s6 -/* 071614 80070A14 862F0002 */ lh $t7, 2($s1) -/* 071618 80070A18 448E3000 */ mtc1 $t6, $f6 -/* 07161C 80070A1C 86380004 */ lh $t8, 4($s1) -/* 071620 80070A20 C68A0000 */ lwc1 $f10, ($s4) -/* 071624 80070A24 46803220 */ cvt.s.w $f8, $f6 -/* 071628 80070A28 448F9000 */ mtc1 $t7, $f18 -/* 07162C 80070A2C 44983000 */ mtc1 $t8, $f6 -/* 071630 80070A30 32790001 */ andi $t9, $s3, 1 -/* 071634 80070A34 34018000 */ li $at, 32768 -/* 071638 80070A38 46809120 */ cvt.s.w $f4, $f18 -/* 07163C 80070A3C 460A4402 */ mul.s $f16, $f8, $f10 -/* 071640 80070A40 00006812 */ mflo $t5 -/* 071644 80070A44 02AD1021 */ addu $v0, $s5, $t5 -/* 071648 80070A48 26730001 */ addiu $s3, $s3, 1 -/* 07164C 80070A4C 26520004 */ addiu $s2, $s2, 4 -/* 071650 80070A50 E4440008 */ swc1 $f4, 8($v0) -/* 071654 80070A54 46803220 */ cvt.s.w $f8, $f6 -/* 071658 80070A58 E4500004 */ swc1 $f16, 4($v0) -/* 07165C 80070A5C A44000C0 */ sh $zero, 0xc0($v0) -/* 071660 80070A60 00014821 */ addu $t1, $zero, $at -/* 071664 80070A64 13200002 */ beqz $t9, .L80070A70 -/* 071668 80070A68 E448000C */ swc1 $f8, 0xc($v0) -/* 07166C 80070A6C A44900C0 */ sh $t1, 0xc0($v0) -.L80070A70: -/* 071670 80070A70 2A610004 */ slti $at, $s3, 4 -/* 071674 80070A74 1420FFE1 */ bnez $at, .L800709FC -/* 071678 80070A78 26310006 */ addiu $s1, $s1, 6 -/* 07167C 80070A7C 3C108019 */ lui $s0, %hi(D_8018C030) # $s0, 0x8019 -/* 071680 80070A80 3C118019 */ lui $s1, %hi(D_8018C0B0) # $s1, 0x8019 -/* 071684 80070A84 2631C0B0 */ addiu $s1, %lo(D_8018C0B0) # addiu $s1, $s1, -0x3f50 -/* 071688 80070A88 2610C030 */ addiu $s0, %lo(D_8018C030) # addiu $s0, $s0, -0x3fd0 -.L80070A8C: -/* 07168C 80070A8C 0C01C7DB */ jal delete_object -/* 071690 80070A90 02002025 */ move $a0, $s0 -/* 071694 80070A94 26100004 */ addiu $s0, $s0, 4 -/* 071698 80070A98 1611FFFC */ bne $s0, $s1, .L80070A8C -/* 07169C 80070A9C 00000000 */ nop -/* 0716A0 80070AA0 10000258 */ b .L80071404 -/* 0716A4 80070AA4 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070AA8 -/* 0716A8 80070AA8 3C0A800E */ lui $t2, %hi(gGamestate) # $t2, 0x800e -/* 0716AC 80070AAC 8D4AC50C */ lw $t2, %lo(gGamestate)($t2) -/* 0716B0 80070AB0 24010009 */ li $at, 9 -/* 0716B4 80070AB4 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 0716B8 80070AB8 11410251 */ beq $t2, $at, .L80071400 -/* 0716BC 80070ABC 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 0716C0 80070AC0 8E300000 */ lw $s0, ($s1) -/* 0716C4 80070AC4 3C050600 */ lui $a1, %hi(d_course_banshee_boardwalk_bat_tlut) # $a1, 0x600 -/* 0716C8 80070AC8 3C060600 */ lui $a2, %hi(d_course_banshee_boardwalk_bat) # $a2, 0x600 -/* 0716CC 80070ACC 240B0040 */ li $t3, 64 -/* 0716D0 80070AD0 AFAB0010 */ sw $t3, 0x10($sp) -/* 0716D4 80070AD4 24C67DB8 */ addiu $a2, %lo(d_course_banshee_boardwalk_bat) # addiu $a2, $a2, 0x7db8 -/* 0716D8 80070AD8 24A57BB8 */ addiu $a1, %lo(d_course_banshee_boardwalk_bat_tlut) # addiu $a1, $a1, 0x7bb8 -/* 0716DC 80070ADC 24070020 */ li $a3, 32 -/* 0716E0 80070AE0 0C01CD11 */ jal init_texture_object -/* 0716E4 80070AE4 02002025 */ move $a0, $s0 -/* 0716E8 80070AE8 241600E0 */ li $s6, 224 -/* 0716EC 80070AEC 02160019 */ multu $s0, $s6 -/* 0716F0 80070AF0 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 0716F4 80070AF4 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 0716F8 80070AF8 340D8000 */ li $t5, 32768 -/* 0716FC 80070AFC 8E240004 */ lw $a0, 4($s1) -/* 071700 80070B00 00002825 */ move $a1, $zero -/* 071704 80070B04 00006012 */ mflo $t4 -/* 071708 80070B08 02AC1021 */ addu $v0, $s5, $t4 -/* 07170C 80070B0C A44000B2 */ sh $zero, 0xb2($v0) -/* 071710 80070B10 A44000B4 */ sh $zero, 0xb4($v0) -/* 071714 80070B14 0C01C8E9 */ jal func_800723A4 -/* 071718 80070B18 A44D00B6 */ sh $t5, 0xb6($v0) -/* 07171C 80070B1C 8E240008 */ lw $a0, 8($s1) -/* 071720 80070B20 0C01C8E9 */ jal func_800723A4 -/* 071724 80070B24 00002825 */ move $a1, $zero -/* 071728 80070B28 10000236 */ b .L80071404 -/* 07172C 80070B2C 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070B30 -/* 071730 80070B30 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071734 80070B34 3C108018 */ lui $s0, %hi(D_80183EB0) # $s0, 0x8018 -/* 071738 80070B38 26103EB0 */ addiu $s0, %lo(D_80183EB0) # addiu $s0, $s0, 0x3eb0 -/* 07173C 80070B3C 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 071740 80070B40 8E240000 */ lw $a0, ($s1) -.L80070B44: -/* 071744 80070B44 0C01C8E9 */ jal func_800723A4 -/* 071748 80070B48 00002825 */ move $a1, $zero -/* 07174C 80070B4C 26310004 */ addiu $s1, $s1, 4 -/* 071750 80070B50 0230082B */ sltu $at, $s1, $s0 -/* 071754 80070B54 5420FFFB */ bnel $at, $zero, .L80070B44 -/* 071758 80070B58 8E240000 */ lw $a0, ($s1) -/* 07175C 80070B5C 3C0E800E */ lui $t6, %hi(gGamestate) # $t6, 0x800e -/* 071760 80070B60 8DCEC50C */ lw $t6, %lo(gGamestate)($t6) -/* 071764 80070B64 24010009 */ li $at, 9 -/* 071768 80070B68 3C128018 */ lui $s2, %hi(D_80183F28) # $s2, 0x8018 -/* 07176C 80070B6C 11C10224 */ beq $t6, $at, .L80071400 -/* 071770 80070B70 26523F28 */ addiu $s2, %lo(D_80183F28) # addiu $s2, $s2, 0x3f28 -/* 071774 80070B74 3C11800E */ lui $s1, %hi(D_800E5E14) # $s1, 0x800e -/* 071778 80070B78 3C03800E */ lui $v1, %hi(D_800E5E8C) # $v1, 0x800e -/* 07177C 80070B7C 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 071780 80070B80 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 071784 80070B84 3C13800E */ lui $s3, %hi(D_800E5EE6) # $s3, 0x800e -/* 071788 80070B88 26735EE6 */ addiu $s3, %lo(D_800E5EE6) # addiu $s3, $s3, 0x5ee6 -/* 07178C 80070B8C 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 071790 80070B90 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 071794 80070B94 24635E8C */ addiu $v1, %lo(D_800E5E8C) # addiu $v1, $v1, 0x5e8c -/* 071798 80070B98 26315E14 */ addiu $s1, %lo(D_800E5E14) # addiu $s1, $s1, 0x5e14 -/* 07179C 80070B9C 241600E0 */ li $s6, 224 -.L80070BA0: -/* 0717A0 80070BA0 8E500000 */ lw $s0, ($s2) -/* 0717A4 80070BA4 00002825 */ move $a1, $zero -/* 0717A8 80070BA8 AFA30044 */ sw $v1, 0x44($sp) -/* 0717AC 80070BAC 0C01C8E9 */ jal func_800723A4 -/* 0717B0 80070BB0 02002025 */ move $a0, $s0 -/* 0717B4 80070BB4 862F0000 */ lh $t7, ($s1) -/* 0717B8 80070BB8 8FA30044 */ lw $v1, 0x44($sp) -/* 0717BC 80070BBC 86390002 */ lh $t9, 2($s1) -/* 0717C0 80070BC0 448F5000 */ mtc1 $t7, $f10 -/* 0717C4 80070BC4 02160019 */ multu $s0, $s6 -/* 0717C8 80070BC8 C6820000 */ lwc1 $f2, ($s4) -/* 0717CC 80070BCC 46805420 */ cvt.s.w $f16, $f10 -/* 0717D0 80070BD0 846A0000 */ lh $t2, ($v1) -/* 0717D4 80070BD4 44999000 */ mtc1 $t9, $f18 -/* 0717D8 80070BD8 3C014018 */ li $at, 0x40180000 # 2.375000 -/* 0717DC 80070BDC 44813800 */ mtc1 $at, $f7 -/* 0717E0 80070BE0 46809121 */ cvt.d.w $f4, $f18 -/* 0717E4 80070BE4 46028002 */ mul.s $f0, $f16, $f2 -/* 0717E8 80070BE8 448A8000 */ mtc1 $t2, $f16 -/* 0717EC 80070BEC 44803000 */ mtc1 $zero, $f6 -/* 0717F0 80070BF0 0000C012 */ mflo $t8 -/* 0717F4 80070BF4 02B81021 */ addu $v0, $s5, $t8 -/* 0717F8 80070BF8 46262200 */ add.d $f8, $f4, $f6 -/* 0717FC 80070BFC 86280004 */ lh $t0, 4($s1) -/* 071800 80070C00 E4400010 */ swc1 $f0, 0x10($v0) -/* 071804 80070C04 468084A0 */ cvt.s.w $f18, $f16 -/* 071808 80070C08 E4400004 */ swc1 $f0, 4($v0) -/* 07180C 80070C0C 44885000 */ mtc1 $t0, $f10 -/* 071810 80070C10 86290006 */ lh $t1, 6($s1) -/* 071814 80070C14 846D0004 */ lh $t5, 4($v1) -/* 071818 80070C18 46204020 */ cvt.s.d $f0, $f8 -/* 07181C 80070C1C 46029102 */ mul.s $f4, $f18, $f2 -/* 071820 80070C20 24630006 */ addiu $v1, $v1, 6 -/* 071824 80070C24 26520004 */ addiu $s2, $s2, 4 -/* 071828 80070C28 E4400044 */ swc1 $f0, 0x44($v0) -/* 07182C 80070C2C E4400008 */ swc1 $f0, 8($v0) -/* 071830 80070C30 26310008 */ addiu $s1, $s1, 8 -/* 071834 80070C34 46805020 */ cvt.s.w $f0, $f10 -/* 071838 80070C38 A04900D5 */ sb $t1, 0xd5($v0) -/* 07183C 80070C3C A44D009E */ sh $t5, 0x9e($v0) -/* 071840 80070C40 4600218D */ trunc.w.s $f6, $f4 -/* 071844 80070C44 E4400018 */ swc1 $f0, 0x18($v0) -/* 071848 80070C48 E440000C */ swc1 $f0, 0xc($v0) -/* 07184C 80070C4C 440C3000 */ mfc1 $t4, $f6 -/* 071850 80070C50 1473FFD3 */ bne $v1, $s3, .L80070BA0 -/* 071854 80070C54 A44C009C */ sh $t4, 0x9c($v0) -/* 071858 80070C58 100001EA */ b .L80071404 -/* 07185C 80070C5C 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070C60 -/* 071860 80070C60 3C118019 */ lui $s1, %hi(D_8018C1B0) # $s1, 0x8019 -/* 071864 80070C64 3C108019 */ lui $s0, %hi(D_8018C278) # $s0, 0x8019 -/* 071868 80070C68 2610C278 */ addiu $s0, %lo(D_8018C278) # addiu $s0, $s0, -0x3d88 -/* 07186C 80070C6C 2631C1B0 */ addiu $s1, %lo(D_8018C1B0) # addiu $s1, $s1, -0x3e50 -.L80070C70: -/* 071870 80070C70 0C01C7C0 */ jal find_unused_obj_index -/* 071874 80070C74 02202025 */ move $a0, $s1 -/* 071878 80070C78 26310004 */ addiu $s1, $s1, 4 -/* 07187C 80070C7C 0230082B */ sltu $at, $s1, $s0 -/* 071880 80070C80 1420FFFB */ bnez $at, .L80070C70 -/* 071884 80070C84 00000000 */ nop -/* 071888 80070C88 3C0E800E */ lui $t6, %hi(gGamestate) # $t6, 0x800e -/* 07188C 80070C8C 8DCEC50C */ lw $t6, %lo(gGamestate)($t6) -/* 071890 80070C90 24010009 */ li $at, 9 -/* 071894 80070C94 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071898 80070C98 11C101D9 */ beq $t6, $at, .L80071400 -/* 07189C 80070C9C 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 0718A0 80070CA0 3C128018 */ lui $s2, %hi(D_80183F28) # $s2, 0x8018 -/* 0718A4 80070CA4 3C03800E */ lui $v1, %hi(D_800E5EE8) # $v1, 0x800e -/* 0718A8 80070CA8 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 0718AC 80070CAC 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 0718B0 80070CB0 3C13800E */ lui $s3, %hi(D_800E5F80) # $s3, 0x800e -/* 0718B4 80070CB4 26735F80 */ addiu $s3, %lo(D_800E5F80) # addiu $s3, $s3, 0x5f80 -/* 0718B8 80070CB8 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 0718BC 80070CBC 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 0718C0 80070CC0 24635EE8 */ addiu $v1, %lo(D_800E5EE8) # addiu $v1, $v1, 0x5ee8 -/* 0718C4 80070CC4 26523F28 */ addiu $s2, %lo(D_80183F28) # addiu $s2, $s2, 0x3f28 -/* 0718C8 80070CC8 241600E0 */ li $s6, 224 -.L80070CCC: -/* 0718CC 80070CCC 8E500000 */ lw $s0, ($s2) -/* 0718D0 80070CD0 00002825 */ move $a1, $zero -/* 0718D4 80070CD4 AFA30044 */ sw $v1, 0x44($sp) -/* 0718D8 80070CD8 0C01C8E9 */ jal func_800723A4 -/* 0718DC 80070CDC 02002025 */ move $a0, $s0 -/* 0718E0 80070CE0 8FA30044 */ lw $v1, 0x44($sp) -/* 0718E4 80070CE4 02160019 */ multu $s0, $s6 -/* 0718E8 80070CE8 C6900000 */ lwc1 $f16, ($s4) -/* 0718EC 80070CEC 84780000 */ lh $t8, ($v1) -/* 0718F0 80070CF0 84790002 */ lh $t9, 2($v1) -/* 0718F4 80070CF4 3C014014 */ li $at, 0x40140000 # 2.312500 -/* 0718F8 80070CF8 44984000 */ mtc1 $t8, $f8 -/* 0718FC 80070CFC 44992000 */ mtc1 $t9, $f4 -/* 071900 80070D00 44814800 */ mtc1 $at, $f9 -/* 071904 80070D04 468042A0 */ cvt.s.w $f10, $f8 -/* 071908 80070D08 44804000 */ mtc1 $zero, $f8 -/* 07190C 80070D0C 84680004 */ lh $t0, 4($v1) -/* 071910 80070D10 3C014008 */ li $at, 0x40080000 # 2.125000 -/* 071914 80070D14 44818800 */ mtc1 $at, $f17 -/* 071918 80070D18 468021A1 */ cvt.d.w $f6, $f4 -/* 07191C 80070D1C 46105482 */ mul.s $f18, $f10, $f16 -/* 071920 80070D20 44808000 */ mtc1 $zero, $f16 -/* 071924 80070D24 00007812 */ mflo $t7 -/* 071928 80070D28 02AF1021 */ addu $v0, $s5, $t7 -/* 07192C 80070D2C 8E300000 */ lw $s0, ($s1) -/* 071930 80070D30 46283280 */ add.d $f10, $f6, $f8 -/* 071934 80070D34 44883000 */ mtc1 $t0, $f6 -/* 071938 80070D38 E4520010 */ swc1 $f18, 0x10($v0) -/* 07193C 80070D3C 00002825 */ move $a1, $zero -/* 071940 80070D40 46305480 */ add.d $f18, $f10, $f16 -/* 071944 80070D44 02002025 */ move $a0, $s0 -/* 071948 80070D48 46803220 */ cvt.s.w $f8, $f6 -/* 07194C 80070D4C 46209120 */ cvt.s.d $f4, $f18 -/* 071950 80070D50 E4480018 */ swc1 $f8, 0x18($v0) -/* 071954 80070D54 0C01C8E9 */ jal func_800723A4 -/* 071958 80070D58 E4440014 */ swc1 $f4, 0x14($v0) -/* 07195C 80070D5C 8FA30044 */ lw $v1, 0x44($sp) -/* 071960 80070D60 02160019 */ multu $s0, $s6 -/* 071964 80070D64 C6920000 */ lwc1 $f18, ($s4) -/* 071968 80070D68 846A0000 */ lh $t2, ($v1) -/* 07196C 80070D6C 846B0002 */ lh $t3, 2($v1) -/* 071970 80070D70 846C0004 */ lh $t4, 4($v1) -/* 071974 80070D74 448A5000 */ mtc1 $t2, $f10 -/* 071978 80070D78 448B3000 */ mtc1 $t3, $f6 -/* 07197C 80070D7C 3C014008 */ li $at, 0x40080000 # 2.125000 -/* 071980 80070D80 46805420 */ cvt.s.w $f16, $f10 -/* 071984 80070D84 44805000 */ mtc1 $zero, $f10 -/* 071988 80070D88 00004812 */ mflo $t1 -/* 07198C 80070D8C 44815800 */ mtc1 $at, $f11 -/* 071990 80070D90 02A91021 */ addu $v0, $s5, $t1 -/* 071994 80070D94 46803221 */ cvt.d.w $f8, $f6 -/* 071998 80070D98 46128102 */ mul.s $f4, $f16, $f18 -/* 07199C 80070D9C 846D0006 */ lh $t5, 6($v1) -/* 0719A0 80070DA0 24630008 */ addiu $v1, $v1, 8 -/* 0719A4 80070DA4 26310004 */ addiu $s1, $s1, 4 -/* 0719A8 80070DA8 26520004 */ addiu $s2, $s2, 4 -/* 0719AC 80070DAC 462A4400 */ add.d $f16, $f8, $f10 -/* 0719B0 80070DB0 A04D00D5 */ sb $t5, 0xd5($v0) -/* 0719B4 80070DB4 E4440010 */ swc1 $f4, 0x10($v0) -/* 0719B8 80070DB8 448C2000 */ mtc1 $t4, $f4 -/* 0719BC 80070DBC 462084A0 */ cvt.s.d $f18, $f16 -/* 0719C0 80070DC0 468021A0 */ cvt.s.w $f6, $f4 -/* 0719C4 80070DC4 E4520014 */ swc1 $f18, 0x14($v0) -/* 0719C8 80070DC8 1473FFC0 */ bne $v1, $s3, .L80070CCC -/* 0719CC 80070DCC E4460018 */ swc1 $f6, 0x18($v0) -/* 0719D0 80070DD0 1000018C */ b .L80071404 -/* 0719D4 80070DD4 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070DD8 -/* 0719D8 80070DD8 3C0E800E */ lui $t6, %hi(gGamestate) # $t6, 0x800e -/* 0719DC 80070DDC 8DCEC50C */ lw $t6, %lo(gGamestate)($t6) -/* 0719E0 80070DE0 24010009 */ li $at, 9 -/* 0719E4 80070DE4 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 0719E8 80070DE8 11C1002B */ beq $t6, $at, .L80070E98 -/* 0719EC 80070DEC 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 0719F0 80070DF0 3C03800E */ lui $v1, %hi(D_800E5F80) # $v1, 0x800e -/* 0719F4 80070DF4 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 0719F8 80070DF8 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 0719FC 80070DFC 3C12800E */ lui $s2, %hi(D_800E5FD0) # $s2, 0x800e -/* 071A00 80070E00 26525FD0 */ addiu $s2, %lo(D_800E5FD0) # addiu $s2, $s2, 0x5fd0 -/* 071A04 80070E04 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 071A08 80070E08 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 071A0C 80070E0C 24635F80 */ addiu $v1, %lo(D_800E5F80) # addiu $v1, $v1, 0x5f80 -/* 071A10 80070E10 241600E0 */ li $s6, 224 -.L80070E14: -/* 071A14 80070E14 8E300000 */ lw $s0, ($s1) -/* 071A18 80070E18 00002825 */ move $a1, $zero -/* 071A1C 80070E1C AFA30048 */ sw $v1, 0x48($sp) -/* 071A20 80070E20 0C01C8E9 */ jal func_800723A4 -/* 071A24 80070E24 02002025 */ move $a0, $s0 -/* 071A28 80070E28 8FA30048 */ lw $v1, 0x48($sp) -/* 071A2C 80070E2C 02160019 */ multu $s0, $s6 -/* 071A30 80070E30 C6820000 */ lwc1 $f2, ($s4) -/* 071A34 80070E34 846F0000 */ lh $t7, ($v1) -/* 071A38 80070E38 84790002 */ lh $t9, 2($v1) -/* 071A3C 80070E3C 84680004 */ lh $t0, 4($v1) -/* 071A40 80070E40 448F4000 */ mtc1 $t7, $f8 -/* 071A44 80070E44 44998000 */ mtc1 $t9, $f16 -/* 071A48 80070E48 84690006 */ lh $t1, 6($v1) -/* 071A4C 80070E4C 468042A0 */ cvt.s.w $f10, $f8 -/* 071A50 80070E50 44883000 */ mtc1 $t0, $f6 -/* 071A54 80070E54 0000C012 */ mflo $t8 -/* 071A58 80070E58 02B81021 */ addu $v0, $s5, $t8 -/* 071A5C 80070E5C 44894000 */ mtc1 $t1, $f8 -/* 071A60 80070E60 468084A0 */ cvt.s.w $f18, $f16 -/* 071A64 80070E64 46025002 */ mul.s $f0, $f10, $f2 -/* 071A68 80070E68 24630008 */ addiu $v1, $v1, 8 -/* 071A6C 80070E6C 26310004 */ addiu $s1, $s1, 4 -/* 071A70 80070E70 46029102 */ mul.s $f4, $f18, $f2 -/* 071A74 80070E74 E4400010 */ swc1 $f0, 0x10($v0) -/* 071A78 80070E78 E4400004 */ swc1 $f0, 4($v0) -/* 071A7C 80070E7C 46803020 */ cvt.s.w $f0, $f6 -/* 071A80 80070E80 E444001C */ swc1 $f4, 0x1c($v0) -/* 071A84 80070E84 468042A0 */ cvt.s.w $f10, $f8 -/* 071A88 80070E88 E4400018 */ swc1 $f0, 0x18($v0) -/* 071A8C 80070E8C E440000C */ swc1 $f0, 0xc($v0) -/* 071A90 80070E90 1472FFE0 */ bne $v1, $s2, .L80070E14 -/* 071A94 80070E94 E44A0024 */ swc1 $f10, 0x24($v0) -.L80070E98: -/* 071A98 80070E98 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 071A9C 80070E9C 3C128018 */ lui $s2, %hi(D_80183F28) # $s2, 0x8018 -/* 071AA0 80070EA0 3C138018 */ lui $s3, %hi(D_80183F50) # $s3, 0x8018 -/* 071AA4 80070EA4 3C118018 */ lui $s1, %hi(D_80183F3C) # $s1, 0x8018 -/* 071AA8 80070EA8 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 071AAC 80070EAC 241600E0 */ li $s6, 224 -/* 071AB0 80070EB0 26313F3C */ addiu $s1, %lo(D_80183F3C) # addiu $s1, $s1, 0x3f3c -/* 071AB4 80070EB4 26733F50 */ addiu $s3, %lo(D_80183F50) # addiu $s3, $s3, 0x3f50 -/* 071AB8 80070EB8 26523F28 */ addiu $s2, %lo(D_80183F28) # addiu $s2, $s2, 0x3f28 -/* 071ABC 80070EBC 24140001 */ li $s4, 1 -/* 071AC0 80070EC0 8E500000 */ lw $s0, ($s2) -.L80070EC4: -/* 071AC4 80070EC4 00002825 */ move $a1, $zero -/* 071AC8 80070EC8 0C01C8E9 */ jal func_800723A4 -/* 071ACC 80070ECC 02002025 */ move $a0, $s0 -/* 071AD0 80070ED0 0251082B */ sltu $at, $s2, $s1 -/* 071AD4 80070ED4 10200006 */ beqz $at, .L80070EF0 -/* 071AD8 80070ED8 26520004 */ addiu $s2, $s2, 4 -/* 071ADC 80070EDC 02160019 */ multu $s0, $s6 -/* 071AE0 80070EE0 00005012 */ mflo $t2 -/* 071AE4 80070EE4 02AA5821 */ addu $t3, $s5, $t2 -/* 071AE8 80070EE8 10000005 */ b .L80070F00 -/* 071AEC 80070EEC A16000D5 */ sb $zero, 0xd5($t3) -.L80070EF0: -/* 071AF0 80070EF0 02160019 */ multu $s0, $s6 -/* 071AF4 80070EF4 00006012 */ mflo $t4 -/* 071AF8 80070EF8 02AC6821 */ addu $t5, $s5, $t4 -/* 071AFC 80070EFC A1B400D5 */ sb $s4, 0xd5($t5) -.L80070F00: -/* 071B00 80070F00 5653FFF0 */ bnel $s2, $s3, .L80070EC4 -/* 071B04 80070F04 8E500000 */ lw $s0, ($s2) -/* 071B08 80070F08 1000013E */ b .L80071404 -/* 071B0C 80070F0C 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070F10 -/* 071B10 80070F10 3C0E800E */ lui $t6, %hi(gGamestate) # $t6, 0x800e -/* 071B14 80070F14 8DCEC50C */ lw $t6, %lo(gGamestate)($t6) -/* 071B18 80070F18 24010009 */ li $at, 9 -/* 071B1C 80070F1C 3C0F800E */ lui $t7, %hi(gModeSelection) # $t7, 0x800e -/* 071B20 80070F20 51C10138 */ beql $t6, $at, .L80071404 -/* 071B24 80070F24 8FBF003C */ lw $ra, 0x3c($sp) -/* 071B28 80070F28 8DEFC53C */ lw $t7, %lo(gModeSelection)($t7) -/* 071B2C 80070F2C 15E00003 */ bnez $t7, .L80070F3C -/* 071B30 80070F30 00000000 */ nop -/* 071B34 80070F34 0C01C1C5 */ jal func_80070714 -/* 071B38 80070F38 00000000 */ nop -.L80070F3C: -/* 071B3C 80070F3C 3C118016 */ lui $s1, %hi(D_80165738) # $s1, 0x8016 -/* 071B40 80070F40 26315738 */ addiu $s1, %lo(D_80165738) # addiu $s1, $s1, 0x5738 -/* 071B44 80070F44 86380000 */ lh $t8, ($s1) -/* 071B48 80070F48 3C108019 */ lui $s0, %hi(D_8018C630) # $s0, 0x8019 -/* 071B4C 80070F4C 2610C630 */ addiu $s0, %lo(D_8018C630) # addiu $s0, $s0, -0x39d0 -/* 071B50 80070F50 1B00012B */ blez $t8, .L80071400 -/* 071B54 80070F54 00009825 */ move $s3, $zero -.L80070F58: -/* 071B58 80070F58 0C01C7C0 */ jal find_unused_obj_index -/* 071B5C 80070F5C 02002025 */ move $a0, $s0 -/* 071B60 80070F60 8E040000 */ lw $a0, ($s0) -/* 071B64 80070F64 0C01C8E9 */ jal func_800723A4 -/* 071B68 80070F68 00002825 */ move $a1, $zero -/* 071B6C 80070F6C 86390000 */ lh $t9, ($s1) -/* 071B70 80070F70 26730001 */ addiu $s3, $s3, 1 -/* 071B74 80070F74 26100004 */ addiu $s0, $s0, 4 -/* 071B78 80070F78 0279082A */ slt $at, $s3, $t9 -/* 071B7C 80070F7C 1420FFF6 */ bnez $at, .L80070F58 -/* 071B80 80070F80 00000000 */ nop -/* 071B84 80070F84 1000011F */ b .L80071404 -/* 071B88 80070F88 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80070F8C -/* 071B8C 80070F8C 3C08800E */ lui $t0, %hi(gGamestate) # $t0, 0x800e -/* 071B90 80070F90 8D08C50C */ lw $t0, %lo(gGamestate)($t0) -/* 071B94 80070F94 24010009 */ li $at, 9 -/* 071B98 80070F98 3C09800E */ lui $t1, %hi(gModeSelection) # $t1, 0x800e -/* 071B9C 80070F9C 51010119 */ beql $t0, $at, .L80071404 -/* 071BA0 80070FA0 8FBF003C */ lw $ra, 0x3c($sp) -/* 071BA4 80070FA4 8D29C53C */ lw $t1, %lo(gModeSelection)($t1) -/* 071BA8 80070FA8 15200003 */ bnez $t1, .L80070FB8 -/* 071BAC 80070FAC 00000000 */ nop -/* 071BB0 80070FB0 0C01C1C5 */ jal func_80070714 -/* 071BB4 80070FB4 00000000 */ nop -.L80070FB8: -/* 071BB8 80070FB8 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071BBC 80070FBC 3C018016 */ lui $at, %hi(D_80165898) # $at, 0x8016 -/* 071BC0 80070FC0 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 071BC4 80070FC4 A0205898 */ sb $zero, %lo(D_80165898)($at) -/* 071BC8 80070FC8 8E240000 */ lw $a0, ($s1) -/* 071BCC 80070FCC 0C01C8E9 */ jal func_800723A4 -/* 071BD0 80070FD0 00002825 */ move $a1, $zero -/* 071BD4 80070FD4 3C118016 */ lui $s1, %hi(D_80165738) # $s1, 0x8016 -/* 071BD8 80070FD8 26315738 */ addiu $s1, %lo(D_80165738) # addiu $s1, $s1, 0x5738 -/* 071BDC 80070FDC 862A0000 */ lh $t2, ($s1) -/* 071BE0 80070FE0 3C108019 */ lui $s0, %hi(D_8018C630) # $s0, 0x8019 -/* 071BE4 80070FE4 2610C630 */ addiu $s0, %lo(D_8018C630) # addiu $s0, $s0, -0x39d0 -/* 071BE8 80070FE8 19400105 */ blez $t2, .L80071400 -/* 071BEC 80070FEC 00009825 */ move $s3, $zero -.L80070FF0: -/* 071BF0 80070FF0 0C01C7C0 */ jal find_unused_obj_index -/* 071BF4 80070FF4 02002025 */ move $a0, $s0 -/* 071BF8 80070FF8 8E040000 */ lw $a0, ($s0) -/* 071BFC 80070FFC 0C01C8E9 */ jal func_800723A4 -/* 071C00 80071000 00002825 */ move $a1, $zero -/* 071C04 80071004 862B0000 */ lh $t3, ($s1) -/* 071C08 80071008 26730001 */ addiu $s3, $s3, 1 -/* 071C0C 8007100C 26100004 */ addiu $s0, $s0, 4 -/* 071C10 80071010 026B082A */ slt $at, $s3, $t3 -/* 071C14 80071014 1420FFF6 */ bnez $at, .L80070FF0 -/* 071C18 80071018 00000000 */ nop -/* 071C1C 8007101C 100000F9 */ b .L80071404 -/* 071C20 80071020 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80071024 -/* 071C24 80071024 3C0C800E */ lui $t4, %hi(gGamestate) # $t4, 0x800e -/* 071C28 80071028 8D8CC50C */ lw $t4, %lo(gGamestate)($t4) -/* 071C2C 8007102C 24010009 */ li $at, 9 -/* 071C30 80071030 3C028019 */ lui $v0, %hi(gPlayerCount) # $v0, 0x8019 -/* 071C34 80071034 118100F2 */ beq $t4, $at, .L80071400 -/* 071C38 80071038 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071C3C 8007103C 8042EDF3 */ lb $v0, %lo(gPlayerCount)($v0) -/* 071C40 80071040 24030001 */ li $v1, 1 -/* 071C44 80071044 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 071C48 80071048 10620006 */ beq $v1, $v0, .L80071064 -/* 071C4C 8007104C 3C128019 */ lui $s2, %hi(D_8018D1A0) # $s2, 0x8019 -/* 071C50 80071050 24040002 */ li $a0, 2 -/* 071C54 80071054 14820032 */ bne $a0, $v0, .L80071120 -/* 071C58 80071058 3C0D800E */ lui $t5, %hi(gModeSelection) # $t5, 0x800e -/* 071C5C 8007105C 8DADC53C */ lw $t5, %lo(gModeSelection)($t5) -/* 071C60 80071060 148D002F */ bne $a0, $t5, .L80071120 -.L80071064: -/* 071C64 80071064 3C02800E */ lui $v0, %hi(gCCSelection) # $v0, 0x800e -/* 071C68 80071068 8C42C548 */ lw $v0, %lo(gCCSelection)($v0) -/* 071C6C 8007106C 24040002 */ li $a0, 2 -/* 071C70 80071070 240E0004 */ li $t6, 4 -/* 071C74 80071074 1040000A */ beqz $v0, .L800710A0 -/* 071C78 80071078 3C018019 */ lui $at, %hi(D_8018D1C8) # $at, 0x8019 -/* 071C7C 8007107C 1043000F */ beq $v0, $v1, .L800710BC -/* 071C80 80071080 24100008 */ li $s0, 8 -/* 071C84 80071084 10440015 */ beq $v0, $a0, .L800710DC -/* 071C88 80071088 24100008 */ li $s0, 8 -/* 071C8C 8007108C 24010003 */ li $at, 3 -/* 071C90 80071090 1041001B */ beq $v0, $at, .L80071100 -/* 071C94 80071094 24100008 */ li $s0, 8 -/* 071C98 80071098 10000029 */ b .L80071140 -/* 071C9C 8007109C 00000000 */ nop -.L800710A0: -/* 071CA0 800710A0 AC2ED1C8 */ sw $t6, %lo(D_8018D1C8)($at) -/* 071CA4 800710A4 24020006 */ li $v0, 6 -/* 071CA8 800710A8 3C018019 */ lui $at, %hi(D_8018D1D0) # $at, 0x8019 -/* 071CAC 800710AC AC22D1D0 */ sw $v0, %lo(D_8018D1D0)($at) -/* 071CB0 800710B0 3C018019 */ lui $at, %hi(D_8018D1D8) # $at, 0x8019 -/* 071CB4 800710B4 10000022 */ b .L80071140 -/* 071CB8 800710B8 AC22D1D8 */ sw $v0, %lo(D_8018D1D8)($at) -.L800710BC: -/* 071CBC 800710BC 240F0005 */ li $t7, 5 -/* 071CC0 800710C0 3C018019 */ lui $at, %hi(D_8018D1C8) # $at, 0x8019 -/* 071CC4 800710C4 AC2FD1C8 */ sw $t7, %lo(D_8018D1C8)($at) -/* 071CC8 800710C8 3C018019 */ lui $at, %hi(D_8018D1D0) # $at, 0x8019 -/* 071CCC 800710CC AC30D1D0 */ sw $s0, %lo(D_8018D1D0)($at) -/* 071CD0 800710D0 3C018019 */ lui $at, %hi(D_8018D1D8) # $at, 0x8019 -/* 071CD4 800710D4 1000001A */ b .L80071140 -/* 071CD8 800710D8 AC30D1D8 */ sw $s0, %lo(D_8018D1D8)($at) -.L800710DC: -/* 071CDC 800710DC 24180005 */ li $t8, 5 -/* 071CE0 800710E0 3C018019 */ lui $at, %hi(D_8018D1C8) # $at, 0x8019 -/* 071CE4 800710E4 AC38D1C8 */ sw $t8, %lo(D_8018D1C8)($at) -/* 071CE8 800710E8 3C018019 */ lui $at, %hi(D_8018D1D0) # $at, 0x8019 -/* 071CEC 800710EC AC30D1D0 */ sw $s0, %lo(D_8018D1D0)($at) -/* 071CF0 800710F0 3C018019 */ lui $at, %hi(D_8018D1D8) # $at, 0x8019 -/* 071CF4 800710F4 2419000A */ li $t9, 10 -/* 071CF8 800710F8 10000011 */ b .L80071140 -/* 071CFC 800710FC AC39D1D8 */ sw $t9, %lo(D_8018D1D8)($at) -.L80071100: -/* 071D00 80071100 24080005 */ li $t0, 5 -/* 071D04 80071104 3C018019 */ lui $at, %hi(D_8018D1C8) # $at, 0x8019 -/* 071D08 80071108 AC28D1C8 */ sw $t0, %lo(D_8018D1C8)($at) -/* 071D0C 8007110C 3C018019 */ lui $at, %hi(D_8018D1D0) # $at, 0x8019 -/* 071D10 80071110 AC30D1D0 */ sw $s0, %lo(D_8018D1D0)($at) -/* 071D14 80071114 3C018019 */ lui $at, %hi(D_8018D1D8) # $at, 0x8019 -/* 071D18 80071118 10000009 */ b .L80071140 -/* 071D1C 8007111C AC30D1D8 */ sw $s0, %lo(D_8018D1D8)($at) -.L80071120: -/* 071D20 80071120 24090004 */ li $t1, 4 -/* 071D24 80071124 3C018019 */ lui $at, %hi(D_8018D1C8) # $at, 0x8019 -/* 071D28 80071128 AC29D1C8 */ sw $t1, %lo(D_8018D1C8)($at) -/* 071D2C 8007112C 24020006 */ li $v0, 6 -/* 071D30 80071130 3C018019 */ lui $at, %hi(D_8018D1D0) # $at, 0x8019 -/* 071D34 80071134 AC22D1D0 */ sw $v0, %lo(D_8018D1D0)($at) -/* 071D38 80071138 3C018019 */ lui $at, %hi(D_8018D1D8) # $at, 0x8019 -/* 071D3C 8007113C AC22D1D8 */ sw $v0, %lo(D_8018D1D8)($at) -.L80071140: -/* 071D40 80071140 3C108019 */ lui $s0, %hi(D_8018D198) # $s0, 0x8019 -/* 071D44 80071144 2610D198 */ addiu $s0, %lo(D_8018D198) # addiu $s0, $s0, -0x2e68 -/* 071D48 80071148 2652D1A0 */ addiu $s2, %lo(D_8018D1A0) # addiu $s2, $s2, -0x2e60 -.L8007114C: -/* 071D4C 8007114C A2000000 */ sb $zero, ($s0) -/* 071D50 80071150 0C01C7C0 */ jal find_unused_obj_index -/* 071D54 80071154 02202025 */ move $a0, $s1 -/* 071D58 80071158 26100001 */ addiu $s0, $s0, 1 -/* 071D5C 8007115C 0212082B */ sltu $at, $s0, $s2 -/* 071D60 80071160 1420FFFA */ bnez $at, .L8007114C -/* 071D64 80071164 26310004 */ addiu $s1, $s1, 4 -/* 071D68 80071168 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071D6C 8007116C 3C108019 */ lui $s0, %hi(D_8018D1A8) # $s0, 0x8019 -/* 071D70 80071170 3C128019 */ lui $s2, %hi(D_8018D1B3) # $s2, 0x8019 -/* 071D74 80071174 2652D1B3 */ addiu $s2, %lo(D_8018D1B3) # addiu $s2, $s2, -0x2e4d -/* 071D78 80071178 2610D1A8 */ addiu $s0, %lo(D_8018D1A8) # addiu $s0, $s0, -0x2e58 -/* 071D7C 8007117C 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -.L80071180: -/* 071D80 80071180 A2000000 */ sb $zero, ($s0) -/* 071D84 80071184 0C01C7C0 */ jal find_unused_obj_index -/* 071D88 80071188 02202025 */ move $a0, $s1 -/* 071D8C 8007118C 26100001 */ addiu $s0, $s0, 1 -/* 071D90 80071190 0212082B */ sltu $at, $s0, $s2 -/* 071D94 80071194 1420FFFA */ bnez $at, .L80071180 -/* 071D98 80071198 26310004 */ addiu $s1, $s1, 4 -/* 071D9C 8007119C 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071DA0 800711A0 3C108019 */ lui $s0, %hi(D_8018D1B8) # $s0, 0x8019 -/* 071DA4 800711A4 3C128019 */ lui $s2, %hi(D_8018D1C4) # $s2, 0x8019 -/* 071DA8 800711A8 2652D1C4 */ addiu $s2, %lo(D_8018D1C4) # addiu $s2, $s2, -0x2e3c -/* 071DAC 800711AC 2610D1B8 */ addiu $s0, %lo(D_8018D1B8) # addiu $s0, $s0, -0x2e48 -/* 071DB0 800711B0 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -.L800711B4: -/* 071DB4 800711B4 A2000000 */ sb $zero, ($s0) -/* 071DB8 800711B8 0C01C7C0 */ jal find_unused_obj_index -/* 071DBC 800711BC 02202025 */ move $a0, $s1 -/* 071DC0 800711C0 26100001 */ addiu $s0, $s0, 1 -/* 071DC4 800711C4 0212082B */ sltu $at, $s0, $s2 -/* 071DC8 800711C8 1420FFFA */ bnez $at, .L800711B4 -/* 071DCC 800711CC 26310004 */ addiu $s1, $s1, 4 -/* 071DD0 800711D0 3C118019 */ lui $s1, %hi(D_8018C1B0) # $s1, 0x8019 -/* 071DD4 800711D4 3C12800E */ lui $s2, %hi(D_800E6360) # $s2, 0x800e -/* 071DD8 800711D8 3C158016 */ lui $s5, %hi(gObjectList) # $s5, 0x8016 -/* 071DDC 800711DC 3C148019 */ lui $s4, %hi(D_8018D01C) # $s4, 0x8019 -/* 071DE0 800711E0 3C13800E */ lui $s3, %hi(D_800E641A) # $s3, 0x800e -/* 071DE4 800711E4 2673641A */ addiu $s3, %lo(D_800E641A) # addiu $s3, $s3, 0x641a -/* 071DE8 800711E8 2694D01C */ addiu $s4, %lo(D_8018D01C) # addiu $s4, $s4, -0x2fe4 -/* 071DEC 800711EC 26B55C18 */ addiu $s5, %lo(gObjectList) # addiu $s5, $s5, 0x5c18 -/* 071DF0 800711F0 26526360 */ addiu $s2, %lo(D_800E6360) # addiu $s2, $s2, 0x6360 -/* 071DF4 800711F4 2631C1B0 */ addiu $s1, %lo(D_8018C1B0) # addiu $s1, $s1, -0x3e50 -/* 071DF8 800711F8 241600E0 */ li $s6, 224 -.L800711FC: -/* 071DFC 800711FC 0C01C7C0 */ jal find_unused_obj_index -/* 071E00 80071200 02202025 */ move $a0, $s1 -/* 071E04 80071204 8E300000 */ lw $s0, ($s1) -/* 071E08 80071208 00002825 */ move $a1, $zero -/* 071E0C 8007120C 0C01C8E9 */ jal func_800723A4 -/* 071E10 80071210 02002025 */ move $a0, $s0 -/* 071E14 80071214 864B0000 */ lh $t3, ($s2) -/* 071E18 80071218 02160019 */ multu $s0, $s6 -/* 071E1C 8007121C 864C0004 */ lh $t4, 4($s2) -/* 071E20 80071220 448B8000 */ mtc1 $t3, $f16 -/* 071E24 80071224 C6840000 */ lwc1 $f4, ($s4) -/* 071E28 80071228 448C4000 */ mtc1 $t4, $f8 -/* 071E2C 8007122C 468084A0 */ cvt.s.w $f18, $f16 -/* 071E30 80071230 02002025 */ move $a0, $s0 -/* 071E34 80071234 468042A0 */ cvt.s.w $f10, $f8 -/* 071E38 80071238 46049182 */ mul.s $f6, $f18, $f4 -/* 071E3C 8007123C 00005012 */ mflo $t2 -/* 071E40 80071240 02AA1021 */ addu $v0, $s5, $t2 -/* 071E44 80071244 AFA2004C */ sw $v0, 0x4c($sp) -/* 071E48 80071248 E44A000C */ swc1 $f10, 0xc($v0) -/* 071E4C 8007124C 0C0221F0 */ jal func_800887C0 -/* 071E50 80071250 E4460004 */ swc1 $f6, 4($v0) -/* 071E54 80071254 3C01800F */ lui $at, %hi(D_800EEA78) # $at, 0x800f -/* 071E58 80071258 C430EA78 */ lwc1 $f16, %lo(D_800EEA78)($at) -/* 071E5C 8007125C 8FA2004C */ lw $v0, 0x4c($sp) -/* 071E60 80071260 26520006 */ addiu $s2, $s2, 6 -/* 071E64 80071264 0253082B */ sltu $at, $s2, $s3 -/* 071E68 80071268 26310004 */ addiu $s1, $s1, 4 -/* 071E6C 8007126C 1420FFE3 */ bnez $at, .L800711FC -/* 071E70 80071270 E4500000 */ swc1 $f16, ($v0) -/* 071E74 80071274 3C108019 */ lui $s0, %hi(D_8018C3F0) # $s0, 0x8019 -/* 071E78 80071278 3C118019 */ lui $s1, %hi(D_8018C5F0) # $s1, 0x8019 -/* 071E7C 8007127C 2631C5F0 */ addiu $s1, %lo(D_8018C5F0) # addiu $s1, $s1, -0x3a10 -/* 071E80 80071280 2610C3F0 */ addiu $s0, %lo(D_8018C3F0) # addiu $s0, $s0, -0x3c10 -.L80071284: -/* 071E84 80071284 0C01C7C0 */ jal find_unused_obj_index -/* 071E88 80071288 02002025 */ move $a0, $s0 -/* 071E8C 8007128C 26100004 */ addiu $s0, $s0, 4 -/* 071E90 80071290 1611FFFC */ bne $s0, $s1, .L80071284 -/* 071E94 80071294 00000000 */ nop -/* 071E98 80071298 1000005A */ b .L80071404 -/* 071E9C 8007129C 8FBF003C */ lw $ra, 0x3c($sp) -glabel L800712A0 -/* 071EA0 800712A0 3C0D800E */ lui $t5, %hi(gGamestate) # $t5, 0x800e -/* 071EA4 800712A4 8DADC50C */ lw $t5, %lo(gGamestate)($t5) -/* 071EA8 800712A8 24010009 */ li $at, 9 -/* 071EAC 800712AC 3C118019 */ lui $s1, %hi(D_8018CF10) # $s1, 0x8019 -/* 071EB0 800712B0 11A10053 */ beq $t5, $at, .L80071400 -/* 071EB4 800712B4 2631CF10 */ addiu $s1, %lo(D_8018CF10) # addiu $s1, $s1, -0x30f0 -/* 071EB8 800712B8 0C01C7C0 */ jal find_unused_obj_index -/* 071EBC 800712BC 02202025 */ move $a0, $s1 -/* 071EC0 800712C0 8E240000 */ lw $a0, ($s1) -/* 071EC4 800712C4 0C01C8E9 */ jal func_800723A4 -/* 071EC8 800712C8 00002825 */ move $a1, $zero -/* 071ECC 800712CC 3C118019 */ lui $s1, %hi(D_8018C1B0) # $s1, 0x8019 -/* 071ED0 800712D0 3C108019 */ lui $s0, %hi(D_8018C278) # $s0, 0x8019 -/* 071ED4 800712D4 2610C278 */ addiu $s0, %lo(D_8018C278) # addiu $s0, $s0, -0x3d88 -/* 071ED8 800712D8 2631C1B0 */ addiu $s1, %lo(D_8018C1B0) # addiu $s1, $s1, -0x3e50 -.L800712DC: -/* 071EDC 800712DC 0C01C7C0 */ jal find_unused_obj_index -/* 071EE0 800712E0 02202025 */ move $a0, $s1 -/* 071EE4 800712E4 26310004 */ addiu $s1, $s1, 4 -/* 071EE8 800712E8 0230082B */ sltu $at, $s1, $s0 -/* 071EEC 800712EC 1420FFFB */ bnez $at, .L800712DC -/* 071EF0 800712F0 00000000 */ nop -/* 071EF4 800712F4 3C108019 */ lui $s0, %hi(D_8018C3F0) # $s0, 0x8019 -/* 071EF8 800712F8 3C118019 */ lui $s1, %hi(D_8018C404) # $s1, 0x8019 -/* 071EFC 800712FC 2631C404 */ addiu $s1, %lo(D_8018C404) # addiu $s1, $s1, -0x3bfc -/* 071F00 80071300 2610C3F0 */ addiu $s0, %lo(D_8018C3F0) # addiu $s0, $s0, -0x3c10 -.L80071304: -/* 071F04 80071304 0C01C7C0 */ jal find_unused_obj_index -/* 071F08 80071308 02002025 */ move $a0, $s0 -/* 071F0C 8007130C 26100004 */ addiu $s0, $s0, 4 -/* 071F10 80071310 0211082B */ sltu $at, $s0, $s1 -/* 071F14 80071314 1420FFFB */ bnez $at, .L80071304 -/* 071F18 80071318 00000000 */ nop -/* 071F1C 8007131C 3C108019 */ lui $s0, %hi(D_8018C630) # $s0, 0x8019 -/* 071F20 80071320 3C118019 */ lui $s1, %hi(D_8018C6B0) # $s1, 0x8019 -/* 071F24 80071324 2631C6B0 */ addiu $s1, %lo(D_8018C6B0) # addiu $s1, $s1, -0x3950 -/* 071F28 80071328 2610C630 */ addiu $s0, %lo(D_8018C630) # addiu $s0, $s0, -0x39d0 -.L8007132C: -/* 071F2C 8007132C 0C01C7C0 */ jal find_unused_obj_index -/* 071F30 80071330 02002025 */ move $a0, $s0 -/* 071F34 80071334 26100004 */ addiu $s0, $s0, 4 -/* 071F38 80071338 1611FFFC */ bne $s0, $s1, .L8007132C -/* 071F3C 8007133C 00000000 */ nop -/* 071F40 80071340 10000030 */ b .L80071404 -/* 071F44 80071344 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80071348 -/* 071F48 80071348 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071F4C 8007134C 3C108018 */ lui $s0, %hi(D_80183EDC) # $s0, 0x8018 -/* 071F50 80071350 26103EDC */ addiu $s0, %lo(D_80183EDC) # addiu $s0, $s0, 0x3edc -/* 071F54 80071354 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 071F58 80071358 8E240000 */ lw $a0, ($s1) -.L8007135C: -/* 071F5C 8007135C 0C01C8E9 */ jal func_800723A4 -/* 071F60 80071360 00002825 */ move $a1, $zero -/* 071F64 80071364 26310004 */ addiu $s1, $s1, 4 -/* 071F68 80071368 5630FFFC */ bnel $s1, $s0, .L8007135C -/* 071F6C 8007136C 8E240000 */ lw $a0, ($s1) -/* 071F70 80071370 10000024 */ b .L80071404 -/* 071F74 80071374 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80071378 -/* 071F78 80071378 3C0E800E */ lui $t6, %hi(gGamestate) # $t6, 0x800e -/* 071F7C 8007137C 8DCEC50C */ lw $t6, %lo(gGamestate)($t6) -/* 071F80 80071380 24010009 */ li $at, 9 -/* 071F84 80071384 3C118018 */ lui $s1, %hi(D_80183EA0) # $s1, 0x8018 -/* 071F88 80071388 11C1001D */ beq $t6, $at, .L80071400 -/* 071F8C 8007138C 26313EA0 */ addiu $s1, %lo(D_80183EA0) # addiu $s1, $s1, 0x3ea0 -/* 071F90 80071390 3C108018 */ lui $s0, %hi(D_80183EC8) # $s0, 0x8018 -/* 071F94 80071394 26103EC8 */ addiu $s0, %lo(D_80183EC8) # addiu $s0, $s0, 0x3ec8 -/* 071F98 80071398 8E240000 */ lw $a0, ($s1) -.L8007139C: -/* 071F9C 8007139C 0C01C8E9 */ jal func_800723A4 -/* 071FA0 800713A0 00002825 */ move $a1, $zero -/* 071FA4 800713A4 26310004 */ addiu $s1, $s1, 4 -/* 071FA8 800713A8 0230082B */ sltu $at, $s1, $s0 -/* 071FAC 800713AC 5420FFFB */ bnel $at, $zero, .L8007139C -/* 071FB0 800713B0 8E240000 */ lw $a0, ($s1) -/* 071FB4 800713B4 3C128018 */ lui $s2, %hi(D_80183F28) # $s2, 0x8018 -/* 071FB8 800713B8 3C108018 */ lui $s0, %hi(D_80183F34) # $s0, 0x8018 -/* 071FBC 800713BC 26103F34 */ addiu $s0, %lo(D_80183F34) # addiu $s0, $s0, 0x3f34 -/* 071FC0 800713C0 26523F28 */ addiu $s2, %lo(D_80183F28) # addiu $s2, $s2, 0x3f28 -/* 071FC4 800713C4 8E440000 */ lw $a0, ($s2) -.L800713C8: -/* 071FC8 800713C8 0C01C8E9 */ jal func_800723A4 -/* 071FCC 800713CC 00002825 */ move $a1, $zero -/* 071FD0 800713D0 26520004 */ addiu $s2, $s2, 4 -/* 071FD4 800713D4 5650FFFC */ bnel $s2, $s0, .L800713C8 -/* 071FD8 800713D8 8E440000 */ lw $a0, ($s2) -/* 071FDC 800713DC 10000009 */ b .L80071404 -/* 071FE0 800713E0 8FBF003C */ lw $ra, 0x3c($sp) -glabel L800713E4 -/* 071FE4 800713E4 00009825 */ move $s3, $zero -/* 071FE8 800713E8 24100008 */ li $s0, 8 -.L800713EC: -/* 071FEC 800713EC 0C01DC3C */ jal func_800770F0 -/* 071FF0 800713F0 02602025 */ move $a0, $s3 -/* 071FF4 800713F4 26730001 */ addiu $s3, $s3, 1 -/* 071FF8 800713F8 1670FFFC */ bne $s3, $s0, .L800713EC -/* 071FFC 800713FC 00000000 */ nop -.L80071400: -glabel L80071400 -/* 072000 80071400 8FBF003C */ lw $ra, 0x3c($sp) -.L80071404: -/* 072004 80071404 8FB00020 */ lw $s0, 0x20($sp) -/* 072008 80071408 8FB10024 */ lw $s1, 0x24($sp) -/* 07200C 8007140C 8FB20028 */ lw $s2, 0x28($sp) -/* 072010 80071410 8FB3002C */ lw $s3, 0x2c($sp) -/* 072014 80071414 8FB40030 */ lw $s4, 0x30($sp) -/* 072018 80071418 8FB50034 */ lw $s5, 0x34($sp) -/* 07201C 8007141C 8FB60038 */ lw $s6, 0x38($sp) -/* 072020 80071420 03E00008 */ jr $ra -/* 072024 80071424 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/code_80071F00/func_80081AFC.s b/asm/non_matchings/code_80071F00/func_80081AFC.s deleted file mode 100644 index 072020357..000000000 --- a/asm/non_matchings/code_80071F00/func_80081AFC.s +++ /dev/null @@ -1,172 +0,0 @@ -.section .late_rodata - -glabel jpt_800EF140 -.word L80081D0C, L80081B70, L80081B80, L80081BC4 -.word L80081C0C, L80081D0C, L80081D0C, L80081D0C -.word L80081D0C, L80081D0C, L80081C44 - -.section .text - -glabel func_80081AFC -/* 0826FC 80081AFC 000470C0 */ sll $t6, $a0, 3 -/* 082700 80081B00 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 082704 80081B04 01C47023 */ subu $t6, $t6, $a0 -/* 082708 80081B08 3C0F8016 */ lui $t7, %hi(gObjectList) # $t7, 0x8016 -/* 08270C 80081B0C AFB0001C */ sw $s0, 0x1c($sp) -/* 082710 80081B10 25EF5C18 */ addiu $t7, %lo(gObjectList) # addiu $t7, $t7, 0x5c18 -/* 082714 80081B14 000E7140 */ sll $t6, $t6, 5 -/* 082718 80081B18 01CF8021 */ addu $s0, $t6, $t7 -/* 08271C 80081B1C 860300A6 */ lh $v1, 0xa6($s0) -/* 082720 80081B20 AFB10020 */ sw $s1, 0x20($sp) -/* 082724 80081B24 00808825 */ move $s1, $a0 -/* 082728 80081B28 2861000B */ slti $at, $v1, 0xb -/* 08272C 80081B2C AFBF0024 */ sw $ra, 0x24($sp) -/* 082730 80081B30 00A03025 */ move $a2, $a1 -/* 082734 80081B34 14200006 */ bnez $at, .L80081B50 -/* 082738 80081B38 00601025 */ move $v0, $v1 -/* 08273C 80081B3C 24010064 */ li $at, 100 -/* 082740 80081B40 50410051 */ beql $v0, $at, .L80081C88 -/* 082744 80081B44 860C00AE */ lh $t4, 0xae($s0) -/* 082748 80081B48 10000071 */ b .L80081D10 -/* 08274C 80081B4C 28610002 */ slti $at, $v1, 2 -.L80081B50: -/* 082750 80081B50 2C41000B */ sltiu $at, $v0, 0xb -/* 082754 80081B54 1020006D */ beqz $at, .L80081D0C -/* 082758 80081B58 0002C080 */ sll $t8, $v0, 2 -/* 08275C 80081B5C 3C01800F */ lui $at, %hi(jpt_800EF140) -/* 082760 80081B60 00380821 */ addu $at, $at, $t8 -/* 082764 80081B64 8C38F140 */ lw $t8, %lo(jpt_800EF140)($at) -/* 082768 80081B68 03000008 */ jr $t8 -/* 08276C 80081B6C 00000000 */ nop -glabel L80081B70 -/* 082770 80081B70 0C020612 */ jal func_80081848 -/* 082774 80081B74 02202025 */ move $a0, $s1 -/* 082778 80081B78 10000064 */ b .L80081D0C -/* 08277C 80081B7C 860300A6 */ lh $v1, 0xa6($s0) -glabel L80081B80 -/* 082780 80081B80 8E02004C */ lw $v0, 0x4c($s0) -/* 082784 80081B84 02202025 */ move $a0, $s1 -/* 082788 80081B88 24050002 */ li $a1, 2 -/* 08278C 80081B8C 1440000A */ bnez $v0, .L80081BB8 -/* 082790 80081B90 2459FFFF */ addiu $t9, $v0, -1 -/* 082794 80081B94 0C021BAB */ jal func_80086EAC -/* 082798 80081B98 24060001 */ li $a2, 1 -/* 08279C 80081B9C 0C01C922 */ jal func_80072488 -/* 0827A0 80081BA0 02202025 */ move $a0, $s1 -/* 0827A4 80081BA4 02202025 */ move $a0, $s1 -/* 0827A8 80081BA8 0C01C870 */ jal set_object_flag_unk_054_true -/* 0827AC 80081BAC 24050200 */ li $a1, 512 -/* 0827B0 80081BB0 10000002 */ b .L80081BBC -/* 0827B4 80081BB4 00000000 */ nop -.L80081BB8: -/* 0827B8 80081BB8 AE19004C */ sw $t9, 0x4c($s0) -.L80081BBC: -/* 0827BC 80081BBC 10000053 */ b .L80081D0C -/* 0827C0 80081BC0 860300A6 */ lh $v1, 0xa6($s0) -glabel L80081BC4 -/* 0827C4 80081BC4 860800AE */ lh $t0, 0xae($s0) -/* 0827C8 80081BC8 02202025 */ move $a0, $s1 -/* 0827CC 80081BCC 24050002 */ li $a1, 2 -/* 0827D0 80081BD0 5500004F */ bnel $t0, $zero, .L80081D10 -/* 0827D4 80081BD4 28610002 */ slti $at, $v1, 2 -/* 0827D8 80081BD8 0C021BAB */ jal func_80086EAC -/* 0827DC 80081BDC 24060004 */ li $a2, 4 -/* 0827E0 80081BE0 0C02054F */ jal func_8008153C -/* 0827E4 80081BE4 02202025 */ move $a0, $s1 -/* 0827E8 80081BE8 0C01C922 */ jal func_80072488 -/* 0827EC 80081BEC 02202025 */ move $a0, $s1 -/* 0827F0 80081BF0 3C061901 */ lui $a2, (0x19018007 >> 16) # lui $a2, 0x1901 -/* 0827F4 80081BF4 34C68007 */ ori $a2, (0x19018007 & 0xFFFF) # ori $a2, $a2, 0x8007 -/* 0827F8 80081BF8 26040004 */ addiu $a0, $s0, 4 -/* 0827FC 80081BFC 0C03262E */ jal func_800C98B8 -/* 082800 80081C00 26050038 */ addiu $a1, $s0, 0x38 -/* 082804 80081C04 10000041 */ b .L80081D0C -/* 082808 80081C08 860300A6 */ lh $v1, 0xa6($s0) -glabel L80081C0C -/* 08280C 80081C0C 24090002 */ li $t1, 2 -/* 082810 80081C10 AFA90010 */ sw $t1, 0x10($sp) -/* 082814 80081C14 02202025 */ move $a0, $s1 -/* 082818 80081C18 24050001 */ li $a1, 1 -/* 08281C 80081C1C 24060006 */ li $a2, 6 -/* 082820 80081C20 24070001 */ li $a3, 1 -/* 082824 80081C24 0C01CB95 */ jal func_80072E54 -/* 082828 80081C28 AFA00014 */ sw $zero, 0x14($sp) -/* 08282C 80081C2C 10400003 */ beqz $v0, .L80081C3C -/* 082830 80081C30 02202025 */ move $a0, $s1 -/* 082834 80081C34 0C01C9B3 */ jal func_800726CC -/* 082838 80081C38 24050064 */ li $a1, 100 -.L80081C3C: -/* 08283C 80081C3C 10000033 */ b .L80081D0C -/* 082840 80081C40 860300A6 */ lh $v1, 0xa6($s0) -glabel L80081C44 -/* 082844 80081C44 240AFFFF */ li $t2, -1 -/* 082848 80081C48 AFAA0014 */ sw $t2, 0x14($sp) -/* 08284C 80081C4C 02202025 */ move $a0, $s1 -/* 082850 80081C50 24050001 */ li $a1, 1 -/* 082854 80081C54 24060006 */ li $a2, 6 -/* 082858 80081C58 24070001 */ li $a3, 1 -/* 08285C 80081C5C 0C01CB95 */ jal func_80072E54 -/* 082860 80081C60 AFA00010 */ sw $zero, 0x10($sp) -/* 082864 80081C64 860B00AE */ lh $t3, 0xae($s0) -/* 082868 80081C68 02202025 */ move $a0, $s1 -/* 08286C 80081C6C 15600003 */ bnez $t3, .L80081C7C -/* 082870 80081C70 00000000 */ nop -/* 082874 80081C74 0C01C9B3 */ jal func_800726CC -/* 082878 80081C78 24050064 */ li $a1, 100 -.L80081C7C: -/* 08287C 80081C7C 10000023 */ b .L80081D0C -/* 082880 80081C80 860300A6 */ lh $v1, 0xa6($s0) -/* 082884 80081C84 860C00AE */ lh $t4, 0xae($s0) -.L80081C88: -/* 082888 80081C88 02202025 */ move $a0, $s1 -/* 08288C 80081C8C 24050200 */ li $a1, 512 -/* 082890 80081C90 5580001F */ bnel $t4, $zero, .L80081D10 -/* 082894 80081C94 28610002 */ slti $at, $v1, 2 -/* 082898 80081C98 0C01C87A */ jal set_object_flag_unk_054_false -/* 08289C 80081C9C AFA60034 */ sw $a2, 0x34($sp) -/* 0828A0 80081CA0 0C01C90A */ jal func_80072428 -/* 0828A4 80081CA4 02202025 */ move $a0, $s1 -/* 0828A8 80081CA8 8FA60034 */ lw $a2, 0x34($sp) -/* 0828AC 80081CAC 24010001 */ li $at, 1 -/* 0828B0 80081CB0 3C0D8019 */ lui $t5, %hi(D_8018D198) # $t5, 0x8019 -/* 0828B4 80081CB4 10C10009 */ beq $a2, $at, .L80081CDC -/* 0828B8 80081CB8 25ADD198 */ addiu $t5, %lo(D_8018D198) # addiu $t5, $t5, -0x2e68 -/* 0828BC 80081CBC 24010002 */ li $at, 2 -/* 0828C0 80081CC0 10C10008 */ beq $a2, $at, .L80081CE4 -/* 0828C4 80081CC4 3C0E8019 */ lui $t6, %hi(D_8018D1A8) # $t6, 0x8019 -/* 0828C8 80081CC8 24010003 */ li $at, 3 -/* 0828CC 80081CCC 10C10008 */ beq $a2, $at, .L80081CF0 -/* 0828D0 80081CD0 3C0F8019 */ lui $t7, %hi(D_8018D1B8) # $t7, 0x8019 -/* 0828D4 80081CD4 10000009 */ b .L80081CFC -/* 0828D8 80081CD8 8FB8002C */ lw $t8, 0x2c($sp) -.L80081CDC: -/* 0828DC 80081CDC 10000006 */ b .L80081CF8 -/* 0828E0 80081CE0 AFAD002C */ sw $t5, 0x2c($sp) -.L80081CE4: -/* 0828E4 80081CE4 25CED1A8 */ addiu $t6, %lo(D_8018D1A8) # addiu $t6, $t6, -0x2e58 -/* 0828E8 80081CE8 10000003 */ b .L80081CF8 -/* 0828EC 80081CEC AFAE002C */ sw $t6, 0x2c($sp) -.L80081CF0: -/* 0828F0 80081CF0 25EFD1B8 */ addiu $t7, %lo(D_8018D1B8) # addiu $t7, $t7, -0x2e48 -/* 0828F4 80081CF4 AFAF002C */ sw $t7, 0x2c($sp) -.L80081CF8: -/* 0828F8 80081CF8 8FB8002C */ lw $t8, 0x2c($sp) -.L80081CFC: -/* 0828FC 80081CFC 861900A4 */ lh $t9, 0xa4($s0) -/* 082900 80081D00 03194021 */ addu $t0, $t8, $t9 -/* 082904 80081D04 A1000000 */ sb $zero, ($t0) -/* 082908 80081D08 860300A6 */ lh $v1, 0xa6($s0) -.L80081D0C: -glabel L80081D0C -/* 08290C 80081D0C 28610002 */ slti $at, $v1, 2 -.L80081D10: -/* 082910 80081D10 54200004 */ bnel $at, $zero, .L80081D24 -/* 082914 80081D14 8FBF0024 */ lw $ra, 0x24($sp) -/* 082918 80081D18 0C01CD45 */ jal func_80073514 -/* 08291C 80081D1C 02202025 */ move $a0, $s1 -/* 082920 80081D20 8FBF0024 */ lw $ra, 0x24($sp) -.L80081D24: -/* 082924 80081D24 8FB0001C */ lw $s0, 0x1c($sp) -/* 082928 80081D28 8FB10020 */ lw $s1, 0x20($sp) -/* 08292C 80081D2C 03E00008 */ jr $ra -/* 082930 80081D30 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/code_80071F00/func_80081FF4.s b/asm/non_matchings/code_80071F00/func_80081FF4.s index ab4778cdb..4b8473aa2 100644 --- a/asm/non_matchings/code_80071F00/func_80081FF4.s +++ b/asm/non_matchings/code_80071F00/func_80081FF4.s @@ -90,10 +90,10 @@ glabel func_80081FF4 /* 082D30 80082130 0003C880 */ sll $t9, $v1, 2 /* 082D34 80082134 0323C823 */ subu $t9, $t9, $v1 /* 082D38 80082138 00194040 */ sll $t0, $t9, 1 -/* 082D3C 8008213C 3C0A800E */ lui $t2, %hi(D_800E6360) # $t2, 0x800e +/* 082D3C 8008213C 3C0A800E */ lui $t2, %hi(gMoleSpawns) # $t2, 0x800e /* 082D40 80082140 000FC040 */ sll $t8, $t7, 1 /* 082D44 80082144 03084821 */ addu $t1, $t8, $t0 -/* 082D48 80082148 254A6360 */ addiu $t2, %lo(D_800E6360) # addiu $t2, $t2, 0x6360 +/* 082D48 80082148 254A6360 */ addiu $t2, %lo(gMoleSpawns) # addiu $t2, $t2, 0x6360 /* 082D4C 8008214C 012A1021 */ addu $v0, $t1, $t2 /* 082D50 80082150 844B0000 */ lh $t3, ($v0) /* 082D54 80082154 3C018019 */ lui $at, %hi(D_8018D01C) # $at, 0x8019 diff --git a/asm/non_matchings/hud_renderer/func_80053870.s b/asm/non_matchings/hud_renderer/func_80053870.s index 965c56a61..4e94b8a10 100644 --- a/asm/non_matchings/hud_renderer/func_80053870.s +++ b/asm/non_matchings/hud_renderer/func_80053870.s @@ -21,8 +21,8 @@ glabel func_80053870 /* 0544BC 800538BC AFB00018 */ sw $s0, 0x18($sp) /* 0544C0 800538C0 14800017 */ bnez $a0, .L80053920 /* 0544C4 800538C4 AFB80084 */ sw $t8, 0x84($sp) -/* 0544C8 800538C8 3C148016 */ lui $s4, %hi(D_80165750) # $s4, 0x8016 -/* 0544CC 800538CC 26945750 */ addiu $s4, %lo(D_80165750) # addiu $s4, $s4, 0x5750 +/* 0544C8 800538C8 3C148016 */ lui $s4, %hi(gNumActiveThwomps) # $s4, 0x8016 +/* 0544CC 800538CC 26945750 */ addiu $s4, %lo(gNumActiveThwomps) # addiu $s4, $s4, 0x5750 /* 0544D0 800538D0 86990000 */ lh $t9, ($s4) /* 0544D4 800538D4 3C108018 */ lui $s0, %hi(D_80183EA0) # $s0, 0x8018 /* 0544D8 800538D8 26103EA0 */ addiu $s0, %lo(D_80183EA0) # addiu $s0, $s0, 0x3ea0 @@ -45,8 +45,8 @@ glabel func_80053870 /* 054518 80053918 8E110000 */ lw $s1, ($s0) /* 05451C 8005391C AFB10094 */ sw $s1, 0x94($sp) .L80053920: -/* 054520 80053920 3C148016 */ lui $s4, %hi(D_80165750) # $s4, 0x8016 -/* 054524 80053924 26945750 */ addiu $s4, %lo(D_80165750) # addiu $s4, $s4, 0x5750 +/* 054520 80053920 3C148016 */ lui $s4, %hi(gNumActiveThwomps) # $s4, 0x8016 +/* 054524 80053924 26945750 */ addiu $s4, %lo(gNumActiveThwomps) # addiu $s4, $s4, 0x5750 /* 054528 80053928 8FA40094 */ lw $a0, 0x94($sp) /* 05452C 8005392C 0C014D29 */ jal func_800534A4 /* 054530 80053930 00009025 */ move $s2, $zero @@ -92,8 +92,8 @@ glabel func_80053870 /* 0545CC 800539CC 0C014DB2 */ jal func_800536C8 /* 0545D0 800539D0 02202025 */ move $a0, $s1 .L800539D4: -/* 0545D4 800539D4 3C028016 */ lui $v0, %hi(D_80165750) # $v0, 0x8016 -/* 0545D8 800539D8 84425750 */ lh $v0, %lo(D_80165750)($v0) +/* 0545D4 800539D4 3C028016 */ lui $v0, %hi(gNumActiveThwomps) # $v0, 0x8016 +/* 0545D8 800539D8 84425750 */ lh $v0, %lo(gNumActiveThwomps)($v0) /* 0545DC 800539DC 3C0F8018 */ lui $t7, %hi(D_80183EA0) # $t7, 0x8018 /* 0545E0 800539E0 25EF3EA0 */ addiu $t7, %lo(D_80183EA0) # addiu $t7, $t7, 0x3ea0 /* 0545E4 800539E4 00027080 */ sll $t6, $v0, 2 @@ -102,8 +102,8 @@ glabel func_80053870 .L800539F0: /* 0545F0 800539F0 0C014DB2 */ jal func_800536C8 /* 0545F4 800539F4 02202025 */ move $a0, $s1 -/* 0545F8 800539F8 3C028016 */ lui $v0, %hi(D_80165750) # $v0, 0x8016 -/* 0545FC 800539FC 84425750 */ lh $v0, %lo(D_80165750)($v0) +/* 0545F8 800539F8 3C028016 */ lui $v0, %hi(gNumActiveThwomps) # $v0, 0x8016 +/* 0545FC 800539FC 84425750 */ lh $v0, %lo(gNumActiveThwomps)($v0) /* 054600 80053A00 3C198018 */ lui $t9, %hi(D_80183EA0) # $t9, 0x8018 /* 054604 80053A04 27393EA0 */ addiu $t9, %lo(D_80183EA0) # addiu $t9, $t9, 0x3ea0 /* 054608 80053A08 0002C080 */ sll $t8, $v0, 2 diff --git a/data/data_code_80071F00_2.s b/data/data_code_80071F00_2.s index 00a5ef2c7..bde002f42 100644 --- a/data/data_code_80071F00_2.s +++ b/data/data_code_80071F00_2.s @@ -300,12 +300,13 @@ glabel D_800E5670 .word 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff .word 0xffffffff, 0xffffffff -glabel D_800E5728 +glabel gFireBreathsSpawns .hword 0x0889, 0x0075, 0xf90a .hword 0x0889, 0x0075, 0xf9d0 .hword 0x07c1, 0x0075, 0xf90a .hword 0x07c1, 0x0075, 0xf9d0 +# Referenced in code_80071F00/func_80076884, but that function is unused glabel D_800E5740 .hword 0x0662, 0x0014, 0xfb52, 0x06db, 0x0014, 0xfb57, 0x067d, 0x0014 .hword 0xfb86, 0x06e2, 0x0014, 0xfaff, 0x06cd, 0x0014, 0xfb93, 0x06fb @@ -314,6 +315,7 @@ glabel D_800E5740 .hword 0xfb72, 0x06fe, 0x0014, 0xfb7d, 0x0715, 0x0014, 0xfb1b, 0x066f .hword 0x0014, 0xfac7, 0x0662, 0x0014, 0xfb52, 0x0000 +# Referenced in code_80071F00/func_80076884, but that function is unused glabel D_800E579C .hword 0xff96, 0xffce, 0xfcca, 0xffa7, 0xffce, 0xfd1d, 0xff6e, 0xffce .hword 0xfd5b, 0xff96, 0xffce, 0xfc65, 0xff4b, 0xffce, 0xfcdb, 0xff59 @@ -322,6 +324,7 @@ glabel D_800E579C .hword 0xfd52, 0x00b8, 0xffce, 0xfd33, 0x00ab, 0xffce, 0xfc65, 0xff96 .hword 0xffce, 0xfcca, 0xffa7, 0xffce, 0xfd1d, 0x0000 +# Referenced in code_80071F00/func_80076884, but that function is unused glabel D_800E57F8 .hword 0x06e8, 0xffce, 0x0023, 0x07e3, 0xffcf, 0xffd4, 0x084d, 0xffce .hword 0x006e, 0x07e3, 0xffcd, 0x00e0, 0x0638, 0xffca, 0x02ae, 0x0603 @@ -330,21 +333,21 @@ glabel D_800E57F8 .hword 0x0087, 0x07ea, 0xffd0, 0xff6a, 0x07ea, 0xffce, 0x003c, 0x082c .hword 0xffcf, 0xffb9, 0x023f, 0xffca, 0x02bb, 0x0000 -glabel D_800E5854 +glabel gThomwpSpawns50CC .hword 0x03b6, 0xf92a, 0x0001, 0x0000, 0x0352, 0xf95c, 0x0002, 0x0000 .hword 0x04b0, 0xf5ba, 0x0003, 0x0000, 0x04b0, 0xf592, 0x0003, 0x0001 .hword 0x091a, 0xf5b0, 0x0004, 0x0000, 0x0596, 0xf92f, 0x0006, 0x0000 .hword 0x082a, 0xf9f2, 0x0005, 0x0000, 0x073a, 0xf9f2, 0x0005, 0x0001 -glabel D_800E5894 +glabel gThwompSpawns100CCExtra .hword 0x0320, 0xf92a, 0x0001, 0x0000, 0x044c, 0xf92a, 0x0001, 0x0001 .hword 0x02bc, 0xf95c, 0x0002, 0x0000, 0x04b0, 0xf8f8, 0x0002, 0x0001 .hword 0x04b0, 0xf5ba, 0x0003, 0x0000, 0x04b0, 0xf592, 0x0003, 0x0001 .hword 0x091a, 0xf5bf, 0x0004, 0x0000, 0x091a, 0xf597, 0x0004, 0x0001 .hword 0x0596, 0xf92f, 0x0006, 0x0000, 0x082a, 0xf9f2, 0x0005, 0x0000 -.word 0x073af9f2, 0x00050001 +.hword 0x073a, 0xf9f2, 0x0005, 0x0001 -glabel D_800E58EC +glabel gThomwpSpawns150CC .hword 0x0320, 0xf92a, 0x0001, 0x0000, 0x044c, 0xf92a, 0x0001, 0x0001 .hword 0x02bc, 0xf95c, 0x0002, 0x0000, 0x04b0, 0xf8f8, 0x0002, 0x0001 .hword 0x04b0, 0xf5ba, 0x0003, 0x0000, 0x04b0, 0xf592, 0x0003, 0x0001 @@ -352,17 +355,23 @@ glabel D_800E58EC .hword 0x091a, 0xf58d, 0x0004, 0x0002, 0x0596, 0xf92f, 0x0006, 0x0000 .hword 0x082a, 0xf9f2, 0x0005, 0x0000, 0x073a, 0xf9f2, 0x0005, 0x0001 +# Something related to the Thwomps glabel D_800E594C -.float -8.0, 8.0, 8.0, 8.0 -.float 0.0, 0.0, 8.0, -8.0 +.float -8.0, 8.0 +.float 8.0, 8.0 +.float 0.0, 0.0 +.float 8.0, -8.0 .float -8.0, -8.0 +# Appears to be unused glabel D_800E5974 .word 0x80000000, 0x00000000 +# Something related to the Thwomps glabel D_800E597C -.word 0x00000000, 0x40008000, 0x8000c000 +.hword 0x0000, 0x0000, 0x4000, 0x8000, 0x8000, 0xc000 +# Seems to be related to the Boos in Banshee Boardwalk glabel D_800E5988 .hword 0x0016, 0x0005, 0x0011, 0x0032, 0x0028, 0x0005, 0x000d, 0x0014 .hword 0x0028, 0x0000, 0x0011, 0x0000, 0x0028, 0x0014, 0x000a, 0x0000 @@ -377,6 +386,7 @@ glabel D_800E5988 .hword 0x0028, 0x0005, 0x0011, 0x0028, 0x0028, 0x0005, 0x0011, 0x0032 .hword 0x0028, 0x0005, 0x0011, 0x0032, 0x0028, 0x0000 +# Seems to be related to the Boos in Banshee Boardwalk glabel D_800E5A44 .hword 0x0017, 0x0000, 0x0011, 0xffce, 0x0028, 0x0014, 0x000d, 0xffd8 .hword 0x0028, 0x0000, 0x0011, 0xffec, 0x0028, 0xffec, 0x000a, 0x0000 @@ -392,6 +402,7 @@ glabel D_800E5A44 .hword 0x0028, 0x0000, 0x000d, 0x0046, 0x0028, 0x0000, 0x0011, 0xffce .hword 0x0028, 0x0000 +# Seems to be related to the Boos in Banshee Boardwalk glabel D_800E5B08 .hword 0x0018, 0xfff1, 0x000a, 0x0000, 0x0014, 0xfff6, 0x000a, 0xfff6 .hword 0x0014, 0x0000, 0x000a, 0xfff1, 0x0014, 0x000a, 0x000a, 0xfff6 @@ -407,6 +418,7 @@ glabel D_800E5B08 .hword 0x0014, 0x0000, 0x000a, 0x000f, 0x0014, 0xfff6, 0x000a, 0x000a .hword 0x0014, 0xfff1, 0x000a, 0x0000, 0x0014, 0x0000 +# Seems to be related to the Boos in Banshee Boardwalk glabel D_800E5BD4 .hword 0x0016, 0x0005, 0x0011, 0x0032, 0x001e, 0x0005, 0x000d, 0x0014 .hword 0x001e, 0x0000, 0x0011, 0x0000, 0x001e, 0x0014, 0x000a, 0x0000 @@ -421,6 +433,7 @@ glabel D_800E5BD4 .hword 0x001e, 0x0005, 0x0011, 0x0028, 0x001e, 0x0005, 0x0011, 0x0032 .hword 0x001e, 0x0005, 0x0011, 0x0032, 0x001e, 0x0000 +# Seems to be related to the Boos in Banshee Boardwalk glabel D_800E5C90 .hword 0x0017, 0x0000, 0x0011, 0xffce, 0x0019, 0x0014, 0x000d, 0xffd8 .hword 0x0019, 0x0000, 0x0011, 0xffec, 0x0019, 0xffec, 0x000a, 0x0000 @@ -464,7 +477,7 @@ glabel D_800E5DF4 .hword 0xf786, 0x0000, 0x02d3, 0x0400 .hword 0xf76f, 0x0000, 0x02f9, 0x0400 -glabel D_800E5E14 +glabel gHedgehogSpawns .hword 0xf96d, 0xffb0, 0xffa8, 0x0009 .hword 0xf99c, 0xffa3, 0xff6d, 0x0009 .hword 0xf9a4, 0xffaa, 0xff94, 0x0009 @@ -481,7 +494,7 @@ glabel D_800E5E14 .hword 0xf643, 0xffa2, 0xfe3a, 0x001c .hword 0xf653, 0xfffd, 0xffc7, 0x001c -glabel D_800E5E8C +glabel gHedgehogPatrolPoints .hword 0xf98e, 0xffaa, 0xff8e .hword 0xf983, 0xffa3, 0xff69 .hword 0xf97e, 0xffb5, 0xffc6 @@ -498,10 +511,11 @@ glabel D_800E5E8C .hword 0xf637, 0xffa7, 0xfe73 .hword 0xf615, 0xfffd, 0xffbe +# This is entirely fake, really there should be a `.balign 4` here glabel D_800E5EE6 .hword 0x0000 -glabel D_800E5EE8 +glabel gSnowmanSpawns .hword 0x02b9, 0x0000, 0xf96c, 0x0003, 0x0052, 0x0000, 0xf73b, 0x0005 .hword 0x001b, 0x0005, 0xf7ed, 0x0005, 0xfd70, 0x0000, 0xf939, 0x0005 .hword 0xfa27, 0x0000, 0xffad, 0x0008, 0xf995, 0x0000, 0xffe7, 0x0008 @@ -513,13 +527,14 @@ glabel D_800E5EE8 .hword 0xfd67, 0x0000, 0x033e, 0x000a, 0xfd43, 0x0003, 0x0355, 0x000a .hword 0xfda6, 0x0000, 0x03a1, 0x000a -glabel D_800E5F80 +glabel gCrabSpawns .hword 0xf8ef, 0xf97e, 0x0271, 0x0252, 0xf8c4, 0xf9ac, 0x02f5, 0x02e4 .hword 0xfa3a, 0xfa53, 0x0732, 0x0729, 0xfa76, 0xfa51, 0x07af, 0x07aa .hword 0xfa40, 0xfa77, 0x0840, 0x0834, 0xfa93, 0xfac9, 0x0868, 0x0858 .hword 0x00da, 0x0045, 0x02b5, 0x02b8, 0x00eb, 0x0018, 0x0210, 0x01f5 .hword 0x010c, 0x0065, 0x0196, 0x018a, 0x00df, 0x0056, 0x013e, 0x0134 +# Appears to be unused, may have been a different set of crabs at some point? glabel D_800E5FD0 .hword 0x017e, 0x012f, 0x0462, 0x0491, 0x008f, 0x011a, 0x042e, 0x03df .hword 0x0154, 0x00d7, 0x0363, 0x03a7, 0x007b, 0x00ba, 0x035a, 0x0337 @@ -529,6 +544,7 @@ glabel D_800E5FD0 .hword 0xff9c, 0x0064, 0x0032, 0xffce, 0x0064, 0xff6a, 0xffce, 0xff9c .hword 0xff9c, 0x0000 +# Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature glabel D_800E6034 .hword 0x0016, 0x0032, 0x00aa, 0x01f4, 0x0028, 0x0032, 0x0082, 0x00c8 .hword 0x0028, 0x0000, 0x00aa, 0x0000, 0x0028, 0x00c8, 0x0064, 0x0000 @@ -543,6 +559,7 @@ glabel D_800E6034 .hword 0x0028, 0x0032, 0x00aa, 0x0190, 0x0028, 0x0032, 0x00aa, 0x01f4 .hword 0x0028, 0x0032, 0x00aa, 0x01f4, 0x0028, 0x0000 +# Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature glabel D_800E60F0 .hword 0x0017, 0x0000, 0x00aa, 0xfe0c, 0x0028, 0x00c8, 0x0082, 0xfe70 .hword 0x0028, 0x0000, 0x00aa, 0xff38, 0x0028, 0xff38, 0x0064, 0x0000 @@ -558,6 +575,7 @@ glabel D_800E60F0 .hword 0x0028, 0x0000, 0x0082, 0x02bc, 0x0028, 0x0000, 0x00aa, 0xfe0c .hword 0x0028, 0x0000 +# Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature glabel D_800E61B4 .hword 0x0018, 0xff6a, 0x0064, 0x0000, 0x0014, 0xff96, 0x0096, 0xff96 .hword 0x0014, 0x0000, 0x0050, 0xff6a, 0x0014, 0x006a, 0x0096, 0xff96 @@ -573,6 +591,7 @@ glabel D_800E61B4 .hword 0x0014, 0x0000, 0x0064, 0x0096, 0x0014, 0xff96, 0x0064, 0x006a .hword 0x0014, 0xff6a, 0x0064, 0x0000, 0x0014, 0x0000 +# Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature glabel D_800E6280 .hword 0x0016, 0xffce, 0x00aa, 0xfe0c, 0x0028, 0xffce, 0x0082, 0xff38 .hword 0x0028, 0x0000, 0x00aa, 0x0000, 0x0028, 0xff38, 0x0064, 0x0000 @@ -590,26 +609,51 @@ glabel D_800E6280 glabel D_800E633C .word D_800E6034, D_800E60F0, D_800E61B4, D_800E6280 +# Might be Cheep Cheep related? glabel D_800E634C -.word 0xf37e0013, 0xfe22f37b, 0x0013fe31, 0xf3800013 -.word 0xfe140000 +.hword 0xf37e, 0x0013, 0xfe22 +.hword 0xf37b, 0x0013, 0xfe31 +.hword 0xf380, 0x0013, 0xfe14 -glabel D_800E6360 -.hword 0x0303, 0x0014, 0xf81a, 0x0327, 0x000f, 0xf7f1, 0x034f, 0x0012 -.hword 0xf808, 0x0391, 0x000e, 0xf7fa, 0x03ab, 0x0015, 0xf833, 0x03ad -.hword 0x0011, 0xf818, 0x03e2, 0x0011, 0xf836, 0x035f, 0x0016, 0xf826 -.hword 0x05dc, 0x0002, 0x0474, 0x05e6, 0x000f, 0x041a, 0x0649, 0x0015 -.hword 0x03a7, 0x0509, 0x0003, 0x04f5, 0x05bc, 0x0016, 0x0416, 0x0564 -.hword 0x000c, 0x0482, 0x0511, 0x0013, 0x0492, 0x0635, 0x000b, 0x03ec -.hword 0x0586, 0x0003, 0x04a1, 0x057d, 0x0004, 0x04e6, 0x05b7, 0x0008 -.hword 0x045e, 0x02bd, 0x0002, 0x04ff, 0x032b, 0x0008, 0x04fe, 0x0317 -.hword 0x0010, 0x04cd, 0x036c, 0x000f, 0x04f2, 0x03d8, 0x0017, 0x04e0 -.hword 0x037b, 0x0014, 0x04da, 0x0398, 0x000f, 0x0518, 0x0337, 0x0006 -.hword 0x052f, 0x02cd, 0x0008, 0x04d7, 0x02b7, 0x0013, 0x0498, 0x0274 -.hword 0x0008, 0x04a7, 0x02d4, 0x0004, 0x053b +.balign 4 +glabel gMoleSpawns +.hword 0x0303, 0x0014, 0xf81a +.hword 0x0327, 0x000f, 0xf7f1 +.hword 0x034f, 0x0012, 0xf808 +.hword 0x0391, 0x000e, 0xf7fa +.hword 0x03ab, 0x0015, 0xf833 +.hword 0x03ad, 0x0011, 0xf818 +.hword 0x03e2, 0x0011, 0xf836 +.hword 0x035f, 0x0016, 0xf826 +.hword 0x05dc, 0x0002, 0x0474 +.hword 0x05e6, 0x000f, 0x041a +.hword 0x0649, 0x0015, 0x03a7 +.hword 0x0509, 0x0003, 0x04f5 +.hword 0x05bc, 0x0016, 0x0416 +.hword 0x0564, 0x000c, 0x0482 +.hword 0x0511, 0x0013, 0x0492 +.hword 0x0635, 0x000b, 0x03ec +.hword 0x0586, 0x0003, 0x04a1 +.hword 0x057d, 0x0004, 0x04e6 +.hword 0x05b7, 0x0008, 0x045e +.hword 0x02bd, 0x0002, 0x04ff +.hword 0x032b, 0x0008, 0x04fe +.hword 0x0317, 0x0010, 0x04cd +.hword 0x036c, 0x000f, 0x04f2 +.hword 0x03d8, 0x0017, 0x04e0 +.hword 0x037b, 0x0014, 0x04da +.hword 0x0398, 0x000f, 0x0518 +.hword 0x0337, 0x0006, 0x052f +.hword 0x02cd, 0x0008, 0x04d7 +.hword 0x02b7, 0x0013, 0x0498 +.hword 0x0274, 0x0008, 0x04a7 +.hword 0x02d4, 0x0004, 0x053b + +# This is entirely fake, there should be a `.balign 4` here glabel D_800E641A .hword 0x0000 +# Referenced by D_800E6724, which is unused glabel D_800E641C .hword 0x0016, 0x0014, 0x0000, 0x00c8, 0x0050, 0x0014, 0x0000, 0x0050 .hword 0x0050, 0x0000, 0x0000, 0x0000, 0x0050, 0x0050, 0x0000, 0x0000 @@ -624,6 +668,7 @@ glabel D_800E641C .hword 0x0050, 0x0014, 0x0000, 0x00a0, 0x0050, 0x0014, 0x0000, 0x00c8 .hword 0x0050, 0x0014, 0x0000, 0x00c8, 0x0050, 0x0000 +# Referenced by D_800E6724, which is unused glabel D_800E64D8 .hword 0x0017, 0x0000, 0x0000, 0xffce, 0x0050, 0x0014, 0x0000, 0xffd8 .hword 0x0050, 0x0000, 0x0000, 0xffec, 0x0050, 0xffec, 0x0000, 0x0000 @@ -639,6 +684,7 @@ glabel D_800E64D8 .hword 0x0050, 0x0000, 0x0000, 0x0046, 0x0050, 0x0000, 0x0000, 0xffce .hword 0x0050, 0x0000 +# Something related to the penguins in Sherbet Land, not sure of its exact nature glabel D_800E659C .hword 0x0018, 0xffec, 0x0000, 0x0000, 0x0050, 0xfff2, 0x0000, 0xfff2 .hword 0x0050, 0x0000, 0x0000, 0xffec, 0x0050, 0x000e, 0x0000, 0xfff2 @@ -654,6 +700,7 @@ glabel D_800E659C .hword 0x0050, 0x0000, 0x0000, 0x0014, 0x0050, 0xfff2, 0x0000, 0x000e .hword 0x0050, 0xffec, 0x0000, 0x0000, 0x0050, 0x0000 +# Something related to the penguins in Sherbet Land, not sure of its exact nature glabel D_800E6668 .hword 0x0016, 0x0005, 0x0000, 0x0032, 0x0050, 0x0005, 0x0000, 0x0014 .hword 0x0050, 0x0000, 0x0000, 0x0000, 0x0050, 0x0014, 0x0000, 0x0000 @@ -668,6 +715,7 @@ glabel D_800E6668 .hword 0x0050, 0x0005, 0x0000, 0x0028, 0x0050, 0x0005, 0x0000, 0x0032 .hword 0x0050, 0x0005, 0x0000, 0x0032, 0x0050, 0x0000 +# Appears to be unused glabel D_800E6724 .word D_800E641C, D_800E64D8 @@ -677,18 +725,23 @@ glabel D_800E672C # These should be floats, really # I believe they're the positions of the static neon signs in rainbow road glabel D_800E6734 -.hword 0x44b4, 0x6000, 0x4482, 0x8000, 0xc5ab, 0x3000 -.hword 0x44d1, 0xc000, 0x447d, 0x0000, 0xc597, 0x4000 -.hword 0xc575, 0x4000, 0x4466, 0x4000, 0x4520, 0x6000 -.hword 0xc54e, 0xf000, 0x4445, 0x8000, 0x455c, 0x4000 -.hword 0xc4a0, 0x8000, 0x44a7, 0xa000, 0x458d, 0x7800 -.hword 0x450d, 0xc000, 0x4482, 0x2000, 0x458b, 0x4000 -.hword 0x4530, 0x4000, 0x448a, 0xa000, 0x44f8, 0x2000 +.float 1443.0, 1044.0, -5478.0 +.float 1678.0, 1012.0, -4840.0 +.float -3924.0, 921.0, 2566.0 +.float -3311.0, 790.0, 3524.0 +.float -1284.0, 1341.0, 4527.0 +.float 2268.0, 1041.0, 4456.0 +.float 2820.0, 1109.0, 1985.0 -glabel D_800E6788 -.hword 0xfda6, 0xffa0, 0x0068, 0xfd1f, 0xffa1, 0x0136, 0xfcb0, 0xffa6 -.hword 0x021d, 0xfca3, 0xffb0, 0x0302, 0xfd43, 0xffc4, 0x03b0, 0xfe52 -.hword 0xffd8, 0x039c, 0xff25, 0xffed, 0x0320, 0xffca, 0xfff8, 0x0270 +glabel gTorchSpawns +.hword 0xfda6, 0xffa0, 0x0068 +.hword 0xfd1f, 0xffa1, 0x0136 +.hword 0xfcb0, 0xffa6, 0x021d +.hword 0xfca3, 0xffb0, 0x0302 +.hword 0xfd43, 0xffc4, 0x03b0 +.hword 0xfe52, 0xffd8, 0x039c +.hword 0xff25, 0xffed, 0x0320 +.hword 0xffca, 0xfff8, 0x0270 glabel D_800E67B8 .hword 0x000d, 0x0096, 0x00cc, 0xfe0c, 0x0014, 0x0064, 0x0068, 0xfed4 @@ -700,6 +753,7 @@ glabel D_800E67B8 .hword 0x0000, 0xfc19, 0x03eb, 0x01f4, 0x0000, 0xfc19, 0x03eb, 0x01f4 .hword 0x0000, 0xfc19, 0x03eb, 0x01f4, 0x0000, 0x0000 +# Appears to be related to Lakitu waving the checkered flag glabel D_800E6834 .hword 0x0014, 0x0014, 0x0012, 0x001e, 0x0028, 0x0000, 0x0012, 0x0014 .hword 0x0028, 0xffec, 0x0012, 0x000a, 0x0028, 0x0000, 0x0012, 0x0000 @@ -720,6 +774,7 @@ glabel D_800E6834 .hword 0x0068, 0xff38, 0x0000, 0x0000, 0x00cc, 0xfe0c, 0x0000, 0x0000 .hword 0x00cc, 0xfe0c, 0x0000, 0x0000 +# Appears to be related to Lakitu Second Lap animation glabel D_800E694C .hword 0x000b, 0x0032, 0x0014, 0x0050, 0x000a, 0x0014, 0x0013, 0x0028 .hword 0x000a, 0x0000, 0x0012, 0x001e, 0x000a, 0xfff8, 0x0011, 0x0014 @@ -729,6 +784,7 @@ glabel D_800E694C .hword 0x000a, 0xffc4, 0x0013, 0x0064, 0x000a, 0xffc4, 0x0013, 0x0064 .hword 0x000a, 0x0000 +# Appears to be related to Lakitu Reverse animation glabel D_800E69B0 .hword 0x0007, 0x001e, 0x000e, 0x0032, 0x0028, 0x000a, 0x0010, 0x0014 .hword 0x0028, 0x0005, 0x0011, 0x000a, 0x003c, 0x0002, 0x0012, 0x0000 @@ -736,6 +792,7 @@ glabel D_800E69B0 .hword 0x0000, 0x0000, 0x0012, 0x0000, 0x0000, 0x0000, 0x0012, 0x0000 .hword 0x0000, 0x0000 +# Might be related to Lakitu doing the countdown? glabel D_800E69F4 .hword 0x0007, 0x0000, 0x0012, 0xfffb, 0x0014, 0x0000, 0x0012, 0xfff6 .hword 0x0014, 0x0000, 0x0012, 0x0005, 0x0010, 0xfff6, 0x0017, 0x000a diff --git a/include/objects.h b/include/objects.h index 55f14e5ce..782b00a2e 100644 --- a/include/objects.h +++ b/include/objects.h @@ -179,6 +179,7 @@ extern s32 gItemWindowObjectByPlayerId[]; extern s16 D_80165750; // These seem to be limits on different object types in Moo Moo Farm // See func_80070780 in code_8006E9C0.c +// Maybe max number of active moles in a given group of moles? extern s32 D_8018D1C8; extern s32 D_8018D1D0; extern s32 D_8018D1D8; @@ -195,10 +196,53 @@ extern Collision D_8018C0B0[]; * The objects found at the indices in each list appears to be course dependent **/ +#define NUM_YV_FLAG_POLES 4 + +typedef struct { + /* 0x0 */ Vec3s pos; + /* 0x6 */ u16 rot; +} YVFlagPoleSpawn; // size = 0x8; + +extern YVFlagPoleSpawn D_800E5DF4[]; + #define NUM_CRABS 0xA -#define NUM_NEON_SIGNS 0xA + +typedef struct { + /* 0x0 */ s16 startX; + /* 0x2 */ s16 patrolX; + /* 0x4 */ s16 startZ; + /* 0x6 */ s16 patrolZ; +} CrabSpawn; + +extern CrabSpawn gCrabSpawns[]; + +#define NUM_THWOMPS_50CC 8 +#define NUM_THWOMPS_100CC_EXTRA 11 +#define NUM_THWOMPS_150CC 12 + +extern Vec3f D_800E6734[]; + +typedef struct { + /* 0x0 */ s16 startX; + /* 0x2 */ s16 startZ; + /* 0x4 */ s16 unk_4; // Group Id? + /* 0x6 */ s16 unk_6; // Starting State? +} ThwompSpawn; // size = 0x8; + +extern ThwompSpawn gThomwpSpawns50CC[]; +extern ThwompSpawn gThwompSpawns100CCExtra[]; +extern ThwompSpawn gThomwpSpawns150CC[]; +extern ThwompSpawn *gThowmpSpawnList; + +extern s16 gNumActiveThwomps; + +#define NUM_NEON_SIGNS 10 +#define NUM_CHAIN_CHOMPS 3 + +#define NUM_PENGUINS 15 /** + * Snowmen bodies in FrappeSnowland * Crabs in Koopa Troopa Beach * Hot air balloon in Luigi Raceway? * Neon signs in Rainbow Road? @@ -207,25 +251,68 @@ extern Collision D_8018C0B0[]; * Flag Poles in Yoshi Valley? **/ extern s32 D_80183EA0[]; + + +#define NUM_SEAGULLS 10 +#define NUM_SNOWMEN 19 +#define NUM_HEDGEHOGS 15 + +typedef struct { + /* 0x0 */ Vec3s pos; + /* 0x6 */ s16 unk_6; // Group Id? +} SnowmanSpawn; // size = 0x8; + +extern SnowmanSpawn gSnowmanSpawns[]; + +typedef struct { + /* 0x0 */ Vec3s pos; + /* 0x6 */ s16 unk_06; // Group Id? +} HegdehogSpawn; // size = 0x8; + +extern HegdehogSpawn gHedgehogSpawns[]; +extern Vec3s gHedgehogPatrolPoints[]; + /** - * Snowmen in Frappe Snowland + * Snowmen heads in Frappe Snowland * Chain Chomps in RaindbowRoad? * Trophy in award ceremony? * Seagulls in Koopa Troopa Beach? + * Hedgehogs in Yoshi Valley? + * Spawn for big fire breath in Bowser's Castle **/ extern s32 D_80183F28[]; #define NUM_BOOS 0xA +#define NUM_FIRE_BREATHS 4 + +extern Vec3s gFireBreathsSpawns[]; /** * Boos in Banshee Boardwalk + * Spawners for the 4 small fire breaths inside Bowser's Castle **/ extern s32 D_8018BFA8[]; + +// Appears to go entirely unused? extern s32 D_8018C030[]; #define D_8018C1B0_SIZE 128 -#define NUM_MOLES 0x1F +#define NUM_MAX_MOLES 0x1F +#define NUM_GROUP1_MOLES 8 +#define NUM_GROUP2_MOLES 11 +#define NUM_GROUP3_MOLES 12 #define NUM_SNOWFLAKES 0x32 + +extern Vec3s gMoleSpawns[]; +// Exact use unknown, something related to the mole groups +// Maybe be indicating that a given mole in a given group is active? +extern s8 D_8018D198[]; +extern s8 D_8018D1A8[]; +extern s8 D_8018D1B8[]; + +// Unknown object index, only set for Kalimari Desert, never read +extern s32 D_8018CF10; + /** * List of object list indices used for: * Moles in Moo Moo Farm @@ -259,6 +346,12 @@ extern s16 D_80165730; extern s16 D_80165738; #define D_8018C870_SIZE 0x40 + +#define NUM_TORCHES 8 + +// This should really be `extern Vec3s gTorchSpawns[];` +extern s16 gTorchSpawns[1]; // todo: fix this extern + /** * List of object list indices. Used both for the fires in the DK Jungle cave * and, seemingly for the trail that shells leave behind them. diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 5b1245756..74c42dce4 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -4,7 +4,9 @@ #include #include "code_800029B0.h" +#include "code_80057C60.h" #include "code_8006E9C0.h" +#include "code_80086E70.h" #include "code_80071F00.h" #include "objects.h" #include "bomb_kart.h" @@ -476,13 +478,8 @@ extern bool8 D_80165818; extern s8 D_80165820; extern s8 D_80165828; -struct UnkStr80165832 { - s8 unk0; - s8 unk1; -}; - -extern struct UnkStr80165832 D_80165800; -extern struct UnkStr80165832 D_80165832; +extern s8 D_80165800[2]; +extern s8 D_80165832[2]; void func_8006F824(s32 arg0) { D_80165808 = D_801657E4; @@ -490,8 +487,8 @@ void func_8006F824(s32 arg0) { D_80165820 = D_801657F0; D_80165818 = D_801657E8; D_80165828 = D_801657F8; - D_80165832.unk0 = D_80165800.unk0; - D_80165832.unk1 = D_80165800.unk1; + D_80165832[0] = D_80165800[0]; + D_80165832[1] = D_80165800[1]; if ((arg0 != 0) && (gIsGamePaused == 0)) { play_sound2(SOUND_ACTION_PING); } @@ -994,347 +991,146 @@ void func_80070714(void) { D_80165748 = 0xA; } -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 -extern ? *D_80165758; -extern ? D_80183EB0; -extern ? D_80183EC8; -extern ? D_80183EDC; -extern ? D_80183F34; -extern ? D_80183F3C; -extern ? D_80183F50; -extern ? D_8018C278; -extern ? D_8018C404; -extern ? D_8018C5F0; -extern ? D_8018C6B0; -extern s32 D_8018CF10; -extern s8 D_8018D198; -extern s8 D_8018D1A8; -extern ? D_8018D1B3; -extern s8 D_8018D1B8; -extern ? D_8018D1C4; -s16 gCurrentCourseId; /* unable to generate initializer */ -static ? D_800E5728; /* unable to generate initializer */ -static ? D_800E5854; /* unable to generate initializer */ -static ? D_800E5894; /* unable to generate initializer */ -static ? D_800E58EC; /* unable to generate initializer */ -static ? D_800E5E14; /* unable to generate initializer */ -static ? D_800E5E8C; /* unable to generate initializer */ -static ? D_800E5EE6; /* unable to generate initializer */ -static ? D_800E5EE8; /* unable to generate initializer */ -static ? D_800E5F80; /* unable to generate initializer */ -static ? D_800E5FD0; /* unable to generate initializer */ -static ? D_800E6360; /* unable to generate initializer */ -static ? D_800E641A; /* unable to generate initializer */ - void func_80070780(void) { - Objects *sp4C; - ? *sp48; - ? *sp44; - ? *var_s1_2; - ? *var_s1_4; - ? *var_s2_6; - ? *var_v1; - ? *var_v1_2; - ? *var_v1_3; - Objects *temp_v0; - Objects *temp_v0_2; - Objects *temp_v0_3; - Objects *temp_v0_4; - Objects *temp_v0_5; - Objects *temp_v0_6; - Objects *temp_v0_7; - Objects *temp_v0_8; - Objects *temp_v0_9; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f0_4; - f32 temp_f0_5; - f32 temp_f18; - f32 temp_f4; - f32 temp_f4_2; - f32 temp_f6; - f64 temp_f8; - s16 *temp_v1; - s16 temp_f10; - s16 temp_f6_2; - s16 temp_f8_2; - s16 temp_t1; - s16 temp_t4; - s16 temp_t5; - s16 temp_t5_2; - s32 *var_s0; - s32 *var_s0_10; - s32 *var_s0_2; - s32 *var_s0_3; - s32 *var_s0_4; - s32 *var_s0_8; - s32 *var_s0_9; - s32 *var_s1; - s32 *var_s1_10; - s32 *var_s1_11; - s32 *var_s1_12; - s32 *var_s1_13; - s32 *var_s1_14; - s32 *var_s1_3; - s32 *var_s1_5; - s32 *var_s1_6; - s32 *var_s1_7; - s32 *var_s1_8; - s32 *var_s1_9; - s32 *var_s2_2; - s32 *var_s2_3; - s32 *var_s2_4; - s32 *var_s2_5; - s32 *var_s2_7; s32 temp_s0; - s32 temp_s0_10; - s32 temp_s0_2; - s32 temp_s0_3; - s32 temp_s0_4; - s32 temp_s0_5; - s32 temp_s0_6; - s32 temp_s0_7; - s32 temp_s0_8; - s32 temp_s0_9; - s32 temp_t9; - s32 var_s2; s32 var_s3; - s32 var_s3_2; - s32 var_s3_3; - s32 var_s3_4; - s32 var_s3_5; - s8 *var_s0_5; - s8 *var_s0_6; - s8 *var_s0_7; - switch ((u16) gCurrentCourseId) { + switch (gCurrentCourseId) { case 0: if (gGamestate != 9) { if (gModeSelection == 0) { func_80070714(); } - var_s0 = D_8018C630; - var_s3 = 0; - if (D_80165738 > 0) { - do { - find_unused_obj_index(var_s0); - func_800723A4(*var_s0, 0); - var_s3 += 1; - var_s0 += 4; - } while (var_s3 < D_80165738); - return; + for (var_s3 = 0; var_s3 < D_80165738; var_s3++) { + find_unused_obj_index(&D_8018C630[var_s3]); + func_800723A4(D_8018C630[var_s3], 0); } - } else { - default: - return; } break; case 2: - D_80165750 = 0x000B; - D_80165758 = &D_800E5894; + gNumActiveThwomps = NUM_THWOMPS_100CC_EXTRA; + gThowmpSpawnList = gThwompSpawns100CCExtra; switch (gCCSelection) { /* switch 1; irregular */ case 1: /* switch 1 */ case 3: /* switch 1 */ break; case 0: /* switch 1 */ - D_80165750 = 8; - D_80165758 = &D_800E5854; + gNumActiveThwomps = NUM_THWOMPS_50CC; + gThowmpSpawnList = gThomwpSpawns50CC; break; case 2: /* switch 1 */ - D_80165750 = 0x000C; - D_80165758 = &D_800E58EC; + gNumActiveThwomps = NUM_THWOMPS_150CC; + gThowmpSpawnList = gThomwpSpawns150CC; break; } - var_s1 = D_80183EA0; - var_s3_2 = 0; - if (D_80165750 > 0) { - var_s2 = 0; - do { - temp_s0 = *var_s1; - func_800723A4(temp_s0, 0); - temp_v1 = D_80165758 + var_s2; - var_s3_2 += 1; - temp_f6 = (f32) temp_v1->unk0; - temp_v0 = &gObjectList[temp_s0]; - var_s2 += 8; - var_s1 += 4; - temp_v0->unk_010[0] = temp_f6 * D_8018D01C; - temp_v0->unk_010[2] = (f32) temp_v1->unk2; - temp_v0->unk_0D5 = (u8) temp_v1->unk4; - temp_v0->unk_0A0 = temp_v1->unk6; - } while (var_s3_2 < D_80165750); - var_s3_2 = 0; + for (var_s3 = 0; var_s3 < gNumActiveThwomps; var_s3++) { + temp_s0 = D_80183EA0[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].unk_010[0] = gThowmpSpawnList[var_s3].startX * D_8018D01C; + gObjectList[temp_s0].unk_010[2] = gThowmpSpawnList[var_s3].startZ; + gObjectList[temp_s0].unk_0D5 = gThowmpSpawnList[var_s3].unk_4; + gObjectList[temp_s0].unk_0A0 = gThowmpSpawnList[var_s3].unk_6; } - temp_s0_2 = *D_80183F28; - func_800723A4(temp_s0_2, 0); - var_s1_2 = &D_800E5728; - temp_v0_2 = &gObjectList[temp_s0_2]; - var_s2_2 = D_8018BFA8; - temp_v0_2->pos[1] = 80.0f; - temp_v0_2->pos[0] = (f32) ((f64) D_8018D01C * -68.0); - temp_v0_2->pos[2] = -1840.0f; - do { - temp_s0_3 = *var_s2_2; - func_800723A4(temp_s0_3, 0); - temp_t9 = var_s3_2 & 1; - temp_v0_3 = &gObjectList[temp_s0_3]; - var_s3_2 += 1; - var_s2_2 += 4; - temp_v0_3->pos[1] = (f32) var_s1_2->unk2; - temp_v0_3->pos[0] = (f32) var_s1_2->unk0 * D_8018D01C; - temp_v0_3->unk_0BE[1] = 0; - temp_v0_3->pos[2] = (f32) var_s1_2->unk4; - if (temp_t9 != 0) { - temp_v0_3->unk_0BE[1] = 0x8000; + // Handle the big statue's fire breath + temp_s0 = D_80183F28[0]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].pos[0] = -68.0 * D_8018D01C; + gObjectList[temp_s0].pos[1] = 80.0f; + gObjectList[temp_s0].pos[2] = -1840.0f; + // Handle the smaller statues' fire breath + for (var_s3 = 0; var_s3 < NUM_FIRE_BREATHS; var_s3++) { + temp_s0 = D_8018BFA8[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].pos[0] = gFireBreathsSpawns[var_s3][0] * D_8018D01C; + gObjectList[temp_s0].pos[1] = gFireBreathsSpawns[var_s3][1]; + gObjectList[temp_s0].pos[2] = gFireBreathsSpawns[var_s3][2]; + gObjectList[temp_s0].unk_0BE[1] = 0; + if (var_s3 % 2U) { + gObjectList[temp_s0].unk_0BE[1] += 0x8000; } - var_s1_2 += 6; - } while (var_s3_2 < 4); - var_s0_2 = D_8018C030; - do { - delete_object(var_s0_2); - var_s0_2 += 4; - } while (var_s0_2 != D_8018C0B0); - return; + } + for (var_s3 = 0; var_s3 < 32; var_s3++) { + delete_object(&D_8018C030[var_s3]); + } + break; case 3: if (gGamestate != 9) { - temp_s0_4 = D_80183EA0->unk0; - init_texture_object(temp_s0_4, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040); - temp_v0_4 = &gObjectList[temp_s0_4]; - temp_v0_4->unk_0B2[0] = 0; - temp_v0_4->unk_0B2[1] = 0; - temp_v0_4->unk_0B2[2] = 0x8000; - func_800723A4(D_80183EA0->unk4, 0); - func_800723A4(D_80183EA0->unk8, 0); - return; + temp_s0 = D_80183EA0[0]; + init_texture_object(temp_s0, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040); + gObjectList[temp_s0].unk_0B2[0] = 0; + gObjectList[temp_s0].unk_0B2[1] = 0; + gObjectList[temp_s0].unk_0B2[2] = 0x8000; + func_800723A4(D_80183EA0[1], 0); + func_800723A4(D_80183EA0[2], 0); } break; case 4: - var_s1_3 = D_80183EA0; - do { - func_800723A4(*var_s1_3, 0); - var_s1_3 += 4; - } while ((u32) var_s1_3 < (u32) &D_80183EB0); - var_s2_3 = D_80183F28; + for (var_s3 = 0; var_s3 < 4; var_s3++) { + func_800723A4(D_80183EA0[var_s3], 0); + } if (gGamestate != 9) { - var_v1 = &D_800E5E8C; - var_s1_4 = &D_800E5E14; - do { - temp_s0_5 = *var_s2_3; - sp44 = var_v1; - func_800723A4(temp_s0_5, 0); - temp_f0 = (f32) var_s1_4->unk0 * D_8018D01C; - temp_v0_5 = &gObjectList[temp_s0_5]; - temp_v0_5->unk_010[0] = temp_f0; - temp_v0_5->pos[0] = temp_f0; - temp_f10 = var_s1_4->unk4; - temp_t1 = var_s1_4->unk6; - temp_t5 = var_v1->unk4; - temp_f0_2 = (f32) ((f64) var_s1_4->unk2 + 6.0); - temp_f4 = (f32) var_v1->unk0 * D_8018D01C; - var_v1 += 6; - var_s2_3 += 4; - temp_v0_5->unk_044 = temp_f0_2; - temp_v0_5->pos[1] = temp_f0_2; - var_s1_4 += 8; - temp_f0_3 = (f32) temp_f10; - temp_v0_5->unk_0D5 = (u8) temp_t1; - temp_v0_5->unk_09E = temp_t5; - temp_v0_5->unk_010[2] = temp_f0_3; - temp_v0_5->pos[2] = temp_f0_3; - temp_v0_5->unk_09C = (s16) (s32) temp_f4; - } while (var_v1 != &D_800E5EE6); - return; + for (var_s3 = 0; var_s3 < NUM_HEDGEHOGS; var_s3++) { + temp_s0 = D_80183F28[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].pos[0] = gObjectList[temp_s0].unk_010[0] = gHedgehogSpawns[var_s3].pos[0] * D_8018D01C; + gObjectList[temp_s0].pos[1] = gObjectList[temp_s0].unk_044 = gHedgehogSpawns[var_s3].pos[1] + 6.0; + gObjectList[temp_s0].pos[2] = gObjectList[temp_s0].unk_010[2] = gHedgehogSpawns[var_s3].pos[2]; + gObjectList[temp_s0].unk_0D5 = gHedgehogSpawns[var_s3].unk_06; + gObjectList[temp_s0].unk_09C = gHedgehogPatrolPoints[var_s3][0] * D_8018D01C; + gObjectList[temp_s0].unk_09E = gHedgehogPatrolPoints[var_s3][2]; + } } break; case 5: - var_s1_5 = D_8018C1B0; - do { - find_unused_obj_index(var_s1_5); - var_s1_5 += 4; - } while ((u32) var_s1_5 < (u32) &D_8018C278); - var_s1_6 = D_80183EA0; + for (var_s3 = 0; var_s3 < NUM_SNOWFLAKES; var_s3++) { + find_unused_obj_index(&D_8018C1B0[var_s3]); + } if (gGamestate != 9) { - var_v1_2 = &D_800E5EE8; - var_s2_4 = D_80183F28; - do { - temp_s0_6 = *var_s2_4; - sp44 = var_v1_2; - func_800723A4(temp_s0_6, 0); - temp_v0_6 = &gObjectList[temp_s0_6]; - temp_s0_7 = *var_s1_6; - temp_v0_6->unk_010[0] = (f32) var_v1_2->unk0 * D_8018D01C; - temp_v0_6->unk_010[2] = (f32) var_v1_2->unk4; - temp_v0_6->unk_010[1] = (f32) ((f64) var_v1_2->unk2 + 5.0 + 3.0); - func_800723A4(temp_s0_7, 0); - temp_t4 = var_v1_2->unk4; - temp_v0_7 = &gObjectList[temp_s0_7]; - temp_f8 = (f64) var_v1_2->unk2; - temp_f4_2 = (f32) var_v1_2->unk0 * D_8018D01C; - temp_t5_2 = var_v1_2->unk6; - var_v1_2 += 8; - var_s1_6 += 4; - var_s2_4 += 4; - temp_v0_7->unk_0D5 = (u8) temp_t5_2; - temp_v0_7->unk_010[0] = temp_f4_2; - temp_v0_7->unk_010[1] = (f32) (temp_f8 + 3.0); - temp_v0_7->unk_010[2] = (f32) temp_t4; - } while (var_v1_2 != &D_800E5F80); - return; + for (var_s3 = 0; var_s3 < NUM_SNOWMEN; var_s3++) { + temp_s0 = D_80183F28[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].unk_010[0] = gSnowmanSpawns[var_s3].pos[0] * D_8018D01C; + gObjectList[temp_s0].unk_010[1] = gSnowmanSpawns[var_s3].pos[1] + 5.0 + 3.0; + gObjectList[temp_s0].unk_010[2] = gSnowmanSpawns[var_s3].pos[2]; + temp_s0 = D_80183EA0[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].unk_010[0] = gSnowmanSpawns[var_s3].pos[0] * D_8018D01C; + gObjectList[temp_s0].unk_010[1] = gSnowmanSpawns[var_s3].pos[1] + 3.0; + gObjectList[temp_s0].unk_010[2] = gSnowmanSpawns[var_s3].pos[2]; + gObjectList[temp_s0].unk_0D5 = gSnowmanSpawns[var_s3].unk_6; + } } break; case 6: - var_s1_7 = D_80183EA0; if (gGamestate != 9) { - var_v1_3 = &D_800E5F80; - do { - temp_s0_8 = *var_s1_7; - sp48 = var_v1_3; - func_800723A4(temp_s0_8, 0); - temp_f6_2 = var_v1_3->unk4; - temp_v0_8 = &gObjectList[temp_s0_8]; - temp_f8_2 = var_v1_3->unk6; - temp_f18 = (f32) var_v1_3->unk2; - temp_f0_4 = (f32) var_v1_3->unk0 * D_8018D01C; - var_v1_3 += 8; - var_s1_7 += 4; - temp_v0_8->unk_010[0] = temp_f0_4; - temp_v0_8->pos[0] = temp_f0_4; - temp_f0_5 = (f32) temp_f6_2; - temp_v0_8->unk_01C[0] = temp_f18 * D_8018D01C; - temp_v0_8->unk_010[2] = temp_f0_5; - temp_v0_8->pos[2] = temp_f0_5; - temp_v0_8->unk_01C[2] = (f32) temp_f8_2; - } while (var_v1_3 != &D_800E5FD0); - } - var_s2_5 = D_80183F28; - do { - temp_s0_9 = *var_s2_5; - func_800723A4(temp_s0_9, 0); - var_s2_5 += 4; - if ((u32) var_s2_5 < (u32) &D_80183F3C) { - gObjectList[temp_s0_9].unk_0D5 = 0; - } else { - gObjectList[temp_s0_9].unk_0D5 = 1; + for (var_s3 = 0; var_s3 < NUM_CRABS; var_s3++) { + temp_s0 = D_80183EA0[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].pos[0] = gObjectList[temp_s0].unk_010[0] = gCrabSpawns[var_s3].startX * D_8018D01C; + gObjectList[temp_s0].unk_01C[0] = gCrabSpawns[var_s3].patrolX * D_8018D01C; + + gObjectList[temp_s0].pos[2] = gObjectList[temp_s0].unk_010[2] = gCrabSpawns[var_s3].startZ; + gObjectList[temp_s0].unk_01C[2] = gCrabSpawns[var_s3].patrolZ; } - } while (var_s2_5 != &D_80183F50); - return; + } + for (var_s3 = 0; var_s3 < NUM_SEAGULLS; var_s3++) { + temp_s0 = D_80183F28[var_s3]; + func_800723A4(temp_s0, 0); + if (var_s3 < (NUM_SEAGULLS / 2)) { + gObjectList[temp_s0].unk_0D5 = 0; + } else { + gObjectList[temp_s0].unk_0D5 = 1; + } + } + break; case 7: if (gGamestate != 9) { if (gModeSelection == 0) { func_80070714(); } - var_s0_3 = D_8018C630; - var_s3_3 = 0; - if (D_80165738 > 0) { - do { - find_unused_obj_index(var_s0_3); - func_800723A4(*var_s0_3, 0); - var_s3_3 += 1; - var_s0_3 += 4; - } while (var_s3_3 < D_80165738); - return; + for (var_s3 = 0; var_s3 < D_80165738; var_s3++) { + find_unused_obj_index(&D_8018C630[var_s3]); + func_800723A4(D_8018C630[var_s3], 0); } } break; @@ -1344,29 +1140,22 @@ void func_80070780(void) { func_80070714(); } D_80165898 = 0; - func_800723A4(D_80183EA0->unk0, 0); - var_s0_4 = D_8018C630; - var_s3_4 = 0; - if (D_80165738 > 0) { - do { - find_unused_obj_index(var_s0_4); - func_800723A4(*var_s0_4, 0); - var_s3_4 += 1; - var_s0_4 += 4; - } while (var_s3_4 < D_80165738); - return; + func_800723A4(D_80183EA0[0], 0); + for (var_s3 = 0; var_s3 < D_80165738; var_s3++) { + find_unused_obj_index(&D_8018C630[var_s3]); + func_800723A4(D_8018C630[var_s3], 0); } } break; case 9: if (gGamestate != 9) { - var_s1_8 = D_80183EA0; if ((gPlayerCount == 1) || ((gPlayerCount == 2) && (gModeSelection == (s32) 2))) { switch (gCCSelection) { /* switch 2; irregular */ case 0: /* switch 2 */ D_8018D1C8 = 4; D_8018D1D0 = 6; - goto block_75; + D_8018D1D8 = 6; + break; case 1: /* switch 2 */ D_8018D1C8 = 5; D_8018D1D0 = 8; @@ -1375,7 +1164,7 @@ void func_80070780(void) { case 2: /* switch 2 */ D_8018D1C8 = 5; D_8018D1D0 = 8; - D_8018D1D8 = 0x0000000A; + D_8018D1D8 = 10; break; case 3: /* switch 2 */ D_8018D1C8 = 5; @@ -1386,111 +1175,75 @@ void func_80070780(void) { } else { D_8018D1C8 = 4; D_8018D1D0 = 6; -block_75: D_8018D1D8 = 6; } - var_s0_5 = &D_8018D198; - do { - *var_s0_5 = 0; - find_unused_obj_index(var_s1_8); - var_s0_5 += 1; - var_s1_8 += 4; - } while ((u32) var_s0_5 < (u32) &D_8018D1A0); - var_s0_6 = &D_8018D1A8; - var_s1_9 = D_80183EA0; - do { - *var_s0_6 = 0; - find_unused_obj_index(var_s1_9); - var_s0_6 += 1; - var_s1_9 += 4; - } while ((u32) var_s0_6 < (u32) &D_8018D1B3); - var_s0_7 = &D_8018D1B8; - var_s1_10 = D_80183EA0; - do { - *var_s0_7 = 0; - find_unused_obj_index(var_s1_10); - var_s0_7 += 1; - var_s1_10 += 4; - } while ((u32) var_s0_7 < (u32) &D_8018D1C4); - var_s2_6 = &D_800E6360; - var_s1_11 = D_8018C1B0; - do { - find_unused_obj_index(var_s1_11); - temp_s0_10 = *var_s1_11; - func_800723A4(temp_s0_10, 0); - temp_v0_9 = &gObjectList[temp_s0_10]; - sp4C = temp_v0_9; - temp_v0_9->pos[2] = (f32) var_s2_6->unk4; - temp_v0_9->pos[0] = (f32) var_s2_6->unk0 * D_8018D01C; - func_800887C0(temp_s0_10); - var_s2_6 += 6; - var_s1_11 += 4; - temp_v0_9->sizeScaling = 0.7f; - } while ((u32) var_s2_6 < (u32) &D_800E641A); - var_s0_8 = D_8018C3F0; - do { - find_unused_obj_index(var_s0_8); - var_s0_8 += 4; - } while (var_s0_8 != &D_8018C5F0); - return; + for (var_s3 = 0; var_s3 < NUM_GROUP1_MOLES; var_s3++) { + D_8018D198[var_s3] = 0; + find_unused_obj_index(&D_80183EA0[var_s3]); + } + for (var_s3 = 0; var_s3 < NUM_GROUP2_MOLES; var_s3++) { + D_8018D1A8[var_s3] = 0; + find_unused_obj_index(&D_80183EA0[var_s3]); + } + for (var_s3 = 0; var_s3 < NUM_GROUP3_MOLES; var_s3++) { + D_8018D1B8[var_s3] = 0; + find_unused_obj_index(&D_80183EA0[var_s3]); + } + for (var_s3 = 0; var_s3 < NUM_MAX_MOLES; var_s3++) { + find_unused_obj_index(&D_8018C1B0[var_s3]); + temp_s0 = D_8018C1B0[var_s3]; + func_800723A4(temp_s0, 0); + gObjectList[temp_s0].pos[0] = gMoleSpawns[var_s3][0] * D_8018D01C; + gObjectList[temp_s0].pos[2] = gMoleSpawns[var_s3][2]; + func_800887C0(temp_s0); + gObjectList[temp_s0].sizeScaling = 0.7f; + } + for (var_s3 = 0; var_s3 < D_8018C3F0_SIZE; var_s3++) { + find_unused_obj_index(&D_8018C3F0[var_s3]); + } } break; case 11: if (gGamestate != 9) { find_unused_obj_index(&D_8018CF10); func_800723A4(D_8018CF10, 0); - var_s1_12 = D_8018C1B0; - do { - find_unused_obj_index(var_s1_12); - var_s1_12 += 4; - } while ((u32) var_s1_12 < (u32) &D_8018C278); - var_s0_9 = D_8018C3F0; - do { - find_unused_obj_index(var_s0_9); - var_s0_9 += 4; - } while ((u32) var_s0_9 < (u32) &D_8018C404); - var_s0_10 = D_8018C630; - do { - find_unused_obj_index(var_s0_10); - var_s0_10 += 4; - } while (var_s0_10 != &D_8018C6B0); - return; + for (var_s3 = 0; var_s3 < 50; var_s3++) { + find_unused_obj_index(&D_8018C1B0[var_s3]); + } + for (var_s3 = 0; var_s3 < 5; var_s3++) { + find_unused_obj_index(&D_8018C3F0[var_s3]); + } + for (var_s3 = 0; var_s3 < 32; var_s3++) { + find_unused_obj_index(&D_8018C630[var_s3]); + } } break; case 12: - var_s1_13 = D_80183EA0; - do { - func_800723A4(*var_s1_13, 0); - var_s1_13 += 4; - } while (var_s1_13 != &D_80183EDC); - return; + for (var_s3 = 0; var_s3 < NUM_PENGUINS; var_s3++) { + func_800723A4(D_80183EA0[var_s3], 0); + } + break; case 13: - var_s1_14 = D_80183EA0; if (gGamestate != 9) { - do { - func_800723A4(*var_s1_14, 0); - var_s1_14 += 4; - } while ((u32) var_s1_14 < (u32) &D_80183EC8); - var_s2_7 = D_80183F28; - do { - func_800723A4(*var_s2_7, 0); - var_s2_7 += 4; - } while (var_s2_7 != &D_80183F34); - return; + for (var_s3 = 0; var_s3 < NUM_NEON_SIGNS; var_s3++) { + func_800723A4(D_80183EA0[var_s3], 0); + } + for (var_s3 = 0; var_s3 < NUM_CHAIN_CHOMPS; var_s3++) { + func_800723A4(D_80183F28[var_s3], 0); + } } break; case 18: - var_s3_5 = 0; - do { - func_800770F0(var_s3_5); - var_s3_5 += 1; - } while (var_s3_5 != 8); + for (var_s3 = 0; var_s3 < NUM_TORCHES; var_s3++) { + func_800770F0(var_s3); + // wtf? + if (D_8018CF10){} + } + break; + default: break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_80070780.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-28-2023 diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h index 3e8dd869a..909c07cba 100644 --- a/src/code_8006E9C0.h +++ b/src/code_8006E9C0.h @@ -22,7 +22,7 @@ void func_800703E0(s32, s32, StarSpawn*); void func_800704A0(StarSpawn*); void func_8007055C(void); void func_80070714(void); -void func_80070780(); +void func_80070780(void); void init_hud_one_player(void); void init_hud_two_player_vertical(void); void init_hud_three_four_player(void); diff --git a/src/code_80071F00.c b/src/code_80071F00.c index 9683c1ffb..275237133 100644 --- a/src/code_80071F00.c +++ b/src/code_80071F00.c @@ -2274,7 +2274,6 @@ void func_80076F2C(void) { } } -extern s16 D_800E6788[1]; // todo: fix this extern void func_80076FEC(s32 objectIndex, s32 flameIndex) { func_800723A4(objectIndex, 3); @@ -2285,9 +2284,9 @@ void func_80076FEC(s32 objectIndex, s32 flameIndex) { // Mixing arr + offset and array access... Why? // todo: ifdef this to proper array access. - gObjectList[objectIndex].unk_010[0] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[0]) * D_8018D01C; - gObjectList[objectIndex].unk_010[1] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[1]); - gObjectList[objectIndex].unk_010[2] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[2]); + gObjectList[objectIndex].unk_010[0] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[0]) * D_8018D01C; + gObjectList[objectIndex].unk_010[1] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[1]); + gObjectList[objectIndex].unk_010[2] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[2]); gObjectList[objectIndex].unk_034 = 0; gObjectList[objectIndex].type = 255; gObjectList[objectIndex].unk_0A2 = 255; @@ -5827,7 +5826,7 @@ s32 func_8007F75C(s32 playerId) { var_s6 = 0; if ((waypoint >= 0xAA) && (waypoint < 0xB5)) { temp_s7 = random_int(0x0032U) + 0x32; - for (someIndex = 0; someIndex < D_80165750; someIndex++) { + for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++) { objectIndex = D_80183EA0[someIndex]; if (gObjectList[objectIndex].unk_0D5 == 3) { var_s6 = 1; @@ -5835,7 +5834,7 @@ s32 func_8007F75C(s32 playerId) { } } } else if ((waypoint >= 0xD7) && (waypoint < 0xE2)) { - for (someIndex = 0; someIndex < D_80165750; someIndex++) { + for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++) { objectIndex = D_80183EA0[someIndex]; if (gObjectList[objectIndex].unk_0D5 == 3) { var_s6 = 1; @@ -5856,7 +5855,7 @@ void func_8007F8D8(void) { player = gPlayerOne; var_s4 = 1; - for (someIndex = 0; someIndex < D_80165750; someIndex++){ + for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++){ objectIndex = D_80183EA0[someIndex]; object = &gObjectList[objectIndex]; if (object->unk_0D5 == 3) { @@ -6498,13 +6497,13 @@ void func_80081210(void) { D_80165834[0] += 0x100; D_80165834[1] += 0x200; - for (var_s4 = 0; var_s4 < D_80165750; var_s4++) { + for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) { objectIndex = D_80183EA0[var_s4]; func_800722CC(objectIndex, 0x00000010); func_8008A4CC(objectIndex); } func_8007F8D8(); - for (var_s4 = 0; var_s4 < D_80165750; var_s4++) { + for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) { objectIndex = D_80183EA0[var_s4]; if (gObjectList[objectIndex].state != 0) { switch (gObjectList[objectIndex].unk_0D5) { @@ -6533,7 +6532,7 @@ void func_80081210(void) { for (var_s4 = 0; var_s4 < NUM_PLAYERS; var_s4++, player++) { player->boundingBoxCorners[0].unk_14 &= ~3; player->unk_046 &= ~0x0006; - for (var_s2_3 = 0; var_s2_3 < D_80165750; var_s2_3++) { + for (var_s2_3 = 0; var_s2_3 < gNumActiveThwomps; var_s2_3++) { objectIndex = D_80183EA0[var_s2_3]; if (!(player->effects & 0x80000000)) { func_80080B28(objectIndex, var_s4); @@ -6547,7 +6546,7 @@ void func_80081210(void) { } } func_8007542C(3); - for (var_s4 = 0; var_s4 < D_80165750; var_s4++) { + for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) { objectIndex = D_80183EA0[var_s4]; if (func_80072320(objectIndex, 0x00000020) == 0) continue; @@ -6680,32 +6679,22 @@ void func_80081A88(s32 objectIndex) { func_8008BF18(objectIndex); } -#ifdef MIPS_TO_C -//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-25-2023 -extern ? D_8018D198; -extern ? D_8018D1A8; -extern ? D_8018D1B8; - void func_80081AFC(s32 objectIndex, s32 arg1) { - ? *sp2C; - s16 temp_v1; - s32 temp_v0; + s8 *sp2C; Objects *temp_s0; temp_s0 = &gObjectList[objectIndex]; - temp_v1 = temp_s0->state; - switch (temp_v1) { /* irregular */ + switch (temp_s0->state) { /* irregular */ case 0x1: func_80081848(objectIndex); break; case 0x2: - temp_v0 = temp_s0->unk_04C; - if (temp_v0 == 0) { + if (temp_s0->unk_04C == 0) { func_80086EAC(objectIndex, 2, 1); func_80072488(objectIndex); set_object_flag_unk_054_true(objectIndex, 0x00000200); } else { - temp_s0->unk_04C = temp_v0 - 1; + temp_s0->unk_04C--; } break; case 0x3: @@ -6733,26 +6722,26 @@ void func_80081AFC(s32 objectIndex, s32 arg1) { func_80072428(objectIndex); switch (arg1) { /* switch 1; irregular */ case 1: /* switch 1 */ - sp2C = &D_8018D198; + sp2C = D_8018D198; break; case 2: /* switch 1 */ - sp2C = &D_8018D1A8; + sp2C = D_8018D1A8; break; case 3: /* switch 1 */ - sp2C = &D_8018D1B8; + sp2C = D_8018D1B8; break; } - *(sp2C + temp_s0->type) = 0; + sp2C[temp_s0->type] = 0; } break; + case 0: + default: + break; } if (temp_s0->state >= 2) { func_80073514(objectIndex); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80081AFC.s") -#endif void func_80081D34(s32 objectIndex) { Player *var_s1; @@ -6800,72 +6789,63 @@ void func_80081D34(s32 objectIndex) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern f32 D_8018D01C; -extern s8 D_8018D198; -extern s8 D_8018D1A8; -extern s8 D_8018D1B8; -static ? D_800E6360; /* unable to generate initializer */ - +#ifdef NON_MATCHING +/** + * Nonmatching due to regalloc stuff + * The use of the `offset` variable is really really weird + * The intent of the function appears to be choose a random mole from a given + * group of moles (decided by arg1) + * `offset` then would then be offsetting the indexing into gMoleSpawns + * so that we choose the appropriate spawn location for that mole + * But as its written, `offset` is triple what it ought to be. + * So there' something kind of fucky happening + **/ void func_80081FF4(s32 objectIndex, s32 arg1) { - s32 sp2C; - s16 sp28; - ? *sp20; - Objects *sp18; - ? *var_a2; + s32 stackPadding0; + s32 stackPadding1; + s32 moleCount; s16 var_v1; + s16 offset; s32 var_a0; - s8 *temp_v0; - Objects *temp_a3; - void *temp_v0_2; + s8 *var_a2; func_800723A4(objectIndex, 0); - temp_a3 = &gObjectList[objectIndex]; - temp_a3->unk_04C = random_int(0x001EU) + 5; + gObjectList[objectIndex].unk_04C = random_int(0x001EU) + 5; switch (arg1) { /* irregular */ case 1: - var_a2 = &D_8018D198; - sp28 = 0; - sp2C = 8; -block_7: - sp20 = var_a2; + var_a2 = D_8018D198; + moleCount = NUM_GROUP1_MOLES; + offset = 0; break; case 2: - var_a2 = &D_8018D1A8; - sp28 = 0x0018; - sp2C = 0x0000000B; - goto block_7; + var_a2 = D_8018D1A8; + moleCount = NUM_GROUP2_MOLES; + offset = 24; + // offset = NUM_GROUP1_MOLES; + break; case 3: - var_a2 = &D_8018D1B8; - sp28 = 0x0039; - sp2C = 0x0000000C; - goto block_7; + var_a2 = D_8018D1B8; + moleCount = NUM_GROUP3_MOLES; + offset = 57; + // offset = NUM_GROUP1_MOLES + NUM_GROUP2_MOLES; + break; } - sp18 = temp_a3; - var_v1 = random_int(sp2C & 0xFFFF); - var_a0 = 0; - if (sp2C > 0) { -loop_9: - temp_v0 = var_v1 + sp20; - var_a0 += 1; - if (*temp_v0 != 0) { - var_v1 += 1; - if (var_v1 == sp2C) { + var_v1 = random_int(moleCount); + for (var_a0 = 0; var_a0 < moleCount; var_a0++) { + if (var_a2[var_v1] != 0) { + var_v1++; + if (var_v1 == moleCount) { var_v1 = 0; } - if (var_a0 != sp2C) { - goto loop_9; - } } else { - *temp_v0 = 1; - temp_a3->type = var_v1; + var_a2[var_v1] = 1; + gObjectList[objectIndex].type = var_v1; + break; } } - temp_v0_2 = (sp28 * 2) + (var_v1 * 6) + &D_800E6360; - temp_a3->unk_010[0] = (f32) temp_v0_2->unk0 * D_8018D01C; - temp_a3->unk_010[1] = (f32) ((f64) temp_v0_2->unk2 - 9.0); - temp_a3->unk_010[2] = (f32) temp_v0_2->unk4; + gObjectList[objectIndex].unk_010[0] = gMoleSpawns[var_v1][offset + 0] * D_8018D01C; + gObjectList[objectIndex].unk_010[1] = gMoleSpawns[var_v1][offset + 1] - 9.0; + gObjectList[objectIndex].unk_010[2] = gMoleSpawns[var_v1][offset + 2]; } #else GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80081FF4.s") @@ -8238,7 +8218,6 @@ void func_80085F74(s32 objectIndex) { * But then it get popped back into v0 when its supposed to be popped into t0. * I really, really don't get why that's happening and the permuter hasn't found anything **/ -extern Vec3f D_800E6734[]; /* unable to generate initializer */ void func_80086074(s32 objectIndex, s32 arg1) { func_8008B7D4(objectIndex, D_800E6734[arg1][0] * D_8018D01C, D_800E6734[arg1][1], D_800E6734[arg1][2]); diff --git a/src/code_80071F00.h b/src/code_80071F00.h index 35da19069..1510e50b8 100644 --- a/src/code_80071F00.h +++ b/src/code_80071F00.h @@ -5,8 +5,6 @@ #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 { @@ -14,11 +12,6 @@ typedef struct { u16 id; } StarSpawn; -typedef struct { - Vec3s pos; - u16 rot; -} YVFlagPoleSpawn; - void func_80077D5C(s32); s32 find_unused_obj_index(s32*); void delete_object(s32*); @@ -153,6 +146,7 @@ void func_80076538(s32); void func_8007661C(void); void func_8007675C(s32, Vec3s, s32); s32 func_80076828(Vec3s, s32); +void func_80076884(s32); void func_80076958(s32); void func_800769D8(s32); void func_80076AEC(s32); @@ -380,8 +374,6 @@ 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; diff --git a/src/hud_renderer.c b/src/hud_renderer.c index 0c1d0cd35..7bf1b878a 100644 --- a/src/hud_renderer.c +++ b/src/hud_renderer.c @@ -4452,20 +4452,20 @@ void func_80053870(s32 cameraId) { if (cameraId == 0) { var_s0 = D_80183EA0; var_s2 = 0; - if (D_80165750 > 0) { + if (gNumActiveThwomps > 0) { do { temp_s1 = *var_s0; set_object_flag_unk_054_false(temp_s1, 0x00070000); func_800722CC(temp_s1, 0x00000110); var_s2 += 1; var_s0 += 4; - } while (var_s2 < D_80165750); + } while (var_s2 < gNumActiveThwomps); sp94 = temp_s1; } } func_800534A4(sp94); var_s0_2 = D_80183EA0; - if (D_80165750 > 0) { + if (gNumActiveThwomps > 0) { do { temp_s1_2 = *var_s0_2; temp_v0 = gObjectList[temp_s1_2].unk_0DF; @@ -4474,10 +4474,10 @@ void func_80053870(s32 cameraId) { if ((temp_v0_2 >= (s16) (temp_v0 - 1)) && ((s16) (temp_v0 + 1) >= temp_v0_2) && (func_8008A140(temp_s1_2, sp84, 0x8000U) != 0)) { func_800536C8(temp_s1_2); } - var_v1 = &D_80183EA0[D_80165750]; + var_v1 = &D_80183EA0[gNumActiveThwomps]; } else { func_800536C8(temp_s1_2); - var_v1 = &D_80183EA0[D_80165750]; + var_v1 = &D_80183EA0[gNumActiveThwomps]; } var_s0_2 += 4; } while ((u32) var_s0_2 < (u32) var_v1); @@ -4872,7 +4872,7 @@ void func_80054E10(s32 objectIndex) { void func_80054EB8(UNUSED s32 unused) { s32 someIndex; - for (someIndex = 0; someIndex < NUM_MOLES; someIndex++) { + for (someIndex = 0; someIndex < NUM_MAX_MOLES; someIndex++) { func_80054E10(D_8018C1B0[someIndex]); } } diff --git a/src/menus.c b/src/menus.c index 34496c5d1..987f5e48f 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1382,11 +1382,13 @@ void main_menu_act(struct Controller *controller, u16 arg1) { case GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION: case TIME_TRIALS_DATA_SELECTION_FROM_BACK_OUT: { - if (1); - if ((arg1 == 0) && (++gMenuTimingCounter == 100 || gMenuTimingCounter % 300 == 0)) { - // L800B2FAC - if (gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 0 || gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 2) { - play_sound2(SOUND_MENU_SELECT_LEVEL); + if (arg1 == 0){ + gMenuTimingCounter++; + if ((gMenuTimingCounter == 100 || gMenuTimingCounter % 300 == 0)) { + // L800B2FAC + if (gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 0 || gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 2) { + play_sound2(SOUND_MENU_SELECT_LEVEL); + } } } // L800B3000