197 lines
5.1 KiB
C
197 lines
5.1 KiB
C
#include "game/process.h"
|
|
#include "game/object.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/esprite.h"
|
|
|
|
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2);
|
|
void fn_1_3D28(omObjData* arg0, s32 arg1);
|
|
void fn_1_3E34(omObjData*);
|
|
void fn_1_3F7C(omObjData* arg0);
|
|
void fn_1_3FF0(omObjData*);
|
|
void fn_1_3FF4(omObjData* arg0);
|
|
void fn_1_40F4(omObjData* arg0);
|
|
|
|
s32 bssPad;
|
|
Process* lbl_1_bss_37D8;
|
|
omObjData* lbl_1_bss_37C8[4];
|
|
|
|
typedef void (*ObjFuncs)(omObjData*);
|
|
|
|
ObjFuncs lbl_1_data_278[] = {
|
|
fn_1_3FF0,
|
|
fn_1_3FF4,
|
|
fn_1_40F4,
|
|
};
|
|
|
|
typedef struct unkDominationData3 {
|
|
u32 unk_00;
|
|
s32 unk_04;
|
|
Vec unk_08;
|
|
s32 unk_14;
|
|
s16 unk_18[4];
|
|
f32 unk_20;
|
|
} unkDominationData3;
|
|
|
|
void fn_1_3AC8(Process* arg0) {
|
|
u32 i;
|
|
|
|
lbl_1_bss_37D8 = arg0;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0U, 0U, 4, fn_1_3E34);
|
|
lbl_1_bss_37C8[i]->work[0] = i;
|
|
}
|
|
}
|
|
|
|
void fn_1_3B68(void) {
|
|
s32 temp_r4;
|
|
u32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
fn_1_3F7C(lbl_1_bss_37C8[i]);
|
|
}
|
|
}
|
|
|
|
void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) {
|
|
omObjData* obj;
|
|
Vec sp14;
|
|
unkDominationData3* temp_r31;
|
|
u32 i;
|
|
s16 temp;;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
obj = lbl_1_bss_37C8[i];
|
|
temp_r31 = OM_GET_DATA_PTR(obj, unkDominationData3);
|
|
if (temp_r31->unk_04 == 0) {
|
|
temp = arg0;
|
|
espBankSet(temp_r31->unk_18[1], (temp / 100));
|
|
temp = (temp - ((temp / 100) * 100));
|
|
espBankSet(temp_r31->unk_18[2],(temp / 10));
|
|
temp = (temp - ((temp / 10) * 10));
|
|
espBankSet(temp_r31->unk_18[3], temp);
|
|
sp14.x = arg8;
|
|
sp14.y = 0.0f;
|
|
sp14.z = arg9;
|
|
Hu3D3Dto2D(&sp14, 1, &temp_r31->unk_08);
|
|
fn_1_3D28(obj, 1);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_3D28(omObjData* arg0, s32 arg1) {
|
|
unkDominationData3* temp_r31;
|
|
|
|
temp_r31 = arg0->data;
|
|
temp_r31->unk_04 = arg1;
|
|
temp_r31->unk_14 = 0;
|
|
}
|
|
|
|
void fn_1_3D4C(omObjData* arg0) {
|
|
s32 temp_r5;
|
|
unkDominationData3* temp_r31;
|
|
|
|
temp_r31 = arg0->data;
|
|
lbl_1_data_278[temp_r31->unk_04](arg0);
|
|
|
|
espPosSet(temp_r31->unk_18[0], temp_r31->unk_08.x, temp_r31->unk_08.y);
|
|
espPosSet(temp_r31->unk_18[1], temp_r31->unk_08.x - 18.0f, temp_r31->unk_08.y - 8.0f);
|
|
espPosSet(temp_r31->unk_18[2], temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
|
|
espPosSet(temp_r31->unk_18[3], 18.0f + temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
|
|
}
|
|
|
|
void fn_1_3E34(omObjData* arg0) {
|
|
unkDominationData3* temp_r29;
|
|
unkDominationData3* temp_r31;
|
|
|
|
arg0->func = fn_1_3D4C;
|
|
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x24, 0x10000000U);
|
|
temp_r31 = arg0->data;
|
|
temp_r31->unk_00 = arg0->work[0];
|
|
temp_r31->unk_14 = 0;
|
|
temp_r31->unk_04 = 0;
|
|
temp_r31->unk_18[0] = espEntry(0x260026, 1, 0);
|
|
temp_r31->unk_18[1] = espEntry(0x260020, 0, 0);
|
|
temp_r31->unk_18[2] = espEntry(0x260020, 0, 0);
|
|
temp_r31->unk_18[3] = espEntry(0x260020, 0, 0);
|
|
espDispOff(temp_r31->unk_18[0]);
|
|
espDispOff(temp_r31->unk_18[1]);
|
|
espDispOff(temp_r31->unk_18[2]);
|
|
espDispOff(temp_r31->unk_18[3]);
|
|
espScaleSet(temp_r31->unk_18[0], 1.8f, 1.8f);
|
|
temp_r31->unk_08.x = (f32) 0.0f;
|
|
temp_r31->unk_08.y = (f32) 0.0f;
|
|
temp_r29 = arg0->data;
|
|
temp_r29->unk_04 = 0;
|
|
temp_r29->unk_14 = 0;
|
|
}
|
|
|
|
void fn_1_3F7C(omObjData* arg0) {
|
|
s32 i;
|
|
unkDominationData3* temp_r29;
|
|
|
|
temp_r29 = arg0->data;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
espKill(temp_r29->unk_18[i]);
|
|
}
|
|
|
|
if (arg0->data) {
|
|
HuMemDirectFree(arg0->data);
|
|
}
|
|
}
|
|
|
|
void fn_1_3FF0(omObjData* arg0) {
|
|
|
|
}
|
|
|
|
void fn_1_3FF4(omObjData* arg0) {
|
|
unkDominationData3* temp_r30;
|
|
unkDominationData3* temp_r31;
|
|
|
|
temp_r31 = arg0->data;
|
|
if (temp_r31->unk_14 == 0) {
|
|
espDispOn(temp_r31->unk_18[0]);
|
|
espDispOn(temp_r31->unk_18[1]);
|
|
espDispOn(temp_r31->unk_18[2]);
|
|
espDispOn(temp_r31->unk_18[3]);
|
|
temp_r31->unk_20 = 0.0f;
|
|
}
|
|
if (temp_r31->unk_20 < 1.0f) {
|
|
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
|
|
temp_r31->unk_20 += 0.1f;
|
|
}
|
|
|
|
if (temp_r31->unk_14++ >= 0x3C) {
|
|
temp_r30 = arg0->data;
|
|
temp_r30->unk_04 = 2;
|
|
temp_r30->unk_14 = 0;
|
|
}
|
|
}
|
|
|
|
void fn_1_40F4(omObjData* arg0) {
|
|
unkDominationData3* temp_r30;
|
|
unkDominationData3* temp_r31;
|
|
|
|
temp_r31 = arg0->data;
|
|
if (temp_r31->unk_20 > 0.0f) {
|
|
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
|
|
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
|
|
temp_r31->unk_20 -= 0.05;
|
|
return;
|
|
}
|
|
espDispOff(temp_r31->unk_18[0]);
|
|
espDispOff(temp_r31->unk_18[1]);
|
|
espDispOff(temp_r31->unk_18[2]);
|
|
espDispOff(temp_r31->unk_18[3]);
|
|
temp_r30 = arg0->data;
|
|
temp_r30->unk_04 = 0;
|
|
temp_r30->unk_14 = 0;
|
|
}
|
|
|
|
f32 pad2[1] = {0.0f};
|