split code_106ef0 and match most funcs

This commit is contained in:
dark-samus 2020-11-21 04:28:02 -05:00
parent 48487dbab0
commit 63429d6ad2
18 changed files with 143 additions and 239 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -1597,20 +1597,36 @@ typedef struct {
// from code_104940_len_dc0, size unknown // from code_104940_len_dc0, size unknown
// appears to belong to the hammer blocks(?) // appears to belong to the hammer blocks(?)
typedef struct struct802E3650 { typedef struct struct802E3650 {
/* 0x00 */ char unk_00[3]; /* 0x000 */ u8 unk_00;
/* 0x03 */ s8 unk_03; /* 0x001 */ char unk_01[2];
/* 0x04 */ s16 unk_04; /* 0x003 */ s8 unk_03;
/* 0x06 */ s16 unk_06; /* 0x004 */ s16 unk_04;
/* 0x08 */ char unk_08[2]; /* 0x006 */ s16 unk_06;
/* 0x0A */ u16 unk_0A; /* 0x008 */ char unk_08[2];
/* 0x0C */ char unk_0C[2]; /* 0x00A */ u16 unk_0A;
/* 0x0E */ s16 unk_0E; /* 0x00C */ char unk_0C[2];
/* 0x10 */ s16 unk_10; /* 0x00E */ s16 unk_0E;
/* 0x12 */ char unk_12[2]; /* 0x010 */ s16 unk_10;
/* 0x14 */ f32 unk_14; /* 0x012 */ s16 unk_12;
/* 0x18 */ f32 unk_18; /* 0x014 */ f32 unk_14;
/* 0x018 */ f32 unk_18;
/* 0x01C */ char unk_1C[0x10C];
/* 0x128 */ UNK_PTR unk_128;
/* 0x12C */ UNK_PTR unk_12C;
} struct802E3650; } 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 // END ENTITY-SPECIFIC STRUCTS
#endif #endif

View File

@ -245,13 +245,17 @@ extern UNK_TYPE D_802EB3B0;
extern UNK_TYPE D_00000094; 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_00000094_2; // two symbols resolve to the same addr. Required for matching
extern UNK_TYPE D_802EA0A0; extern UNK_TYPE D_802EA0A0;
extern UNK_TYPE D_802EA07C; extern StaticEntityData D_802EA07C;
extern UNK_TYPE D_802EA310; extern UNK_TYPE D_802EA310;
extern UNK_TYPE D_802EA618; extern UNK_TYPE D_802EA618;
extern UNK_TYPE D_802EA63C; extern UNK_TYPE D_802EA63C;
extern UNK_TYPE D_802EA660; extern UNK_TYPE D_802EA660;
extern s16 D_8015C7D2; 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; extern UNK_TYPE D_0A000808;
// Scripts // Scripts

View File

@ -1,16 +1,5 @@
#include "common.h" #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_802E4710);
INCLUDE_ASM(s32, "code_105f90", func_802E4730); INCLUDE_ASM(s32, "code_105f90", func_802E4730);
@ -109,7 +98,7 @@ void func_802E54A8(Entity* entity) {
extern UNK_TYPE D_802EB3C0; extern UNK_TYPE D_802EB3C0;
void func_802E54CC(Entity* entity) { 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; UNK_TYPE* ptr = &D_802EB3C0;
*ptr = 0; *ptr = 0;
load_string(0x1D0001, ptr); 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) { s8 func_802E55A8(Entity* entity, StaticEntityData* data) {
s32 temp_s2; s32 temp_s2;
Entity* someEntity; Entity* someEntity;
struct802E55A8* temp_v1; struct802E4B10* temp_v1;
s8 phi_v0; s8 phi_v0;
temp_s2 = D_8015C7D0; 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) { void func_802E5648(Entity* entity) {
func_802E55A8(entity, &D_802EA7BC); 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);

94
src/code_106ef0.c Normal file
View File

@ -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;
}

View File

@ -285,6 +285,7 @@ segments:
- [0x104940, c, code_104940_len_dc0] - [0x104940, c, code_104940_len_dc0]
- [0x105700, c, code_105700_len_2130] - [0x105700, c, code_105700_len_2130]
- [0x105F90, c, code_105f90] - [0x105F90, c, code_105f90]
- [0x106EF0, c, code_106ef0]
- [0x107830, c, code_107830_len_e70] - [0x107830, c, code_107830_len_e70]
- [0x1086a0, c, code_1086a0_len_fc0] - [0x1086a0, c, code_1086a0_len_fc0]
- [0x109660, c, code_109660_len_1270] - [0x109660, c, code_109660_len_1270]

View File

@ -366,6 +366,17 @@ D_802EA63C = 0x802EA63C;
D_802EA660 = 0x802EA660; D_802EA660 = 0x802EA660;
D_8015C7D2 = 0x8015C7D2; 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_0A000808 = 0x0A000808;
D_0A0031E0 = 0x0A0031E0; D_0A0031E0 = 0x0A0031E0;
D_0A001508 = 0x0A001508; D_0A001508 = 0x0A001508;