154 lines
3.6 KiB
C
154 lines
3.6 KiB
C
#include "game/board/model.h"
|
|
#include "game/data.h"
|
|
#include "game/gamework_data.h"
|
|
#include "math.h"
|
|
|
|
#include "REL/w20Dll.h"
|
|
|
|
s16 lbl_1_bss_C;
|
|
s32 lbl_1_bss_8;
|
|
s32 lbl_1_bss_4;
|
|
UnkW20BoardData *lbl_1_bss_0;
|
|
|
|
s16 lbl_1_data_0 = 0xFFFF;
|
|
s16 lbl_1_data_2 = 0xFFFF;
|
|
s16 lbl_1_data_4 = 0xFFFF;
|
|
s16 lbl_1_data_6 = 0xFFFF;
|
|
s16 lbl_1_data_8 = 0xFFFF;
|
|
s16 lbl_1_data_A = 0xFFFF;
|
|
s32 lbl_1_data_C[] = {
|
|
0x005F0000,
|
|
0x001A0000,
|
|
0x006D0000,
|
|
0x008A0000,
|
|
0x00850000,
|
|
0x00110000,
|
|
0x000D0000,
|
|
0x00810000,
|
|
};
|
|
|
|
s32 unkMotTbl[] = { DATA_MAKE_NUM(DATADIR_BGUEST, 42), -1 };
|
|
|
|
void fn_1_44C(void);
|
|
void fn_1_490(void);
|
|
void fn_1_494(void);
|
|
s32 fn_1_498(void);
|
|
void fn_1_4A0(void);
|
|
void fn_1_4A4(void);
|
|
void fn_1_4A8(void);
|
|
s32 fn_1_4AC(s16 arg0, float arg8, float arg9);
|
|
|
|
void BoardCreate(void)
|
|
{
|
|
s32 sp8;
|
|
s32 var_r31;
|
|
|
|
var_r31 = GWSystem.board;
|
|
sp8 = var_r31;
|
|
lbl_1_bss_0 = (UnkW20BoardData *)GWSystem.board_data;
|
|
lbl_1_bss_0->unk_00 = 0;
|
|
lbl_1_bss_0->unk_04 = 0;
|
|
lbl_1_bss_0->unk_06 = 0;
|
|
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W20, 0));
|
|
lbl_1_data_0 = BoardModelCreate(0x7C0001, NULL, 0);
|
|
fn_8006DDE8(lbl_1_data_0, -1.0f);
|
|
BoardModelPosSet(lbl_1_data_0, 0.0f, 0.0f, 0.0f);
|
|
BoardModelMotionStart(lbl_1_data_0, 0, 0x40000001);
|
|
BoardModelMotionSpeedSet(lbl_1_data_0, 1.0f);
|
|
lbl_1_data_2 = BoardModelCreate(0x7C0002, NULL, 0);
|
|
fn_8006DDE8(lbl_1_data_2, -1.0f);
|
|
BoardModelPosSet(lbl_1_data_2, 0.0f, 0.0f, 0.0f);
|
|
BoardModelMotionStart(lbl_1_data_2, 0, 0x40000001);
|
|
lbl_1_data_6 = BoardModelCreate(0x20029, unkMotTbl, 0);
|
|
BoardModelMotionStart(lbl_1_data_6, 1, 0x40000001);
|
|
lbl_1_data_8 = BoardModelCreate(0x20029, unkMotTbl, 0);
|
|
BoardModelMotionStart(lbl_1_data_8, 1, 0x40000001);
|
|
BoardLightHookSet(fn_1_44C, fn_1_490);
|
|
BoardSpaceWalkEventFuncSet(fn_1_498);
|
|
BoardSpaceWalkMiniEventFuncSet(fn_1_4A8);
|
|
BoardSpaceLandEventFuncSet(fn_1_494);
|
|
BoardShopHostSet(lbl_1_data_6);
|
|
BoardLotteryHostSet(lbl_1_data_8);
|
|
BoardStarHostSet(lbl_1_data_6);
|
|
}
|
|
|
|
void BoardDestroy(void)
|
|
{
|
|
if (lbl_1_data_6 != -1) {
|
|
BoardModelKill(lbl_1_data_6);
|
|
lbl_1_data_6 = -1;
|
|
}
|
|
if (lbl_1_data_0 != -1) {
|
|
BoardModelKill(lbl_1_data_0);
|
|
lbl_1_data_0 = -1;
|
|
}
|
|
if (lbl_1_data_2 != -1) {
|
|
BoardModelKill(lbl_1_data_2);
|
|
lbl_1_data_2 = -1;
|
|
}
|
|
BoardSpaceDestroy();
|
|
}
|
|
|
|
void fn_1_44C(void)
|
|
{
|
|
s16 var_r31;
|
|
|
|
var_r31 = BoardModelIDGet(lbl_1_data_0);
|
|
Hu3DModelLightInfoSet(var_r31, 1);
|
|
}
|
|
|
|
void fn_1_490(void) { }
|
|
|
|
void fn_1_494(void) { }
|
|
|
|
s32 fn_1_498(void) { return 0; }
|
|
|
|
void fn_1_4A0(void) { }
|
|
|
|
void fn_1_4A4(void) { }
|
|
|
|
void fn_1_4A8(void) { }
|
|
|
|
s32 fn_1_4AC(s16 arg0, float arg8, float arg9)
|
|
{
|
|
float var_f29;
|
|
float var_f31;
|
|
s32 var_r31;
|
|
|
|
var_r31 = 0;
|
|
var_f31 = BoardModelRotYGet(arg0);
|
|
arg8 = fmod(arg8, 360.0f);
|
|
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 += arg9;
|
|
} else {
|
|
var_f31 = arg8;
|
|
}
|
|
} else if ((360.0f - var_f29) > arg9) {
|
|
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;
|
|
}
|