marioparty4/src/REL/w06Dll/bowser.c
2024-12-14 22:42:43 +01:00

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();
}