diff --git a/asm/non_matchings/camera/func_8006A1C4.s b/asm/non_matchings/camera/func_8006A1C4.s index 783ea0e0..00c8c3a0 100644 --- a/asm/non_matchings/camera/func_8006A1C4.s +++ b/asm/non_matchings/camera/func_8006A1C4.s @@ -41,7 +41,7 @@ glabel func_8006A1C4 /* 06AE5C 8006A25C 10600004 */ beqz $v1, .L8006A270 /* 06AE60 8006A260 AFA2004C */ sw $v0, 0x4c($sp) /* 06AE64 8006A264 00402025 */ move $a0, $v0 -/* 06AE68 8006A268 0C01D174 */ jal func_800745D0 +/* 06AE68 8006A268 0C01D174 */ jal read_eeprom_data /* 06AE6C 8006A26C 306500FF */ andi $a1, $v1, 0xff .L8006A270: /* 06AE70 8006A270 32580008 */ andi $t8, $s2, 8 @@ -73,7 +73,7 @@ glabel func_8006A1C4 /* 06AECC 8006A2CC 11A00005 */ beqz $t5, .L8006A2E4 /* 06AED0 8006A2D0 324E0040 */ andi $t6, $s2, 0x40 /* 06AED4 8006A2D4 8FA4004C */ lw $a0, 0x4c($sp) -/* 06AED8 8006A2D8 0C01D1BC */ jal func_800746F0 +/* 06AED8 8006A2D8 0C01D1BC */ jal write_eeprom_data /* 06AEDC 8006A2DC 31A500FF */ andi $a1, $t5, 0xff /* 06AEE0 8006A2E0 324E0040 */ andi $t6, $s2, 0x40 .L8006A2E4: @@ -81,7 +81,7 @@ glabel func_8006A1C4 /* 06AEE8 8006A2E8 00122283 */ sra $a0, $s2, 0xa /* 06AEEC 8006A2EC 308F0003 */ andi $t7, $a0, 3 /* 06AEF0 8006A2F0 8FA5004C */ lw $a1, 0x4c($sp) -/* 06AEF4 8006A2F4 0C01D137 */ jal func_800744DC +/* 06AEF4 8006A2F4 0C01D137 */ jal write_save_data /* 06AEF8 8006A2F8 01E02025 */ move $a0, $t7 .L8006A2FC: /* 06AEFC 8006A2FC 32580080 */ andi $t8, $s2, 0x80 @@ -95,17 +95,17 @@ glabel func_8006A1C4 /* 06AF18 8006A318 324C0100 */ andi $t4, $s2, 0x100 /* 06AF1C 8006A31C 11800006 */ beqz $t4, .L8006A338 /* 06AF20 8006A320 324D0200 */ andi $t5, $s2, 0x200 -/* 06AF24 8006A324 0C027A9B */ jal func_8009EA6C +/* 06AF24 8006A324 0C027A9B */ jal get_eeprom_settings_pointer /* 06AF28 8006A328 00000000 */ nop -/* 06AF2C 8006A32C 0C01D21D */ jal func_80074874 +/* 06AF2C 8006A32C 0C01D21D */ jal read_eeprom_settings /* 06AF30 8006A330 00402025 */ move $a0, $v0 /* 06AF34 8006A334 324D0200 */ andi $t5, $s2, 0x200 .L8006A338: /* 06AF38 8006A338 11A00006 */ beqz $t5, .L8006A354 /* 06AF3C 8006A33C 00009025 */ move $s2, $zero -/* 06AF40 8006A340 0C027A9B */ jal func_8009EA6C +/* 06AF40 8006A340 0C027A9B */ jal get_eeprom_settings_pointer /* 06AF44 8006A344 00000000 */ nop -/* 06AF48 8006A348 0C01D25F */ jal func_8007497C +/* 06AF48 8006A348 0C01D25F */ jal write_eeprom_settings /* 06AF4C 8006A34C 00402025 */ move $a0, $v0 /* 06AF50 8006A350 00009025 */ move $s2, $zero .L8006A354: @@ -117,7 +117,7 @@ glabel func_8006A1C4 /* 06AF64 8006A364 0C0333F8 */ jal osContStartReadData /* 06AF68 8006A368 248410E0 */ addiu $a0, %lo(sSIMesgQueue) # addiu $a0, $a0, 0x10e0 .L8006A36C: -/* 06AF6C 8006A36C 3C0A800E */ lui $t2, %hi(D_800DD300) # $t2, 0x800e +/* 06AF6C 8006A36C 3C0A800E */ lui $t2, %hi(sNoControllerPluggedIn) # $t2, 0x800e /* 06AF70 8006A370 3C09800E */ lui $t1, %hi(gButtonMask) # $t1, 0x800e /* 06AF74 8006A374 3C068012 */ lui $a2, %hi(sControllerData+24) # $a2, 0x8012 /* 06AF78 8006A378 3C028012 */ lui $v0, %hi(sControllerData) # $v0, 0x8012 @@ -125,7 +125,7 @@ glabel func_8006A1C4 /* 06AF80 8006A380 3C078012 */ lui $a3, %hi(D_80121148) # $a3, 0x8012 /* 06AF84 8006A384 3C0B8012 */ lui $t3, %hi(sPlayerID) # $t3, 0x8012 /* 06AF88 8006A388 9529D304 */ lhu $t1, %lo(gButtonMask)($t1) -/* 06AF8C 8006A38C 8D4AD300 */ lw $t2, %lo(D_800DD300)($t2) +/* 06AF8C 8006A38C 8D4AD300 */ lw $t2, %lo(sNoControllerPluggedIn)($t2) /* 06AF90 8006A390 256B1150 */ addiu $t3, %lo(sPlayerID) # addiu $t3, $t3, 0x1150 /* 06AF94 8006A394 24E71148 */ addiu $a3, %lo(D_80121148) # addiu $a3, $a3, 0x1148 /* 06AF98 8006A398 25081140 */ addiu $t0, %lo(sControllerButtonsPressed) # addiu $t0, $t0, 0x1140 diff --git a/asm/non_matchings/controller_pak/func_800722E8.s b/asm/non_matchings/controller_pak/func_800722E8.s deleted file mode 100644 index a0f5cee2..00000000 --- a/asm/non_matchings/controller_pak/func_800722E8.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_800722E8 -/* 072EE8 800722E8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 072EEC 800722EC 00047400 */ sll $t6, $a0, 0x10 -/* 072EF0 800722F0 000E7C03 */ sra $t7, $t6, 0x10 -/* 072EF4 800722F4 AFA40018 */ sw $a0, 0x18($sp) -/* 072EF8 800722F8 01E02025 */ move $a0, $t7 -/* 072EFC 800722FC 05E00004 */ bltz $t7, .L80072310 -/* 072F00 80072300 AFBF0014 */ sw $ra, 0x14($sp) -/* 072F04 80072304 29E10004 */ slti $at, $t7, 4 -/* 072F08 80072308 14200003 */ bnez $at, .L80072318 -/* 072F0C 8007230C 00000000 */ nop -.L80072310: -/* 072F10 80072310 10000009 */ b .L80072338 -/* 072F14 80072314 00001025 */ move $v0, $zero -.L80072318: -/* 072F18 80072318 0C01C894 */ jal func_80072250 -/* 072F1C 8007231C 00000000 */ nop -/* 072F20 80072320 3C188012 */ lui $t8, %hi(D_801241E5) # $t8, 0x8012 -/* 072F24 80072324 24190001 */ li $t9, 1 -/* 072F28 80072328 931841E5 */ lbu $t8, %lo(D_801241E5)($t8) -/* 072F2C 8007232C 00594004 */ sllv $t0, $t9, $v0 -/* 072F30 80072330 310900FF */ andi $t1, $t0, 0xff -/* 072F34 80072334 03091024 */ and $v0, $t8, $t1 -.L80072338: -/* 072F38 80072338 8FBF0014 */ lw $ra, 0x14($sp) -/* 072F3C 8007233C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 072F40 80072340 03E00008 */ jr $ra -/* 072F44 80072344 00000000 */ nop - diff --git a/asm/non_matchings/controller_pak/func_80072348.s b/asm/non_matchings/controller_pak/func_80072348.s index 6bf6d196..14741616 100644 --- a/asm/non_matchings/controller_pak/func_80072348.s +++ b/asm/non_matchings/controller_pak/func_80072348.s @@ -27,14 +27,14 @@ glabel func_80072348 /* 072FAC 800723AC 846A0000 */ lh $t2, ($v1) /* 072FB0 800723B0 87A40022 */ lh $a0, 0x22($sp) /* 072FB4 800723B4 14CA000C */ bne $a2, $t2, .L800723E8 -/* 072FB8 800723B8 3C088012 */ lui $t0, %hi(D_801241E0) # $t0, 0x8012 +/* 072FB8 800723B8 3C088012 */ lui $t0, %hi(sUnkMiscAsset19) # $t0, 0x8012 /* 072FBC 800723BC 846B0008 */ lh $t3, 8($v1) /* 072FC0 800723C0 240CFED4 */ li $t4, -300 /* 072FC4 800723C4 05610002 */ bgez $t3, .L800723D0 -/* 072FC8 800723C8 3C0D8012 */ lui $t5, %hi(D_801241E0) # $t5, 0x8012 +/* 072FC8 800723C8 3C0D8012 */ lui $t5, %hi(sUnkMiscAsset19) # $t5, 0x8012 /* 072FCC 800723CC A46C0008 */ sh $t4, 8($v1) .L800723D0: -/* 072FD0 800723D0 8DAD41E0 */ lw $t5, %lo(D_801241E0)($t5) +/* 072FD0 800723D0 8DAD41E0 */ lw $t5, %lo(sUnkMiscAsset19)($t5) /* 072FD4 800723D4 00067880 */ sll $t7, $a2, 2 /* 072FD8 800723D8 01AFC021 */ addu $t8, $t5, $t7 /* 072FDC 800723DC 87190002 */ lh $t9, 2($t8) @@ -42,7 +42,7 @@ glabel func_80072348 /* 072FE4 800723E4 A4790004 */ sh $t9, 4($v1) .L800723E8: /* 072FE8 800723E8 A4660000 */ sh $a2, ($v1) -/* 072FEC 800723EC 8D0841E0 */ lw $t0, %lo(D_801241E0)($t0) +/* 072FEC 800723EC 8D0841E0 */ lw $t0, %lo(sUnkMiscAsset19)($t0) /* 072FF0 800723F0 00065080 */ sll $t2, $a2, 2 /* 072FF4 800723F4 010A1021 */ addu $v0, $t0, $t2 /* 072FF8 800723F8 84450000 */ lh $a1, ($v0) diff --git a/asm/non_matchings/controller_pak/func_80072424.s b/asm/non_matchings/controller_pak/func_80072424.s index 0f57e167..1928b7c0 100644 --- a/asm/non_matchings/controller_pak/func_80072424.s +++ b/asm/non_matchings/controller_pak/func_80072424.s @@ -34,10 +34,10 @@ glabel func_80072424 /* 0730A4 800724A4 846B0008 */ lh $t3, 8($v1) /* 0730A8 800724A8 240CFED4 */ li $t4, -300 /* 0730AC 800724AC 05610002 */ bgez $t3, .L800724B8 -/* 0730B0 800724B0 3C0D8012 */ lui $t5, %hi(D_801241E0) # $t5, 0x8012 +/* 0730B0 800724B0 3C0D8012 */ lui $t5, %hi(sUnkMiscAsset19) # $t5, 0x8012 /* 0730B4 800724B4 A46C0008 */ sh $t4, 8($v1) .L800724B8: -/* 0730B8 800724B8 8DAD41E0 */ lw $t5, %lo(D_801241E0)($t5) +/* 0730B8 800724B8 8DAD41E0 */ lw $t5, %lo(sUnkMiscAsset19)($t5) /* 0730BC 800724BC 00067880 */ sll $t7, $a2, 2 /* 0730C0 800724C0 01AFC021 */ addu $t8, $t5, $t7 /* 0730C4 800724C4 87190002 */ lh $t9, 2($t8) @@ -45,7 +45,7 @@ glabel func_80072424 /* 0730CC 800724CC A4790004 */ sh $t9, 4($v1) .L800724D0: /* 0730D0 800724D0 44800000 */ mtc1 $zero, $f0 -/* 0730D4 800724D4 3C088012 */ lui $t0, %hi(D_801241E0) # $t0, 0x8012 +/* 0730D4 800724D4 3C088012 */ lui $t0, %hi(sUnkMiscAsset19) # $t0, 0x8012 /* 0730D8 800724D8 4600603C */ c.lt.s $f12, $f0 /* 0730DC 800724DC 00000000 */ nop /* 0730E0 800724E0 45000002 */ bc1f .L800724EC @@ -61,7 +61,7 @@ glabel func_80072424 /* 073104 80072504 46000306 */ mov.s $f12, $f0 .L80072508: /* 073108 80072508 A4660000 */ sh $a2, ($v1) -/* 07310C 8007250C 8D0841E0 */ lw $t0, %lo(D_801241E0)($t0) +/* 07310C 8007250C 8D0841E0 */ lw $t0, %lo(sUnkMiscAsset19)($t0) /* 073110 80072510 00065080 */ sll $t2, $a2, 2 /* 073114 80072514 010A1021 */ addu $v0, $t0, $t2 /* 073118 80072518 84470000 */ lh $a3, ($v0) diff --git a/asm/non_matchings/controller_pak/func_80072718.s b/asm/non_matchings/controller_pak/func_80072718.s index 00d08135..462c4441 100644 --- a/asm/non_matchings/controller_pak/func_80072718.s +++ b/asm/non_matchings/controller_pak/func_80072718.s @@ -35,13 +35,13 @@ glabel func_80072718 /* 07337C 8007277C 244241E8 */ addiu $v0, %lo(D_801241E8) # addiu $v0, $v0, 0x41e8 /* 073380 80072780 8C580000 */ lw $t8, ($v0) /* 073384 80072784 8FB90078 */ lw $t9, 0x78($sp) -/* 073388 80072788 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012 +/* 073388 80072788 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 /* 07338C 8007278C 03194021 */ addu $t0, $t8, $t9 /* 073390 80072790 29010079 */ slti $at, $t0, 0x79 /* 073394 80072794 1420003B */ bnez $at, .L80072884 /* 073398 80072798 AC480000 */ sw $t0, ($v0) /* 07339C 8007279C AC400000 */ sw $zero, ($v0) -/* 0733A0 800727A0 8C844010 */ lw $a0, %lo(D_80124010)($a0) +/* 0733A0 800727A0 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) /* 0733A4 800727A4 0C0334A4 */ jal osPfsIsPlug /* 0733A8 800727A8 27A5006D */ addiu $a1, $sp, 0x6d /* 0733AC 800727AC 3C168012 */ lui $s6, %hi(pfs) # $s6, 0x8012 @@ -56,24 +56,24 @@ glabel func_80072718 /* 0733CC 800727CC 00608825 */ move $s1, $v1 /* 0733D0 800727D0 01435824 */ and $t3, $t2, $v1 /* 0733D4 800727D4 11600023 */ beqz $t3, .L80072864 -/* 0733D8 800727D8 3C0E8012 */ lui $t6, %hi(D_801241E5) # $t6, 0x8012 +/* 0733D8 800727D8 3C0E8012 */ lui $t6, %hi(sRumblePaksPresent) # $t6, 0x8012 /* 0733DC 800727DC 93CC0000 */ lbu $t4, ($fp) -/* 0733E0 800727E0 91CE41E5 */ lbu $t6, %lo(D_801241E5)($t6) +/* 0733E0 800727E0 91CE41E5 */ lbu $t6, %lo(sRumblePaksPresent)($t6) /* 0733E4 800727E4 01806827 */ not $t5, $t4 /* 0733E8 800727E8 01AE7824 */ and $t7, $t5, $t6 /* 0733EC 800727EC 01E3C024 */ and $t8, $t7, $v1 /* 0733F0 800727F0 1700001C */ bnez $t8, .L80072864 /* 0733F4 800727F4 00000000 */ nop /* 0733F8 800727F8 02770019 */ multu $s3, $s7 -/* 0733FC 800727FC 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012 -/* 073400 80072800 8C844010 */ lw $a0, %lo(D_80124010)($a0) +/* 0733FC 800727FC 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 +/* 073400 80072800 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) /* 073404 80072804 02603025 */ move $a2, $s3 /* 073408 80072808 0000C812 */ mflo $t9 /* 07340C 8007280C 02D92821 */ addu $a1, $s6, $t9 /* 073410 80072810 0C01C837 */ jal osMotorInit /* 073414 80072814 00000000 */ nop /* 073418 80072818 1040000E */ beqz $v0, .L80072854 -/* 07341C 8007281C 3C0E8012 */ lui $t6, %hi(D_801241E5) # $t6, 0x8012 +/* 07341C 8007281C 3C0E8012 */ lui $t6, %hi(sRumblePaksPresent) # $t6, 0x8012 /* 073420 80072820 93C80000 */ lbu $t0, ($fp) /* 073424 80072824 928A0000 */ lbu $t2, ($s4) /* 073428 80072828 02201027 */ not $v0, $s1 @@ -81,17 +81,17 @@ glabel func_80072718 /* 073430 80072830 01425824 */ and $t3, $t2, $v0 /* 073434 80072834 A3C90000 */ sb $t1, ($fp) /* 073438 80072838 A28B0000 */ sb $t3, ($s4) -/* 07343C 8007283C 3C0C8012 */ lui $t4, %hi(D_801241E5) # $t4, 0x8012 -/* 073440 80072840 918C41E5 */ lbu $t4, %lo(D_801241E5)($t4) -/* 073444 80072844 3C018012 */ lui $at, %hi(D_801241E5) # $at, 0x8012 +/* 07343C 8007283C 3C0C8012 */ lui $t4, %hi(sRumblePaksPresent) # $t4, 0x8012 +/* 073440 80072840 918C41E5 */ lbu $t4, %lo(sRumblePaksPresent)($t4) +/* 073444 80072844 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 /* 073448 80072848 01826824 */ and $t5, $t4, $v0 /* 07344C 8007284C 10000005 */ b .L80072864 -/* 073450 80072850 A02D41E5 */ sb $t5, %lo(D_801241E5)($at) +/* 073450 80072850 A02D41E5 */ sb $t5, %lo(sRumblePaksPresent)($at) .L80072854: -/* 073454 80072854 91CE41E5 */ lbu $t6, %lo(D_801241E5)($t6) -/* 073458 80072858 3C018012 */ lui $at, %hi(D_801241E5) # $at, 0x8012 +/* 073454 80072854 91CE41E5 */ lbu $t6, %lo(sRumblePaksPresent)($t6) +/* 073458 80072858 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 /* 07345C 8007285C 01D17825 */ or $t7, $t6, $s1 -/* 073460 80072860 A02F41E5 */ sb $t7, %lo(D_801241E5)($at) +/* 073460 80072860 A02F41E5 */ sb $t7, %lo(sRumblePaksPresent)($at) .L80072864: /* 073464 80072864 26730001 */ addiu $s3, $s3, 1 /* 073468 80072868 327800FF */ andi $t8, $s3, 0xff @@ -102,8 +102,8 @@ glabel func_80072718 /* 07347C 8007287C 1420FFD2 */ bnez $at, .L800727C8 /* 073480 80072880 03009825 */ move $s3, $t8 .L80072884: -/* 073484 80072884 3C088012 */ lui $t0, %hi(D_801241E5) # $t0, 0x8012 -/* 073488 80072888 910841E5 */ lbu $t0, %lo(D_801241E5)($t0) +/* 073484 80072884 3C088012 */ lui $t0, %hi(sRumblePaksPresent) # $t0, 0x8012 +/* 073488 80072888 910841E5 */ lbu $t0, %lo(sRumblePaksPresent)($t0) /* 07348C 8007288C 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e /* 073490 80072890 3C148012 */ lui $s4, %hi(D_801241E7) # $s4, 0x8012 /* 073494 80072894 3C168012 */ lui $s6, %hi(pfs) # $s6, 0x8012 @@ -117,8 +117,8 @@ glabel func_80072718 .L800728B4: /* 0734B4 800728B4 10800008 */ beqz $a0, .L800728D8 /* 0734B8 800728B8 0000A825 */ move $s5, $zero -/* 0734BC 800728BC 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012 -/* 0734C0 800728C0 8C844010 */ lw $a0, %lo(D_80124010)($a0) +/* 0734BC 800728BC 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 +/* 0734C0 800728C0 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) /* 0734C4 800728C4 0C0334A4 */ jal osPfsIsPlug /* 0734C8 800728C8 27A5006D */ addiu $a1, $sp, 0x6d /* 0734CC 800728CC 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e @@ -137,7 +137,7 @@ glabel func_80072718 /* 0734FC 800728FC 24030001 */ li $v1, 1 .L80072900: /* 073500 80072900 1080001F */ beqz $a0, .L80072980 -/* 073504 80072904 3C0D8012 */ lui $t5, %hi(D_801241E5) # $t5, 0x8012 +/* 073504 80072904 3C0D8012 */ lui $t5, %hi(sRumblePaksPresent) # $t5, 0x8012 /* 073508 80072908 2409FFFF */ li $t1, -1 /* 07350C 8007290C A6090004 */ sh $t1, 4($s0) /* 073510 80072910 86020004 */ lh $v0, 4($s0) @@ -154,8 +154,8 @@ glabel func_80072718 /* 07353C 8007293C 26730001 */ addiu $s3, $s3, 1 .L80072940: /* 073540 80072940 02770019 */ multu $s3, $s7 -/* 073544 80072944 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012 -/* 073548 80072948 8C844010 */ lw $a0, %lo(D_80124010)($a0) +/* 073544 80072944 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 +/* 073548 80072948 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) /* 07354C 8007294C 02603025 */ move $a2, $s3 /* 073550 80072950 00006012 */ mflo $t4 /* 073554 80072954 02CC9021 */ addu $s2, $s6, $t4 @@ -172,7 +172,7 @@ glabel func_80072718 /* 07357C 8007297C 26730001 */ addiu $s3, $s3, 1 .L80072980: /* 073580 80072980 93C20000 */ lbu $v0, ($fp) -/* 073584 80072984 91AD41E5 */ lbu $t5, %lo(D_801241E5)($t5) +/* 073584 80072984 91AD41E5 */ lbu $t5, %lo(sRumblePaksPresent)($t5) /* 073588 80072988 00608825 */ move $s1, $v1 /* 07358C 8007298C 004D7024 */ and $t6, $v0, $t5 /* 073590 80072990 01C37824 */ and $t7, $t6, $v1 @@ -341,8 +341,8 @@ glabel func_80072718 /* 0737F0 80072BF0 1420FF43 */ bnez $at, .L80072900 /* 0737F4 80072BF4 2610000A */ addiu $s0, $s0, 0xa /* 0737F8 80072BF8 12A00002 */ beqz $s5, .L80072C04 -/* 0737FC 80072BFC 3C018012 */ lui $at, %hi(D_801241E5) # $at, 0x8012 -/* 073800 80072C00 A02041E5 */ sb $zero, %lo(D_801241E5)($at) +/* 0737FC 80072BFC 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 +/* 073800 80072C00 A02041E5 */ sb $zero, %lo(sRumblePaksPresent)($at) .L80072C04: /* 073804 80072C04 10800003 */ beqz $a0, .L80072C14 /* 073808 80072C08 2488FFFF */ addiu $t0, $a0, -1 diff --git a/asm/non_matchings/controller_pak/func_80073C5C.s b/asm/non_matchings/controller_pak/func_80073C5C.s index d099c820..2c172a8a 100644 --- a/asm/non_matchings/controller_pak/func_80073C5C.s +++ b/asm/non_matchings/controller_pak/func_80073C5C.s @@ -20,7 +20,7 @@ glabel func_80073C5C /* 0748A4 80073CA4 AFAE0010 */ sw $t6, 0x10($sp) /* 0748A8 80073CA8 27A60100 */ addiu $a2, $sp, 0x100 /* 0748AC 80073CAC 24050010 */ li $a1, 16 -/* 0748B0 80073CB0 0C01D798 */ jal func_80075E60 +/* 0748B0 80073CB0 0C01D798 */ jal get_controller_pak_file_list /* 0748B4 80073CB4 27A700C0 */ addiu $a3, $sp, 0xc0 /* 0748B8 80073CB8 1440004B */ bnez $v0, .L80073DE8 /* 0748BC 80073CBC AFA20060 */ sw $v0, 0x60($sp) diff --git a/asm/non_matchings/controller_pak/func_80073E1C.s b/asm/non_matchings/controller_pak/func_80073E1C.s deleted file mode 100644 index 6c798f7d..00000000 --- a/asm/non_matchings/controller_pak/func_80073E1C.s +++ /dev/null @@ -1,88 +0,0 @@ -glabel func_80073E1C -/* 074A1C 80073E1C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 074A20 80073E20 AFBF001C */ sw $ra, 0x1c($sp) -/* 074A24 80073E24 AFB00018 */ sw $s0, 0x18($sp) -/* 074A28 80073E28 00808025 */ move $s0, $a0 -/* 074A2C 80073E2C AFA50034 */ sw $a1, 0x34($sp) -/* 074A30 80073E30 0C01D637 */ jal func_800758DC -/* 074A34 80073E34 AFA60038 */ sw $a2, 0x38($sp) -/* 074A38 80073E38 10400008 */ beqz $v0, .L80073E5C -/* 074A3C 80073E3C 02002025 */ move $a0, $s0 -/* 074A40 80073E40 02002025 */ move $a0, $s0 -/* 074A44 80073E44 0C01D6BB */ jal func_80075AEC -/* 074A48 80073E48 AFA20028 */ sw $v0, 0x28($sp) -/* 074A4C 80073E4C 8FA30028 */ lw $v1, 0x28($sp) -/* 074A50 80073E50 00107780 */ sll $t6, $s0, 0x1e -/* 074A54 80073E54 1000003D */ b .L80073F4C -/* 074A58 80073E58 01C31025 */ or $v0, $t6, $v1 -.L80073E5C: -/* 074A5C 80073E5C 3C05800E */ lui $a1, %hi(D_800E7670) # $a1, 0x800e -/* 074A60 80073E60 8FA60034 */ lw $a2, 0x34($sp) -/* 074A64 80073E64 24A57670 */ addiu $a1, %lo(D_800E7670) # addiu $a1, $a1, 0x7670 -/* 074A68 80073E68 0C01D93A */ jal func_800764E8 -/* 074A6C 80073E6C 27A70024 */ addiu $a3, $sp, 0x24 -/* 074A70 80073E70 1440002D */ bnez $v0, .L80073F28 -/* 074A74 80073E74 00401825 */ move $v1, $v0 -/* 074A78 80073E78 8FA50024 */ lw $a1, 0x24($sp) -/* 074A7C 80073E7C 02002025 */ move $a0, $s0 -/* 074A80 80073E80 0C01DA49 */ jal func_80076924 -/* 074A84 80073E84 27A60020 */ addiu $a2, $sp, 0x20 -/* 074A88 80073E88 8FA40020 */ lw $a0, 0x20($sp) -/* 074A8C 80073E8C 00401825 */ move $v1, $v0 -/* 074A90 80073E90 14800002 */ bnez $a0, .L80073E9C -/* 074A94 80073E94 00000000 */ nop -/* 074A98 80073E98 24030009 */ li $v1, 9 -.L80073E9C: -/* 074A9C 80073E9C 14600022 */ bnez $v1, .L80073F28 -/* 074AA0 80073EA0 00000000 */ nop -/* 074AA4 80073EA4 0C01C327 */ jal allocate_from_main_pool_safe -/* 074AA8 80073EA8 240500FF */ li $a1, 255 -/* 074AAC 80073EAC 8FA50024 */ lw $a1, 0x24($sp) -/* 074AB0 80073EB0 8FA70020 */ lw $a3, 0x20($sp) -/* 074AB4 80073EB4 AFA2002C */ sw $v0, 0x2c($sp) -/* 074AB8 80073EB8 02002025 */ move $a0, $s0 -/* 074ABC 80073EBC 0C01D984 */ jal read_data_from_controller_pak -/* 074AC0 80073EC0 00403025 */ move $a2, $v0 -/* 074AC4 80073EC4 14400013 */ bnez $v0, .L80073F14 -/* 074AC8 80073EC8 00401825 */ move $v1, $v0 -/* 074ACC 80073ECC 8FA6002C */ lw $a2, 0x2c($sp) -/* 074AD0 80073ED0 3C014741 */ lui $at, (0x47414D44 >> 16) # lui $at, 0x4741 -/* 074AD4 80073ED4 8CCF0000 */ lw $t7, ($a2) -/* 074AD8 80073ED8 34214D44 */ ori $at, (0x47414D44 & 0xFFFF) # ori $at, $at, 0x4d44 -/* 074ADC 80073EDC 15E1000D */ bne $t7, $at, .L80073F14 -/* 074AE0 80073EE0 24030009 */ li $v1, 9 -/* 074AE4 80073EE4 8FA40038 */ lw $a0, 0x38($sp) -/* 074AE8 80073EE8 24C50004 */ addiu $a1, $a2, 4 -/* 074AEC 80073EEC 0C01CC1B */ jal func_8007306C -/* 074AF0 80073EF0 AFA20028 */ sw $v0, 0x28($sp) -/* 074AF4 80073EF4 8FB80038 */ lw $t8, 0x38($sp) -/* 074AF8 80073EF8 8FA30028 */ lw $v1, 0x28($sp) -/* 074AFC 80073EFC 9319004B */ lbu $t9, 0x4b($t8) -/* 074B00 80073F00 00000000 */ nop -/* 074B04 80073F04 13200004 */ beqz $t9, .L80073F18 -/* 074B08 80073F08 8FA4002C */ lw $a0, 0x2c($sp) -/* 074B0C 80073F0C 10000001 */ b .L80073F14 -/* 074B10 80073F10 24030005 */ li $v1, 5 -.L80073F14: -/* 074B14 80073F14 8FA4002C */ lw $a0, 0x2c($sp) -.L80073F18: -/* 074B18 80073F18 0C01C450 */ jal free_from_memory_pool -/* 074B1C 80073F1C AFA30028 */ sw $v1, 0x28($sp) -/* 074B20 80073F20 8FA30028 */ lw $v1, 0x28($sp) -/* 074B24 80073F24 00000000 */ nop -.L80073F28: -/* 074B28 80073F28 02002025 */ move $a0, $s0 -/* 074B2C 80073F2C 0C01D6BB */ jal func_80075AEC -/* 074B30 80073F30 AFA30028 */ sw $v1, 0x28($sp) -/* 074B34 80073F34 8FA30028 */ lw $v1, 0x28($sp) -/* 074B38 80073F38 00104780 */ sll $t0, $s0, 0x1e -/* 074B3C 80073F3C 10600003 */ beqz $v1, .L80073F4C -/* 074B40 80073F40 00601025 */ move $v0, $v1 -/* 074B44 80073F44 00681825 */ or $v1, $v1, $t0 -/* 074B48 80073F48 00601025 */ move $v0, $v1 -.L80073F4C: -/* 074B4C 80073F4C 8FBF001C */ lw $ra, 0x1c($sp) -/* 074B50 80073F50 8FB00018 */ lw $s0, 0x18($sp) -/* 074B54 80073F54 03E00008 */ jr $ra -/* 074B58 80073F58 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/controller_pak/func_80074018.s b/asm/non_matchings/controller_pak/func_80074018.s deleted file mode 100644 index 5dc74c34..00000000 --- a/asm/non_matchings/controller_pak/func_80074018.s +++ /dev/null @@ -1,84 +0,0 @@ -glabel func_80074018 -/* 074C18 80074018 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 074C1C 8007401C AFBF001C */ sw $ra, 0x1c($sp) -/* 074C20 80074020 AFB00018 */ sw $s0, 0x18($sp) -/* 074C24 80074024 00808025 */ move $s0, $a0 -/* 074C28 80074028 AFA50034 */ sw $a1, 0x34($sp) -/* 074C2C 8007402C 0C01D637 */ jal func_800758DC -/* 074C30 80074030 AFA60038 */ sw $a2, 0x38($sp) -/* 074C34 80074034 10400008 */ beqz $v0, .L80074058 -/* 074C38 80074038 02002025 */ move $a0, $s0 -/* 074C3C 8007403C 02002025 */ move $a0, $s0 -/* 074C40 80074040 0C01D6BB */ jal func_80075AEC -/* 074C44 80074044 AFA20028 */ sw $v0, 0x28($sp) -/* 074C48 80074048 8FA30028 */ lw $v1, 0x28($sp) -/* 074C4C 8007404C 00107780 */ sll $t6, $s0, 0x1e -/* 074C50 80074050 10000039 */ b .L80074138 -/* 074C54 80074054 01C31025 */ or $v0, $t6, $v1 -.L80074058: -/* 074C58 80074058 3C05800E */ lui $a1, %hi(D_800E7690) # $a1, 0x800e -/* 074C5C 8007405C 8FA60034 */ lw $a2, 0x34($sp) -/* 074C60 80074060 24A57690 */ addiu $a1, %lo(D_800E7690) # addiu $a1, $a1, 0x7690 -/* 074C64 80074064 0C01D93A */ jal func_800764E8 -/* 074C68 80074068 27A70024 */ addiu $a3, $sp, 0x24 -/* 074C6C 8007406C 14400029 */ bnez $v0, .L80074114 -/* 074C70 80074070 00401825 */ move $v1, $v0 -/* 074C74 80074074 8FA50024 */ lw $a1, 0x24($sp) -/* 074C78 80074078 02002025 */ move $a0, $s0 -/* 074C7C 8007407C 0C01DA49 */ jal func_80076924 -/* 074C80 80074080 27A60020 */ addiu $a2, $sp, 0x20 -/* 074C84 80074084 8FA40020 */ lw $a0, 0x20($sp) -/* 074C88 80074088 00401825 */ move $v1, $v0 -/* 074C8C 8007408C 14800002 */ bnez $a0, .L80074098 -/* 074C90 80074090 00000000 */ nop -/* 074C94 80074094 24030009 */ li $v1, 9 -.L80074098: -/* 074C98 80074098 1460001E */ bnez $v1, .L80074114 -/* 074C9C 8007409C 00000000 */ nop -/* 074CA0 800740A0 0C01C327 */ jal allocate_from_main_pool_safe -/* 074CA4 800740A4 240500FF */ li $a1, 255 -/* 074CA8 800740A8 8FA50024 */ lw $a1, 0x24($sp) -/* 074CAC 800740AC 8FA70020 */ lw $a3, 0x20($sp) -/* 074CB0 800740B0 AFA2002C */ sw $v0, 0x2c($sp) -/* 074CB4 800740B4 02002025 */ move $a0, $s0 -/* 074CB8 800740B8 0C01D984 */ jal read_data_from_controller_pak -/* 074CBC 800740BC 00403025 */ move $a2, $v0 -/* 074CC0 800740C0 1440000F */ bnez $v0, .L80074100 -/* 074CC4 800740C4 00401825 */ move $v1, $v0 -/* 074CC8 800740C8 8FA7002C */ lw $a3, 0x2c($sp) -/* 074CCC 800740CC 3C015449 */ lui $at, (0x54494D44 >> 16) # lui $at, 0x5449 -/* 074CD0 800740D0 8CEF0000 */ lw $t7, ($a3) -/* 074CD4 800740D4 34214D44 */ ori $at, (0x54494D44 & 0xFFFF) # ori $at, $at, 0x4d44 -/* 074CD8 800740D8 15E10009 */ bne $t7, $at, .L80074100 -/* 074CDC 800740DC 24030009 */ li $v1, 9 -/* 074CE0 800740E0 8FA40038 */ lw $a0, 0x38($sp) -/* 074CE4 800740E4 24E50004 */ addiu $a1, $a3, 4 -/* 074CE8 800740E8 24060003 */ li $a2, 3 -/* 074CEC 800740EC 0C01CD62 */ jal func_80073588 -/* 074CF0 800740F0 AFA20028 */ sw $v0, 0x28($sp) -/* 074CF4 800740F4 8FA30028 */ lw $v1, 0x28($sp) -/* 074CF8 800740F8 10000002 */ b .L80074104 -/* 074CFC 800740FC 8FA4002C */ lw $a0, 0x2c($sp) -.L80074100: -/* 074D00 80074100 8FA4002C */ lw $a0, 0x2c($sp) -.L80074104: -/* 074D04 80074104 0C01C450 */ jal free_from_memory_pool -/* 074D08 80074108 AFA30028 */ sw $v1, 0x28($sp) -/* 074D0C 8007410C 8FA30028 */ lw $v1, 0x28($sp) -/* 074D10 80074110 00000000 */ nop -.L80074114: -/* 074D14 80074114 02002025 */ move $a0, $s0 -/* 074D18 80074118 0C01D6BB */ jal func_80075AEC -/* 074D1C 8007411C AFA30028 */ sw $v1, 0x28($sp) -/* 074D20 80074120 8FA30028 */ lw $v1, 0x28($sp) -/* 074D24 80074124 0010C780 */ sll $t8, $s0, 0x1e -/* 074D28 80074128 10600003 */ beqz $v1, .L80074138 -/* 074D2C 8007412C 00601025 */ move $v0, $v1 -/* 074D30 80074130 00781825 */ or $v1, $v1, $t8 -/* 074D34 80074134 00601025 */ move $v0, $v1 -.L80074138: -/* 074D38 80074138 8FBF001C */ lw $ra, 0x1c($sp) -/* 074D3C 8007413C 8FB00018 */ lw $s0, 0x18($sp) -/* 074D40 80074140 03E00008 */ jr $ra -/* 074D44 80074144 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/controller_pak/func_80074204.s b/asm/non_matchings/controller_pak/func_80074204.s index 7dd1f9be..f1284619 100644 --- a/asm/non_matchings/controller_pak/func_80074204.s +++ b/asm/non_matchings/controller_pak/func_80074204.s @@ -6,7 +6,7 @@ glabel func_80074204 /* 074E14 80074214 AFB10018 */ sw $s1, 0x18($sp) /* 074E18 80074218 AFB00014 */ sw $s0, 0x14($sp) /* 074E1C 8007421C AFA40030 */ sw $a0, 0x30($sp) -/* 074E20 80074220 0C01A840 */ jal func_8006A100 +/* 074E20 80074220 0C01A840 */ jal get_si_mesg_queue /* 074E24 80074224 AFA50034 */ sw $a1, 0x34($sp) /* 074E28 80074228 0C033884 */ jal osEepromProbe /* 074E2C 8007422C 00402025 */ move $a0, $v0 @@ -39,7 +39,7 @@ glabel func_80074204 /* 074E88 80074288 00409025 */ move $s2, $v0 /* 074E8C 8007428C 00008025 */ move $s0, $zero .L80074290: -/* 074E90 80074290 0C01A840 */ jal func_8006A100 +/* 074E90 80074290 0C01A840 */ jal get_si_mesg_queue /* 074E94 80074294 00000000 */ nop /* 074E98 80074298 001070C0 */ sll $t6, $s0, 3 /* 074E9C 8007429C 01D23021 */ addu $a2, $t6, $s2 diff --git a/asm/non_matchings/controller_pak/func_8007431C.s b/asm/non_matchings/controller_pak/func_8007431C.s index f24a91ea..781483c0 100644 --- a/asm/non_matchings/controller_pak/func_8007431C.s +++ b/asm/non_matchings/controller_pak/func_8007431C.s @@ -6,7 +6,7 @@ glabel func_8007431C /* 074F2C 8007432C 00A08825 */ move $s1, $a1 /* 074F30 80074330 00809025 */ move $s2, $a0 /* 074F34 80074334 AFB30020 */ sw $s3, 0x20($sp) -/* 074F38 80074338 0C01A840 */ jal func_8006A100 +/* 074F38 80074338 0C01A840 */ jal get_si_mesg_queue /* 074F3C 8007433C AFB00014 */ sw $s0, 0x14($sp) /* 074F40 80074340 0C033884 */ jal osEepromProbe /* 074F44 80074344 00402025 */ move $a0, $v0 @@ -104,7 +104,7 @@ glabel func_8007431C /* 075088 80074488 00008025 */ move $s0, $zero /* 07508C 8007448C 00C08825 */ move $s1, $a2 .L80074490: -/* 075090 80074490 0C01A840 */ jal func_8006A100 +/* 075090 80074490 0C01A840 */ jal get_si_mesg_queue /* 075094 80074494 00000000 */ nop /* 075098 80074498 001068C0 */ sll $t5, $s0, 3 /* 07509C 8007449C 01B33021 */ addu $a2, $t5, $s3 diff --git a/asm/non_matchings/controller_pak/func_800744DC.s b/asm/non_matchings/controller_pak/func_800744DC.s deleted file mode 100644 index 08dd48ce..00000000 --- a/asm/non_matchings/controller_pak/func_800744DC.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_800744DC -/* 0750DC 800744DC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0750E0 800744E0 AFBF0024 */ sw $ra, 0x24($sp) -/* 0750E4 800744E4 AFB10018 */ sw $s1, 0x18($sp) -/* 0750E8 800744E8 AFB00014 */ sw $s0, 0x14($sp) -/* 0750EC 800744EC 00808025 */ move $s0, $a0 -/* 0750F0 800744F0 00A08825 */ move $s1, $a1 -/* 0750F4 800744F4 AFB30020 */ sw $s3, 0x20($sp) -/* 0750F8 800744F8 0C01A840 */ jal func_8006A100 -/* 0750FC 800744FC AFB2001C */ sw $s2, 0x1c($sp) -/* 075100 80074500 0C033884 */ jal osEepromProbe -/* 075104 80074504 00402025 */ move $a0, $v0 -/* 075108 80074508 14400003 */ bnez $v0, .L80074518 -/* 07510C 8007450C 24120005 */ li $s2, 5 -/* 075110 80074510 10000028 */ b .L800745B4 -/* 075114 80074514 2402FFFF */ li $v0, -1 -.L80074518: -/* 075118 80074518 12000008 */ beqz $s0, .L8007453C -/* 07511C 8007451C 24040028 */ li $a0, 40 -/* 075120 80074520 24010001 */ li $at, 1 -/* 075124 80074524 12010007 */ beq $s0, $at, .L80074544 -/* 075128 80074528 24010002 */ li $at, 2 -/* 07512C 8007452C 12010007 */ beq $s0, $at, .L8007454C -/* 075130 80074530 2403000A */ li $v1, 10 -/* 075134 80074534 10000005 */ b .L8007454C -/* 075138 80074538 2403000A */ li $v1, 10 -.L8007453C: -/* 07513C 8007453C 10000003 */ b .L8007454C -/* 075140 80074540 00001825 */ move $v1, $zero -.L80074544: -/* 075144 80074544 10000001 */ b .L8007454C -/* 075148 80074548 24030005 */ li $v1, 5 -.L8007454C: -/* 07514C 8007454C 2405FFFF */ li $a1, -1 -/* 075150 80074550 0C01C327 */ jal allocate_from_main_pool_safe -/* 075154 80074554 AFA3002C */ sw $v1, 0x2c($sp) -/* 075158 80074558 00409825 */ move $s3, $v0 -/* 07515C 8007455C 02202025 */ move $a0, $s1 -/* 075160 80074560 0C01CCBA */ jal func_800732E8 -/* 075164 80074564 00402825 */ move $a1, $v0 -/* 075168 80074568 0C01BAB0 */ jal is_reset_pressed -/* 07516C 8007456C 00000000 */ nop -/* 075170 80074570 8FA3002C */ lw $v1, 0x2c($sp) -/* 075174 80074574 1440000C */ bnez $v0, .L800745A8 -/* 075178 80074578 00008025 */ move $s0, $zero -/* 07517C 8007457C 00608825 */ move $s1, $v1 -.L80074580: -/* 075180 80074580 0C01A840 */ jal func_8006A100 -/* 075184 80074584 00000000 */ nop -/* 075188 80074588 001070C0 */ sll $t6, $s0, 3 -/* 07518C 8007458C 01D33021 */ addu $a2, $t6, $s3 -/* 075190 80074590 00402025 */ move $a0, $v0 -/* 075194 80074594 0C033960 */ jal osEepromWrite -/* 075198 80074598 322500FF */ andi $a1, $s1, 0xff -/* 07519C 8007459C 26100001 */ addiu $s0, $s0, 1 -/* 0751A0 800745A0 1612FFF7 */ bne $s0, $s2, .L80074580 -/* 0751A4 800745A4 26310001 */ addiu $s1, $s1, 1 -.L800745A8: -/* 0751A8 800745A8 0C01C450 */ jal free_from_memory_pool -/* 0751AC 800745AC 02602025 */ move $a0, $s3 -/* 0751B0 800745B0 00001025 */ move $v0, $zero -.L800745B4: -/* 0751B4 800745B4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0751B8 800745B8 8FB00014 */ lw $s0, 0x14($sp) -/* 0751BC 800745BC 8FB10018 */ lw $s1, 0x18($sp) -/* 0751C0 800745C0 8FB2001C */ lw $s2, 0x1c($sp) -/* 0751C4 800745C4 8FB30020 */ lw $s3, 0x20($sp) -/* 0751C8 800745C8 03E00008 */ jr $ra -/* 0751CC 800745CC 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/controller_pak/func_800745D0.s b/asm/non_matchings/controller_pak/func_800745D0.s deleted file mode 100644 index 303b3400..00000000 --- a/asm/non_matchings/controller_pak/func_800745D0.s +++ /dev/null @@ -1,80 +0,0 @@ -glabel func_800745D0 -/* 0751D0 800745D0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0751D4 800745D4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0751D8 800745D8 AFB00018 */ sw $s0, 0x18($sp) -/* 0751DC 800745DC 30B000FF */ andi $s0, $a1, 0xff -/* 0751E0 800745E0 AFB20020 */ sw $s2, 0x20($sp) -/* 0751E4 800745E4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0751E8 800745E8 AFA40040 */ sw $a0, 0x40($sp) -/* 0751EC 800745EC 0C01A840 */ jal func_8006A100 -/* 0751F0 800745F0 AFA50044 */ sw $a1, 0x44($sp) -/* 0751F4 800745F4 0C033884 */ jal osEepromProbe -/* 0751F8 800745F8 00402025 */ move $a0, $v0 -/* 0751FC 800745FC 14400003 */ bnez $v0, .L8007460C -/* 075200 80074600 24040200 */ li $a0, 512 -/* 075204 80074604 10000034 */ b .L800746D8 -/* 075208 80074608 2402FFFF */ li $v0, -1 -.L8007460C: -/* 07520C 8007460C 0C01C327 */ jal allocate_from_main_pool_safe -/* 075210 80074610 2405FFFF */ li $a1, -1 -/* 075214 80074614 320F0001 */ andi $t7, $s0, 1 -/* 075218 80074618 00409025 */ move $s2, $v0 -/* 07521C 8007461C 11E00014 */ beqz $t7, .L80074670 -/* 075220 80074620 AFB00028 */ sw $s0, 0x28($sp) -/* 075224 80074624 24110018 */ li $s1, 24 -/* 075228 80074628 00008025 */ move $s0, $zero -.L8007462C: -/* 07522C 8007462C 0C01A840 */ jal func_8006A100 -/* 075230 80074630 00000000 */ nop -/* 075234 80074634 26050010 */ addiu $a1, $s0, 0x10 -/* 075238 80074638 30B800FF */ andi $t8, $a1, 0xff -/* 07523C 8007463C 0010C8C0 */ sll $t9, $s0, 3 -/* 075240 80074640 03323021 */ addu $a2, $t9, $s2 -/* 075244 80074644 03002825 */ move $a1, $t8 -/* 075248 80074648 0C0338A0 */ jal osEepromRead -/* 07524C 8007464C 00402025 */ move $a0, $v0 -/* 075250 80074650 26100001 */ addiu $s0, $s0, 1 -/* 075254 80074654 0211082A */ slt $at, $s0, $s1 -/* 075258 80074658 1420FFF4 */ bnez $at, .L8007462C -/* 07525C 8007465C 00000000 */ nop -/* 075260 80074660 8FA40040 */ lw $a0, 0x40($sp) -/* 075264 80074664 02402825 */ move $a1, $s2 -/* 075268 80074668 0C01CD62 */ jal func_80073588 -/* 07526C 8007466C 24060001 */ li $a2, 1 -.L80074670: -/* 075270 80074670 8FA80028 */ lw $t0, 0x28($sp) -/* 075274 80074674 24110018 */ li $s1, 24 -/* 075278 80074678 31090002 */ andi $t1, $t0, 2 -/* 07527C 8007467C 11200013 */ beqz $t1, .L800746CC -/* 075280 80074680 00008025 */ move $s0, $zero -.L80074684: -/* 075284 80074684 0C01A840 */ jal func_8006A100 -/* 075288 80074688 00000000 */ nop -/* 07528C 8007468C 26050028 */ addiu $a1, $s0, 0x28 -/* 075290 80074690 001058C0 */ sll $t3, $s0, 3 -/* 075294 80074694 024B3021 */ addu $a2, $s2, $t3 -/* 075298 80074698 30AA00FF */ andi $t2, $a1, 0xff -/* 07529C 8007469C 01402825 */ move $a1, $t2 -/* 0752A0 800746A0 24C600C0 */ addiu $a2, $a2, 0xc0 -/* 0752A4 800746A4 0C0338A0 */ jal osEepromRead -/* 0752A8 800746A8 00402025 */ move $a0, $v0 -/* 0752AC 800746AC 26100001 */ addiu $s0, $s0, 1 -/* 0752B0 800746B0 0211082A */ slt $at, $s0, $s1 -/* 0752B4 800746B4 1420FFF3 */ bnez $at, .L80074684 -/* 0752B8 800746B8 00000000 */ nop -/* 0752BC 800746BC 8FA40040 */ lw $a0, 0x40($sp) -/* 0752C0 800746C0 02402825 */ move $a1, $s2 -/* 0752C4 800746C4 0C01CD62 */ jal func_80073588 -/* 0752C8 800746C8 24060002 */ li $a2, 2 -.L800746CC: -/* 0752CC 800746CC 0C01C450 */ jal free_from_memory_pool -/* 0752D0 800746D0 02402025 */ move $a0, $s2 -/* 0752D4 800746D4 00001025 */ move $v0, $zero -.L800746D8: -/* 0752D8 800746D8 8FBF0024 */ lw $ra, 0x24($sp) -/* 0752DC 800746DC 8FB00018 */ lw $s0, 0x18($sp) -/* 0752E0 800746E0 8FB1001C */ lw $s1, 0x1c($sp) -/* 0752E4 800746E4 8FB20020 */ lw $s2, 0x20($sp) -/* 0752E8 800746E8 03E00008 */ jr $ra -/* 0752EC 800746EC 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/controller_pak/func_800746F0.s b/asm/non_matchings/controller_pak/func_800746F0.s deleted file mode 100644 index c22faf6e..00000000 --- a/asm/non_matchings/controller_pak/func_800746F0.s +++ /dev/null @@ -1,79 +0,0 @@ -glabel func_800746F0 -/* 0752F0 800746F0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0752F4 800746F4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0752F8 800746F8 AFB1001C */ sw $s1, 0x1c($sp) -/* 0752FC 800746FC AFB00018 */ sw $s0, 0x18($sp) -/* 075300 80074700 00808025 */ move $s0, $a0 -/* 075304 80074704 30B100FF */ andi $s1, $a1, 0xff -/* 075308 80074708 AFB20020 */ sw $s2, 0x20($sp) -/* 07530C 8007470C 0C01A840 */ jal func_8006A100 -/* 075310 80074710 AFA50044 */ sw $a1, 0x44($sp) -/* 075314 80074714 0C033884 */ jal osEepromProbe -/* 075318 80074718 00402025 */ move $a0, $v0 -/* 07531C 8007471C 14400003 */ bnez $v0, .L8007472C -/* 075320 80074720 24040200 */ li $a0, 512 -/* 075324 80074724 10000033 */ b .L800747F4 -/* 075328 80074728 2402FFFF */ li $v0, -1 -.L8007472C: -/* 07532C 8007472C 0C01C327 */ jal allocate_from_main_pool_safe -/* 075330 80074730 2405FFFF */ li $a1, -1 -/* 075334 80074734 00409025 */ move $s2, $v0 -/* 075338 80074738 02002025 */ move $a0, $s0 -/* 07533C 8007473C 0C01CE29 */ jal func_800738A4 -/* 075340 80074740 00402825 */ move $a1, $v0 -/* 075344 80074744 322F0001 */ andi $t7, $s1, 1 -/* 075348 80074748 11E00011 */ beqz $t7, .L80074790 -/* 07534C 8007474C AFB10028 */ sw $s1, 0x28($sp) -/* 075350 80074750 0C01BAB0 */ jal is_reset_pressed -/* 075354 80074754 24110018 */ li $s1, 24 -/* 075358 80074758 1440000D */ bnez $v0, .L80074790 -/* 07535C 8007475C 00008025 */ move $s0, $zero -.L80074760: -/* 075360 80074760 0C01A840 */ jal func_8006A100 -/* 075364 80074764 00000000 */ nop -/* 075368 80074768 26050010 */ addiu $a1, $s0, 0x10 -/* 07536C 8007476C 30B800FF */ andi $t8, $a1, 0xff -/* 075370 80074770 0010C8C0 */ sll $t9, $s0, 3 -/* 075374 80074774 03323021 */ addu $a2, $t9, $s2 -/* 075378 80074778 03002825 */ move $a1, $t8 -/* 07537C 8007477C 0C033960 */ jal osEepromWrite -/* 075380 80074780 00402025 */ move $a0, $v0 -/* 075384 80074784 26100001 */ addiu $s0, $s0, 1 -/* 075388 80074788 1611FFF5 */ bne $s0, $s1, .L80074760 -/* 07538C 8007478C 00000000 */ nop -.L80074790: -/* 075390 80074790 8FA80028 */ lw $t0, 0x28($sp) -/* 075394 80074794 00000000 */ nop -/* 075398 80074798 31090002 */ andi $t1, $t0, 2 -/* 07539C 8007479C 11200012 */ beqz $t1, .L800747E8 -/* 0753A0 800747A0 00000000 */ nop -/* 0753A4 800747A4 0C01BAB0 */ jal is_reset_pressed -/* 0753A8 800747A8 24110018 */ li $s1, 24 -/* 0753AC 800747AC 1440000E */ bnez $v0, .L800747E8 -/* 0753B0 800747B0 00008025 */ move $s0, $zero -.L800747B4: -/* 0753B4 800747B4 0C01A840 */ jal func_8006A100 -/* 0753B8 800747B8 00000000 */ nop -/* 0753BC 800747BC 26050028 */ addiu $a1, $s0, 0x28 -/* 0753C0 800747C0 001058C0 */ sll $t3, $s0, 3 -/* 0753C4 800747C4 024B3021 */ addu $a2, $s2, $t3 -/* 0753C8 800747C8 30AA00FF */ andi $t2, $a1, 0xff -/* 0753CC 800747CC 01402825 */ move $a1, $t2 -/* 0753D0 800747D0 24C600C0 */ addiu $a2, $a2, 0xc0 -/* 0753D4 800747D4 0C033960 */ jal osEepromWrite -/* 0753D8 800747D8 00402025 */ move $a0, $v0 -/* 0753DC 800747DC 26100001 */ addiu $s0, $s0, 1 -/* 0753E0 800747E0 1611FFF4 */ bne $s0, $s1, .L800747B4 -/* 0753E4 800747E4 00000000 */ nop -.L800747E8: -/* 0753E8 800747E8 0C01C450 */ jal free_from_memory_pool -/* 0753EC 800747EC 02402025 */ move $a0, $s2 -/* 0753F0 800747F0 00001025 */ move $v0, $zero -.L800747F4: -/* 0753F4 800747F4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0753F8 800747F8 8FB00018 */ lw $s0, 0x18($sp) -/* 0753FC 800747FC 8FB1001C */ lw $s1, 0x1c($sp) -/* 075400 80074800 8FB20020 */ lw $s2, 0x20($sp) -/* 075404 80074804 03E00008 */ jr $ra -/* 075408 80074808 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/controller_pak/func_8007480C.s b/asm/non_matchings/controller_pak/func_8007480C.s deleted file mode 100644 index 72b412c6..00000000 --- a/asm/non_matchings/controller_pak/func_8007480C.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_8007480C -/* 07540C 8007480C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 075410 80074810 AFB20020 */ sw $s2, 0x20($sp) -/* 075414 80074814 AFB1001C */ sw $s1, 0x1c($sp) -/* 075418 80074818 AFB00018 */ sw $s0, 0x18($sp) -/* 07541C 8007481C AFBF0024 */ sw $ra, 0x24($sp) -/* 075420 80074820 AFA40028 */ sw $a0, 0x28($sp) -/* 075424 80074824 AFA5002C */ sw $a1, 0x2c($sp) -/* 075428 80074828 24110005 */ li $s1, 5 -/* 07542C 8007482C 00008025 */ move $s0, $zero -/* 075430 80074830 2412000E */ li $s2, 14 -.L80074834: -/* 075434 80074834 8FA40028 */ lw $a0, 0x28($sp) -/* 075438 80074838 8FA5002C */ lw $a1, 0x2c($sp) -/* 07543C 8007483C 00103880 */ sll $a3, $s0, 2 -/* 075440 80074840 0C033A98 */ jal __ull_rshift -/* 075444 80074844 000737C3 */ sra $a2, $a3, 0x1f -/* 075448 80074848 26100001 */ addiu $s0, $s0, 1 -/* 07544C 8007484C 3079000F */ andi $t9, $v1, 0xf -/* 075450 80074850 1612FFF8 */ bne $s0, $s2, .L80074834 -/* 075454 80074854 02398821 */ addu $s1, $s1, $t9 -/* 075458 80074858 8FBF0024 */ lw $ra, 0x24($sp) -/* 07545C 8007485C 02201025 */ move $v0, $s1 -/* 075460 80074860 8FB1001C */ lw $s1, 0x1c($sp) -/* 075464 80074864 8FB00018 */ lw $s0, 0x18($sp) -/* 075468 80074868 8FB20020 */ lw $s2, 0x20($sp) -/* 07546C 8007486C 03E00008 */ jr $ra -/* 075470 80074870 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/controller_pak/func_80074874.s b/asm/non_matchings/controller_pak/func_80074874.s deleted file mode 100644 index a9cb0884..00000000 --- a/asm/non_matchings/controller_pak/func_80074874.s +++ /dev/null @@ -1,71 +0,0 @@ -glabel func_80074874 -/* 075474 80074874 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 075478 80074878 AFBF001C */ sw $ra, 0x1c($sp) -/* 07547C 8007487C AFB00018 */ sw $s0, 0x18($sp) -/* 075480 80074880 0C01A840 */ jal func_8006A100 -/* 075484 80074884 00808025 */ move $s0, $a0 -/* 075488 80074888 0C033884 */ jal osEepromProbe -/* 07548C 8007488C 00402025 */ move $a0, $v0 -/* 075490 80074890 14400003 */ bnez $v0, .L800748A0 -/* 075494 80074894 00000000 */ nop -/* 075498 80074898 10000034 */ b .L8007496C -/* 07549C 8007489C 2402FFFF */ li $v0, -1 -.L800748A0: -/* 0754A0 800748A0 0C01A840 */ jal func_8006A100 -/* 0754A4 800748A4 00000000 */ nop -/* 0754A8 800748A8 00402025 */ move $a0, $v0 -/* 0754AC 800748AC 2405000F */ li $a1, 15 -/* 0754B0 800748B0 0C0338A0 */ jal osEepromRead -/* 0754B4 800748B4 02003025 */ move $a2, $s0 -/* 0754B8 800748B8 8E040000 */ lw $a0, ($s0) -/* 0754BC 800748BC 8E050004 */ lw $a1, 4($s0) -/* 0754C0 800748C0 0C01D203 */ jal func_8007480C -/* 0754C4 800748C4 00000000 */ nop -/* 0754C8 800748C8 AFA20020 */ sw $v0, 0x20($sp) -/* 0754CC 800748CC 8E050004 */ lw $a1, 4($s0) -/* 0754D0 800748D0 8E040000 */ lw $a0, ($s0) -/* 0754D4 800748D4 24060000 */ li $a2, 0 -/* 0754D8 800748D8 0C033A98 */ jal __ull_rshift -/* 0754DC 800748DC 24070038 */ li $a3, 56 -/* 0754E0 800748E0 8FAE0020 */ lw $t6, 0x20($sp) -/* 0754E4 800748E4 24180000 */ li $t8, 0 -/* 0754E8 800748E8 11C3001F */ beq $t6, $v1, .L80074968 -/* 0754EC 800748EC 3C190300 */ lui $t9, 0x300 -/* 0754F0 800748F0 AE180000 */ sw $t8, ($s0) -/* 0754F4 800748F4 AE190004 */ sw $t9, 4($s0) -/* 0754F8 800748F8 24040000 */ li $a0, 0 -/* 0754FC 800748FC 3C050300 */ lui $a1, 0x300 -/* 075500 80074900 24060000 */ li $a2, 0 -/* 075504 80074904 0C033AC1 */ jal __ll_lshift -/* 075508 80074908 24070008 */ li $a3, 8 -/* 07550C 8007490C AE020000 */ sw $v0, ($s0) -/* 075510 80074910 AE030004 */ sw $v1, 4($s0) -/* 075514 80074914 00402025 */ move $a0, $v0 -/* 075518 80074918 00602825 */ move $a1, $v1 -/* 07551C 8007491C 24060000 */ li $a2, 0 -/* 075520 80074920 0C033A98 */ jal __ull_rshift -/* 075524 80074924 24070008 */ li $a3, 8 -/* 075528 80074928 AE020000 */ sw $v0, ($s0) -/* 07552C 8007492C AE030004 */ sw $v1, 4($s0) -/* 075530 80074930 00402025 */ move $a0, $v0 -/* 075534 80074934 0C01D203 */ jal func_8007480C -/* 075538 80074938 00602825 */ move $a1, $v1 -/* 07553C 8007493C 00402825 */ move $a1, $v0 -/* 075540 80074940 000227C3 */ sra $a0, $v0, 0x1f -/* 075544 80074944 24060000 */ li $a2, 0 -/* 075548 80074948 0C033AC1 */ jal __ll_lshift -/* 07554C 8007494C 24070038 */ li $a3, 56 -/* 075550 80074950 8E080000 */ lw $t0, ($s0) -/* 075554 80074954 8E090004 */ lw $t1, 4($s0) -/* 075558 80074958 01025025 */ or $t2, $t0, $v0 -/* 07555C 8007495C 01235825 */ or $t3, $t1, $v1 -/* 075560 80074960 AE0B0004 */ sw $t3, 4($s0) -/* 075564 80074964 AE0A0000 */ sw $t2, ($s0) -.L80074968: -/* 075568 80074968 24020001 */ li $v0, 1 -.L8007496C: -/* 07556C 8007496C 8FBF001C */ lw $ra, 0x1c($sp) -/* 075570 80074970 8FB00018 */ lw $s0, 0x18($sp) -/* 075574 80074974 03E00008 */ jr $ra -/* 075578 80074978 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/controller_pak/func_8007497C.s b/asm/non_matchings/controller_pak/func_8007497C.s deleted file mode 100644 index d02bc25e..00000000 --- a/asm/non_matchings/controller_pak/func_8007497C.s +++ /dev/null @@ -1,56 +0,0 @@ -glabel func_8007497C -/* 07557C 8007497C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 075580 80074980 AFBF001C */ sw $ra, 0x1c($sp) -/* 075584 80074984 AFB00018 */ sw $s0, 0x18($sp) -/* 075588 80074988 0C01A840 */ jal func_8006A100 -/* 07558C 8007498C 00808025 */ move $s0, $a0 -/* 075590 80074990 0C033884 */ jal osEepromProbe -/* 075594 80074994 00402025 */ move $a0, $v0 -/* 075598 80074998 14400003 */ bnez $v0, .L800749A8 -/* 07559C 8007499C 24060000 */ li $a2, 0 -/* 0755A0 800749A0 10000026 */ b .L80074A3C -/* 0755A4 800749A4 2402FFFF */ li $v0, -1 -.L800749A8: -/* 0755A8 800749A8 8E040000 */ lw $a0, ($s0) -/* 0755AC 800749AC 8E050004 */ lw $a1, 4($s0) -/* 0755B0 800749B0 0C033AC1 */ jal __ll_lshift -/* 0755B4 800749B4 24070008 */ li $a3, 8 -/* 0755B8 800749B8 AE020000 */ sw $v0, ($s0) -/* 0755BC 800749BC AE030004 */ sw $v1, 4($s0) -/* 0755C0 800749C0 00402025 */ move $a0, $v0 -/* 0755C4 800749C4 00602825 */ move $a1, $v1 -/* 0755C8 800749C8 24060000 */ li $a2, 0 -/* 0755CC 800749CC 0C033A98 */ jal __ull_rshift -/* 0755D0 800749D0 24070008 */ li $a3, 8 -/* 0755D4 800749D4 AE020000 */ sw $v0, ($s0) -/* 0755D8 800749D8 AE030004 */ sw $v1, 4($s0) -/* 0755DC 800749DC 00402025 */ move $a0, $v0 -/* 0755E0 800749E0 0C01D203 */ jal func_8007480C -/* 0755E4 800749E4 00602825 */ move $a1, $v1 -/* 0755E8 800749E8 00402825 */ move $a1, $v0 -/* 0755EC 800749EC 000227C3 */ sra $a0, $v0, 0x1f -/* 0755F0 800749F0 24060000 */ li $a2, 0 -/* 0755F4 800749F4 0C033AC1 */ jal __ll_lshift -/* 0755F8 800749F8 24070038 */ li $a3, 56 -/* 0755FC 800749FC 8E0E0000 */ lw $t6, ($s0) -/* 075600 80074A00 8E0F0004 */ lw $t7, 4($s0) -/* 075604 80074A04 01C2C025 */ or $t8, $t6, $v0 -/* 075608 80074A08 01E3C825 */ or $t9, $t7, $v1 -/* 07560C 80074A0C AE190004 */ sw $t9, 4($s0) -/* 075610 80074A10 0C01BAB0 */ jal is_reset_pressed -/* 075614 80074A14 AE180000 */ sw $t8, ($s0) -/* 075618 80074A18 14400008 */ bnez $v0, .L80074A3C -/* 07561C 80074A1C 24020001 */ li $v0, 1 -/* 075620 80074A20 0C01A840 */ jal func_8006A100 -/* 075624 80074A24 00000000 */ nop -/* 075628 80074A28 00402025 */ move $a0, $v0 -/* 07562C 80074A2C 2405000F */ li $a1, 15 -/* 075630 80074A30 0C033960 */ jal osEepromWrite -/* 075634 80074A34 02003025 */ move $a2, $s0 -/* 075638 80074A38 24020001 */ li $v0, 1 -.L80074A3C: -/* 07563C 80074A3C 8FBF001C */ lw $ra, 0x1c($sp) -/* 075640 80074A40 8FB00018 */ lw $s0, 0x18($sp) -/* 075644 80074A44 03E00008 */ jr $ra -/* 075648 80074A48 27BD0020 */ addiu $sp, $sp, 0x20 - diff --git a/asm/non_matchings/controller_pak/func_80074A4C.s b/asm/non_matchings/controller_pak/func_80074A4C.s deleted file mode 100644 index c0472d1a..00000000 --- a/asm/non_matchings/controller_pak/func_80074A4C.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel func_80074A4C -/* 07564C 80074A4C 84820006 */ lh $v0, 6($a0) -/* 075650 80074A50 00001825 */ move $v1, $zero -/* 075654 80074A54 00027080 */ sll $t6, $v0, 2 -/* 075658 80074A58 01C27023 */ subu $t6, $t6, $v0 -/* 07565C 80074A5C 000EC080 */ sll $t8, $t6, 2 -/* 075660 80074A60 27020008 */ addiu $v0, $t8, 8 -/* 075664 80074A64 0002CC00 */ sll $t9, $v0, 0x10 -/* 075668 80074A68 00191403 */ sra $v0, $t9, 0x10 -/* 07566C 80074A6C 28410003 */ slti $at, $v0, 3 -/* 075670 80074A70 1420000B */ bnez $at, .L80074AA0 -/* 075674 80074A74 24050002 */ li $a1, 2 -.L80074A78: -/* 075678 80074A78 00854821 */ addu $t1, $a0, $a1 -/* 07567C 80074A7C 912A0000 */ lbu $t2, ($t1) -/* 075680 80074A80 24A50001 */ addiu $a1, $a1, 1 -/* 075684 80074A84 00056C00 */ sll $t5, $a1, 0x10 -/* 075688 80074A88 000D2C03 */ sra $a1, $t5, 0x10 -/* 07568C 80074A8C 006A1821 */ addu $v1, $v1, $t2 -/* 075690 80074A90 00A2082A */ slt $at, $a1, $v0 -/* 075694 80074A94 00035C00 */ sll $t3, $v1, 0x10 -/* 075698 80074A98 1420FFF7 */ bnez $at, .L80074A78 -/* 07569C 80074A9C 000B1C03 */ sra $v1, $t3, 0x10 -.L80074AA0: -/* 0756A0 80074AA0 03E00008 */ jr $ra -/* 0756A4 80074AA4 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/controller_pak/func_80074B1C.s b/asm/non_matchings/controller_pak/func_80074B1C.s deleted file mode 100644 index 41034853..00000000 --- a/asm/non_matchings/controller_pak/func_80074B1C.s +++ /dev/null @@ -1,8 +0,0 @@ -glabel func_80074B1C -/* 07571C 80074B1C 24031100 */ li $v1, 4352 -/* 075720 80074B20 00031080 */ sll $v0, $v1, 2 -/* 075724 80074B24 00431023 */ subu $v0, $v0, $v1 -/* 075728 80074B28 00021040 */ sll $v0, $v0, 1 -/* 07572C 80074B2C 03E00008 */ jr $ra -/* 075730 80074B30 24420100 */ addiu $v0, $v0, 0x100 - diff --git a/asm/non_matchings/controller_pak/func_80074B34.s b/asm/non_matchings/controller_pak/func_80074B34.s index 62679033..5dcb1b68 100644 --- a/asm/non_matchings/controller_pak/func_80074B34.s +++ b/asm/non_matchings/controller_pak/func_80074B34.s @@ -5,12 +5,12 @@ glabel func_80074B34 /* 075740 80074B40 AFA5005C */ sw $a1, 0x5c($sp) /* 075744 80074B44 AFA60060 */ sw $a2, 0x60($sp) /* 075748 80074B48 AFA70064 */ sw $a3, 0x64($sp) -/* 07574C 80074B4C 0C01D637 */ jal func_800758DC +/* 07574C 80074B4C 0C01D637 */ jal get_si_device_status /* 075750 80074B50 AFA00040 */ sw $zero, 0x40($sp) /* 075754 80074B54 10400007 */ beqz $v0, .L80074B74 /* 075758 80074B58 3C05800E */ lui $a1, %hi(D_800E773C) # $a1, 0x800e /* 07575C 80074B5C 8FA40058 */ lw $a0, 0x58($sp) -/* 075760 80074B60 0C01D6BB */ jal func_80075AEC +/* 075760 80074B60 0C01D6BB */ jal start_reading_controller_data /* 075764 80074B64 AFA2004C */ sw $v0, 0x4c($sp) /* 075768 80074B68 8FA2004C */ lw $v0, 0x4c($sp) /* 07576C 80074B6C 100000CF */ b .L80074EAC @@ -28,7 +28,7 @@ glabel func_80074B34 .L80074B98: /* 075798 80074B98 8FA40058 */ lw $a0, 0x58($sp) /* 07579C 80074B9C 24C6774C */ addiu $a2, %lo(D_800E774C) # addiu $a2, $a2, 0x774c -/* 0757A0 80074BA0 0C01D93A */ jal func_800764E8 +/* 0757A0 80074BA0 0C01D93A */ jal get_file_number /* 0757A4 80074BA4 27A70048 */ addiu $a3, $sp, 0x48 /* 0757A8 80074BA8 144000A1 */ bnez $v0, .L80074E30 /* 0757AC 80074BAC 00403825 */ move $a3, $v0 @@ -50,8 +50,8 @@ glabel func_80074B34 /* 0757EC 80074BEC 01802825 */ move $a1, $t4 /* 0757F0 80074BF0 31AE0001 */ andi $t6, $t5, 1 /* 0757F4 80074BF4 15C00004 */ bnez $t6, .L80074C08 -/* 0757F8 80074BF8 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012 -/* 0757FC 80074BFC 8C844010 */ lw $a0, %lo(D_80124010)($a0) +/* 0757F8 80074BF8 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 +/* 0757FC 80074BFC 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) /* 075800 80074C00 0C033B48 */ jal osPfsInit /* 075804 80074C04 03203025 */ move $a2, $t9 .L80074C08: @@ -162,7 +162,7 @@ glabel func_80074B34 /* 07597C 80074D7C 14400020 */ bnez $v0, .L80074E00 /* 075980 80074D80 24070009 */ li $a3, 9 /* 075984 80074D84 8FA40050 */ lw $a0, 0x50($sp) -/* 075988 80074D88 0C01D293 */ jal func_80074A4C +/* 075988 80074D88 0C01D293 */ jal calculate_ghost_header_checksum /* 07598C 80074D8C 00000000 */ nop /* 075990 80074D90 8FAA0050 */ lw $t2, 0x50($sp) /* 075994 80074D94 8FAE0064 */ lw $t6, 0x64($sp) @@ -211,7 +211,7 @@ glabel func_80074B34 .L80074E30: /* 075A30 80074E30 8FA40058 */ lw $a0, 0x58($sp) .L80074E34: -/* 075A34 80074E34 0C01D6BB */ jal func_80075AEC +/* 075A34 80074E34 0C01D6BB */ jal start_reading_controller_data /* 075A38 80074E38 AFA7004C */ sw $a3, 0x4c($sp) /* 075A3C 80074E3C 8FA7004C */ lw $a3, 0x4c($sp) /* 075A40 80074E40 24010005 */ li $at, 5 @@ -219,7 +219,7 @@ glabel func_80074B34 /* 075A48 80074E48 27A50038 */ addiu $a1, $sp, 0x38 /* 075A4C 80074E4C 8FA40058 */ lw $a0, 0x58($sp) /* 075A50 80074E50 27A60034 */ addiu $a2, $sp, 0x34 -/* 075A54 80074E54 0C01D865 */ jal func_80076194 +/* 075A54 80074E54 0C01D865 */ jal get_free_space /* 075A58 80074E58 AFA7004C */ sw $a3, 0x4c($sp) /* 075A5C 80074E5C 8FA7004C */ lw $a3, 0x4c($sp) /* 075A60 80074E60 1440000E */ bnez $v0, .L80074E9C diff --git a/asm/non_matchings/controller_pak/func_80074EB8.s b/asm/non_matchings/controller_pak/func_80074EB8.s index a32f5bb0..6e6b117f 100644 --- a/asm/non_matchings/controller_pak/func_80074EB8.s +++ b/asm/non_matchings/controller_pak/func_80074EB8.s @@ -79,7 +79,7 @@ glabel func_80074EB8 /* 075BD0 80074FD0 24E77778 */ addiu $a3, %lo(D_800E7778) # addiu $a3, $a3, 0x7778 /* 075BD4 80074FD4 24C67768 */ addiu $a2, %lo(D_800E7768) # addiu $a2, $a2, 0x7768 /* 075BD8 80074FD8 2405FFFF */ li $a1, -1 -/* 075BDC 80074FDC 0C01D9B5 */ jal func_800766D4 +/* 075BDC 80074FDC 0C01D9B5 */ jal write_controller_pak_file /* 075BE0 80074FE0 AFAD0010 */ sw $t5, 0x10($sp) /* 075BE4 80074FE4 8FA40038 */ lw $a0, 0x38($sp) /* 075BE8 80074FE8 0C01C450 */ jal free_from_memory_pool diff --git a/asm/non_matchings/controller_pak/func_80075000.s b/asm/non_matchings/controller_pak/func_80075000.s index 6862d71a..bbe2e44d 100644 --- a/asm/non_matchings/controller_pak/func_80075000.s +++ b/asm/non_matchings/controller_pak/func_80075000.s @@ -18,12 +18,12 @@ glabel func_80075000 /* 075C14 80075014 AFA40078 */ sw $a0, 0x78($sp) /* 075C18 80075018 AFA5007C */ sw $a1, 0x7c($sp) /* 075C1C 8007501C AFA60080 */ sw $a2, 0x80($sp) -/* 075C20 80075020 0C01D637 */ jal func_800758DC +/* 075C20 80075020 0C01D637 */ jal get_si_device_status /* 075C24 80075024 AFA70084 */ sw $a3, 0x84($sp) /* 075C28 80075028 10400006 */ beqz $v0, .L80075044 /* 075C2C 8007502C 00408025 */ move $s0, $v0 /* 075C30 80075030 8FA40078 */ lw $a0, 0x78($sp) -/* 075C34 80075034 0C01D6BB */ jal func_80075AEC +/* 075C34 80075034 0C01D6BB */ jal start_reading_controller_data /* 075C38 80075038 00000000 */ nop /* 075C3C 8007503C 100000E0 */ b .L800753C0 /* 075C40 80075040 02001025 */ move $v0, $s0 @@ -34,13 +34,13 @@ glabel func_80075000 /* 075C50 80075050 24111100 */ li $s1, 4352 /* 075C54 80075054 24C6778C */ addiu $a2, %lo(D_800E778C) # addiu $a2, $a2, 0x778c /* 075C58 80075058 24A5777C */ addiu $a1, %lo(D_800E777C) # addiu $a1, $a1, 0x777c -/* 075C5C 8007505C 0C01D93A */ jal func_800764E8 +/* 075C5C 8007505C 0C01D93A */ jal get_file_number /* 075C60 80075060 27A7004C */ addiu $a3, $sp, 0x4c /* 075C64 80075064 24010005 */ li $at, 5 /* 075C68 80075068 14410011 */ bne $v0, $at, .L800750B0 /* 075C6C 8007506C 00408025 */ move $s0, $v0 /* 075C70 80075070 8FA40078 */ lw $a0, 0x78($sp) -/* 075C74 80075074 0C01D6BB */ jal func_80075AEC +/* 075C74 80075074 0C01D6BB */ jal start_reading_controller_data /* 075C78 80075078 00000000 */ nop /* 075C7C 8007507C 87AE008A */ lh $t6, 0x8a($sp) /* 075C80 80075080 87AF008E */ lh $t7, 0x8e($sp) @@ -59,19 +59,19 @@ glabel func_80075000 /* 075CB0 800750B0 10400007 */ beqz $v0, .L800750D0 /* 075CB4 800750B4 8FA40078 */ lw $a0, 0x78($sp) /* 075CB8 800750B8 8FA40078 */ lw $a0, 0x78($sp) -/* 075CBC 800750BC 0C01D6BB */ jal func_80075AEC +/* 075CBC 800750BC 0C01D6BB */ jal start_reading_controller_data /* 075CC0 800750C0 00000000 */ nop /* 075CC4 800750C4 100000BE */ b .L800753C0 /* 075CC8 800750C8 02001025 */ move $v0, $s0 /* 075CCC 800750CC 8FA40078 */ lw $a0, 0x78($sp) .L800750D0: /* 075CD0 800750D0 8FA5004C */ lw $a1, 0x4c($sp) -/* 075CD4 800750D4 0C01DA49 */ jal func_80076924 +/* 075CD4 800750D4 0C01DA49 */ jal get_file_size /* 075CD8 800750D8 27A60054 */ addiu $a2, $sp, 0x54 /* 075CDC 800750DC 10400006 */ beqz $v0, .L800750F8 /* 075CE0 800750E0 00408025 */ move $s0, $v0 /* 075CE4 800750E4 8FA40078 */ lw $a0, 0x78($sp) -/* 075CE8 800750E8 0C01D6BB */ jal func_80075AEC +/* 075CE8 800750E8 0C01D6BB */ jal start_reading_controller_data /* 075CEC 800750EC 00000000 */ nop /* 075CF0 800750F0 100000B3 */ b .L800753C0 /* 075CF4 800750F4 02001025 */ move $v0, $s0 @@ -87,7 +87,7 @@ glabel func_80075000 /* 075D18 80075118 0C01D984 */ jal read_data_from_controller_pak /* 075D1C 8007511C 00403025 */ move $a2, $v0 /* 075D20 80075120 8FA40078 */ lw $a0, 0x78($sp) -/* 075D24 80075124 0C01D6BB */ jal func_80075AEC +/* 075D24 80075124 0C01D6BB */ jal start_reading_controller_data /* 075D28 80075128 00408025 */ move $s0, $v0 /* 075D2C 8007512C 12000005 */ beqz $s0, .L80075144 /* 075D30 80075130 3C014748 */ lui $at, (0x47485353 >> 16) # lui $at, 0x4748 @@ -257,7 +257,7 @@ glabel func_80075000 /* 075F8C 8007538C 24E777A0 */ addiu $a3, %lo(D_800E77A0) # addiu $a3, $a3, 0x77a0 /* 075F90 80075390 24C67790 */ addiu $a2, %lo(D_800E7790) # addiu $a2, $a2, 0x7790 /* 075F94 80075394 AFAE0014 */ sw $t6, 0x14($sp) -/* 075F98 80075398 0C01D9B5 */ jal func_800766D4 +/* 075F98 80075398 0C01D9B5 */ jal write_controller_pak_file /* 075F9C 8007539C AFAD0010 */ sw $t5, 0x10($sp) /* 075FA0 800753A0 8FA40068 */ lw $a0, 0x68($sp) /* 075FA4 800753A4 0C01C450 */ jal free_from_memory_pool diff --git a/asm/non_matchings/controller_pak/func_800753D8.s b/asm/non_matchings/controller_pak/func_800753D8.s index 40737298..895d50a7 100644 --- a/asm/non_matchings/controller_pak/func_800753D8.s +++ b/asm/non_matchings/controller_pak/func_800753D8.s @@ -13,12 +13,12 @@ glabel func_800753D8 /* 075FD8 800753D8 27BDFFB0 */ addiu $sp, $sp, -0x50 /* 075FDC 800753DC AFBF001C */ sw $ra, 0x1c($sp) /* 075FE0 800753E0 AFA40050 */ sw $a0, 0x50($sp) -/* 075FE4 800753E4 0C01D637 */ jal func_800758DC +/* 075FE4 800753E4 0C01D637 */ jal get_si_device_status /* 075FE8 800753E8 AFA50054 */ sw $a1, 0x54($sp) /* 075FEC 800753EC 10400007 */ beqz $v0, .L8007540C /* 075FF0 800753F0 3C05800E */ lui $a1, %hi(D_800E77A4) # $a1, 0x800e /* 075FF4 800753F4 8FA40050 */ lw $a0, 0x50($sp) -/* 075FF8 800753F8 0C01D6BB */ jal func_80075AEC +/* 075FF8 800753F8 0C01D6BB */ jal start_reading_controller_data /* 075FFC 800753FC AFA20040 */ sw $v0, 0x40($sp) /* 076000 80075400 8FA20040 */ lw $v0, 0x40($sp) /* 076004 80075404 100000B0 */ b .L800756C8 @@ -28,18 +28,18 @@ glabel func_800753D8 /* 076010 80075410 3C06800E */ lui $a2, %hi(D_800E77B4) # $a2, 0x800e /* 076014 80075414 24C677B4 */ addiu $a2, %lo(D_800E77B4) # addiu $a2, $a2, 0x77b4 /* 076018 80075418 24A577A4 */ addiu $a1, %lo(D_800E77A4) # addiu $a1, $a1, 0x77a4 -/* 07601C 8007541C 0C01D93A */ jal func_800764E8 +/* 07601C 8007541C 0C01D93A */ jal get_file_number /* 076020 80075420 27A70034 */ addiu $a3, $sp, 0x34 /* 076024 80075424 144000A1 */ bnez $v0, .L800756AC /* 076028 80075428 00401825 */ move $v1, $v0 /* 07602C 8007542C 8FA40050 */ lw $a0, 0x50($sp) /* 076030 80075430 8FA50034 */ lw $a1, 0x34($sp) -/* 076034 80075434 0C01DA49 */ jal func_80076924 +/* 076034 80075434 0C01DA49 */ jal get_file_size /* 076038 80075438 27A60030 */ addiu $a2, $sp, 0x30 /* 07603C 8007543C 10400007 */ beqz $v0, .L8007545C /* 076040 80075440 240500FF */ li $a1, 255 /* 076044 80075444 8FA40050 */ lw $a0, 0x50($sp) -/* 076048 80075448 0C01D6BB */ jal func_80075AEC +/* 076048 80075448 0C01D6BB */ jal start_reading_controller_data /* 07604C 8007544C AFA20040 */ sw $v0, 0x40($sp) /* 076050 80075450 8FA20040 */ lw $v0, 0x40($sp) /* 076054 80075454 1000009C */ b .L800756C8 @@ -55,7 +55,7 @@ glabel func_800753D8 /* 076078 80075478 0C01D984 */ jal read_data_from_controller_pak /* 07607C 8007547C 00403025 */ move $a2, $v0 /* 076080 80075480 8FA40050 */ lw $a0, 0x50($sp) -/* 076084 80075484 0C01D6BB */ jal func_80075AEC +/* 076084 80075484 0C01D6BB */ jal start_reading_controller_data /* 076088 80075488 AFA20040 */ sw $v0, 0x40($sp) /* 07608C 8007548C 8FA30040 */ lw $v1, 0x40($sp) /* 076090 80075490 8FAE0048 */ lw $t6, 0x48($sp) @@ -184,7 +184,7 @@ glabel func_800753D8 /* 076264 80075664 24E777C8 */ addiu $a3, %lo(D_800E77C8) # addiu $a3, $a3, 0x77c8 /* 076268 80075668 24C677B8 */ addiu $a2, %lo(D_800E77B8) # addiu $a2, $a2, 0x77b8 /* 07626C 8007566C AFA90010 */ sw $t1, 0x10($sp) -/* 076270 80075670 0C01D9B5 */ jal func_800766D4 +/* 076270 80075670 0C01D9B5 */ jal write_controller_pak_file /* 076274 80075674 AFB80014 */ sw $t8, 0x14($sp) /* 076278 80075678 10000001 */ b .L80075680 /* 07627C 8007567C 00401825 */ move $v1, $v0 @@ -203,7 +203,7 @@ glabel func_800753D8 /* 0762A8 800756A8 00601025 */ move $v0, $v1 .L800756AC: /* 0762AC 800756AC 8FA40050 */ lw $a0, 0x50($sp) -/* 0762B0 800756B0 0C01D6BB */ jal func_80075AEC +/* 0762B0 800756B0 0C01D6BB */ jal start_reading_controller_data /* 0762B4 800756B4 AFA30040 */ sw $v1, 0x40($sp) /* 0762B8 800756B8 8FA30040 */ lw $v1, 0x40($sp) /* 0762BC 800756BC 00000000 */ nop diff --git a/asm/non_matchings/controller_pak/func_800756D4.s b/asm/non_matchings/controller_pak/func_800756D4.s index cf2090e6..f19b872e 100644 --- a/asm/non_matchings/controller_pak/func_800756D4.s +++ b/asm/non_matchings/controller_pak/func_800756D4.s @@ -20,12 +20,12 @@ glabel func_800756D4 /* 076300 80075700 AFB20020 */ sw $s2, 0x20($sp) /* 076304 80075704 AFB1001C */ sw $s1, 0x1c($sp) /* 076308 80075708 AFB00018 */ sw $s0, 0x18($sp) -/* 07630C 8007570C 0C01D637 */ jal func_800758DC +/* 07630C 8007570C 0C01D637 */ jal get_si_device_status /* 076310 80075710 AFA40070 */ sw $a0, 0x70($sp) /* 076314 80075714 10400007 */ beqz $v0, .L80075734 /* 076318 80075718 AFA20064 */ sw $v0, 0x64($sp) /* 07631C 8007571C 8FA40070 */ lw $a0, 0x70($sp) -/* 076320 80075720 0C01D6BB */ jal func_80075AEC +/* 076320 80075720 0C01D6BB */ jal start_reading_controller_data /* 076324 80075724 00000000 */ nop /* 076328 80075728 8FA20064 */ lw $v0, 0x64($sp) /* 07632C 8007572C 10000060 */ b .L800758B0 @@ -56,13 +56,13 @@ glabel func_800756D4 /* 076388 80075788 3C06800E */ lui $a2, %hi(D_800E77DC) # $a2, 0x800e /* 07638C 8007578C 24C677DC */ addiu $a2, %lo(D_800E77DC) # addiu $a2, $a2, 0x77dc /* 076390 80075790 24A577CC */ addiu $a1, %lo(D_800E77CC) # addiu $a1, $a1, 0x77cc -/* 076394 80075794 0C01D93A */ jal func_800764E8 +/* 076394 80075794 0C01D93A */ jal get_file_number /* 076398 80075798 27A7005C */ addiu $a3, $sp, 0x5c /* 07639C 8007579C 1440003E */ bnez $v0, .L80075898 /* 0763A0 800757A0 AFA20064 */ sw $v0, 0x64($sp) /* 0763A4 800757A4 8FA40070 */ lw $a0, 0x70($sp) /* 0763A8 800757A8 8FA5005C */ lw $a1, 0x5c($sp) -/* 0763AC 800757AC 0C01DA49 */ jal func_80076924 +/* 0763AC 800757AC 0C01DA49 */ jal get_file_size /* 0763B0 800757B0 27A60058 */ addiu $a2, $sp, 0x58 /* 0763B4 800757B4 14400038 */ bnez $v0, .L80075898 /* 0763B8 800757B8 AFA20064 */ sw $v0, 0x64($sp) @@ -88,7 +88,7 @@ glabel func_800756D4 /* 076404 80075804 126E001F */ beq $s3, $t6, .L80075884 /* 076408 80075808 00000000 */ nop /* 07640C 8007580C 862F0002 */ lh $t7, 2($s1) -/* 076410 80075810 0C01D293 */ jal func_80074A4C +/* 076410 80075810 0C01D293 */ jal calculate_ghost_header_checksum /* 076414 80075814 01F22021 */ addu $a0, $t7, $s2 /* 076418 80075818 86380002 */ lh $t8, 2($s1) /* 07641C 8007581C 00000000 */ nop @@ -127,7 +127,7 @@ glabel func_800756D4 /* 076494 80075894 02402025 */ move $a0, $s2 .L80075898: /* 076498 80075898 8FA40070 */ lw $a0, 0x70($sp) -/* 07649C 8007589C 0C01D6BB */ jal func_80075AEC +/* 07649C 8007589C 0C01D6BB */ jal start_reading_controller_data /* 0764A0 800758A0 00000000 */ nop /* 0764A4 800758A4 8FA20064 */ lw $v0, 0x64($sp) /* 0764A8 800758A8 00000000 */ nop diff --git a/asm/non_matchings/controller_pak/func_800758DC.s b/asm/non_matchings/controller_pak/func_800758DC.s deleted file mode 100644 index 5b31d09b..00000000 --- a/asm/non_matchings/controller_pak/func_800758DC.s +++ /dev/null @@ -1,151 +0,0 @@ -glabel func_800758DC -/* 0764DC 800758DC 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0764E0 800758E0 AFB40024 */ sw $s4, 0x24($sp) -/* 0764E4 800758E4 3C148012 */ lui $s4, %hi(D_80124010) # $s4, 0x8012 -/* 0764E8 800758E8 26944010 */ addiu $s4, %lo(D_80124010) # addiu $s4, $s4, 0x4010 -/* 0764EC 800758EC AFB00014 */ sw $s0, 0x14($sp) -/* 0764F0 800758F0 8E900000 */ lw $s0, ($s4) -/* 0764F4 800758F4 AFBF002C */ sw $ra, 0x2c($sp) -/* 0764F8 800758F8 AFB50028 */ sw $s5, 0x28($sp) -/* 0764FC 800758FC AFB30020 */ sw $s3, 0x20($sp) -/* 076500 80075900 AFB2001C */ sw $s2, 0x1c($sp) -/* 076504 80075904 AFB10018 */ sw $s1, 0x18($sp) -/* 076508 80075908 8E0E0008 */ lw $t6, 8($s0) -/* 07650C 8007590C 0080A825 */ move $s5, $a0 -/* 076510 80075910 15C0000F */ bnez $t6, .L80075950 -/* 076514 80075914 02002025 */ move $a0, $s0 -/* 076518 80075918 00157880 */ sll $t7, $s5, 2 -/* 07651C 8007591C 01F57823 */ subu $t7, $t7, $s5 -/* 076520 80075920 000F7880 */ sll $t7, $t7, 2 -/* 076524 80075924 01F57821 */ addu $t7, $t7, $s5 -/* 076528 80075928 3C188012 */ lui $t8, %hi(pfs) # $t8, 0x8012 -/* 07652C 8007592C 27184018 */ addiu $t8, %lo(pfs) # addiu $t8, $t8, 0x4018 -/* 076530 80075930 000F78C0 */ sll $t7, $t7, 3 -/* 076534 80075934 01F82821 */ addu $a1, $t7, $t8 -/* 076538 80075938 0C01C837 */ jal osMotorInit -/* 07653C 8007593C 02A03025 */ move $a2, $s5 -/* 076540 80075940 14400004 */ bnez $v0, .L80075954 -/* 076544 80075944 0015C880 */ sll $t9, $s5, 2 -/* 076548 80075948 1000005F */ b .L80075AC8 -/* 07654C 8007594C 24020007 */ li $v0, 7 -.L80075950: -/* 076550 80075950 0015C880 */ sll $t9, $s5, 2 -.L80075954: -/* 076554 80075954 8E900000 */ lw $s0, ($s4) -/* 076558 80075958 0335C823 */ subu $t9, $t9, $s5 -/* 07655C 8007595C 0019C880 */ sll $t9, $t9, 2 -/* 076560 80075960 8E090008 */ lw $t1, 8($s0) -/* 076564 80075964 0335C821 */ addu $t9, $t9, $s5 -/* 076568 80075968 3C088012 */ lui $t0, %hi(pfs) # $t0, 0x8012 -/* 07656C 8007596C 25084018 */ addiu $t0, %lo(pfs) # addiu $t0, $t0, 0x4018 -/* 076570 80075970 0019C8C0 */ sll $t9, $t9, 3 -/* 076574 80075974 00008825 */ move $s1, $zero -/* 076578 80075978 1120000E */ beqz $t1, .L800759B4 -/* 07657C 8007597C 03289821 */ addu $s3, $t9, $t0 -/* 076580 80075980 2412000A */ li $s2, 10 -/* 076584 80075984 02002025 */ move $a0, $s0 -.L80075988: -/* 076588 80075988 27A50044 */ addiu $a1, $sp, 0x44 -/* 07658C 8007598C 0C0322EC */ jal osRecvMesg -/* 076590 80075990 00003025 */ move $a2, $zero -/* 076594 80075994 8E900000 */ lw $s0, ($s4) -/* 076598 80075998 26310001 */ addiu $s1, $s1, 1 -/* 07659C 8007599C 8E0A0008 */ lw $t2, 8($s0) -/* 0765A0 800759A0 00000000 */ nop -/* 0765A4 800759A4 11400003 */ beqz $t2, .L800759B4 -/* 0765A8 800759A8 00000000 */ nop -/* 0765AC 800759AC 1632FFF6 */ bne $s1, $s2, .L80075988 -/* 0765B0 800759B0 02002025 */ move $a0, $s0 -.L800759B4: -/* 0765B4 800759B4 2412000A */ li $s2, 10 -/* 0765B8 800759B8 00008825 */ move $s1, $zero -/* 0765BC 800759BC 24100005 */ li $s0, 5 -/* 0765C0 800759C0 02602025 */ move $a0, $s3 -.L800759C4: -/* 0765C4 800759C4 0C033CF8 */ jal osPfsFreeBlocks -/* 0765C8 800759C8 27A5003C */ addiu $a1, $sp, 0x3c -/* 0765CC 800759CC 14500006 */ bne $v0, $s0, .L800759E8 -/* 0765D0 800759D0 00401825 */ move $v1, $v0 -/* 0765D4 800759D4 8E840000 */ lw $a0, ($s4) -/* 0765D8 800759D8 02602825 */ move $a1, $s3 -/* 0765DC 800759DC 0C033B48 */ jal osPfsInit -/* 0765E0 800759E0 02A03025 */ move $a2, $s5 -/* 0765E4 800759E4 00401825 */ move $v1, $v0 -.L800759E8: -/* 0765E8 800759E8 1452000A */ bne $v0, $s2, .L80075A14 -/* 0765EC 800759EC 02602825 */ move $a1, $s3 -/* 0765F0 800759F0 8E840000 */ lw $a0, ($s4) -/* 0765F4 800759F4 02A03025 */ move $a2, $s5 -/* 0765F8 800759F8 0C01C837 */ jal osMotorInit -/* 0765FC 800759FC AFA30040 */ sw $v1, 0x40($sp) -/* 076600 80075A00 8FA30040 */ lw $v1, 0x40($sp) -/* 076604 80075A04 14400004 */ bnez $v0, .L80075A18 -/* 076608 80075A08 24010002 */ li $at, 2 -/* 07660C 80075A0C 1000002E */ b .L80075AC8 -/* 076610 80075A10 24020007 */ li $v0, 7 -.L80075A14: -/* 076614 80075A14 24010002 */ li $at, 2 -.L80075A18: -/* 076618 80075A18 14610011 */ bne $v1, $at, .L80075A60 -/* 07661C 80075A1C 24010001 */ li $at, 1 -/* 076620 80075A20 8E840000 */ lw $a0, ($s4) -/* 076624 80075A24 02602825 */ move $a1, $s3 -/* 076628 80075A28 0C033B48 */ jal osPfsInit -/* 07662C 80075A2C 02A03025 */ move $a2, $s5 -/* 076630 80075A30 14520008 */ bne $v0, $s2, .L80075A54 -/* 076634 80075A34 02602825 */ move $a1, $s3 -/* 076638 80075A38 8E840000 */ lw $a0, ($s4) -/* 07663C 80075A3C 0C01C837 */ jal osMotorInit -/* 076640 80075A40 02A03025 */ move $a2, $s5 -/* 076644 80075A44 14400003 */ bnez $v0, .L80075A54 -/* 076648 80075A48 00000000 */ nop -/* 07664C 80075A4C 1000001E */ b .L80075AC8 -/* 076650 80075A50 24020007 */ li $v0, 7 -.L80075A54: -/* 076654 80075A54 1000001C */ b .L80075AC8 -/* 076658 80075A58 24020005 */ li $v0, 5 -/* 07665C 80075A5C 24010001 */ li $at, 1 -.L80075A60: -/* 076660 80075A60 10610003 */ beq $v1, $at, .L80075A70 -/* 076664 80075A64 2401000B */ li $at, 11 -/* 076668 80075A68 14610003 */ bne $v1, $at, .L80075A78 -/* 07666C 80075A6C 26310001 */ addiu $s1, $s1, 1 -.L80075A70: -/* 076670 80075A70 10000015 */ b .L80075AC8 -/* 076674 80075A74 24020001 */ li $v0, 1 -.L80075A78: -/* 076678 80075A78 24010006 */ li $at, 6 -/* 07667C 80075A7C 14610003 */ bne $v1, $at, .L80075A8C -/* 076680 80075A80 00000000 */ nop -/* 076684 80075A84 10000010 */ b .L80075AC8 -/* 076688 80075A88 24020009 */ li $v0, 9 -.L80075A8C: -/* 07668C 80075A8C 14720003 */ bne $v1, $s2, .L80075A9C -/* 076690 80075A90 24010003 */ li $at, 3 -/* 076694 80075A94 1000000C */ b .L80075AC8 -/* 076698 80075A98 24020003 */ li $v0, 3 -.L80075A9C: -/* 07669C 80075A9C 14610003 */ bne $v1, $at, .L80075AAC -/* 0766A0 80075AA0 00000000 */ nop -/* 0766A4 80075AA4 10000008 */ b .L80075AC8 -/* 0766A8 80075AA8 24020002 */ li $v0, 2 -.L80075AAC: -/* 0766AC 80075AAC 14600003 */ bnez $v1, .L80075ABC -/* 0766B0 80075AB0 00000000 */ nop -/* 0766B4 80075AB4 10000004 */ b .L80075AC8 -/* 0766B8 80075AB8 00001025 */ move $v0, $zero -.L80075ABC: -/* 0766BC 80075ABC 1630FFC1 */ bne $s1, $s0, .L800759C4 -/* 0766C0 80075AC0 02602025 */ move $a0, $s3 -/* 0766C4 80075AC4 24020001 */ li $v0, 1 -.L80075AC8: -/* 0766C8 80075AC8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0766CC 80075ACC 8FB00014 */ lw $s0, 0x14($sp) -/* 0766D0 80075AD0 8FB10018 */ lw $s1, 0x18($sp) -/* 0766D4 80075AD4 8FB2001C */ lw $s2, 0x1c($sp) -/* 0766D8 80075AD8 8FB30020 */ lw $s3, 0x20($sp) -/* 0766DC 80075ADC 8FB40024 */ lw $s4, 0x24($sp) -/* 0766E0 80075AE0 8FB50028 */ lw $s5, 0x28($sp) -/* 0766E4 80075AE4 03E00008 */ jr $ra -/* 0766E8 80075AE8 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/controller_pak/func_80075E60.s b/asm/non_matchings/controller_pak/func_80075E60.s deleted file mode 100644 index 738319eb..00000000 --- a/asm/non_matchings/controller_pak/func_80075E60.s +++ /dev/null @@ -1,211 +0,0 @@ -glabel func_80075E60 -/* 076A60 80075E60 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 076A64 80075E64 AFBF0034 */ sw $ra, 0x34($sp) -/* 076A68 80075E68 AFB70030 */ sw $s7, 0x30($sp) -/* 076A6C 80075E6C AFB50028 */ sw $s5, 0x28($sp) -/* 076A70 80075E70 AFB40024 */ sw $s4, 0x24($sp) -/* 076A74 80075E74 00A0A025 */ move $s4, $a1 -/* 076A78 80075E78 00C0A825 */ move $s5, $a2 -/* 076A7C 80075E7C 0080B825 */ move $s7, $a0 -/* 076A80 80075E80 AFB6002C */ sw $s6, 0x2c($sp) -/* 076A84 80075E84 AFB30020 */ sw $s3, 0x20($sp) -/* 076A88 80075E88 AFB2001C */ sw $s2, 0x1c($sp) -/* 076A8C 80075E8C AFB10018 */ sw $s1, 0x18($sp) -/* 076A90 80075E90 AFB00014 */ sw $s0, 0x14($sp) -/* 076A94 80075E94 0C01D637 */ jal func_800758DC -/* 076A98 80075E98 AFA7009C */ sw $a3, 0x9c($sp) -/* 076A9C 80075E9C 10400006 */ beqz $v0, .L80075EB8 -/* 076AA0 80075EA0 00408025 */ move $s0, $v0 -/* 076AA4 80075EA4 0C01D6BB */ jal func_80075AEC -/* 076AA8 80075EA8 02E02025 */ move $a0, $s7 -/* 076AAC 80075EAC 00177780 */ sll $t6, $s7, 0x1e -/* 076AB0 80075EB0 100000A1 */ b .L80076138 -/* 076AB4 80075EB4 01D01025 */ or $v0, $t6, $s0 -.L80075EB8: -/* 076AB8 80075EB8 00177880 */ sll $t7, $s7, 2 -/* 076ABC 80075EBC 01F77823 */ subu $t7, $t7, $s7 -/* 076AC0 80075EC0 000F7880 */ sll $t7, $t7, 2 -/* 076AC4 80075EC4 01F77821 */ addu $t7, $t7, $s7 -/* 076AC8 80075EC8 3C188012 */ lui $t8, %hi(pfs) # $t8, 0x8012 -/* 076ACC 80075ECC 27184018 */ addiu $t8, %lo(pfs) # addiu $t8, $t8, 0x4018 -/* 076AD0 80075ED0 000F78C0 */ sll $t7, $t7, 3 -/* 076AD4 80075ED4 01F82021 */ addu $a0, $t7, $t8 -/* 076AD8 80075ED8 AFA40054 */ sw $a0, 0x54($sp) -/* 076ADC 80075EDC 27A50068 */ addiu $a1, $sp, 0x68 -/* 076AE0 80075EE0 0C0340E4 */ jal osPfsNumFiles -/* 076AE4 80075EE4 27A60064 */ addiu $a2, $sp, 0x64 -/* 076AE8 80075EE8 10400007 */ beqz $v0, .L80075F08 -/* 076AEC 80075EEC 00000000 */ nop -/* 076AF0 80075EF0 0C01D6BB */ jal func_80075AEC -/* 076AF4 80075EF4 02E02025 */ move $a0, $s7 -/* 076AF8 80075EF8 00171780 */ sll $v0, $s7, 0x1e -/* 076AFC 80075EFC 34590009 */ ori $t9, $v0, 9 -/* 076B00 80075F00 1000008D */ b .L80076138 -/* 076B04 80075F04 03201025 */ move $v0, $t9 -.L80075F08: -/* 076B08 80075F08 0C027AC8 */ jal get_language -/* 076B0C 80075F0C 00000000 */ nop -/* 076B10 80075F10 24010003 */ li $at, 3 -/* 076B14 80075F14 8FA90068 */ lw $t1, 0x68($sp) -/* 076B18 80075F18 14410004 */ bne $v0, $at, .L80075F2C -/* 076B1C 80075F1C 3C10800E */ lui $s0, %hi(D_800DE440) # $s0, 0x800e -/* 076B20 80075F20 3C164E44 */ lui $s6, (0x4E44594A >> 16) # lui $s6, 0x4e44 -/* 076B24 80075F24 10000009 */ b .L80075F4C -/* 076B28 80075F28 36D6594A */ ori $s6, (0x4E44594A & 0xFFFF) # ori $s6, $s6, 0x594a -.L80075F2C: -/* 076B2C 80075F2C 3C088000 */ lui $t0, %hi(osTvType) # $t0, 0x8000 -/* 076B30 80075F30 8D080300 */ lw $t0, %lo(osTvType)($t0) -/* 076B34 80075F34 3C164E44 */ lui $s6, (0x4E445945 >> 16) # lui $s6, 0x4e44 -/* 076B38 80075F38 15000004 */ bnez $t0, .L80075F4C -/* 076B3C 80075F3C 36D65945 */ ori $s6, (0x4E445945 & 0xFFFF) # ori $s6, $s6, 0x5945 -/* 076B40 80075F40 3C164E44 */ lui $s6, (0x4E445950 >> 16) # lui $s6, 0x4e44 -/* 076B44 80075F44 10000001 */ b .L80075F4C -/* 076B48 80075F48 36D65950 */ ori $s6, (0x4E445950 & 0xFFFF) # ori $s6, $s6, 0x5950 -.L80075F4C: -/* 076B4C 80075F4C 0289082A */ slt $at, $s4, $t1 -/* 076B50 80075F50 10200002 */ beqz $at, .L80075F5C -/* 076B54 80075F54 2610E440 */ addiu $s0, %lo(D_800DE440) # addiu $s0, $s0, -0x1bc0 -/* 076B58 80075F58 AFB40068 */ sw $s4, 0x68($sp) -.L80075F5C: -/* 076B5C 80075F5C 8E040000 */ lw $a0, ($s0) -/* 076B60 80075F60 00000000 */ nop -/* 076B64 80075F64 10800004 */ beqz $a0, .L80075F78 -/* 076B68 80075F68 8FA60068 */ lw $a2, 0x68($sp) -/* 076B6C 80075F6C 0C01C450 */ jal free_from_memory_pool -/* 076B70 80075F70 00000000 */ nop -/* 076B74 80075F74 8FA60068 */ lw $a2, 0x68($sp) -.L80075F78: -/* 076B78 80075F78 240500FF */ li $a1, 255 -/* 076B7C 80075F7C 00065080 */ sll $t2, $a2, 2 -/* 076B80 80075F80 01465023 */ subu $t2, $t2, $a2 -/* 076B84 80075F84 000A20C0 */ sll $a0, $t2, 3 -/* 076B88 80075F88 0C01C327 */ jal allocate_from_main_pool_safe -/* 076B8C 80075F8C AFA40064 */ sw $a0, 0x64($sp) -/* 076B90 80075F90 8FA50064 */ lw $a1, 0x64($sp) -/* 076B94 80075F94 AE020000 */ sw $v0, ($s0) -/* 076B98 80075F98 0C034138 */ jal bzero -/* 076B9C 80075F9C 00402025 */ move $a0, $v0 -/* 076BA0 80075FA0 8FAB0068 */ lw $t3, 0x68($sp) -/* 076BA4 80075FA4 8E030000 */ lw $v1, ($s0) -/* 076BA8 80075FA8 19600014 */ blez $t3, .L80075FFC -/* 076BAC 80075FAC 00009825 */ move $s3, $zero -/* 076BB0 80075FB0 8FB000A0 */ lw $s0, 0xa0($sp) -/* 076BB4 80075FB4 8FB1009C */ lw $s1, 0x9c($sp) -/* 076BB8 80075FB8 8FB200A4 */ lw $s2, 0xa4($sp) -/* 076BBC 80075FBC 02A01025 */ move $v0, $s5 -/* 076BC0 80075FC0 240400FF */ li $a0, 255 -.L80075FC4: -/* 076BC4 80075FC4 AC430000 */ sw $v1, ($v0) -/* 076BC8 80075FC8 24630012 */ addiu $v1, $v1, 0x12 -/* 076BCC 80075FCC AE230000 */ sw $v1, ($s1) -/* 076BD0 80075FD0 AE000000 */ sw $zero, ($s0) -/* 076BD4 80075FD4 A2440000 */ sb $a0, ($s2) -/* 076BD8 80075FD8 8FAC0068 */ lw $t4, 0x68($sp) -/* 076BDC 80075FDC 26730001 */ addiu $s3, $s3, 1 -/* 076BE0 80075FE0 026C082A */ slt $at, $s3, $t4 -/* 076BE4 80075FE4 24420004 */ addiu $v0, $v0, 4 -/* 076BE8 80075FE8 26310004 */ addiu $s1, $s1, 4 -/* 076BEC 80075FEC 26100004 */ addiu $s0, $s0, 4 -/* 076BF0 80075FF0 26520001 */ addiu $s2, $s2, 1 -/* 076BF4 80075FF4 1420FFF3 */ bnez $at, .L80075FC4 -/* 076BF8 80075FF8 24630006 */ addiu $v1, $v1, 6 -.L80075FFC: -/* 076BFC 80075FFC 8FA700A0 */ lw $a3, 0xa0($sp) -/* 076C00 80076000 0274082A */ slt $at, $s3, $s4 -/* 076C04 80076004 10200014 */ beqz $at, .L80076058 -/* 076C08 80076008 240400FF */ li $a0, 255 -/* 076C0C 8007600C 00131880 */ sll $v1, $s3, 2 -/* 076C10 80076010 8FAD009C */ lw $t5, 0x9c($sp) -/* 076C14 80076014 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 076C18 80076018 00147880 */ sll $t7, $s4, 2 -/* 076C1C 8007601C 01E72821 */ addu $a1, $t7, $a3 -/* 076C20 80076020 02A31021 */ addu $v0, $s5, $v1 -/* 076C24 80076024 00E38021 */ addu $s0, $a3, $v1 -/* 076C28 80076028 01A38821 */ addu $s1, $t5, $v1 -/* 076C2C 8007602C 01D39021 */ addu $s2, $t6, $s3 -.L80076030: -/* 076C30 80076030 AE200000 */ sw $zero, ($s1) -/* 076C34 80076034 AC400000 */ sw $zero, ($v0) -/* 076C38 80076038 26100004 */ addiu $s0, $s0, 4 -/* 076C3C 8007603C AE00FFFC */ sw $zero, -4($s0) -/* 076C40 80076040 0205082B */ sltu $at, $s0, $a1 -/* 076C44 80076044 A2440000 */ sb $a0, ($s2) -/* 076C48 80076048 24420004 */ addiu $v0, $v0, 4 -/* 076C4C 8007604C 26310004 */ addiu $s1, $s1, 4 -/* 076C50 80076050 1420FFF7 */ bnez $at, .L80076030 -/* 076C54 80076054 26520001 */ addiu $s2, $s2, 1 -.L80076058: -/* 076C58 80076058 8FB80068 */ lw $t8, 0x68($sp) -/* 076C5C 8007605C 00009825 */ move $s3, $zero -/* 076C60 80076060 1B000032 */ blez $t8, .L8007612C -/* 076C64 80076064 00000000 */ nop -/* 076C68 80076068 8FA40054 */ lw $a0, 0x54($sp) -.L8007606C: -/* 076C6C 8007606C 02602825 */ move $a1, $s3 -/* 076C70 80076070 0C034160 */ jal osPfsFileState -/* 076C74 80076074 27A60070 */ addiu $a2, $sp, 0x70 -/* 076C78 80076078 24010005 */ li $at, 5 -/* 076C7C 8007607C 14410004 */ bne $v0, $at, .L80076090 -/* 076C80 80076080 0013C880 */ sll $t9, $s3, 2 -/* 076C84 80076084 02B94021 */ addu $t0, $s5, $t9 -/* 076C88 80076088 10000023 */ b .L80076118 -/* 076C8C 8007608C AD000000 */ sw $zero, ($t0) -.L80076090: -/* 076C90 80076090 10400005 */ beqz $v0, .L800760A8 -/* 076C94 80076094 27A4007E */ addiu $a0, $sp, 0x7e -/* 076C98 80076098 0C01D6BB */ jal func_80075AEC -/* 076C9C 8007609C 02E02025 */ move $a0, $s7 -/* 076CA0 800760A0 10000025 */ b .L80076138 -/* 076CA4 800760A4 24020009 */ li $v0, 9 -.L800760A8: -/* 076CA8 800760A8 00131880 */ sll $v1, $s3, 2 -/* 076CAC 800760AC 8FAA009C */ lw $t2, 0x9c($sp) -/* 076CB0 800760B0 8FAB00A0 */ lw $t3, 0xa0($sp) -/* 076CB4 800760B4 8FAC00A4 */ lw $t4, 0xa4($sp) -/* 076CB8 800760B8 02A34821 */ addu $t1, $s5, $v1 -/* 076CBC 800760BC 8D250000 */ lw $a1, ($t1) -/* 076CC0 800760C0 24060010 */ li $a2, 16 -/* 076CC4 800760C4 01438821 */ addu $s1, $t2, $v1 -/* 076CC8 800760C8 01638021 */ addu $s0, $t3, $v1 -/* 076CCC 800760CC 0C01DA63 */ jal func_8007698C -/* 076CD0 800760D0 01939021 */ addu $s2, $t4, $s3 -/* 076CD4 800760D4 8E250000 */ lw $a1, ($s1) -/* 076CD8 800760D8 27A4007A */ addiu $a0, $sp, 0x7a -/* 076CDC 800760DC 0C01DA63 */ jal func_8007698C -/* 076CE0 800760E0 24060004 */ li $a2, 4 -/* 076CE4 800760E4 8FAD0070 */ lw $t5, 0x70($sp) -/* 076CE8 800760E8 240E0006 */ li $t6, 6 -/* 076CEC 800760EC AE0D0000 */ sw $t5, ($s0) -/* 076CF0 800760F0 A24E0000 */ sb $t6, ($s2) -/* 076CF4 800760F4 8FAF0074 */ lw $t7, 0x74($sp) -/* 076CF8 800760F8 97B80078 */ lhu $t8, 0x78($sp) -/* 076CFC 800760FC 15F60006 */ bne $t7, $s6, .L80076118 -/* 076D00 80076100 24013459 */ li $at, 13401 -/* 076D04 80076104 17010004 */ bne $t8, $at, .L80076118 -/* 076D08 80076108 02E02025 */ move $a0, $s7 -/* 076D0C 8007610C 0C01DABD */ jal func_80076AF4 -/* 076D10 80076110 02602825 */ move $a1, $s3 -/* 076D14 80076114 A2420000 */ sb $v0, ($s2) -.L80076118: -/* 076D18 80076118 8FB90068 */ lw $t9, 0x68($sp) -/* 076D1C 8007611C 26730001 */ addiu $s3, $s3, 1 -/* 076D20 80076120 0279082A */ slt $at, $s3, $t9 -/* 076D24 80076124 1420FFD1 */ bnez $at, .L8007606C -/* 076D28 80076128 8FA40054 */ lw $a0, 0x54($sp) -.L8007612C: -/* 076D2C 8007612C 0C01D6BB */ jal func_80075AEC -/* 076D30 80076130 02E02025 */ move $a0, $s7 -/* 076D34 80076134 00001025 */ move $v0, $zero -.L80076138: -/* 076D38 80076138 8FBF0034 */ lw $ra, 0x34($sp) -/* 076D3C 8007613C 8FB00014 */ lw $s0, 0x14($sp) -/* 076D40 80076140 8FB10018 */ lw $s1, 0x18($sp) -/* 076D44 80076144 8FB2001C */ lw $s2, 0x1c($sp) -/* 076D48 80076148 8FB30020 */ lw $s3, 0x20($sp) -/* 076D4C 8007614C 8FB40024 */ lw $s4, 0x24($sp) -/* 076D50 80076150 8FB50028 */ lw $s5, 0x28($sp) -/* 076D54 80076154 8FB6002C */ lw $s6, 0x2c($sp) -/* 076D58 80076158 8FB70030 */ lw $s7, 0x30($sp) -/* 076D5C 8007615C 03E00008 */ jr $ra -/* 076D60 80076160 27BD0090 */ addiu $sp, $sp, 0x90 - diff --git a/asm/non_matchings/controller_pak/func_80076388.s b/asm/non_matchings/controller_pak/func_80076388.s deleted file mode 100644 index e83d3fa0..00000000 --- a/asm/non_matchings/controller_pak/func_80076388.s +++ /dev/null @@ -1,95 +0,0 @@ -glabel func_80076388 -/* 076F88 80076388 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 076F8C 8007638C AFBF0024 */ sw $ra, 0x24($sp) -/* 076F90 80076390 AFB00020 */ sw $s0, 0x20($sp) -/* 076F94 80076394 00808025 */ move $s0, $a0 -/* 076F98 80076398 AFA50074 */ sw $a1, 0x74($sp) -/* 076F9C 8007639C 0C01D637 */ jal func_800758DC -/* 076FA0 800763A0 AFA60078 */ sw $a2, 0x78($sp) -/* 076FA4 800763A4 10400008 */ beqz $v0, .L800763C8 -/* 076FA8 800763A8 00107880 */ sll $t7, $s0, 2 -/* 076FAC 800763AC 02002025 */ move $a0, $s0 -/* 076FB0 800763B0 0C01D6BB */ jal func_80075AEC -/* 076FB4 800763B4 AFA20030 */ sw $v0, 0x30($sp) -/* 076FB8 800763B8 8FA30030 */ lw $v1, 0x30($sp) -/* 076FBC 800763BC 00107780 */ sll $t6, $s0, 0x1e -/* 076FC0 800763C0 10000045 */ b .L800764D8 -/* 076FC4 800763C4 01C31025 */ or $v0, $t6, $v1 -.L800763C8: -/* 076FC8 800763C8 01F07823 */ subu $t7, $t7, $s0 -/* 076FCC 800763CC 000F7880 */ sll $t7, $t7, 2 -/* 076FD0 800763D0 01F07821 */ addu $t7, $t7, $s0 -/* 076FD4 800763D4 3C188012 */ lui $t8, %hi(pfs) # $t8, 0x8012 -/* 076FD8 800763D8 27184018 */ addiu $t8, %lo(pfs) # addiu $t8, $t8, 0x4018 -/* 076FDC 800763DC 000F78C0 */ sll $t7, $t7, 3 -/* 076FE0 800763E0 8FA50074 */ lw $a1, 0x74($sp) -/* 076FE4 800763E4 01F82021 */ addu $a0, $t7, $t8 -/* 076FE8 800763E8 0C034160 */ jal osPfsFileState -/* 076FEC 800763EC 27A60034 */ addiu $a2, $sp, 0x34 -/* 076FF0 800763F0 10400008 */ beqz $v0, .L80076414 -/* 076FF4 800763F4 8FA40034 */ lw $a0, 0x34($sp) -/* 076FF8 800763F8 0C01D6BB */ jal func_80075AEC -/* 076FFC 800763FC 02002025 */ move $a0, $s0 -/* 077000 80076400 00101780 */ sll $v0, $s0, 0x1e -/* 077004 80076404 34590009 */ ori $t9, $v0, 9 -/* 077008 80076408 10000033 */ b .L800764D8 -/* 07700C 8007640C 03201025 */ move $v0, $t9 -/* 077010 80076410 8FA40034 */ lw $a0, 0x34($sp) -.L80076414: -/* 077014 80076414 0C01C327 */ jal allocate_from_main_pool_safe -/* 077018 80076418 240500FF */ li $a1, 255 -/* 07701C 8007641C 8FA50074 */ lw $a1, 0x74($sp) -/* 077020 80076420 8FA70034 */ lw $a3, 0x34($sp) -/* 077024 80076424 AFA2002C */ sw $v0, 0x2c($sp) -/* 077028 80076428 02002025 */ move $a0, $s0 -/* 07702C 8007642C 0C01D984 */ jal read_data_from_controller_pak -/* 077030 80076430 00403025 */ move $a2, $v0 -/* 077034 80076434 02002025 */ move $a0, $s0 -/* 077038 80076438 0C01D6BB */ jal func_80075AEC -/* 07703C 8007643C AFA20030 */ sw $v0, 0x30($sp) -/* 077040 80076440 8FA30030 */ lw $v1, 0x30($sp) -/* 077044 80076444 27A40042 */ addiu $a0, $sp, 0x42 -/* 077048 80076448 10600008 */ beqz $v1, .L8007646C -/* 07704C 8007644C 24060010 */ li $a2, 16 -/* 077050 80076450 8FA4002C */ lw $a0, 0x2c($sp) -/* 077054 80076454 0C01C450 */ jal free_from_memory_pool -/* 077058 80076458 AFA30030 */ sw $v1, 0x30($sp) -/* 07705C 8007645C 8FA30030 */ lw $v1, 0x30($sp) -/* 077060 80076460 00104780 */ sll $t0, $s0, 0x1e -/* 077064 80076464 1000001C */ b .L800764D8 -/* 077068 80076468 01031025 */ or $v0, $t0, $v1 -.L8007646C: -/* 07706C 8007646C 27B0005C */ addiu $s0, $sp, 0x5c -/* 077070 80076470 0C01DA63 */ jal func_8007698C -/* 077074 80076474 02002825 */ move $a1, $s0 -/* 077078 80076478 27A4003E */ addiu $a0, $sp, 0x3e -/* 07707C 8007647C 27A50054 */ addiu $a1, $sp, 0x54 -/* 077080 80076480 0C01DA63 */ jal func_8007698C -/* 077084 80076484 24060004 */ li $a2, 4 -/* 077088 80076488 8FA9002C */ lw $t1, 0x2c($sp) -/* 07708C 8007648C 8FAA0034 */ lw $t2, 0x34($sp) -/* 077090 80076490 8FA40078 */ lw $a0, 0x78($sp) -/* 077094 80076494 2405FFFF */ li $a1, -1 -/* 077098 80076498 02003025 */ move $a2, $s0 -/* 07709C 8007649C 27A70054 */ addiu $a3, $sp, 0x54 -/* 0770A0 800764A0 AFA90010 */ sw $t1, 0x10($sp) -/* 0770A4 800764A4 0C01D9B5 */ jal func_800766D4 -/* 0770A8 800764A8 AFAA0014 */ sw $t2, 0x14($sp) -/* 0770AC 800764AC 10400005 */ beqz $v0, .L800764C4 -/* 0770B0 800764B0 00401825 */ move $v1, $v0 -/* 0770B4 800764B4 8FAB0078 */ lw $t3, 0x78($sp) -/* 0770B8 800764B8 00000000 */ nop -/* 0770BC 800764BC 000B6780 */ sll $t4, $t3, 0x1e -/* 0770C0 800764C0 004C1825 */ or $v1, $v0, $t4 -.L800764C4: -/* 0770C4 800764C4 8FA4002C */ lw $a0, 0x2c($sp) -/* 0770C8 800764C8 0C01C450 */ jal free_from_memory_pool -/* 0770CC 800764CC AFA30030 */ sw $v1, 0x30($sp) -/* 0770D0 800764D0 8FA20030 */ lw $v0, 0x30($sp) -/* 0770D4 800764D4 00000000 */ nop -.L800764D8: -/* 0770D8 800764D8 8FBF0024 */ lw $ra, 0x24($sp) -/* 0770DC 800764DC 8FB00020 */ lw $s0, 0x20($sp) -/* 0770E0 800764E0 03E00008 */ jr $ra -/* 0770E4 800764E4 27BD0070 */ addiu $sp, $sp, 0x70 - diff --git a/asm/non_matchings/controller_pak/func_800764E8.s b/asm/non_matchings/controller_pak/func_800764E8.s deleted file mode 100644 index 73a5d361..00000000 --- a/asm/non_matchings/controller_pak/func_800764E8.s +++ /dev/null @@ -1,84 +0,0 @@ -glabel func_800764E8 -/* 0770E8 800764E8 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0770EC 800764EC AFA40048 */ sw $a0, 0x48($sp) -/* 0770F0 800764F0 AFBF001C */ sw $ra, 0x1c($sp) -/* 0770F4 800764F4 AFA5004C */ sw $a1, 0x4c($sp) -/* 0770F8 800764F8 AFA60050 */ sw $a2, 0x50($sp) -/* 0770FC 800764FC 00A02025 */ move $a0, $a1 -/* 077100 80076500 AFA70054 */ sw $a3, 0x54($sp) -/* 077104 80076504 27A50034 */ addiu $a1, $sp, 0x34 -/* 077108 80076508 0C01DA8E */ jal func_80076A38 -/* 07710C 8007650C 24060010 */ li $a2, 16 -/* 077110 80076510 8FA40050 */ lw $a0, 0x50($sp) -/* 077114 80076514 27A5002C */ addiu $a1, $sp, 0x2c -/* 077118 80076518 0C01DA8E */ jal func_80076A38 -/* 07711C 8007651C 24060004 */ li $a2, 4 -/* 077120 80076520 0C027AC8 */ jal get_language -/* 077124 80076524 00000000 */ nop -/* 077128 80076528 24010003 */ li $at, 3 -/* 07712C 8007652C 14410004 */ bne $v0, $at, .L80076540 -/* 077130 80076530 3C198012 */ lui $t9, %hi(pfs) # $t9, 0x8012 -/* 077134 80076534 3C064E44 */ lui $a2, (0x4E44594A >> 16) # lui $a2, 0x4e44 -/* 077138 80076538 10000009 */ b .L80076560 -/* 07713C 8007653C 34C6594A */ ori $a2, (0x4E44594A & 0xFFFF) # ori $a2, $a2, 0x594a -.L80076540: -/* 077140 80076540 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 077144 80076544 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 077148 80076548 3C064E44 */ lui $a2, (0x4E445945 >> 16) # lui $a2, 0x4e44 -/* 07714C 8007654C 15C00004 */ bnez $t6, .L80076560 -/* 077150 80076550 34C65945 */ ori $a2, (0x4E445945 & 0xFFFF) # ori $a2, $a2, 0x5945 -/* 077154 80076554 3C064E44 */ lui $a2, (0x4E445950 >> 16) # lui $a2, 0x4e44 -/* 077158 80076558 10000001 */ b .L80076560 -/* 07715C 8007655C 34C65950 */ ori $a2, (0x4E445950 & 0xFFFF) # ori $a2, $a2, 0x5950 -.L80076560: -/* 077160 80076560 8FAF0048 */ lw $t7, 0x48($sp) -/* 077164 80076564 8FA90054 */ lw $t1, 0x54($sp) -/* 077168 80076568 000FC080 */ sll $t8, $t7, 2 -/* 07716C 8007656C 030FC023 */ subu $t8, $t8, $t7 -/* 077170 80076570 0018C080 */ sll $t8, $t8, 2 -/* 077174 80076574 030FC021 */ addu $t8, $t8, $t7 -/* 077178 80076578 0018C0C0 */ sll $t8, $t8, 3 -/* 07717C 8007657C 27394018 */ addiu $t9, %lo(pfs) # addiu $t9, $t9, 0x4018 -/* 077180 80076580 27A8002C */ addiu $t0, $sp, 0x2c -/* 077184 80076584 AFA80010 */ sw $t0, 0x10($sp) -/* 077188 80076588 03192021 */ addu $a0, $t8, $t9 -/* 07718C 8007658C 24053459 */ li $a1, 13401 -/* 077190 80076590 27A70034 */ addiu $a3, $sp, 0x34 -/* 077194 80076594 0C0343A0 */ jal osPfsFindFile -/* 077198 80076598 AFA90014 */ sw $t1, 0x14($sp) -/* 07719C 8007659C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0771A0 800765A0 14400003 */ bnez $v0, .L800765B0 -/* 0771A4 800765A4 24010001 */ li $at, 1 -/* 0771A8 800765A8 10000017 */ b .L80076608 -/* 0771AC 800765AC 00001025 */ move $v0, $zero -.L800765B0: -/* 0771B0 800765B0 10410003 */ beq $v0, $at, .L800765C0 -/* 0771B4 800765B4 2401000B */ li $at, 11 -/* 0771B8 800765B8 14410004 */ bne $v0, $at, .L800765CC -/* 0771BC 800765BC 24010003 */ li $at, 3 -.L800765C0: -/* 0771C0 800765C0 10000011 */ b .L80076608 -/* 0771C4 800765C4 24020001 */ li $v0, 1 -/* 0771C8 800765C8 24010003 */ li $at, 3 -.L800765CC: -/* 0771CC 800765CC 14410004 */ bne $v0, $at, .L800765E0 -/* 0771D0 800765D0 2401000A */ li $at, 10 -/* 0771D4 800765D4 1000000C */ b .L80076608 -/* 0771D8 800765D8 24020002 */ li $v0, 2 -/* 0771DC 800765DC 2401000A */ li $at, 10 -.L800765E0: -/* 0771E0 800765E0 14410004 */ bne $v0, $at, .L800765F4 -/* 0771E4 800765E4 24010005 */ li $at, 5 -/* 0771E8 800765E8 10000007 */ b .L80076608 -/* 0771EC 800765EC 24020003 */ li $v0, 3 -/* 0771F0 800765F0 24010005 */ li $at, 5 -.L800765F4: -/* 0771F4 800765F4 14410004 */ bne $v0, $at, .L80076608 -/* 0771F8 800765F8 24020009 */ li $v0, 9 -/* 0771FC 800765FC 10000002 */ b .L80076608 -/* 077200 80076600 24020005 */ li $v0, 5 -/* 077204 80076604 24020009 */ li $v0, 9 -.L80076608: -/* 077208 80076608 03E00008 */ jr $ra -/* 07720C 8007660C 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/controller_pak/func_800766D4.s b/asm/non_matchings/controller_pak/func_800766D4.s deleted file mode 100644 index e9022116..00000000 --- a/asm/non_matchings/controller_pak/func_800766D4.s +++ /dev/null @@ -1,166 +0,0 @@ -glabel func_800766D4 -/* 0772D4 800766D4 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0772D8 800766D8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0772DC 800766DC AFA40058 */ sw $a0, 0x58($sp) -/* 0772E0 800766E0 AFA5005C */ sw $a1, 0x5c($sp) -/* 0772E4 800766E4 AFA60060 */ sw $a2, 0x60($sp) -/* 0772E8 800766E8 0C01D637 */ jal func_800758DC -/* 0772EC 800766EC AFA70064 */ sw $a3, 0x64($sp) -/* 0772F0 800766F0 10400007 */ beqz $v0, .L80076710 -/* 0772F4 800766F4 27A50044 */ addiu $a1, $sp, 0x44 -/* 0772F8 800766F8 8FA40058 */ lw $a0, 0x58($sp) -/* 0772FC 800766FC 0C01D6BB */ jal func_80075AEC -/* 077300 80076700 AFA20038 */ sw $v0, 0x38($sp) -/* 077304 80076704 8FA20038 */ lw $v0, 0x38($sp) -/* 077308 80076708 10000083 */ b .L80076918 -/* 07730C 8007670C 8FBF0024 */ lw $ra, 0x24($sp) -.L80076710: -/* 077310 80076710 8FA3006C */ lw $v1, 0x6c($sp) -/* 077314 80076714 8FA40060 */ lw $a0, 0x60($sp) -/* 077318 80076718 306200FF */ andi $v0, $v1, 0xff -/* 07731C 8007671C 10400003 */ beqz $v0, .L8007672C -/* 077320 80076720 00603825 */ move $a3, $v1 -/* 077324 80076724 00623823 */ subu $a3, $v1, $v0 -/* 077328 80076728 24E70100 */ addiu $a3, $a3, 0x100 -.L8007672C: -/* 07732C 8007672C 24060010 */ li $a2, 16 -/* 077330 80076730 0C01DA8E */ jal func_80076A38 -/* 077334 80076734 AFA70030 */ sw $a3, 0x30($sp) -/* 077338 80076738 8FA40064 */ lw $a0, 0x64($sp) -/* 07733C 8007673C 27A5003C */ addiu $a1, $sp, 0x3c -/* 077340 80076740 0C01DA8E */ jal func_80076A38 -/* 077344 80076744 24060004 */ li $a2, 4 -/* 077348 80076748 0C027AC8 */ jal get_language -/* 07734C 8007674C 00000000 */ nop -/* 077350 80076750 24010003 */ li $at, 3 -/* 077354 80076754 14410005 */ bne $v0, $at, .L8007676C -/* 077358 80076758 3C0F8000 */ lui $t7, %hi(osTvType) # $t7, 0x8000 -/* 07735C 8007675C 3C0E4E44 */ lui $t6, (0x4E44594A >> 16) # lui $t6, 0x4e44 -/* 077360 80076760 35CE594A */ ori $t6, (0x4E44594A & 0xFFFF) # ori $t6, $t6, 0x594a -/* 077364 80076764 1000000A */ b .L80076790 -/* 077368 80076768 AFAE002C */ sw $t6, 0x2c($sp) -.L8007676C: -/* 07736C 8007676C 8DEF0300 */ lw $t7, %lo(osTvType)($t7) -/* 077370 80076770 3C194E44 */ lui $t9, (0x4E445945 >> 16) # lui $t9, 0x4e44 -/* 077374 80076774 15E00005 */ bnez $t7, .L8007678C -/* 077378 80076778 37395945 */ ori $t9, (0x4E445945 & 0xFFFF) # ori $t9, $t9, 0x5945 -/* 07737C 8007677C 3C184E44 */ lui $t8, (0x4E445950 >> 16) # lui $t8, 0x4e44 -/* 077380 80076780 37185950 */ ori $t8, (0x4E445950 & 0xFFFF) # ori $t8, $t8, 0x5950 -/* 077384 80076784 10000002 */ b .L80076790 -/* 077388 80076788 AFB8002C */ sw $t8, 0x2c($sp) -.L8007678C: -/* 07738C 8007678C AFB9002C */ sw $t9, 0x2c($sp) -.L80076790: -/* 077390 80076790 8FA40058 */ lw $a0, 0x58($sp) -/* 077394 80076794 8FA50060 */ lw $a1, 0x60($sp) -/* 077398 80076798 8FA60064 */ lw $a2, 0x64($sp) -/* 07739C 8007679C 0C01D93A */ jal func_800764E8 -/* 0773A0 800767A0 27A70034 */ addiu $a3, $sp, 0x34 -/* 0773A4 800767A4 1440000B */ bnez $v0, .L800767D4 -/* 0773A8 800767A8 00401825 */ move $v1, $v0 -/* 0773AC 800767AC 8FA2005C */ lw $v0, 0x5c($sp) -/* 0773B0 800767B0 2401FFFF */ li $at, -1 -/* 0773B4 800767B4 1041002C */ beq $v0, $at, .L80076868 -/* 0773B8 800767B8 00000000 */ nop -/* 0773BC 800767BC 8FA80034 */ lw $t0, 0x34($sp) -/* 0773C0 800767C0 00000000 */ nop -/* 0773C4 800767C4 10480028 */ beq $v0, $t0, .L80076868 -/* 0773C8 800767C8 00000000 */ nop -/* 0773CC 800767CC 10000026 */ b .L80076868 -/* 0773D0 800767D0 24030009 */ li $v1, 9 -.L800767D4: -/* 0773D4 800767D4 24010005 */ li $at, 5 -/* 0773D8 800767D8 14410023 */ bne $v0, $at, .L80076868 -/* 0773DC 800767DC 00000000 */ nop -/* 0773E0 800767E0 8FA9005C */ lw $t1, 0x5c($sp) -/* 0773E4 800767E4 2401FFFF */ li $at, -1 -/* 0773E8 800767E8 11210003 */ beq $t1, $at, .L800767F8 -/* 0773EC 800767EC 3C0C8012 */ lui $t4, %hi(pfs) # $t4, 0x8012 -/* 0773F0 800767F0 1000001D */ b .L80076868 -/* 0773F4 800767F4 24030009 */ li $v1, 9 -.L800767F8: -/* 0773F8 800767F8 8FAA0058 */ lw $t2, 0x58($sp) -/* 0773FC 800767FC 8FAE0030 */ lw $t6, 0x30($sp) -/* 077400 80076800 000A5880 */ sll $t3, $t2, 2 -/* 077404 80076804 016A5823 */ subu $t3, $t3, $t2 -/* 077408 80076808 000B5880 */ sll $t3, $t3, 2 -/* 07740C 8007680C 016A5821 */ addu $t3, $t3, $t2 -/* 077410 80076810 000B58C0 */ sll $t3, $t3, 3 -/* 077414 80076814 258C4018 */ addiu $t4, %lo(pfs) # addiu $t4, $t4, 0x4018 -/* 077418 80076818 8FA6002C */ lw $a2, 0x2c($sp) -/* 07741C 8007681C 27AD003C */ addiu $t5, $sp, 0x3c -/* 077420 80076820 27AF0034 */ addiu $t7, $sp, 0x34 -/* 077424 80076824 AFAF0018 */ sw $t7, 0x18($sp) -/* 077428 80076828 AFAD0010 */ sw $t5, 0x10($sp) -/* 07742C 8007682C 016C2021 */ addu $a0, $t3, $t4 -/* 077430 80076830 24053459 */ li $a1, 13401 -/* 077434 80076834 27A70044 */ addiu $a3, $sp, 0x44 -/* 077438 80076838 0C034410 */ jal osPfsAllocateFile -/* 07743C 8007683C AFAE0014 */ sw $t6, 0x14($sp) -/* 077440 80076840 14400003 */ bnez $v0, .L80076850 -/* 077444 80076844 24010007 */ li $at, 7 -/* 077448 80076848 10000007 */ b .L80076868 -/* 07744C 8007684C 00001825 */ move $v1, $zero -.L80076850: -/* 077450 80076850 10410003 */ beq $v0, $at, .L80076860 -/* 077454 80076854 24010008 */ li $at, 8 -/* 077458 80076858 14410003 */ bne $v0, $at, .L80076868 -/* 07745C 8007685C 24030009 */ li $v1, 9 -.L80076860: -/* 077460 80076860 10000001 */ b .L80076868 -/* 077464 80076864 24030004 */ li $v1, 4 -.L80076868: -/* 077468 80076868 14600025 */ bnez $v1, .L80076900 -/* 07746C 8007686C 3C088012 */ lui $t0, %hi(pfs) # $t0, 0x8012 -/* 077470 80076870 8FB80058 */ lw $t8, 0x58($sp) -/* 077474 80076874 8FA90030 */ lw $t1, 0x30($sp) -/* 077478 80076878 0018C880 */ sll $t9, $t8, 2 -/* 07747C 8007687C 0338C823 */ subu $t9, $t9, $t8 -/* 077480 80076880 0019C880 */ sll $t9, $t9, 2 -/* 077484 80076884 8FAA0068 */ lw $t2, 0x68($sp) -/* 077488 80076888 0338C821 */ addu $t9, $t9, $t8 -/* 07748C 8007688C 0019C8C0 */ sll $t9, $t9, 3 -/* 077490 80076890 25084018 */ addiu $t0, %lo(pfs) # addiu $t0, $t0, 0x4018 -/* 077494 80076894 8FA50034 */ lw $a1, 0x34($sp) -/* 077498 80076898 03282021 */ addu $a0, $t9, $t0 -/* 07749C 8007689C 24060001 */ li $a2, 1 -/* 0774A0 800768A0 00003825 */ move $a3, $zero -/* 0774A4 800768A4 AFA90010 */ sw $t1, 0x10($sp) -/* 0774A8 800768A8 0C033BF7 */ jal osPfsReadWriteFile -/* 0774AC 800768AC AFAA0014 */ sw $t2, 0x14($sp) -/* 0774B0 800768B0 14400003 */ bnez $v0, .L800768C0 -/* 0774B4 800768B4 24010001 */ li $at, 1 -/* 0774B8 800768B8 10000011 */ b .L80076900 -/* 0774BC 800768BC 00001825 */ move $v1, $zero -.L800768C0: -/* 0774C0 800768C0 10410003 */ beq $v0, $at, .L800768D0 -/* 0774C4 800768C4 2401000B */ li $at, 11 -/* 0774C8 800768C8 14410004 */ bne $v0, $at, .L800768DC -/* 0774CC 800768CC 24010003 */ li $at, 3 -.L800768D0: -/* 0774D0 800768D0 1000000B */ b .L80076900 -/* 0774D4 800768D4 24030001 */ li $v1, 1 -/* 0774D8 800768D8 24010003 */ li $at, 3 -.L800768DC: -/* 0774DC 800768DC 14410004 */ bne $v0, $at, .L800768F0 -/* 0774E0 800768E0 2401000A */ li $at, 10 -/* 0774E4 800768E4 10000006 */ b .L80076900 -/* 0774E8 800768E8 24030002 */ li $v1, 2 -/* 0774EC 800768EC 2401000A */ li $at, 10 -.L800768F0: -/* 0774F0 800768F0 14410003 */ bne $v0, $at, .L80076900 -/* 0774F4 800768F4 24030009 */ li $v1, 9 -/* 0774F8 800768F8 10000001 */ b .L80076900 -/* 0774FC 800768FC 24030003 */ li $v1, 3 -.L80076900: -/* 077500 80076900 8FA40058 */ lw $a0, 0x58($sp) -/* 077504 80076904 0C01D6BB */ jal func_80075AEC -/* 077508 80076908 AFA30038 */ sw $v1, 0x38($sp) -/* 07750C 8007690C 8FA20038 */ lw $v0, 0x38($sp) -/* 077510 80076910 00000000 */ nop -/* 077514 80076914 8FBF0024 */ lw $ra, 0x24($sp) -.L80076918: -/* 077518 80076918 27BD0058 */ addiu $sp, $sp, 0x58 -/* 07751C 8007691C 03E00008 */ jr $ra -/* 077520 80076920 00000000 */ nop - diff --git a/asm/non_matchings/controller_pak/func_8007698C.s b/asm/non_matchings/controller_pak/func_8007698C.s deleted file mode 100644 index 000cc36f..00000000 --- a/asm/non_matchings/controller_pak/func_8007698C.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_8007698C -/* 07758C 8007698C 90820000 */ lbu $v0, ($a0) -/* 077590 80076990 00A01825 */ move $v1, $a1 -/* 077594 80076994 10400014 */ beqz $v0, .L800769E8 -/* 077598 80076998 00000000 */ nop -/* 07759C 8007699C 10C00012 */ beqz $a2, .L800769E8 -/* 0775A0 800769A0 2408002D */ li $t0, 45 -/* 0775A4 800769A4 3C07800E */ lui $a3, %hi(gN64FontCodes) # $a3, 0x800e -/* 0775A8 800769A8 24E7E444 */ addiu $a3, %lo(gN64FontCodes) # addiu $a3, $a3, -0x1bbc -/* 0775AC 800769AC 28410042 */ slti $at, $v0, 66 -.L800769B0: -/* 0775B0 800769B0 10200005 */ beqz $at, .L800769C8 -/* 0775B4 800769B4 00E27021 */ addu $t6, $a3, $v0 -/* 0775B8 800769B8 91CF0000 */ lbu $t7, ($t6) -/* 0775BC 800769BC 24A50001 */ addiu $a1, $a1, 1 -/* 0775C0 800769C0 10000003 */ b .L800769D0 -/* 0775C4 800769C4 A0AFFFFF */ sb $t7, -1($a1) -.L800769C8: -/* 0775C8 800769C8 A0A80000 */ sb $t0, ($a1) -/* 0775CC 800769CC 24A50001 */ addiu $a1, $a1, 1 -.L800769D0: -/* 0775D0 800769D0 90820001 */ lbu $v0, 1($a0) -/* 0775D4 800769D4 24840001 */ addiu $a0, $a0, 1 -/* 0775D8 800769D8 10400003 */ beqz $v0, .L800769E8 -/* 0775DC 800769DC 24C6FFFF */ addiu $a2, $a2, -1 -/* 0775E0 800769E0 14C0FFF3 */ bnez $a2, .L800769B0 -/* 0775E4 800769E4 28410042 */ slti $at, $v0, 66 -.L800769E8: -/* 0775E8 800769E8 10C00010 */ beqz $a2, .L80076A2C -/* 0775EC 800769EC 30C40003 */ andi $a0, $a2, 3 -/* 0775F0 800769F0 00042023 */ negu $a0, $a0 -/* 0775F4 800769F4 10800006 */ beqz $a0, .L80076A10 -/* 0775F8 800769F8 00861021 */ addu $v0, $a0, $a2 -.L800769FC: -/* 0775FC 800769FC 24C6FFFF */ addiu $a2, $a2, -1 -/* 077600 80076A00 A0A00000 */ sb $zero, ($a1) -/* 077604 80076A04 1446FFFD */ bne $v0, $a2, .L800769FC -/* 077608 80076A08 24A50001 */ addiu $a1, $a1, 1 -/* 07760C 80076A0C 10C00007 */ beqz $a2, .L80076A2C -.L80076A10: -/* 077610 80076A10 24C6FFFC */ addiu $a2, $a2, -4 -/* 077614 80076A14 A0A00000 */ sb $zero, ($a1) -/* 077618 80076A18 A0A00001 */ sb $zero, 1($a1) -/* 07761C 80076A1C A0A00002 */ sb $zero, 2($a1) -/* 077620 80076A20 A0A00003 */ sb $zero, 3($a1) -/* 077624 80076A24 14C0FFFA */ bnez $a2, .L80076A10 -/* 077628 80076A28 24A50004 */ addiu $a1, $a1, 4 -.L80076A2C: -/* 07762C 80076A2C A0A00000 */ sb $zero, ($a1) -/* 077630 80076A30 03E00008 */ jr $ra -/* 077634 80076A34 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/controller_pak/func_80076A38.s b/asm/non_matchings/controller_pak/func_80076A38.s deleted file mode 100644 index f08e05d9..00000000 --- a/asm/non_matchings/controller_pak/func_80076A38.s +++ /dev/null @@ -1,57 +0,0 @@ -glabel func_80076A38 -/* 077638 80076A38 908E0000 */ lbu $t6, ($a0) -/* 07763C 80076A3C 00A01825 */ move $v1, $a1 -/* 077640 80076A40 11C00018 */ beqz $t6, .L80076AA4 -/* 077644 80076A44 00000000 */ nop -/* 077648 80076A48 10C00016 */ beqz $a2, .L80076AA4 -/* 07764C 80076A4C 24090041 */ li $t1, 65 -.L80076A50: -/* 077650 80076A50 A0A00000 */ sb $zero, ($a1) -/* 077654 80076A54 3C08800E */ lui $t0, %hi(gN64FontCodes) # $t0, 0x800e -/* 077658 80076A58 90870000 */ lbu $a3, ($a0) -/* 07765C 80076A5C 2508E444 */ addiu $t0, %lo(gN64FontCodes) # addiu $t0, $t0, -0x1bbc -/* 077660 80076A60 00001025 */ move $v0, $zero -.L80076A64: -/* 077664 80076A64 910F0000 */ lbu $t7, ($t0) -/* 077668 80076A68 00000000 */ nop -/* 07766C 80076A6C 14EF0004 */ bne $a3, $t7, .L80076A80 -/* 077670 80076A70 00000000 */ nop -/* 077674 80076A74 A0A20000 */ sb $v0, ($a1) -/* 077678 80076A78 10000004 */ b .L80076A8C -/* 07767C 80076A7C 24A50001 */ addiu $a1, $a1, 1 -.L80076A80: -/* 077680 80076A80 24420001 */ addiu $v0, $v0, 1 -/* 077684 80076A84 1449FFF7 */ bne $v0, $t1, .L80076A64 -/* 077688 80076A88 25080001 */ addiu $t0, $t0, 1 -.L80076A8C: -/* 07768C 80076A8C 90980001 */ lbu $t8, 1($a0) -/* 077690 80076A90 24840001 */ addiu $a0, $a0, 1 -/* 077694 80076A94 13000003 */ beqz $t8, .L80076AA4 -/* 077698 80076A98 24C6FFFF */ addiu $a2, $a2, -1 -/* 07769C 80076A9C 14C0FFEC */ bnez $a2, .L80076A50 -/* 0776A0 80076AA0 00000000 */ nop -.L80076AA4: -/* 0776A4 80076AA4 10C00010 */ beqz $a2, .L80076AE8 -/* 0776A8 80076AA8 30C40003 */ andi $a0, $a2, 3 -/* 0776AC 80076AAC 00042023 */ negu $a0, $a0 -/* 0776B0 80076AB0 10800006 */ beqz $a0, .L80076ACC -/* 0776B4 80076AB4 00861021 */ addu $v0, $a0, $a2 -.L80076AB8: -/* 0776B8 80076AB8 24C6FFFF */ addiu $a2, $a2, -1 -/* 0776BC 80076ABC A0A00000 */ sb $zero, ($a1) -/* 0776C0 80076AC0 1446FFFD */ bne $v0, $a2, .L80076AB8 -/* 0776C4 80076AC4 24A50001 */ addiu $a1, $a1, 1 -/* 0776C8 80076AC8 10C00007 */ beqz $a2, .L80076AE8 -.L80076ACC: -/* 0776CC 80076ACC 24C6FFFC */ addiu $a2, $a2, -4 -/* 0776D0 80076AD0 A0A00000 */ sb $zero, ($a1) -/* 0776D4 80076AD4 A0A00001 */ sb $zero, 1($a1) -/* 0776D8 80076AD8 A0A00002 */ sb $zero, 2($a1) -/* 0776DC 80076ADC A0A00003 */ sb $zero, 3($a1) -/* 0776E0 80076AE0 14C0FFFA */ bnez $a2, .L80076ACC -/* 0776E4 80076AE4 24A50004 */ addiu $a1, $a1, 4 -.L80076AE8: -/* 0776E8 80076AE8 A0A00000 */ sb $zero, ($a1) -/* 0776EC 80076AEC 03E00008 */ jr $ra -/* 0776F0 80076AF0 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/controller_pak/func_80075B18.s b/asm/non_matchings/controller_pak/init_controller_paks.s similarity index 75% rename from asm/non_matchings/controller_pak/func_80075B18.s rename to asm/non_matchings/controller_pak/init_controller_paks.s index 820b5d28..ef0d8570 100644 --- a/asm/non_matchings/controller_pak/func_80075B18.s +++ b/asm/non_matchings/controller_pak/init_controller_paks.s @@ -1,4 +1,4 @@ -glabel func_80075B18 +glabel init_controller_paks /* 076718 80075B18 27BDFFA8 */ addiu $sp, $sp, -0x58 /* 07671C 80075B1C AFBF003C */ sw $ra, 0x3c($sp) /* 076720 80075B20 AFBE0038 */ sw $fp, 0x38($sp) @@ -9,15 +9,15 @@ glabel func_80075B18 /* 076734 80075B34 AFB30024 */ sw $s3, 0x24($sp) /* 076738 80075B38 AFB20020 */ sw $s2, 0x20($sp) /* 07673C 80075B3C AFB1001C */ sw $s1, 0x1c($sp) -/* 076740 80075B40 0C01A840 */ jal func_8006A100 +/* 076740 80075B40 0C01A840 */ jal get_si_mesg_queue /* 076744 80075B44 AFB00018 */ sw $s0, 0x18($sp) -/* 076748 80075B48 3C148012 */ lui $s4, %hi(D_80124010) # $s4, 0x8012 -/* 07674C 80075B4C 26944010 */ addiu $s4, %lo(D_80124010) # addiu $s4, $s4, 0x4010 +/* 076748 80075B48 3C148012 */ lui $s4, %hi(sControllerMesgQueue) # $s4, 0x8012 +/* 07674C 80075B4C 26944010 */ addiu $s4, %lo(sControllerMesgQueue) # addiu $s4, $s4, 0x4010 /* 076750 80075B50 AE820000 */ sw $v0, ($s4) /* 076754 80075B54 0C0078A7 */ jal get_misc_asset /* 076758 80075B58 24040013 */ li $a0, 19 -/* 07675C 80075B5C 3C018012 */ lui $at, %hi(D_801241E0) # $at, 0x8012 -/* 076760 80075B60 AC2241E0 */ sw $v0, %lo(D_801241E0)($at) +/* 07675C 80075B5C 3C018012 */ lui $at, %hi(sUnkMiscAsset19) # $at, 0x8012 +/* 076760 80075B60 AC2241E0 */ sw $v0, %lo(sUnkMiscAsset19)($at) /* 076764 80075B64 3C038012 */ lui $v1, %hi(D_801241E7) # $v1, 0x8012 /* 076768 80075B68 246341E7 */ addiu $v1, %lo(D_801241E7) # addiu $v1, $v1, 0x41e7 /* 07676C 80075B6C 240F000F */ li $t7, 15 @@ -31,11 +31,11 @@ glabel func_80075B18 /* 07678C 80075B8C AC2041E8 */ sw $zero, %lo(D_801241E8)($at) /* 076790 80075B90 3C01800E */ lui $at, %hi(D_800DE48C) # $at, 0x800e /* 076794 80075B94 24190001 */ li $t9, 1 -/* 076798 80075B98 3C158012 */ lui $s5, %hi(D_801241E5) # $s5, 0x8012 -/* 07679C 80075B9C 3C16800E */ lui $s6, %hi(D_800DE488) # $s6, 0x800e +/* 076798 80075B98 3C158012 */ lui $s5, %hi(sRumblePaksPresent) # $s5, 0x8012 +/* 07679C 80075B9C 3C16800E */ lui $s6, %hi(sControllerPaksPresent) # $s6, 0x800e /* 0767A0 80075BA0 AC39E48C */ sw $t9, %lo(D_800DE48C)($at) -/* 0767A4 80075BA4 26D6E488 */ addiu $s6, %lo(D_800DE488) # addiu $s6, $s6, -0x1b78 -/* 0767A8 80075BA8 26B541E5 */ addiu $s5, %lo(D_801241E5) # addiu $s5, $s5, 0x41e5 +/* 0767A4 80075BA4 26D6E488 */ addiu $s6, %lo(sControllerPaksPresent) # addiu $s6, $s6, -0x1b78 +/* 0767A8 80075BA8 26B541E5 */ addiu $s5, %lo(sRumblePaksPresent) # addiu $s5, $s5, 0x41e5 /* 0767AC 80075BAC 8E840000 */ lw $a0, ($s4) /* 0767B0 80075BB0 A2A00000 */ sb $zero, ($s5) /* 0767B4 80075BB4 A2C00000 */ sb $zero, ($s6) @@ -118,28 +118,3 @@ glabel func_80075B18 /* 0768D4 80075CD4 8FBE0038 */ lw $fp, 0x38($sp) /* 0768D8 80075CD8 03E00008 */ jr $ra /* 0768DC 80075CDC 27BD0058 */ addiu $sp, $sp, 0x58 - -/* 0768E0 80075CE0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0768E4 80075CE4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0768E8 80075CE8 0C01D637 */ jal func_800758DC -/* 0768EC 80075CEC AFA40020 */ sw $a0, 0x20($sp) -/* 0768F0 80075CF0 8FA40020 */ lw $a0, 0x20($sp) -/* 0768F4 80075CF4 0C01D6BB */ jal func_80075AEC -/* 0768F8 80075CF8 AFA2001C */ sw $v0, 0x1c($sp) -/* 0768FC 80075CFC 8FA3001C */ lw $v1, 0x1c($sp) -/* 076900 80075D00 24010007 */ li $at, 7 -/* 076904 80075D04 14610008 */ bne $v1, $at, .L80075D28 -/* 076908 80075D08 3C028012 */ lui $v0, %hi(D_801241E5) # $v0, 0x8012 -/* 07690C 80075D0C 8FAF0020 */ lw $t7, 0x20($sp) -/* 076910 80075D10 244241E5 */ addiu $v0, %lo(D_801241E5) # addiu $v0, $v0, 0x41e5 -/* 076914 80075D14 904E0000 */ lbu $t6, ($v0) -/* 076918 80075D18 24180001 */ li $t8, 1 -/* 07691C 80075D1C 01F8C804 */ sllv $t9, $t8, $t7 -/* 076920 80075D20 01D94025 */ or $t0, $t6, $t9 -/* 076924 80075D24 A0480000 */ sb $t0, ($v0) -.L80075D28: -/* 076928 80075D28 8FBF0014 */ lw $ra, 0x14($sp) -/* 07692C 80075D2C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 076930 80075D30 03E00008 */ jr $ra -/* 076934 80075D34 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/memory/free_memory_pool_slot.s b/asm/non_matchings/memory/free_memory_pool_slot.s index 7665006f..79de2c3f 100644 --- a/asm/non_matchings/memory/free_memory_pool_slot.s +++ b/asm/non_matchings/memory/free_memory_pool_slot.s @@ -78,10 +78,3 @@ glabel free_memory_pool_slot /* 07236C 8007176C 03E00008 */ jr $ra /* 072370 80071770 00000000 */ nop -/* 072374 80071774 00047100 */ sll $t6, $a0, 4 -/* 072378 80071778 3C028012 */ lui $v0, %hi(gMemoryPools+8) # $v0, 0x8012 -/* 07237C 8007177C 004E1021 */ addu $v0, $v0, $t6 -/* 072380 80071780 8C423588 */ lw $v0, %lo(gMemoryPools+8)($v0) -/* 072384 80071784 03E00008 */ jr $ra -/* 072388 80071788 00000000 */ nop - diff --git a/asm/non_matchings/menu/MenuBootLoop.s b/asm/non_matchings/menu/MenuBootLoop.s deleted file mode 100644 index 7334a874..00000000 --- a/asm/non_matchings/menu/MenuBootLoop.s +++ /dev/null @@ -1,124 +0,0 @@ -glabel menu_boot_loop -/* 08920C 8008860C 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 089210 80088610 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 089214 80088614 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 089218 80088618 AFBF0024 */ sw $ra, 0x24($sp) -/* 08921C 8008861C 00802825 */ move $a1, $a0 -/* 089220 80088620 AFA0002C */ sw $zero, 0x2c($sp) -/* 089224 80088624 15C00002 */ bnez $t6, .L80088630 -/* 089228 80088628 24030078 */ li $v1, 120 -/* 08922C 8008862C 24030084 */ li $v1, 132 -.L80088630: -/* 089230 80088630 3C028012 */ lui $v0, %hi(D_80126C20) # $v0, 0x8012 -/* 089234 80088634 8C426C20 */ lw $v0, %lo(D_80126C20)($v0) -/* 089238 80088638 00603825 */ move $a3, $v1 -/* 08923C 8008863C 10400009 */ beqz $v0, .L80088664 -/* 089240 80088640 3C038012 */ lui $v1, %hi(D_80126C18) # $v1, 0x8012 -/* 089244 80088644 24010001 */ li $at, 1 -/* 089248 80088648 10410019 */ beq $v0, $at, .L800886B0 -/* 08924C 8008864C 3C038012 */ lui $v1, %hi(D_80126C18) # $v1, 0x8012 -/* 089250 80088650 24010002 */ li $at, 2 -/* 089254 80088654 10410030 */ beq $v0, $at, .L80088718 -/* 089258 80088658 3C0C800E */ lui $t4, %hi(gMenuDelay) # $t4, 0x800e -/* 08925C 8008865C 10000043 */ b .L8008876C -/* 089260 80088660 28E1012C */ slti $at, $a3, 0x12c -.L80088664: -/* 089264 80088664 24636C18 */ addiu $v1, %lo(D_80126C18) # addiu $v1, $v1, 0x6c18 -/* 089268 80088668 8C620000 */ lw $v0, ($v1) -/* 08926C 8008866C 00000000 */ nop -/* 089270 80088670 28410020 */ slti $at, $v0, 0x20 -/* 089274 80088674 10200007 */ beqz $at, .L80088694 -/* 089278 80088678 00457821 */ addu $t7, $v0, $a1 -/* 08927C 8008867C 29E10021 */ slti $at, $t7, 0x21 -/* 089280 80088680 14200039 */ bnez $at, .L80088768 -/* 089284 80088684 AC6F0000 */ sw $t7, ($v1) -/* 089288 80088688 24190020 */ li $t9, 32 -/* 08928C 8008868C 10000036 */ b .L80088768 -/* 089290 80088690 AC790000 */ sw $t9, ($v1) -.L80088694: -/* 089294 80088694 0C0221FA */ jal func_800887E8 -/* 089298 80088698 AFA70028 */ sw $a3, 0x28($sp) -/* 08929C 8008869C 8FA70028 */ lw $a3, 0x28($sp) -/* 0892A0 800886A0 24080001 */ li $t0, 1 -/* 0892A4 800886A4 3C018012 */ lui $at, %hi(D_80126C20) # $at, 0x8012 -/* 0892A8 800886A8 1000002F */ b .L80088768 -/* 0892AC 800886AC AC286C20 */ sw $t0, %lo(D_80126C20)($at) -.L800886B0: -/* 0892B0 800886B0 24636C18 */ addiu $v1, $v1, %lo(D_80126C18) -/* 0892B4 800886B4 8C620000 */ lw $v0, ($v1) -/* 0892B8 800886B8 00000000 */ nop -/* 0892BC 800886BC 2841008C */ slti $at, $v0, 0x8c -/* 0892C0 800886C0 10200008 */ beqz $at, .L800886E4 -/* 0892C4 800886C4 00454821 */ addu $t1, $v0, $a1 -/* 0892C8 800886C8 2921008D */ slti $at, $t1, 0x8d -/* 0892CC 800886CC AC690000 */ sw $t1, ($v1) -/* 0892D0 800886D0 1420000C */ bnez $at, .L80088704 -/* 0892D4 800886D4 01201025 */ move $v0, $t1 -/* 0892D8 800886D8 2402008C */ li $v0, 140 -/* 0892DC 800886DC 10000009 */ b .L80088704 -/* 0892E0 800886E0 AC620000 */ sw $v0, ($v1) -.L800886E4: -/* 0892E4 800886E4 0C0221F1 */ jal func_800887C4 -/* 0892E8 800886E8 AFA70028 */ sw $a3, 0x28($sp) -/* 0892EC 800886EC 3C028012 */ lui $v0, %hi(D_80126C18) # $v0, 0x8012 -/* 0892F0 800886F0 240B0002 */ li $t3, 2 -/* 0892F4 800886F4 3C018012 */ lui $at, %hi(D_80126C20) # $at, 0x8012 -/* 0892F8 800886F8 8FA70028 */ lw $a3, 0x28($sp) -/* 0892FC 800886FC 8C426C18 */ lw $v0, %lo(D_80126C18)($v0) -/* 089300 80088700 AC2B6C20 */ sw $t3, %lo(D_80126C20)($at) -.L80088704: -/* 089304 80088704 28410081 */ slti $at, $v0, 0x81 -/* 089308 80088708 14200018 */ bnez $at, .L8008876C -/* 08930C 8008870C 28E1012C */ slti $at, $a3, 0x12c -/* 089310 80088710 10000015 */ b .L80088768 -/* 089314 80088714 2407012C */ li $a3, 300 -.L80088718: -/* 089318 80088718 8D8CF47C */ lw $t4, %lo(gMenuDelay)($t4) -/* 08931C 8008871C 00000000 */ nop -/* 089320 80088720 1180000C */ beqz $t4, .L80088754 -/* 089324 80088724 2407012C */ li $a3, 300 -/* 089328 80088728 0C030063 */ jal func_800C018C -/* 08932C 8008872C AFA50030 */ sw $a1, 0x30($sp) -/* 089330 80088730 8FA50030 */ lw $a1, 0x30($sp) -/* 089334 80088734 14400006 */ bnez $v0, .L80088750 -/* 089338 80088738 3C04800E */ lui $a0, %hi(sMenuTransitionFadeInFast) # $a0, 0x800e -/* 08933C 8008873C 2484F76C */ addiu $a0, %lo(sMenuTransitionFadeInFast) # addiu $a0, $a0, -0x894 -/* 089340 80088740 0C030076 */ jal func_800C01D8 -/* 089344 80088744 AFA50030 */ sw $a1, 0x30($sp) -/* 089348 80088748 8FA50030 */ lw $a1, 0x30($sp) -/* 08934C 8008874C 00000000 */ nop -.L80088750: -/* 089350 80088750 2407012C */ li $a3, 300 -.L80088754: -/* 089354 80088754 AFA70028 */ sw $a3, 0x28($sp) -/* 089358 80088758 0C02242B */ jal func_800890AC -/* 08935C 8008875C 00A02025 */ move $a0, $a1 -/* 089360 80088760 8FA70028 */ lw $a3, 0x28($sp) -/* 089364 80088764 AFA2002C */ sw $v0, 0x2c($sp) -.L80088768: -/* 089368 80088768 28E1012C */ slti $at, $a3, 0x12c -.L8008876C: -/* 08936C 8008876C 10200011 */ beqz $at, .L800887B4 -/* 089370 80088770 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 089374 80088774 3C05800E */ lui $a1, %hi(sGameTitleTileOffsets) # $a1, 0x800e -/* 089378 80088778 240D00FF */ li $t5, 255 -/* 08937C 8008877C 240E00FF */ li $t6, 255 -/* 089380 80088780 240F00FF */ li $t7, 255 -/* 089384 80088784 241800FF */ li $t8, 255 -/* 089388 80088788 AFB8001C */ sw $t8, 0x1c($sp) -/* 08938C 8008878C AFAF0018 */ sw $t7, 0x18($sp) -/* 089390 80088790 AFAE0014 */ sw $t6, 0x14($sp) -/* 089394 80088794 AFAD0010 */ sw $t5, 0x10($sp) -/* 089398 80088798 24A5F7DC */ addiu $a1, %lo(sGameTitleTileOffsets) # addiu $a1, $a1, -0x824 -/* 08939C 8008879C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 0893A0 800887A0 0C01E2AE */ jal render_textured_rectangle -/* 0893A4 800887A4 240600A0 */ li $a2, 160 -/* 0893A8 800887A8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 0893AC 800887AC 0C01ECF4 */ jal func_8007B3D0 -/* 0893B0 800887B0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -.L800887B4: -/* 0893B4 800887B4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0893B8 800887B8 8FA2002C */ lw $v0, 0x2c($sp) -/* 0893BC 800887BC 03E00008 */ jr $ra -/* 0893C0 800887C0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/menu/draw_menu_elements.s b/asm/non_matchings/menu/draw_menu_elements.s index 41c146e0..3a4db169 100644 --- a/asm/non_matchings/menu/draw_menu_elements.s +++ b/asm/non_matchings/menu/draw_menu_elements.s @@ -274,7 +274,7 @@ glabel L8008256C /* 0831E8 800825E8 03194025 */ or $t0, $t8, $t9 /* 0831EC 800825EC AFA80018 */ sw $t0, 0x18($sp) /* 0831F0 800825F0 92090012 */ lbu $t1, 0x12($s0) -/* 0831F4 800825F4 0C01E340 */ jal func_80078D00 +/* 0831F4 800825F4 0C01E340 */ jal render_texture_rectangle_scaled /* 0831F8 800825F8 AFA9001C */ sw $t1, 0x1c($sp) /* 0831FC 800825FC 8FA40070 */ lw $a0, 0x70($sp) /* 083200 80082600 1000008A */ b .L8008282C diff --git a/asm/non_matchings/menu/func_8008377C.s b/asm/non_matchings/menu/func_8008377C.s index 9da16249..6513bd9c 100644 --- a/asm/non_matchings/menu/func_8008377C.s +++ b/asm/non_matchings/menu/func_8008377C.s @@ -53,7 +53,7 @@ glabel func_8008377C /* 084448 80083848 3C064320 */ lui $a2, 0x4320 /* 08444C 8008384C 3C074250 */ lui $a3, 0x4250 /* 084450 80083850 E7A00010 */ swc1 $f0, 0x10($sp) -/* 084454 80083854 0C01E340 */ jal func_80078D00 +/* 084454 80083854 0C01E340 */ jal render_texture_rectangle_scaled /* 084458 80083858 E7A00014 */ swc1 $f0, 0x14($sp) /* 08445C 8008385C 1000000C */ b .L80083890 /* 084460 80083860 00000000 */ nop diff --git a/asm/non_matchings/menu/func_800862C4.s b/asm/non_matchings/menu/func_800862C4.s index 3047b9b1..988f9e8a 100644 --- a/asm/non_matchings/menu/func_800862C4.s +++ b/asm/non_matchings/menu/func_800862C4.s @@ -55,7 +55,7 @@ glabel func_800862C4 /* 086F94 80086394 8E8D0000 */ lw $t5, ($s4) /* 086F98 80086398 000E7900 */ sll $t7, $t6, 4 /* 086F9C 8008639C 01AFC821 */ addu $t9, $t5, $t7 -/* 086FA0 800863A0 0C01CF13 */ jal get_s32_256 +/* 086FA0 800863A0 0C01CF13 */ jal get_game_data_file_size /* 086FA4 800863A4 A3300006 */ sb $s0, 6($t9) /* 086FA8 800863A8 8E490000 */ lw $t1, ($s2) /* 086FAC 800863AC 8E8A0000 */ lw $t2, ($s4) @@ -81,7 +81,7 @@ glabel func_800862C4 /* 086FF8 800863F8 8E8C0000 */ lw $t4, ($s4) /* 086FFC 800863FC 00185900 */ sll $t3, $t8, 4 /* 087000 80086400 018B7021 */ addu $t6, $t4, $t3 -/* 087004 80086404 0C01CF15 */ jal get_s32_512 +/* 087004 80086404 0C01CF15 */ jal get_time_data_file_size /* 087008 80086408 A1D30001 */ sb $s3, 1($t6) /* 08700C 8008640C 8E4F0000 */ lw $t7, ($s2) /* 087010 80086410 8E990000 */ lw $t9, ($s4) @@ -118,7 +118,7 @@ glabel func_800862C4 /* 087084 80086484 00002025 */ move $a0, $zero /* 087088 80086488 24050010 */ li $a1, 16 /* 08708C 8008648C 27A600F4 */ addiu $a2, $sp, 0xf4 -/* 087090 80086490 0C01D798 */ jal func_80075E60 +/* 087090 80086490 0C01D798 */ jal get_controller_pak_file_list /* 087094 80086494 03C03825 */ move $a3, $fp /* 087098 80086498 304300FF */ andi $v1, $v0, 0xff /* 08709C 8008649C 24010005 */ li $at, 5 @@ -175,7 +175,7 @@ glabel func_800862C4 /* 087160 80086560 03C78821 */ addu $s1, $fp, $a3 /* 087164 80086564 8E250000 */ lw $a1, ($s1) /* 087168 80086568 AFA80138 */ sw $t0, 0x138($sp) -/* 08716C 8008656C 0C01CF87 */ jal func_80073E1C +/* 08716C 8008656C 0C01CF87 */ jal read_game_data_from_controller_pak /* 087170 80086570 02C03025 */ move $a2, $s6 /* 087174 80086574 8FA80138 */ lw $t0, 0x138($sp) /* 087178 80086578 14400021 */ bnez $v0, .L80086600 diff --git a/asm/non_matchings/menu/func_800867D4.s b/asm/non_matchings/menu/func_800867D4.s index b9b7e2b8..150d4377 100644 --- a/asm/non_matchings/menu/func_800867D4.s +++ b/asm/non_matchings/menu/func_800867D4.s @@ -36,7 +36,7 @@ glabel L80086834 /* 087444 80086844 8C846A04 */ lw $a0, %lo(D_80126A04)($a0) /* 087448 80086848 0C021872 */ jal func_800861C8 /* 08744C 8008684C 02002825 */ move $a1, $s0 -/* 087450 80086850 0C01CF13 */ jal get_s32_256 +/* 087450 80086850 0C01CF13 */ jal get_game_data_file_size /* 087454 80086854 00000000 */ nop /* 087458 80086858 3C068012 */ lui $a2, %hi(D_80126A04) # $a2, 0x8012 /* 08745C 8008685C 8CC66A04 */ lw $a2, %lo(D_80126A04)($a2) @@ -51,7 +51,7 @@ glabel L80086834 /* 087480 80086880 10000062 */ b .L80086A0C /* 087484 80086884 00401825 */ move $v1, $v0 glabel L80086888 -/* 087488 80086888 0C01CF15 */ jal get_s32_512 +/* 087488 80086888 0C01CF15 */ jal get_time_data_file_size /* 08748C 8008688C 00000000 */ nop /* 087490 80086890 3C068012 */ lui $a2, %hi(D_80126A04) # $a2, 0x8012 /* 087494 80086894 8CC66A04 */ lw $a2, %lo(D_80126A04)($a2) @@ -70,7 +70,7 @@ glabel L800868C0 /* 0874C4 800868C4 8C846A04 */ lw $a0, %lo(D_80126A04)($a0) /* 0874C8 800868C8 0C021872 */ jal func_800861C8 /* 0874CC 800868CC 02002825 */ move $a1, $s0 -/* 0874D0 800868D0 0C01CF13 */ jal get_s32_256 +/* 0874D0 800868D0 0C01CF13 */ jal get_game_data_file_size /* 0874D4 800868D4 00000000 */ nop /* 0874D8 800868D8 3C0C8012 */ lui $t4, %hi(D_80126BD4) # $t4, 0x8012 /* 0874DC 800868DC 8D8C6BD4 */ lw $t4, %lo(D_80126BD4)($t4) @@ -101,7 +101,7 @@ glabel L80086920 /* 08753C 8008693C 8E0C0000 */ lw $t4, ($s0) /* 087540 80086940 00000000 */ nop /* 087544 80086944 258B0001 */ addiu $t3, $t4, 1 -/* 087548 80086948 0C01CF15 */ jal get_s32_512 +/* 087548 80086948 0C01CF15 */ jal get_time_data_file_size /* 08754C 8008694C AE0B0000 */ sw $t3, ($s0) /* 087550 80086950 3C0F8012 */ lui $t7, %hi(D_80126BD4) # $t7, 0x8012 /* 087554 80086954 8DEF6BD4 */ lw $t7, %lo(D_80126BD4)($t7) diff --git a/asm/non_matchings/menu/func_80086A48.s b/asm/non_matchings/menu/func_80086A48.s deleted file mode 100644 index ff8d6527..00000000 --- a/asm/non_matchings/menu/func_80086A48.s +++ /dev/null @@ -1,56 +0,0 @@ -.late_rodata -glabel D_800E8414 -.float 0.1 - -.text -glabel func_80086A48 -/* 087648 80086A48 3C0E8012 */ lui $t6, %hi(D_80126BD4) # $t6, 0x8012 -/* 08764C 80086A4C 8DCE6BD4 */ lw $t6, %lo(D_80126BD4)($t6) -/* 087650 80086A50 3C0F8012 */ lui $t7, %hi(D_80126BE4) # $t7, 0x8012 -/* 087654 80086A54 448E9000 */ mtc1 $t6, $f18 -/* 087658 80086A58 8DEF6BE4 */ lw $t7, %lo(D_80126BE4)($t7) -/* 08765C 80086A5C 46809020 */ cvt.s.w $f0, $f18 -/* 087660 80086A60 448F9000 */ mtc1 $t7, $f18 -/* 087664 80086A64 18800023 */ blez $a0, .L80086AF4 -/* 087668 80086A68 468090A0 */ cvt.s.w $f2, $f18 -/* 08766C 80086A6C 3C028012 */ lui $v0, %hi(D_80126A08) # $v0, 0x8012 -/* 087670 80086A70 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 -/* 087674 80086A74 3C01800F */ lui $at, %hi(D_800E8414) # $at, 0x800f -/* 087678 80086A78 3C078012 */ lui $a3, %hi(D_80126BEC) # $a3, 0x8012 -/* 08767C 80086A7C 3C068012 */ lui $a2, %hi(D_80126A00) # $a2, 0x8012 -/* 087680 80086A80 3C058012 */ lui $a1, %hi(D_80126BDC) # $a1, 0x8012 -/* 087684 80086A84 C4308414 */ lwc1 $f16, %lo(D_800E8414)($at) -/* 087688 80086A88 8C6363E0 */ lw $v1, %lo(D_801263E0)($v1) -/* 08768C 80086A8C 8C426A08 */ lw $v0, %lo(D_80126A08)($v0) -/* 087690 80086A90 24A56BDC */ addiu $a1, %lo(D_80126BDC) # addiu $a1, $a1, 0x6bdc -/* 087694 80086A94 24C66A00 */ addiu $a2, %lo(D_80126A00) # addiu $a2, $a2, 0x6a00 -/* 087698 80086A98 24E76BEC */ addiu $a3, %lo(D_80126BEC) # addiu $a3, $a3, 0x6bec -.L80086A9C: -/* 08769C 80086A9C 18400007 */ blez $v0, .L80086ABC -/* 0876A0 80086AA0 2484FFFF */ addiu $a0, $a0, -1 -/* 0876A4 80086AA4 C4AE0000 */ lwc1 $f14, ($a1) -/* 0876A8 80086AA8 00000000 */ nop -/* 0876AC 80086AAC 460E0301 */ sub.s $f12, $f0, $f14 -/* 0876B0 80086AB0 460C8202 */ mul.s $f8, $f16, $f12 -/* 0876B4 80086AB4 46087280 */ add.s $f10, $f14, $f8 -/* 0876B8 80086AB8 E4AA0000 */ swc1 $f10, ($a1) -.L80086ABC: -/* 0876BC 80086ABC 1860000B */ blez $v1, .L80086AEC -/* 0876C0 80086AC0 00000000 */ nop -/* 0876C4 80086AC4 8CD80000 */ lw $t8, ($a2) -/* 0876C8 80086AC8 00000000 */ nop -/* 0876CC 80086ACC 1B000007 */ blez $t8, .L80086AEC -/* 0876D0 80086AD0 00000000 */ nop -/* 0876D4 80086AD4 C4EE0000 */ lwc1 $f14, ($a3) -/* 0876D8 80086AD8 00000000 */ nop -/* 0876DC 80086ADC 460E1301 */ sub.s $f12, $f2, $f14 -/* 0876E0 80086AE0 460C8482 */ mul.s $f18, $f16, $f12 -/* 0876E4 80086AE4 46127100 */ add.s $f4, $f14, $f18 -/* 0876E8 80086AE8 E4E40000 */ swc1 $f4, ($a3) -.L80086AEC: -/* 0876EC 80086AEC 1C80FFEB */ bgtz $a0, .L80086A9C -/* 0876F0 80086AF0 00000000 */ nop -.L80086AF4: -/* 0876F4 80086AF4 03E00008 */ jr $ra -/* 0876F8 80086AF8 00000000 */ nop - diff --git a/asm/non_matchings/menu/func_80086AFC.s b/asm/non_matchings/menu/func_80086AFC.s index cef7c622..447528df 100644 --- a/asm/non_matchings/menu/func_80086AFC.s +++ b/asm/non_matchings/menu/func_80086AFC.s @@ -105,7 +105,7 @@ glabel L80086B54 /* 08787C 80086C7C ADEB0050 */ sw $t3, 0x50($t7) .L80086C80: /* 087880 80086C80 90640006 */ lbu $a0, 6($v1) -/* 087884 80086C84 0C01CFD7 */ jal func_80073F5C +/* 087884 80086C84 0C01CFD7 */ jal write_game_data_to_controller_pak /* 087888 80086C88 00C02825 */ move $a1, $a2 /* 08788C 80086C8C 1000014E */ b .L800871C8 /* 087890 80086C90 AFA20038 */ sw $v0, 0x38($sp) @@ -145,7 +145,7 @@ glabel L80086CDC /* 087910 80086D10 1441012E */ bne $v0, $at, .L800871CC /* 087914 80086D14 8FBF0014 */ lw $ra, 0x14($sp) /* 087918 80086D18 90640006 */ lbu $a0, 6($v1) -/* 08791C 80086D1C 0C01D052 */ jal func_80074148 +/* 08791C 80086D1C 0C01D052 */ jal write_time_data_to_controller_pak /* 087920 80086D20 00C02825 */ move $a1, $a2 /* 087924 80086D24 10000128 */ b .L800871C8 /* 087928 80086D28 AFA20038 */ sw $v0, 0x38($sp) @@ -156,7 +156,7 @@ glabel L80086CDC /* 087938 80086D38 00000000 */ nop /* 08793C 80086D3C 3C0500FF */ lui $a1, (0x00FFFFF0 >> 16) # lui $a1, 0xff /* 087940 80086D40 34A5FFF0 */ ori $a1, (0x00FFFFF0 & 0xFFFF) # ori $a1, $a1, 0xfff0 -/* 087944 80086D44 0C027AAF */ jal func_8009EABC +/* 087944 80086D44 0C027AAF */ jal unset_eeprom_settings_value /* 087948 80086D48 24040000 */ li $a0, 0 /* 08794C 80086D4C 1000011F */ b .L800871CC /* 087950 80086D50 8FBF0014 */ lw $ra, 0x14($sp) @@ -182,7 +182,7 @@ glabel L80086D54 .L80086D9C: /* 08799C 80086D9C 90E40006 */ lbu $a0, 6($a3) /* 0879A0 80086DA0 8CE50008 */ lw $a1, 8($a3) -/* 0879A4 80086DA4 0C01CF87 */ jal func_80073E1C +/* 0879A4 80086DA4 0C01CF87 */ jal read_game_data_from_controller_pak /* 0879A8 80086DA8 AFA60028 */ sw $a2, 0x28($sp) /* 0879AC 80086DAC 8FA60028 */ lw $a2, 0x28($sp) /* 0879B0 80086DB0 AFA20038 */ sw $v0, 0x38($sp) @@ -274,7 +274,7 @@ glabel L80086D54 /* 087B00 80086F00 8C66000C */ lw $a2, 0xc($v1) /* 087B04 80086F04 90E40006 */ lbu $a0, 6($a3) /* 087B08 80086F08 8CE50008 */ lw $a1, 8($a3) -/* 087B0C 80086F0C 0C01CF87 */ jal func_80073E1C +/* 087B0C 80086F0C 0C01CF87 */ jal read_game_data_from_controller_pak /* 087B10 80086F10 00000000 */ nop /* 087B14 80086F14 3C038012 */ lui $v1, %hi(D_80126530) # $v1, 0x8012 /* 087B18 80086F18 3C088012 */ lui $t0, %hi(D_80126A04) # $t0, 0x8012 @@ -290,14 +290,14 @@ glabel L80086D54 /* 087B40 80086F40 01AE5821 */ addu $t3, $t5, $t6 /* 087B44 80086F44 91640006 */ lbu $a0, 6($t3) /* 087B48 80086F48 8C65000C */ lw $a1, 0xc($v1) -/* 087B4C 80086F4C 0C01CFD7 */ jal func_80073F5C +/* 087B4C 80086F4C 0C01CFD7 */ jal write_game_data_to_controller_pak /* 087B50 80086F50 00000000 */ nop /* 087B54 80086F54 1000009C */ b .L800871C8 /* 087B58 80086F58 AFA20038 */ sw $v0, 0x38($sp) .L80086F5C: /* 087B5C 80086F5C 90E40006 */ lbu $a0, 6($a3) /* 087B60 80086F60 90E50007 */ lbu $a1, 7($a3) -/* 087B64 80086F64 0C01D8B2 */ jal func_800762C8 +/* 087B64 80086F64 0C01D8B2 */ jal delete_file /* 087B68 80086F68 00000000 */ nop /* 087B6C 80086F6C 10000096 */ b .L800871C8 /* 087B70 80086F70 AFA20038 */ sw $v0, 0x38($sp) @@ -343,13 +343,13 @@ glabel L80086F74 /* 087BFC 80086FFC 8FBF0014 */ lw $ra, 0x14($sp) .L80087000: /* 087C00 80087000 90E40006 */ lbu $a0, 6($a3) -/* 087C04 80087004 0C01D006 */ jal func_80074018 +/* 087C04 80087004 0C01D006 */ jal read_time_data_from_controller_pak /* 087C08 80087008 27A5002C */ addiu $a1, $sp, 0x2c /* 087C0C 8008700C 1000006E */ b .L800871C8 /* 087C10 80087010 AFA20038 */ sw $v0, 0x38($sp) .L80087014: /* 087C14 80087014 90E40006 */ lbu $a0, 6($a3) -/* 087C18 80087018 0C01D006 */ jal func_80074018 +/* 087C18 80087018 0C01D006 */ jal read_time_data_from_controller_pak /* 087C1C 8008701C AFA60028 */ sw $a2, 0x28($sp) /* 087C20 80087020 8FA60028 */ lw $a2, 0x28($sp) /* 087C24 80087024 3C088012 */ lui $t0, %hi(D_80126A04) # $t0, 0x8012 @@ -363,7 +363,7 @@ glabel L80086F74 /* 087C44 80087044 000FC900 */ sll $t9, $t7, 4 /* 087C48 80087048 0159C021 */ addu $t8, $t2, $t9 /* 087C4C 8008704C 93040006 */ lbu $a0, 6($t8) -/* 087C50 80087050 0C01D052 */ jal func_80074148 +/* 087C50 80087050 0C01D052 */ jal write_time_data_to_controller_pak /* 087C54 80087054 00C02825 */ move $a1, $a2 /* 087C58 80087058 AFA20038 */ sw $v0, 0x38($sp) .L8008705C: @@ -374,7 +374,7 @@ glabel L80086F74 .L8008706C: /* 087C6C 8008706C 90E40006 */ lbu $a0, 6($a3) /* 087C70 80087070 90E50007 */ lbu $a1, 7($a3) -/* 087C74 80087074 0C01D8B2 */ jal func_800762C8 +/* 087C74 80087074 0C01D8B2 */ jal delete_file /* 087C78 80087078 00000000 */ nop /* 087C7C 8008707C 10000052 */ b .L800871C8 /* 087C80 80087080 AFA20038 */ sw $v0, 0x38($sp) @@ -405,14 +405,14 @@ glabel L80087084 /* 087CDC 800870DC 90E40006 */ lbu $a0, 6($a3) /* 087CE0 800870E0 90E50007 */ lbu $a1, 7($a3) /* 087CE4 800870E4 90660006 */ lbu $a2, 6($v1) -/* 087CE8 800870E8 0C01D8E2 */ jal func_80076388 +/* 087CE8 800870E8 0C01D8E2 */ jal copy_controller_pak_data /* 087CEC 800870EC 00000000 */ nop /* 087CF0 800870F0 10000035 */ b .L800871C8 /* 087CF4 800870F4 AFA20038 */ sw $v0, 0x38($sp) .L800870F8: /* 087CF8 800870F8 90E40006 */ lbu $a0, 6($a3) /* 087CFC 800870FC 90E50007 */ lbu $a1, 7($a3) -/* 087D00 80087100 0C01D8B2 */ jal func_800762C8 +/* 087D00 80087100 0C01D8B2 */ jal delete_file /* 087D04 80087104 00000000 */ nop /* 087D08 80087108 1000002F */ b .L800871C8 /* 087D0C 8008710C AFA20038 */ sw $v0, 0x38($sp) @@ -431,7 +431,7 @@ glabel L80087110 /* 087D3C 8008713C 8FBF0014 */ lw $ra, 0x14($sp) /* 087D40 80087140 90E40006 */ lbu $a0, 6($a3) /* 087D44 80087144 90E50007 */ lbu $a1, 7($a3) -/* 087D48 80087148 0C01D8B2 */ jal func_800762C8 +/* 087D48 80087148 0C01D8B2 */ jal delete_file /* 087D4C 8008714C 00000000 */ nop /* 087D50 80087150 1000001D */ b .L800871C8 /* 087D54 80087154 AFA20038 */ sw $v0, 0x38($sp) @@ -449,7 +449,7 @@ glabel L80087158 /* 087D80 80087180 15410011 */ bne $t2, $at, .L800871C8 /* 087D84 80087184 24040000 */ li $a0, 0 /* 087D88 80087188 3C0500FF */ lui $a1, (0x00FFFFF3 >> 16) # lui $a1, 0xff -/* 087D8C 8008718C 0C027AAF */ jal func_8009EABC +/* 087D8C 8008718C 0C027AAF */ jal unset_eeprom_settings_value /* 087D90 80087190 34A5FFF3 */ ori $a1, (0x00FFFFF3 & 0xFFFF) # ori $a1, $a1, 0xfff3 /* 087D94 80087194 3C03800E */ lui $v1, %hi(gActiveMagicCodes) # $v1, 0x800e /* 087D98 80087198 3C05800E */ lui $a1, %hi(gUnlockedMagicCodes) # $a1, 0x800e diff --git a/asm/non_matchings/menu/func_800871D8.s b/asm/non_matchings/menu/func_800871D8.s index 91c02c01..41db8cd4 100644 --- a/asm/non_matchings/menu/func_800871D8.s +++ b/asm/non_matchings/menu/func_800871D8.s @@ -199,5 +199,4 @@ glabel func_800871D8 /* 0880C0 800874C0 352A0008 */ ori $t2, $t1, 8 /* 0880C4 800874C4 AC4A0000 */ sw $t2, ($v0) /* 0880C8 800874C8 03E00008 */ jr $ra -/* 0880CC 800874CC 27BD0038 */ addiu $sp, $sp, 0x38 - +/* 0880CC 800874CC 27BD0038 */ addiu $sp, $sp, 0x38 \ No newline at end of file diff --git a/asm/non_matchings/menu/func_80087734.s b/asm/non_matchings/menu/func_80087734.s index 51220c5f..74a6fcdf 100644 --- a/asm/non_matchings/menu/func_80087734.s +++ b/asm/non_matchings/menu/func_80087734.s @@ -224,7 +224,7 @@ glabel L800879BC .L80087A2C: /* 08862C 80087A2C 3C04800E */ lui $a0, %hi(D_800DFAE0) # $a0, 0x800e /* 088630 80087A30 8C84FAE0 */ lw $a0, %lo(D_800DFAE0)($a0) -/* 088634 80087A34 0C01D771 */ jal func_80075DC4 +/* 088634 80087A34 0C01D771 */ jal reformat_controller_pak /* 088638 80087A38 AFA8001C */ sw $t0, 0x1c($sp) /* 08863C 80087A3C 8FA8001C */ lw $t0, 0x1c($sp) /* 088640 80087A40 24020004 */ li $v0, 4 @@ -240,7 +240,7 @@ glabel L800879BC /* 088664 80087A64 AC206A18 */ sw $zero, %lo(D_80126A18)($at) .L80087A68: /* 088668 80087A68 8C84FAE0 */ lw $a0, %lo(D_800DFAE0)($a0) -/* 08866C 80087A6C 0C01D74E */ jal func_80075D38 +/* 08866C 80087A6C 0C01D74E */ jal repair_controller_pak /* 088670 80087A70 AFA8001C */ sw $t0, 0x1c($sp) /* 088674 80087A74 8FA8001C */ lw $t0, 0x1c($sp) /* 088678 80087A78 24020004 */ li $v0, 4 diff --git a/asm/non_matchings/menu/func_80087F14.s b/asm/non_matchings/menu/func_80087F14.s index 54685ed2..4bf7fff1 100644 --- a/asm/non_matchings/menu/func_80087F14.s +++ b/asm/non_matchings/menu/func_80087F14.s @@ -9,10 +9,10 @@ glabel func_80087F14 /* 088B30 80087F30 AFB60038 */ sw $s6, 0x38($sp) /* 088B34 80087F34 AFB50034 */ sw $s5, 0x34($sp) /* 088B38 80087F38 AFB10024 */ sw $s1, 0x24($sp) -/* 088B3C 80087F3C 3C108012 */ lui $s0, %hi(D_80126A30) # $s0, 0x8012 -/* 088B40 80087F40 3C128012 */ lui $s2, %hi(D_80126A34) # $s2, 0x8012 -/* 088B44 80087F44 3C138012 */ lui $s3, %hi(D_80126A38) # $s3, 0x8012 -/* 088B48 80087F48 3C148012 */ lui $s4, %hi(D_80126A3C) # $s4, 0x8012 +/* 088B3C 80087F3C 3C108012 */ lui $s0, %hi(sControllerPakIssueNotFound) # $s0, 0x8012 +/* 088B40 80087F40 3C128012 */ lui $s2, %hi(sControllerPakFatalErrorFound) # $s2, 0x8012 +/* 088B44 80087F44 3C138012 */ lui $s3, %hi(sControllerPakNoFreeSpace) # $s3, 0x8012 +/* 088B48 80087F48 3C148012 */ lui $s4, %hi(sControllerPakBadData) # $s4, 0x8012 /* 088B4C 80087F4C AFBF0044 */ sw $ra, 0x44($sp) /* 088B50 80087F50 AFA40090 */ sw $a0, 0x90($sp) /* 088B54 80087F54 AFA50094 */ sw $a1, 0x94($sp) @@ -20,10 +20,10 @@ glabel func_80087F14 /* 088B5C 80087F5C 0000B825 */ move $s7, $zero /* 088B60 80087F60 00001825 */ move $v1, $zero /* 088B64 80087F64 0000F025 */ move $fp, $zero -/* 088B68 80087F68 26946A3C */ addiu $s4, %lo(D_80126A3C) # addiu $s4, $s4, 0x6a3c -/* 088B6C 80087F6C 26736A38 */ addiu $s3, %lo(D_80126A38) # addiu $s3, $s3, 0x6a38 -/* 088B70 80087F70 26526A34 */ addiu $s2, %lo(D_80126A34) # addiu $s2, $s2, 0x6a34 -/* 088B74 80087F74 26106A30 */ addiu $s0, %lo(D_80126A30) # addiu $s0, $s0, 0x6a30 +/* 088B68 80087F68 26946A3C */ addiu $s4, %lo(sControllerPakBadData) # addiu $s4, $s4, 0x6a3c +/* 088B6C 80087F6C 26736A38 */ addiu $s3, %lo(sControllerPakNoFreeSpace) # addiu $s3, $s3, 0x6a38 +/* 088B70 80087F70 26526A34 */ addiu $s2, %lo(sControllerPakFatalErrorFound) # addiu $s2, $s2, 0x6a34 +/* 088B74 80087F74 26106A30 */ addiu $s0, %lo(sControllerPakIssueNotFound) # addiu $s0, $s0, 0x6a30 /* 088B78 80087F78 00008825 */ move $s1, $zero /* 088B7C 80087F7C 24150001 */ li $s5, 1 .L80087F80: @@ -33,7 +33,7 @@ glabel func_80087F14 /* 088B8C 80087F8C 02202025 */ move $a0, $s1 /* 088B90 80087F90 27A50074 */ addiu $a1, $sp, 0x74 /* 088B94 80087F94 27A60070 */ addiu $a2, $sp, 0x70 -/* 088B98 80087F98 0C01D865 */ jal func_80076194 +/* 088B98 80087F98 0C01D865 */ jal get_free_space /* 088B9C 80087F9C AFA30064 */ sw $v1, 0x64($sp) /* 088BA0 80087FA0 8FA30064 */ lw $v1, 0x64($sp) /* 088BA4 80087FA4 14400012 */ bnez $v0, .L80087FF0 @@ -41,7 +41,7 @@ glabel func_80087F14 /* 088BAC 80087FAC 8FAE0074 */ lw $t6, 0x74($sp) /* 088BB0 80087FB0 A2150000 */ sb $s5, ($s0) /* 088BB4 80087FB4 11C00005 */ beqz $t6, .L80087FCC -/* 088BB8 80087FB8 3C188012 */ lui $t8, %hi(D_80126A60) # $t8, 0x8012 +/* 088BB8 80087FB8 3C188012 */ lui $t8, %hi(sControllerPakDataPresent) # $t8, 0x8012 /* 088BBC 80087FBC 8FAF0070 */ lw $t7, 0x70($sp) /* 088BC0 80087FC0 00000000 */ nop /* 088BC4 80087FC4 15E00008 */ bnez $t7, .L80087FE8 @@ -49,7 +49,7 @@ glabel func_80087F14 .L80087FCC: /* 088BCC 80087FCC A2750000 */ sb $s5, ($s3) /* 088BD0 80087FD0 0311C021 */ addu $t8, $t8, $s1 -/* 088BD4 80087FD4 93186A60 */ lbu $t8, %lo(D_80126A60)($t8) +/* 088BD4 80087FD4 93186A60 */ lbu $t8, %lo(sControllerPakDataPresent)($t8) /* 088BD8 80087FD8 00000000 */ nop /* 088BDC 80087FDC 17000002 */ bnez $t8, .L80087FE8 /* 088BE0 80087FE0 00000000 */ nop @@ -68,7 +68,7 @@ glabel func_80087F14 /* 088C08 80088008 15410007 */ bne $t2, $at, .L80088028 /* 088C0C 8008800C 02202025 */ move $a0, $s1 /* 088C10 80088010 AFA30064 */ sw $v1, 0x64($sp) -/* 088C14 80088014 0C01D74E */ jal func_80075D38 +/* 088C14 80088014 0C01D74E */ jal repair_controller_pak /* 088C18 80088018 AFAA0078 */ sw $t2, 0x78($sp) /* 088C1C 8008801C 8FA30064 */ lw $v1, 0x64($sp) /* 088C20 80088020 8FAA0078 */ lw $t2, 0x78($sp) @@ -99,13 +99,13 @@ glabel func_80087F14 /* 088C78 80088078 24020001 */ li $v0, 1 .L8008807C: /* 088C7C 8008807C 8FB90090 */ lw $t9, 0x90($sp) -/* 088C80 80088080 3C068012 */ lui $a2, %hi(D_80126AE0) # $a2, 0x8012 +/* 088C80 80088080 3C068012 */ lui $a2, %hi(sCurrentControllerPakAllFileNames) # $a2, 0x8012 /* 088C84 80088084 8F220000 */ lw $v0, ($t9) -/* 088C88 80088088 24C66AE0 */ addiu $a2, %lo(D_80126AE0) # addiu $a2, $a2, 0x6ae0 +/* 088C88 80088088 24C66AE0 */ addiu $a2, %lo(sCurrentControllerPakAllFileNames) # addiu $a2, $a2, 0x6ae0 /* 088C8C 8008808C 0441000F */ bgez $v0, .L800880CC /* 088C90 80088090 00408825 */ move $s1, $v0 -/* 088C94 80088094 3C0E8012 */ lui $t6, %hi(D_80126A30) # $t6, 0x8012 -/* 088C98 80088098 25CE6A30 */ addiu $t6, %lo(D_80126A30) # addiu $t6, $t6, 0x6a30 +/* 088C94 80088094 3C0E8012 */ lui $t6, %hi(sControllerPakIssueNotFound) # $t6, 0x8012 +/* 088C98 80088098 25CE6A30 */ addiu $t6, %lo(sControllerPakIssueNotFound) # addiu $t6, $t6, 0x6a30 /* 088C9C 8008809C 022E8021 */ addu $s0, $s1, $t6 .L800880A0: /* 088CA0 800880A0 26310001 */ addiu $s1, $s1, 1 @@ -121,15 +121,15 @@ glabel func_80087F14 /* 088CC4 800880C4 10000024 */ b .L80088158 /* 088CC8 800880C8 8FAF0090 */ lw $t7, 0x90($sp) .L800880CC: -/* 088CCC 800880CC 3C188012 */ lui $t8, %hi(D_80126A30) # $t8, 0x8012 +/* 088CCC 800880CC 3C188012 */ lui $t8, %hi(sControllerPakIssueNotFound) # $t8, 0x8012 /* 088CD0 800880D0 0302C021 */ addu $t8, $t8, $v0 -/* 088CD4 800880D4 93186A30 */ lbu $t8, %lo(D_80126A30)($t8) +/* 088CD4 800880D4 93186A30 */ lbu $t8, %lo(sControllerPakIssueNotFound)($t8) /* 088CD8 800880D8 8FB90094 */ lw $t9, 0x94($sp) /* 088CDC 800880DC 13000002 */ beqz $t8, .L800880E8 -/* 088CE0 800880E0 3C0E8012 */ lui $t6, %hi(D_80126A30) # $t6, 0x8012 +/* 088CE0 800880E0 3C0E8012 */ lui $t6, %hi(sControllerPakIssueNotFound) # $t6, 0x8012 /* 088CE4 800880E4 1B20000D */ blez $t9, .L8008811C .L800880E8: -/* 088CE8 800880E8 25CE6A30 */ addiu $t6, %lo(D_80126A30) # addiu $t6, $t6, 0x6a30 +/* 088CE8 800880E8 25CE6A30 */ addiu $t6, %lo(sControllerPakIssueNotFound) # addiu $t6, $t6, 0x6a30 /* 088CEC 800880EC 022E8021 */ addu $s0, $s1, $t6 .L800880F0: /* 088CF0 800880F0 26310001 */ addiu $s1, $s1, 1 @@ -146,9 +146,9 @@ glabel func_80087F14 /* 088D18 80088118 8FAF0090 */ lw $t7, 0x90($sp) .L8008811C: /* 088D1C 8008811C 8FB80094 */ lw $t8, 0x94($sp) -/* 088D20 80088120 3C198012 */ lui $t9, %hi(D_80126A30) # $t9, 0x8012 +/* 088D20 80088120 3C198012 */ lui $t9, %hi(sControllerPakIssueNotFound) # $t9, 0x8012 /* 088D24 80088124 0701000B */ bgez $t8, .L80088154 -/* 088D28 80088128 27396A30 */ addiu $t9, %lo(D_80126A30) # addiu $t9, $t9, 0x6a30 +/* 088D28 80088128 27396A30 */ addiu $t9, %lo(sControllerPakIssueNotFound) # addiu $t9, $t9, 0x6a30 /* 088D2C 8008812C 02398021 */ addu $s0, $s1, $t9 .L80088130: /* 088D30 80088130 2631FFFF */ addiu $s1, $s1, -1 @@ -164,27 +164,27 @@ glabel func_80087F14 .L80088154: /* 088D54 80088154 8FAF0090 */ lw $t7, 0x90($sp) .L80088158: -/* 088D58 80088158 3C188012 */ lui $t8, %hi(D_80126B70) # $t8, 0x8012 -/* 088D5C 8008815C 3C198012 */ lui $t9, %hi(D_80126B60) # $t9, 0x8012 -/* 088D60 80088160 27396B60 */ addiu $t9, %lo(D_80126B60) # addiu $t9, $t9, 0x6b60 -/* 088D64 80088164 27186B70 */ addiu $t8, %lo(D_80126B70) # addiu $t8, $t8, 0x6b70 -/* 088D68 80088168 3C078012 */ lui $a3, %hi(D_80126B20) # $a3, 0x8012 +/* 088D58 80088158 3C188012 */ lui $t8, %hi(sCurrentControllerPakAllFileSizes) # $t8, 0x8012 +/* 088D5C 8008815C 3C198012 */ lui $t9, %hi(sCurrentControllerPakAllFileTypes) # $t9, 0x8012 +/* 088D60 80088160 27396B60 */ addiu $t9, %lo(sCurrentControllerPakAllFileTypes) # addiu $t9, $t9, 0x6b60 +/* 088D64 80088164 27186B70 */ addiu $t8, %lo(sCurrentControllerPakAllFileSizes) # addiu $t8, $t8, 0x6b70 +/* 088D68 80088168 3C078012 */ lui $a3, %hi(sCurrentControllerPakAllFileExtensions) # $a3, 0x8012 /* 088D6C 8008816C ADF10000 */ sw $s1, ($t7) /* 088D70 80088170 AFB90014 */ sw $t9, 0x14($sp) /* 088D74 80088174 AFB80010 */ sw $t8, 0x10($sp) -/* 088D78 80088178 24E76B20 */ addiu $a3, %lo(D_80126B20) # addiu $a3, $a3, 0x6b20 -/* 088D7C 8008817C 0C01D798 */ jal func_80075E60 +/* 088D78 80088178 24E76B20 */ addiu $a3, %lo(sCurrentControllerPakAllFileExtensions) # addiu $a3, $a3, 0x6b20 +/* 088D7C 8008817C 0C01D798 */ jal get_controller_pak_file_list /* 088D80 80088180 02202025 */ move $a0, $s1 /* 088D84 80088184 1440005C */ bnez $v0, .L800882F8 /* 088D88 80088188 00405025 */ move $t2, $v0 -/* 088D8C 8008818C 3C098012 */ lui $t1, %hi(D_80126B70) # $t1, 0x8012 -/* 088D90 80088190 3C088012 */ lui $t0, %hi(D_80126AE0) # $t0, 0x8012 +/* 088D8C 8008818C 3C098012 */ lui $t1, %hi(sCurrentControllerPakAllFileSizes) # $t1, 0x8012 +/* 088D90 80088190 3C088012 */ lui $t0, %hi(sCurrentControllerPakAllFileNames) # $t0, 0x8012 /* 088D94 80088194 3C058012 */ lui $a1, %hi(D_80126AA0) # $a1, 0x8012 -/* 088D98 80088198 3C1F8012 */ lui $ra, %hi(D_80126AE0) # $ra, 0x8012 -/* 088D9C 8008819C 27FF6AE0 */ addiu $ra, %lo(D_80126AE0) # addiu $ra, $ra, 0x6ae0 +/* 088D98 80088198 3C1F8012 */ lui $ra, %hi(sCurrentControllerPakAllFileNames) # $ra, 0x8012 +/* 088D9C 8008819C 27FF6AE0 */ addiu $ra, %lo(sCurrentControllerPakAllFileNames) # addiu $ra, $ra, 0x6ae0 /* 088DA0 800881A0 24A56AA0 */ addiu $a1, %lo(D_80126AA0) # addiu $a1, $a1, 0x6aa0 -/* 088DA4 800881A4 25086AE0 */ addiu $t0, %lo(D_80126AE0) # addiu $t0, $t0, 0x6ae0 -/* 088DA8 800881A8 25296B70 */ addiu $t1, %lo(D_80126B70) # addiu $t1, $t1, 0x6b70 +/* 088DA4 800881A4 25086AE0 */ addiu $t0, %lo(sCurrentControllerPakAllFileNames) # addiu $t0, $t0, 0x6ae0 +/* 088DA8 800881A8 25296B70 */ addiu $t1, %lo(sCurrentControllerPakAllFileSizes) # addiu $t1, $t1, 0x6b70 /* 088DAC 800881AC 00005825 */ move $t3, $zero /* 088DB0 800881B0 240D002D */ li $t5, 45 /* 088DB4 800881B4 240C002E */ li $t4, 46 @@ -196,8 +196,8 @@ glabel func_80087F14 /* 088DC8 800881C8 10E00030 */ beqz $a3, .L8008828C /* 088DCC 800881CC 00002025 */ move $a0, $zero /* 088DD0 800881D0 90F90000 */ lbu $t9, ($a3) -/* 088DD4 800881D4 3C188012 */ lui $t8, %hi(D_80126B20) # $t8, 0x8012 -/* 088DD8 800881D8 27186B20 */ addiu $t8, %lo(D_80126B20) # addiu $t8, $t8, 0x6b20 +/* 088DD4 800881D4 3C188012 */ lui $t8, %hi(sCurrentControllerPakAllFileExtensions) # $t8, 0x8012 +/* 088DD8 800881D8 27186B20 */ addiu $t8, %lo(sCurrentControllerPakAllFileExtensions) # addiu $t8, $t8, 0x6b20 /* 088DDC 800881DC 00001025 */ move $v0, $zero /* 088DE0 800881E0 1320000D */ beqz $t9, .L80088218 /* 088DE4 800881E4 01783021 */ addu $a2, $t3, $t8 @@ -264,11 +264,11 @@ glabel func_80087F14 /* 088EC4 800882C4 0C01D859 */ jal func_80076164 /* 088EC8 800882C8 AFAA0078 */ sw $t2, 0x78($sp) /* 088ECC 800882CC 8FAE0090 */ lw $t6, 0x90($sp) -/* 088ED0 800882D0 3C108012 */ lui $s0, %hi(D_80126BB0) # $s0, 0x8012 -/* 088ED4 800882D4 26106BB0 */ addiu $s0, %lo(D_80126BB0) # addiu $s0, $s0, 0x6bb0 +/* 088ED0 800882D0 3C108012 */ lui $s0, %hi(sCurrentControllerPakFreeSpace) # $s0, 0x8012 +/* 088ED4 800882D4 26106BB0 */ addiu $s0, %lo(sCurrentControllerPakFreeSpace) # addiu $s0, $s0, 0x6bb0 /* 088ED8 800882D8 8DC40000 */ lw $a0, ($t6) /* 088EDC 800882DC 02002825 */ move $a1, $s0 -/* 088EE0 800882E0 0C01D865 */ jal func_80076194 +/* 088EE0 800882E0 0C01D865 */ jal get_free_space /* 088EE4 800882E4 00003025 */ move $a2, $zero /* 088EE8 800882E8 8E0F0000 */ lw $t7, ($s0) /* 088EEC 800882EC 8FAA0078 */ lw $t2, 0x78($sp) diff --git a/asm/non_matchings/menu/func_8008832C.s b/asm/non_matchings/menu/func_8008832C.s index 832f43c6..e0c6abc0 100644 --- a/asm/non_matchings/menu/func_8008832C.s +++ b/asm/non_matchings/menu/func_8008832C.s @@ -2,23 +2,23 @@ glabel func_8008832C /* 088F2C 8008832C 27BDFFF0 */ addiu $sp, $sp, -0x10 /* 088F30 80088330 AFB10008 */ sw $s1, 8($sp) /* 088F34 80088334 3C078012 */ lui $a3, %hi(D_80126BC8) # $a3, 0x8012 -/* 088F38 80088338 3C0E8012 */ lui $t6, %hi(D_80126A34) # $t6, 0x8012 +/* 088F38 80088338 3C0E8012 */ lui $t6, %hi(sControllerPakFatalErrorFound) # $t6, 0x8012 /* 088F3C 8008833C 24E76BC8 */ addiu $a3, %lo(D_80126BC8) # addiu $a3, $a3, 0x6bc8 /* 088F40 80088340 AFB2000C */ sw $s2, 0xc($sp) /* 088F44 80088344 AFB00004 */ sw $s0, 4($sp) -/* 088F48 80088348 25CE6A34 */ addiu $t6, %lo(D_80126A34) # addiu $t6, $t6, 0x6a34 -/* 088F4C 8008834C 3C118012 */ lui $s1, %hi(D_80126A3C) # $s1, 0x8012 -/* 088F50 80088350 3C0C8012 */ lui $t4, %hi(D_80126A60) # $t4, 0x8012 -/* 088F54 80088354 3C0B8012 */ lui $t3, %hi(D_80126A38) # $t3, 0x8012 +/* 088F48 80088348 25CE6A34 */ addiu $t6, %lo(sControllerPakFatalErrorFound) # addiu $t6, $t6, 0x6a34 +/* 088F4C 8008834C 3C118012 */ lui $s1, %hi(sControllerPakBadData) # $s1, 0x8012 +/* 088F50 80088350 3C0C8012 */ lui $t4, %hi(sControllerPakDataPresent) # $t4, 0x8012 +/* 088F54 80088354 3C0B8012 */ lui $t3, %hi(sControllerPakNoFreeSpace) # $t3, 0x8012 /* 088F58 80088358 3C09800E */ lui $t1, %hi(gMenuText) # $t1, 0x800e /* 088F5C 8008835C 3C08800E */ lui $t0, %hi(D_800DFCB4) # $t0, 0x800e /* 088F60 80088360 00001025 */ move $v0, $zero /* 088F64 80088364 ACE00000 */ sw $zero, ($a3) /* 088F68 80088368 2508FCB4 */ addiu $t0, %lo(D_800DFCB4) # addiu $t0, $t0, -0x34c /* 088F6C 8008836C 2529F4A0 */ addiu $t1, %lo(gMenuText) # addiu $t1, $t1, -0xb60 -/* 088F70 80088370 256B6A38 */ addiu $t3, %lo(D_80126A38) # addiu $t3, $t3, 0x6a38 -/* 088F74 80088374 258C6A60 */ addiu $t4, %lo(D_80126A60) # addiu $t4, $t4, 0x6a60 -/* 088F78 80088378 26316A3C */ addiu $s1, %lo(D_80126A3C) # addiu $s1, $s1, 0x6a3c +/* 088F70 80088370 256B6A38 */ addiu $t3, %lo(sControllerPakNoFreeSpace) # addiu $t3, $t3, 0x6a38 +/* 088F74 80088374 258C6A60 */ addiu $t4, %lo(sControllerPakDataPresent) # addiu $t4, $t4, 0x6a60 +/* 088F78 80088378 26316A3C */ addiu $s1, %lo(sControllerPakBadData) # addiu $s1, $s1, 0x6a3c /* 088F7C 8008837C 000E2021 */ addu $a0, $zero, $t6 /* 088F80 80088380 24100002 */ li $s0, 2 /* 088F84 80088384 24120003 */ li $s2, 3 diff --git a/asm/non_matchings/menu/func_80088938.s b/asm/non_matchings/menu/func_80088938.s index 1690ff75..79b0a784 100644 --- a/asm/non_matchings/menu/func_80088938.s +++ b/asm/non_matchings/menu/func_80088938.s @@ -141,8 +141,8 @@ glabel func_80088938 /* 089754 80088B54 0C03145A */ jal render_dialogue_text /* 089758 80088B58 24060002 */ li $a2, 2 /* 08975C 80088B5C 8EF80000 */ lw $t8, ($s7) -/* 089760 80088B60 3C198012 */ lui $t9, %hi(D_80126BB0) # $t9, 0x8012 -/* 089764 80088B64 8F396BB0 */ lw $t9, %lo(D_80126BB0)($t9) +/* 089760 80088B60 3C198012 */ lui $t9, %hi(sCurrentControllerPakFreeSpace) # $t9, 0x8012 +/* 089764 80088B64 8F396BB0 */ lw $t9, %lo(sCurrentControllerPakFreeSpace)($t9) /* 089768 80088B68 8F0701C8 */ lw $a3, 0x1c8($t8) /* 08976C 80088B6C 24080004 */ li $t0, 4 /* 089770 80088B70 AFA80014 */ sw $t0, 0x14($sp) @@ -251,11 +251,11 @@ glabel func_80088938 /* 0898FC 80088CFC 3C108012 */ lui $s0, %hi(D_80126AA0) # $s0, 0x8012 /* 089900 80088D00 01B11821 */ addu $v1, $t5, $s1 /* 089904 80088D04 00031080 */ sll $v0, $v1, 2 -/* 089908 80088D08 3C138012 */ lui $s3, %hi(D_80126B70) # $s3, 0x8012 +/* 089908 80088D08 3C138012 */ lui $s3, %hi(sCurrentControllerPakAllFileSizes) # $s3, 0x8012 /* 08990C 80088D0C 02028021 */ addu $s0, $s0, $v0 /* 089910 80088D10 02629821 */ addu $s3, $s3, $v0 /* 089914 80088D14 8E106AA0 */ lw $s0, %lo(D_80126AA0)($s0) -/* 089918 80088D18 8E736B70 */ lw $s3, %lo(D_80126B70)($s3) +/* 089918 80088D18 8E736B70 */ lw $s3, %lo(sCurrentControllerPakAllFileSizes)($s3) /* 08991C 80088D1C 00000000 */ nop .L80088D20: /* 089920 80088D20 246E0001 */ addiu $t6, $v1, 1 diff --git a/asm/non_matchings/menu/func_800890AC.s b/asm/non_matchings/menu/func_800890AC.s index 13cd5c84..4780bba6 100644 --- a/asm/non_matchings/menu/func_800890AC.s +++ b/asm/non_matchings/menu/func_800890AC.s @@ -118,7 +118,7 @@ glabel func_800890AC /* 089E68 80089268 3C048012 */ lui $a0, %hi(D_80126A68) # $a0, 0x8012 /* 089E6C 8008926C 8C846A68 */ lw $a0, %lo(D_80126A68)($a0) /* 089E70 80089270 8D250000 */ lw $a1, ($t1) -/* 089E74 80089274 0C01D8B2 */ jal func_800762C8 +/* 089E74 80089274 0C01D8B2 */ jal delete_file /* 089E78 80089278 AFA7003C */ sw $a3, 0x3c($sp) /* 089E7C 8008927C 8FA7003C */ lw $a3, 0x3c($sp) /* 089E80 80089280 1040000C */ beqz $v0, .L800892B4 @@ -236,9 +236,9 @@ glabel func_800890AC /* 08A010 80089410 AFB80034 */ sw $t8, 0x34($sp) .L80089414: /* 08A014 80089414 10400013 */ beqz $v0, .L80089464 -/* 08A018 80089418 3C028012 */ lui $v0, %hi(D_80126B60) # $v0, 0x8012 +/* 08A018 80089418 3C028012 */ lui $v0, %hi(sCurrentControllerPakAllFileTypes) # $v0, 0x8012 /* 08A01C 8008941C 00431021 */ addu $v0, $v0, $v1 -/* 08A020 80089420 90426B60 */ lbu $v0, %lo(D_80126B60)($v0) +/* 08A020 80089420 90426B60 */ lbu $v0, %lo(sCurrentControllerPakAllFileTypes)($v0) /* 08A024 80089424 00000000 */ nop /* 08A028 80089428 28410003 */ slti $at, $v0, 3 /* 08A02C 8008942C 1420000A */ bnez $at, .L80089458 diff --git a/asm/non_matchings/menu/func_8008FA54.s b/asm/non_matchings/menu/func_8008FA54.s index eef02572..1c4b4a69 100644 --- a/asm/non_matchings/menu/func_8008FA54.s +++ b/asm/non_matchings/menu/func_8008FA54.s @@ -197,7 +197,7 @@ glabel func_8008FA54 /* 090924 8008FD24 E7A20010 */ swc1 $f2, 0x10($sp) /* 090928 8008FD28 E7A00014 */ swc1 $f0, 0x14($sp) /* 09092C 8008FD2C E7A00054 */ swc1 $f0, 0x54($sp) -/* 090930 8008FD30 0C01E340 */ jal func_80078D00 +/* 090930 8008FD30 0C01E340 */ jal render_texture_rectangle_scaled /* 090934 8008FD34 E7A20058 */ swc1 $f2, 0x58($sp) /* 090938 8008FD38 C7A00054 */ lwc1 $f0, 0x54($sp) /* 09093C 8008FD3C C7A20058 */ lwc1 $f2, 0x58($sp) @@ -222,7 +222,7 @@ glabel func_8008FA54 /* 090984 8008FD84 AFAC0018 */ sw $t4, 0x18($sp) /* 090988 8008FD88 E7A20010 */ swc1 $f2, 0x10($sp) /* 09098C 8008FD8C E7A00014 */ swc1 $f0, 0x14($sp) -/* 090990 8008FD90 0C01E340 */ jal func_80078D00 +/* 090990 8008FD90 0C01E340 */ jal render_texture_rectangle_scaled /* 090994 8008FD94 AFA0001C */ sw $zero, 0x1c($sp) .L8008FD98: /* 090998 8008FD98 0C01ECF4 */ jal func_8007B3D0 diff --git a/asm/non_matchings/menu/func_80099E8C.s b/asm/non_matchings/menu/func_80099E8C.s index 95fd3a3f..d86ca3c8 100644 --- a/asm/non_matchings/menu/func_80099E8C.s +++ b/asm/non_matchings/menu/func_80099E8C.s @@ -206,7 +206,7 @@ glabel func_80099E8C /* 09AD80 8009A180 00008025 */ move $s0, $zero /* 09AD84 8009A184 02E02025 */ move $a0, $s7 /* 09AD88 8009A188 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 09AD8C 8009A18C 0C01E340 */ jal func_80078D00 +/* 09AD8C 8009A18C 0C01E340 */ jal render_texture_rectangle_scaled /* 09AD90 8009A190 E7B00014 */ swc1 $f16, 0x14($sp) /* 09AD94 8009A194 240A0034 */ li $t2, 52 /* 09AD98 8009A198 240B0020 */ li $t3, 32 @@ -340,7 +340,7 @@ glabel func_80099E8C /* 09AF84 8009A384 44069000 */ mfc1 $a2, $f18 /* 09AF88 8009A388 AFA0001C */ sw $zero, 0x1c($sp) /* 09AF8C 8009A38C E7A00010 */ swc1 $f0, 0x10($sp) -/* 09AF90 8009A390 0C01E340 */ jal func_80078D00 +/* 09AF90 8009A390 0C01E340 */ jal render_texture_rectangle_scaled /* 09AF94 8009A394 E7A00014 */ swc1 $f0, 0x14($sp) /* 09AF98 8009A398 0C01ECF4 */ jal func_8007B3D0 /* 09AF9C 8009A39C 02E02025 */ move $a0, $s7 diff --git a/asm/non_matchings/menu/load_menu_text.s b/asm/non_matchings/menu/load_menu_text.s index ece35e70..02572835 100644 --- a/asm/non_matchings/menu/load_menu_text.s +++ b/asm/non_matchings/menu/load_menu_text.s @@ -126,7 +126,7 @@ glabel load_menu_text /* 0806D0 8007FAD0 00000000 */ nop /* 0806D4 8007FAD4 AD2B0114 */ sw $t3, 0x114($t1) /* 0806D8 8007FAD8 8C8C007C */ lw $t4, 0x7c($a0) -/* 0806DC 8007FADC 3C0B8012 */ lui $t3, %hi(D_80126448+4) # $t3, 0x8012 +/* 0806DC 8007FADC 3C0B8012 */ lui $t3, %hi(sEepromSettings+4) # $t3, 0x8012 /* 0806E0 8007FAE0 AD2C0134 */ sw $t4, 0x134($t1) /* 0806E4 8007FAE4 8C8D0080 */ lw $t5, 0x80($a0) /* 0806E8 8007FAE8 00000000 */ nop @@ -143,7 +143,7 @@ glabel load_menu_text /* 080714 8007FB14 8C990088 */ lw $t9, 0x88($a0) /* 080718 8007FB18 00000000 */ nop /* 08071C 8007FB1C AC590000 */ sw $t9, ($v0) -/* 080720 8007FB20 8D6B644C */ lw $t3, %lo(D_80126448+4)($t3) +/* 080720 8007FB20 8D6B644C */ lw $t3, %lo(sEepromSettings+4)($t3) /* 080724 8007FB24 00000000 */ nop /* 080728 8007FB28 01616824 */ and $t5, $t3, $at /* 08072C 8007FB2C 11A00004 */ beqz $t5, .L8007FB40 diff --git a/asm/non_matchings/menu/menu_credits_loop.s b/asm/non_matchings/menu/menu_credits_loop.s index e8e750a3..fec0b357 100644 --- a/asm/non_matchings/menu/menu_credits_loop.s +++ b/asm/non_matchings/menu/menu_credits_loop.s @@ -444,7 +444,7 @@ glabel menu_credits_loop /* 09C57C 8009B97C 0014C140 */ sll $t8, $s4, 5 /* 09C580 8009B980 03194821 */ addu $t1, $t8, $t9 # Setting D_800E1B50[1].source? Not sure why adding $t1 then -/* 09C584 8009B984 3C01800E */ lui $at, 0x800e +/* 09C584 8009B984 3C01800E */ lui $at, %hi(D_800E1B50+0x34) /* 09C588 8009B988 448A8000 */ mtc1 $t2, $f16 /* 09C58C 8009B98C 00290821 */ addu $at, $at, $t1 /* 09C590 8009B990 AC201B84 */ sw $zero, %lo(D_800E1B50+0x34)($at) diff --git a/asm/non_matchings/menu/menu_options_loop.s b/asm/non_matchings/menu/menu_options_loop.s index 76f449b5..daa7b7a9 100644 --- a/asm/non_matchings/menu/menu_options_loop.s +++ b/asm/non_matchings/menu/menu_options_loop.s @@ -147,8 +147,8 @@ glabel menu_options_loop /* 085174 80084574 14410028 */ bne $v0, $at, .L80084618 /* 085178 80084578 00000000 */ nop /* 08517C 8008457C 10E00026 */ beqz $a3, .L80084618 -/* 085180 80084580 3C0F8012 */ lui $t7, %hi(D_80126448+4) # $t7, 0x8012 -/* 085184 80084584 8DEF644C */ lw $t7, %lo(D_80126448+4)($t7) +/* 085180 80084580 3C0F8012 */ lui $t7, %hi(sEepromSettings+4) # $t7, 0x8012 +/* 085184 80084584 8DEF644C */ lw $t7, %lo(sEepromSettings+4)($t7) /* 085188 80084588 3C010200 */ lui $at, 0x200 /* 08518C 8008458C 01E1C824 */ and $t9, $t7, $at /* 085190 80084590 1320000F */ beqz $t9, .L800845D0 @@ -157,7 +157,7 @@ glabel menu_options_loop /* 08519C 8008459C 0C000741 */ jal func_80001D04 /* 0851A0 800845A0 00002825 */ move $a1, $zero /* 0851A4 800845A4 24040000 */ li $a0, 0 -/* 0851A8 800845A8 0C027AAF */ jal func_8009EABC +/* 0851A8 800845A8 0C027AAF */ jal unset_eeprom_settings_value /* 0851AC 800845AC 3C050200 */ lui $a1, 0x200 /* 0851B0 800845B0 0C030ABD */ jal func_800C2AF4 /* 0851B4 800845B4 00002025 */ move $a0, $zero @@ -171,7 +171,7 @@ glabel menu_options_loop /* 0851D0 800845D0 0C000741 */ jal func_80001D04 /* 0851D4 800845D4 00002825 */ move $a1, $zero /* 0851D8 800845D8 24040000 */ li $a0, 0 -/* 0851DC 800845DC 0C027A9E */ jal func_8009EA78 +/* 0851DC 800845DC 0C027A9E */ jal set_eeprom_settings_value /* 0851E0 800845E0 3C050200 */ lui $a1, 0x200 /* 0851E4 800845E4 0C030ABD */ jal func_800C2AF4 /* 0851E8 800845E8 24040001 */ li $a0, 1 diff --git a/asm/non_matchings/thread0_epc/func_800B71B0.s b/asm/non_matchings/thread0_epc/func_800B71B0.s index 24eb430f..37c1e005 100644 --- a/asm/non_matchings/thread0_epc/func_800B71B0.s +++ b/asm/non_matchings/thread0_epc/func_800B71B0.s @@ -168,7 +168,7 @@ glabel func_800B71B0 /* 0B8018 800B7418 24C68EDC */ addiu $a2, %lo(D_800E8EDC) # addiu $a2, $a2, -0x7124 /* 0B801C 800B741C 00002025 */ move $a0, $zero /* 0B8020 800B7420 2405FFFF */ li $a1, -1 -/* 0B8024 800B7424 0C01D9B5 */ jal func_800766D4 +/* 0B8024 800B7424 0C01D9B5 */ jal write_controller_pak_file /* 0B8028 800B7428 24E78EE4 */ addiu $a3, %lo(D_800E8EE4) # addiu $a3, $a3, -0x711c .L800B742C: /* 0B802C 800B742C 1000FFFF */ b .L800B742C diff --git a/asm/non_matchings/thread0_epc/func_800B7460.s b/asm/non_matchings/thread0_epc/func_800B7460.s index 484121ac..e878d873 100644 --- a/asm/non_matchings/thread0_epc/func_800B7460.s +++ b/asm/non_matchings/thread0_epc/func_800B7460.s @@ -150,7 +150,7 @@ glabel func_800B7460 /* 0B828C 800B768C 24C68EE8 */ addiu $a2, %lo(D_800E8EE8) # addiu $a2, $a2, -0x7118 /* 0B8290 800B7690 00002025 */ move $a0, $zero /* 0B8294 800B7694 2405FFFF */ li $a1, -1 -/* 0B8298 800B7698 0C01D9B5 */ jal func_800766D4 +/* 0B8298 800B7698 0C01D9B5 */ jal write_controller_pak_file /* 0B829C 800B769C 24E78EF0 */ addiu $a3, %lo(D_800E8EF0) # addiu $a3, $a3, -0x7110 .L800B76A0: /* 0B82A0 800B76A0 1000FFFF */ b .L800B76A0 diff --git a/asm/non_matchings/unknown_00BC20/func_8001B3C4.s b/asm/non_matchings/unknown_00BC20/func_8001B3C4.s index 745e4164..f736645f 100644 --- a/asm/non_matchings/unknown_00BC20/func_8001B3C4.s +++ b/asm/non_matchings/unknown_00BC20/func_8001B3C4.s @@ -37,9 +37,9 @@ glabel func_8001B3C4 /* 01C048 8001B448 240A0010 */ li $t2, 16 /* 01C04C 8001B44C 11200024 */ beqz $t1, .L8001B4E0 /* 01C050 8001B450 00CA2804 */ sllv $a1, $t2, $a2 -/* 01C054 8001B454 0C027A9E */ jal func_8009EA78 +/* 01C054 8001B454 0C027A9E */ jal set_eeprom_settings_value /* 01C058 8001B458 000527C3 */ sra $a0, $a1, 0x1f -/* 01C05C 8001B45C 0C027AC2 */ jal func_8009EB08 +/* 01C05C 8001B45C 0C027AC2 */ jal get_eeprom_settings /* 01C060 8001B460 00000000 */ nop /* 01C064 8001B464 3C0100FF */ lui $at, (0x00FFFFF0 >> 16) # lui $at, 0xff /* 01C068 8001B468 3421FFF0 */ ori $at, (0x00FFFFF0 & 0xFFFF) # ori $at, $at, 0xfff0 diff --git a/asm/non_matchings/unknown_00BC20/func_8001B4FC.s b/asm/non_matchings/unknown_00BC20/func_8001B4FC.s index adf4dc4f..59e3f811 100644 --- a/asm/non_matchings/unknown_00BC20/func_8001B4FC.s +++ b/asm/non_matchings/unknown_00BC20/func_8001B4FC.s @@ -58,7 +58,7 @@ glabel func_8001B4FC /* 01C1D0 8001B5D0 018B082A */ slt $at, $t4, $t3 /* 01C1D4 8001B5D4 14200015 */ bnez $at, .L8001B62C /* 01C1D8 8001B5D8 8FBF001C */ lw $ra, 0x1c($sp) -/* 01C1DC 8001B5DC 0C027AC2 */ jal func_8009EB08 +/* 01C1DC 8001B5DC 0C027AC2 */ jal get_eeprom_settings /* 01C1E0 8001B5E0 AFA6002C */ sw $a2, 0x2c($sp) /* 01C1E4 8001B5E4 8FA6002C */ lw $a2, 0x2c($sp) /* 01C1E8 8001B5E8 240E0010 */ li $t6, 16 diff --git a/asm/non_matchings/unknown_032760/func_800422F0.s b/asm/non_matchings/unknown_032760/func_800422F0.s index b98f8e69..cb7162a8 100644 --- a/asm/non_matchings/unknown_032760/func_800422F0.s +++ b/asm/non_matchings/unknown_032760/func_800422F0.s @@ -106,7 +106,7 @@ glabel L80042378 /* 043048 80042448 0C002556 */ jal func_80009558 /* 04304C 8004244C AFA00014 */ sw $zero, 0x14($sp) /* 043050 80042450 24040000 */ li $a0, 0 -/* 043054 80042454 0C027A9E */ jal func_8009EA78 +/* 043054 80042454 0C027A9E */ jal set_eeprom_settings_value /* 043058 80042458 24050002 */ li $a1, 2 /* 04305C 8004245C 0C0270B8 */ jal set_magic_code_flags /* 043060 80042460 24040002 */ li $a0, 2 @@ -377,7 +377,7 @@ glabel L800426B8 /* 04343C 8004283C 0C002556 */ jal func_80009558 /* 043440 80042840 24040174 */ li $a0, 372 /* 043444 80042844 24040000 */ li $a0, 0 -/* 043448 80042848 0C027A9E */ jal func_8009EA78 +/* 043448 80042848 0C027A9E */ jal set_eeprom_settings_value /* 04344C 8004284C 24050002 */ li $a1, 2 /* 043450 80042850 0C0270B8 */ jal set_magic_code_flags /* 043454 80042854 24040002 */ li $a0, 2 diff --git a/asm/non_matchings/unknown_05CEF0/func_8005CB68.s b/asm/non_matchings/unknown_05CEF0/func_8005CB68.s index a96ee099..c67db604 100644 --- a/asm/non_matchings/unknown_05CEF0/func_8005CB68.s +++ b/asm/non_matchings/unknown_05CEF0/func_8005CB68.s @@ -123,7 +123,7 @@ glabel func_8005CB68 /* 05D92C 8005CD2C 150B001A */ bne $t0, $t3, .L8005CD98 /* 05D930 8005CD30 2404FFF6 */ li $a0, -10 /* 05D934 8005CD34 24040000 */ li $a0, 0 -/* 05D938 8005CD38 0C027A9E */ jal func_8009EA78 +/* 05D938 8005CD38 0C027A9E */ jal set_eeprom_settings_value /* 05D93C 8005CD3C 24050001 */ li $a1, 1 /* 05D940 8005CD40 2404FFFE */ li $a0, -2 /* 05D944 8005CD44 00002825 */ move $a1, $zero diff --git a/asm/non_matchings/unknown_078050/func_80078D00.s b/asm/non_matchings/unknown_078050/render_texture_rectangle_scaled.s similarity index 99% rename from asm/non_matchings/unknown_078050/func_80078D00.s rename to asm/non_matchings/unknown_078050/render_texture_rectangle_scaled.s index 4f0d48f7..67eaa67a 100644 --- a/asm/non_matchings/unknown_078050/func_80078D00.s +++ b/asm/non_matchings/unknown_078050/render_texture_rectangle_scaled.s @@ -1,4 +1,4 @@ -glabel func_80078D00 +glabel render_texture_rectangle_scaled /* 079900 80078D00 27BDFF50 */ addiu $sp, $sp, -0xb0 /* 079904 80078D04 AFBF003C */ sw $ra, 0x3c($sp) /* 079908 80078D08 AFB20020 */ sw $s2, 0x20($sp) diff --git a/asm/non_matchings/unknown_09F8F0/func_800AA600.s b/asm/non_matchings/unknown_09F8F0/func_800AA600.s index 07132549..16013755 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800AA600.s +++ b/asm/non_matchings/unknown_09F8F0/func_800AA600.s @@ -305,7 +305,7 @@ glabel func_800AA600 /* 0AB65C 800AAA5C 24846CFC */ addiu $a0, %lo(D_80126CFC) # addiu $a0, $a0, 0x6cfc /* 0AB660 800AAA60 27A50088 */ addiu $a1, $sp, 0x88 /* 0AB664 800AAA64 E7B20010 */ swc1 $f18, 0x10($sp) -/* 0AB668 800AAA68 0C01E340 */ jal func_80078D00 +/* 0AB668 800AAA68 0C01E340 */ jal render_texture_rectangle_scaled /* 0AB66C 800AAA6C E7A80014 */ swc1 $f8, 0x14($sp) /* 0AB670 800AAA70 10000018 */ b .L800AAAD4 /* 0AB674 800AAA74 00000000 */ nop @@ -387,7 +387,7 @@ glabel func_800AA600 /* 0AB790 800AAB90 AFB80018 */ sw $t8, 0x18($sp) /* 0AB794 800AAB94 E7A00010 */ swc1 $f0, 0x10($sp) /* 0AB798 800AAB98 46204420 */ cvt.s.d $f16, $f8 -/* 0AB79C 800AAB9C 0C01E340 */ jal func_80078D00 +/* 0AB79C 800AAB9C 0C01E340 */ jal render_texture_rectangle_scaled /* 0AB7A0 800AABA0 E7B00014 */ swc1 $f16, 0x14($sp) /* 0AB7A4 800AABA4 100000D7 */ b .L800AAF04 /* 0AB7A8 800AABA8 86080006 */ lh $t0, 6($s0) @@ -513,7 +513,7 @@ glabel func_800AA600 /* 0AB97C 800AAD7C AFAF001C */ sw $t7, 0x1c($sp) /* 0AB980 800AAD80 AFAE0018 */ sw $t6, 0x18($sp) /* 0AB984 800AAD84 E7A00014 */ swc1 $f0, 0x14($sp) -/* 0AB988 800AAD88 0C01E340 */ jal func_80078D00 +/* 0AB988 800AAD88 0C01E340 */ jal render_texture_rectangle_scaled /* 0AB98C 800AAD8C E7A00010 */ swc1 $f0, 0x10($sp) /* 0AB990 800AAD90 3C048012 */ lui $a0, %hi(D_80126CFC) # $a0, 0x8012 /* 0AB994 800AAD94 0C01ECF4 */ jal func_8007B3D0 diff --git a/asm/non_matchings/unknown_09F8F0/func_800AD4B8.s b/asm/non_matchings/unknown_09F8F0/func_800AD4B8.s deleted file mode 100644 index 60553068..00000000 --- a/asm/non_matchings/unknown_09F8F0/func_800AD4B8.s +++ /dev/null @@ -1,110 +0,0 @@ -glabel func_800AD4B8 -/* 0AE0B8 800AD4B8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0AE0BC 800AD4BC AFBF0024 */ sw $ra, 0x24($sp) -/* 0AE0C0 800AD4C0 AFB2001C */ sw $s2, 0x1c($sp) -/* 0AE0C4 800AD4C4 00809025 */ move $s2, $a0 -/* 0AE0C8 800AD4C8 AFB30020 */ sw $s3, 0x20($sp) -/* 0AE0CC 800AD4CC AFB10018 */ sw $s1, 0x18($sp) -/* 0AE0D0 800AD4D0 0C019884 */ jal get_viewport_count -/* 0AE0D4 800AD4D4 AFB00014 */ sw $s0, 0x14($sp) -/* 0AE0D8 800AD4D8 14400058 */ bnez $v0, .L800AD63C -/* 0AE0DC 800AD4DC 3C0E800E */ lui $t6, %hi(D_800E2C5C) # $t6, 0x800e -/* 0AE0E0 800AD4E0 8DCE2C5C */ lw $t6, %lo(D_800E2C5C)($t6) -/* 0AE0E4 800AD4E4 3C03800E */ lui $v1, %hi(D_800E2C78) # $v1, 0x800e -/* 0AE0E8 800AD4E8 11C00054 */ beqz $t6, .L800AD63C -/* 0AE0EC 800AD4EC 24632C78 */ addiu $v1, %lo(D_800E2C78) # addiu $v1, $v1, 0x2c78 -/* 0AE0F0 800AD4F0 8C620000 */ lw $v0, ($v1) -/* 0AE0F4 800AD4F4 00000000 */ nop -/* 0AE0F8 800AD4F8 18400023 */ blez $v0, .L800AD588 -/* 0AE0FC 800AD4FC 0242082A */ slt $at, $s2, $v0 -/* 0AE100 800AD500 10200017 */ beqz $at, .L800AD560 -/* 0AE104 800AD504 3C04800E */ lui $a0, %hi(D_800E2C6C) # $a0, 0x800e -/* 0AE108 800AD508 00527823 */ subu $t7, $v0, $s2 -/* 0AE10C 800AD50C AC6F0000 */ sw $t7, ($v1) -/* 0AE110 800AD510 3C19800E */ lui $t9, %hi(D_800E2C64) # $t9, 0x800e -/* 0AE114 800AD514 8F392C64 */ lw $t9, %lo(D_800E2C64)($t9) -/* 0AE118 800AD518 3C10800E */ lui $s0, %hi(D_800E2C60) # $s0, 0x800e -/* 0AE11C 800AD51C 03320019 */ multu $t9, $s2 -/* 0AE120 800AD520 26102C60 */ addiu $s0, %lo(D_800E2C60) # addiu $s0, $s0, 0x2c60 -/* 0AE124 800AD524 8E180000 */ lw $t8, ($s0) -/* 0AE128 800AD528 3C0B800E */ lui $t3, %hi(D_800E2C70) # $t3, 0x800e -/* 0AE12C 800AD52C 3C04800E */ lui $a0, %hi(D_800E2C6C) # $a0, 0x800e -/* 0AE130 800AD530 24842C6C */ addiu $a0, %lo(D_800E2C6C) # addiu $a0, $a0, 0x2c6c -/* 0AE134 800AD534 8C8A0000 */ lw $t2, ($a0) -/* 0AE138 800AD538 00004012 */ mflo $t0 -/* 0AE13C 800AD53C 03084821 */ addu $t1, $t8, $t0 -/* 0AE140 800AD540 AE090000 */ sw $t1, ($s0) -/* 0AE144 800AD544 8D6B2C70 */ lw $t3, %lo(D_800E2C70)($t3) -/* 0AE148 800AD548 00000000 */ nop -/* 0AE14C 800AD54C 01720019 */ multu $t3, $s2 -/* 0AE150 800AD550 00006012 */ mflo $t4 -/* 0AE154 800AD554 014C6821 */ addu $t5, $t2, $t4 -/* 0AE158 800AD558 1000000B */ b .L800AD588 -/* 0AE15C 800AD55C AC8D0000 */ sw $t5, ($a0) -.L800AD560: -/* 0AE160 800AD560 AC600000 */ sw $zero, ($v1) -/* 0AE164 800AD564 3C0E800E */ lui $t6, %hi(D_800E2C68) # $t6, 0x800e -/* 0AE168 800AD568 8DCE2C68 */ lw $t6, %lo(D_800E2C68)($t6) -/* 0AE16C 800AD56C 3C10800E */ lui $s0, %hi(D_800E2C60) # $s0, 0x800e -/* 0AE170 800AD570 26102C60 */ addiu $s0, %lo(D_800E2C60) # addiu $s0, $s0, 0x2c60 -/* 0AE174 800AD574 3C0F800E */ lui $t7, %hi(D_800E2C74) # $t7, 0x800e -/* 0AE178 800AD578 AE0E0000 */ sw $t6, ($s0) -/* 0AE17C 800AD57C 8DEF2C74 */ lw $t7, %lo(D_800E2C74)($t7) -/* 0AE180 800AD580 24842C6C */ addiu $a0, $a0, %lo(D_800E2C6C) -/* 0AE184 800AD584 AC8F0000 */ sw $t7, ($a0) -.L800AD588: -/* 0AE188 800AD588 3C10800E */ lui $s0, %hi(D_800E2C60) # $s0, 0x800e -/* 0AE18C 800AD58C 26102C60 */ addiu $s0, %lo(D_800E2C60) # addiu $s0, $s0, 0x2c60 -/* 0AE190 800AD590 0C02B6F2 */ jal func_800ADBC8 -/* 0AE194 800AD594 02402025 */ move $a0, $s2 -/* 0AE198 800AD598 0C02B596 */ jal func_800AD658 -/* 0AE19C 800AD59C 02402025 */ move $a0, $s2 -/* 0AE1A0 800AD5A0 0C02B6AE */ jal func_800ADAB8 -/* 0AE1A4 800AD5A4 02402025 */ move $a0, $s2 -/* 0AE1A8 800AD5A8 8E190000 */ lw $t9, ($s0) -/* 0AE1AC 800AD5AC 3C138012 */ lui $s3, %hi(D_80127C0C) # $s3, 0x8012 -/* 0AE1B0 800AD5B0 2B210100 */ slti $at, $t9, 0x100 -/* 0AE1B4 800AD5B4 14200021 */ bnez $at, .L800AD63C -/* 0AE1B8 800AD5B8 26737C0C */ addiu $s3, %lo(D_80127C0C) # addiu $s3, $s3, 0x7c0c -/* 0AE1BC 800AD5BC 3C058012 */ lui $a1, %hi(D_80127C10) # $a1, 0x8012 -/* 0AE1C0 800AD5C0 24A57C10 */ addiu $a1, %lo(D_80127C10) # addiu $a1, $a1, 0x7c10 -/* 0AE1C4 800AD5C4 0C019FCB */ jal func_80067F2C -/* 0AE1C8 800AD5C8 02602025 */ move $a0, $s3 -/* 0AE1CC 800AD5CC 3C10800E */ lui $s0, %hi(D_800E2C2C) # $s0, 0x800e -/* 0AE1D0 800AD5D0 3C11800E */ lui $s1, %hi(D_800E2C5C) # $s1, 0x800e -/* 0AE1D4 800AD5D4 26312C5C */ addiu $s1, %lo(D_800E2C5C) # addiu $s1, $s1, 0x2c5c -/* 0AE1D8 800AD5D8 26102C2C */ addiu $s0, %lo(D_800E2C2C) # addiu $s0, $s0, 0x2c2c -/* 0AE1DC 800AD5DC 02002025 */ move $a0, $s0 -.L800AD5E0: -/* 0AE1E0 800AD5E0 0C02B72F */ jal func_800ADCBC -/* 0AE1E4 800AD5E4 02402825 */ move $a1, $s2 -/* 0AE1E8 800AD5E8 26100018 */ addiu $s0, $s0, 0x18 -/* 0AE1EC 800AD5EC 1611FFFC */ bne $s0, $s1, .L800AD5E0 -/* 0AE1F0 800AD5F0 02002025 */ move $a0, $s0 -/* 0AE1F4 800AD5F4 8E620000 */ lw $v0, ($s3) -/* 0AE1F8 800AD5F8 3C08FA00 */ lui $t0, 0xfa00 -/* 0AE1FC 800AD5FC 24580008 */ addiu $t8, $v0, 8 -/* 0AE200 800AD600 AE780000 */ sw $t8, ($s3) -/* 0AE204 800AD604 2409FFFF */ li $t1, -1 -/* 0AE208 800AD608 AC490004 */ sw $t1, 4($v0) -/* 0AE20C 800AD60C AC480000 */ sw $t0, ($v0) -/* 0AE210 800AD610 8E620000 */ lw $v0, ($s3) -/* 0AE214 800AD614 3C0AFB00 */ lui $t2, 0xfb00 -/* 0AE218 800AD618 244B0008 */ addiu $t3, $v0, 8 -/* 0AE21C 800AD61C AE6B0000 */ sw $t3, ($s3) -/* 0AE220 800AD620 240CFF00 */ li $t4, -256 -/* 0AE224 800AD624 02602025 */ move $a0, $s3 -/* 0AE228 800AD628 AC4C0004 */ sw $t4, 4($v0) -/* 0AE22C 800AD62C 0C01ECF4 */ jal func_8007B3D0 -/* 0AE230 800AD630 AC4A0000 */ sw $t2, ($v0) -/* 0AE234 800AD634 0C01A0AB */ jal func_800682AC -/* 0AE238 800AD638 02602025 */ move $a0, $s3 -.L800AD63C: -/* 0AE23C 800AD63C 8FBF0024 */ lw $ra, 0x24($sp) -/* 0AE240 800AD640 8FB00014 */ lw $s0, 0x14($sp) -/* 0AE244 800AD644 8FB10018 */ lw $s1, 0x18($sp) -/* 0AE248 800AD648 8FB2001C */ lw $s2, 0x1c($sp) -/* 0AE24C 800AD64C 8FB30020 */ lw $s3, 0x20($sp) -/* 0AE250 800AD650 03E00008 */ jr $ra -/* 0AE254 800AD654 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_09F8F0/func_800ADAB8.s b/asm/non_matchings/unknown_09F8F0/func_800ADAB8.s deleted file mode 100644 index e844ccbd..00000000 --- a/asm/non_matchings/unknown_09F8F0/func_800ADAB8.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_800ADAB8 -/* 0AE6B8 800ADAB8 3C06800E */ lui $a2, %hi(D_800E2C80) # $a2, 0x800e -/* 0AE6BC 800ADABC 24C62C80 */ addiu $a2, %lo(D_800E2C80) # addiu $a2, $a2, 0x2c80 -/* 0AE6C0 800ADAC0 8CC20000 */ lw $v0, ($a2) -/* 0AE6C4 800ADAC4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0AE6C8 800ADAC8 18400016 */ blez $v0, .L800ADB24 -/* 0AE6CC 800ADACC AFBF0014 */ sw $ra, 0x14($sp) -/* 0AE6D0 800ADAD0 00447023 */ subu $t6, $v0, $a0 -/* 0AE6D4 800ADAD4 1DC00038 */ bgtz $t6, .L800ADBB8 -/* 0AE6D8 800ADAD8 ACCE0000 */ sw $t6, ($a2) -/* 0AE6DC 800ADADC 3C18800E */ lui $t8, %hi(D_800E2C6C) # $t8, 0x800e -/* 0AE6E0 800ADAE0 8F182C6C */ lw $t8, %lo(D_800E2C6C)($t8) -/* 0AE6E4 800ADAE4 34018001 */ li $at, 32769 -/* 0AE6E8 800ADAE8 0301082A */ slt $at, $t8, $at -/* 0AE6EC 800ADAEC 14200008 */ bnez $at, .L800ADB10 -/* 0AE6F0 800ADAF0 24040027 */ li $a0, 39 -/* 0AE6F4 800ADAF4 0C030063 */ jal func_800C018C -/* 0AE6F8 800ADAF8 00000000 */ nop -/* 0AE6FC 800ADAFC 14400003 */ bnez $v0, .L800ADB0C -/* 0AE700 800ADB00 3C04800E */ lui $a0, %hi(D_800E2C98) # $a0, 0x800e -/* 0AE704 800ADB04 0C030076 */ jal func_800C01D8 -/* 0AE708 800ADB08 24842C98 */ addiu $a0, %lo(D_800E2C98) # addiu $a0, $a0, 0x2c98 -.L800ADB0C: -/* 0AE70C 800ADB0C 24040027 */ li $a0, 39 -.L800ADB10: -/* 0AE710 800ADB10 0C000741 */ jal func_80001D04 -/* 0AE714 800ADB14 00002825 */ move $a1, $zero -/* 0AE718 800ADB18 3C01800E */ lui $at, %hi(D_800E2C80) # $at, 0x800e -/* 0AE71C 800ADB1C 10000026 */ b .L800ADBB8 -/* 0AE720 800ADB20 AC202C80 */ sw $zero, %lo(D_800E2C80)($at) -.L800ADB24: -/* 0AE724 800ADB24 3C19800E */ lui $t9, %hi(D_800E2C60) # $t9, 0x800e -/* 0AE728 800ADB28 8F392C60 */ lw $t9, %lo(D_800E2C60)($t9) -/* 0AE72C 800ADB2C 3401BB80 */ li $at, 48000 -/* 0AE730 800ADB30 0321082A */ slt $at, $t9, $at -/* 0AE734 800ADB34 14200020 */ bnez $at, .L800ADBB8 -/* 0AE738 800ADB38 3C03800E */ lui $v1, %hi(D_800E2C7C) # $v1, 0x800e -/* 0AE73C 800ADB3C 24632C7C */ addiu $v1, %lo(D_800E2C7C) # addiu $v1, $v1, 0x2c7c -/* 0AE740 800ADB40 8C620000 */ lw $v0, ($v1) -/* 0AE744 800ADB44 00002825 */ move $a1, $zero -/* 0AE748 800ADB48 18400003 */ blez $v0, .L800ADB58 -/* 0AE74C 800ADB4C 00444023 */ subu $t0, $v0, $a0 -/* 0AE750 800ADB50 10000019 */ b .L800ADBB8 -/* 0AE754 800ADB54 AC680000 */ sw $t0, ($v1) -.L800ADB58: -/* 0AE758 800ADB58 0C000741 */ jal func_80001D04 -/* 0AE75C 800ADB5C 2404023F */ li $a0, 575 -/* 0AE760 800ADB60 3C09800E */ lui $t1, %hi(D_800E2C60) # $t1, 0x800e -/* 0AE764 800ADB64 8D292C60 */ lw $t1, %lo(D_800E2C60)($t1) -/* 0AE768 800ADB68 3C01FFFF */ lui $at, (0xFFFF4480 >> 16) # lui $at, 0xffff -/* 0AE76C 800ADB6C 34214480 */ ori $at, (0xFFFF4480 & 0xFFFF) # ori $at, $at, 0x4480 -/* 0AE770 800ADB70 01215021 */ addu $t2, $t1, $at -/* 0AE774 800ADB74 000A5943 */ sra $t3, $t2, 5 -/* 0AE778 800ADB78 240C0258 */ li $t4, 600 -/* 0AE77C 800ADB7C 018B6823 */ subu $t5, $t4, $t3 -/* 0AE780 800ADB80 3C01800E */ lui $at, %hi(D_800E2C80) # $at, 0x800e -/* 0AE784 800ADB84 AC2D2C80 */ sw $t5, %lo(D_800E2C80)($at) -/* 0AE788 800ADB88 24040384 */ li $a0, 900 -/* 0AE78C 800ADB8C 0C01BE53 */ jal get_random_number_from_range -/* 0AE790 800ADB90 24050474 */ li $a1, 1140 -/* 0AE794 800ADB94 3C0E800E */ lui $t6, %hi(D_800E2C60) # $t6, 0x800e -/* 0AE798 800ADB98 8DCE2C60 */ lw $t6, %lo(D_800E2C60)($t6) -/* 0AE79C 800ADB9C 3C01FFFF */ lui $at, (0xFFFF4480 >> 16) # lui $at, 0xffff -/* 0AE7A0 800ADBA0 34214480 */ ori $at, (0xFFFF4480 & 0xFFFF) # ori $at, $at, 0x4480 -/* 0AE7A4 800ADBA4 01C17821 */ addu $t7, $t6, $at -/* 0AE7A8 800ADBA8 000FC143 */ sra $t8, $t7, 5 -/* 0AE7AC 800ADBAC 0058C823 */ subu $t9, $v0, $t8 -/* 0AE7B0 800ADBB0 3C01800E */ lui $at, %hi(D_800E2C7C) # $at, 0x800e -/* 0AE7B4 800ADBB4 AC392C7C */ sw $t9, %lo(D_800E2C7C)($at) -.L800ADBB8: -/* 0AE7B8 800ADBB8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0AE7BC 800ADBBC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0AE7C0 800ADBC0 03E00008 */ jr $ra -/* 0AE7C4 800ADBC4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_09F8F0/func_800ADBC8.s b/asm/non_matchings/unknown_09F8F0/func_800ADBC8.s deleted file mode 100644 index dcc4bc57..00000000 --- a/asm/non_matchings/unknown_09F8F0/func_800ADBC8.s +++ /dev/null @@ -1,65 +0,0 @@ -glabel func_800ADBC8 -/* 0AE7C8 800ADBC8 3C0E800E */ lui $t6, %hi(D_800E2C60) # $t6, 0x800e -/* 0AE7CC 800ADBCC 8DCE2C60 */ lw $t6, %lo(D_800E2C60)($t6) -/* 0AE7D0 800ADBD0 3C014490 */ li $at, 0x44900000 # 1152.000000 -/* 0AE7D4 800ADBD4 000E7983 */ sra $t7, $t6, 6 -/* 0AE7D8 800ADBD8 448F3000 */ mtc1 $t7, $f6 -/* 0AE7DC 800ADBDC 44812000 */ mtc1 $at, $f4 -/* 0AE7E0 800ADBE0 46803220 */ cvt.s.w $f8, $f6 -/* 0AE7E4 800ADBE4 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0AE7E8 800ADBE8 3C188012 */ lui $t8, %hi(D_80127C1C) # $t8, 0x8012 -/* 0AE7EC 800ADBEC 46082281 */ sub.s $f10, $f4, $f8 -/* 0AE7F0 800ADBF0 8F187C1C */ lw $t8, %lo(D_80127C1C)($t8) -/* 0AE7F4 800ADBF4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0AE7F8 800ADBF8 AFA40038 */ sw $a0, 0x38($sp) -/* 0AE7FC 800ADBFC E7AA0028 */ swc1 $f10, 0x28($sp) -/* 0AE800 800ADC00 87040000 */ lh $a0, ($t8) -/* 0AE804 800ADC04 0C01C1F1 */ jal func_800707C4 -/* 0AE808 800ADC08 00000000 */ nop -/* 0AE80C 800ADC0C C7A60028 */ lwc1 $f6, 0x28($sp) -/* 0AE810 800ADC10 3C198012 */ lui $t9, %hi(D_80127C1C) # $t9, 0x8012 -/* 0AE814 800ADC14 46060302 */ mul.s $f12, $f0, $f6 -/* 0AE818 800ADC18 8F397C1C */ lw $t9, %lo(D_80127C1C)($t9) -/* 0AE81C 800ADC1C 00000000 */ nop -/* 0AE820 800ADC20 87240000 */ lh $a0, ($t9) -/* 0AE824 800ADC24 0C01C1FE */ jal func_800707F8 -/* 0AE828 800ADC28 E7AC0024 */ swc1 $f12, 0x24($sp) -/* 0AE82C 800ADC2C C7A40028 */ lwc1 $f4, 0x28($sp) -/* 0AE830 800ADC30 3C028012 */ lui $v0, %hi(D_80127C1C) # $v0, 0x8012 -/* 0AE834 800ADC34 46040082 */ mul.s $f2, $f0, $f4 -/* 0AE838 800ADC38 C7AC0024 */ lwc1 $f12, 0x24($sp) -/* 0AE83C 800ADC3C 8C427C1C */ lw $v0, %lo(D_80127C1C)($v0) -/* 0AE840 800ADC40 3C03800E */ lui $v1, %hi(D_800E2C94) # $v1, 0x800e -/* 0AE844 800ADC44 460C1281 */ sub.s $f10, $f2, $f12 -/* 0AE848 800ADC48 C448000C */ lwc1 $f8, 0xc($v0) -/* 0AE84C 800ADC4C 24632C94 */ addiu $v1, %lo(D_800E2C94) # addiu $v1, $v1, 0x2c94 -/* 0AE850 800ADC50 8C640000 */ lw $a0, ($v1) -/* 0AE854 800ADC54 C4460014 */ lwc1 $f6, 0x14($v0) -/* 0AE858 800ADC58 46001107 */ neg.s $f4, $f2 -/* 0AE85C 800ADC5C 460A4380 */ add.s $f14, $f8, $f10 -/* 0AE860 800ADC60 C4500010 */ lwc1 $f16, 0x10($v0) -/* 0AE864 800ADC64 460C2201 */ sub.s $f8, $f4, $f12 -/* 0AE868 800ADC68 10800008 */ beqz $a0, .L800ADC8C -/* 0AE86C 800ADC6C 46083480 */ add.s $f18, $f6, $f8 -/* 0AE870 800ADC70 44057000 */ mfc1 $a1, $f14 -/* 0AE874 800ADC74 44068000 */ mfc1 $a2, $f16 -/* 0AE878 800ADC78 44079000 */ mfc1 $a3, $f18 -/* 0AE87C 800ADC7C 0C0025B6 */ jal func_800096D8 -/* 0AE880 800ADC80 00000000 */ nop -/* 0AE884 800ADC84 1000000A */ b .L800ADCB0 -/* 0AE888 800ADC88 8FBF001C */ lw $ra, 0x1c($sp) -.L800ADC8C: -/* 0AE88C 800ADC8C 44057000 */ mfc1 $a1, $f14 -/* 0AE890 800ADC90 44068000 */ mfc1 $a2, $f16 -/* 0AE894 800ADC94 44079000 */ mfc1 $a3, $f18 -/* 0AE898 800ADC98 24080001 */ li $t0, 1 -/* 0AE89C 800ADC9C AFA80010 */ sw $t0, 0x10($sp) -/* 0AE8A0 800ADCA0 2404023E */ li $a0, 574 -/* 0AE8A4 800ADCA4 0C002556 */ jal func_80009558 -/* 0AE8A8 800ADCA8 AFA30014 */ sw $v1, 0x14($sp) -/* 0AE8AC 800ADCAC 8FBF001C */ lw $ra, 0x1c($sp) -.L800ADCB0: -/* 0AE8B0 800ADCB0 27BD0038 */ addiu $sp, $sp, 0x38 -/* 0AE8B4 800ADCB4 03E00008 */ jr $ra -/* 0AE8B8 800ADCB8 00000000 */ nop - diff --git a/include/PR/pfs.h b/include/PR/pfs.h index 4bf0b9ab..f89566ff 100644 --- a/include/PR/pfs.h +++ b/include/PR/pfs.h @@ -152,5 +152,6 @@ extern s32 osPfsSetLabel(OSPfs *, u8 *); extern s32 osPfsIsPlug(OSMesgQueue *, u8 *); extern s32 osPfsFreeBlocks(OSPfs *, s32 *); extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *); +extern s32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel); #endif diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 5657a407..a690fd85 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -40,5 +40,7 @@ typedef s32 ptrdiff_t; //#endif typedef float Matrix[4][4]; +typedef s16 VertexList; +typedef s8 TriangleList; #endif diff --git a/include/libc/assert.h b/include/libc/assert.h index a3736e37..eb012526 100644 --- a/include/libc/assert.h +++ b/include/libc/assert.h @@ -21,7 +21,7 @@ extern "C" { /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ -#ident "$Revision: 1.17 $" +//#ident "$Revision: 1.17 $" /* ANSI C Notes: * diff --git a/include/structs.h b/include/structs.h index 84e82d43..c22146e8 100644 --- a/include/structs.h +++ b/include/structs.h @@ -89,7 +89,7 @@ typedef struct TextureHeader { /* 0x1F */ u8 unk1F; } TextureHeader; -// Probably not unqiue to the boot menu. +// Probably not unique to the boot menu. typedef struct DrawTexture { TextureHeader *texture; // Pointer to texture to draw. s16 xOffset; // Offset from the center of the screen. @@ -338,10 +338,15 @@ typedef struct TexCoords { /* Size: 16 bytes */ typedef struct Triangle { -/* 0x00 */ u8 drawBackface; // 0x40 = Draw backface, 0x00 = Cull backface -/* 0x01 */ u8 vi0; // First vertex index -/* 0x02 */ u8 vi1; // Second vertex index -/* 0x03 */ u8 vi2; // Third vertex index + union { + struct { + /* 0x00 */ u8 drawBackface; // 0x40 = Draw backface, 0x00 = Cull backface + /* 0x01 */ u8 vi0; // First vertex index + /* 0x02 */ u8 vi1; // Second vertex index + /* 0x03 */ u8 vi2; // Third vertex index + }; + /* 0x00 */ u32 vertices; // For convenience? + }; /* 0x04 */ TexCoords uv0; // Texture coordinates for the first vertex /* 0x08 */ TexCoords uv1; // Texture coordinates for the second vertex /* 0x0C */ TexCoords uv2; // Texture coordinates for the third vertex diff --git a/lib/src/mips1/sc/sched.c b/lib/src/mips1/sc/sched.c index 4d644169..c91d950a 100644 --- a/lib/src/mips1/sc/sched.c +++ b/lib/src/mips1/sc/sched.c @@ -359,7 +359,7 @@ void __scHandleRSP(OSSched *sc) { } else { t->state &= ~OS_SC_NEEDS_RSP; /* BEGIN TODO: This just feels wrong, but it matches */ - while(0){} + do{} while(0); } if ((t->flags & OS_SC_TYPE_MASK) != OS_SC_XBUS){} /* END TODO */ diff --git a/src/audio.c b/src/audio.c index 1497e501..e71b4afc 100644 --- a/src/audio.c +++ b/src/audio.c @@ -667,6 +667,7 @@ u16 func_80001CB8(u16 arg0) { return sSoundEffectsPool[arg0].unk6; } +//Play Sound effect? GLOBAL_ASM("asm/non_matchings/audio/func_80001D04.s") void func_80001EA8(u16 arg0, f32 x, f32 y, f32 z, s32 **arg4) { diff --git a/src/camera.c b/src/camera.c index 9ba7b4c9..a6e4ae14 100644 --- a/src/camera.c +++ b/src/camera.c @@ -96,7 +96,7 @@ u8 D_800DD2F8[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -s32 D_800DD300 = 0; // Currently unknown, might be a different type. +s32 sNoControllerPluggedIn = FALSE; // Looks to be a boolean for whether a controller is plugged in. FALSE if plugged in, and TRUE if not. s16 gButtonMask = 0xFFFF; @@ -928,7 +928,7 @@ UNUSED void debug_print_float_matrix_values(f32 *mtx) { rmonPrintf("\n"); } -OSMesgQueue *func_8006A100(void) { +OSMesgQueue *get_si_mesg_queue(void) { return &sSIMesgQueue; } @@ -936,9 +936,9 @@ OSMesgQueue *func_8006A100(void) { * Initialise the player controllers, and return the status when finished. */ s32 init_controllers(void) { - s32 *temp1; // Unused + UNUSED s32 *temp1; // Unused u8 bitpattern; - s32 *temp2; // Unused + UNUSED s32 *temp2; // Unused osCreateMesgQueue(&sSIMesgQueue, &sSIMesgBuf, 1); osSetEventMesg(OS_EVENT_SI, &sSIMesgQueue, D_801210FC); @@ -946,7 +946,7 @@ s32 init_controllers(void) { osContStartReadData(&sSIMesgQueue); initialise_player_ids(); - D_800DD300 = 0; + sNoControllerPluggedIn = FALSE; if ((bitpattern & CONT_ABSOLUTE) && (!(status.errno & CONT_NO_RESPONSE_ERROR))) { return CONTROLLER_EXISTS; @@ -954,7 +954,7 @@ s32 init_controllers(void) { if (!bitpattern) {} // Fakematch - D_800DD300 = 1; + sNoControllerPluggedIn = TRUE; return CONTROLLER_MISSING; } @@ -966,7 +966,7 @@ GLOBAL_ASM("asm/non_matchings/camera/func_8006A1C4.s") */ void initialise_player_ids(void) { s32 i; - for (i = 0; i < 4; i++) { + for (i = 0; i < MAXCONTROLLERS; i++) { sPlayerID[i] = i; } } @@ -978,12 +978,12 @@ void initialise_player_ids(void) { void assign_player_ids(s8 *activePlayers) { s32 i; s32 temp = 0; - for (i = 0; i < 4; i++) { + for (i = 0; i < MAXCONTROLLERS; i++) { if (activePlayers[i]) { sPlayerID[temp++] = i; } } - for (i = 0; i < 4; i++) { + for (i = 0; i < MAXCONTROLLERS; i++) { if (!activePlayers[i]) { sPlayerID[temp++] = i; } diff --git a/src/camera.h b/src/camera.h index 20f1e4a1..b587e68e 100644 --- a/src/camera.h +++ b/src/camera.h @@ -93,8 +93,6 @@ extern Matrix gOrthoMatrix; extern u8 D_800DD2F8[8]; -extern s32 D_800DD300; - extern s16 gButtonMask; //TODO: Figure out where these functions live: unknown_070110? @@ -150,7 +148,7 @@ f32 func_80069DC8(f32 x, f32 y, f32 z); void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4); void func_80069F28(f32 arg0); UNUSED void debug_print_float_matrix_values(f32 *mtx); -OSMesgQueue *func_8006A100(void); +OSMesgQueue *get_si_mesg_queue(void); void initialise_player_ids(void); void assign_player_ids(s8 *activePlayers); u8 get_player_id(s32 player); diff --git a/src/controller_pak.c b/src/controller_pak.c index 6ff6028f..5395d590 100644 --- a/src/controller_pak.c +++ b/src/controller_pak.c @@ -9,14 +9,16 @@ #include "structs.h" #include "camera.h" #include "unknown_00BC20.h" +#include "unknown_06B2B0.h" +#include "unknown_0CEC50.h" /************ .data ************/ -s32 *D_800DE440 = 0; +s8 *D_800DE440 = 0; -u8 gN64FontCodes[68] = "\0 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#'*+,-./:=?@"; +u8 gN64FontCodes[] = "\0 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#'*+,-./:=?@"; -s32 D_800DE488 = 0; // Currently unknown, might be a different type. +u8 sControllerPaksPresent = 0; // Bits 0, 1, 2, and 3 of the bit pattern correspond to Controllers 1, 2, 3, and 4. 1 if a controller pak is present s32 D_800DE48C = 0; /*******************************/ @@ -61,24 +63,57 @@ const char D_800E7750[] = "warning: corrupt ghost\n"; /************ .bss ************/ -OSMesgQueue *D_80124010; +OSMesgQueue *sControllerMesgQueue; s32 D_80124014; OSPfs pfs[MAXCONTROLLERS]; -s32 D_801241B8[10]; -s32 D_801241E0; +typedef struct unk_801241B8 { + /* 0x00 */ s16 unk0; + /* 0x02 */ s16 unk2; + /* 0x04 */ s16 unk4; + /* 0x06 */ s16 unk6; + /* 0x08 */ s16 unk8; +} unk_801241B8; +unk_801241B8 D_801241B8[MAXCONTROLLERS]; + +s32 *sUnkMiscAsset19; //Misc Asset 19 +/** + * Values for Misc Asset 19 + * 00 2D 00 12 + * 00 46 00 0A + * 00 3C 00 3C + * 00 64 00 0F + * 00 3C 00 36 + * 00 32 00 0F + * 00 32 00 34 + * 00 46 00 3C + * 00 55 00 3C + * 00 46 00 16 + * 00 50 00 4B + * 00 64 00 0C + * 00 3C 00 18 + * 00 50 00 1E + * 00 64 00 2A + * 00 32 00 3C + * 00 28 00 0A + * 00 28 00 0A + * 00 64 00 0F +**/ u8 D_801241E4; -u8 D_801241E5; +u8 sRumblePaksPresent; // Bits 0, 1, 2, and 3 of the bit pattern correspond to Controllers 1, 2, 3, and 4. 1 if a rumble pak is present u8 D_801241E6; u8 D_801241E7; s32 D_801241E8; -s32 D_801241EC; +s8 *D_801241EC; s32 D_801241F0; s32 D_801241F4; /*******************************/ +// Guessing, but maybe this gets player id from controller index, +// but it might check for something like jointventure and will return +// the same value for controllers one and two? u8 func_80072250(s32 arg0) { if ((arg0 == 0 || arg0 == 1) && func_8000E158()) { arg0 = 1 - arg0; @@ -96,19 +131,46 @@ void func_80072298(u8 arg0) { func_80072708(); } -#ifdef NON_EQUIVALENT -// Unused. Has regalloc issues. -s32 func_800722E8(s16 arg0) { +UNUSED s32 func_800722E8(s16 arg0) { + s32 temp; if (arg0 < 0 || arg0 >= 4) { return 0; } - return D_801241E5 & ((1 << func_80072250(arg0)) & 0xFF); + temp = ((1 << func_80072250(arg0)) & 0xFF); + return sRumblePaksPresent & temp; +} + +#ifdef NON_EQUIVALENT +//In the right ballpark, but not right yet. +void func_80072348(s16 arg0, u8 arg1) { + s32 arg1AsS32 = arg1; + s16 *temp_v0; + unk_801241B8 *temp_v1; + u16 playerId; + + if (arg1AsS32 < 19 && arg0 >= 0) { + if (arg0 < 4) { + playerId = (func_80072250(arg0)); + temp_v1 = &D_801241B8[playerId]; + if (arg1AsS32 == temp_v1->unk0) { + if (temp_v1->unk8 < 0) { + temp_v1->unk8 = -300; + } + temp_v1->unk4 = sUnkMiscAsset19[arg1AsS32 + 1]; + } else { + temp_v1->unk0 = arg1AsS32; + temp_v0 = &sUnkMiscAsset19[arg1AsS32]; + if (*temp_v0 != 0) { + func_80072578(arg0, temp_v0[0], temp_v0[1]); + } + } + } + } } #else -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800722E8.s") +GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072348.s") #endif -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072348.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072424.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072578.s") @@ -116,10 +178,11 @@ void func_80072708(void) { D_800DE48C = 3; } +//Rumbles controller? GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072718.s") #ifdef NON_EQUIVALENT -s32 func_80072C54(s32 arg0) { +u16 func_80072C54(s32 arg0) { // v0 v1 a1 a2 a3 t0 t1 t2 t3 t4 t5 t6 t7 t8 u32 v0; u32 v1; @@ -270,113 +333,344 @@ GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072C54.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_80072E28.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_8007306C.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_800732E8.s") + +//arg1 is eepromData, from read_eeprom_data +//arg2 seems to be a flag for either lap times or course initials? GLOBAL_ASM("asm/non_matchings/controller_pak/func_80073588.s") + GLOBAL_ASM("asm/non_matchings/controller_pak/func_800738A4.s") -s32 get_s32_256(void) { +s32 get_game_data_file_size(void) { return 256; } -s32 get_s32_512(void) { +s32 get_time_data_file_size(void) { return 512; } +//Probably get_file_extension +//func_80073C5C(s32 controllerIndex, s32 fileType, u8 **fileExt); GLOBAL_ASM("asm/non_matchings/controller_pak/func_80073C5C.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80073E1C.s") -s32 func_80073F5C(s32 arg0, s32 arg1) { - s32 temp_v0; - s32 sp30; //Possible epcInfo struct - u8 *sp2C; - s32 phi_v1; - s32 size; +//Read DKRACING-ADV data into settings? +s32 read_game_data_from_controller_pak(s32 controllerIndex, u8 *fileExt, Settings *settings) { + s32 *alloc; + s32 ret; + s32 fileNumber; + s32 fileSize; - size = get_s32_256(); // 256 bytes - sp2C = allocate_from_main_pool_safe(size, COLOR_TAG_WHITE); - *((s32 *)sp2C) = 0x47414D44; //'GAMD'; - func_800732E8(arg1, sp2C + 4); - phi_v1 = func_80073C5C(arg0, 3, &sp30); - if (phi_v1 == 0) { - phi_v1 = func_800766D4(arg0, -1, &D_800E7680, &sp30, sp2C, size); + //Initialize controller pak + ret = get_si_device_status(controllerIndex); + if (ret != CONTROLLER_PAK_GOOD) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | ret; } - free_from_memory_pool(sp2C); - if (phi_v1 != 0) { - phi_v1 |= (arg0 << 0x1E); + //D_800E7670 = "DKRACING-ADV" + ret = get_file_number(controllerIndex, (u8 *)D_800E7670, fileExt, &fileNumber); + if (ret == CONTROLLER_PAK_GOOD) { + ret = get_file_size(controllerIndex, fileNumber, &fileSize); + if (fileSize == 0) { + ret = CONTROLLER_PAK_BAD_DATA; + } + if (ret == CONTROLLER_PAK_GOOD) { + alloc = allocate_from_main_pool_safe(fileSize, COLOR_TAG_BLACK); + ret = read_data_from_controller_pak(controllerIndex, fileNumber, (u8 *)alloc, fileSize); + + if (ret == CONTROLLER_PAK_GOOD) { + if (*alloc == GAMD) { + func_8007306C(settings, (s32) (alloc + 1)); + if (settings->newGame != 0) { + ret = CONTROLLER_PAK_CHANGED; + } + } + else { + ret = CONTROLLER_PAK_BAD_DATA; + } + } + + free_from_memory_pool(alloc); + } } - return phi_v1; + + start_reading_controller_data(controllerIndex); + if (ret != CONTROLLER_PAK_GOOD) { + ret |= (controllerIndex << 30); + } + return ret; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074018.s") +s32 write_game_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { + UNUSED s32 pad; + u8 *fileExt; + u8 *gameData; //Probably a struct where the first s32 is GAMD + s32 ret; + s32 fileSize; -s32 func_80074148(s32 arg0, Settings *arg1) { - u8 *sp2C; - s32 phi_v1; - s32 sp24; - s32 temp_v0; - s32 sp30; //Possible epcInfo struct + fileSize = get_game_data_file_size(); // 256 bytes + gameData = allocate_from_main_pool_safe(fileSize, COLOR_TAG_WHITE); + *((s32 *)gameData) = GAMD; + func_800732E8(arg1, gameData + 4); + ret = func_80073C5C(controllerIndex, 3, &fileExt); + if (ret == 0) { + // D_800E7680 = DKRACING-ADV + ret = write_controller_pak_file(controllerIndex, -1, (u8 *) D_800E7680, (u8 *) &fileExt, gameData, fileSize); + } + free_from_memory_pool(gameData); + if (ret != 0) { + ret |= (controllerIndex << 30); + } + return ret; +} - sp24 = get_s32_512(); // 512 bytes - sp2C = allocate_from_main_pool_safe(sp24, COLOR_TAG_WHITE); - *((s32 *)sp2C) = 0x54494D44; // TIMD - func_800738A4(arg1, sp2C + 4); - phi_v1 = func_80073C5C(arg0, 4, &sp30); - if (phi_v1 == 0) { - phi_v1 = func_800766D4(arg0, -1, &D_800E76A0, &sp30, sp2C, sp24); +//Read time data from controller pak into settings +s32 read_time_data_from_controller_pak(s32 controllerIndex, u8 *fileExt, Settings *settings) { + s32 *cpakData; + s32 status; + s32 fileNumber; + s32 fileSize; + + status = get_si_device_status(controllerIndex); + if (status != CONTROLLER_PAK_GOOD) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | status; } - free_from_memory_pool(sp2C); - if (phi_v1 != 0) { - phi_v1 |= (arg0 << 0x1E); + + //D_800E7690 = DKRACING-TIMES + status = get_file_number(controllerIndex, (u8 *)D_800E7690, fileExt, &fileNumber); + if (status == CONTROLLER_PAK_GOOD) { + status = get_file_size(controllerIndex, fileNumber, &fileSize); + if (fileSize == 0) { + status = CONTROLLER_PAK_BAD_DATA; + } + + if (status == CONTROLLER_PAK_GOOD) { + cpakData = allocate_from_main_pool_safe(fileSize, COLOR_TAG_BLACK); + + status = read_data_from_controller_pak(controllerIndex, fileNumber, (u8 *)cpakData, fileSize); + if (status == CONTROLLER_PAK_GOOD) { + if (*cpakData == TIMD) { + func_80073588(settings, (u64 *) (cpakData + 1), 3); + } else { + status = CONTROLLER_PAK_BAD_DATA; + } + } + + free_from_memory_pool(cpakData); + } } - return phi_v1; + + start_reading_controller_data(controllerIndex); + if (status != CONTROLLER_PAK_GOOD) { + status |= (controllerIndex << 30); + } + + return status; +} + +s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { + u8 *timeData; //Should probably be a struct or maybe an array? + s32 ret; + s32 fileSize; + UNUSED s32 temp_v0; + u8 *fileExt; + + fileSize = get_time_data_file_size(); // 512 bytes + timeData = allocate_from_main_pool_safe(fileSize, COLOR_TAG_WHITE); + *((s32 *)timeData) = TIMD; + func_800738A4(arg1, timeData + 4); + ret = func_80073C5C(controllerIndex, 4, &fileExt); + if (ret == CONTROLLER_PAK_GOOD) { + //D_800E76A0 = DKRACING-TIMES + ret = write_controller_pak_file(controllerIndex, -1, (u8 *) &D_800E76A0, (u8 *) &fileExt, timeData, fileSize); + } + free_from_memory_pool(timeData); + if (ret != CONTROLLER_PAK_GOOD) { + ret |= (controllerIndex << 30); + } + return ret; } GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074204.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_8007431C.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800744DC.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800745D0.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800746F0.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_8007480C.s") +// Writes Eeprom in 5 block chunks of data starting at either 0x0, 0x5, or 0xA +// Educated guess says this might be for one of three save files +s32 write_save_data(s32 saveFileNum, Settings *settings) { + s32 startingAddress; + u64 *alloc; + s32 address; + s32 blocks; + s32 i; -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074874.s") - -#ifdef NON_EQUIVALENT -s64 func_8007480C(u64 arg0); -// regalloc issues -s32 func_8007497C(u64 *arg0) { - if (osEepromProbe(func_8006A100()) == 0) { + if (osEepromProbe(get_si_mesg_queue()) == 0) { return -1; } - *arg0 <<= 8; - *arg0 >>= 8; - *arg0 |= (s64)((s32)func_8007480C(*arg0)) << 56; + + switch(saveFileNum) { + case 0: + startingAddress = 0; + break; + case 1: + startingAddress = 5; + break; + case 2: + startingAddress = 10; + break; + default: + startingAddress = 10; + break; + } + + blocks = 5; + alloc = allocate_from_main_pool_safe(blocks * sizeof(u64), COLOR_TAG_WHITE); + func_800732E8(settings, (u8 *)alloc); + + if (!is_reset_pressed()) { + for (i = 0, address = startingAddress; i < blocks; i++, address++) { + osEepromWrite(get_si_mesg_queue(), address, (u8 *)&alloc[i]); + } + } + + free_from_memory_pool(alloc); + + return 0; +} + +// Read Eeprom Data for addresses 0x10 - 0x39 +// arg1 is a flag +// arg1 is descended from (D_800DD37C & 3) so the first 2 bits of that value. +// bit 1 is for 0x10 - 0x27 +// bit 2 is for 0x28 - 0x39 +s32 read_eeprom_data(Settings *arg0, u8 arg1) { + u64 *alloc; + s32 i; + + if (osEepromProbe(get_si_mesg_queue()) == 0) { + return -1; + } + + alloc = allocate_from_main_pool_safe(0x200, COLOR_TAG_WHITE); + + if (arg1 & 1) { + s32 blocks = 24; + for (i = 0; i < blocks; i++) { + osEepromRead(get_si_mesg_queue(), i + 0x10, (u8 *)&alloc[i]); + } + func_80073588(arg0, alloc, 1); + } + + if (arg1 & 2) { + s32 blocks = 24; + for (i = 0; i < blocks; i++) { + osEepromRead(get_si_mesg_queue(), i + 0x28, (u8 *)(&alloc[24] + i)); + } + func_80073588(arg0, alloc, 2); + } + + free_from_memory_pool(alloc); + return 0; +} + +// Write Eeprom Data for addresses 0x10 - 0x39 +// arg1 is a flag +// bit 1 is for 0x10 - 0x27 +// bit 2 is for 0x28 - 0x39 +s32 write_eeprom_data(Settings *arg0, u8 arg1) { + u64 *alloc; + s32 i; + + if (osEepromProbe(get_si_mesg_queue()) == 0) { + return -1; + } + + alloc = allocate_from_main_pool_safe(0x200, COLOR_TAG_WHITE); + + func_800738A4(arg0, (u8 *)alloc); + + if (arg1 & 1) { + s32 size = 24; + if (1){} //Fake Match + if (!is_reset_pressed()) { + for (i = 0; i != size; i++) { + osEepromWrite(get_si_mesg_queue(), i + 16, (u8 *)&alloc[i]); + } + } + } + + if (arg1 & 2) { + s32 size = 24; + if (!is_reset_pressed()) { + for (i = 0; i != size; i++) { + osEepromWrite(get_si_mesg_queue(), i + 40, (u8 *)(&alloc[24] + i)); + } + } + } + + free_from_memory_pool(alloc); + return 0; +} + +s32 calculate_eeprom_settings_checksum(u64 eepromSettings) { + s32 ret; + s32 i; + + ret = 5; + for (i = 0; i <= 13; i++) { + ret += (u16)(eepromSettings >> (i << 2)) & 0xF; + } + return ret; +} + +// Reads eeprom address 0xF (15) +s32 read_eeprom_settings(u64 *eepromSettings) { + s32 temp; + s32 sp20; + + if (osEepromProbe(get_si_mesg_queue()) == 0) { + return -1; + } + + osEepromRead(get_si_mesg_queue(), 0xF, (u8 *) eepromSettings); + sp20 = calculate_eeprom_settings_checksum(*eepromSettings); + temp = *eepromSettings >> 56; + if (sp20 != temp) { + //bit 24 = Unknown + //bit 25 = Seems to be a flag for whether subtitles are enabled or not. + *eepromSettings = 0x3000000; //Sets bits 24 and 25 high + *eepromSettings <<= 8; + *eepromSettings >>= 8; + *eepromSettings |= (u64)calculate_eeprom_settings_checksum(*eepromSettings) << 56; + } + + return 1; +} + +//Writes eeprom address 0xF (15) +s32 write_eeprom_settings(u64 *eepromSettings) { + if (osEepromProbe(get_si_mesg_queue()) == 0) { + return -1; + } + *eepromSettings <<= 8; + *eepromSettings >>= 8; + *eepromSettings |= (s64)(calculate_eeprom_settings_checksum(*eepromSettings)) << 56; if (is_reset_pressed() == 0) { - osEepromWrite(func_8006A100(), 0xF, (u8 *)arg0); + osEepromWrite(get_si_mesg_queue(), 0xF, (u8 *) eepromSettings); } return 1; } -#else -GLOBAL_ASM("asm/non_matchings/controller_pak/func_8007497C.s") -#endif -#ifdef NON_EQUIVALENT -// regalloc issues -s16 func_80074A4C(GhostHeader *ghostHeader) { +s16 calculate_ghost_header_checksum(GhostHeader *ghostHeader) { s16 i; s16 len; s16 sum; - s32 temp; sum = 0; - len = (ghostHeader->nodeCount * sizeof(GhostDataFrame)) + sizeof(GhostHeader); - for (i = sizeof(GhostHeader); i < len; i++) { + len = (s16)(ghostHeader->nodeCount * sizeof(GhostDataFrame)) + sizeof(GhostHeader); + for (i = 2; i < len; i++) { sum += ((u8 *)ghostHeader)[i]; } return sum; } -#else -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074A4C.s") -#endif void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 nodeCount, u8 *dest) { ghostHeader->checksum = 0; @@ -385,72 +679,280 @@ void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 node ghostHeader->time = time; ghostHeader->nodeCount = nodeCount; bcopy(dest, (u8 *)ghostHeader + 8, nodeCount * sizeof(GhostDataFrame)); - ghostHeader->checksum = func_80074A4C(ghostHeader); + ghostHeader->checksum = calculate_ghost_header_checksum(ghostHeader); } -#ifdef NON_EQUIVALENT +//Seems to only be called when used as an argument for func_800860A8. Effectively just returns 0x6700 s32 func_80074B1C(void) { - return (0x1100 * 6) + 0x100; // -O2 optimizes this down to "return 0x6700;". + //func_80074EB8 Makes extensive use out of 0x1100, and even does a * 6 to it. + //func_80075000 Uses 0x1100 once as well. + //Another possibility for 0x1100, seems to be from func_8007BA5C which seems to do (0xF5101100 & 0xFFFF); + int x = 0x1100; + return (&x)[0] * 6 + 0x100; } -#else -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074B1C.s") -#endif GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074B34.s") - GLOBAL_ASM("asm/non_matchings/controller_pak/func_80074EB8.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_80075000.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_800753D8.s") GLOBAL_ASM("asm/non_matchings/controller_pak/func_800756D4.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800758DC.s") -s32 func_80075AEC(s32 controllerIndex) { - osContStartReadData(D_80124010); +SIDeviceStatus get_si_device_status(s32 controllerIndex) { + OSMesg unusedMsg; + s32 ret; + s32 bytes_not_used; + s32 i; + + if (sControllerMesgQueue->validCount == 0) { + if (osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == 0) { + return RUMBLE_PAK; + } + } + + //Couldn't get a for loop to match this + i = 0; + while (sControllerMesgQueue->validCount != 0 && i < 10) { + osRecvMesg(sControllerMesgQueue, &unusedMsg, OS_MESG_NOBLOCK); + i++; + } + + for (i = 0; i <= 4; i++) { + ret = osPfsFreeBlocks( &pfs[controllerIndex], &bytes_not_used); + if (ret == PFS_ERR_INVALID) { + ret = osPfsInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex); + } + if (ret == PFS_ERR_ID_FATAL) { + if (osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == 0) { + return RUMBLE_PAK; + } + } + if (ret == PFS_ERR_NEW_PACK) { + if ((osPfsInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == PFS_ERR_ID_FATAL) + && (osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == 0)) { + return RUMBLE_PAK; + } + return CONTROLLER_PAK_CHANGED; + } + if (ret == PFS_ERR_NOPACK || ret == PFS_ERR_DEVICE) { + return NO_CONTROLLER_PAK; + } + if (ret == PFS_ERR_BAD_DATA) { + return CONTROLLER_PAK_BAD_DATA; + } + if (ret == PFS_ERR_ID_FATAL) { + return CONTROLLER_PAK_WITH_BAD_ID; + } + if (ret == PFS_ERR_INCONSISTENT) { + return CONTROLLER_PAK_INCONSISTENT; + } + if (ret == 0) { + return CONTROLLER_PAK_GOOD; + } + } + + return NO_CONTROLLER_PAK; +} + +s32 start_reading_controller_data(UNUSED s32 controllerIndex) { + osContStartReadData(sControllerMesgQueue); return 0; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80075B18.s") +#ifdef NON_MATCHING +// For some reason it seems likely that D_801241E7 is volatile. +// Still needs matching though to prove that. +// volatile u8 D_801241E7; +void init_controller_paks(void) { + s32 controllerIndex; + s32 ret; + u8 controllerBit; + u8 pakPattern; + s8 maxControllers; -s32 func_80075D38(s32 controllerIndex) { - s32 phi_v1; - s32 temp_v0 = func_800758DC(); - if (temp_v0 == 0 || temp_v0 == 2) { - temp_v0 = osPfsChecker(&pfs[controllerIndex]); - if (temp_v0 == 0) { - phi_v1 = 0; - } else if (temp_v0 == 2) { - phi_v1 = 5; - } else { - phi_v1 = 2; + sControllerMesgQueue = get_si_mesg_queue(); + sUnkMiscAsset19 = get_misc_asset(19), //Comma is here on purpose + D_801241E7 = 0xF; + D_801241E6 = 0xF; + D_801241E4 = 1; + D_801241E8 = 0; + D_800DE48C = 1; + sRumblePaksPresent = 0; //sRumblePaksPresent + sControllerPaksPresent = 0; //sControllerPaksPresent + + //pakPattern will set the first 4 bits representing each controller + //and it will be 1 if there's something attached. + osPfsIsPlug(sControllerMesgQueue, &pakPattern); + + for (controllerIndex = 0, controllerBit = 1, maxControllers = MAXCONTROLLERS; controllerIndex != maxControllers; controllerIndex++, controllerBit <<= 1) { + D_801241B8[controllerIndex].unk2 = 0; + D_801241B8[controllerIndex].unk4 = -1; + D_801241B8[controllerIndex].unk0 = -1; + D_801241B8[controllerIndex].unk6 = D_801241B8[controllerIndex].unk2; + + //If something is plugged into the controller + if (pakPattern & controllerBit) { + ret = osPfsInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex); + if (ret == PFS_ERR_NEW_PACK) { + ret = osPfsInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex); + } + if (ret == 0) { + //If we found a controller pak, set the bit that has one + sControllerPaksPresent |= controllerBit; + } + else if (ret == PFS_ERR_ID_FATAL) { + if (osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == 0) { + //If we found a rumble pak, set the bit that has one + sRumblePaksPresent |= controllerBit; + } + } } - } else { - phi_v1 = 0; } - func_80075AEC(controllerIndex); - return phi_v1; + + osContStartReadData(sControllerMesgQueue); +} +#else +GLOBAL_ASM("asm/non_matchings/controller_pak/init_controller_paks.s") +#endif + +UNUSED SIDeviceStatus check_for_rumble_pak(s32 controllerIndex) { + s32 ret; + + ret = get_si_device_status(controllerIndex); + start_reading_controller_data(controllerIndex); + + if (ret == RUMBLE_PAK) { + sRumblePaksPresent |= 1 << controllerIndex; + } + + return ret; } -s32 func_80075DC4(s32 controllerIndex) { - s32 phi_v1; - s32 temp_v0 = func_800758DC(); - if (temp_v0 == 0 || temp_v0 == 2 || temp_v0 == 3) { - temp_v0 = osPfsReFormat(&pfs[controllerIndex], D_80124010, controllerIndex); - if (temp_v0 == 0) { - phi_v1 = 0; - } else if (temp_v0 == 2) { - phi_v1 = 5; +//Inspects and repairs the Controller Pak's file system +SIDeviceStatus repair_controller_pak(s32 controllerIndex) { + s32 ret; + s32 status = get_si_device_status(controllerIndex); + if (status == CONTROLLER_PAK_GOOD || status == CONTROLLER_PAK_INCONSISTENT) { + status = osPfsChecker(&pfs[controllerIndex]); + if (status == 0) { + ret = CONTROLLER_PAK_GOOD; + } else if (status == PFS_ERR_NEW_PACK) { + ret = CONTROLLER_PAK_CHANGED; } else { - phi_v1 = 2; + ret = CONTROLLER_PAK_INCONSISTENT; } } else { - phi_v1 = 0; + ret = CONTROLLER_PAK_GOOD; } - func_80075AEC(controllerIndex); - return phi_v1; + start_reading_controller_data(controllerIndex); + return ret; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80075E60.s") +//Reformat Controller Pak +SIDeviceStatus reformat_controller_pak(s32 controllerIndex) { + s32 ret; + s32 status = get_si_device_status(controllerIndex); + if (status == CONTROLLER_PAK_GOOD || status == CONTROLLER_PAK_INCONSISTENT || status == CONTROLLER_PAK_WITH_BAD_ID) { + status = osPfsReFormat(&pfs[controllerIndex], sControllerMesgQueue, controllerIndex); + if (status == 0) { + ret = CONTROLLER_PAK_GOOD; + } else if (status == PFS_ERR_NEW_PACK) { + ret = CONTROLLER_PAK_CHANGED; + } else { + ret = CONTROLLER_PAK_INCONSISTENT; + } + } else { + ret = CONTROLLER_PAK_GOOD; + } + start_reading_controller_data(controllerIndex); + return ret; +} +s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, u8 **fileNames, u8 **fileExtensions, u32 *fileSizes, u8 *fileTypes) { + OSPfsState state; + s32 ret; + s32 maxNumOfFilesOnCpak; + s32 files_used; + s8 *temp_D_800DE440; + s32 i; + u32 gameCode; + + ret = get_si_device_status(controllerIndex); + if (ret != CONTROLLER_PAK_GOOD) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | ret; + } + + if (osPfsNumFiles(&pfs[controllerIndex], &maxNumOfFilesOnCpak, &files_used) != 0) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; + } + + if (get_language() == JAPANESE) { + gameCode = JPN_GAME_CODE; + } else if (osTvType == TV_TYPE_PAL) { + gameCode = PAL_GAME_CODE; + } else { + gameCode = NTSC_GAME_CODE; + } + + if (maxNumOfFilesToGet < maxNumOfFilesOnCpak) { + maxNumOfFilesOnCpak = maxNumOfFilesToGet; + } + + if (D_800DE440 != NULL) { + free_from_memory_pool(D_800DE440); + } + + files_used = maxNumOfFilesOnCpak * 24; + D_800DE440 = allocate_from_main_pool_safe(files_used, COLOR_TAG_BLACK); + bzero(D_800DE440, files_used); + temp_D_800DE440 = D_800DE440; + + //TODO: There's probably an unidentified struct here + for (i = 0; i < maxNumOfFilesOnCpak; i++) { + fileNames[i] = (u8 *) temp_D_800DE440; + temp_D_800DE440 += 0x12; + fileExtensions[i] = (u8 *) temp_D_800DE440; + fileSizes[i] = 0; + fileTypes[i] = -1; + temp_D_800DE440 += 6; + } + + while (i < maxNumOfFilesToGet) { + fileExtensions[i] = 0; + fileNames[i] = 0; + fileSizes[i] = 0; + fileTypes[i] = -1; + i++; + } + + for (i = 0; i < maxNumOfFilesOnCpak; i++) { + ret = osPfsFileState(&pfs[controllerIndex], i, &state); + if (ret == PFS_ERR_INVALID) { + fileNames[i] = 0; + continue; + } + + if (ret != 0) { + start_reading_controller_data(controllerIndex); + return CONTROLLER_PAK_BAD_DATA; + } + + font_codes_to_string((u8 *)&state.game_name, (u8 *)fileNames[i], PFS_FILE_NAME_LEN); + font_codes_to_string((u8 *)&state.ext_name, (u8 *)fileExtensions[i], PFS_FILE_EXT_LEN); + fileSizes[i] = state.file_size; + fileTypes[i] = 6; // Unknown file type? Possibly from another game? + + if ((state.game_code == gameCode) && (state.company_code == COMPANY_CODE)) { + fileTypes[i] = get_file_type(controllerIndex, i); + } + } + + start_reading_controller_data(controllerIndex); + return CONTROLLER_PAK_GOOD; +} + +//Free D_800DE440 void func_80076164(void) { if (D_800DE440 != 0) { free_from_memory_pool(D_800DE440); @@ -458,120 +960,348 @@ void func_80076164(void) { D_800DE440 = 0; } -s32 func_80076194(s32 controllerIndex, s32 *arg1, s32 *arg2) { - s32 phi_v1; - s32 sp28; - s32 sp24; - s32 sp20; +//Get Available Space in Controller Pak +s32 get_free_space(s32 controllerIndex, u32 *bytesFree, s32 *notesFree) { + s32 ret; + s32 bytesNotUsed; + s32 maxNotes; + s32 notesUsed; - phi_v1 = func_800758DC(); - if (phi_v1 == 0) { - if (arg1 != NULL) { - phi_v1 = osPfsFreeBlocks(&pfs[controllerIndex], &sp28); - if (phi_v1 != 0) { - func_80075AEC(controllerIndex); - return (controllerIndex << 0x1E) | 9; + ret = get_si_device_status(controllerIndex); + if (ret == CONTROLLER_PAK_GOOD) { + if (bytesFree != 0) { + ret = osPfsFreeBlocks(&pfs[controllerIndex], &bytesNotUsed); + if (ret != 0) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; } - *arg1 = sp28; + *bytesFree = bytesNotUsed; } - if (arg2 != NULL) { - phi_v1 = osPfsNumFiles(&pfs[controllerIndex], &sp24, &sp20); - if (phi_v1 != 0) { - func_80075AEC(controllerIndex); - return (controllerIndex << 0x1E) | 9; + if (notesFree != 0) { + ret = osPfsNumFiles(&pfs[controllerIndex], &maxNotes, ¬esUsed); + if (ret != 0) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; } - if (sp20 >= 0x10) { - *arg2 = 0; + if (notesUsed >= 16) { + *notesFree = 0; } else { - *arg2 = 0x10 - sp20; + *notesFree = 16 - notesUsed; } } } else { - phi_v1 |= controllerIndex << 0x1E; + ret |= controllerIndex << 30; } - func_80075AEC(controllerIndex); - return phi_v1; + start_reading_controller_data(controllerIndex); + return ret; } -s32 func_800762C8(s32 controllerIndex, s32 fileNum) { +s32 delete_file(s32 controllerIndex, s32 fileNum) { OSPfsState state; s32 ret; - ret = func_800758DC(controllerIndex); - if (ret != 0) { - func_80075AEC(controllerIndex); - return (controllerIndex << 0x1E) | ret; + ret = get_si_device_status(controllerIndex); + if (ret != CONTROLLER_PAK_GOOD) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | ret; } - ret = (controllerIndex << 0x1E) | 9; + ret = (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; if (osPfsFileState(&pfs[controllerIndex], fileNum, &state) == 0) { - if (osPfsDeleteFile(&pfs[controllerIndex], state.company_code, state.game_code, state.game_name, state.ext_name) == 0) { - ret = 0; + if (osPfsDeleteFile(&pfs[controllerIndex], state.company_code, state.game_code, (u8 *)&state.game_name, (u8 *)&state.ext_name) == 0) { + ret = CONTROLLER_PAK_GOOD; } } - func_80075AEC(controllerIndex); + start_reading_controller_data(controllerIndex); return ret; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80076388.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800764E8.s") +// Copies a file from one controller pak to the other +s32 copy_controller_pak_data(s32 controllerIndex, s32 fileNumber, s32 secondControllerIndex) { + UNUSED s32 pad; + u8 fileName[PFS_FILE_NAME_LEN]; + UNUSED s32 pad2; + u8 fileExt[PFS_FILE_EXT_LEN]; + OSPfsState state; + s32 status; + u8 *alloc; -s32 read_data_from_controller_pak(s32 controllerIndex, s32 fileNum, u8 *data, s32 dataLength) { + status = get_si_device_status(controllerIndex); + if (status != CONTROLLER_PAK_GOOD) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | status; + } + + if (osPfsFileState(&pfs[controllerIndex], fileNumber, &state) != 0) { + start_reading_controller_data(controllerIndex); + return (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; + } + + alloc = allocate_from_main_pool_safe(state.file_size, COLOR_TAG_BLACK); + + status = read_data_from_controller_pak(controllerIndex, fileNumber, alloc, state.file_size); + start_reading_controller_data(controllerIndex); + if (status != CONTROLLER_PAK_GOOD) { + free_from_memory_pool(alloc); + return (controllerIndex << 30) | status; + } + + font_codes_to_string((u8 *)&state.game_name, fileName, PFS_FILE_NAME_LEN); + font_codes_to_string((u8 *)&state.ext_name, fileExt, PFS_FILE_EXT_LEN); + + status = write_controller_pak_file(secondControllerIndex, -1, fileName, fileExt, alloc, state.file_size); + if (status != CONTROLLER_PAK_GOOD) { + status |= (secondControllerIndex << 30); + } + + free_from_memory_pool(alloc); + return status; +} + +// There is likely a struct that looks like this in here. +// typedef struct fileStruct { +// s32 fileType; +// u8 game_name[PFS_FILE_NAME_LEN]; +// } fileStruct; +SIDeviceStatus get_file_number(s32 controllerIndex, u8 *fileName, u8 *fileExt, s32 *fileNumber) { + u32 gameCode; + u8 fileNameAsFontCodes[PFS_FILE_NAME_LEN]; + UNUSED s32 pad; + u8 fileExtAsFontCodes[PFS_FILE_EXT_LEN]; + UNUSED s32 pad2; + s32 ret; + + string_to_font_codes(fileName, fileNameAsFontCodes, PFS_FILE_NAME_LEN); + string_to_font_codes(fileExt, fileExtAsFontCodes, PFS_FILE_EXT_LEN); + + if (get_language() == JAPANESE) { + gameCode = JPN_GAME_CODE; + } else if (osTvType == TV_TYPE_PAL) { + gameCode = PAL_GAME_CODE; + } else { + gameCode = NTSC_GAME_CODE; + } + + + ret = osPfsFindFile(&pfs[controllerIndex], COMPANY_CODE, gameCode, (u8 *)fileNameAsFontCodes, (u8 *)fileExtAsFontCodes, fileNumber); + if (ret == 0) { + return CONTROLLER_PAK_GOOD; + } + if ((ret == PFS_ERR_NOPACK) || (ret == PFS_ERR_DEVICE)) { + return NO_CONTROLLER_PAK; + } + if (ret == PFS_ERR_INCONSISTENT) { + return CONTROLLER_PAK_INCONSISTENT; + } + if (ret == PFS_ERR_ID_FATAL) { + return CONTROLLER_PAK_WITH_BAD_ID; + } + if (ret == PFS_ERR_INVALID) { + return CONTROLLER_PAK_CHANGED; + } + + return CONTROLLER_PAK_BAD_DATA; +} + +SIDeviceStatus read_data_from_controller_pak(s32 controllerIndex, s32 fileNum, u8 *data, s32 dataLength) { s32 readResult = osPfsReadWriteFile(&pfs[controllerIndex], fileNum, PFS_READ, 0, dataLength, data); - //Successful read + if (readResult == 0) { - return 0; + return CONTROLLER_PAK_GOOD; } if ((readResult == PFS_ERR_NOPACK) || (readResult == PFS_ERR_DEVICE)) { - return 1; + return NO_CONTROLLER_PAK; } if (readResult == PFS_ERR_INCONSISTENT) { - return 2; + return CONTROLLER_PAK_INCONSISTENT; } if (readResult == PFS_ERR_ID_FATAL) { - return 3; + return CONTROLLER_PAK_WITH_BAD_ID; } if (readResult == PFS_ERR_INVALID) { - return 5; + return CONTROLLER_PAK_CHANGED; } - return 9; + + return CONTROLLER_PAK_BAD_DATA; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_800766D4.s") +//If fileNumber -1, it creates a new file? +SIDeviceStatus write_controller_pak_file(s32 controllerIndex, s32 fileNumber, u8 *fileName, u8 *fileExt, u8 *dataToWrite, s32 fileSize) { + s32 temp; + u8 fileNameAsFontCodes[PFS_FILE_NAME_LEN]; + UNUSED s32 temp2; + u8 fileExtAsFontCodes[PFS_FILE_EXT_LEN]; + s32 ret; + s32 file_number; + s32 bytesToSave; + u32 game_code; -s32 func_80076924(s32 controllerIndex, s32 arg1, s32 *arg2) { + ret = get_si_device_status(controllerIndex); + if (ret != 0) { + start_reading_controller_data(controllerIndex); + return ret; + } + + bytesToSave = fileSize; + temp = fileSize & 0xFF; + if (temp != 0) { + bytesToSave = (fileSize - temp) + 0x100; + } + + string_to_font_codes(fileName, fileNameAsFontCodes, PFS_FILE_NAME_LEN); + string_to_font_codes(fileExt, fileExtAsFontCodes, PFS_FILE_EXT_LEN); + + if (get_language() == JAPANESE) { + game_code = JPN_GAME_CODE; + } else if (osTvType == TV_TYPE_PAL) { + game_code = PAL_GAME_CODE; + } else { + game_code = NTSC_GAME_CODE; + } + + ret = get_file_number(controllerIndex, fileName, fileExt, &file_number); + if (ret == CONTROLLER_PAK_GOOD) { + if (fileNumber != -1 && fileNumber != file_number) { + ret = CONTROLLER_PAK_BAD_DATA; + } + } else if (ret == CONTROLLER_PAK_CHANGED) { + if (fileNumber != -1) { + ret = CONTROLLER_PAK_BAD_DATA; + } else { + temp = osPfsAllocateFile(&pfs[controllerIndex], COMPANY_CODE, game_code, fileNameAsFontCodes, fileExtAsFontCodes, bytesToSave, &file_number); + if (temp == 0) { + ret = CONTROLLER_PAK_GOOD; + } else if (temp == PFS_DATA_FULL || temp == PFS_DIR_FULL) { + ret = CONTROLLER_PAK_FULL; + } + else { + ret = CONTROLLER_PAK_BAD_DATA; + } + } + } + + if (ret == CONTROLLER_PAK_GOOD) { + temp = osPfsReadWriteFile(&pfs[controllerIndex], file_number, PFS_WRITE, 0, bytesToSave, dataToWrite); + if (temp == 0) { + ret = CONTROLLER_PAK_GOOD; + } else if ((temp == PFS_ERR_NOPACK) || (temp == PFS_ERR_DEVICE)) { + ret = NO_CONTROLLER_PAK; + } else if (temp == PFS_ERR_INCONSISTENT) { + ret = CONTROLLER_PAK_INCONSISTENT; + } else if (temp == PFS_ERR_ID_FATAL) { + ret = CONTROLLER_PAK_WITH_BAD_ID; + } + else { + ret = CONTROLLER_PAK_BAD_DATA; + } + } + + start_reading_controller_data(controllerIndex); + return ret; +} + +//Get File size for given controller's Control Pak +SIDeviceStatus get_file_size(s32 controllerIndex, s32 fileNum, s32 *fileSize) { OSPfsState state; - *arg2 = 0; - if (osPfsFileState(&pfs[controllerIndex], arg1, &state) == 0) { - *arg2 = state.file_size; - return 0; + *fileSize = 0; + if (osPfsFileState(&pfs[controllerIndex], fileNum, &state) == 0) { + *fileSize = state.file_size; + return CONTROLLER_PAK_GOOD; } - return 9; + return CONTROLLER_PAK_BAD_DATA; } -GLOBAL_ASM("asm/non_matchings/controller_pak/func_8007698C.s") -GLOBAL_ASM("asm/non_matchings/controller_pak/func_80076A38.s") +//Converts N64 Font codes used in controller pak file names, into C ASCII a coded string +u8 *font_codes_to_string(u8 *inString, u8 *outString, s32 stringLength) { + s32 index = *inString; + u8 *ret = outString; -s32 func_80076AF4(s32 controllerIndex, s32 fileNum) { + while (index != 0 && stringLength != 0) { + // Less than sizeof(gN64FontCodes) - 3. + // So basically make sure it's a valid font code value + if (index <= 65) { + *outString = gN64FontCodes[index]; + outString++; + } else { + //Replace invalid characters with a hyphen + *outString = '-'; + outString++; + } + + inString++; + stringLength--; + index = *inString; + } + + //Pad any extra characters with NULL font code + while (stringLength != 0) { + *outString = 0; + stringLength--; + outString++; + } + + *outString = 0; + return ret; +} + +//Converts a C ASCII string into N64 Font codes for controller pak file names +u8 *string_to_font_codes(u8 *inString, u8 *outString, s32 stringLength) { + s32 i; + u8 currentChar; + u8 *ret = outString; + + while (*inString != 0 && stringLength != 0) { + *outString = 0; + for (i = 0; i < 65; i++) { + currentChar = *inString; + if (currentChar == gN64FontCodes[i]) { + *outString = i; + outString++; + break; + } + } + + inString++; + stringLength--; + } + + while (stringLength != 0) { + *outString = 0; + stringLength--; + outString++; + } + + *outString = 0; + return ret; +} + +/** + * For the given controller, and file, this will return a value for which type of file it is. + * 3 = GAMD / Game Data + * 4 = TIMD / Time Data + * 5 = GHSS / Ghost Data + * 6 = Unknown? Possibly from another game? + */ +s32 get_file_type(s32 controllerIndex, s32 fileNum) { s32 *data; - s32 pad; + UNUSED s32 pad; s32 ret; ret = 6; data = allocate_from_main_pool_safe(0x100, COLOR_TAG_BLACK); - if (read_data_from_controller_pak(controllerIndex, fileNum, (u8 *)data, 0x100) == 0) { + if (read_data_from_controller_pak(controllerIndex, fileNum, (u8 *)data, 0x100) == CONTROLLER_PAK_GOOD) { switch (*data) { - case 0x47414D44: //'GAMD': // Game Data? + case GAMD: ret = 3; break; - case 0x54494D44: //'TIMD': // Time Data? + case TIMD: ret = 4; break; - case 0x47485353: //'GHSS': // Ghosts? + case GHSS: ret = 5; break; default: diff --git a/src/controller_pak.h b/src/controller_pak.h index 4d1e59ab..57df0d82 100644 --- a/src/controller_pak.h +++ b/src/controller_pak.h @@ -3,35 +3,96 @@ #include "types.h" #include "structs.h" +#include "PR/pfs.h" +#include "PR/os_cont.h" -extern s32 *D_800DE440; +#define GAMD 0x47414D44 // 'GAMD' ASCII - Game Data? +#define TIMD 0x54494D44 // 'TIMD' ASCII - Time Data? +#define GHSS 0x47485353 // 'GHSS' ASCII - Ghosts? + +// These are the unique game codes assigned to DKR +#define NDYJ 0x4E44594A // 'NDYJ' ASCII +#define NDYP 0x4E445950 // 'NDYP' ASCII +#define NDYE 0x4E445945 // 'NDYE' ASCII +#define JPN_GAME_CODE NDYJ +#define PAL_GAME_CODE NDYP +#define NTSC_GAME_CODE NDYE + +// This is RARE's unique code +#define COMPANY_CODE 0x3459 + +typedef enum { + CONTROLLER_PAK_GOOD, + NO_CONTROLLER_PAK, + CONTROLLER_PAK_INCONSISTENT, + CONTROLLER_PAK_WITH_BAD_ID, + CONTROLLER_PAK_FULL, + CONTROLLER_PAK_CHANGED, + CONTROLLER_PAK_UNK6, //Could be another way to mark as full according to tt_menu_loop + RUMBLE_PAK, + CONTROLLER_PAK_UNK8, // func_80074B34 Sets this + CONTROLLER_PAK_BAD_DATA, +} SIDeviceStatus; + +extern s8 *D_800DE440; extern u8 gN64FontCodes[68]; -extern s32 D_800DE488; extern s32 D_800DE48C; +extern OSPfs pfs[MAXCONTROLLERS]; u8 func_80072250(s32 arg0); void func_80072298(u8 arg0); +s32 func_800722E8(s16 arg0); void func_80072708(void); -s32 get_s32_256(void); -s32 get_s32_512(void); -s32 func_80073F5C(s32 arg0, s32 arg1); -s32 func_80074148(s32 arg0, Settings *arg1); +s32 get_game_data_file_size(void); +s32 get_time_data_file_size(void); +s32 read_game_data_from_controller_pak(s32 controllerIndex, u8 *fileExt, Settings *settings); +s32 write_game_data_to_controller_pak(s32 controllerIndex, Settings *arg1); +s32 read_time_data_from_controller_pak(s32 controllerIndex, u8 *fileExt, Settings *settings); +s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1); +s32 write_save_data(s32 saveFileNum, Settings *settings); +s32 read_eeprom_data(Settings *arg0, u8 arg1); +s32 write_eeprom_data(Settings *arg0, u8 arg1); +s32 calculate_eeprom_settings_checksum(u64 eepromSettings); +s32 read_eeprom_settings(u64 *eepromSettings); +s32 write_eeprom_settings(u64 *eepromSettings); +s16 calculate_ghost_header_checksum(GhostHeader *ghostHeader); void func_80074AA8(GhostHeader *ghostHeader, s16 characterID, s16 time, s16 nodeCount, u8 *dest); -s32 func_80075AEC(s32 controllerIndex); -s32 func_80075D38(s32 controllerIndex); -s32 func_80075DC4(s32 controllerIndex); +s32 func_80074B1C(void); +SIDeviceStatus get_si_device_status(s32 controllerIndex); +s32 start_reading_controller_data(s32 controllerIndex); +SIDeviceStatus check_for_rumble_pak(s32 controllerIndex); +SIDeviceStatus repair_controller_pak(s32 controllerIndex); +SIDeviceStatus reformat_controller_pak(s32 controllerIndex); +s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, u8 **fileNames, u8 **fileExtensions, u32 *fileSizes, u8 *fileTypes); void func_80076164(void); -s32 func_80076194(s32 controllerIndex, s32 *arg1, s32 *arg2); -s32 read_data_from_controller_pak(s32 controllerIndex, s32 fileNum, u8 *data, s32 dataLength); -s32 func_80076AF4(s32 controllerIndex, s32 fileNum); +s32 get_free_space(s32 controllerIndex, u32 *bytesFree, s32 *notesFree); +s32 delete_file(s32 controllerIndex, s32 fileNum); +s32 copy_controller_pak_data(s32 controllerIndex, s32 fileNumber, s32 secondControllerIndex); +SIDeviceStatus get_file_number(s32 controllerIndex, u8 *fileName, u8 *fileExt, s32 *fileNumber); +SIDeviceStatus read_data_from_controller_pak(s32 controllerIndex, s32 fileNum, u8 *data, s32 dataLength); +SIDeviceStatus write_controller_pak_file(s32 controllerIndex, s32 fileNumber, u8 *fileName, u8 *fileExt, u8 *dataToWrite, s32 fileSize); +SIDeviceStatus get_file_size(s32 controllerIndex, s32 fileNum, s32 *fileSize); +u8 *font_codes_to_string(u8 *inString, u8 *outString, s32 stringLength); +s32 get_file_type(s32 controllerIndex, s32 fileNum); -s32 func_800722E8(s16 arg0); //Non matching -s32 func_800738A4(Settings *arg0, void *arg1); //Non matching -s64 func_8007480C(u64 arg0); //Non matching -s32 func_8007497C(u64 *arg0); //Non matching -s32 func_80074B1C(void); //Non matching -s32 func_800762C8(s32 controllerIndex, s32 fileNum); //Non matching -s32 func_80076924(s32 controllerIndex, s32 arg1, s32 *arg2); //Non matching -s16 func_80074A4C(GhostHeader *ghostHeader); //Non matching +s32 func_800738A4(Settings *arg0, u8 *arg1); //Non matching +void func_800732E8(Settings *arg0, u8 *arg1); //Non matching +void func_80073588(Settings *arg0, u64 *eepromData, s32 arg2); //Non matching +s32 func_80073C5C(s32 controllerIndex, s32 arg1, u8 **arg2); //Non matching +void func_8007306C(Settings *arg0, s32 arg1); //Non matching +//Using some context, and best guesses, these could be the names of the variables +s32 func_80074B34(s32 controllerIndex, s16 levelID, s16 vehicleID, s16 *ghostCharacterID, s16 *ghostTime, s16 *ghostNodeCount, GhostHeader *arg6); //Non matching +u8 func_80074204(s32 arg0, Settings *arg1); //Non Matching +void func_8007431C(s32 arg0, Settings *arg1); //Non Matching +s32 func_80072E28(s32, s32); //Non Matching arg2 seems to be many different types +void init_controller_paks(void); //Non Matching +u8 *string_to_font_codes(u8 *inString, u8 *outString, s32 stringLength); + +//Reasonably certain about these names for now. +s32 func_80074EB8(s32 controllerIndex, s16 arg1, s16 arg2, s16 ghostCharacterId, s16 ghostTime, s16 ghostNodeCount, u8 *dest); +s32 func_80075000(s32 controllerIndex, s16 arg1, s16 arg2, s16 ghostCharacterId, s16 ghostTime, s16 ghostNodeCount, GhostHeader *arg6); +s32 func_800753D8(s32 controllerIndex, s32 arg1); +//Pretty bad signature, but at can confidently state arg0 is controllerIndex. +s32 func_800756D4(s32 controllerIndex, s8 *arg1, void *arg2, u8 *arg3, void *arg4); #endif diff --git a/src/font.h b/src/font.h index b81f8baf..a77b7508 100644 --- a/src/font.h +++ b/src/font.h @@ -193,6 +193,6 @@ void func_800C4170(s32 arg0); //Non Matching void func_800C422C(s32 arg0); //Non Matching void func_800C45A4(Gfx **dlist, DialogueBoxBackground *arg1, u8 *text, s32 alignmentFlags, f32 arg4); //Non Matching s32 func_800C4DA0(u8 *text, s32 x, s32 font); //Non Matching -//void render_dialogue_text(s32 unk01, s16 posX, s16 posY, s32 text, s32 unk01, s32 unk02); //Non Matching +void *render_dialogue_text(s32 arg0, s32 posX, s32 posY, char *text, s32 arg4, s32 arg5); //Non Matching #endif diff --git a/src/memory.c b/src/memory.c index 8bd97cfc..daa8fd50 100644 --- a/src/memory.c +++ b/src/memory.c @@ -30,7 +30,8 @@ const char D_800E7488[] = "Unable to record %d slots, colours overflowed table.\ MemoryPool gMemoryPools[4]; #ifndef _ALIGN16 -#define _ALIGN16(val) ((val)&0xFFFFFFF0) + 0x10 +#define _ALIGN16(a) (((u32) (a) & ~0xF) + 0x10) +//#define _ALIGN16(val) ((val)&0xFFFFFFF0) + 0x10 #endif s32 gNumberOfMemoryPools; @@ -78,31 +79,39 @@ MemoryPoolSlot *new_sub_memory_pool(s32 poolDataSize, s32 numSlots) { return newPool; } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING +//Match found in Dinosaur Planet, and it's *really* close, but not yet there. MemoryPoolSlot *new_memory_pool(MemoryPoolSlot *slots, s32 poolSize, s32 numSlots) { - s32 i; - MemoryPool *pool; MemoryPoolSlot *firstSlot; - unk80070BE4_8_0 *temp3; + MemoryPool *pool; + s32 i; + s32 len; - pool = &gMemoryPools[++gNumberOfMemoryPools]; + //The comma seperation seems to generate a better match + len = gNumberOfMemoryPools++, pool = &gMemoryPools[len]; + + len = numSlots * sizeof(MemoryPoolSlot); pool->maxNumSlots = numSlots; pool->curNumSlots = 0; pool->slots = slots; pool->size = poolSize; + firstSlot = slots; + for (i = 0; i < pool->maxNumSlots; i++) { - slots[i].index = i; + firstSlot->index = i; + firstSlot++; } - firstSlot = pool->slots; - temp3 = (unk80070BE4_8_0 *)&slots[numSlots]; - if ((s32)temp3 & 0xF) { - firstSlot->unk0 = (unk80070BE4_8_0 *)_ALIGN16((s32)temp3); + firstSlot = &pool->slots[0]; + slots += numSlots; + if (((s32)slots & 0xF) != 0) { + firstSlot->data = _ALIGN16(slots); } else { - firstSlot->unk0 = temp3; + firstSlot->data = slots; } - firstSlot->size = poolSize - (numSlots * sizeof(MemoryPoolSlot)); + + firstSlot->size = poolSize - len; firstSlot->flags = 0; firstSlot->prevIndex = -1; firstSlot->nextIndex = -1; @@ -170,7 +179,7 @@ MemoryPoolSlot *allocate_from_memory_pool(s32 memoryPoolIndex, s32 size, u32 col if (phi_s0 != -1) { allocate_memory_pool_slot(memoryPoolIndex, phi_s0, size, TRUE, FALSE, colorTag); func_8006F53C(sp28); - return pool->slots[phi_s0].unk0; + return pool->slots[phi_s0].data; } func_8006F53C(sp28); } @@ -209,16 +218,16 @@ void *allocate_at_address_in_main_pool(s32 size, u8 *address, u32 colorTag) { while (s0 != -1) { curSlot = &slots[s0]; if (curSlot->flags == 0) { - if ((address >= (u8 *)curSlot->unk0) && (((u8 *)curSlot->unk0 + curSlot->size) >= (address + size))) { - if (address == (u8 *)curSlot->unk0) { + if ((address >= (u8 *)curSlot->data) && (((u8 *)curSlot->data + curSlot->size) >= (address + size))) { + if (address == (u8 *)curSlot->data) { allocate_memory_pool_slot(0, s0, size, 1, 0, colorTag); func_8006F53C(sp38); - return curSlot->unk0; + return curSlot->data; } else { - s0 = allocate_memory_pool_slot(0, s0, address - (u8 *)curSlot->unk0, 0, 1, colorTag); + s0 = allocate_memory_pool_slot(0, s0, address - (u8 *)curSlot->data, 0, 1, colorTag); allocate_memory_pool_slot(0, s0, size, 1, 0, colorTag); func_8006F53C(sp38); - return slots[s0].unk0; + return slots[s0].data; } } } @@ -296,7 +305,7 @@ void free_slot_containing_address(u8 *address) { slots = gMemoryPools[poolIndex].slots; for (slotIndex = 0; slotIndex != -1; slotIndex = slot->nextIndex) { slot = &slots[slotIndex]; - if (address == (u8 *)slot->unk0) { + if (address == (u8 *)slot->data) { if (slot->flags == 1 || slot->flags == 4) { free_memory_pool_slot(poolIndex, slotIndex); } @@ -354,7 +363,7 @@ s32 func_80071478(u8 *address) { slotIndex = 0; while (slotIndex != -1) { slot = slotIndex + pool->slots; // `slot = &pool->slots[slotIndex];` does not match. - if (address == (u8 *)slot->unk0) { + if (address == (u8 *)slot->data) { if (slot->flags == 1 || slot->flags == 4) { slot->flags |= 2; func_8006F53C(sp18); @@ -378,7 +387,7 @@ s32 func_80071538(u8 *address) { slotIndex = 0; while (slotIndex != -1) { slot = slotIndex + pool->slots; // `slot = &pool->slots[slotIndex];` does not match. - if (address == (u8 *)slot->unk0) { + if (address == (u8 *)slot->data) { if (slot->flags & 2) { slot->flags ^= 2; func_8006F53C(sp18); @@ -455,13 +464,14 @@ void free_memory_pool_slot(s32 poolIndex, s32 slotIndex) { } } +#else +GLOBAL_ASM("asm/non_matchings/memory/free_memory_pool_slot.s") +#endif + // Unused? MemoryPoolSlot *func_80071774(s32 poolIndex) { return gMemoryPools[poolIndex].slots; } -#else -GLOBAL_ASM("asm/non_matchings/memory/free_memory_pool_slot.s") -#endif #ifdef NON_EQUIVALENT s32 allocate_memory_pool_slot(s32 memoryPoolIndex, s32 slotIndex, s32 size, s32 slotIsTaken, s32 newSlotIsTaken, u32 colorTag) { @@ -482,7 +492,7 @@ s32 allocate_memory_pool_slot(s32 memoryPoolIndex, s32 slotIndex, s32 size, s32 newIndex = pool->slots[pool->curNumSlots].index; pool->curNumSlots++; newSlot = &pool->slots[newIndex]; - newSlot->unk0 = ((u8 *)slot->unk0) + size; + newSlot->data = ((u8 *)slot->data) + size; newSlot->size = slotSize - size; newSlot->flags = newSlotIsTaken; futureIndex = slot->nextIndex; diff --git a/src/memory.h b/src/memory.h index 5fceef42..794068f9 100644 --- a/src/memory.h +++ b/src/memory.h @@ -38,7 +38,7 @@ typedef struct unk80070BE4_8_0 { /* Size: 0x14 bytes */ typedef struct MemoryPoolSlot { -/* 0x00 */ unk80070BE4_8_0 *unk0; +/* 0x00 */ u8 *data; /* 0x04 */ s32 size; /* 0x08 */ s16 flags; // 0x00 = Slot is free diff --git a/src/menu.c b/src/menu.c index 97841e2a..9b4faef6 100644 --- a/src/menu.c +++ b/src/menu.c @@ -23,6 +23,9 @@ #include "unknown_00BC20.h" #include "unknown_06B2B0.h" #include "unknown_078050.h" +#include "controller_pak.h" +#include "unknown_0348C0.h" +#include "unknown_003260.h" /** * @file Contains all the code used for every menu in the game. @@ -33,12 +36,12 @@ // The bss section needs to stay above the data section! // Otherwise the bss variables will get reordered, which is bad. -unk800DFC10 *D_80126390; -unk800DFC10 *D_80126394; +DrawTexture *D_80126390; +DrawTexture *D_80126394; s32 D_80126398; s32 D_8012639C; Gfx *D_801263A0; -s32 **D_801263A4; +char **D_801263A4; Gfx *D_801263A8; VertexList *D_801263AC; s32 *D_801263B0; @@ -68,15 +71,19 @@ s8 D_80126431; s32 D_80126434; s32 D_80126438[4]; -//Seems to be a set of flags -//bit 0 = Adventure Two is Unlocked -//bit 1 = Used to set the CHEAT_MIRRORED_TRACKS magic code flag -//bits 2-3 = Current language value -//bits 4-23 = Used to set the CHEAT_CONTROL_DRUMSTICK magic code flag -//bit 24 = Unknown -//bit 25 = Seems to be a flag for whether subtitles are enabled or not. -//bits 26-63 = Unknown -s64 D_80126448; +//Eeeprom save data bits stored at address 0xF +//bit 0 = Adventure Two is Unlocked +//bit 1 = Used to set the CHEAT_MIRRORED_TRACKS magic code flag +//bits 2-3 = Current language value +//bits 4-23 = Used to set the CHEAT_CONTROL_DRUMSTICK magic code flag +//bit 24 = Unknown, but it's set as a default high bit. +//bit 25 = Seems to be a flag for whether subtitles are enabled or not. +//bits 26-55 = Unknown, but it could be a set of flags for unlocked tracks +//bits 56-63 = Checksum bits. These are calculated from the previous bits, +// and validated using calculate_eeprom_settings_checksum. +// If the checksum fails, the settings are reset to just +// bits 24/25 being high. +u64 sEepromSettings; f32 sBootScreenTimer; s8 gControllersXAxisDelay[4]; @@ -108,8 +115,6 @@ s32 D_801264DC; s8 D_801264E0; s8 D_801264E1; -s8 sCurrentMenuID; - s8 sCurrentMenuID; s32 D_801264E4; s32 D_801264E8; @@ -135,7 +140,7 @@ s8 D_80126540; s8 D_80126541; s32 D_80126544; s32 gMultiplayerSelectedNumberOfRacersCopy; // Saved version gMultiplayerSelectedNumberOfRacers? -u32 *D_80126550[67]; // lookup table? +u32 *D_80126550[67]; // lookup table? TEXTURES s32 D_8012665C; s32 D_80126660; s32 D_80126664; @@ -201,20 +206,20 @@ s32 D_801269F4; s32 D_801269F8; s32 *D_801269FC; s32 D_80126A00; -s32 D_80126A04; +unk800860A8 *D_80126A04; s32 D_80126A08; s32 D_80126A0C; s32 D_80126A10; s32 D_80126A14; s32 D_80126A18; s32 D_80126A1C; -s32 D_80126A20[4]; -s32 D_80126A30; -s32 D_80126A34; -s32 D_80126A38; -s32 D_80126A3C; -s32 D_80126A40[8]; -s8 D_80126A60[2]; +s32 D_80126A20[MAXCONTROLLERS]; // Looks to be an array for number notes free in each controller memory pak +u8 sControllerPakIssueNotFound[MAXCONTROLLERS]; //Flag to see if there's no known issues for the given controller pak +u8 sControllerPakFatalErrorFound[MAXCONTROLLERS]; //Flag to see if there's a fatal error for the given controller pak +u8 sControllerPakNoFreeSpace[MAXCONTROLLERS]; //Flag to see if there's no free space for the given controller pak +u8 sControllerPakBadData[MAXCONTROLLERS]; //Flag to see if there's bad data for the given controller pak +u8 *D_80126A40[8]; //Menu Text +u8 sControllerPakDataPresent[MAXCONTROLLERS]; //Flag to see if there's data present for the given controller pak? Not sure s32 D_80126A64; s32 D_80126A68; s32 D_80126A6C; @@ -227,13 +232,13 @@ s32 D_80126A90; s32 D_80126A94; s32 D_80126A98; s32 D_80126A9C; -s32 *D_80126AA0[16]; -s32 D_80126AE0[16]; -s32 D_80126B20[16]; -s32 D_80126B60[4]; -s32 D_80126B70[16]; -s32 D_80126BB0; -s32 D_80126BB4; +u8 *D_80126AA0[16]; //Text to render +u8 *sCurrentControllerPakAllFileNames[16]; //Every file name on the controller pak +u8 *sCurrentControllerPakAllFileExtensions[16]; //Every file extension on the controller pak +u8 sCurrentControllerPakAllFileTypes[16]; //File type of all files on controller pak +u32 sCurrentControllerPakAllFileSizes[16]; //File size of all files on controller pak +u32 sCurrentControllerPakFreeSpace; //Space available in current controller pak +s32 D_80126BB4; //8 if PAL, 7 if not s32 D_80126BB8; s32 D_80126BBC; s32 D_80126BC0; @@ -338,6 +343,7 @@ s32 D_800DF4F0[] = { 0x4000, 0x8000, 0x1000, 0x2000, 0x8000, 0x10, 0x400, 0x00 }; +//MenuElement? unk800DF510 sMenuImageProperties[18] = { { 0, 0, 0, 0x00, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0x01, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, @@ -356,7 +362,7 @@ unk800DF510 sMenuImageProperties[18] = { { 0, 0, 0, 0x4D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0x4E, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0x4F, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x5D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0x5D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, }; s16 *D_800DF750[1] = { NULL }; // This is probably not correct. @@ -479,12 +485,12 @@ s32 *D_800DFBE0[10] = { s32 D_800DFC08 = 0; // Currently unknown, might be a different type. s32 D_800DFC0C = 0xFFFF; // Currently unknown, might be a different type. -unk800DFC10 D_800DFC10 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800DFC20 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800DFC30 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800DFC40 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800DFC50 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800DFC60 = { NULL, 0, 0, NULL, 0 }; +DrawTexture D_800DFC10[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800DFC20[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800DFC30[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800DFC40[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800DFC50[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800DFC60[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; // Unused? u8 D_800DFC70[8] = { 0x40, 0x40, 0x04, 0x04, 0xFF, 0, 0, 0 }; @@ -499,39 +505,19 @@ s16 D_800DFC78[26] = { 0xFFFF, 0x0000 }; +//Image textures, likely for the below menu s16 D_800DFCAC[4] = { 0x000B, 0x000C, 0x0002, 0xFFFF }; -u16 D_800DFCB4[112] = { - 0x00A1, 0x0020, 0x00A1, 0x0021, - 0x00A1, 0x0020, 0x0000, 0x00FF, - 0x8002, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x001E, 0x00A0, 0x001E, - 0x00A0, 0x001E, 0xFFFF, 0xFF00, - 0xFF02, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x0070, 0x00A0, 0x0070, - 0x00A0, 0x0070, 0xFFFF, 0xFF00, - 0xFF00, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x0080, 0x00A0, 0x0080, - 0x00A0, 0x0080, 0xFFFF, 0xFF00, - 0xFF00, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x00C0, 0x00A0, 0x00C0, - 0x00A0, 0x00C0, 0xFFFF, 0xFF00, - 0xFF00, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x00A0, 0x00D0, 0x00A0, 0x00D0, - 0x00A0, 0x00D0, 0xFFFF, 0xFF00, - 0xFF00, 0x0C00, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000 +MenuElement D_800DFCB4[7] = { + { 161, 32, 161, 33, 161, 32, 0, 0, 0, 255, 128, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 30, 160, 30, 160, 30, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 112, 160, 112, 160, 112, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 128, 160, 128, 160, 128, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 192, 160, 192, 160, 192, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 208, 160, 208, 160, 208, 255, 255, 255, 0, 255, 0, 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 }, }; s32 gShowControllerPakMenu = FALSE; @@ -551,7 +537,7 @@ u8 D_800DFDB4[10][2] = { { 0x0D, 0x64 }, { 0x0E, 0x64 }, { 0x05, 0x64 }, - { 0x04, 0x64 } + { 0x04, 0x64 }, }; s16 D_800DFDC8[2] = { -1, 0 }; @@ -609,42 +595,42 @@ s32 D_800DFFD0 = 0; s32 D_800DFFD4 = -1; MenuElement gCautionMenuTextElements[14] = { - { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 72, 160, 68, 160, 72, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 86, 160, 82, 160, 86, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 100, 160, 96, 160, 100, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 114, 160, 110, 160, 114, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 128, 160, 124, 160, 128, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 142, 160, 138, 160, 142, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 156, 160, 152, 160, 156, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 156, 160, 166, 160, 156, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 186, 160, 180, 160, 186, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 200, 160, 194, 160, 200, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 200, 160, 208, 160, 200, 255, 255, 255, 0, 255, 0, 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 }, + { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 72, 160, 68, 160, 72, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 86, 160, 82, 160, 86, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 100, 160, 96, 160, 100, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 114, 160, 110, 160, 114, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 128, 160, 124, 160, 128, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 142, 160, 138, 160, 142, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 156, 160, 152, 160, 156, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 156, 160, 166, 160, 156, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 186, 160, 180, 160, 186, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 200, 160, 194, 160, 200, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 200, 160, 208, 160, 200, 255, 255, 255, 0, 255, 0, 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 }, }; MenuElement gGameSelectTextElemsNoAdv2[7] = { - { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { -96, 39, -96, 39, -96, 39, 176, 224, 192, 255, 255, 0, 0, 7, NULL, 192, 44, 4, 4 }, - { 160, 104, 160, 104, 160, 104, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { -96, -9, -96, -9, -96, -9, 176, 224, 192, 255, 255, 0, 0, 7, NULL, 192, 44, 4, 4 }, - { 160, 152, 160, 152, 160, 152, 255, 255, 255, 0, 255, 2, 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 }, + { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { -96, 39, -96, 39, -96, 39, 176, 224, 192, 255, 255, 0, 0, 7, { NULL }, 192, 44, 4, 4 }, + { 160, 104, 160, 104, 160, 104, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { -96, -9, -96, -9, -96, -9, 176, 224, 192, 255, 255, 0, 0, 7, { NULL }, 192, 44, 4, 4 }, + { 160, 152, 160, 152, 160, 152, 255, 255, 255, 0, 255, 2, 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 }, }; MenuElement gGameSelectTextElemsWithAdv2[9] = { - { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { -112, 55, -112, 55, -112, 55, 176, 224, 192, 255, 255, 0, 0, 7, NULL, 224, 44, 4, 4 }, - { 160, 88, 160, 88, 160, 88, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { -112, 7, -112, 7, -112, 7, 176, 224, 192, 255, 255, 0, 0, 7, NULL, 224, 44, 4, 4 }, - { 160, 136, 160, 136, 160, 136, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { -112, -41, -112, -41, -112, -41, 176, 224, 192, 255, 255, 0, 0, 7, NULL, 224, 44, 4, 4 }, - { 160, 184, 160, 184, 160, 184, 255, 255, 255, 0, 255, 2, 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 }, + { 161, 35, 161, 35, 161, 35, 0, 0, 0, 255, 128, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 160, 32, 160, 32, 160, 32, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { -112, 55, -112, 55, -112, 55, 176, 224, 192, 255, 255, 0, 0, 7, { NULL }, 224, 44, 4, 4 }, + { 160, 88, 160, 88, 160, 88, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { -112, 7, -112, 7, -112, 7, 176, 224, 192, 255, 255, 0, 0, 7, { NULL }, 224, 44, 4, 4 }, + { 160, 136, 160, 136, 160, 136, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { -112, -41, -112, -41, -112, -41, 176, 224, 192, 255, 255, 0, 0, 7, { NULL }, 224, 44, 4, 4 }, + { 160, 184, 160, 184, 160, 184, 255, 255, 255, 0, 255, 2, 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 }, }; s16 D_800E0398[6] = { @@ -686,59 +672,53 @@ s32 gMultiplayerSelectedNumberOfRacers = 0; s32 D_800E0414 = 0; s32 D_800E0418 = 0; +DrawTexture D_800E041C[2] = { { NULL, -12, -8 }, { NULL, 0, 0 }}; +DrawTexture D_800E042C[2] = { { NULL, -8, -12 }, { NULL, 0, 0 }}; +DrawTexture D_800E043C[2] = { { NULL, -12, -8 }, { NULL, 0, 0 }}; +DrawTexture D_800E044C[2] = { { NULL, -8, -12 }, { NULL, 0, 0 }}; -unk800DFC10 D_800E041C = { NULL, -12, -8, 0, 0 }; -unk800DFC10 D_800E042C = { NULL, -8, -12, 0, 0 }; -unk800DFC10 D_800E043C = { NULL, -12, -8, 0, 0 }; -unk800DFC10 D_800E044C = { NULL, -8, -12, 0, 0 }; - -unk800DFC10 D_800E045C = { NULL, 0, 0, NULL, 0x20 }; -s32 D_800E046C[2] = { 0, 0 }; // Not sure what these are. -unk800DFC10 D_800E0474 = { NULL, 0, 0, NULL, 0x20 }; -s32 D_800E0484[2] = { 0, 0 }; // Not sure what these are. -unk800DFC10 D_800E048C = { NULL, 0, 0, NULL, 0x20 }; -s32 D_800E049C[2] = { 0, 0 }; // Not sure what these are. -unk800DFC10 D_800E04A4 = { NULL, 0, 0, NULL, 0x20 }; -s32 D_800E04B4[2] = { 0, 0 }; // Not sure what these are. -unk800DFC10 D_800E04BC = { NULL, 0, 0, NULL, 0x20 }; -s32 D_800E04CC[2] = { 0, 0 }; // Not sure what these are. -unk800DFC10 D_800E04D4 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E04E4 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E04F4 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0504 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0514 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0524 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0534 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0544 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0554 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0564 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0574 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0584 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0594 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E05A4 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E05B4 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E05C4 = { NULL, 0, 0, NULL, 0 }; +DrawTexture D_800E045C[3] = { { NULL, 0, 0 }, { NULL, 0, 32 }, { NULL, 0, 0 } }; +DrawTexture D_800E0474[3] = { { NULL, 0, 0 }, { NULL, 0, 32 }, { NULL, 0, 0 } }; +DrawTexture D_800E048C[3] = { { NULL, 0, 0 }, { NULL, 0, 32 }, { NULL, 0, 0 } }; +DrawTexture D_800E04A4[3] = { { NULL, 0, 0 }, { NULL, 0, 32 }, { NULL, 0, 0 } }; +DrawTexture D_800E04BC[3] = { { NULL, 0, 0 }, { NULL, 0, 32 }, { NULL, 0, 0 } }; +DrawTexture D_800E04D4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E04E4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E04F4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0504[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0514[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0524[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0534[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0544[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0554[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0564[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0574[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0584[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E0594[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E05A4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E05B4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; +DrawTexture D_800E05C4[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; // These are probably structs s32 D_800E05D4[8] = { 0, 0xFFD0, 0, 0xFFF0, 0, 0x10, 0, 0 }; s32 D_800E05F4[8] = { 0, 0xFFD0, 0, 0xFFF0, 0, 0x10, 0, 0 }; -unk800DFC10 D_800E0614 = { NULL, -16, -16, 0, 0 }; +DrawTexture D_800E0614[2] = { { NULL, -16, -16 }, { NULL, 0, 0 } }; -unk800DFC10 *D_800E0624[9] = { - &D_800E045C, &D_800E04D4, &D_800E04E4, &D_800E0474, &D_800E04F4, &D_800E0504, &D_800E048C, &D_800E0514, &D_800E0524 +DrawTexture *D_800E0624[9] = { + D_800E045C, D_800E04D4, D_800E04E4, D_800E0474, D_800E04F4, D_800E0504, D_800E048C, D_800E0514, D_800E0524 }; -unk800DFC10 *D_800E0648[6] = { - &D_800E04BC, &D_800E0544, &D_800E0564, &D_800E04A4, &D_800E0534, &D_800E0554 +DrawTexture *D_800E0648[6] = { + D_800E04BC, D_800E0544, D_800E0564, D_800E04A4, D_800E0534, D_800E0554 }; -unk800DFC10 *D_800E0660[6] = { - &D_800E0574, &D_800E0584, &D_800E0594, &D_800E05A4, &D_800E05B4, &D_800E05C4 +DrawTexture *D_800E0660[6] = { + D_800E0574, D_800E0584, D_800E0594, D_800E05A4, D_800E05B4, D_800E05C4 }; -unk800DFC10 *D_800E0678[4] = { - &D_800E041C, &D_800E042C, &D_800E043C, &D_800E044C +DrawTexture *D_800E0678[4] = { + D_800E041C, D_800E042C, D_800E043C, D_800E044C }; u16 D_800E0688[20] = { @@ -881,14 +861,20 @@ s32 D_800E097C = 0; s32 D_800E0980 = 0; s32 D_800E0984 = 0; s32 D_800E0988 = 0; -s32 D_800E098C = 0; +s32 D_800E098C = 0; //Player ID or controllerIndex maybe? -s16 D_800E0990[8] = { - 0x4040, 0xFFA0, 0xFF40, 0x40A0, 0xD0C0, 0x20B0, 0x20C0, 0x40B0 +ColourRGBA D_800E0990[4] = { + { 64, 64, 255, 160 }, + { 255, 64, 64, 160 }, + { 208, 192, 32, 176 }, + { 32, 192, 64, 176 }, }; -s16 D_800E09A0[8] = { - 0x00FF, 0x0080, 0x00FF, 0x0060, 0x0000, 0xFF60, 0x0000, 0xFF80 +ColourRGBA D_800E09A0[4] = { + { 0, 255, 0, 128 }, + { 0, 255, 0, 96 }, + { 0, 0, 255, 96 }, + { 0, 0, 255, 128 }, }; char *D_800E09B0[5] = { 0, 0, 0, 0, 0 }; @@ -908,21 +894,21 @@ s16 D_800E0A40[8] = { 0x0004, 0x0000, 0x0001, 0xFFFF, 0x0300, 0x0000, 0x0012, 0xFFFF }; -unk800DFC10 D_800E0A50 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0A60 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0A70 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0A80 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0A90 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0AA0 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0AB0 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0AC0 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0AD0 = { NULL, 0, 0, NULL, 0 }; -unk800DFC10 D_800E0AE0 = { NULL, 0, 0, NULL, 0 }; +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 } }; -unk800DFC10 *D_800E0AF0[10] = { - &D_800E0A50, &D_800E0A60, &D_800E0A70, &D_800E0A80, - &D_800E0A90, &D_800E0AA0, &D_800E0AB0, &D_800E0AC0, - &D_800E0AD0, &D_800E0AE0 +DrawTexture *D_800E0AF0[10] = { + D_800E0A50, D_800E0A60, D_800E0A70, D_800E0A80, + D_800E0A90, D_800E0AA0, D_800E0AB0, D_800E0AC0, + D_800E0AD0, D_800E0AE0 }; s16 D_800E0B18[74] = { @@ -962,43 +948,43 @@ char *gRacePlacementsArray[8] = { }; MenuElement D_800E0BEC[8] = { - { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 452, 166, 132, 166, -188, 166, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 560, 184, 240, 184, -80, 184, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 452, 180, 132, 180, -188, 180, 255, 192, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 452, 198, 132, 198, -188, 198, 255, 192, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 452, 216, 132, 216, -188, 216, 255, 192, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 560, 200, 240, 200, -80, 200, 128, 255, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0 }, + { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 452, 166, 132, 166, -188, 166, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 560, 184, 240, 184, -80, 184, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 452, 180, 132, 180, -188, 180, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 452, 198, 132, 198, -188, 198, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 452, 216, 132, 216, -188, 216, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 560, 200, 240, 200, -80, 200, 128, 255, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, }; MenuElement D_800E0CEC[11] = { - { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 }, - { 481, 166, 161, 166, -159, 166, 0, 0, 0, 255, 128, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 479, 164, 159, 164, -161, 164, 255, 255, 255, 0, 255, 0, 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 }, + { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, + { 481, 166, 161, 166, -159, 166, 0, 0, 0, 255, 128, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 479, 164, 159, 164, -161, 164, 255, 255, 255, 0, 255, 0, 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 }, }; MenuElement D_800E0E4C[9] = { - { 481, 174, 161, 174, -159, 174, 0, 0, 0, 255, 128, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 479, 172, 159, 172, -161, 172, 255, 255, 255, 0, 255, 0, 12, 0, NULL, 0, 0, 0, 0 }, - { 368, 192, 48, 192, -272, 192, 255, 64, 64, 96, 255, 0, 8, 0, NULL, 0, 0, 0, 0 }, - { 506, 187, 186, 187, -134, 187, 255, 192, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 578, 192, 258, 192, -62, 192, 255, 128, 255, 96, 255, 0, 12, 0, &D_80126390, 0, 0, 0, 0 }, - { 368, 212, 48, 212, -272, 212, 255, 64, 64, 96, 255, 0, 8, 0, NULL, 0, 0, 0, 0 }, - { 506, 207, 186, 207, -134, 207, 128, 255, 255, 0, 255, 0, 0, 1, NULL, 0, 0, 0, 0 }, - { 578, 212, 258, 212, -62, 212, 255, 128, 255, 96, 255, 0, 12, 0, &D_80126394, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0 }, + { 481, 174, 161, 174, -159, 174, 0, 0, 0, 255, 128, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 479, 172, 159, 172, -161, 172, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 368, 192, 48, 192, -272, 192, 255, 64, 64, 96, 255, 0, 8, 0, { NULL }, 0, 0, 0, 0 }, + { 506, 187, 186, 187, -134, 187, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 578, 192, 258, 192, -62, 192, 255, 128, 255, 96, 255, 0, 12, 0, { &D_80126390 }, 0, 0, 0, 0 }, + { 368, 212, 48, 212, -272, 212, 255, 64, 64, 96, 255, 0, 8, 0, { NULL }, 0, 0, 0, 0 }, + { 506, 207, 186, 207, -134, 207, 128, 255, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 578, 212, 258, 212, -62, 212, 255, 128, 255, 96, 255, 0, 12, 0, { &D_80126394 }, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, }; // Valid characters for name input. Must be u8, not char. @@ -1052,49 +1038,49 @@ s16 D_800E1044 = -1; MenuElement D_800E1048[9][3] = { { - { 481, 35, 161, 35, -159, 35, 0, 0, 0, 255, 128, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 480, 32, 160, 32, -160, 32, 255, 255, 255, 0, 255, 2, 12, 0, NULL, 0, 0, 0, 0 }, - { 64, -192, 64, 48, 64, 288, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 481, 35, 161, 35, -159, 35, 0, 0, 0, 255, 128, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 32, 160, 32, -160, 32, 255, 255, 255, 0, 255, 2, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 64, -192, 64, 48, 64, 288, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 32, -192, 32, 48, 32, 288, 255, 255, 255, 0, 255, 0, 0, 0, gFirstPlace, 0, 0, 0, 0 }, - { 130, -172, 130, 68, 130, 308, 255, 255, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[0], 0, 0, 0, 0 }, - { 64, -150, 64, 90, 64, 330, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 32, -192, 32, 48, 32, 288, 255, 255, 255, 0, 255, 0, 0, 0, { gFirstPlace }, 0, 0, 0, 0 }, + { 130, -172, 130, 68, 130, 308, 255, 255, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[0] }, 0, 0, 0, 0 }, + { 64, -150, 64, 90, 64, 330, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 32, -150, 32, 90, 32, 330, 255, 255, 255, 0, 255, 0, 0, 0, gSecondPlace, 0, 0, 0, 0 }, - { 130, -130, 130, 110, 130, 350, 255, 192, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[1], 0, 0, 0, 0 }, - { 64, -108, 64, 132, 64, 372, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 32, -150, 32, 90, 32, 330, 255, 255, 255, 0, 255, 0, 0, 0, { gSecondPlace }, 0, 0, 0, 0 }, + { 130, -130, 130, 110, 130, 350, 255, 192, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[1] }, 0, 0, 0, 0 }, + { 64, -108, 64, 132, 64, 372, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 32, -108, 32, 132, 32, 372, 255, 255, 255, 0, 255, 0, 0, 0, gThirdPlace, 0, 0, 0, 0 }, - { 130, -88, 130, 152, 130, 392, 255, 128, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[2], 0, 0, 0, 0 }, - { 64, -66, 64, 174, 64, 414, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 32, -108, 32, 132, 32, 372, 255, 255, 255, 0, 255, 0, 0, 0, { gThirdPlace }, 0, 0, 0, 0 }, + { 130, -88, 130, 152, 130, 392, 255, 128, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[2] }, 0, 0, 0, 0 }, + { 64, -66, 64, 174, 64, 414, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 32, -66, 32, 174, 32, 414, 255, 255, 255, 0, 255, 0, 0, 0, gFourthPlace, 0, 0, 0, 0 }, - { 130, -46, 130, 194, 130, 434, 255, 64, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[3], 0, 0, 0, 0 }, - { 220, 288, 220, 48, 220, -192, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 32, -66, 32, 174, 32, 414, 255, 255, 255, 0, 255, 0, 0, 0, { gFourthPlace }, 0, 0, 0, 0 }, + { 130, -46, 130, 194, 130, 434, 255, 64, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[3] }, 0, 0, 0, 0 }, + { 220, 288, 220, 48, 220, -192, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 188, 288, 188, 48, 188, -192, 255, 255, 255, 0, 255, 0, 0, 0, gFifthPlace, 0, 0, 0, 0 }, - { 286, 308, 286, 68, 286, -172, 255, 255, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[4], 0, 0, 0, 0 }, - { 220, 330, 220, 90, 220, -160, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 188, 288, 188, 48, 188, -192, 255, 255, 255, 0, 255, 0, 0, 0, { gFifthPlace }, 0, 0, 0, 0 }, + { 286, 308, 286, 68, 286, -172, 255, 255, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[4] }, 0, 0, 0, 0 }, + { 220, 330, 220, 90, 220, -160, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 188, 330, 188, 90, 188, -150, 255, 255, 255, 0, 255, 0, 0, 0, gSixthPlace, 0, 0, 0, 0 }, - { 286, 350, 286, 110, 286, -130, 255, 192, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[5], 0, 0, 0, 0 }, - { 220, 372, 220, 132, 220, -108, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 188, 330, 188, 90, 188, -150, 255, 255, 255, 0, 255, 0, 0, 0, { gSixthPlace }, 0, 0, 0, 0 }, + { 286, 350, 286, 110, 286, -130, 255, 192, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[5] }, 0, 0, 0, 0 }, + { 220, 372, 220, 132, 220, -108, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 188, 372, 188, 132, 188, -108, 255, 255, 255, 0, 255, 0, 0, 0, gSeventhPlace, 0, 0, 0, 0 }, - { 286, 392, 286, 152, 286, -88, 255, 128, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[6], 0, 0, 0, 0 }, - { 220, 414, 220, 174, 220, -66, 255, 255, 255, 0, 255, 0, 0, 3, &D_800E0A50, 0, 0, 0, 0 } + { 188, 372, 188, 132, 188, -108, 255, 255, 255, 0, 255, 0, 0, 0, { gSeventhPlace }, 0, 0, 0, 0 }, + { 286, 392, 286, 152, 286, -88, 255, 128, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[6] }, 0, 0, 0, 0 }, + { 220, 414, 220, 174, 220, -66, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 } }, { - { 188, 414, 188, 174, 188, -66, 255, 255, 255, 0, 255, 0, 0, 0, gEighthPlace, 0, 0, 0, 0 }, - { 286, 434, 286, 194, 286, -46, 255, 64, 255, 0, 255, 0, 4, 2, &gTrophyRacePointsArray[7], 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0 } + { 188, 414, 188, 174, 188, -66, 255, 255, 255, 0, 255, 0, 0, 0, { gEighthPlace }, 0, 0, 0, 0 }, + { 286, 434, 286, 194, 286, -46, 255, 64, 255, 0, 255, 0, 4, 2, { &gTrophyRacePointsArray[7] }, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 } }, }; @@ -1348,15 +1334,15 @@ s32 gCheatsInCreditsArray[21] = { s32 gViewingCreditsFromCheat = 0; // Set to 1 if viewing credits from "WHODIDTHIS" cheat MenuElement D_800E1B50[9] = { - { 480, 104, 160, 104, -160, 104, 255, 0, 255, 48, 255, 0, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, NULL, 0, 0, 0, 0 }, - { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 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 }, + { 480, 104, 160, 104, -160, 104, 255, 0, 255, 48, 255, 0, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 104, 160, 104, -160, 104, 255, 255, 255, 0, 255, 2, 4, 0, { NULL }, 0, 0, 0, 0 }, + { 480, 132, 160, 132, -160, 132, 255, 255, 255, 0, 255, 2, 4, 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 }, }; Gfx dMenuHudSettings[] = { @@ -1446,7 +1432,7 @@ s16 D_800E1E08[4] = { 0, 0, 0x34, -1 }; -s32 *D_800E1E10 = " (ADV."; +char *D_800E1E10 = " (ADV."; s32 D_800E1E14 = 0; s32 D_800E1E18 = 0; @@ -1547,7 +1533,7 @@ void load_menu_text(s32 language) { D_800E0E4C[2].unk14_a.asciiText = gMenuText[9]; // BEST TIME D_800E0E4C[5].unk14_a.asciiText = gMenuText[10]; // BEST LAP gOptionMenuStrings[0] = gMenuText[34]; // ENGLISH - if (D_80126448 & 0x2000000) { + if (sEepromSettings & 0x2000000) { gOptionMenuStrings[1] = gMenuText[182]; // SUBTITLES ON } else { gOptionMenuStrings[1] = gMenuText[183]; // SUBTITLES OFF @@ -1617,6 +1603,8 @@ void load_menu_text(s32 language) { D_800E09EC[4] = 0; D_800E09EC[5] = 0; D_800E09EC[0] = gMenuText[184]; // CORRUPT DATA. + //Three messages + //If you wish to change / Controller Pak or Rumble Pak, / please do so now. for (i = 0; i < 2; i++) { D_800E09B0[i + 1] = gMenuText[177 + i]; D_800E09C4[i + 1] = gMenuText[177 + i]; @@ -1975,7 +1963,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { s5 = FALSE; if (arg0 != 4) { - func_80067F2C(&D_801263A0, &D_801263A8); + func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); while (elem->unk14_a.element != NULL) { if (&D_80126850 != elem->unk14_a.element) { if (arg0 == 0) { @@ -2048,14 +2036,14 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { break; case 4: s5 = TRUE; - func_80078D00( + render_texture_rectangle_scaled( &D_801263A0, elem->unk14_a.element, xPos, yPos + D_800DF79C, elem->backgroundRed / 256.0f, elem->backgroundGreen / 256.0f, - (elem->filterRed << 0x18) | (elem->filterGreen << 0x10) | (elem->filterBlue << 8) | elem->opacity, + (elem->filterRed << 24) | (elem->filterGreen << 16) | (elem->filterBlue << 8) | elem->opacity, elem->textAlignFlags); break; case 5: @@ -2255,18 +2243,18 @@ s32 menu_logo_screen_loop(s32 updateRate) { * Sets some things needed after the title screen from the save buffer. */ void init_title_screen_variables(void) { - if (D_80126448 & 2) { + if (sEepromSettings & 2) { set_magic_code_flags(2); } - if ((D_80126448 & 0xFFFFF0) == 0xFFFFF0) { + if ((sEepromSettings & 0xFFFFF0) == 0xFFFFF0) { set_magic_code_flags(1); } - if (D_80126448 & 1) { + if (sEepromSettings & 1) { gIsInAdventureTwo = 1; } else { gIsInAdventureTwo = 0; } - if ((D_80126448 & 0x2000000) == 0) { + if ((sEepromSettings & 0x2000000) == 0) { func_800C2AF4(0); } load_menu_text(get_language()); @@ -2277,7 +2265,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_80083098.s") void menu_title_screen_init(void) { s32 i; s32 temp; - s8 *tempArr; + UNUSED s8 *tempArr; D_800DF488 = 1; D_801263BC = 0; @@ -2346,42 +2334,42 @@ void menu_options_init(void) { func_80000B18(); } -void func_800841B8(s32 arg0) { - s32 phi_s1; - s32 phi_a3; - s32 phi_s2; +//Draws options menu screen +void func_800841B8(UNUSED s32 arg0) { + s32 optionMenuTextIndex; + s32 alpha; + s32 yPos; set_text_font(FONT_LARGE); set_text_background_color(0, 0, 0, 0); - set_text_color(0, 0, 0, 0xFF, 0x80); - draw_text(&D_801263A0, 0xA1, 0x23, gMenuText[36], 0xC); - set_text_color(255, 255, 255, 0, 0xFF); - draw_text(&D_801263A0, 0xA0, 0x20, gMenuText[36], 0xC); + set_text_color(0, 0, 0, 255, 128); + draw_text(&D_801263A0, 161, 35, gMenuText[36], 0xC); // OPTIONS + set_text_color(255, 255, 255, 0, 255); + draw_text(&D_801263A0, 160, 32, gMenuText[36], 0xC); // OPTIONS - phi_s1 = 0; - phi_s2 = 0x4C; + optionMenuTextIndex = 0; + yPos = 76; set_text_font(FONT_COLOURFUL); - while (gOptionMenuStrings[phi_s1] != NULL) { - if (phi_s1 == D_800DF460) { - phi_a3 = D_801263BC * 8; - if (D_801263BC >= 0x20) { - phi_a3 = 0x1FF - phi_a3; + while (gOptionMenuStrings[optionMenuTextIndex] != NULL) { + if (optionMenuTextIndex == D_800DF460) { + alpha = D_801263BC * 8; + if (D_801263BC >= 32) { + alpha = 511 - alpha; } } else { - phi_a3 = 0; + alpha = 0; } - set_text_color(255, 255, 255, phi_a3, 0xFF); - draw_text(&D_801263A0, POS_CENTRED, phi_s2, gOptionMenuStrings[phi_s1], 0xC); + set_text_color(255, 255, 255, alpha, 255); + draw_text(&D_801263A0, POS_CENTRED, yPos, gOptionMenuStrings[optionMenuTextIndex], 0xC); - phi_s1++; - phi_s2 += 0x1C; + optionMenuTextIndex++; + yPos += 28; } } #ifdef NON_EQUIVALENT -// Should be functionally equivalent s32 menu_options_loop(s32 arg0) { s32 buttonsPressed; s32 analogX; @@ -2397,7 +2385,7 @@ s32 menu_options_loop(s32 arg0) { } } - if (gMenuDelay >= -0x13 && gMenuDelay < 0x23) { + if (gMenuDelay >= -19 && gMenuDelay < 35) { func_800841B8(arg0); } @@ -2416,18 +2404,18 @@ s32 menu_options_loop(s32 arg0) { if ((buttonsPressed & B_BUTTON) || ((buttonsPressed & (A_BUTTON | START_BUTTON)) && D_800DF460 == 5)) { // Leave the option menu - set_music_fade_timer(-0x80); + set_music_fade_timer(-128); gMenuDelay = -1; func_800C01D8(&sMenuTransitionFadeIn); func_80001D04(0x241, 0); - } else if ((buttonsPressed & 0x9000) && D_800DF460 >= 2) { + } else if ((buttonsPressed & (A_BUTTON | START_BUTTON)) && D_800DF460 >= 2) { // Go to a sub-menu - gMenuDelay = 0x1F; + gMenuDelay = 31; func_80001D04(0xEF, 0); } else if (D_800DF460 == 0 && analogX != 0) { // Change language - s32 temp_v0 = get_language(); - if ((temp_v0 >> 0x1F) == 0 && temp_v0 == 0) { + s32 currentLang = get_language(); + if ((currentLang >> 31) == 0 && currentLang == ENGLISH) { set_language(FRENCH); } else { set_language(ENGLISH); @@ -2435,14 +2423,14 @@ s32 menu_options_loop(s32 arg0) { func_80001D04(0xEB, 0); } else if (D_800DF460 == 1 && analogX != 0) { // Enable/Disable subtitles. - if (D_80126448 & 0x2000000) { - func_80001D04(0xEB, 0); - func_8009EABC(0); + if (sEepromSettings & 0x2000000) { + func_80001D04(0xEB, NULL); + unset_eeprom_settings_value(0); func_800C2AF4(0); gOptionMenuStrings[1] = gMenuText[183]; } else { func_80001D04(0xEB, 0); - func_8009EA78(0); + set_eeprom_settings_value(0); func_800C2AF4(1); gOptionMenuStrings[1] = gMenuText[182]; } @@ -2466,24 +2454,23 @@ s32 menu_options_loop(s32 arg0) { } } - if (gMenuDelay >= 0x1F) { + if (gMenuDelay >= 31) { // Change screen to a sub-menu - switch (D_800DF460) { - case 2: - func_80084734(); - menu_init(MENU_AUDIO_OPTIONS); - return 0; - case 3: - func_80084734(); - menu_init(MENU_SAVE_OPTIONS); - return 0; - default: - func_80084734(); - menu_init(MENU_MAGIC_CODES); - return 0; + if (D_800DF460 == 2) { + func_80084734(); + menu_init(MENU_AUDIO_OPTIONS); + return 0; } + if (D_800DF460 == 3) { + func_80084734(); + menu_init(MENU_SAVE_OPTIONS); + return 0; + } + func_80084734(); + menu_init(MENU_MAGIC_CODES); + return 0; } - if (gMenuDelay < -0x1E) { + if (gMenuDelay < -30) { // Change screen back to the title screen. func_80000B28(); func_80084734(); @@ -2715,12 +2702,12 @@ void menu_save_options_init(void) { allocate_menu_images(D_800DFCAC); func_8007FFEC(0xA); func_800C4170(2); - D_800DFC10.unk0 = D_80126550[71]; - D_800DFC20.unk0 = D_80126550[72]; - D_800DFC30.unk0 = D_80126550[75]; - D_800DFC40.unk0 = D_80126550[74]; - D_800DFC50.unk0 = D_80126550[73]; - D_800DFC60.unk0 = D_80126550[70]; + D_800DFC10[0].texture = D_80126550[71]; + D_800DFC20[0].texture = D_80126550[72]; + D_800DFC30[0].texture = D_80126550[75]; + D_800DFC40[0].texture = D_80126550[74]; + D_800DFC50[0].texture = D_80126550[73]; + D_800DFC60[0].texture = D_80126550[70]; func_8008E4B0(); func_8006EBA8(); func_800C01D8(&sMenuTransitionFadeOut); @@ -2729,33 +2716,32 @@ void menu_save_options_init(void) { GLOBAL_ASM("asm/non_matchings/menu/func_800853D0.s") GLOBAL_ASM("asm/non_matchings/menu/func_80085B9C.s") -s32 func_800860A8(s32 arg0, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4) { - s32 temp_v1; - s32 phi_t0; - - phi_t0 = 0; +s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4) { + s32 ret = 0; + if (*arg1 != 0) { - phi_t0 = func_80076194(arg0, &arg2[*arg3].unkC, &D_80126A20[arg0]); - if (phi_t0 == 0) { - if ((arg2[*arg3].unkC >= arg4) && (D_80126A20[arg0] > 0)) { + ret = get_free_space(controllerIndex, &arg2[*arg3].unkC, &D_80126A20[controllerIndex]); + if (ret == 0) { + if ((arg2[*arg3].unkC >= arg4) && (D_80126A20[controllerIndex] > 0)) { arg2[*arg3].unk0 = 8; - arg2[*arg3].unk6 = arg0; + arg2[*arg3].unk6 = controllerIndex; (*arg3)++; } } else { - if ((*arg1 < 0) && ((phi_t0 & 0xFF) == 7)) { + if ((*arg1 < 0) && ((ret & 0xFF) == 7)) { *arg1 = 0; - phi_t0 = 0; + ret = 0; } else { - temp_v1 = phi_t0 & 0xFF; + s32 temp_v1; + temp_v1 = ret & 0xFF; if (temp_v1 != 3 && temp_v1 != 2 && temp_v1 != 9) { - phi_t0 = 0; + ret = 0; } } } } - return phi_t0; + return ret; } void func_800861C8(unk800861C8 *arg0, s32 *arg1) { @@ -2766,7 +2752,7 @@ void func_800861C8(unk800861C8 *arg0, s32 *arg1) { arg0[*arg1].unk1 = 0; arg0[*arg1].unk2 = 0; arg0[*arg1].unk6 = i; - arg0[*arg1].unkC = get_s32_256(); + arg0[*arg1].unkC = get_game_data_file_size(); (*arg1)++; } } @@ -2775,76 +2761,75 @@ void func_800861C8(unk800861C8 *arg0, s32 *arg1) { GLOBAL_ASM("asm/non_matchings/menu/func_800862C4.s") GLOBAL_ASM("asm/non_matchings/menu/func_800867D4.s") -#ifdef NON_EQUIVALENT void func_80086A48(s32 arg0) { f32 temp, temp2; + f32 temp3, temp4; temp = D_80126BD4; temp2 = D_80126BE4; while (arg0 > 0) { if (D_80126A08 > 0) { - D_80126BDC += (temp - D_80126BDC) * 0.1f; + temp3 = temp - D_80126BDC; + D_80126BDC += (0.1f * temp3); } if (D_801263E0 > 0 && D_80126A00 > 0) { - D_80126BEC += (temp2 - D_80126BEC) * 0.1f; + temp4 = temp2 - D_80126BEC; + D_80126BEC += (0.1f * temp4); } arg0--; } } -#else -GLOBAL_ASM("asm/non_matchings/menu/func_80086A48.s") -#endif GLOBAL_ASM("asm/non_matchings/menu/func_80086AFC.s") GLOBAL_ASM("asm/non_matchings/menu/func_800871D8.s") -s32 func_800874D0(s32 arg0, s32 arg1) { - s32 sp1C; +s32 func_800874D0(s32 buttonsPressed, s32 arg1) { + s32 ret; - sp1C = 0; - if (arg0 & 0x4000) { + ret = 0; + if (buttonsPressed & B_BUTTON) { D_801263E0 = 0; if (D_80126A10 != D_80126A14) { func_800871D8(8); } else { func_80001D04(0x241, NULL); - sp1C = -1; + ret = -1; } - } else if (arg0 & 0x9000) { + } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { func_80001D04(0xEF, NULL); D_801263E0 = 4; } else if ((arg1 < 0) && (D_80126BD4 > 0)) { func_80001D04(0xEB, NULL); - D_80126BD4 = (s32)(D_80126BD4 - 1); + D_80126BD4--; } else if ((arg1 > 0) && (D_80126BD4 < (D_80126A08 - 1))) { func_80001D04(0xEB, NULL); - D_80126BD4 = (s32)(D_80126BD4 + 1); + D_80126BD4++; } - return sp1C; + return ret; } -s32 func_800875E4(s32 arg0, s32 arg1) { - if (arg0 & 0x4000) { +s32 func_800875E4(s32 buttonsPressed, s32 arg1) { + if (buttonsPressed & B_BUTTON) { func_80001D04(0x241, NULL); D_801263E0 = 3; - } else if (arg0 & 0x9000) { + } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { func_80001D04(0xEF, NULL); D_801263E0 = 6; } else if ((arg1 < 0) && (D_80126BE4 > 0)) { func_80001D04(0xEB, NULL); - D_80126BE4 = (s32)(D_80126BE4 - 1); + D_80126BE4--; } else if ((arg1 > 0) && (D_80126BE4 < D_80126A00 - 1)) { func_80001D04(0xEB, NULL); - D_80126BE4 = (s32)(D_80126BE4 + 1); + D_80126BE4++; } return 0; } -s32 func_800876CC(s32 arg0, s32 arg1) { - if (arg0 & 0x4000) { +s32 func_800876CC(s32 buttonsPressed, UNUSED s32 arg1) { + if (buttonsPressed & B_BUTTON) { func_80001D04(0x241, NULL); D_801263E0 = 5; - } else if (arg0 & 0x9000) { + } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { func_80001D04(0xEF, NULL); D_801263E0 = 7; D_801263D8 = 0; @@ -2865,7 +2850,144 @@ void func_80087EB8(void) { free_from_memory_pool(D_80126A64); } +#ifdef NON_EQUIVALENT +//Nearly complete +SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1) { + s32 ret; + s32 j = 0; + s32 k = 0; + s32 i = 0; + s32 controllerIndexVal; + s32 pakStatusSuccess; + s32 pakStatusError3; + s32 pakStatusError9; + s32 bytesFree; + s32 notesFree; + s32 pakStatusErrorNoFreeSpace; + s32 pakStatus; + + pakStatusSuccess = 0; + pakStatusError3 = 0; + pakStatusError9 = 0; + pakStatusErrorNoFreeSpace = 0; + //Is this really <= 0? + for (i = 0; i <= 0; i++) { + //sControllerPakIssueNotFound[i] = 0; + sControllerPakFatalErrorFound[i] = 0; + sControllerPakNoFreeSpace[i] = 0; + sControllerPakBadData[i] = 0; + ret = get_free_space(i, &bytesFree, ¬esFree); + pakStatus = ret & 0xFF; //Upper 2 bits are controller index + if (ret == CONTROLLER_PAK_GOOD) { + sControllerPakIssueNotFound[i] = 1; + if (bytesFree == 0 || notesFree == 0) { + sControllerPakNoFreeSpace[i] = 1; + if (sControllerPakDataPresent[i] == 0) { + pakStatusErrorNoFreeSpace++; + } + } + pakStatusSuccess++; + } else { + sControllerPakIssueNotFound[i] = 0; + //Bad data + if (pakStatus == CONTROLLER_PAK_BAD_DATA) { + sControllerPakBadData[i] = 1; + pakStatusError9++; + } + //Error inconsistent + if (pakStatus == CONTROLLER_PAK_INCONSISTENT) { + //Repair file system + repair_controller_pak(i); + } + //fatal error + if (pakStatus == CONTROLLER_PAK_WITH_BAD_ID) { + sControllerPakFatalErrorFound[i] = 1; + pakStatusError3++; + } + } + } + if ( (pakStatusSuccess == 0) + || (pakStatusError3 != 0) + || (pakStatusErrorNoFreeSpace != 0) + || (pakStatusError9 != 0)) { + return NO_CONTROLLER_PAK; // Return unsuccessfully? + } + + controllerIndexVal = *controllerIndex; + if (controllerIndexVal < 0) { + i = controllerIndexVal; + do { + controllerIndexVal++; + i++; + if (controllerIndexVal > 0) { + controllerIndexVal--; + i--; + } + } while (sControllerPakIssueNotFound[i] == 0); + } else if (sControllerPakIssueNotFound[*controllerIndex] == 0 || arg1 > 0) { + i = controllerIndexVal; + do { + controllerIndexVal++; + i++; + if (controllerIndexVal > 0) { + controllerIndexVal--; + i--; + } + } while (sControllerPakIssueNotFound[i] == 0); + } else if (arg1 < 0) { + i = controllerIndexVal; + do { + controllerIndexVal--; + i--; + if (controllerIndexVal < 0) {; + controllerIndexVal++; + i++; + } + } while (sControllerPakIssueNotFound[i] == 0); + } + + *controllerIndex = controllerIndexVal; + ret = get_controller_pak_file_list(controllerIndexVal, 16, &sCurrentControllerPakAllFileNames, &sCurrentControllerPakAllFileExtensions, &sCurrentControllerPakAllFileSizes, &sCurrentControllerPakAllFileTypes); + + if (ret == CONTROLLER_PAK_GOOD) { + i = 0; + j = 0; + do { + sCurrentControllerPakAllFileSizes[i] = sCurrentControllerPakAllFileSizes[i] / 256; + if (sCurrentControllerPakAllFileNames[i] != 0) { + k = 0; + for (; sCurrentControllerPakAllFileNames[i][k] != 0; j++, k++) { + D_80126AA0[i][j] = sCurrentControllerPakAllFileNames[i][k]; + } + + if ((sCurrentControllerPakAllFileExtensions[i] != 0) && (*sCurrentControllerPakAllFileExtensions[i] != 0)) { + D_80126AA0[i][j] = '.'; + j++; + k = 0; + for (; sCurrentControllerPakAllFileExtensions[i][k] != 0; j++, k++) { + D_80126AA0[i][j] = sCurrentControllerPakAllFileExtensions[i][k]; + } + } + } + if (j == 0) { + D_80126AA0[i][j] = '-'; + j++; + } + i++; + D_80126AA0[i - 1][j] = 0; + } while (&D_80126AA0 != &sCurrentControllerPakAllFileNames); + + func_80076164(); //Free D_800DE440 from memory + get_free_space(*controllerIndex, &sCurrentControllerPakFreeSpace, NULL); //Get Available Space in Controller Pak + sCurrentControllerPakFreeSpace = sCurrentControllerPakFreeSpace / 256; //Bytes + ret = pakStatus; //Really? + } + + return ret; +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80087F14.s") +#endif GLOBAL_ASM("asm/non_matchings/menu/func_8008832C.s") void menu_boot_init(void) { @@ -2885,26 +3007,19 @@ void menu_boot_init(void) { D_80126C18 = 0; // D_80126C18 is a timer for the boot screen, counts up to 0x8C frames. } -#ifdef NON_EQUIVALENT s32 menu_boot_loop(s32 arg0) { - // arg0 = sp30 - s32 out; // sp2C - s32 y; // sp28 - // ra = sp24 + s32 out; + s32 temp; + s32 y; out = 0; - // Regalloc issue. - // How do you make this not use a3 without introducing another local variable? y = 120; if (osTvType == TV_TYPE_PAL) { y = 132; } - - // You can make it use the correct register if you add in a temp variable like: - // temp = y; - // Then replace all the `y` instances below with `temp`. - // However, this makes the stack too big. There is no room for another local variable. :\ + + temp = y; switch (D_80126C20) { case 0: @@ -2929,28 +3044,25 @@ s32 menu_boot_loop(s32 arg0) { D_80126C20 = 2; } if (D_80126C18 >= 129) { - y = 300; + temp = 300; } break; case 2: if (gMenuDelay && func_800C018C() == 0) { func_800C01D8(&sMenuTransitionFadeInFast); } - y = 300; + temp = 300; out = func_800890AC(arg0); break; } - if (y < 300) { - render_textured_rectangle(&D_801263A0, &sGameTitleTileOffsets, 160, y, 255, 255, 255, 255); + if (temp < 300) { + render_textured_rectangle(&D_801263A0, &sGameTitleTileOffsets, 160, temp, 255, 255, 255, 255); func_8007B3D0(&D_801263A0); } return out; } -#else -GLOBAL_ASM("asm/non_matchings/menu/MenuBootLoop.s") -#endif void func_800887C4(void) { func_8009C4A8((s16 *)sGameTitleTileTextures); @@ -2968,7 +3080,7 @@ void func_800887E8(void) { } for (i = 0; i < 1; i++) { - D_80126A60[i] = 0; + sControllerPakDataPresent[i] = 0; } D_80126C10 = 0; @@ -2996,7 +3108,134 @@ void func_800887E8(void) { func_800C4170(2); } +#ifdef NON_EQUIVALENT +void func_80088938(s32 arg0) { + s32 alpha; + s32 i; + s8* phi_s2; + s8* phi_s0; + s8* phi_s4; + s32 phi_s3 = 1; + s32 yPos = 48; + //s32 yPos; + + set_text_background_color(0, 0, 0, 0); + alpha = D_801263BC << 3; + if (alpha >= 256) { + alpha = 511 - alpha; + } + if (D_80126BC8 != 0) { + draw_menu_elements(1, D_800DFCB4, 1.0f); + } else if (gShowControllerPakMenu != 0) { + set_text_font(2); + set_text_color(0, 0, 0, 255, 128); + draw_text(&D_801263A0, 161, 33, gMenuText[35], 12); + set_text_color(255, 255, 255, 0, 255); + draw_text(&D_801263A0, 160, 30, gMenuText[35], 12); + assign_dialogue_box_id(6); + + //HERE! + set_current_dialogue_box_coords(6, 58, yPos, 262, yPos + 30); + + + if (D_800DF460 == -1) { + set_current_dialogue_background_colour(6, 255, 255, 255, (alpha >> 1) + 128); + } else { + set_current_dialogue_background_colour(6, 96, 192, 92, 224); + } + + set_dialogue_font(6, 0); + set_current_text_colour(6, 255, 255, 255, 0, 255); + set_current_text_background_colour(6, 0, 0, 0, 0); + render_dialogue_text(6, POS_CENTRED, 2, gMenuText[86 + D_80126A68], phi_s3, 4); + render_dialogue_text(6, POS_CENTRED, 16, gMenuText[114], sCurrentControllerPakFreeSpace, 4); + render_dialogue_box(&D_801263A0, NULL, NULL, 6); + + //HERE! + yPos += 34; //To 82 + + set_dialogue_font(6, 1); + set_current_text_background_colour(6, 0, 0, 0, 0); + for (i = -1; i < D_80126BB4; i++) { + assign_dialogue_box_id(6); + set_current_dialogue_box_coords(6, 28, yPos, 292, yPos + 14); + if (i < 0) { + set_current_dialogue_background_colour(6, 224, 48, 48, 224); + set_current_text_colour(6, 224, 224, 48, 255, 255); + phi_s2 = gMenuText[115]; + phi_s0 = gMenuText[116]; + phi_s4 = gMenuText[117]; + phi_s3 = 1; + } else { + phi_s2 = &D_800E820C; + phi_s4 = &D_800E820C; + if (D_800DF460 == (i + D_801263D8)) { + set_current_dialogue_background_colour(6, 255, 255, 255, (alpha >> 1) + 128); + } else { + set_current_dialogue_background_colour(6, 224, 224, 48, 224); + } + set_current_text_colour(6, 16, 16, 160, 255, 255); + phi_s0 = D_80126AA0[D_801263D8 + i]; + phi_s3 = (s32) (&sCurrentControllerPakAllFileSizes)[D_801263D8 + i]; + } + render_dialogue_text(6, 26, 2, phi_s2, D_801263D8 + i + 1, 4); + render_dialogue_text(6, 56, 2, phi_s0, 1, 0); + render_dialogue_text(6, 240, 2, phi_s4, phi_s3, 4); + render_dialogue_box(&D_801263A0, NULL, NULL, 6); + yPos += 16; + } + if (D_801263D8 < (16 - D_80126BB4)) { + if ((D_801263BC & 8) != 0) { + render_textured_rectangle(&D_801263A0, (DrawTexture* ) &D_800E043C, 160, yPos + 8, (u8) 255, (u8) 255, (u8) 255, (u8) 255); + func_8007B3D0(&D_801263A0); + } + } else { + set_text_font(0); + if (D_800DF460 == 16) { + set_text_color(255, 255, 255, alpha, 255); + } else { + set_text_color(255, 255, 255, 0, 255); + } + draw_text(&D_801263A0, POS_CENTRED, yPos, gMenuText[51], 4); + } + if ((D_801263E0 != 0) && (D_80126C10 == 0)) { + if (osTvType == TV_TYPE_PAL) { + yPos = 134; + } else { + yPos = 120; + } + assign_dialogue_box_id(6); + set_dialogue_font(6, 0); + set_current_dialogue_box_coords(6, 76, yPos - 28, 244, yPos + 28); + set_current_dialogue_background_colour(6, 0, 0, 0, 160); + + for (yPos = 4, i = 0; i < 3; i++) { + if (i == 0) { + set_current_text_colour(6, 255, 0, 255, 64, 255); + } else if (i == D_801263E0) { + set_current_text_colour(6, 255, 255, 255, alpha, 255); + } else { + set_current_text_colour(6, 255, 255, 255, 0, 255); + } + render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[111 + i], D_800DF460 + 1, 4); + if (i != 0) { + yPos += 16; + } else { + yPos += 20; + } + } + render_dialogue_box(&D_801263A0, NULL, NULL, 6); + } + if (D_80126C10 != 0) { + set_text_color(255, 255, 255, 0, 255); + set_text_font(2); + draw_text(&D_801263A0, 160, 128, gMenuText[124], 12); + } + } +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80088938.s") +#endif GLOBAL_ASM("asm/non_matchings/menu/func_800890AC.s") void func_800895A4(void) { @@ -3489,7 +3728,7 @@ void menu_character_select_init(void) { /** * Draws the "Player Select" and "OK?" text in the character select menu. */ -void draw_character_select_text(s32 arg0) { +void draw_character_select_text(UNUSED s32 arg0) { s32 yPos; if (gMenuDelay >= -0x16 && gMenuDelay < 0x17) { set_text_font(FONT_LARGE); @@ -3563,12 +3802,7 @@ void randomize_ai_racer_slots(s32 arg0) { GLOBAL_ASM("asm/non_matchings/menu/randomize_ai_racer_slots.s") #endif -#if 1 -GLOBAL_ASM("asm/non_matchings/menu/menu_character_select_loop.s") -#else - -void func_8008C128(void); - +#ifdef NON_EQUIVALENT s32 menu_character_select_loop(s32 updateRate) { s32 i; s32 phi_a0; @@ -3647,7 +3881,8 @@ s32 menu_character_select_loop(s32 updateRate) { } return 0; } - +#else +GLOBAL_ASM("asm/non_matchings/menu/menu_character_select_loop.s") #endif void func_8008BFE8(s32 arg0, s8 *arg1, s32 arg2, u16 arg3, u16 arg4) { @@ -3793,7 +4028,7 @@ void func_8008C698(s32 arg0) { if (fade >= 0x100) { fade = 0x1FF - fade; } - func_80067F2C(&D_801263A0, &D_801263A8); + func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); for (i = 0; i <= D_801263E0; i++) { filterAlpha = 0; @@ -4002,7 +4237,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { } func_8009BD5C(); - func_80067F2C(&D_801263A0, &D_801263A8); + func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); for (i = 0; i < 3; i++) { // 3 files if (gSavefileInfo[i].isAdventure2 == gIsInAdventureTwo || gSavefileInfo[i].isStarted == 0) { color = 0xB0E0C0FF; @@ -4211,19 +4446,19 @@ void func_8008E428(void) { } void func_8008E45C(void) { - D_800E045C.unk0 = D_80126550[24]; - D_800E045C.unk8 = D_80126550[25]; - D_800E0474.unk0 = D_80126550[26]; - D_800E0474.unk8 = D_80126550[27]; - D_800E048C.unk0 = D_80126550[28]; - D_800E048C.unk8 = D_80126550[29]; + D_800E045C[0].texture = D_80126550[24]; + D_800E045C[1].texture = D_80126550[25]; + D_800E0474[0].texture = D_80126550[26]; + D_800E0474[1].texture = D_80126550[27]; + D_800E048C[0].texture = D_80126550[28]; + D_800E048C[1].texture = D_80126550[29]; } void func_8008E4B0(void) { - D_800E041C.unk0 = D_80126550[61]; - D_800E042C.unk0 = D_80126550[60]; - D_800E043C.unk0 = D_80126550[63]; - D_800E044C.unk0 = D_80126550[62]; + D_800E041C[0].texture = D_80126550[61]; + D_800E042C[0].texture = D_80126550[60]; + D_800E043C[0].texture = D_80126550[63]; + D_800E044C[0].texture = D_80126550[62]; } GLOBAL_ASM("asm/non_matchings/menu/func_8008E4EC.s") @@ -4348,7 +4583,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_8008FF1C.s") GLOBAL_ASM("asm/non_matchings/menu/func_800904E8.s") GLOBAL_ASM("asm/non_matchings/menu/func_80090918.s") -void func_80090ED8(s32 arg0) { +void func_80090ED8(UNUSED s32 arg0) { if (D_801263E0 == 1 && D_800E0414 == 0 && D_80126840 == 0) { func_80001D04(0x132, &D_80126840); } @@ -4382,7 +4617,7 @@ void render_track_select_setup_ui(s32 arg0) { } func_80066894(0, 1); func_8009BD5C(); - func_80067F2C(&D_801263A0, &D_801263A8); + func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); if (gMenuDelay < 0) { if (D_801269F4 == 4) { sp84 = 6; @@ -4676,8 +4911,8 @@ s32 func_80092BE0(s32 arg0) { } if (temp >= 0) { - s64 temp2 = 0x10 << temp; - if ((temp2 & D_80126448) == 0) { + u64 temp2 = 0x10 << temp; + if ((temp2 & sEepromSettings) == 0) { temp = -1; } } @@ -4716,14 +4951,14 @@ void menu_5_init(void) { func_8009C674(&D_800E0FB4); allocate_menu_images(&D_800E0FD8); func_8008E45C(); - D_800E04D4.unk0 = D_80126550[31]; - D_800E04E4.unk0 = D_80126550[30]; - D_800E04F4.unk0 = D_80126550[33]; - D_800E0504.unk0 = D_80126550[32]; - D_800E0514.unk0 = D_80126550[35]; - D_800E0524.unk0 = D_80126550[34]; - D_800E05B4.unk0 = D_80126550[48]; - D_800E0614.unk0 = D_80126550[94]; + D_800E04D4[0].texture = D_80126550[31]; + D_800E04E4[0].texture = D_80126550[30]; + D_800E04F4[0].texture = D_80126550[33]; + D_800E0504[0].texture = D_80126550[32]; + D_800E0514[0].texture = D_80126550[35]; + D_800E0524[0].texture = D_80126550[34]; + D_800E05B4[0].texture = D_80126550[48]; + D_800E0614[0].texture = D_80126550[94]; func_800C01D8(&sMenuTransitionFadeOut); D_801263BC = 0; gMenuDelay = 0; @@ -4863,7 +5098,93 @@ void func_80093A0C(void) { } GLOBAL_ASM("asm/non_matchings/menu/func_80093A40.s") + +#ifdef NON_EQUIVALENT +// In the right ballpark, but not right. +void func_80093D40(s32 arg0) { + s32 yOffset; + s32 i; + s32 xOffset; + s32 x; + ColourRGBA *colours; + s32 xPos; + s32 baseYPos; + s32 alpha; + + i = 0; + xPos = 160; + if (D_800E0984 > 0) { + do { + //func_800C4DA0(text, x, font) x = diffX - x + x = func_800C4DA0(&D_80126A40[i], 0, 0) + 8; + if (xPos < x) { + xPos = x; + } + i++; + } while (i < D_800E0984); + } + if (osTvType == TV_TYPE_PAL) { + baseYPos = 132; + } else { + baseYPos = 120; + } + func_800C56D0(7); + assign_dialogue_box_id(7); + yOffset = (s32) ((D_800E0984 * 16) + 28) >> 1; + xOffset = xPos >> 1; + set_current_dialogue_box_coords(7, 160 - xOffset, baseYPos - yOffset, xOffset + 160, yOffset + baseYPos); + colours = &D_800E0990[get_player_id(D_800E098C)]; + set_current_dialogue_background_colour(7, colours->r, colours->g, colours->b, colours->a); + set_dialogue_font(7, 0); + set_current_text_background_colour(7, 128, 128, 255, 0); + colours = &D_800E09A0[get_player_id(D_800E098C)]; + set_current_text_colour(7, colours->r, colours->g, colours->b, colours->a, 255); + alpha = D_801263BC * 8; + if (alpha >= 256) { + alpha = 511 - alpha; + } + if (D_800E0988 != 0) { + if (gTrophyRaceWorldId != 0) { + i = yOffset - 26; + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[130], 1, 12); // QUIT TROPHY RACE? + } else { + i = yOffset - 26; + render_dialogue_text(7, POS_CENTRED, i + 8, gMenuText[132], 1, 12); // QUIT GAME? + } + if (D_800E0988 == 1) { + set_current_text_colour(7, 255, 255, 255, alpha, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, POS_CENTRED, i + 28, gMenuText[134], 1, 12); // OK + if (D_800E0988 == 2) { + set_current_text_colour(7, 255, 255, 255, alpha, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, POS_CENTRED, i + 44, gMenuText[85], 1, 12); // CANCEL + } else { + render_dialogue_text(7, POS_CENTRED, 12, gMenuText[133], D_800E098C + 1, 12); // PAUSE OPTIONS + baseYPos = 32; + if (D_800E0984 > 0) { + do { + if (i == D_80126A68) { + set_current_text_colour(7, 255, 255, 255, alpha, 255); + } else { + set_current_text_colour(7, 255, 255, 255, 0, 255); + } + render_dialogue_text(7, POS_CENTRED, baseYPos, &D_80126A40[i], 1, 12); + i++; + baseYPos += 16; + } while (i < D_800E0984); + } + } + open_dialogue_box(7); +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80093D40.s") +#endif + GLOBAL_ASM("asm/non_matchings/menu/func_80094170.s") void n_alSynRemovePlayer(void) { @@ -4878,16 +5199,16 @@ void n_alSeqpDelete(void) { } void func_80094604(void) { - D_800E0A50.unk0 = D_80126550[50]; - D_800E0A60.unk0 = D_80126550[51]; - D_800E0A70.unk0 = D_80126550[52]; - D_800E0A90.unk0 = D_80126550[54]; - D_800E0A80.unk0 = D_80126550[53]; - D_800E0AA0.unk0 = D_80126550[55]; - D_800E0AB0.unk0 = D_80126550[56]; - D_800E0AC0.unk0 = D_80126550[57]; - D_800E0AD0.unk0 = D_80126550[58]; - D_800E0AE0.unk0 = D_80126550[59]; + D_800E0A50[0].texture = D_80126550[50]; + D_800E0A60[0].texture = D_80126550[51]; + D_800E0A70[0].texture = D_80126550[52]; + D_800E0A90[0].texture = D_80126550[54]; + D_800E0A80[0].texture = D_80126550[53]; + D_800E0AA0[0].texture = D_80126550[55]; + D_800E0AB0[0].texture = D_80126550[56]; + D_800E0AC0[0].texture = D_80126550[57]; + D_800E0AD0[0].texture = D_80126550[58]; + D_800E0AE0[0].texture = D_80126550[59]; } GLOBAL_ASM("asm/non_matchings/menu/func_80094688.s") @@ -5187,31 +5508,31 @@ void menu_trophy_race_round_init(void) { } #endif -void func_800983C0(s32 arg0) { - s32 sp2C; - s32 sp28; - s32 sp24; +void func_800983C0(UNUSED s32 arg0) { + s32 yPos; + char *sp28; + char *sp24; s8 *sp20; - sp20 = get_misc_asset(0x1A); + sp20 = get_misc_asset(26); if (osTvType == TV_TYPE_PAL) { - sp2C = 0x12; + yPos = 18; } else { - sp2C = 0; + yPos = 0; } sp28 = func_8006BDDC(func_8006B1D4(gTrophyRaceWorldId)); sp24 = func_8006BDDC(sp20[((gTrophyRaceWorldId - 1) * 6) + D_800E0FEC]); set_text_background_color(0, 0, 0, 0); set_text_font(FONT_LARGE); - set_text_color(0, 0, 0, 0xFF, 0x80); - draw_text(&D_801263A0, 0xA1, 0x23, sp28, 0xC); - draw_text(&D_801263A0, 0xA1, 0x43, gMenuText[70], 0xC); - set_text_color(255, 255, 255, 0, 0xFF); - draw_text(&D_801263A0, 0xA0, 0x20, sp28, 0xC); - draw_text(&D_801263A0, 0xA0, 0x40, gMenuText[70], 0xC); - draw_text(&D_801263A0, 0xA0, sp2C + 0xB0, gMenuText[138 + D_800E0FEC], 0xC); - draw_text(&D_801263A0, 0xA0, sp2C + 0xD0, sp24, 0xC); + set_text_color(0, 0, 0, 255, 128); + draw_text(&D_801263A0, 161, 35, sp28, 0xC); + draw_text(&D_801263A0, 161, 67, gMenuText[70], 0xC); // TROPHY RACE + set_text_color(255, 255, 255, 0, 255); + draw_text(&D_801263A0, 160, 32, sp28, 0xC); + draw_text(&D_801263A0, 160, 64, gMenuText[70], 0xC); // TROPHY RACE + draw_text(&D_801263A0, 160, yPos + 176, gMenuText[138 + D_800E0FEC], 0xC); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR + draw_text(&D_801263A0, 160, yPos + 208, sp24, 0xC); } GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_round_loop.s") @@ -6301,18 +6622,17 @@ s32 dialogue_race_defeat(void) { return state; } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING // Has a couple minor issues, but should be functionally equivalent. s32 tt_menu_loop(void) { - Settings *settings; s32 currentOption; - s32 buttonsPressed; // sp40 - s32 sp3C; - s32 sp38; - s32 sp24; - s32 sp20; + s32 buttonsPressed; s32 i; + s32 yPos1; + s32 yPos2; + Settings *settings; + s32 result; settings = get_settings(); @@ -6377,8 +6697,8 @@ s32 tt_menu_loop(void) { case 3: func_80001D04(0xEF, 0); func_80036BCC(0x22E, 1); - func_8009C674(&D_800E1E2C); - allocate_menu_images(&D_800E1E40); + func_8009C674(D_800E1E2C); + allocate_menu_images(D_800E1E40); D_800E1E28 = 1; sCurrentMenuID = TT_MENU_GAME_STATUS; break; @@ -6392,6 +6712,8 @@ s32 tt_menu_loop(void) { currentOption = 0; } if (currentOption == 3) { + //FAKEMATCH? + //if ((gControllersXAxisDirection && gControllersXAxisDirection) && gControllersXAxisDirection){} sCurrentMenuID = TT_MENU_EXIT; } if (sCurrentMenuID == TT_MENU_EXIT) { @@ -6399,19 +6721,19 @@ s32 tt_menu_loop(void) { } break; case TT_MENU_CONT_PAK_ERROR_1: - sp24 = 0; - while (D_801263A4[sp24] != NULL) { - sp24++; + i = 0; + while (D_801263A4[i] != NULL) { + i++; } - sp38 = 0x3A; - if (sp24 > 0) { - sp24--; - sp38 -= sp24 * 8; - sp24 = 0; - while (D_801263A4[sp24] != NULL) { - render_dialogue_text(1, POS_CENTRED, sp38, D_801263A4[sp24], 1, 4); - sp38 += 0x10; - sp24++; + yPos1 = 58; + if (i > 0) { + i--; + yPos1 -= (i * 8); + i = 0; + while (D_801263A4[i] != NULL) { + render_dialogue_text(1, POS_CENTRED, yPos1, D_801263A4[i], 1, 4); + yPos1 += 16; + i++; } } if (buttonsPressed & (A_BUTTON | B_BUTTON)) { @@ -6422,15 +6744,18 @@ s32 tt_menu_loop(void) { if (buttonsPressed & (A_BUTTON | B_BUTTON)) { sCurrentMenuID = TT_MENU_ROOT; D_800E1E28 = 0; - func_8009C4A8(&D_800E1E2C); + func_8009C4A8(D_800E1E2C); func_80036BCC(0x22F, 1); } break; case TT_MENU_INTRODUCTION: - sp20 = 6; - for (i = 52; gMenuText[i] != NULL; i++) { - render_dialogue_text(1, POS_CENTRED, sp20, gMenuText[i], 1, 4); - sp20 += 0x10; + // RIGHT HERE is where I to swap the timing of assignment of these two vars + yPos2 = 6; + i = 52; + while (gMenuText[i] != NULL) { + render_dialogue_text(1, POS_CENTRED, yPos2, gMenuText[i], 1, 4); + yPos2 += 16; + i++; } if (buttonsPressed & (A_BUTTON | B_BUTTON)) { settings->cutsceneFlags |= 2; @@ -6463,35 +6788,45 @@ s32 tt_menu_loop(void) { render_dialogue_text(1, POS_CENTRED, 50, gMenuText[124], 1, 4); // PLEASE WAIT D_80126398++; if (D_80126398 >= 5) { - s32 result = func_8001B738(0) & 0xFF; - if (result == 5) { + result = func_8001B738(0) & 0xFF; + if (result == CONTROLLER_PAK_CHANGED) { result = func_8001B738(0) & 0xFF; } switch (result) { - case 0: + case CONTROLLER_PAK_GOOD: sCurrentMenuID = D_8012639C; break; - case 7: + case RUMBLE_PAK: sCurrentMenuID = TT_MENU_INSERT_CONT_PAK; break; - case 1: - D_801263A4 = &D_800E09D8; + case NO_CONTROLLER_PAK: + // NO CONTROLLER PAK + // If you wish to change / Controller Pak or Rumble Pak, / please do so now. + D_801263A4 = D_800E09D8; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; - case 4: - case 6: - D_801263A4 = &D_800E09C4; + case CONTROLLER_PAK_FULL: + case CONTROLLER_PAK_UNK6: + // CONTROLLER PAK FULL + // If you wish to change / Controller Pak or Rumble Pak, / please do so now. + D_801263A4 = D_800E09C4; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; - case 9: - D_801263A4 = &D_800E09EC; + case CONTROLLER_PAK_BAD_DATA: + // CORRUPT DATA. + // If you wish to change / Controller Pak or Rumble Pak, / please do so now. + // TRY AGAIN! + D_801263A4 = D_800E09EC; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; - case 2: - case 3: - case 5: - case 8: - D_801263A4 = &D_800E09B0; + case CONTROLLER_PAK_INCONSISTENT: + case CONTROLLER_PAK_WITH_BAD_ID: + case CONTROLLER_PAK_CHANGED: + case CONTROLLER_PAK_UNK8: + default: + // BAD CONTROLLER PAK + // If you wish to change / Controller Pak or Rumble Pak, / please do so now. + D_801263A4 = D_800E09B0; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; } @@ -6568,7 +6903,7 @@ f32 func_8009E9B0(UNUSED DialogueBoxBackground *textbox, Gfx **dlist, Gfx **mat, D_801263A0 = *dlist; D_801263A8 = *mat; D_801263AC = *verts; - func_80067F2C(&D_801263A0, &D_801263A8); + func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); if (D_800E1E28 != 0 && sCurrentMenuID == 4) { func_8009E3D0(); } @@ -6578,24 +6913,24 @@ f32 func_8009E9B0(UNUSED DialogueBoxBackground *textbox, Gfx **dlist, Gfx **mat, return TRUE; } -s64 *func_8009EA6C(void) { - return &D_80126448; +u64 *get_eeprom_settings_pointer(void) { + return &sEepromSettings; } -s32 func_8009EA78(s64 arg0) { - D_80126448 |= arg0; +s32 set_eeprom_settings_value(u64 valueToSet) { + sEepromSettings |= valueToSet; func_8006ECE0(); return 1; } -s32 func_8009EABC(s64 arg0) { - D_80126448 &= ~arg0; +s32 unset_eeprom_settings_value(u64 valueToUnset) { + sEepromSettings &= ~valueToUnset; func_8006ECE0(); return 1; } -s64 func_8009EB08(void) { - return D_80126448; +u64 get_eeprom_settings(void) { + return sEepromSettings; } /** @@ -6604,7 +6939,7 @@ s64 func_8009EB08(void) { */ s32 get_language(void) { s32 language = ENGLISH; - switch (D_80126448 & 0xC) { + switch (sEepromSettings & 0xC) { case 4: language = GERMAN; break; @@ -6624,7 +6959,7 @@ s32 get_language(void) { * tried to switch to it, all you would see is the word "Japanese" used everywhere as a placeholder. */ void set_language(s32 language) { - s64 langFlag = 0; // English + u64 langFlag = 0; // English switch (language) { case GERMAN: @@ -6638,8 +6973,8 @@ void set_language(s32 language) { break; } - D_80126448 &= ~0xC; - D_80126448 |= langFlag; + sEepromSettings &= ~0xC; //Set bits 3 and 4 low first + sEepromSettings |= langFlag; //Then set them according to the selected lang load_menu_text(language); func_8006ECE0(); @@ -6649,7 +6984,7 @@ void set_language(s32 language) { * Returns TRUE if the player has adventure two unlocked. */ s32 is_adventure_two_unlocked(void) { - return D_80126448 & 1; + return sEepromSettings & 1; } /** diff --git a/src/menu.h b/src/menu.h index bcd279b4..5f6ed10b 100644 --- a/src/menu.h +++ b/src/menu.h @@ -158,14 +158,6 @@ typedef struct unk800DFA3C { u32* unkC; } unk800DFA3C; -typedef struct unk800DFC10 { - u32 *unk0; - s16 unk4; - s16 unk6; - u32 *unk8; - s32 unkC; -} unk800DFC10; - typedef struct unk800E03CC { s16 unk0; s16 unk2; @@ -203,7 +195,7 @@ typedef struct unk800860A8 { u8 pad1[0x5]; s8 unk6; u8 pad7[0x5]; - s32 unkC; + s32 unkC; //Used for bytes free in controller pak at one point. } unk800860A8; /* Size: 0x10 bytes */ @@ -353,21 +345,12 @@ extern s32* D_800DFBE0[10]; extern s32 D_800DFC08; extern s32 D_800DFC0C; -extern unk800DFC10 D_800DFC10; -extern unk800DFC10 D_800DFC20; -extern unk800DFC10 D_800DFC30; -extern unk800DFC10 D_800DFC40; -extern unk800DFC10 D_800DFC50; -extern unk800DFC10 D_800DFC60; - // Unused? extern u8 D_800DFC70[8]; extern s16 D_800DFC78[26]; -extern s16 D_800DFCAC[4]; - -extern u16 D_800DFCB4[112]; +extern MenuElement D_800DFCB4[7]; extern s32 gShowControllerPakMenu; @@ -414,51 +397,46 @@ extern s32 gMultiplayerSelectedNumberOfRacers; extern s32 D_800E0414; extern s32 D_800E0418; -extern unk800DFC10 D_800E041C; -extern unk800DFC10 D_800E042C; -extern unk800DFC10 D_800E043C; -extern unk800DFC10 D_800E044C; +extern DrawTexture D_800E041C[2]; +extern DrawTexture D_800E042C[2]; +extern DrawTexture D_800E043C[2]; +extern DrawTexture D_800E044C[2]; -extern unk800DFC10 D_800E045C; -extern s32 D_800E046C[2]; -extern unk800DFC10 D_800E0474; -extern s32 D_800E0484[2]; -extern unk800DFC10 D_800E048C; -extern s32 D_800E049C[2]; -extern unk800DFC10 D_800E04A4; -extern s32 D_800E04B4[2]; -extern unk800DFC10 D_800E04BC; -extern s32 D_800E04CC[2]; -extern unk800DFC10 D_800E04D4; -extern unk800DFC10 D_800E04E4; -extern unk800DFC10 D_800E04F4; -extern unk800DFC10 D_800E0504; -extern unk800DFC10 D_800E0514; -extern unk800DFC10 D_800E0524; -extern unk800DFC10 D_800E0534; -extern unk800DFC10 D_800E0544; -extern unk800DFC10 D_800E0554; -extern unk800DFC10 D_800E0564; -extern unk800DFC10 D_800E0574; -extern unk800DFC10 D_800E0584; -extern unk800DFC10 D_800E0594; -extern unk800DFC10 D_800E05A4; -extern unk800DFC10 D_800E05B4; -extern unk800DFC10 D_800E05C4; +extern DrawTexture D_800E045C[3]; +extern DrawTexture D_800E0474[3]; +extern DrawTexture D_800E048C[3]; +extern DrawTexture D_800E04A4[3]; +extern DrawTexture D_800E04BC[3]; +extern DrawTexture D_800E04D4[2]; +extern DrawTexture D_800E04E4[2]; +extern DrawTexture D_800E04F4[2]; +extern DrawTexture D_800E0504[2]; +extern DrawTexture D_800E0514[2]; +extern DrawTexture D_800E0524[2]; +extern DrawTexture D_800E0534[2]; +extern DrawTexture D_800E0544[2]; +extern DrawTexture D_800E0554[2]; +extern DrawTexture D_800E0564[2]; +extern DrawTexture D_800E0574[2]; +extern DrawTexture D_800E0584[2]; +extern DrawTexture D_800E0594[2]; +extern DrawTexture D_800E05A4[2]; +extern DrawTexture D_800E05B4[2]; +extern DrawTexture D_800E05C4[2]; // These are probably structs extern s32 D_800E05D4[8]; extern s32 D_800E05F4[8]; -extern unk800DFC10 D_800E0614; +extern DrawTexture D_800E0614[2]; -extern unk800DFC10 *D_800E0624[9]; +extern DrawTexture *D_800E0624[9]; -extern unk800DFC10 *D_800E0648[6]; +extern DrawTexture *D_800E0648[6]; -extern unk800DFC10 *D_800E0660[6]; +extern DrawTexture *D_800E0660[6]; -extern unk800DFC10 *D_800E0678[4]; +extern DrawTexture *D_800E0678[4]; extern u16 D_800E0688[20]; @@ -498,26 +476,22 @@ extern s32 D_800E0984; extern s32 D_800E0988; extern s32 D_800E098C; -extern s16 D_800E0990[8]; - -extern s16 D_800E09A0[8]; - extern s16 D_800E0A24[14]; extern s16 D_800E0A40[8]; -extern unk800DFC10 D_800E0A50; -extern unk800DFC10 D_800E0A60; -extern unk800DFC10 D_800E0A70; -extern unk800DFC10 D_800E0A90; -extern unk800DFC10 D_800E0A80; -extern unk800DFC10 D_800E0AA0; -extern unk800DFC10 D_800E0AB0; -extern unk800DFC10 D_800E0AC0; -extern unk800DFC10 D_800E0AD0; -extern unk800DFC10 D_800E0AE0; +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 unk800DFC10* D_800E0AF0[10]; +extern DrawTexture* D_800E0AF0[10]; extern s16 D_800E0B18[74]; @@ -643,7 +617,7 @@ extern char gRareCopyrightString[24]; //extern FadeTransition D_800E1E08; extern s16 D_800E1E08[4]; -extern s32 *D_800E1E10; +extern char *D_800E1E10; extern s32 D_800E1E14; extern s32 D_800E1E18; @@ -679,11 +653,11 @@ void func_80084734(void); void menu_audio_options_init(void); void func_800851FC(void); void menu_save_options_init(void); -s32 func_800860A8(s32 arg0, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4); +s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4); void func_800861C8(unk800861C8 *arg0, s32 *arg1); -s32 func_800874D0(s32 arg0, s32 arg1); -s32 func_800875E4(s32 arg0, s32 arg1); -s32 func_800876CC(s32 arg0, s32 arg1); +s32 func_800874D0(s32 buttonsPressed, s32 arg1); +s32 func_800875E4(s32 buttonsPressed, s32 arg1); +s32 func_800876CC(s32 buttonsPressed, s32 arg1); void func_80087EB8(void); void menu_boot_init(void); void func_800887C4(void); @@ -777,10 +751,10 @@ s32 trophy_race_cabinet_menu_loop(void); void dialogue_open_stub(void); void dialogue_close_stub(void); f32 func_8009E9B0(DialogueBoxBackground *arg0, Gfx **dlist, Gfx **mat, VertexList **vtx); -s64 *func_8009EA6C(void); -s32 func_8009EA78(s64 arg0); -s32 func_8009EABC(s64 arg0); -s64 func_8009EB08(void); +u64 *get_eeprom_settings_pointer(void); +s32 set_eeprom_settings_value(u64 valueToSet); +s32 unset_eeprom_settings_value(u64 valueToUnset); +u64 get_eeprom_settings(void); s32 get_language(void); void set_language(s32 language); s32 is_adventure_two_unlocked(void); @@ -822,5 +796,7 @@ void update_controller_sticks(void); s32 tt_menu_loop(void); void menu_track_select_init(void); void menu_trophy_race_rankings_init(void); +void func_8009E3D0(void); +s32 func_800C3564(void); #endif diff --git a/src/thread0_epc.c b/src/thread0_epc.c index 5c9c5223..d0c00bed 100644 --- a/src/thread0_epc.c +++ b/src/thread0_epc.c @@ -201,7 +201,7 @@ void func_800B7460(s32 *epc, s32 size, s32 mask) { sp38 += size; } } - func_800766D4(0, -1, &D_800E8EE8, &D_800E8EF0, &sp40, 0x800); + write_controller_pak_file(0, -1, &D_800E8EE8, &D_800E8EF0, &sp40, 0x800); while (1); // Infinite loop; waiting for the player to reset the console? } } @@ -225,8 +225,8 @@ s32 get_lockup_status(void) { return sLockupStatus; } else { sLockupStatus = 0; - if ((func_800758DC(controllerIndex) == 0) && //Rumble pack check? - (func_800764E8(controllerIndex, &D_800E8EF4, &D_800E8EFC, &fileNum) == 0) && + if ((get_si_device_status(controllerIndex) == 0) && //Rumble pack check? + (get_file_number(controllerIndex, &D_800E8EF4, &D_800E8EFC, &fileNum) == 0) && (read_data_from_controller_pak(controllerIndex, fileNum, (u8 *)&dataFromControllerPak, sizeof(dataFromControllerPak) * MAXCONTROLLERS) == 0)) { bcopy(&dataFromControllerPak, &gEpcInfo, sizeof(dataFromControllerPak) - 80); //Why less 80 (0x50)? @@ -234,9 +234,9 @@ s32 get_lockup_status(void) { bcopy(&sp420, &D_80129BB0, sizeof(sp420)); sLockupStatus = 1; } - func_80075AEC(controllerIndex); + start_reading_controller_data(controllerIndex); if (sLockupStatus) { - func_800762C8(controllerIndex, fileNum); + delete_file(controllerIndex, fileNum); } return sLockupStatus; } diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index 9a41c623..d2f7f223 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -195,7 +195,7 @@ s16 D_8011AE78; s16 D_8011AE7A; s16 D_8011AE7C; s8 D_8011AE7E; -s16 D_8011AE80; +s16 D_8011AE80; // TT Ghost outTime at least s16 D_8011AE82; s32 D_8011AE84; s32 D_8011AE88; @@ -247,7 +247,7 @@ s32 D_8011AFFC; s32 D_8011B000; s32 D_8011B004; s32 D_8011B008; -s32 D_8011B010[4]; +s32 D_8011B010[4]; //Possibly Misc Asset 20 pointers Object *D_8011B020[10]; s32 D_8011B048[4]; s32 D_8011B058[4]; @@ -1137,8 +1137,8 @@ s32 func_8001B650(void) { GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B668.s") -s32 func_8001B738(s32 arg0) { - return func_80059B7C(arg0, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724); +s32 func_8001B738(s32 controllerIndex) { + return func_80059B7C(controllerIndex, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724); } u8 func_8001B780() { diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 833fb3bf..b85c7f8c 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -173,7 +173,7 @@ s32 func_8001B2E0(); s32 func_8001B3AC(s32 arg0); s32 func_8001B640(); s32 func_8001B650(void); -s32 func_8001B738(s32 arg0); +s32 func_8001B738(s32 controllerIndex); u8 func_8001B780(); void func_8001B790(void); unknown8011AECC *func_8001BA00(s32 arg0); diff --git a/src/unknown_043920.c b/src/unknown_043920.c index ef9c0fa9..075b9bdc 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -897,8 +897,8 @@ void free_tt_ghost_data(void) { gGhostData[2] = NULL; } -s32 func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4) { - return func_80075000(arg0, (s16)arg1, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], gGhostData[D_8011D59C]); +s32 func_80059B7C(s32 controllerIndex, s32 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_80075000(controllerIndex, (s16)arg1, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], gGhostData[D_8011D59C]); } GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059BF0.s") diff --git a/src/unknown_043920.h b/src/unknown_043920.h index a0c5670d..a1e5e036 100644 --- a/src/unknown_043920.h +++ b/src/unknown_043920.h @@ -222,7 +222,7 @@ s32 func_800599A8(void); s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4); s32 load_tt_ghost(s32 ghostOffset, s32 size, s16 *outTime); void free_tt_ghost_data(void); -s32 func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4); +s32 func_80059B7C(s32 controllerIndex, s32 arg1, s16 arg2, s16 arg3, s16 arg4); s16 func_80059E20(void); void func_8005A3B0(void); void func_8005A3C0(void); diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index 1995dc32..5d753acf 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -852,7 +852,7 @@ void init_game(void) { calc_and_alloc_heap_for_settings(); func_8006EFDC(); load_fonts(); - func_80075B18(); + init_controller_paks(); func_80081218(); create_and_start_thread30(); osCreateMesgQueue(&gNMIMesgQueue, &gNMIMesgBuf, 1); @@ -1857,6 +1857,7 @@ void func_8006ECC4(void) { D_800DD37C |= 0x100; } +//Always called after updating a value in sEepromSettings void func_8006ECE0(void) { D_800DD37C |= 0x200; } diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 06fc41a4..5ea3c10b 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -377,4 +377,4 @@ void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 arg2, s32 arg GLOBAL_ASM("asm/non_matchings/unknown_078050/render_textured_rectangle.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078D00.s") +GLOBAL_ASM("asm/non_matchings/unknown_078050/render_texture_rectangle_scaled.s") diff --git a/src/unknown_078050.h b/src/unknown_078050.h index c8e8c053..c711956b 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -43,6 +43,6 @@ void func_800787F0(void); void render_background(Gfx **dlist, s32 *arg1, s32 arg2); void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha); -void func_80078D00(Gfx**, void *element, s32, s32, f32, f32, u32, s32); +void render_texture_rectangle_scaled(Gfx **dlist, DrawTexture *element, f32 x, f32 y, f32 x_scale, f32 y_scale, u32 color, s32 flip); #endif diff --git a/src/unknown_0ABDF0.c b/src/unknown_0ABDF0.c index 4bd848a8..1a5b41d9 100644 --- a/src/unknown_0ABDF0.c +++ b/src/unknown_0ABDF0.c @@ -86,17 +86,23 @@ f32 D_800E2AA0 = -200.0f; f32 D_800E2AA4 = -200.0f; f32 D_800E2AA8 = -200.0f; -s16 D_800E2AAC[80] = { - 0, 0, 0, -1, -1, 0, 0, 0, - -1, -1, 0, 0, 0, -1, -1, 0, - 0, 0, -1, -1, 0, 0, 0, -1, - -1, 0, 0, 0, -1, -1, 0, 0, - 0, -1, -1, 0, 0, 0, -1, -1, - 0, 0, 0, -1, -1, 0, 0, 0, - -1, -1, 0, 0, 0, -1, -1, 0, - 0, 0, -1, -1, 0, 0, 0, -1, - -1, 0, 0, 0, -1, -1, 0, 0, - 0, -1, -1, 0, 0, 0, -1, -1 +Vertex D_800E2AAC[16] = { + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, + { 0, 0, 0, 255, 255, 255, 255 }, }; unk800E2B4C D_800E2B4C[8] = { @@ -111,8 +117,8 @@ unk800E2B4C D_800E2B4C[8] = { }; unk800E2C2C D_800E2C2C[2] = { - { 0, 0x400, 0x400, 0x000AFFC4, 0, 0x80FF, 0xFF80, 0x80FF, 0x8000 }, - { 0, 0x600, 0x600, 0x0020FF40, 0, 0xFFFF, 0xFF00, 0x80FF, 0xFF00 } + { 0, 0, 0x400, 0x400, 0x000A, 0xFFC4, NULL, 0x80, 0xFF, 0xFF, 0x80, 0x80, 0xFF, 0x80, 0x00 }, + { 0, 0, 0x600, 0x600, 0x0020, 0xFF40, NULL, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0x00 } }; s32 D_800E2C5C = 0; @@ -131,9 +137,8 @@ Sprite *D_800E2C8C = 0; s32 D_800E2C90 = 0; s32 D_800E2C94 = 0; -s16 D_800E2C98[4] = { - 0x40FF, 0xFFFF, 0x0005, 0x0002 -}; + +FadeTransition D_800E2C98 = FADE_TRANSITION(0x40, FADE_COLOR_WHITE, 5, 2); /*******************************/ @@ -147,11 +152,11 @@ s32 D_80127BFC; s32 D_80127C00; s32 D_80127C04; s32 D_80127C08; -s32 D_80127C0C; +Gfx *D_80127C0C; s32 D_80127C10; s32 D_80127C14; -s32 D_80127C18; -s16 *D_80127C1C; +Triangle *D_80127C18; +Object *D_80127C1C; s32 D_80127C20; s32 D_80127C24; s32 D_80127C28; @@ -223,13 +228,13 @@ GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800AD030.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800AD144.s") void func_800AD220(void) { - if (D_800E2C2C[0].unkC != NULL) { - free_texture(D_800E2C2C[0].unkC); + if (D_800E2C2C[0].tex != NULL) { + free_texture(D_800E2C2C[0].tex); D_800E2C88 = 0; } - if (D_800E2C2C[1].unkC != NULL) { - free_texture(D_800E2C2C[1].unkC); + if (D_800E2C2C[1].tex != NULL) { + free_texture(D_800E2C2C[1].tex); D_800E2C88 = 0; } @@ -268,8 +273,79 @@ void func_800AD4AC(s32 arg0) { D_800E2C6C = arg0; } -GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800AD4B8.s") +void func_800AD4B8(s32 arg0) { + s32 i; + + if ((get_viewport_count() == 0) && (D_800E2C5C != 0)) { + if (D_800E2C78 > 0) { + if (arg0 < D_800E2C78) { + D_800E2C78 -= arg0; + D_800E2C60 += D_800E2C64 * arg0; + D_800E2C6C += D_800E2C70 * arg0; + } else { + D_800E2C78 = 0; + D_800E2C60 = D_800E2C68; + D_800E2C6C = D_800E2C74; + } + } + func_800ADBC8(arg0); + func_800AD658(arg0); + func_800ADAB8(arg0); + if (D_800E2C60 >= 256) { + func_80067F2C(&D_80127C0C, &D_80127C10); + for(i = 0; i < 2; i++) { + func_800ADCBC(&D_800E2C2C[i], arg0); + } + gDPSetPrimColor(D_80127C0C++, 0, 0, 255, 255, 255, 255); + gDPSetEnvColor(D_80127C0C++, 255, 255, 255, 0); + func_8007B3D0(&D_80127C0C); + func_800682AC(&D_80127C0C); + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800AD658.s") -GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800ADAB8.s") -GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800ADBC8.s") + +void func_800ADAB8(s32 arg0) { + if (D_800E2C80 > 0) { + D_800E2C80 -= arg0; + if (D_800E2C80 <= 0) { + if (D_800E2C6C >= 32769 && func_800C018C() == 0) { + func_800C01D8(&D_800E2C98); + } + func_80001D04(39, 0); + D_800E2C80 = 0; + } + } else if (D_800E2C60 >= 48000) { + if (D_800E2C7C > 0) { + D_800E2C7C -= arg0; + return; + } + func_80001D04(575, 0); + D_800E2C80 = 600 - ((s32) (D_800E2C60 + -48000) >> 5); + D_800E2C7C = get_random_number_from_range(900, 1140) - ((s32) (D_800E2C60 + -48000) >> 5); + } +} + +void func_800ADBC8(UNUSED s32 arg0) { + f32 temp_f14; + f32 temp_f16; + f32 temp_f18; + f32 sp28; + f32 sp24; + f32 temp_f2; + + sp28 = 1152.0f - (f32) (D_800E2C60 >> 6); + sp24 = func_800707C4(D_80127C1C->y_rotation) * sp28; + temp_f2 = func_800707F8(D_80127C1C->y_rotation) * sp28; + temp_f14 = D_80127C1C->x_position + (temp_f2 - sp24); + temp_f16 = D_80127C1C->y_position; + temp_f18 = D_80127C1C->z_position + (-temp_f2 - sp24); + if (D_800E2C94 != 0) { + func_800096D8(D_800E2C94, temp_f14, temp_f16, temp_f18); + } else { + func_80009558(574, temp_f14, temp_f16, temp_f18, 1, &D_800E2C94); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800ADCBC.s") diff --git a/src/unknown_0ABDF0.h b/src/unknown_0ABDF0.h index 091976e2..08c882b9 100644 --- a/src/unknown_0ABDF0.h +++ b/src/unknown_0ABDF0.h @@ -3,6 +3,7 @@ #include "types.h" #include "textures_sprites.h" +#include "audio.h" /* Size: 0x2C Bytes */ typedef struct unk800E2850 { @@ -45,15 +46,21 @@ typedef struct unk800E2B4C { /* Size: 0x18 Bytes */ typedef struct unk800E2C2C { - s32 unk0; + s16 unk0; + s16 unk2; s16 unk4; s16 unk6; - s32 unk8; - TextureHeader *unkC; - s16 unk10; - s16 unk12; - s16 unk14; - s16 unk16; + s16 unk8; + s16 unkA; + TextureHeader *tex; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; } unk800E2C2C; typedef struct { @@ -69,5 +76,12 @@ void func_800ACF60(Object *arg0); void func_800AD220(void); void func_800AD2C4(s32 arg0, s32 arg1, f32 arg2); void func_800AD40C(void); +void func_800ADBC8(s32); +void func_800AD658(s32); +void func_800ADAB8(s32); +void func_800ADCBC(unk800E2C2C*, s32); + +f32 func_800707C4(s16); +f32 func_800707F8(s16); #endif diff --git a/src/unknown_0CEC50.c b/src/unknown_0CEC50.c index adf6124b..afca9146 100644 --- a/src/unknown_0CEC50.c +++ b/src/unknown_0CEC50.c @@ -3,5 +3,9 @@ #include "types.h" #include "macros.h" +#include "unknown_0CEC50.h" +//Takes a char pointer, the string to populate it with, and the length of that string. +//Example: +//func_800CE050(&gameName, "DKRACING-ADV", strlen("DKRACING-ADV")); GLOBAL_ASM("lib/asm/non_matchings/unknown_0CEC50/func_800CE050.s") diff --git a/src/unknown_0CEC50.h b/src/unknown_0CEC50.h new file mode 100644 index 00000000..7f1d2158 --- /dev/null +++ b/src/unknown_0CEC50.h @@ -0,0 +1,12 @@ +#ifndef _UNKNOWN_0CEC50_H_ +#define _UNKNOWN_0CEC50_H_ + +#include "types.h" +#include "structs.h" + +//Takes a char pointer, the string to populate it with, and the length of that string. +//Example: +//func_800CE050(&gameName, "DKRACING-ADV", strlen("DKRACING-ADV")); +s32 func_800CE050(u8 *stringToPopulate, char *string, u32 stringLen); + +#endif