From 8a4cc61ce43a8d68f3a1f0063b42cffcebe674f6 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Fri, 24 Jul 2020 05:30:03 -0500 Subject: [PATCH] Decompiled 19 functions in unknown_066AA0.c --- .../unknown_066AA0/func_800660EC.s | 45 - .../unknown_066AA0/func_80066230.s | 72 -- .../unknown_066AA0/func_80066348.s | 40 - .../unknown_066AA0/func_800663DC.s | 45 - .../unknown_066AA0/func_8006652C.s | 57 -- .../unknown_066AA0/func_80066AA8.s | 74 -- .../unknown_066AA0/func_80066C2C.s | 47 -- .../unknown_066AA0/func_8006807C.s | 57 -- .../unknown_066AA0/func_80068408.s | 66 -- .../unknown_066AA0/func_80069E14.s | 74 -- .../unknown_066AA0/func_8006A458.s | 48 -- .../unknown_066AA0/func_8006BEFC.s | 55 -- .../unknown_066AA0/func_8006C22C.s | 49 -- .../unknown_066AA0/func_8006CB58.s | 49 -- .../unknown_066AA0/func_8006D968.s | 45 - .../unknown_066AA0/func_8006DB3C.s | 44 - .../unknown_066AA0/func_8006E994.s | 70 -- .../unknown_066AA0/func_8006F29C.s | 43 - .../unknown_066AA0/func_8006F43C.s | 40 - include/fast3d.h | 20 + include/structs.h | 4 +- src/mips1/unknown_0667D0.c | 1 - src/mips1/unknown_066AA0.c | 771 +++++++++++++++++- src/mips1/unknown_080240.c | 16 +- 24 files changed, 763 insertions(+), 1069 deletions(-) delete mode 100644 asm/non_matchings/unknown_066AA0/func_800660EC.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80066230.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80066348.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_800663DC.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006652C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80066AA8.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80066C2C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006807C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80068408.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_80069E14.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006A458.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006BEFC.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006C22C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006CB58.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006D968.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006DB3C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006E994.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006F29C.s delete mode 100644 asm/non_matchings/unknown_066AA0/func_8006F43C.s create mode 100644 include/fast3d.h diff --git a/asm/non_matchings/unknown_066AA0/func_800660EC.s b/asm/non_matchings/unknown_066AA0/func_800660EC.s deleted file mode 100644 index 2131e1e2..00000000 --- a/asm/non_matchings/unknown_066AA0/func_800660EC.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800660EC -/* 066CEC 800660EC 44802000 */ mtc1 $zero, $f4 -/* 066CF0 800660F0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 066CF4 800660F4 460C203C */ c.lt.s $f4, $f12 -/* 066CF8 800660F8 AFBF0024 */ sw $ra, 0x24($sp) -/* 066CFC 800660FC 45000021 */ bc1f .L80066184 -/* 066D00 80066100 3C0142B4 */ li $at, 0x42B40000 # 90.000000 -/* 066D04 80066104 44813000 */ mtc1 $at, $f6 -/* 066D08 80066108 3C028012 */ lui $v0, %hi(D_80120D10) # $v0, 0x8012 -/* 066D0C 8006610C 4606603C */ c.lt.s $f12, $f6 -/* 066D10 80066110 24420D10 */ addiu $v0, %lo(D_80120D10) # addiu $v0, $v0, 0xd10 -/* 066D14 80066114 4500001C */ bc1f .L80066188 -/* 066D18 80066118 8FBF0024 */ lw $ra, 0x24($sp) -/* 066D1C 8006611C C4480000 */ lwc1 $f8, ($v0) -/* 066D20 80066120 3C048012 */ lui $a0, %hi(D_80120EE0) # $a0, 0x8012 -/* 066D24 80066124 46086032 */ c.eq.s $f12, $f8 -/* 066D28 80066128 24840EE0 */ addiu $a0, %lo(D_80120EE0) # addiu $a0, $a0, 0xee0 -/* 066D2C 8006612C 45010015 */ bc1t .L80066184 -/* 066D30 80066130 3C058012 */ lui $a1, %hi(D_80120D6C) # $a1, 0x8012 -/* 066D34 80066134 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 066D38 80066138 44815000 */ mtc1 $at, $f10 -/* 066D3C 8006613C E44C0000 */ swc1 $f12, ($v0) -/* 066D40 80066140 3C01800E */ lui $at, %hi(D_800E70A0) # $at, 0x800e -/* 066D44 80066144 C43070A0 */ lwc1 $f16, %lo(D_800E70A0)($at) -/* 066D48 80066148 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 066D4C 8006614C 44819000 */ mtc1 $at, $f18 -/* 066D50 80066150 44066000 */ mfc1 $a2, $f12 -/* 066D54 80066154 3C073FAA */ lui $a3, (0x3FAAAAAB >> 16) # lui $a3, 0x3faa -/* 066D58 80066158 34E7AAAB */ ori $a3, (0x3FAAAAAB & 0xFFFF) # ori $a3, $a3, 0xaaab -/* 066D5C 8006615C 24A50D6C */ addiu $a1, %lo(D_80120D6C) # addiu $a1, $a1, 0xd6c -/* 066D60 80066160 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 066D64 80066164 E7B00014 */ swc1 $f16, 0x14($sp) -/* 066D68 80066168 0C033248 */ jal func_800CC920 -/* 066D6C 8006616C E7B20018 */ swc1 $f18, 0x18($sp) -/* 066D70 80066170 3C048012 */ lui $a0, %hi(D_80120EE0) # $a0, 0x8012 -/* 066D74 80066174 3C058012 */ lui $a1, %hi(D_80120FE0) # $a1, 0x8012 -/* 066D78 80066178 24A50FE0 */ addiu $a1, %lo(D_80120FE0) # addiu $a1, $a1, 0xfe0 -/* 066D7C 8006617C 0C01BE1C */ jal func_8006F870 -/* 066D80 80066180 24840EE0 */ addiu $a0, %lo(D_80120EE0) # addiu $a0, $a0, 0xee0 -.L80066184: -/* 066D84 80066184 8FBF0024 */ lw $ra, 0x24($sp) -.L80066188: -/* 066D88 80066188 27BD0028 */ addiu $sp, $sp, 0x28 -/* 066D8C 8006618C 03E00008 */ jr $ra -/* 066D90 80066190 00000000 */ nop diff --git a/asm/non_matchings/unknown_066AA0/func_80066230.s b/asm/non_matchings/unknown_066AA0/func_80066230.s deleted file mode 100644 index b817836a..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066230.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_80066230 -/* 066E30 80066230 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 066E34 80066234 AFBF0014 */ sw $ra, 0x14($sp) -/* 066E38 80066238 AFA40030 */ sw $a0, 0x30($sp) -/* 066E3C 8006623C AFA50034 */ sw $a1, 0x34($sp) -/* 066E40 80066240 0C01994B */ jal func_8006652C -/* 066E44 80066244 00002025 */ move $a0, $zero -/* 066E48 80066248 0C01997A */ jal func_800665E8 -/* 066E4C 8006624C 00002025 */ move $a0, $zero -/* 066E50 80066250 0C01A748 */ jal func_80069D20 -/* 066E54 80066254 00000000 */ nop -/* 066E58 80066258 844E0000 */ lh $t6, ($v0) -/* 066E5C 8006625C 44806000 */ mtc1 $zero, $f12 -/* 066E60 80066260 A7AE002A */ sh $t6, 0x2a($sp) -/* 066E64 80066264 844F0002 */ lh $t7, 2($v0) -/* 066E68 80066268 24088000 */ li $t0, -32768 -/* 066E6C 8006626C A7AF0028 */ sh $t7, 0x28($sp) -/* 066E70 80066270 84580004 */ lh $t8, 4($v0) -/* 066E74 80066274 3C06BF80 */ lui $a2, 0xbf80 -/* 066E78 80066278 A7B80026 */ sh $t8, 0x26($sp) -/* 066E7C 8006627C C444000C */ lwc1 $f4, 0xc($v0) -/* 066E80 80066280 46006386 */ mov.s $f14, $f12 -/* 066E84 80066284 E7A40020 */ swc1 $f4, 0x20($sp) -/* 066E88 80066288 C4460010 */ lwc1 $f6, 0x10($v0) -/* 066E8C 8006628C 00000000 */ nop -/* 066E90 80066290 E7A6001C */ swc1 $f6, 0x1c($sp) -/* 066E94 80066294 C4480014 */ lwc1 $f8, 0x14($v0) -/* 066E98 80066298 00000000 */ nop -/* 066E9C 8006629C E7A80018 */ swc1 $f8, 0x18($sp) -/* 066EA0 800662A0 84590038 */ lh $t9, 0x38($v0) -/* 066EA4 800662A4 00000000 */ nop -/* 066EA8 800662A8 A7B90024 */ sh $t9, 0x24($sp) -/* 066EAC 800662AC A4400004 */ sh $zero, 4($v0) -/* 066EB0 800662B0 A4400002 */ sh $zero, 2($v0) -/* 066EB4 800662B4 A4480000 */ sh $t0, ($v0) -/* 066EB8 800662B8 A4400038 */ sh $zero, 0x38($v0) -/* 066EBC 800662BC E44C000C */ swc1 $f12, 0xc($v0) -/* 066EC0 800662C0 E44C0010 */ swc1 $f12, 0x10($v0) -/* 066EC4 800662C4 E44C0014 */ swc1 $f12, 0x14($v0) -/* 066EC8 800662C8 0C007578 */ jal func_8001D5E0 -/* 066ECC 800662CC AFA2002C */ sw $v0, 0x2c($sp) -/* 066ED0 800662D0 8FA40030 */ lw $a0, 0x30($sp) -/* 066ED4 800662D4 8FA50034 */ lw $a1, 0x34($sp) -/* 066ED8 800662D8 0C019B37 */ jal func_80066CDC -/* 066EDC 800662DC 00000000 */ nop -/* 066EE0 800662E0 8FA3002C */ lw $v1, 0x2c($sp) -/* 066EE4 800662E4 87A90024 */ lh $t1, 0x24($sp) -/* 066EE8 800662E8 00000000 */ nop -/* 066EEC 800662EC A4690038 */ sh $t1, 0x38($v1) -/* 066EF0 800662F0 87AA002A */ lh $t2, 0x2a($sp) -/* 066EF4 800662F4 00000000 */ nop -/* 066EF8 800662F8 A46A0000 */ sh $t2, ($v1) -/* 066EFC 800662FC 87AB0028 */ lh $t3, 0x28($sp) -/* 066F00 80066300 00000000 */ nop -/* 066F04 80066304 A46B0002 */ sh $t3, 2($v1) -/* 066F08 80066308 87AC0026 */ lh $t4, 0x26($sp) -/* 066F0C 8006630C 00000000 */ nop -/* 066F10 80066310 A46C0004 */ sh $t4, 4($v1) -/* 066F14 80066314 C7AA0020 */ lwc1 $f10, 0x20($sp) -/* 066F18 80066318 00000000 */ nop -/* 066F1C 8006631C E46A000C */ swc1 $f10, 0xc($v1) -/* 066F20 80066320 C7B0001C */ lwc1 $f16, 0x1c($sp) -/* 066F24 80066324 00000000 */ nop -/* 066F28 80066328 E4700010 */ swc1 $f16, 0x10($v1) -/* 066F2C 8006632C C7B20018 */ lwc1 $f18, 0x18($sp) -/* 066F30 80066330 00000000 */ nop -/* 066F34 80066334 E4720014 */ swc1 $f18, 0x14($v1) -/* 066F38 80066338 8FBF0014 */ lw $ra, 0x14($sp) -/* 066F3C 8006633C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 066F40 80066340 03E00008 */ jr $ra -/* 066F44 80066344 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_80066348.s b/asm/non_matchings/unknown_066AA0/func_80066348.s deleted file mode 100644 index 2bf5d388..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066348.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_80066348 -/* 066F48 80066348 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 066F4C 8006634C 3C0E8012 */ lui $t6, %hi(D_80120D14) # $t6, 0x8012 -/* 066F50 80066350 81CE0D14 */ lb $t6, %lo(D_80120D14)($t6) -/* 066F54 80066354 3C038012 */ lui $v1, %hi(D_80120CE4) # $v1, 0x8012 -/* 066F58 80066358 8C630CE4 */ lw $v1, %lo(D_80120CE4)($v1) -/* 066F5C 8006635C AFBF0014 */ sw $ra, 0x14($sp) -/* 066F60 80066360 E7AC0018 */ swc1 $f12, 0x18($sp) -/* 066F64 80066364 E7AE001C */ swc1 $f14, 0x1c($sp) -/* 066F68 80066368 11C00002 */ beqz $t6, .L80066374 -/* 066F6C 8006636C AFA60020 */ sw $a2, 0x20($sp) -/* 066F70 80066370 24630004 */ addiu $v1, $v1, 4 -.L80066374: -/* 066F74 80066374 00037900 */ sll $t7, $v1, 4 -/* 066F78 80066378 01E37821 */ addu $t7, $t7, $v1 -/* 066F7C 8006637C 3C188012 */ lui $t8, %hi(D_80120AC0) # $t8, 0x8012 -/* 066F80 80066380 27180AC0 */ addiu $t8, %lo(D_80120AC0) # addiu $t8, $t8, 0xac0 -/* 066F84 80066384 000F7880 */ sll $t7, $t7, 2 -/* 066F88 80066388 01F81021 */ addu $v0, $t7, $t8 -/* 066F8C 8006638C C44A000C */ lwc1 $f10, 0xc($v0) -/* 066F90 80066390 C7A80018 */ lwc1 $f8, 0x18($sp) -/* 066F94 80066394 C4460014 */ lwc1 $f6, 0x14($v0) -/* 066F98 80066398 C7A40020 */ lwc1 $f4, 0x20($sp) -/* 066F9C 8006639C 460A4081 */ sub.s $f2, $f8, $f10 -/* 066FA0 800663A0 C4520010 */ lwc1 $f18, 0x10($v0) -/* 066FA4 800663A4 C7B0001C */ lwc1 $f16, 0x1c($sp) -/* 066FA8 800663A8 46062001 */ sub.s $f0, $f4, $f6 -/* 066FAC 800663AC 46021102 */ mul.s $f4, $f2, $f2 -/* 066FB0 800663B0 46128381 */ sub.s $f14, $f16, $f18 -/* 066FB4 800663B4 460E7182 */ mul.s $f6, $f14, $f14 -/* 066FB8 800663B8 00000000 */ nop -/* 066FBC 800663BC 46000282 */ mul.s $f10, $f0, $f0 -/* 066FC0 800663C0 46062200 */ add.s $f8, $f4, $f6 -/* 066FC4 800663C4 0C0326B4 */ jal sqrtf -/* 066FC8 800663C8 46085300 */ add.s $f12, $f10, $f8 -/* 066FCC 800663CC 8FBF0014 */ lw $ra, 0x14($sp) -/* 066FD0 800663D0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 066FD4 800663D4 03E00008 */ jr $ra -/* 066FD8 800663D8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_800663DC.s b/asm/non_matchings/unknown_066AA0/func_800663DC.s deleted file mode 100644 index 62b9c9af..00000000 --- a/asm/non_matchings/unknown_066AA0/func_800663DC.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800663DC -/* 066FDC 800663DC 240800B6 */ li $t0, 182 -/* 066FE0 800663E0 00E80019 */ multu $a3, $t0 -/* 066FE4 800663E4 8FB90010 */ lw $t9, 0x10($sp) -/* 066FE8 800663E8 3C028012 */ lui $v0, %hi(D_80120CE4) # $v0, 0x8012 -/* 066FEC 800663EC 8C420CE4 */ lw $v0, %lo(D_80120CE4)($v0) -/* 066FF0 800663F0 8FAA0014 */ lw $t2, 0x14($sp) -/* 066FF4 800663F4 00027100 */ sll $t6, $v0, 4 -/* 066FF8 800663F8 3C0F8012 */ lui $t7, %hi(D_80120AC0) # $t7, 0x8012 -/* 066FFC 800663FC 01C27021 */ addu $t6, $t6, $v0 -/* 067000 80066400 000E7080 */ sll $t6, $t6, 2 -/* 067004 80066404 25EF0AC0 */ addiu $t7, %lo(D_80120AC0) # addiu $t7, $t7, 0xac0 -/* 067008 80066408 01CF1821 */ addu $v1, $t6, $t7 -/* 06700C 8006640C 44842000 */ mtc1 $a0, $f4 -/* 067010 80066410 0000C012 */ mflo $t8 -/* 067014 80066414 44800000 */ mtc1 $zero, $f0 -/* 067018 80066418 44854000 */ mtc1 $a1, $f8 -/* 06701C 8006641C 03280019 */ multu $t9, $t0 -/* 067020 80066420 44868000 */ mtc1 $a2, $f16 -/* 067024 80066424 468021A0 */ cvt.s.w $f6, $f4 -/* 067028 80066428 3C014320 */ li $at, 0x43200000 # 160.000000 -/* 06702C 8006642C 44812000 */ mtc1 $at, $f4 -/* 067030 80066430 468042A0 */ cvt.s.w $f10, $f8 -/* 067034 80066434 3C0C800E */ lui $t4, 0x800e -/* 067038 80066438 A4780004 */ sh $t8, 4($v1) -/* 06703C 8006643C 468084A0 */ cvt.s.w $f18, $f16 -/* 067040 80066440 E466000C */ swc1 $f6, 0xc($v1) -/* 067044 80066444 E46A0010 */ swc1 $f10, 0x10($v1) -/* 067048 80066448 E4720014 */ swc1 $f18, 0x14($v1) -/* 06704C 8006644C 00004812 */ mflo $t1 -/* 067050 80066450 A4690002 */ sh $t1, 2($v1) -/* 067054 80066454 A4600038 */ sh $zero, 0x38($v1) -/* 067058 80066458 01480019 */ multu $t2, $t0 -/* 06705C 8006645C 01826021 */ addu $t4, $t4, $v0 -/* 067060 80066460 E4600024 */ swc1 $f0, 0x24($v1) -/* 067064 80066464 E4600028 */ swc1 $f0, 0x28($v1) -/* 067068 80066468 E460002C */ swc1 $f0, 0x2c($v1) -/* 06706C 8006646C E4600030 */ swc1 $f0, 0x30($v1) -/* 067070 80066470 E464001C */ swc1 $f4, 0x1c($v1) -/* 067074 80066474 00005812 */ mflo $t3 -/* 067078 80066478 A46B0000 */ sh $t3, ($v1) -/* 06707C 8006647C 918CD2F8 */ lbu $t4, -0x2d08($t4) -/* 067080 80066480 03E00008 */ jr $ra -/* 067084 80066484 A06C003B */ sb $t4, 0x3b($v1) - diff --git a/asm/non_matchings/unknown_066AA0/func_8006652C.s b/asm/non_matchings/unknown_066AA0/func_8006652C.s deleted file mode 100644 index b20a011e..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006652C.s +++ /dev/null @@ -1,57 +0,0 @@ -glabel func_8006652C -/* 06712C 8006652C 04800006 */ bltz $a0, .L80066548 -/* 067130 80066530 28810004 */ slti $at, $a0, 4 -/* 067134 80066534 10200004 */ beqz $at, .L80066548 -/* 067138 80066538 3C038012 */ lui $v1, %hi(D_80120CE0) # $v1, 0x8012 -/* 06713C 8006653C 24630CE0 */ addiu $v1, %lo(D_80120CE0) # addiu $v1, $v1, 0xce0 -/* 067140 80066540 10000004 */ b .L80066554 -/* 067144 80066544 AC640000 */ sw $a0, ($v1) -.L80066548: -/* 067148 80066548 3C038012 */ lui $v1, %hi(D_80120CE0) # $v1, 0x8012 -/* 06714C 8006654C 24630CE0 */ addiu $v1, %lo(D_80120CE0) # addiu $v1, $v1, 0xce0 -/* 067150 80066550 AC600000 */ sw $zero, ($v1) -.L80066554: -/* 067154 80066554 8C620000 */ lw $v0, ($v1) -/* 067158 80066558 240E0001 */ li $t6, 1 -/* 06715C 8006655C 1040000C */ beqz $v0, .L80066590 -/* 067160 80066560 3C038012 */ lui $v1, %hi(D_80120CE8) # $v1, 0x8012 -/* 067164 80066564 24010001 */ li $at, 1 -/* 067168 80066568 1041000C */ beq $v0, $at, .L8006659C -/* 06716C 8006656C 240F0002 */ li $t7, 2 -/* 067170 80066570 24010002 */ li $at, 2 -/* 067174 80066574 1041000C */ beq $v0, $at, .L800665A8 -/* 067178 80066578 24180003 */ li $t8, 3 -/* 06717C 8006657C 24010003 */ li $at, 3 -/* 067180 80066580 1041000C */ beq $v0, $at, .L800665B4 -/* 067184 80066584 24190004 */ li $t9, 4 -/* 067188 80066588 1000000C */ b .L800665BC -/* 06718C 8006658C 00000000 */ nop -.L80066590: -/* 067190 80066590 3C018012 */ lui $at, %hi(D_80120CE8) # $at, 0x8012 -/* 067194 80066594 10000009 */ b .L800665BC -/* 067198 80066598 AC2E0CE8 */ sw $t6, %lo(D_80120CE8)($at) -.L8006659C: -/* 06719C 8006659C 3C018012 */ lui $at, %hi(D_80120CE8) # $at, 0x8012 -/* 0671A0 800665A0 10000006 */ b .L800665BC -/* 0671A4 800665A4 AC2F0CE8 */ sw $t7, %lo(D_80120CE8)($at) -.L800665A8: -/* 0671A8 800665A8 3C018012 */ lui $at, %hi(D_80120CE8) # $at, 0x8012 -/* 0671AC 800665AC 10000003 */ b .L800665BC -/* 0671B0 800665B0 AC380CE8 */ sw $t8, %lo(D_80120CE8)($at) -.L800665B4: -/* 0671B4 800665B4 3C018012 */ lui $at, %hi(D_80120CE8) # $at, 0x8012 -/* 0671B8 800665B8 AC390CE8 */ sw $t9, %lo(D_80120CE8)($at) -.L800665BC: -/* 0671BC 800665BC 3C028012 */ lui $v0, %hi(D_80120CE4) # $v0, 0x8012 -/* 0671C0 800665C0 24420CE4 */ addiu $v0, %lo(D_80120CE4) # addiu $v0, $v0, 0xce4 -/* 0671C4 800665C4 8C480000 */ lw $t0, ($v0) -/* 0671C8 800665C8 8C630CE8 */ lw $v1, %lo(D_80120CE8)($v1) -/* 0671CC 800665CC 00000000 */ nop -/* 0671D0 800665D0 0103082A */ slt $at, $t0, $v1 -/* 0671D4 800665D4 14200002 */ bnez $at, .L800665E0 -/* 0671D8 800665D8 00000000 */ nop -/* 0671DC 800665DC AC400000 */ sw $zero, ($v0) -.L800665E0: -/* 0671E0 800665E0 03E00008 */ jr $ra -/* 0671E4 800665E4 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/unknown_066AA0/func_80066AA8.s b/asm/non_matchings/unknown_066AA0/func_80066AA8.s deleted file mode 100644 index ff0327f6..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066AA8.s +++ /dev/null @@ -1,74 +0,0 @@ -glabel func_80066AA8 -/* 0676A8 80066AA8 34088000 */ li $t0, 32768 -/* 0676AC 80066AAC 10A8000E */ beq $a1, $t0, .L80066AE8 -/* 0676B0 80066AB0 00044880 */ sll $t1, $a0, 2 -/* 0676B4 80066AB4 00047080 */ sll $t6, $a0, 2 -/* 0676B8 80066AB8 01C47023 */ subu $t6, $t6, $a0 -/* 0676BC 80066ABC 000E7080 */ sll $t6, $t6, 2 -/* 0676C0 80066AC0 01C47021 */ addu $t6, $t6, $a0 -/* 0676C4 80066AC4 3C0F800E */ lui $t7, %hi(D_800DD064) # $t7, 0x800e -/* 0676C8 80066AC8 25EFD064 */ addiu $t7, %lo(D_800DD064) # addiu $t7, $t7, -0x2f9c -/* 0676CC 80066ACC 000E7080 */ sll $t6, $t6, 2 -/* 0676D0 80066AD0 01CF1021 */ addu $v0, $t6, $t7 -/* 0676D4 80066AD4 8C580030 */ lw $t8, 0x30($v0) -/* 0676D8 80066AD8 AC450010 */ sw $a1, 0x10($v0) -/* 0676DC 80066ADC 37190008 */ ori $t9, $t8, 8 -/* 0676E0 80066AE0 1000000C */ b .L80066B14 -/* 0676E4 80066AE4 AC590030 */ sw $t9, 0x30($v0) -.L80066AE8: -/* 0676E8 80066AE8 01244823 */ subu $t1, $t1, $a0 -/* 0676EC 80066AEC 00094880 */ sll $t1, $t1, 2 -/* 0676F0 80066AF0 01244821 */ addu $t1, $t1, $a0 -/* 0676F4 80066AF4 3C0A800E */ lui $t2, %hi(D_800DD064) # $t2, 0x800e -/* 0676F8 80066AF8 254AD064 */ addiu $t2, %lo(D_800DD064) # addiu $t2, $t2, -0x2f9c -/* 0676FC 80066AFC 00094880 */ sll $t1, $t1, 2 -/* 067700 80066B00 012A1021 */ addu $v0, $t1, $t2 -/* 067704 80066B04 8C4B0030 */ lw $t3, 0x30($v0) -/* 067708 80066B08 2401FFF7 */ li $at, -9 -/* 06770C 80066B0C 01616024 */ and $t4, $t3, $at -/* 067710 80066B10 AC4C0030 */ sw $t4, 0x30($v0) -.L80066B14: -/* 067714 80066B14 10C80006 */ beq $a2, $t0, .L80066B30 -/* 067718 80066B18 00000000 */ nop -/* 06771C 80066B1C 8C4D0030 */ lw $t5, 0x30($v0) -/* 067720 80066B20 AC460010 */ sw $a2, 0x10($v0) -/* 067724 80066B24 35AE0010 */ ori $t6, $t5, 0x10 -/* 067728 80066B28 10000005 */ b .L80066B40 -/* 06772C 80066B2C AC4E0030 */ sw $t6, 0x30($v0) -.L80066B30: -/* 067730 80066B30 8C4F0030 */ lw $t7, 0x30($v0) -/* 067734 80066B34 2401FFEF */ li $at, -17 -/* 067738 80066B38 01E1C024 */ and $t8, $t7, $at -/* 06773C 80066B3C AC580030 */ sw $t8, 0x30($v0) -.L80066B40: -/* 067740 80066B40 10E80006 */ beq $a3, $t0, .L80066B5C -/* 067744 80066B44 00000000 */ nop -/* 067748 80066B48 8C590030 */ lw $t9, 0x30($v0) -/* 06774C 80066B4C AC470018 */ sw $a3, 0x18($v0) -/* 067750 80066B50 37290020 */ ori $t1, $t9, 0x20 -/* 067754 80066B54 10000005 */ b .L80066B6C -/* 067758 80066B58 AC490030 */ sw $t1, 0x30($v0) -.L80066B5C: -/* 06775C 80066B5C 8C4A0030 */ lw $t2, 0x30($v0) -/* 067760 80066B60 2401FFDF */ li $at, -33 -/* 067764 80066B64 01415824 */ and $t3, $t2, $at -/* 067768 80066B68 AC4B0030 */ sw $t3, 0x30($v0) -.L80066B6C: -/* 06776C 80066B6C 8FA30010 */ lw $v1, 0x10($sp) -/* 067770 80066B70 00000000 */ nop -/* 067774 80066B74 10680006 */ beq $v1, $t0, .L80066B90 -/* 067778 80066B78 00000000 */ nop -/* 06777C 80066B7C 8C4C0030 */ lw $t4, 0x30($v0) -/* 067780 80066B80 AC43001C */ sw $v1, 0x1c($v0) -/* 067784 80066B84 358D0040 */ ori $t5, $t4, 0x40 -/* 067788 80066B88 03E00008 */ jr $ra -/* 06778C 80066B8C AC4D0030 */ sw $t5, 0x30($v0) - -.L80066B90: -/* 067790 80066B90 8C4E0030 */ lw $t6, 0x30($v0) -/* 067794 80066B94 2401FFBF */ li $at, -65 -/* 067798 80066B98 01C17824 */ and $t7, $t6, $at -/* 06779C 80066B9C AC4F0030 */ sw $t7, 0x30($v0) -/* 0677A0 80066BA0 03E00008 */ jr $ra -/* 0677A4 80066BA4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_80066C2C.s b/asm/non_matchings/unknown_066AA0/func_80066C2C.s deleted file mode 100644 index f579ede8..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066C2C.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_80066C2C -/* 06782C 80066C2C 00047080 */ sll $t6, $a0, 2 -/* 067830 80066C30 01C47023 */ subu $t6, $t6, $a0 -/* 067834 80066C34 000E7080 */ sll $t6, $t6, 2 -/* 067838 80066C38 01C47021 */ addu $t6, $t6, $a0 -/* 06783C 80066C3C 3C0F800E */ lui $t7, %hi(D_800DD064) # $t7, 0x800e -/* 067840 80066C40 25EFD064 */ addiu $t7, %lo(D_800DD064) # addiu $t7, $t7, -0x2f9c -/* 067844 80066C44 000E7080 */ sll $t6, $t6, 2 -/* 067848 80066C48 01CF1021 */ addu $v0, $t6, $t7 -/* 06784C 80066C4C 8C580000 */ lw $t8, ($v0) -/* 067850 80066C50 00000000 */ nop -/* 067854 80066C54 ACB80000 */ sw $t8, ($a1) -/* 067858 80066C58 8C590004 */ lw $t9, 4($v0) -/* 06785C 80066C5C 00000000 */ nop -/* 067860 80066C60 ACD90000 */ sw $t9, ($a2) -/* 067864 80066C64 8C480008 */ lw $t0, 8($v0) -/* 067868 80066C68 00000000 */ nop -/* 06786C 80066C6C ACE80000 */ sw $t0, ($a3) -/* 067870 80066C70 8FAA0010 */ lw $t2, 0x10($sp) -/* 067874 80066C74 8C49000C */ lw $t1, 0xc($v0) -/* 067878 80066C78 03E00008 */ jr $ra -/* 06787C 80066C7C AD490000 */ sw $t1, ($t2) - -/* 067880 80066C80 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 067884 80066C84 AFBF0014 */ sw $ra, 0x14($sp) -/* 067888 80066C88 AFA40018 */ sw $a0, 0x18($sp) -/* 06788C 80066C8C AFA5001C */ sw $a1, 0x1c($sp) -/* 067890 80066C90 AFA60020 */ sw $a2, 0x20($sp) -/* 067894 80066C94 0C01E948 */ jal func_8007A520 -/* 067898 80066C98 AFA70024 */ sw $a3, 0x24($sp) -/* 06789C 80066C9C 8FAE0018 */ lw $t6, 0x18($sp) -/* 0678A0 80066CA0 3058FFFF */ andi $t8, $v0, 0xffff -/* 0678A4 80066CA4 ADC00000 */ sw $zero, ($t6) -/* 0678A8 80066CA8 8FAF001C */ lw $t7, 0x1c($sp) -/* 0678AC 80066CAC 00024402 */ srl $t0, $v0, 0x10 -/* 0678B0 80066CB0 ADE00000 */ sw $zero, ($t7) -/* 0678B4 80066CB4 8FB90020 */ lw $t9, 0x20($sp) -/* 0678B8 80066CB8 00000000 */ nop -/* 0678BC 80066CBC AF380000 */ sw $t8, ($t9) -/* 0678C0 80066CC0 8FA90024 */ lw $t1, 0x24($sp) -/* 0678C4 80066CC4 00000000 */ nop -/* 0678C8 80066CC8 AD280000 */ sw $t0, ($t1) -/* 0678CC 80066CCC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0678D0 80066CD0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0678D4 80066CD4 03E00008 */ jr $ra -/* 0678D8 80066CD8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006807C.s b/asm/non_matchings/unknown_066AA0/func_8006807C.s deleted file mode 100644 index bee07261..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006807C.s +++ /dev/null @@ -1,57 +0,0 @@ -glabel func_8006807C -/* 068C7C 8006807C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 068C80 80068080 AFA40018 */ sw $a0, 0x18($sp) -/* 068C84 80068084 AFA5001C */ sw $a1, 0x1c($sp) -/* 068C88 80068088 AFBF0014 */ sw $ra, 0x14($sp) -/* 068C8C 8006808C 3C05800E */ lui $a1, %hi(D_800DD288) # $a1, 0x800e -/* 068C90 80068090 3C048012 */ lui $a0, %hi(D_80121060) # $a0, 0x8012 -/* 068C94 80068094 24841060 */ addiu $a0, %lo(D_80121060) # addiu $a0, $a0, 0x1060 -/* 068C98 80068098 0C01BF9D */ jal func_8006FE74 -/* 068C9C 8006809C 24A5D288 */ addiu $a1, %lo(D_800DD288) # addiu $a1, $a1, -0x2d78 -/* 068CA0 800680A0 3C048012 */ lui $a0, %hi(D_80121060) # $a0, 0x8012 -/* 068CA4 800680A4 3C058012 */ lui $a1, %hi(D_80120EE0) # $a1, 0x8012 -/* 068CA8 800680A8 3C068012 */ lui $a2, %hi(D_80120F20) # $a2, 0x8012 -/* 068CAC 800680AC 24C60F20 */ addiu $a2, %lo(D_80120F20) # addiu $a2, $a2, 0xf20 -/* 068CB0 800680B0 24A50EE0 */ addiu $a1, %lo(D_80120EE0) # addiu $a1, $a1, 0xee0 -/* 068CB4 800680B4 0C01BDDA */ jal func_8006F768 -/* 068CB8 800680B8 24841060 */ addiu $a0, %lo(D_80121060) # addiu $a0, $a0, 0x1060 -/* 068CBC 800680BC 3C048012 */ lui $a0, %hi(D_80120D70) # $a0, 0x8012 -/* 068CC0 800680C0 8C840D70 */ lw $a0, %lo(D_80120D70)($a0) -/* 068CC4 800680C4 3C05800E */ lui $a1, %hi(D_800DD2A0) # $a1, 0x800e -/* 068CC8 800680C8 0C01BF9D */ jal func_8006FE74 -/* 068CCC 800680CC 24A5D2A0 */ addiu $a1, %lo(D_800DD2A0) # addiu $a1, $a1, -0x2d60 -/* 068CD0 800680D0 3C048012 */ lui $a0, %hi(D_80120D70) # $a0, 0x8012 -/* 068CD4 800680D4 8C840D70 */ lw $a0, %lo(D_80120D70)($a0) -/* 068CD8 800680D8 3C058012 */ lui $a1, %hi(D_80120F20) # $a1, 0x8012 -/* 068CDC 800680DC 3C068012 */ lui $a2, %hi(D_80121060) # $a2, 0x8012 -/* 068CE0 800680E0 24C61060 */ addiu $a2, %lo(D_80121060) # addiu $a2, $a2, 0x1060 -/* 068CE4 800680E4 0C01BDDA */ jal func_8006F768 -/* 068CE8 800680E8 24A50F20 */ addiu $a1, %lo(D_80120F20) # addiu $a1, $a1, 0xf20 -/* 068CEC 800680EC 8FAE001C */ lw $t6, 0x1c($sp) -/* 068CF0 800680F0 3C048012 */ lui $a0, %hi(D_80121060) # $a0, 0x8012 -/* 068CF4 800680F4 8DC50000 */ lw $a1, ($t6) -/* 068CF8 800680F8 0C01BE1C */ jal func_8006F870 -/* 068CFC 800680FC 24841060 */ addiu $a0, %lo(D_80121060) # addiu $a0, $a0, 0x1060 -/* 068D00 80068100 8FA50018 */ lw $a1, 0x18($sp) -/* 068D04 80068104 8FA4001C */ lw $a0, 0x1c($sp) -/* 068D08 80068108 8CA30000 */ lw $v1, ($a1) -/* 068D0C 8006810C 3C180100 */ lui $t8, (0x01000040 >> 16) # lui $t8, 0x100 -/* 068D10 80068110 246F0008 */ addiu $t7, $v1, 8 -/* 068D14 80068114 37180040 */ ori $t8, (0x01000040 & 0xFFFF) # ori $t8, $t8, 0x40 -/* 068D18 80068118 ACAF0000 */ sw $t7, ($a1) -/* 068D1C 8006811C AC780000 */ sw $t8, ($v1) -/* 068D20 80068120 8C990000 */ lw $t9, ($a0) -/* 068D24 80068124 3C018000 */ lui $at, 0x8000 -/* 068D28 80068128 03214021 */ addu $t0, $t9, $at -/* 068D2C 8006812C AC680004 */ sw $t0, 4($v1) -/* 068D30 80068130 8C890000 */ lw $t1, ($a0) -/* 068D34 80068134 3C018012 */ lui $at, %hi(D_80120D1C) # $at, 0x8012 -/* 068D38 80068138 252A0040 */ addiu $t2, $t1, 0x40 -/* 068D3C 8006813C AC8A0000 */ sw $t2, ($a0) -/* 068D40 80068140 8FBF0014 */ lw $ra, 0x14($sp) -/* 068D44 80068144 AC200D1C */ sw $zero, %lo(D_80120D1C)($at) -/* 068D48 80068148 3C018012 */ lui $at, %hi(D_80120D08) # $at, 0x8012 -/* 068D4C 8006814C AC200D08 */ sw $zero, %lo(D_80120D08)($at) -/* 068D50 80068150 03E00008 */ jr $ra -/* 068D54 80068154 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_066AA0/func_80068408.s b/asm/non_matchings/unknown_066AA0/func_80068408.s deleted file mode 100644 index 0c35c1c2..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80068408.s +++ /dev/null @@ -1,66 +0,0 @@ -glabel func_80068408 -/* 069008 80068408 3C0E8012 */ lui $t6, %hi(D_80120D1C) # $t6, 0x8012 -/* 06900C 8006840C 44800000 */ mtc1 $zero, $f0 -/* 069010 80068410 8DCE0D1C */ lw $t6, %lo(D_80120D1C)($t6) -/* 069014 80068414 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 069018 80068418 AFA40020 */ sw $a0, 0x20($sp) -/* 06901C 8006841C AFB00018 */ sw $s0, 0x18($sp) -/* 069020 80068420 3C048012 */ lui $a0, 0x8012 -/* 069024 80068424 000E7880 */ sll $t7, $t6, 2 -/* 069028 80068428 00A08025 */ move $s0, $a1 -/* 06902C 8006842C 008F2021 */ addu $a0, $a0, $t7 -/* 069030 80068430 AFBF001C */ sw $ra, 0x1c($sp) -/* 069034 80068434 8C840D70 */ lw $a0, 0xd70($a0) -/* 069038 80068438 44050000 */ mfc1 $a1, $f0 -/* 06903C 8006843C 44060000 */ mfc1 $a2, $f0 -/* 069040 80068440 44070000 */ mfc1 $a3, $f0 -/* 069044 80068444 0C01C17E */ jal func_800705F8 -/* 069048 80068448 00000000 */ nop -/* 06904C 8006844C 3C188012 */ lui $t8, %hi(D_80120D1C) # $t8, 0x8012 -/* 069050 80068450 8F180D1C */ lw $t8, %lo(D_80120D1C)($t8) -/* 069054 80068454 3C048012 */ lui $a0, 0x8012 -/* 069058 80068458 0018C880 */ sll $t9, $t8, 2 -/* 06905C 8006845C 00992021 */ addu $a0, $a0, $t9 -/* 069060 80068460 8C840D70 */ lw $a0, 0xd70($a0) -/* 069064 80068464 3C058012 */ lui $a1, %hi(D_80120F20) # $a1, 0x8012 -/* 069068 80068468 3C068012 */ lui $a2, %hi(D_80121060) # $a2, 0x8012 -/* 06906C 8006846C 24C61060 */ addiu $a2, %lo(D_80121060) # addiu $a2, $a2, 0x1060 -/* 069070 80068470 0C01BDDA */ jal func_8006F768 -/* 069074 80068474 24A50F20 */ addiu $a1, %lo(D_80120F20) # addiu $a1, $a1, 0xf20 -/* 069078 80068478 3C048012 */ lui $a0, %hi(D_80121060) # $a0, 0x8012 -/* 06907C 8006847C 8E050000 */ lw $a1, ($s0) -/* 069080 80068480 0C01BE1C */ jal func_8006F870 -/* 069084 80068484 24841060 */ addiu $a0, %lo(D_80121060) # addiu $a0, $a0, 0x1060 -/* 069088 80068488 3C098012 */ lui $t1, %hi(D_80120D1C) # $t1, 0x8012 -/* 06908C 8006848C 8D290D1C */ lw $t1, %lo(D_80120D1C)($t1) -/* 069090 80068490 8E080000 */ lw $t0, ($s0) -/* 069094 80068494 3C018012 */ lui $at, 0x8012 -/* 069098 80068498 00095080 */ sll $t2, $t1, 2 -/* 06909C 8006849C 8FA40020 */ lw $a0, 0x20($sp) -/* 0690A0 800684A0 002A0821 */ addu $at, $at, $t2 -/* 0690A4 800684A4 AC280D88 */ sw $t0, 0xd88($at) -/* 0690A8 800684A8 8C830000 */ lw $v1, ($a0) -/* 0690AC 800684AC 3C0C8012 */ lui $t4, %hi(D_80120D08) # $t4, 0x8012 -/* 0690B0 800684B0 246B0008 */ addiu $t3, $v1, 8 -/* 0690B4 800684B4 AC8B0000 */ sw $t3, ($a0) -/* 0690B8 800684B8 8D8C0D08 */ lw $t4, %lo(D_80120D08)($t4) -/* 0690BC 800684BC 3C010100 */ lui $at, 0x100 -/* 0690C0 800684C0 000C6980 */ sll $t5, $t4, 6 -/* 0690C4 800684C4 31AE00FF */ andi $t6, $t5, 0xff -/* 0690C8 800684C8 000E7C00 */ sll $t7, $t6, 0x10 -/* 0690CC 800684CC 01E1C025 */ or $t8, $t7, $at -/* 0690D0 800684D0 37190040 */ ori $t9, $t8, 0x40 -/* 0690D4 800684D4 AC790000 */ sw $t9, ($v1) -/* 0690D8 800684D8 8E090000 */ lw $t1, ($s0) -/* 0690DC 800684DC 3C018000 */ lui $at, 0x8000 -/* 0690E0 800684E0 01214021 */ addu $t0, $t1, $at -/* 0690E4 800684E4 AC680004 */ sw $t0, 4($v1) -/* 0690E8 800684E8 8E0A0000 */ lw $t2, ($s0) -/* 0690EC 800684EC 00000000 */ nop -/* 0690F0 800684F0 254B0040 */ addiu $t3, $t2, 0x40 -/* 0690F4 800684F4 AE0B0000 */ sw $t3, ($s0) -/* 0690F8 800684F8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0690FC 800684FC 8FB00018 */ lw $s0, 0x18($sp) -/* 069100 80068500 03E00008 */ jr $ra -/* 069104 80068504 27BD0020 */ addiu $sp, $sp, 0x20 - diff --git a/asm/non_matchings/unknown_066AA0/func_80069E14.s b/asm/non_matchings/unknown_066AA0/func_80069E14.s deleted file mode 100644 index fdebdd14..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80069E14.s +++ /dev/null @@ -1,74 +0,0 @@ -glabel func_80069E14 -/* 06AA14 80069E14 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 06AA18 80069E18 AFB20048 */ sw $s2, 0x48($sp) -/* 06AA1C 80069E1C 3C128012 */ lui $s2, %hi(D_80120CE0) # $s2, 0x8012 -/* 06AA20 80069E20 26520CE0 */ addiu $s2, %lo(D_80120CE0) # addiu $s2, $s2, 0xce0 -/* 06AA24 80069E24 8E4E0000 */ lw $t6, ($s2) -/* 06AA28 80069E28 E7BC003C */ swc1 $f28, 0x3c($sp) -/* 06AA2C 80069E2C E7B4001C */ swc1 $f20, 0x1c($sp) -/* 06AA30 80069E30 4487A000 */ mtc1 $a3, $f20 -/* 06AA34 80069E34 4486E000 */ mtc1 $a2, $f28 -/* 06AA38 80069E38 AFB10044 */ sw $s1, 0x44($sp) -/* 06AA3C 80069E3C E7BB0030 */ swc1 $f27, 0x30($sp) -/* 06AA40 80069E40 E7BA0034 */ swc1 $f26, 0x34($sp) -/* 06AA44 80069E44 E7B90028 */ swc1 $f25, 0x28($sp) -/* 06AA48 80069E48 E7B8002C */ swc1 $f24, 0x2c($sp) -/* 06AA4C 80069E4C 46006606 */ mov.s $f24, $f12 -/* 06AA50 80069E50 46007686 */ mov.s $f26, $f14 -/* 06AA54 80069E54 AFBF004C */ sw $ra, 0x4c($sp) -/* 06AA58 80069E58 AFB00040 */ sw $s0, 0x40($sp) -/* 06AA5C 80069E5C E7BD0038 */ swc1 $f29, 0x38($sp) -/* 06AA60 80069E60 E7B70020 */ swc1 $f23, 0x20($sp) -/* 06AA64 80069E64 E7B60024 */ swc1 $f22, 0x24($sp) -/* 06AA68 80069E68 E7B50018 */ swc1 $f21, 0x18($sp) -/* 06AA6C 80069E6C 05C0001E */ bltz $t6, .L80069EE8 -/* 06AA70 80069E70 00008825 */ move $s1, $zero -/* 06AA74 80069E74 3C108012 */ lui $s0, %hi(D_80120AC0) # $s0, 0x8012 -/* 06AA78 80069E78 C7B60060 */ lwc1 $f22, 0x60($sp) -/* 06AA7C 80069E7C 26100AC0 */ addiu $s0, %lo(D_80120AC0) # addiu $s0, $s0, 0xac0 -.L80069E80: -/* 06AA80 80069E80 C604000C */ lwc1 $f4, 0xc($s0) -/* 06AA84 80069E84 C6060010 */ lwc1 $f6, 0x10($s0) -/* 06AA88 80069E88 4604C001 */ sub.s $f0, $f24, $f4 -/* 06AA8C 80069E8C C6080014 */ lwc1 $f8, 0x14($s0) -/* 06AA90 80069E90 46000282 */ mul.s $f10, $f0, $f0 -/* 06AA94 80069E94 4606D081 */ sub.s $f2, $f26, $f6 -/* 06AA98 80069E98 46021402 */ mul.s $f16, $f2, $f2 -/* 06AA9C 80069E9C 4608E381 */ sub.s $f14, $f28, $f8 -/* 06AAA0 80069EA0 460E7102 */ mul.s $f4, $f14, $f14 -/* 06AAA4 80069EA4 46105480 */ add.s $f18, $f10, $f16 -/* 06AAA8 80069EA8 0C0326B4 */ jal sqrtf -/* 06AAAC 80069EAC 46049300 */ add.s $f12, $f18, $f4 -/* 06AAB0 80069EB0 4614003C */ c.lt.s $f0, $f20 -/* 06AAB4 80069EB4 00000000 */ nop -/* 06AAB8 80069EB8 45000006 */ bc1f .L80069ED4 -/* 06AABC 80069EBC 00000000 */ nop -/* 06AAC0 80069EC0 4600A181 */ sub.s $f6, $f20, $f0 -/* 06AAC4 80069EC4 46163202 */ mul.s $f8, $f6, $f22 -/* 06AAC8 80069EC8 00000000 */ nop -/* 06AACC 80069ECC 46144283 */ div.s $f10, $f8, $f20 -/* 06AAD0 80069ED0 E60A0030 */ swc1 $f10, 0x30($s0) -.L80069ED4: -/* 06AAD4 80069ED4 8E4F0000 */ lw $t7, ($s2) -/* 06AAD8 80069ED8 26310001 */ addiu $s1, $s1, 1 -/* 06AADC 80069EDC 01F1082A */ slt $at, $t7, $s1 -/* 06AAE0 80069EE0 1020FFE7 */ beqz $at, .L80069E80 -/* 06AAE4 80069EE4 26100044 */ addiu $s0, $s0, 0x44 -.L80069EE8: -/* 06AAE8 80069EE8 8FBF004C */ lw $ra, 0x4c($sp) -/* 06AAEC 80069EEC C7B50018 */ lwc1 $f21, 0x18($sp) -/* 06AAF0 80069EF0 C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 06AAF4 80069EF4 C7B70020 */ lwc1 $f23, 0x20($sp) -/* 06AAF8 80069EF8 C7B60024 */ lwc1 $f22, 0x24($sp) -/* 06AAFC 80069EFC C7B90028 */ lwc1 $f25, 0x28($sp) -/* 06AB00 80069F00 C7B8002C */ lwc1 $f24, 0x2c($sp) -/* 06AB04 80069F04 C7BB0030 */ lwc1 $f27, 0x30($sp) -/* 06AB08 80069F08 C7BA0034 */ lwc1 $f26, 0x34($sp) -/* 06AB0C 80069F0C C7BD0038 */ lwc1 $f29, 0x38($sp) -/* 06AB10 80069F10 C7BC003C */ lwc1 $f28, 0x3c($sp) -/* 06AB14 80069F14 8FB00040 */ lw $s0, 0x40($sp) -/* 06AB18 80069F18 8FB10044 */ lw $s1, 0x44($sp) -/* 06AB1C 80069F1C 8FB20048 */ lw $s2, 0x48($sp) -/* 06AB20 80069F20 03E00008 */ jr $ra -/* 06AB24 80069F24 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/unknown_066AA0/func_8006A458.s b/asm/non_matchings/unknown_066AA0/func_8006A458.s deleted file mode 100644 index 3a3ed5d8..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006A458.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_8006A458 -/* 06B058 8006A458 3C068012 */ lui $a2, %hi(D_80121150) # $a2, 0x8012 -/* 06B05C 8006A45C 00001025 */ move $v0, $zero -/* 06B060 8006A460 24C61150 */ addiu $a2, %lo(D_80121150) # addiu $a2, $a2, 0x1150 -/* 06B064 8006A464 00001825 */ move $v1, $zero -/* 06B068 8006A468 00802825 */ move $a1, $a0 -.L8006A46C: -/* 06B06C 8006A46C 80AE0000 */ lb $t6, ($a1) -/* 06B070 8006A470 00C27821 */ addu $t7, $a2, $v0 -/* 06B074 8006A474 11C00003 */ beqz $t6, .L8006A484 -/* 06B078 8006A478 00000000 */ nop -/* 06B07C 8006A47C A1E30000 */ sb $v1, ($t7) -/* 06B080 8006A480 24420001 */ addiu $v0, $v0, 1 -.L8006A484: -/* 06B084 8006A484 24630001 */ addiu $v1, $v1, 1 -/* 06B088 8006A488 28610004 */ slti $at, $v1, 4 -/* 06B08C 8006A48C 1420FFF7 */ bnez $at, .L8006A46C -/* 06B090 8006A490 24A50001 */ addiu $a1, $a1, 1 -/* 06B094 8006A494 80980000 */ lb $t8, ($a0) -/* 06B098 8006A498 00801825 */ move $v1, $a0 -/* 06B09C 8006A49C 17000003 */ bnez $t8, .L8006A4AC -/* 06B0A0 8006A4A0 00C2C821 */ addu $t9, $a2, $v0 -/* 06B0A4 8006A4A4 A3200000 */ sb $zero, ($t9) -/* 06B0A8 8006A4A8 24420001 */ addiu $v0, $v0, 1 -.L8006A4AC: -/* 06B0AC 8006A4AC 80680001 */ lb $t0, 1($v1) -/* 06B0B0 8006A4B0 24090001 */ li $t1, 1 -/* 06B0B4 8006A4B4 15000003 */ bnez $t0, .L8006A4C4 -/* 06B0B8 8006A4B8 00C25021 */ addu $t2, $a2, $v0 -/* 06B0BC 8006A4BC A1490000 */ sb $t1, ($t2) -/* 06B0C0 8006A4C0 24420001 */ addiu $v0, $v0, 1 -.L8006A4C4: -/* 06B0C4 8006A4C4 806B0002 */ lb $t3, 2($v1) -/* 06B0C8 8006A4C8 240C0002 */ li $t4, 2 -/* 06B0CC 8006A4CC 15600003 */ bnez $t3, .L8006A4DC -/* 06B0D0 8006A4D0 00C26821 */ addu $t5, $a2, $v0 -/* 06B0D4 8006A4D4 A1AC0000 */ sb $t4, ($t5) -/* 06B0D8 8006A4D8 24420001 */ addiu $v0, $v0, 1 -.L8006A4DC: -/* 06B0DC 8006A4DC 806E0003 */ lb $t6, 3($v1) -/* 06B0E0 8006A4E0 240F0003 */ li $t7, 3 -/* 06B0E4 8006A4E4 15C00002 */ bnez $t6, .L8006A4F0 -/* 06B0E8 8006A4E8 00C2C021 */ addu $t8, $a2, $v0 -/* 06B0EC 8006A4EC A30F0000 */ sb $t7, ($t8) -.L8006A4F0: -/* 06B0F0 8006A4F0 03E00008 */ jr $ra -/* 06B0F4 8006A4F4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006BEFC.s b/asm/non_matchings/unknown_066AA0/func_8006BEFC.s deleted file mode 100644 index 3861c2bb..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006BEFC.s +++ /dev/null @@ -1,55 +0,0 @@ -glabel func_8006BEFC -/* 06CAFC 8006BEFC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06CB00 8006BF00 AFBF0014 */ sw $ra, 0x14($sp) -/* 06CB04 8006BF04 0C01B059 */ jal func_8006C164 -/* 06CB08 8006BF08 00000000 */ nop -/* 06CB0C 8006BF0C 00002025 */ move $a0, $zero -/* 06CB10 8006BF10 00002825 */ move $a1, $zero -/* 06CB14 8006BF14 0C01DECD */ jal func_80077B34 -/* 06CB18 8006BF18 00003025 */ move $a2, $zero -/* 06CB1C 8006BF1C 3C048012 */ lui $a0, %hi(D_80121168) # $a0, 0x8012 -/* 06CB20 8006BF20 8C841168 */ lw $a0, %lo(D_80121168)($a0) -/* 06CB24 8006BF24 0C01C450 */ jal func_80071140 -/* 06CB28 8006BF28 00000000 */ nop -/* 06CB2C 8006BF2C 0C001276 */ jal func_800049D8 -/* 06CB30 8006BF30 00000000 */ nop -/* 06CB34 8006BF34 0C000611 */ jal func_80001844 -/* 06CB38 8006BF38 00000000 */ nop -/* 06CB3C 8006BF3C 0C000638 */ jal func_800018E0 -/* 06CB40 8006BF40 00000000 */ nop -/* 06CB44 8006BF44 0C0004BA */ jal func_800012E8 -/* 06CB48 8006BF48 00000000 */ nop -/* 06CB4C 8006BF4C 0C00C6D8 */ jal func_80031B60 -/* 06CB50 8006BF50 00000000 */ nop -/* 06CB54 8006BF54 0C00B1F5 */ jal func_8002C7D4 -/* 06CB58 8006BF58 00000000 */ nop -/* 06CB5C 8006BF5C 0C00205D */ jal func_80008174 -/* 06CB60 8006BF60 00000000 */ nop -/* 06CB64 8006BF64 0C00025A */ jal func_80000968 -/* 06CB68 8006BF68 00002025 */ move $a0, $zero -/* 06CB6C 8006BF6C 3C028012 */ lui $v0, %hi(D_80121168) # $v0, 0x8012 -/* 06CB70 8006BF70 8C421168 */ lw $v0, %lo(D_80121168)($v0) -/* 06CB74 8006BF74 00000000 */ nop -/* 06CB78 8006BF78 844E0090 */ lh $t6, 0x90($v0) -/* 06CB7C 8006BF7C 00000000 */ nop -/* 06CB80 8006BF80 19C00006 */ blez $t6, .L8006BF9C -/* 06CB84 8006BF84 00000000 */ nop -/* 06CB88 8006BF88 0C02ACD7 */ jal func_800AB35C -/* 06CB8C 8006BF8C 00000000 */ nop -/* 06CB90 8006BF90 3C028012 */ lui $v0, %hi(D_80121168) # $v0, 0x8012 -/* 06CB94 8006BF94 8C421168 */ lw $v0, %lo(D_80121168)($v0) -/* 06CB98 8006BF98 00000000 */ nop -.L8006BF9C: -/* 06CB9C 8006BF9C 804F0049 */ lb $t7, 0x49($v0) -/* 06CBA0 8006BFA0 240100FF */ li $at, 255 -/* 06CBA4 8006BFA4 15E10005 */ bne $t7, $at, .L8006BFBC -/* 06CBA8 8006BFA8 8FBF0014 */ lw $ra, 0x14($sp) -/* 06CBAC 8006BFAC 8C4400A4 */ lw $a0, 0xa4($v0) -/* 06CBB0 8006BFB0 0C01ECAF */ jal func_8007B2BC -/* 06CBB4 8006BFB4 00000000 */ nop -/* 06CBB8 8006BFB8 8FBF0014 */ lw $ra, 0x14($sp) -.L8006BFBC: -/* 06CBBC 8006BFBC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06CBC0 8006BFC0 03E00008 */ jr $ra -/* 06CBC4 8006BFC4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006C22C.s b/asm/non_matchings/unknown_066AA0/func_8006C22C.s deleted file mode 100644 index 88f0ed55..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006C22C.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_8006C22C -/* 06CE2C 8006C22C 3C08800E */ lui $t0, %hi(D_800DD328) # $t0, 0x800e -/* 06CE30 8006C230 2508D328 */ addiu $t0, %lo(D_800DD328) # addiu $t0, $t0, -0x2cd8 -/* 06CE34 8006C234 850E0000 */ lh $t6, ($t0) -/* 06CE38 8006C238 3C098012 */ lui $t1, %hi(D_801211C8) # $t1, 0x8012 -/* 06CE3C 8006C23C 25CFFFFF */ addiu $t7, $t6, -1 -/* 06CE40 8006C240 A50F0000 */ sh $t7, ($t0) -/* 06CE44 8006C244 85180000 */ lh $t8, ($t0) -/* 06CE48 8006C248 252911C8 */ addiu $t1, %lo(D_801211C8) # addiu $t1, $t1, 0x11c8 -/* 06CE4C 8006C24C 0018C840 */ sll $t9, $t8, 1 -/* 06CE50 8006C250 01395021 */ addu $t2, $t1, $t9 -/* 06CE54 8006C254 854B0000 */ lh $t3, ($t2) -/* 06CE58 8006C258 2401FFFF */ li $at, -1 -/* 06CE5C 8006C25C ACEB0000 */ sw $t3, ($a3) -/* 06CE60 8006C260 850C0000 */ lh $t4, ($t0) -/* 06CE64 8006C264 00000000 */ nop -/* 06CE68 8006C268 258DFFFF */ addiu $t5, $t4, -1 -/* 06CE6C 8006C26C A50D0000 */ sh $t5, ($t0) -/* 06CE70 8006C270 85020000 */ lh $v0, ($t0) -/* 06CE74 8006C274 00000000 */ nop -/* 06CE78 8006C278 00027040 */ sll $t6, $v0, 1 -/* 06CE7C 8006C27C 012E7821 */ addu $t7, $t1, $t6 -/* 06CE80 8006C280 85E30000 */ lh $v1, ($t7) -/* 06CE84 8006C284 2458FFFF */ addiu $t8, $v0, -1 -/* 06CE88 8006C288 A5180000 */ sh $t8, ($t0) -/* 06CE8C 8006C28C 85190000 */ lh $t9, ($t0) -/* 06CE90 8006C290 00000000 */ nop -/* 06CE94 8006C294 00195040 */ sll $t2, $t9, 1 -/* 06CE98 8006C298 012A5821 */ addu $t3, $t1, $t2 -/* 06CE9C 8006C29C 856C0000 */ lh $t4, ($t3) -/* 06CEA0 8006C2A0 240B0001 */ li $t3, 1 -/* 06CEA4 8006C2A4 ACAC0000 */ sw $t4, ($a1) -/* 06CEA8 8006C2A8 850D0000 */ lh $t5, ($t0) -/* 06CEAC 8006C2AC 00000000 */ nop -/* 06CEB0 8006C2B0 25AEFFFF */ addiu $t6, $t5, -1 -/* 06CEB4 8006C2B4 A50E0000 */ sh $t6, ($t0) -/* 06CEB8 8006C2B8 850F0000 */ lh $t7, ($t0) -/* 06CEBC 8006C2BC 00000000 */ nop -/* 06CEC0 8006C2C0 000FC040 */ sll $t8, $t7, 1 -/* 06CEC4 8006C2C4 0138C821 */ addu $t9, $t1, $t8 -/* 06CEC8 8006C2C8 872A0000 */ lh $t2, ($t9) -/* 06CECC 8006C2CC 10610002 */ beq $v1, $at, .L8006C2D8 -/* 06CED0 8006C2D0 AC8A0000 */ sw $t2, ($a0) -/* 06CED4 8006C2D4 ACC30000 */ sw $v1, ($a2) -.L8006C2D8: -/* 06CED8 8006C2D8 3C01800E */ lui $at, 0x800e -/* 06CEDC 8006C2DC 03E00008 */ jr $ra -/* 06CEE0 8006C2E0 A42BD32C */ sh $t3, -0x2cd4($at) - diff --git a/asm/non_matchings/unknown_066AA0/func_8006CB58.s b/asm/non_matchings/unknown_066AA0/func_8006CB58.s deleted file mode 100644 index de7aa7bd..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006CB58.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_8006CB58 -/* 06D758 8006CB58 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06D75C 8006CB5C AFBF001C */ sw $ra, 0x1c($sp) -/* 06D760 8006CB60 AFA40020 */ sw $a0, 0x20($sp) -/* 06D764 8006CB64 AFA50024 */ sw $a1, 0x24($sp) -/* 06D768 8006CB68 AFA60028 */ sw $a2, 0x28($sp) -/* 06D76C 8006CB6C AFA7002C */ sw $a3, 0x2c($sp) -/* 06D770 8006CB70 0C01BB3F */ jal func_8006ECFC -/* 06D774 8006CB74 00A02025 */ move $a0, $a1 -/* 06D778 8006CB78 0C01C42C */ jal func_800710B0 -/* 06D77C 8006CB7C 00002025 */ move $a0, $zero -/* 06D780 8006CB80 0C0197A8 */ jal func_80065EA0 -/* 06D784 8006CB84 00000000 */ nop -/* 06D788 8006CB88 0C030C12 */ jal func_800C3048 -/* 06D78C 8006CB8C 00000000 */ nop -/* 06D790 8006CB90 3C0E8012 */ lui $t6, %hi(D_80123508) # $t6, 0x8012 -/* 06D794 8006CB94 8DCE3508 */ lw $t6, %lo(D_80123508)($t6) -/* 06D798 8006CB98 8FA40020 */ lw $a0, 0x20($sp) -/* 06D79C 8006CB9C 8FA50024 */ lw $a1, 0x24($sp) -/* 06D7A0 8006CBA0 8FA60028 */ lw $a2, 0x28($sp) -/* 06D7A4 8006CBA4 8FA7002C */ lw $a3, 0x2c($sp) -/* 06D7A8 8006CBA8 0C01AC94 */ jal func_8006B250 -/* 06D7AC 8006CBAC AFAE0010 */ sw $t6, 0x10($sp) -/* 06D7B0 8006CBB0 0C019884 */ jal func_80066210 -/* 06D7B4 8006CBB4 00000000 */ nop -/* 06D7B8 8006CBB8 0C027B3C */ jal func_8009ECF0 -/* 06D7BC 8006CBBC 00402025 */ move $a0, $v0 -/* 06D7C0 8006CBC0 240F0032 */ li $t7, 50 -/* 06D7C4 8006CBC4 AFAF0010 */ sw $t7, 0x10($sp) -/* 06D7C8 8006CBC8 24040008 */ li $a0, 8 -/* 06D7CC 8006CBCC 24050010 */ li $a1, 16 -/* 06D7D0 8006CBD0 24060096 */ li $a2, 150 -/* 06D7D4 8006CBD4 24070064 */ li $a3, 100 -/* 06D7D8 8006CBD8 0C02B9CA */ jal func_800AE728 -/* 06D7DC 8006CBDC AFA00014 */ sw $zero, 0x14($sp) -/* 06D7E0 8006CBE0 0C006FC8 */ jal func_8001BF20 -/* 06D7E4 8006CBE4 00000000 */ nop -/* 06D7E8 8006CBE8 24040000 */ li $a0, 0 -/* 06D7EC 8006CBEC 0C033498 */ jal osSetTime -/* 06D7F0 8006CBF0 24050000 */ li $a1, 0 -/* 06D7F4 8006CBF4 0C01C42C */ jal func_800710B0 -/* 06D7F8 8006CBF8 24040002 */ li $a0, 2 -/* 06D7FC 8006CBFC 0C01C8A6 */ jal func_80072298 -/* 06D800 8006CC00 24040001 */ li $a0, 1 -/* 06D804 8006CC04 8FBF001C */ lw $ra, 0x1c($sp) -/* 06D808 8006CC08 27BD0020 */ addiu $sp, $sp, 0x20 -/* 06D80C 8006CC0C 03E00008 */ jr $ra -/* 06D810 8006CC10 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006D968.s b/asm/non_matchings/unknown_066AA0/func_8006D968.s deleted file mode 100644 index 1569a71b..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006D968.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_8006D968 -/* 06E568 8006D968 3C0E8012 */ lui $t6, %hi(D_801234EC) # $t6, 0x8012 -/* 06E56C 8006D96C 8DCE34EC */ lw $t6, %lo(D_801234EC)($t6) -/* 06E570 8006D970 24010004 */ li $at, 4 -/* 06E574 8006D974 11C10023 */ beq $t6, $at, .L8006DA04 -/* 06E578 8006D978 3C068012 */ lui $a2, %hi(D_80121250) # $a2, 0x8012 -/* 06E57C 8006D97C 3C0F8012 */ lui $t7, %hi(D_801234F4) # $t7, 0x8012 -/* 06E580 8006D980 8DEF34F4 */ lw $t7, %lo(D_801234F4)($t7) -/* 06E584 8006D984 24C61250 */ addiu $a2, %lo(D_80121250) # addiu $a2, $a2, 0x1250 -/* 06E588 8006D988 3C038012 */ lui $v1, %hi(D_80121250) # $v1, 0x8012 -/* 06E58C 8006D98C 3C028012 */ lui $v0, %hi(D_80121252) # $v0, 0x8012 -/* 06E590 8006D990 24421252 */ addiu $v0, %lo(D_80121252) # addiu $v0, $v0, 0x1252 -/* 06E594 8006D994 24631250 */ addiu $v1, %lo(D_80121250) # addiu $v1, $v1, 0x1250 -/* 06E598 8006D998 00802825 */ move $a1, $a0 -/* 06E59C 8006D99C A0CF0000 */ sb $t7, ($a2) -.L8006D9A0: -/* 06E5A0 8006D9A0 80B80008 */ lb $t8, 8($a1) -/* 06E5A4 8006D9A4 24630001 */ addiu $v1, $v1, 1 -/* 06E5A8 8006D9A8 A0780001 */ sb $t8, 1($v1) -/* 06E5AC 8006D9AC 80B9000A */ lb $t9, 0xa($a1) -/* 06E5B0 8006D9B0 24A50001 */ addiu $a1, $a1, 1 -/* 06E5B4 8006D9B4 A0790003 */ sb $t9, 3($v1) -/* 06E5B8 8006D9B8 80A8000B */ lb $t0, 0xb($a1) -/* 06E5BC 8006D9BC 00000000 */ nop -/* 06E5C0 8006D9C0 A0680005 */ sb $t0, 5($v1) -/* 06E5C4 8006D9C4 80A9000D */ lb $t1, 0xd($a1) -/* 06E5C8 8006D9C8 00000000 */ nop -/* 06E5CC 8006D9CC A0690007 */ sb $t1, 7($v1) -/* 06E5D0 8006D9D0 80AA0011 */ lb $t2, 0x11($a1) -/* 06E5D4 8006D9D4 00000000 */ nop -/* 06E5D8 8006D9D8 A06A0009 */ sb $t2, 9($v1) -/* 06E5DC 8006D9DC 80AB0013 */ lb $t3, 0x13($a1) -/* 06E5E0 8006D9E0 1462FFEF */ bne $v1, $v0, .L8006D9A0 -/* 06E5E4 8006D9E4 A06B000B */ sb $t3, 0xb($v1) -/* 06E5E8 8006D9E8 808C0016 */ lb $t4, 0x16($a0) -/* 06E5EC 8006D9EC 240E0001 */ li $t6, 1 -/* 06E5F0 8006D9F0 A0CC000E */ sb $t4, 0xe($a2) -/* 06E5F4 8006D9F4 808D0017 */ lb $t5, 0x17($a0) -/* 06E5F8 8006D9F8 3C018012 */ lui $at, %hi(D_801234FC) # $at, 0x8012 -/* 06E5FC 8006D9FC A0CD000F */ sb $t5, 0xf($a2) -/* 06E600 8006DA00 AC2E34FC */ sw $t6, %lo(D_801234FC)($at) -.L8006DA04: -/* 06E604 8006DA04 03E00008 */ jr $ra -/* 06E608 8006DA08 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006DB3C.s b/asm/non_matchings/unknown_066AA0/func_8006DB3C.s deleted file mode 100644 index 47b87ec1..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006DB3C.s +++ /dev/null @@ -1,44 +0,0 @@ -glabel func_8006DB3C -/* 06E73C 8006DB3C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06E740 8006DB40 AFBF001C */ sw $ra, 0x1c($sp) -/* 06E744 8006DB44 AFA40020 */ sw $a0, 0x20($sp) -/* 06E748 8006DB48 AFA50024 */ sw $a1, 0x24($sp) -/* 06E74C 8006DB4C AFA60028 */ sw $a2, 0x28($sp) -/* 06E750 8006DB50 AFA7002C */ sw $a3, 0x2c($sp) -/* 06E754 8006DB54 0C01C42C */ jal func_800710B0 -/* 06E758 8006DB58 00002025 */ move $a0, $zero -/* 06E75C 8006DB5C 0C0197A8 */ jal func_80065EA0 -/* 06E760 8006DB60 00000000 */ nop -/* 06E764 8006DB64 0C030C12 */ jal func_800C3048 -/* 06E768 8006DB68 00000000 */ nop -/* 06E76C 8006DB6C 8FAE0030 */ lw $t6, 0x30($sp) -/* 06E770 8006DB70 8FA40020 */ lw $a0, 0x20($sp) -/* 06E774 8006DB74 8FA50024 */ lw $a1, 0x24($sp) -/* 06E778 8006DB78 8FA60028 */ lw $a2, 0x28($sp) -/* 06E77C 8006DB7C 8FA7002C */ lw $a3, 0x2c($sp) -/* 06E780 8006DB80 0C01AC94 */ jal func_8006B250 -/* 06E784 8006DB84 AFAE0010 */ sw $t6, 0x10($sp) -/* 06E788 8006DB88 0C019884 */ jal func_80066210 -/* 06E78C 8006DB8C 00000000 */ nop -/* 06E790 8006DB90 0C027B3C */ jal func_8009ECF0 -/* 06E794 8006DB94 00402025 */ move $a0, $v0 -/* 06E798 8006DB98 240F0020 */ li $t7, 32 -/* 06E79C 8006DB9C AFAF0010 */ sw $t7, 0x10($sp) -/* 06E7A0 8006DBA0 24040004 */ li $a0, 4 -/* 06E7A4 8006DBA4 24050004 */ li $a1, 4 -/* 06E7A8 8006DBA8 2406006E */ li $a2, 110 -/* 06E7AC 8006DBAC 24070030 */ li $a3, 48 -/* 06E7B0 8006DBB0 0C02B9CA */ jal func_800AE728 -/* 06E7B4 8006DBB4 AFA00014 */ sw $zero, 0x14($sp) -/* 06E7B8 8006DBB8 0C006FC8 */ jal func_8001BF20 -/* 06E7BC 8006DBBC 00000000 */ nop -/* 06E7C0 8006DBC0 24040000 */ li $a0, 0 -/* 06E7C4 8006DBC4 0C033498 */ jal osSetTime -/* 06E7C8 8006DBC8 24050000 */ li $a1, 0 -/* 06E7CC 8006DBCC 0C01C42C */ jal func_800710B0 -/* 06E7D0 8006DBD0 24040002 */ li $a0, 2 -/* 06E7D4 8006DBD4 8FBF001C */ lw $ra, 0x1c($sp) -/* 06E7D8 8006DBD8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 06E7DC 8006DBDC 03E00008 */ jr $ra -/* 06E7E0 8006DBE0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006E994.s b/asm/non_matchings/unknown_066AA0/func_8006E994.s deleted file mode 100644 index 1034cdcf..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006E994.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_8006E994 -/* 06F594 8006E994 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 06F598 8006E998 AFBF0014 */ sw $ra, 0x14($sp) -/* 06F59C 8006E99C 00803025 */ move $a2, $a0 -/* 06F5A0 8006E9A0 AFA60028 */ sw $a2, 0x28($sp) -/* 06F5A4 8006E9A4 27A4001C */ addiu $a0, $sp, 0x1c -/* 06F5A8 8006E9A8 0C01AC89 */ jal func_8006B224 -/* 06F5AC 8006E9AC 27A50020 */ addiu $a1, $sp, 0x20 -/* 06F5B0 8006E9B0 8FA60028 */ lw $a2, 0x28($sp) -/* 06F5B4 8006E9B4 240E0001 */ li $t6, 1 -/* 06F5B8 8006E9B8 A0CE004B */ sb $t6, 0x4b($a2) -/* 06F5BC 8006E9BC 8FAF0020 */ lw $t7, 0x20($sp) -/* 06F5C0 8006E9C0 00001025 */ move $v0, $zero -/* 06F5C4 8006E9C4 19E0000B */ blez $t7, .L8006E9F4 -/* 06F5C8 8006E9C8 00001825 */ move $v1, $zero -.L8006E9CC: -/* 06F5CC 8006E9CC 8CD80000 */ lw $t8, ($a2) -/* 06F5D0 8006E9D0 24420001 */ addiu $v0, $v0, 1 -/* 06F5D4 8006E9D4 0303C821 */ addu $t9, $t8, $v1 -/* 06F5D8 8006E9D8 A7200000 */ sh $zero, ($t9) -/* 06F5DC 8006E9DC 8FA80020 */ lw $t0, 0x20($sp) -/* 06F5E0 8006E9E0 24630002 */ addiu $v1, $v1, 2 -/* 06F5E4 8006E9E4 0048082A */ slt $at, $v0, $t0 -/* 06F5E8 8006E9E8 1420FFF8 */ bnez $at, .L8006E9CC -/* 06F5EC 8006E9EC 00000000 */ nop -/* 06F5F0 8006E9F0 00001025 */ move $v0, $zero -.L8006E9F4: -/* 06F5F4 8006E9F4 8FA9001C */ lw $t1, 0x1c($sp) -/* 06F5F8 8006E9F8 00001825 */ move $v1, $zero -/* 06F5FC 8006E9FC 1920000A */ blez $t1, .L8006EA28 -/* 06F600 8006EA00 00000000 */ nop -.L8006EA04: -/* 06F604 8006EA04 8CCA0004 */ lw $t2, 4($a2) -/* 06F608 8006EA08 24420001 */ addiu $v0, $v0, 1 -/* 06F60C 8006EA0C 01435821 */ addu $t3, $t2, $v1 -/* 06F610 8006EA10 AD600000 */ sw $zero, ($t3) -/* 06F614 8006EA14 8FAC001C */ lw $t4, 0x1c($sp) -/* 06F618 8006EA18 24630004 */ addiu $v1, $v1, 4 -/* 06F61C 8006EA1C 004C082A */ slt $at, $v0, $t4 -/* 06F620 8006EA20 1420FFF8 */ bnez $at, .L8006EA04 -/* 06F624 8006EA24 00000000 */ nop -.L8006EA28: -/* 06F628 8006EA28 A4C00008 */ sh $zero, 8($a2) -/* 06F62C 8006EA2C A4C0000A */ sh $zero, 0xa($a2) -/* 06F630 8006EA30 A4C0000C */ sh $zero, 0xc($a2) -/* 06F634 8006EA34 A4C0000E */ sh $zero, 0xe($a2) -/* 06F638 8006EA38 ACC00010 */ sw $zero, 0x10($a2) -/* 06F63C 8006EA3C A4C00014 */ sh $zero, 0x14($a2) -/* 06F640 8006EA40 A0C00016 */ sb $zero, 0x16($a2) -/* 06F644 8006EA44 A0C00017 */ sb $zero, 0x17($a2) -/* 06F648 8006EA48 8FBF0014 */ lw $ra, 0x14($sp) -/* 06F64C 8006EA4C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 06F650 8006EA50 03E00008 */ jr $ra -/* 06F654 8006EA54 00000000 */ nop - -/* 06F658 8006EA58 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06F65C 8006EA5C 3C048012 */ lui $a0, %hi(gSettingsPtr) # $a0, 0x8012 -/* 06F660 8006EA60 AFBF0014 */ sw $ra, 0x14($sp) -/* 06F664 8006EA64 8C843510 */ lw $a0, %lo(gSettingsPtr)($a0) -/* 06F668 8006EA68 0C01B9DC */ jal func_8006E770 -/* 06F66C 8006EA6C 24050003 */ li $a1, 3 -/* 06F670 8006EA70 3C048012 */ lui $a0, %hi(gSettingsPtr) # $a0, 0x8012 -/* 06F674 8006EA74 8C843510 */ lw $a0, %lo(gSettingsPtr)($a0) -/* 06F678 8006EA78 0C01BA65 */ jal func_8006E994 -/* 06F67C 8006EA7C 00000000 */ nop -/* 06F680 8006EA80 8FBF0014 */ lw $ra, 0x14($sp) -/* 06F684 8006EA84 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06F688 8006EA88 03E00008 */ jr $ra -/* 06F68C 8006EA8C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F29C.s b/asm/non_matchings/unknown_066AA0/func_8006F29C.s deleted file mode 100644 index c1e15948..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F29C.s +++ /dev/null @@ -1,43 +0,0 @@ -glabel func_8006F29C -/* 06FE9C 8006F29C 3C0E800E */ lui $t6, %hi(D_800DD394) # $t6, 0x800e -/* 06FEA0 8006F2A0 85CED394 */ lh $t6, %lo(D_800DD394)($t6) -/* 06FEA4 8006F2A4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06FEA8 8006F2A8 15C0001F */ bnez $t6, .L8006F328 -/* 06FEAC 8006F2AC AFBF0014 */ sw $ra, 0x14($sp) -/* 06FEB0 8006F2B0 3C028012 */ lui $v0, %hi(gSettingsPtr) # $v0, 0x8012 -/* 06FEB4 8006F2B4 8C423510 */ lw $v0, %lo(gSettingsPtr)($v0) -/* 06FEB8 8006F2B8 240100FF */ li $at, 255 -/* 06FEBC 8006F2BC 944F000E */ lhu $t7, 0xe($v0) -/* 06FEC0 8006F2C0 00000000 */ nop -/* 06FEC4 8006F2C4 31F800FF */ andi $t8, $t7, 0xff -/* 06FEC8 8006F2C8 17010018 */ bne $t8, $at, .L8006F32C -/* 06FECC 8006F2CC 8FBF0014 */ lw $ra, 0x14($sp) -/* 06FED0 8006F2D0 8C430010 */ lw $v1, 0x10($v0) -/* 06FED4 8006F2D4 00000000 */ nop -/* 06FED8 8006F2D8 30790001 */ andi $t9, $v1, 1 -/* 06FEDC 8006F2DC 17200013 */ bnez $t9, .L8006F32C -/* 06FEE0 8006F2E0 8FBF0014 */ lw $ra, 0x14($sp) -/* 06FEE4 8006F2E4 9448000C */ lhu $t0, 0xc($v0) -/* 06FEE8 8006F2E8 346A0001 */ ori $t2, $v1, 1 -/* 06FEEC 8006F2EC 31090001 */ andi $t1, $t0, 1 -/* 06FEF0 8006F2F0 1120000D */ beqz $t1, .L8006F328 -/* 06FEF4 8006F2F4 3C04800E */ lui $a0, %hi(D_800DD41C) # $a0, 0x800e -/* 06FEF8 8006F2F8 AC4A0010 */ sw $t2, 0x10($v0) -/* 06FEFC 8006F2FC 0C030076 */ jal func_800C01D8 -/* 06FF00 8006F300 2484D41C */ addiu $a0, %lo(D_800DD41C) # addiu $a0, $a0, -0x2be4 -/* 06FF04 8006F304 240B0028 */ li $t3, 40 -/* 06FF08 8006F308 3C01800E */ lui $at, %hi(D_800DD394) # $at, 0x800e -/* 06FF0C 8006F30C A42BD394 */ sh $t3, %lo(D_800DD394)($at) -/* 06FF10 8006F310 3C018012 */ lui $at, %hi(D_80123525) # $at, 0x8012 -/* 06FF14 8006F314 240C002D */ li $t4, 45 -/* 06FF18 8006F318 A02C3525 */ sb $t4, %lo(D_80123525)($at) -/* 06FF1C 8006F31C 3C018012 */ lui $at, %hi(D_80123524) # $at, 0x8012 -/* 06FF20 8006F320 240D0003 */ li $t5, 3 -/* 06FF24 8006F324 A02D3524 */ sb $t5, %lo(D_80123524)($at) -.L8006F328: -/* 06FF28 8006F328 8FBF0014 */ lw $ra, 0x14($sp) -.L8006F32C: -/* 06FF2C 8006F32C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06FF30 8006F330 03E00008 */ jr $ra -/* 06FF34 8006F334 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F43C.s b/asm/non_matchings/unknown_066AA0/func_8006F43C.s deleted file mode 100644 index 00f80c88..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F43C.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_8006F43C -/* 07003C 8006F43C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 070040 8006F440 AFB20020 */ sw $s2, 0x20($sp) -/* 070044 8006F444 AFB1001C */ sw $s1, 0x1c($sp) -/* 070048 8006F448 AFB00018 */ sw $s0, 0x18($sp) -/* 07004C 8006F44C AFBF0024 */ sw $ra, 0x24($sp) -/* 070050 8006F450 00008825 */ move $s1, $zero -/* 070054 8006F454 00008025 */ move $s0, $zero -/* 070058 8006F458 24120004 */ li $s2, 4 -.L8006F45C: -/* 07005C 8006F45C 0C01A94A */ jal func_8006A528 -/* 070060 8006F460 02002025 */ move $a0, $s0 -/* 070064 8006F464 26100001 */ addiu $s0, $s0, 1 -/* 070068 8006F468 1612FFFC */ bne $s0, $s2, .L8006F45C -/* 07006C 8006F46C 02228825 */ or $s1, $s1, $v0 -/* 070070 8006F470 322E1000 */ andi $t6, $s1, 0x1000 -/* 070074 8006F474 11C00004 */ beqz $t6, .L8006F488 -/* 070078 8006F478 3C028012 */ lui $v0, %hi(D_80123520) # $v0, 0x8012 -/* 07007C 8006F47C 240F0001 */ li $t7, 1 -/* 070080 8006F480 3C01800E */ lui $at, %hi(D_800DFD94) # $at, 0x800e -/* 070084 8006F484 AC2FFD94 */ sw $t7, %lo(D_800DFD94)($at) -.L8006F488: -/* 070088 8006F488 24423520 */ addiu $v0, %lo(D_80123520) # addiu $v0, $v0, 0x3520 -/* 07008C 8006F48C 8C580000 */ lw $t8, ($v0) -/* 070090 8006F490 2404001A */ li $a0, 26 -/* 070094 8006F494 27190001 */ addiu $t9, $t8, 1 -/* 070098 8006F498 2B210008 */ slti $at, $t9, 8 -/* 07009C 8006F49C 14200004 */ bnez $at, .L8006F4B0 -/* 0700A0 8006F4A0 AC590000 */ sw $t9, ($v0) -/* 0700A4 8006F4A4 24050027 */ li $a1, 39 -/* 0700A8 8006F4A8 0C01B68A */ jal func_8006DA28 -/* 0700AC 8006F4AC 24060002 */ li $a2, 2 -.L8006F4B0: -/* 0700B0 8006F4B0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0700B4 8006F4B4 8FB00018 */ lw $s0, 0x18($sp) -/* 0700B8 8006F4B8 8FB1001C */ lw $s1, 0x1c($sp) -/* 0700BC 8006F4BC 8FB20020 */ lw $s2, 0x20($sp) -/* 0700C0 8006F4C0 03E00008 */ jr $ra -/* 0700C4 8006F4C4 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/include/fast3d.h b/include/fast3d.h new file mode 100644 index 00000000..2eae9a40 --- /dev/null +++ b/include/fast3d.h @@ -0,0 +1,20 @@ +/* TODO: Replace this with a real gbi.h later */ + +#ifndef _FAST3D_H_ +#define _FAST3D_H_ + +#include "types.h" + +typedef struct Gfx { + u32 w0; + u32 w1; +} Gfx; + +#define fast3d_cmd(pkt, word0, word1) \ +{ \ + Gfx *_g = (Gfx*)(pkt); \ + _g->w0 = word0; \ + _g->w1 = word1; \ +} + +#endif diff --git a/include/structs.h b/include/structs.h index df01680f..8341de84 100644 --- a/include/structs.h +++ b/include/structs.h @@ -53,10 +53,10 @@ typedef struct Settings4C { /* Size: 0x840 bytes */ typedef struct Settings { - /* 0x0000 */ void *balloonsPtr; + /* 0x0000 */ u16 *balloonsPtr; /* 0x0004 */ s32 *courseFlagsPtr; /* 0x0008 */ u16 keys; - /* 0x000A */ char unkA[2]; + /* 0x000A */ u16 unkA; /* 0x000C */ u16 bosses; /* 0x000E */ u16 trophies; /* 0x0010 */ u32 cutsceneFlags; diff --git a/src/mips1/unknown_0667D0.c b/src/mips1/unknown_0667D0.c index e4faf2aa..e57f137b 100644 --- a/src/mips1/unknown_0667D0.c +++ b/src/mips1/unknown_0667D0.c @@ -7,7 +7,6 @@ extern s16 D_800DD050; extern s32* D_80065D98; -extern s32* D_8006C330; extern s32* D_8011D750; extern s32* D_8011F758; extern s32* D_8011F760; diff --git a/src/mips1/unknown_066AA0.c b/src/mips1/unknown_066AA0.c index 82c2e2dd..79bb1a2f 100644 --- a/src/mips1/unknown_066AA0.c +++ b/src/mips1/unknown_066AA0.c @@ -4,12 +4,20 @@ #include "types.h" #include "macros.h" #include "structs.h" +#include "fast3d.h" + extern u32 osTvType; -/* Size: 0x34 bytes */ +/* Size: 0x34 bytes. Might be an array? */ typedef struct unk800DD094 { s32 unk0; - u8 pad4[0x1C]; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; s32 unk20; s32 unk24; s32 unk28; @@ -19,12 +27,16 @@ 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; -extern s8 D_800DD2F8[8]; // Unknown number of entries +extern u8 D_800DD2F8[8]; // Unknown number of entries extern s16 D_800DD304; extern s8 D_800DD318; extern s32 D_800DD31C; extern s16 D_800DD328; +extern u16 D_800DD32C; extern s8 D_800DD330; extern s32 D_800DD37C; extern s32 D_800DD384; @@ -35,6 +47,8 @@ extern u8 D_800DD3F0; extern s32 D_800DD3F4; extern s32 D_800DD408; extern s32 D_800DD41C; +extern s32 D_800DFD94; +extern f32 D_800E70A0; extern f32 D_800E70A4; /* Size: 0x44 bytes */ @@ -46,7 +60,13 @@ typedef struct unk80120AC0 { f32 unkC; f32 unk10; f32 unk14; - u8 pad18[0x1C]; + f32 pad18; + f32 unk1C; + f32 pad20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; s16 unk34; s16 pad36; s16 unk38; @@ -60,16 +80,23 @@ extern unk80120AC0 D_80120AFB[4]; // Unknown number of entries. extern unk80120AC0 D_80120BD0[4]; // Unknown number of entries. extern s32 D_80120CE0; extern s32 D_80120CE4; +extern s32 D_80120CE8; +extern s32 D_80120D08; extern s32 D_80120D0C; extern f32 D_80120D10; extern s8 D_80120D14; extern u8 D_80120D15; extern s32 D_80120D18; +extern s32 D_80120D1C; extern s32 D_80120D6C; +extern s32 D_80120D70[6]; +extern s32 D_80120D88[6]; // Unknown number of entries. extern s32 D_80120EE0; +extern s32 D_80120F20; extern s32 D_80120F60; extern s32 D_80120FE0; extern s32 D_80120FA0; +extern s32 D_80121060; extern s32 D_801210A0; extern s32 D_801210E0; @@ -89,13 +116,19 @@ extern s32 D_80121164; /* Unknown size */ typedef struct unk80121168 { s32 unk0; - u8 pad4[0x48]; + 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; @@ -119,8 +152,10 @@ extern s32 D_80121218; extern s32 D_80121228; extern s8 D_80121250[16]; // Unknown number of entries extern s32 D_801234EC; +extern s32 D_801234F0; extern s32 D_801234F4; extern s32 D_801234F8; +extern s32 D_801234FC; extern s32 D_80123500; extern s32 D_80123504; extern s32 D_80123508; @@ -130,6 +165,7 @@ extern s8 D_80123515; extern s8 D_80123516; extern s32 D_80123518; extern s32 D_8012351C; +extern s32 D_80123520; extern u8 D_80123524; extern u8 D_80123525; extern s32* D_80123548; // This is actually an OSMesgQueue pointer. @@ -138,7 +174,6 @@ extern s32 D_80123560; extern s32 D_A4000000; extern s32 SP_IMEM; - void func_800014BC(f32 arg0); s8* func_8001E29C(s32 arg0); s32 func_8006A624(s8 arg0); @@ -147,7 +182,15 @@ void func_800CC920(s32*, s32*, f32, f32, f32, f32, f32); void func_8006F870(s32*, s32*); s16 func_80029F18(f32, f32, f32); void func_8006A50C(void); +void func_8006CB58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8006C164(void); void func_8000E194(void); +f32 sqrtf(f32); +void osSetTime(u64); +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); GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80065EA0.s") @@ -175,7 +218,13 @@ f32 func_800660DC(void) { return D_80120D10; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800660EC.s") +void func_800660EC(f32 arg0) { + if (0.0f < arg0 && arg0 < 90.0f && arg0 != D_80120D10) { + D_80120D10 = arg0; + func_800CC920(&D_80120EE0, &D_80120D6C, arg0, 1.33333333f, 10.0f, D_800E70A0, 1.0f); + func_8006F870(&D_80120EE0, &D_80120FE0); + } +} void func_80066194(void) { func_800CC920(&D_80120EE0, &D_80120D6C, 60.0f, 1.33333333f, 10.0f, D_800E70A4, 1.0f); @@ -195,9 +244,75 @@ s32 func_80066220(void) { return D_80120CE4; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066230.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066348.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800663DC.s") +void func_80066230(s32 arg0, s32 arg1) { + unk80120AC0 *someStruct; + s16 sp2A; + s16 sp28; + s16 sp26; + s16 sp24; + f32 sp20; + f32 sp1C; + f32 sp18; + + func_8006652C(0); + func_800665E8(0); + someStruct = func_80069D20(); + sp2A = someStruct->unk0; + sp28 = someStruct->unk2; + sp26 = someStruct->unk4; + sp20 = someStruct->unkC; + sp1C = someStruct->unk10; + sp18 = someStruct->unk14; + sp24 = someStruct->unk38; + someStruct->unk4 = 0; + someStruct->unk2 = 0; + someStruct->unk0 = -0x8000; + someStruct->unk38 = 0; + someStruct->unkC = 0.0f; + someStruct->unk10 = 0.0f; + someStruct->unk14 = 0.0f; + func_8001D5E0(0.0f, 0.0f, -1.0f); + func_80066CDC(arg0, arg1); + someStruct->unk38 = sp24; + someStruct->unk0 = sp2A; + someStruct->unk2 = sp28; + someStruct->unk4 = sp26; + someStruct->unkC = sp20; + someStruct->unk10 = sp1C; + someStruct->unk14 = sp18; +} + +f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) { + s32 phi_v1; + f32 temp_f2, temp_f0, temp_f14; + + phi_v1 = D_80120CE4; + + if (D_80120D14 != 0) { + phi_v1 += 4; + } + + temp_f0 = arg2 - D_80120AC0[phi_v1].unk14; + temp_f2 = arg0 - D_80120AC0[phi_v1].unkC; + temp_f14 = arg1 - D_80120AC0[phi_v1].unk10; + return sqrtf((temp_f0 * temp_f0) + ((temp_f2 * temp_f2) + (temp_f14 * temp_f14))); +} + +void func_800663DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { + D_80120AC0[D_80120CE4].unk4 = (s16) (arg3 * 0xB6); + D_80120AC0[D_80120CE4].unkC = (f32) arg0; + D_80120AC0[D_80120CE4].unk10 = (f32) arg1; + D_80120AC0[D_80120CE4].unk14 = (f32) arg2; + D_80120AC0[D_80120CE4].unk2 = (s16) (arg4 * 0xB6); + D_80120AC0[D_80120CE4].unk38 = (u16)0; + D_80120AC0[D_80120CE4].unk24 = 0.0f; + D_80120AC0[D_80120CE4].unk28 = 0.0f; + D_80120AC0[D_80120CE4].unk2C = 0.0f; + D_80120AC0[D_80120CE4].unk30 = 0.0f; + D_80120AC0[D_80120CE4].unk1C = 160.0f; + D_80120AC0[D_80120CE4].unk0 = (s16) (arg5 * 0xB6); + D_80120AC0[D_80120CE4].unk3B = D_800DD2F8[D_80120CE4]; +} void func_80066488(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6) { arg0 += 4; @@ -220,7 +335,31 @@ void func_80066520(void) { D_80120D14 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006652C.s") +s32 func_8006652C(s32 arg0) { + if ((arg0 >= 0) && (arg0 < 4)) { + D_80120CE0 = arg0; + } else { + D_80120CE0 = 0; + } + switch(D_80120CE0) { + case 0: + D_80120CE8 = 1; + break; + case 1: + D_80120CE8 = 2; + break; + case 2: + D_80120CE8 = 3; + break; + case 3: + D_80120CE8 = 4; + break; + } + if (D_80120CE4 >= D_80120CE8) { + D_80120CE4 = 0; + } + return D_80120CE8; +} void func_800665E8(s32 arg0) { if (arg0 >= 0 && arg0 < 4) { @@ -255,7 +394,33 @@ s32 func_80066910(s32 arg0) { } GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066940.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066AA8.s") + +void func_80066AA8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg1 != 0x8000) { + D_800DD064[arg0].unk10 = arg1; + D_800DD064[arg0].unk30 |= 8; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFF7; + } + if (arg2 != 0x8000) { + D_800DD064[arg0].unk10 = arg2; + D_800DD064[arg0].unk30 |= 0x10; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFEF; + } + if (arg3 != 0x8000) { + D_800DD064[arg0].unk18 = arg3; + D_800DD064[arg0].unk30 |= 0x20; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFDF; + } + if (arg4 != 0x8000) { + D_800DD064[arg0].unk1C = arg4; + D_800DD064[arg0].unk30 |= 0x40; + return; + } + D_800DD064[arg0].unk30 &= 0xFFFFFFBF; +} s32 func_80066BA8(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { *arg1 = D_800DD064[arg0].unk20; @@ -268,8 +433,286 @@ s32 func_80066BA8(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { return 1; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066C2C.s") +void func_80066C2C(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { + *arg1 = D_800DD064[arg0].unk0; + *arg2 = D_800DD064[arg0].unk4; + *arg3 = D_800DD064[arg0].unk8; + *arg4 = D_800DD064[arg0].unkC; +} + +// Unused? +void func_80066C80(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { + u32 temp_v0 = func_8007A520(); + *arg0 = 0; + *arg1 = 0; + *arg2 = temp_v0 & 0xFFFF; + *arg3 = (u32) (temp_v0 >> 0x10); +} + + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066CDC.s") +#else +// Work in progress! + +void func_80066CDC(Gfx **dlist, s32 *arg1) { + u32 sp58; + u32 sp54; + u32 sp50; + u32 sp4C; + s32 sp34; + s32 sp2C; + u32 temp_a0; + u32 temp_a0_3; + u32 temp_a0_4; + u32 temp_a2; + u32 temp_a3; + u32 temp_a3_2; + u32 temp_t0; + u32 temp_t1_2; + u32 temp_v0; + u32 temp_v0_3; + u32 temp_v0_4; + u32 temp_v1_10; + u32 temp_v1_3; + u32 temp_v1_4; + s32 phi_t1; + s32 phi_v1; + f32 phi_f6; + f32 phi_f18; + f32 phi_f16; + f32 phi_f8; + f32 phi_f6_2; + f32 phi_f18_2; + f32 phi_f8_2; + f32 phi_f16_2; + u32 phi_a1; + f32 phi_f8_3; + f32 phi_f16_3; + f32 phi_f16_4; + u32 phi_t3; + u32 phi_a3_2; + u32 phi_t5; + u32 phi_t4; + + sp34 = D_80120CE4; + phi_t1 = D_80120CE4; + if (func_8000E184() && D_80120CE0 == 0) { + D_80120CE4 = 1; + phi_t1 = 0; + } + temp_v0 = func_8007A520(); + temp_t0 = temp_v0 >> 0x10; + temp_a3 = temp_t0 >> 1; + + if (D_800DD064[phi_t1].unk30 & 1) { + sp2C = D_80120CE4; + D_80120CE4 = phi_t1; + fast3d_cmd( + (*dlist)++, + ((((s32)(D_800DD064[D_80120CE4].unk24 * 4.0f)) & 0xFFF) | 0xED000000) | (((s32)(D_800DD064[D_80120CE4].unk20 * 4.0f)) & 0xFFF) << 0xC, + (((s32)(D_800DD064[D_80120CE4].unk2C * 4.0f)) & 0xFFF) | (((s32)(D_800DD064[D_80120CE4].unk28 * 4.0f)) & 0xFFF) << 0xC + ) + func_80068158(dlist, 0, 0, 0, 0); + D_80120CE4 = sp2C; + if (arg1 != 0) { + func_80067D3C(dlist, arg1); + } + D_80120CE4 = sp34; + return; + } + temp_t1_2 = temp_v0 & 0xFFFF; + phi_v1 = D_80120CE0; + if (D_80120CE0 == 2) { + phi_v1 = 3; + } + temp_a2 = temp_t1_2 >> 1; + sp54 = temp_a2; + sp58 = temp_a3; + if (osTvType == 0) { + sp58 = 0x91; + } + + switch(phi_v1) { + case 0: + phi_t3 = sp58; + if (osTvType == 0) { + phi_t3 = sp58 - 0x12; + } + phi_f16_4 = temp_t0; + if (temp_t0 < 0) { + phi_f16_4 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_4 * 4.0f)) & 0xFFF) + ) + sp4C = temp_a2; + phi_a3_2 = temp_a2; + break; + case 1: + if (D_80120CE4 == 0) { + temp_v0_4 = temp_t0 >> 2; + phi_t3 = temp_v0_4; + if (osTvType == 0) { + phi_t3 = temp_v0_4 - 0xC; + } + phi_f8_3 = temp_a3 - (temp_t0 >> 7); + if (phi_f8_3 < 0) { + phi_f8_3 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_3 * 4.0f)) & 0xFFF) + ) + } else { + temp_v1_10 = temp_t0 >> 7; + phi_f16_3 = temp_t0 - temp_v1_10; + if (phi_f16_3 < 0) { + phi_f16_3 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a3 + temp_v1_10) * 4.0f)) & 0xFFF) | 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_3 * 4.0f)) & 0xFFF) + ) + phi_t3 = temp_a3 + (temp_t0 >> 2); + } + sp4C = temp_a2; + phi_a3_2 = temp_a2; + break; + case 2: + if (D_80120CE4 == 0) { + phi_f8_2 = temp_t0; + if (temp_t0 < 0) { + phi_f8_2 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_2 * 4.0f)) & 0xFFF) + ) + phi_a1 = temp_t1_2 >> 2; + } else { + temp_a0_4 = temp_t1_2 >> 8; + phi_f16_2 = temp_t0; + if (temp_t0 < 0) { + phi_f16_2 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a2 + temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | 0xED000000, + (((s32)((temp_t1_2 - temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f16_2 * 4.0f)) & 0xFFF) + ) + phi_a1 = temp_a2 + (temp_t1_2 >> 2); + } + sp4C = phi_a1; + phi_t3 = sp58; + phi_a3_2 = phi_a1; + break; + case 3: + switch(D_80120CE4) { + case 0: + phi_f6_2 = temp_a2 - (temp_t1_2 >> 8); + if (phi_f6_2 < 0) { + phi_f6_2 += 4294967296.0f; + } + phi_f18_2 = temp_a3 - (temp_t0 >> 7); + if (phi_f18_2 < 0) { + phi_f18_2 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + ((((s32)(0U * 4.0f) & 0xFFF) << 0xC) | 0xED000000) | (((s32)(0U * 4.0f)) & 0xFFF), + (((s32)(phi_f6_2 * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f18_2 * 4.0f)) & 0xFFF) + ) + phi_t5 = 0U; + phi_t4 = 0U; + break; + case 1: + temp_a0_3 = temp_t1_2 >> 8; + phi_f8 = temp_a3 - (temp_t0 >> 7); + if (phi_f8 < 0) { + phi_f8 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + ((((s32)((temp_a2 + temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000, + ((((s32)(((temp_a2 * 2) - temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8 * 4.0f)) & 0xFFF) + ) + phi_t5 = 0U; + phi_t4 = temp_a2; + break; + case 2: + temp_v1_4 = temp_t0 >> 7; + phi_f16 = (temp_a3 * 2) - temp_v1_4; + if (phi_f16 < 0) { + phi_f16 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a3 + temp_v1_4) * 4.0f)) & 0xFFF) | 0xED000000, + ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16 * 4.0f)) & 0xFFF) + ) + phi_t5 = temp_a3; + phi_t4 = 0U; + break; + case 3: + temp_a0 = temp_t1_2 >> 8; + temp_v1_3 = temp_t0 >> 7; + phi_f6 = (temp_a2 * 2) - temp_a0; + if (phi_f6 < 0) { + phi_f6 += 4294967296.0f; + } + phi_f18 = (temp_a3 * 2) - temp_v1_3; + if (phi_f18 < 0) { + phi_f18 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((((s32)((temp_a2 + temp_a0) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000) | (((s32)((temp_a3 + temp_v1_3) * 4.0f)) & 0xFFF), + ((((s32)(phi_f6 * 4.0f) & 0xFFF)) << 0xC) | (((s32)(phi_f18 * 4.0f)) & 0xFFF) + ) + phi_t5 = temp_a3; + phi_t4 = temp_a2; + break; + default: + phi_t5 = 0; + phi_t4 = 0; + break; + } + temp_v0_3 = phi_t5 + sp58; + temp_a3_2 = phi_t4 + sp54; + phi_t3 = temp_v0_3; + phi_a3_2 = temp_a3_2; + if (osTvType == 0) { + phi_t3 = temp_v0_3 - 6; + phi_a3_2 = temp_a3_2; + if (D_80120CE4 < 2) { + phi_t3 = temp_v0_3 - 0x14; + phi_a3_2 = temp_a3_2; + } + } + break; + default: + phi_t3 = sp50; + phi_a3_2 = sp4C; + break; + } + + if (osTvType == 0) { + phi_a3_2 -= 4; + } + func_80068158(dlist, sp54, sp58, phi_a3_2, phi_t3); + if (arg1 != 0) { + func_80067D3C(dlist, arg1); + } + D_80120CE4 = sp34; +} +#endif + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067A3C.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067D3C.s") @@ -278,10 +721,32 @@ void func_80067F20(f32 arg0) { } GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067F2C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006807C.s") + +void func_8006807C(Gfx **dlist, s32 *arg1) { + func_8006FE74(&D_80121060, &D_800DD288); + func_8006F768(&D_80121060, &D_80120EE0, &D_80120F20); + func_8006FE74(D_80120D70[0], &D_800DD2A0); + func_8006F768(D_80120D70[0], &D_80120F20, &D_80121060); + func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! + fast3d_cmd((*dlist)++, 0x1000040, (u32)(*arg1 + 0x80000000)) + *arg1 += 0x40; + D_80120D1C = 0; + D_80120D08 = 0; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068158.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800682AC.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068408.s") + +void func_80068408(Gfx **dlist, s32 *arg1) { + func_800705F8(D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f); + func_8006F768(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); + func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! + D_80120D88[D_80120D1C] = *arg1; + + fast3d_cmd((*dlist)++, ((((D_80120D08 << 6) & 0xFF) << 0x10) | 0x1000000) | 0x40, (u32)(*arg1 + 0x80000000)) + + *arg1 += 0x40; +} void func_80068508(s32 arg0) { D_80120D0C = arg0; @@ -294,15 +759,15 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069484.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069790.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069A40.s") -s16 *func_80069CFC(void) { - return &D_80120AC0[D_80120CE4].unk0; +unk80120AC0 *func_80069CFC(void) { + return &D_80120AC0[D_80120CE4]; } -s16 *func_80069D20(void) { +unk80120AC0 *func_80069D20(void) { if (D_80120D14 != 0) { - return &D_80120AC0[D_80120CE4 + 4].unk0; + return &D_80120AC0[D_80120CE4 + 4]; } - return &D_80120AC0[D_80120CE4].unk0; + return &D_80120AC0[D_80120CE4]; } unk80120AC0 *func_80069D7C(void) { @@ -332,17 +797,74 @@ f32 func_80069DC8(f32 arg0, f32 arg1, f32 arg2) { return returnVal; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069E14.s") +void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { + f32 temp_f0; + f32 temp_f0_2; + f32 temp_f14; + f32 temp_f2; + s32 i; + + for (i = 0; i <= D_80120CE0; i++) { + temp_f0 = arg0 - D_80120AC0[i].unkC; + temp_f2 = arg1 - D_80120AC0[i].unk10; + temp_f14 = arg2 - D_80120AC0[i].unk14; + temp_f0_2 = sqrtf(((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f14 * temp_f14)); + if (temp_f0_2 < arg3) { + D_80120AC0[i].unk30 = ((arg3 - temp_f0_2) * arg4) / arg3; + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069F28.s") s32* func_8006A100(void) { return &D_801210E0; } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A10C.s") +#else + +extern s32 D_800DD300; +extern s32 D_801210F8; +extern s32 D_801210FC; +extern s8 D_80121100; +extern u8 D_80121103; + +// Has regalloc & stack issues. +s32 func_8006A10C(void) { + u8 sp23; + osCreateMesgQueue(&D_801210E0, &D_801210F8, 1); + osSetEventMsg(5, &D_801210E0, D_801210FC); + func_800CCC20(&D_801210E0, &sp23, &D_80121100); + func_800CCFE0(&D_801210E0); + func_8006A434(); + D_800DD300 = 0; + if ((sp23 & 1) && !(D_80121103 & 8)) { + return 0; + } + D_800DD300 = 1; + return -1; +} +#endif + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A1C4.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A434.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A458.s") + +void func_8006A458(s8 *activePlayers) { + s32 i; + s32 temp = 0; + for(i = 0; i < 4; i++) { + if (activePlayers[i]) { + D_80121150[temp++] = i; + } + } + for(i = 0; i < 4; i++) { + if (!activePlayers[i]) { + D_80121150[temp++] = i; + } + } +} u8 func_8006A4F8(s32 arg0) { return D_80121150[arg0]; @@ -484,7 +1006,27 @@ u8 func_8006BDC0(void) { } GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006BDDC.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006BEFC.s") + +void func_8006BEFC(void) { + func_8006C164(); + func_80077B34(0, 0, 0); + func_80071140(D_80121168); + func_800049D8(); + func_80001844(); + func_800018E0(); + func_800012E8(); + func_80031B60(); + func_8002C7D4(); + func_80008174(); + func_80000968(0); + if (D_80121168->unk90 > 0) { + func_800AB35C(); + } + if (D_80121168->unk49 == 0xFF) { + func_8007B2BC(D_80121168->unkA4); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006BFC8.s") void func_8006C164(void) { @@ -506,7 +1048,25 @@ void func_8006C1AC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { D_801211C8[D_800DD328++] = arg3; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C22C.s") +void func_8006C22C(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { + s16 temp_v1; + + D_800DD328--; + *arg3 = D_801211C8[D_800DD328]; + D_800DD328--; + temp_v1 = D_801211C8[D_800DD328]; + D_800DD328--; + *arg1 = D_801211C8[D_800DD328]; + D_800DD328--; + *arg0 = D_801211C8[D_800DD328]; + + if (temp_v1 != -1) { + *arg2 = temp_v1; + } + + D_800DD32C = 1; +} + void func_8006C2E4(void) { D_800DD328 = 0; @@ -525,7 +1085,30 @@ s32 func_8006C300(void) { } } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/D_8006C330.s") +#else +void func_8006C330(s32 arg0) { + func_8006C3E0(); + D_800DD37C = func_8006A1C4(D_800DD37C, 0); + D_80123520 = 0; + D_801234EC = -1; + while(1) { + if (func_8006EAC0() != 0) { + func_80072708(); + func_80002A74(); + func_800C73BC(); + __osSpSetStatus(0xAAAA82); + func_800CD250(0x1D6); + while(1); // Infinite loop + } + func_8006C60C(); + func_80065E30(); + } + // This infinite loop creates too many nops! Needs to be 0x10 aligned, not 0x20 aligned. +} +#endif + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C3E0.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C60C.s") @@ -539,7 +1122,20 @@ void func_8006CAE4(s32 arg0, s32 arg1, s32 arg2) { func_8006CB58(D_801234F4, D_80123500, D_80123504, arg2); } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CB58.s") +void func_8006CB58(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + func_8006ECFC(arg1); + func_800710B0(0); + func_80065EA0(); + func_800C3048(); + func_8006B250(arg0, arg1, arg2, arg3, D_80123508); + func_8009ECF0(func_80066210()); + func_800AE728(8, 0x10, 0x96, 0x64, 0x32, 0); + func_8001BF20(); + osSetTime(0); + func_800710B0(2); + func_80072298(1); +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CC14.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CCF0.s") @@ -571,7 +1167,23 @@ void func_8006D8F0(s32 arg0) { } } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006D968.s") +void func_8006D968(s8 *arg0) { + s32 i; + if (D_801234EC != 4) { + D_80121250[0] = D_801234F4; + for(i = 0; i < 2; i++) { + D_80121250[i + 2] = arg0[i + 8]; + D_80121250[i + 4] = arg0[i + 10]; + D_80121250[i + 6] = arg0[i + 12]; + D_80121250[i + 8] = arg0[i + 14]; + D_80121250[i + 10] = arg0[i + 18]; + D_80121250[i + 12] = arg0[i + 20]; + } + D_80121250[14] = arg0[22]; + D_80121250[15] = arg0[23]; + D_801234FC = 1; + } +} s32 func_8006DA0C(void) { return D_801234EC; @@ -582,7 +1194,41 @@ void func_8006DA1C(s32 arg0) { D_801234EC = arg0; } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DA28.s") +#else + +// For some reason this function is storing arg0 in s0. + +void func_8006DB3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void func_800813C0(s32); +void func_80004A60(s32, s32); +void MenuInit(s32); + +void func_8006DA28(s32 arg0, s32 arg1, s32 arg2) { + func_8006ECFC(0); + D_801234EC = 1; + D_801234F0 = 1; + func_80004A60(0, 0x7FFF); + func_80004A60(1, 0x7FFF); + func_80004A60(2, 0x7FFF); + func_80065EA0(); + + if (D_80123514 == 0) { + D_80123514 = 0; // Someone at rare: "I know I just checked if this was zero, but I need to be sure!" + if (arg1 < 0) { + D_80123514 = 1; + } else { + func_8006DB3C(arg1, -1, 0, 2, arg2); + } + } + if (arg0 == 0 || arg0 == 1 || arg0 == 2) { + func_800813C0(arg0); + } + MenuInit(arg0); + D_80123504 = 0; +} +#endif void func_8006DB14(s32 arg0) { D_80123518 = arg0; @@ -596,7 +1242,17 @@ s32 func_8006DB2C(void) { return D_80123518; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DB3C.s") +void func_8006DB3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + func_800710B0(0); + func_80065EA0(); + func_800C3048(); + func_8006B250(arg0, arg1, arg2, arg3, arg4); + func_8009ECF0(func_80066210()); + func_800AE728(4, 4, 0x6E, 0x30, 0x20, 0); + func_8001BF20(); + osSetTime(0); + func_800710B0(2); +} void func_8006DBE4(void) { if (D_80123514 == 0) { @@ -630,7 +1286,37 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E2E8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E3BC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E5BC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E770.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E994.s") + +void func_8006E994(Settings* settings) { + s32 i; + s32 sp20; + s32 sp1C; + + func_8006B224(&sp1C, &sp20); + settings->newGame = 1; + + for (i = 0; i < sp20; i++) { + settings->balloonsPtr[i] = 0; + } + for(i = 0; i < sp1C; i++) { + settings->courseFlagsPtr[i] = 0; + } + + settings->keys = 0; + settings->unkA = 0; + settings->bosses = 0; + settings->trophies = 0; + settings->cutsceneFlags = 0; + settings->tajFlags = 0; + settings->ttAmulet = 0; + settings->wizpigAmulet = 0; +} + +// Unused? +void func_8006EA58(void) { + func_8006E770(gSettingsPtr, 3); + func_8006E994(gSettingsPtr); +} Settings* get_settings(void) { return gSettingsPtr; @@ -739,7 +1425,17 @@ void func_8006F254(void) { } } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F29C.s") +void func_8006F29C(void) { + if (D_800DD394 == 0) { + if ((gSettingsPtr->trophies & 0xFF) == 0xFF && !(gSettingsPtr->cutsceneFlags & 1) && gSettingsPtr->bosses & 1) { + gSettingsPtr->cutsceneFlags |= 1; + func_800C01D8(&D_800DD41C); + D_800DD394 = 0x28; + D_80123525 = 0x2D; + D_80123524 = 3; + } + } +} void func_8006F338(s32 arg0) { if (D_800DD394 == 0) { @@ -773,12 +1469,25 @@ void func_8006F398(void) { } } - void func_8006F42C(void) { D_800DD3F0 = 2; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F43C.s") +void func_8006F43C(void) { + s32 phi_s1 = 0; + s32 phi_s0 = 0; + while(phi_s0 != 4) { + phi_s1 |= func_8006A528(phi_s0); + phi_s0++; + } + if (phi_s1 & 0x1000) { + D_800DFD94 = 1; + } + D_80123520++; + if (D_80123520 >= 8) { + func_8006DA28(0x1A, 0x27, 2); + } +} s32 func_8006F4C8(void) { if (D_800DD384 == -1) { diff --git a/src/mips1/unknown_080240.c b/src/mips1/unknown_080240.c index 9b7293f3..0667a159 100644 --- a/src/mips1/unknown_080240.c +++ b/src/mips1/unknown_080240.c @@ -3,6 +3,7 @@ #include "types.h" #include "macros.h" +#include "fast3d.h" extern s32 D_800E7C90; @@ -41,21 +42,6 @@ u32 func_8007F640(s32 arg0) { } } - -// TODO: Replace with real Gfx struct -typedef struct Gfx { - u32 w0; - u32 w1; -} Gfx; - -// TODO: Replace with real gbi.h macros -#define fast3d_cmd(pkt, word0, word1) \ -{ \ - Gfx *_g = (Gfx*)(pkt); \ - _g->w0 = word0; \ - _g->w1 = word1; \ -} - extern Gfx D_800DF440; void func_8007F714(Gfx **dlist, s32 arg1) {