Matched mstoryDll (US) (#512)

This commit is contained in:
mrshigure 2025-01-08 15:19:36 -08:00 committed by GitHub
parent 2121a31f1d
commit 496c8544e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 4078 additions and 273 deletions

622
src/REL/mstoryDll/board_clear.c Executable file
View file

@ -0,0 +1,622 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/printfunc.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ char unk0C[4];
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ char unk18[0x1C];
/* 0x34 */ StructFn352C unk34[4];
} StructBss1C4; // Size 0x104
void fn_1_8A44(void);
void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1);
void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1);
void fn_1_8F68(void);
void fn_1_92D4(s32 arg0);
void fn_1_9718(omObjData* arg0, StructBss19C* arg1);
void fn_1_98A4(omObjData* arg0, StructBss19C* arg1);
void fn_1_992C(void);
void fn_1_A008(omObjData* arg0, StructBss19C* arg1);
void fn_1_A0EC(void);
void fn_1_A478(void);
void fn_1_A504(void);
void fn_1_A5F4(void);
StructBss1C4 lbl_1_bss_1C4;
StructBss19C lbl_1_bss_19C;
StructBss19C lbl_1_bss_174;
StructBss19C lbl_1_bss_D4[4];
StructBss19C lbl_1_bss_AC;
Process* lbl_1_bss_A8;
s32 lbl_1_data_190[][4] = {
{ MAKE_MESSID(30, 17), MAKE_MESSID(30, 23), MAKE_MESSID(30, 62), MAKE_MESSID(30, 63) },
{ MAKE_MESSID(30, 18), MAKE_MESSID(30, 24), MAKE_MESSID(30, 64), MAKE_MESSID(30, 65) },
{ MAKE_MESSID(30, 19), MAKE_MESSID(30, 25), MAKE_MESSID(30, 66), MAKE_MESSID(30, 67) },
{ MAKE_MESSID(30, 20), MAKE_MESSID(30, 26), MAKE_MESSID(30, 68), MAKE_MESSID(30, 69) },
{ MAKE_MESSID(30, 21), MAKE_MESSID(30, 27), MAKE_MESSID(30, 70), MAKE_MESSID(30, 71) }
};
s32 lbl_1_data_1E0[][3] = {
{ MAKE_MESSID(30, 101), MAKE_MESSID(30, 102), MAKE_MESSID(30, 103) },
{ MAKE_MESSID(30, 104), MAKE_MESSID(30, 105), MAKE_MESSID(30, 106) },
{ MAKE_MESSID(30, 107), MAKE_MESSID(30, 108), MAKE_MESSID(30, 109) },
{ MAKE_MESSID(30, 110), MAKE_MESSID(30, 111), MAKE_MESSID(30, 112) },
{ MAKE_MESSID(30, 113), MAKE_MESSID(30, 114), MAKE_MESSID(30, 115) }
};
void fn_1_7090(s32 arg0, StructBss19C* arg1) {
fn_1_BAC(10);
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 5, 15, 0);
fn_1_BAC(5);
HuAudCharVoicePlay(lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0x128);
fn_1_BAC(25);
arg1->unk04 = 0;
}
void fn_1_7134(s32 arg0, StructBss19C* arg1) {
float temp_f31;
float temp_f30;
float temp_f29;
s32 i;
temp_f29 = Hu3DData[lbl_1_bss_174.unk00->model[7]].pos.y;
for (i = 0; i <= 30; i++) {
fn_1_B8C();
temp_f31 = fn_1_870(temp_f29, 1000.0f, i, 30.0f);
temp_f30 = fn_1_870(0.0f, 1800.0f, i, 30.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f);
Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f);
}
arg1->unk04 = 0;
}
void fn_1_731C(s32 arg0) {
float temp_f31;
float temp_f30;
s32 var_r30;
s32 i;
var_r30 = arg0;
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_1C4.unk34[i].unk00 != lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk00) {
Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[1], HU3D_ATTR_DISPOFF);
}
Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[2], HU3D_ATTR_DISPOFF);
}
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][0]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, 1000.0f, 640.0f);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[8], HU3D_ATTR_DISPOFF);
for (i = 0; i <= 180; i++) {
fn_1_B8C();
temp_f31 = fn_1_948(1000.0f, 150.0f, i, 180.0f);
temp_f30 = fn_1_948(1800.0f, 0.0f, i, 180.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f);
Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f);
}
lbl_1_bss_174.unk04 = (void*) fn_1_8E6C;
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4;
fn_1_BAC(40);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
fn_1_BAC(50);
lbl_1_bss_58[1] = HuAudSeqPlay(0x35);
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][1]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0);
lbl_1_bss_174.unk04 = (void*) fn_1_8DC0;
fn_1_BAC(30);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090;
fn_1_BAC(90);
lbl_1_bss_AC.unk04 = (void*) fn_1_7134;
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 5, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[lbl_1_bss_1C4.unk00][2]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1A64(lbl_1_bss_1C4.unk08);
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]);
}
void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2) {
s32 i;
lbl_1_bss_A8 = arg0;
lbl_1_bss_1C4.unk00 = arg1;
lbl_1_bss_1C4.unk10 = arg2;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_A8, fn_1_A478);
fn_1_3704();
fn_1_92D4(arg2);
HuPrcChildCreate(fn_1_8F68, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_A0EC, 100, 0x2000, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_992C, 100, 0x2000, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_8A44, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_7AE0(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
fontcolor = FONT_COLOR_WHITE;
printWin(var_r30, var_r29, 220, 150, &sp10);
if (lbl_1_bss_19C.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_174.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_D4[i].unk04 == NULL) {
print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> FALSE", i);
} else {
print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> TRUE", i);
}
}
if (lbl_1_bss_AC.unk04 == NULL) {
print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> TRUE");
}
print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1C4.unk00, lbl_1_bss_1C4.unk04, lbl_1_bss_1C4.unk10);
print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_1C4.unk34[i].unk00, lbl_1_bss_1C4.unk34[i].unk04, lbl_1_bss_1C4.unk34[i].unk08,
lbl_1_bss_1C4.unk34[i].unk0C, lbl_1_bss_1C4.unk34[i].unk14, lbl_1_bss_1C4.unk34[i].unk10);
}
}
}
void fn_1_7E70(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x33);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_7ECC(void) {
s32 spC = 0;
s32 sp8 = 0;
lbl_1_bss_1C4.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1D1C(lbl_1_bss_1C4.unk08, lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][0]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_9718;
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_A504);
do {
fn_1_B8C();
} while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL);
do {
fn_1_B8C();
} while (lbl_1_bss_AC.unk04 != NULL);
}
void fn_1_8090(void) {
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][2]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4;
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF);
fn_1_BAC(180);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0);
fn_1_BAC(75);
lbl_1_bss_58[1] = HuAudSeqPlay(0x35);
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 4, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][3]);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = NULL;
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090;
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]);
fn_1_1A64(lbl_1_bss_1C4.unk08);
do {
fn_1_B8C();
} while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL);
}
void fn_1_83B0(void) {
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[1], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_A5F4);
fn_1_BAC(150);
}
void fn_1_8408(void) {
omOvlHisData* var_r30;
u16 sp8[] = { 53, 56, 55, 54, 57 };
s32 sp14[] = { 9, 14, 10, 11, 12 };
s32 var_r29;
s32 var_r28;
s32 i;
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
CharModelKill(-1);
MGSeqKillAll();
var_r29 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10;
var_r28 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk14;
GWPlayerCfg[lbl_1_bss_1C4.unk04].character = GWPlayerCfg->character;
GWPlayerCfg[lbl_1_bss_1C4.unk04].pad_idx = GWPlayerCfg->pad_idx;
GWPlayerCfg[lbl_1_bss_1C4.unk04].group = GWPlayerCfg->group;
GWPlayerCfg[lbl_1_bss_1C4.unk04].iscom = GWPlayerCfg->iscom;
GWPlayerCfg->character = var_r29;
GWPlayerCfg->pad_idx = var_r28;
GWPlayerCfg->group = 0;
GWPlayerCfg->iscom = 0;
for (i = 0; i < 4; i++) {
GWPlayer[i].character = GWPlayerCfg[i].character;
GWPlayer[i].port = GWPlayerCfg[i].pad_idx;
GWPlayer[i].com = GWPlayerCfg[i].iscom;
GWPlayer[i].team = GWPlayerCfg[i].group;
}
GWPlayerCfg[1].character = sp14[GWSystem.board];
for (i = 1; i < 4; i++) {
GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1;
}
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat);
OSReport("########## dllno - %d\n", sp8[GWSystem.board], GWSystem.board);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_87DC(s32 arg0, StructBss19C* arg1) {
fn_1_7E70();
fn_1_7ECC();
fn_1_731C(lbl_1_bss_1C4.unk00);
fn_1_83B0();
fn_1_8408();
arg1->unk04 = NULL;
}
void fn_1_8A44(void) {
omObjData* var_r31;
var_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_19C.unk00 = var_r31;
lbl_1_bss_19C.unk04 = (void*) fn_1_87DC;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_19C.unk04 != NULL) {
lbl_1_bss_19C.unk04(var_r31, &lbl_1_bss_19C);
}
}
}
void fn_1_8AE0(omObjData* arg0) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 76 + lbl_1_bss_1C4.unk00));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81));
Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96));
arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 8, 8, 0, 1);
}
void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg0->work[0]++, 360.0f);
if (arg0->work[0] >= 360) {
arg0->work[0] = 0;
}
}
void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[7]].pos.y += fn_1_ACC(0.0f, 0.25f, arg0->work[0]++, 360.0f);
Hu3DData[arg0->model[8]].pos.y = Hu3DData[arg0->model[7]].pos.y + 15.0f;
if (arg0->work[0] >= 360) {
arg0->work[0] = 0;
}
}
void fn_1_8F68(void) {
omObjData* temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_174.unk00 = temp_r31;
lbl_1_bss_174.unk04 = (void*) fn_1_8DC0;
lbl_1_bss_174.unk00->data = &lbl_1_bss_174;
fn_1_8AE0(temp_r31);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_174.unk04 != NULL) {
lbl_1_bss_174.unk04(temp_r31, &lbl_1_bss_174);
}
}
}
void fn_1_92D4(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_1C4.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_1C4.unk34[i], spC[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_1C4.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1;
}
}
Vec lbl_1_data_354[] = {
{ -300.0f, 0.0f, 460.0f },
{ -100.0f, -30.0f, 460.0f },
{ 100.0f, -60.0f, 460.0f },
{ 300.0f, -90.0f, 460.0f }
};
void fn_1_9408(omObjData* arg0, s32 arg1) {
s32 var_r30;
s32 temp_r29;
var_r30 = arg1;
temp_r29 = lbl_1_bss_1C4.unk34[var_r30].unk10;
arg0->model[1] = CharModelCreate(temp_r29, 4);
arg0->motion[1] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3));
arg0->motion[3] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5));
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 48 + temp_r29));
arg0->motion[5] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 40 + temp_r29));
CharModelMotionDataClose(temp_r29);
Hu3DModelPosSet(arg0->model[1], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y + 90.0f, lbl_1_data_354[var_r30].z - 15.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62));
Hu3DModelPosSet(arg0->model[2], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y, lbl_1_data_354[var_r30].z);
if (lbl_1_bss_1C4.unk34[var_r30].unk18 == 4) {
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
}
Hu3DModelShadowMapSet(arg0->model[2]);
Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f);
}
void fn_1_9718(omObjData* arg0, StructBss19C* arg1) {
Vec sp20 = { 120.0f, 0.0f, 670.0f };
fn_1_2908(arg0, 1, sp20, -1.0f, 30.0f, 10.0f);
lbl_1_bss_AC.unk04 = (void*) fn_1_A008;
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 2, 0, 0);
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp20, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
fn_1_2224(lbl_1_bss_174.unk00, 2, 2, 0);
arg1->unk04 = 0;
}
void fn_1_98A4(omObjData* arg0, StructBss19C* arg1) {
if (arg0->motion[6] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, 4, 15, 1);
arg1->unk04 = 0;
}
}
void fn_1_992C(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r30 = lbl_1_bss_1C4.unk14++;
temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_D4[temp_r30].unk00 = temp_r3;
lbl_1_bss_D4[temp_r30].unk04 = NULL;
lbl_1_bss_D4[temp_r30].unk00->data = &lbl_1_bss_D4[temp_r30];
fn_1_9408(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_D4[temp_r30].unk04 != NULL) {
lbl_1_bss_D4[temp_r30].unk04(temp_r3, &lbl_1_bss_D4[temp_r30]);
}
}
}
void fn_1_9D08(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 97),
DATA_MAKE_NUM(DATADIR_MSTORY, 108),
DATA_MAKE_NUM(DATADIR_MSTORY, 116),
DATA_MAKE_NUM(DATADIR_MSTORY, 124),
DATA_MAKE_NUM(DATADIR_MSTORY, 131)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 98), DATA_MAKE_NUM(DATADIR_MSTORY, 100), DATA_MAKE_NUM(DATADIR_MSTORY, 101), DATA_MAKE_NUM(DATADIR_MSTORY, 103), DATA_MAKE_NUM(DATADIR_MSTORY, 104) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 109), DATA_MAKE_NUM(DATADIR_MSTORY, 111), DATA_MAKE_NUM(DATADIR_MSTORY, 112), DATA_MAKE_NUM(DATADIR_MSTORY, 114), DATA_MAKE_NUM(DATADIR_MSTORY, 115) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 117), DATA_MAKE_NUM(DATADIR_MSTORY, 119), DATA_MAKE_NUM(DATADIR_MSTORY, 120), DATA_MAKE_NUM(DATADIR_MSTORY, 122), DATA_MAKE_NUM(DATADIR_MSTORY, 123) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 125), DATA_MAKE_NUM(DATADIR_MSTORY, 126), DATA_MAKE_NUM(DATADIR_MSTORY, 127), DATA_MAKE_NUM(DATADIR_MSTORY, 129), DATA_MAKE_NUM(DATADIR_MSTORY, 130) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 132), DATA_MAKE_NUM(DATADIR_MSTORY, 134), DATA_MAKE_NUM(DATADIR_MSTORY, 135), DATA_MAKE_NUM(DATADIR_MSTORY, 137), DATA_MAKE_NUM(DATADIR_MSTORY, 138) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 5, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_A008(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { -120.0f, 0.0f, 670.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_A0EC(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_AC.unk00 = temp_r3;
lbl_1_bss_AC.unk04 = NULL;
lbl_1_bss_AC.unk00->data = &lbl_1_bss_AC;
temp_r30 = lbl_1_bss_1C4.unk00;
fn_1_9D08(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_AC.unk04 != NULL) {
lbl_1_bss_AC.unk04(temp_r3, &lbl_1_bss_AC);
}
}
}
void fn_1_A478(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 170.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1700.0f;
}
void fn_1_A504(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 125.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = -5.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1750.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
}
void fn_1_A5F4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_174.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_174.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 130.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 150.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_174.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}

817
src/REL/mstoryDll/board_miss.c Executable file
View file

@ -0,0 +1,817 @@
#include "REL/mstoryDll.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x1C];
/* 0x034 */ StructFn352C unk34[4];
/* 0x104 */ float unk104;
} StructBss450; // Size 0x108
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ char unk0C[4];
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
} StructBss2D0; // Size 0x18
void fn_1_C360(void);
void fn_1_C7C4(void);
void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1);
void fn_1_D180(void);
void fn_1_D57C(s32 arg0);
void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1);
void fn_1_DC08(omObjData* arg0, StructBss19C* arg1);
void fn_1_DD20(omObjData* arg0, StructBss19C* arg1);
void fn_1_DE04(void);
void fn_1_E228(void);
void fn_1_E2B4(void);
void fn_1_E3E4(void);
void fn_1_E620(void);
StructBss450 lbl_1_bss_450;
StructBss19C lbl_1_bss_428;
StructBss19C lbl_1_bss_400;
StructBss19C lbl_1_bss_3D8;
StructBss19C lbl_1_bss_338[4];
AnimData* lbl_1_bss_330[2];
StructBss2D0 lbl_1_bss_2D0[4];
s32 lbl_1_bss_2CC;
Process* lbl_1_bss_2C8;
s32 lbl_1_data_388[][4] = {
{ MAKE_MESSID(30, 28), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 29), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 30), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 31), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 32), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }
};
s32 lbl_1_data_3D8[] = {
DATADIR_W01,
DATADIR_W02,
DATADIR_W03,
DATADIR_W04,
DATADIR_W05,
DATADIR_W06,
DATADIR_W10,
DATADIR_MARIOMDL1,
DATADIR_LUIGIMDL1,
DATADIR_PEACHMDL1,
DATADIR_YOSHIMDL1,
DATADIR_WARIOMDL1,
DATADIR_DONKEYMDL1,
DATADIR_DAISYMDL1,
DATADIR_WALUIGIMDL1
};
void fn_1_A830(void) {
s32 temp_r3;
temp_r3 = HuDataDirReadAsync(DATADIR_BOARD);
if (temp_r3 != -1) {
while (HuDataGetAsyncStat(temp_r3) == 0) {
HuPrcVSleep();
}
}
HuAR_MRAMtoARAM(DATADIR_BOARD);
while (HuARDMACheck()) {
HuPrcVSleep();
}
HuDataDirClose(DATADIR_BOARD);
temp_r3 = HuDataDirReadAsync(lbl_1_data_3D8[GWSystem.board]);
if (temp_r3 != -1) {
while (HuDataGetAsyncStat(temp_r3) == 0) {
HuPrcVSleep();
}
}
lbl_1_bss_2CC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_A8F8(void) {
s32 i;
s32 j;
lbl_1_bss_2D0[0].unk00 = 0;
lbl_1_bss_2D0[0].unk04 = 0;
lbl_1_bss_2D0[0].unk10 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10;
lbl_1_bss_2D0[0].unk14 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14;
lbl_1_bss_2D0[0].unk08 = 0;
for (i = 1; i < 4; i++) {
lbl_1_bss_2D0[i].unk10 = -1;
lbl_1_bss_2D0[i].unk14 = i;
lbl_1_bss_2D0[i].unk08 = 1;
}
for (i = 1; i < 4; i++) {
do {
lbl_1_bss_2D0[i].unk10 = rand8() % 8;
for (j = 0; j < 4; j++) {
if (i != j && lbl_1_bss_2D0[j].unk10 != -1 && lbl_1_bss_2D0[i].unk10 == lbl_1_bss_2D0[j].unk10) {
break;
}
}
} while (j != 4);
}
for (i = 0; i < 4; i++) {
GWPlayerCfg[i].character = lbl_1_bss_2D0[i].unk10;
GWPlayerCfg[i].pad_idx = lbl_1_bss_2D0[i].unk14;
GWPlayerCfg[i].group = 0;
GWPlayerCfg[i].iscom = lbl_1_bss_2D0[i].unk08;
}
BoardSaveInit(GWSystem.board);
CharKill(-1);
HuDataDirClose(DATADIR_MSTORY);
HuPrcChildCreate(fn_1_A830, 100, 0x3000, 0, lbl_1_bss_2C8);
}
void fn_1_ABAC(void) {
omOvlHisData* var_r30;
s32 sp8[] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 };
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (WipeStatGet() != 0) {
fn_1_B8C();
}
CharModelKill(-1);
MGSeqKillAll();
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY3, 0, var_r30->stat);
do {
fn_1_B8C();
} while (lbl_1_bss_2CC != 1);
CharARAMOpen(GWPlayerCfg[0].character);
CharARAMOpen(GWPlayerCfg[1].character);
CharARAMOpen(GWPlayerCfg[2].character);
CharARAMOpen(GWPlayerCfg[3].character);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2) {
s32 i;
lbl_1_bss_2C8 = arg0;
lbl_1_bss_450.unk04 = arg2;
lbl_1_bss_450.unk10 = arg2;
lbl_1_bss_450.unk00 = arg1;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_2C8, fn_1_E228);
fn_1_3704();
fn_1_D57C(arg2);
HuPrcChildCreate(fn_1_C7C4, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_D180, 100, 0x2000, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_DE04, 100, 0x2000, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_C360, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_AE30(omObjData* arg0) {
if (arg0->work[2] != 0) {
arg0->work[2]--;
return;
}
if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = 0;
}
}
void fn_1_AEBC(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
printWin(var_r30, var_r29, 220, 160, &sp10);
if (lbl_1_bss_428.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_400.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_3D8.unk04 == NULL) {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> FALSE");
} else {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_338[i].unk04 == NULL) {
print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> FALSE", i);
} else {
print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> TRUE", i);
}
}
print8(var_r30, var_r29 + 90, 1.0f, "P:%d W:%d", lbl_1_bss_450.unk04, lbl_1_bss_450.unk10);
print8(var_r30, var_r29 + 110, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 120 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_450.unk34[i].unk00, lbl_1_bss_450.unk34[i].unk04, lbl_1_bss_450.unk34[i].unk08,
lbl_1_bss_450.unk34[i].unk0C, lbl_1_bss_450.unk34[i].unk14, lbl_1_bss_450.unk34[i].unk10);
}
}
}
void fn_1_B230(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x34);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_B28C(void) {
s32 i;
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_450.unk00][1]);
lbl_1_bss_450.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_450.unk10);
fn_1_CE48(3, -1, 15, 1, 0);
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][0]);
fn_1_1ACC(lbl_1_bss_450.unk08, -1);
fn_1_1CE8(lbl_1_bss_450.unk08, MAKE_MESSID(37, 4));
fn_1_CE48(1, -1, 15, 1, 0);
fn_1_1A64(lbl_1_bss_450.unk08);
for (i = 0; i < 4; i++) {
lbl_1_bss_338[i].unk04 = (void*) fn_1_DAA4;
}
do {
fn_1_B8C();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_338[i].unk04 != NULL) {
break;
}
}
} while (i != 4);
lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DC08;
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E2B4);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 == NULL) {
break;
}
}
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_3D8.unk04 == NULL) {
break;
}
}
fn_1_BAC(30);
}
BOOL fn_1_B4A0(void) {
BOOL temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][1]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
BOOL fn_1_B588(void) {
BOOL temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][2]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
BOOL fn_1_B670(void) {
BOOL temp_r31 = FALSE;
fn_1_CE48(3, -1, 15, 1, 0);
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][3]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
fn_1_CE48(1, -1, 15, 1, 0);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1B78(lbl_1_bss_450.unk0C, 1);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
void fn_1_B78C(void) {
fn_1_BAC(60);
fn_1_A8F8();
Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, 4, 15, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, 3, 15, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0);
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E3E4);
fn_1_BAC(150);
}
void fn_1_B8C8(void) {
}
void fn_1_B8CC(void) {
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E620);
lbl_1_bss_3D8.unk04 = (void*) fn_1_CEF4;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DD20;
do {
fn_1_B8C();
} while (lbl_1_bss_3D8.unk04 != NULL);
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 2, 0);
}
void fn_1_B9D0(s32 arg0) {
s32 i;
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (TRUE) {
fn_1_B8C();
if (WipeStatGet() == 0) {
break;
}
}
CharModelKill(-1);
HuAudFadeOut(1);
if (arg0 == 1) {
omOvlReturnEx(1, 1);
} else {
GWPlayerCfg->group = 0;
GWPlayerCfg->character = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10;
GWPlayerCfg->pad_idx = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14;
GWPlayerCfg->iscom = 0;
for (i = 0; i < 4; i++) {
GWPlayer[i].character = GWPlayerCfg[i].character;
GWPlayer[i].port = GWPlayerCfg[i].pad_idx;
GWPlayer[i].com = GWPlayerCfg[i].iscom;
GWPlayer[i].team = GWPlayerCfg[i].group;
}
omOvlGotoEx(OVL_MENT, 1, 10, 0);
}
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_BBD8(s32 arg0, StructBss19C* arg1) {
s32 i;
s32 var_r30 = 0;
fn_1_B230();
fn_1_B28C();
lbl_1_bss_450.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_450.unk10);
while (TRUE) {
fn_1_B8C();
if (fn_1_B4A0()) {
var_r30 = 0;
break;
}
if (fn_1_B588()) {
var_r30 = 2;
break;
}
if (fn_1_B670()) {
var_r30 = 1;
break;
}
}
fn_1_1A64(lbl_1_bss_450.unk08);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_450.unk34[i].unk00 != lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk00) {
Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[1], HU3D_ATTR_DISPOFF);
}
Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[2], HU3D_ATTR_DISPOFF);
}
switch (var_r30) {
case 1:
fn_1_B8C8();
break;
case 0:
fn_1_B78C();
break;
case 2:
fn_1_B8CC();
break;
}
switch (var_r30) {
case 0:
fn_1_ABAC();
break;
case 1:
case 2:
fn_1_B9D0(var_r30);
/* fallthrough */
default:
arg1->unk04 = 0;
break;
}
}
void fn_1_C360(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_428.unk00 = temp_r3;
lbl_1_bss_428.unk04 = (void*) fn_1_BBD8;
lbl_1_bss_428.unk00->data = &lbl_1_bss_428;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_428.unk04 != NULL) {
lbl_1_bss_428.unk04(temp_r3, &lbl_1_bss_428);
}
}
}
void fn_1_C414(omObjData* arg0, s32 arg1) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 63));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 64));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "partybox_fix2-effect_fook1", arg0->model[6]);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
lbl_1_bss_330[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 65 + arg1 * 2), MEMORY_DEFAULT_NUM));
lbl_1_bss_330[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 66 + arg1 * 2), MEMORY_DEFAULT_NUM));
Hu3DAnimCreate(lbl_1_bss_330[0], lbl_1_bss_400.unk00->model[5], "ys26_p0");
Hu3DAnimCreate(lbl_1_bss_330[1], lbl_1_bss_400.unk00->model[5], "ys26_p1");
}
void fn_1_C708(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_C7C4(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_400.unk00 = temp_r3;
lbl_1_bss_400.unk04 = (void*) fn_1_C708;
lbl_1_bss_400.unk00->data = &lbl_1_bss_400;
fn_1_C414(temp_r3, lbl_1_bss_450.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_400.unk04 != NULL) {
lbl_1_bss_400.unk04(temp_r3, &lbl_1_bss_400);
}
}
}
void fn_1_CB48(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 0x61),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x6C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x74),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x7C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x83)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x64), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67), DATA_MAKE_NUM(DATADIR_MSTORY, 0x68) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x6F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72), DATA_MAKE_NUM(DATADIR_MSTORY, 0x73) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x77), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7B) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81), DATA_MAKE_NUM(DATADIR_MSTORY, 0x82) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x86), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89), DATA_MAKE_NUM(DATADIR_MSTORY, 0x8A) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_3D8.unk00->work[0] = arg4;
lbl_1_bss_3D8.unk00->work[1] = arg1;
lbl_1_bss_3D8.unk00->work[2] = arg2 + 1;
}
void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 0.0f, 0.0f, 460.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 0.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_CFD8(omObjData* arg0, StructBss19C* arg1) {
s32 i;
for (i = 0; i < 15; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].rot.y = fn_1_828(0.0f, 135.0f, i, 15.0f);
}
arg1->unk04 = 0;
}
void fn_1_D09C(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { -120.0f, 0.0f, 670.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_D180(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_3D8.unk00 = temp_r3;
lbl_1_bss_3D8.unk04 = NULL;
lbl_1_bss_3D8.unk00->data = &lbl_1_bss_3D8;
fn_1_CB48(temp_r3, lbl_1_bss_450.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_3D8.unk04 != NULL) {
lbl_1_bss_3D8.unk04(temp_r3, &lbl_1_bss_3D8);
}
if (temp_r3->work[0] != 0) {
fn_1_AE30(temp_r3);
}
}
}
void fn_1_D57C(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_450.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_450.unk34[i], spC[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_450.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1;
}
}
Vec lbl_1_data_540[] = {
{ -300.0f, 0.0f, 460.0f },
{ -100.0f, -30.0f, 460.0f },
{ 100.0f, -60.0f, 460.0f },
{ 300.0f, -90.0f, 460.0f }
};
void fn_1_D6B0(omObjData* arg0, s32 arg1) {
s32 var_r30;
s32 temp_r28;
var_r30 = arg1;
temp_r28 = lbl_1_bss_450.unk34[var_r30].unk10;
arg0->model[1] = CharModelCreate(lbl_1_bss_450.unk34[arg1].unk10, 4);
arg0->motion[1] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3));
arg0->motion[3] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
CharModelMotionDataClose(temp_r28);
Hu3DModelPosSet(arg0->model[1], lbl_1_data_540[var_r30].x, 90.0f + lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z - 15.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62));
Hu3DModelPosSet(arg0->model[2], lbl_1_data_540[var_r30].x, lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z);
if (lbl_1_bss_450.unk34[var_r30].unk18 == 4) {
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
}
Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f);
Hu3DModelShadowMapSet(arg0->model[2]);
}
void fn_1_D9A8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[0] = arg4;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[1] = arg1;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[2] = arg2 + 1;
}
void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1) {
float temp_f31;
s32 i;
temp_f31 = Hu3DData[arg0->model[1]].pos.y;
for (i = 0; i < 60; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].pos.y = fn_1_948(temp_f31, 0.0f, i, 60.0f);
Hu3DData[arg0->model[2]].pos.y = fn_1_948(temp_f31 - 90.0f, -90.0f, i, 60.0f);
}
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
arg1->unk04 = 0;
}
void fn_1_DC08(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 120.0f, 0.0f, 670.0f };
lbl_1_bss_3D8.unk04 = (void*) fn_1_D09C;
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0);
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_DD20(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 600.0f, 0.0f, 700.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_DE04(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r30 = lbl_1_bss_450.unk14++;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_338[temp_r30].unk00 = temp_r3;
lbl_1_bss_338[temp_r30].unk04 = NULL;
lbl_1_bss_338[temp_r30].unk00->data = lbl_1_bss_338;
fn_1_D6B0(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_338[temp_r30].unk04 != NULL) {
lbl_1_bss_338[temp_r30].unk04(temp_r3, &lbl_1_bss_338[temp_r30]);
}
if (temp_r3->work[0] != 0) {
fn_1_AE30(temp_r3);
}
}
}
void fn_1_E228(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 170.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1700.0f;
}
void fn_1_E2B4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 125.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = -5.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1750.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
if (lbl_1_bss_450.unk104 != 0.0f) {
var_r31->unk08.y = 125.0f + lbl_1_bss_450.unk104;
}
}
void fn_1_E3E4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_400.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_400.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 100.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 125.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_400.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}
void fn_1_E620(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 220.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1600.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
}

1012
src/REL/mstoryDll/main.c Executable file

File diff suppressed because it is too large Load diff

691
src/REL/mstoryDll/mg_clear.c Executable file
View file

@ -0,0 +1,691 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/objsub.h"
#include "game/printfunc.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ char unk0C[4];
/* 0x010 */ s32 unk10;
/* 0x014 */ char unk14[0x20];
/* 0x034 */ StructFn352C unk34[4];
/* 0x104 */ s32 unk104;
} StructBss608; // Size 0x108
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
} StructData570; // Size 0x14
void fn_1_FD1C(void);
void fn_1_10298(omObjData* arg0, StructBss19C* arg1);
void fn_1_10384(omObjData* arg0, StructBss19C* arg1);
void fn_1_10450(omObjData* arg0, StructBss19C* arg1);
void fn_1_1054C(void);
void fn_1_108F8(void);
void fn_1_10C6C(s32 arg0);
void fn_1_10FD0(void);
void fn_1_112A0(void);
void fn_1_1132C(void);
void fn_1_1141C(void);
void fn_1_11534(void);
StructBss608 lbl_1_bss_608;
StructBss19C lbl_1_bss_5E0;
StructBss19C lbl_1_bss_5B8;
StructBss19C lbl_1_bss_590;
StructBss19C lbl_1_bss_568;
AnimData* lbl_1_bss_560[2];
s32 lbl_1_bss_55C;
Process* lbl_1_bss_558;
StructData570 lbl_1_data_570[] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }
};
s32 lbl_1_data_930[][4] = {
{ MAKE_MESSID(30, 72), MAKE_MESSID(30, 73) },
{ MAKE_MESSID(30, 74), MAKE_MESSID(30, 75) },
{ MAKE_MESSID(30, 76), MAKE_MESSID(30, 77) },
{ MAKE_MESSID(30, 78), MAKE_MESSID(30, 79) },
{ MAKE_MESSID(30, 80), MAKE_MESSID(30, 81) }
};
void fn_1_E710(Process* arg0, s32 arg1, s32 arg2) {
lbl_1_bss_558 = arg0;
lbl_1_bss_608.unk00 = arg1;
lbl_1_bss_608.unk10 = arg2;
fn_1_BF4();
lbl_1_bss_608.unk104 = fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_558, fn_1_112A0);
fn_1_3704();
fn_1_10C6C(arg2);
HuPrcChildCreate(fn_1_1054C, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_108F8, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_10FD0, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_FD1C, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_E828(omObjData* arg0) {
if (arg0->work[2] != 0) {
arg0->work[2]--;
return;
}
if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = 0;
}
}
void fn_1_E8B4(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
printWin(var_r30, var_r29, 220, 130, &sp10);
if (lbl_1_bss_5E0.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_5B8.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_590.unk04 == NULL) {
print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE");
}
if (lbl_1_bss_568.unk04 == NULL) {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> FALSE");
} else {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> TRUE");
}
print8(var_r30, var_r29 + 60, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_608.unk00, lbl_1_bss_608.unk04, lbl_1_bss_608.unk10);
print8(var_r30, var_r29 + 80, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 90 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_608.unk34[i].unk00, lbl_1_bss_608.unk34[i].unk04, lbl_1_bss_608.unk34[i].unk08,
lbl_1_bss_608.unk34[i].unk0C, lbl_1_bss_608.unk34[i].unk14, lbl_1_bss_608.unk34[i].unk10);
}
}
}
void fn_1_EC00(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x36);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_EC5C(void) {
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
fn_1_1D1C(lbl_1_bss_608.unk08, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0);
fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][0]);
fn_1_1ACC(lbl_1_bss_608.unk08, -1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_608.unk08);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 2, 2, 0, 0);
fn_1_BAC(90);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 4, 15, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 4, 15, 0);
fn_1_2224(lbl_1_bss_5B8.unk00, 2, 2, 0);
fn_1_BAC(60);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 1, 84, 1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 84, 1);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1132C);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10450;
do {
fn_1_B8C();
} while (lbl_1_bss_5B8.unk04 != NULL);
fn_1_BAC(10);
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 3, 15, 1);
if (lbl_1_bss_608.unk00 == 0) {
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][2]);
} else {
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][0]);
}
fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 5) + lbl_1_bss_608.unk00, 2);
fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][1]);
fn_1_1ACC(lbl_1_bss_608.unk08, -1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_608.unk08);
}
void fn_1_EFE0(s32 arg0, StructBss19C* arg1) {
s32 temp_r31;
temp_r31 = HuAudSStreamPlay(7);
do {
fn_1_B8C();
} while (HuAudSStreamStatGet(temp_r31) != 0);
HuAudSeqPause(lbl_1_bss_58[0], 0, 1000);
arg1->unk04 = 0;
}
void fn_1_F050(omObjData* arg0, StructBss19C* arg1) {
s32 temp_r31;
temp_r31 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00;
fn_1_BAC(150);
OSReport("########## PRESENT_SE : %d\n", temp_r31);
HuAudFXPlay(0x8D4 + temp_r31);
if (lbl_1_data_570[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00].unk04 == 1) {
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 0, 0);
fn_1_BAC(60);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 12, 0, 1);
} else {
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 1, 0);
}
arg1->unk04 = 0;
}
void fn_1_F19C(void) {
s32 i;
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 2, 15, 1);
for (i = 0; i < 30; i++) {
fn_1_B8C();
if (lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 != 5) {
Hu3DData[lbl_1_bss_568.unk00->model[1]].pos.x = fn_1_828(120.0f, 80.0f, i, 30.0f);
}
Hu3DData[lbl_1_bss_568.unk00->model[1]].rot.y = fn_1_828(-60.0f, -90.0f, i, 30.0f);
}
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 5, 5, 0);
while (TRUE) {
fn_1_B8C();
if (Hu3DMotionTimeGet(lbl_1_bss_568.unk00->model[1]) >= 35.0f) {
break;
}
}
Hu3DModelPosSet(lbl_1_bss_5B8.unk00->model[5], 0.0f, 0.0f, 0.0f);
Hu3DModelHookReset(lbl_1_bss_5B8.unk00->model[9]);
Hu3DModelHookSet(lbl_1_bss_568.unk00->model[1], CharModelHookNameGet(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 1, 1), lbl_1_bss_5B8.unk00->model[5]);
fn_1_BAC(60);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10298;
HuAudFXPlay(0xA3);
HuAudCharVoicePlay(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0x128);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 6, 6, 0, 0);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[6], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(lbl_1_bss_5B8.unk00->model[5], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 6, 5, 0);
HuAudSeqPause(lbl_1_bss_58[0], 1, 1000);
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.0f);
Hu3DMotionTimeSet(lbl_1_bss_568.unk00->model[1], 50.0f);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 8, 8, 0, 1);
fn_1_BAC(30);
HuAudFXPlay(0xA9);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_11534);
fn_1_BAC(60);
lbl_1_bss_568.unk04 = (void*) fn_1_F050;
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
lbl_1_bss_590.unk04 = (void*) fn_1_EFE0;
fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 6) + lbl_1_bss_608.unk00, 0);
fn_1_6C1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, 134), 0, 300);
fn_1_1CE8(lbl_1_bss_608.unk08, MAKE_MESSID(37, 4));
fn_1_1A64(lbl_1_bss_608.unk08);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1141C);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10384;
fn_1_BAC(30);
Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.1f);
fn_1_BAC(180);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
}
s32 fn_1_F780(s32 arg0) {
if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) {
return 1;
}
if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) {
return 1;
}
if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) {
return 1;
}
if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) {
return 1;
}
if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
return 1;
}
if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) {
return 1;
}
return 0;
}
void fn_1_F86C(void) {
Hu3DAllKill();
HuSprClose();
HuSprInit();
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
fn_1_BAC(60);
SLCommonSet();
SLSaveBoardStory();
if (SLSaveFlagGet() == 1) {
SLSave();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_55C = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_F910(void) {
omOvlHisData* var_r31;
msmSeStopAll(FALSE, 1000);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
CharModelKill(-1);
HuAudFXAllStop();
HuAudSStreamAllStop();
{
s32 sp8[] = { 53, 56, 55, 54, 57 };
GWMGAvailSet(omMgIndexGet(sp8[lbl_1_bss_608.unk00]) + 0x191);
}
GWGameStat.present[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00] = 1;
OSReport("########## PRESENTFLG CHR:%d, MAP:%d, PRESENT:%d\n", lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, lbl_1_bss_608.unk00, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00);
var_r31 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 20, var_r31->stat);
omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00 + 1, 0);
}
void fn_1_FAE4(omObjData* arg0, StructBss19C* arg1) {
s32 sp8 = 0;
lbl_1_bss_58[0] = HuAudSeqPlay(0x36);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
fn_1_EC5C();
fn_1_F19C();
fn_1_F910();
arg1->unk04 = 0;
}
void fn_1_FD1C(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_5E0.unk00 = temp_r3;
lbl_1_bss_5E0.unk04 = (void*) fn_1_FAE4;
lbl_1_bss_5E0.unk00->data = &lbl_1_bss_5E0;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_5E0.unk04 != NULL) {
lbl_1_bss_5E0.unk04(temp_r3, &lbl_1_bss_5E0);
}
}
}
void fn_1_FDD0(omObjData* arg0, s32 arg1) {
s32 temp_r29;
temp_r29 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10;
arg0->model[7] = Hu3DModelCreateFile(lbl_1_data_570[temp_r29 * 6 + arg1].unk00);
arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]);
if (lbl_1_data_570[temp_r29 * 6 + arg1].unk04 == 1) {
arg0->motion[12] = Hu3DJointMotionFile(arg0->model[7], DATA_MAKE_NUM(DATADIR_MSTORY4, 48));
}
Hu3DModelPosSet(arg0->model[7], 0.0f, 180.0f, 825.0f);
Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[7]);
fn_1_1DCC(arg0, 7, 7, 0, 2);
HuDataDirClose(DATADIR_MSTORY4);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81));
Hu3DModelShadowSet(arg0->model[5]);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 83));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelPosSet(arg0->model[6], 25.0f, 125.0f, 900.0f);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96));
arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 8, 8, 0, 2);
arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 84));
arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]);
Hu3DModelPosSet(arg0->model[9], 0.0f, 0.0f, 460.0f);
Hu3DModelShadowSet(arg0->model[9]);
fn_1_1DCC(arg0, 9, 9, 0, 2);
Hu3DModelHookSet(arg0->model[9], "carrier2-target0", arg0->model[5]);
lbl_1_bss_560[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 85 + arg1 * 2), MEMORY_DEFAULT_NUM));
lbl_1_bss_560[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 86 + arg1 * 2), MEMORY_DEFAULT_NUM));
Hu3DAnimCreate(lbl_1_bss_560[0], lbl_1_bss_5B8.unk00->model[5], "cylinder3");
Hu3DAnimCreate(lbl_1_bss_560[1], lbl_1_bss_5B8.unk00->model[5], "wakuwaku");
}
void fn_1_10298(omObjData* arg0, StructBss19C* arg1) {
Mtx sp8;
Hu3DData[arg0->model[7]].pos.y = fn_1_ACC(180.0f, 185.0f, arg1->unk08++, 360.0f);
Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8);
Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_10384(omObjData* arg0, StructBss19C* arg1) {
Mtx sp8;
Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f;
Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8);
Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]);
arg1->unk0C += 2;
}
void fn_1_10450(omObjData* arg0, StructBss19C* arg1) {
fn_1_1DCC(arg0, 9, 9, 0, 1);
while (TRUE) {
fn_1_B8C();
Hu3DData[arg0->model[9]].pos.z += 2.5f;
if (Hu3DData[arg0->model[9]].pos.z >= 670.0f) {
break;
}
}
Hu3DData[arg0->model[9]].pos.z = 670.0f;
Hu3DMotionSpeedSet(arg0->model[9], 0.0f);
arg1->unk04 = 0;
}
void fn_1_1054C(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_5B8.unk00 = temp_r3;
lbl_1_bss_5B8.unk04 = NULL;
fn_1_FDD0(temp_r3, lbl_1_bss_608.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_5B8.unk04 != NULL) {
lbl_1_bss_5B8.unk04(temp_r3, &lbl_1_bss_5B8);
}
}
}
void fn_1_105F8(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0061),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x006C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0074),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x007C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0083)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0062), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0064), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0065), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0067), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0068) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x006D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x006F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0070), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0072), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0073) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0075), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0077), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0078), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007B) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x007D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0081), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0082) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0084), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0086), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0087), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0089), DATA_MAKE_NUM(DATADIR_MSTORY, 0x008A) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 5, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_108F8(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_590.unk00 = temp_r3;
lbl_1_bss_590.unk04 = NULL;
fn_1_105F8(temp_r3, lbl_1_bss_608.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_590.unk04 != NULL) {
lbl_1_bss_590.unk04(temp_r3, &lbl_1_bss_590);
}
}
}
void fn_1_10C6C(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_608.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_608.unk34[i], spC[i]);
}
}
void fn_1_10D50(omObjData* arg0, s32 arg1) {
s32 temp_r30;
temp_r30 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10;
arg0->model[1] = CharModelCreate(temp_r30, 1);
arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2));
arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53));
arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 24 + temp_r30));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 32 + temp_r30));
CharModelMotionDataClose(temp_r30);
Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, -60.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_10F24(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_568.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_568.unk00->work[0] = arg4;
lbl_1_bss_568.unk00->work[1] = arg1;
lbl_1_bss_568.unk00->work[2] = arg2 + 1;
}
void fn_1_10FD0(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_568.unk00 = temp_r3;
lbl_1_bss_568.unk04 = NULL;
lbl_1_bss_568.unk00->data = &lbl_1_bss_568;
fn_1_10D50(temp_r3, lbl_1_bss_608.unk04); // Second argument required to match.
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_568.unk04 != NULL) {
lbl_1_bss_568.unk04(temp_r3, &lbl_1_bss_568);
}
if (temp_r3->work[0] != 0) {
fn_1_E828(temp_r3);
}
}
}
void fn_1_112A0(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 125.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1750.0f;
}
void fn_1_1132C(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 100.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1400.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f);
}
void fn_1_1141C(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk14 = 0.0f;
var_r31->unk18 = Hu3DData[lbl_1_bss_5B8.unk00->model[7]].pos.y;
var_r31->unk1C = 0.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk34 = 0.0f;
var_r31->unk3C = fn_1_828(1100.0f, 1400.0f, var_r31->unk40++, 240.0f);
fn_1_3ABC(var_r31, 30.0f);
}
void fn_1_11534(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 160.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1100.0f;
fn_1_61E8(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f);
}

446
src/REL/mstoryDll/mg_miss.c Executable file
View file

@ -0,0 +1,446 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/printfunc.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
/* 0x14 */ char unk14[0x20];
/* 0x34 */ StructFn352C unk34[4];
} StructBss7B4; // Size 0x104
void fn_1_12630(void);
void fn_1_129D4(void);
void fn_1_12C94(s32 arg0);
void fn_1_12F20(omObjData* arg0, StructBss19C* arg1);
void fn_1_12FA8(omObjData*, StructBss19C* arg1);
void fn_1_130C0(void);
void fn_1_13570(void);
void fn_1_13880(void);
void fn_1_1390C(void);
StructBss7B4 lbl_1_bss_7B4;
StructBss19C lbl_1_bss_78C;
StructBss19C lbl_1_bss_764;
StructBss19C lbl_1_bss_73C;
StructBss19C lbl_1_bss_714;
Process* lbl_1_bss_710;
s32 lbl_1_data_AF8[][3] = {
{ MAKE_MESSID(30, 40), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 41), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 42), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 43), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 44), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }
};
void fn_1_11624(Process* arg0, s32 arg1, s32 arg2) {
lbl_1_bss_710 = arg0;
lbl_1_bss_7B4.unk00 = arg1;
lbl_1_bss_7B4.unk10 = arg2;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_710, fn_1_13880);
fn_1_3704();
fn_1_12C94(arg2);
HuPrcChildCreate(fn_1_129D4, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_130C0, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_13570, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_12630, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_11730(void) {
s32 var_r31 = 16;
s32 var_r30 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
fontcolor = FONT_COLOR_WHITE;
printWin(var_r31, var_r30, 220, 120, &sp10);
if (lbl_1_bss_78C.unk04 == NULL) {
print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_764.unk04 == NULL) {
print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_73C.unk04 == NULL) {
print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> FALSE");
} else {
print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> TRUE");
}
if (lbl_1_bss_714.unk04 == NULL) {
print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> TRUE");
}
print8(var_r31, var_r30 + 50, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_7B4.unk00, lbl_1_bss_7B4.unk04, lbl_1_bss_7B4.unk10);
print8(var_r31, var_r30 + 70, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r31, var_r30 + 80 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_7B4.unk34[i].unk00, lbl_1_bss_7B4.unk34[i].unk04, lbl_1_bss_7B4.unk34[i].unk08,
lbl_1_bss_7B4.unk34[i].unk0C, lbl_1_bss_7B4.unk34[i].unk14, lbl_1_bss_7B4.unk34[i].unk10);
}
}
}
void fn_1_11A8C(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x34);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_11AE8(void) {
s32 spC = 0;
s32 sp8 = 0;
fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 2, 15, 0);
lbl_1_bss_73C.unk04 = (void*) fn_1_12F20;
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_7B4.unk00][1]);
HuAudCharVoicePlay(lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10, 0x12E);
lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10);
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 2, 15, 1);
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][0]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, -1);
fn_1_1CE8(lbl_1_bss_7B4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_7B4.unk08);
}
BOOL fn_1_11C6C(void) {
BOOL temp_r31 = FALSE;
HuWinInsertMesSet(lbl_1_bss_7B4.unk08, MAKE_MESSID(30, 54) + lbl_1_bss_7B4.unk00, 3);
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][1]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, 5);
lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_7B4.unk0C);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_7B4.unk0C);
if (temp_r31) {
fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 4, 15, 0);
lbl_1_bss_73C.unk04 = NULL;
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 3, 15, 1);
}
return temp_r31;
}
BOOL fn_1_11DD8(void) {
s32 temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][2]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, 5);
lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1B78(lbl_1_bss_7B4.unk0C, 1);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_7B4.unk0C);
return temp_r31;
}
void fn_1_11EC4(void) {
lbl_1_bss_73C.unk04 = (void*) fn_1_12FA8;
HuAudSeqFadeOut(lbl_1_bss_58[0], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1390C);
fn_1_BAC(150);
}
void fn_1_11F28(void) {
}
void fn_1_11F2C(s32 arg0) {
omOvlHisData* var_r30;
OverlayID sp8[] = { OVL_M445, OVL_M448, OVL_M447, OVL_M446, OVL_M449 };
if (arg0 != 0) {
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
}
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
CharModelKill(-1);
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat);
if (arg0 == 0) {
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
} else {
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_12070(omObjData* arg0, StructBss19C* arg1) {
s32 var_r31;
fn_1_11A8C();
fn_1_11AE8();
lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10);
while (TRUE) {
fn_1_B8C();
if (fn_1_11C6C()) {
var_r31 = 0;
break;
}
if (fn_1_11DD8()) {
var_r31 = 1;
break;
}
}
fn_1_1A64(lbl_1_bss_7B4.unk08);
fn_1_BAC(60);
switch (var_r31) {
case 0:
fn_1_11EC4();
break;
case 1:
fn_1_11F28();
break;
}
fn_1_11F2C(var_r31);
arg1->unk04 = NULL;
}
void fn_1_12630(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_78C.unk00 = temp_r3;
lbl_1_bss_78C.unk04 = (void*) fn_1_12070;
lbl_1_bss_78C.unk00->data = &lbl_1_bss_78C;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_78C.unk04 != NULL) {
lbl_1_bss_78C.unk04(temp_r3, &lbl_1_bss_78C);
}
}
}
void fn_1_126E4(omObjData* arg0) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(lbl_1_bss_7B4.unk00 + DATA_MAKE_NUM(DATADIR_MSTORY, 76));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]);
fn_1_1DCC(arg0, 6, 6, 0, 2);
}
void fn_1_12918(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_129D4(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_764.unk00 = temp_r3;
lbl_1_bss_764.unk04 = (void*) fn_1_12918;
lbl_1_bss_764.unk00->data = &lbl_1_bss_764;
fn_1_126E4(temp_r3);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_764.unk04 != NULL) {
lbl_1_bss_764.unk04(temp_r3, &lbl_1_bss_764);
}
}
}
void fn_1_12C94(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_7B4.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_7B4.unk34[i], spC[i]);
}
}
void fn_1_12D78(omObjData* arg0) {
s32 temp_r30;
temp_r30 = lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10;
arg0->model[1] = CharModelCreate(temp_r30, 1);
arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24));
arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 52));
arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72));
arg0->motion[5] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53));
CharModelVoiceEnableSet(temp_r30, arg0->motion[2], 0);
CharModelMotionDataClose(temp_r30);
Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, -45.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_12F20(omObjData* arg0, StructBss19C* arg1) {
if (arg0->motion[2] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, 3, 15, 1);
arg1->unk04 = 0;
}
}
void fn_1_12FA8(omObjData* arg0, StructBss19C* arg1) {
s32 i;
fn_1_BAC(10);
fn_1_1DCC(arg0, 1, 5, 15, 0);
fn_1_B8C();
Hu3DMotionTimeSet(arg0->model[1], 60.0f);
for (i = 0; i < 50; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].rot.y = fn_1_828(-60.0f, -120.0f, i, 60.0f);
}
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_130C0(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_73C.unk00 = temp_r3;
lbl_1_bss_73C.unk04 = NULL;
lbl_1_bss_73C.unk00->data = &lbl_1_bss_73C;
fn_1_12D78(temp_r3);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_73C.unk04 != NULL) {
lbl_1_bss_73C.unk04(temp_r3, &lbl_1_bss_73C);
}
}
}
void fn_1_132EC(omObjData* arg0, s32 arg1) {
s32 sp8[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 97),
DATA_MAKE_NUM(DATADIR_MSTORY, 108),
DATA_MAKE_NUM(DATADIR_MSTORY, 116),
DATA_MAKE_NUM(DATADIR_MSTORY, 124),
DATA_MAKE_NUM(DATADIR_MSTORY, 131)
};
s32 sp1C[][3] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89) }
};
arg0->model[1] = Hu3DModelCreateFile(sp8[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][2]);
Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 45.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_13570(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_714.unk00 = temp_r3;
lbl_1_bss_714.unk04 = NULL;
lbl_1_bss_714.unk00->data = &lbl_1_bss_714;
fn_1_132EC(temp_r3, lbl_1_bss_7B4.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_714.unk04 != NULL) {
lbl_1_bss_714.unk04(temp_r3, &lbl_1_bss_714);
}
}
}
void fn_1_13880(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 125.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1750.0f;
}
void fn_1_1390C(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_764.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_764.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 130.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 150.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_764.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}

116
src/REL/mstoryDll/save.c Executable file
View file

@ -0,0 +1,116 @@
#include "REL/mstoryDll.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/flag.h"
#include "game/hsfman.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
s32 lbl_1_bss_8BC;
Process* lbl_1_bss_8B8;
s32 fn_1_13B48(s32 arg0) {
if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) {
return 1;
}
if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) {
return 1;
}
if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) {
return 1;
}
if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) {
return 1;
}
if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
return 1;
}
if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) {
return 1;
}
return 0;
}
void fn_1_13C34(void) {
float sp8[2];
s32 temp_r30;
s32 var_r29;
s32 var_r31;
temp_r30 = 1;
Hu3DAllKill();
HuSprClose();
HuSprInit();
if (SLSaveFlagGet() == 0) {
lbl_1_bss_8BC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
espInit();
HuPrcVSleep();
var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0);
espPosSet(var_r29, 288.0f, 240.0f);
espAttrReset(var_r29, 4);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
if (SLSaveFlagGet() == 1) {
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22));
var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
winData[var_r31].active_pad = 1;
HuWinAttrSet(var_r31, 0x10);
HuWinExAnimIn(var_r31);
HuWinMesSet(var_r31, MAKE_MESSID(30, 22));
temp_r30 = HuWinChoiceGet(var_r31, 0);
HuWinExAnimOut(var_r31);
HuWinExCleanup(var_r31);
if (SLSaveFlagGet() == 1 && temp_r30 == 0) {
SLCommonSet();
SLSaveBoardStory();
SLSave();
}
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_8BC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_13E2C(void) {
_SetFlag(9);
if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5)) && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9));
HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet());
do {
fn_1_B8C();
} while (lbl_1_bss_8BC != 1);
omOvlGotoEx(OVL_MSTORY2, 1, 0, 0);
} else {
OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9));
HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet());
do {
fn_1_B8C();
} while (lbl_1_bss_8BC != 1);
omOvlGotoEx(OVL_MENT, 1, 10, 0);
}
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_14150(Process* arg0) {
lbl_1_bss_8B8 = arg0;
HuPrcChildCreate(fn_1_13E2C, 100, 0x2000, 0, HuPrcCurrentGet());
}