Matched REL/m447dll
This commit is contained in:
parent
5da66370b2
commit
7a1043966e
9 changed files with 3425 additions and 168 deletions
458
src/REL/m447dll/block.c
Executable file
458
src/REL/m447dll/block.c
Executable file
|
|
@ -0,0 +1,458 @@
|
|||
#include "REL/m447dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "ext_math.h"
|
||||
|
||||
void fn_1_8F7C(void* arg0);
|
||||
void fn_1_910C(void);
|
||||
void fn_1_9158(UnkM447Struct_01* arg0);
|
||||
void fn_1_9320(UnkM447Struct_01* arg0);
|
||||
void fn_1_9374(UnkM447Struct_01* arg0);
|
||||
void fn_1_9538(UnkM447Struct_01* arg0);
|
||||
void fn_1_953C(UnkM447Struct_01* arg0);
|
||||
void fn_1_9758(UnkM447Struct_01* arg0);
|
||||
void fn_1_991C(UnkM447Struct_01* arg0);
|
||||
void fn_1_9BCC(UnkM447Struct_01* arg0);
|
||||
void fn_1_9CEC(UnkM447Struct_01* arg0);
|
||||
void fn_1_9EEC(UnkM447Struct_01* arg0);
|
||||
void fn_1_9F40(ModelData* model, ParticleData* particle, Mtx matrix);
|
||||
|
||||
u32 lbl_1_bss_B8; // Maybe part of another file with fn_1_A230 and fn_1_A240.
|
||||
UnkM447Struct_01* lbl_1_bss_A4[5];
|
||||
s32 lbl_1_bss_A0;
|
||||
|
||||
const s32 lbl_1_rodata_5F8[] = {
|
||||
DATA_MAKE_NUM(DATADIR_M447, 12),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 13),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 10),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 11),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 4),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 5),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 16),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 17),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 8),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 9),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 6),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 7),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 18),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 19),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 20),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 21),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 22),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 23),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 14),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 15)
|
||||
};
|
||||
|
||||
const float lbl_1_rodata_648[20] = {
|
||||
30.0f, 30.0f, 80.0f, 30.0f,
|
||||
80.0f, 80.0f, 60.0f, 60.0f,
|
||||
80.0f, 80.0f, 30.0f, 30.0f,
|
||||
45.0f, 45.0f, 50.0f, 50.0f,
|
||||
30.0f, 30.0f, 75.0f, 50.0f
|
||||
};
|
||||
|
||||
UnkM447Struct_01* fn_1_8DF8(void) {
|
||||
UnkM447Struct_01* temp_r3;
|
||||
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
|
||||
if (!temp_r3) {
|
||||
OSReport("M447BlockCreate ERROR...\n");
|
||||
return NULL;
|
||||
}
|
||||
temp_r3->unk04 = 0;
|
||||
temp_r3->unk00 = 0;
|
||||
temp_r3->unk08 = 0;
|
||||
temp_r3->unk0C = 0;
|
||||
temp_r3->unk10.x = 0.0f;
|
||||
temp_r3->unk10.y = 0.0f;
|
||||
temp_r3->unk10.z = 0.0f;
|
||||
temp_r3->unk40 = 0.0f;
|
||||
temp_r3->unk44 = 0.0f;
|
||||
temp_r3->unk48 = 0.0f;
|
||||
temp_r3->unk4C = 0.0f;
|
||||
temp_r3->unk50 = 0.0f;
|
||||
temp_r3->unk54 = 0.0f;
|
||||
temp_r3->unk1C.x = 0.0f;
|
||||
temp_r3->unk1C.y = 0.0f;
|
||||
temp_r3->unk1C.z = 0.0f;
|
||||
temp_r3->unk8C = 1.0f;
|
||||
fn_1_9158(temp_r3);
|
||||
temp_r3->unkA4 = HuPrcChildCreate(fn_1_910C, 105, 0x3000, 0, lbl_1_bss_4);
|
||||
temp_r3->unkA4->user_data = temp_r3;
|
||||
return temp_r3;
|
||||
}
|
||||
|
||||
void fn_1_8F7C(void* arg0) {
|
||||
fn_1_8F7C(arg0);
|
||||
HuMemDirectFree(arg0);
|
||||
}
|
||||
|
||||
void fn_1_8FF4(UnkM447Struct_01* arg0, s32 arg1) {
|
||||
arg0->unk04 = arg1;
|
||||
arg0->unk0C = 0;
|
||||
}
|
||||
|
||||
void fn_1_9004(UnkM447Struct_01* arg0, s32 arg1, s32 arg2) {
|
||||
if (lbl_1_bss_A0 != 0) {
|
||||
arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 0 : 1);
|
||||
} else {
|
||||
arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 1 : 0);
|
||||
}
|
||||
arg0->unk08 = arg2;
|
||||
arg0->unk8C = 1.0f;
|
||||
arg0->unk4C = 1.0f;
|
||||
arg0->unk50 = 1.0f;
|
||||
arg0->unk54 = 1.0f;
|
||||
Hu3DModelAttrSet(arg0->unk58[arg0->unk00], 1);
|
||||
Hu3DModelAttrSet(arg0->unk58[21], 1);
|
||||
}
|
||||
|
||||
void fn_1_90FC(s32 arg0) {
|
||||
lbl_1_bss_A0 = arg0;
|
||||
}
|
||||
|
||||
void (*lbl_1_data_294[])(UnkM447Struct_01*) = {
|
||||
fn_1_9538,
|
||||
fn_1_953C,
|
||||
fn_1_9758,
|
||||
fn_1_991C,
|
||||
fn_1_9BCC,
|
||||
fn_1_9CEC
|
||||
};
|
||||
|
||||
void fn_1_910C(void) {
|
||||
UnkM447Struct_01* temp_r31;
|
||||
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
while (TRUE) {
|
||||
lbl_1_data_294[temp_r31->unk04](temp_r31);
|
||||
fn_1_9374(temp_r31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9158(UnkM447Struct_01* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i <= 19; i++) {
|
||||
arg0->unk58[i] = Hu3DModelCreateFile(lbl_1_rodata_5F8[i]);
|
||||
Hu3DModelAttrSet(arg0->unk58[i], 2);
|
||||
Hu3DModelLayerSet(arg0->unk58[i], 7);
|
||||
}
|
||||
arg0->unk58[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 30));
|
||||
Hu3DModelLayerSet(arg0->unk58[20], 7);
|
||||
arg0->unk58[21] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 25));
|
||||
Hu3DModelLayerSet(arg0->unk58[21], 7);
|
||||
arg0->unkA0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57));
|
||||
arg0->unk58[22] = Hu3DParticleCreate(arg0->unkA0, 64);
|
||||
Hu3DParticleHookSet(arg0->unk58[22], fn_1_9F40);
|
||||
Hu3DParticleBlendModeSet(arg0->unk58[22], 1);
|
||||
Hu3DModelLayerSet(arg0->unk58[22], 6);
|
||||
Hu3DModelAttrSet(arg0->unk58[22], 1);
|
||||
for (i = 0; i <= 19; i++) {
|
||||
Hu3DModelAttrSet(arg0->unk58[i], 1);
|
||||
}
|
||||
Hu3DModelAttrReset(arg0->unk58[arg0->unk00], 1);
|
||||
Hu3DModelAttrSet(arg0->unk58[20], 1);
|
||||
Hu3DModelAttrSet(arg0->unk58[21], 1);
|
||||
for (i = 0; i <= 19; i++) {
|
||||
Hu3DModelShadowSet(arg0->unk58[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9320(UnkM447Struct_01* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 23; i++) {
|
||||
Hu3DModelKill(arg0->unk58[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9374(UnkM447Struct_01* arg0) {
|
||||
ModelData* temp_r30;
|
||||
Mtx sp8;
|
||||
|
||||
temp_r30 = &Hu3DData[arg0->unk58[arg0->unk00]];
|
||||
PSMTXIdentity(temp_r30->unk_F0);
|
||||
PSMTXRotRad(sp8, 'x', MTXDegToRad(arg0->unk1C.x));
|
||||
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
|
||||
PSMTXRotRad(sp8, 'y', MTXDegToRad(arg0->unk1C.y));
|
||||
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
|
||||
PSMTXRotRad(sp8, 'z', MTXDegToRad(arg0->unk1C.z));
|
||||
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
|
||||
Hu3DModelPosSet(arg0->unk58[arg0->unk00], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z);
|
||||
Hu3DModelPosSet(arg0->unk58[20], arg0->unk10.x, arg0->unk10.y - 100.0f, arg0->unk10.z);
|
||||
Hu3DModelPosSet(arg0->unk58[21], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z + 120.0f * arg0->unk54);
|
||||
Hu3DModelRotSet(arg0->unk58[arg0->unk00], arg0->unk40, arg0->unk44, arg0->unk48);
|
||||
Hu3DModelScaleSet(arg0->unk58[arg0->unk00], arg0->unk4C, arg0->unk50, arg0->unk54);
|
||||
Hu3DModelScaleSet(arg0->unk58[21], arg0->unk4C, arg0->unk50, arg0->unk54);
|
||||
Hu3DModelTPLvlSet(arg0->unk58[arg0->unk00], arg0->unk8C);
|
||||
}
|
||||
|
||||
void fn_1_9538(UnkM447Struct_01* arg0) {
|
||||
}
|
||||
|
||||
void fn_1_953C(UnkM447Struct_01* arg0) {
|
||||
float temp_f31;
|
||||
|
||||
switch (arg0->unk0C) {
|
||||
case 0:
|
||||
arg0->unk90 = 0.0f;
|
||||
arg0->unk98 = 0.016666668f;
|
||||
arg0->unk10.y = -100.0f;
|
||||
arg0->unk44 = 0.0f;
|
||||
arg0->unk4C = 0.0f;
|
||||
arg0->unk50 = 0.0f;
|
||||
arg0->unk54 = 0.0f;
|
||||
arg0->unk88 = -50.0f;
|
||||
Hu3DModelAttrReset(arg0->unk58[arg0->unk00], 1);
|
||||
arg0->unk0C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
arg0->unk44 += arg0->unk88;
|
||||
temp_f31 = sind(90.0f * arg0->unk90);
|
||||
arg0->unk10.y = -100.0f + 500.0f * temp_f31;
|
||||
arg0->unk4C = arg0->unk90;
|
||||
arg0->unk50 = arg0->unk90;
|
||||
arg0->unk54 = arg0->unk90;
|
||||
arg0->unk8C = temp_f31;
|
||||
arg0->unk90 += arg0->unk98;
|
||||
if (arg0->unk90 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10.y = 400.0f;
|
||||
arg0->unk4C = 1.0f;
|
||||
arg0->unk50 = 1.0f;
|
||||
arg0->unk54 = 1.0f;
|
||||
arg0->unk8C = 1.0f;
|
||||
arg0->unk0C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
fn_1_8FF4(arg0, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9758(UnkM447Struct_01* arg0) {
|
||||
float temp_f31;
|
||||
|
||||
switch (arg0->unk0C) {
|
||||
case 0:
|
||||
arg0->unk90 = 0.1f * (fn_1_A240() % 10);
|
||||
arg0->unk98 = 0.011111111f;
|
||||
arg0->unk0C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
if (arg0->unk88 < -8.0f) {
|
||||
arg0->unk88 += 0.05f;
|
||||
}
|
||||
temp_f31 = sind(180.0f * arg0->unk90);
|
||||
temp_f31 *= temp_f31;
|
||||
arg0->unk10.y = 400.0f + temp_f31 * 25.0f;
|
||||
arg0->unk44 += arg0->unk88;
|
||||
arg0->unk90 += arg0->unk98;
|
||||
if (arg0->unk90 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
arg0->unk90 = 0.0f;
|
||||
break;
|
||||
case 2:
|
||||
fn_1_8FF4(arg0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_991C(UnkM447Struct_01* arg0) {
|
||||
float temp_f31;
|
||||
|
||||
switch (arg0->unk0C) {
|
||||
case 0:
|
||||
arg0->unk90 = 0.0f;
|
||||
arg0->unk98 = 0.5f;
|
||||
arg0->unk94 = 0.0f;
|
||||
arg0->unk9C = 0.05f;
|
||||
arg0->unk8C = 1.0f;
|
||||
arg0->unk10.y = 400.0f;
|
||||
arg0->unk28 = arg0->unk1C;
|
||||
arg0->unk34 = 0.0f;
|
||||
arg0->unk38 = arg0->unk1C.y;
|
||||
arg0->unk3C = 0.0f;
|
||||
arg0->unk0C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
temp_f31 = arg0->unk94;
|
||||
arg0->unk1C.x = arg0->unk28.x + temp_f31 * (arg0->unk34 - arg0->unk28.x);
|
||||
arg0->unk1C.y = arg0->unk28.y + temp_f31 * (arg0->unk38 - arg0->unk28.y);
|
||||
arg0->unk1C.z = arg0->unk28.z + temp_f31 * (arg0->unk3C - arg0->unk28.z);
|
||||
if (arg0->unk94 < 1.0f) {
|
||||
arg0->unk94 += arg0->unk9C;
|
||||
if (arg0->unk94 > 1.0f) {
|
||||
arg0->unk94 = 1.0f;
|
||||
}
|
||||
}
|
||||
temp_f31 = arg0->unk90;
|
||||
arg0->unk10.y = 400.0 + 50.0f * temp_f31 * sind(90) - 4.9f * temp_f31 * temp_f31;
|
||||
arg0->unk90 += arg0->unk98;
|
||||
if (arg0->unk10.y >= lbl_1_rodata_648[arg0->unk00]) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10.y = lbl_1_rodata_648[arg0->unk00];
|
||||
HuAudFXPlay(0x785);
|
||||
fn_1_1FEC(lbl_1_bss_10, 30);
|
||||
arg0->unk0C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
Hu3DModelAttrReset(arg0->unk58[20], 1);
|
||||
Hu3DMotionTimeSet(arg0->unk58[20], 0.0f);
|
||||
fn_1_8FF4(arg0, 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9BCC(UnkM447Struct_01* arg0) {
|
||||
switch (arg0->unk0C) {
|
||||
case 0:
|
||||
arg0->unk90 = 0.0f;
|
||||
arg0->unk98 = 0.016666668f;
|
||||
arg0->unk0C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
arg0->unk8C = 1.0 - sind(90.0f * arg0->unk90);
|
||||
arg0->unk90 += arg0->unk98;
|
||||
if (arg0->unk90 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
arg0->unk0C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
Hu3DModelAttrSet(arg0->unk58[arg0->unk00], 1);
|
||||
fn_1_8FF4(arg0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9CEC(UnkM447Struct_01* arg0) {
|
||||
float temp_f31;
|
||||
|
||||
switch (arg0->unk0C) {
|
||||
case 0:
|
||||
arg0->unk90 = 0.0f;
|
||||
arg0->unk98 = 0.008333334f;
|
||||
Hu3DModelAttrReset(arg0->unk58[21], 1);
|
||||
Hu3DMotionTimeSet(arg0->unk58[21], 0.0f);
|
||||
Hu3DModelAttrSet(arg0->unk58[21], 0x40000001);
|
||||
arg0->unkA8 = arg0->unk10;
|
||||
arg0->unkB4 = 0.0f;
|
||||
arg0->unkB8 = 200.0f;
|
||||
arg0->unkBC = -700.0f - arg0->unk10.z / 2;
|
||||
arg0->unkC0 = 0.0f;
|
||||
arg0->unkC4 = 400.0f;
|
||||
arg0->unkC8 = -700.0f;
|
||||
fn_1_9EEC(arg0);
|
||||
HuAudFXPlay(0x781);
|
||||
arg0->unk0C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
temp_f31 = arg0->unk90;
|
||||
arg0->unk4C = 1.0f - temp_f31;
|
||||
arg0->unk50 = 1.0f - temp_f31;
|
||||
arg0->unk54 = 1.0f - temp_f31;
|
||||
fn_1_7B54(&arg0->unk10, &arg0->unkA8, 3, temp_f31);
|
||||
arg0->unk90 += arg0->unk98;
|
||||
if (arg0->unk90 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
arg0->unk0C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
fn_1_1EB0(lbl_1_bss_10, 2);
|
||||
fn_1_8FF4(arg0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9EEC(UnkM447Struct_01* arg0) {
|
||||
ModelData* temp_r30;
|
||||
ParticleData* temp_r31;
|
||||
|
||||
temp_r30 = &Hu3DData[arg0->unk58[22]];
|
||||
temp_r31 = temp_r30->unk_120;
|
||||
temp_r30->attr &= ~1;
|
||||
temp_r31->unk_00 = 0;
|
||||
temp_r31->unk_02 = 1;
|
||||
temp_r31->unk_1C = arg0;
|
||||
}
|
||||
|
||||
void fn_1_9F40(ModelData* model, ParticleData* particle, Mtx matrix) {
|
||||
GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
UnkM447Struct_01* temp_r29;
|
||||
HsfanimStruct01* var_r31;
|
||||
s32 var_r27;
|
||||
s32 i;
|
||||
|
||||
if (particle->unk_02 == 0) {
|
||||
return;
|
||||
}
|
||||
temp_r29 = particle->unk_1C;
|
||||
if (particle->unk_00 == 0) {
|
||||
particle->unk_00 = 1;
|
||||
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk00_s16 = i * 5;
|
||||
var_r31->unk02 = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
var_r31->unk40.r = sp8.r;
|
||||
var_r31->unk40.g = sp8.g;
|
||||
var_r31->unk40.b = sp8.b;
|
||||
var_r31->unk40.a = sp8.a;
|
||||
}
|
||||
}
|
||||
for (i = 0, var_r27 = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk00_s16 > 0 && --var_r31->unk00_s16 > 0) {
|
||||
continue;
|
||||
}
|
||||
if (var_r31->unk02 == 0 && temp_r29->unk04 == 5 && temp_r29->unk10.z > -700.0f) {
|
||||
var_r31->unk34.x = temp_r29->unk10.x;
|
||||
var_r31->unk34.y = temp_r29->unk10.y;
|
||||
var_r31->unk34.z = temp_r29->unk10.z;
|
||||
var_r31->unk2C = 20.0f;
|
||||
var_r31->unk02 = 1;
|
||||
} else if (var_r31->unk02 == 1) {
|
||||
var_r31->unk34.y -= 1.0f;
|
||||
var_r31->unk34.z += 3.0f;
|
||||
var_r31->unk2C = 20.0f + fn_1_A240() % 60;
|
||||
if (var_r31->unk40.a > 10) {
|
||||
var_r31->unk40.a -= 4;
|
||||
} else {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk02 = 2;
|
||||
}
|
||||
} else {
|
||||
var_r27++;
|
||||
}
|
||||
}
|
||||
if (var_r27 == particle->unk_30) {
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
OSReport("*****************************************************\n");
|
||||
particle->unk_02 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A230(s32 arg0) {
|
||||
lbl_1_bss_B8 = arg0;
|
||||
}
|
||||
|
||||
s32 fn_1_A240(void) {
|
||||
return ((lbl_1_bss_B8 = lbl_1_bss_B8 * 0x41C64E6D + 0x3039) >> 16) % (1 << 15);
|
||||
}
|
||||
151
src/REL/m447dll/camera.c
Executable file
151
src/REL/m447dll/camera.c
Executable file
|
|
@ -0,0 +1,151 @@
|
|||
#include "REL/m447dll.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/process.h"
|
||||
|
||||
#include "ext_math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec unk00;
|
||||
/* 0x0C */ Vec unk0C;
|
||||
/* 0x18 */ float unk18;
|
||||
} UnkM447Struct_05; // Size 0x1C
|
||||
|
||||
void fn_1_3564(void);
|
||||
void fn_1_3C7C(void);
|
||||
void fn_1_3EA8(void);
|
||||
|
||||
Process* lbl_1_bss_90;
|
||||
UnkM447Struct_05 lbl_1_bss_74;
|
||||
UnkM447Struct_05 lbl_1_bss_58;
|
||||
UnkM447Struct_05 lbl_1_bss_3C;
|
||||
s32 lbl_1_bss_38;
|
||||
s32 lbl_1_bss_34;
|
||||
s32 lbl_1_bss_30;
|
||||
float lbl_1_bss_2C;
|
||||
float lbl_1_bss_28;
|
||||
float lbl_1_bss_24;
|
||||
float lbl_1_bss_20;
|
||||
float lbl_1_bss_1C;
|
||||
float lbl_1_bss_18;
|
||||
|
||||
s32 fn_1_3130(void) {
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
Hu3DCameraPerspectiveSet(1, 55.0f, 10.0f, 8000.0f, 1.2f);
|
||||
lbl_1_bss_74.unk00.x = 0.0f;
|
||||
lbl_1_bss_74.unk00.y = 400.0f;
|
||||
lbl_1_bss_74.unk00.z = 0.0f;
|
||||
lbl_1_bss_74.unk0C.x = 0.0f;
|
||||
lbl_1_bss_74.unk0C.y = 0.0f;
|
||||
lbl_1_bss_74.unk0C.z = 0.0f;
|
||||
lbl_1_bss_74.unk18 = 200.0f;
|
||||
lbl_1_bss_38 = 0;
|
||||
lbl_1_bss_34 = 0;
|
||||
lbl_1_bss_30 = 0;
|
||||
lbl_1_bss_90 = HuPrcChildCreate(fn_1_3564, 100, 0x2000, 0, lbl_1_bss_4);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void fn_1_32E0(void) {
|
||||
HuPrcKill(lbl_1_bss_90);
|
||||
}
|
||||
|
||||
void fn_1_330C(const Vec* arg0, s32 arg1) {
|
||||
lbl_1_bss_3C.unk00 = *arg0;
|
||||
lbl_1_bss_58.unk00 = lbl_1_bss_74.unk00;
|
||||
lbl_1_bss_2C = 0.0f;
|
||||
lbl_1_bss_20 = 1.0f / arg1;
|
||||
lbl_1_bss_38 = 1;
|
||||
}
|
||||
|
||||
void fn_1_33C8(const Vec* arg0, s32 arg1) {
|
||||
lbl_1_bss_3C.unk0C = *arg0;
|
||||
lbl_1_bss_58.unk0C = lbl_1_bss_74.unk0C;
|
||||
lbl_1_bss_28 = 0.0f;
|
||||
lbl_1_bss_1C = 1.0f / arg1;
|
||||
lbl_1_bss_34 = 1;
|
||||
}
|
||||
|
||||
void fn_1_3484(float arg0, s32 arg1) {
|
||||
lbl_1_bss_3C.unk18 = arg0;
|
||||
lbl_1_bss_58.unk18 = lbl_1_bss_74.unk18;
|
||||
lbl_1_bss_24 = 0.0f;
|
||||
lbl_1_bss_18 = 1.0f / arg1;
|
||||
lbl_1_bss_30 = 1;
|
||||
}
|
||||
|
||||
void fn_1_351C(Vec* arg0) {
|
||||
*arg0 = lbl_1_bss_74.unk00;
|
||||
}
|
||||
|
||||
void fn_1_3540(Vec* arg0) {
|
||||
lbl_1_bss_74.unk00 = *arg0;
|
||||
}
|
||||
|
||||
void fn_1_3564(void) {
|
||||
Vec sp28;
|
||||
Vec sp1C;
|
||||
Vec sp10;
|
||||
float temp_f31;
|
||||
|
||||
while (TRUE) {
|
||||
if (lbl_1_bss_38 != 0) {
|
||||
temp_f31 = sind(90.0f * lbl_1_bss_2C);
|
||||
temp_f31 *= temp_f31;
|
||||
lbl_1_bss_74.unk00.x = lbl_1_bss_58.unk00.x + temp_f31 * (lbl_1_bss_3C.unk00.x - lbl_1_bss_58.unk00.x);
|
||||
lbl_1_bss_74.unk00.y = lbl_1_bss_58.unk00.y + temp_f31 * (lbl_1_bss_3C.unk00.y - lbl_1_bss_58.unk00.y);
|
||||
lbl_1_bss_74.unk00.z = lbl_1_bss_58.unk00.z + temp_f31 * (lbl_1_bss_3C.unk00.z - lbl_1_bss_58.unk00.z);
|
||||
if ((lbl_1_bss_2C += lbl_1_bss_20) >= 1.0f) {
|
||||
lbl_1_bss_74.unk00 = lbl_1_bss_3C.unk00;
|
||||
lbl_1_bss_38 = 0;
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_34 != 0) {
|
||||
temp_f31 = sind(90.0f * lbl_1_bss_28);
|
||||
temp_f31 *= temp_f31;
|
||||
lbl_1_bss_74.unk0C.x = lbl_1_bss_58.unk0C.x + temp_f31 * (lbl_1_bss_3C.unk0C.x - lbl_1_bss_58.unk0C.x);
|
||||
lbl_1_bss_74.unk0C.y = lbl_1_bss_58.unk0C.y + temp_f31 * (lbl_1_bss_3C.unk0C.y - lbl_1_bss_58.unk0C.y);
|
||||
lbl_1_bss_74.unk0C.z = lbl_1_bss_58.unk0C.z + temp_f31 * (lbl_1_bss_3C.unk0C.z - lbl_1_bss_58.unk0C.z);
|
||||
if ((lbl_1_bss_28 += lbl_1_bss_1C) >= 1.0f) {
|
||||
lbl_1_bss_74.unk0C = lbl_1_bss_3C.unk0C;
|
||||
lbl_1_bss_34 = 0;
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_30 != 0) {
|
||||
temp_f31 = sind(90.0f * lbl_1_bss_24);
|
||||
temp_f31 *= temp_f31;
|
||||
lbl_1_bss_74.unk18 = lbl_1_bss_58.unk18 + temp_f31 * (lbl_1_bss_3C.unk18 - lbl_1_bss_58.unk18);
|
||||
if ((lbl_1_bss_24 += lbl_1_bss_18) >= 1.0f) {
|
||||
lbl_1_bss_74.unk18 = lbl_1_bss_3C.unk18;
|
||||
lbl_1_bss_30 = 0;
|
||||
}
|
||||
}
|
||||
sp28.x = lbl_1_bss_74.unk00.x + sind(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
|
||||
sp28.y = lbl_1_bss_74.unk00.y + -sind(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
|
||||
sp28.z = lbl_1_bss_74.unk00.z + cosd(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
|
||||
sp10.x = sind(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x);
|
||||
sp10.y = cosd(lbl_1_bss_74.unk0C.x);
|
||||
sp10.z = cosd(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x);
|
||||
sp1C = lbl_1_bss_74.unk00;
|
||||
Hu3DCameraPosSet(1, sp28.x, sp28.y, sp28.z, sp10.x, sp10.y, sp10.z, sp1C.x, sp1C.y, sp1C.z);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3C7C(void) {
|
||||
if (HuPadBtn[0] & 4) {
|
||||
lbl_1_bss_74.unk00.x += 0.02f * HuPadStkX[0];
|
||||
lbl_1_bss_74.unk00.y += 0.02f * HuPadStkY[0];
|
||||
lbl_1_bss_74.unk0C.y -= 0.02f * HuPadSubStkX[0];
|
||||
lbl_1_bss_74.unk0C.x += 0.02f * HuPadSubStkY[0];
|
||||
lbl_1_bss_74.unk18 += 0.02f * HuPadTrigL[0];
|
||||
lbl_1_bss_74.unk18 -= 0.02f * HuPadTrigR[0];
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3EA8(void) {
|
||||
print8(32, 132, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk00.x, lbl_1_bss_74.unk00.y, lbl_1_bss_74.unk00.z);
|
||||
print8(32, 148, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk0C.x, lbl_1_bss_74.unk0C.y, lbl_1_bss_74.unk0C.z);
|
||||
print8(32, 164, 1.5f, "ZOOM : x=%.2f", lbl_1_bss_74.unk18);
|
||||
}
|
||||
713
src/REL/m447dll/main.c
Executable file
713
src/REL/m447dll/main.c
Executable file
|
|
@ -0,0 +1,713 @@
|
|||
#include "REL/m447dll.h"
|
||||
#include "REL/executor.h"
|
||||
#include "game/esprite.h"
|
||||
#include "game/frand.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/window.h"
|
||||
#include "game/wipe.h"
|
||||
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk00;
|
||||
/* 0x02 */ char unk02[2];
|
||||
/* 0x04 */ float unk04;
|
||||
/* 0x08 */ float unk08;
|
||||
} UnkM447Struct_03; // Size 0xC
|
||||
|
||||
void fn_1_12C(void);
|
||||
UnkM447Struct_00* fn_1_1B8(void);
|
||||
void fn_1_43C(UnkM447Struct_00* arg0);
|
||||
BOOL fn_1_490(UnkM447Struct_00* arg0);
|
||||
void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1);
|
||||
void fn_1_4B0(void);
|
||||
void fn_1_544(UnkM447Struct_00* arg0);
|
||||
void fn_1_7A8(UnkM447Struct_00* arg0);
|
||||
void fn_1_B5C(UnkM447Struct_00* arg0);
|
||||
void fn_1_F34(UnkM447Struct_00* arg0);
|
||||
void fn_1_1068(UnkM447Struct_00* arg0);
|
||||
void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2);
|
||||
s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4);
|
||||
void fn_1_1484(void);
|
||||
void fn_1_1754(UnkM447Struct_00* arg0);
|
||||
void fn_1_1830(UnkM447Struct_00* arg0);
|
||||
void fn_1_1884(UnkM447Struct_00* arg0);
|
||||
void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2);
|
||||
void fn_1_1BF8(void);
|
||||
void fn_1_1CE0(UnkM447Struct_00* arg0);
|
||||
void fn_1_1D34(UnkM447Struct_00* arg0);
|
||||
|
||||
UnkM447Struct_06* lbl_1_bss_10;
|
||||
char lbl_1_bss_C_pad[4];
|
||||
UnkM447Struct_00* lbl_1_bss_8;
|
||||
Process* lbl_1_bss_4;
|
||||
Process* lbl_1_bss_0;
|
||||
|
||||
const s32 lbl_1_rodata_10[] = {
|
||||
DATA_MAKE_NUM(DATADIR_M447, 53),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 53),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 54),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 54),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 55),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 56),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 44),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 45),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 46),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 47),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 48),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 49),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 50),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 51),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 52)
|
||||
};
|
||||
|
||||
void ObjectSetup(void) {
|
||||
lbl_1_bss_4 = omInitObjMan(10, 0x2000);
|
||||
omGameSysInit(lbl_1_bss_4);
|
||||
HuWinInit(1);
|
||||
lbl_1_bss_0 = HuPrcChildCreate(fn_1_12C, 1000, 0x2000, 0, lbl_1_bss_4);
|
||||
lbl_1_bss_8 = fn_1_1B8();
|
||||
}
|
||||
|
||||
void fn_1_12C(void) {
|
||||
while (omSysExitReq == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
||||
while (WipeStatGet() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuAudFadeOut(100);
|
||||
fn_1_43C(lbl_1_bss_8);
|
||||
HuPrcVSleep();
|
||||
omOvlReturnEx(1, 1);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
UnkM447Struct_00* fn_1_1B8(void) {
|
||||
Vec sp2C;
|
||||
Vec sp20 = { 0.0f, 3000.0f, 1.0f };
|
||||
Vec sp14 = { 0.0f, 1.0f, 0.0f };
|
||||
Vec sp8 = { 0.0f, 0.0f, 0.0f };
|
||||
UnkM447Struct_00* temp_r3;
|
||||
s32 i;
|
||||
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
|
||||
if (!temp_r3) {
|
||||
OSReport("M447FlowCreate ERROR...\n");
|
||||
return NULL;
|
||||
}
|
||||
Hu3DShadowCreate(30.0f, 20.0f, 5000.0f);
|
||||
Hu3DShadowTPLvlSet(0.45f);
|
||||
Hu3DShadowPosSet(&sp20, &sp14, &sp8);
|
||||
fn_1_A230(frand());
|
||||
temp_r3->unk08 = 0;
|
||||
fn_1_3130();
|
||||
lbl_1_bss_10 = fn_1_1D90();
|
||||
sp2C.x = 0.0f;
|
||||
sp2C.y = -1000.0f;
|
||||
sp2C.z = 0.0f;
|
||||
for (i = 0; i < 5; i++) {
|
||||
lbl_1_bss_A4[i] = fn_1_8DF8();
|
||||
lbl_1_bss_A4[i]->unk10 = sp2C;
|
||||
}
|
||||
fn_1_3F84();
|
||||
for (i = 0; i < 2; i++) {
|
||||
lbl_1_bss_98[i] = fn_1_3FC4(i);
|
||||
}
|
||||
fn_1_1D34(temp_r3);
|
||||
fn_1_1754(temp_r3);
|
||||
temp_r3->unk14 = 0;
|
||||
temp_r3->unk1C = 0;
|
||||
temp_r3->unk24 = 0;
|
||||
temp_r3->unk28 = 0;
|
||||
temp_r3->unk2C = 0;
|
||||
temp_r3->unk10 = 0;
|
||||
temp_r3->unk70 = -1;
|
||||
temp_r3->unk30 = -1;
|
||||
temp_r3->unk32 = -1;
|
||||
temp_r3->unk00 = HuPrcChildCreate(fn_1_4B0, 100, 0x4000, 0, lbl_1_bss_4);
|
||||
temp_r3->unk00->user_data = temp_r3;
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
||||
return temp_r3;
|
||||
}
|
||||
|
||||
void fn_1_43C(UnkM447Struct_00* arg0) {
|
||||
fn_1_1830(arg0);
|
||||
fn_1_1E70(lbl_1_bss_10);
|
||||
fn_1_32E0();
|
||||
HuPrcKill(arg0->unk00);
|
||||
HuMemDirectFree(arg0);
|
||||
}
|
||||
|
||||
BOOL fn_1_490(UnkM447Struct_00* arg0) {
|
||||
return arg0->unk08 == 0;
|
||||
}
|
||||
|
||||
void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1) {
|
||||
arg0->unk14 = arg1;
|
||||
arg0->unk1C = 0;
|
||||
}
|
||||
|
||||
void (*lbl_1_data_1C[])(UnkM447Struct_00*) = {
|
||||
fn_1_544,
|
||||
fn_1_7A8,
|
||||
fn_1_B5C,
|
||||
fn_1_F34,
|
||||
fn_1_1068
|
||||
};
|
||||
|
||||
void fn_1_4B0(void) {
|
||||
UnkM447Struct_00* temp_r31;
|
||||
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
while (omSysExitReq == 0 || !fn_1_490(temp_r31)) {
|
||||
lbl_1_data_1C[temp_r31->unk14](temp_r31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
omSysExitReq = 1;
|
||||
temp_r31->unk08 = 1;
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
const Vec lbl_1_rodata_B0[2] = {
|
||||
{ 0.0f, 300.0f, 0.0f },
|
||||
{ -0.12f, 176.0f, 0.0f }
|
||||
};
|
||||
|
||||
void fn_1_544(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk1C) {
|
||||
case 0:
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 1;
|
||||
break;
|
||||
case 1:
|
||||
WipeStatGet();
|
||||
arg0->unk1C = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (arg0->unk20++ >= 60) {
|
||||
arg0->unk1C = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
fn_1_1EB0(lbl_1_bss_10, 1);
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 4;
|
||||
break;
|
||||
case 4:
|
||||
if (!fn_1_1EC0(lbl_1_bss_10)) {
|
||||
arg0->unk1C = 5;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (lbl_1_bss_98[1]->unk18 == 8) {
|
||||
arg0->unk70 = HuAudSeqPlay(0x3D);
|
||||
}
|
||||
fn_1_3484(860.0f, 60);
|
||||
fn_1_330C(&lbl_1_rodata_B0[1], 60);
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 6;
|
||||
break;
|
||||
case 6:
|
||||
if (arg0->unk20++ >= 60) {
|
||||
if (lbl_1_bss_98[1]->unk18 == 8) {
|
||||
arg0->unk1C = 7;
|
||||
} else {
|
||||
arg0->unk1C = 9;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
arg0->unk04 = HuPrcChildCreate(fn_1_1484, 100, 0x2000, 0, lbl_1_bss_4);
|
||||
arg0->unk04->user_data = arg0;
|
||||
arg0->unk0C = 1;
|
||||
arg0->unk1C = 8;
|
||||
break;
|
||||
case 8:
|
||||
if (arg0->unk0C != 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk04 = NULL;
|
||||
arg0->unk1C = 9;
|
||||
/* fallthrough */
|
||||
case 9:
|
||||
if (arg0->unk70 != -1) {
|
||||
HuAudSeqFadeOut(arg0->unk70, 1000);
|
||||
}
|
||||
fn_1_3484(1150.0f, 60);
|
||||
fn_1_330C(&lbl_1_rodata_B0[0], 60);
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_43CC(lbl_1_bss_98[i], 6);
|
||||
}
|
||||
fn_1_4A0(arg0, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_7A8(UnkM447Struct_00* arg0) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s32 temp_r29;
|
||||
s32 temp_r28;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk1C) {
|
||||
case 0:
|
||||
arg0->unk1C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
fn_1_1EB0(lbl_1_bss_10, 3);
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if (arg0->unk20++ < 110) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
fn_1_90FC(fn_1_A240() % 10 > 5);
|
||||
temp_r29 = arg0->unk2C * 2 + fn_1_A240() % 2;
|
||||
temp_r28 = fn_1_A240() % 5;
|
||||
for (i = 0; i < 5; i++) {
|
||||
fn_1_9004(lbl_1_bss_A4[i], temp_r29, temp_r28 == i);
|
||||
fn_1_1ED4(i, &sp8);
|
||||
lbl_1_bss_A4[i]->unk10 = sp8;
|
||||
sp14.x = fn_1_A240() % 360;
|
||||
sp14.y = 0.0f;
|
||||
sp14.z = fn_1_A240() % 360;
|
||||
lbl_1_bss_A4[i]->unk1C = sp14;
|
||||
fn_1_8FF4(lbl_1_bss_A4[i], 1);
|
||||
}
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 4;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
if (arg0->unk20++ < 60) {
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
fn_1_8FF4(lbl_1_bss_A4[i], 2);
|
||||
}
|
||||
/* fallthrough */
|
||||
arg0->unk1C = 5;
|
||||
case 5:
|
||||
fn_1_1EB0(lbl_1_bss_10, 4);
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 6;
|
||||
/* fallthrough */
|
||||
case 6:
|
||||
if (!fn_1_1EC0(lbl_1_bss_10)) {
|
||||
if (arg0->unk10 != 0) {
|
||||
arg0->unk1C = 9;
|
||||
} else {
|
||||
arg0->unk1C = 7;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
arg0->unk70 = HuAudSeqPlay(0x3E);
|
||||
arg0->unk30 = MGSeqStartCreate();
|
||||
arg0->unk1C = 8;
|
||||
/* fallthrough */
|
||||
case 8:
|
||||
if (MGSeqStatGet(arg0->unk30) != 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10 = 1;
|
||||
arg0->unk1C = 9;
|
||||
/* fallthrough */
|
||||
case 9:
|
||||
fn_1_4A0(arg0, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_B5C(UnkM447Struct_00* arg0) {
|
||||
s32 temp_r26;
|
||||
s32 var_r27;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk1C) {
|
||||
case 0:
|
||||
fn_1_1884(arg0);
|
||||
arg0->unk24 = 900;
|
||||
arg0->unk32 = MGSeqCreate(1, arg0->unk24 / 60, -1, -1);
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_43CC(lbl_1_bss_98[i], 1);
|
||||
lbl_1_bss_98[i]->unk04 = 1;
|
||||
}
|
||||
arg0->unk1C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
temp_r26 = fn_1_1F9C(lbl_1_bss_10);
|
||||
if (arg0->unk24 > 0 && temp_r26 > 0 && --arg0->unk24 % 60 == 0) {
|
||||
MGSeqParamSet(arg0->unk32, 1, arg0->unk24 / 60);
|
||||
}
|
||||
if (arg0->unk24 > 0 && temp_r26 > 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
for (i = 0; i < 2; i++) {
|
||||
lbl_1_bss_98[i]->unk04 = 0;
|
||||
fn_1_7A6C(lbl_1_bss_98[i]);
|
||||
}
|
||||
arg0->unk1C = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (arg0->unk32 != -1) {
|
||||
MGSeqParamSet(arg0->unk32, 2, -1);
|
||||
arg0->unk32 = -1;
|
||||
}
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (lbl_1_bss_98[i]->unk24 != 1 && lbl_1_bss_98[i]->unk24 != 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (lbl_1_bss_A4[i]->unk04 != 0 && lbl_1_bss_A4[i]->unk04 != 2) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
arg0->unk1C = 4;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (lbl_1_bss_98[i]->unk14 != 0) {
|
||||
fn_1_1AFC(arg0, i, lbl_1_bss_98[i]->unk1B - 1);
|
||||
}
|
||||
}
|
||||
arg0->unk2C++;
|
||||
for (i = 0, var_r27 = 0; i < 2; i++) {
|
||||
if (lbl_1_bss_98[i]->unk1B > var_r27) {
|
||||
var_r27 = lbl_1_bss_98[i]->unk1B;
|
||||
}
|
||||
}
|
||||
if (var_r27 >= 3 || arg0->unk2C >= 5) {
|
||||
fn_1_4A0(lbl_1_bss_8, 4);
|
||||
} else {
|
||||
fn_1_4A0(lbl_1_bss_8, 3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_F34(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk1C) {
|
||||
case 0:
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_43CC(lbl_1_bss_98[i], 6);
|
||||
}
|
||||
arg0->unk1C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (lbl_1_bss_A4[i]->unk04 != 0) {
|
||||
fn_1_8FF4(lbl_1_bss_A4[i], 4);
|
||||
}
|
||||
}
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if (arg0->unk20++ < 160) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
fn_1_4A0(lbl_1_bss_8, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const Vec lbl_1_rodata_D8 = { 0.0f, 150.0f, 0.0f };
|
||||
const Vec lbl_1_rodata_E4 = { 6.0f, 0.0f, 0.0f };
|
||||
|
||||
void fn_1_1068(UnkM447Struct_00* arg0) {
|
||||
s32 temp_r29;
|
||||
s32 temp_r28;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk1C) {
|
||||
case 0:
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (lbl_1_bss_A4[i]->unk04 != 0) {
|
||||
fn_1_8FF4(lbl_1_bss_A4[i], 4);
|
||||
}
|
||||
}
|
||||
arg0->unk1C = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
// Bug: HuAudSeqFadeOut takes two arguments.
|
||||
HuAudSeqFadeOut(arg0->unk70);
|
||||
arg0->unk30 = MGSeqCreate(3, 1);
|
||||
arg0->unk1C = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if (MGSeqStatGet(arg0->unk30) != 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_43CC(lbl_1_bss_98[i], 7);
|
||||
}
|
||||
fn_1_330C(&lbl_1_rodata_D8, 180);
|
||||
fn_1_3484(300.0f, 180);
|
||||
fn_1_33C8(&lbl_1_rodata_E4, 180);
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 4;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
if (arg0->unk20++ < 180) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 5;
|
||||
/* fallthrough */
|
||||
case 5:
|
||||
temp_r29 = lbl_1_bss_98[0]->unk1B;
|
||||
temp_r28 = lbl_1_bss_98[1]->unk1B;
|
||||
if (lbl_1_bss_98[1]->unk18 != 8 && temp_r29 == temp_r28) {
|
||||
fn_1_43CC(lbl_1_bss_98[0], 10);
|
||||
fn_1_43CC(lbl_1_bss_98[1], 10);
|
||||
HuAudSStreamPlay(4);
|
||||
} else if (temp_r29 > temp_r28) {
|
||||
fn_1_43CC(lbl_1_bss_98[0], 9);
|
||||
fn_1_43CC(lbl_1_bss_98[1], 10);
|
||||
GWPlayerCoinWinAdd(0, 10);
|
||||
HuAudSStreamPlay(1);
|
||||
} else {
|
||||
fn_1_43CC(lbl_1_bss_98[0], 10);
|
||||
fn_1_43CC(lbl_1_bss_98[1], 9);
|
||||
GWPlayerCoinWinAdd(1, 10);
|
||||
if (lbl_1_bss_98[1]->unk18 == 8) {
|
||||
HuAudSStreamPlay(3);
|
||||
} else {
|
||||
HuAudSStreamPlay(1);
|
||||
}
|
||||
}
|
||||
arg0->unk20 = 0;
|
||||
arg0->unk1C = 6;
|
||||
/* fallthrough */
|
||||
case 6:
|
||||
if (arg0->unk20++ < 210) {
|
||||
break;
|
||||
}
|
||||
arg0->unk1C = 7;
|
||||
/* fallthrough */
|
||||
case 7:
|
||||
omSysExitReq = 1;
|
||||
arg0->unk08 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2) {
|
||||
HuWinComKeyReset();
|
||||
if (arg0->unk18 == 2) {
|
||||
HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, arg2);
|
||||
}
|
||||
winData[arg1].active_pad = 1;
|
||||
HuWinMesWait(arg1);
|
||||
}
|
||||
|
||||
s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4) {
|
||||
if (arg0->unk18 == 2) {
|
||||
HuPrcSleep(arg4);
|
||||
return arg3;
|
||||
}
|
||||
return HuWinChoiceGet(arg1, arg2);
|
||||
}
|
||||
|
||||
const s32 lbl_1_rodata_F4[] = {
|
||||
MAKE_MESSID(42, 3),
|
||||
MAKE_MESSID(42, 4),
|
||||
MAKE_MESSID(42, 5),
|
||||
MAKE_MESSID(42, 6),
|
||||
MAKE_MESSID(42, 7),
|
||||
0
|
||||
};
|
||||
|
||||
void fn_1_1484(void) {
|
||||
UnkM447Struct_00* temp_r30;
|
||||
s16 temp_r3;
|
||||
s16 var_r29;
|
||||
s32 var_r28;
|
||||
u32 temp_r26;
|
||||
|
||||
temp_r30 = HuPrcCurrentGet()->user_data;
|
||||
temp_r3 = HuWinExCreateStyled(-10000.0f, 40.0f, 280, 120, -1, 1);
|
||||
HuWinExAnimIn(temp_r3);
|
||||
HuWinBGTPLvlSet(temp_r3, 0.8f);
|
||||
HuWinMesSpeedSet(temp_r3, 1);
|
||||
HuWinMesColSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, MAKE_MESSID(42, 1));
|
||||
fn_1_1394(temp_r30, temp_r3, 60);
|
||||
if (temp_r30->unk18 < 2) {
|
||||
HuWinMesColSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, MAKE_MESSID(42, 2));
|
||||
var_r29 = fn_1_141C(temp_r30, temp_r3, 0, 1, 60);
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
}
|
||||
if (var_r29 == 0) {
|
||||
var_r28 = 0;
|
||||
while ((temp_r26 = lbl_1_rodata_F4[var_r28++]) != 0) {
|
||||
HuWinMesColSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, temp_r26);
|
||||
fn_1_1394(temp_r30, temp_r3, 60);
|
||||
}
|
||||
HuWinMesColSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, MAKE_MESSID(42, 8));
|
||||
fn_1_1394(temp_r30, temp_r3, 60);
|
||||
} else {
|
||||
HuWinMesColSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, MAKE_MESSID(42, 9));
|
||||
fn_1_1394(temp_r30, temp_r3, 60);
|
||||
}
|
||||
HuWinExAnimOut(temp_r3);
|
||||
HuWinExCleanup(temp_r3);
|
||||
temp_r30->unk0C = 0;
|
||||
HuPrcEnd();
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1754(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 25; i++) {
|
||||
arg0->unk34[i] = espEntry(lbl_1_rodata_10[i], 0, 0);
|
||||
espDispOff(arg0->unk34[i]);
|
||||
espPriSet(arg0->unk34[i], 100);
|
||||
}
|
||||
espPriSet(arg0->unk34[7], 99);
|
||||
espPriSet(arg0->unk34[8], 99);
|
||||
espPriSet(arg0->unk34[9], 99);
|
||||
espPriSet(arg0->unk34[13], 99);
|
||||
espPriSet(arg0->unk34[14], 99);
|
||||
espPriSet(arg0->unk34[15], 99);
|
||||
}
|
||||
|
||||
void fn_1_1830(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 25; i++) {
|
||||
espKill(arg0->unk34[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1884(UnkM447Struct_00* arg0) {
|
||||
s16 temp_r28;
|
||||
s32 sp8;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
espDispOn(arg0->unk34[0]);
|
||||
espPosSet(arg0->unk34[0], 96.0f, 64.0f);
|
||||
espDispOn(arg0->unk34[2]);
|
||||
espPosSet(arg0->unk34[2], 96.0f, 63.0f);
|
||||
espTPLvlSet(arg0->unk34[2], 0.5f);
|
||||
espColorSet(arg0->unk34[2], 0, 0, 0);
|
||||
espDispOn(arg0->unk34[1]);
|
||||
espPosSet(arg0->unk34[1], 480.0f, 64.0f);
|
||||
espDispOn(arg0->unk34[3]);
|
||||
espPosSet(arg0->unk34[3], 480.0f, 63.0f);
|
||||
espTPLvlSet(arg0->unk34[3], 0.5f);
|
||||
espColorSet(arg0->unk34[3], 0, 0, 0);
|
||||
for (i = 0; i < 2; i++) {
|
||||
temp_r28 = lbl_1_bss_98[i]->unk18 + 16;
|
||||
espDispOn(arg0->unk34[temp_r28]);
|
||||
espPosSet(arg0->unk34[temp_r28], i * 384 + 46, 63.0f);
|
||||
}
|
||||
for (j = 0; j < 2; j++) {
|
||||
sp8 = lbl_1_bss_98[j]->unk1B;
|
||||
for (i = 0; i < 3; i++) {
|
||||
temp_r28 = i + 4 + j * 6;
|
||||
espDispOn(arg0->unk34[temp_r28]);
|
||||
espPosSet(arg0->unk34[temp_r28], j * 384 + 80 + i * 32, 63.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2) {
|
||||
UnkM447Struct_03* temp_r3;
|
||||
Process* var_r30;
|
||||
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
|
||||
temp_r3->unk00 = arg0->unk34[arg2 + 7 + arg1 * 6];
|
||||
espPosSet(temp_r3->unk00, arg1 * 384 + 80 + arg2 * 32, 63.0f);
|
||||
temp_r3->unk04 = 0.0f;
|
||||
temp_r3->unk08 = 0.05f;
|
||||
var_r30 = HuPrcChildCreate(fn_1_1BF8, 100, 0x1000, 0, lbl_1_bss_4);
|
||||
var_r30->user_data = temp_r3;
|
||||
}
|
||||
|
||||
void fn_1_1BF8(void) {
|
||||
float temp_f31;
|
||||
UnkM447Struct_03* temp_r31;
|
||||
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
espDispOn(temp_r31->unk00);
|
||||
while (TRUE) {
|
||||
if ((temp_r31->unk04 += temp_r31->unk08) > 1.0f) {
|
||||
temp_r31->unk04 = 1.0f;
|
||||
break;
|
||||
}
|
||||
temp_f31 = 1.0f + 1.5f * (1.0f - temp_r31->unk04);
|
||||
espScaleSet(temp_r31->unk00, temp_f31, temp_f31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
espScaleSet(temp_r31->unk00, 1.0f, 1.0f);
|
||||
HuAudFXPlay(9);
|
||||
HuMemDirectFree(temp_r31);
|
||||
HuPrcEnd();
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1CE0(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i <= 25; i++) {
|
||||
espDispOff(arg0->unk34[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1D34(UnkM447Struct_00* arg0) {
|
||||
s32 i;
|
||||
|
||||
arg0->unk18 = 0;
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (lbl_1_bss_98[i]->unk08 != 0) {
|
||||
arg0->unk18++;
|
||||
}
|
||||
}
|
||||
}
|
||||
1107
src/REL/m447dll/player.c
Executable file
1107
src/REL/m447dll/player.c
Executable file
File diff suppressed because it is too large
Load diff
199
src/REL/m447dll/player_col.c
Executable file
199
src/REL/m447dll/player_col.c
Executable file
|
|
@ -0,0 +1,199 @@
|
|||
#include "REL/m447dll.h"
|
||||
|
||||
#include "ext_math.h"
|
||||
|
||||
float fn_1_7D94(float* arg0, float* arg1);
|
||||
void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3);
|
||||
s32 fn_1_89BC(float* arg0, float* arg1);
|
||||
|
||||
void fn_1_7B54(Vec* arg0, Vec* arg1, s32 arg2, float arg3) {
|
||||
float temp_f29;
|
||||
float var_f30;
|
||||
float var_f31;
|
||||
s32 temp_r29;
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
|
||||
temp_r29 = arg2 - 1;
|
||||
arg0->x = 0.0f;
|
||||
arg0->y = 0.0f;
|
||||
arg0->z = 0.0f;
|
||||
arg3 = (arg2 + 1) * arg3 - 1.0f;
|
||||
for (i = -2; i <= temp_r29 + 2; i++) {
|
||||
var_r30 = i;
|
||||
if (i < 0) {
|
||||
var_r30 = 0;
|
||||
}
|
||||
if (i > temp_r29) {
|
||||
var_r30 = temp_r29;
|
||||
}
|
||||
var_f31 = arg3 - i;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 = -var_f31;
|
||||
}
|
||||
if (var_f31 < 1.0f) {
|
||||
var_f30 = (3.0f * var_f31 * var_f31 * var_f31 - 6.0f * var_f31 * var_f31 + 4.0f) / 6.0f;
|
||||
} else if (var_f31 < 2.0f) {
|
||||
temp_f29 = var_f31 - 2.0f;
|
||||
var_f30 = -temp_f29 * temp_f29 * temp_f29 / 6.0f;
|
||||
} else {
|
||||
var_f30 = 0.0f;
|
||||
}
|
||||
arg0->x += var_f30 * arg1[var_r30].x;
|
||||
arg0->y += var_f30 * arg1[var_r30].y;
|
||||
arg0->z += var_f30 * arg1[var_r30].z;
|
||||
}
|
||||
}
|
||||
|
||||
float fn_1_7D94(float* arg0, float* arg1) {
|
||||
float var_f30;
|
||||
float var_f31;
|
||||
float temp_f29;
|
||||
float var_f28;
|
||||
s32 var_r31;
|
||||
|
||||
var_f30 = arg1[0] - arg0[0];
|
||||
var_f31 = arg1[1] - arg0[1];
|
||||
if (var_f30 >= 0.0f) {
|
||||
if (var_f31 >= 0.0f) {
|
||||
var_r31 = 0;
|
||||
} else {
|
||||
var_r31 = 3;
|
||||
temp_f29 = var_f30;
|
||||
var_f30 = -var_f31;
|
||||
var_f31 = temp_f29;
|
||||
}
|
||||
} else {
|
||||
if (var_f31 >= 0.0f) {
|
||||
var_r31 = 1;
|
||||
temp_f29 = var_f30;
|
||||
var_f30 = var_f31;
|
||||
var_f31 = -temp_f29;
|
||||
} else {
|
||||
var_r31 = 2;
|
||||
var_f30 = -var_f30;
|
||||
var_f31 = -var_f31;
|
||||
}
|
||||
}
|
||||
if (var_f31 > var_f30) {
|
||||
var_f28 = M_PI / 2 - atan2d(var_f30, var_f31);
|
||||
} else {
|
||||
var_f28 = atan2d(var_f31, var_f30);
|
||||
}
|
||||
return var_f28 + (M_PI / 2) * var_r31;
|
||||
}
|
||||
|
||||
void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3) {
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f28;
|
||||
|
||||
// 57.29578 = 180 / M_PI (1 rad in degrees)
|
||||
temp_f31 = cosd(-(57.29578f * arg1));
|
||||
temp_f30 = sind(-(57.29578f * arg1));
|
||||
temp_f29 = arg2[0] - arg0[0];
|
||||
temp_f28 = arg2[1] - arg0[1];
|
||||
arg3[0] = temp_f29 * temp_f31 + temp_f28 * temp_f30 + arg0[0];
|
||||
arg3[1] = -temp_f29 * temp_f30 + temp_f28 * temp_f31 + arg0[1];
|
||||
}
|
||||
|
||||
s32 fn_1_80BC(float* arg0, float* arg1, float* arg2) {
|
||||
float sp40[2];
|
||||
float sp38[2];
|
||||
float sp30[2];
|
||||
float sp2C;
|
||||
float var_f26;
|
||||
|
||||
sp40[0] = 0.0f;
|
||||
sp40[1] = 0.0f;
|
||||
sp38[0] = arg0[0] - arg1[0];
|
||||
sp38[1] = arg0[1] - arg1[1];
|
||||
sp2C = fn_1_7D94(arg1, &arg1[2]);
|
||||
fn_1_7F64(sp40, -sp2C, sp38, sp30);
|
||||
if (ABS(sp30[1]) > arg0[2]) {
|
||||
return 0;
|
||||
}
|
||||
var_f26 = sqrtf(arg0[2] * arg0[2] - sp30[1] * sp30[1]);
|
||||
sp38[0] = arg0[0] + var_f26;
|
||||
sp38[1] = arg0[1] - sp30[1];
|
||||
fn_1_7F64(arg0, sp2C, sp38, arg2);
|
||||
if (var_f26 == 0.0f) {
|
||||
return 1;
|
||||
}
|
||||
sp38[0] = arg0[0] - var_f26;
|
||||
sp38[1] = arg0[1] - sp30[1];
|
||||
fn_1_7F64(arg0, sp2C, sp38, &arg2[2]);
|
||||
return 2;
|
||||
}
|
||||
|
||||
s32 fn_1_879C(float* arg0, float* arg1, s32 arg2, s32 arg3) {
|
||||
float spC[2];
|
||||
float var_f28;
|
||||
|
||||
spC[0] = arg0[0] - arg1[0];
|
||||
spC[1] = arg0[1] - arg1[1];
|
||||
var_f28 = sqrtf(spC[0] * spC[0] + spC[1] * spC[1]);
|
||||
if (var_f28 < arg0[2] + arg1[2]) {
|
||||
if (var_f28 == 0.0f) {
|
||||
spC[0] = 0.0f;
|
||||
spC[1] = -1.0f;
|
||||
} else {
|
||||
spC[0] /= var_f28;
|
||||
spC[1] /= var_f28;
|
||||
if (arg3 != 0) {
|
||||
arg1[0] -= spC[0];
|
||||
arg1[1] -= spC[1];
|
||||
}
|
||||
}
|
||||
if (arg2 != 0) {
|
||||
arg0[0] = arg1[0] + spC[0] * (arg0[2] + arg1[2]);
|
||||
arg0[1] = arg1[1] + spC[1] * (arg0[2] + arg1[2]);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 fn_1_89BC(float* arg0, float* arg1) {
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f28;
|
||||
float temp_f26;
|
||||
float temp_f27;
|
||||
float temp_f24;
|
||||
|
||||
temp_f26 = arg0[2] * arg0[2] - 2.0f * arg0[0] * arg0[2] + arg0[0] * arg0[0] + arg0[3] * arg0[3] - 2.0f * arg0[1] * arg0[3] + arg0[1] * arg0[1];
|
||||
temp_f27 = 2.0f * (arg0[0] * arg0[2] - arg0[2] * arg1[0] + arg0[0] * arg0[0] + arg0[1] * arg0[3] - arg0[3] * arg1[1] + arg0[1] * arg0[1]);
|
||||
temp_f24 = arg0[0] * arg0[0] - 2.0f * arg0[0] * arg1[0] + arg1[0] * arg1[0] + arg0[1] * arg0[1] - 2.0f * arg0[1] * arg1[1] + arg1[1] * arg1[1] - arg1[2] * arg1[2];
|
||||
if (temp_f26 == 0.0f) {
|
||||
if (temp_f27 != 0.0f) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
temp_f30 = temp_f27 * temp_f27 - 4.0f * temp_f26 * temp_f24;
|
||||
if (temp_f30 < 0.0f) {
|
||||
return 0;
|
||||
}
|
||||
temp_f30 = sqrtf(temp_f30);
|
||||
temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26);
|
||||
temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26);
|
||||
if (temp_f29 < temp_f28) {
|
||||
if (temp_f29 >= 0.0f && temp_f29 > 1.0f) {
|
||||
return 1;
|
||||
}
|
||||
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
|
||||
return 1;
|
||||
}
|
||||
if (temp_f29 >= 0.0f && temp_f29 < 1.0f) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
471
src/REL/m447dll/stage.c
Executable file
471
src/REL/m447dll/stage.c
Executable file
|
|
@ -0,0 +1,471 @@
|
|||
#include "REL/m447dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "ext_math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec unk00;
|
||||
/* 0x0C */ Vec unk0C;
|
||||
/* 0x18 */ GXColor unk18;
|
||||
} UnkM447Struct_07; // Size 0x1C
|
||||
|
||||
void fn_1_1FF4(void);
|
||||
void fn_1_2164(UnkM447Struct_06* arg0);
|
||||
void fn_1_231C(UnkM447Struct_06* arg0);
|
||||
void fn_1_236C(UnkM447Struct_06* arg0);
|
||||
void fn_1_2490(UnkM447Struct_06* arg0);
|
||||
void fn_1_2494(UnkM447Struct_06* arg0);
|
||||
void fn_1_25E4(UnkM447Struct_06* arg0);
|
||||
void fn_1_2700(UnkM447Struct_06* arg0);
|
||||
void fn_1_2A3C(UnkM447Struct_06* arg0);
|
||||
void fn_1_2D08(UnkM447Struct_06* arg0);
|
||||
void fn_1_2DAC(ModelData* model, ParticleData* particle, Mtx matrix);
|
||||
|
||||
const s32 lbl_1_rodata_138[] = {
|
||||
DATA_MAKE_NUM(DATADIR_M447, 0),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 2),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 3),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 1),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 1),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 1),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 1),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 1),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 24),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 24),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 24),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 24),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 24),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 25),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 26),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 28),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 29),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 29),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 29),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 29),
|
||||
DATA_MAKE_NUM(DATADIR_M447, 29),
|
||||
0
|
||||
};
|
||||
|
||||
const Vec lbl_1_rodata_190[] = {
|
||||
{ 0.0f, 0.1f, 0.0f },
|
||||
{ 400.0f, 0.1f, 0.0f },
|
||||
{ -400.0f, 0.1f, 0.0f },
|
||||
{ 200.0f, 0.1f, -400.0f },
|
||||
{ -200.0f, 0.1f, -400.0f }
|
||||
};
|
||||
|
||||
UnkM447Struct_07 lbl_1_data_A0[] = {
|
||||
{ { 0.0f, 2500.0f, 0.0f }, { 0.0f, -0.5f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
|
||||
{ { 0.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
|
||||
{ { 400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
|
||||
{ { -400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
|
||||
{ { 200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
|
||||
{ { -200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }
|
||||
};
|
||||
|
||||
UnkM447Struct_06* fn_1_1D90(void) {
|
||||
UnkM447Struct_06* temp_r3;
|
||||
s32 i;
|
||||
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
|
||||
if (!temp_r3) {
|
||||
return NULL;
|
||||
}
|
||||
temp_r3->unk38 = 0;
|
||||
temp_r3->unk50 = NULL;
|
||||
temp_r3->unk44 = 0;
|
||||
for (i = 0; i < 5; i++) {
|
||||
temp_r3->unk54[i] = 0;
|
||||
temp_r3->unk68[i] = 0;
|
||||
}
|
||||
fn_1_2164(temp_r3);
|
||||
fn_1_236C(temp_r3);
|
||||
temp_r3->unk7C = HuPrcChildCreate(fn_1_1FF4, 0x65, 0x3000, 0, lbl_1_bss_4);
|
||||
temp_r3->unk7C->user_data = temp_r3;
|
||||
return temp_r3;
|
||||
}
|
||||
|
||||
void fn_1_1E70(UnkM447Struct_06* arg0) {
|
||||
fn_1_231C(arg0);
|
||||
HuPrcKill(arg0->unk7C);
|
||||
HuMemDirectFree(arg0);
|
||||
}
|
||||
|
||||
void fn_1_1EB0(UnkM447Struct_06* arg0, s32 arg1) {
|
||||
arg0->unk38 = arg1;
|
||||
arg0->unk3C = 0;
|
||||
}
|
||||
|
||||
BOOL fn_1_1EC0(UnkM447Struct_06* arg0) {
|
||||
return arg0->unk38 != 0;
|
||||
}
|
||||
|
||||
void fn_1_1ED4(s32 arg0, Vec* arg1) {
|
||||
*arg1 = lbl_1_rodata_190[arg0];
|
||||
}
|
||||
|
||||
void fn_1_1F00(UnkM447Struct_06* arg0, s32 arg1) {
|
||||
s16 temp_r31;
|
||||
|
||||
temp_r31 = arg0->unk00[arg1 + 3];
|
||||
Hu3DModelAttrReset(temp_r31, 0x40000002);
|
||||
Hu3DMotionTimeSet(temp_r31, 0.0f);
|
||||
Hu3DMotionStartEndSet(temp_r31, 0.0f, 40.0f);
|
||||
arg0->unk54[arg1] = 1;
|
||||
}
|
||||
|
||||
s32 fn_1_1F9C(UnkM447Struct_06* arg0) {
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
|
||||
var_r30 = 0;
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (arg0->unk54[i] == 0) {
|
||||
var_r30++;
|
||||
}
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_1FEC(UnkM447Struct_06* arg0, s32 arg1) {
|
||||
arg0->unk44 = arg1;
|
||||
}
|
||||
|
||||
void (*lbl_1_data_148[])(UnkM447Struct_06*) = {
|
||||
fn_1_2490,
|
||||
fn_1_2494,
|
||||
fn_1_25E4,
|
||||
fn_1_2700,
|
||||
fn_1_2A3C,
|
||||
NULL // padding?
|
||||
};
|
||||
|
||||
void fn_1_1FF4(void) {
|
||||
Vec sp8;
|
||||
UnkM447Struct_06* temp_r31;
|
||||
s16 temp_r29;
|
||||
s32 i;
|
||||
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
while (TRUE) {
|
||||
if (lbl_1_data_148[temp_r31->unk38]) {
|
||||
lbl_1_data_148[temp_r31->unk38](temp_r31);
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
temp_r29 = temp_r31->unk00[i + 3];
|
||||
if (Hu3DMotionEndCheck(temp_r29)) {
|
||||
Hu3DMotionStartEndSet(temp_r29, 20.0f, 40.0f);
|
||||
Hu3DModelAttrSet(temp_r29, 0x40000001);
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk44 > 0) {
|
||||
fn_1_351C(&sp8);
|
||||
if (--temp_r31->unk44 == 0) {
|
||||
sp8.y = 300.0f;
|
||||
} else {
|
||||
sp8.y = fn_1_A240() % 20 - 10 + 300.0f;
|
||||
}
|
||||
fn_1_3540(&sp8);
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2164(UnkM447Struct_06* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i <= 20; i++) {
|
||||
arg0->unk00[i] = Hu3DModelCreateFile(lbl_1_rodata_138[i]);
|
||||
Hu3DModelLayerSet(arg0->unk00[i], 0);
|
||||
}
|
||||
arg0->unk50 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57));
|
||||
arg0->unk00[21] = Hu3DParticleCreate(arg0->unk50, 64);
|
||||
Hu3DParticleHookSet(arg0->unk00[21], fn_1_2DAC);
|
||||
Hu3DParticleBlendModeSet(arg0->unk00[21], 1);
|
||||
Hu3DModelLayerSet(arg0->unk00[21], 0);
|
||||
Hu3DModelAttrSet(arg0->unk00[21], 1);
|
||||
Hu3DModelShadowMapSet(arg0->unk00[2]);
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
|
||||
Hu3DModelAttrSet(arg0->unk00[i + 3], 0x40000002);
|
||||
Hu3DModelShadowMapSet(arg0->unk00[i + 3]);
|
||||
}
|
||||
for (i = 8; i <= 15; i++) {
|
||||
Hu3DModelAttrSet(arg0->unk00[i], 1);
|
||||
}
|
||||
for (i = 16; i <= 20; i++) {
|
||||
Hu3DModelAttrSet(arg0->unk00[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_231C(UnkM447Struct_06* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 22; i++) {
|
||||
Hu3DModelKill(arg0->unk00[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_236C(UnkM447Struct_06* arg0) {
|
||||
s32 i;
|
||||
|
||||
Hu3DLighInit();
|
||||
for (i = 0; i < 6; i++) {
|
||||
arg0->unk2C[i] = Hu3DGLightCreateV(&lbl_1_data_A0[i].unk00, &lbl_1_data_A0[i].unk0C, &lbl_1_data_A0[i].unk18);
|
||||
switch (i) {
|
||||
case 0:
|
||||
Hu3DGLightInfinitytSet(arg0->unk2C[i]);
|
||||
Hu3DGLightStaticSet(arg0->unk2C[i], 1);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
Hu3DGLightStaticSet(arg0->unk2C[i], 1);
|
||||
Hu3DGLightSpotSet(arg0->unk2C[i], 20.0f, 2);
|
||||
Hu3DGLightColorSet(arg0->unk2C[i], 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2490(UnkM447Struct_06* arg0) {
|
||||
}
|
||||
|
||||
void fn_1_2494(UnkM447Struct_06* arg0) {
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk3C) {
|
||||
case 0:
|
||||
arg0->unk3C = 1;
|
||||
break;
|
||||
case 1:
|
||||
Hu3DModelPosSet(arg0->unk00[14], 0.0f, 0.0f, 0.0f);
|
||||
Hu3DMotionTimeSet(arg0->unk00[14], 0.0f);
|
||||
Hu3DModelAttrReset(arg0->unk00[14], 1);
|
||||
Hu3DModelAttrSet(arg0->unk00[14], 0x40000001);
|
||||
arg0->unk40 = 0;
|
||||
arg0->unk3C = 2;
|
||||
HuAudFXPlay(0x77E);
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_7AA4(lbl_1_bss_98[i], 0, 0x3C);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (arg0->unk40++ >= 60) {
|
||||
arg0->unk3C = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
Hu3DModelAttrSet(arg0->unk00[14], 1);
|
||||
arg0->unk38 = 0;
|
||||
arg0->unk3C = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_25E4(UnkM447Struct_06* arg0) {
|
||||
switch (arg0->unk3C) {
|
||||
case 0:
|
||||
arg0->unk3C = 1;
|
||||
break;
|
||||
case 1:
|
||||
fn_1_2D08(arg0);
|
||||
Hu3DModelPosSet(arg0->unk00[15], 0.0f, 0.0f, 0.0f);
|
||||
Hu3DMotionTimeSet(arg0->unk00[15], 0.0f);
|
||||
Hu3DModelAttrReset(arg0->unk00[15], 1);
|
||||
Hu3DModelAttrSet(arg0->unk00[15], 0x40000001);
|
||||
arg0->unk40 = 0;
|
||||
arg0->unk3C = 2;
|
||||
HuAudFXPlay(0x782);
|
||||
break;
|
||||
case 2:
|
||||
if (arg0->unk40++ >= 60) {
|
||||
arg0->unk3C = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
Hu3DModelAttrSet(arg0->unk00[15], 1);
|
||||
arg0->unk38 = 0;
|
||||
arg0->unk3C = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2700(UnkM447Struct_06* arg0) {
|
||||
float temp_f31;
|
||||
s16 temp_r29;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk3C) {
|
||||
case 0:
|
||||
arg0->unk48 = 0.0f;
|
||||
arg0->unk4C = 0.011111111f;
|
||||
arg0->unk3C = 1;
|
||||
HuAudFXPlay(0x77F);
|
||||
break;
|
||||
case 1:
|
||||
temp_f31 = -90.0f * arg0->unk48;
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z);
|
||||
}
|
||||
arg0->unk48 += arg0->unk4C;
|
||||
if (arg0->unk48 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DMotionTimeSet(arg0->unk00[i + 3], 0.0f);
|
||||
Hu3DModelAttrSet(arg0->unk00[i + 3], 0x40000002);
|
||||
arg0->unk54[i] = 0;
|
||||
arg0->unk68[i] = 0;
|
||||
}
|
||||
arg0->unk3C = 2;
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < 5; i++) {
|
||||
temp_r29 = arg0->unk00[i + 8];
|
||||
Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
|
||||
Hu3DMotionTimeSet(temp_r29, 0.0f);
|
||||
Hu3DModelAttrReset(temp_r29, 1);
|
||||
Hu3DGLightColorSet(arg0->unk2C[i + 1], lbl_1_data_A0[i + 1].unk18.r, lbl_1_data_A0[i + 1].unk18.g, lbl_1_data_A0[i + 1].unk18.b, lbl_1_data_A0[i + 1].unk18.a);
|
||||
}
|
||||
arg0->unk40 = 0;
|
||||
arg0->unk3C = 3;
|
||||
HuAudFXPlay(0x780);
|
||||
break;
|
||||
case 3:
|
||||
if (arg0->unk40++ >= 60) {
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelAttrSet(arg0->unk00[i + 8], 1);
|
||||
Hu3DGLightColorSet(arg0->unk2C[i + 1], 0, 0, 0, 0);
|
||||
}
|
||||
arg0->unk3C = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
arg0->unk38 = 0;
|
||||
arg0->unk3C = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2A3C(UnkM447Struct_06* arg0) {
|
||||
float temp_f31;
|
||||
s16 temp_r29;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk3C) {
|
||||
case 0:
|
||||
arg0->unk48 = 0.0f;
|
||||
arg0->unk4C = 0.033333335f;
|
||||
arg0->unk3C = 1;
|
||||
HuAudFXPlay(0x77F);
|
||||
break;
|
||||
case 1:
|
||||
temp_f31 = 90.0f * arg0->unk48 + -90.0f + 0.1f;
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z);
|
||||
}
|
||||
arg0->unk48 += arg0->unk4C;
|
||||
if (arg0->unk48 < 1.0f) {
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
|
||||
}
|
||||
HuAudFXPlay(0x783);
|
||||
arg0->unk3C = 2;
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < 5; i++) {
|
||||
temp_r29 = arg0->unk00[i + 16];
|
||||
Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
|
||||
Hu3DMotionTimeSet(temp_r29, 0.0f);
|
||||
Hu3DModelAttrReset(temp_r29, 0x40000001);
|
||||
Hu3DModelAttrReset(temp_r29, 1);
|
||||
}
|
||||
arg0->unk40 = 0;
|
||||
arg0->unk3C = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (arg0->unk40++ >= 20) {
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelAttrSet(arg0->unk00[i + 16], 1);
|
||||
}
|
||||
arg0->unk3C = 4;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
arg0->unk38 = 0;
|
||||
arg0->unk3C = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2D08(UnkM447Struct_06* arg0) {
|
||||
ModelData* temp_r30;
|
||||
ParticleData* temp_r31;
|
||||
|
||||
temp_r30 = &Hu3DData[arg0->unk00[21]];
|
||||
temp_r31 = temp_r30->unk_120;
|
||||
temp_r30->attr &= ~1;
|
||||
temp_r31->unk_00 = 0;
|
||||
temp_r31->unk_02 = 1;
|
||||
temp_r31->unk_04.x = 0.0f;
|
||||
temp_r31->unk_04.y = 350.0f;
|
||||
temp_r31->unk_04.z = -700.0f;
|
||||
HuAudFXPlay(0x780);
|
||||
}
|
||||
|
||||
void fn_1_2DAC(ModelData* model, ParticleData* particle, Mtx matrix) {
|
||||
GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
HsfanimStruct01* var_r31;
|
||||
s32 i;
|
||||
|
||||
if (particle->unk_02 == 0) {
|
||||
return;
|
||||
}
|
||||
if (particle->unk_00 == 0) {
|
||||
particle->unk_00 = 1;
|
||||
particle->unk_04.z = 0.0f;
|
||||
particle->unk_10.z = 0.016666668f;
|
||||
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk00 = 0;
|
||||
var_r31->unk2C = 20.0f;
|
||||
var_r31->unk40.r = sp8.r;
|
||||
var_r31->unk40.g = sp8.g;
|
||||
var_r31->unk40.b = sp8.b;
|
||||
var_r31->unk40.a = sp8.a;
|
||||
var_r31->unk34.x = particle->unk_04.x;
|
||||
var_r31->unk34.y = particle->unk_04.y;
|
||||
var_r31->unk34.z = particle->unk_04.z;
|
||||
var_r31->unk08.x = -8.0f + 0.1f * (fn_1_A240() % 160);
|
||||
var_r31->unk08.y = -8.0f + 0.1f * (fn_1_A240() % 160);
|
||||
var_r31->unk08.z = 0.0f;
|
||||
}
|
||||
}
|
||||
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk00_s16 < 0) {
|
||||
continue;
|
||||
}
|
||||
var_r31->unk34.x += var_r31->unk08.x;
|
||||
var_r31->unk34.y += var_r31->unk08.y;
|
||||
var_r31->unk34.z = -700.0 + 500.0 * sind(90.0f * particle->unk_04.z);
|
||||
var_r31->unk40.a = 255.0f * (1.0f - particle->unk_04.z);
|
||||
var_r31->unk2C = 20.0f + fn_1_A240() % 30;
|
||||
}
|
||||
particle->unk_04.z += particle->unk_10.z;
|
||||
if (particle->unk_04.z >= 1.0f) {
|
||||
model->attr |= 1;
|
||||
particle->unk_02 = 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue