From b492b8320997867c83a5a121de76258ec05e6303 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Fri, 10 Jul 2020 00:20:20 -0500 Subject: [PATCH 1/2] Decompiled 9 functions in unknown_043920 --- .../unknown_043920/func_8004F77C.s | 36 --- .../unknown_043920/func_8005234C.s | 18 -- .../unknown_043920/func_800535C4.s | 42 --- .../unknown_043920/func_80053664.s | 66 ----- .../unknown_043920/func_80056930.s | 27 -- .../unknown_043920/func_80057048.s | 27 -- .../unknown_043920/func_800570A4.s | 7 - .../unknown_043920/func_800579B0.s | 41 --- .../unknown_043920/func_8005C270.s | 37 --- src/mips1/unknown_043920.c | 253 +++++++++++++++++- undefined_syms.txt | 2 +- 11 files changed, 245 insertions(+), 311 deletions(-) delete mode 100644 asm/non_matchings/unknown_043920/func_8004F77C.s delete mode 100644 asm/non_matchings/unknown_043920/func_8005234C.s delete mode 100644 asm/non_matchings/unknown_043920/func_800535C4.s delete mode 100644 asm/non_matchings/unknown_043920/func_80053664.s delete mode 100644 asm/non_matchings/unknown_043920/func_80056930.s delete mode 100644 asm/non_matchings/unknown_043920/func_80057048.s delete mode 100644 asm/non_matchings/unknown_043920/func_800570A4.s delete mode 100644 asm/non_matchings/unknown_043920/func_800579B0.s delete mode 100644 asm/non_matchings/unknown_043920/func_8005C270.s diff --git a/asm/non_matchings/unknown_043920/func_8004F77C.s b/asm/non_matchings/unknown_043920/func_8004F77C.s deleted file mode 100644 index e3fff96b..00000000 --- a/asm/non_matchings/unknown_043920/func_8004F77C.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel func_8004F77C -/* 05037C 8004F77C 908E020A */ lbu $t6, 0x20a($a0) -/* 050380 8004F780 2401FF7F */ li $at, -129 -/* 050384 8004F784 01C17824 */ and $t7, $t6, $at -/* 050388 8004F788 A08F020A */ sb $t7, 0x20a($a0) -/* 05038C 8004F78C 3C188012 */ lui $t8, %hi(D_8011D528) # $t8, 0x8012 -/* 050390 8004F790 8F18D528 */ lw $t8, %lo(D_8011D528)($t8) -/* 050394 8004F794 35E90080 */ ori $t1, $t7, 0x80 -/* 050398 8004F798 33194000 */ andi $t9, $t8, 0x4000 -/* 05039C 8004F79C 13200002 */ beqz $t9, .L8004F7A8 -/* 0503A0 8004F7A0 00000000 */ nop -/* 0503A4 8004F7A4 A089020A */ sb $t1, 0x20a($a0) -.L8004F7A8: -/* 0503A8 8004F7A8 9082020A */ lbu $v0, 0x20a($a0) -/* 0503AC 8004F7AC 00000000 */ nop -/* 0503B0 8004F7B0 304A00C0 */ andi $t2, $v0, 0xc0 -/* 0503B4 8004F7B4 11400007 */ beqz $t2, .L8004F7D4 -/* 0503B8 8004F7B8 3043000F */ andi $v1, $v0, 0xf -/* 0503BC 8004F7BC 24630001 */ addiu $v1, $v1, 1 -/* 0503C0 8004F7C0 28610003 */ slti $at, $v1, 3 -/* 0503C4 8004F7C4 14200008 */ bnez $at, .L8004F7E8 -/* 0503C8 8004F7C8 304BFFF0 */ andi $t3, $v0, 0xfff0 -/* 0503CC 8004F7CC 10000005 */ b .L8004F7E4 -/* 0503D0 8004F7D0 24030002 */ li $v1, 2 -.L8004F7D4: -/* 0503D4 8004F7D4 2463FFFF */ addiu $v1, $v1, -1 -/* 0503D8 8004F7D8 04610003 */ bgez $v1, .L8004F7E8 -/* 0503DC 8004F7DC 304BFFF0 */ andi $t3, $v0, 0xfff0 -/* 0503E0 8004F7E0 00001825 */ move $v1, $zero -.L8004F7E4: -/* 0503E4 8004F7E4 304BFFF0 */ andi $t3, $v0, 0xfff0 -.L8004F7E8: -/* 0503E8 8004F7E8 01636025 */ or $t4, $t3, $v1 -/* 0503EC 8004F7EC 03E00008 */ jr $ra -/* 0503F0 8004F7F0 A08C020A */ sb $t4, 0x20a($a0) - diff --git a/asm/non_matchings/unknown_043920/func_8005234C.s b/asm/non_matchings/unknown_043920/func_8005234C.s deleted file mode 100644 index ef7d859d..00000000 --- a/asm/non_matchings/unknown_043920/func_8005234C.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_8005234C -/* 052F4C 8005234C 8482016C */ lh $v0, 0x16c($a0) -/* 052F50 80052350 00000000 */ nop -/* 052F54 80052354 000270C3 */ sra $t6, $v0, 3 -/* 052F58 80052358 004E7823 */ subu $t7, $v0, $t6 -/* 052F5C 8005235C A48F016C */ sh $t7, 0x16c($a0) -/* 052F60 80052360 8482016C */ lh $v0, 0x16c($a0) -/* 052F64 80052364 00000000 */ nop -/* 052F68 80052368 2841FFF7 */ slti $at, $v0, -9 -/* 052F6C 8005236C 14200004 */ bnez $at, .L80052380 -/* 052F70 80052370 2841000A */ slti $at, $v0, 0xa -/* 052F74 80052374 10200002 */ beqz $at, .L80052380 -/* 052F78 80052378 00000000 */ nop -/* 052F7C 8005237C A480016C */ sh $zero, 0x16c($a0) -.L80052380: -/* 052F80 80052380 03E00008 */ jr $ra -/* 052F84 80052384 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_800535C4.s b/asm/non_matchings/unknown_043920/func_800535C4.s deleted file mode 100644 index f85e3218..00000000 --- a/asm/non_matchings/unknown_043920/func_800535C4.s +++ /dev/null @@ -1,42 +0,0 @@ -glabel func_800535C4 -/* 0541C4 800535C4 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0541C8 800535C8 AFB00028 */ sw $s0, 0x28($sp) -/* 0541CC 800535CC 00A08025 */ move $s0, $a1 -/* 0541D0 800535D0 AFBF002C */ sw $ra, 0x2c($sp) -/* 0541D4 800535D4 860E01A0 */ lh $t6, 0x1a0($s0) -/* 0541D8 800535D8 3C058012 */ lui $a1, %hi(D_8011D510) # $a1, 0x8012 -/* 0541DC 800535DC 24A5D510 */ addiu $a1, %lo(D_8011D510) # addiu $a1, $a1, -0x2af0 -/* 0541E0 800535E0 000E7823 */ negu $t7, $t6 -/* 0541E4 800535E4 A4AF0000 */ sh $t7, ($a1) -/* 0541E8 800535E8 84980002 */ lh $t8, 2($a0) -/* 0541EC 800535EC 44800000 */ mtc1 $zero, $f0 -/* 0541F0 800535F0 0018C823 */ negu $t9, $t8 -/* 0541F4 800535F4 A4B90002 */ sh $t9, 2($a1) -/* 0541F8 800535F8 860801A4 */ lh $t0, 0x1a4($s0) -/* 0541FC 800535FC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 054200 80053600 44812000 */ mtc1 $at, $f4 -/* 054204 80053604 00084823 */ negu $t1, $t0 -/* 054208 80053608 A4A90004 */ sh $t1, 4($a1) -/* 05420C 8005360C 27A40030 */ addiu $a0, $sp, 0x30 -/* 054210 80053610 E4A0000C */ swc1 $f0, 0xc($a1) -/* 054214 80053614 E4A00010 */ swc1 $f0, 0x10($a1) -/* 054218 80053618 E4A00014 */ swc1 $f0, 0x14($a1) -/* 05421C 8005361C 0C01BF9D */ jal func_8006FE74 -/* 054220 80053620 E4A40008 */ swc1 $f4, 8($a1) -/* 054224 80053624 44800000 */ mtc1 $zero, $f0 -/* 054228 80053628 260A00A0 */ addiu $t2, $s0, 0xa0 -/* 05422C 8005362C 260B00A4 */ addiu $t3, $s0, 0xa4 -/* 054230 80053630 260C009C */ addiu $t4, $s0, 0x9c -/* 054234 80053634 44050000 */ mfc1 $a1, $f0 -/* 054238 80053638 44070000 */ mfc1 $a3, $f0 -/* 05423C 8005363C AFAC0018 */ sw $t4, 0x18($sp) -/* 054240 80053640 AFAB0014 */ sw $t3, 0x14($sp) -/* 054244 80053644 AFAA0010 */ sw $t2, 0x10($sp) -/* 054248 80053648 27A40030 */ addiu $a0, $sp, 0x30 -/* 05424C 8005364C 0C01BD93 */ jal func_8006F64C -/* 054250 80053650 3C06BF80 */ lui $a2, 0xbf80 -/* 054254 80053654 8FBF002C */ lw $ra, 0x2c($sp) -/* 054258 80053658 8FB00028 */ lw $s0, 0x28($sp) -/* 05425C 8005365C 03E00008 */ jr $ra -/* 054260 80053660 27BD0070 */ addiu $sp, $sp, 0x70 - diff --git a/asm/non_matchings/unknown_043920/func_80053664.s b/asm/non_matchings/unknown_043920/func_80053664.s deleted file mode 100644 index 76b297e6..00000000 --- a/asm/non_matchings/unknown_043920/func_80053664.s +++ /dev/null @@ -1,66 +0,0 @@ -glabel func_80053664 -/* 054264 80053664 C48400B4 */ lwc1 $f4, 0xb4($a0) -/* 054268 80053668 44803800 */ mtc1 $zero, $f7 -/* 05426C 8005366C 44803000 */ mtc1 $zero, $f6 -/* 054270 80053670 46002021 */ cvt.d.s $f0, $f4 -/* 054274 80053674 4620303C */ c.lt.d $f6, $f0 -/* 054278 80053678 3C01800E */ lui $at, %hi(D_800E676C) # $at, 0x800e -/* 05427C 8005367C 45000007 */ bc1f .L8005369C -/* 054280 80053680 3C028012 */ lui $v0, %hi(D_8011D528) # $v0, 0x8012 -/* 054284 80053684 C4296768 */ lwc1 $f9, %lo(D_800E6768)($at) -/* 054288 80053688 C428676C */ lwc1 $f8, %lo(D_800E676C)($at) -/* 05428C 8005368C 00000000 */ nop -/* 054290 80053690 46280281 */ sub.d $f10, $f0, $f8 -/* 054294 80053694 46205420 */ cvt.s.d $f16, $f10 -/* 054298 80053698 E49000B4 */ swc1 $f16, 0xb4($a0) -.L8005369C: -/* 05429C 8005369C 8C42D528 */ lw $v0, %lo(D_8011D528)($v0) -/* 0542A0 800536A0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0542A4 800536A4 304E8000 */ andi $t6, $v0, 0x8000 -/* 0542A8 800536A8 11C00007 */ beqz $t6, .L800536C8 -/* 0542AC 800536AC 304F4000 */ andi $t7, $v0, 0x4000 -/* 0542B0 800536B0 44819000 */ mtc1 $at, $f18 -/* 0542B4 800536B4 3C028012 */ lui $v0, %hi(D_8011D528) # $v0, 0x8012 -/* 0542B8 800536B8 E49200B4 */ swc1 $f18, 0xb4($a0) -/* 0542BC 800536BC 8C42D528 */ lw $v0, %lo(D_8011D528)($v0) -/* 0542C0 800536C0 00000000 */ nop -/* 0542C4 800536C4 304F4000 */ andi $t7, $v0, 0x4000 -.L800536C8: -/* 0542C8 800536C8 11E00011 */ beqz $t7, .L80053710 -/* 0542CC 800536CC 3C01800E */ lui $at, 0x800e -/* 0542D0 800536D0 C48400B8 */ lwc1 $f4, 0xb8($a0) -/* 0542D4 800536D4 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0542D8 800536D8 44813800 */ mtc1 $at, $f7 -/* 0542DC 800536DC 44803000 */ mtc1 $zero, $f6 -/* 0542E0 800536E0 46002021 */ cvt.d.s $f0, $f4 -/* 0542E4 800536E4 4626003C */ c.lt.d $f0, $f6 -/* 0542E8 800536E8 3C01800E */ lui $at, %hi(D_800E6774) # $at, 0x800e -/* 0542EC 800536EC 45000016 */ bc1f .L80053748 -/* 0542F0 800536F0 00000000 */ nop -/* 0542F4 800536F4 C4296770 */ lwc1 $f9, %lo(D_800E6770)($at) -/* 0542F8 800536F8 C4286774 */ lwc1 $f8, %lo(D_800E6774)($at) -/* 0542FC 800536FC 00000000 */ nop -/* 054300 80053700 46280280 */ add.d $f10, $f0, $f8 -/* 054304 80053704 46205420 */ cvt.s.d $f16, $f10 -/* 054308 80053708 03E00008 */ jr $ra -/* 05430C 8005370C E49000B8 */ swc1 $f16, 0xb8($a0) - -.L80053710: -/* 054310 80053710 C49200B8 */ lwc1 $f18, 0xb8($a0) -/* 054314 80053714 C4256778 */ lwc1 $f5, 0x6778($at) -/* 054318 80053718 C424677C */ lwc1 $f4, 0x677c($at) -/* 05431C 8005371C 46009021 */ cvt.d.s $f0, $f18 -/* 054320 80053720 4620203C */ c.lt.d $f4, $f0 -/* 054324 80053724 3C01800E */ lui $at, %hi(D_800E6784) # $at, 0x800e -/* 054328 80053728 45000007 */ bc1f .L80053748 -/* 05432C 8005372C 00000000 */ nop -/* 054330 80053730 C4276780 */ lwc1 $f7, %lo(D_800E6780)($at) -/* 054334 80053734 C4266784 */ lwc1 $f6, %lo(D_800E6784)($at) -/* 054338 80053738 00000000 */ nop -/* 05433C 8005373C 46260201 */ sub.d $f8, $f0, $f6 -/* 054340 80053740 462042A0 */ cvt.s.d $f10, $f8 -/* 054344 80053744 E48A00B8 */ swc1 $f10, 0xb8($a0) -.L80053748: -/* 054348 80053748 03E00008 */ jr $ra -/* 05434C 8005374C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_80056930.s b/asm/non_matchings/unknown_043920/func_80056930.s deleted file mode 100644 index 8d6e1775..00000000 --- a/asm/non_matchings/unknown_043920/func_80056930.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel func_80056930 -/* 057530 80056930 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 057534 80056934 AFBF0014 */ sw $ra, 0x14($sp) -/* 057538 80056938 AFA40018 */ sw $a0, 0x18($sp) -/* 05753C 8005693C 0C0270C3 */ jal func_8009C30C -/* 057540 80056940 AFA5001C */ sw $a1, 0x1c($sp) -/* 057544 80056944 8FA40018 */ lw $a0, 0x18($sp) -/* 057548 80056948 304E0100 */ andi $t6, $v0, 0x100 -/* 05754C 8005694C 11C00006 */ beqz $t6, .L80056968 -/* 057550 80056950 24050162 */ li $a1, 354 -/* 057554 80056954 24060008 */ li $a2, 8 -/* 057558 80056958 0C015C2E */ jal func_800570B8 -/* 05755C 8005695C 24070082 */ li $a3, 130 -/* 057560 80056960 10000007 */ b .L80056980 -/* 057564 80056964 8FBF0014 */ lw $ra, 0x14($sp) -.L80056968: -/* 057568 80056968 8FAF001C */ lw $t7, 0x1c($sp) -/* 05756C 8005696C 00000000 */ nop -/* 057570 80056970 81E50003 */ lb $a1, 3($t7) -/* 057574 80056974 0C015C12 */ jal func_80057048 -/* 057578 80056978 24A50156 */ addiu $a1, $a1, 0x156 -/* 05757C 8005697C 8FBF0014 */ lw $ra, 0x14($sp) -.L80056980: -/* 057580 80056980 27BD0018 */ addiu $sp, $sp, 0x18 -/* 057584 80056984 03E00008 */ jr $ra -/* 057588 80056988 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_80057048.s b/asm/non_matchings/unknown_043920/func_80057048.s deleted file mode 100644 index 4881667e..00000000 --- a/asm/non_matchings/unknown_043920/func_80057048.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel func_80057048 -/* 057C48 80057048 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 057C4C 8005704C 3C0F8012 */ lui $t7, %hi(D_8011D55C) # $t7, 0x8012 -/* 057C50 80057050 8DEFD55C */ lw $t7, %lo(D_8011D55C)($t7) -/* 057C54 80057054 AFBF001C */ sw $ra, 0x1c($sp) -/* 057C58 80057058 AFA40020 */ sw $a0, 0x20($sp) -/* 057C5C 8005705C AFA50024 */ sw $a1, 0x24($sp) -/* 057C60 80057060 8C820064 */ lw $v0, 0x64($a0) -/* 057C64 80057064 2401FFFF */ li $at, -1 -/* 057C68 80057068 11E1000A */ beq $t7, $at, .L80057094 -/* 057C6C 8005706C 00807025 */ move $t6, $a0 -/* 057C70 80057070 8C580108 */ lw $t8, 0x108($v0) -/* 057C74 80057074 97A40026 */ lhu $a0, 0x26($sp) -/* 057C78 80057078 17000007 */ bnez $t8, .L80057098 -/* 057C7C 8005707C 8FBF001C */ lw $ra, 0x1c($sp) -/* 057C80 80057080 8DC5000C */ lw $a1, 0xc($t6) -/* 057C84 80057084 8DC60010 */ lw $a2, 0x10($t6) -/* 057C88 80057088 8DC70014 */ lw $a3, 0x14($t6) -/* 057C8C 8005708C 0C0007AA */ jal func_80001EA8 -/* 057C90 80057090 AFA00010 */ sw $zero, 0x10($sp) -.L80057094: -/* 057C94 80057094 8FBF001C */ lw $ra, 0x1c($sp) -.L80057098: -/* 057C98 80057098 27BD0020 */ addiu $sp, $sp, 0x20 -/* 057C9C 8005709C 03E00008 */ jr $ra -/* 057CA0 800570A0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_800570A4.s b/asm/non_matchings/unknown_043920/func_800570A4.s deleted file mode 100644 index 8d58a78b..00000000 --- a/asm/non_matchings/unknown_043920/func_800570A4.s +++ /dev/null @@ -1,7 +0,0 @@ -glabel func_800570A4 -/* 057CA4 800570A4 8C820064 */ lw $v0, 0x64($a0) -/* 057CA8 800570A8 00000000 */ nop -/* 057CAC 800570AC A445020E */ sh $a1, 0x20e($v0) -/* 057CB0 800570B0 03E00008 */ jr $ra -/* 057CB4 800570B4 A0460210 */ sb $a2, 0x210($v0) - diff --git a/asm/non_matchings/unknown_043920/func_800579B0.s b/asm/non_matchings/unknown_043920/func_800579B0.s deleted file mode 100644 index a072e2c1..00000000 --- a/asm/non_matchings/unknown_043920/func_800579B0.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_800579B0 -/* 0585B0 800579B0 AFA50004 */ sw $a1, 4($sp) -/* 0585B4 800579B4 3C0E8012 */ lui $t6, %hi(D_8011D534) # $t6, 0x8012 -/* 0585B8 800579B8 8DCED534 */ lw $t6, %lo(D_8011D534)($t6) -/* 0585BC 800579BC 808301E1 */ lb $v1, 0x1e1($a0) -/* 0585C0 800579C0 44866000 */ mtc1 $a2, $f12 -/* 0585C4 800579C4 01C31023 */ subu $v0, $t6, $v1 -/* 0585C8 800579C8 44822000 */ mtc1 $v0, $f4 -/* 0585CC 800579CC 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 0585D0 800579D0 468021A0 */ cvt.s.w $f6, $f4 -/* 0585D4 800579D4 44818800 */ mtc1 $at, $f17 -/* 0585D8 800579D8 44808000 */ mtc1 $zero, $f16 -/* 0585DC 800579DC 460C3202 */ mul.s $f8, $f6, $f12 -/* 0585E0 800579E0 460042A1 */ cvt.d.s $f10, $f8 -/* 0585E4 800579E4 46305482 */ mul.d $f18, $f10, $f16 -/* 0585E8 800579E8 444FF800 */ cfc1 $t7, $31 -/* 0585EC 800579EC 00000000 */ nop -/* 0585F0 800579F0 35E10003 */ ori $at, $t7, 3 -/* 0585F4 800579F4 38210002 */ xori $at, $at, 2 -/* 0585F8 800579F8 44C1F800 */ ctc1 $at, $31 -/* 0585FC 800579FC 00000000 */ nop -/* 058600 80057A00 46209124 */ cvt.w.d $f4, $f18 -/* 058604 80057A04 44062000 */ mfc1 $a2, $f4 -/* 058608 80057A08 44CFF800 */ ctc1 $t7, $31 -/* 05860C 80057A0C 10400009 */ beqz $v0, .L80057A34 -/* 058610 80057A10 00C02825 */ move $a1, $a2 -/* 058614 80057A14 14C00008 */ bnez $a2, .L80057A38 -/* 058618 80057A18 0065C021 */ addu $t8, $v1, $a1 -/* 05861C 80057A1C 18400002 */ blez $v0, .L80057A28 -/* 058620 80057A20 00000000 */ nop -/* 058624 80057A24 24050001 */ li $a1, 1 -.L80057A28: -/* 058628 80057A28 04410003 */ bgez $v0, .L80057A38 -/* 05862C 80057A2C 0065C021 */ addu $t8, $v1, $a1 -/* 058630 80057A30 2405FFFF */ li $a1, -1 -.L80057A34: -/* 058634 80057A34 0065C021 */ addu $t8, $v1, $a1 -.L80057A38: -/* 058638 80057A38 03E00008 */ jr $ra -/* 05863C 80057A3C A09801E1 */ sb $t8, 0x1e1($a0) - diff --git a/asm/non_matchings/unknown_043920/func_8005C270.s b/asm/non_matchings/unknown_043920/func_8005C270.s deleted file mode 100644 index 44937859..00000000 --- a/asm/non_matchings/unknown_043920/func_8005C270.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_8005C270 -/* 05CE70 8005C270 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 05CE74 8005C274 AFBF0014 */ sw $ra, 0x14($sp) -/* 05CE78 8005C278 0C006E99 */ jal func_8001BA64 -/* 05CE7C 8005C27C AFA40018 */ sw $a0, 0x18($sp) -/* 05CE80 8005C280 8FA40018 */ lw $a0, 0x18($sp) -/* 05CE84 8005C284 00000000 */ nop -/* 05CE88 8005C288 808E0192 */ lb $t6, 0x192($a0) -/* 05CE8C 8005C28C 00000000 */ nop -/* 05CE90 8005C290 25CFFFFF */ addiu $t7, $t6, -1 -/* 05CE94 8005C294 A08F0192 */ sb $t7, 0x192($a0) -/* 05CE98 8005C298 80830192 */ lb $v1, 0x192($a0) -/* 05CE9C 8005C29C 00000000 */ nop -/* 05CEA0 8005C2A0 04610007 */ bgez $v1, .L8005C2C0 -/* 05CEA4 8005C2A4 00000000 */ nop -/* 05CEA8 8005C2A8 80850193 */ lb $a1, 0x193($a0) -/* 05CEAC 8005C2AC 0062C021 */ addu $t8, $v1, $v0 -/* 05CEB0 8005C2B0 18A00003 */ blez $a1, .L8005C2C0 -/* 05CEB4 8005C2B4 A0980192 */ sb $t8, 0x192($a0) -/* 05CEB8 8005C2B8 24B9FFFF */ addiu $t9, $a1, -1 -/* 05CEBC 8005C2BC A0990193 */ sb $t9, 0x193($a0) -.L8005C2C0: -/* 05CEC0 8005C2C0 84820190 */ lh $v0, 0x190($a0) -/* 05CEC4 8005C2C4 00000000 */ nop -/* 05CEC8 8005C2C8 28418301 */ slti $at, $v0, -0x7cff -/* 05CECC 8005C2CC 14200002 */ bnez $at, .L8005C2D8 -/* 05CED0 8005C2D0 2448FFFF */ addiu $t0, $v0, -1 -/* 05CED4 8005C2D4 A4880190 */ sh $t0, 0x190($a0) -.L8005C2D8: -/* 05CED8 8005C2D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 05CEDC 8005C2DC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 05CEE0 8005C2E0 03E00008 */ jr $ra -/* 05CEE4 8005C2E4 00000000 */ nop - -/* 05CEE8 8005C2E8 00000000 */ nop -/* 05CEEC 8005C2EC 00000000 */ nop - diff --git a/src/mips1/unknown_043920.c b/src/mips1/unknown_043920.c index 6394b6be..8b8b3394 100644 --- a/src/mips1/unknown_043920.c +++ b/src/mips1/unknown_043920.c @@ -8,7 +8,13 @@ extern s32 D_800DCB50; extern s16 D_800DCB54; extern f32 D_800DCB9C; extern s32 D_800DCDD0; +extern f64 D_800E6768; +extern f64 D_800E6770; +extern f64 D_800E6778; +extern f64 D_800E6780; extern f32 D_800E6A00; +extern s32 D_8011D528; +extern s32 D_8011D55C; extern s8 D_8011D582; extern s8 D_8011D583; extern s8 D_8011D584; @@ -46,7 +52,36 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004D590.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004D95C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DAB0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DE38.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004F77C.s") + +typedef struct unk8004F77C { + u8 unk0[0x20A]; + u8 unk20A; +} unk8004F77C; + +void func_8004F77C(unk8004F77C *arg0) { + s32 temp; + + arg0->unk20A &= ~0x80; + if ((D_8011D528 & 0x4000) != 0) { + arg0->unk20A |= 0x80; + } + + temp = arg0->unk20A & 0xF; + if ((arg0->unk20A & 0xC0) != 0) { + temp++; + if (temp >= 3) { + temp = 2; + } + } else { + temp--; + if (temp < 0) { + temp = 0; + } + } + + arg0->unk20A = (arg0->unk20A & 0xFFF0) | temp; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004F7F4.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80050754.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80050850.s") @@ -65,15 +100,115 @@ void func_800521B8(s32 arg0) { } GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800521C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005234C.s") + +/* Unknown Size */ +typedef struct unk8005234C { + u8 unk0[0x16C]; + s16 unk16C; +} unk8005234C; + +void func_8005234C(unk8005234C *arg0) { + arg0->unk16C -= arg0->unk16C >> 3; + if (arg0->unk16C >= -9 && arg0->unk16C < 10) { // Deadzone? + arg0->unk16C = 0; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052388.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005250C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052988.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052B64.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052D7C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053478.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800535C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053664.s") + +/* Unknown Size */ +typedef struct unk8011D510 { + s16 unk0; + s16 unk2; + s16 unk4; + u16 unk6; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; +} unk8011D510; + +extern unk8011D510 D_8011D510; + +/* Unknown Size */ +typedef struct unk800535C4 { + s16 unk0; + s16 unk2; +} unk800535C4; + +/* Unknown Size */ +typedef struct unk800535C4_2 { + u8 unk0[0x9C]; + s32 unk9C; + s32 unkA0; + s32 unkA4; + u8 unkA8[0xF8]; + s16 unk1A0; + s16 unk1A2; + s16 unk1A4; +} unk800535C4_2; + +/* Size: 0x40 Bytes */ +typedef struct unk800535C4_3 { + u8 unk0[0x40]; +} unk800535C4_3; + +void func_8006F64C(unk800535C4_3*, f32, f32, f32, s32*, s32*, s32*); + +void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) { + unk800535C4_3 sp30; + + D_8011D510.unk0 = -arg1->unk1A0; + D_8011D510.unk2 = -arg0->unk2; + D_8011D510.unk4 = -arg1->unk1A4; + D_8011D510.unkC = 0; + D_8011D510.unk10 = 0; + D_8011D510.unk14 = 0; + D_8011D510.unk8 = 1; + func_8006FE74(&sp30, &D_8011D510); + + func_8006F64C(&sp30, 0, -1, 0, &arg1->unkA0, &arg1->unkA4, &arg1->unk9C); +} + +typedef struct unk80053664 { + u8 unk0[0xB4]; + f32 unkB4; + f32 unkB8; +} unk80053664; + +void func_80053664(unk80053664 *arg0) { + f64 temp_f0; + f64 temp_f0_2; + f64 temp_f0_3; + + temp_f0 = (f64) arg0->unkB4; + + if (0.0 < temp_f0) { + arg0->unkB4 = (f32) (temp_f0 - D_800E6768); + } + + if ((D_8011D528 & 0x8000) != 0) { + arg0->unkB4 = 1.0f; + } + + if ((D_8011D528 & 0x4000) != 0) { + temp_f0_2 = (f64) arg0->unkB8; + if (temp_f0_2 < 1.0) { + arg0->unkB8 = (f32) (temp_f0_2 + D_800E6770); + } + } else { + temp_f0_3 = (f64) arg0->unkB8; + if (D_800E6778 < temp_f0_3) { + arg0->unkB8 = (f32) (temp_f0_3 - D_800E6780); + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053750.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053E9C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80054110.s") @@ -81,16 +216,92 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005492C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80054FD0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80055A84.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80055EC0.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80056930.s") + +/* Unknown Size */ +typedef struct unk800570A4 { + u8 unk0[0x108]; + s32 unk108; + u8 unk10C[0x102]; + s16 unk20E; + s8 unk210; +} unk800570A4; + +/* Unknown Size */ +typedef struct unk800570A4_2 { + u8 unk0[0xC]; + s32 unkC; + s32 unk10; + s32 unk14; + u8 unk18[0x4C]; + unk800570A4* unk64; +} unk800570A4_2; + +/* Unknown Size */ +typedef struct unk80056930 { + u8 unk0[0x3]; + s8 unk3; +} unk80056930; + +void func_80057048(unk800570A4_2 *arg0, s32 arg1); + +void func_80056930(unk800570A4_2 *arg0, unk80056930 *arg1) { + if ((func_8009C30C() & 0x100) != 0) { + func_800570B8(arg0, 0x162, 8, 0x82); + } else { + func_80057048(arg0, arg1->unk3 + 0x156); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005698C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80056E2C.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057048.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800570A4.s") + + +void func_80057048(unk800570A4_2 *arg0, s32 arg1) { + unk800570A4 *temp = arg0->unk64; + u16 temp2 = arg1; + if (D_8011D55C != -1 && temp->unk108 == 0) { + func_80001EA8(temp2, arg0->unkC, arg0->unk10, arg0->unk14, 0); + } +} + +unk800570A4 *func_800570A4(unk800570A4_2 *arg0, s32 arg1, s32 arg2) { + unk800570A4 *temp = arg0->unk64; + temp->unk20E = arg1; + temp->unk210 = arg2; + return temp; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800570B8.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057220.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800575EC.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800576E0.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800579B0.s") + +extern s32 D_8011D534; + +/* Unknown Size */ +typedef struct unk800579B0 { + u8 unk0[0x1E1]; + s8 unk1E1; +} unk800579B0; + +void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) { + s32 temp, temp2; + + temp = D_8011D534 - arg0->unk1E1; + temp2 = (s32)((f64)((f32)temp * arg2) * 0.125); + + if (temp != 0 && temp2 == 0) { + if (temp > 0) { + temp2 = 1; + } + if (temp < 0) { + temp2 = -1; + } + } + + arg0->unk1E1 = arg0->unk1E1 + temp2; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057A40.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800580B4.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800581E8.s") @@ -202,4 +413,28 @@ void func_8005C25C(void) { D_800DCB9C = D_800E6A00; } -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005C270.s") +/* Unknown Size */ +typedef struct unk8005C270 { + u8 unk0[0x190]; + s16 unk190; + s8 unk192; + s8 unk193; +} unk8005C270; + +void func_8005C270(unk8005C270 *arg0) { + s32 temp = func_8001BA64(); + + arg0->unk192--; + if (arg0->unk192 < 0) { + arg0->unk192 += temp; + if(arg0->unk193 > 0){ + arg0->unk193--; + } + } + + if (arg0->unk190 >= -31999) { + arg0->unk190--; + } +} + + diff --git a/undefined_syms.txt b/undefined_syms.txt index 5bf50456..cf924063 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1312,7 +1312,7 @@ D_800E6764 = 0x800E6764; D_800E6768 = 0x800E6768; D_800E676C = 0x800E676C; D_800E6770 = 0x800E6770; -D_800E6774 = 0x800E6774; +D_800E6778 = 0x800E6778; D_800E6780 = 0x800E6780; D_800E6784 = 0x800E6784; D_800E6788 = 0x800E6788; From 95c0fa617466c414c5e6025897fbb2e5dbb522e3 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Fri, 10 Jul 2020 00:25:49 -0500 Subject: [PATCH 2/2] Updated readme to add qemu-irix install instructions --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b7c5c75..a4c83db4 100755 --- a/README.md +++ b/README.md @@ -14,10 +14,16 @@ Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU * `binutils-mips` * `libssl-dev` -#### Debian / Ubuntu +### Debian / Ubuntu `sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 libssl-dev` +#### qemu-irix + +Download qemu-irix `.deb` package here: https://github.com/n64decomp/qemu-irix/releases + +Then install it by running `sudo dpkg -i qemu-irix-2.11.0-2169-g32ab296eef_amd64.deb` + ## Setup 1. Place the ROM file within the `baseroms` directory. **a.** Any DKR ROM should work as long as it is US 1.0.