From 3b1e92c58b4645784f687f480664fd79d8552813 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 27 Oct 2023 10:20:12 -0400 Subject: [PATCH] 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 --- README.md | 20 +- asm/non_matchings/menu/func_80093D40.s | 287 ----- asm/non_matchings/menu/func_80095728.s | 1150 ----------------- asm/non_matchings/menu/func_80099E8C.s | 626 --------- asm/non_matchings/save_data/func_80074B34.s | 2 +- include/structs.h | 2 +- src/camera.c | 4 +- src/menu.c | 1255 +++++++++++++++---- src/menu.h | 29 +- src/object_functions.c | 2 +- src/racer.c | 2 +- src/save_data.c | 8 +- src/save_data.h | 20 +- src/thread0_epc.c | 9 - src/weather.c | 122 +- src/weather.h | 16 +- tools/asm_processor | 2 +- undefined_syms.txt | 2 + 18 files changed, 1174 insertions(+), 2384 deletions(-) delete mode 100644 asm/non_matchings/menu/func_80093D40.s delete mode 100644 asm/non_matchings/menu/func_80095728.s delete mode 100644 asm/non_matchings/menu/func_80099E8C.s diff --git a/README.md b/README.md index c5889d66..40c2181d 100644 --- a/README.md +++ b/README.md @@ -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. -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% @@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) { ``` -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 diff --git a/asm/non_matchings/menu/func_80093D40.s b/asm/non_matchings/menu/func_80093D40.s deleted file mode 100644 index 864abc1f..00000000 --- a/asm/non_matchings/menu/func_80093D40.s +++ /dev/null @@ -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 - diff --git a/asm/non_matchings/menu/func_80095728.s b/asm/non_matchings/menu/func_80095728.s deleted file mode 100644 index db20f880..00000000 --- a/asm/non_matchings/menu/func_80095728.s +++ /dev/null @@ -1,1150 +0,0 @@ -.late_rodata -glabel jpt_800E8548 -.word L80095948, L80095964, L80095B34, L80095D30, L80095D50, L80095EA8, L80095EC8, L800964AC, L800964DC - -.text -glabel func_80095728 -/* 096328 80095728 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 09632C 8009572C AFBF0024 */ sw $ra, 0x24($sp) -/* 096330 80095730 AFA40058 */ sw $a0, 0x58($sp) -/* 096334 80095734 AFA5005C */ sw $a1, 0x5c($sp) -/* 096338 80095738 AFA60060 */ sw $a2, 0x60($sp) -/* 09633C 8009573C AFA70064 */ sw $a3, 0x64($sp) -/* 096340 80095740 AFA00054 */ sw $zero, 0x54($sp) -/* 096344 80095744 AFA00050 */ sw $zero, 0x50($sp) -/* 096348 80095748 AFA0004C */ sw $zero, 0x4c($sp) -/* 09634C 8009574C AFA00044 */ sw $zero, 0x44($sp) -/* 096350 80095750 8C8F0000 */ lw $t7, ($a0) -/* 096354 80095754 3C018012 */ lui $at, %hi(sMenuCurrDisplayList) # $at, 0x8012 -/* 096358 80095758 AC2F63A0 */ sw $t7, %lo(sMenuCurrDisplayList)($at) -/* 09635C 8009575C 8CB90000 */ lw $t9, ($a1) -/* 096360 80095760 3C018012 */ lui $at, %hi(sMenuCurrHudMat) # $at, 0x8012 -/* 096364 80095764 AC3963A8 */ sw $t9, %lo(sMenuCurrHudMat)($at) -/* 096368 80095768 8CCD0000 */ lw $t5, ($a2) -/* 09636C 8009576C 3C018012 */ lui $at, %hi(sMenuCurrHudVerts) # $at, 0x8012 -/* 096370 80095770 0C01BAA4 */ jal get_settings -/* 096374 80095774 AC2D63AC */ sw $t5, %lo(sMenuCurrHudVerts)($at) -/* 096378 80095778 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 09637C 8009577C 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 096380 80095780 AFA2002C */ sw $v0, 0x2c($sp) -/* 096384 80095784 15C00006 */ bnez $t6, .L800957A0 -/* 096388 80095788 3C0A800E */ lui $t2, %hi(gNumberOfActivePlayers) # $t2, 0x800e -/* 09638C 8009578C 240F001A */ li $t7, 26 -/* 096390 80095790 2418000C */ li $t8, 12 -/* 096394 80095794 AFAF0038 */ sw $t7, 0x38($sp) -/* 096398 80095798 10000003 */ b .L800957A8 -/* 09639C 8009579C AFB80034 */ sw $t8, 0x34($sp) -.L800957A0: -/* 0963A0 800957A0 AFA00038 */ sw $zero, 0x38($sp) -/* 0963A4 800957A4 AFA00034 */ sw $zero, 0x34($sp) -.L800957A8: -/* 0963A8 800957A8 8D4AF4BC */ lw $t2, %lo(gNumberOfActivePlayers)($t2) -/* 0963AC 800957AC 0C027B20 */ jal is_in_two_player_adventure -/* 0963B0 800957B0 AFAA0030 */ sw $t2, 0x30($sp) -/* 0963B4 800957B4 8FAA0030 */ lw $t2, 0x30($sp) -/* 0963B8 800957B8 10400002 */ beqz $v0, .L800957C4 -/* 0963BC 800957BC 3C198012 */ lui $t9, %hi(D_80126A90) # $t9, 0x8012 -/* 0963C0 800957C0 240A0002 */ li $t2, 2 -.L800957C4: -/* 0963C4 800957C4 8F396A90 */ lw $t9, %lo(D_80126A90)($t9) -/* 0963C8 800957C8 00000000 */ nop -/* 0963CC 800957CC 13200016 */ beqz $t9, .L80095828 -/* 0963D0 800957D0 00000000 */ nop -/* 0963D4 800957D4 0C006DE0 */ jal has_ghost_to_save -/* 0963D8 800957D8 AFAA0030 */ sw $t2, 0x30($sp) -/* 0963DC 800957DC 8FAA0030 */ lw $t2, 0x30($sp) -/* 0963E0 800957E0 10400010 */ beqz $v0, .L80095824 -/* 0963E4 800957E4 3C018012 */ lui $at, %hi(D_80126A90) # $at, 0x8012 -/* 0963E8 800957E8 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 -/* 0963EC 800957EC 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 -/* 0963F0 800957F0 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e -/* 0963F4 800957F4 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) -/* 0963F8 800957F8 8D230000 */ lw $v1, ($t1) -/* 0963FC 800957FC 3C0D8012 */ lui $t5, %hi(gResultOptionText) # $t5, 0x8012 -/* 096400 80095800 8C4E006C */ lw $t6, 0x6c($v0) -/* 096404 80095804 25AD6BF0 */ addiu $t5, %lo(gResultOptionText) # addiu $t5, $t5, 0x6bf0 -/* 096408 80095808 00036080 */ sll $t4, $v1, 2 -/* 09640C 8009580C 018D2021 */ addu $a0, $t4, $t5 -/* 096410 80095810 AC8EFFFC */ sw $t6, -4($a0) -/* 096414 80095814 8C4F0070 */ lw $t7, 0x70($v0) -/* 096418 80095818 24780001 */ addiu $t8, $v1, 1 -/* 09641C 8009581C AD380000 */ sw $t8, ($t1) -/* 096420 80095820 AC8F0000 */ sw $t7, ($a0) -.L80095824: -/* 096424 80095824 AC206A90 */ sw $zero, %lo(D_80126A90)($at) -.L80095828: -/* 096428 80095828 0C025297 */ jal func_80094A5C -/* 09642C 8009582C AFAA0030 */ sw $t2, 0x30($sp) -/* 096430 80095830 8FA40064 */ lw $a0, 0x64($sp) -/* 096434 80095834 0C025305 */ jal func_80094C14 -/* 096438 80095838 00000000 */ nop -/* 09643C 8009583C 3C19800E */ lui $t9, %hi(gMenuDelay) # $t9, 0x800e -/* 096440 80095840 8F39F47C */ lw $t9, %lo(gMenuDelay)($t9) -/* 096444 80095844 8FAA0030 */ lw $t2, 0x30($sp) -/* 096448 80095848 2B210014 */ slti $at, $t9, 0x14 -/* 09644C 8009584C 1020000E */ beqz $at, .L80095888 -/* 096450 80095850 3C0C8012 */ lui $t4, %hi(D_80126C28) # $t4, 0x8012 -/* 096454 80095854 818C6C28 */ lb $t4, %lo(D_80126C28)($t4) -/* 096458 80095858 3C0D8012 */ lui $t5, %hi(D_80126C54) # $t5, 0x8012 -/* 09645C 8009585C 1580000B */ bnez $t4, .L8009588C -/* 096460 80095860 00002025 */ move $a0, $zero -/* 096464 80095864 8DAD6C54 */ lw $t5, %lo(D_80126C54)($t5) -/* 096468 80095868 8FA40064 */ lw $a0, 0x64($sp) -/* 09646C 8009586C 05A1000D */ bgez $t5, .L800958A4 -/* 096470 80095870 00000000 */ nop -/* 096474 80095874 0C02534A */ jal func_80094D28 -/* 096478 80095878 AFAA0030 */ sw $t2, 0x30($sp) -/* 09647C 8009587C 8FAA0030 */ lw $t2, 0x30($sp) -/* 096480 80095880 10000008 */ b .L800958A4 -/* 096484 80095884 00000000 */ nop -.L80095888: -/* 096488 80095888 00002025 */ move $a0, $zero -.L8009588C: -/* 09648C 8009588C 00002825 */ move $a1, $zero -/* 096490 80095890 00003025 */ move $a2, $zero -/* 096494 80095894 0C01E05C */ jal func_80078170 -/* 096498 80095898 AFAA0030 */ sw $t2, 0x30($sp) -/* 09649C 8009589C 8FAA0030 */ lw $t2, 0x30($sp) -/* 0964A0 800958A0 00000000 */ nop -.L800958A4: -/* 0964A4 800958A4 0C026FC8 */ jal update_controller_sticks -/* 0964A8 800958A8 AFAA0030 */ sw $t2, 0x30($sp) -/* 0964AC 800958AC 3C0E8012 */ lui $t6, %hi(gIgnorePlayerInputTime) # $t6, 0x8012 -/* 0964B0 800958B0 8DCE63C4 */ lw $t6, %lo(gIgnorePlayerInputTime)($t6) -/* 0964B4 800958B4 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 -/* 0964B8 800958B8 8FAA0030 */ lw $t2, 0x30($sp) -/* 0964BC 800958BC 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 -/* 0964C0 800958C0 15C00014 */ bnez $t6, .L80095914 -/* 0964C4 800958C4 00001825 */ move $v1, $zero -/* 0964C8 800958C8 3C0F8012 */ lui $t7, %hi(D_80126C54) # $t7, 0x8012 -/* 0964CC 800958CC 8DEF6C54 */ lw $t7, %lo(D_80126C54)($t7) -/* 0964D0 800958D0 00000000 */ nop -/* 0964D4 800958D4 05E1000F */ bgez $t7, .L80095914 -/* 0964D8 800958D8 00000000 */ nop -/* 0964DC 800958DC 1940000D */ blez $t2, .L80095914 -/* 0964E0 800958E0 00002025 */ move $a0, $zero -.L800958E4: -/* 0964E4 800958E4 AFA30040 */ sw $v1, 0x40($sp) -/* 0964E8 800958E8 AFA40048 */ sw $a0, 0x48($sp) -/* 0964EC 800958EC 0C01A955 */ jal get_buttons_pressed_from_player -/* 0964F0 800958F0 AFAA0030 */ sw $t2, 0x30($sp) -/* 0964F4 800958F4 8FA40048 */ lw $a0, 0x48($sp) -/* 0964F8 800958F8 8FA30040 */ lw $v1, 0x40($sp) -/* 0964FC 800958FC 8FAA0030 */ lw $t2, 0x30($sp) -/* 096500 80095900 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 -/* 096504 80095904 24840001 */ addiu $a0, $a0, 1 -/* 096508 80095908 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 -/* 09650C 8009590C 148AFFF5 */ bne $a0, $t2, .L800958E4 -/* 096510 80095910 00621825 */ or $v1, $v1, $v0 -.L80095914: -/* 096514 80095914 3C068012 */ lui $a2, %hi(gMenuOptionCount) # $a2, 0x8012 -/* 096518 80095918 24C663E0 */ addiu $a2, %lo(gMenuOptionCount) # addiu $a2, $a2, 0x63e0 -/* 09651C 8009591C 8CD80000 */ lw $t8, ($a2) -/* 096520 80095920 00000000 */ nop -/* 096524 80095924 2F010009 */ sltiu $at, $t8, 9 -/* 096528 80095928 1020037A */ beqz $at, .L80096714 -/* 09652C 8009592C 0018C080 */ sll $t8, $t8, 2 -/* 096530 80095930 3C01800F */ lui $at, %hi(jpt_800E8548) # $at, 0x800f -/* 096534 80095934 00380821 */ addu $at, $at, $t8 -/* 096538 80095938 8C388548 */ lw $t8, %lo(jpt_800E8548)($at) -/* 09653C 8009593C 00000000 */ nop -/* 096540 80095940 03000008 */ jr $t8 -/* 096544 80095944 00000000 */ nop -glabel L80095948 -/* 096548 80095948 30799000 */ andi $t9, $v1, 0x9000 -/* 09654C 8009594C 13200371 */ beqz $t9, .L80096714 -/* 096550 80095950 24070001 */ li $a3, 1 -/* 096554 80095954 ACC70000 */ sw $a3, ($a2) -/* 096558 80095958 3C018012 */ lui $at, %hi(D_80126A94) # $at, 0x8012 -/* 09655C 8009595C 1000036D */ b .L80096714 -/* 096560 80095960 AC206A94 */ sw $zero, %lo(D_80126A94)($at) -glabel L80095964 -/* 096564 80095964 3C0C8012 */ lui $t4, %hi(D_80126A94) # $t4, 0x8012 -/* 096568 80095968 8D8C6A94 */ lw $t4, %lo(D_80126A94)($t4) -/* 09656C 8009596C 3C028012 */ lui $v0, %hi(gTrackSelectViewPortHalfY) # $v0, 0x8012 -/* 096570 80095970 2981003D */ slti $at, $t4, 0x3d -/* 096574 80095974 10200004 */ beqz $at, .L80095988 -/* 096578 80095978 00000000 */ nop -/* 09657C 8009597C 306D9000 */ andi $t5, $v1, 0x9000 -/* 096580 80095980 11A00364 */ beqz $t5, .L80096714 -/* 096584 80095984 00000000 */ nop -.L80095988: -/* 096588 80095988 8C426478 */ lw $v0, %lo(gTrackSelectViewPortHalfY)($v0) -/* 09658C 8009598C 24030005 */ li $v1, 5 -/* 096590 80095990 00027080 */ sll $t6, $v0, 2 -/* 096594 80095994 01C3001A */ div $zero, $t6, $v1 -/* 096598 80095998 00002025 */ move $a0, $zero -/* 09659C 8009599C 24050050 */ li $a1, 80 -/* 0965A0 800959A0 14600002 */ bnez $v1, .L800959AC -/* 0965A4 800959A4 00000000 */ nop -/* 0965A8 800959A8 0007000D */ break 7 -.L800959AC: -/* 0965AC 800959AC 2401FFFF */ li $at, -1 -/* 0965B0 800959B0 14610004 */ bne $v1, $at, .L800959C4 -/* 0965B4 800959B4 3C018000 */ lui $at, 0x8000 -/* 0965B8 800959B8 15C10002 */ bne $t6, $at, .L800959C4 -/* 0965BC 800959BC 00000000 */ nop -/* 0965C0 800959C0 0006000D */ break 6 -.L800959C4: -/* 0965C4 800959C4 240700F0 */ li $a3, 240 -/* 0965C8 800959C8 00007812 */ mflo $t7 -/* 0965CC 800959CC 004F3023 */ subu $a2, $v0, $t7 -/* 0965D0 800959D0 00000000 */ nop -/* 0965D4 800959D4 0043001A */ div $zero, $v0, $v1 -/* 0965D8 800959D8 14600002 */ bnez $v1, .L800959E4 -/* 0965DC 800959DC 00000000 */ nop -/* 0965E0 800959E0 0007000D */ break 7 -.L800959E4: -/* 0965E4 800959E4 2401FFFF */ li $at, -1 -/* 0965E8 800959E8 14610004 */ bne $v1, $at, .L800959FC -/* 0965EC 800959EC 3C018000 */ lui $at, 0x8000 -/* 0965F0 800959F0 14410002 */ bne $v0, $at, .L800959FC -/* 0965F4 800959F4 00000000 */ nop -/* 0965F8 800959F8 0006000D */ break 6 -.L800959FC: -/* 0965FC 800959FC 0000C012 */ mflo $t8 -/* 096600 80095A00 0302C821 */ addu $t9, $t8, $v0 -/* 096604 80095A04 0C019A50 */ jal resize_viewport -/* 096608 80095A08 AFB90010 */ sw $t9, 0x10($sp) -/* 09660C 80095A0C 3C02800E */ lui $v0, %hi(gMenuImageStack) # $v0, 0x800e -/* 096610 80095A10 2442F75C */ addiu $v0, %lo(gMenuImageStack) # addiu $v0, $v0, -0x8a4 -/* 096614 80095A14 8C4C0000 */ lw $t4, ($v0) -/* 096618 80095A18 44802000 */ mtc1 $zero, $f4 -/* 09661C 80095A1C 3C014210 */ li $at, 0x42100000 # 36.000000 -/* 096620 80095A20 E584008C */ swc1 $f4, 0x8c($t4) -/* 096624 80095A24 8C4D0000 */ lw $t5, ($v0) -/* 096628 80095A28 44813000 */ mtc1 $at, $f6 -/* 09662C 80095A2C 3C01800E */ lui $at, %hi(sMenuImageProperties+0x88) # $at, 0x800e -/* 096630 80095A30 E5A60090 */ swc1 $f6, 0x90($t5) -/* 096634 80095A34 8C4E0000 */ lw $t6, ($v0) -/* 096638 80095A38 C428F598 */ lwc1 $f8, %lo(sMenuImageProperties+0x88)($at) -/* 09663C 80095A3C 00000000 */ nop -/* 096640 80095A40 E5C80088 */ swc1 $f8, 0x88($t6) -/* 096644 80095A44 8FAF002C */ lw $t7, 0x2c($sp) -/* 096648 80095A48 00000000 */ nop -/* 09664C 80095A4C 91E40049 */ lbu $a0, 0x49($t7) -/* 096650 80095A50 0C01AC53 */ jal get_map_race_type -/* 096654 80095A54 00000000 */ nop -/* 096658 80095A58 30580040 */ andi $t8, $v0, 0x40 -/* 09665C 80095A5C 13000004 */ beqz $t8, .L80095A70 -/* 096660 80095A60 24190006 */ li $t9, 6 -/* 096664 80095A64 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096668 80095A68 1000032A */ b .L80096714 -/* 09666C 80095A6C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) -.L80095A70: -/* 096670 80095A70 8FA3002C */ lw $v1, 0x2c($sp) -/* 096674 80095A74 3C04800E */ lui $a0, %hi(D_800E0BEC) # $a0, 0x800e -/* 096678 80095A78 806C0117 */ lb $t4, 0x117($v1) -/* 09667C 80095A7C 24840BEC */ addiu $a0, %lo(D_800E0BEC) # addiu $a0, $a0, 0xbec -/* 096680 80095A80 15800011 */ bnez $t4, .L80095AC8 -/* 096684 80095A84 3C013F00 */ lui $at, 0x3f00 -/* 096688 80095A88 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 09668C 80095A8C 44810000 */ mtc1 $at, $f0 -/* 096690 80095A90 8FAD0038 */ lw $t5, 0x38($sp) -/* 096694 80095A94 8FAE0034 */ lw $t6, 0x34($sp) -/* 096698 80095A98 3C04800E */ lui $a0, %hi(D_800E0CEC) # $a0, 0x800e -/* 09669C 80095A9C 44050000 */ mfc1 $a1, $f0 -/* 0966A0 80095AA0 44070000 */ mfc1 $a3, $f0 -/* 0966A4 80095AA4 24840CEC */ addiu $a0, %lo(D_800E0CEC) # addiu $a0, $a0, 0xcec -/* 0966A8 80095AA8 3C064170 */ lui $a2, 0x4170 -/* 0966AC 80095AAC AFAD0010 */ sw $t5, 0x10($sp) -/* 0966B0 80095AB0 0C020795 */ jal func_80081E54 -/* 0966B4 80095AB4 AFAE0014 */ sw $t6, 0x14($sp) -/* 0966B8 80095AB8 240F0003 */ li $t7, 3 -/* 0966BC 80095ABC 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 0966C0 80095AC0 10000314 */ b .L80096714 -/* 0966C4 80095AC4 AC2F63E0 */ sw $t7, %lo(gMenuOptionCount)($at) -.L80095AC8: -/* 0966C8 80095AC8 80780114 */ lb $t8, 0x114($v1) -/* 0966CC 80095ACC 44810000 */ mtc1 $at, $f0 -/* 0966D0 80095AD0 0018C880 */ sll $t9, $t8, 2 -/* 0966D4 80095AD4 0338C823 */ subu $t9, $t9, $t8 -/* 0966D8 80095AD8 0019C8C0 */ sll $t9, $t9, 3 -/* 0966DC 80095ADC 00791021 */ addu $v0, $v1, $t9 -/* 0966E0 80095AE0 24420054 */ addiu $v0, $v0, 0x54 -/* 0966E4 80095AE4 8FB90034 */ lw $t9, 0x34($sp) -/* 0966E8 80095AE8 8FB80038 */ lw $t8, 0x38($sp) -/* 0966EC 80095AEC 244C0012 */ addiu $t4, $v0, 0x12 -/* 0966F0 80095AF0 244D0014 */ addiu $t5, $v0, 0x14 -/* 0966F4 80095AF4 244E0016 */ addiu $t6, $v0, 0x16 -/* 0966F8 80095AF8 244F0010 */ addiu $t7, $v0, 0x10 -/* 0966FC 80095AFC 44050000 */ mfc1 $a1, $f0 -/* 096700 80095B00 44070000 */ mfc1 $a3, $f0 -/* 096704 80095B04 AC8C0074 */ sw $t4, 0x74($a0) -/* 096708 80095B08 AC8D0094 */ sw $t5, 0x94($a0) -/* 09670C 80095B0C AC8E00B4 */ sw $t6, 0xb4($a0) -/* 096710 80095B10 AC8F00D4 */ sw $t7, 0xd4($a0) -/* 096714 80095B14 3C064170 */ lui $a2, 0x4170 -/* 096718 80095B18 AFB90014 */ sw $t9, 0x14($sp) -/* 09671C 80095B1C 0C020795 */ jal func_80081E54 -/* 096720 80095B20 AFB80010 */ sw $t8, 0x10($sp) -/* 096724 80095B24 24060002 */ li $a2, 2 -/* 096728 80095B28 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 09672C 80095B2C 100002F9 */ b .L80096714 -/* 096730 80095B30 AC2663E0 */ sw $a2, %lo(gMenuOptionCount)($at) -glabel L80095B34 -/* 096734 80095B34 8FA40064 */ lw $a0, 0x64($sp) -/* 096738 80095B38 0C0207D3 */ jal func_80081F4C -/* 09673C 80095B3C 00000000 */ nop -/* 096740 80095B40 104002F4 */ beqz $v0, .L80096714 -/* 096744 80095B44 3C0C800E */ lui $t4, %hi(gTrophyRaceWorldId) # $t4, 0x800e -/* 096748 80095B48 8D8C0FE8 */ lw $t4, %lo(gTrophyRaceWorldId)($t4) -/* 09674C 80095B4C 8FA7002C */ lw $a3, 0x2c($sp) -/* 096750 80095B50 1180000A */ beqz $t4, .L80095B7C -/* 096754 80095B54 00000000 */ nop -/* 096758 80095B58 0C000326 */ jal set_music_fade_timer -/* 09675C 80095B5C 2404FF80 */ li $a0, -128 -/* 096760 80095B60 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 096764 80095B64 0C030076 */ jal transition_begin -/* 096768 80095B68 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 09676C 80095B6C 240D0008 */ li $t5, 8 -/* 096770 80095B70 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096774 80095B74 100002E7 */ b .L80096714 -/* 096778 80095B78 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) -.L80095B7C: -/* 09677C 80095B7C 80EE0117 */ lb $t6, 0x117($a3) -/* 096780 80095B80 3C013F00 */ lui $at, 0x3f00 -/* 096784 80095B84 11C0005B */ beqz $t6, .L80095CF4 -/* 096788 80095B88 240D0003 */ li $t5, 3 -/* 09678C 80095B8C 3C0F8012 */ lui $t7, %hi(gPlayerSelectVehicle) # $t7, 0x8012 -/* 096790 80095B90 81EF69C0 */ lb $t7, %lo(gPlayerSelectVehicle)($t7) -/* 096794 80095B94 90EC0049 */ lbu $t4, 0x49($a3) -/* 096798 80095B98 000FC080 */ sll $t8, $t7, 2 -/* 09679C 80095B9C 00F81021 */ addu $v0, $a3, $t8 -/* 0967A0 80095BA0 8C59003C */ lw $t9, 0x3c($v0) -/* 0967A4 80095BA4 3C03800E */ lui $v1, %hi(D_800E0E4C) # $v1, 0x800e -/* 0967A8 80095BA8 000C6840 */ sll $t5, $t4, 1 -/* 0967AC 80095BAC 24630E4C */ addiu $v1, %lo(D_800E0E4C) # addiu $v1, $v1, 0xe4c -/* 0967B0 80095BB0 032D7021 */ addu $t6, $t9, $t5 -/* 0967B4 80095BB4 AC6E0074 */ sw $t6, 0x74($v1) -/* 0967B8 80095BB8 90F80049 */ lbu $t8, 0x49($a3) -/* 0967BC 80095BBC 8C4F0024 */ lw $t7, 0x24($v0) -/* 0967C0 80095BC0 00186040 */ sll $t4, $t8, 1 -/* 0967C4 80095BC4 01ECC821 */ addu $t9, $t7, $t4 -/* 0967C8 80095BC8 AC7900D4 */ sw $t9, 0xd4($v1) -/* 0967CC 80095BCC 90EE0049 */ lbu $t6, 0x49($a3) -/* 0967D0 80095BD0 8C4D0030 */ lw $t5, 0x30($v0) -/* 0967D4 80095BD4 000EC040 */ sll $t8, $t6, 1 -/* 0967D8 80095BD8 01B87821 */ addu $t7, $t5, $t8 -/* 0967DC 80095BDC 95E40000 */ lhu $a0, ($t7) -/* 0967E0 80095BE0 3C058012 */ lui $a1, %hi(D_80126390) # $a1, 0x8012 -/* 0967E4 80095BE4 24A56390 */ addiu $a1, %lo(D_80126390) # addiu $a1, $a1, 0x6390 -/* 0967E8 80095BE8 0C025DBE */ jal decompress_filename_string -/* 0967EC 80095BEC 24060003 */ li $a2, 3 -/* 0967F0 80095BF0 3C0C8012 */ lui $t4, %hi(gPlayerSelectVehicle) # $t4, 0x8012 -/* 0967F4 80095BF4 8FA2002C */ lw $v0, 0x2c($sp) -/* 0967F8 80095BF8 818C69C0 */ lb $t4, %lo(gPlayerSelectVehicle)($t4) -/* 0967FC 80095BFC 90580049 */ lbu $t8, 0x49($v0) -/* 096800 80095C00 000CC880 */ sll $t9, $t4, 2 -/* 096804 80095C04 00597021 */ addu $t6, $v0, $t9 -/* 096808 80095C08 8DCD0018 */ lw $t5, 0x18($t6) -/* 09680C 80095C0C 00187840 */ sll $t7, $t8, 1 -/* 096810 80095C10 01AF6021 */ addu $t4, $t5, $t7 -/* 096814 80095C14 95840000 */ lhu $a0, ($t4) -/* 096818 80095C18 3C058012 */ lui $a1, %hi(D_80126394) # $a1, 0x8012 -/* 09681C 80095C1C 24A56394 */ addiu $a1, %lo(D_80126394) # addiu $a1, $a1, 0x6394 -/* 096820 80095C20 0C025DBE */ jal decompress_filename_string -/* 096824 80095C24 24060003 */ li $a2, 3 -/* 096828 80095C28 8FA2002C */ lw $v0, 0x2c($sp) -/* 09682C 80095C2C 3C04800E */ lui $a0, %hi(D_800E0E4C) # $a0, 0x800e -/* 096830 80095C30 80590058 */ lb $t9, 0x58($v0) -/* 096834 80095C34 3C013F00 */ lui $at, 0x3f00 -/* 096838 80095C38 13200021 */ beqz $t9, .L80095CC0 -/* 09683C 80095C3C 24840E4C */ addiu $a0, %lo(D_800E0E4C) # addiu $a0, $a0, 0xe4c -/* 096840 80095C40 3C18800E */ lui $t8, %hi(gIsInTracksMode) # $t8, 0x800e -/* 096844 80095C44 8F18F4B8 */ lw $t8, %lo(gIsInTracksMode)($t8) -/* 096848 80095C48 240E0004 */ li $t6, 4 -/* 09684C 80095C4C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096850 80095C50 1700000B */ bnez $t8, .L80095C80 -/* 096854 80095C54 AC2E63E0 */ sw $t6, %lo(gMenuOptionCount)($at) -/* 096858 80095C58 3C0D800E */ lui $t5, %hi(D_800E0FAC) # $t5, 0x800e -/* 09685C 80095C5C 8DAD0FAC */ lw $t5, %lo(D_800E0FAC)($t5) -/* 096860 80095C60 3C05800E */ lui $a1, %hi(D_800E0FA8) # $a1, 0x800e -/* 096864 80095C64 11A00006 */ beqz $t5, .L80095C80 -/* 096868 80095C68 24A50FA8 */ addiu $a1, %lo(D_800E0FA8) # addiu $a1, $a1, 0xfa8 -/* 09686C 80095C6C 8C440050 */ lw $a0, 0x50($v0) -/* 096870 80095C70 0C025DBE */ jal decompress_filename_string -/* 096874 80095C74 24060003 */ li $a2, 3 -/* 096878 80095C78 3C01800E */ lui $at, %hi(D_800E0FAC) # $at, 0x800e -/* 09687C 80095C7C AC200FAC */ sw $zero, %lo(D_800E0FAC)($at) -.L80095C80: -/* 096880 80095C80 8FA20038 */ lw $v0, 0x38($sp) -/* 096884 80095C84 3C0F800E */ lui $t7, %hi(D_800E0FA4) # $t7, 0x800e -/* 096888 80095C88 3C0C800E */ lui $t4, %hi(D_800E0FA8) # $t4, 0x800e -/* 09688C 80095C8C 258C0FA8 */ addiu $t4, %lo(D_800E0FA8) # addiu $t4, $t4, 0xfa8 -/* 096890 80095C90 25EF0FA4 */ addiu $t7, %lo(D_800E0FA4) # addiu $t7, $t7, 0xfa4 -/* 096894 80095C94 24190003 */ li $t9, 3 -/* 096898 80095C98 AFB90018 */ sw $t9, 0x18($sp) -/* 09689C 80095C9C AFAF0010 */ sw $t7, 0x10($sp) -/* 0968A0 80095CA0 AFAC0014 */ sw $t4, 0x14($sp) -/* 0968A4 80095CA4 240500A0 */ li $a1, 160 -/* 0968A8 80095CA8 24070002 */ li $a3, 2 -/* 0968AC 80095CAC 244400C4 */ addiu $a0, $v0, 0xc4 -/* 0968B0 80095CB0 0C025E1D */ jal func_80097874 -/* 0968B4 80095CB4 24460078 */ addiu $a2, $v0, 0x78 -/* 0968B8 80095CB8 10000296 */ b .L80096714 -/* 0968BC 80095CBC 00000000 */ nop -.L80095CC0: -/* 0968C0 80095CC0 44810000 */ mtc1 $at, $f0 -/* 0968C4 80095CC4 8FAE0038 */ lw $t6, 0x38($sp) -/* 0968C8 80095CC8 8FB80034 */ lw $t8, 0x34($sp) -/* 0968CC 80095CCC 44050000 */ mfc1 $a1, $f0 -/* 0968D0 80095CD0 44070000 */ mfc1 $a3, $f0 -/* 0968D4 80095CD4 3C064170 */ lui $a2, 0x4170 -/* 0968D8 80095CD8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0968DC 80095CDC 0C020795 */ jal func_80081E54 -/* 0968E0 80095CE0 AFB80014 */ sw $t8, 0x14($sp) -/* 0968E4 80095CE4 24030005 */ li $v1, 5 -/* 0968E8 80095CE8 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 0968EC 80095CEC 10000289 */ b .L80096714 -/* 0968F0 80095CF0 AC2363E0 */ sw $v1, %lo(gMenuOptionCount)($at) -.L80095CF4: -/* 0968F4 80095CF4 44810000 */ mtc1 $at, $f0 -/* 0968F8 80095CF8 8FAF0038 */ lw $t7, 0x38($sp) -/* 0968FC 80095CFC 8FAC0034 */ lw $t4, 0x34($sp) -/* 096900 80095D00 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096904 80095D04 3C04800E */ lui $a0, %hi(D_800E0CEC) # $a0, 0x800e -/* 096908 80095D08 44050000 */ mfc1 $a1, $f0 -/* 09690C 80095D0C 44070000 */ mfc1 $a3, $f0 -/* 096910 80095D10 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) -/* 096914 80095D14 24840CEC */ addiu $a0, %lo(D_800E0CEC) # addiu $a0, $a0, 0xcec -/* 096918 80095D18 3C064170 */ lui $a2, 0x4170 -/* 09691C 80095D1C AFAF0010 */ sw $t7, 0x10($sp) -/* 096920 80095D20 0C020795 */ jal func_80081E54 -/* 096924 80095D24 AFAC0014 */ sw $t4, 0x14($sp) -/* 096928 80095D28 1000027A */ b .L80096714 -/* 09692C 80095D2C 00000000 */ nop -glabel L80095D30 -/* 096930 80095D30 8FA40064 */ lw $a0, 0x64($sp) -/* 096934 80095D34 0C0207D3 */ jal func_80081F4C -/* 096938 80095D38 00000000 */ nop -/* 09693C 80095D3C 10400275 */ beqz $v0, .L80096714 -/* 096940 80095D40 24190006 */ li $t9, 6 -/* 096944 80095D44 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096948 80095D48 10000272 */ b .L80096714 -/* 09694C 80095D4C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) -glabel L80095D50 -/* 096950 80095D50 8FA40064 */ lw $a0, 0x64($sp) -/* 096954 80095D54 0C025F44 */ jal menu_enter_filename_loop -/* 096958 80095D58 00000000 */ nop -/* 09695C 80095D5C 1040026D */ beqz $v0, .L80096714 -/* 096960 80095D60 00000000 */ nop -/* 096964 80095D64 8FAE002C */ lw $t6, 0x2c($sp) -/* 096968 80095D68 3C04800E */ lui $a0, %hi(D_800E0FA8) # $a0, 0x800e -/* 09696C 80095D6C 81C20058 */ lb $v0, 0x58($t6) -/* 096970 80095D70 24840FA8 */ addiu $a0, %lo(D_800E0FA8) # addiu $a0, $a0, 0xfa8 -/* 096974 80095D74 3058007F */ andi $t8, $v0, 0x7f -/* 096978 80095D78 1300001F */ beqz $t8, .L80095DF8 -/* 09697C 80095D7C 304E0080 */ andi $t6, $v0, 0x80 -/* 096980 80095D80 0C025DD1 */ jal compress_filename_string -/* 096984 80095D84 24050003 */ li $a1, 3 -/* 096988 80095D88 3C078012 */ lui $a3, %hi(gPlayerSelectVehicle) # $a3, 0x8012 -/* 09698C 80095D8C 24E769C0 */ addiu $a3, %lo(gPlayerSelectVehicle) # addiu $a3, $a3, 0x69c0 -/* 096990 80095D90 80ED0000 */ lb $t5, ($a3) -/* 096994 80095D94 8FA3002C */ lw $v1, 0x2c($sp) -/* 096998 80095D98 000D7880 */ sll $t7, $t5, 2 -/* 09699C 80095D9C 906E0049 */ lbu $t6, 0x49($v1) -/* 0969A0 80095DA0 006F6021 */ addu $t4, $v1, $t7 -/* 0969A4 80095DA4 8D990018 */ lw $t9, 0x18($t4) -/* 0969A8 80095DA8 000EC040 */ sll $t8, $t6, 1 -/* 0969AC 80095DAC 03386821 */ addu $t5, $t9, $t8 -/* 0969B0 80095DB0 A5A20000 */ sh $v0, ($t5) -/* 0969B4 80095DB4 80EF0000 */ lb $t7, ($a3) -/* 0969B8 80095DB8 90780049 */ lbu $t8, 0x49($v1) -/* 0969BC 80095DBC 000F6080 */ sll $t4, $t7, 2 -/* 0969C0 80095DC0 006C7021 */ addu $t6, $v1, $t4 -/* 0969C4 80095DC4 8DD90018 */ lw $t9, 0x18($t6) -/* 0969C8 80095DC8 00186840 */ sll $t5, $t8, 1 -/* 0969CC 80095DCC 032D7821 */ addu $t7, $t9, $t5 -/* 0969D0 80095DD0 95E40000 */ lhu $a0, ($t7) -/* 0969D4 80095DD4 3C058012 */ lui $a1, %hi(D_80126394) # $a1, 0x8012 -/* 0969D8 80095DD8 24A56394 */ addiu $a1, %lo(D_80126394) # addiu $a1, $a1, 0x6394 -/* 0969DC 80095DDC 0C025DBE */ jal decompress_filename_string -/* 0969E0 80095DE0 24060003 */ li $a2, 3 -/* 0969E4 80095DE4 8FAC002C */ lw $t4, 0x2c($sp) -/* 0969E8 80095DE8 00000000 */ nop -/* 0969EC 80095DEC 81820058 */ lb $v0, 0x58($t4) -/* 0969F0 80095DF0 00000000 */ nop -/* 0969F4 80095DF4 304E0080 */ andi $t6, $v0, 0x80 -.L80095DF8: -/* 0969F8 80095DF8 11C0001B */ beqz $t6, .L80095E68 -/* 0969FC 80095DFC 3C04800E */ lui $a0, %hi(D_800E0FA8) # $a0, 0x800e -/* 096A00 80095E00 24840FA8 */ addiu $a0, %lo(D_800E0FA8) # addiu $a0, $a0, 0xfa8 -/* 096A04 80095E04 0C025DD1 */ jal compress_filename_string -/* 096A08 80095E08 24050003 */ li $a1, 3 -/* 096A0C 80095E0C 3C078012 */ lui $a3, %hi(gPlayerSelectVehicle) # $a3, 0x8012 -/* 096A10 80095E10 24E769C0 */ addiu $a3, %lo(gPlayerSelectVehicle) # addiu $a3, $a3, 0x69c0 -/* 096A14 80095E14 80F80000 */ lb $t8, ($a3) -/* 096A18 80095E18 8FA3002C */ lw $v1, 0x2c($sp) -/* 096A1C 80095E1C 0018C880 */ sll $t9, $t8, 2 -/* 096A20 80095E20 906C0049 */ lbu $t4, 0x49($v1) -/* 096A24 80095E24 00796821 */ addu $t5, $v1, $t9 -/* 096A28 80095E28 8DAF0030 */ lw $t7, 0x30($t5) -/* 096A2C 80095E2C 000C7040 */ sll $t6, $t4, 1 -/* 096A30 80095E30 01EEC021 */ addu $t8, $t7, $t6 -/* 096A34 80095E34 A7020000 */ sh $v0, ($t8) -/* 096A38 80095E38 80F90000 */ lb $t9, ($a3) -/* 096A3C 80095E3C 906E0049 */ lbu $t6, 0x49($v1) -/* 096A40 80095E40 00196880 */ sll $t5, $t9, 2 -/* 096A44 80095E44 006D6021 */ addu $t4, $v1, $t5 -/* 096A48 80095E48 8D8F0030 */ lw $t7, 0x30($t4) -/* 096A4C 80095E4C 000EC040 */ sll $t8, $t6, 1 -/* 096A50 80095E50 01F8C821 */ addu $t9, $t7, $t8 -/* 096A54 80095E54 97240000 */ lhu $a0, ($t9) -/* 096A58 80095E58 3C058012 */ lui $a1, %hi(D_80126390) # $a1, 0x8012 -/* 096A5C 80095E5C 24A56390 */ addiu $a1, %lo(D_80126390) # addiu $a1, $a1, 0x6390 -/* 096A60 80095E60 0C025DBE */ jal decompress_filename_string -/* 096A64 80095E64 24060003 */ li $a2, 3 -.L80095E68: -/* 096A68 80095E68 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 096A6C 80095E6C 44810000 */ mtc1 $at, $f0 -/* 096A70 80095E70 8FAD0038 */ lw $t5, 0x38($sp) -/* 096A74 80095E74 8FAC0034 */ lw $t4, 0x34($sp) -/* 096A78 80095E78 3C04800E */ lui $a0, %hi(D_800E0E4C) # $a0, 0x800e -/* 096A7C 80095E7C 44050000 */ mfc1 $a1, $f0 -/* 096A80 80095E80 44070000 */ mfc1 $a3, $f0 -/* 096A84 80095E84 24840E4C */ addiu $a0, %lo(D_800E0E4C) # addiu $a0, $a0, 0xe4c -/* 096A88 80095E88 3C064170 */ lui $a2, 0x4170 -/* 096A8C 80095E8C AFAD0010 */ sw $t5, 0x10($sp) -/* 096A90 80095E90 0C020795 */ jal func_80081E54 -/* 096A94 80095E94 AFAC0014 */ sw $t4, 0x14($sp) -/* 096A98 80095E98 24030005 */ li $v1, 5 -/* 096A9C 80095E9C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096AA0 80095EA0 1000021C */ b .L80096714 -/* 096AA4 80095EA4 AC2363E0 */ sw $v1, %lo(gMenuOptionCount)($at) -glabel L80095EA8 -/* 096AA8 80095EA8 8FA40064 */ lw $a0, 0x64($sp) -/* 096AAC 80095EAC 0C0207D3 */ jal func_80081F4C -/* 096AB0 80095EB0 00000000 */ nop -/* 096AB4 80095EB4 10400217 */ beqz $v0, .L80096714 -/* 096AB8 80095EB8 240E0006 */ li $t6, 6 -/* 096ABC 80095EBC 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096AC0 80095EC0 10000214 */ b .L80096714 -/* 096AC4 80095EC4 AC2E63E0 */ sw $t6, %lo(gMenuOptionCount)($at) -glabel L80095EC8 -/* 096AC8 80095EC8 3C058012 */ lui $a1, %hi(D_80126A98) # $a1, 0x8012 -/* 096ACC 80095ECC 24A56A98 */ addiu $a1, %lo(D_80126A98) # addiu $a1, $a1, 0x6a98 -/* 096AD0 80095ED0 8CA20000 */ lw $v0, ($a1) -/* 096AD4 80095ED4 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 096AD8 80095ED8 10400039 */ beqz $v0, .L80095FC0 -/* 096ADC 80095EDC 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 096AE0 80095EE0 244F0001 */ addiu $t7, $v0, 1 -/* 096AE4 80095EE4 29E10005 */ slti $at, $t7, 5 -/* 096AE8 80095EE8 1420015A */ bnez $at, .L80096454 -/* 096AEC 80095EEC ACAF0000 */ sw $t7, ($a1) -/* 096AF0 80095EF0 0C00025A */ jal adjust_audio_volume -/* 096AF4 80095EF4 24040003 */ li $a0, 3 -/* 096AF8 80095EF8 0C006DCE */ jal func_8001B738 -/* 096AFC 80095EFC 00002025 */ move $a0, $zero -/* 096B00 80095F00 24030005 */ li $v1, 5 -/* 096B04 80095F04 305900FF */ andi $t9, $v0, 0xff -/* 096B08 80095F08 14790004 */ bne $v1, $t9, .L80095F1C -/* 096B0C 80095F0C AFA20054 */ sw $v0, 0x54($sp) -/* 096B10 80095F10 0C006DCE */ jal func_8001B738 -/* 096B14 80095F14 00002025 */ move $a0, $zero -/* 096B18 80095F18 AFA20054 */ sw $v0, 0x54($sp) -.L80095F1C: -/* 096B1C 80095F1C 0C00025A */ jal adjust_audio_volume -/* 096B20 80095F20 24040002 */ li $a0, 2 -/* 096B24 80095F24 8FAD0054 */ lw $t5, 0x54($sp) -/* 096B28 80095F28 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 -/* 096B2C 80095F2C 11A00006 */ beqz $t5, .L80095F48 -/* 096B30 80095F30 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 -/* 096B34 80095F34 0C025589 */ jal func_80095624 -/* 096B38 80095F38 01A02025 */ move $a0, $t5 -/* 096B3C 80095F3C 240C0001 */ li $t4, 1 -/* 096B40 80095F40 1000001C */ b .L80095FB4 -/* 096B44 80095F44 AFAC0054 */ sw $t4, 0x54($sp) -.L80095F48: -/* 096B48 80095F48 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 096B4C 80095F4C 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 096B50 80095F50 8C8E0000 */ lw $t6, ($a0) -/* 096B54 80095F54 3C0F800E */ lui $t7, %hi(sInsertControllerPakMenuText) # $t7, 0x800e -/* 096B58 80095F58 25EF0A04 */ addiu $t7, %lo(sInsertControllerPakMenuText) # addiu $t7, $t7, 0xa04 -/* 096B5C 80095F5C 15CF0006 */ bne $t6, $t7, .L80095F78 -/* 096B60 80095F60 00000000 */ nop -/* 096B64 80095F64 0C025589 */ jal func_80095624 -/* 096B68 80095F68 24040008 */ li $a0, 8 -/* 096B6C 80095F6C 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 -/* 096B70 80095F70 10000002 */ b .L80095F7C -/* 096B74 80095F74 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 -.L80095F78: -/* 096B78 80095F78 AC800000 */ sw $zero, ($a0) -.L80095F7C: -/* 096B7C 80095F7C 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 096B80 80095F80 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 096B84 80095F84 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 096B88 80095F88 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 096B8C 80095F8C 8CCD0000 */ lw $t5, ($a2) -/* 096B90 80095F90 8F190070 */ lw $t9, 0x70($t8) -/* 096B94 80095F94 3C018012 */ lui $at, %hi(gResultOptionText) # $at, 0x8012 -/* 096B98 80095F98 000D6080 */ sll $t4, $t5, 2 -/* 096B9C 80095F9C 002C0821 */ addu $at, $at, $t4 -/* 096BA0 80095FA0 AC396BF0 */ sw $t9, %lo(gResultOptionText)($at) -/* 096BA4 80095FA4 8D2E0000 */ lw $t6, ($t1) -/* 096BA8 80095FA8 ACC00000 */ sw $zero, ($a2) -/* 096BAC 80095FAC 25CFFFFF */ addiu $t7, $t6, -1 -/* 096BB0 80095FB0 AD2F0000 */ sw $t7, ($t1) -.L80095FB4: -/* 096BB4 80095FB4 3C018012 */ lui $at, %hi(D_80126A98) # $at, 0x8012 -/* 096BB8 80095FB8 10000126 */ b .L80096454 -/* 096BBC 80095FBC AC206A98 */ sw $zero, %lo(D_80126A98)($at) -.L80095FC0: -/* 096BC0 80095FC0 8C820000 */ lw $v0, ($a0) -/* 096BC4 80095FC4 3C08800E */ lui $t0, %hi(gMenuSubOption) # $t0, 0x800e -/* 096BC8 80095FC8 10400013 */ beqz $v0, .L80096018 -/* 096BCC 80095FCC 25080988 */ addiu $t0, %lo(gMenuSubOption) # addiu $t0, $t0, 0x988 -/* 096BD0 80095FD0 30789000 */ andi $t8, $v1, 0x9000 -/* 096BD4 80095FD4 1300000B */ beqz $t8, .L80096004 -/* 096BD8 80095FD8 306C4000 */ andi $t4, $v1, 0x4000 -/* 096BDC 80095FDC 3C19800E */ lui $t9, %hi(sInsertControllerPakMenuText) # $t9, 0x800e -/* 096BE0 80095FE0 240D0001 */ li $t5, 1 -/* 096BE4 80095FE4 27390A04 */ addiu $t9, %lo(sInsertControllerPakMenuText) # addiu $t9, $t9, 0xa04 -/* 096BE8 80095FE8 14590004 */ bne $v0, $t9, .L80095FFC -/* 096BEC 80095FEC AFAD0050 */ sw $t5, 0x50($sp) -/* 096BF0 80095FF0 24070001 */ li $a3, 1 -/* 096BF4 80095FF4 10000117 */ b .L80096454 -/* 096BF8 80095FF8 ACA70000 */ sw $a3, ($a1) -.L80095FFC: -/* 096BFC 80095FFC 10000115 */ b .L80096454 -/* 096C00 80096000 AC800000 */ sw $zero, ($a0) -.L80096004: -/* 096C04 80096004 11800113 */ beqz $t4, .L80096454 -/* 096C08 80096008 240E0001 */ li $t6, 1 -/* 096C0C 8009600C AC800000 */ sw $zero, ($a0) -/* 096C10 80096010 10000110 */ b .L80096454 -/* 096C14 80096014 AFAE0054 */ sw $t6, 0x54($sp) -.L80096018: -/* 096C18 80096018 8D020000 */ lw $v0, ($t0) -/* 096C1C 8009601C 306F9000 */ andi $t7, $v1, 0x9000 -/* 096C20 80096020 10400079 */ beqz $v0, .L80096208 -/* 096C24 80096024 30799000 */ andi $t9, $v1, 0x9000 -/* 096C28 80096028 11E00012 */ beqz $t7, .L80096074 -/* 096C2C 8009602C 306C4000 */ andi $t4, $v1, 0x4000 -/* 096C30 80096030 24070001 */ li $a3, 1 -/* 096C34 80096034 14E2000C */ bne $a3, $v0, .L80096068 -/* 096C38 80096038 24190001 */ li $t9, 1 -/* 096C3C 8009603C 24180001 */ li $t8, 1 -/* 096C40 80096040 AFB80050 */ sw $t8, 0x50($sp) -/* 096C44 80096044 0C000326 */ jal set_music_fade_timer -/* 096C48 80096048 2404FF80 */ li $a0, -128 -/* 096C4C 8009604C 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 096C50 80096050 0C030076 */ jal transition_begin -/* 096C54 80096054 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 096C58 80096058 240D0008 */ li $t5, 8 -/* 096C5C 8009605C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096C60 80096060 100000FC */ b .L80096454 -/* 096C64 80096064 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) -.L80096068: -/* 096C68 80096068 AFB90054 */ sw $t9, 0x54($sp) -/* 096C6C 8009606C 100000F9 */ b .L80096454 -/* 096C70 80096070 AD000000 */ sw $zero, ($t0) -.L80096074: -/* 096C74 80096074 11800005 */ beqz $t4, .L8009608C -/* 096C78 80096078 00405825 */ move $t3, $v0 -/* 096C7C 8009607C 240E0001 */ li $t6, 1 -/* 096C80 80096080 AFAE0054 */ sw $t6, 0x54($sp) -/* 096C84 80096084 100000F3 */ b .L80096454 -/* 096C88 80096088 AD000000 */ sw $zero, ($t0) -.L8009608C: -/* 096C8C 8009608C 1940005A */ blez $t2, .L800961F8 -/* 096C90 80096090 00002025 */ move $a0, $zero -/* 096C94 80096094 31430003 */ andi $v1, $t2, 3 -/* 096C98 80096098 10600017 */ beqz $v1, .L800960F8 -/* 096C9C 8009609C 00604825 */ move $t1, $v1 -/* 096CA0 800960A0 3C0F8012 */ lui $t7, %hi(gControllersYAxisDirection) # $t7, 0x8012 -/* 096CA4 800960A4 25EF6464 */ addiu $t7, %lo(gControllersYAxisDirection) # addiu $t7, $t7, 0x6464 -/* 096CA8 800960A8 000F2821 */ addu $a1, $zero, $t7 -/* 096CAC 800960AC 24070001 */ li $a3, 1 -/* 096CB0 800960B0 24060002 */ li $a2, 2 -.L800960B4: -/* 096CB4 800960B4 80A30000 */ lb $v1, ($a1) -/* 096CB8 800960B8 24840001 */ addiu $a0, $a0, 1 -/* 096CBC 800960BC 18600005 */ blez $v1, .L800960D4 -/* 096CC0 800960C0 00000000 */ nop -/* 096CC4 800960C4 14C20003 */ bne $a2, $v0, .L800960D4 -/* 096CC8 800960C8 00000000 */ nop -/* 096CCC 800960CC AD070000 */ sw $a3, ($t0) -/* 096CD0 800960D0 00E01025 */ move $v0, $a3 -.L800960D4: -/* 096CD4 800960D4 04610005 */ bgez $v1, .L800960EC -/* 096CD8 800960D8 00000000 */ nop -/* 096CDC 800960DC 14E20003 */ bne $a3, $v0, .L800960EC -/* 096CE0 800960E0 00000000 */ nop -/* 096CE4 800960E4 AD060000 */ sw $a2, ($t0) -/* 096CE8 800960E8 00C01025 */ move $v0, $a2 -.L800960EC: -/* 096CEC 800960EC 1524FFF1 */ bne $t1, $a0, .L800960B4 -/* 096CF0 800960F0 24A50001 */ addiu $a1, $a1, 1 -/* 096CF4 800960F4 108A0040 */ beq $a0, $t2, .L800961F8 -.L800960F8: -/* 096CF8 800960F8 3C188012 */ lui $t8, %hi(gControllersYAxisDirection) # $t8, 0x8012 -/* 096CFC 800960FC 27186464 */ addiu $t8, %lo(gControllersYAxisDirection) # addiu $t8, $t8, 0x6464 -/* 096D00 80096100 00982821 */ addu $a1, $a0, $t8 -/* 096D04 80096104 01584821 */ addu $t1, $t2, $t8 -/* 096D08 80096108 24060002 */ li $a2, 2 -/* 096D0C 8009610C 24070001 */ li $a3, 1 -.L80096110: -/* 096D10 80096110 80A30000 */ lb $v1, ($a1) -/* 096D14 80096114 00000000 */ nop -/* 096D18 80096118 18600005 */ blez $v1, .L80096130 -/* 096D1C 8009611C 00000000 */ nop -/* 096D20 80096120 14C20003 */ bne $a2, $v0, .L80096130 -/* 096D24 80096124 00000000 */ nop -/* 096D28 80096128 AD070000 */ sw $a3, ($t0) -/* 096D2C 8009612C 00E01025 */ move $v0, $a3 -.L80096130: -/* 096D30 80096130 04610005 */ bgez $v1, .L80096148 -/* 096D34 80096134 00000000 */ nop -/* 096D38 80096138 14E20003 */ bne $a3, $v0, .L80096148 -/* 096D3C 8009613C 00000000 */ nop -/* 096D40 80096140 AD060000 */ sw $a2, ($t0) -/* 096D44 80096144 00C01025 */ move $v0, $a2 -.L80096148: -/* 096D48 80096148 80A30001 */ lb $v1, 1($a1) -/* 096D4C 8009614C 00000000 */ nop -/* 096D50 80096150 18600005 */ blez $v1, .L80096168 -/* 096D54 80096154 00000000 */ nop -/* 096D58 80096158 14C20003 */ bne $a2, $v0, .L80096168 -/* 096D5C 8009615C 00000000 */ nop -/* 096D60 80096160 AD070000 */ sw $a3, ($t0) -/* 096D64 80096164 00E01025 */ move $v0, $a3 -.L80096168: -/* 096D68 80096168 04610005 */ bgez $v1, .L80096180 -/* 096D6C 8009616C 00000000 */ nop -/* 096D70 80096170 14E20003 */ bne $a3, $v0, .L80096180 -/* 096D74 80096174 00000000 */ nop -/* 096D78 80096178 AD060000 */ sw $a2, ($t0) -/* 096D7C 8009617C 00C01025 */ move $v0, $a2 -.L80096180: -/* 096D80 80096180 80A30002 */ lb $v1, 2($a1) -/* 096D84 80096184 00000000 */ nop -/* 096D88 80096188 18600005 */ blez $v1, .L800961A0 -/* 096D8C 8009618C 00000000 */ nop -/* 096D90 80096190 14C20003 */ bne $a2, $v0, .L800961A0 -/* 096D94 80096194 00000000 */ nop -/* 096D98 80096198 AD070000 */ sw $a3, ($t0) -/* 096D9C 8009619C 00E01025 */ move $v0, $a3 -.L800961A0: -/* 096DA0 800961A0 04610005 */ bgez $v1, .L800961B8 -/* 096DA4 800961A4 00000000 */ nop -/* 096DA8 800961A8 14E20003 */ bne $a3, $v0, .L800961B8 -/* 096DAC 800961AC 00000000 */ nop -/* 096DB0 800961B0 AD060000 */ sw $a2, ($t0) -/* 096DB4 800961B4 00C01025 */ move $v0, $a2 -.L800961B8: -/* 096DB8 800961B8 80A30003 */ lb $v1, 3($a1) -/* 096DBC 800961BC 24A50004 */ addiu $a1, $a1, 4 -/* 096DC0 800961C0 18600005 */ blez $v1, .L800961D8 -/* 096DC4 800961C4 00000000 */ nop -/* 096DC8 800961C8 14C20003 */ bne $a2, $v0, .L800961D8 -/* 096DCC 800961CC 00000000 */ nop -/* 096DD0 800961D0 AD070000 */ sw $a3, ($t0) -/* 096DD4 800961D4 00E01025 */ move $v0, $a3 -.L800961D8: -/* 096DD8 800961D8 04610005 */ bgez $v1, .L800961F0 -/* 096DDC 800961DC 00000000 */ nop -/* 096DE0 800961E0 14E20003 */ bne $a3, $v0, .L800961F0 -/* 096DE4 800961E4 00000000 */ nop -/* 096DE8 800961E8 AD060000 */ sw $a2, ($t0) -/* 096DEC 800961EC 00C01025 */ move $v0, $a2 -.L800961F0: -/* 096DF0 800961F0 14A9FFC7 */ bne $a1, $t1, .L80096110 -/* 096DF4 800961F4 00000000 */ nop -.L800961F8: -/* 096DF8 800961F8 11620096 */ beq $t3, $v0, .L80096454 -/* 096DFC 800961FC 240D0001 */ li $t5, 1 -/* 096E00 80096200 10000094 */ b .L80096454 -/* 096E04 80096204 AFAD004C */ sw $t5, 0x4c($sp) -.L80096208: -/* 096E08 80096208 13200021 */ beqz $t9, .L80096290 -/* 096E0C 8009620C 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 096E10 80096210 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 096E14 80096214 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 096E18 80096218 8CCE0000 */ lw $t6, ($a2) -/* 096E1C 8009621C 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e -/* 096E20 80096220 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) -/* 096E24 80096224 240C0001 */ li $t4, 1 -/* 096E28 80096228 3C038012 */ lui $v1, %hi(gResultOptionText) # $v1, 0x8012 -/* 096E2C 8009622C 000E7880 */ sll $t7, $t6, 2 -/* 096E30 80096230 AFAC0050 */ sw $t4, 0x50($sp) -/* 096E34 80096234 006F1821 */ addu $v1, $v1, $t7 -/* 096E38 80096238 8C636BF0 */ lw $v1, %lo(gResultOptionText)($v1) -/* 096E3C 8009623C 8C58006C */ lw $t8, 0x6c($v0) -/* 096E40 80096240 24070001 */ li $a3, 1 -/* 096E44 80096244 14780003 */ bne $v1, $t8, .L80096254 -/* 096E48 80096248 00000000 */ nop -/* 096E4C 8009624C 10000081 */ b .L80096454 -/* 096E50 80096250 ACA70000 */ sw $a3, ($a1) -.L80096254: -/* 096E54 80096254 8C4D0070 */ lw $t5, 0x70($v0) -/* 096E58 80096258 00000000 */ nop -/* 096E5C 8009625C 146D0003 */ bne $v1, $t5, .L8009626C -/* 096E60 80096260 24060002 */ li $a2, 2 -/* 096E64 80096264 1000007B */ b .L80096454 -/* 096E68 80096268 AD060000 */ sw $a2, ($t0) -.L8009626C: -/* 096E6C 8009626C 0C000326 */ jal set_music_fade_timer -/* 096E70 80096270 2404FF80 */ li $a0, -128 -/* 096E74 80096274 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 096E78 80096278 0C030076 */ jal transition_begin -/* 096E7C 8009627C 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 096E80 80096280 24190008 */ li $t9, 8 -/* 096E84 80096284 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 096E88 80096288 10000072 */ b .L80096454 -/* 096E8C 8009628C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) -.L80096290: -/* 096E90 80096290 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 096E94 80096294 8CC20000 */ lw $v0, ($a2) -/* 096E98 80096298 00002025 */ move $a0, $zero -/* 096E9C 8009629C 1940006A */ blez $t2, .L80096448 -/* 096EA0 800962A0 00405825 */ move $t3, $v0 -/* 096EA4 800962A4 31430003 */ andi $v1, $t2, 3 -/* 096EA8 800962A8 10600019 */ beqz $v1, .L80096310 -/* 096EAC 800962AC 00603825 */ move $a3, $v1 -/* 096EB0 800962B0 3C0C8012 */ lui $t4, %hi(gControllersYAxisDirection) # $t4, 0x8012 -/* 096EB4 800962B4 258C6464 */ addiu $t4, %lo(gControllersYAxisDirection) # addiu $t4, $t4, 0x6464 -/* 096EB8 800962B8 000C2821 */ addu $a1, $zero, $t4 -.L800962BC: -/* 096EBC 800962BC 80A30000 */ lb $v1, ($a1) -/* 096EC0 800962C0 24840001 */ addiu $a0, $a0, 1 -/* 096EC4 800962C4 04610009 */ bgez $v1, .L800962EC -/* 096EC8 800962C8 00000000 */ nop -/* 096ECC 800962CC 8D2E0000 */ lw $t6, ($t1) -/* 096ED0 800962D0 24580001 */ addiu $t8, $v0, 1 -/* 096ED4 800962D4 25CFFFFF */ addiu $t7, $t6, -1 -/* 096ED8 800962D8 004F082A */ slt $at, $v0, $t7 -/* 096EDC 800962DC 10200003 */ beqz $at, .L800962EC -/* 096EE0 800962E0 00000000 */ nop -/* 096EE4 800962E4 ACD80000 */ sw $t8, ($a2) -/* 096EE8 800962E8 03001025 */ move $v0, $t8 -.L800962EC: -/* 096EEC 800962EC 18600005 */ blez $v1, .L80096304 -/* 096EF0 800962F0 00000000 */ nop -/* 096EF4 800962F4 18400003 */ blez $v0, .L80096304 -/* 096EF8 800962F8 244DFFFF */ addiu $t5, $v0, -1 -/* 096EFC 800962FC ACCD0000 */ sw $t5, ($a2) -/* 096F00 80096300 01A01025 */ move $v0, $t5 -.L80096304: -/* 096F04 80096304 14E4FFED */ bne $a3, $a0, .L800962BC -/* 096F08 80096308 24A50001 */ addiu $a1, $a1, 1 -/* 096F0C 8009630C 108A004E */ beq $a0, $t2, .L80096448 -.L80096310: -/* 096F10 80096310 3C198012 */ lui $t9, %hi(gControllersYAxisDirection) # $t9, 0x8012 -/* 096F14 80096314 27396464 */ addiu $t9, %lo(gControllersYAxisDirection) # addiu $t9, $t9, 0x6464 -/* 096F18 80096318 00992821 */ addu $a1, $a0, $t9 -/* 096F1C 8009631C 01593821 */ addu $a3, $t2, $t9 -.L80096320: -/* 096F20 80096320 80A30000 */ lb $v1, ($a1) -/* 096F24 80096324 00000000 */ nop -/* 096F28 80096328 04610009 */ bgez $v1, .L80096350 -/* 096F2C 8009632C 00000000 */ nop -/* 096F30 80096330 8D2C0000 */ lw $t4, ($t1) -/* 096F34 80096334 244F0001 */ addiu $t7, $v0, 1 -/* 096F38 80096338 258EFFFF */ addiu $t6, $t4, -1 -/* 096F3C 8009633C 004E082A */ slt $at, $v0, $t6 -/* 096F40 80096340 10200003 */ beqz $at, .L80096350 -/* 096F44 80096344 00000000 */ nop -/* 096F48 80096348 ACCF0000 */ sw $t7, ($a2) -/* 096F4C 8009634C 01E01025 */ move $v0, $t7 -.L80096350: -/* 096F50 80096350 18600005 */ blez $v1, .L80096368 -/* 096F54 80096354 00000000 */ nop -/* 096F58 80096358 18400003 */ blez $v0, .L80096368 -/* 096F5C 8009635C 2458FFFF */ addiu $t8, $v0, -1 -/* 096F60 80096360 ACD80000 */ sw $t8, ($a2) -/* 096F64 80096364 03001025 */ move $v0, $t8 -.L80096368: -/* 096F68 80096368 80A30001 */ lb $v1, 1($a1) -/* 096F6C 8009636C 00000000 */ nop -/* 096F70 80096370 04610009 */ bgez $v1, .L80096398 -/* 096F74 80096374 00000000 */ nop -/* 096F78 80096378 8D2D0000 */ lw $t5, ($t1) -/* 096F7C 8009637C 244C0001 */ addiu $t4, $v0, 1 -/* 096F80 80096380 25B9FFFF */ addiu $t9, $t5, -1 -/* 096F84 80096384 0059082A */ slt $at, $v0, $t9 -/* 096F88 80096388 10200003 */ beqz $at, .L80096398 -/* 096F8C 8009638C 00000000 */ nop -/* 096F90 80096390 ACCC0000 */ sw $t4, ($a2) -/* 096F94 80096394 01801025 */ move $v0, $t4 -.L80096398: -/* 096F98 80096398 18600005 */ blez $v1, .L800963B0 -/* 096F9C 8009639C 00000000 */ nop -/* 096FA0 800963A0 18400003 */ blez $v0, .L800963B0 -/* 096FA4 800963A4 244EFFFF */ addiu $t6, $v0, -1 -/* 096FA8 800963A8 ACCE0000 */ sw $t6, ($a2) -/* 096FAC 800963AC 01C01025 */ move $v0, $t6 -.L800963B0: -/* 096FB0 800963B0 80A30002 */ lb $v1, 2($a1) -/* 096FB4 800963B4 00000000 */ nop -/* 096FB8 800963B8 04610009 */ bgez $v1, .L800963E0 -/* 096FBC 800963BC 00000000 */ nop -/* 096FC0 800963C0 8D2F0000 */ lw $t7, ($t1) -/* 096FC4 800963C4 244D0001 */ addiu $t5, $v0, 1 -/* 096FC8 800963C8 25F8FFFF */ addiu $t8, $t7, -1 -/* 096FCC 800963CC 0058082A */ slt $at, $v0, $t8 -/* 096FD0 800963D0 10200003 */ beqz $at, .L800963E0 -/* 096FD4 800963D4 00000000 */ nop -/* 096FD8 800963D8 ACCD0000 */ sw $t5, ($a2) -/* 096FDC 800963DC 01A01025 */ move $v0, $t5 -.L800963E0: -/* 096FE0 800963E0 18600005 */ blez $v1, .L800963F8 -/* 096FE4 800963E4 00000000 */ nop -/* 096FE8 800963E8 18400003 */ blez $v0, .L800963F8 -/* 096FEC 800963EC 2459FFFF */ addiu $t9, $v0, -1 -/* 096FF0 800963F0 ACD90000 */ sw $t9, ($a2) -/* 096FF4 800963F4 03201025 */ move $v0, $t9 -.L800963F8: -/* 096FF8 800963F8 80A30003 */ lb $v1, 3($a1) -/* 096FFC 800963FC 24A50004 */ addiu $a1, $a1, 4 -/* 097000 80096400 04610009 */ bgez $v1, .L80096428 -/* 097004 80096404 00000000 */ nop -/* 097008 80096408 8D2C0000 */ lw $t4, ($t1) -/* 09700C 8009640C 244F0001 */ addiu $t7, $v0, 1 -/* 097010 80096410 258EFFFF */ addiu $t6, $t4, -1 -/* 097014 80096414 004E082A */ slt $at, $v0, $t6 -/* 097018 80096418 10200003 */ beqz $at, .L80096428 -/* 09701C 8009641C 00000000 */ nop -/* 097020 80096420 ACCF0000 */ sw $t7, ($a2) -/* 097024 80096424 01E01025 */ move $v0, $t7 -.L80096428: -/* 097028 80096428 18600005 */ blez $v1, .L80096440 -/* 09702C 8009642C 00000000 */ nop -/* 097030 80096430 18400003 */ blez $v0, .L80096440 -/* 097034 80096434 2458FFFF */ addiu $t8, $v0, -1 -/* 097038 80096438 ACD80000 */ sw $t8, ($a2) -/* 09703C 8009643C 03001025 */ move $v0, $t8 -.L80096440: -/* 097040 80096440 14A7FFB7 */ bne $a1, $a3, .L80096320 -/* 097044 80096444 00000000 */ nop -.L80096448: -/* 097048 80096448 11620002 */ beq $t3, $v0, .L80096454 -/* 09704C 8009644C 240D0001 */ li $t5, 1 -/* 097050 80096450 AFAD004C */ sw $t5, 0x4c($sp) -.L80096454: -/* 097054 80096454 8FB90054 */ lw $t9, 0x54($sp) -/* 097058 80096458 00000000 */ nop -/* 09705C 8009645C 13200005 */ beqz $t9, .L80096474 -/* 097060 80096460 24040241 */ li $a0, 577 -/* 097064 80096464 0C000741 */ jal play_sound_global -/* 097068 80096468 00002825 */ move $a1, $zero -/* 09706C 8009646C 100000A9 */ b .L80096714 -/* 097070 80096470 00000000 */ nop -.L80096474: -/* 097074 80096474 8FAC0050 */ lw $t4, 0x50($sp) -/* 097078 80096478 8FAE004C */ lw $t6, 0x4c($sp) -/* 09707C 8009647C 11800005 */ beqz $t4, .L80096494 -/* 097080 80096480 240400EF */ li $a0, 239 -/* 097084 80096484 0C000741 */ jal play_sound_global -/* 097088 80096488 00002825 */ move $a1, $zero -/* 09708C 8009648C 100000A1 */ b .L80096714 -/* 097090 80096490 00000000 */ nop -.L80096494: -/* 097094 80096494 11C0009F */ beqz $t6, .L80096714 -/* 097098 80096498 240400EB */ li $a0, 235 -/* 09709C 8009649C 0C000741 */ jal play_sound_global -/* 0970A0 800964A0 00002825 */ move $a1, $zero -/* 0970A4 800964A4 1000009B */ b .L80096714 -/* 0970A8 800964A8 00000000 */ nop -glabel L800964AC -/* 0970AC 800964AC 306F9000 */ andi $t7, $v1, 0x9000 -/* 0970B0 800964B0 11E00098 */ beqz $t7, .L80096714 -/* 0970B4 800964B4 00000000 */ nop -/* 0970B8 800964B8 0C000326 */ jal set_music_fade_timer -/* 0970BC 800964BC 2404FF80 */ li $a0, -128 -/* 0970C0 800964C0 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 0970C4 800964C4 0C030076 */ jal transition_begin -/* 0970C8 800964C8 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 0970CC 800964CC 24180008 */ li $t8, 8 -/* 0970D0 800964D0 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 -/* 0970D4 800964D4 1000008F */ b .L80096714 -/* 0970D8 800964D8 AC3863E0 */ sw $t8, %lo(gMenuOptionCount)($at) -glabel L800964DC -/* 0970DC 800964DC 3C0D800E */ lui $t5, %hi(gMenuDelay) # $t5, 0x800e -/* 0970E0 800964E0 8DADF47C */ lw $t5, %lo(gMenuDelay)($t5) -/* 0970E4 800964E4 8FB90064 */ lw $t9, 0x64($sp) -/* 0970E8 800964E8 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 0970EC 800964EC 01B96021 */ addu $t4, $t5, $t9 -/* 0970F0 800964F0 AC2CF47C */ sw $t4, %lo(gMenuDelay)($at) -/* 0970F4 800964F4 2981001F */ slti $at, $t4, 0x1f -/* 0970F8 800964F8 14200086 */ bnez $at, .L80096714 -/* 0970FC 800964FC 00000000 */ nop -/* 097100 80096500 8FA3002C */ lw $v1, 0x2c($sp) -/* 097104 80096504 00000000 */ nop -/* 097108 80096508 806E0117 */ lb $t6, 0x117($v1) -/* 09710C 8009650C 00000000 */ nop -/* 097110 80096510 11C00012 */ beqz $t6, .L8009655C -/* 097114 80096514 00002025 */ move $a0, $zero -/* 097118 80096518 80620058 */ lb $v0, 0x58($v1) -/* 09711C 8009651C 00000000 */ nop -/* 097120 80096520 304F007F */ andi $t7, $v0, 0x7f -/* 097124 80096524 11E00008 */ beqz $t7, .L80096548 -/* 097128 80096528 304D0080 */ andi $t5, $v0, 0x80 -/* 09712C 8009652C 0C01BAF1 */ jal mark_to_write_flap_times -/* 097130 80096530 00000000 */ nop -/* 097134 80096534 8FB8002C */ lw $t8, 0x2c($sp) -/* 097138 80096538 00000000 */ nop -/* 09713C 8009653C 83020058 */ lb $v0, 0x58($t8) -/* 097140 80096540 00000000 */ nop -/* 097144 80096544 304D0080 */ andi $t5, $v0, 0x80 -.L80096548: -/* 097148 80096548 11A00004 */ beqz $t5, .L8009655C -/* 09714C 8009654C 00002025 */ move $a0, $zero -/* 097150 80096550 0C01BAF8 */ jal mark_to_write_course_times -/* 097154 80096554 00000000 */ nop -/* 097158 80096558 00002025 */ move $a0, $zero -.L8009655C: -/* 09715C 8009655C 0C019A25 */ jal camDisableUserView -/* 097160 80096560 00002825 */ move $a1, $zero -/* 097164 80096564 0C0259E4 */ jal func_80096790 -/* 097168 80096568 00000000 */ nop -/* 09716C 8009656C 0C031588 */ jal close_dialogue_box -/* 097170 80096570 24040007 */ li $a0, 7 -/* 097174 80096574 0C031525 */ jal assign_dialogue_box_id -/* 097178 80096578 24040007 */ li $a0, 7 -/* 09717C 8009657C 3C028012 */ lui $v0, %hi(D_80126C28) # $v0, 0x8012 -/* 097180 80096580 80426C28 */ lb $v0, %lo(D_80126C28)($v0) -/* 097184 80096584 3C0C800E */ lui $t4, %hi(gTrophyRaceWorldId) # $t4, 0x800e -/* 097188 80096588 28410002 */ slti $at, $v0, 2 -/* 09718C 8009658C 1420001C */ bnez $at, .L80096600 -/* 097190 80096590 24010009 */ li $at, 9 -/* 097194 80096594 1441000D */ bne $v0, $at, .L800965CC -/* 097198 80096598 00000000 */ nop -/* 09719C 8009659C 0C0078A7 */ jal get_misc_asset -/* 0971A0 800965A0 24040019 */ li $a0, 25 -/* 0971A4 800965A4 3C058012 */ lui $a1, %hi(D_80126C28) # $a1, 0x8012 -/* 0971A8 800965A8 80A56C28 */ lb $a1, %lo(D_80126C28)($a1) -/* 0971AC 800965AC 00402025 */ move $a0, $v0 -/* 0971B0 800965B0 2406010E */ li $a2, 270 -/* 0971B4 800965B4 00003825 */ move $a3, $zero -/* 0971B8 800965B8 AFA00010 */ sw $zero, 0x10($sp) -/* 0971BC 800965BC 0C026AF6 */ jal func_8009ABD8 -/* 0971C0 800965C0 AFA00014 */ sw $zero, 0x14($sp) -/* 0971C4 800965C4 1000000C */ b .L800965F8 -/* 0971C8 800965C8 2419000D */ li $t9, 13 -.L800965CC: -/* 0971CC 800965CC 0C0078A7 */ jal get_misc_asset -/* 0971D0 800965D0 24040019 */ li $a0, 25 -/* 0971D4 800965D4 3C058012 */ lui $a1, %hi(D_80126C28) # $a1, 0x8012 -/* 0971D8 800965D8 80A56C28 */ lb $a1, %lo(D_80126C28)($a1) -/* 0971DC 800965DC 00402025 */ move $a0, $v0 -/* 0971E0 800965E0 24060101 */ li $a2, 257 -/* 0971E4 800965E4 00003825 */ move $a3, $zero -/* 0971E8 800965E8 AFA00010 */ sw $zero, 0x10($sp) -/* 0971EC 800965EC 0C026AF6 */ jal func_8009ABD8 -/* 0971F0 800965F0 AFA00014 */ sw $zero, 0x14($sp) -/* 0971F4 800965F4 2419000D */ li $t9, 13 -.L800965F8: -/* 0971F8 800965F8 10000046 */ b .L80096714 -/* 0971FC 800965FC AFB90044 */ sw $t9, 0x44($sp) -.L80096600: -/* 097200 80096600 8D8C0FE8 */ lw $t4, %lo(gTrophyRaceWorldId)($t4) -/* 097204 80096604 240E000A */ li $t6, 10 -/* 097208 80096608 11800003 */ beqz $t4, .L80096618 -/* 09720C 8009660C 3C0F800E */ lui $t7, %hi(gNumberOfActivePlayers) # $t7, 0x800e -/* 097210 80096610 10000040 */ b .L80096714 -/* 097214 80096614 AFAE0044 */ sw $t6, 0x44($sp) -.L80096618: -/* 097218 80096618 8DEFF4BC */ lw $t7, %lo(gNumberOfActivePlayers)($t7) -/* 09721C 8009661C 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 097220 80096620 29E10002 */ slti $at, $t7, 2 -/* 097224 80096624 14200004 */ bnez $at, .L80096638 -/* 097228 80096628 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 09722C 8009662C 24180008 */ li $t8, 8 -/* 097230 80096630 10000038 */ b .L80096714 -/* 097234 80096634 AFB80044 */ sw $t8, 0x44($sp) -.L80096638: -/* 097238 80096638 8CCD0000 */ lw $t5, ($a2) -/* 09723C 8009663C 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e -/* 097240 80096640 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) -/* 097244 80096644 3C038012 */ lui $v1, %hi(gResultOptionText) # $v1, 0x8012 -/* 097248 80096648 000DC880 */ sll $t9, $t5, 2 -/* 09724C 8009664C 00791821 */ addu $v1, $v1, $t9 -/* 097250 80096650 8C636BF0 */ lw $v1, %lo(gResultOptionText)($v1) -/* 097254 80096654 8C4C005C */ lw $t4, 0x5c($v0) -/* 097258 80096658 3C0E800E */ lui $t6, %hi(gIsInTracksMode) # $t6, 0x800e -/* 09725C 8009665C 146C001A */ bne $v1, $t4, .L800966C8 -/* 097260 80096660 00000000 */ nop -/* 097264 80096664 8DCEF4B8 */ lw $t6, %lo(gIsInTracksMode)($t6) -/* 097268 80096668 00000000 */ nop -/* 09726C 8009666C 15C00014 */ bnez $t6, .L800966C0 -/* 097270 80096670 24190002 */ li $t9, 2 -/* 097274 80096674 0C01BAC5 */ jal get_ingame_map_id -/* 097278 80096678 00000000 */ nop -/* 09727C 8009667C 00027840 */ sll $t7, $v0, 1 -/* 097280 80096680 3C18800E */ lui $t8, %hi(gTTVoiceLines) # $t8, 0x800e -/* 097284 80096684 030FC021 */ addu $t8, $t8, $t7 -/* 097288 80096688 87180758 */ lh $t8, %lo(gTTVoiceLines)($t8) -/* 09728C 8009668C 2401FFFF */ li $at, -1 -/* 097290 80096690 1301000B */ beq $t8, $at, .L800966C0 -/* 097294 80096694 24190002 */ li $t9, 2 -/* 097298 80096698 0C01BAC5 */ jal get_ingame_map_id -/* 09729C 8009669C 00000000 */ nop -/* 0972A0 800966A0 00026840 */ sll $t5, $v0, 1 -/* 0972A4 800966A4 3C04800E */ lui $a0, %hi(gTTVoiceLines) # $a0, 0x800e -/* 0972A8 800966A8 008D2021 */ addu $a0, $a0, $t5 -/* 0972AC 800966AC 94840758 */ lhu $a0, %lo(gTTVoiceLines)($a0) -/* 0972B0 800966B0 00002825 */ move $a1, $zero -/* 0972B4 800966B4 0C0003F7 */ jal func_80000FDC -/* 0972B8 800966B8 3C063F80 */ lui $a2, 0x3f80 -/* 0972BC 800966BC 24190002 */ li $t9, 2 -.L800966C0: -/* 0972C0 800966C0 10000014 */ b .L80096714 -/* 0972C4 800966C4 AFB90044 */ sw $t9, 0x44($sp) -.L800966C8: -/* 0972C8 800966C8 8C4C0060 */ lw $t4, 0x60($v0) -/* 0972CC 800966CC 240E0005 */ li $t6, 5 -/* 0972D0 800966D0 146C0003 */ bne $v1, $t4, .L800966E0 -/* 0972D4 800966D4 00000000 */ nop -/* 0972D8 800966D8 1000000E */ b .L80096714 -/* 0972DC 800966DC AFAE0044 */ sw $t6, 0x44($sp) -.L800966E0: -/* 0972E0 800966E0 8C4F0068 */ lw $t7, 0x68($v0) -/* 0972E4 800966E4 2418000C */ li $t8, 12 -/* 0972E8 800966E8 146F0003 */ bne $v1, $t7, .L800966F8 -/* 0972EC 800966EC 00000000 */ nop -/* 0972F0 800966F0 10000008 */ b .L80096714 -/* 0972F4 800966F4 AFB80044 */ sw $t8, 0x44($sp) -.L800966F8: -/* 0972F8 800966F8 8C4D0064 */ lw $t5, 0x64($v0) -/* 0972FC 800966FC 24190001 */ li $t9, 1 -/* 097300 80096700 146D0003 */ bne $v1, $t5, .L80096710 -/* 097304 80096704 240C0004 */ li $t4, 4 -/* 097308 80096708 10000002 */ b .L80096714 -/* 09730C 8009670C AFB90044 */ sw $t9, 0x44($sp) -.L80096710: -/* 097310 80096710 AFAC0044 */ sw $t4, 0x44($sp) -.L80096714: -/* 097314 80096714 3C028012 */ lui $v0, %hi(gIgnorePlayerInputTime) # $v0, 0x8012 -/* 097318 80096718 8C4263C4 */ lw $v0, %lo(gIgnorePlayerInputTime)($v0) -/* 09731C 8009671C 3C0D8012 */ lui $t5, %hi(sMenuCurrDisplayList) # $t5, 0x8012 -/* 097320 80096720 1840000B */ blez $v0, .L80096750 -/* 097324 80096724 00000000 */ nop -/* 097328 80096728 8FAE0064 */ lw $t6, 0x64($sp) -/* 09732C 8009672C 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 097330 80096730 004E7823 */ subu $t7, $v0, $t6 -/* 097334 80096734 AC2F63C4 */ sw $t7, %lo(gIgnorePlayerInputTime)($at) -/* 097338 80096738 3C188012 */ lui $t8, %hi(gIgnorePlayerInputTime) # $t8, 0x8012 -/* 09733C 8009673C 8F1863C4 */ lw $t8, %lo(gIgnorePlayerInputTime)($t8) -/* 097340 80096740 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 097344 80096744 07010002 */ bgez $t8, .L80096750 -/* 097348 80096748 00000000 */ nop -/* 09734C 8009674C AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at) -.L80096750: -/* 097350 80096750 8DAD63A0 */ lw $t5, %lo(sMenuCurrDisplayList)($t5) -/* 097354 80096754 8FB90058 */ lw $t9, 0x58($sp) -/* 097358 80096758 3C0C8012 */ lui $t4, %hi(sMenuCurrHudMat) # $t4, 0x8012 -/* 09735C 8009675C AF2D0000 */ sw $t5, ($t9) -/* 097360 80096760 8FAE005C */ lw $t6, 0x5c($sp) -/* 097364 80096764 8D8C63A8 */ lw $t4, %lo(sMenuCurrHudMat)($t4) -/* 097368 80096768 3C0F8012 */ lui $t7, %hi(sMenuCurrHudVerts) # $t7, 0x8012 -/* 09736C 8009676C ADCC0000 */ sw $t4, ($t6) -/* 097370 80096770 8FB80060 */ lw $t8, 0x60($sp) -/* 097374 80096774 8DEF63AC */ lw $t7, %lo(sMenuCurrHudVerts)($t7) -/* 097378 80096778 00000000 */ nop -/* 09737C 8009677C AF0F0000 */ sw $t7, ($t8) -/* 097380 80096780 8FBF0024 */ lw $ra, 0x24($sp) -/* 097384 80096784 8FA20044 */ lw $v0, 0x44($sp) -/* 097388 80096788 03E00008 */ jr $ra -/* 09738C 8009678C 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/menu/func_80099E8C.s b/asm/non_matchings/menu/func_80099E8C.s deleted file mode 100644 index 8d8193e5..00000000 --- a/asm/non_matchings/menu/func_80099E8C.s +++ /dev/null @@ -1,626 +0,0 @@ -.late_rodata -glabel D_800E8570 -.float 0.075 - -.text -glabel func_80099E8C -/* 09AA8C 80099E8C 27BDFF10 */ addiu $sp, $sp, -0xf0 -/* 09AA90 80099E90 AFB70054 */ sw $s7, 0x54($sp) -/* 09AA94 80099E94 3C178012 */ lui $s7, %hi(sMenuCurrDisplayList) # $s7, 0x8012 -/* 09AA98 80099E98 26F763A0 */ addiu $s7, %lo(sMenuCurrDisplayList) # addiu $s7, $s7, 0x63a0 -/* 09AA9C 80099E9C AFBF005C */ sw $ra, 0x5c($sp) -/* 09AAA0 80099EA0 AFA400F0 */ sw $a0, 0xf0($sp) -/* 09AAA4 80099EA4 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 -/* 09AAA8 80099EA8 AFBE0058 */ sw $fp, 0x58($sp) -/* 09AAAC 80099EAC AFB60050 */ sw $s6, 0x50($sp) -/* 09AAB0 80099EB0 AFB5004C */ sw $s5, 0x4c($sp) -/* 09AAB4 80099EB4 AFB40048 */ sw $s4, 0x48($sp) -/* 09AAB8 80099EB8 AFB30044 */ sw $s3, 0x44($sp) -/* 09AABC 80099EBC AFB20040 */ sw $s2, 0x40($sp) -/* 09AAC0 80099EC0 AFB1003C */ sw $s1, 0x3c($sp) -/* 09AAC4 80099EC4 AFB00038 */ sw $s0, 0x38($sp) -/* 09AAC8 80099EC8 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 -/* 09AACC 80099ECC 0C019FCB */ jal set_ortho_matrix_view -/* 09AAD0 80099ED0 02E02025 */ move $a0, $s7 -/* 09AAD4 80099ED4 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 09AAD8 80099ED8 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 09AADC 80099EDC 3C188012 */ lui $t8, %hi(gOpacityDecayTimer) # $t8, 0x8012 -/* 09AAE0 80099EE0 15C00004 */ bnez $t6, .L80099EF4 -/* 09AAE4 80099EE4 24040002 */ li $a0, 2 -/* 09AAE8 80099EE8 240F000C */ li $t7, 12 -/* 09AAEC 80099EEC 10000002 */ b .L80099EF8 -/* 09AAF0 80099EF0 AFAF00D0 */ sw $t7, 0xd0($sp) -.L80099EF4: -/* 09AAF4 80099EF4 AFA000D0 */ sw $zero, 0xd0($sp) -.L80099EF8: -/* 09AAF8 80099EF8 8F1863D8 */ lw $t8, %lo(gOpacityDecayTimer)($t8) -/* 09AAFC 80099EFC 0C0310BB */ jal set_text_font -/* 09AB00 80099F00 AFB800E4 */ sw $t8, 0xe4($sp) -/* 09AB04 80099F04 00002025 */ move $a0, $zero -/* 09AB08 80099F08 00002825 */ move $a1, $zero -/* 09AB0C 80099F0C 00003025 */ move $a2, $zero -/* 09AB10 80099F10 0C0310F3 */ jal set_text_background_colour -/* 09AB14 80099F14 00003825 */ move $a3, $zero -/* 09AB18 80099F18 24190080 */ li $t9, 128 -/* 09AB1C 80099F1C AFB90010 */ sw $t9, 0x10($sp) -/* 09AB20 80099F20 00002025 */ move $a0, $zero -/* 09AB24 80099F24 00002825 */ move $a1, $zero -/* 09AB28 80099F28 00003025 */ move $a2, $zero -/* 09AB2C 80099F2C 0C0310E1 */ jal set_text_colour -/* 09AB30 80099F30 240700FF */ li $a3, 255 -/* 09AB34 80099F34 3C09800E */ lui $t1, %hi(gMenuText) # $t1, 0x800e -/* 09AB38 80099F38 8D29F4A0 */ lw $t1, %lo(gMenuText)($t1) -/* 09AB3C 80099F3C 240A000C */ li $t2, 12 -/* 09AB40 80099F40 8D270148 */ lw $a3, 0x148($t1) -/* 09AB44 80099F44 AFAA0010 */ sw $t2, 0x10($sp) -/* 09AB48 80099F48 02E02025 */ move $a0, $s7 -/* 09AB4C 80099F4C 240500A1 */ li $a1, 161 -/* 09AB50 80099F50 0C031110 */ jal draw_text -/* 09AB54 80099F54 24060023 */ li $a2, 35 -/* 09AB58 80099F58 240B00FF */ li $t3, 255 -/* 09AB5C 80099F5C AFAB0010 */ sw $t3, 0x10($sp) -/* 09AB60 80099F60 240400FF */ li $a0, 255 -/* 09AB64 80099F64 240500FF */ li $a1, 255 -/* 09AB68 80099F68 240600FF */ li $a2, 255 -/* 09AB6C 80099F6C 0C0310E1 */ jal set_text_colour -/* 09AB70 80099F70 00003825 */ move $a3, $zero -/* 09AB74 80099F74 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e -/* 09AB78 80099F78 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 09AB7C 80099F7C 240D000C */ li $t5, 12 -/* 09AB80 80099F80 8D870148 */ lw $a3, 0x148($t4) -/* 09AB84 80099F84 AFAD0010 */ sw $t5, 0x10($sp) -/* 09AB88 80099F88 02E02025 */ move $a0, $s7 -/* 09AB8C 80099F8C 240500A0 */ li $a1, 160 -/* 09AB90 80099F90 0C031110 */ jal draw_text -/* 09AB94 80099F94 24060020 */ li $a2, 32 -/* 09AB98 80099F98 3C0E8012 */ lui $t6, %hi(D_801264D4) # $t6, 0x8012 -/* 09AB9C 80099F9C 8DCE64D4 */ lw $t6, %lo(D_801264D4)($t6) -/* 09ABA0 80099FA0 24120038 */ li $s2, 56 -/* 09ABA4 80099FA4 1DC00014 */ bgtz $t6, .L80099FF8 -/* 09ABA8 80099FA8 24090003 */ li $t1, 3 -/* 09ABAC 80099FAC 240F00FF */ li $t7, 255 -/* 09ABB0 80099FB0 AFAF0010 */ sw $t7, 0x10($sp) -/* 09ABB4 80099FB4 240400FF */ li $a0, 255 -/* 09ABB8 80099FB8 240500FF */ li $a1, 255 -/* 09ABBC 80099FBC 240600FF */ li $a2, 255 -/* 09ABC0 80099FC0 0C0310E1 */ jal set_text_colour -/* 09ABC4 80099FC4 00003825 */ move $a3, $zero -/* 09ABC8 80099FC8 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 09ABCC 80099FCC 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 09ABD0 80099FD0 8FA600D0 */ lw $a2, 0xd0($sp) -/* 09ABD4 80099FD4 2419000C */ li $t9, 12 -/* 09ABD8 80099FD8 8F07014C */ lw $a3, 0x14c($t8) -/* 09ABDC 80099FDC AFB90010 */ sw $t9, 0x10($sp) -/* 09ABE0 80099FE0 02E02025 */ move $a0, $s7 -/* 09ABE4 80099FE4 240500A0 */ li $a1, 160 -/* 09ABE8 80099FE8 0C031110 */ jal draw_text -/* 09ABEC 80099FEC 24C60078 */ addiu $a2, $a2, 0x78 -/* 09ABF0 80099FF0 100001ED */ b .L8009A7A8 -/* 09ABF4 80099FF4 8FBF005C */ lw $ra, 0x5c($sp) -.L80099FF8: -/* 09ABF8 80099FF8 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 -/* 09ABFC 80099FFC 8C4263BC */ lw $v0, %lo(gOptionBlinkTimer)($v0) -/* 09AC00 8009A000 AFA900E8 */ sw $t1, 0xe8($sp) -/* 09AC04 8009A004 000250C0 */ sll $t2, $v0, 3 -/* 09AC08 8009A008 29410100 */ slti $at, $t2, 0x100 -/* 09AC0C 8009A00C 14200003 */ bnez $at, .L8009A01C -/* 09AC10 8009A010 01401025 */ move $v0, $t2 -/* 09AC14 8009A014 240B01FF */ li $t3, 511 -/* 09AC18 8009A018 016A1023 */ subu $v0, $t3, $t2 -.L8009A01C: -/* 09AC1C 8009A01C 2401FF00 */ li $at, -256 -/* 09AC20 8009A020 00416025 */ or $t4, $v0, $at -/* 09AC24 8009A024 AFAC00D8 */ sw $t4, 0xd8($sp) -/* 09AC28 8009A028 0C0310BB */ jal set_text_font -/* 09AC2C 8009A02C 24040001 */ li $a0, 1 -/* 09AC30 8009A030 3C0D8012 */ lui $t5, %hi(D_801264D4) # $t5, 0x8012 -/* 09AC34 8009A034 8FA200E4 */ lw $v0, 0xe4($sp) -/* 09AC38 8009A038 8DAD64D4 */ lw $t5, %lo(D_801264D4)($t5) -/* 09AC3C 8009A03C 3C0E8012 */ lui $t6, %hi(D_80126508) # $t6, 0x8012 -/* 09AC40 8009A040 004D082A */ slt $at, $v0, $t5 -/* 09AC44 8009A044 1020012B */ beqz $at, .L8009A4F4 -/* 09AC48 8009A048 25CE6508 */ addiu $t6, %lo(D_80126508) # addiu $t6, $t6, 0x6508 -/* 09AC4C 8009A04C 240D0028 */ li $t5, 40 -/* 09AC50 8009A050 448D2000 */ mtc1 $t5, $f4 -/* 09AC54 8009A054 3C0F8012 */ lui $t7, %hi(D_80126510) # $t7, 0x8012 -/* 09AC58 8009A058 468021A0 */ cvt.s.w $f6, $f4 -/* 09AC5C 8009A05C 3C198012 */ lui $t9, %hi(D_80126518) # $t9, 0x8012 -/* 09AC60 8009A060 3C0B8012 */ lui $t3, %hi(D_80126520) # $t3, 0x8012 -/* 09AC64 8009A064 256B6520 */ addiu $t3, %lo(D_80126520) # addiu $t3, $t3, 0x6520 -/* 09AC68 8009A068 27396518 */ addiu $t9, %lo(D_80126518) # addiu $t9, $t9, 0x6518 -/* 09AC6C 8009A06C 25EF6510 */ addiu $t7, %lo(D_80126510) # addiu $t7, $t7, 0x6510 -/* 09AC70 8009A070 00025040 */ sll $t2, $v0, 1 -/* 09AC74 8009A074 014B6021 */ addu $t4, $t2, $t3 -/* 09AC78 8009A078 004FC021 */ addu $t8, $v0, $t7 -/* 09AC7C 8009A07C 00594821 */ addu $t1, $v0, $t9 -/* 09AC80 8009A080 3C15800E */ lui $s5, %hi(D_800E1E20) # $s5, 0x800e -/* 09AC84 8009A084 3C11800E */ lui $s1, %hi(D_800E1754) # $s1, 0x800e -/* 09AC88 8009A088 26311754 */ addiu $s1, %lo(D_800E1754) # addiu $s1, $s1, 0x1754 -/* 09AC8C 8009A08C 26B51E20 */ addiu $s5, %lo(D_800E1E20) # addiu $s5, $s5, 0x1e20 -/* 09AC90 8009A090 AFA90070 */ sw $t1, 0x70($sp) -/* 09AC94 8009A094 AFB80074 */ sw $t8, 0x74($sp) -/* 09AC98 8009A098 AFAC006C */ sw $t4, 0x6c($sp) -/* 09AC9C 8009A09C E7A60068 */ swc1 $f6, 0x68($sp) -/* 09ACA0 8009A0A0 004EF021 */ addu $fp, $v0, $t6 -/* 09ACA4 8009A0A4 24160004 */ li $s6, 4 -/* 09ACA8 8009A0A8 2414003F */ li $s4, 63 -/* 09ACAC 8009A0AC 27B30088 */ addiu $s3, $sp, 0x88 -.L8009A0B0: -/* 09ACB0 8009A0B0 93C40000 */ lbu $a0, ($fp) -/* 09ACB4 8009A0B4 0C01AC64 */ jal get_map_world_id -/* 09ACB8 8009A0B8 00000000 */ nop -/* 09ACBC 8009A0BC 2443FFFF */ addiu $v1, $v0, -1 -/* 09ACC0 8009A0C0 04600004 */ bltz $v1, .L8009A0D4 -/* 09ACC4 8009A0C4 00604025 */ move $t0, $v1 -/* 09ACC8 8009A0C8 28610005 */ slti $at, $v1, 5 -/* 09ACCC 8009A0CC 14200002 */ bnez $at, .L8009A0D8 -/* 09ACD0 8009A0D0 00000000 */ nop -.L8009A0D4: -/* 09ACD4 8009A0D4 00004025 */ move $t0, $zero -.L8009A0D8: -/* 09ACD8 8009A0D8 93C40000 */ lbu $a0, ($fp) -/* 09ACDC 8009A0DC 0C01AF77 */ jal get_level_name -/* 09ACE0 8009A0E0 AFA800EC */ sw $t0, 0xec($sp) -/* 09ACE4 8009A0E4 904E0000 */ lbu $t6, ($v0) -/* 09ACE8 8009A0E8 8FA800EC */ lw $t0, 0xec($sp) -/* 09ACEC 8009A0EC 11C00013 */ beqz $t6, .L8009A13C -/* 09ACF0 8009A0F0 00008025 */ move $s0, $zero -/* 09ACF4 8009A0F4 90450000 */ lbu $a1, ($v0) -/* 09ACF8 8009A0F8 02602021 */ addu $a0, $s3, $zero -/* 09ACFC 8009A0FC 00403021 */ addu $a2, $v0, $zero -/* 09AD00 8009A100 30A300FF */ andi $v1, $a1, 0xff -.L8009A104: -/* 09AD04 8009A104 28610061 */ slti $at, $v1, 0x61 -/* 09AD08 8009A108 14200005 */ bnez $at, .L8009A120 -/* 09AD0C 8009A10C A0850000 */ sb $a1, ($a0) -/* 09AD10 8009A110 2861007B */ slti $at, $v1, 0x7b -/* 09AD14 8009A114 10200002 */ beqz $at, .L8009A120 -/* 09AD18 8009A118 386F0020 */ xori $t7, $v1, 0x20 -/* 09AD1C 8009A11C A08F0000 */ sb $t7, ($a0) -.L8009A120: -/* 09AD20 8009A120 90C50001 */ lbu $a1, 1($a2) -/* 09AD24 8009A124 26100001 */ addiu $s0, $s0, 1 -/* 09AD28 8009A128 24840001 */ addiu $a0, $a0, 1 -/* 09AD2C 8009A12C 10A00003 */ beqz $a1, .L8009A13C -/* 09AD30 8009A130 24C60001 */ addiu $a2, $a2, 1 -/* 09AD34 8009A134 1614FFF3 */ bne $s0, $s4, .L8009A104 -/* 09AD38 8009A138 30A300FF */ andi $v1, $a1, 0xff -.L8009A13C: -/* 09AD3C 8009A13C 44924000 */ mtc1 $s2, $f8 -/* 09AD40 8009A140 0270C021 */ addu $t8, $s3, $s0 -/* 09AD44 8009A144 A3000000 */ sb $zero, ($t8) -/* 09AD48 8009A148 3C013F40 */ li $at, 0x3F400000 # 0.750000 -/* 09AD4C 8009A14C 46804220 */ cvt.s.w $f8, $f8 -/* 09AD50 8009A150 44815000 */ mtc1 $at, $f10 -/* 09AD54 8009A154 3C013F50 */ li $at, 0x3F500000 # 0.812500 -/* 09AD58 8009A158 0008C880 */ sll $t9, $t0, 2 -/* 09AD5C 8009A15C 3C05800E */ lui $a1, %hi(D_800E16F4) # $a1, 0x800e -/* 09AD60 8009A160 44818000 */ mtc1 $at, $f16 -/* 09AD64 8009A164 00B92821 */ addu $a1, $a1, $t9 -/* 09AD68 8009A168 8CA516F4 */ lw $a1, %lo(D_800E16F4)($a1) -/* 09AD6C 8009A16C 44074000 */ mfc1 $a3, $f8 -/* 09AD70 8009A170 8FA60068 */ lw $a2, 0x68($sp) -/* 09AD74 8009A174 2409FFFF */ li $t1, -1 -/* 09AD78 8009A178 AFA90018 */ sw $t1, 0x18($sp) -/* 09AD7C 8009A17C AFA0001C */ sw $zero, 0x1c($sp) -/* 09AD80 8009A180 00008025 */ move $s0, $zero -/* 09AD84 8009A184 02E02025 */ move $a0, $s7 -/* 09AD88 8009A188 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 09AD8C 8009A18C 0C01E340 */ jal render_texture_rectangle_scaled -/* 09AD90 8009A190 E7B00014 */ swc1 $f16, 0x14($sp) -/* 09AD94 8009A194 240A0034 */ li $t2, 52 -/* 09AD98 8009A198 240B0020 */ li $t3, 32 -/* 09AD9C 8009A19C 240C0050 */ li $t4, 80 -/* 09ADA0 8009A1A0 240D00B0 */ li $t5, 176 -/* 09ADA4 8009A1A4 240E0080 */ li $t6, 128 -/* 09ADA8 8009A1A8 AFAE0028 */ sw $t6, 0x28($sp) -/* 09ADAC 8009A1AC AFAD0024 */ sw $t5, 0x24($sp) -/* 09ADB0 8009A1B0 AFAC0020 */ sw $t4, 0x20($sp) -/* 09ADB4 8009A1B4 AFAB001C */ sw $t3, 0x1c($sp) -/* 09ADB8 8009A1B8 AFAA0010 */ sw $t2, 0x10($sp) -/* 09ADBC 8009A1BC 02E02025 */ move $a0, $s7 -/* 09ADC0 8009A1C0 24050028 */ li $a1, 40 -/* 09ADC4 8009A1C4 02403025 */ move $a2, $s2 -/* 09ADC8 8009A1C8 240700F0 */ li $a3, 240 -/* 09ADCC 8009A1CC AFB60014 */ sw $s6, 0x14($sp) -/* 09ADD0 8009A1D0 0C0203A4 */ jal func_80080E90 -/* 09ADD4 8009A1D4 AFB60018 */ sw $s6, 0x18($sp) -/* 09ADD8 8009A1D8 3C188012 */ lui $t8, %hi(D_80126498) # $t8, 0x8012 -/* 09ADDC 8009A1DC 8F186498 */ lw $t8, %lo(D_80126498)($t8) -/* 09ADE0 8009A1E0 8FAF00E4 */ lw $t7, 0xe4($sp) -/* 09ADE4 8009A1E4 8FA200D8 */ lw $v0, 0xd8($sp) -/* 09ADE8 8009A1E8 15F8000D */ bne $t7, $t8, .L8009A220 -/* 09ADEC 8009A1EC 02E02025 */ move $a0, $s7 -/* 09ADF0 8009A1F0 24190034 */ li $t9, 52 -/* 09ADF4 8009A1F4 AFB90010 */ sw $t9, 0x10($sp) -/* 09ADF8 8009A1F8 24050028 */ li $a1, 40 -/* 09ADFC 8009A1FC 02403025 */ move $a2, $s2 -/* 09AE00 8009A200 240700F0 */ li $a3, 240 -/* 09AE04 8009A204 AFB60014 */ sw $s6, 0x14($sp) -/* 09AE08 8009A208 AFB60018 */ sw $s6, 0x18($sp) -/* 09AE0C 8009A20C AFA2001C */ sw $v0, 0x1c($sp) -/* 09AE10 8009A210 AFA20020 */ sw $v0, 0x20($sp) -/* 09AE14 8009A214 AFA20024 */ sw $v0, 0x24($sp) -/* 09AE18 8009A218 0C0203A4 */ jal func_80080E90 -/* 09AE1C 8009A21C AFA20028 */ sw $v0, 0x28($sp) -.L8009A220: -/* 09AE20 8009A220 240900FF */ li $t1, 255 -/* 09AE24 8009A224 AFA90010 */ sw $t1, 0x10($sp) -/* 09AE28 8009A228 00002025 */ move $a0, $zero -/* 09AE2C 8009A22C 00002825 */ move $a1, $zero -/* 09AE30 8009A230 00003025 */ move $a2, $zero -/* 09AE34 8009A234 0C0310E1 */ jal set_text_colour -/* 09AE38 8009A238 240700FF */ li $a3, 255 -/* 09AE3C 8009A23C 00105040 */ sll $t2, $s0, 1 -.L8009A240: -/* 09AE40 8009A240 02AA1021 */ addu $v0, $s5, $t2 -/* 09AE44 8009A244 804B0000 */ lb $t3, ($v0) -/* 09AE48 8009A248 804D0001 */ lb $t5, 1($v0) -/* 09AE4C 8009A24C 862C0000 */ lh $t4, ($s1) -/* 09AE50 8009A250 862F0002 */ lh $t7, 2($s1) -/* 09AE54 8009A254 2418000C */ li $t8, 12 -/* 09AE58 8009A258 01B27021 */ addu $t6, $t5, $s2 -/* 09AE5C 8009A25C 016C2821 */ addu $a1, $t3, $t4 -/* 09AE60 8009A260 24A50028 */ addiu $a1, $a1, 0x28 -/* 09AE64 8009A264 AFB80010 */ sw $t8, 0x10($sp) -/* 09AE68 8009A268 02E02025 */ move $a0, $s7 -/* 09AE6C 8009A26C 02603825 */ move $a3, $s3 -/* 09AE70 8009A270 0C031110 */ jal draw_text -/* 09AE74 8009A274 01CF3021 */ addu $a2, $t6, $t7 -/* 09AE78 8009A278 26100001 */ addiu $s0, $s0, 1 -/* 09AE7C 8009A27C 1616FFF0 */ bne $s0, $s6, .L8009A240 -/* 09AE80 8009A280 00105040 */ sll $t2, $s0, 1 -/* 09AE84 8009A284 241900FF */ li $t9, 255 -/* 09AE88 8009A288 AFB90010 */ sw $t9, 0x10($sp) -/* 09AE8C 8009A28C 240400C8 */ li $a0, 200 -/* 09AE90 8009A290 240500E4 */ li $a1, 228 -/* 09AE94 8009A294 24060050 */ li $a2, 80 -/* 09AE98 8009A298 0C0310E1 */ jal set_text_colour -/* 09AE9C 8009A29C 240700FF */ li $a3, 255 -/* 09AEA0 8009A2A0 86250000 */ lh $a1, ($s1) -/* 09AEA4 8009A2A4 86290002 */ lh $t1, 2($s1) -/* 09AEA8 8009A2A8 240A000C */ li $t2, 12 -/* 09AEAC 8009A2AC AFAA0010 */ sw $t2, 0x10($sp) -/* 09AEB0 8009A2B0 02E02025 */ move $a0, $s7 -/* 09AEB4 8009A2B4 02603825 */ move $a3, $s3 -/* 09AEB8 8009A2B8 24A50028 */ addiu $a1, $a1, 0x28 -/* 09AEBC 8009A2BC 0C031110 */ jal draw_text -/* 09AEC0 8009A2C0 01323021 */ addu $a2, $t1, $s2 -/* 09AEC4 8009A2C4 8FAB0074 */ lw $t3, 0x74($sp) -/* 09AEC8 8009A2C8 3C05800E */ lui $a1, %hi(gRacerPortraits) # $a1, 0x800e -/* 09AECC 8009A2CC 916C0000 */ lbu $t4, ($t3) -/* 09AED0 8009A2D0 86260004 */ lh $a2, 4($s1) -/* 09AED4 8009A2D4 000C6880 */ sll $t5, $t4, 2 -/* 09AED8 8009A2D8 862E0006 */ lh $t6, 6($s1) -/* 09AEDC 8009A2DC 00AD2821 */ addu $a1, $a1, $t5 -/* 09AEE0 8009A2E0 8CA50AF0 */ lw $a1, %lo(gRacerPortraits)($a1) -/* 09AEE4 8009A2E4 240F00FF */ li $t7, 255 -/* 09AEE8 8009A2E8 241800FF */ li $t8, 255 -/* 09AEEC 8009A2EC 241900FF */ li $t9, 255 -/* 09AEF0 8009A2F0 240900FF */ li $t1, 255 -/* 09AEF4 8009A2F4 AFA9001C */ sw $t1, 0x1c($sp) -/* 09AEF8 8009A2F8 AFB90018 */ sw $t9, 0x18($sp) -/* 09AEFC 8009A2FC AFB80014 */ sw $t8, 0x14($sp) -/* 09AF00 8009A300 AFAF0010 */ sw $t7, 0x10($sp) -/* 09AF04 8009A304 02E02025 */ move $a0, $s7 -/* 09AF08 8009A308 24C60028 */ addiu $a2, $a2, 0x28 -/* 09AF0C 8009A30C 0C01E2AE */ jal render_textured_rectangle -/* 09AF10 8009A310 01D23821 */ addu $a3, $t6, $s2 -/* 09AF14 8009A314 8FAA0070 */ lw $t2, 0x70($sp) -/* 09AF18 8009A318 24010001 */ li $at, 1 -/* 09AF1C 8009A31C 91420000 */ lbu $v0, ($t2) -/* 09AF20 8009A320 02E02025 */ move $a0, $s7 -/* 09AF24 8009A324 10410007 */ beq $v0, $at, .L8009A344 -/* 09AF28 8009A328 240FFFFF */ li $t7, -1 -/* 09AF2C 8009A32C 24010002 */ li $at, 2 -/* 09AF30 8009A330 10410007 */ beq $v0, $at, .L8009A350 -/* 09AF34 8009A334 3C05800E */ lui $a1, %hi(gRaceSelectionPlaneTex) # $a1, 0x800e -/* 09AF38 8009A338 3C05800E */ lui $a1, %hi(gRaceSelectionCarTex) # $a1, 0x800e -/* 09AF3C 8009A33C 10000005 */ b .L8009A354 -/* 09AF40 8009A340 24A5045C */ addiu $a1, %lo(gRaceSelectionCarTex) # addiu $a1, $a1, 0x45c -.L8009A344: -/* 09AF44 8009A344 3C05800E */ lui $a1, %hi(gRaceSelectionHoverTex) # $a1, 0x800e -/* 09AF48 8009A348 10000002 */ b .L8009A354 -/* 09AF4C 8009A34C 24A50474 */ addiu $a1, %lo(gRaceSelectionHoverTex) # addiu $a1, $a1, 0x474 -.L8009A350: -/* 09AF50 8009A350 24A5048C */ addiu $a1, %lo(gRaceSelectionPlaneTex) # addiu $a1, $a1, 0x48c -.L8009A354: -/* 09AF54 8009A354 862B0008 */ lh $t3, 8($s1) -/* 09AF58 8009A358 862D000A */ lh $t5, 0xa($s1) -/* 09AF5C 8009A35C 256C0028 */ addiu $t4, $t3, 0x28 -/* 09AF60 8009A360 01B27021 */ addu $t6, $t5, $s2 -/* 09AF64 8009A364 448E2000 */ mtc1 $t6, $f4 -/* 09AF68 8009A368 448C9000 */ mtc1 $t4, $f18 -/* 09AF6C 8009A36C 46802120 */ cvt.s.w $f4, $f4 -/* 09AF70 8009A370 3C013F20 */ li $at, 0x3F200000 # 0.625000 -/* 09AF74 8009A374 44810000 */ mtc1 $at, $f0 -/* 09AF78 8009A378 468094A0 */ cvt.s.w $f18, $f18 -/* 09AF7C 8009A37C 44072000 */ mfc1 $a3, $f4 -/* 09AF80 8009A380 AFAF0018 */ sw $t7, 0x18($sp) -/* 09AF84 8009A384 44069000 */ mfc1 $a2, $f18 -/* 09AF88 8009A388 AFA0001C */ sw $zero, 0x1c($sp) -/* 09AF8C 8009A38C E7A00010 */ swc1 $f0, 0x10($sp) -/* 09AF90 8009A390 0C01E340 */ jal render_texture_rectangle_scaled -/* 09AF94 8009A394 E7A00014 */ swc1 $f0, 0x14($sp) -/* 09AF98 8009A398 0C01ECF4 */ jal reset_render_settings -/* 09AF9C 8009A39C 02E02025 */ move $a0, $s7 -/* 09AFA0 8009A3A0 8638000C */ lh $t8, 0xc($s1) -/* 09AFA4 8009A3A4 3C02800E */ lui $v0, %hi(gMenuImageStack) # $v0, 0x800e -/* 09AFA8 8009A3A8 2719FF88 */ addiu $t9, $t8, -0x78 -/* 09AFAC 8009A3AC 44993000 */ mtc1 $t9, $f6 -/* 09AFB0 8009A3B0 2442F75C */ addiu $v0, %lo(gMenuImageStack) # addiu $v0, $v0, -0x8a4 -/* 09AFB4 8009A3B4 46803220 */ cvt.s.w $f8, $f6 -/* 09AFB8 8009A3B8 8C490000 */ lw $t1, ($v0) -/* 09AFBC 8009A3BC 3C01800F */ lui $at, %hi(D_800E8570) # $at, 0x800f -/* 09AFC0 8009A3C0 E52800EC */ swc1 $f8, 0xec($t1) -/* 09AFC4 8009A3C4 862A000E */ lh $t2, 0xe($s1) -/* 09AFC8 8009A3C8 8FAD00D0 */ lw $t5, 0xd0($sp) -/* 09AFCC 8009A3CC 000A5823 */ negu $t3, $t2 -/* 09AFD0 8009A3D0 01726023 */ subu $t4, $t3, $s2 -/* 09AFD4 8009A3D4 018D7021 */ addu $t6, $t4, $t5 -/* 09AFD8 8009A3D8 25CF0078 */ addiu $t7, $t6, 0x78 -/* 09AFDC 8009A3DC 448F5000 */ mtc1 $t7, $f10 -/* 09AFE0 8009A3E0 8C580000 */ lw $t8, ($v0) -/* 09AFE4 8009A3E4 46805420 */ cvt.s.w $f16, $f10 -/* 09AFE8 8009A3E8 24040007 */ li $a0, 7 -/* 09AFEC 8009A3EC E71000F0 */ swc1 $f16, 0xf0($t8) -/* 09AFF0 8009A3F0 8C590000 */ lw $t9, ($v0) -/* 09AFF4 8009A3F4 C4328570 */ lwc1 $f18, %lo(D_800E8570)($at) -/* 09AFF8 8009A3F8 0C027298 */ jal func_8009CA60 -/* 09AFFC 8009A3FC E73200E8 */ swc1 $f18, 0xe8($t9) -/* 09B000 8009A400 24090080 */ li $t1, 128 -/* 09B004 8009A404 3C01800E */ lui $at, %hi(sMenuGuiOpacity) # $at, 0x800e -/* 09B008 8009A408 AC29F764 */ sw $t1, %lo(sMenuGuiOpacity)($at) -/* 09B00C 8009A40C 862B0012 */ lh $t3, 0x12($s1) -/* 09B010 8009A410 8FAA006C */ lw $t2, 0x6c($sp) -/* 09B014 8009A414 8FAE00D0 */ lw $t6, 0xd0($sp) -/* 09B018 8009A418 000B6023 */ negu $t4, $t3 -/* 09B01C 8009A41C 95440000 */ lhu $a0, ($t2) -/* 09B020 8009A420 86250010 */ lh $a1, 0x10($s1) -/* 09B024 8009A424 01926823 */ subu $t5, $t4, $s2 -/* 09B028 8009A428 01AE3021 */ addu $a2, $t5, $t6 -/* 09B02C 8009A42C 24C60077 */ addiu $a2, $a2, 0x77 -/* 09B030 8009A430 AFA00018 */ sw $zero, 0x18($sp) -/* 09B034 8009A434 AFA00014 */ sw $zero, 0x14($sp) -/* 09B038 8009A438 AFA00010 */ sw $zero, 0x10($sp) -/* 09B03C 8009A43C 00003825 */ move $a3, $zero -/* 09B040 8009A440 0C020600 */ jal show_timestamp -/* 09B044 8009A444 24A5FF89 */ addiu $a1, $a1, -0x77 -/* 09B048 8009A448 240F00FF */ li $t7, 255 -/* 09B04C 8009A44C 3C01800E */ lui $at, %hi(sMenuGuiOpacity) # $at, 0x800e -/* 09B050 8009A450 AC2FF764 */ sw $t7, %lo(sMenuGuiOpacity)($at) -/* 09B054 8009A454 86390012 */ lh $t9, 0x12($s1) -/* 09B058 8009A458 8FB8006C */ lw $t8, 0x6c($sp) -/* 09B05C 8009A45C 8FAB00D0 */ lw $t3, 0xd0($sp) -/* 09B060 8009A460 00194823 */ negu $t1, $t9 -/* 09B064 8009A464 97040000 */ lhu $a0, ($t8) -/* 09B068 8009A468 86250010 */ lh $a1, 0x10($s1) -/* 09B06C 8009A46C 01325023 */ subu $t2, $t1, $s2 -/* 09B070 8009A470 240C00C0 */ li $t4, 192 -/* 09B074 8009A474 240D00FF */ li $t5, 255 -/* 09B078 8009A478 014B3021 */ addu $a2, $t2, $t3 -/* 09B07C 8009A47C 24C60079 */ addiu $a2, $a2, 0x79 -/* 09B080 8009A480 AFAD0014 */ sw $t5, 0x14($sp) -/* 09B084 8009A484 AFAC0010 */ sw $t4, 0x10($sp) -/* 09B088 8009A488 AFA00018 */ sw $zero, 0x18($sp) -/* 09B08C 8009A48C 240700FF */ li $a3, 255 -/* 09B090 8009A490 0C020600 */ jal show_timestamp -/* 09B094 8009A494 24A5FF87 */ addiu $a1, $a1, -0x79 -/* 09B098 8009A498 8FB80074 */ lw $t8, 0x74($sp) -/* 09B09C 8009A49C 8FAE00E4 */ lw $t6, 0xe4($sp) -/* 09B0A0 8009A4A0 27190001 */ addiu $t9, $t8, 1 -/* 09B0A4 8009A4A4 3C188012 */ lui $t8, %hi(D_801264D4) # $t8, 0x8012 -/* 09B0A8 8009A4A8 8FA90070 */ lw $t1, 0x70($sp) -/* 09B0AC 8009A4AC 8FAB006C */ lw $t3, 0x6c($sp) -/* 09B0B0 8009A4B0 8FAD00E8 */ lw $t5, 0xe8($sp) -/* 09B0B4 8009A4B4 8F1864D4 */ lw $t8, %lo(D_801264D4)($t8) -/* 09B0B8 8009A4B8 25CF0001 */ addiu $t7, $t6, 1 -/* 09B0BC 8009A4BC 252A0001 */ addiu $t2, $t1, 1 -/* 09B0C0 8009A4C0 256C0002 */ addiu $t4, $t3, 2 -/* 09B0C4 8009A4C4 25AEFFFF */ addiu $t6, $t5, -1 -/* 09B0C8 8009A4C8 01F8082A */ slt $at, $t7, $t8 -/* 09B0CC 8009A4CC AFAC006C */ sw $t4, 0x6c($sp) -/* 09B0D0 8009A4D0 AFAA0070 */ sw $t2, 0x70($sp) -/* 09B0D4 8009A4D4 AFAF00E4 */ sw $t7, 0xe4($sp) -/* 09B0D8 8009A4D8 AFB90074 */ sw $t9, 0x74($sp) -/* 09B0DC 8009A4DC 27DE0001 */ addiu $fp, $fp, 1 -/* 09B0E0 8009A4E0 AFAE00E8 */ sw $t6, 0xe8($sp) -/* 09B0E4 8009A4E4 10200003 */ beqz $at, .L8009A4F4 -/* 09B0E8 8009A4E8 26520036 */ addiu $s2, $s2, 0x36 -/* 09B0EC 8009A4EC 1DC0FEF0 */ bgtz $t6, .L8009A0B0 -/* 09B0F0 8009A4F0 00000000 */ nop -.L8009A4F4: -/* 09B0F4 8009A4F4 3C108012 */ lui $s0, %hi(gMenuOptionCount) # $s0, 0x8012 -/* 09B0F8 8009A4F8 8FB900D8 */ lw $t9, 0xd8($sp) -/* 09B0FC 8009A4FC 261063E0 */ addiu $s0, %lo(gMenuOptionCount) # addiu $s0, $s0, 0x63e0 -/* 09B100 8009A500 8E0A0000 */ lw $t2, ($s0) -/* 09B104 8009A504 332900FF */ andi $t1, $t9, 0xff -/* 09B108 8009A508 19400063 */ blez $t2, .L8009A698 -/* 09B10C 8009A50C AFA900D8 */ sw $t1, 0xd8($sp) -/* 09B110 8009A510 0C0315B4 */ jal clear_dialogue_box_open_flag -/* 09B114 8009A514 24040007 */ li $a0, 7 -/* 09B118 8009A518 0C031525 */ jal assign_dialogue_box_id -/* 09B11C 8009A51C 24040007 */ li $a0, 7 -/* 09B120 8009A520 240B008A */ li $t3, 138 -/* 09B124 8009A524 AFAB0010 */ sw $t3, 0x10($sp) -/* 09B128 8009A528 24040007 */ li $a0, 7 -/* 09B12C 8009A52C 24050068 */ li $a1, 104 -/* 09B130 8009A530 24060066 */ li $a2, 102 -/* 09B134 8009A534 0C0313B7 */ jal set_current_dialogue_box_coords -/* 09B138 8009A538 240700D8 */ li $a3, 216 -/* 09B13C 8009A53C 240C00C0 */ li $t4, 192 -/* 09B140 8009A540 AFAC0010 */ sw $t4, 0x10($sp) -/* 09B144 8009A544 24040007 */ li $a0, 7 -/* 09B148 8009A548 00002825 */ move $a1, $zero -/* 09B14C 8009A54C 00003025 */ move $a2, $zero -/* 09B150 8009A550 0C0313EF */ jal set_current_dialogue_background_colour -/* 09B154 8009A554 00003825 */ move $a3, $zero -/* 09B158 8009A558 24040007 */ li $a0, 7 -/* 09B15C 8009A55C 0C0313DF */ jal set_dialogue_font -/* 09B160 8009A560 00002825 */ move $a1, $zero -/* 09B164 8009A564 24040007 */ li $a0, 7 -/* 09B168 8009A568 00002825 */ move $a1, $zero -/* 09B16C 8009A56C 00003025 */ move $a2, $zero -/* 09B170 8009A570 00003825 */ move $a3, $zero -/* 09B174 8009A574 0C031414 */ jal set_current_text_background_colour -/* 09B178 8009A578 AFA00010 */ sw $zero, 0x10($sp) -/* 09B17C 8009A57C 8E0D0000 */ lw $t5, ($s0) -/* 09B180 8009A580 24010001 */ li $at, 1 -/* 09B184 8009A584 15A1000C */ bne $t5, $at, .L8009A5B8 -/* 09B188 8009A588 24040007 */ li $a0, 7 -/* 09B18C 8009A58C 8FAF00D8 */ lw $t7, 0xd8($sp) -/* 09B190 8009A590 241800FF */ li $t8, 255 -/* 09B194 8009A594 AFB80014 */ sw $t8, 0x14($sp) -/* 09B198 8009A598 24040007 */ li $a0, 7 -/* 09B19C 8009A59C 240500FF */ li $a1, 255 -/* 09B1A0 8009A5A0 240600FF */ li $a2, 255 -/* 09B1A4 8009A5A4 240700FF */ li $a3, 255 -/* 09B1A8 8009A5A8 0C031400 */ jal set_current_text_colour -/* 09B1AC 8009A5AC AFAF0010 */ sw $t7, 0x10($sp) -/* 09B1B0 8009A5B0 10000008 */ b .L8009A5D4 -/* 09B1B4 8009A5B4 00000000 */ nop -.L8009A5B8: -/* 09B1B8 8009A5B8 240E00FF */ li $t6, 255 -/* 09B1BC 8009A5BC AFAE0014 */ sw $t6, 0x14($sp) -/* 09B1C0 8009A5C0 240500FF */ li $a1, 255 -/* 09B1C4 8009A5C4 240600FF */ li $a2, 255 -/* 09B1C8 8009A5C8 240700FF */ li $a3, 255 -/* 09B1CC 8009A5CC 0C031400 */ jal set_current_text_colour -/* 09B1D0 8009A5D0 AFA00010 */ sw $zero, 0x10($sp) -.L8009A5D4: -/* 09B1D4 8009A5D4 3C19800E */ lui $t9, %hi(gMenuText) # $t9, 0x800e -/* 09B1D8 8009A5D8 8F39F4A0 */ lw $t9, %lo(gMenuText)($t9) -/* 09B1DC 8009A5DC 24090001 */ li $t1, 1 -/* 09B1E0 8009A5E0 8F270150 */ lw $a3, 0x150($t9) -/* 09B1E4 8009A5E4 240A000C */ li $t2, 12 -/* 09B1E8 8009A5E8 AFAA0014 */ sw $t2, 0x14($sp) -/* 09B1EC 8009A5EC AFA90010 */ sw $t1, 0x10($sp) -/* 09B1F0 8009A5F0 24040007 */ li $a0, 7 -/* 09B1F4 8009A5F4 24058000 */ li $a1, -32768 -/* 09B1F8 8009A5F8 0C03145A */ jal render_dialogue_text -/* 09B1FC 8009A5FC 2406000C */ li $a2, 12 -/* 09B200 8009A600 8E0B0000 */ lw $t3, ($s0) -/* 09B204 8009A604 24010002 */ li $at, 2 -/* 09B208 8009A608 1561000C */ bne $t3, $at, .L8009A63C -/* 09B20C 8009A60C 24040007 */ li $a0, 7 -/* 09B210 8009A610 8FAC00D8 */ lw $t4, 0xd8($sp) -/* 09B214 8009A614 240D00FF */ li $t5, 255 -/* 09B218 8009A618 AFAD0014 */ sw $t5, 0x14($sp) -/* 09B21C 8009A61C 24040007 */ li $a0, 7 -/* 09B220 8009A620 240500FF */ li $a1, 255 -/* 09B224 8009A624 240600FF */ li $a2, 255 -/* 09B228 8009A628 240700FF */ li $a3, 255 -/* 09B22C 8009A62C 0C031400 */ jal set_current_text_colour -/* 09B230 8009A630 AFAC0010 */ sw $t4, 0x10($sp) -/* 09B234 8009A634 10000008 */ b .L8009A658 -/* 09B238 8009A638 00000000 */ nop -.L8009A63C: -/* 09B23C 8009A63C 240F00FF */ li $t7, 255 -/* 09B240 8009A640 AFAF0014 */ sw $t7, 0x14($sp) -/* 09B244 8009A644 240500FF */ li $a1, 255 -/* 09B248 8009A648 240600FF */ li $a2, 255 -/* 09B24C 8009A64C 240700FF */ li $a3, 255 -/* 09B250 8009A650 0C031400 */ jal set_current_text_colour -/* 09B254 8009A654 AFA00010 */ sw $zero, 0x10($sp) -.L8009A658: -/* 09B258 8009A658 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 09B25C 8009A65C 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 09B260 8009A660 240E0001 */ li $t6, 1 -/* 09B264 8009A664 8F070154 */ lw $a3, 0x154($t8) -/* 09B268 8009A668 2419000C */ li $t9, 12 -/* 09B26C 8009A66C AFB90014 */ sw $t9, 0x14($sp) -/* 09B270 8009A670 AFAE0010 */ sw $t6, 0x10($sp) -/* 09B274 8009A674 24040007 */ li $a0, 7 -/* 09B278 8009A678 24058000 */ li $a1, -32768 -/* 09B27C 8009A67C 0C03145A */ jal render_dialogue_text -/* 09B280 8009A680 2406001C */ li $a2, 28 -/* 09B284 8009A684 02E02025 */ move $a0, $s7 -/* 09B288 8009A688 00002825 */ move $a1, $zero -/* 09B28C 8009A68C 00003025 */ move $a2, $zero -/* 09B290 8009A690 0C0316D6 */ jal render_dialogue_box -/* 09B294 8009A694 24070007 */ li $a3, 7 -.L8009A698: -/* 09B298 8009A698 3C098012 */ lui $t1, %hi(gOptionBlinkTimer) # $t1, 0x8012 -/* 09B29C 8009A69C 8D2963BC */ lw $t1, %lo(gOptionBlinkTimer)($t1) -/* 09B2A0 8009A6A0 3C028012 */ lui $v0, %hi(gOpacityDecayTimer) # $v0, 0x8012 -/* 09B2A4 8009A6A4 312A0010 */ andi $t2, $t1, 0x10 -/* 09B2A8 8009A6A8 1140003E */ beqz $t2, .L8009A7A4 -/* 09B2AC 8009A6AC 3C0B8012 */ lui $t3, %hi(D_801264D4) # $t3, 0x8012 -/* 09B2B0 8009A6B0 8C4263D8 */ lw $v0, %lo(gOpacityDecayTimer)($v0) -/* 09B2B4 8009A6B4 8D6B64D4 */ lw $t3, %lo(D_801264D4)($t3) -/* 09B2B8 8009A6B8 244C0003 */ addiu $t4, $v0, 3 -/* 09B2BC 8009A6BC 018B082A */ slt $at, $t4, $t3 -/* 09B2C0 8009A6C0 1020001C */ beqz $at, .L8009A734 -/* 09B2C4 8009A6C4 3C10800E */ lui $s0, %hi(gMenuSelectionArrowDown) # $s0, 0x800e -/* 09B2C8 8009A6C8 2610043C */ addiu $s0, %lo(gMenuSelectionArrowDown) # addiu $s0, $s0, 0x43c -/* 09B2CC 8009A6CC 240D0080 */ li $t5, 128 -/* 09B2D0 8009A6D0 AFAD001C */ sw $t5, 0x1c($sp) -/* 09B2D4 8009A6D4 02002825 */ move $a1, $s0 -/* 09B2D8 8009A6D8 02E02025 */ move $a0, $s7 -/* 09B2DC 8009A6DC 240600A1 */ li $a2, 161 -/* 09B2E0 8009A6E0 26470003 */ addiu $a3, $s2, 3 -/* 09B2E4 8009A6E4 AFA00010 */ sw $zero, 0x10($sp) -/* 09B2E8 8009A6E8 AFA00014 */ sw $zero, 0x14($sp) -/* 09B2EC 8009A6EC 0C01E2AE */ jal render_textured_rectangle -/* 09B2F0 8009A6F0 AFA00018 */ sw $zero, 0x18($sp) -/* 09B2F4 8009A6F4 240F00FF */ li $t7, 255 -/* 09B2F8 8009A6F8 241800FF */ li $t8, 255 -/* 09B2FC 8009A6FC 240E00FF */ li $t6, 255 -/* 09B300 8009A700 241900FF */ li $t9, 255 -/* 09B304 8009A704 AFB9001C */ sw $t9, 0x1c($sp) -/* 09B308 8009A708 AFAE0018 */ sw $t6, 0x18($sp) -/* 09B30C 8009A70C AFB80014 */ sw $t8, 0x14($sp) -/* 09B310 8009A710 AFAF0010 */ sw $t7, 0x10($sp) -/* 09B314 8009A714 02E02025 */ move $a0, $s7 -/* 09B318 8009A718 02002825 */ move $a1, $s0 -/* 09B31C 8009A71C 2406009F */ li $a2, 159 -/* 09B320 8009A720 0C01E2AE */ jal render_textured_rectangle -/* 09B324 8009A724 26470001 */ addiu $a3, $s2, 1 -/* 09B328 8009A728 3C028012 */ lui $v0, %hi(gOpacityDecayTimer) # $v0, 0x8012 -/* 09B32C 8009A72C 8C4263D8 */ lw $v0, %lo(gOpacityDecayTimer)($v0) -/* 09B330 8009A730 00000000 */ nop -.L8009A734: -/* 09B334 8009A734 18400019 */ blez $v0, .L8009A79C -/* 09B338 8009A738 3C10800E */ lui $s0, %hi(gMenuSelectionArrowUp) # $s0, 0x800e -/* 09B33C 8009A73C 2610041C */ addiu $s0, %lo(gMenuSelectionArrowUp) # addiu $s0, $s0, 0x41c -/* 09B340 8009A740 24090080 */ li $t1, 128 -/* 09B344 8009A744 AFA9001C */ sw $t1, 0x1c($sp) -/* 09B348 8009A748 02002825 */ move $a1, $s0 -/* 09B34C 8009A74C 02E02025 */ move $a0, $s7 -/* 09B350 8009A750 240600A1 */ li $a2, 161 -/* 09B354 8009A754 24070036 */ li $a3, 54 -/* 09B358 8009A758 AFA00010 */ sw $zero, 0x10($sp) -/* 09B35C 8009A75C AFA00014 */ sw $zero, 0x14($sp) -/* 09B360 8009A760 0C01E2AE */ jal render_textured_rectangle -/* 09B364 8009A764 AFA00018 */ sw $zero, 0x18($sp) -/* 09B368 8009A768 240A00FF */ li $t2, 255 -/* 09B36C 8009A76C 240B00FF */ li $t3, 255 -/* 09B370 8009A770 240C00FF */ li $t4, 255 -/* 09B374 8009A774 240D00FF */ li $t5, 255 -/* 09B378 8009A778 AFAD001C */ sw $t5, 0x1c($sp) -/* 09B37C 8009A77C AFAC0018 */ sw $t4, 0x18($sp) -/* 09B380 8009A780 AFAB0014 */ sw $t3, 0x14($sp) -/* 09B384 8009A784 AFAA0010 */ sw $t2, 0x10($sp) -/* 09B388 8009A788 02E02025 */ move $a0, $s7 -/* 09B38C 8009A78C 02002825 */ move $a1, $s0 -/* 09B390 8009A790 2406009F */ li $a2, 159 -/* 09B394 8009A794 0C01E2AE */ jal render_textured_rectangle -/* 09B398 8009A798 24070034 */ li $a3, 52 -.L8009A79C: -/* 09B39C 8009A79C 0C01ECF4 */ jal reset_render_settings -/* 09B3A0 8009A7A0 02E02025 */ move $a0, $s7 -.L8009A7A4: -/* 09B3A4 8009A7A4 8FBF005C */ lw $ra, 0x5c($sp) -.L8009A7A8: -/* 09B3A8 8009A7A8 8FB00038 */ lw $s0, 0x38($sp) -/* 09B3AC 8009A7AC 8FB1003C */ lw $s1, 0x3c($sp) -/* 09B3B0 8009A7B0 8FB20040 */ lw $s2, 0x40($sp) -/* 09B3B4 8009A7B4 8FB30044 */ lw $s3, 0x44($sp) -/* 09B3B8 8009A7B8 8FB40048 */ lw $s4, 0x48($sp) -/* 09B3BC 8009A7BC 8FB5004C */ lw $s5, 0x4c($sp) -/* 09B3C0 8009A7C0 8FB60050 */ lw $s6, 0x50($sp) -/* 09B3C4 8009A7C4 8FB70054 */ lw $s7, 0x54($sp) -/* 09B3C8 8009A7C8 8FBE0058 */ lw $fp, 0x58($sp) -/* 09B3CC 8009A7CC 03E00008 */ jr $ra -/* 09B3D0 8009A7D0 27BD00F0 */ addiu $sp, $sp, 0xf0 - diff --git a/asm/non_matchings/save_data/func_80074B34.s b/asm/non_matchings/save_data/func_80074B34.s index 8e267407..c3508fa9 100644 --- a/asm/non_matchings/save_data/func_80074B34.s +++ b/asm/non_matchings/save_data/func_80074B34.s @@ -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) diff --git a/include/structs.h b/include/structs.h index 8b2a4cea..9c6893f7 100644 --- a/include/structs.h +++ b/include/structs.h @@ -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 */ diff --git a/src/camera.c b/src/camera.c index f66aac6c..ff19b044 100644 --- a/src/camera.c +++ b/src/camera.c @@ -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; diff --git a/src/menu.c b/src/menu.c index 6d78b1ed..9fe596af 100644 --- a/src/menu.c +++ b/src/menu.c @@ -40,8 +40,8 @@ // The bss section needs to stay above the data section! // Otherwise the bss variables will get reordered, which is bad. -DrawTexture *D_80126390; -DrawTexture *D_80126394; +char D_80126390[4]; //course initials +char D_80126394[4]; //flap initials s32 gSaveGhostDelayCounter; s32 gPreviousMenuID; Gfx *sMenuCurrDisplayList; @@ -364,7 +364,7 @@ UNUSED FadeTransition sMenuTransitionFadeOutWhite = FADE_TRANSITION(FADE_FULLSCR s32 D_800DF794 = 4; MenuElement *D_800DF798 = NULL; -s32 D_800DF79C = 0; +s32 D_800DF79C = 0; //PAL Y Offset? s32 D_800DF7A0 = 0; char *gTitleMenuStrings[3] = { 0, 0, 0 }; @@ -805,12 +805,12 @@ s16 D_800E0710[16] = { 0x16, 0x17, 0x20, 0x00 }; -s16 D_800E0730[19] = { - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000 +TextureHeader *D_800E0730[10] = { + NULL, NULL, // Dino domain + NULL, NULL, // Sherbet Island + NULL, NULL, // Snowflake Mountain + NULL, NULL, // Dragon Forest + NULL, NULL // Future Fun Land }; // ID for T.Ts voice lines for each track id. @@ -899,49 +899,71 @@ s16 D_800E0830[8] = { 0x03, 0x0B, 0x0C, -1 }; -s16 D_800E0840[148] = { - 0x0000, 0xFFFF, 0x0001, 0x01FF, - 0xFF00, 0x0200, 0xFFFF, 0x0003, - 0x01FF, 0xFF00, 0x0400, 0xFFFF, - 0x0005, 0x01FF, 0xFF00, 0x0600, - 0xFFFF, 0x0006, 0x0200, 0x4000, - 0x0701, 0xFFFF, 0x0007, 0x0340, - 0x8000, 0x0800, 0xFFFF, 0x0008, - 0x0280, 0xC020, 0x0901, 0xFFFF, - 0x0009, 0x03C0, 0xFF20, 0x0A02, - 0xFFFF, 0x000B, 0x03FF, 0xFF00, - 0x0C02, 0xFFFF, 0x200D, 0x03FF, - 0xFF20, 0x0E02, 0xFFFF, 0x000E, - 0x0400, 0x4000, 0x0F03, 0xFFFF, - 0x000F, 0x0540, 0x8000, 0x1002, - 0xFFFF, 0x2010, 0x0480, 0xC000, - 0x1103, 0xFFFF, 0x2011, 0x05C0, - 0xFF00, 0x1204, 0xFFFF, 0x0013, - 0x05FF, 0xFF00, 0x1404, 0xFFFF, - 0x0015, 0x05FF, 0xFF00, 0x1604, - 0xFFFF, 0x0016, 0x0600, 0x4000, - 0x1705, 0xFFFF, 0x0017, 0x0740, - 0x8000, 0x1804, 0xFFFF, 0x0018, - 0x0680, 0xC020, 0x1905, 0xFFFF, - 0x0019, 0x07C0, 0xFF20, 0x1A06, - 0xFFFF, 0x001B, 0x07FF, 0xFF00, - 0x1C06, 0xFFFF, 0x201D, 0x07FF, - 0xFF20, 0x1E06, 0xFFFF, 0x001E, - 0x0800, 0x4000, 0x1F07, 0xFFFF, - 0x001F, 0x0940, 0x8000, 0x2006, - 0xFFFF, 0x2020, 0x0880, 0xC020, - 0x2107, 0xFFFF, 0x2021, 0x09C0, - 0xFF20, 0x2208, 0xFFFF, 0x0023, - 0x09FF, 0xFF00, 0x2408, 0xFFFF, - 0x2025, 0x09FF, 0xFF20, 0x2608, - 0xFFFF, 0x0027, 0x09FF, 0xFF00, - 0x2808, 0xFFFF, 0x2029, 0x09FF, - 0xFF20, 0xFF00, 0x0000, 0x0000 +// Not a struct, since the entries can *technically* be either 4 or 5 bytes. But it is always 5 in the final game. +u8 D_800E0840[295] = { + 0, 0, 255, 255, 0, + 1, 1, 255, 255, 0, + 2, 0, 255, 255, 0, + 3, 1, 255, 255, 0, + 4, 0, 255, 255, 0, + 5, 1, 255, 255, 0, + 6, 0, 255, 255, 0, + 6, 2, 0, 64, 0, + 7, 1, 255, 255, 0, + 7, 3, 64, 128, 0, + 8, 0, 255, 255, 0, + 8, 2, 128, 192, 32, + 9, 1, 255, 255, 0, + 9, 3, 192, 255, 32, + 10, 2, 255, 255, 0, + 11, 3, 255, 255, 0, + 12, 2, 255, 255, 32, + 13, 3, 255, 255, 32, + 14, 2, 255, 255, 0, + 14, 4, 0, 64, 0, + 15, 3, 255, 255, 0, + 15, 5, 64, 128, 0, + 16, 2, 255, 255, 32, + 16, 4, 128, 192, 0, + 17, 3, 255, 255, 32, + 17, 5, 192, 255, 0, + 18, 4, 255, 255, 0, + 19, 5, 255, 255, 0, + 20, 4, 255, 255, 0, + 21, 5, 255, 255, 0, + 22, 4, 255, 255, 0, + 22, 6, 0, 64, 0, + 23, 5, 255, 255, 0, + 23, 7, 64, 128, 0, + 24, 4, 255, 255, 0, + 24, 6, 128, 192, 32, + 25, 5, 255, 255, 0, + 25, 7, 192, 255, 32, + 26, 6, 255, 255, 0, + 27, 7, 255, 255, 0, + 28, 6, 255, 255, 32, + 29, 7, 255, 255, 32, + 30, 6, 255, 255, 0, + 30, 8, 0, 64, 0, + 31, 7, 255, 255, 0, + 31, 9, 64, 128, 0, + 32, 6, 255, 255, 32, + 32, 8, 128, 192, 32, + 33, 7, 255, 255, 32, + 33, 9, 192, 255, 32, + 34, 8, 255, 255, 0, + 35, 9, 255, 255, 0, + 36, 8, 255, 255, 32, + 37, 9, 255, 255, 32, + 38, 8, 255, 255, 0, + 39, 9, 255, 255, 0, + 40, 8, 255, 255, 32, + 41, 9, 255, 255, 32, + 255, 0, 0, 0, 0 }; - Vertex *D_800E0968 = NULL; s32 D_800E096C = 0; -unk800E0970 *D_800E0970 = NULL; +Triangle *D_800E0970 = NULL; s32 D_800E0974 = 0; char *gQMarkPtr = "?"; s32 D_800E097C = 0; @@ -1220,74 +1242,87 @@ s16 *D_800E14BC[32] = { NULL, NULL, &D_800E13A8[0], &D_800E13A8[48] }; -unk800E153C D_800E153C[] = { - { NULL, 0x00000000 }, - { NULL, 0x00400000 }, - { NULL, 0x00800000 }, - { NULL, 0x00C00000 }, - { NULL, 0x01000000 }, - { NULL, 0x00000020 }, - { NULL, 0x00400020 }, - { NULL, 0x00800020 }, - { NULL, 0x00C00020 }, - { NULL, 0x01000020 }, - { NULL, 0x00000000 }, -}; -unk800E153C D_800E1594[] = { - { NULL, 0x00000000 }, - { NULL, 0x00400000 }, - { NULL, 0x00800000 }, - { NULL, 0x00C00000 }, - { NULL, 0x01000000 }, - { NULL, 0x00000020 }, - { NULL, 0x00400020 }, - { NULL, 0x00800020 }, - { NULL, 0x00C00020 }, - { NULL, 0x01000020 }, - { NULL, 0x00000000 }, -}; -unk800E153C D_800E15EC[] = { - { NULL, 0x00000000 }, - { NULL, 0x00400000 }, - { NULL, 0x00800000 }, - { NULL, 0x00C00000 }, - { NULL, 0x01000000 }, - { NULL, 0x00000020 }, - { NULL, 0x00400020 }, - { NULL, 0x00800020 }, - { NULL, 0x00C00020 }, - { NULL, 0x01000020 }, - { NULL, 0x00000000 }, -}; -unk800E153C D_800E1644[] = { - { NULL, 0x00000000 }, - { NULL, 0x00400000 }, - { NULL, 0x00800000 }, - { NULL, 0x00C00000 }, - { NULL, 0x01000000 }, - { NULL, 0x00000020 }, - { NULL, 0x00400020 }, - { NULL, 0x00800020 }, - { NULL, 0x00C00020 }, - { NULL, 0x01000020 }, - { NULL, 0x00000000 }, -}; -unk800E153C D_800E169C[] = { - { NULL, 0x00000000 }, - { NULL, 0x00400000 }, - { NULL, 0x00800000 }, - { NULL, 0x00C00000 }, - { NULL, 0x01000000 }, - { NULL, 0x00000020 }, - { NULL, 0x00400020 }, - { NULL, 0x00800020 }, - { NULL, 0x00C00020 }, - { NULL, 0x01000020 }, - { NULL, 0x00000000 }, +// DrawTextures for Dino Domain ghost background. +DrawTexture D_800E153C[] = { + { NULL, 0, 0 }, + { NULL, 64, 0 }, + { NULL, 128, 0 }, + { NULL, 192, 0 }, + { NULL, 256, 0 }, + { NULL, 0, 32 }, + { NULL, 64, 32 }, + { NULL, 128, 32 }, + { NULL, 192, 32 }, + { NULL, 256, 32 }, + { NULL, 0, 0 } }; -unk800E153C *D_800E16F4[5] = { - D_800E153C, D_800E1594, D_800E15EC, D_800E1644, D_800E169C +// DrawTextures for Sherbet Island ghost background. +DrawTexture D_800E1594[] = { + { NULL, 0, 0 }, + { NULL, 64, 0 }, + { NULL, 128, 0 }, + { NULL, 192, 0 }, + { NULL, 256, 0 }, + { NULL, 0, 32 }, + { NULL, 64, 32 }, + { NULL, 128, 32 }, + { NULL, 192, 32 }, + { NULL, 256, 32 }, + { NULL, 0, 0 } +}; + +// DrawTextures for Snowflake Mountain ghost background. +DrawTexture D_800E15EC[] = { + { NULL, 0, 0 }, + { NULL, 64, 0 }, + { NULL, 128, 0 }, + { NULL, 192, 0 }, + { NULL, 256, 0 }, + { NULL, 0, 32 }, + { NULL, 64, 32 }, + { NULL, 128, 32 }, + { NULL, 192, 32 }, + { NULL, 256, 32 }, + { NULL, 0, 0 } +}; + +// DrawTextures for Dragon Forest ghost background. +DrawTexture D_800E1644[] = { + { NULL, 0, 0 }, + { NULL, 64, 0 }, + { NULL, 128, 0 }, + { NULL, 192, 0 }, + { NULL, 256, 0 }, + { NULL, 0, 32 }, + { NULL, 64, 32 }, + { NULL, 128, 32 }, + { NULL, 192, 32 }, + { NULL, 256, 32 }, + { NULL, 0, 0 } +}; + +// DrawTextures for Future Fun Land ghost background. +DrawTexture D_800E169C[] = { + { NULL, 0, 0 }, + { NULL, 64, 0 }, + { NULL, 128, 0 }, + { NULL, 192, 0 }, + { NULL, 256, 0 }, + { NULL, 0, 32 }, + { NULL, 64, 32 }, + { NULL, 128, 32 }, + { NULL, 192, 32 }, + { NULL, 256, 32 }, + { NULL, 0, 0 } +}; + +DrawTexture *D_800E16F4[5] = { + D_800E153C, // Dino Domain + D_800E1594, // Sherbet Island + D_800E15EC, // Snowflake Mountain + D_800E1644, // Dragon Forest + D_800E169C // Future Fun Land }; s16 D_800E1708[34] = { @@ -1352,7 +1387,7 @@ s16 D_800E17F4[130] = { 0x0056, 0x4000 }; -u16 D_800E18F8 = 0x1000; +UNUSED u16 D_800E18F8 = 0x1000; // Set but never read. // Unused? u16 D_800E18FC[30] = { @@ -2571,7 +2606,7 @@ s32 menu_logo_screen_loop(s32 updateRate) { sBootScreenTimer -= updateRate / 60.0f; } if (sBootScreenTimer <= 0.0f) { - camDisableUserView(0, 0); + camDisableUserView(0, FALSE); set_viewport_properties(0, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO); init_title_screen_variables(); menu_init(MENU_TITLE); @@ -3390,8 +3425,8 @@ void func_800853D0(unk800861C8 *arg0, s32 x, s32 y) { s32 temp; sp70 = 11; - switch (arg0->unk0) { - case 1: + switch (arg0->saveFileType) { + case SAVE_FILE_TYPE_UNK1: drawTexture = D_800DFC10; texture = gMenuTextures[TEXTURE_SURFACE_BUTTON_WOOD]; colour = COLOUR_RGBA32(176, 224, 192, 255); @@ -3410,14 +3445,14 @@ void func_800853D0(unk800861C8 *arg0, s32 x, s32 y) { } text = gMenuText[ASSET_MENU_TEXT_GAMEPAK]; break; - case 2: + case SAVE_FILE_TYPE_UNK2: drawTexture = D_800DFC20; texture = gMenuTextures[TEXTURE_SURFACE_BUTTON_WOOD]; colour = COLOUR_RGBA32(176, 224, 192, 255); text2 = gMenuText[ASSET_MENU_TEXT_TIMES]; text = gMenuText[ASSET_MENU_TEXT_GAMEPAK]; break; - case 3: + case SAVE_FILE_TYPE_GAME_DATA: drawTexture = D_800DFC10; texture = gMenuTextures[TEXTURE_UNK_44]; colour = D_800DFACC[arg0->controllerIndex]; @@ -3437,42 +3472,42 @@ void func_800853D0(unk800861C8 *arg0, s32 x, s32 y) { sp70 = 12; } break; - case 4: + case SAVE_FILE_TYPE_TIME_DATA: drawTexture = D_800DFC20; texture = gMenuTextures[TEXTURE_UNK_44]; colour = D_800DFACC[arg0->controllerIndex]; text2 = arg0->unk8; text = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + arg0->controllerIndex]; break; - case 5: + case SAVE_FILE_TYPE_GHOST_DATA: drawTexture = D_800DFC30; texture = gMenuTextures[TEXTURE_UNK_44]; colour = D_800DFACC[arg0->controllerIndex]; text2 = gMenuText[ASSET_MENU_TEXT_GHOSTS]; text = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + arg0->controllerIndex]; break; - case 6: + case SAVE_FILE_TYPE_UNKNOWN: drawTexture = D_800DFC40; texture = gMenuTextures[TEXTURE_UNK_44]; colour = D_800DFACC[arg0->controllerIndex]; text2 = arg0->unk8; text = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + arg0->controllerIndex]; break; - case 8: + case SAVE_FILE_TYPE_UNK8: drawTexture = D_800DFC50; texture = gMenuTextures[TEXTURE_UNK_44]; colour = D_800DFACC[arg0->controllerIndex]; text2 = gMenuText[ASSET_MENU_TEXT_EMPTYSLOT]; text = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + arg0->controllerIndex]; break; - case 9: + case SAVE_FILE_TYPE_UNK9: drawTexture = D_800DFC30; texture = gMenuTextures[TEXTURE_UNK_45]; colour = -1; text2 = gMenuText[ASSET_MENU_TEXT_VIEWGHOSTS]; text = NULL; break; - case 10: + case SAVE_FILE_TYPE_UNKA: drawTexture = D_800DFC10; text2 = gMenuText[ASSET_MENU_TEXT_GAMEPAKBONUSES]; texture = gMenuTextures[TEXTURE_SURFACE_BUTTON_WOOD]; @@ -3491,7 +3526,7 @@ void func_800853D0(unk800861C8 *arg0, s32 x, s32 y) { if (osTvType == TV_TYPE_PAL) { y += 12; } - if ((arg0->unk0 == 3) || ((arg0->unk0 == 1) && (gSavefileData[arg0->controllerIndex]->newGame == 0))) { + if (arg0->saveFileType == SAVE_FILE_TYPE_GAME_DATA || (arg0->saveFileType == SAVE_FILE_TYPE_UNK1 && gSavefileData[arg0->controllerIndex]->newGame == FALSE)) { if (osTvType == TV_TYPE_PAL) { i = 134; } else { @@ -3598,7 +3633,7 @@ void func_80085B9C(UNUSED s32 updateRate) { tempTex++; var_s2++; yPos += 16; - } while(var_s2 != 2); + } while(var_s2 < 2); } if (var_s3) { temp_f4 = D_80126BDC; @@ -3651,8 +3686,8 @@ s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800861C8 *arg2, s32 *arg3, if (*arg1 != 0) { ret = get_free_space(controllerIndex, &arg2[*arg3].fileSize, &sControllerPakNotesFree[controllerIndex]); if (ret == CONTROLLER_PAK_GOOD) { - if (((s32)arg2[*arg3].fileSize >= fileSize) && (sControllerPakNotesFree[controllerIndex] > 0)) { - arg2[*arg3].unk0 = 8; //CONTROLLER_PAK_UNK8 maybe? + if (((s32) arg2[*arg3].fileSize >= fileSize) && (sControllerPakNotesFree[controllerIndex] > 0)) { + arg2[*arg3].saveFileType = SAVE_FILE_TYPE_UNK8; arg2[*arg3].controllerIndex = controllerIndex; (*arg3)++; } @@ -3678,7 +3713,7 @@ void func_800861C8(unk800861C8 *arg0, s32 *arg1) { s32 i; for (i = 0; i < NUMBER_OF_SAVE_FILES; i++) { if (gSavefileData[i]->newGame) { - arg0[*arg1].unk0 = 1; + arg0[*arg1].saveFileType = SAVE_FILE_TYPE_UNK1; arg0[*arg1].unk1 = 0; arg0[*arg1].unk2 = 0; arg0[*arg1].controllerIndex = i; @@ -3707,7 +3742,7 @@ SIDeviceStatus func_800862C4(void) { D_80126BDC = 0.0f; for (i = 0; i < NUMBER_OF_SAVE_FILES; i++) { if (!gSavefileData[i]->newGame) { - D_80126A0C[D_80126A08].unk0 = 1; + D_80126A0C[D_80126A08].saveFileType = SAVE_FILE_TYPE_UNK1; D_80126A0C[D_80126A08].unk1 = 1; D_80126A0C[D_80126A08].unk2 = gSavefileData[i]->balloonsPtr[0]; D_80126A0C[D_80126A08].controllerIndex = i; @@ -3716,10 +3751,10 @@ SIDeviceStatus func_800862C4(void) { } } - D_80126A0C[D_80126A08].unk0 = 2; + D_80126A0C[D_80126A08].saveFileType = SAVE_FILE_TYPE_UNK2; D_80126A0C[D_80126A08].unk1 = 1; D_80126A0C[D_80126A08++].fileSize = get_time_data_file_size(); - D_80126A0C[D_80126A08++].unk0 = 10; + D_80126A0C[D_80126A08++].saveFileType = SAVE_FILE_TYPE_UNKA; temp_D_80126A64 = D_80126A64; do { numAttempts = 1; @@ -3736,7 +3771,7 @@ SIDeviceStatus func_800862C4(void) { for (fileIndex = 0; fileIndex < 16; fileIndex++) { if ((fileTypes[fileIndex] >= SAVE_FILE_TYPE_GAME_DATA) && (fileTypes[fileIndex] <= SAVE_FILE_TYPE_UNKNOWN)) { (*sControllerPakNotesFree)--; - D_80126A0C[D_80126A08].unk0 = fileTypes[fileIndex]; + D_80126A0C[D_80126A08].saveFileType = fileTypes[fileIndex]; D_80126A0C[D_80126A08].controllerIndex = 0; D_80126A0C[D_80126A08].unk7 = fileIndex; D_80126A0C[D_80126A08].fileSize = fileSizes[fileIndex]; @@ -3808,30 +3843,30 @@ s32 func_800867D4(void) { D_80126A00 = 0; - switch (D_80126A0C[D_80126BD4].unk0) { - case 1: //Some other type of game data? + switch (D_80126A0C[D_80126BD4].saveFileType) { + case SAVE_FILE_TYPE_UNK1: mark_read_save_file(D_80126A0C[D_80126BD4].controllerIndex); func_800861C8(D_80126A04, &D_80126A00); ret = func_800860A8(0, &D_80126A18, D_80126A04, &D_80126A00, get_game_data_file_size(), -1); break; - case 2: //Some other type of time data? + case SAVE_FILE_TYPE_UNK2: ret = func_800860A8(0, &D_80126A18, D_80126A04, &D_80126A00, get_time_data_file_size(), -1); break; - case 3: //GAMD / Game Data + case SAVE_FILE_TYPE_GAME_DATA: func_800861C8(D_80126A04, &D_80126A00); ret = func_800860A8(1, &D_80126A1C, D_80126A04, &D_80126A00, get_game_data_file_size(), D_80126A0C[D_80126BD4].controllerIndex); break; - case 4: //TIMD / Time Data - D_80126A04[D_80126A00++].unk0 = 2; + case SAVE_FILE_TYPE_TIME_DATA: + D_80126A04[D_80126A00++].saveFileType = SAVE_FILE_TYPE_UNK2; ret = func_800860A8(1, &D_80126A1C, D_80126A04, &D_80126A00, get_time_data_file_size(), D_80126A0C[D_80126BD4].controllerIndex); break; - case 5: //GHSS / Ghost Data - D_80126A04[D_80126A00++].unk0 = 9; - ret = func_800860A8(1, &D_80126A1C, D_80126A04, &D_80126A00, func_80074B1C(), D_80126A0C[D_80126BD4].controllerIndex); + case SAVE_FILE_TYPE_GHOST_DATA: + D_80126A04[D_80126A00++].saveFileType = SAVE_FILE_TYPE_UNK9; + ret = func_800860A8(1, &D_80126A1C, D_80126A04, &D_80126A00, get_ghost_data_file_size(), D_80126A0C[D_80126BD4].controllerIndex); break; } - D_80126A04[D_80126A00++].unk0 = 7; + D_80126A04[D_80126A00++].saveFileType = SAVE_FILE_TYPE_UNK7; return ret; } @@ -4501,8 +4536,8 @@ void render_controller_pak_ui(UNUSED s32 updateRate) { set_dialogue_font(6, ASSET_FONTS_FUNFONT); set_current_text_colour(6, 255, 255, 255, 0, 255); set_current_text_background_colour(6, 0, 0, 0, 0); - render_dialogue_text(6, POS_CENTRED, 2, gMenuText[86 + gMenuOption], 1, 4); //ASSET_MENU_TEXT_CONTPAK1 - CONTROLLER PAK 1 / 2 / 3 / 4 - render_dialogue_text(6, POS_CENTRED, 16, gMenuText[ASSET_MENU_TEXT_FREEPAGESX], sCurrentControllerPakFreeSpace, 4); //FREE PAGES: ~ + render_dialogue_text(6, POS_CENTRED, 2, gMenuText[86 + gMenuOption], 1, HORZ_ALIGN_CENTER); //ASSET_MENU_TEXT_CONTPAK1 - CONTROLLER PAK 1 / 2 / 3 / 4 + render_dialogue_text(6, POS_CENTRED, 16, gMenuText[ASSET_MENU_TEXT_FREEPAGESX], sCurrentControllerPakFreeSpace, HORZ_ALIGN_CENTER); //FREE PAGES: ~ render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); yPos += 34; //To 82 @@ -4534,9 +4569,9 @@ void render_controller_pak_ui(UNUSED s32 updateRate) { fileNameText = D_80126AA0[gOpacityDecayTimer + i]; numberOfPages = sCurrentControllerPakAllFileSizes[gOpacityDecayTimer + i]; } - render_dialogue_text(6, 26, 2, noteText, gOpacityDecayTimer + i + 1, 4); - render_dialogue_text(6, 56, 2, fileNameText, 1, 0); - render_dialogue_text(6, 240, 2, pagesText, numberOfPages, 4); + render_dialogue_text(6, 26, 2, noteText, gOpacityDecayTimer + i + 1, HORZ_ALIGN_CENTER); + render_dialogue_text(6, 56, 2, fileNameText, 1, HORZ_ALIGN_LEFT); + render_dialogue_text(6, 240, 2, pagesText, numberOfPages, HORZ_ALIGN_CENTER); render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); yPos += 16; } @@ -4579,7 +4614,7 @@ void render_controller_pak_ui(UNUSED s32 updateRate) { //ASSET_MENU_TEXT_DELETENOTEX - DELETE NOTE ~ ? //ASSET_MENU_TEXT_DELETE - DELETE //ASSET_MENU_TEXT_CANCELDELETE - CANCEL - render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[ASSET_MENU_TEXT_DELETENOTEX + i], D_800DF460 + 1, 4); + render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[ASSET_MENU_TEXT_DELETENOTEX + i], D_800DF460 + 1, HORZ_ALIGN_CENTER); if (i != 0) { yPos += 16; @@ -4889,7 +4924,7 @@ void render_magic_codes_ui(s32 arg0) { set_current_text_colour(6, 255, green, 255, alpha, 255); // gMenuText[148] = "CLEAR ALL CODES?", [149] = "OK", [150] = "CANCEL" - render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[148 + i], 1, 4); + render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[148 + i], 1, HORZ_ALIGN_CENTER); if (i != 0) { yPos += 16; @@ -5995,7 +6030,7 @@ void func_8008C698(UNUSED s32 updateRate) { } if (osTvType == TV_TYPE_PAL) { - D_800DF79C = 0xC; + D_800DF79C = 12; D_800DF7A0 = 0; } else { D_800DF79C = 0; @@ -6789,7 +6824,7 @@ void menu_track_select_init(void) { load_font(ASSET_FONTS_BIGFONT); settings = get_settings(); get_number_of_levels_and_worlds(&levelCount, &worldCount); - trackMenuIds = (s8 **)get_misc_asset(ASSET_MISC_TRACKS_MENU_IDS); + trackMenuIds = (s8 **) get_misc_asset(ASSET_MISC_TRACKS_MENU_IDS); if (D_800DF488 != 0) { D_801269C8 = 0; D_801269CC = 0; @@ -6831,7 +6866,7 @@ void menu_track_select_init(void) { var_s0[1] = NULL; } } - D_800E0970 = (unk800E0970 *) allocate_from_main_pool_safe(2880, COLOUR_TAG_YELLOW); + D_800E0970 = (Triangle *) allocate_from_main_pool_safe(2880, COLOUR_TAG_YELLOW); D_800E0974 = (s32) (&D_800E0970[40]); //640 bytes forward D_800E096C = (s32) (&D_800E0970[80]); //1280 bytes forward //D_800E096C = (s32) (&D_800E0968[80]); //800 bytes past D_800E0968 @@ -6846,14 +6881,14 @@ void menu_track_select_init(void) { D_800E0968[var_v0].b = 0xFF; } for (var_v0 = 0; var_v0 < 40; var_v0++) { - D_800E0970[var_v0].unk0 = 0x40; - D_800E0970[var_v0].unk1 = 0; - D_800E0970[var_v0].unk2 = 2; - D_800E0970[var_v0].unk3 = 1; + D_800E0970[var_v0].flags = 0x40; // 0x40 = Draw backface + D_800E0970[var_v0].vi0 = 0; + D_800E0970[var_v0].vi1 = 2; + D_800E0970[var_v0].vi2 = 1; } D_80126924 = 0; set_background_draw_function(func_8008F618); - resize_viewport(0, 80, gTrackSelectViewPortHalfY - (gTrackSelectViewPortHalfY >> 1), 240, (gTrackSelectViewPortHalfY >> 1) + gTrackSelectViewPortHalfY); + resize_viewport(0, 80, gTrackSelectViewPortHalfY - (gTrackSelectViewPortHalfY >> 1), SCREEN_HEIGHT, (gTrackSelectViewPortHalfY >> 1) + gTrackSelectViewPortHalfY); copy_viewports_to_stack(); camEnableUserView(0, 0); D_800E097C = 1; @@ -7072,7 +7107,7 @@ s32 menu_track_select_loop(s32 updateRate) { void func_8008F534(void) { s32 i; - camDisableUserView(0, 0); + camDisableUserView(0, FALSE); func_8009C4A8(D_800E07C4); set_free_queue_state(0); free_from_memory_pool(D_800E0970); @@ -7093,8 +7128,111 @@ void func_8008F534(void) { set_D_800DD430(0); } -//https://decomp.me/scratch/ubeU1 +#ifdef NON_EQUIVALENT +s32 func_8008F618(Gfx **dlist, MatrixS **mtx) { + s32 sp7C; + u8 *data; + s32 texU; + s32 texV; + UNUSED s32 pad1; + s32 yPos; + s32 flags; + s32 hasTexture; + UNUSED s32 pad2; + s32 numVertices; + s32 index; + s32 prevAlpha; + s32 prevIndex; + s32 temp; + s32 temp2; + Vertex *vertices; + Triangle *triangles; + TextureHeader *bgTexture; + s32 prevAlpha2; + s32 curIndex; + + numVertices = 0; + camDisableUserView(0, TRUE); + func_80066230(dlist, mtx); + set_ortho_matrix_view(dlist, mtx); + reset_render_settings(dlist); + gDPPipeSync((*dlist)++); + sp7C = gTrackSelectX; + temp2 = -gTrackSelectY; + temp = temp2 / (gTrackSelectViewportY >> 3); + if (temp >= 42) { return 1; } + temp2 -= (temp * (gTrackSelectViewportY >> 3)); + yPos = gTrackSelectViewPortHalfY + temp2; + gDPSetPrimColor((*dlist)++, 0, 0, 255, 255, 255, 255); + gDPSetEnvColor((*dlist)++, 255, 255, 255, 0); + vertices = (&D_800E0968)[D_80126924]; + triangles = (&D_800E0970)[D_80126924]; + for (index = 0; D_800E0840[index] < temp; index += 5) {} + + data = &D_800E0840[index]; + while ((yPos >= -gTrackSelectViewPortHalfY) && (data[0] < 42) && (numVertices < 64)) { + bgTexture = D_800E0730[data[1]]; + vertices[0].y = yPos; + vertices[1].y = yPos; + vertices[0].a = data[2]; + vertices[1].a = data[2]; + prevIndex = data[0]; + prevAlpha = data[2]; + vertices[2].y = yPos - (gTrackSelectViewportY >> 3); + vertices[2].a = data[3]; + vertices[3].y = (gTrackSelectViewPortHalfY + temp2) - (gTrackSelectViewportY >> 3); + vertices[3].a = data[3]; + prevAlpha2 = data[3]; + data += 4; + if (bgTexture != 0) { + texU = (((bgTexture->width - 1) & sp7C) << 5) + (data[0] << 5); + data++; + texV = bgTexture->height << 5; + } + triangles[0].uv0.u = texU; + triangles[0].uv0.v = 0; + triangles[0].uv1.u = texU; + triangles[0].uv1.v = texV; + triangles[0].uv2.u = texU + 0x2800; + triangles[0].uv2.v = 0; + triangles[1].uv0.u = texU + 0x2800; + triangles[1].uv0.v = 0; + triangles[1].uv1.u = texU; + triangles[1].uv1.v = texV; + triangles[1].uv2.u = texU + 0x2800; + triangles[1].uv2.v = texV; + + triangles += 2; + vertices += 4; + + if (bgTexture != 0) { + hasTexture = 1; + } else { + hasTexture = 0; + } + + // If both alphas are 255, then don't set the transparency flags. + if ((prevAlpha + prevAlpha2) == 255+255) { + flags = 0; + } else { + flags = RENDER_VTX_ALPHA | RENDER_Z_UPDATE; + } + + load_and_set_texture(dlist, bgTexture, flags, 0); + gSPVertexDKR((*dlist)++, OS_PHYSICAL_TO_K0(vertices), 4, 0); + gSPPolygon((*dlist)++, OS_PHYSICAL_TO_K0(triangles), 2, hasTexture); + curIndex = data[0]; + if (prevIndex != curIndex) { + yPos -= (gTrackSelectViewportY >> 3); + } + numVertices += 4; + } + camEnableUserView(0, 1); + return 0; +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_8008F618.s") +#endif void render_track_select(s32 x, s32 y, char *hubName, char *trackName, s32 rectOpacity, s32 imageId, s32 copyViewPort, DrawTexture *arg7, s32 arg8) { s32 xTemp; @@ -7279,7 +7417,7 @@ void func_8008FF1C(s32 updateRate) { } trackSelectY++; } - camDisableUserView(0, 1); + camDisableUserView(0, TRUE); func_8009BD5C(); set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); reset_render_settings(&sMenuCurrDisplayList); @@ -7377,7 +7515,7 @@ void func_80090918(s32 updateRate) { func_8008F00C(1); } else if (gMenuDelay < -30) { disable_new_screen_transitions(); - camDisableUserView(0, 0); + camDisableUserView(0, FALSE); func_8008F00C(-1); } } @@ -7462,7 +7600,7 @@ void render_track_select_setup_ui(s32 updateRate) { if ((gNumberOfActivePlayers == 2) && (D_801269C8 < 4) && (gMenuOptionCount >= 2)) { sp74 = TRUE; } - camDisableUserView(0, 1); + camDisableUserView(0, TRUE); func_8009BD5C(); set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); if (gMenuDelay < 0) { @@ -8110,82 +8248,78 @@ void func_80093A40(void) { reset_controller_sticks(); } -#ifdef NON_EQUIVALENT -// In the right ballpark, but not right. -// Draw pause game screen? void func_80093D40(UNUSED s32 updateRate) { - s32 yOffset; - s32 i; + ColourRGBA *colour; + s32 halfTemp; + s32 halfX; s32 x; - ColourRGBA *colours; - s32 baseYPos; - s32 xPos; + s32 temp; + s32 textWidth; + s32 i; + s32 y; s32 alpha; - - for (i = 0, xPos = SCREEN_WIDTH_HALF; i < gMenuOptionCap; i++) { - x = get_text_width(gMenuOptionText[i], 0, 0) + 8; - if (xPos < x) { - xPos = x; + + for (i = 0, x = SCREEN_WIDTH_HALF; i < gMenuOptionCap; i++) { + textWidth = get_text_width(gMenuOptionText[i], 0, 0) + 8; + if (x < textWidth) { + x = textWidth; } } - - baseYPos = (osTvType == TV_TYPE_PAL) ? SCREEN_HEIGHT_HALF_PAL : SCREEN_HEIGHT_HALF; - - yOffset = ((gMenuOptionCap * 16) + 28); - + temp = (gMenuOptionCap * 16) + 28; + if (osTvType == TV_TYPE_PAL) { + y = SCREEN_HEIGHT_HALF_PAL; + } else { + y = SCREEN_HEIGHT_HALF; + } clear_dialogue_box_open_flag(7); assign_dialogue_box_id(7); - - yOffset >>= 1; - xPos >>= 1; - - set_current_dialogue_box_coords(7, SCREEN_WIDTH_HALF - xPos, baseYPos - yOffset, xPos + SCREEN_WIDTH_HALF, yOffset + baseYPos); - colours = &D_800E0990[get_player_id(D_800E098C)]; - set_current_dialogue_background_colour(7, colours->r, colours->g, colours->b, colours->a); - set_dialogue_font(7, 0); + halfTemp = temp >> 1; + halfX = x >> 1; + set_current_dialogue_box_coords(7, SCREEN_WIDTH_HALF - halfX, y - halfTemp, halfX + 160, halfTemp + y); + colour = &D_800E0990[get_player_id(D_800E098C)]; + set_current_dialogue_background_colour(7, colour->r, colour->g, colour->b, colour->a); + set_dialogue_font(7, ASSET_FONTS_FUNFONT); set_current_text_background_colour(7, 128, 128, 255, 0); - colours = &D_800E09A0[get_player_id(D_800E098C)]; - set_current_text_colour(7, colours->r, colours->g, colours->b, colours->a, 255); + colour = &D_800E09A0[get_player_id(D_800E098C)]; + set_current_text_colour(7, colour->r, colour->g, colour->b, colour->a, 255); alpha = gOptionBlinkTimer * 8; - if (alpha >= 256) { + if (alpha > 255) { alpha = 511 - alpha; } if (gMenuSubOption != 0) { + i = halfTemp - 26; if (gTrophyRaceWorldId != 0) { - yOffset -= 26; - render_dialogue_text(7, POS_CENTRED, yOffset + 8, gMenuText[ASSET_MENU_TEXT_QUITTROPHYRACETITLE], 1, 12); + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[ASSET_MENU_TEXT_QUITTROPHYRACETITLE], 1, ALIGN_MIDDLE_CENTER); } else { - yOffset -= 26; - render_dialogue_text(7, POS_CENTRED, yOffset + 8, gMenuText[ASSET_MENU_TEXT_QUITGAMETITLE], 1, 12); + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[ASSET_MENU_TEXT_QUITGAMETITLE], 1, ALIGN_MIDDLE_CENTER); } if (gMenuSubOption == 1) { set_current_text_colour(7, 255, 255, 255, alpha, 255); } else { set_current_text_colour(7, 255, 255, 255, 0, 255); } - render_dialogue_text(7, POS_CENTRED, yOffset + 28, gMenuText[ASSET_MENU_TEXT_OK], 1, 12); // OK + render_dialogue_text(7, POS_CENTRED, i + 28, gMenuText[ASSET_MENU_TEXT_OK], 1, ALIGN_MIDDLE_CENTER); if (gMenuSubOption == 2) { set_current_text_colour(7, 255, 255, 255, alpha, 255); } else { set_current_text_colour(7, 255, 255, 255, 0, 255); } - render_dialogue_text(7, POS_CENTRED, yOffset + 44, gMenuText[ASSET_MENU_TEXT_CANCEL], 1, 12); + render_dialogue_text(7, POS_CENTRED, i + 44, gMenuText[ASSET_MENU_TEXT_CANCEL], 1, ALIGN_MIDDLE_CENTER); } else { - render_dialogue_text(7, POS_CENTRED, 12, gMenuText[ASSET_MENU_TEXT_PAUSEOPTIONS], D_800E098C + 1, 12); - for (i = 0, yOffset = 32; i < gMenuOptionCap; i++, yOffset += 16) { + i = D_800E098C + 1; // Fakematch. Seems to fix stuff? + render_dialogue_text(7, POS_CENTRED, 12, gMenuText[ASSET_MENU_TEXT_PAUSEOPTIONS], D_800E098C + 1, ALIGN_MIDDLE_CENTER); + for (i = 0, y = 32; i < gMenuOptionCap; i++, y += 16) { if (i == gMenuOption) { set_current_text_colour(7, 255, 255, 255, alpha, 255); } else { set_current_text_colour(7, 255, 255, 255, 0, 255); } - render_dialogue_text(7, POS_CENTRED, yOffset, gMenuOptionText[i], 1, 12); + render_dialogue_text(7, POS_CENTRED, y, gMenuOptionText[i], 1, ALIGN_MIDDLE_CENTER); } + } open_dialogue_box(7); } -#else -GLOBAL_ASM("asm/non_matchings/menu/func_80093D40.s") -#endif /** * Show the available options when the player pauses the game. @@ -8344,14 +8478,14 @@ void func_80094688(s32 arg0, s32 arg1) { if (is_in_two_player_adventure()) { set_scene_viewport_num(VIEWPORTS_COUNT_1_PLAYER); } - D_80126A90 = 0; + D_80126A90 = FALSE; if (gNumberOfActivePlayers == 1 && gTrophyRaceWorldId == 0) { if (is_in_tracks_mode() == TRUE) { gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; gResultOptionText[1] = gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; gResultOptionText[2] = gMenuText[ASSET_MENU_TEXT_SELECTCHARACTER]; gResultOptionCount = 3; - D_80126A90 = 1; + D_80126A90 = TRUE; } else { if (arg0 == 0) { gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; @@ -8464,11 +8598,11 @@ void func_80094A5C(void) { } } -void func_80094C14(s32 arg0) { - gOptionBlinkTimer = (gOptionBlinkTimer + arg0) & 0x3F; - D_80126A94 += arg0; +void func_80094C14(s32 updateRate) { + gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; + D_80126A94 += updateRate; if (gOpacityDecayTimer >= 0) { - gOpacityDecayTimer += arg0; + gOpacityDecayTimer += updateRate; switch (D_800DF460) { case 0: if (normalise_time(240) < gOpacityDecayTimer) { @@ -8490,7 +8624,182 @@ void func_80094C14(s32 arg0) { } } +#ifdef NON_MATCHING +void func_80094D28(UNUSED s32 updateRate) { + s32 y; + s32 textAlpha; + s32 viewportULX; + s32 viewportLRY; + s32 viewportULY; + Settings *settings; + s32 j; + s32 i; + s32 sp3C; + s32 temp; + + settings = get_settings(); + if (gNumberOfActivePlayers == 1) { + set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); + } + camDisableUserView(0, TRUE); + textAlpha = gOptionBlinkTimer * 8; + if (textAlpha > 255) { + textAlpha = 511 - textAlpha; + } + switch (gMenuOptionCount) { + case 1: + temp = D_80126A94; + if (temp > 60) { + temp = 60; + } + viewportULY = ((gTrackSelectViewPortHalfY - ((gTrackSelectViewPortHalfY * 4) / 5)) * temp) / 60; + viewportLRY = gTrackSelectViewportY - (((gTrackSelectViewPortHalfY - (gTrackSelectViewPortHalfY / 5)) * temp) / 60); + viewportULX = (temp * 80) / 60; + resize_viewport(0, viewportULX, viewportULY, SCREEN_WIDTH - viewportULX, viewportLRY); + gMenuImageStack[4].unkC = 0.0f; + gMenuImageStack[4].unk10 = gTrackSelectViewPortHalfY - ((viewportULY + viewportLRY) >> 1); + gMenuImageStack[4].unk8 = sMenuImageProperties[4].unk8 * (2.0f - (temp / 60.0f)); + break; + case 2: + for(i = 0; i < 3; i++) { + if (settings->display_times && settings->racers[0].best_times & (1 << i)) { + D_800E0BEC[i+3].filterGreen = 192 - ((textAlpha * 3) >> 2); + D_800E0BEC[i+3].filterBlue = 255 - textAlpha; + } else { + D_800E0BEC[i+3].filterGreen = 192; + D_800E0BEC[i+3].filterBlue = 255; + } + } + if (settings->display_times && settings->racers[0].best_times & (1 << 7)) { + D_800E0BEC[6].filterRed = (textAlpha >> 1) + 128; + D_800E0BEC[6].filterGreen = 255 - textAlpha; + D_800E0BEC[6].filterBlue = 255 - textAlpha; + } else { + D_800E0BEC[6].filterRed = 128; + D_800E0BEC[6].filterGreen = 255; + D_800E0BEC[6].filterBlue = 255; + } + break; + case 3: + for(j = 0; j < 8; j++) { + i = j; + sp3C = 255; + if (is_in_two_player_adventure()) { + i = j - 1; + if (i == settings->racers[1].starting_position) { + sp3C = (textAlpha >> 1) + 128; + } + } + if (i == settings->racers[0].starting_position) { + sp3C = (textAlpha >> 1) + 128; + } + if (y){} // Fake + D_800E0CEC[7 - j].filterRed = sp3C; + D_800E0CEC[7 - j].filterGreen = sp3C; + D_800E0CEC[7 - j].filterBlue = sp3C; + } + break; + case 5: + if (settings->display_times && settings->racers[0].best_times & (s8) ~(1 << 7)) { + D_800E0E4C[6].filterRed = 255; + D_800E0E4C[6].filterGreen = 192 - ((textAlpha * 3) >> 2); + D_800E0E4C[6].filterBlue = 255 - textAlpha; + } else { + D_800E0E4C[6].filterRed = 255; + D_800E0E4C[6].filterGreen = 192; + D_800E0E4C[6].filterBlue = 255; + } + if (settings->display_times && settings->racers[0].best_times & (1 << 7)) { + D_800E0E4C[3].filterRed = (textAlpha >> 1) + 128; + D_800E0E4C[3].filterGreen = 255 - textAlpha; + D_800E0E4C[3].filterBlue = 255 - textAlpha; + } else { + D_800E0E4C[3].filterRed = 128; + D_800E0E4C[3].filterGreen = 255; + D_800E0E4C[3].filterBlue = 255; + } + break; + case 6: + clear_dialogue_box_open_flag(7); + assign_dialogue_box_id(7); + set_dialogue_font(7, FONT_COLOURFUL); + set_current_text_background_colour(7, 0, 0, 0, 0); + + if (D_80126A98 != 0) { + temp = 1; + } else if (D_80126C1C != NULL) { + temp = D_80126C24; + } else { + temp = gResultOptionCount; + } + if (temp >= 5) { + viewportULX = 2; + viewportLRY = 13; + } else { + viewportULX = 0; + viewportLRY = 16; + } + viewportULY = ((temp * viewportLRY) + 1) >> 1; + temp = 192; + if (osTvType == TV_TYPE_PAL) { + temp = 218; + } + set_current_dialogue_box_coords(7, 0, temp - viewportULY - viewportULX - 4, SCREEN_WIDTH, temp + viewportULY + viewportULX + 4); + set_current_dialogue_background_colour(7, 64, 64, 255, 0); + set_current_text_colour(7, 255, 0, 255, 64, 255); + if (D_80126A98 != 0) { + render_dialogue_text(7, POS_CENTRED, 12, gMenuText[ASSET_MENU_TEXT_PLEASEWAIT], 1, ALIGN_MIDDLE_CENTER); + } else if (D_80126C1C != NULL) { + for (y = 12, temp = 0; temp < D_80126C24; temp++, y += viewportLRY) { + render_dialogue_text(7, POS_CENTRED, y, D_80126C1C[temp], 1, ALIGN_MIDDLE_CENTER); + } + } else { + if (y && y){} //fake + viewportULY -= 24; + if (gMenuSubOption != 0) { + render_dialogue_text(7, POS_CENTRED, viewportULY + 8, gMenuText[ASSET_MENU_TEXT_QUITGAMETITLE], 1, ALIGN_MIDDLE_CENTER); + temp = 0; + if (gMenuSubOption == 1) { + temp = textAlpha; + } + set_current_text_colour(7, 255, 255, 255, temp, 255); + render_dialogue_text(7, POS_CENTRED, viewportULY + 26, gMenuText[ASSET_MENU_TEXT_OK], 1, ALIGN_MIDDLE_CENTER); + temp = 0; + if (gMenuSubOption == 2) { + temp = textAlpha; + } + set_current_text_colour(7, 255, 255, 255, temp, 255); + render_dialogue_text(7, POS_CENTRED, viewportULY + 42, gMenuText[ASSET_MENU_TEXT_CANCEL], 1, ALIGN_MIDDLE_CENTER); + } else { + for (y = 12, temp = 0; temp < gResultOptionCount; temp++, y += viewportLRY) { + if (temp == gMenuOption) { + set_current_text_colour(7, 255, 255, 255, textAlpha, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, SCREEN_WIDTH_HALF, y, gResultOptionText[temp], 1, ALIGN_MIDDLE_CENTER); + } + } + } + open_dialogue_box(7); + break; + } + if (get_game_mode() == GAMEMODE_INGAME && gNumberOfActivePlayers == 1) { + if (gTrophyRaceWorldId == 0) { + camEnableUserView(0, TRUE); + if (osTvType == TV_TYPE_PAL) { + D_800DF454 = 1.2f; + } + if (gMenuOptionCount > 0) { + func_8009CA60(4); + } + D_800DF454 = 1.0f; + } + } +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80094D28.s") +#endif void func_80095624(s32 status) { // status may contain controllerIndex in it's upper bits @@ -8524,7 +8833,316 @@ void func_80095624(s32 status) { } } -GLOBAL_ASM("asm/non_matchings/menu/func_80095728.s") +s32 func_80095728(Gfx **dlist, MatrixS **matrices, Vertex **vertices, s32 updateRate) { + s32 sp54; + s32 sp50; + s32 sp4C; + s32 i; + s32 ret; + s32 buttonsPressed; + s32 prevMenuOption; + s32 sp38; + s32 sp34; + s32 numPlayers; + Settings *settings; + Racer *racer; + char *temp_v1_14; + + sp54 = 0; + sp50 = 0; + sp4C = 0; + ret = 0; + sMenuCurrDisplayList = *dlist; + sMenuCurrHudMat = *matrices; + sMenuCurrHudVerts = *vertices; + settings = get_settings(); + if (osTvType == TV_TYPE_PAL) { + sp38 = 26; + sp34 = 12; + } else { + sp38 = 0; + sp34 = 0; + } + numPlayers = gNumberOfActivePlayers; + if (is_in_two_player_adventure()) { + numPlayers = 2; + } + if (D_80126A90) { + if (has_ghost_to_save()) { + gResultOptionText[gResultOptionCount-1] = gMenuText[ASSET_MENU_TEXT_SAVEGHOST]; + gResultOptionText[gResultOptionCount] = gMenuText[ASSET_MENU_TEXT_QUIT]; + gResultOptionCount++; + } + D_80126A90 = FALSE; + } + func_80094A5C(); + func_80094C14(updateRate); + if (gMenuDelay < 20 && D_80126C28 == 0) { + if (D_80126C54.unk0_s32 < 0) { + func_80094D28(updateRate); + } + } else { + func_80078170(NULL, NULL, 0); + } + update_controller_sticks(); + buttonsPressed = 0; + if (gIgnorePlayerInputTime == FALSE && D_80126C54.unk0_s32 < 0) { + for(i = 0; i < numPlayers; i++) { + buttonsPressed |= get_buttons_pressed_from_player(i); + } + } + switch (gMenuOptionCount) { + case 0: + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + gMenuOptionCount = 1; + D_80126A94 = 0; + } + break; + case 1: + if (D_80126A94 > 60 || buttonsPressed & (A_BUTTON | START_BUTTON)) { + resize_viewport(0, 80, gTrackSelectViewPortHalfY - ((gTrackSelectViewPortHalfY * 4) / 5), SCREEN_HEIGHT, (gTrackSelectViewPortHalfY / 5) + gTrackSelectViewPortHalfY); + gMenuImageStack[4].unkC = 0.0f; + gMenuImageStack[4].unk10 = 36.0f; + gMenuImageStack[4].unk8 = sMenuImageProperties[4].unk8; + if (get_map_race_type(settings->courseId) & RACETYPE_CHALLENGE) { + gMenuOptionCount = 6; + } else if (!settings->display_times) { + func_80081E54(D_800E0CEC, 0.5f, 15.0f, 0.5f, sp38, sp34); + gMenuOptionCount = 3; + } else { + racer = &settings->racers[settings->timeTrialRacer]; + D_800E0BEC[3].unk14_a.numberU16 = &racer->lap_times[0]; + D_800E0BEC[4].unk14_a.numberU16 = &racer->lap_times[1]; + D_800E0BEC[5].unk14_a.numberU16 = &racer->lap_times[2]; + D_800E0BEC[6].unk14_a.numberU16 = &racer->course_time; + func_80081E54(D_800E0BEC, 0.5f, 15.0f, 0.5f, sp38, sp34); + gMenuOptionCount = 2; + } + } + break; + case 2: + if (func_80081F4C(updateRate) != 0) { + if (gTrophyRaceWorldId != 0) { + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + gMenuOptionCount = 8; + } else if (settings->display_times) { + D_800E0E4C[3].unk14_a.numberU16 = &settings->courseTimesPtr[*gPlayerSelectVehicle][settings->courseId]; + D_800E0E4C[6].unk14_a.numberU16 = &settings->flapTimesPtr[*gPlayerSelectVehicle][settings->courseId]; + decompress_filename_string(settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId], D_80126390, 3); + decompress_filename_string(settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId], D_80126394, 3); + if (settings->racers[0].best_times != 0) { + gMenuOptionCount = 4; + if ((gIsInTracksMode == 0) && (D_800E0FAC)) { + decompress_filename_string(settings->filename, D_800E0FA8, 3); + D_800E0FAC = 0; + } + func_80097874(sp38 + 196, 160, sp38 + 120, 2, &D_800E0FA4, D_800E0FA8, 3); + } else { + func_80081E54(D_800E0E4C, 0.5f, 15.0f, 0.5f, sp38, sp34); + gMenuOptionCount = 5; + } + } else { + gMenuOptionCount = 3; + func_80081E54(D_800E0CEC, 0.5f, 15.0f, 0.5f, sp38, sp34); + } + } + break; + case 3: + if (func_80081F4C(updateRate) != 0) { + gMenuOptionCount = 6; + } + break; + case 4: + if (menu_enter_filename_loop(updateRate) != 0) { + if (settings->racers[0].best_times & 0x7F) { + settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId] = compress_filename_string(D_800E0FA8, 3); + decompress_filename_string(settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId], D_80126394, 3); + } + if (settings->racers[0].best_times & 0x80) { + settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId] = compress_filename_string(D_800E0FA8, 3); + decompress_filename_string(settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId], D_80126390, 3); + } + func_80081E54(D_800E0E4C, 0.5f, 15.0f, 0.5f, sp38, sp34); + gMenuOptionCount = 5; + } + break; + case 5: + if (func_80081F4C(updateRate) != 0) { + gMenuOptionCount = 6; + } + break; + case 6: + if (D_80126A98 != 0) { + D_80126A98++; + if (D_80126A98 >= 5) { + adjust_audio_volume(3); + sp54 = func_8001B738(0); + if ((sp54 & 0xFF) == 5) { + sp54 = func_8001B738(0); + } + adjust_audio_volume(2); + if (sp54 != 0) { + func_80095624(sp54); + sp54 = 1; + } else { + if (D_80126C1C == sInsertControllerPakMenuText) { + func_80095624(8); + } else { + D_80126C1C = NULL; + } + gResultOptionText[gMenuOption] = gMenuText[28]; + gMenuOption = 0; + gResultOptionCount -= 1; + } + D_80126A98 = 0; + } + } else if (D_80126C1C != NULL) { + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + sp50 = 1; + if (D_80126C1C == sInsertControllerPakMenuText) { + D_80126A98 = 1; + } else { + D_80126C1C = NULL; + } + } else if (buttonsPressed & B_BUTTON) { + D_80126C1C = NULL; + sp54 = 1; + } + } else { + if (gMenuSubOption != 0) { + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + if (gMenuSubOption == 1) { + sp50 = 1; + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + gMenuOptionCount = 8; + } else { + sp54 = 1; + gMenuSubOption = 0; + } + } else { + prevMenuOption = gMenuSubOption; + if (buttonsPressed & B_BUTTON) { + sp54 = 1; + gMenuSubOption = 0; + } else { + for(i = 0; i < numPlayers; i++) { + if ((gControllersYAxisDirection[i] > 0) && (gMenuSubOption == 2)) { + gMenuSubOption = 1; + } + if ((gControllersYAxisDirection[i] < 0) && (gMenuSubOption == 1)) { + gMenuSubOption = 2; + } + } + if (prevMenuOption != gMenuSubOption) { + sp4C = 1; + } + } + } + } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + sp50 = 1; + temp_v1_14 = gResultOptionText[gMenuOption]; + if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_SAVEGHOST]) { + D_80126A98 = 1; + } else if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_QUIT]) { + gMenuSubOption = 2; + } else { + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + gMenuOptionCount = 8; + } + } else { + prevMenuOption = gMenuOption; + for(i = 0; i < numPlayers; i++) { + if (gControllersYAxisDirection[i] < 0) { + if (gMenuOption < (gResultOptionCount - 1)) { + gMenuOption++; + } + } + if (gControllersYAxisDirection[i] > 0) { + if (gMenuOption > 0) { + gMenuOption--; + } + } + } + if (prevMenuOption != gMenuOption) { + sp4C = 1; + } + } + } + if (sp54 != 0) { + play_sound_global(SOUND_MENU_BACK3, NULL); + } else if((sp50 != 0)) { + play_sound_global(SOUND_SELECT2, NULL); + } else if((sp4C != 0)) { + play_sound_global(SOUND_MENU_PICK2, NULL); + } + break; + case 7: + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + gMenuOptionCount = 8; + } + break; + case 8: + gMenuDelay += updateRate; + if (gMenuDelay > 30) { + if (settings->display_times) { + if (settings->racers[0].best_times & 0x7F) { + mark_to_write_flap_times(); + } + if (settings->racers[0].best_times & 0x80) { + mark_to_write_course_times(); + } + } + camDisableUserView(0, FALSE); + func_80096790(); + close_dialogue_box(7); + assign_dialogue_box_id(7); + if (D_80126C28 >= 2) { + if (D_80126C28 == 9) { + func_8009ABD8((s8 *) get_misc_asset(ASSET_MISC_25), D_80126C28, 0x10E, 0, 0, NULL); + } else { + func_8009ABD8((s8 *) get_misc_asset(ASSET_MISC_25), D_80126C28, 0x101, 0, 0, NULL); + } + ret = 13; + } else if((gTrophyRaceWorldId != 0)) { + ret = 10; + } else if((gNumberOfActivePlayers >= 2)) { + ret = 8; + } else { + temp_v1_14 = gResultOptionText[gMenuOption]; + if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_TRYAGAIN]) { + if (!gIsInTracksMode && gTTVoiceLines[get_ingame_map_id()] != -1) { + func_80000FDC(gTTVoiceLines[get_ingame_map_id()], 0, 1.0f); + } + ret = 2; + } else if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_SELECTTRACK]) { + ret = 5; + } else if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_SELECTCHARACTER]) { + ret = 12; + } else if (temp_v1_14 == gMenuText[ASSET_MENU_TEXT_RETURNTOLOBBY]) { + ret = 1; + } else { + ret = 4; + } + } + } + break; + } + if (gIgnorePlayerInputTime > 0) { + gIgnorePlayerInputTime -= updateRate; + if (gIgnorePlayerInputTime < 0) { + gIgnorePlayerInputTime = 0; + } + } + *dlist = sMenuCurrDisplayList; + *matrices = sMenuCurrHudMat; + *vertices = sMenuCurrHudVerts; + return ret; +} void func_80096790(void) { s32 temp; @@ -8653,7 +9271,7 @@ s32 menu_results_loop(s32 updateRate) { } } else if (D_801267D8[4] & (A_BUTTON | START_BUTTON)) { playSelectSound = TRUE; - if (gResultOptionText[gMenuOption] == gMenuText[28]) { + if (gResultOptionText[gMenuOption] == gMenuText[ASSET_MENU_TEXT_QUIT]) { gMenuSubOption = 2; } else { gMenuDelay = 1; @@ -8803,14 +9421,14 @@ void trim_filename_string(char* input, char* output) { *output = '\0'; } -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) { D_800E0F90 = arg0; D_800E0F94 = arg1; D_800E0F98 = arg2; D_800E0F9C = arg3; D_80126C6C = arg4; D_80126C74 = fileName; - D_80126C78 = arg6; + D_80126C78 = fileNameLength; D_800E0FA0 = 0; D_80126C50 = (f32) *D_80126C6C; D_80126C48 = FALSE; @@ -9132,7 +9750,7 @@ void draw_trophy_race_text(UNUSED s32 updateRate) { set_text_colour(255, 255, 255, 0, 255); draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, 32, (char *)worldName, ALIGN_MIDDLE_CENTER); draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, 64, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], ALIGN_MIDDLE_CENTER); // TROPHY RACE - draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, yPos + 176, gMenuText[138 + gTrophyRaceRound], ALIGN_MIDDLE_CENTER); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR + draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, yPos + 176, gMenuText[ASSET_MENU_TEXT_ROUNDONE + gTrophyRaceRound], ALIGN_MIDDLE_CENTER); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, yPos + 208, (char *)levelName, ALIGN_MIDDLE_CENTER); } @@ -9580,7 +10198,133 @@ void menu_ghost_data_init(void) { GLOBAL_ASM("asm/non_matchings/menu/menu_ghost_data_init.s") #endif -GLOBAL_ASM("asm/non_matchings/menu/func_80099E8C.s") +void func_80099E8C(UNUSED s32 updateRate) { + s32 currentWorldId; + s32 spE8; + s32 spE4; + s32 i; + s32 y; + s32 colourIntensity; + s32 x; + s32 heightAdjust; + DrawTexture *vehicleSelectTex; + char *levelName; + char textBuffer[64]; + + set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); + if (osTvType == TV_TYPE_PAL) { + heightAdjust = 12; + } else { + heightAdjust = 0; + } + spE4 = gOpacityDecayTimer; + set_text_font(FONT_LARGE); + set_text_background_colour(0, 0, 0, 0); + set_text_colour(0, 0, 0, 255, 128); + draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF + 1, 35, gMenuText[ASSET_MENU_TEXT_GHOSTDATA], ALIGN_MIDDLE_CENTER); + set_text_colour(255, 255, 255, 0, 255); + draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, 32, gMenuText[ASSET_MENU_TEXT_GHOSTDATA], ALIGN_MIDDLE_CENTER); + y = 56; + if (D_801264D4 <= 0) { + set_text_colour(255, 255, 255, 0, 255); + draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, heightAdjust + SCREEN_HEIGHT_HALF, gMenuText[ASSET_MENU_TEXT_NOGHOSTSSAVED], ALIGN_MIDDLE_CENTER); + return; + } + spE8 = 3; + colourIntensity = gOptionBlinkTimer * 8; + if (colourIntensity > 255) { + colourIntensity = 511 - colourIntensity; + } + colourIntensity |= ~0xFF; + set_text_font(FONT_SMALL); + x = 40; + while (spE4 < D_801264D4 && spE8 > 0) { + if (((!D_800E1754) && (!D_800E1754)) && (!D_800E1754)){} // Fakematch + + currentWorldId = get_map_world_id(D_80126508[spE4]) - 1; + if (currentWorldId < 0 || currentWorldId >= 5) { + currentWorldId = 0; + } + levelName = get_level_name(D_80126508[spE4]); + for(i = 0; (levelName[i] != '\0') && (i < 63); i++) { + textBuffer[i] = levelName[i]; + if ((textBuffer[i] >= 'a') && (textBuffer[i] <= 'z')) { + textBuffer[i] ^= 0x20; // Force uppercase. + } + } + textBuffer[i] = '\0'; // Set NULL terminator + render_texture_rectangle_scaled(&sMenuCurrDisplayList, D_800E16F4[currentWorldId], x, y, 0.75f, 0.8125f, COLOUR_RGBA32(255, 255, 255, 255), 0); + func_80080E90(&sMenuCurrDisplayList, 40, y, 240, 52, 4, 4, 32, 80, 176, 128); + if (spE4 == D_80126498) { + func_80080E90(&sMenuCurrDisplayList, 40, y, 240, 52, 4, 4, colourIntensity, colourIntensity, colourIntensity, colourIntensity); + } + set_text_colour(0, 0, 0, 255, 255); + for(i = 0; i < 4; i++) { + draw_text(&sMenuCurrDisplayList, D_800E1754[0] + 40 + D_800E1E20[(i<<1)], y + D_800E1754[1] + D_800E1E20[(i<<1)+1], textBuffer, ALIGN_MIDDLE_CENTER); + } + set_text_colour(200, 228, 80, 255, 255); + draw_text(&sMenuCurrDisplayList, D_800E1754[0] + 40, D_800E1754[1] + y, textBuffer, ALIGN_MIDDLE_CENTER); + render_textured_rectangle(&sMenuCurrDisplayList, gRacerPortraits[D_80126510[spE4]], D_800E1754[2] + 40, D_800E1754[3] + y, 255, 255, 255, 255); + switch (D_80126518[spE4]) { + case 1: + vehicleSelectTex = gRaceSelectionHoverTex; + break; + case 2: + vehicleSelectTex = gRaceSelectionPlaneTex; + break; + default: + vehicleSelectTex = gRaceSelectionCarTex; + break; + } + render_texture_rectangle_scaled(&sMenuCurrDisplayList, vehicleSelectTex, (D_800E1754[4] + 40), (D_800E1754[5] + y), 0.625f, 0.625f, COLOUR_RGBA32(255, 255, 255, 255), 0); + reset_render_settings(&sMenuCurrDisplayList); + gMenuImageStack[7].unkC = (D_800E1754[6] - SCREEN_HEIGHT_HALF); + gMenuImageStack[7].unk10 = ((-D_800E1754[7] - y) + heightAdjust + SCREEN_HEIGHT_HALF); + gMenuImageStack[7].unk8 = 0.075f; + func_8009CA60(7); + sMenuGuiOpacity = 128; + //Timestamp Shadow gets drawn first + show_timestamp(D_80126520[spE4], D_800E1754[8] - (SCREEN_HEIGHT_HALF - 1), (-D_800E1754[9] - y) + heightAdjust + (SCREEN_HEIGHT_HALF - 1), 0, 0, 0, FONT_COLOURFUL); + sMenuGuiOpacity = 255; + show_timestamp(D_80126520[spE4], D_800E1754[8] - (SCREEN_HEIGHT_HALF + 1), (-D_800E1754[9] - y) + heightAdjust + (SCREEN_HEIGHT_HALF + 1), 255, 192, 255, FONT_COLOURFUL); + spE4++; + spE8--; + y += 54; + } + colourIntensity &= 0xFF; + if (gMenuOptionCount > 0) { + clear_dialogue_box_open_flag(7); + assign_dialogue_box_id(7); + set_current_dialogue_box_coords(7, 104, 102, 216, 138); + set_current_dialogue_background_colour(7, 0, 0, 0, 192); + set_dialogue_font(7, 0); + set_current_text_background_colour(7, 0, 0, 0, 0); + if (gMenuOptionCount == 1) { + set_current_text_colour(7, 255, 255, 255, colourIntensity, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, POS_CENTRED, 12, gMenuText[ASSET_MENU_TEXT_ERASEGHOST], 1, ALIGN_MIDDLE_CENTER); + if (gMenuOptionCount == 2) { + set_current_text_colour(7, 255, 255, 255, colourIntensity, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, POS_CENTRED, 28, gMenuText[ASSET_MENU_TEXT_CANCEL], 1, ALIGN_MIDDLE_CENTER); + render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 7); + } + if (gOptionBlinkTimer & 0x10) { + if ((gOpacityDecayTimer + 3) < D_801264D4) { + render_textured_rectangle(&sMenuCurrDisplayList, gMenuSelectionArrowDown, SCREEN_WIDTH_HALF + 1, y + 3, 0, 0, 0, 128); + render_textured_rectangle(&sMenuCurrDisplayList, gMenuSelectionArrowDown, SCREEN_WIDTH_HALF - 1, y + 1, 255, 255, 255, 255); + } + if (gOpacityDecayTimer > 0) { + render_textured_rectangle(&sMenuCurrDisplayList, gMenuSelectionArrowUp, SCREEN_WIDTH_HALF + 1, 54, 0, 0, 0, 128); + render_textured_rectangle(&sMenuCurrDisplayList, gMenuSelectionArrowUp, SCREEN_WIDTH_HALF - 1, 52, 255, 255, 255, 255); + } + reset_render_settings(&sMenuCurrDisplayList); + } +} s32 menu_ghost_data_loop(s32 updateRate) { s32 i; @@ -9708,7 +10452,7 @@ void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s8 *arg5) { arg0++; } - if ((phi_v1 == 0) && (get_misc_asset(ASSET_MISC_25) == (s32 *)arg0)) { + if (phi_v1 == 0 && (s8 *) get_misc_asset(ASSET_MISC_25) == arg0) { D_8012684C = TRUE; } else { D_8012684C = FALSE; @@ -9873,9 +10617,9 @@ void render_credits_fade(s32 x1, s32 y1, s32 x2, s32 y2, s32 a) { GLOBAL_ASM("asm/non_matchings/menu/menu_credits_loop.s") void func_8009BCF0(void) { - set_music_player_voice_limit(0x12); + set_music_player_voice_limit(18); disable_new_screen_transitions(); - camDisableUserView(0, 0); + camDisableUserView(0, FALSE); set_viewport_properties(0, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO); func_8009C4A8(D_800E17D8); unload_font(ASSET_FONTS_BIGFONT); @@ -10489,7 +11233,7 @@ void render_dialogue_option(char *text, s32 yOffset, s32 optionID) { if (gDialogueSubmenu == sDialogueOptionMax) { gDialogueItemSelection = optionID; } - render_dialogue_text(1, POS_CENTRED, gDialogueOptionYOffset, text, 1, 4); + render_dialogue_text(1, POS_CENTRED, gDialogueOptionYOffset, text, 1, HORZ_ALIGN_CENTER); gDialogueOptionYOffset = (s8)(gDialogueOptionYOffset + yOffset); sDialogueOptionMax = (s8)(sDialogueOptionMax + 1); } @@ -10562,7 +11306,7 @@ s32 taj_menu_loop(void) { switch (sCurrentMenuID) { case 2: case 0x62: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_VEHICLESELECT], 1, 4); // VEHICLE SELECT + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_VEHICLESELECT], 1, HORZ_ALIGN_CENTER); // VEHICLE SELECT gDialogueOptionYOffset = 30; render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CAR], 20, 0); // CAR render_dialogue_option(gMenuText[ASSET_MENU_TEXT_HOVERCRAFT], 20, 1); // HOVERCRAFT @@ -10571,7 +11315,7 @@ s32 taj_menu_loop(void) { break; case 3: case 0x63: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_CHALLENGESELECT], 1, 4); // CHALLENGE SELECT + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_CHALLENGESELECT], 1, HORZ_ALIGN_CENTER); // CHALLENGE SELECT gDialogueOptionYOffset = 30; if (settings->tajFlags & TAJ_FLAGS_CAR_CHAL_UNLOCKED) { gDialogueOptionTangible = settings->tajFlags & TAJ_FLAGS_CAR_CHAL_COMPLETED; @@ -10601,7 +11345,7 @@ s32 taj_menu_loop(void) { break; case 1: gNextTajChallengeMenu = 0; - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_OPTIONS], 1, 4); // OPTIONS + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_OPTIONS], 1, HORZ_ALIGN_CENTER); // OPTIONS gDialogueOptionYOffset = 30; render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CHANGEVEHICLE], 20, 0); // CHANGE VEHICLE if (settings->tajFlags & TAJ_FLAGS_UNLOCKED_A_CHALLENGE) { @@ -10724,8 +11468,8 @@ s32 dialogue_race_defeat(void) { playerInput = get_buttons_pressed_from_player(PLAYER_ONE); sDialogueOptionMax = 0; gNextTajChallengeMenu = 0; - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_LOSETOTAJ_0], 1, 4); // BETTER LUCK - render_dialogue_text(1, POS_CENTRED, 20, gMenuText[ASSET_MENU_TEXT_LOSETOTAJ_1], 1, 4); // NEXT TIME! + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_LOSETOTAJ_0], 1, HORZ_ALIGN_CENTER); // BETTER LUCK + render_dialogue_text(1, POS_CENTRED, 20, gMenuText[ASSET_MENU_TEXT_LOSETOTAJ_1], 1, HORZ_ALIGN_CENTER); // NEXT TIME! gDialogueOptionYOffset = 50; render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TRYAGAIN], 20, 0); // TRY AGAIN render_dialogue_option(gMenuText[ASSET_MENU_TEXT_EXIT], 20, 1); // EXIT @@ -10782,19 +11526,19 @@ s32 tt_menu_loop(void) { switch (sCurrentMenuID) { case TT_MENU_ROOT: case TT_MENU_EXIT: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_OPTIONS], 1, 4); // OPTIONS - render_dialogue_option(gMenuText[ASSET_MENU_TEXT_STATUS], 0x14, 3); // STATUS + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_OPTIONS], 1, HORZ_ALIGN_CENTER); // OPTIONS + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_STATUS], 20, 3); // STATUS if (!is_in_two_player_adventure()) { if (is_time_trial_enabled()) { - render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALON], 0x14, 0); // TIME TRIAL ON + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALON], 20, 0); // TIME TRIAL ON } else { - render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALOFF], 0x14, 0); // TIME TRIAL OFF + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALOFF], 20, 0); // TIME TRIAL OFF } if (has_ghost_to_save()) { - render_dialogue_option(gMenuText[ASSET_MENU_TEXT_SAVEGHOST], 0x14, 1); // SAVE GHOST + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_SAVEGHOST], 20, 1); // SAVE GHOST } } - render_dialogue_option(gMenuText[ASSET_MENU_TEXT_RETURN], 0x14, 2); // RETURN + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_RETURN], 20, 2); // RETURN handle_menu_joystick_input(); if (gDialogueItemSelection == 0) { if (gControllersXAxisDirection[0] > 0) { @@ -10853,7 +11597,7 @@ s32 tt_menu_loop(void) { yPos1 -= (i << 2 << 1); // Might be fake? i = 0; while (gTTSaveGhostPakErrorText[i] != NULL) { - render_dialogue_text(1, POS_CENTRED, yPos1, gTTSaveGhostPakErrorText[i], 1, 4); + render_dialogue_text(1, POS_CENTRED, yPos1, gTTSaveGhostPakErrorText[i], 1, HORZ_ALIGN_CENTER); yPos1 += 16; i++; } @@ -10872,9 +11616,24 @@ s32 tt_menu_loop(void) { break; case TT_MENU_INTRODUCTION: { - i = 52; + /* + 0: HI, I'M TT. + 1: + 2: YOU CAN ASK ME + 3: ABOUT YOUR GAME + 4: STATUS OR SELECT + 5: MY TIME TRIAL MODE + 6: TO PRACTICE A + 7: LEVEL. + 8: + 9: I CAN ALSO SAVE + 10: YOUR BEST GHOSTS + 11: {NULL TO END THE CHAT} + */ + //TT Has 12 different intro text lines. This will render them one by one until it hits the NULL line. + i = ASSET_MENU_TEXT_TTINTRO_0; while (gMenuText[i] != NULL) { - render_dialogue_text(1, POS_CENTRED, 6 + ((i-52) * 16), gMenuText[i], 1, 4); + render_dialogue_text(1, POS_CENTRED, 6 + ((i-52) * 16), gMenuText[i], 1, HORZ_ALIGN_CENTER); i++; } if (buttonsPressed & (A_BUTTON | B_BUTTON)) { @@ -10884,9 +11643,9 @@ s32 tt_menu_loop(void) { } break; case TT_MENU_INSERT_CONT_PAK: - render_dialogue_text(1, POS_CENTRED, 34, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3], 1, 4); // If you wish to use - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_4], 1, 4); // the Controller Pak - render_dialogue_text(1, POS_CENTRED, 66, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6], 1, 4); // insert it now! + render_dialogue_text(1, POS_CENTRED, 34, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3], 1, HORZ_ALIGN_CENTER); // If you wish to use + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_4], 1, HORZ_ALIGN_CENTER); // the Controller Pak + render_dialogue_text(1, POS_CENTRED, 66, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6], 1, HORZ_ALIGN_CENTER); // insert it now! if (buttonsPressed & (A_BUTTON | START_BUTTON)) { play_sound_global(SOUND_SELECT2, NULL); gSaveGhostDelayCounter = 0; @@ -10898,15 +11657,15 @@ s32 tt_menu_loop(void) { } break; case TT_MENU_INSERT_RUMBLE_PAK: - render_dialogue_text(1, POS_CENTRED, 34, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3], 1, 4); // If you wish to use - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_5], 1, 4); // the Rumble Pak - render_dialogue_text(1, POS_CENTRED, 66, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6], 1, 4); // insert it now! + render_dialogue_text(1, POS_CENTRED, 34, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3], 1, HORZ_ALIGN_CENTER); // If you wish to use + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_5], 1, HORZ_ALIGN_CENTER); // the Rumble Pak + render_dialogue_text(1, POS_CENTRED, 66, gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6], 1, HORZ_ALIGN_CENTER); // insert it now! if (buttonsPressed & (A_BUTTON | B_BUTTON | START_BUTTON)) { sCurrentMenuID = TT_MENU_ROOT; } break; case TT_MENU_SAVE_GHOST: - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_PLEASEWAIT], 1, 4); // PLEASE WAIT + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_PLEASEWAIT], 1, HORZ_ALIGN_CENTER); // PLEASE WAIT gSaveGhostDelayCounter++; if (gSaveGhostDelayCounter >= 5) { result = func_8001B738(0); @@ -10957,7 +11716,7 @@ s32 tt_menu_loop(void) { if ((sCurrentMenuID == TT_MENU_CONT_PAK_ERROR_1) || (sCurrentMenuID == TT_MENU_CONT_PAK_ERROR_2) || (sCurrentMenuID == TT_MENU_CONT_PAK_ERROR_3)) { - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_PAKERROR], 1, 4); // PAK ERROR + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_PAKERROR], 1, HORZ_ALIGN_CENTER); // PAK ERROR } return currentOption; @@ -10976,7 +11735,7 @@ s32 trophy_race_cabinet_menu_loop(void) { set_dialogue_font(1, ASSET_FONTS_FUNFONT); currentOption = 0; buttonsPressed = get_buttons_pressed_from_player(PLAYER_ONE); - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], 1, 4); // TROPHY RACE + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], 1, HORZ_ALIGN_CENTER); // TROPHY RACE if (gControllersYAxisDirection[0] < 0) { gDialogueSubmenu++; } else if (gControllersYAxisDirection[0] > 0) { @@ -10989,9 +11748,9 @@ s32 trophy_race_cabinet_menu_loop(void) { gDialogueSubmenu = 1; } set_option_text_colour(gDialogueSubmenu == 0); - render_dialogue_text(1, POS_CENTRED, 30, gMenuText[ASSET_MENU_TEXT_ENTERTROPHYRACE], 1, 4); // ENTER TROPHY RACE + render_dialogue_text(1, POS_CENTRED, 30, gMenuText[ASSET_MENU_TEXT_ENTERTROPHYRACE], 1, HORZ_ALIGN_CENTER); // ENTER TROPHY RACE set_option_text_colour(gDialogueSubmenu == 1); - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_EXIT], 1, 4); // EXIT + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_EXIT], 1, HORZ_ALIGN_CENTER); // EXIT if (buttonsPressed & A_BUTTON) { currentOption = gDialogueSubmenu + 1; } diff --git a/src/menu.h b/src/menu.h index fa3539d0..d85126b9 100644 --- a/src/menu.h +++ b/src/menu.h @@ -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, diff --git a/src/object_functions.c b/src/object_functions.c index d6fbecb6..53c315aa 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -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); } } diff --git a/src/racer.c b/src/racer.c index 501579c6..726f5f9b 100644 --- a/src/racer.c +++ b/src/racer.c @@ -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) { diff --git a/src/save_data.c b/src/save_data.c index e7476b78..5a70ae3c 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -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 */ diff --git a/src/save_data.h b/src/save_data.h index 338b788a..4b58471a 100644 --- a/src/save_data.h +++ b/src/save_data.h @@ -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); diff --git a/src/thread0_epc.c b/src/thread0_epc.c index 8b3e7dc5..0e7d9e43 100644 --- a/src/thread0_epc.c +++ b/src/thread0_epc.c @@ -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. */ diff --git a/src/weather.c b/src/weather.c index ccaed4a4..cae6a8f9 100644 --- a/src/weather.c +++ b/src/weather.c @@ -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 diff --git a/src/weather.h b/src/weather.h index 5b3b9049..464244e5 100644 --- a/src/weather.h +++ b/src/weather.h @@ -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; diff --git a/tools/asm_processor b/tools/asm_processor index bbd86ea1..fed1e3dd 160000 --- a/tools/asm_processor +++ b/tools/asm_processor @@ -1 +1 @@ -Subproject commit bbd86ea1faf84e6a7a0e101ab8068a00a3dfb2fc +Subproject commit fed1e3ddb9967bd427f4599b1b8ededa296bd9f9 diff --git a/undefined_syms.txt b/undefined_syms.txt index 92b20790..f6dd5085 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -15,3 +15,5 @@ SI_STATUS_REG = 0xA4800018; D_B0000574 = 0xB0000574; D_B0000578 = 0xB0000578; +D_801299B0 = 0x801299B0; +gEpcInfo = 0x80129800; \ No newline at end of file