1353 lines
42 KiB
C
1353 lines
42 KiB
C
#include "REL/mgmodedll.h"
|
|
#include "game/audio.h"
|
|
#include "game/esprite.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/saveload.h"
|
|
#include "game/wipe.h"
|
|
|
|
#include "ext_math.h"
|
|
#include "rel_sqrt_consts.h"
|
|
|
|
typedef struct camera_view_params {
|
|
Vec rot;
|
|
Vec pos;
|
|
float zoom;
|
|
} CameraViewParams;
|
|
|
|
CameraViewParams lbl_1_data_0[1] = { { { -5, 0, 0 }, { 0, 125, 0 }, 1750 } };
|
|
|
|
omObjData *lbl_1_bss_2DC;
|
|
Process *lbl_1_bss_2D8;
|
|
s32 lbl_1_bss_2D4;
|
|
s32 lbl_1_bss_2D0;
|
|
s16 lbl_1_bss_2CE;
|
|
s16 lbl_1_bss_2CC;
|
|
Vec lbl_1_bss_2C0;
|
|
Vec lbl_1_bss_2B4;
|
|
float lbl_1_bss_2B0;
|
|
s16 lbl_1_bss_2A8[4];
|
|
s16 lbl_1_bss_2A6;
|
|
s16 lbl_1_bss_2A4;
|
|
Vec lbl_1_bss_28C[2];
|
|
Vec lbl_1_bss_274[2];
|
|
float lbl_1_bss_26C[2];
|
|
StructBss8 lbl_1_bss_8;
|
|
s16 lbl_1_bss_4;
|
|
s32 lbl_1_bss_0;
|
|
|
|
void fn_1_464(void);
|
|
void fn_1_54F4(void);
|
|
|
|
void ObjectSetup(void)
|
|
{
|
|
s32 glight;
|
|
|
|
OSReport("******* MG ObjectSetup *********\n");
|
|
lbl_1_bss_2D8 = omInitObjMan(50, 8192);
|
|
lbl_1_bss_28C[0].x = -70;
|
|
lbl_1_bss_28C[0].y = 0;
|
|
lbl_1_bss_28C[0].z = 0;
|
|
lbl_1_bss_274[0].x = 0;
|
|
lbl_1_bss_274[0].y = 130;
|
|
lbl_1_bss_274[0].z = -186;
|
|
lbl_1_bss_26C[0] = 1360;
|
|
lbl_1_bss_2C0 = lbl_1_bss_28C[0];
|
|
lbl_1_bss_2B4 = lbl_1_bss_274[0];
|
|
lbl_1_bss_2B0 = lbl_1_bss_26C[0];
|
|
lbl_1_bss_2D0 = 0;
|
|
_ClearFlag(0x10000);
|
|
_ClearFlag(0x10008);
|
|
GWSystem.mg_type = -1;
|
|
GWSystem.player_curr = 0;
|
|
lbl_1_bss_4 = omovlevtno;
|
|
if (lbl_1_bss_4 == 0) {
|
|
mgGameStatBackup = GWGameStat;
|
|
}
|
|
lbl_1_bss_2CE = -1;
|
|
mgBoardHostEnableF = 1;
|
|
mgPracticeEnableF = 0;
|
|
Hu3DCameraCreate(1);
|
|
Hu3DCameraPerspectiveSet(1, 42, 20, 15000, 1.2f);
|
|
Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1);
|
|
glight = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255);
|
|
Hu3DGLightInfinitytSet(glight);
|
|
HuPrcChildCreate(fn_1_464, 100, 12288, 0, lbl_1_bss_2D8);
|
|
HuPrcChildCreate(fn_1_54F4, 200, 4096, 0, lbl_1_bss_2D8);
|
|
lbl_1_bss_2DC = omAddObjEx(lbl_1_bss_2D8, 32730, 0, 0, -1, omOutView);
|
|
Hu3DBGColorSet(0, 0, 0);
|
|
HuWinInit(1);
|
|
fn_1_279FC(0);
|
|
}
|
|
|
|
void fn_1_52DC(void);
|
|
|
|
void fn_1_6F8(void);
|
|
|
|
void fn_1_464(void)
|
|
{
|
|
s16 i;
|
|
fn_1_52DC();
|
|
if (lbl_1_bss_4 == 0) {
|
|
HuAudSStreamPlay(12);
|
|
fn_1_19018();
|
|
}
|
|
else {
|
|
HuAudSeqPlay(44);
|
|
for (i = 0; i < 4; i++) {
|
|
lbl_1_bss_8.unk24[i].unk68 = GWPlayerCfg[i].character;
|
|
lbl_1_bss_8.unk24[i].unk60 = GWPlayerCfg[i].iscom;
|
|
lbl_1_bss_8.unk24[i].unk6C = GWPlayerCfg[i].pad_idx;
|
|
lbl_1_bss_8.unk24[i].unk64 = GWPlayerCfg[i].diff;
|
|
}
|
|
CZoom = 1600;
|
|
Center.x = Center.z = 0;
|
|
Center.y = 215;
|
|
CRot.x = 0;
|
|
CRot.y = CRot.z = 0;
|
|
if (lbl_1_bss_4 == 1 || lbl_1_bss_4 == 2 || lbl_1_bss_4 == 3 || lbl_1_bss_4 == 4) {
|
|
Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 640);
|
|
Hu3DMotionSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6]);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[5], HU3D_MOTATTR_LOOP);
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
fn_1_6F8();
|
|
fn_1_2592C(0x1E0035, 3, 0);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
while (1) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
Vec lbl_1_data_40[4] = {
|
|
{ 108, 190, 0 },
|
|
{ 228, 190, 0 },
|
|
{ 348, 190, 0 },
|
|
{ 468, 190, 0 },
|
|
};
|
|
|
|
void fn_1_DF0(void);
|
|
void fn_1_38D8(void);
|
|
void fn_1_4010(void);
|
|
|
|
s32 fn_1_487C(void);
|
|
void fn_1_4ADC(void);
|
|
|
|
void fn_1_6F8(void)
|
|
{
|
|
s16 i;
|
|
s16 time;
|
|
if (lbl_1_bss_4 == 1 || lbl_1_bss_4 == 2 || lbl_1_bss_4 == 3 || lbl_1_bss_4 == 4) {
|
|
lbl_1_bss_2A6 = 0;
|
|
goto freeplay;
|
|
}
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionTimeSet(lbl_1_bss_2C80[9], 0);
|
|
for (time = 0; time <= 30; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (time > i * 2 && time < (i * 2) + 20) {
|
|
float weight = (time - (i * 2)) / 20.0;
|
|
Vec pos2D = lbl_1_data_40[i];
|
|
Vec pos3D;
|
|
pos2D.z = 800;
|
|
pos2D.y -= (1.0 - sind(weight * 90.0f)) * 300.0;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
while (1) {
|
|
if (lbl_1_bss_2CE == -1) {
|
|
lbl_1_bss_2CE = fn_1_2530C(0, 0, 0);
|
|
}
|
|
HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A | PAD_BUTTON_B);
|
|
HuWinMesSpeedSet(lbl_1_bss_2CE, 1);
|
|
HuAudFXPlay(68);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280001, -1, -1);
|
|
lbl_1_bss_2CC = fn_1_25CA8(0x280018);
|
|
lbl_1_bss_2A6 = 0;
|
|
espPosSet(lbl_1_bss_2C2C[0], -20 + lbl_1_data_40[lbl_1_bss_2A6].x, -10 + lbl_1_data_40[lbl_1_bss_2A6].y);
|
|
espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
HuWinMesSpeedSet(lbl_1_bss_2CE, 0);
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999);
|
|
while (1) {
|
|
s16 delta = 0;
|
|
if ((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A6 > 0) {
|
|
delta = -1;
|
|
}
|
|
else if ((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A6 < 3) {
|
|
delta = 1;
|
|
}
|
|
if (delta != 0) {
|
|
HuAudFXPlay(0);
|
|
lbl_1_bss_2A6 += delta;
|
|
espPosSet(lbl_1_bss_2C2C[0], -20 + lbl_1_data_40[lbl_1_bss_2A6].x, -10 + lbl_1_data_40[lbl_1_bss_2A6].y);
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999);
|
|
}
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_A) {
|
|
HuAudFXPlay(2);
|
|
if (lbl_1_bss_2A6 != 2) {
|
|
break;
|
|
}
|
|
if (fn_1_487C() == 0) {
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_B) {
|
|
s16 choice;
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280006, -1, -1);
|
|
choice = HuWinChoiceGet(lbl_1_bss_2CE, 1);
|
|
if (choice != 0) {
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999);
|
|
espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
continue;
|
|
}
|
|
else {
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2D0 = 1;
|
|
while (1) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
lbl_1_bss_4 = 0;
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
if (lbl_1_bss_2A6 == 0) {
|
|
freeplay:
|
|
fn_1_DF0();
|
|
}
|
|
else if (lbl_1_bss_2A6 == 1) {
|
|
fn_1_38D8();
|
|
}
|
|
else if (lbl_1_bss_2A6 == 2) {
|
|
fn_1_4010();
|
|
}
|
|
else if (lbl_1_bss_2A6 == 3) {
|
|
fn_1_4ADC();
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1B0C(void);
|
|
s32 fn_1_21C4(void);
|
|
s32 fn_1_2940(void);
|
|
s32 fn_1_3150(void);
|
|
|
|
void fn_1_DF0(void)
|
|
{
|
|
s16 exitF = 0;
|
|
s16 time;
|
|
s16 i;
|
|
ModelData *modelP;
|
|
Vec pos2D;
|
|
Vec pos3D;
|
|
|
|
Vec posModel;
|
|
float weight;
|
|
|
|
if (lbl_1_bss_4 == 1) {
|
|
lbl_1_bss_2A4 = 0;
|
|
goto freeplay;
|
|
}
|
|
if (lbl_1_bss_4 == 2) {
|
|
lbl_1_bss_2A4 = 1;
|
|
goto teamplay;
|
|
}
|
|
if (lbl_1_bss_4 == 3) {
|
|
lbl_1_bss_2A4 = 2;
|
|
goto battle;
|
|
}
|
|
if (lbl_1_bss_4 == 4) {
|
|
lbl_1_bss_2A4 = 3;
|
|
goto tictactoe;
|
|
}
|
|
pos2D.x = 168;
|
|
pos2D.y = 190;
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (time = 0; time <= 30; time++) {
|
|
for (i = 1; i < 4; i++) {
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
Vec pos;
|
|
weight = (time - (i * 2)) / 10.0;
|
|
pos = lbl_1_data_40[i];
|
|
pos.z = 800;
|
|
pos.x += (1.0 - cosd(weight * 90.0f)) * 500.0;
|
|
Hu3D2Dto3D(&pos, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (time > 10) {
|
|
weight = (time - 10) / 20.0;
|
|
VECScale(&pos2D, &pos3D, sind(weight * 90.0f));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
}
|
|
if (time == 20) {
|
|
HuAudFXPlay(2173);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
while (Hu3DMotionEndCheck(lbl_1_bss_2C80[9]) == 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (1) {
|
|
HuWinMesSpeedSet(lbl_1_bss_2CE, 1);
|
|
HuAudFXPlay(68);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280007, -1, -1);
|
|
lbl_1_bss_2CC = fn_1_25CA8(0x1A0020);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280008, -1, -999);
|
|
espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
lbl_1_bss_2A4 = 0;
|
|
espPosSet(lbl_1_bss_2C2C[0], -20 + (168.0f + (lbl_1_bss_2A4 * 80)), 180);
|
|
while (1) {
|
|
s16 delta = 0;
|
|
if ((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A4 > 0) {
|
|
delta = -1;
|
|
}
|
|
else if ((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A4 < 3) {
|
|
delta = 1;
|
|
}
|
|
if (delta != 0) {
|
|
HuAudFXPlay(0);
|
|
lbl_1_bss_2A4 += delta;
|
|
espPosSet(lbl_1_bss_2C2C[0], -20 + (168.0f + (lbl_1_bss_2A4 * 80)), 180);
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999);
|
|
}
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_A) {
|
|
HuAudFXPlay(2);
|
|
if (lbl_1_bss_2A4 == 0 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[3] == 0
|
|
&& lbl_1_bss_20AC[4] == 0) {
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280031, -1, -1);
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999);
|
|
continue;
|
|
}
|
|
if (lbl_1_bss_2A4 == 2 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[4] == 0) {
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280033, -1, -1);
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999);
|
|
continue;
|
|
}
|
|
if ((lbl_1_bss_2A4 == 1 || lbl_1_bss_2A4 == 3) && lbl_1_bss_20AC[2] == 0) {
|
|
if (lbl_1_bss_2A4 == 1) {
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280032, -1, -1);
|
|
}
|
|
else {
|
|
fn_1_25838(lbl_1_bss_2CE, 0x28002F, -1, -1);
|
|
}
|
|
fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999);
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_B) {
|
|
HuAudFXPlay(3);
|
|
exitF = 1;
|
|
break;
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
if (exitF != 0) {
|
|
break;
|
|
}
|
|
if (lbl_1_bss_2A4 == 0) {
|
|
freeplay:
|
|
fn_1_1B0C();
|
|
}
|
|
else if (lbl_1_bss_2A4 == 1) {
|
|
teamplay:
|
|
fn_1_21C4();
|
|
}
|
|
else if (lbl_1_bss_2A4 == 2) {
|
|
battle:
|
|
fn_1_2940();
|
|
}
|
|
else if (lbl_1_bss_2A4 == 3) {
|
|
tictactoe:
|
|
fn_1_3150();
|
|
}
|
|
if (lbl_1_bss_2CE == -1) {
|
|
lbl_1_bss_2CE = fn_1_2530C(0, 0, 0);
|
|
}
|
|
HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A | PAD_BUTTON_B);
|
|
}
|
|
lbl_1_bss_4 = 0;
|
|
pos2D = lbl_1_data_40[0];
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
HuAudFXPlay(2174);
|
|
for (time = 0; time <= 20; time++) {
|
|
VECScale(&pos2D, &pos3D, sind(time * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
HuPrcVSleep();
|
|
}
|
|
for (time = 0; time <= 20; time++) {
|
|
for (i = 1; i < 4; i++) {
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
weight = (time - (i * 2)) / 10.0;
|
|
pos2D = lbl_1_data_40[i];
|
|
pos2D.z = 800;
|
|
pos2D.x += (1.0 - sind(weight * 90.0f)) * 500.0;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1B0C(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec posModel;
|
|
Vec pos3D;
|
|
s16 i;
|
|
ModelData *modelP;
|
|
s16 temp_r29 = 0;
|
|
|
|
if (lbl_1_bss_4 == 1) {
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 0, 0);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
HuAudFXPlay(2174);
|
|
HuPrcSleep(40);
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (i = 0; i <= 20; i++) {
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0 * (i / 20.0), 0, 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
charsel:
|
|
if (fn_1_194C8(temp_r29) == 0) {
|
|
goto exit;
|
|
}
|
|
temp_r29 = 4;
|
|
for (i = 0; i < 4; i++) {
|
|
GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68;
|
|
GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60;
|
|
GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64;
|
|
}
|
|
}
|
|
mgPracticeEnableF = 1;
|
|
if (fn_1_6D28()) {
|
|
lbl_1_bss_4 = 0;
|
|
goto charsel;
|
|
}
|
|
exit:
|
|
mgPracticeEnableF = 0;
|
|
lbl_1_bss_4 = 0;
|
|
pos2D.x = 168;
|
|
pos2D.y = 190;
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
for (i = 0; i <= 20; i++) {
|
|
if (i == 10) {
|
|
HuAudFXPlay(2173);
|
|
}
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0 * (1 - (i / 20.0)), 0, 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_21C4(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec posModel;
|
|
Vec pos3D;
|
|
s16 i;
|
|
ModelData *modelP;
|
|
s16 temp_r29 = 1;
|
|
if (lbl_1_bss_4 == 2) {
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90, 90);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
HuAudFXPlay(2174);
|
|
HuPrcSleep(40);
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (i = 0; i <= 20; i++) {
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0 * (i / 20.0), 90.0 * (i / 20.0));
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
charsel:
|
|
if (fn_1_194C8(temp_r29) == 0) {
|
|
goto exit;
|
|
}
|
|
temp_r29 = 4;
|
|
for (i = 0; i < 4; i++) {
|
|
GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68;
|
|
GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C;
|
|
GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64;
|
|
GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60;
|
|
}
|
|
}
|
|
mgPracticeEnableF = 1;
|
|
if (fn_1_6D28()) {
|
|
lbl_1_bss_4 = 0;
|
|
goto charsel;
|
|
}
|
|
exit:
|
|
mgPracticeEnableF = 0;
|
|
lbl_1_bss_4 = 0;
|
|
pos2D.x = 168;
|
|
pos2D.y = 190;
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
for (i = 0; i <= 20; i++) {
|
|
if (i == 10) {
|
|
HuAudFXPlay(2173);
|
|
}
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0 * (1.0 - (i / 20.0)), 90.0 * (1.0 - (i / 20.0)));
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_2940(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec posModel;
|
|
Vec pos3D;
|
|
s16 temp_r29 = 2;
|
|
s16 i;
|
|
ModelData *modelP;
|
|
for (i = 0; i < 4; i++) {
|
|
Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 2);
|
|
}
|
|
if (lbl_1_bss_4 == 3) {
|
|
OSReport("Eliminate Play STart\n");
|
|
pos2D.x = 50;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 180, 0);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
HuAudFXPlay(2174);
|
|
HuPrcSleep(40);
|
|
pos2D.x = 50;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (i = 0; i <= 20; i++) {
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(i / 20.0), 180.0 * (i / 20.0), 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
charsel:
|
|
if (fn_1_194C8(temp_r29) == 0) {
|
|
goto exit;
|
|
}
|
|
temp_r29 = 4;
|
|
for (i = 0; i < 4; i++) {
|
|
GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68;
|
|
GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C;
|
|
GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60;
|
|
GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64;
|
|
}
|
|
mgBattleStarMax = lbl_1_bss_8.unk20;
|
|
}
|
|
|
|
if (fn_1_E72C() == 0) {
|
|
lbl_1_bss_4 = 0;
|
|
goto charsel;
|
|
}
|
|
exit:
|
|
HuDataDirClose(DATADIR_INSTPIC);
|
|
for (i = 0; i < 4; i++) {
|
|
Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 3);
|
|
}
|
|
lbl_1_bss_4 = 0;
|
|
pos2D.x = 168;
|
|
pos2D.y = 190;
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
for (i = 0; i <= 20; i++) {
|
|
if (i == 10) {
|
|
HuAudFXPlay(2173);
|
|
}
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(1 - (i / 20.0)), 180.0 * (1 - (i / 20.0)), 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_3150(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec posModel;
|
|
Vec pos3D;
|
|
s16 i;
|
|
ModelData *modelP;
|
|
s16 temp_r29 = 1;
|
|
if (lbl_1_bss_4 == 4) {
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 90, 0);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
HuAudFXPlay(2174);
|
|
HuPrcSleep(40);
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (i = 0; i <= 20; i++) {
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(i / 20.0), 90.0 * (i / 20.0), 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
charsel:
|
|
if (fn_1_194C8(temp_r29) == 0) {
|
|
goto exit;
|
|
}
|
|
temp_r29 = 4;
|
|
for (i = 0; i < 4; i++) {
|
|
GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68;
|
|
GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C;
|
|
GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60;
|
|
GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64;
|
|
}
|
|
mgBattleStarMax = lbl_1_bss_8.unk20;
|
|
}
|
|
|
|
if (fn_1_13418() == 0) {
|
|
lbl_1_bss_4 = 0;
|
|
goto charsel;
|
|
}
|
|
exit:
|
|
HuDataDirClose(DATADIR_INSTPIC);
|
|
lbl_1_bss_4 = 0;
|
|
pos2D.x = 168;
|
|
pos2D.y = 190;
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[9]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
for (i = 0; i <= 20; i++) {
|
|
if (i == 10) {
|
|
HuAudFXPlay(2173);
|
|
}
|
|
VECScale(&pos2D, &pos3D, sind(i * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D);
|
|
Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(1 - (i / 20.0)), 90.0 * (1 - (i / 20.0)), 0);
|
|
HuPrcVSleep();
|
|
}
|
|
while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_38D8(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec pos3D;
|
|
Vec posModel;
|
|
|
|
s16 sp8 = 0;
|
|
s16 time;
|
|
s16 i;
|
|
float weight;
|
|
ModelData *modelP;
|
|
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[10]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (time = 0; time <= 30; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 1) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
Vec posBox;
|
|
weight = (time - (i * 2)) / 10.0;
|
|
posBox = lbl_1_data_40[i];
|
|
posBox.z = 800;
|
|
posBox.x += ((i < 2) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight)));
|
|
Hu3D2Dto3D(&posBox, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (time > 10) {
|
|
weight = (time - 10) / 20.0;
|
|
VECScale(&pos2D, &pos3D, sind(weight * 90.0f));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_6D28();
|
|
pos2D = lbl_1_data_40[1];
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[10]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
for (time = 0; time <= 20; time++) {
|
|
VECScale(&pos2D, &pos3D, sind(time * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D);
|
|
HuPrcVSleep();
|
|
}
|
|
for (time = 0; time <= 20; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 1) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
weight = (time - (i * 2)) / 10.0;
|
|
pos2D = lbl_1_data_40[i];
|
|
pos2D.z = 800;
|
|
pos2D.x += ((i < 2) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0);
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_4010(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec pos3D;
|
|
Vec posModel;
|
|
|
|
s16 spA[4];
|
|
s16 sp8 = 0;
|
|
s16 time;
|
|
s16 i;
|
|
float weight;
|
|
ModelData *modelP;
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
pos2D.x = 60;
|
|
pos2D.y = 70;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[11]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (time = 0; time <= 30; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 2) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
Vec posBox;
|
|
weight = (time - (i * 2)) / 10.0;
|
|
posBox = lbl_1_data_40[i];
|
|
posBox.z = 800;
|
|
posBox.x += ((i < 3) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight)));
|
|
Hu3D2Dto3D(&posBox, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (time > 10) {
|
|
weight = (time - 10) / 20.0;
|
|
VECScale(&pos2D, &pos3D, sind(weight * 90.0f));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_6D28();
|
|
for (i = 0; i < 4; i++) {
|
|
spA[i] = 0;
|
|
for (time = 0; time < lbl_1_bss_20AC[lbl_1_data_A2[i]]; time++) {
|
|
if (GWMGCustomGet(lbl_1_bss_20C0[lbl_1_data_A2[i]][time] + 401)) {
|
|
spA[i]++;
|
|
}
|
|
}
|
|
}
|
|
if (spA[0] >= 4 && spA[1] >= 3 && spA[2] >= 3 && spA[3] >= 2) {
|
|
GWGameStat.field10E_bit5 = 1;
|
|
}
|
|
else {
|
|
GWGameStat.field10E_bit5 = 0;
|
|
}
|
|
pos2D = lbl_1_data_40[2];
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[11]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
for (time = 0; time <= 20; time++) {
|
|
VECScale(&pos2D, &pos3D, sind(time * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D);
|
|
HuPrcVSleep();
|
|
}
|
|
for (time = 0; time <= 20; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 2) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
weight = (time - (i * 2)) / 10.0;
|
|
pos2D = lbl_1_data_40[i];
|
|
pos2D.z = 800;
|
|
pos2D.x += ((i < 3) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0);
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_487C(void)
|
|
{
|
|
s16 i;
|
|
char str[4][6];
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
strcpy(&str[i][0],
|
|
"\x1E\x03"
|
|
"0"
|
|
"\x1E\x08");
|
|
}
|
|
if (lbl_1_bss_20AC[0] >= 4 && lbl_1_bss_20AC[1] >= 3 && lbl_1_bss_20AC[2] >= 3 && lbl_1_bss_20AC[4] >= 2) {
|
|
return 1;
|
|
}
|
|
if (lbl_1_bss_20AC[0] >= 4) {
|
|
str[0][1] = 5;
|
|
}
|
|
else {
|
|
str[0][2] = '4' - lbl_1_bss_20AC[0];
|
|
}
|
|
HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[0][0]), 0);
|
|
if (lbl_1_bss_20AC[1] >= 3) {
|
|
str[1][1] = 5;
|
|
}
|
|
else {
|
|
str[1][2] = '3' - lbl_1_bss_20AC[1];
|
|
}
|
|
HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[1][0]), 1);
|
|
if (lbl_1_bss_20AC[2] >= 3) {
|
|
str[2][1] = 5;
|
|
}
|
|
else {
|
|
str[2][2] = '3' - lbl_1_bss_20AC[2];
|
|
}
|
|
HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[2][0]), 2);
|
|
if (lbl_1_bss_20AC[4] >= 2) {
|
|
str[3][1] = 5;
|
|
}
|
|
else {
|
|
str[3][2] = '2' - lbl_1_bss_20AC[4];
|
|
}
|
|
HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[3][0]), 3);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x28002A, -1, -1);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x28002B, -1, -1);
|
|
fn_1_25838(lbl_1_bss_2CE, 0x280002 + lbl_1_bss_2A6, -1, -999);
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_4ADC(void)
|
|
{
|
|
Vec pos2D;
|
|
Vec pos3D;
|
|
Vec posModel;
|
|
|
|
s16 spA[4];
|
|
s16 sp8 = 0;
|
|
s16 time;
|
|
s16 i;
|
|
float weight;
|
|
ModelData *modelP;
|
|
fn_1_25E74(lbl_1_bss_2CC);
|
|
fn_1_25584(lbl_1_bss_2CE);
|
|
lbl_1_bss_2CE = lbl_1_bss_2CC = -1;
|
|
pos2D.x = 50;
|
|
pos2D.y = 64;
|
|
pos2D.z = 1000;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[11]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
for (time = 0; time <= 30; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 3) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
Vec posBox;
|
|
weight = (time - (i * 2)) / 10.0;
|
|
posBox = lbl_1_data_40[i];
|
|
posBox.z = 800;
|
|
posBox.x += ((i < 3) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight)));
|
|
Hu3D2Dto3D(&posBox, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (time > 10) {
|
|
weight = (time - 10) / 20.0;
|
|
VECScale(&pos2D, &pos3D, sind(weight * 90.0f));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D);
|
|
weight = (1.0 - (weight * 0.1));
|
|
Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_D8D0();
|
|
pos2D = lbl_1_data_40[3];
|
|
pos2D.z = 800;
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
modelP = &Hu3DData[lbl_1_bss_2C80[12]];
|
|
posModel = modelP->pos;
|
|
VECSubtract(&pos3D, &posModel, &pos2D);
|
|
espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF);
|
|
for (time = 0; time <= 20; time++) {
|
|
VECScale(&pos2D, &pos3D, sind(time * 4.5));
|
|
VECAdd(&posModel, &pos3D, &pos3D);
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D);
|
|
weight = 1.0 - (0.1 * (1.0 - (time / 20.0)));
|
|
Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight);
|
|
HuPrcVSleep();
|
|
}
|
|
for (time = 0; time <= 20; time++) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (i == 3) {
|
|
continue;
|
|
}
|
|
if (time > i * 2 && time < (i * 2) + 10) {
|
|
weight = (time - (i * 2)) / 10.0;
|
|
pos2D = lbl_1_data_40[i];
|
|
pos2D.z = 800;
|
|
pos2D.x += ((i < 3) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0);
|
|
Hu3D2Dto3D(&pos2D, 1, &pos3D);
|
|
pos3D.z -= 50.0f;
|
|
Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D);
|
|
Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_65EC(void);
|
|
|
|
void fn_1_52DC(void)
|
|
{
|
|
s16 i;
|
|
fn_1_65EC();
|
|
fn_1_267E8(lbl_1_data_490);
|
|
fn_1_26A78(lbl_1_data_768);
|
|
Hu3DMotionSet(lbl_1_bss_2C80[2], lbl_1_bss_2C66[4]);
|
|
Hu3DMotionTimeSet(lbl_1_bss_2C80[0], 0);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C80[0], HU3D_MOTATTR_PAUSE);
|
|
HuSprExecLayerSet(64, 3);
|
|
espDrawNoSet(lbl_1_bss_2C2C[3], 64);
|
|
for (i = 0; i < 4; i++) {
|
|
Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 3);
|
|
}
|
|
fn_1_26C28();
|
|
espDrawNoSet(lbl_1_bss_2C2C[28], 64);
|
|
Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 500);
|
|
lbl_1_bss_8.unk0 = lbl_1_bss_2C80[2];
|
|
lbl_1_bss_8.unk8 = lbl_1_bss_2C66[4];
|
|
lbl_1_bss_8.unk4 = lbl_1_bss_2C66[3];
|
|
lbl_1_bss_8.unkC = lbl_1_bss_2C80[5];
|
|
lbl_1_bss_8.unk10 = lbl_1_bss_2C66[6];
|
|
lbl_1_bss_8.unk14 = lbl_1_bss_2C66[7];
|
|
lbl_1_bss_8.unk18 = lbl_1_bss_2C66[6];
|
|
fn_1_18DF8(lbl_1_bss_2D8, &lbl_1_bss_8);
|
|
Hu3DModelShadowSet(lbl_1_bss_2C80[5]);
|
|
Hu3DModelShadowMapSet(lbl_1_bss_2C80[0]);
|
|
}
|
|
|
|
void fn_1_6C18(void);
|
|
|
|
void fn_1_54F4(void)
|
|
{
|
|
while (1) {
|
|
if (lbl_1_bss_2D0) {
|
|
break;
|
|
}
|
|
if (omSysExitReq) {
|
|
break;
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
WipeColorSet(255, 255, 255);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
HuAudSeqAllFadeOut(1000);
|
|
while (WipeStatGet()) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuDataDirClose(DATADIR_INSTPIC);
|
|
if (memcmp(&mgGameStatBackup, &GWGameStat, sizeof(GWGameStat))) {
|
|
fn_1_6C18();
|
|
}
|
|
BoardStatusKill();
|
|
omOvlReturnEx(1, 1);
|
|
HuPrcEnd();
|
|
}
|
|
|
|
static u16 lbl_1_data_8C[2] = { 1, 2 };
|
|
|
|
void fn_1_55C0(omObjData *object)
|
|
{
|
|
s16 i;
|
|
for (i = 0; i < 1; i++) {
|
|
Vec pos, target, up;
|
|
float x, y, z;
|
|
|
|
x = lbl_1_bss_28C[i].x;
|
|
y = lbl_1_bss_28C[i].y;
|
|
z = lbl_1_bss_28C[i].z;
|
|
|
|
pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].x);
|
|
pos.y = (-sind(x) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].y;
|
|
pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].z;
|
|
target.x = lbl_1_bss_274[i].x;
|
|
target.y = lbl_1_bss_274[i].y;
|
|
target.z = lbl_1_bss_274[i].z;
|
|
up.x = sind(y) * sind(x);
|
|
up.y = cosd(x);
|
|
up.z = cosd(y) * sind(x);
|
|
Hu3DCameraPosSet(lbl_1_data_8C[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
|
|
}
|
|
}
|
|
|
|
void fn_1_66B0(void);
|
|
|
|
void fn_1_5974(omObjData *object)
|
|
{
|
|
Vec pos;
|
|
Vec offset;
|
|
Vec dir;
|
|
Vec y_offset;
|
|
|
|
f32 z_rot;
|
|
s8 stick_pos;
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_Y) {
|
|
lbl_1_bss_0 = (lbl_1_bss_0) ? 0 : 1;
|
|
}
|
|
if (lbl_1_bss_0 == 0) {
|
|
fn_1_66B0();
|
|
return;
|
|
}
|
|
lbl_1_bss_28C[0].y += 0.1f * HuPadStkX[0];
|
|
lbl_1_bss_28C[0].x += 0.1f * HuPadStkY[0];
|
|
lbl_1_bss_26C[0] += HuPadTrigL[0] / 2;
|
|
lbl_1_bss_26C[0] -= HuPadTrigR[0] / 2;
|
|
if (HuPadBtnDown[0] & PAD_BUTTON_B) {
|
|
OSReport("%f,%f,%f\n", lbl_1_bss_28C[0].x, lbl_1_bss_28C[0].y, lbl_1_bss_28C[0].z);
|
|
OSReport("%f,%f,%f\n", lbl_1_bss_274[0].x, lbl_1_bss_274[0].y, lbl_1_bss_274[0].z);
|
|
OSReport("%f\n", lbl_1_bss_26C[0]);
|
|
}
|
|
if (lbl_1_bss_26C[0] < 100.0f) {
|
|
lbl_1_bss_26C[0] = 100.0f;
|
|
}
|
|
pos.x = lbl_1_bss_274[0].x + (lbl_1_bss_26C[0] * (sind(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x)));
|
|
pos.y = (lbl_1_bss_274[0].y + (lbl_1_bss_26C[0] * -sind(lbl_1_bss_28C[0].x)));
|
|
pos.z = (lbl_1_bss_274[0].z + (lbl_1_bss_26C[0] * (cosd(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x))));
|
|
offset.x = lbl_1_bss_274[0].x - pos.x;
|
|
offset.y = lbl_1_bss_274[0].y - pos.y;
|
|
offset.z = lbl_1_bss_274[0].z - pos.z;
|
|
dir.x = (sind(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x));
|
|
dir.y = cosd(lbl_1_bss_28C[0].x);
|
|
dir.z = (cosd(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x));
|
|
z_rot = lbl_1_bss_28C[0].z;
|
|
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot))
|
|
+ dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot))
|
|
+ dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot));
|
|
|
|
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot))
|
|
+ dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot))
|
|
+ dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot));
|
|
|
|
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot))
|
|
+ (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot))
|
|
+ dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot)));
|
|
|
|
VECCrossProduct(&dir, &offset, &offset);
|
|
VECNormalize(&offset, &offset);
|
|
stick_pos = (HuPadSubStkX[0] & 0xF8);
|
|
if (stick_pos != 0) {
|
|
lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos);
|
|
lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos);
|
|
lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos);
|
|
}
|
|
VECNormalize(&y_offset, &offset);
|
|
stick_pos = -(HuPadSubStkY[0] & 0xF8);
|
|
if (stick_pos != 0) {
|
|
lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos);
|
|
lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos);
|
|
lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos);
|
|
}
|
|
}
|
|
|
|
void fn_1_65EC(void)
|
|
{
|
|
Vec pos = { 0, 3000, 800 };
|
|
Vec target = { 0, 0, 640 };
|
|
Vec up = { 0, 1, 0 };
|
|
Hu3DShadowCreate(45, 2000, 25000);
|
|
Hu3DShadowTPLvlSet(0.8f);
|
|
Hu3DShadowPosSet(&pos, &up, &target);
|
|
}
|
|
|
|
void fn_1_66B0(void)
|
|
{
|
|
Vec deltaVec;
|
|
float delta;
|
|
|
|
if (lbl_1_bss_2D0) {
|
|
return;
|
|
}
|
|
VECSubtract(&lbl_1_bss_2C0, &lbl_1_bss_28C[0], &deltaVec);
|
|
if (VECMag(&deltaVec) > 0.2) {
|
|
VECScale(&deltaVec, &deltaVec, 0.05f);
|
|
VECAdd(&lbl_1_bss_28C[0], &deltaVec, &lbl_1_bss_28C[0]);
|
|
}
|
|
else {
|
|
lbl_1_bss_28C[0] = lbl_1_bss_2C0;
|
|
}
|
|
VECSubtract(&lbl_1_bss_2B4, &lbl_1_bss_274[0], &deltaVec);
|
|
if (VECMag(&deltaVec) > 0.2) {
|
|
VECScale(&deltaVec, &deltaVec, 0.05f);
|
|
VECAdd(&lbl_1_bss_274[0], &deltaVec, &lbl_1_bss_274[0]);
|
|
}
|
|
else {
|
|
lbl_1_bss_274[0] = lbl_1_bss_2B4;
|
|
}
|
|
delta = lbl_1_bss_2B0 - lbl_1_bss_26C[0];
|
|
if (sqrtf(delta * delta) > 0.2) {
|
|
delta *= 0.05f;
|
|
lbl_1_bss_26C[0] += delta;
|
|
}
|
|
else {
|
|
lbl_1_bss_26C[0] = lbl_1_bss_2B0;
|
|
}
|
|
}
|
|
|
|
void fn_1_6974(s16 arg0)
|
|
{
|
|
lbl_1_bss_2C0 = lbl_1_data_0[arg0].rot;
|
|
lbl_1_bss_2B4 = lbl_1_data_0[arg0].pos;
|
|
lbl_1_bss_2B0 = lbl_1_data_0[arg0].zoom;
|
|
}
|
|
|
|
void fn_1_6A04(s16 arg0)
|
|
{
|
|
lbl_1_bss_2C0 = lbl_1_bss_28C[0] = lbl_1_data_0[arg0].rot;
|
|
lbl_1_bss_2B4 = lbl_1_bss_274[0] = lbl_1_data_0[arg0].pos;
|
|
lbl_1_bss_2B0 = lbl_1_bss_26C[0] = lbl_1_data_0[arg0].zoom;
|
|
}
|
|
|
|
float fn_1_6AF0(void)
|
|
{
|
|
float delta = lbl_1_bss_2B0 - lbl_1_bss_26C[0];
|
|
return sqrtf(delta * delta);
|
|
}
|
|
|
|
void fn_1_6C18(void)
|
|
{
|
|
s16 sprite;
|
|
if (!SLSaveFlagGet()) {
|
|
return;
|
|
}
|
|
Hu3DAllKill();
|
|
HuSprClose();
|
|
HuSprInit();
|
|
espInit();
|
|
HuPrcVSleep();
|
|
sprite = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 0x20), 5000, 0);
|
|
espPosSet(sprite, 288.0, 240.0);
|
|
espAttrReset(sprite, HUSPR_ATTR_DISPOFF);
|
|
Hu3DBGColorSet(0, 0, 0);
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
|
|
while (WipeStatGet()) {
|
|
HuPrcVSleep();
|
|
}
|
|
SLCommonSet();
|
|
if (!SLSave()) {
|
|
GWSaveModeSet(1);
|
|
}
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
|
|
while (WipeStatGet()) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|