From 4a8d4299c700e94995cddbd7d88b0e3e0cb0a9fe Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Sat, 8 Mar 2025 18:57:40 -0500 Subject: [PATCH] Match 3 menu functions (#476) * Fix typo and update some vehicle values. * Match load_menu_text * Cleanup load_menu_text * Match func_80080BC8 * Match func_80080E90 * Fix NON_EQUIVALENT builds and update score --- README.md | 16 +- asm/non_matchings/menu/func_80080BC8.s | 181 ---------- asm/non_matchings/menu/func_80080E90.s | 249 -------------- asm/non_matchings/menu/load_menu_text.s | 435 ------------------------ src/game.c | 2 +- src/menu.c | 427 ++++++++++++++--------- src/menu.h | 15 +- src/racer.c | 16 +- src/save_data.c | 24 +- 9 files changed, 297 insertions(+), 1068 deletions(-) delete mode 100644 asm/non_matchings/menu/func_80080BC8.s delete mode 100644 asm/non_matchings/menu/func_80080E90.s delete mode 100644 asm/non_matchings/menu/load_menu_text.s diff --git a/README.md b/README.md index eb996b5a..0ca5b7b6 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 (SHA1 = 0cb115d8716dbbc2922fda38e533b9fe63bb9670) of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of March 7, 2025, this is our current score: +As of March 8, 2025, this is our current score: -    Decomp progress: 73.86% +    Decomp progress: 74.23%     Documentation progress: 49.99% @@ -126,20 +126,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of March 7, 2025, this is our current score: +As of March 9, 2025, this is our current score: ``` ========================================================== ADVENTURE ONE (ASM -> C Decompilation) - --------- 73.86% Complete (76.35% NON_MATCHING) ---------- - # Decompiled functions: 1819 - # GLOBAL_ASM remaining: 122 + --------- 74.23% Complete (76.72% NON_MATCHING) ---------- + # Decompiled functions: 1822 + # GLOBAL_ASM remaining: 119 # NON_MATCHING functions: 14 - # NON_EQUIVALENT WIP functions: 43 + # NON_EQUIVALENT WIP functions: 41 ---------------------- Game Status ----------------------- Balloons: 35/47, Keys: 4/4, Trophies: 3/5 T.T. Amulets: 3/4, Wizpig Amulets: 3/4 ---------------------------------------------------------- - We are collecting bananas in Smokey Castle. (7/10 Bananas) + We are collecting bananas in Smokey Castle. (9/10 Bananas) ========================================================== ADVENTURE TWO (Cleanup & Documentation) -------------------- 49.99% Complete --------------------- diff --git a/asm/non_matchings/menu/func_80080BC8.s b/asm/non_matchings/menu/func_80080BC8.s deleted file mode 100644 index 06019859..00000000 --- a/asm/non_matchings/menu/func_80080BC8.s +++ /dev/null @@ -1,181 +0,0 @@ -glabel func_80080BC8 -/* 0817C8 80080BC8 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0817CC 80080BCC AFBF0034 */ sw $ra, 0x34($sp) -/* 0817D0 80080BD0 AFB60030 */ sw $s6, 0x30($sp) -/* 0817D4 80080BD4 AFB5002C */ sw $s5, 0x2c($sp) -/* 0817D8 80080BD8 AFB40028 */ sw $s4, 0x28($sp) -/* 0817DC 80080BDC AFB30024 */ sw $s3, 0x24($sp) -/* 0817E0 80080BE0 AFB20020 */ sw $s2, 0x20($sp) -/* 0817E4 80080BE4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0817E8 80080BE8 AFB00018 */ sw $s0, 0x18($sp) -/* 0817EC 80080BEC 8C820000 */ lw $v0, ($a0) -/* 0817F0 80080BF0 3C18800E */ lui $t8, %hi(dMenuHudSettings) # $t8, 0x800e -/* 0817F4 80080BF4 244E0008 */ addiu $t6, $v0, 8 -/* 0817F8 80080BF8 AC8E0000 */ sw $t6, ($a0) -/* 0817FC 80080BFC 27181C70 */ addiu $t8, %lo(dMenuHudSettings) # addiu $t8, $t8, 0x1c70 -/* 081800 80080C00 3C0F0600 */ lui $t7, 0x600 -/* 081804 80080C04 3C09800E */ lui $t1, %hi(gWoodPanelCount) # $t1, 0x800e -/* 081808 80080C08 AC4F0000 */ sw $t7, ($v0) -/* 08180C 80080C0C AC580004 */ sw $t8, 4($v0) -/* 081810 80080C10 8D291DB8 */ lw $t1, %lo(gWoodPanelCount)($t1) -/* 081814 80080C14 00803025 */ move $a2, $a0 -/* 081818 80080C18 2408FFFF */ li $t0, -1 -/* 08181C 80080C1C 00006825 */ move $t5, $zero -/* 081820 80080C20 1920007E */ blez $t1, .L80080E1C -/* 081824 80080C24 00003825 */ move $a3, $zero - # dMenuHudSettings - 0x7FFFFFD0 = 0xE1CA0 -/* 081828 80080C28 3C16000E */ lui $s6, %hi(dMenuHudSettings - 0x7FFFFFD0) # $s6, 0xe - # dMenuHudSettings - 0x7FFFFFC0 = 0xE1CB0 -/* 08182C 80080C2C 3C11000E */ lui $s1, %hi(dMenuHudSettings - 0x7FFFFFC0) # $s1, 0xe -/* 081830 80080C30 3C1F0702 */ lui $ra, (0x07020010 >> 16) # lui $ra, 0x702 -/* 081834 80080C34 3C0B8012 */ lui $t3, %hi(gMenuGeometry) # $t3, 0x8012 -/* 081838 80080C38 3C0A800E */ lui $t2, %hi(gMenuTrisFlip) # $t2, 0x800e -/* 08183C 80080C3C 254A1DB4 */ addiu $t2, %lo(gMenuTrisFlip) # addiu $t2, $t2, 0x1db4 -/* 081840 80080C40 256B6C2C */ addiu $t3, %lo(gMenuGeometry) # addiu $t3, $t3, 0x6c2c -/* 081844 80080C44 37FF0010 */ ori $ra, (0x07020010 & 0xFFFF) # ori $ra, $ra, 0x10 - # dMenuHudSettings - 0x7FFFFFC0 = 0xE1CB0 -/* 081848 80080C48 26311CB0 */ addiu $s1, %lo(dMenuHudSettings - 0x7FFFFFC0) # addiu $s1, $s1, 0x1cb0 - # dMenuHudSettings - 0x7FFFFFD0 = 0xE1CA0 -/* 08184C 80080C4C 26D61CA0 */ addiu $s6, %lo(dMenuHudSettings - 0x7FFFFFD0) # addiu $s6, $s6, 0x1ca0 -/* 081850 80080C50 3C150500 */ lui $s5, 0x500 -/* 081854 80080C54 3C140400 */ lui $s4, 0x400 -/* 081858 80080C58 3C13E700 */ lui $s3, 0xe700 -/* 08185C 80080C5C 3C120700 */ lui $s2, 0x700 -/* 081860 80080C60 24100001 */ li $s0, 1 -/* 081864 80080C64 3C0C8000 */ lui $t4, 0x8000 -.L80080C68: -/* 081868 80080C68 8D790000 */ lw $t9, ($t3) -/* 08186C 80080C6C 8D580000 */ lw $t8, ($t2) -/* 081870 80080C70 00077140 */ sll $t6, $a3, 5 -/* 081874 80080C74 032E7821 */ addu $t7, $t9, $t6 -/* 081878 80080C78 0018C880 */ sll $t9, $t8, 2 -/* 08187C 80080C7C 01F91021 */ addu $v0, $t7, $t9 -/* 081880 80080C80 8C4E0018 */ lw $t6, 0x18($v0) -/* 081884 80080C84 00000000 */ nop -/* 081888 80080C88 15C00060 */ bnez $t6, .L80080E0C -/* 08188C 80080C8C 00000000 */ nop -/* 081890 80080C90 8C430010 */ lw $v1, 0x10($v0) -/* 081894 80080C94 00000000 */ nop -/* 081898 80080C98 1060001D */ beqz $v1, .L80080D10 -/* 08189C 80080C9C 00000000 */ nop -/* 0818A0 80080CA0 11100007 */ beq $t0, $s0, .L80080CC0 -/* 0818A4 80080CA4 00000000 */ nop -/* 0818A8 80080CA8 8CC20000 */ lw $v0, ($a2) -/* 0818AC 80080CAC 02004025 */ move $t0, $s0 -/* 0818B0 80080CB0 24580008 */ addiu $t8, $v0, 8 -/* 0818B4 80080CB4 ACD80000 */ sw $t8, ($a2) -/* 0818B8 80080CB8 AC510004 */ sw $s1, 4($v0) -/* 0818BC 80080CBC AC5F0000 */ sw $ra, ($v0) -.L80080CC0: -/* 0818C0 80080CC0 11A3001B */ beq $t5, $v1, .L80080D30 -/* 0818C4 80080CC4 00000000 */ nop -/* 0818C8 80080CC8 8CC20000 */ lw $v0, ($a2) -/* 0818CC 80080CCC 00606825 */ move $t5, $v1 -/* 0818D0 80080CD0 244F0008 */ addiu $t7, $v0, 8 -/* 0818D4 80080CD4 ACCF0000 */ sw $t7, ($a2) -/* 0818D8 80080CD8 8465000A */ lh $a1, 0xa($v1) -/* 0818DC 80080CDC 00000000 */ nop -/* 0818E0 80080CE0 30B900FF */ andi $t9, $a1, 0xff -/* 0818E4 80080CE4 00197400 */ sll $t6, $t9, 0x10 -/* 0818E8 80080CE8 000578C0 */ sll $t7, $a1, 3 -/* 0818EC 80080CEC 31F9FFFF */ andi $t9, $t7, 0xffff -/* 0818F0 80080CF0 01D2C025 */ or $t8, $t6, $s2 -/* 0818F4 80080CF4 03197025 */ or $t6, $t8, $t9 -/* 0818F8 80080CF8 AC4E0000 */ sw $t6, ($v0) -/* 0818FC 80080CFC 8C6F000C */ lw $t7, 0xc($v1) -/* 081900 80080D00 00000000 */ nop -/* 081904 80080D04 01ECC021 */ addu $t8, $t7, $t4 -/* 081908 80080D08 10000009 */ b .L80080D30 -/* 08190C 80080D0C AC580004 */ sw $t8, 4($v0) -.L80080D10: -/* 081910 80080D10 11000007 */ beqz $t0, .L80080D30 -/* 081914 80080D14 00000000 */ nop -/* 081918 80080D18 8CC20000 */ lw $v0, ($a2) -/* 08191C 80080D1C 00004025 */ move $t0, $zero -/* 081920 80080D20 24590008 */ addiu $t9, $v0, 8 -/* 081924 80080D24 ACD90000 */ sw $t9, ($a2) -/* 081928 80080D28 AC560004 */ sw $s6, 4($v0) -/* 08192C 80080D2C AC5F0000 */ sw $ra, ($v0) -.L80080D30: -/* 081930 80080D30 8CC20000 */ lw $v0, ($a2) -/* 081934 80080D34 0007C940 */ sll $t9, $a3, 5 -/* 081938 80080D38 244E0008 */ addiu $t6, $v0, 8 -/* 08193C 80080D3C ACCE0000 */ sw $t6, ($a2) -/* 081940 80080D40 AC400004 */ sw $zero, 4($v0) -/* 081944 80080D44 AC530000 */ sw $s3, ($v0) -/* 081948 80080D48 8CC20000 */ lw $v0, ($a2) -/* 08194C 80080D4C 3C09800E */ lui $t1, %hi(gWoodPanelCount) # $t1, 0x800e -/* 081950 80080D50 244F0008 */ addiu $t7, $v0, 8 -/* 081954 80080D54 ACCF0000 */ sw $t7, ($a2) -/* 081958 80080D58 8D780000 */ lw $t8, ($t3) -/* 08195C 80080D5C 8D4F0000 */ lw $t7, ($t2) -/* 081960 80080D60 03197021 */ addu $t6, $t8, $t9 -/* 081964 80080D64 000FC080 */ sll $t8, $t7, 2 -/* 081968 80080D68 01D8C821 */ addu $t9, $t6, $t8 -/* 08196C 80080D6C 8F2F0000 */ lw $t7, ($t9) -/* 081970 80080D70 00000000 */ nop -/* 081974 80080D74 01EC7021 */ addu $t6, $t7, $t4 -/* 081978 80080D78 31D80006 */ andi $t8, $t6, 6 -/* 08197C 80080D7C 37190098 */ ori $t9, $t8, 0x98 -/* 081980 80080D80 332F00FF */ andi $t7, $t9, 0xff -/* 081984 80080D84 000F7400 */ sll $t6, $t7, 0x10 -/* 081988 80080D88 01D4C025 */ or $t8, $t6, $s4 -/* 08198C 80080D8C 37190170 */ ori $t9, $t8, 0x170 -/* 081990 80080D90 AC590000 */ sw $t9, ($v0) -/* 081994 80080D94 8D6F0000 */ lw $t7, ($t3) -/* 081998 80080D98 8D590000 */ lw $t9, ($t2) -/* 08199C 80080D9C 00077140 */ sll $t6, $a3, 5 -/* 0819A0 80080DA0 01EEC021 */ addu $t8, $t7, $t6 -/* 0819A4 80080DA4 00197880 */ sll $t7, $t9, 2 -/* 0819A8 80080DA8 030F7021 */ addu $t6, $t8, $t7 -/* 0819AC 80080DAC 8DD90000 */ lw $t9, ($t6) -/* 0819B0 80080DB0 350E0090 */ ori $t6, $t0, 0x90 -/* 0819B4 80080DB4 032CC021 */ addu $t8, $t9, $t4 -/* 0819B8 80080DB8 AC580004 */ sw $t8, 4($v0) -/* 0819BC 80080DBC 8CC20000 */ lw $v0, ($a2) -/* 0819C0 80080DC0 31D900FF */ andi $t9, $t6, 0xff -/* 0819C4 80080DC4 244F0008 */ addiu $t7, $v0, 8 -/* 0819C8 80080DC8 ACCF0000 */ sw $t7, ($a2) -/* 0819CC 80080DCC 0019C400 */ sll $t8, $t9, 0x10 -/* 0819D0 80080DD0 03157825 */ or $t7, $t8, $s5 -/* 0819D4 80080DD4 35EE00A0 */ ori $t6, $t7, 0xa0 -/* 0819D8 80080DD8 AC4E0000 */ sw $t6, ($v0) -/* 0819DC 80080DDC 8D790000 */ lw $t9, ($t3) -/* 0819E0 80080DE0 8D4E0000 */ lw $t6, ($t2) -/* 0819E4 80080DE4 0007C140 */ sll $t8, $a3, 5 -/* 0819E8 80080DE8 03387821 */ addu $t7, $t9, $t8 -/* 0819EC 80080DEC 000EC880 */ sll $t9, $t6, 2 -/* 0819F0 80080DF0 01F9C021 */ addu $t8, $t7, $t9 -/* 0819F4 80080DF4 8F0E0008 */ lw $t6, 8($t8) -/* 0819F8 80080DF8 00000000 */ nop -/* 0819FC 80080DFC 01CC7821 */ addu $t7, $t6, $t4 -/* 081A00 80080E00 AC4F0004 */ sw $t7, 4($v0) -/* 081A04 80080E04 8D291DB8 */ lw $t1, %lo(gWoodPanelCount)($t1) -/* 081A08 80080E08 00000000 */ nop -.L80080E0C: -/* 081A0C 80080E0C 24E70001 */ addiu $a3, $a3, 1 -/* 081A10 80080E10 00E9082A */ slt $at, $a3, $t1 -/* 081A14 80080E14 1420FF94 */ bnez $at, .L80080C68 -/* 081A18 80080E18 00000000 */ nop -.L80080E1C: -/* 081A1C 80080E1C 3C0A800E */ lui $t2, %hi(gMenuTrisFlip) # $t2, 0x800e -/* 081A20 80080E20 3C01800E */ lui $at, %hi(gWoodPanelCount) # $at, 0x800e -/* 081A24 80080E24 254A1DB4 */ addiu $t2, %lo(gMenuTrisFlip) # addiu $t2, $t2, 0x1db4 -/* 081A28 80080E28 AC201DB8 */ sw $zero, %lo(gWoodPanelCount)($at) -/* 081A2C 80080E2C 8D590000 */ lw $t9, ($t2) -/* 081A30 80080E30 24100001 */ li $s0, 1 -/* 081A34 80080E34 0219C023 */ subu $t8, $s0, $t9 -/* 081A38 80080E38 AD580000 */ sw $t8, ($t2) -/* 081A3C 80080E3C 0C01ECF4 */ jal reset_render_settings -/* 081A40 80080E40 00C02025 */ move $a0, $a2 -/* 081A44 80080E44 8FBF0034 */ lw $ra, 0x34($sp) -/* 081A48 80080E48 8FB00018 */ lw $s0, 0x18($sp) -/* 081A4C 80080E4C 8FB1001C */ lw $s1, 0x1c($sp) -/* 081A50 80080E50 8FB20020 */ lw $s2, 0x20($sp) -/* 081A54 80080E54 8FB30024 */ lw $s3, 0x24($sp) -/* 081A58 80080E58 8FB40028 */ lw $s4, 0x28($sp) -/* 081A5C 80080E5C 8FB5002C */ lw $s5, 0x2c($sp) -/* 081A60 80080E60 8FB60030 */ lw $s6, 0x30($sp) -/* 081A64 80080E64 03E00008 */ jr $ra -/* 081A68 80080E68 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/menu/func_80080E90.s b/asm/non_matchings/menu/func_80080E90.s deleted file mode 100644 index 61d4094a..00000000 --- a/asm/non_matchings/menu/func_80080E90.s +++ /dev/null @@ -1,249 +0,0 @@ -glabel func_80080E90 -/* 081A90 80080E90 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 081A94 80080E94 AFBF003C */ sw $ra, 0x3c($sp) -/* 081A98 80080E98 AFBE0038 */ sw $fp, 0x38($sp) -/* 081A9C 80080E9C AFB70034 */ sw $s7, 0x34($sp) -/* 081AA0 80080EA0 AFB60030 */ sw $s6, 0x30($sp) -/* 081AA4 80080EA4 AFB5002C */ sw $s5, 0x2c($sp) -/* 081AA8 80080EA8 AFB40028 */ sw $s4, 0x28($sp) -/* 081AAC 80080EAC AFB30024 */ sw $s3, 0x24($sp) -/* 081AB0 80080EB0 AFB20020 */ sw $s2, 0x20($sp) -/* 081AB4 80080EB4 AFB1001C */ sw $s1, 0x1c($sp) -/* 081AB8 80080EB8 AFB00018 */ sw $s0, 0x18($sp) -/* 081ABC 80080EBC 8C830000 */ lw $v1, ($a0) -/* 081AC0 80080EC0 3C18800E */ lui $t8, %hi(dMenuHudSettings) # $t8, 0x800e -/* 081AC4 80080EC4 246E0008 */ addiu $t6, $v1, 8 -/* 081AC8 80080EC8 AC8E0000 */ sw $t6, ($a0) -/* 081ACC 80080ECC 27181C70 */ addiu $t8, %lo(dMenuHudSettings) # addiu $t8, $t8, 0x1c70 -/* 081AD0 80080ED0 3C0F0600 */ lui $t7, 0x600 -/* 081AD4 80080ED4 AC6F0000 */ sw $t7, ($v1) -/* 081AD8 80080ED8 AC780004 */ sw $t8, 4($v1) -/* 081ADC 80080EDC 8C830000 */ lw $v1, ($a0) - # dMenuHudSettings - 0x7FFFFFB0 = 0xE1CC0 -/* 081AE0 80080EE0 3C0F000E */ lui $t7, %hi(dMenuHudSettings - 0x7FFFFFB0) # $t7, 0xe -/* 081AE4 80080EE4 24790008 */ addiu $t9, $v1, 8 -/* 081AE8 80080EE8 AC990000 */ sw $t9, ($a0) -/* 081AEC 80080EEC 3C0E0702 */ lui $t6, (0x07020010 >> 16) # lui $t6, 0x702 -/* 081AF0 80080EF0 35CE0010 */ ori $t6, (0x07020010 & 0xFFFF) # ori $t6, $t6, 0x10 - # dMenuHudSettings - 0x7FFFFFB0 = 0xE1CC0 -/* 081AF4 80080EF4 25EF1CC0 */ addiu $t7, %lo(dMenuHudSettings - 0x7FFFFFB0) # addiu $t7, $t7, 0x1cc0 -/* 081AF8 80080EF8 AC6F0004 */ sw $t7, 4($v1) -/* 081AFC 80080EFC AC6E0000 */ sw $t6, ($v1) -/* 081B00 80080F00 8FB70058 */ lw $s7, 0x58($sp) -/* 081B04 80080F04 8FBE0054 */ lw $fp, 0x54($sp) -/* 081B08 80080F08 00808025 */ move $s0, $a0 -/* 081B0C 80080F0C 00C09825 */ move $s3, $a2 -/* 081B10 80080F10 00A0A825 */ move $s5, $a1 -/* 081B14 80080F14 00E0B025 */ move $s6, $a3 -/* 081B18 80080F18 0000A025 */ move $s4, $zero -/* 081B1C 80080F1C 3C11F600 */ lui $s1, 0xf600 -.L80080F20: -/* 081B20 80080F20 3C0E800E */ lui $t6, %hi(D_800E1DC8) # $t6, 0x800e -/* 081B24 80080F24 25CE1DC8 */ addiu $t6, %lo(D_800E1DC8) # addiu $t6, $t6, 0x1dc8 -/* 081B28 80080F28 0014C8C0 */ sll $t9, $s4, 3 -/* 081B2C 80080F2C 032E1021 */ addu $v0, $t9, $t6 -/* 081B30 80080F30 844B0000 */ lh $t3, ($v0) -/* 081B34 80080F34 844C0002 */ lh $t4, 2($v0) -/* 081B38 80080F38 844D0004 */ lh $t5, 4($v0) -/* 081B3C 80080F3C 845F0006 */ lh $ra, 6($v0) -/* 081B40 80080F40 02A04825 */ move $t1, $s5 -/* 081B44 80080F44 02603025 */ move $a2, $s3 -/* 081B48 80080F48 1280000F */ beqz $s4, .L80080F88 -/* 081B4C 80080F4C 00005025 */ move $t2, $zero -/* 081B50 80080F50 8FAF0050 */ lw $t7, 0x50($sp) -/* 081B54 80080F54 24010001 */ li $at, 1 -/* 081B58 80080F58 026F2021 */ addu $a0, $s3, $t7 -/* 081B5C 80080F5C 1281000F */ beq $s4, $at, .L80080F9C -/* 081B60 80080F60 2483FFFF */ addiu $v1, $a0, -1 -/* 081B64 80080F64 24010002 */ li $at, 2 -/* 081B68 80080F68 12810014 */ beq $s4, $at, .L80080FBC -/* 081B6C 80080F6C 00603025 */ move $a2, $v1 -/* 081B70 80080F70 8FA20068 */ lw $v0, 0x68($sp) -/* 081B74 80080F74 26660001 */ addiu $a2, $s3, 1 -/* 081B78 80080F78 26A70001 */ addiu $a3, $s5, 1 -/* 081B7C 80080F7C 00604025 */ move $t0, $v1 -/* 081B80 80080F80 10000012 */ b .L80080FCC -/* 081B84 80080F84 03C09025 */ move $s2, $fp -.L80080F88: -/* 081B88 80080F88 8FA2005C */ lw $v0, 0x5c($sp) -/* 081B8C 80080F8C 02B63821 */ addu $a3, $s5, $s6 -/* 081B90 80080F90 26680001 */ addiu $t0, $s3, 1 -/* 081B94 80080F94 1000000D */ b .L80080FCC -/* 081B98 80080F98 02E09025 */ move $s2, $s7 -.L80080F9C: -/* 081B9C 80080F9C 02B64821 */ addu $t1, $s5, $s6 -/* 081BA0 80080FA0 8FA20060 */ lw $v0, 0x60($sp) -/* 081BA4 80080FA4 2529FFFF */ addiu $t1, $t1, -1 -/* 081BA8 80080FA8 26660001 */ addiu $a2, $s3, 1 -/* 081BAC 80080FAC 02B63821 */ addu $a3, $s5, $s6 -/* 081BB0 80080FB0 00604025 */ move $t0, $v1 -/* 081BB4 80080FB4 10000005 */ b .L80080FCC -/* 081BB8 80080FB8 03C09025 */ move $s2, $fp -.L80080FBC: -/* 081BBC 80080FBC 8FA20064 */ lw $v0, 0x64($sp) -/* 081BC0 80080FC0 02B63821 */ addu $a3, $s5, $s6 -/* 081BC4 80080FC4 00804025 */ move $t0, $a0 -/* 081BC8 80080FC8 02E09025 */ move $s2, $s7 -.L80080FCC: -/* 081BCC 80080FCC 8E030000 */ lw $v1, ($s0) -/* 081BD0 80080FD0 3C19FA00 */ lui $t9, 0xfa00 -/* 081BD4 80080FD4 24780008 */ addiu $t8, $v1, 8 -/* 081BD8 80080FD8 AE180000 */ sw $t8, ($s0) -/* 081BDC 80080FDC AC790000 */ sw $t9, ($v1) -/* 081BE0 80080FE0 0002CC03 */ sra $t9, $v0, 0x10 -/* 081BE4 80080FE4 00027E03 */ sra $t7, $v0, 0x18 -/* 081BE8 80080FE8 000FC600 */ sll $t8, $t7, 0x18 -/* 081BEC 80080FEC 332E00FF */ andi $t6, $t9, 0xff -/* 081BF0 80080FF0 000E7C00 */ sll $t7, $t6, 0x10 -/* 081BF4 80080FF4 030FC825 */ or $t9, $t8, $t7 -/* 081BF8 80080FF8 00027203 */ sra $t6, $v0, 8 -/* 081BFC 80080FFC 31D800FF */ andi $t8, $t6, 0xff -/* 081C00 80081000 00187A00 */ sll $t7, $t8, 8 -/* 081C04 80081004 032F7025 */ or $t6, $t9, $t7 -/* 081C08 80081008 305800FF */ andi $t8, $v0, 0xff -/* 081C0C 8008100C 01D8C825 */ or $t9, $t6, $t8 -/* 081C10 80081010 1A400062 */ blez $s2, .L8008119C -/* 081C14 80081014 AC790004 */ sw $t9, 4($v1) -/* 081C18 80081018 32420001 */ andi $v0, $s2, 1 -/* 081C1C 8008101C 10400021 */ beqz $v0, .L800810A4 -/* 081C20 80081020 00000000 */ nop -/* 081C24 80081024 04E0001A */ bltz $a3, .L80081090 -/* 081C28 80081028 240A0001 */ li $t2, 1 -/* 081C2C 8008102C 05000018 */ bltz $t0, .L80081090 -/* 081C30 80081030 30EE03FF */ andi $t6, $a3, 0x3ff -/* 081C34 80081034 05210003 */ bgez $t1, .L80081044 -/* 081C38 80081038 000EC380 */ sll $t8, $t6, 0xe -/* 081C3C 8008103C 10000002 */ b .L80081048 -/* 081C40 80081040 00002825 */ move $a1, $zero -.L80081044: -/* 081C44 80081044 01202825 */ move $a1, $t1 -.L80081048: -/* 081C48 80081048 04C10003 */ bgez $a2, .L80081058 -/* 081C4C 8008104C 00C02025 */ move $a0, $a2 -/* 081C50 80081050 10000001 */ b .L80081058 -/* 081C54 80081054 00002025 */ move $a0, $zero -.L80081058: -/* 081C58 80081058 8E030000 */ lw $v1, ($s0) -/* 081C5C 8008105C 0311C825 */ or $t9, $t8, $s1 -/* 081C60 80081060 246F0008 */ addiu $t7, $v1, 8 -/* 081C64 80081064 AE0F0000 */ sw $t7, ($s0) -/* 081C68 80081068 310F03FF */ andi $t7, $t0, 0x3ff -/* 081C6C 8008106C 000F7080 */ sll $t6, $t7, 2 -/* 081C70 80081070 032EC025 */ or $t8, $t9, $t6 -/* 081C74 80081074 308E03FF */ andi $t6, $a0, 0x3ff -/* 081C78 80081078 30AF03FF */ andi $t7, $a1, 0x3ff -/* 081C7C 8008107C AC780000 */ sw $t8, ($v1) -/* 081C80 80081080 000EC080 */ sll $t8, $t6, 2 -/* 081C84 80081084 000FCB80 */ sll $t9, $t7, 0xe -/* 081C88 80081088 03387825 */ or $t7, $t9, $t8 -/* 081C8C 8008108C AC6F0004 */ sw $t7, 4($v1) -.L80081090: -/* 081C90 80081090 012B4821 */ addu $t1, $t1, $t3 -/* 081C94 80081094 00CC3021 */ addu $a2, $a2, $t4 -/* 081C98 80081098 00ED3821 */ addu $a3, $a3, $t5 -/* 081C9C 8008109C 1152003F */ beq $t2, $s2, .L8008119C -/* 081CA0 800810A0 011F4021 */ addu $t0, $t0, $ra -.L800810A4: -/* 081CA4 800810A4 04E0001A */ bltz $a3, .L80081110 -/* 081CA8 800810A8 254A0002 */ addiu $t2, $t2, 2 -/* 081CAC 800810AC 05000018 */ bltz $t0, .L80081110 -/* 081CB0 800810B0 30F903FF */ andi $t9, $a3, 0x3ff -/* 081CB4 800810B4 05210003 */ bgez $t1, .L800810C4 -/* 081CB8 800810B8 0019C380 */ sll $t8, $t9, 0xe -/* 081CBC 800810BC 10000002 */ b .L800810C8 -/* 081CC0 800810C0 00002825 */ move $a1, $zero -.L800810C4: -/* 081CC4 800810C4 01202825 */ move $a1, $t1 -.L800810C8: -/* 081CC8 800810C8 04C10003 */ bgez $a2, .L800810D8 -/* 081CCC 800810CC 00C02025 */ move $a0, $a2 -/* 081CD0 800810D0 10000001 */ b .L800810D8 -/* 081CD4 800810D4 00002025 */ move $a0, $zero -.L800810D8: -/* 081CD8 800810D8 8E030000 */ lw $v1, ($s0) -/* 081CDC 800810DC 03117825 */ or $t7, $t8, $s1 -/* 081CE0 800810E0 246E0008 */ addiu $t6, $v1, 8 -/* 081CE4 800810E4 AE0E0000 */ sw $t6, ($s0) -/* 081CE8 800810E8 310E03FF */ andi $t6, $t0, 0x3ff -/* 081CEC 800810EC 000EC880 */ sll $t9, $t6, 2 -/* 081CF0 800810F0 01F9C025 */ or $t8, $t7, $t9 -/* 081CF4 800810F4 309903FF */ andi $t9, $a0, 0x3ff -/* 081CF8 800810F8 30AE03FF */ andi $t6, $a1, 0x3ff -/* 081CFC 800810FC AC780000 */ sw $t8, ($v1) -/* 081D00 80081100 0019C080 */ sll $t8, $t9, 2 -/* 081D04 80081104 000E7B80 */ sll $t7, $t6, 0xe -/* 081D08 80081108 01F87025 */ or $t6, $t7, $t8 -/* 081D0C 8008110C AC6E0004 */ sw $t6, 4($v1) -.L80081110: -/* 081D10 80081110 00ED3821 */ addu $a3, $a3, $t5 -/* 081D14 80081114 012B4821 */ addu $t1, $t1, $t3 -/* 081D18 80081118 00CC3021 */ addu $a2, $a2, $t4 -/* 081D1C 8008111C 04E0001A */ bltz $a3, .L80081188 -/* 081D20 80081120 011F4021 */ addu $t0, $t0, $ra -/* 081D24 80081124 05000018 */ bltz $t0, .L80081188 -/* 081D28 80081128 30EF03FF */ andi $t7, $a3, 0x3ff -/* 081D2C 8008112C 05210003 */ bgez $t1, .L8008113C -/* 081D30 80081130 000FC380 */ sll $t8, $t7, 0xe -/* 081D34 80081134 10000002 */ b .L80081140 -/* 081D38 80081138 00002825 */ move $a1, $zero -.L8008113C: -/* 081D3C 8008113C 01202825 */ move $a1, $t1 -.L80081140: -/* 081D40 80081140 04C10003 */ bgez $a2, .L80081150 -/* 081D44 80081144 00C02025 */ move $a0, $a2 -/* 081D48 80081148 10000001 */ b .L80081150 -/* 081D4C 8008114C 00002025 */ move $a0, $zero -.L80081150: -/* 081D50 80081150 8E030000 */ lw $v1, ($s0) -/* 081D54 80081154 03117025 */ or $t6, $t8, $s1 -/* 081D58 80081158 24790008 */ addiu $t9, $v1, 8 -/* 081D5C 8008115C AE190000 */ sw $t9, ($s0) -/* 081D60 80081160 311903FF */ andi $t9, $t0, 0x3ff -/* 081D64 80081164 00197880 */ sll $t7, $t9, 2 -/* 081D68 80081168 01CFC025 */ or $t8, $t6, $t7 -/* 081D6C 8008116C 308F03FF */ andi $t7, $a0, 0x3ff -/* 081D70 80081170 30B903FF */ andi $t9, $a1, 0x3ff -/* 081D74 80081174 AC780000 */ sw $t8, ($v1) -/* 081D78 80081178 000FC080 */ sll $t8, $t7, 2 -/* 081D7C 8008117C 00197380 */ sll $t6, $t9, 0xe -/* 081D80 80081180 01D8C825 */ or $t9, $t6, $t8 -/* 081D84 80081184 AC790004 */ sw $t9, 4($v1) -.L80081188: -/* 081D88 80081188 012B4821 */ addu $t1, $t1, $t3 -/* 081D8C 8008118C 00CC3021 */ addu $a2, $a2, $t4 -/* 081D90 80081190 00ED3821 */ addu $a3, $a3, $t5 -/* 081D94 80081194 1552FFC3 */ bne $t2, $s2, .L800810A4 -/* 081D98 80081198 011F4021 */ addu $t0, $t0, $ra -.L8008119C: -/* 081D9C 8008119C 26940001 */ addiu $s4, $s4, 1 -/* 081DA0 800811A0 24010004 */ li $at, 4 -/* 081DA4 800811A4 1681FF5E */ bne $s4, $at, .L80080F20 -/* 081DA8 800811A8 00000000 */ nop -/* 081DAC 800811AC 8E030000 */ lw $v1, ($s0) -/* 081DB0 800811B0 3C0EE700 */ lui $t6, 0xe700 -/* 081DB4 800811B4 246F0008 */ addiu $t7, $v1, 8 -/* 081DB8 800811B8 AE0F0000 */ sw $t7, ($s0) -/* 081DBC 800811BC AC600004 */ sw $zero, 4($v1) -/* 081DC0 800811C0 AC6E0000 */ sw $t6, ($v1) -/* 081DC4 800811C4 8E030000 */ lw $v1, ($s0) -/* 081DC8 800811C8 240FFFFF */ li $t7, -1 -/* 081DCC 800811CC 24780008 */ addiu $t8, $v1, 8 -/* 081DD0 800811D0 AE180000 */ sw $t8, ($s0) -/* 081DD4 800811D4 3C19FA00 */ lui $t9, 0xfa00 -/* 081DD8 800811D8 02002025 */ move $a0, $s0 -/* 081DDC 800811DC AC790000 */ sw $t9, ($v1) -/* 081DE0 800811E0 0C01ECF4 */ jal reset_render_settings -/* 081DE4 800811E4 AC6F0004 */ sw $t7, 4($v1) -/* 081DE8 800811E8 8FBF003C */ lw $ra, 0x3c($sp) -/* 081DEC 800811EC 8FB00018 */ lw $s0, 0x18($sp) -/* 081DF0 800811F0 8FB1001C */ lw $s1, 0x1c($sp) -/* 081DF4 800811F4 8FB20020 */ lw $s2, 0x20($sp) -/* 081DF8 800811F8 8FB30024 */ lw $s3, 0x24($sp) -/* 081DFC 800811FC 8FB40028 */ lw $s4, 0x28($sp) -/* 081E00 80081200 8FB5002C */ lw $s5, 0x2c($sp) -/* 081E04 80081204 8FB60030 */ lw $s6, 0x30($sp) -/* 081E08 80081208 8FB70034 */ lw $s7, 0x34($sp) -/* 081E0C 8008120C 8FBE0038 */ lw $fp, 0x38($sp) -/* 081E10 80081210 03E00008 */ jr $ra -/* 081E14 80081214 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/menu/load_menu_text.s b/asm/non_matchings/menu/load_menu_text.s deleted file mode 100644 index 65de503f..00000000 --- a/asm/non_matchings/menu/load_menu_text.s +++ /dev/null @@ -1,435 +0,0 @@ -glabel load_menu_text -/* 080500 8007F900 3C09800E */ lui $t1, %hi(gMenuTextLangTable) # $t1, 0x800e -/* 080504 8007F904 2529F49C */ addiu $t1, %lo(gMenuTextLangTable) # addiu $t1, $t1, -0xb64 -/* 080508 8007F908 8D230000 */ lw $v1, ($t1) -/* 08050C 8007F90C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 080510 8007F910 AFBF0014 */ sw $ra, 0x14($sp) -/* 080514 8007F914 14600009 */ bnez $v1, .L8007F93C -/* 080518 8007F918 00802825 */ move $a1, $a0 -/* 08051C 8007F91C 24040009 */ li $a0, 9 -/* 080520 8007F920 0C01DB16 */ jal load_asset_section_from_rom -/* 080524 8007F924 AFA50018 */ sw $a1, 0x18($sp) -/* 080528 8007F928 3C09800E */ lui $t1, %hi(gMenuTextLangTable) # $t1, 0x800e -/* 08052C 8007F92C 2529F49C */ addiu $t1, %lo(gMenuTextLangTable) # addiu $t1, $t1, -0xb64 -/* 080530 8007F930 8FA50018 */ lw $a1, 0x18($sp) -/* 080534 8007F934 AD220000 */ sw $v0, ($t1) -/* 080538 8007F938 00401825 */ move $v1, $v0 -.L8007F93C: -/* 08053C 8007F93C 24010001 */ li $at, 1 -/* 080540 8007F940 10A1000B */ beq $a1, $at, .L8007F970 -/* 080544 8007F944 3C08800E */ lui $t0, %hi(gMenuText) # $t0, 0x800e -/* 080548 8007F948 24010002 */ li $at, 2 -/* 08054C 8007F94C 10A1000A */ beq $a1, $at, .L8007F978 -/* 080550 8007F950 24060002 */ li $a2, 2 -/* 080554 8007F954 24010003 */ li $at, 3 -/* 080558 8007F958 10A10003 */ beq $a1, $at, .L8007F968 -/* 08055C 8007F95C 00000000 */ nop -/* 080560 8007F960 10000005 */ b .L8007F978 -/* 080564 8007F964 24060001 */ li $a2, 1 -.L8007F968: -/* 080568 8007F968 10000003 */ b .L8007F978 -/* 08056C 8007F96C 24060004 */ li $a2, 4 -.L8007F970: -/* 080570 8007F970 10000001 */ b .L8007F978 -/* 080574 8007F974 24060003 */ li $a2, 3 -.L8007F978: -/* 080578 8007F978 00067080 */ sll $t6, $a2, 2 -/* 08057C 8007F97C 006E1021 */ addu $v0, $v1, $t6 -/* 080580 8007F980 2508F4A0 */ addiu $t0, %lo(gMenuText) # addiu $t0, $t0, -0xb60 -/* 080584 8007F984 8C470004 */ lw $a3, 4($v0) -/* 080588 8007F988 8C460000 */ lw $a2, ($v0) -/* 08058C 8007F98C 8D050000 */ lw $a1, ($t0) -/* 080590 8007F990 00E63823 */ subu $a3, $a3, $a2 -/* 080594 8007F994 10A00179 */ beqz $a1, .L8007FF7C -/* 080598 8007F998 8FBF0014 */ lw $ra, 0x14($sp) -/* 08059C 8007F99C 0C01DB9A */ jal load_asset_to_address -/* 0805A0 8007F9A0 24040008 */ li $a0, 8 -/* 0805A4 8007F9A4 3C09800E */ lui $t1, %hi(gMenuTextLangTable) # $t1, 0x800e -/* 0805A8 8007F9A8 2529F49C */ addiu $t1, %lo(gMenuTextLangTable) # addiu $t1, $t1, -0xb64 -/* 0805AC 8007F9AC 8D2F0000 */ lw $t7, ($t1) -/* 0805B0 8007F9B0 3C08800E */ lui $t0, %hi(gMenuText) # $t0, 0x800e -/* 0805B4 8007F9B4 8DF80000 */ lw $t8, ($t7) -/* 0805B8 8007F9B8 2508F4A0 */ addiu $t0, %lo(gMenuText) # addiu $t0, $t0, -0xb60 -/* 0805BC 8007F9BC 1B000014 */ blez $t8, .L8007FA10 -/* 0805C0 8007F9C0 00003025 */ move $a2, $zero -/* 0805C4 8007F9C4 00001825 */ move $v1, $zero -/* 0805C8 8007F9C8 2407FFFF */ li $a3, -1 -.L8007F9CC: -/* 0805CC 8007F9CC 8D050000 */ lw $a1, ($t0) -/* 0805D0 8007F9D0 00000000 */ nop -/* 0805D4 8007F9D4 00A31021 */ addu $v0, $a1, $v1 -/* 0805D8 8007F9D8 8C440000 */ lw $a0, ($v0) -/* 0805DC 8007F9DC 00000000 */ nop -/* 0805E0 8007F9E0 14E40003 */ bne $a3, $a0, .L8007F9F0 -/* 0805E4 8007F9E4 0085C821 */ addu $t9, $a0, $a1 -/* 0805E8 8007F9E8 10000002 */ b .L8007F9F4 -/* 0805EC 8007F9EC AC400000 */ sw $zero, ($v0) -.L8007F9F0: -/* 0805F0 8007F9F0 AC590000 */ sw $t9, ($v0) -.L8007F9F4: -/* 0805F4 8007F9F4 8D2A0000 */ lw $t2, ($t1) -/* 0805F8 8007F9F8 24C60001 */ addiu $a2, $a2, 1 -/* 0805FC 8007F9FC 8D4B0000 */ lw $t3, ($t2) -/* 080600 8007FA00 24630004 */ addiu $v1, $v1, 4 -/* 080604 8007FA04 00CB082A */ slt $at, $a2, $t3 -/* 080608 8007FA08 1420FFF0 */ bnez $at, .L8007F9CC -/* 08060C 8007FA0C 00000000 */ nop -.L8007FA10: -/* 080610 8007FA10 8D040000 */ lw $a0, ($t0) -/* 080614 8007FA14 3C058012 */ lui $a1, %hi(gAudioOutputStrings) # $a1, 0x8012 -/* 080618 8007FA18 8C8C0000 */ lw $t4, ($a0) -/* 08061C 8007FA1C 24A569D0 */ addiu $a1, %lo(gAudioOutputStrings) # addiu $a1, $a1, 0x69d0 -/* 080620 8007FA20 ACAC0000 */ sw $t4, ($a1) -/* 080624 8007FA24 8C8D0004 */ lw $t5, 4($a0) -/* 080628 8007FA28 3C02800E */ lui $v0, %hi(gAudioMenuStrings) # $v0, 0x800e -/* 08062C 8007FA2C ACAD0004 */ sw $t5, 4($a1) -/* 080630 8007FA30 8C8E0008 */ lw $t6, 8($a0) -/* 080634 8007FA34 2442FA3C */ addiu $v0, %lo(gAudioMenuStrings) # addiu $v0, $v0, -0x5c4 -/* 080638 8007FA38 ACAE0008 */ sw $t6, 8($a1) -/* 08063C 8007FA3C 8C8F000C */ lw $t7, 0xc($a0) -/* 080640 8007FA40 3C018012 */ lui $at, %hi(gMusicTestString) # $at, 0x8012 -/* 080644 8007FA44 AC4F001C */ sw $t7, 0x1c($v0) -/* 080648 8007FA48 8C980010 */ lw $t8, 0x10($a0) -/* 08064C 8007FA4C 3C03800E */ lui $v1, %hi(gMagicCodeMenuStrings) # $v1, 0x800e -/* 080650 8007FA50 AC58002C */ sw $t8, 0x2c($v0) -/* 080654 8007FA54 8C990014 */ lw $t9, 0x14($a0) -/* 080658 8007FA58 2463FDA0 */ addiu $v1, %lo(gMagicCodeMenuStrings) # addiu $v1, $v1, -0x260 -/* 08065C 8007FA5C AC59003C */ sw $t9, 0x3c($v0) -/* 080660 8007FA60 8C8A0018 */ lw $t2, 0x18($a0) -/* 080664 8007FA64 3C07800E */ lui $a3, %hi(gRaceResultsMenuElements) # $a3, 0x800e -/* 080668 8007FA68 AC4A004C */ sw $t2, 0x4c($v0) -/* 08066C 8007FA6C 8C8B0018 */ lw $t3, 0x18($a0) -/* 080670 8007FA70 24E70BEC */ addiu $a3, %lo(gRaceResultsMenuElements) # addiu $a3, $a3, 0xbec -/* 080674 8007FA74 AC4B005C */ sw $t3, 0x5c($v0) -/* 080678 8007FA78 8C8C001C */ lw $t4, 0x1c($a0) -/* 08067C 8007FA7C 3C09800E */ lui $t1, %hi(gRaceOrderMenuElements) # $t1, 0x800e -/* 080680 8007FA80 AC2C69E0 */ sw $t4, %lo(gMusicTestString)($at) -/* 080684 8007FA84 8C8D0038 */ lw $t5, 0x38($a0) -/* 080688 8007FA88 25290CEC */ addiu $t1, %lo(gRaceOrderMenuElements) # addiu $t1, $t1, 0xcec -/* 08068C 8007FA8C AC6D0000 */ sw $t5, ($v1) -/* 080690 8007FA90 8C8E003C */ lw $t6, 0x3c($a0) -/* 080694 8007FA94 3C06800E */ lui $a2, %hi(gRecordTimesMenuElements) # $a2, 0x800e -/* 080698 8007FA98 AC6E0004 */ sw $t6, 4($v1) -/* 08069C 8007FA9C 8C8F0040 */ lw $t7, 0x40($a0) -/* 0806A0 8007FAA0 24C60E4C */ addiu $a2, %lo(gRecordTimesMenuElements) # addiu $a2, $a2, 0xe4c -/* 0806A4 8007FAA4 AC6F0008 */ sw $t7, 8($v1) -/* 0806A8 8007FAA8 8C980014 */ lw $t8, 0x14($a0) -/* 0806AC 8007FAAC 3C02800E */ lui $v0, %hi(gOptionMenuStrings) # $v0, 0x800e -/* 0806B0 8007FAB0 AC78000C */ sw $t8, 0xc($v1) -/* 0806B4 8007FAB4 8C990074 */ lw $t9, 0x74($a0) -/* 0806B8 8007FAB8 2442FA10 */ addiu $v0, %lo(gOptionMenuStrings) # addiu $v0, $v0, -0x5f0 -/* 0806BC 8007FABC ACF90034 */ sw $t9, 0x34($a3) -/* 0806C0 8007FAC0 8C8A0078 */ lw $t2, 0x78($a0) -/* 0806C4 8007FAC4 3C010200 */ lui $at, 0x200 -/* 0806C8 8007FAC8 ACEA0054 */ sw $t2, 0x54($a3) -/* 0806CC 8007FACC 8C8B007C */ lw $t3, 0x7c($a0) -/* 0806D0 8007FAD0 00000000 */ nop -/* 0806D4 8007FAD4 AD2B0114 */ sw $t3, 0x114($t1) -/* 0806D8 8007FAD8 8C8C007C */ lw $t4, 0x7c($a0) -/* 0806DC 8007FADC 3C0B8012 */ lui $t3, %hi(sEepromSettings+4) # $t3, 0x8012 -/* 0806E0 8007FAE0 AD2C0134 */ sw $t4, 0x134($t1) -/* 0806E4 8007FAE4 8C8D0080 */ lw $t5, 0x80($a0) -/* 0806E8 8007FAE8 00000000 */ nop -/* 0806EC 8007FAEC ACCD0014 */ sw $t5, 0x14($a2) -/* 0806F0 8007FAF0 8C8E0080 */ lw $t6, 0x80($a0) -/* 0806F4 8007FAF4 00000000 */ nop -/* 0806F8 8007FAF8 ACCE0034 */ sw $t6, 0x34($a2) -/* 0806FC 8007FAFC 8C8F0024 */ lw $t7, 0x24($a0) -/* 080700 8007FB00 00000000 */ nop -/* 080704 8007FB04 ACCF0054 */ sw $t7, 0x54($a2) -/* 080708 8007FB08 8C980028 */ lw $t8, 0x28($a0) -/* 08070C 8007FB0C 00000000 */ nop -/* 080710 8007FB10 ACD800B4 */ sw $t8, 0xb4($a2) -/* 080714 8007FB14 8C990088 */ lw $t9, 0x88($a0) -/* 080718 8007FB18 00000000 */ nop -/* 08071C 8007FB1C AC590000 */ sw $t9, ($v0) -/* 080720 8007FB20 8D6B644C */ lw $t3, %lo(sEepromSettings+4)($t3) -/* 080724 8007FB24 00000000 */ nop -/* 080728 8007FB28 01616824 */ and $t5, $t3, $at -/* 08072C 8007FB2C 11A00004 */ beqz $t5, .L8007FB40 -/* 080730 8007FB30 00000000 */ nop -/* 080734 8007FB34 8C8E02D8 */ lw $t6, 0x2d8($a0) -/* 080738 8007FB38 10000004 */ b .L8007FB4C -/* 08073C 8007FB3C AC4E0004 */ sw $t6, 4($v0) -.L8007FB40: -/* 080740 8007FB40 8C8F02DC */ lw $t7, 0x2dc($a0) -/* 080744 8007FB44 00000000 */ nop -/* 080748 8007FB48 AC4F0004 */ sw $t7, 4($v0) -.L8007FB4C: -/* 08074C 8007FB4C 8C980018 */ lw $t8, 0x18($a0) -/* 080750 8007FB50 3C06800E */ lui $a2, %hi(gFilenames) # $a2, 0x800e -/* 080754 8007FB54 AC580008 */ sw $t8, 8($v0) -/* 080758 8007FB58 8C990294 */ lw $t9, 0x294($a0) -/* 08075C 8007FB5C 24C603B0 */ addiu $a2, %lo(gFilenames) # addiu $a2, $a2, 0x3b0 -/* 080760 8007FB60 AC59000C */ sw $t9, 0xc($v0) -/* 080764 8007FB64 8C8A0044 */ lw $t2, 0x44($a0) -/* 080768 8007FB68 3C07800E */ lui $a3, %hi(gContPakNotPresentStrings) # $a3, 0x800e -/* 08076C 8007FB6C AC4A0010 */ sw $t2, 0x10($v0) -/* 080770 8007FB70 8C8B0014 */ lw $t3, 0x14($a0) -/* 080774 8007FB74 24E7FAE4 */ addiu $a3, %lo(gContPakNotPresentStrings) # addiu $a3, $a3, -0x51c -/* 080778 8007FB78 AC4B0014 */ sw $t3, 0x14($v0) -/* 08077C 8007FB7C 8C8C0120 */ lw $t4, 0x120($a0) -/* 080780 8007FB80 3C03800E */ lui $v1, %hi(gContPakCorruptDataRepairStrings) # $v1, 0x800e -/* 080784 8007FB84 ACCC0000 */ sw $t4, ($a2) -/* 080788 8007FB88 8C8D0124 */ lw $t5, 0x124($a0) -/* 08078C 8007FB8C 2463FAFC */ addiu $v1, %lo(gContPakCorruptDataRepairStrings) # addiu $v1, $v1, -0x504 -/* 080790 8007FB90 ACCD0004 */ sw $t5, 4($a2) -/* 080794 8007FB94 8C8E0128 */ lw $t6, 0x128($a0) -/* 080798 8007FB98 3C05800E */ lui $a1, %hi(gContPakDamagedStrings) # $a1, 0x800e -/* 08079C 8007FB9C ACCE0008 */ sw $t6, 8($a2) -/* 0807A0 8007FBA0 8C8F0168 */ lw $t7, 0x168($a0) -/* 0807A4 8007FBA4 24A5FB14 */ addiu $a1, %lo(gContPakDamagedStrings) # addiu $a1, $a1, -0x4ec -/* 0807A8 8007FBA8 ACEF0000 */ sw $t7, ($a3) -/* 0807AC 8007FBAC 8C98016C */ lw $t8, 0x16c($a0) -/* 0807B0 8007FBB0 3C08800E */ lui $t0, %hi(gContPakFullStrings) # $t0, 0x800e -/* 0807B4 8007FBB4 ACF80004 */ sw $t8, 4($a3) -/* 0807B8 8007FBB8 8C990154 */ lw $t9, 0x154($a0) -/* 0807BC 8007FBBC 2508FB2C */ addiu $t0, %lo(gContPakFullStrings) # addiu $t0, $t0, -0x4d4 -/* 0807C0 8007FBC0 ACF9000C */ sw $t9, 0xc($a3) -/* 0807C4 8007FBC4 8C8A0168 */ lw $t2, 0x168($a0) -/* 0807C8 8007FBC8 3C02800E */ lui $v0, %hi(gContPakDiffContStrings) # $v0, 0x800e -/* 0807CC 8007FBCC AC6A0000 */ sw $t2, ($v1) -/* 0807D0 8007FBD0 8C8B0174 */ lw $t3, 0x174($a0) -/* 0807D4 8007FBD4 2442FB40 */ addiu $v0, %lo(gContPakDiffContStrings) # addiu $v0, $v0, -0x4c0 -/* 0807D8 8007FBD8 AC6B0004 */ sw $t3, 4($v1) -/* 0807DC 8007FBDC 8C8C0178 */ lw $t4, 0x178($a0) -/* 0807E0 8007FBE0 3C06800E */ lui $a2, %hi(gContPakRumbleDetectedStrings) # $a2, 0x800e -/* 0807E4 8007FBE4 AC6C000C */ sw $t4, 0xc($v1) -/* 0807E8 8007FBE8 8C8D0154 */ lw $t5, 0x154($a0) -/* 0807EC 8007FBEC 24C6FB8C */ addiu $a2, %lo(gContPakRumbleDetectedStrings) # addiu $a2, $a2, -0x474 -/* 0807F0 8007FBF0 AC6D0010 */ sw $t5, 0x10($v1) -/* 0807F4 8007FBF4 8C8E0168 */ lw $t6, 0x168($a0) -/* 0807F8 8007FBF8 3C03800E */ lui $v1, %hi(gContPakNoRoomForGhostsStrings) # $v1, 0x800e -/* 0807FC 8007FBFC ACAE0000 */ sw $t6, ($a1) -/* 080800 8007FC00 8C8F017C */ lw $t7, 0x17c($a0) -/* 080804 8007FC04 2463FB5C */ addiu $v1, %lo(gContPakNoRoomForGhostsStrings) # addiu $v1, $v1, -0x4a4 -/* 080808 8007FC08 ACAF0004 */ sw $t7, 4($a1) -/* 08080C 8007FC0C 8C980180 */ lw $t8, 0x180($a0) -/* 080810 8007FC10 3C07800E */ lui $a3, %hi(gContPakSwitchToRumbleStrings) # $a3, 0x800e -/* 080814 8007FC14 ACB8000C */ sw $t8, 0xc($a1) -/* 080818 8007FC18 8C990154 */ lw $t9, 0x154($a0) -/* 08081C 8007FC1C 24E7FBA4 */ addiu $a3, %lo(gContPakSwitchToRumbleStrings) # addiu $a3, $a3, -0x45c -/* 080820 8007FC20 ACB90010 */ sw $t9, 0x10($a1) -/* 080824 8007FC24 8C8A0168 */ lw $t2, 0x168($a0) -/* 080828 8007FC28 3C05800E */ lui $a1, %hi(gContPakCorruptDataStrings) # $a1, 0x800e -/* 08082C 8007FC2C AD0A0000 */ sw $t2, ($t0) -/* 080830 8007FC30 8C8B0184 */ lw $t3, 0x184($a0) -/* 080834 8007FC34 24A5FB74 */ addiu $a1, %lo(gContPakCorruptDataStrings) # addiu $a1, $a1, -0x48c -/* 080838 8007FC38 AD0B0004 */ sw $t3, 4($t0) -/* 08083C 8007FC3C 8C8C0188 */ lw $t4, 0x188($a0) -/* 080840 8007FC40 3C01800E */ lui $at, %hi(sBadControllerPakMenuText) # $at, 0x800e -/* 080844 8007FC44 AD0C000C */ sw $t4, 0xc($t0) -/* 080848 8007FC48 8C8D0168 */ lw $t5, 0x168($a0) -/* 08084C 8007FC4C 3C09800E */ lui $t1, %hi(sCorruptDataMenuText) # $t1, 0x800e -/* 080850 8007FC50 AC4D0000 */ sw $t5, ($v0) -/* 080854 8007FC54 8C8E018C */ lw $t6, 0x18c($a0) -/* 080858 8007FC58 252909EC */ addiu $t1, %lo(sCorruptDataMenuText) # addiu $t1, $t1, 0x9ec -/* 08085C 8007FC5C AC4E0004 */ sw $t6, 4($v0) -/* 080860 8007FC60 8C8F0190 */ lw $t7, 0x190($a0) -/* 080864 8007FC64 3C08800E */ lui $t0, %hi(D_800E09F8) # $t0, 0x800e -/* 080868 8007FC68 AC4F0008 */ sw $t7, 8($v0) -/* 08086C 8007FC6C 8C980154 */ lw $t8, 0x154($a0) -/* 080870 8007FC70 250809F8 */ addiu $t0, %lo(D_800E09F8) # addiu $t0, $t0, 0x9f8 -/* 080874 8007FC74 AC580010 */ sw $t8, 0x10($v0) -/* 080878 8007FC78 8C990168 */ lw $t9, 0x168($a0) -/* 08087C 8007FC7C 3C02800E */ lui $v0, %hi(gContPakNeed2ndAdvStrings) # $v0, 0x800e -/* 080880 8007FC80 AC790000 */ sw $t9, ($v1) -/* 080884 8007FC84 8C8A0198 */ lw $t2, 0x198($a0) -/* 080888 8007FC88 2442FBBC */ addiu $v0, %lo(gContPakNeed2ndAdvStrings) # addiu $v0, $v0, -0x444 -/* 08088C 8007FC8C AC6A0004 */ sw $t2, 4($v1) -/* 080890 8007FC90 8C8B019C */ lw $t3, 0x19c($a0) -/* 080894 8007FC94 00000000 */ nop -/* 080898 8007FC98 AC6B0008 */ sw $t3, 8($v1) -/* 08089C 8007FC9C 8C8C0188 */ lw $t4, 0x188($a0) -/* 0808A0 8007FCA0 00000000 */ nop -/* 0808A4 8007FCA4 AC6C0010 */ sw $t4, 0x10($v1) -/* 0808A8 8007FCA8 8C8D0168 */ lw $t5, 0x168($a0) -/* 0808AC 8007FCAC 3C03800E */ lui $v1, %hi(gGameSelectTextElemsWithAdv2) # $v1, 0x800e -/* 0808B0 8007FCB0 ACAD0000 */ sw $t5, ($a1) -/* 0808B4 8007FCB4 8C8E02E0 */ lw $t6, 0x2e0($a0) -/* 0808B8 8007FCB8 24630278 */ addiu $v1, %lo(gGameSelectTextElemsWithAdv2) # addiu $v1, $v1, 0x278 -/* 0808BC 8007FCBC ACAE0004 */ sw $t6, 4($a1) -/* 0808C0 8007FCC0 8C8F005C */ lw $t7, 0x5c($a0) -/* 0808C4 8007FCC4 00000000 */ nop -/* 0808C8 8007FCC8 ACAF000C */ sw $t7, 0xc($a1) -/* 0808CC 8007FCCC 8C980154 */ lw $t8, 0x154($a0) -/* 0808D0 8007FCD0 00000000 */ nop -/* 0808D4 8007FCD4 ACB80010 */ sw $t8, 0x10($a1) -/* 0808D8 8007FCD8 8C990264 */ lw $t9, 0x264($a0) -/* 0808DC 8007FCDC 3C05800E */ lui $a1, %hi(gGameSelectTextElemsNoAdv2) # $a1, 0x800e -/* 0808E0 8007FCE0 ACD90000 */ sw $t9, ($a2) -/* 0808E4 8007FCE4 8C8A0268 */ lw $t2, 0x268($a0) -/* 0808E8 8007FCE8 24A50198 */ addiu $a1, %lo(gGameSelectTextElemsNoAdv2) # addiu $a1, $a1, 0x198 -/* 0808EC 8007FCEC ACCA0004 */ sw $t2, 4($a2) -/* 0808F0 8007FCF0 8C8B026C */ lw $t3, 0x26c($a0) -/* 0808F4 8007FCF4 00000000 */ nop -/* 0808F8 8007FCF8 ACCB0008 */ sw $t3, 8($a2) -/* 0808FC 8007FCFC 8C8C0188 */ lw $t4, 0x188($a0) -/* 080900 8007FD00 00000000 */ nop -/* 080904 8007FD04 ACCC0010 */ sw $t4, 0x10($a2) -/* 080908 8007FD08 8C8D0270 */ lw $t5, 0x270($a0) -/* 08090C 8007FD0C 3C06800E */ lui $a2, %hi(gTitleMenuStrings) # $a2, 0x800e -/* 080910 8007FD10 ACED0000 */ sw $t5, ($a3) -/* 080914 8007FD14 8C8E0274 */ lw $t6, 0x274($a0) -/* 080918 8007FD18 24C6F7A4 */ addiu $a2, %lo(gTitleMenuStrings) # addiu $a2, $a2, -0x85c -/* 08091C 8007FD1C ACEE0004 */ sw $t6, 4($a3) -/* 080920 8007FD20 8C8F0278 */ lw $t7, 0x278($a0) -/* 080924 8007FD24 00000000 */ nop -/* 080928 8007FD28 ACEF0008 */ sw $t7, 8($a3) -/* 08092C 8007FD2C 8C980188 */ lw $t8, 0x188($a0) -/* 080930 8007FD30 00000000 */ nop -/* 080934 8007FD34 ACF80010 */ sw $t8, 0x10($a3) -/* 080938 8007FD38 8C9901A0 */ lw $t9, 0x1a0($a0) -/* 08093C 8007FD3C 3C07800E */ lui $a3, %hi(sNoControllerPakMenuText) # $a3, 0x800e -/* 080940 8007FD40 AC590000 */ sw $t9, ($v0) -/* 080944 8007FD44 8C8A01A4 */ lw $t2, 0x1a4($a0) -/* 080948 8007FD48 24E709D8 */ addiu $a3, %lo(sNoControllerPakMenuText) # addiu $a3, $a3, 0x9d8 -/* 08094C 8007FD4C AC4A0004 */ sw $t2, 4($v0) -/* 080950 8007FD50 8C8B01A8 */ lw $t3, 0x1a8($a0) -/* 080954 8007FD54 00000000 */ nop -/* 080958 8007FD58 AC4B0008 */ sw $t3, 8($v0) -/* 08095C 8007FD5C 8C8C01AC */ lw $t4, 0x1ac($a0) -/* 080960 8007FD60 00000000 */ nop -/* 080964 8007FD64 AC4C000C */ sw $t4, 0xc($v0) -/* 080968 8007FD68 8C8D01B0 */ lw $t5, 0x1b0($a0) -/* 08096C 8007FD6C 00000000 */ nop -/* 080970 8007FD70 AC4D0010 */ sw $t5, 0x10($v0) -/* 080974 8007FD74 8C8E01B4 */ lw $t6, 0x1b4($a0) -/* 080978 8007FD78 00000000 */ nop -/* 08097C 8007FD7C AC4E0014 */ sw $t6, 0x14($v0) -/* 080980 8007FD80 8C8F0188 */ lw $t7, 0x188($a0) -/* 080984 8007FD84 00000000 */ nop -/* 080988 8007FD88 AC4F001C */ sw $t7, 0x1c($v0) -/* 08098C 8007FD8C 8C980224 */ lw $t8, 0x224($a0) -/* 080990 8007FD90 00801025 */ move $v0, $a0 -/* 080994 8007FD94 ACD80000 */ sw $t8, ($a2) -/* 080998 8007FD98 8C990090 */ lw $t9, 0x90($a0) -/* 08099C 8007FD9C 00000000 */ nop -/* 0809A0 8007FDA0 ACD90004 */ sw $t9, 4($a2) -/* 0809A4 8007FDA4 8C8A0130 */ lw $t2, 0x130($a0) -/* 0809A8 8007FDA8 3C06800E */ lui $a2, %hi(sControllerPakFullMenuText) # $a2, 0x800e -/* 0809AC 8007FDAC ACAA0014 */ sw $t2, 0x14($a1) -/* 0809B0 8007FDB0 8C8B0130 */ lw $t3, 0x130($a0) -/* 0809B4 8007FDB4 24C609C4 */ addiu $a2, %lo(sControllerPakFullMenuText) # addiu $a2, $a2, 0x9c4 -/* 0809B8 8007FDB8 ACAB0034 */ sw $t3, 0x34($a1) -/* 0809BC 8007FDBC 8C8C0238 */ lw $t4, 0x238($a0) -/* 0809C0 8007FDC0 00000000 */ nop -/* 0809C4 8007FDC4 ACAC0074 */ sw $t4, 0x74($a1) -/* 0809C8 8007FDC8 8C8D0240 */ lw $t5, 0x240($a0) -/* 0809CC 8007FDCC 00000000 */ nop -/* 0809D0 8007FDD0 ACAD00B4 */ sw $t5, 0xb4($a1) -/* 0809D4 8007FDD4 8C8E0130 */ lw $t6, 0x130($a0) -/* 0809D8 8007FDD8 3C05800E */ lui $a1, %hi(sBadControllerPakMenuText) # $a1, 0x800e -/* 0809DC 8007FDDC AC6E0014 */ sw $t6, 0x14($v1) -/* 0809E0 8007FDE0 8C8F0130 */ lw $t7, 0x130($a0) -/* 0809E4 8007FDE4 24A509B0 */ addiu $a1, %lo(sBadControllerPakMenuText) # addiu $a1, $a1, 0x9b0 -/* 0809E8 8007FDE8 AC6F0034 */ sw $t7, 0x34($v1) -/* 0809EC 8007FDEC 8C980238 */ lw $t8, 0x238($a0) -/* 0809F0 8007FDF0 00000000 */ nop -/* 0809F4 8007FDF4 AC780074 */ sw $t8, 0x74($v1) -/* 0809F8 8007FDF8 8C99023C */ lw $t9, 0x23c($a0) -/* 0809FC 8007FDFC 00000000 */ nop -/* 080A00 8007FE00 AC7900B4 */ sw $t9, 0xb4($v1) -/* 080A04 8007FE04 8C8A0240 */ lw $t2, 0x240($a0) -/* 080A08 8007FE08 00000000 */ nop -/* 080A0C 8007FE0C AC6A00F4 */ sw $t2, 0xf4($v1) -/* 080A10 8007FE10 8C8B0114 */ lw $t3, 0x114($a0) -/* 080A14 8007FE14 3C03800E */ lui $v1, %hi(sCorruptDataMenuText) # $v1, 0x800e -/* 080A18 8007FE18 AC2B09B0 */ sw $t3, %lo(sBadControllerPakMenuText)($at) -/* 080A1C 8007FE1C 8C8C0110 */ lw $t4, 0x110($a0) -/* 080A20 8007FE20 3C01800E */ lui $at, %hi(sControllerPakFullMenuText) # $at, 0x800e -/* 080A24 8007FE24 AC2C09C4 */ sw $t4, %lo(sControllerPakFullMenuText)($at) -/* 080A28 8007FE28 8C8D010C */ lw $t5, 0x10c($a0) -/* 080A2C 8007FE2C 3C01800E */ lui $at, %hi(sNoControllerPakMenuText) # $at, 0x800e -/* 080A30 8007FE30 AC2D09D8 */ sw $t5, %lo(sNoControllerPakMenuText)($at) -/* 080A34 8007FE34 8C8E02E0 */ lw $t6, 0x2e0($a0) -/* 080A38 8007FE38 AD200010 */ sw $zero, 0x10($t1) -/* 080A3C 8007FE3C AD200014 */ sw $zero, 0x14($t1) -/* 080A40 8007FE40 246309EC */ addiu $v1, %lo(sCorruptDataMenuText) # addiu $v1, $v1, 0x9ec -/* 080A44 8007FE44 AD2E0000 */ sw $t6, ($t1) -.L8007FE48: -/* 080A48 8007FE48 8C4F02C4 */ lw $t7, 0x2c4($v0) -/* 080A4C 8007FE4C 24630004 */ addiu $v1, $v1, 4 -/* 080A50 8007FE50 ACAF0004 */ sw $t7, 4($a1) -/* 080A54 8007FE54 8C5802C4 */ lw $t8, 0x2c4($v0) -/* 080A58 8007FE58 0068082B */ sltu $at, $v1, $t0 -/* 080A5C 8007FE5C ACD80004 */ sw $t8, 4($a2) -/* 080A60 8007FE60 8C5902C4 */ lw $t9, 0x2c4($v0) -/* 080A64 8007FE64 24A50004 */ addiu $a1, $a1, 4 -/* 080A68 8007FE68 ACF90004 */ sw $t9, 4($a3) -/* 080A6C 8007FE6C 8C4A02C4 */ lw $t2, 0x2c4($v0) -/* 080A70 8007FE70 24420004 */ addiu $v0, $v0, 4 -/* 080A74 8007FE74 24C60004 */ addiu $a2, $a2, 4 -/* 080A78 8007FE78 24E70004 */ addiu $a3, $a3, 4 -/* 080A7C 8007FE7C 1420FFF2 */ bnez $at, .L8007FE48 -/* 080A80 8007FE80 AC6A0000 */ sw $t2, ($v1) -/* 080A84 8007FE84 8D2B0000 */ lw $t3, ($t1) -/* 080A88 8007FE88 00003025 */ move $a2, $zero -/* 080A8C 8007FE8C 11600007 */ beqz $t3, .L8007FEAC -/* 080A90 8007FE90 3C02800E */ lui $v0, %hi(sInsertControllerPakMenuText) # $v0, 0x800e -/* 080A94 8007FE94 3C03800E */ lui $v1, %hi(sCorruptDataMenuText) # $v1, 0x800e -/* 080A98 8007FE98 246309EC */ addiu $v1, %lo(sCorruptDataMenuText) # addiu $v1, $v1, 0x9ec -.L8007FE9C: -/* 080A9C 8007FE9C 8C6C0004 */ lw $t4, 4($v1) -/* 080AA0 8007FEA0 24C60001 */ addiu $a2, $a2, 1 -/* 080AA4 8007FEA4 1580FFFD */ bnez $t4, .L8007FE9C -/* 080AA8 8007FEA8 24630004 */ addiu $v1, $v1, 4 -.L8007FEAC: -/* 080AAC 8007FEAC 8C8D02E4 */ lw $t5, 0x2e4($a0) -/* 080AB0 8007FEB0 00067080 */ sll $t6, $a2, 2 -/* 080AB4 8007FEB4 012E7821 */ addu $t7, $t1, $t6 -/* 080AB8 8007FEB8 ADED0000 */ sw $t5, ($t7) -/* 080ABC 8007FEBC 8C98027C */ lw $t8, 0x27c($a0) -/* 080AC0 8007FEC0 24420A04 */ addiu $v0, %lo(sInsertControllerPakMenuText) # addiu $v0, $v0, 0xa04 -/* 080AC4 8007FEC4 AC580000 */ sw $t8, ($v0) -/* 080AC8 8007FEC8 8C990280 */ lw $t9, 0x280($a0) -/* 080ACC 8007FECC 3C03800E */ lui $v1, %hi(sInsertRumblePakMenuText) # $v1, 0x800e -/* 080AD0 8007FED0 AC590004 */ sw $t9, 4($v0) -/* 080AD4 8007FED4 8C8A0288 */ lw $t2, 0x288($a0) -/* 080AD8 8007FED8 24630A14 */ addiu $v1, %lo(sInsertRumblePakMenuText) # addiu $v1, $v1, 0xa14 -/* 080ADC 8007FEDC AC4A0008 */ sw $t2, 8($v0) -/* 080AE0 8007FEE0 8C8B027C */ lw $t3, 0x27c($a0) -/* 080AE4 8007FEE4 3C05800E */ lui $a1, %hi(gCautionMenuTextElements) # $a1, 0x800e -/* 080AE8 8007FEE8 AC6B0000 */ sw $t3, ($v1) -/* 080AEC 8007FEEC 8C8C0284 */ lw $t4, 0x284($a0) -/* 080AF0 8007FEF0 24A5FFD8 */ addiu $a1, %lo(gCautionMenuTextElements) # addiu $a1, $a1, -0x28 -/* 080AF4 8007FEF4 AC6C0004 */ sw $t4, 4($v1) -/* 080AF8 8007FEF8 8C8E0288 */ lw $t6, 0x288($a0) -/* 080AFC 8007FEFC 3C01800E */ lui $at, %hi(gCautionMenuTextElements+84) # $at, 0x800e -/* 080B00 8007FF00 AC6E0008 */ sw $t6, 8($v1) -/* 080B04 8007FF04 8C8D0260 */ lw $t5, 0x260($a0) -/* 080B08 8007FF08 2482000C */ addiu $v0, $a0, 0xc -/* 080B0C 8007FF0C ACAD0014 */ sw $t5, 0x14($a1) -/* 080B10 8007FF10 8C8F0260 */ lw $t7, 0x260($a0) -/* 080B14 8007FF14 3C03800E */ lui $v1, %hi(gCautionMenuTextElements+96) # $v1, 0x800e -/* 080B18 8007FF18 ACAF0034 */ sw $t7, 0x34($a1) -/* 080B1C 8007FF1C 8C980298 */ lw $t8, 0x298($a0) -/* 080B20 8007FF20 24630038 */ addiu $v1, %lo(gCautionMenuTextElements+96) # addiu $v1, $v1, 0x38 -/* 080B24 8007FF24 AC38002C */ sw $t8, %lo(gCautionMenuTextElements+84)($at) -/* 080B28 8007FF28 8C99029C */ lw $t9, 0x29c($a0) -/* 080B2C 8007FF2C 3C01800E */ lui $at, %hi(gCautionMenuTextElements+116) # $at, 0x800e -/* 080B30 8007FF30 AC39004C */ sw $t9, %lo(gCautionMenuTextElements+116)($at) -/* 080B34 8007FF34 8C8A02A0 */ lw $t2, 0x2a0($a0) -/* 080B38 8007FF38 3C04800E */ lui $a0, %hi(gCautionMenuTextElements+352) # $a0, 0x800e -/* 080B3C 8007FF3C 3C01800E */ lui $at, %hi(gCautionMenuTextElements+148) # $at, 0x800e -/* 080B40 8007FF40 24840138 */ addiu $a0, %lo(gCautionMenuTextElements+352) # addiu $a0, $a0, 0x138 -/* 080B44 8007FF44 AC2A006C */ sw $t2, %lo(gCautionMenuTextElements+148)($at) -.L8007FF48: -/* 080B48 8007FF48 8C4B0298 */ lw $t3, 0x298($v0) -/* 080B4C 8007FF4C 24630080 */ addiu $v1, $v1, 0x80 -/* 080B50 8007FF50 AC6BFFD4 */ sw $t3, -0x2c($v1) -/* 080B54 8007FF54 8C4C029C */ lw $t4, 0x29c($v0) -/* 080B58 8007FF58 24420010 */ addiu $v0, $v0, 0x10 -/* 080B5C 8007FF5C AC6CFFF4 */ sw $t4, -0xc($v1) -/* 080B60 8007FF60 8C4E0290 */ lw $t6, 0x290($v0) -/* 080B64 8007FF64 00000000 */ nop -/* 080B68 8007FF68 AC6E0014 */ sw $t6, 0x14($v1) -/* 080B6C 8007FF6C 8C4D0294 */ lw $t5, 0x294($v0) -/* 080B70 8007FF70 1464FFF5 */ bne $v1, $a0, .L8007FF48 -/* 080B74 8007FF74 AC6D0034 */ sw $t5, 0x34($v1) -/* 080B78 8007FF78 8FBF0014 */ lw $ra, 0x14($sp) -.L8007FF7C: -/* 080B7C 8007FF7C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 080B80 8007FF80 03E00008 */ jr $ra -/* 080B84 8007FF84 00000000 */ nop - diff --git a/src/game.c b/src/game.c index 92dc7ecd..e2fe3bb8 100644 --- a/src/game.c +++ b/src/game.c @@ -308,7 +308,7 @@ s32 get_map_available_vehicles(s32 mapId) { return (temp >> 4) & 0xF; } } - return VEHICLE_HOVERCRAFT; + return (1 << VEHICLE_CAR); } /** diff --git a/src/menu.c b/src/menu.c index 3152bad0..bb5a39b1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -246,7 +246,7 @@ char **gPostRaceMessage; s32 gBootMenuPhase; s32 gPostRaceLineCount; s8 gPostraceFinishState; -unk80080BC8 (*gMenuGeometry)[2]; +unk80080BC8 *gMenuGeometry; u16 (*gCheatsAssetData)[30]; // Cheat table. s32 gNameEntryStickHeld; s32 gNumberOfCheats; @@ -1424,6 +1424,8 @@ char *gCreditsBestTimesArray[20] = { /*** Future Fun Land ***/ "2:00:38", "2:05:68", "1:52:96", "1:55:00" }; +// clang-format on + char *gCreditsLastMessageArray[5] = { "THE END?", "TO BE CONTINUED ...", // Appears after beating the first wizpig race. "THE END", // Appears after beating the second wizpig race. @@ -1477,7 +1479,7 @@ Gfx dMenuHudSettings[] = { gsSPEndDisplayList(), }; -UNUSED Gfx dMenuHudDrawModes[][2] = { +Gfx dMenuHudDrawModes[][2] = { { gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), @@ -1548,11 +1550,12 @@ char *gConPakAdvSavePrefix = " (ADV."; /*******************************/ -#ifdef NON_EQUIVALENT - -// Should be functionally equivalent void load_menu_text(s32 language) { - s32 start, langIndex, i, j; + char **menuText; + char **temp; + s32 langIndex; + s32 size; + char **fake; if (gMenuTextLangTable == NULL) { gMenuTextLangTable = load_asset_section_from_rom(ASSET_MENU_TEXT_TABLE); @@ -1573,141 +1576,148 @@ void load_menu_text(s32 language) { break; } - start = gMenuTextLangTable[langIndex]; - if (gMenuText != NULL) { - load_asset_to_address(ASSET_MENU_TEXT, gMenuText, start, gMenuTextLangTable[langIndex + 1] - start); - // Fill up the lookup table with proper RAM addresses - for (i = 0; i < gMenuTextLangTable[0]; i++) { - if ((s32) gMenuText[i] == -1) { - gMenuText[i] = NULL; - } else { - gMenuText[i] = &((u8 *) gMenuText)[(s32) gMenuText[i]]; - } - } - gAudioOutputStrings[0] = gMenuText[ASSET_MENU_TEXT_STEREO]; // "STEREO" - gAudioOutputStrings[1] = gMenuText[ASSET_MENU_TEXT_MONO]; // "MONO" - gAudioOutputStrings[2] = gMenuText[ASSET_MENU_TEXT_HEADPHONES]; // "HEADPHONES" - gAudioMenuStrings[1].unkC = gMenuText[ASSET_MENU_TEXT_SFXVOLUME]; // "SFX VOLUME" - gAudioMenuStrings[2].unkC = gMenuText[ASSET_MENU_TEXT_MUSICVOLUME]; // "MUSIC VOLUME" - gAudioMenuStrings[3].unkC = gMenuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" - gAudioMenuStrings[4].unkC = gMenuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" - gAudioMenuStrings[5].unkC = gMenuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" - gMusicTestString = gMenuText[ASSET_MENU_TEXT_MUSICTEST]; // "MUSIC TEST 00" - gMagicCodeMenuStrings[0] = gMenuText[ASSET_MENU_TEXT_ENTERCODE]; // "ENTER CODE" - gMagicCodeMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_CLEARALLCODES]; // "CLEAR ALL CODES" - gMagicCodeMenuStrings[2] = gMenuText[ASSET_MENU_TEXT_CODELIST]; // "CODE LIST" - gMagicCodeMenuStrings[3] = gMenuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" - gRaceResultsMenuElements[1].t.asciiText = gMenuText[ASSET_MENU_TEXT_LAPTIMES]; // "LAP TIMES" - gRaceResultsMenuElements[2].t.asciiText = gMenuText[ASSET_MENU_TEXT_OVERALLTIME]; // "OVERALL TIME" - gRaceOrderMenuElements[8].t.asciiText = gMenuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" - gRaceOrderMenuElements[9].t.asciiText = gMenuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" - gRecordTimesMenuElements[0].t.asciiText = gMenuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" - gRecordTimesMenuElements[1].t.asciiText = gMenuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" - gRecordTimesMenuElements[2].t.asciiText = gMenuText[ASSET_MENU_TEXT_BESTTIME]; // "BEST TIME" - gRecordTimesMenuElements[5].t.asciiText = gMenuText[ASSET_MENU_TEXT_BESTLAP]; // "BEST LAP" - gOptionMenuStrings[0] = gMenuText[ASSET_MENU_TEXT_LANGUAGE]; // "ENGLISH" - if (sEepromSettings & 0x2000000) { - gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESON]; // "SUBTITLES ON" + size = gMenuTextLangTable[langIndex + 1]; + langIndex = gMenuTextLangTable[langIndex]; + size -= langIndex; + temp = gMenuText; + + if (temp == NULL) { + return; + } + + load_asset_to_address(ASSET_MENU_TEXT, temp, langIndex, size); + + // TODO: Find a way to clean up the ugly hacks. + // Fill up the lookup table with proper RAM addresses + for (langIndex = 0; langIndex < gMenuTextLangTable[0]; langIndex++) { + menuText = gMenuText[langIndex]; + if ((((s32) menuText) & 0xFFFFFFFF) == -1) { + gMenuText[langIndex] = NULL; } else { - gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; // "SUBTITLES OFF" - } - gOptionMenuStrings[2] = gMenuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" - gOptionMenuStrings[3] = gMenuText[ASSET_MENU_TEXT_SAVEOPTIONS]; // "SAVE OPTIONS" - gOptionMenuStrings[4] = gMenuText[ASSET_MENU_TEXT_MAGICCODES]; // "MAGIC CODES" - gOptionMenuStrings[5] = gMenuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" - gFilenames[0] = gMenuText[ASSET_MENU_TEXT_GAMEA]; // "GAME A" - gFilenames[1] = gMenuText[ASSET_MENU_TEXT_GAMEB]; // "GAME B" - gFilenames[2] = gMenuText[ASSET_MENU_TEXT_GAMEC]; // "GAME C" - gContPakNotPresentStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakNotPresentStrings[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKNOTPRESENT]; // "IS NOT PRESENT." - gContPakNotPresentStrings[3] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" - gContPakCorruptDataRepairStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakCorruptDataRepairStrings[1] = - gMenuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_0]; // "CONTAINS CORRUPT DATA." - gContPakCorruptDataRepairStrings[3] = gMenuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_1]; // "ATTEMPT TO REPAIR" - gContPakCorruptDataRepairStrings[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" - gContPakDamagedStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakDamagedStrings[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_0]; // "IRREPARABLY DAMAGED." - gContPakDamagedStrings[3] = gMenuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_1]; // "REFORMAT PAK" - gContPakDamagedStrings[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" - gContPakFullStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakFullStrings[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKISFULL]; // "FULL." - gContPakFullStrings[3] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" - gContPakDiffContStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakDiffContStrings[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_0]; // "DIFFERENT CONTROLLER" - gContPakDiffContStrings[2] = gMenuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_1]; // "PAK IS INSERTED." - gContPakDiffContStrings[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" - gContPakNoRoomForGhostsStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakNoRoomForGhostsStrings[1] = gMenuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_0]; // "CANNOT STORE ANY" - gContPakNoRoomForGhostsStrings[2] = gMenuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_1]; // "MORE GHOSTS." - gContPakNoRoomForGhostsStrings[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" - gContPakCorruptDataStrings[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" - gContPakCorruptDataStrings[1] = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // "CORRUPT DATA." - gContPakCorruptDataStrings[3] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; // "TRY AGAIN" - gContPakCorruptDataStrings[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" - gContPakRumbleDetectedStrings[0] = gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_0]; // "Rumble Pak Detected" - gContPakRumbleDetectedStrings[1] = - gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_1]; // "Insert any Controller Paks" - gContPakRumbleDetectedStrings[2] = gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_2]; // "you wish to use now!" - gContPakRumbleDetectedStrings[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" - gContPakSwitchToRumbleStrings[0] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_0]; // "If you wish to use any" - gContPakSwitchToRumbleStrings[1] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_1]; // "Rumble Paks then please" - gContPakSwitchToRumbleStrings[2] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_2]; // "insert them now." - gContPakSwitchToRumbleStrings[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" - gContPakNeed2ndAdvStrings[0] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_0]; // "SORRY, BUT YOU" - gContPakNeed2ndAdvStrings[1] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_1]; // "CAN'T LOAD GAMES" - gContPakNeed2ndAdvStrings[2] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_2]; // "FOR THE SECOND" - gContPakNeed2ndAdvStrings[3] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_3]; // "ADVENTURE UNTIL" - gContPakNeed2ndAdvStrings[4] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_4]; // "YOU HAVE COMPLETED" - gContPakNeed2ndAdvStrings[5] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_5]; // "THE FIRST." - gContPakNeed2ndAdvStrings[7] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" - gTitleMenuStrings[0] = gMenuText[ASSET_MENU_TEXT_START]; // "START" - gTitleMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_OPTIONS]; // "OPTIONS" - gGameSelectTextElemsNoAdv2[0].t.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" - gGameSelectTextElemsNoAdv2[1].t.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" - gGameSelectTextElemsNoAdv2[3].t.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" - gGameSelectTextElemsNoAdv2[5].t.asciiText = gMenuText[ASSET_MENU_TEXT_TRACKS]; // "TRACKS" - gGameSelectTextElemsWithAdv2[0].t.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" - gGameSelectTextElemsWithAdv2[1].t.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" - gGameSelectTextElemsWithAdv2[3].t.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" - gGameSelectTextElemsWithAdv2[5].t.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURETWO]; // "ADVENTURE TWO" - gGameSelectTextElemsWithAdv2[7].t.asciiText = gMenuText[ASSET_MENU_TEXT_TRACKS]; // "TRACKS" - sBadControllerPakMenuText[0] = gMenuText[ASSET_MENU_TEXT_BADCONTPAK]; // "BAD CONTROLLER PAK" - sControllerPakFullMenuText[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKFULL]; // "CONTROLLER PAK FULL" - sNoControllerPakMenuText[0] = gMenuText[ASSET_MENU_TEXT_NOCONTPAK]; // 'NO CONTROLLER PAK" - sCorruptDataMenuText[4] = NULL; - sCorruptDataMenuText[5] = NULL; - sCorruptDataMenuText[0] = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // "CORRUPT DATA." - // Three messages - //"If you wish to change" / "Controller Pak or Rumble Pak," / "please do so now." - for (i = 0; i < 2; i++) { - sBadControllerPakMenuText[i + 1] = gMenuText[177 + i]; - sControllerPakFullMenuText[i + 1] = gMenuText[177 + i]; - sNoControllerPakMenuText[i + 1] = gMenuText[177 + i]; - sCorruptDataMenuText[i + 1] = gMenuText[177 + i]; - } - j = 0; - while (sCorruptDataMenuText[j] != NULL) { - j++; - } - sCorruptDataMenuText[j] = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_1]; // "TRY AGAIN!" - sInsertControllerPakMenuText[0] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" - sInsertControllerPakMenuText[1] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_4]; // "the Controller Pak" - sInsertControllerPakMenuText[2] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" - sInsertRumblePakMenuText[0] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" - sInsertRumblePakMenuText[1] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_5]; // "the Rumble Pak" - sInsertRumblePakMenuText[2] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" - gCautionMenuTextElements[0].t.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" - gCautionMenuTextElements[1].t.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" - for (i = 2; i < 13; i++) { - // Caution message lines starting from gMenuText[166] - gCautionMenuTextElements[i].t.asciiText = gMenuText[166 + (i - 2)]; + gMenuText[langIndex] = &((char *) gMenuText)[(s32) (fake = menuText)]; } } + + menuText = gMenuText; + gAudioOutputStrings[0] = menuText[ASSET_MENU_TEXT_STEREO]; // "STEREO" + gAudioOutputStrings[1] = menuText[ASSET_MENU_TEXT_MONO]; // "MONO" + gAudioOutputStrings[2] = menuText[ASSET_MENU_TEXT_HEADPHONES]; // "HEADPHONES" + gAudioMenuStrings[1].unkC = menuText[ASSET_MENU_TEXT_SFXVOLUME]; // "SFX VOLUME" + gAudioMenuStrings[2].unkC = menuText[ASSET_MENU_TEXT_MUSICVOLUME]; // "MUSIC VOLUME" + gAudioMenuStrings[3].unkC = menuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" + gAudioMenuStrings[4].unkC = menuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" + gAudioMenuStrings[5].unkC = menuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" + gMusicTestString = menuText[ASSET_MENU_TEXT_MUSICTEST]; // "MUSIC TEST 00" + gMagicCodeMenuStrings[0] = menuText[ASSET_MENU_TEXT_ENTERCODE]; // "ENTER CODE" + gMagicCodeMenuStrings[1] = menuText[ASSET_MENU_TEXT_CLEARALLCODES]; // "CLEAR ALL CODES" + gMagicCodeMenuStrings[2] = menuText[ASSET_MENU_TEXT_CODELIST]; // "CODE LIST" + gMagicCodeMenuStrings[3] = menuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" + gRaceResultsMenuElements[1].t.asciiText = menuText[ASSET_MENU_TEXT_LAPTIMES]; // "LAP TIMES" + gRaceResultsMenuElements[2].t.asciiText = menuText[ASSET_MENU_TEXT_OVERALLTIME]; // "OVERALL TIME" + gRaceOrderMenuElements[8].t.asciiText = menuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" + gRaceOrderMenuElements[9].t.asciiText = menuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" + gRecordTimesMenuElements[0].t.asciiText = menuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" + gRecordTimesMenuElements[1].t.asciiText = menuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" + gRecordTimesMenuElements[2].t.asciiText = menuText[ASSET_MENU_TEXT_BESTTIME]; // "BEST TIME" + gRecordTimesMenuElements[5].t.asciiText = menuText[ASSET_MENU_TEXT_BESTLAP]; // "BEST LAP" + gOptionMenuStrings[0] = menuText[ASSET_MENU_TEXT_LANGUAGE]; // "ENGLISH" + if (sEepromSettings & 0x2000000) { + gOptionMenuStrings[1] = menuText[ASSET_MENU_TEXT_SUBTITLESON]; // "SUBTITLES ON" + } else { + gOptionMenuStrings[1] = menuText[ASSET_MENU_TEXT_SUBTITLESOFF]; // "SUBTITLES OFF" + } + gOptionMenuStrings[2] = menuText[ASSET_MENU_TEXT_AUDIOOPTIONS]; // "AUDIO OPTIONS" + gOptionMenuStrings[3] = menuText[ASSET_MENU_TEXT_SAVEOPTIONS]; // "SAVE OPTIONS" + gOptionMenuStrings[4] = menuText[ASSET_MENU_TEXT_MAGICCODES]; // "MAGIC CODES" + gOptionMenuStrings[5] = menuText[ASSET_MENU_TEXT_RETURN]; // "RETURN" + gFilenames[0] = menuText[ASSET_MENU_TEXT_GAMEA]; // "GAME A" + gFilenames[1] = menuText[ASSET_MENU_TEXT_GAMEB]; // "GAME B" + gFilenames[2] = menuText[ASSET_MENU_TEXT_GAMEC]; // "GAME C" + gContPakNotPresentStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakNotPresentStrings[1] = menuText[ASSET_MENU_TEXT_CONTPAKNOTPRESENT]; // "IS NOT PRESENT." + gContPakNotPresentStrings[3] = menuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + gContPakCorruptDataRepairStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakCorruptDataRepairStrings[1] = menuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_0]; // "CONTAINS CORRUPT DATA." + gContPakCorruptDataRepairStrings[3] = menuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_1]; // "ATTEMPT TO REPAIR" + gContPakCorruptDataRepairStrings[4] = menuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + gContPakDamagedStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakDamagedStrings[1] = menuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_0]; // "IRREPARABLY DAMAGED." + gContPakDamagedStrings[3] = menuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_1]; // "REFORMAT PAK" + gContPakDamagedStrings[4] = menuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + gContPakFullStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakFullStrings[1] = menuText[ASSET_MENU_TEXT_CONTPAKISFULL]; // "FULL." + gContPakFullStrings[3] = menuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + gContPakDiffContStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakDiffContStrings[1] = menuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_0]; // "DIFFERENT CONTROLLER" + gContPakDiffContStrings[2] = menuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_1]; // "PAK IS INSERTED." + gContPakDiffContStrings[4] = menuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + gContPakNoRoomForGhostsStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakNoRoomForGhostsStrings[1] = menuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_0]; // "CANNOT STORE ANY" + gContPakNoRoomForGhostsStrings[2] = menuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_1]; // "MORE GHOSTS." + gContPakNoRoomForGhostsStrings[4] = menuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + gContPakCorruptDataStrings[0] = menuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + gContPakCorruptDataStrings[1] = menuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // "CORRUPT DATA." + gContPakCorruptDataStrings[3] = menuText[ASSET_MENU_TEXT_TRYAGAIN]; // "TRY AGAIN" + gContPakCorruptDataStrings[4] = menuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + gContPakRumbleDetectedStrings[0] = menuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_0]; // "Rumble Pak Detected" + gContPakRumbleDetectedStrings[1] = menuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_1]; // "Insert any Controller Paks" + gContPakRumbleDetectedStrings[2] = menuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_2]; // "you wish to use now!" + gContPakRumbleDetectedStrings[4] = menuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + gContPakSwitchToRumbleStrings[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_0]; // "If you wish to use any" + gContPakSwitchToRumbleStrings[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_1]; // "Rumble Paks then please" + gContPakSwitchToRumbleStrings[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_2]; // "insert them now." + gContPakSwitchToRumbleStrings[4] = menuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + gContPakNeed2ndAdvStrings[0] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_0]; // "SORRY, BUT YOU" + gContPakNeed2ndAdvStrings[1] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_1]; // "CAN'T LOAD GAMES" + gContPakNeed2ndAdvStrings[2] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_2]; // "FOR THE SECOND" + gContPakNeed2ndAdvStrings[3] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_3]; // "ADVENTURE UNTIL" + gContPakNeed2ndAdvStrings[4] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_4]; // "YOU HAVE COMPLETED" + gContPakNeed2ndAdvStrings[5] = menuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_5]; // "THE FIRST." + gContPakNeed2ndAdvStrings[7] = menuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + gTitleMenuStrings[0] = menuText[ASSET_MENU_TEXT_START]; // "START" + gTitleMenuStrings[1] = menuText[ASSET_MENU_TEXT_OPTIONS]; // "OPTIONS" + gGameSelectTextElemsNoAdv2[0].t.asciiText = menuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsNoAdv2[1].t.asciiText = menuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsNoAdv2[3].t.asciiText = menuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" + gGameSelectTextElemsNoAdv2[5].t.asciiText = menuText[ASSET_MENU_TEXT_TRACKS]; // "TRACKS" + gGameSelectTextElemsWithAdv2[0].t.asciiText = menuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsWithAdv2[1].t.asciiText = menuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsWithAdv2[3].t.asciiText = menuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" + gGameSelectTextElemsWithAdv2[5].t.asciiText = menuText[ASSET_MENU_TEXT_ADVENTURETWO]; // "ADVENTURE TWO" + gGameSelectTextElemsWithAdv2[7].t.asciiText = menuText[ASSET_MENU_TEXT_TRACKS]; // "TRACKS" + sBadControllerPakMenuText[0] = menuText[ASSET_MENU_TEXT_BADCONTPAK]; // "BAD CONTROLLER PAK" + sControllerPakFullMenuText[0] = menuText[ASSET_MENU_TEXT_CONTPAKFULL]; // "CONTROLLER PAK FULL" + sNoControllerPakMenuText[0] = menuText[ASSET_MENU_TEXT_NOCONTPAK]; // 'NO CONTROLLER PAK" + sCorruptDataMenuText[0] = menuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // "CORRUPT DATA." + sCorruptDataMenuText[4] = NULL; + sCorruptDataMenuText[5] = NULL; + + // Three messages + //"If you wish to change" / "Controller Pak or Rumble Pak," / "please do so now." + for (langIndex = 0; langIndex <= 2; langIndex++) { + sBadControllerPakMenuText[langIndex + 1] = menuText[ASSET_MENU_TEXT_CANNOTSAVEGHOSTDATA_0 + langIndex]; + sControllerPakFullMenuText[langIndex + 1] = menuText[ASSET_MENU_TEXT_CANNOTSAVEGHOSTDATA_0 + langIndex]; + sNoControllerPakMenuText[langIndex + 1] = menuText[ASSET_MENU_TEXT_CANNOTSAVEGHOSTDATA_0 + langIndex]; + sCorruptDataMenuText[langIndex + 1] = menuText[ASSET_MENU_TEXT_CANNOTSAVEGHOSTDATA_0 + langIndex]; + } + + for (langIndex = 0; sCorruptDataMenuText[langIndex] != NULL; langIndex++) {} + + sCorruptDataMenuText[langIndex] = menuText[ASSET_MENU_TEXT_CORRUPTDATA_1]; // "TRY AGAIN!" + sInsertControllerPakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" + sInsertControllerPakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_4]; // "the Controller Pak" + sInsertControllerPakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" + sInsertRumblePakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" + sInsertRumblePakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_5]; // "the Rumble Pak" + sInsertRumblePakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" + gCautionMenuTextElements[0].t.asciiText = menuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" + gCautionMenuTextElements[1].t.asciiText = menuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" + + for (langIndex = 0; langIndex <= 10; langIndex++) { + // Caution message lines starting from gMenuText[166] + gCautionMenuTextElements[langIndex + 2].t.element = menuText[ASSET_MENU_TEXT_CAUTIONMESSAGE_0 + langIndex]; + } } -#else -GLOBAL_ASM("asm/non_matchings/menu/load_menu_text.s") -#endif /** * Free the geometry used by the 3D menu buttons. @@ -1748,9 +1758,9 @@ void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s s32 texEnabled; //((unk80080BC8*)((u8*)gMenuGeometry[gWoodPanelCount] + (gMenuTrisFlip * 4)))->texture = tex; - ((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount << 5) + (gMenuTrisFlip * 4)))->texture = tex; + //((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount << 5) + (gMenuTrisFlip * 4)))->texture = tex; //(&(*gMenuGeometry)[gWoodPanelCount] + (gMenuTrisFlip * 4))->texture = tex; - // gMenuGeometry[gWoodPanelCount][gMenuTrisFlip].texture = tex; + //gMenuGeometry->texture[gWoodPanelCount] = tex; if (tex != NULL) { uVals[0] = 0; vVals[0] = 0; @@ -1793,15 +1803,15 @@ void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s } } if (dList != NULL) { - ((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount << 5) + (gMenuTrisFlip * 4)))->unk18 = 1; + //((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount << 5) + (gMenuTrisFlip * 4)))->unk18 = 1; gSPDisplayList((*dList)++, &dMenuHudSettings); if (tex != NULL) { texEnabled = TRUE; - gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudSettings[8]), 2); + gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudDrawModes[1]), 2); gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(tex->cmd), tex->numberOfCommands); } else { texEnabled = FALSE; - gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudSettings[6]), 2); + gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudDrawModes[0]), 2); } gDPPipeSync((*dList)++); /* @@ -1828,7 +1838,7 @@ void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s texEnabled); reset_render_settings(dList); } else { - ((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount * 32) + (gMenuTrisFlip * 4)))->unk18 = 0; + //((unk80080BC8 *) ((u8 *) gMenuGeometry + (gWoodPanelCount * 32) + (gMenuTrisFlip * 4)))->unk18 = 0; } gWoodPanelCount++; } @@ -1836,8 +1846,6 @@ void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s GLOBAL_ASM("asm/non_matchings/menu/func_80080580.s") #endif -// https://decomp.me/scratch/lS3f5 -#ifdef NON_EQUIVALENT void func_80080BC8(Gfx **dList) { s16 temp_a1; s32 i; @@ -1850,13 +1858,12 @@ void func_80080BC8(Gfx **dList) { lastTex = NULL; for (i = 0; i < gWoodPanelCount; i++) { - //((unk80080BC8*)((u8*)gMenuGeometry + (i << 5) + (gMenuTrisFlip * 4)))->texture - if (!gMenuGeometry[i][gMenuTrisFlip].unk18) { - tex = gMenuGeometry[i][gMenuTrisFlip].texture; + if (!gMenuGeometry[i].unk18[gMenuTrisFlip]) { + tex = gMenuGeometry[i].texture[gMenuTrisFlip]; if (tex != NULL) { if (var_t0 != 1) { var_t0 = 1; - gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudSettings[8]), 2); + gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudDrawModes[1]), 2); } if (lastTex != tex) { gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(tex->cmd), tex->numberOfCommands); @@ -1864,20 +1871,17 @@ void func_80080BC8(Gfx **dList) { } } else if (var_t0 != 0) { var_t0 = 0; - gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudSettings[6]), 2); + gDkrDmaDisplayList((*dList)++, OS_K0_TO_PHYSICAL(&dMenuHudDrawModes[0]), 2); } gDPPipeSync((*dList)++); - gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL((&gMenuGeometry[i][gMenuTrisFlip])->vertices), 20, 0); - gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL((&gMenuGeometry[i][gMenuTrisFlip])->triangles), 10, 0); + gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(gMenuGeometry[i].vertices[gMenuTrisFlip]), 20, 0); + gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(gMenuGeometry[i].triangles[gMenuTrisFlip]), 10, var_t0); } } gWoodPanelCount = 0; gMenuTrisFlip = 1 - gMenuTrisFlip; reset_render_settings(dList); } -#else -GLOBAL_ASM("asm/non_matchings/menu/func_80080BC8.s") -#endif /** * Resets the menu geometry after drawing, then flips the geometry index for the next frame. @@ -1887,8 +1891,99 @@ void menu_geometry_end(void) { gMenuTrisFlip = 1 - gMenuTrisFlip; } -// https://decomp.me/scratch/IZ1Gq -GLOBAL_ASM("asm/non_matchings/menu/func_80080E90.s") +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) { + s32 temp_ra; + s32 temp_t3; + s32 temp_t4; + s32 temp_t5; + s32 recUly; + s32 recUlx; + s32 uly; + s32 recLrx; + s32 borderLineCount; + s32 i; + s32 recLry; + s32 ulx; + s32 y0Orig; + s32 primColour; + s32 j; + s32 index; + + gSPDisplayList((*dlist)++, &dMenuHudSettings); + gDkrDmaDisplayList((*dlist)++, OS_K0_TO_PHYSICAL(&dMenuHudDrawModes[2]), 2); + + // Must be a while loop to match. + i = 0; + while (i < 4) { + index = i << 2; + temp_t3 = D_800E1DC8[index + 0]; + temp_t4 = D_800E1DC8[index + 1]; + temp_t5 = D_800E1DC8[index + 2]; + temp_ra = D_800E1DC8[index + 3]; + ulx = startX; + y0Orig = startY; + uly = y0Orig; + + switch (i) { + case 0: + primColour = colour0; + recLrx = startX + width; + recLry = y0Orig + 1; + borderLineCount = borderHeight; + break; + case 1: + ulx = (startX + (u32) width) - 1; + primColour = colour1; + uly = y0Orig + 1; + recLrx = startX + width; + recLry = (y0Orig + height) - 1; + borderLineCount = borderWidth; + break; + case 2: + primColour = colour2; + uly = (y0Orig + height) - 1; + recLrx = startX + width; + recLry = y0Orig + height; + borderLineCount = borderHeight; + break; + default: + primColour = colour3; + uly = y0Orig + 1; + recLrx = startX + 1; + recLry = (y0Orig + height) - 1; + borderLineCount = borderWidth; + break; + } + + gDPSetPrimColor((*dlist)++, 0, 0, primColour >> 24, primColour >> 16, primColour >> 8, primColour); + + for (j = 0; j < borderLineCount; j++) { + if (recLrx >= 0 && recLry >= 0) { + if (ulx < 0) { + recUlx = 0; + } else { + recUlx = ulx; + } + if (uly < 0) { + recUly = 0; + } else { + recUly = uly; + } + gDPFillRectangle((*dlist)++, recUlx, recUly, recLrx, recLry); + } + ulx += temp_t3; + uly += temp_t4; + recLrx += temp_t5; + recLry += temp_ra; + } + i++; + } + + gDPPipeSync((*dlist)++); + gDPSetPrimColor((*dlist)++, 0, 0, 255, 255, 255, 255); + reset_render_settings(dlist); +} void init_save_data(void) { s32 numLevels; @@ -1905,7 +2000,7 @@ void init_save_data(void) { saveFileSize += numWorlds * sizeof(s16); // balloonsPtrSize; saveFileSize += sizeof(Settings); saveFileSize = (saveFileSize + 3) & ~3; // align to a 4-byte boundary - + *gSavefileData = mempool_alloc_safe(saveFileSize * ARRAY_COUNT(gSavefileData), COLOUR_TAG_WHITE); for (index = 0, offset = 0; index < ARRAY_COUNT(gSavefileData); index++) { @@ -1914,15 +2009,17 @@ void init_save_data(void) { gSavefileData[index]->balloonsPtr = (s16 *) ((u8 *) gSavefileData[index]->courseFlagsPtr + courseFlagsPtrSize); offset += saveFileSize; } - - gCheatsAssetData = (u16 (*)[30]) get_misc_asset(ASSET_MISC_MAGIC_CODES); + + gCheatsAssetData = (u16(*)[30]) get_misc_asset(ASSET_MISC_MAGIC_CODES); gNumberOfCheats = (*gCheatsAssetData)[0]; gMenuText = mempool_alloc_safe(1024 * sizeof(char *), COLOUR_TAG_WHITE); load_menu_text(LANGUAGE_ENGLISH); - + + // clang-format off for (i = 0; i < ARRAY_COUNT(gMenuAssets); i++) { \ gMenuAssets[i] = NULL; } + // clang-format on } /** @@ -8430,7 +8527,7 @@ void trackmenu_setup_render(UNUSED s32 updateRate) { void func_80092188(s32 updateRate) { s32 yOffset2; s32 origVehicle; - s32 avaliableVehicles; + s32 availableVehicles; s32 xOffset; s32 yOffset; s32 i; @@ -8493,7 +8590,7 @@ void func_80092188(s32 updateRate) { } camEnableUserView(0, TRUE); if (menuDelay == 0) { - avaliableVehicles = get_map_available_vehicles(gTrackIdForPreview); + availableVehicles = get_map_available_vehicles(gTrackIdForPreview); menuBackedOut = FALSE; menuSelected = FALSE; menuChanged = FALSE; @@ -8545,13 +8642,13 @@ void func_80092188(s32 updateRate) { if (gMenuStickY[i] > 0) { do { gPlayerSelectVehicle[i]--; - } while (((1 << gPlayerSelectVehicle[i]) & avaliableVehicles) == 0 && + } while (((1 << gPlayerSelectVehicle[i]) & availableVehicles) == 0 && gPlayerSelectVehicle[i] >= 0); } if (gMenuStickY[i] < 0) { do { gPlayerSelectVehicle[i]++; - } while (((1 << gPlayerSelectVehicle[i]) & avaliableVehicles) == 0 && + } while (((1 << gPlayerSelectVehicle[i]) & availableVehicles) == 0 && gPlayerSelectVehicle[i] < 3); } if (origVehicle != gPlayerSelectVehicle[i]) { diff --git a/src/menu.h b/src/menu.h index 3da94793..ba0a241d 100644 --- a/src/menu.h +++ b/src/menu.h @@ -286,14 +286,10 @@ typedef struct MenuAsset { } MenuAsset; typedef struct unk80080BC8 { - Vertex *vertices; - s32 *unk4; - Triangle *triangles; - s32 *unkC; - TextureHeader *texture; - s32 *unk14; - s32 unk18; - s32 unk1C; + Vertex *vertices[2]; + Triangle *triangles[2]; + TextureHeader *texture[2]; + s32 unk18[2]; } unk80080BC8; typedef struct unk80126460 { @@ -694,7 +690,8 @@ void fileselect_input_copy(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_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); void func_80098774(s32); void func_80094D28(UNUSED s32 updateRate); diff --git a/src/racer.c b/src/racer.c index ab46c58b..6ee1c87e 100644 --- a/src/racer.c +++ b/src/racer.c @@ -3281,8 +3281,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (temp > 75) { temp = 75; } - if (temp < -75) { - } + if (temp < -75) {} } else { racer->drift_direction = 0; } @@ -3344,7 +3343,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } // Set final turn velocity by taking the steering velocity and multiplying it by the handling stat of the character. temp = ((temp * updateRate) >> 1); - temp_2 = temp * gCurrentRacerHandlingStat; + temp_2 = temp * gCurrentRacerHandlingStat; racer->steerVisualRotation -= temp_2 & 0xFFFF; // Now steer the car. handle_car_steering(racer); @@ -3436,7 +3435,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } // Multiply current velocity by the surface grip levels. racer->lateral_velocity *= surfaceTraction; - velocityDiff = coss_f(racer->x_rotation_vel); + velocityDiff = coss_f(racer->x_rotation_vel); if (velocityDiff < 0.0f) { velocityDiff = -velocityDiff; } @@ -3513,14 +3512,15 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (racer->velocity < 0.0f) { traction = -traction; } - + if (traction > 12.0f) { traction = 12.0f; } // Convert the velocity value to an int temp = (s32) traction; // Calculate the velocity multiplier based on current velocity - traction = ((gCurrentRacerMiscAssetPtr[temp + 1] * (traction - temp)) + (gCurrentRacerMiscAssetPtr[temp] * (1.0 - (traction - temp)))); + traction = ((gCurrentRacerMiscAssetPtr[temp + 1] * (traction - temp)) + + (gCurrentRacerMiscAssetPtr[temp] * (1.0 - (traction - temp)))); traction *= 1.7; traction *= topSpeed; // Force the throttle wide open if boosting @@ -7061,8 +7061,8 @@ void func_8005B818(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (racer->vehicleID == VEHICLE_HOVERCRAFT) { i = (racer->unk1BE & 0xFFFF) - (racer->unk1C2 & 0xFFFF); - if (i >= 0x8001) { - i += 0xFFFF0001; + if (i > 0x8000) { + i -= 0xFFFF; } if (i < -0x8000) { diff --git a/src/save_data.c b/src/save_data.c index 96f03122..978666f8 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -482,17 +482,17 @@ void func_80073588(Settings *settings, u8 *saveData, u8 arg2) { if (get_map_race_type(i) == RACETYPE_DEFAULT) { availableVehicles = get_map_available_vehicles(i); // Car Available - if (availableVehicles & 1) { + if (availableVehicles & (1 << VEHICLE_CAR)) { settings->flapTimesPtr[0][i] = func_80072C54(16); settings->flapInitialsPtr[0][i] = func_80072C54(16); } // Hovercraft Available - if (availableVehicles & 2) { + if (availableVehicles & (1 << VEHICLE_HOVERCRAFT)) { settings->flapTimesPtr[1][i] = func_80072C54(16); settings->flapInitialsPtr[1][i] = func_80072C54(16); } // Plane Available - if (availableVehicles & 4) { + if (availableVehicles & (1 << VEHICLE_PLANE)) { settings->flapTimesPtr[2][i] = func_80072C54(16); settings->flapInitialsPtr[2][i] = func_80072C54(16); } @@ -513,17 +513,17 @@ void func_80073588(Settings *settings, u8 *saveData, u8 arg2) { if (get_map_race_type(i) == RACETYPE_DEFAULT) { availableVehicles = get_map_available_vehicles(i); // Car Available - if (availableVehicles & 1) { + if (availableVehicles & (1 << VEHICLE_CAR)) { settings->courseTimesPtr[0][i] = func_80072C54(16); settings->courseInitialsPtr[0][i] = func_80072C54(16); } // Hovercraft Available - if (availableVehicles & 2) { + if (availableVehicles & (1 << VEHICLE_HOVERCRAFT)) { settings->courseTimesPtr[1][i] = func_80072C54(16); settings->courseInitialsPtr[1][i] = func_80072C54(16); } // Plane Available - if (availableVehicles & 4) { + if (availableVehicles & (1 << VEHICLE_PLANE)) { settings->courseTimesPtr[2][i] = func_80072C54(16); settings->courseInitialsPtr[2][i] = func_80072C54(16); } @@ -550,19 +550,19 @@ void func_800738A4(Settings *settings, u8 *saveData) { if (get_map_race_type(i) == RACETYPE_DEFAULT) { availableVehicles = get_map_available_vehicles(i); // Car Available - if (availableVehicles & 1) { + if (availableVehicles & (1 << VEHICLE_CAR)) { func_80072E28(16, settings->flapTimesPtr[0][i]); func_80072E28(16, settings->flapInitialsPtr[0][i]); vehicleCount++; } // Hovercraft Available - if (availableVehicles & 2) { + if (availableVehicles & (1 << VEHICLE_HOVERCRAFT)) { func_80072E28(16, settings->flapTimesPtr[1][i]); func_80072E28(16, settings->flapInitialsPtr[1][i]); vehicleCount++; } // Plane Available - if (availableVehicles & 4) { + if (availableVehicles & (1 << VEHICLE_PLANE)) { func_80072E28(16, settings->flapTimesPtr[2][i]); func_80072E28(16, settings->flapInitialsPtr[2][i]); vehicleCount++; @@ -591,17 +591,17 @@ void func_800738A4(Settings *settings, u8 *saveData) { if (get_map_race_type(i) == RACETYPE_DEFAULT) { availableVehicles = get_map_available_vehicles(i); // Car Available - if (availableVehicles & 1) { + if (availableVehicles & (1 << VEHICLE_CAR)) { func_80072E28(16, settings->courseTimesPtr[0][i]); func_80072E28(16, settings->courseInitialsPtr[0][i]); } // Hovercraft Available - if (availableVehicles & 2) { + if (availableVehicles & (1 << VEHICLE_HOVERCRAFT)) { func_80072E28(16, settings->courseTimesPtr[1][i]); func_80072E28(16, settings->courseInitialsPtr[1][i]); } // Plane Available - if (availableVehicles & 4) { + if (availableVehicles & (1 << VEHICLE_PLANE)) { func_80072E28(16, settings->courseTimesPtr[2][i]); func_80072E28(16, settings->courseInitialsPtr[2][i]); }