247 lines
6.4 KiB
C
247 lines
6.4 KiB
C
#include "include/REL/w10Dll.h"
|
|
#include "game/data.h"
|
|
#include "game/hsfman.h"
|
|
#include "game/board/star.h"
|
|
#include "game/board/tutorial.h"
|
|
|
|
#include "math.h"
|
|
|
|
//BSS
|
|
s16 lbl_1_bss_22[11];
|
|
s16 lbl_1_bss_20;
|
|
s16 lbl_1_bss_1E;
|
|
s16 lbl_1_bss_1C;
|
|
Process* lbl_1_bss_18;
|
|
s16 lbl_1_bss_10[4];
|
|
s16 lbl_1_bss_E;
|
|
s16 lbl_1_bss_C;
|
|
void* lbl_1_bss_8;
|
|
s32 lbl_1_bss_4_pad;
|
|
W10State* lbl_1_bss_0;
|
|
|
|
//DATA
|
|
unkw10Dll lbl_1_data_0[1] = {
|
|
3300.0f, 100.0f, -900.0f,
|
|
0.0f, 0.0f, 0.0f,
|
|
1.0f, 1.0f, 1.0f,
|
|
DATA_MAKE_NUM(DATADIR_W10, 3)
|
|
};
|
|
|
|
|
|
s16 lbl_1_data_28 = -1;
|
|
s16 lbl_1_data_2A = -1;
|
|
s16 lbl_1_data_2C = -1;
|
|
s16 lbl_1_data_2E = -1;
|
|
s16 lbl_1_data_30 = -1;
|
|
s16 lbl_1_data_32 = -1;
|
|
|
|
//unused?
|
|
s32 lbl_1_data_34[] = {
|
|
0x005F0000, 0x001A0000,
|
|
0x006D0000, 0x008A0000,
|
|
0x00850000, 0x00110000,
|
|
0x000D0000, 0x00810000,
|
|
};
|
|
|
|
s32 lbl_1_data_54[2] = {
|
|
DATA_MAKE_NUM(DATADIR_W10, 18),
|
|
DATA_NUM_LISTEND
|
|
};
|
|
|
|
s32 lbl_1_data_5C[2] = {
|
|
DATA_MAKE_NUM(DATADIR_BGUEST, 9),
|
|
DATA_NUM_LISTEND
|
|
};
|
|
|
|
s32 lbl_1_data_64[2] = {
|
|
DATA_MAKE_NUM(DATADIR_BGUEST, 24),
|
|
DATA_NUM_LISTEND
|
|
};
|
|
|
|
s32 lbl_1_data_6C[2] = {
|
|
DATA_MAKE_NUM(DATADIR_BGUEST, 14),
|
|
DATA_NUM_LISTEND
|
|
};
|
|
|
|
// function is probably global. only inlined in rels?
|
|
inline s32 get_current_board(void) {
|
|
return GWSystem.board;
|
|
}
|
|
|
|
void BoardCreate(void) {
|
|
f32 sp10;
|
|
f32 spC[2];
|
|
s32 sp8;
|
|
|
|
s32 i;
|
|
unkw10Dll* temp_r30;
|
|
s32 temp;
|
|
s32 temp2;
|
|
|
|
temp2 = get_current_board();
|
|
lbl_1_bss_0 = (W10State *)&GWSystem.board_data;
|
|
lbl_1_bss_0->unk0 = 0;
|
|
lbl_1_bss_0->unk4 = 0;
|
|
lbl_1_bss_0->unk6 = 0;
|
|
BoardTutorialHookSet(&fn_1_1AAC);
|
|
fn_1_AEC();
|
|
fn_1_1D68();
|
|
lbl_1_bss_C = 0;
|
|
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0));
|
|
temp = BoardSpaceFlagSearch(0, 1);
|
|
BoardTutorialBlockSetPos(temp, 1);
|
|
lbl_1_data_28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0);
|
|
fn_8006DDE8(lbl_1_data_28, -1.0f);
|
|
BoardModelPosSet(lbl_1_data_28, 0.0f, 0.0f, 0.0f);
|
|
BoardModelMotionStart(lbl_1_data_28, 0, 0x40000001);
|
|
BoardModelMotionSpeedSet(lbl_1_data_28, 1.0f);
|
|
lbl_1_data_2A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0);
|
|
fn_8006DDE8(lbl_1_data_2A, -1.0f);
|
|
BoardModelPosSet(lbl_1_data_2A, 0.0f, 0.0f, 0.0f);
|
|
BoardModelMotionStart(lbl_1_data_2A, 0, 0x40000001);
|
|
lbl_1_data_2C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), lbl_1_data_54, 0);
|
|
BoardModelPosSet(lbl_1_data_2C, 0.0f, 0.0f, 0.0f);
|
|
BoardModelMotionStart(lbl_1_data_2C, 1, 0x40000001);
|
|
lbl_1_data_2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0);
|
|
BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001);
|
|
lbl_1_data_32 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0);
|
|
BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001);
|
|
lbl_1_data_30 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0);
|
|
BoardModelMotionStart(lbl_1_data_30, 1, 0x40000001);
|
|
BoardLightHookSet(&fn_1_8C0, &fn_1_904);
|
|
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
|
|
temp_r30 = &lbl_1_data_0[i];
|
|
if (temp_r30->unk24 != -1) {
|
|
lbl_1_bss_8 = NULL;
|
|
lbl_1_bss_10[i] = BoardModelCreate(temp_r30->unk24, lbl_1_bss_8, 0);
|
|
BoardModelPosSetV(lbl_1_bss_10[i], &temp_r30->unk0);
|
|
BoardModelRotSetV(lbl_1_bss_10[i], &temp_r30->unk0C);
|
|
BoardModelScaleSetV(lbl_1_bss_10[i], &temp_r30->unk18);
|
|
BoardModelVisibilitySet(lbl_1_bss_10[i], 1);
|
|
if (lbl_1_bss_8 != NULL) {
|
|
BoardModelMotionStart(lbl_1_bss_10[i], 0, 0x40000001);
|
|
}
|
|
}
|
|
}
|
|
BoardModelVisibilitySet(lbl_1_bss_10[0], 0);
|
|
lbl_1_bss_0->unk8 = BoardModelCreate(0x7000A, NULL, 0);
|
|
BoardModelVisibilitySet(lbl_1_bss_0->unk8, 0);
|
|
BoardSpaceWalkEventFuncSet((void*)&fn_1_90C);
|
|
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_91C);
|
|
BoardSpaceLandEventFuncSet((void*)&fn_1_908);
|
|
BoardStarHostSet(lbl_1_data_2C);
|
|
BoardBooHouseHostSet(lbl_1_data_32);
|
|
BoardShopHostSet(lbl_1_data_2E);
|
|
BoardLotteryHostSet(lbl_1_data_30);
|
|
HuWinMesMaxSizeGet(1, spC, 0x2E003A);
|
|
lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1);
|
|
HuWinMesSet(lbl_1_bss_E, 0x2E003A);
|
|
HuWinMesSpeedSet(lbl_1_bss_E, 0);
|
|
HuWinPriSet(lbl_1_bss_E, 1);
|
|
HuWinMesPalSet(lbl_1_bss_E, 7, 0, 0, 0);
|
|
}
|
|
|
|
void BoardDestroy(void) {
|
|
s32 i;
|
|
for (i = 0; i < 1; i++) {
|
|
if (lbl_1_bss_10[i] != 0) {
|
|
BoardModelKill(lbl_1_bss_10[i]);
|
|
lbl_1_bss_10[i] = 0;
|
|
}
|
|
}
|
|
if (lbl_1_data_32 != -1) {
|
|
BoardModelKill(lbl_1_data_32);
|
|
lbl_1_data_32 = -1;
|
|
}
|
|
if (lbl_1_data_2E != -1) {
|
|
BoardModelKill(lbl_1_data_2E);
|
|
lbl_1_data_2E = -1;
|
|
}
|
|
if (lbl_1_data_30 != -1) {
|
|
BoardModelKill(lbl_1_data_30);
|
|
lbl_1_data_30 = -1;
|
|
}
|
|
if (lbl_1_data_2C != -1) {
|
|
BoardModelKill(lbl_1_data_2C);
|
|
lbl_1_data_2C = -1;
|
|
}
|
|
if (lbl_1_data_28 != -1) {
|
|
BoardModelKill(lbl_1_data_28);
|
|
lbl_1_data_28 = -1;
|
|
}
|
|
if (lbl_1_data_2A != -1) {
|
|
BoardModelKill(lbl_1_data_2A);
|
|
lbl_1_data_2A = -1;
|
|
}
|
|
BoardModelKill(lbl_1_bss_0->unk8);
|
|
fn_1_1DEC();
|
|
HuWinKill(lbl_1_bss_E);
|
|
BoardSpaceDestroy();
|
|
}
|
|
|
|
void fn_1_8C0(void) {
|
|
s16 temp = BoardModelIDGet(lbl_1_data_28);
|
|
Hu3DModelLightInfoSet(temp, 1);
|
|
}
|
|
|
|
void fn_1_904(void) {
|
|
}
|
|
|
|
void fn_1_908(void) {
|
|
}
|
|
|
|
s32 fn_1_90C(void) {
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_914(void) {
|
|
}
|
|
|
|
void fn_1_918(void) {
|
|
}
|
|
|
|
void fn_1_91C(void) {
|
|
}
|
|
|
|
s32 fn_1_920(s16 arg0, f32 arg8, f32 arg9) {
|
|
s32 var_r31;
|
|
f32 var_f29;
|
|
f32 var_f31;
|
|
|
|
var_r31 = 0;
|
|
var_f31 = BoardModelRotYGet(arg0);
|
|
arg8 = fmod(arg8, 360.0);
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
if (arg8 < 0.0f) {
|
|
arg8 += 360.0f;
|
|
}
|
|
if (var_f31 != arg8) {
|
|
var_f29 = arg8 - var_f31;
|
|
if (var_f29 < 0.0f) {
|
|
var_f29 += 360.0f;
|
|
}
|
|
if (var_f29 < 180.0f) {
|
|
if (var_f29 > arg9) {
|
|
var_f31 = var_f31 + arg9;
|
|
} else {
|
|
var_f31 = arg8;
|
|
}
|
|
} else if ((360.0f - var_f29) > arg9) {
|
|
var_f31 = var_f31 - arg9;
|
|
} else {
|
|
var_f31 = arg8;
|
|
}
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
if (var_f31 >= 360.0f) {
|
|
var_f31 -= 360.0f;
|
|
}
|
|
BoardModelRotYSet(arg0, var_f31);
|
|
} else {
|
|
var_r31 = 1;
|
|
}
|
|
return var_r31;
|
|
}
|