We are racing in the rematch against Bubbler. (Lap 3/3) (#425)

* Work on documenting save file types

* render_rain_overlay WIP

* Update render_rain_overlay WIP

* WIP func_800AC21C

* Match func_80093D40

* func_8008F618 WIP

* Update asm_processor

* Fixed the cursed match!

* func_80094D28 WIP

* WIP

* func_80094D28 score 140

* Promote func_80094D28 to NON_MATCHING

* Match func_80095728

* Match func_80099E8C

* minor tweaks

* update README

* Fix NON_EQUIVALENT builds

* Forgot to label sounds
This commit is contained in:
Ryan Myers
2023-10-27 10:20:12 -04:00
committed by GitHub
parent 7b263bb268
commit 3b1e92c58b
18 changed files with 1174 additions and 2384 deletions
+10 -10
View File
@@ -5,9 +5,9 @@ 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 October 23, 2023, this is our current score:
As of October 27, 2023, this is our current score:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 60.91%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 61.78%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 33.66%
<!-- README_SCORE_SUMMARY_END -->
@@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) {
```
<!-- README_SCORE_BEGIN -->
As of October 13rd, 2023, this is our current score:
As of October 27th, 2023, this is our current score:
```
=======================================================
ADVENTURE ONE (ASM -> C Decompilation)
------------------- 60.91% Complete -------------------
# Decompiled functions: 1648
# GLOBAL_ASM remaining: 198
# NON_MATCHING functions: 11
# NON_EQUIVALENT WIP functions: 56
------------------- 61.78% Complete -------------------
# Decompiled functions: 1651
# GLOBAL_ASM remaining: 194
# NON_MATCHING functions: 12
# NON_EQUIVALENT WIP functions: 58
--------------------- Game Status ---------------------
Balloons: 30/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
-------------------------------------------------------
We are racing in the rematch against Bubbler. (Lap 1/3)
We are racing in the rematch against Bubbler. (Lap 3/3)
=======================================================
ADVENTURE TWO (Cleanup & Documentation)
------------------- 33.66% Complete -------------------
# Documented functions: 747
# Undocumented remaining: 822
# Undocumented remaining: 821
--------------------- Game Status ---------------------
Balloons: 17/47, Keys: 2/4, Trophies: 1/5
T.T. Amulets: 1/4, Wizpig Amulets: 1/4
-287
View File
@@ -1,287 +0,0 @@
glabel func_80093D40
/* 094940 80093D40 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 094944 80093D44 AFB3002C */ sw $s3, 0x2c($sp)
/* 094948 80093D48 3C13800E */ lui $s3, %hi(gMenuOptionCap) # $s3, 0x800e
/* 09494C 80093D4C 26730984 */ addiu $s3, %lo(gMenuOptionCap) # addiu $s3, $s3, 0x984
/* 094950 80093D50 8E620000 */ lw $v0, ($s3)
/* 094954 80093D54 AFB10024 */ sw $s1, 0x24($sp)
/* 094958 80093D58 AFBF0034 */ sw $ra, 0x34($sp)
/* 09495C 80093D5C AFB40030 */ sw $s4, 0x30($sp)
/* 094960 80093D60 AFB20028 */ sw $s2, 0x28($sp)
/* 094964 80093D64 AFB00020 */ sw $s0, 0x20($sp)
/* 094968 80093D68 AFA40048 */ sw $a0, 0x48($sp)
/* 09496C 80093D6C 00008825 */ move $s1, $zero
/* 094970 80093D70 18400013 */ blez $v0, .L80093DC0
/* 094974 80093D74 240800A0 */ li $t0, 160
/* 094978 80093D78 3C108012 */ lui $s0, %hi(gMenuOptionText) # $s0, 0x8012
/* 09497C 80093D7C 26106A40 */ addiu $s0, %lo(gMenuOptionText) # addiu $s0, $s0, 0x6a40
.L80093D80:
/* 094980 80093D80 8E040000 */ lw $a0, ($s0)
/* 094984 80093D84 00002825 */ move $a1, $zero
/* 094988 80093D88 00003025 */ move $a2, $zero
/* 09498C 80093D8C 0C031368 */ jal get_text_width
/* 094990 80093D90 AFA80038 */ sw $t0, 0x38($sp)
/* 094994 80093D94 8FA80038 */ lw $t0, 0x38($sp)
/* 094998 80093D98 24430008 */ addiu $v1, $v0, 8
/* 09499C 80093D9C 0103082A */ slt $at, $t0, $v1
/* 0949A0 80093DA0 10200002 */ beqz $at, .L80093DAC
/* 0949A4 80093DA4 00000000 */ nop
/* 0949A8 80093DA8 00604025 */ move $t0, $v1
.L80093DAC:
/* 0949AC 80093DAC 8E620000 */ lw $v0, ($s3)
/* 0949B0 80093DB0 26310001 */ addiu $s1, $s1, 1
/* 0949B4 80093DB4 0222082A */ slt $at, $s1, $v0
/* 0949B8 80093DB8 1420FFF1 */ bnez $at, .L80093D80
/* 0949BC 80093DBC 26100004 */ addiu $s0, $s0, 4
.L80093DC0:
/* 0949C0 80093DC0 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000
/* 0949C4 80093DC4 8DCE0300 */ lw $t6, %lo(osTvType)($t6)
/* 0949C8 80093DC8 00028900 */ sll $s1, $v0, 4
/* 0949CC 80093DCC 15C00003 */ bnez $t6, .L80093DDC
/* 0949D0 80093DD0 2631001C */ addiu $s1, $s1, 0x1c
/* 0949D4 80093DD4 10000002 */ b .L80093DE0
/* 0949D8 80093DD8 24120084 */ li $s2, 132
.L80093DDC:
/* 0949DC 80093DDC 24120078 */ li $s2, 120
.L80093DE0:
/* 0949E0 80093DE0 24040007 */ li $a0, 7
/* 0949E4 80093DE4 0C0315B4 */ jal clear_dialogue_box_open_flag
/* 0949E8 80093DE8 AFA80038 */ sw $t0, 0x38($sp)
/* 0949EC 80093DEC 0C031525 */ jal assign_dialogue_box_id
/* 0949F0 80093DF0 24040007 */ li $a0, 7
/* 0949F4 80093DF4 8FA80038 */ lw $t0, 0x38($sp)
/* 0949F8 80093DF8 00118043 */ sra $s0, $s1, 1
/* 0949FC 80093DFC 0212C021 */ addu $t8, $s0, $s2
/* 094A00 80093E00 240F00A0 */ li $t7, 160
/* 094A04 80093E04 00081043 */ sra $v0, $t0, 1
/* 094A08 80093E08 01E22823 */ subu $a1, $t7, $v0
/* 094A0C 80093E0C 244700A0 */ addiu $a3, $v0, 0xa0
/* 094A10 80093E10 AFB80010 */ sw $t8, 0x10($sp)
/* 094A14 80093E14 02503023 */ subu $a2, $s2, $s0
/* 094A18 80093E18 0C0313B7 */ jal set_current_dialogue_box_coords
/* 094A1C 80093E1C 24040007 */ li $a0, 7
/* 094A20 80093E20 3C11800E */ lui $s1, %hi(D_800E098C) # $s1, 0x800e
/* 094A24 80093E24 2631098C */ addiu $s1, %lo(D_800E098C) # addiu $s1, $s1, 0x98c
/* 094A28 80093E28 8E240000 */ lw $a0, ($s1)
/* 094A2C 80093E2C 0C01A93E */ jal get_player_id
/* 094A30 80093E30 00000000 */ nop
/* 094A34 80093E34 3C09800E */ lui $t1, %hi(D_800E0990) # $t1, 0x800e
/* 094A38 80093E38 25290990 */ addiu $t1, %lo(D_800E0990) # addiu $t1, $t1, 0x990
/* 094A3C 80093E3C 0002C880 */ sll $t9, $v0, 2
/* 094A40 80093E40 03291821 */ addu $v1, $t9, $t1
/* 094A44 80093E44 906A0003 */ lbu $t2, 3($v1)
/* 094A48 80093E48 90650000 */ lbu $a1, ($v1)
/* 094A4C 80093E4C 90660001 */ lbu $a2, 1($v1)
/* 094A50 80093E50 90670002 */ lbu $a3, 2($v1)
/* 094A54 80093E54 24040007 */ li $a0, 7
/* 094A58 80093E58 0C0313EF */ jal set_current_dialogue_background_colour
/* 094A5C 80093E5C AFAA0010 */ sw $t2, 0x10($sp)
/* 094A60 80093E60 24040007 */ li $a0, 7
/* 094A64 80093E64 0C0313DF */ jal set_dialogue_font
/* 094A68 80093E68 00002825 */ move $a1, $zero
/* 094A6C 80093E6C 24040007 */ li $a0, 7
/* 094A70 80093E70 24050080 */ li $a1, 128
/* 094A74 80093E74 24060080 */ li $a2, 128
/* 094A78 80093E78 240700FF */ li $a3, 255
/* 094A7C 80093E7C 0C031414 */ jal set_current_text_background_colour
/* 094A80 80093E80 AFA00010 */ sw $zero, 0x10($sp)
/* 094A84 80093E84 8E240000 */ lw $a0, ($s1)
/* 094A88 80093E88 0C01A93E */ jal get_player_id
/* 094A8C 80093E8C 00000000 */ nop
/* 094A90 80093E90 3C0C800E */ lui $t4, %hi(D_800E09A0) # $t4, 0x800e
/* 094A94 80093E94 258C09A0 */ addiu $t4, %lo(D_800E09A0) # addiu $t4, $t4, 0x9a0
/* 094A98 80093E98 00025880 */ sll $t3, $v0, 2
/* 094A9C 80093E9C 016C1821 */ addu $v1, $t3, $t4
/* 094AA0 80093EA0 906D0003 */ lbu $t5, 3($v1)
/* 094AA4 80093EA4 90650000 */ lbu $a1, ($v1)
/* 094AA8 80093EA8 90660001 */ lbu $a2, 1($v1)
/* 094AAC 80093EAC 90670002 */ lbu $a3, 2($v1)
/* 094AB0 80093EB0 240E00FF */ li $t6, 255
/* 094AB4 80093EB4 AFAE0014 */ sw $t6, 0x14($sp)
/* 094AB8 80093EB8 24040007 */ li $a0, 7
/* 094ABC 80093EBC 0C031400 */ jal set_current_text_colour
/* 094AC0 80093EC0 AFAD0010 */ sw $t5, 0x10($sp)
/* 094AC4 80093EC4 3C148012 */ lui $s4, %hi(gOptionBlinkTimer) # $s4, 0x8012
/* 094AC8 80093EC8 8E9463BC */ lw $s4, %lo(gOptionBlinkTimer)($s4)
/* 094ACC 80093ECC 3C12800E */ lui $s2, %hi(gMenuSubOption) # $s2, 0x800e
/* 094AD0 80093ED0 001478C0 */ sll $t7, $s4, 3
/* 094AD4 80093ED4 29E10100 */ slti $at, $t7, 0x100
/* 094AD8 80093ED8 14200003 */ bnez $at, .L80093EE8
/* 094ADC 80093EDC 01E0A025 */ move $s4, $t7
/* 094AE0 80093EE0 241801FF */ li $t8, 511
/* 094AE4 80093EE4 030FA023 */ subu $s4, $t8, $t7
.L80093EE8:
/* 094AE8 80093EE8 26520988 */ addiu $s2, %lo(gMenuSubOption) # addiu $s2, $s2, 0x988
/* 094AEC 80093EEC 8E590000 */ lw $t9, ($s2)
/* 094AF0 80093EF0 24040007 */ li $a0, 7
/* 094AF4 80093EF4 13200060 */ beqz $t9, .L80094078
/* 094AF8 80093EF8 24058000 */ li $a1, -32768
/* 094AFC 80093EFC 3C09800E */ lui $t1, %hi(gTrophyRaceWorldId) # $t1, 0x800e
/* 094B00 80093F00 8D290FE8 */ lw $t1, %lo(gTrophyRaceWorldId)($t1)
/* 094B04 80093F04 24040007 */ li $a0, 7
/* 094B08 80093F08 1120000F */ beqz $t1, .L80093F48
/* 094B0C 80093F0C 24058000 */ li $a1, -32768
/* 094B10 80093F10 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e
/* 094B14 80093F14 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2)
/* 094B18 80093F18 2611FFE6 */ addiu $s1, $s0, -0x1a
/* 094B1C 80093F1C 8D470208 */ lw $a3, 0x208($t2)
/* 094B20 80093F20 240B0001 */ li $t3, 1
/* 094B24 80093F24 240C000C */ li $t4, 12
/* 094B28 80093F28 AFAC0014 */ sw $t4, 0x14($sp)
/* 094B2C 80093F2C AFAB0010 */ sw $t3, 0x10($sp)
/* 094B30 80093F30 26260008 */ addiu $a2, $s1, 8
/* 094B34 80093F34 24040007 */ li $a0, 7
/* 094B38 80093F38 0C03145A */ jal render_dialogue_text
/* 094B3C 80093F3C 24058000 */ li $a1, -32768
/* 094B40 80093F40 1000000C */ b .L80093F74
/* 094B44 80093F44 8E580000 */ lw $t8, ($s2)
.L80093F48:
/* 094B48 80093F48 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e
/* 094B4C 80093F4C 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5)
/* 094B50 80093F50 2611FFE6 */ addiu $s1, $s0, -0x1a
/* 094B54 80093F54 8DA70210 */ lw $a3, 0x210($t5)
/* 094B58 80093F58 240E0001 */ li $t6, 1
/* 094B5C 80093F5C 240F000C */ li $t7, 12
/* 094B60 80093F60 AFAF0014 */ sw $t7, 0x14($sp)
/* 094B64 80093F64 AFAE0010 */ sw $t6, 0x10($sp)
/* 094B68 80093F68 0C03145A */ jal render_dialogue_text
/* 094B6C 80093F6C 26260008 */ addiu $a2, $s1, 8
/* 094B70 80093F70 8E580000 */ lw $t8, ($s2)
.L80093F74:
/* 094B74 80093F74 24010001 */ li $at, 1
/* 094B78 80093F78 1701000B */ bne $t8, $at, .L80093FA8
/* 094B7C 80093F7C 24040007 */ li $a0, 7
/* 094B80 80093F80 241900FF */ li $t9, 255
/* 094B84 80093F84 AFB90014 */ sw $t9, 0x14($sp)
/* 094B88 80093F88 24040007 */ li $a0, 7
/* 094B8C 80093F8C 240500FF */ li $a1, 255
/* 094B90 80093F90 240600FF */ li $a2, 255
/* 094B94 80093F94 240700FF */ li $a3, 255
/* 094B98 80093F98 0C031400 */ jal set_current_text_colour
/* 094B9C 80093F9C AFB40010 */ sw $s4, 0x10($sp)
/* 094BA0 80093FA0 10000008 */ b .L80093FC4
/* 094BA4 80093FA4 00000000 */ nop
.L80093FA8:
/* 094BA8 80093FA8 240900FF */ li $t1, 255
/* 094BAC 80093FAC AFA90014 */ sw $t1, 0x14($sp)
/* 094BB0 80093FB0 240500FF */ li $a1, 255
/* 094BB4 80093FB4 240600FF */ li $a2, 255
/* 094BB8 80093FB8 240700FF */ li $a3, 255
/* 094BBC 80093FBC 0C031400 */ jal set_current_text_colour
/* 094BC0 80093FC0 AFA00010 */ sw $zero, 0x10($sp)
.L80093FC4:
/* 094BC4 80093FC4 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e
/* 094BC8 80093FC8 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2)
/* 094BCC 80093FCC 240B0001 */ li $t3, 1
/* 094BD0 80093FD0 8D470218 */ lw $a3, 0x218($t2)
/* 094BD4 80093FD4 240C000C */ li $t4, 12
/* 094BD8 80093FD8 AFAC0014 */ sw $t4, 0x14($sp)
/* 094BDC 80093FDC AFAB0010 */ sw $t3, 0x10($sp)
/* 094BE0 80093FE0 24040007 */ li $a0, 7
/* 094BE4 80093FE4 24058000 */ li $a1, -32768
/* 094BE8 80093FE8 0C03145A */ jal render_dialogue_text
/* 094BEC 80093FEC 2626001C */ addiu $a2, $s1, 0x1c
/* 094BF0 80093FF0 8E4D0000 */ lw $t5, ($s2)
/* 094BF4 80093FF4 24010002 */ li $at, 2
/* 094BF8 80093FF8 15A1000B */ bne $t5, $at, .L80094028
/* 094BFC 80093FFC 24040007 */ li $a0, 7
/* 094C00 80094000 240E00FF */ li $t6, 255
/* 094C04 80094004 AFAE0014 */ sw $t6, 0x14($sp)
/* 094C08 80094008 24040007 */ li $a0, 7
/* 094C0C 8009400C 240500FF */ li $a1, 255
/* 094C10 80094010 240600FF */ li $a2, 255
/* 094C14 80094014 240700FF */ li $a3, 255
/* 094C18 80094018 0C031400 */ jal set_current_text_colour
/* 094C1C 8009401C AFB40010 */ sw $s4, 0x10($sp)
/* 094C20 80094020 10000008 */ b .L80094044
/* 094C24 80094024 00000000 */ nop
.L80094028:
/* 094C28 80094028 240F00FF */ li $t7, 255
/* 094C2C 8009402C AFAF0014 */ sw $t7, 0x14($sp)
/* 094C30 80094030 240500FF */ li $a1, 255
/* 094C34 80094034 240600FF */ li $a2, 255
/* 094C38 80094038 240700FF */ li $a3, 255
/* 094C3C 8009403C 0C031400 */ jal set_current_text_colour
/* 094C40 80094040 AFA00010 */ sw $zero, 0x10($sp)
.L80094044:
/* 094C44 80094044 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e
/* 094C48 80094048 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8)
/* 094C4C 8009404C 24190001 */ li $t9, 1
/* 094C50 80094050 8F070154 */ lw $a3, 0x154($t8)
/* 094C54 80094054 2409000C */ li $t1, 12
/* 094C58 80094058 AFA90014 */ sw $t1, 0x14($sp)
/* 094C5C 8009405C AFB90010 */ sw $t9, 0x10($sp)
/* 094C60 80094060 24040007 */ li $a0, 7
/* 094C64 80094064 24058000 */ li $a1, -32768
/* 094C68 80094068 0C03145A */ jal render_dialogue_text
/* 094C6C 8009406C 2626002C */ addiu $a2, $s1, 0x2c
/* 094C70 80094070 10000035 */ b .L80094148
/* 094C74 80094074 00000000 */ nop
.L80094078:
/* 094C78 80094078 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e
/* 094C7C 8009407C 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2)
/* 094C80 80094080 8E2B0000 */ lw $t3, ($s1)
/* 094C84 80094084 8D470214 */ lw $a3, 0x214($t2)
/* 094C88 80094088 240D000C */ li $t5, 12
/* 094C8C 8009408C 256C0001 */ addiu $t4, $t3, 1
/* 094C90 80094090 AFAC0010 */ sw $t4, 0x10($sp)
/* 094C94 80094094 AFAD0014 */ sw $t5, 0x14($sp)
/* 094C98 80094098 0C03145A */ jal render_dialogue_text
/* 094C9C 8009409C 2406000C */ li $a2, 12
/* 094CA0 800940A0 8E6E0000 */ lw $t6, ($s3)
/* 094CA4 800940A4 00008825 */ move $s1, $zero
/* 094CA8 800940A8 19C00027 */ blez $t6, .L80094148
/* 094CAC 800940AC 24120020 */ li $s2, 32
/* 094CB0 800940B0 3C108012 */ lui $s0, %hi(gMenuOptionText) # $s0, 0x8012
/* 094CB4 800940B4 26106A40 */ addiu $s0, %lo(gMenuOptionText) # addiu $s0, $s0, 0x6a40
.L800940B8:
/* 094CB8 800940B8 3C0F8012 */ lui $t7, %hi(gMenuOption) # $t7, 0x8012
/* 094CBC 800940BC 8DEF6A68 */ lw $t7, %lo(gMenuOption)($t7)
/* 094CC0 800940C0 24040007 */ li $a0, 7
/* 094CC4 800940C4 162F000B */ bne $s1, $t7, .L800940F4
/* 094CC8 800940C8 240500FF */ li $a1, 255
/* 094CCC 800940CC 241800FF */ li $t8, 255
/* 094CD0 800940D0 AFB80014 */ sw $t8, 0x14($sp)
/* 094CD4 800940D4 24040007 */ li $a0, 7
/* 094CD8 800940D8 240500FF */ li $a1, 255
/* 094CDC 800940DC 240600FF */ li $a2, 255
/* 094CE0 800940E0 240700FF */ li $a3, 255
/* 094CE4 800940E4 0C031400 */ jal set_current_text_colour
/* 094CE8 800940E8 AFB40010 */ sw $s4, 0x10($sp)
/* 094CEC 800940EC 10000008 */ b .L80094110
/* 094CF0 800940F0 8E070000 */ lw $a3, ($s0)
.L800940F4:
/* 094CF4 800940F4 241900FF */ li $t9, 255
/* 094CF8 800940F8 AFB90014 */ sw $t9, 0x14($sp)
/* 094CFC 800940FC 240600FF */ li $a2, 255
/* 094D00 80094100 240700FF */ li $a3, 255
/* 094D04 80094104 0C031400 */ jal set_current_text_colour
/* 094D08 80094108 AFA00010 */ sw $zero, 0x10($sp)
/* 094D0C 8009410C 8E070000 */ lw $a3, ($s0)
.L80094110:
/* 094D10 80094110 24090001 */ li $t1, 1
/* 094D14 80094114 240A000C */ li $t2, 12
/* 094D18 80094118 AFAA0014 */ sw $t2, 0x14($sp)
/* 094D1C 8009411C AFA90010 */ sw $t1, 0x10($sp)
/* 094D20 80094120 24040007 */ li $a0, 7
/* 094D24 80094124 24058000 */ li $a1, -32768
/* 094D28 80094128 0C03145A */ jal render_dialogue_text
/* 094D2C 8009412C 02403025 */ move $a2, $s2
/* 094D30 80094130 8E6B0000 */ lw $t3, ($s3)
/* 094D34 80094134 26310001 */ addiu $s1, $s1, 1
/* 094D38 80094138 022B082A */ slt $at, $s1, $t3
/* 094D3C 8009413C 26100004 */ addiu $s0, $s0, 4
/* 094D40 80094140 1420FFDD */ bnez $at, .L800940B8
/* 094D44 80094144 26520010 */ addiu $s2, $s2, 0x10
.L80094148:
/* 094D48 80094148 0C03157D */ jal open_dialogue_box
/* 094D4C 8009414C 24040007 */ li $a0, 7
/* 094D50 80094150 8FBF0034 */ lw $ra, 0x34($sp)
/* 094D54 80094154 8FB00020 */ lw $s0, 0x20($sp)
/* 094D58 80094158 8FB10024 */ lw $s1, 0x24($sp)
/* 094D5C 8009415C 8FB20028 */ lw $s2, 0x28($sp)
/* 094D60 80094160 8FB3002C */ lw $s3, 0x2c($sp)
/* 094D64 80094164 8FB40030 */ lw $s4, 0x30($sp)
/* 094D68 80094168 03E00008 */ jr $ra
/* 094D6C 8009416C 27BD0048 */ addiu $sp, $sp, 0x48
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -224,7 +224,7 @@ glabel func_80074B34
/* 075A5C 80074E5C 8FA7004C */ lw $a3, 0x4c($sp)
/* 075A60 80074E60 1440000E */ bnez $v0, .L80074E9C
/* 075A64 80074E64 00000000 */ nop
/* 075A68 80074E68 0C01D2C7 */ jal func_80074B1C
/* 075A68 80074E68 0C01D2C7 */ jal get_ghost_data_file_size
/* 075A6C 80074E6C AFA7004C */ sw $a3, 0x4c($sp)
/* 075A70 80074E70 8FAE0038 */ lw $t6, 0x38($sp)
/* 075A74 80074E74 8FA7004C */ lw $a3, 0x4c($sp)
+1 -1
View File
@@ -335,7 +335,7 @@ typedef struct Settings {
/* 0x0054 */ Racer racers[8];
/* 0x0114 */ s8 timeTrialRacer;
/* 0x0115 */ s8 unk115[2];
/* 0x0117 */ u8 display_times;
/* 0x0117 */ s8 display_times;
} Settings;
/* Size: 8 bytes */
+2 -2
View File
@@ -464,7 +464,7 @@ void copy_viewports_to_stack(void) {
}
void camEnableUserView(s32 viewPortIndex, s32 arg1) {
if (arg1 != 0) {
if (arg1) {
gScreenViewports[viewPortIndex].flags |= VIEWPORT_EXTRA_BG;
} else {
gScreenViewports[viewPortIndex].flags |= VIEWPORT_UNK_02;
@@ -473,7 +473,7 @@ void camEnableUserView(s32 viewPortIndex, s32 arg1) {
}
void camDisableUserView(s32 viewPortIndex, s32 arg1) {
if (arg1 != 0) {
if (arg1) {
gScreenViewports[viewPortIndex].flags &= ~VIEWPORT_EXTRA_BG;
} else {
gScreenViewports[viewPortIndex].flags |= VIEWPORT_UNK_04;
+1007 -248
View File
File diff suppressed because it is too large Load Diff
+8 -21
View File
@@ -239,11 +239,6 @@ typedef struct SavefileInfo {
u32 pad8;
} SavefileInfo;
typedef struct unk800E153C {
TextureHeader *texture;
u32 unk4; // Flags?
} unk800E153C;
typedef struct MenuColour {
u8 red;
u8 green;
@@ -260,7 +255,7 @@ typedef struct unk80126A80 {
/* Size: 0x10 bytes */
typedef struct unk800861C8 {
/* 0x00 */ u8 unk0;
/* 0x00 */ u8 saveFileType; //SaveFileType enum
/* 0x01 */ u8 unk1;
/* 0x02 */ u8 unk2;
/* 0x03 */ u8 unk3;
@@ -279,15 +274,6 @@ typedef struct unk80126878 {
/* 0x08 */ s32 colourIndex;
} unk80126878;
/* Size: 0x10 bytes */
typedef struct unk800E0970 {
s8 unk0;
s8 unk1;
s8 unk2;
s8 unk3;
s8 pad4[12];
} unk800E0970;
/* Unknown size */
typedef struct unk80069D20 {
s16 unk0;
@@ -398,13 +384,13 @@ void func_80093A0C(void);
void n_alSynRemovePlayer(void);
void n_alSeqpDelete(void);
void assign_racer_portrait_textures(void);
void func_80094C14(s32 arg0);
void func_80094C14(s32 updateRate);
void func_80096790(void);
void menu_results_init(void);
void func_800976CC(void);
void decompress_filename_string(u32 compressedFilename, char *output, s32 length);
s32 compress_filename_string(char *filename, s32 length);
void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *fileName, s32 arg6);
void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *fileName, s32 fileNameLength);
void unload_big_font_4(void);
void func_80098208(void);
void draw_trophy_race_text(UNUSED s32 updateRate);
@@ -519,6 +505,9 @@ void func_8009C6D4(s32 arg0);
s32 func_80087734(s32 buttonsPressed, s32 yAxis);
void func_800853D0(unk800861C8 *arg0, s32 x, s32 y);
void render_track_select(s32 x, s32 y, char *hubName, char *trackName, s32 rectOpacity, s32 imageId, s32 copyViewPort, DrawTexture *arg7, s32 arg8);
void func_80093D40(UNUSED s32 updateRate);
s32 func_80095728(Gfx **dlist, MatrixS **matrices, Vertex **vertices, s32 updateRate);
void func_80099E8C(UNUSED s32 updateRate);
// Non Matching functions below here
void load_menu_text(s32 language); // Non Matching
@@ -545,15 +534,12 @@ void func_8007FFEC(s32 arg0);
void func_800871D8(s32 arg0);
SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1);
void set_D_800DD430(s8 arg0);
void func_80099E8C(s32 updateRate);
s32 func_800998E0(s32 arg0);
void func_80081218(void);
void func_80080580(Gfx **dlist, s32 startX, s32 startY, s32 width, s32 height, s32 borderWidth, s32 borderHeight, s32 colour, TextureHeader *tex);
void func_8008D8BC(s32 updateRate);
s32 func_80095728(Gfx **gfx, MatrixS **mtx, Vertex **vtx, s32 updateRate);
s32 func_8008F618(Gfx **dlist, MatrixS **mat);
void func_80093D40(UNUSED s32 updateRate);
s32 func_8008F618(Gfx **dlist, MatrixS **mtx);
void func_80080BC8(Gfx **);
void func_80080E90(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s32 borderWidth, s32 borderHeight, s32 colour0, s32 colour1, s32 colour2, s32 colour3);
void func_80084854(void);
@@ -562,6 +548,7 @@ void func_80085B9C(UNUSED s32 updateRate);
void func_80098774(s32);
void render_magic_codes_ui(s32 updateRate);
void func_80096978(s32, f32);
void func_80094D28(UNUSED s32 updateRate);
typedef enum MenuTextures {
/* 0x00 */ TEXTURE_UNK_00,
+1 -1
View File
@@ -5242,7 +5242,7 @@ void obj_loop_levelname(Object *obj, s32 updateRate) {
set_current_text_background_colour(4, 0, 0, 0, 0);
set_dialogue_font(4, FONT_COLOURFUL);
set_current_text_colour(4, 255, 255, 255, 0, (properties->opacity * 255) >> 8);
render_dialogue_text(4, (x2 - x1) >> 1, ((y2 - y1) >> 1) + 2, levelName, 1, 12);
render_dialogue_text(4, (x2 - x1) >> 1, ((y2 - y1) >> 1) + 2, levelName, 1, ALIGN_MIDDLE_CENTER);
open_dialogue_box(4);
}
}
+1 -1
View File
@@ -5668,7 +5668,7 @@ void free_tt_ghost_data(void) {
}
s32 func_80059B7C(s32 controllerIndex, s32 mapId, s16 arg2, s16 arg3, s16 arg4) {
return func_80075000(controllerIndex, (s16)mapId, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], (GhostHeader *) gGhostData[D_8011D59C]);
return func_80075000(controllerIndex, (s16) mapId, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], (GhostHeader *) gGhostData[D_8011D59C]);
}
void func_80059BF0(Object *obj, s32 updateRate) {
+2 -6
View File
@@ -1140,11 +1140,7 @@ void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 node
}
//Seems to only be called when used as an argument for func_800860A8. Effectively just returns 0x6700
//get_ghost_data_file_size()?
s32 func_80074B1C(void) {
//func_80074EB8 Makes extensive use out of 0x1100, and even does a * 6 to it.
//func_80075000 Uses 0x1100 once as well.
//Another possibility for 0x1100, seems to be from load_blinking_lights_texture which seems to do (0xF5101100 & 0xFFFF);
s32 get_ghost_data_file_size(void) {
int x = 0x1100;
return (&x)[0] * 6 + 0x100;
}
@@ -1252,7 +1248,7 @@ loop_10:
start_reading_controller_data(controllerIndex);
if (ret == CONTROLLER_PAK_CHANGED) {
if (get_free_space(controllerIndex, &bytesFree, &notesFree) == CONTROLLER_PAK_GOOD) {
if ((bytesFree < func_80074B1C()) || ((notesFree == 0))) {
if ((bytesFree < get_ghost_data_file_size()) || ((notesFree == 0))) {
return CONTROLLER_PAK_FULL;
}
/* Duplicate return node #48. Try simplifying control flow for better match */
+12 -8
View File
@@ -38,13 +38,17 @@ typedef enum {
typedef enum {
SAVE_FILE_TYPE_UNSET = -1,
SAVE_FILE_TYPE_UNK0, //Unused?
SAVE_FILE_TYPE_UNK1, //Unused?
SAVE_FILE_TYPE_UNK2, //Unused?
SAVE_FILE_TYPE_GAME_DATA,
SAVE_FILE_TYPE_TIME_DATA,
SAVE_FILE_TYPE_GHOST_DATA,
SAVE_FILE_TYPE_UNKNOWN //Possibly from another game?
SAVE_FILE_TYPE_UNK0, //Unused?
SAVE_FILE_TYPE_UNK1, //GAMD on cartridge save?
SAVE_FILE_TYPE_UNK2, //TIMD saved on cartridge>
SAVE_FILE_TYPE_GAME_DATA, //GAMD saved on cpak?
SAVE_FILE_TYPE_TIME_DATA, //TIMD saved on cpak>
SAVE_FILE_TYPE_GHOST_DATA, //GHSS
SAVE_FILE_TYPE_UNKNOWN, //Possibly from another game?
SAVE_FILE_TYPE_UNK7,
SAVE_FILE_TYPE_UNK8, //Empty Slot?
SAVE_FILE_TYPE_UNK9, //View Ghosts?
SAVE_FILE_TYPE_UNKA //Game Pak Bonuses?
} SaveFileType;
extern s8 *D_800DE440;
@@ -72,7 +76,7 @@ s32 read_eeprom_settings(u64 *eepromSettings);
s32 write_eeprom_settings(u64 *eepromSettings);
s16 calculate_ghost_header_checksum(GhostHeader *ghostHeader);
void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 nodeCount, u8 *dest);
s32 func_80074B1C(void);
s32 get_ghost_data_file_size(void);
SIDeviceStatus get_si_device_status(s32 controllerIndex);
s32 start_reading_controller_data(s32 controllerIndex);
SIDeviceStatus check_for_rumble_pak(s32 controllerIndex);
-9
View File
@@ -204,15 +204,6 @@ void update_object_stack_trace(s32 index, s32 value) {
}
}
#if 1
// Ok, so this is weird... If I remove the last GLOBAL_ASM in this file,
// even if it's not included anymore, it breaks get_lockup_status
// as it can't seem to find the externed statics?
#else
//Cursed as hell, it doesn't seem to matter what file this is pointing to really.
GLOBAL_ASM("asm/unknown_062930/func_80061D30.s")
#endif
/**
* Called as a check to see if render_epc_lock_up_display should be called.
*/
+118 -4
View File
@@ -12,6 +12,7 @@
#include "unknown_008C40.h"
#include "textures_sprites.h"
#include "math_util.h"
#include "objects.h"
/************ .rodata ************/
@@ -34,7 +35,7 @@ unk800E2850 D_800E28D8 = { NULL, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
Vertex *D_800E2904 = 0;
s32 D_800E2908 = 0;
s32 *D_800E290C = NULL;
s32 *D_800E2910 = NULL;
s16 *D_800E2910 = NULL;
Vertex *D_800E2914[2] = { NULL, NULL };
s32 *D_800E291C = NULL; // List of Ids
s32 D_800E2920 = 0;
@@ -124,8 +125,8 @@ unk800E2B4C D_800E2B4C[8] = {
};
unk800E2C2C gRainGfx[2] = {
{ 0, 0, 0x400, 0x400, 0x000A, 0xFFC4, NULL, 0x80, 0xFF, 0xFF, 0x80, 0x80, 0xFF, 0x80, 0x00 },
{ 0, 0, 0x600, 0x600, 0x0020, 0xFF40, NULL, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0x00 }
{ 0, 0, 0x400, 0x400, 0x000A, 0xFFC4, NULL, 128, 255, 255, 128, 128, 255, 128, 0 },
{ 0, 0, 0x600, 0x600, 0x0020, 0xFF40, NULL, 255, 255, 255, 0, 128, 255, 255, 0 }
};
s32 gWeatherType = WEATHER_SNOW;
@@ -364,7 +365,51 @@ void func_800AC0C8(s32 updateRate) {
}
}
#ifdef NON_EQUIVALENT
void func_800AC21C(void) {
s16 zPos; // sp74
s16 yPos;
s16 xPos;
Matrix sp64;
s32 sp58;
s32 sp54;
s32 sp50;
s32 i;
sp58 = (D_80127C1C->trans.x_position * 65536.0f);
sp54 = (D_80127C1C->trans.y_position * 65536.0f);
sp50 = (D_80127C1C->trans.z_position * 65536.0f);
D_800E2908 = 0;
for(i = 0; i < D_80127BB4; i++) {
sp64[0][0] = (f32) (((D_800E28D4[i].unk0 - sp58) & D_800E28D8.unk18) + D_800E28D8.unkC) * (1.0f / 65536.0f);
sp64[0][1] = (f32) (((D_800E28D4[i].unk4 - sp54) & D_800E28D8.unk1C) + D_800E28D8.unk10) * (1.0f / 65536.0f);
sp64[0][2] = (f32) (((D_800E28D4[i].unk8 - sp50) & D_800E28D8.unk20) + D_800E28D8.unk14) * (1.0f / 65536.0f);
f32_matrix_dot(D_80127C20, &sp64, &sp64);
zPos = sp64[0][2];
if ((zPos < D_80127BF8.unk0) && (D_80127BF8.unk4 < zPos)) {
xPos = sp64[0][0];
yPos = sp64[0][1];
D_800E2904[i].x = xPos - D_800E28D8.unk24;
D_800E2904[i].y = yPos + D_800E28D8.unk26;
D_800E2904[i].z = zPos;
D_800E2904[i+1].x = xPos + D_800E28D8.unk24;
D_800E2904[i+1].y = yPos + D_800E28D8.unk26;
D_800E2904[i+1].z = zPos;
D_800E2904[i+2].x = xPos + D_800E28D8.unk24;
D_800E2904[i+2].y = yPos - D_800E28D8.unk26;
D_800E2904[i+2].z = zPos;
D_800E2904[i+3].x = xPos - D_800E28D8.unk24;
D_800E2904[i+3].y = yPos - D_800E28D8.unk26;
D_800E2904[i+3].z = zPos;
D_800E2908 += 4;
D_800E2910[D_800E2908 >> 2] = i;
if ((!i) && (!i)){} // Fakematch
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/weather/func_800AC21C.s")
#endif
/**
* Load and execute the draw commands for the falling snowflakes, seen with snowy weather enabled.
@@ -674,5 +719,74 @@ void handle_rain_sound(UNUSED s32 updateRate) {
}
}
//https://decomp.me/scratch/PDAZs
#ifdef NON_EQUIVALENT
void render_rain_overlay(unk800E2C2C *arg0, s32 arg1) {
f32 zSins;
Triangle *sp64;
f32 zCoss;
s32 altVertical;
s32 altHorizontal;
s32 opacity;
s32 horizontal;
s32 vertical;
s32 temp_t9;
s32 temp_v1;
TextureHeader *tex;
Vertex *verts;
Triangle *tris;
tex = arg0->tex;
if (tex != NULL) {
horizontal = tex->width << 5;
vertical = tex->height << 5;
temp_v1 = (horizontal * 2) - 1;
temp_t9 = ((vertical * 2) - 1) & 0xFFFFFFFFFFFFFFFF;
arg0->unk0 = (normalise_time(arg0->unk8 * arg1) + arg0->unk0) & temp_v1;
arg0->unk2 = (normalise_time(arg0->unkA * arg1) + arg0->unk2) & temp_t9;
horizontal = (arg0->unk4 * horizontal) >> 8;
opacity = (arg0->unk16 * (((D_800E2C6C >> 2) * gLightningFrequency) >> 14)) >> 16;
if (opacity > 0) {
altVertical = arg0->unk2;
vertical = ((arg0->unk6 * vertical) >> 8) + arg0->unk2;
altHorizontal = (arg0->unk0 + ((horizontal * 6 * D_80127C1C->trans.y_rotation) >> 16)) & temp_v1;
horizontal += altHorizontal;
zSins = sins_f(D_80127C1C->trans.z_rotation);
zCoss = coss_f(D_80127C1C->trans.z_rotation);
verts = &D_800E2AAC[D_800E2C90];
verts[0].x = ((D_800E2A8C * zCoss) - (D_800E2A9C * zSins));
verts[0].y = ((D_800E2A8C * zSins) + (D_800E2A9C * zCoss));
verts[1].x = ((D_800E2A9C * zCoss) - (D_800E2A9C * zSins));
verts[1].y = ((D_800E2A9C * zSins) + (D_800E2A9C * zCoss));
verts[2].x = ((D_800E2A9C * zCoss) - (D_800E2AA8 * zSins));
verts[2].y = ((D_800E2A9C * zSins) + (D_800E2AA8 * zCoss));
verts[3].x = ((D_800E2AA8 * zCoss) - (D_800E2AA8 * zSins));
verts[3].y = ((D_800E2AA8 * zSins) + (D_800E2AA8 * zCoss));
tris = gCurrWeatherTriList;
tris[0].vertices = (0x40 << 24) | (0 << 16) | (1 << 8) | 2;
tris[0].uv0.u = altHorizontal;
tris[0].uv0.v = altVertical;
tris[0].uv1.u = horizontal;
tris[0].uv1.v = altVertical;
tris[0].uv2.u = horizontal;
tris[0].uv2.v = vertical;
tris[1].vertices = (0x40 << 24) | (2 << 16) | (3 << 8) | 0;
tris[1].uv0.u = horizontal;
tris[1].uv0.v = vertical;
tris[1].uv1.u = altHorizontal;
tris[1].uv1.v = vertical;
tris[1].uv2.u = altHorizontal;
tris[1].uv2.v = altVertical;
sp64 = tris + 0x20;
func_8007F594(&gCurrWeatherDisplayList, 0, COLOUR_RGBA32(arg0->primitiveRed, arg0->primitiveGreen, arg0->primitiveBlue, opacity), COLOUR_RGBA32(arg0->environmentRed, arg0->environmentGreen, arg0->environmentBlue, 0));
gDkrDmaDisplayList(gCurrWeatherDisplayList++, OS_PHYSICAL_TO_K0(tex->cmd), tex->numberOfCommands);
gSPVertexDKR(gCurrWeatherDisplayList++, OS_PHYSICAL_TO_K0(&D_800E2AAC[D_800E2C90]), 4, 0);
gSPPolygon(gCurrWeatherDisplayList++, OS_PHYSICAL_TO_K0(gCurrWeatherTriList), 2, 1);
gDPPipeSync(gCurrWeatherDisplayList++);
D_800E2C90 = (D_800E2C90 + 4) & 0xF;
gCurrWeatherTriList = sp64;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/weather/render_rain_overlay.s")
#endif
+8 -8
View File
@@ -57,19 +57,19 @@ typedef struct unk800E2B4C {
/* Size: 0x18 Bytes */
typedef struct unk800E2C2C {
s16 unk0;
s16 unk2;
s16 unk0; //tri - u?
s16 unk2; //tri - v?
s16 unk4;
s16 unk6;
s16 unk8;
s16 unkA;
TextureHeader *tex;
u8 unk10;
u8 unk11;
u8 unk12;
u8 unk13;
u8 unk14;
u8 unk15;
u8 primitiveRed;
u8 primitiveGreen;
u8 primitiveBlue;
u8 environmentRed;
u8 environmentGreen;
u8 environmentBlue;
u8 unk16;
u8 unk17;
} unk800E2C2C;
+2
View File
@@ -15,3 +15,5 @@ SI_STATUS_REG = 0xA4800018;
D_B0000574 = 0xB0000574;
D_B0000578 = 0xB0000578;
D_801299B0 = 0x801299B0;
gEpcInfo = 0x80129800;