mirror of
https://github.com/HarbourMasters/Starship.git
synced 2025-03-11 09:58:49 +03:00
parent
4ba101e283
commit
3ce61b6d95
@ -804,7 +804,7 @@ s32 func_i5_801A3790(Player*, f32, f32);
|
||||
|
||||
void func_E9F1D0_8018769C(Actor*);
|
||||
void func_E9F1D0_80187520(u32 mode, void* ptr);
|
||||
void func_E9F1D0_801878A8(Object_58**);
|
||||
void func_E9F1D0_801878A8(void);
|
||||
void func_E9F1D0_801888F4(Actor *);
|
||||
void func_E9F1D0_80189214(void);
|
||||
void func_E9F1D0_8018BDD8(void);
|
||||
|
@ -82,9 +82,7 @@ typedef struct {
|
||||
/* 0x04 */ s16 zPos2;
|
||||
/* 0x06 */ s16 xPos;
|
||||
/* 0x08 */ s16 yPos;
|
||||
/* 0x0A */ s16 unk_A;
|
||||
/* 0x0C */ s16 unk_C;
|
||||
/* 0x0E */ s16 unk_E;
|
||||
/* 0x0A */ Vec3s rot;
|
||||
/* 0x10 */ s16 id;
|
||||
} ObjectInit; // size = 0x14
|
||||
|
||||
|
@ -184,9 +184,9 @@ void Object_80_Load(Object_80* obj80, ObjectInit* objInit) {
|
||||
obj80->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
obj80->obj.pos.x = objInit->xPos;
|
||||
obj80->obj.pos.y = objInit->yPos;
|
||||
obj80->obj.rot.x = objInit->unk_A;
|
||||
obj80->obj.rot.y = objInit->unk_C;
|
||||
obj80->obj.rot.z = objInit->unk_E;
|
||||
obj80->obj.rot.x = objInit->rot.x;
|
||||
obj80->obj.rot.y = objInit->rot.y;
|
||||
obj80->obj.rot.z = objInit->rot.z;
|
||||
obj80->obj.id = objInit->id;
|
||||
Object_SetInfo(&obj80->info, obj80->obj.id);
|
||||
}
|
||||
@ -198,9 +198,9 @@ void Object_4C_Load(Object_4C* obj4C, ObjectInit* objInit) {
|
||||
obj4C->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
obj4C->obj.pos.x = objInit->xPos;
|
||||
obj4C->obj.pos.y = objInit->yPos;
|
||||
obj4C->obj.rot.y = objInit->unk_C;
|
||||
obj4C->obj.rot.x = objInit->unk_A;
|
||||
obj4C->obj.rot.z = objInit->unk_E;
|
||||
obj4C->obj.rot.y = objInit->rot.y;
|
||||
obj4C->obj.rot.x = objInit->rot.x;
|
||||
obj4C->obj.rot.z = objInit->rot.z;
|
||||
obj4C->obj.id = objInit->id;
|
||||
Object_SetInfo(&obj4C->info, obj4C->obj.id);
|
||||
}
|
||||
@ -212,9 +212,9 @@ void Actor_Load(Actor* actor, ObjectInit* objInit) {
|
||||
actor->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
actor->obj.pos.x = objInit->xPos;
|
||||
actor->obj.pos.y = objInit->yPos;
|
||||
actor->obj.rot.y = objInit->unk_C;
|
||||
actor->obj.rot.x = objInit->unk_A;
|
||||
actor->obj.rot.z = objInit->unk_E;
|
||||
actor->obj.rot.y = objInit->rot.y;
|
||||
actor->obj.rot.x = objInit->rot.x;
|
||||
actor->obj.rot.z = objInit->rot.z;
|
||||
actor->obj.id = objInit->id;
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
}
|
||||
@ -226,9 +226,9 @@ void Boss_Load(Boss* boss, ObjectInit* objInit) {
|
||||
boss->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
boss->obj.pos.x = objInit->xPos;
|
||||
boss->obj.pos.y = objInit->yPos;
|
||||
boss->obj.rot.y = objInit->unk_C;
|
||||
boss->obj.rot.x = objInit->unk_A;
|
||||
boss->obj.rot.z = objInit->unk_E;
|
||||
boss->obj.rot.y = objInit->rot.y;
|
||||
boss->obj.rot.x = objInit->rot.x;
|
||||
boss->obj.rot.z = objInit->rot.z;
|
||||
boss->obj.id = objInit->id;
|
||||
Object_SetInfo(&boss->info, boss->obj.id);
|
||||
}
|
||||
@ -240,9 +240,9 @@ void Item_Load(Item* item, ObjectInit* objInit) {
|
||||
item->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
item->obj.pos.x = objInit->xPos;
|
||||
item->obj.pos.y = objInit->yPos;
|
||||
item->obj.rot.y = objInit->unk_C;
|
||||
item->obj.rot.x = objInit->unk_A;
|
||||
item->obj.rot.z = objInit->unk_E;
|
||||
item->obj.rot.y = objInit->rot.y;
|
||||
item->obj.rot.x = objInit->rot.x;
|
||||
item->obj.rot.z = objInit->rot.z;
|
||||
item->obj.id = objInit->id;
|
||||
item->scale = 1.0f;
|
||||
Object_SetInfo(&item->info, item->obj.id);
|
||||
@ -369,9 +369,9 @@ void func_80061F0C(Actor* actor, ObjectInit* objInit, s32 arg2) {
|
||||
actor->obj.pos.z += -3000.0f + objInit->zPos2;
|
||||
actor->obj.pos.x = objInit->xPos;
|
||||
actor->obj.pos.y = objInit->yPos;
|
||||
actor->obj.rot.y = actor->unk_0F4.y = objInit->unk_C;
|
||||
actor->obj.rot.x = actor->unk_0F4.x = objInit->unk_A;
|
||||
actor->unk_0F4.z = objInit->unk_E;
|
||||
actor->obj.rot.y = actor->unk_0F4.y = objInit->rot.y;
|
||||
actor->obj.rot.x = actor->unk_0F4.x = objInit->rot.x;
|
||||
actor->unk_0F4.z = objInit->rot.z;
|
||||
actor->obj.id = OBJ_ACTOR_200;
|
||||
actor->timer_0C2 = 10;
|
||||
actor->unk_0B4 = 4095;
|
||||
@ -468,8 +468,8 @@ void Object_Load(ObjectInit* objInit, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
D_i5_801BA1E8 = 98;
|
||||
break;
|
||||
case OBJ_UNK_402:
|
||||
D_E9F1D0_801A7F78 = objInit->unk_E * 0.1f;
|
||||
D_E9F1D0_801A7F60 = -(f32) objInit->unk_A;
|
||||
D_E9F1D0_801A7F78 = objInit->rot.z * 0.1f;
|
||||
D_E9F1D0_801A7F60 = -(f32) objInit->rot.x;
|
||||
break;
|
||||
case OBJ_UNK_400:
|
||||
D_801782B8++;
|
||||
@ -561,8 +561,8 @@ void func_80062664(void) {
|
||||
for (i = 0, objInit = &D_80178310[D_80177DC8]; i < 10000; i++, D_80177DC8++, objInit++) {
|
||||
if ((objInit->id > OBJ_INVALID) && D_80177D20 <= objInit->zPos1 && objInit->zPos1 <= D_80177D20 + 200.0f) {
|
||||
if ((gCurrentLevel == LEVEL_VENOM_1) && (objInit->id >= OBJ_UNK_1000)) {
|
||||
if (((objInit->unk_C < 180.0f) && (objInit->xPos < gPlayer[0].unk_0AC)) ||
|
||||
((objInit->unk_C > 180.0f) && (gPlayer[0].unk_0AC < objInit->xPos))) {
|
||||
if (((objInit->rot.y < 180.0f) && (objInit->xPos < gPlayer[0].unk_0AC)) ||
|
||||
((objInit->rot.y > 180.0f) && (gPlayer[0].unk_0AC < objInit->xPos))) {
|
||||
Object_Load(objInit, var_fs1, var_fs2, var_fs3, var_fs4);
|
||||
}
|
||||
} else {
|
||||
|
@ -345,7 +345,7 @@ void func_800A4F7C(void) {
|
||||
gObjects58[i].obj.pos.x = D_80178310[j].xPos;
|
||||
gObjects58[i].obj.pos.z = D_80178310[j].zPos1;
|
||||
gObjects58[i].obj.pos.y = D_80178310[j].yPos;
|
||||
gObjects58[i].obj.rot.y = D_80178310[j].unk_C;
|
||||
gObjects58[i].obj.rot.y = D_80178310[j].rot.y;
|
||||
Object_SetInfo(&gObjects58[i].info, gObjects58[i].obj.id);
|
||||
i++;
|
||||
}
|
||||
@ -374,7 +374,7 @@ void func_800A5338(void) {
|
||||
obj58->obj.pos.x = D_80178310[j].xPos;
|
||||
obj58->obj.pos.z = D_80178310[j].zPos1;
|
||||
obj58->obj.pos.y = D_80178310[j].yPos;
|
||||
obj58->obj.rot.y = D_80178310[j].unk_C;
|
||||
obj58->obj.rot.y = D_80178310[j].rot.y;
|
||||
Object_SetInfo(&obj58->info, obj58->obj.id);
|
||||
if (obj58->obj.id == OBJ_80_1) {
|
||||
obj58->info.dList = D_6020760;
|
||||
@ -426,7 +426,7 @@ void func_800A55B0(void) {
|
||||
obj58->obj.pos.x = D_80178310[j].xPos;
|
||||
obj58->obj.pos.z = D_80178310[j].zPos1;
|
||||
obj58->obj.pos.y = D_80178310[j].yPos;
|
||||
obj58->obj.rot.y = D_80178310[j].unk_C;
|
||||
obj58->obj.rot.y = D_80178310[j].rot.y;
|
||||
Object_SetInfo(&obj58->info, obj58->obj.id);
|
||||
obj58++;
|
||||
}
|
||||
@ -2653,7 +2653,7 @@ void func_800ABAB4(void) {
|
||||
case LEVEL_VENOM_ANDROSS:
|
||||
if (D_8017827C == 1) {
|
||||
if (D_8015F924 == 0) {
|
||||
func_E9F1D0_801878A8(&gObjects58);
|
||||
func_E9F1D0_801878A8();
|
||||
} else {
|
||||
func_E9F1D0_801961AC(&gObjects58);
|
||||
}
|
||||
|
@ -1,46 +1,651 @@
|
||||
#include "common.h"
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80187530.s")
|
||||
extern s32 D_E9F1D0_801A6760[12];
|
||||
extern f32 D_E9F1D0_801A7F64[2];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_8018767C.s")
|
||||
void func_E9F1D0_80187530(Actor* actor) {
|
||||
s32 index;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_8018769C.s")
|
||||
switch (actor->unk_048) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
actor->unk_0B6 += (s32) actor->fwork[22];
|
||||
if (actor->unk_0B6 >= Animation_GetFrameCount(&D_6014658)) {
|
||||
actor->unk_0B6 = Animation_GetFrameCount(&D_6014658) - 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
actor->unk_0B6 -= (s32) actor->fwork[22];
|
||||
if (actor->unk_0B6 <= 0) {
|
||||
actor->unk_0B6 = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
index = actor->unk_0B6 / 18.0f;
|
||||
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_E9F1D0_801A6760[index]);
|
||||
actor->obj.rot.z = D_E9F1D0_801A7F64[1];
|
||||
}
|
||||
|
||||
s32 func_E9F1D0_8018767C(s32 arg0, Gfx** arg1, Vec3f* arg2, Vec3f* arg3, void* arg4) {
|
||||
if (arg0 == 13) {
|
||||
*arg1 = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern Limb* D_6014844[];
|
||||
|
||||
void func_E9F1D0_8018769C(Actor* actor) {
|
||||
Vec3f sp28[20];
|
||||
|
||||
Animation_GetFrameData(&D_6014658, actor->unk_0B6, sp28);
|
||||
Animation_DrawSkeleton(1, D_6014844, sp28, func_E9F1D0_8018767C, NULL, NULL, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801876FC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801878A8.s")
|
||||
extern void func_800A4F4C(Object_58*);
|
||||
extern ObjectInit* D_C0356CC;
|
||||
extern f32* D_C038CCC;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80187C5C.s")
|
||||
void func_E9F1D0_801878A8() {
|
||||
Actor* var_s0_2;
|
||||
Item* var_s0_3;
|
||||
Object_58* var_s0;
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801880E4.s")
|
||||
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C0356CC);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188448.s")
|
||||
for (var_s0 = gObjects58, i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188468.s")
|
||||
if (D_80178310[i].id < 0xA1) {
|
||||
func_800A4F4C(var_s0);
|
||||
var_s0->obj.status = 2;
|
||||
var_s0->obj.id = D_80178310[i].id;
|
||||
var_s0->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0->obj.pos.y = D_80178310[i].yPos;
|
||||
var_s0->obj.rot.y = D_80178310[i].rot.y;
|
||||
Object_SetInfo(&var_s0->info, var_s0->obj.id);
|
||||
if (var_s0->obj.id == 0x83) {
|
||||
var_s0->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_C038CCC);
|
||||
}
|
||||
var_s0++;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188528.s")
|
||||
for (var_s0_2 = &gActors[1], i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188660.s")
|
||||
if ((D_80178310[i].id < 0x124) && (D_80178310[i].id >= 0xB0)) {
|
||||
Actor_Initialize(var_s0_2);
|
||||
var_s0_2->obj.status = 2;
|
||||
var_s0_2->obj.id = D_80178310[i].id;
|
||||
var_s0_2->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0_2->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0_2->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0_2->obj.pos.y = D_80178310[i].yPos;
|
||||
var_s0_2->obj.rot.y = D_80178310[i].rot.y;
|
||||
Object_SetInfo(&var_s0_2->info, var_s0_2->obj.id);
|
||||
var_s0_2++;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801887B0.s")
|
||||
for (var_s0_3 = gItems, i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
if ((D_80178310[i].id < 0x153) && (D_80178310[i].id >= 0x142)) {
|
||||
Item_Initialize(var_s0_3);
|
||||
var_s0_3->obj.status = 2;
|
||||
var_s0_3->obj.id = D_80178310[i].id;
|
||||
var_s0_3->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0_3->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0_3->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0_3->obj.pos.y = D_80178310[i].yPos;
|
||||
Object_SetInfo(&var_s0_3->info, var_s0_3->obj.id);
|
||||
var_s0_3++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_8018887C.s")
|
||||
extern ObjectInit* D_C036310;
|
||||
extern ObjectInit* D_C036B6C;
|
||||
extern ObjectInit* D_C03733C;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801888F4.s")
|
||||
void func_E9F1D0_80187C5C(void) {
|
||||
Actor* var_s0_2;
|
||||
Item* var_s0_3;
|
||||
Object_58* var_s0;
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188A4C.s")
|
||||
switch ((s32) (Rand_ZeroOne() * 2.9f)) {
|
||||
case 0:
|
||||
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C036310);
|
||||
break;
|
||||
case 1:
|
||||
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C036B6C);
|
||||
break;
|
||||
default:
|
||||
case 2:
|
||||
D_80178310 = SEGMENTED_TO_VIRTUAL(&D_C03733C);
|
||||
break;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80188CB8.s")
|
||||
for (var_s0 = gObjects58, i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80189098.s")
|
||||
if (D_80178310[i].id < 0xA1) {
|
||||
func_800A4F4C(var_s0);
|
||||
var_s0->obj.status = 2;
|
||||
var_s0->obj.id = D_80178310[i].id;
|
||||
var_s0->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0->obj.pos.y = D_80178310[i].yPos;
|
||||
var_s0->obj.rot.y = D_80178310[i].rot.y;
|
||||
if (var_s0->obj.id == 0x93) {
|
||||
var_s0->unk40[0] = D_80178310[i].rot.z;
|
||||
}
|
||||
Object_SetInfo(&var_s0->info, var_s0->obj.id);
|
||||
if (var_s0->obj.id == 0x83) {
|
||||
var_s0->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_C038CCC);
|
||||
}
|
||||
var_s0++;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80189214.s")
|
||||
for (var_s0_2 = &gActors[1], i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_8018933C.s")
|
||||
if ((D_80178310[i].id < 0x124) && (D_80178310[i].id >= 0xB0)) {
|
||||
Actor_Initialize(var_s0_2);
|
||||
var_s0_2->obj.status = 2;
|
||||
var_s0_2->obj.id = D_80178310[i].id;
|
||||
var_s0_2->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0_2->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0_2->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0_2->obj.pos.y = D_80178310[i].yPos;
|
||||
var_s0_2->obj.rot.y = D_80178310[i].rot.y;
|
||||
Object_SetInfo(&var_s0_2->info, var_s0_2->obj.id);
|
||||
var_s0_2++;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_801893B8.s")
|
||||
for (var_s0_3 = gItems, i = 0; i < 1000; i++) {
|
||||
if (D_80178310[i].id < 0) {
|
||||
break;
|
||||
}
|
||||
if ((D_80178310[i].id < 0x153) && (D_80178310[i].id >= 0x142)) {
|
||||
Item_Initialize(var_s0_3);
|
||||
var_s0_3->obj.status = 2;
|
||||
var_s0_3->obj.id = D_80178310[i].id;
|
||||
var_s0_3->obj.pos.x = D_80178310[i].xPos;
|
||||
var_s0_3->obj.pos.z = -D_80178310[i].zPos1;
|
||||
var_s0_3->obj.pos.z += D_80178310[i].zPos2;
|
||||
var_s0_3->obj.pos.y = D_80178310[i].yPos;
|
||||
Object_SetInfo(&var_s0_3->info, var_s0_3->obj.id);
|
||||
var_s0_3++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80189470.s")
|
||||
void func_E9F1D0_801880E4(Actor* arg0) {
|
||||
s32 i;
|
||||
Vec3f sp60;
|
||||
Object_58* var_v0;
|
||||
f32 sp58;
|
||||
f32 var_fv0;
|
||||
Vec3f sp48;
|
||||
Vec3f sp3C;
|
||||
f32 temp_fv1;
|
||||
|
||||
for (var_v0 = gObjects58, i = 0; i < 0xC8; i++, var_v0++) {
|
||||
if ((var_v0->obj.id == 0x93) && ((u8) arg0->unk_04E == (u8) var_v0->unk40[0])) {
|
||||
arg0->fwork[3] = var_v0->obj.pos.x;
|
||||
arg0->fwork[4] = var_v0->obj.pos.y;
|
||||
arg0->fwork[5] = var_v0->obj.pos.z;
|
||||
break;
|
||||
}
|
||||
}
|
||||
arg0->fwork[2] = 3.0f;
|
||||
sp60.z = arg0->fwork[3] - arg0->obj.pos.x;
|
||||
sp60.y = arg0->fwork[4] - arg0->obj.pos.y;
|
||||
sp60.x = arg0->fwork[5] - arg0->obj.pos.z;
|
||||
if ((fabsf(sp60.z) < 300.0f) && (fabsf(sp60.y) < 300.0f) && (fabsf(sp60.x) < 300.0f)) {
|
||||
arg0->unk_04E += 1;
|
||||
}
|
||||
if (!(gFrameCount & 0x1F)) {
|
||||
arg0->iwork[0xB] = 1;
|
||||
arg0->fwork[1] = 47.0f;
|
||||
if ((fabsf(arg0->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) &&
|
||||
(fabsf(arg0->obj.pos.y - gPlayer[0].pos.y) < 500.0f) &&
|
||||
(fabsf(arg0->obj.pos.z - gPlayer[0].unk_138) < 1000.0f)) {
|
||||
arg0->iwork[0xB] = 2;
|
||||
arg0->fwork[1] = 65.0f;
|
||||
}
|
||||
}
|
||||
|
||||
Math_SmoothStepToF(arg0->fwork, arg0->fwork[1], 0.2f, 3.0f, 0.00001f);
|
||||
sp58 = Math_RadToDeg(Math_Atan2F(sp60.z, sp60.x));
|
||||
Math_SmoothStepToAngle(&arg0->unk_0F4.x, Math_RadToDeg(Math_Atan2F(sp60.y, sqrtf(SQ(sp60.z) + SQ(sp60.x)))), 0.1f,
|
||||
arg0->fwork[2], 0.0f);
|
||||
temp_fv1 = Math_SmoothStepToAngle(&arg0->unk_0F4.y, sp58, 0.1f, arg0->fwork[2], 0.0001f) * 40.0f;
|
||||
if (temp_fv1 < 0.0f) {
|
||||
var_fv0 = temp_fv1 * -1.0f;
|
||||
} else {
|
||||
var_fv0 = 360.0f - temp_fv1;
|
||||
}
|
||||
Math_SmoothStepToAngle(&arg0->obj.rot.z, var_fv0, 0.1f, 3.0f, 0.01f);
|
||||
|
||||
arg0->obj.rot.y = arg0->unk_0F4.y;
|
||||
arg0->obj.rot.x = -arg0->unk_0F4.x;
|
||||
Matrix_RotateY(gCalcMatrix, arg0->unk_0F4.y * M_DTOR, 0);
|
||||
Matrix_RotateX(gCalcMatrix, -arg0->unk_0F4.x * M_DTOR, 1);
|
||||
sp48.x = 0;
|
||||
sp48.y = 0;
|
||||
sp48.z = arg0->fwork[0];
|
||||
Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp48, &sp3C);
|
||||
arg0->vel.x = sp3C.x;
|
||||
arg0->vel.y = sp3C.y;
|
||||
arg0->vel.z = sp3C.z;
|
||||
}
|
||||
|
||||
void func_E9F1D0_80188448(Actor* arg0) {
|
||||
func_8005B388(arg0);
|
||||
}
|
||||
|
||||
void func_E9F1D0_80188468(void) {
|
||||
Actor* actor = &gActors[0];
|
||||
|
||||
Actor_Initialize(actor);
|
||||
actor->obj.status = 2;
|
||||
actor->obj.pos.x = -23180.0f;
|
||||
actor->obj.pos.y = 300.0f;
|
||||
actor->obj.pos.z = -11959.0f;
|
||||
actor->iwork[0xB] = 1;
|
||||
actor->iwork[0xE] = 1;
|
||||
actor->obj.id = 0xC7;
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
Audio_PlaySfx(0x3100000C, &actor->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
}
|
||||
|
||||
#define RAD_TO_DEG(radians) ((radians * 180.0f) / M_PI)
|
||||
|
||||
void func_E9F1D0_80188528(Actor* arg0) {
|
||||
Math_SmoothStepToF(&arg0->vel.x, 0.0f, 0.2f, 0.5f, 0.0f);
|
||||
Math_SmoothStepToF(&arg0->vel.y, 0.0f, 0.2f, 0.5f, 0.0f);
|
||||
Math_SmoothStepToF(&arg0->vel.z, 0.0f, 0.2f, 0.5f, 0.0f);
|
||||
if (arg0->unk_0D0 != 0) {
|
||||
func_8007A6F0(&arg0->obj.pos, 0x2903A008);
|
||||
Object_Kill(&arg0->obj, &arg0->sfxPos);
|
||||
func_8007B344(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 3.0f, 5);
|
||||
} else if (arg0->timer_0BC == 0) {
|
||||
Object_Kill(&arg0->obj, &arg0->sfxPos);
|
||||
}
|
||||
arg0->obj.rot.y = RAD_TO_DEG(-gPlayer[0].unk_058);
|
||||
arg0->obj.rot.x = RAD_TO_DEG(gPlayer[0].unk_05C);
|
||||
arg0->unk_0F4.z += arg0->fwork[0];
|
||||
}
|
||||
|
||||
extern Gfx* D_6009300;
|
||||
|
||||
void func_E9F1D0_80188660(Actor* arg0) {
|
||||
|
||||
RCP_SetupDL(&gMasterDisp, 0x3D);
|
||||
GPC(255, 255, 255, 255);
|
||||
Matrix_RotateZ(gGfxMatrix, arg0->unk_0F4.z * M_DTOR, 1);
|
||||
Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, 1);
|
||||
Matrix_RotateZ(gGfxMatrix, -arg0->unk_0F4.z * M_DTOR, 1);
|
||||
Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, 1);
|
||||
Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, 1);
|
||||
Matrix_SetGfxMtx(&gMasterDisp);
|
||||
GDL(&D_6009300);
|
||||
}
|
||||
|
||||
void func_E9F1D0_801887B0(Actor* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) {
|
||||
Actor_Initialize(arg0);
|
||||
arg0->obj.status = 2;
|
||||
arg0->obj.id = 0x11E;
|
||||
arg0->vel.x = arg4;
|
||||
arg0->vel.y = arg5;
|
||||
arg0->vel.z = arg6;
|
||||
arg0->obj.pos.x = arg1;
|
||||
arg0->obj.pos.y = arg2;
|
||||
arg0->obj.pos.z = arg3;
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
arg0->fwork[0] = 10.0f;
|
||||
} else {
|
||||
arg0->fwork[0] = -10.0f;
|
||||
}
|
||||
arg0->timer_0BC = 300;
|
||||
Object_SetInfo(&arg0->info, arg0->obj.id);
|
||||
}
|
||||
|
||||
void func_E9F1D0_8018887C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gActors); i++) {
|
||||
if (gActors[i].obj.status == 0) {
|
||||
func_E9F1D0_801887B0(&gActors[i], arg0, arg1, arg2, arg3, arg4, arg5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_E9F1D0_801888F4(Actor* arg0) {
|
||||
s32 i;
|
||||
|
||||
arg0->obj.rot.z -= 8.0f;
|
||||
if ((arg0->timer_0BC & 1) == 1) {
|
||||
func_8007D2C8(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 5.0f);
|
||||
}
|
||||
if ((arg0->timer_0BC == 0) || (arg0->unk_0D0 != 0)) {
|
||||
func_8007BFFC(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, arg0->vel.x, arg0->vel.y, arg0->vel.z, 7.0f,
|
||||
20);
|
||||
func_8007B344(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 10.0f, 5);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
func_800794CC(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1.0f);
|
||||
}
|
||||
|
||||
func_8007A6F0(&arg0->obj.pos, 0x2903B009);
|
||||
Object_Kill(&arg0->obj, &arg0->sfxPos);
|
||||
func_80077240(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 5);
|
||||
gHitCount += 6;
|
||||
D_80177850 = 0xF;
|
||||
}
|
||||
}
|
||||
|
||||
void func_E9F1D0_80188A4C(Boss* arg0) {
|
||||
|
||||
if (arg0->damage >= 21) {
|
||||
arg0->damage = 20;
|
||||
}
|
||||
if (arg0->dmgType != 0) {
|
||||
arg0->dmgType = 0;
|
||||
if (arg0->actionState < 0xA && !(arg0->fwork[0x15] < 250.0f)) {
|
||||
switch (arg0->dmgPart) {
|
||||
case 0:
|
||||
arg0->swork[1] = 0xF;
|
||||
arg0->swork[7] = 0x1E;
|
||||
return;
|
||||
case 1:
|
||||
case 2:
|
||||
if (arg0->swork[4] == 0) {
|
||||
arg0->swork[2] = 0xA;
|
||||
arg0->swork[3] = 0xF;
|
||||
Audio_PlaySfx(0x2943500FU, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
arg0->health -= arg0->damage;
|
||||
if ((arg0->health != 0) && (arg0->health <= 0)) {
|
||||
D_Timer_80161A60 = 8;
|
||||
Audio_PlaySfx(0x2940D09AU, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
func_80042EC0(arg0);
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_0;
|
||||
arg0->actionState = 20;
|
||||
arg0->swork[1] = 1000;
|
||||
arg0->swork[2] = 1000;
|
||||
arg0->swork[6] = 1;
|
||||
D_80177A48[0] = 0.0f;
|
||||
D_80177A48[1] = 0.1f;
|
||||
D_80177A80 = 0;
|
||||
func_8001A55C(&arg0->sfxPos, 0x11034074U);
|
||||
func_8001A55C(&arg0->sfxPos, 0x31408097U);
|
||||
func_800182F4(0x100100FF);
|
||||
func_800182F4(0x110100FF);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (arg0->swork[4] == 0) {
|
||||
arg0->swork[8]++;
|
||||
if (arg0->swork[8] >= 6) {
|
||||
arg0->swork[8] = 0;
|
||||
arg0->actionState = 12;
|
||||
arg0->timer_050 = 50;
|
||||
arg0->fwork[3] = gPlayer[0].pos.x;
|
||||
arg0->fwork[5] = gPlayer[0].unk_138;
|
||||
Audio_PlaySfx(0x2940B096U, &arg0->sfxPos, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern AnimationHeader D_600C038;
|
||||
|
||||
void func_E9F1D0_80188CB8(Boss* arg0) {
|
||||
s32 i;
|
||||
Vec3f sp50;
|
||||
Vec3f sp44;
|
||||
|
||||
arg0->unk_04C++;
|
||||
if (arg0->unk_04C >= Animation_GetFrameCount(&D_600C038)) {
|
||||
arg0->unk_04C = 0;
|
||||
}
|
||||
Animation_GetFrameData(&D_600C038, arg0->unk_04C, arg0->vwork);
|
||||
|
||||
if (arg0->swork[3] != 0) {
|
||||
arg0->swork[3]--;
|
||||
}
|
||||
|
||||
if (arg0->swork[2] != 0) {
|
||||
arg0->swork[2]--;
|
||||
Math_SmoothStepToF(&arg0->fwork[15], -15.0f, 0.8f, 5.0f, 0.0f);
|
||||
Math_SmoothStepToF(&arg0->fwork[16], 0.05f, 0.8f, 0.02f, 0.0f);
|
||||
} else {
|
||||
Math_SmoothStepToF(&arg0->fwork[15], 4.0f, 0.05f, 0.2f, 0.0f);
|
||||
Math_SmoothStepToF(&arg0->fwork[16], 0.03f, 0.05f, 0.001f, 0.0f);
|
||||
}
|
||||
Math_SmoothStepToF(&arg0->fwork[10], arg0->fwork[11], arg0->fwork[12], arg0->fwork[13], 0.0f);
|
||||
if (arg0->swork[1] != 0) {
|
||||
arg0->swork[1]--;
|
||||
arg0->fwork[11] = 30.0f;
|
||||
arg0->fwork[12] = 0.8f;
|
||||
arg0->fwork[13] = 3.0f;
|
||||
} else {
|
||||
arg0->fwork[11] = 8.0f;
|
||||
arg0->fwork[12] = 0.05f;
|
||||
arg0->fwork[13] = 0.5f;
|
||||
}
|
||||
|
||||
if (arg0->swork[7] != 0) {
|
||||
arg0->swork[7]--;
|
||||
if (!(gFrameCount & 1)) {
|
||||
func_E9F1D0_8018887C(((Rand_ZeroOne() - 0.5f) * 100.0f) + arg0->obj.pos.x,
|
||||
((Rand_ZeroOne() - 0.5f) * 300.0f) + (arg0->obj.pos.y - 250.0f),
|
||||
((Rand_ZeroOne() - 0.5f) * 100.0f) + arg0->obj.pos.z, (Rand_ZeroOne() - 0.5f) * 50.0f,
|
||||
(Rand_ZeroOne() - 0.5f) * 10.0f, (Rand_ZeroOne() - 0.5f) * 50.0f);
|
||||
}
|
||||
}
|
||||
arg0->fwork[14] += arg0->fwork[15];
|
||||
Matrix_RotateY(gCalcMatrix, -gPlayer[0].unk_058, 0);
|
||||
sp50.x = arg0->vel.z * 0.25f;
|
||||
sp50.y = 0.0f;
|
||||
sp50.z = arg0->vel.x * 0.25f;
|
||||
Matrix_MultVec3f(gCalcMatrix, &sp50, &sp44);
|
||||
arg0->fwork[18] = -sp44.z;
|
||||
arg0->fwork[17] = sp44.x;
|
||||
arg0->swork[4] = 0;
|
||||
arg0->fwork[19] = -26.0f;
|
||||
|
||||
for (i = 10; i < 12; i++) {
|
||||
if ((gActors[i].obj.status == 2) && (gActors[i].obj.id == 0xC5)) {
|
||||
|
||||
gUnkEntities30[i].mode = 50;
|
||||
gUnkEntities30[i].unk_28 = 1.0f;
|
||||
gUnkEntities30[i].unk_04.x = arg0->obj.pos.x;
|
||||
gUnkEntities30[i].unk_04.y = arg0->obj.pos.y - 200.0f;
|
||||
gUnkEntities30[i].unk_04.z = arg0->obj.pos.z;
|
||||
gUnkEntities30[i].timer = 3;
|
||||
gUnkEntities30[i].unk_10.x = gActors[i].obj.pos.x;
|
||||
gUnkEntities30[i].unk_10.y = gActors[i].obj.pos.y;
|
||||
gUnkEntities30[i].unk_10.z = gActors[i].obj.pos.z;
|
||||
arg0->swork[4] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_E9F1D0_80189098(Object* arg0) {
|
||||
Actor* actor = &gActors[10];
|
||||
|
||||
Actor_Initialize(actor);
|
||||
actor->obj.status = 1;
|
||||
actor->obj.id = 0xC5;
|
||||
actor->unk_0E4 = 10;
|
||||
actor->unk_0E6 = 0;
|
||||
actor->unk_0CE = 200;
|
||||
actor->obj.pos.x = 200.0f;
|
||||
actor->obj.pos.y = 0.0f;
|
||||
actor->obj.pos.z = arg0->pos.z;
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_800CBEA8);
|
||||
|
||||
actor++;
|
||||
|
||||
Actor_Initialize(actor);
|
||||
actor->obj.status = 1;
|
||||
actor->obj.id = 0xC5;
|
||||
actor->unk_0E4 = 0xA;
|
||||
actor->unk_0E6 = 0;
|
||||
actor->unk_0CE = 200;
|
||||
actor->obj.pos.x = -200.0f;
|
||||
actor->obj.pos.y = 0.0f;
|
||||
actor->obj.pos.z = arg0->pos.z;
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_800CBEA8);
|
||||
|
||||
gActors[0].unk_0B8 = 2;
|
||||
}
|
||||
|
||||
extern void func_800B56BC(Player*);
|
||||
|
||||
void func_E9F1D0_80189214(void) {
|
||||
s32 i;
|
||||
Player* player = &gPlayer[0];
|
||||
|
||||
func_800A6148();
|
||||
|
||||
for (i = 0; i < 200; i++) {
|
||||
gObjects58[i].obj.status = 0;
|
||||
}
|
||||
|
||||
gLevelMode = 0;
|
||||
player->unk_204 = 0;
|
||||
gPlayer[0].pos.x = 0.0f;
|
||||
player->camEye.z = 400.0f;
|
||||
player->camAt.z = player->camEye.z - 1000.0f;
|
||||
|
||||
player->unk_148 = player->unk_14C = 0.74f;
|
||||
player->camEye.y = player->pos.y * player->unk_14C + 10.0f;
|
||||
player->camEye.x = player->pos.x * player->unk_148;
|
||||
D_80177DC8 = 0;
|
||||
// FAKE
|
||||
if (1) {}
|
||||
player->camAt.x = 0.0f;
|
||||
player->camAt.y = 0.0f;
|
||||
player->unk_114 = 0.0f;
|
||||
player->unk_144 = 0.0f;
|
||||
D_80177D20 = 0.0f;
|
||||
player->unk_018 = player->unk_014 = 1.0f;
|
||||
player->pos.z = player->unk_138 = -player->unk_144;
|
||||
func_800B56BC(player);
|
||||
}
|
||||
|
||||
void func_E9F1D0_8018933C(Actor* arg0) {
|
||||
if ((fabsf(arg0->obj.pos.x - gPlayer->pos.x) < 1000.0f) && (fabsf(arg0->obj.pos.z - gPlayer->unk_138) < 1000.0f)) {
|
||||
D_Timer_80177B44 = 0x32;
|
||||
Object_Kill(&arg0->obj, &arg0->sfxPos);
|
||||
}
|
||||
}
|
||||
|
||||
void func_E9F1D0_801893B8(Actor* arg0) {
|
||||
|
||||
if (D_8015F924 == 0) {
|
||||
arg0->unk_04E++;
|
||||
switch (arg0->unk_04E) {
|
||||
case 200:
|
||||
func_800BA808(gMsg_ID_8250, RCID_ANDROSS_RED);
|
||||
return;
|
||||
case 400:
|
||||
func_800BA808(gMsg_ID_8255, RCID_ANDROSS_RED);
|
||||
return;
|
||||
case 600:
|
||||
func_800BA808(gMsg_ID_8260, RCID_ANDROSS_RED);
|
||||
return;
|
||||
case 800:
|
||||
func_800BA808(gMsg_ID_19325, RCID_ANDROSS_RED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_E9F1D0_80193710(void);
|
||||
|
||||
void func_E9F1D0_80189470(Object* arg0) {
|
||||
s32 i;
|
||||
Player* player = &gPlayer[0];
|
||||
|
||||
if ((D_80177AB0 != 7) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) &&
|
||||
(fabsf(arg0->pos.x - gPlayer[0].pos.x) < 9000.0f) && (fabsf(arg0->pos.z - gPlayer[0].unk_138) < 9000.0f)) {
|
||||
D_80177AB0 = 7;
|
||||
func_800BA808(gMsg_ID_19370, RCID_JAMES);
|
||||
func_800182F4(0x101400FF);
|
||||
func_800182F4(0x111400FF);
|
||||
}
|
||||
|
||||
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_3) && (fabsf(arg0->pos.x - gPlayer[0].pos.x) < 500.0f) &&
|
||||
(fabsf(arg0->pos.z - gPlayer[0].unk_138) < 500.0f)) {
|
||||
func_8001A838(0x11403076);
|
||||
func_8001D400(0);
|
||||
gCurrentLevel = LEVEL_VENOM_2;
|
||||
D_8017827C = 1;
|
||||
D_800D2F68 = 1;
|
||||
player->state_1C8 = PLAYERSTATE_1C8_7;
|
||||
player->unk_1D0 = 3;
|
||||
player->unk_144 = D_80177D20 = 0.0f;
|
||||
D_80177AB0 = D_80177A98 = 1;
|
||||
player->camEye.x = 1200.0f;
|
||||
player->camEye.z = 1200.0f;
|
||||
player->camEye.y = 1800.0f;
|
||||
D_801779A0 = 0.0f;
|
||||
D_801779B8 = 620.0f;
|
||||
D_801779C0 = 0.0f;
|
||||
player->unk_234 = 0;
|
||||
player->unk_034 = 0.0f;
|
||||
D_80177A48[0] = 1.0f;
|
||||
func_800A6148();
|
||||
|
||||
for (i = 0; i < 200; i++) {
|
||||
gObjects58[i].obj.status = 0;
|
||||
}
|
||||
|
||||
func_E9F1D0_80193710();
|
||||
D_8017782C = 1;
|
||||
func_800A594C();
|
||||
D_80178348 = D_80178350 = D_80178354 = 0;
|
||||
D_80178340 = D_80178358 = 0xFF;
|
||||
player->timer_1F8 = 2;
|
||||
D_80177A80 = 0;
|
||||
D_80177A48[1] = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i6/E9F1E0/func_E9F1D0_80189724.s")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user