mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
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:
@@ -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:
|
||||
|
||||
    Decomp progress: 60.91%
|
||||
    Decomp progress: 61.78%
|
||||
|
||||
    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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+8
-21
@@ -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,
|
||||
|
||||
@@ -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
@@ -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
@@ -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, ¬esFree) == 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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
+1
-1
Submodule tools/asm_processor updated: bbd86ea1fa...fed1e3ddb9
@@ -15,3 +15,5 @@ SI_STATUS_REG = 0xA4800018;
|
||||
|
||||
D_B0000574 = 0xB0000574;
|
||||
D_B0000578 = 0xB0000578;
|
||||
D_801299B0 = 0x801299B0;
|
||||
gEpcInfo = 0x80129800;
|
||||
Reference in New Issue
Block a user