1234 lines
36 KiB
C
Executable file
1234 lines
36 KiB
C
Executable file
#include "REL/w06Dll.h"
|
|
#include "game/audio.h"
|
|
#include "game/data.h"
|
|
#include "game/flag.h"
|
|
#include "game/gamework.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/hsfdraw.h"
|
|
#include "game/hsfex.h"
|
|
#include "game/object.h"
|
|
#include "game/objsub.h"
|
|
#include "game/process.h"
|
|
#include "game/window.h"
|
|
#include "game/wipe.h"
|
|
#include "game/board/audio.h"
|
|
#include "game/board/main.h"
|
|
#include "game/board/model.h"
|
|
#include "game/board/player.h"
|
|
#include "game/board/space.h"
|
|
#include "game/board/ui.h"
|
|
#include "game/board/window.h"
|
|
|
|
#include "dolphin.h"
|
|
#include "ext_math.h"
|
|
|
|
typedef struct {
|
|
struct {
|
|
u8 unk00_field0 : 1;
|
|
};
|
|
char unk01[3];
|
|
s32 unk04;
|
|
s32 unk08;
|
|
s16 unk0C;
|
|
} BssECWork;
|
|
|
|
static void fn_1_93C8(void);
|
|
static void fn_1_94D4(void);
|
|
static void fn_1_95AC(s32 arg0);
|
|
static void fn_1_9E5C(s32 arg0);
|
|
static void fn_1_A408(s32 arg0);
|
|
static void fn_1_AB4C(s32 arg0, s32 arg1);
|
|
static void fn_1_B27C(s32 arg0);
|
|
static void fn_1_B6A0(float arg0, s16 arg1);
|
|
static void fn_1_B8E0(omObjData *arg0);
|
|
static void fn_1_BB10(s32 arg0);
|
|
static void fn_1_BD08(s32 arg0);
|
|
static void fn_1_BD44(void);
|
|
static void fn_1_BD8C(s32 arg0);
|
|
static void fn_1_C40C(void);
|
|
static s32 fn_1_C9BC(void);
|
|
static s32 fn_1_CA8C(s32 arg0, s32 arg1);
|
|
static void fn_1_CACC(void);
|
|
|
|
static s8 lbl_1_bss_F4;
|
|
static s32 lbl_1_bss_F0;
|
|
static omObjData *lbl_1_bss_EC;
|
|
static Process *lbl_1_bss_E8;
|
|
|
|
static s16 lbl_1_data_498 = -1;
|
|
static s16 lbl_1_data_49A = -1;
|
|
static s16 lbl_1_data_49C = -1;
|
|
static s16 lbl_1_data_49E = -1;
|
|
static s16 lbl_1_data_4A0 = -1;
|
|
static s16 lbl_1_data_4A2 = -1;
|
|
|
|
static s8 lbl_1_data_4A4[] = {
|
|
0, 0, 90, 0,
|
|
0, 0, 0, 166
|
|
};
|
|
|
|
static s32 lbl_1_data_4AC[8] = {
|
|
0x00000128,
|
|
0x00000168,
|
|
0x000001A8,
|
|
0x000001E8,
|
|
0x00000228,
|
|
0x00000268,
|
|
0x000002A8,
|
|
0x000002E8
|
|
};
|
|
|
|
static s32 lbl_1_data_4CC[8] = {
|
|
0x00000123,
|
|
0x00000163,
|
|
0x000001A3,
|
|
0x000001E3,
|
|
0x00000223,
|
|
0x00000263,
|
|
0x000002A3,
|
|
0x000002E3
|
|
};
|
|
|
|
#if VERSION_JP
|
|
#define MDL_ID_SHIFT 0
|
|
#else
|
|
#define MDL_ID_SHIFT 1
|
|
#endif
|
|
|
|
static s32 lbl_1_data_4EC[] = {
|
|
DATA_MAKE_NUM(DATADIR_BKOOPA, 8),
|
|
DATA_MAKE_NUM(DATADIR_BKOOPA, 10),
|
|
DATA_MAKE_NUM(DATADIR_BKOOPA, 11),
|
|
DATA_MAKE_NUM(DATADIR_BKOOPA, 12),
|
|
DATA_MAKE_NUM(DATADIR_W06, 24),
|
|
DATA_MAKE_NUM(DATADIR_BKOOPA, 9),
|
|
DATA_MAKE_NUM(DATADIR_W06, 25),
|
|
DATA_MAKE_NUM(DATADIR_W06, 26),
|
|
-1
|
|
};
|
|
|
|
static s32 lbl_1_data_510[8] = {
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 19),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 19)
|
|
};
|
|
|
|
void fn_1_8F20(void) {
|
|
omObjData *temp_r3;
|
|
BssECWork *temp_r31;
|
|
s32 var_r28;
|
|
s32 i;
|
|
|
|
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B8E0);
|
|
lbl_1_bss_EC = temp_r3;
|
|
temp_r31 = OM_GET_WORK_PTR(temp_r3, BssECWork);
|
|
temp_r31->unk00_field0 = 0;
|
|
temp_r31->unk0C = 0;
|
|
temp_r31->unk08 = 0;
|
|
temp_r31->unk04 = 1;
|
|
lbl_1_data_498 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 7), lbl_1_data_4EC, 0);
|
|
BoardModelMotionStart(lbl_1_data_498, 1, 0x40000001);
|
|
BoardModelScaleSet(lbl_1_data_498, 2.0f, 2.0f, 2.0f);
|
|
lbl_1_data_49A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 11), NULL, 0);
|
|
BoardModelMotionStart(lbl_1_data_49A, 0, 0x40000001);
|
|
if (_CheckFlag(FLAG_ID_MAKE(1, 1))) {
|
|
fn_1_CACC();
|
|
if (lbl_1_bss_0->unk00_field3 == 0) {
|
|
var_r28 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1);
|
|
BoardSpaceTypeSet(0, var_r28, 10);
|
|
}
|
|
} else {
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
}
|
|
HuDataDirClose(DATADIR_BKOOPA);
|
|
if (_CheckFlag(FLAG_ID_MAKE(1, 9))) {
|
|
for (i = 0; i < 4; i++) {
|
|
if (lbl_1_bss_0->unk05 & (1 << i)) {
|
|
BoardPlayerPreTurnHookSet(i, fn_1_C9BC);
|
|
}
|
|
}
|
|
}
|
|
if (lbl_1_bss_0->unk00_field4 != 0) {
|
|
BoardModelMotionStart(lbl_1_data_498, 2, 0);
|
|
BoardModelMotionTimeSet(lbl_1_data_498, 90.0f);
|
|
BoardModelMotionSpeedSet(lbl_1_data_498, 0.0f);
|
|
}
|
|
}
|
|
|
|
void fn_1_91D8(void) {
|
|
fn_1_BD44();
|
|
if (lbl_1_data_498 != -1) {
|
|
BoardModelKill(lbl_1_data_498);
|
|
lbl_1_data_498 = -1;
|
|
}
|
|
if (lbl_1_data_49A != -1) {
|
|
BoardModelKill(lbl_1_data_49A);
|
|
lbl_1_data_49A = -1;
|
|
}
|
|
if (lbl_1_data_49E != -1) {
|
|
BoardModelKill(lbl_1_data_49E);
|
|
lbl_1_data_49E = -1;
|
|
}
|
|
}
|
|
|
|
void fn_1_9294(s32 arg0, s32 arg1) {
|
|
BoardRollCreate(arg0, 0);
|
|
fn_1_92D8(arg0, arg1);
|
|
}
|
|
|
|
s32 fn_1_92D8(s32 arg0, s32 arg1) {
|
|
lbl_1_bss_F0 = 0;
|
|
if (fn_1_CA8C(arg0, arg1) == 0) {
|
|
return lbl_1_bss_F0;
|
|
}
|
|
lbl_1_bss_F4 = arg0;
|
|
BoardRollDispSet(0);
|
|
lbl_1_bss_E8 = HuPrcChildCreate(fn_1_93C8, 0x2003, 0x3800, 0, boardMainProc);
|
|
HuPrcDestructorSet2(lbl_1_bss_E8, fn_1_94D4);
|
|
while (lbl_1_bss_E8) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardRollDispSet(1);
|
|
return lbl_1_bss_F0;
|
|
}
|
|
|
|
static void fn_1_93C8(void) {
|
|
s32 temp_r31;
|
|
s32 temp_r30;
|
|
|
|
temp_r31 = GWSystem.player_curr;
|
|
temp_r30 = GWPlayer[temp_r31].space_curr;
|
|
BoardAudSeqPause(0, 1, 0x1F4);
|
|
fn_1_BD8C(temp_r31);
|
|
if (_CheckFlag(FLAG_ID_MAKE(1, 6))) {
|
|
fn_1_AB4C(temp_r31, temp_r30);
|
|
} else if (GWPlayer[temp_r31].bowser_suit) {
|
|
fn_1_B27C(temp_r31);
|
|
} else {
|
|
switch (BoardPlayerSizeGet(temp_r31)) {
|
|
case 1:
|
|
fn_1_95AC(temp_r31);
|
|
break;
|
|
case 0:
|
|
fn_1_9E5C(temp_r31);
|
|
break;
|
|
case 2:
|
|
fn_1_A408(temp_r31);
|
|
break;
|
|
}
|
|
}
|
|
HuPrcEnd();
|
|
}
|
|
|
|
static void fn_1_94D4(void) {
|
|
if (lbl_1_data_4A2 != -1) {
|
|
BoardModelKill(lbl_1_data_4A2);
|
|
lbl_1_data_4A2 = -1;
|
|
}
|
|
if (lbl_1_data_4A0 != -1) {
|
|
BoardModelKill(lbl_1_data_4A0);
|
|
lbl_1_data_4A0 = -1;
|
|
}
|
|
if (lbl_1_data_49C != -1) {
|
|
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_49C);
|
|
lbl_1_data_49C = -1;
|
|
}
|
|
lbl_1_bss_E8 = NULL;
|
|
}
|
|
|
|
static void fn_1_95AC(s32 arg0) {
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float var_f30;
|
|
float var_f31;
|
|
s32 temp_r30;
|
|
s32 temp_r29;
|
|
|
|
lbl_1_data_49C = BoardPlayerMotionCreate(arg0, lbl_1_data_510[GWPlayer[arg0].character]);
|
|
BoardPlayerPosGet(arg0, &sp38);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp2C);
|
|
VECSubtract(&sp2C, &sp38, &sp20);
|
|
VECNormalize(&sp20, &sp20);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
HuAudFXPlay(0x3C);
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 150.0f;
|
|
sp14.z = 0.0f;
|
|
sp8.x = -14.0f;
|
|
sp8.y = atan2d(-sp20.x, -sp20.z);
|
|
sp8.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
omVibrate(arg0, 12, 4, 2);
|
|
BoardPlayerMotionStart(arg0, 9, 0);
|
|
HuAudFXPlay(lbl_1_data_4AC[GWPlayer[arg0].character]);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (!BoardPlayerMotionEndCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerIdleSet(arg0);
|
|
HuPrcSleep(30);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardWinCreate(2, MAKE_MESSID(48, 2), 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardCameraMotionStartEx(-1, NULL, NULL, 2000.0f, -1.0f, 21);
|
|
BoardCameraMotionWait();
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
while (BoardModelMotionTimeGet(lbl_1_data_498) < 80.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
temp_r29 = HuAudFXPlay(0x34E);
|
|
fn_1_BB10(1);
|
|
while (BoardModelMotionTimeGet(lbl_1_data_498) < 60.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuAudFXPlay(lbl_1_data_4CC[GWPlayer[arg0].character]);
|
|
omVibrate(arg0, 12, 4, 2);
|
|
BoardPlayerMotionStart(arg0, lbl_1_data_49C, 0x40000001);
|
|
temp_r30 = BoardSpaceFlagPosGet(0, 0x8000, &sp2C);
|
|
VECSubtract(&sp2C, &sp38, &sp20);
|
|
VECNormalize(&sp20, &sp20);
|
|
sp20.x = 500.0f * sp20.x / 90.0f;
|
|
sp20.z = 500.0f * sp20.z / 90.0f;
|
|
sp38.y += 150.0f;
|
|
for (var_f31 = 0.0f; var_f31 < 90.0f; var_f31 += 1.0f) {
|
|
sp38.x += sp20.x;
|
|
sp38.z += sp20.z;
|
|
if (sp38.y < 0.0f) {
|
|
sp38.y = 0.0f;
|
|
break;
|
|
}
|
|
sp38.y += 30.0f + -0.08166667f * var_f31 * var_f31 * 0.125f;
|
|
BoardPlayerPosSetV(arg0, &sp38);
|
|
HuPrcVSleep();
|
|
}
|
|
WipeColorSet(0xFF, 0xFF, 0xFF);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1);
|
|
HuPrcSleep(2);
|
|
BoardCameraMoveSet(0);
|
|
BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 0);
|
|
BoardPlayerRotYSet(arg0, 0.0f);
|
|
BoardCameraViewSet(2);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetSpaceSet(temp_r30);
|
|
HuAudFXFadeOut(temp_r29, 0xC8);
|
|
fn_1_BB10(0);
|
|
BoardModelMotionStart(lbl_1_data_498, 1, 0x40000001);
|
|
BoardModelRotYSet(lbl_1_data_498, 0.0f);
|
|
sp38.x = sp2C.x;
|
|
sp38.y = sp2C.y + 1000.0f;
|
|
sp38.z = sp2C.z;
|
|
BoardPlayerPosSetV(arg0, &sp38);
|
|
BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 1);
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30);
|
|
while (WipeStatGet() != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
var_f31 = 0.0f;
|
|
var_f30 = var_f31;
|
|
while (TRUE) {
|
|
if (sp38.y < sp2C.y) {
|
|
if (var_f30 >= 3.0f) {
|
|
break;
|
|
}
|
|
HuAudFXPlay(0x4A7);
|
|
omVibrate(arg0, 12, 6, 6);
|
|
sp38.y = sp2C.y + 30.0f * (3.0f - var_f30);
|
|
var_f31 = 0.0f;
|
|
var_f30 += 1.0f;
|
|
}
|
|
sp38.y += 5.0f + -0.08166667f * var_f31 * var_f31;
|
|
BoardPlayerPosSetV(arg0, &sp38);
|
|
HuPrcVSleep();
|
|
var_f31 += 1.0f;
|
|
}
|
|
BoardPlayerPosSetV(arg0, &sp2C);
|
|
BoardPlayerMotionStart(arg0, 6, 0x40000001);
|
|
HuPrcSleep(60);
|
|
GWPlayer[arg0].space_curr = temp_r30;
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
HuPrcSleep(24);
|
|
fn_1_B6A0(0.0f, 20);
|
|
BoardCameraMoveSet(1);
|
|
BoardCameraViewSet(1);
|
|
BoardCameraMotionWait();
|
|
BoardAudSeqPause(0, 0, 1000);
|
|
}
|
|
|
|
static void fn_1_9E5C(s32 arg0) {
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
u16 var_r30;
|
|
s32 var_r25;
|
|
s32 var_r29;
|
|
s16 i;
|
|
s16 var_r26;
|
|
s16 var_r28;
|
|
|
|
BoardPlayerPosGet(arg0, &sp38);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp2C);
|
|
VECSubtract(&sp2C, &sp38, &sp20);
|
|
VECNormalize(&sp20, &sp20);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
HuAudFXPlay(0x3C);
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 150.0f;
|
|
sp14.z = 0.0f;
|
|
sp8.x = -14.0f;
|
|
sp8.y = atan2d(-sp20.x, -sp20.z);
|
|
sp8.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
omVibrate(arg0, 12, 4, 2);
|
|
BoardPlayerMotionStart(arg0, 9, 0);
|
|
HuAudFXPlay(lbl_1_data_4AC[GWPlayer[arg0].character]);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (!BoardPlayerMotionEndCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerIdleSet(arg0);
|
|
HuPrcSleep(30);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(9);
|
|
while (BoardModelMotionTimeGet(lbl_1_data_498) < 33.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuAudFXPlay(0x51);
|
|
var_r30 = BoardPlayerCoinsGet(arg0);
|
|
if (var_r30 != 0) {
|
|
var_r29 = MAKE_MESSID(48, 3);
|
|
var_r28 = -1;
|
|
var_r30 = BoardPlayerCoinsGet(arg0) - (var_r30 >> 1);
|
|
var_r25 = 8;
|
|
} else {
|
|
var_r29 = MAKE_MESSID(48, 5);
|
|
var_r28 = 1;
|
|
var_r30 = 50;
|
|
var_r25 = 7;
|
|
}
|
|
BoardWinCreate(2, var_r29, 5);
|
|
BoardWinWait();
|
|
if (var_r30 >= 50) {
|
|
var_r26 = 1;
|
|
} else if (var_r30 >= 20) {
|
|
var_r26 = 3;
|
|
} else {
|
|
var_r26 = 6;
|
|
}
|
|
for (i = 0; i < var_r30; i++) {
|
|
BoardPlayerCoinsAdd(arg0, var_r28);
|
|
if (var_r28 == -1) {
|
|
HuAudFXPlay(0xE);
|
|
} else {
|
|
HuAudFXPlay(7);
|
|
}
|
|
HuPrcSleep(var_r26);
|
|
}
|
|
HuAudFXPlay(0xF);
|
|
BoardPlayerMotBlendSet(arg0, BoardPlayerRotYGet(arg0) + 180.0f, 0x14);
|
|
while (!BoardPlayerMotBlendCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(10);
|
|
while (!BoardPlayerMotionEndCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
if (var_r28 == -1) {
|
|
var_r29 = MAKE_MESSID(48, 4);
|
|
} else {
|
|
var_r29 = MAKE_MESSID(48, 6);
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuAudFXPlay(0x3A);
|
|
BoardWinCreate(2, var_r29, 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
HuPrcSleep(24);
|
|
BoardPlayerIdleSet(arg0);
|
|
BoardCameraMoveSet(1);
|
|
BoardCameraViewSet(1);
|
|
BoardCameraMotionWait();
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
fn_1_B6A0(0.0f, 20);
|
|
BoardAudSeqPause(0, 0, 1000);
|
|
}
|
|
|
|
static void fn_1_A408(s32 arg0) {
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float var_f31;
|
|
OverlayID var_r29;
|
|
s32 temp_r28;
|
|
s32 temp_r27;
|
|
s32 i;
|
|
|
|
BoardPlayerPosGet(arg0, &sp38);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp2C);
|
|
VECSubtract(&sp2C, &sp38, &sp20);
|
|
VECNormalize(&sp20, &sp20);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
HuAudFXPlay(0x3C);
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 250.0f;
|
|
sp14.z = 0.0f;
|
|
sp8.x = -8.0f;
|
|
sp8.y = atan2d(-sp20.x, -sp20.z) - 45.0;
|
|
sp8.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1700.0f, -1.0f, 63);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcSleep(30);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardWinCreate(2, MAKE_MESSID(48, 7), 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
fn_1_BD08(0);
|
|
BoardPlayerPosGet(arg0, &sp38);
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(55);
|
|
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(5);
|
|
temp_r28 = HuAudFXPlay(0x3D);
|
|
BoardPlayerPosGet(arg0, &sp20);
|
|
var_f31 = 0.0f;
|
|
while (TRUE) {
|
|
if (BoardModelMotionTimeGet(lbl_1_data_498) >= 90.0f) {
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000002);
|
|
}
|
|
sp38.y += 50.0f;
|
|
if (sp38.y > sp20.y + 700.0f) {
|
|
break;
|
|
}
|
|
BoardPlayerPosSetV(arg0, &sp38);
|
|
HuPrcVSleep();
|
|
var_f31 += 1.0f;
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
_SetFlag(FLAG_ID_MAKE(1, 28));
|
|
_SetFlag(FLAG_ID_MAKE(1, 14));
|
|
WipeColorSet(0xFF, 0xFF, 0xFF);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
|
|
while (WipeStatGet() != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
if (temp_r28 >= 0) {
|
|
while (HuAudFXStatusGet(temp_r28) != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
HuAudFXAllStop();
|
|
BoardAudSeqFadeOutAll();
|
|
lbl_1_bss_0->unk06 = BoardItemPrevGet() + 1;
|
|
if (BoardRandMod(100) < 50) {
|
|
var_r29 = OVL_M457;
|
|
GWMGAvailSet(0x1C9);
|
|
GWSystem.mg_next = 0x38;
|
|
} else {
|
|
var_r29 = OVL_M458;
|
|
GWMGAvailSet(0x1CA);
|
|
GWSystem.mg_next = 0x39;
|
|
}
|
|
_SetFlag(FLAG_ID_MAKE(1, 6));
|
|
BoardRollUpdateSet(arg0);
|
|
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
|
|
GWPlayer->coin_win = 0;
|
|
}
|
|
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
|
|
GWPlayer[1].coin_win = 0;
|
|
}
|
|
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
|
|
GWPlayer[2].coin_win = 0;
|
|
}
|
|
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
|
|
GWPlayer[3].coin_win = 0;
|
|
}
|
|
_ClearFlag(FLAG_ID_MAKE(1, 7));
|
|
for (i = 0; i < 4; i++) {
|
|
if (GWPlayerTeamGet(i)) {
|
|
GWPlayer[i].team_backup = 1;
|
|
} else {
|
|
GWPlayer[i].team_backup = 0;
|
|
}
|
|
if (i == arg0) {
|
|
GWPlayerCfg[i].group = 0;
|
|
} else {
|
|
GWPlayerCfg[i].group = 1;
|
|
}
|
|
}
|
|
if (GWPlayer[arg0].com && !GWMGShowComGet()) {
|
|
if (BoardRandMod(100) > 60) {
|
|
_SetFlag(FLAG_ID_MAKE(1, 7));
|
|
}
|
|
BoardAudSeqFadeOutFast(0);
|
|
BoardAudSeqFadeOutFast(1);
|
|
lbl_1_bss_0->unk00_field4 = 0;
|
|
fn_1_BD08(1);
|
|
HuPrcSleep(60);
|
|
for (i = 0; i < 4; i++) {
|
|
temp_r27 = GWPlayer[i].team_backup;
|
|
GWPlayer[i].team = temp_r27;
|
|
GWPlayerCfg[i].group = temp_r27;
|
|
}
|
|
fn_1_AB4C(arg0, GWPlayer[arg0].space_curr);
|
|
BoardMusStartBoard();
|
|
_ClearFlag(FLAG_ID_MAKE(1, 6));
|
|
BoardCameraViewSet(1);
|
|
BoardCameraMotionWait();
|
|
BoardRollCreate(arg0, 0);
|
|
} else {
|
|
BoardNextOvlSet(var_r29);
|
|
}
|
|
}
|
|
|
|
static void fn_1_AB4C(s32 arg0, s32 arg1) {
|
|
Vec sp3C;
|
|
Vec sp30;
|
|
Vec sp24;
|
|
Vec sp18;
|
|
Vec spC;
|
|
s16 i;
|
|
s16 var_r27;
|
|
s16 var_r30;
|
|
s16 var_r24;
|
|
s32 var_r26;
|
|
s32 var_r25;
|
|
s32 temp_r23;
|
|
s32 var_r29;
|
|
|
|
var_r29 = 0;
|
|
lbl_1_bss_F0 = 1;
|
|
if (GWPlayer[arg0].com && !GWMGShowComGet()) {
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelMotionStart(lbl_1_data_498, 1, 0x40000001);
|
|
BoardPlayerMotionStart(arg0, 1, 0x40000001);
|
|
}
|
|
BoardStatusItemSet(1);
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
BoardItemPrevSet(lbl_1_bss_0->unk06 - 1);
|
|
lbl_1_bss_0->unk06 = 0;
|
|
BoardSpacePosGet(0, arg1, &sp3C);
|
|
BoardPlayerPosSetV(arg0, &sp3C);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp30);
|
|
VECSubtract(&sp30, &sp3C, &sp24);
|
|
VECNormalize(&sp24, &sp24);
|
|
BoardPlayerRotYSet(arg0, atan2d(sp24.x, sp24.z));
|
|
BoardPlayerSizeSet(arg0, 2);
|
|
sp18.x = 0.0f;
|
|
sp18.y = 150.0f;
|
|
sp18.z = 0.0f;
|
|
spC.x = -25.0f;
|
|
spC.y = atan2d(-sp24.x, -sp24.z);
|
|
spC.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &spC, &sp18, 2000.0f, -1.0f, 2);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21);
|
|
while (WipeStatGet() != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
_ClearFlag(FLAG_ID_MAKE(1, 28));
|
|
_ClearFlag(FLAG_ID_MAKE(1, 14));
|
|
if (_CheckFlag(FLAG_ID_MAKE(1, 7))) {
|
|
var_r29 = 0;
|
|
} else {
|
|
var_r29 = 1;
|
|
}
|
|
if (var_r29 != 0) {
|
|
var_r26 = MAKE_MESSID(48, 10);
|
|
var_r25 = 8;
|
|
HuAudFXPlay(0x3A);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
} else {
|
|
var_r26 = MAKE_MESSID(48, 8);
|
|
var_r25 = 7;
|
|
}
|
|
HuAudFXPlay(0x3C);
|
|
BoardWinCreate(2, var_r26, 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardPlayerMotBlendSet(arg0, BoardPlayerRotYGet(arg0) + 180.0f, 0x14);
|
|
while (!BoardPlayerMotBlendCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
if (var_r29 != 0) {
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
temp_r23 = BoardPlayerCoinsGet(arg0);
|
|
var_r30 = temp_r23 - (BoardPlayerCoinsGet(arg0) >> 1);
|
|
if (var_r30 < 0) {
|
|
var_r30 = 0;
|
|
}
|
|
if (var_r30 >= 50) {
|
|
var_r27 = 1;
|
|
} else if (var_r30 >= 20) {
|
|
var_r27 = 3;
|
|
} else {
|
|
var_r27 = 6;
|
|
}
|
|
for (i = 0; i < var_r30; i++) {
|
|
BoardPlayerCoinsAdd(arg0, -1);
|
|
HuAudFXPlay(0xE);
|
|
HuPrcSleep(var_r27);
|
|
}
|
|
HuAudFXPlay(0xF);
|
|
} else {
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 8, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
BoardWinCreate(2, MAKE_MESSID(48, 9), 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
lbl_1_data_4A2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 16), NULL, 0);
|
|
HuAudFXPlay(0x4A8);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp30);
|
|
BoardModelPosSetV(lbl_1_data_4A2, &sp30);
|
|
BoardModelMotionStart(lbl_1_data_4A2, 0, 0);
|
|
BoardModelScaleSet(lbl_1_data_4A2, 2.0f, 2.0f, 2.0f);
|
|
while (BoardModelMotionTimeGet(lbl_1_data_4A2) < 110.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 0);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_4A2)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_data_4A2, 0);
|
|
lbl_1_bss_0->unk00_field3 = 1;
|
|
var_r24 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1);
|
|
BoardSpaceTypeSet(0, var_r24, 1);
|
|
BoardMusStartBoard();
|
|
}
|
|
BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (!BoardPlayerMotionEndCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
if (var_r29 != 0) {
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
}
|
|
HuPrcSleep(48);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardPlayerIdleSet(arg0);
|
|
fn_1_B6A0(0.0f, 20);
|
|
}
|
|
|
|
static void fn_1_B27C(s32 arg0) {
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
s16 i;
|
|
s32 var_r29;
|
|
s16 var_r28;
|
|
u16 var_r27;
|
|
|
|
BoardPlayerPosGet(arg0, &sp38);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp2C);
|
|
VECSubtract(&sp2C, &sp38, &sp20);
|
|
VECNormalize(&sp20, &sp20);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
HuAudFXPlay(0x3C);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 150.0f;
|
|
sp14.z = 0.0f;
|
|
sp8.x = -14.0f;
|
|
sp8.y = atan2d(-sp20.x, -sp20.z);
|
|
sp8.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerIdleSet(arg0);
|
|
HuPrcSleep(30);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(8);
|
|
var_r29 = MAKE_MESSID(48, 38);
|
|
var_r27 = 50;
|
|
BoardWinCreate(2, var_r29, 5);
|
|
BoardWinWait();
|
|
var_r28 = 1;
|
|
for (i = 0; i < var_r27; i++) {
|
|
BoardPlayerCoinsAdd(arg0, 1);
|
|
HuAudFXPlay(7);
|
|
HuPrcSleep(var_r28);
|
|
}
|
|
HuAudFXPlay(0xF);
|
|
BoardPlayerMotBlendSet(arg0, BoardPlayerRotYGet(arg0) + 180.0f, 0x14);
|
|
while (!BoardPlayerMotBlendCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
var_r29 = MAKE_MESSID(48, 39);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE);
|
|
HuAudFXPlay(0x3A);
|
|
BoardWinCreate(2, var_r29, 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
HuPrcSleep(24);
|
|
BoardPlayerIdleSet(arg0);
|
|
BoardCameraMoveSet(1);
|
|
BoardCameraViewSet(1);
|
|
BoardCameraMotionWait();
|
|
fn_1_B6A0(0.0f, 20);
|
|
BoardAudSeqPause(0, 0, 1000);
|
|
}
|
|
|
|
static void fn_1_B6A0(float arg0, s16 arg1) {
|
|
float var_f30;
|
|
float var_f28;
|
|
float var_f27;
|
|
float var_f26;
|
|
float var_f25;
|
|
float var_f24;
|
|
|
|
if (arg1 <= 0) {
|
|
arg1 = 1;
|
|
}
|
|
OSs16tof32(&arg1, &var_f24);
|
|
arg0 = BoardDAngleCalc(arg0);
|
|
var_f26 = BoardDAngleCalc(BoardModelRotYGet(lbl_1_data_498));
|
|
var_f30 = BoardDAngleCalc(arg0 - var_f26);
|
|
var_f25 = var_f30 / var_f24;
|
|
if (var_f30 < 0.0f) {
|
|
var_f28 = -var_f30;
|
|
} else {
|
|
var_f28 = var_f30;
|
|
}
|
|
if (var_f28 < 5.0f) {
|
|
BoardModelRotYSet(lbl_1_data_498, arg0);
|
|
return;
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 6, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
BoardModelMotionSpeedSet(lbl_1_data_498, 2.0f);
|
|
while (arg1 > 0) {
|
|
var_f27 = var_f25 + BoardModelRotYGet(lbl_1_data_498);
|
|
BoardModelRotYSet(lbl_1_data_498, var_f27);
|
|
HuPrcVSleep();
|
|
arg1--;
|
|
}
|
|
BoardModelRotYSet(lbl_1_data_498, arg0);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
}
|
|
|
|
static void fn_1_B8E0(omObjData *arg0) {
|
|
Mtx sp14;
|
|
Vec sp8;
|
|
float temp_f30;
|
|
BssECWork *temp_r30;
|
|
|
|
temp_r30 = OM_GET_WORK_PTR(arg0, BssECWork);
|
|
if (temp_r30->unk00_field0 != 0 || lbl_1_data_49A == -1 || BoardIsKill()) {
|
|
fn_1_BB10(0);
|
|
lbl_1_bss_EC = NULL;
|
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
|
return;
|
|
}
|
|
// Bug? Likely to be "%=" instead.
|
|
temp_r30->unk0C % 360;
|
|
OSs16tof32(&temp_r30->unk0C, &temp_f30);
|
|
temp_f30 = 0.5 * sind(temp_f30);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp8);
|
|
sp8.y += temp_f30;
|
|
BoardModelPosSetV(lbl_1_data_49A, &sp8);
|
|
if (temp_r30->unk04 != 0 && lbl_1_bss_0->unk00_field4 == 0) {
|
|
Hu3DModelObjMtxGet(BoardModelIDGet(lbl_1_data_49A), "kuppa", sp14);
|
|
Hu3DMtxTransGet(sp14, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_498, &sp8);
|
|
}
|
|
if (temp_r30->unk08 != 0) {
|
|
Hu3DModelObjMtxGet(BoardModelIDGet(lbl_1_data_498), "itemhook_M", sp14);
|
|
Hu3DMtxTransGet(sp14, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_49E, &sp8);
|
|
}
|
|
temp_r30->unk0C += 4;
|
|
}
|
|
|
|
static void fn_1_BB10(s32 arg0) {
|
|
float var_f30;
|
|
BssECWork *var_r30;
|
|
|
|
if (lbl_1_bss_EC) {
|
|
var_r30 = OM_GET_WORK_PTR(lbl_1_bss_EC, BssECWork);
|
|
var_r30->unk08 = arg0;
|
|
}
|
|
if (arg0 != 0) {
|
|
if (lbl_1_data_49E == -1) {
|
|
OSs8tof32(&lbl_1_data_4A4[lbl_1_bss_0->unk04 - 1], &var_f30);
|
|
lbl_1_data_49E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 14), NULL, 0);
|
|
BoardModelRotSet(lbl_1_data_49E, 45.0f, var_f30, 0.0f);
|
|
BoardModelScaleSet(lbl_1_data_49E, 1.8f, 1.8f, 1.8f);
|
|
BoardModelLayerSet(lbl_1_data_49E, 2);
|
|
BoardModelPassSet(lbl_1_data_49E, 1);
|
|
BoardModelMotionStart(lbl_1_data_49E, 0, 0x40000001);
|
|
BoardModelVisibilitySet(lbl_1_data_49E, 1);
|
|
}
|
|
} else if (lbl_1_data_49E != -1) {
|
|
BoardModelKill(lbl_1_data_49E);
|
|
lbl_1_data_49E = -1;
|
|
}
|
|
}
|
|
|
|
static void fn_1_BD08(s32 arg0) {
|
|
BssECWork *var_r31;
|
|
|
|
if (lbl_1_bss_EC) {
|
|
var_r31 = OM_GET_WORK_PTR(lbl_1_bss_EC, BssECWork);
|
|
var_r31->unk04 = arg0;
|
|
}
|
|
}
|
|
|
|
static void fn_1_BD44(void) {
|
|
BssECWork *var_r31;
|
|
|
|
if (lbl_1_bss_EC) {
|
|
var_r31 = OM_GET_WORK_PTR(lbl_1_bss_EC, BssECWork);
|
|
var_r31->unk00_field0 = 1;
|
|
}
|
|
}
|
|
|
|
static void fn_1_BD8C(s32 arg0) {
|
|
Vec sp24;
|
|
Vec sp18;
|
|
Vec spC;
|
|
float var_f26;
|
|
float var_f25;
|
|
|
|
OSs8tof32(&lbl_1_data_4A4[lbl_1_bss_0->unk04 - 1], &var_f25);
|
|
BoardPlayerPosGet(arg0, &sp18);
|
|
BoardModelPosGet(lbl_1_data_49A, &sp24);
|
|
VECSubtract(&sp18, &sp24, &spC);
|
|
var_f26 = atan2d(spC.x, spC.z);
|
|
BoardPlayerMotBlendSet(arg0, var_f26 + 180.0f, 0x14);
|
|
fn_1_B6A0(var_f25, 20);
|
|
while (!BoardPlayerMotBlendCheck(arg0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerIdleSet(arg0);
|
|
}
|
|
|
|
void fn_1_C108(s32 arg0) {
|
|
if (arg0 != 0) {
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE);
|
|
BoardModelMotionSpeedSet(lbl_1_data_498, 2.0f);
|
|
HuPrcSleep(30);
|
|
lbl_1_bss_0->unk00_field4 = 1;
|
|
while (BoardModelMotionTimeGet(lbl_1_data_498) < 90.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000002);
|
|
} else {
|
|
lbl_1_bss_0->unk00_field4 = 0;
|
|
BoardModelMotionStart(lbl_1_data_498, 2, 0);
|
|
BoardModelMotionTimeSet(lbl_1_data_498, 90.0f);
|
|
BoardModelMotionSpeedSet(lbl_1_data_498, 2.0f);
|
|
HuPrcSleep(2);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
}
|
|
}
|
|
|
|
void fn_1_C2B4(void) {
|
|
s32 i;
|
|
|
|
if (lbl_1_bss_0->unk00_field3 != 0) {
|
|
return;
|
|
}
|
|
if (lbl_1_bss_0->unk03 != 0) {
|
|
lbl_1_bss_0->unk03--;
|
|
return;
|
|
}
|
|
for (i = 0; i < 4; i++) {
|
|
if (BoardPlayerAutoSizeGet(i) != 0) {
|
|
return;
|
|
}
|
|
}
|
|
if ((BoardPlayerCoinsGet(0) > 5 || BoardPlayerCoinsGet(1) > 5 || BoardPlayerCoinsGet(2) > 5 || BoardPlayerCoinsGet(3) > 5) && GWSystem.turn > 5) {
|
|
lbl_1_bss_E8 = HuPrcChildCreate(fn_1_C40C, 0x2003, 0x3800, 0, boardMainProc);
|
|
HuPrcDestructorSet2(lbl_1_bss_E8, fn_1_94D4);
|
|
while (lbl_1_bss_E8) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
}
|
|
|
|
static void fn_1_C40C(void) {
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float var_f30;
|
|
s16 var_r29;
|
|
s16 i;
|
|
|
|
OSs8tof32(&lbl_1_data_4A4[lbl_1_bss_0->unk04 - 1], &var_f30);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 150.0f;
|
|
sp14.z = 0.0f;
|
|
sp8.x = -14.0f;
|
|
sp8.y = var_f30;
|
|
sp8.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 1);
|
|
BoardCameraMotionWait();
|
|
BoardCameraTargetModelSet(-1);
|
|
BoardModelRotYSet(lbl_1_data_498, var_f30);
|
|
lbl_1_data_4A0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 98 + MDL_ID_SHIFT), NULL, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_4A0, 0);
|
|
BoardModelLayerSet(lbl_1_data_4A0, 2);
|
|
var_r29 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1);
|
|
var_r29 = BoardSpaceLinkFlagSearch(0, var_r29, 0x04000000);
|
|
BoardSpacePosGet(0, var_r29, &sp14);
|
|
BoardModelPosGet(lbl_1_data_498, &sp20);
|
|
sp20.x += -100.0 * sind(BoardModelRotYGet(lbl_1_data_498));
|
|
sp20.z += -100.0 * cosd(BoardModelRotYGet(lbl_1_data_498));
|
|
sp20.y += 250.0f;
|
|
BoardModelPosSetV(lbl_1_data_4A0, &sp20);
|
|
BoardModelScaleSet(lbl_1_data_4A0, 10.0f, 10.0f, 10.0f);
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21);
|
|
while (WipeStatGet() != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardMusStart(1, 6, 0x7F, 0);
|
|
HuAudFXPlay(0x3B);
|
|
BoardWinCreate(2, MAKE_MESSID(48, 11), 5);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
HuAudFXPlay(0x359);
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE);
|
|
HuPrcSleep(11);
|
|
HuAudFXPlay(0x33F);
|
|
HuAudFXPlay(0x3C);
|
|
for (i = 0; i < 4; i++) {
|
|
omVibrate(i, 12, 0xC, 0);
|
|
}
|
|
HuAudFXPlay(0x352);
|
|
BoardModelVisibilitySet(lbl_1_data_4A0, 1);
|
|
BoardModelMotionStart(lbl_1_data_4A0, 0, 0);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcSleep(90);
|
|
BoardModelAttrSet(lbl_1_data_498, 0x40000004);
|
|
BoardModelVisibilitySet(lbl_1_data_4A0, 0);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_498)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE);
|
|
BoardWinCreate(0, MAKE_MESSID(48, 12), -1);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
BoardAudSeqFadeOut(1, 1000);
|
|
WipeColorSet(0, 0, 0);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21);
|
|
while (WipeStatGet() != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardModelRotYSet(lbl_1_data_498, 0.0f);
|
|
BoardCameraMoveSet(0);
|
|
BoardCameraViewSet(2);
|
|
BoardCameraMotionWait();
|
|
BoardCameraMoveSet(1);
|
|
lbl_1_bss_0->unk03 = 3;
|
|
_SetFlag(FLAG_ID_MAKE(1, 9));
|
|
for (i = 0; i < 4; i++) {
|
|
BoardPlayerPreTurnHookSet(i, fn_1_C9BC);
|
|
lbl_1_bss_0->unk05 |= (1 << i);
|
|
}
|
|
HuPrcEnd();
|
|
}
|
|
|
|
static s32 fn_1_C9BC(void) {
|
|
omVibrate(GWSystem.player_curr, 90, 6, 6);
|
|
HuAudFXPlay(0x314);
|
|
HuAudFXPlay(0x313);
|
|
BoardPlayerResizeAnimExec(GWSystem.player_curr, 1);
|
|
BoardPlayerSizeSet(GWSystem.player_curr, 1);
|
|
BoardWinCreate(0, MAKE_MESSID(48, 13), -1);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
lbl_1_bss_0->unk05 &= ~(1 << GWSystem.player_curr);
|
|
return 1;
|
|
}
|
|
|
|
static s32 fn_1_CA8C(s32 arg0, s32 arg1) {
|
|
if (BoardSpaceTypeGet(0, arg1) == 10) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
static void fn_1_CACC(void) {
|
|
Vec sp8;
|
|
float var_f30;
|
|
s16 var_r30;
|
|
s16 var_r29;
|
|
s16 var_r28;
|
|
|
|
if (lbl_1_bss_0->unk00_field3 != 0) {
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 0);
|
|
return;
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
var_r30 = lbl_1_bss_0->unk04 - 1;
|
|
OSs8tof32(&lbl_1_data_4A4[var_r30], &var_f30);
|
|
var_r28 = BoardSpaceStarGet(var_r30);
|
|
var_r29 = BoardSpaceLinkFlagSearch(0, var_r28, 0x04000000);
|
|
BoardSpacePosGet(0, var_r29, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_49A, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_498, &sp8);
|
|
BoardModelRotYSet(lbl_1_data_49A, var_f30);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelRotYSet(lbl_1_data_498, 0.0f);
|
|
}
|
|
|
|
void fn_1_CC90(void) {
|
|
s32 var_r31;
|
|
|
|
var_r31 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1);
|
|
BoardSpaceTypeSet(0, var_r31, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 0);
|
|
}
|
|
|
|
void fn_1_CD0C(void) {
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float temp_f30;
|
|
float var_f29;
|
|
s32 var_r28;
|
|
s32 var_r27;
|
|
s16 var_r29;
|
|
s16 var_r26;
|
|
s16 var_r25;
|
|
s16 var_r30;
|
|
s8 *var_r24;
|
|
|
|
if (lbl_1_bss_0->unk00_field3 != 0) {
|
|
lbl_1_bss_0->unk00_field3 = 0;
|
|
}
|
|
if (lbl_1_bss_0->unk00_field4 != 0) {
|
|
lbl_1_bss_0->unk00_field4 = 0;
|
|
}
|
|
var_r27 = BoardSpaceStarGetRandom(lbl_1_bss_0->unk04 - 1);
|
|
lbl_1_bss_0->unk04 = var_r27 + 1;
|
|
fn_1_7FA4();
|
|
if (lbl_1_bss_0->unk00_field3 != 0) {
|
|
BoardModelVisibilitySet(lbl_1_data_498, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 0);
|
|
} else {
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
var_r29 = lbl_1_bss_0->unk04 - 1;
|
|
var_r24 = &lbl_1_data_4A4[var_r29];
|
|
OSs8tof32(var_r24, &var_f29);
|
|
var_r26 = BoardSpaceStarGet(var_r29);
|
|
var_r25 = BoardSpaceLinkFlagSearch(0, var_r26, 0x04000000);
|
|
BoardSpacePosGet(0, var_r25, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_49A, &sp8);
|
|
BoardModelPosSetV(lbl_1_data_498, &sp8);
|
|
BoardModelRotYSet(lbl_1_data_49A, var_f29);
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelRotYSet(lbl_1_data_498, 0.0f);
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_data_498, 1);
|
|
BoardModelVisibilitySet(lbl_1_data_49A, 1);
|
|
BoardModelPosGet(lbl_1_data_498, &sp20);
|
|
BoardViewFocusGetPos(&sp2C);
|
|
VECSubtract(&sp2C, &sp20, &sp14);
|
|
sp14.y = 0.0f;
|
|
temp_f30 = VECMag(&sp14);
|
|
if (temp_f30 > 3000.0f) {
|
|
var_r30 = 180;
|
|
} else if (temp_f30 > 1500.0f) {
|
|
var_r30 = 90;
|
|
} else {
|
|
var_r30 = 60;
|
|
}
|
|
BoardViewFocusSet(&sp20, var_r30);
|
|
var_r28 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1);
|
|
BoardSpaceTypeSet(0, var_r28, 10);
|
|
BoardViewMoveEnd();
|
|
while (!BoardViewMoveCheck()) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardWinCreate(3, MAKE_MESSID(48, 1), -1);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
}
|