diff --git a/asm/non_matchings/unknown_0255E0/func_8002F2AC.s b/asm/non_matchings/unknown_0255E0/func_8002F2AC.s index 38e818b7..3b298371 100644 --- a/asm/non_matchings/unknown_0255E0/func_8002F2AC.s +++ b/asm/non_matchings/unknown_0255E0/func_8002F2AC.s @@ -1,9 +1,9 @@ glabel func_8002F2AC /* 02FEAC 8002F2AC 3C038012 */ lui $v1, %hi(D_8011B118) # $v1, 0x8012 /* 02FEB0 8002F2B0 8C63B118 */ lw $v1, %lo(D_8011B118)($v1) -/* 02FEB4 8002F2B4 3C0E8012 */ lui $t6, 0x8012 +/* 02FEB4 8002F2B4 3C0E8012 */ lui $t6, %hi(D_8011B120) # $t6, 0x8012 /* 02FEB8 8002F2B8 18600028 */ blez $v1, .L8002F35C -/* 02FEBC 8002F2BC 25C4B120 */ addiu $a0, $t6, -0x4ee0 +/* 02FEBC 8002F2BC 25C4B120 */ addiu $a0, $t6, %lo(D_8011B120) /* 02FEC0 8002F2C0 00037900 */ sll $t7, $v1, 4 /* 02FEC4 8002F2C4 01E42821 */ addu $a1, $t7, $a0 /* 02FEC8 8002F2C8 24840010 */ addiu $a0, $a0, 0x10 diff --git a/asm/non_matchings/unknown_032760/func_8003833C.s b/asm/non_matchings/unknown_032760/func_8003833C.s index 9cf77047..fcbb2397 100644 --- a/asm/non_matchings/unknown_032760/func_8003833C.s +++ b/asm/non_matchings/unknown_032760/func_8003833C.s @@ -30,26 +30,26 @@ glabel func_8003833C /* 038FAC 800383AC 0C027B2E */ jal is_tt_unlocked /* 038FB0 800383B0 00000000 */ nop /* 038FB4 800383B4 10400005 */ beqz $v0, .L800383CC -/* 038FB8 800383B8 3C06800E */ lui $a2, 0x800e +/* 038FB8 800383B8 3C06800E */ lui $a2, %hi(D_800DCA58) # $a2, 0x800e /* 038FBC 800383BC 3C06800E */ lui $a2, %hi(D_800DCA70) # $a2, 0x800e /* 038FC0 800383C0 24C6CA70 */ addiu $a2, %lo(D_800DCA70) # addiu $a2, $a2, -0x3590 /* 038FC4 800383C4 1000000E */ b .L80038400 /* 038FC8 800383C8 2404000A */ li $a0, 10 .L800383CC: -/* 038FCC 800383CC 24C6CA58 */ addiu $a2, $a2, -0x35a8 +/* 038FCC 800383CC 24C6CA58 */ addiu $a2, %lo(D_800DCA58) # addiu $a2, $a2, -0x35a8 /* 038FD0 800383D0 1000000B */ b .L80038400 /* 038FD4 800383D4 24040009 */ li $a0, 9 .L800383D8: /* 038FD8 800383D8 0C027B2E */ jal is_tt_unlocked /* 038FDC 800383DC 00000000 */ nop /* 038FE0 800383E0 10400005 */ beqz $v0, .L800383F8 -/* 038FE4 800383E4 3C06800E */ lui $a2, 0x800e +/* 038FE4 800383E4 3C06800E */ lui $a2, %hi(D_800DCA50) # $a2, 0x800e /* 038FE8 800383E8 3C06800E */ lui $a2, %hi(D_800DCA64) # $a2, 0x800e /* 038FEC 800383EC 24C6CA64 */ addiu $a2, %lo(D_800DCA64) # addiu $a2, $a2, -0x359c /* 038FF0 800383F0 10000003 */ b .L80038400 /* 038FF4 800383F4 24040009 */ li $a0, 9 .L800383F8: -/* 038FF8 800383F8 24C6CA50 */ addiu $a2, $a2, -0x35b0 +/* 038FF8 800383F8 24C6CA50 */ addiu $a2, %lo(D_800DCA50) # addiu $a2, $a2, -0x35b0 /* 038FFC 800383FC 24040008 */ li $a0, 8 .L80038400: /* 039000 80038400 1880000E */ blez $a0, .L8003843C diff --git a/asm/non_matchings/unknown_066AA0/func_80069F28.s b/asm/non_matchings/unknown_066AA0/func_80069F28.s index 301b3a39..f2628b53 100644 --- a/asm/non_matchings/unknown_066AA0/func_80069F28.s +++ b/asm/non_matchings/unknown_066AA0/func_80069F28.s @@ -1,9 +1,9 @@ glabel func_80069F28 /* 06AB28 80069F28 3C038012 */ lui $v1, %hi(D_80120CE0) # $v1, 0x8012 /* 06AB2C 80069F2C 8C630CE0 */ lw $v1, %lo(D_80120CE0)($v1) -/* 06AB30 80069F30 3C0E8012 */ lui $t6, 0x8012 +/* 06AB30 80069F30 3C0E8012 */ lui $t6, %hi(D_80120AC0) # $t6, 0x8012 /* 06AB34 80069F34 04600009 */ bltz $v1, .L80069F5C -/* 06AB38 80069F38 25C20AC0 */ addiu $v0, $t6, 0xac0 +/* 06AB38 80069F38 25C20AC0 */ addiu $v0, $t6, %lo(D_80120AC0) /* 06AB3C 80069F3C 00037900 */ sll $t7, $v1, 4 /* 06AB40 80069F40 01E37821 */ addu $t7, $t7, $v1 /* 06AB44 80069F44 000F7880 */ sll $t7, $t7, 2 diff --git a/asm/non_matchings/unknown_071730/func_80071850.s b/asm/non_matchings/unknown_071730/func_80071850.s index 39c6e069..24625541 100644 --- a/asm/non_matchings/unknown_071730/func_80071850.s +++ b/asm/non_matchings/unknown_071730/func_80071850.s @@ -46,9 +46,9 @@ glabel func_80071850 /* 0724E4 800718E4 ACA0FFF0 */ sw $zero, -0x10($a1) /* 0724E8 800718E8 3C048012 */ lui $a0, %hi(D_801235C0) # $a0, 0x8012 /* 0724EC 800718EC 8C8435C0 */ lw $a0, %lo(D_801235C0)($a0) -/* 0724F0 800718F0 3C0E8012 */ lui $t6, 0x8012 +/* 0724F0 800718F0 3C0E8012 */ lui $t6, %hi(D_80123580) # $t6, 0x8012 /* 0724F4 800718F4 1880003B */ blez $a0, .L800719E4 -/* 0724F8 800718F8 25C53580 */ addiu $a1, $t6, 0x3580 +/* 0724F8 800718F8 25C53580 */ addiu $a1, $t6, %lo(D_80123580) /* 0724FC 800718FC 00047900 */ sll $t7, $a0, 4 /* 072500 80071900 01E55021 */ addu $t2, $t7, $a1 /* 072504 80071904 24100014 */ li $s0, 20 diff --git a/asm/non_matchings/unknown_071730/func_80071A24.s b/asm/non_matchings/unknown_071730/func_80071A24.s index 933950f2..18f8e610 100644 --- a/asm/non_matchings/unknown_071730/func_80071A24.s +++ b/asm/non_matchings/unknown_071730/func_80071A24.s @@ -157,9 +157,9 @@ glabel func_80071A24 /* 072874 80071C74 3C038012 */ lui $v1, %hi(D_801235C0) # $v1, 0x8012 /* 072878 80071C78 8C6335C0 */ lw $v1, %lo(D_801235C0)($v1) -/* 07287C 80071C7C 3C0E8012 */ lui $t6, 0x8012 +/* 07287C 80071C7C 3C0E8012 */ lui $t6, %hi(D_80123580) # $t6, 0x8012 /* 072880 80071C80 04600017 */ bltz $v1, .L80071CE0 -/* 072884 80071C84 25C43580 */ addiu $a0, $t6, 0x3580 +/* 072884 80071C84 25C43580 */ addiu $a0, $t6, %lo(D_80123580) /* 072888 80071C88 00037900 */ sll $t7, $v1, 4 /* 07288C 80071C8C 01E44021 */ addu $t0, $t7, $a0 /* 072890 80071C90 240C0014 */ li $t4, 20 diff --git a/asm/non_matchings/unknown_07AF10/func_8007A550.s b/asm/non_matchings/unknown_07AF10/func_8007A550.s index 9fd96b03..35120eb0 100644 --- a/asm/non_matchings/unknown_07AF10/func_8007A550.s +++ b/asm/non_matchings/unknown_07AF10/func_8007A550.s @@ -86,8 +86,8 @@ glabel func_8007A550 /* 07B284 8007A684 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 /* 07B288 8007A688 0C01EAFF */ jal func_8007ABFC /* 07B28C 8007A68C 24060050 */ li $a2, 80 -/* 07B290 8007A690 3C058012 */ lui $a1, 0x8012 -/* 07B294 8007A694 24A46260 */ addiu $a0, $a1, 0x6260 +/* 07B290 8007A690 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 +/* 07B294 8007A694 24A46260 */ addiu $a0, $a1, %lo(D_80126260) /* 07B298 8007A698 24020500 */ li $v0, 1280 /* 07B29C 8007A69C 24190280 */ li $t9, 640 /* 07B2A0 8007A6A0 24080400 */ li $t0, 1024 @@ -114,8 +114,8 @@ glabel func_8007A550 /* 07B2EC 8007A6EC 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 /* 07B2F0 8007A6F0 0C01EAFF */ jal func_8007ABFC /* 07B2F4 8007A6F4 24060050 */ li $a2, 80 -/* 07B2F8 8007A6F8 3C058012 */ lui $a1, 0x8012 -/* 07B2FC 8007A6FC 24A46260 */ addiu $a0, $a1, 0x6260 +/* 07B2F8 8007A6F8 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 +/* 07B2FC 8007A6FC 24A46260 */ addiu $a0, $a1, %lo(D_80126260) /* 07B300 8007A700 24020500 */ li $v0, 1280 /* 07B304 8007A704 24090280 */ li $t1, 640 /* 07B308 8007A708 240A0400 */ li $t2, 1024 diff --git a/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s b/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s index 2025bb1b..b1d6f608 100644 --- a/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s +++ b/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s @@ -159,7 +159,7 @@ glabel MenuAudioOptionsLoop /* 085AB4 80084EB4 1100001F */ beqz $t0, .L80084F34 /* 085AB8 80084EB8 00000000 */ nop /* 085ABC 80084EBC 05010008 */ bgez $t0, .L80084EE0 -/* 085AC0 80084EC0 3C02800E */ lui $v0, 0x800e +/* 085AC0 80084EC0 3C02800E */ lui $v0, %hi(D_800DFAC8) # $v0, 0x800e /* 085AC4 80084EC4 3C02800E */ lui $v0, %hi(D_800DFAC8) # $v0, 0x800e /* 085AC8 80084EC8 2442FAC8 */ addiu $v0, %lo(D_800DFAC8) # addiu $v0, $v0, -0x538 /* 085ACC 80084ECC 8C590000 */ lw $t9, ($v0) @@ -168,7 +168,7 @@ glabel MenuAudioOptionsLoop /* 085AD8 80084ED8 10000006 */ b .L80084EF4 /* 085ADC 80084EDC AC4A0000 */ sw $t2, ($v0) .L80084EE0: -/* 085AE0 80084EE0 2442FAC8 */ addiu $v0, $v0, -0x538 +/* 085AE0 80084EE0 2442FAC8 */ addiu $v0, %lo(D_800DFAC8) # addiu $v0, $v0, -0x538 /* 085AE4 80084EE4 8C4C0000 */ lw $t4, ($v0) /* 085AE8 80084EE8 00000000 */ nop /* 085AEC 80084EEC 258B0001 */ addiu $t3, $t4, 1 diff --git a/asm/non_matchings/unknown_080500/MenuCharacterSelectInit.s b/asm/non_matchings/unknown_080500/MenuCharacterSelectInit.s index 5a003899..5c9c47a6 100644 --- a/asm/non_matchings/unknown_080500/MenuCharacterSelectInit.s +++ b/asm/non_matchings/unknown_080500/MenuCharacterSelectInit.s @@ -15,7 +15,7 @@ glabel MenuCharacterSelectInit /* 08BC00 8008B000 0C027B2E */ jal is_tt_unlocked /* 08BC04 8008B004 00000000 */ nop /* 08BC08 8008B008 10400007 */ beqz $v0, .L8008B028 -/* 08BC0C 8008B00C 3C078012 */ lui $a3, 0x8012 +/* 08BC0C 8008B00C 3C078012 */ lui $a3, %hi(D_801263CC) # $a3, 0x8012 /* 08BC10 8008B010 3C078012 */ lui $a3, %hi(D_801263CC) # $a3, 0x8012 /* 08BC14 8008B014 3C0E800E */ lui $t6, %hi(D_800DFF40) # $t6, 0x800e /* 08BC18 8008B018 24E763CC */ addiu $a3, %lo(D_801263CC) # addiu $a3, $a3, 0x63cc @@ -24,7 +24,7 @@ glabel MenuCharacterSelectInit /* 08BC24 8008B024 ACEE0000 */ sw $t6, ($a3) .L8008B028: /* 08BC28 8008B028 3C0F800E */ lui $t7, %hi(D_800DFE40) # $t7, 0x800e -/* 08BC2C 8008B02C 24E763CC */ addiu $a3, $a3, 0x63cc +/* 08BC2C 8008B02C 24E763CC */ addiu $a3, %lo(D_801263CC) # addiu $a3, $a3, 0x63cc /* 08BC30 8008B030 25EFFE40 */ addiu $t7, %lo(D_800DFE40) # addiu $t7, $t7, -0x1c0 /* 08BC34 8008B034 1000000F */ b .L8008B074 /* 08BC38 8008B038 ACEF0000 */ sw $t7, ($a3) diff --git a/asm/non_matchings/unknown_080500/MenuGameSelectInit.s b/asm/non_matchings/unknown_080500/MenuGameSelectInit.s index 32e16d10..db16ebf4 100644 --- a/asm/non_matchings/unknown_080500/MenuGameSelectInit.s +++ b/asm/non_matchings/unknown_080500/MenuGameSelectInit.s @@ -62,7 +62,7 @@ glabel MenuGameSelectInit /* 08D1F0 8008C5F0 0C027B18 */ jal func_8009EC60 /* 08D1F4 8008C5F4 00000000 */ nop /* 08D1F8 8008C5F8 10400009 */ beqz $v0, .L8008C620 -/* 08D1FC 8008C5FC 3C038012 */ lui $v1, 0x8012 +/* 08D1FC 8008C5FC 3C038012 */ lui $v1, %hi(D_80126460) # $v1, 0x8012 /* 08D200 8008C600 3C038012 */ lui $v1, %hi(D_80126460) # $v1, 0x8012 /* 08D204 8008C604 3C08800E */ lui $t0, %hi(D_800E0278) # $t0, 0x800e /* 08D208 8008C608 24636460 */ addiu $v1, %lo(D_80126460) # addiu $v1, $v1, 0x6460 @@ -73,7 +73,7 @@ glabel MenuGameSelectInit /* 08D21C 8008C61C AE890000 */ sw $t1, ($s4) .L8008C620: /* 08D220 8008C620 3C0A800E */ lui $t2, %hi(D_800E0198) # $t2, 0x800e -/* 08D224 8008C624 24636460 */ addiu $v1, $v1, 0x6460 +/* 08D224 8008C624 24636460 */ addiu $v1, %lo(D_80126460) # addiu $v1, $v1, 0x6460 /* 08D228 8008C628 254A0198 */ addiu $t2, %lo(D_800E0198) # addiu $t2, $t2, 0x198 /* 08D22C 8008C62C 240B0001 */ li $t3, 1 /* 08D230 8008C630 AC6A0000 */ sw $t2, ($v1) diff --git a/asm/non_matchings/unknown_080500/MenuTrophyRaceRankingsInit.s b/asm/non_matchings/unknown_080500/MenuTrophyRaceRankingsInit.s index 3fc0a441..218069f6 100644 --- a/asm/non_matchings/unknown_080500/MenuTrophyRaceRankingsInit.s +++ b/asm/non_matchings/unknown_080500/MenuTrophyRaceRankingsInit.s @@ -153,8 +153,8 @@ glabel MenuTrophyRaceRankingsInit /* 09984C 80098C4C 00004025 */ move $t0, $zero .L80098C50: /* 099850 80098C50 18A00011 */ blez $a1, .L80098C98 -/* 099854 80098C54 3C188012 */ lui $t8, 0x8012 -/* 099858 80098C58 270263F8 */ addiu $v0, $t8, 0x63f8 +/* 099854 80098C54 3C188012 */ lui $t8, %hi(D_801263F8) # $t8, 0x8012 +/* 099858 80098C58 270263F8 */ addiu $v0, $t8, %lo(D_801263F8) /* 09985C 80098C5C 0005C880 */ sll $t9, $a1, 2 /* 099860 80098C60 3C04800E */ lui $a0, %hi(D_800E1004) # $a0, 0x800e /* 099864 80098C64 24841004 */ addiu $a0, %lo(D_800E1004) # addiu $a0, $a0, 0x1004 @@ -282,8 +282,8 @@ glabel MenuTrophyRaceRankingsInit /* 099A14 80098E14 3C048012 */ lui $a0, %hi(D_80126430) # $a0, 0x8012 /* 099A18 80098E18 18A00010 */ blez $a1, .L80098E5C /* 099A1C 80098E1C 24846430 */ addiu $a0, %lo(D_80126430) # addiu $a0, $a0, 0x6430 -/* 099A20 80098E20 3C0F8012 */ lui $t7, 0x8012 -/* 099A24 80098E24 25E26420 */ addiu $v0, $t7, 0x6420 +/* 099A20 80098E20 3C0F8012 */ lui $t7, %hi(D_80126420) # $t7, 0x8012 +/* 099A24 80098E24 25E26420 */ addiu $v0, $t7, %lo(D_80126420) /* 099A28 80098E28 00A21821 */ addu $v1, $a1, $v0 .L80098E2C: /* 099A2C 80098E2C 90990000 */ lbu $t9, ($a0) diff --git a/asm/non_matchings/unknown_080500/func_8008F00C.s b/asm/non_matchings/unknown_080500/func_8008F00C.s index abda2cc8..4900eef6 100644 --- a/asm/non_matchings/unknown_080500/func_8008F00C.s +++ b/asm/non_matchings/unknown_080500/func_8008F00C.s @@ -48,8 +48,8 @@ glabel func_8008F00C /* 08FCB8 8008F0B8 3C048012 */ lui $a0, %hi(D_801269C4) # $a0, 0x8012 /* 08FCBC 8008F0BC 18C0000B */ blez $a2, .L8008F0EC /* 08FCC0 8008F0C0 24180001 */ li $t8, 1 -/* 08FCC4 8008F0C4 3C0F8012 */ lui $t7, 0x8012 -/* 08FCC8 8008F0C8 25E369C0 */ addiu $v1, $t7, 0x69c0 +/* 08FCC4 8008F0C4 3C0F8012 */ lui $t7, %hi(p1_vehicle) # $t7, 0x8012 +/* 08FCC8 8008F0C8 25E369C0 */ addiu $v1, $t7, %lo(p1_vehicle) /* 08FCCC 8008F0CC 00C32821 */ addu $a1, $a2, $v1 /* 08FCD0 8008F0D0 248469C4 */ addiu $a0, %lo(D_801269C4) # addiu $a0, $a0, 0x69c4 .L8008F0D4: diff --git a/asm/non_matchings/unknown_080500/func_8009963C.s b/asm/non_matchings/unknown_080500/func_8009963C.s index ed522b33..8196d271 100644 --- a/asm/non_matchings/unknown_080500/func_8009963C.s +++ b/asm/non_matchings/unknown_080500/func_8009963C.s @@ -139,8 +139,8 @@ glabel func_8009963C .L80099830: /* 09A430 80099830 19800027 */ blez $t4, .L800998D0 /* 09A434 80099834 3C048012 */ lui $a0, %hi(D_80126508) # $a0, 0x8012 -/* 09A438 80099838 3C198012 */ lui $t9, 0x8012 -/* 09A43C 8009983C 27236520 */ addiu $v1, $t9, 0x6520 +/* 09A438 80099838 3C198012 */ lui $t9, %hi(D_80126520) # $t9, 0x8012 +/* 09A43C 8009983C 27236520 */ addiu $v1, $t9, %lo(D_80126520) /* 09A440 80099840 3C058012 */ lui $a1, %hi(D_80126540) # $a1, 0x8012 /* 09A444 80099844 3C068012 */ lui $a2, %hi(D_80126510) # $a2, 0x8012 /* 09A448 80099848 3C078012 */ lui $a3, %hi(D_80126518) # $a3, 0x8012 diff --git a/asm/non_matchings/unknown_080500/func_800998E0.s b/asm/non_matchings/unknown_080500/func_800998E0.s index 42518e10..90f8023b 100644 --- a/asm/non_matchings/unknown_080500/func_800998E0.s +++ b/asm/non_matchings/unknown_080500/func_800998E0.s @@ -78,8 +78,8 @@ glabel func_800998E0 /* 09A60C 80099A0C A478FFFE */ sh $t8, -2($v1) .L80099A10: /* 09A610 80099A10 1920000D */ blez $t1, .L80099A48 -/* 09A614 80099A14 3C198012 */ lui $t9, 0x8012 -/* 09A618 80099A18 27226540 */ addiu $v0, $t9, 0x6540 +/* 09A614 80099A14 3C198012 */ lui $t9, %hi(D_80126540) # $t9, 0x8012 +/* 09A618 80099A18 27226540 */ addiu $v0, $t9, %lo(D_80126540) /* 09A61C 80099A1C 01222021 */ addu $a0, $t1, $v0 .L80099A20: /* 09A620 80099A20 90430000 */ lbu $v1, ($v0) diff --git a/asm/non_matchings/unknown_080500/func_80099E8C.s b/asm/non_matchings/unknown_080500/func_80099E8C.s index eb22225b..a3e4a2e3 100644 --- a/asm/non_matchings/unknown_080500/func_80099E8C.s +++ b/asm/non_matchings/unknown_080500/func_80099E8C.s @@ -309,7 +309,7 @@ glabel func_80099E8C /* 09AF28 8009A328 240FFFFF */ li $t7, -1 /* 09AF2C 8009A32C 24010002 */ li $at, 2 /* 09AF30 8009A330 10410007 */ beq $v0, $at, .L8009A350 -/* 09AF34 8009A334 3C05800E */ lui $a1, 0x800e +/* 09AF34 8009A334 3C05800E */ lui $a1, %hi(D_800E048C) # $a1, 0x800e /* 09AF38 8009A338 3C05800E */ lui $a1, %hi(D_800E045C) # $a1, 0x800e /* 09AF3C 8009A33C 10000005 */ b .L8009A354 /* 09AF40 8009A340 24A5045C */ addiu $a1, %lo(D_800E045C) # addiu $a1, $a1, 0x45c @@ -318,7 +318,7 @@ glabel func_80099E8C /* 09AF48 8009A348 10000002 */ b .L8009A354 /* 09AF4C 8009A34C 24A50474 */ addiu $a1, %lo(D_800E0474) # addiu $a1, $a1, 0x474 .L8009A350: -/* 09AF50 8009A350 24A5048C */ addiu $a1, $a1, 0x48c +/* 09AF50 8009A350 24A5048C */ addiu $a1, %lo(D_800E048C) # addiu $a1, $a1, 0x48c .L8009A354: /* 09AF54 8009A354 862B0008 */ lh $t3, 8($s1) /* 09AF58 8009A358 862D000A */ lh $t5, 0xa($s1) diff --git a/asm/non_matchings/unknown_080500/func_8009C6D4.s b/asm/non_matchings/unknown_080500/func_8009C6D4.s index 0dd55927..b68acb9f 100644 --- a/asm/non_matchings/unknown_080500/func_8009C6D4.s +++ b/asm/non_matchings/unknown_080500/func_8009C6D4.s @@ -38,8 +38,8 @@ glabel func_8009C6D4 /* 09D35C 8009C75C 3C01800E */ lui $at, %hi(D_800DF758) # $at, 0x800e /* 09D360 8009C760 18600008 */ blez $v1, .L8009C784 /* 09D364 8009C764 A420F758 */ sh $zero, %lo(D_800DF758)($at) -/* 09D368 8009C768 3C0C8012 */ lui $t4, 0x8012 -/* 09D36C 8009C76C 25826750 */ addiu $v0, $t4, 0x6750 +/* 09D368 8009C768 3C0C8012 */ lui $t4, %hi(D_80126750) # $t4, 0x8012 +/* 09D36C 8009C76C 25826750 */ addiu $v0, $t4, %lo(D_80126750) /* 09D370 8009C770 00622021 */ addu $a0, $v1, $v0 .L8009C774: /* 09D374 8009C774 24420001 */ addiu $v0, $v0, 1 diff --git a/asm/non_matchings/unknown_09F8F0/func_8009F034.s b/asm/non_matchings/unknown_09F8F0/func_8009F034.s index 51b04c20..da6653b2 100644 --- a/asm/non_matchings/unknown_09F8F0/func_8009F034.s +++ b/asm/non_matchings/unknown_09F8F0/func_8009F034.s @@ -1052,7 +1052,7 @@ glabel func_8009F034 /* 0A0BA8 8009FFA8 00000000 */ nop /* 0A0BAC 8009FFAC 30590040 */ andi $t9, $v0, 0x40 /* 0A0BB0 8009FFB0 13200008 */ beqz $t9, .L8009FFD4 -/* 0A0BB4 8009FFB4 3C02800E */ lui $v0, 0x800e +/* 0A0BB4 8009FFB4 3C02800E */ lui $v0, %hi(D_800E27A4) # $v0, 0x800e /* 0A0BB8 8009FFB8 3C02800E */ lui $v0, %hi(D_800E27A4) # $v0, 0x800e /* 0A0BBC 8009FFBC 244227A4 */ addiu $v0, %lo(D_800E27A4) # addiu $v0, $v0, 0x27a4 /* 0A0BC0 8009FFC0 80580001 */ lb $t8, 1($v0) @@ -1063,7 +1063,7 @@ glabel func_8009F034 .L8009FFD4: /* 0A0BD4 8009FFD4 3C0E800E */ lui $t6, %hi(D_800E27A8) # $t6, 0x800e /* 0A0BD8 8009FFD8 81CE27A8 */ lb $t6, %lo(D_800E27A8)($t6) -/* 0A0BDC 8009FFDC 244227A4 */ addiu $v0, $v0, 0x27a4 +/* 0A0BDC 8009FFDC 244227A4 */ addiu $v0, %lo(D_800E27A4) # addiu $v0, $v0, 0x27a4 /* 0A0BE0 8009FFE0 A04E0001 */ sb $t6, 1($v0) .L8009FFE4: /* 0A0BE4 8009FFE4 8FBF0064 */ lw $ra, 0x64($sp) diff --git a/asm/non_matchings/unknown_09F8F0/func_800A19A4.s b/asm/non_matchings/unknown_09F8F0/func_800A19A4.s index 8d1d6245..89abce14 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800A19A4.s +++ b/asm/non_matchings/unknown_09F8F0/func_800A19A4.s @@ -43,12 +43,12 @@ glabel func_800A19A4 /* 0A2648 800A1A48 00000000 */ nop .L800A1A4C: /* 0A264C 800A1A4C 8E470000 */ lw $a3, ($s2) -/* 0A2650 800A1A50 3C148012 */ lui $s4, 0x8012 -/* 0A2654 800A1A54 3C158012 */ lui $s5, 0x8012 -/* 0A2658 800A1A58 3C168012 */ lui $s6, 0x8012 -/* 0A265C 800A1A5C 26C66D04 */ addiu $a2, $s6, 0x6d04 -/* 0A2660 800A1A60 26A56D00 */ addiu $a1, $s5, 0x6d00 -/* 0A2664 800A1A64 26846CFC */ addiu $a0, $s4, 0x6cfc +/* 0A2650 800A1A50 3C148012 */ lui $s4, %hi(D_80126CFC) # $s4, 0x8012 +/* 0A2654 800A1A54 3C158012 */ lui $s5, %hi(D_80126D00) # $s5, 0x8012 +/* 0A2658 800A1A58 3C168012 */ lui $s6, %hi(D_80126D04) # $s6, 0x8012 +/* 0A265C 800A1A5C 26C66D04 */ addiu $a2, $s6, %lo(D_80126D04) +/* 0A2660 800A1A60 26A56D00 */ addiu $a1, $s5, %lo(D_80126D00) +/* 0A2664 800A1A64 26846CFC */ addiu $a0, $s4, %lo(D_80126CFC) /* 0A2668 800A1A68 24110003 */ li $s1, 3 /* 0A266C 800A1A6C 0C02A980 */ jal func_800AA600 /* 0A2670 800A1A70 24E70640 */ addiu $a3, $a3, 0x640 diff --git a/asm/non_matchings/unknown_0B8920/func_800C5B58.s b/asm/non_matchings/unknown_0B8920/func_800C5B58.s index 6d342178..1bfbb0c2 100644 --- a/asm/non_matchings/unknown_0B8920/func_800C5B58.s +++ b/asm/non_matchings/unknown_0B8920/func_800C5B58.s @@ -126,9 +126,9 @@ glabel func_800C5B58 /* 0C693C 800C5D3C 3C0D800E */ lui $t5, %hi(D_800E3710) # $t5, 0x800e /* 0C6940 800C5D40 AC4B0004 */ sw $t3, 4($v0) /* 0C6944 800C5D44 81AD3710 */ lb $t5, %lo(D_800E3710)($t5) -/* 0C6948 800C5D48 3C0E800E */ lui $t6, 0x800e +/* 0C6948 800C5D48 3C0E800E */ lui $t6, %hi(D_800E3710) # $t6, 0x800e /* 0C694C 800C5D4C 05A00023 */ bltz $t5, .L800C5DDC -/* 0C6950 800C5D50 25D03710 */ addiu $s0, $t6, 0x3710 +/* 0C6950 800C5D50 25D03710 */ addiu $s0, $t6, %lo(D_800E3710) /* 0C6954 800C5D54 82020000 */ lb $v0, ($s0) /* 0C6958 800C5D58 00000000 */ nop .L800C5D5C: diff --git a/src/unknown_032760.c b/src/unknown_032760.c index 1a5bbb45..8b09eb9b 100644 --- a/src/unknown_032760.c +++ b/src/unknown_032760.c @@ -55,8 +55,10 @@ u16 D_800DC9D0[64] = { 0x0002, 0x0504, 0x0001, 0x0000, 0x0000, 0x0004, 0x0000, 0x0000 }; -s8 D_800DCA50[17] = { - 2, 5, 6, 3, 10, 8, 7, 9, +s8 D_800DCA50[8] = { + 2, 5, 6, 3, 10, 8, 7, 9 +}; +u8 D_800DCA58[9] = { 2, 5, 6, 3, 10, 8, 7, 9, 11 }; s8 D_800DCA64[9] = { diff --git a/tools/python/find_glabels.py b/tools/python/find_glabels.py index 10119cac..9a1eef0b 100644 --- a/tools/python/find_glabels.py +++ b/tools/python/find_glabels.py @@ -2,14 +2,18 @@ import re from file_util import FileUtil -LINE_START_REGEX = r'\n(/\* ([0-9A-F]{6}) [0-9A-F]{8} [0-9A-F]{8} \*/\s+|\.L80[0-9A-F]{6}:|\n)' -REG_REGEX = r'(\$(at|v[0-1]|a[0-3]|t[0-9]|s[0-7]|f[0-9]{1,2}|k[0-1]|gp|sp|fp|ra|zero))' +LINE_START_REGEX = r'\n(/\* ([0-9A-F]{6}) [0-9A-F]{8} [0-9A-F]{8} \*/\s+|\.L80[0-9A-F]{6}:)?' +REG_REGEX = r'(\$(at|v[0-1]|a[0-3]|t[0-9]|s[0-7]|f[0-9]{1,2}|k[01]|gp|sp|fp|ra|zero))' GLABEL_UPPER_REGEX = '(' + LINE_START_REGEX + r'lui\s+' + REG_REGEX + r',\s+(0x80[0-9a-f]{2}))' -GLABEL_LOWER_REGEX = '(' + LINE_START_REGEX + r'[sl][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+(-?0x[0-9a-f]{3,4})\(\4\))' +GLABEL_LOWER_LS_REGEX = r'[sl][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+(-?0x[0-9a-f]{3,4})\(\4\)' +GLABEL_LOWER_ADDU_REGEX = r'addiu\s+' + REG_REGEX + r',\s+\4,\s+(-?0x[0-9a-f]{3,4})' +GLABEL_LOWER_REGEX = LINE_START_REGEX + '(' + GLABEL_LOWER_LS_REGEX + '|' + GLABEL_LOWER_ADDU_REGEX + ')' GLABEL_REGEX = GLABEL_UPPER_REGEX + '(' + LINE_START_REGEX + '[^\n]*){0,10}' + GLABEL_LOWER_REGEX -UPPER_INSTR_REGEX_TMPL = r'(/\* %s[^\n]*lui\s+)([^\n]*)' -LOWER_INSTR_REGEX_TMPL = r'(/\* %s[^\n]*[ls][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+)-?0x[0-9a-f]{3,4}([^\n]*)' +UPPER_INSTR_REGEX_TMPL = r'(/\* %s[^\n#]*lui\s+)([^\n]*)' +LOWER_INSTR_LS_REGEX_TMPL = r'(/\* %s[^\n#]*[ls][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+)-?0x[0-9a-f]{3,4}([^\n]*)' +LOWER_INSTR_ADDU_REGEX_TMPL = r'(/\* %s[^\n#]*addiu\s+' + REG_REGEX + r',\s+' + REG_REGEX + r',\s+)-?0x[0-9a-f]{3,4}' +LOWER_INSTR_ADDU_SAME_REGEX_TMPL = r'(/\* %s[^\n#]*)(addiu\s+' + REG_REGEX + r',\s+\3,\s+-?0x[0-9a-f]{3,4})' IGNORE_GLABELS = ['D_800E389E', 'D_801264A1', 'D_800E1B84'] @@ -21,9 +25,11 @@ def _find_glabels(asm): matches = re.findall(GLABEL_REGEX, contents) for match in matches: reg = match[3] - offsets = (match[2], match[11]) # ROM offsets of the lui and [sl][bhw] + offsets = (match[2], match[10]) # ROM offsets of the lui and [sl][bhw] glabel_upper = int(match[5], 16) # upper immediate of glabel - glabel_lower = int(match[15], 16) # lower immediate of the glabel + lower_group = 15 if match[15] else 18 # lower immediate of the glabel + is_addu = lower_group == 18 + glabel_lower = int(match[lower_group], 16) glabel_lower &= 0xFFFF if glabel_lower & 0x8000: glabel_upper -= 1 @@ -32,11 +38,17 @@ def _find_glabels(asm): glabels.append((glabel, *offsets)) # replace upper instruction contents = re.sub(UPPER_INSTR_REGEX_TMPL % offsets[0], - r'\1' + '%s, %%hi(%s) # ' % (reg, glabel) + r'\2', + r'\1%s, %%hi(%s) # \2' % (reg, glabel), contents) # replace lower instruction - contents = re.sub(LOWER_INSTR_REGEX_TMPL % offsets[1], - r'\1' + '%%lo(%s)' % (glabel) + r'\5', + contents = re.sub(LOWER_INSTR_LS_REGEX_TMPL % offsets[1], + r'\1%%lo(%s)\5' % glabel, + contents) + contents = re.sub(LOWER_INSTR_ADDU_SAME_REGEX_TMPL % offsets[1], + r'\1addiu \3, %%lo(%s) # \2' % glabel, + contents) + contents = re.sub(LOWER_INSTR_ADDU_REGEX_TMPL % offsets[1], + r'\1%%lo(%s)' % glabel, contents) if len(matches): FileUtil.write_text_to_file(file, contents) diff --git a/undefined_syms.txt b/undefined_syms.txt index 007fb4cc..db0b1b9c 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -152,6 +152,7 @@ D_800DC980 = 0x800DC980; D_800DC9A8 = 0x800DC9A8; D_800DC9D0 = 0x800DC9D0; D_800DCA50 = 0x800DCA50; +D_800DCA58 = 0x800DCA58; D_800DCA64 = 0x800DCA64; D_800DCA70 = 0x800DCA70; D_800DCA7C = 0x800DCA7C;