Finished m421Dll
This commit is contained in:
parent
0acb3abd08
commit
f5e953cd61
6 changed files with 2424 additions and 200 deletions
|
|
@ -1,5 +1,3 @@
|
|||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXVert.h"
|
||||
#include "ext_math.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/gamework.h"
|
||||
|
|
@ -22,27 +20,24 @@ typedef struct M421DllWork {
|
|||
u32 unk_00;
|
||||
s32 unk_04;
|
||||
s32 unk_08;
|
||||
u32 unk0C;
|
||||
u32 unk_0C;
|
||||
s32 unk_10;
|
||||
u32 unk_14;
|
||||
u32 unk_18;
|
||||
u32 unk_1C;
|
||||
u32 unk_20;
|
||||
u32 unk24;
|
||||
s32 unk28;
|
||||
u32 unk_28;
|
||||
u32 unk_2C;
|
||||
s32 unk30;
|
||||
char unk34[0x4];
|
||||
u32 unk38;
|
||||
s32 unk3C;
|
||||
s32 unk40;
|
||||
s32 unk44;
|
||||
s32 unk48;
|
||||
s32 unk4C;
|
||||
u32 unk50;
|
||||
s32 unk54[4];
|
||||
s32 unk64[4];
|
||||
} M421DllWork; /* size = 0x74 */ // TODO check the fields, they are copy pasted
|
||||
s32 unk_30[4];
|
||||
s32 unk_40[4];
|
||||
s32 unk_50[4];
|
||||
u32 unk_60;
|
||||
u32 unk_64;
|
||||
u32 unk_68;
|
||||
u32 unk_6C;
|
||||
s32 unk_70;
|
||||
} M421DllWork; /* size = 0x74 */
|
||||
|
||||
void fn_1_10EC(omObjData *object);
|
||||
void fn_1_142C(omObjData *object);
|
||||
|
|
@ -66,6 +61,24 @@ void fn_1_784(omObjData *object);
|
|||
void fn_1_8B8(omObjData *object);
|
||||
void fn_1_CBC(omObjData *object);
|
||||
|
||||
Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f };
|
||||
Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f };
|
||||
Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f };
|
||||
GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f };
|
||||
Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f };
|
||||
Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec lbl_1_data_4C[3] = {
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
{ 0.0f, 200.0f, -50.0f },
|
||||
};
|
||||
Vec lbl_1_data_70[3] = {
|
||||
{ -37.5f, 0.0f, 1500.0f },
|
||||
{ -37.5f, 0.0f, 1500.0f },
|
||||
{ -37.5f, 0.0f, 2300.0f },
|
||||
};
|
||||
s32 lbl_1_data_94[3] = { 0xF0, 0x1E, 0 };
|
||||
GXColor lbl_1_data_A0 = { 0, 0, 0, 0 };
|
||||
|
||||
Process *lbl_1_bss_28;
|
||||
|
|
@ -74,7 +87,7 @@ omObjData *lbl_1_bss_20;
|
|||
// M421DllCameraStruct
|
||||
omObjData *lbl_1_bss_1C;
|
||||
s16 lbl_1_bss_18;
|
||||
s16 lbl_1_bss_12;
|
||||
s16 lbl_1_bss_12[3];
|
||||
s16 lbl_1_bss_10;
|
||||
s16 lbl_1_bss_E;
|
||||
s16 lbl_1_bss_C;
|
||||
|
|
@ -82,21 +95,92 @@ s32 lbl_1_bss_8;
|
|||
s32 lbl_1_bss_4;
|
||||
s32 lbl_1_bss_0;
|
||||
|
||||
void fn_1_578(omObjData *var_r29)
|
||||
void ObjectSetup(void)
|
||||
{
|
||||
Mtx sp2C;
|
||||
Vec sp20 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec sp14 = { 0.0f, 0.0f, -1.0f };
|
||||
Vec sp8;
|
||||
Process *process;
|
||||
LightData *lightData;
|
||||
|
||||
lbl_1_bss_8 = 0;
|
||||
HuAudSndGrpSet(0x2E);
|
||||
HuAudFXListnerSetEX(&sp20, &sp14, 11200.0f, 4166.6665f, 0.0f, 300.0f, 0.0f);
|
||||
lbl_1_bss_4 = lbl_1_bss_0 = -1;
|
||||
lbl_1_bss_18 = -1;
|
||||
lbl_1_data_28.x = 200.0f;
|
||||
lbl_1_data_28.y = 1200.0f;
|
||||
lbl_1_data_28.z = 160.0f;
|
||||
lbl_1_data_34.x = 0.0f;
|
||||
lbl_1_data_34.y = 1.0f;
|
||||
lbl_1_data_34.z = 0.0f;
|
||||
lbl_1_data_40.x = 0.0f;
|
||||
lbl_1_data_40.y = 0.0f;
|
||||
lbl_1_data_40.z = 0.0f;
|
||||
Hu3DShadowCreate(22.0f, 20.0f, 25000.0f);
|
||||
Hu3DShadowTPLvlSet(0.625f);
|
||||
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
|
||||
lbl_1_bss_12[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
|
||||
Hu3DGLightInfinitytSet(lbl_1_bss_12[0]);
|
||||
lightData = &Hu3DGlobalLight[lbl_1_bss_12[0]];
|
||||
lightData->unk_00 |= 0x8000;
|
||||
lbl_1_data_18.x = 1.0f;
|
||||
lbl_1_data_18.y = 0.0f;
|
||||
lbl_1_data_18.z = 4200.0f;
|
||||
sp8.x = sp8.z = 0.0f;
|
||||
sp8.y = lbl_1_data_18.z;
|
||||
mtxRot(sp2C, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f);
|
||||
PSMTXMultVec(sp2C, &sp8, &lbl_1_data_28);
|
||||
Hu3DGLightPosAimSetV(lbl_1_bss_12[0], &lbl_1_data_28, &lbl_1_data_40);
|
||||
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
|
||||
lbl_1_bss_10 = lbl_1_bss_E = lbl_1_bss_C = -1;
|
||||
process = omInitObjMan(0x32, 0x2000);
|
||||
lbl_1_bss_28 = process;
|
||||
omGameSysInit(process);
|
||||
fn_1_3020(process);
|
||||
lbl_1_bss_24 = omAddObjEx(process, 0xA, 0, 0, -1, fn_1_4A0);
|
||||
fn_1_B15C(process);
|
||||
fn_1_4648(process);
|
||||
}
|
||||
|
||||
void fn_1_4A0(omObjData *object)
|
||||
{
|
||||
M421DllWork *work;
|
||||
|
||||
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M421DllWork), MEMORY_DEFAULT_NUM);
|
||||
work = object->data;
|
||||
memset(work, 0, sizeof(M421DllWork));
|
||||
work->unk_00 = 0;
|
||||
work->unk_04 = 0;
|
||||
work->unk_0C = 0;
|
||||
work->unk_10 = 0;
|
||||
work->unk_14 = 0;
|
||||
work->unk_18 = 0;
|
||||
work->unk_28 = 0;
|
||||
work->unk_2C = 0;
|
||||
work->unk_08 = 0;
|
||||
work->unk_64 = 2;
|
||||
work->unk_50[0] = work->unk_50[1] = work->unk_50[2] = work->unk_50[3] = -1;
|
||||
work->unk_68 = 0;
|
||||
work->unk_70 = 0;
|
||||
object->func = fn_1_8B8;
|
||||
}
|
||||
|
||||
void fn_1_578(omObjData *object)
|
||||
{
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
M421DllCameraStruct *var_r31;
|
||||
M421DllWork *var_r30;
|
||||
|
||||
var_r30 = var_r29->data;
|
||||
var_r30->unk_04++;
|
||||
var_r30->unk_10++;
|
||||
var_r30->unk_18++;
|
||||
var_r30->unk_2C++;
|
||||
if ((omSysExitReq != 0) && (var_r30->unk_00 != 5)) {
|
||||
var_r30->unk_00 = 4;
|
||||
fn_1_784(var_r29);
|
||||
M421DllWork *work = object->data;
|
||||
work->unk_04++;
|
||||
work->unk_10++;
|
||||
work->unk_18++;
|
||||
work->unk_2C++;
|
||||
if ((omSysExitReq != 0) && (work->unk_00 != 5)) {
|
||||
work->unk_00 = 4;
|
||||
fn_1_784(object);
|
||||
}
|
||||
var_r31 = fn_1_3B78(1);
|
||||
sp8.x = -(sind(var_r31->unk_28.y) * cosd(var_r31->unk_28.x));
|
||||
|
|
@ -182,7 +266,7 @@ void fn_1_142C(omObjData *object)
|
|||
case 0:
|
||||
work->unk_1C = 0x2D;
|
||||
work->unk_20 = 0x3C;
|
||||
lbl_1_bss_18 = MGSeqCreate(3, 0);
|
||||
lbl_1_bss_10 = MGSeqCreate(3, 0);
|
||||
MGSeqPosSet(lbl_1_bss_10, 320.0f, 240.0f);
|
||||
lbl_1_bss_18 = -1;
|
||||
work->unk_14 = 1;
|
||||
|
|
@ -192,7 +276,7 @@ void fn_1_142C(omObjData *object)
|
|||
if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_10) & 0x10) != 0)) {
|
||||
lbl_1_bss_4 = HuAudSeqPlay(0x48);
|
||||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_18) == 0 && (work->unk_08 == 0)) {
|
||||
if (MGSeqStatGet(lbl_1_bss_10) == 0 && (work->unk_08 == 0)) {
|
||||
work->unk_14 = 2;
|
||||
work->unk_18 = 0;
|
||||
object->func = fn_1_1850;
|
||||
|
|
@ -201,6 +285,61 @@ void fn_1_142C(omObjData *object)
|
|||
}
|
||||
}
|
||||
|
||||
void fn_1_1850(omObjData *object)
|
||||
{
|
||||
M421DllWork *work = object->data;
|
||||
s32 var_r26 = 0;
|
||||
fn_1_578(object);
|
||||
if (--work->unk_20 == 0) {
|
||||
work->unk_20 = 0x3C;
|
||||
work->unk_1C--;
|
||||
if ((work->unk_1C == 0) && (work->unk_64 == 2)) {
|
||||
work->unk_64 = 1;
|
||||
var_r26 = 1;
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_18 < 0) {
|
||||
lbl_1_bss_18 = MGSeqCreate(1, work->unk_1C, -1, -1);
|
||||
}
|
||||
MGSeqParamSet(lbl_1_bss_18, 1, work->unk_1C);
|
||||
if (work->unk_64 != 2) {
|
||||
var_r26 = 1;
|
||||
}
|
||||
if (var_r26 != 0) {
|
||||
lbl_1_bss_E = MGSeqCreate(3, 1);
|
||||
MGSeqPosSet(lbl_1_bss_E, 320.0f, 240.0f);
|
||||
HuAudSeqFadeOut(lbl_1_bss_4, 0x64);
|
||||
work->unk_14 = 3;
|
||||
work->unk_18 = 0;
|
||||
if (work->unk_08 == 0) {
|
||||
object->func = fn_1_1C90;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1C90(omObjData *object)
|
||||
{
|
||||
M421DllWork *work = object->data;
|
||||
s32 var_r25 = 0;
|
||||
if (lbl_1_bss_18 >= 0) {
|
||||
MGSeqParamSet(lbl_1_bss_18, 2, -1);
|
||||
lbl_1_bss_18 = -1;
|
||||
}
|
||||
fn_1_578(object);
|
||||
if (work->unk_14 == 3) {
|
||||
var_r25 = 1;
|
||||
if ((MGSeqStatGet(lbl_1_bss_E) == 0) && (work->unk_68 == 0x1111) && (var_r25 != 0)) {
|
||||
work->unk_14 = 4;
|
||||
work->unk_18 = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
work->unk_14 = 5;
|
||||
work->unk_18 = 0;
|
||||
fn_1_784(object);
|
||||
}
|
||||
}
|
||||
|
||||
omObjFunc fn_1_213C(Process *process, omObjData *object)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
|
|
@ -213,6 +352,121 @@ omObjFunc fn_1_213C(Process *process, omObjData *object)
|
|||
return fn_1_21AC;
|
||||
}
|
||||
|
||||
void fn_1_21AC(omObjData *object)
|
||||
{
|
||||
Vec sp20;
|
||||
float var_f31;
|
||||
M421DllCameraStruct *var_r30;
|
||||
M421DllWork *work;
|
||||
|
||||
work = object->data;
|
||||
fn_1_578(object);
|
||||
work->unk_0C = 1;
|
||||
object->work[0]++;
|
||||
var_f31 = (float)object->work[0] / lbl_1_data_94[object->work[1]];
|
||||
VECSubtract(&lbl_1_data_4C[object->work[1] + 1], &lbl_1_data_4C[object->work[1]], &sp20);
|
||||
VECScale(&sp20, &sp20, var_f31);
|
||||
VECAdd(&lbl_1_data_4C[object->work[1]], &sp20, &sp20);
|
||||
Center.x = sp20.x;
|
||||
Center.y = sp20.y;
|
||||
Center.z = sp20.z;
|
||||
VECSubtract(&lbl_1_data_70[object->work[1] + 1], &lbl_1_data_70[object->work[1]], &sp20);
|
||||
VECScale(&sp20, &sp20, var_f31);
|
||||
VECAdd(&lbl_1_data_70[object->work[1]], &sp20, &sp20);
|
||||
CRot.x = sp20.x;
|
||||
CRot.y = sp20.y;
|
||||
CRot.z = 0.0f;
|
||||
CZoom = sp20.z;
|
||||
var_r30 = fn_1_3CB0(0);
|
||||
var_r30->unk_1C = Center;
|
||||
var_r30->unk_28 = CRot;
|
||||
var_r30->unk_34 = CZoom;
|
||||
var_r30->unk_94++;
|
||||
if (var_r30->unk_94 > 180.0f) {
|
||||
var_r30->unk_84 -= 0.025000002f;
|
||||
if (var_r30->unk_84 < 0.0f) {
|
||||
var_r30->unk_84 = 0.0f;
|
||||
}
|
||||
var_r30->unk_1C.x += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
var_r30->unk_1C.y += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
var_r30->unk_1C.z += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f);
|
||||
}
|
||||
if (var_f31 >= 1.0f) {
|
||||
object->work[0] = 0;
|
||||
object->work[1]++;
|
||||
if (lbl_1_data_94[object->work[1]] == 0) {
|
||||
work->unk_0C = 2;
|
||||
fn_1_784(object);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
omObjFunc fn_1_2A28(Process *process, omObjData *object)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
s32 var_r30;
|
||||
M421DllWork *var_r29;
|
||||
s32 var_r28;
|
||||
|
||||
var_r29 = object->data;
|
||||
var_r28 = 1;
|
||||
var_r31 = fn_1_3CB0(0);
|
||||
if (var_r29->unk_64 == 1) {
|
||||
var_r28 = 0;
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
var_r29->unk_50[var_r30] = -1;
|
||||
if ((var_r29->unk_40[var_r30] == 0) == var_r28) {
|
||||
var_r29->unk_50[var_r30] = var_r29->unk_30[var_r30];
|
||||
}
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
if (var_r29->unk_50[var_r30] >= 0) {
|
||||
GWPlayerCoinWinAdd(var_r30, 10);
|
||||
}
|
||||
}
|
||||
var_r31->unk_54 = 0.0f;
|
||||
var_r31->unk_58 = 150.0f;
|
||||
var_r31->unk_5C = 0.0f;
|
||||
var_r31->unk_60 = -30.0f;
|
||||
var_r31->unk_64 = 0.0f;
|
||||
var_r31->unk_68 = 1000.0f;
|
||||
var_r31->unk_84 = 0.0f;
|
||||
return fn_1_2BB8;
|
||||
}
|
||||
|
||||
void fn_1_2BB8(omObjData *var_r29)
|
||||
{
|
||||
M421DllCameraStruct *var_r31;
|
||||
M421DllWork *var_r28;
|
||||
|
||||
var_r28 = var_r29->data;
|
||||
var_r31 = fn_1_3CB0(0);
|
||||
fn_1_578(var_r29);
|
||||
var_r31->unk_84 += 0.0016666668f;
|
||||
if (var_r31->unk_84 > 0.1f) {
|
||||
var_r31->unk_84 = 0.1f;
|
||||
}
|
||||
var_r31->unk_1C.y += var_r31->unk_84 * (var_r31->unk_58 - var_r31->unk_1C.y);
|
||||
var_r31->unk_1C.z += var_r31->unk_84 * (var_r31->unk_5C - var_r31->unk_1C.z);
|
||||
var_r31->unk_28.x = fn_1_4478(var_r31->unk_28.x, var_r31->unk_60, var_r31->unk_84);
|
||||
var_r31->unk_34 += var_r31->unk_84 * (var_r31->unk_68 - var_r31->unk_34);
|
||||
if (var_r28->unk_6C == 0x1111) {
|
||||
var_r28->unk_28 = 1;
|
||||
if (lbl_1_bss_0 < 0) {
|
||||
lbl_1_bss_0 = HuAudSStreamPlay(1);
|
||||
}
|
||||
if (lbl_1_bss_C < 0) {
|
||||
lbl_1_bss_C = MGSeqCreate(5, 3, var_r28->unk_50[0], var_r28->unk_50[1], var_r28->unk_50[2], var_r28->unk_50[3]);
|
||||
return;
|
||||
}
|
||||
if ((MGSeqStatGet(lbl_1_bss_C) == 0) && (var_r28->unk_2C >= 210.0f)) {
|
||||
var_r28->unk_28 = 2;
|
||||
fn_1_784(var_r29);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3020(Process *process)
|
||||
{
|
||||
Hu3DCameraCreate(0x1F);
|
||||
|
|
@ -275,7 +529,7 @@ void fn_1_3334(omObjData *object)
|
|||
fn_1_335C(object);
|
||||
}
|
||||
|
||||
void fn_1_335C(omObjData *var_r28)
|
||||
void fn_1_335C(omObjData *object)
|
||||
{
|
||||
float var_f31;
|
||||
M421DllCameraStruct *var_r31;
|
||||
|
|
@ -289,7 +543,7 @@ void fn_1_335C(omObjData *var_r28)
|
|||
u32 var_r22;
|
||||
u32 var_r21;
|
||||
|
||||
var_r27 = var_r28->data;
|
||||
var_r27 = object->data;
|
||||
{
|
||||
s32 sp40[4] = { 2, 4, 8, 16 };
|
||||
u32 sp30[4];
|
||||
|
|
@ -299,7 +553,7 @@ void fn_1_335C(omObjData *var_r28)
|
|||
var_r24 = 0;
|
||||
var_r26 = 0;
|
||||
memcpy(&var_r27[5], var_r27, 5 * sizeof(M421DllCameraStruct));
|
||||
switch (var_r28->work[1]) {
|
||||
switch (object->work[1]) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -314,10 +568,10 @@ void fn_1_335C(omObjData *var_r28)
|
|||
break;
|
||||
}
|
||||
if (var_r24 != 0) {
|
||||
Hu3DModelAttrReset(var_r28->model[0], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
else {
|
||||
Hu3DModelAttrSet(var_r28->model[0], HU3D_ATTR_DISPOFF);
|
||||
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
||||
}
|
||||
for (var_r30 = 0; var_r30 < 4; var_r30++) {
|
||||
sp30[var_r30] = var_r27[var_r30 + 6].unk_04;
|
||||
|
|
@ -509,18 +763,86 @@ void fn_1_3D84(s32 arg0, s32 arg1)
|
|||
}
|
||||
}
|
||||
|
||||
s32 fn_1_3E1C(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_00;
|
||||
}
|
||||
|
||||
u32 fn_1_3E34(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_0C;
|
||||
}
|
||||
|
||||
u32 fn_1_3E4C(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_14;
|
||||
}
|
||||
|
||||
u32 fn_1_3E64(void)
|
||||
{
|
||||
return ((M421DllWork *)lbl_1_bss_24->data)->unk_28;
|
||||
}
|
||||
|
||||
s32 fn_1_3E7C(s32 arg0)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
|
||||
if (work->unk_64 != 2) {
|
||||
return 0;
|
||||
}
|
||||
work->unk_60 |= (1 << ((arg0 & 3) * 4));
|
||||
if (((work->unk_60 & 0x1110) == 0x1110) && (work->unk_64 == 2)) {
|
||||
work->unk_64 = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 fn_1_3EF8(s32 arg0)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
return work->unk_50[arg0];
|
||||
}
|
||||
|
||||
void fn_1_3F28(s32 arg0, s32 arg1, s32 arg2)
|
||||
{
|
||||
M421DllWork *work = lbl_1_bss_24->data;
|
||||
arg0 &= 3;
|
||||
work->unk_40[arg0] = arg1;
|
||||
work->unk_30[arg0] = arg2;
|
||||
}
|
||||
|
||||
void fn_1_3F68(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_68 |= (1 << ((arg0 & 7) * 4));
|
||||
}
|
||||
|
||||
void fn_1_3F98(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_6C |= (1 << ((arg0 & 3) * 4));
|
||||
}
|
||||
|
||||
void fn_1_3FC8(s32 arg0)
|
||||
{
|
||||
((M421DllWork *)lbl_1_bss_24->data)->unk_70 |= (1 << ((arg0 & 3) * 4));
|
||||
}
|
||||
|
||||
s32 fn_1_3FF8(void)
|
||||
{
|
||||
return MGSeqStatGet(lbl_1_bss_E) == 0;
|
||||
}
|
||||
|
||||
void fn_1_4030(Vec *sp8, Vec *var_r31)
|
||||
{
|
||||
Vec sp10;
|
||||
float var_f30;
|
||||
float var_f29;
|
||||
|
||||
PSVECSubtract(var_r31, sp8, &sp10);
|
||||
VECSubtract(var_r31, sp8, &sp10);
|
||||
Center = *var_r31;
|
||||
CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z)));
|
||||
CRot.y = atan2d(-sp10.x, -sp10.z);
|
||||
CRot.z = 0.0f;
|
||||
CZoom = PSVECMag(&sp10);
|
||||
CZoom = VECMag(&sp10);
|
||||
}
|
||||
|
||||
void fn_1_4238(float arg8, float arg9, float argA, float argB, float argC, float argD)
|
||||
|
|
@ -535,12 +857,12 @@ void fn_1_4238(float arg8, float arg9, float argA, float argB, float argC, float
|
|||
sp30.x = argB;
|
||||
sp30.y = argC;
|
||||
sp30.z = argD;
|
||||
PSVECSubtract(&sp30, &sp3C, &sp24);
|
||||
VECSubtract(&sp30, &sp3C, &sp24);
|
||||
Center = sp30;
|
||||
CRot.x = atan2d(sp24.y, sqrtf((sp24.x * sp24.x) + (sp24.z * sp24.z)));
|
||||
CRot.y = atan2d(-sp24.x, -sp24.z);
|
||||
CRot.z = 0.0f;
|
||||
CZoom = PSVECMag(&sp24);
|
||||
CZoom = VECMag(&sp24);
|
||||
}
|
||||
|
||||
float fn_1_4478(float arg8, float arg9, float argA)
|
||||
|
|
|
|||
54
src/REL/m421Dll/map.c
Normal file
54
src/REL/m421Dll/map.c
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
|
||||
#include "REL/m421Dll.h"
|
||||
|
||||
void fn_1_B1C0(omObjData *object);
|
||||
void fn_1_B398(omObjData *object);
|
||||
|
||||
omObjData *lbl_1_bss_58;
|
||||
|
||||
void fn_1_B15C(Process *work)
|
||||
{
|
||||
omObjData *object = omAddObjEx(work, 0x1E, 6, 0, -1, fn_1_B1C0);
|
||||
lbl_1_bss_58 = object;
|
||||
object->work[0] = 0;
|
||||
}
|
||||
|
||||
void fn_1_B1BC(void) { }
|
||||
|
||||
void fn_1_B1C0(omObjData *var_r31)
|
||||
{
|
||||
omSetTra(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
var_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x02));
|
||||
Hu3DModelLayerSet(var_r31->model[0], 1);
|
||||
Hu3DModelShadowMapSet(var_r31->model[0]);
|
||||
|
||||
var_r31->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x00));
|
||||
Hu3DModelLayerSet(var_r31->model[1], 1);
|
||||
|
||||
var_r31->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x01));
|
||||
Hu3DModelLayerSet(var_r31->model[2], 5);
|
||||
|
||||
var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x05));
|
||||
Hu3DModelLayerSet(var_r31->model[3], 1);
|
||||
Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_LOOP);
|
||||
|
||||
var_r31->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x03));
|
||||
Hu3DModelLayerSet(var_r31->model[4], 5);
|
||||
Hu3DModelAttrSet(var_r31->model[4], HU3D_MOTATTR_LOOP);
|
||||
|
||||
var_r31->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x04));
|
||||
Hu3DModelLayerSet(var_r31->model[5], 5);
|
||||
Hu3DMotionTimeSet(var_r31->model[5], 0.0f);
|
||||
var_r31->work[0] = 0;
|
||||
var_r31->work[1] = 0;
|
||||
var_r31->func = fn_1_B398;
|
||||
}
|
||||
|
||||
void fn_1_B398(omObjData *object) { }
|
||||
|
||||
void fn_1_B39C(void)
|
||||
{
|
||||
Hu3DMotionTimeSet(lbl_1_bss_58->model[5], 0.0f);
|
||||
}
|
||||
1828
src/REL/m421Dll/player.c
Normal file
1828
src/REL/m421Dll/player.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue