From 8a7a1e33c5ed295b5acd5c5d8004176d6a976a98 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Fri, 17 Jul 2020 23:23:33 -0500 Subject: [PATCH] Decompiled 20 functions in unknown_080500 --- .../unknown_080500/func_80080E6C.s | 11 - .../unknown_080500/func_800861C8.s | 67 ----- .../unknown_080500/func_8008A8F8.s | 15 - .../unknown_080500/func_8008E4B0.s | 17 -- .../unknown_080500/func_8008F534.s | 62 ---- .../unknown_080500/func_80092BE0.s | 48 --- .../unknown_080500/func_8009C228.s | 13 - .../unknown_080500/func_8009C250.s | 12 - .../unknown_080500/func_8009C274.s | 5 - .../unknown_080500/func_8009C490.s | 9 - .../unknown_080500/func_8009CFB0.s | 18 -- .../unknown_080500/func_8009D330.s | 5 - .../unknown_080500/func_8009D33C.s | 12 - .../unknown_080500/func_8009EA6C.s | 5 - .../unknown_080500/func_8009EA78.s | 19 -- .../unknown_080500/func_8009EABC.s | 21 -- .../unknown_080500/func_8009EB08.s | 8 - .../unknown_080500/func_8009EB20.s | 37 --- .../unknown_080500/func_8009EB94.s | 57 ---- .../unknown_080500/func_8009EC60.s | 6 - data/dkr.data.s | 2 + src/mips1/unknown_080500.c | 279 ++++++++++++++++-- undefined_syms.txt | 1 + 23 files changed, 250 insertions(+), 479 deletions(-) delete mode 100644 asm/non_matchings/unknown_080500/func_80080E6C.s delete mode 100644 asm/non_matchings/unknown_080500/func_800861C8.s delete mode 100644 asm/non_matchings/unknown_080500/func_8008A8F8.s delete mode 100644 asm/non_matchings/unknown_080500/func_8008E4B0.s delete mode 100644 asm/non_matchings/unknown_080500/func_8008F534.s delete mode 100644 asm/non_matchings/unknown_080500/func_80092BE0.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009C228.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009C250.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009C274.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009C490.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009CFB0.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009D330.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009D33C.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EA6C.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EA78.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EABC.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EB08.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EB20.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EB94.s delete mode 100644 asm/non_matchings/unknown_080500/func_8009EC60.s diff --git a/asm/non_matchings/unknown_080500/func_80080E6C.s b/asm/non_matchings/unknown_080500/func_80080E6C.s deleted file mode 100644 index dacf14c1..00000000 --- a/asm/non_matchings/unknown_080500/func_80080E6C.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_80080E6C -/* 081A6C 80080E6C 3C02800E */ lui $v0, %hi(D_800E1DB4) # $v0, 0x800e -/* 081A70 80080E70 3C01800E */ lui $at, %hi(D_800E1DB8) # $at, 0x800e -/* 081A74 80080E74 24421DB4 */ addiu $v0, %lo(D_800E1DB4) # addiu $v0, $v0, 0x1db4 -/* 081A78 80080E78 AC201DB8 */ sw $zero, %lo(D_800E1DB8)($at) -/* 081A7C 80080E7C 8C4E0000 */ lw $t6, ($v0) -/* 081A80 80080E80 240F0001 */ li $t7, 1 -/* 081A84 80080E84 01EEC023 */ subu $t8, $t7, $t6 -/* 081A88 80080E88 03E00008 */ jr $ra -/* 081A8C 80080E8C AC580000 */ sw $t8, ($v0) - diff --git a/asm/non_matchings/unknown_080500/func_800861C8.s b/asm/non_matchings/unknown_080500/func_800861C8.s deleted file mode 100644 index 6a1c49f5..00000000 --- a/asm/non_matchings/unknown_080500/func_800861C8.s +++ /dev/null @@ -1,67 +0,0 @@ -glabel func_800861C8 -/* 086DC8 800861C8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 086DCC 800861CC AFB30020 */ sw $s3, 0x20($sp) -/* 086DD0 800861D0 AFB50028 */ sw $s5, 0x28($sp) -/* 086DD4 800861D4 AFB40024 */ sw $s4, 0x24($sp) -/* 086DD8 800861D8 AFB2001C */ sw $s2, 0x1c($sp) -/* 086DDC 800861DC AFB10018 */ sw $s1, 0x18($sp) -/* 086DE0 800861E0 AFB00014 */ sw $s0, 0x14($sp) -/* 086DE4 800861E4 3C138012 */ lui $s3, %hi(D_80126530) # $s3, 0x8012 -/* 086DE8 800861E8 00A08025 */ move $s0, $a1 -/* 086DEC 800861EC 00808825 */ move $s1, $a0 -/* 086DF0 800861F0 AFBF002C */ sw $ra, 0x2c($sp) -/* 086DF4 800861F4 26736530 */ addiu $s3, %lo(D_80126530) # addiu $s3, $s3, 0x6530 -/* 086DF8 800861F8 00009025 */ move $s2, $zero -/* 086DFC 800861FC 24140001 */ li $s4, 1 -/* 086E00 80086200 24150003 */ li $s5, 3 -.L80086204: -/* 086E04 80086204 8E6E0000 */ lw $t6, ($s3) -/* 086E08 80086208 00000000 */ nop -/* 086E0C 8008620C 91CF004B */ lbu $t7, 0x4b($t6) -/* 086E10 80086210 00000000 */ nop -/* 086E14 80086214 11E0001F */ beqz $t7, .L80086294 -/* 086E18 80086218 00000000 */ nop -/* 086E1C 8008621C 8E180000 */ lw $t8, ($s0) -/* 086E20 80086220 00000000 */ nop -/* 086E24 80086224 0018C900 */ sll $t9, $t8, 4 -/* 086E28 80086228 02394021 */ addu $t0, $s1, $t9 -/* 086E2C 8008622C A1140000 */ sb $s4, ($t0) -/* 086E30 80086230 8E090000 */ lw $t1, ($s0) -/* 086E34 80086234 00000000 */ nop -/* 086E38 80086238 00095100 */ sll $t2, $t1, 4 -/* 086E3C 8008623C 022A5821 */ addu $t3, $s1, $t2 -/* 086E40 80086240 A1600001 */ sb $zero, 1($t3) -/* 086E44 80086244 8E0C0000 */ lw $t4, ($s0) -/* 086E48 80086248 00000000 */ nop -/* 086E4C 8008624C 000C6900 */ sll $t5, $t4, 4 -/* 086E50 80086250 022D7021 */ addu $t6, $s1, $t5 -/* 086E54 80086254 A1C00002 */ sb $zero, 2($t6) -/* 086E58 80086258 8E0F0000 */ lw $t7, ($s0) -/* 086E5C 8008625C 00000000 */ nop -/* 086E60 80086260 000FC100 */ sll $t8, $t7, 4 -/* 086E64 80086264 0238C821 */ addu $t9, $s1, $t8 -/* 086E68 80086268 0C01CF13 */ jal func_80073C4C -/* 086E6C 8008626C A3320006 */ sb $s2, 6($t9) -/* 086E70 80086270 8E080000 */ lw $t0, ($s0) -/* 086E74 80086274 00000000 */ nop -/* 086E78 80086278 00084900 */ sll $t1, $t0, 4 -/* 086E7C 8008627C 02295021 */ addu $t2, $s1, $t1 -/* 086E80 80086280 AD42000C */ sw $v0, 0xc($t2) -/* 086E84 80086284 8E0B0000 */ lw $t3, ($s0) -/* 086E88 80086288 00000000 */ nop -/* 086E8C 8008628C 256C0001 */ addiu $t4, $t3, 1 -/* 086E90 80086290 AE0C0000 */ sw $t4, ($s0) -.L80086294: -/* 086E94 80086294 26520001 */ addiu $s2, $s2, 1 -/* 086E98 80086298 1655FFDA */ bne $s2, $s5, .L80086204 -/* 086E9C 8008629C 26730004 */ addiu $s3, $s3, 4 -/* 086EA0 800862A0 8FBF002C */ lw $ra, 0x2c($sp) -/* 086EA4 800862A4 8FB00014 */ lw $s0, 0x14($sp) -/* 086EA8 800862A8 8FB10018 */ lw $s1, 0x18($sp) -/* 086EAC 800862AC 8FB2001C */ lw $s2, 0x1c($sp) -/* 086EB0 800862B0 8FB30020 */ lw $s3, 0x20($sp) -/* 086EB4 800862B4 8FB40024 */ lw $s4, 0x24($sp) -/* 086EB8 800862B8 8FB50028 */ lw $s5, 0x28($sp) -/* 086EBC 800862BC 03E00008 */ jr $ra -/* 086EC0 800862C0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/unknown_080500/func_8008A8F8.s b/asm/non_matchings/unknown_080500/func_8008A8F8.s deleted file mode 100644 index 1ab0bcd9..00000000 --- a/asm/non_matchings/unknown_080500/func_8008A8F8.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_8008A8F8 -/* 08B4F8 8008A8F8 00857024 */ and $t6, $a0, $a1 -/* 08B4FC 8008A8FC 11C00008 */ beqz $t6, .L8008A920 -/* 08B500 8008A900 3C03800E */ lui $v1, %hi(gActiveMagicCodes) # $v1, 0x800e -/* 08B504 8008A904 2463FD98 */ addiu $v1, %lo(gActiveMagicCodes) # addiu $v1, $v1, -0x268 -/* 08B508 8008A908 8C620000 */ lw $v0, ($v1) -/* 08B50C 8008A90C 00C0C027 */ not $t8, $a2 -/* 08B510 8008A910 00827824 */ and $t7, $a0, $v0 -/* 08B514 8008A914 11E00002 */ beqz $t7, .L8008A920 -/* 08B518 8008A918 0058C824 */ and $t9, $v0, $t8 -/* 08B51C 8008A91C AC790000 */ sw $t9, ($v1) -.L8008A920: -/* 08B520 8008A920 03E00008 */ jr $ra -/* 08B524 8008A924 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8008E4B0.s b/asm/non_matchings/unknown_080500/func_8008E4B0.s deleted file mode 100644 index fe284ee3..00000000 --- a/asm/non_matchings/unknown_080500/func_8008E4B0.s +++ /dev/null @@ -1,17 +0,0 @@ -glabel func_8008E4B0 -/* 08F0B0 8008E4B0 3C028012 */ lui $v0, %hi(D_80126550) # $v0, 0x8012 -/* 08F0B4 8008E4B4 24426550 */ addiu $v0, %lo(D_80126550) # addiu $v0, $v0, 0x6550 -/* 08F0B8 8008E4B8 8C4E00F4 */ lw $t6, 0xf4($v0) -/* 08F0BC 8008E4BC 3C01800E */ lui $at, %hi(D_800E041C) # $at, 0x800e -/* 08F0C0 8008E4C0 AC2E041C */ sw $t6, %lo(D_800E041C)($at) -/* 08F0C4 8008E4C4 8C4F00F0 */ lw $t7, 0xf0($v0) -/* 08F0C8 8008E4C8 3C01800E */ lui $at, %hi(D_800E042C) # $at, 0x800e -/* 08F0CC 8008E4CC AC2F042C */ sw $t7, %lo(D_800E042C)($at) -/* 08F0D0 8008E4D0 8C5800FC */ lw $t8, 0xfc($v0) -/* 08F0D4 8008E4D4 3C01800E */ lui $at, %hi(D_800E043C) # $at, 0x800e -/* 08F0D8 8008E4D8 AC38043C */ sw $t8, %lo(D_800E043C)($at) -/* 08F0DC 8008E4DC 8C5900F8 */ lw $t9, 0xf8($v0) -/* 08F0E0 8008E4E0 3C01800E */ lui $at, 0x800e -/* 08F0E4 8008E4E4 03E00008 */ jr $ra -/* 08F0E8 8008E4E8 AC39044C */ sw $t9, 0x44c($at) - diff --git a/asm/non_matchings/unknown_080500/func_8008F534.s b/asm/non_matchings/unknown_080500/func_8008F534.s deleted file mode 100644 index 58ad90cd..00000000 --- a/asm/non_matchings/unknown_080500/func_8008F534.s +++ /dev/null @@ -1,62 +0,0 @@ -glabel func_8008F534 -/* 090134 8008F534 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 090138 8008F538 AFBF0024 */ sw $ra, 0x24($sp) -/* 09013C 8008F53C AFB20020 */ sw $s2, 0x20($sp) -/* 090140 8008F540 AFB1001C */ sw $s1, 0x1c($sp) -/* 090144 8008F544 AFB00018 */ sw $s0, 0x18($sp) -/* 090148 8008F548 00002025 */ move $a0, $zero -/* 09014C 8008F54C 0C019A25 */ jal func_80066894 -/* 090150 8008F550 00002825 */ move $a1, $zero -/* 090154 8008F554 3C04800E */ lui $a0, %hi(D_800E07C4) # $a0, 0x800e -/* 090158 8008F558 0C02712A */ jal func_8009C4A8 -/* 09015C 8008F55C 248407C4 */ addiu $a0, %lo(D_800E07C4) # addiu $a0, $a0, 0x7c4 -/* 090160 8008F560 0C01C42C */ jal func_800710B0 -/* 090164 8008F564 00002025 */ move $a0, $zero -/* 090168 8008F568 3C04800E */ lui $a0, %hi(D_800E0970) # $a0, 0x800e -/* 09016C 8008F56C 8C840970 */ lw $a0, %lo(D_800E0970)($a0) -/* 090170 8008F570 0C01C450 */ jal func_80071140 -/* 090174 8008F574 00000000 */ nop -/* 090178 8008F578 0C01C42C */ jal func_800710B0 -/* 09017C 8008F57C 24040002 */ li $a0, 2 -/* 090180 8008F580 3C10800E */ lui $s0, %hi(D_800E0710) # $s0, 0x800e -/* 090184 8008F584 3C12800E */ lui $s2, %hi(D_800E072E) # $s2, 0x800e -/* 090188 8008F588 2652072E */ addiu $s2, %lo(D_800E072E) # addiu $s2, $s2, 0x72e -/* 09018C 8008F58C 26100710 */ addiu $s0, %lo(D_800E0710) # addiu $s0, $s0, 0x710 -/* 090190 8008F590 2411FFFF */ li $s1, -1 -.L8008F594: -/* 090194 8008F594 86040000 */ lh $a0, ($s0) -/* 090198 8008F598 00000000 */ nop -/* 09019C 8008F59C 12240003 */ beq $s1, $a0, .L8008F5AC -/* 0901A0 8008F5A0 00000000 */ nop -/* 0901A4 8008F5A4 0C027142 */ jal func_8009C508 -/* 0901A8 8008F5A8 00000000 */ nop -.L8008F5AC: -/* 0901AC 8008F5AC 86040002 */ lh $a0, 2($s0) -/* 0901B0 8008F5B0 00000000 */ nop -/* 0901B4 8008F5B4 12240003 */ beq $s1, $a0, .L8008F5C4 -/* 0901B8 8008F5B8 00000000 */ nop -/* 0901BC 8008F5BC 0C027142 */ jal func_8009C508 -/* 0901C0 8008F5C0 00000000 */ nop -.L8008F5C4: -/* 0901C4 8008F5C4 26100006 */ addiu $s0, $s0, 6 -/* 0901C8 8008F5C8 1612FFF2 */ bne $s0, $s2, .L8008F594 -/* 0901CC 8008F5CC 00000000 */ nop -/* 0901D0 8008F5D0 0C03108B */ jal func_800C422C -/* 0901D4 8008F5D4 24040002 */ li $a0, 2 -/* 0901D8 8008F5D8 0C01FFE2 */ jal func_8007FF88 -/* 0901DC 8008F5DC 00000000 */ nop -/* 0901E0 8008F5E0 0C0002CA */ jal func_80000B28 -/* 0901E4 8008F5E4 00000000 */ nop -/* 0901E8 8008F5E8 0C00030B */ jal func_80000C2C -/* 0901EC 8008F5EC 00000000 */ nop -/* 0901F0 8008F5F0 0C000611 */ jal func_80001844 -/* 0901F4 8008F5F4 00000000 */ nop -/* 0901F8 8008F5F8 0C01BD59 */ jal func_8006F564 -/* 0901FC 8008F5FC 00002025 */ move $a0, $zero -/* 090200 8008F600 8FBF0024 */ lw $ra, 0x24($sp) -/* 090204 8008F604 8FB00018 */ lw $s0, 0x18($sp) -/* 090208 8008F608 8FB1001C */ lw $s1, 0x1c($sp) -/* 09020C 8008F60C 8FB20020 */ lw $s2, 0x20($sp) -/* 090210 8008F610 03E00008 */ jr $ra -/* 090214 8008F614 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_080500/func_80092BE0.s b/asm/non_matchings/unknown_080500/func_80092BE0.s deleted file mode 100644 index b6f6981a..00000000 --- a/asm/non_matchings/unknown_080500/func_80092BE0.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_80092BE0 -/* 0937E0 80092BE0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0937E4 80092BE4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0937E8 80092BE8 00803825 */ move $a3, $a0 -/* 0937EC 80092BEC AFA70018 */ sw $a3, 0x18($sp) -/* 0937F0 80092BF0 0C0078A7 */ jal func_8001E29C -/* 0937F4 80092BF4 2404001C */ li $a0, 28 -/* 0937F8 80092BF8 804E0000 */ lb $t6, ($v0) -/* 0937FC 80092BFC 8FA70018 */ lw $a3, 0x18($sp) -/* 093800 80092C00 2408FFFF */ li $t0, -1 -/* 093804 80092C04 00002825 */ move $a1, $zero -/* 093808 80092C08 110E000C */ beq $t0, $t6, .L80092C3C -/* 09380C 80092C0C 01003025 */ move $a2, $t0 -/* 093810 80092C10 80440000 */ lb $a0, ($v0) -/* 093814 80092C14 00401821 */ addu $v1, $v0, $zero -.L80092C18: -/* 093818 80092C18 14E40002 */ bne $a3, $a0, .L80092C24 -/* 09381C 80092C1C 00000000 */ nop -/* 093820 80092C20 00A03025 */ move $a2, $a1 -.L80092C24: -/* 093824 80092C24 80640001 */ lb $a0, 1($v1) -/* 093828 80092C28 24A50001 */ addiu $a1, $a1, 1 -/* 09382C 80092C2C 11040003 */ beq $t0, $a0, .L80092C3C -/* 093830 80092C30 24630001 */ addiu $v1, $v1, 1 -/* 093834 80092C34 04C0FFF8 */ bltz $a2, .L80092C18 -/* 093838 80092C38 00000000 */ nop -.L80092C3C: -/* 09383C 80092C3C 04C0000D */ bltz $a2, .L80092C74 -/* 093840 80092C40 240F0010 */ li $t7, 16 -/* 093844 80092C44 3C0C8012 */ lui $t4, %hi(D_80126448) # $t4, 0x8012 -/* 093848 80092C48 8D8C6448 */ lw $t4, %lo(D_80126448)($t4) -/* 09384C 80092C4C 00CFC004 */ sllv $t8, $t7, $a2 -/* 093850 80092C50 3C0D8012 */ lui $t5, %hi(D_8012644C) # $t5, 0x8012 -/* 093854 80092C54 8DAD644C */ lw $t5, %lo(D_8012644C)($t5) -/* 093858 80092C58 001857C3 */ sra $t2, $t8, 0x1f -/* 09385C 80092C5C 014C7024 */ and $t6, $t2, $t4 -/* 093860 80092C60 15C00004 */ bnez $t6, .L80092C74 -/* 093864 80092C64 030D7824 */ and $t7, $t8, $t5 -/* 093868 80092C68 15E00003 */ bnez $t7, .L80092C78 -/* 09386C 80092C6C 8FBF0014 */ lw $ra, 0x14($sp) -/* 093870 80092C70 2406FFFF */ li $a2, -1 -.L80092C74: -/* 093874 80092C74 8FBF0014 */ lw $ra, 0x14($sp) -.L80092C78: -/* 093878 80092C78 27BD0018 */ addiu $sp, $sp, 0x18 -/* 09387C 80092C7C 03E00008 */ jr $ra -/* 093880 80092C80 00C01025 */ move $v0, $a2 - diff --git a/asm/non_matchings/unknown_080500/func_8009C228.s b/asm/non_matchings/unknown_080500/func_8009C228.s deleted file mode 100644 index 4c4624c5..00000000 --- a/asm/non_matchings/unknown_080500/func_8009C228.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_8009C228 -/* 09CE28 8009C228 3C028012 */ lui $v0, 0x8012 -/* 09CE2C 8009C22C 00441021 */ addu $v0, $v0, $a0 -/* 09CE30 8009C230 804263F0 */ lb $v0, 0x63f0($v0) -/* 09CE34 8009C234 03E00008 */ jr $ra -/* 09CE38 8009C238 00000000 */ nop - -/* 09CE3C 8009C23C 3C028012 */ lui $v0, 0x8012 -/* 09CE40 8009C240 00441021 */ addu $v0, $v0, $a0 -/* 09CE44 8009C244 804263F0 */ lb $v0, 0x63f0($v0) -/* 09CE48 8009C248 03E00008 */ jr $ra -/* 09CE4C 8009C24C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8009C250.s b/asm/non_matchings/unknown_080500/func_8009C250.s deleted file mode 100644 index 17a214a7..00000000 --- a/asm/non_matchings/unknown_080500/func_8009C250.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_8009C250 -/* 09CE50 8009C250 3C028012 */ lui $v0, 0x8012 -/* 09CE54 8009C254 00441021 */ addu $v0, $v0, $a0 -/* 09CE58 8009C258 804269C0 */ lb $v0, 0x69c0($v0) -/* 09CE5C 8009C25C 03E00008 */ jr $ra -/* 09CE60 8009C260 00000000 */ nop - -/* 09CE64 8009C264 3C018012 */ lui $at, 0x8012 -/* 09CE68 8009C268 00240821 */ addu $at, $at, $a0 -/* 09CE6C 8009C26C 03E00008 */ jr $ra -/* 09CE70 8009C270 A02569C0 */ sb $a1, 0x69c0($at) - diff --git a/asm/non_matchings/unknown_080500/func_8009C274.s b/asm/non_matchings/unknown_080500/func_8009C274.s deleted file mode 100644 index c6ac2eb1..00000000 --- a/asm/non_matchings/unknown_080500/func_8009C274.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8009C274 -/* 09CE74 8009C274 3C028012 */ lui $v0, 0x8012 -/* 09CE78 8009C278 03E00008 */ jr $ra -/* 09CE7C 8009C27C 244263DC */ addiu $v0, $v0, 0x63dc - diff --git a/asm/non_matchings/unknown_080500/func_8009C490.s b/asm/non_matchings/unknown_080500/func_8009C490.s deleted file mode 100644 index a7e9ed04..00000000 --- a/asm/non_matchings/unknown_080500/func_8009C490.s +++ /dev/null @@ -1,9 +0,0 @@ -glabel func_8009C490 -/* 09D090 8009C490 3C028012 */ lui $v0, 0x8012 -/* 09D094 8009C494 03E00008 */ jr $ra -/* 09D098 8009C498 24426530 */ addiu $v0, $v0, 0x6530 - -/* 09D09C 8009C49C 3C01800E */ lui $at, 0x800e -/* 09D0A0 8009C4A0 03E00008 */ jr $ra -/* 09D0A4 8009C4A4 AC20F488 */ sw $zero, -0xb78($at) - diff --git a/asm/non_matchings/unknown_080500/func_8009CFB0.s b/asm/non_matchings/unknown_080500/func_8009CFB0.s deleted file mode 100644 index 02c9cae6..00000000 --- a/asm/non_matchings/unknown_080500/func_8009CFB0.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_8009CFB0 -/* 09DBB0 8009CFB0 3C02800E */ lui $v0, %hi(D_800DF4E0) # $v0, 0x800e -/* 09DBB4 8009CFB4 2442F4E0 */ addiu $v0, %lo(D_800DF4E0) # addiu $v0, $v0, -0xb20 -/* 09DBB8 8009CFB8 804E0000 */ lb $t6, ($v0) -/* 09DBBC 8009CFBC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 09DBC0 8009CFC0 11C00006 */ beqz $t6, .L8009CFDC -/* 09DBC4 8009CFC4 AFBF0014 */ sw $ra, 0x14($sp) -/* 09DBC8 8009CFC8 A0400000 */ sb $zero, ($v0) -/* 09DBCC 8009CFCC 0C031588 */ jal func_800C5620 -/* 09DBD0 8009CFD0 24040001 */ li $a0, 1 -/* 09DBD4 8009CFD4 0C026F97 */ jal func_8009BE5C -/* 09DBD8 8009CFD8 00000000 */ nop -.L8009CFDC: -/* 09DBDC 8009CFDC 8FBF0014 */ lw $ra, 0x14($sp) -/* 09DBE0 8009CFE0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 09DBE4 8009CFE4 03E00008 */ jr $ra -/* 09DBE8 8009CFE8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8009D330.s b/asm/non_matchings/unknown_080500/func_8009D330.s deleted file mode 100644 index 026a49ce..00000000 --- a/asm/non_matchings/unknown_080500/func_8009D330.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8009D330 -/* 09DF30 8009D330 3C01800E */ lui $at, 0x800e -/* 09DF34 8009D334 03E00008 */ jr $ra -/* 09DF38 8009D338 A024F4DC */ sb $a0, -0xb24($at) - diff --git a/asm/non_matchings/unknown_080500/func_8009D33C.s b/asm/non_matchings/unknown_080500/func_8009D33C.s deleted file mode 100644 index 242b99fc..00000000 --- a/asm/non_matchings/unknown_080500/func_8009D33C.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_8009D33C -/* 09DF3C 8009D33C 3C028012 */ lui $v0, %hi(D_801264E2) # $v0, 0x8012 -/* 09DF40 8009D340 244264E2 */ addiu $v0, %lo(D_801264E2) # addiu $v0, $v0, 0x64e2 -/* 09DF44 8009D344 804E0000 */ lb $t6, ($v0) -/* 09DF48 8009D348 00000000 */ nop -/* 09DF4C 8009D34C 148E0002 */ bne $a0, $t6, .L8009D358 -/* 09DF50 8009D350 00000000 */ nop -/* 09DF54 8009D354 A0450000 */ sb $a1, ($v0) -.L8009D358: -/* 09DF58 8009D358 03E00008 */ jr $ra -/* 09DF5C 8009D35C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8009EA6C.s b/asm/non_matchings/unknown_080500/func_8009EA6C.s deleted file mode 100644 index 02fac2ae..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EA6C.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8009EA6C -/* 09F66C 8009EA6C 3C028012 */ lui $v0, 0x8012 -/* 09F670 8009EA70 03E00008 */ jr $ra -/* 09F674 8009EA74 24426448 */ addiu $v0, $v0, 0x6448 - diff --git a/asm/non_matchings/unknown_080500/func_8009EA78.s b/asm/non_matchings/unknown_080500/func_8009EA78.s deleted file mode 100644 index a52874ce..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EA78.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_8009EA78 -/* 09F678 8009EA78 3C028012 */ lui $v0, %hi(D_80126448) # $v0, 0x8012 -/* 09F67C 8009EA7C 24426448 */ addiu $v0, %lo(D_80126448) # addiu $v0, $v0, 0x6448 -/* 09F680 8009EA80 8C4E0000 */ lw $t6, ($v0) -/* 09F684 8009EA84 8C4F0004 */ lw $t7, 4($v0) -/* 09F688 8009EA88 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 09F68C 8009EA8C AFBF0014 */ sw $ra, 0x14($sp) -/* 09F690 8009EA90 01C44025 */ or $t0, $t6, $a0 -/* 09F694 8009EA94 01E54825 */ or $t1, $t7, $a1 -/* 09F698 8009EA98 AFA40018 */ sw $a0, 0x18($sp) -/* 09F69C 8009EA9C AFA5001C */ sw $a1, 0x1c($sp) -/* 09F6A0 8009EAA0 AC490004 */ sw $t1, 4($v0) -/* 09F6A4 8009EAA4 0C01BB38 */ jal func_8006ECE0 -/* 09F6A8 8009EAA8 AC480000 */ sw $t0, ($v0) -/* 09F6AC 8009EAAC 8FBF0014 */ lw $ra, 0x14($sp) -/* 09F6B0 8009EAB0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 09F6B4 8009EAB4 03E00008 */ jr $ra -/* 09F6B8 8009EAB8 24020001 */ li $v0, 1 - diff --git a/asm/non_matchings/unknown_080500/func_8009EABC.s b/asm/non_matchings/unknown_080500/func_8009EABC.s deleted file mode 100644 index 79bfa7d1..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EABC.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_8009EABC -/* 09F6BC 8009EABC 3C028012 */ lui $v0, %hi(D_80126448) # $v0, 0x8012 -/* 09F6C0 8009EAC0 24426448 */ addiu $v0, %lo(D_80126448) # addiu $v0, $v0, 0x6448 -/* 09F6C4 8009EAC4 8C4E0000 */ lw $t6, ($v0) -/* 09F6C8 8009EAC8 8C4F0004 */ lw $t7, 4($v0) -/* 09F6CC 8009EACC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 09F6D0 8009EAD0 00804027 */ not $t0, $a0 -/* 09F6D4 8009EAD4 00A04827 */ not $t1, $a1 -/* 09F6D8 8009EAD8 AFBF0014 */ sw $ra, 0x14($sp) -/* 09F6DC 8009EADC 01C85024 */ and $t2, $t6, $t0 -/* 09F6E0 8009EAE0 01E95824 */ and $t3, $t7, $t1 -/* 09F6E4 8009EAE4 AFA40018 */ sw $a0, 0x18($sp) -/* 09F6E8 8009EAE8 AFA5001C */ sw $a1, 0x1c($sp) -/* 09F6EC 8009EAEC AC4B0004 */ sw $t3, 4($v0) -/* 09F6F0 8009EAF0 0C01BB38 */ jal func_8006ECE0 -/* 09F6F4 8009EAF4 AC4A0000 */ sw $t2, ($v0) -/* 09F6F8 8009EAF8 8FBF0014 */ lw $ra, 0x14($sp) -/* 09F6FC 8009EAFC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 09F700 8009EB00 03E00008 */ jr $ra -/* 09F704 8009EB04 24020001 */ li $v0, 1 - diff --git a/asm/non_matchings/unknown_080500/func_8009EB08.s b/asm/non_matchings/unknown_080500/func_8009EB08.s deleted file mode 100644 index c9bd61b3..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EB08.s +++ /dev/null @@ -1,8 +0,0 @@ -glabel func_8009EB08 -/* 09F708 8009EB08 3C028012 */ lui $v0, %hi(D_80126448) # $v0, 0x8012 -/* 09F70C 8009EB0C 3C038012 */ lui $v1, %hi(D_8012644C) # $v1, 0x8012 -/* 09F710 8009EB10 8C63644C */ lw $v1, %lo(D_8012644C)($v1) -/* 09F714 8009EB14 8C426448 */ lw $v0, %lo(D_80126448)($v0) -/* 09F718 8009EB18 03E00008 */ jr $ra -/* 09F71C 8009EB1C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8009EB20.s b/asm/non_matchings/unknown_080500/func_8009EB20.s deleted file mode 100644 index 7303bca9..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EB20.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_8009EB20 -/* 09F720 8009EB20 3C0F8012 */ lui $t7, %hi(D_8012644C) # $t7, 0x8012 -/* 09F724 8009EB24 8DEF644C */ lw $t7, %lo(D_8012644C)($t7) -/* 09F728 8009EB28 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 09F72C 8009EB2C 31F9000C */ andi $t9, $t7, 0xc -/* 09F730 8009EB30 00001825 */ move $v1, $zero -/* 09F734 8009EB34 AFB90004 */ sw $t9, 4($sp) -/* 09F738 8009EB38 AFA00000 */ sw $zero, ($sp) -/* 09F73C 8009EB3C 0000C025 */ move $t8, $zero -/* 09F740 8009EB40 24010004 */ li $at, 4 -/* 09F744 8009EB44 1321000B */ beq $t9, $at, .L8009EB74 -/* 09F748 8009EB48 00000000 */ nop -/* 09F74C 8009EB4C 17000003 */ bnez $t8, .L8009EB5C -/* 09F750 8009EB50 24010008 */ li $at, 8 -/* 09F754 8009EB54 13210009 */ beq $t9, $at, .L8009EB7C -/* 09F758 8009EB58 00000000 */ nop -.L8009EB5C: -/* 09F75C 8009EB5C 1700000A */ bnez $t8, .L8009EB88 -/* 09F760 8009EB60 2401000C */ li $at, 12 -/* 09F764 8009EB64 13210007 */ beq $t9, $at, .L8009EB84 -/* 09F768 8009EB68 00000000 */ nop -/* 09F76C 8009EB6C 10000007 */ b .L8009EB8C -/* 09F770 8009EB70 00601025 */ move $v0, $v1 -.L8009EB74: -/* 09F774 8009EB74 10000004 */ b .L8009EB88 -/* 09F778 8009EB78 24030001 */ li $v1, 1 -.L8009EB7C: -/* 09F77C 8009EB7C 10000002 */ b .L8009EB88 -/* 09F780 8009EB80 24030002 */ li $v1, 2 -.L8009EB84: -/* 09F784 8009EB84 24030003 */ li $v1, 3 -.L8009EB88: -/* 09F788 8009EB88 00601025 */ move $v0, $v1 -.L8009EB8C: -/* 09F78C 8009EB8C 03E00008 */ jr $ra -/* 09F790 8009EB90 27BD0010 */ addiu $sp, $sp, 0x10 - diff --git a/asm/non_matchings/unknown_080500/func_8009EB94.s b/asm/non_matchings/unknown_080500/func_8009EB94.s deleted file mode 100644 index a71574c3..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EB94.s +++ /dev/null @@ -1,57 +0,0 @@ -glabel func_8009EB94 -/* 09F794 8009EB94 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 09F798 8009EB98 240E0000 */ li $t6, 0 -/* 09F79C 8009EB9C 240F0000 */ li $t7, 0 -/* 09F7A0 8009EBA0 24010001 */ li $at, 1 -/* 09F7A4 8009EBA4 AFBF0014 */ sw $ra, 0x14($sp) -/* 09F7A8 8009EBA8 AFAF001C */ sw $t7, 0x1c($sp) -/* 09F7AC 8009EBAC 10810009 */ beq $a0, $at, .L8009EBD4 -/* 09F7B0 8009EBB0 AFAE0018 */ sw $t6, 0x18($sp) -/* 09F7B4 8009EBB4 24010002 */ li $at, 2 -/* 09F7B8 8009EBB8 1081000B */ beq $a0, $at, .L8009EBE8 -/* 09F7BC 8009EBBC 24080000 */ li $t0, 0 -/* 09F7C0 8009EBC0 24010003 */ li $at, 3 -/* 09F7C4 8009EBC4 1081000C */ beq $a0, $at, .L8009EBF8 -/* 09F7C8 8009EBC8 240A0000 */ li $t2, 0 -/* 09F7CC 8009EBCC 1000000D */ b .L8009EC04 -/* 09F7D0 8009EBD0 00000000 */ nop -.L8009EBD4: -/* 09F7D4 8009EBD4 24180000 */ li $t8, 0 -/* 09F7D8 8009EBD8 24190004 */ li $t9, 4 -/* 09F7DC 8009EBDC AFB9001C */ sw $t9, 0x1c($sp) -/* 09F7E0 8009EBE0 10000008 */ b .L8009EC04 -/* 09F7E4 8009EBE4 AFB80018 */ sw $t8, 0x18($sp) -.L8009EBE8: -/* 09F7E8 8009EBE8 24090008 */ li $t1, 8 -/* 09F7EC 8009EBEC AFA9001C */ sw $t1, 0x1c($sp) -/* 09F7F0 8009EBF0 10000004 */ b .L8009EC04 -/* 09F7F4 8009EBF4 AFA80018 */ sw $t0, 0x18($sp) -.L8009EBF8: -/* 09F7F8 8009EBF8 240B000C */ li $t3, 12 -/* 09F7FC 8009EBFC AFAB001C */ sw $t3, 0x1c($sp) -/* 09F800 8009EC00 AFAA0018 */ sw $t2, 0x18($sp) -.L8009EC04: -/* 09F804 8009EC04 3C028012 */ lui $v0, %hi(D_80126448) # $v0, 0x8012 -/* 09F808 8009EC08 24426448 */ addiu $v0, %lo(D_80126448) # addiu $v0, $v0, 0x6448 -/* 09F80C 8009EC0C 8C4C0000 */ lw $t4, ($v0) -/* 09F810 8009EC10 2401FFFF */ li $at, -1 -/* 09F814 8009EC14 8C4D0004 */ lw $t5, 4($v0) -/* 09F818 8009EC18 01817024 */ and $t6, $t4, $at -/* 09F81C 8009EC1C 2401FFF3 */ li $at, -13 -/* 09F820 8009EC20 8FA80018 */ lw $t0, 0x18($sp) -/* 09F824 8009EC24 8FA9001C */ lw $t1, 0x1c($sp) -/* 09F828 8009EC28 01A17824 */ and $t7, $t5, $at -/* 09F82C 8009EC2C AC4F0004 */ sw $t7, 4($v0) -/* 09F830 8009EC30 AC4E0000 */ sw $t6, ($v0) -/* 09F834 8009EC34 01C85025 */ or $t2, $t6, $t0 -/* 09F838 8009EC38 01E95825 */ or $t3, $t7, $t1 -/* 09F83C 8009EC3C AC4B0004 */ sw $t3, 4($v0) -/* 09F840 8009EC40 0C01FE40 */ jal func_8007F900 -/* 09F844 8009EC44 AC4A0000 */ sw $t2, ($v0) -/* 09F848 8009EC48 0C01BB38 */ jal func_8006ECE0 -/* 09F84C 8009EC4C 00000000 */ nop -/* 09F850 8009EC50 8FBF0014 */ lw $ra, 0x14($sp) -/* 09F854 8009EC54 27BD0020 */ addiu $sp, $sp, 0x20 -/* 09F858 8009EC58 03E00008 */ jr $ra -/* 09F85C 8009EC5C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/func_8009EC60.s b/asm/non_matchings/unknown_080500/func_8009EC60.s deleted file mode 100644 index c4b65b69..00000000 --- a/asm/non_matchings/unknown_080500/func_8009EC60.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8009EC60 -/* 09F860 8009EC60 3C0F8012 */ lui $t7, %hi(D_8012644C) # $t7, 0x8012 -/* 09F864 8009EC64 8DEF644C */ lw $t7, %lo(D_8012644C)($t7) -/* 09F868 8009EC68 03E00008 */ jr $ra -/* 09F86C 8009EC6C 31E20001 */ andi $v0, $t7, 1 - diff --git a/data/dkr.data.s b/data/dkr.data.s index 6441a254..51ae5016 100644 --- a/data/dkr.data.s +++ b/data/dkr.data.s @@ -4154,6 +4154,8 @@ glabel D_800E043C .word 0xFFF4FFF8 .word 0x00000000 .word 0x00000000 + +glabel D_800E044C .word 0x00000000 .word 0xFFF8FFF4 .word 0x00000000 diff --git a/src/mips1/unknown_080500.c b/src/mips1/unknown_080500.c index 9e8f6a13..28c056e1 100644 --- a/src/mips1/unknown_080500.c +++ b/src/mips1/unknown_080500.c @@ -54,12 +54,14 @@ extern unk800DF4A0* D_800DF4A0; extern s32 D_800DF478; extern s32 D_800DF47C; +extern s32 D_800DF488; extern s32 D_800DF498; extern s32 D_800DF4B8; extern s32 D_800DF4BC; extern s32 D_800DF4C8; extern s32 D_800DF4D4; extern s8 D_800DF4D8; +extern s8 D_800DF4DC; extern s8 D_800DF4E0; extern s8 D_800DF4E4[4]; extern s8 D_800DF4EC; @@ -76,6 +78,10 @@ extern s32 D_800DFFD4; extern s32 D_800E0398; extern s32 D_800E0410; extern s32 D_800E0414; +extern u32* D_800E041C; +extern u32* D_800E042C; +extern u32* D_800E043C; +extern u32* D_800E044C; /* Size: 0x18 Bytes */ typedef struct unk800E045C { @@ -90,6 +96,9 @@ extern unk800E045C D_800E045C; extern unk800E045C D_800E0474; extern unk800E045C D_800E048C; +extern s16 D_800E0710[30]; +extern s16 D_800E07C4[30]; +extern s32 D_800E0970; extern s32 D_800E0984; extern s32 D_800E0A24; extern u32* D_800E0A50; @@ -117,6 +126,7 @@ extern s16 D_800E1768[10]; extern s32 D_800E17D8; extern s32 *D_800E1DA4[2]; extern s32 *D_800E1DAC[2]; +extern s32 D_800E1DB4; extern s32 D_800E1DB8; extern s32 D_800E1DBC; extern s8 D_800E1E28; @@ -127,10 +137,12 @@ extern s32 D_801263AC; extern s32 D_801263BC; extern s32 D_801263C4; extern s8 D_801263D4[4]; +extern s8 D_801263DC; extern s32 D_801263D8; extern s32 D_801263E0; extern s8 D_801263E8[8]; extern s8 D_801263F0[8]; +extern s64 D_80126448; extern f32 D_80126450; extern u8 D_80126454; extern u8 D_80126455; @@ -162,6 +174,15 @@ extern s8 D_801264E2; extern s8 D_80126504; extern s8 D_8012650E; extern s8 D_80126516; + +/* Size: 0x228 bytes */ +typedef struct unk80126530 { + u8 pad0[0x4B]; + u8 unk4B; + u8 pad4C[0x1DC]; +} unk80126530; +extern unk80126530 *D_80126530[3]; + extern u32* D_80126550[1]; // lookup table? Unknown number of entries. extern s8* D_801267EC; extern s32 D_80126804; @@ -170,6 +191,7 @@ extern s32 D_8012683C; extern s32 D_80126840; extern s32 D_80126844; extern s32 D_8012684C; +extern s8 D_801269C0[4]; // Unknown number of entries. extern s32 D_801269FC; extern s32 D_80126A0C; extern s32 D_80126A64; @@ -192,6 +214,8 @@ extern s32 D_80126C78; Settings *get_settings(); void func_8009C4A8(s16 *arg0); +void func_8008E4B0(void); +s8* func_8001E29C(s32 arg0); GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8007F900.s") @@ -211,7 +235,12 @@ void func_8007FF88(void) { GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8007FFEC.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80080580.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80080BC8.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80080E6C.s") + +void func_80080E6C(void) { + D_800E1DB8 = 0; + D_800E1DB4 = (s32) (1 - D_800E1DB4); +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80080E90.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80081218.s") @@ -316,7 +345,34 @@ GLOBAL_ASM("asm/non_matchings/unknown_080500/MenuSaveOptionsInit.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800853D0.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80085B9C.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800860A8.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800861C8.s") + +/* Size: 0x10 bytes */ +typedef struct unk800861C8 { + u8 unk0; + u8 unk1; + u8 unk2; + u8 pad3; + u16 pad4; + s8 unk6; + s8 pad7; + u32 pad8; + u32 unkC; +} unk800861C8; + +void func_800861C8(unk800861C8* arg0, s32 *arg1) { + s32 i; + for(i = 0; i < 3; i++) { + if (D_80126530[i]->unk4B != 0) { + arg0[*arg1].unk0 = 1; + arg0[*arg1].unk1 = 0; + arg0[*arg1].unk2 = 0; + arg0[*arg1].unk6 = i; + arg0[*arg1].unkC = func_80073C4C(); + (*arg1)++; + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800862C4.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800867D4.s") @@ -479,7 +535,15 @@ void menu_magic_codes_list_init(void) { GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008A56C.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008A8F8.s") + +void func_8008A8F8(s32 arg0, s32 arg1, s32 arg2) { + if (arg0 & arg1) { + if (arg0 & gActiveMagicCodes) { + gActiveMagicCodes &= ~arg2; + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/MenuMagicCodesListLoop.s") void func_8008AD1C(void) { @@ -602,12 +666,43 @@ void func_8008E45C(void) { D_800E048C.unk8 = D_80126550[29]; } -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008E4B0.s") +//GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008E4B0.s") +void func_8008E4B0(void) { + D_800E041C = D_80126550[61]; + D_800E042C = D_80126550[60]; + D_800E043C = D_80126550[63]; + D_800E044C = D_80126550[62]; +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008E4EC.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/MenuTrackSelectInit.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008F00C.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/MenuTrackSelectLoop.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008F534.s") + +void func_8008F534(void) { + s32 i; + + func_80066894(0, 0); + func_8009C4A8(D_800E07C4); + func_800710B0(0); + func_80071140(D_800E0970); + func_800710B0(2); + for(i = 0; i < 15; i += 3){ + if (D_800E0710[i] != -1) { + func_8009C508(D_800E0710[i]); + } + if (D_800E0710[i + 1] != -1) { + func_8009C508(D_800E0710[i + 1]); + } + } + func_800C422C(2); + func_8007FF88(); + func_80000B28(); + func_80000C2C(); + func_80001844(); + func_8006F564(0); +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/D_8008F618.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008FA54.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8008FF1C.s") @@ -624,11 +719,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80090F30.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80092188.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80092BE0.s") -#else -extern s32 D_80126448; -extern s32 D_8012644C; s32 func_80092BE0(s32 arg0) { s8 *trackIdArray; s32 index; @@ -650,19 +740,15 @@ s32 func_80092BE0(s32 arg0) { } } - // Does not match! This block has regalloc issues. if (temp >= 0) { - s32 temp2 = 0x10 << temp; - s32 temp3 = (0x10 << temp) & D_8012644C; - s32 temp4 = ((0x10 << temp) >> 0x1F) & D_80126448; - if (temp4 == 0 && temp3 == 0) { + s64 temp2 = 0x10 << temp; + if ((temp2 & D_80126448) == 0) { temp = -1; } } return temp; } -#endif GLOBAL_ASM("asm/non_matchings/unknown_080500/MenuLoadNewAreaInit.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80092E94.s") @@ -762,7 +848,47 @@ void func_800976F8(u32 arg0, char *output, s32 length) { } } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_080500/func_80097744.s") +#else +// Almost matches, except for some regalloc issues. +s32 func_80097744(unsigned char *arg0, s32 arg1) { + s32 i; + u32 output; + u8 processingChars; + u8 currentChar; + s32 charIndex; + + output = 0; + processingChars = 1; + + for (i = 0; i < arg1; i++) { + if (arg0[i] == '\0') { + processingChars = 0; + } + + if (!processingChars) { + currentChar = ' '; + } else { + currentChar = arg0[i]; + } + + charIndex = 0; + while (D_800E0F6C[charIndex] != currentChar) { + charIndex++; + if (charIndex >= 0x1F) { + break; + } + } + + output <<= 5; + output |= charIndex & 0x1F; + } + + return output; +} +#endif + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_800977D0.s") void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, s32 arg6) { @@ -835,8 +961,6 @@ void func_8009ABAC(void) { func_800C422C(2); } -s8* func_8001E29C(s32 arg0); - void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { s32 phi_v1; @@ -951,10 +1075,26 @@ s32 func_8009C1B0(void) { return D_800DF4D4; } +s8 func_8009C228(s32 arg0) { + return D_801263F0[arg0]; +} -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009C228.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009C250.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009C274.s") +// Unused duplicate of func_8009C228()? +s8 func_8009C23C(s32 arg0) { + return D_801263F0[arg0]; +} + +s8 func_8009C250(s32 arg0) { + return D_801269C0[arg0]; +} + +void func_8009C264(s32 arg0, s32 arg1) { + D_801269C0[arg0] = arg1; +} + +s8* func_8009C274(void) { + return &D_801263DC; +} s8 func_8009C280(s32 arg0) { if (arg0 < 0 || arg0 >= 4) { @@ -1026,7 +1166,13 @@ s32 func_8009C440(void) { return (D_800E0410 + 1) << 1; // Doesn't match with multiply. } -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009C490.s") +unk80126530** func_8009C490(void) { + return (unk80126530**)&D_80126530; +} + +void func_8009C49C(void) { + D_800DF488 = 0; +} void func_8009C4A8(s16 *arg0) { s32 index = 0; @@ -1068,7 +1214,14 @@ void func_8009CF68(s32 arg0) { } } -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009CFB0.s") +void func_8009CFB0(void) { + if (D_800DF4E0 != 0) { + D_800DF4E0 = 0; + func_800C5620(1); + func_8009BE5C(); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009CFEC.s") void func_8009D118(s32 arg0) { @@ -1115,8 +1268,16 @@ void func_8009D324(void) { D_800DF4D8 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009D330.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009D33C.s") +void func_8009D330(s32 arg0) { + D_800DF4DC = arg0; +} + +void func_8009D33C(s32 arg0, s32 arg1) { + if (D_801264E2 == arg0) { + D_801264E2 = arg1; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009D360.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009D9F4.s") GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009DB3C.s") @@ -1145,13 +1306,67 @@ f32 func_8009E9B0(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3) { return 1.0f; } -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EA6C.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EA78.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EABC.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EB08.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EB20.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EB94.s") -GLOBAL_ASM("asm/non_matchings/unknown_080500/func_8009EC60.s") +s64* func_8009EA6C(void) { + return &D_80126448; +} + +s32 func_8009EA78(s64 arg0) { + D_80126448 |= arg0; + func_8006ECE0(); + return 1; +} + +s32 func_8009EABC(s64 arg0) { + D_80126448 &= ~arg0; + func_8006ECE0(); + return 1; +} + +s64 func_8009EB08(void) { + return D_80126448; +} + +s32 func_8009EB20(void) { + s32 val = 0; + switch(D_80126448 & 0xC) { + case 4: + val = 1; + break; + case 8: + val = 2; + break; + case 12: + val = 3; + break; + } + return val; +} + +void func_8009EB94(s32 arg0) { + s64 sp18 = 0; + + switch(arg0) { + case 1: + sp18 = 4; + break; + case 2: + sp18 = 8; + break; + case 3: + sp18 = 12; + break; + } + + D_80126448 &= 0xFFFFFFFFFFFFFFF3; + D_80126448 |= sp18; + + func_8007F900(); + func_8006ECE0(); +} + +s32 func_8009EC60(void) { + return D_80126448 & 1; +} s32 is_in_adventure_two(void) { return gIsInAdventureTwo; diff --git a/undefined_syms.txt b/undefined_syms.txt index 5f2d6b3f..04c32085 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -415,6 +415,7 @@ D_800E0418 = 0x800E0418; D_800E041C = 0x800E041C; D_800E042C = 0x800E042C; D_800E043C = 0x800E043C; +D_800E044C = 0x800E044C; D_800E045C = 0x800E045C; D_800E0474 = 0x800E0474; D_800E048C = 0x800E048C;