From 911fd3daac3040c0896a60b42589848afdf264ad Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Tue, 26 Jul 2022 13:55:30 -0400 Subject: [PATCH] Matched a few functions, and updated some names / types of variables and other functions (#236) * Identify the controller pak menu, and get give it a bit more details * Remove argument for two functions that don't use it. This still matches. * Match render_controller_pak_ui and do some renaming of some other funcs * Use more of the enum values for menu text * Match func_8008832C * Do some more documenting * Match menu_controller_pak_loop * Do some minor documentation for fun * Match s32_to_string * Match unload_font * Match load_font * Match func_800C4318 and nearly match render_dialogue_text * Update src/font.c Co-authored-by: AntonioCastelli * Update src/game_text.c Co-authored-by: AntonioCastelli * Update src/menu.c Co-authored-by: AntonioCastelli * Update src/menu.c Co-authored-by: AntonioCastelli * Update src/menu.c Co-authored-by: AntonioCastelli * Made some suggested changes Co-authored-by: Ryan Myers Co-authored-by: AntonioCastelli --- asm/non_matchings/font/func_800C4318.s | 30 - asm/non_matchings/font/load_font.s | 51 -- asm/non_matchings/font/s32_to_string.s | 189 ---- asm/non_matchings/font/unload_font.s | 52 -- asm/non_matchings/game_text/func_800C2B00.s | 20 +- asm/non_matchings/menu/func_8008832C.s | 121 --- asm/non_matchings/menu/func_80088938.s | 503 ----------- asm/non_matchings/menu/func_800890AC.s | 353 -------- .../menu/menu_file_select_loop.s | 4 +- .../menu/menu_magic_codes_loop.s | 2 +- asm/non_matchings/menu/menu_options_loop.s | 10 +- src/fade_transition.h | 12 +- src/font.c | 310 ++++--- src/font.h | 91 +- src/game_text.c | 44 +- src/game_text.h | 2 + src/menu.c | 842 +++++++++++------- src/menu.h | 62 +- tools/permuter_settings.toml | 2 + 19 files changed, 856 insertions(+), 1844 deletions(-) delete mode 100644 asm/non_matchings/font/func_800C4318.s delete mode 100644 asm/non_matchings/font/load_font.s delete mode 100644 asm/non_matchings/font/s32_to_string.s delete mode 100644 asm/non_matchings/font/unload_font.s delete mode 100644 asm/non_matchings/menu/func_8008832C.s delete mode 100644 asm/non_matchings/menu/func_80088938.s delete mode 100644 asm/non_matchings/menu/func_800890AC.s diff --git a/asm/non_matchings/font/func_800C4318.s b/asm/non_matchings/font/func_800C4318.s deleted file mode 100644 index e3021158..00000000 --- a/asm/non_matchings/font/func_800C4318.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_800C4318 -/* 0C4F18 800C4318 3C0F8013 */ lui $t7, %hi(gNumberOfFonts) # $t7, 0x8013 -/* 0C4F1C 800C431C 8DEFA7E0 */ lw $t7, %lo(gNumberOfFonts)($t7) -/* 0C4F20 800C4320 AFA50004 */ sw $a1, 4($sp) -/* 0C4F24 800C4324 008F082A */ slt $at, $a0, $t7 -/* 0C4F28 800C4328 10200014 */ beqz $at, .L800C437C -/* 0C4F2C 800C432C 30AE00FF */ andi $t6, $a1, 0xff -/* 0C4F30 800C4330 3C198013 */ lui $t9, %hi(gFonts) # $t9, 0x8013 -/* 0C4F34 800C4334 8F39A7E4 */ lw $t9, %lo(gFonts)($t9) -/* 0C4F38 800C4338 0004C280 */ sll $t8, $a0, 0xa -/* 0C4F3C 800C433C 03191821 */ addu $v1, $t8, $t9 -/* 0C4F40 800C4340 90680028 */ lbu $t0, 0x28($v1) -/* 0C4F44 800C4344 25C5FFE0 */ addiu $a1, $t6, -0x20 -/* 0C4F48 800C4348 1100000C */ beqz $t0, .L800C437C -/* 0C4F4C 800C434C 30A900FF */ andi $t1, $a1, 0xff -/* 0C4F50 800C4350 000950C0 */ sll $t2, $t1, 3 -/* 0C4F54 800C4354 006A5821 */ addu $t3, $v1, $t2 -/* 0C4F58 800C4358 91640100 */ lbu $a0, 0x100($t3) -/* 0C4F5C 800C435C 240100FF */ li $at, 255 -/* 0C4F60 800C4360 10810006 */ beq $a0, $at, .L800C437C -/* 0C4F64 800C4364 00001025 */ move $v0, $zero -/* 0C4F68 800C4368 00046080 */ sll $t4, $a0, 2 -/* 0C4F6C 800C436C 006C6821 */ addu $t5, $v1, $t4 -/* 0C4F70 800C4370 8DA20080 */ lw $v0, 0x80($t5) -/* 0C4F74 800C4374 03E00008 */ jr $ra -/* 0C4F78 800C4378 00000000 */ nop -.L800C437C: -/* 0C4F7C 800C437C 03E00008 */ jr $ra -/* 0C4F80 800C4380 00000000 */ nop - diff --git a/asm/non_matchings/font/load_font.s b/asm/non_matchings/font/load_font.s deleted file mode 100644 index 27fc97e8..00000000 --- a/asm/non_matchings/font/load_font.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel load_font -/* 0C4D70 800C4170 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0C4D74 800C4174 3C0E8013 */ lui $t6, %hi(gNumberOfFonts) # $t6, 0x8013 -/* 0C4D78 800C4178 8DCEA7E0 */ lw $t6, %lo(gNumberOfFonts)($t6) -/* 0C4D7C 800C417C AFBF0024 */ sw $ra, 0x24($sp) -/* 0C4D80 800C4180 008E082A */ slt $at, $a0, $t6 -/* 0C4D84 800C4184 AFB30020 */ sw $s3, 0x20($sp) -/* 0C4D88 800C4188 AFB2001C */ sw $s2, 0x1c($sp) -/* 0C4D8C 800C418C AFB10018 */ sw $s1, 0x18($sp) -/* 0C4D90 800C4190 1020001F */ beqz $at, .L800C4210 -/* 0C4D94 800C4194 AFB00014 */ sw $s0, 0x14($sp) -/* 0C4D98 800C4198 3C188013 */ lui $t8, %hi(gFonts) # $t8, 0x8013 -/* 0C4D9C 800C419C 8F18A7E4 */ lw $t8, %lo(gFonts)($t8) -/* 0C4DA0 800C41A0 00047A80 */ sll $t7, $a0, 0xa -/* 0C4DA4 800C41A4 01F81021 */ addu $v0, $t7, $t8 -/* 0C4DA8 800C41A8 90590028 */ lbu $t9, 0x28($v0) -/* 0C4DAC 800C41AC 24010001 */ li $at, 1 -/* 0C4DB0 800C41B0 27280001 */ addiu $t0, $t9, 1 -/* 0C4DB4 800C41B4 310900FF */ andi $t1, $t0, 0xff -/* 0C4DB8 800C41B8 15210015 */ bne $t1, $at, .L800C4210 -/* 0C4DBC 800C41BC A0480028 */ sb $t0, 0x28($v0) -/* 0C4DC0 800C41C0 844A0040 */ lh $t2, 0x40($v0) -/* 0C4DC4 800C41C4 2413FFFF */ li $s3, -1 -/* 0C4DC8 800C41C8 126A0011 */ beq $s3, $t2, .L800C4210 -/* 0C4DCC 800C41CC 00008040 */ sll $s0, $zero, 1 -/* 0C4DD0 800C41D0 00508821 */ addu $s1, $v0, $s0 -/* 0C4DD4 800C41D4 00005880 */ sll $t3, $zero, 2 -/* 0C4DD8 800C41D8 86240040 */ lh $a0, 0x40($s1) -/* 0C4DDC 800C41DC 004B9021 */ addu $s2, $v0, $t3 -.L800C41E0: -/* 0C4DE0 800C41E0 0C01EB9D */ jal load_texture -/* 0C4DE4 800C41E4 00000000 */ nop -/* 0C4DE8 800C41E8 26100002 */ addiu $s0, $s0, 2 -/* 0C4DEC 800C41EC 2A010040 */ slti $at, $s0, 0x40 -/* 0C4DF0 800C41F0 AE420080 */ sw $v0, 0x80($s2) -/* 0C4DF4 800C41F4 26310002 */ addiu $s1, $s1, 2 -/* 0C4DF8 800C41F8 10200005 */ beqz $at, .L800C4210 -/* 0C4DFC 800C41FC 26520004 */ addiu $s2, $s2, 4 -/* 0C4E00 800C4200 86240040 */ lh $a0, 0x40($s1) -/* 0C4E04 800C4204 00000000 */ nop -/* 0C4E08 800C4208 1664FFF5 */ bne $s3, $a0, .L800C41E0 -/* 0C4E0C 800C420C 00000000 */ nop -.L800C4210: -/* 0C4E10 800C4210 8FBF0024 */ lw $ra, 0x24($sp) -/* 0C4E14 800C4214 8FB00014 */ lw $s0, 0x14($sp) -/* 0C4E18 800C4218 8FB10018 */ lw $s1, 0x18($sp) -/* 0C4E1C 800C421C 8FB2001C */ lw $s2, 0x1c($sp) -/* 0C4E20 800C4220 8FB30020 */ lw $s3, 0x20($sp) -/* 0C4E24 800C4224 03E00008 */ jr $ra -/* 0C4E28 800C4228 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/font/s32_to_string.s b/asm/non_matchings/font/s32_to_string.s deleted file mode 100644 index 50682d6d..00000000 --- a/asm/non_matchings/font/s32_to_string.s +++ /dev/null @@ -1,189 +0,0 @@ -glabel s32_to_string -/* 0C640C 800C580C 8C820000 */ lw $v0, ($a0) -/* 0C6410 800C5810 04A10005 */ bgez $a1, .L800C5828 -/* 0C6414 800C5814 00001825 */ move $v1, $zero -/* 0C6418 800C5818 240E002D */ li $t6, 45 -/* 0C641C 800C581C A04E0000 */ sb $t6, ($v0) -/* 0C6420 800C5820 24420001 */ addiu $v0, $v0, 1 -/* 0C6424 800C5824 00052823 */ negu $a1, $a1 -.L800C5828: -/* 0C6428 800C5828 3C07800E */ lui $a3, %hi(gDescPowsOf10) # $a3, 0x800e -/* 0C642C 800C582C 8CE736EC */ lw $a3, %lo(gDescPowsOf10)($a3) -/* 0C6430 800C5830 24060001 */ li $a2, 1 -/* 0C6434 800C5834 00A7082A */ slt $at, $a1, $a3 -/* 0C6438 800C5838 14200015 */ bnez $at, .L800C5890 -/* 0C643C 800C583C 24090030 */ li $t1, 48 -/* 0C6440 800C5840 00A7001A */ div $zero, $a1, $a3 -/* 0C6444 800C5844 24030001 */ li $v1, 1 -/* 0C6448 800C5848 14E00002 */ bnez $a3, .L800C5854 -/* 0C644C 800C584C 00000000 */ nop -/* 0C6450 800C5850 0007000D */ break 7 -.L800C5854: -/* 0C6454 800C5854 2401FFFF */ li $at, -1 -/* 0C6458 800C5858 14E10004 */ bne $a3, $at, .L800C586C -/* 0C645C 800C585C 3C018000 */ lui $at, 0x8000 -/* 0C6460 800C5860 14A10002 */ bne $a1, $at, .L800C586C -/* 0C6464 800C5864 00000000 */ nop -/* 0C6468 800C5868 0006000D */ break 6 -.L800C586C: -/* 0C646C 800C586C 00005812 */ mflo $t3 -/* 0C6470 800C5870 25690030 */ addiu $t1, $t3, 0x30 -/* 0C6474 800C5874 313800FF */ andi $t8, $t1, 0xff -/* 0C6478 800C5878 01670019 */ multu $t3, $a3 -/* 0C647C 800C587C 03004825 */ move $t1, $t8 -/* 0C6480 800C5880 01605025 */ move $t2, $t3 -/* 0C6484 800C5884 00007812 */ mflo $t7 -/* 0C6488 800C5888 00AF2823 */ subu $a1, $a1, $t7 -/* 0C648C 800C588C 00000000 */ nop -.L800C5890: -/* 0C6490 800C5890 10600003 */ beqz $v1, .L800C58A0 -/* 0C6494 800C5894 0006C880 */ sll $t9, $a2, 2 -/* 0C6498 800C5898 A0490000 */ sb $t1, ($v0) -/* 0C649C 800C589C 24420001 */ addiu $v0, $v0, 1 -.L800C58A0: -/* 0C64A0 800C58A0 3C0D800E */ lui $t5, %hi(gDescPowsOf10) # $t5, 0x800e -/* 0C64A4 800C58A4 25AD36EC */ addiu $t5, %lo(gDescPowsOf10) # addiu $t5, $t5, 0x36ec -/* 0C64A8 800C58A8 3C0C800E */ lui $t4, %hi(sDialogueBoxDimensions) # $t4, 0x800e -/* 0C64AC 800C58AC 258C3710 */ addiu $t4, %lo(sDialogueBoxDimensions) # addiu $t4, $t4, 0x3710 -/* 0C64B0 800C58B0 032D4021 */ addu $t0, $t9, $t5 -.L800C58B4: -/* 0C64B4 800C58B4 8D060000 */ lw $a2, ($t0) -/* 0C64B8 800C58B8 24090030 */ li $t1, 48 -/* 0C64BC 800C58BC 00A6082A */ slt $at, $a1, $a2 -/* 0C64C0 800C58C0 14200015 */ bnez $at, .L800C5918 -/* 0C64C4 800C58C4 00C03825 */ move $a3, $a2 -/* 0C64C8 800C58C8 00A6001A */ div $zero, $a1, $a2 -/* 0C64CC 800C58CC 24030001 */ li $v1, 1 -/* 0C64D0 800C58D0 14C00002 */ bnez $a2, .L800C58DC -/* 0C64D4 800C58D4 00000000 */ nop -/* 0C64D8 800C58D8 0007000D */ break 7 -.L800C58DC: -/* 0C64DC 800C58DC 2401FFFF */ li $at, -1 -/* 0C64E0 800C58E0 14C10004 */ bne $a2, $at, .L800C58F4 -/* 0C64E4 800C58E4 3C018000 */ lui $at, 0x8000 -/* 0C64E8 800C58E8 14A10002 */ bne $a1, $at, .L800C58F4 -/* 0C64EC 800C58EC 00000000 */ nop -/* 0C64F0 800C58F0 0006000D */ break 6 -.L800C58F4: -/* 0C64F4 800C58F4 00003812 */ mflo $a3 -/* 0C64F8 800C58F8 24E90030 */ addiu $t1, $a3, 0x30 -/* 0C64FC 800C58FC 312F00FF */ andi $t7, $t1, 0xff -/* 0C6500 800C5900 00E60019 */ multu $a3, $a2 -/* 0C6504 800C5904 00E05025 */ move $t2, $a3 -/* 0C6508 800C5908 01E04825 */ move $t1, $t7 -/* 0C650C 800C590C 00007012 */ mflo $t6 -/* 0C6510 800C5910 00AE2823 */ subu $a1, $a1, $t6 -/* 0C6514 800C5914 00000000 */ nop -.L800C5918: -/* 0C6518 800C5918 10600003 */ beqz $v1, .L800C5928 -/* 0C651C 800C591C 00000000 */ nop -/* 0C6520 800C5920 A0490000 */ sb $t1, ($v0) -/* 0C6524 800C5924 24420001 */ addiu $v0, $v0, 1 -.L800C5928: -/* 0C6528 800C5928 8D070004 */ lw $a3, 4($t0) -/* 0C652C 800C592C 24090030 */ li $t1, 48 -/* 0C6530 800C5930 00A7082A */ slt $at, $a1, $a3 -/* 0C6534 800C5934 14200015 */ bnez $at, .L800C598C -/* 0C6538 800C5938 00000000 */ nop -/* 0C653C 800C593C 00A7001A */ div $zero, $a1, $a3 -/* 0C6540 800C5940 24030001 */ li $v1, 1 -/* 0C6544 800C5944 14E00002 */ bnez $a3, .L800C5950 -/* 0C6548 800C5948 00000000 */ nop -/* 0C654C 800C594C 0007000D */ break 7 -.L800C5950: -/* 0C6550 800C5950 2401FFFF */ li $at, -1 -/* 0C6554 800C5954 14E10004 */ bne $a3, $at, .L800C5968 -/* 0C6558 800C5958 3C018000 */ lui $at, 0x8000 -/* 0C655C 800C595C 14A10002 */ bne $a1, $at, .L800C5968 -/* 0C6560 800C5960 00000000 */ nop -/* 0C6564 800C5964 0006000D */ break 6 -.L800C5968: -/* 0C6568 800C5968 00005812 */ mflo $t3 -/* 0C656C 800C596C 25690030 */ addiu $t1, $t3, 0x30 -/* 0C6570 800C5970 313900FF */ andi $t9, $t1, 0xff -/* 0C6574 800C5974 01670019 */ multu $t3, $a3 -/* 0C6578 800C5978 03204825 */ move $t1, $t9 -/* 0C657C 800C597C 01605025 */ move $t2, $t3 -/* 0C6580 800C5980 0000C012 */ mflo $t8 -/* 0C6584 800C5984 00B82823 */ subu $a1, $a1, $t8 -/* 0C6588 800C5988 00000000 */ nop -.L800C598C: -/* 0C658C 800C598C 10600003 */ beqz $v1, .L800C599C -/* 0C6590 800C5990 00000000 */ nop -/* 0C6594 800C5994 A0490000 */ sb $t1, ($v0) -/* 0C6598 800C5998 24420001 */ addiu $v0, $v0, 1 -.L800C599C: -/* 0C659C 800C599C 8D070008 */ lw $a3, 8($t0) -/* 0C65A0 800C59A0 24090030 */ li $t1, 48 -/* 0C65A4 800C59A4 00A7082A */ slt $at, $a1, $a3 -/* 0C65A8 800C59A8 14200015 */ bnez $at, .L800C5A00 -/* 0C65AC 800C59AC 00000000 */ nop -/* 0C65B0 800C59B0 00A7001A */ div $zero, $a1, $a3 -/* 0C65B4 800C59B4 24030001 */ li $v1, 1 -/* 0C65B8 800C59B8 14E00002 */ bnez $a3, .L800C59C4 -/* 0C65BC 800C59BC 00000000 */ nop -/* 0C65C0 800C59C0 0007000D */ break 7 -.L800C59C4: -/* 0C65C4 800C59C4 2401FFFF */ li $at, -1 -/* 0C65C8 800C59C8 14E10004 */ bne $a3, $at, .L800C59DC -/* 0C65CC 800C59CC 3C018000 */ lui $at, 0x8000 -/* 0C65D0 800C59D0 14A10002 */ bne $a1, $at, .L800C59DC -/* 0C65D4 800C59D4 00000000 */ nop -/* 0C65D8 800C59D8 0006000D */ break 6 -.L800C59DC: -/* 0C65DC 800C59DC 00005812 */ mflo $t3 -/* 0C65E0 800C59E0 25690030 */ addiu $t1, $t3, 0x30 -/* 0C65E4 800C59E4 312E00FF */ andi $t6, $t1, 0xff -/* 0C65E8 800C59E8 01670019 */ multu $t3, $a3 -/* 0C65EC 800C59EC 01C04825 */ move $t1, $t6 -/* 0C65F0 800C59F0 01605025 */ move $t2, $t3 -/* 0C65F4 800C59F4 00006812 */ mflo $t5 -/* 0C65F8 800C59F8 00AD2823 */ subu $a1, $a1, $t5 -/* 0C65FC 800C59FC 00000000 */ nop -.L800C5A00: -/* 0C6600 800C5A00 10600003 */ beqz $v1, .L800C5A10 -/* 0C6604 800C5A04 00000000 */ nop -/* 0C6608 800C5A08 A0490000 */ sb $t1, ($v0) -/* 0C660C 800C5A0C 24420001 */ addiu $v0, $v0, 1 -.L800C5A10: -/* 0C6610 800C5A10 8D07000C */ lw $a3, 0xc($t0) -/* 0C6614 800C5A14 25080010 */ addiu $t0, $t0, 0x10 -/* 0C6618 800C5A18 00A7082A */ slt $at, $a1, $a3 -/* 0C661C 800C5A1C 14200015 */ bnez $at, .L800C5A74 -/* 0C6620 800C5A20 24090030 */ li $t1, 48 -/* 0C6624 800C5A24 00A7001A */ div $zero, $a1, $a3 -/* 0C6628 800C5A28 24030001 */ li $v1, 1 -/* 0C662C 800C5A2C 14E00002 */ bnez $a3, .L800C5A38 -/* 0C6630 800C5A30 00000000 */ nop -/* 0C6634 800C5A34 0007000D */ break 7 -.L800C5A38: -/* 0C6638 800C5A38 2401FFFF */ li $at, -1 -/* 0C663C 800C5A3C 14E10004 */ bne $a3, $at, .L800C5A50 -/* 0C6640 800C5A40 3C018000 */ lui $at, 0x8000 -/* 0C6644 800C5A44 14A10002 */ bne $a1, $at, .L800C5A50 -/* 0C6648 800C5A48 00000000 */ nop -/* 0C664C 800C5A4C 0006000D */ break 6 -.L800C5A50: -/* 0C6650 800C5A50 00005812 */ mflo $t3 -/* 0C6654 800C5A54 25690030 */ addiu $t1, $t3, 0x30 -/* 0C6658 800C5A58 313800FF */ andi $t8, $t1, 0xff -/* 0C665C 800C5A5C 01670019 */ multu $t3, $a3 -/* 0C6660 800C5A60 03004825 */ move $t1, $t8 -/* 0C6664 800C5A64 01605025 */ move $t2, $t3 -/* 0C6668 800C5A68 00007812 */ mflo $t7 -/* 0C666C 800C5A6C 00AF2823 */ subu $a1, $a1, $t7 -/* 0C6670 800C5A70 00000000 */ nop -.L800C5A74: -/* 0C6674 800C5A74 10600003 */ beqz $v1, .L800C5A84 -/* 0C6678 800C5A78 00000000 */ nop -/* 0C667C 800C5A7C A0490000 */ sb $t1, ($v0) -/* 0C6680 800C5A80 24420001 */ addiu $v0, $v0, 1 -.L800C5A84: -/* 0C6684 800C5A84 150CFF8B */ bne $t0, $t4, .L800C58B4 -/* 0C6688 800C5A88 00000000 */ nop -/* 0C668C 800C5A8C 24B90030 */ addiu $t9, $a1, 0x30 -/* 0C6690 800C5A90 A0590000 */ sb $t9, ($v0) -/* 0C6694 800C5A94 24420001 */ addiu $v0, $v0, 1 -/* 0C6698 800C5A98 03E00008 */ jr $ra -/* 0C669C 800C5A9C AC820000 */ sw $v0, ($a0) - diff --git a/asm/non_matchings/font/unload_font.s b/asm/non_matchings/font/unload_font.s deleted file mode 100644 index 78a1affb..00000000 --- a/asm/non_matchings/font/unload_font.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel unload_font -/* 0C4E2C 800C422C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0C4E30 800C4230 3C0E8013 */ lui $t6, %hi(gNumberOfFonts) # $t6, 0x8013 -/* 0C4E34 800C4234 8DCEA7E0 */ lw $t6, %lo(gNumberOfFonts)($t6) -/* 0C4E38 800C4238 AFBF0024 */ sw $ra, 0x24($sp) -/* 0C4E3C 800C423C 008E082A */ slt $at, $a0, $t6 -/* 0C4E40 800C4240 AFB30020 */ sw $s3, 0x20($sp) -/* 0C4E44 800C4244 AFB2001C */ sw $s2, 0x1c($sp) -/* 0C4E48 800C4248 AFB10018 */ sw $s1, 0x18($sp) -/* 0C4E4C 800C424C 10200020 */ beqz $at, .L800C42D0 -/* 0C4E50 800C4250 AFB00014 */ sw $s0, 0x14($sp) -/* 0C4E54 800C4254 3C188013 */ lui $t8, %hi(gFonts) # $t8, 0x8013 -/* 0C4E58 800C4258 8F18A7E4 */ lw $t8, %lo(gFonts)($t8) -/* 0C4E5C 800C425C 00047A80 */ sll $t7, $a0, 0xa -/* 0C4E60 800C4260 01F89021 */ addu $s2, $t7, $t8 -/* 0C4E64 800C4264 92420028 */ lbu $v0, 0x28($s2) -/* 0C4E68 800C4268 00000000 */ nop -/* 0C4E6C 800C426C 18400018 */ blez $v0, .L800C42D0 -/* 0C4E70 800C4270 2459FFFF */ addiu $t9, $v0, -1 -/* 0C4E74 800C4274 332800FF */ andi $t0, $t9, 0xff -/* 0C4E78 800C4278 15000015 */ bnez $t0, .L800C42D0 -/* 0C4E7C 800C427C A2590028 */ sb $t9, 0x28($s2) -/* 0C4E80 800C4280 86490040 */ lh $t1, 0x40($s2) -/* 0C4E84 800C4284 2413FFFF */ li $s3, -1 -/* 0C4E88 800C4288 12690011 */ beq $s3, $t1, .L800C42D0 -/* 0C4E8C 800C428C 00008825 */ move $s1, $zero -/* 0C4E90 800C4290 00005080 */ sll $t2, $zero, 2 -/* 0C4E94 800C4294 024A8021 */ addu $s0, $s2, $t2 -.L800C4298: -/* 0C4E98 800C4298 8E040080 */ lw $a0, 0x80($s0) -/* 0C4E9C 800C429C 0C01ECAF */ jal free_texture -/* 0C4EA0 800C42A0 00000000 */ nop -/* 0C4EA4 800C42A4 26310001 */ addiu $s1, $s1, 1 -/* 0C4EA8 800C42A8 2A210020 */ slti $at, $s1, 0x20 -/* 0C4EAC 800C42AC AE000080 */ sw $zero, 0x80($s0) -/* 0C4EB0 800C42B0 10200007 */ beqz $at, .L800C42D0 -/* 0C4EB4 800C42B4 26100004 */ addiu $s0, $s0, 4 -/* 0C4EB8 800C42B8 00115840 */ sll $t3, $s1, 1 -/* 0C4EBC 800C42BC 024B6021 */ addu $t4, $s2, $t3 -/* 0C4EC0 800C42C0 858D0040 */ lh $t5, 0x40($t4) -/* 0C4EC4 800C42C4 00000000 */ nop -/* 0C4EC8 800C42C8 166DFFF3 */ bne $s3, $t5, .L800C4298 -/* 0C4ECC 800C42CC 00000000 */ nop -.L800C42D0: -/* 0C4ED0 800C42D0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0C4ED4 800C42D4 8FB00014 */ lw $s0, 0x14($sp) -/* 0C4ED8 800C42D8 8FB10018 */ lw $s1, 0x18($sp) -/* 0C4EDC 800C42DC 8FB2001C */ lw $s2, 0x1c($sp) -/* 0C4EE0 800C42E0 8FB30020 */ lw $s3, 0x20($sp) -/* 0C4EE4 800C42E4 03E00008 */ jr $ra -/* 0C4EE8 800C42E8 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/game_text/func_800C2B00.s b/asm/non_matchings/game_text/func_800C2B00.s index cbde9fd2..01cd7f80 100644 --- a/asm/non_matchings/game_text/func_800C2B00.s +++ b/asm/non_matchings/game_text/func_800C2B00.s @@ -12,23 +12,23 @@ glabel func_800C2B00 /* 0C3728 800C2B28 AFB00020 */ sw $s0, 0x20($sp) /* 0C372C 800C2B2C 0C031525 */ jal assign_dialogue_box_id /* 0C3730 800C2B30 24040006 */ li $a0, 6 -/* 0C3734 800C2B34 3C118013 */ lui $s1, %hi(D_8012A7B4) # $s1, 0x8013 -/* 0C3738 800C2B38 2631A7B4 */ addiu $s1, %lo(D_8012A7B4) # addiu $s1, $s1, -0x584c -/* 0C373C 800C2B3C 3C108013 */ lui $s0, %hi(D_8012A7B0) # $s0, 0x8013 -/* 0C3740 800C2B40 3C158013 */ lui $s5, %hi(D_8012A7AE) # $s5, 0x8013 -/* 0C3744 800C2B44 3C168013 */ lui $s6, %hi(D_8012A7B2) # $s6, 0x8013 +/* 0C3734 800C2B34 3C118013 */ lui $s1, %hi(sDialogueYPos2) # $s1, 0x8013 +/* 0C3738 800C2B38 2631A7B4 */ addiu $s1, %lo(sDialogueYPos2) # addiu $s1, $s1, -0x584c +/* 0C373C 800C2B3C 3C108013 */ lui $s0, %hi(sDialogueYPos1) # $s0, 0x8013 +/* 0C3740 800C2B40 3C158013 */ lui $s5, %hi(sDialogueXPos1) # $s5, 0x8013 +/* 0C3744 800C2B44 3C168013 */ lui $s6, %hi(sDialogueXPos2) # $s6, 0x8013 /* 0C3748 800C2B48 862E0000 */ lh $t6, ($s1) -/* 0C374C 800C2B4C 26D6A7B2 */ addiu $s6, %lo(D_8012A7B2) # addiu $s6, $s6, -0x584e -/* 0C3750 800C2B50 26B5A7AE */ addiu $s5, %lo(D_8012A7AE) # addiu $s5, $s5, -0x5852 -/* 0C3754 800C2B54 2610A7B0 */ addiu $s0, %lo(D_8012A7B0) # addiu $s0, $s0, -0x5850 +/* 0C374C 800C2B4C 26D6A7B2 */ addiu $s6, %lo(sDialogueXPos2) # addiu $s6, $s6, -0x584e +/* 0C3750 800C2B50 26B5A7AE */ addiu $s5, %lo(sDialogueXPos1) # addiu $s5, $s5, -0x5852 +/* 0C3754 800C2B54 2610A7B0 */ addiu $s0, %lo(sDialogueYPos1) # addiu $s0, $s0, -0x5850 /* 0C3758 800C2B58 86060000 */ lh $a2, ($s0) /* 0C375C 800C2B5C 86A50000 */ lh $a1, ($s5) /* 0C3760 800C2B60 86C70000 */ lh $a3, ($s6) /* 0C3764 800C2B64 24040006 */ li $a0, 6 /* 0C3768 800C2B68 0C0313B7 */ jal set_current_dialogue_box_coords /* 0C376C 800C2B6C AFAE0010 */ sw $t6, 0x10($sp) -/* 0C3770 800C2B70 3C178013 */ lui $s7, %hi(D_8012A7A8) # $s7, 0x8013 -/* 0C3774 800C2B74 26F7A7A8 */ addiu $s7, %lo(D_8012A7A8) # addiu $s7, $s7, -0x5858 +/* 0C3770 800C2B70 3C178013 */ lui $s7, %hi(sDialogueAlpha) # $s7, 0x8013 +/* 0C3774 800C2B74 26F7A7A8 */ addiu $s7, %lo(sDialogueAlpha) # addiu $s7, $s7, -0x5858 /* 0C3778 800C2B78 86EF0000 */ lh $t7, ($s7) /* 0C377C 800C2B7C 24040006 */ li $a0, 6 /* 0C3780 800C2B80 000FC080 */ sll $t8, $t7, 2 diff --git a/asm/non_matchings/menu/func_8008832C.s b/asm/non_matchings/menu/func_8008832C.s deleted file mode 100644 index e0c6abc0..00000000 --- a/asm/non_matchings/menu/func_8008832C.s +++ /dev/null @@ -1,121 +0,0 @@ -glabel func_8008832C -/* 088F2C 8008832C 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 088F30 80088330 AFB10008 */ sw $s1, 8($sp) -/* 088F34 80088334 3C078012 */ lui $a3, %hi(D_80126BC8) # $a3, 0x8012 -/* 088F38 80088338 3C0E8012 */ lui $t6, %hi(sControllerPakFatalErrorFound) # $t6, 0x8012 -/* 088F3C 8008833C 24E76BC8 */ addiu $a3, %lo(D_80126BC8) # addiu $a3, $a3, 0x6bc8 -/* 088F40 80088340 AFB2000C */ sw $s2, 0xc($sp) -/* 088F44 80088344 AFB00004 */ sw $s0, 4($sp) -/* 088F48 80088348 25CE6A34 */ addiu $t6, %lo(sControllerPakFatalErrorFound) # addiu $t6, $t6, 0x6a34 -/* 088F4C 8008834C 3C118012 */ lui $s1, %hi(sControllerPakBadData) # $s1, 0x8012 -/* 088F50 80088350 3C0C8012 */ lui $t4, %hi(sControllerPakDataPresent) # $t4, 0x8012 -/* 088F54 80088354 3C0B8012 */ lui $t3, %hi(sControllerPakNoFreeSpace) # $t3, 0x8012 -/* 088F58 80088358 3C09800E */ lui $t1, %hi(gMenuText) # $t1, 0x800e -/* 088F5C 8008835C 3C08800E */ lui $t0, %hi(D_800DFCB4) # $t0, 0x800e -/* 088F60 80088360 00001025 */ move $v0, $zero -/* 088F64 80088364 ACE00000 */ sw $zero, ($a3) -/* 088F68 80088368 2508FCB4 */ addiu $t0, %lo(D_800DFCB4) # addiu $t0, $t0, -0x34c -/* 088F6C 8008836C 2529F4A0 */ addiu $t1, %lo(gMenuText) # addiu $t1, $t1, -0xb60 -/* 088F70 80088370 256B6A38 */ addiu $t3, %lo(sControllerPakNoFreeSpace) # addiu $t3, $t3, 0x6a38 -/* 088F74 80088374 258C6A60 */ addiu $t4, %lo(sControllerPakDataPresent) # addiu $t4, $t4, 0x6a60 -/* 088F78 80088378 26316A3C */ addiu $s1, %lo(sControllerPakBadData) # addiu $s1, $s1, 0x6a3c -/* 088F7C 8008837C 000E2021 */ addu $a0, $zero, $t6 -/* 088F80 80088380 24100002 */ li $s0, 2 -/* 088F84 80088384 24120003 */ li $s2, 3 -/* 088F88 80088388 00001825 */ move $v1, $zero -/* 088F8C 8008838C 240D0001 */ li $t5, 1 -/* 088F90 80088390 240A0001 */ li $t2, 1 -.L80088394: -/* 088F94 80088394 908F0000 */ lbu $t7, ($a0) -/* 088F98 80088398 00000000 */ nop -/* 088F9C 8008839C 11E00017 */ beqz $t7, .L800883FC -/* 088FA0 800883A0 0163C021 */ addu $t8, $t3, $v1 -/* 088FA4 800883A4 8D250000 */ lw $a1, ($t1) -/* 088FA8 800883A8 00037080 */ sll $t6, $v1, 2 -/* 088FAC 800883AC 8CB80100 */ lw $t8, 0x100($a1) -/* 088FB0 800883B0 00AE7821 */ addu $t7, $a1, $t6 -/* 088FB4 800883B4 AD180014 */ sw $t8, 0x14($t0) -/* 088FB8 800883B8 8CB90100 */ lw $t9, 0x100($a1) -/* 088FBC 800883BC 01401025 */ move $v0, $t2 -/* 088FC0 800883C0 AD190034 */ sw $t9, 0x34($t0) -/* 088FC4 800883C4 8DF80158 */ lw $t8, 0x158($t7) -/* 088FC8 800883C8 00000000 */ nop -/* 088FCC 800883CC AD180054 */ sw $t8, 0x54($t0) -/* 088FD0 800883D0 8CB9017C */ lw $t9, 0x17c($a1) -/* 088FD4 800883D4 00000000 */ nop -/* 088FD8 800883D8 AD190074 */ sw $t9, 0x74($t0) -/* 088FDC 800883DC 8CAE028C */ lw $t6, 0x28c($a1) -/* 088FE0 800883E0 00000000 */ nop -/* 088FE4 800883E4 AD0E0094 */ sw $t6, 0x94($t0) -/* 088FE8 800883E8 8CAF0290 */ lw $t7, 0x290($a1) -/* 088FEC 800883EC ACEA0000 */ sw $t2, ($a3) -/* 088FF0 800883F0 10000035 */ b .L800884C8 -/* 088FF4 800883F4 AD0F00B4 */ sw $t7, 0xb4($t0) -/* 088FF8 800883F8 0163C021 */ addu $t8, $t3, $v1 -.L800883FC: -/* 088FFC 800883FC 93190000 */ lbu $t9, ($t8) -/* 089000 80088400 01833021 */ addu $a2, $t4, $v1 -/* 089004 80088404 1320001A */ beqz $t9, .L80088470 -/* 089008 80088408 02237021 */ addu $t6, $s1, $v1 -/* 08900C 8008840C 90CE0000 */ lbu $t6, ($a2) -/* 089010 80088410 00000000 */ nop -/* 089014 80088414 15C00016 */ bnez $t6, .L80088470 -/* 089018 80088418 02237021 */ addu $t6, $s1, $v1 -/* 08901C 8008841C 8D250000 */ lw $a1, ($t1) -/* 089020 80088420 0003C880 */ sll $t9, $v1, 2 -/* 089024 80088424 8CAF0260 */ lw $t7, 0x260($a1) -/* 089028 80088428 00B97021 */ addu $t6, $a1, $t9 -/* 08902C 8008842C AD0F0014 */ sw $t7, 0x14($t0) -/* 089030 80088430 8CB80260 */ lw $t8, 0x260($a1) -/* 089034 80088434 01401025 */ move $v0, $t2 -/* 089038 80088438 AD180034 */ sw $t8, 0x34($t0) -/* 08903C 8008843C 8DCF0158 */ lw $t7, 0x158($t6) -/* 089040 80088440 00000000 */ nop -/* 089044 80088444 AD0F0054 */ sw $t7, 0x54($t0) -/* 089048 80088448 8CB80110 */ lw $t8, 0x110($a1) -/* 08904C 8008844C 00000000 */ nop -/* 089050 80088450 AD180074 */ sw $t8, 0x74($t0) -/* 089054 80088454 8CB90188 */ lw $t9, 0x188($a1) -/* 089058 80088458 AD0000B4 */ sw $zero, 0xb4($t0) -/* 08905C 8008845C A0CD0000 */ sb $t5, ($a2) -/* 089060 80088460 ACF00000 */ sw $s0, ($a3) -/* 089064 80088464 10000018 */ b .L800884C8 -/* 089068 80088468 AD190094 */ sw $t9, 0x94($t0) -/* 08906C 8008846C 02237021 */ addu $t6, $s1, $v1 -.L80088470: -/* 089070 80088470 91CF0000 */ lbu $t7, ($t6) -/* 089074 80088474 00000000 */ nop -/* 089078 80088478 11E00013 */ beqz $t7, .L800884C8 -/* 08907C 8008847C 00000000 */ nop -/* 089080 80088480 8D250000 */ lw $a1, ($t1) -/* 089084 80088484 00037080 */ sll $t6, $v1, 2 -/* 089088 80088488 8CB80260 */ lw $t8, 0x260($a1) -/* 08908C 8008848C 00AE7821 */ addu $t7, $a1, $t6 -/* 089090 80088490 AD180014 */ sw $t8, 0x14($t0) -/* 089094 80088494 8CB90260 */ lw $t9, 0x260($a1) -/* 089098 80088498 01401025 */ move $v0, $t2 -/* 08909C 8008849C AD190034 */ sw $t9, 0x34($t0) -/* 0890A0 800884A0 8DF80158 */ lw $t8, 0x158($t7) -/* 0890A4 800884A4 00000000 */ nop -/* 0890A8 800884A8 AD180054 */ sw $t8, 0x54($t0) -/* 0890AC 800884AC 8CB902E0 */ lw $t9, 0x2e0($a1) -/* 0890B0 800884B0 00000000 */ nop -/* 0890B4 800884B4 AD190074 */ sw $t9, 0x74($t0) -/* 0890B8 800884B8 8CAE02E4 */ lw $t6, 0x2e4($a1) -/* 0890BC 800884BC AD0000B4 */ sw $zero, 0xb4($t0) -/* 0890C0 800884C0 ACF20000 */ sw $s2, ($a3) -/* 0890C4 800884C4 AD0E0094 */ sw $t6, 0x94($t0) -.L800884C8: -/* 0890C8 800884C8 24630001 */ addiu $v1, $v1, 1 -/* 0890CC 800884CC 1C600003 */ bgtz $v1, .L800884DC -/* 0890D0 800884D0 24840001 */ addiu $a0, $a0, 1 -/* 0890D4 800884D4 1040FFAF */ beqz $v0, .L80088394 -/* 0890D8 800884D8 00000000 */ nop -.L800884DC: -/* 0890DC 800884DC 8CE20000 */ lw $v0, ($a3) -/* 0890E0 800884E0 8FB00004 */ lw $s0, 4($sp) -/* 0890E4 800884E4 8FB10008 */ lw $s1, 8($sp) -/* 0890E8 800884E8 8FB2000C */ lw $s2, 0xc($sp) -/* 0890EC 800884EC 03E00008 */ jr $ra -/* 0890F0 800884F0 27BD0010 */ addiu $sp, $sp, 0x10 - diff --git a/asm/non_matchings/menu/func_80088938.s b/asm/non_matchings/menu/func_80088938.s deleted file mode 100644 index 7a463c63..00000000 --- a/asm/non_matchings/menu/func_80088938.s +++ /dev/null @@ -1,503 +0,0 @@ -glabel func_80088938 -/* 089538 80088938 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 08953C 8008893C AFBF0044 */ sw $ra, 0x44($sp) -/* 089540 80088940 AFA40048 */ sw $a0, 0x48($sp) -/* 089544 80088944 AFB70040 */ sw $s7, 0x40($sp) -/* 089548 80088948 AFB6003C */ sw $s6, 0x3c($sp) -/* 08954C 8008894C AFB50038 */ sw $s5, 0x38($sp) -/* 089550 80088950 AFB40034 */ sw $s4, 0x34($sp) -/* 089554 80088954 AFB30030 */ sw $s3, 0x30($sp) -/* 089558 80088958 AFB2002C */ sw $s2, 0x2c($sp) -/* 08955C 8008895C AFB10028 */ sw $s1, 0x28($sp) -/* 089560 80088960 AFB00024 */ sw $s0, 0x24($sp) -/* 089564 80088964 00002025 */ move $a0, $zero -/* 089568 80088968 00002825 */ move $a1, $zero -/* 08956C 8008896C 00003025 */ move $a2, $zero -/* 089570 80088970 0C0310F3 */ jal set_text_background_colour -/* 089574 80088974 00003825 */ move $a3, $zero -/* 089578 80088978 3C168012 */ lui $s6, %hi(D_801263BC) # $s6, 0x8012 -/* 08957C 8008897C 8ED663BC */ lw $s6, %lo(D_801263BC)($s6) -/* 089580 80088980 3C188012 */ lui $t8, %hi(D_80126BC8) # $t8, 0x8012 -/* 089584 80088984 001670C0 */ sll $t6, $s6, 3 -/* 089588 80088988 29C10100 */ slti $at, $t6, 0x100 -/* 08958C 8008898C 14200003 */ bnez $at, .L8008899C -/* 089590 80088990 01C0B025 */ move $s6, $t6 -/* 089594 80088994 240F01FF */ li $t7, 511 -/* 089598 80088998 01EEB023 */ subu $s6, $t7, $t6 -.L8008899C: -/* 08959C 8008899C 8F186BC8 */ lw $t8, %lo(D_80126BC8)($t8) -/* 0895A0 800889A0 24040001 */ li $a0, 1 -/* 0895A4 800889A4 13000007 */ beqz $t8, .L800889C4 -/* 0895A8 800889A8 3C19800E */ lui $t9, %hi(gShowControllerPakMenu) # $t9, 0x800e -/* 0895AC 800889AC 3C05800E */ lui $a1, %hi(D_800DFCB4) # $a1, 0x800e -/* 0895B0 800889B0 24A5FCB4 */ addiu $a1, %lo(D_800DFCB4) # addiu $a1, $a1, -0x34c -/* 0895B4 800889B4 0C02087B */ jal draw_menu_elements -/* 0895B8 800889B8 3C063F80 */ lui $a2, 0x3f80 -/* 0895BC 800889BC 100001B1 */ b .L80089084 -/* 0895C0 800889C0 8FBF0044 */ lw $ra, 0x44($sp) -.L800889C4: -/* 0895C4 800889C4 8F39FD94 */ lw $t9, %lo(gShowControllerPakMenu)($t9) -/* 0895C8 800889C8 00000000 */ nop -/* 0895CC 800889CC 132001AD */ beqz $t9, .L80089084 -/* 0895D0 800889D0 8FBF0044 */ lw $ra, 0x44($sp) -/* 0895D4 800889D4 0C0310BB */ jal set_text_font -/* 0895D8 800889D8 24040002 */ li $a0, 2 -/* 0895DC 800889DC 24080080 */ li $t0, 128 -/* 0895E0 800889E0 AFA80010 */ sw $t0, 0x10($sp) -/* 0895E4 800889E4 00002025 */ move $a0, $zero -/* 0895E8 800889E8 00002825 */ move $a1, $zero -/* 0895EC 800889EC 00003025 */ move $a2, $zero -/* 0895F0 800889F0 0C0310E1 */ jal set_text_colour -/* 0895F4 800889F4 240700FF */ li $a3, 255 -/* 0895F8 800889F8 3C17800E */ lui $s7, %hi(gMenuText) # $s7, 0x800e -/* 0895FC 800889FC 26F7F4A0 */ addiu $s7, %lo(gMenuText) # addiu $s7, $s7, -0xb60 -/* 089600 80088A00 8EE90000 */ lw $t1, ($s7) -/* 089604 80088A04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089608 80088A08 240A000C */ li $t2, 12 -/* 08960C 80088A0C 8D27008C */ lw $a3, 0x8c($t1) -/* 089610 80088A10 AFAA0010 */ sw $t2, 0x10($sp) -/* 089614 80088A14 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089618 80088A18 240500A1 */ li $a1, 161 -/* 08961C 80088A1C 0C031110 */ jal draw_text -/* 089620 80088A20 24060021 */ li $a2, 33 -/* 089624 80088A24 240B00FF */ li $t3, 255 -/* 089628 80088A28 AFAB0010 */ sw $t3, 0x10($sp) -/* 08962C 80088A2C 240400FF */ li $a0, 255 -/* 089630 80088A30 240500FF */ li $a1, 255 -/* 089634 80088A34 240600FF */ li $a2, 255 -/* 089638 80088A38 0C0310E1 */ jal set_text_colour -/* 08963C 80088A3C 00003825 */ move $a3, $zero -/* 089640 80088A40 8EEC0000 */ lw $t4, ($s7) -/* 089644 80088A44 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089648 80088A48 240D000C */ li $t5, 12 -/* 08964C 80088A4C 8D87008C */ lw $a3, 0x8c($t4) -/* 089650 80088A50 AFAD0010 */ sw $t5, 0x10($sp) -/* 089654 80088A54 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089658 80088A58 240500A0 */ li $a1, 160 -/* 08965C 80088A5C 0C031110 */ jal draw_text -/* 089660 80088A60 2406001E */ li $a2, 30 -/* 089664 80088A64 24150030 */ li $s5, 48 -/* 089668 80088A68 0C031525 */ jal assign_dialogue_box_id -/* 08966C 80088A6C 24040006 */ li $a0, 6 -/* 089670 80088A70 26AE001E */ addiu $t6, $s5, 0x1e -/* 089674 80088A74 AFAE0010 */ sw $t6, 0x10($sp) -/* 089678 80088A78 24040006 */ li $a0, 6 -/* 08967C 80088A7C 2405003A */ li $a1, 58 -/* 089680 80088A80 02A03025 */ move $a2, $s5 -/* 089684 80088A84 0C0313B7 */ jal set_current_dialogue_box_coords -/* 089688 80088A88 24070106 */ li $a3, 262 -/* 08968C 80088A8C 3C0F800E */ lui $t7, %hi(D_800DF460) # $t7, 0x800e -/* 089690 80088A90 8DEFF460 */ lw $t7, %lo(D_800DF460)($t7) -/* 089694 80088A94 2401FFFF */ li $at, -1 -/* 089698 80088A98 15E1000A */ bne $t7, $at, .L80088AC4 -/* 08969C 80088A9C 0016C043 */ sra $t8, $s6, 1 -/* 0896A0 80088AA0 27190080 */ addiu $t9, $t8, 0x80 -/* 0896A4 80088AA4 AFB90010 */ sw $t9, 0x10($sp) -/* 0896A8 80088AA8 24040006 */ li $a0, 6 -/* 0896AC 80088AAC 240500FF */ li $a1, 255 -/* 0896B0 80088AB0 240600FF */ li $a2, 255 -/* 0896B4 80088AB4 0C0313EF */ jal set_current_dialogue_background_colour -/* 0896B8 80088AB8 240700FF */ li $a3, 255 -/* 0896BC 80088ABC 10000009 */ b .L80088AE4 -/* 0896C0 80088AC0 24040006 */ li $a0, 6 -.L80088AC4: -/* 0896C4 80088AC4 240800E0 */ li $t0, 224 -/* 0896C8 80088AC8 AFA80010 */ sw $t0, 0x10($sp) -/* 0896CC 80088ACC 24040006 */ li $a0, 6 -/* 0896D0 80088AD0 24050060 */ li $a1, 96 -/* 0896D4 80088AD4 240600C0 */ li $a2, 192 -/* 0896D8 80088AD8 0C0313EF */ jal set_current_dialogue_background_colour -/* 0896DC 80088ADC 2407005C */ li $a3, 92 -/* 0896E0 80088AE0 24040006 */ li $a0, 6 -.L80088AE4: -/* 0896E4 80088AE4 0C0313DF */ jal set_dialogue_font -/* 0896E8 80088AE8 00002825 */ move $a1, $zero -/* 0896EC 80088AEC 240900FF */ li $t1, 255 -/* 0896F0 80088AF0 AFA90014 */ sw $t1, 0x14($sp) -/* 0896F4 80088AF4 24040006 */ li $a0, 6 -/* 0896F8 80088AF8 240500FF */ li $a1, 255 -/* 0896FC 80088AFC 240600FF */ li $a2, 255 -/* 089700 80088B00 240700FF */ li $a3, 255 -/* 089704 80088B04 0C031400 */ jal set_current_text_colour -/* 089708 80088B08 AFA00010 */ sw $zero, 0x10($sp) -/* 08970C 80088B0C 24040006 */ li $a0, 6 -/* 089710 80088B10 00002825 */ move $a1, $zero -/* 089714 80088B14 00003025 */ move $a2, $zero -/* 089718 80088B18 00003825 */ move $a3, $zero -/* 08971C 80088B1C 0C031414 */ jal set_current_text_background_colour -/* 089720 80088B20 AFA00010 */ sw $zero, 0x10($sp) -/* 089724 80088B24 3C0B8012 */ lui $t3, %hi(D_80126A68) # $t3, 0x8012 -/* 089728 80088B28 8D6B6A68 */ lw $t3, %lo(D_80126A68)($t3) -/* 08972C 80088B2C 8EEA0000 */ lw $t2, ($s7) -/* 089730 80088B30 000B6080 */ sll $t4, $t3, 2 -/* 089734 80088B34 014C6821 */ addu $t5, $t2, $t4 -/* 089738 80088B38 8DA70158 */ lw $a3, 0x158($t5) -/* 08973C 80088B3C 240E0001 */ li $t6, 1 -/* 089740 80088B40 240F0004 */ li $t7, 4 -/* 089744 80088B44 AFAF0014 */ sw $t7, 0x14($sp) -/* 089748 80088B48 AFAE0010 */ sw $t6, 0x10($sp) -/* 08974C 80088B4C 24040006 */ li $a0, 6 -/* 089750 80088B50 24058000 */ li $a1, -32768 -/* 089754 80088B54 0C03145A */ jal render_dialogue_text -/* 089758 80088B58 24060002 */ li $a2, 2 -/* 08975C 80088B5C 8EF80000 */ lw $t8, ($s7) -/* 089760 80088B60 3C198012 */ lui $t9, %hi(sCurrentControllerPakFreeSpace) # $t9, 0x8012 -/* 089764 80088B64 8F396BB0 */ lw $t9, %lo(sCurrentControllerPakFreeSpace)($t9) -/* 089768 80088B68 8F0701C8 */ lw $a3, 0x1c8($t8) -/* 08976C 80088B6C 24080004 */ li $t0, 4 -/* 089770 80088B70 AFA80014 */ sw $t0, 0x14($sp) -/* 089774 80088B74 24040006 */ li $a0, 6 -/* 089778 80088B78 24058000 */ li $a1, -32768 -/* 08977C 80088B7C 24060010 */ li $a2, 16 -/* 089780 80088B80 0C03145A */ jal render_dialogue_text -/* 089784 80088B84 AFB90010 */ sw $t9, 0x10($sp) -/* 089788 80088B88 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 08978C 80088B8C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089790 80088B90 00002825 */ move $a1, $zero -/* 089794 80088B94 00003025 */ move $a2, $zero -/* 089798 80088B98 0C0316D6 */ jal render_dialogue_box -/* 08979C 80088B9C 24070006 */ li $a3, 6 -/* 0897A0 80088BA0 26B50022 */ addiu $s5, $s5, 0x22 -/* 0897A4 80088BA4 24040006 */ li $a0, 6 -/* 0897A8 80088BA8 0C0313DF */ jal set_dialogue_font -/* 0897AC 80088BAC 24050001 */ li $a1, 1 -/* 0897B0 80088BB0 24040006 */ li $a0, 6 -/* 0897B4 80088BB4 00002825 */ move $a1, $zero -/* 0897B8 80088BB8 00003025 */ move $a2, $zero -/* 0897BC 80088BBC 00003825 */ move $a3, $zero -/* 0897C0 80088BC0 0C031414 */ jal set_current_text_background_colour -/* 0897C4 80088BC4 AFA00010 */ sw $zero, 0x10($sp) -/* 0897C8 80088BC8 3C028012 */ lui $v0, %hi(D_80126BB4) # $v0, 0x8012 -/* 0897CC 80088BCC 8C426BB4 */ lw $v0, %lo(D_80126BB4)($v0) -/* 0897D0 80088BD0 2411FFFF */ li $s1, -1 -/* 0897D4 80088BD4 04400077 */ bltz $v0, .L80088DB4 -/* 0897D8 80088BD8 00000000 */ nop -.L80088BDC: -/* 0897DC 80088BDC 0C031525 */ jal assign_dialogue_box_id -/* 0897E0 80088BE0 24040006 */ li $a0, 6 -/* 0897E4 80088BE4 26A9000E */ addiu $t1, $s5, 0xe -/* 0897E8 80088BE8 AFA90010 */ sw $t1, 0x10($sp) -/* 0897EC 80088BEC 24040006 */ li $a0, 6 -/* 0897F0 80088BF0 2405001C */ li $a1, 28 -/* 0897F4 80088BF4 02A03025 */ move $a2, $s5 -/* 0897F8 80088BF8 0C0313B7 */ jal set_current_dialogue_box_coords -/* 0897FC 80088BFC 24070124 */ li $a3, 292 -/* 089800 80088C00 0621001A */ bgez $s1, .L80088C6C -/* 089804 80088C04 3C0E800F */ lui $t6, %hi(D_800E820C) # $t6, 0x800f -/* 089808 80088C08 240B00E0 */ li $t3, 224 -/* 08980C 80088C0C AFAB0010 */ sw $t3, 0x10($sp) -/* 089810 80088C10 24040006 */ li $a0, 6 -/* 089814 80088C14 240500E0 */ li $a1, 224 -/* 089818 80088C18 24060030 */ li $a2, 48 -/* 08981C 80088C1C 24070030 */ li $a3, 48 -/* 089820 80088C20 0C0313EF */ jal set_current_dialogue_background_colour -/* 089824 80088C24 24130001 */ li $s3, 1 -/* 089828 80088C28 240A00FF */ li $t2, 255 -/* 08982C 80088C2C 240C00FF */ li $t4, 255 -/* 089830 80088C30 AFAC0014 */ sw $t4, 0x14($sp) -/* 089834 80088C34 AFAA0010 */ sw $t2, 0x10($sp) -/* 089838 80088C38 24040006 */ li $a0, 6 -/* 08983C 80088C3C 240500E0 */ li $a1, 224 -/* 089840 80088C40 240600E0 */ li $a2, 224 -/* 089844 80088C44 0C031400 */ jal set_current_text_colour -/* 089848 80088C48 24070030 */ li $a3, 48 -/* 08984C 80088C4C 8EE20000 */ lw $v0, ($s7) -/* 089850 80088C50 3C0D8012 */ lui $t5, %hi(D_801263D8) # $t5, 0x8012 -/* 089854 80088C54 8DAD63D8 */ lw $t5, %lo(D_801263D8)($t5) -/* 089858 80088C58 8C5201CC */ lw $s2, 0x1cc($v0) -/* 08985C 80088C5C 8C5001D0 */ lw $s0, 0x1d0($v0) -/* 089860 80088C60 8C5401D4 */ lw $s4, 0x1d4($v0) -/* 089864 80088C64 1000002E */ b .L80088D20 -/* 089868 80088C68 022D1821 */ addu $v1, $s1, $t5 -.L80088C6C: -/* 08986C 80088C6C 3C188012 */ lui $t8, %hi(D_801263D8) # $t8, 0x8012 -/* 089870 80088C70 8F1863D8 */ lw $t8, %lo(D_801263D8)($t8) -/* 089874 80088C74 3C0F800E */ lui $t7, %hi(D_800DF460) # $t7, 0x800e -/* 089878 80088C78 8DEFF460 */ lw $t7, %lo(D_800DF460)($t7) -/* 08987C 80088C7C 25D4820C */ addiu $s4, $t6, %lo(D_800E820C) -/* 089880 80088C80 0238C821 */ addu $t9, $s1, $t8 -/* 089884 80088C84 15F9000B */ bne $t7, $t9, .L80088CB4 -/* 089888 80088C88 02809025 */ move $s2, $s4 -/* 08988C 80088C8C 00164043 */ sra $t0, $s6, 1 -/* 089890 80088C90 25090080 */ addiu $t1, $t0, 0x80 -/* 089894 80088C94 AFA90010 */ sw $t1, 0x10($sp) -/* 089898 80088C98 24040006 */ li $a0, 6 -/* 08989C 80088C9C 240500FF */ li $a1, 255 -/* 0898A0 80088CA0 240600FF */ li $a2, 255 -/* 0898A4 80088CA4 0C0313EF */ jal set_current_dialogue_background_colour -/* 0898A8 80088CA8 240700FF */ li $a3, 255 -/* 0898AC 80088CAC 10000009 */ b .L80088CD4 -/* 0898B0 80088CB0 240A00FF */ li $t2, 255 -.L80088CB4: -/* 0898B4 80088CB4 240B00E0 */ li $t3, 224 -/* 0898B8 80088CB8 AFAB0010 */ sw $t3, 0x10($sp) -/* 0898BC 80088CBC 24040006 */ li $a0, 6 -/* 0898C0 80088CC0 240500E0 */ li $a1, 224 -/* 0898C4 80088CC4 240600E0 */ li $a2, 224 -/* 0898C8 80088CC8 0C0313EF */ jal set_current_dialogue_background_colour -/* 0898CC 80088CCC 24070030 */ li $a3, 48 -/* 0898D0 80088CD0 240A00FF */ li $t2, 255 -.L80088CD4: -/* 0898D4 80088CD4 240C00FF */ li $t4, 255 -/* 0898D8 80088CD8 AFAC0014 */ sw $t4, 0x14($sp) -/* 0898DC 80088CDC AFAA0010 */ sw $t2, 0x10($sp) -/* 0898E0 80088CE0 24040006 */ li $a0, 6 -/* 0898E4 80088CE4 24050010 */ li $a1, 16 -/* 0898E8 80088CE8 24060010 */ li $a2, 16 -/* 0898EC 80088CEC 0C031400 */ jal set_current_text_colour -/* 0898F0 80088CF0 240700A0 */ li $a3, 160 -/* 0898F4 80088CF4 3C0D8012 */ lui $t5, %hi(D_801263D8) # $t5, 0x8012 -/* 0898F8 80088CF8 8DAD63D8 */ lw $t5, %lo(D_801263D8)($t5) -/* 0898FC 80088CFC 3C108012 */ lui $s0, %hi(D_80126AA0) # $s0, 0x8012 -/* 089900 80088D00 01B11821 */ addu $v1, $t5, $s1 -/* 089904 80088D04 00031080 */ sll $v0, $v1, 2 -/* 089908 80088D08 3C138012 */ lui $s3, %hi(sCurrentControllerPakAllFileSizes) # $s3, 0x8012 -/* 08990C 80088D0C 02028021 */ addu $s0, $s0, $v0 -/* 089910 80088D10 02629821 */ addu $s3, $s3, $v0 -/* 089914 80088D14 8E106AA0 */ lw $s0, %lo(D_80126AA0)($s0) -/* 089918 80088D18 8E736B70 */ lw $s3, %lo(sCurrentControllerPakAllFileSizes)($s3) -/* 08991C 80088D1C 00000000 */ nop -.L80088D20: -/* 089920 80088D20 246E0001 */ addiu $t6, $v1, 1 -/* 089924 80088D24 24180004 */ li $t8, 4 -/* 089928 80088D28 AFB80014 */ sw $t8, 0x14($sp) -/* 08992C 80088D2C AFAE0010 */ sw $t6, 0x10($sp) -/* 089930 80088D30 24040006 */ li $a0, 6 -/* 089934 80088D34 2405001A */ li $a1, 26 -/* 089938 80088D38 24060002 */ li $a2, 2 -/* 08993C 80088D3C 0C03145A */ jal render_dialogue_text -/* 089940 80088D40 02403825 */ move $a3, $s2 -/* 089944 80088D44 240F0001 */ li $t7, 1 -/* 089948 80088D48 AFAF0010 */ sw $t7, 0x10($sp) -/* 08994C 80088D4C 24040006 */ li $a0, 6 -/* 089950 80088D50 24050038 */ li $a1, 56 -/* 089954 80088D54 24060002 */ li $a2, 2 -/* 089958 80088D58 02003825 */ move $a3, $s0 -/* 08995C 80088D5C 0C03145A */ jal render_dialogue_text -/* 089960 80088D60 AFA00014 */ sw $zero, 0x14($sp) -/* 089964 80088D64 24190004 */ li $t9, 4 -/* 089968 80088D68 AFB90014 */ sw $t9, 0x14($sp) -/* 08996C 80088D6C 24040006 */ li $a0, 6 -/* 089970 80088D70 240500F0 */ li $a1, 240 -/* 089974 80088D74 24060002 */ li $a2, 2 -/* 089978 80088D78 02803825 */ move $a3, $s4 -/* 08997C 80088D7C 0C03145A */ jal render_dialogue_text -/* 089980 80088D80 AFB30010 */ sw $s3, 0x10($sp) -/* 089984 80088D84 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089988 80088D88 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 08998C 80088D8C 00002825 */ move $a1, $zero -/* 089990 80088D90 00003025 */ move $a2, $zero -/* 089994 80088D94 0C0316D6 */ jal render_dialogue_box -/* 089998 80088D98 24070006 */ li $a3, 6 -/* 08999C 80088D9C 3C028012 */ lui $v0, %hi(D_80126BB4) # $v0, 0x8012 -/* 0899A0 80088DA0 8C426BB4 */ lw $v0, %lo(D_80126BB4)($v0) -/* 0899A4 80088DA4 26310001 */ addiu $s1, $s1, 1 -/* 0899A8 80088DA8 0222082A */ slt $at, $s1, $v0 -/* 0899AC 80088DAC 1420FF8B */ bnez $at, .L80088BDC -/* 0899B0 80088DB0 26B50010 */ addiu $s5, $s5, 0x10 -.L80088DB4: -/* 0899B4 80088DB4 3C088012 */ lui $t0, %hi(D_801263D8) # $t0, 0x8012 -/* 0899B8 80088DB8 8D0863D8 */ lw $t0, %lo(D_801263D8)($t0) -/* 0899BC 80088DBC 24100010 */ li $s0, 16 -/* 0899C0 80088DC0 02024823 */ subu $t1, $s0, $v0 -/* 0899C4 80088DC4 0109082A */ slt $at, $t0, $t1 -/* 0899C8 80088DC8 10200018 */ beqz $at, .L80088E2C -/* 0899CC 80088DCC 3C0B8012 */ lui $t3, %hi(D_801263BC) # $t3, 0x8012 -/* 0899D0 80088DD0 8D6B63BC */ lw $t3, %lo(D_801263BC)($t3) -/* 0899D4 80088DD4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 0899D8 80088DD8 316A0008 */ andi $t2, $t3, 8 -/* 0899DC 80088DDC 11400031 */ beqz $t2, .L80088EA4 -/* 0899E0 80088DE0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 0899E4 80088DE4 3C05800E */ lui $a1, %hi(D_800E043C) # $a1, 0x800e -/* 0899E8 80088DE8 240C00FF */ li $t4, 255 -/* 0899EC 80088DEC 240D00FF */ li $t5, 255 -/* 0899F0 80088DF0 240E00FF */ li $t6, 255 -/* 0899F4 80088DF4 241800FF */ li $t8, 255 -/* 0899F8 80088DF8 AFB8001C */ sw $t8, 0x1c($sp) -/* 0899FC 80088DFC AFAE0018 */ sw $t6, 0x18($sp) -/* 089A00 80088E00 AFAD0014 */ sw $t5, 0x14($sp) -/* 089A04 80088E04 AFAC0010 */ sw $t4, 0x10($sp) -/* 089A08 80088E08 24A5043C */ addiu $a1, %lo(D_800E043C) # addiu $a1, $a1, 0x43c -/* 089A0C 80088E0C 240600A0 */ li $a2, 160 -/* 089A10 80088E10 0C01E2AE */ jal render_textured_rectangle -/* 089A14 80088E14 26A70008 */ addiu $a3, $s5, 8 -/* 089A18 80088E18 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089A1C 80088E1C 0C01ECF4 */ jal func_8007B3D0 -/* 089A20 80088E20 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089A24 80088E24 1000001F */ b .L80088EA4 -/* 089A28 80088E28 00000000 */ nop -.L80088E2C: -/* 089A2C 80088E2C 0C0310BB */ jal set_text_font -/* 089A30 80088E30 00002025 */ move $a0, $zero -/* 089A34 80088E34 3C0F800E */ lui $t7, %hi(D_800DF460) # $t7, 0x800e -/* 089A38 80088E38 8DEFF460 */ lw $t7, %lo(D_800DF460)($t7) -/* 089A3C 80088E3C 240400FF */ li $a0, 255 -/* 089A40 80088E40 160F000A */ bne $s0, $t7, .L80088E6C -/* 089A44 80088E44 240500FF */ li $a1, 255 -/* 089A48 80088E48 241900FF */ li $t9, 255 -/* 089A4C 80088E4C AFB90010 */ sw $t9, 0x10($sp) -/* 089A50 80088E50 240400FF */ li $a0, 255 -/* 089A54 80088E54 240500FF */ li $a1, 255 -/* 089A58 80088E58 240600FF */ li $a2, 255 -/* 089A5C 80088E5C 0C0310E1 */ jal set_text_colour -/* 089A60 80088E60 02C03825 */ move $a3, $s6 -/* 089A64 80088E64 10000007 */ b .L80088E84 -/* 089A68 80088E68 8EE90000 */ lw $t1, ($s7) -.L80088E6C: -/* 089A6C 80088E6C 240800FF */ li $t0, 255 -/* 089A70 80088E70 AFA80010 */ sw $t0, 0x10($sp) -/* 089A74 80088E74 240600FF */ li $a2, 255 -/* 089A78 80088E78 0C0310E1 */ jal set_text_colour -/* 089A7C 80088E7C 00003825 */ move $a3, $zero -/* 089A80 80088E80 8EE90000 */ lw $t1, ($s7) -.L80088E84: -/* 089A84 80088E84 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089A88 80088E88 240B0004 */ li $t3, 4 -/* 089A8C 80088E8C 8D2700CC */ lw $a3, 0xcc($t1) -/* 089A90 80088E90 AFAB0010 */ sw $t3, 0x10($sp) -/* 089A94 80088E94 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089A98 80088E98 24058000 */ li $a1, -32768 -/* 089A9C 80088E9C 0C031110 */ jal draw_text -/* 089AA0 80088EA0 02A03025 */ move $a2, $s5 -.L80088EA4: -/* 089AA4 80088EA4 3C138012 */ lui $s3, %hi(D_801263E0) # $s3, 0x8012 -/* 089AA8 80088EA8 267363E0 */ addiu $s3, %lo(D_801263E0) # addiu $s3, $s3, 0x63e0 -/* 089AAC 80088EAC 8E6A0000 */ lw $t2, ($s3) -/* 089AB0 80088EB0 3C0C8012 */ lui $t4, %hi(D_80126C10) # $t4, 0x8012 -/* 089AB4 80088EB4 1140005D */ beqz $t2, .L8008902C -/* 089AB8 80088EB8 00000000 */ nop -/* 089ABC 80088EBC 8D8C6C10 */ lw $t4, %lo(D_80126C10)($t4) -/* 089AC0 80088EC0 3C0D8000 */ lui $t5, %hi(osTvType) # $t5, 0x8000 -/* 089AC4 80088EC4 15800059 */ bnez $t4, .L8008902C -/* 089AC8 80088EC8 00000000 */ nop -/* 089ACC 80088ECC 8DAD0300 */ lw $t5, %lo(osTvType)($t5) -/* 089AD0 80088ED0 24150078 */ li $s5, 120 -/* 089AD4 80088ED4 15A00003 */ bnez $t5, .L80088EE4 -/* 089AD8 80088ED8 00000000 */ nop -/* 089ADC 80088EDC 10000001 */ b .L80088EE4 -/* 089AE0 80088EE0 24150086 */ li $s5, 134 -.L80088EE4: -/* 089AE4 80088EE4 0C031525 */ jal assign_dialogue_box_id -/* 089AE8 80088EE8 24040006 */ li $a0, 6 -/* 089AEC 80088EEC 24040006 */ li $a0, 6 -/* 089AF0 80088EF0 0C0313DF */ jal set_dialogue_font -/* 089AF4 80088EF4 00002825 */ move $a1, $zero -/* 089AF8 80088EF8 26AE001C */ addiu $t6, $s5, 0x1c -/* 089AFC 80088EFC AFAE0010 */ sw $t6, 0x10($sp) -/* 089B00 80088F00 24040006 */ li $a0, 6 -/* 089B04 80088F04 2405004C */ li $a1, 76 -/* 089B08 80088F08 26A6FFE4 */ addiu $a2, $s5, -0x1c -/* 089B0C 80088F0C 0C0313B7 */ jal set_current_dialogue_box_coords -/* 089B10 80088F10 240700F4 */ li $a3, 244 -/* 089B14 80088F14 241800A0 */ li $t8, 160 -/* 089B18 80088F18 AFB80010 */ sw $t8, 0x10($sp) -/* 089B1C 80088F1C 24040006 */ li $a0, 6 -/* 089B20 80088F20 00002825 */ move $a1, $zero -/* 089B24 80088F24 00003025 */ move $a2, $zero -/* 089B28 80088F28 0C0313EF */ jal set_current_dialogue_background_colour -/* 089B2C 80088F2C 00003825 */ move $a3, $zero -/* 089B30 80088F30 24150004 */ li $s5, 4 -/* 089B34 80088F34 00008825 */ move $s1, $zero -/* 089B38 80088F38 00008025 */ move $s0, $zero -/* 089B3C 80088F3C 24120003 */ li $s2, 3 -.L80088F40: -/* 089B40 80088F40 1620000B */ bnez $s1, .L80088F70 -/* 089B44 80088F44 24040006 */ li $a0, 6 -/* 089B48 80088F48 240F0040 */ li $t7, 64 -/* 089B4C 80088F4C 241900FF */ li $t9, 255 -/* 089B50 80088F50 AFB90014 */ sw $t9, 0x14($sp) -/* 089B54 80088F54 AFAF0010 */ sw $t7, 0x10($sp) -/* 089B58 80088F58 240500FF */ li $a1, 255 -/* 089B5C 80088F5C 00003025 */ move $a2, $zero -/* 089B60 80088F60 0C031400 */ jal set_current_text_colour -/* 089B64 80088F64 240700FF */ li $a3, 255 -/* 089B68 80088F68 10000016 */ b .L80088FC4 -/* 089B6C 80088F6C 8EEA0000 */ lw $t2, ($s7) -.L80088F70: -/* 089B70 80088F70 8E680000 */ lw $t0, ($s3) -/* 089B74 80088F74 24040006 */ li $a0, 6 -/* 089B78 80088F78 1628000B */ bne $s1, $t0, .L80088FA8 -/* 089B7C 80088F7C 240500FF */ li $a1, 255 -/* 089B80 80088F80 240900FF */ li $t1, 255 -/* 089B84 80088F84 AFA90014 */ sw $t1, 0x14($sp) -/* 089B88 80088F88 24040006 */ li $a0, 6 -/* 089B8C 80088F8C 240500FF */ li $a1, 255 -/* 089B90 80088F90 240600FF */ li $a2, 255 -/* 089B94 80088F94 240700FF */ li $a3, 255 -/* 089B98 80088F98 0C031400 */ jal set_current_text_colour -/* 089B9C 80088F9C AFB60010 */ sw $s6, 0x10($sp) -/* 089BA0 80088FA0 10000008 */ b .L80088FC4 -/* 089BA4 80088FA4 8EEA0000 */ lw $t2, ($s7) -.L80088FA8: -/* 089BA8 80088FA8 240B00FF */ li $t3, 255 -/* 089BAC 80088FAC AFAB0014 */ sw $t3, 0x14($sp) -/* 089BB0 80088FB0 240600FF */ li $a2, 255 -/* 089BB4 80088FB4 240700FF */ li $a3, 255 -/* 089BB8 80088FB8 0C031400 */ jal set_current_text_colour -/* 089BBC 80088FBC AFA00010 */ sw $zero, 0x10($sp) -/* 089BC0 80088FC0 8EEA0000 */ lw $t2, ($s7) -.L80088FC4: -/* 089BC4 80088FC4 3C0D800E */ lui $t5, %hi(D_800DF460) # $t5, 0x800e -/* 089BC8 80088FC8 8DADF460 */ lw $t5, %lo(D_800DF460)($t5) -/* 089BCC 80088FCC 01506021 */ addu $t4, $t2, $s0 -/* 089BD0 80088FD0 8D8701BC */ lw $a3, 0x1bc($t4) -/* 089BD4 80088FD4 24180004 */ li $t8, 4 -/* 089BD8 80088FD8 25AE0001 */ addiu $t6, $t5, 1 -/* 089BDC 80088FDC AFAE0010 */ sw $t6, 0x10($sp) -/* 089BE0 80088FE0 AFB80014 */ sw $t8, 0x14($sp) -/* 089BE4 80088FE4 24040006 */ li $a0, 6 -/* 089BE8 80088FE8 24058000 */ li $a1, -32768 -/* 089BEC 80088FEC 0C03145A */ jal render_dialogue_text -/* 089BF0 80088FF0 02A03025 */ move $a2, $s5 -/* 089BF4 80088FF4 12200003 */ beqz $s1, .L80089004 -/* 089BF8 80088FF8 00000000 */ nop -/* 089BFC 80088FFC 10000002 */ b .L80089008 -/* 089C00 80089000 26B50010 */ addiu $s5, $s5, 0x10 -.L80089004: -/* 089C04 80089004 26B50014 */ addiu $s5, $s5, 0x14 -.L80089008: -/* 089C08 80089008 26310001 */ addiu $s1, $s1, 1 -/* 089C0C 8008900C 1632FFCC */ bne $s1, $s2, .L80088F40 -/* 089C10 80089010 26100004 */ addiu $s0, $s0, 4 -/* 089C14 80089014 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089C18 80089018 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089C1C 8008901C 00002825 */ move $a1, $zero -/* 089C20 80089020 00003025 */ move $a2, $zero -/* 089C24 80089024 0C0316D6 */ jal render_dialogue_box -/* 089C28 80089028 24070006 */ li $a3, 6 -.L8008902C: -/* 089C2C 8008902C 3C0F8012 */ lui $t7, %hi(D_80126C10) # $t7, 0x8012 -/* 089C30 80089030 8DEF6C10 */ lw $t7, %lo(D_80126C10)($t7) -/* 089C34 80089034 240400FF */ li $a0, 255 -/* 089C38 80089038 11E00011 */ beqz $t7, .L80089080 -/* 089C3C 8008903C 240500FF */ li $a1, 255 -/* 089C40 80089040 241900FF */ li $t9, 255 -/* 089C44 80089044 AFB90010 */ sw $t9, 0x10($sp) -/* 089C48 80089048 240600FF */ li $a2, 255 -/* 089C4C 8008904C 0C0310E1 */ jal set_text_colour -/* 089C50 80089050 00003825 */ move $a3, $zero -/* 089C54 80089054 0C0310BB */ jal set_text_font -/* 089C58 80089058 24040002 */ li $a0, 2 -/* 089C5C 8008905C 8EE80000 */ lw $t0, ($s7) -/* 089C60 80089060 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 089C64 80089064 2409000C */ li $t1, 12 -/* 089C68 80089068 8D0701F0 */ lw $a3, 0x1f0($t0) -/* 089C6C 8008906C AFA90010 */ sw $t1, 0x10($sp) -/* 089C70 80089070 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 089C74 80089074 240500A0 */ li $a1, 160 -/* 089C78 80089078 0C031110 */ jal draw_text -/* 089C7C 8008907C 24060080 */ li $a2, 128 -.L80089080: -/* 089C80 80089080 8FBF0044 */ lw $ra, 0x44($sp) -.L80089084: -/* 089C84 80089084 8FB00024 */ lw $s0, 0x24($sp) -/* 089C88 80089088 8FB10028 */ lw $s1, 0x28($sp) -/* 089C8C 8008908C 8FB2002C */ lw $s2, 0x2c($sp) -/* 089C90 80089090 8FB30030 */ lw $s3, 0x30($sp) -/* 089C94 80089094 8FB40034 */ lw $s4, 0x34($sp) -/* 089C98 80089098 8FB50038 */ lw $s5, 0x38($sp) -/* 089C9C 8008909C 8FB6003C */ lw $s6, 0x3c($sp) -/* 089CA0 800890A0 8FB70040 */ lw $s7, 0x40($sp) -/* 089CA4 800890A4 03E00008 */ jr $ra -/* 089CA8 800890A8 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/menu/func_800890AC.s b/asm/non_matchings/menu/func_800890AC.s deleted file mode 100644 index 526d9b2f..00000000 --- a/asm/non_matchings/menu/func_800890AC.s +++ /dev/null @@ -1,353 +0,0 @@ -glabel func_800890AC -/* 089CAC 800890AC 3C038012 */ lui $v1, %hi(D_801263BC) # $v1, 0x8012 -/* 089CB0 800890B0 246363BC */ addiu $v1, %lo(D_801263BC) # addiu $v1, $v1, 0x63bc -/* 089CB4 800890B4 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 089CB8 800890B8 8C6E0000 */ lw $t6, ($v1) -/* 089CBC 800890BC 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 089CC0 800890C0 8D220000 */ lw $v0, ($t1) -/* 089CC4 800890C4 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 089CC8 800890C8 01C47821 */ addu $t7, $t6, $a0 -/* 089CCC 800890CC 31F8003F */ andi $t8, $t7, 0x3f -/* 089CD0 800890D0 28410014 */ slti $at, $v0, 0x14 -/* 089CD4 800890D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 089CD8 800890D8 AFA00034 */ sw $zero, 0x34($sp) -/* 089CDC 800890DC AFA00030 */ sw $zero, 0x30($sp) -/* 089CE0 800890E0 AFA0002C */ sw $zero, 0x2c($sp) -/* 089CE4 800890E4 10200008 */ beqz $at, .L80089108 -/* 089CE8 800890E8 AC780000 */ sw $t8, ($v1) -/* 089CEC 800890EC 0C02224E */ jal func_80088938 -/* 089CF0 800890F0 AFA40048 */ sw $a0, 0x48($sp) -/* 089CF4 800890F4 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 089CF8 800890F8 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 089CFC 800890FC 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 089D00 80089100 8FA40048 */ lw $a0, 0x48($sp) -/* 089D04 80089104 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80089108: -/* 089D08 80089108 14400117 */ bnez $v0, .L80089568 -/* 089D0C 8008910C 00446021 */ addu $t4, $v0, $a0 -/* 089D10 80089110 3C038012 */ lui $v1, %hi(gControllersXAxisDirection) # $v1, 0x8012 -/* 089D14 80089114 3C058012 */ lui $a1, %hi(gControllersYAxisDirection) # $a1, 0x8012 -/* 089D18 80089118 00003025 */ move $a2, $zero -/* 089D1C 8008911C 00003825 */ move $a3, $zero -/* 089D20 80089120 00004025 */ move $t0, $zero -/* 089D24 80089124 24A56464 */ addiu $a1, %lo(gControllersYAxisDirection) # addiu $a1, $a1, 0x6464 -/* 089D28 80089128 2463645C */ addiu $v1, %lo(gControllersXAxisDirection) # addiu $v1, $v1, 0x645c -/* 089D2C 8008912C 00002025 */ move $a0, $zero -.L80089130: -/* 089D30 80089130 AFA3001C */ sw $v1, 0x1c($sp) -/* 089D34 80089134 AFA40044 */ sw $a0, 0x44($sp) -/* 089D38 80089138 AFA50018 */ sw $a1, 0x18($sp) -/* 089D3C 8008913C AFA60040 */ sw $a2, 0x40($sp) -/* 089D40 80089140 AFA7003C */ sw $a3, 0x3c($sp) -/* 089D44 80089144 0C01A955 */ jal get_buttons_pressed_from_player -/* 089D48 80089148 AFA80038 */ sw $t0, 0x38($sp) -/* 089D4C 8008914C 8FA3001C */ lw $v1, 0x1c($sp) -/* 089D50 80089150 8FA50018 */ lw $a1, 0x18($sp) -/* 089D54 80089154 8FA40044 */ lw $a0, 0x44($sp) -/* 089D58 80089158 8FA60040 */ lw $a2, 0x40($sp) -/* 089D5C 8008915C 8FA7003C */ lw $a3, 0x3c($sp) -/* 089D60 80089160 8FA80038 */ lw $t0, 0x38($sp) -/* 089D64 80089164 80790000 */ lb $t9, ($v1) -/* 089D68 80089168 80AC0000 */ lb $t4, ($a1) -/* 089D6C 8008916C 24010004 */ li $at, 4 -/* 089D70 80089170 24840001 */ addiu $a0, $a0, 1 -/* 089D74 80089174 24630001 */ addiu $v1, $v1, 1 -/* 089D78 80089178 24A50001 */ addiu $a1, $a1, 1 -/* 089D7C 8008917C 00C23025 */ or $a2, $a2, $v0 -/* 089D80 80089180 00F93821 */ addu $a3, $a3, $t9 -/* 089D84 80089184 1481FFEA */ bne $a0, $at, .L80089130 -/* 089D88 80089188 010C4021 */ addu $t0, $t0, $t4 -/* 089D8C 8008918C 3C028012 */ lui $v0, %hi(D_80126BC8) # $v0, 0x8012 -/* 089D90 80089190 8C426BC8 */ lw $v0, %lo(D_80126BC8)($v0) -/* 089D94 80089194 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 -/* 089D98 80089198 10400026 */ beqz $v0, .L80089234 -/* 089D9C 8008919C 254A63E0 */ addiu $t2, %lo(D_801263E0) # addiu $t2, $t2, 0x63e0 -/* 089DA0 800891A0 24010001 */ li $at, 1 -/* 089DA4 800891A4 104100DA */ beq $v0, $at, .L80089510 -/* 089DA8 800891A8 30CD9000 */ andi $t5, $a2, 0x9000 -/* 089DAC 800891AC 11A000D8 */ beqz $t5, .L80089510 -/* 089DB0 800891B0 240400EF */ li $a0, 239 -/* 089DB4 800891B4 0C000741 */ jal play_sound_global -/* 089DB8 800891B8 00002825 */ move $a1, $zero -/* 089DBC 800891BC 3C048012 */ lui $a0, %hi(D_80126A68) # $a0, 0x8012 -/* 089DC0 800891C0 24846A68 */ addiu $a0, %lo(D_80126A68) # addiu $a0, $a0, 0x6a68 -/* 089DC4 800891C4 0C021FC5 */ jal func_80087F14 -/* 089DC8 800891C8 00002825 */ move $a1, $zero -/* 089DCC 800891CC 14400003 */ bnez $v0, .L800891DC -/* 089DD0 800891D0 3C018012 */ lui $at, %hi(D_80126BC8) # $at, 0x8012 -/* 089DD4 800891D4 10000006 */ b .L800891F0 -/* 089DD8 800891D8 AC206BC8 */ sw $zero, %lo(D_80126BC8)($at) -.L800891DC: -/* 089DDC 800891DC 0C0220CB */ jal func_8008832C -/* 089DE0 800891E0 00000000 */ nop -/* 089DE4 800891E4 14400002 */ bnez $v0, .L800891F0 -/* 089DE8 800891E8 3C01800E */ lui $at, %hi(gShowControllerPakMenu) # $at, 0x800e -/* 089DEC 800891EC AC20FD94 */ sw $zero, %lo(gShowControllerPakMenu)($at) -.L800891F0: -/* 089DF0 800891F0 3C0E8012 */ lui $t6, %hi(D_80126BC8) # $t6, 0x8012 -/* 089DF4 800891F4 8DCE6BC8 */ lw $t6, %lo(D_80126BC8)($t6) -/* 089DF8 800891F8 3C0F800E */ lui $t7, %hi(gShowControllerPakMenu) # $t7, 0x800e -/* 089DFC 800891FC 15C000C4 */ bnez $t6, .L80089510 -/* 089E00 80089200 00000000 */ nop -/* 089E04 80089204 8DEFFD94 */ lw $t7, %lo(gShowControllerPakMenu)($t7) -/* 089E08 80089208 24180001 */ li $t8, 1 -/* 089E0C 8008920C 15E000C0 */ bnez $t7, .L80089510 -/* 089E10 80089210 24190001 */ li $t9, 1 -/* 089E14 80089214 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 089E18 80089218 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 089E1C 8008921C AFB80030 */ sw $t8, 0x30($sp) -/* 089E20 80089220 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -/* 089E24 80089224 0C030076 */ jal func_800C01D8 -/* 089E28 80089228 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 089E2C 8008922C 100000B9 */ b .L80089514 -/* 089E30 80089230 8FAF0030 */ lw $t7, 0x30($sp) -.L80089234: -/* 089E34 80089234 8D420000 */ lw $v0, ($t2) -/* 089E38 80089238 3C048012 */ lui $a0, %hi(D_80126C10) # $a0, 0x8012 -/* 089E3C 8008923C 10400051 */ beqz $v0, .L80089384 -/* 089E40 80089240 30D84000 */ andi $t8, $a2, 0x4000 -/* 089E44 80089244 24846C10 */ addiu $a0, %lo(D_80126C10) # addiu $a0, $a0, 0x6c10 -/* 089E48 80089248 8C830000 */ lw $v1, ($a0) -/* 089E4C 8008924C 30CD4000 */ andi $t5, $a2, 0x4000 -/* 089E50 80089250 1060002C */ beqz $v1, .L80089304 -/* 089E54 80089254 246CFFFF */ addiu $t4, $v1, -1 -/* 089E58 80089258 158000AD */ bnez $t4, .L80089510 -/* 089E5C 8008925C AC8C0000 */ sw $t4, ($a0) -/* 089E60 80089260 3C09800E */ lui $t1, %hi(D_800DF460) # $t1, 0x800e -/* 089E64 80089264 2529F460 */ addiu $t1, %lo(D_800DF460) # addiu $t1, $t1, -0xba0 -/* 089E68 80089268 3C048012 */ lui $a0, %hi(D_80126A68) # $a0, 0x8012 -/* 089E6C 8008926C 8C846A68 */ lw $a0, %lo(D_80126A68)($a0) -/* 089E70 80089270 8D250000 */ lw $a1, ($t1) -/* 089E74 80089274 0C01D8B2 */ jal delete_file -/* 089E78 80089278 AFA7003C */ sw $a3, 0x3c($sp) -/* 089E7C 8008927C 8FA7003C */ lw $a3, 0x3c($sp) -/* 089E80 80089280 1040000C */ beqz $v0, .L800892B4 -/* 089E84 80089284 24180001 */ li $t8, 1 -/* 089E88 80089288 240E0001 */ li $t6, 1 -/* 089E8C 8008928C 240F0001 */ li $t7, 1 -/* 089E90 80089290 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 089E94 80089294 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 089E98 80089298 AFAE0030 */ sw $t6, 0x30($sp) -/* 089E9C 8008929C AC2FF47C */ sw $t7, %lo(gMenuDelay)($at) -/* 089EA0 800892A0 0C030076 */ jal func_800C01D8 -/* 089EA4 800892A4 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 089EA8 800892A8 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 -/* 089EAC 800892AC 10000013 */ b .L800892FC -/* 089EB0 800892B0 254A63E0 */ addiu $t2, %lo(D_801263E0) # addiu $t2, $t2, 0x63e0 -.L800892B4: -/* 089EB4 800892B4 3C048012 */ lui $a0, %hi(D_80126A68) # $a0, 0x8012 -/* 089EB8 800892B8 AFB8002C */ sw $t8, 0x2c($sp) -/* 089EBC 800892BC 24846A68 */ addiu $a0, %lo(D_80126A68) # addiu $a0, $a0, 0x6a68 -/* 089EC0 800892C0 0C021FC5 */ jal func_80087F14 -/* 089EC4 800892C4 00E02825 */ move $a1, $a3 -/* 089EC8 800892C8 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 -/* 089ECC 800892CC 1040000B */ beqz $v0, .L800892FC -/* 089ED0 800892D0 254A63E0 */ addiu $t2, %lo(D_801263E0) # addiu $t2, $t2, 0x63e0 -/* 089ED4 800892D4 24190001 */ li $t9, 1 -/* 089ED8 800892D8 240C0001 */ li $t4, 1 -/* 089EDC 800892DC 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 089EE0 800892E0 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 089EE4 800892E4 AFB90030 */ sw $t9, 0x30($sp) -/* 089EE8 800892E8 AC2CF47C */ sw $t4, %lo(gMenuDelay)($at) -/* 089EEC 800892EC 0C030076 */ jal func_800C01D8 -/* 089EF0 800892F0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 089EF4 800892F4 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 -/* 089EF8 800892F8 254A63E0 */ addiu $t2, %lo(D_801263E0) # addiu $t2, $t2, 0x63e0 -.L800892FC: -/* 089EFC 800892FC 10000084 */ b .L80089510 -/* 089F00 80089300 AD400000 */ sw $zero, ($t2) -.L80089304: -/* 089F04 80089304 11A00005 */ beqz $t5, .L8008931C -/* 089F08 80089308 30CF9000 */ andi $t7, $a2, 0x9000 -/* 089F0C 8008930C 240E0001 */ li $t6, 1 -/* 089F10 80089310 AFAE0030 */ sw $t6, 0x30($sp) -/* 089F14 80089314 1000007E */ b .L80089510 -/* 089F18 80089318 AD400000 */ sw $zero, ($t2) -.L8008931C: -/* 089F1C 8008931C 11E00009 */ beqz $t7, .L80089344 -/* 089F20 80089320 24010001 */ li $at, 1 -/* 089F24 80089324 14410003 */ bne $v0, $at, .L80089334 -/* 089F28 80089328 24180003 */ li $t8, 3 -/* 089F2C 8008932C 10000078 */ b .L80089510 -/* 089F30 80089330 AC980000 */ sw $t8, ($a0) -.L80089334: -/* 089F34 80089334 24190001 */ li $t9, 1 -/* 089F38 80089338 AFB90030 */ sw $t9, 0x30($sp) -/* 089F3C 8008933C 10000074 */ b .L80089510 -/* 089F40 80089340 AD400000 */ sw $zero, ($t2) -.L80089344: -/* 089F44 80089344 19000007 */ blez $t0, .L80089364 -/* 089F48 80089348 28410002 */ slti $at, $v0, 2 -/* 089F4C 8008934C 14200005 */ bnez $at, .L80089364 -/* 089F50 80089350 240C0001 */ li $t4, 1 -/* 089F54 80089354 240D0001 */ li $t5, 1 -/* 089F58 80089358 AD4C0000 */ sw $t4, ($t2) -/* 089F5C 8008935C 1000006C */ b .L80089510 -/* 089F60 80089360 AFAD0034 */ sw $t5, 0x34($sp) -.L80089364: -/* 089F64 80089364 0501006A */ bgez $t0, .L80089510 -/* 089F68 80089368 28410002 */ slti $at, $v0, 2 -/* 089F6C 8008936C 10200068 */ beqz $at, .L80089510 -/* 089F70 80089370 240E0002 */ li $t6, 2 -/* 089F74 80089374 240F0001 */ li $t7, 1 -/* 089F78 80089378 AD4E0000 */ sw $t6, ($t2) -/* 089F7C 8008937C 10000064 */ b .L80089510 -/* 089F80 80089380 AFAF0034 */ sw $t7, 0x34($sp) -.L80089384: -/* 089F84 80089384 17000007 */ bnez $t8, .L800893A4 -/* 089F88 80089388 3C09800E */ lui $t1, %hi(D_800DF460) # $t1, 0x800e -/* 089F8C 8008938C 2529F460 */ addiu $t1, %lo(D_800DF460) # addiu $t1, $t1, -0xba0 -/* 089F90 80089390 8D230000 */ lw $v1, ($t1) -/* 089F94 80089394 240B0010 */ li $t3, 16 -/* 089F98 80089398 1563000C */ bne $t3, $v1, .L800893CC -/* 089F9C 8008939C 30D99000 */ andi $t9, $a2, 0x9000 -/* 089FA0 800893A0 1320000A */ beqz $t9, .L800893CC -.L800893A4: -/* 089FA4 800893A4 240C0001 */ li $t4, 1 -/* 089FA8 800893A8 240D0001 */ li $t5, 1 -/* 089FAC 800893AC 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 089FB0 800893B0 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 089FB4 800893B4 AFAC0030 */ sw $t4, 0x30($sp) -/* 089FB8 800893B8 AC2DF47C */ sw $t5, %lo(gMenuDelay)($at) -/* 089FBC 800893BC 0C030076 */ jal func_800C01D8 -/* 089FC0 800893C0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 089FC4 800893C4 10000053 */ b .L80089514 -/* 089FC8 800893C8 8FAF0030 */ lw $t7, 0x30($sp) -.L800893CC: -/* 089FCC 800893CC 2401FFFF */ li $at, -1 -/* 089FD0 800893D0 10610005 */ beq $v1, $at, .L800893E8 -/* 089FD4 800893D4 00000000 */ nop -/* 089FD8 800893D8 106B0008 */ beq $v1, $t3, .L800893FC -/* 089FDC 800893DC 00000000 */ nop -/* 089FE0 800893E0 1000000C */ b .L80089414 -/* 089FE4 800893E4 30C29000 */ andi $v0, $a2, 0x9000 -.L800893E8: -/* 089FE8 800893E8 05010049 */ bgez $t0, .L80089510 -/* 089FEC 800893EC 240E0001 */ li $t6, 1 -/* 089FF0 800893F0 AD200000 */ sw $zero, ($t1) -/* 089FF4 800893F4 10000046 */ b .L80089510 -/* 089FF8 800893F8 AFAE0034 */ sw $t6, 0x34($sp) -.L800893FC: -/* 089FFC 800893FC 19000044 */ blez $t0, .L80089510 -/* 08A000 80089400 240F000F */ li $t7, 15 -/* 08A004 80089404 24180001 */ li $t8, 1 -/* 08A008 80089408 AD2F0000 */ sw $t7, ($t1) -/* 08A00C 8008940C 10000040 */ b .L80089510 -/* 08A010 80089410 AFB80034 */ sw $t8, 0x34($sp) -.L80089414: -/* 08A014 80089414 10400013 */ beqz $v0, .L80089464 -/* 08A018 80089418 3C028012 */ lui $v0, %hi(sCurrentControllerPakAllFileTypes) # $v0, 0x8012 -/* 08A01C 8008941C 00431021 */ addu $v0, $v0, $v1 -/* 08A020 80089420 90426B60 */ lbu $v0, %lo(sCurrentControllerPakAllFileTypes)($v0) -/* 08A024 80089424 00000000 */ nop -/* 08A028 80089428 28410003 */ slti $at, $v0, 3 -/* 08A02C 8008942C 1420000A */ bnez $at, .L80089458 -/* 08A030 80089430 28410007 */ slti $at, $v0, 7 -/* 08A034 80089434 10200008 */ beqz $at, .L80089458 -/* 08A038 80089438 3C048012 */ lui $a0, %hi(D_80126C10) # $a0, 0x8012 -/* 08A03C 8008943C 24846C10 */ addiu $a0, %lo(D_80126C10) # addiu $a0, $a0, 0x6c10 -/* 08A040 80089440 24190002 */ li $t9, 2 -/* 08A044 80089444 240C0001 */ li $t4, 1 -/* 08A048 80089448 AC800000 */ sw $zero, ($a0) -/* 08A04C 8008944C AD590000 */ sw $t9, ($t2) -/* 08A050 80089450 10000015 */ b .L800894A8 -/* 08A054 80089454 AFAC002C */ sw $t4, 0x2c($sp) -.L80089458: -/* 08A058 80089458 240D0001 */ li $t5, 1 -/* 08A05C 8008945C 10000012 */ b .L800894A8 -/* 08A060 80089460 AFAD0030 */ sw $t5, 0x30($sp) -.L80089464: -/* 08A064 80089464 1900000A */ blez $t0, .L80089490 -/* 08A068 80089468 246EFFFF */ addiu $t6, $v1, -1 -/* 08A06C 8008946C AD2E0000 */ sw $t6, ($t1) -/* 08A070 80089470 05C10004 */ bgez $t6, .L80089484 -/* 08A074 80089474 01C01825 */ move $v1, $t6 -/* 08A078 80089478 AD200000 */ sw $zero, ($t1) -/* 08A07C 8008947C 1000000A */ b .L800894A8 -/* 08A080 80089480 00001825 */ move $v1, $zero -.L80089484: -/* 08A084 80089484 240F0001 */ li $t7, 1 -/* 08A088 80089488 10000007 */ b .L800894A8 -/* 08A08C 8008948C AFAF0034 */ sw $t7, 0x34($sp) -.L80089490: -/* 08A090 80089490 05010005 */ bgez $t0, .L800894A8 -/* 08A094 80089494 24780001 */ addiu $t8, $v1, 1 -/* 08A098 80089498 24190001 */ li $t9, 1 -/* 08A09C 8008949C AD380000 */ sw $t8, ($t1) -/* 08A0A0 800894A0 AFB90034 */ sw $t9, 0x34($sp) -/* 08A0A4 800894A4 03001825 */ move $v1, $t8 -.L800894A8: -/* 08A0A8 800894A8 3C058012 */ lui $a1, %hi(D_801263D8) # $a1, 0x8012 -/* 08A0AC 800894AC 24A563D8 */ addiu $a1, %lo(D_801263D8) # addiu $a1, $a1, 0x63d8 -/* 08A0B0 800894B0 3C048012 */ lui $a0, %hi(D_80126BB4) # $a0, 0x8012 -/* 08A0B4 800894B4 8C846BB4 */ lw $a0, %lo(D_80126BB4)($a0) -/* 08A0B8 800894B8 8CA20000 */ lw $v0, ($a1) -/* 08A0BC 800894BC 00646823 */ subu $t5, $v1, $a0 -/* 08A0C0 800894C0 00446021 */ addu $t4, $v0, $a0 -/* 08A0C4 800894C4 006C082A */ slt $at, $v1, $t4 -/* 08A0C8 800894C8 14200004 */ bnez $at, .L800894DC -/* 08A0CC 800894CC 0062082A */ slt $at, $v1, $v0 -/* 08A0D0 800894D0 25A20001 */ addiu $v0, $t5, 1 -/* 08A0D4 800894D4 ACA20000 */ sw $v0, ($a1) -/* 08A0D8 800894D8 0062082A */ slt $at, $v1, $v0 -.L800894DC: -/* 08A0DC 800894DC 10200003 */ beqz $at, .L800894EC -/* 08A0E0 800894E0 00000000 */ nop -/* 08A0E4 800894E4 ACA30000 */ sw $v1, ($a1) -/* 08A0E8 800894E8 00601025 */ move $v0, $v1 -.L800894EC: -/* 08A0EC 800894EC 01641823 */ subu $v1, $t3, $a0 -/* 08A0F0 800894F0 0062082A */ slt $at, $v1, $v0 -/* 08A0F4 800894F4 10200003 */ beqz $at, .L80089504 -/* 08A0F8 800894F8 00000000 */ nop -/* 08A0FC 800894FC ACA30000 */ sw $v1, ($a1) -/* 08A100 80089500 00601025 */ move $v0, $v1 -.L80089504: -/* 08A104 80089504 04410003 */ bgez $v0, .L80089514 -/* 08A108 80089508 8FAF0030 */ lw $t7, 0x30($sp) -/* 08A10C 8008950C ACA00000 */ sw $zero, ($a1) -.L80089510: -/* 08A110 80089510 8FAF0030 */ lw $t7, 0x30($sp) -.L80089514: -/* 08A114 80089514 8FB8002C */ lw $t8, 0x2c($sp) -/* 08A118 80089518 11E00005 */ beqz $t7, .L80089530 -/* 08A11C 8008951C 24040241 */ li $a0, 577 -/* 08A120 80089520 0C000741 */ jal play_sound_global -/* 08A124 80089524 00002825 */ move $a1, $zero -/* 08A128 80089528 1000001B */ b .L80089598 -/* 08A12C 8008952C 8FBF0014 */ lw $ra, 0x14($sp) -.L80089530: -/* 08A130 80089530 13000005 */ beqz $t8, .L80089548 -/* 08A134 80089534 240400EF */ li $a0, 239 -/* 08A138 80089538 0C000741 */ jal play_sound_global -/* 08A13C 8008953C 00002825 */ move $a1, $zero -/* 08A140 80089540 10000015 */ b .L80089598 -/* 08A144 80089544 8FBF0014 */ lw $ra, 0x14($sp) -.L80089548: -/* 08A148 80089548 8FB90034 */ lw $t9, 0x34($sp) -/* 08A14C 8008954C 240400EB */ li $a0, 235 -/* 08A150 80089550 13200011 */ beqz $t9, .L80089598 -/* 08A154 80089554 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A158 80089558 0C000741 */ jal play_sound_global -/* 08A15C 8008955C 00002825 */ move $a1, $zero -/* 08A160 80089560 1000000D */ b .L80089598 -/* 08A164 80089564 8FBF0014 */ lw $ra, 0x14($sp) -.L80089568: -/* 08A168 80089568 29810024 */ slti $at, $t4, 0x24 -/* 08A16C 8008956C 14200009 */ bnez $at, .L80089594 -/* 08A170 80089570 AD2C0000 */ sw $t4, ($t1) -/* 08A174 80089574 0C022569 */ jal func_800895A4 -/* 08A178 80089578 00000000 */ nop -/* 08A17C 8008957C 0C0204F4 */ jal menu_init -/* 08A180 80089580 24040001 */ li $a0, 1 -/* 08A184 80089584 24040015 */ li $a0, 21 -/* 08A188 80089588 2405FFFF */ li $a1, -1 -/* 08A18C 8008958C 0C01B8BA */ jal load_level_for_menu -/* 08A190 80089590 00003025 */ move $a2, $zero -.L80089594: -/* 08A194 80089594 8FBF0014 */ lw $ra, 0x14($sp) -.L80089598: -/* 08A198 80089598 27BD0048 */ addiu $sp, $sp, 0x48 -/* 08A19C 8008959C 03E00008 */ jr $ra -/* 08A1A0 800895A0 00001025 */ move $v0, $zero - diff --git a/asm/non_matchings/menu/menu_file_select_loop.s b/asm/non_matchings/menu/menu_file_select_loop.s index 0baabf34..be120412 100644 --- a/asm/non_matchings/menu/menu_file_select_loop.s +++ b/asm/non_matchings/menu/menu_file_select_loop.s @@ -147,7 +147,7 @@ glabel menu_file_select_loop /* 08EC8C 8008E08C 25CE64A0 */ addiu $t6, %lo(gSavefileInfo) # addiu $t6, $t6, 0x64a0 /* 08EC90 8008E090 000D6880 */ sll $t5, $t5, 2 /* 08EC94 8008E094 01AE1021 */ addu $v0, $t5, $t6 -/* 08EC98 8008E098 0C02607A */ jal func_800981E8 +/* 08EC98 8008E098 0C02607A */ jal unload_big_font_4 /* 08EC9C 8008E09C AFA20030 */ sw $v0, 0x30($sp) /* 08ECA0 8008E0A0 8FA20030 */ lw $v0, 0x30($sp) /* 08ECA4 8008E0A4 3C018012 */ lui $at, %hi(D_80126CC0) # $at, 0x8012 @@ -166,7 +166,7 @@ glabel menu_file_select_loop /* 08ECD4 8008E0D4 00000000 */ nop /* 08ECD8 8008E0D8 1040006C */ beqz $v0, .L8008E28C /* 08ECDC 8008E0DC 00000000 */ nop -/* 08ECE0 8008E0E0 0C02607A */ jal func_800981E8 +/* 08ECE0 8008E0E0 0C02607A */ jal unload_big_font_4 /* 08ECE4 8008E0E4 00000000 */ nop /* 08ECE8 8008E0E8 3C0C800E */ lui $t4, %hi(gSaveFileIndex) # $t4, 0x800e /* 08ECEC 8008E0EC 8D8CF4CC */ lw $t4, %lo(gSaveFileIndex)($t4) diff --git a/asm/non_matchings/menu/menu_magic_codes_loop.s b/asm/non_matchings/menu/menu_magic_codes_loop.s index 4ba64859..3a26fa2f 100644 --- a/asm/non_matchings/menu/menu_magic_codes_loop.s +++ b/asm/non_matchings/menu/menu_magic_codes_loop.s @@ -527,7 +527,7 @@ glabel menu_magic_codes_loop /* 08B030 8008A430 14200022 */ bnez $at, .L8008A4BC /* 08B034 8008A434 8FBF0014 */ lw $ra, 0x14($sp) .L8008A438: -/* 08B038 8008A438 0C022932 */ jal func_8008A4C8 +/* 08B038 8008A438 0C022932 */ jal unload_big_font_2 /* 08B03C 8008A43C 00000000 */ nop /* 08B040 8008A440 3C19800E */ lui $t9, %hi(gMenuDelay) # $t9, 0x800e /* 08B044 8008A444 8F39F47C */ lw $t9, %lo(gMenuDelay)($t9) diff --git a/asm/non_matchings/menu/menu_options_loop.s b/asm/non_matchings/menu/menu_options_loop.s index 81e57241..0bc713d5 100644 --- a/asm/non_matchings/menu/menu_options_loop.s +++ b/asm/non_matchings/menu/menu_options_loop.s @@ -26,7 +26,7 @@ glabel menu_options_loop /* 084FB4 800843B4 28410023 */ slti $at, $v0, 0x23 /* 084FB8 800843B8 10200005 */ beqz $at, .L800843D0 /* 084FBC 800843BC 00000000 */ nop -/* 084FC0 800843C0 0C02106E */ jal func_800841B8 +/* 084FC0 800843C0 0C02106E */ jal render_options_menu_ui /* 084FC4 800843C4 00000000 */ nop /* 084FC8 800843C8 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e /* 084FCC 800843CC 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 @@ -224,7 +224,7 @@ glabel menu_options_loop /* 085290 80084690 24010002 */ li $at, 2 /* 085294 80084694 14410008 */ bne $v0, $at, .L800846B8 /* 085298 80084698 24010003 */ li $at, 3 -/* 08529C 8008469C 0C0211CD */ jal func_80084734 +/* 08529C 8008469C 0C0211CD */ jal unload_big_font_1 /* 0852A0 800846A0 00000000 */ nop /* 0852A4 800846A4 0C0204F4 */ jal menu_init /* 0852A8 800846A8 2404000D */ li $a0, 13 @@ -234,14 +234,14 @@ glabel menu_options_loop .L800846B8: /* 0852B8 800846B8 14410007 */ bne $v0, $at, .L800846D8 /* 0852BC 800846BC 00000000 */ nop -/* 0852C0 800846C0 0C0211CD */ jal func_80084734 +/* 0852C0 800846C0 0C0211CD */ jal unload_big_font_1 /* 0852C4 800846C4 00000000 */ nop /* 0852C8 800846C8 0C0204F4 */ jal menu_init /* 0852CC 800846CC 2404000E */ li $a0, 14 /* 0852D0 800846D0 10000014 */ b .L80084724 /* 0852D4 800846D4 00001025 */ move $v0, $zero .L800846D8: -/* 0852D8 800846D8 0C0211CD */ jal func_80084734 +/* 0852D8 800846D8 0C0211CD */ jal unload_big_font_1 /* 0852DC 800846DC 00000000 */ nop /* 0852E0 800846E0 0C0204F4 */ jal menu_init /* 0852E4 800846E4 2404000A */ li $a0, 10 @@ -253,7 +253,7 @@ glabel menu_options_loop /* 0852F8 800846F8 00001025 */ move $v0, $zero /* 0852FC 800846FC 0C0002CA */ jal func_80000B28 /* 085300 80084700 00000000 */ nop -/* 085304 80084704 0C0211CD */ jal func_80084734 +/* 085304 80084704 0C0211CD */ jal unload_big_font_1 /* 085308 80084708 00000000 */ nop /* 08530C 8008470C 0C0204F4 */ jal menu_init /* 085310 80084710 00002025 */ move $a0, $zero diff --git a/src/fade_transition.h b/src/fade_transition.h index b500a2e8..40b5523a 100644 --- a/src/fade_transition.h +++ b/src/fade_transition.h @@ -26,12 +26,12 @@ enum TransitionStatus { /* Size: 8 bytes */ typedef struct FadeTransition { - u8 type; // top 2 bits also act as flags - u8 red; - u8 green; - u8 blue; - u16 duration; - u16 unk6; + /* 0x00 */ u8 type; // top 2 bits also act as flags + /* 0x01 */ u8 red; + /* 0x02 */ u8 green; + /* 0x03 */ u8 blue; + /* 0x04 */ u16 duration; + /* 0x06 */ u16 unk6; } FadeTransition; extern u32 osTvType; diff --git a/src/font.c b/src/font.c index dd06ba1d..d1779f78 100644 --- a/src/font.c +++ b/src/font.c @@ -72,9 +72,9 @@ OSDevMgr __osPiDevMgr = { 0, NULL, NULL, NULL, NULL, NULL, NULL, }; s32 gNumberOfFonts; FontData *gFonts; -DialogueBoxBackground (*gDialogueBoxBackground)[1]; -unk8012A7EC (*D_8012A7EC)[1]; -s32 D_8012A7F0; +DialogueBoxBackground *gDialogueBoxBackground; +unk8012A7EC *D_8012A7EC; +s32 D_8012A7F0; //Boolean value, seems to be related to X placement of menus on the X Axis? s8 sDialogueBoxCloseTimer; s32 D_8012A7F8; s32 D_8012A7FC; @@ -98,56 +98,52 @@ void load_fonts(void) { gFonts[i].unk28[0] = 0; } - gDialogueBoxBackground = allocate_from_main_pool_safe(DIALOGUEBOXBACKGROUND_TOTAL_SIZE + unk8012A7EC_TOTAL_SIZE, COLOUR_TAG_YELLOW); - D_8012A7EC = (unk8012A7EC *)((u8 *)gDialogueBoxBackground + DIALOGUEBOXBACKGROUND_TOTAL_SIZE); + gDialogueBoxBackground = (DialogueBoxBackground *)allocate_from_main_pool_safe(DIALOGUEBOXBACKGROUND_TOTAL_SIZE + unk8012A7EC_TOTAL_SIZE, COLOUR_TAG_YELLOW); + D_8012A7EC = (unk8012A7EC *)&gDialogueBoxBackground[DIALOGUEBOXBACKGROUND_COUNT]; for (i = 0; i < DIALOGUEBOXBACKGROUND_COUNT; i++) { - (*gDialogueBoxBackground)[i].xpos = 0; - (*gDialogueBoxBackground)[i].ypos = 0; - (*gDialogueBoxBackground)[i].x1 = 0; - (*gDialogueBoxBackground)[i].y1 = 0; - (*gDialogueBoxBackground)[i].x2 = SCREEN_WIDTH - 1; - (*gDialogueBoxBackground)[i].y2 = SCREEN_HEIGHT - 1; - (*gDialogueBoxBackground)[i].width = SCREEN_WIDTH; - (*gDialogueBoxBackground)[i].height = SCREEN_HEIGHT; - (*gDialogueBoxBackground)[i].backgroundColourR = 0xFF; - (*gDialogueBoxBackground)[i].backgroundColourG = 0xFF; - (*gDialogueBoxBackground)[i].backgroundColourB = 0xFF; - (*gDialogueBoxBackground)[i].backgroundColourA = 0; - (*gDialogueBoxBackground)[i].textColourR = 0xFF; - (*gDialogueBoxBackground)[i].textColourG = 0xFF; - (*gDialogueBoxBackground)[i].textColourB = 0xFF; - (*gDialogueBoxBackground)[i].textColourA = 0; - (*gDialogueBoxBackground)[i].textBGColourR = 0xFF; - (*gDialogueBoxBackground)[i].textBGColourG = 0xFF; - (*gDialogueBoxBackground)[i].textBGColourB = 0xFF; - (*gDialogueBoxBackground)[i].textBGColourA = 0; - (*gDialogueBoxBackground)[i].opacity = 0xFF; - (*gDialogueBoxBackground)[i].font = FONT_UNK_FF; - if (i != 0) { - (*gDialogueBoxBackground)[i].flags = DIALOGUE_BOX_UNK_01; - } else { - (*gDialogueBoxBackground)[i].flags = 0; - } - (*gDialogueBoxBackground)[i].unk20 = 0; - (*gDialogueBoxBackground)[i].unk22 = 0; - (*gDialogueBoxBackground)[i].textBox = 0; + gDialogueBoxBackground[i].xpos = 0; + gDialogueBoxBackground[i].ypos = 0; + gDialogueBoxBackground[i].x1 = 0; + gDialogueBoxBackground[i].y1 = 0; + gDialogueBoxBackground[i].x2 = SCREEN_WIDTH - 1; + gDialogueBoxBackground[i].y2 = SCREEN_HEIGHT - 1; + gDialogueBoxBackground[i].width = SCREEN_WIDTH; + gDialogueBoxBackground[i].height = SCREEN_HEIGHT; + gDialogueBoxBackground[i].backgroundColourR = 255; + gDialogueBoxBackground[i].backgroundColourG = 255; + gDialogueBoxBackground[i].backgroundColourB = 255; + gDialogueBoxBackground[i].backgroundColourA = 0; + gDialogueBoxBackground[i].textColourR = 255; + gDialogueBoxBackground[i].textColourG = 255; + gDialogueBoxBackground[i].textColourB = 255; + gDialogueBoxBackground[i].textColourA = 0; + gDialogueBoxBackground[i].textBGColourR = 255; + gDialogueBoxBackground[i].textBGColourG = 255; + gDialogueBoxBackground[i].textBGColourB = 255; + gDialogueBoxBackground[i].textBGColourA = 0; + gDialogueBoxBackground[i].opacity = 255; + gDialogueBoxBackground[i].font = FONT_UNK_FF; + gDialogueBoxBackground[i].flags = (i != 0) ? DIALOGUE_BOX_UNK_01 : 0; + gDialogueBoxBackground[i].unk20 = 0; + gDialogueBoxBackground[i].unk22 = 0; + gDialogueBoxBackground[i].textBox = 0; } for (i = 0; i < unk8012A7EC_COUNT; i++) { - (*D_8012A7EC)[i].unk1 = 0xFF; - (*D_8012A7EC)[i].unk4 = 0; - (*D_8012A7EC)[i].textColourR = 0xFF; - (*D_8012A7EC)[i].textColourG = 0xFF; - (*D_8012A7EC)[i].textColourB = 0xFF; - (*D_8012A7EC)[i].textColourA = 0; - (*D_8012A7EC)[i].textBGColourR = 0xFF; - (*D_8012A7EC)[i].textBGColourG = 0xFF; - (*D_8012A7EC)[i].textBGColourB = 0xFF; - (*D_8012A7EC)[i].textBGColourA = 0; - (*D_8012A7EC)[i].unk1C = 0; + D_8012A7EC[i].unk1 = 255; + D_8012A7EC[i].text = NULL; + D_8012A7EC[i].textColourR = 255; + D_8012A7EC[i].textColourG = 255; + D_8012A7EC[i].textColourB = 255; + D_8012A7EC[i].textColourA = 0; + D_8012A7EC[i].textBGColourR = 255; + D_8012A7EC[i].textBGColourG = 255; + D_8012A7EC[i].textBGColourB = 255; + D_8012A7EC[i].textBGColourA = 0; + D_8012A7EC[i].nextBox = NULL; } - load_font(0); - load_font(1); + load_font(ASSET_FONTS_FUNFONT); + load_font(ASSET_FONTS_SMALLFONT); D_8012A7F0 = 0; } @@ -155,74 +151,57 @@ void func_800C4164(s32 arg0) { D_8012A7F0 = arg0; } -#ifdef NON_EQUIVALENT -// Mostly has regalloc issues. void load_font(s32 fontID) { if (fontID < gNumberOfFonts) { FontData *fontData = &gFonts[fontID]; fontData->unk28[0]++; if (fontData->unk28[0] == 1) { - // Minor issue with this loop. s32 i = 0; - while (fontData->unk40[i] != -1) { + while (i < 32 && fontData->unk40[i] != -1) { fontData->texturePointers[i] = load_texture(fontData->unk40[i]); i++; - if (i >= 64) { - break; - } } } } } -#else -GLOBAL_ASM("asm/non_matchings/font/load_font.s") -#endif -#ifdef NON_EQUIVALENT -// Mostly has regalloc issues. void unload_font(s32 fontID) { if (fontID < gNumberOfFonts) { FontData *fontData = &gFonts[fontID]; if (fontData->unk28[0] > 0) { fontData->unk28[0]--; - if ((fontData->unk28[0] & 0xFF) == 0) { - // Minor issue with this loop. + if (fontData->unk28[0] == 0) { s32 i = 0; - while (fontData->unk40[i] != -1) { + while (i < 32 && fontData->unk40[i] != -1) { free_texture(fontData->texturePointers[i]); fontData->texturePointers[i] = NULL; i++; - if (i >= 32) { - break; - } } } } } } -#else -GLOBAL_ASM("asm/non_matchings/font/unload_font.s") -#endif /** * Set the font of the current dialogue box's text. */ void set_text_font(s32 fontID) { if (fontID < gNumberOfFonts) { - (*gDialogueBoxBackground)[0].font = fontID; + gDialogueBoxBackground[0].font = fontID; } } -#ifdef NON_EQUIVALENT +UNUSED TextureHeader *func_800C4318(s32 font, u8 arg1) { + FontData *fontData; + u8 pointerIndex; -// Unused. Has regalloc issues -TextureHeader *func_800C4318(s32 font, u8 arg1) { if (font < gNumberOfFonts) { - FontData *fontData = &gFonts[font]; + fontData = &gFonts[font]; if (fontData->unk28[0] != 0) { - arg1 = fontData->unk100[(arg1 - 32) & 0xFF].unk0; - if (arg1 != 0xFF) { - return fontData->texturePointers[arg1]; + arg1 -= 32; + pointerIndex = fontData->unk100[arg1].unk0; + if (pointerIndex != 0xFF) { + return fontData->texturePointers[pointerIndex]; } return NULL; } @@ -231,56 +210,50 @@ TextureHeader *func_800C4318(s32 font, u8 arg1) { // before this function was called. } -#else -GLOBAL_ASM("asm/non_matchings/font/func_800C4318.s") -#endif - /** * Sets the colour of the current dialogue box's text. */ void set_text_colour(s32 red, s32 green, s32 blue, s32 alpha, s32 opacity) { - (*gDialogueBoxBackground)[0].textColourR = red; - (*gDialogueBoxBackground)[0].textColourG = green; - (*gDialogueBoxBackground)[0].textColourB = blue; - (*gDialogueBoxBackground)[0].textColourA = alpha; - (*gDialogueBoxBackground)[0].opacity = opacity; + gDialogueBoxBackground[0].textColourR = red; + gDialogueBoxBackground[0].textColourG = green; + gDialogueBoxBackground[0].textColourB = blue; + gDialogueBoxBackground[0].textColourA = alpha; + gDialogueBoxBackground[0].opacity = opacity; } /** * Sets the colour of the current dialogue box's text background. */ void set_text_background_colour(s32 red, s32 green, s32 blue, s32 alpha) { - (*gDialogueBoxBackground)[0].textBGColourR = red; - (*gDialogueBoxBackground)[0].textBGColourG = green; - (*gDialogueBoxBackground)[0].textBGColourB = blue; - (*gDialogueBoxBackground)[0].textBGColourA = alpha; + gDialogueBoxBackground[0].textBGColourR = red; + gDialogueBoxBackground[0].textBGColourG = green; + gDialogueBoxBackground[0].textBGColourB = blue; + gDialogueBoxBackground[0].textBGColourA = alpha; } // Unused? void func_800C4404(Gfx **displayList, char *text, AlignmentFlags alignmentFlags) { - func_800C45A4(displayList, &(*gDialogueBoxBackground)[0], text, alignmentFlags, 1.0f); + func_800C45A4(displayList, &gDialogueBoxBackground[0], text, alignmentFlags, 1.0f); } /** * Builds the background settings, then renders the given text at a given position. */ void draw_text(Gfx **displayList, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags) { - DialogueBoxBackground *temp = &(*gDialogueBoxBackground)[0]; + DialogueBoxBackground *temp = &gDialogueBoxBackground[0]; temp->xpos = (xpos == POS_CENTRED) ? temp->width >> 1 : xpos; temp->ypos = (ypos == POS_CENTRED) ? temp->height >> 1 : ypos; func_800C45A4(displayList, temp, text, alignmentFlags, 1.0f); } -// Unused? -void func_800C44C0(Gfx **displayList, s32 dialogueBoxID, char *text, AlignmentFlags alignmentFlags) { +UNUSED void func_800C44C0(Gfx **displayList, s32 dialogueBoxID, char *text, AlignmentFlags alignmentFlags) { if (dialogueBoxID >= 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; func_800C45A4(displayList, temp, text, alignmentFlags, 1.0f); } } -// Unused? -void func_800C4510(Gfx **displayList, s32 dialogueBoxID, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags) { +UNUSED void func_800C4510(Gfx **displayList, s32 dialogueBoxID, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags) { if (dialogueBoxID >= 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; temp->xpos = (xpos == POS_CENTRED) ? temp->width >> 1 : xpos; @@ -291,23 +264,21 @@ void func_800C4510(Gfx **displayList, s32 dialogueBoxID, s32 xpos, s32 ypos, cha GLOBAL_ASM("asm/non_matchings/font/func_800C45A4.s") -// Should be functionally equivalent. #ifdef NON_EQUIVALENT -s32 func_800C4DA0(u8 *text, s32 x, s32 font) { +s32 func_800C4DA0(unsigned char *text, s32 x, s32 font) { s32 diffX, thisDiffX; FontData *fontData; - FontCharData *fontCharData; if (text == NULL) { return 0; } diffX = x; if (font < 0) { - font = (*gDialogueBoxBackground)[0].font; + font = gDialogueBoxBackground[0].font; } fontData = &gFonts[font]; while (*text != '\0') { - u8 ch = *text; + unsigned char ch = *text; thisDiffX = diffX; if ((ch < 0x21) || (ch >= 0x80)) { if (ch == '\t') { // Tab character @@ -316,7 +287,9 @@ s32 func_800C4DA0(u8 *text, s32 x, s32 font) { diffX += fontData->unk24; } } else { - fontCharData = &fontData->unk100[(ch - 0x20) & 0xFF]; + unsigned char upperCaseCh = ch - 0x20; + FontCharData *fontCharData = &fontData->unk100[upperCaseCh]; + if (fontCharData->unk0 != 0xFF) { if (fontData->unk20 == 0) { diffX += fontCharData->unk1; @@ -428,10 +401,92 @@ void func_800C50D8(s32 dialogueBoxID) { // Unused? void func_800C510C(s32 dialogueBoxID, char *text, s32 arg2, s32 arg3) { - render_dialogue_text(dialogueBoxID, (*gDialogueBoxBackground)[dialogueBoxID].xpos, (*gDialogueBoxBackground)[dialogueBoxID].ypos, text, arg2, arg3); + render_dialogue_text(dialogueBoxID, gDialogueBoxBackground[dialogueBoxID].xpos, gDialogueBoxBackground[dialogueBoxID].ypos, text, arg2, arg3); } +#ifdef NON_EQUIVALENT +void *render_dialogue_text(s32 dialogueBoxID, s32 posX, s32 posY, char *text, s32 arg4, s32 flags) { + char parsedNumber; + DialogueBox *textBox; + FontData *fontData; + s32 temp_v0_2; + s32 i; + unk8012A7EC *ret; + DialogueBoxBackground *bg; + + if (text == NULL) { + return NULL; + } + + for (i = 0, ret = NULL; (i < 64) && (ret == NULL); i++) { + if (D_8012A7EC[i].unk1 == 0xFF) { + ret = &D_8012A7EC[i]; + } + } + + if (ret != NULL) { + bg = &gDialogueBoxBackground[dialogueBoxID]; + if (posX == POS_CENTRED) { + posX = bg->width >> 1; + } + if (posY == POS_CENTRED) { + posY = bg->height >> 1; + } + if (bg->font != FONT_UNK_FF) { + fontData = &gFonts[bg->font]; + if (flags & 5) { + parse_string_with_number(text, &parsedNumber, arg4); + temp_v0_2 = func_800C4DA0(&parsedNumber, posX, bg->font); + if (flags & 1) { + posX = (posX - temp_v0_2) + 1; + } else { + posX = posX - (temp_v0_2 >> 1); + } + } + if (flags & 2) { + posY = (posY - fontData->unk22) + 1; + } + if (flags & 8) { + posY -= fontData->unk22 >> 1; + } + } + if (bg->textBox == NULL) { + bg->textBox = (DialogueBox *) ret; + ret->nextBox = NULL; + } else { + textBox = bg->textBox; + //Feels like this should be a while loop, but it matches worse + if ((bg->textBox != NULL) && (arg4 < bg->textBox->textNum)) { + do { + textBox = textBox->nextBox; + } while (textBox != NULL && arg4 < textBox->textNum); + } + ret->nextBox = textBox; + } + ret->unk1 = arg4; + ret->text = text; + ret->posX = posX; + ret->unkC = 0; + ret->unkE = 0; + ret->posY = posY; + ret->textColourR = bg->textColourR; + ret->textColourG = bg->textColourG; + ret->textColourB = bg->textColourB; + ret->textColourA = bg->textColourA; + ret->textBGColourR = bg->textBGColourR; + ret->textBGColourG = bg->textBGColourG; + ret->textBGColourB = bg->textBGColourB; + ret->textBGColourA = bg->textBGColourA; + ret->opacity = bg->opacity; + ret->font = bg->font; + ret->flags = bg->flags; + } + + return ret; +} +#else GLOBAL_ASM("asm/non_matchings/font/render_dialogue_text.s") +#endif /** * Unused function that moved a dialogue box ID to the front of the stack. @@ -509,42 +564,42 @@ void func_800C54E8(s32 dialogueBoxID, unk800C54E8 *arg1, s32 arg2, s32 arg3, s32 * Mark the selected dialogue box as open */ void open_dialogue_box(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags |= DIALOGUE_BOX_OPEN; + gDialogueBoxBackground[dialogueBoxID].flags |= DIALOGUE_BOX_OPEN; } /** * Mark the selected dialogue box as closed */ void close_dialogue_box(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags &= DIALOGUE_BOX_CLOSED; + gDialogueBoxBackground[dialogueBoxID].flags &= DIALOGUE_BOX_CLOSED; } /** * Mark the selected dialogue box as an unknown value */ UNUSED void func_800C564C(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags |= DIALOGUE_BOX_UNUSED_01; + gDialogueBoxBackground[dialogueBoxID].flags |= DIALOGUE_BOX_UNUSED_01; } /** * Mark the selected dialogue box with every flag */ UNUSED void func_800C5678(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags &= DIALOGUE_BOX_UNUSED_02; + gDialogueBoxBackground[dialogueBoxID].flags &= DIALOGUE_BOX_UNUSED_02; } /** * Mark the selected dialogue box as */ UNUSED void func_800C56A4(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags |= DIALOGUE_BOX_UNK_01; + gDialogueBoxBackground[dialogueBoxID].flags |= DIALOGUE_BOX_UNK_01; } /** * Mark the selected dialogue box as open with */ void func_800C56D0(s32 dialogueBoxID) { - (*gDialogueBoxBackground)[dialogueBoxID].flags &= DIALOGUE_BOX_UNK_02; + gDialogueBoxBackground[dialogueBoxID].flags &= DIALOGUE_BOX_UNK_02; } /** @@ -564,9 +619,9 @@ void render_dialogue_boxes(Gfx **dlist, Mtx **mat, VertexList **verts) { } for (i = 1; i < DIALOGUEBOXBACKGROUND_COUNT; i++) { - if ((*gDialogueBoxBackground)[i].flags & DIALOGUE_BOX_OPEN) { + if (gDialogueBoxBackground[i].flags & DIALOGUE_BOX_OPEN) { //render_printf("%X\n", (*gDialogueBoxBackground)[i].flags); - if ((*gDialogueBoxBackground)[i].flags & DIALOGUE_BOX_UNK_01) { + if (gDialogueBoxBackground[i].flags & DIALOGUE_BOX_UNK_01) { render_dialogue_box(dlist, mat, verts, i); } else { render_dialogue_box(dlist, NULL, NULL, i); @@ -575,43 +630,44 @@ void render_dialogue_boxes(Gfx **dlist, Mtx **mat, VertexList **verts) { } } -#ifdef NON_EQUIVALENT void s32_to_string(char **outString, s32 number) { u8 digit; s32 i; s32 hasDigit; // boolean s32 div; + s32 pow; + char *ret = *outString; // Check for a negative number if (number < 0) { - **outString = '-'; + *ret = '-'; + ret++; number = -number; - (*outString)++; } // Loop through digit places. - for (i = 0; i < 9; i++) { - hasDigit = FALSE; + hasDigit = FALSE; + i = 0; + while(i < 9) { + pow = gDescPowsOf10[i++]; digit = '0'; - if (number >= gDescPowsOf10[i]) { - div = number / gDescPowsOf10[i]; + if (number >= pow) { hasDigit = TRUE; - digit = '0' + div; - number -= div * gDescPowsOf10[i]; + div = number / pow; + number -= div * pow; + digit += div; } if (hasDigit) { - **outString = digit; - (*outString)++; + *ret = digit; + ret++; } } // One's digit place - **outString = '0' + number; - (*outString)++; + *ret = '0' + number; + ret++; + *outString = ret; } -#else -GLOBAL_ASM("asm/non_matchings/font/s32_to_string.s") -#endif /** * Draws a solid color rectangle at the coordinates specified. diff --git a/src/font.h b/src/font.h index 5b8bc28d..2e78998d 100644 --- a/src/font.h +++ b/src/font.h @@ -34,27 +34,6 @@ enum DialogueFlags { DIALOGUE_BOX_UNUSED_02 = 0xFFFE }; -/* Size: 0x20 bytes */ -typedef struct unk8012A7EC { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - s32 unk4; - s32 unk8; - s32 unkC; - u8 textColourR; - u8 textColourG; - u8 textColourB; - u8 textColourA; - u8 textBGColourR; - u8 textBGColourG; - u8 textBGColourB; - u8 textBGColourA; - s32 unk18; - s32 unk1C; -} unk8012A7EC; - typedef struct unk800C54E8 { u8 pad0[0xC]; s16 unkC; @@ -89,28 +68,55 @@ typedef struct FontData { /* 0x100 */ FontCharData unk100[96]; } FontData; +/* Size: 0x20 bytes */ //Dialogue Box text linked list (Including background struct) typedef struct DialogueBox { - u8 unk00; // Unused - u8 textNum; // A number that is drawn with the text, like a balloon door telling you how many more you need. - unsigned char *text; // Pointer to the text array - s16 x1; // Left position of the text - s16 y1; // Top portion of the text - s16 x2; // Right portion of the text - s16 y2; // Bottom portion of the text - u8 textColourR; - u8 textColourG; - u8 textColourB; - u8 textColourA; - u8 textBGColourR; - u8 textBGColourG; - u8 textBGColourB; - u8 textBGColourA; - u8 opacity; - u8 font; - struct DialogueBox *nextBox; +/* 0x00 */ u8 unk00; // Unused +/* 0x01 */ u8 textNum; // A number that is drawn with the text, like a balloon door telling you how many more you need. +/* 0x02 */ unsigned char *text; // Pointer to the text array +/* 0x06 */ s16 x1; // Left position of the text +/* 0x08 */ s16 y1; // Top portion of the text +/* 0x0A */ s16 x2; // Right portion of the text +/* 0x0C */ s16 y2; // Bottom portion of the text +/* 0x0E */ u8 textColourR; +/* 0x0F */ u8 textColourG; +/* 0x10 */ u8 textColourB; +/* 0x11 */ u8 textColourA; +/* 0x12 */ u8 textBGColourR; +/* 0x13 */ u8 textBGColourG; +/* 0x14 */ u8 textBGColourB; +/* 0x15 */ u8 textBGColourA; +/* 0x16 */ u8 opacity; +/* 0x17 */ u8 font; +/* 0x18 */ struct DialogueBox *nextBox; } DialogueBox; + +/* Size: 0x20 bytes */ +typedef struct unk8012A7EC { +/* 0x00 */ u8 unk0; +/* 0x01 */ u8 unk1; +/* 0x02 */ u8 unk2; +/* 0x03 */ u8 unk3; +/* 0x04 */ unsigned char *text; // Pointer to the text array +/* 0x08 */ s16 posX; +/* 0x0A */ s16 posY; +/* 0x0C */ s16 unkC; +/* 0x0E */ s16 unkE; +/* 0x10 */ u8 textColourR; +/* 0x11 */ u8 textColourG; +/* 0x12 */ u8 textColourB; +/* 0x13 */ u8 textColourA; +/* 0x14 */ u8 textBGColourR; +/* 0x15 */ u8 textBGColourG; +/* 0x16 */ u8 textBGColourB; +/* 0x17 */ u8 textBGColourA; +/* 0x18 */ u8 opacity; +/* 0x19 */ u8 font; +/* 0x1A */ u16 flags; +/* 0x1C */ DialogueBox *nextBox; +} unk8012A7EC; + typedef struct { u8 r; u8 b; @@ -186,12 +192,11 @@ void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry); void render_dialogue_box(Gfx **dlist, Mtx **mat, VertexList **verts, s32 dialogueBoxID); void parse_string_with_number(unsigned char *input, char *output, s32 number); -void s32_to_string(char** outString, s32 number); //Non Matching -TextureHeader *func_800C4318(s32 font, u8 arg1); //Non Matching +void s32_to_string(char **outString, s32 number); //Non Matching void load_font(s32 fontID); //Non Matching void unload_font(s32 arg0); //Non Matching void func_800C45A4(Gfx **dlist, DialogueBoxBackground *arg1, char *text, AlignmentFlags alignmentFlags, f32 arg4); //Non Matching -s32 func_800C4DA0(u8 *text, s32 x, s32 font); //Non Matching -void *render_dialogue_text(s32 arg0, s32 posX, s32 posY, char *text, s32 arg4, s32 arg5); //Non Matching +s32 func_800C4DA0(unsigned char *text, s32 x, s32 font); //Non Matching +void *render_dialogue_text(s32 dialogueBoxID, s32 posX, s32 posY, char *text, s32 arg4, s32 arg5); //Non Matching #endif diff --git a/src/game_text.c b/src/game_text.c index f22cac23..f3767a5d 100644 --- a/src/game_text.c +++ b/src/game_text.c @@ -34,14 +34,14 @@ s16 D_8012A792; unk8012A798 D_8012A798; s32 D_8012A7A0; s32 D_8012A7A4; -s16 D_8012A7A8; +s16 sDialogueAlpha; s16 D_8012A7AA; s16 D_8012A7AC; -s16 D_8012A7AE; -s16 D_8012A7B0; -s16 D_8012A7B2; -s16 D_8012A7B4; -s16 D_8012A7B6; +s16 sDialogueXPos1; // The Upper Left X Coord of the Dialogue Box. +s16 sDialogueYPos1; // The Upper Left Y Coord of the Dialogue Box. Changes for PAL / NTSC +s16 sDialogueXPos2; // The Lower Right X Coord of the Dialogue Box. +s16 sDialogueYPos2; // The Lower Right Y Coord of the Dialogue Box. Changes for PAL / NTSC +s16 D_8012A7B6; // A Boolean value s16 D_8012A7B8; s16 D_8012A7BA; s16 D_8012A7BE; @@ -59,17 +59,17 @@ void func_800C29F0(void) { D_8012A7C8.unk4 = D_8012A7C8.unk0 + 0x3C0; D_8012A7D4 = 0; D_8012A7B6 = 0; - D_8012A7A8 = 0; - D_8012A7AA = 0x20; + sDialogueAlpha = 0; + D_8012A7AA = 32; D_8012A7BA = 0; - D_8012A7AE = 0x20; - D_8012A7B2 = 0x120; + sDialogueXPos1 = 32; + sDialogueXPos2 = 288; if (osTvType == TV_TYPE_PAL) { - D_8012A7B0 = 0xE0; - D_8012A7B4 = 0xF8; + sDialogueYPos1 = 224; + sDialogueYPos2 = 248; } else { - D_8012A7B0 = 0xCA; - D_8012A7B4 = 0xDE; + sDialogueYPos1 = 202; + sDialogueYPos2 = 222; } func_800C56D0(6); } @@ -94,26 +94,26 @@ void func_800C2F1C(s32 arg0) { } if (D_8012A7B6 != 0) { if (D_8012A7AC <= 0) { - D_8012A7A8 -= arg0 * D_8012A7AA; - if ((s32)D_8012A7A8 < 0) { - D_8012A7A8 = 0; + sDialogueAlpha -= arg0 * D_8012A7AA; + if ((s32)sDialogueAlpha < 0) { + sDialogueAlpha = 0; D_8012A7B6 = 0; close_dialogue_box(6); assign_dialogue_box_id(6); } } else { - D_8012A7A8 += arg0 * D_8012A7AA; - if (D_8012A7A8 >= 0x101) { - D_8012A7A8 = 0x100; + sDialogueAlpha += arg0 * D_8012A7AA; + if (sDialogueAlpha > 256) { + sDialogueAlpha = 256; } D_8012A7AC -= arg0; if (D_8012A7AC <= 0) { - func_800C2D6C(D_8012A7B6); + func_800C2D6C(); } } } if (D_8012A7B6 != 0) { - func_800C2B00(D_8012A7B6); + func_800C2B00(); } } diff --git a/src/game_text.h b/src/game_text.h index 675e874f..682b6542 100644 --- a/src/game_text.h +++ b/src/game_text.h @@ -35,5 +35,7 @@ void func_800C3440(s32 arg0); void func_800C31EC(s32); //Non Matching s32 func_800C3564(void); //Non Matching +void func_800C2D6C(void); //Non Matching +void func_800C2B00(void); //Non Matching #endif diff --git a/src/menu.c b/src/menu.c index f2389d7d..122c80e5 100644 --- a/src/menu.c +++ b/src/menu.c @@ -196,9 +196,9 @@ s8 gPlayerSelectVehicle[4]; // Unknown number of entries. u8 D_801269C4[4]; s32 D_801269C8; s32 D_801269CC; -s32 gAudioOutputStrings[3]; +char *gAudioOutputStrings[3]; s32 D_801269DC; -u32 *gMusicTestString; +char *gMusicTestString; s32 D_801269E4; s32 D_801269E8; s32 D_801269EC; @@ -222,7 +222,7 @@ u8 sControllerPakBadData[MAXCONTROLLERS]; //Flag to see if there's bad data for u8 *D_80126A40[8]; //Menu Text u8 sControllerPakDataPresent[MAXCONTROLLERS]; //Flag to see if there's data present for the given controller pak? Not sure s32 D_80126A64; -s32 D_80126A68; +s32 D_80126A68; //sCurrentControllerIndex? s32 D_80126A6C; s32 D_80126A70; s32 D_80126A74; @@ -239,12 +239,12 @@ u8 *sCurrentControllerPakAllFileExtensions[16]; //Every file extension on the co u8 sCurrentControllerPakAllFileTypes[16]; //File type of all files on controller pak u32 sCurrentControllerPakAllFileSizes[16]; //File size of all files on controller pak u32 sCurrentControllerPakFreeSpace; //Space available in current controller pak -s32 D_80126BB4; //8 if PAL, 7 if not +s32 sControllerPakMenuNumberOfRows; //8 if PAL, 7 if not s32 D_80126BB8; s32 D_80126BBC; s32 D_80126BC0; s32 D_80126BC4; -s32 D_80126BC8; +PakError sControllerPakError; // 0 = no error, 1 = fatal error, 2 = no free space, 3 = bad data s32 D_80126BCC; s32 D_80126BD0; s32 D_80126BD4; @@ -295,7 +295,7 @@ s8 D_800DF450 = 0; f32 D_800DF454 = 1.0f; s32 D_800DF458 = 1; s32 gTitleScreenCurrentOption = 0; // 0 = "Start", 1 = "Options" -s32 D_800DF460 = 0; +s32 D_800DF460 = 0; // Currently selected menu index? Reused in different menus. s32 D_800DF464 = 4; // Currently unknown, might be a different type. s32 D_800DF468 = 0; s32 D_800DF46C = 0; @@ -465,21 +465,20 @@ u16 D_800DFACC[8] = { s32 D_800DFADC = 0; // Currently unknown, might be a different type. s32 D_800DFAE0 = 0; // Currently unknown, might be a different type. -// Unsure about typing with these arrays. -s32 D_800DFAE4[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFAFC[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFB14[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFB2C[5] = { 0, 0, 0, 0, 0 }; -s32 D_800DFB40[7] = { 0, 0, 0, 0, 0, 0, 0 }; -s32 D_800DFB5C[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFB74[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFB8C[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFBA4[6] = { 0, 0, 0, 0, 0, 0 }; -s32 D_800DFBBC[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +char *D_800DFAE4[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFAFC[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFB14[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFB2C[5] = { 0, 0, 0, 0, 0 }; +char *D_800DFB40[7] = { 0, 0, 0, 0, 0, 0, 0 }; +char *D_800DFB5C[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFB74[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFB8C[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFBA4[6] = { 0, 0, 0, 0, 0, 0 }; +char *D_800DFBBC[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; s32 D_800DFBDC = 0; // Unused? -s32 *D_800DFBE0[10] = { +char *D_800DFBE0[10] = { D_800DFAE4, D_800DFAFC, D_800DFB14, D_800DFB2C, D_800DFB40, D_800DFB5C, D_800DFB8C, D_800DFBA4, D_800DFB74, D_800DFBBC }; @@ -511,7 +510,7 @@ s16 D_800DFCAC[4] = { 0x000B, 0x000C, 0x0002, 0xFFFF }; -MenuElement D_800DFCB4[7] = { +MenuElement gControllerPakMenuElement[7] = { { 161, 32, 161, 33, 161, 32, 0, 0, 0, 255, 128, ASSET_FONTS_BIGFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 160, 30, 160, 30, 160, 30, 255, 255, 255, 0, 255, ASSET_FONTS_BIGFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 160, 112, 160, 112, 160, 112, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, @@ -1531,100 +1530,100 @@ void load_menu_text(s32 language) { gMenuText[i] = &((u8 *)gMenuText)[(s32)gMenuText[i]]; } } - gAudioOutputStrings[0] = gMenuText[0]; // STEREO - gAudioOutputStrings[1] = gMenuText[1]; // MONO - gAudioOutputStrings[2] = gMenuText[2]; // HEADPHONES - gAudioMenuStrings[1].unkC = gMenuText[3]; // SFX VOLUME - gAudioMenuStrings[2].unkC = gMenuText[4]; // MUSIC VOLUME - gAudioMenuStrings[3].unkC = gMenuText[5]; // RETURN - gAudioMenuStrings[4].unkC = gMenuText[6]; // AUDIO OPTIONS - gAudioMenuStrings[5].unkC = gMenuText[6]; // AUDIO OPTIONS - gMusicTestString = gMenuText[7]; // MUSIC TEST 00 - gMagicCodeMenuStrings[0] = gMenuText[14]; // ENTER CODE - gMagicCodeMenuStrings[1] = gMenuText[15]; // CLEAR ALL CODES - gMagicCodeMenuStrings[2] = gMenuText[16]; // CODE LIST - gMagicCodeMenuStrings[3] = gMenuText[5]; // RETURN - D_800E0BEC[1].unk14_a.asciiText = gMenuText[29]; // LAP TIMES - D_800E0BEC[2].unk14_a.asciiText = gMenuText[30]; // OVERALL TIME - D_800E0CEC[8].unk14_a.asciiText = gMenuText[31]; // RACE ORDER - D_800E0CEC[9].unk14_a.asciiText = gMenuText[31]; // RACE ORDER - D_800E0E4C[0].unk14_a.asciiText = gMenuText[32]; // RECORD TIMES - D_800E0E4C[1].unk14_a.asciiText = gMenuText[32]; // RECORD TIMES - D_800E0E4C[2].unk14_a.asciiText = gMenuText[9]; // BEST TIME - D_800E0E4C[5].unk14_a.asciiText = gMenuText[10]; // BEST LAP - gOptionMenuStrings[0] = gMenuText[34]; // ENGLISH + 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" + D_800E0BEC[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_LAPTIMES]; // "LAP TIMES" + D_800E0BEC[2].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_OVERALLTIME]; // "OVERALL TIME" + D_800E0CEC[8].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" + D_800E0CEC[9].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_RACEORDER]; // "RACE ORDER" + D_800E0E4C[0].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" + D_800E0E4C[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_RECORDTIMES]; // "RECORD TIMES" + D_800E0E4C[2].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_BESTTIME]; // "BEST TIME" + D_800E0E4C[5].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_BESTLAP]; // "BEST LAP" + gOptionMenuStrings[0] = gMenuText[ASSET_MENU_TEXT_LANGUAGE]; // "ENGLISH" if (sEepromSettings & 0x2000000) { - gOptionMenuStrings[1] = gMenuText[182]; // SUBTITLES ON + gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESON]; // "SUBTITLES ON" } else { - gOptionMenuStrings[1] = gMenuText[183]; // SUBTITLES OFF + gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; // "SUBTITLES OFF" } - gOptionMenuStrings[2] = gMenuText[6]; // AUDIO OPTIONS - gOptionMenuStrings[3] = gMenuText[165]; // SAVE OPTIONS - gOptionMenuStrings[4] = gMenuText[17]; // MAGIC CODES - gOptionMenuStrings[5] = gMenuText[5]; // RETURN - gFilenames[0] = gMenuText[72]; // GAME A - gFilenames[1] = gMenuText[73]; // GAME B - gFilenames[2] = gMenuText[74]; // GAME C - D_800DFAE4[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFAE4[1] = gMenuText[91]; // IS NOT PRESENT. - D_800DFAE4[3] = gMenuText[85]; // CANCEL - D_800DFAFC[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFAFC[1] = gMenuText[93]; // CONTAINS CORRUPT DATA. - D_800DFAFC[3] = gMenuText[94]; // ATTEMPT TO REPAIR - D_800DFAFC[4] = gMenuText[85]; // CANCEL - D_800DFB14[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFB14[1] = gMenuText[95]; // IRREPARABLY DAMAGED. - D_800DFB14[3] = gMenuText[96]; // REFORMAT PAK - D_800DFB14[4] = gMenuText[85]; // CANCEL - D_800DFB2C[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFB2C[1] = gMenuText[97]; // FULL. - D_800DFB2C[3] = gMenuText[98]; // CONTINUE - D_800DFB40[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFB40[1] = gMenuText[99]; // DIFFERENT CONTROLLER - D_800DFB40[2] = gMenuText[100]; // PAK IS INSERTED. - D_800DFB40[4] = gMenuText[85]; // CANCEL - D_800DFB5C[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFB5C[1] = gMenuText[102]; // CANNOT STORE ANY - D_800DFB5C[2] = gMenuText[103]; // MORE GHOSTS. - D_800DFB5C[4] = gMenuText[98]; // CONTINUE - D_800DFB74[0] = gMenuText[90]; // CONTROLLER PAK ~ - D_800DFB74[1] = gMenuText[184]; // CORRUPT DATA. - D_800DFB74[3] = gMenuText[23]; // TRY AGAIN - D_800DFB74[4] = gMenuText[85]; // CANCEL - D_800DFB8C[0] = gMenuText[153]; // Rumble Pak Detected - D_800DFB8C[1] = gMenuText[154]; // Insert any Controller Paks - D_800DFB8C[2] = gMenuText[155]; // you wish to use now! - D_800DFB8C[4] = gMenuText[98]; // CONTINUE - D_800DFBA4[0] = gMenuText[156]; // If you wish to use any - D_800DFBA4[1] = gMenuText[157]; // Rumble Paks then please - D_800DFBA4[2] = gMenuText[158]; // insert them now. - D_800DFBA4[4] = gMenuText[98]; // CONTINUE - D_800DFBBC[0] = gMenuText[104]; // SORRY, BUT YOU - D_800DFBBC[1] = gMenuText[105]; // CAN'T LOAD GAMES - D_800DFBBC[2] = gMenuText[106]; // FOR THE SECOND - D_800DFBBC[3] = gMenuText[107]; // ADVENTURE UNTIL - D_800DFBBC[4] = gMenuText[108]; // YOU HAVE COMPLETED - D_800DFBBC[5] = gMenuText[109]; // THE FIRST. - D_800DFBBC[7] = gMenuText[98]; // CONTINUE - gTitleMenuStrings[0] = gMenuText[137]; // START - gTitleMenuStrings[1] = gMenuText[36]; // OPTIONS - gGameSelectTextElemsNoAdv2[0].unk14_a.asciiText = gMenuText[76]; // GAME SELECT - gGameSelectTextElemsNoAdv2[1].unk14_a.asciiText = gMenuText[76]; // GAME SELECT - gGameSelectTextElemsNoAdv2[3].unk14_a.asciiText = gMenuText[142]; // ADVENTURE - gGameSelectTextElemsNoAdv2[5].unk14_a.asciiText = gMenuText[144]; // TRACKS - gGameSelectTextElemsWithAdv2[0].unk14_a.asciiText = gMenuText[76]; // GAME SELECT - gGameSelectTextElemsWithAdv2[1].unk14_a.asciiText = gMenuText[76]; // GAME SELECT - gGameSelectTextElemsWithAdv2[3].unk14_a.asciiText = gMenuText[142]; // ADVENTURE - gGameSelectTextElemsWithAdv2[5].unk14_a.asciiText = gMenuText[143]; // ADVENTURE TWO - gGameSelectTextElemsWithAdv2[7].unk14_a.asciiText = gMenuText[144]; // TRACKS - sBadControllerPakMenuText[0] = gMenuText[69]; // BAD CONTROLLER PAK - sControllerPakFullMenuText[0] = gMenuText[68]; // CONTROLLER PAK FULL - sNoControllerPakMenuText[0] = gMenuText[67]; // NO CONTROLLER PAK - sCorruptDataMenuText[4] = 0; - sCorruptDataMenuText[5] = 0; - sCorruptDataMenuText[0] = gMenuText[184]; // CORRUPT DATA. + 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" + D_800DFAE4[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFAE4[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKNOTPRESENT]; // "IS NOT PRESENT." + D_800DFAE4[3] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + D_800DFAFC[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFAFC[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_0]; // "CONTAINS CORRUPT DATA." + D_800DFAFC[3] = gMenuText[ASSET_MENU_TEXT_CONTPAKHASCORRUPTDATA_1]; // "ATTEMPT TO REPAIR" + D_800DFAFC[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + D_800DFB14[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFB14[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_0]; // "IRREPARABLY DAMAGED." + D_800DFB14[3] = gMenuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_1]; // "REFORMAT PAK" + D_800DFB14[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + D_800DFB2C[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFB2C[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKISFULL]; // "FULL." + D_800DFB2C[3] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + D_800DFB40[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFB40[1] = gMenuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_0]; // "DIFFERENT CONTROLLER" + D_800DFB40[2] = gMenuText[ASSET_MENU_TEXT_CONTPAKDIFFERENT_1]; // "PAK IS INSERTED." + D_800DFB40[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + D_800DFB5C[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFB5C[1] = gMenuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_0]; // "CANNOT STORE ANY" + D_800DFB5C[2] = gMenuText[ASSET_MENU_TEXT_CANNOTSTOREANYMOREGHOSTS_1]; // "MORE GHOSTS." + D_800DFB5C[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + D_800DFB74[0] = gMenuText[ASSET_MENU_TEXT_CONTPAKX]; // "CONTROLLER PAK ~" + D_800DFB74[1] = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // "CORRUPT DATA." + D_800DFB74[3] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; // "TRY AGAIN" + D_800DFB74[4] = gMenuText[ASSET_MENU_TEXT_CANCEL]; // "CANCEL" + D_800DFB8C[0] = gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_0]; // "Rumble Pak Detected" + D_800DFB8C[1] = gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_1]; // "Insert any Controller Paks" + D_800DFB8C[2] = gMenuText[ASSET_MENU_TEXT_RUMBLEPAKDETECTED_2]; // "you wish to use now!" + D_800DFB8C[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + D_800DFBA4[0] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_0]; // "If you wish to use any" + D_800DFBA4[1] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_1]; // "Rumble Paks then please" + D_800DFBA4[2] = gMenuText[ASSET_MENU_TEXT_INSERTDEVICE_2]; // "insert them now." + D_800DFBA4[4] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // "CONTINUE" + D_800DFBBC[0] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_0]; // "SORRY, BUT YOU" + D_800DFBBC[1] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_1]; // "CAN'T LOAD GAMES" + D_800DFBBC[2] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_2]; // "FOR THE SECOND" + D_800DFBBC[3] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_3]; // "ADVENTURE UNTIL" + D_800DFBBC[4] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_4]; // "YOU HAVE COMPLETED" + D_800DFBBC[5] = gMenuText[ASSET_MENU_TEXT_ADVTWOLOADERROR_5]; // "THE FIRST." + D_800DFBBC[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].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsNoAdv2[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsNoAdv2[3].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" + gGameSelectTextElemsNoAdv2[5].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_TRACKS]; // "TRACKS" + gGameSelectTextElemsWithAdv2[0].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsWithAdv2[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_GAMESELECT]; // "GAME SELECT" + gGameSelectTextElemsWithAdv2[3].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURE]; // "ADVENTURE" + gGameSelectTextElemsWithAdv2[5].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_ADVENTURETWO]; // "ADVENTURE TWO" + gGameSelectTextElemsWithAdv2[7].unk14_a.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. + //"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]; @@ -1632,18 +1631,18 @@ void load_menu_text(s32 language) { sCorruptDataMenuText[i + 1] = gMenuText[177 + i]; } j = 0; - while (sCorruptDataMenuText[j] != 0) { + while (sCorruptDataMenuText[j] != NULL) { j++; } - sCorruptDataMenuText[j] = gMenuText[185]; // TRY AGAIN! - sInsertControllerPakMenuText[0] = gMenuText[159]; // If you wish to use - sInsertControllerPakMenuText[1] = gMenuText[160]; // the Controller Pak - sInsertControllerPakMenuText[2] = gMenuText[162]; // insert it now! - sInsertRumblePakMenuText[0] = gMenuText[159]; // If you wish to use - sInsertRumblePakMenuText[1] = gMenuText[161]; // the Rumble Pak - sInsertRumblePakMenuText[2] = gMenuText[162]; // insert it now! - gCautionMenuTextElements[0].unk14_a.asciiText = gMenuText[152]; // CAUTION - gCautionMenuTextElements[1].unk14_a.asciiText = gMenuText[152]; // CAUTION + 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].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" + gCautionMenuTextElements[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // "CAUTION" for (i = 2; i < 13; i++) { // Caution message lines starting from gMenuText[166] gCautionMenuTextElements[i].unk14_a.asciiText = gMenuText[166 + (i - 2)]; @@ -2185,7 +2184,7 @@ void print_missing_controller_text(Gfx **dl, s32 updateRate) { if (osTvType == TV_TYPE_PAL) { posY = 234; } - draw_text(dl, POS_CENTRED, posY, gMenuText[151], ALIGN_MIDDLE_CENTER); + draw_text(dl, POS_CENTRED, posY, gMenuText[ASSET_MENU_TEXT_CONTROLLERNOTCONNECTED], ALIGN_MIDDLE_CENTER); } } @@ -2322,7 +2321,7 @@ void menu_title_screen_init(void) { set_music_player_voice_limit(0x1B); func_800660C0(); set_text_font(ASSET_FONTS_FUNFONT); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); func_80000890(0); set_time_trial_enabled(FALSE); D_80126864 = 0; @@ -2349,7 +2348,7 @@ void func_80084118(void) { func_8009C4A8(sGameTitleTileTextures); set_music_player_voice_limit(0x10); func_800660D0(); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_80000890(1); } @@ -2357,7 +2356,7 @@ void menu_options_init(void) { D_801263BC = 0; gMenuDelay = 0; func_800C01D8(&sMenuTransitionFadeOut); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); set_text_font(ASSET_FONTS_BIGFONT); set_music_player_voice_limit(0x18); play_music(SEQUENCE_MAIN_MENU); @@ -2365,7 +2364,7 @@ void menu_options_init(void) { } //Draws options menu screen -void func_800841B8(UNUSED s32 arg0) { +void render_options_menu_ui(UNUSED s32 updateRate) { s32 optionMenuTextIndex; s32 alpha; s32 yPos; @@ -2373,9 +2372,9 @@ void func_800841B8(UNUSED s32 arg0) { set_text_font(ASSET_FONTS_BIGFONT); set_text_background_colour(0, 0, 0, 0); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[36], ALIGN_MIDDLE_CENTER); // OPTIONS + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[ASSET_MENU_TEXT_OPTIONS], ALIGN_MIDDLE_CENTER); // OPTIONS set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[36], ALIGN_MIDDLE_CENTER); // OPTIONS + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[ASSET_MENU_TEXT_OPTIONS], ALIGN_MIDDLE_CENTER); // OPTIONS optionMenuTextIndex = 0; yPos = 76; @@ -2400,23 +2399,23 @@ void func_800841B8(UNUSED s32 arg0) { } #ifdef NON_EQUIVALENT -s32 menu_options_loop(s32 arg0) { +s32 menu_options_loop(s32 updateRate) { s32 buttonsPressed; s32 analogX; s32 analogY; - D_801263BC = (D_801263BC + arg0) & 0x3F; + D_801263BC = (D_801263BC + updateRate) & 0x3F; if (gMenuDelay != 0) { if (gMenuDelay > 0) { - gMenuDelay += arg0; + gMenuDelay += updateRate; } else { - gMenuDelay -= arg0; + gMenuDelay -= updateRate; } } if (gMenuDelay >= -19 && gMenuDelay < 35) { - func_800841B8(arg0); + render_options_menu_ui(updateRate); } buttonsPressed = 0; @@ -2457,12 +2456,12 @@ s32 menu_options_loop(s32 arg0) { play_sound_global(SOUND_MENU_PICK2, NULL); unset_eeprom_settings_value(0); func_800C2AF4(0); - gOptionMenuStrings[1] = gMenuText[183]; + gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; } else { play_sound_global(SOUND_MENU_PICK2, NULL); set_eeprom_settings_value(0); func_800C2AF4(1); - gOptionMenuStrings[1] = gMenuText[182]; + gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESON]; } } else { // Move up & down the list @@ -2487,23 +2486,23 @@ s32 menu_options_loop(s32 arg0) { if (gMenuDelay >= 31) { // Change screen to a sub-menu if (D_800DF460 == 2) { - func_80084734(); + unload_big_font_1(); menu_init(MENU_AUDIO_OPTIONS); return 0; } if (D_800DF460 == 3) { - func_80084734(); + unload_big_font_1(); menu_init(MENU_SAVE_OPTIONS); return 0; } - func_80084734(); + unload_big_font_1(); menu_init(MENU_MAGIC_CODES); return 0; } if (gMenuDelay < -30) { // Change screen back to the title screen. func_80000B28(); - func_80084734(); + unload_big_font_1(); menu_init(MENU_TITLE); return 0; } @@ -2514,8 +2513,12 @@ s32 menu_options_loop(s32 arg0) { GLOBAL_ASM("asm/non_matchings/menu/menu_options_loop.s") #endif -void func_80084734(void) { - unload_font(2); + +/** + * Explicitly says to unload the ASSET_FONTS_BIGFONT type. + */ +void unload_big_font_1(void) { + unload_font(ASSET_FONTS_BIGFONT); } void menu_audio_options_init(void) { @@ -2541,7 +2544,7 @@ void menu_audio_options_init(void) { gAudioMenuStrings[3].unk2 = 0xC0; D_801263E0 = 4; } - load_font(2); + load_font(ASSET_FONTS_BIGFONT); } GLOBAL_ASM("asm/non_matchings/menu/func_80084854.s") @@ -2706,7 +2709,7 @@ void func_800851FC(void) { func_80000B18(); } func_8009C4A8(gOptionMenuTextures); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } void menu_save_options_init(void) { @@ -2731,7 +2734,7 @@ void menu_save_options_init(void) { func_8009C674(D_800DFC78); allocate_menu_images(D_800DFCAC); func_8007FFEC(0xA); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); D_800DFC10[0].texture = D_80126550[71]; D_800DFC20[0].texture = D_80126550[72]; D_800DFC30[0].texture = D_80126550[75]; @@ -2873,7 +2876,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_80087734.s") GLOBAL_ASM("asm/non_matchings/menu/menu_save_options_loop.s") void func_80087EB8(void) { - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_8007FF88(); func_8009C4A8(D_800DFC78); assign_dialogue_box_id(7); @@ -3020,7 +3023,56 @@ SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1) { GLOBAL_ASM("asm/non_matchings/menu/func_80087F14.s") #endif -GLOBAL_ASM("asm/non_matchings/menu/func_8008832C.s") +/** + * Sets and returns an error code if any controller paks have an error. + * Current implementation only checks the first controller pak. + * 0 = No Error + * 1 = Fatal Error + * 2 = No Free Space + * 3 = Corrupt Data + */ +PakError check_for_controller_pak_errors(void) { + s32 errorFound; + s32 i; + + errorFound = 0; + sControllerPakError = PAK_ERROR_NONE; + + // This has been hard limited to just the first controller pak, but can easily be modified to check the rest with i <= MAXCONTROLLERS + for (i = 0; i <= 0 && errorFound == 0; i++) { + if (sControllerPakFatalErrorFound[i] != 0) { + gControllerPakMenuElement[0].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_PAKERROR]; // PAK ERROR + gControllerPakMenuElement[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_PAKERROR]; // PAK ERROR + gControllerPakMenuElement[2].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + i]; // CONTROLLER PAK 1 / 2 / 3 / 4 + gControllerPakMenuElement[3].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTPAKISDAMAGED_0]; // IRREPARABLY DAMAGED. + gControllerPakMenuElement[4].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_TURNOFFN64_0]; // Switch off the N64 + gControllerPakMenuElement[5].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_TURNOFFN64_1]; // and remove the controller pak. + sControllerPakError = PAK_ERROR_FATAL; + errorFound = 1; + } else if ((sControllerPakNoFreeSpace[i] != 0) && (sControllerPakDataPresent[i] == 0)) { + gControllerPakMenuElement[0].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // CAUTION + gControllerPakMenuElement[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // CAUTION + gControllerPakMenuElement[2].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + i]; // CONTROLLER PAK 1 / 2 / 3 / 4 + gControllerPakMenuElement[3].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTPAKFULL]; // CONTROLLER PAK FULL + gControllerPakMenuElement[4].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTINUE]; // CONTINUE + gControllerPakMenuElement[5].unk14_a.asciiText = NULL; + sControllerPakDataPresent[i] = 1; + sControllerPakError = PAK_ERROR_FULL; + errorFound = 1; + } else if (sControllerPakBadData[i] != 0) { + gControllerPakMenuElement[0].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // CAUTION + gControllerPakMenuElement[1].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CAUTION]; // CAUTION + gControllerPakMenuElement[2].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CONTPAK1 + i]; // CONTROLLER PAK 1 / 2 / 3 / 4 + gControllerPakMenuElement[3].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_0]; // CORRUPT DATA. + gControllerPakMenuElement[4].unk14_a.asciiText = gMenuText[ASSET_MENU_TEXT_CORRUPTDATA_1]; // TRY AGAIN! + gControllerPakMenuElement[5].unk14_a.asciiText = NULL; + sControllerPakError = PAK_ERROR_CORRUPT; + errorFound = 1; + } + } + + return sControllerPakError; +} void menu_boot_init(void) { s32 i; @@ -3039,7 +3091,7 @@ void menu_boot_init(void) { D_80126C18 = 0; // D_80126C18 is a timer for the boot screen, counts up to 0x8C frames. } -s32 menu_boot_loop(s32 arg0) { +s32 menu_boot_loop(s32 updateRate) { s32 out; s32 temp; s32 y; @@ -3056,7 +3108,7 @@ s32 menu_boot_loop(s32 arg0) { switch (D_80126C20) { case 0: if (D_80126C18 < 32) { - D_80126C18 += arg0; + D_80126C18 += updateRate; if (D_80126C18 >= 33) { D_80126C18 = 32; } @@ -3067,7 +3119,7 @@ s32 menu_boot_loop(s32 arg0) { break; case 1: if (D_80126C18 < 140) { - D_80126C18 += arg0; + D_80126C18 += updateRate; if (D_80126C18 >= 141) { D_80126C18 = 140; } @@ -3084,7 +3136,7 @@ s32 menu_boot_loop(s32 arg0) { func_800C01D8(&sMenuTransitionFadeInFast); } temp = 300; - out = func_800890AC(arg0); + out = menu_controller_pak_loop(updateRate); break; } @@ -3122,103 +3174,104 @@ void func_800887E8(void) { load_menu_text(get_language()); if (func_80087F14(&D_80126A68, 0) == CONTROLLER_PAK_GOOD) { gMenuDelay = 0; - } else if (func_8008832C() == 0) { - gMenuDelay = 0x14; + } else if (check_for_controller_pak_errors() == PAK_ERROR_NONE) { + gMenuDelay = 20; } - if (D_80126BC8 == 0 && !gShowControllerPakMenu) { - gMenuDelay = 0x14; + if (sControllerPakError == PAK_ERROR_NONE && !gShowControllerPakMenu) { + gMenuDelay = 20; } D_800DF460 = 0; D_801263D8 = 0; - func_8009C6D4(0x3F); + func_8009C6D4(63); func_8008E4B0(); if (osTvType == TV_TYPE_PAL) { - D_80126BB4 = 8; + sControllerPakMenuNumberOfRows = 8; } else { - D_80126BB4 = 7; + sControllerPakMenuNumberOfRows = 7; } - load_font(2); + load_font(ASSET_FONTS_BIGFONT); } -#ifdef NON_EQUIVALENT -void func_80088938(s32 arg0) { +//Visual Aid : https://i.imgur.com/7T2Scdr.png +void render_controller_pak_ui(s32 updateRate) { s32 alpha; s32 i; - s8* phi_s2; - s8* phi_s0; - s8* phi_s4; - s32 phi_s3 = 1; - s32 yPos = 48; - //s32 yPos; + char *noteText; + char *fileNameText; + char *pagesText; + s32 numberOfPages; + s32 yPos = 0; set_text_background_colour(0, 0, 0, 0); alpha = D_801263BC << 3; if (alpha >= 256) { alpha = 511 - alpha; } - if (D_80126BC8 != 0) { - draw_menu_elements(1, D_800DFCB4, 1.0f); + if (sControllerPakError != PAK_ERROR_NONE) { + draw_menu_elements(1, gControllerPakMenuElement, 1.0f); } else if (gShowControllerPakMenu != 0) { set_text_font(ASSET_FONTS_BIGFONT); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, 161, 33, gMenuText[35], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 161, 33, gMenuText[ASSET_MENU_TEXT_CONTPAK], ALIGN_MIDDLE_CENTER); //CONTROLLER PAK - Drop Shadow set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, 160, 30, gMenuText[35], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, 30, gMenuText[ASSET_MENU_TEXT_CONTPAK], ALIGN_MIDDLE_CENTER); //CONTROLLER PAK - Main Text + + yPos += 48; + assign_dialogue_box_id(6); - - //HERE! set_current_dialogue_box_coords(6, 58, yPos, 262, yPos + 30); - if (D_800DF460 == -1) { set_current_dialogue_background_colour(6, 255, 255, 255, (alpha >> 1) + 128); } else { set_current_dialogue_background_colour(6, 96, 192, 92, 224); } - set_dialogue_font(6, 0); + 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 + D_80126A68], phi_s3, 4); - render_dialogue_text(6, POS_CENTRED, 16, gMenuText[114], sCurrentControllerPakFreeSpace, 4); + render_dialogue_text(6, POS_CENTRED, 2, gMenuText[86 + D_80126A68], 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_box(&sMenuCurrDisplayList, NULL, NULL, 6); - //HERE! yPos += 34; //To 82 - set_dialogue_font(6, 1); + set_dialogue_font(6, ASSET_FONTS_SMALLFONT); set_current_text_background_colour(6, 0, 0, 0, 0); - for (i = -1; i < D_80126BB4; i++) { + for (i = -1; i < sControllerPakMenuNumberOfRows; i++) { assign_dialogue_box_id(6); set_current_dialogue_box_coords(6, 28, yPos, 292, yPos + 14); if (i < 0) { + //Red background for table header set_current_dialogue_background_colour(6, 224, 48, 48, 224); set_current_text_colour(6, 224, 224, 48, 255, 255); - phi_s2 = gMenuText[115]; - phi_s0 = gMenuText[116]; - phi_s4 = gMenuText[117]; - phi_s3 = 1; + noteText = gMenuText[ASSET_MENU_TEXT_NOTE]; //NOTE + fileNameText = gMenuText[ASSET_MENU_TEXT_FILENAME]; //FILENAME + pagesText = gMenuText[ASSET_MENU_TEXT_PAGES]; //PAGES + numberOfPages = 1; } else { - phi_s2 = &D_800E820C; - phi_s4 = &D_800E820C; if (D_800DF460 == (i + D_801263D8)) { + //White background for currently selected row set_current_dialogue_background_colour(6, 255, 255, 255, (alpha >> 1) + 128); } else { + //Yellow background for all other rows set_current_dialogue_background_colour(6, 224, 224, 48, 224); } set_current_text_colour(6, 16, 16, 160, 255, 255); - phi_s0 = D_80126AA0[D_801263D8 + i]; - phi_s3 = (s32) (&sCurrentControllerPakAllFileSizes)[D_801263D8 + i]; + noteText = (char *)&D_800E820C; //~ + pagesText = (char *)&D_800E820C; //~ + fileNameText = D_80126AA0[D_801263D8 + i]; + numberOfPages = sCurrentControllerPakAllFileSizes[D_801263D8 + i]; } - render_dialogue_text(6, 26, 2, phi_s2, D_801263D8 + i + 1, 4); - render_dialogue_text(6, 56, 2, phi_s0, 1, 0); - render_dialogue_text(6, 240, 2, phi_s4, phi_s3, 4); + render_dialogue_text(6, 26, 2, noteText, D_801263D8 + i + 1, 4); + render_dialogue_text(6, 56, 2, fileNameText, 1, 0); + render_dialogue_text(6, 240, 2, pagesText, numberOfPages, 4); render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); yPos += 16; } - if (D_801263D8 < (16 - D_80126BB4)) { + if (D_801263D8 < (16 - sControllerPakMenuNumberOfRows)) { if ((D_801263BC & 8) != 0) { - render_textured_rectangle(&sMenuCurrDisplayList, (DrawTexture* ) &D_800E043C, 160, yPos + 8, (u8) 255, (u8) 255, (u8) 255, (u8) 255); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E043C, 160, yPos + 8, 255, 255, 255, 255); func_8007B3D0(&sMenuCurrDisplayList); } } else { @@ -3228,7 +3281,7 @@ void func_80088938(s32 arg0) { } else { set_text_colour(255, 255, 255, 0, 255); } - draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[51], ALIGN_TOP_CENTER); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[ASSET_MENU_TEXT_EXIT], ALIGN_TOP_CENTER); //EXIT } if ((D_801263E0 != 0) && (D_80126C10 == 0)) { if (osTvType == TV_TYPE_PAL) { @@ -3237,11 +3290,12 @@ void func_80088938(s32 arg0) { yPos = 120; } assign_dialogue_box_id(6); - set_dialogue_font(6, 0); + set_dialogue_font(6, ASSET_FONTS_FUNFONT); set_current_dialogue_box_coords(6, 76, yPos - 28, 244, yPos + 28); set_current_dialogue_background_colour(6, 0, 0, 0, 160); - for (yPos = 4, i = 0; i < 3; i++) { + yPos = 4; + for (i = 0; i <= 2; i++) { if (i == 0) { set_current_text_colour(6, 255, 0, 255, 64, 255); } else if (i == D_801263E0) { @@ -3249,7 +3303,13 @@ void func_80088938(s32 arg0) { } else { set_current_text_colour(6, 255, 255, 255, 0, 255); } - render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[111 + i], D_800DF460 + 1, 4); + + //Render these three lines in this order + //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); + if (i != 0) { yPos += 16; } else { @@ -3258,22 +3318,178 @@ void func_80088938(s32 arg0) { } render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); } + //Deleting File if (D_80126C10 != 0) { set_text_colour(255, 255, 255, 0, 255); set_text_font(ASSET_FONTS_BIGFONT); - draw_text(&sMenuCurrDisplayList, 160, 128, gMenuText[124], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, 128, gMenuText[ASSET_MENU_TEXT_PLEASEWAIT], ALIGN_MIDDLE_CENTER); } } } -#else -GLOBAL_ASM("asm/non_matchings/menu/func_80088938.s") -#endif -GLOBAL_ASM("asm/non_matchings/menu/func_800890AC.s") + +s32 menu_controller_pak_loop(s32 updateRate) { + s32 i; + s32 pressedButtons; + s32 xStick; + s32 yStick; + s32 playMoveSound = FALSE; + s32 playCancelSound = FALSE; + s32 playSelectedSound = FALSE; + UNUSED s32 pad; + s32 temp_v1_2; + + D_801263BC = (D_801263BC + updateRate) & 0x3F; + if (gMenuDelay < 20) { + render_controller_pak_ui(updateRate); + } + if (gMenuDelay == 0) { + pressedButtons = 0; + xStick = 0; + yStick = 0; + for (i = 0; i < MAXCONTROLLERS; i++) { + pressedButtons |= get_buttons_pressed_from_player(i); + xStick += gControllersXAxisDirection[i]; + yStick += gControllersYAxisDirection[i]; + } + if (sControllerPakError != PAK_ERROR_NONE) { + if ((sControllerPakError != PAK_ERROR_FATAL) && (pressedButtons & (A_BUTTON | START_BUTTON))) { + play_sound_global(SOUND_SELECT2, NULL); + if (func_80087F14(&D_80126A68, 0) == CONTROLLER_PAK_GOOD) { + sControllerPakError = PAK_ERROR_NONE; + } else if (check_for_controller_pak_errors() == PAK_ERROR_NONE) { + gShowControllerPakMenu = 0; + } + if ((sControllerPakError == PAK_ERROR_NONE) && (gShowControllerPakMenu == 0)) { + playCancelSound = TRUE; + gMenuDelay = 1; + func_800C01D8(&sMenuTransitionFadeIn); + } + } + } else { + if (D_801263E0 != 0) { + if (D_80126C10 != 0) { + D_80126C10--; + if (D_80126C10 == 0) { + if (delete_file(D_80126A68, D_800DF460) != CONTROLLER_PAK_GOOD) { + //Failed to delete the file + playCancelSound = TRUE; + gMenuDelay = 1; + func_800C01D8(&sMenuTransitionFadeIn); + } else { + //File deleted successfully + playSelectedSound = TRUE; + if (func_80087F14(&D_80126A68, xStick) != CONTROLLER_PAK_GOOD) { + playCancelSound = TRUE; + gMenuDelay = 1; + func_800C01D8(&sMenuTransitionFadeIn); + } + } + D_801263E0 = 0; + } + } else if (pressedButtons & B_BUTTON) { + playCancelSound = TRUE; + D_801263E0 = 0; + } else if (pressedButtons & (A_BUTTON | START_BUTTON)) { + if (D_801263E0 == 1) { + D_80126C10 = 3; + } else { + playCancelSound = TRUE; + D_801263E0 = 0; + } + } else if (yStick > 0 && D_801263E0 >= 2) { + D_801263E0 = 1; + playMoveSound = TRUE; + } else if (yStick < 0 && D_801263E0 < 2) { + D_801263E0 = 2; + playMoveSound = TRUE; + } + } else if ((pressedButtons & B_BUTTON) || (D_800DF460 == 16 && (pressedButtons & (A_BUTTON | START_BUTTON)))) { + playCancelSound = 1; + gMenuDelay = 1; + func_800C01D8(&sMenuTransitionFadeIn); + } else { + //D_800DF460 = selected menu index? + switch (D_800DF460) { + case -1: + if (yStick < 0) { + if(!xStick); + D_800DF460 = 0; + playMoveSound = TRUE; + } + break; + case 16: + if (yStick > 0) { + D_800DF460 = 15; + playMoveSound = TRUE; + } + break; + default: + if (pressedButtons & (A_BUTTON | START_BUTTON)) { + //Check if the selected menu item is a file or blank + if ((sCurrentControllerPakAllFileTypes[D_800DF460] >= 3) && (sCurrentControllerPakAllFileTypes[D_800DF460] <= 6)) { + D_80126C10 = 0; + D_801263E0 = 2; + playSelectedSound = TRUE; + } else { + //If it's not, just play the "back" sound + playCancelSound = TRUE; + } + } else { + if (yStick > 0) { + D_800DF460--; + if (D_800DF460 < 0) { + D_800DF460 = 0; + } else { + playMoveSound = TRUE; + } + } else if (yStick < 0) { + D_800DF460++; + playMoveSound = TRUE; + } + } + if (D_800DF460 >= (D_801263D8 + sControllerPakMenuNumberOfRows)) { + D_801263D8 = (D_800DF460 - sControllerPakMenuNumberOfRows) + 1; + } + if (D_800DF460 < D_801263D8) { + D_801263D8 = D_800DF460; + } + temp_v1_2 = 16 - sControllerPakMenuNumberOfRows; + if (temp_v1_2 < D_801263D8) { + D_801263D8 = temp_v1_2; + } + if (D_801263D8 < 0) { + D_801263D8 = 0; + } + break; + } + } + } + if (playCancelSound) { + //Menu Cancel Sound + play_sound_global(SOUND_MENU_BACK3, NULL); + } else if (playSelectedSound) { + //Menu Item Selected Sound + play_sound_global(SOUND_SELECT2, NULL); + } else if (playMoveSound) { + //Menu Moving Sound + play_sound_global(SOUND_MENU_PICK2, NULL); + } + } else { + gMenuDelay += updateRate; + if (gMenuDelay >= 36) { + + func_800895A4(); + menu_init(MENU_LOGOS); + load_level_for_menu(21, -1, 0); + } + } + return 0; +} void func_800895A4(void) { func_8009C508(0x3F); free_from_memory_pool(D_80126AA0[0]); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } void menu_magic_codes_init(void) { @@ -3292,7 +3508,7 @@ void menu_magic_codes_init(void) { set_current_dialogue_box_coords(7, 50, 50, 270, 132); set_current_dialogue_background_colour(7, 0, 0, 0, 128); assign_dialogue_box_id(7); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); } #ifdef NON_EQUIVALENT @@ -3309,9 +3525,9 @@ void render_magic_codes_ui(s32 arg0) { render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 7); set_text_font(ASSET_FONTS_BIGFONT); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[17], ALIGN_MIDDLE_CENTER); // gMenuText[17] = "MAGIC CODES" + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[ASSET_MENU_TEXT_MAGICCODES], ALIGN_MIDDLE_CENTER); //"MAGIC CODES" set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[17], ALIGN_MIDDLE_CENTER); // gMenuText[17] = "MAGIC CODES" + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[ASSET_MENU_TEXT_MAGICCODES], ALIGN_MIDDLE_CENTER); //"MAGIC CODES" set_text_font(ASSET_FONTS_FUNFONT); set_text_colour(255, 255, 255, 0, 255); @@ -3370,7 +3586,7 @@ void render_magic_codes_ui(s32 arg0) { set_text_background_colour(0, 0, 128, 128); if (gOptionsMenuItemIndex == 4) { if (D_80126C4C == -1) { - draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[18], ALIGN_MIDDLE_CENTER); // gMenuText[18] = "Sorry, the code was incorrect" + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[ASSET_MENU_TEXT_BADCODE], ALIGN_MIDDLE_CENTER); //"Sorry, the code was incorrect" } else { // Draw cheat code name. draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, (char *)(*gCheatsAssetData) + (*gCheatsAssetData + 1)[D_80126C4C + 1], ALIGN_MIDDLE_CENTER); @@ -3378,7 +3594,7 @@ void render_magic_codes_ui(s32 arg0) { } else if (5 == gOptionsMenuItemIndex) { draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, D_80126C58, ALIGN_MIDDLE_CENTER); } else if (gOptionsMenuItemIndex == 6) { - draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[19], ALIGN_MIDDLE_CENTER); // gMenuText[19] = "All cheats have been deleted" + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[ASSET_MENU_TEXT_ALLCODESDELETED], ALIGN_MIDDLE_CENTER); //"All cheats have been deleted" } if (D_801263E0 != 0) { yPos = 120; @@ -3422,8 +3638,12 @@ GLOBAL_ASM("asm/non_matchings/menu/render_magic_codes_ui.s") GLOBAL_ASM("asm/non_matchings/menu/menu_magic_codes_loop.s") -void func_8008A4C8(void) { - unload_font(2); + +/** + * Explicitly says to unload the ASSET_FONTS_BIGFONT type. + */ +void unload_big_font_2(void) { + unload_font(ASSET_FONTS_BIGFONT); } void menu_magic_codes_list_init(void) { @@ -3431,7 +3651,7 @@ void menu_magic_codes_list_init(void) { gMenuDelay = 0; D_801263E0 = 0; gOptionsMenuItemIndex = (u16)0; - load_font(2); + load_font(ASSET_FONTS_BIGFONT); func_8009C6D4(0x3F); func_8008E4B0(); func_800C01D8(&sMenuTransitionFadeOut); @@ -3455,9 +3675,9 @@ void render_magic_codes_list_menu_text(s32 arg0) { set_text_background_colour(0, 0, 0, 0); set_text_font(ASSET_FONTS_BIGFONT); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[20], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[ASSET_MENU_TEXT_MAGICCODESLIST], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[20], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[ASSET_MENU_TEXT_MAGICCODESLIST], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST numOfUnlockedCheats = 0; phi_v0 = 1; for (i = 0; i < 32; i++) { @@ -3481,9 +3701,9 @@ void render_magic_codes_list_menu_text(s32 arg0) { } draw_text(&sMenuCurrDisplayList, 48, yPos, (char *)(*gCheatsAssetData) + ((*gCheatsAssetData + 1)[D_80126C80[i] * 2 + 1]), ALIGN_TOP_LEFT); if ((1 << D_80126C80[i]) & gActiveMagicCodes) { - draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[21], ALIGN_TOP_LEFT); // ON + draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[ASSET_MENU_TEXT_ON], ALIGN_TOP_LEFT); // ON } else { - draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[22], ALIGN_TOP_LEFT); // OFF + draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[ASSET_MENU_TEXT_OFF], ALIGN_TOP_LEFT); // OFF } if (i == gOptionsMenuItemIndex) { set_text_colour(255, 255, 255, 0, 255); @@ -3494,7 +3714,7 @@ void render_magic_codes_list_menu_text(s32 arg0) { if (numOfUnlockedCheats == gOptionsMenuItemIndex) { set_text_colour(255, 255, 255, alpha, 255); } - draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[5], ALIGN_TOP_CENTER); // RETURN + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[ASSET_MENU_TEXT_RETURN], ALIGN_TOP_CENTER); // RETURN return; } if (D_801263BC & 8) { @@ -3624,7 +3844,7 @@ GLOBAL_ASM("asm/non_matchings/menu/menu_magic_codes_list_loop.s") void func_8008AD1C(void) { func_8009C508(0x3F); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } #ifdef NON_EQUIVALENT @@ -3754,7 +3974,7 @@ void menu_character_select_init(void) { func_8009C674(D_800DFDC8); allocate_menu_images(D_800DFDCC); func_800C01D8(&sMenuTransitionFadeOut); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); } /** @@ -3767,10 +3987,10 @@ void draw_character_select_text(UNUSED s32 arg0) { set_text_background_colour(0, 0, 0, 0); set_text_colour(0, 0, 0, 255, 128); // Draw "Player Select" text drop shadow - draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[135], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[ASSET_MENU_TEXT_PLAYERSELECT], ALIGN_MIDDLE_CENTER); set_text_colour(255, 255, 255, 0, 255); // Draw "Player Select" text - draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[135], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[ASSET_MENU_TEXT_PLAYERSELECT], ALIGN_MIDDLE_CENTER); if (gNumberOfReadyPlayers == gNumberOfActivePlayers && gNumberOfActivePlayers > 0) { yPos = 208; if (osTvType == TV_TYPE_PAL) { @@ -3946,7 +4166,7 @@ void func_8008BFE8(s32 arg0, s8 *arg1, s32 arg2, u16 arg3, u16 arg4) { void func_8008C128(void) { func_8009C4A8((s16 *)&D_800DFDC8); set_free_queue_state(0); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); set_free_queue_state(2); D_800DFFD0 = 0; } @@ -3960,7 +4180,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_8008C168.s") void menu_caution_init(void) { gIgnorePlayerInput = 60; gMenuDelay = 0; - load_font(2); + load_font(ASSET_FONTS_BIGFONT); func_800C01D8(&sMenuTransitionFadeOut); gPlayerHasSeenCautionMenu = 1; } @@ -3981,7 +4201,7 @@ s32 menu_caution_loop(s32 updateRate) { draw_menu_elements(1, gCautionMenuTextElements, 1.0f); } if (gMenuDelay > 30) { - unload_large_font(); + unload_big_font_3(); menu_init(MENU_GAME_SELECT); } if (gIgnorePlayerInput > 0) { @@ -3993,7 +4213,7 @@ s32 menu_caution_loop(s32 updateRate) { /** * Explicitly says to unload the ASSET_FONTS_BIGFONT type. */ -void unload_large_font(void) { +void unload_big_font_3(void) { unload_font(ASSET_FONTS_BIGFONT); } @@ -4012,7 +4232,7 @@ void menu_game_select_init(void) { D_801263D8 = 1; func_8009C6D4(0x43); func_8007FFEC(3); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); play_music(SEQUENCE_CHOOSE_YOUR_RACER); for (i = 0; i < 10; i++) { @@ -4176,7 +4396,7 @@ s32 menu_game_select_loop(s32 arg0) { } void func_8008CACC(void) { - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_8007FF88(); func_8009C508(0x43); } @@ -4200,7 +4420,7 @@ void menu_file_select_init(void) { D_80126488 = 0; D_80126CC0 = 0; func_800C01D8(&sMenuTransitionFadeOut); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); play_music(SEQUENCE_CHOOSE_YOUR_RACER); for (i = 0; i < 10; i++) { if (i != D_801263B4.unk0) { @@ -4294,7 +4514,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { func_8007BF1C(1); } else { set_text_colour(255, 255, 255, 64, 255); - draw_text(&sMenuCurrDisplayList, D_800E03FC[4] + D_800E03CC[i].unk0, D_800E03FC[5] + D_800E03CC[i].unk2 + y, gMenuText[75], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, D_800E03FC[4] + D_800E03CC[i].unk0, D_800E03FC[5] + D_800E03CC[i].unk2 + y, gMenuText[ASSET_MENU_TEXT_NEW], ALIGN_MIDDLE_CENTER); } } } @@ -4335,18 +4555,18 @@ void render_file_select_menu(UNUSED s32 updateRate) { } set_text_font(ASSET_FONTS_BIGFONT); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, 161, 19, gMenuText[76], ALIGN_TOP_CENTER); + draw_text(&sMenuCurrDisplayList, 161, 19, gMenuText[ASSET_MENU_TEXT_GAMESELECT], ALIGN_TOP_CENTER); set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, 160, 16, gMenuText[76], ALIGN_TOP_CENTER); + draw_text(&sMenuCurrDisplayList, 160, 16, gMenuText[ASSET_MENU_TEXT_GAMESELECT], ALIGN_TOP_CENTER); set_text_colour(255, 255, 255, 0, 255); y += 0xBB; if (D_80126484 != 0) { if (D_80126494 == 0) { set_text_font(ASSET_FONTS_FUNFONT); - draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[77], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[ASSET_MENU_TEXT_GAMETOCOPY], ALIGN_MIDDLE_CENTER); } else if (D_80126494 == 1) { set_text_font(ASSET_FONTS_FUNFONT); - draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[78], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[ASSET_MENU_TEXT_GAMETOCOPYTO], ALIGN_MIDDLE_CENTER); } else { draw_text(&sMenuCurrDisplayList, 160, y, &D_800E8234, ALIGN_MIDDLE_CENTER); } @@ -4355,7 +4575,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { if (D_80126488 != 0) { if (D_80126494 == 0) { set_text_font(ASSET_FONTS_FUNFONT); - draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[79], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[ASSET_MENU_TEXT_GAMETOERASE], ALIGN_MIDDLE_CENTER); } else { draw_text(&sMenuCurrDisplayList, 160, y, &D_800E8238, ALIGN_MIDDLE_CENTER); } @@ -4365,13 +4585,13 @@ void render_file_select_menu(UNUSED s32 updateRate) { if (D_801263E0 == 1) { set_text_colour(255, 255, 255, phi_v0_2, 255); } - draw_text(&sMenuCurrDisplayList, 90, y, gMenuText[80], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 90, y, gMenuText[ASSET_MENU_TEXT_COPY], ALIGN_MIDDLE_CENTER); if (D_801263E0 == 2) { set_text_colour(255, 255, 255, phi_v0_2, 255); } else { set_text_colour(255, 255, 255, 0, 255); } - draw_text(&sMenuCurrDisplayList, 230, y, gMenuText[81], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 230, y, gMenuText[ASSET_MENU_TEXT_ERASE], ALIGN_MIDDLE_CENTER); return; } } @@ -4455,7 +4675,7 @@ GLOBAL_ASM("asm/non_matchings/menu/menu_file_select_loop.s") void func_8008E428(void) { func_8009C4A8(D_800E0398); func_8007FF88(); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } void func_8008E45C(void) { @@ -4582,7 +4802,7 @@ void func_8008F534(void) { func_8009C508(D_800E0710[i + 1]); } } - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_8007FF88(); func_80000B28(); func_80000C2C(); @@ -4667,8 +4887,8 @@ void render_track_select_setup_ui(s32 updateRate) { } set_current_dialogue_background_colour(7, 255, sp84, 0, sMenuGuiOpacity); if ((D_801263E0 == -1) || ((D_801263E0 == 2) && (D_801269C8 == 4) && is_adventure_two_unlocked())) { - s4 = func_800C4DA0(gMenuText[146], 0, 0); // gMenuText[146] = "ADVENTURE" - temp = func_800C4DA0(gMenuText[147], 0, 0); // gMenuText[147] = "ADVENTURE TWO" + s4 = func_800C4DA0(gMenuText[ASSET_MENU_TEXT_ADVENTURE2], 0, 0); // "ADVENTURE" + temp = func_800C4DA0(gMenuText[ASSET_MENU_TEXT_ADVENTURETWO2], 0, 0); // "ADVENTURE TWO" if (s4 < temp) { s4 = temp; } @@ -4703,8 +4923,8 @@ void render_track_select_setup_ui(s32 updateRate) { if (D_801269C8 < 4) { set_text_font(ASSET_FONTS_FUNFONT); set_text_colour(255, 64, 64, 96, sMenuGuiOpacity); - draw_text(&sMenuCurrDisplayList, 56, 72 + sp80, gMenuText[9], ALIGN_MIDDLE_LEFT); // gMenuText[9] = "BEST TIME" - draw_text(&sMenuCurrDisplayList, 56, 92 + sp80, gMenuText[10], ALIGN_MIDDLE_LEFT); // gMenuText[10] = "BEST LAP" + draw_text(&sMenuCurrDisplayList, 56, 72 + sp80, gMenuText[ASSET_MENU_TEXT_BESTTIME], ALIGN_MIDDLE_LEFT); // "BEST TIME" + draw_text(&sMenuCurrDisplayList, 56, 92 + sp80, gMenuText[ASSET_MENU_TEXT_BESTLAP], ALIGN_MIDDLE_LEFT); // "BEST LAP" set_text_colour(255, 128, 255, 96, sMenuGuiOpacity); decompress_filename_string(settings->courseInitialsPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], &sp78, 3); draw_text(&sMenuCurrDisplayList, 250, 72 + sp80, &sp78, ALIGN_MIDDLE_CENTER); @@ -4819,7 +5039,7 @@ void render_track_select_setup_ui(s32 updateRate) { } if (sp74) { - s32 temp_v0_12 = func_800C4DA0(gMenuText[136], 0, 0); // gMenuText[136] = "NUMBER OF RACERS" + s32 temp_v0_12 = func_800C4DA0(gMenuText[ASSET_MENU_TEXT_NUMBEROFRACERS], 0, 0); // "NUMBER OF RACERS" if ((D_800E06E4[2] - 0xC) < temp_v0_12) { s4 = temp_v0_12 + 0xC; } else { @@ -4829,10 +5049,9 @@ void render_track_select_setup_ui(s32 updateRate) { func_80080E6C(); set_text_font(ASSET_FONTS_FUNFONT); set_text_colour(0, 0, 0, 0xFF, 0x80); - draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] + 1, D_800E06E4[7] + D_800E06E4[1] + 1, gMenuText[136], ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] + 1, D_800E06E4[7] + D_800E06E4[1] + 1, gMenuText[ASSET_MENU_TEXT_NUMBEROFRACERS], ALIGN_MIDDLE_CENTER); set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); - draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] - 1, D_800E06E4[7] + D_800E06E4[1] - 1, gMenuText[136], ALIGN_MIDDLE_CENTER); - // gMenuText[136] = "NUMBER OF RACERS" + draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] - 1, D_800E06E4[7] + D_800E06E4[1] - 1, gMenuText[ASSET_MENU_TEXT_NUMBEROFRACERS], ALIGN_MIDDLE_CENTER); func_80068508(1); func_8007BF1C(0); for (i = 0; i < 3; i++) { @@ -4976,7 +5195,7 @@ void menu_5_init(void) { D_801263BC = 0; gMenuDelay = 0; D_800E0980 = 0x1E; - load_font(2); + load_font(ASSET_FONTS_BIGFONT); load_level_for_menu(s0, -1, 1); } assign_dialogue_box_id(7); @@ -5099,7 +5318,7 @@ s32 menu_5_loop(s32 updateRate) { void func_80093A0C(void) { func_8009C4A8((s16 *)&D_800E0FB4); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_80000B28(); } @@ -5152,25 +5371,25 @@ void func_80093D40(s32 arg0) { if (D_800E0988 != 0) { if (gTrophyRaceWorldId != 0) { i = yOffset - 26; - render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[130], 1, 12); // QUIT TROPHY RACE? + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[ASSET_MENU_TEXT_QUITTROPHYRACETITLE], 1, 12); // QUIT TROPHY RACE? } else { i = yOffset - 26; - render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[132], 1, 12); // QUIT GAME? + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[ASSET_MENU_TEXT_QUITGAMETITLE], 1, 12); // QUIT GAME? } if (D_800E0988 == 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, i + 28, gMenuText[134], 1, 12); // OK + render_dialogue_text(7, POS_CENTRED, i + 28, gMenuText[ASSET_MENU_TEXT_OK], 1, 12); // OK if (D_800E0988 == 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, i + 44, gMenuText[85], 1, 12); // CANCEL + render_dialogue_text(7, POS_CENTRED, i + 44, gMenuText[ASSET_MENU_TEXT_CANCEL], 1, 12); // CANCEL } else { - render_dialogue_text(7, POS_CENTRED, 12, gMenuText[133], D_800E098C + 1, 12); // PAUSE OPTIONS + render_dialogue_text(7, POS_CENTRED, 12, gMenuText[ASSET_MENU_TEXT_PAUSEOPTIONS], D_800E098C + 1, 12); // PAUSE OPTIONS baseYPos = 32; if (D_800E0984 > 0) { do { @@ -5300,7 +5519,7 @@ void func_80096790(void) { } D_80126BBC = 0; - func_800981E8(); + unload_big_font_4(); func_80000968(0); } @@ -5311,9 +5530,9 @@ void menu_11_init(void) { s8 temp_a2; settings = get_settings(); - D_80126BF0[0] = (s32)gMenuText[24]; - D_80126BF0[1] = (s32)gMenuText[23]; - D_80126BF0[2] = (s32)gMenuText[28]; + D_80126BF0[0] = (s32)gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; + D_80126BF0[1] = (s32)gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; + D_80126BF0[2] = (s32)gMenuText[ASSET_MENU_TEXT_QUIT]; D_80126C14 = 3; for (i = 0; i < gNumberOfActivePlayers; i++) { @@ -5334,7 +5553,7 @@ void menu_11_init(void) { func_8009C674(D_800E0A24); allocate_menu_images(D_800E0A40); func_80094604(); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); func_800C01D8(&sMenuTransitionFadeOut); set_music_player_voice_limit(0x18); play_music(SEQUENCE_MAIN_MENU); @@ -5346,7 +5565,7 @@ GLOBAL_ASM("asm/non_matchings/menu/menu_results_loop.s") void func_800976CC(void) { func_8009C4A8(D_800E0A24); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } /** @@ -5451,14 +5670,18 @@ void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, gCheatInputString = NULL; D_80126C3C = 0; D_80126C34 = 0; - load_font(2); + load_font(ASSET_FONTS_BIGFONT); } GLOBAL_ASM("asm/non_matchings/menu/func_80097918.s") GLOBAL_ASM("asm/non_matchings/menu/func_80097D10.s") -void func_800981E8(void) { - unload_font(2); + +/** + * Explicitly says to unload the ASSET_FONTS_BIGFONT type. + */ +void unload_big_font_4(void) { + unload_font(ASSET_FONTS_BIGFONT); } // Gets triggered when entering trophy race in adventure mode. @@ -5503,7 +5726,7 @@ void menu_trophy_race_round_init(void) { gMenuDelay = 0; D_800E0980 = 10; - load_font(2); + load_font(ASSET_FONTS_BIGFONT); set_music_player_voice_limit(0x18); play_music(SEQUENCE_MAIN_MENU); set_music_fade_timer(0x100); @@ -5536,10 +5759,10 @@ void draw_trophy_race_text(UNUSED s32 updateRate) { //Text Shadows first set_text_colour(0, 0, 0, 255, 128); draw_text(&sMenuCurrDisplayList, 161, 35, (char *)worldName, ALIGN_MIDDLE_CENTER); - draw_text(&sMenuCurrDisplayList, 161, 67, gMenuText[70], ALIGN_MIDDLE_CENTER); // TROPHY RACE + draw_text(&sMenuCurrDisplayList, 161, 67, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], ALIGN_MIDDLE_CENTER); // TROPHY RACE set_text_colour(255, 255, 255, 0, 255); draw_text(&sMenuCurrDisplayList, 160, 32, (char *)worldName, ALIGN_MIDDLE_CENTER); - draw_text(&sMenuCurrDisplayList, 160, 64, gMenuText[70], ALIGN_MIDDLE_CENTER); // TROPHY RACE + draw_text(&sMenuCurrDisplayList, 160, 64, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], ALIGN_MIDDLE_CENTER); // TROPHY RACE draw_text(&sMenuCurrDisplayList, 160, yPos + 176, gMenuText[138 + gTrophyRaceRound], ALIGN_MIDDLE_CENTER); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR draw_text(&sMenuCurrDisplayList, 160, yPos + 208, (char *)levelName, ALIGN_MIDDLE_CENTER); } @@ -5577,7 +5800,7 @@ s32 menu_trophy_race_round_loop(s32 updateRate) { } } if (gMenuDelay >= 31) { - func_80098754(); + unload_big_font_5(); gTrackIdToLoad = trackMenuIds[(((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound)]; D_800DF478 = 1; return gNumberOfActivePlayers; @@ -5586,8 +5809,11 @@ s32 menu_trophy_race_round_loop(s32 updateRate) { return 0; } -void func_80098754(void) { - unload_font(2); +/** + * Explicitly says to unload the ASSET_FONTS_BIGFONT type. + */ +void unload_big_font_5(void) { + unload_font(ASSET_FONTS_BIGFONT); } GLOBAL_ASM("asm/non_matchings/menu/func_80098774.s") @@ -5631,7 +5857,7 @@ GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_rankings_loop.s") void func_80099600(void) { func_8009C4A8(D_800E1024); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } s32 get_trophy_race_world_id(void) { @@ -5654,7 +5880,7 @@ void menu_ghost_data_init(void) { } func_8009C674(&D_800E1708); allocate_menu_images(&D_800E174C); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); D_800E153C[0].texture = D_80126550[14]; D_800E153C[5].texture = D_80126550[15]; D_800E1594[0].texture = D_80126550[16]; @@ -5818,7 +6044,7 @@ s32 menu_ghost_data_loop(s32 updateRate) { void func_8009ABAC(void) { func_8009C4A8(D_800E1708); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); } void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { @@ -5893,7 +6119,7 @@ void menu_credits_init(void) { func_8009C674(D_800E17D8); allocate_menu_images(D_800E17F0); func_80094604(); - load_font(2); + load_font(ASSET_FONTS_BIGFONT); set_music_player_voice_limit(0x18); D_800E18F8 = (u16)0x1000; if (gViewingCreditsFromCheat) { @@ -5957,7 +6183,7 @@ void func_8009BCF0(void) { func_80066894(0, 0); set_viewport_properties(0, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO, VIEWPORT_AUTO); func_8009C4A8(D_800E17D8); - unload_font(2); + unload_font(ASSET_FONTS_BIGFONT); func_8006F564(0); } @@ -6489,30 +6715,30 @@ s32 taj_menu_loop(void) { switch (sCurrentMenuID) { case 2: case 0x62: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[40], 1, 4); // VEHICLE SELECT + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_VEHICLESELECT], 1, 4); // VEHICLE SELECT gDialogueOptionYOffset = 30; - render_dialogue_option(gMenuText[41], 20, 0); // CAR - render_dialogue_option(gMenuText[42], 20, 1); // HOVERCRAFT - render_dialogue_option(gMenuText[43], 20, 2); // PLANE - render_dialogue_option(gMenuText[44], 20, 3); // MAIN MENU + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CAR], 20, 0); // CAR + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_HOVERCRAFT], 20, 1); // HOVERCRAFT + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_PLANE], 20, 2); // PLANE + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_MAINMENU], 20, 3); // MAIN MENU break; case 3: case 0x63: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[45], 1, 4); // CHALLENGE SELECT + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_CHALLENGESELECT], 1, 4); // CHALLENGE SELECT gDialogueOptionYOffset = 30; if (settings->tajFlags & TAJ_FLAGS_CAR_CHAL_UNLOCKED) { gDialogueOptionTangible = settings->tajFlags & TAJ_FLAGS_CAR_CHAL_COMPLETED; - render_dialogue_option(gMenuText[46], 20, 0); // CAR CHALLENGE + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CARCHALLENGE], 20, 0); // CAR CHALLENGE } if (settings->tajFlags & TAJ_FLAGS_HOVER_CHAL_UNLOCKED) { gDialogueOptionTangible = settings->tajFlags & TAJ_FLAGS_HOVER_CHAL_COMPLETED; - render_dialogue_option(gMenuText[47], 20, 1); // HOVER CHALLENGE + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_HOVERCHALLENGE], 20, 1); // HOVER CHALLENGE } if (settings->tajFlags & TAJ_FLAGS_PLANE_CHAL_UNLOCKED) { gDialogueOptionTangible = settings->tajFlags & TAJ_FLAGS_PLANE_CHAL_COMPLETED; - render_dialogue_option(gMenuText[48], 20, 2); // PLANE CHALLENGE + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_PLANECHALLENGE], 20, 2); // PLANE CHALLENGE } - render_dialogue_option(gMenuText[44], 20, 3); // MAIN MENU + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_MAINMENU], 20, 3); // MAIN MENU break; } @@ -6524,13 +6750,13 @@ s32 taj_menu_loop(void) { break; case 1: D_800DF4DC = 0; - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[36], 1, 4); // OPTIONS + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_OPTIONS], 1, 4); // OPTIONS gDialogueOptionYOffset = 30; - render_dialogue_option(gMenuText[37], 20, 0); // CHANGE VEHICLE + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CHANGEVEHICLE], 20, 0); // CHANGE VEHICLE if (settings->tajFlags & TAJ_FLAGS_UNLOCKED_A_CHALLENGE) { - render_dialogue_option(gMenuText[39], 20, 1); // CHALLENGES + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_CHALLENGES], 20, 1); // CHALLENGES } - render_dialogue_option(gMenuText[5], 20, 2); // RETURN + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_RETURN], 20, 2); // RETURN handle_menu_joystick_input(); if (buttonsPressed & B_BUTTON) { sp2C = 3; @@ -6606,7 +6832,7 @@ s32 taj_menu_loop(void) { case -8: case -7: case -6: - func_800C31EC(0xC - sCurrentMenuID); + func_800C31EC(12 - sCurrentMenuID); sCurrentMenuID = 6; sDialogueOption = 0; break; @@ -6647,11 +6873,11 @@ s32 dialogue_race_defeat(void) { playerInput = get_buttons_pressed_from_player(PLAYER_ONE); sDialogueOptionMax = 0; D_800DF4DC = 0; - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[49], 1, 4); // BETTER LUCK - render_dialogue_text(1, POS_CENTRED, 20, gMenuText[50], 1, 4); // NEXT TIME! + 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! gDialogueOptionYOffset = 50; - render_dialogue_option(gMenuText[23], 20, 0); // TRY AGAIN - render_dialogue_option(gMenuText[51], 20, 1); // EXIT + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TRYAGAIN], 20, 0); // TRY AGAIN + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_EXIT], 20, 1); // EXIT handle_menu_joystick_input(); if (playerInput & A_BUTTON) { play_sound_global(SOUND_SELECT2, NULL); @@ -6704,19 +6930,19 @@ s32 tt_menu_loop(void) { switch (sCurrentMenuID) { case TT_MENU_ROOT: case TT_MENU_EXIT: - render_dialogue_text(1, POS_CENTRED, 6, gMenuText[36], 1, 4); // OPTIONS - render_dialogue_option(gMenuText[71], 0x14, 3); // STATUS + 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 if (!is_in_two_player_adventure()) { if (is_time_trial_enabled()) { - render_dialogue_option(gMenuText[65], 0x14, 0); // TIME TRIAL ON + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALON], 0x14, 0); // TIME TRIAL ON } else { - render_dialogue_option(gMenuText[66], 0x14, 0); // TIME TRIAL OFF + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_TIMETRIALOFF], 0x14, 0); // TIME TRIAL OFF } if (func_8001B780() != 0) { - render_dialogue_option(gMenuText[27], 0x14, 1); // SAVE GHOST + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_SAVEGHOST], 0x14, 1); // SAVE GHOST } } - render_dialogue_option(gMenuText[5], 0x14, 2); // RETURN + render_dialogue_option(gMenuText[ASSET_MENU_TEXT_RETURN], 0x14, 2); // RETURN handle_menu_joystick_input(); if (D_80126516 == 0) { if (gControllersXAxisDirection[0] > 0) { @@ -6808,9 +7034,9 @@ s32 tt_menu_loop(void) { } break; case TT_MENU_INSERT_CONT_PAK: - render_dialogue_text(1, POS_CENTRED, 34, gMenuText[159], 1, 4); // If you wish to use - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[160], 1, 4); // the Controller Pak - render_dialogue_text(1, POS_CENTRED, 66, gMenuText[162], 1, 4); // insert it now! + 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! if (buttonsPressed & (A_BUTTON | START_BUTTON)) { play_sound_global(SOUND_SELECT2, NULL); D_80126398 = 0; @@ -6822,15 +7048,15 @@ s32 tt_menu_loop(void) { } break; case TT_MENU_INSERT_RUMBLE_PAK: - render_dialogue_text(1, POS_CENTRED, 34, gMenuText[159], 1, 4); // If you wish to use - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[161], 1, 4); // the Rumble Pak - render_dialogue_text(1, POS_CENTRED, 66, gMenuText[162], 1, 4); // insert it now! + 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! 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[124], 1, 4); // PLEASE WAIT + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_PLEASEWAIT], 1, 4); // PLEASE WAIT D_80126398++; if (D_80126398 >= 5) { result = func_8001B738(0) & 0xFF; @@ -6881,7 +7107,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[64], 1, 4); // PAK ERROR + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_PAKERROR], 1, 4); // PAK ERROR } return currentOption; @@ -6899,11 +7125,11 @@ s32 trophy_race_cabinet_menu_loop(void) { s32 currentOption; s32 buttonsPressed; - set_current_dialogue_box_coords(1, 0x18, 0x10, 0xB8, 0x78); + set_current_dialogue_box_coords(1, 24, 16, 184, 120); 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[70], 1, 4); // TROPHY RACE + render_dialogue_text(1, POS_CENTRED, 6, gMenuText[ASSET_MENU_TEXT_TROPHYRACE], 1, 4); // TROPHY RACE if (gControllersYAxisDirection[0] < 0) { sDialogueOption++; } else if (gControllersYAxisDirection[0] > 0) { @@ -6916,9 +7142,9 @@ s32 trophy_race_cabinet_menu_loop(void) { sDialogueOption = 1; } set_option_text_colour(sDialogueOption == 0); - render_dialogue_text(1, POS_CENTRED, 30, gMenuText[180], 1, 4); // ENTER TROPHY RACE + render_dialogue_text(1, POS_CENTRED, 30, gMenuText[ASSET_MENU_TEXT_ENTERTROPHYRACE], 1, 4); // ENTER TROPHY RACE set_option_text_colour(sDialogueOption == 1); - render_dialogue_text(1, POS_CENTRED, 50, gMenuText[51], 1, 4); // EXIT + render_dialogue_text(1, POS_CENTRED, 50, gMenuText[ASSET_MENU_TEXT_EXIT], 1, 4); // EXIT if (buttonsPressed & A_BUTTON) { currentOption = sDialogueOption + 1; } @@ -6965,13 +7191,13 @@ u64 *get_eeprom_settings_pointer(void) { s32 set_eeprom_settings_value(u64 valueToSet) { sEepromSettings |= valueToSet; func_8006ECE0(); - return 1; + return TRUE; } s32 unset_eeprom_settings_value(u64 valueToUnset) { sEepromSettings &= ~valueToUnset; func_8006ECE0(); - return 1; + return TRUE; } u64 get_eeprom_settings(void) { diff --git a/src/menu.h b/src/menu.h index 87d48eb8..d110bdbf 100644 --- a/src/menu.h +++ b/src/menu.h @@ -94,6 +94,13 @@ typedef enum MENU_ID { MENU_CAUTION } MENU_ID; +typedef enum PakError { + PAK_ERROR_NONE, + PAK_ERROR_FATAL, + PAK_ERROR_FULL, + PAK_ERROR_CORRUPT +} PakError; + /* Size: 0x20 bytes */ // So this is looking to be a struct for menu images. typedef struct unk800DF510 { @@ -327,20 +334,20 @@ extern s32 D_800DFAE0; // Unsure about typing with these arrays. -extern s32 D_800DFAE4[6]; -extern s32 D_800DFAFC[6]; -extern s32 D_800DFB14[6]; -extern s32 D_800DFB2C[5]; -extern s32 D_800DFB40[7]; -extern s32 D_800DFB5C[6]; -extern s32 D_800DFB74[6]; -extern s32 D_800DFB8C[6]; -extern s32 D_800DFBA4[6]; -extern s32 D_800DFBBC[8]; +extern char *D_800DFAE4[6]; +extern char *D_800DFAFC[6]; +extern char *D_800DFB14[6]; +extern char *D_800DFB2C[5]; +extern char *D_800DFB40[7]; +extern char *D_800DFB5C[6]; +extern char *D_800DFB74[6]; +extern char *D_800DFB8C[6]; +extern char *D_800DFBA4[6]; +extern char *D_800DFBBC[8]; extern s32 D_800DFBDC; // Unused? -extern s32* D_800DFBE0[10]; +extern char *D_800DFBE0[10]; extern s32 D_800DFC08; extern s32 D_800DFC0C; @@ -350,7 +357,7 @@ extern u8 D_800DFC70[8]; extern s16 D_800DFC78[26]; -extern MenuElement D_800DFCB4[7]; +extern MenuElement gControllerPakMenuElement[7]; extern s32 gShowControllerPakMenu; @@ -631,6 +638,18 @@ extern s16 D_800E1E2C[10]; extern s16 D_800E1E40[10]; +extern char *D_800E09F8[3]; +extern char *gAudioOutputStrings[3]; +extern char *gFilenames[3]; +extern char *gMusicTestString; +extern char *sBadControllerPakMenuText[5]; +extern char *sControllerPakFullMenuText[5]; +extern char *sCorruptDataMenuText[3]; +extern u64 sEepromSettings; +extern char *sInsertControllerPakMenuText[3]; +extern char *sNoControllerPakMenuText[5]; +extern char *sInsertRumblePakMenuText[4]; + s32 get_random_number_from_range(s32, s32); // No file to pull from yet. void func_8007FF88(void); @@ -648,8 +667,8 @@ void init_title_screen_variables(void); void menu_title_screen_init(void); void func_80084118(void); void menu_options_init(void); -void func_800841B8(s32 arg0); -void func_80084734(void); +void render_options_menu_ui(s32 updateRate); +void unload_big_font_1(void); void menu_audio_options_init(void); void func_800851FC(void); void menu_save_options_init(void); @@ -663,7 +682,7 @@ void menu_boot_init(void); void func_800887C4(void); void func_800887E8(void); void func_800895A4(void); -void func_8008A4C8(void); +void unload_big_font_2(void); void menu_magic_codes_list_init(void); void func_8008A8F8(s32 arg0, s32 arg1, s32 arg2); void func_8008AD1C(void); @@ -674,7 +693,7 @@ void draw_character_select_text(s32 arg0); void func_8008BFE8(s32 arg0, s8 *arg1, s32 arg2, u16 arg3, u16 arg4); void func_8008C128(void); void menu_caution_init(void); -void unload_large_font(void); +void unload_big_font_3(void); void func_8008CACC(void); void menu_file_select_init(void); void render_menu_image(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6); @@ -696,10 +715,10 @@ void func_800976CC(void); void decompress_filename_string(u32 compressedFilename, char *output, s32 length); s32 compress_filename_string(unsigned char *filename, s32 length); void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, s32 arg6); -void func_800981E8(void); +void unload_big_font_4(void); void func_80098208(void); void draw_trophy_race_text(UNUSED s32 updateRate); -void func_80098754(void); +void unload_big_font_5(void); void func_80099600(void); s32 get_trophy_race_world_id(void); void func_8009ABAC(void); @@ -772,13 +791,15 @@ void menu_magic_codes_init(void); s32 menu_game_select_loop(s32 arg0); s32 menu_ghost_data_loop(s32 updateRate); s32 menu_trophy_race_round_loop(s32 updateRate); +void render_controller_pak_ui(UNUSED s32 updateRate); +PakError check_for_controller_pak_errors(void); // Non Matching functions below here void load_menu_text(s32 language); // Non Matching void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2); s32 menu_audio_options_loop(s32 arg0); -s32 menu_options_loop(s32 arg0); -s32 func_800890AC(s32); +s32 menu_options_loop(s32 updateRate); +s32 menu_controller_pak_loop(s32 updateRate); void render_magic_codes_list_menu_text(s32 arg0); s32 menu_magic_codes_list_loop(s32 arg0); void calculate_and_display_rom_checksum(void); @@ -814,7 +835,6 @@ void func_8009CA60(s32 imageID); void func_8007FFEC(s32 arg0); void func_800871D8(s32 arg0); SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1); -s32 func_8008832C(void); void func_8009C6D4(s32 arg0); void func_8008B358(void); void func_8008B4C8(void); diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index d01b1d9e..895f5937 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -1,3 +1,5 @@ +compiler_type = "ido" + [preserve_macros] "g[DS]P.*" = "void" "gDma.*" = "void"