We are battling in Darkwater Beach. (1 opponent remains) (#409)

* func_8000418C WIP

* func_8000418C progress

* Mach func_80030664

* Match func_80030DE0

* func_8001CC48 NON_MATCHING

* Match func_8001B3C4

* Match func_80036040

* Match func_8001EFA4

* Match func_80016C68

* Update README

* Remove func_80030DE0 asm

* Update src/objects.c

Co-authored-by: David Benepe <benepe96@gmail.com>

* Match free_hud

---------

Co-authored-by: David Benepe <benepe96@gmail.com>
This commit is contained in:
Ryan Myers
2023-09-23 18:20:08 -04:00
committed by GitHub
co-authored by David Benepe
parent 888e4cde8b
commit fd40898eee
23 changed files with 421 additions and 890 deletions
+14 -14
View File
@@ -5,11 +5,11 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the
Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time.
<!-- README_SCORE_SUMMARY_BEGIN -->
As of September 21, 2023, this is our current score:
As of September 22, 2023, this is our current score:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 53.85%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 54.12%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 27.65%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 28.35%
<!-- README_SCORE_SUMMARY_END -->
---
@@ -128,30 +128,30 @@ s32 is_drumstick_unlocked(void) {
```
<!-- README_SCORE_BEGIN -->
As of September 21st, 2023, this is our current score:
As of September 22nd, 2023, this is our current score:
```
========================================================
ADVENTURE ONE (ASM -> C Decompilation)
------------------- 53.85% Complete --------------------
# Decompiled functions: 1550
# GLOBAL_ASM remaining: 288
# NON_MATCHING functions: 14
# NON_EQUIVALENT WIP functions: 69
------------------- 54.12% Complete --------------------
# Decompiled functions: 1556
# GLOBAL_ASM remaining: 282
# NON_MATCHING functions: 15
# NON_EQUIVALENT WIP functions: 68
--------------------- Game Status ----------------------
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 2/4, Wizpig Amulets: 2/4
--------------------------------------------------------
We are battling in Darkwater Beach. (2 opponents remain)
We are battling in Darkwater Beach. (1 opponent remains)
========================================================
ADVENTURE TWO (Cleanup & Documentation)
------------------- 27.65% Complete --------------------
# Documented functions: 606
# Undocumented remaining: 964
------------------- 28.35% Complete --------------------
# Documented functions: 621
# Undocumented remaining: 949
--------------------- Game Status ----------------------
Balloons: 14/47, Keys: 1/4, Trophies: 1/5
T.T. Amulets: 1/4, Wizpig Amulets: 1/4
--------------------------------------------------------
We are racing in Walrus Cove. (Lap 1/3)
We are racing in Walrus Cove. (Lap 3/3)
========================================================
```
<!-- README_SCORE_END -->
-94
View File
@@ -1,94 +0,0 @@
glabel func_800A003C
/* 0A0C3C 800A003C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0A0C40 800A0040 3C028012 */ lui $v0, %hi(gAssetHudElementIdsCount) # $v0, 0x8012
/* 0A0C44 800A0044 8C426CF8 */ lw $v0, %lo(gAssetHudElementIdsCount)($v0)
/* 0A0C48 800A0048 AFB00018 */ sw $s0, 0x18($sp)
/* 0A0C4C 800A004C AFBF002C */ sw $ra, 0x2c($sp)
/* 0A0C50 800A0050 AFB40028 */ sw $s4, 0x28($sp)
/* 0A0C54 800A0054 AFB30024 */ sw $s3, 0x24($sp)
/* 0A0C58 800A0058 AFB20020 */ sw $s2, 0x20($sp)
/* 0A0C5C 800A005C AFB1001C */ sw $s1, 0x1c($sp)
/* 0A0C60 800A0060 18400032 */ blez $v0, .L800A012C
/* 0A0C64 800A0064 00008025 */ move $s0, $zero
/* 0A0C68 800A0068 3C148012 */ lui $s4, %hi(gAssetHudElementIds) # $s4, 0x8012
/* 0A0C6C 800A006C 3C128012 */ lui $s2, %hi(gAssetHudElements) # $s2, 0x8012
/* 0A0C70 800A0070 26526CF4 */ addiu $s2, %lo(gAssetHudElements) # addiu $s2, $s2, 0x6cf4
/* 0A0C74 800A0074 26946CF0 */ addiu $s4, %lo(gAssetHudElementIds) # addiu $s4, $s4, 0x6cf0
/* 0A0C78 800A0078 00008825 */ move $s1, $zero
/* 0A0C7C 800A007C 3413C000 */ li $s3, 49152
.L800A0080:
/* 0A0C80 800A0080 8E4E0000 */ lw $t6, ($s2)
/* 0A0C84 800A0084 00000000 */ nop
/* 0A0C88 800A0088 01D17821 */ addu $t7, $t6, $s1
/* 0A0C8C 800A008C 8DE40000 */ lw $a0, ($t7)
/* 0A0C90 800A0090 00000000 */ nop
/* 0A0C94 800A0094 10800021 */ beqz $a0, .L800A011C
/* 0A0C98 800A0098 00000000 */ nop
/* 0A0C9C 800A009C 8E980000 */ lw $t8, ($s4)
/* 0A0CA0 800A00A0 0010C840 */ sll $t9, $s0, 1
/* 0A0CA4 800A00A4 03194021 */ addu $t0, $t8, $t9
/* 0A0CA8 800A00A8 85020000 */ lh $v0, ($t0)
/* 0A0CAC 800A00AC 00000000 */ nop
/* 0A0CB0 800A00B0 3049C000 */ andi $t1, $v0, 0xc000
/* 0A0CB4 800A00B4 16690005 */ bne $s3, $t1, .L800A00CC
/* 0A0CB8 800A00B8 304A8000 */ andi $t2, $v0, 0x8000
/* 0A0CBC 800A00BC 0C01ECAF */ jal free_texture
/* 0A0CC0 800A00C0 00000000 */ nop
/* 0A0CC4 800A00C4 10000010 */ b .L800A0108
/* 0A0CC8 800A00C8 8E4C0000 */ lw $t4, ($s2)
.L800A00CC:
/* 0A0CCC 800A00CC 11400005 */ beqz $t2, .L800A00E4
/* 0A0CD0 800A00D0 304B4000 */ andi $t3, $v0, 0x4000
/* 0A0CD4 800A00D4 0C01F32C */ jal free_sprite
/* 0A0CD8 800A00D8 00000000 */ nop
/* 0A0CDC 800A00DC 1000000A */ b .L800A0108
/* 0A0CE0 800A00E0 8E4C0000 */ lw $t4, ($s2)
.L800A00E4:
/* 0A0CE4 800A00E4 11600005 */ beqz $t3, .L800A00FC
/* 0A0CE8 800A00E8 00000000 */ nop
/* 0A0CEC 800A00EC 0C003FEE */ jal gParticlePtrList_addObject
/* 0A0CF0 800A00F0 00000000 */ nop
/* 0A0CF4 800A00F4 10000004 */ b .L800A0108
/* 0A0CF8 800A00F8 8E4C0000 */ lw $t4, ($s2)
.L800A00FC:
/* 0A0CFC 800A00FC 0C017FD0 */ jal func_8005FF40
/* 0A0D00 800A0100 00000000 */ nop
/* 0A0D04 800A0104 8E4C0000 */ lw $t4, ($s2)
.L800A0108:
/* 0A0D08 800A0108 3C028012 */ lui $v0, %hi(gAssetHudElementIdsCount) # $v0, 0x8012
/* 0A0D0C 800A010C 01916821 */ addu $t5, $t4, $s1
/* 0A0D10 800A0110 ADA00000 */ sw $zero, ($t5)
/* 0A0D14 800A0114 8C426CF8 */ lw $v0, %lo(gAssetHudElementIdsCount)($v0)
/* 0A0D18 800A0118 00000000 */ nop
.L800A011C:
/* 0A0D1C 800A011C 26100001 */ addiu $s0, $s0, 1
/* 0A0D20 800A0120 0202082A */ slt $at, $s0, $v0
/* 0A0D24 800A0124 1420FFD6 */ bnez $at, .L800A0080
/* 0A0D28 800A0128 26310004 */ addiu $s1, $s1, 4
.L800A012C:
/* 0A0D2C 800A012C 3C048012 */ lui $a0, %hi(gPlayerHud) # $a0, 0x8012
/* 0A0D30 800A0130 3C128012 */ lui $s2, %hi(gAssetHudElements) # $s2, 0x8012
/* 0A0D34 800A0134 3C148012 */ lui $s4, %hi(gAssetHudElementIds) # $s4, 0x8012
/* 0A0D38 800A0138 8C846CE0 */ lw $a0, %lo(gPlayerHud)($a0)
/* 0A0D3C 800A013C 26946CF0 */ addiu $s4, %lo(gAssetHudElementIds) # addiu $s4, $s4, 0x6cf0
/* 0A0D40 800A0140 0C01C450 */ jal free_from_memory_pool
/* 0A0D44 800A0144 26526CF4 */ addiu $s2, %lo(gAssetHudElements) # addiu $s2, $s2, 0x6cf4
/* 0A0D48 800A0148 8E840000 */ lw $a0, ($s4)
/* 0A0D4C 800A014C 0C01C450 */ jal free_from_memory_pool
/* 0A0D50 800A0150 00000000 */ nop
/* 0A0D54 800A0154 3C018012 */ lui $at, %hi(gAssetHudElementIdsCount) # $at, 0x8012
/* 0A0D58 800A0158 AC206CF8 */ sw $zero, %lo(gAssetHudElementIdsCount)($at)
/* 0A0D5C 800A015C 8E440000 */ lw $a0, ($s2)
/* 0A0D60 800A0160 0C01C450 */ jal free_from_memory_pool
/* 0A0D64 800A0164 00000000 */ nop
/* 0A0D68 800A0168 0C004013 */ jal gParticlePtrList_flush
/* 0A0D6C 800A016C 00000000 */ nop
/* 0A0D70 800A0170 8FBF002C */ lw $ra, 0x2c($sp)
/* 0A0D74 800A0174 8FB00018 */ lw $s0, 0x18($sp)
/* 0A0D78 800A0178 8FB1001C */ lw $s1, 0x1c($sp)
/* 0A0D7C 800A017C 8FB20020 */ lw $s2, 0x20($sp)
/* 0A0D80 800A0180 8FB30024 */ lw $s3, 0x24($sp)
/* 0A0D84 800A0184 8FB40028 */ lw $s4, 0x28($sp)
/* 0A0D88 800A0188 03E00008 */ jr $ra
/* 0A0D8C 800A018C 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,88 +0,0 @@
glabel func_80036040
/* 036C40 80036040 27BDFF68 */ addiu $sp, $sp, -0x98
/* 036C44 80036044 AFBF002C */ sw $ra, 0x2c($sp)
/* 036C48 80036048 AFB00028 */ sw $s0, 0x28($sp)
/* 036C4C 8003604C 8C83004C */ lw $v1, 0x4c($a0)
/* 036C50 80036050 00808025 */ move $s0, $a0
/* 036C54 80036054 906E0013 */ lbu $t6, 0x13($v1)
/* 036C58 80036058 00000000 */ nop
/* 036C5C 8003605C 29C10028 */ slti $at, $t6, 0x28
/* 036C60 80036060 10200049 */ beqz $at, .L80036188
/* 036C64 80036064 8FBF002C */ lw $ra, 0x2c($sp)
/* 036C68 80036068 8C620000 */ lw $v0, ($v1)
/* 036C6C 8003606C 24070001 */ li $a3, 1
/* 036C70 80036070 8C4F0040 */ lw $t7, 0x40($v0)
/* 036C74 80036074 00000000 */ nop
/* 036C78 80036078 81F80054 */ lb $t8, 0x54($t7)
/* 036C7C 8003607C 00000000 */ nop
/* 036C80 80036080 14F80041 */ bne $a3, $t8, .L80036188
/* 036C84 80036084 8FBF002C */ lw $ra, 0x2c($sp)
/* 036C88 80036088 8C430064 */ lw $v1, 0x64($v0)
/* 036C8C 8003608C 00000000 */ nop
/* 036C90 80036090 8C790144 */ lw $t9, 0x144($v1)
/* 036C94 80036094 00000000 */ nop
/* 036C98 80036098 1720003B */ bnez $t9, .L80036188
/* 036C9C 8003609C 8FBF002C */ lw $ra, 0x2c($sp)
/* 036CA0 800360A0 A0A7000B */ sb $a3, 0xb($a1)
/* 036CA4 800360A4 84880006 */ lh $t0, 6($a0)
/* 036CA8 800360A8 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 036CAC 800360AC 35094000 */ ori $t1, $t0, 0x4000
/* 036CB0 800360B0 A4890006 */ sh $t1, 6($a0)
/* 036CB4 800360B4 AC640144 */ sw $a0, 0x144($v1)
/* 036CB8 800360B8 844A0000 */ lh $t2, ($v0)
/* 036CBC 800360BC 44812000 */ mtc1 $at, $f4
/* 036CC0 800360C0 000A5823 */ negu $t3, $t2
/* 036CC4 800360C4 A7AB0038 */ sh $t3, 0x38($sp)
/* 036CC8 800360C8 844C0002 */ lh $t4, 2($v0)
/* 036CCC 800360CC 27A40050 */ addiu $a0, $sp, 0x50
/* 036CD0 800360D0 000C6823 */ negu $t5, $t4
/* 036CD4 800360D4 A7AD003A */ sh $t5, 0x3a($sp)
/* 036CD8 800360D8 844E0004 */ lh $t6, 4($v0)
/* 036CDC 800360DC E7A40040 */ swc1 $f4, 0x40($sp)
/* 036CE0 800360E0 000E7823 */ negu $t7, $t6
/* 036CE4 800360E4 A7AF003C */ sh $t7, 0x3c($sp)
/* 036CE8 800360E8 C446000C */ lwc1 $f6, 0xc($v0)
/* 036CEC 800360EC 27A50038 */ addiu $a1, $sp, 0x38
/* 036CF0 800360F0 46003207 */ neg.s $f8, $f6
/* 036CF4 800360F4 E7A80044 */ swc1 $f8, 0x44($sp)
/* 036CF8 800360F8 C44A0010 */ lwc1 $f10, 0x10($v0)
/* 036CFC 800360FC 00000000 */ nop
/* 036D00 80036100 46005407 */ neg.s $f16, $f10
/* 036D04 80036104 E7B00048 */ swc1 $f16, 0x48($sp)
/* 036D08 80036108 C4520014 */ lwc1 $f18, 0x14($v0)
/* 036D0C 8003610C AFA20090 */ sw $v0, 0x90($sp)
/* 036D10 80036110 46009107 */ neg.s $f4, $f18
/* 036D14 80036114 0C01BF9D */ jal object_transform_to_matrix_2
/* 036D18 80036118 E7A4004C */ swc1 $f4, 0x4c($sp)
/* 036D1C 8003611C 8E05000C */ lw $a1, 0xc($s0)
/* 036D20 80036120 8E060010 */ lw $a2, 0x10($s0)
/* 036D24 80036124 8E070014 */ lw $a3, 0x14($s0)
/* 036D28 80036128 2618000C */ addiu $t8, $s0, 0xc
/* 036D2C 8003612C 26190010 */ addiu $t9, $s0, 0x10
/* 036D30 80036130 26080014 */ addiu $t0, $s0, 0x14
/* 036D34 80036134 AFA80018 */ sw $t0, 0x18($sp)
/* 036D38 80036138 AFB90014 */ sw $t9, 0x14($sp)
/* 036D3C 8003613C AFB80010 */ sw $t8, 0x10($sp)
/* 036D40 80036140 0C01BD93 */ jal guMtxXFMF
/* 036D44 80036144 27A40050 */ addiu $a0, $sp, 0x50
/* 036D48 80036148 8FA20090 */ lw $v0, 0x90($sp)
/* 036D4C 8003614C C606000C */ lwc1 $f6, 0xc($s0)
/* 036D50 80036150 C4480008 */ lwc1 $f8, 8($v0)
/* 036D54 80036154 C6100010 */ lwc1 $f16, 0x10($s0)
/* 036D58 80036158 46083283 */ div.s $f10, $f6, $f8
/* 036D5C 8003615C C6060014 */ lwc1 $f6, 0x14($s0)
/* 036D60 80036160 E60A000C */ swc1 $f10, 0xc($s0)
/* 036D64 80036164 C4520008 */ lwc1 $f18, 8($v0)
/* 036D68 80036168 00000000 */ nop
/* 036D6C 8003616C 46128103 */ div.s $f4, $f16, $f18
/* 036D70 80036170 E6040010 */ swc1 $f4, 0x10($s0)
/* 036D74 80036174 C4480008 */ lwc1 $f8, 8($v0)
/* 036D78 80036178 00000000 */ nop
/* 036D7C 8003617C 46083283 */ div.s $f10, $f6, $f8
/* 036D80 80036180 E60A0014 */ swc1 $f10, 0x14($s0)
/* 036D84 80036184 8FBF002C */ lw $ra, 0x2c($sp)
.L80036188:
/* 036D88 80036188 8FB00028 */ lw $s0, 0x28($sp)
/* 036D8C 8003618C 03E00008 */ jr $ra
/* 036D90 80036190 27BD0098 */ addiu $sp, $sp, 0x98
-104
View File
@@ -1,104 +0,0 @@
glabel func_80016C68
/* 017868 80016C68 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 01786C 80016C6C AFB60050 */ sw $s6, 0x50($sp)
/* 017870 80016C70 3C168012 */ lui $s6, %hi(objCount) # $s6, 0x8012
/* 017874 80016C74 26D6AE5C */ addiu $s6, %lo(objCount) # addiu $s6, $s6, -0x51a4
/* 017878 80016C78 8ECE0000 */ lw $t6, ($s6)
/* 01787C 80016C7C E7BA0034 */ swc1 $f26, 0x34($sp)
/* 017880 80016C80 E7B60024 */ swc1 $f22, 0x24($sp)
/* 017884 80016C84 4486B000 */ mtc1 $a2, $f22
/* 017888 80016C88 4487D000 */ mtc1 $a3, $f26
/* 01788C 80016C8C AFB1003C */ sw $s1, 0x3c($sp)
/* 017890 80016C90 E7B90028 */ swc1 $f25, 0x28($sp)
/* 017894 80016C94 E7B8002C */ swc1 $f24, 0x2c($sp)
/* 017898 80016C98 E7B50018 */ swc1 $f21, 0x18($sp)
/* 01789C 80016C9C E7B4001C */ swc1 $f20, 0x1c($sp)
/* 0178A0 80016CA0 46006506 */ mov.s $f20, $f12
/* 0178A4 80016CA4 46007606 */ mov.s $f24, $f14
/* 0178A8 80016CA8 AFBF0054 */ sw $ra, 0x54($sp)
/* 0178AC 80016CAC AFB5004C */ sw $s5, 0x4c($sp)
/* 0178B0 80016CB0 AFB40048 */ sw $s4, 0x48($sp)
/* 0178B4 80016CB4 AFB30044 */ sw $s3, 0x44($sp)
/* 0178B8 80016CB8 AFB20040 */ sw $s2, 0x40($sp)
/* 0178BC 80016CBC AFB00038 */ sw $s0, 0x38($sp)
/* 0178C0 80016CC0 E7BB0030 */ swc1 $f27, 0x30($sp)
/* 0178C4 80016CC4 E7B70020 */ swc1 $f23, 0x20($sp)
/* 0178C8 80016CC8 19C00034 */ blez $t6, .L80016D9C
/* 0178CC 80016CCC 00008825 */ move $s1, $zero
/* 0178D0 80016CD0 3C148012 */ lui $s4, %hi(gObjPtrList) # $s4, 0x8012
/* 0178D4 80016CD4 8FB30068 */ lw $s3, 0x68($sp)
/* 0178D8 80016CD8 2694AE58 */ addiu $s4, %lo(gObjPtrList) # addiu $s4, $s4, -0x51a8
/* 0178DC 80016CDC 00009025 */ move $s2, $zero
/* 0178E0 80016CE0 24150055 */ li $s5, 85
.L80016CE4:
/* 0178E4 80016CE4 8E8F0000 */ lw $t7, ($s4)
/* 0178E8 80016CE8 00000000 */ nop
/* 0178EC 80016CEC 01F2C021 */ addu $t8, $t7, $s2
/* 0178F0 80016CF0 8F100000 */ lw $s0, ($t8)
/* 0178F4 80016CF4 00000000 */ nop
/* 0178F8 80016CF8 86190006 */ lh $t9, 6($s0)
/* 0178FC 80016CFC 00000000 */ nop
/* 017900 80016D00 33288000 */ andi $t0, $t9, 0x8000
/* 017904 80016D04 15000020 */ bnez $t0, .L80016D88
/* 017908 80016D08 00000000 */ nop
/* 01790C 80016D0C 86090048 */ lh $t1, 0x48($s0)
/* 017910 80016D10 00000000 */ nop
/* 017914 80016D14 16A9001C */ bne $s5, $t1, .L80016D88
/* 017918 80016D18 00000000 */ nop
/* 01791C 80016D1C C604000C */ lwc1 $f4, 0xc($s0)
/* 017920 80016D20 C6060014 */ lwc1 $f6, 0x14($s0)
/* 017924 80016D24 46142081 */ sub.s $f2, $f4, $f20
/* 017928 80016D28 1660000C */ bnez $s3, .L80016D5C
/* 01792C 80016D2C 46163381 */ sub.s $f14, $f6, $f22
/* 017930 80016D30 C6080010 */ lwc1 $f8, 0x10($s0)
/* 017934 80016D34 46021282 */ mul.s $f10, $f2, $f2
/* 017938 80016D38 46184001 */ sub.s $f0, $f8, $f24
/* 01793C 80016D3C 46000402 */ mul.s $f16, $f0, $f0
/* 017940 80016D40 00000000 */ nop
/* 017944 80016D44 460E7102 */ mul.s $f4, $f14, $f14
/* 017948 80016D48 46105480 */ add.s $f18, $f10, $f16
/* 01794C 80016D4C 0C0326B4 */ jal sqrtf
/* 017950 80016D50 46049300 */ add.s $f12, $f18, $f4
/* 017954 80016D54 10000007 */ b .L80016D74
/* 017958 80016D58 461A003C */ c.lt.s $f0, $f26
.L80016D5C:
/* 01795C 80016D5C 46021182 */ mul.s $f6, $f2, $f2
/* 017960 80016D60 00000000 */ nop
/* 017964 80016D64 460E7202 */ mul.s $f8, $f14, $f14
/* 017968 80016D68 0C0326B4 */ jal sqrtf
/* 01796C 80016D6C 46083300 */ add.s $f12, $f6, $f8
/* 017970 80016D70 461A003C */ c.lt.s $f0, $f26
.L80016D74:
/* 017974 80016D74 00000000 */ nop
/* 017978 80016D78 45000003 */ bc1f .L80016D88
/* 01797C 80016D7C 00000000 */ nop
/* 017980 80016D80 10000007 */ b .L80016DA0
/* 017984 80016D84 02001025 */ move $v0, $s0
.L80016D88:
/* 017988 80016D88 8ECA0000 */ lw $t2, ($s6)
/* 01798C 80016D8C 26310001 */ addiu $s1, $s1, 1
/* 017990 80016D90 022A082A */ slt $at, $s1, $t2
/* 017994 80016D94 1420FFD3 */ bnez $at, .L80016CE4
/* 017998 80016D98 26520004 */ addiu $s2, $s2, 4
.L80016D9C:
/* 01799C 80016D9C 00001025 */ move $v0, $zero
.L80016DA0:
/* 0179A0 80016DA0 8FBF0054 */ lw $ra, 0x54($sp)
/* 0179A4 80016DA4 C7B50018 */ lwc1 $f21, 0x18($sp)
/* 0179A8 80016DA8 C7B4001C */ lwc1 $f20, 0x1c($sp)
/* 0179AC 80016DAC C7B70020 */ lwc1 $f23, 0x20($sp)
/* 0179B0 80016DB0 C7B60024 */ lwc1 $f22, 0x24($sp)
/* 0179B4 80016DB4 C7B90028 */ lwc1 $f25, 0x28($sp)
/* 0179B8 80016DB8 C7B8002C */ lwc1 $f24, 0x2c($sp)
/* 0179BC 80016DBC C7BB0030 */ lwc1 $f27, 0x30($sp)
/* 0179C0 80016DC0 C7BA0034 */ lwc1 $f26, 0x34($sp)
/* 0179C4 80016DC4 8FB00038 */ lw $s0, 0x38($sp)
/* 0179C8 80016DC8 8FB1003C */ lw $s1, 0x3c($sp)
/* 0179CC 80016DCC 8FB20040 */ lw $s2, 0x40($sp)
/* 0179D0 80016DD0 8FB30044 */ lw $s3, 0x44($sp)
/* 0179D4 80016DD4 8FB40048 */ lw $s4, 0x48($sp)
/* 0179D8 80016DD8 8FB5004C */ lw $s5, 0x4c($sp)
/* 0179DC 80016DDC 8FB60050 */ lw $s6, 0x50($sp)
/* 0179E0 80016DE0 03E00008 */ jr $ra
/* 0179E4 80016DE4 27BD0058 */ addiu $sp, $sp, 0x58
-86
View File
@@ -1,86 +0,0 @@
glabel func_8001B3C4
/* 01BFC4 8001B3C4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 01BFC8 8001B3C8 AFBF001C */ sw $ra, 0x1c($sp)
/* 01BFCC 8001B3CC AFB00018 */ sw $s0, 0x18($sp)
/* 01BFD0 8001B3D0 3C01800E */ lui $at, %hi(D_800DC718) # $at, 0x800e
/* 01BFD4 8001B3D4 00808025 */ move $s0, $a0
/* 01BFD8 8001B3D8 AFA50024 */ sw $a1, 0x24($sp)
/* 01BFDC 8001B3DC 0C0166D3 */ jal free_tt_ghost_data
/* 01BFE0 8001B3E0 AC20C718 */ sw $zero, %lo(D_800DC718)($at)
/* 01BFE4 8001B3E4 3C01800E */ lui $at, %hi(D_800DC734) # $at, 0x800e
/* 01BFE8 8001B3E8 A020C734 */ sb $zero, %lo(D_800DC734)($at)
/* 01BFEC 8001B3EC 0C0078A7 */ jal get_misc_asset
/* 01BFF0 8001B3F0 2404001C */ li $a0, 28
/* 01BFF4 8001B3F4 804E0000 */ lb $t6, ($v0)
/* 01BFF8 8001B3F8 2407FFFF */ li $a3, -1
/* 01BFFC 8001B3FC 00402825 */ move $a1, $v0
/* 01C000 8001B400 10EE000E */ beq $a3, $t6, .L8001B43C
/* 01C004 8001B404 00003025 */ move $a2, $zero
/* 01C008 8001B408 804F0000 */ lb $t7, ($v0)
/* 01C00C 8001B40C 00402021 */ addu $a0, $v0, $zero
/* 01C010 8001B410 120F000A */ beq $s0, $t7, .L8001B43C
/* 01C014 8001B414 00000000 */ nop
.L8001B418:
/* 01C018 8001B418 80980001 */ lb $t8, 1($a0)
/* 01C01C 8001B41C 24C60001 */ addiu $a2, $a2, 1
/* 01C020 8001B420 10F80006 */ beq $a3, $t8, .L8001B43C
/* 01C024 8001B424 24840001 */ addiu $a0, $a0, 1
/* 01C028 8001B428 00A6C821 */ addu $t9, $a1, $a2
/* 01C02C 8001B42C 83280000 */ lb $t0, ($t9)
/* 01C030 8001B430 00000000 */ nop
/* 01C034 8001B434 1608FFF8 */ bne $s0, $t0, .L8001B418
/* 01C038 8001B438 00000000 */ nop
.L8001B43C:
/* 01C03C 8001B43C 3C10800E */ lui $s0, %hi(D_800DC738) # $s0, 0x800e
/* 01C040 8001B440 2610C738 */ addiu $s0, %lo(D_800DC738) # addiu $s0, $s0, -0x38c8
/* 01C044 8001B444 92090000 */ lbu $t1, ($s0)
/* 01C048 8001B448 240A0010 */ li $t2, 16
/* 01C04C 8001B44C 11200024 */ beqz $t1, .L8001B4E0
/* 01C050 8001B450 00CA2804 */ sllv $a1, $t2, $a2
/* 01C054 8001B454 0C027A9E */ jal set_eeprom_settings_value
/* 01C058 8001B458 000527C3 */ sra $a0, $a1, 0x1f
/* 01C05C 8001B45C 0C027AC2 */ jal get_eeprom_settings
/* 01C060 8001B460 00000000 */ nop
/* 01C064 8001B464 3C0100FF */ lui $at, (0x00FFFFF0 >> 16) # lui $at, 0xff
/* 01C068 8001B468 3421FFF0 */ ori $at, (0x00FFFFF0 & 0xFFFF) # ori $at, $at, 0xfff0
/* 01C06C 8001B46C 00616824 */ and $t5, $v1, $at
/* 01C070 8001B470 3C0100FF */ lui $at, (0x00FFFFF0 >> 16) # lui $at, 0xff
/* 01C074 8001B474 3421FFF0 */ ori $at, (0x00FFFFF0 & 0xFFFF) # ori $at, $at, 0xfff0
/* 01C078 8001B478 15A1000F */ bne $t5, $at, .L8001B4B8
/* 01C07C 8001B47C 2404024C */ li $a0, 588
/* 01C080 8001B480 0C0270B8 */ jal set_magic_code_flags
/* 01C084 8001B484 24040001 */ li $a0, 1
/* 01C088 8001B488 2404024E */ li $a0, 590
/* 01C08C 8001B48C 0C000741 */ jal play_sound_global
/* 01C090 8001B490 00002825 */ move $a1, $zero
/* 01C094 8001B494 2404024F */ li $a0, 591
/* 01C098 8001B498 00002825 */ move $a1, $zero
/* 01C09C 8001B49C 0C0003F7 */ jal func_80000FDC
/* 01C0A0 8001B4A0 3C063FC0 */ lui $a2, 0x3fc0
/* 01C0A4 8001B4A4 0C030C7B */ jal func_800C31EC
/* 01C0A8 8001B4A8 24040054 */ li $a0, 84
/* 01C0AC 8001B4AC 1000000A */ b .L8001B4D8
/* 01C0B0 8001B4B0 00000000 */ nop
/* 01C0B4 8001B4B4 2404024C */ li $a0, 588
.L8001B4B8:
/* 01C0B8 8001B4B8 0C000741 */ jal play_sound_global
/* 01C0BC 8001B4BC 00002825 */ move $a1, $zero
/* 01C0C0 8001B4C0 2404024D */ li $a0, 589
/* 01C0C4 8001B4C4 00002825 */ move $a1, $zero
/* 01C0C8 8001B4C8 0C0003F7 */ jal func_80000FDC
/* 01C0CC 8001B4CC 3C063F80 */ lui $a2, 0x3f80
/* 01C0D0 8001B4D0 0C030C7B */ jal func_800C31EC
/* 01C0D4 8001B4D4 24040053 */ li $a0, 83
.L8001B4D8:
/* 01C0D8 8001B4D8 10000004 */ b .L8001B4EC
/* 01C0DC 8001B4DC A2000000 */ sb $zero, ($s0)
.L8001B4E0:
/* 01C0E0 8001B4E0 8FA40024 */ lw $a0, 0x24($sp)
/* 01C0E4 8001B4E4 0C029B6D */ jal play_time_trial_end_message
/* 01C0E8 8001B4E8 00000000 */ nop
.L8001B4EC:
/* 01C0EC 8001B4EC 8FBF001C */ lw $ra, 0x1c($sp)
/* 01C0F0 8001B4F0 8FB00018 */ lw $s0, 0x18($sp)
/* 01C0F4 8001B4F4 03E00008 */ jr $ra
/* 01C0F8 8001B4F8 27BD0020 */ addiu $sp, $sp, 0x20
-178
View File
@@ -1,178 +0,0 @@
.late_rodata
glabel D_800E5668
.double 0.1
.text
glabel func_8001EFA4
/* 01FBA4 8001EFA4 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 01FBA8 8001EFA8 AFBF0024 */ sw $ra, 0x24($sp)
/* 01FBAC 8001EFAC AFB20020 */ sw $s2, 0x20($sp)
/* 01FBB0 8001EFB0 AFB1001C */ sw $s1, 0x1c($sp)
/* 01FBB4 8001EFB4 AFB00018 */ sw $s0, 0x18($sp)
/* 01FBB8 8001EFB8 8C91003C */ lw $s1, 0x3c($a0)
/* 01FBBC 8001EFBC 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 01FBC0 8001EFC0 922F000B */ lbu $t7, 0xb($s1)
/* 01FBC4 8001EFC4 44811000 */ mtc1 $at, $f2
/* 01FBC8 8001EFC8 448F2000 */ mtc1 $t7, $f4
/* 01FBCC 8001EFCC 3C014280 */ li $at, 0x42800000 # 64.000000
/* 01FBD0 8001EFD0 46802020 */ cvt.s.w $f0, $f4
/* 01FBD4 8001EFD4 8CB00064 */ lw $s0, 0x64($a1)
/* 01FBD8 8001EFD8 44813000 */ mtc1 $at, $f6
/* 01FBDC 8001EFDC 4602003C */ c.lt.s $f0, $f2
/* 01FBE0 8001EFE0 00809025 */ move $s2, $a0
/* 01FBE4 8001EFE4 45000003 */ bc1f .L8001EFF4
/* 01FBE8 8001EFE8 00000000 */ nop
/* 01FBEC 8001EFEC 46001006 */ mov.s $f0, $f2
/* 01FBF0 8001EFF0 00000000 */ nop
.L8001EFF4:
/* 01FBF4 8001EFF4 46060003 */ div.s $f0, $f0, $f6
/* 01FBF8 8001EFF8 8CB80040 */ lw $t8, 0x40($a1)
/* 01FBFC 8001EFFC 00000000 */ nop
/* 01FC00 8001F000 C708000C */ lwc1 $f8, 0xc($t8)
/* 01FC04 8001F004 ACA00078 */ sw $zero, 0x78($a1)
/* 01FC08 8001F008 ACA0007C */ sw $zero, 0x7c($a1)
/* 01FC0C 8001F00C 46004282 */ mul.s $f10, $f8, $f0
/* 01FC10 8001F010 E4AA0008 */ swc1 $f10, 8($a1)
/* 01FC14 8001F014 82220022 */ lb $v0, 0x22($s1)
/* 01FC18 8001F018 00000000 */ nop
/* 01FC1C 8001F01C 28410002 */ slti $at, $v0, 2
/* 01FC20 8001F020 14200006 */ bnez $at, .L8001F03C
/* 01FC24 8001F024 2841000A */ slti $at, $v0, 0xa
/* 01FC28 8001F028 10200004 */ beqz $at, .L8001F03C
/* 01FC2C 8001F02C 2459FFFF */ addiu $t9, $v0, -1
/* 01FC30 8001F030 ACB90078 */ sw $t9, 0x78($a1)
/* 01FC34 8001F034 82220022 */ lb $v0, 0x22($s1)
/* 01FC38 8001F038 00000000 */ nop
.L8001F03C:
/* 01FC3C 8001F03C 2841000A */ slti $at, $v0, 0xa
/* 01FC40 8001F040 14200004 */ bnez $at, .L8001F054
/* 01FC44 8001F044 28410012 */ slti $at, $v0, 0x12
/* 01FC48 8001F048 10200002 */ beqz $at, .L8001F054
/* 01FC4C 8001F04C 2448FFF7 */ addiu $t0, $v0, -9
/* 01FC50 8001F050 ACA80078 */ sw $t0, 0x78($a1)
.L8001F054:
/* 01FC54 8001F054 C650000C */ lwc1 $f16, 0xc($s2)
/* 01FC58 8001F058 3C01800E */ lui $at, %hi(D_800E5668) # $at, 0x800e
/* 01FC5C 8001F05C E4B0000C */ swc1 $f16, 0xc($a1)
/* 01FC60 8001F060 C6520010 */ lwc1 $f18, 0x10($s2)
/* 01FC64 8001F064 00000000 */ nop
/* 01FC68 8001F068 E4B20010 */ swc1 $f18, 0x10($a1)
/* 01FC6C 8001F06C C6440014 */ lwc1 $f4, 0x14($s2)
/* 01FC70 8001F070 00000000 */ nop
/* 01FC74 8001F074 E4A40014 */ swc1 $f4, 0x14($a1)
/* 01FC78 8001F078 86490000 */ lh $t1, ($s2)
/* 01FC7C 8001F07C 00000000 */ nop
/* 01FC80 8001F080 A4A90000 */ sh $t1, ($a1)
/* 01FC84 8001F084 864A0004 */ lh $t2, 4($s2)
/* 01FC88 8001F088 00000000 */ nop
/* 01FC8C 8001F08C A4AA0004 */ sh $t2, 4($a1)
/* 01FC90 8001F090 864B0002 */ lh $t3, 2($s2)
/* 01FC94 8001F094 00000000 */ nop
/* 01FC98 8001F098 A4AB0002 */ sh $t3, 2($a1)
/* 01FC9C 8001F09C A6000026 */ sh $zero, 0x26($s0)
/* 01FCA0 8001F0A0 822C0021 */ lb $t4, 0x21($s1)
/* 01FCA4 8001F0A4 00000000 */ nop
/* 01FCA8 8001F0A8 A20C003D */ sb $t4, 0x3d($s0)
/* 01FCAC 8001F0AC 822D0010 */ lb $t5, 0x10($s1)
/* 01FCB0 8001F0B0 00000000 */ nop
/* 01FCB4 8001F0B4 A60D0028 */ sh $t5, 0x28($s0)
/* 01FCB8 8001F0B8 822E0014 */ lb $t6, 0x14($s1)
/* 01FCBC 8001F0BC C430566C */ lwc1 $f16, %lo(D_800E5668 + 4)($at)
/* 01FCC0 8001F0C0 448E3000 */ mtc1 $t6, $f6
/* 01FCC4 8001F0C4 C4315668 */ lwc1 $f17, %lo(D_800E5668)($at)
/* 01FCC8 8001F0C8 46803220 */ cvt.s.w $f8, $f6
/* 01FCCC 8001F0CC 460042A1 */ cvt.d.s $f10, $f8
/* 01FCD0 8001F0D0 46305482 */ mul.d $f18, $f10, $f16
/* 01FCD4 8001F0D4 46209120 */ cvt.s.d $f4, $f18
/* 01FCD8 8001F0D8 E6040008 */ swc1 $f4, 8($s0)
/* 01FCDC 8001F0DC 8624000E */ lh $a0, 0xe($s1)
/* 01FCE0 8001F0E0 0C00322D */ jal normalise_time
/* 01FCE4 8001F0E4 AFA5002C */ sw $a1, 0x2c($sp)
/* 01FCE8 8001F0E8 8FA5002C */ lw $a1, 0x2c($sp)
/* 01FCEC 8001F0EC A602002A */ sh $v0, 0x2a($s0)
/* 01FCF0 8001F0F0 822F0012 */ lb $t7, 0x12($s1)
/* 01FCF4 8001F0F4 44800000 */ mtc1 $zero, $f0
/* 01FCF8 8001F0F8 A0AF003B */ sb $t7, 0x3b($a1)
/* 01FCFC 8001F0FC 92380016 */ lbu $t8, 0x16($s1)
/* 01FD00 8001F100 00000000 */ nop
/* 01FD04 8001F104 A4B80018 */ sh $t8, 0x18($a1)
/* 01FD08 8001F108 82390017 */ lb $t9, 0x17($s1)
/* 01FD0C 8001F10C E6000010 */ swc1 $f0, 0x10($s0)
/* 01FD10 8001F110 44993000 */ mtc1 $t9, $f6
/* 01FD14 8001F114 00000000 */ nop
/* 01FD18 8001F118 46803220 */ cvt.s.w $f8, $f6
/* 01FD1C 8001F11C E6080014 */ swc1 $f8, 0x14($s0)
/* 01FD20 8001F120 92280018 */ lbu $t0, 0x18($s1)
/* 01FD24 8001F124 00000000 */ nop
/* 01FD28 8001F128 A208002C */ sb $t0, 0x2c($s0)
/* 01FD2C 8001F12C 92290019 */ lbu $t1, 0x19($s1)
/* 01FD30 8001F130 00000000 */ nop
/* 01FD34 8001F134 A209002E */ sb $t1, 0x2e($s0)
/* 01FD38 8001F138 822A002C */ lb $t2, 0x2c($s1)
/* 01FD3C 8001F13C 00000000 */ nop
/* 01FD40 8001F140 A20A003E */ sb $t2, 0x3e($s0)
/* 01FD44 8001F144 822B002D */ lb $t3, 0x2d($s1)
/* 01FD48 8001F148 00000000 */ nop
/* 01FD4C 8001F14C A20B003F */ sb $t3, 0x3f($s0)
/* 01FD50 8001F150 822C001A */ lb $t4, 0x1a($s1)
/* 01FD54 8001F154 00000000 */ nop
/* 01FD58 8001F158 A20C0031 */ sb $t4, 0x31($s0)
/* 01FD5C 8001F15C 822D001B */ lb $t5, 0x1b($s1)
/* 01FD60 8001F160 00000000 */ nop
/* 01FD64 8001F164 A20D0032 */ sb $t5, 0x32($s0)
/* 01FD68 8001F168 822E001C */ lb $t6, 0x1c($s1)
/* 01FD6C 8001F16C 00000000 */ nop
/* 01FD70 8001F170 A20E0033 */ sb $t6, 0x33($s0)
/* 01FD74 8001F174 822F0020 */ lb $t7, 0x20($s1)
/* 01FD78 8001F178 A200002D */ sb $zero, 0x2d($s0)
/* 01FD7C 8001F17C E6000004 */ swc1 $f0, 4($s0)
/* 01FD80 8001F180 E6000000 */ swc1 $f0, ($s0)
/* 01FD84 8001F184 A20F0034 */ sb $t7, 0x34($s0)
/* 01FD88 8001F188 AE40006C */ sw $zero, 0x6c($s2)
/* 01FD8C 8001F18C 86240024 */ lh $a0, 0x24($s1)
/* 01FD90 8001F190 0C00322D */ jal normalise_time
/* 01FD94 8001F194 00000000 */ nop
/* 01FD98 8001F198 A6020036 */ sh $v0, 0x36($s0)
/* 01FD9C 8001F19C 82380026 */ lb $t8, 0x26($s1)
/* 01FDA0 8001F1A0 00000000 */ nop
/* 01FDA4 8001F1A4 A218003A */ sb $t8, 0x3a($s0)
/* 01FDA8 8001F1A8 82230013 */ lb $v1, 0x13($s1)
/* 01FDAC 8001F1AC 00000000 */ nop
/* 01FDB0 8001F1B0 04600002 */ bltz $v1, .L8001F1BC
/* 01FDB4 8001F1B4 00000000 */ nop
/* 01FDB8 8001F1B8 A203002F */ sb $v1, 0x2f($s0)
.L8001F1BC:
/* 01FDBC 8001F1BC 8239001F */ lb $t9, 0x1f($s1)
/* 01FDC0 8001F1C0 8E040018 */ lw $a0, 0x18($s0)
/* 01FDC4 8001F1C4 A2190039 */ sb $t9, 0x39($s0)
/* 01FDC8 8001F1C8 9228001E */ lbu $t0, 0x1e($s1)
/* 01FDCC 8001F1CC 240D00FF */ li $t5, 255
/* 01FDD0 8001F1D0 A2080038 */ sb $t0, 0x38($s0)
/* 01FDD4 8001F1D4 82290029 */ lb $t1, 0x29($s1)
/* 01FDD8 8001F1D8 00000000 */ nop
/* 01FDDC 8001F1DC A209003B */ sb $t1, 0x3b($s0)
/* 01FDE0 8001F1E0 822A002E */ lb $t2, 0x2e($s1)
/* 01FDE4 8001F1E4 00000000 */ nop
/* 01FDE8 8001F1E8 A20A0040 */ sb $t2, 0x40($s0)
/* 01FDEC 8001F1EC 822B002F */ lb $t3, 0x2f($s1)
/* 01FDF0 8001F1F0 00000000 */ nop
/* 01FDF4 8001F1F4 A20B0041 */ sb $t3, 0x41($s0)
/* 01FDF8 8001F1F8 822C002B */ lb $t4, 0x2b($s1)
/* 01FDFC 8001F1FC A20D0042 */ sb $t5, 0x42($s0)
/* 01FE00 8001F200 10800003 */ beqz $a0, .L8001F210
/* 01FE04 8001F204 A20C003C */ sb $t4, 0x3c($s0)
/* 01FE08 8001F208 0C001223 */ jal func_8000488C
/* 01FE0C 8001F20C 00000000 */ nop
.L8001F210:
/* 01FE10 8001F210 AE000018 */ sw $zero, 0x18($s0)
/* 01FE14 8001F214 822E0030 */ lb $t6, 0x30($s1)
/* 01FE18 8001F218 AE12001C */ sw $s2, 0x1c($s0)
/* 01FE1C 8001F21C A2000045 */ sb $zero, 0x45($s0)
/* 01FE20 8001F220 A20E0043 */ sb $t6, 0x43($s0)
/* 01FE24 8001F224 8FBF0024 */ lw $ra, 0x24($sp)
/* 01FE28 8001F228 8FB20020 */ lw $s2, 0x20($sp)
/* 01FE2C 8001F22C 8FB1001C */ lw $s1, 0x1c($sp)
/* 01FE30 8001F230 8FB00018 */ lw $s0, 0x18($sp)
/* 01FE34 8001F234 03E00008 */ jr $ra
/* 01FE38 8001F238 27BD0028 */ addiu $sp, $sp, 0x28
-64
View File
@@ -1,64 +0,0 @@
glabel func_80030664
/* 031264 80030664 00057400 */ sll $t6, $a1, 0x10
/* 031268 80030668 0006C400 */ sll $t8, $a2, 0x10
/* 03126C 8003066C 0018CC03 */ sra $t9, $t8, 0x10
/* 031270 80030670 000E7C03 */ sra $t7, $t6, 0x10
/* 031274 80030674 AFA50004 */ sw $a1, 4($sp)
/* 031278 80030678 AFA60008 */ sw $a2, 8($sp)
/* 03127C 8003067C AFA7000C */ sw $a3, 0xc($sp)
/* 031280 80030680 30E900FF */ andi $t1, $a3, 0xff
/* 031284 80030684 032F082A */ slt $at, $t9, $t7
/* 031288 80030688 01203825 */ move $a3, $t1
/* 03128C 8003068C 03203025 */ move $a2, $t9
/* 031290 80030690 10200007 */ beqz $at, .L800306B0
/* 031294 80030694 01E02825 */ move $a1, $t7
/* 031298 80030698 00192C00 */ sll $a1, $t9, 0x10
/* 03129C 8003069C 000F3400 */ sll $a2, $t7, 0x10
/* 0312A0 800306A0 00055403 */ sra $t2, $a1, 0x10
/* 0312A4 800306A4 00065C03 */ sra $t3, $a2, 0x10
/* 0312A8 800306A8 01402825 */ move $a1, $t2
/* 0312AC 800306AC 01603025 */ move $a2, $t3
.L800306B0:
/* 0312B0 800306B0 28C10400 */ slti $at, $a2, 0x400
/* 0312B4 800306B4 14200002 */ bnez $at, .L800306C0
/* 0312B8 800306B8 000468C0 */ sll $t5, $a0, 3
/* 0312BC 800306BC 240603FF */ li $a2, 1023
.L800306C0:
/* 0312C0 800306C0 24C2FFFB */ addiu $v0, $a2, -5
/* 0312C4 800306C4 00A2082A */ slt $at, $a1, $v0
/* 0312C8 800306C8 14200004 */ bnez $at, .L800306DC
/* 0312CC 800306CC 01A46823 */ subu $t5, $t5, $a0
/* 0312D0 800306D0 00022C00 */ sll $a1, $v0, 0x10
/* 0312D4 800306D4 00056403 */ sra $t4, $a1, 0x10
/* 0312D8 800306D8 01802825 */ move $a1, $t4
.L800306DC:
/* 0312DC 800306DC 93A30013 */ lbu $v1, 0x13($sp)
/* 0312E0 800306E0 93A80017 */ lbu $t0, 0x17($sp)
/* 0312E4 800306E4 3C0E8012 */ lui $t6, %hi(gFogData) # $t6, 0x8012
/* 0312E8 800306E8 25CED388 */ addiu $t6, %lo(gFogData) # addiu $t6, $t6, -0x2c78
/* 0312EC 800306EC 000D68C0 */ sll $t5, $t5, 3
/* 0312F0 800306F0 01AE1021 */ addu $v0, $t5, $t6
/* 0312F4 800306F4 00077C00 */ sll $t7, $a3, 0x10
/* 0312F8 800306F8 00054C00 */ sll $t1, $a1, 0x10
/* 0312FC 800306FC 00065400 */ sll $t2, $a2, 0x10
/* 031300 80030700 0003C400 */ sll $t8, $v1, 0x10
/* 031304 80030704 0008CC00 */ sll $t9, $t0, 0x10
/* 031308 80030708 AC400020 */ sw $zero, 0x20($v0)
/* 03130C 8003070C AC400024 */ sw $zero, 0x24($v0)
/* 031310 80030710 AC400014 */ sw $zero, 0x14($v0)
/* 031314 80030714 AC400018 */ sw $zero, 0x18($v0)
/* 031318 80030718 AC40001C */ sw $zero, 0x1c($v0)
/* 03131C 8003071C AC4F0000 */ sw $t7, ($v0)
/* 031320 80030720 AC580004 */ sw $t8, 4($v0)
/* 031324 80030724 AC590008 */ sw $t9, 8($v0)
/* 031328 80030728 AC49000C */ sw $t1, 0xc($v0)
/* 03132C 8003072C AC4A0010 */ sw $t2, 0x10($v0)
/* 031330 80030730 A0470028 */ sb $a3, 0x28($v0)
/* 031334 80030734 A445002C */ sh $a1, 0x2c($v0)
/* 031338 80030738 A446002E */ sh $a2, 0x2e($v0)
/* 03133C 8003073C AC400030 */ sw $zero, 0x30($v0)
/* 031340 80030740 AC400034 */ sw $zero, 0x34($v0)
/* 031344 80030744 A0430029 */ sb $v1, 0x29($v0)
/* 031348 80030748 03E00008 */ jr $ra
/* 03134C 8003074C A048002A */ sb $t0, 0x2a($v0)
-127
View File
@@ -1,127 +0,0 @@
glabel func_80030DE0
/* 0319E0 80030DE0 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 0319E4 80030DE4 AFB1000C */ sw $s1, 0xc($sp)
/* 0319E8 80030DE8 AFB00008 */ sw $s0, 8($sp)
/* 0319EC 80030DEC 8FB00024 */ lw $s0, 0x24($sp)
/* 0319F0 80030DF0 8FB10020 */ lw $s1, 0x20($sp)
/* 0319F4 80030DF4 8FA30028 */ lw $v1, 0x28($sp)
/* 0319F8 80030DF8 0211082A */ slt $at, $s0, $s1
/* 0319FC 80030DFC 10200004 */ beqz $at, .L80030E10
/* 031A00 80030E00 000470C0 */ sll $t6, $a0, 3
/* 031A04 80030E04 02201025 */ move $v0, $s1
/* 031A08 80030E08 02008825 */ move $s1, $s0
/* 031A0C 80030E0C 00408025 */ move $s0, $v0
.L80030E10:
/* 031A10 80030E10 2A010400 */ slti $at, $s0, 0x400
/* 031A14 80030E14 14200002 */ bnez $at, .L80030E20
/* 031A18 80030E18 01C47023 */ subu $t6, $t6, $a0
/* 031A1C 80030E1C 241003FF */ li $s0, 1023
.L80030E20:
/* 031A20 80030E20 2602FFFB */ addiu $v0, $s0, -5
/* 031A24 80030E24 0222082A */ slt $at, $s1, $v0
/* 031A28 80030E28 14200002 */ bnez $at, .L80030E34
/* 031A2C 80030E2C 000E70C0 */ sll $t6, $t6, 3
/* 031A30 80030E30 00408825 */ move $s1, $v0
.L80030E34:
/* 031A34 80030E34 3C0F8012 */ lui $t7, %hi(gFogData) # $t7, 0x8012
/* 031A38 80030E38 25EFD388 */ addiu $t7, %lo(gFogData) # addiu $t7, $t7, -0x2c78
/* 031A3C 80030E3C 01CF1021 */ addu $v0, $t6, $t7
/* 031A40 80030E40 8C590000 */ lw $t9, ($v0)
/* 031A44 80030E44 0005C400 */ sll $t8, $a1, 0x10
/* 031A48 80030E48 03194023 */ subu $t0, $t8, $t9
/* 031A4C 80030E4C 0103001A */ div $zero, $t0, $v1
/* 031A50 80030E50 8C4B0004 */ lw $t3, 4($v0)
/* 031A54 80030E54 00065400 */ sll $t2, $a2, 0x10
/* 031A58 80030E58 014B6023 */ subu $t4, $t2, $t3
/* 031A5C 80030E5C 8C4F0008 */ lw $t7, 8($v0)
/* 031A60 80030E60 00077400 */ sll $t6, $a3, 0x10
/* 031A64 80030E64 01CFC023 */ subu $t8, $t6, $t7
/* 031A68 80030E68 A0450028 */ sb $a1, 0x28($v0)
/* 031A6C 80030E6C A0460029 */ sb $a2, 0x29($v0)
/* 031A70 80030E70 A047002A */ sb $a3, 0x2a($v0)
/* 031A74 80030E74 A451002C */ sh $s1, 0x2c($v0)
/* 031A78 80030E78 A450002E */ sh $s0, 0x2e($v0)
/* 031A7C 80030E7C 14600002 */ bnez $v1, .L80030E88
/* 031A80 80030E80 00000000 */ nop
/* 031A84 80030E84 0007000D */ break 7
.L80030E88:
/* 031A88 80030E88 2401FFFF */ li $at, -1
/* 031A8C 80030E8C 14610004 */ bne $v1, $at, .L80030EA0
/* 031A90 80030E90 3C018000 */ lui $at, 0x8000
/* 031A94 80030E94 15010002 */ bne $t0, $at, .L80030EA0
/* 031A98 80030E98 00000000 */ nop
/* 031A9C 80030E9C 0006000D */ break 6
.L80030EA0:
/* 031AA0 80030EA0 00114400 */ sll $t0, $s1, 0x10
/* 031AA4 80030EA4 AC430030 */ sw $v1, 0x30($v0)
/* 031AA8 80030EA8 AC400034 */ sw $zero, 0x34($v0)
/* 031AAC 80030EAC 00004812 */ mflo $t1
/* 031AB0 80030EB0 AC490014 */ sw $t1, 0x14($v0)
/* 031AB4 80030EB4 8C49000C */ lw $t1, 0xc($v0)
/* 031AB8 80030EB8 0183001A */ div $zero, $t4, $v1
/* 031ABC 80030EBC 01095023 */ subu $t2, $t0, $t1
/* 031AC0 80030EC0 14600002 */ bnez $v1, .L80030ECC
/* 031AC4 80030EC4 00000000 */ nop
/* 031AC8 80030EC8 0007000D */ break 7
.L80030ECC:
/* 031ACC 80030ECC 2401FFFF */ li $at, -1
/* 031AD0 80030ED0 14610004 */ bne $v1, $at, .L80030EE4
/* 031AD4 80030ED4 3C018000 */ lui $at, 0x8000
/* 031AD8 80030ED8 15810002 */ bne $t4, $at, .L80030EE4
/* 031ADC 80030EDC 00000000 */ nop
/* 031AE0 80030EE0 0006000D */ break 6
.L80030EE4:
/* 031AE4 80030EE4 00106400 */ sll $t4, $s0, 0x10
/* 031AE8 80030EE8 00006812 */ mflo $t5
/* 031AEC 80030EEC AC4D0018 */ sw $t5, 0x18($v0)
/* 031AF0 80030EF0 8C4D0010 */ lw $t5, 0x10($v0)
/* 031AF4 80030EF4 0303001A */ div $zero, $t8, $v1
/* 031AF8 80030EF8 018D7023 */ subu $t6, $t4, $t5
/* 031AFC 80030EFC 14600002 */ bnez $v1, .L80030F08
/* 031B00 80030F00 00000000 */ nop
/* 031B04 80030F04 0007000D */ break 7
.L80030F08:
/* 031B08 80030F08 2401FFFF */ li $at, -1
/* 031B0C 80030F0C 14610004 */ bne $v1, $at, .L80030F20
/* 031B10 80030F10 3C018000 */ lui $at, 0x8000
/* 031B14 80030F14 17010002 */ bne $t8, $at, .L80030F20
/* 031B18 80030F18 00000000 */ nop
/* 031B1C 80030F1C 0006000D */ break 6
.L80030F20:
/* 031B20 80030F20 0000C812 */ mflo $t9
/* 031B24 80030F24 AC59001C */ sw $t9, 0x1c($v0)
/* 031B28 80030F28 00000000 */ nop
/* 031B2C 80030F2C 0143001A */ div $zero, $t2, $v1
/* 031B30 80030F30 14600002 */ bnez $v1, .L80030F3C
/* 031B34 80030F34 00000000 */ nop
/* 031B38 80030F38 0007000D */ break 7
.L80030F3C:
/* 031B3C 80030F3C 2401FFFF */ li $at, -1
/* 031B40 80030F40 14610004 */ bne $v1, $at, .L80030F54
/* 031B44 80030F44 3C018000 */ lui $at, 0x8000
/* 031B48 80030F48 15410002 */ bne $t2, $at, .L80030F54
/* 031B4C 80030F4C 00000000 */ nop
/* 031B50 80030F50 0006000D */ break 6
.L80030F54:
/* 031B54 80030F54 00005812 */ mflo $t3
/* 031B58 80030F58 AC4B0020 */ sw $t3, 0x20($v0)
/* 031B5C 80030F5C 00000000 */ nop
/* 031B60 80030F60 01C3001A */ div $zero, $t6, $v1
/* 031B64 80030F64 14600002 */ bnez $v1, .L80030F70
/* 031B68 80030F68 00000000 */ nop
/* 031B6C 80030F6C 0007000D */ break 7
.L80030F70:
/* 031B70 80030F70 2401FFFF */ li $at, -1
/* 031B74 80030F74 14610004 */ bne $v1, $at, .L80030F88
/* 031B78 80030F78 3C018000 */ lui $at, 0x8000
/* 031B7C 80030F7C 15C10002 */ bne $t6, $at, .L80030F88
/* 031B80 80030F80 00000000 */ nop
/* 031B84 80030F84 0006000D */ break 6
.L80030F88:
/* 031B88 80030F88 00007812 */ mflo $t7
/* 031B8C 80030F8C AC4F0024 */ sw $t7, 0x24($v0)
/* 031B90 80030F90 8FB1000C */ lw $s1, 0xc($sp)
/* 031B94 80030F94 8FB00008 */ lw $s0, 8($sp)
/* 031B98 80030F98 03E00008 */ jr $ra
/* 031B9C 80030F9C 27BD0010 */ addiu $sp, $sp, 0x10
+20 -14
View File
@@ -333,9 +333,10 @@ typedef struct LevelObjectEntry_Animation {
/* 0x10 */ s8 actorIndex;
/* 0x11 */ s8 order;
/* 0x12 */ s8 objAnimIndex;
/* 0x13 */ u8 pad13;
/* 0x13 */ s8 unk13;
/* 0x14 */ s8 nodeSpeed;
/* 0x15 */ u8 pad15[2];
/* 0x15 */ s8 unk15;
/* 0x16 */ u8 unk16;
/* 0x17 */ s8 objAnimSpeed;
/* 0x18 */ u8 objAnimLoopType; // 0 = Loop, 1 = Reverse loop, 2 = Play once, 3 = reverse once then stop.
/* 0x19 */ u8 rotateType;
@@ -343,20 +344,25 @@ typedef struct LevelObjectEntry_Animation {
/* 0x1B */ s8 rollSpinSpeed;
/* 0x1C */ s8 pitchSpinSpeed;
/* 0x1D */ u8 goToNode;
/* 0x1E */ u8 pad1E[3];
/* 0x1E */ u8 unk1E;
/* 0x1F */ s8 unk1F;
/* 0x20 */ s8 unk20;
/* 0x21 */ s8 channel;
/* 0x22 */ u8 pad22[2];
/* 0x24 */ s8 pauseFrameCount;
/* 0x25 */ u8 pad25;
/* 0x26 */ u8 specialHide;
/* 0x22 */ s8 unk22;
/* 0x23 */ s8 unk23;
/* 0x24 */ s16 pauseFrameCount;
/* 0x26 */ s8 specialHide;
/* 0x27 */ u8 messageId;
/* 0x28 */ u8 pad28[3];
/* 0x2B */ u8 fadeAlpha;
/* 0x2C */ u8 nextAnim;
/* 0x2D */ u8 pad2D;
/* 0x2E */ u8 soundEffect;
/* 0x2F */ u8 fadeOptions; // 1 = Start fading from fadeAlpha, 2 = make visible, 3 = make invisible.
/* 0x30 */ u8 pad30[2];
/* 0x28 */ s8 unk28;
/* 0x29 */ s8 unk29;
/* 0x2A */ s8 unk2A;
/* 0x2B */ s8 fadeAlpha;
/* 0x2C */ s8 nextAnim;
/* 0x2D */ s8 unk2D;
/* 0x2E */ s8 soundEffect;
/* 0x2F */ s8 fadeOptions; // 1 = Start fading from fadeAlpha, 2 = make visible, 3 = make invisible.
/* 0x30 */ s8 unk30;
/* 0x31 */ u8 unk31;
} LevelObjectEntry_Animation;
typedef struct LevelObjectEntry_InfoPoint {
+1 -1
View File
@@ -601,7 +601,7 @@ enum SoundID {
/* 0x0249 */ SOUND_DRAWBRIDGE_BELL,
/* 0x024A */ SOUND_BUBBLE_RISE,
/* 0x024B */ SOUND_VOICE_TT_BEAT_MY_TIME, // "Now try beat my time"
/* 0x024C */ SOUND_VOICE_TT_WELL_THEN,
/* 0x024C */ SOUND_VOICE_TT_WELL_DONE,
/* 0x024D */ SOUND_VOICE_TT_TRY_ANOTHER_TRACK, // "Now try another track"
/* 0x024E */ SOUND_VOICE_TT_BEAT_ALL_TIMES, // "You've beaten all my times"
/* 0x024F */ SOUND_VOICE_TT_UNLOCKED, // "Now you can pick me"
+39 -1
View File
@@ -897,7 +897,45 @@ typedef struct Object_Animator {
} Object_Animator;
typedef struct Object_Animation {
/* 0x00 */ u8 pad0[0x4A];
/* 0x00 */ f32 unk0;
/* 0x04 */ f32 unk4;
/* 0x08 */ f32 unk8;
/* 0x0C */ s32 unkC;
/* 0x10 */ f32 unk10;
/* 0x14 */ f32 unk14;
/* 0x18 */ u8 *unk18;
/* 0x1C */ struct Object *unk1C;
/* 0x20 */ s32 unk20;
/* 0x24 */ s16 unk24;
/* 0x26 */ s16 unk26;
/* 0x28 */ u16 unk28;
/* 0x2A */ u16 unk2A;
/* 0x2C */ u8 unk2C;
/* 0x2D */ u8 unk2D;
/* 0x2E */ u8 unk2E;
/* 0x2F */ u8 unk2F;
/* 0x30 */ u8 unk30;
/* 0x31 */ u8 unk31;
/* 0x32 */ u8 unk32;
/* 0x33 */ u8 unk33;
/* 0x34 */ u8 unk34;
/* 0x35 */ u8 unk35;
/* 0x36 */ s16 unk36;
/* 0x38 */ u8 unk38;
/* 0x39 */ u8 unk39;
/* 0x3A */ u8 unk3A;
/* 0x3V */ u8 unk3B;
/* 0x3C */ u8 unk3C;
/* 0x3D */ u8 unk3D;
/* 0x3E */ u8 unk3E;
/* 0x3F */ u8 unk3F;
/* 0x40 */ u8 unk40;
/* 0x41 */ u8 unk41;
/* 0x42 */ u8 unk42;
/* 0x43 */ u8 unk43;
/* 0x44 */ u8 unk44;
/* 0x45 */ u8 unk45;
/* 0x46 */ u8 pad46[4];
/* 0x4A */ s16 unk4A;
} Object_Animation;
+10 -14
View File
@@ -124,20 +124,16 @@ void func_8000410C(ALSoundState *state) {
_removeEvents(&gAlSndPlayerPtr->evtq, state, 0xFFFF);
}
#if 0
void func_8000418C(void *arg0) {
f32 sp28;
void *sp24;
s16 sp20;
f32 sp1C;
f32 temp_f6;
temp_f6 = alCents2Ratio((s32) arg0->unk8->unk4->unk5) * arg0->unk2C;
sp20 = 16;
sp1C = temp_f6;
sp24 = arg0;
sp28 = sp1C;
alEvtqPostEvent(&gAlSndPlayerPtr->evtq, (ALEvent *) &sp20, 33333);
#ifdef NON_EQUIVALENT
//There's some weird shenanigans with these structs that needs to be figured out.
void func_8000418C(ALVoiceState *voiceState) {
ALSndpEvent evt;
s32 pad;
evt.pitch.pitch = alCents2Ratio(((ALSound *)voiceState->voice.node.prev)->keyMap->detune) * voiceState->vibrato;
evt.pitch.type = AL_SEQP_STOP_EVT;
evt.pitch.state = voiceState;
evt.msg.msg.loop.count = evt.msg.msg.tempo.ticks;
alEvtqPostEvent(&gAlSndPlayerPtr->evtq, &evt.msg, 33333);
}
#else
GLOBAL_ASM("asm/non_matchings/audiosfx/func_8000418C.s")
+26 -1
View File
@@ -360,7 +360,32 @@ void init_hud(UNUSED s32 viewportCount) {
}
GLOBAL_ASM("asm/non_matchings/game_ui/func_8009F034.s")
GLOBAL_ASM("asm/non_matchings/game_ui/func_800A003C.s")
/**
* Free's all elements in the hud, and the player hud, and flushes particles
*/
void free_hud(void) {
s32 i;
for (i = 0; i < gAssetHudElementIdsCount; i++) {
if (gAssetHudElements->entry[i] != NULL) {
if ((gAssetHudElementIds[i] & 0xC000) == 0xC000) {
free_texture(gAssetHudElements->entry[i]);
} else if (gAssetHudElementIds[i] & 0x8000) {
free_sprite((Sprite *) gAssetHudElements->entry[i]);
} else if (gAssetHudElementIds[i] & 0x4000) {
gParticlePtrList_addObject((Object *) gAssetHudElements->entry[i]);
} else {
func_8005FF40((ObjectModel **) gAssetHudElements->entry[i]);
}
gAssetHudElements->entry[i] = 0;
}
}
free_from_memory_pool(*gPlayerHud);
free_from_memory_pool(gAssetHudElementIds);
gAssetHudElementIdsCount = 0;
free_from_memory_pool(gAssetHudElements);
gParticlePtrList_flush();
}
u8 func_800A0190(void) {
return D_80126D34;
+1 -1
View File
@@ -382,6 +382,7 @@ void render_minimap_and_misc_hud(Gfx **dList, MatrixS **mtx, Vertex **vtxList, s
void init_hud(s32 viewportCount);
void func_800A1C04(s32 arg0, Object *obj, s32 updateRate);
void func_800A22F4(Object_Racer *racer, void *unused);
void free_hud(void);
// Non Matching
void func_800A14F0(Object *, s32);
@@ -389,7 +390,6 @@ void func_800A4C44(Object_Racer *racer, s32 updateRate);
void func_800A47A0(Object_Racer *obj, s32 updateRate);
void func_800A718C(Object_64 *obj);
void func_800AA600(Gfx **dList, MatrixS **mtx, Vertex **vtxList, unk80126CDC **arg3);
void func_800A003C(void);
void func_800A7FBC(s32, s32, s32 minutes, s32 seconds, s32 hundredths, s32);
void func_800A1248(s32, Object*, s32);
void func_800A277C(s32, Object*, s32);
+4 -4
View File
@@ -8934,17 +8934,17 @@ s32 taj_menu_loop(void) {
case -3:
case -2:
case -1:
func_800C31EC(8 - sCurrentMenuID);
func_800C31EC(ASSET_GAME_TEXT_8 - sCurrentMenuID); //Wouldn't this be ASSET_GAME_TEXT_9?
sCurrentMenuID = 4;
break;
case -4:
func_800C31EC(0x11);
func_800C31EC(ASSET_GAME_TEXT_17);
gNextTajChallengeMenu = 0;
sCurrentMenuID = 1;
gDialogueSubmenu = 3;
break;
case -5:
func_800C31EC(0x15);
func_800C31EC(ASSET_GAME_TEXT_21);
gNextTajChallengeMenu = 0;
sCurrentMenuID = 7;
gDialogueSubmenu = 0;
@@ -8952,7 +8952,7 @@ s32 taj_menu_loop(void) {
case -8:
case -7:
case -6:
func_800C31EC(12 - sCurrentMenuID);
func_800C31EC(ASSET_GAME_TEXT_12 - sCurrentMenuID);
sCurrentMenuID = 6;
gDialogueSubmenu = 0;
break;
+39 -7
View File
@@ -658,7 +658,8 @@ void obj_loop_trophycab(Object *obj, s32 updateRate) {
play_sound_global(SOUND_VOICE_TT_TROPHY_RACE, NULL);
func_800A3870();
} else {
func_800C31EC(4);
// Text for "TROPHY RACE" "TO ENTER THE TROPHY RACE, YOU MUST COMPLETE ALL THE TASKS FROM THIS WORLD. KEEP RACING!"
func_800C31EC(ASSET_GAME_TEXT_4);
gfxData->unk4 = 180;
gfxData->unk0 = 140;
set_sndfx_player_voice_limit(16);
@@ -740,7 +741,7 @@ void obj_loop_collectegg(Object *obj, s32 updateRate) {
}
switch (egg->status) {
case EGG_SPAWNED:
func_80036040(obj, (Object_64 *) egg);
try_to_collect_egg(obj, egg);
break;
case EGG_MOVING:
obj->segment.trans.flags &= (0xFFFF - OBJ_FLAGS_INVISIBLE);
@@ -801,7 +802,7 @@ void obj_loop_collectegg(Object *obj, s32 updateRate) {
egg->spawnerObj->properties.eggSpawner.egg = NULL;
}
if (egg->hatchTimer < 540) {
func_80036040(obj, (Object_64 *) egg);
try_to_collect_egg(obj, egg);
}
if (racerObj != NULL && egg->status != EGG_IN_BASE) {
racer->eggHudCounter -= 1;
@@ -1127,7 +1128,38 @@ void obj_loop_characterflag(Object *obj, UNUSED s32 updateRate) {
}
}
GLOBAL_ASM("asm/non_matchings/object_functions/func_80036040.s")
void try_to_collect_egg(Object *obj, Object_CollectEgg *egg) {
Object_64 *racer;
Object *interactedObj;
Matrix mat;
ObjectTransform transF;
if (obj->interactObj->distance < 40) {
interactedObj = obj->interactObj->obj;
if (interactedObj->segment.header->behaviorId == BHV_RACER) {
racer = interactedObj->unk64;
if (racer->racer.held_obj == NULL) {
egg->status = EGG_UNK_01;
obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE;
racer->racer.held_obj = obj;
transF.y_rotation = -interactedObj->segment.trans.y_rotation;
transF.x_rotation = -interactedObj->segment.trans.x_rotation;
transF.z_rotation = -interactedObj->segment.trans.z_rotation;
transF.scale = 1.0f;
transF.x_position = -interactedObj->segment.trans.x_position;
transF.y_position = -interactedObj->segment.trans.y_position;
transF.z_position = -interactedObj->segment.trans.z_position;
object_transform_to_matrix_2(mat, &transF);
guMtxXFMF(mat,
obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position,
&obj->segment.trans.x_position, &obj->segment.trans.y_position, &obj->segment.trans.z_position);
obj->segment.trans.x_position /= interactedObj->segment.trans.scale;
obj->segment.trans.y_position /= interactedObj->segment.trans.scale;
obj->segment.trans.z_position /= interactedObj->segment.trans.scale;
}
}
}
}
/**
* Hub world T.T init behaviour.
@@ -1601,7 +1633,7 @@ void obj_init_animation(Object *obj, LevelObjectEntry_Animation *entry, s32 arg2
}
obj64 = &obj->unk64->animation;
if (obj->unk64 != 0) {
func_8001EFA4(obj, obj64);
func_8001EFA4(obj, (Object *) obj64);
if (entry->order != 0 || obj64->unk4A != entry->objectIdToSpawn) {
gParticlePtrList_addObject((Object *) obj64);
obj->unk64 = NULL;
@@ -4017,9 +4049,9 @@ void obj_loop_weaponballoon(Object *obj, s32 updateRate) {
obj->segment.trans.scale = 0.001f;
}
if (obj->segment.trans.scale < 0.1) {
obj->segment.trans.flags |= 0x4000;
obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE;
} else {
obj->segment.trans.flags &= 0xBFFF;
obj->segment.trans.flags &= ~OBJ_FLAGS_INVISIBLE;
}
if (obj->properties.weaponBalloon.unk4 > 0) {
obj->unk74 = 1;
+1 -2
View File
@@ -442,14 +442,13 @@ s32 func_8001C524(f32 x, f32 y, f32 z, s32 arg3);
s32 func_8001CC48(s32, s32, s32);
f32 func_8001C6C4(Object_64 *, Object *, f32, f32, s32);
void func_8000CBF0(Object*, s32);
void try_to_collect_egg(Object *, Object_CollectEgg*);
void func_8001EE74();
void func_8001EFA4(Object *, Object_Animation*);
void func_8001F23C(Object *obj, LevelObjectEntry_Animation *entry);
s32 func_8001F3EC(s32);
s32 func_80021600(s32);
void func_80036040(Object *, Object_64*);
void func_8003F2E8(Object *, s32 updateRate);
#endif
+189 -6
View File
@@ -26,6 +26,8 @@
#include "game_ui.h"
#include "unknown_008C40.h"
#include "controller.h"
#include "game_text.h"
#include "audiosfx.h"
#define MAX_CHECKPOINTS 60
#define OBJECT_POOL_SIZE 0x15800
@@ -51,7 +53,7 @@ s16 D_800DC724 = 0x2A30;
s16 D_800DC728 = -1;
s16 D_800DC72C = 0;
u8 gHasGhostToSave = 0;
s32 D_800DC734 = 0; // Currently unknown, might be a different type.
u8 D_800DC734 = 0;
u8 D_800DC738 = 0;
s8 D_800DC73C = 0;
s8 D_800DC740 = 0;
@@ -968,7 +970,7 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) {
}
sp50 = curObj->segment.header->unk30 & 0x80;
if (sp50) {
curObj->segment.trans.flags |= 0x80;
curObj->segment.trans.flags |= OBJ_FLAGS_UNK_0080;
}
if (curObj->segment.header->behaviorId == BHV_ROCKET_SIGNPOST && settings->cutsceneFlags & 1) {
update_object_stack_trace(OBJECT_SPAWN, -1);
@@ -2983,7 +2985,33 @@ void func_80016BC4(Object *arg0) {
}
}
GLOBAL_ASM("asm/non_matchings/objects/func_80016C68.s")
Object *func_80016C68(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis) {
f32 yDiff;
f32 zDiff;
f32 xDiff;
f32 distance;
s32 i;
Object *curObj;
for (i = 0; i < objCount; i++) {
curObj = gObjPtrList[i];
if (!(curObj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) && (curObj->behaviorId == BHV_ANIMATED_OBJECT_3)) {
xDiff = curObj->segment.trans.x_position - x;
zDiff = curObj->segment.trans.z_position - z;
if (!dontCheckYAxis) {
yDiff = curObj->segment.trans.y_position - y;
distance = sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff));
} else {
distance = sqrtf((xDiff * xDiff) + (zDiff * zDiff));
}
if (distance < maxDistCheck) {
return curObj;
}
}
}
return NULL;
}
GLOBAL_ASM("asm/non_matchings/objects/func_80016DE8.s")
void func_8001709C(Object *obj) {
@@ -3202,7 +3230,38 @@ s32 func_8001B3AC(s32 arg0) {
return arg0 == D_800DC718;
}
GLOBAL_ASM("asm/non_matchings/objects/func_8001B3C4.s")
void func_8001B3C4(s32 arg0, s16 *playerId) {
s32 trackIdCount;
s8 *mainTrackIds;
D_800DC718 = 0;
free_tt_ghost_data();
D_800DC734 = 0;
mainTrackIds = get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS);
trackIdCount = 0;
while (mainTrackIds[trackIdCount] != -1 && mainTrackIds[trackIdCount] != arg0) {
trackIdCount++;
}
if (D_800DC738 != 0) {
//Save that TT has been beaten for this track.
set_eeprom_settings_value(16 << trackIdCount);
//Check if TT has been beaten for all tracks.
if ((get_eeprom_settings() & 0xFFFFF0) == 0xFFFFF0) {
set_magic_code_flags(CHEAT_CONTROL_TT);
play_sound_global(SOUND_VOICE_TT_BEAT_ALL_TIMES, NULL);
func_80000FDC(SOUND_VOICE_TT_UNLOCKED, 0, 1.5f);
func_800C31EC(ASSET_GAME_TEXT_84); //Text for "You have beaten all my times!" and then "Now you can PICK me!"
} else {
play_sound_global(SOUND_VOICE_TT_WELL_DONE, NULL);
func_80000FDC(SOUND_VOICE_TT_TRY_ANOTHER_TRACK, 0, 1.0f);
func_800C31EC(ASSET_GAME_TEXT_83); //Text for "Well Done! Now try another track."
}
D_800DC738 = 0;
return;
}
play_time_trial_end_message(playerId);
}
GLOBAL_ASM("asm/non_matchings/objects/func_8001B4FC.s")
Object *func_8001B640(void) {
@@ -3593,7 +3652,62 @@ s32 func_8001C524(f32 diffX, f32 diffY, f32 diffZ, s32 someFlag) {
}
GLOBAL_ASM("asm/non_matchings/objects/func_8001C6C4.s")
#ifdef NON_MATCHING
typedef struct LevelObjectEntry_Unknown8001CC48 {
LevelObjectEntryCommon common;
u8 pad8[2];
u8 unkA[4];
} LevelObjectEntry_Unknown8001CC48;
typedef struct Object_Unknown8001CC48 {
s8 pad0[0x18];
s8 unk18[4];
} Object_Unknown8001CC48;
s32 func_8001CC48(s32 arg0, s32 arg1, s32 arg2) {
LevelObjectEntry_Unknown8001CC48 *entry;
Object *someObj;
Object_Unknown8001CC48 *someObj64;
s32 someCount;
s32 i;
s32 someIndex;
s32 test;
if ((arg0 < -1) || (arg0 >= 128)) {
return 255;
}
someObj = (*D_8011AF04)[arg0];
if (someObj == NULL) {
return 255;
}
entry = (LevelObjectEntry_Unknown8001CC48 *)someObj->segment.level_entry;
someObj64 = (Object_Unknown8001CC48*)someObj->unk64;
test = arg2 & 3;
// Swapping these messes up the registers.
someCount = 0;
someIndex = (someObj64->unk18[test] + 1) & 3;
for (i = 0; i < 4; i++) {
if (entry->unkA[someIndex] != 255) {
if (entry->unkA[someIndex] != arg1) {
someObj64->unk18[test] = someIndex;
i = 4;
someCount++;
}
}
someIndex = (someIndex + 1) & 3;
}
if (someCount == 0) {
return 255;
}
return entry->unkA[someObj64->unk18[test]];
}
#else
GLOBAL_ASM("asm/non_matchings/objects/func_8001CC48.s")
#endif
GLOBAL_ASM("asm/non_matchings/objects/func_8001CD28.s")
void func_8001D1AC(void) {
@@ -3880,7 +3994,76 @@ void func_8001E89C(void) {
GLOBAL_ASM("asm/non_matchings/objects/func_8001E93C.s")
GLOBAL_ASM("asm/non_matchings/objects/func_8001EE74.s")
GLOBAL_ASM("asm/non_matchings/objects/func_8001EFA4.s")
void func_8001EFA4(Object *arg0, Object *animObj) {
LevelObjectEntry_Animation *animEntry;
Object_Animation *anim;
f32 scale;
animEntry = &arg0->segment.level_entry->animation;
anim = &animObj->unk64->animation;
scale = animEntry->scale & 0xFF;
if (scale < 1.0f) {
scale = 1.0f;
}
scale /= 64;
animObj->segment.trans.scale = animObj->segment.header->scale * scale;
animObj->properties.common.unk0 = 0;
animObj->properties.common.unk4 = 0;
if ((animEntry->unk22 >= 2) && (animEntry->unk22 < 10)) {
animObj->properties.common.unk0 = animEntry->unk22 - 1;
}
if ((animEntry->unk22 >= 10) && (animEntry->unk22 < 18)) {
animObj->properties.common.unk0 = animEntry->unk22 - 9;
}
animObj->segment.trans.x_position = arg0->segment.trans.x_position;
animObj->segment.trans.y_position = arg0->segment.trans.y_position;
animObj->segment.trans.z_position = arg0->segment.trans.z_position;
animObj->segment.trans.y_rotation = arg0->segment.trans.y_rotation;
animObj->segment.trans.z_rotation = arg0->segment.trans.z_rotation;
animObj->segment.trans.x_rotation = arg0->segment.trans.x_rotation;
anim->unk26 = 0;
anim->unk3D = animEntry->channel;
anim->unk28 = animEntry->actorIndex;
anim->unk8 = (f32)animEntry->nodeSpeed * 0.1;
anim->unk2A = normalise_time(animEntry->animationStartDelay);
animObj->segment.object.animationID = animEntry->objAnimIndex;
animObj->segment.animFrame = animEntry->unk16;
anim->unk14 = animEntry->objAnimSpeed;
anim->unk10 = 0;
anim->unk2C = animEntry->objAnimLoopType;
anim->unk2E = animEntry->rotateType;
anim->unk3E = animEntry->nextAnim;
anim->unk3F = animEntry->unk2D;
anim->unk31 = animEntry->yawSpinSpeed;
anim->unk32 = animEntry->rollSpinSpeed;
anim->unk33 = animEntry->pitchSpinSpeed;
anim->unk34 = animEntry->unk20;
anim->unk2D = 0;
anim->unk4 = 0;
anim->unk0 = 0;
arg0->unk6C = NULL;
anim->unk36 = normalise_time(animEntry->pauseFrameCount);
anim->unk3A = animEntry->specialHide;
if (animEntry->unk13 >= 0) {
anim->unk2F = animEntry->unk13;
}
anim->unk39 = animEntry->unk1F;
anim->unk38 = animEntry->unk1E;
anim->unk3B = animEntry->unk29;
anim->unk40 = animEntry->soundEffect;
anim->unk41 = animEntry->fadeOptions;
anim->unk3C = animEntry->fadeAlpha;
anim->unk42 = 0xFF;
if (anim->unk18 != NULL) {
func_8000488C(anim->unk18);
}
anim->unk18 = 0;
anim->unk43 = animEntry->unk30;
anim->unk1C = arg0;
anim->unk45 = 0;
}
GLOBAL_ASM("asm/non_matchings/objects/func_8001F23C.s")
s8 func_8001F3B8(void) {
@@ -3981,7 +4164,7 @@ loop_11:
}
}
}
func_8001EFA4(D_8011AE74[i], (Object_Animation *) obj);
func_8001EFA4(D_8011AE74[i], obj);
return 1;
}
return 0;
+4 -1
View File
@@ -415,7 +415,7 @@ s32 move_object(Object *obj, f32 xPos, f32 yPos, f32 zPos);
Object *get_racer_object_by_port(s32 index);
void render_racer_shield(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *obj);
void render_racer_magnet(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *obj);
void update_envmap_position(f32 arg0, f32 arg1, f32 arg2);
void update_envmap_position(f32 x, f32 y, f32 z);
s32 func_8000FC6C(Object *obj, WaterEffect *shadow);
s32 func_8001B2F0(s32 mapId);
void render_3d_billboard(Object *obj);
@@ -445,6 +445,9 @@ void light_setup_light_sources(Object *obj);
s32 init_object_interaction_data(Object *arg0, ObjectInteraction *arg1);
s32 func_8000FAC4(Object *obj, Object_6C *arg1);
s32 obj_init_property_flags(s32 behaviorId);
void func_8001B3C4(s32 arg0, s16 *playerId);
void func_8001EFA4(Object *, Object *);
Object *func_80016C68(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis);
//Non Matching
void calc_dynamic_lighting_for_object_1(Object *, ObjectModel *, s16, Object *, f32, f32);
+2 -2
View File
@@ -788,9 +788,9 @@ Particle *func_800B0698(Particle *arg0, Particle *arg1) {
}
if (properties->opacity < 255) {
if (var_v0->segment.unk40 & 0x1000) {
var_v0->segment.trans.flags |= 0x100;
var_v0->segment.trans.flags |= OBJ_FLAGS_UNK_0100;
} else {
var_v0->segment.trans.flags |= 0x80;
var_v0->segment.trans.flags |= OBJ_FLAGS_UNK_0080;
}
}
if (var_v0->opacityTimer < var_v0->segment.particle.destroyTimer) {

Some files were not shown because too many files have changed in this diff Show More