Fun with Functions! (#412)

* Match func_80094A5C

* Cleanup on func_80094A5C

* Reduce indentation on func_80094A5C with early returns

* calculate_and_display_rom_checksum and menu_trophy_race_rankings_loop matched

* Forgotten cleanup

* Cleanup some funcs

* Match menu_magic_codes_loop

* menu_magic_codes_loop cleanup

* "Match" free_texture...

* Match free_sprite

* Fix build issues.

* Update score in readme
This commit is contained in:
Ryan Myers
2023-09-29 18:50:06 -04:00
committed by GitHub
parent b9f2dff589
commit 1ceb8d800f
18 changed files with 590 additions and 1536 deletions
+12 -12
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 27, 2023, this is our current score:
As of September 29, 2023, this is our current score:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 55.01%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 55.56%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 28.42%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 28.44%
<!-- README_SCORE_SUMMARY_END -->
---
@@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) {
```
<!-- README_SCORE_BEGIN -->
As of September 27th, 2023, this is our current score:
As of September 29th, 2023, this is our current score:
```
===============================================================
ADVENTURE ONE (ASM -> C Decompilation)
----------------------- 55.01% Complete -----------------------
# Decompiled functions: 1571
# GLOBAL_ASM remaining: 267
----------------------- 55.56% Complete -----------------------
# Decompiled functions: 1577
# GLOBAL_ASM remaining: 261
# NON_MATCHING functions: 13
# NON_EQUIVALENT WIP functions: 67
# NON_EQUIVALENT WIP functions: 64
------------------------- Game Status -------------------------
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
---------------------------------------------------------------
We are collecting silver coins in Whale Bay. (2/8 silver coins)
We are collecting silver coins in Whale Bay. (6/8 silver coins)
===============================================================
ADVENTURE TWO (Cleanup & Documentation)
----------------------- 28.42% Complete -----------------------
# Documented functions: 623
# Undocumented remaining: 947
----------------------- 28.44% Complete -----------------------
# Documented functions: 624
# Undocumented remaining: 946
------------------------- Game Status -------------------------
Balloons: 14/47, Keys: 1/4, Trophies: 1/5
T.T. Amulets: 1/4, Wizpig Amulets: 1/4
@@ -1,102 +0,0 @@
glabel calculate_and_display_rom_checksum
/* 08B944 8008AD44 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 08B948 8008AD48 3C0E800E */ lui $t6, %hi(D_800E1E18) # $t6, 0x800e
/* 08B94C 8008AD4C 8DCE1E18 */ lw $t6, %lo(D_800E1E18)($t6)
/* 08B950 8008AD50 AFBF002C */ sw $ra, 0x2c($sp)
/* 08B954 8008AD54 AFB40028 */ sw $s4, 0x28($sp)
/* 08B958 8008AD58 AFB30024 */ sw $s3, 0x24($sp)
/* 08B95C 8008AD5C AFB20020 */ sw $s2, 0x20($sp)
/* 08B960 8008AD60 AFB1001C */ sw $s1, 0x1c($sp)
/* 08B964 8008AD64 15C0003B */ bnez $t6, .L8008AE54
/* 08B968 8008AD68 AFB00018 */ sw $s0, 0x18($sp)
/* 08B96C 8008AD6C 3C1000AD */ lui $s0, %hi(__ROM_END) # $s0, 0xad
/* 08B970 8008AD70 26109630 */ addiu $s0, %lo(__ROM_END) # addiu $s0, $s0, -0x69d0
/* 08B974 8008AD74 2610F000 */ addiu $s0, $s0, -0x1000
/* 08B978 8008AD78 24131000 */ li $s3, 4096
/* 08B97C 8008AD7C 02009025 */ move $s2, $s0
/* 08B980 8008AD80 24045000 */ li $a0, 20480
/* 08B984 8008AD84 0C01C327 */ jal allocate_from_main_pool_safe
/* 08B988 8008AD88 240500FF */ li $a1, 255
/* 08B98C 8008AD8C 1200002C */ beqz $s0, .L8008AE40
/* 08B990 8008AD90 0040A025 */ move $s4, $v0
.L8008AD94:
/* 08B994 8008AD94 2A415001 */ slti $at, $s2, 0x5001
/* 08B998 8008AD98 02408825 */ move $s1, $s2
/* 08B99C 8008AD9C 14200002 */ bnez $at, .L8008ADA8
/* 08B9A0 8008ADA0 00008025 */ move $s0, $zero
/* 08B9A4 8008ADA4 24115000 */ li $s1, 20480
.L8008ADA8:
/* 08B9A8 8008ADA8 02602025 */ move $a0, $s3
/* 08B9AC 8008ADAC 02802825 */ move $a1, $s4
/* 08B9B0 8008ADB0 0C01DBDE */ jal dmacopy
/* 08B9B4 8008ADB4 02203025 */ move $a2, $s1
/* 08B9B8 8008ADB8 1A20001F */ blez $s1, .L8008AE38
/* 08B9BC 8008ADBC 02519023 */ subu $s2, $s2, $s1
/* 08B9C0 8008ADC0 32240003 */ andi $a0, $s1, 3
/* 08B9C4 8008ADC4 1080000C */ beqz $a0, .L8008ADF8
/* 08B9C8 8008ADC8 00801825 */ move $v1, $a0
/* 08B9CC 8008ADCC 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e
/* 08B9D0 8008ADD0 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1)
/* 08B9D4 8008ADD4 02901021 */ addu $v0, $s4, $s0
.L8008ADD8:
/* 08B9D8 8008ADD8 904F0000 */ lbu $t7, ($v0)
/* 08B9DC 8008ADDC 26100001 */ addiu $s0, $s0, 1
/* 08B9E0 8008ADE0 24420001 */ addiu $v0, $v0, 1
/* 08B9E4 8008ADE4 1470FFFC */ bne $v1, $s0, .L8008ADD8
/* 08B9E8 8008ADE8 00AF2821 */ addu $a1, $a1, $t7
/* 08B9EC 8008ADEC 3C01800E */ lui $at, %hi(D_800E1E14) # $at, 0x800e
/* 08B9F0 8008ADF0 12110011 */ beq $s0, $s1, .L8008AE38
/* 08B9F4 8008ADF4 AC251E14 */ sw $a1, %lo(D_800E1E14)($at)
.L8008ADF8:
/* 08B9F8 8008ADF8 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e
/* 08B9FC 8008ADFC 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1)
/* 08BA00 8008AE00 02901021 */ addu $v0, $s4, $s0
.L8008AE04:
/* 08BA04 8008AE04 90580000 */ lbu $t8, ($v0)
/* 08BA08 8008AE08 90590001 */ lbu $t9, 1($v0)
/* 08BA0C 8008AE0C 90480002 */ lbu $t0, 2($v0)
/* 08BA10 8008AE10 00B82821 */ addu $a1, $a1, $t8
/* 08BA14 8008AE14 90490003 */ lbu $t1, 3($v0)
/* 08BA18 8008AE18 00B92821 */ addu $a1, $a1, $t9
/* 08BA1C 8008AE1C 26100004 */ addiu $s0, $s0, 4
/* 08BA20 8008AE20 00A82821 */ addu $a1, $a1, $t0
/* 08BA24 8008AE24 24420004 */ addiu $v0, $v0, 4
/* 08BA28 8008AE28 1611FFF6 */ bne $s0, $s1, .L8008AE04
/* 08BA2C 8008AE2C 00A92821 */ addu $a1, $a1, $t1
/* 08BA30 8008AE30 3C01800E */ lui $at, %hi(D_800E1E14) # $at, 0x800e
/* 08BA34 8008AE34 AC251E14 */ sw $a1, %lo(D_800E1E14)($at)
.L8008AE38:
/* 08BA38 8008AE38 1640FFD6 */ bnez $s2, .L8008AD94
/* 08BA3C 8008AE3C 02719821 */ addu $s3, $s3, $s1
.L8008AE40:
/* 08BA40 8008AE40 0C01C450 */ jal free_from_memory_pool
/* 08BA44 8008AE44 02802025 */ move $a0, $s4
/* 08BA48 8008AE48 240A0001 */ li $t2, 1
/* 08BA4C 8008AE4C 3C01800E */ lui $at, %hi(D_800E1E18) # $at, 0x800e
/* 08BA50 8008AE50 AC2A1E18 */ sw $t2, %lo(D_800E1E18)($at)
.L8008AE54:
/* 08BA54 8008AE54 3C1000AD */ lui $s0, %hi(__ROM_END) # $s0, 0xad
/* 08BA58 8008AE58 26109630 */ addiu $s0, %lo(__ROM_END) # addiu $s0, $s0, -0x69d0
/* 08BA5C 8008AE5C 00002025 */ move $a0, $zero
/* 08BA60 8008AE60 00002825 */ move $a1, $zero
/* 08BA64 8008AE64 00003025 */ move $a2, $zero
/* 08BA68 8008AE68 0C02D8AD */ jal set_render_printf_background_colour
/* 08BA6C 8008AE6C 24070080 */ li $a3, 128
/* 08BA70 8008AE70 24040020 */ li $a0, 32
/* 08BA74 8008AE74 0C02D8D7 */ jal set_render_printf_position
/* 08BA78 8008AE78 24050088 */ li $a1, 136
/* 08BA7C 8008AE7C 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e
/* 08BA80 8008AE80 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1)
/* 08BA84 8008AE84 3C04800F */ lui $a0, %hi(D_800E8218) # $a0, 0x800f
/* 08BA88 8008AE88 24848218 */ addiu $a0, %lo(D_800E8218) # addiu $a0, $a0, -0x7de8
/* 08BA8C 8008AE8C 0C02D7B7 */ jal render_printf
/* 08BA90 8008AE90 02003025 */ move $a2, $s0
/* 08BA94 8008AE94 8FBF002C */ lw $ra, 0x2c($sp)
/* 08BA98 8008AE98 8FB00018 */ lw $s0, 0x18($sp)
/* 08BA9C 8008AE9C 8FB1001C */ lw $s1, 0x1c($sp)
/* 08BAA0 8008AEA0 8FB20020 */ lw $s2, 0x20($sp)
/* 08BAA4 8008AEA4 8FB30024 */ lw $s3, 0x24($sp)
/* 08BAA8 8008AEA8 8FB40028 */ lw $s4, 0x28($sp)
/* 08BAAC 8008AEAC 03E00008 */ jr $ra
/* 08BAB0 8008AEB0 27BD0030 */ addiu $sp, $sp, 0x30
-119
View File
@@ -1,119 +0,0 @@
glabel func_80094A5C
/* 09565C 80094A5C 3C038012 */ lui $v1, %hi(D_80126C54) # $v1, 0x8012
/* 095660 80094A60 24636C54 */ addiu $v1, %lo(D_80126C54) # addiu $v1, $v1, 0x6c54
/* 095664 80094A64 8C620000 */ lw $v0, ($v1)
/* 095668 80094A68 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 09566C 80094A6C 04400065 */ bltz $v0, .L80094C04
/* 095670 80094A70 AFBF0014 */ sw $ra, 0x14($sp)
/* 095674 80094A74 2841000A */ slti $at, $v0, 0xa
/* 095678 80094A78 10200004 */ beqz $at, .L80094A8C
/* 09567C 80094A7C 00027840 */ sll $t7, $v0, 1
/* 095680 80094A80 244E0001 */ addiu $t6, $v0, 1
/* 095684 80094A84 1000005F */ b .L80094C04
/* 095688 80094A88 AC6E0000 */ sw $t6, ($v1)
.L80094A8C:
/* 09568C 80094A8C 3C04800E */ lui $a0, %hi(D_800E0A10) # $a0, 0x800e
/* 095690 80094A90 008F2021 */ addu $a0, $a0, $t7
/* 095694 80094A94 84840A10 */ lh $a0, %lo(D_800E0A10)($a0)
/* 095698 80094A98 2401FFFF */ li $at, -1
/* 09569C 80094A9C 14810052 */ bne $a0, $at, .L80094BE8
/* 0956A0 80094AA0 00000000 */ nop
/* 0956A4 80094AA4 3C04800E */ lui $a0, %hi(D_800E0A40) # $a0, 0x800e
/* 0956A8 80094AA8 0C027229 */ jal allocate_menu_images
/* 0956AC 80094AAC 24840A40 */ addiu $a0, %lo(D_800E0A40) # addiu $a0, $a0, 0xa40
/* 0956B0 80094AB0 0C025181 */ jal assign_racer_portrait_textures
/* 0956B4 80094AB4 00000000 */ nop
/* 0956B8 80094AB8 0C01BAA4 */ jal get_settings
/* 0956BC 80094ABC 00000000 */ nop
/* 0956C0 80094AC0 80580114 */ lb $t8, 0x114($v0)
/* 0956C4 80094AC4 3C05800E */ lui $a1, %hi(D_800E0AF0) # $a1, 0x800e
/* 0956C8 80094AC8 0018C880 */ sll $t9, $t8, 2
/* 0956CC 80094ACC 0338C823 */ subu $t9, $t9, $t8
/* 0956D0 80094AD0 0019C8C0 */ sll $t9, $t9, 3
/* 0956D4 80094AD4 00595021 */ addu $t2, $v0, $t9
/* 0956D8 80094AD8 814B0059 */ lb $t3, 0x59($t2)
/* 0956DC 80094ADC 24A50AF0 */ addiu $a1, %lo(D_800E0AF0) # addiu $a1, $a1, 0xaf0
/* 0956E0 80094AE0 000B6080 */ sll $t4, $t3, 2
/* 0956E4 80094AE4 00AC6821 */ addu $t5, $a1, $t4
/* 0956E8 80094AE8 8DAE0000 */ lw $t6, ($t5)
/* 0956EC 80094AEC 3C01800E */ lui $at, %hi(D_800E0BEC+20) # $at, 0x800e
/* 0956F0 80094AF0 AFA2001C */ sw $v0, 0x1c($sp)
/* 0956F4 80094AF4 0C003932 */ jal is_time_trial_enabled
/* 0956F8 80094AF8 AC2E0C00 */ sw $t6, %lo(D_800E0BEC+20)($at)
/* 0956FC 80094AFC 3C05800E */ lui $a1, %hi(D_800E0AF0) # $a1, 0x800e
/* 095700 80094B00 8FA9001C */ lw $t1, 0x1c($sp)
/* 095704 80094B04 14400034 */ bnez $v0, .L80094BD8
/* 095708 80094B08 24A50AF0 */ addiu $a1, %lo(D_800E0AF0) # addiu $a1, $a1, 0xaf0
/* 09570C 80094B0C 3C06800E */ lui $a2, %hi(D_800E0CEC+224) # $a2, 0x800e
/* 095710 80094B10 24C60DCC */ addiu $a2, %lo(D_800E0CEC+224) # addiu $a2, $a2, 0xdcc
/* 095714 80094B14 00002025 */ move $a0, $zero
/* 095718 80094B18 240700C0 */ li $a3, 192
/* 09571C 80094B1C 00001825 */ move $v1, $zero
.L80094B20:
/* 095720 80094B20 01201025 */ move $v0, $t1
.L80094B24:
/* 095724 80094B24 804F005A */ lb $t7, 0x5a($v0)
/* 095728 80094B28 24630018 */ addiu $v1, $v1, 0x18
/* 09572C 80094B2C 148F0008 */ bne $a0, $t7, .L80094B50
/* 095730 80094B30 00046140 */ sll $t4, $a0, 5
/* 095734 80094B34 80580059 */ lb $t8, 0x59($v0)
/* 095738 80094B38 000C6823 */ negu $t5, $t4
/* 09573C 80094B3C 0018C880 */ sll $t9, $t8, 2
/* 095740 80094B40 00B95021 */ addu $t2, $a1, $t9
/* 095744 80094B44 8D4B0000 */ lw $t3, ($t2)
/* 095748 80094B48 00CD7021 */ addu $t6, $a2, $t5
/* 09574C 80094B4C ADCB0014 */ sw $t3, 0x14($t6)
.L80094B50:
/* 095750 80094B50 1467FFF4 */ bne $v1, $a3, .L80094B24
/* 095754 80094B54 24420018 */ addiu $v0, $v0, 0x18
/* 095758 80094B58 24840001 */ addiu $a0, $a0, 1
/* 09575C 80094B5C 28810008 */ slti $at, $a0, 8
/* 095760 80094B60 1420FFEF */ bnez $at, .L80094B20
/* 095764 80094B64 00001825 */ move $v1, $zero
/* 095768 80094B68 0C027B20 */ jal is_in_two_player_adventure
/* 09576C 80094B6C 00000000 */ nop
/* 095770 80094B70 10400019 */ beqz $v0, .L80094BD8
/* 095774 80094B74 3C0F800E */ lui $t7, %hi(D_800E0CEC+84) # $t7, 0x800e
/* 095778 80094B78 8DEF0D40 */ lw $t7, %lo(D_800E0CEC+84)($t7)
/* 09577C 80094B7C 3C01800E */ lui $at, %hi(D_800E0CEC+52) # $at, 0x800e
/* 095780 80094B80 3C18800E */ lui $t8, %hi(D_800E0CEC+116) # $t8, 0x800e
/* 095784 80094B84 AC2F0D20 */ sw $t7, %lo(D_800E0CEC+52)($at)
/* 095788 80094B88 8F180D60 */ lw $t8, %lo(D_800E0CEC+116)($t8)
/* 09578C 80094B8C 24040002 */ li $a0, 2
/* 095790 80094B90 3C03800E */ lui $v1, %hi(D_800E0CEC) # $v1, 0x800e
/* 095794 80094B94 24630CEC */ addiu $v1, %lo(D_800E0CEC) # addiu $v1, $v1, 0xcec
/* 095798 80094B98 3C01800E */ lui $at, %hi(D_800E0CEC+84) # $at, 0x800e
/* 09579C 80094B9C 0004C940 */ sll $t9, $a0, 5
/* 0957A0 80094BA0 00791021 */ addu $v0, $v1, $t9
/* 0957A4 80094BA4 AC380D40 */ sw $t8, %lo(D_800E0CEC+84)($at)
/* 0957A8 80094BA8 8C4D0094 */ lw $t5, 0x94($v0)
/* 0957AC 80094BAC 8C4B00B4 */ lw $t3, 0xb4($v0)
/* 0957B0 80094BB0 8C4C0074 */ lw $t4, 0x74($v0)
/* 0957B4 80094BB4 8C4A0054 */ lw $t2, 0x54($v0)
/* 0957B8 80094BB8 AC4D0074 */ sw $t5, 0x74($v0)
/* 0957BC 80094BBC AC4B0094 */ sw $t3, 0x94($v0)
/* 0957C0 80094BC0 AC4C0054 */ sw $t4, 0x54($v0)
/* 0957C4 80094BC4 AC4A0034 */ sw $t2, 0x34($v0)
/* 0957C8 80094BC8 3C028012 */ lui $v0, %hi(D_80126850) # $v0, 0x8012
/* 0957CC 80094BCC 24426850 */ addiu $v0, %lo(D_80126850) # addiu $v0, $v0, 0x6850
/* 0957D0 80094BD0 AC6200F4 */ sw $v0, 0xf4($v1)
/* 0957D4 80094BD4 AC620014 */ sw $v0, 0x14($v1)
.L80094BD8:
/* 0957D8 80094BD8 240EFFFF */ li $t6, -1
/* 0957DC 80094BDC 3C018012 */ lui $at, %hi(D_80126C54) # $at, 0x8012
/* 0957E0 80094BE0 10000008 */ b .L80094C04
/* 0957E4 80094BE4 AC2E6C54 */ sw $t6, %lo(D_80126C54)($at)
.L80094BE8:
/* 0957E8 80094BE8 0C0271B5 */ jal func_8009C6D4
/* 0957EC 80094BEC 00000000 */ nop
/* 0957F0 80094BF0 3C0F8012 */ lui $t7, %hi(D_80126C54) # $t7, 0x8012
/* 0957F4 80094BF4 8DEF6C54 */ lw $t7, %lo(D_80126C54)($t7)
/* 0957F8 80094BF8 3C018012 */ lui $at, %hi(D_80126C54) # $at, 0x8012
/* 0957FC 80094BFC 25F80001 */ addiu $t8, $t7, 1
/* 095800 80094C00 AC386C54 */ sw $t8, %lo(D_80126C54)($at)
.L80094C04:
/* 095804 80094C04 8FBF0014 */ lw $ra, 0x14($sp)
/* 095808 80094C08 27BD0028 */ addiu $sp, $sp, 0x28
/* 09580C 80094C0C 03E00008 */ jr $ra
/* 095810 80094C10 00000000 */ nop
File diff suppressed because it is too large Load Diff
@@ -1,427 +0,0 @@
glabel menu_trophy_race_rankings_loop
/* 099BD4 80098FD4 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 099BD8 80098FD8 AFBF001C */ sw $ra, 0x1c($sp)
/* 099BDC 80098FDC AFA40050 */ sw $a0, 0x50($sp)
/* 099BE0 80098FE0 0C01BAA4 */ jal get_settings
/* 099BE4 80098FE4 AFA0003C */ sw $zero, 0x3c($sp)
/* 099BE8 80098FE8 3C05800E */ lui $a1, %hi(gMenuDelay) # $a1, 0x800e
/* 099BEC 80098FEC 24A5F47C */ addiu $a1, %lo(gMenuDelay) # addiu $a1, $a1, -0xb84
/* 099BF0 80098FF0 8CA30000 */ lw $v1, ($a1)
/* 099BF4 80098FF4 8FA40050 */ lw $a0, 0x50($sp)
/* 099BF8 80098FF8 2861FFED */ slti $at, $v1, -0x13
/* 099BFC 80098FFC 14200008 */ bnez $at, .L80099020
/* 099C00 80099000 00405825 */ move $t3, $v0
/* 099C04 80099004 28610014 */ slti $at, $v1, 0x14
/* 099C08 80099008 10200005 */ beqz $at, .L80099020
/* 099C0C 8009900C 00000000 */ nop
/* 099C10 80099010 0C0263AF */ jal func_80098EBC
/* 099C14 80099014 AFA2002C */ sw $v0, 0x2c($sp)
/* 099C18 80099018 8FAB002C */ lw $t3, 0x2c($sp)
/* 099C1C 8009901C 00000000 */ nop
.L80099020:
/* 099C20 80099020 0C026FC8 */ jal update_controller_sticks
/* 099C24 80099024 AFAB002C */ sw $t3, 0x2c($sp)
/* 099C28 80099028 3C028012 */ lui $v0, %hi(D_801263E0) # $v0, 0x8012
/* 099C2C 8009902C 8C4263E0 */ lw $v0, %lo(D_801263E0)($v0)
/* 099C30 80099030 8FA40050 */ lw $a0, 0x50($sp)
/* 099C34 80099034 3C05800E */ lui $a1, %hi(gMenuDelay) # $a1, 0x800e
/* 099C38 80099038 8FAB002C */ lw $t3, 0x2c($sp)
/* 099C3C 8009903C 1040000B */ beqz $v0, .L8009906C
/* 099C40 80099040 24A5F47C */ addiu $a1, %lo(gMenuDelay) # addiu $a1, $a1, -0xb84
/* 099C44 80099044 24010001 */ li $at, 1
/* 099C48 80099048 1041001B */ beq $v0, $at, .L800990B8
/* 099C4C 8009904C 24010002 */ li $at, 2
/* 099C50 80099050 10410026 */ beq $v0, $at, .L800990EC
/* 099C54 80099054 3C038012 */ lui $v1, %hi(gOpacityDecayTimer) # $v1, 0x8012
/* 099C58 80099058 24010003 */ li $at, 3
/* 099C5C 8009905C 104100B1 */ beq $v0, $at, .L80099324
/* 099C60 80099060 00000000 */ nop
/* 099C64 80099064 10000161 */ b .L800995EC
/* 099C68 80099068 8FBF001C */ lw $ra, 0x1c($sp)
.L8009906C:
/* 099C6C 8009906C 0C0207D3 */ jal func_80081F4C
/* 099C70 80099070 00000000 */ nop
/* 099C74 80099074 1040015C */ beqz $v0, .L800995E8
/* 099C78 80099078 240E0001 */ li $t6, 1
/* 099C7C 8009907C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012
/* 099C80 80099080 AC2E63E0 */ sw $t6, %lo(D_801263E0)($at)
/* 099C84 80099084 0C0261DD */ jal func_80098774
/* 099C88 80099088 24040001 */ li $a0, 1
/* 099C8C 8009908C 44800000 */ mtc1 $zero, $f0
/* 099C90 80099090 3C04800E */ lui $a0, %hi(D_800E1048) # $a0, 0x800e
/* 099C94 80099094 44060000 */ mfc1 $a2, $f0
/* 099C98 80099098 44070000 */ mfc1 $a3, $f0
/* 099C9C 8009909C 24841048 */ addiu $a0, %lo(D_800E1048) # addiu $a0, $a0, 0x1048
/* 099CA0 800990A0 3C053F00 */ lui $a1, 0x3f00
/* 099CA4 800990A4 AFA00010 */ sw $zero, 0x10($sp)
/* 099CA8 800990A8 0C020795 */ jal func_80081E54
/* 099CAC 800990AC AFA00014 */ sw $zero, 0x14($sp)
/* 099CB0 800990B0 1000014E */ b .L800995EC
/* 099CB4 800990B4 8FBF001C */ lw $ra, 0x1c($sp)
.L800990B8:
/* 099CB8 800990B8 0C0207D3 */ jal func_80081F4C
/* 099CBC 800990BC 00000000 */ nop
/* 099CC0 800990C0 10400149 */ beqz $v0, .L800995E8
/* 099CC4 800990C4 240F0002 */ li $t7, 2
/* 099CC8 800990C8 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012
/* 099CCC 800990CC 3C05800E */ lui $a1, %hi(D_800E1048) # $a1, 0x800e
/* 099CD0 800990D0 AC2F63E0 */ sw $t7, %lo(D_801263E0)($at)
/* 099CD4 800990D4 24A51048 */ addiu $a1, %lo(D_800E1048) # addiu $a1, $a1, 0x1048
/* 099CD8 800990D8 24040001 */ li $a0, 1
/* 099CDC 800990DC 0C02087B */ jal draw_menu_elements
/* 099CE0 800990E0 3C063F80 */ lui $a2, 0x3f80
/* 099CE4 800990E4 10000141 */ b .L800995EC
/* 099CE8 800990E8 8FBF001C */ lw $ra, 0x1c($sp)
.L800990EC:
/* 099CEC 800990EC 246363D8 */ addiu $v1, %lo(gOpacityDecayTimer) # addiu $v1, $v1, 0x63d8
/* 099CF0 800990F0 8C780000 */ lw $t8, ($v1)
/* 099CF4 800990F4 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e
/* 099CF8 800990F8 0304C821 */ addu $t9, $t8, $a0
/* 099CFC 800990FC 2B21000B */ slti $at, $t9, 0xb
/* 099D00 80099100 14200026 */ bnez $at, .L8009919C
/* 099D04 80099104 AC790000 */ sw $t9, ($v1)
/* 099D08 80099108 272DFFF6 */ addiu $t5, $t9, -0xa
/* 099D0C 8009910C AC6D0000 */ sw $t5, ($v1)
/* 099D10 80099110 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3)
/* 099D14 80099114 00004025 */ move $t0, $zero
/* 099D18 80099118 18E00019 */ blez $a3, .L80099180
/* 099D1C 8009911C 00002825 */ move $a1, $zero
/* 099D20 80099120 3C038012 */ lui $v1, %hi(D_801263F8) # $v1, 0x8012
/* 099D24 80099124 246363F8 */ addiu $v1, %lo(D_801263F8) # addiu $v1, $v1, 0x63f8
/* 099D28 80099128 24060018 */ li $a2, 24
.L8009912C:
/* 099D2C 8009912C 8C640000 */ lw $a0, ($v1)
/* 099D30 80099130 00000000 */ nop
/* 099D34 80099134 1880000E */ blez $a0, .L80099170
/* 099D38 80099138 00000000 */ nop
/* 099D3C 8009913C 00A60019 */ multu $a1, $a2
/* 099D40 80099140 248EFFFF */ addiu $t6, $a0, -1
/* 099D44 80099144 AC6E0000 */ sw $t6, ($v1)
/* 099D48 80099148 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e
/* 099D4C 8009914C 24080001 */ li $t0, 1
/* 099D50 80099150 00007812 */ mflo $t7
/* 099D54 80099154 016F1021 */ addu $v0, $t3, $t7
/* 099D58 80099158 8C580054 */ lw $t8, 0x54($v0)
/* 099D5C 8009915C 00000000 */ nop
/* 099D60 80099160 27190001 */ addiu $t9, $t8, 1
/* 099D64 80099164 AC590054 */ sw $t9, 0x54($v0)
/* 099D68 80099168 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3)
/* 099D6C 8009916C 00000000 */ nop
.L80099170:
/* 099D70 80099170 24A50001 */ addiu $a1, $a1, 1
/* 099D74 80099174 00A7082A */ slt $at, $a1, $a3
/* 099D78 80099178 1420FFEC */ bnez $at, .L8009912C
/* 099D7C 8009917C 24630004 */ addiu $v1, $v1, 4
.L80099180:
/* 099D80 80099180 11000006 */ beqz $t0, .L8009919C
/* 099D84 80099184 2404005E */ li $a0, 94
/* 099D88 80099188 00002825 */ move $a1, $zero
/* 099D8C 8009918C 0C000741 */ jal play_sound_global
/* 099D90 80099190 AFAB002C */ sw $t3, 0x2c($sp)
/* 099D94 80099194 8FAB002C */ lw $t3, 0x2c($sp)
/* 099D98 80099198 00000000 */ nop
.L8009919C:
/* 099D9C 8009919C 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012
/* 099DA0 800991A0 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68
/* 099DA4 800991A4 3C0D800E */ lui $t5, %hi(gNumberOfActivePlayers) # $t5, 0x800e
/* 099DA8 800991A8 8CC20000 */ lw $v0, ($a2)
/* 099DAC 800991AC 8DADF4BC */ lw $t5, %lo(gNumberOfActivePlayers)($t5)
/* 099DB0 800991B0 00004025 */ move $t0, $zero
/* 099DB4 800991B4 00002825 */ move $a1, $zero
/* 099DB8 800991B8 19A00023 */ blez $t5, .L80099248
/* 099DBC 800991BC AFA20040 */ sw $v0, 0x40($sp)
/* 099DC0 800991C0 3C078012 */ lui $a3, %hi(gControllersYAxisDirection) # $a3, 0x8012
/* 099DC4 800991C4 24E76464 */ addiu $a3, %lo(gControllersYAxisDirection) # addiu $a3, $a3, 0x6464
.L800991C8:
/* 099DC8 800991C8 00A02025 */ move $a0, $a1
/* 099DCC 800991CC AFA5004C */ sw $a1, 0x4c($sp)
/* 099DD0 800991D0 AFA70020 */ sw $a3, 0x20($sp)
/* 099DD4 800991D4 AFA80044 */ sw $t0, 0x44($sp)
/* 099DD8 800991D8 0C01A955 */ jal get_buttons_pressed_from_player
/* 099DDC 800991DC AFAB002C */ sw $t3, 0x2c($sp)
/* 099DE0 800991E0 8FA70020 */ lw $a3, 0x20($sp)
/* 099DE4 800991E4 8FA80044 */ lw $t0, 0x44($sp)
/* 099DE8 800991E8 80E30000 */ lb $v1, ($a3)
/* 099DEC 800991EC 8FA5004C */ lw $a1, 0x4c($sp)
/* 099DF0 800991F0 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012
/* 099DF4 800991F4 8FAB002C */ lw $t3, 0x2c($sp)
/* 099DF8 800991F8 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68
/* 099DFC 800991FC 04610005 */ bgez $v1, .L80099214
/* 099E00 80099200 01024025 */ or $t0, $t0, $v0
/* 099E04 80099204 8CCE0000 */ lw $t6, ($a2)
/* 099E08 80099208 00000000 */ nop
/* 099E0C 8009920C 25CF0001 */ addiu $t7, $t6, 1
/* 099E10 80099210 ACCF0000 */ sw $t7, ($a2)
.L80099214:
/* 099E14 80099214 18600005 */ blez $v1, .L8009922C
/* 099E18 80099218 3C0D800E */ lui $t5, %hi(gNumberOfActivePlayers) # $t5, 0x800e
/* 099E1C 8009921C 8CD80000 */ lw $t8, ($a2)
/* 099E20 80099220 00000000 */ nop
/* 099E24 80099224 2719FFFF */ addiu $t9, $t8, -1
/* 099E28 80099228 ACD90000 */ sw $t9, ($a2)
.L8009922C:
/* 099E2C 8009922C 8DADF4BC */ lw $t5, %lo(gNumberOfActivePlayers)($t5)
/* 099E30 80099230 24A50001 */ addiu $a1, $a1, 1
/* 099E34 80099234 00AD082A */ slt $at, $a1, $t5
/* 099E38 80099238 1420FFE3 */ bnez $at, .L800991C8
/* 099E3C 8009923C 24E70001 */ addiu $a3, $a3, 1
/* 099E40 80099240 8CC20000 */ lw $v0, ($a2)
/* 099E44 80099244 00000000 */ nop
.L80099248:
/* 099E48 80099248 04410003 */ bgez $v0, .L80099258
/* 099E4C 8009924C 3C038012 */ lui $v1, %hi(D_80126C14) # $v1, 0x8012
/* 099E50 80099250 ACC00000 */ sw $zero, ($a2)
/* 099E54 80099254 00001025 */ move $v0, $zero
.L80099258:
/* 099E58 80099258 8C636C14 */ lw $v1, %lo(D_80126C14)($v1)
/* 099E5C 8009925C 240400EB */ li $a0, 235
/* 099E60 80099260 0043082A */ slt $at, $v0, $v1
/* 099E64 80099264 14200003 */ bnez $at, .L80099274
/* 099E68 80099268 00002825 */ move $a1, $zero
/* 099E6C 8009926C 2462FFFF */ addiu $v0, $v1, -1
/* 099E70 80099270 ACC20000 */ sw $v0, ($a2)
.L80099274:
/* 099E74 80099274 8FAF0040 */ lw $t7, 0x40($sp)
/* 099E78 80099278 00000000 */ nop
/* 099E7C 8009927C 11E20008 */ beq $t7, $v0, .L800992A0
/* 099E80 80099280 31189000 */ andi $t8, $t0, 0x9000
/* 099E84 80099284 AFA80044 */ sw $t0, 0x44($sp)
/* 099E88 80099288 0C000741 */ jal play_sound_global
/* 099E8C 8009928C AFAB002C */ sw $t3, 0x2c($sp)
/* 099E90 80099290 8FA80044 */ lw $t0, 0x44($sp)
/* 099E94 80099294 8FAB002C */ lw $t3, 0x2c($sp)
/* 099E98 80099298 00000000 */ nop
/* 099E9C 8009929C 31189000 */ andi $t8, $t0, 0x9000
.L800992A0:
/* 099EA0 800992A0 130000D1 */ beqz $t8, .L800995E8
/* 099EA4 800992A4 2404FF80 */ li $a0, -128
/* 099EA8 800992A8 00002825 */ move $a1, $zero
/* 099EAC 800992AC AFA0004C */ sw $zero, 0x4c($sp)
/* 099EB0 800992B0 0C000326 */ jal set_music_fade_timer
/* 099EB4 800992B4 AFAB002C */ sw $t3, 0x2c($sp)
/* 099EB8 800992B8 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e
/* 099EBC 800992BC 0C030076 */ jal transition_begin
/* 099EC0 800992C0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c
/* 099EC4 800992C4 3C0D800E */ lui $t5, %hi(D_800E0FE4) # $t5, 0x800e
/* 099EC8 800992C8 8DAD0FE4 */ lw $t5, %lo(D_800E0FE4)($t5)
/* 099ECC 800992CC 8FA5004C */ lw $a1, 0x4c($sp)
/* 099ED0 800992D0 8FAB002C */ lw $t3, 0x2c($sp)
/* 099ED4 800992D4 24190003 */ li $t9, 3
/* 099ED8 800992D8 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012
/* 099EDC 800992DC 19A000C2 */ blez $t5, .L800995E8
/* 099EE0 800992E0 AC3963E0 */ sw $t9, %lo(D_801263E0)($at)
/* 099EE4 800992E4 3C038012 */ lui $v1, %hi(D_801263F8) # $v1, 0x8012
/* 099EE8 800992E8 246363F8 */ addiu $v1, %lo(D_801263F8) # addiu $v1, $v1, 0x63f8
/* 099EEC 800992EC 01601025 */ move $v0, $t3
.L800992F0:
/* 099EF0 800992F0 8C4E0054 */ lw $t6, 0x54($v0)
/* 099EF4 800992F4 8C6F0000 */ lw $t7, ($v1)
/* 099EF8 800992F8 3C19800E */ lui $t9, %hi(D_800E0FE4) # $t9, 0x800e
/* 099EFC 800992FC 01CFC021 */ addu $t8, $t6, $t7
/* 099F00 80099300 AC580054 */ sw $t8, 0x54($v0)
/* 099F04 80099304 8F390FE4 */ lw $t9, %lo(D_800E0FE4)($t9)
/* 099F08 80099308 24A50001 */ addiu $a1, $a1, 1
/* 099F0C 8009930C 00B9082A */ slt $at, $a1, $t9
/* 099F10 80099310 24630004 */ addiu $v1, $v1, 4
/* 099F14 80099314 1420FFF6 */ bnez $at, .L800992F0
/* 099F18 80099318 24420018 */ addiu $v0, $v0, 0x18
/* 099F1C 8009931C 100000B3 */ b .L800995EC
/* 099F20 80099320 8FBF001C */ lw $ra, 0x1c($sp)
.L80099324:
/* 099F24 80099324 8CAD0000 */ lw $t5, ($a1)
/* 099F28 80099328 00000000 */ nop
/* 099F2C 8009932C 01A47021 */ addu $t6, $t5, $a0
/* 099F30 80099330 29C1001F */ slti $at, $t6, 0x1f
/* 099F34 80099334 142000AC */ bnez $at, .L800995E8
/* 099F38 80099338 ACAE0000 */ sw $t6, ($a1)
/* 099F3C 8009933C 0C026580 */ jal func_80099600
/* 099F40 80099340 AFAB002C */ sw $t3, 0x2c($sp)
/* 099F44 80099344 0C031588 */ jal close_dialogue_box
/* 099F48 80099348 24040007 */ li $a0, 7
/* 099F4C 8009934C 0C031525 */ jal assign_dialogue_box_id
/* 099F50 80099350 24040007 */ li $a0, 7
/* 099F54 80099354 3C18800E */ lui $t8, %hi(gTrophyRaceRound) # $t8, 0x800e
/* 099F58 80099358 8F180FEC */ lw $t8, %lo(gTrophyRaceRound)($t8)
/* 099F5C 8009935C 8FAB002C */ lw $t3, 0x2c($sp)
/* 099F60 80099360 2B010004 */ slti $at, $t8, 4
/* 099F64 80099364 10200005 */ beqz $at, .L8009937C
/* 099F68 80099368 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e
/* 099F6C 8009936C 0C0204F4 */ jal menu_init
/* 099F70 80099370 24040014 */ li $a0, 20
/* 099F74 80099374 1000009D */ b .L800995EC
/* 099F78 80099378 8FBF001C */ lw $ra, 0x1c($sp)
.L8009937C:
/* 099F7C 8009937C 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3)
/* 099F80 80099380 00001825 */ move $v1, $zero
/* 099F84 80099384 18E0002B */ blez $a3, .L80099434
/* 099F88 80099388 00002825 */ move $a1, $zero
/* 099F8C 8009938C 3C068012 */ lui $a2, %hi(D_80126420) # $a2, 0x8012
/* 099F90 80099390 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012
/* 099F94 80099394 3C088012 */ lui $t0, %hi(D_80126430) # $t0, 0x8012
/* 099F98 80099398 8FAC0034 */ lw $t4, 0x34($sp)
/* 099F9C 8009939C 25086430 */ addiu $t0, %lo(D_80126430) # addiu $t0, $t0, 0x6430
/* 099FA0 800993A0 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438
/* 099FA4 800993A4 24C66420 */ addiu $a2, %lo(D_80126420) # addiu $a2, $a2, 0x6420
/* 099FA8 800993A8 24090018 */ li $t1, 24
.L800993AC:
/* 099FAC 800993AC 90D90000 */ lbu $t9, ($a2)
/* 099FB0 800993B0 01056821 */ addu $t5, $t0, $a1
/* 099FB4 800993B4 1320001A */ beqz $t9, .L80099420
/* 099FB8 800993B8 00000000 */ nop
/* 099FBC 800993BC 91AE0000 */ lbu $t6, ($t5)
/* 099FC0 800993C0 0143C021 */ addu $t8, $t2, $v1
/* 099FC4 800993C4 01C90019 */ multu $t6, $t1
/* 099FC8 800993C8 010C6821 */ addu $t5, $t0, $t4
/* 099FCC 800993CC 00007812 */ mflo $t7
/* 099FD0 800993D0 016F2021 */ addu $a0, $t3, $t7
/* 099FD4 800993D4 80820059 */ lb $v0, 0x59($a0)
/* 099FD8 800993D8 14600005 */ bnez $v1, .L800993F0
/* 099FDC 800993DC 00000000 */ nop
/* 099FE0 800993E0 00A06025 */ move $t4, $a1
/* 099FE4 800993E4 A3020000 */ sb $v0, ($t8)
/* 099FE8 800993E8 1000000D */ b .L80099420
/* 099FEC 800993EC 24630001 */ addiu $v1, $v1, 1
.L800993F0:
/* 099FF0 800993F0 91AE0000 */ lbu $t6, ($t5)
/* 099FF4 800993F4 8C990054 */ lw $t9, 0x54($a0)
/* 099FF8 800993F8 01C90019 */ multu $t6, $t1
/* 099FFC 800993FC 01437021 */ addu $t6, $t2, $v1
/* 09A000 80099400 00007812 */ mflo $t7
/* 09A004 80099404 016FC021 */ addu $t8, $t3, $t7
/* 09A008 80099408 8F0D0054 */ lw $t5, 0x54($t8)
/* 09A00C 8009940C 00000000 */ nop
/* 09A010 80099410 172D0003 */ bne $t9, $t5, .L80099420
/* 09A014 80099414 00000000 */ nop
/* 09A018 80099418 A1C20000 */ sb $v0, ($t6)
/* 09A01C 8009941C 24630001 */ addiu $v1, $v1, 1
.L80099420:
/* 09A020 80099420 24A50001 */ addiu $a1, $a1, 1
/* 09A024 80099424 00A7082A */ slt $at, $a1, $a3
/* 09A028 80099428 1420FFE0 */ bnez $at, .L800993AC
/* 09A02C 8009942C 24C60001 */ addiu $a2, $a2, 1
/* 09A030 80099430 AFAC0034 */ sw $t4, 0x34($sp)
.L80099434:
/* 09A034 80099434 3C0F800E */ lui $t7, %hi(gNumberOfActivePlayers) # $t7, 0x800e
/* 09A038 80099438 8DEFF4BC */ lw $t7, %lo(gNumberOfActivePlayers)($t7)
/* 09A03C 8009943C 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012
/* 09A040 80099440 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A044 80099444 24010001 */ li $at, 1
/* 09A048 80099448 15E1000C */ bne $t7, $at, .L8009947C
/* 09A04C 8009944C 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438
/* 09A050 80099450 AFA30048 */ sw $v1, 0x48($sp)
/* 09A054 80099454 AFAB002C */ sw $t3, 0x2c($sp)
/* 09A058 80099458 0C027B20 */ jal is_in_two_player_adventure
/* 09A05C 8009945C AFAC0034 */ sw $t4, 0x34($sp)
/* 09A060 80099460 8FA30048 */ lw $v1, 0x48($sp)
/* 09A064 80099464 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012
/* 09A068 80099468 8FAB002C */ lw $t3, 0x2c($sp)
/* 09A06C 8009946C 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A070 80099470 14400002 */ bnez $v0, .L8009947C
/* 09A074 80099474 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438
/* 09A078 80099478 00001825 */ move $v1, $zero
.L8009947C:
/* 09A07C 8009947C 2418FFFF */ li $t8, -1
/* 09A080 80099480 0143C821 */ addu $t9, $t2, $v1
/* 09A084 80099484 A3380000 */ sb $t8, ($t9)
/* 09A088 80099488 3C0D800E */ lui $t5, %hi(gIsInTracksMode) # $t5, 0x800e
/* 09A08C 8009948C 8DADF4B8 */ lw $t5, %lo(gIsInTracksMode)($t5)
/* 09A090 80099490 24010001 */ li $at, 1
/* 09A094 80099494 15A1000C */ bne $t5, $at, .L800994C8
/* 09A098 80099498 240F0001 */ li $t7, 1
/* 09A09C 8009949C 29810003 */ slti $at, $t4, 3
/* 09A0A0 800994A0 14200007 */ bnez $at, .L800994C0
/* 09A0A4 800994A4 240E0105 */ li $t6, 261
/* 09A0A8 800994A8 2404000F */ li $a0, 15
/* 09A0AC 800994AC 0C0204F4 */ jal menu_init
/* 09A0B0 800994B0 AFAC0034 */ sw $t4, 0x34($sp)
/* 09A0B4 800994B4 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A0B8 800994B8 10000033 */ b .L80099588
/* 09A0BC 800994BC 29810003 */ slti $at, $t4, 3
.L800994C0:
/* 09A0C0 800994C0 10000030 */ b .L80099584
/* 09A0C4 800994C4 AFAE003C */ sw $t6, 0x3c($sp)
.L800994C8:
/* 09A0C8 800994C8 AFAF003C */ sw $t7, 0x3c($sp)
/* 09A0CC 800994CC 91640048 */ lbu $a0, 0x48($t3)
/* 09A0D0 800994D0 AFAC0034 */ sw $t4, 0x34($sp)
/* 09A0D4 800994D4 0C01AC75 */ jal get_hub_area_id
/* 09A0D8 800994D8 AFAB002C */ sw $t3, 0x2c($sp)
/* 09A0DC 800994DC 8FAB002C */ lw $t3, 0x2c($sp)
/* 09A0E0 800994E0 3C03800E */ lui $v1, %hi(D_800DF450) # $v1, 0x800e
/* 09A0E4 800994E4 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A0E8 800994E8 2463F450 */ addiu $v1, %lo(D_800DF450) # addiu $v1, $v1, -0xbb0
/* 09A0EC 800994EC A1620049 */ sb $v0, 0x49($t3)
/* 09A0F0 800994F0 80780000 */ lb $t8, ($v1)
/* 09A0F4 800994F4 00000000 */ nop
/* 09A0F8 800994F8 13000023 */ beqz $t8, .L80099588
/* 09A0FC 800994FC 29810003 */ slti $at, $t4, 3
/* 09A100 80099500 A0600000 */ sb $zero, ($v1)
/* 09A104 80099504 91790049 */ lbu $t9, 0x49($t3)
/* 09A108 80099508 29810003 */ slti $at, $t4, 3
/* 09A10C 8009950C 372D0200 */ ori $t5, $t9, 0x200
/* 09A110 80099510 1020001C */ beqz $at, .L80099584
/* 09A114 80099514 AFAD003C */ sw $t5, 0x3c($sp)
/* 09A118 80099518 91650048 */ lbu $a1, 0x48($t3)
/* 09A11C 8009951C 9564000E */ lhu $a0, 0xe($t3)
/* 09A120 80099520 24A5FFFF */ addiu $a1, $a1, -1
/* 09A124 80099524 00057040 */ sll $t6, $a1, 1
/* 09A128 80099528 24180003 */ li $t8, 3
/* 09A12C 8009952C 030C1023 */ subu $v0, $t8, $t4
/* 09A130 80099530 01C41807 */ srav $v1, $a0, $t6
/* 09A134 80099534 306F0003 */ andi $t7, $v1, 3
/* 09A138 80099538 30590003 */ andi $t9, $v0, 3
/* 09A13C 8009953C 01F9082A */ slt $at, $t7, $t9
/* 09A140 80099540 01C02825 */ move $a1, $t6
/* 09A144 80099544 1020000F */ beqz $at, .L80099584
/* 09A148 80099548 03201025 */ move $v0, $t9
/* 09A14C 8009954C 240D0003 */ li $t5, 3
/* 09A150 80099550 01CD7004 */ sllv $t6, $t5, $t6
/* 09A154 80099554 01C07827 */ not $t7, $t6
/* 09A158 80099558 008FC824 */ and $t9, $a0, $t7
/* 09A15C 8009955C 00A26804 */ sllv $t5, $v0, $a1
/* 09A160 80099560 A579000E */ sh $t9, 0xe($t3)
/* 09A164 80099564 032D7025 */ or $t6, $t9, $t5
/* 09A168 80099568 A56E000E */ sh $t6, 0xe($t3)
/* 09A16C 8009956C 0C027068 */ jal get_save_file_index
/* 09A170 80099570 AFAC0034 */ sw $t4, 0x34($sp)
/* 09A174 80099574 0C01BB12 */ jal safe_mark_write_save_file
/* 09A178 80099578 00402025 */ move $a0, $v0
/* 09A17C 8009957C 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A180 80099580 00000000 */ nop
.L80099584:
/* 09A184 80099584 29810003 */ slti $at, $t4, 3
.L80099588:
/* 09A188 80099588 10200015 */ beqz $at, .L800995E0
/* 09A18C 8009958C 2404001F */ li $a0, 31
/* 09A190 80099590 0C0078A7 */ jal get_misc_asset
/* 09A194 80099594 AFAC0034 */ sw $t4, 0x34($sp)
/* 09A198 80099598 3C0F800E */ lui $t7, %hi(gTrophyRaceWorldId) # $t7, 0x800e
/* 09A19C 8009959C 8DEF0FE8 */ lw $t7, %lo(gTrophyRaceWorldId)($t7)
/* 09A1A0 800995A0 8FAC0034 */ lw $t4, 0x34($sp)
/* 09A1A4 800995A4 000FC080 */ sll $t8, $t7, 2
/* 09A1A8 800995A8 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012
/* 09A1AC 800995AC 030FC023 */ subu $t8, $t8, $t7
/* 09A1B0 800995B0 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438
/* 09A1B4 800995B4 8FA6003C */ lw $a2, 0x3c($sp)
/* 09A1B8 800995B8 030C2821 */ addu $a1, $t8, $t4
/* 09A1BC 800995BC 24A5FFFD */ addiu $a1, $a1, -3
/* 09A1C0 800995C0 AFA0003C */ sw $zero, 0x3c($sp)
/* 09A1C4 800995C4 AFAA0014 */ sw $t2, 0x14($sp)
/* 09A1C8 800995C8 00402025 */ move $a0, $v0
/* 09A1CC 800995CC 00003825 */ move $a3, $zero
/* 09A1D0 800995D0 0C026AF6 */ jal func_8009ABD8
/* 09A1D4 800995D4 AFA00010 */ sw $zero, 0x10($sp)
/* 09A1D8 800995D8 0C0204F4 */ jal menu_init
/* 09A1DC 800995DC 24040017 */ li $a0, 23
.L800995E0:
/* 09A1E0 800995E0 3C01800E */ lui $at, %hi(gTrophyRaceWorldId) # $at, 0x800e
/* 09A1E4 800995E4 AC200FE8 */ sw $zero, %lo(gTrophyRaceWorldId)($at)
.L800995E8:
/* 09A1E8 800995E8 8FBF001C */ lw $ra, 0x1c($sp)
.L800995EC:
/* 09A1EC 800995EC 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012
/* 09A1F0 800995F0 8FA2003C */ lw $v0, 0x3c($sp)
/* 09A1F4 800995F4 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at)
/* 09A1F8 800995F8 03E00008 */ jr $ra
/* 09A1FC 800995FC 27BD0050 */ addiu $sp, $sp, 0x50
@@ -1,76 +0,0 @@
glabel free_sprite
/* 07D8B0 8007CCB0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 07D8B4 8007CCB4 AFB2001C */ sw $s2, 0x1c($sp)
/* 07D8B8 8007CCB8 00809025 */ move $s2, $a0
/* 07D8BC 8007CCBC AFBF0024 */ sw $ra, 0x24($sp)
/* 07D8C0 8007CCC0 AFB30020 */ sw $s3, 0x20($sp)
/* 07D8C4 8007CCC4 AFB10018 */ sw $s1, 0x18($sp)
/* 07D8C8 8007CCC8 10800036 */ beqz $a0, .L8007CDA4
/* 07D8CC 8007CCCC AFB00014 */ sw $s0, 0x14($sp)
/* 07D8D0 8007CCD0 848E0004 */ lh $t6, 4($a0)
/* 07D8D4 8007CCD4 3C038012 */ lui $v1, %hi(D_80126358) # $v1, 0x8012
/* 07D8D8 8007CCD8 25CFFFFF */ addiu $t7, $t6, -1
/* 07D8DC 8007CCDC A48F0004 */ sh $t7, 4($a0)
/* 07D8E0 8007CCE0 84980004 */ lh $t8, 4($a0)
/* 07D8E4 8007CCE4 00000000 */ nop
/* 07D8E8 8007CCE8 1F00002F */ bgtz $t8, .L8007CDA8
/* 07D8EC 8007CCEC 8FBF0024 */ lw $ra, 0x24($sp)
/* 07D8F0 8007CCF0 8C636358 */ lw $v1, %lo(D_80126358)($v1)
/* 07D8F4 8007CCF4 00001025 */ move $v0, $zero
/* 07D8F8 8007CCF8 1860002A */ blez $v1, .L8007CDA4
/* 07D8FC 8007CCFC 3C048012 */ lui $a0, %hi(gSpriteCache) # $a0, 0x8012
/* 07D900 8007CD00 8C84634C */ lw $a0, %lo(gSpriteCache)($a0)
/* 07D904 8007CD04 00000000 */ nop
/* 07D908 8007CD08 00409825 */ move $s3, $v0
.L8007CD0C:
/* 07D90C 8007CD0C 0013C8C0 */ sll $t9, $s3, 3
/* 07D910 8007CD10 00994021 */ addu $t0, $a0, $t9
/* 07D914 8007CD14 8D090004 */ lw $t1, 4($t0)
/* 07D918 8007CD18 03209825 */ move $s3, $t9
/* 07D91C 8007CD1C 1649001E */ bne $s2, $t1, .L8007CD98
/* 07D920 8007CD20 24420001 */ addiu $v0, $v0, 1
/* 07D924 8007CD24 864A0002 */ lh $t2, 2($s2)
/* 07D928 8007CD28 00008025 */ move $s0, $zero
/* 07D92C 8007CD2C 1940000C */ blez $t2, .L8007CD60
/* 07D930 8007CD30 00008825 */ move $s1, $zero
.L8007CD34:
/* 07D934 8007CD34 8E4B0008 */ lw $t3, 8($s2)
/* 07D938 8007CD38 00000000 */ nop
/* 07D93C 8007CD3C 01716021 */ addu $t4, $t3, $s1
/* 07D940 8007CD40 8D840000 */ lw $a0, ($t4)
/* 07D944 8007CD44 0C01ECAF */ jal free_texture
/* 07D948 8007CD48 00000000 */ nop
/* 07D94C 8007CD4C 864D0002 */ lh $t5, 2($s2)
/* 07D950 8007CD50 26100001 */ addiu $s0, $s0, 1
/* 07D954 8007CD54 020D082A */ slt $at, $s0, $t5
/* 07D958 8007CD58 1420FFF6 */ bnez $at, .L8007CD34
/* 07D95C 8007CD5C 26310004 */ addiu $s1, $s1, 4
.L8007CD60:
/* 07D960 8007CD60 0C01C450 */ jal free_from_memory_pool
/* 07D964 8007CD64 02402025 */ move $a0, $s2
/* 07D968 8007CD68 3C028012 */ lui $v0, %hi(gSpriteCache) # $v0, 0x8012
/* 07D96C 8007CD6C 2442634C */ addiu $v0, %lo(gSpriteCache) # addiu $v0, $v0, 0x634c
/* 07D970 8007CD70 8C4E0000 */ lw $t6, ($v0)
/* 07D974 8007CD74 2403FFFF */ li $v1, -1
/* 07D978 8007CD78 01D37821 */ addu $t7, $t6, $s3
/* 07D97C 8007CD7C ADE30000 */ sw $v1, ($t7)
/* 07D980 8007CD80 8C580000 */ lw $t8, ($v0)
/* 07D984 8007CD84 00000000 */ nop
/* 07D988 8007CD88 0313C821 */ addu $t9, $t8, $s3
/* 07D98C 8007CD8C 10000005 */ b .L8007CDA4
/* 07D990 8007CD90 AF230004 */ sw $v1, 4($t9)
/* 07D994 8007CD94 24420001 */ addiu $v0, $v0, 1
.L8007CD98:
/* 07D998 8007CD98 0043082A */ slt $at, $v0, $v1
/* 07D99C 8007CD9C 1420FFDB */ bnez $at, .L8007CD0C
/* 07D9A0 8007CDA0 00409825 */ move $s3, $v0
.L8007CDA4:
/* 07D9A4 8007CDA4 8FBF0024 */ lw $ra, 0x24($sp)
.L8007CDA8:
/* 07D9A8 8007CDA8 8FB00014 */ lw $s0, 0x14($sp)
/* 07D9AC 8007CDAC 8FB10018 */ lw $s1, 0x18($sp)
/* 07D9B0 8007CDB0 8FB2001C */ lw $s2, 0x1c($sp)
/* 07D9B4 8007CDB4 8FB30020 */ lw $s3, 0x20($sp)
/* 07D9B8 8007CDB8 03E00008 */ jr $ra
/* 07D9BC 8007CDBC 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,51 +0,0 @@
glabel free_texture
/* 07BEBC 8007B2BC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 07BEC0 8007B2C0 AFBF0014 */ sw $ra, 0x14($sp)
/* 07BEC4 8007B2C4 10800027 */ beqz $a0, .L8007B364
/* 07BEC8 8007B2C8 00803025 */ move $a2, $a0
/* 07BECC 8007B2CC 908E0005 */ lbu $t6, 5($a0)
/* 07BED0 8007B2D0 00000000 */ nop
/* 07BED4 8007B2D4 25CFFFFF */ addiu $t7, $t6, -1
/* 07BED8 8007B2D8 31F800FF */ andi $t8, $t7, 0xff
/* 07BEDC 8007B2DC 1F000021 */ bgtz $t8, .L8007B364
/* 07BEE0 8007B2E0 A08F0005 */ sb $t7, 5($a0)
/* 07BEE4 8007B2E4 3C048012 */ lui $a0, %hi(gNumberOfLoadedTextures) # $a0, 0x8012
/* 07BEE8 8007B2E8 8C846330 */ lw $a0, %lo(gNumberOfLoadedTextures)($a0)
/* 07BEEC 8007B2EC 00001025 */ move $v0, $zero
/* 07BEF0 8007B2F0 1880001C */ blez $a0, .L8007B364
/* 07BEF4 8007B2F4 3C058012 */ lui $a1, %hi(gTextureCache) # $a1, 0x8012
/* 07BEF8 8007B2F8 8CA56328 */ lw $a1, %lo(gTextureCache)($a1)
/* 07BEFC 8007B2FC 00000000 */ nop
/* 07BF00 8007B300 0002C8C0 */ sll $t9, $v0, 3
.L8007B304:
/* 07BF04 8007B304 00B94021 */ addu $t0, $a1, $t9
/* 07BF08 8007B308 8D090004 */ lw $t1, 4($t0)
/* 07BF0C 8007B30C 00000000 */ nop
/* 07BF10 8007B310 14C90011 */ bne $a2, $t1, .L8007B358
/* 07BF14 8007B314 24420001 */ addiu $v0, $v0, 1
/* 07BF18 8007B318 00C02025 */ move $a0, $a2
/* 07BF1C 8007B31C 0C01C450 */ jal free_from_memory_pool
/* 07BF20 8007B320 AFB90018 */ sw $t9, 0x18($sp)
/* 07BF24 8007B324 3C028012 */ lui $v0, %hi(gTextureCache) # $v0, 0x8012
/* 07BF28 8007B328 24426328 */ addiu $v0, %lo(gTextureCache) # addiu $v0, $v0, 0x6328
/* 07BF2C 8007B32C 8FA30018 */ lw $v1, 0x18($sp)
/* 07BF30 8007B330 8C4A0000 */ lw $t2, ($v0)
/* 07BF34 8007B334 2404FFFF */ li $a0, -1
/* 07BF38 8007B338 01435821 */ addu $t3, $t2, $v1
/* 07BF3C 8007B33C AD640000 */ sw $a0, ($t3)
/* 07BF40 8007B340 8C4C0000 */ lw $t4, ($v0)
/* 07BF44 8007B344 00000000 */ nop
/* 07BF48 8007B348 01836821 */ addu $t5, $t4, $v1
/* 07BF4C 8007B34C 10000005 */ b .L8007B364
/* 07BF50 8007B350 ADA40004 */ sw $a0, 4($t5)
/* 07BF54 8007B354 24420001 */ addiu $v0, $v0, 1
.L8007B358:
/* 07BF58 8007B358 0044082A */ slt $at, $v0, $a0
/* 07BF5C 8007B35C 1420FFE9 */ bnez $at, .L8007B304
/* 07BF60 8007B360 0002C8C0 */ sll $t9, $v0, 3
.L8007B364:
/* 07BF64 8007B364 8FBF0014 */ lw $ra, 0x14($sp)
/* 07BF68 8007B368 27BD0028 */ addiu $sp, $sp, 0x28
/* 07BF6C 8007B36C 03E00008 */ jr $ra
/* 07BF70 8007B370 00000000 */ nop
+1 -1
View File
@@ -322,7 +322,7 @@ typedef struct Settings {
/* 0x004C */ Settings4C *unk4C;
/* 0x0050 */ u32 filename;
/* 0x0054 */ Racer racers[8];
/* 0x0114 */ u8 timeTrialRacer;
/* 0x0114 */ s8 timeTrialRacer;
/* 0x0115 */ char unk115[2];
/* 0x0117 */ u8 display_times;
} Settings;
+17 -10
View File
@@ -10,6 +10,7 @@
#include "lib/src/libc/rmonPrintf.h"
#include "math_util.h"
#include "weather.h"
#include "lib/src/os/piint.h"
/************ .rodata ************/
@@ -135,21 +136,25 @@ Matrix D_801210A0;
/******************************/
#ifdef NON_EQUIVALENT
#ifdef NON_MATCHING
extern s32 D_B0000578;
/**
* Official Name: camInit
*/
void func_80065EA0(void) {
s32 i, j;
for (i = 0; i < 5; i++) {
D_80120D70[i] = &D_80120DA0[i];
};
s32 i;
s32 j;
u32 stat;
// This loop is not cooperating.
for (i = 0; i < 5; i++) { D_80120D70[i] = D_80120DA0 + i + i*0; }
for (j = 0; j < 8; j++) {
gActiveCameraID = j;
func_800663DC(200, 200, 200, 0, 0, 180);
};
gCutsceneCameraActive = FALSE;
}
gCutsceneCameraActive = FALSE;
gActiveCameraID = 0;
D_80120D1C = 0;
D_80120D20 = 0;
@@ -158,12 +163,14 @@ void func_80065EA0(void) {
D_80120D18 = 0;
gAdjustViewportHeight = 0;
gAntiPiracyViewport = 0;
while (IO_READ(PI_STATUS_REG) & PI_STATUS_ERROR) {
}
WAIT_ON_IOBUSY(stat);
//0xB0000578 is a direct read from the ROM as opposed to RAM
if ((D_B0000578 & 0xFFFF) != 0x8965) {
if (((D_B0000578 & 0xFFFF) & 0xFFFF) != 0x8965) {
gAntiPiracyViewport = TRUE;
}
guPerspectiveF(gPerspectiveMatrixF, &perspNorm, CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE);
f32_matrix_to_s16_matrix(gPerspectiveMatrixF, gPerspectiveMatrixS);
gCurCamFOV = CAMERA_DEFAULT_FOV;
+504 -77
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -656,8 +656,6 @@ extern char gRareCopyrightString[24];
extern char *D_800E1E10;
extern s32 D_800E1E14;
extern s32 D_800E1E18;
extern s32 D_800E1E1C;
extern s8 D_800E1E20[8];
@@ -721,6 +719,8 @@ extern s32 D_801269F0;
extern s32 gSelectedTrackX;
extern s32 gSelectedTrackY;
extern u8 *__ROM_END;
s32 get_random_number_from_range(s32, s32); // No file to pull from yet.
void func_8007FF88(void);
@@ -883,6 +883,8 @@ s32 menu_save_options_loop(s32 updateRate);
s32 menu_23_loop(s32 updateRate);
s32 menu_magic_codes_list_loop(s32 updateRate);
void menu_trophy_race_rankings_init(void);
void calculate_and_display_rom_checksum(void);
s32 menu_trophy_race_rankings_loop(s32 updateRate);
// Non Matching functions below here
void load_menu_text(s32 language); // Non Matching
@@ -891,7 +893,6 @@ s32 menu_audio_options_loop(s32 arg0);
s32 menu_options_loop(s32 updateRate);
s32 menu_controller_pak_loop(s32 updateRate);
void render_magic_codes_list_menu_text(s32 arg0);
void calculate_and_display_rom_checksum(void);
void randomise_ai_racer_slots(s32 arg0);
void menu_game_select_init(void);
void render_file_select_menu(s32 arg0);
@@ -910,7 +911,6 @@ void func_8009E3D0(void);
s32 menu_title_screen_loop(s32 updateRate);
s32 menu_magic_codes_loop(s32 updateRate);
s32 menu_results_loop(s32 updateRate);
s32 menu_trophy_race_rankings_loop(s32 updateRate);
s32 menu_credits_loop(s32 updateRate);
void func_8009CA60(s32 imageID);
void func_8007FFEC(s32 arg0);
@@ -943,6 +943,7 @@ s32 func_80086AFC(void);
s32 func_80087734(s32, s32);
void func_80085B9C(UNUSED s32 updateRate);
void func_80098774(s32);
void render_magic_codes_ui(s32 updateRate);
typedef enum MenuTextures {
/* 0x00 */ TEXTURE_UNK_00,
+1
View File
@@ -20,5 +20,6 @@ void func_80061C0C(Object* obj);
void free_object_model(ObjectModel *model); //Non Matching
void func_8005FF40(ObjectModel **modelPtr);
void func_80060910(ObjectModel *);
#endif
+14 -37
View File
@@ -2960,28 +2960,16 @@ GLOBAL_ASM("asm/non_matchings/objects/func_800159C8.s")
GLOBAL_ASM("asm/non_matchings/objects/func_80016500.s")
GLOBAL_ASM("asm/non_matchings/objects/func_80016748.s")
void func_80016BC4(Object *arg0) {
s32 var_s0;
s32 var_s1;
s32 *temp_v0;
s8 var_v1;
void func_80016BC4(Object *obj) {
s32 i;
arg0->unk5C->unk104 = 0;
func_8001709C(arg0);
func_8001709C(arg0);
var_s1 = 0;
var_v1 = arg0->segment.header->numberOfModelIds;
var_s0 = 0;
if (var_v1 > 0) {
do {
temp_v0 = (s32 *) *(arg0->unk68 + var_s0);
if (temp_v0 != NULL) {
func_8006017C(*temp_v0);
var_v1 = arg0->segment.header->numberOfModelIds;
}
var_s1 += 1;
var_s0 += 1;
} while (var_s1 < var_v1);
obj->unk5C->unk104 = 0;
func_8001709C(obj);
func_8001709C(obj);
for (i = 0; i < obj->segment.header->numberOfModelIds; i++) {
if (obj->unk68[i] != NULL) {
func_8006017C(obj->unk68[i]->objModel);
}
}
}
@@ -3237,7 +3225,7 @@ void func_8001B3C4(s32 arg0, s16 *playerId) {
D_800DC718 = 0;
free_tt_ghost_data();
D_800DC734 = 0;
mainTrackIds = get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS);
mainTrackIds = (s8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS);
trackIdCount = 0;
while (mainTrackIds[trackIdCount] != -1 && mainTrackIds[trackIdCount] != arg0) {
trackIdCount++;
@@ -4132,7 +4120,6 @@ s8 func_800214C4(void) {
}
s8 func_800214E4(Object *obj, s32 updateRate) {
s16 temp_v1;
s32 i;
Object_AnimatedObject *animObj;
@@ -4151,18 +4138,8 @@ s8 func_800214E4(Object *obj, s32 updateRate) {
}
if (animObj->unk36 <= 0) {
obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE;
i = 0;
if (D_8011AE78 > 0) {
temp_v1 = animObj->unk28;
if (temp_v1 != (s32) (*D_8011AE74)->properties.common.unk4) {
loop_11:
i++;
if (i < D_8011AE78) {
if (temp_v1 != (s32) D_8011AE74[i]->properties.common.unk4) {
goto loop_11;
}
}
}
for (i = 0; (i < D_8011AE78 && animObj->unk28 != D_8011AE74[i]->properties.common.unk4); i++) {
if (FALSE) {} //FAKEMATCH
}
func_8001EFA4(D_8011AE74[i], obj);
return 1;
@@ -4206,12 +4183,12 @@ f32 cubic_spline_interpolation(f32 *data, s32 index, f32 x, f32 *derivative) {
GLOBAL_ASM("asm/non_matchings/objects/func_8002277C.s")
f32 lerp(f32 *arg0, u32 arg1, f32 arg2) {
UNUSED f32 lerp(f32 *arg0, u32 arg1, f32 arg2) {
f32 result = arg0[arg1 + 1] + ((arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2);
return result;
}
f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) {
UNUSED f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) {
f32 new_var2;
f32 temp_f12;
f32 new_var;
+1 -1
View File
@@ -465,7 +465,7 @@ void func_80018CE0(Object* obj, f32 xPos, f32 yPos, f32 zPos, s32 updateRate);
s32 func_800185E4(s8, Object* obj, f32 xPos, f32 yPos, f32 zPos, f32* checkpointDistance, u8*); /* extern */
void func_80011134(Object *, s32);
Object *func_8002342C(f32 x, f32 z);
void func_8006017C(s32);
void func_8006017C(ObjectModel *);
void func_80012F94(Object *);
void render_3d_model(Object *);
void func_800101AC(Object *, s32);
+4 -4
View File
@@ -127,7 +127,7 @@ u8 func_80072250(s32 arg0) {
void func_80072298(u8 arg0) {
D_801241E4 = arg0;
if (arg0 != 0) {
if (arg0) {
gRumbleDetectionTimer = 0x79;
D_801241E6 = 0xF;
return;
@@ -192,10 +192,10 @@ void func_80072578(s16 controllerIndex, s16 arg1, s16 arg2) {
s16 index;
u8 new_var;
if (D_801241E4 != 0 && controllerIndex >= 0 && controllerIndex < 4) {
if (D_801241E4 && controllerIndex >= 0 && controllerIndex < 4) {
new_var = func_80072250(controllerIndex);
index = 0xFFFF;
index = index & new_var;
index &= new_var;
new_var = 1 << index;
D_801241E6 |= new_var;
D_801241E7 &= ~new_var;
@@ -1624,7 +1624,7 @@ void init_controller_paks(void) {
sControllerMesgQueue = get_si_mesg_queue();
sUnkMiscAsset19 = (s16 *)get_misc_asset(ASSET_MISC_19);
D_801241E6 = D_801241E7 = 0xF;
D_801241E4 = 1;
D_801241E4 = TRUE;
gRumbleDetectionTimer = 0;
D_800DE48C = 1;
sControllerPaksPresent = sRumblePaksPresent = 0;
+27 -42
View File
@@ -265,7 +265,7 @@ const char D_800E7C50[] = "TEXSPR Error: Tryed to deallocate non-existent sprite
s32 *gTextureAssetTable[2];
TextureCacheEntry *gTextureCache;
s32 *gTextureCache;
u8 *gCiPalettes;
s32 gNumberOfLoadedTextures;
@@ -275,7 +275,7 @@ s32 gCiPalettesSize;
s32 D_80126344;
s32 *gSpriteOffsetTable;
SpriteCacheEntry *gSpriteCache;
s32 *gSpriteCache;
Sprite *gCurrentSprite;
s32 D_80126354;
@@ -396,8 +396,8 @@ TextureHeader *load_texture(s32 arg0) {
arg0 = 0;
}
for (i = 0; i < gNumberOfLoadedTextures; i++) {
if (arg0 == gTextureCache[i].id) {
tex = gTextureCache[i].texture;
if (arg0 == gTextureCache[(i << 1)]) {
tex = gTextureCache[(i << 1) + 1];
tex->numberOfInstances++;
return tex;
}
@@ -429,15 +429,15 @@ TextureHeader *load_texture(s32 arg0) {
}
texIndex = -1;
for (i = 0; i < gNumberOfLoadedTextures; i++) {
if (gTextureCache[i].id == -1) {
if (gTextureCache[(i << 1)] == -1) {
texIndex = i;
}
}
if (texIndex == -1) {
texIndex = gNumberOfLoadedTextures++;
}
gTextureCache[texIndex].id = arg0;
gTextureCache[texIndex].texture = tex;
gTextureCache[(texIndex << 1)] = arg0;
gTextureCache[(texIndex << 1) + 1] = tex;
paletteOffset = -1;
if ((tex->format & 0xF) == TEX_FORMAT_CI4) {
if (D_80126344 == 0) {
@@ -479,33 +479,27 @@ TextureHeader *load_texture(s32 arg0) {
GLOBAL_ASM("asm/non_matchings/textures_sprites/load_texture.s")
#endif
#ifdef NON_MATCHING
/**
* The same difference preventing this from matching is the same as free_sprite
* This function frees textures
* Official Name: texFreeTexture
*/
void free_texture(TextureHeader *tex) {
s32 i;
s32 texId;
if (tex != NULL) {
tex->numberOfInstances--;
if (tex->numberOfInstances <= 0) {
if (tex != 0) {
if ((--tex->numberOfInstances) <= 0) {
for (i = 0; i < gNumberOfLoadedTextures; i++) {
if (tex == gTextureCache[i].texture) {
texId = -1;
if ((s32)tex == gTextureCache[(i << 1) + 1]) {
free_from_memory_pool(tex);
gTextureCache[i].id = texId;
gTextureCache[i].texture = (TextureHeader *) texId;
break;
gTextureCache[(i << 1)] = -1;
gTextureCache[(i << 1) + 1] = -1;
return;
}
}
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/textures_sprites/free_texture.s")
#endif
/**
* Set the colour tag that determines which memory pool textures will be loaded into.
@@ -516,15 +510,14 @@ void set_texture_colour_tag(s32 tagID) {
gTexColourTag = tagID;
}
UNUSED TextureHeader *func_8007B380(s32 arg0) {
UNUSED s32 func_8007B380(s32 arg0) {
if ((arg0 < 0) || (arg0 >= gNumberOfLoadedTextures)) {
return 0;
}
// Regalloc issue here
if (gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture == (TextureHeader *)-1) {
if (gTextureCache[(arg0 << 1) + 1] == -1) {
return 0;
}
return gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture;
return gTextureCache[(arg0 << 1) + 1];
}
/**
@@ -804,16 +797,14 @@ GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007BF34.s")
GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C12C.s")
Sprite *func_8007C52C(s32 arg0) {
Sprite *sprite;
if ((arg0 < 0) || (arg0 >= D_80126358)) {
return NULL;
}
// Fakematch! The shifts here is a hack to skip a register.
sprite = gSpriteCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].sprite;
if ((s32)sprite == -1) {
if (gSpriteCache[(arg0 << 1) + 1] == -1) {
return NULL;
}
return sprite;
return gSpriteCache[(arg0 << 1) + 1];
}
s32 get_texture_size_from_id(s32 id) {
@@ -881,14 +872,14 @@ UNUSED s32 func_8007C860(s32 spriteIndex) {
if ((spriteIndex < 0) || (spriteIndex >= gNumberOfLoadedTextures)) {
return -1;
}
return ((TextureCacheEntry *) ((s32*) gTextureCache + spriteIndex * 2))->id;
return gTextureCache[spriteIndex << 1];
}
UNUSED s32 func_8007C8A0(s32 spriteIndex) {
if ((spriteIndex < 0) || (spriteIndex >= D_80126358)) {
return -1;
}
return ((SpriteCacheEntry*) ((s32*) gSpriteCache + spriteIndex * 2))->id;
return gSpriteCache[spriteIndex << 1];
}
s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut) {
@@ -932,34 +923,28 @@ s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *
GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007CA68.s")
#ifdef NON_MATCHING
/* Official name: texFreeSprite */
void free_sprite(Sprite *sprite) {
s32 i;
s32 frame;
s32 spriteId;
if (sprite != NULL) {
sprite->numberOfInstances--;
if (sprite->numberOfInstances <= 0) {
for (i = 0; i < D_80126358; i++) {
if (sprite == gSpriteCache[i].sprite) {
if ((s32)sprite == gSpriteCache[(i << 1) + 1]) {
for (frame = 0; frame < sprite->numberOfFrames; frame++) {
free_texture(sprite->frames[frame]);
}
spriteId = -1;
free_from_memory_pool(sprite);
gSpriteCache[i].id = spriteId;
gSpriteCache[i].sprite = (Sprite *)spriteId;
gSpriteCache[(i << 1) + 0] = -1;
gSpriteCache[(i << 1) + 1] = -1; // ?
break;
}
}
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/textures_sprites/free_sprite.s")
#endif
#ifdef NON_MATCHING
void func_8007CDC0(Sprite *sprite1, Sprite *sprite2, s32 arg2) {
+2 -3
View File
@@ -121,6 +121,8 @@ void load_and_set_texture_no_offset(Gfx **dlist, TextureHeader *texhead, u32 fla
void func_8007BF1C(s32 arg0);
s32 func_8007EF64(s16 arg0);
void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 offset);
void free_sprite(Sprite *sprite);
void free_texture(TextureHeader *tex);
// There might be a file boundary here.
void tex_animate_texture(TextureHeader *texture, u32 *triangleBatchInfoFlags, s32 *arg2, s32 updateRate);
@@ -128,14 +130,11 @@ void func_8007F1E8(LevelHeader_70 *arg0);
void init_pulsating_light_data(PulsatingLightData *data);
void update_pulsating_light_data(PulsatingLightData *data, s32 timeDelta);
TextureHeader *func_8007B46C(TextureHeader *arg0, s32 arg1);
TextureHeader *load_texture(s32 arg0); // Non Matching
void free_texture(TextureHeader *tex); // Non Matching
s32 get_texture_size_from_id(s32 arg0); // Non Matching
s32 func_8007C860(s32 spriteIndex); // Non Matching
s32 load_sprite_info(s32 spriteID, s32 *numOfInstancesOut, s32 *unkOut,
s32 *numFramesOut, s32 *formatOut, s32 *sizeOut); // Non Matching
void free_sprite(Sprite *sprite); // Non Matching
void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching
void func_8007CA68(s32 spriteID, s32 arg1, s32 *arg2, s32 *arg3, s32 *arg4); // Non Matching
MemoryPoolSlot *func_8007C12C(s32 spriteID, s32 arg1); // Non Matching
+2
View File
@@ -8,6 +8,8 @@ compiler_type = "ido"
"OS_PHYSICAL_TO_K0" = "void *"
"_SHIFTL" = "unsigned int"
"G_IM_.*" = "unsigned int"
"KEEPLINEBREAK" = "void"
"IO_READ" = "volatile unsigned int *"
[decompme.compilers]
"./tools/ido-static-recomp/build/5.3/out/cc" = "ido5.3_irix"