diff --git a/asm/non_matchings/unknown_0255E0/func_8002A05C.s b/asm/non_matchings/unknown_0255E0/func_8002A05C.s deleted file mode 100644 index 7ab83127..00000000 --- a/asm/non_matchings/unknown_0255E0/func_8002A05C.s +++ /dev/null @@ -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 - diff --git a/asm/non_matchings/unknown_0255E0/func_8002A2DC.s b/asm/non_matchings/unknown_0255E0/func_8002A2DC.s deleted file mode 100644 index 0c91f0ec..00000000 --- a/asm/non_matchings/unknown_0255E0/func_8002A2DC.s +++ /dev/null @@ -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 - diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index fe250e9d..0f9a7f6f 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -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; } diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index 47c7bc7e..94049a73 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -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;