c: func_8002A05C

This commit is contained in:
Mittenz
2020-08-23 02:21:57 -05:00
parent b12a36b074
commit 52c9dd5630
4 changed files with 152 additions and 115 deletions
@@ -1,59 +0,0 @@
glabel func_8002A05C
/* 02AC5C 8002A05C 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 02AC60 8002A060 3C07800E */ lui $a3, %hi(D_800DC918) # $a3, 0x800e
/* 02AC64 8002A064 8CE7C918 */ lw $a3, %lo(D_800DC918)($a3)
/* 02AC68 8002A068 AFB1000C */ sw $s1, 0xc($sp)
/* 02AC6C 8002A06C AFB00008 */ sw $s0, 8($sp)
/* 02AC70 8002A070 84E8001A */ lh $t0, 0x1a($a3)
/* 02AC74 8002A074 00808025 */ move $s0, $a0
/* 02AC78 8002A078 00A08825 */ move $s1, $a1
/* 02AC7C 8002A07C 00001825 */ move $v1, $zero
/* 02AC80 8002A080 19000027 */ blez $t0, .L8002A120
/* 02AC84 8002A084 00001025 */ move $v0, $zero
/* 02AC88 8002A088 00002825 */ move $a1, $zero
.L8002A08C:
/* 02AC8C 8002A08C 8CEE0008 */ lw $t6, 8($a3)
/* 02AC90 8002A090 00000000 */ nop
/* 02AC94 8002A094 01C52021 */ addu $a0, $t6, $a1
/* 02AC98 8002A098 848F0006 */ lh $t7, 6($a0)
/* 02AC9C 8002A09C 00000000 */ nop
/* 02ACA0 8002A0A0 25F80004 */ addiu $t8, $t7, 4
/* 02ACA4 8002A0A4 0218082A */ slt $at, $s0, $t8
/* 02ACA8 8002A0A8 10200019 */ beqz $at, .L8002A110
/* 02ACAC 8002A0AC 00000000 */ nop
/* 02ACB0 8002A0B0 84990000 */ lh $t9, ($a0)
/* 02ACB4 8002A0B4 00000000 */ nop
/* 02ACB8 8002A0B8 2729FFFC */ addiu $t1, $t9, -4
/* 02ACBC 8002A0BC 0130082A */ slt $at, $t1, $s0
/* 02ACC0 8002A0C0 10200013 */ beqz $at, .L8002A110
/* 02ACC4 8002A0C4 00000000 */ nop
/* 02ACC8 8002A0C8 848A000A */ lh $t2, 0xa($a0)
/* 02ACCC 8002A0CC 00000000 */ nop
/* 02ACD0 8002A0D0 254B0004 */ addiu $t3, $t2, 4
/* 02ACD4 8002A0D4 022B082A */ slt $at, $s1, $t3
/* 02ACD8 8002A0D8 1020000D */ beqz $at, .L8002A110
/* 02ACDC 8002A0DC 00000000 */ nop
/* 02ACE0 8002A0E0 848C0004 */ lh $t4, 4($a0)
/* 02ACE4 8002A0E4 00000000 */ nop
/* 02ACE8 8002A0E8 258DFFFC */ addiu $t5, $t4, -4
/* 02ACEC 8002A0EC 01B1082A */ slt $at, $t5, $s1
/* 02ACF0 8002A0F0 10200007 */ beqz $at, .L8002A110
/* 02ACF4 8002A0F4 00000000 */ nop
/* 02ACF8 8002A0F8 ACC20000 */ sw $v0, ($a2)
/* 02ACFC 8002A0FC 3C07800E */ lui $a3, %hi(D_800DC918) # $a3, 0x800e
/* 02AD00 8002A100 8CE7C918 */ lw $a3, %lo(D_800DC918)($a3)
/* 02AD04 8002A104 24630001 */ addiu $v1, $v1, 1
/* 02AD08 8002A108 84E8001A */ lh $t0, 0x1a($a3)
/* 02AD0C 8002A10C 24C60004 */ addiu $a2, $a2, 4
.L8002A110:
/* 02AD10 8002A110 24420001 */ addiu $v0, $v0, 1
/* 02AD14 8002A114 0048082A */ slt $at, $v0, $t0
/* 02AD18 8002A118 1420FFDC */ bnez $at, .L8002A08C
/* 02AD1C 8002A11C 24A5000C */ addiu $a1, $a1, 0xc
.L8002A120:
/* 02AD20 8002A120 8FB00008 */ lw $s0, 8($sp)
/* 02AD24 8002A124 8FB1000C */ lw $s1, 0xc($sp)
/* 02AD28 8002A128 27BD0010 */ addiu $sp, $sp, 0x10
/* 02AD2C 8002A12C 03E00008 */ jr $ra
/* 02AD30 8002A130 00601025 */ move $v0, $v1
@@ -1,21 +0,0 @@
glabel func_8002A2DC
/* 02AEDC 8002A2DC 04800008 */ bltz $a0, .L8002A300
/* 02AEE0 8002A2E0 3C03800E */ lui $v1, %hi(D_800DC918) # $v1, 0x800e
/* 02AEE4 8002A2E4 8C63C918 */ lw $v1, %lo(D_800DC918)($v1)
/* 02AEE8 8002A2E8 0004C080 */ sll $t8, $a0, 2
/* 02AEEC 8002A2EC 846E001A */ lh $t6, 0x1a($v1)
/* 02AEF0 8002A2F0 0304C023 */ subu $t8, $t8, $a0
/* 02AEF4 8002A2F4 01C4082A */ slt $at, $t6, $a0
/* 02AEF8 8002A2F8 10200003 */ beqz $at, .L8002A308
/* 02AEFC 8002A2FC 00000000 */ nop
.L8002A300:
/* 02AF00 8002A300 03E00008 */ jr $ra
/* 02AF04 8002A304 00001025 */ move $v0, $zero
.L8002A308:
/* 02AF08 8002A308 8C6F0008 */ lw $t7, 8($v1)
/* 02AF0C 8002A30C 0018C080 */ sll $t8, $t8, 2
/* 02AF10 8002A310 01F81021 */ addu $v0, $t7, $t8
/* 02AF14 8002A314 03E00008 */ jr $ra
/* 02AF18 8002A318 00000000 */ nop
+127 -10
View File
@@ -10,6 +10,30 @@ u8 pad00[0x49];
s8 unk49;
} unk800DC91C;
/* Size: 0x44 bytes */
typedef struct unk80120AC0 {
s16 unk0;
s16 unk2;
s16 unk4;
u8 pad6[6];
f32 x_position;
f32 y_position;
f32 z_position;
f32 pad18;
f32 unk1C;
f32 pad20;
f32 unk24;
f32 unk28;
f32 unk2C;
f32 unk30;
s16 unk34;
s16 pad36;
s16 unk38;
s8 pad3A;
s8 unk3B;
u8 pad3C[8];
} unk80120AC0;
extern unk800DC91C* D_800DC91C;
extern s32 D_800DC924;
extern s32 D_8011D37C;
@@ -34,7 +58,51 @@ extern f32 D_8011B0E4;
extern f32 D_8011B0E8;
extern f32 D_8011B0EC;
extern s32* D_800DC918;
typedef struct{
u8 pad00[0x12];
u16 unk12;
u16 unk14;
} unk800DC918_00_00;
typedef struct{
unk800DC918_00_00 *unk00;
u8 pad00[0x04];
} unk800DC918_00;
typedef struct{
u8 unk00;
u8 pad01[0x05];
u8 unk06;
u8 unk07;
u32 unk08;
} unk800DC918_04_0C;
typedef struct{
u8 pad00[0x0C];
unk800DC918_04_0C* unk0C;
u8 pad0C[0x10];
s16 unk20;
u8 pad24[0x20];
} unk800DC918_04;
typedef struct{
s16 unk00;
u8 pad02[0x02];
s16 unk04;
s16 unk06;
u8 pad08[0x02];
s16 unk0A;
} unk800DC918_08;
typedef struct{
unk800DC918_00 *unk00;
unk800DC918_04 *unk04;
unk800DC918_08 *unk08;
u8 pad0C[0x0E];
s16 unk08_count;
} unk800DC918;
extern unk800DC918* D_800DC918;
s32 func_800249E0(s32 arg0) {
D_8011D37C = arg0;
@@ -61,7 +129,27 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80026E54.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027184.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027568.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800278E8.s")
#if 1
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027E24.s")
#else
typedef struct{
u32 unk00;
u8 pad04[0x10];
u32 unk14;
}unk80027E24_sp58;
void func_80027E24(u32 arg0){
unk80027E24_sp58 sp58;
unk800DC918_04 *s6;
unk800DC918_04_0C * s0;
unk800DC918_04_0C * s5;
unk800DC918_00_00 * tmp_a0;
s32 i;//sp_6c
s32 j;
}
#endif
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027FC4.s")
void func_80028044(s32 arg0) {
@@ -72,15 +160,15 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80028050.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800289B8.s")
void func_80028C10(void){
Player * v0_player;
unk80120AC0 * v0_some_struct;
if(D_8011B0B8.unk00 == NULL)
return;
v0_player = func_80069D20();
v0_some_struct = func_80069D20();
if(D_800DC91C->unk49 == 0){
D_8011B0B8.unk00->x_position = v0_player->x_position;
D_8011B0B8.unk00->y_position = v0_player->y_position;
D_8011B0B8.unk00->z_position = v0_player->z_position;
D_8011B0B8.unk00->x_position = v0_some_struct->x_position;
D_8011B0B8.unk00->y_position = v0_some_struct->y_position;
D_8011B0B8.unk00->z_position = v0_some_struct->z_position;
}
func_80068408(&D_8011B0A0, &D_8011B0A4);
@@ -88,8 +176,12 @@ void func_80028C10(void){
func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, D_8011B0B8.unk00);
}
}
#if 1
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80028CD0.s")
#else
#endif
void func_80028FA0(s32 arg0) {
D_8011B0FC = arg0;
@@ -100,9 +192,34 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029658.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029AF8.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029D14.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029F18.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A05C.s")
s32 func_8002A05C(s32 arg0, s32 arg1, s32* arg2){
s32 i;
s32 cnt = 0;
unk800DC918_08 * a0;
for(i = 0; i < D_800DC918->unk08_count; i++){
a0 = D_800DC918->unk08 + i;
if(arg0 < a0->unk06 + 4 && a0->unk00 - 4 < arg0
&& arg1 < a0->unk0A + 4 && a0->unk04 - 4 < arg1
){
*arg2 = i;
cnt++;
arg2++;
}
}
return cnt;
}
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A134.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A2DC.s")
unk800DC918_08 *func_8002A2DC(s32 arg0){
if(arg0 < 0 || D_800DC918->unk08_count < arg0)
return NULL;
return D_800DC918->unk08 + arg0;
}
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A31C.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A5F8.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A900.s")
@@ -125,7 +242,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002BAB0.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002C0C4.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002C71C.s")
s32* func_8002C7C4(void) {
unk800DC918* func_8002C7C4(void) {
return D_800DC918;
}
+25 -25
View File
@@ -58,9 +58,9 @@ typedef struct unk80120AC0 {
s16 unk2;
s16 unk4;
u8 pad6[6];
f32 unkC;
f32 unk10;
f32 unk14;
f32 x_position;
f32 y_position;
f32 z_position;
f32 pad18;
f32 unk1C;
f32 pad20;
@@ -248,26 +248,26 @@ void func_80066230(s32 arg0, s32 arg1) {
sp2A = someStruct->unk0;
sp28 = someStruct->unk2;
sp26 = someStruct->unk4;
sp20 = someStruct->unkC;
sp1C = someStruct->unk10;
sp18 = someStruct->unk14;
sp20 = someStruct->x_position;
sp1C = someStruct->y_position;
sp18 = someStruct->z_position;
sp24 = someStruct->unk38;
someStruct->unk4 = 0;
someStruct->unk2 = 0;
someStruct->unk0 = -0x8000;
someStruct->unk38 = 0;
someStruct->unkC = 0.0f;
someStruct->unk10 = 0.0f;
someStruct->unk14 = 0.0f;
someStruct->x_position = 0.0f;
someStruct->y_position = 0.0f;
someStruct->z_position = 0.0f;
func_8001D5E0(0.0f, 0.0f, -1.0f);
func_80066CDC(arg0, arg1);
someStruct->unk38 = sp24;
someStruct->unk0 = sp2A;
someStruct->unk2 = sp28;
someStruct->unk4 = sp26;
someStruct->unkC = sp20;
someStruct->unk10 = sp1C;
someStruct->unk14 = sp18;
someStruct->x_position = sp20;
someStruct->y_position = sp1C;
someStruct->z_position = sp18;
}
f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) {
@@ -280,17 +280,17 @@ f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) {
phi_v1 += 4;
}
temp_f0 = arg2 - D_80120AC0[phi_v1].unk14;
temp_f2 = arg0 - D_80120AC0[phi_v1].unkC;
temp_f14 = arg1 - D_80120AC0[phi_v1].unk10;
temp_f0 = arg2 - D_80120AC0[phi_v1].z_position;
temp_f2 = arg0 - D_80120AC0[phi_v1].x_position;
temp_f14 = arg1 - D_80120AC0[phi_v1].y_position;
return sqrtf((temp_f0 * temp_f0) + ((temp_f2 * temp_f2) + (temp_f14 * temp_f14)));
}
void func_800663DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) {
void func_800663DC(s32 x_pos, s32 y_pos, s32 z_pos, s32 arg3, s32 arg4, s32 arg5) {
D_80120AC0[D_80120CE4].unk4 = (s16) (arg3 * 0xB6);
D_80120AC0[D_80120CE4].unkC = (f32) arg0;
D_80120AC0[D_80120CE4].unk10 = (f32) arg1;
D_80120AC0[D_80120CE4].unk14 = (f32) arg2;
D_80120AC0[D_80120CE4].x_position = (f32) x_pos;
D_80120AC0[D_80120CE4].y_position = (f32) y_pos;
D_80120AC0[D_80120CE4].z_position = (f32) z_pos;
D_80120AC0[D_80120CE4].unk2 = (s16) (arg4 * 0xB6);
D_80120AC0[D_80120CE4].unk38 = (u16)0;
D_80120AC0[D_80120CE4].unk24 = 0.0f;
@@ -305,9 +305,9 @@ void func_800663DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) {
void func_80066488(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6) {
arg0 += 4;
D_80120AC0[arg0].unk38 = 0;
D_80120AC0[arg0].unkC = arg1;
D_80120AC0[arg0].unk10 = arg2;
D_80120AC0[arg0].unk14 = arg3;
D_80120AC0[arg0].x_position = arg1;
D_80120AC0[arg0].y_position = arg2;
D_80120AC0[arg0].z_position = arg3;
D_80120AC0[arg0].unk0 = arg4;
D_80120AC0[arg0].unk2 = arg5;
D_80120AC0[arg0].unk4 = arg6;
@@ -793,9 +793,9 @@ void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
s32 i;
for (i = 0; i <= D_80120CE0; i++) {
temp_f0 = arg0 - D_80120AC0[i].unkC;
temp_f2 = arg1 - D_80120AC0[i].unk10;
temp_f14 = arg2 - D_80120AC0[i].unk14;
temp_f0 = arg0 - D_80120AC0[i].x_position;
temp_f2 = arg1 - D_80120AC0[i].y_position;
temp_f14 = arg2 - D_80120AC0[i].z_position;
temp_f0_2 = sqrtf(((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f14 * temp_f14));
if (temp_f0_2 < arg3) {
D_80120AC0[i].unk30 = ((arg3 - temp_f0_2) * arg4) / arg3;