diff --git a/asm/non_matchings/unknown_066AA0/func_8006CC14.s b/asm/non_matchings/unknown_066AA0/func_8006CC14.s deleted file mode 100644 index 393796f3..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006CC14.s +++ /dev/null @@ -1,59 +0,0 @@ -glabel func_8006CC14 -/* 06D814 8006CC14 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06D818 8006CC18 AFBF0014 */ sw $ra, 0x14($sp) -/* 06D81C 8006CC1C 0C01C42C */ jal func_800710B0 -/* 06D820 8006CC20 00002025 */ move $a0, $zero -/* 06D824 8006CC24 3C0E800E */ lui $t6, %hi(D_800DD38C) # $t6, 0x800e -/* 06D828 8006CC28 81CED38C */ lb $t6, %lo(D_800DD38C)($t6) -/* 06D82C 8006CC2C 3C0F800E */ lui $t7, %hi(D_800DD3F0) # $t7, 0x800e -/* 06D830 8006CC30 15C0000A */ bnez $t6, .L8006CC5C -/* 06D834 8006CC34 00000000 */ nop -/* 06D838 8006CC38 81EFD3F0 */ lb $t7, %lo(D_800DD3F0)($t7) -/* 06D83C 8006CC3C 24010001 */ li $at, 1 -/* 06D840 8006CC40 11E10004 */ beq $t7, $at, .L8006CC54 -/* 06D844 8006CC44 24180001 */ li $t8, 1 -/* 06D848 8006CC48 0C01DE95 */ jal func_80077A54 -/* 06D84C 8006CC4C 00000000 */ nop -/* 06D850 8006CC50 24180001 */ li $t8, 1 -.L8006CC54: -/* 06D854 8006CC54 3C01800E */ lui $at, %hi(D_800DD38C) # $at, 0x800e -/* 06D858 8006CC58 A038D38C */ sb $t8, %lo(D_800DD38C)($at) -.L8006CC5C: -/* 06D85C 8006CC5C 0C01AFBF */ jal func_8006BEFC -/* 06D860 8006CC60 00000000 */ nop -/* 06D864 8006CC64 3C04800E */ lui $a0, %hi(D_800DD3F4) # $a0, 0x800e -/* 06D868 8006CC68 0C030076 */ jal func_800C01D8 -/* 06D86C 8006CC6C 2484D3F4 */ addiu $a0, %lo(D_800DD3F4) # addiu $a0, $a0, -0x2c0c -/* 06D870 8006CC70 0C02B89C */ jal func_800AE270 -/* 06D874 8006CC74 00000000 */ nop -/* 06D878 8006CC78 0C02800F */ jal func_800A003C -/* 06D87C 8006CC7C 00000000 */ nop -/* 06D880 8006CC80 0C030C33 */ jal func_800C30CC -/* 06D884 8006CC84 00000000 */ nop -/* 06D888 8006CC88 3C198012 */ lui $t9, %hi(D_801234E8) # $t9, 0x8012 -/* 06D88C 8006CC8C 8F3934E8 */ lw $t9, %lo(D_801234E8)($t9) -/* 06D890 8006CC90 3C098012 */ lui $t1, 0x8012 -/* 06D894 8006CC94 00194080 */ sll $t0, $t9, 2 -/* 06D898 8006CC98 01284821 */ addu $t1, $t1, $t0 -/* 06D89C 8006CC9C 8D2911F0 */ lw $t1, 0x11f0($t1) -/* 06D8A0 8006CCA0 3C038012 */ lui $v1, %hi(D_801211F8) # $v1, 0x8012 -/* 06D8A4 8006CCA4 246311F8 */ addiu $v1, %lo(D_801211F8) # addiu $v1, $v1, 0x11f8 -/* 06D8A8 8006CCA8 AC690000 */ sw $t1, ($v1) -/* 06D8AC 8006CCAC 252A0008 */ addiu $t2, $t1, 8 -/* 06D8B0 8006CCB0 AC6A0000 */ sw $t2, ($v1) -/* 06D8B4 8006CCB4 3C0BE900 */ lui $t3, 0xe900 -/* 06D8B8 8006CCB8 AD2B0000 */ sw $t3, ($t1) -/* 06D8BC 8006CCBC AD200004 */ sw $zero, 4($t1) -/* 06D8C0 8006CCC0 8C620000 */ lw $v0, ($v1) -/* 06D8C4 8006CCC4 3C0DB800 */ lui $t5, 0xb800 -/* 06D8C8 8006CCC8 244C0008 */ addiu $t4, $v0, 8 -/* 06D8CC 8006CCCC AC6C0000 */ sw $t4, ($v1) -/* 06D8D0 8006CCD0 24040002 */ li $a0, 2 -/* 06D8D4 8006CCD4 AC400004 */ sw $zero, 4($v0) -/* 06D8D8 8006CCD8 0C01C42C */ jal func_800710B0 -/* 06D8DC 8006CCDC AC4D0000 */ sw $t5, ($v0) -/* 06D8E0 8006CCE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 06D8E4 8006CCE4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06D8E8 8006CCE8 03E00008 */ jr $ra -/* 06D8EC 8006CCEC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006E2E8.s b/asm/non_matchings/unknown_066AA0/func_8006E2E8.s deleted file mode 100644 index 2d6e7c1d..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006E2E8.s +++ /dev/null @@ -1,58 +0,0 @@ -glabel func_8006E2E8 -/* 06EEE8 8006E2E8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06EEEC 8006E2EC 3C0E8012 */ lui $t6, %hi(D_80123514) # $t6, 0x8012 -/* 06EEF0 8006E2F0 81CE3514 */ lb $t6, %lo(D_80123514)($t6) -/* 06EEF4 8006E2F4 AFBF001C */ sw $ra, 0x1c($sp) -/* 06EEF8 8006E2F8 AFA40020 */ sw $a0, 0x20($sp) -/* 06EEFC 8006E2FC AFA50024 */ sw $a1, 0x24($sp) -/* 06EF00 8006E300 15C0001A */ bnez $t6, .L8006E36C -/* 06EF04 8006E304 AFA60028 */ sw $a2, 0x28($sp) -/* 06EF08 8006E308 0C01B6F9 */ jal func_8006DBE4 -/* 06EF0C 8006E30C 00000000 */ nop -/* 06EF10 8006E310 0C031CF8 */ jal func_800C73E0 -/* 06EF14 8006E314 00000000 */ nop -/* 06EF18 8006E318 14400014 */ bnez $v0, .L8006E36C -/* 06EF1C 8006E31C 3C038012 */ lui $v1, %hi(D_801211F8) # $v1, 0x8012 -/* 06EF20 8006E320 3C0F8012 */ lui $t7, %hi(D_801234E8) # $t7, 0x8012 -/* 06EF24 8006E324 8DEF34E8 */ lw $t7, %lo(D_801234E8)($t7) -/* 06EF28 8006E328 3C198012 */ lui $t9, 0x8012 -/* 06EF2C 8006E32C 000FC080 */ sll $t8, $t7, 2 -/* 06EF30 8006E330 0338C821 */ addu $t9, $t9, $t8 -/* 06EF34 8006E334 8F3911F0 */ lw $t9, 0x11f0($t9) -/* 06EF38 8006E338 246311F8 */ addiu $v1, %lo(D_801211F8) # addiu $v1, $v1, 0x11f8 -/* 06EF3C 8006E33C AC790000 */ sw $t9, ($v1) -/* 06EF40 8006E340 27280008 */ addiu $t0, $t9, 8 -/* 06EF44 8006E344 AC680000 */ sw $t0, ($v1) -/* 06EF48 8006E348 3C09E900 */ lui $t1, 0xe900 -/* 06EF4C 8006E34C AF290000 */ sw $t1, ($t9) -/* 06EF50 8006E350 AF200004 */ sw $zero, 4($t9) -/* 06EF54 8006E354 8C620000 */ lw $v0, ($v1) -/* 06EF58 8006E358 3C0BB800 */ lui $t3, 0xb800 -/* 06EF5C 8006E35C 244A0008 */ addiu $t2, $v0, 8 -/* 06EF60 8006E360 AC6A0000 */ sw $t2, ($v1) -/* 06EF64 8006E364 AC400004 */ sw $zero, 4($v0) -/* 06EF68 8006E368 AC4B0000 */ sw $t3, ($v0) -.L8006E36C: -/* 06EF6C 8006E36C 8FAC0020 */ lw $t4, 0x20($sp) -/* 06EF70 8006E370 2401FFFF */ li $at, -1 -/* 06EF74 8006E374 1181000B */ beq $t4, $at, .L8006E3A4 -/* 06EF78 8006E378 240E0001 */ li $t6, 1 -/* 06EF7C 8006E37C 8FAD0028 */ lw $t5, 0x28($sp) -/* 06EF80 8006E380 8FA50024 */ lw $a1, 0x24($sp) -/* 06EF84 8006E384 01802025 */ move $a0, $t4 -/* 06EF88 8006E388 00003025 */ move $a2, $zero -/* 06EF8C 8006E38C 24070002 */ li $a3, 2 -/* 06EF90 8006E390 0C01B6CF */ jal func_8006DB3C -/* 06EF94 8006E394 AFAD0010 */ sw $t5, 0x10($sp) -/* 06EF98 8006E398 3C018012 */ lui $at, %hi(D_80123514) # $at, 0x8012 -/* 06EF9C 8006E39C 10000003 */ b .L8006E3AC -/* 06EFA0 8006E3A0 A0203514 */ sb $zero, %lo(D_80123514)($at) -.L8006E3A4: -/* 06EFA4 8006E3A4 3C018012 */ lui $at, %hi(D_80123514) # $at, 0x8012 -/* 06EFA8 8006E3A8 A02E3514 */ sb $t6, %lo(D_80123514)($at) -.L8006E3AC: -/* 06EFAC 8006E3AC 8FBF001C */ lw $ra, 0x1c($sp) -/* 06EFB0 8006E3B0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 06EFB4 8006E3B4 03E00008 */ jr $ra -/* 06EFB8 8006E3B8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006E5BC.s b/asm/non_matchings/unknown_066AA0/func_8006E5BC.s deleted file mode 100644 index a987ff0e..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006E5BC.s +++ /dev/null @@ -1,117 +0,0 @@ -glabel func_8006E5BC -/* 06F1BC 8006E5BC 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 06F1C0 8006E5C0 AFBF0034 */ sw $ra, 0x34($sp) -/* 06F1C4 8006E5C4 AFB60030 */ sw $s6, 0x30($sp) -/* 06F1C8 8006E5C8 AFB5002C */ sw $s5, 0x2c($sp) -/* 06F1CC 8006E5CC AFB40028 */ sw $s4, 0x28($sp) -/* 06F1D0 8006E5D0 AFB30024 */ sw $s3, 0x24($sp) -/* 06F1D4 8006E5D4 AFB20020 */ sw $s2, 0x20($sp) -/* 06F1D8 8006E5D8 AFB1001C */ sw $s1, 0x1c($sp) -/* 06F1DC 8006E5DC 0C0270F2 */ jal func_8009C3C8 -/* 06F1E0 8006E5E0 AFB00018 */ sw $s0, 0x18($sp) -/* 06F1E4 8006E5E4 3C108012 */ lui $s0, %hi(gSettingsPtr) # $s0, 0x8012 -/* 06F1E8 8006E5E8 26103510 */ addiu $s0, %lo(gSettingsPtr) # addiu $s0, $s0, 0x3510 -/* 06F1EC 8006E5EC 8E0E0000 */ lw $t6, ($s0) -/* 06F1F0 8006E5F0 00008825 */ move $s1, $zero -/* 06F1F4 8006E5F4 00009825 */ move $s3, $zero -/* 06F1F8 8006E5F8 24160007 */ li $s6, 7 -/* 06F1FC 8006E5FC 24150005 */ li $s5, 5 -/* 06F200 8006E600 24140008 */ li $s4, 8 -/* 06F204 8006E604 24120006 */ li $s2, 6 -/* 06F208 8006E608 A1C2004A */ sb $v0, 0x4a($t6) -.L8006E60C: -/* 06F20C 8006E60C 8E0F0000 */ lw $t7, ($s0) -/* 06F210 8006E610 02202025 */ move $a0, $s1 -/* 06F214 8006E614 01F3C021 */ addu $t8, $t7, $s3 -/* 06F218 8006E618 0C02708A */ jal func_8009C228 -/* 06F21C 8006E61C A3000058 */ sb $zero, 0x58($t8) -/* 06F220 8006E620 8E190000 */ lw $t9, ($s0) -/* 06F224 8006E624 00000000 */ nop -/* 06F228 8006E628 03334021 */ addu $t0, $t9, $s3 -/* 06F22C 8006E62C A1020059 */ sb $v0, 0x59($t0) -/* 06F230 8006E630 8E030000 */ lw $v1, ($s0) -/* 06F234 8006E634 00000000 */ nop -/* 06F238 8006E638 9069004A */ lbu $t1, 0x4a($v1) -/* 06F23C 8006E63C 00735021 */ addu $t2, $v1, $s3 -/* 06F240 8006E640 29210002 */ slti $at, $t1, 2 -/* 06F244 8006E644 14200003 */ bnez $at, .L8006E654 -/* 06F248 8006E648 00000000 */ nop -/* 06F24C 8006E64C 1000000E */ b .L8006E688 -/* 06F250 8006E650 A151005A */ sb $s1, 0x5a($t2) -.L8006E654: -/* 06F254 8006E654 0C027B20 */ jal is_in_two_player_adventure -/* 06F258 8006E658 00000000 */ nop -/* 06F25C 8006E65C 10400006 */ beqz $v0, .L8006E678 -/* 06F260 8006E660 00000000 */ nop -/* 06F264 8006E664 8E0C0000 */ lw $t4, ($s0) -/* 06F268 8006E668 02B15823 */ subu $t3, $s5, $s1 -/* 06F26C 8006E66C 01936821 */ addu $t5, $t4, $s3 -/* 06F270 8006E670 10000005 */ b .L8006E688 -/* 06F274 8006E674 A1AB005A */ sb $t3, 0x5a($t5) -.L8006E678: -/* 06F278 8006E678 8E0F0000 */ lw $t7, ($s0) -/* 06F27C 8006E67C 02D17023 */ subu $t6, $s6, $s1 -/* 06F280 8006E680 01F3C021 */ addu $t8, $t7, $s3 -/* 06F284 8006E684 A30E005A */ sb $t6, 0x5a($t8) -.L8006E688: -/* 06F288 8006E688 8E190000 */ lw $t9, ($s0) -/* 06F28C 8006E68C 00001025 */ move $v0, $zero -/* 06F290 8006E690 03334021 */ addu $t0, $t9, $s3 -/* 06F294 8006E694 A100005B */ sb $zero, 0x5b($t0) -.L8006E698: -/* 06F298 8006E698 00115080 */ sll $t2, $s1, 2 -/* 06F29C 8006E69C 8E090000 */ lw $t1, ($s0) -/* 06F2A0 8006E6A0 01515023 */ subu $t2, $t2, $s1 -/* 06F2A4 8006E6A4 000A50C0 */ sll $t2, $t2, 3 -/* 06F2A8 8006E6A8 012A6021 */ addu $t4, $t1, $t2 -/* 06F2AC 8006E6AC 01825821 */ addu $t3, $t4, $v0 -/* 06F2B0 8006E6B0 24420002 */ addiu $v0, $v0, 2 -/* 06F2B4 8006E6B4 28410008 */ slti $at, $v0, 8 -/* 06F2B8 8006E6B8 1420FFF7 */ bnez $at, .L8006E698 -/* 06F2BC 8006E6BC A560005C */ sh $zero, 0x5c($t3) -/* 06F2C0 8006E6C0 8E0D0000 */ lw $t5, ($s0) -/* 06F2C4 8006E6C4 00001025 */ move $v0, $zero -/* 06F2C8 8006E6C8 01B37821 */ addu $t7, $t5, $s3 -/* 06F2CC 8006E6CC A5E00064 */ sh $zero, 0x64($t7) -.L8006E6D0: -/* 06F2D0 8006E6D0 0011C080 */ sll $t8, $s1, 2 -/* 06F2D4 8006E6D4 8E0E0000 */ lw $t6, ($s0) -/* 06F2D8 8006E6D8 0311C023 */ subu $t8, $t8, $s1 -/* 06F2DC 8006E6DC 0018C0C0 */ sll $t8, $t8, 3 -/* 06F2E0 8006E6E0 01D8C821 */ addu $t9, $t6, $t8 -/* 06F2E4 8006E6E4 03224021 */ addu $t0, $t9, $v0 -/* 06F2E8 8006E6E8 24420002 */ addiu $v0, $v0, 2 -/* 06F2EC 8006E6EC 1452FFF8 */ bne $v0, $s2, .L8006E6D0 -/* 06F2F0 8006E6F0 A5000066 */ sh $zero, 0x66($t0) -/* 06F2F4 8006E6F4 26310001 */ addiu $s1, $s1, 1 -/* 06F2F8 8006E6F8 1634FFC4 */ bne $s1, $s4, .L8006E60C -/* 06F2FC 8006E6FC 26730018 */ addiu $s3, $s3, 0x18 -/* 06F300 8006E700 8E090000 */ lw $t1, ($s0) -/* 06F304 8006E704 00000000 */ nop -/* 06F308 8006E708 A1200114 */ sb $zero, 0x114($t1) -/* 06F30C 8006E70C 8E0A0000 */ lw $t2, ($s0) -/* 06F310 8006E710 00000000 */ nop -/* 06F314 8006E714 A1400115 */ sb $zero, 0x115($t2) -/* 06F318 8006E718 8E0C0000 */ lw $t4, ($s0) -/* 06F31C 8006E71C 00000000 */ nop -/* 06F320 8006E720 A1800116 */ sb $zero, 0x116($t4) -/* 06F324 8006E724 8E0B0000 */ lw $t3, ($s0) -/* 06F328 8006E728 00000000 */ nop -/* 06F32C 8006E72C A1600117 */ sb $zero, 0x117($t3) -/* 06F330 8006E730 8E0D0000 */ lw $t5, ($s0) -/* 06F334 8006E734 00000000 */ nop -/* 06F338 8006E738 A1A00048 */ sb $zero, 0x48($t5) -/* 06F33C 8006E73C 8E0F0000 */ lw $t7, ($s0) -/* 06F340 8006E740 00000000 */ nop -/* 06F344 8006E744 A1E00049 */ sb $zero, 0x49($t7) -/* 06F348 8006E748 8FBF0034 */ lw $ra, 0x34($sp) -/* 06F34C 8006E74C 8FB60030 */ lw $s6, 0x30($sp) -/* 06F350 8006E750 8FB5002C */ lw $s5, 0x2c($sp) -/* 06F354 8006E754 8FB40028 */ lw $s4, 0x28($sp) -/* 06F358 8006E758 8FB30024 */ lw $s3, 0x24($sp) -/* 06F35C 8006E75C 8FB20020 */ lw $s2, 0x20($sp) -/* 06F360 8006E760 8FB1001C */ lw $s1, 0x1c($sp) -/* 06F364 8006E764 8FB00018 */ lw $s0, 0x18($sp) -/* 06F368 8006E768 03E00008 */ jr $ra -/* 06F36C 8006E76C 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F140.s b/asm/non_matchings/unknown_066AA0/func_8006F140.s deleted file mode 100644 index d5b24dbd..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F140.s +++ /dev/null @@ -1,77 +0,0 @@ -glabel func_8006F140 -/* 06FD40 8006F140 3C02800E */ lui $v0, %hi(D_800DD394) # $v0, 0x800e -/* 06FD44 8006F144 2442D394 */ addiu $v0, %lo(D_800DD394) # addiu $v0, $v0, -0x2c6c -/* 06FD48 8006F148 844E0000 */ lh $t6, ($v0) -/* 06FD4C 8006F14C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06FD50 8006F150 AFBF0014 */ sw $ra, 0x14($sp) -/* 06FD54 8006F154 15C00029 */ bnez $t6, .L8006F1FC -/* 06FD58 8006F158 00802825 */ move $a1, $a0 -/* 06FD5C 8006F15C 240F0028 */ li $t7, 40 -/* 06FD60 8006F160 A44F0000 */ sh $t7, ($v0) -/* 06FD64 8006F164 3C018012 */ lui $at, %hi(D_80123524) # $at, 0x8012 -/* 06FD68 8006F168 A0203524 */ sb $zero, %lo(D_80123524)($at) -/* 06FD6C 8006F16C 3C018012 */ lui $at, %hi(D_80123526) # $at, 0x8012 -/* 06FD70 8006F170 A0203526 */ sb $zero, %lo(D_80123526)($at) -/* 06FD74 8006F174 24010001 */ li $at, 1 -/* 06FD78 8006F178 14810007 */ bne $a0, $at, .L8006F198 -/* 06FD7C 8006F17C 3C04800E */ lui $a0, %hi(D_800DD41C) # $a0, 0x800e -/* 06FD80 8006F180 2484D41C */ addiu $a0, %lo(D_800DD41C) # addiu $a0, $a0, -0x2be4 -/* 06FD84 8006F184 0C030076 */ jal func_800C01D8 -/* 06FD88 8006F188 AFA50018 */ sw $a1, 0x18($sp) -/* 06FD8C 8006F18C 3C02800E */ lui $v0, %hi(D_800DD394) # $v0, 0x800e -/* 06FD90 8006F190 8FA50018 */ lw $a1, 0x18($sp) -/* 06FD94 8006F194 2442D394 */ addiu $v0, %lo(D_800DD394) # addiu $v0, $v0, -0x2c6c -.L8006F198: -/* 06FD98 8006F198 24010003 */ li $at, 3 -/* 06FD9C 8006F19C 14A10009 */ bne $a1, $at, .L8006F1C4 -/* 06FDA0 8006F1A0 2418011A */ li $t8, 282 -/* 06FDA4 8006F1A4 3C04800E */ lui $a0, %hi(D_800DD424) # $a0, 0x800e -/* 06FDA8 8006F1A8 A4580000 */ sh $t8, ($v0) -/* 06FDAC 8006F1AC 2484D424 */ addiu $a0, %lo(D_800DD424) # addiu $a0, $a0, -0x2bdc -/* 06FDB0 8006F1B0 0C030076 */ jal func_800C01D8 -/* 06FDB4 8006F1B4 AFA50018 */ sw $a1, 0x18($sp) -/* 06FDB8 8006F1B8 3C02800E */ lui $v0, %hi(D_800DD394) # $v0, 0x800e -/* 06FDBC 8006F1BC 8FA50018 */ lw $a1, 0x18($sp) -/* 06FDC0 8006F1C0 2442D394 */ addiu $v0, %lo(D_800DD394) # addiu $v0, $v0, -0x2c6c -.L8006F1C4: -/* 06FDC4 8006F1C4 24010004 */ li $at, 4 -/* 06FDC8 8006F1C8 14A10009 */ bne $a1, $at, .L8006F1F0 -/* 06FDCC 8006F1CC 24190168 */ li $t9, 360 -/* 06FDD0 8006F1D0 3C04800E */ lui $a0, %hi(D_800DD424) # $a0, 0x800e -/* 06FDD4 8006F1D4 A4590000 */ sh $t9, ($v0) -/* 06FDD8 8006F1D8 2484D424 */ addiu $a0, %lo(D_800DD424) # addiu $a0, $a0, -0x2bdc -/* 06FDDC 8006F1DC 0C030076 */ jal func_800C01D8 -/* 06FDE0 8006F1E0 AFA50018 */ sw $a1, 0x18($sp) -/* 06FDE4 8006F1E4 3C02800E */ lui $v0, %hi(D_800DD394) # $v0, 0x800e -/* 06FDE8 8006F1E8 8FA50018 */ lw $a1, 0x18($sp) -/* 06FDEC 8006F1EC 2442D394 */ addiu $v0, %lo(D_800DD394) # addiu $v0, $v0, -0x2c6c -.L8006F1F0: -/* 06FDF0 8006F1F0 14A00002 */ bnez $a1, .L8006F1FC -/* 06FDF4 8006F1F4 24080002 */ li $t0, 2 -/* 06FDF8 8006F1F8 A4480000 */ sh $t0, ($v0) -.L8006F1FC: -/* 06FDFC 8006F1FC 8FBF0014 */ lw $ra, 0x14($sp) -/* 06FE00 8006F200 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06FE04 8006F204 03E00008 */ jr $ra -/* 06FE08 8006F208 00000000 */ nop - -/* 06FE0C 8006F20C 3C0E800E */ lui $t6, %hi(D_800DD394) # $t6, 0x800e -/* 06FE10 8006F210 85CED394 */ lh $t6, %lo(D_800DD394)($t6) -/* 06FE14 8006F214 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06FE18 8006F218 15C0000A */ bnez $t6, .L8006F244 -/* 06FE1C 8006F21C AFBF0014 */ sw $ra, 0x14($sp) -/* 06FE20 8006F220 3C04800E */ lui $a0, %hi(D_800DD41C) # $a0, 0x800e -/* 06FE24 8006F224 0C030076 */ jal func_800C01D8 -/* 06FE28 8006F228 2484D41C */ addiu $a0, %lo(D_800DD41C) # addiu $a0, $a0, -0x2be4 -/* 06FE2C 8006F22C 240F0028 */ li $t7, 40 -/* 06FE30 8006F230 3C01800E */ lui $at, %hi(D_800DD394) # $at, 0x800e -/* 06FE34 8006F234 A42FD394 */ sh $t7, %lo(D_800DD394)($at) -/* 06FE38 8006F238 3C018012 */ lui $at, %hi(D_80123524) # $at, 0x8012 -/* 06FE3C 8006F23C 24180001 */ li $t8, 1 -/* 06FE40 8006F240 A0383524 */ sb $t8, %lo(D_80123524)($at) -.L8006F244: -/* 06FE44 8006F244 8FBF0014 */ lw $ra, 0x14($sp) -/* 06FE48 8006F248 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06FE4C 8006F24C 03E00008 */ jr $ra -/* 06FE50 8006F250 00000000 */ nop - diff --git a/include/structs.h b/include/structs.h index 6a4b3ddd..5cbe7baf 100644 --- a/include/structs.h +++ b/include/structs.h @@ -36,7 +36,7 @@ typedef struct Racer { /* 0x00 */ u32 trophy_points; /* 0x04 */ u8 best_times; /* 0x05 */ u8 character; - /* 0x06 */ u8 starting_position; + /* 0x06 */ s8 starting_position; /* 0x07 */ char unk7; /* 0x08 */ u16 placements[4]; /* 0x10 */ u16 course_time; @@ -60,6 +60,25 @@ typedef struct Settings { /* 0x000C */ u16 bosses; /* 0x000E */ u16 trophies; /* 0x0010 */ u32 cutsceneFlags; + /* Cutscene flags: + * 0x1 = Lighthouse rocket cutscene + * 0x2 = T.T. help prompt + * 0x4 = Adventure 2 flag? + * 0x8 = Dino domain boss cutscene + * 0x10 = Sherbet island boss cutscene + * 0x20 = Snowflake mountain boss cutscene + * 0x40 = Dragon forest boss cutscene + * 0x80 = Future Fun Land boss cutscene + * 0x100 = Dino domain boss cutscene 2 + * 0x200 = Shertbet island boss cutscene 2 + * 0x400 = Snowflake mountain boss cutscene 2 + * 0x800 = Dragon forest boss cutscene 2 + * 0x2000 = Wizpig face cutscene + * 0x4000 = Dino domain key cutscene + * 0x8000 = Sherbet Island key cutscene + * 0x10000 = Snowflake mountain key cutscene + * 0x20000 = Dragon forest key cutscene + */ /* 0x0014 */ u16 tajFlags; /* 0x0016 */ u8 ttAmulet; /* 0x0017 */ u8 wizpigAmulet; @@ -75,7 +94,7 @@ typedef struct Settings { /* 0x0050 */ u32 filename; /* 0x0054 */ Racer racers[8]; /* 0x0114 */ u8 timeTrialRacer; - /* 0x0115 */ char unk0115[2]; + /* 0x0115 */ char unk115[2]; /* 0x0117 */ u8 display_times; /* 0x0118 */ u32 courseFlags[65]; /* 0x021C */ u16 balloons; @@ -87,58 +106,76 @@ typedef struct Settings { } Settings; /* Size: 0xC8 bytes */ -typedef struct { - /* 0x00 */ u8 world; - +typedef struct LevelHeader { + /* 0x00 */ s8 world; /* 0x01 */ u8 unk1; /* 0x02 */ u8 unk2; /* 0x03 */ u8 unk3; - /* 0x04 */ u8 unk4; - /* 0x05 */ u8 unk5; - /* 0x06 */ u8 unk6; - /* 0x07 */ u8 unk7; + /* 0x04 */ u8 unk4[4]; /* 0x08 */ f32 course_height; - u32 unkC[10]; // Not an array. Unknown values. - - /* 0x34 */ u16 geometry; - /* 0x36 */ u16 collectables; // Objects such as bananas, balloons, etc. - /* 0x38 */ u16 skybox; + /* 0x0C */ u8 padC[0x14]; - /* 0x3A */ u16 unk3A; - /* 0x3C */ u16 unk3C; + /* 0x20 */ s32 *unk20; + + /* 0x24 */ u8 pad24[0x10]; - /* 0x3E */ u16 r; // Fog related - /* 0x40 */ u16 g; - /* 0x42 */ u16 b; + /* 0x34 */ s16 geometry; + /* 0x36 */ s16 collectables; // Objects such as bananas, balloons, etc. + /* 0x38 */ s16 skybox; + + // Fog related? + /* 0x3A */ s16 unk3A; + /* 0x3C */ s16 unk3C; + /* 0x3E */ s16 fogR; + /* 0x40 */ s16 fogG; + /* 0x42 */ s16 fogB; + + /* 0x44 */ u8 unk44[0x5]; + /* 0x49 */ s8 unk49; + /* 0x4A */ u8 unk4A; /* 0x4B */ u8 laps; - /* 0x4C */ u8 race_type; + /* 0x4C */ s8 race_type; /* 0x4D */ u8 vehicle; /* 0x4E */ u8 available_vehicles; - /* 0x4F */ u8 unk4F; - /* 0x50 */ u8 unk50; - /* 0x51 */ u8 unk51; + /* 0x4F */ u8 unk4F[3]; /* 0x52 */ u8 music; /* 0x53 */ u8 unk53; /* 0x54 */ u16 instruments; - u32 unk58[14]; // Not an array. Unknown values. + /* 0x56 */ u8 pad56[0x1E]; + + /* 0x74 */ s8 *unk74[7]; // Weather related? - /* 0x90 */ u16 weather_enable; - /* 0x92 */ u16 unk92; + /* 0x90 */ s16 weather_enable; + /* 0x92 */ s16 unk92; /* 0x94 */ u8 unk94; /* 0x95 */ u8 unk95; - /* 0x96 */ u16 unk96; - /* 0x98 */ u16 unk98; + /* 0x96 */ s16 unk96; + /* 0x98 */ s16 unk98; + /* 0x9A */ s16 unk9A; - u32 unk9C[11]; // Not an array. Unknown values. - -} dkr_level_header_t; + /* 0x9C */ s8 unk9C; + /* 0x9D */ u8 unk9D; + /* 0x9E */ u8 unk9E; + /* 0x9F */ u8 unk9F; + /* 0xA0 */ s32 unkA0; + /* 0xA4 */ s32 unkA4; + /* 0xA8 */ u16 unkA8; + /* 0xAA */ u16 unkAA; + /* 0xAC */ s8 *unkAC; + + /* 0xB0 */ u8 padB0[0x3]; + /* 0xB3 */ u8 unkB3; + /* 0xB4 */ u8 padB4[0x6]; + /* 0xBA */ s16 unkBA; + /* 0xBE */ u8 padBE[0xA]; +} LevelHeader; /* Size: 0x50 bytes */ typedef struct { diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index cfeb27fe..33b3e70a 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -27,7 +27,6 @@ typedef struct unk800DD094 { extern unk800DD094 D_800DD064[2]; // Unknown number of entries extern unk800DD094 D_800DD094[2]; // Unknown number of entries - extern s32 D_800DD288; extern s32 D_800DD2A0; extern f32 D_800DD2CC; @@ -36,17 +35,19 @@ extern s16 D_800DD304; extern s8 D_800DD318; extern s32 D_800DD31C; extern s16 D_800DD328; -extern u16 D_800DD32C; +extern s16 D_800DD32C; extern s8 D_800DD330; extern s32 D_800DD37C; extern s32 D_800DD384; +extern s8 D_800DD38C; extern u8 D_800DD390; extern s16 D_800DD394; extern u8 D_800DD398; -extern u8 D_800DD3F0; +extern s8 D_800DD3F0; extern s32 D_800DD3F4; extern s32 D_800DD408; extern s32 D_800DD41C; +extern s32 D_800DD424; extern s32 D_800DFD94; extern f32 D_800E70A0; extern f32 D_800E70A4; @@ -113,24 +114,7 @@ extern u16 D_80121148[2]; // Unknown number of entries. extern u8 D_80121150[8]; // Unknown number of entries. extern s32 D_80121164; -/* Unknown size */ -typedef struct unk80121168 { - s32 unk0; - u8 pad4[0x45]; - s8 unk49; - u8 unk4A[2]; - u8 unk4C; - u8 pad4D[3]; - u16 pad50; - u8 unk52; - u8 pad53; - u16 unk54; - u8 pad56[0x3A]; - s16 unk90; - u8 pad92[0x12]; - s32 unkA4; -} unk80121168; -extern unk80121168* D_80121168; +extern LevelHeader* D_80121168; extern s32 D_80121170; extern s32 D_80121174; @@ -146,11 +130,13 @@ extern unk8012117C *D_8012117C[2]; // Unknown number of entries extern s32 D_801211C0; extern s16 D_801211C8[8]; // Unknown number of entries -extern s32 D_801211F8; +extern Gfx *D_801211F0[3]; // Unknown number of entries. +extern Gfx *D_801211F8; extern s32 D_80121208; extern s32 D_80121218; extern s32 D_80121228; extern s8 D_80121250[16]; // Unknown number of entries +extern s32 D_801234E8; extern s32 D_801234EC; extern s32 D_801234F0; extern s32 D_801234F4; @@ -168,6 +154,7 @@ extern s32 D_8012351C; extern s32 D_80123520; extern u8 D_80123524; extern u8 D_80123525; +extern u8 D_80123526; extern s32* D_80123548; // This is actually an OSMesgQueue pointer. extern s32 D_80123560; @@ -191,6 +178,7 @@ unk80120AC0 *func_80069D20(void); void func_800665E8(s32 arg0); void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); void func_800705F8(s32, f32, f32, f32); +void func_8006ECFC(s32 arg0); GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80065EA0.s") @@ -977,14 +965,284 @@ s32 func_8006B240(void) { return D_800DD31C; } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006B250.s") +#else + +extern s32 *D_80121160; +extern s32 D_800DD314; + +Settings *get_settings(void); +s32 *func_80076C58(s32); +LevelHeader *func_80070C9C(s32, s32); +void func_8006C1AC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8006C2E4(void); +s16 func_8006C2F0(void); +void func_8006DB20(s32 arg0); +void func_80072708(void); + +// load_level(levelID, numOfPlayers, entrance, vehicle, ???); +void func_8006B250(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 sp48; + s32 sp44; + Settings *settings; + s32 temp_s0_2; + s32 temp_s0_5; + s32 temp_t8_3; + s32 temp_v0_5; + s8 *temp_v0_4; + s32 phi_v1; + s32 phi_v1_2; + s32 phi_v0_2; + s32 phi_s0; + s32 phi_v1_5; + s8 phi_s0_2; + s32 phi_at; + s32 phi_s0_3; + s32 phi_s0_5; + s32 phi_v1_9; + s32 temp, temp2; + + func_80072708(); + if (arg4 == -1) { + arg4 = 0; + } + if (arg1 == -1) { + sp48 = 1; + arg1 = 0; + } else { + sp48 = 0; + } + if (arg1 == 0) { + func_8000318C(0x8); + } else if (arg1 == 1) { + func_8000318C(0xC); + } else { + func_8000318C(0x10); + } + + settings = get_settings(); + D_80121160 = func_80076C58(0x16); + phi_v1 = 0; + while (-1 != D_80121160[phi_v1]) { + phi_v1++; + } + phi_v1--; + if (arg0 >= phi_v1) { + arg0 = 0; + } + temp2 = D_80121160[arg0]; + temp = D_80121160[arg0 + 1] - temp2; + D_80121168 = func_80070C9C(temp, 0xFFFF00FF); + func_80076E68(0x17, D_80121168, temp2, temp); + D_800DD330 = 0; + sp44 = arg0; + if (D_80121168->race_type == 0) { + func_8006C2E4(); + } + if (func_8006C2F0() == 0) { + if (D_800DD32C == 0) { + if (D_80121168->race_type == 8) { + phi_v1_2 = settings->courseFlagsPtr[temp2] & 1; + phi_v0_2 = 0; + if (D_80121168->world == 0 || D_80121168->world == 5) { + phi_v0_2 = 1; + } + if (phi_v1_2 == 0 || phi_v0_2 != 0) { + func_8006C1AC(arg0, arg2, arg3, arg4); + if ((settings->bosses & (1 << settings->worldId)) != 0) { + arg4 = 7; + } else { + arg4 = 3; + } + if (phi_v0_2 != 0) { + arg4 = 0; + if (phi_v1_2 != 0) { + D_800DD330 = (u8)2; + } + } + temp_v0_4 = func_8001E29C(0x43); + phi_s0 = 0; + while(arg0 != temp_v0_4[phi_s0 + 1]) { + phi_s0++; + } + arg0 = temp_v0_4[phi_s0 + 1]; + arg2 = arg4; + } + + } + if (D_80121168->race_type == 5) { + if (D_80121168->world > 0 && D_80121168->world < 5) { + if ((settings->keys & (1 << D_80121168->world)) != 0) { + temp_v0_5 = 0x4000 << (D_80121168->world + 0x1F); + if ((settings->cutsceneFlags & temp_v0_5) == 0) { + func_8006C1AC(arg0, arg2, arg3, arg4); + settings->cutsceneFlags |= temp_v0_5; + arg2 = 0; + arg4 = 5; + arg0 = func_8001E29C(0x44)[D_80121168->world - 1]; + } + } + } + } + if (D_80121168->race_type == 5 && D_80121168->world == 0 && (settings->cutsceneFlags & 0x2000) == 0 && settings->wizpigAmulet >= 4) { + s32 temp_a1 = arg2; + s32 temp_a3 = arg4; + arg4 = 0; + arg2 = 0; + func_8006C1AC(arg0, temp_a1, arg3, temp_a3); + settings->cutsceneFlags |= 0x2000; + arg0 = (s32) func_8001E29C(0x44)[1]; + } + } + } + D_800DD32C = 0; + if (sp44 != arg0) { + func_80071140(D_80121168); + temp2 = D_80121160[arg0]; + temp = D_80121160[arg0 + 1] - temp2; + D_80121168 = func_80070C9C(temp, 0xFFFF00FF); + func_80076E68(0x17, D_80121168, temp2, temp); + } + func_80071140(D_80121160); + func_8006BFC8(&D_80121168->unk20); + func_8000CBC0(); + D_80121164 = arg0; + for (phi_v1_5 = 0; phi_v1_5 < 7; phi_v1_5++) { + if ((s32)D_80121168->unk74[phi_v1_5] != -1) { + D_80121168->unk74[phi_v1_5] = func_8001E29C((s32)D_80121168->unk74[phi_v1_5]); + func_8007F1E8(D_80121168->unk74[phi_v1_5]); + } + } + if (arg4 == 0x64) { + if(get_trophy_race_world_id() != 0 && D_80121168->race_type == 0) { + arg4 = 0; + } else if(is_in_tracks_mode() == 1 && D_80121168->race_type == 0) { + arg4 = 0; + } + } + if (D_80121168->race_type == 0 || D_80121168->race_type == 8) { + D_800DD31C = 1; + } else { + D_800DD31C = 0; + } + if (sp48 != 0 && D_80121168->race_type != 7) { + D_80121168->race_type = 6; + } + func_80000BE0(D_80121168->unkB3); + func_80000CBC(); + func_80031BB8(0x20); + phi_s0_2 = (u8)0; + if (arg3 >= 0 && arg3 < 3) { + phi_s0_2 = D_80121168->unk4F[arg3]; + } + func_80017E74(phi_s0_2); + settings->courseId = arg0; + if (D_80121168->world != -1) { + settings->worldId = D_80121168->world; + } + if (settings->worldId == 0 && settings->worldId > 0) { + D_800DD314 = func_8006DB2C(); + } + if (settings->worldId == 0 && settings->worldId > 0 && D_800DD314 != -1) { + arg3 = D_800DD314; + } + func_8006DB20(arg3); + if (D_80121168->race_type == 5) { + if (settings->worldId > 0) { + temp_s0_5 = 8 << (settings->worldId + 31); + if (settings->worldId == 5) { + if (settings->balloonsPtr[0] >= 47) { + if (settings->ttAmulet >= 4) { + if ((settings->cutsceneFlags & temp_s0_5) == 0) { + settings->cutsceneFlags |= temp_s0_5; + arg4 = 5; + } + } + } + } else { + if (settings->balloonsPtr[settings->worldId] >= 4) { + if ((settings->cutsceneFlags & temp_s0_5) == 0) { + settings->cutsceneFlags |= temp_s0_5; + arg4 = 5; + } + } + temp_t8_3 = temp_s0_5 << 5; + if (settings->balloonsPtr[settings->worldId] >= 8) { + if ((settings->cutsceneFlags & temp_t8_3) == 0) { + settings->cutsceneFlags |= temp_t8_3; + arg4 = 5; + } + } + } + } + } + if (arg1 != 0 && D_80121168->race_type == 0) { + arg4 = 0x64; + } + if (D_80121168->race_type == 0 || ((D_80121168->race_type & 0x40) != 0 && is_in_two_player_adventure(D_80121168->race_type) != 0)) { + D_800DD318 = (u8)1; + arg4 = 0x64; + } else { + D_800DD318 = (u8)0; + } + if (D_80121168->race_type == 0 && sp48 == 0 && func_8000E4C8(arg4) != 0) { + arg4 = 0x64; + } + func_8001E450(arg4); + func_800249F0(D_80121168->geometry, D_80121168->skybox, arg1, arg3, arg2, D_80121168->collectables, D_80121168->unkBA); + if (D_80121168->unk3A == 0 && D_80121168->unk3C == 0 && D_80121168->fogR == 0 && D_80121168->fogG == 0 && D_80121168->fogB == 0) { + phi_s0_3 = 0; + while(phi_s0_3 < 4) { + func_800307BC(phi_s0_3); + phi_s0_3++; + } + } else { + phi_s0_3 = 0; + while(phi_s0_3 < 4) { + func_80030664(phi_s0_3, D_80121168->unk3A, D_80121168->unk3C, (u8)D_80121168->fogR, D_80121168->fogG, D_80121168->fogB); + phi_s0_3++; + } + } + settings = get_settings(); + if (D_80121168->world != -1) { + settings->worldId = D_80121168->world; + } + settings->courseId = arg0; + if (D_80121168->weather_enable > 0) { + func_800AB4A8( + D_80121168->unk92, + D_80121168->weather_enable, + D_80121168->unk96 << 8, + D_80121168->unk98 << 8, + D_80121168->unk9A << 8, + D_80121168->unk94 * 0x101, + D_80121168->unk95 * 0x101 + ); + func_800AB308(-1, -0x200); + } + if (D_80121168->unk49 == -1) { + D_80121168->unkA4 = func_8007AE74(D_80121168->unkA4); + D_80121168->unkA8 = (u16)0; + D_80121168->unkAA = (u16)0; + } + if ((s32)D_80121168->unkAC != -1) { + D_80121168->unkAC = func_8001E29C((s32)D_80121168->unkAC); + func_8007F414(D_80121168->unkAC); + } + func_800660EC((f32)D_80121168->unk9C); + func_80077B34(D_80121168->unk9D, D_80121168->unk9E, D_80121168->unk9F); + func_8007A974(); + func_8007AB24(D_80121168->unk4[arg1]); +} +#endif void func_8006BD10(f32 arg0) { - if (D_80121168->unk52 != 0) { + if (D_80121168->music != 0) { func_800012E8(); - func_80000B34(D_80121168->unk52); + func_80000B34(D_80121168->music); func_800014BC(arg0); - func_80001074(D_80121168->unk54); + func_80001074(D_80121168->instruments); } } @@ -993,10 +1251,10 @@ s32 func_8006BD88(void) { } u8 func_8006BD98(void) { - return D_80121168->unk4C; + return D_80121168->race_type; } -unk80121168* func_8006BDB0(void) { +LevelHeader* func_8006BDB0(void) { return D_80121168; } @@ -1019,7 +1277,7 @@ void func_8006BEFC(void) { func_8002C7D4(); func_80008174(); func_80000968(0); - if (D_80121168->unk90 > 0) { + if (D_80121168->weather_enable > 0) { func_800AB35C(); } if (D_80121168->unk49 == 0xFF) { @@ -1027,7 +1285,64 @@ void func_8006BEFC(void) { } } +extern s32 *D_80121160; +Settings *get_settings(void); +s32 *func_80076C58(s32); + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006BFC8.s") +#else +void func_8006BFC8(s8 *arg0) { + s32 temp, temp2; + s16 phi_v1; + s8 phi_s0 = 0; + + if (!is_in_tracks_mode()) { + Settings *settings = get_settings(); + // Regalloc issue: temp3 should be a3, not v1. + s32 temp3 = settings->courseFlagsPtr[settings->courseId]; + if (temp3 & 2) { + phi_s0 = 1; + } + if (temp3 & 4) { + phi_s0 = 2; + } + } else { + phi_s0 = 3; + } + + if (get_trophy_race_world_id() != 0) { + phi_s0 = 4; + } + + if(is_in_adventure_two()){ + phi_s0 += 5; + } + + phi_s0 = arg0[phi_s0]; + + if ((func_8009C30C() << 6) < 0) { + phi_s0 = 9; + } + if (func_8006DA0C() == 1) { + phi_s0 = 5; + } + D_80121160 = func_80076C58(1); + phi_v1 = 0; + while (-1 != (s32)D_80121160[phi_v1]) { + phi_v1++; + } + phi_v1--; + if (phi_s0 >= phi_v1) { + phi_s0 = 0; + } + temp2 = D_80121160[phi_s0]; + temp = D_80121160[phi_s0 + 1] - temp2; + D_801211C0 = func_80070C9C(temp, 0xFFFF00FF, D_80121160); + func_80076E68(0, D_801211C0, temp2, temp); + func_80071140(D_80121160); +} +#endif void func_8006C164(void) { func_80071140(D_801211C0); @@ -1109,7 +1424,81 @@ void func_8006C330(s32 arg0) { } #endif +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C3E0.s") +#else +extern Gfx *D_801211F0; +extern u8 D_800DD374; +extern u8 D_800DD3A0; +extern u16 D_80121260; +extern u8 D_80123538; + +extern s32 D_80123544; +extern s32 D_801234E8; + +void func_80079350(u16*, s32*, s32, u8, s32); +void func_80079480(u16*, u8*, s32**, s32); + +void func_8006C3E0(void) { + s32 sp24; + + func_80070B30(); + func_800C6170(); + D_800DD374 = 1; + if (func_8006F4EC() != 0) { + D_800DD374 = 0; + } + D_80123514 = 0; + D_80123518 = 0; + + if (osTvType == 0) { + sp24 = 0xE; + } else if (osTvType == 1) { + sp24 = 0; + } else if (osTvType == 2) { + sp24 = 0x1C; + } + + func_80079350(&D_80121260, &D_801234E8, 0xD, sp24, 1); + D_800DD3A0 = 0; + if (func_8006EFB8() == 0) { + D_800DD3A0 = 1; + } + func_8007A310(1, &D_80121260); + func_80076BA0(); + func_80078100(&D_80121260); + func_80000450(&D_80121260); + func_80008040(); + D_800DD384 = func_8006A10C(); + func_8007AC70(); + func_8005F850(); + func_8000BF8C(); + func_800B5E88(); + func_800598D0(); + func_800AE530(); + func_800AB1F0(); + func_8006E3BC(); + func_8006EFDC(); + func_800C3C00(); + func_80075B18(); + func_80081218(); + func_800C7350(); + osCreateMesgQueue(&D_80123548, &D_80123544, 1); + func_80079480(&D_80121260, &D_80123538, &D_80123548, 3); + D_80123560 = 0; + D_80123504 = 0; + D_80123508 = 0; + D_801234E8 = 0; + + // ??? + D_801211F8 = D_801211F0; + fast3d_cmd(D_801211F8++, 0xE9000000, 0x00000000) + fast3d_cmd(D_801211F8++, 0xB8000000, 0x00000000) + + osSetTime(0); +} +#endif + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C60C.s") void func_8006CAE4(s32 arg0, s32 arg1, s32 arg2) { @@ -1136,7 +1525,26 @@ void func_8006CB58(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { func_80072298(1); } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CC14.s") +void func_8006CC14(void) { + func_800710B0(0); + if (D_800DD38C == 0) { + if (D_800DD3F0 != 1) { + func_80077A54(); + } + D_800DD38C = 1; + } + func_8006BEFC(); + func_800C01D8(&D_800DD3F4); + func_800AE270(); + func_800A003C(); + func_800C30CC(); + D_801211F8 = D_801211F0[D_801234E8]; + fast3d_cmd(D_801211F8++, 0xE9000000, 0x00000000) + fast3d_cmd(D_801211F8++, 0xB8000000, 0x00000000) + func_800710B0(2); +} + +// Has a jump table GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CCF0.s") void func_8006D8A4(void) { @@ -1281,10 +1689,58 @@ void func_8006DC58(s32 arg0) { } } +// Has a jump table GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DCF8.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E2E8.s") + +void func_8006E2E8(s32 arg0, s32 arg1, s32 arg2) { + if (D_80123514 == 0) { + func_8006DBE4(); + if (func_800C73E0() == 0) { + D_801211F8 = D_801211F0[D_801234E8]; + fast3d_cmd(D_801211F8++, 0xE9000000, 0x00000000) + fast3d_cmd(D_801211F8++, 0xB8000000, 0x00000000) + } + } + if (arg0 != -1) { + func_8006DB3C(arg0, arg1, 0, 2, arg2); + D_80123514 = (u8)0; + return; + } + D_80123514 = (u8)1; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E3BC.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E5BC.s") + +void func_8006E5BC(void) { + s32 i, j; + gSettingsPtr->playerCount = func_8009C3C8(); + for (i = 0; i < 8; i++) { + gSettingsPtr->racers[i].best_times = 0; + gSettingsPtr->racers[i].character = func_8009C228(i); + if (gSettingsPtr->playerCount >= 2) { + gSettingsPtr->racers[i].starting_position = i; + } else if (is_in_two_player_adventure()) { + gSettingsPtr->racers[i].starting_position = 5 - i; + } else { + gSettingsPtr->racers[i].starting_position = 7 - i; + } + gSettingsPtr->racers[i].unk7 = 0; + for(j = 0; j < 4; j++) { + gSettingsPtr->racers[i].placements[j] = 0; + } + gSettingsPtr->racers[i].course_time = 0; + for(j = 0; j < 3; j++) { + gSettingsPtr->racers[i].lap_times[j] = 0; + } + } + gSettingsPtr->timeTrialRacer = 0; + gSettingsPtr->unk115[0] = 0; + gSettingsPtr->unk115[1] = 0; + gSettingsPtr->display_times = 0; + gSettingsPtr->worldId = 0; + gSettingsPtr->courseId = 0; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E770.s") void func_8006E994(Settings* settings) { @@ -1414,8 +1870,109 @@ s32 func_8006EFB8(void) { } #endif +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006EFDC.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F140.s") +#else + +/* Size: 0x40 bytes, I think this might be a 4x4 matrix. */ +typedef struct unk80121200 { + u8 pad0[0x40]; +} unk80121200; + +/* Size: 10 bytes */ +typedef struct unk80121210 { + u8 pad0[10]; +} unk80121210; + +/* Size: 16 bytes */ +typedef struct unk80121220 { + u8 pad0[16]; +} unk80121220; + +extern s32 D_8012350C; + +extern s32 D_800DD3BC; +extern s32 D_800DD3CC; +extern s32 D_800DD3DC; +extern s32 D_800DD3EC; + +extern s32 D_80123528; +extern s32 D_8012352C; +extern s32 D_80123530; +extern s32 D_80123534; + +extern unk80121200 *D_80121200[3]; +extern unk80121210 *D_80121210[3]; +extern unk80121220 *D_80121220[3]; + +void *func_80070C9C(s32, s32); // Allocates memory? + +void func_8006EFDC(void) { + s32 size; + s8* current; + + D_8012350C = 3; + + size = (D_800DD3EC * sizeof(unk80121220)) + + (D_800DD3BC * sizeof(Gfx)) + + (D_800DD3DC * sizeof(unk80121200)) + + (D_800DD3CC * sizeof(unk80121210)); + + current = (s8*)func_80070C9C(size, 0xFF0000FF); + D_801211F0[0] = (Gfx*)current; + current += (D_800DD3BC * sizeof(Gfx)); + D_80121200[0] = (unk80121200*)current; + current += (D_800DD3DC * sizeof(unk80121200)); + D_80121210[0] = (unk80121210*)current; + current += (D_800DD3CC * sizeof(unk80121210)); + D_80121220[0] = (unk80121220*)current; + + current = (s8*)func_80070C9C(size, 0xFFFF00FF); + D_801211F0[1] = (Gfx*)current; + current += (D_800DD3BC * sizeof(Gfx)); + D_80121200[1] = (unk80121200*)current; + current += (D_800DD3DC * sizeof(unk80121200)); + D_80121210[1] = (unk80121210*)current; + current += (D_800DD3CC * sizeof(unk80121210)); + D_80121220[1] = (unk80121220*)current; + + D_80123528 = D_800DD3BC; + D_8012352C = D_800DD3DC; + D_80123530 = D_800DD3EC; + D_80123534 = D_800DD3CC; +} +#endif + +void func_8006F140(s32 arg0) { + if (D_800DD394 == 0) { + D_800DD394 = 0x28; + D_80123524 = 0; + D_80123526 = 0; + if (arg0 == 1) { + func_800C01D8(&D_800DD41C); + } + if (arg0 == 3) { + D_800DD394 = 0x11A; + func_800C01D8(&D_800DD424); + } + if (arg0 == 4) { + D_800DD394 = 0x168; + func_800C01D8(&D_800DD424); + } + if (arg0 == 0) { + D_800DD394 = 2; + } + } +} + +// Unused? +void func_8006F20C(void) { + if (D_800DD394 == 0) { + func_800C01D8(&D_800DD41C); + D_800DD394 = 0x28; + D_80123524 = 1; + } +} void func_8006F254(void) { if (D_800DD394 == 0) {