From 03c4960eda680e870687159d9e267cf0d6b77677 Mon Sep 17 00:00:00 2001 From: dark-samus Date: Sat, 21 Nov 2020 02:40:54 -0500 Subject: [PATCH] some funcs in code_105f90 --- asm/nonmatchings/code_105f90/func_802E4AEC.s | 13 -- asm/nonmatchings/code_105f90/func_802E4B10.s | 24 --- asm/nonmatchings/code_105f90/func_802E4B60.s | 50 ------ asm/nonmatchings/code_105f90/func_802E4DE0.s | 13 -- asm/nonmatchings/code_105f90/func_802E5308.s | 11 -- asm/nonmatchings/code_105f90/func_802E540C.s | 11 -- asm/nonmatchings/code_105f90/func_802E5428.s | 17 --- asm/nonmatchings/code_105f90/func_802E545C.s | 16 -- asm/nonmatchings/code_105f90/func_802E548C.s | 11 -- asm/nonmatchings/code_105f90/func_802E54A8.s | 13 -- asm/nonmatchings/code_105f90/func_802E54CC.s | 42 ------ asm/nonmatchings/code_105f90/func_802E555C.s | 24 --- asm/nonmatchings/code_105f90/func_802E55A8.s | 46 ------ asm/nonmatchings/code_105f90/func_802E5648.s | 14 -- include/common_structs.h | 2 +- include/functions.h | 2 +- include/variables.h | 2 + src/code_104940_len_dc0.c | 2 +- src/code_105f90.c | 151 +++++++++++++++++-- src/code_a5dd0_len_114e0.c | 2 +- undefined_syms.txt | 1 + 21 files changed, 144 insertions(+), 323 deletions(-) delete mode 100644 asm/nonmatchings/code_105f90/func_802E4AEC.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E4B10.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E4B60.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E4DE0.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5308.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E540C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5428.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E545C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E548C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E54A8.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E54CC.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E555C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E55A8.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5648.s diff --git a/asm/nonmatchings/code_105f90/func_802E4AEC.s b/asm/nonmatchings/code_105f90/func_802E4AEC.s deleted file mode 100644 index 87da9125d3..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E4AEC.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E4AEC -/* 10636C 802E4AEC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106370 802E4AF0 3C050A00 */ lui $a1, 0xa00 -/* 106374 802E4AF4 24A50808 */ addiu $a1, $a1, 0x808 -/* 106378 802E4AF8 AFBF0010 */ sw $ra, 0x10($sp) -/* 10637C 802E4AFC 0C0B91CC */ jal func_802E4730 -/* 106380 802E4B00 00000000 */ nop -/* 106384 802E4B04 8FBF0010 */ lw $ra, 0x10($sp) -/* 106388 802E4B08 03E00008 */ jr $ra -/* 10638C 802E4B0C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E4B10.s b/asm/nonmatchings/code_105f90/func_802E4B10.s deleted file mode 100644 index c2f8f08de0..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E4B10.s +++ /dev/null @@ -1,24 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E4B10 -/* 106390 802E4B10 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106394 802E4B14 AFB00010 */ sw $s0, 0x10($sp) -/* 106398 802E4B18 0080802D */ daddu $s0, $a0, $zero -/* 10639C 802E4B1C AFBF0014 */ sw $ra, 0x14($sp) -/* 1063A0 802E4B20 8E020040 */ lw $v0, 0x40($s0) -/* 1063A4 802E4B24 0C04417A */ jal get_entity_by_index -/* 1063A8 802E4B28 90440000 */ lbu $a0, ($v0) -/* 1063AC 802E4B2C C4400048 */ lwc1 $f0, 0x48($v0) -/* 1063B0 802E4B30 3C014160 */ lui $at, 0x4160 -/* 1063B4 802E4B34 44811000 */ mtc1 $at, $f2 -/* 1063B8 802E4B38 E6000048 */ swc1 $f0, 0x48($s0) -/* 1063BC 802E4B3C C440004C */ lwc1 $f0, 0x4c($v0) -/* 1063C0 802E4B40 46020000 */ add.s $f0, $f0, $f2 -/* 1063C4 802E4B44 E600004C */ swc1 $f0, 0x4c($s0) -/* 1063C8 802E4B48 C4400050 */ lwc1 $f0, 0x50($v0) -/* 1063CC 802E4B4C E6000050 */ swc1 $f0, 0x50($s0) -/* 1063D0 802E4B50 8FBF0014 */ lw $ra, 0x14($sp) -/* 1063D4 802E4B54 8FB00010 */ lw $s0, 0x10($sp) -/* 1063D8 802E4B58 03E00008 */ jr $ra -/* 1063DC 802E4B5C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E4B60.s b/asm/nonmatchings/code_105f90/func_802E4B60.s deleted file mode 100644 index 4138ef0e94..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E4B60.s +++ /dev/null @@ -1,50 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E4B60 -/* 1063E0 802E4B60 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 1063E4 802E4B64 AFB10014 */ sw $s1, 0x14($sp) -/* 1063E8 802E4B68 0080882D */ daddu $s1, $a0, $zero -/* 1063EC 802E4B6C 3C02802E */ lui $v0, 0x802e -/* 1063F0 802E4B70 24424AEC */ addiu $v0, $v0, 0x4aec -/* 1063F4 802E4B74 AFBF0018 */ sw $ra, 0x18($sp) -/* 1063F8 802E4B78 AFB00010 */ sw $s0, 0x10($sp) -/* 1063FC 802E4B7C AE22003C */ sw $v0, 0x3c($s1) -/* 106400 802E4B80 240200FF */ addiu $v0, $zero, 0xff -/* 106404 802E4B84 A222000B */ sb $v0, 0xb($s1) -/* 106408 802E4B88 8E220000 */ lw $v0, ($s1) -/* 10640C 802E4B8C 8E300040 */ lw $s0, 0x40($s1) -/* 106410 802E4B90 34422000 */ ori $v0, $v0, 0x2000 -/* 106414 802E4B94 AE220000 */ sw $v0, ($s1) -/* 106418 802E4B98 0C04417A */ jal get_entity_by_index -/* 10641C 802E4B9C 92040000 */ lbu $a0, ($s0) -/* 106420 802E4BA0 92020009 */ lbu $v0, 9($s0) -/* 106424 802E4BA4 54400009 */ bnel $v0, $zero, .L802E4BCC -/* 106428 802E4BA8 A2000001 */ sb $zero, 1($s0) -/* 10642C 802E4BAC 3C013F80 */ lui $at, 0x3f80 -/* 106430 802E4BB0 44810000 */ mtc1 $at, $f0 -/* 106434 802E4BB4 24020001 */ addiu $v0, $zero, 1 -/* 106438 802E4BB8 A2020009 */ sb $v0, 9($s0) -/* 10643C 802E4BBC 24020002 */ addiu $v0, $zero, 2 -/* 106440 802E4BC0 A2020001 */ sb $v0, 1($s0) -/* 106444 802E4BC4 080B92F4 */ j .L802E4BD0 -/* 106448 802E4BC8 E6200054 */ swc1 $f0, 0x54($s1) -.L802E4BCC: -/* 10644C 802E4BCC AE200054 */ sw $zero, 0x54($s1) -.L802E4BD0: -/* 106450 802E4BD0 AE00000C */ sw $zero, 0xc($s0) -/* 106454 802E4BD4 AE000010 */ sw $zero, 0x10($s0) -/* 106458 802E4BD8 C6200054 */ lwc1 $f0, 0x54($s1) -/* 10645C 802E4BDC 0220202D */ daddu $a0, $s1, $zero -/* 106460 802E4BE0 AC800060 */ sw $zero, 0x60($a0) -/* 106464 802E4BE4 AC800064 */ sw $zero, 0x64($a0) -/* 106468 802E4BE8 AC800068 */ sw $zero, 0x68($a0) -/* 10646C 802E4BEC 46000086 */ mov.s $f2, $f0 -/* 106470 802E4BF0 E4800058 */ swc1 $f0, 0x58($a0) -/* 106474 802E4BF4 0C0B92C4 */ jal func_802E4B10 -/* 106478 802E4BF8 E482005C */ swc1 $f2, 0x5c($a0) -/* 10647C 802E4BFC 8FBF0018 */ lw $ra, 0x18($sp) -/* 106480 802E4C00 8FB10014 */ lw $s1, 0x14($sp) -/* 106484 802E4C04 8FB00010 */ lw $s0, 0x10($sp) -/* 106488 802E4C08 03E00008 */ jr $ra -/* 10648C 802E4C0C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_105f90/func_802E4DE0.s b/asm/nonmatchings/code_105f90/func_802E4DE0.s deleted file mode 100644 index 3087cfa1dd..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E4DE0.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E4DE0 -/* 106660 802E4DE0 8C820040 */ lw $v0, 0x40($a0) -/* 106664 802E4DE4 3C013F80 */ lui $at, 0x3f80 -/* 106668 802E4DE8 44810000 */ mtc1 $at, $f0 -/* 10666C 802E4DEC A0400001 */ sb $zero, 1($v0) -/* 106670 802E4DF0 E4800054 */ swc1 $f0, 0x54($a0) -/* 106674 802E4DF4 E4800058 */ swc1 $f0, 0x58($a0) -/* 106678 802E4DF8 E480005C */ swc1 $f0, 0x5c($a0) -/* 10667C 802E4DFC 03E00008 */ jr $ra -/* 106680 802E4E00 AC800068 */ sw $zero, 0x68($a0) diff --git a/asm/nonmatchings/code_105f90/func_802E5308.s b/asm/nonmatchings/code_105f90/func_802E5308.s deleted file mode 100644 index fc8658d2c0..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5308.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5308 -/* 106B88 802E5308 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106B8C 802E530C AFBF0010 */ sw $ra, 0x10($sp) -/* 106B90 802E5310 0C0B8D94 */ jal func_802E3650 -/* 106B94 802E5314 00000000 */ nop -/* 106B98 802E5318 8FBF0010 */ lw $ra, 0x10($sp) -/* 106B9C 802E531C 03E00008 */ jr $ra -/* 106BA0 802E5320 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E540C.s b/asm/nonmatchings/code_105f90/func_802E540C.s deleted file mode 100644 index 02dbecf3b6..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E540C.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E540C -/* 106C8C 802E540C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106C90 802E5410 AFBF0010 */ sw $ra, 0x10($sp) -/* 106C94 802E5414 0C0B92C4 */ jal func_802E4B10 -/* 106C98 802E5418 00000000 */ nop -/* 106C9C 802E541C 8FBF0010 */ lw $ra, 0x10($sp) -/* 106CA0 802E5420 03E00008 */ jr $ra -/* 106CA4 802E5424 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E5428.s b/asm/nonmatchings/code_105f90/func_802E5428.s deleted file mode 100644 index a18a86e2f7..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5428.s +++ /dev/null @@ -1,17 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5428 -/* 106CA8 802E5428 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106CAC 802E542C AFB00010 */ sw $s0, 0x10($sp) -/* 106CB0 802E5430 AFBF0014 */ sw $ra, 0x14($sp) -/* 106CB4 802E5434 0C0B92D8 */ jal func_802E4B60 -/* 106CB8 802E5438 0080802D */ daddu $s0, $a0, $zero -/* 106CBC 802E543C 3C05802F */ lui $a1, 0x802f -/* 106CC0 802E5440 24A5A728 */ addiu $a1, $a1, -0x58d8 -/* 106CC4 802E5444 0C0442F3 */ jal func_80110BCC -/* 106CC8 802E5448 0200202D */ daddu $a0, $s0, $zero -/* 106CCC 802E544C 8FBF0014 */ lw $ra, 0x14($sp) -/* 106CD0 802E5450 8FB00010 */ lw $s0, 0x10($sp) -/* 106CD4 802E5454 03E00008 */ jr $ra -/* 106CD8 802E5458 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E545C.s b/asm/nonmatchings/code_105f90/func_802E545C.s deleted file mode 100644 index 6dd157daf3..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E545C.s +++ /dev/null @@ -1,16 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E545C -/* 106CDC 802E545C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106CE0 802E5460 AFB00010 */ sw $s0, 0x10($sp) -/* 106CE4 802E5464 0080802D */ daddu $s0, $a0, $zero -/* 106CE8 802E5468 AFBF0014 */ sw $ra, 0x14($sp) -/* 106CEC 802E546C 0C0B9304 */ jal func_802E4C10 -/* 106CF0 802E5470 0000282D */ daddu $a1, $zero, $zero -/* 106CF4 802E5474 0C0B94C9 */ jal func_802E5324 -/* 106CF8 802E5478 0200202D */ daddu $a0, $s0, $zero -/* 106CFC 802E547C 8FBF0014 */ lw $ra, 0x14($sp) -/* 106D00 802E5480 8FB00010 */ lw $s0, 0x10($sp) -/* 106D04 802E5484 03E00008 */ jr $ra -/* 106D08 802E5488 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E548C.s b/asm/nonmatchings/code_105f90/func_802E548C.s deleted file mode 100644 index c1bf15287b..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E548C.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E548C -/* 106D0C 802E548C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106D10 802E5490 AFBF0010 */ sw $ra, 0x10($sp) -/* 106D14 802E5494 0C0B9381 */ jal func_802E4E04 -/* 106D18 802E5498 0000282D */ daddu $a1, $zero, $zero -/* 106D1C 802E549C 8FBF0010 */ lw $ra, 0x10($sp) -/* 106D20 802E54A0 03E00008 */ jr $ra -/* 106D24 802E54A4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E54A8.s b/asm/nonmatchings/code_105f90/func_802E54A8.s deleted file mode 100644 index e21686ea35..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E54A8.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E54A8 -/* 106D28 802E54A8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106D2C 802E54AC 3C05802F */ lui $a1, 0x802f -/* 106D30 802E54B0 24A5A760 */ addiu $a1, $a1, -0x58a0 -/* 106D34 802E54B4 AFBF0010 */ sw $ra, 0x10($sp) -/* 106D38 802E54B8 0C0442F3 */ jal func_80110BCC -/* 106D3C 802E54BC 00000000 */ nop -/* 106D40 802E54C0 8FBF0010 */ lw $ra, 0x10($sp) -/* 106D44 802E54C4 03E00008 */ jr $ra -/* 106D48 802E54C8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E54CC.s b/asm/nonmatchings/code_105f90/func_802E54CC.s deleted file mode 100644 index cc83ebeea2..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E54CC.s +++ /dev/null @@ -1,42 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E54CC -/* 106D4C 802E54CC 3C028011 */ lui $v0, %hi(gPlayerData+0x1C) -/* 106D50 802E54D0 9042F2AC */ lbu $v0, %lo(gPlayerData+0x1C)($v0) -/* 106D54 802E54D4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106D58 802E54D8 AFB00010 */ sw $s0, 0x10($sp) -/* 106D5C 802E54DC 0080802D */ daddu $s0, $a0, $zero -/* 106D60 802E54E0 14400018 */ bnez $v0, .L802E5544 -/* 106D64 802E54E4 AFBF0014 */ sw $ra, 0x14($sp) -/* 106D68 802E54E8 3C04F840 */ lui $a0, 0xf840 -/* 106D6C 802E54EC 0C05152F */ jal get_global_flag -/* 106D70 802E54F0 34845BE0 */ ori $a0, $a0, 0x5be0 -/* 106D74 802E54F4 14400013 */ bnez $v0, .L802E5544 -/* 106D78 802E54F8 3C04001D */ lui $a0, 0x1d -/* 106D7C 802E54FC 34840001 */ ori $a0, $a0, 1 -/* 106D80 802E5500 3C05802F */ lui $a1, 0x802f -/* 106D84 802E5504 24A5B3C0 */ addiu $a1, $a1, -0x4c40 -/* 106D88 802E5508 0C049640 */ jal load_string -/* 106D8C 802E550C ACA00000 */ sw $zero, ($a1) -/* 106D90 802E5510 0C009C22 */ jal func_80027088 -/* 106D94 802E5514 24040001 */ addiu $a0, $zero, 1 -/* 106D98 802E5518 3C03800A */ lui $v1, %hi(D_8009A650) -/* 106D9C 802E551C 2463A650 */ addiu $v1, $v1, %lo(D_8009A650) -/* 106DA0 802E5520 8C620000 */ lw $v0, ($v1) -/* 106DA4 802E5524 34420040 */ ori $v0, $v0, 0x40 -/* 106DA8 802E5528 0C03805E */ jal disable_player_input -/* 106DAC 802E552C AC620000 */ sw $v0, ($v1) -/* 106DB0 802E5530 3C04F840 */ lui $a0, 0xf840 -/* 106DB4 802E5534 0C051514 */ jal set_global_flag -/* 106DB8 802E5538 34845BE0 */ ori $a0, $a0, 0x5be0 -/* 106DBC 802E553C 080B9553 */ j .L802E554C -/* 106DC0 802E5540 00000000 */ nop -.L802E5544: -/* 106DC4 802E5544 0C043F5A */ jal func_8010FD68 -/* 106DC8 802E5548 0200202D */ daddu $a0, $s0, $zero -.L802E554C: -/* 106DCC 802E554C 8FBF0014 */ lw $ra, 0x14($sp) -/* 106DD0 802E5550 8FB00010 */ lw $s0, 0x10($sp) -/* 106DD4 802E5554 03E00008 */ jr $ra -/* 106DD8 802E5558 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E555C.s b/asm/nonmatchings/code_105f90/func_802E555C.s deleted file mode 100644 index 7626583ea4..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E555C.s +++ /dev/null @@ -1,24 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E555C -/* 106DDC 802E555C 3C02802F */ lui $v0, 0x802f -/* 106DE0 802E5560 8C42B3C0 */ lw $v0, -0x4c40($v0) -/* 106DE4 802E5564 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106DE8 802E5568 1040000C */ beqz $v0, .L802E559C -/* 106DEC 802E556C AFBF0010 */ sw $ra, 0x10($sp) -/* 106DF0 802E5570 0C043F5A */ jal func_8010FD68 -/* 106DF4 802E5574 00000000 */ nop -/* 106DF8 802E5578 0C009C22 */ jal func_80027088 -/* 106DFC 802E557C 0000202D */ daddu $a0, $zero, $zero -/* 106E00 802E5580 3C02800A */ lui $v0, %hi(D_8009A650) -/* 106E04 802E5584 2442A650 */ addiu $v0, $v0, %lo(D_8009A650) -/* 106E08 802E5588 8C430000 */ lw $v1, ($v0) -/* 106E0C 802E558C 2404FFBF */ addiu $a0, $zero, -0x41 -/* 106E10 802E5590 00641824 */ and $v1, $v1, $a0 -/* 106E14 802E5594 0C038069 */ jal enable_player_input -/* 106E18 802E5598 AC430000 */ sw $v1, ($v0) -.L802E559C: -/* 106E1C 802E559C 8FBF0010 */ lw $ra, 0x10($sp) -/* 106E20 802E55A0 03E00008 */ jr $ra -/* 106E24 802E55A4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E55A8.s b/asm/nonmatchings/code_105f90/func_802E55A8.s deleted file mode 100644 index 325e1791ba..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E55A8.s +++ /dev/null @@ -1,46 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E55A8 -/* 106E28 802E55A8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 106E2C 802E55AC AFB00018 */ sw $s0, 0x18($sp) -/* 106E30 802E55B0 0080802D */ daddu $s0, $a0, $zero -/* 106E34 802E55B4 AFB1001C */ sw $s1, 0x1c($sp) -/* 106E38 802E55B8 AFB20020 */ sw $s2, 0x20($sp) -/* 106E3C 802E55BC 3C128016 */ lui $s2, 0x8016 -/* 106E40 802E55C0 8E52C7D0 */ lw $s2, -0x3830($s2) -/* 106E44 802E55C4 AFBF0024 */ sw $ra, 0x24($sp) -/* 106E48 802E55C8 0C0B8DB9 */ jal entity_init_Hammer23Block_normal -/* 106E4C 802E55CC 00A0882D */ daddu $s1, $a1, $zero -/* 106E50 802E55D0 0220202D */ daddu $a0, $s1, $zero -/* 106E54 802E55D4 C6000048 */ lwc1 $f0, 0x48($s0) -/* 106E58 802E55D8 C602004C */ lwc1 $f2, 0x4c($s0) -/* 106E5C 802E55DC C6040050 */ lwc1 $f4, 0x50($s0) -/* 106E60 802E55E0 3C028000 */ lui $v0, 0x8000 -/* 106E64 802E55E4 AFA00010 */ sw $zero, 0x10($sp) -/* 106E68 802E55E8 4600018D */ trunc.w.s $f6, $f0 -/* 106E6C 802E55EC 44053000 */ mfc1 $a1, $f6 -/* 106E70 802E55F0 4600118D */ trunc.w.s $f6, $f2 -/* 106E74 802E55F4 44063000 */ mfc1 $a2, $f6 -/* 106E78 802E55F8 4600218D */ trunc.w.s $f6, $f4 -/* 106E7C 802E55FC 44073000 */ mfc1 $a3, $f6 -/* 106E80 802E5600 0C044631 */ jal create_entity -/* 106E84 802E5604 AFA20014 */ sw $v0, 0x14($sp) -/* 106E88 802E5608 0C04417A */ jal get_entity_by_index -/* 106E8C 802E560C 0040202D */ daddu $a0, $v0, $zero -/* 106E90 802E5610 8C430040 */ lw $v1, 0x40($v0) -/* 106E94 802E5614 92020004 */ lbu $v0, 4($s0) -/* 106E98 802E5618 16400003 */ bnez $s2, .L802E5628 -/* 106E9C 802E561C A0620000 */ sb $v0, ($v1) -/* 106EA0 802E5620 080B958B */ j .L802E562C -/* 106EA4 802E5624 24020003 */ addiu $v0, $zero, 3 -.L802E5628: -/* 106EA8 802E5628 24020006 */ addiu $v0, $zero, 6 -.L802E562C: -/* 106EAC 802E562C A062000A */ sb $v0, 0xa($v1) -/* 106EB0 802E5630 8FBF0024 */ lw $ra, 0x24($sp) -/* 106EB4 802E5634 8FB20020 */ lw $s2, 0x20($sp) -/* 106EB8 802E5638 8FB1001C */ lw $s1, 0x1c($sp) -/* 106EBC 802E563C 8FB00018 */ lw $s0, 0x18($sp) -/* 106EC0 802E5640 03E00008 */ jr $ra -/* 106EC4 802E5644 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_105f90/func_802E5648.s b/asm/nonmatchings/code_105f90/func_802E5648.s deleted file mode 100644 index abcfad9def..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5648.s +++ /dev/null @@ -1,14 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5648 -/* 106EC8 802E5648 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106ECC 802E564C 3C05802F */ lui $a1, 0x802f -/* 106ED0 802E5650 24A5A7BC */ addiu $a1, $a1, -0x5844 -/* 106ED4 802E5654 AFBF0010 */ sw $ra, 0x10($sp) -/* 106ED8 802E5658 0C0B956A */ jal func_802E55A8 -/* 106EDC 802E565C 00000000 */ nop -/* 106EE0 802E5660 8FBF0010 */ lw $ra, 0x10($sp) -/* 106EE4 802E5664 03E00008 */ jr $ra -/* 106EE8 802E5668 27BD0018 */ addiu $sp, $sp, 0x18 -/* 106EEC 802E566C 00000000 */ nop diff --git a/include/common_structs.h b/include/common_structs.h index 5df4d357ec..ef9ab512f2 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -1588,7 +1588,7 @@ typedef struct { // BEGIN ENTITY-SPECIFIC STRUCTS -// from code_104940_len_dc0 +// from code_104940_len_dc0, size unknown // appears to belong to the hammer blocks(?) typedef struct struct802E3650 { /* 0x00 */ char unk_00[3]; diff --git a/include/functions.h b/include/functions.h index 460681da48..bc6fb840ef 100644 --- a/include/functions.h +++ b/include/functions.h @@ -24,7 +24,7 @@ f32 integrate_gravity(void); u32 get_entity_type(s32 arg0); Entity* get_entity_by_index(s32 index); -s32 create_entity(void*, s32, s32, s32, s32, s32); +s32 create_entity(StaticEntityData*, s32, s32, s32, s32, s32); UNK_TYPE func_80072230(s32, f32, f32, f32, f32, s32); diff --git a/include/variables.h b/include/variables.h index 29f8aa5cdc..9e879119ae 100644 --- a/include/variables.h +++ b/include/variables.h @@ -252,6 +252,8 @@ extern UNK_TYPE D_802EA63C; extern UNK_TYPE D_802EA660; extern s16 D_8015C7D2; +extern UNK_TYPE D_0A000808; + // Scripts extern Bytecode* SCRIPT_NpcDefeat; extern Bytecode* ShakeCam1; diff --git a/src/code_104940_len_dc0.c b/src/code_104940_len_dc0.c index b9f3f46a45..ac6e986370 100644 --- a/src/code_104940_len_dc0.c +++ b/src/code_104940_len_dc0.c @@ -123,7 +123,7 @@ void func_802E3898(Entity* entity) { } extern s32 D_802E9E54; -extern s32 D_802EA07C; +extern StaticEntityData D_802EA07C; void func_802E38D8(Entity* entity) { struct802E3650* temp = (struct802E3650*)entity->dataBuf; diff --git a/src/code_105f90.c b/src/code_105f90.c index c74b16e9bf..f7dd149f19 100644 --- a/src/code_105f90.c +++ b/src/code_105f90.c @@ -1,43 +1,166 @@ #include "common.h" +typedef struct struct802E4B10 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ char unk_02[7]; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A; + /* 0x0B */ char unk_0B; // padding? + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; +} struct802E4B10; + INCLUDE_ASM(s32, "code_105f90", func_802E4710); INCLUDE_ASM(s32, "code_105f90", func_802E4730); -INCLUDE_ASM(s32, "code_105f90", func_802E4AEC); +void func_802E4AEC(s32 entityIndex) { + func_802E4730(entityIndex, &D_0A000808); +} -INCLUDE_ASM(s32, "code_105f90", func_802E4B10); +void func_802E4B10(Entity* entity) { + f32 temp_f0; + Entity* entityTemp; + struct802E4B10* temp = entity->dataBuf; -INCLUDE_ASM(s32, "code_105f90", func_802E4B60); + entityTemp = get_entity_by_index(temp->unk_00); + entity->position.x = entityTemp->position.x; + entity->position.y = entityTemp->position.y + 14.0f; + entity->position.z = entityTemp->position.z; +} + +void func_802E4B60(Entity* entity) { + struct802E4B10* temp_s0; + Entity* someEntity; + + entity->unk_3C = func_802E4AEC; + entity->alpha = 0xFF; + temp_s0 = entity->dataBuf; + entity->flags |= 0x2000; + someEntity = get_entity_by_index(temp_s0->unk_00); + if (temp_s0->unk_09 == 0) { + temp_s0->unk_09 = 1; + temp_s0->unk_01 = 2; + entity->scale.x = 1.0f; + } else { + temp_s0->unk_01 = 0; + entity->scale.x = 0.0f; + } + + temp_s0->unk_0C = 0; + temp_s0->unk_10 = 0; + entity->rotation.x = 0.0f; + entity->rotation.y = 0.0f; + entity->rotation.z = 0.0f; + entity->scale.y = entity->scale.x; + entity->scale.z = entity->scale.x; + + func_802E4B10(entity); +} INCLUDE_ASM(s32, "code_105f90", func_802E4C10); -INCLUDE_ASM(s32, "code_105f90", func_802E4DE0); +void func_802E4DE0(Entity* entity) { + struct802E4B10* temp = entity->dataBuf; + + temp->unk_01 = 0; + entity->scale.x = 1.0f; + entity->scale.y = 1.0f; + entity->scale.z = 1.0f; + entity->rotation.z = 0.0f; +} INCLUDE_ASM(s32, "code_105f90", func_802E4E04); -INCLUDE_ASM(s32, "code_105f90", func_802E5308); +void func_802E5308(Entity* entity) { + func_802E3650(entity); +} + INCLUDE_ASM(s32, "code_105f90", func_802E5324); -INCLUDE_ASM(s32, "code_105f90", func_802E540C); +void func_802E540C(Entity* entity) { + func_802E4B10(entity); +} -INCLUDE_ASM(s32, "code_105f90", func_802E5428); +extern UNK_TYPE D_802EA728; -INCLUDE_ASM(s32, "code_105f90", func_802E545C); +void func_802E5428(Entity* entity) { + func_802E4B60(entity); + func_80110BCC(entity, &D_802EA728); +} -INCLUDE_ASM(s32, "code_105f90", func_802E548C); +void func_802E545C(Entity* entity) { + func_802E4C10(entity, 0); + func_802E5324(entity); +} -INCLUDE_ASM(s32, "code_105f90", func_802E54A8); +void func_802E548C(Entity* entity) { + func_802E4E04(entity, 0); +} -INCLUDE_ASM(s32, "code_105f90", func_802E54CC); +extern UNK_TYPE D_802EA760; -INCLUDE_ASM(s32, "code_105f90", func_802E555C); +void func_802E54A8(Entity* entity) { + func_80110BCC(entity, &D_802EA760); +} -INCLUDE_ASM(s32, "code_105f90", func_802E55A8); +extern UNK_TYPE D_802EB3C0; -INCLUDE_ASM(s32, "code_105f90", func_802E5648); +void func_802E54CC(Entity* entity) { + if ((gPlayerData.partners[2].enabled == 0) && (get_global_flag(0xF8405BE0) == 0)) { + UNK_TYPE* ptr = &D_802EB3C0; + *ptr = 0; + load_string(0x1D0001, ptr); + func_80027088(1); + D_8009A650[0] |= 0x40; + disable_player_input(); + set_global_flag(0xF8405BE0); + return; + } + func_8010FD68(entity); +} +void func_802E555C(Entity* entity) { + if (D_802EB3C0) { + func_8010FD68(entity); + func_80027088(0); + D_8009A650[0] &= ~0x40; + enable_player_input(); + } +} + +typedef struct struct802E55A8 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk_01[9]; + /* 0x0A */ u8 unk_0A; +} struct802E55A8; + +s8 func_802E55A8(Entity* entity, StaticEntityData* data) { + s32 temp_s2; + Entity* someEntity; + struct802E55A8* temp_v1; + s8 phi_v0; + + temp_s2 = D_8015C7D0; + entity_init_Hammer23Block_normal(entity); + someEntity = get_entity_by_index(create_entity(data, entity->position.x, entity->position.y, entity->position.z, 0.0f, 0x80000000)); + temp_v1 = someEntity->dataBuf; + temp_v1->unk_00 = entity->listIndex; + if (temp_s2 == 0) { + temp_v1->unk_0A = 3; + } else { + temp_v1->unk_0A = 6; + } +} + +StaticEntityData D_802EA7BC; +void func_802E5648(Entity* entity) { + func_802E55A8(entity, &D_802EA7BC); +} + +// FILE SPLIT INCLUDE_ASM(s32, "code_105f90", func_802E5670); INCLUDE_ASM(s32, "code_105f90", func_802E5690); diff --git a/src/code_a5dd0_len_114e0.c b/src/code_a5dd0_len_114e0.c index 74d662af2f..bb69a5f261 100644 --- a/src/code_a5dd0_len_114e0.c +++ b/src/code_a5dd0_len_114e0.c @@ -100,7 +100,7 @@ INCLUDE_ASM(s32, "code_a5dd0_len_114e0", func_80111790); INCLUDE_ASM(s32, "code_a5dd0_len_114e0", func_801117DC); -INCLUDE_ASM(s32, "code_a5dd0_len_114e0", create_entity, void* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5); +INCLUDE_ASM(s32, "code_a5dd0_len_114e0", create_entity, StaticEntityData* data, s32 x, s32 y, s32 z, s32 arg4, s32 flags); INCLUDE_ASM(s32, "code_a5dd0_len_114e0", create_shadow_from_data); diff --git a/undefined_syms.txt b/undefined_syms.txt index 88747f4abf..fa599f64b7 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -366,6 +366,7 @@ D_802EA63C = 0x802EA63C; D_802EA660 = 0x802EA660; D_8015C7D2 = 0x8015C7D2; +D_0A000808 = 0x0A000808; D_0A0031E0 = 0x0A0031E0; D_0A001508 = 0x0A001508; D_0A0031B0 = 0x0A0031B0;