load img renames and first step or label menu items

This commit is contained in:
AloXado320
2024-10-13 17:20:00 -05:00
parent 52d8c3e21a
commit 8050db3edd
13 changed files with 362 additions and 356 deletions
@@ -240,7 +240,7 @@ glabel L8009E888
/* 09F488 8009E888 3C040200 */ lui $a0, %hi(D_020014C8) # $a0, 0x200
/* 09F48C 8009E88C AFBF007C */ sw $ra, 0x7c($sp)
/* 09F490 8009E890 248414C8 */ addiu $a0, %lo(D_020014C8) # addiu $a0, $a0, 0x14c8
/* 09F494 8009E894 0C0265AF */ jal load_menu_img2
/* 09F494 8009E894 0C0265AF */ jal load_menu_img_comp_type
/* 09F498 8009E898 00002825 */ move $a1, $zero
/* 09F49C 8009E89C 3C040200 */ lui $a0, %hi(D_020014C8) # $a0, 0x200
/* 09F4A0 8009E8A0 0C026E55 */ jal func_8009B954
@@ -264,7 +264,7 @@ glabel L8009E8E4
/* 09F4E4 8009E8E4 3C040200 */ lui $a0, %hi(D_02001540) # $a0, 0x200
/* 09F4E8 8009E8E8 AFBF007C */ sw $ra, 0x7c($sp)
/* 09F4EC 8009E8EC 24841540 */ addiu $a0, %lo(D_02001540) # addiu $a0, $a0, 0x1540
/* 09F4F0 8009E8F0 0C0265AF */ jal load_menu_img2
/* 09F4F0 8009E8F0 0C0265AF */ jal load_menu_img_comp_type
/* 09F4F4 8009E8F4 00002825 */ move $a1, $zero
/* 09F4F8 8009E8F8 3C040200 */ lui $a0, %hi(D_02001540) # $a0, 0x200
/* 09F4FC 8009E8FC 0C026E55 */ jal func_8009B954
@@ -289,7 +289,7 @@ glabel L8009E940
/* 09F544 8009E944 AFBF007C */ sw $ra, 0x7c($sp)
/* 09F548 8009E948 2484157C */ addiu $a0, %lo(D_0200157C) # addiu $a0, $a0, 0x157c
/* 09F54C 8009E94C 00002825 */ move $a1, $zero
/* 09F550 8009E950 0C0265AF */ jal load_menu_img2
/* 09F550 8009E950 0C0265AF */ jal load_menu_img_comp_type
/* 09F554 8009E954 00001025 */ move $v0, $zero
/* 09F558 8009E958 3C040200 */ lui $a0, %hi(D_02001874) # $a0, 0x200
/* 09F55C 8009E95C 0C026461 */ jal load_menu_img
@@ -517,28 +517,28 @@ glabel L8009ECAC
/* 09F8B8 8009ECB8 3C04800E */ lui $a0, %hi(gMenuTexturesBackground)
/* 09F8BC 8009ECBC 00982021 */ addu $a0, $a0, $t8
/* 09F8C0 8009ECC0 8C847D4C */ lw $a0, %lo(gMenuTexturesBackground)($a0)
/* 09F8C4 8009ECC4 0C0265AF */ jal load_menu_img2
/* 09F8C4 8009ECC4 0C0265AF */ jal load_menu_img_comp_type
/* 09F8C8 8009ECC8 00002825 */ move $a1, $zero
/* 09F8CC 8009ECCC 10000241 */ b .L8009F5D4
/* 09F8D0 8009ECD0 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8009ECD4
/* 09F8D4 8009ECD4 0C01BB91 */ jal load_mario_kart_64_logo
/* 09F8D4 8009ECD4 0C01BB91 */ jal load_game_logo
/* 09F8D8 8009ECD8 00000000 */ nop
/* 09F8DC 8009ECDC 3C028019 */ lui $v0, %hi(gMenuTextureBufferIndex) # $v0, 0x8019
/* 09F8E0 8009ECE0 2442E110 */ addiu $v0, %lo(gMenuTextureBufferIndex) # addiu $v0, $v0, -0x1ef0
/* 09F8DC 8009ECDC 3C028019 */ lui $v0, %hi(sMenuTextureBufferIndex) # $v0, 0x8019
/* 09F8E0 8009ECE0 2442E110 */ addiu $v0, %lo(sMenuTextureBufferIndex) # addiu $v0, $v0, -0x1ef0
/* 09F8E4 8009ECE4 8C590000 */ lw $t9, ($v0)
/* 09F8E8 8009ECE8 3C010001 */ lui $at, 1
/* 09F8EC 8009ECEC 3C040200 */ lui $a0, %hi(D_020045E8) # $a0, 0x200
/* 09F8EC 8009ECEC 3C040200 */ lui $a0, %hi(gMenuTextureCopyright1996) # $a0, 0x200
/* 09F8F0 8009ECF0 03217021 */ addu $t6, $t9, $at
/* 09F8F4 8009ECF4 AC4E0000 */ sw $t6, ($v0)
/* 09F8F8 8009ECF8 0C026461 */ jal load_menu_img
/* 09F8FC 8009ECFC 248445E8 */ addiu $a0, %lo(D_020045E8) # addiu $a0, $a0, 0x45e8
/* 09F8FC 8009ECFC 248445E8 */ addiu $a0, %lo(gMenuTextureCopyright1996) # addiu $a0, $a0, 0x45e8
/* 09F900 8009ED00 10000234 */ b .L8009F5D4
/* 09F904 8009ED04 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8009ED08
/* 09F908 8009ED08 3C040200 */ lui $a0, %hi(D_02004610) # $a0, 0x200
/* 09F908 8009ED08 3C040200 */ lui $a0, %hi(gMenuTexturePushStartButton) # $a0, 0x200
/* 09F90C 8009ED0C 0C026461 */ jal load_menu_img
/* 09F910 8009ED10 24844610 */ addiu $a0, %lo(D_02004610) # addiu $a0, $a0, 0x4610
/* 09F910 8009ED10 24844610 */ addiu $a0, %lo(gMenuTexturePushStartButton) # addiu $a0, $a0, 0x4610
/* 09F914 8009ED14 1000022F */ b .L8009F5D4
/* 09F918 8009ED18 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8009ED1C
@@ -548,11 +548,11 @@ glabel L8009ED1C
/* 09F928 8009ED28 3C04800E */ lui $a0, %hi(gMenuTexturesBackground)
/* 09F92C 8009ED2C 008F2021 */ addu $a0, $a0, $t7
/* 09F930 8009ED30 8C847D4C */ lw $a0, %lo(gMenuTexturesBackground)($a0)
/* 09F934 8009ED34 0C0265AF */ jal load_menu_img2
/* 09F934 8009ED34 0C0265AF */ jal load_menu_img_comp_type
/* 09F938 8009ED38 00002825 */ move $a1, $zero
/* 09F93C 8009ED3C 3C040200 */ lui $a0, %hi(D_02004B74) # $a0, 0x200
/* 09F940 8009ED40 24844B74 */ addiu $a0, %lo(D_02004B74) # addiu $a0, $a0, 0x4b74
/* 09F944 8009ED44 0C0265AF */ jal load_menu_img2
/* 09F944 8009ED44 0C0265AF */ jal load_menu_img_comp_type
/* 09F948 8009ED48 00002825 */ move $a1, $zero
/* 09F94C 8009ED4C 00002025 */ move $a0, $zero
/* 09F950 8009ED50 0C026C29 */ jal convert_img_to_greyscale
@@ -583,7 +583,7 @@ glabel L8009ED9C
/* 09F9AC 8009EDAC 0C026449 */ jal segmented_to_virtual_dupe
/* 09F9B0 8009EDB0 8C84822C */ lw $a0, %lo(D_800E822C)($a0) # -0x7dd4($a0)
/* 09F9B4 8009EDB4 00402025 */ move $a0, $v0
/* 09F9B8 8009EDB8 0C0265AF */ jal load_menu_img2
/* 09F9B8 8009EDB8 0C0265AF */ jal load_menu_img_comp_type
/* 09F9BC 8009EDBC 00002825 */ move $a1, $zero
/* 09F9C0 8009EDC0 10000204 */ b .L8009F5D4
/* 09F9C4 8009EDC4 8FBF001C */ lw $ra, 0x1c($sp)
@@ -597,7 +597,7 @@ glabel L8009EDC8
/* 09F9E0 8009EDE0 0C026449 */ jal segmented_to_virtual_dupe
/* 09F9E4 8009EDE4 AFA20024 */ sw $v0, 0x24($sp)
/* 09F9E8 8009EDE8 00402025 */ move $a0, $v0
/* 09F9EC 8009EDEC 0C0265AF */ jal load_menu_img2
/* 09F9EC 8009EDEC 0C0265AF */ jal load_menu_img_comp_type
/* 09F9F0 8009EDF0 00002825 */ move $a1, $zero
/* 09F9F4 8009EDF4 8FAF0024 */ lw $t7, 0x24($sp)
/* 09F9F8 8009EDF8 0C026449 */ jal segmented_to_virtual_dupe
@@ -609,7 +609,7 @@ glabel L8009EDC8
glabel L8009EE10
/* 09FA10 8009EE10 3C040200 */ lui $a0, %hi(D_02004B4C) # $a0, 0x200
/* 09FA14 8009EE14 24844B4C */ addiu $a0, %lo(D_02004B4C) # addiu $a0, $a0, 0x4b4c
/* 09FA18 8009EE18 0C0265AF */ jal load_menu_img2
/* 09FA18 8009EE18 0C0265AF */ jal load_menu_img_comp_type
/* 09FA1C 8009EE1C 00002825 */ move $a1, $zero
/* 09FA20 8009EE20 100001EC */ b .L8009F5D4
/* 09FA24 8009EE24 8FBF001C */ lw $ra, 0x1c($sp)
@@ -617,7 +617,7 @@ glabel L8009EE28
/* 09FA28 8009EE28 3C040200 */ lui $a0, %hi(D_02004B74) # $a0, 0x200
/* 09FA2C 8009EE2C AFBF007C */ sw $ra, 0x7c($sp)
/* 09FA30 8009EE30 24844B74 */ addiu $a0, %lo(D_02004B74) # addiu $a0, $a0, 0x4b74
/* 09FA34 8009EE34 0C0265AF */ jal load_menu_img2
/* 09FA34 8009EE34 0C0265AF */ jal load_menu_img_comp_type
/* 09FA38 8009EE38 00002825 */ move $a1, $zero
/* 09FA3C 8009EE3C 8FBF007C */ lw $ra, 0x7c($sp)
/* 09FA40 8009EE40 24180020 */ li $t8, 32
@@ -654,7 +654,7 @@ glabel L8009EE74
/* 09FAB4 8009EEB4 0C026449 */ jal segmented_to_virtual_dupe
/* 09FAB8 8009EEB8 8C847CA8 */ lw $a0, %lo(D_800E7D54 - 0xAC)($a0)
/* 09FABC 8009EEBC 00402025 */ move $a0, $v0
/* 09FAC0 8009EEC0 0C0265AF */ jal load_menu_img2
/* 09FAC0 8009EEC0 0C0265AF */ jal load_menu_img_comp_type
/* 09FAC4 8009EEC4 00002825 */ move $a1, $zero
/* 09FAC8 8009EEC8 100001C2 */ b .L8009F5D4
/* 09FACC 8009EECC 8FBF001C */ lw $ra, 0x1c($sp)
@@ -682,7 +682,7 @@ glabel L8009EF08
/* 09FB18 8009EF18 0C026449 */ jal segmented_to_virtual_dupe
/* 09FB1C 8009EF1C 8C84817C */ lw $a0, %lo(D_800E817C)($a0) # -0x7e84($a0)
/* 09FB20 8009EF20 00402025 */ move $a0, $v0
/* 09FB24 8009EF24 0C0265AF */ jal load_menu_img2
/* 09FB24 8009EF24 0C0265AF */ jal load_menu_img_comp_type
/* 09FB28 8009EF28 00002825 */ move $a1, $zero
/* 09FB2C 8009EF2C 100001A9 */ b .L8009F5D4
/* 09FB30 8009EF30 8FBF001C */ lw $ra, 0x1c($sp)
@@ -772,7 +772,7 @@ glabel L8009F050
/* 09FC68 8009F068 0C026449 */ jal segmented_to_virtual_dupe
/* 09FC6C 8009F06C 8C848294 */ lw $a0, %lo(D_800E8294)($a0) # -0x7d6c($a0)
/* 09FC70 8009F070 00402025 */ move $a0, $v0
/* 09FC74 8009F074 0C0265AF */ jal load_menu_img2
/* 09FC74 8009F074 0C0265AF */ jal load_menu_img_comp_type
/* 09FC78 8009F078 00002825 */ move $a1, $zero
/* 09FC7C 8009F07C 8FBF007C */ lw $ra, 0x7c($sp)
/* 09FC80 8009F080 24180037 */ li $t8, 55
@@ -785,7 +785,7 @@ glabel L8009F094
/* 09FC98 8009F098 0C026449 */ jal segmented_to_virtual_dupe
/* 09FC9C 8009F09C 24844A0C */ addiu $a0, %lo(D_02004A0C) # addiu $a0, $a0, 0x4a0c
/* 09FCA0 8009F0A0 00402025 */ move $a0, $v0
/* 09FCA4 8009F0A4 0C0265AF */ jal load_menu_img2
/* 09FCA4 8009F0A4 0C0265AF */ jal load_menu_img_comp_type
/* 09FCA8 8009F0A8 00002825 */ move $a1, $zero
/* 09FCAC 8009F0AC 0C02D6E5 */ jal controller_pak_1_status
/* 09FCB0 8009F0B0 00000000 */ nop
@@ -809,7 +809,7 @@ glabel L8009F0E0
/* 09FCF0 8009F0F0 0C026449 */ jal segmented_to_virtual_dupe
/* 09FCF4 8009F0F4 8C848114 */ lw $a0, %lo(D_800E8114)($a0) # -0x7eec($a0)
/* 09FCF8 8009F0F8 00402025 */ move $a0, $v0
/* 09FCFC 8009F0FC 0C0265AF */ jal load_menu_img2
/* 09FCFC 8009F0FC 0C0265AF */ jal load_menu_img_comp_type
/* 09FD00 8009F100 00002825 */ move $a1, $zero
/* 09FD04 8009F104 10000133 */ b .L8009F5D4
/* 09FD08 8009F108 8FBF001C */ lw $ra, 0x1c($sp)
@@ -818,7 +818,7 @@ glabel L8009F10C
/* 09FD10 8009F110 0C026449 */ jal segmented_to_virtual_dupe
/* 09FD14 8009F114 24844A34 */ addiu $a0, %lo(gMenuTextureData) # addiu $a0, $a0, 0x4a34
/* 09FD18 8009F118 00402025 */ move $a0, $v0
/* 09FD1C 8009F11C 0C0265AF */ jal load_menu_img2
/* 09FD1C 8009F11C 0C0265AF */ jal load_menu_img_comp_type
/* 09FD20 8009F120 00002825 */ move $a1, $zero
/* 09FD24 8009F124 0C02D6E5 */ jal controller_pak_1_status
/* 09FD28 8009F128 00000000 */ nop
@@ -869,7 +869,7 @@ glabel L8009F174
/* 09FDC8 8009F1C8 0C026449 */ jal segmented_to_virtual_dupe
/* 09FDCC 8009F1CC 8C847D74 */ lw $a0, %lo(D_800E7D74)($a0)
/* 09FDD0 8009F1D0 00402025 */ move $a0, $v0
/* 09FDD4 8009F1D4 0C0265AF */ jal load_menu_img2
/* 09FDD4 8009F1D4 0C0265AF */ jal load_menu_img_comp_type
/* 09FDD8 8009F1D8 2405FFFF */ li $a1, -1
/* 09FDDC 8009F1DC 8FBF007C */ lw $ra, 0x7c($sp)
/* 09FDE0 8009F1E0 3C04800E */ lui $a0, %hi(D_800E7DC4)
@@ -897,13 +897,13 @@ glabel L8009F174
/* 09FE30 8009F230 0C026449 */ jal segmented_to_virtual_dupe
/* 09FE34 8009F234 8C847DC4 */ lw $a0, %lo(D_800E7DC4)($a0)
/* 09FE38 8009F238 00402025 */ move $a0, $v0
/* 09FE3C 8009F23C 0C0265AF */ jal load_menu_img2
/* 09FE3C 8009F23C 0C0265AF */ jal load_menu_img_comp_type
/* 09FE40 8009F240 00002825 */ move $a1, $zero
/* 09FE44 8009F244 3C040200 */ lui $a0, %hi(D_02004A0C) # $a0, 0x200
/* 09FE48 8009F248 0C026449 */ jal segmented_to_virtual_dupe
/* 09FE4C 8009F24C 24844A0C */ addiu $a0, %lo(D_02004A0C) # addiu $a0, $a0, 0x4a0c
/* 09FE50 8009F250 00402025 */ move $a0, $v0
/* 09FE54 8009F254 0C0265AF */ jal load_menu_img2
/* 09FE54 8009F254 0C0265AF */ jal load_menu_img_comp_type
/* 09FE58 8009F258 00002825 */ move $a1, $zero
/* 09FE5C 8009F25C 100000DD */ b .L8009F5D4
/* 09FE60 8009F260 8FBF001C */ lw $ra, 0x1c($sp)
@@ -975,7 +975,7 @@ glabel L8009F264
/* 09FF50 8009F350 0C026449 */ jal segmented_to_virtual_dupe
/* 09FF54 8009F354 8C847D54 */ lw $a0, %lo(D_800E7D54)($a0)
/* 09FF58 8009F358 00402025 */ move $a0, $v0
/* 09FF5C 8009F35C 0C0265AF */ jal load_menu_img2
/* 09FF5C 8009F35C 0C0265AF */ jal load_menu_img_comp_type
/* 09FF60 8009F360 00002825 */ move $a1, $zero
/* 09FF64 8009F364 8FA60024 */ lw $a2, 0x24($sp)
/* 09FF68 8009F368 3C04800E */ lui $a0, %hi(D_800E7FF0)
@@ -1070,7 +1070,7 @@ glabel L8009F430
/* 0A00B0 8009F4B0 0C026449 */ jal segmented_to_virtual_dupe
/* 0A00B4 8009F4B4 00000000 */ nop
/* 0A00B8 8009F4B8 00402025 */ move $a0, $v0
/* 0A00BC 8009F4BC 0C0265AF */ jal load_menu_img2
/* 0A00BC 8009F4BC 0C0265AF */ jal load_menu_img_comp_type
/* 0A00C0 8009F4C0 00002825 */ move $a1, $zero
/* 0A00C4 8009F4C4 0C01BBD8 */ jal func_8006EF60
/* 0A00C8 8009F4C8 00000000 */ nop
@@ -1098,7 +1098,7 @@ glabel L8009F510
/* 0A0114 8009F514 0C026449 */ jal segmented_to_virtual_dupe
/* 0A0118 8009F518 24844638 */ addiu $a0, %lo(D_02004638) # addiu $a0, $a0, 0x4638
/* 0A011C 8009F51C 00402025 */ move $a0, $v0
/* 0A0120 8009F520 0C0265AF */ jal load_menu_img2
/* 0A0120 8009F520 0C0265AF */ jal load_menu_img_comp_type
/* 0A0124 8009F524 00002825 */ move $a1, $zero
/* 0A0128 8009F528 1000002A */ b .L8009F5D4
/* 0A012C 8009F52C 8FBF001C */ lw $ra, 0x1c($sp)
@@ -1146,7 +1146,7 @@ glabel L8009F530
/* 0A01BC 8009F5BC 0C026449 */ jal segmented_to_virtual_dupe
/* 0A01C0 8009F5C0 8C847D54 */ lw $a0, %lo(D_800E7D54)($a0)
/* 0A01C4 8009F5C4 00402025 */ move $a0, $v0
/* 0A01C8 8009F5C8 0C0265AF */ jal load_menu_img2
/* 0A01C8 8009F5C8 0C0265AF */ jal load_menu_img_comp_type
/* 0A01CC 8009F5CC 00002825 */ move $a1, $zero
.L8009F5D0:
glabel L8009F5D0
@@ -309,10 +309,10 @@ glabel L8009F874
/* 0A0484 8009F884 00057400 */ sll $t6, $a1, 0x10
/* 0A0488 8009F888 00046400 */ sll $t4, $a0, 0x10
/* 0A048C 8009F88C 000C2403 */ sra $a0, $t4, 0x10
/* 0A0490 8009F890 0C013235 */ jal func_8004C8D4
/* 0A0490 8009F890 0C013235 */ jal render_game_logo
/* 0A0494 8009F894 000E2C03 */ sra $a1, $t6, 0x10
/* 0A0498 8009F898 3C050200 */ lui $a1, %hi(D_020045E8) # $a1, 0x200
/* 0A049C 8009F89C 24A545E8 */ addiu $a1, %lo(D_020045E8) # addiu $a1, $a1, 0x45e8
/* 0A0498 8009F898 3C050200 */ lui $a1, %hi(gMenuTextureCopyright1996) # $a1, 0x200
/* 0A049C 8009F89C 24A545E8 */ addiu $a1, %lo(gMenuTextureCopyright1996) # addiu $a1, $a1, 0x45e8
/* 0A04A0 8009F8A0 8E040000 */ lw $a0, ($s0)
/* 0A04A4 8009F8A4 8E26000C */ lw $a2, %lo(D_FA00000C)($s1)
/* 0A04A8 8009F8A8 0C026E9D */ jal render_menu_textures
@@ -322,8 +322,8 @@ glabel L8009F874
glabel L8009F8B8
/* 0A04B8 8009F8B8 3C18800E */ lui $t8, %hi(gGlobalTimer) # $t8, 0x800e
/* 0A04BC 8009F8BC 8F18C54C */ lw $t8, %lo(gGlobalTimer)($t8)
/* 0A04C0 8009F8C0 3C050200 */ lui $a1, %hi(D_02004610) # $a1, 0x200
/* 0A04C4 8009F8C4 24A54610 */ addiu $a1, %lo(D_02004610) # addiu $a1, $a1, 0x4610
/* 0A04C0 8009F8C0 3C050200 */ lui $a1, %hi(gMenuTexturePushStartButton) # $a1, 0x200
/* 0A04C4 8009F8C4 24A54610 */ addiu $a1, %lo(gMenuTexturePushStartButton) # addiu $a1, $a1, 0x4610
/* 0A04C8 8009F8C8 07010003 */ bgez $t8, .L8009F8D8
/* 0A04CC 8009F8CC 0018C8C3 */ sra $t9, $t8, 3
/* 0A04D0 8009F8D0 27010007 */ addiu $at, $t8, 7
@@ -483,8 +483,8 @@ glabel L8009F904
/* 0A071C 8009FB1C 1000036A */ b .L800A08C8
/* 0A0720 8009FB20 8FBF0034 */ lw $ra, 0x34($sp)
glabel L8009FB24
/* 0A0724 8009FB24 3C11800E */ lui $s1, %hi(D_800E77A0) # $s1, 0x800e
/* 0A0728 8009FB28 263177A0 */ addiu $s1, %lo(D_800E77A0) # addiu $s1, $s1, 0x77a0
/* 0A0724 8009FB24 3C11800E */ lui $s1, %hi(gTextNoController) # $s1, 0x800e
/* 0A0728 8009FB28 263177A0 */ addiu $s1, %lo(gTextNoController) # addiu $s1, $s1, 0x77a0
/* 0A072C 8009FB2C 0C024C0D */ jal get_string_width
/* 0A0730 8009FB30 8E240000 */ lw $a0, ($s1)
/* 0A0734 8009FB34 8E240004 */ lw $a0, 4($s1)
@@ -555,8 +555,8 @@ glabel L8009FB24
/* 0A082C 8009FC2C 44993000 */ mtc1 $t9, $f6
/* 0A0830 8009FC30 46005402 */ mul.s $f16, $f10, $f0
/* 0A0834 8009FC34 240A00B4 */ li $t2, 180
/* 0A0838 8009FC38 3C02800E */ lui $v0, %hi(D_800E77A0) # $v0, 0x800e
/* 0A083C 8009FC3C 244277A0 */ addiu $v0, %lo(D_800E77A0) # addiu $v0, $v0, 0x77a0
/* 0A0838 8009FC38 3C02800E */ lui $v0, %hi(gTextNoController) # $v0, 0x800e
/* 0A083C 8009FC3C 244277A0 */ addiu $v0, %lo(gTextNoController) # addiu $v0, $v0, 0x77a0
/* 0A0840 8009FC40 00001825 */ move $v1, $zero
/* 0A0844 8009FC44 46803220 */ cvt.s.w $f8, $f6
/* 0A0848 8009FC48 448A3000 */ mtc1 $t2, $f6
@@ -613,8 +613,8 @@ glabel L8009FCD8
/* 0A090C 8009FD0C 100002ED */ b .L800A08C4
/* 0A0910 8009FD10 AE020000 */ sw $v0, ($s0)
glabel L8009FD14
/* 0A0914 8009FD14 3C050200 */ lui $a1, %hi(D_02004660) # $a1, 0x200
/* 0A0918 8009FD18 24A54660 */ addiu $a1, %lo(D_02004660) # addiu $a1, $a1, 0x4660
/* 0A0914 8009FD14 3C050200 */ lui $a1, %hi(gMenuTextureGameSelect) # $a1, 0x200
/* 0A0918 8009FD18 24A54660 */ addiu $a1, %lo(gMenuTextureGameSelect) # addiu $a1, $a1, 0x4660
/* 0A091C 8009FD1C 8E040000 */ lw $a0, ($s0)
/* 0A0920 8009FD20 8E26000C */ lw $a2, 0xc($s1)
/* 0A0924 8009FD24 0C026E9D */ jal render_menu_textures
@@ -1,4 +1,4 @@
glabel func_8004C6FC
glabel render_texture_tile_rgba32_block
/* 04D2FC 8004C6FC 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 04D300 8004C700 AFB10024 */ sw $s1, 0x24($sp)
/* 04D304 8004C704 8FB10058 */ lw $s1, 0x58($sp)
@@ -81,7 +81,7 @@ glabel func_8004C6FC
/* 04D42C 8004C82C 03C02025 */ move $a0, $fp
/* 04D430 8004C830 02802825 */ move $a1, $s4
/* 04D434 8004C834 02403025 */ move $a2, $s2
/* 04D438 8004C838 0C012E54 */ jal func_8004B950
/* 04D438 8004C838 0C012E54 */ jal render_texture_rectangle_from_base
/* 04D43C 8004C83C 02003825 */ move $a3, $s0
/* 04D440 8004C840 02D11023 */ subu $v0, $s6, $s1
/* 04D444 8004C844 04410008 */ bgez $v0, .L8004C868
+1 -1
View File
@@ -521,7 +521,7 @@ extern s32 D_8018D1D4;
// extern s32 D_8018D1D8; -> objects.h
extern s32 D_8018D1DC;
extern u8* D_8018D1E0;
extern u8* gGameLogoAddress;
extern f32 D_8018D1E8;
extern s32 D_8018D1EC;
// extern s32 D_8018D1F0; -> objects.h
+1 -1
View File
@@ -77,7 +77,7 @@ s32 D_8018D1D0;
s32 D_8018D1D4;
s32 D_8018D1D8;
s32 D_8018D1DC;
u8* D_8018D1E0;
u8* gGameLogoAddress;
UNUSED s32 D_8018D1E4;
f32 D_8018D1E8;
s32 D_8018D1EC;
+4 -4
View File
@@ -111,7 +111,7 @@ void clear_object_list() {
objectListSize = -1;
}
u8* func_8006ED94(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
u8* dma_copy_base_misc_textures(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
u8** tempAddress;
u8* address;
address = baseAddress + offset;
@@ -126,8 +126,8 @@ u8* func_8006ED94(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
return baseAddress;
}
void load_mario_kart_64_logo(void) {
D_8018D1E0 = func_8006ED94((u8*) &gTextureLogoMarioKart64, (u8*) gMenuTextureBuffer, 0x79E1, 0x20000);
void load_game_logo(void) {
gGameLogoAddress = dma_copy_base_misc_textures((u8*) &gTextureLogoMarioKart64, (u8*) gMenuTextureBuffer, 0x79E1, 0x20000);
}
// Some kind of initalization for the Item Window part of the HUD
@@ -164,7 +164,7 @@ void func_8006EF60(void) {
wut = gMenuCompressedBuffer + 0xFFFF0000;
// clang-format off
// God forgive me for my sins...
huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = func_8006ED94(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; }
huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = dma_copy_base_misc_textures(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; }
// clang-format on
}
+2 -2
View File
@@ -8,8 +8,8 @@ void init_hud(void);
void reset_object_variable(void);
void func_8006EB10(void);
void clear_object_list(void);
u8* func_8006ED94(u8*, u8*, u32, u32);
void load_mario_kart_64_logo(void);
u8* dma_copy_base_misc_textures(u8*, u8*, u32, u32);
void load_game_logo(void);
void init_item_window(s32);
void func_8006EEE8(s32);
void func_8006EF60(void);
+233 -238
View File
@@ -58,9 +58,9 @@ struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE];
struct_8018E060_entry D_8018E060[D_8018E060_SIZE];
UNUSED u8 code_80091750_bss_padding0[8];
struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE];
s32 gMenuTextureBufferIndex;
s32 sMenuTextureBufferIndex;
TextureMap sMenuTextureMap[TEXTURE_MAP_MAX];
s32 gNumD_8018E118Entries;
s32 sMenuTextureEntries;
Gfx* sGfxPtr;
s32 gNumD_8018E768Entries;
struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
@@ -426,7 +426,7 @@ char* D_800E7778[] = {
// This is plain data, it should not end up in rodata
char gTextMenuAnnounceGhost[] = "NOW-MEET THE COURSE GHOST!!!";
char* D_800E77A0[] = { "CONNECT A CONTROLLER TO SOCKET 1,", "THEN POWER ON AGAIN" };
char* gTextNoController[] = { "CONNECT A CONTROLLER TO SOCKET 1,", "THEN POWER ON AGAIN" };
char* gTextBattleIntroduction[] = {
"BATTLE GAME",
@@ -885,7 +885,7 @@ MenuTexture* D_800E8234[] = {
};
MenuTexture* D_800E8254[] = {
D_02004660,
gMenuTextureGameSelect,
gMenuTextureOnePlayerColone,
gMenuTextureTwoPlayerColone,
gMenuTextureThreePlayerColone,
@@ -1346,7 +1346,7 @@ void func_80091FA4(void) {
add_ui_element(MENU_ITEM_TYPE_0BD, 0, 0, MENU_ITEM_PRIORITY_0);
}
if (!(gControllerBits & 1) && (gDemoUseController != 0)) {
add_ui_element(UNUSED_TYPE_004, 0, 0, MENU_ITEM_PRIORITY_2);
add_ui_element(MENU_ITEM_UI_NO_CONTROLLER, 0, 0, MENU_ITEM_PRIORITY_2);
}
func_800B5F30();
}
@@ -2356,26 +2356,26 @@ void render_menus(void) {
add_ui_element(MENU_ITEM_TYPE_0D9, 0, 0, MENU_ITEM_PRIORITY_A);
break;
case START_MENU:
add_ui_element(START_MENU_LOGO_AND_COPYRIGHT, 0, 0, MENU_ITEM_PRIORITY_4);
add_ui_element(START_MENU_BACKGROUND, 0, 0, MENU_ITEM_PRIORITY_0);
add_ui_element(MENU_ITEM_UI_LOGO_AND_COPYRIGHT, 0, 0, MENU_ITEM_PRIORITY_4);
add_ui_element(MENU_ITEM_UI_START_BACKGROUND, 0, 0, MENU_ITEM_PRIORITY_0);
add_ui_element(START_MENU_FLAG, 0, 0, MENU_ITEM_PRIORITY_0);
if (gControllerBits & 1) {
add_ui_element(START_MENU_PUSH_START_BUTTON, 0, 0, MENU_ITEM_PRIORITY_2);
add_ui_element(MENU_ITEM_UI_PUSH_START_BUTTON, 0, 0, MENU_ITEM_PRIORITY_2);
} else {
add_ui_element(UNUSED_TYPE_004, 0, 0, MENU_ITEM_PRIORITY_2);
add_ui_element(MENU_ITEM_UI_NO_CONTROLLER, 0, 0, MENU_ITEM_PRIORITY_2);
}
add_ui_element(START_MENU_TEXT_BOX, 0, 0, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_START_RECORD_TIME, 0, 0, MENU_ITEM_PRIORITY_6);
gDemoMode = 0;
gDemoUseController = 0;
break;
case MAIN_MENU:
add_ui_element(MAIN_MENU_BACKGROUND, 0, 0, MENU_ITEM_PRIORITY_2);
add_ui_element(MAIN_MENU_GAME_SELECT_GFX, 0x0000015E, 0x00000011, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_4P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_3P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_2P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_1P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_OK, 0x0000015E, 0x000000C8, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_GAME_SELECT, 0x0000015E, 0x00000011, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_4P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_3P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_2P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_1P_GAME, 0x0000015E, 0x0000003E, MENU_ITEM_PRIORITY_6);
add_ui_element(MENU_ITEM_UI_OK, 0x0000015E, 0x000000C8, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_DATA_GFX, 0x0000015E, 0x000000C8, MENU_ITEM_PRIORITY_6);
add_ui_element(MAIN_MENU_OPTION_GFX, 0x0000015E, 0x000000C8, MENU_ITEM_PRIORITY_6);
if (has_terminate_150cc() != 0) {
@@ -3337,29 +3337,29 @@ Gfx* func_80098FC8(Gfx* displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry) {
return draw_box_fill(displayListHead, ulx, uly, lrx, lry, 0, 0, 0, 0xFF);
}
void dma_copy_base_729a30(u64* arg0, size_t nbytes, void* vaddr) {
OSIoMesg sp30;
OSMesg sp2C;
void dma_copy_base_mio0(u64* data, size_t nbytes, void* vaddr) {
OSIoMesg mb;
OSMesg msg;
osInvalDCache(vaddr, nbytes);
osPiStartDma(&sp30, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(arg0)],
osPiStartDma(&mb, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(data)],
vaddr, nbytes, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &sp2C, OS_MESG_BLOCK);
osRecvMesg(&gDmaMesgQueue, &msg, OS_MESG_BLOCK);
}
void dma_copy_base_7fa3c0(u64* arg0, size_t nbytes, void* vaddr) {
OSIoMesg sp30;
OSMesg sp2C;
void dma_copy_base_tkmk00(u64* data, size_t nbytes, void* vaddr) {
OSIoMesg mb;
OSMesg msg;
osInvalDCache(vaddr, nbytes);
osPiStartDma(&sp30, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_textures_0bSegmentRomStart[SEGMENT_OFFSET(arg0)],
osPiStartDma(&mb, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_textures_0bSegmentRomStart[SEGMENT_OFFSET(data)],
vaddr, nbytes, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &sp2C, OS_MESG_BLOCK);
osRecvMesg(&gDmaMesgQueue, &msg, OS_MESG_BLOCK);
}
void func_80099110(void) {
gMenuTextureBufferIndex = 0;
gNumD_8018E118Entries = 0;
sMenuTextureBufferIndex = 0;
sMenuTextureEntries = 0;
}
/**
@@ -3382,202 +3382,197 @@ void* segmented_to_virtual_dupe_2(const void* addr) {
return (void*) ((gSegmentTable[segment] + offset) + 0x80000000);
}
void load_menu_img(MenuTexture* arg0) {
u16 var_a1_2;
s32 var_v0;
s32 var_a1;
MenuTexture* var_s1;
TextureMap* thing = &sMenuTextureMap[0];
void load_menu_img(MenuTexture* addr) {
u16 size;
s32 i;
s32 imgLoaded;
MenuTexture* texAddr;
TextureMap* texMap = &sMenuTextureMap[0];
var_s1 = segmented_to_virtual_dupe(arg0);
while (var_s1->textureData != ((void*) 0)) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
if (var_s1->textureData == (thing + var_v0)->textureData) {
var_a1 = 1;
texAddr = segmented_to_virtual_dupe(addr);
while (texAddr->textureData != NULL) {
imgLoaded = false;
for (i = 0; i < sMenuTextureEntries; i++) {
if (texAddr->textureData == (texMap + i)->textureData) {
imgLoaded = true;
break;
}
}
if (var_a1 == 0) {
if (var_s1->type == 3) {
if (var_s1->size != 0) {
var_a1_2 = var_s1->size;
if (imgLoaded == false) {
if (texAddr->type == 3) {
if (texAddr->size != 0) {
size = texAddr->size;
} else {
var_a1_2 = 0x1000;
size = 0x1000;
}
if (var_a1_2 % 8) {
var_a1_2 = ((var_a1_2 / 8) * 8) + 8;
if (size % 8) {
size = ((size / 8) * 8) + 8;
}
dma_copy_base_729a30(var_s1->textureData, var_a1_2, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[gMenuTextureBufferIndex]);
dma_copy_base_mio0(texAddr->textureData, size, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
} else {
dma_copy_base_729a30(var_s1->textureData, (var_s1->height * var_s1->width) * 2,
&gMenuTextureBuffer[gMenuTextureBufferIndex]);
dma_copy_base_mio0(texAddr->textureData, (texAddr->height * texAddr->width) * 2,
&gMenuTextureBuffer[sMenuTextureBufferIndex]);
}
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
thing[gNumD_8018E118Entries].offset = gMenuTextureBufferIndex;
gMenuTextureBufferIndex += var_s1->height * var_s1->width;
gMenuTextureBufferIndex = ((gMenuTextureBufferIndex / 8) * 8) + 8;
gNumD_8018E118Entries += 1;
texMap[sMenuTextureEntries].textureData = texAddr->textureData;
texMap[sMenuTextureEntries].offset = sMenuTextureBufferIndex;
sMenuTextureBufferIndex += texAddr->height * texAddr->width;
sMenuTextureBufferIndex = ((sMenuTextureBufferIndex / 8) * 8) + 8;
sMenuTextureEntries += 1;
}
var_s1++;
texAddr++;
}
}
void func_80099394(MenuTexture* arg0) {
UNUSED u16 var_a1_2;
s32 var_v0;
s32 var_a1;
UNUSED s32 temp_s3;
MenuTexture* var_s1;
TextureMap* thing = &sMenuTextureMap[0];
void func_80099394(MenuTexture* addr) {
s32 i;
s32 imgLoaded;
MenuTexture* texAddr;
TextureMap* texMap = &sMenuTextureMap[0];
var_s1 = segmented_to_virtual_dupe(arg0);
while (var_s1->textureData != ((void*) 0)) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
if (var_s1->textureData == (thing + var_v0)->textureData) {
var_a1 = 1;
texAddr = segmented_to_virtual_dupe(addr);
while (texAddr->textureData != NULL) {
imgLoaded = false;
for (i = 0; i < sMenuTextureEntries; i++) {
if (texAddr->textureData == (texMap + i)->textureData) {
imgLoaded = true;
break;
}
}
if (var_a1 == 0) {
if (var_s1->type == 5) {
dma_copy_base_729a30(var_s1->textureData, (u32) (((s32) (var_s1->height * var_s1->width)) / 2),
&gMenuTextureBuffer[gMenuTextureBufferIndex]);
if (imgLoaded == false) {
if (texAddr->type == 5) {
dma_copy_base_mio0(texAddr->textureData, (u32) (((s32) (texAddr->height * texAddr->width)) / 2),
&gMenuTextureBuffer[sMenuTextureBufferIndex]);
}
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
thing[gNumD_8018E118Entries].offset = gMenuTextureBufferIndex;
gMenuTextureBufferIndex += var_s1->height * var_s1->width;
gMenuTextureBufferIndex = ((gMenuTextureBufferIndex / 8) * 8) + 8;
gNumD_8018E118Entries += 1;
texMap[sMenuTextureEntries].textureData = texAddr->textureData;
texMap[sMenuTextureEntries].offset = sMenuTextureBufferIndex;
sMenuTextureBufferIndex += texAddr->height * texAddr->width;
sMenuTextureBufferIndex = ((sMenuTextureBufferIndex / 8) * 8) + 8;
sMenuTextureEntries += 1;
}
var_s1++;
texAddr++;
}
}
void func_8009952C(MenuTexture* arg0) {
UNUSED u16 var_a1_2;
s32 var_v0;
s32 var_a1;
UNUSED s32 temp_s3;
MenuTexture* var_s1;
TextureMap* thing = &sMenuTextureMap[0];
void func_8009952C(MenuTexture* addr) {
s32 i;
s32 imgLoaded;
MenuTexture* texAddr;
TextureMap* texMap = &sMenuTextureMap[0];
var_s1 = segmented_to_virtual_dupe(arg0);
while (var_s1->textureData != ((void*) 0)) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
if (var_s1->textureData == (thing + var_v0)->textureData) {
var_a1 = 1;
texAddr = segmented_to_virtual_dupe(addr);
while (texAddr->textureData != NULL) {
imgLoaded = false;
for (i = 0; i < sMenuTextureEntries; i++) {
if (texAddr->textureData == (texMap + i)->textureData) {
imgLoaded = true;
break;
}
}
if (var_a1 == 0) {
dma_copy_base_729a30(var_s1->textureData, 0x00008000U, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[gMenuTextureBufferIndex]);
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
thing[gNumD_8018E118Entries].offset = gMenuTextureBufferIndex;
gMenuTextureBufferIndex += var_s1->height * var_s1->width;
gMenuTextureBufferIndex = ((gMenuTextureBufferIndex / 8) * 8) + 8;
gNumD_8018E118Entries += 1;
if (imgLoaded == false) {
dma_copy_base_mio0(texAddr->textureData, 0x00008000U, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
texMap[sMenuTextureEntries].textureData = texAddr->textureData;
texMap[sMenuTextureEntries].offset = sMenuTextureBufferIndex;
sMenuTextureBufferIndex += texAddr->height * texAddr->width;
sMenuTextureBufferIndex = ((sMenuTextureBufferIndex / 8) * 8) + 8;
sMenuTextureEntries += 1;
}
var_s1++;
texAddr++;
}
}
void load_img_wrap(MenuTexture* arg0) {
load_menu_img2(arg0, 1);
void load_menu_img_mio0_always(MenuTexture* addr) {
load_menu_img_comp_type(addr, LOAD_MENU_IMG_MIO0_FORCE);
}
void load_menu_img2(MenuTexture* arg0, s32 arg1) {
u16 var_a1_2;
s32 var_v0;
s32 var_a1;
u8 var_v0_2;
MenuTexture* var_s1;
TextureMap* thing = &sMenuTextureMap[0];
void load_menu_img_comp_type(MenuTexture* addr, s32 compType) {
u16 size;
s32 i;
s32 imgLoaded;
u8 clearBit;
MenuTexture* texAddr;
TextureMap* texMap = &sMenuTextureMap[0];
var_s1 = segmented_to_virtual_dupe(arg0);
while (var_s1->textureData != ((void*) 0)) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
if (var_s1->textureData == (thing + var_v0)->textureData) {
var_a1 = 1;
texAddr = segmented_to_virtual_dupe(addr);
while (texAddr->textureData != NULL) {
imgLoaded = false;
for (i = 0; i < sMenuTextureEntries; i++) {
if (texAddr->textureData == (texMap + i)->textureData) {
imgLoaded = true;
break;
}
}
if ((var_a1 == 0) || (arg1 > 0)) {
if (var_s1->size != 0) {
var_a1_2 = var_s1->size;
if ((imgLoaded == false) || (compType > LOAD_MENU_IMG_FORCE)) {
if (texAddr->size != 0) {
size = texAddr->size;
} else {
var_a1_2 = 0x1000;
size = 0x1000;
}
if (var_a1_2 % 8) {
var_a1_2 = ((var_a1_2 / 8) * 8) + 8;
if (size % 8) {
size = ((size / 8) * 8) + 8;
}
switch (arg1) {
case -1:
case 1:
dma_copy_base_729a30(var_s1->textureData, var_a1_2, gMenuCompressedBuffer);
switch (compType) {
case LOAD_MENU_IMG_MIO0_ONCE:
case LOAD_MENU_IMG_MIO0_FORCE:
dma_copy_base_mio0(texAddr->textureData, size, gMenuCompressedBuffer);
break;
case 0:
case 2:
dma_copy_base_7fa3c0(var_s1->textureData, var_a1_2, gMenuCompressedBuffer);
case LOAD_MENU_IMG_TKMK00_ONCE:
case LOAD_MENU_IMG_TKMK00_FORCE:
dma_copy_base_tkmk00(texAddr->textureData, size, gMenuCompressedBuffer);
break;
}
switch (arg1) {
case -1:
case 1:
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[gMenuTextureBufferIndex]);
switch (compType) {
case LOAD_MENU_IMG_MIO0_ONCE:
case LOAD_MENU_IMG_MIO0_FORCE:
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
break;
case 0:
case 2:
if (var_s1->type == 1) {
var_v0_2 = 0x000000BE;
case LOAD_MENU_IMG_TKMK00_ONCE:
case LOAD_MENU_IMG_TKMK00_FORCE:
if (texAddr->type == 1) {
clearBit = 0xBE;
} else {
var_v0_2 = 1;
clearBit = 1;
}
if (1) {}
tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer,
(u8*) &gMenuTextureBuffer[gMenuTextureBufferIndex], var_v0_2);
(u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex], clearBit);
break;
}
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
thing[gNumD_8018E118Entries].offset = gMenuTextureBufferIndex;
gMenuTextureBufferIndex += var_s1->height * var_s1->width;
gMenuTextureBufferIndex = ((gMenuTextureBufferIndex / 8) * 8) + 8;
gNumD_8018E118Entries += 1;
texMap[sMenuTextureEntries].textureData = texAddr->textureData;
texMap[sMenuTextureEntries].offset = sMenuTextureBufferIndex;
sMenuTextureBufferIndex += texAddr->height * texAddr->width;
sMenuTextureBufferIndex = ((sMenuTextureBufferIndex / 8) * 8) + 8;
sMenuTextureEntries += 1;
}
var_s1++;
texAddr++;
}
}
void func_80099958(MenuTexture* arg0, s32 arg1, s32 arg2) {
u16 var_a1;
UNUSED u8* thing;
MenuTexture* temp_v0;
void func_80099958(MenuTexture* addr, s32 arg1, s32 arg2) {
u16 size;
MenuTexture* texAddr;
temp_v0 = segmented_to_virtual_dupe(arg0);
while (temp_v0->textureData != NULL) {
if (temp_v0->size != 0) {
var_a1 = temp_v0->size;
texAddr = segmented_to_virtual_dupe(addr);
while (texAddr->textureData != NULL) {
if (texAddr->size != 0) {
size = texAddr->size;
} else {
var_a1 = 0x1400;
size = 0x1400;
}
if (var_a1 % 8) {
if (size % 8) {
// Round up to the next multiple of eight
var_a1 = ((var_a1 / 8) * 8) + 8;
size = ((size / 8) * 8) + 8;
}
dma_copy_base_729a30(temp_v0->textureData, var_a1, gMenuCompressedBuffer);
dma_copy_base_mio0(texAddr->textureData, size, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array);
temp_v0++;
texAddr++;
}
}
@@ -3816,7 +3811,7 @@ void func_8009A238(MenuTexture* arg0, s32 arg1) {
if (var_a3 % 8) {
var_a3 = ((var_a3 / 8) * 8) + 8;
}
dma_copy_base_7fa3c0(sp24, var_a3, gMenuCompressedBuffer);
dma_copy_base_tkmk00(sp24, var_a3, gMenuCompressedBuffer);
tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, (u8*) &gMenuTextureBuffer[temp_v1], 1);
sMenuTextureMap[arg1].textureData = sp24;
}
@@ -3831,7 +3826,7 @@ void func_8009A2F0(struct_8018E0E8_entry* arg0) {
if (var_a0 == NULL) {
break;
}
load_menu_img2(var_a0, 0);
load_menu_img_comp_type(var_a0, LOAD_MENU_IMG_TKMK00_ONCE);
if (1) {}
temp_v0++;
var_a0 = temp_v0->mk64Texture;
@@ -3866,15 +3861,15 @@ s32 animate_character_select_menu(MkAnimation* anim) {
entry->sequenceIndex = -1;
entry->frameCountDown = 0;
entry->visible = 0x80000000;
entry->D_8018E118_index = gNumD_8018E118Entries;
entry->D_8018E118_index = sMenuTextureEntries;
if (anim[0].mk64Texture) {
load_img_wrap(anim[0].mk64Texture);
load_menu_img_mio0_always(anim[0].mk64Texture);
}
if (anim[1].mk64Texture) {
load_img_wrap(anim[1].mk64Texture);
load_menu_img_mio0_always(anim[1].mk64Texture);
} else {
load_img_wrap(anim[0].mk64Texture);
load_menu_img_mio0_always(anim[0].mk64Texture);
}
entry->unk14 = 0;
@@ -3902,7 +3897,7 @@ s32 func_8009A478(MkAnimation* anim, s32 arg1) {
entry->sequenceIndex = -1;
entry->frameCountDown = 0;
entry->visible = 0x80000000;
entry->D_8018E118_index = gNumD_8018E118Entries;
entry->D_8018E118_index = sMenuTextureEntries;
if (anim[0].mk64Texture) {
func_80099958(anim[0].mk64Texture, arg1, 0);
}
@@ -4186,7 +4181,7 @@ u16* func_8009B8C4(u64* arg0) {
s32 someIndex;
found = 0;
for (someIndex = 0; someIndex < gNumD_8018E118Entries; someIndex++) {
for (someIndex = 0; someIndex < sMenuTextureEntries; someIndex++) {
if (arg0 == sMenuTextureMap[someIndex].textureData) {
found = 1;
offset = sMenuTextureMap[someIndex].offset;
@@ -5393,19 +5388,19 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_ra->unk20 = one;
break;
case MENU_ITEM_TYPE_0D2:
load_menu_img2(D_020014C8, 0);
load_menu_img_comp_type(D_020014C8, LOAD_MENU_IMG_TKMK00_ONCE);
func_8009B954(D_020014C8);
sGfxPtr = render_menu_textures(sGfxPtr, D_020014C8, var_ra->column, var_ra->row);
func_8009B998();
break;
case MENU_ITEM_TYPE_0D3:
load_menu_img2(D_02001540, 0);
load_menu_img_comp_type(D_02001540, LOAD_MENU_IMG_TKMK00_ONCE);
func_8009B954(D_02001540);
sGfxPtr = render_menu_textures(sGfxPtr, D_02001540, var_ra->column, var_ra->row);
func_8009B998();
break;
case MENU_ITEM_TYPE_0D4:
load_menu_img2(D_0200157C, 0);
load_menu_img_comp_type(D_0200157C, LOAD_MENU_IMG_TKMK00_ONCE);
load_menu_img(D_02001874);
var_ra->row = 0x00000069;
for (var_v0 = 0; var_v0 < 133; var_v0++) {
@@ -5446,30 +5441,30 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case MENU_ITEM_TYPE_0D9:
load_menu_img(D_0200184C);
break;
case START_MENU_BACKGROUND:
load_menu_img2(gMenuTexturesBackground[has_terminate_150cc()], 0);
case MENU_ITEM_UI_START_BACKGROUND:
load_menu_img_comp_type(gMenuTexturesBackground[has_terminate_150cc()], LOAD_MENU_IMG_TKMK00_ONCE);
break;
case START_MENU_LOGO_AND_COPYRIGHT:
load_mario_kart_64_logo();
gMenuTextureBufferIndex += 0x10000;
load_menu_img(D_020045E8);
case MENU_ITEM_UI_LOGO_AND_COPYRIGHT:
load_game_logo();
sMenuTextureBufferIndex += 0x10000;
load_menu_img(gMenuTextureCopyright1996);
break;
case START_MENU_PUSH_START_BUTTON:
load_menu_img(D_02004610);
case MENU_ITEM_UI_PUSH_START_BUTTON:
load_menu_img(gMenuTexturePushStartButton);
break;
case MAIN_MENU_BACKGROUND:
case CHARACTER_SELECT_BACKGROUND:
case COURSE_SELECT_BACKGROUND:
load_menu_img2(gMenuTexturesBackground[has_terminate_150cc()], 0);
load_menu_img2(D_02004B74, 0);
load_menu_img_comp_type(gMenuTexturesBackground[has_terminate_150cc()], LOAD_MENU_IMG_TKMK00_ONCE);
load_menu_img_comp_type(D_02004B74, LOAD_MENU_IMG_TKMK00_ONCE);
convert_img_to_greyscale(0, 0x00000019);
adjust_img_colour(0, SCREEN_WIDTH * SCREEN_HEIGHT, D_800E74E8[type - 0x23].red,
D_800E74E8[type - 0x23].green, D_800E74E8[type - 0x23].blue);
break;
case MAIN_MENU_OK:
case MENU_ITEM_UI_OK:
var_ra->unk1C = 0x00000020;
/* fallthrough */
case MAIN_MENU_GAME_SELECT_GFX:
case MENU_ITEM_UI_GAME_SELECT:
case MAIN_MENU_DATA_GFX:
case MAIN_MENU_OPTION_GFX:
case MAIN_MENU_50CC:
@@ -5480,20 +5475,20 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case 0x17:
case MAIN_MENU_TIME_TRIALS_BEGIN:
case MAIN_MENU_TIME_TRIALS_DATA:
load_menu_img2(segmented_to_virtual_dupe(D_800E8274[type - 0x12]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E8274[type - 0x12]), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MAIN_MENU_1P_GAME:
case MAIN_MENU_2P_GAME:
case MAIN_MENU_3P_GAME:
case MAIN_MENU_4P_GAME:
load_menu_img2(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 0]), 0);
case MENU_ITEM_UI_1P_GAME:
case MENU_ITEM_UI_2P_GAME:
case MENU_ITEM_UI_3P_GAME:
case MENU_ITEM_UI_4P_GAME:
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 0]), LOAD_MENU_IMG_TKMK00_ONCE);
load_menu_img(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 1]));
break;
case CHARACTER_SELECT_MENU_PLAYER_SELECT_BANNER:
load_menu_img2(D_02004B4C, 0);
load_menu_img_comp_type(D_02004B4C, LOAD_MENU_IMG_TKMK00_ONCE);
break;
case CHARACTER_SELECT_MENU_OK:
load_menu_img2(D_02004B74, 0);
load_menu_img_comp_type(D_02004B74, LOAD_MENU_IMG_TKMK00_ONCE);
var_ra->unk1C = 0x00000020;
break;
case CHARACTER_SELECT_MENU_1P_CURSOR:
@@ -5512,7 +5507,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case CHARACTER_SELECT_MENU_BOWSER:
var_ra->D_8018DEE0_index =
animate_character_select_menu(segmented_to_virtual_dupe_2(D_800E8320[type - 0x2B]));
load_menu_img2(segmented_to_virtual_dupe(D_800E7D54[type - 0x2B]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7D54[type - 0x2B]), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_0A0:
case MENU_ITEM_TYPE_0A1:
@@ -5532,7 +5527,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case MENU_ITEM_TYPE_05A:
case MENU_ITEM_TYPE_05B:
case COURSE_SELECT_BATTLE_NAMES:
load_menu_img2(segmented_to_virtual_dupe(gMenuTexturesTrackSelection[type - 0x52]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(gMenuTexturesTrackSelection[type - 0x52]), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_05F:
case MENU_ITEM_TYPE_060:
@@ -5558,12 +5553,12 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_ra->row = D_800E7268[0].row;
break;
case MENU_ITEM_TYPE_068:
load_menu_img2(segmented_to_virtual_dupe(D_800E8294[gCCSelection]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E8294[gCCSelection]), LOAD_MENU_IMG_TKMK00_ONCE);
var_ra->column = 0x00000037;
var_ra->row = 0x000000C3;
break;
case MENU_ITEM_TYPE_069:
load_menu_img2(segmented_to_virtual_dupe(D_02004A0C), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_02004A0C), LOAD_MENU_IMG_TKMK00_ONCE);
if (controller_pak_1_status() == 0) {
func_800B6708();
} else {
@@ -5575,10 +5570,10 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case MENU_ITEM_TYPE_079:
case MENU_ITEM_TYPE_07A:
case MENU_ITEM_TYPE_07B:
load_menu_img2(segmented_to_virtual_dupe(D_800E82F4[type - 0x78]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E82F4[type - 0x78]), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_08C:
load_menu_img2(segmented_to_virtual_dupe(gMenuTextureData), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(gMenuTextureData), LOAD_MENU_IMG_TKMK00_ONCE);
if (controller_pak_1_status() == 0) {
func_800B6708();
} else {
@@ -5606,10 +5601,10 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
case MENU_ITEM_TYPE_08A:
case MENU_ITEM_TYPE_08B:
temp_v0_6 = var_ra->type - MENU_ITEM_TYPE_07C;
load_menu_img2(segmented_to_virtual_dupe(D_800E7D74[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), -1);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7D74[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), LOAD_MENU_IMG_MIO0_ONCE);
temp_v0_6 = var_ra->type - MENU_ITEM_TYPE_07C;
load_menu_img2(segmented_to_virtual_dupe(D_800E7DC4[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), 0);
load_menu_img2(segmented_to_virtual_dupe(D_02004A0C), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7DC4[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), LOAD_MENU_IMG_TKMK00_ONCE);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_02004A0C), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_0B1:
case MENU_ITEM_TYPE_0B2:
@@ -5638,7 +5633,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_a0 = D_800E8320[temp_a1];
}
var_ra->D_8018DEE0_index = func_8009A478(segmented_to_virtual_dupe_2(var_a0), stackPadding0);
load_menu_img2(segmented_to_virtual_dupe(D_800E7D54[temp_a1]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7D54[temp_a1]), LOAD_MENU_IMG_TKMK00_ONCE);
load_menu_img(segmented_to_virtual_dupe(gMenuTexturesBorderPlayer[type - MENU_ITEM_TYPE_0B1]));
break;
case MENU_ITEM_TYPE_0BB:
@@ -5657,7 +5652,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_ra->D_8018DEE0_index = animate_character_select_menu(segmented_to_virtual_dupe_2(
D_800E7E34[gCupCourseOrder[gTimeTrialDataCourseIndex / 4][gTimeTrialDataCourseIndex % 4]]));
var_ra->unk1C = gTimeTrialDataCourseIndex;
load_menu_img2(segmented_to_virtual_dupe(D_02004A0C), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_02004A0C), LOAD_MENU_IMG_TKMK00_ONCE);
func_8006EF60();
if (controller_pak_1_status() == 0) {
func_800B6708();
@@ -5670,7 +5665,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_ra->state = (s32) gSoundMode;
break;
case MENU_ITEM_TYPE_0F1:
load_menu_img2(segmented_to_virtual_dupe(D_02004638), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_02004638), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_0BE:
D_8018ED90 = 0;
@@ -5688,7 +5683,7 @@ void add_ui_element(s32 type, s32 column, s32 row, s8 priority) {
var_a0 = D_800E8320[temp_a1];
}
var_ra->D_8018DEE0_index = func_8009A478(segmented_to_virtual_dupe_2(var_a0), 0);
load_menu_img2(segmented_to_virtual_dupe(D_800E7D54[temp_a1]), 0);
load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7D54[temp_a1]), LOAD_MENU_IMG_TKMK00_ONCE);
break;
case MENU_ITEM_TYPE_190:
case MENU_ITEM_TYPE_191:
@@ -5764,7 +5759,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/add_ui_element.s")
#ifdef NON_MATCHING
// https://decomp.me/scratch/MatRp
// Biggest diff left is in the case 0x12 though 0x19 handling. Not really sure what's going on there
// There's also a diff in the handling of D_800E77A0 in case 0x4. Not sure what's going on there either
// There's also a diff in the handling of gTextNoController in case 0x4. Not sure what's going on there either
void menu_item_render(MenuItem* arg0) {
s32 var_a1;
s32 var_v1;
@@ -5830,20 +5825,20 @@ void menu_item_render(MenuItem* arg0) {
case MENU_ITEM_TYPE_0D9: /* switch 6 */
func_800A0EB8(arg0, arg0->type - 0xD8);
break;
case START_MENU_BACKGROUND: /* switch 6 */
case MENU_ITEM_UI_START_BACKGROUND: /* switch 6 */
gDisplayListHead = render_menu_textures(
gDisplayListHead, gMenuTexturesBackground[has_terminate_150cc()], arg0->column, arg0->row);
break;
case START_MENU_LOGO_AND_COPYRIGHT: /* switch 6 */
func_8004C8D4((arg0->column + 0xA0), (arg0->row + 0x47));
gDisplayListHead = render_menu_textures(gDisplayListHead, D_020045E8, arg0->column, arg0->row);
case MENU_ITEM_UI_LOGO_AND_COPYRIGHT: /* switch 6 */
render_game_logo((arg0->column + 0xA0), (arg0->row + 0x47));
gDisplayListHead = render_menu_textures(gDisplayListHead, gMenuTextureCopyright1996, arg0->column, arg0->row);
break;
case START_MENU_PUSH_START_BUTTON: /* switch 6 */
case MENU_ITEM_UI_PUSH_START_BUTTON: /* switch 6 */
if (((gGlobalTimer / 8) % 3) != 0) {
gDisplayListHead = render_menu_textures(gDisplayListHead, D_02004610, arg0->column, arg0->row);
gDisplayListHead = render_menu_textures(gDisplayListHead, gMenuTexturePushStartButton, arg0->column, arg0->row);
}
break;
case START_MENU_TEXT_BOX: /* switch 6 */
case MENU_ITEM_UI_START_RECORD_TIME: /* switch 6 */
var_t0 = (s32) ((f32) (get_string_width(gCourseNamesDup[0]) + 5) * 0.9f) / 2;
gDisplayListHead = draw_box(gDisplayListHead, 0xA0 - var_t0, 0x0000007B, var_t0 + 0xA0, 0x000000A4, 0,
0, 0, 0x00000096);
@@ -5866,9 +5861,9 @@ void menu_item_render(MenuItem* arg0) {
get_time_record_centiseconds(temp_v1, sp80);
func_800939C8(0x000000B4, 0x000000A0, sp80, 0, 1.0f, 1.0f);
break;
case UNUSED_TYPE_004: /* switch 6 */
var_t0 = get_string_width(D_800E77A0[0]);
temp_v1 = get_string_width(D_800E77A0[1]);
case MENU_ITEM_UI_NO_CONTROLLER: /* switch 6 */
var_t0 = get_string_width(gTextNoController[0]);
temp_v1 = get_string_width(gTextNoController[1]);
if (var_t0 < temp_v1) {
var_t0 = temp_v1;
}
@@ -5879,7 +5874,7 @@ void menu_item_render(MenuItem* arg0) {
set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_1);
for (temp_t9 = 0; temp_t9 < 2; temp_t9++) {
print_text1_center_mode_1(0xA0 * one - floatone * why,
(s32) (0xB4 * one + ((f32) (temp_t9 * 0x12) * why)), D_800E77A0[temp_t9],
(s32) (0xB4 * one + ((f32) (temp_t9 * 0x12) * why)), gTextNoController[temp_t9],
0, why, why);
}
break;
@@ -5889,18 +5884,18 @@ void menu_item_render(MenuItem* arg0) {
gDisplayListHead = func_8009BC9C(gDisplayListHead, gMenuTexturesBackground[has_terminate_150cc()],
arg0->column, arg0->row, 3, 0);
break;
case MAIN_MENU_GAME_SELECT_GFX: /* switch 6 */
gDisplayListHead = render_menu_textures(gDisplayListHead, D_02004660, arg0->column, arg0->row);
case MENU_ITEM_UI_GAME_SELECT: /* switch 6 */
gDisplayListHead = render_menu_textures(gDisplayListHead, gMenuTextureGameSelect, arg0->column, arg0->row);
break;
case MAIN_MENU_1P_GAME: /* switch 6 */
case MAIN_MENU_2P_GAME: /* switch 6 */
case MAIN_MENU_3P_GAME: /* switch 6 */
case MAIN_MENU_4P_GAME: /* switch 6 */
case MENU_ITEM_UI_1P_GAME: /* switch 6 */
case MENU_ITEM_UI_2P_GAME: /* switch 6 */
case MENU_ITEM_UI_3P_GAME: /* switch 6 */
case MENU_ITEM_UI_4P_GAME: /* switch 6 */
var_a1 = arg0->type - 0xB;
func_800A8270(var_a1, arg0);
func_800A0FA4(arg0, var_a1);
break;
case MAIN_MENU_OK: /* switch 6 */
case MENU_ITEM_UI_OK: /* switch 6 */
func_800A8564(arg0);
gDisplayListHead = func_8009BC9C(gDisplayListHead, D_0200487C, arg0->column, arg0->row, 2, arg0->unk1C);
break;
@@ -8447,7 +8442,7 @@ void func_800A7A4C(s32 arg0) {
var_v1 = 0;
var_s1 = &gMenuItems[var_v1_2];
type = var_s1->type;
if ((type == UNUSED_TYPE_004) || (type == START_MENU_TEXT_BOX) || (type == MENU_ITEM_TYPE_0C7)) {
if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || (type == MENU_ITEM_TYPE_0C7)) {
if (arg0 != 0) {
var_v1 = 1;
}
@@ -8498,7 +8493,7 @@ void func_800A7A4C(s32 arg0) {
case MENU_ITEM_TYPE_0D4: /* switch 8 */
func_800A97BC(var_s1);
break;
case START_MENU_TEXT_BOX: /* switch 8 */
case MENU_ITEM_UI_START_RECORD_TIME: /* switch 8 */
switch (var_s1->state) { /* switch 9; irregular */
case 0: /* switch 9 */
if (gControllerFive->button & R_TRIG) {
@@ -8514,7 +8509,7 @@ void func_800A7A4C(s32 arg0) {
break;
}
break;
case MAIN_MENU_GAME_SELECT_GFX: /* switch 8 */
case MENU_ITEM_UI_GAME_SELECT: /* switch 8 */
func_800AA280(var_s1);
break;
case MAIN_MENU_OPTION_GFX: /* switch 8 */
@@ -8534,14 +8529,14 @@ void func_800A7A4C(s32 arg0) {
break;
}
break;
case MAIN_MENU_OK: /* switch 8 */
case MENU_ITEM_UI_OK: /* switch 8 */
func_800AA280(var_s1);
update_ok_menu_item(var_s1);
break;
case MAIN_MENU_1P_GAME: /* switch 8 */
case MAIN_MENU_2P_GAME: /* switch 8 */
case MAIN_MENU_3P_GAME: /* switch 8 */
case MAIN_MENU_4P_GAME: /* switch 8 */
case MENU_ITEM_UI_1P_GAME: /* switch 8 */
case MENU_ITEM_UI_2P_GAME: /* switch 8 */
case MENU_ITEM_UI_3P_GAME: /* switch 8 */
case MENU_ITEM_UI_4P_GAME: /* switch 8 */
switch (gMainMenuSelection) { /* switch 6 */
case MAIN_MENU_OPTION: /* switch 6 */
case MAIN_MENU_DATA: /* switch 6 */
@@ -8818,11 +8813,11 @@ void func_800A7A4C(s32 arg0) {
case MENU_ITEM_TYPE_1CE: /* switch 8 */
func_800AF480(var_s1);
break;
case MENU_ITEM_TYPE_NULL:
case START_MENU_BACKGROUND:
case START_MENU_LOGO_AND_COPYRIGHT:
case START_MENU_PUSH_START_BUTTON:
case UNUSED_TYPE_004:
case MENU_ITEM_UI_NONE:
case MENU_ITEM_UI_START_BACKGROUND:
case MENU_ITEM_UI_LOGO_AND_COPYRIGHT:
case MENU_ITEM_UI_PUSH_START_BUTTON:
case MENU_ITEM_UI_NO_CONTROLLER:
break;
}
}
@@ -8833,7 +8828,7 @@ void func_800A7A4C(s32 arg0) {
var_s1 = &gMenuItems[var_v1_2];
if (var_s1 && var_s1) {} // ?
type = var_s1->type;
if ((type == UNUSED_TYPE_004) || (type == START_MENU_TEXT_BOX) || (type == MENU_ITEM_TYPE_0C7)) {
if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || (type == MENU_ITEM_TYPE_0C7)) {
if (arg0 != 0) {
var_v1 = 1;
}
@@ -9395,7 +9390,7 @@ void update_ok_menu_item(MenuItem* arg0) {
default:
var_v0 = sp4; // wut?
break;
case MAIN_MENU_OK:
case MENU_ITEM_UI_OK:
var_v0 = D_800F0CA0[gMainMenuSelection - 1];
break;
case COURSE_SELECT_OK:
@@ -10031,7 +10026,7 @@ MenuItem* get_menu_item_player_count(void) {
s32 nbPlayer = gPlayerCount - 1;
for (; !(entry > &gMenuItems[MENU_ITEMS_MAX]); entry++) {
if ((nbPlayer + MAIN_MENU_1P_GAME) == entry->type) {
if ((nbPlayer + MENU_ITEM_UI_1P_GAME) == entry->type) {
goto escape;
}
}
+25 -16
View File
@@ -108,18 +108,18 @@ enum MENU_ITEMpriority {
enum CenterText { LEFT_TEXT = 1, CENTER_TEXT_MODE_1, RIGHT_TEXT, CENTER_TEXT_MODE_2 };
enum MENU_ITEMtype {
MENU_ITEM_TYPE_NULL,
START_MENU_BACKGROUND,
START_MENU_LOGO_AND_COPYRIGHT,
START_MENU_PUSH_START_BUTTON,
UNUSED_TYPE_004,
START_MENU_TEXT_BOX,
MAIN_MENU_GAME_SELECT_GFX = 0xA,
MAIN_MENU_1P_GAME,
MAIN_MENU_2P_GAME,
MAIN_MENU_3P_GAME,
MAIN_MENU_4P_GAME,
MAIN_MENU_OK,
MENU_ITEM_UI_NONE,
MENU_ITEM_UI_START_BACKGROUND,
MENU_ITEM_UI_LOGO_AND_COPYRIGHT,
MENU_ITEM_UI_PUSH_START_BUTTON,
MENU_ITEM_UI_NO_CONTROLLER,
MENU_ITEM_UI_START_RECORD_TIME,
MENU_ITEM_UI_GAME_SELECT = 0xA,
MENU_ITEM_UI_1P_GAME,
MENU_ITEM_UI_2P_GAME,
MENU_ITEM_UI_3P_GAME,
MENU_ITEM_UI_4P_GAME,
MENU_ITEM_UI_OK,
MAIN_MENU_OPTION_GFX,
MAIN_MENU_DATA_GFX,
MAIN_MENU_50CC,
@@ -312,6 +312,15 @@ enum MENU_ITEMtype {
MENU_ITEM_TYPE_1CE
};
enum LoadImgCompType {
LOAD_MENU_IMG_MIO0_ONCE = -1,
LOAD_MENU_IMG_TKMK00_ONCE,
// Force load image even if the data is loaded before
LOAD_MENU_IMG_FORCE = LOAD_MENU_IMG_TKMK00_ONCE, // 0
LOAD_MENU_IMG_MIO0_FORCE,
LOAD_MENU_IMG_TKMK00_FORCE
};
enum TEXT_MENU_ID { CONTINUE_GAME, RETRY, COURSE_CHANGE, DRIVER_CHANGE, QUIT_TEXT_MENU, REPLAY, SAVE_GHOST };
/* Function Prototypes */
@@ -402,8 +411,8 @@ void func_80099110(void);
void load_menu_img(MenuTexture*);
void* segmented_to_virtual_dupe(const void*);
void* segmented_to_virtual_dupe_2(const void*);
void load_img_wrap(MenuTexture*);
void load_menu_img2(MenuTexture*, s32);
void load_menu_img_mio0_always(MenuTexture*);
void load_menu_img_comp_type(MenuTexture*, s32);
void func_80099958(MenuTexture*, s32, s32);
void func_80099E54(void);
void func_80099E60(MenuTexture*, s32, s32);
@@ -656,9 +665,9 @@ extern MenuItem gMenuItems[MENU_ITEMS_MAX];
extern struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE];
extern struct_8018E060_entry D_8018E060[D_8018E060_SIZE];
extern struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE];
extern s32 gMenuTextureBufferIndex;
extern s32 sMenuTextureBufferIndex;
extern TextureMap sMenuTextureMap[TEXTURE_MAP_MAX];
extern s32 gNumD_8018E118Entries;
extern s32 sMenuTextureEntries;
extern Gfx* sGfxPtr;
extern s32 gNumD_8018E768Entries;
extern struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
+3 -3
View File
@@ -4168,7 +4168,7 @@ MenuTexture gMenuTextureBackgroundSunset[2] = {
* @brief MenuTexture for copyright
*
*/
MenuTexture D_020045E8[2] = {
MenuTexture gMenuTextureCopyright1996[2] = {
{ 1, 0, gTextureCopyright1996, 124, 17, 98, 199, 0x0, 0 },
{ 0, 0, NULL, 0, 0, 0, 0, 0, 0 },
};
@@ -4177,7 +4177,7 @@ MenuTexture D_020045E8[2] = {
* @brief MenuTexture for press start
*
*/
MenuTexture D_02004610[2] = {
MenuTexture gMenuTexturePushStartButton[2] = {
{ 1, 0, gTexturePushStartButton, 159, 16, 81, 179, 0x0, 0 },
{ 0, 0, NULL, 0, 0, 0, 0, 0, 0 },
};
@@ -4195,7 +4195,7 @@ MenuTexture D_02004638[2] = {
* @brief MenuTexture for the game select menu
*
*/
MenuTexture D_02004660[2] = {
MenuTexture gMenuTextureGameSelect[2] = {
{ 0, 0, gTextureGameSelect, 200, 32, 0, 0, 0x0, 0 },
{ 0, 0, NULL, 0, 0, 0, 0, 0, 0 },
};
+45 -43
View File
@@ -1525,7 +1525,7 @@ void func_8004B72C(s32 primRed, s32 primGreen, s32 primBlue, s32 envRed, s32 env
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
}
void func_8004B7DC(s32 x, s32 y, s32 width, s32 height, s32 arg4, s32 arg5, s32 arg6) {
void render_texture_rectangle(s32 x, s32 y, s32 width, s32 height, s32 s, s32 w, s32 mode) {
s32 xh = (((x + width) - 1) << 2);
s32 yh = (((y + height) - 1) << 2);
@@ -1535,18 +1535,20 @@ void func_8004B7DC(s32 x, s32 y, s32 width, s32 height, s32 arg4, s32 arg5, s32
s32 xh2 = (((x + width)) << 2);
s32 yh2 = ((y + height) << 2);
if (arg6 == 0) {
//! @todo Update to F3DEX. Uses OLD definition for gspTextureRectangle.
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh, yh, G_TX_RENDERTILE, arg4 << 5, (arg5 << 5), 4 << 10,
// If no cycle mode is set, render texture rectangle in copy mode
if (mode == 0) {
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh, yh, G_TX_RENDERTILE, s << 5, (w << 5), 4 << 10,
1 << 10);
return;
}
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh2, yh2, G_TX_RENDERTILE, arg4 << 5, (arg5 << 5), 1 << 10,
// Render texture rectangle in default cycle mode (1 cycle or 2 cycle)
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh2, yh2, G_TX_RENDERTILE, s << 5, (w << 5), 1 << 10,
1 << 10);
}
void func_8004B950(s32 x, s32 y, s32 width, s32 height, s32 arg4) {
func_8004B7DC(x, y, width, height, 0, 0, arg4);
void render_texture_rectangle_from_base(s32 x, s32 y, s32 width, s32 height, s32 mode) {
// (0, 0) means texture coordinates will be rendered from the top left corner
render_texture_rectangle(x, y, width, height, 0, 0, mode);
}
void func_8004B97C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
@@ -1569,7 +1571,7 @@ void func_8004B97C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
var_v0 = -arg1;
var_a1 = 0;
}
func_8004B7DC(sp2C, var_a1, arg2 - var_v1, arg3 - var_v0, var_v1, var_v0, arg4);
render_texture_rectangle(sp2C, var_a1, arg2 - var_v1, arg3 - var_v0, var_v1, var_v0, arg4);
}
}
@@ -1593,7 +1595,7 @@ void func_8004BA08(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
phi_v0 = -arg1;
phi_a1 = 0;
}
func_8004B7DC(sp2C, phi_a1, arg2 - phi_v1, arg3 - phi_v0, phi_v1 + arg2, phi_v0, arg4);
render_texture_rectangle(sp2C, phi_a1, arg2 - phi_v1, arg3 - phi_v0, phi_v1 + arg2, phi_v0, arg4);
}
}
@@ -1623,7 +1625,7 @@ void func_8004BA98(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s
sp30 = 0;
phi_a3 = arg3 + arg1;
}
func_8004B7DC(sp34, sp30, sp2C, phi_a3, phi_v0, phi_v1, arg6);
render_texture_rectangle(sp34, sp30, sp2C, phi_a3, phi_v0, phi_v1, arg6);
}
}
@@ -1678,7 +1680,7 @@ UNUSED void func_8004BD14(s32 x, s32 y, u32 width, u32 height, s32 alpha, u8* te
gDPLoadMultiTile(gDisplayListHead++, texture2, 256, G_TX_RENDERTILE + 1, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, height,
0, 0, width - 1, height - 1, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8004B950(x, y, width, height, 2);
render_texture_rectangle_from_base(x, y, width, height, 2);
gSPDisplayList(gDisplayListHead++, D_0D008120);
}
@@ -1766,54 +1768,54 @@ void func_8004C628(s32 arg0, s32 arg1, u32 arg2, u32 arg3, u8* texture) {
#ifdef NON_MATCHING
// https://decomp.me/scratch/TqXqn
// There's a weird fakematch concerning `athing`, don't know that to make of. Can't quite get it over the finish line
// There's a weird fakematch concerning `xPos`, don't know that to make of. Can't quite get it over the finish line
// though
void func_8004C6FC(s16 arg0, s16 arg1, u8* texture, u32 width, u32 arg4) {
s32 temp_v0_3;
s32 var_s3;
s32 var_s4;
s32 athing;
s32 temp_t3;
u32 temp_t8;
s32 heigth;
s32 var_s6;
void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32 height) {
s32 texSizeLess;
s32 i;
s32 yPos;
s32 xPos;
s32 texBlockCount;
u32 texSize;
s32 heightDiv;
s32 realCount;
u8* textureCopy;
athing = arg0 - (width / 2);
var_s4 = arg1 - (arg4 / 2);
xPos = x - (width / 2);
yPos = y - (height / 2);
textureCopy = texture;
gSPDisplayList(gDisplayListHead++, D_0D007EF8);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
temp_t8 = width * arg4 * 4;
temp_t3 = temp_t8 / 4096;
if (temp_t8 % 4096) {
temp_t3++;
texSize = width * height * 4;
texBlockCount = texSize / 4096;
if (texSize % 4096) {
texBlockCount++;
}
heigth = arg4 / temp_t3;
var_s6 = temp_t3;
for (var_s3 = 0; var_s3 < var_s6; var_s3++) {
load_texture_tile_rgba32_nomirror(textureCopy, width, heigth);
func_8004B950(athing, var_s4, width, heigth, 1);
temp_v0_3 = temp_t8 - (width * heigth * 4);
textureCopy += (width * heigth * 4);
if (temp_v0_3 < 0) {
heigth = temp_t8 / width;
heightDiv = height / texBlockCount;
realCount = texBlockCount;
for (i = 0; i < realCount; i++) {
load_texture_tile_rgba32_nomirror(textureCopy, width, heightDiv);
render_texture_rectangle_from_base(xPos, yPos, width, heightDiv, 1);
texSizeLess = texSize - (width * heightDiv * 4);
textureCopy += (width * heightDiv * 4);
if (texSizeLess < 0) {
heightDiv = texSize / width;
} else {
temp_t8 = temp_v0_3;
texSize = texSizeLess;
}
// Weird fakematch that is a HUGE improvement
athing += var_s4 * 0;
var_s4 += heigth;
xPos += yPos * 0;
yPos += heightDiv;
}
gSPDisplayList(gDisplayListHead++, D_0D007EB8);
}
#else
GLOBAL_ASM("asm/non_matchings/render_objects/func_8004C6FC.s")
GLOBAL_ASM("asm/non_matchings/render_objects/render_texture_tile_rgba32_block.s")
#endif
void func_8004C8D4(s16 arg0, s16 arg1) {
func_8004C6FC(arg0, arg1, D_8018D1E0, 0x100, 0x80);
void render_game_logo(s16 x, s16 y) {
render_texture_tile_rgba32_block(x, y, gGameLogoAddress, 256, 128);
}
UNUSED void func_8004C91C(s32 arg0, s32 arg1, u8* texture, s32 arg3, s32 arg4, s32 arg5) {
@@ -4687,7 +4689,7 @@ UNUSED void func_800573DC(void) {
}
void func_800573E4(s32 x, s32 y, s8 str) {
func_8004B7DC(x, y, 8, 8, (((str % 16) * 8) << 16) >> 16, (((unsigned short) (str / 16)) << 19) >> 16, 0);
render_texture_rectangle(x, y, 8, 8, (((str % 16) * 8) << 16) >> 16, (((unsigned short) (str / 16)) << 19) >> 16, 0);
}
void debug_wrap_text(s32* x, s32* y) {
+2 -2
View File
@@ -203,7 +203,7 @@ void func_8004B5A8(s32, s32, s32, s32);
void func_8004B614(s32, s32, s32, s32, s32, s32, s32);
void func_8004B6C4(s32, s32, s32);
void func_8004B72C(s32, s32, s32, s32, s32, s32, s32);
void func_8004B950(s32, s32, s32, s32, s32);
void render_texture_rectangle_from_base(s32, s32, s32, s32, s32);
void func_8004BB34(void);
void func_8004BB3C(s32, s32, s32, s32, f32);
void func_8004BD14(s32, s32, u32, u32, s32, u8*, u8*);
@@ -218,7 +218,7 @@ void draw_hud_2d_texture(s32, s32, u32, u32, u8*);
void func_8004C450(s32, s32, u32, u32, u8*);
void func_8004C53C(s32, s32, u32, u32, u8*);
void func_8004C628(s32, s32, u32, u32, u8*);
void func_8004C8D4(s16, s16);
void render_game_logo(s16, s16);
void func_8004C91C(s32, s32, u8*, s32, s32, s32);
void func_8004C9D8(s32, s32, s32, u8*, s32, s32, s32, s32);
void func_8004CA58(s32, s32, f32, u8*, s32, s32);
+3 -3
View File
@@ -490,10 +490,10 @@ extern MenuTexture D_0200455C[2];
extern MenuTexture D_02004584[1];
extern MenuTexture gMenuTextureBackgroundBlueSky[2];
extern MenuTexture gMenuTextureBackgroundSunset[2];
extern MenuTexture D_020045E8[2];
extern MenuTexture D_02004610[2];
extern MenuTexture gMenuTextureCopyright1996[2];
extern MenuTexture gMenuTexturePushStartButton[2];
extern MenuTexture D_02004638[2];
extern MenuTexture D_02004660[2];
extern MenuTexture gMenuTextureGameSelect[2];
extern MenuTexture gMenuTextureOnePlayerColone[4];
extern MenuTexture gMenuTextureTwoPlayerColone[5];
extern MenuTexture gMenuTextureThreePlayerColone[4];