From 0853ca21b3a5cb11c983f78dff9c399d9a2de070 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Mon, 29 Jun 2020 14:22:34 -0500 Subject: [PATCH] Decompiled func_80065D40, and changed 0667D0.s to 066AA0.s --- asm/non_matchings/func_80065D98.s | 40 ++++ asm/non_matchings/func_80065E30.s | 31 ++++ asm/{unknown_0667D0.s => unknown_066AA0.s} | 202 --------------------- src/unknown_0667D0.c | 17 ++ 4 files changed, 88 insertions(+), 202 deletions(-) create mode 100644 asm/non_matchings/func_80065D98.s create mode 100644 asm/non_matchings/func_80065E30.s rename asm/{unknown_0667D0.s => unknown_066AA0.s} (98%) diff --git a/asm/non_matchings/func_80065D98.s b/asm/non_matchings/func_80065D98.s new file mode 100644 index 00000000..b3cbb0a4 --- /dev/null +++ b/asm/non_matchings/func_80065D98.s @@ -0,0 +1,40 @@ +glabel D_80065D98 +/* 066998 80065D98 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 06699C 80065D9C AFBF001C */ sw $ra, 0x1c($sp) +/* 0669A0 80065DA0 0C02DBD4 */ jal func_800B6F50 +/* 0669A4 80065DA4 AFA40020 */ sw $a0, 0x20($sp) +/* 0669A8 80065DA8 3C0E8012 */ lui $t6, %hi(D_8011F758) # $t6, 0x8012 +/* 0669AC 80065DAC 25CEF758 */ addiu $t6, %lo(D_8011F758) # addiu $t6, $t6, -0x8a8 +/* 0669B0 80065DB0 3C048012 */ lui $a0, %hi(D_8011F910) # $a0, 0x8012 +/* 0669B4 80065DB4 3C068007 */ lui $a2, %hi(D_8006C330) # $a2, 0x8007 +/* 0669B8 80065DB8 240F000A */ li $t7, 10 +/* 0669BC 80065DBC AFAF0014 */ sw $t7, 0x14($sp) +/* 0669C0 80065DC0 24C6C330 */ addiu $a2, %lo(D_8006C330) # addiu $a2, $a2, -0x3cd0 +/* 0669C4 80065DC4 2484F910 */ addiu $a0, %lo(D_8011F910) # addiu $a0, $a0, -0x6f0 +/* 0669C8 80065DC8 AFAE0010 */ sw $t6, 0x10($sp) +/* 0669CC 80065DCC 24050003 */ li $a1, 3 +/* 0669D0 80065DD0 0C032214 */ jal osCreateThread +/* 0669D4 80065DD4 00003825 */ move $a3, $zero +/* 0669D8 80065DD8 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 +/* 0669DC 80065DDC 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 +/* 0669E0 80065DE0 24180000 */ li $t8, 0 +/* 0669E4 80065DE4 24190000 */ li $t9, 0 +/* 0669E8 80065DE8 24080000 */ li $t0, 0 +/* 0669EC 80065DEC 24090000 */ li $t1, 0 +/* 0669F0 80065DF0 3C048012 */ lui $a0, %hi(D_8011F910) # $a0, 0x8012 +/* 0669F4 80065DF4 AC592004 */ sw $t9, 0x2004($v0) +/* 0669F8 80065DF8 AC582000 */ sw $t8, 0x2000($v0) +/* 0669FC 80065DFC AC490004 */ sw $t1, 4($v0) +/* 066A00 80065E00 AC480000 */ sw $t0, ($v0) +/* 066A04 80065E04 0C032268 */ jal osStartThread +/* 066A08 80065E08 2484F910 */ addiu $a0, %lo(D_8011F910) # addiu $a0, $a0, -0x6f0 +/* 066A0C 80065E0C 00002025 */ move $a0, $zero +/* 066A10 80065E10 0C033210 */ jal func_800CC840 +/* 066A14 80065E14 00002825 */ move $a1, $zero +.L80065E18: +/* 066A18 80065E18 1000FFFF */ b .L80065E18 +/* 066A1C 80065E1C 00000000 */ nop +/* 066A20 80065E20 8FBF001C */ lw $ra, 0x1c($sp) +/* 066A24 80065E24 27BD0020 */ addiu $sp, $sp, 0x20 +/* 066A28 80065E28 03E00008 */ jr $ra +/* 066A2C 80065E2C 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/func_80065E30.s b/asm/non_matchings/func_80065E30.s new file mode 100644 index 00000000..b9202406 --- /dev/null +++ b/asm/non_matchings/func_80065E30.s @@ -0,0 +1,31 @@ +glabel func_80065E30 +/* 066A30 80065E30 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 +/* 066A34 80065E34 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 +/* 066A38 80065E38 8C4F2004 */ lw $t7, 0x2004($v0) +/* 066A3C 80065E3C 8C4E2000 */ lw $t6, 0x2000($v0) +/* 066A40 80065E40 8C490004 */ lw $t1, 4($v0) +/* 066A44 80065E44 25F90001 */ addiu $t9, $t7, 1 +/* 066A48 80065E48 2F210001 */ sltiu $at, $t9, 1 +/* 066A4C 80065E4C 8C480000 */ lw $t0, ($v0) +/* 066A50 80065E50 01C1C021 */ addu $t8, $t6, $at +/* 066A54 80065E54 252B0001 */ addiu $t3, $t1, 1 +/* 066A58 80065E58 2D610001 */ sltiu $at, $t3, 1 +/* 066A5C 80065E5C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 066A60 80065E60 01015021 */ addu $t2, $t0, $at +/* 066A64 80065E64 AFBF0014 */ sw $ra, 0x14($sp) +/* 066A68 80065E68 AC582000 */ sw $t8, 0x2000($v0) +/* 066A6C 80065E6C AC592004 */ sw $t9, 0x2004($v0) +/* 066A70 80065E70 AC4A0000 */ sw $t2, ($v0) +/* 066A74 80065E74 170A0002 */ bne $t8, $t2, .L80065E80 +/* 066A78 80065E78 AC4B0004 */ sw $t3, 4($v0) +/* 066A7C 80065E7C 132B0003 */ beq $t9, $t3, .L80065E8C +.L80065E80: +/* 066A80 80065E80 3C04800E */ lui $a0, %hi(D_800E6ED0) # $a0, 0x800e +/* 066A84 80065E84 0C032755 */ jal func_800C9D54 +/* 066A88 80065E88 24846ED0 */ addiu $a0, %lo(D_800E6ED0) # addiu $a0, $a0, 0x6ed0 +.L80065E8C: +/* 066A8C 80065E8C 8FBF0014 */ lw $ra, 0x14($sp) +/* 066A90 80065E90 27BD0018 */ addiu $sp, $sp, 0x18 +/* 066A94 80065E94 03E00008 */ jr $ra +/* 066A98 80065E98 00000000 */ nop +/* 066A9C 80065E9C 00000000 */ nop \ No newline at end of file diff --git a/asm/unknown_0667D0.s b/asm/unknown_066AA0.s similarity index 98% rename from asm/unknown_0667D0.s rename to asm/unknown_066AA0.s index 0c5699fd..07665dd1 100755 --- a/asm/unknown_0667D0.s +++ b/asm/unknown_066AA0.s @@ -6,208 +6,6 @@ .set noreorder # dont insert nops after branches .set gp=64 # 64-bit instructions are used -#glabel func_80065BD0 -#/* 0667D0 80065BD0 3C01800E */ lui $at, 0x800e -#/* 0667D4 80065BD4 03E00008 */ jr $ra -#/* 0667D8 80065BD8 A424D050 */ sh $a0, -0x2fb0($at) -# -#/* 0667DC 80065BDC 3C02800E */ lui $v0, %hi(D_800DD050) # $v0, 0x800e -#/* 0667E0 80065BE0 8442D050 */ lh $v0, %lo(D_800DD050)($v0) -#/* 0667E4 80065BE4 03E00008 */ jr $ra -#/* 0667E8 80065BE8 00000000 */ nop - -#glabel func_80065BEC -#/* 0667EC 80065BEC 3C02800E */ lui $v0, %hi(D_800DD050) # $v0, 0x800e -#/* 0667F0 80065BF0 8442D050 */ lh $v0, %lo(D_800DD050)($v0) -#/* 0667F4 80065BF4 24010001 */ li $at, 1 -#/* 0667F8 80065BF8 10400007 */ beqz $v0, .L80065C18 -#/* 0667FC 80065BFC 00000000 */ nop -#/* 066800 80065C00 1041000A */ beq $v0, $at, .L80065C2C -#/* 066804 80065C04 24010002 */ li $at, 2 -#/* 066808 80065C08 10410005 */ beq $v0, $at, .L80065C20 -#/* 06680C 80065C0C 2484FFC0 */ addiu $a0, $a0, -0x40 -#/* 066810 80065C10 10000007 */ b .L80065C30 -#/* 066814 80065C14 24020040 */ li $v0, 64 -#.L80065C18: -#/* 066818 80065C18 03E00008 */ jr $ra -#/* 06681C 80065C1C 00801025 */ move $v0, $a0 -#.L80065C20: -#/* 066820 80065C20 00047043 */ sra $t6, $a0, 1 -#/* 066824 80065C24 03E00008 */ jr $ra -#/* 066828 80065C28 25C20040 */ addiu $v0, $t6, 0x40 -#.L80065C2C: -#/* 06682C 80065C2C 24020040 */ li $v0, 64 -#.L80065C30: -#/* 066830 80065C30 03E00008 */ jr $ra -#/* 066834 80065C34 00000000 */ nop - -#glabel func_80065C38 -#/* 066838 80065C38 27BDFFE0 */ addiu $sp, $sp, -0x20 -#/* 06683C 80065C3C AFBF0014 */ sw $ra, 0x14($sp) -#/* 066840 80065C40 AFA40020 */ sw $a0, 0x20($sp) -#/* 066844 80065C44 AFA50024 */ sw $a1, 0x24($sp) -#/* 066848 80065C48 AFA60028 */ sw $a2, 0x28($sp) -#/* 06684C 80065C4C AFA7002C */ sw $a3, 0x2c($sp) -#/* 066850 80065C50 8CAF0008 */ lw $t7, 8($a1) -#/* 066854 80065C54 00000000 */ nop -#/* 066858 80065C58 11E00036 */ beqz $t7, .L80065D34 -#/* 06685C 80065C5C 8FBF0014 */ lw $ra, 0x14($sp) -#/* 066860 80065C60 0C01959A */ jal func_80065668 -#/* 066864 80065C64 00000000 */ nop -#/* 066868 80065C68 10400031 */ beqz $v0, .L80065D30 -#/* 06686C 80065C6C 00403025 */ move $a2, $v0 -#/* 066870 80065C70 8FA20024 */ lw $v0, 0x24($sp) -#/* 066874 80065C74 8FB80020 */ lw $t8, 0x20($sp) -#/* 066878 80065C78 8C480008 */ lw $t0, 8($v0) -#/* 06687C 80065C7C 8F19001C */ lw $t9, 0x1c($t8) -#/* 066880 80065C80 8D0900D8 */ lw $t1, 0xd8($t0) -#/* 066884 80065C84 240B000D */ li $t3, 13 -#/* 066888 80065C88 03295021 */ addu $t2, $t9, $t1 -#/* 06688C 80065C8C ACCA0004 */ sw $t2, 4($a2) -#/* 066890 80065C90 ACC00000 */ sw $zero, ($a2) -#/* 066894 80065C94 A4CB0008 */ sh $t3, 8($a2) -#/* 066898 80065C98 844C001A */ lh $t4, 0x1a($v0) -#/* 06689C 80065C9C 00000000 */ nop -#/* 0668A0 80065CA0 A4CC000A */ sh $t4, 0xa($a2) -#/* 0668A4 80065CA4 93A40037 */ lbu $a0, 0x37($sp) -#/* 0668A8 80065CA8 0C0196FB */ jal func_80065BEC -#/* 0668AC 80065CAC AFA6001C */ sw $a2, 0x1c($sp) -#/* 0668B0 80065CB0 8FA6001C */ lw $a2, 0x1c($sp) -#/* 0668B4 80065CB4 00000000 */ nop -#/* 0668B8 80065CB8 A0C20012 */ sb $v0, 0x12($a2) -#/* 0668BC 80065CBC 87AD0032 */ lh $t5, 0x32($sp) -#/* 0668C0 80065CC0 00000000 */ nop -#/* 0668C4 80065CC4 A4CD0010 */ sh $t5, 0x10($a2) -#/* 0668C8 80065CC8 93AE003B */ lbu $t6, 0x3b($sp) -#/* 0668CC 80065CCC 00000000 */ nop -#/* 0668D0 80065CD0 A0CE0013 */ sb $t6, 0x13($a2) -#/* 0668D4 80065CD4 C7A4002C */ lwc1 $f4, 0x2c($sp) -#/* 0668D8 80065CD8 00000000 */ nop -#/* 0668DC 80065CDC E4C4000C */ swc1 $f4, 0xc($a2) -#/* 0668E0 80065CE0 8FA5003C */ lw $a1, 0x3c($sp) -#/* 0668E4 80065CE4 8FA40020 */ lw $a0, 0x20($sp) -#/* 0668E8 80065CE8 0C0195F1 */ jal func_800657C4 -#/* 0668EC 80065CEC 00000000 */ nop -#/* 0668F0 80065CF0 8FA6001C */ lw $a2, 0x1c($sp) -#/* 0668F4 80065CF4 24050003 */ li $a1, 3 -#/* 0668F8 80065CF8 ACC20014 */ sw $v0, 0x14($a2) -#/* 0668FC 80065CFC 8FAF0028 */ lw $t7, 0x28($sp) -#/* 066900 80065D00 00000000 */ nop -#/* 066904 80065D04 ACCF0018 */ sw $t7, 0x18($a2) -#/* 066908 80065D08 8FB80024 */ lw $t8, 0x24($sp) -#/* 06690C 80065D0C 00000000 */ nop -#/* 066910 80065D10 8F080008 */ lw $t0, 8($t8) -#/* 066914 80065D14 00000000 */ nop -#/* 066918 80065D18 8D04000C */ lw $a0, 0xc($t0) -#/* 06691C 80065D1C 00000000 */ nop -#/* 066920 80065D20 8C990008 */ lw $t9, 8($a0) -#/* 066924 80065D24 00000000 */ nop -#/* 066928 80065D28 0320F809 */ jalr $t9 -#/* 06692C 80065D2C 00000000 */ nop -#.L80065D30: -#/* 066930 80065D30 8FBF0014 */ lw $ra, 0x14($sp) -#.L80065D34: -#/* 066934 80065D34 27BD0020 */ addiu $sp, $sp, 0x20 -#/* 066938 80065D38 03E00008 */ jr $ra -#/* 06693C 80065D3C 00000000 */ nop - -glabel D_80065D40 -/* 066940 80065D40 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 066944 80065D44 AFBF001C */ sw $ra, 0x1c($sp) -/* 066948 80065D48 0C033168 */ jal func_800CC5A0 -/* 06694C 80065D4C 00000000 */ nop -/* 066950 80065D50 3C0E8012 */ lui $t6, %hi(D_8011D750) # $t6, 0x8012 -/* 066954 80065D54 25CED750 */ addiu $t6, %lo(D_8011D750) # addiu $t6, $t6, -0x28b0 -/* 066958 80065D58 3C048012 */ lui $a0, %hi(D_8011F760) # $a0, 0x8012 -/* 06695C 80065D5C 3C068006 */ lui $a2, %hi(D_80065D98) # $a2, 0x8006 -/* 066960 80065D60 24C65D98 */ addiu $a2, %lo(D_80065D98) # addiu $a2, $a2, 0x5d98 -/* 066964 80065D64 2484F760 */ addiu $a0, %lo(D_8011F760) # addiu $a0, $a0, -0x8a0 -/* 066968 80065D68 AFAE0010 */ sw $t6, 0x10($sp) -/* 06696C 80065D6C 24050001 */ li $a1, 1 -/* 066970 80065D70 00003825 */ move $a3, $zero -/* 066974 80065D74 0C032214 */ jal osCreateThread -/* 066978 80065D78 AFA00014 */ sw $zero, 0x14($sp) -/* 06697C 80065D7C 3C048012 */ lui $a0, %hi(D_8011F760) # $a0, 0x8012 -/* 066980 80065D80 0C032268 */ jal osStartThread -/* 066984 80065D84 2484F760 */ addiu $a0, %lo(D_8011F760) # addiu $a0, $a0, -0x8a0 -/* 066988 80065D88 8FBF001C */ lw $ra, 0x1c($sp) -/* 06698C 80065D8C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 066990 80065D90 03E00008 */ jr $ra -/* 066994 80065D94 00000000 */ nop - -glabel D_80065D98 -/* 066998 80065D98 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06699C 80065D9C AFBF001C */ sw $ra, 0x1c($sp) -/* 0669A0 80065DA0 0C02DBD4 */ jal func_800B6F50 -/* 0669A4 80065DA4 AFA40020 */ sw $a0, 0x20($sp) -/* 0669A8 80065DA8 3C0E8012 */ lui $t6, %hi(D_8011F758) # $t6, 0x8012 -/* 0669AC 80065DAC 25CEF758 */ addiu $t6, %lo(D_8011F758) # addiu $t6, $t6, -0x8a8 -/* 0669B0 80065DB0 3C048012 */ lui $a0, %hi(D_8011F910) # $a0, 0x8012 -/* 0669B4 80065DB4 3C068007 */ lui $a2, %hi(D_8006C330) # $a2, 0x8007 -/* 0669B8 80065DB8 240F000A */ li $t7, 10 -/* 0669BC 80065DBC AFAF0014 */ sw $t7, 0x14($sp) -/* 0669C0 80065DC0 24C6C330 */ addiu $a2, %lo(D_8006C330) # addiu $a2, $a2, -0x3cd0 -/* 0669C4 80065DC4 2484F910 */ addiu $a0, %lo(D_8011F910) # addiu $a0, $a0, -0x6f0 -/* 0669C8 80065DC8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0669CC 80065DCC 24050003 */ li $a1, 3 -/* 0669D0 80065DD0 0C032214 */ jal osCreateThread -/* 0669D4 80065DD4 00003825 */ move $a3, $zero -/* 0669D8 80065DD8 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 -/* 0669DC 80065DDC 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 -/* 0669E0 80065DE0 24180000 */ li $t8, 0 -/* 0669E4 80065DE4 24190000 */ li $t9, 0 -/* 0669E8 80065DE8 24080000 */ li $t0, 0 -/* 0669EC 80065DEC 24090000 */ li $t1, 0 -/* 0669F0 80065DF0 3C048012 */ lui $a0, %hi(D_8011F910) # $a0, 0x8012 -/* 0669F4 80065DF4 AC592004 */ sw $t9, 0x2004($v0) -/* 0669F8 80065DF8 AC582000 */ sw $t8, 0x2000($v0) -/* 0669FC 80065DFC AC490004 */ sw $t1, 4($v0) -/* 066A00 80065E00 AC480000 */ sw $t0, ($v0) -/* 066A04 80065E04 0C032268 */ jal osStartThread -/* 066A08 80065E08 2484F910 */ addiu $a0, %lo(D_8011F910) # addiu $a0, $a0, -0x6f0 -/* 066A0C 80065E0C 00002025 */ move $a0, $zero -/* 066A10 80065E10 0C033210 */ jal func_800CC840 -/* 066A14 80065E14 00002825 */ move $a1, $zero -.L80065E18: -/* 066A18 80065E18 1000FFFF */ b .L80065E18 -/* 066A1C 80065E1C 00000000 */ nop -/* 066A20 80065E20 8FBF001C */ lw $ra, 0x1c($sp) -/* 066A24 80065E24 27BD0020 */ addiu $sp, $sp, 0x20 -/* 066A28 80065E28 03E00008 */ jr $ra -/* 066A2C 80065E2C 00000000 */ nop - -glabel func_80065E30 -/* 066A30 80065E30 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 -/* 066A34 80065E34 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 -/* 066A38 80065E38 8C4F2004 */ lw $t7, 0x2004($v0) -/* 066A3C 80065E3C 8C4E2000 */ lw $t6, 0x2000($v0) -/* 066A40 80065E40 8C490004 */ lw $t1, 4($v0) -/* 066A44 80065E44 25F90001 */ addiu $t9, $t7, 1 -/* 066A48 80065E48 2F210001 */ sltiu $at, $t9, 1 -/* 066A4C 80065E4C 8C480000 */ lw $t0, ($v0) -/* 066A50 80065E50 01C1C021 */ addu $t8, $t6, $at -/* 066A54 80065E54 252B0001 */ addiu $t3, $t1, 1 -/* 066A58 80065E58 2D610001 */ sltiu $at, $t3, 1 -/* 066A5C 80065E5C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 066A60 80065E60 01015021 */ addu $t2, $t0, $at -/* 066A64 80065E64 AFBF0014 */ sw $ra, 0x14($sp) -/* 066A68 80065E68 AC582000 */ sw $t8, 0x2000($v0) -/* 066A6C 80065E6C AC592004 */ sw $t9, 0x2004($v0) -/* 066A70 80065E70 AC4A0000 */ sw $t2, ($v0) -/* 066A74 80065E74 170A0002 */ bne $t8, $t2, .L80065E80 -/* 066A78 80065E78 AC4B0004 */ sw $t3, 4($v0) -/* 066A7C 80065E7C 132B0003 */ beq $t9, $t3, .L80065E8C -.L80065E80: -/* 066A80 80065E80 3C04800E */ lui $a0, %hi(D_800E6ED0) # $a0, 0x800e -/* 066A84 80065E84 0C032755 */ jal func_800C9D54 -/* 066A88 80065E88 24846ED0 */ addiu $a0, %lo(D_800E6ED0) # addiu $a0, $a0, 0x6ed0 -.L80065E8C: -/* 066A8C 80065E8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 066A90 80065E90 27BD0018 */ addiu $sp, $sp, 0x18 -/* 066A94 80065E94 03E00008 */ jr $ra -/* 066A98 80065E98 00000000 */ nop - -/* 066A9C 80065E9C 00000000 */ nop glabel func_80065EA0 /* 066AA0 80065EA0 3C048012 */ lui $a0, %hi(D_80120DA0) # $a0, 0x8012 /* 066AA4 80065EA4 24030001 */ li $v1, 1 diff --git a/src/unknown_0667D0.c b/src/unknown_0667D0.c index b548b830..35101e56 100644 --- a/src/unknown_0667D0.c +++ b/src/unknown_0667D0.c @@ -6,6 +6,13 @@ extern s16 D_800DD050; +extern s32* D_80065D98; +extern s32* D_8006C330; +extern s32* D_8011D750; +extern s32* D_8011F758; +extern s32* D_8011F760; +extern s32* D_8011F910; + void func_80065BD0(s32 arg0) { D_800DD050 = arg0; } @@ -30,3 +37,13 @@ s32 func_80065BEC(s32 arg0) { GLOBAL_ASM("asm/non_matchings/func_80065C38.s") +void func_80065D40(void) { + func_800CC5A0(); + osCreateThread(&D_8011F760, 1, &D_80065D98, 0, &D_8011D750, 0); + osStartThread(&D_8011F760); +} + +GLOBAL_ASM("asm/non_matchings/func_80065D98.s") +GLOBAL_ASM("asm/non_matchings/func_80065E30.s") + +