From 63429d6ad21888eff3acf7352182bf55f7c9a3dd Mon Sep 17 00:00:00 2001 From: dark-samus Date: Sat, 21 Nov 2020 04:28:02 -0500 Subject: [PATCH] split code_106ef0 and match most funcs --- asm/nonmatchings/code_105f90/func_802E5690.s | 21 ----- asm/nonmatchings/code_105f90/func_802E56D0.s | 11 --- asm/nonmatchings/code_105f90/func_802E56EC.s | 45 --------- asm/nonmatchings/code_105f90/func_802E578C.s | 26 ----- asm/nonmatchings/code_105f90/func_802E57E4.s | 11 --- asm/nonmatchings/code_105f90/func_802E5800.s | 11 --- asm/nonmatchings/code_105f90/func_802E581C.s | 24 ----- asm/nonmatchings/code_105f90/func_802E5F50.s | 15 --- asm/nonmatchings/code_105f90/func_802E5F7C.s | 17 ---- .../func_802E5670.s | 0 .../func_802E586C.s | 0 .../func_802E5E50.s | 0 include/common_structs.h | 40 +++++--- include/variables.h | 6 +- src/code_105f90.c | 49 +--------- src/code_106ef0.c | 94 +++++++++++++++++++ tools/splat.yaml | 1 + undefined_syms.txt | 11 +++ 18 files changed, 143 insertions(+), 239 deletions(-) delete mode 100644 asm/nonmatchings/code_105f90/func_802E5690.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E56D0.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E56EC.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E578C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E57E4.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5800.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E581C.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5F50.s delete mode 100644 asm/nonmatchings/code_105f90/func_802E5F7C.s rename asm/nonmatchings/{code_105f90 => code_106ef0}/func_802E5670.s (100%) rename asm/nonmatchings/{code_105f90 => code_106ef0}/func_802E586C.s (100%) rename asm/nonmatchings/{code_105f90 => code_106ef0}/func_802E5E50.s (100%) create mode 100644 src/code_106ef0.c diff --git a/asm/nonmatchings/code_105f90/func_802E5690.s b/asm/nonmatchings/code_105f90/func_802E5690.s deleted file mode 100644 index a48eb50f5b..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5690.s +++ /dev/null @@ -1,21 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5690 -/* 106F10 802E5690 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106F14 802E5694 AFBF0010 */ sw $ra, 0x10($sp) -/* 106F18 802E5698 0C04417A */ jal get_entity_by_index -/* 106F1C 802E569C 00000000 */ nop -/* 106F20 802E56A0 8C420040 */ lw $v0, 0x40($v0) -/* 106F24 802E56A4 84440012 */ lh $a0, 0x12($v0) -/* 106F28 802E56A8 04800006 */ bltz $a0, .L802E56C4 -/* 106F2C 802E56AC 00000000 */ nop -/* 106F30 802E56B0 0C04417A */ jal get_entity_by_index -/* 106F34 802E56B4 00000000 */ nop -/* 106F38 802E56B8 8C430040 */ lw $v1, 0x40($v0) -/* 106F3C 802E56BC 24020001 */ addiu $v0, $zero, 1 -/* 106F40 802E56C0 A062000A */ sb $v0, 0xa($v1) -.L802E56C4: -/* 106F44 802E56C4 8FBF0010 */ lw $ra, 0x10($sp) -/* 106F48 802E56C8 03E00008 */ jr $ra -/* 106F4C 802E56CC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E56D0.s b/asm/nonmatchings/code_105f90/func_802E56D0.s deleted file mode 100644 index 26511385c1..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E56D0.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E56D0 -/* 106F50 802E56D0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 106F54 802E56D4 AFBF0010 */ sw $ra, 0x10($sp) -/* 106F58 802E56D8 0C0B8D94 */ jal func_802E3650 -/* 106F5C 802E56DC 00000000 */ nop -/* 106F60 802E56E0 8FBF0010 */ lw $ra, 0x10($sp) -/* 106F64 802E56E4 03E00008 */ jr $ra -/* 106F68 802E56E8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E56EC.s b/asm/nonmatchings/code_105f90/func_802E56EC.s deleted file mode 100644 index 83046692b6..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E56EC.s +++ /dev/null @@ -1,45 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E56EC -/* 106F6C 802E56EC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 106F70 802E56F0 AFB1001C */ sw $s1, 0x1c($sp) -/* 106F74 802E56F4 0080882D */ daddu $s1, $a0, $zero -/* 106F78 802E56F8 AFBF0020 */ sw $ra, 0x20($sp) -/* 106F7C 802E56FC AFB00018 */ sw $s0, 0x18($sp) -/* 106F80 802E5700 8E300040 */ lw $s0, 0x40($s1) -/* 106F84 802E5704 9603000A */ lhu $v1, 0xa($s0) -/* 106F88 802E5708 3402FFFF */ ori $v0, $zero, 0xffff -/* 106F8C 802E570C 1062001A */ beq $v1, $v0, .L802E5778 -/* 106F90 802E5710 00000000 */ nop -/* 106F94 802E5714 0C05152F */ jal get_global_flag -/* 106F98 802E5718 0060202D */ daddu $a0, $v1, $zero -/* 106F9C 802E571C 14400016 */ bnez $v0, .L802E5778 -/* 106FA0 802E5720 3C028000 */ lui $v0, 0x8000 -/* 106FA4 802E5724 3C04802F */ lui $a0, 0x802f -/* 106FA8 802E5728 2484A934 */ addiu $a0, $a0, -0x56cc -/* 106FAC 802E572C C6200048 */ lwc1 $f0, 0x48($s1) -/* 106FB0 802E5730 C622004C */ lwc1 $f2, 0x4c($s1) -/* 106FB4 802E5734 C6240050 */ lwc1 $f4, 0x50($s1) -/* 106FB8 802E5738 AFA00010 */ sw $zero, 0x10($sp) -/* 106FBC 802E573C 4600018D */ trunc.w.s $f6, $f0 -/* 106FC0 802E5740 44053000 */ mfc1 $a1, $f6 -/* 106FC4 802E5744 4600118D */ trunc.w.s $f6, $f2 -/* 106FC8 802E5748 44063000 */ mfc1 $a2, $f6 -/* 106FCC 802E574C 4600218D */ trunc.w.s $f6, $f4 -/* 106FD0 802E5750 44073000 */ mfc1 $a3, $f6 -/* 106FD4 802E5754 0C044631 */ jal create_entity -/* 106FD8 802E5758 AFA20014 */ sw $v0, 0x14($sp) -/* 106FDC 802E575C 00022400 */ sll $a0, $v0, 0x10 -/* 106FE0 802E5760 00042403 */ sra $a0, $a0, 0x10 -/* 106FE4 802E5764 0C04417A */ jal get_entity_by_index -/* 106FE8 802E5768 A6020012 */ sh $v0, 0x12($s0) -/* 106FEC 802E576C 8C430040 */ lw $v1, 0x40($v0) -/* 106FF0 802E5770 92220004 */ lbu $v0, 4($s1) -/* 106FF4 802E5774 A0620000 */ sb $v0, ($v1) -.L802E5778: -/* 106FF8 802E5778 8FBF0020 */ lw $ra, 0x20($sp) -/* 106FFC 802E577C 8FB1001C */ lw $s1, 0x1c($sp) -/* 107000 802E5780 8FB00018 */ lw $s0, 0x18($sp) -/* 107004 802E5784 03E00008 */ jr $ra -/* 107008 802E5788 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_105f90/func_802E578C.s b/asm/nonmatchings/code_105f90/func_802E578C.s deleted file mode 100644 index 149e4490ae..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E578C.s +++ /dev/null @@ -1,26 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E578C -/* 10700C 802E578C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 107010 802E5790 AFB00010 */ sw $s0, 0x10($sp) -/* 107014 802E5794 0080802D */ daddu $s0, $a0, $zero -/* 107018 802E5798 AFBF0018 */ sw $ra, 0x18($sp) -/* 10701C 802E579C AFB10014 */ sw $s1, 0x14($sp) -/* 107020 802E57A0 0C0B8DB9 */ jal entity_init_Hammer23Block_normal -/* 107024 802E57A4 8E110040 */ lw $s1, 0x40($s0) -/* 107028 802E57A8 C6000064 */ lwc1 $f0, 0x64($s0) -/* 10702C 802E57AC 3C014334 */ lui $at, 0x4334 -/* 107030 802E57B0 44811000 */ mtc1 $at, $f2 -/* 107034 802E57B4 00000000 */ nop -/* 107038 802E57B8 46020000 */ add.s $f0, $f0, $f2 -/* 10703C 802E57BC 3402FFFF */ ori $v0, $zero, 0xffff -/* 107040 802E57C0 E6000064 */ swc1 $f0, 0x64($s0) -/* 107044 802E57C4 A622000A */ sh $v0, 0xa($s1) -/* 107048 802E57C8 2402FFFF */ addiu $v0, $zero, -1 -/* 10704C 802E57CC A6220012 */ sh $v0, 0x12($s1) -/* 107050 802E57D0 8FBF0018 */ lw $ra, 0x18($sp) -/* 107054 802E57D4 8FB10014 */ lw $s1, 0x14($sp) -/* 107058 802E57D8 8FB00010 */ lw $s0, 0x10($sp) -/* 10705C 802E57DC 03E00008 */ jr $ra -/* 107060 802E57E0 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_105f90/func_802E57E4.s b/asm/nonmatchings/code_105f90/func_802E57E4.s deleted file mode 100644 index 48dd2d7b38..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E57E4.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E57E4 -/* 107064 802E57E4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 107068 802E57E8 AFBF0010 */ sw $ra, 0x10($sp) -/* 10706C 802E57EC 0C0B95E3 */ jal func_802E578C -/* 107070 802E57F0 00000000 */ nop -/* 107074 802E57F4 8FBF0010 */ lw $ra, 0x10($sp) -/* 107078 802E57F8 03E00008 */ jr $ra -/* 10707C 802E57FC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E5800.s b/asm/nonmatchings/code_105f90/func_802E5800.s deleted file mode 100644 index 74372bd9b6..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5800.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5800 -/* 107080 802E5800 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 107084 802E5804 AFBF0010 */ sw $ra, 0x10($sp) -/* 107088 802E5808 0C0B95E3 */ jal func_802E578C -/* 10708C 802E580C 00000000 */ nop -/* 107090 802E5810 8FBF0010 */ lw $ra, 0x10($sp) -/* 107094 802E5814 03E00008 */ jr $ra -/* 107098 802E5818 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E581C.s b/asm/nonmatchings/code_105f90/func_802E581C.s deleted file mode 100644 index 739c0c178a..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E581C.s +++ /dev/null @@ -1,24 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E581C -/* 10709C 802E581C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1070A0 802E5820 AFB00010 */ sw $s0, 0x10($sp) -/* 1070A4 802E5824 0080802D */ daddu $s0, $a0, $zero -/* 1070A8 802E5828 AFBF0014 */ sw $ra, 0x14($sp) -/* 1070AC 802E582C 8E020040 */ lw $v0, 0x40($s0) -/* 1070B0 802E5830 0C04417A */ jal get_entity_by_index -/* 1070B4 802E5834 90440000 */ lbu $a0, ($v0) -/* 1070B8 802E5838 C4400048 */ lwc1 $f0, 0x48($v0) -/* 1070BC 802E583C 3C014160 */ lui $at, 0x4160 -/* 1070C0 802E5840 44811000 */ mtc1 $at, $f2 -/* 1070C4 802E5844 E6000048 */ swc1 $f0, 0x48($s0) -/* 1070C8 802E5848 C440004C */ lwc1 $f0, 0x4c($v0) -/* 1070CC 802E584C 46020000 */ add.s $f0, $f0, $f2 -/* 1070D0 802E5850 E600004C */ swc1 $f0, 0x4c($s0) -/* 1070D4 802E5854 C4400050 */ lwc1 $f0, 0x50($v0) -/* 1070D8 802E5858 E6000050 */ swc1 $f0, 0x50($s0) -/* 1070DC 802E585C 8FBF0014 */ lw $ra, 0x14($sp) -/* 1070E0 802E5860 8FB00010 */ lw $s0, 0x10($sp) -/* 1070E4 802E5864 03E00008 */ jr $ra -/* 1070E8 802E5868 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_105f90/func_802E5F50.s b/asm/nonmatchings/code_105f90/func_802E5F50.s deleted file mode 100644 index f9b9285b46..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5F50.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5F50 -/* 1077D0 802E5F50 8C830040 */ lw $v1, 0x40($a0) -/* 1077D4 802E5F54 3C020A00 */ lui $v0, 0xa00 -/* 1077D8 802E5F58 24420328 */ addiu $v0, $v0, 0x328 -/* 1077DC 802E5F5C AC620128 */ sw $v0, 0x128($v1) -/* 1077E0 802E5F60 3C020A00 */ lui $v0, 0xa00 -/* 1077E4 802E5F64 24420380 */ addiu $v0, $v0, 0x380 -/* 1077E8 802E5F68 AC62012C */ sw $v0, 0x12c($v1) -/* 1077EC 802E5F6C 3C02802E */ lui $v0, 0x802e -/* 1077F0 802E5F70 2442586C */ addiu $v0, $v0, 0x586c -/* 1077F4 802E5F74 03E00008 */ jr $ra -/* 1077F8 802E5F78 AC82003C */ sw $v0, 0x3c($a0) diff --git a/asm/nonmatchings/code_105f90/func_802E5F7C.s b/asm/nonmatchings/code_105f90/func_802E5F7C.s deleted file mode 100644 index 5b8e44affe..0000000000 --- a/asm/nonmatchings/code_105f90/func_802E5F7C.s +++ /dev/null @@ -1,17 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802E5F7C -/* 1077FC 802E5F7C 8C830040 */ lw $v1, 0x40($a0) -/* 107800 802E5F80 3C020A00 */ lui $v0, 0xa00 -/* 107804 802E5F84 24420800 */ addiu $v0, $v0, 0x800 -/* 107808 802E5F88 AC620128 */ sw $v0, 0x128($v1) -/* 10780C 802E5F8C 3C020A00 */ lui $v0, 0xa00 -/* 107810 802E5F90 24420750 */ addiu $v0, $v0, 0x750 -/* 107814 802E5F94 AC62012C */ sw $v0, 0x12c($v1) -/* 107818 802E5F98 3C02802E */ lui $v0, 0x802e -/* 10781C 802E5F9C 2442586C */ addiu $v0, $v0, 0x586c -/* 107820 802E5FA0 03E00008 */ jr $ra -/* 107824 802E5FA4 AC82003C */ sw $v0, 0x3c($a0) -/* 107828 802E5FA8 00000000 */ nop -/* 10782C 802E5FAC 00000000 */ nop diff --git a/asm/nonmatchings/code_105f90/func_802E5670.s b/asm/nonmatchings/code_106ef0/func_802E5670.s similarity index 100% rename from asm/nonmatchings/code_105f90/func_802E5670.s rename to asm/nonmatchings/code_106ef0/func_802E5670.s diff --git a/asm/nonmatchings/code_105f90/func_802E586C.s b/asm/nonmatchings/code_106ef0/func_802E586C.s similarity index 100% rename from asm/nonmatchings/code_105f90/func_802E586C.s rename to asm/nonmatchings/code_106ef0/func_802E586C.s diff --git a/asm/nonmatchings/code_105f90/func_802E5E50.s b/asm/nonmatchings/code_106ef0/func_802E5E50.s similarity index 100% rename from asm/nonmatchings/code_105f90/func_802E5E50.s rename to asm/nonmatchings/code_106ef0/func_802E5E50.s diff --git a/include/common_structs.h b/include/common_structs.h index ff150a0a31..8c98d730bb 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -1597,20 +1597,36 @@ typedef struct { // from code_104940_len_dc0, size unknown // appears to belong to the hammer blocks(?) typedef struct struct802E3650 { - /* 0x00 */ char unk_00[3]; - /* 0x03 */ s8 unk_03; - /* 0x04 */ s16 unk_04; - /* 0x06 */ s16 unk_06; - /* 0x08 */ char unk_08[2]; - /* 0x0A */ u16 unk_0A; - /* 0x0C */ char unk_0C[2]; - /* 0x0E */ s16 unk_0E; - /* 0x10 */ s16 unk_10; - /* 0x12 */ char unk_12[2]; - /* 0x14 */ f32 unk_14; - /* 0x18 */ f32 unk_18; + /* 0x000 */ u8 unk_00; + /* 0x001 */ char unk_01[2]; + /* 0x003 */ s8 unk_03; + /* 0x004 */ s16 unk_04; + /* 0x006 */ s16 unk_06; + /* 0x008 */ char unk_08[2]; + /* 0x00A */ u16 unk_0A; + /* 0x00C */ char unk_0C[2]; + /* 0x00E */ s16 unk_0E; + /* 0x010 */ s16 unk_10; + /* 0x012 */ s16 unk_12; + /* 0x014 */ f32 unk_14; + /* 0x018 */ f32 unk_18; + /* 0x01C */ char unk_1C[0x10C]; + /* 0x128 */ UNK_PTR unk_128; + /* 0x12C */ UNK_PTR unk_12C; } struct802E3650; +// size unknown +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; + // END ENTITY-SPECIFIC STRUCTS #endif diff --git a/include/variables.h b/include/variables.h index 9e879119ae..371c4c0aba 100644 --- a/include/variables.h +++ b/include/variables.h @@ -245,13 +245,17 @@ extern UNK_TYPE D_802EB3B0; extern UNK_TYPE D_00000094; extern UNK_TYPE D_00000094_2; // two symbols resolve to the same addr. Required for matching extern UNK_TYPE D_802EA0A0; -extern UNK_TYPE D_802EA07C; +extern StaticEntityData D_802EA07C; extern UNK_TYPE D_802EA310; extern UNK_TYPE D_802EA618; extern UNK_TYPE D_802EA63C; extern UNK_TYPE D_802EA660; extern s16 D_8015C7D2; +extern UNK_TYPE D_0A000328; +extern UNK_TYPE D_0A000380; +extern UNK_TYPE D_0A000750; +extern UNK_TYPE D_0A000800; extern UNK_TYPE D_0A000808; // Scripts diff --git a/src/code_105f90.c b/src/code_105f90.c index f7dd149f19..bb8d271130 100644 --- a/src/code_105f90.c +++ b/src/code_105f90.c @@ -1,16 +1,5 @@ #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); @@ -109,7 +98,7 @@ void func_802E54A8(Entity* entity) { extern UNK_TYPE D_802EB3C0; void func_802E54CC(Entity* entity) { - if ((gPlayerData.partners[2].enabled == 0) && (get_global_flag(0xF8405BE0) == 0)) { + if ((gPlayerData.partners[1].enabled == 0) && (get_global_flag(0xF8405BE0) == 0)) { UNK_TYPE* ptr = &D_802EB3C0; *ptr = 0; load_string(0x1D0001, ptr); @@ -131,16 +120,10 @@ void func_802E555C(Entity* entity) { } } -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; + struct802E4B10* temp_v1; s8 phi_v0; temp_s2 = D_8015C7D0; @@ -155,32 +138,8 @@ s8 func_802E55A8(Entity* entity, StaticEntityData* data) { } } -StaticEntityData D_802EA7BC; +extern 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); - -INCLUDE_ASM(s32, "code_105f90", func_802E56D0); - -INCLUDE_ASM(s32, "code_105f90", func_802E56EC); - -INCLUDE_ASM(s32, "code_105f90", func_802E578C); - -INCLUDE_ASM(s32, "code_105f90", func_802E57E4); - -INCLUDE_ASM(s32, "code_105f90", func_802E5800); - -INCLUDE_ASM(s32, "code_105f90", func_802E581C); - -INCLUDE_ASM(s32, "code_105f90", func_802E586C); - -INCLUDE_ASM(s32, "code_105f90", func_802E5E50); - -INCLUDE_ASM(s32, "code_105f90", func_802E5F50); - -INCLUDE_ASM(s32, "code_105f90", func_802E5F7C); diff --git a/src/code_106ef0.c b/src/code_106ef0.c new file mode 100644 index 0000000000..dbdf1fd9b0 --- /dev/null +++ b/src/code_106ef0.c @@ -0,0 +1,94 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_106ef0", func_802E5670); + +void func_802E5690(s32 entityIndex) { + s16 temp_a0; + Entity* someEntity; + Entity* someOtherEntity; + struct802E3650* temp; + + someEntity = get_entity_by_index(entityIndex); + temp = someEntity->dataBuf; + if (temp->unk_12 >= 0) { + Entity* someOtherEntity = get_entity_by_index(temp->unk_12); + struct802E4B10* temp2 = someOtherEntity->dataBuf; + temp2->unk_0A = 1; + } +} + +s32 func_802E56D0(Entity* entity) { + return func_802E3650(entity); +} + +extern StaticEntityData D_802EA934; + +void func_802E56EC(Entity* entity) { + s16 entityIndex; + u8 temp_v0_2; + struct802E3650* temp_s0; + + temp_s0 = entity->dataBuf; + if (temp_s0->unk_0A != 0xFFFF) { + if (get_global_flag(temp_s0->unk_0A) == 0) { + Entity* someEntity; + struct802E3650* temp2; + + entityIndex = create_entity(&D_802EA934, entity->position.x, entity->position.y, entity->position.z, 0.0f, 0x80000000); + temp_s0->unk_12 = entityIndex; + someEntity = get_entity_by_index(entityIndex); + temp2 = someEntity->dataBuf; + temp2->unk_00 = entity->listIndex; + } + } +} + +void func_802E578C(Entity* entity) { + struct802E3650* temp_s1; + + temp_s1 = entity->dataBuf; + entity_init_Hammer23Block_normal(entity); + entity->rotation.y += 180.0f; + temp_s1->unk_0A = 0xFFFF; + temp_s1->unk_12 = -1; +} + +void func_802E57E4(Entity* entity) { + func_802E578C(entity); +} + +void func_802E5800(Entity* entity) { + func_802E578C(entity); +} + +void func_802E581C(Entity* entity) { + struct802E3650* temp = entity->dataBuf; + Entity* temp_v0 = get_entity_by_index(temp->unk_00); + + entity->position.x = temp_v0->position.x; + entity->position.y = temp_v0->position.y + 14.0f; + entity->position.z = temp_v0->position.z; +} + +// display list func +INCLUDE_ASM(s32, "code_106ef0", func_802E586C); + +INCLUDE_ASM(s32, "code_106ef0", func_802E5E50); + +void func_802E5F50(Entity* entity) { + struct802E3650* temp; + + temp = entity->dataBuf; + temp->unk_128 = &D_0A000328; + temp->unk_12C = &D_0A000380; + entity->unk_3C = func_802E586C; +} + +void func_802E5F7C(Entity* entity) { + struct802E3650* temp; + + temp = entity->dataBuf; + temp->unk_128 = &D_0A000800; + temp->unk_12C = &D_0A000750; + entity->unk_3C = func_802E586C; +} \ No newline at end of file diff --git a/tools/splat.yaml b/tools/splat.yaml index 3438f8d467..6a53097fef 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -285,6 +285,7 @@ segments: - [0x104940, c, code_104940_len_dc0] - [0x105700, c, code_105700_len_2130] - [0x105F90, c, code_105f90] + - [0x106EF0, c, code_106ef0] - [0x107830, c, code_107830_len_e70] - [0x1086a0, c, code_1086a0_len_fc0] - [0x109660, c, code_109660_len_1270] diff --git a/undefined_syms.txt b/undefined_syms.txt index fa599f64b7..ef52170d6e 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -366,6 +366,17 @@ D_802EA63C = 0x802EA63C; D_802EA660 = 0x802EA660; D_8015C7D2 = 0x8015C7D2; +D_802EA728 = 0x802EA728; +D_802EA760 = 0x802EA760; +D_802EB3C0 = 0x802EB3C0; +D_802EA7BC = 0x802EA7BC; + +D_802EA934 = 0x802EA934; + +D_0A000328 = 0x0A000328; +D_0A000380 = 0x0A000380; +D_0A000750 = 0x0A000750; +D_0A000800 = 0x0A000800; D_0A000808 = 0x0A000808; D_0A0031E0 = 0x0A0031E0; D_0A001508 = 0x0A001508;