start m440dll
This commit is contained in:
parent
1d2b629cd8
commit
e1b79b3ef7
3 changed files with 357 additions and 1 deletions
297
src/REL/m440Dll/main.c
Normal file
297
src/REL/m440Dll/main.c
Normal file
|
|
@ -0,0 +1,297 @@
|
|||
#include "REL/m440Dll.h"
|
||||
|
||||
#include "rel_sqrt_consts.h"
|
||||
#include "math.h"
|
||||
#include "game/frand.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
// prototypes
|
||||
void fn_1_3C4(omObjData* object);
|
||||
void fn_1_434(omObjData* object);
|
||||
s32 fn_1_4A4(void);
|
||||
s32 fn_1_6C8(void);
|
||||
void fn_1_8F0(omObjData* object);
|
||||
void fn_1_AE0(omObjData* object);
|
||||
s32 fn_1_E14(omObjData* object);
|
||||
// ...
|
||||
u8 fn_1_1138(omObjData* object);
|
||||
void fn_1_2240(omObjData* object);
|
||||
u16 fn_1_23E4(s32);
|
||||
void fn_1_2428(s32, s32);
|
||||
void fn_1_2470(omObjData* object);
|
||||
void fn_1_4EEC(s32, s32);
|
||||
f32 fn_1_93C0(f32, f32, f32);
|
||||
s16 fn_1_956C(AnimData*, s32, f32, s32, s32);
|
||||
void fn_1_9AB0(s16);
|
||||
void fn_1_9B94(s16, omObjFunc);
|
||||
void fn_1_AE08(Process*);
|
||||
// object.c
|
||||
void fn_1_F168(void);
|
||||
|
||||
// bss
|
||||
omObjData* lbl_1_bss_6C;
|
||||
omObjData* lbl_1_bss_68;
|
||||
s16 lbl_1_bss_10[10];
|
||||
s16 lbl_1_bss_E;
|
||||
u8 lbl_1_bss_B;
|
||||
u8 lbl_1_bss_A;
|
||||
s16 lbl_1_bss_8;
|
||||
s16 lbl_1_bss_6;
|
||||
s16 lbl_1_bss_4;
|
||||
s8 lbl_1_bss_2;
|
||||
s8 lbl_1_bss_0;
|
||||
|
||||
// data
|
||||
Vec lbl_1_data_2C = { 800.0f, 1300.0f, 1000.0f };
|
||||
Vec lbl_1_data_38 = { 0.0f, 0.0f, 0.0f };
|
||||
GXColor lbl_1_data_44 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
Vec lbl_1_data_54 = { 1300.0f, 2500.0f, 1300.0f };
|
||||
Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f };
|
||||
Vec lbl_1_data_6C = { 0.0f, 0.0f, -500.0f };
|
||||
unkStruct lbl_1_data_78[3] = {
|
||||
{ 1450.0f, { 0.0f, 452.0f, 0.0f }, { 11.0f, -23.0f, 0.0f } },
|
||||
{ 1700.0f, { 0.0f, 315.0f, 0.0f }, { -2.0f, 0.0f, 0.0f } },
|
||||
{ 1040.0f, { 200.0f, 21.0f, 0.0f }, { -6.0f, 0.0f, 0.0f } },
|
||||
};
|
||||
|
||||
void ModuleProlog(void) {
|
||||
Vec sp8;
|
||||
LightData* var_r30;
|
||||
Process* var_r31;
|
||||
|
||||
Hu3DLightAllKill();
|
||||
lbl_1_bss_E = Hu3DGLightCreateV(&lbl_1_data_2C, &lbl_1_data_38, &lbl_1_data_44);
|
||||
Hu3DGLightInfinitytSet(lbl_1_bss_E);
|
||||
var_r30 = &Hu3DGlobalLight[lbl_1_bss_E];
|
||||
var_r30->unk_00 |= 0x8000;
|
||||
sp8.x = sp8.y = sp8.z = 0.0f;
|
||||
Hu3DGLightPosAimSetV(lbl_1_bss_E, &lbl_1_data_2C, &sp8);
|
||||
Hu3DShadowCreate(45.0f, 20.0f, 10000.0f);
|
||||
Hu3DShadowTPLvlSet(0.5f);
|
||||
Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C);
|
||||
HuAudSndGrpSet(0x42);
|
||||
var_r31 = omInitObjMan(0x32, 0x2000);
|
||||
omGameSysInit(var_r31);
|
||||
Hu3DCameraCreate(1);
|
||||
Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f);
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView);
|
||||
CRot.x = lbl_1_data_78[0].rot.x;
|
||||
CRot.y = lbl_1_data_78[0].rot.y;
|
||||
CRot.z = lbl_1_data_78[0].rot.z;
|
||||
Center.x = lbl_1_data_78[0].center.x;
|
||||
Center.y = lbl_1_data_78[0].center.y;
|
||||
Center.z = lbl_1_data_78[0].center.z;
|
||||
CZoom = lbl_1_data_78[0].zoom;
|
||||
omAddObjEx(var_r31, 0x3E8, 0, 0, -1, fn_1_3C4);
|
||||
lbl_1_bss_6C = omAddObjEx(var_r31, 10, 9, 0, -1, fn_1_8F0);
|
||||
lbl_1_bss_68 = omAddObjEx(var_r31, 50, 9, 9, -1, fn_1_2470);
|
||||
Hu3DBGColorSet(0, 0, 0);
|
||||
fn_1_AE08(var_r31);
|
||||
}
|
||||
|
||||
void fn_1_3C4(omObjData* object) {
|
||||
if ((omSysExitReq != 0) || (lbl_1_bss_0 != 0)) {
|
||||
WipeCreate(2, 0, 0x3C);
|
||||
object->func = &fn_1_434;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_434(omObjData* object) {
|
||||
if ((WipeStatGet() == 0) && (MGSeqDoneCheck() != 0)) {
|
||||
HuMemDirectFree(lbl_1_bss_64);
|
||||
fn_1_9AB0(lbl_1_bss_10[0]);
|
||||
MGSeqKillAll();
|
||||
HuAudFadeOut(1);
|
||||
omOvlReturnEx(1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
s32 fn_1_4A4(void) {
|
||||
f32 var_f31;
|
||||
unkStruct *var_r31;
|
||||
s32 var_r30;
|
||||
|
||||
var_r31 = &lbl_1_data_78[0];
|
||||
var_r30 = 0;
|
||||
lbl_1_bss_4++;
|
||||
var_f31 = lbl_1_bss_4 / 120.0f;
|
||||
if (var_f31 > 1.0f) {
|
||||
lbl_1_bss_4 = 0;
|
||||
var_f31 = 1.0f;
|
||||
var_r30 = 1;
|
||||
}
|
||||
|
||||
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
|
||||
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
|
||||
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
|
||||
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
|
||||
Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31);
|
||||
CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31);
|
||||
CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31);
|
||||
CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31);
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
s32 fn_1_6C8(void) {
|
||||
f32 var_f31;
|
||||
unkStruct *var_r31;
|
||||
s32 var_r30;
|
||||
|
||||
var_r31 = &lbl_1_data_78[1];
|
||||
var_r30 = 0;
|
||||
lbl_1_bss_4++;
|
||||
var_f31 = lbl_1_bss_4 / 120.0f;
|
||||
if (var_f31 > 1.0f) {
|
||||
lbl_1_bss_4 = 0;
|
||||
var_f31 = 1.0f;
|
||||
var_r30 = 1;
|
||||
}
|
||||
|
||||
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
|
||||
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
|
||||
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
|
||||
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
|
||||
Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31);
|
||||
CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31);
|
||||
CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31);
|
||||
CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31);
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_8F0(omObjData* arg0) {
|
||||
s16 var_r30;
|
||||
unkStruct2* temp_r31;
|
||||
AnimData *anim;
|
||||
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, 0x10000000);
|
||||
temp_r31 = (unkStruct2*)arg0->data;
|
||||
temp_r31->unk0 = 1;
|
||||
temp_r31->unk4 = -1;
|
||||
temp_r31->unk8 = -1;
|
||||
temp_r31->unk6 = 0x12C;
|
||||
temp_r31->unkA = 0;
|
||||
temp_r31->unkC = -1;
|
||||
|
||||
for (var_r30 = 1; var_r30 < 4; var_r30++) {
|
||||
lbl_1_bss_10[var_r30] = Hu3DModelCreate(HuDataSelHeapReadNum(0x47000A, 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 1);
|
||||
Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 0x40000002);
|
||||
Hu3DModelLayerSet(lbl_1_bss_10[var_r30], 7);
|
||||
Hu3DModelScaleSet(lbl_1_bss_10[var_r30], 3.0f, 3.0f, 3.0f);
|
||||
}
|
||||
|
||||
anim = HuSprAnimRead(HuDataReadNum(0x47000B, 0x10000000));
|
||||
lbl_1_bss_10[0] = fn_1_956C(anim, 0x40, 50.0f, 0x40, 0x40);
|
||||
fn_1_9B94(lbl_1_bss_10[0], &fn_1_2240);
|
||||
Hu3DModelLayerSet(lbl_1_bss_10[0], 7);
|
||||
arg0->func = &fn_1_AE0;
|
||||
}
|
||||
|
||||
void fn_1_AE0(omObjData* arg0) {
|
||||
f32 temp_f31;
|
||||
unkStruct2* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
switch (fn_1_23E4(7)) {
|
||||
case 1:
|
||||
if (lbl_1_bss_A == 0) {
|
||||
WipeCreate(1, 0, 0x3C);
|
||||
lbl_1_bss_A = 1;
|
||||
}
|
||||
if (WipeStatGet() != 0) break;
|
||||
fn_1_2428(7, 2);
|
||||
break;
|
||||
case 2:
|
||||
if (fn_1_E14(arg0) != 0) {
|
||||
fn_1_2428(7, 3);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (temp_r31->unk8 != -1) {
|
||||
MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + 0x3B) / 60));
|
||||
}
|
||||
if ((temp_r31->unkC < 0) && ((MGSeqStatGet(temp_r31->unk4) & 0x10) != 0)) {
|
||||
temp_r31->unkC = HuAudSeqPlay(0x49);
|
||||
}
|
||||
if (lbl_1_bss_2 == 0) {
|
||||
if (temp_r31->unkA != 0) {
|
||||
temp_r31->unkA++;
|
||||
temp_f31 = (((rand8() << 8) | rand8()) % 361);
|
||||
Center.x = (lbl_1_data_78[1].center.x + (10.0 * sin((M_PI * temp_f31) / 180.0)));
|
||||
Center.y = (lbl_1_data_78[1].center.y + (10.0 * cos((M_PI * temp_f31) / 180.0)));
|
||||
if (temp_r31->unkA > 0x28) {
|
||||
temp_r31->unkA = 0;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
Center.x = lbl_1_data_78[1].center.x;
|
||||
Center.y = lbl_1_data_78[1].center.y;
|
||||
Center.z = lbl_1_data_78[1].center.z;
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (fn_1_1138(arg0) != 0) {
|
||||
fn_1_2428(7, 5);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
lbl_1_bss_0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s32 fn_1_E14(omObjData* arg0) {
|
||||
f32 var_f31;
|
||||
unkStruct* var_r31;
|
||||
u8 var_r30;
|
||||
|
||||
switch (lbl_1_bss_6) {
|
||||
case 0:
|
||||
fn_1_4EEC(7, 1);
|
||||
fn_1_4EEC(0x18, 8);
|
||||
HuAudFXPlay(0x70E);
|
||||
lbl_1_bss_6++;
|
||||
break;
|
||||
case 1:
|
||||
if (++lbl_1_bss_8 > 0x1E) {
|
||||
fn_1_F168();
|
||||
lbl_1_bss_8 = 0;
|
||||
lbl_1_bss_6++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
var_r31 = lbl_1_data_78;
|
||||
var_r30 = 0;
|
||||
lbl_1_bss_4++;
|
||||
var_f31 = lbl_1_bss_4 / 120.0f;
|
||||
if (var_f31 > 1.0f) {
|
||||
lbl_1_bss_4 = 0;
|
||||
var_f31 = 1.0f;
|
||||
var_r30 = 1;
|
||||
}
|
||||
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
|
||||
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
|
||||
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
|
||||
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
|
||||
Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31);
|
||||
CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31);
|
||||
CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31);
|
||||
CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31);
|
||||
if (var_r30 != 0) {
|
||||
lbl_1_bss_8 = 0;
|
||||
lbl_1_bss_6 = 0;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -634,7 +634,7 @@ s32 fn_1_1970(s16 arg0, s32 arg1, s32 arg2, s32 arg3) {
|
|||
}
|
||||
}
|
||||
|
||||
const s32 lbl_1_rodata_18[12] = {
|
||||
static const s32 lbl_1_rodata_18[12] = {
|
||||
0x180003, 0x180004, 0x180005, 0x180006,
|
||||
0x180007, 0x180008, 0x180009, 0x18000A,
|
||||
0x18000B, 0x18000C, 0x18000D, 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue