From 2149dedfd4dad482c1e941aafa90c4ec0b58adbf Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:40:45 +0100 Subject: [PATCH] Adventure 2 30% (#414) * struct sizeofs * snowblal struct is become dead * Some debug string relocation * printf * Floaties * rename four unused particle funcs * Particle cleanup part 1 * oh god I'm actually starting to understand this system * am straight blasting * Update particles.c * more * l * Label camera.c * Update game.c * Fix warnings * Fix names in the memory pool * menu time * more * menu :)))) * finished with the inits * youre gonna love this * Update README.md --- README.md | 10 +- asm/entrypoint.s | 4 +- asm/non_matchings/camera/func_80065EA0.s | 20 +- asm/non_matchings/game_ui/func_800AA600.s | 2 +- asm/non_matchings/menu/func_80081218.s | 4 +- asm/non_matchings/menu/func_80084854.s | 12 +- asm/non_matchings/menu/func_800853D0.s | 40 +- asm/non_matchings/menu/func_80085B9C.s | 4 +- asm/non_matchings/menu/func_800871D8.s | 4 +- asm/non_matchings/menu/func_80087734.s | 12 +- asm/non_matchings/menu/func_8008B758.s | 8 +- asm/non_matchings/menu/func_80092188.s | 32 +- asm/non_matchings/menu/func_80094D28.s | 24 +- asm/non_matchings/menu/func_80095728.s | 92 +- asm/non_matchings/menu/func_80096978.s | 16 +- asm/non_matchings/menu/func_80098774.s | 8 +- asm/non_matchings/menu/func_80099E8C.s | 8 +- asm/non_matchings/menu/func_8009C6D4.s | 16 +- asm/non_matchings/menu/func_8009CA60.s | 10 +- .../menu/menu_audio_options_loop.s | 8 +- asm/non_matchings/menu/menu_credits_loop.s | 8 +- asm/non_matchings/menu/menu_ghost_data_init.s | 10 +- .../menu/menu_track_select_init.s | 6 +- .../menu/render_file_select_menu.s | 16 +- .../menu/render_magic_codes_list_menu_text.s | 16 +- .../menu/render_magic_codes_ui.s | 8 +- .../menu/render_track_select_setup_ui.s | 48 +- .../calc_dynamic_lighting_for_object_1.s | 4 +- asm/non_matchings/objects/func_800135B8.s | 2 +- asm/non_matchings/waves/func_800BA8E4.s | 1344 ++++++++--------- asm/non_matchings/weather/func_800ACA20.s | 2 +- .../calc_dynamic_lighting_for_object_2.s | 2 +- include/enums.h | 2 +- include/level_object_entries.h | 6 +- include/structs.h | 2 +- src/audio.c | 12 +- src/camera.c | 539 +++---- src/camera.h | 14 +- src/game.c | 4 +- src/memory.c | 17 +- src/memory.h | 2 +- src/menu.c | 1039 +++++++------ src/menu.h | 440 +----- src/object_functions.c | 68 +- src/object_models.c | 18 +- src/objects.c | 42 +- src/objects.h | 2 +- src/particles.c | 2 +- src/racer.c | 4 +- src/textures_sprites.c | 2 +- src/tracks.c | 2 +- src/weather.c | 4 +- 52 files changed, 1860 insertions(+), 2161 deletions(-) diff --git a/README.md b/README.md index b29c3eda..ba3b1655 100644 --- a/README.md +++ b/README.md @@ -144,14 +144,14 @@ As of October 4th, 2023, this is our current score: We are collecting silver coins in Crescent Island. (0/8 silver coins) ===================================================================== ADVENTURE TWO (Cleanup & Documentation) - -------------------------- 28.44% Complete -------------------------- - # Documented functions: 624 - # Undocumented remaining: 946 + -------------------------- 30.06% Complete -------------------------- + # Documented functions: 656 + # Undocumented remaining: 914 ---------------------------- Game Status ---------------------------- - Balloons: 14/47, Keys: 1/4, Trophies: 1/5 + Balloons: 15/47, Keys: 1/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 --------------------------------------------------------------------- - We are racing in Walrus Cove. (Lap 3/3) + We are racing in Snowball Valley. (Lap 3/3) ===================================================================== ``` diff --git a/asm/entrypoint.s b/asm/entrypoint.s index bfc88e66..b2fa9dee 100644 --- a/asm/entrypoint.s +++ b/asm/entrypoint.s @@ -21,10 +21,10 @@ glabel entrypoint /* 00101C 8000041C 1520FFFC */ bnez $t1, .L80000410 /* 001020 80000420 21080008 */ addi $t0, $t0, 8 /* 001024 80000424 3C0A8006 */ lui $t2, %hi(main) # $t2, 0x8006 -/* 001028 80000428 3C1D8012 */ lui $sp, %hi(gActiveCameraStack) # $sp, 0x8012 +/* 001028 80000428 3C1D8012 */ lui $sp, %hi(gCameraSegment) # $sp, 0x8012 /* 00102C 8000042C 254A5D40 */ addiu $t2, %lo(main) # addiu $t2, $t2, 0x5d40 /* 001030 80000430 01400008 */ jr $t2 -/* 001034 80000434 27BD0AC0 */ addiu $sp, %lo(gActiveCameraStack) # addiu $sp, $sp, 0xac0 +/* 001034 80000434 27BD0AC0 */ addiu $sp, %lo(gCameraSegment) # addiu $sp, $sp, 0xac0 /* 001038 80000438 00000000 */ nop /* 00103C 8000043C 00000000 */ nop /* 001040 80000440 00000000 */ nop diff --git a/asm/non_matchings/camera/func_80065EA0.s b/asm/non_matchings/camera/func_80065EA0.s index 0237da30..0b7cda3f 100644 --- a/asm/non_matchings/camera/func_80065EA0.s +++ b/asm/non_matchings/camera/func_80065EA0.s @@ -6,14 +6,14 @@ glabel D_800E709C glabel func_80065EA0 /* 066AA0 80065EA0 3C048012 */ lui $a0, %hi(D_80120DA0) # $a0, 0x8012 /* 066AA4 80065EA4 24030001 */ li $v1, 1 -/* 066AA8 80065EA8 3C0F8012 */ lui $t7, %hi(D_80120D70) # $t7, 0x8012 -/* 066AAC 80065EAC 25EF0D70 */ addiu $t7, %lo(D_80120D70) # addiu $t7, $t7, 0xd70 +/* 066AA8 80065EA8 3C0F8012 */ lui $t7, %hi(gModelMatrixF) # $t7, 0x8012 +/* 066AAC 80065EAC 25EF0D70 */ addiu $t7, %lo(gModelMatrixF) # addiu $t7, $t7, 0xd70 /* 066AB0 80065EB0 00037080 */ sll $t6, $v1, 2 /* 066AB4 80065EB4 24840DA0 */ addiu $a0, %lo(D_80120DA0) # addiu $a0, $a0, 0xda0 /* 066AB8 80065EB8 01CF1021 */ addu $v0, $t6, $t7 /* 066ABC 80065EBC 0003C980 */ sll $t9, $v1, 6 -/* 066AC0 80065EC0 3C018012 */ lui $at, %hi(D_80120D70) # $at, 0x8012 -/* 066AC4 80065EC4 AC240D70 */ sw $a0, %lo(D_80120D70)($at) +/* 066AC0 80065EC0 3C018012 */ lui $at, %hi(gModelMatrixF) # $at, 0x8012 +/* 066AC4 80065EC4 AC240D70 */ sw $a0, %lo(gModelMatrixF)($at) /* 066AC8 80065EC8 00994021 */ addu $t0, $a0, $t9 /* 066ACC 80065ECC 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 066AD0 80065ED0 AC480000 */ sw $t0, ($v0) @@ -53,10 +53,10 @@ glabel func_80065EA0 /* 066B54 80065F54 3C018012 */ lui $at, %hi(gCutsceneCameraActive) # $at, 0x8012 /* 066B58 80065F58 A0200D14 */ sb $zero, %lo(gCutsceneCameraActive)($at) /* 066B5C 80065F5C AE200000 */ sw $zero, ($s1) -/* 066B60 80065F60 3C018012 */ lui $at, %hi(D_80120D1C) # $at, 0x8012 -/* 066B64 80065F64 AC200D1C */ sw $zero, %lo(D_80120D1C)($at) -/* 066B68 80065F68 3C018012 */ lui $at, %hi(D_80120D20) # $at, 0x8012 -/* 066B6C 80065F6C AC200D20 */ sw $zero, %lo(D_80120D20)($at) +/* 066B60 80065F60 3C018012 */ lui $at, %hi(gModelMatrixStackPos) # $at, 0x8012 +/* 066B64 80065F64 AC200D1C */ sw $zero, %lo(gModelMatrixStackPos)($at) +/* 066B68 80065F68 3C018012 */ lui $at, %hi(gCameraMatrixPos) # $at, 0x8012 +/* 066B6C 80065F6C AC200D20 */ sw $zero, %lo(gCameraMatrixPos)($at) /* 066B70 80065F70 3C018012 */ lui $at, %hi(gNumberOfViewports) # $at, 0x8012 /* 066B74 80065F74 AC200CE0 */ sw $zero, %lo(gNumberOfViewports)($at) /* 066B78 80065F78 3C018012 */ lui $at, %hi(D_80120D0C) # $at, 0x8012 @@ -106,8 +106,8 @@ glabel func_80065EA0 /* 066C1C 8006601C E7A60014 */ swc1 $f6, 0x14($sp) /* 066C20 80066020 0C033248 */ jal guPerspectiveF /* 066C24 80066024 E7A80018 */ swc1 $f8, 0x18($sp) -/* 066C28 80066028 3C058012 */ lui $a1, %hi(gPerspectiveMatrixS) # $a1, 0x8012 -/* 066C2C 8006602C 24A50FE0 */ addiu $a1, %lo(gPerspectiveMatrixS) # addiu $a1, $a1, 0xfe0 +/* 066C28 80066028 3C058012 */ lui $a1, %hi(gProjectionMatrixS) # $a1, 0x8012 +/* 066C2C 8006602C 24A50FE0 */ addiu $a1, %lo(gProjectionMatrixS) # addiu $a1, $a1, 0xfe0 /* 066C30 80066030 0C01BE1C */ jal f32_matrix_to_s16_matrix /* 066C34 80066034 02002025 */ move $a0, $s0 /* 066C38 80066038 3C014270 */ li $at, 0x42700000 # 60.000000 diff --git a/asm/non_matchings/game_ui/func_800AA600.s b/asm/non_matchings/game_ui/func_800AA600.s index 2aaad0d9..f22f6da6 100644 --- a/asm/non_matchings/game_ui/func_800AA600.s +++ b/asm/non_matchings/game_ui/func_800AA600.s @@ -608,7 +608,7 @@ glabel func_800AA600 /* 0ABAEC 800AAEEC 0C02ABF4 */ jal func_800AAFD0 /* 0ABAF0 800AAEF0 00000000 */ nop /* 0ABAF4 800AAEF4 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0ABAF8 800AAEF8 0C01A690 */ jal func_80069A40 +/* 0ABAF8 800AAEF8 0C01A690 */ jal apply_matrix_from_stack /* 0ABAFC 800AAEFC 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc .L800AAF00: /* 0ABB00 800AAF00 86080006 */ lh $t0, 6($s0) diff --git a/asm/non_matchings/menu/func_80081218.s b/asm/non_matchings/menu/func_80081218.s index 1539a3e3..15edabca 100644 --- a/asm/non_matchings/menu/func_80081218.s +++ b/asm/non_matchings/menu/func_80081218.s @@ -91,10 +91,10 @@ glabel func_80081218 /* 081F7C 8008137C AC22F4A0 */ sw $v0, %lo(gMenuText)($at) /* 081F80 80081380 0C01FE40 */ jal load_menu_text /* 081F84 80081384 00002025 */ move $a0, $zero -/* 081F88 80081388 3C028012 */ lui $v0, %hi(D_80126550) # $v0, 0x8012 +/* 081F88 80081388 3C028012 */ lui $v0, %hi(gMenuTextures) # $v0, 0x8012 /* 081F8C 8008138C 3C038012 */ lui $v1, %hi(D_80126750) # $v1, 0x8012 /* 081F90 80081390 24636750 */ addiu $v1, %lo(D_80126750) # addiu $v1, $v1, 0x6750 -/* 081F94 80081394 24426550 */ addiu $v0, %lo(D_80126550) # addiu $v0, $v0, 0x6550 +/* 081F94 80081394 24426550 */ addiu $v0, %lo(gMenuTextures) # addiu $v0, $v0, 0x6550 .L80081398: /* 081F98 80081398 24420010 */ addiu $v0, $v0, 0x10 /* 081F9C 8008139C AC40FFF0 */ sw $zero, -0x10($v0) diff --git a/asm/non_matchings/menu/func_80084854.s b/asm/non_matchings/menu/func_80084854.s index 986e057d..53651ab7 100644 --- a/asm/non_matchings/menu/func_80084854.s +++ b/asm/non_matchings/menu/func_80084854.s @@ -91,8 +91,8 @@ glabel func_80084854 .L800849A4: /* 0855A4 800849A4 24100071 */ li $s0, 113 .L800849A8: -/* 0855A8 800849A8 3C0D8012 */ lui $t5, %hi(D_80126550) # $t5, 0x8012 -/* 0855AC 800849AC 8DAD6660 */ lw $t5, %lo(D_80126550 + 0x110)($t5) +/* 0855A8 800849A8 3C0D8012 */ lui $t5, %hi(gMenuTextures) # $t5, 0x8012 +/* 0855AC 800849AC 8DAD6660 */ lw $t5, %lo(gMenuTextures + 0x110)($t5) /* 0855B0 800849B0 24090078 */ li $t1, 120 /* 0855B4 800849B4 240B000E */ li $t3, 14 /* 0855B8 800849B8 240A0006 */ li $t2, 6 @@ -107,8 +107,8 @@ glabel func_80084854 /* 0855DC 800849DC AFB1001C */ sw $s1, 0x1c($sp) /* 0855E0 800849E0 0C020160 */ jal func_80080580 /* 0855E4 800849E4 AFAD0020 */ sw $t5, 0x20($sp) -/* 0855E8 800849E8 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 -/* 0855EC 800849EC 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 0855E8 800849E8 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 +/* 0855EC 800849EC 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 0855F0 800849F0 240E0050 */ li $t6, 80 /* 0855F4 800849F4 240F000E */ li $t7, 14 /* 0855F8 800849F8 24180006 */ li $t8, 6 @@ -199,8 +199,8 @@ glabel func_80084854 /* 08574C 80084B4C 00003025 */ move $a2, $zero /* 085750 80084B50 0C0310F3 */ jal set_text_background_colour /* 085754 80084B54 00003825 */ move $a3, $zero -/* 085758 80084B58 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 -/* 08575C 80084B5C 8D8C63E0 */ lw $t4, %lo(D_801263E0)($t4) +/* 085758 80084B58 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 +/* 08575C 80084B5C 8D8C63E0 */ lw $t4, %lo(gMenuOptionCount)($t4) /* 085760 80084B60 00001825 */ move $v1, $zero /* 085764 80084B64 29810005 */ slti $at, $t4, 5 /* 085768 80084B68 10200005 */ beqz $at, .L80084B80 diff --git a/asm/non_matchings/menu/func_800853D0.s b/asm/non_matchings/menu/func_800853D0.s index 0446a13e..97f58c72 100644 --- a/asm/non_matchings/menu/func_800853D0.s +++ b/asm/non_matchings/menu/func_800853D0.s @@ -32,9 +32,9 @@ glabel L8008541C /* 086030 80085430 00035080 */ sll $t2, $v1, 2 /* 086034 80085434 004A1021 */ addu $v0, $v0, $t2 /* 086038 80085438 8C426530 */ lw $v0, %lo(gSavefileData)($v0) -/* 08603C 8008543C 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 08603C 8008543C 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086040 80085440 904B004B */ lbu $t3, 0x4b($v0) -/* 086044 80085444 8D08665C */ lw $t0, %lo(D_80126550 + 0x10C)($t0) +/* 086044 80085444 8D08665C */ lw $t0, %lo(gMenuTextures + 0x10C)($t0) /* 086048 80085448 3C09B0E0 */ lui $t1, (0xB0E0C0FF >> 16) # lui $t1, 0xb0e0 /* 08604C 8008544C 3529C0FF */ ori $t1, (0xB0E0C0FF & 0xFFFF) # ori $t1, $t1, 0xc0ff /* 086050 80085450 1560002F */ bnez $t3, .L80085510 @@ -107,10 +107,10 @@ glabel L8008553C /* 086148 80085548 254AFC20 */ addiu $t2, %lo(D_800DFC20) # addiu $t2, $t2, -0x3e0 /* 08614C 8008554C AFAA0068 */ sw $t2, 0x68($sp) /* 086150 80085550 8C6B01E0 */ lw $t3, 0x1e0($v1) -/* 086154 80085554 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 086154 80085554 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086158 80085558 AFAB0064 */ sw $t3, 0x64($sp) /* 08615C 8008555C 8C6C01DC */ lw $t4, 0x1dc($v1) -/* 086160 80085560 8D08665C */ lw $t0, %lo(D_80126550 + 0x10C)($t0) +/* 086160 80085560 8D08665C */ lw $t0, %lo(gMenuTextures + 0x10C)($t0) /* 086164 80085564 3C09B0E0 */ lui $t1, (0xB0E0C0FF >> 16) # lui $t1, 0xb0e0 /* 086168 80085568 3529C0FF */ ori $t1, (0xB0E0C0FF & 0xFFFF) # ori $t1, $t1, 0xc0ff /* 08616C 8008556C 100000BA */ b .L80085858 @@ -123,10 +123,10 @@ glabel L80085574 /* 086184 80085584 27A50050 */ addiu $a1, $sp, 0x50 /* 086188 80085588 3C09800E */ lui $t1, %hi(D_800DFACC) # $t1, 0x800e /* 08618C 8008558C 000E7880 */ sll $t7, $t6, 2 -/* 086190 80085590 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 086190 80085590 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086194 80085594 012F4821 */ addu $t1, $t1, $t7 /* 086198 80085598 AFA50064 */ sw $a1, 0x64($sp) -/* 08619C 8008559C 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 08619C 8008559C 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 0861A0 800855A0 8D29FACC */ lw $t1, %lo(D_800DFACC)($t1) /* 0861A4 800855A4 86040004 */ lh $a0, 4($s0) /* 0861A8 800855A8 24060003 */ li $a2, 3 @@ -205,9 +205,9 @@ glabel L80085690 /* 0862B8 800856B8 AFB80064 */ sw $t8, 0x64($sp) /* 0862BC 800856BC 032A5821 */ addu $t3, $t9, $t2 /* 0862C0 800856C0 8D6C0158 */ lw $t4, 0x158($t3) -/* 0862C4 800856C4 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 0862C4 800856C4 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 0862C8 800856C8 012F4821 */ addu $t1, $t1, $t7 -/* 0862CC 800856CC 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 0862CC 800856CC 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 0862D0 800856D0 8D29FACC */ lw $t1, %lo(D_800DFACC)($t1) /* 0862D4 800856D4 10000060 */ b .L80085858 /* 0862D8 800856D8 AFAC0060 */ sw $t4, 0x60($sp) @@ -225,9 +225,9 @@ glabel L800856DC /* 086304 80085704 00026880 */ sll $t5, $v0, 2 /* 086308 80085708 AFAF0064 */ sw $t7, 0x64($sp) /* 08630C 8008570C 8F2A0158 */ lw $t2, 0x158($t9) -/* 086310 80085710 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 086310 80085710 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086314 80085714 012D4821 */ addu $t1, $t1, $t5 -/* 086318 80085718 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 086318 80085718 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 08631C 8008571C 8D29FACC */ lw $t1, %lo(D_800DFACC)($t1) /* 086320 80085720 1000004D */ b .L80085858 /* 086324 80085724 AFAA0060 */ sw $t2, 0x60($sp) @@ -245,9 +245,9 @@ glabel L80085728 /* 086350 80085750 AFAE0064 */ sw $t6, 0x64($sp) /* 086354 80085754 01AFC021 */ addu $t8, $t5, $t7 /* 086358 80085758 8F190158 */ lw $t9, 0x158($t8) -/* 08635C 8008575C 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 08635C 8008575C 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086360 80085760 012C4821 */ addu $t1, $t1, $t4 -/* 086364 80085764 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 086364 80085764 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 086368 80085768 8D29FACC */ lw $t1, %lo(D_800DFACC)($t1) /* 08636C 8008576C 1000003A */ b .L80085858 /* 086370 80085770 AFB90060 */ sw $t9, 0x60($sp) @@ -265,9 +265,9 @@ glabel L80085774 /* 08639C 8008579C 00025880 */ sll $t3, $v0, 2 /* 0863A0 800857A0 AFAC0064 */ sw $t4, 0x64($sp) /* 0863A4 800857A4 8DAF0158 */ lw $t7, 0x158($t5) -/* 0863A8 800857A8 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 0863A8 800857A8 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 0863AC 800857AC 012B4821 */ addu $t1, $t1, $t3 -/* 0863B0 800857B0 8D086660 */ lw $t0, %lo(D_80126550 + 0x110)($t0) +/* 0863B0 800857B0 8D086660 */ lw $t0, %lo(gMenuTextures + 0x110)($t0) /* 0863B4 800857B4 8D29FACC */ lw $t1, %lo(D_800DFACC)($t1) /* 0863B8 800857B8 10000027 */ b .L80085858 /* 0863BC 800857BC AFAF0060 */ sw $t7, 0x60($sp) @@ -278,8 +278,8 @@ glabel L800857C0 /* 0863CC 800857CC 2718FC30 */ addiu $t8, %lo(D_800DFC30) # addiu $t8, $t8, -0x3d0 /* 0863D0 800857D0 AFB80068 */ sw $t8, 0x68($sp) /* 0863D4 800857D4 8F2A01EC */ lw $t2, 0x1ec($t9) -/* 0863D8 800857D8 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 -/* 0863DC 800857DC 8D086664 */ lw $t0, %lo(D_80126550 + 0x114)($t0) +/* 0863D8 800857D8 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 +/* 0863DC 800857DC 8D086664 */ lw $t0, %lo(gMenuTextures + 0x114)($t0) /* 0863E0 800857E0 2409FFFF */ li $t1, -1 /* 0863E4 800857E4 AFA00060 */ sw $zero, 0x60($sp) /* 0863E8 800857E8 1000001B */ b .L80085858 @@ -291,10 +291,10 @@ glabel L800857F0 /* 0863FC 800857FC 256BFC10 */ addiu $t3, %lo(D_800DFC10) # addiu $t3, $t3, -0x3f0 /* 086400 80085800 AFAB0068 */ sw $t3, 0x68($sp) /* 086404 80085804 8C6C02D4 */ lw $t4, 0x2d4($v1) -/* 086408 80085808 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 086408 80085808 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 08640C 8008580C AFAC0064 */ sw $t4, 0x64($sp) /* 086410 80085810 8C6E01DC */ lw $t6, 0x1dc($v1) -/* 086414 80085814 8D08665C */ lw $t0, %lo(D_80126550 + 0x10C)($t0) +/* 086414 80085814 8D08665C */ lw $t0, %lo(gMenuTextures + 0x10C)($t0) /* 086418 80085818 3C09B0E0 */ lui $t1, (0xB0E0C0FF >> 16) # lui $t1, 0xb0e0 /* 08641C 8008581C 3529C0FF */ ori $t1, (0xB0E0C0FF & 0xFFFF) # ori $t1, $t1, 0xc0ff /* 086420 80085820 1000000D */ b .L80085858 @@ -307,9 +307,9 @@ glabel L80085828 /* 086434 80085834 25ADFC60 */ addiu $t5, %lo(D_800DFC60) # addiu $t5, $t5, -0x3a0 /* 086438 80085838 AFAD0068 */ sw $t5, 0x68($sp) /* 08643C 8008583C 8DF80144 */ lw $t8, 0x144($t7) -/* 086440 80085840 3C088012 */ lui $t0, %hi(D_80126550) # $t0, 0x8012 +/* 086440 80085840 3C088012 */ lui $t0, %hi(gMenuTextures) # $t0, 0x8012 /* 086444 80085844 3C098080 */ lui $t1, (0x808080FF >> 16) # lui $t1, 0x8080 -/* 086448 80085848 8D086664 */ lw $t0, %lo(D_80126550 + 0x114)($t0) +/* 086448 80085848 8D086664 */ lw $t0, %lo(gMenuTextures + 0x114)($t0) /* 08644C 8008584C 352980FF */ ori $t1, (0x808080FF & 0xFFFF) # ori $t1, $t1, 0x80ff /* 086450 80085850 AFA00060 */ sw $zero, 0x60($sp) /* 086454 80085854 AFB80064 */ sw $t8, 0x64($sp) diff --git a/asm/non_matchings/menu/func_80085B9C.s b/asm/non_matchings/menu/func_80085B9C.s index 05127ca3..6ee91c80 100644 --- a/asm/non_matchings/menu/func_80085B9C.s +++ b/asm/non_matchings/menu/func_80085B9C.s @@ -13,8 +13,8 @@ glabel func_80085B9C /* 0867B4 80085BB4 AFB00028 */ sw $s0, 0x28($sp) /* 0867B8 80085BB8 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0867BC 80085BBC AFA40068 */ sw $a0, 0x68($sp) -/* 0867C0 80085BC0 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 -/* 0867C4 80085BC4 8C6363E0 */ lw $v1, %lo(D_801263E0)($v1) +/* 0867C0 80085BC0 3C038012 */ lui $v1, %hi(gMenuOptionCount) # $v1, 0x8012 +/* 0867C4 80085BC4 8C6363E0 */ lw $v1, %lo(gMenuOptionCount)($v1) /* 0867C8 80085BC8 3C01800F */ lui $at, %hi(jpt_800E83E0) # $at, 0x800f /* 0867CC 80085BCC 306E0007 */ andi $t6, $v1, 7 /* 0867D0 80085BD0 000E7080 */ sll $t6, $t6, 2 diff --git a/asm/non_matchings/menu/func_800871D8.s b/asm/non_matchings/menu/func_800871D8.s index 41db8cd4..b668179b 100644 --- a/asm/non_matchings/menu/func_800871D8.s +++ b/asm/non_matchings/menu/func_800871D8.s @@ -186,8 +186,8 @@ glabel func_800871D8 /* 088090 80087490 1620FFF0 */ bnez $s1, .L80087454 /* 088094 80087494 26520010 */ addiu $s2, $s2, 0x10 .L80087498: -/* 088098 80087498 3C028012 */ lui $v0, %hi(D_801263E0) # $v0, 0x8012 -/* 08809C 8008749C 244263E0 */ addiu $v0, %lo(D_801263E0) # addiu $v0, $v0, 0x63e0 +/* 088098 80087498 3C028012 */ lui $v0, %hi(gMenuOptionCount) # $v0, 0x8012 +/* 08809C 8008749C 244263E0 */ addiu $v0, %lo(gMenuOptionCount) # addiu $v0, $v0, 0x63e0 /* 0880A0 800874A0 8C490000 */ lw $t1, ($v0) /* 0880A4 800874A4 8FBF0034 */ lw $ra, 0x34($sp) /* 0880A8 800874A8 8FB0001C */ lw $s0, 0x1c($sp) diff --git a/asm/non_matchings/menu/func_80087734.s b/asm/non_matchings/menu/func_80087734.s index ccc6d576..0c5c3088 100644 --- a/asm/non_matchings/menu/func_80087734.s +++ b/asm/non_matchings/menu/func_80087734.s @@ -21,8 +21,8 @@ glabel func_80087734 /* 08835C 8008775C 240F01FF */ li $t7, 511 /* 088360 80087760 01EE3023 */ subu $a2, $t7, $t6 .L80087764: -/* 088364 80087764 3C098012 */ lui $t1, %hi(D_801263E0) # $t1, 0x8012 -/* 088368 80087768 252963E0 */ addiu $t1, %lo(D_801263E0) # addiu $t1, $t1, 0x63e0 +/* 088364 80087764 3C098012 */ lui $t1, %hi(gMenuOptionCount) # $t1, 0x8012 +/* 088368 80087768 252963E0 */ addiu $t1, %lo(gMenuOptionCount) # addiu $t1, $t1, 0x63e0 /* 08836C 8008776C 3C058012 */ lui $a1, %hi(D_80126A74) # $a1, 0x8012 /* 088370 80087770 8D280000 */ lw $t0, ($t1) /* 088374 80087774 24A56A74 */ addiu $a1, %lo(D_80126A74) # addiu $a1, $a1, 0x6a74 @@ -72,8 +72,8 @@ glabel func_80087734 /* 088410 80087810 00002825 */ move $a1, $zero /* 088414 80087814 0C000741 */ jal play_sound_global /* 088418 80087818 AFA8001C */ sw $t0, 0x1c($sp) -/* 08841C 8008781C 3C098012 */ lui $t1, %hi(D_801263E0) # $t1, 0x8012 -/* 088420 80087820 252963E0 */ addiu $t1, %lo(D_801263E0) # addiu $t1, $t1, 0x63e0 +/* 08841C 8008781C 3C098012 */ lui $t1, %hi(gMenuOptionCount) # $t1, 0x8012 +/* 088420 80087820 252963E0 */ addiu $t1, %lo(gMenuOptionCount) # addiu $t1, $t1, 0x63e0 /* 088424 80087824 8D380000 */ lw $t8, ($t1) /* 088428 80087828 8FA8001C */ lw $t0, 0x1c($sp) /* 08842C 8008782C 2401FFF7 */ li $at, -9 @@ -200,8 +200,8 @@ glabel L800879BC /* 0885CC 800879CC 240400EF */ li $a0, 239 /* 0885D0 800879D0 0C000741 */ jal play_sound_global /* 0885D4 800879D4 AFA8001C */ sw $t0, 0x1c($sp) -/* 0885D8 800879D8 3C098012 */ lui $t1, %hi(D_801263E0) # $t1, 0x8012 -/* 0885DC 800879DC 252963E0 */ addiu $t1, %lo(D_801263E0) # addiu $t1, $t1, 0x63e0 +/* 0885D8 800879D8 3C098012 */ lui $t1, %hi(gMenuOptionCount) # $t1, 0x8012 +/* 0885DC 800879DC 252963E0 */ addiu $t1, %lo(gMenuOptionCount) # addiu $t1, $t1, 0x63e0 /* 0885E0 800879E0 8D2E0000 */ lw $t6, ($t1) /* 0885E4 800879E4 2401FFF7 */ li $at, -9 /* 0885E8 800879E8 01C17824 */ and $t7, $t6, $at diff --git a/asm/non_matchings/menu/func_8008B758.s b/asm/non_matchings/menu/func_8008B758.s index 1d70d074..e07a31af 100644 --- a/asm/non_matchings/menu/func_8008B758.s +++ b/asm/non_matchings/menu/func_8008B758.s @@ -7,7 +7,7 @@ glabel func_8008B758 /* 08C36C 8008B76C AFB50034 */ sw $s5, 0x34($sp) /* 08C370 8008B770 AFB40030 */ sw $s4, 0x30($sp) /* 08C374 8008B774 AFB3002C */ sw $s3, 0x2c($sp) -/* 08C378 8008B778 3C108012 */ lui $s0, %hi(D_801263C0) # $s0, 0x8012 +/* 08C378 8008B778 3C108012 */ lui $s0, %hi(gMenuCurrentCharacter) # $s0, 0x8012 /* 08C37C 8008B77C 3C168012 */ lui $s6, %hi(gPlayersCharacterArray) # $s6, 0x8012 /* 08C380 8008B780 3C17800E */ lui $s7, %hi(gNumberOfReadyPlayers) # $s7, 0x800e /* 08C384 8008B784 3C1E8012 */ lui $fp, %hi(gCurrCharacterSelectData) # $fp, 0x8012 @@ -17,7 +17,7 @@ glabel func_8008B758 /* 08C394 8008B794 27DE63CC */ addiu $fp, %lo(gCurrCharacterSelectData) # addiu $fp, $fp, 0x63cc /* 08C398 8008B798 26F7F480 */ addiu $s7, %lo(gNumberOfReadyPlayers) # addiu $s7, $s7, -0xb80 /* 08C39C 8008B79C 26D663E8 */ addiu $s6, %lo(gPlayersCharacterArray) # addiu $s6, $s6, 0x63e8 -/* 08C3A0 8008B7A0 261063C0 */ addiu $s0, %lo(D_801263C0) # addiu $s0, $s0, 0x63c0 +/* 08C3A0 8008B7A0 261063C0 */ addiu $s0, %lo(gMenuCurrentCharacter) # addiu $s0, $s0, 0x63c0 /* 08C3A4 8008B7A4 2413000E */ li $s3, 14 /* 08C3A8 8008B7A8 0000A025 */ move $s4, $zero /* 08C3AC 8008B7AC 24150014 */ li $s5, 20 @@ -85,8 +85,8 @@ glabel func_8008B758 /* 08C498 8008B898 824C0000 */ lb $t4, ($s2) /* 08C49C 8008B89C 8FC50000 */ lw $a1, ($fp) /* 08C4A0 8008B8A0 01930019 */ multu $t4, $s3 -/* 08C4A4 8008B8A4 3C0B8012 */ lui $t3, %hi(D_801263B4) # $t3, 0x8012 -/* 08C4A8 8008B8A8 816B63B4 */ lb $t3, %lo(D_801263B4)($t3) +/* 08C4A4 8008B8A4 3C0B8012 */ lui $t3, %hi(gMenuSelectedCharacter) # $t3, 0x8012 +/* 08C4A8 8008B8A8 816B63B4 */ lb $t3, %lo(gMenuSelectedCharacter)($t3) /* 08C4AC 8008B8AC 00007012 */ mflo $t6 /* 08C4B0 8008B8B0 00AE6821 */ addu $t5, $a1, $t6 /* 08C4B4 8008B8B4 85AF000C */ lh $t7, 0xc($t5) diff --git a/asm/non_matchings/menu/func_80092188.s b/asm/non_matchings/menu/func_80092188.s index 99f265e7..b48c24f5 100644 --- a/asm/non_matchings/menu/func_80092188.s +++ b/asm/non_matchings/menu/func_80092188.s @@ -11,8 +11,8 @@ glabel func_80092188 /* 092D98 80092198 AFA40058 */ sw $a0, 0x58($sp) /* 092D9C 8009219C 0C01BAA4 */ jal get_settings /* 092DA0 800921A0 AFAE0030 */ sw $t6, 0x30($sp) -/* 092DA4 800921A4 3C06800E */ lui $a2, %hi(D_800E0980) # $a2, 0x800e -/* 092DA8 800921A8 24C60980 */ addiu $a2, %lo(D_800E0980) # addiu $a2, $a2, 0x980 +/* 092DA4 800921A4 3C06800E */ lui $a2, %hi(gTrackNameVoiceDelay) # $a2, 0x800e +/* 092DA8 800921A8 24C60980 */ addiu $a2, %lo(gTrackNameVoiceDelay) # addiu $a2, $a2, 0x980 /* 092DAC 800921AC 8CC30000 */ lw $v1, ($a2) /* 092DB0 800921B0 AFA2002C */ sw $v0, 0x2c($sp) /* 092DB4 800921B4 10600005 */ beqz $v1, .L800921CC @@ -25,8 +25,8 @@ glabel func_80092188 /* 092DCC 800921CC 8C4269C8 */ lw $v0, %lo(D_801269C8)($v0) /* 092DD0 800921D0 24010005 */ li $at, 5 /* 092DD4 800921D4 14410011 */ bne $v0, $at, .L8009221C -/* 092DD8 800921D8 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 -/* 092DDC 800921DC 258C63E0 */ addiu $t4, %lo(D_801263E0) # addiu $t4, $t4, 0x63e0 +/* 092DD8 800921D8 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 +/* 092DDC 800921DC 258C63E0 */ addiu $t4, %lo(gMenuOptionCount) # addiu $t4, $t4, 0x63e0 /* 092DE0 800921E0 8D990000 */ lw $t9, ($t4) /* 092DE4 800921E4 24010002 */ li $at, 2 /* 092DE8 800921E8 1321000C */ beq $t9, $at, .L8009221C @@ -39,14 +39,14 @@ glabel func_80092188 /* 092E04 80092204 0C030C7B */ jal func_800C31EC /* 092E08 80092208 2484003C */ addiu $a0, $a0, 0x3c /* 092E0C 8009220C 3C028012 */ lui $v0, %hi(D_801269C8) # $v0, 0x8012 -/* 092E10 80092210 3C06800E */ lui $a2, %hi(D_800E0980) # $a2, 0x800e +/* 092E10 80092210 3C06800E */ lui $a2, %hi(gTrackNameVoiceDelay) # $a2, 0x800e /* 092E14 80092214 8C4269C8 */ lw $v0, %lo(D_801269C8)($v0) -/* 092E18 80092218 24C60980 */ addiu $a2, %lo(D_800E0980) # addiu $a2, $a2, 0x980 +/* 092E18 80092218 24C60980 */ addiu $a2, %lo(gTrackNameVoiceDelay) # addiu $a2, $a2, 0x980 .L8009221C: -/* 092E1C 8009221C 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 +/* 092E1C 8009221C 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 /* 092E20 80092220 24010004 */ li $at, 4 /* 092E24 80092224 14410008 */ bne $v0, $at, .L80092248 -/* 092E28 80092228 258C63E0 */ addiu $t4, %lo(D_801263E0) # addiu $t4, $t4, 0x63e0 +/* 092E28 80092228 258C63E0 */ addiu $t4, %lo(gMenuOptionCount) # addiu $t4, $t4, 0x63e0 /* 092E2C 8009222C 8D830000 */ lw $v1, ($t4) /* 092E30 80092230 240DFFFF */ li $t5, -1 /* 092E34 80092234 11A30004 */ beq $t5, $v1, .L80092248 @@ -71,8 +71,8 @@ glabel func_80092188 /* 092E7C 8009227C 00000000 */ nop /* 092E80 80092280 0C000741 */ jal play_sound_global /* 092E84 80092284 00002825 */ move $a1, $zero -/* 092E88 80092288 3C06800E */ lui $a2, %hi(D_800E0980) # $a2, 0x800e -/* 092E8C 8009228C 24C60980 */ addiu $a2, %lo(D_800E0980) # addiu $a2, $a2, 0x980 +/* 092E88 80092288 3C06800E */ lui $a2, %hi(gTrackNameVoiceDelay) # $a2, 0x800e +/* 092E8C 8009228C 24C60980 */ addiu $a2, %lo(gTrackNameVoiceDelay) # addiu $a2, $a2, 0x980 /* 092E90 80092290 ACC00000 */ sw $zero, ($a2) .L80092294: /* 092E94 80092294 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e @@ -182,8 +182,8 @@ glabel func_80092188 /* 093018 80092418 8C84F4C4 */ lw $a0, %lo(gTrackIdForPreview)($a0) /* 09301C 8009241C 0C01AC3E */ jal get_map_available_vehicles /* 093020 80092420 00000000 */ nop -/* 093024 80092424 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 -/* 093028 80092428 258C63E0 */ addiu $t4, %lo(D_801263E0) # addiu $t4, $t4, 0x63e0 +/* 093024 80092424 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 +/* 093028 80092428 258C63E0 */ addiu $t4, %lo(gMenuOptionCount) # addiu $t4, $t4, 0x63e0 /* 09302C 8009242C 8D830000 */ lw $v1, ($t4) /* 093030 80092430 240DFFFF */ li $t5, -1 /* 093034 80092434 246F0001 */ addiu $t7, $v1, 1 @@ -281,8 +281,8 @@ glabel L8009251C /* 093184 80092584 8FA80024 */ lw $t0, 0x24($sp) /* 093188 80092588 3C09800E */ lui $t1, %hi(gNumberOfReadyPlayers) # $t1, 0x800e /* 09318C 8009258C 3C0B8012 */ lui $t3, %hi(D_801269C4) # $t3, 0x8012 -/* 093190 80092590 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 -/* 093194 80092594 258C63E0 */ addiu $t4, %lo(D_801263E0) # addiu $t4, $t4, 0x63e0 +/* 093190 80092590 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 +/* 093194 80092594 258C63E0 */ addiu $t4, %lo(gMenuOptionCount) # addiu $t4, $t4, 0x63e0 /* 093198 80092598 256B69C4 */ addiu $t3, %lo(D_801269C4) # addiu $t3, $t3, 0x69c4 /* 09319C 8009259C 2529F480 */ addiu $t1, %lo(gNumberOfReadyPlayers) # addiu $t1, $t1, -0xb80 /* 0931A0 800925A0 240DFFFF */ li $t5, -1 @@ -604,8 +604,8 @@ glabel L8009287C /* 09360C 80092A0C AFAF003C */ sw $t7, 0x3c($sp) /* 093610 80092A10 0C027B18 */ jal is_adventure_two_unlocked /* 093614 80092A14 00000000 */ nop -/* 093618 80092A18 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 -/* 09361C 80092A1C 258C63E0 */ addiu $t4, %lo(D_801263E0) # addiu $t4, $t4, 0x63e0 +/* 093618 80092A18 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 +/* 09361C 80092A1C 258C63E0 */ addiu $t4, %lo(gMenuOptionCount) # addiu $t4, $t4, 0x63e0 /* 093620 80092A20 10400006 */ beqz $v0, .L80092A3C /* 093624 80092A24 240DFFFF */ li $t5, -1 /* 093628 80092A28 AD8D0000 */ sw $t5, ($t4) diff --git a/asm/non_matchings/menu/func_80094D28.s b/asm/non_matchings/menu/func_80094D28.s index 95dc60f7..0402aea8 100644 --- a/asm/non_matchings/menu/func_80094D28.s +++ b/asm/non_matchings/menu/func_80094D28.s @@ -30,7 +30,7 @@ glabel func_80094D28 /* 095978 80094D78 24050001 */ li $a1, 1 /* 09597C 80094D7C 3C138012 */ lui $s3, %hi(gOptionBlinkTimer) # $s3, 0x8012 /* 095980 80094D80 8E7363BC */ lw $s3, %lo(gOptionBlinkTimer)($s3) -/* 095984 80094D84 3C198012 */ lui $t9, %hi(D_801263E0) # $t9, 0x8012 +/* 095984 80094D84 3C198012 */ lui $t9, %hi(gMenuOptionCount) # $t9, 0x8012 /* 095988 80094D88 001378C0 */ sll $t7, $s3, 3 /* 09598C 80094D8C 29E10100 */ slti $at, $t7, 0x100 /* 095990 80094D90 14200003 */ bnez $at, .L80094DA0 @@ -38,7 +38,7 @@ glabel func_80094D28 /* 095998 80094D98 241801FF */ li $t8, 511 /* 09599C 80094D9C 03139823 */ subu $s3, $t8, $s3 .L80094DA0: -/* 0959A0 80094DA0 8F3963E0 */ lw $t9, %lo(D_801263E0)($t9) +/* 0959A0 80094DA0 8F3963E0 */ lw $t9, %lo(gMenuOptionCount)($t9) /* 0959A4 80094DA4 00000000 */ nop /* 0959A8 80094DA8 272AFFFF */ addiu $t2, $t9, -1 /* 0959AC 80094DAC 2D410006 */ sltiu $at, $t2, 6 @@ -356,7 +356,7 @@ glabel L800951CC .L80095220: /* 095E20 80095220 3C0D8012 */ lui $t5, %hi(D_80126C1C) # $t5, 0x8012 /* 095E24 80095224 8DAD6C1C */ lw $t5, %lo(D_80126C1C)($t5) -/* 095E28 80095228 3C108012 */ lui $s0, %hi(D_80126C14) # $s0, 0x8012 +/* 095E28 80095228 3C108012 */ lui $s0, %hi(gResultOptionCount) # $s0, 0x8012 /* 095E2C 8009522C 11A00005 */ beqz $t5, .L80095244 /* 095E30 80095230 00000000 */ nop /* 095E34 80095234 3C108012 */ lui $s0, %hi(D_80126C24) # $s0, 0x8012 @@ -364,7 +364,7 @@ glabel L800951CC /* 095E3C 8009523C 10000004 */ b .L80095250 /* 095E40 80095240 2A010005 */ slti $at, $s0, 5 .L80095244: -/* 095E44 80095244 8E106C14 */ lw $s0, %lo(D_80126C14)($s0) +/* 095E44 80095244 8E106C14 */ lw $s0, %lo(gResultOptionCount)($s0) /* 095E48 80095248 00000000 */ nop .L8009524C: /* 095E4C 8009524C 2A010005 */ slti $at, $s0, 5 @@ -473,7 +473,7 @@ glabel L800951CC /* 095FCC 800953CC 8E2C0000 */ lw $t4, ($s1) /* 095FD0 800953D0 2652FFE8 */ addiu $s2, $s2, -0x18 /* 095FD4 800953D4 1180003E */ beqz $t4, .L800954D0 -/* 095FD8 800953D8 3C0F8012 */ lui $t7, %hi(D_80126C14) # $t7, 0x8012 +/* 095FD8 800953D8 3C0F8012 */ lui $t7, %hi(gResultOptionCount) # $t7, 0x8012 /* 095FDC 800953DC 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e /* 095FE0 800953E0 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5) /* 095FE4 800953E4 240E0001 */ li $t6, 1 @@ -538,12 +538,12 @@ glabel L800951CC /* 0960C8 800954C8 1000002D */ b .L80095580 /* 0960CC 800954CC 00000000 */ nop .L800954D0: -/* 0960D0 800954D0 8DEF6C14 */ lw $t7, %lo(D_80126C14)($t7) +/* 0960D0 800954D0 8DEF6C14 */ lw $t7, %lo(gResultOptionCount)($t7) /* 0960D4 800954D4 2412000C */ li $s2, 12 /* 0960D8 800954D8 19E00029 */ blez $t7, .L80095580 /* 0960DC 800954DC 00008025 */ move $s0, $zero -/* 0960E0 800954E0 3C118012 */ lui $s1, %hi(D_80126BF0) # $s1, 0x8012 -/* 0960E4 800954E4 26316BF0 */ addiu $s1, %lo(D_80126BF0) # addiu $s1, $s1, 0x6bf0 +/* 0960E0 800954E0 3C118012 */ lui $s1, %hi(gResultOptionText) # $s1, 0x8012 +/* 0960E4 800954E4 26316BF0 */ addiu $s1, %lo(gResultOptionText) # addiu $s1, $s1, 0x6bf0 .L800954E8: /* 0960E8 800954E8 3C0B8012 */ lui $t3, %hi(gMenuOption) # $t3, 0x8012 /* 0960EC 800954EC 8D6B6A68 */ lw $t3, %lo(gMenuOption)($t3) @@ -577,8 +577,8 @@ glabel L800951CC /* 096154 80095554 240500A0 */ li $a1, 160 /* 096158 80095558 0C03145A */ jal render_dialogue_text /* 09615C 8009555C 02403025 */ move $a2, $s2 -/* 096160 80095560 3C188012 */ lui $t8, %hi(D_80126C14) # $t8, 0x8012 -/* 096164 80095564 8F186C14 */ lw $t8, %lo(D_80126C14)($t8) +/* 096160 80095560 3C188012 */ lui $t8, %hi(gResultOptionCount) # $t8, 0x8012 +/* 096164 80095564 8F186C14 */ lw $t8, %lo(gResultOptionCount)($t8) /* 096168 80095568 8FB90050 */ lw $t9, 0x50($sp) /* 09616C 8009556C 26100001 */ addiu $s0, $s0, 1 /* 096170 80095570 0218082A */ slt $at, $s0, $t8 @@ -608,12 +608,12 @@ glabel L80095588 /* 0961C4 800955C4 8D8C0300 */ lw $t4, %lo(osTvType)($t4) /* 0961C8 800955C8 3C01800F */ lui $at, %hi(D_800E8520) # $at, 0x800f /* 0961CC 800955CC 15800004 */ bnez $t4, .L800955E0 -/* 0961D0 800955D0 3C0D8012 */ lui $t5, %hi(D_801263E0) # $t5, 0x8012 +/* 0961D0 800955D0 3C0D8012 */ lui $t5, %hi(gMenuOptionCount) # $t5, 0x8012 /* 0961D4 800955D4 C4328520 */ lwc1 $f18, %lo(D_800E8520)($at) /* 0961D8 800955D8 3C01800E */ lui $at, %hi(D_800DF454) # $at, 0x800e /* 0961DC 800955DC E432F454 */ swc1 $f18, %lo(D_800DF454)($at) .L800955E0: -/* 0961E0 800955E0 8DAD63E0 */ lw $t5, %lo(D_801263E0)($t5) +/* 0961E0 800955E0 8DAD63E0 */ lw $t5, %lo(gMenuOptionCount)($t5) /* 0961E4 800955E4 00000000 */ nop /* 0961E8 800955E8 19A00004 */ blez $t5, .L800955FC /* 0961EC 800955EC 3C013F80 */ lui $at, 0x3f80 diff --git a/asm/non_matchings/menu/func_80095728.s b/asm/non_matchings/menu/func_80095728.s index a6f3a689..3d67e2c2 100644 --- a/asm/non_matchings/menu/func_80095728.s +++ b/asm/non_matchings/menu/func_80095728.s @@ -55,14 +55,14 @@ glabel func_80095728 /* 0963DC 800957DC 8FAA0030 */ lw $t2, 0x30($sp) /* 0963E0 800957E0 10400010 */ beqz $v0, .L80095824 /* 0963E4 800957E4 3C018012 */ lui $at, %hi(D_80126A90) # $at, 0x8012 -/* 0963E8 800957E8 3C098012 */ lui $t1, %hi(D_80126C14) # $t1, 0x8012 -/* 0963EC 800957EC 25296C14 */ addiu $t1, %lo(D_80126C14) # addiu $t1, $t1, 0x6c14 +/* 0963E8 800957E8 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 +/* 0963EC 800957EC 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 /* 0963F0 800957F0 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e /* 0963F4 800957F4 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) /* 0963F8 800957F8 8D230000 */ lw $v1, ($t1) -/* 0963FC 800957FC 3C0D8012 */ lui $t5, %hi(D_80126BF0) # $t5, 0x8012 +/* 0963FC 800957FC 3C0D8012 */ lui $t5, %hi(gResultOptionText) # $t5, 0x8012 /* 096400 80095800 8C4E006C */ lw $t6, 0x6c($v0) -/* 096404 80095804 25AD6BF0 */ addiu $t5, %lo(D_80126BF0) # addiu $t5, $t5, 0x6bf0 +/* 096404 80095804 25AD6BF0 */ addiu $t5, %lo(gResultOptionText) # addiu $t5, $t5, 0x6bf0 /* 096408 80095808 00036080 */ sll $t4, $v1, 2 /* 09640C 8009580C 018D2021 */ addu $a0, $t4, $t5 /* 096410 80095810 AC8EFFFC */ sw $t6, -4($a0) @@ -111,9 +111,9 @@ glabel func_80095728 /* 0964A8 800958A8 AFAA0030 */ sw $t2, 0x30($sp) /* 0964AC 800958AC 3C0E8012 */ lui $t6, %hi(gIgnorePlayerInputTime) # $t6, 0x8012 /* 0964B0 800958B0 8DCE63C4 */ lw $t6, %lo(gIgnorePlayerInputTime)($t6) -/* 0964B4 800958B4 3C098012 */ lui $t1, %hi(D_80126C14) # $t1, 0x8012 +/* 0964B4 800958B4 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 /* 0964B8 800958B8 8FAA0030 */ lw $t2, 0x30($sp) -/* 0964BC 800958BC 25296C14 */ addiu $t1, %lo(D_80126C14) # addiu $t1, $t1, 0x6c14 +/* 0964BC 800958BC 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 /* 0964C0 800958C0 15C00014 */ bnez $t6, .L80095914 /* 0964C4 800958C4 00001825 */ move $v1, $zero /* 0964C8 800958C8 3C0F8012 */ lui $t7, %hi(D_80126C54) # $t7, 0x8012 @@ -131,14 +131,14 @@ glabel func_80095728 /* 0964F4 800958F4 8FA40048 */ lw $a0, 0x48($sp) /* 0964F8 800958F8 8FA30040 */ lw $v1, 0x40($sp) /* 0964FC 800958FC 8FAA0030 */ lw $t2, 0x30($sp) -/* 096500 80095900 3C098012 */ lui $t1, %hi(D_80126C14) # $t1, 0x8012 +/* 096500 80095900 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 /* 096504 80095904 24840001 */ addiu $a0, $a0, 1 -/* 096508 80095908 25296C14 */ addiu $t1, %lo(D_80126C14) # addiu $t1, $t1, 0x6c14 +/* 096508 80095908 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 /* 09650C 8009590C 148AFFF5 */ bne $a0, $t2, .L800958E4 /* 096510 80095910 00621825 */ or $v1, $v1, $v0 .L80095914: -/* 096514 80095914 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 096518 80095918 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 +/* 096514 80095914 3C068012 */ lui $a2, %hi(gMenuOptionCount) # $a2, 0x8012 +/* 096518 80095918 24C663E0 */ addiu $a2, %lo(gMenuOptionCount) # addiu $a2, $a2, 0x63e0 /* 09651C 8009591C 8CD80000 */ lw $t8, ($a2) /* 096520 80095920 00000000 */ nop /* 096524 80095924 2F010009 */ sltiu $at, $t8, 9 @@ -228,9 +228,9 @@ glabel L80095964 /* 096658 80095A58 30580040 */ andi $t8, $v0, 0x40 /* 09665C 80095A5C 13000004 */ beqz $t8, .L80095A70 /* 096660 80095A60 24190006 */ li $t9, 6 -/* 096664 80095A64 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096664 80095A64 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096668 80095A68 1000032A */ b .L80096714 -/* 09666C 80095A6C AC3963E0 */ sw $t9, %lo(D_801263E0)($at) +/* 09666C 80095A6C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) .L80095A70: /* 096670 80095A70 8FA3002C */ lw $v1, 0x2c($sp) /* 096674 80095A74 3C04800E */ lui $a0, %hi(D_800E0BEC) # $a0, 0x800e @@ -251,9 +251,9 @@ glabel L80095964 /* 0966B0 80095AB0 0C020795 */ jal func_80081E54 /* 0966B4 80095AB4 AFAE0014 */ sw $t6, 0x14($sp) /* 0966B8 80095AB8 240F0003 */ li $t7, 3 -/* 0966BC 80095ABC 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 0966BC 80095ABC 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 0966C0 80095AC0 10000314 */ b .L80096714 -/* 0966C4 80095AC4 AC2F63E0 */ sw $t7, %lo(D_801263E0)($at) +/* 0966C4 80095AC4 AC2F63E0 */ sw $t7, %lo(gMenuOptionCount)($at) .L80095AC8: /* 0966C8 80095AC8 80780114 */ lb $t8, 0x114($v1) /* 0966CC 80095ACC 44810000 */ mtc1 $at, $f0 @@ -279,9 +279,9 @@ glabel L80095964 /* 09671C 80095B1C 0C020795 */ jal func_80081E54 /* 096720 80095B20 AFB80010 */ sw $t8, 0x10($sp) /* 096724 80095B24 24060002 */ li $a2, 2 -/* 096728 80095B28 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096728 80095B28 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 09672C 80095B2C 100002F9 */ b .L80096714 -/* 096730 80095B30 AC2663E0 */ sw $a2, %lo(D_801263E0)($at) +/* 096730 80095B30 AC2663E0 */ sw $a2, %lo(gMenuOptionCount)($at) glabel L80095B34 /* 096734 80095B34 8FA40064 */ lw $a0, 0x64($sp) /* 096738 80095B38 0C0207D3 */ jal func_80081F4C @@ -298,9 +298,9 @@ glabel L80095B34 /* 096764 80095B64 0C030076 */ jal transition_begin /* 096768 80095B68 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c /* 09676C 80095B6C 240D0008 */ li $t5, 8 -/* 096770 80095B70 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096770 80095B70 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096774 80095B74 100002E7 */ b .L80096714 -/* 096778 80095B78 AC2D63E0 */ sw $t5, %lo(D_801263E0)($at) +/* 096778 80095B78 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) .L80095B7C: /* 09677C 80095B7C 80EE0117 */ lb $t6, 0x117($a3) /* 096780 80095B80 3C013F00 */ lui $at, 0x3f00 @@ -354,9 +354,9 @@ glabel L80095B34 /* 096840 80095C40 3C18800E */ lui $t8, %hi(gIsInTracksMode) # $t8, 0x800e /* 096844 80095C44 8F18F4B8 */ lw $t8, %lo(gIsInTracksMode)($t8) /* 096848 80095C48 240E0004 */ li $t6, 4 -/* 09684C 80095C4C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 09684C 80095C4C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096850 80095C50 1700000B */ bnez $t8, .L80095C80 -/* 096854 80095C54 AC2E63E0 */ sw $t6, %lo(D_801263E0)($at) +/* 096854 80095C54 AC2E63E0 */ sw $t6, %lo(gMenuOptionCount)($at) /* 096858 80095C58 3C0D800E */ lui $t5, %hi(D_800E0FAC) # $t5, 0x800e /* 09685C 80095C5C 8DAD0FAC */ lw $t5, %lo(D_800E0FAC)($t5) /* 096860 80095C60 3C05800E */ lui $a1, %hi(D_800E0FA8) # $a1, 0x800e @@ -395,18 +395,18 @@ glabel L80095B34 /* 0968DC 80095CDC 0C020795 */ jal func_80081E54 /* 0968E0 80095CE0 AFB80014 */ sw $t8, 0x14($sp) /* 0968E4 80095CE4 24030005 */ li $v1, 5 -/* 0968E8 80095CE8 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 0968E8 80095CE8 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 0968EC 80095CEC 10000289 */ b .L80096714 -/* 0968F0 80095CF0 AC2363E0 */ sw $v1, %lo(D_801263E0)($at) +/* 0968F0 80095CF0 AC2363E0 */ sw $v1, %lo(gMenuOptionCount)($at) .L80095CF4: /* 0968F4 80095CF4 44810000 */ mtc1 $at, $f0 /* 0968F8 80095CF8 8FAF0038 */ lw $t7, 0x38($sp) /* 0968FC 80095CFC 8FAC0034 */ lw $t4, 0x34($sp) -/* 096900 80095D00 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096900 80095D00 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096904 80095D04 3C04800E */ lui $a0, %hi(D_800E0CEC) # $a0, 0x800e /* 096908 80095D08 44050000 */ mfc1 $a1, $f0 /* 09690C 80095D0C 44070000 */ mfc1 $a3, $f0 -/* 096910 80095D10 AC2D63E0 */ sw $t5, %lo(D_801263E0)($at) +/* 096910 80095D10 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) /* 096914 80095D14 24840CEC */ addiu $a0, %lo(D_800E0CEC) # addiu $a0, $a0, 0xcec /* 096918 80095D18 3C064170 */ lui $a2, 0x4170 /* 09691C 80095D1C AFAF0010 */ sw $t7, 0x10($sp) @@ -420,9 +420,9 @@ glabel L80095D30 /* 096938 80095D38 00000000 */ nop /* 09693C 80095D3C 10400275 */ beqz $v0, .L80096714 /* 096940 80095D40 24190006 */ li $t9, 6 -/* 096944 80095D44 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096944 80095D44 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096948 80095D48 10000272 */ b .L80096714 -/* 09694C 80095D4C AC3963E0 */ sw $t9, %lo(D_801263E0)($at) +/* 09694C 80095D4C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) glabel L80095D50 /* 096950 80095D50 8FA40064 */ lw $a0, 0x64($sp) /* 096954 80095D54 0C025F44 */ jal menu_enter_filename_loop @@ -509,18 +509,18 @@ glabel L80095D50 /* 096A90 80095E90 0C020795 */ jal func_80081E54 /* 096A94 80095E94 AFAC0014 */ sw $t4, 0x14($sp) /* 096A98 80095E98 24030005 */ li $v1, 5 -/* 096A9C 80095E9C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096A9C 80095E9C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096AA0 80095EA0 1000021C */ b .L80096714 -/* 096AA4 80095EA4 AC2363E0 */ sw $v1, %lo(D_801263E0)($at) +/* 096AA4 80095EA4 AC2363E0 */ sw $v1, %lo(gMenuOptionCount)($at) glabel L80095EA8 /* 096AA8 80095EA8 8FA40064 */ lw $a0, 0x64($sp) /* 096AAC 80095EAC 0C0207D3 */ jal func_80081F4C /* 096AB0 80095EB0 00000000 */ nop /* 096AB4 80095EB4 10400217 */ beqz $v0, .L80096714 /* 096AB8 80095EB8 240E0006 */ li $t6, 6 -/* 096ABC 80095EBC 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096ABC 80095EBC 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096AC0 80095EC0 10000214 */ b .L80096714 -/* 096AC4 80095EC4 AC2E63E0 */ sw $t6, %lo(D_801263E0)($at) +/* 096AC4 80095EC4 AC2E63E0 */ sw $t6, %lo(gMenuOptionCount)($at) glabel L80095EC8 /* 096AC8 80095EC8 3C058012 */ lui $a1, %hi(D_80126A98) # $a1, 0x8012 /* 096ACC 80095ECC 24A56A98 */ addiu $a1, %lo(D_80126A98) # addiu $a1, $a1, 0x6a98 @@ -547,9 +547,9 @@ glabel L80095EC8 /* 096B1C 80095F1C 0C00025A */ jal adjust_audio_volume /* 096B20 80095F20 24040002 */ li $a0, 2 /* 096B24 80095F24 8FAD0054 */ lw $t5, 0x54($sp) -/* 096B28 80095F28 3C098012 */ lui $t1, %hi(D_80126C14) # $t1, 0x8012 +/* 096B28 80095F28 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 /* 096B2C 80095F2C 11A00006 */ beqz $t5, .L80095F48 -/* 096B30 80095F30 25296C14 */ addiu $t1, %lo(D_80126C14) # addiu $t1, $t1, 0x6c14 +/* 096B30 80095F30 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 /* 096B34 80095F34 0C025589 */ jal func_80095624 /* 096B38 80095F38 01A02025 */ move $a0, $t5 /* 096B3C 80095F3C 240C0001 */ li $t4, 1 @@ -565,9 +565,9 @@ glabel L80095EC8 /* 096B60 80095F60 00000000 */ nop /* 096B64 80095F64 0C025589 */ jal func_80095624 /* 096B68 80095F68 24040008 */ li $a0, 8 -/* 096B6C 80095F6C 3C098012 */ lui $t1, %hi(D_80126C14) # $t1, 0x8012 +/* 096B6C 80095F6C 3C098012 */ lui $t1, %hi(gResultOptionCount) # $t1, 0x8012 /* 096B70 80095F70 10000002 */ b .L80095F7C -/* 096B74 80095F74 25296C14 */ addiu $t1, %lo(D_80126C14) # addiu $t1, $t1, 0x6c14 +/* 096B74 80095F74 25296C14 */ addiu $t1, %lo(gResultOptionCount) # addiu $t1, $t1, 0x6c14 .L80095F78: /* 096B78 80095F78 AC800000 */ sw $zero, ($a0) .L80095F7C: @@ -577,10 +577,10 @@ glabel L80095EC8 /* 096B88 80095F88 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) /* 096B8C 80095F8C 8CCD0000 */ lw $t5, ($a2) /* 096B90 80095F90 8F190070 */ lw $t9, 0x70($t8) -/* 096B94 80095F94 3C018012 */ lui $at, %hi(D_80126BF0) # $at, 0x8012 +/* 096B94 80095F94 3C018012 */ lui $at, %hi(gResultOptionText) # $at, 0x8012 /* 096B98 80095F98 000D6080 */ sll $t4, $t5, 2 /* 096B9C 80095F9C 002C0821 */ addu $at, $at, $t4 -/* 096BA0 80095FA0 AC396BF0 */ sw $t9, %lo(D_80126BF0)($at) +/* 096BA0 80095FA0 AC396BF0 */ sw $t9, %lo(gResultOptionText)($at) /* 096BA4 80095FA4 8D2E0000 */ lw $t6, ($t1) /* 096BA8 80095FA8 ACC00000 */ sw $zero, ($a2) /* 096BAC 80095FAC 25CFFFFF */ addiu $t7, $t6, -1 @@ -632,9 +632,9 @@ glabel L80095EC8 /* 096C50 80096050 0C030076 */ jal transition_begin /* 096C54 80096054 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c /* 096C58 80096058 240D0008 */ li $t5, 8 -/* 096C5C 8009605C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096C5C 8009605C 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096C60 80096060 100000FC */ b .L80096454 -/* 096C64 80096064 AC2D63E0 */ sw $t5, %lo(D_801263E0)($at) +/* 096C64 80096064 AC2D63E0 */ sw $t5, %lo(gMenuOptionCount)($at) .L80096068: /* 096C68 80096068 AFB90054 */ sw $t9, 0x54($sp) /* 096C6C 8009606C 100000F9 */ b .L80096454 @@ -765,11 +765,11 @@ glabel L80095EC8 /* 096E1C 8009621C 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e /* 096E20 80096220 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) /* 096E24 80096224 240C0001 */ li $t4, 1 -/* 096E28 80096228 3C038012 */ lui $v1, %hi(D_80126BF0) # $v1, 0x8012 +/* 096E28 80096228 3C038012 */ lui $v1, %hi(gResultOptionText) # $v1, 0x8012 /* 096E2C 8009622C 000E7880 */ sll $t7, $t6, 2 /* 096E30 80096230 AFAC0050 */ sw $t4, 0x50($sp) /* 096E34 80096234 006F1821 */ addu $v1, $v1, $t7 -/* 096E38 80096238 8C636BF0 */ lw $v1, %lo(D_80126BF0)($v1) +/* 096E38 80096238 8C636BF0 */ lw $v1, %lo(gResultOptionText)($v1) /* 096E3C 8009623C 8C58006C */ lw $t8, 0x6c($v0) /* 096E40 80096240 24070001 */ li $a3, 1 /* 096E44 80096244 14780003 */ bne $v1, $t8, .L80096254 @@ -790,9 +790,9 @@ glabel L80095EC8 /* 096E78 80096278 0C030076 */ jal transition_begin /* 096E7C 8009627C 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c /* 096E80 80096280 24190008 */ li $t9, 8 -/* 096E84 80096284 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 096E84 80096284 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 096E88 80096288 10000072 */ b .L80096454 -/* 096E8C 8009628C AC3963E0 */ sw $t9, %lo(D_801263E0)($at) +/* 096E8C 8009628C AC3963E0 */ sw $t9, %lo(gMenuOptionCount)($at) .L80096290: /* 096E90 80096290 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 /* 096E94 80096294 8CC20000 */ lw $v0, ($a2) @@ -956,9 +956,9 @@ glabel L800964AC /* 0970C4 800964C4 0C030076 */ jal transition_begin /* 0970C8 800964C8 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c /* 0970CC 800964CC 24180008 */ li $t8, 8 -/* 0970D0 800964D0 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 +/* 0970D0 800964D0 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 /* 0970D4 800964D4 1000008F */ b .L80096714 -/* 0970D8 800964D8 AC3863E0 */ sw $t8, %lo(D_801263E0)($at) +/* 0970D8 800964D8 AC3863E0 */ sw $t8, %lo(gMenuOptionCount)($at) glabel L800964DC /* 0970DC 800964DC 3C0D800E */ lui $t5, %hi(gMenuDelay) # $t5, 0x800e /* 0970E0 800964E0 8DADF47C */ lw $t5, %lo(gMenuDelay)($t5) @@ -1057,10 +1057,10 @@ glabel L800964DC /* 097238 80096638 8CCD0000 */ lw $t5, ($a2) /* 09723C 8009663C 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e /* 097240 80096640 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) -/* 097244 80096644 3C038012 */ lui $v1, %hi(D_80126BF0) # $v1, 0x8012 +/* 097244 80096644 3C038012 */ lui $v1, %hi(gResultOptionText) # $v1, 0x8012 /* 097248 80096648 000DC880 */ sll $t9, $t5, 2 /* 09724C 8009664C 00791821 */ addu $v1, $v1, $t9 -/* 097250 80096650 8C636BF0 */ lw $v1, %lo(D_80126BF0)($v1) +/* 097250 80096650 8C636BF0 */ lw $v1, %lo(gResultOptionText)($v1) /* 097254 80096654 8C4C005C */ lw $t4, 0x5c($v0) /* 097258 80096658 3C0E800E */ lui $t6, %hi(gIsInTracksMode) # $t6, 0x800e /* 09725C 8009665C 146C001A */ bne $v1, $t4, .L800966C8 diff --git a/asm/non_matchings/menu/func_80096978.s b/asm/non_matchings/menu/func_80096978.s index ae79d674..1a1cc576 100644 --- a/asm/non_matchings/menu/func_80096978.s +++ b/asm/non_matchings/menu/func_80096978.s @@ -100,9 +100,9 @@ glabel func_80096978 /* 0976F4 80096AF4 44819000 */ mtc1 $at, $f18 /* 0976F8 80096AF8 24190036 */ li $t9, 54 /* 0976FC 80096AFC 46149102 */ mul.s $f4, $f18, $f20 -/* 097700 80096B00 3C12800E */ lui $s2, %hi(D_800E0AF0) # $s2, 0x800e +/* 097700 80096B00 3C12800E */ lui $s2, %hi(gRacerPortraits) # $s2, 0x800e /* 097704 80096B04 8FB00084 */ lw $s0, 0x84($sp) -/* 097708 80096B08 26520AF0 */ addiu $s2, %lo(D_800E0AF0) # addiu $s2, $s2, 0xaf0 +/* 097708 80096B08 26520AF0 */ addiu $s2, %lo(gRacerPortraits) # addiu $s2, $s2, 0xaf0 /* 09770C 80096B0C 444FF800 */ cfc1 $t7, $31 /* 097710 80096B10 2413017F */ li $s3, 383 /* 097714 80096B14 35E10003 */ ori $at, $t7, 3 @@ -403,11 +403,11 @@ glabel func_80096978 /* 097B70 80096F70 AFA90078 */ sw $t1, 0x78($sp) /* 097B74 80096F74 1420FF41 */ bnez $at, .L80096C7C /* 097B78 80096F78 AFB900A0 */ sw $t9, 0xa0($sp) -/* 097B7C 80096F7C 3C0D8012 */ lui $t5, %hi(D_801263E0) # $t5, 0x8012 -/* 097B80 80096F80 8DAD63E0 */ lw $t5, %lo(D_801263E0)($t5) -/* 097B84 80096F84 3C118012 */ lui $s1, %hi(D_80126C14) # $s1, 0x8012 +/* 097B7C 80096F7C 3C0D8012 */ lui $t5, %hi(gMenuOptionCount) # $t5, 0x8012 +/* 097B80 80096F80 8DAD63E0 */ lw $t5, %lo(gMenuOptionCount)($t5) +/* 097B84 80096F84 3C118012 */ lui $s1, %hi(gResultOptionCount) # $s1, 0x8012 /* 097B88 80096F88 19A000B7 */ blez $t5, .L80097268 -/* 097B8C 80096F8C 26316C14 */ addiu $s1, %lo(D_80126C14) # addiu $s1, $s1, 0x6c14 +/* 097B8C 80096F8C 26316C14 */ addiu $s1, %lo(gResultOptionCount) # addiu $s1, $s1, 0x6c14 /* 097B90 80096F90 8E2B0000 */ lw $t3, ($s1) /* 097B94 80096F94 24040007 */ li $a0, 7 /* 097B98 80096F98 000B60C0 */ sll $t4, $t3, 3 @@ -549,10 +549,10 @@ glabel func_80096978 /* 097DA0 800971A0 240A000C */ li $t2, 12 /* 097DA4 800971A4 1B20002E */ blez $t9, .L80097260 /* 097DA8 800971A8 AFAA00A8 */ sw $t2, 0xa8($sp) -/* 097DAC 800971AC 3C108012 */ lui $s0, %hi(D_80126BF0) # $s0, 0x8012 +/* 097DAC 800971AC 3C108012 */ lui $s0, %hi(gResultOptionText) # $s0, 0x8012 /* 097DB0 800971B0 3C128012 */ lui $s2, %hi(gMenuOption) # $s2, 0x8012 /* 097DB4 800971B4 26526A68 */ addiu $s2, %lo(gMenuOption) # addiu $s2, $s2, 0x6a68 -/* 097DB8 800971B8 26106BF0 */ addiu $s0, %lo(D_80126BF0) # addiu $s0, $s0, 0x6bf0 +/* 097DB8 800971B8 26106BF0 */ addiu $s0, %lo(gResultOptionText) # addiu $s0, $s0, 0x6bf0 /* 097DBC 800971BC AFA200A0 */ sw $v0, 0xa0($sp) .L800971C0: /* 097DC0 800971C0 8E4D0000 */ lw $t5, ($s2) diff --git a/asm/non_matchings/menu/func_80098774.s b/asm/non_matchings/menu/func_80098774.s index 9b0dc7af..83a6e135 100644 --- a/asm/non_matchings/menu/func_80098774.s +++ b/asm/non_matchings/menu/func_80098774.s @@ -28,8 +28,8 @@ glabel func_80098774 /* 0993D4 800987D4 24A51048 */ addiu $a1, %lo(D_800E1048) # addiu $a1, $a1, 0x1048 /* 0993D8 800987D8 ACA30014 */ sw $v1, 0x14($a1) /* 0993DC 800987DC ACA30034 */ sw $v1, 0x34($a1) -/* 0993E0 800987E0 3C09800E */ lui $t1, %hi(D_800E0FE4) # $t1, 0x800e -/* 0993E4 800987E4 8D290FE4 */ lw $t1, %lo(D_800E0FE4)($t1) +/* 0993E0 800987E0 3C09800E */ lui $t1, %hi(gRankingPlayerCount) # $t1, 0x800e +/* 0993E4 800987E4 8D290FE4 */ lw $t1, %lo(gRankingPlayerCount)($t1) /* 0993E8 800987E8 3C198000 */ lui $t9, %hi(osTvType) # $t9, 0x8000 /* 0993EC 800987EC 8F390300 */ lw $t9, %lo(osTvType)($t9) /* 0993F0 800987F0 2528FFFF */ addiu $t0, $t1, -1 @@ -60,8 +60,8 @@ glabel func_80098774 /* 099450 80098850 3C15800E */ lui $s5, %hi(gTrophyRacePointsArray) # $s5, 0x800e /* 099454 80098854 3C148012 */ lui $s4, %hi(D_80126428) # $s4, 0x8012 /* 099458 80098858 3C138012 */ lui $s3, %hi(D_80126430) # $s3, 0x8012 -/* 09945C 8009885C 3C0D800E */ lui $t5, %hi(D_800E0AF0) # $t5, 0x800e -/* 099460 80098860 25AD0AF0 */ addiu $t5, %lo(D_800E0AF0) # addiu $t5, $t5, 0xaf0 +/* 09945C 8009885C 3C0D800E */ lui $t5, %hi(gRacerPortraits) # $t5, 0x800e +/* 099460 80098860 25AD0AF0 */ addiu $t5, %lo(gRacerPortraits) # addiu $t5, $t5, 0xaf0 /* 099464 80098864 26736430 */ addiu $s3, %lo(D_80126430) # addiu $s3, $s3, 0x6430 /* 099468 80098868 26946428 */ addiu $s4, %lo(D_80126428) # addiu $s4, $s4, 0x6428 /* 09946C 8009886C 26B51004 */ addiu $s5, %lo(gTrophyRacePointsArray) # addiu $s5, $s5, 0x1004 diff --git a/asm/non_matchings/menu/func_80099E8C.s b/asm/non_matchings/menu/func_80099E8C.s index 51bcbc27..bdf596f1 100644 --- a/asm/non_matchings/menu/func_80099E8C.s +++ b/asm/non_matchings/menu/func_80099E8C.s @@ -287,13 +287,13 @@ glabel func_80099E8C /* 09AEBC 8009A2BC 0C031110 */ jal draw_text /* 09AEC0 8009A2C0 01323021 */ addu $a2, $t1, $s2 /* 09AEC4 8009A2C4 8FAB0074 */ lw $t3, 0x74($sp) -/* 09AEC8 8009A2C8 3C05800E */ lui $a1, %hi(D_800E0AF0) # $a1, 0x800e +/* 09AEC8 8009A2C8 3C05800E */ lui $a1, %hi(gRacerPortraits) # $a1, 0x800e /* 09AECC 8009A2CC 916C0000 */ lbu $t4, ($t3) /* 09AED0 8009A2D0 86260004 */ lh $a2, 4($s1) /* 09AED4 8009A2D4 000C6880 */ sll $t5, $t4, 2 /* 09AED8 8009A2D8 862E0006 */ lh $t6, 6($s1) /* 09AEDC 8009A2DC 00AD2821 */ addu $a1, $a1, $t5 -/* 09AEE0 8009A2E0 8CA50AF0 */ lw $a1, %lo(D_800E0AF0)($a1) +/* 09AEE0 8009A2E0 8CA50AF0 */ lw $a1, %lo(gRacerPortraits)($a1) /* 09AEE4 8009A2E4 240F00FF */ li $t7, 255 /* 09AEE8 8009A2E8 241800FF */ li $t8, 255 /* 09AEEC 8009A2EC 241900FF */ li $t9, 255 @@ -430,9 +430,9 @@ glabel func_80099E8C /* 09B0EC 8009A4EC 1DC0FEF0 */ bgtz $t6, .L8009A0B0 /* 09B0F0 8009A4F0 00000000 */ nop .L8009A4F4: -/* 09B0F4 8009A4F4 3C108012 */ lui $s0, %hi(D_801263E0) # $s0, 0x8012 +/* 09B0F4 8009A4F4 3C108012 */ lui $s0, %hi(gMenuOptionCount) # $s0, 0x8012 /* 09B0F8 8009A4F8 8FB900D8 */ lw $t9, 0xd8($sp) -/* 09B0FC 8009A4FC 261063E0 */ addiu $s0, %lo(D_801263E0) # addiu $s0, $s0, 0x63e0 +/* 09B0FC 8009A4FC 261063E0 */ addiu $s0, %lo(gMenuOptionCount) # addiu $s0, $s0, 0x63e0 /* 09B100 8009A500 8E0A0000 */ lw $t2, ($s0) /* 09B104 8009A504 332900FF */ andi $t1, $t9, 0xff /* 09B108 8009A508 19400063 */ blez $t2, .L8009A698 diff --git a/asm/non_matchings/menu/func_8009C6D4.s b/asm/non_matchings/menu/func_8009C6D4.s index 59dffd78..c257a5ba 100644 --- a/asm/non_matchings/menu/func_8009C6D4.s +++ b/asm/non_matchings/menu/func_8009C6D4.s @@ -64,11 +64,11 @@ glabel func_8009C6D4 /* 09D3BC 8009C7BC 0C01EB9D */ jal load_texture /* 09D3C0 8009C7C0 AFA70038 */ sw $a3, 0x38($sp) /* 09D3C4 8009C7C4 8FA70038 */ lw $a3, 0x38($sp) -/* 09D3C8 8009C7C8 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 +/* 09D3C8 8009C7C8 3C018012 */ lui $at, %hi(gMenuTextures) # $at, 0x8012 /* 09D3CC 8009C7CC 00075880 */ sll $t3, $a3, 2 /* 09D3D0 8009C7D0 002B0821 */ addu $at, $at, $t3 /* 09D3D4 8009C7D4 10000027 */ b .L8009C874 -/* 09D3D8 8009C7D8 AC226550 */ sw $v0, %lo(D_80126550)($at) +/* 09D3D8 8009C7D8 AC226550 */ sw $v0, %lo(gMenuTextures)($at) .L8009C7DC: /* 09D3DC 8009C7DC 1180000B */ beqz $t4, .L8009C80C /* 09D3E0 8009C7E0 304E4000 */ andi $t6, $v0, 0x4000 @@ -77,11 +77,11 @@ glabel func_8009C6D4 /* 09D3EC 8009C7EC 0C01F04B */ jal func_8007C12C /* 09D3F0 8009C7F0 AFA70038 */ sw $a3, 0x38($sp) /* 09D3F4 8009C7F4 8FA70038 */ lw $a3, 0x38($sp) -/* 09D3F8 8009C7F8 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 +/* 09D3F8 8009C7F8 3C018012 */ lui $at, %hi(gMenuTextures) # $at, 0x8012 /* 09D3FC 8009C7FC 00076880 */ sll $t5, $a3, 2 /* 09D400 8009C800 002D0821 */ addu $at, $at, $t5 /* 09D404 8009C804 1000001B */ b .L8009C874 -/* 09D408 8009C808 AC226550 */ sw $v0, %lo(D_80126550)($at) +/* 09D408 8009C808 AC226550 */ sw $v0, %lo(gMenuTextures)($at) .L8009C80C: /* 09D40C 8009C80C 11C00011 */ beqz $t6, .L8009C854 /* 09D410 8009C810 30443FFF */ andi $a0, $v0, 0x3fff @@ -96,20 +96,20 @@ glabel func_8009C6D4 /* 09D434 8009C834 0C003A95 */ jal spawn_object /* 09D438 8009C838 AFA70038 */ sw $a3, 0x38($sp) /* 09D43C 8009C83C 8FA70038 */ lw $a3, 0x38($sp) -/* 09D440 8009C840 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 +/* 09D440 8009C840 3C018012 */ lui $at, %hi(gMenuTextures) # $at, 0x8012 /* 09D444 8009C844 0007C880 */ sll $t9, $a3, 2 /* 09D448 8009C848 00390821 */ addu $at, $at, $t9 /* 09D44C 8009C84C 10000009 */ b .L8009C874 -/* 09D450 8009C850 AC226550 */ sw $v0, %lo(D_80126550)($at) +/* 09D450 8009C850 AC226550 */ sw $v0, %lo(gMenuTextures)($at) .L8009C854: /* 09D454 8009C854 00002825 */ move $a1, $zero /* 09D458 8009C858 0C017E67 */ jal func_8005F99C /* 09D45C 8009C85C AFA70038 */ sw $a3, 0x38($sp) /* 09D460 8009C860 8FA70038 */ lw $a3, 0x38($sp) -/* 09D464 8009C864 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 +/* 09D464 8009C864 3C018012 */ lui $at, %hi(gMenuTextures) # $at, 0x8012 /* 09D468 8009C868 00074880 */ sll $t1, $a3, 2 /* 09D46C 8009C86C 00290821 */ addu $at, $at, $t1 -/* 09D470 8009C870 AC226550 */ sw $v0, %lo(D_80126550)($at) +/* 09D470 8009C870 AC226550 */ sw $v0, %lo(gMenuTextures)($at) .L8009C874: /* 09D474 8009C874 8FAB0024 */ lw $t3, 0x24($sp) /* 09D478 8009C878 240A0001 */ li $t2, 1 diff --git a/asm/non_matchings/menu/func_8009CA60.s b/asm/non_matchings/menu/func_8009CA60.s index 26b43219..ffe360ae 100644 --- a/asm/non_matchings/menu/func_8009CA60.s +++ b/asm/non_matchings/menu/func_8009CA60.s @@ -9,10 +9,10 @@ glabel func_8009CA60 /* 09D67C 8009CA7C AFA40060 */ sw $a0, 0x60($sp) /* 09D680 8009CA80 00687821 */ addu $t7, $v1, $t0 /* 09D684 8009CA84 85E50006 */ lh $a1, 6($t7) -/* 09D688 8009CA88 3C0A8012 */ lui $t2, %hi(D_80126550) # $t2, 0x8012 +/* 09D688 8009CA88 3C0A8012 */ lui $t2, %hi(gMenuTextures) # $t2, 0x8012 /* 09D68C 8009CA8C 0005C080 */ sll $t8, $a1, 2 /* 09D690 8009CA90 01585021 */ addu $t2, $t2, $t8 -/* 09D694 8009CA94 8D4A6550 */ lw $t2, %lo(D_80126550)($t2) +/* 09D694 8009CA94 8D4A6550 */ lw $t2, %lo(gMenuTextures)($t2) /* 09D698 8009CA98 3C19800E */ lui $t9, %hi(gAssetsMenuElementIds) # $t9, 0x800e /* 09D69C 8009CA9C 114000B4 */ beqz $t2, .L8009CD70 /* 09D6A0 8009CAA0 8FBF0024 */ lw $ra, 0x24($sp) @@ -173,18 +173,18 @@ glabel func_8009CA60 /* 09D8F8 8009CCF8 256BF75C */ addiu $t3, %lo(gMenuImageStack) # addiu $t3, $t3, -0x8a4 /* 09D8FC 8009CCFC 8FA8002C */ lw $t0, 0x2c($sp) /* 09D900 8009CD00 8D6E0000 */ lw $t6, ($t3) -/* 09D904 8009CD04 3C028012 */ lui $v0, %hi(D_80126550) # $v0, 0x8012 +/* 09D904 8009CD04 3C028012 */ lui $v0, %hi(gMenuTextures) # $v0, 0x8012 /* 09D908 8009CD08 01C87821 */ addu $t7, $t6, $t0 /* 09D90C 8009CD0C 85EC0006 */ lh $t4, 6($t7) /* 09D910 8009CD10 00000000 */ nop /* 09D914 8009CD14 000CC880 */ sll $t9, $t4, 2 /* 09D918 8009CD18 00591021 */ addu $v0, $v0, $t9 -/* 09D91C 8009CD1C 8C426550 */ lw $v0, %lo(D_80126550)($v0) +/* 09D91C 8009CD1C 8C426550 */ lw $v0, %lo(gMenuTextures)($v0) /* 09D920 8009CD20 00000000 */ nop /* 09D924 8009CD24 8C440000 */ lw $a0, ($v0) /* 09D928 8009CD28 0C02735F */ jal render_track_selection_viewport_border /* 09D92C 8009CD2C 00000000 */ nop -/* 09D930 8009CD30 0C01A690 */ jal func_80069A40 +/* 09D930 8009CD30 0C01A690 */ jal apply_matrix_from_stack /* 09D934 8009CD34 02002025 */ move $a0, $s0 /* 09D938 8009CD38 3C0D800E */ lui $t5, %hi(sMenuGuiOpacity) # $t5, 0x800e /* 09D93C 8009CD3C 8DADF764 */ lw $t5, %lo(sMenuGuiOpacity)($t5) diff --git a/asm/non_matchings/menu/menu_audio_options_loop.s b/asm/non_matchings/menu/menu_audio_options_loop.s index a38502c0..3ac098a6 100644 --- a/asm/non_matchings/menu/menu_audio_options_loop.s +++ b/asm/non_matchings/menu/menu_audio_options_loop.s @@ -78,7 +78,7 @@ glabel menu_audio_options_loop /* 085994 80084D94 1601FFE6 */ bne $s0, $at, .L80084D30 /* 085998 80084D98 00F83821 */ addu $a3, $a3, $t8 /* 08599C 80084D9C 04C10006 */ bgez $a2, .L80084DB8 -/* 0859A0 80084DA0 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 +/* 0859A0 80084DA0 3C038012 */ lui $v1, %hi(gMenuOptionCount) # $v1, 0x8012 /* 0859A4 80084DA4 24C60018 */ addiu $a2, $a2, 0x18 /* 0859A8 80084DA8 18C00008 */ blez $a2, .L80084DCC /* 0859AC 80084DAC 8FA40040 */ lw $a0, 0x40($sp) @@ -99,17 +99,17 @@ glabel menu_audio_options_loop /* 0859DC 80084DDC 01402025 */ move $a0, $t2 /* 0859E0 80084DE0 3C0C8012 */ lui $t4, %hi(gOptionsMenuItemIndex) # $t4, 0x8012 /* 0859E4 80084DE4 858C6C46 */ lh $t4, %lo(gOptionsMenuItemIndex)($t4) -/* 0859E8 80084DE8 246363E0 */ addiu $v1, %lo(D_801263E0) # addiu $v1, $v1, 0x63e0 +/* 0859E8 80084DE8 246363E0 */ addiu $v1, %lo(gMenuOptionCount) # addiu $v1, $v1, 0x63e0 /* 0859EC 80084DEC 8C6B0000 */ lw $t3, ($v1) /* 0859F0 80084DF0 258D0001 */ addiu $t5, $t4, 1 /* 0859F4 80084DF4 116D0007 */ beq $t3, $t5, .L80084E14 /* 0859F8 80084DF8 2418FFFF */ li $t8, -1 .L80084DFC: /* 0859FC 80084DFC 8FAE0040 */ lw $t6, 0x40($sp) -/* 085A00 80084E00 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 +/* 085A00 80084E00 3C038012 */ lui $v1, %hi(gMenuOptionCount) # $v1, 0x8012 /* 085A04 80084E04 31CF4000 */ andi $t7, $t6, 0x4000 /* 085A08 80084E08 11E00011 */ beqz $t7, .L80084E50 -/* 085A0C 80084E0C 246363E0 */ addiu $v1, %lo(D_801263E0) # addiu $v1, $v1, 0x63e0 +/* 085A0C 80084E0C 246363E0 */ addiu $v1, %lo(gMenuOptionCount) # addiu $v1, $v1, 0x63e0 /* 085A10 80084E10 2418FFFF */ li $t8, -1 .L80084E14: /* 085A14 80084E14 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e diff --git a/asm/non_matchings/menu/menu_credits_loop.s b/asm/non_matchings/menu/menu_credits_loop.s index 85035219..3b3d082a 100644 --- a/asm/non_matchings/menu/menu_credits_loop.s +++ b/asm/non_matchings/menu/menu_credits_loop.s @@ -89,13 +89,13 @@ glabel menu_credits_loop /* 09C060 8009B460 27140048 */ addiu $s4, $t8, 0x48 /* 09C064 8009B464 00029443 */ sra $s2, $v0, 0x11 /* 09C068 8009B468 32597FFF */ andi $t9, $s2, 0x7fff -/* 09C06C 8009B46C 3C10800E */ lui $s0, %hi(D_800E0AF0) # $s0, 0x800e +/* 09C06C 8009B46C 3C10800E */ lui $s0, %hi(gRacerPortraits) # $s0, 0x800e /* 09C070 8009B470 3C178012 */ lui $s7, %hi(sMenuCurrDisplayList) # $s7, 0x8012 /* 09C074 8009B474 3C16800E */ lui $s6, %hi(D_800E0B18) # $s6, 0x800e /* 09C078 8009B478 03209025 */ move $s2, $t9 /* 09C07C 8009B47C 26D60B18 */ addiu $s6, %lo(D_800E0B18) # addiu $s6, $s6, 0xb18 /* 09C080 8009B480 26F763A0 */ addiu $s7, %lo(sMenuCurrDisplayList) # addiu $s7, $s7, 0x63a0 -/* 09C084 8009B484 26100AF0 */ addiu $s0, %lo(D_800E0AF0) # addiu $s0, $s0, 0xaf0 +/* 09C084 8009B484 26100AF0 */ addiu $s0, %lo(gRacerPortraits) # addiu $s0, $s0, 0xaf0 .L8009B488: /* 09C088 8009B488 00158C00 */ sll $s1, $s5, 0x10 /* 09C08C 8009B48C 00114C03 */ sra $t1, $s1, 0x10 @@ -507,8 +507,8 @@ glabel menu_credits_loop /* 09C65C 8009BA5C 3C068012 */ lui $a2, %hi(gOpacityDecayTimer) # $a2, 0x8012 /* 09C660 8009BA60 24C663D8 */ addiu $a2, %lo(gOpacityDecayTimer) # addiu $a2, $a2, 0x63d8 .L8009BA64: -/* 09C664 8009BA64 3C108012 */ lui $s0, %hi(D_801263E0) # $s0, 0x8012 -/* 09C668 8009BA68 261063E0 */ addiu $s0, %lo(D_801263E0) # addiu $s0, $s0, 0x63e0 +/* 09C664 8009BA64 3C108012 */ lui $s0, %hi(gMenuOptionCount) # $s0, 0x8012 +/* 09C668 8009BA68 261063E0 */ addiu $s0, %lo(gMenuOptionCount) # addiu $s0, $s0, 0x63e0 /* 09C66C 8009BA6C 8E0A0000 */ lw $t2, ($s0) /* 09C670 8009BA70 24110004 */ li $s1, 4 /* 09C674 8009BA74 2D410005 */ sltiu $at, $t2, 5 diff --git a/asm/non_matchings/menu/menu_ghost_data_init.s b/asm/non_matchings/menu/menu_ghost_data_init.s index f7bd01f2..09d25b27 100644 --- a/asm/non_matchings/menu/menu_ghost_data_init.s +++ b/asm/non_matchings/menu/menu_ghost_data_init.s @@ -35,8 +35,8 @@ glabel menu_ghost_data_init /* 09A6DC 80099ADC 2484174C */ addiu $a0, %lo(D_800E174C) # addiu $a0, $a0, 0x174c /* 09A6E0 80099AE0 0C03105C */ jal load_font /* 09A6E4 80099AE4 24040002 */ li $a0, 2 -/* 09A6E8 80099AE8 3C028012 */ lui $v0, %hi(D_80126550) # $v0, 0x8012 -/* 09A6EC 80099AEC 24426550 */ addiu $v0, %lo(D_80126550) # addiu $v0, $v0, 0x6550 +/* 09A6E8 80099AE8 3C028012 */ lui $v0, %hi(gMenuTextures) # $v0, 0x8012 +/* 09A6EC 80099AEC 24426550 */ addiu $v0, %lo(gMenuTextures) # addiu $v0, $v0, 0x6550 /* 09A6F0 80099AF0 8C570038 */ lw $s7, 0x38($v0) /* 09A6F4 80099AF4 3C01800E */ lui $at, %hi(D_800E153C) # $at, 0x800e /* 09A6F8 80099AF8 AC37153C */ sw $s7, %lo(D_800E153C)($at) @@ -234,12 +234,12 @@ glabel menu_ghost_data_init /* 09A9F8 80099DF8 AF0F0018 */ sw $t7, 0x18($t8) /* 09A9FC 80099DFC 0C025181 */ jal assign_racer_portrait_textures /* 09AA00 80099E00 00000000 */ nop -/* 09AA04 80099E04 0C02392C */ jal func_8008E4B0 +/* 09AA04 80099E04 0C02392C */ jal assign_menu_arrow_textures /* 09AA08 80099E08 00000000 */ nop /* 09AA0C 80099E0C 3C018012 */ lui $at, %hi(gOptionBlinkTimer) # $at, 0x8012 /* 09AA10 80099E10 AC2063BC */ sw $zero, %lo(gOptionBlinkTimer)($at) -/* 09AA14 80099E14 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 09AA18 80099E18 AC2063E0 */ sw $zero, %lo(D_801263E0)($at) +/* 09AA14 80099E14 3C018012 */ lui $at, %hi(gMenuOptionCount) # $at, 0x8012 +/* 09AA18 80099E18 AC2063E0 */ sw $zero, %lo(gMenuOptionCount)($at) /* 09AA1C 80099E1C 3C018012 */ lui $at, %hi(gOpacityDecayTimer) # $at, 0x8012 /* 09AA20 80099E20 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e /* 09AA24 80099E24 AC2063D8 */ sw $zero, %lo(gOpacityDecayTimer)($at) diff --git a/asm/non_matchings/menu/menu_track_select_init.s b/asm/non_matchings/menu/menu_track_select_init.s index 920422e8..73c6bd61 100644 --- a/asm/non_matchings/menu/menu_track_select_init.s +++ b/asm/non_matchings/menu/menu_track_select_init.s @@ -100,10 +100,10 @@ glabel menu_track_select_init /* 08F524 8008E924 0C01DED7 */ jal set_background_fill_colour /* 08F528 8008E928 240600DF */ li $a2, 223 /* 08F52C 8008E92C 3C11800E */ lui $s1, %hi(D_800E0710) # $s1, 0x800e -/* 08F530 8008E930 3C168012 */ lui $s6, %hi(D_80126550) # $s6, 0x8012 +/* 08F530 8008E930 3C168012 */ lui $s6, %hi(gMenuTextures) # $s6, 0x8012 /* 08F534 8008E934 3C12800E */ lui $s2, %hi(D_800E0730) # $s2, 0x800e /* 08F538 8008E938 26520730 */ addiu $s2, %lo(D_800E0730) # addiu $s2, $s2, 0x730 -/* 08F53C 8008E93C 26D66550 */ addiu $s6, %lo(D_80126550) # addiu $s6, $s6, 0x6550 +/* 08F53C 8008E93C 26D66550 */ addiu $s6, %lo(gMenuTextures) # addiu $s6, $s6, 0x6550 /* 08F540 8008E940 26310710 */ addiu $s1, %lo(D_800E0710) # addiu $s1, $s1, 0x710 /* 08F544 8008E944 00002825 */ move $a1, $zero .L8008E948: @@ -336,7 +336,7 @@ glabel menu_track_select_init /* 08F8B8 8008ECB8 3C04800E */ lui $a0, %hi(D_800E07E0) # $a0, 0x800e /* 08F8BC 8008ECBC 0C027229 */ jal allocate_menu_images /* 08F8C0 8008ECC0 248407E0 */ addiu $a0, %lo(D_800E07E0) # addiu $a0, $a0, 0x7e0 -/* 08F8C4 8008ECC4 0C02392C */ jal func_8008E4B0 +/* 08F8C4 8008ECC4 0C02392C */ jal assign_menu_arrow_textures /* 08F8C8 8008ECC8 00000000 */ nop /* 08F8CC 8008ECCC 3C02800E */ lui $v0, %hi(D_800E05D4) # $v0, 0x800e /* 08F8D0 8008ECD0 3C03800E */ lui $v1, %hi(D_800E05F4) # $v1, 0x800e diff --git a/asm/non_matchings/menu/render_file_select_menu.s b/asm/non_matchings/menu/render_file_select_menu.s index 8cc658fc..fede0893 100644 --- a/asm/non_matchings/menu/render_file_select_menu.s +++ b/asm/non_matchings/menu/render_file_select_menu.s @@ -28,12 +28,12 @@ glabel render_file_select_menu /* 08D9D4 8008CDD4 02E02025 */ move $a0, $s7 /* 08D9D8 8008CDD8 3C118012 */ lui $s1, %hi(gSavefileInfo) # $s1, 0x8012 /* 08D9DC 8008CDDC 3C10800E */ lui $s0, %hi(gFileSelectButtons) # $s0, 0x800e -/* 08D9E0 8008CDE0 3C158012 */ lui $s5, %hi(D_80126550) # $s5, 0x8012 +/* 08D9E0 8008CDE0 3C158012 */ lui $s5, %hi(gMenuTextures) # $s5, 0x8012 /* 08D9E4 8008CDE4 3C13B0E0 */ lui $s3, (0xB0E0C0FF >> 16) # lui $s3, 0xb0e0 /* 08D9E8 8008CDE8 3C12800E */ lui $s2, %hi(gIsInAdventureTwo) # $s2, 0x800e /* 08D9EC 8008CDEC 2652F494 */ addiu $s2, %lo(gIsInAdventureTwo) # addiu $s2, $s2, -0xb6c /* 08D9F0 8008CDF0 3673C0FF */ ori $s3, (0xB0E0C0FF & 0xFFFF) # ori $s3, $s3, 0xc0ff -/* 08D9F4 8008CDF4 26B56550 */ addiu $s5, %lo(D_80126550) # addiu $s5, $s5, 0x6550 +/* 08D9F4 8008CDF4 26B56550 */ addiu $s5, %lo(gMenuTextures) # addiu $s5, $s5, 0x6550 /* 08D9F8 8008CDF8 261003CC */ addiu $s0, %lo(gFileSelectButtons) # addiu $s0, $s0, 0x3cc /* 08D9FC 8008CDFC 263164A0 */ addiu $s1, %lo(gSavefileInfo) # addiu $s1, $s1, 0x64a0 /* 08DA00 8008CE00 24140078 */ li $s4, 120 @@ -296,7 +296,7 @@ glabel render_file_select_menu /* 08DDC4 8008D1C4 8D086488 */ lw $t0, %lo(D_80126488)($t0) /* 08DDC8 8008D1C8 3C098012 */ lui $t1, %hi(gSaveFileIndex3) # $t1, 0x8012 /* 08DDCC 8008D1CC 11000007 */ beqz $t0, .L8008D1EC -/* 08DDD0 8008D1D0 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 +/* 08DDD0 8008D1D0 3C0A8012 */ lui $t2, %hi(gMenuOptionCount) # $t2, 0x8012 /* 08DDD4 8008D1D4 8D29648C */ lw $t1, %lo(gSaveFileIndex3)($t1) /* 08DDD8 8008D1D8 00000000 */ nop /* 08DDDC 8008D1DC 1669000C */ bne $s3, $t1, .L8008D210 @@ -304,7 +304,7 @@ glabel render_file_select_menu /* 08DDE4 8008D1E4 1000000A */ b .L8008D210 /* 08DDE8 8008D1E8 24120001 */ li $s2, 1 .L8008D1EC: -/* 08DDEC 8008D1EC 8D4A63E0 */ lw $t2, %lo(D_801263E0)($t2) +/* 08DDEC 8008D1EC 8D4A63E0 */ lw $t2, %lo(gMenuOptionCount)($t2) /* 08DDF0 8008D1F0 3C0B800E */ lui $t3, %hi(gSaveFileIndex) # $t3, 0x800e /* 08DDF4 8008D1F4 15400006 */ bnez $t2, .L8008D210 /* 08DDF8 8008D1F8 00000000 */ nop @@ -511,10 +511,10 @@ glabel render_file_select_menu /* 08E0F8 8008D4F8 8FBF0054 */ lw $ra, 0x54($sp) .L8008D4FC: /* 08E0FC 8008D4FC 8D6B6CC0 */ lw $t3, %lo(D_80126CC0)($t3) -/* 08E100 8008D500 3C0C8012 */ lui $t4, %hi(D_801263E0) # $t4, 0x8012 +/* 08E100 8008D500 3C0C8012 */ lui $t4, %hi(gMenuOptionCount) # $t4, 0x8012 /* 08E104 8008D504 15600032 */ bnez $t3, .L8008D5D0 /* 08E108 8008D508 8FBF0054 */ lw $ra, 0x54($sp) -/* 08E10C 8008D50C 8D8C63E0 */ lw $t4, %lo(D_801263E0)($t4) +/* 08E10C 8008D50C 8D8C63E0 */ lw $t4, %lo(gMenuOptionCount)($t4) /* 08E110 8008D510 24010001 */ li $at, 1 /* 08E114 8008D514 15810007 */ bne $t4, $at, .L8008D534 /* 08E118 8008D518 240400FF */ li $a0, 255 @@ -534,8 +534,8 @@ glabel render_file_select_menu /* 08E14C 8008D54C 2405005A */ li $a1, 90 /* 08E150 8008D550 0C031110 */ jal draw_text /* 08E154 8008D554 02C03025 */ move $a2, $s6 -/* 08E158 8008D558 3C188012 */ lui $t8, %hi(D_801263E0) # $t8, 0x8012 -/* 08E15C 8008D55C 8F1863E0 */ lw $t8, %lo(D_801263E0)($t8) +/* 08E158 8008D558 3C188012 */ lui $t8, %hi(gMenuOptionCount) # $t8, 0x8012 +/* 08E15C 8008D55C 8F1863E0 */ lw $t8, %lo(gMenuOptionCount)($t8) /* 08E160 8008D560 24010002 */ li $at, 2 /* 08E164 8008D564 1701000A */ bne $t8, $at, .L8008D590 /* 08E168 8008D568 240400FF */ li $a0, 255 diff --git a/asm/non_matchings/menu/render_magic_codes_list_menu_text.s b/asm/non_matchings/menu/render_magic_codes_list_menu_text.s index 93edcc52..46315036 100644 --- a/asm/non_matchings/menu/render_magic_codes_list_menu_text.s +++ b/asm/non_matchings/menu/render_magic_codes_list_menu_text.s @@ -91,10 +91,10 @@ glabel render_magic_codes_list_menu_text /* 08B2C4 8008A6C4 240600FF */ li $a2, 255 /* 08B2C8 8008A6C8 0C0310E1 */ jal set_text_colour /* 08B2CC 8008A6CC 00003825 */ move $a3, $zero -/* 08B2D0 8008A6D0 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 -/* 08B2D4 8008A6D4 3C198012 */ lui $t9, %hi(D_80126C70) # $t9, 0x8012 -/* 08B2D8 8008A6D8 8F396C70 */ lw $t9, %lo(D_80126C70)($t9) -/* 08B2DC 8008A6DC 8C6363E0 */ lw $v1, %lo(D_801263E0)($v1) +/* 08B2D0 8008A6D0 3C038012 */ lui $v1, %hi(gMenuOptionCount) # $v1, 0x8012 +/* 08B2D4 8008A6D4 3C198012 */ lui $t9, %hi(gNumOnscreenMagicCodes) # $t9, 0x8012 +/* 08B2D8 8008A6D8 8F396C70 */ lw $t9, %lo(gNumOnscreenMagicCodes)($t9) +/* 08B2DC 8008A6DC 8C6363E0 */ lw $v1, %lo(gMenuOptionCount)($v1) /* 08B2E0 8008A6E0 3C168012 */ lui $s6, %hi(gCheatsAssetData) # $s6, 0x8012 /* 08B2E4 8008A6E4 8ED66C30 */ lw $s6, %lo(gCheatsAssetData)($s6) /* 08B2E8 8008A6E8 00791021 */ addu $v0, $v1, $t9 @@ -168,10 +168,10 @@ glabel render_magic_codes_list_menu_text /* 08B3E8 8008A7E8 0C0310E1 */ jal set_text_colour /* 08B3EC 8008A7EC 00003825 */ move $a3, $zero .L8008A7F0: -/* 08B3F0 8008A7F0 3C198012 */ lui $t9, %hi(D_801263E0) # $t9, 0x8012 -/* 08B3F4 8008A7F4 3C098012 */ lui $t1, %hi(D_80126C70) # $t1, 0x8012 -/* 08B3F8 8008A7F8 8D296C70 */ lw $t1, %lo(D_80126C70)($t1) -/* 08B3FC 8008A7FC 8F3963E0 */ lw $t9, %lo(D_801263E0)($t9) +/* 08B3F0 8008A7F0 3C198012 */ lui $t9, %hi(gMenuOptionCount) # $t9, 0x8012 +/* 08B3F4 8008A7F4 3C098012 */ lui $t1, %hi(gNumOnscreenMagicCodes) # $t1, 0x8012 +/* 08B3F8 8008A7F8 8D296C70 */ lw $t1, %lo(gNumOnscreenMagicCodes)($t1) +/* 08B3FC 8008A7FC 8F3963E0 */ lw $t9, %lo(gMenuOptionCount)($t9) /* 08B400 8008A800 26100001 */ addiu $s0, $s0, 1 /* 08B404 8008A804 03291021 */ addu $v0, $t9, $t1 /* 08B408 8008A808 0202082A */ slt $at, $s0, $v0 diff --git a/asm/non_matchings/menu/render_magic_codes_ui.s b/asm/non_matchings/menu/render_magic_codes_ui.s index f49856b6..4ebb545b 100644 --- a/asm/non_matchings/menu/render_magic_codes_ui.s +++ b/asm/non_matchings/menu/render_magic_codes_ui.s @@ -204,8 +204,8 @@ glabel render_magic_codes_ui /* 08A5A0 800899A0 11800022 */ beqz $t4, .L80089A2C /* 08A5A4 800899A4 3C0E800E */ lui $t6, %hi(gMagicCodeMenuStrings) # $t6, 0x800e /* 08A5A8 800899A8 25CEFDA0 */ addiu $t6, %lo(gMagicCodeMenuStrings) # addiu $t6, $t6, -0x260 -/* 08A5AC 800899AC 3C158012 */ lui $s5, %hi(D_801263E0) # $s5, 0x8012 -/* 08A5B0 800899B0 26B563E0 */ addiu $s5, %lo(D_801263E0) # addiu $s5, $s5, 0x63e0 +/* 08A5AC 800899AC 3C158012 */ lui $s5, %hi(gMenuOptionCount) # $s5, 0x8012 +/* 08A5B0 800899B0 26B563E0 */ addiu $s5, %lo(gMenuOptionCount) # addiu $s5, $s5, 0x63e0 /* 08A5B4 800899B4 01AE8821 */ addu $s1, $t5, $t6 .L800899B8: /* 08A5B8 800899B8 3C0F8012 */ lui $t7, %hi(gOptionsMenuItemIndex) # $t7, 0x8012 @@ -240,8 +240,8 @@ glabel render_magic_codes_ui /* 08A624 80089A24 1540FFE4 */ bnez $t2, .L800899B8 /* 08A628 80089A28 02749821 */ addu $s3, $s3, $s4 .L80089A2C: -/* 08A62C 80089A2C 3C158012 */ lui $s5, %hi(D_801263E0) # $s5, 0x8012 -/* 08A630 80089A30 26B563E0 */ addiu $s5, %lo(D_801263E0) # addiu $s5, $s5, 0x63e0 +/* 08A62C 80089A2C 3C158012 */ lui $s5, %hi(gMenuOptionCount) # $s5, 0x8012 +/* 08A630 80089A30 26B563E0 */ addiu $s5, %lo(gMenuOptionCount) # addiu $s5, $s5, 0x63e0 /* 08A634 80089A34 0C0310BB */ jal set_text_font /* 08A638 80089A38 00002025 */ move $a0, $zero /* 08A63C 80089A3C 240B00FF */ li $t3, 255 diff --git a/asm/non_matchings/menu/render_track_select_setup_ui.s b/asm/non_matchings/menu/render_track_select_setup_ui.s index 50d525b8..8b5e5425 100644 --- a/asm/non_matchings/menu/render_track_select_setup_ui.s +++ b/asm/non_matchings/menu/render_track_select_setup_ui.s @@ -35,11 +35,11 @@ glabel render_track_select_setup_ui /* 091B9C 80090F9C 00002025 */ move $a0, $zero /* 091BA0 80090FA0 3C198012 */ lui $t9, %hi(D_801269C8) # $t9, 0x8012 /* 091BA4 80090FA4 8F3969C8 */ lw $t9, %lo(D_801269C8)($t9) -/* 091BA8 80090FA8 3C088012 */ lui $t0, %hi(D_801263E0) # $t0, 0x8012 +/* 091BA8 80090FA8 3C088012 */ lui $t0, %hi(gMenuOptionCount) # $t0, 0x8012 /* 091BAC 80090FAC 2B210004 */ slti $at, $t9, 4 /* 091BB0 80090FB0 10200007 */ beqz $at, .L80090FD0 /* 091BB4 80090FB4 00000000 */ nop -/* 091BB8 80090FB8 8D0863E0 */ lw $t0, %lo(D_801263E0)($t0) +/* 091BB8 80090FB8 8D0863E0 */ lw $t0, %lo(gMenuOptionCount)($t0) /* 091BBC 80090FBC 24090001 */ li $t1, 1 /* 091BC0 80090FC0 29010002 */ slti $at, $t0, 2 /* 091BC4 80090FC4 14200002 */ bnez $at, .L80090FD0 @@ -175,8 +175,8 @@ glabel render_track_select_setup_ui /* 091DA4 800911A4 AFA60084 */ sw $a2, 0x84($sp) /* 091DA8 800911A8 0C0313EF */ jal set_current_dialogue_background_colour /* 091DAC 800911AC AFAF0010 */ sw $t7, 0x10($sp) -/* 091DB0 800911B0 3C028012 */ lui $v0, %hi(D_801263E0) # $v0, 0x8012 -/* 091DB4 800911B4 8C4263E0 */ lw $v0, %lo(D_801263E0)($v0) +/* 091DB0 800911B0 3C028012 */ lui $v0, %hi(gMenuOptionCount) # $v0, 0x8012 +/* 091DB4 800911B4 8C4263E0 */ lw $v0, %lo(gMenuOptionCount)($v0) /* 091DB8 800911B8 2401FFFF */ li $at, -1 /* 091DBC 800911BC 1041000A */ beq $v0, $at, .L800911E8 /* 091DC0 800911C0 24010002 */ li $at, 2 @@ -221,8 +221,8 @@ glabel render_track_select_setup_ui .L80091250: /* 091E50 80091250 8FCE0000 */ lw $t6, ($fp) /* 091E54 80091254 3C01B0E0 */ lui $at, (0xB0E0C000 >> 16) # lui $at, 0xb0e0 -/* 091E58 80091258 3C188012 */ lui $t8, %hi(D_80126550) # $t8, 0x8012 -/* 091E5C 8009125C 8F18665C */ lw $t8, %lo(D_80126550 + 0x10C)($t8) +/* 091E58 80091258 3C188012 */ lui $t8, %hi(gMenuTextures) # $t8, 0x8012 +/* 091E5C 8009125C 8F18665C */ lw $t8, %lo(gMenuTextures + 0x10C)($t8) /* 091E60 80091260 86090002 */ lh $t1, 2($s0) /* 091E64 80091264 860B0006 */ lh $t3, 6($s0) /* 091E68 80091268 860C0008 */ lh $t4, 8($s0) @@ -437,8 +437,8 @@ glabel render_track_select_setup_ui /* 092194 80091594 24060021 */ li $a2, 33 /* 092198 80091598 0C020600 */ jal show_timestamp /* 09219C 8009159C 240700FF */ li $a3, 255 -/* 0921A0 800915A0 3C0D8012 */ lui $t5, %hi(D_801263E0) # $t5, 0x8012 -/* 0921A4 800915A4 8DAD63E0 */ lw $t5, %lo(D_801263E0)($t5) +/* 0921A0 800915A0 3C0D8012 */ lui $t5, %hi(gMenuOptionCount) # $t5, 0x8012 +/* 0921A4 800915A4 8DAD63E0 */ lw $t5, %lo(gMenuOptionCount)($t5) /* 0921A8 800915A8 2401FFFF */ li $at, -1 /* 0921AC 800915AC 11A10256 */ beq $t5, $at, .L80091F08 /* 0921B0 800915B0 3C02800E */ lui $v0, %hi(gNumberOfActivePlayers) # $v0, 0x800e @@ -459,8 +459,8 @@ glabel render_track_select_setup_ui /* 0921EC 800915EC 00003025 */ move $a2, $zero /* 0921F0 800915F0 0C0316D6 */ jal render_dialogue_box /* 0921F4 800915F4 24070007 */ li $a3, 7 -/* 0921F8 800915F8 3C0F8012 */ lui $t7, %hi(D_801263E0) # $t7, 0x8012 -/* 0921FC 800915FC 8DEF63E0 */ lw $t7, %lo(D_801263E0)($t7) +/* 0921F8 800915F8 3C0F8012 */ lui $t7, %hi(gMenuOptionCount) # $t7, 0x8012 +/* 0921FC 800915FC 8DEF63E0 */ lw $t7, %lo(gMenuOptionCount)($t7) /* 092200 80091600 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092204 80091604 1DE00013 */ bgtz $t7, .L80091654 /* 092208 80091608 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 @@ -571,8 +571,8 @@ glabel render_track_select_setup_ui /* 092390 80091790 8C42F4BC */ lw $v0, %lo(gNumberOfActivePlayers)($v0) /* 092394 80091794 24010001 */ li $at, 1 /* 092398 80091798 14410004 */ bne $v0, $at, .L800917AC -/* 09239C 8009179C 3C098012 */ lui $t1, %hi(D_801263E0) # $t1, 0x8012 -/* 0923A0 800917A0 8D2963E0 */ lw $t1, %lo(D_801263E0)($t1) +/* 09239C 8009179C 3C098012 */ lui $t1, %hi(gMenuOptionCount) # $t1, 0x8012 +/* 0923A0 800917A0 8D2963E0 */ lw $t1, %lo(gMenuOptionCount)($t1) /* 0923A4 800917A4 00000000 */ nop /* 0923A8 800917A8 12A90007 */ beq $s5, $t1, .L800917C8 .L800917AC: @@ -630,8 +630,8 @@ glabel render_track_select_setup_ui /* 09246C 8009186C 28410002 */ slti $at, $v0, 2 .L80091870: /* 092470 80091870 10200005 */ beqz $at, .L80091888 -/* 092474 80091874 3C0A8012 */ lui $t2, %hi(D_801263E0) # $t2, 0x8012 -/* 092478 80091878 8D4A63E0 */ lw $t2, %lo(D_801263E0)($t2) +/* 092474 80091874 3C0A8012 */ lui $t2, %hi(gMenuOptionCount) # $t2, 0x8012 +/* 092478 80091878 8D4A63E0 */ lw $t2, %lo(gMenuOptionCount)($t2) /* 09247C 8009187C 00000000 */ nop /* 092480 80091880 1540006A */ bnez $t2, .L80091A2C /* 092484 80091884 8FB00080 */ lw $s0, 0x80($sp) @@ -761,8 +761,8 @@ glabel render_track_select_setup_ui .L80091A4C: /* 09264C 80091A4C 24010001 */ li $at, 1 /* 092650 80091A50 14410035 */ bne $v0, $at, .L80091B28 -/* 092654 80091A54 3C188012 */ lui $t8, %hi(D_801263E0) # $t8, 0x8012 -/* 092658 80091A58 8F1863E0 */ lw $t8, %lo(D_801263E0)($t8) +/* 092654 80091A54 3C188012 */ lui $t8, %hi(gMenuOptionCount) # $t8, 0x8012 +/* 092658 80091A58 8F1863E0 */ lw $t8, %lo(gMenuOptionCount)($t8) /* 09265C 80091A5C 00000000 */ nop /* 092660 80091A60 17000019 */ bnez $t8, .L80091AC8 /* 092664 80091A64 00000000 */ nop @@ -936,8 +936,8 @@ glabel render_track_select_setup_ui .L80091CE8: /* 0928E8 80091CE8 0060A025 */ move $s4, $v1 .L80091CEC: -/* 0928EC 80091CEC 3C0B8012 */ lui $t3, %hi(D_80126550) # $t3, 0x8012 -/* 0928F0 80091CF0 8D6B665C */ lw $t3, %lo(D_80126550 + 0x10C)($t3) +/* 0928EC 80091CEC 3C0B8012 */ lui $t3, %hi(gMenuTextures) # $t3, 0x8012 +/* 0928F0 80091CF0 8D6B665C */ lw $t3, %lo(gMenuTextures + 0x10C)($t3) /* 0928F4 80091CF4 864E0002 */ lh $t6, 2($s2) /* 0928F8 80091CF8 86590006 */ lh $t9, 6($s2) /* 0928FC 80091CFC 86490008 */ lh $t1, 8($s2) @@ -1023,10 +1023,10 @@ glabel render_track_select_setup_ui /* 092A3C 80091E3C 241300FF */ li $s3, 255 .L80091E40: /* 092A40 80091E40 8EA80000 */ lw $t0, ($s5) -/* 092A44 80091E44 3C0B8012 */ lui $t3, %hi(D_801263E0) # $t3, 0x8012 +/* 092A44 80091E44 3C0B8012 */ lui $t3, %hi(gMenuOptionCount) # $t3, 0x8012 /* 092A48 80091E48 1688000D */ bne $s4, $t0, .L80091E80 /* 092A4C 80091E4C 00141040 */ sll $v0, $s4, 1 -/* 092A50 80091E50 8D6B63E0 */ lw $t3, %lo(D_801263E0)($t3) +/* 092A50 80091E50 8D6B63E0 */ lw $t3, %lo(gMenuOptionCount)($t3) /* 092A54 80091E54 8FAC0084 */ lw $t4, 0x84($sp) /* 092A58 80091E58 29610003 */ slti $at, $t3, 3 /* 092A5C 80091E5C 10200005 */ beqz $at, .L80091E74 @@ -1152,8 +1152,8 @@ glabel render_track_select_setup_ui /* 092C14 80092014 8D08F4BC */ lw $t0, %lo(gNumberOfActivePlayers)($t0) /* 092C18 80092018 24010001 */ li $at, 1 /* 092C1C 8009201C 1501001C */ bne $t0, $at, .L80092090 -/* 092C20 80092020 3C0B8012 */ lui $t3, %hi(D_801263E0) # $t3, 0x8012 -/* 092C24 80092024 8D6B63E0 */ lw $t3, %lo(D_801263E0)($t3) +/* 092C20 80092020 3C0B8012 */ lui $t3, %hi(gMenuOptionCount) # $t3, 0x8012 +/* 092C24 80092024 8D6B63E0 */ lw $t3, %lo(gMenuOptionCount)($t3) /* 092C28 80092028 3C04800E */ lui $a0, %hi(gTrackIdForPreview) # $a0, 0x800e /* 092C2C 8009202C 05600018 */ bltz $t3, .L80092090 /* 092C30 80092030 00000000 */ nop @@ -1185,8 +1185,8 @@ glabel render_track_select_setup_ui /* 092C94 80092094 8DCE69C8 */ lw $t6, %lo(D_801269C8)($t6) /* 092C98 80092098 24010005 */ li $at, 5 /* 092C9C 8009209C 11C1002C */ beq $t6, $at, .L80092150 -/* 092CA0 800920A0 3C028012 */ lui $v0, %hi(D_801263E0) # $v0, 0x8012 -/* 092CA4 800920A4 8C4263E0 */ lw $v0, %lo(D_801263E0)($v0) +/* 092CA0 800920A0 3C028012 */ lui $v0, %hi(gMenuOptionCount) # $v0, 0x8012 +/* 092CA4 800920A4 8C4263E0 */ lw $v0, %lo(gMenuOptionCount)($v0) /* 092CA8 800920A8 24010002 */ li $at, 2 /* 092CAC 800920AC 14410005 */ bne $v0, $at, .L800920C4 /* 092CB0 800920B0 00000000 */ nop diff --git a/asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s b/asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s index b7809b5e..df066c3b 100644 --- a/asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s +++ b/asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s @@ -72,7 +72,7 @@ glabel calc_dynamic_lighting_for_object_1 /* 01E524 8001D924 00000000 */ nop /* 01E528 8001D928 12400009 */ beqz $s2, .L8001D950 /* 01E52C 8001D92C 00000000 */ nop -/* 01E530 8001D930 0C01A769 */ jal func_80069DA4 +/* 01E530 8001D930 0C01A769 */ jal get_projection_matrix_f32 /* 01E534 8001D934 A7A9009E */ sh $t1, 0x9e($sp) /* 01E538 8001D938 00402025 */ move $a0, $v0 /* 01E53C 8001D93C 02002825 */ move $a1, $s0 @@ -136,7 +136,7 @@ glabel calc_dynamic_lighting_for_object_1 /* 01E620 8001DA20 46803220 */ cvt.s.w $f8, $f6 /* 01E624 8001DA24 12400009 */ beqz $s2, .L8001DA4C /* 01E628 8001DA28 E7A80064 */ swc1 $f8, 0x64($sp) -/* 01E62C 8001DA2C 0C01A769 */ jal func_80069DA4 +/* 01E62C 8001DA2C 0C01A769 */ jal get_projection_matrix_f32 /* 01E630 8001DA30 A7A9009E */ sh $t1, 0x9e($sp) /* 01E634 8001DA34 00402025 */ move $a0, $v0 /* 01E638 8001DA38 02002825 */ move $a1, $s0 diff --git a/asm/non_matchings/objects/func_800135B8.s b/asm/non_matchings/objects/func_800135B8.s index 824b10f2..7baee82e 100644 --- a/asm/non_matchings/objects/func_800135B8.s +++ b/asm/non_matchings/objects/func_800135B8.s @@ -192,7 +192,7 @@ glabel func_800135B8 /* 014484 80013884 AC4E0004 */ sw $t6, 4($v0) /* 014488 80013888 AC580000 */ sw $t8, ($v0) .L8001388C: -/* 01448C 8001388C 0C01A690 */ jal func_80069A40 +/* 01448C 8001388C 0C01A690 */ jal apply_matrix_from_stack /* 014490 80013890 02002025 */ move $a0, $s0 /* 014494 80013894 8FBF0024 */ lw $ra, 0x24($sp) /* 014498 80013898 8FB0001C */ lw $s0, 0x1c($sp) diff --git a/asm/non_matchings/waves/func_800BA8E4.s b/asm/non_matchings/waves/func_800BA8E4.s index 621f9f57..f47cf8e1 100644 --- a/asm/non_matchings/waves/func_800BA8E4.s +++ b/asm/non_matchings/waves/func_800BA8E4.s @@ -1,672 +1,672 @@ -glabel func_800BA8E4 -/* 0BB4E4 800BA8E4 27BDFEE0 */ addiu $sp, $sp, -0x120 -/* 0BB4E8 800BA8E8 24010001 */ li $at, 1 -/* 0BB4EC 800BA8EC AFBF005C */ sw $ra, 0x5c($sp) -/* 0BB4F0 800BA8F0 AFBE0058 */ sw $fp, 0x58($sp) -/* 0BB4F4 800BA8F4 AFB70054 */ sw $s7, 0x54($sp) -/* 0BB4F8 800BA8F8 AFB60050 */ sw $s6, 0x50($sp) -/* 0BB4FC 800BA8FC AFB5004C */ sw $s5, 0x4c($sp) -/* 0BB500 800BA900 AFB40048 */ sw $s4, 0x48($sp) -/* 0BB504 800BA904 AFB30044 */ sw $s3, 0x44($sp) -/* 0BB508 800BA908 AFB20040 */ sw $s2, 0x40($sp) -/* 0BB50C 800BA90C AFB1003C */ sw $s1, 0x3c($sp) -/* 0BB510 800BA910 AFB00038 */ sw $s0, 0x38($sp) -/* 0BB514 800BA914 E7B90030 */ swc1 $f25, 0x30($sp) -/* 0BB518 800BA918 E7B80034 */ swc1 $f24, 0x34($sp) -/* 0BB51C 800BA91C E7B70028 */ swc1 $f23, 0x28($sp) -/* 0BB520 800BA920 E7B6002C */ swc1 $f22, 0x2c($sp) -/* 0BB524 800BA924 E7B50020 */ swc1 $f21, 0x20($sp) -/* 0BB528 800BA928 E7B40024 */ swc1 $f20, 0x24($sp) -/* 0BB52C 800BA92C AFA40120 */ sw $a0, 0x120($sp) -/* 0BB530 800BA930 14C10006 */ bne $a2, $at, .L800BA94C -/* 0BB534 800BA934 AFA50124 */ sw $a1, 0x124($sp) -/* 0BB538 800BA938 3C0E8013 */ lui $t6, %hi(D_8012A078) # $t6, 0x8013 -/* 0BB53C 800BA93C 8DCEA078 */ lw $t6, %lo(D_8012A078)($t6) -/* 0BB540 800BA940 24010002 */ li $at, 2 -/* 0BB544 800BA944 11C10003 */ beq $t6, $at, .L800BA954 -/* 0BB548 800BA948 240F0002 */ li $t7, 2 -.L800BA94C: -/* 0BB54C 800BA94C 10000002 */ b .L800BA958 -/* 0BB550 800BA950 AFA00128 */ sw $zero, 0x128($sp) -.L800BA954: -/* 0BB554 800BA954 AFAF0128 */ sw $t7, 0x128($sp) -.L800BA958: -/* 0BB558 800BA958 3C18800E */ lui $t8, %hi(D_800E30DC) # $t8, 0x800e -/* 0BB55C 800BA95C 8F1830DC */ lw $t8, %lo(D_800E30DC)($t8) -/* 0BB560 800BA960 3C118013 */ lui $s1, %hi(D_80129FC0) # $s1, 0x8013 -/* 0BB564 800BA964 1B00024F */ blez $t8, .L800BB2A4 -/* 0BB568 800BA968 26319FC0 */ addiu $s1, %lo(D_80129FC0) # addiu $s1, $s1, -0x6040 -/* 0BB56C 800BA96C 8FB90120 */ lw $t9, 0x120($sp) -/* 0BB570 800BA970 8FAF0124 */ lw $t7, 0x124($sp) -/* 0BB574 800BA974 8F2E0000 */ lw $t6, ($t9) -/* 0BB578 800BA978 3C018013 */ lui $at, %hi(D_80129FC4) # $at, 0x8013 -/* 0BB57C 800BA97C AE2E0000 */ sw $t6, ($s1) -/* 0BB580 800BA980 8DF80000 */ lw $t8, ($t7) -/* 0BB584 800BA984 AFA000DC */ sw $zero, 0xdc($sp) -/* 0BB588 800BA988 02202025 */ move $a0, $s1 -/* 0BB58C 800BA98C 0C01ECF4 */ jal reset_render_settings -/* 0BB590 800BA990 AC389FC4 */ sw $t8, %lo(D_80129FC4)($at) -/* 0BB594 800BA994 8E270000 */ lw $a3, ($s1) -/* 0BB598 800BA998 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB59C 800BA99C 24F90008 */ addiu $t9, $a3, 8 -/* 0BB5A0 800BA9A0 AE390000 */ sw $t9, ($s1) -/* 0BB5A4 800BA9A4 3C0EB700 */ lui $t6, 0xb700 -/* 0BB5A8 800BA9A8 240F0001 */ li $t7, 1 -/* 0BB5AC 800BA9AC 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BB5B0 800BA9B0 ACEF0004 */ sw $t7, 4($a3) -/* 0BB5B4 800BA9B4 ACEE0000 */ sw $t6, ($a3) -/* 0BB5B8 800BA9B8 8FF8004C */ lw $t8, 0x4c($ra) -/* 0BB5BC 800BA9BC 3C190001 */ lui $t9, 1 -/* 0BB5C0 800BA9C0 1300006F */ beqz $t8, .L800BAB80 -/* 0BB5C4 800BA9C4 3C0F8013 */ lui $t7, %hi(D_8012A07C) # $t7, 0x8013 -/* 0BB5C8 800BA9C8 8E270000 */ lw $a3, ($s1) -/* 0BB5CC 800BA9CC 3C0EB600 */ lui $t6, 0xb600 -/* 0BB5D0 800BA9D0 24F90008 */ addiu $t9, $a3, 8 -/* 0BB5D4 800BA9D4 AE390000 */ sw $t9, ($s1) -/* 0BB5D8 800BA9D8 3C0F0001 */ lui $t7, 1 -/* 0BB5DC 800BA9DC 3C058013 */ lui $a1, %hi(D_8012A09C) # $a1, 0x8013 -/* 0BB5E0 800BA9E0 ACEF0004 */ sw $t7, 4($a3) -/* 0BB5E4 800BA9E4 ACEE0000 */ sw $t6, ($a3) -/* 0BB5E8 800BA9E8 8CA5A09C */ lw $a1, %lo(D_8012A09C)($a1) -/* 0BB5EC 800BA9EC 3C04800E */ lui $a0, %hi(D_800E30D0) # $a0, 0x800e -/* 0BB5F0 800BA9F0 8C8430D0 */ lw $a0, %lo(D_800E30D0)($a0) -/* 0BB5F4 800BA9F4 0005C200 */ sll $t8, $a1, 8 -/* 0BB5F8 800BA9F8 0C01ED1B */ jal func_8007B46C -/* 0BB5FC 800BA9FC 03002825 */ move $a1, $t8 -/* 0BB600 800BAA00 3C198013 */ lui $t9, %hi(D_8012A07C) # $t9, 0x8013 -/* 0BB604 800BAA04 8F39A07C */ lw $t9, %lo(D_8012A07C)($t9) -/* 0BB608 800BAA08 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 -/* 0BB60C 800BAA0C 93250007 */ lbu $a1, 7($t9) -/* 0BB610 800BAA10 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) -/* 0BB614 800BAA14 00057380 */ sll $t6, $a1, 0xe -/* 0BB618 800BAA18 00408025 */ move $s0, $v0 -/* 0BB61C 800BAA1C 0C01ED1B */ jal func_8007B46C -/* 0BB620 800BAA20 01C02825 */ move $a1, $t6 -/* 0BB624 800BAA24 00409025 */ move $s2, $v0 -/* 0BB628 800BAA28 02002025 */ move $a0, $s0 -/* 0BB62C 800BAA2C 0C02E92E */ jal func_800BA4B8 -/* 0BB630 800BAA30 24050001 */ li $a1, 1 -/* 0BB634 800BAA34 02402025 */ move $a0, $s2 -/* 0BB638 800BAA38 0C02E92E */ jal func_800BA4B8 -/* 0BB63C 800BAA3C 00002825 */ move $a1, $zero -/* 0BB640 800BAA40 8E270000 */ lw $a3, ($s1) -/* 0BB644 800BAA44 3C18FC22 */ lui $t8, (0xFC2266AC >> 16) # lui $t8, 0xfc22 -/* 0BB648 800BAA48 24EF0008 */ addiu $t7, $a3, 8 -/* 0BB64C 800BAA4C AE2F0000 */ sw $t7, ($s1) -/* 0BB650 800BAA50 3C191010 */ lui $t9, (0x1010923F >> 16) # lui $t9, 0x1010 -/* 0BB654 800BAA54 3739923F */ ori $t9, (0x1010923F & 0xFFFF) # ori $t9, $t9, 0x923f -/* 0BB658 800BAA58 371866AC */ ori $t8, (0xFC2266AC & 0xFFFF) # ori $t8, $t8, 0x66ac -/* 0BB65C 800BAA5C ACF80000 */ sw $t8, ($a3) -/* 0BB660 800BAA60 ACF90004 */ sw $t9, 4($a3) -/* 0BB664 800BAA64 920E0002 */ lbu $t6, 2($s0) -/* 0BB668 800BAA68 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB66C 800BAA6C 31CF000F */ andi $t7, $t6, 0xf -/* 0BB670 800BAA70 15E00010 */ bnez $t7, .L800BAAB4 -/* 0BB674 800BAA74 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BB678 800BAA78 0C019884 */ jal get_viewport_count -/* 0BB67C 800BAA7C 00000000 */ nop -/* 0BB680 800BAA80 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB684 800BAA84 1C40000B */ bgtz $v0, .L800BAAB4 -/* 0BB688 800BAA88 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BB68C 800BAA8C 8E270000 */ lw $a3, ($s1) -/* 0BB690 800BAA90 3C19EF18 */ lui $t9, (0xEF182C0F >> 16) # lui $t9, 0xef18 -/* 0BB694 800BAA94 3C0E0010 */ lui $t6, (0x001045D8 >> 16) # lui $t6, 0x10 -/* 0BB698 800BAA98 24F80008 */ addiu $t8, $a3, 8 -/* 0BB69C 800BAA9C AE380000 */ sw $t8, ($s1) -/* 0BB6A0 800BAAA0 35CE45D8 */ ori $t6, (0x001045D8 & 0xFFFF) # ori $t6, $t6, 0x45d8 -/* 0BB6A4 800BAAA4 37392C0F */ ori $t9, (0xEF182C0F & 0xFFFF) # ori $t9, $t9, 0x2c0f -/* 0BB6A8 800BAAA8 ACF90000 */ sw $t9, ($a3) -/* 0BB6AC 800BAAAC 1000000A */ b .L800BAAD8 -/* 0BB6B0 800BAAB0 ACEE0004 */ sw $t6, 4($a3) -.L800BAAB4: -/* 0BB6B4 800BAAB4 8E270000 */ lw $a3, ($s1) -/* 0BB6B8 800BAAB8 3C18EF18 */ lui $t8, (0xEF182C0F >> 16) # lui $t8, 0xef18 -/* 0BB6BC 800BAABC 24EF0008 */ addiu $t7, $a3, 8 -/* 0BB6C0 800BAAC0 AE2F0000 */ sw $t7, ($s1) -/* 0BB6C4 800BAAC4 3C190011 */ lui $t9, (0x00112078 >> 16) # lui $t9, 0x11 -/* 0BB6C8 800BAAC8 37392078 */ ori $t9, (0x00112078 & 0xFFFF) # ori $t9, $t9, 0x2078 -/* 0BB6CC 800BAACC 37182C0F */ ori $t8, (0xEF182C0F & 0xFFFF) # ori $t8, $t8, 0x2c0f -/* 0BB6D0 800BAAD0 ACF80000 */ sw $t8, ($a3) -/* 0BB6D4 800BAAD4 ACF90004 */ sw $t9, 4($a3) -.L800BAAD8: -/* 0BB6D8 800BAAD8 8E270000 */ lw $a3, ($s1) -/* 0BB6DC 800BAADC 2403FF00 */ li $v1, -256 -/* 0BB6E0 800BAAE0 24EE0008 */ addiu $t6, $a3, 8 -/* 0BB6E4 800BAAE4 AE2E0000 */ sw $t6, ($s1) -/* 0BB6E8 800BAAE8 3C09800E */ lui $t1, %hi(D_800E3180) # $t1, 0x800e -/* 0BB6EC 800BAAEC 3C0FFA00 */ lui $t7, 0xfa00 -/* 0BB6F0 800BAAF0 25293180 */ addiu $t1, %lo(D_800E3180) # addiu $t1, $t1, 0x3180 -/* 0BB6F4 800BAAF4 ACEF0000 */ sw $t7, ($a3) -/* 0BB6F8 800BAAF8 ACE30004 */ sw $v1, 4($a3) -/* 0BB6FC 800BAAFC 8D380000 */ lw $t8, ($t1) -/* 0BB700 800BAB00 00000000 */ nop -/* 0BB704 800BAB04 13000016 */ beqz $t8, .L800BAB60 -/* 0BB708 800BAB08 00000000 */ nop -/* 0BB70C 800BAB0C 8E270000 */ lw $a3, ($s1) -/* 0BB710 800BAB10 3C0EFB00 */ lui $t6, 0xfb00 -/* 0BB714 800BAB14 24F90008 */ addiu $t9, $a3, 8 -/* 0BB718 800BAB18 AE390000 */ sw $t9, ($s1) -/* 0BB71C 800BAB1C ACEE0000 */ sw $t6, ($a3) -/* 0BB720 800BAB20 8D220000 */ lw $v0, ($t1) -/* 0BB724 800BAB24 3C128000 */ lui $s2, 0x8000 -/* 0BB728 800BAB28 90580010 */ lbu $t8, 0x10($v0) -/* 0BB72C 800BAB2C 904F0011 */ lbu $t7, 0x11($v0) -/* 0BB730 800BAB30 0018CE00 */ sll $t9, $t8, 0x18 -/* 0BB734 800BAB34 000FC400 */ sll $t8, $t7, 0x10 -/* 0BB738 800BAB38 03387025 */ or $t6, $t9, $t8 -/* 0BB73C 800BAB3C 90590012 */ lbu $t9, 0x12($v0) -/* 0BB740 800BAB40 00000000 */ nop -/* 0BB744 800BAB44 0019C200 */ sll $t8, $t9, 8 -/* 0BB748 800BAB48 01D87825 */ or $t7, $t6, $t8 -/* 0BB74C 800BAB4C 904E0013 */ lbu $t6, 0x13($v0) -/* 0BB750 800BAB50 00000000 */ nop -/* 0BB754 800BAB54 01EEC025 */ or $t8, $t7, $t6 -/* 0BB758 800BAB58 10000061 */ b .L800BACE0 -/* 0BB75C 800BAB5C ACF80004 */ sw $t8, 4($a3) -.L800BAB60: -/* 0BB760 800BAB60 8E270000 */ lw $a3, ($s1) -/* 0BB764 800BAB64 3C0FFB00 */ lui $t7, 0xfb00 -/* 0BB768 800BAB68 24F90008 */ addiu $t9, $a3, 8 -/* 0BB76C 800BAB6C AE390000 */ sw $t9, ($s1) -/* 0BB770 800BAB70 ACE30004 */ sw $v1, 4($a3) -/* 0BB774 800BAB74 ACEF0000 */ sw $t7, ($a3) -/* 0BB778 800BAB78 10000059 */ b .L800BACE0 -/* 0BB77C 800BAB7C 3C128000 */ lui $s2, 0x8000 -.L800BAB80: -/* 0BB780 800BAB80 8E270000 */ lw $a3, ($s1) -/* 0BB784 800BAB84 3C18B700 */ lui $t8, 0xb700 -/* 0BB788 800BAB88 24EE0008 */ addiu $t6, $a3, 8 -/* 0BB78C 800BAB8C AE2E0000 */ sw $t6, ($s1) -/* 0BB790 800BAB90 ACF90004 */ sw $t9, 4($a3) -/* 0BB794 800BAB94 ACF80000 */ sw $t8, ($a3) -/* 0BB798 800BAB98 8DEFA07C */ lw $t7, %lo(D_8012A07C)($t7) -/* 0BB79C 800BAB9C 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 -/* 0BB7A0 800BABA0 91E50007 */ lbu $a1, 7($t7) -/* 0BB7A4 800BABA4 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) -/* 0BB7A8 800BABA8 00057380 */ sll $t6, $a1, 0xe -/* 0BB7AC 800BABAC 0C01ED1B */ jal func_8007B46C -/* 0BB7B0 800BABB0 01C02825 */ move $a1, $t6 -/* 0BB7B4 800BABB4 8E270000 */ lw $a3, ($s1) -/* 0BB7B8 800BABB8 3C010700 */ lui $at, 0x700 -/* 0BB7BC 800BABBC 24F80008 */ addiu $t8, $a3, 8 -/* 0BB7C0 800BABC0 AE380000 */ sw $t8, ($s1) -/* 0BB7C4 800BABC4 8444000A */ lh $a0, 0xa($v0) -/* 0BB7C8 800BABC8 3C128000 */ lui $s2, 0x8000 -/* 0BB7CC 800BABCC 309900FF */ andi $t9, $a0, 0xff -/* 0BB7D0 800BABD0 00197C00 */ sll $t7, $t9, 0x10 -/* 0BB7D4 800BABD4 0004C0C0 */ sll $t8, $a0, 3 -/* 0BB7D8 800BABD8 3319FFFF */ andi $t9, $t8, 0xffff -/* 0BB7DC 800BABDC 01E17025 */ or $t6, $t7, $at -/* 0BB7E0 800BABE0 01D97825 */ or $t7, $t6, $t9 -/* 0BB7E4 800BABE4 ACEF0000 */ sw $t7, ($a3) -/* 0BB7E8 800BABE8 8C58000C */ lw $t8, 0xc($v0) -/* 0BB7EC 800BABEC 3C0FFC56 */ lui $t7, (0xFC567E04 >> 16) # lui $t7, 0xfc56 -/* 0BB7F0 800BABF0 03127021 */ addu $t6, $t8, $s2 -/* 0BB7F4 800BABF4 ACEE0004 */ sw $t6, 4($a3) -/* 0BB7F8 800BABF8 8E270000 */ lw $a3, ($s1) -/* 0BB7FC 800BABFC 3C181FFC */ lui $t8, (0x1FFCF7F8 >> 16) # lui $t8, 0x1ffc -/* 0BB800 800BAC00 24F90008 */ addiu $t9, $a3, 8 -/* 0BB804 800BAC04 AE390000 */ sw $t9, ($s1) -/* 0BB808 800BAC08 3718F7F8 */ ori $t8, (0x1FFCF7F8 & 0xFFFF) # ori $t8, $t8, 0xf7f8 -/* 0BB80C 800BAC0C 35EF7E04 */ ori $t7, (0xFC567E04 & 0xFFFF) # ori $t7, $t7, 0x7e04 -/* 0BB810 800BAC10 ACEF0000 */ sw $t7, ($a3) -/* 0BB814 800BAC14 ACF80004 */ sw $t8, 4($a3) -/* 0BB818 800BAC18 8E270000 */ lw $a3, ($s1) -/* 0BB81C 800BAC1C 3C0FC811 */ lui $t7, (0xC8112078 >> 16) # lui $t7, 0xc811 -/* 0BB820 800BAC20 24EE0008 */ addiu $t6, $a3, 8 -/* 0BB824 800BAC24 AE2E0000 */ sw $t6, ($s1) -/* 0BB828 800BAC28 3C19EF18 */ lui $t9, (0xEF182C0F >> 16) # lui $t9, 0xef18 -/* 0BB82C 800BAC2C 37392C0F */ ori $t9, (0xEF182C0F & 0xFFFF) # ori $t9, $t9, 0x2c0f -/* 0BB830 800BAC30 35EF2078 */ ori $t7, (0xC8112078 & 0xFFFF) # ori $t7, $t7, 0x2078 -/* 0BB834 800BAC34 ACEF0004 */ sw $t7, 4($a3) -/* 0BB838 800BAC38 ACF90000 */ sw $t9, ($a3) -/* 0BB83C 800BAC3C 8E270000 */ lw $a3, ($s1) -/* 0BB840 800BAC40 3C09800E */ lui $t1, %hi(D_800E3180) # $t1, 0x800e -/* 0BB844 800BAC44 24F80008 */ addiu $t8, $a3, 8 -/* 0BB848 800BAC48 AE380000 */ sw $t8, ($s1) -/* 0BB84C 800BAC4C 2419FFFF */ li $t9, -1 -/* 0BB850 800BAC50 3C0EFA00 */ lui $t6, 0xfa00 -/* 0BB854 800BAC54 25293180 */ addiu $t1, %lo(D_800E3180) # addiu $t1, $t1, 0x3180 -/* 0BB858 800BAC58 ACEE0000 */ sw $t6, ($a3) -/* 0BB85C 800BAC5C ACF90004 */ sw $t9, 4($a3) -/* 0BB860 800BAC60 8D2F0000 */ lw $t7, ($t1) -/* 0BB864 800BAC64 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB868 800BAC68 11E00016 */ beqz $t7, .L800BACC4 -/* 0BB86C 800BAC6C 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BB870 800BAC70 8E270000 */ lw $a3, ($s1) -/* 0BB874 800BAC74 3C0EFB00 */ lui $t6, 0xfb00 -/* 0BB878 800BAC78 24F80008 */ addiu $t8, $a3, 8 -/* 0BB87C 800BAC7C AE380000 */ sw $t8, ($s1) -/* 0BB880 800BAC80 ACEE0000 */ sw $t6, ($a3) -/* 0BB884 800BAC84 8D220000 */ lw $v0, ($t1) -/* 0BB888 800BAC88 00000000 */ nop -/* 0BB88C 800BAC8C 904F0010 */ lbu $t7, 0x10($v0) -/* 0BB890 800BAC90 90590011 */ lbu $t9, 0x11($v0) -/* 0BB894 800BAC94 000FC600 */ sll $t8, $t7, 0x18 -/* 0BB898 800BAC98 00197C00 */ sll $t7, $t9, 0x10 -/* 0BB89C 800BAC9C 030F7025 */ or $t6, $t8, $t7 -/* 0BB8A0 800BACA0 90580012 */ lbu $t8, 0x12($v0) -/* 0BB8A4 800BACA4 00000000 */ nop -/* 0BB8A8 800BACA8 00187A00 */ sll $t7, $t8, 8 -/* 0BB8AC 800BACAC 01CFC825 */ or $t9, $t6, $t7 -/* 0BB8B0 800BACB0 904E0013 */ lbu $t6, 0x13($v0) -/* 0BB8B4 800BACB4 00000000 */ nop -/* 0BB8B8 800BACB8 032E7825 */ or $t7, $t9, $t6 -/* 0BB8BC 800BACBC 10000008 */ b .L800BACE0 -/* 0BB8C0 800BACC0 ACEF0004 */ sw $t7, 4($a3) -.L800BACC4: -/* 0BB8C4 800BACC4 8E270000 */ lw $a3, ($s1) -/* 0BB8C8 800BACC8 2403FF00 */ li $v1, -256 -/* 0BB8CC 800BACCC 24F80008 */ addiu $t8, $a3, 8 -/* 0BB8D0 800BACD0 AE380000 */ sw $t8, ($s1) -/* 0BB8D4 800BACD4 3C19FB00 */ lui $t9, 0xfb00 -/* 0BB8D8 800BACD8 ACF90000 */ sw $t9, ($a3) -/* 0BB8DC 800BACDC ACE30004 */ sw $v1, 4($a3) -.L800BACE0: -/* 0BB8E0 800BACE0 8FEE0028 */ lw $t6, 0x28($ra) -/* 0BB8E4 800BACE4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BB8E8 800BACE8 11C00007 */ beqz $t6, .L800BAD08 -/* 0BB8EC 800BACEC 3C0F800E */ lui $t7, %hi(D_800E30DC) # $t7, 0x800e -/* 0BB8F0 800BACF0 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0BB8F4 800BACF4 4481A000 */ mtc1 $at, $f20 -/* 0BB8F8 800BACF8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BB8FC 800BACFC 4481C000 */ mtc1 $at, $f24 -/* 0BB900 800BAD00 10000005 */ b .L800BAD18 -/* 0BB904 800BAD04 E7B400EC */ swc1 $f20, 0xec($sp) -.L800BAD08: -/* 0BB908 800BAD08 4481C000 */ mtc1 $at, $f24 -/* 0BB90C 800BAD0C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0BB910 800BAD10 4481A000 */ mtc1 $at, $f20 -/* 0BB914 800BAD14 E7B800EC */ swc1 $f24, 0xec($sp) -.L800BAD18: -/* 0BB918 800BAD18 8DEF30DC */ lw $t7, %lo(D_800E30DC)($t7) -/* 0BB91C 800BAD1C A7A000E8 */ sh $zero, 0xe8($sp) -/* 0BB920 800BAD20 A7A000E6 */ sh $zero, 0xe6($sp) -/* 0BB924 800BAD24 19E00146 */ blez $t7, .L800BB240 -/* 0BB928 800BAD28 A7A000E4 */ sh $zero, 0xe4($sp) -/* 0BB92C 800BAD2C 8FB800DC */ lw $t8, 0xdc($sp) -/* 0BB930 800BAD30 3C0E8013 */ lui $t6, %hi(D_8012A1E8) # $t6, 0x8013 -/* 0BB934 800BAD34 25CEA1E8 */ addiu $t6, %lo(D_8012A1E8) # addiu $t6, $t6, -0x5e18 -/* 0BB938 800BAD38 0018C840 */ sll $t9, $t8, 1 -/* 0BB93C 800BAD3C 032E8021 */ addu $s0, $t9, $t6 -/* 0BB940 800BAD40 3C17800E */ lui $s7, %hi(D_800E3080) # $s7, 0x800e -/* 0BB944 800BAD44 3C15800E */ lui $s5, %hi(D_800E3070) # $s5, 0x800e -/* 0BB948 800BAD48 3C138013 */ lui $s3, %hi(D_8012A018) # $s3, 0x8013 -/* 0BB94C 800BAD4C 4480B000 */ mtc1 $zero, $f22 -/* 0BB950 800BAD50 2673A018 */ addiu $s3, %lo(D_8012A018) # addiu $s3, $s3, -0x5fe8 -/* 0BB954 800BAD54 26B53070 */ addiu $s5, %lo(D_800E3070) # addiu $s5, $s5, 0x3070 -/* 0BB958 800BAD58 26F73080 */ addiu $s7, %lo(D_800E3080) # addiu $s7, $s7, 0x3080 -/* 0BB95C 800BAD5C AFB00074 */ sw $s0, 0x74($sp) -/* 0BB960 800BAD60 2416000A */ li $s6, 10 -/* 0BB964 800BAD64 3C140400 */ lui $s4, 0x400 -.L800BAD68: -/* 0BB968 800BAD68 8FEF004C */ lw $t7, 0x4c($ra) -/* 0BB96C 800BAD6C 8FB00074 */ lw $s0, 0x74($sp) -/* 0BB970 800BAD70 11E00008 */ beqz $t7, .L800BAD94 -/* 0BB974 800BAD74 00000000 */ nop -/* 0BB978 800BAD78 86040000 */ lh $a0, ($s0) -/* 0BB97C 800BAD7C 8FA50128 */ lw $a1, 0x128($sp) -/* 0BB980 800BAD80 0C02E4BD */ jal func_800B92F4 -/* 0BB984 800BAD84 00000000 */ nop -/* 0BB988 800BAD88 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB98C 800BAD8C 10000007 */ b .L800BADAC -/* 0BB990 800BAD90 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -.L800BAD94: -/* 0BB994 800BAD94 86040000 */ lh $a0, ($s0) -/* 0BB998 800BAD98 8FA50128 */ lw $a1, 0x128($sp) -/* 0BB99C 800BAD9C 0C02E5EA */ jal func_800B97A8 -/* 0BB9A0 800BADA0 00000000 */ nop -/* 0BB9A4 800BADA4 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BB9A8 800BADA8 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -.L800BADAC: -/* 0BB9AC 800BADAC 86180000 */ lh $t8, ($s0) -/* 0BB9B0 800BADB0 3C0E800E */ lui $t6, %hi(D_800E30D8) # $t6, 0x800e -/* 0BB9B4 800BADB4 0018C8C0 */ sll $t9, $t8, 3 -/* 0BB9B8 800BADB8 8DCE30D8 */ lw $t6, %lo(D_800E30D8)($t6) -/* 0BB9BC 800BADBC 0338C823 */ subu $t9, $t9, $t8 -/* 0BB9C0 800BADC0 0019C880 */ sll $t9, $t9, 2 -/* 0BB9C4 800BADC4 032E1021 */ addu $v0, $t9, $t6 -/* 0BB9C8 800BADC8 844F0004 */ lh $t7, 4($v0) -/* 0BB9CC 800BADCC 3C0E800E */ lui $t6, %hi(D_800E30D4) # $t6, 0x800e -/* 0BB9D0 800BADD0 448F2000 */ mtc1 $t7, $f4 -/* 0BB9D4 800BADD4 8DCE30D4 */ lw $t6, %lo(D_800E30D4)($t6) -/* 0BB9D8 800BADD8 468021A0 */ cvt.s.w $f6, $f4 -/* 0BB9DC 800BADDC 3C058013 */ lui $a1, %hi(D_80129FC4) # $a1, 0x8013 -/* 0BB9E0 800BADE0 24A59FC4 */ addiu $a1, %lo(D_80129FC4) # addiu $a1, $a1, -0x603c -/* 0BB9E4 800BADE4 E7A600F0 */ swc1 $f6, 0xf0($sp) -/* 0BB9E8 800BADE8 84580006 */ lh $t8, 6($v0) -/* 0BB9EC 800BADEC 02202025 */ move $a0, $s1 -/* 0BB9F0 800BADF0 44984000 */ mtc1 $t8, $f8 -/* 0BB9F4 800BADF4 27A600E4 */ addiu $a2, $sp, 0xe4 -/* 0BB9F8 800BADF8 468042A0 */ cvt.s.w $f10, $f8 -/* 0BB9FC 800BADFC E7AA00F4 */ swc1 $f10, 0xf4($sp) -/* 0BBA00 800BAE00 84590008 */ lh $t9, 8($v0) -/* 0BBA04 800BAE04 00000000 */ nop -/* 0BBA08 800BAE08 44998000 */ mtc1 $t9, $f16 -/* 0BBA0C 800BAE0C 00000000 */ nop -/* 0BBA10 800BAE10 468084A0 */ cvt.s.w $f18, $f16 -/* 0BBA14 800BAE14 E7B200F8 */ swc1 $f18, 0xf8($sp) -/* 0BBA18 800BAE18 8C4F000C */ lw $t7, 0xc($v0) -/* 0BBA1C 800BAE1C 00000000 */ nop -/* 0BBA20 800BAE20 000FC080 */ sll $t8, $t7, 2 -/* 0BBA24 800BAE24 01D8C821 */ addu $t9, $t6, $t8 -/* 0BBA28 800BAE28 8F2F0000 */ lw $t7, ($t9) -/* 0BBA2C 800BAE2C 8FEE0028 */ lw $t6, 0x28($ra) -/* 0BBA30 800BAE30 AFAF0104 */ sw $t7, 0x104($sp) -/* 0BBA34 800BAE34 11C000A4 */ beqz $t6, .L800BB0C8 -/* 0BBA38 800BAE38 00000000 */ nop -/* 0BBA3C 800BAE3C AFA0011C */ sw $zero, 0x11c($sp) -/* 0BBA40 800BAE40 AFA200E0 */ sw $v0, 0xe0($sp) -/* 0BBA44 800BAE44 AFB00074 */ sw $s0, 0x74($sp) -.L800BAE48: -/* 0BBA48 800BAE48 8FA200E0 */ lw $v0, 0xe0($sp) -/* 0BBA4C 800BAE4C 0000F025 */ move $fp, $zero -/* 0BBA50 800BAE50 84580004 */ lh $t8, 4($v0) -/* 0BBA54 800BAE54 00000000 */ nop -/* 0BBA58 800BAE58 44982000 */ mtc1 $t8, $f4 -/* 0BBA5C 800BAE5C 00000000 */ nop -/* 0BBA60 800BAE60 468021A0 */ cvt.s.w $f6, $f4 -/* 0BBA64 800BAE64 E7A600F0 */ swc1 $f6, 0xf0($sp) -.L800BAE68: -/* 0BBA68 800BAE68 3C058013 */ lui $a1, %hi(D_80129FC4) # $a1, 0x8013 -/* 0BBA6C 800BAE6C 4407C000 */ mfc1 $a3, $f24 -/* 0BBA70 800BAE70 24A59FC4 */ addiu $a1, %lo(D_80129FC4) # addiu $a1, $a1, -0x603c -/* 0BBA74 800BAE74 02202025 */ move $a0, $s1 -/* 0BBA78 800BAE78 27A600E4 */ addiu $a2, $sp, 0xe4 -/* 0BBA7C 800BAE7C 0C01A521 */ jal camera_push_model_mtx -/* 0BBA80 800BAE80 E7B60010 */ swc1 $f22, 0x10($sp) -/* 0BBA84 800BAE84 8FA50104 */ lw $a1, 0x104($sp) -/* 0BBA88 800BAE88 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BBA8C 800BAE8C 30B900FF */ andi $t9, $a1, 0xff -/* 0BBA90 800BAE90 1320004B */ beqz $t9, .L800BAFC0 -/* 0BBA94 800BAE94 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BBA98 800BAE98 8FE60000 */ lw $a2, ($ra) -/* 0BBA9C 800BAE9C 272FFFFF */ addiu $t7, $t9, -1 -/* 0BBAA0 800BAEA0 24C30001 */ addiu $v1, $a2, 1 -/* 0BBAA4 800BAEA4 01E30019 */ multu $t7, $v1 -/* 0BBAA8 800BAEA8 00031040 */ sll $v0, $v1, 1 -/* 0BBAAC 800BAEAC 0002C8C0 */ sll $t9, $v0, 3 -/* 0BBAB0 800BAEB0 03226021 */ addu $t4, $t9, $v0 -/* 0BBAB4 800BAEB4 244BFFFF */ addiu $t3, $v0, -1 -/* 0BBAB8 800BAEB8 000BC0C0 */ sll $t8, $t3, 3 -/* 0BBABC 800BAEBC 000C7840 */ sll $t7, $t4, 1 -/* 0BBAC0 800BAEC0 25EC0008 */ addiu $t4, $t7, 8 -/* 0BBAC4 800BAEC4 03005825 */ move $t3, $t8 -/* 0BBAC8 800BAEC8 00062040 */ sll $a0, $a2, 1 -/* 0BBACC 800BAECC 2498FFFF */ addiu $t8, $a0, -1 -/* 0BBAD0 800BAED0 0018C900 */ sll $t9, $t8, 4 -/* 0BBAD4 800BAED4 00007012 */ mflo $t6 -/* 0BBAD8 800BAED8 372F0001 */ ori $t7, $t9, 1 -/* 0BBADC 800BAEDC 3C010500 */ lui $at, 0x500 -/* 0BBAE0 800BAEE0 01C30019 */ multu $t6, $v1 -/* 0BBAE4 800BAEE4 318EFFFF */ andi $t6, $t4, 0xffff -/* 0BBAE8 800BAEE8 01C06025 */ move $t4, $t6 -/* 0BBAEC 800BAEEC 31EE00FF */ andi $t6, $t7, 0xff -/* 0BBAF0 800BAEF0 000EC400 */ sll $t8, $t6, 0x10 -/* 0BBAF4 800BAEF4 00047900 */ sll $t7, $a0, 4 -/* 0BBAF8 800BAEF8 31EEFFFF */ andi $t6, $t7, 0xffff -/* 0BBAFC 800BAEFC 0301C825 */ or $t9, $t8, $at -/* 0BBB00 800BAF00 032E6825 */ or $t5, $t9, $t6 -/* 0BBB04 800BAF04 00008025 */ move $s0, $zero -/* 0BBB08 800BAF08 00004012 */ mflo $t0 -/* 0BBB0C 800BAF0C 18C00052 */ blez $a2, .L800BB058 -/* 0BBB10 800BAF10 00000000 */ nop -.L800BAF14: -/* 0BBB14 800BAF14 01160019 */ multu $t0, $s6 -/* 0BBB18 800BAF18 8E780000 */ lw $t8, ($s3) -/* 0BBB1C 800BAF1C 8FAF0128 */ lw $t7, 0x128($sp) -/* 0BBB20 800BAF20 8E270000 */ lw $a3, ($s1) -/* 0BBB24 800BAF24 030F2021 */ addu $a0, $t8, $t7 -/* 0BBB28 800BAF28 0004C880 */ sll $t9, $a0, 2 -/* 0BBB2C 800BAF2C 02B97021 */ addu $t6, $s5, $t9 -/* 0BBB30 800BAF30 8DD80000 */ lw $t8, ($t6) -/* 0BBB34 800BAF34 02F9C821 */ addu $t9, $s7, $t9 -/* 0BBB38 800BAF38 8F2E0000 */ lw $t6, ($t9) -/* 0BBB3C 800BAF3C 00007812 */ mflo $t7 -/* 0BBB40 800BAF40 030F4821 */ addu $t1, $t8, $t7 -/* 0BBB44 800BAF44 0006C040 */ sll $t8, $a2, 1 -/* 0BBB48 800BAF48 02180019 */ multu $s0, $t8 -/* 0BBB4C 800BAF4C 01322821 */ addu $a1, $t1, $s2 -/* 0BBB50 800BAF50 24F80008 */ addiu $t8, $a3, 8 -/* 0BBB54 800BAF54 AE380000 */ sw $t8, ($s1) -/* 0BBB58 800BAF58 ACE50004 */ sw $a1, 4($a3) -/* 0BBB5C 800BAF5C 26100001 */ addiu $s0, $s0, 1 -/* 0BBB60 800BAF60 00007812 */ mflo $t7 -/* 0BBB64 800BAF64 000FC900 */ sll $t9, $t7, 4 -/* 0BBB68 800BAF68 30AF0006 */ andi $t7, $a1, 6 -/* 0BBB6C 800BAF6C 01D95021 */ addu $t2, $t6, $t9 -/* 0BBB70 800BAF70 016F7025 */ or $t6, $t3, $t7 -/* 0BBB74 800BAF74 31D900FF */ andi $t9, $t6, 0xff -/* 0BBB78 800BAF78 0019C400 */ sll $t8, $t9, 0x10 -/* 0BBB7C 800BAF7C 03147825 */ or $t7, $t8, $s4 -/* 0BBB80 800BAF80 01EC7025 */ or $t6, $t7, $t4 -/* 0BBB84 800BAF84 ACEE0000 */ sw $t6, ($a3) -/* 0BBB88 800BAF88 8E270000 */ lw $a3, ($s1) -/* 0BBB8C 800BAF8C 0152C021 */ addu $t8, $t2, $s2 -/* 0BBB90 800BAF90 24F90008 */ addiu $t9, $a3, 8 -/* 0BBB94 800BAF94 AE390000 */ sw $t9, ($s1) -/* 0BBB98 800BAF98 ACF80004 */ sw $t8, 4($a3) -/* 0BBB9C 800BAF9C ACED0000 */ sw $t5, ($a3) -/* 0BBBA0 800BAFA0 8FE60000 */ lw $a2, ($ra) -/* 0BBBA4 800BAFA4 00000000 */ nop -/* 0BBBA8 800BAFA8 0206082A */ slt $at, $s0, $a2 -/* 0BBBAC 800BAFAC 01064021 */ addu $t0, $t0, $a2 -/* 0BBBB0 800BAFB0 1420FFD8 */ bnez $at, .L800BAF14 -/* 0BBBB4 800BAFB4 25080001 */ addiu $t0, $t0, 1 -/* 0BBBB8 800BAFB8 10000027 */ b .L800BB058 -/* 0BBBBC 800BAFBC 00000000 */ nop -.L800BAFC0: -/* 0BBBC0 800BAFC0 8E6E0000 */ lw $t6, ($s3) -/* 0BBBC4 800BAFC4 24050028 */ li $a1, 40 -/* 0BBBC8 800BAFC8 01C50019 */ multu $t6, $a1 -/* 0BBBCC 800BAFCC 8E270000 */ lw $a3, ($s1) -/* 0BBBD0 800BAFD0 3C048013 */ lui $a0, %hi(D_8012A028) # $a0, 0x8013 -/* 0BBBD4 800BAFD4 2484A028 */ addiu $a0, %lo(D_8012A028) # addiu $a0, $a0, -0x5fd8 -/* 0BBBD8 800BAFD8 24EF0008 */ addiu $t7, $a3, 8 -/* 0BBBDC 800BAFDC AE2F0000 */ sw $t7, ($s1) -/* 0BBBE0 800BAFE0 0000C812 */ mflo $t9 -/* 0BBBE4 800BAFE4 0099C021 */ addu $t8, $a0, $t9 -/* 0BBBE8 800BAFE8 03127821 */ addu $t7, $t8, $s2 -/* 0BBBEC 800BAFEC 31EE0006 */ andi $t6, $t7, 6 -/* 0BBBF0 800BAFF0 35D90018 */ ori $t9, $t6, 0x18 -/* 0BBBF4 800BAFF4 333800FF */ andi $t8, $t9, 0xff -/* 0BBBF8 800BAFF8 00187C00 */ sll $t7, $t8, 0x10 -/* 0BBBFC 800BAFFC 01F47025 */ or $t6, $t7, $s4 -/* 0BBC00 800BB000 35D90050 */ ori $t9, $t6, 0x50 -/* 0BBC04 800BB004 ACF90000 */ sw $t9, ($a3) -/* 0BBC08 800BB008 8E780000 */ lw $t8, ($s3) -/* 0BBC0C 800BB00C 00000000 */ nop -/* 0BBC10 800BB010 03050019 */ multu $t8, $a1 -/* 0BBC14 800BB014 00007812 */ mflo $t7 -/* 0BBC18 800BB018 008F7021 */ addu $t6, $a0, $t7 -/* 0BBC1C 800BB01C 01D2C821 */ addu $t9, $t6, $s2 -/* 0BBC20 800BB020 ACF90004 */ sw $t9, 4($a3) -/* 0BBC24 800BB024 8E270000 */ lw $a3, ($s1) -/* 0BBC28 800BB028 3C0F0511 */ lui $t7, (0x05110020 >> 16) # lui $t7, 0x511 -/* 0BBC2C 800BB02C 24F80008 */ addiu $t8, $a3, 8 -/* 0BBC30 800BB030 AE380000 */ sw $t8, ($s1) -/* 0BBC34 800BB034 35EF0020 */ ori $t7, (0x05110020 & 0xFFFF) # ori $t7, $t7, 0x20 -/* 0BBC38 800BB038 ACEF0000 */ sw $t7, ($a3) -/* 0BBC3C 800BB03C 8E790000 */ lw $t9, ($s3) -/* 0BBC40 800BB040 3C0E800E */ lui $t6, %hi(D_800E3090) # $t6, 0x800e -/* 0BBC44 800BB044 0019C140 */ sll $t8, $t9, 5 -/* 0BBC48 800BB048 03127821 */ addu $t7, $t8, $s2 -/* 0BBC4C 800BB04C 25CE3090 */ addiu $t6, %lo(D_800E3090) # addiu $t6, $t6, 0x3090 -/* 0BBC50 800BB050 01EEC821 */ addu $t9, $t7, $t6 -/* 0BBC54 800BB054 ACF90004 */ sw $t9, 4($a3) -.L800BB058: -/* 0BBC58 800BB058 0C01A690 */ jal func_80069A40 -/* 0BBC5C 800BB05C 02202025 */ move $a0, $s1 -/* 0BBC60 800BB060 3C018013 */ lui $at, %hi(D_8012A0A0) # $at, 0x8013 -/* 0BBC64 800BB064 C42AA0A0 */ lwc1 $f10, %lo(D_8012A0A0)($at) -/* 0BBC68 800BB068 8FB80104 */ lw $t8, 0x104($sp) -/* 0BBC6C 800BB06C 46145402 */ mul.s $f16, $f10, $f20 -/* 0BBC70 800BB070 C7A800F0 */ lwc1 $f8, 0xf0($sp) -/* 0BBC74 800BB074 27DE0001 */ addiu $fp, $fp, 1 -/* 0BBC78 800BB078 24030002 */ li $v1, 2 -/* 0BBC7C 800BB07C 46104480 */ add.s $f18, $f8, $f16 -/* 0BBC80 800BB080 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BBC84 800BB084 00187A03 */ sra $t7, $t8, 8 -/* 0BBC88 800BB088 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BBC8C 800BB08C AFAF0104 */ sw $t7, 0x104($sp) -/* 0BBC90 800BB090 17C3FF75 */ bne $fp, $v1, .L800BAE68 -/* 0BBC94 800BB094 E7B200F0 */ swc1 $f18, 0xf0($sp) -/* 0BBC98 800BB098 3C018013 */ lui $at, %hi(D_8012A0A4) # $at, 0x8013 -/* 0BBC9C 800BB09C C426A0A4 */ lwc1 $f6, %lo(D_8012A0A4)($at) -/* 0BBCA0 800BB0A0 8FA2011C */ lw $v0, 0x11c($sp) -/* 0BBCA4 800BB0A4 46143282 */ mul.s $f10, $f6, $f20 -/* 0BBCA8 800BB0A8 C7A400F8 */ lwc1 $f4, 0xf8($sp) -/* 0BBCAC 800BB0AC 24420001 */ addiu $v0, $v0, 1 -/* 0BBCB0 800BB0B0 AFA2011C */ sw $v0, 0x11c($sp) -/* 0BBCB4 800BB0B4 460A2200 */ add.s $f8, $f4, $f10 -/* 0BBCB8 800BB0B8 1443FF63 */ bne $v0, $v1, .L800BAE48 -/* 0BBCBC 800BB0BC E7A800F8 */ swc1 $f8, 0xf8($sp) -/* 0BBCC0 800BB0C0 10000056 */ b .L800BB21C -/* 0BBCC4 800BB0C4 8FAE00DC */ lw $t6, 0xdc($sp) -.L800BB0C8: -/* 0BBCC8 800BB0C8 AFB00074 */ sw $s0, 0x74($sp) -/* 0BBCCC 800BB0CC 4407C000 */ mfc1 $a3, $f24 -/* 0BBCD0 800BB0D0 00008025 */ move $s0, $zero -/* 0BBCD4 800BB0D4 0C01A521 */ jal camera_push_model_mtx -/* 0BBCD8 800BB0D8 E7B60010 */ swc1 $f22, 0x10($sp) -/* 0BBCDC 800BB0DC 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BBCE0 800BB0E0 8FAE0104 */ lw $t6, 0x104($sp) -/* 0BBCE4 800BB0E4 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BBCE8 800BB0E8 8FE60000 */ lw $a2, ($ra) -/* 0BBCEC 800BB0EC 31D900FF */ andi $t9, $t6, 0xff -/* 0BBCF0 800BB0F0 2738FFFF */ addiu $t8, $t9, -1 -/* 0BBCF4 800BB0F4 24C30001 */ addiu $v1, $a2, 1 -/* 0BBCF8 800BB0F8 03030019 */ multu $t8, $v1 -/* 0BBCFC 800BB0FC 00031040 */ sll $v0, $v1, 1 -/* 0BBD00 800BB100 0002C8C0 */ sll $t9, $v0, 3 -/* 0BBD04 800BB104 03226021 */ addu $t4, $t9, $v0 -/* 0BBD08 800BB108 244BFFFF */ addiu $t3, $v0, -1 -/* 0BBD0C 800BB10C 000B70C0 */ sll $t6, $t3, 3 -/* 0BBD10 800BB110 000CC040 */ sll $t8, $t4, 1 -/* 0BBD14 800BB114 270C0008 */ addiu $t4, $t8, 8 -/* 0BBD18 800BB118 01C05825 */ move $t3, $t6 -/* 0BBD1C 800BB11C 00062040 */ sll $a0, $a2, 1 -/* 0BBD20 800BB120 248EFFFF */ addiu $t6, $a0, -1 -/* 0BBD24 800BB124 000EC900 */ sll $t9, $t6, 4 -/* 0BBD28 800BB128 00007812 */ mflo $t7 -/* 0BBD2C 800BB12C 37380001 */ ori $t8, $t9, 1 -/* 0BBD30 800BB130 3C010500 */ lui $at, 0x500 -/* 0BBD34 800BB134 01E30019 */ multu $t7, $v1 -/* 0BBD38 800BB138 318FFFFF */ andi $t7, $t4, 0xffff -/* 0BBD3C 800BB13C 01E06025 */ move $t4, $t7 -/* 0BBD40 800BB140 330F00FF */ andi $t7, $t8, 0xff -/* 0BBD44 800BB144 000F7400 */ sll $t6, $t7, 0x10 -/* 0BBD48 800BB148 0004C100 */ sll $t8, $a0, 4 -/* 0BBD4C 800BB14C 330FFFFF */ andi $t7, $t8, 0xffff -/* 0BBD50 800BB150 01C1C825 */ or $t9, $t6, $at -/* 0BBD54 800BB154 00004012 */ mflo $t0 -/* 0BBD58 800BB158 18C0002B */ blez $a2, .L800BB208 -/* 0BBD5C 800BB15C 00000000 */ nop -/* 0BBD60 800BB160 8FBE0128 */ lw $fp, 0x128($sp) -/* 0BBD64 800BB164 032F6825 */ or $t5, $t9, $t7 -.L800BB168: -/* 0BBD68 800BB168 01160019 */ multu $t0, $s6 -/* 0BBD6C 800BB16C 8E6E0000 */ lw $t6, ($s3) -/* 0BBD70 800BB170 8E270000 */ lw $a3, ($s1) -/* 0BBD74 800BB174 01DE2021 */ addu $a0, $t6, $fp -/* 0BBD78 800BB178 0004C080 */ sll $t8, $a0, 2 -/* 0BBD7C 800BB17C 02B8C821 */ addu $t9, $s5, $t8 -/* 0BBD80 800BB180 8F2F0000 */ lw $t7, ($t9) -/* 0BBD84 800BB184 02F8C021 */ addu $t8, $s7, $t8 -/* 0BBD88 800BB188 8F190000 */ lw $t9, ($t8) -/* 0BBD8C 800BB18C 00007012 */ mflo $t6 -/* 0BBD90 800BB190 01EE4821 */ addu $t1, $t7, $t6 -/* 0BBD94 800BB194 00067840 */ sll $t7, $a2, 1 -/* 0BBD98 800BB198 020F0019 */ multu $s0, $t7 -/* 0BBD9C 800BB19C 01322821 */ addu $a1, $t1, $s2 -/* 0BBDA0 800BB1A0 24EF0008 */ addiu $t7, $a3, 8 -/* 0BBDA4 800BB1A4 AE2F0000 */ sw $t7, ($s1) -/* 0BBDA8 800BB1A8 ACE50004 */ sw $a1, 4($a3) -/* 0BBDAC 800BB1AC 26100001 */ addiu $s0, $s0, 1 -/* 0BBDB0 800BB1B0 00007012 */ mflo $t6 -/* 0BBDB4 800BB1B4 000EC100 */ sll $t8, $t6, 4 -/* 0BBDB8 800BB1B8 30AE0006 */ andi $t6, $a1, 6 -/* 0BBDBC 800BB1BC 03385021 */ addu $t2, $t9, $t8 -/* 0BBDC0 800BB1C0 016EC825 */ or $t9, $t3, $t6 -/* 0BBDC4 800BB1C4 333800FF */ andi $t8, $t9, 0xff -/* 0BBDC8 800BB1C8 00187C00 */ sll $t7, $t8, 0x10 -/* 0BBDCC 800BB1CC 01F47025 */ or $t6, $t7, $s4 -/* 0BBDD0 800BB1D0 01CCC825 */ or $t9, $t6, $t4 -/* 0BBDD4 800BB1D4 ACF90000 */ sw $t9, ($a3) -/* 0BBDD8 800BB1D8 8E270000 */ lw $a3, ($s1) -/* 0BBDDC 800BB1DC 01527821 */ addu $t7, $t2, $s2 -/* 0BBDE0 800BB1E0 24F80008 */ addiu $t8, $a3, 8 -/* 0BBDE4 800BB1E4 AE380000 */ sw $t8, ($s1) -/* 0BBDE8 800BB1E8 ACEF0004 */ sw $t7, 4($a3) -/* 0BBDEC 800BB1EC ACED0000 */ sw $t5, ($a3) -/* 0BBDF0 800BB1F0 8FE60000 */ lw $a2, ($ra) -/* 0BBDF4 800BB1F4 00000000 */ nop -/* 0BBDF8 800BB1F8 0206082A */ slt $at, $s0, $a2 -/* 0BBDFC 800BB1FC 01064021 */ addu $t0, $t0, $a2 -/* 0BBE00 800BB200 1420FFD9 */ bnez $at, .L800BB168 -/* 0BBE04 800BB204 25080001 */ addiu $t0, $t0, 1 -.L800BB208: -/* 0BBE08 800BB208 0C01A690 */ jal func_80069A40 -/* 0BBE0C 800BB20C 02202025 */ move $a0, $s1 -/* 0BBE10 800BB210 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 -/* 0BBE14 800BB214 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 -/* 0BBE18 800BB218 8FAE00DC */ lw $t6, 0xdc($sp) -.L800BB21C: -/* 0BBE1C 800BB21C 8FB80074 */ lw $t8, 0x74($sp) -/* 0BBE20 800BB220 25D90001 */ addiu $t9, $t6, 1 -/* 0BBE24 800BB224 3C0E800E */ lui $t6, %hi(D_800E30DC) # $t6, 0x800e -/* 0BBE28 800BB228 8DCE30DC */ lw $t6, %lo(D_800E30DC)($t6) -/* 0BBE2C 800BB22C 270F0002 */ addiu $t7, $t8, 2 -/* 0BBE30 800BB230 032E082A */ slt $at, $t9, $t6 -/* 0BBE34 800BB234 AFAF0074 */ sw $t7, 0x74($sp) -/* 0BBE38 800BB238 1420FECB */ bnez $at, .L800BAD68 -/* 0BBE3C 800BB23C AFB900DC */ sw $t9, 0xdc($sp) -.L800BB240: -/* 0BBE40 800BB240 8FF8004C */ lw $t8, 0x4c($ra) -/* 0BBE44 800BB244 3C19B700 */ lui $t9, 0xb700 -/* 0BBE48 800BB248 1300000E */ beqz $t8, .L800BB284 -/* 0BBE4C 800BB24C 00000000 */ nop -/* 0BBE50 800BB250 8E270000 */ lw $a3, ($s1) -/* 0BBE54 800BB254 3C0E0001 */ lui $t6, 1 -/* 0BBE58 800BB258 24EF0008 */ addiu $t7, $a3, 8 -/* 0BBE5C 800BB25C AE2F0000 */ sw $t7, ($s1) -/* 0BBE60 800BB260 ACEE0004 */ sw $t6, 4($a3) -/* 0BBE64 800BB264 ACF90000 */ sw $t9, ($a3) -/* 0BBE68 800BB268 8E270000 */ lw $a3, ($s1) -/* 0BBE6C 800BB26C 2419FFFF */ li $t9, -1 -/* 0BBE70 800BB270 24F80008 */ addiu $t8, $a3, 8 -/* 0BBE74 800BB274 AE380000 */ sw $t8, ($s1) -/* 0BBE78 800BB278 3C0FFA00 */ lui $t7, 0xfa00 -/* 0BBE7C 800BB27C ACEF0000 */ sw $t7, ($a3) -/* 0BBE80 800BB280 ACF90004 */ sw $t9, 4($a3) -.L800BB284: -/* 0BBE84 800BB284 8E2E0000 */ lw $t6, ($s1) -/* 0BBE88 800BB288 8FB80120 */ lw $t8, 0x120($sp) -/* 0BBE8C 800BB28C 3C0F8013 */ lui $t7, %hi(D_80129FC4) # $t7, 0x8013 -/* 0BBE90 800BB290 AF0E0000 */ sw $t6, ($t8) -/* 0BBE94 800BB294 8FB90124 */ lw $t9, 0x124($sp) -/* 0BBE98 800BB298 8DEF9FC4 */ lw $t7, %lo(D_80129FC4)($t7) -/* 0BBE9C 800BB29C 00000000 */ nop -/* 0BBEA0 800BB2A0 AF2F0000 */ sw $t7, ($t9) -.L800BB2A4: -/* 0BBEA4 800BB2A4 8FBF005C */ lw $ra, 0x5c($sp) -/* 0BBEA8 800BB2A8 3C01800E */ lui $at, %hi(D_800E30DC) # $at, 0x800e -/* 0BBEAC 800BB2AC C7B50020 */ lwc1 $f21, 0x20($sp) -/* 0BBEB0 800BB2B0 C7B40024 */ lwc1 $f20, 0x24($sp) -/* 0BBEB4 800BB2B4 C7B70028 */ lwc1 $f23, 0x28($sp) -/* 0BBEB8 800BB2B8 C7B6002C */ lwc1 $f22, 0x2c($sp) -/* 0BBEBC 800BB2BC C7B90030 */ lwc1 $f25, 0x30($sp) -/* 0BBEC0 800BB2C0 C7B80034 */ lwc1 $f24, 0x34($sp) -/* 0BBEC4 800BB2C4 8FB00038 */ lw $s0, 0x38($sp) -/* 0BBEC8 800BB2C8 8FB1003C */ lw $s1, 0x3c($sp) -/* 0BBECC 800BB2CC 8FB20040 */ lw $s2, 0x40($sp) -/* 0BBED0 800BB2D0 8FB30044 */ lw $s3, 0x44($sp) -/* 0BBED4 800BB2D4 8FB40048 */ lw $s4, 0x48($sp) -/* 0BBED8 800BB2D8 8FB5004C */ lw $s5, 0x4c($sp) -/* 0BBEDC 800BB2DC 8FB60050 */ lw $s6, 0x50($sp) -/* 0BBEE0 800BB2E0 8FB70054 */ lw $s7, 0x54($sp) -/* 0BBEE4 800BB2E4 8FBE0058 */ lw $fp, 0x58($sp) -/* 0BBEE8 800BB2E8 AC2030DC */ sw $zero, %lo(D_800E30DC)($at) -/* 0BBEEC 800BB2EC 03E00008 */ jr $ra -/* 0BBEF0 800BB2F0 27BD0120 */ addiu $sp, $sp, 0x120 - +glabel func_800BA8E4 +/* 0BB4E4 800BA8E4 27BDFEE0 */ addiu $sp, $sp, -0x120 +/* 0BB4E8 800BA8E8 24010001 */ li $at, 1 +/* 0BB4EC 800BA8EC AFBF005C */ sw $ra, 0x5c($sp) +/* 0BB4F0 800BA8F0 AFBE0058 */ sw $fp, 0x58($sp) +/* 0BB4F4 800BA8F4 AFB70054 */ sw $s7, 0x54($sp) +/* 0BB4F8 800BA8F8 AFB60050 */ sw $s6, 0x50($sp) +/* 0BB4FC 800BA8FC AFB5004C */ sw $s5, 0x4c($sp) +/* 0BB500 800BA900 AFB40048 */ sw $s4, 0x48($sp) +/* 0BB504 800BA904 AFB30044 */ sw $s3, 0x44($sp) +/* 0BB508 800BA908 AFB20040 */ sw $s2, 0x40($sp) +/* 0BB50C 800BA90C AFB1003C */ sw $s1, 0x3c($sp) +/* 0BB510 800BA910 AFB00038 */ sw $s0, 0x38($sp) +/* 0BB514 800BA914 E7B90030 */ swc1 $f25, 0x30($sp) +/* 0BB518 800BA918 E7B80034 */ swc1 $f24, 0x34($sp) +/* 0BB51C 800BA91C E7B70028 */ swc1 $f23, 0x28($sp) +/* 0BB520 800BA920 E7B6002C */ swc1 $f22, 0x2c($sp) +/* 0BB524 800BA924 E7B50020 */ swc1 $f21, 0x20($sp) +/* 0BB528 800BA928 E7B40024 */ swc1 $f20, 0x24($sp) +/* 0BB52C 800BA92C AFA40120 */ sw $a0, 0x120($sp) +/* 0BB530 800BA930 14C10006 */ bne $a2, $at, .L800BA94C +/* 0BB534 800BA934 AFA50124 */ sw $a1, 0x124($sp) +/* 0BB538 800BA938 3C0E8013 */ lui $t6, %hi(D_8012A078) # $t6, 0x8013 +/* 0BB53C 800BA93C 8DCEA078 */ lw $t6, %lo(D_8012A078)($t6) +/* 0BB540 800BA940 24010002 */ li $at, 2 +/* 0BB544 800BA944 11C10003 */ beq $t6, $at, .L800BA954 +/* 0BB548 800BA948 240F0002 */ li $t7, 2 +.L800BA94C: +/* 0BB54C 800BA94C 10000002 */ b .L800BA958 +/* 0BB550 800BA950 AFA00128 */ sw $zero, 0x128($sp) +.L800BA954: +/* 0BB554 800BA954 AFAF0128 */ sw $t7, 0x128($sp) +.L800BA958: +/* 0BB558 800BA958 3C18800E */ lui $t8, %hi(D_800E30DC) # $t8, 0x800e +/* 0BB55C 800BA95C 8F1830DC */ lw $t8, %lo(D_800E30DC)($t8) +/* 0BB560 800BA960 3C118013 */ lui $s1, %hi(D_80129FC0) # $s1, 0x8013 +/* 0BB564 800BA964 1B00024F */ blez $t8, .L800BB2A4 +/* 0BB568 800BA968 26319FC0 */ addiu $s1, %lo(D_80129FC0) # addiu $s1, $s1, -0x6040 +/* 0BB56C 800BA96C 8FB90120 */ lw $t9, 0x120($sp) +/* 0BB570 800BA970 8FAF0124 */ lw $t7, 0x124($sp) +/* 0BB574 800BA974 8F2E0000 */ lw $t6, ($t9) +/* 0BB578 800BA978 3C018013 */ lui $at, %hi(D_80129FC4) # $at, 0x8013 +/* 0BB57C 800BA97C AE2E0000 */ sw $t6, ($s1) +/* 0BB580 800BA980 8DF80000 */ lw $t8, ($t7) +/* 0BB584 800BA984 AFA000DC */ sw $zero, 0xdc($sp) +/* 0BB588 800BA988 02202025 */ move $a0, $s1 +/* 0BB58C 800BA98C 0C01ECF4 */ jal reset_render_settings +/* 0BB590 800BA990 AC389FC4 */ sw $t8, %lo(D_80129FC4)($at) +/* 0BB594 800BA994 8E270000 */ lw $a3, ($s1) +/* 0BB598 800BA998 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB59C 800BA99C 24F90008 */ addiu $t9, $a3, 8 +/* 0BB5A0 800BA9A0 AE390000 */ sw $t9, ($s1) +/* 0BB5A4 800BA9A4 3C0EB700 */ lui $t6, 0xb700 +/* 0BB5A8 800BA9A8 240F0001 */ li $t7, 1 +/* 0BB5AC 800BA9AC 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BB5B0 800BA9B0 ACEF0004 */ sw $t7, 4($a3) +/* 0BB5B4 800BA9B4 ACEE0000 */ sw $t6, ($a3) +/* 0BB5B8 800BA9B8 8FF8004C */ lw $t8, 0x4c($ra) +/* 0BB5BC 800BA9BC 3C190001 */ lui $t9, 1 +/* 0BB5C0 800BA9C0 1300006F */ beqz $t8, .L800BAB80 +/* 0BB5C4 800BA9C4 3C0F8013 */ lui $t7, %hi(D_8012A07C) # $t7, 0x8013 +/* 0BB5C8 800BA9C8 8E270000 */ lw $a3, ($s1) +/* 0BB5CC 800BA9CC 3C0EB600 */ lui $t6, 0xb600 +/* 0BB5D0 800BA9D0 24F90008 */ addiu $t9, $a3, 8 +/* 0BB5D4 800BA9D4 AE390000 */ sw $t9, ($s1) +/* 0BB5D8 800BA9D8 3C0F0001 */ lui $t7, 1 +/* 0BB5DC 800BA9DC 3C058013 */ lui $a1, %hi(D_8012A09C) # $a1, 0x8013 +/* 0BB5E0 800BA9E0 ACEF0004 */ sw $t7, 4($a3) +/* 0BB5E4 800BA9E4 ACEE0000 */ sw $t6, ($a3) +/* 0BB5E8 800BA9E8 8CA5A09C */ lw $a1, %lo(D_8012A09C)($a1) +/* 0BB5EC 800BA9EC 3C04800E */ lui $a0, %hi(D_800E30D0) # $a0, 0x800e +/* 0BB5F0 800BA9F0 8C8430D0 */ lw $a0, %lo(D_800E30D0)($a0) +/* 0BB5F4 800BA9F4 0005C200 */ sll $t8, $a1, 8 +/* 0BB5F8 800BA9F8 0C01ED1B */ jal func_8007B46C +/* 0BB5FC 800BA9FC 03002825 */ move $a1, $t8 +/* 0BB600 800BAA00 3C198013 */ lui $t9, %hi(D_8012A07C) # $t9, 0x8013 +/* 0BB604 800BAA04 8F39A07C */ lw $t9, %lo(D_8012A07C)($t9) +/* 0BB608 800BAA08 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 +/* 0BB60C 800BAA0C 93250007 */ lbu $a1, 7($t9) +/* 0BB610 800BAA10 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) +/* 0BB614 800BAA14 00057380 */ sll $t6, $a1, 0xe +/* 0BB618 800BAA18 00408025 */ move $s0, $v0 +/* 0BB61C 800BAA1C 0C01ED1B */ jal func_8007B46C +/* 0BB620 800BAA20 01C02825 */ move $a1, $t6 +/* 0BB624 800BAA24 00409025 */ move $s2, $v0 +/* 0BB628 800BAA28 02002025 */ move $a0, $s0 +/* 0BB62C 800BAA2C 0C02E92E */ jal func_800BA4B8 +/* 0BB630 800BAA30 24050001 */ li $a1, 1 +/* 0BB634 800BAA34 02402025 */ move $a0, $s2 +/* 0BB638 800BAA38 0C02E92E */ jal func_800BA4B8 +/* 0BB63C 800BAA3C 00002825 */ move $a1, $zero +/* 0BB640 800BAA40 8E270000 */ lw $a3, ($s1) +/* 0BB644 800BAA44 3C18FC22 */ lui $t8, (0xFC2266AC >> 16) # lui $t8, 0xfc22 +/* 0BB648 800BAA48 24EF0008 */ addiu $t7, $a3, 8 +/* 0BB64C 800BAA4C AE2F0000 */ sw $t7, ($s1) +/* 0BB650 800BAA50 3C191010 */ lui $t9, (0x1010923F >> 16) # lui $t9, 0x1010 +/* 0BB654 800BAA54 3739923F */ ori $t9, (0x1010923F & 0xFFFF) # ori $t9, $t9, 0x923f +/* 0BB658 800BAA58 371866AC */ ori $t8, (0xFC2266AC & 0xFFFF) # ori $t8, $t8, 0x66ac +/* 0BB65C 800BAA5C ACF80000 */ sw $t8, ($a3) +/* 0BB660 800BAA60 ACF90004 */ sw $t9, 4($a3) +/* 0BB664 800BAA64 920E0002 */ lbu $t6, 2($s0) +/* 0BB668 800BAA68 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB66C 800BAA6C 31CF000F */ andi $t7, $t6, 0xf +/* 0BB670 800BAA70 15E00010 */ bnez $t7, .L800BAAB4 +/* 0BB674 800BAA74 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BB678 800BAA78 0C019884 */ jal get_viewport_count +/* 0BB67C 800BAA7C 00000000 */ nop +/* 0BB680 800BAA80 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB684 800BAA84 1C40000B */ bgtz $v0, .L800BAAB4 +/* 0BB688 800BAA88 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BB68C 800BAA8C 8E270000 */ lw $a3, ($s1) +/* 0BB690 800BAA90 3C19EF18 */ lui $t9, (0xEF182C0F >> 16) # lui $t9, 0xef18 +/* 0BB694 800BAA94 3C0E0010 */ lui $t6, (0x001045D8 >> 16) # lui $t6, 0x10 +/* 0BB698 800BAA98 24F80008 */ addiu $t8, $a3, 8 +/* 0BB69C 800BAA9C AE380000 */ sw $t8, ($s1) +/* 0BB6A0 800BAAA0 35CE45D8 */ ori $t6, (0x001045D8 & 0xFFFF) # ori $t6, $t6, 0x45d8 +/* 0BB6A4 800BAAA4 37392C0F */ ori $t9, (0xEF182C0F & 0xFFFF) # ori $t9, $t9, 0x2c0f +/* 0BB6A8 800BAAA8 ACF90000 */ sw $t9, ($a3) +/* 0BB6AC 800BAAAC 1000000A */ b .L800BAAD8 +/* 0BB6B0 800BAAB0 ACEE0004 */ sw $t6, 4($a3) +.L800BAAB4: +/* 0BB6B4 800BAAB4 8E270000 */ lw $a3, ($s1) +/* 0BB6B8 800BAAB8 3C18EF18 */ lui $t8, (0xEF182C0F >> 16) # lui $t8, 0xef18 +/* 0BB6BC 800BAABC 24EF0008 */ addiu $t7, $a3, 8 +/* 0BB6C0 800BAAC0 AE2F0000 */ sw $t7, ($s1) +/* 0BB6C4 800BAAC4 3C190011 */ lui $t9, (0x00112078 >> 16) # lui $t9, 0x11 +/* 0BB6C8 800BAAC8 37392078 */ ori $t9, (0x00112078 & 0xFFFF) # ori $t9, $t9, 0x2078 +/* 0BB6CC 800BAACC 37182C0F */ ori $t8, (0xEF182C0F & 0xFFFF) # ori $t8, $t8, 0x2c0f +/* 0BB6D0 800BAAD0 ACF80000 */ sw $t8, ($a3) +/* 0BB6D4 800BAAD4 ACF90004 */ sw $t9, 4($a3) +.L800BAAD8: +/* 0BB6D8 800BAAD8 8E270000 */ lw $a3, ($s1) +/* 0BB6DC 800BAADC 2403FF00 */ li $v1, -256 +/* 0BB6E0 800BAAE0 24EE0008 */ addiu $t6, $a3, 8 +/* 0BB6E4 800BAAE4 AE2E0000 */ sw $t6, ($s1) +/* 0BB6E8 800BAAE8 3C09800E */ lui $t1, %hi(D_800E3180) # $t1, 0x800e +/* 0BB6EC 800BAAEC 3C0FFA00 */ lui $t7, 0xfa00 +/* 0BB6F0 800BAAF0 25293180 */ addiu $t1, %lo(D_800E3180) # addiu $t1, $t1, 0x3180 +/* 0BB6F4 800BAAF4 ACEF0000 */ sw $t7, ($a3) +/* 0BB6F8 800BAAF8 ACE30004 */ sw $v1, 4($a3) +/* 0BB6FC 800BAAFC 8D380000 */ lw $t8, ($t1) +/* 0BB700 800BAB00 00000000 */ nop +/* 0BB704 800BAB04 13000016 */ beqz $t8, .L800BAB60 +/* 0BB708 800BAB08 00000000 */ nop +/* 0BB70C 800BAB0C 8E270000 */ lw $a3, ($s1) +/* 0BB710 800BAB10 3C0EFB00 */ lui $t6, 0xfb00 +/* 0BB714 800BAB14 24F90008 */ addiu $t9, $a3, 8 +/* 0BB718 800BAB18 AE390000 */ sw $t9, ($s1) +/* 0BB71C 800BAB1C ACEE0000 */ sw $t6, ($a3) +/* 0BB720 800BAB20 8D220000 */ lw $v0, ($t1) +/* 0BB724 800BAB24 3C128000 */ lui $s2, 0x8000 +/* 0BB728 800BAB28 90580010 */ lbu $t8, 0x10($v0) +/* 0BB72C 800BAB2C 904F0011 */ lbu $t7, 0x11($v0) +/* 0BB730 800BAB30 0018CE00 */ sll $t9, $t8, 0x18 +/* 0BB734 800BAB34 000FC400 */ sll $t8, $t7, 0x10 +/* 0BB738 800BAB38 03387025 */ or $t6, $t9, $t8 +/* 0BB73C 800BAB3C 90590012 */ lbu $t9, 0x12($v0) +/* 0BB740 800BAB40 00000000 */ nop +/* 0BB744 800BAB44 0019C200 */ sll $t8, $t9, 8 +/* 0BB748 800BAB48 01D87825 */ or $t7, $t6, $t8 +/* 0BB74C 800BAB4C 904E0013 */ lbu $t6, 0x13($v0) +/* 0BB750 800BAB50 00000000 */ nop +/* 0BB754 800BAB54 01EEC025 */ or $t8, $t7, $t6 +/* 0BB758 800BAB58 10000061 */ b .L800BACE0 +/* 0BB75C 800BAB5C ACF80004 */ sw $t8, 4($a3) +.L800BAB60: +/* 0BB760 800BAB60 8E270000 */ lw $a3, ($s1) +/* 0BB764 800BAB64 3C0FFB00 */ lui $t7, 0xfb00 +/* 0BB768 800BAB68 24F90008 */ addiu $t9, $a3, 8 +/* 0BB76C 800BAB6C AE390000 */ sw $t9, ($s1) +/* 0BB770 800BAB70 ACE30004 */ sw $v1, 4($a3) +/* 0BB774 800BAB74 ACEF0000 */ sw $t7, ($a3) +/* 0BB778 800BAB78 10000059 */ b .L800BACE0 +/* 0BB77C 800BAB7C 3C128000 */ lui $s2, 0x8000 +.L800BAB80: +/* 0BB780 800BAB80 8E270000 */ lw $a3, ($s1) +/* 0BB784 800BAB84 3C18B700 */ lui $t8, 0xb700 +/* 0BB788 800BAB88 24EE0008 */ addiu $t6, $a3, 8 +/* 0BB78C 800BAB8C AE2E0000 */ sw $t6, ($s1) +/* 0BB790 800BAB90 ACF90004 */ sw $t9, 4($a3) +/* 0BB794 800BAB94 ACF80000 */ sw $t8, ($a3) +/* 0BB798 800BAB98 8DEFA07C */ lw $t7, %lo(D_8012A07C)($t7) +/* 0BB79C 800BAB9C 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 +/* 0BB7A0 800BABA0 91E50007 */ lbu $a1, 7($t7) +/* 0BB7A4 800BABA4 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) +/* 0BB7A8 800BABA8 00057380 */ sll $t6, $a1, 0xe +/* 0BB7AC 800BABAC 0C01ED1B */ jal func_8007B46C +/* 0BB7B0 800BABB0 01C02825 */ move $a1, $t6 +/* 0BB7B4 800BABB4 8E270000 */ lw $a3, ($s1) +/* 0BB7B8 800BABB8 3C010700 */ lui $at, 0x700 +/* 0BB7BC 800BABBC 24F80008 */ addiu $t8, $a3, 8 +/* 0BB7C0 800BABC0 AE380000 */ sw $t8, ($s1) +/* 0BB7C4 800BABC4 8444000A */ lh $a0, 0xa($v0) +/* 0BB7C8 800BABC8 3C128000 */ lui $s2, 0x8000 +/* 0BB7CC 800BABCC 309900FF */ andi $t9, $a0, 0xff +/* 0BB7D0 800BABD0 00197C00 */ sll $t7, $t9, 0x10 +/* 0BB7D4 800BABD4 0004C0C0 */ sll $t8, $a0, 3 +/* 0BB7D8 800BABD8 3319FFFF */ andi $t9, $t8, 0xffff +/* 0BB7DC 800BABDC 01E17025 */ or $t6, $t7, $at +/* 0BB7E0 800BABE0 01D97825 */ or $t7, $t6, $t9 +/* 0BB7E4 800BABE4 ACEF0000 */ sw $t7, ($a3) +/* 0BB7E8 800BABE8 8C58000C */ lw $t8, 0xc($v0) +/* 0BB7EC 800BABEC 3C0FFC56 */ lui $t7, (0xFC567E04 >> 16) # lui $t7, 0xfc56 +/* 0BB7F0 800BABF0 03127021 */ addu $t6, $t8, $s2 +/* 0BB7F4 800BABF4 ACEE0004 */ sw $t6, 4($a3) +/* 0BB7F8 800BABF8 8E270000 */ lw $a3, ($s1) +/* 0BB7FC 800BABFC 3C181FFC */ lui $t8, (0x1FFCF7F8 >> 16) # lui $t8, 0x1ffc +/* 0BB800 800BAC00 24F90008 */ addiu $t9, $a3, 8 +/* 0BB804 800BAC04 AE390000 */ sw $t9, ($s1) +/* 0BB808 800BAC08 3718F7F8 */ ori $t8, (0x1FFCF7F8 & 0xFFFF) # ori $t8, $t8, 0xf7f8 +/* 0BB80C 800BAC0C 35EF7E04 */ ori $t7, (0xFC567E04 & 0xFFFF) # ori $t7, $t7, 0x7e04 +/* 0BB810 800BAC10 ACEF0000 */ sw $t7, ($a3) +/* 0BB814 800BAC14 ACF80004 */ sw $t8, 4($a3) +/* 0BB818 800BAC18 8E270000 */ lw $a3, ($s1) +/* 0BB81C 800BAC1C 3C0FC811 */ lui $t7, (0xC8112078 >> 16) # lui $t7, 0xc811 +/* 0BB820 800BAC20 24EE0008 */ addiu $t6, $a3, 8 +/* 0BB824 800BAC24 AE2E0000 */ sw $t6, ($s1) +/* 0BB828 800BAC28 3C19EF18 */ lui $t9, (0xEF182C0F >> 16) # lui $t9, 0xef18 +/* 0BB82C 800BAC2C 37392C0F */ ori $t9, (0xEF182C0F & 0xFFFF) # ori $t9, $t9, 0x2c0f +/* 0BB830 800BAC30 35EF2078 */ ori $t7, (0xC8112078 & 0xFFFF) # ori $t7, $t7, 0x2078 +/* 0BB834 800BAC34 ACEF0004 */ sw $t7, 4($a3) +/* 0BB838 800BAC38 ACF90000 */ sw $t9, ($a3) +/* 0BB83C 800BAC3C 8E270000 */ lw $a3, ($s1) +/* 0BB840 800BAC40 3C09800E */ lui $t1, %hi(D_800E3180) # $t1, 0x800e +/* 0BB844 800BAC44 24F80008 */ addiu $t8, $a3, 8 +/* 0BB848 800BAC48 AE380000 */ sw $t8, ($s1) +/* 0BB84C 800BAC4C 2419FFFF */ li $t9, -1 +/* 0BB850 800BAC50 3C0EFA00 */ lui $t6, 0xfa00 +/* 0BB854 800BAC54 25293180 */ addiu $t1, %lo(D_800E3180) # addiu $t1, $t1, 0x3180 +/* 0BB858 800BAC58 ACEE0000 */ sw $t6, ($a3) +/* 0BB85C 800BAC5C ACF90004 */ sw $t9, 4($a3) +/* 0BB860 800BAC60 8D2F0000 */ lw $t7, ($t1) +/* 0BB864 800BAC64 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB868 800BAC68 11E00016 */ beqz $t7, .L800BACC4 +/* 0BB86C 800BAC6C 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BB870 800BAC70 8E270000 */ lw $a3, ($s1) +/* 0BB874 800BAC74 3C0EFB00 */ lui $t6, 0xfb00 +/* 0BB878 800BAC78 24F80008 */ addiu $t8, $a3, 8 +/* 0BB87C 800BAC7C AE380000 */ sw $t8, ($s1) +/* 0BB880 800BAC80 ACEE0000 */ sw $t6, ($a3) +/* 0BB884 800BAC84 8D220000 */ lw $v0, ($t1) +/* 0BB888 800BAC88 00000000 */ nop +/* 0BB88C 800BAC8C 904F0010 */ lbu $t7, 0x10($v0) +/* 0BB890 800BAC90 90590011 */ lbu $t9, 0x11($v0) +/* 0BB894 800BAC94 000FC600 */ sll $t8, $t7, 0x18 +/* 0BB898 800BAC98 00197C00 */ sll $t7, $t9, 0x10 +/* 0BB89C 800BAC9C 030F7025 */ or $t6, $t8, $t7 +/* 0BB8A0 800BACA0 90580012 */ lbu $t8, 0x12($v0) +/* 0BB8A4 800BACA4 00000000 */ nop +/* 0BB8A8 800BACA8 00187A00 */ sll $t7, $t8, 8 +/* 0BB8AC 800BACAC 01CFC825 */ or $t9, $t6, $t7 +/* 0BB8B0 800BACB0 904E0013 */ lbu $t6, 0x13($v0) +/* 0BB8B4 800BACB4 00000000 */ nop +/* 0BB8B8 800BACB8 032E7825 */ or $t7, $t9, $t6 +/* 0BB8BC 800BACBC 10000008 */ b .L800BACE0 +/* 0BB8C0 800BACC0 ACEF0004 */ sw $t7, 4($a3) +.L800BACC4: +/* 0BB8C4 800BACC4 8E270000 */ lw $a3, ($s1) +/* 0BB8C8 800BACC8 2403FF00 */ li $v1, -256 +/* 0BB8CC 800BACCC 24F80008 */ addiu $t8, $a3, 8 +/* 0BB8D0 800BACD0 AE380000 */ sw $t8, ($s1) +/* 0BB8D4 800BACD4 3C19FB00 */ lui $t9, 0xfb00 +/* 0BB8D8 800BACD8 ACF90000 */ sw $t9, ($a3) +/* 0BB8DC 800BACDC ACE30004 */ sw $v1, 4($a3) +.L800BACE0: +/* 0BB8E0 800BACE0 8FEE0028 */ lw $t6, 0x28($ra) +/* 0BB8E4 800BACE4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0BB8E8 800BACE8 11C00007 */ beqz $t6, .L800BAD08 +/* 0BB8EC 800BACEC 3C0F800E */ lui $t7, %hi(D_800E30DC) # $t7, 0x800e +/* 0BB8F0 800BACF0 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 0BB8F4 800BACF4 4481A000 */ mtc1 $at, $f20 +/* 0BB8F8 800BACF8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0BB8FC 800BACFC 4481C000 */ mtc1 $at, $f24 +/* 0BB900 800BAD00 10000005 */ b .L800BAD18 +/* 0BB904 800BAD04 E7B400EC */ swc1 $f20, 0xec($sp) +.L800BAD08: +/* 0BB908 800BAD08 4481C000 */ mtc1 $at, $f24 +/* 0BB90C 800BAD0C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 0BB910 800BAD10 4481A000 */ mtc1 $at, $f20 +/* 0BB914 800BAD14 E7B800EC */ swc1 $f24, 0xec($sp) +.L800BAD18: +/* 0BB918 800BAD18 8DEF30DC */ lw $t7, %lo(D_800E30DC)($t7) +/* 0BB91C 800BAD1C A7A000E8 */ sh $zero, 0xe8($sp) +/* 0BB920 800BAD20 A7A000E6 */ sh $zero, 0xe6($sp) +/* 0BB924 800BAD24 19E00146 */ blez $t7, .L800BB240 +/* 0BB928 800BAD28 A7A000E4 */ sh $zero, 0xe4($sp) +/* 0BB92C 800BAD2C 8FB800DC */ lw $t8, 0xdc($sp) +/* 0BB930 800BAD30 3C0E8013 */ lui $t6, %hi(D_8012A1E8) # $t6, 0x8013 +/* 0BB934 800BAD34 25CEA1E8 */ addiu $t6, %lo(D_8012A1E8) # addiu $t6, $t6, -0x5e18 +/* 0BB938 800BAD38 0018C840 */ sll $t9, $t8, 1 +/* 0BB93C 800BAD3C 032E8021 */ addu $s0, $t9, $t6 +/* 0BB940 800BAD40 3C17800E */ lui $s7, %hi(D_800E3080) # $s7, 0x800e +/* 0BB944 800BAD44 3C15800E */ lui $s5, %hi(D_800E3070) # $s5, 0x800e +/* 0BB948 800BAD48 3C138013 */ lui $s3, %hi(D_8012A018) # $s3, 0x8013 +/* 0BB94C 800BAD4C 4480B000 */ mtc1 $zero, $f22 +/* 0BB950 800BAD50 2673A018 */ addiu $s3, %lo(D_8012A018) # addiu $s3, $s3, -0x5fe8 +/* 0BB954 800BAD54 26B53070 */ addiu $s5, %lo(D_800E3070) # addiu $s5, $s5, 0x3070 +/* 0BB958 800BAD58 26F73080 */ addiu $s7, %lo(D_800E3080) # addiu $s7, $s7, 0x3080 +/* 0BB95C 800BAD5C AFB00074 */ sw $s0, 0x74($sp) +/* 0BB960 800BAD60 2416000A */ li $s6, 10 +/* 0BB964 800BAD64 3C140400 */ lui $s4, 0x400 +.L800BAD68: +/* 0BB968 800BAD68 8FEF004C */ lw $t7, 0x4c($ra) +/* 0BB96C 800BAD6C 8FB00074 */ lw $s0, 0x74($sp) +/* 0BB970 800BAD70 11E00008 */ beqz $t7, .L800BAD94 +/* 0BB974 800BAD74 00000000 */ nop +/* 0BB978 800BAD78 86040000 */ lh $a0, ($s0) +/* 0BB97C 800BAD7C 8FA50128 */ lw $a1, 0x128($sp) +/* 0BB980 800BAD80 0C02E4BD */ jal func_800B92F4 +/* 0BB984 800BAD84 00000000 */ nop +/* 0BB988 800BAD88 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB98C 800BAD8C 10000007 */ b .L800BADAC +/* 0BB990 800BAD90 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +.L800BAD94: +/* 0BB994 800BAD94 86040000 */ lh $a0, ($s0) +/* 0BB998 800BAD98 8FA50128 */ lw $a1, 0x128($sp) +/* 0BB99C 800BAD9C 0C02E5EA */ jal func_800B97A8 +/* 0BB9A0 800BADA0 00000000 */ nop +/* 0BB9A4 800BADA4 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BB9A8 800BADA8 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +.L800BADAC: +/* 0BB9AC 800BADAC 86180000 */ lh $t8, ($s0) +/* 0BB9B0 800BADB0 3C0E800E */ lui $t6, %hi(D_800E30D8) # $t6, 0x800e +/* 0BB9B4 800BADB4 0018C8C0 */ sll $t9, $t8, 3 +/* 0BB9B8 800BADB8 8DCE30D8 */ lw $t6, %lo(D_800E30D8)($t6) +/* 0BB9BC 800BADBC 0338C823 */ subu $t9, $t9, $t8 +/* 0BB9C0 800BADC0 0019C880 */ sll $t9, $t9, 2 +/* 0BB9C4 800BADC4 032E1021 */ addu $v0, $t9, $t6 +/* 0BB9C8 800BADC8 844F0004 */ lh $t7, 4($v0) +/* 0BB9CC 800BADCC 3C0E800E */ lui $t6, %hi(D_800E30D4) # $t6, 0x800e +/* 0BB9D0 800BADD0 448F2000 */ mtc1 $t7, $f4 +/* 0BB9D4 800BADD4 8DCE30D4 */ lw $t6, %lo(D_800E30D4)($t6) +/* 0BB9D8 800BADD8 468021A0 */ cvt.s.w $f6, $f4 +/* 0BB9DC 800BADDC 3C058013 */ lui $a1, %hi(D_80129FC4) # $a1, 0x8013 +/* 0BB9E0 800BADE0 24A59FC4 */ addiu $a1, %lo(D_80129FC4) # addiu $a1, $a1, -0x603c +/* 0BB9E4 800BADE4 E7A600F0 */ swc1 $f6, 0xf0($sp) +/* 0BB9E8 800BADE8 84580006 */ lh $t8, 6($v0) +/* 0BB9EC 800BADEC 02202025 */ move $a0, $s1 +/* 0BB9F0 800BADF0 44984000 */ mtc1 $t8, $f8 +/* 0BB9F4 800BADF4 27A600E4 */ addiu $a2, $sp, 0xe4 +/* 0BB9F8 800BADF8 468042A0 */ cvt.s.w $f10, $f8 +/* 0BB9FC 800BADFC E7AA00F4 */ swc1 $f10, 0xf4($sp) +/* 0BBA00 800BAE00 84590008 */ lh $t9, 8($v0) +/* 0BBA04 800BAE04 00000000 */ nop +/* 0BBA08 800BAE08 44998000 */ mtc1 $t9, $f16 +/* 0BBA0C 800BAE0C 00000000 */ nop +/* 0BBA10 800BAE10 468084A0 */ cvt.s.w $f18, $f16 +/* 0BBA14 800BAE14 E7B200F8 */ swc1 $f18, 0xf8($sp) +/* 0BBA18 800BAE18 8C4F000C */ lw $t7, 0xc($v0) +/* 0BBA1C 800BAE1C 00000000 */ nop +/* 0BBA20 800BAE20 000FC080 */ sll $t8, $t7, 2 +/* 0BBA24 800BAE24 01D8C821 */ addu $t9, $t6, $t8 +/* 0BBA28 800BAE28 8F2F0000 */ lw $t7, ($t9) +/* 0BBA2C 800BAE2C 8FEE0028 */ lw $t6, 0x28($ra) +/* 0BBA30 800BAE30 AFAF0104 */ sw $t7, 0x104($sp) +/* 0BBA34 800BAE34 11C000A4 */ beqz $t6, .L800BB0C8 +/* 0BBA38 800BAE38 00000000 */ nop +/* 0BBA3C 800BAE3C AFA0011C */ sw $zero, 0x11c($sp) +/* 0BBA40 800BAE40 AFA200E0 */ sw $v0, 0xe0($sp) +/* 0BBA44 800BAE44 AFB00074 */ sw $s0, 0x74($sp) +.L800BAE48: +/* 0BBA48 800BAE48 8FA200E0 */ lw $v0, 0xe0($sp) +/* 0BBA4C 800BAE4C 0000F025 */ move $fp, $zero +/* 0BBA50 800BAE50 84580004 */ lh $t8, 4($v0) +/* 0BBA54 800BAE54 00000000 */ nop +/* 0BBA58 800BAE58 44982000 */ mtc1 $t8, $f4 +/* 0BBA5C 800BAE5C 00000000 */ nop +/* 0BBA60 800BAE60 468021A0 */ cvt.s.w $f6, $f4 +/* 0BBA64 800BAE64 E7A600F0 */ swc1 $f6, 0xf0($sp) +.L800BAE68: +/* 0BBA68 800BAE68 3C058013 */ lui $a1, %hi(D_80129FC4) # $a1, 0x8013 +/* 0BBA6C 800BAE6C 4407C000 */ mfc1 $a3, $f24 +/* 0BBA70 800BAE70 24A59FC4 */ addiu $a1, %lo(D_80129FC4) # addiu $a1, $a1, -0x603c +/* 0BBA74 800BAE74 02202025 */ move $a0, $s1 +/* 0BBA78 800BAE78 27A600E4 */ addiu $a2, $sp, 0xe4 +/* 0BBA7C 800BAE7C 0C01A521 */ jal camera_push_model_mtx +/* 0BBA80 800BAE80 E7B60010 */ swc1 $f22, 0x10($sp) +/* 0BBA84 800BAE84 8FA50104 */ lw $a1, 0x104($sp) +/* 0BBA88 800BAE88 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BBA8C 800BAE8C 30B900FF */ andi $t9, $a1, 0xff +/* 0BBA90 800BAE90 1320004B */ beqz $t9, .L800BAFC0 +/* 0BBA94 800BAE94 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BBA98 800BAE98 8FE60000 */ lw $a2, ($ra) +/* 0BBA9C 800BAE9C 272FFFFF */ addiu $t7, $t9, -1 +/* 0BBAA0 800BAEA0 24C30001 */ addiu $v1, $a2, 1 +/* 0BBAA4 800BAEA4 01E30019 */ multu $t7, $v1 +/* 0BBAA8 800BAEA8 00031040 */ sll $v0, $v1, 1 +/* 0BBAAC 800BAEAC 0002C8C0 */ sll $t9, $v0, 3 +/* 0BBAB0 800BAEB0 03226021 */ addu $t4, $t9, $v0 +/* 0BBAB4 800BAEB4 244BFFFF */ addiu $t3, $v0, -1 +/* 0BBAB8 800BAEB8 000BC0C0 */ sll $t8, $t3, 3 +/* 0BBABC 800BAEBC 000C7840 */ sll $t7, $t4, 1 +/* 0BBAC0 800BAEC0 25EC0008 */ addiu $t4, $t7, 8 +/* 0BBAC4 800BAEC4 03005825 */ move $t3, $t8 +/* 0BBAC8 800BAEC8 00062040 */ sll $a0, $a2, 1 +/* 0BBACC 800BAECC 2498FFFF */ addiu $t8, $a0, -1 +/* 0BBAD0 800BAED0 0018C900 */ sll $t9, $t8, 4 +/* 0BBAD4 800BAED4 00007012 */ mflo $t6 +/* 0BBAD8 800BAED8 372F0001 */ ori $t7, $t9, 1 +/* 0BBADC 800BAEDC 3C010500 */ lui $at, 0x500 +/* 0BBAE0 800BAEE0 01C30019 */ multu $t6, $v1 +/* 0BBAE4 800BAEE4 318EFFFF */ andi $t6, $t4, 0xffff +/* 0BBAE8 800BAEE8 01C06025 */ move $t4, $t6 +/* 0BBAEC 800BAEEC 31EE00FF */ andi $t6, $t7, 0xff +/* 0BBAF0 800BAEF0 000EC400 */ sll $t8, $t6, 0x10 +/* 0BBAF4 800BAEF4 00047900 */ sll $t7, $a0, 4 +/* 0BBAF8 800BAEF8 31EEFFFF */ andi $t6, $t7, 0xffff +/* 0BBAFC 800BAEFC 0301C825 */ or $t9, $t8, $at +/* 0BBB00 800BAF00 032E6825 */ or $t5, $t9, $t6 +/* 0BBB04 800BAF04 00008025 */ move $s0, $zero +/* 0BBB08 800BAF08 00004012 */ mflo $t0 +/* 0BBB0C 800BAF0C 18C00052 */ blez $a2, .L800BB058 +/* 0BBB10 800BAF10 00000000 */ nop +.L800BAF14: +/* 0BBB14 800BAF14 01160019 */ multu $t0, $s6 +/* 0BBB18 800BAF18 8E780000 */ lw $t8, ($s3) +/* 0BBB1C 800BAF1C 8FAF0128 */ lw $t7, 0x128($sp) +/* 0BBB20 800BAF20 8E270000 */ lw $a3, ($s1) +/* 0BBB24 800BAF24 030F2021 */ addu $a0, $t8, $t7 +/* 0BBB28 800BAF28 0004C880 */ sll $t9, $a0, 2 +/* 0BBB2C 800BAF2C 02B97021 */ addu $t6, $s5, $t9 +/* 0BBB30 800BAF30 8DD80000 */ lw $t8, ($t6) +/* 0BBB34 800BAF34 02F9C821 */ addu $t9, $s7, $t9 +/* 0BBB38 800BAF38 8F2E0000 */ lw $t6, ($t9) +/* 0BBB3C 800BAF3C 00007812 */ mflo $t7 +/* 0BBB40 800BAF40 030F4821 */ addu $t1, $t8, $t7 +/* 0BBB44 800BAF44 0006C040 */ sll $t8, $a2, 1 +/* 0BBB48 800BAF48 02180019 */ multu $s0, $t8 +/* 0BBB4C 800BAF4C 01322821 */ addu $a1, $t1, $s2 +/* 0BBB50 800BAF50 24F80008 */ addiu $t8, $a3, 8 +/* 0BBB54 800BAF54 AE380000 */ sw $t8, ($s1) +/* 0BBB58 800BAF58 ACE50004 */ sw $a1, 4($a3) +/* 0BBB5C 800BAF5C 26100001 */ addiu $s0, $s0, 1 +/* 0BBB60 800BAF60 00007812 */ mflo $t7 +/* 0BBB64 800BAF64 000FC900 */ sll $t9, $t7, 4 +/* 0BBB68 800BAF68 30AF0006 */ andi $t7, $a1, 6 +/* 0BBB6C 800BAF6C 01D95021 */ addu $t2, $t6, $t9 +/* 0BBB70 800BAF70 016F7025 */ or $t6, $t3, $t7 +/* 0BBB74 800BAF74 31D900FF */ andi $t9, $t6, 0xff +/* 0BBB78 800BAF78 0019C400 */ sll $t8, $t9, 0x10 +/* 0BBB7C 800BAF7C 03147825 */ or $t7, $t8, $s4 +/* 0BBB80 800BAF80 01EC7025 */ or $t6, $t7, $t4 +/* 0BBB84 800BAF84 ACEE0000 */ sw $t6, ($a3) +/* 0BBB88 800BAF88 8E270000 */ lw $a3, ($s1) +/* 0BBB8C 800BAF8C 0152C021 */ addu $t8, $t2, $s2 +/* 0BBB90 800BAF90 24F90008 */ addiu $t9, $a3, 8 +/* 0BBB94 800BAF94 AE390000 */ sw $t9, ($s1) +/* 0BBB98 800BAF98 ACF80004 */ sw $t8, 4($a3) +/* 0BBB9C 800BAF9C ACED0000 */ sw $t5, ($a3) +/* 0BBBA0 800BAFA0 8FE60000 */ lw $a2, ($ra) +/* 0BBBA4 800BAFA4 00000000 */ nop +/* 0BBBA8 800BAFA8 0206082A */ slt $at, $s0, $a2 +/* 0BBBAC 800BAFAC 01064021 */ addu $t0, $t0, $a2 +/* 0BBBB0 800BAFB0 1420FFD8 */ bnez $at, .L800BAF14 +/* 0BBBB4 800BAFB4 25080001 */ addiu $t0, $t0, 1 +/* 0BBBB8 800BAFB8 10000027 */ b .L800BB058 +/* 0BBBBC 800BAFBC 00000000 */ nop +.L800BAFC0: +/* 0BBBC0 800BAFC0 8E6E0000 */ lw $t6, ($s3) +/* 0BBBC4 800BAFC4 24050028 */ li $a1, 40 +/* 0BBBC8 800BAFC8 01C50019 */ multu $t6, $a1 +/* 0BBBCC 800BAFCC 8E270000 */ lw $a3, ($s1) +/* 0BBBD0 800BAFD0 3C048013 */ lui $a0, %hi(D_8012A028) # $a0, 0x8013 +/* 0BBBD4 800BAFD4 2484A028 */ addiu $a0, %lo(D_8012A028) # addiu $a0, $a0, -0x5fd8 +/* 0BBBD8 800BAFD8 24EF0008 */ addiu $t7, $a3, 8 +/* 0BBBDC 800BAFDC AE2F0000 */ sw $t7, ($s1) +/* 0BBBE0 800BAFE0 0000C812 */ mflo $t9 +/* 0BBBE4 800BAFE4 0099C021 */ addu $t8, $a0, $t9 +/* 0BBBE8 800BAFE8 03127821 */ addu $t7, $t8, $s2 +/* 0BBBEC 800BAFEC 31EE0006 */ andi $t6, $t7, 6 +/* 0BBBF0 800BAFF0 35D90018 */ ori $t9, $t6, 0x18 +/* 0BBBF4 800BAFF4 333800FF */ andi $t8, $t9, 0xff +/* 0BBBF8 800BAFF8 00187C00 */ sll $t7, $t8, 0x10 +/* 0BBBFC 800BAFFC 01F47025 */ or $t6, $t7, $s4 +/* 0BBC00 800BB000 35D90050 */ ori $t9, $t6, 0x50 +/* 0BBC04 800BB004 ACF90000 */ sw $t9, ($a3) +/* 0BBC08 800BB008 8E780000 */ lw $t8, ($s3) +/* 0BBC0C 800BB00C 00000000 */ nop +/* 0BBC10 800BB010 03050019 */ multu $t8, $a1 +/* 0BBC14 800BB014 00007812 */ mflo $t7 +/* 0BBC18 800BB018 008F7021 */ addu $t6, $a0, $t7 +/* 0BBC1C 800BB01C 01D2C821 */ addu $t9, $t6, $s2 +/* 0BBC20 800BB020 ACF90004 */ sw $t9, 4($a3) +/* 0BBC24 800BB024 8E270000 */ lw $a3, ($s1) +/* 0BBC28 800BB028 3C0F0511 */ lui $t7, (0x05110020 >> 16) # lui $t7, 0x511 +/* 0BBC2C 800BB02C 24F80008 */ addiu $t8, $a3, 8 +/* 0BBC30 800BB030 AE380000 */ sw $t8, ($s1) +/* 0BBC34 800BB034 35EF0020 */ ori $t7, (0x05110020 & 0xFFFF) # ori $t7, $t7, 0x20 +/* 0BBC38 800BB038 ACEF0000 */ sw $t7, ($a3) +/* 0BBC3C 800BB03C 8E790000 */ lw $t9, ($s3) +/* 0BBC40 800BB040 3C0E800E */ lui $t6, %hi(D_800E3090) # $t6, 0x800e +/* 0BBC44 800BB044 0019C140 */ sll $t8, $t9, 5 +/* 0BBC48 800BB048 03127821 */ addu $t7, $t8, $s2 +/* 0BBC4C 800BB04C 25CE3090 */ addiu $t6, %lo(D_800E3090) # addiu $t6, $t6, 0x3090 +/* 0BBC50 800BB050 01EEC821 */ addu $t9, $t7, $t6 +/* 0BBC54 800BB054 ACF90004 */ sw $t9, 4($a3) +.L800BB058: +/* 0BBC58 800BB058 0C01A690 */ jal apply_matrix_from_stack +/* 0BBC5C 800BB05C 02202025 */ move $a0, $s1 +/* 0BBC60 800BB060 3C018013 */ lui $at, %hi(D_8012A0A0) # $at, 0x8013 +/* 0BBC64 800BB064 C42AA0A0 */ lwc1 $f10, %lo(D_8012A0A0)($at) +/* 0BBC68 800BB068 8FB80104 */ lw $t8, 0x104($sp) +/* 0BBC6C 800BB06C 46145402 */ mul.s $f16, $f10, $f20 +/* 0BBC70 800BB070 C7A800F0 */ lwc1 $f8, 0xf0($sp) +/* 0BBC74 800BB074 27DE0001 */ addiu $fp, $fp, 1 +/* 0BBC78 800BB078 24030002 */ li $v1, 2 +/* 0BBC7C 800BB07C 46104480 */ add.s $f18, $f8, $f16 +/* 0BBC80 800BB080 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BBC84 800BB084 00187A03 */ sra $t7, $t8, 8 +/* 0BBC88 800BB088 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BBC8C 800BB08C AFAF0104 */ sw $t7, 0x104($sp) +/* 0BBC90 800BB090 17C3FF75 */ bne $fp, $v1, .L800BAE68 +/* 0BBC94 800BB094 E7B200F0 */ swc1 $f18, 0xf0($sp) +/* 0BBC98 800BB098 3C018013 */ lui $at, %hi(D_8012A0A4) # $at, 0x8013 +/* 0BBC9C 800BB09C C426A0A4 */ lwc1 $f6, %lo(D_8012A0A4)($at) +/* 0BBCA0 800BB0A0 8FA2011C */ lw $v0, 0x11c($sp) +/* 0BBCA4 800BB0A4 46143282 */ mul.s $f10, $f6, $f20 +/* 0BBCA8 800BB0A8 C7A400F8 */ lwc1 $f4, 0xf8($sp) +/* 0BBCAC 800BB0AC 24420001 */ addiu $v0, $v0, 1 +/* 0BBCB0 800BB0B0 AFA2011C */ sw $v0, 0x11c($sp) +/* 0BBCB4 800BB0B4 460A2200 */ add.s $f8, $f4, $f10 +/* 0BBCB8 800BB0B8 1443FF63 */ bne $v0, $v1, .L800BAE48 +/* 0BBCBC 800BB0BC E7A800F8 */ swc1 $f8, 0xf8($sp) +/* 0BBCC0 800BB0C0 10000056 */ b .L800BB21C +/* 0BBCC4 800BB0C4 8FAE00DC */ lw $t6, 0xdc($sp) +.L800BB0C8: +/* 0BBCC8 800BB0C8 AFB00074 */ sw $s0, 0x74($sp) +/* 0BBCCC 800BB0CC 4407C000 */ mfc1 $a3, $f24 +/* 0BBCD0 800BB0D0 00008025 */ move $s0, $zero +/* 0BBCD4 800BB0D4 0C01A521 */ jal camera_push_model_mtx +/* 0BBCD8 800BB0D8 E7B60010 */ swc1 $f22, 0x10($sp) +/* 0BBCDC 800BB0DC 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BBCE0 800BB0E0 8FAE0104 */ lw $t6, 0x104($sp) +/* 0BBCE4 800BB0E4 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BBCE8 800BB0E8 8FE60000 */ lw $a2, ($ra) +/* 0BBCEC 800BB0EC 31D900FF */ andi $t9, $t6, 0xff +/* 0BBCF0 800BB0F0 2738FFFF */ addiu $t8, $t9, -1 +/* 0BBCF4 800BB0F4 24C30001 */ addiu $v1, $a2, 1 +/* 0BBCF8 800BB0F8 03030019 */ multu $t8, $v1 +/* 0BBCFC 800BB0FC 00031040 */ sll $v0, $v1, 1 +/* 0BBD00 800BB100 0002C8C0 */ sll $t9, $v0, 3 +/* 0BBD04 800BB104 03226021 */ addu $t4, $t9, $v0 +/* 0BBD08 800BB108 244BFFFF */ addiu $t3, $v0, -1 +/* 0BBD0C 800BB10C 000B70C0 */ sll $t6, $t3, 3 +/* 0BBD10 800BB110 000CC040 */ sll $t8, $t4, 1 +/* 0BBD14 800BB114 270C0008 */ addiu $t4, $t8, 8 +/* 0BBD18 800BB118 01C05825 */ move $t3, $t6 +/* 0BBD1C 800BB11C 00062040 */ sll $a0, $a2, 1 +/* 0BBD20 800BB120 248EFFFF */ addiu $t6, $a0, -1 +/* 0BBD24 800BB124 000EC900 */ sll $t9, $t6, 4 +/* 0BBD28 800BB128 00007812 */ mflo $t7 +/* 0BBD2C 800BB12C 37380001 */ ori $t8, $t9, 1 +/* 0BBD30 800BB130 3C010500 */ lui $at, 0x500 +/* 0BBD34 800BB134 01E30019 */ multu $t7, $v1 +/* 0BBD38 800BB138 318FFFFF */ andi $t7, $t4, 0xffff +/* 0BBD3C 800BB13C 01E06025 */ move $t4, $t7 +/* 0BBD40 800BB140 330F00FF */ andi $t7, $t8, 0xff +/* 0BBD44 800BB144 000F7400 */ sll $t6, $t7, 0x10 +/* 0BBD48 800BB148 0004C100 */ sll $t8, $a0, 4 +/* 0BBD4C 800BB14C 330FFFFF */ andi $t7, $t8, 0xffff +/* 0BBD50 800BB150 01C1C825 */ or $t9, $t6, $at +/* 0BBD54 800BB154 00004012 */ mflo $t0 +/* 0BBD58 800BB158 18C0002B */ blez $a2, .L800BB208 +/* 0BBD5C 800BB15C 00000000 */ nop +/* 0BBD60 800BB160 8FBE0128 */ lw $fp, 0x128($sp) +/* 0BBD64 800BB164 032F6825 */ or $t5, $t9, $t7 +.L800BB168: +/* 0BBD68 800BB168 01160019 */ multu $t0, $s6 +/* 0BBD6C 800BB16C 8E6E0000 */ lw $t6, ($s3) +/* 0BBD70 800BB170 8E270000 */ lw $a3, ($s1) +/* 0BBD74 800BB174 01DE2021 */ addu $a0, $t6, $fp +/* 0BBD78 800BB178 0004C080 */ sll $t8, $a0, 2 +/* 0BBD7C 800BB17C 02B8C821 */ addu $t9, $s5, $t8 +/* 0BBD80 800BB180 8F2F0000 */ lw $t7, ($t9) +/* 0BBD84 800BB184 02F8C021 */ addu $t8, $s7, $t8 +/* 0BBD88 800BB188 8F190000 */ lw $t9, ($t8) +/* 0BBD8C 800BB18C 00007012 */ mflo $t6 +/* 0BBD90 800BB190 01EE4821 */ addu $t1, $t7, $t6 +/* 0BBD94 800BB194 00067840 */ sll $t7, $a2, 1 +/* 0BBD98 800BB198 020F0019 */ multu $s0, $t7 +/* 0BBD9C 800BB19C 01322821 */ addu $a1, $t1, $s2 +/* 0BBDA0 800BB1A0 24EF0008 */ addiu $t7, $a3, 8 +/* 0BBDA4 800BB1A4 AE2F0000 */ sw $t7, ($s1) +/* 0BBDA8 800BB1A8 ACE50004 */ sw $a1, 4($a3) +/* 0BBDAC 800BB1AC 26100001 */ addiu $s0, $s0, 1 +/* 0BBDB0 800BB1B0 00007012 */ mflo $t6 +/* 0BBDB4 800BB1B4 000EC100 */ sll $t8, $t6, 4 +/* 0BBDB8 800BB1B8 30AE0006 */ andi $t6, $a1, 6 +/* 0BBDBC 800BB1BC 03385021 */ addu $t2, $t9, $t8 +/* 0BBDC0 800BB1C0 016EC825 */ or $t9, $t3, $t6 +/* 0BBDC4 800BB1C4 333800FF */ andi $t8, $t9, 0xff +/* 0BBDC8 800BB1C8 00187C00 */ sll $t7, $t8, 0x10 +/* 0BBDCC 800BB1CC 01F47025 */ or $t6, $t7, $s4 +/* 0BBDD0 800BB1D0 01CCC825 */ or $t9, $t6, $t4 +/* 0BBDD4 800BB1D4 ACF90000 */ sw $t9, ($a3) +/* 0BBDD8 800BB1D8 8E270000 */ lw $a3, ($s1) +/* 0BBDDC 800BB1DC 01527821 */ addu $t7, $t2, $s2 +/* 0BBDE0 800BB1E0 24F80008 */ addiu $t8, $a3, 8 +/* 0BBDE4 800BB1E4 AE380000 */ sw $t8, ($s1) +/* 0BBDE8 800BB1E8 ACEF0004 */ sw $t7, 4($a3) +/* 0BBDEC 800BB1EC ACED0000 */ sw $t5, ($a3) +/* 0BBDF0 800BB1F0 8FE60000 */ lw $a2, ($ra) +/* 0BBDF4 800BB1F4 00000000 */ nop +/* 0BBDF8 800BB1F8 0206082A */ slt $at, $s0, $a2 +/* 0BBDFC 800BB1FC 01064021 */ addu $t0, $t0, $a2 +/* 0BBE00 800BB200 1420FFD9 */ bnez $at, .L800BB168 +/* 0BBE04 800BB204 25080001 */ addiu $t0, $t0, 1 +.L800BB208: +/* 0BBE08 800BB208 0C01A690 */ jal apply_matrix_from_stack +/* 0BBE0C 800BB20C 02202025 */ move $a0, $s1 +/* 0BBE10 800BB210 3C1F8013 */ lui $ra, %hi(D_80129FC8) # $ra, 0x8013 +/* 0BBE14 800BB214 27FF9FC8 */ addiu $ra, %lo(D_80129FC8) # addiu $ra, $ra, -0x6038 +/* 0BBE18 800BB218 8FAE00DC */ lw $t6, 0xdc($sp) +.L800BB21C: +/* 0BBE1C 800BB21C 8FB80074 */ lw $t8, 0x74($sp) +/* 0BBE20 800BB220 25D90001 */ addiu $t9, $t6, 1 +/* 0BBE24 800BB224 3C0E800E */ lui $t6, %hi(D_800E30DC) # $t6, 0x800e +/* 0BBE28 800BB228 8DCE30DC */ lw $t6, %lo(D_800E30DC)($t6) +/* 0BBE2C 800BB22C 270F0002 */ addiu $t7, $t8, 2 +/* 0BBE30 800BB230 032E082A */ slt $at, $t9, $t6 +/* 0BBE34 800BB234 AFAF0074 */ sw $t7, 0x74($sp) +/* 0BBE38 800BB238 1420FECB */ bnez $at, .L800BAD68 +/* 0BBE3C 800BB23C AFB900DC */ sw $t9, 0xdc($sp) +.L800BB240: +/* 0BBE40 800BB240 8FF8004C */ lw $t8, 0x4c($ra) +/* 0BBE44 800BB244 3C19B700 */ lui $t9, 0xb700 +/* 0BBE48 800BB248 1300000E */ beqz $t8, .L800BB284 +/* 0BBE4C 800BB24C 00000000 */ nop +/* 0BBE50 800BB250 8E270000 */ lw $a3, ($s1) +/* 0BBE54 800BB254 3C0E0001 */ lui $t6, 1 +/* 0BBE58 800BB258 24EF0008 */ addiu $t7, $a3, 8 +/* 0BBE5C 800BB25C AE2F0000 */ sw $t7, ($s1) +/* 0BBE60 800BB260 ACEE0004 */ sw $t6, 4($a3) +/* 0BBE64 800BB264 ACF90000 */ sw $t9, ($a3) +/* 0BBE68 800BB268 8E270000 */ lw $a3, ($s1) +/* 0BBE6C 800BB26C 2419FFFF */ li $t9, -1 +/* 0BBE70 800BB270 24F80008 */ addiu $t8, $a3, 8 +/* 0BBE74 800BB274 AE380000 */ sw $t8, ($s1) +/* 0BBE78 800BB278 3C0FFA00 */ lui $t7, 0xfa00 +/* 0BBE7C 800BB27C ACEF0000 */ sw $t7, ($a3) +/* 0BBE80 800BB280 ACF90004 */ sw $t9, 4($a3) +.L800BB284: +/* 0BBE84 800BB284 8E2E0000 */ lw $t6, ($s1) +/* 0BBE88 800BB288 8FB80120 */ lw $t8, 0x120($sp) +/* 0BBE8C 800BB28C 3C0F8013 */ lui $t7, %hi(D_80129FC4) # $t7, 0x8013 +/* 0BBE90 800BB290 AF0E0000 */ sw $t6, ($t8) +/* 0BBE94 800BB294 8FB90124 */ lw $t9, 0x124($sp) +/* 0BBE98 800BB298 8DEF9FC4 */ lw $t7, %lo(D_80129FC4)($t7) +/* 0BBE9C 800BB29C 00000000 */ nop +/* 0BBEA0 800BB2A0 AF2F0000 */ sw $t7, ($t9) +.L800BB2A4: +/* 0BBEA4 800BB2A4 8FBF005C */ lw $ra, 0x5c($sp) +/* 0BBEA8 800BB2A8 3C01800E */ lui $at, %hi(D_800E30DC) # $at, 0x800e +/* 0BBEAC 800BB2AC C7B50020 */ lwc1 $f21, 0x20($sp) +/* 0BBEB0 800BB2B0 C7B40024 */ lwc1 $f20, 0x24($sp) +/* 0BBEB4 800BB2B4 C7B70028 */ lwc1 $f23, 0x28($sp) +/* 0BBEB8 800BB2B8 C7B6002C */ lwc1 $f22, 0x2c($sp) +/* 0BBEBC 800BB2BC C7B90030 */ lwc1 $f25, 0x30($sp) +/* 0BBEC0 800BB2C0 C7B80034 */ lwc1 $f24, 0x34($sp) +/* 0BBEC4 800BB2C4 8FB00038 */ lw $s0, 0x38($sp) +/* 0BBEC8 800BB2C8 8FB1003C */ lw $s1, 0x3c($sp) +/* 0BBECC 800BB2CC 8FB20040 */ lw $s2, 0x40($sp) +/* 0BBED0 800BB2D0 8FB30044 */ lw $s3, 0x44($sp) +/* 0BBED4 800BB2D4 8FB40048 */ lw $s4, 0x48($sp) +/* 0BBED8 800BB2D8 8FB5004C */ lw $s5, 0x4c($sp) +/* 0BBEDC 800BB2DC 8FB60050 */ lw $s6, 0x50($sp) +/* 0BBEE0 800BB2E0 8FB70054 */ lw $s7, 0x54($sp) +/* 0BBEE4 800BB2E4 8FBE0058 */ lw $fp, 0x58($sp) +/* 0BBEE8 800BB2E8 AC2030DC */ sw $zero, %lo(D_800E30DC)($at) +/* 0BBEEC 800BB2EC 03E00008 */ jr $ra +/* 0BBEF0 800BB2F0 27BD0120 */ addiu $sp, $sp, 0x120 + diff --git a/asm/non_matchings/weather/func_800ACA20.s b/asm/non_matchings/weather/func_800ACA20.s index 91493bc6..c12aca29 100644 --- a/asm/non_matchings/weather/func_800ACA20.s +++ b/asm/non_matchings/weather/func_800ACA20.s @@ -40,7 +40,7 @@ glabel func_800ACA20 /* 0AD6B8 800ACAB8 E7B400D8 */ swc1 $f20, 0xd8($sp) /* 0AD6BC 800ACABC E7B400DC */ swc1 $f20, 0xdc($sp) /* 0AD6C0 800ACAC0 AFAB0098 */ sw $t3, 0x98($sp) -/* 0AD6C4 800ACAC4 0C01A769 */ jal func_80069DA4 +/* 0AD6C4 800ACAC4 0C01A769 */ jal get_projection_matrix_f32 /* 0AD6C8 800ACAC8 E7AA00E0 */ swc1 $f10, 0xe0($sp) /* 0AD6CC 800ACACC 27A500D8 */ addiu $a1, $sp, 0xd8 /* 0AD6D0 800ACAD0 00A03025 */ move $a2, $a1 diff --git a/asm/unknown_0251F0/calc_dynamic_lighting_for_object_2.s b/asm/unknown_0251F0/calc_dynamic_lighting_for_object_2.s index 68bd5902..dad8f689 100644 --- a/asm/unknown_0251F0/calc_dynamic_lighting_for_object_2.s +++ b/asm/unknown_0251F0/calc_dynamic_lighting_for_object_2.s @@ -28,7 +28,7 @@ glabel calc_dynamic_lighting_for_object_2 /* 0253AC 800247AC E7060004 */ swc1 $f6, 4($t8) /* 0253B0 800247B0 10C00007 */ beqz $a2, .L800247D0 /* 0253B4 800247B4 E7080008 */ swc1 $f8, 8($t8) -/* 0253B8 800247B8 0C01A769 */ jal func_80069DA4 +/* 0253B8 800247B8 0C01A769 */ jal get_projection_matrix_f32 /* 0253BC 800247BC 00000000 */ nop /* 0253C0 800247C0 27A50010 */ addiu $a1, $sp, 0x10 /* 0253C4 800247C4 00402025 */ move $a0, $v0 diff --git a/include/enums.h b/include/enums.h index 417ad10e..8e85e2eb 100644 --- a/include/enums.h +++ b/include/enums.h @@ -169,7 +169,7 @@ typedef enum MiscAsset { MISC_ASSET_UNK3F, MISC_ASSET_UNK40, MISC_ASSET_UNK41, - MISC_ASSET_UNK42, + MISC_ASSET_TITLE_DEMOS, MISC_ASSET_UNK43, MISC_ASSET_UNK44, MISC_ASSET_UNK45, diff --git a/include/level_object_entries.h b/include/level_object_entries.h index 220b2c4f..3fc4818f 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -18,7 +18,7 @@ typedef struct LevelObjectEntry_Racer { typedef struct LevelObjectEntry_Scenery { /* 0x00 */ LevelObjectEntryCommon common; - /* 0x08 */ u8 numModelIDs; + /* 0x08 */ u8 modelIndex; /* 0x09 */ u8 radius; /* 0x0A */ u8 angleY; /* 0x0B */ u8 solid; @@ -281,7 +281,7 @@ typedef struct LevelObjectEntry_Weather { typedef struct LevelObjectEntry_Bridge_WhaleRamp { /* 0x00 */ LevelObjectEntryCommon common; - /* 0x08 */ u8 numModelIDs; + /* 0x08 */ u8 modelIndex; /* 0x09 */ u8 angleY; /* 0x0A */ u8 unkA; /* 0x0B */ u8 unkB; @@ -444,7 +444,7 @@ typedef struct LevelObjectEntry_TreasureSucker { typedef struct LevelObjectEntry_Log { /* 0x00 */ LevelObjectEntryCommon common; - /* 0x08 */ u8 numModelIDs; + /* 0x08 */ u8 modelIndex; /* 0x09 */ u8 radius; /* 0x0A */ u8 angleY; } LevelObjectEntry_Log; diff --git a/include/structs.h b/include/structs.h index 355bfe92..094b343f 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1768,7 +1768,7 @@ typedef struct SegmentPropertiesObject { /* 0x0036 */ s16 unk36; /* 0x0038 */ s8 unk38; /* 0x0039 */ u8 opacity; - /* 0x003A */ s8 numModelIDs; + /* 0x003A */ s8 modelIndex; /* 0x003B */ s8 animationID; } SegmentPropertiesObject; diff --git a/src/audio.c b/src/audio.c index 882349a0..cd847eaf 100644 --- a/src/audio.c +++ b/src/audio.c @@ -360,21 +360,20 @@ u16 musicGetChanMask(void) { return gMusicPlayer->chanMask; } -void func_80001074(u16 arg0) { +void func_80001074(u16 channel) { u32 chan; if (D_800DC65C) { - D_80115F7C = arg0; + D_80115F7C = channel; } else { - gMusicPlayer->chanMask = arg0; + gMusicPlayer->chanMask = channel; for (chan = 0; chan != 16; chan++) { - if (arg0 & (1 << chan)) { + if (channel & (1 << chan)) { func_80001170(chan); } else { func_80001114(chan); } } } - return; } void func_80001114(u8 chan) { @@ -471,7 +470,6 @@ void func_80001440(u8 *arg0) { s0++; } while (s0 < gMusicPlayer->maxChannels); } - return; } /** @@ -621,7 +619,6 @@ void sfxSetPan(ALPan pan) { for (iChan = 0; iChan < 16; iChan++) { alCSPSetChlPan((ALCSPlayer *) gSndFxPlayer, iChan, pan); } - return; } /** @@ -870,7 +867,6 @@ void func_80002570(ALSeqPlayer *seqp) { D_80115D41 = 0; D_800DC660 = 0; } - return; } void func_80002608(u8 arg0) { diff --git a/src/camera.c b/src/camera.c index 375ba399..cdea462d 100644 --- a/src/camera.c +++ b/src/camera.c @@ -88,7 +88,7 @@ ObjectTransform D_800DD2A0 = { 0, 0, 0, 0, 1.0f, 0.0f, 0.0f, 0.0f, }; -Matrix gOrthoMatrix = { +Matrix gOrthoMatrixF = { { 1.0f, 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f, 0.0f }, @@ -103,35 +103,35 @@ u8 D_800DD2F8[8] = { /************ .bss ************/ -ObjectSegment gActiveCameraStack[8]; +ObjectSegment gCameraSegment[8]; s32 gNumberOfViewports; s32 gActiveCameraID; s32 gViewportCap; UNUSED s32 D_80120CEC; ObjectTransform gCameraTransform; -s32 D_80120D08; +s32 gMatrixType; s32 D_80120D0C; f32 gCurCamFOV; s8 gCutsceneCameraActive; s8 gAdjustViewportHeight; s32 D_80120D18; -s32 D_80120D1C; -s32 D_80120D20; +s32 gModelMatrixStackPos; +s32 gCameraMatrixPos; UNUSED s32 D_80120D24; -f32 D_80120D28[6]; -f32 D_80120D40[6]; -f32 D_80120D58[5]; +f32 gModelMatrixViewX[6]; +f32 gModelMatrixViewY[6]; +f32 gModelMatrixViewZ[5]; u16 perspNorm; -Matrix *D_80120D70[6]; -MatrixS *D_80120D88[6]; +Matrix *gModelMatrixF[6]; +MatrixS *gModelMatrixS[6]; Matrix D_80120DA0[5]; Matrix gPerspectiveMatrixF; -Matrix D_80120F20; -Matrix D_80120F60; -Matrix D_80120FA0; -MatrixS gPerspectiveMatrixS; -MatrixS D_80121020; -Matrix D_80121060; +Matrix gViewMatrixF; +Matrix gCameraMatrixF; +Matrix gProjectionMatrixF; +MatrixS gProjectionMatrixS; +UNUSED MatrixS gUnusedProjectionMatrixS; // Copied to the same way as gProjectionMatrixS, but not actually used. +Matrix gCurrentModelMatrixF; Matrix D_801210A0; /******************************/ @@ -147,7 +147,7 @@ void func_80065EA0(void) { u32 stat; // This loop is not cooperating. - for (i = 0; i < 5; i++) { D_80120D70[i] = D_80120DA0 + i + i*0; } + for (i = 0; i < 5; i++) { gModelMatrixF[i] = D_80120DA0 + i + i*0; } for (j = 0; j < 8; j++) { gActiveCameraID = j; @@ -156,8 +156,8 @@ void func_80065EA0(void) { gCutsceneCameraActive = FALSE; gActiveCameraID = 0; - D_80120D1C = 0; - D_80120D20 = 0; + gModelMatrixStackPos = 0; + gCameraMatrixPos = 0; gNumberOfViewports = 0; D_80120D0C = 0; D_80120D18 = 0; @@ -172,7 +172,7 @@ void func_80065EA0(void) { } guPerspectiveF(gPerspectiveMatrixF, &perspNorm, CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); - f32_matrix_to_s16_matrix(gPerspectiveMatrixF, gPerspectiveMatrixS); + f32_matrix_to_s16_matrix((Matrix *) gPerspectiveMatrixF, (MatrixS *) gProjectionMatrixS); gCurCamFOV = CAMERA_DEFAULT_FOV; } #else @@ -182,7 +182,7 @@ GLOBAL_ASM("asm/non_matchings/camera/func_80065EA0.s") void func_80066060(s32 arg0, s32 arg1) { if (arg0 >= 0 && arg0 < 4) { D_800DD2F8[arg0] = arg1; - gActiveCameraStack[arg0].object.animationID = arg1; + gCameraSegment[arg0].object.animationID = arg1; } } @@ -220,7 +220,7 @@ void update_camera_fov(f32 camFieldOfView) { if (CAMERA_MIN_FOV < camFieldOfView && camFieldOfView < CAMERA_MAX_FOV && camFieldOfView != gCurCamFOV) { gCurCamFOV = camFieldOfView; guPerspectiveF(gPerspectiveMatrixF, &perspNorm, camFieldOfView, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); - f32_matrix_to_s16_matrix(&gPerspectiveMatrixF, &gPerspectiveMatrixS); + f32_matrix_to_s16_matrix(&gPerspectiveMatrixF, &gProjectionMatrixS); } } @@ -229,7 +229,7 @@ void update_camera_fov(f32 camFieldOfView) { */ UNUSED void calculate_camera_perspective(void) { guPerspectiveF(gPerspectiveMatrixF, &perspNorm, CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); - f32_matrix_to_s16_matrix(&gPerspectiveMatrixF, &gPerspectiveMatrixS); + f32_matrix_to_s16_matrix(&gPerspectiveMatrixF, &gProjectionMatrixS); } UNUSED Matrix *func_80066204(void) { @@ -302,26 +302,26 @@ f32 get_distance_to_active_camera(f32 xPos, f32 yPos, f32 zPos) { index += 4; } - dz = zPos - gActiveCameraStack[index].trans.z_position; - dx = xPos - gActiveCameraStack[index].trans.x_position; - dy = yPos - gActiveCameraStack[index].trans.y_position; + dz = zPos - gCameraSegment[index].trans.z_position; + dx = xPos - gCameraSegment[index].trans.x_position; + dy = yPos - gCameraSegment[index].trans.y_position; return sqrtf((dz * dz) + ((dx * dx) + (dy * dy))); } void func_800663DC(s32 xPos, s32 yPos, s32 zPos, s32 arg3, s32 arg4, s32 arg5) { - gActiveCameraStack[gActiveCameraID].trans.z_rotation = (s16) (arg3 * 0xB6); - gActiveCameraStack[gActiveCameraID].trans.x_position = (f32) xPos; - gActiveCameraStack[gActiveCameraID].trans.y_position = (f32) yPos; - gActiveCameraStack[gActiveCameraID].trans.z_position = (f32) zPos; - gActiveCameraStack[gActiveCameraID].trans.x_rotation = (s16) (arg4 * 0xB6); - gActiveCameraStack[gActiveCameraID].camera.unk38 = (s16) 0; - gActiveCameraStack[gActiveCameraID].z_velocity = 0.0f; - gActiveCameraStack[gActiveCameraID].unk28 = 0.0f; - gActiveCameraStack[gActiveCameraID].camera.unk2C = 0.0f; - gActiveCameraStack[gActiveCameraID].camera.distanceToCamera = 0.0f; - gActiveCameraStack[gActiveCameraID].x_velocity = 160.0f; - gActiveCameraStack[gActiveCameraID].trans.y_rotation = (s16) (arg5 * 0xB6); - gActiveCameraStack[gActiveCameraID].object.animationID = D_800DD2F8[gActiveCameraID]; + gCameraSegment[gActiveCameraID].trans.z_rotation = (s16) (arg3 * 0xB6); + gCameraSegment[gActiveCameraID].trans.x_position = (f32) xPos; + gCameraSegment[gActiveCameraID].trans.y_position = (f32) yPos; + gCameraSegment[gActiveCameraID].trans.z_position = (f32) zPos; + gCameraSegment[gActiveCameraID].trans.x_rotation = (s16) (arg4 * 0xB6); + gCameraSegment[gActiveCameraID].camera.unk38 = (s16) 0; + gCameraSegment[gActiveCameraID].z_velocity = 0.0f; + gCameraSegment[gActiveCameraID].unk28 = 0.0f; + gCameraSegment[gActiveCameraID].camera.unk2C = 0.0f; + gCameraSegment[gActiveCameraID].camera.distanceToCamera = 0.0f; + gCameraSegment[gActiveCameraID].x_velocity = 160.0f; + gCameraSegment[gActiveCameraID].trans.y_rotation = (s16) (arg5 * 0xB6); + gCameraSegment[gActiveCameraID].object.animationID = D_800DD2F8[gActiveCameraID]; } /** @@ -331,14 +331,14 @@ void func_800663DC(s32 xPos, s32 yPos, s32 zPos, s32 arg3, s32 arg4, s32 arg5) { */ void write_to_object_render_stack(s32 stackPos, f32 xPos, f32 yPos, f32 zPos, s16 arg4, s16 arg5, s16 arg6) { stackPos += 4; - gActiveCameraStack[stackPos].camera.unk38 = 0; - gActiveCameraStack[stackPos].trans.x_position = xPos; - gActiveCameraStack[stackPos].trans.y_position = yPos; - gActiveCameraStack[stackPos].trans.z_position = zPos; - gActiveCameraStack[stackPos].trans.y_rotation = arg4; - gActiveCameraStack[stackPos].trans.x_rotation = arg5; - gActiveCameraStack[stackPos].trans.z_rotation = arg6; - gActiveCameraStack[stackPos].object.cameraSegmentID = get_level_segment_index_from_position(xPos, yPos, zPos); + gCameraSegment[stackPos].camera.unk38 = 0; + gCameraSegment[stackPos].trans.x_position = xPos; + gCameraSegment[stackPos].trans.y_position = yPos; + gCameraSegment[stackPos].trans.z_position = zPos; + gCameraSegment[stackPos].trans.y_rotation = arg4; + gCameraSegment[stackPos].trans.x_rotation = arg5; + gCameraSegment[stackPos].trans.z_rotation = arg6; + gCameraSegment[stackPos].object.cameraSegmentID = get_level_segment_index_from_position(xPos, yPos, zPos); gCutsceneCameraActive = TRUE; } @@ -877,33 +877,33 @@ void func_80067D3C(Gfx **dlist, UNUSED MatrixS **mats) { gActiveCameraID += 4; } - gCameraTransform.y_rotation = 0x8000 + gActiveCameraStack[gActiveCameraID].trans.y_rotation; - gCameraTransform.x_rotation = gActiveCameraStack[gActiveCameraID].trans.x_rotation + gActiveCameraStack[gActiveCameraID].camera.unk38; - gCameraTransform.z_rotation = gActiveCameraStack[gActiveCameraID].trans.z_rotation; + gCameraTransform.y_rotation = 0x8000 + gCameraSegment[gActiveCameraID].trans.y_rotation; + gCameraTransform.x_rotation = gCameraSegment[gActiveCameraID].trans.x_rotation + gCameraSegment[gActiveCameraID].camera.unk38; + gCameraTransform.z_rotation = gCameraSegment[gActiveCameraID].trans.z_rotation; - gCameraTransform.x_position = -gActiveCameraStack[gActiveCameraID].trans.x_position; - gCameraTransform.y_position = -gActiveCameraStack[gActiveCameraID].trans.y_position; + gCameraTransform.x_position = -gCameraSegment[gActiveCameraID].trans.x_position; + gCameraTransform.y_position = -gCameraSegment[gActiveCameraID].trans.y_position; if (D_80120D18 != 0) { - gCameraTransform.y_position -= gActiveCameraStack[gActiveCameraID].camera.distanceToCamera; + gCameraTransform.y_position -= gCameraSegment[gActiveCameraID].camera.distanceToCamera; } - gCameraTransform.z_position = -gActiveCameraStack[gActiveCameraID].trans.z_position; + gCameraTransform.z_position = -gCameraSegment[gActiveCameraID].trans.z_position; - object_transform_to_matrix_2(D_80120F60, &gCameraTransform); - f32_matrix_mult(&D_80120F60, &gPerspectiveMatrixF, &D_80120F20); + object_transform_to_matrix_2(gCameraMatrixF, &gCameraTransform); + f32_matrix_mult(&gCameraMatrixF, &gPerspectiveMatrixF, &gViewMatrixF); - gCameraTransform.y_rotation = -0x8000 - gActiveCameraStack[gActiveCameraID].trans.y_rotation; - gCameraTransform.x_rotation = -(gActiveCameraStack[gActiveCameraID].trans.x_rotation + gActiveCameraStack[gActiveCameraID].camera.unk38); - gCameraTransform.z_rotation = -gActiveCameraStack[gActiveCameraID].trans.z_rotation; + gCameraTransform.y_rotation = -0x8000 - gCameraSegment[gActiveCameraID].trans.y_rotation; + gCameraTransform.x_rotation = -(gCameraSegment[gActiveCameraID].trans.x_rotation + gCameraSegment[gActiveCameraID].camera.unk38); + gCameraTransform.z_rotation = -gCameraSegment[gActiveCameraID].trans.z_rotation; gCameraTransform.scale = 1.0f; - gCameraTransform.x_position = gActiveCameraStack[gActiveCameraID].trans.x_position; - gCameraTransform.y_position = gActiveCameraStack[gActiveCameraID].trans.y_position; + gCameraTransform.x_position = gCameraSegment[gActiveCameraID].trans.x_position; + gCameraTransform.y_position = gCameraSegment[gActiveCameraID].trans.y_position; if (D_80120D18 != 0) { - gCameraTransform.y_position += gActiveCameraStack[gActiveCameraID].camera.distanceToCamera; + gCameraTransform.y_position += gCameraSegment[gActiveCameraID].camera.distanceToCamera; } - gCameraTransform.z_position = gActiveCameraStack[gActiveCameraID].trans.z_position; + gCameraTransform.z_position = gCameraSegment[gActiveCameraID].trans.z_position; - object_transform_to_matrix(D_80120FA0, &gCameraTransform); - f32_matrix_to_s16_matrix(&D_80120FA0, &D_80121020); + object_transform_to_matrix(gProjectionMatrixF, &gCameraTransform); + f32_matrix_to_s16_matrix(&gProjectionMatrixF, &gUnusedProjectionMatrixS); gActiveCameraID = temp; } @@ -914,7 +914,7 @@ void func_80067D3C(Gfx **dlist, UNUSED MatrixS **mats) { * Official Name: camOrthoYAspect */ void set_ortho_matrix_height(f32 value) { - gOrthoMatrix[1][1] = value; + gOrthoMatrixF[1][1] = value; } /** @@ -930,35 +930,35 @@ void set_ortho_matrix_view(Gfx **dlist, MatrixS **mtx) { widthAndHeight = get_video_width_and_height_as_s32(); height = GET_VIDEO_HEIGHT(widthAndHeight); width = GET_VIDEO_WIDTH(widthAndHeight); - f32_matrix_to_s16_matrix(&gOrthoMatrix, *mtx); - D_80120D88[0] = *mtx; + f32_matrix_to_s16_matrix(&gOrthoMatrixF, *mtx); + gModelMatrixS[0] = *mtx; gViewportStack[gActiveCameraID + 5].vp.vscale[0] = width * 2; gViewportStack[gActiveCameraID + 5].vp.vscale[1] = width * 2; gViewportStack[gActiveCameraID + 5].vp.vtrans[0] = width * 2; gViewportStack[gActiveCameraID + 5].vp.vtrans[1] = height * 2; gSPViewport((*dlist)++, OS_K0_TO_PHYSICAL(&gViewportStack[gActiveCameraID + 5])); gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - D_80120D1C = 0; - D_80120D08 = 0; + gModelMatrixStackPos = 0; + gMatrixType = G_MTX_DKR_INDEX_0; for (i = 0; i < 4; i++) { //Required to be one line, but the "\" fixes that. for (j = 0; j < 4; j++){ \ - D_80120F20[i][j] = gOrthoMatrix[i][j]; + gViewMatrixF[i][j] = gOrthoMatrixF[i][j]; } } } //Official Name: camStandardPersp? void func_8006807C(Gfx **dlist, MatrixS **mtx) { - object_transform_to_matrix_2(D_80121060, &D_800DD288); - f32_matrix_mult(&D_80121060, &gPerspectiveMatrixF, &D_80120F20); - object_transform_to_matrix_2((float (*)[4]) D_80120D70[0], &D_800DD2A0); - f32_matrix_mult(D_80120D70[0], &D_80120F20, &D_80121060); - f32_matrix_to_s16_matrix(&D_80121060, *mtx); + object_transform_to_matrix_2(gCurrentModelMatrixF, &D_800DD288); + f32_matrix_mult(&gCurrentModelMatrixF, &gPerspectiveMatrixF, &gViewMatrixF); + object_transform_to_matrix_2((float (*)[4]) gModelMatrixF[0], &D_800DD2A0); + f32_matrix_mult(gModelMatrixF[0], &gViewMatrixF, &gCurrentModelMatrixF); + f32_matrix_to_s16_matrix(&gCurrentModelMatrixF, *mtx); gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - D_80120D1C = 0; - D_80120D08 = 0; + gModelMatrixStackPos = 0; + gMatrixType = G_MTX_DKR_INDEX_0; } //Official Name: camSetViewport? @@ -999,11 +999,11 @@ void func_800682AC(Gfx **dlist) { //Official Name: camOffsetZero? void func_80068408(Gfx **dlist, MatrixS **mtx) { - f32_matrix_from_position(D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f); - f32_matrix_mult(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); - f32_matrix_to_s16_matrix(&D_80121060, *mtx); - D_80120D88[D_80120D1C] = *mtx; - gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), D_80120D08 << 6); + f32_matrix_from_position(gModelMatrixF[gModelMatrixStackPos], 0.0f, 0.0f, 0.0f); + f32_matrix_mult(gModelMatrixF[gModelMatrixStackPos], &gViewMatrixF, &gCurrentModelMatrixF); + f32_matrix_to_s16_matrix(&gCurrentModelMatrixF, *mtx); + gModelMatrixS[gModelMatrixStackPos] = *mtx; + gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), gMatrixType << 6); } void func_80068508(s32 arg0) { @@ -1014,65 +1014,65 @@ void func_80068508(s32 arg0) { * Calculates angle from object to camera, then renders the sprite as a billboard, facing the camera. */ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Object *obj, unk80068514_arg4 *arg4, s32 flags) { - f32 sp5C; - f32 sp58; + f32 diffX; + f32 diffY; Vertex *v; - f32 sp50; - f32 sp4C; - f32 temp_f0; + f32 lateralDist; + f32 sineY; + f32 cosY; f32 sp44; - f32 var_f20; - s32 sp3C; - s32 sp38; - s32 sp34; + f32 diffZ; + s32 tanX; + s32 tanY; + s32 angleDiff; s32 result; - s32 var_s2; + s32 textureFrame; result = TRUE; if (flags & RENDER_VEHICLE_PART) { - sp5C = D_80120D28[D_80120D20] - obj->segment.trans.x_position; - sp58 = D_80120D40[D_80120D20] - obj->segment.trans.y_position; - var_f20 = D_80120D58[D_80120D20] - obj->segment.trans.z_position; - sp4C = sins_f(obj->segment.trans.y_rotation); - temp_f0 = coss_f(obj->segment.trans.y_rotation); - sp44 = (sp5C * temp_f0) + (var_f20 * sp4C); - var_f20 = (var_f20 * temp_f0) - (sp5C * sp4C); - sp38 = arctan2_f(sp44, sqrtf((sp58 * sp58) + (var_f20 * var_f20))); - sp3C = -sins(arctan2_f(sp44, var_f20)) >> 8; - if (var_f20 < 0.0f) { - var_f20 = -var_f20; - sp3C = 1 - sp3C; - sp38 = -sp38; + diffX = gModelMatrixViewX[gCameraMatrixPos] - obj->segment.trans.x_position; + diffY = gModelMatrixViewY[gCameraMatrixPos] - obj->segment.trans.y_position; + diffZ = gModelMatrixViewZ[gCameraMatrixPos] - obj->segment.trans.z_position; + sineY = sins_f(obj->segment.trans.y_rotation); + cosY = coss_f(obj->segment.trans.y_rotation); + sp44 = (diffX * cosY) + (diffZ * sineY); + diffZ = (diffZ * cosY) - (diffX * sineY); + tanY = arctan2_f(sp44, sqrtf((diffY * diffY) + (diffZ * diffZ))); + tanX = -sins(arctan2_f(sp44, diffZ)) >> 8; + if (diffZ < 0.0f) { + diffZ = -diffZ; + tanX = 1 - tanX; + tanY = -tanY; } - sp34 = arctan2_f(sp58, var_f20); - if (sp34 > 0x8000) { - sp34 -= 0x10000; + angleDiff = arctan2_f(diffY, diffZ); + if (angleDiff > 0x8000) { + angleDiff -= 0x10000; } - sp34 = (sp34 * sp3C) >> 8; - var_s2 = (sp38 >> 7) & 0xFF; - if (var_s2 > 127) { - var_s2 = 255 - var_s2; - sp34 += 0x8000; + angleDiff = (angleDiff * tanX) >> 8; + textureFrame = (tanY >> 7) & 0xFF; + if (textureFrame > 127) { + textureFrame = 255 - textureFrame; + angleDiff += 0x8000; result = FALSE; } - var_s2 *= 2; - sp5C = D_80120D28[D_80120D20] - obj->segment.trans.x_position; - sp58 = D_80120D40[D_80120D20] - obj->segment.trans.y_position; - var_f20 = D_80120D58[D_80120D20] - obj->segment.trans.z_position; - sp50 = sqrtf((sp5C * sp5C) + (var_f20 * var_f20)); - gCameraTransform.y_rotation = arctan2_f(sp5C, var_f20); - gCameraTransform.x_rotation = -arctan2_f(sp58, sp50); - gCameraTransform.z_rotation = sp34; + textureFrame *= 2; + diffX = gModelMatrixViewX[gCameraMatrixPos] - obj->segment.trans.x_position; + diffY = gModelMatrixViewY[gCameraMatrixPos] - obj->segment.trans.y_position; + diffZ = gModelMatrixViewZ[gCameraMatrixPos] - obj->segment.trans.z_position; + lateralDist = sqrtf((diffX * diffX) + (diffZ * diffZ)); + gCameraTransform.y_rotation = arctan2_f(diffX, diffZ); + gCameraTransform.x_rotation = -arctan2_f(diffY, lateralDist); + gCameraTransform.z_rotation = angleDiff; gCameraTransform.scale = obj->segment.trans.scale; gCameraTransform.x_position = obj->segment.trans.x_position; gCameraTransform.y_position = obj->segment.trans.y_position; gCameraTransform.z_position = obj->segment.trans.z_position; - object_transform_to_matrix(D_80121060, &gCameraTransform); - D_80120D1C++; - f32_matrix_mult(&D_80121060, D_80120D70[D_80120D1C-1], D_80120D70[D_80120D1C]); - f32_matrix_mult(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); - f32_matrix_to_s16_matrix(&D_80121060, *mtx); - D_80120D88[D_80120D1C] = *mtx; + object_transform_to_matrix(gCurrentModelMatrixF, &gCameraTransform); + gModelMatrixStackPos++; + f32_matrix_mult(&gCurrentModelMatrixF, gModelMatrixF[gModelMatrixStackPos-1], gModelMatrixF[gModelMatrixStackPos]); + f32_matrix_mult(gModelMatrixF[gModelMatrixStackPos], &gViewMatrixF, &gCurrentModelMatrixF); + f32_matrix_to_s16_matrix(&gCurrentModelMatrixF, *mtx); + gModelMatrixS[gModelMatrixStackPos] = *mtx; gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); gSPVertexDKR((*dlist)++, OS_K0_TO_PHYSICAL(&gVehiclePartVertex), 1, 0); } else { @@ -1087,20 +1087,20 @@ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Obj gSPVertexDKR((*dlist)++, OS_PHYSICAL_TO_K0(*vertexList), 1, 0); (*vertexList)++; if (gCutsceneCameraActive == 0) { - sp34 = gActiveCameraStack[gActiveCameraID].trans.z_rotation + obj->segment.trans.z_rotation; + angleDiff = gCameraSegment[gActiveCameraID].trans.z_rotation + obj->segment.trans.z_rotation; } else { - sp34 = gActiveCameraStack[gActiveCameraID + 4].trans.z_rotation + obj->segment.trans.z_rotation; + angleDiff = gCameraSegment[gActiveCameraID + 4].trans.z_rotation + obj->segment.trans.z_rotation; } - var_s2 = obj->segment.animFrame; - D_80120D1C++; - f32_matrix_from_rotation_and_scale((f32 (*)[4]) D_80120D70[D_80120D1C], sp34, obj->segment.trans.scale, gVideoAspectRatio); - f32_matrix_to_s16_matrix(D_80120D70[D_80120D1C], *mtx); - D_80120D88[D_80120D1C] = *mtx; + textureFrame = obj->segment.animFrame; + gModelMatrixStackPos++; + f32_matrix_from_rotation_and_scale((f32 (*)[4]) gModelMatrixF[gModelMatrixStackPos], angleDiff, obj->segment.trans.scale, gVideoAspectRatio); + f32_matrix_to_s16_matrix(gModelMatrixF[gModelMatrixStackPos], *mtx); + gModelMatrixS[gModelMatrixStackPos] = *mtx; gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); gDkrEnableBillboard((*dlist)++); } if (D_80120D0C == 0) { - var_s2 = ((var_s2 & 0xFF) * arg4->unk0) >> 8; + textureFrame = ((textureFrame & 0xFF) * arg4->textureCount) >> 8; } flags &= ~RENDER_VEHICLE_PART; if (flags & RENDER_SEMI_TRANSPARENT) { @@ -1110,14 +1110,14 @@ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Obj if (!(flags & RENDER_Z_UPDATE)) { gDPSetPrimColor((*dlist)++, 0, 0, 255, 255, 255, 255); } - gSPDisplayList((*dlist)++, arg4->unk8[var_s2 + 1]); - D_80120D1C--; - if (D_80120D1C == 0) { - var_s2 = 0; + gSPDisplayList((*dlist)++, arg4->unk8[textureFrame + 1]); + gModelMatrixStackPos--; + if (gModelMatrixStackPos == 0) { + textureFrame = 0; } else { - var_s2 = 1; + textureFrame = 1; } - gDkrInsertMatrix((*dlist)++, 0, var_s2 << 6); + gDkrInsertMatrix((*dlist)++, 0, textureFrame << 6); gDkrDisableBillboard((*dlist)++); return result; } @@ -1130,8 +1130,8 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec f32 scale; s32 index; Vertex *temp_v1; - Matrix sp90; - Matrix sp50; + Matrix aspectMtxF; + Matrix scaleMtxF; if (sprite != NULL) { temp_v1 = *vtx; @@ -1145,26 +1145,26 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(*vtx), 1, 0); (*vtx)++; // Can't be done in the macro? index = segment->animFrame; - D_80120D1C ++; + gModelMatrixStackPos ++; gCameraTransform.y_rotation = -segment->trans.y_rotation; gCameraTransform.x_rotation = -segment->trans.x_rotation; - gCameraTransform.z_rotation = gActiveCameraStack[gActiveCameraID].trans.z_rotation + segment->trans.z_rotation; + gCameraTransform.z_rotation = gCameraSegment[gActiveCameraID].trans.z_rotation + segment->trans.z_rotation; gCameraTransform.x_position = 0.0f; gCameraTransform.y_position = 0.0f; gCameraTransform.z_position = 0.0f; if (gAdjustViewportHeight) { scale = segment->trans.scale; - f32_matrix_from_scale(sp50, scale, scale, 1.0f); - f32_matrix_from_rotation_and_scale(sp90, 0, 1.0f, gVideoAspectRatio); - f32_matrix_mult(&sp90, &sp50, &D_80121060); + f32_matrix_from_scale(scaleMtxF, scale, scale, 1.0f); + f32_matrix_from_rotation_and_scale(aspectMtxF, 0, 1.0f, gVideoAspectRatio); + f32_matrix_mult(&aspectMtxF, &scaleMtxF, &gCurrentModelMatrixF); } else { scale = segment->trans.scale; - f32_matrix_from_scale(D_80121060, scale, scale, 1.0f); + f32_matrix_from_scale(gCurrentModelMatrixF, scale, scale, 1.0f); } - object_transform_to_matrix_2(sp90, &gCameraTransform); - f32_matrix_mult(&D_80121060, &sp90, D_80120D70[D_80120D1C]); - f32_matrix_to_s16_matrix(D_80120D70[D_80120D1C], *mtx); - D_80120D88[D_80120D1C] = *mtx; + object_transform_to_matrix_2(aspectMtxF, &gCameraTransform); + f32_matrix_mult(&gCurrentModelMatrixF, &aspectMtxF, gModelMatrixF[gModelMatrixStackPos]); + f32_matrix_to_s16_matrix(gModelMatrixF[gModelMatrixStackPos], *mtx); + gModelMatrixS[gModelMatrixStackPos] = *mtx; gSPMatrix((*dList)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); gDkrEnableBillboard((*dList)++); if (D_80120D0C == 0) { @@ -1175,7 +1175,7 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec index = sprite->baseTextureId - 1; } gSPDisplayList((*dList)++, sprite->unkC.ptr[index]); - if (--D_80120D1C == 0) { + if (--gModelMatrixStackPos == 0) { index = 0; } else { index = 1; @@ -1185,7 +1185,11 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec } } -void func_80068FA8(Gfx **dlist, MatrixS **mtx, Object *arg2, Object *arg3, f32 shear) { +/** + * Generate a matrix with rotation, scaling and shearing and run it. + * Used for wavy type effects like the shield. +*/ +void apply_object_shear_matrix(Gfx **dList, MatrixS **mtx, Object *arg2, Object *arg3, f32 shear) { UNUSED s32 pad; f32 cossf_x_arg2; f32 cossf_y_arg2; @@ -1241,9 +1245,9 @@ void func_80068FA8(Gfx **dlist, MatrixS **mtx, Object *arg2, Object *arg3, f32 s matrix_mult[3][2] = (((-sinsf_y_arg3 * cossf_z_arg3) + (sinsf_z_arg3 * (sinsf_x_arg3 * cossf_y_arg3))) * arg2_xPos) + (arg2_yPos * ((-sinsf_z_arg3 * -sinsf_y_arg3) + (cossf_z_arg3 * (sinsf_x_arg3 * cossf_y_arg3)))) + (arg2_zPos * (cossf_x_arg3 * cossf_y_arg3)) + arg3_zPos; matrix_mult[3][3] = 1.0f; - f32_matrix_mult(&matrix_mult, &D_80120F20, &D_801210A0); + f32_matrix_mult(&matrix_mult, &gViewMatrixF, &D_801210A0); f32_matrix_to_s16_matrix(&D_801210A0, *mtx); - gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_1); + gSPMatrix((*dList)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_1); } /** @@ -1256,28 +1260,28 @@ void camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f s32 index; f32 scaleFactor; - object_transform_to_matrix(D_80121060, trans); + object_transform_to_matrix(gCurrentModelMatrixF, trans); if (scaleY != 0.0f) { - f32_matrix_y_scale(&D_80121060, scaleY); + f32_matrix_y_scale(&gCurrentModelMatrixF, scaleY); } if (scale != 1.0f) { - f32_matrix_scale(&D_80121060, scale); + f32_matrix_scale(&gCurrentModelMatrixF, scale); } - f32_matrix_mult(&D_80121060, D_80120D70[D_80120D1C], D_80120D70[D_80120D1C + 1]); - f32_matrix_mult(D_80120D70[D_80120D1C + 1], &D_80120F20, &D_801210A0); + f32_matrix_mult(&gCurrentModelMatrixF, gModelMatrixF[gModelMatrixStackPos], gModelMatrixF[gModelMatrixStackPos + 1]); + f32_matrix_mult(gModelMatrixF[gModelMatrixStackPos + 1], &gViewMatrixF, &D_801210A0); f32_matrix_to_s16_matrix(&D_801210A0, *mtx); - D_80120D1C++; - D_80120D88[0, D_80120D1C] = *mtx; // Should be [D_80120D1C], but only matches with [0, D_80120D1C] + gModelMatrixStackPos++; + gModelMatrixS[0, gModelMatrixStackPos] = *mtx; // Should be [gModelMatrixStackPos], but only matches with [0, gModelMatrixStackPos] if (1) { } if (1) { } if (1) { }; // Fakematch gSPMatrix((*dList)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_1); - guMtxXFMF(*D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f, &tempX, &tempY, &tempZ); + guMtxXFMF(*gModelMatrixF[gModelMatrixStackPos], 0.0f, 0.0f, 0.0f, &tempX, &tempY, &tempZ); index = gActiveCameraID; if (gCutsceneCameraActive) { index += 4; } - tempX = gActiveCameraStack[index].trans.x_position - tempX; - tempY = gActiveCameraStack[index].trans.y_position - tempY; - tempZ = gActiveCameraStack[index].trans.z_position - tempZ; + tempX = gCameraSegment[index].trans.x_position - tempX; + tempY = gCameraSegment[index].trans.y_position - tempY; + tempZ = gCameraSegment[index].trans.z_position - tempZ; gCameraTransform.y_rotation = -trans->y_rotation; gCameraTransform.x_rotation = -trans->x_rotation; gCameraTransform.z_rotation = -trans->z_rotation; @@ -1285,21 +1289,24 @@ void camera_push_model_mtx(Gfx **dList, MatrixS **mtx, ObjectTransform *trans, f gCameraTransform.y_position = 0.0f; gCameraTransform.z_position = 0.0f; gCameraTransform.scale = 1.0f; - object_transform_to_matrix_2(D_80121060, &gCameraTransform); - guMtxXFMF(D_80121060, tempX, tempY, tempZ, &tempX, &tempY, &tempZ); + object_transform_to_matrix_2(gCurrentModelMatrixF, &gCameraTransform); + guMtxXFMF(gCurrentModelMatrixF, tempX, tempY, tempZ, &tempX, &tempY, &tempZ); scaleFactor = 1.0f / trans->scale; tempX *= scaleFactor; tempY *= scaleFactor; tempZ *= scaleFactor; - D_80120D20++; - index = D_80120D20; - D_80120D28[index] = tempX; - D_80120D40[index] = tempY; - if (0) {} // Necessary to match - D_80120D58[index] = tempZ; + gCameraMatrixPos++; + index = gCameraMatrixPos; + gModelMatrixViewX[index] = tempX; + gModelMatrixViewY[index] = tempY; + gModelMatrixViewZ[index] = tempZ; + if (0) {} // Fakematch } -void func_80069790(Gfx **dlist, MatrixS **mtx, Object_68 *obj68, s16 headAngle) { +/** + * Calculate the rotation matrix for an actors head, then run it. +*/ +void apply_head_turning_matrix(Gfx **dlist, MatrixS **mtx, Object_68 *objGfx, s16 headAngle) { f32 coss_headAngle; f32 sins_headAngle; f32 f_unk16; @@ -1307,92 +1314,109 @@ void func_80069790(Gfx **dlist, MatrixS **mtx, Object_68 *obj68, s16 headAngle) f32 f_unk1A; f32 coss_unk1C; f32 sins_unk1C; - Matrix spA4_mat; - Matrix sp64_mat; + Matrix rotationMtxF; + Matrix headMtxF; - f_unk16 = (f32) obj68->unk16; - f_unk18 = (f32) obj68->unk18; - f_unk1A = (f32) obj68->unk1A; - coss_unk1C = coss_f(obj68->unk1C); - sins_unk1C = sins_f(obj68->unk1C); + f_unk16 = (f32) objGfx->unk16; + f_unk18 = (f32) objGfx->unk18; + f_unk1A = (f32) objGfx->unk1A; + coss_unk1C = coss_f(objGfx->unk1C); + sins_unk1C = sins_f(objGfx->unk1C); coss_headAngle = coss_f(headAngle); sins_headAngle = sins_f(headAngle); - sp64_mat[0][0] = (coss_headAngle * coss_unk1C); - sp64_mat[0][1] = (coss_headAngle * sins_unk1C); - sp64_mat[0][2] = -sins_headAngle; - sp64_mat[0][3] = 0.0f; - sp64_mat[1][0] = -sins_unk1C; - sp64_mat[1][1] = coss_unk1C; - sp64_mat[1][2] = 0.0f; - sp64_mat[1][3] = 0.0f; - sp64_mat[2][0] = (sins_headAngle * coss_unk1C); - sp64_mat[2][1] = (sins_headAngle * sins_unk1C); - sp64_mat[2][2] = coss_headAngle; - sp64_mat[2][3] = 0.0f; - sp64_mat[3][0] = (-f_unk16 * (coss_headAngle * coss_unk1C)) + (-f_unk18 * -sins_unk1C) + (-f_unk1A * (sins_headAngle * coss_unk1C)) + f_unk16; - sp64_mat[3][1] = (-f_unk16 * (coss_headAngle * sins_unk1C)) + (-f_unk18 * coss_unk1C) + (-f_unk1A * (sins_headAngle * sins_unk1C)) + f_unk18; - sp64_mat[3][2] = (-f_unk16 * -sins_headAngle) + (-f_unk1A * coss_headAngle) + f_unk1A; - sp64_mat[3][3] = 1.0f; - f32_matrix_mult(&sp64_mat, &D_801210A0, &spA4_mat); - f32_matrix_to_s16_matrix(&spA4_mat, *mtx); + headMtxF[0][0] = (coss_headAngle * coss_unk1C); + headMtxF[0][1] = (coss_headAngle * sins_unk1C); + headMtxF[0][2] = -sins_headAngle; + headMtxF[0][3] = 0.0f; + headMtxF[1][0] = -sins_unk1C; + headMtxF[1][1] = coss_unk1C; + headMtxF[1][2] = 0.0f; + headMtxF[1][3] = 0.0f; + headMtxF[2][0] = (sins_headAngle * coss_unk1C); + headMtxF[2][1] = (sins_headAngle * sins_unk1C); + headMtxF[2][2] = coss_headAngle; + headMtxF[2][3] = 0.0f; + headMtxF[3][0] = (-f_unk16 * (coss_headAngle * coss_unk1C)) + (-f_unk18 * -sins_unk1C) + (-f_unk1A * (sins_headAngle * coss_unk1C)) + f_unk16; + headMtxF[3][1] = (-f_unk16 * (coss_headAngle * sins_unk1C)) + (-f_unk18 * coss_unk1C) + (-f_unk1A * (sins_headAngle * sins_unk1C)) + f_unk18; + headMtxF[3][2] = (-f_unk16 * -sins_headAngle) + (-f_unk1A * coss_headAngle) + f_unk1A; + headMtxF[3][3] = 1.0f; + f32_matrix_mult(&headMtxF, &D_801210A0, &rotationMtxF); + f32_matrix_to_s16_matrix(&rotationMtxF, *mtx); gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); gDkrInsertMatrix((*dlist)++, G_MWO_MATRIX_XX_XY_I, G_MTX_DKR_INDEX_1); } -UNUSED void func_800699E4(f32 *arg0, f32 *arg1, f32 *arg2) { - *arg0 = D_80120D28[D_80120D20]; - *arg1 = D_80120D40[D_80120D20]; - *arg2 = D_80120D58[D_80120D20]; +/** + * Writes the model matrix vector to the arguments. +*/ +UNUSED void get_modelmatrix_vector(f32 *x, f32 *y, f32 *z) { + *x = gModelMatrixViewX[gCameraMatrixPos]; + *y = gModelMatrixViewY[gCameraMatrixPos]; + *z = gModelMatrixViewZ[gCameraMatrixPos]; } -void func_80069A40(Gfx **dlist) { - D_80120D20--; - D_80120D1C--; +/** + * Run a matrix from the top of the stack and pop it. + * If the stack pos is less than zero, add a matrix instead. +*/ +void apply_matrix_from_stack(Gfx **dlist) { + gCameraMatrixPos--; + gModelMatrixStackPos--; - { s32 temp = D_80120D20; if ((temp && temp) != 0){} } // Fakematch + { s32 temp = gCameraMatrixPos; if ((temp && temp) != 0){} } // Fakematch - if (D_80120D1C > 0) { - gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0(D_80120D88[D_80120D1C]), G_MTX_DKR_INDEX_1); - } - else { + if (gModelMatrixStackPos > 0) { + gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0(gModelMatrixS[gModelMatrixStackPos]), G_MTX_DKR_INDEX_1); + } else { gDkrInsertMatrix((*dlist)++, G_MWO_MATRIX_XX_XY_I, G_MTX_DKR_INDEX_0); } } -UNUSED void func_80069ACC(f32 x, f32 y, f32 z) { - gActiveCameraStack[gActiveCameraID].trans.x_position += x; - gActiveCameraStack[gActiveCameraID].trans.y_position += y; - gActiveCameraStack[gActiveCameraID].trans.z_position += z; - gActiveCameraStack[gActiveCameraID].object.cameraSegmentID = +/** + * Move the camera with the given velocities. + * Also recalculates which block it's in. +*/ +UNUSED void translate_camera_segment(f32 x, f32 y, f32 z) { + gCameraSegment[gActiveCameraID].trans.x_position += x; + gCameraSegment[gActiveCameraID].trans.y_position += y; + gCameraSegment[gActiveCameraID].trans.z_position += z; + gCameraSegment[gActiveCameraID].object.cameraSegmentID = get_level_segment_index_from_position( - gActiveCameraStack[gActiveCameraID].trans.x_position, - gActiveCameraStack[gActiveCameraID].trans.y_position, - gActiveCameraStack[gActiveCameraID].trans.z_position); + gCameraSegment[gActiveCameraID].trans.x_position, + gCameraSegment[gActiveCameraID].trans.y_position, + gCameraSegment[gActiveCameraID].trans.z_position); } -UNUSED void func_80069B70(f32 x, UNUSED f32 y, f32 z) { - gActiveCameraStack[gActiveCameraID].trans.x_position -= x * coss_f(gActiveCameraStack[gActiveCameraID].trans.y_rotation); - gActiveCameraStack[gActiveCameraID].trans.z_position -= x * sins_f(gActiveCameraStack[gActiveCameraID].trans.y_rotation); - gActiveCameraStack[gActiveCameraID].trans.x_position -= z * sins_f(gActiveCameraStack[gActiveCameraID].trans.y_rotation); - gActiveCameraStack[gActiveCameraID].trans.z_position += z * coss_f(gActiveCameraStack[gActiveCameraID].trans.y_rotation); - gActiveCameraStack[gActiveCameraID].object.cameraSegmentID = +/** + * Move the camera with velocities accounting for face direction. + * Also recalculates which block it's in. +*/ +UNUSED void transform_camera_segment(f32 x, UNUSED f32 y, f32 z) { + gCameraSegment[gActiveCameraID].trans.x_position -= x * coss_f(gCameraSegment[gActiveCameraID].trans.y_rotation); + gCameraSegment[gActiveCameraID].trans.z_position -= x * sins_f(gCameraSegment[gActiveCameraID].trans.y_rotation); + gCameraSegment[gActiveCameraID].trans.x_position -= z * sins_f(gCameraSegment[gActiveCameraID].trans.y_rotation); + gCameraSegment[gActiveCameraID].trans.z_position += z * coss_f(gCameraSegment[gActiveCameraID].trans.y_rotation); + gCameraSegment[gActiveCameraID].object.cameraSegmentID = get_level_segment_index_from_position( - gActiveCameraStack[gActiveCameraID].trans.x_position, - gActiveCameraStack[gActiveCameraID].trans.y_position, - gActiveCameraStack[gActiveCameraID].trans.z_position); + gCameraSegment[gActiveCameraID].trans.x_position, + gCameraSegment[gActiveCameraID].trans.y_position, + gCameraSegment[gActiveCameraID].trans.z_position); } -UNUSED void func_80069CB4(s32 xRotation, s32 yRotation, s32 zRotation) { - gActiveCameraStack[gActiveCameraID].trans.y_rotation += xRotation; - gActiveCameraStack[gActiveCameraID].trans.x_rotation += yRotation; - gActiveCameraStack[gActiveCameraID].trans.z_rotation += zRotation; +/** + * Rotate the camera with the given angles. +*/ +UNUSED void rotate_camera_segment(s32 angleX, s32 angleY, s32 angleZ) { + gCameraSegment[gActiveCameraID].trans.y_rotation += angleX; + gCameraSegment[gActiveCameraID].trans.x_rotation += angleY; + gCameraSegment[gActiveCameraID].trans.z_rotation += angleZ; } /** * Returns the segment data of the active camera, but won't apply the offset for cutscenes. */ ObjectSegment *get_active_camera_segment_no_cutscenes(void) { - return &gActiveCameraStack[gActiveCameraID]; + return &gCameraSegment[gActiveCameraID]; } /** @@ -1400,9 +1424,9 @@ ObjectSegment *get_active_camera_segment_no_cutscenes(void) { */ ObjectSegment *get_active_camera_segment(void) { if (gCutsceneCameraActive) { - return &gActiveCameraStack[gActiveCameraID + 4]; + return &gCameraSegment[gActiveCameraID + 4]; } - return &gActiveCameraStack[gActiveCameraID]; + return &gCameraSegment[gActiveCameraID]; } /** @@ -1411,27 +1435,36 @@ ObjectSegment *get_active_camera_segment(void) { */ ObjectSegment *get_cutscene_camera_segment(void) { if (gCutsceneCameraActive) { - return &gActiveCameraStack[4]; + return &gCameraSegment[4]; } - return &gActiveCameraStack[PLAYER_ONE]; + return &gCameraSegment[PLAYER_ONE]; } -Matrix *func_80069DA4(void) { - return &D_80120FA0; +/** + * Return the current floating point projection matrix. +*/ +Matrix *get_projection_matrix_f32(void) { + return &gProjectionMatrixF; } -MatrixS *func_80069DB0(void) { - return &gPerspectiveMatrixS; +/** + * Return the current fixed point projection matrix. +*/ +MatrixS *get_projection_matrix_s16(void) { + return &gProjectionMatrixS; } -Matrix *func_80069DBC(void) { - return &D_80120F60; +/** + * Return the current camera matrix. +*/ +Matrix *get_camera_matrix(void) { + return &gCameraMatrixF; } f32 func_80069DC8(f32 x, f32 y, f32 z) { f32 ox, oy, oz; - guMtxXFMF(D_80120F60, x, y, z, &ox, &oy, &oz); + guMtxXFMF(gCameraMatrixF, x, y, z, &ox, &oy, &oz); return oz; } @@ -1447,12 +1480,12 @@ void set_camera_shake_by_distance(f32 x, f32 y, f32 z, f32 dist, f32 magnitude) s32 i; for (i = 0; i <= gNumberOfViewports; i++) { - diffX = x - gActiveCameraStack[i].trans.x_position; - diffY = y - gActiveCameraStack[i].trans.y_position; - diffZ = z - gActiveCameraStack[i].trans.z_position; + diffX = x - gCameraSegment[i].trans.x_position; + diffY = y - gCameraSegment[i].trans.y_position; + diffZ = z - gCameraSegment[i].trans.z_position; distance = sqrtf(((diffX * diffX) + (diffY * diffY)) + (diffZ * diffZ)); if (distance < dist) { - gActiveCameraStack[i].camera.distanceToCamera = ((dist - distance) * magnitude) / dist; + gCameraSegment[i].camera.distanceToCamera = ((dist - distance) * magnitude) / dist; } } } @@ -1463,7 +1496,7 @@ void set_camera_shake_by_distance(f32 x, f32 y, f32 z, f32 dist, f32 magnitude) void set_camera_shake(f32 magnitude) { s32 i; for (i = 0; i <= gNumberOfViewports; i++) { - gActiveCameraStack[i].camera.distanceToCamera = magnitude; + gCameraSegment[i].camera.distanceToCamera = magnitude; } } diff --git a/src/camera.h b/src/camera.h index 2c46fe4a..927b2654 100644 --- a/src/camera.h +++ b/src/camera.h @@ -71,7 +71,7 @@ typedef struct ScreenViewport { } ScreenViewport; typedef struct unk80068514_arg4 { - s16 unk0; + s16 textureCount; s16 unk2; s16 unk4; s16 unk6; @@ -113,9 +113,9 @@ void func_80068508(s32 arg0); ObjectSegment *get_active_camera_segment_no_cutscenes(void); ObjectSegment *get_active_camera_segment(void); ObjectSegment *get_cutscene_camera_segment(void); -Matrix *func_80069DA4(void); -MatrixS *func_80069DB0(void); -Matrix *func_80069DBC(void); +Matrix *get_projection_matrix_f32(void); +MatrixS *get_projection_matrix_s16(void); +Matrix *get_camera_matrix(void); f32 func_80069DC8(f32 x, f32 y, f32 z); void set_camera_shake_by_distance(f32 x, f32 y, f32 z, f32 dist, f32 magnitude); void set_camera_shake(f32 magnitude); @@ -124,10 +124,10 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Object *obj, unk80068514_arg4 *arg4, s32 flags); void camera_push_model_mtx(Gfx **arg0, MatrixS **arg1, ObjectTransform *arg2, f32 scale, f32 scaleY); void set_viewport_scissor(Gfx **dlist); -void func_80069A40(Gfx **dlist); +void apply_matrix_from_stack(Gfx **dlist); void copy_viewports_to_stack(void); -void func_80069790(Gfx **dlist, MatrixS **mtx, Object_68 *obj68, s16 headAngle); -void func_80068FA8(Gfx **dlist, MatrixS **mtx, Object *arg2, Object *arg3, f32 shear); +void apply_head_turning_matrix(Gfx **dlist, MatrixS **mtx, Object_68 *obj68, s16 headAngle); +void apply_object_shear_matrix(Gfx **dlist, MatrixS **mtx, Object *arg2, Object *arg3, f32 shear); // Non Matching void func_80065EA0(void); diff --git a/src/game.c b/src/game.c index 3f2232ba..0177c248 100644 --- a/src/game.c +++ b/src/game.c @@ -608,6 +608,9 @@ void func_8006BD10(f32 arg0) { } } +/** + * Return the current map ID. +*/ s32 get_current_map_id(void) { return gMapId; } @@ -629,7 +632,6 @@ LevelHeader *get_current_level_header(void) { /** * Returns the amount of level headers there are in the game. - * Goes unused. */ UNUSED u8 get_total_level_header_count(void) { return gNumberOfLevelHeaders - 1; diff --git a/src/memory.c b/src/memory.c index 9829bec3..6965a05a 100644 --- a/src/memory.c +++ b/src/memory.c @@ -8,17 +8,16 @@ /************ .bss ************/ -MemoryPool gMemoryPools[4]; // Only two are used. - #ifndef _ALIGN16 #define _ALIGN16(a) (((u32) (a) & ~0xF) + 0x10) #endif +MemoryPool gMemoryPools[4]; // Only two are used. s32 gNumberOfMemoryPools; UNUSED s32 D_801235C4; FreeQueueSlot gFreeQueue[256]; s32 gFreeQueueCount; -s32 gFreeQueueState; //Official Name: mmDelay +s32 gFreeQueueTimer; //Official Name: mmDelay extern MemoryPoolSlot gMainMemoryPool; @@ -232,7 +231,7 @@ void *allocate_at_address_in_main_pool(s32 size, u8 *address, u32 colorTag) { */ void set_free_queue_state(s32 state) { s32 *flags = clear_status_register_flags(); - gFreeQueueState = state; + gFreeQueueTimer = state; if (state == 0) { // flush free queue if state is 0. while (gFreeQueueCount > 0) { free_slot_containing_address(gFreeQueue[--gFreeQueueCount].dataAddress); @@ -248,7 +247,7 @@ void set_free_queue_state(s32 state) { */ void free_from_memory_pool(void *data) { s32 *flags = clear_status_register_flags(); - if (gFreeQueueState == 0) { + if (gFreeQueueTimer == 0) { free_slot_containing_address(data); } else { add_to_free_queue(data); @@ -267,11 +266,11 @@ void clear_free_queue(void) { flags = clear_status_register_flags(); for (i = 0; i < gFreeQueueCount;) { - gFreeQueue[i].unk4--; - if (gFreeQueue[i].unk4 == 0) { + gFreeQueue[i].freeTimer--; + if (gFreeQueue[i].freeTimer == 0) { free_slot_containing_address(gFreeQueue[i].dataAddress); gFreeQueue[i].dataAddress = gFreeQueue[gFreeQueueCount - 1].dataAddress; - gFreeQueue[i].unk4 = gFreeQueue[gFreeQueueCount - 1].unk4; + gFreeQueue[i].freeTimer = gFreeQueue[gFreeQueueCount - 1].freeTimer; gFreeQueueCount--; } else { stubbed_printf("\n*** mm Error *** ---> Can't free ram at this location: %x\n", gFreeQueue[i].dataAddress); @@ -351,7 +350,7 @@ UNUSED const char D_800E7438[] = "\n*** mm Error *** ---> Can't unfix the specif */ void add_to_free_queue(void *dataAddress) { gFreeQueue[gFreeQueueCount].dataAddress = dataAddress; - gFreeQueue[gFreeQueueCount].unk4 = gFreeQueueState; + gFreeQueue[gFreeQueueCount].freeTimer = gFreeQueueTimer; gFreeQueueCount++; } diff --git a/src/memory.h b/src/memory.h index a5ca1338..f2b5fd38 100644 --- a/src/memory.h +++ b/src/memory.h @@ -59,7 +59,7 @@ typedef struct MemoryPool { /* Size: 0x8 bytes */ typedef struct FreeQueueSlot { void *dataAddress; - u8 unk4; //FreeQueueState? + u8 freeTimer; } FreeQueueSlot; /* Unknown size */ diff --git a/src/menu.c b/src/menu.c index 08090bc1..14b6bfac 100644 --- a/src/menu.c +++ b/src/menu.c @@ -49,10 +49,10 @@ char **gTTSaveGhostPakErrorText; MatrixS *sMenuCurrHudMat; Vertex *sMenuCurrHudVerts; TriangleList *sMenuCurrHudTris; -unk801263C0 D_801263B4; +unk801263C0 gMenuSelectedCharacter; unk801263C0 D_801263B8; s32 gOptionBlinkTimer; -unk801263C0 D_801263C0; +unk801263C0 gMenuCurrentCharacter; s32 gIgnorePlayerInputTime; // A set amount of time to ignore player input. UNUSED s32 sUnused_801263C8; // Set to 0 in menu_init, and never again. @@ -62,7 +62,7 @@ s32 D_801263D0; //Compared for equality to gTrackIdForPreview s8 gActivePlayersArray[4]; s32 gOpacityDecayTimer; s8 D_801263DC[4]; -s32 D_801263E0; +s32 gMenuOptionCount; s32 D_801263E4; s8 gPlayersCharacterArray[8]; // -1 = Non active player, or character id if >= 0 s8 gCharacterIdSlots[8]; @@ -91,7 +91,7 @@ f32 sBootScreenTimer; s8 gControllersXAxisDelay[4]; s8 gControllersYAxisDelay[4]; s8 gControllersXAxisDirection[4]; // X axis (-1 = left, 1 = right) for controller -MenuElement *D_80126460; +MenuElement *gGameSelectElements; s8 gControllersYAxisDirection[4]; // Y axis (-1 = down, 1 = up) for controller s8 gControllersXAxis[4]; s8 gControllersYAxis[4]; @@ -141,7 +141,7 @@ s8 D_80126540; s8 D_80126541; s32 D_80126544; s32 gMultiplayerSelectedNumberOfRacersCopy; // Saved version gMultiplayerSelectedNumberOfRacers? -TextureHeader *D_80126550[128]; // lookup table? TEXTURES +TextureHeader *gMenuTextures[128]; // lookup table? TEXTURES u8 D_80126750[128]; // Seems to be a boolean for "This texture exists" for the above array. s32 D_801267D0; s32 D_801267D4; @@ -172,10 +172,10 @@ s32 D_80126854; s32 D_80126858; s32 D_8012685C; s32 D_80126860; -s32 D_80126864; +s32 gTitleDemoIndex; s16 gTitleDemoTimer; s32 gTitleRevealTimer; -f32 D_80126870; +f32 gTitleAudioCounter; s8 *sTitleScreenDemoIds; //Misc Asset 66 - title_screen_demo_ids.bin - 12 or 13 values. s32 D_80126878[24]; f32 D_801268D8; @@ -252,12 +252,12 @@ s32 D_80126BE0; s32 D_80126BE4; s32 D_80126BE8; f32 D_80126BEC; -char *D_80126BF0[8]; +char *gResultOptionText[8]; s32 D_80126C10; -s32 D_80126C14; -s32 D_80126C18; +s32 gResultOptionCount; +s32 gBootMenuTimer; char **D_80126C1C; -s32 D_80126C20; +s32 gBootMenuPhase; s32 D_80126C24; s8 D_80126C28; unk80080BC8 (*D_80126C2C)[2]; @@ -275,7 +275,7 @@ f32 D_80126C50; unk80126C54 D_80126C54; u8 D_80126C58[20]; s32 *D_80126C6C; -s32 D_80126C70; +s32 gNumOnscreenMagicCodes; char *D_80126C74; s32 D_80126C78; s32 D_80126C7C; @@ -906,7 +906,7 @@ unk800E0970 *D_800E0970 = NULL; s32 D_800E0974 = 0; char *gQMarkPtr = "?"; s32 D_800E097C = 0; -s32 D_800E0980 = 0; +s32 gTrackNameVoiceDelay = 0; s32 gMenuOptionCap = 0; s32 gMenuSubOption = 0; s32 D_800E098C = 0; //Player ID or controllerIndex maybe? @@ -957,21 +957,21 @@ s16 D_800E0A40[8] = { 0x0004, 0x0000, 0x0001, 0xFFFF, 0x0300, 0x0000, 0x0012, 0xFFFF }; -DrawTexture D_800E0A50[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0A60[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0A70[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0A80[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0A90[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0AA0[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0AB0[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0AC0[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0AD0[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture D_800E0AE0[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitKrunch[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitDiddy[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitDrumstick[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitBumper[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitBanjo[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitConker[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitTiptup[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitTT[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitPipsy[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture gMenuPortraitTimber[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -DrawTexture *D_800E0AF0[10] = { - D_800E0A50, D_800E0A60, D_800E0A70, D_800E0A80, - D_800E0A90, D_800E0AA0, D_800E0AB0, D_800E0AC0, - D_800E0AD0, D_800E0AE0 +DrawTexture *gRacerPortraits[10] = { + gMenuPortraitKrunch, gMenuPortraitDiddy, gMenuPortraitDrumstick, gMenuPortraitBumper, + gMenuPortraitBanjo, gMenuPortraitConker, gMenuPortraitTiptup, gMenuPortraitTT, + gMenuPortraitPipsy, gMenuPortraitTimber }; s16 D_800E0B18[74] = { @@ -1011,7 +1011,7 @@ char *gRacePlacementsArray[8] = { }; MenuElement D_800E0BEC[8] = { - { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 452, 166, 132, 166, -188, 166, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 560, 184, 240, 184, -80, 184, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 452, 180, 132, 180, -188, 180, 255, 192, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 1, { NULL }, 0, 0, 0, 0 }, @@ -1022,14 +1022,14 @@ MenuElement D_800E0BEC[8] = { }; MenuElement D_800E0CEC[11] = { - { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, - { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, + { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 481, 166, 161, 166, -159, 166, 0, 0, 0, 255, 128, ASSET_FONTS_FUNFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 479, 164, 159, 164, -161, 164, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 12, 0, { NULL }, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, @@ -1075,10 +1075,10 @@ s16 D_800E0FD8[6] = { 7, 0, 1, 2, 3, -1 }; -s32 D_800E0FE4 = 8; // Number of racers in trophy race? (1 to 8) +s32 gRankingPlayerCount = 8; // Number of racers in trophy race? (1 to 8) s32 gTrophyRaceWorldId = 0; s32 gTrophyRaceRound = 0; // Rounds 1 - 4 (as 0 - 3) -s32 D_800E0FF0 = 0; +s32 gPrevTrophyRaceRound = 0; // Unused? Not sure what this is. u32 D_800E0FF4[4] = { @@ -1107,42 +1107,42 @@ MenuElement D_800E1048[1][2] = { MenuElement D_800E1088[8][3] = { { - { 64, -192, 64, 48, 64, 288, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 64, -192, 64, 48, 64, 288, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 32, -192, 32, 48, 32, 288, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gFirstPlace }, 0, 0, 0, 0 }, { 130, -172, 130, 68, 130, 308, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[0] }, 0, 0, 0, 0 } }, { - { 64, -150, 64, 90, 64, 330, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 64, -150, 64, 90, 64, 330, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 32, -150, 32, 90, 32, 330, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gSecondPlace }, 0, 0, 0, 0 }, { 130, -130, 130, 110, 130, 350, 255, 192, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[1] }, 0, 0, 0, 0 } }, { - { 64, -108, 64, 132, 64, 372, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 64, -108, 64, 132, 64, 372, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 32, -108, 32, 132, 32, 372, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gThirdPlace }, 0, 0, 0, 0 }, { 130, -88, 130, 152, 130, 392, 255, 128, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[2] }, 0, 0, 0, 0 } }, { - { 64, -66, 64, 174, 64, 414, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 64, -66, 64, 174, 64, 414, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 32, -66, 32, 174, 32, 414, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gFourthPlace }, 0, 0, 0, 0 }, { 130, -46, 130, 194, 130, 434, 255, 64, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[3] }, 0, 0, 0, 0 } }, { - { 220, 288, 220, 48, 220, -192, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 220, 288, 220, 48, 220, -192, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 188, 288, 188, 48, 188, -192, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gFifthPlace }, 0, 0, 0, 0 }, { 286, 308, 286, 68, 286, -172, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[4] }, 0, 0, 0, 0 } }, { - { 220, 330, 220, 90, 220, -160, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 220, 330, 220, 90, 220, -160, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 188, 330, 188, 90, 188, -150, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gSixthPlace }, 0, 0, 0, 0 }, { 286, 350, 286, 110, 286, -130, 255, 192, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[5] }, 0, 0, 0, 0 } }, { - { 220, 372, 220, 132, 220, -108, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 220, 372, 220, 132, 220, -108, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 188, 372, 188, 132, 188, -108, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gSeventhPlace }, 0, 0, 0, 0 }, { 286, 392, 286, 152, 286, -88, 255, 128, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[6] }, 0, 0, 0, 0 } }, { - { 220, 414, 220, 174, 220, -66, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 220, 414, 220, 174, 220, -66, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 3, { &gMenuPortraitKrunch }, 0, 0, 0, 0 }, { 188, 414, 188, 174, 188, -66, 255, 255, 255, 0, 255, ASSET_FONTS_FUNFONT, 0, 0, { gEighthPlace }, 0, 0, 0, 0 }, { 286, 434, 286, 194, 286, -46, 255, 64, 255, 0, 255, ASSET_FONTS_FUNFONT, 4, 2, { &gTrophyRacePointsArray[7] }, 0, 0, 0, 0 } } @@ -1875,7 +1875,7 @@ void func_80081218(void) { gMenuText = allocate_from_main_pool_safe(1024 * sizeof(char *), COLOUR_TAG_WHITE); load_menu_text(LANGUAGE_ENGLISH); for (i = 0; i < 128; i++) { - D_80126550[i] = NULL; + gMenuTextures[i] = NULL; } } #else @@ -1944,7 +1944,7 @@ void menu_init(u32 menuId) { menu_adventure_track_init(); break; case MENU_RESULTS: - menu_11_init(); + menu_results_init(); break; case MENU_TROPHY_RACE_ROUND: menu_trophy_race_round_init(); @@ -2579,9 +2579,9 @@ void init_title_screen_variables(void) { set_magic_code_flags(CHEAT_CONTROL_TT); } if (sEepromSettings & 1) { - gIsInAdventureTwo = 1; + gIsInAdventureTwo = TRUE; } else { - gIsInAdventureTwo = 0; + gIsInAdventureTwo = FALSE; } if ((sEepromSettings & 0x2000000) == 0) { set_subtitles(0); @@ -2591,10 +2591,14 @@ void init_title_screen_variables(void) { GLOBAL_ASM("asm/non_matchings/menu/func_80083098.s") +/** + * Initialise the title screen menu. + * Load the title textures and reset player allocation. + * Set the current level and demo. +*/ void menu_title_screen_init(void) { s32 i; s32 numberOfPlayers; - UNUSED s8 *tempArr; D_800DF488 = 1; gOptionBlinkTimer = 0; @@ -2612,11 +2616,11 @@ void menu_title_screen_init(void) { } else { gTitleRevealTimer = 1; } - D_80126870 = 0; - D_801263E0 = 0; + gTitleAudioCounter = 0; + gMenuOptionCount = 0; func_8009C674(sGameTitleTileTextures); for (i = 0; i < 11; i++) { - sGameTitleTileOffsets[i].texture = D_80126550[sGameTitleTileTextures[i]]; + sGameTitleTileOffsets[i].texture = gMenuTextures[sGameTitleTileTextures[i]]; } set_music_player_voice_limit(27); func_800660C0(); @@ -2624,15 +2628,15 @@ void menu_title_screen_init(void) { load_font(ASSET_FONTS_BIGFONT); reset_sound_volume(FALSE); set_time_trial_enabled(FALSE); - D_80126864 = 0; - sTitleScreenDemoIds = (s8 *)get_misc_asset(MISC_ASSET_UNK42); - numberOfPlayers = sTitleScreenDemoIds[1]; + gTitleDemoIndex = 0; + sTitleScreenDemoIds = (s8 *) get_misc_asset(MISC_ASSET_TITLE_DEMOS); + numberOfPlayers = sTitleScreenDemoIds[DEMO_PLAYER_COUNT]; gTitleDemoTimer = 0; if (numberOfPlayers == -2) { numberOfPlayers = 0; gTitleDemoTimer = 600; } - load_level_for_menu(sTitleScreenDemoIds[0], numberOfPlayers, sTitleScreenDemoIds[2]); + load_level_for_menu(sTitleScreenDemoIds[DEMO_LEVEL_ID], numberOfPlayers, sTitleScreenDemoIds[DEMO_CUTSCENE_ID]); D_801268D8 = 0; D_801268E0 = 0; D_801268DC = 0; @@ -2641,7 +2645,11 @@ void menu_title_screen_init(void) { gIsInTracksMode = FALSE; } -void func_8008377C(UNUSED s32 updateRate, f32 arg1) { +/** + * Scale and render the game title on the screen based on the reveal timer. + * Also render the selection options. +*/ +void render_title_screen(UNUSED s32 updateRate, f32 updateRateF) { UNUSED u32 foo[2]; s32 alpha; f32 scale; @@ -2679,43 +2687,47 @@ void func_8008377C(UNUSED s32 updateRate, f32 arg1) { } } } else { - if (sTitleScreenDemoIds[D_80126864] == sTitleScreenDemoIds[0]) { - func_80083098(arg1); + if (sTitleScreenDemoIds[gTitleDemoIndex] == sTitleScreenDemoIds[0]) { + func_80083098(updateRateF); } } } +/** + * Handle the countdown when the title screen starts to show the logo coming in. + * Fade music to make voice clips more audible. +*/ s32 menu_title_screen_loop(s32 updateRate) { UNUSED s32 temp_v0_5; s32 sp28; s8 *demo; s32 contrIndex; - f32 sp1C; + f32 updateRateF; ObjectSegment* sp18; - s8 var_a1; + s8 playerCount; sp18 = get_active_camera_segment(); gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; func_8008E4EC(); if (osTvType == TV_TYPE_PAL) { - sp1C = (f32) updateRate / 50.0f; + updateRateF = (f32) updateRate / 50.0f; } else { - sp1C = (f32) updateRate / 60.0f; + updateRateF = (f32) updateRate / 60.0f; } if (gMenuDelay < 20) { - func_8008377C(updateRate, sp1C); + render_title_screen(updateRate, updateRateF); } - if (gMenuDelay != 0) { + if (gMenuDelay) { gMenuDelay += updateRate; } - if (sTitleScreenDemoIds[D_80126864] == sTitleScreenDemoIds[0]) { + if (sTitleScreenDemoIds[gTitleDemoIndex] == sTitleScreenDemoIds[0]) { gOpacityDecayTimer += updateRate; } sp28 = 0; if (gTitleDemoTimer > 0) { gTitleDemoTimer -= updateRate; - if ((gTitleDemoTimer < 60) && ((gTitleDemoTimer + updateRate) >= 60)) { - set_music_fade_timer(-0x300); + if (gTitleDemoTimer < 60 && gTitleDemoTimer + updateRate >= 60) { + set_music_fade_timer(-768); sp28 = 0; transition_begin(&D_800E1E08); } @@ -2725,25 +2737,25 @@ s32 menu_title_screen_loop(s32 updateRate) { } else { gTitleDemoTimer = 0; } - if ((gMenuDelay == 0) && (func_800214C4() || sp28)) { - if(gTitleDemoTimer){} // Fakematch - D_80126864 += 3; - demo = &sTitleScreenDemoIds[D_80126864]; + if (gMenuDelay == 0 && (func_800214C4() || sp28)) { + if (gTitleDemoTimer){} // Fakematch + gTitleDemoIndex += DEMO_INDEX_SIZE; + demo = &sTitleScreenDemoIds[gTitleDemoIndex]; if (demo[0] == -1) { - D_80126864 = 0; - demo = &sTitleScreenDemoIds[D_80126864]; + gTitleDemoIndex = 0; + demo = &sTitleScreenDemoIds[gTitleDemoIndex]; } if (gTitleRevealTimer == 0) { gTitleRevealTimer = 1; } - var_a1 = demo[1]; + playerCount = demo[DEMO_PLAYER_COUNT]; gTitleDemoTimer = 0; - if (var_a1 == -2) { - var_a1 = 0; + if (playerCount == -2) { + playerCount = 0; gTitleDemoTimer = 1500; } - load_level_for_menu(demo[0], var_a1, demo[2]); - if (sTitleScreenDemoIds[D_80126864] == sTitleScreenDemoIds[0]) { + load_level_for_menu(demo[DEMO_LEVEL_ID], playerCount, demo[DEMO_CUTSCENE_ID]); + if (sTitleScreenDemoIds[gTitleDemoIndex] == sTitleScreenDemoIds[DEMO_LEVEL_ID]) { D_801268D8 = 0.0f; D_801268E0 = 0; D_801268DC = 0; @@ -2763,25 +2775,25 @@ s32 menu_title_screen_loop(s32 updateRate) { play_sound_global(SOUND_EXPLOSION, 0); } } else { - if (D_80126870 < 6.0f) { - D_80126870 += sp1C; - if ((D_80126870 > 0.67f) && (D_801263E0 == 0)) { + if (gTitleAudioCounter < 6.0f) { + gTitleAudioCounter += updateRateF; + if (gTitleAudioCounter > 0.67f && gMenuOptionCount == 0) { play_sound_global(SOUND_VOICE_TT_DIDDY_KONG_RACING, 0); - D_801263E0 = 1; - } else if ((D_80126870 > 2.83f) && (D_801263E0 == 1)) { + gMenuOptionCount = 1; + } else if ((gTitleAudioCounter > 2.83f) && (gMenuOptionCount == 1)) { play_sound_global(SOUND_VOICE_TT_PRESS_START, 0); - D_801263E0 = 2; + gMenuOptionCount = 2; } } } } - if (D_80126870 > 0.0f) { - if (D_80126870 < 0.5f) { - set_relative_volume_for_music((s32) ((f32) sMenuMusicVolume * (1.0f - D_80126870))); - } else if (D_80126870 < 4.5f) { + if (gTitleAudioCounter > 0.0f) { + if (gTitleAudioCounter < 0.5f) { + set_relative_volume_for_music((s32) ((f32) sMenuMusicVolume * (1.0f - gTitleAudioCounter))); + } else if (gTitleAudioCounter < 4.5f) { set_relative_volume_for_music(((s32) sMenuMusicVolume >> 1)); - } else if (D_80126870 < 5.0f) { - set_relative_volume_for_music((s32) ((f32) sMenuMusicVolume * (D_80126870 - 4.0f))); + } else if (gTitleAudioCounter < 5.0f) { + set_relative_volume_for_music((s32) ((f32) sMenuMusicVolume * (gTitleAudioCounter - 4.0f))); } else { set_relative_volume_for_music(*((s8*)&sMenuMusicVolume + 3)); } @@ -2847,6 +2859,10 @@ void title_screen_exit(void) { reset_sound_volume(TRUE); } +/** + * Initialise the root options menu. + * Loads required fonts and sets the background music. +*/ void menu_options_init(void) { gOptionBlinkTimer = 0; gMenuDelay = 0; @@ -2893,12 +2909,15 @@ void render_options_menu_ui(UNUSED s32 updateRate) { } } +/** + * Draw the text list and accept input for going to specific option menus. +*/ s32 menu_options_loop(s32 updateRate) { s32 buttonsPressed; s32 i; UNUSED s32 pad0; - s32 analogX; - s32 analogY; + s32 analogueX; + s32 analogueY; UNUSED s32 pad1[4]; gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; @@ -2914,15 +2933,15 @@ s32 menu_options_loop(s32 updateRate) { render_options_menu_ui(updateRate); } buttonsPressed = 0; - analogX = 0; - analogY = 0; + analogueX = 0; + analogueY = 0; if (gIgnorePlayerInputTime == 0 && gMenuDelay == 0) { s8 *xAxisPtr; s8 *yAxisPtr; for (i = 0, xAxisPtr = gControllersXAxisDirection, yAxisPtr = gControllersYAxisDirection; i < MAXCONTROLLERS; i++) { buttonsPressed |= get_buttons_pressed_from_player(i); - analogX += *(xAxisPtr++); - analogY += *(yAxisPtr++); + analogueX += *(xAxisPtr++); + analogueY += *(yAxisPtr++); } } if ((buttonsPressed & B_BUTTON) || ((buttonsPressed & (A_BUTTON | START_BUTTON)) && D_800DF460 == 5)) { @@ -2936,7 +2955,7 @@ s32 menu_options_loop(s32 updateRate) { gMenuDelay = 31; play_sound_global(SOUND_SELECT2, NULL); - } else if (D_800DF460 == 0 && analogX != 0) { + } else if (D_800DF460 == 0 && analogueX != 0) { switch ((u64) get_language()) { case LANGUAGE_ENGLISH: set_language(LANGUAGE_FRENCH); @@ -2946,7 +2965,7 @@ s32 menu_options_loop(s32 updateRate) { break; } play_sound_global(SOUND_MENU_PICK2, NULL); - } else if (D_800DF460 == 1 && analogX != 0) { + } else if (D_800DF460 == 1 && analogueX != 0) { if (sEepromSettings & 0x2000000) { //0x2000000 SUBTITLES ENABLED? play_sound_global(SOUND_MENU_PICK2, NULL); @@ -2961,13 +2980,13 @@ s32 menu_options_loop(s32 updateRate) { } } else { s32 prev_D_800DF460 = D_800DF460; - if (analogY < 0) { + if (analogueY < 0) { D_800DF460++; if (D_800DF460 >= 6) { D_800DF460 = 5; } } - if (analogY > 0) { + if (analogueY > 0) { D_800DF460--; if (D_800DF460 < 0) { D_800DF460 = 0; @@ -3011,6 +3030,11 @@ void unload_big_font_1(void) { unload_font(ASSET_FONTS_BIGFONT); } +/** + * Initialise the audio options menu. + * Loads necessary textures and fonts. + * Gets global audio volume and checks if the jukebox cheat is active to set the lower Y bounds. +*/ void menu_audio_options_init(void) { gOptionsMenuItemIndex = 0; gOptionBlinkTimer = 0; @@ -3019,20 +3043,20 @@ void menu_audio_options_init(void) { gOpacityDecayTimer = -1; func_8009C674(gOptionMenuTextures); allocate_menu_images(&gOptionMenuTextures[6]); - func_8008E4B0(); + assign_menu_arrow_textures(); transition_begin(&sMenuTransitionFadeOut); func_8007FFEC(2); gMusicVolumeSliderValue = musicGetVolSliderPercentage(); gSfxVolumeSliderValue = get_sfx_volume_slider(); if (gActiveMagicCodes & CHEAT_MUSIC_MENU) { // Check if "JUKEBOX" cheat is active gAudioMenuStrings[6].unkC = gMusicTestString; - gAudioMenuStrings[3].unk2 = 0xD4; - set_music_player_voice_limit(0x20); - D_801263E0 = 5; + gAudioMenuStrings[3].unk2 = 212; + set_music_player_voice_limit(32); + gMenuOptionCount = 5; } else { gAudioMenuStrings[6].unkC = NULL; - gAudioMenuStrings[3].unk2 = 0xC0; - D_801263E0 = 4; + gAudioMenuStrings[3].unk2 = 192; + gMenuOptionCount = 4; } load_font(ASSET_FONTS_BIGFONT); } @@ -3088,14 +3112,14 @@ s32 menu_audio_options_loop(s32 arg0) { } } - if (((buttonInputs & (A_BUTTON | START_BUTTON)) && (D_801263E0 == gOptionsMenuItemIndex + 1)) || (buttonInputs & B_BUTTON)) { + if (((buttonInputs & (A_BUTTON | START_BUTTON)) && (gMenuOptionCount == gOptionsMenuItemIndex + 1)) || (buttonInputs & B_BUTTON)) { gMenuDelay = -1; transition_begin(&sMenuTransitionFadeIn); if (gOpacityDecayTimer >= 0) { set_music_fade_timer(-0x80); } sp30 = 3; - } else if (contY < 0 && gOptionsMenuItemIndex < D_801263E0 - 1) { + } else if (contY < 0 && gOptionsMenuItemIndex < gMenuOptionCount - 1) { gOptionsMenuItemIndex++; sp30 = 1; } else if (contY > 0 && gOptionsMenuItemIndex > 0) { @@ -3146,7 +3170,7 @@ s32 menu_audio_options_loop(s32 arg0) { } } } - } else if (D_801263E0 >= 5 && gOptionsMenuItemIndex == 3) { + } else if (gMenuOptionCount >= 5 && gOptionsMenuItemIndex == 3) { if (contX < 0 && D_800DFABC > 0) { D_800DFABC--; sp30 = 1; @@ -3210,10 +3234,10 @@ void menu_save_options_init(void) { gOptionsMenuItemIndex = 0; gOptionBlinkTimer = 0; gMenuDelay = 0; - D_801263E0 = 1; + gMenuOptionCount = 1; gOpacityDecayTimer = 0; - D_80126A64 = (u8 *)allocate_from_main_pool_safe(0x800, COLOUR_TAG_WHITE); - D_80126A0C = (unk800861C8 *)allocate_from_main_pool_safe(0xA00, COLOUR_TAG_WHITE); + D_80126A64 = (u8 *) allocate_from_main_pool_safe(0x800, COLOUR_TAG_WHITE); + D_80126A0C = (unk800861C8 *) allocate_from_main_pool_safe(0xA00, COLOUR_TAG_WHITE); D_80126A04 = &D_80126A0C[80]; //0x500 bytes forward D_80126A08 = 0; D_80126BD4 = 0; @@ -3225,13 +3249,13 @@ void menu_save_options_init(void) { allocate_menu_images(D_800DFCAC); func_8007FFEC(0xA); load_font(ASSET_FONTS_BIGFONT); - D_800DFC10[0].texture = D_80126550[TEXTURE_ICON_SAVE_N64]; - D_800DFC20[0].texture = D_80126550[TEXTURE_ICON_SAVE_TT]; - D_800DFC30[0].texture = D_80126550[TEXTURE_ICON_SAVE_GHOSTS]; - D_800DFC40[0].texture = D_80126550[TEXTURE_ICON_SAVE_FILECABINET]; - D_800DFC50[0].texture = D_80126550[TEXTURE_ICON_SAVE_CPAK]; - D_800DFC60[0].texture = D_80126550[TEXTURE_ICON_SAVE_BIN]; - func_8008E4B0(); + D_800DFC10[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_N64]; + D_800DFC20[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_TT]; + D_800DFC30[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_GHOSTS]; + D_800DFC40[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_FILECABINET]; + D_800DFC50[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_CPAK]; + D_800DFC60[0].texture = gMenuTextures[TEXTURE_ICON_SAVE_BIN]; + assign_menu_arrow_textures(); mark_read_all_save_files(); transition_begin(&sMenuTransitionFadeOut); } @@ -3258,7 +3282,7 @@ void func_80085B9C(UNUSED s32 updateRate) { drawPleaseWait = FALSE; //Draw Please Wait drawOk = FALSE; //Draw "OK?" drawDialogueBox = FALSE; //Render Dialogue Box - switch (D_801263E0 & 7) { + switch (gMenuOptionCount & 7) { case 0: break; case 1: @@ -3284,7 +3308,7 @@ void func_80085B9C(UNUSED s32 updateRate) { drawPleaseWait = TRUE; break; } - if (D_801263E0 & 8) { + if (gMenuOptionCount & 8) { drawDialogueBox = TRUE; } set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); @@ -3439,7 +3463,7 @@ void func_80086A48(s32 arg0) { temp3 = temp - D_80126BDC; D_80126BDC += (0.1f * temp3); } - if (D_801263E0 > 0 && D_80126A00 > 0) { + if (gMenuOptionCount > 0 && D_80126A00 > 0) { temp4 = temp2 - D_80126BEC; D_80126BEC += (0.1f * temp4); } @@ -3455,7 +3479,7 @@ s32 func_800874D0(s32 buttonsPressed, s32 arg1) { ret = 0; if (buttonsPressed & B_BUTTON) { - D_801263E0 = 0; + gMenuOptionCount = 0; if (D_80126A10 != D_80126A14) { func_800871D8(8); } else { @@ -3464,7 +3488,7 @@ s32 func_800874D0(s32 buttonsPressed, s32 arg1) { } } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { play_sound_global(SOUND_SELECT2, NULL); - D_801263E0 = 4; + gMenuOptionCount = 4; } else if ((arg1 < 0) && (D_80126BD4 > 0)) { play_sound_global(SOUND_MENU_PICK2, NULL); D_80126BD4--; @@ -3478,10 +3502,10 @@ s32 func_800874D0(s32 buttonsPressed, s32 arg1) { s32 func_800875E4(s32 buttonsPressed, s32 arg1) { if (buttonsPressed & B_BUTTON) { play_sound_global(SOUND_MENU_BACK3, NULL); - D_801263E0 = 3; + gMenuOptionCount = 3; } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { play_sound_global(SOUND_SELECT2, NULL); - D_801263E0 = 6; + gMenuOptionCount = 6; } else if ((arg1 < 0) && (D_80126BE4 > 0)) { play_sound_global(SOUND_MENU_PICK2, NULL); D_80126BE4--; @@ -3496,10 +3520,10 @@ s32 func_800875E4(s32 buttonsPressed, s32 arg1) { s32 func_800876CC(s32 buttonsPressed, UNUSED s32 arg1) { if (buttonsPressed & B_BUTTON) { play_sound_global(SOUND_MENU_BACK3, NULL); - D_801263E0 = 5; + gMenuOptionCount = 5; } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { play_sound_global(SOUND_SELECT2, NULL); - D_801263E0 = 7; + gMenuOptionCount = 7; gOpacityDecayTimer = 0; } @@ -3523,10 +3547,10 @@ s32 menu_save_options_loop(s32 updateRate) { gMenuDelay -= updateRate; } } - if ((D_801263E0 & 7) >= 2) { + if ((gMenuOptionCount & 7) >= 2) { func_80086A48(updateRate); } - if ((gMenuDelay >= -19) && (gMenuDelay < 20)) { + if (gMenuDelay > -20 && gMenuDelay < 20) { func_80085B9C(updateRate); } if (gMenuDelay != 0) { @@ -3549,17 +3573,17 @@ s32 menu_save_options_loop(s32 updateRate) { buttonsPressed |= get_buttons_pressed_from_player(i); } } - if (D_801263E0 & 8) { + if (gMenuOptionCount & 8) { gMenuDelay = func_80087734(buttonsPressed, yAxis); } else { - switch (D_801263E0) { + switch (gMenuOptionCount) { case 0: gMenuDelay = -1; break; case 1: gOpacityDecayTimer++; if (gOpacityDecayTimer >= 11) { - D_801263E0 = 2; + gMenuOptionCount = 2; } break; case 2: @@ -3569,7 +3593,7 @@ s32 menu_save_options_loop(s32 updateRate) { if (result != 0) { func_800871D8(result); } else { - D_801263E0 = 3; + gMenuOptionCount = 3; } break; case 3: @@ -3582,7 +3606,7 @@ s32 menu_save_options_loop(s32 updateRate) { if (result != 0) { func_800871D8(result); } else { - D_801263E0 = 5; + gMenuOptionCount = 5; } break; case 5: @@ -3599,7 +3623,7 @@ s32 menu_save_options_loop(s32 updateRate) { func_800871D8(result); } else { gOpacityDecayTimer = 6; - D_801263E0 = 1; + gMenuOptionCount = 1; } } break; @@ -3812,6 +3836,10 @@ PakError check_for_controller_pak_errors(void) { return sControllerPakError; } +/** + * Initialise boot screen menu. + * Load the title textures into RAM. +*/ void menu_boot_init(void) { s32 i; @@ -3821,12 +3849,12 @@ void menu_boot_init(void) { // Sets up the 11 texture pointers for the "Diddy Kong Racing" logo. for (i = 0; i < 11; i++) { - sGameTitleTileOffsets[i].texture = D_80126550[sGameTitleTileTextures[i]]; + sGameTitleTileOffsets[i].texture = gMenuTextures[sGameTitleTileTextures[i]]; } // Reset variables for menu_boot_loop() - D_80126C20 = 0; // D_80126C20 is the current state of the boot screen. Either 0, 1, or 2. - D_80126C18 = 0; // D_80126C18 is a timer for the boot screen, counts up to 0x8C frames. + gBootMenuPhase = 0; + gBootMenuTimer = 0; } s32 menu_boot_loop(s32 updateRate) { @@ -3843,29 +3871,29 @@ s32 menu_boot_loop(s32 updateRate) { temp = y; - switch (D_80126C20) { + switch (gBootMenuPhase) { case 0: - if (D_80126C18 < 32) { - D_80126C18 += updateRate; - if (D_80126C18 >= 33) { - D_80126C18 = 32; + if (gBootMenuTimer < 32) { + gBootMenuTimer += updateRate; + if (gBootMenuTimer >= 33) { + gBootMenuTimer = 32; } } else { func_800887E8(); - D_80126C20 = 1; + gBootMenuPhase = 1; } break; case 1: - if (D_80126C18 < 140) { - D_80126C18 += updateRate; - if (D_80126C18 >= 141) { - D_80126C18 = 140; + if (gBootMenuTimer < 140) { + gBootMenuTimer += updateRate; + if (gBootMenuTimer >= 141) { + gBootMenuTimer = 140; } } else { func_800887C4(); - D_80126C20 = 2; + gBootMenuPhase = 2; } - if (D_80126C18 >= 129) { + if (gBootMenuTimer >= 129) { temp = 300; } break; @@ -3906,7 +3934,7 @@ void func_800887E8(void) { } D_80126C10 = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; gOptionBlinkTimer = 0; gMenuOption = -1; load_menu_text(get_language()); @@ -3921,7 +3949,7 @@ void func_800887E8(void) { D_800DF460 = 0; gOpacityDecayTimer = 0; func_8009C6D4(63); - func_8008E4B0(); + assign_menu_arrow_textures(); if (osTvType == TV_TYPE_PAL) { sControllerPakMenuNumberOfRows = 8; } else { @@ -4021,7 +4049,7 @@ void render_controller_pak_ui(UNUSED s32 updateRate) { } draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[ASSET_MENU_TEXT_EXIT], ALIGN_TOP_CENTER); //EXIT } - if ((D_801263E0 != 0) && (D_80126C10 == 0)) { + if ((gMenuOptionCount != 0) && (D_80126C10 == 0)) { if (osTvType == TV_TYPE_PAL) { yPos = 134; } else { @@ -4036,7 +4064,7 @@ void render_controller_pak_ui(UNUSED s32 updateRate) { for (i = 0; i <= 2; i++) { if (i == 0) { set_current_text_colour(6, 255, 0, 255, 64, 255); - } else if (i == D_801263E0) { + } else if (i == gMenuOptionCount) { set_current_text_colour(6, 255, 255, 255, alpha, 255); } else { set_current_text_colour(6, 255, 255, 255, 0, 255); @@ -4104,7 +4132,7 @@ s32 menu_controller_pak_loop(s32 updateRate) { } } } else { - if (D_801263E0 != 0) { + if (gMenuOptionCount != 0) { if (D_80126C10 != 0) { D_80126C10--; if (D_80126C10 == 0) { @@ -4122,23 +4150,23 @@ s32 menu_controller_pak_loop(s32 updateRate) { transition_begin(&sMenuTransitionFadeIn); } } - D_801263E0 = 0; + gMenuOptionCount = 0; } } else if (pressedButtons & B_BUTTON) { playCancelSound = TRUE; - D_801263E0 = 0; + gMenuOptionCount = 0; } else if (pressedButtons & (A_BUTTON | START_BUTTON)) { - if (D_801263E0 == 1) { + if (gMenuOptionCount == 1) { D_80126C10 = 3; } else { playCancelSound = TRUE; - D_801263E0 = 0; + gMenuOptionCount = 0; } - } else if (yStick > 0 && D_801263E0 >= 2) { - D_801263E0 = 1; + } else if (yStick > 0 && gMenuOptionCount >= 2) { + gMenuOptionCount = 1; playMoveSound = TRUE; - } else if (yStick < 0 && D_801263E0 < 2) { - D_801263E0 = 2; + } else if (yStick < 0 && gMenuOptionCount < 2) { + gMenuOptionCount = 2; playMoveSound = TRUE; } } else if ((pressedButtons & B_BUTTON) || (D_800DF460 == 16 && (pressedButtons & (A_BUTTON | START_BUTTON)))) { @@ -4166,7 +4194,7 @@ s32 menu_controller_pak_loop(s32 updateRate) { //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; + gMenuOptionCount = 2; playSelectedSound = TRUE; } else { //If it's not, just play the "back" sound @@ -4241,7 +4269,7 @@ void menu_magic_codes_init(void) { gOptionBlinkTimer = 0; gMenuDelay = 0; gOpacityDecayTimer = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; transition_begin(&sMenuTransitionFadeOut); set_current_dialogue_box_coords(7, 50, 50, 270, 132); set_current_dialogue_background_colour(7, 0, 0, 0, 128); @@ -4312,7 +4340,7 @@ void render_magic_codes_ui(s32 arg0) { for (i = 0; gMagicCodeMenuStrings[i] != NULL; i++) { alpha = 0; - if (i == gOptionsMenuItemIndex && D_801263E0 == 0) { + if (i == gOptionsMenuItemIndex && gMenuOptionCount == 0) { alpha = temp; } set_text_colour(255, 255, 255, alpha, 255); @@ -4334,7 +4362,7 @@ void render_magic_codes_ui(s32 arg0) { } else if (gOptionsMenuItemIndex == 6) { draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[ASSET_MENU_TEXT_ALLCODESDELETED], ALIGN_MIDDLE_CENTER); //"All cheats have been deleted" } - if (D_801263E0 != 0) { + if (gMenuOptionCount != 0) { yPos = SCREEN_HEIGHT_HALF; if (osTvType == TV_TYPE_PAL) { yPos = SCREEN_HEIGHT_HALF + 14; @@ -4350,7 +4378,7 @@ void render_magic_codes_ui(s32 arg0) { if (i == 0) { alpha = 64; green = 0; - } else if (i == D_801263E0) { + } else if (i == gMenuOptionCount) { alpha = temp; } set_current_text_colour(6, 255, green, 255, alpha, 255); @@ -4526,9 +4554,9 @@ s32 menu_magic_codes_loop(s32 updateRate) { if (gOpacityDecayTimer == 0 || buttonsPressed & (A_BUTTON | START_BUTTON)) { gOptionsMenuItemIndex = 1; } - } else if (D_801263E0 != 0) { + } else if (gMenuOptionCount != 0) { if (buttonsPressed & (A_BUTTON | START_BUTTON)) { - if (D_801263E0 == 1) { + if (gMenuOptionCount == 1) { gActiveMagicCodes = 0; gOptionsMenuItemIndex = 6; playSelectSound = TRUE; @@ -4537,16 +4565,16 @@ s32 menu_magic_codes_loop(s32 updateRate) { } else { playBackSound = TRUE; } - D_801263E0 = 0; + gMenuOptionCount = 0; } else if (buttonsPressed & B_BUTTON) { playBackSound = TRUE; - D_801263E0 = 0; - } else if (yDir < 0 && D_801263E0 == 1) { + gMenuOptionCount = 0; + } else if (yDir < 0 && gMenuOptionCount == 1) { playPickSound = TRUE; - D_801263E0 = 2; - } else if (yDir > 0 && D_801263E0 == 2) { + gMenuOptionCount = 2; + } else if (yDir > 0 && gMenuOptionCount == 2) { playPickSound = TRUE; - D_801263E0 = 1; + gMenuOptionCount = 1; } } else { prevValue = gOptionsMenuItemIndex; @@ -4576,7 +4604,7 @@ s32 menu_magic_codes_loop(s32 updateRate) { *D_80126C58 = 0; gOptionsMenuItemIndex = 5; } else if (gOptionsMenuItemIndex == 1) { - D_801263E0 = 2; + gMenuOptionCount = 2; } else if (gOptionsMenuItemIndex == 2) { menuDelay = 1; } @@ -4626,19 +4654,23 @@ void unload_big_font_2(void) { unload_font(ASSET_FONTS_BIGFONT); } +/** + * Initialise the magic list menu. + * Sets the max list height based on region, and loads the arrows for scrolling. +*/ void menu_magic_codes_list_init(void) { gOptionBlinkTimer = 0; gMenuDelay = 0; - D_801263E0 = 0; - gOptionsMenuItemIndex = (u16)0; + gMenuOptionCount = 0; + gOptionsMenuItemIndex = 0; load_font(ASSET_FONTS_BIGFONT); - func_8009C6D4(0x3F); - func_8008E4B0(); + func_8009C6D4(63); + assign_menu_arrow_textures(); transition_begin(&sMenuTransitionFadeOut); if (osTvType == TV_TYPE_PAL) { - D_80126C70 = 0xB; + gNumOnscreenMagicCodes = 11; } else { - D_80126C70 = 0xA; + gNumOnscreenMagicCodes = 10; } } @@ -4675,7 +4707,7 @@ void render_magic_codes_list_menu_text(s32 arg0) { } set_text_font(ASSET_FONTS_FUNFONT); set_text_colour(255, 255, 255, 0, 255); - for (i = D_801263E0; (i < D_801263E0 + D_80126C70) && (i < numOfUnlockedCheats); i++) { + for (i = gMenuOptionCount; (i < gMenuOptionCount + gNumOnscreenMagicCodes) && (i < numOfUnlockedCheats); i++) { if (i == gOptionsMenuItemIndex) { set_text_colour(255, 255, 255, alpha, 255); } @@ -4690,7 +4722,7 @@ void render_magic_codes_list_menu_text(s32 arg0) { } yPos += 16; } - if (i < D_801263E0 + D_80126C70) { + if (i < gMenuOptionCount + gNumOnscreenMagicCodes) { if (numOfUnlockedCheats == gOptionsMenuItemIndex) { set_text_colour(255, 255, 255, alpha, 255); } @@ -4785,10 +4817,10 @@ s32 menu_magic_codes_list_loop(s32 updateRate) { } } - if (gOptionsMenuItemIndex < D_801263E0) { - D_801263E0 = gOptionsMenuItemIndex; - } else if (gOptionsMenuItemIndex >= (D_801263E0 + D_80126C70)) { - D_801263E0 = (gOptionsMenuItemIndex - D_80126C70) + 1; + if (gOptionsMenuItemIndex < gMenuOptionCount) { + gMenuOptionCount = gOptionsMenuItemIndex; + } else if (gOptionsMenuItemIndex >= (gMenuOptionCount + gNumOnscreenMagicCodes)) { + gMenuOptionCount = (gOptionsMenuItemIndex - gNumOnscreenMagicCodes) + 1; } if (gOptionsMenuItemIndex != previousMenuItemIndex) { @@ -4915,10 +4947,14 @@ void set_active_player_index(s32 controllerIndex) { } } +/** + * Initialises the character select menu. Checks which characters are available and sets the vars used for selection. + * Sets up sound channels with the background music based on which characters are selected. +*/ void menu_character_select_init(void) { s32 breakTheLoop; s32 i; - u8 *temp; + u8 *channelVolumes; breakTheLoop = FALSE; initialise_player_ids(); @@ -4940,26 +4976,26 @@ void menu_character_select_init(void) { gMenuDelay = 0; gOptionBlinkTimer = 0; D_800DF484 = 0; - for (i = 0; (i < 4) && (!breakTheLoop); i++) { + for (i = 0; i < 4 && !breakTheLoop; i++) { if (gActivePlayersArray[i] != 0) { breakTheLoop = TRUE; - D_801263C0.unk0 = (*gCurrCharacterSelectData)[gPlayersCharacterArray[i]].voiceID; - D_801263C0.unk2 = 0x7F; - D_801263C0.unk1 = 1; + gMenuCurrentCharacter.channelIndex = (*gCurrCharacterSelectData)[gPlayersCharacterArray[i]].voiceID; + gMenuCurrentCharacter.unk2 = 0x7F; + gMenuCurrentCharacter.unk1 = 1; } } - D_801263B4.unk0 = -1; - D_801263B4.unk2 = 0; - D_801263B4.unk1 = 0; - D_801263B8.unk0 = -1; + gMenuSelectedCharacter.channelIndex = -1; + gMenuSelectedCharacter.unk2 = 0; + gMenuSelectedCharacter.unk1 = 0; + D_801263B8.channelIndex = -1; D_801263B8.unk2 = 0; D_801263B8.unk1 = 0; play_music(SEQUENCE_CHOOSE_YOUR_RACER); - for (i = 0; i < 10; i++) { - temp = D_800DFDB4[i]; - if (i != D_801263C0.unk0) { - func_80001114(temp[0]); - func_80001114(temp[1]); + for (i = 0; i < NUM_CHARACTERS; i++) { + channelVolumes = D_800DFDB4[i]; + if (i != gMenuCurrentCharacter.channelIndex) { + func_80001114(channelVolumes[0]); + func_80001114(channelVolumes[1]); } } func_80001114(6); @@ -5018,9 +5054,9 @@ void func_8008B358(void) { gPlayersCharacterArray[i] = var_a2; gActivePlayersArray[i] = 1; gNumberOfActivePlayers++; - D_801263C0.unk0 = (*gCurrCharacterSelectData)[gPlayersCharacterArray[i]].voiceID; - D_801263C0.unk2 = 0; - D_801263C0.unk1 = 20; + gMenuCurrentCharacter.channelIndex = (*gCurrCharacterSelectData)[gPlayersCharacterArray[i]].voiceID; + gMenuCurrentCharacter.unk2 = 0; + gMenuCurrentCharacter.unk1 = 20; play_sound_global(SOUND_SELECT2, NULL); } } @@ -5195,46 +5231,46 @@ void func_8008C128(void) { } void func_8008C168(s32 updateRate) { - if (D_801263C0.unk1 > 0) { - D_801263C0.unk1 = D_801263C0.unk1 - updateRate; - if (D_801263C0.unk1 <= 0) { - if (D_801263B8.unk0 >= 0) { - func_80001114(D_800DFDB4[D_801263B8.unk0][0]); - func_80001114(D_800DFDB4[0][D_801263B8.unk0 * 2 + 1]); + if (gMenuCurrentCharacter.unk1 > 0) { + gMenuCurrentCharacter.unk1 = gMenuCurrentCharacter.unk1 - updateRate; + if (gMenuCurrentCharacter.unk1 <= 0) { + if (D_801263B8.channelIndex >= 0) { + func_80001114(D_800DFDB4[D_801263B8.channelIndex][0]); + func_80001114(D_800DFDB4[0][D_801263B8.channelIndex * 2 + 1]); } - D_801263B8.unk0 = D_801263B4.unk0; - if (D_801263B4.unk0 >= 0) { - D_801263B8.unk2 = D_801263B4.unk2; + D_801263B8.channelIndex = gMenuSelectedCharacter.channelIndex; + if (gMenuSelectedCharacter.channelIndex >= 0) { + D_801263B8.unk2 = gMenuSelectedCharacter.unk2; } - D_801263B4.unk0 = D_801263C0.unk0; - if (D_801263B4.unk0 >= 0) { - D_801263B4.unk2 = D_801263C0.unk2; - func_80001170(D_800DFDB4[D_801263B4.unk0][0]); - func_80001170(D_800DFDB4[0][D_801263B4.unk0 * 2 + 1]); + gMenuSelectedCharacter.channelIndex = gMenuCurrentCharacter.channelIndex; + if (gMenuSelectedCharacter.channelIndex >= 0) { + gMenuSelectedCharacter.unk2 = gMenuCurrentCharacter.unk2; + func_80001170(D_800DFDB4[gMenuSelectedCharacter.channelIndex][0]); + func_80001170(D_800DFDB4[0][gMenuSelectedCharacter.channelIndex * 2 + 1]); } } } - if (D_801263B4.unk0 >= 0) { - D_801263B4.unk2 += updateRate * 4; - if (D_801263B4.unk2 > 127) { - D_801263B4.unk2 = 127; + if (gMenuSelectedCharacter.channelIndex >= 0) { + gMenuSelectedCharacter.unk2 += updateRate * 4; + if (gMenuSelectedCharacter.unk2 > 127) { + gMenuSelectedCharacter.unk2 = 127; } - func_80001268(D_800DFDB4[D_801263B4.unk0][0], D_801263B4.unk2); - func_80001268(D_800DFDB4[0][D_801263B4.unk0 * 2 + 1], D_801263B4.unk3); + func_80001268(D_800DFDB4[gMenuSelectedCharacter.channelIndex][0], gMenuSelectedCharacter.unk2); + func_80001268(D_800DFDB4[0][gMenuSelectedCharacter.channelIndex * 2 + 1], gMenuSelectedCharacter.unk3); } - if (D_801263B8.unk0 >= 0) { + if (D_801263B8.channelIndex >= 0) { D_801263B8.unk2 -= updateRate * 4; - if (D_801263B8.unk0 != D_801263B4.unk0) { + if (D_801263B8.channelIndex != gMenuSelectedCharacter.channelIndex) { if (D_801263B8.unk2 < 0) { - func_80001114(D_800DFDB4[D_801263B8.unk0][0]); - func_80001114(D_800DFDB4[0][D_801263B8.unk0 * 2 + 1]); + func_80001114(D_800DFDB4[D_801263B8.channelIndex][0]); + func_80001114(D_800DFDB4[0][D_801263B8.channelIndex * 2 + 1]); } else { - func_80001268(D_800DFDB4[D_801263B8.unk0][0], D_801263B8.unk2); - func_80001268(D_800DFDB4[0][D_801263B8.unk0 * 2 + 1], D_801263B8.unk3); + func_80001268(D_800DFDB4[D_801263B8.channelIndex][0], D_801263B8.unk2); + func_80001268(D_800DFDB4[0][D_801263B8.channelIndex * 2 + 1], D_801263B8.unk3); } } if (D_801263B8.unk2 < 0) { - D_801263B8.unk0 = -1; + D_801263B8.channelIndex = -1; } } } @@ -5283,24 +5319,28 @@ void unload_big_font_3(void) { unload_font(ASSET_FONTS_BIGFONT); } +/** + * Initialises the selection menu that contains the options for adventure one, two and tracks mode. + * Loads all save file data to determine whether to show adventure two. +*/ void menu_game_select_init(void) { s32 i; gMenuDelay = 0; gOptionBlinkTimer = 0; D_800DF460 = 0; - D_801263E0 = 2; + gMenuOptionCount = 2; transition_begin(&sMenuTransitionFadeOut); mark_read_all_save_files(); - func_8001B790(); + set_ghost_none(); gOpacityDecayTimer = 1; func_8009C6D4(0x43); func_8007FFEC(3); load_font(ASSET_FONTS_BIGFONT); play_music(SEQUENCE_CHOOSE_YOUR_RACER); - for (i = 0; i < 10; i++) { - if (i != D_801263B4.unk0) { + for (i = 0; i < NUM_CHARACTERS; i++) { + if (i != gMenuSelectedCharacter.channelIndex) { func_80001114(D_800DFDB4[i][0]); func_80001114(D_800DFDB4[i][1]); } @@ -5309,16 +5349,16 @@ void menu_game_select_init(void) { func_80001114(6); func_80000B18(); if (is_adventure_two_unlocked()) { - D_80126460 = gGameSelectTextElemsWithAdv2; - D_801263E0 = 2; + gGameSelectElements = gGameSelectTextElemsWithAdv2; + gMenuOptionCount = 2; } else { - D_80126460 = gGameSelectTextElemsNoAdv2; - D_801263E0 = 1; + gGameSelectElements = gGameSelectTextElemsNoAdv2; + gMenuOptionCount = 1; } - for (i = 0; i <= D_801263E0; i++) { + for (i = 0; i <= gMenuOptionCount; i++) { //Fakematch? What's the (i ^ 0)? - D_80126460[((i ^ 0) * 2) + 2].unk14_a.texture = D_80126550[TEXTURE_SURFACE_BUTTON_WOOD]; + gGameSelectElements[((i ^ 0) * 2) + 2].unk14_a.texture = gMenuTextures[TEXTURE_SURFACE_BUTTON_WOOD]; } } @@ -5335,13 +5375,13 @@ void func_8008C698(UNUSED s32 updateRate) { } set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); - for (i = 0; i <= D_801263E0; i++) { + for (i = 0; i <= gMenuOptionCount; i++) { filterAlpha = 0; if (i == D_800DF460) { filterAlpha = fade; } //Fakematch? What's the (i ^ 0)? - D_80126460[((i ^ 0) * 2) + 3].filterAlpha = filterAlpha; + gGameSelectElements[((i ^ 0) * 2) + 3].filterAlpha = filterAlpha; } if (osTvType == TV_TYPE_PAL) { @@ -5352,7 +5392,7 @@ void func_8008C698(UNUSED s32 updateRate) { D_800DF7A0 = 0; } - draw_menu_elements(1, D_80126460, 1.0f); + draw_menu_elements(1, gGameSelectElements, 1.0f); func_80080BC8(&sMenuCurrDisplayList); } } @@ -5382,7 +5422,7 @@ s32 menu_game_select_loop(s32 updateRate) { } if (gMenuDelay > 30) { func_8008CACC(); - if (D_800DF460 == D_801263E0) { + if (D_800DF460 == gMenuOptionCount) { func_80000B28(); gIsInTracksMode = TRUE; func_8006E5BC(); @@ -5420,7 +5460,7 @@ s32 menu_game_select_loop(s32 updateRate) { playerYDir += gControllersYAxisDirection[1]; } if (playerInputs & (A_BUTTON | START_BUTTON)) { - if (D_800DF460 == D_801263E0) { + if (D_800DF460 == gMenuOptionCount) { set_music_fade_timer(-0x80); } transition_begin(&sMenuTransitionFadeIn); @@ -5431,7 +5471,7 @@ s32 menu_game_select_loop(s32 updateRate) { gMenuDelay = -1; } else { if (playerYDir < 0) { - if (D_800DF460 < D_801263E0) { + if (D_800DF460 < gMenuOptionCount) { D_800DF460++; play_sound_global(SOUND_MENU_PICK2, NULL); } @@ -5455,12 +5495,16 @@ void func_8008CACC(void) { func_8009C508(0x43); } +/** + * Initialises the file selection menu. Loads the relevant textures for the menu. + * Sets the audio channels to match the selected character. +*/ void menu_file_select_init(void) { s32 i; - s32 numLevels; - s32 numWorlds; + UNUSED s32 numLevels; + UNUSED s32 numWorlds; - get_number_of_levels_and_worlds(&numLevels, &numWorlds); + get_number_of_levels_and_worlds(&numLevels, &numWorlds); // Unused func_8009C674(D_800E0398); allocate_menu_images(D_800E03A4); func_8007FFEC(6); @@ -5468,7 +5512,7 @@ void menu_file_select_init(void) { gOpacityDecayTimer = 1; gSaveFileIndex = 0; gMenuDelay = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; gOptionBlinkTimer = 0; D_80126484 = FALSE; D_80126488 = FALSE; @@ -5476,8 +5520,8 @@ void menu_file_select_init(void) { transition_begin(&sMenuTransitionFadeOut); load_font(ASSET_FONTS_BIGFONT); play_music(SEQUENCE_CHOOSE_YOUR_RACER); - for (i = 0; i < 10; i++) { - if (i != D_801263B4.unk0) { + for (i = 0; i < NUM_CHARACTERS; i++) { + if (i != gMenuSelectedCharacter.channelIndex) { func_80001114(D_800DFDB4[i][0]); func_80001114(D_800DFDB4[i][1]); } @@ -5539,7 +5583,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { color = 0x6A9073FF; } func_80080580(0, gFileSelectButtons[i].x - 0xA0, 0x78 - gFileSelectButtons[i].y, gFileSelectButtons[i].width, - gFileSelectButtons[i].height, gFileSelectButtons[i].borderWidth, gFileSelectButtons[i].borderHeight, color, D_80126550[TEXTURE_SURFACE_BUTTON_WOOD]); + gFileSelectButtons[i].height, gFileSelectButtons[i].borderWidth, gFileSelectButtons[i].borderHeight, color, gMenuTextures[TEXTURE_SURFACE_BUTTON_WOOD]); } func_80080BC8(&sMenuCurrDisplayList); if (gOpacityDecayTimer == 0) { @@ -5589,7 +5633,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { } } else if (D_80126488 != FALSE && i == gSaveFileIndex3) { s2 = TRUE; - } else if (D_801263E0 == 0 && i == gSaveFileIndex) { + } else if (gMenuOptionCount == 0 && i == gSaveFileIndex) { s2 = TRUE; } if (s2) { @@ -5636,11 +5680,11 @@ void render_file_select_menu(UNUSED s32 updateRate) { return; } if (D_80126CC0 == 0) { - if (D_801263E0 == 1) { + if (gMenuOptionCount == 1) { set_text_colour(255, 255, 255, phi_v0_2, 255); } draw_text(&sMenuCurrDisplayList, 90, y, gMenuText[ASSET_MENU_TEXT_COPY], ALIGN_MIDDLE_CENTER); - if (D_801263E0 == 2) { + if (gMenuOptionCount == 2) { set_text_colour(255, 255, 255, phi_v0_2, 255); } else { set_text_colour(255, 255, 255, 0, 255); @@ -5670,7 +5714,7 @@ s32 func_8008D5F8(UNUSED s32 updateRate) { yAxisDirection += gControllersYAxisDirection[PLAYER_TWO]; } if (buttonsPressed & (A_BUTTON | START_BUTTON)) { - switch (D_801263E0) { + switch (gMenuOptionCount) { case 0: if (gSavefileInfo[gSaveFileIndex].isStarted) { if (gIsInAdventureTwo != gSavefileInfo[gSaveFileIndex].isAdventure2) { @@ -5697,8 +5741,8 @@ s32 func_8008D5F8(UNUSED s32 updateRate) { return -1; } - temp_a0 = (D_801263E0 << 8) | gSaveFileIndex; - if (D_801263E0 == 0) { + temp_a0 = (gMenuOptionCount << 8) | gSaveFileIndex; + if (gMenuOptionCount == 0) { // Left if ((xAxisDirection < 0) && (gSaveFileIndex > 0)) { gSaveFileIndex--; @@ -5710,32 +5754,32 @@ s32 func_8008D5F8(UNUSED s32 updateRate) { // Down if (yAxisDirection < 0) { if (gSaveFileIndex >= 2) { - D_801263E0 = 2; + gMenuOptionCount = 2; } else { - D_801263E0 = 1; + gMenuOptionCount = 1; } } } else { // Left - if ((xAxisDirection < 0) && (D_801263E0 == 2)) { - D_801263E0 = 1; + if ((xAxisDirection < 0) && (gMenuOptionCount == 2)) { + gMenuOptionCount = 1; } // Right - if ((xAxisDirection > 0) && (D_801263E0 == 1)) { - D_801263E0 = 2; + if ((xAxisDirection > 0) && (gMenuOptionCount == 1)) { + gMenuOptionCount = 2; } // Up if (yAxisDirection > 0) { - if ((D_801263E0 == 1) && (gSaveFileIndex >= 2)) { + if ((gMenuOptionCount == 1) && (gSaveFileIndex >= 2)) { gSaveFileIndex = 0; } - if ((D_801263E0 == 2) && (gSaveFileIndex <= 0)) { + if ((gMenuOptionCount == 2) && (gSaveFileIndex <= 0)) { gSaveFileIndex = 2; } - D_801263E0 = 0; + gMenuOptionCount = 0; } } - if (temp_a0 != ((D_801263E0 << 8) | gSaveFileIndex)) { + if (temp_a0 != ((gMenuOptionCount << 8) | gSaveFileIndex)) { play_sound_global(SOUND_MENU_PICK2, NULL); } return 0; @@ -5825,7 +5869,7 @@ void func_8008D8BC(UNUSED s32 updateRate) { } gSavefileInfo[gSaveFileIndex2].name[i] = '\0'; gSaveFileIndex = gSaveFileIndex2; - D_801263E0 = 0; + gMenuOptionCount = 0; D_80126484 = FALSE; return; } @@ -5895,7 +5939,7 @@ void func_8008DC7C(UNUSED s32 updateRate) { gSavefileInfo[gSaveFileIndex3].name[2] = 'R'; gSavefileInfo[gSaveFileIndex3].name[3] = '\0'; gSaveFileIndex = gSaveFileIndex3; - D_801263E0 = 0; + gMenuOptionCount = 0; D_80126488 = FALSE; } else if (buttonsPressed & B_BUTTON) { play_sound_global(SOUND_MENU_BACK3, NULL); @@ -6051,20 +6095,26 @@ void func_8008E428(void) { unload_font(ASSET_FONTS_BIGFONT); } +/** + * Set the texture IDs of the vehicle ID elements. +*/ void assign_vehicle_icon_textures(void) { - gRaceSelectionCarTex[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_CAR_TOP]; - gRaceSelectionCarTex[1].texture = D_80126550[TEXTURE_ICON_VEHICLE_CAR_BOTTOM]; - gRaceSelectionHoverTex[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_HOVERCRAFT_TOP]; - gRaceSelectionHoverTex[1].texture = D_80126550[TEXTURE_ICON_VEHICLE_HOVERCRAFT_BOTTOM]; - gRaceSelectionPlaneTex[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_PLANE_TOP]; - gRaceSelectionPlaneTex[1].texture = D_80126550[TEXTURE_ICON_VEHICLE_PLANE_BOTTOM]; + gRaceSelectionCarTex[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_CAR_TOP]; + gRaceSelectionCarTex[1].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_CAR_BOTTOM]; + gRaceSelectionHoverTex[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_HOVERCRAFT_TOP]; + gRaceSelectionHoverTex[1].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_HOVERCRAFT_BOTTOM]; + gRaceSelectionPlaneTex[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_PLANE_TOP]; + gRaceSelectionPlaneTex[1].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_PLANE_BOTTOM]; } -void func_8008E4B0(void) { - gMenuSelectionArrowUp[0].texture = D_80126550[TEXTURE_ICON_ARROW_UP]; - gMenuSelectionArrowLeft[0].texture = D_80126550[TEXTURE_ICON_ARROW_LEFT]; - gMenuSelectionArrowDown[0].texture = D_80126550[TEXTURE_ICON_ARROW_DOWN]; - gMenuSelectionArrowRight[0].texture = D_80126550[TEXTURE_ICON_ARROW_RIGHT]; +/** + * Set the texture IDs of the menu arrow elements. +*/ +void assign_menu_arrow_textures(void) { + gMenuSelectionArrowUp[0].texture = gMenuTextures[TEXTURE_ICON_ARROW_UP]; + gMenuSelectionArrowLeft[0].texture = gMenuTextures[TEXTURE_ICON_ARROW_LEFT]; + gMenuSelectionArrowDown[0].texture = gMenuTextures[TEXTURE_ICON_ARROW_DOWN]; + gMenuSelectionArrowRight[0].texture = gMenuTextures[TEXTURE_ICON_ARROW_RIGHT]; } GLOBAL_ASM("asm/non_matchings/menu/func_8008E4EC.s") @@ -6127,14 +6177,14 @@ void menu_track_select_init(void) { var_s0 = (TextureHeader **) D_800E0730[var_a1]; if (temp_a0 != -1) { func_8009C6D4(temp_a0); - var_s0[0] = D_80126550[D_800E0710[(var_a1 * 3)]]; + var_s0[0] = gMenuTextures[D_800E0710[(var_a1 * 3)]]; } else { var_s0[0] = NULL; } temp_a0_2 = D_800E0710[(var_a1 * 3) + 1]; if (temp_a0_2 != -1) { func_8009C6D4(temp_a0_2); - var_s0[1] = (TextureHeader *) D_80126550[D_800E0710[(var_a1 * 3)]]; + var_s0[1] = (TextureHeader *) gMenuTextures[D_800E0710[(var_a1 * 3)]]; } else { var_s0[1] = NULL; } @@ -6167,14 +6217,14 @@ void menu_track_select_init(void) { D_800E097C = 1; func_8009C674(D_800E07C4); allocate_menu_images(D_800E07E0); - func_8008E4B0(); + assign_menu_arrow_textures(); - D_800E05D4[0].texture = D_80126550[TEXTURE_UNK_08]; - D_800E05D4[1].texture = D_80126550[TEXTURE_UNK_09]; - D_800E05D4[2].texture = D_80126550[TEXTURE_UNK_0A]; - D_800E05F4[0].texture = D_80126550[TEXTURE_UNK_0B]; - D_800E05F4[1].texture = D_80126550[TEXTURE_UNK_0C]; - D_800E05F4[2].texture = D_80126550[TEXTURE_UNK_0D]; + D_800E05D4[0].texture = gMenuTextures[TEXTURE_UNK_08]; + D_800E05D4[1].texture = gMenuTextures[TEXTURE_UNK_09]; + D_800E05D4[2].texture = gMenuTextures[TEXTURE_UNK_0A]; + D_800E05F4[0].texture = gMenuTextures[TEXTURE_UNK_0B]; + D_800E05F4[1].texture = gMenuTextures[TEXTURE_UNK_0C]; + D_800E05F4[2].texture = gMenuTextures[TEXTURE_UNK_0D]; for (idx = 0; idx < 4; idx++) { var_s2 = D_801268E8[idx]; @@ -6266,31 +6316,31 @@ void func_8008F00C(s32 arg0) { gPlayerSelectVehicle[i] = vehicle; } gNumberOfReadyPlayers = 0; - D_800E0980 = 1; + gTrackNameVoiceDelay = 1; func_8009C674(D_800E07E8); allocate_menu_images(D_800E0830); assign_vehicle_icon_textures(); - gRaceSelectionTTOn[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_ON_TOP]; - gRaceSelectionTTOn[1].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_ON_BOTTOM]; - gRaceSelectionTTOff[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OFF_TOP]; - gRaceSelectionTTOff[1].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OFF_BOTTOM]; - gRaceSelectionCarOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_CAR_HIGHLIGHT]; - gRaceSelectionCarOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_CAR]; - gRaceSelectionHoverOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT_HIGHLIGHT]; - gRaceSelectionHoverOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT]; - gRaceSelectionPlaneOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_PLANE_HIGHLIGHT]; - gRaceSelectionPlaneOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_PLANE]; - gRaceSelectionTTOnOptHighlight[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OPT_ON]; - gRaceSelectionTTOffOptHighlight[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OPT_ON_HIGHLIGHT]; - gRaceSelectionTTOnOpt[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OPT_OFF]; - gRaceSelectionTTOffOpt[0].texture = D_80126550[TEXTURE_ICON_TIMETRIAL_OPT_OFF_HIGHLIGHT]; - gRaceSelectionPlayer1Texture[0].texture = D_80126550[TEXTURE_ICON_PLAYER_1]; - gRaceSelectionPlayer2Texture[0].texture = D_80126550[TEXTURE_ICON_PLAYER_2]; - gRaceSelectionPlayer3Texture[0].texture = D_80126550[TEXTURE_ICON_PLAYER_3]; - gRaceSelectionPlayer4Texture[0].texture = D_80126550[TEXTURE_ICON_PLAYER_4]; - gRaceSelectionVehicleTitleTexture[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_TITLE]; - gRaceSelectionTTTitleTexture[0].texture = D_80126550[TEXTURE_ICON_TT_TITLE]; - gRaceSelectionTTTexture[0].texture = D_80126550[TEXTURE_ICON_TT_HEAD]; + gRaceSelectionTTOn[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_ON_TOP]; + gRaceSelectionTTOn[1].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_ON_BOTTOM]; + gRaceSelectionTTOff[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OFF_TOP]; + gRaceSelectionTTOff[1].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OFF_BOTTOM]; + gRaceSelectionCarOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_CAR_HIGHLIGHT]; + gRaceSelectionCarOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_CAR]; + gRaceSelectionHoverOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT_HIGHLIGHT]; + gRaceSelectionHoverOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT]; + gRaceSelectionPlaneOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_PLANE_HIGHLIGHT]; + gRaceSelectionPlaneOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_PLANE]; + gRaceSelectionTTOnOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OPT_ON]; + gRaceSelectionTTOffOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OPT_ON_HIGHLIGHT]; + gRaceSelectionTTOnOpt[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OPT_OFF]; + gRaceSelectionTTOffOpt[0].texture = gMenuTextures[TEXTURE_ICON_TIMETRIAL_OPT_OFF_HIGHLIGHT]; + gRaceSelectionPlayer1Texture[0].texture = gMenuTextures[TEXTURE_ICON_PLAYER_1]; + gRaceSelectionPlayer2Texture[0].texture = gMenuTextures[TEXTURE_ICON_PLAYER_2]; + gRaceSelectionPlayer3Texture[0].texture = gMenuTextures[TEXTURE_ICON_PLAYER_3]; + gRaceSelectionPlayer4Texture[0].texture = gMenuTextures[TEXTURE_ICON_PLAYER_4]; + gRaceSelectionVehicleTitleTexture[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_TITLE]; + gRaceSelectionTTTitleTexture[0].texture = gMenuTextures[TEXTURE_ICON_TT_TITLE]; + gRaceSelectionTTTexture[0].texture = gMenuTextures[TEXTURE_ICON_TT_HEAD]; break; } } @@ -6589,9 +6639,9 @@ void func_80090918(s32 updateRate) { } if (gMenuDelay > 30) { if ((is_adventure_two_unlocked()) && (D_801269C8 != 5)) { - D_801263E0 = -1; + gMenuOptionCount = -1; } else { - D_801263E0 = 0; + gMenuOptionCount = 0; } func_8008F00C(1); } else if (gMenuDelay < -30) { @@ -6650,7 +6700,7 @@ void func_80090918(s32 updateRate) { } void func_80090ED8(UNUSED s32 updateRate) { - if (D_801263E0 == 1 && D_800E0414 == 0 && D_80126840 == 0) { + if (gMenuOptionCount == 1 && D_800E0414 == 0 && D_80126840 == 0) { play_sound_global(SOUND_VOICE_TT_SNORE, &D_80126840); } } @@ -6678,7 +6728,7 @@ void render_track_select_setup_ui(s32 updateRate) { if (osTvType == TV_TYPE_PAL) { sp80 = 12; } - if ((gNumberOfActivePlayers == 2) && (D_801269C8 < 4) && (D_801263E0 >= 2)) { + if ((gNumberOfActivePlayers == 2) && (D_801269C8 < 4) && (gMenuOptionCount >= 2)) { sp74 = TRUE; } camDisableUserView(0, 1); @@ -6719,7 +6769,7 @@ void render_track_select_setup_ui(s32 updateRate) { sp84 = 511 - sp84; } set_current_dialogue_background_colour(7, 255, sp84, 0, sMenuGuiOpacity); - if ((D_801263E0 == -1) || ((D_801263E0 == 2) && (D_801269C8 == 4) && is_adventure_two_unlocked())) { + if ((gMenuOptionCount == -1) || ((gMenuOptionCount == 2) && (D_801269C8 == 4) && is_adventure_two_unlocked())) { s4 = get_text_width(gMenuText[ASSET_MENU_TEXT_ADVENTURE2], 0, 0); // "ADVENTURE" temp = get_text_width(gMenuText[ASSET_MENU_TEXT_ADVENTURETWO2], 0, 0); // "ADVENTURE TWO" if (s4 < temp) { @@ -6731,7 +6781,7 @@ void render_track_select_setup_ui(s32 updateRate) { s4 += 0xC; } func_80080580(&sMenuCurrDisplayList, -(s4 >> 1), 0x78 - D_800E0700.y, s4, D_800E0700.height, - D_800E0700.borderWidth, D_800E0700.borderHeight, sMenuGuiOpacity + 0xB0E0C000, D_80126550[43]); + D_800E0700.borderWidth, D_800E0700.borderHeight, sMenuGuiOpacity + 0xB0E0C000, gMenuTextures[43]); func_80080E6C(); set_text_font(ASSET_FONTS_FUNFONT); s7 = D_800E0700.colourMax + D_800E0700.y + sp80; @@ -6765,12 +6815,12 @@ void render_track_select_setup_ui(s32 updateRate) { draw_text(&sMenuCurrDisplayList, 250, 92 + sp80, &sp78, ALIGN_MIDDLE_CENTER); show_timestamp(settings->courseTimesPtr[gPlayerSelectVehicle[PLAYER_ONE]][gTrackIdForPreview], 22, 53, 128, 255, 255, FONT_COLOURFUL); show_timestamp(settings->flapTimesPtr[gPlayerSelectVehicle[PLAYER_ONE]][gTrackIdForPreview], 22, 33, 255, 192, 255, FONT_COLOURFUL); - if (D_801263E0 != -1) { + if (gMenuOptionCount != -1) { if (gNumberOfActivePlayers == 1) { // Glow effect set_current_dialogue_box_coords(7, 134, sp80 + 112, 186, sp80 + 137); render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 7); - if (D_801263E0 <= 0) { + if (gMenuOptionCount <= 0) { render_textured_rectangle(&sMenuCurrDisplayList, &gRaceSelectionVehicleTitleTexture, 136, sp80 + 114, 255, 0xFF, 255, sMenuGuiOpacity); } else { render_textured_rectangle(&sMenuCurrDisplayList, &gRaceSelectionTTTitleTexture, 136, sp80 + 114, 255, 255, 255, sMenuGuiOpacity); @@ -6788,7 +6838,7 @@ void render_track_select_setup_ui(s32 updateRate) { s3 = (gNumberOfActivePlayers - 1) * gNumberOfActivePlayers; for (i = 0; i < gNumberOfActivePlayers; i++) { - if (((gNumberOfActivePlayers == 1) && (i == D_801263E0)) || ((gNumberOfActivePlayers >= 2) && (D_801269C4[i] == 0))) { + if (((gNumberOfActivePlayers == 1) && (i == gMenuOptionCount)) || ((gNumberOfActivePlayers >= 2) && (D_801269C4[i] == 0))) { s32 temp_v0_9 = D_800E0688[s3 + (i * 2)]; s32 temp_v1 = D_800E0688[s3 + (i * 2) + 1] + sp80; // Glow effect around Player image @@ -6802,7 +6852,7 @@ void render_track_select_setup_ui(s32 updateRate) { } } - if ((gNumberOfActivePlayers >= 2) || D_801263E0 == 0) { + if ((gNumberOfActivePlayers >= 2) || gMenuOptionCount == 0) { // Draws "Car", "Hover", "Plane" text choice images. if (sp74 == 0) { s32 yTemp = 0x8B + sp80; @@ -6834,7 +6884,7 @@ void render_track_select_setup_ui(s32 updateRate) { s7 = sp80 + 2; } if (gNumberOfActivePlayers == 1) { - if (D_801263E0 == 0) { + if (gMenuOptionCount == 0) { // Draw vehicle image for one player render_textured_rectangle(&sMenuCurrDisplayList, gRaceSelectionImages[gPlayerSelectVehicle[PLAYER_ONE] * 3], 0x95, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } else { @@ -6878,7 +6928,7 @@ void render_track_select_setup_ui(s32 updateRate) { } else { s4 = gTwoPlayerRacerCountMenu.width; } - func_80080580(&sMenuCurrDisplayList, -(s4 >> 1), 0x78 - gTwoPlayerRacerCountMenu.y, s4, gTwoPlayerRacerCountMenu.height, gTwoPlayerRacerCountMenu.textPos[0], gTwoPlayerRacerCountMenu.textPos[1], 0xB0E0C0FF, D_80126550[43]); + func_80080580(&sMenuCurrDisplayList, -(s4 >> 1), 0x78 - gTwoPlayerRacerCountMenu.y, s4, gTwoPlayerRacerCountMenu.height, gTwoPlayerRacerCountMenu.textPos[0], gTwoPlayerRacerCountMenu.textPos[1], 0xB0E0C0FF, gMenuTextures[43]); func_80080E6C(); set_text_font(ASSET_FONTS_FUNFONT); set_text_colour(0, 0, 0, 0xFF, 0x80); @@ -6890,7 +6940,7 @@ void render_track_select_setup_ui(s32 updateRate) { for (i = 0; i < 3; i++) { s32 index = i * 2; if (i == gMultiplayerSelectedNumberOfRacers) { - if (D_801263E0 < 3) { + if (gMenuOptionCount < 3) { sMenuGuiColourG = 0xFF - sp84; sMenuGuiColourB = 0xFF - sp84; } else { @@ -6930,13 +6980,13 @@ void render_track_select_setup_ui(s32 updateRate) { } func_8007BF1C(TRUE); } - if ((gNumberOfActivePlayers == 1) && (D_801263E0 >= 0) && (func_80092BE0(gTrackIdForPreview) >= 0)) { + if ((gNumberOfActivePlayers == 1) && (gMenuOptionCount >= 0) && (func_80092BE0(gTrackIdForPreview) >= 0)) { // Render small T.T. icon. render_textured_rectangle(&sMenuCurrDisplayList, &gRaceSelectionTTTexture, 0xCC, 0x7A, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); reset_render_settings(&sMenuCurrDisplayList); } if (D_801269C8 != 5) { - if (((D_801263E0 == 2) && !sp74) || ((D_801263E0 == 3) && sp74) || (D_801263E0 == 4)) { + if (((gMenuOptionCount == 2) && !sp74) || ((gMenuOptionCount == 3) && sp74) || (gMenuOptionCount == 4)) { set_text_font(ASSET_FONTS_BIGFONT); set_text_colour(0xFF, 0xFF, 0xFF, 0, sMenuGuiOpacity); if (D_801269C8 >= 4) { @@ -7006,7 +7056,7 @@ void menu_adventure_track_init(void) { if (temp != -1) { func_80000FDC(temp, 0, 1.0f); } - D_801263E0 = -1; + gMenuOptionCount = -1; } else { temp = D_800E0758[mapId]; if (temp != -1) { @@ -7015,23 +7065,23 @@ void menu_adventure_track_init(void) { set_music_player_voice_limit(0x18); play_music(SEQUENCE_MAIN_MENU); func_80000B18(); - D_801263E0 = 0; + gMenuOptionCount = 0; func_8009C674(D_800E0FB4); allocate_menu_images(D_800E0FD8); assign_vehicle_icon_textures(); - gRaceSelectionCarOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_CAR_HIGHLIGHT]; - gRaceSelectionCarOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_CAR]; - gRaceSelectionHoverOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT_HIGHLIGHT]; - gRaceSelectionHoverOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT]; - gRaceSelectionPlaneOptHighlight[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_PLANE_HIGHLIGHT]; - gRaceSelectionPlaneOpt[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_SELECT_PLANE]; - gRaceSelectionVehicleTitleTexture[0].texture = D_80126550[TEXTURE_ICON_VEHICLE_TITLE]; - gRaceSelectionTTTexture[0].texture = D_80126550[TEXTURE_ICON_TT_HEAD]; + gRaceSelectionCarOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_CAR_HIGHLIGHT]; + gRaceSelectionCarOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_CAR]; + gRaceSelectionHoverOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT_HIGHLIGHT]; + gRaceSelectionHoverOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_HOVERCRAFT]; + gRaceSelectionPlaneOptHighlight[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_PLANE_HIGHLIGHT]; + gRaceSelectionPlaneOpt[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_SELECT_PLANE]; + gRaceSelectionVehicleTitleTexture[0].texture = gMenuTextures[TEXTURE_ICON_VEHICLE_TITLE]; + gRaceSelectionTTTexture[0].texture = gMenuTextures[TEXTURE_ICON_TT_HEAD]; transition_begin(&sMenuTransitionFadeOut); gOptionBlinkTimer = 0; gMenuDelay = 0; - D_800E0980 = 30; + gTrackNameVoiceDelay = 30; load_font(ASSET_FONTS_BIGFONT); load_level_for_menu(mapId, -1, 1); } @@ -7128,7 +7178,7 @@ void render_adventure_track_setup(UNUSED s32 arg0, s32 arg1, s32 arg2) { gMenuImageStack[7].unkC = 21.0f; gMenuImageStack[7].unk10 = -52.0f; func_8009CA60(7); - if (D_801263E0 != 0) { + if (gMenuOptionCount != 0) { set_text_font(FONT_LARGE); set_text_background_colour(0, 0, 0, 0); set_text_colour(255, 255, 255, 0, 255); @@ -7168,7 +7218,7 @@ s32 menu_adventure_track_loop(s32 updateRate) { s32 sp1C; Settings *settings; - if (D_801263E0 < 0) { + if (gMenuOptionCount < 0) { return gTrackIdForPreview | 0x80; } settings = get_settings(); @@ -7202,7 +7252,7 @@ s32 menu_adventure_track_loop(s32 updateRate) { vehicle2 = vehicle; func_8008E4EC(); if (gMenuDelay == 0) { - if ((D_801263E0 != 0) || sp20 || sp28) { + if ((gMenuOptionCount != 0) || sp20 || sp28) { if (D_801267D8[0] & (A_BUTTON | START_BUTTON)) { if (sp28) { func_800C31EC(0x2710); @@ -7219,7 +7269,7 @@ s32 menu_adventure_track_loop(s32 updateRate) { transition_begin(&sMenuTransitionFadeIn); gMenuDelay = -1; } else { - D_801263E0 = 0; + gMenuOptionCount = 0; } } } else { @@ -7228,7 +7278,7 @@ s32 menu_adventure_track_loop(s32 updateRate) { transition_begin(&sMenuTransitionFadeIn); gMenuDelay = -1; } else if (D_801267D8[0] & (A_BUTTON | START_BUTTON)) { - D_801263E0 = 1; + gMenuOptionCount = 1; play_sound_global(SOUND_CAR_REV2, NULL); } else if (sp1C >= 2) { if (D_80126830 > 0) { @@ -7537,17 +7587,20 @@ void n_alSeqpDelete(void) { n_alSynRemovePlayer(); } +/** + * Set the racer portrait element textures for their respective characters. +*/ void assign_racer_portrait_textures(void) { - D_800E0A50[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_KRUNCH]; - D_800E0A60[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_DIDDY]; - D_800E0A70[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_DRUMSTICK]; - D_800E0A90[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_BANJO]; - D_800E0A80[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_BUMPER]; - D_800E0AA0[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_CONKER]; - D_800E0AB0[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_TIPTUP]; - D_800E0AC0[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_TT]; - D_800E0AD0[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_PIPSY]; - D_800E0AE0[0].texture = D_80126550[TEXTURE_ICON_PORTRAIT_TIMBER]; + gMenuPortraitKrunch[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_KRUNCH]; + gMenuPortraitDiddy[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_DIDDY]; + gMenuPortraitDrumstick[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_DRUMSTICK]; + gMenuPortraitBanjo[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_BANJO]; + gMenuPortraitBumper[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_BUMPER]; + gMenuPortraitConker[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_CONKER]; + gMenuPortraitTiptup[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_TIPTUP]; + gMenuPortraitTT[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_TT]; + gMenuPortraitPipsy[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_PIPSY]; + gMenuPortraitTimber[0].texture = gMenuTextures[TEXTURE_ICON_PORTRAIT_TIMBER]; } void func_80094688(s32 arg0, s32 arg1) { @@ -7562,27 +7615,27 @@ void func_80094688(s32 arg0, s32 arg1) { } D_80126A90 = 0; if (gNumberOfActivePlayers == 1 && gTrophyRaceWorldId == 0) { - if (is_in_tracks_mode() == 1) { - D_80126BF0[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; - D_80126BF0[1] = gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; - D_80126BF0[2] = gMenuText[ASSET_MENU_TEXT_SELECTCHARACTER]; - D_80126C14 = 3; + if (is_in_tracks_mode() == TRUE) { + gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; + gResultOptionText[1] = gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; + gResultOptionText[2] = gMenuText[ASSET_MENU_TEXT_SELECTCHARACTER]; + gResultOptionCount = 3; D_80126A90 = 1; } else { if (arg0 == 0) { - D_80126BF0[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; - D_80126C14 = 1; + gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; + gResultOptionCount = 1; } else { - D_80126C14 = 0; + gResultOptionCount = 0; } - D_80126BF0[D_80126C14] = gMenuText[ASSET_MENU_TEXT_RETURNTOLOBBY]; - D_80126C14++; + gResultOptionText[gResultOptionCount] = gMenuText[ASSET_MENU_TEXT_RETURNTOLOBBY]; + gResultOptionCount++; } - D_80126BF0[D_80126C14] = gMenuText[ASSET_MENU_TEXT_QUIT]; - D_80126C14++; - D_801263E0 = 0; + gResultOptionText[gResultOptionCount] = gMenuText[ASSET_MENU_TEXT_QUIT]; + gResultOptionCount++; + gMenuOptionCount = 0; } else { - D_801263E0 = 7; + gMenuOptionCount = 7; } D_80126CC0 = 0; gOptionBlinkTimer = 0; @@ -7599,11 +7652,11 @@ void func_80094688(s32 arg0, s32 arg1) { gIgnorePlayerInputTime = normalise_time(240); // 4 seconds } if (D_80126C28) { - D_801263E0 = 8; + gMenuOptionCount = 8; gMenuDelay = 100; } if (get_render_context() != DRAW_GAME) { - D_801263E0 = 7; + gMenuOptionCount = 7; } reset_controller_sticks(); func_8006D8E0(arg0); @@ -7618,13 +7671,13 @@ void func_80094688(s32 arg0, s32 arg1) { var_v1 = &D_800E0710[arg1 * 3]; if (var_v1[0] != -1) { func_8009C6D4(var_v1[0]); - D_80126BB8 = D_80126550[var_v1[0]]; + D_80126BB8 = gMenuTextures[var_v1[0]]; } else { D_80126BB8 = 0; } if (var_v1[1] != -1) { func_8009C6D4(var_v1[1]); - D_80126BBC = D_80126550[var_v1[1]]; + D_80126BBC = gMenuTextures[var_v1[1]]; } else { D_80126BBC = 0; } @@ -7655,12 +7708,12 @@ void func_80094A5C(void) { allocate_menu_images(D_800E0A40); assign_racer_portrait_textures(); settings = get_settings(); - D_800E0BEC->unk14_a.element = D_800E0AF0[settings->racers[settings->timeTrialRacer].character]; + D_800E0BEC->unk14_a.element = gRacerPortraits[settings->racers[settings->timeTrialRacer].character]; if (!is_time_trial_enabled()) { for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (i == settings->racers[j].starting_position) { - D_800E0CEC[7 - i].unk14_a.element = D_800E0AF0[settings->racers[j].character]; + D_800E0CEC[7 - i].unk14_a.element = gRacerPortraits[settings->racers[j].character]; } } } @@ -7764,27 +7817,31 @@ void func_80096790(void) { adjust_audio_volume(VOLUME_NORMAL); } -void menu_11_init(void) { +/** + * Initialise the race results menu. + * Set the text for the options and set the order of the racer portraits based on finishing position. +*/ +void menu_results_init(void) { Settings *settings; u16 *placements; s32 i; - s8 temp_a2; + s8 startPos; settings = get_settings(); - D_80126BF0[0] = gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; - D_80126BF0[1] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; - D_80126BF0[2] = gMenuText[ASSET_MENU_TEXT_QUIT]; - D_80126C14 = 3; + gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_SELECTTRACK]; + gResultOptionText[1] = gMenuText[ASSET_MENU_TEXT_TRYAGAIN]; + gResultOptionText[2] = gMenuText[ASSET_MENU_TEXT_QUIT]; + gResultOptionCount = 3; for (i = 0; i < gNumberOfActivePlayers; i++) { - temp_a2 = settings->racers[i].starting_position; - if (temp_a2 < 4) { + startPos = settings->racers[i].starting_position; + if (startPos < 4) { placements = settings->racers[i].placements; - placements[temp_a2]++; + placements[startPos]++; } } - D_801263E0 = -1; + gMenuOptionCount = -1; gOptionBlinkTimer = 0; gOpacityDecayTimer = 0; gMenuDelay = 0; @@ -7796,9 +7853,9 @@ void menu_11_init(void) { assign_racer_portrait_textures(); load_font(ASSET_FONTS_BIGFONT); transition_begin(&sMenuTransitionFadeOut); - set_music_player_voice_limit(0x18); + set_music_player_voice_limit(24); play_music(SEQUENCE_MAIN_MENU); - set_music_fade_timer(0x80); + set_music_fade_timer(128); } GLOBAL_ASM("asm/non_matchings/menu/func_80096978.s") @@ -7814,17 +7871,17 @@ s32 menu_results_loop(s32 updateRate) { playPickSound = FALSE; gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; func_8008E4EC(); - if (D_801263E0 <= 0) { + if (gMenuOptionCount <= 0) { gOpacityDecayTimer += updateRate; if (gOpacityDecayTimer >= 60) { - D_801263E0 = 1; - } else if (D_801263E0 < 0 && gOpacityDecayTimer > 20) { - D_801263E0 = 0; + gMenuOptionCount = 1; + } else if (gMenuOptionCount < 0 && gOpacityDecayTimer > 20) { + gMenuOptionCount = 0; play_sound_global(SOUND_WHOOSH1, NULL); } } if (gMenuDelay < 20) { - if (D_801263E0 <= 0) { + if (gMenuOptionCount <= 0) { if (gOpacityDecayTimer >= 20) { func_80096978(updateRate, 1.0f - ((f32) (gOpacityDecayTimer - 20) / 40.0f)); } @@ -7833,9 +7890,9 @@ s32 menu_results_loop(s32 updateRate) { } } if (gMenuDelay == 0) { - if (D_801263E0 == 0) { + if (gMenuOptionCount == 0) { if (D_801267E8 & (A_BUTTON | START_BUTTON)) { - D_801263E0 = 1; + gMenuOptionCount = 1; } } else if (gMenuSubOption != 0) { if (D_801267E8 & (A_BUTTON | START_BUTTON)) { @@ -7865,7 +7922,7 @@ s32 menu_results_loop(s32 updateRate) { } } else if (D_801267E8 & (A_BUTTON | START_BUTTON)) { playSelectSound = TRUE; - if (D_80126BF0[gMenuOption] == gMenuText[28]) { + if (gResultOptionText[gMenuOption] == gMenuText[28]) { gMenuSubOption = 2; } else { gMenuDelay = 1; @@ -7874,7 +7931,7 @@ s32 menu_results_loop(s32 updateRate) { } } else { prevOption = gMenuOption; - if (D_80126838 < 0 && gMenuOption < (D_80126C14 - 1)) { + if (D_80126838 < 0 && gMenuOption < (gResultOptionCount - 1)) { gMenuOption++; } if (D_80126838 > 0 && gMenuOption > 0) { @@ -7898,10 +7955,10 @@ s32 menu_results_loop(s32 updateRate) { func_800976CC(); close_dialogue_box(7); assign_dialogue_box_id(7); - if (D_80126BF0[gMenuOption] == gMenuText[ASSET_MENU_TEXT_TRYAGAIN]) { + if (gResultOptionText[gMenuOption] == gMenuText[ASSET_MENU_TEXT_TRYAGAIN]) { return (0x100 | 0x2); //This gets parsed in func_8006DCF8 as a flag and an ID from the bottom 7 bits. } - if (D_80126BF0[gMenuOption] == gMenuText[ASSET_MENU_TEXT_SELECTTRACK]) { + if (gResultOptionText[gMenuOption] == gMenuText[ASSET_MENU_TEXT_SELECTTRACK]) { load_level_for_menu(-1, -1, 0); menu_init(MENU_TRACK_SELECT); return 0; @@ -8267,6 +8324,10 @@ void func_80098208(void) { set_time_trial_enabled(0); } +/** + * Initialise the trophy race intro. + * Finds which level should be next, then loads it for the preview. +*/ void menu_trophy_race_round_init(void) { s32 i; s32 index; @@ -8297,11 +8358,11 @@ void menu_trophy_race_round_init(void) { load_level_for_menu(index, -1, 1); gMenuDelay = 0; - D_800E0980 = 10; + gTrackNameVoiceDelay = 10; load_font(ASSET_FONTS_BIGFONT); set_music_player_voice_limit(24); play_music(SEQUENCE_MAIN_MENU); - set_music_fade_timer(0x100); + set_music_fade_timer(256); } /** @@ -8342,16 +8403,16 @@ s32 menu_trophy_race_round_loop(s32 updateRate) { s32 temp; trackMenuIds = (s8 *)get_misc_asset(ASSET_MISC_TRACKS_MENU_IDS); //tracks_menu_ids - if (D_800E0980 != 0) { - D_800E0980 -= updateRate; - if (D_800E0980 <= 0) { + if (gTrackNameVoiceDelay != 0) { + gTrackNameVoiceDelay -= updateRate; + if (gTrackNameVoiceDelay <= 0) { //This is mostly likely supposed to be a multi dimensional array temp = trackMenuIds[(((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound)]; temp_a2 = D_800E0758[temp]; if (temp_a2 != -1) { play_sound_global(temp_a2, NULL); } - D_800E0980 = 0; + gTrackNameVoiceDelay = 0; } } if (gMenuDelay != 0) { @@ -8387,6 +8448,10 @@ void unload_big_font_5(void) { GLOBAL_ASM("asm/non_matchings/menu/func_80098774.s") +/** + * Initialise trophy race points screen. + * Sets the order of the racer portraits based on points position. +*/ void menu_trophy_race_rankings_init(void) { UNUSED s32 pad0; UNUSED s32 pad1; @@ -8401,57 +8466,57 @@ void menu_trophy_race_rankings_init(void) { settings = get_settings(); trackMenuIds = (s8 *) get_misc_asset(ASSET_MISC_TRACKS_MENU_IDS); - D_801263E0 = 0; + gMenuOptionCount = 0; gMenuDelay = 0; gOptionBlinkTimer = 0; gOpacityDecayTimer = 0; reset_controller_sticks(); func_8009C674(D_800E1024); allocate_menu_images(D_800E1040); - D_800E0FF0 = gTrophyRaceRound; + gPrevTrophyRaceRound = gTrophyRaceRound; do { if(++gTrophyRaceRound >= 4) break; } while((trackMenuIds[((gTrophyRaceWorldId - 1) * 6) + (gTrophyRaceRound)] == -1)); if (gTrophyRaceRound < 4) { - D_80126BF0[0] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; - D_80126BF0[1] = gMenuText[ASSET_MENU_TEXT_QUITTROPHYRACE]; - D_80126C14 = 3; + gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_CONTINUE]; + gResultOptionText[1] = gMenuText[ASSET_MENU_TEXT_QUITTROPHYRACE]; + gResultOptionCount = 3; } else { - D_80126BF0[0] = gMenuText[ASSET_MENU_TEXT_TROPHYCEREMONY]; - D_80126C14 = 1; + gResultOptionText[0] = gMenuText[ASSET_MENU_TEXT_TROPHYCEREMONY]; + gResultOptionCount = 1; } gMenuOption = 0; assign_racer_portrait_textures(); - if (gNumberOfActivePlayers >= 3) { - D_800E0FE4 = gNumberOfActivePlayers; + if (gNumberOfActivePlayers > 2) { + gRankingPlayerCount = gNumberOfActivePlayers; } else if ((gNumberOfActivePlayers == 2) || (is_in_two_player_adventure())) { - D_800E0FE4 = get_multiplayer_racer_count(); + gRankingPlayerCount = get_multiplayer_racer_count(); } else { - D_800E0FE4 = 8; + gRankingPlayerCount = 8; } - for(i = 0; i < D_800E0FE4; i++) { - for(j = 0; j < D_800E0FE4; j++) { + for(i = 0; i < gRankingPlayerCount; i++) { + for(j = 0; j < gRankingPlayerCount; j++) { if (i == settings->racers[j].starting_position) { D_80126428[i] = j; if (j < gNumberOfActivePlayers) { - D_80126418[i] = 1; + D_80126418[i] = TRUE; } else { - D_80126418[i] = 0; + D_80126418[i] = FALSE; } } } } - for(i = 0; i < D_800E0FE4; i++){ + for(i = 0; i < gRankingPlayerCount; i++){ D_801263F8[i] = gTrophyRacePointsArray[settings->racers[i].starting_position]; } - for(i = 0; i < D_800E0FE4; i++){ + for(i = 0; i < gRankingPlayerCount; i++){ D_80126430[i] = i; sp48[i] = settings->racers[i].trophy_points + D_801263F8[i]; } - for (i = D_800E0FE4-1; i > 0; i--) { + for (i = gRankingPlayerCount-1; i > 0; i--) { for (j = 0; j < i; j++) { if(sp48[j] < sp48[j+1]) { tempForSwap = sp48[j]; @@ -8469,7 +8534,7 @@ void menu_trophy_race_rankings_init(void) { } else { j = gNumberOfActivePlayers; } - for(i = 0; i < D_800E0FE4; i++) { + for(i = 0; i < gRankingPlayerCount; i++) { if (D_80126430[i] < j) { D_80126420[i] = 1; } else { @@ -8479,7 +8544,7 @@ void menu_trophy_race_rankings_init(void) { load_font(ASSET_FONTS_BIGFONT); set_music_player_voice_limit(24); play_music(SEQUENCE_MAIN_MENU); - set_music_fade_timer(0x100); + set_music_fade_timer(256); func_80098774(0); func_80081E54(*D_800E1048, 0.5f, 20.0f, 0.5f, 0, 0); } @@ -8495,16 +8560,16 @@ void func_80098EBC(s32 arg0) { if (test >= 0x100) { test = 0x1FF - test; } - for (i = 0; i < D_800E0FE4; i++) { + for (i = 0; i < gRankingPlayerCount; i++) { fade = 0xFF; - if ((gNumberOfActivePlayers < 3) && (((D_801263E0 == 0) && D_80126418[i]) || ((D_801263E0 != 0) && D_80126420[i]))) { + if ((gNumberOfActivePlayers < 3) && (((gMenuOptionCount == 0) && D_80126418[i]) || ((gMenuOptionCount != 0) && D_80126420[i]))) { fade = (test >> 1) + 0x80; } D_800E1088[i][0].filterRed = fade; D_800E1088[i][0].filterGreen = fade; D_800E1088[i][0].filterBlue = fade; } - new_var2 = D_801263E0; + new_var2 = gMenuOptionCount; if ((new_var2 == 2) || (new_var2 == 3)) { draw_menu_elements(1, D_800E1048[0], 1.0f); } @@ -8529,17 +8594,17 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { func_80098EBC(updateRate); } update_controller_sticks(); - switch (D_801263E0) { // D_801263E0 = current Trophy Race Rankings state? + switch (gMenuOptionCount) { // gMenuOptionCount = current Trophy Race Rankings state? case 0: if (func_80081F4C(updateRate) != 0) { - D_801263E0 = 1; + gMenuOptionCount = 1; func_80098774(1); func_80081E54(*D_800E1048, 0.5f, 0.0f, 0.0f, 0, 0); } break; case 1: if (func_80081F4C(updateRate) != 0) { - D_801263E0 = 2; + gMenuOptionCount = 2; draw_menu_elements(1, *D_800E1048, 1.0f); } break; @@ -8548,7 +8613,7 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { if (gOpacityDecayTimer > 10) { gOpacityDecayTimer -= 10; temp5 = 0; - for(i = 0; i < D_800E0FE4; i++) { + for(i = 0; i < gRankingPlayerCount; i++) { if (D_801263F8[i] > 0) { D_801263F8[i]--; temp5 = 1; @@ -8574,8 +8639,8 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { if (gMenuOption < 0) { gMenuOption = 0; } - if (gMenuOption >= D_80126C14) { - gMenuOption = D_80126C14 - 1; + if (gMenuOption >= gResultOptionCount) { + gMenuOption = gResultOptionCount - 1; } if (temp1 != gMenuOption) { play_sound_global(SOUND_MENU_PICK2, NULL); @@ -8583,8 +8648,8 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { if (buttonsPressed & (A_BUTTON | START_BUTTON)) { set_music_fade_timer(-128); transition_begin(&sMenuTransitionFadeIn); - D_801263E0 = 3; - for(i = 0; i < D_800E0FE4; i++){ + gMenuOptionCount = 3; + for(i = 0; i < gRankingPlayerCount; i++){ settings->racers[i].trophy_points += D_801263F8[i]; } } @@ -8598,7 +8663,7 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { if (gTrophyRaceRound < 4) { menu_init(MENU_TROPHY_RACE_ROUND); } else { - for(temp6 = 0, i = 0; i < D_800E0FE4; i++) { + for(temp6 = 0, i = 0; i < gRankingPlayerCount; i++) { if (D_80126420[i] != 0) { temp7 = settings->racers[D_80126430[i]].character; if (temp6 == 0) { @@ -8683,16 +8748,16 @@ void menu_ghost_data_init(void) { func_8009C674(&D_800E1708); allocate_menu_images(&D_800E174C); load_font(ASSET_FONTS_BIGFONT); - D_800E153C[0].texture = D_80126550[TEXTURE_BACKGROUND_DINO_DOMAIN_TOP]; - D_800E153C[5].texture = D_80126550[TEXTURE_BACKGROUND_DINO_DOMAIN_BOTTOM]; - D_800E1594[0].texture = D_80126550[TEXTURE_BACKGROUND_SHERBERT_ISLAND_TOP]; - D_800E1594[5].texture = D_80126550[TEXTURE_BACKGROUND_SHERBERT_ISLAND_BOTTOM]; - D_800E15EC[0].texture = D_80126550[TEXTURE_BACKGROUND_SNOWFLAKE_MOUNTAIN_TOP]; - D_800E15EC[5].texture = D_80126550[TEXTURE_BACKGROUND_SNOWFLAKE_MOUNTAIN_BOTTOM]; - D_800E1644[0].texture = D_80126550[TEXTURE_BACKGROUND_DRAGON_FOREST_TOP]; - D_800E1644[5].texture = D_80126550[TEXTURE_BACKGROUND_DRAGON_FOREST_BOTTOM]; - D_800E169C[0].texture = D_80126550[TEXTURE_BACKGROUND_FUTURE_FUN_LAND_TOP]; - D_800E169C[5].texture = D_80126550[TEXTURE_BACKGROUND_FUTURE_FUN_LAND_BOTTOM]; + D_800E153C[0].texture = gMenuTextures[TEXTURE_BACKGROUND_DINO_DOMAIN_TOP]; + D_800E153C[5].texture = gMenuTextures[TEXTURE_BACKGROUND_DINO_DOMAIN_BOTTOM]; + D_800E1594[0].texture = gMenuTextures[TEXTURE_BACKGROUND_SHERBERT_ISLAND_TOP]; + D_800E1594[5].texture = gMenuTextures[TEXTURE_BACKGROUND_SHERBERT_ISLAND_BOTTOM]; + D_800E15EC[0].texture = gMenuTextures[TEXTURE_BACKGROUND_SNOWFLAKE_MOUNTAIN_TOP]; + D_800E15EC[5].texture = gMenuTextures[TEXTURE_BACKGROUND_SNOWFLAKE_MOUNTAIN_BOTTOM]; + D_800E1644[0].texture = gMenuTextures[TEXTURE_BACKGROUND_DRAGON_FOREST_TOP]; + D_800E1644[5].texture = gMenuTextures[TEXTURE_BACKGROUND_DRAGON_FOREST_BOTTOM]; + D_800E169C[0].texture = gMenuTextures[TEXTURE_BACKGROUND_FUTURE_FUN_LAND_TOP]; + D_800E169C[5].texture = gMenuTextures[TEXTURE_BACKGROUND_FUTURE_FUN_LAND_BOTTOM]; for (i = 0; i < 4; i++) { D_800E153C[i + 1].texture = D_800E153C[0].texture; D_800E153C[i + 6].texture = D_800E153C[5].texture; @@ -8717,9 +8782,9 @@ void menu_ghost_data_init(void) { } assign_vehicle_icon_textures(); assign_racer_portrait_textures(); - func_8008E4B0(); + assign_menu_arrow_textures(); gOptionBlinkTimer = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; gOpacityDecayTimer = 0; gMenuDelay = 0; D_80126498 = 0; @@ -8750,7 +8815,7 @@ s32 menu_ghost_data_loop(s32 updateRate) { } pressedButtons = 0; - if (gMenuDelay != 0) { + if (gMenuDelay) { if (gMenuDelay < 0) { gMenuDelay -= updateRate; } else { @@ -8768,10 +8833,10 @@ s32 menu_ghost_data_loop(s32 updateRate) { } } - switch (D_801263E0) { + switch (gMenuOptionCount) { case 0: if ((pressedButtons & (START_BUTTON | A_BUTTON)) && (D_801264D4 > 0)) { - D_801263E0 = 2; + gMenuOptionCount = 2; play_sound_global(SOUND_SELECT2, NULL); } else if ((pressedButtons & B_BUTTON) || ((pressedButtons & (START_BUTTON | A_BUTTON)) && (D_801264D4 == 0))) { gMenuDelay = 1; @@ -8798,7 +8863,7 @@ s32 menu_ghost_data_loop(s32 updateRate) { break; case 1: if (pressedButtons & B_BUTTON) { - D_801263E0 = 0; + gMenuOptionCount = 0; play_sound_global(SOUND_MENU_BACK3, NULL); } else { if (pressedButtons & (START_BUTTON | A_BUTTON)) { @@ -8818,19 +8883,19 @@ s32 menu_ghost_data_loop(s32 updateRate) { transition_begin(&sMenuTransitionFadeIn); play_sound_global(SOUND_MENU_BACK3, NULL); } - D_801263E0 = 0; + gMenuOptionCount = 0; } else if (yStick < 0) { - D_801263E0 = 2; + gMenuOptionCount = 2; play_sound_global(SOUND_MENU_PICK2, NULL); } } break; case 2: if (pressedButtons & (START_BUTTON | A_BUTTON | B_BUTTON)) { - D_801263E0 = 0; + gMenuOptionCount = 0; play_sound_global(SOUND_MENU_BACK3, NULL); } else if (yStick > 0) { - D_801263E0 = 1; + gMenuOptionCount = 1; play_sound_global(SOUND_MENU_PICK2, NULL); } break; @@ -8881,7 +8946,7 @@ void menu_23_init(void) { } load_level_for_menu(D_801267EC[0], D_801267EC[1], D_801267EC[2]); gMenuDelay = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; } s32 menu_23_loop(UNUSED s32 updateRate) { @@ -8916,7 +8981,7 @@ s32 menu_23_loop(UNUSED s32 updateRate) { } if (D_80126804 != NULL) { for (i = 0; D_80126804[i] != -1; i++) { - render_textured_rectangle(&sMenuCurrDisplayList, D_800E0AF0[D_80126804[i]], 24, 16 + (44 * i), 255, 255, 255, 255); + render_textured_rectangle(&sMenuCurrDisplayList, gRacerPortraits[D_80126804[i]], 24, 16 + (44 * i), 255, 255, 255, 255); } } gIgnorePlayerInputTime = 0; @@ -8931,6 +8996,10 @@ void func_8009AF18(void) { } } +/** + * Initialise credits sequence. + * Sets the ending text depending on when the credits were called. +*/ void menu_credits_init(void) { s32 cheat; s32 cheatIndex; @@ -8941,7 +9010,7 @@ void menu_credits_init(void) { gMenuDelay = 0; D_80126BC4 = 0; D_80126BCC = 0; - D_801263E0 = 0; + gMenuOptionCount = 0; gOpacityDecayTimer = 40; D_800DF460 = 0; D_80126BD0 = 0; @@ -8961,8 +9030,8 @@ void menu_credits_init(void) { allocate_menu_images(D_800E17F0); assign_racer_portrait_textures(); load_font(ASSET_FONTS_BIGFONT); - set_music_player_voice_limit(0x18); - D_800E18F8 = (u16)0x1000; + set_music_player_voice_limit(24); + D_800E18F8 = 0x1000; if (gViewingCreditsFromCheat) { play_music(SEQUENCE_DARKMOON_CAVERNS); gCreditsArray[84] = gCreditsLastMessageArray[2]; // "THE END" @@ -8973,7 +9042,7 @@ void menu_credits_init(void) { if (settings->bosses & 0x20) { play_music(SEQUENCE_CRESCENT_ISLAND); gCreditsArray[84] = gCreditsLastMessageArray[1]; // "TO BE CONTINUED ..." - D_800E18F8 = (u16)0x61F4; + D_800E18F8 = 0x61F4; D_80126BCC = 9; } else { play_music(SEQUENCE_DARKMOON_CAVERNS); @@ -9323,7 +9392,7 @@ Settings **get_all_save_files_ptr(void) { return (Settings **)gSavefileData; } -void func_8009C49C(void) { +UNUSED void func_8009C49C(void) { D_800DF488 = 0; } @@ -9336,24 +9405,24 @@ void func_8009C4A8(s16 *arg0) { void func_8009C508(s32 arg0) { if (D_80126750[arg0] != 0) { - if (D_80126550[arg0] != 0) { - if ((((*gAssetsMenuElementIds)[arg0] & 0xC000) == 0xC000) && (D_80126550[arg0] != 0)) { + if (gMenuTextures[arg0] != 0) { + if ((((*gAssetsMenuElementIds)[arg0] & 0xC000) == 0xC000) && (gMenuTextures[arg0] != 0)) { set_free_queue_state(0); - free_texture(D_80126550[arg0]); + free_texture(gMenuTextures[arg0]); set_free_queue_state(2); } else { if ((*gAssetsMenuElementIds)[arg0] & 0x8000) { - free_sprite((Sprite *) (u32) D_80126550[arg0]); + free_sprite((Sprite *) (u32) gMenuTextures[arg0]); } else { if ((*gAssetsMenuElementIds)[arg0] & 0x4000) { - free_object((Object *) (u32) D_80126550[arg0]); + free_object((Object *) (u32) gMenuTextures[arg0]); } else { - func_8005FF40((ObjectModel**)(u32)D_80126550[arg0]); + func_8005FF40((ObjectModel**)(u32)gMenuTextures[arg0]); } } } } - D_80126550[arg0] = 0; + gMenuTextures[arg0] = 0; D_80126750[arg0] = 0; D_800DF758--; gParticlePtrList_flush(); @@ -9584,6 +9653,9 @@ void func_8009D324(void) { D_800DF4D8 = 0; } +/** + * Sets the variable controlling which Taj Challenge dialogue is to be used. +*/ void set_next_taj_challenge_menu(s32 arg0) { gNextTajChallengeMenu = arg0; } @@ -9606,7 +9678,7 @@ s32 taj_menu_loop(void) { Settings *settings; // sp24 settings = get_settings(); - if ((gNextTajChallengeMenu != 0) && (sCurrentMenuID == 0)) { + if (gNextTajChallengeMenu && sCurrentMenuID == 0) { sCurrentMenuID = -gNextTajChallengeMenu; } if (sCurrentMenuID == 0) { @@ -9801,6 +9873,11 @@ s32 dialogue_race_defeat(void) { return state; } +/** + * Main function for TT dialogue. + * Handles the controls for navigating the main options, selecting time trial and viewing the game status. + * Also has unused functions to handle pak swapping as well as displaying the messages about them. +*/ s32 tt_menu_loop(void) { s32 currentOption; s32 buttonsPressed; @@ -9818,13 +9895,13 @@ s32 tt_menu_loop(void) { sCurrentMenuID = TT_MENU_INTRODUCTION; } if ((sCurrentMenuID != TT_MENU_GAME_STATUS) && (sCurrentMenuID != TT_MENU_INTRODUCTION)) { - currentOption = 0x78; + currentOption = 120; if (has_ghost_to_save()) { - currentOption = 0x88; + currentOption = 136; } - set_current_dialogue_box_coords(1, 0x18, 0x10, 0xC0, currentOption); + set_current_dialogue_box_coords(1, 24, 16, 192, currentOption); } else { - set_current_dialogue_box_coords(1, 0x18, 0x10, 0xB8, 0xDC); + set_current_dialogue_box_coords(1, 24, 16, 184, 220); } set_dialogue_font(1, ASSET_FONTS_FUNFONT); currentOption = 0; diff --git a/src/menu.h b/src/menu.h index fa4c1d0d..20d61852 100644 --- a/src/menu.h +++ b/src/menu.h @@ -20,6 +20,8 @@ #define TT_MENU_SAVE_GHOST 8 #define TT_MENU_EXIT 10 +#define NUM_CHARACTERS 10 + enum DialogueMenuCases { DIALOGUE_TAJ, DIALOGUE_UNK_01, @@ -103,6 +105,14 @@ typedef enum PakError { PAK_ERROR_CORRUPT } PakError; +typedef enum TitleDemoIndex { + DEMO_LEVEL_ID, + DEMO_PLAYER_COUNT, + DEMO_CUTSCENE_ID, + + DEMO_INDEX_SIZE +} TitleDemoIndex; + /* Size: 0x20 bytes */ // So this is looking to be a struct for menu images. typedef struct unk800DF510 { @@ -138,7 +148,7 @@ typedef struct unk80126460 { } unk80126460; typedef struct unk801263C0 { - s8 unk0; + s8 channelIndex; s8 unk1; union { struct { @@ -295,430 +305,7 @@ typedef struct TrackRenderDetails { }; } TrackRenderDetails; -extern s8 D_800DF450; -extern f32 D_800DF454; -extern s32 gResetTitleScale; -extern s32 gTitleScreenCurrentOption; -extern s32 D_800DF460; -extern s32 D_800DF464; -extern s32 D_800DF468; -extern s32 D_800DF46C; -extern s32 gCurrentMenuId; -extern s32 D_800DF474; -extern s32 D_800DF478; -extern s32 gMenuDelay; -extern s32 gNumberOfReadyPlayers; -extern s32 D_800DF484; -extern s32 D_800DF488; -extern s32 D_800DF48C; -extern s32 D_800DF490; -extern s32 gIsInAdventureTwo; -extern s32 gPlayerHasSeenCautionMenu; -extern s32 *gMenuTextLangTable; - -extern char **gMenuText; - -extern u8 sMenuGuiColourR; -extern u8 sMenuGuiColourG; -extern u8 sMenuGuiColourB; - -extern u8 D_800DF4B0; -extern s32 D_800DF4B4; -extern s32 gIsInTracksMode; -extern s32 gNumberOfActivePlayers; -extern s32 gIsInTwoPlayerAdventure; -extern s32 gTrackIdForPreview; -extern s32 gTrackSelectRow; -extern s32 gSaveFileIndex; - -extern s32 D_800DF4D0; -extern s32 gTrackIdToLoad; -extern s8 D_800DF4D8; -extern s8 gNextTajChallengeMenu; -extern s8 gNeedToCloseDialogueBox; -extern s8 D_800DF4E4[4]; -extern s32 D_800DF4E8; -extern s8 gDialogueOptionTangible; - -// Unused? -extern s32 D_800DF4F0[]; - -extern unk800DF510 sMenuImageProperties[18]; - -extern s16 *gAssetsMenuElementIds[1]; -extern s16 D_800DF754; -extern s16 D_800DF758; -extern unk800DF510 *gMenuImageStack; - -extern s32 sMenuMusicVolume; -extern s32 sMenuGuiOpacity; -extern s32 D_800DF768; - -extern s32 D_800DF794; -extern MenuElement *D_800DF798; -extern s32 D_800DF79C; - -extern s32 D_800DF7A0; -extern char *gTitleMenuStrings[3]; - -// Version text shown on the title screen? See 1:15 in https://www.youtube.com/watch?v=OHSCLcA74ao. -extern char gVersionDisplayText[20]; - -extern s16 sGameTitleTileTextures[12]; - -extern DrawTexture sGameTitleTileOffsets[12]; - -// Title screen cinematic text -extern unk800DF83C D_800DF83C[10]; - -extern s32 D_800DF9F4; - -extern u16 D_800DF9F8[12]; - -extern char *gOptionMenuStrings[7]; - -extern s16 gOptionMenuTextures[8]; - -extern unk800DFA3C gAudioMenuStrings[8]; - -extern s32 D_800DFABC; - -extern s32 gSfxVolumeSliderValue; -extern s32 gMusicVolumeSliderValue; -extern s32 D_800DFAC8; - -// Unsure about typing here. -extern u16 D_800DFACC[8]; - -extern s32 D_800DFADC; -extern s32 D_800DFAE0; - - -// Unsure about typing with these arrays. -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 char **D_800DFBE0[10]; - -extern s32 D_800DFC08; -extern s32 D_800DFC0C; - -// Unused? -extern u8 D_800DFC70[8]; - -extern s16 D_800DFC78[26]; - -extern MenuElement gControllerPakMenuElement[7]; - extern s32 gShowControllerPakMenu; - -extern s32 gActiveMagicCodes; -extern s32 gUnlockedMagicCodes; - -extern char *gMagicCodeMenuStrings[5]; - -extern u8 D_800DFDB4[10][2]; - -extern s16 D_800DFDC8[2]; -extern s16 D_800DFDCC[2]; - -extern s32 D_800DFFD0; -extern s32 D_800DFFD4; - -extern MenuElement gCautionMenuTextElements[14]; - -extern MenuElement gGameSelectTextElemsNoAdv2[7]; - -extern MenuElement gGameSelectTextElemsWithAdv2[9]; - -extern s16 D_800E0398[6]; - -extern s16 D_800E03A4[6]; - -extern ButtonElement gFileSelectButtons[3]; - -extern s16 gFileSelectElementPos[10]; - -extern s32 gMultiplayerSelectedNumberOfRacers; -extern s32 D_800E0414; -extern s32 D_800E0418; - -extern DrawTexture gMenuSelectionArrowUp[2]; -extern DrawTexture gMenuSelectionArrowLeft[2]; -extern DrawTexture gMenuSelectionArrowDown[2]; -extern DrawTexture gMenuSelectionArrowRight[2]; - -extern DrawTexture gRaceSelectionCarTex[3]; -extern DrawTexture gRaceSelectionHoverTex[3]; -extern DrawTexture gRaceSelectionPlaneTex[3]; -extern DrawTexture gRaceSelectionTTOn[3]; -extern DrawTexture gRaceSelectionTTOff[3]; -extern DrawTexture gRaceSelectionCarOptHighlight[2]; -extern DrawTexture gRaceSelectionCarOpt[2]; -extern DrawTexture gRaceSelectionHoverOptHighlight[2]; -extern DrawTexture gRaceSelectionHoverOpt[2]; -extern DrawTexture gRaceSelectionPlaneOptHighlight[2]; -extern DrawTexture gRaceSelectionPlaneOpt[2]; -extern DrawTexture gRaceSelectionTTOnOptHighlight[2]; -extern DrawTexture gRaceSelectionTTOffOptHighlight[2]; -extern DrawTexture gRaceSelectionTTOnOpt[2]; -extern DrawTexture gRaceSelectionTTOffOpt[2]; -extern DrawTexture gRaceSelectionPlayer1Texture[2]; -extern DrawTexture gRaceSelectionPlayer2Texture[2]; -extern DrawTexture gRaceSelectionPlayer3Texture[2]; -extern DrawTexture gRaceSelectionPlayer4Texture[2]; -extern DrawTexture gRaceSelectionVehicleTitleTexture[2]; -extern DrawTexture gRaceSelectionTTTitleTexture[2]; -extern DrawTexture D_800E05D4[4]; -extern DrawTexture D_800E05F4[4]; -extern DrawTexture gRaceSelectionTTTexture[2]; - -extern DrawTexture *gRaceSelectionImages[9]; - -extern DrawTexture *D_800E0648[6]; -extern DrawTexture *D_800E0660[6]; - -extern DrawTexture *gMenuSelectionArrows[4]; - -extern u16 D_800E0688[20]; - -extern u16 D_800E06B0[10]; - -extern s16 D_800E06C4[8]; - -extern s16 D_800E06D4[8]; - -extern ButtonTextElement gTwoPlayerRacerCountMenu; - -extern ButtonElement D_800E0700; - -extern s16 D_800E0710[16]; - -extern s16 D_800E0730[19]; -extern s16 D_800E0758[54]; - -extern s16 D_800E07C4[14]; - -extern s16 D_800E07E0[4]; - -extern s16 D_800E07E8[36]; - -extern s16 D_800E0830[8]; - -extern s16 D_800E0840[148]; - -extern Vertex *D_800E0968; -extern s32 D_800E096C; -extern unk800E0970 *D_800E0970; -extern s32 D_800E0974; -extern char* gQMarkPtr; -extern s32 D_800E097C; -extern s32 D_800E0980; -extern s32 gMenuOptionCap; -extern s32 gMenuSubOption; -extern s32 D_800E098C; - -extern s16 D_800E0A24[14]; - -extern s16 D_800E0A40[8]; - -extern DrawTexture D_800E0A50[2]; -extern DrawTexture D_800E0A60[2]; -extern DrawTexture D_800E0A70[2]; -extern DrawTexture D_800E0A90[2]; -extern DrawTexture D_800E0A80[2]; -extern DrawTexture D_800E0AA0[2]; -extern DrawTexture D_800E0AB0[2]; -extern DrawTexture D_800E0AC0[2]; -extern DrawTexture D_800E0AD0[2]; -extern DrawTexture D_800E0AE0[2]; - -extern DrawTexture* D_800E0AF0[10]; - -extern s16 D_800E0B18[74]; - -extern char gFirstPlace[4]; -extern char gSecondPlace[4]; -extern char gThirdPlace[4]; -extern char gFourthPlace[4]; -extern char gFifthPlace[4]; -extern char gSixthPlace[4]; -extern char gSeventhPlace[4]; -extern char gEighthPlace[4]; - -extern char *gRacePlacementsArray[8]; - -extern MenuElement D_800E0BEC[8]; - -extern MenuElement D_800E0CEC[11]; - -extern MenuElement D_800E0E4C[9]; - -// Valid characters for name input. Must be u8, not char. -extern u8 gFileNameValidChars[32]; - -extern char D_800E0F8C; -extern s32 D_800E0F90; -extern s32 D_800E0F94; -extern s32 D_800E0F98; -extern s32 D_800E0F9C; -extern s32 D_800E0FA0; -extern s32 D_800E0FA4; -extern char D_800E0FA8[4]; -extern s32 D_800E0FAC; -extern s32 D_800E0FB0; - -extern s16 D_800E0FB4[18]; - -extern s16 D_800E0FD8[6]; - -extern s32 D_800E0FE4; -extern s32 gTrophyRaceWorldId; -extern s32 gTrophyRaceRound; -extern s32 D_800E0FF0; - -// Unused? Not sure what this is. -extern u32 D_800E0FF4[4]; - -// Number of points to award in trophy race for each place? -extern s32 gTrophyRacePointsArray[8]; - -extern s16 D_800E1024[14]; - -extern s16 D_800E13A8[138]; - -extern s16* D_800E14BC[32]; - -extern s16 D_800E1708[34]; - -extern s16 D_800E174C[4]; - -extern s16 D_800E1754[10]; - -extern s16 D_800E1768[12]; - -//extern u32 dCreditsFade[22]; - -extern s16 D_800E17D8[12]; - -extern s16 D_800E17F0[2]; - -extern s16 D_800E17F4[130]; - -extern u16 D_800E18F8; - -// Unused? -extern u16 D_800E18FC[30]; - -// Credits text look-up table -extern char *gCreditsArray[87]; - -// Credits text look-up table (time trials time sheet) -extern char *gCreditsBestTimesArray[20]; - -// Another credits text look-up table -extern char *gCreditsLastMessageArray[5]; - -extern s32 gCheatsInCreditsArray[21]; - -extern s32 gViewingCreditsFromCheat; - -extern MenuElement D_800E1B50[9]; - -extern Gfx dMenuHudSettings[6]; - -extern s8 D_800E1CD0[32]; - -extern s32 *D_800E1DA4[2]; - -extern s32 *D_800E1DAC[2]; - -extern s32 D_800E1DB4; -extern s32 D_800E1DB8; -extern s32 D_800E1DBC; - -extern s32 D_800E1DC0; -extern s32 D_800E1DC4; - -extern s16 D_800E1DC8[16]; - -extern char gRareCopyrightString[24]; - -extern char *D_800E1E10; - -extern s32 D_800E1E1C; - -extern s8 D_800E1E20[8]; - -extern s8 D_800E1E28; - -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]; -extern Settings *gSavefileData[4]; - -extern DrawTexture D_800DFC10[2]; -extern DrawTexture D_800DFC20[2]; -extern DrawTexture D_800DFC30[2]; -extern DrawTexture D_800DFC40[2]; -extern DrawTexture D_800DFC50[2]; -extern DrawTexture D_800DFC60[2]; -extern Gfx *sMenuCurrDisplayList; -extern const char D_800E8208[]; -extern s32 gOptionBlinkTimer; -extern s32 D_801263E0; -extern s32 D_80126A00; -extern unk800861C8 *D_80126A04; -extern s32 D_80126A08; -extern unk800861C8 *D_80126A0C; //Allocated 2560 bytes in menu_save_options_init. Possibly an array of 2 large structs. -extern f32 D_80126BDC; -extern f32 D_80126BEC; -extern SavefileInfo gSavefileInfo[4]; - -extern s8 gControllersXAxisDirection[4]; -extern s8 gControllersYAxisDirection[4]; -extern TextureHeader *D_80126550[128]; -extern s32 D_801267D0; -extern u8 D_801269C4[4]; -extern f32 gTrackSelectX; -extern f32 gTrackSelectY; -extern f32 D_801269E8; -extern f32 D_801269EC; -extern s8 gPlayerSelectVehicle[4]; -extern s16 gFFLUnlocked; -extern s32 gOpacityDecayTimer; -extern s32 gTrackSelectViewportY; -extern s16 gFFLUnlocked; -extern s32 D_80126924; -extern s32 D_80126928; -extern s32 D_8012692C; -extern TrackRenderDetails gTrackSelectRenderDetails[9]; -extern s32 D_801269F0; -extern s32 gSelectedTrackX; -extern s32 gSelectedTrackY; - extern u8 *__ROM_END; s32 get_random_number_from_range(s32, s32); // No file to pull from yet. @@ -770,7 +357,7 @@ void menu_file_select_init(void); void render_menu_image(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6); void func_8008E428(void); void assign_vehicle_icon_textures(void); -void func_8008E4B0(void); +void assign_menu_arrow_textures(void); void func_8008F534(void); void func_80090ED8(s32 updateRate); s32 func_80092BE0(s32 mapId); @@ -781,7 +368,7 @@ void n_alSeqpDelete(void); void assign_racer_portrait_textures(void); void func_80094C14(s32 arg0); void func_80096790(void); -void menu_11_init(void); +void menu_results_init(void); void func_800976CC(void); void decompress_filename_string(u32 compressedFilename, char *output, s32 length); s32 compress_filename_string(char *filename, s32 length); @@ -819,7 +406,6 @@ s32 get_number_of_active_players(void); s32 get_active_player_count(void); s32 get_multiplayer_racer_count(void); Settings **get_all_save_files_ptr(void); -void func_8009C49C(void); void func_8009C4A8(s16 *arg0); void func_8009C508(s32 arg0); void func_8009C674(s16 *arg0); diff --git a/src/object_functions.c b/src/object_functions.c index b05b7894..0ae0da02 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -145,7 +145,7 @@ void obj_init_scenery(Object *obj, LevelObjectEntry_Scenery *entry) { radius /= 64; obj->segment.trans.scale = obj->segment.header->scale * radius; obj->shadow->scale = obj->segment.header->shadowScale * radius; - obj->segment.object.numModelIDs = entry->numModelIDs; + obj->segment.object.modelIndex = entry->modelIndex; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); if (entry->solid) { obj->interactObj->flags = INTERACT_FLAGS_SOLID; @@ -155,8 +155,8 @@ void obj_init_scenery(Object *obj, LevelObjectEntry_Scenery *entry) { obj->interactObj->unk16 = -5; obj->interactObj->unk17 = entry->solid; } - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } obj->properties.scenery.interactObj = NULL; obj->properties.common.unk4 = 0; @@ -865,8 +865,8 @@ void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry_Lighthouse radius /= 64; obj->segment.trans.scale = obj->segment.header->scale * radius; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } obj->interactObj->flags = INTERACT_FLAGS_SOLID; obj->interactObj->unk11 = 2; @@ -914,8 +914,8 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W radius /= 64; obj->segment.trans.scale = objHeader->scale * radius; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); - if (obj->segment.object.numModelIDs >= objHeader->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= objHeader->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } obj->interactObj->flags = INTERACT_FLAGS_TANGIBLE; obj->interactObj->unk11 = 0; @@ -982,8 +982,8 @@ void obj_init_groundzipper(Object *obj, LevelObjectEntry_GroundZipper *entry) { obj->segment.trans.scale = header->scale * radius; obj->shadow->scale = header->shadowScale * radius; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } obj->properties.zipper.radius = (s32) (28.0f * radius) + 15; if (obj->properties.zipper.radius < 0) { @@ -1076,8 +1076,8 @@ void obj_loop_unknown58(Object *obj, s32 updateRate) { if (vehicleID == VEHICLE_HOVERCRAFT || vehicleID == VEHICLE_PLANE) { someObj = (Object *) obj60->unk4[0]; someObj->segment.trans.y_rotation = 0x4000; - someObj->segment.object.numModelIDs++; - someObj->segment.object.numModelIDs &= 1; + someObj->segment.object.modelIndex++; + someObj->segment.object.modelIndex &= 1; } } } @@ -1752,9 +1752,9 @@ void obj_loop_vehicleanim(Object *obj, s32 updateRate) { if (obj60->unk0 > 0) { someObj = obj60->unk0 == 3 ? obj60->unkC : obj60->unk4; someObj->segment.trans.y_rotation = 0x4000; - someObj->segment.object.numModelIDs++; - if (someObj->segment.object.numModelIDs == someObj->segment.header->numberOfModelIds) { - someObj->segment.object.numModelIDs = 0; + someObj->segment.object.modelIndex++; + if (someObj->segment.object.modelIndex == someObj->segment.header->numberOfModelIds) { + someObj->segment.object.modelIndex = 0; } } } @@ -1962,7 +1962,7 @@ void obj_init_bombexplosion(Object *obj, LevelObjectEntry_BombExplosion *entry) LevelObjectEntry_BombExplosion *entry2; obj->segment.animFrame = 0; obj->segment.trans.scale = 0.5f; - obj->segment.object.numModelIDs = get_random_number_from_range(0, obj->segment.header->numberOfModelIds - 1); + obj->segment.object.modelIndex = get_random_number_from_range(0, obj->segment.header->numberOfModelIds - 1); entry2 = entry; // Needed for a match. obj->properties.bombExplosion.timer = 0; obj->properties.bombExplosion.unk4 = 0xFF; @@ -3128,7 +3128,7 @@ void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { if (obj64->unkE == -1) { rmonPrintf("Illegal door no!!!\n"); } - obj->segment.object.numModelIDs = entry->modelIndex; + obj->segment.object.modelIndex = entry->modelIndex; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->closedRotation); obj64->homeY = obj->segment.trans.y_position; obj64->unk8 = 0; @@ -3146,8 +3146,8 @@ void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { obj->interactObj->unk11 = 2; obj->interactObj->hitboxRadius = 20; obj->interactObj->pushForce = 0; - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } } @@ -3157,7 +3157,7 @@ void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { Object_TTDoor *obj64; f32 radius; - obj->segment.object.numModelIDs = 0; + obj->segment.object.modelIndex = 0; obj64 = &obj->unk64->tt_door; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); obj64->doorID = entry->doorID; @@ -3177,8 +3177,8 @@ void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { obj->interactObj->unk11 = 2; obj->interactObj->hitboxRadius = 20; obj->interactObj->pushForce = 0; - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } } @@ -3198,9 +3198,9 @@ void obj_loop_ttdoor(Object *obj, s32 updateRate) { ttDoor = (Object_TTDoor *) obj->unk64; settings = get_settings(); if (ttDoor->doorID == 0) { - obj->segment.object.numModelIDs = D_800DCA94[settings->ttAmulet]; + obj->segment.object.modelIndex = D_800DCA94[settings->ttAmulet]; } else { - obj->segment.object.numModelIDs = D_800DCA9C[settings->ttAmulet]; + obj->segment.object.modelIndex = D_800DCA9C[settings->ttAmulet]; } if (obj->interactObj->distance < ttDoor->unk12 && (settings->ttAmulet < 4 || *settings->balloonsPtr < 47)) { racerObj = obj->interactObj->obj; @@ -3358,7 +3358,7 @@ void obj_loop_trigger(Object *obj, UNUSED s32 updateRate) { void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *entry) { Object_Bridge_WhaleRamp *temp = &obj->unk64->bridge_whale_ramp; - obj->segment.object.numModelIDs = entry->numModelIDs; + obj->segment.object.modelIndex = entry->modelIndex; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); temp->unk0 = obj->segment.trans.y_position; obj->interactObj->flags = INTERACT_FLAGS_SOLID | INTERACT_FLAGS_UNK_0020; @@ -3366,8 +3366,8 @@ void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *e obj->interactObj->hitboxRadius = 20; obj->interactObj->pushForce = 0; temp->unk4 = 0; - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } } @@ -4007,12 +4007,12 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) entry->unk8 = 0; } - if (obj->segment.object.numModelIDs >= obj->segment.header->numberOfModelIds) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex >= obj->segment.header->numberOfModelIds) { + obj->segment.object.modelIndex = 0; } - obj->segment.object.numModelIDs = entry->balloonType; - obj->properties.weaponBalloon.balloonID = obj->segment.object.numModelIDs; + obj->segment.object.modelIndex = entry->balloonType; + obj->properties.weaponBalloon.balloonID = obj->segment.object.modelIndex; radius = entry->radius & 0xFF; if (radius < 10) { @@ -4613,7 +4613,7 @@ GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_texscroll.s") /* Official name: rgbalightInit */ void obj_init_rgbalight(Object *obj, LevelObjectEntry_RgbaLight *entry, UNUSED s32 arg2) { - obj->unk64 = func_80031CAC(obj, entry); + obj->unk64 = (Object_64 *) func_80031CAC(obj, entry); } /** @@ -4656,7 +4656,7 @@ void obj_init_log(Object *obj, LevelObjectEntry_Log *entry, UNUSED s32 arg2) { } radius /= 64; obj->segment.trans.scale = obj->segment.header->scale * radius; - obj->segment.object.numModelIDs = entry->numModelIDs; + obj->segment.object.modelIndex = entry->modelIndex; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->angleY); } @@ -4972,7 +4972,7 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { obj64->scaleY = 1.0f; if (obj64->drumstick) { - obj->segment.object.numModelIDs = TRUE; + obj->segment.object.modelIndex = TRUE; /** * Don't spawn the chicken frog if drumstick is already unlocked, or * if the player hasn't completed the trophy races yet. @@ -4981,7 +4981,7 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { free_object(obj); } } else { - obj->segment.object.numModelIDs = FALSE; + obj->segment.object.modelIndex = FALSE; } } diff --git a/src/object_models.c b/src/object_models.c index 4f1b2da9..7378d449 100644 --- a/src/object_models.c +++ b/src/object_models.c @@ -172,19 +172,19 @@ GLOBAL_ASM("asm/non_matchings/object_models/func_80061A00.s") void func_80061C0C(Object *obj) { ObjectModel *mdl; - Object_68 *temp_a1; + Object_68 *gfxData; s32 var_v1; - if (obj->segment.object.numModelIDs < 0) { - obj->segment.object.numModelIDs = 0; + if (obj->segment.object.modelIndex < 0) { + obj->segment.object.modelIndex = 0; } var_v1 = obj->segment.header->numberOfModelIds - 1; - if (var_v1 < obj->segment.object.numModelIDs) { - obj->segment.object.numModelIDs = var_v1; + if (var_v1 < obj->segment.object.modelIndex) { + obj->segment.object.modelIndex = var_v1; } - temp_a1 = obj->unk68[obj->segment.object.numModelIDs]; - mdl = temp_a1->objModel; - if (temp_a1->objModel->animations != NULL) { + gfxData = obj->unk68[obj->segment.object.modelIndex]; + mdl = gfxData->objModel; + if (gfxData->objModel->animations != NULL) { if (obj->segment.object.animationID < 0) { obj->segment.object.animationID = 0; } @@ -201,7 +201,7 @@ void func_80061C0C(Object *obj) { } if (var_v1 < obj->segment.animFrame >> 4) { obj->segment.animFrame = 0; - temp_a1->unk10 = -1; + gfxData->unk10 = -1; } } } diff --git a/src/objects.c b/src/objects.c index fbeb7bf3..2e9272c8 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1003,7 +1003,7 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) { break; case BHV_ANIMATED_OBJECT_4: var_a2 = get_character_id_from_slot(PLAYER_ONE); - curObj->segment.object.numModelIDs = var_a2; + curObj->segment.object.modelIndex = var_a2; assetCount = var_a2 + 1; break; case BHV_UNK_5B: @@ -1011,13 +1011,13 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) { if (var_a2) { var_a2--; assetCount = var_a2 + 1; - curObj->segment.object.numModelIDs = var_a2; + curObj->segment.object.modelIndex = var_a2; } break; case BHV_DYNAMIC_LIGHT_OBJECT_2: var_a2 = settings->wizpigAmulet; assetCount = var_a2 + 1; - curObj->segment.object.numModelIDs = settings->wizpigAmulet; + curObj->segment.object.modelIndex = settings->wizpigAmulet; break; case BHV_ROCKET_SIGNPOST_2: objType = settings->trophies; @@ -1028,7 +1028,7 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) { } objType >>= 2; } - curObj->segment.object.numModelIDs = var_a2; + curObj->segment.object.modelIndex = var_a2; assetCount = var_a2 + 1; break; case BHV_GOLDEN_BALLOON: @@ -1636,7 +1636,7 @@ void func_80011134(Object *arg0, s32 arg1) { s32 var_s1; u8 temp_v0; - temp_s3 = arg0->unk68[arg0->segment.object.numModelIDs]->objModel; + temp_s3 = arg0->unk68[arg0->segment.object.modelIndex]->objModel; temp_s5 = temp_s3->unk50; temp_s4 = temp_s3->batches; for (var_s1 = 0; temp_s5 > 0 && var_s1 < temp_s3->numberOfBatches; var_s1++) { @@ -1889,7 +1889,7 @@ void render_misc_model(Object *obj, Vertex *verts, u32 numVertices, Triangle *tr load_and_set_texture(&gObjectCurrDisplayList, (TextureHeader* ) tex, flags, texOffset); gSPVertexDKR(gObjectCurrDisplayList++, OS_K0_TO_PHYSICAL(verts), numVertices, 0); gSPPolygon(gObjectCurrDisplayList++, OS_K0_TO_PHYSICAL(triangles), numTriangles, hasTexture); - func_80069A40(&gObjectCurrDisplayList); + apply_matrix_from_stack(&gObjectCurrDisplayList); } /** @@ -1994,7 +1994,7 @@ void render_3d_billboard(Object *obj) { } else { gDPSetEnvColor(gObjectCurrDisplayList++, 255, 255, 255, 0); } - gfxData = obj->unk68[obj->segment.object.numModelIDs]; + gfxData = obj->unk68[obj->segment.object.modelIndex]; bubbleTrap = NULL; if (obj->behaviorId == BHV_FIREBALL_OCTOWEAPON_2) { bubbleTrap = obj->properties.fireball.obj; @@ -2060,7 +2060,7 @@ void render_3d_model(Object *obj) { ObjectModel *objModel; Object_68 *something; - obj68 = obj->unk68[obj->segment.object.numModelIDs]; + obj68 = obj->unk68[obj->segment.object.modelIndex]; if (obj68 != NULL) { objModel = obj68->objModel; hasOpacity = FALSE; @@ -2118,7 +2118,7 @@ void render_3d_model(Object *obj) { if (racerObj != NULL) { object_undo_player_tumble(obj); if (obj->segment.object.animationID == 0 || racerObj->vehicleID >= VEHICLE_TRICKY) { - func_80069790(&gObjectCurrDisplayList, &gObjectCurrMatrix, obj68, racerObj->headAngle); + apply_head_turning_matrix(&gObjectCurrDisplayList, &gObjectCurrMatrix, obj68, racerObj->headAngle); spB0 = TRUE; } else { racerObj->headAngle = 0; @@ -2171,7 +2171,7 @@ void render_3d_model(Object *obj) { if (!(loopObj->segment.trans.flags & OBJ_FLAGS_INVISIBLE)) { index = obj->unk60->unk2C[i]; if (index >= 0 && index < objModel->unk18) { - something = loopObj->unk68[loopObj->segment.object.numModelIDs]; + something = loopObj->unk68[loopObj->segment.object.modelIndex]; vtxX = obj->unk44[objModel->unk14[index]].x; vtxY = obj->unk44[objModel->unk14[index]].y; vtxZ = obj->unk44[objModel->unk14[index]].z; @@ -2221,7 +2221,7 @@ void render_3d_model(Object *obj) { index = obj->segment.header->unk58; if (index >= 0 && index < objModel->unk18) { flags = (RENDER_Z_COMPARE | RENDER_FOG_ACTIVE | RENDER_Z_UPDATE); - something = loopObj->unk68[loopObj->segment.object.numModelIDs]; + something = loopObj->unk68[loopObj->segment.object.modelIndex]; vtxX = obj->unk44[objModel->unk14[index]].x; vtxY = obj->unk44[objModel->unk14[index]].y; vtxZ = obj->unk44[objModel->unk14[index]].z; @@ -2250,7 +2250,7 @@ void render_3d_model(Object *obj) { if (hasEnvCol) { gDPSetEnvColor(gObjectCurrDisplayList++, 255, 255, 255, 0); } - func_80069A40(&gObjectCurrDisplayList); + apply_matrix_from_stack(&gObjectCurrDisplayList); } } @@ -2458,14 +2458,14 @@ void func_80012F94(Object *obj) { if (numberOfModels < var_t0) { var_t0 = numberOfModels; } - obj->segment.object.numModelIDs = var_t0; + obj->segment.object.modelIndex = var_t0; if ((obj->shading != NULL) && (obj->shading->unk0 < 0.6f)) { objRacer->lightFlags |= RACER_LIGHT_NIGHT; } else { objRacer->lightFlags &= ~RACER_LIGHT_NIGHT; } racerLightTimer = objRacer->lightFlags & RACER_LIGHT_TIMER; - new_var = obj->unk68[obj->segment.object.numModelIDs]; + new_var = obj->unk68[obj->segment.object.modelIndex]; temp_a1_3 = new_var->objModel; if (racerLightTimer != 0) { racerLightTimer--; @@ -2627,7 +2627,7 @@ void render_racer_shield(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o } else { gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, 255, 255, 255, 255); } - func_80068FA8(&gObjectCurrDisplayList, &gObjectCurrMatrix, gShieldEffectObject, obj, shear); + apply_object_shear_matrix(&gObjectCurrDisplayList, &gObjectCurrMatrix, gShieldEffectObject, obj, shear); func_800143A8(mdl, gShieldEffectObject, 0, 4, 0); gDkrInsertMatrix(gObjectCurrDisplayList++, 0, G_MTX_DKR_INDEX_0); if (racer->shieldTimer < 64) { @@ -2687,7 +2687,7 @@ void render_racer_magnet(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o gMagnetEffectObject->unk44 = (Vertex *) gfxData->unk4[gfxData->unk1F]; opacity = (((D_8011B078[(var_t0 * 4) + 1] * 8) & 0x7F) + 0x80); func_8007F594(&gObjectCurrDisplayList, 2, 0xFFFFFF00 | opacity, gMagnetColours[racer->magnetModelID]); - func_80068FA8(&gObjectCurrDisplayList, &gObjectCurrMatrix, gMagnetEffectObject, obj, shear); + apply_object_shear_matrix(&gObjectCurrDisplayList, &gObjectCurrMatrix, gMagnetEffectObject, obj, shear); D_800DC720 = TRUE; func_800143A8(mdl, gMagnetEffectObject, 0, 4, 0); D_800DC720 = FALSE; @@ -3284,13 +3284,19 @@ s32 func_8001B738(s32 controllerIndex) { return func_80059B7C(controllerIndex, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724); } +/** + * Returns whether there's valid ghost data to save. +*/ u8 has_ghost_to_save(void) { return gHasGhostToSave; } -void func_8001B790(void) { +/** + * Resets the variables used for ghost data saving. +*/ +void set_ghost_none(void) { D_8011D5AC = -1; - gHasGhostToSave = 0; + gHasGhostToSave = FALSE; } Object *func_8001B7A8(Object *racer, s32 position, f32 *distance) { diff --git a/src/objects.h b/src/objects.h index 903fff00..cf0dfd13 100644 --- a/src/objects.h +++ b/src/objects.h @@ -372,7 +372,7 @@ Object *func_8001B640(void); s32 func_8001B650(void); s32 func_8001B738(s32 controllerIndex); u8 has_ghost_to_save(void); -void func_8001B790(void); +void set_ghost_none(void); f32 func_8001B834(Object_Racer *racer1, Object_Racer *racer2); CheckpointNode *get_checkpoint_node(s32 arg0); CheckpointNode *find_next_checkpoint_node(s32 arg0, s32 arg1); diff --git a/src/particles.c b/src/particles.c index e9fd9674..441fe71a 100644 --- a/src/particles.c +++ b/src/particles.c @@ -1598,7 +1598,7 @@ void render_particle(Particle *particle, Gfx **dList, MatrixS **mtx, Vertex **vt load_and_set_texture(dList, (TextureHeader *) modelData->texture, renderFlags, particle->segment.textureFrame << 8); gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(modelData->vertices), modelData->vertexCount, 0); gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(modelData->triangles), modelData->triangleCount, TRIN_ENABLE_TEXTURE); - func_80069A40(dList); + apply_matrix_from_stack(dList); } } if (alpha != 255 || particle->brightness != 255) { diff --git a/src/racer.c b/src/racer.c index ddeb99c8..40180c6d 100644 --- a/src/racer.c +++ b/src/racer.c @@ -4341,8 +4341,8 @@ void handle_racer_items(Object *obj, Object_Racer *racer, UNUSED s32 updateRate) if (gCurrentButtonsPressed & Z_TRIG || racer->raceFinished || racer->attackType) { scaleY = 0; scaleZ = 0; - if (obj->unk68[obj->segment.object.numModelIDs] != NULL) { - model = obj->unk68[obj->segment.object.numModelIDs]->objModel; + if (obj->unk68[obj->segment.object.modelIndex] != NULL) { + model = obj->unk68[obj->segment.object.modelIndex]->objModel; if (obj->segment.header->unk58 > -1 && obj->segment.header->unk58 < model->unk18) { if (obj->unk44 != NULL) { heldObjData = obj->unk44; diff --git a/src/textures_sprites.c b/src/textures_sprites.c index cbe41ec5..1f5c5643 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -804,7 +804,7 @@ Sprite *func_8007C52C(s32 arg0) { if (gSpriteCache[(arg0 << 1) + 1] == -1) { return NULL; } - return gSpriteCache[(arg0 << 1) + 1]; + return (Sprite *) gSpriteCache[(arg0 << 1) + 1]; } s32 get_texture_size_from_id(s32 id) { diff --git a/src/tracks.c b/src/tracks.c index 91a96e40..3e95b801 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -1344,7 +1344,7 @@ void func_8002A31C(void) { s32 i; f32 w; - cameraMatrix = func_80069DA4(); + cameraMatrix = get_projection_matrix_f32(); for (i = 0; i < ARRAY_COUNT(D_8011D0F8);) { x = D_800DC8AC[i][0].x; y = D_800DC8AC[i][0].y; diff --git a/src/weather.c b/src/weather.c index c21e6a67..e913559c 100644 --- a/src/weather.c +++ b/src/weather.c @@ -309,7 +309,7 @@ void process_weather(Gfx **currDisplayList, MatrixS **currHudMat, Vertex **currH gCurrWeatherVertexList = *currHudVerts; gCurrWeatherTriList = *currHudTris; D_80127C1C = get_active_camera_segment(); - D_80127C20 = func_80069DBC(); + D_80127C20 = get_camera_matrix(); if (gWeatherType != WEATHER_SNOW) { handle_weather_rain(updateRate); } else { @@ -378,7 +378,7 @@ void render_falling_snow(void) { D_80127C04 = 2; if (D_800E2908 >= 4) { i = 0; - mtx = (u32) func_80069DB0(); + mtx = (u32) get_projection_matrix_s16(); gSPMatrix(gCurrWeatherDisplayList++, OS_PHYSICAL_TO_K0(mtx ^ 0), G_MTX_DKR_INDEX_0); gDkrInsertMatrix(gCurrWeatherDisplayList++, G_MTX_DKR_INDEX_0, 0); load_and_set_texture_no_offset(&gCurrWeatherDisplayList, D_800E28D8.unk8, RENDER_Z_COMPARE);