Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
299866766c
200 changed files with 51340 additions and 6907 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "game/gamework_data.h"
|
||||
#include "game/process.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/data.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/object.h"
|
||||
|
|
@ -14,6 +15,8 @@
|
|||
#include "math.h"
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
#include "data_num/title.h"
|
||||
|
||||
#define HU_PAD_BTN_ALL (HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3])
|
||||
#define HU_PAD_BTNDOWN_ALL (HuPadBtnDown[0] | HuPadBtnDown[1] | HuPadBtnDown[2] | HuPadBtnDown[3])
|
||||
#define HU_PAD_DSTK_ALL (HuPadDStkRep[0] | HuPadDStkRep[1] | HuPadDStkRep[2] | HuPadDStkRep[3])
|
||||
|
|
@ -43,8 +46,6 @@ static BOOL TitleProc(void);
|
|||
|
||||
void *logoReadNintendo(void);
|
||||
|
||||
#define M_PI 3.141592653589793
|
||||
|
||||
void ModuleProlog(void)
|
||||
{
|
||||
omOvlHisData *history;
|
||||
|
|
@ -83,14 +84,14 @@ static void BootProc(void)
|
|||
sprite_nintendo = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 0, sprite_nintendo);
|
||||
HuSprPosSet(group, 0, 288, 240);
|
||||
HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF);
|
||||
if(omovlevtno != 0) {
|
||||
HuAudSndGrpSetSet(0);
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1));
|
||||
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
|
||||
sprite_hudson = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
||||
HuSprPosSet(group, 1, 288, 240);
|
||||
HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
|
||||
HuWinInit(1);
|
||||
TitleInit();
|
||||
SystemInitF = 1;
|
||||
|
|
@ -103,7 +104,7 @@ static void BootProc(void)
|
|||
GWPlayerCfg[i].pad_idx = i;
|
||||
}
|
||||
repeat:
|
||||
HuSprAttrReset(group, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(group, 0, HUSPR_ATTR_DISPOFF);
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
|
||||
while(WipeStatGet()) {
|
||||
HuPrcVSleep();
|
||||
|
|
@ -116,11 +117,11 @@ static void BootProc(void)
|
|||
MGSeqInit();
|
||||
HuWinInit(1);
|
||||
TitleInit();
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1));
|
||||
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
|
||||
sprite_hudson = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
||||
HuSprPosSet(group, 1, 288, 240);
|
||||
HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
|
||||
while(OSTicksToMilliseconds(OSGetTick()-tick_prev) < 3000) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -136,8 +137,8 @@ static void BootProc(void)
|
|||
while(WipeStatGet()) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(group, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrReset(group, 1, HUSPR_ATTR_DISPOFF);
|
||||
HuPrcSleep(60);
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
|
||||
while(WipeStatGet()) {
|
||||
|
|
@ -172,8 +173,8 @@ static void BootProc(void)
|
|||
while(OSTicksToMilliseconds(OSGetTick()-tick_prev) < 1000) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
|
||||
group_thp = HuSprGrpCreate(1);
|
||||
sprite_thp = HuTHPSprCreateVol("movie/opmov_a00.thp", 0, 100, 122);
|
||||
HuSprGrpMemberSet(group_thp, 0, sprite_thp);
|
||||
|
|
@ -287,19 +288,19 @@ static void ProgressiveProc(void)
|
|||
VIFlush();
|
||||
}
|
||||
group = HuSprGrpCreate(3);
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 3));
|
||||
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM);
|
||||
sprite = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 0, sprite);
|
||||
HuSprPosSet(group, 0, 288, 240);
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 6));
|
||||
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM);
|
||||
sprite = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 1, sprite);
|
||||
HuSprPosSet(group, 1, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 7));
|
||||
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM);
|
||||
sprite = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 2, sprite);
|
||||
HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
||||
HuSprAttrSet(group, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 2, HUSPR_ATTR_DISPOFF);
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30);
|
||||
while(WipeStatGet()) {
|
||||
HuPrcVSleep();
|
||||
|
|
@ -311,9 +312,9 @@ static void ProgressiveProc(void)
|
|||
i=0;
|
||||
}
|
||||
if(HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) {
|
||||
HuSprAttrSet(group, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
|
||||
HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
||||
HuSprAttrReset(group, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(group, 2, HUSPR_ATTR_DISPOFF);
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
|
|
@ -333,9 +334,9 @@ static void ProgressiveProc(void)
|
|||
HuSprGrpKill(group);
|
||||
group = HuSprGrpCreate(1);
|
||||
if(!option) {
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 4));
|
||||
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM);
|
||||
} else {
|
||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 5));
|
||||
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM);
|
||||
}
|
||||
sprite = HuSprCreate(data, 0, 0);
|
||||
HuSprGrpMemberSet(group, 0, sprite);
|
||||
|
|
@ -452,38 +453,38 @@ static void TitleInit(void)
|
|||
s16 model;
|
||||
s16 sprite;
|
||||
AnimData *sprite_data;
|
||||
titleModel[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11));
|
||||
titleModel[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
|
||||
Hu3DModelAttrSet(model, 1);
|
||||
Hu3DModelAttrSet(model, 0x40000001);
|
||||
titleModel[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12));
|
||||
titleModel[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
|
||||
Hu3DModelAttrSet(model, 1);
|
||||
Hu3DModelAttrSet(model, 0x40000001);
|
||||
titleModel[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13));
|
||||
titleModel[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
|
||||
Hu3DModelAttrSet(model, 1);
|
||||
Hu3DModelAttrSet(model, 0x40000001);
|
||||
Hu3DModelCameraInfoSet(model, 1);
|
||||
Hu3DModelLightInfoSet(model, 1);
|
||||
titleGroup = HuSprGrpCreate(4);
|
||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 8));
|
||||
sprite_data = HuSprAnimReadFile(TITLE_BG_ANM);
|
||||
sprite = HuSprCreate(sprite_data, 0, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 0, sprite);
|
||||
HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF);
|
||||
HuSprDrawNoSet(titleGroup, 0, 127);
|
||||
HuSprPosSet(titleGroup, 0, 288, 240);
|
||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 10));
|
||||
sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM);
|
||||
sprite = HuSprCreate(sprite_data, 1, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 1, sprite);
|
||||
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF);
|
||||
HuSprPosSet(titleGroup, 1, 288, 420);
|
||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2));
|
||||
sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM);
|
||||
sprite = HuSprCreate(sprite_data, 2, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 2, sprite);
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||
HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR);
|
||||
HuSprPosSet(titleGroup, 2, 288, 380);
|
||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9));
|
||||
sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
|
||||
sprite = HuSprCreate(sprite_data, 0, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 3, sprite);
|
||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||
HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR);
|
||||
HuSprPosSet(titleGroup, 3, 288, 200);
|
||||
}
|
||||
|
||||
|
|
@ -495,8 +496,8 @@ static BOOL TitleProc(void)
|
|||
s16 i;
|
||||
Hu3DModelAttrReset(titleModel[0], 1);
|
||||
Hu3DModelAttrReset(titleModel[1], 1);
|
||||
HuSprAttrReset(titleGroup, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(titleGroup, 0, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrReset(titleGroup, 1, HUSPR_ATTR_DISPOFF);
|
||||
OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, y_offset));
|
||||
OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0));
|
||||
HuAudSStreamPlay(20);
|
||||
|
|
@ -504,14 +505,14 @@ static BOOL TitleProc(void)
|
|||
while(WipeStatGet()) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuSprAttrReset(titleGroup, 3, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(titleGroup, 3, HUSPR_ATTR_DISPOFF);
|
||||
for(i=1; i<=50; i++) {
|
||||
scale = (cos((i*1.8)*M_PI/180.0)*10.0)+1.0;
|
||||
HuSprScaleSet(titleGroup, 3, scale, scale);
|
||||
HuSprTPLvlSet(titleGroup, 3, i/50.0);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuSprAttrReset(titleGroup, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrReset(titleGroup, 2, HUSPR_ATTR_DISPOFF);
|
||||
for(i=scale_time=0; i<1800; i++) {
|
||||
if(i <= 10) {
|
||||
HuSprTPLvlSet(titleGroup, 2, i/10.0);
|
||||
|
|
@ -521,7 +522,7 @@ static BOOL TitleProc(void)
|
|||
if(ret < 0) {
|
||||
OSReport(">>>>>Error %d\n", ret);
|
||||
}
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF);
|
||||
return 1;
|
||||
}
|
||||
scale = (sin((i*scale_time)*M_PI/180.0)*0.1)+0.9;
|
||||
|
|
@ -540,10 +541,10 @@ static BOOL TitleProc(void)
|
|||
Hu3DModelAttrSet(titleModel[0], 1);
|
||||
Hu3DModelAttrSet(titleModel[1], 1);
|
||||
Hu3DModelAttrSet(titleModel[2], 1);
|
||||
HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF);
|
||||
HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
1178
src/REL/instDll/main.c
Normal file
1178
src/REL/instDll/main.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -220,8 +220,8 @@ void fn_2_C1C(unkStructBSS114* arg0) {
|
|||
|
||||
void fn_2_11D0(unkStructBSS114* arg0) {
|
||||
unkStructBSS114* sp1C;
|
||||
Vec3f sp18;
|
||||
Vec3f spC;
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
unkSubstructBSS114* sp8;
|
||||
unkSubstructBSS114* temp_r31;
|
||||
s32 i;
|
||||
|
|
@ -341,9 +341,9 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
}
|
||||
|
||||
// void fn_2_1A38(unkStructBSS114* arg0) {
|
||||
// Vec3f sp20;
|
||||
// Vec3f sp14;
|
||||
// Vec3f sp8;
|
||||
// Vec sp20;
|
||||
// Vec sp14;
|
||||
// Vec sp8;
|
||||
// unkStructBSS114 *temp;
|
||||
// unkStructBSS114 *temp2;
|
||||
|
||||
|
|
@ -364,8 +364,8 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
// }
|
||||
|
||||
// void fn_2_1B80(unkStructBSS114* arg0) {
|
||||
// Vec3f sp14;
|
||||
// Vec3f sp8;
|
||||
// Vec sp14;
|
||||
// Vec sp8;
|
||||
// unkStructBSS114* temp;
|
||||
// unkStructBSS114* temp2;
|
||||
|
||||
|
|
@ -384,9 +384,9 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
// }
|
||||
|
||||
// void fn_2_1CF0(unkStructBSS114* arg0) {
|
||||
// Vec3f sp20;
|
||||
// Vec3f sp14;
|
||||
// Vec3f sp8;
|
||||
// Vec sp20;
|
||||
// Vec sp14;
|
||||
// Vec sp8;
|
||||
// unkStructBSS114 *temp;
|
||||
|
||||
// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[2]);
|
||||
|
|
@ -404,10 +404,10 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
// }
|
||||
|
||||
// void fn_2_1DE8(unkStructBSS114* arg0) {
|
||||
// Vec3f sp2C;
|
||||
// Vec3f sp20;
|
||||
// Vec3f sp14;
|
||||
// Vec3f sp8;
|
||||
// Vec sp2C;
|
||||
// Vec sp20;
|
||||
// Vec sp14;
|
||||
// Vec sp8;
|
||||
// unkStructBSS114 *temp2;
|
||||
// unkStructBSS114 *temp;
|
||||
|
||||
|
|
@ -440,7 +440,7 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
// }
|
||||
|
||||
// void fn_2_20B0(omObjData* arg0) {
|
||||
// Vec3f sp8;
|
||||
// Vec sp8;
|
||||
// omObjData* temp;
|
||||
|
||||
// temp = Hu3DModelObjPtrGet(arg0->model[0], lbl_2_data_124[4]);
|
||||
|
|
@ -461,10 +461,10 @@ void fn_2_1858(s16 arg0, s16 arg1) {
|
|||
// }
|
||||
|
||||
// void fn_2_21F8(omObjData* arg0) {
|
||||
// Vec3f sp2C;
|
||||
// Vec3f sp20;
|
||||
// Vec3f sp14;
|
||||
// Vec3f sp8;
|
||||
// Vec sp2C;
|
||||
// Vec sp20;
|
||||
// Vec sp14;
|
||||
// Vec sp8;
|
||||
// s32 i;
|
||||
// s32 var_r30_2;
|
||||
// unkStructBSS114* temp;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#include "common.h"
|
||||
#include "unsplit.h"
|
||||
#include "REL/executor.h"
|
||||
#include <dolphin/mtx.h>
|
||||
#include "game/objsub.h"
|
||||
#include "game/object.h"
|
||||
|
||||
// global data //
|
||||
typedef struct unkStruct18FC10 {
|
||||
|
|
@ -35,7 +36,7 @@ typedef struct unkStructBSS114 {
|
|||
s32 unk_04;
|
||||
char unk_08[0xC];
|
||||
void *unk_14;
|
||||
Vec3f unk_18;
|
||||
Vec unk_18;
|
||||
char unk_24[0x1C];
|
||||
unkSubstructBSS114 *unk_40;
|
||||
char unk_44[0x8];
|
||||
|
|
@ -46,7 +47,7 @@ typedef struct unkStructBSS114 {
|
|||
} unkStructBSS114;
|
||||
typedef struct unkStruct18BFC0 {
|
||||
char unk_00[0x14];
|
||||
Vec3f unk_14;
|
||||
Vec unk_14;
|
||||
} unkStruct18BFC0;
|
||||
typedef struct unkStruct18C8FC {
|
||||
s16 unk_00;
|
||||
|
|
@ -61,12 +62,12 @@ extern s16 lbl_801D3CC2;
|
|||
extern void Hu3DModelAttrSet(s16, s32);
|
||||
extern void Hu3DModelAttrReset(s16, s32);
|
||||
extern omObjData* Hu3DModelObjPtrGet(s16, s32);
|
||||
extern void Hu3DCameraPosSetV(s32, Vec3f*, Vec3f*, Vec3f*);
|
||||
extern s16 Hu3DGLightCreateV(Vec3f*, Vec3f*, s32*);
|
||||
extern void Hu3DCameraPosSetV(s32, Vec*, Vec*, Vec*);
|
||||
extern s16 Hu3DGLightCreateV(Vec*, Vec*, s32*);
|
||||
extern void Hu3DGLightInfinitytSet(s16);
|
||||
extern void Hu3DReflectNoSet(s16);
|
||||
extern void Hu3DShadowCreate(f32, f32, f32);
|
||||
extern void Hu3DShadowPosSet(Vec3f*, Vec3f*, Vec3f*);
|
||||
extern void Hu3DShadowPosSet(Vec*, Vec*, Vec*);
|
||||
extern void Hu3DShadowTPLvlSet(f32);
|
||||
extern void Hu3DFogSet(f32, f32, u8, u8, u8);
|
||||
extern void omOvlReturnEx(s16, s16);
|
||||
|
|
@ -80,7 +81,7 @@ extern void omSetSca(omObjData*, f32, f32, f32);
|
|||
extern u8 frand(void);
|
||||
extern s32 HuAudFXPlay(s32);
|
||||
extern void HuAudFXStop(s32);
|
||||
extern s32 HuAudFXEmiterPlay(s32, Vec3f*);
|
||||
extern s32 HuAudFXEmiterPlay(s32, Vec*);
|
||||
extern void HuAudFXListnerKill(void);
|
||||
extern void HuAudSeqFadeOut(s32, s32);
|
||||
extern s16 MGSeqCreate(s32, ...);
|
||||
|
|
@ -95,11 +96,11 @@ extern void espBankSet(s16, s16);
|
|||
extern void espDrawNoSet(s16, s16);
|
||||
extern void WipeCreate(s16, s16, s16);
|
||||
extern u8 WipeStatGet(void);
|
||||
extern f32 PSVECNormalize(Vec3f*, Vec3f*);
|
||||
extern f32 PSVECNormalize(Vec*, Vec*);
|
||||
|
||||
// local data //
|
||||
typedef struct unkStructBSS54 {
|
||||
Vec3f unk_00;
|
||||
Vec unk_00;
|
||||
} unkStructBSS54;
|
||||
typedef struct unkStructBSS100 {
|
||||
void *unk_00;
|
||||
|
|
@ -108,12 +109,12 @@ typedef struct unkStructBSS100 {
|
|||
|
||||
extern f32 lbl_2_data_0 = -7.1875f;
|
||||
extern s16 lbl_2_data_4[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
|
||||
extern Vec3f lbl_2_data_14 = { 1500.0f, 2500.0f, 1500.0f };
|
||||
extern Vec3f lbl_2_data_20 = { 0.0f, -1.0f, 0.0f };
|
||||
extern Vec lbl_2_data_14 = { 1500.0f, 2500.0f, 1500.0f };
|
||||
extern Vec lbl_2_data_20 = { 0.0f, -1.0f, 0.0f };
|
||||
extern s32 lbl_2_data_2C = -1;
|
||||
extern Vec3f lbl_2_data_30 = { 0.0f, 2500.0f, 0.0f };
|
||||
extern Vec3f lbl_2_data_3C = { 0.0f, 1.0f, -1.0f };
|
||||
extern Vec3f lbl_2_data_48 = { 0.0f, 0.0f, 0.0f };
|
||||
extern Vec lbl_2_data_30 = { 0.0f, 2500.0f, 0.0f };
|
||||
extern Vec lbl_2_data_3C = { 0.0f, 1.0f, -1.0f };
|
||||
extern Vec lbl_2_data_48 = { 0.0f, 0.0f, 0.0f };
|
||||
extern char lbl_2_data_6F[] = "winnercnt:%d";
|
||||
extern s32 lbl_2_data_80[8] = { 0x610000, 0x610001, 0x610002, 0x610003, 0x610004, 0x610005, 0x610006, 0x610007 };
|
||||
extern s32 lbl_2_data_124[5];
|
||||
|
|
@ -121,13 +122,13 @@ extern s32 lbl_2_data_124[5];
|
|||
extern s32 lbl_2_bss_8;
|
||||
extern f32 lbl_2_bss_10;
|
||||
extern unkStruct18FC10* lbl_2_bss_1C;
|
||||
extern Vec3f lbl_2_bss_2C;
|
||||
extern Vec3f lbl_2_bss_38;
|
||||
extern Vec3f lbl_2_bss_44;
|
||||
extern Vec lbl_2_bss_2C;
|
||||
extern Vec lbl_2_bss_38;
|
||||
extern Vec lbl_2_bss_44;
|
||||
extern f32 lbl_2_bss_50;
|
||||
extern unkStructBSS54 lbl_2_bss_54;
|
||||
extern Vec3f lbl_2_bss_60;
|
||||
extern Vec3f lbl_2_bss_6C;
|
||||
extern Vec lbl_2_bss_60;
|
||||
extern Vec lbl_2_bss_6C;
|
||||
extern f32 lbl_2_bss_84;
|
||||
extern f32 lbl_2_bss_88;
|
||||
extern s32 lbl_2_bss_90[4];
|
||||
|
|
@ -180,7 +181,7 @@ void fn_2_48A0(void*);
|
|||
void fn_2_7CB4(void*);
|
||||
void fn_2_8E74(void*);
|
||||
void fn_2_95E4(void*);
|
||||
void fn_2_91AC(void*, Vec3f*);
|
||||
void fn_2_91AC(void*, Vec*);
|
||||
void fn_2_9D00(void*);
|
||||
void fn_2_BD90(void*);
|
||||
void fn_2_C6DC(void*);
|
||||
|
|
@ -188,10 +189,10 @@ void fn_2_C130(void);
|
|||
void fn_2_D088(void*);
|
||||
void fn_2_DBCC(s16);
|
||||
void fn_2_E6BC(s32, f32, f32, f32, f32, f32);
|
||||
unkStructBSS114* fn_2_FC40(s32, Vec3f*, Vec3f*, Vec3f*);
|
||||
void fn_2_10240(Vec3f*, Vec3f*);
|
||||
unkStructBSS114* fn_2_FC40(s32, Vec*, Vec*, Vec*);
|
||||
void fn_2_10240(Vec*, Vec*);
|
||||
void fn_2_1041C(void);
|
||||
s32 fn_2_14640(void*);
|
||||
void fn_2_10710(void);
|
||||
s16 fn_2_1079C(void);
|
||||
s32 fn_2_10A88(Vec3f*, s16);
|
||||
s32 fn_2_10A88(Vec*, s16);
|
||||
|
|
|
|||
331
src/REL/messDll/main.c
Executable file
331
src/REL/messDll/main.c
Executable file
|
|
@ -0,0 +1,331 @@
|
|||
#include "REL/executor.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/object.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/wipe.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
extern s32 sprintf(char*, const char*, s32);
|
||||
|
||||
static void fn_1_2BC(omObjData *arg0);
|
||||
static void fn_1_300(omObjData *arg0);
|
||||
static void fn_1_E88(void);
|
||||
static s32 fn_1_11B0(s16 arg0, s16 arg1);
|
||||
|
||||
static Process *lbl_1_bss_34;
|
||||
static omObjData *lbl_1_bss_30;
|
||||
static omObjData *lbl_1_bss_2C;
|
||||
static u8 lbl_1_bss_C_pad[0x20];
|
||||
static Process *lbl_1_bss_8;
|
||||
static u8 lbl_1_bss_4_pad[4];
|
||||
static s16 lbl_1_bss_2;
|
||||
static s16 lbl_1_bss_0;
|
||||
|
||||
void ModuleProlog(void) {
|
||||
OSReport("******* SAFObjectSetup *********\n");
|
||||
lbl_1_bss_34 = omInitObjMan(0x32, 0x2000);
|
||||
CRot.x = -20.0f;
|
||||
CRot.y = 0.0f;
|
||||
CRot.z = 0.0f;
|
||||
Center.x = 0.0f;
|
||||
Center.y = 120.0f;
|
||||
Center.z = 0.0f;
|
||||
CZoom = 500.0f;
|
||||
Hu3DCameraCreate(1);
|
||||
Hu3DCameraPerspectiveSet(1, 45.0f, 20.0f, 15000.0f, 1.2f);
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
lbl_1_bss_30 = omAddObjEx(lbl_1_bss_34, 0, 0x40, 0, -1, fn_1_2BC);
|
||||
lbl_1_bss_2C = omAddObjEx(lbl_1_bss_34, 0x7FDA, 0, 0, -1, omOutView);
|
||||
HuWinInit(1);
|
||||
lbl_1_bss_8 = HuPrcChildCreate(fn_1_E88, 100, 0x3000, 0, lbl_1_bss_34);
|
||||
}
|
||||
|
||||
static void fn_1_2BC(omObjData *arg0) {
|
||||
WipeCreate(1, 0, 10);
|
||||
arg0->func = fn_1_300;
|
||||
}
|
||||
|
||||
static void fn_1_300(omObjData *arg0) {
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
float temp_f31;
|
||||
s8 temp_r31;
|
||||
|
||||
if (HuPadBtnDown[0] & 0x1000) {
|
||||
GWSystem.mg_next = 1;
|
||||
omOvlReturnEx(1, 1);
|
||||
return;
|
||||
}
|
||||
CRot.x += -HuPadSubStkY[0] / 20;
|
||||
CRot.y += HuPadSubStkX[0] / 20;
|
||||
CZoom += HuPadTrigL[0] / 2;
|
||||
CZoom -= HuPadTrigR[0] / 2;
|
||||
sp2C.x = Center.x + CZoom * (sin(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0));
|
||||
sp2C.y = Center.y + CZoom * -sin(CRot.x * M_PI / 180.0);
|
||||
sp2C.z = Center.z + CZoom * (cos(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0));
|
||||
sp20.x = Center.x - sp2C.x;
|
||||
sp20.y = Center.y - sp2C.y;
|
||||
sp20.z = Center.z - sp2C.z;
|
||||
sp14.x = sin(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0);
|
||||
sp14.y = cos(CRot.x * M_PI / 180.0);
|
||||
sp14.z = cos(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0);
|
||||
temp_f31 = CRot.z;
|
||||
sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cos(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.y * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.z * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.y * sin(temp_f31 * M_PI / 180.0));
|
||||
sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.z * sin(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.z * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.x * sin(temp_f31 * M_PI / 180.0));
|
||||
sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.y * sin(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.y * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0))
|
||||
+ sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cos(temp_f31 * M_PI / 180.0));
|
||||
PSVECCrossProduct(&sp14, &sp20, &sp20);
|
||||
PSVECNormalize(&sp20, &sp20);
|
||||
temp_r31 = HuPadSubStkX[0] & 0xF8;
|
||||
if (temp_r31 != 0) {
|
||||
Center.x += sp20.x * temp_r31 * 0.05f;
|
||||
Center.y += sp20.y * temp_r31 * 0.05f;
|
||||
Center.z += sp20.z * temp_r31 * 0.05f;
|
||||
}
|
||||
PSVECNormalize(&sp8, &sp20);
|
||||
temp_r31 = -(HuPadSubStkY[0] & 0xF8);
|
||||
if (temp_r31 != 0) {
|
||||
Center.x += sp20.x * temp_r31 * 0.05f;
|
||||
Center.y += sp20.y * temp_r31 * 0.05f;
|
||||
Center.z += sp20.z * temp_r31 * 0.05f;
|
||||
}
|
||||
}
|
||||
|
||||
static char *lbl_1_data_32C[] = {
|
||||
"001_Character_Name_ss",
|
||||
"002_Hidden_Block",
|
||||
"003_Battle_M",
|
||||
"004_Bowser_M",
|
||||
"005_Warp_M",
|
||||
"006_Mushroom_M",
|
||||
"007_Lot_house",
|
||||
"008_Boo_house",
|
||||
"009_ItemName",
|
||||
"010_Bord",
|
||||
"011_RoundItem",
|
||||
"012_Spaceamida",
|
||||
"013_Star_M",
|
||||
"014_RollerCoaster",
|
||||
"015_Last5",
|
||||
"016_ItemShop",
|
||||
"017_System",
|
||||
"018_ModeSelect",
|
||||
"019_Item",
|
||||
"020_Map2_event",
|
||||
"021_Lucky_Minigame",
|
||||
"022_Bord_Start",
|
||||
"023_Map3_event",
|
||||
"024_Minigame_Name",
|
||||
"025_mg_446",
|
||||
"026_debugmes",
|
||||
"027_Party_Mode",
|
||||
"028_SETUP",
|
||||
"029_Miracle",
|
||||
"030_mg_kuppa",
|
||||
"031_Story_Mode",
|
||||
"032_Bowser_Story",
|
||||
"033_Map4_event",
|
||||
"034_mg_inst",
|
||||
"035_E3_only",
|
||||
"036_saf",
|
||||
"037_Mg_inst_sys_",
|
||||
"038_Bord_Results",
|
||||
"039_Bord_Results2",
|
||||
"040_Map5_event",
|
||||
"041_Mg_Mode",
|
||||
"042_mg_445",
|
||||
"043_mg_447",
|
||||
"044_mg_448",
|
||||
"045_mg_449",
|
||||
"046_mg_450",
|
||||
"047_tutorial",
|
||||
"048_Option_Rooml",
|
||||
"049_Map6_event",
|
||||
"050_charley",
|
||||
"051_Present_Room",
|
||||
"052_Extra_Room",
|
||||
"053_Staff_Post",
|
||||
"054_Staff_Name",
|
||||
"055_Opening_Demo",
|
||||
"056_mgex_inst",
|
||||
NULL
|
||||
};
|
||||
|
||||
static s16 lbl_1_data_410 = -1;
|
||||
|
||||
static void fn_1_E88(void) {
|
||||
s16 sp10[256]; // unknown size
|
||||
char spC[4];
|
||||
char sp8[4];
|
||||
s16 temp_r3;
|
||||
s16 var_r25;
|
||||
s16 var_r27;
|
||||
s16 var_r28;
|
||||
s32 var_r30;
|
||||
s32 var_r31;
|
||||
s32 temp_r3_2;
|
||||
char *var_r29;
|
||||
|
||||
var_r28 = var_r27 = 0;
|
||||
while (lbl_1_data_32C[var_r28] != 0) {
|
||||
var_r29 = lbl_1_data_32C[var_r28];
|
||||
while (*var_r29 != 0) {
|
||||
if (*var_r29 == '_') {
|
||||
*var_r29 = 0x86;
|
||||
}
|
||||
var_r29++;
|
||||
}
|
||||
sp10[var_r28] = 0;
|
||||
var_r30 = (var_r28 << 16);
|
||||
var_r25 = 0;
|
||||
while (1) {
|
||||
if ((s32) MessData_MesPtrGet(messDataPtr, var_r30 + var_r25) == 0) {
|
||||
break;
|
||||
}
|
||||
sp10[var_r28]++;
|
||||
var_r25++;
|
||||
}
|
||||
var_r27++;
|
||||
var_r28++;
|
||||
}
|
||||
temp_r3 = HuWinExCreateStyled(-10000.0f, 32.0f, 316, 40, -1, 0);
|
||||
HuWinExAnimIn(temp_r3);
|
||||
HuWinAttrSet(temp_r3, 0x800);
|
||||
HuWinMesSpeedSet(temp_r3, 0);
|
||||
HuWinMesSet(temp_r3, MAKE_MESSID_PTR(lbl_1_data_32C[0]));
|
||||
lbl_1_bss_0 = HuWinCreate(460.0f, 32.0f, 100, 40, 0);
|
||||
HuWinAttrSet(lbl_1_bss_0, 0x800);
|
||||
HuWinMesSpeedSet(lbl_1_bss_0, 0);
|
||||
HuWinMesSet(lbl_1_bss_0, MAKE_MESSID_PTR("\x1F\x01_\x1F\x02"));
|
||||
var_r31 = 0;
|
||||
var_r30 = 0;
|
||||
while (1) {
|
||||
HuWinHomeClear(lbl_1_bss_0);
|
||||
sprintf(spC, "%03d", var_r30 + 1);
|
||||
HuWinInsertMesSet(lbl_1_bss_0, MAKE_MESSID_PTR(spC), 0);
|
||||
sprintf(sp8, "%03d", sp10[var_r31]);
|
||||
HuWinInsertMesSet(lbl_1_bss_0, MAKE_MESSID_PTR(sp8), 1);
|
||||
HuWinMesSet(lbl_1_bss_0, MAKE_MESSID_PTR("\x1F\x01_\x1F\x02"));
|
||||
temp_r3_2 = fn_1_11B0(var_r31, var_r30);
|
||||
if (temp_r3_2 & 0x20) {
|
||||
var_r31++;
|
||||
if (var_r31 >= var_r27) {
|
||||
var_r31 = 0;
|
||||
}
|
||||
var_r30 = 0;
|
||||
} else if (temp_r3_2 & 0x40) {
|
||||
var_r31--;
|
||||
if (var_r31 < 0) {
|
||||
var_r31 = var_r27 - 1;
|
||||
}
|
||||
var_r30 = 0;
|
||||
} else if (temp_r3_2 & 0x200) {
|
||||
var_r30--;
|
||||
if (var_r30 < 0) {
|
||||
var_r31--;
|
||||
if (var_r31 < 0) {
|
||||
var_r31 = var_r27 - 1;
|
||||
}
|
||||
var_r30 = sp10[var_r31] - 1;
|
||||
}
|
||||
} else {
|
||||
var_r30++;
|
||||
if (var_r30 >= sp10[var_r31]) {
|
||||
var_r31++;
|
||||
if (var_r31 >= var_r27) {
|
||||
var_r31 = 0;
|
||||
}
|
||||
var_r30 = 0;
|
||||
}
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static char *lbl_1_data_440[] = {
|
||||
"]1^",
|
||||
"]2^",
|
||||
"]3^",
|
||||
"]4^",
|
||||
"]5^",
|
||||
"]6^",
|
||||
"]7^",
|
||||
"]8^"
|
||||
};
|
||||
|
||||
static s32 fn_1_11B0(s16 arg0, s16 arg1) {
|
||||
WindowData *temp_r30;
|
||||
float sp10;
|
||||
float spC;
|
||||
s32 temp_r28;
|
||||
s32 var_r27;
|
||||
s32 var_r26;
|
||||
u8 *var_r29;
|
||||
s16 i;
|
||||
|
||||
var_r27 = 0;
|
||||
var_r26 = 0;
|
||||
HuWinHomeClear(lbl_1_bss_2);
|
||||
HuWinMesSet(lbl_1_bss_2, MAKE_MESSID_PTR(lbl_1_data_32C[arg0]));
|
||||
HuPrcVSleep();
|
||||
if (lbl_1_data_410 != -1) {
|
||||
HuWinKill(lbl_1_data_410);
|
||||
}
|
||||
temp_r28 = MAKE_MESSID(arg0, arg1);
|
||||
for (i = 0; i < 8; i++) {
|
||||
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16) i);
|
||||
}
|
||||
HuWinMesMaxSizeGet(1, &spC, temp_r28);
|
||||
if (spC <= 16.0f) {
|
||||
spC = 32.0f;
|
||||
}
|
||||
lbl_1_data_410 = HuWinCreate(-10000.0f, -10000.0f, spC, sp10, 0);
|
||||
for (i = 0; i < 8; i++) {
|
||||
HuWinInsertMesSet(lbl_1_data_410, MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16) i);
|
||||
}
|
||||
temp_r30 = &winData[lbl_1_data_410];
|
||||
temp_r30->push_key |= 0x360;
|
||||
temp_r30->key_auto = 0x60;
|
||||
HuWinMesSet(lbl_1_data_410, temp_r28);
|
||||
var_r29 = MessData_MesPtrGet(messDataPtr, temp_r28);
|
||||
while (*var_r29 != 0) {
|
||||
if (*var_r29 == 0xF) {
|
||||
var_r27 = 1;
|
||||
}
|
||||
if (*var_r29 == 0) {
|
||||
var_r26 = 1;
|
||||
}
|
||||
var_r29++;
|
||||
}
|
||||
if (var_r27 != 0) {
|
||||
HuWinMesWait(lbl_1_data_410);
|
||||
HuWinChoiceGet(lbl_1_data_410, 0);
|
||||
return temp_r30->key_down;
|
||||
}
|
||||
if (var_r26 == 0) {
|
||||
while (!(HuPadBtnRep[0] & 0x360)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
return HuPadBtnRep[0];
|
||||
}
|
||||
while (temp_r30->stat != 0) {
|
||||
if (HuPadBtnRep[0] & 0x60) {
|
||||
return HuPadBtnDown[0];
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
return temp_r30->key_down;
|
||||
}
|
||||
827
src/REL/modeltestDll/main.c
Normal file
827
src/REL/modeltestDll/main.c
Normal file
|
|
@ -0,0 +1,827 @@
|
|||
#include "math.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/object.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/hsfex.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/window.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "REL/modeltestDll.h"
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
s32 lbl_1_data_0[8] = {
|
||||
0x005F001B,
|
||||
0x005F0015,
|
||||
0x005F0016,
|
||||
0x005F0006,
|
||||
0x005F0000,
|
||||
0x005F0000,
|
||||
0x005F0000,
|
||||
0x005F0004,
|
||||
};
|
||||
|
||||
const f64 unk_rodata_0 = 0.5;
|
||||
const f64 unk_rodata_8 = 3.0;
|
||||
omObjData * lbl_1_bss_9A4;
|
||||
omObjData * lbl_1_bss_9A0;
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_A0(void)
|
||||
{
|
||||
Process * prc;
|
||||
OSReport("******* MODELTESTObjectSetup *********\n");
|
||||
|
||||
prc = omInitObjMan(0x32, 0x2000);
|
||||
omGameSysInit(prc);
|
||||
|
||||
CRot.x = -30.0f;
|
||||
CRot.y = 0.0f;
|
||||
CRot.z = 0.0f;
|
||||
Center.x = 0.0f;
|
||||
Center.y = 0.0f;
|
||||
Center.z = 0.0f;
|
||||
CZoom = 800.0f;
|
||||
|
||||
Hu3DCameraCreate(1);
|
||||
Hu3DCameraPerspectiveSet(1, 45.0f, 20.0f, 20000.0f, 1.2f);
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
|
||||
lbl_1_bss_9A4 = omAddObjEx(prc, 0, 0x20, 0x20, -1, fn_1_29C);
|
||||
lbl_1_bss_9A0 = omAddObjEx(prc, 0x7FDA, 0, 0, -1, omOutView);
|
||||
|
||||
Hu3DBGColorSet(0x20U, 0x80U, 0x80U);
|
||||
WipeCreate(1, 0, 0x1E);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
char * lbl_1_data_D8[16] = {
|
||||
"target1A",
|
||||
"target1B",
|
||||
"target2A",
|
||||
"target2B",
|
||||
"target3A",
|
||||
"target3B",
|
||||
"target4A",
|
||||
"target4B",
|
||||
"target5A",
|
||||
"target5B",
|
||||
"target6A",
|
||||
"target6B",
|
||||
"target7A",
|
||||
"target7B",
|
||||
"target8A",
|
||||
"target8B"
|
||||
};
|
||||
|
||||
|
||||
HsfanimStruct00 lbl_1_data_118 = {
|
||||
/* unk00 */ 40,
|
||||
/* unk02 */ {0, 0},
|
||||
/* unk04 */ 50.0f,
|
||||
/* unk08 */ 0.0f,
|
||||
/* unk0C */ 90.0f,
|
||||
/* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f},
|
||||
/* unk1C */ 50.0f,
|
||||
/* unk20 */ 0.800000011920929f,
|
||||
/* unk24 */ 20.0f,
|
||||
/* unk28 */ 0.9900000095367432f,
|
||||
/* unk2C */ 4,
|
||||
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}},
|
||||
/* unk3E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}},
|
||||
};
|
||||
|
||||
HsfanimStruct00 lbl_1_data_168[2] = {
|
||||
{
|
||||
/* unk00 */ 50,
|
||||
/* unk02 */ {0, 0},
|
||||
/* unk04 */ 5.0f,
|
||||
/* unk08 */ 10.0f,
|
||||
/* unk0C */ 10.0f,
|
||||
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||
/* unk1C */ 2.0f,
|
||||
/* unk20 */ 1.0099999904632568f,
|
||||
/* unk24 */ 30.0f,
|
||||
/* unk28 */ 0.9900000095367432f,
|
||||
/* unk2C */ 2,
|
||||
/* unk2E */ {{ /* r */ 48, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 64, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
/* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
},
|
||||
{
|
||||
/* unk00 */ 30,
|
||||
/* unk02 */ {0, 0},
|
||||
/* unk04 */ 3.299999952316284f,
|
||||
/* unk08 */ 10.0f,
|
||||
/* unk0C */ 0.0f,
|
||||
/* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f},
|
||||
/* unk1C */ 2.0f,
|
||||
/* unk20 */ 1.0f,
|
||||
/* unk24 */ 20.0f,
|
||||
/* unk28 */ 0.9800000190734863f,
|
||||
/* unk2C */ 2,
|
||||
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 64, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
/* unk3E */ {{ /* r */ 255, /* g */ 128, /* b */ 128, /* a */ 0}, { /* r */ 255, /* g */ 64, /* b */ 32, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
}};
|
||||
|
||||
HsfanimStruct00 lbl_1_data_208 = {
|
||||
/* unk00 */ 40,
|
||||
/* unk02 */ {0, 0},
|
||||
/* unk04 */ 50.0f,
|
||||
/* unk08 */ 0.0f,
|
||||
/* unk0C */ 180.0f,
|
||||
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||
/* unk1C */ 30.0f,
|
||||
/* unk20 */ 0.8999999761581421f,
|
||||
/* unk24 */ 20.0f,
|
||||
/* unk28 */ 0.9900000095367432f,
|
||||
/* unk2C */ 4,
|
||||
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}},
|
||||
/* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
};
|
||||
|
||||
HsfanimStruct00 lbl_1_data_258 = {
|
||||
/* unk00 */ 30,
|
||||
/* unk02 */ {0, 0},
|
||||
/* unk04 */ 50.0f,
|
||||
/* unk08 */ 0.0f,
|
||||
/* unk0C */ 90.0f,
|
||||
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||
/* unk1C */ 30.0f,
|
||||
/* unk20 */ 0.949999988079071f,
|
||||
/* unk24 */ 20.0f,
|
||||
/* unk28 */ 0.9900000095367432f,
|
||||
/* unk2C */ 2,
|
||||
/* unk2E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
/* unk3E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||
};
|
||||
|
||||
const Point3d lbl_1_rodata_38 = {0.0f, 0.0f, 0.0f};
|
||||
const Point3d lbl_1_rodata_44 = {0.0f, 1.0f, 0.0f};
|
||||
s16 lbl_1_bss_99C;
|
||||
s16 lbl_1_bss_99A;
|
||||
s16 lbl_1_bss_98A[8];
|
||||
s16 lbl_1_bss_88A[8][16];
|
||||
s16 lbl_1_bss_888;
|
||||
s16 unk_bss_886;
|
||||
s16 lbl_1_bss_884;
|
||||
s16 lbl_1_bss_864[16];
|
||||
s16 lbl_1_bss_664[256];
|
||||
s16 lbl_1_bss_460[258];
|
||||
s16 lbl_1_bss_45A[3];
|
||||
s16 lbl_1_bss_458;
|
||||
AnimData * lbl_1_bss_454;
|
||||
s32 unk_bss_450;
|
||||
HuObjUnk lbl_1_bss_40[20];
|
||||
void * lbl_1_bss_30[4];
|
||||
u8 lbl_1_bss_2C;
|
||||
f32 lbl_1_bss_28;
|
||||
s16 lbl_1_bss_24;
|
||||
f32 lbl_1_bss_20;
|
||||
Process * lbl_1_bss_18[2];
|
||||
Process * lbl_1_bss_14;
|
||||
Process * lbl_1_bss_10;
|
||||
s32 lbl_1_bss_C;
|
||||
f32 lbl_1_bss_8;
|
||||
static u8 unk_bss[8];
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_29C(omObjData * arg0)
|
||||
{
|
||||
Point3d sp20;
|
||||
Point3d sp14;
|
||||
Point3d sp8;
|
||||
Mtx sp2C;
|
||||
s16 var_r31;
|
||||
s16 temp_r27;
|
||||
u32 temp_r26;
|
||||
s16 temp_r3;
|
||||
void * temp_r29;
|
||||
AnimData * temp_r28;
|
||||
f32 temp_r5;
|
||||
f32 temp_f30;
|
||||
s16 chrIdx;
|
||||
s32 temp_r0;
|
||||
|
||||
sp14 = lbl_1_rodata_38;
|
||||
sp8 = lbl_1_rodata_44;
|
||||
|
||||
var_r31 = Hu3DGLightCreate(0.0f, 500.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
|
||||
Hu3DGLightInfinitytSet(var_r31);
|
||||
Hu3DShadowCreate(45.0f, 500.0f, 8000.0f);
|
||||
Hu3DShadowTPLvlSet(0.5f);
|
||||
|
||||
Hu3DShadowSizeSet(0xC0U);
|
||||
sp20.x = -500.0f;
|
||||
sp20.y = 1000.0f;
|
||||
sp20.z = 1000.0f;
|
||||
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 1; ++var_r31)
|
||||
{
|
||||
chrIdx = 0;
|
||||
lbl_1_bss_98A[var_r31] = CharModelCreate(chrIdx, 2);
|
||||
if (var_r31 == 1) {
|
||||
Hu3DModelLayerSet(lbl_1_bss_98A[var_r31], 1);
|
||||
}
|
||||
|
||||
lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, lbl_1_data_0[0]);
|
||||
lbl_1_bss_88A[var_r31][1] = CharModelMotionCreate(chrIdx, lbl_1_data_0[1]);
|
||||
lbl_1_bss_88A[var_r31][2] = CharModelMotionCreate(chrIdx, lbl_1_data_0[2]);
|
||||
lbl_1_bss_88A[var_r31][3] = CharModelMotionCreate(chrIdx, lbl_1_data_0[3]);
|
||||
lbl_1_bss_88A[var_r31][4] = CharModelMotionCreate(chrIdx, lbl_1_data_0[4]);
|
||||
lbl_1_bss_88A[var_r31][5] = CharModelMotionCreate(chrIdx, lbl_1_data_0[5]);
|
||||
lbl_1_bss_88A[var_r31][6] = CharModelMotionCreate(chrIdx, lbl_1_data_0[6]);
|
||||
lbl_1_bss_88A[var_r31][7] = CharModelMotionCreate(chrIdx, lbl_1_data_0[7]);
|
||||
lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, 0x5F004D);
|
||||
CharModelMotionSet(chrIdx, lbl_1_bss_88A[var_r31][0]);
|
||||
Hu3DModelAttrSet(lbl_1_bss_98A[var_r31], 0x40000001U);
|
||||
Hu3DModelPosSet(lbl_1_bss_98A[var_r31], (var_r31 / 4 * 0xC8) - 100, 0.0f, -(var_r31 % 4) * 0x96);
|
||||
CharModelMotionDataClose(chrIdx);
|
||||
}
|
||||
temp_r26 = OSGetTick();
|
||||
|
||||
for (var_r31 = 0; var_r31 < 8; ++var_r31) {
|
||||
Hu3DModelObjMtxGet(lbl_1_bss_98A[0], "test11_tex_we-ske_R_shoe1", sp2C);
|
||||
}
|
||||
|
||||
temp_r5 = OSTicksToMicroseconds(OSGetTick() - temp_r26);
|
||||
OSReport("time %f\n", US_TO_60TH_SEC(temp_r5));
|
||||
var_r31 = Hu3DModelCreateFile(0x700024);
|
||||
Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f);
|
||||
Hu3DModelShadowMapSet(var_r31);
|
||||
var_r31 = Hu3DModelCreateFile(0x26001E);
|
||||
temp_r27 = Hu3DJointMotion(var_r31, HuDataSelHeapReadNum(0x26002F, 0x10000000, 2));
|
||||
Hu3DMotionSet(var_r31, temp_r27);
|
||||
Hu3DModelAttrSet(var_r31, 0x40000001U);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 10; ++var_r31) {
|
||||
if (var_r31 == 0) {
|
||||
lbl_1_bss_664[var_r31] = Hu3DModelCreateFile(0x700019);
|
||||
} else {
|
||||
lbl_1_bss_664[var_r31] = Hu3DModelLink(lbl_1_bss_664[0]);
|
||||
}
|
||||
Hu3DModelShadowSet(lbl_1_bss_664[var_r31]);
|
||||
Hu3DModelPosSet(lbl_1_bss_664[var_r31], ((( var_r31 / 5) * 0x1F4) + 0xC8), 0.0f, (-( var_r31 % 5) * 0x12C));
|
||||
Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x4000U);
|
||||
Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x40000001U);
|
||||
}
|
||||
temp_r29 = HuDataSelHeapReadNum(0x700013, 0x10000000, 2);
|
||||
temp_r28 = HuSprAnimRead(temp_r29);
|
||||
lbl_1_bss_99C = HuSprGrpCreate(0x14);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 0x14; ++var_r31) {
|
||||
lbl_1_bss_99A = HuSprCreate(temp_r28, 0, 0);
|
||||
HuSprGrpMemberSet(lbl_1_bss_99C, var_r31, lbl_1_bss_99A);
|
||||
HuSprPosSet(lbl_1_bss_99C, var_r31, 640.0f, 240.0f);
|
||||
}
|
||||
|
||||
HuSprExecLayerSet(0x40, 1);
|
||||
HuSprGrpDrawNoSet(lbl_1_bss_99C, 0x40);
|
||||
lbl_1_bss_458 = 0x293;
|
||||
lbl_1_bss_45A[0] = MGSeqCreate(1, lbl_1_bss_458 / 60, -1, -1);
|
||||
temp_r29 = HuDataSelHeapReadNum(0x120001, 0x10000000, 2);
|
||||
temp_r28 = HuSprAnimRead(temp_r29);
|
||||
lbl_1_bss_888 = Hu3DParManCreate(temp_r28, 0x3E8, &lbl_1_data_208);
|
||||
Hu3DParManAttrSet(lbl_1_bss_888, 0x45);
|
||||
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_888), 1U);
|
||||
Hu3DParManRotSet(lbl_1_bss_888, 0.0f, 0.0f, 0.0f);
|
||||
Hu3DParManVacumeSet(lbl_1_bss_888, 500.0f, 0.0f, 0.0f, 1.0f);
|
||||
lbl_1_bss_884 = Hu3DParManLink(lbl_1_bss_888, &lbl_1_data_258);
|
||||
Hu3DParManAttrSet(lbl_1_bss_884, 0x143);
|
||||
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_884), 1U);
|
||||
Hu3DParManVecSet(lbl_1_bss_884, 0.0f, 1.0f, 0.0f);
|
||||
Hu3DParManVacumeSet(lbl_1_bss_884, 500.0f, 0.0f, 0.0f, 1.0f);
|
||||
Hu3DParManColorSet(lbl_1_bss_884, 0);
|
||||
temp_r29 = HuDataSelHeapReadNum(0x120002, 0x10000000, 2);
|
||||
temp_r28 = HuSprAnimRead(temp_r29);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 10; ++var_r31) {
|
||||
lbl_1_bss_864[var_r31] = Hu3DParManCreate(temp_r28, 0x1F4, &lbl_1_data_168[0]);
|
||||
Hu3DParManAttrSet(lbl_1_bss_864[var_r31], 0x864);
|
||||
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_864[var_r31]), 1U);
|
||||
Hu3DParManPosSet(lbl_1_bss_864[var_r31], (100.0 * sin((M_PI * (36.0f * var_r31)) / 180.0)), 0.0f, 100.0 * cos((M_PI * (36.0f * var_r31)) / 180.0));
|
||||
Hu3DParManRotSet(lbl_1_bss_864[var_r31], -90.0f, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
lbl_1_bss_C = 0;
|
||||
Hu3DFogSet(5000.0f, 10000.0f, 0x20U, 0x10U, 0x30U);
|
||||
arg0->func = fn_1_F9C;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
s32 unrefData[] = {
|
||||
0,0,0
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_F38(void)
|
||||
{
|
||||
f32 var_f31;
|
||||
var_f31 = 0.0f;
|
||||
|
||||
while(TRUE) {
|
||||
Hu3DModelRotSet(lbl_1_bss_460[0], 0.0f, var_f31, 0.0f);
|
||||
var_f31 += 1.0f;
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) {
|
||||
s8 temp_r28;
|
||||
|
||||
temp_r28 = HuPadSubStkX[0] & 0xF8;
|
||||
if (temp_r28 != 0) {
|
||||
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||
}
|
||||
PSVECNormalize(sp18, sp30);
|
||||
temp_r28 = -(HuPadSubStkY[0] & 0xF8);
|
||||
if (temp_r28 != 0) {
|
||||
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
const HuUnkF9C2 lbl_1_rodata_B8 = {
|
||||
{8, 6, 4, 7, 9, 10, 11}
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_F9C(struct om_obj_data * omData)
|
||||
{
|
||||
Point3d sp3C;
|
||||
Point3d sp30;
|
||||
Point3d sp24;
|
||||
Point3d sp18;
|
||||
f32 temp_f31;
|
||||
s32 var_r31;
|
||||
s16 var_r30;
|
||||
HuUnkF9C2 teropPatterns;
|
||||
|
||||
if (omSysExitReq != 0) {
|
||||
if (lbl_1_bss_10 != 0) {
|
||||
HuPrcKill(lbl_1_bss_10);
|
||||
}
|
||||
if (lbl_1_bss_14 != 0) {
|
||||
HuPrcKill(lbl_1_bss_14);
|
||||
}
|
||||
if (lbl_1_bss_18[0] != 0) {
|
||||
HuPrcKill(lbl_1_bss_18[0]);
|
||||
}
|
||||
CharModelKill(-1);
|
||||
omOvlReturnEx(1, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
CRot.y += 0.1f * HuPadStkX[0];
|
||||
CRot.x += 0.1f * HuPadStkY[0];
|
||||
CZoom += HuPadTrigL[0] / 2;
|
||||
CZoom -= HuPadTrigR[0] / 2;
|
||||
|
||||
if (((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) && (lbl_1_data_118.unk0C < 360.0f)) {
|
||||
lbl_1_data_118.unk0C += 1.0f;
|
||||
}
|
||||
|
||||
if (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) && (lbl_1_data_118.unk0C > 0.0f)) {
|
||||
lbl_1_data_118.unk0C -= 1.0f;
|
||||
}
|
||||
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_X) != 0) {
|
||||
Hu3DParManAttrSet(lbl_1_bss_888, 0x81);
|
||||
Hu3DParManAttrSet(lbl_1_bss_884, 0x81);
|
||||
}
|
||||
|
||||
lbl_1_bss_20 += 2.0f;
|
||||
if (lbl_1_bss_20 > 360.0f) {
|
||||
lbl_1_bss_20 -= 360.0f;
|
||||
}
|
||||
|
||||
for (var_r30 = 0; var_r30 < 10; ++var_r30) {
|
||||
f32 temp_f30;
|
||||
s32 var_r29;
|
||||
s32 var_fake;
|
||||
|
||||
while (0) {
|
||||
(void) temp_f30;
|
||||
(void) temp_f30;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r31;
|
||||
(void) var_r30;
|
||||
(void) var_r30;
|
||||
(void) var_r30;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_r29;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
(void) var_fake;
|
||||
}
|
||||
}
|
||||
|
||||
if (lbl_1_bss_458 > 0) {
|
||||
MGSeqParamSet(lbl_1_bss_45A[0], 1, lbl_1_bss_458 / 60);
|
||||
--lbl_1_bss_458;
|
||||
if (lbl_1_bss_458 <= 0) {
|
||||
MGSeqParamSet(lbl_1_bss_45A[0], 2, -1);
|
||||
}
|
||||
}
|
||||
|
||||
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
|
||||
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
|
||||
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
|
||||
sp30.x = Center.x - sp3C.x;
|
||||
sp30.y = Center.y - sp3C.y;
|
||||
sp30.z = Center.z - sp3C.z;
|
||||
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||
sp24.y = cos((M_PI * CRot.x) / 180.0);
|
||||
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||
temp_f31 = CRot.z;
|
||||
|
||||
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
|
||||
|
||||
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
|
||||
|
||||
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
|
||||
|
||||
PSVECCrossProduct(&sp24, &sp30, &sp30);
|
||||
PSVECNormalize(&sp30, &sp30);
|
||||
|
||||
if (lbl_1_bss_C == 0) {
|
||||
HuControlCamCenter(&sp18, &sp30);
|
||||
}
|
||||
|
||||
teropPatterns = lbl_1_rodata_B8;
|
||||
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_X) != 0) {
|
||||
++lbl_1_bss_24;
|
||||
if (lbl_1_bss_24 >= 7) {
|
||||
lbl_1_bss_24 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) {
|
||||
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 0);
|
||||
}
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_A) != 0) {
|
||||
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 2);
|
||||
}
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
|
||||
var_r30 = MGSeqCreate(0xE, 0x3B);
|
||||
}
|
||||
|
||||
if ((HuPadBtnDown[0] & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_UP | PAD_BUTTON_DOWN)) != 0) {
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_UP) != 0) {
|
||||
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, -1, -1, -1);
|
||||
}
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_LEFT) != 0) {
|
||||
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, -1, -1);
|
||||
}
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_DOWN) != 0) {
|
||||
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, -1);
|
||||
}
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_RIGHT) != 0) {
|
||||
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, GWPlayerCfg[3].character);
|
||||
}
|
||||
}
|
||||
fontcolor = 5;
|
||||
print8(0x10, 0x190, 1.5f, "Terop Pattern%d", lbl_1_bss_24 + 1);
|
||||
lbl_1_bss_8 += 5.0f;
|
||||
if (lbl_1_bss_8 > 360.0f) {
|
||||
lbl_1_bss_8 -= 360.0f;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_20F4(void)
|
||||
{
|
||||
s16 temp_r3;
|
||||
s16 var_r29;
|
||||
HsfObject * temp_r3_2;
|
||||
HuObjUnk * temp_r31;
|
||||
Mtx spC0;
|
||||
Vec sp24;
|
||||
Mtx sp90;
|
||||
Mtx sp60;
|
||||
Mtx sp30;
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
f32 temp_f27;
|
||||
f32 var_f29; // ! - uninitialized
|
||||
s16 var_r27; // ! - uninitialized
|
||||
s32 var_r26;
|
||||
f32 temp_f30;
|
||||
|
||||
temp_r3 = Hu3DModelCreateFile(0x6C0000);
|
||||
Hu3DModelPosSet(temp_r3, 0.0f, 0.0f, 100.0f);
|
||||
|
||||
for (var_r29 = 0; var_r29 < 16; ++var_r29)
|
||||
{
|
||||
OSReport("%s\n", lbl_1_data_D8[var_r29]);
|
||||
temp_r3_2 = Hu3DModelObjPtrGet(temp_r3, lbl_1_data_D8[var_r29]);
|
||||
lbl_1_bss_40[var_r29].obj = temp_r3_2;
|
||||
|
||||
Hu3DMotionNoMotSet(temp_r3, lbl_1_data_D8[var_r29], 0x380);
|
||||
|
||||
lbl_1_bss_40[var_r29].pos.x = temp_r3_2->data.base.pos.x;
|
||||
lbl_1_bss_40[var_r29].pos.y = temp_r3_2->data.base.pos.y;
|
||||
lbl_1_bss_40[var_r29].pos.z = temp_r3_2->data.base.pos.z;
|
||||
lbl_1_bss_40[var_r29].rot.x = temp_r3_2->data.base.rot.x;
|
||||
lbl_1_bss_40[var_r29].rot.y = temp_r3_2->data.base.rot.y;
|
||||
lbl_1_bss_40[var_r29].rot.z = temp_r3_2->data.base.rot.z;
|
||||
lbl_1_bss_40[var_r29].scale.x = temp_r3_2->data.base.scale.x;
|
||||
lbl_1_bss_40[var_r29].scale.y = temp_r3_2->data.base.scale.y;
|
||||
lbl_1_bss_40[var_r29].scale.z = temp_r3_2->data.base.scale.z;
|
||||
|
||||
OSReport(
|
||||
"%d:(%3.2f,%3.2f,%3.2f),(%3.2f,%3.2f,%3.2f)\n",
|
||||
var_r29,
|
||||
temp_r3_2->data.base.pos.x,
|
||||
temp_r3_2->data.base.pos.y,
|
||||
temp_r3_2->data.base.pos.z,
|
||||
temp_r3_2->data.base.rot.x,
|
||||
temp_r3_2->data.base.rot.y,
|
||||
temp_r3_2->data.base.rot.z
|
||||
);
|
||||
}
|
||||
while (TRUE)
|
||||
{
|
||||
Hu3DModelObjMtxGet(temp_r3, "ske_skirt", sp30);
|
||||
|
||||
for (var_r29 = 0; var_r29 < 8; ++var_r29)
|
||||
{
|
||||
temp_r31 = &lbl_1_bss_40[var_r29 * 2];
|
||||
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x;
|
||||
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z;
|
||||
|
||||
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[var_r29 * 2], sp90);
|
||||
|
||||
temp_r31 = &lbl_1_bss_40[(var_r29 * 2) + 1];
|
||||
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x;
|
||||
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z;
|
||||
|
||||
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||
Hu3DMtxTransGet(spC0, &sp18);
|
||||
PSMTXInverse(sp30, sp60);
|
||||
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||
Hu3DMtxTransGet(spC0, &sp18);
|
||||
PSMTXMultVec(sp60, &sp18, &sp18);
|
||||
|
||||
temp_f27 = 180.0 * (atan2(sp18.z, sp18.x) / M_PI);
|
||||
temp_r31 = &lbl_1_bss_40[var_r29 * 2];
|
||||
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sin((M_PI * temp_f27) / 180.0) * sin((M_PI * var_r27) / 180.0))));
|
||||
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cos((M_PI * var_r27) / 180.0));
|
||||
|
||||
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||
Hu3DMtxTransGet(spC0, &sp24);
|
||||
fn_1_28F8(&sp24, &spC);
|
||||
HuSprPosSet(lbl_1_bss_99C, var_r29, spC.x, spC.y);
|
||||
}
|
||||
|
||||
var_r27 += 5;
|
||||
if (var_r27 > 0x168) {
|
||||
var_r27 -= 0x168;
|
||||
}
|
||||
|
||||
if (HuPadSubStkX[1] < 0) {
|
||||
var_r26 = -HuPadSubStkX[1];
|
||||
} else {
|
||||
var_r26 = HuPadSubStkX[1];
|
||||
}
|
||||
|
||||
|
||||
if (var_r26 < 0xA && ABS(HuPadSubStkY[1]) < 0xA) {
|
||||
var_r27 = 0x168;
|
||||
var_f29 = 0.0f;
|
||||
} else {
|
||||
var_r27 = 180.0 * (atan2(HuPadSubStkX[1], HuPadSubStkY[1]) / M_PI);
|
||||
temp_f30 = (HuPadSubStkX[1] * HuPadSubStkX[1]) + (HuPadSubStkY[1] * HuPadSubStkY[1]);
|
||||
var_f29 = sqrtf(temp_f30);
|
||||
if (var_f29 > 80.0f) {
|
||||
var_f29 = 80.0f;
|
||||
}
|
||||
}
|
||||
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_28F8(Point3d * arg0, Point3d * arg1)
|
||||
{
|
||||
Point3d spC;
|
||||
Mtx sp18;
|
||||
CameraData * cam;
|
||||
f32 temp_f31;
|
||||
f32 temp_f30;
|
||||
|
||||
cam = &Hu3DCamera[0];
|
||||
C_MTXLookAt(sp18, &cam->pos, &cam->up, &cam->target);
|
||||
PSMTXMultVec(sp18, arg0, &spC);
|
||||
|
||||
temp_f31 = (1.2f * (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0)))));
|
||||
temp_f30 = (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0))));
|
||||
arg1->x = 288.0f + (spC.x * (288.0f / -temp_f31));
|
||||
arg1->y = 240.0f + (spC.y * (240.0f / temp_f30));
|
||||
}
|
||||
|
||||
void fn_1_2AFC(void) {
|
||||
s16 temp_r3;
|
||||
|
||||
HuWinInit(1);
|
||||
temp_r3 = HuWinCreate(-10000.0f, -10000.0f, 480, 0x80, 0);
|
||||
HuWinMesSpeedSet(temp_r3, 3);
|
||||
|
||||
while (TRUE) {
|
||||
HuWinMesSet(temp_r3, 0x200011);
|
||||
HuWinMesWait(temp_r3);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
// unreferenced data
|
||||
u8 lbl_1_data_322[54] = {
|
||||
255, 255, 255, 255, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_2B68(ModelData * mdl, Mtx arg1)
|
||||
{
|
||||
GXColor sp17;
|
||||
Mtx sp150;
|
||||
Mtx sp120;
|
||||
Mtx spF0;
|
||||
Mtx spC0;
|
||||
Mtx sp90;
|
||||
GXTexObj sp30;
|
||||
f32 sp18[2][3];
|
||||
Mtx44 sp50;
|
||||
AnimBmpData * sp10;
|
||||
f32 temp_f31;
|
||||
f32 var_f30; // ! - uninitialized
|
||||
f32 var_f29; // ! - uninitialized
|
||||
f32 var_f28; // ! - uninitialized
|
||||
f32 var_f27; // ! - uninitialized
|
||||
|
||||
if (!lbl_1_bss_30[0]) {
|
||||
lbl_1_bss_30[0] = HuMemDirectMallocNum(HEAP_SYSTEM, FB_SIZE(640, 480), 0x10000000);
|
||||
}
|
||||
|
||||
GXSetTexCopySrc(0, 0, 640, 480);
|
||||
GXSetTexCopyDst(640, 480, GX_TF_RGB565, GX_FALSE);
|
||||
GXCopyTex(lbl_1_bss_30[0], GX_FALSE);
|
||||
DCFlushRangeNoSync(lbl_1_bss_30[0], FB_SIZE(640, 480));
|
||||
C_MTXOrtho(sp50, 0.0f, 480.0f, 0.0f, 576.0f, 0.0f, 10.0f);
|
||||
GXSetProjection(sp50, GX_ORTHOGRAPHIC);
|
||||
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
GXSetScissor(0, 0, 640, 480);
|
||||
GXInvalidateTexAll();
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||
GXSetVtxDesc(GX_VA_NRM, GX_DIRECT);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0U);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0U);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
|
||||
GXSetNumTexGens(1);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3CU, 0U, 0x7DU);
|
||||
GXSetNumTevStages(1);
|
||||
|
||||
sp17.r =
|
||||
sp17.g =
|
||||
sp17.b =
|
||||
sp17.a = 255;
|
||||
GXSetChanMatColor(GX_COLOR0A0, sp17);
|
||||
|
||||
sp17.r =
|
||||
sp17.g =
|
||||
sp17.b = 128;
|
||||
sp17.a = 255;
|
||||
GXSetChanAmbColor(GX_COLOR0A0, sp17);
|
||||
|
||||
GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE);
|
||||
GXSetNumChans(1U);
|
||||
GXSetChanCtrl(GX_COLOR0, 1U, GX_SRC_REG, GX_SRC_VTX, 1U, GX_DF_CLAMP, GX_AF_SPOT);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
||||
GXSetAlphaCompare(GX_GEQUAL, 1U, GX_AOP_AND, GX_GEQUAL, 1U);
|
||||
GXSetZCompLoc(0U);
|
||||
PSMTXIdentity(arg1);
|
||||
GXLoadPosMtxImm(arg1, 0U);
|
||||
|
||||
PSMTXInvXpose(arg1, sp90);
|
||||
GXLoadNrmMtxImm(sp90, 0);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||
|
||||
sp10 = lbl_1_bss_454->bmp;
|
||||
lbl_1_bss_2C += 1;
|
||||
HuSprTexLoad(lbl_1_bss_454, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR);
|
||||
|
||||
PPCSync();
|
||||
GXInitTexObj(&sp30, lbl_1_bss_30[0], 0x280U, 0x1E0U, 4U, GX_CLAMP, GX_CLAMP, 0U);
|
||||
GXInitTexObjLOD(&sp30, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0U, 0U, GX_ANISO_1);
|
||||
GXLoadTexObj(&sp30, GX_TEXMAP0);
|
||||
GXSetNumIndStages(1U);
|
||||
|
||||
PSMTXScale(sp150, 0.1f, 0.1f, 0.0f);
|
||||
sp18[0][0] = sp150[0][0];
|
||||
sp18[0][1] = sp150[0][1];
|
||||
sp18[0][2] = 0.0f;
|
||||
sp18[1][0] = sp150[1][0];
|
||||
sp18[1][1] = sp150[1][1];
|
||||
sp18[1][2] = 0.0f;
|
||||
|
||||
PSMTXRotRad(spF0, 0x58, -1.5707964f);
|
||||
mtxRot(spF0, 0.0f, 0.0f, 0.0f);
|
||||
temp_f31 = 0.0015625f;
|
||||
PSMTXScale(sp120, temp_f31, temp_f31, temp_f31);
|
||||
PSMTXConcat(sp120, spF0, sp150);
|
||||
PSMTXTrans(spC0, 0.5f, 0.0f, 0.5f);
|
||||
GXLoadTexMtxImm(sp150, 0x1EU, GX_MTX2x4);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1EU, 0U, 0x7DU);
|
||||
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP1);
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_4, GX_ITS_4);
|
||||
GXSetIndTexMtx(GX_ITM_0, sp18, 0);
|
||||
GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, 1, 0, GX_ITM_0);
|
||||
|
||||
lbl_1_bss_28 += 5.0f;
|
||||
if (lbl_1_bss_28 > 360.0f) {
|
||||
lbl_1_bss_28 -= 360.0f;
|
||||
}
|
||||
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
|
||||
GXPosition3f32(0.0f, 0.0f, 0.0f);
|
||||
GXTexCoord2f32(0.0f, 1.0f);
|
||||
GXNormal3f32(0.0f, var_f30 / 640.0f, var_f29 / 480.0f);
|
||||
|
||||
GXPosition3f32(640.0f, 0.0f, 0.0f);
|
||||
GXTexCoord2f32(0.0f, 1.0f);
|
||||
GXNormal3f32(0.0f, var_f28 / 640.0f, var_f29 / 480.0f);
|
||||
|
||||
GXPosition3f32(640.0f, 480.0f, 0.0f);
|
||||
GXTexCoord2f32(0.0f, 1.0f);
|
||||
GXNormal3f32(0.0f, var_f28 / 640.0f, var_f27 / 480.0f);
|
||||
|
||||
GXPosition3f32(0.0f, 480.0f, 0.0f);
|
||||
GXTexCoord2f32(0.0f, 1.0f);
|
||||
GXNormal3f32(0.0f, var_f30 / 640.0f, var_f27 / 480.0f);
|
||||
|
||||
GXEnd();
|
||||
GXSetNumIndStages(0U);
|
||||
GXSetTevDirect(GX_TEVSTAGE0);
|
||||
GXSetTevDirect(GX_TEVSTAGE1);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
234
src/REL/modeltestDll/modeltest00.c
Normal file
234
src/REL/modeltestDll/modeltest00.c
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
#include "math.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
#include "REL/modeltestDll.h"
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
omObjData * unk_bss_9FC;
|
||||
omObjData * lbl_1_bss_9F8;
|
||||
omObjData * lbl_1_bss_9F4;
|
||||
s16 lbl_1_bss_9EC[4];
|
||||
s16 lbl_1_bss_9AC[4][8];
|
||||
Process * lbl_1_bss_9A8;
|
||||
u16 lbl_1_data_358[4] = {1, 2, 4, 8};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_34B0()
|
||||
{
|
||||
Process * temp_r30;
|
||||
s16 var_r31;
|
||||
|
||||
OSReport("******* MODELTESTObjectSetup *********\n");
|
||||
|
||||
temp_r30 = omInitObjMan(0x32, 0x2000);
|
||||
CRot.x = -22.0f;
|
||||
CRot.y = 0.0f;
|
||||
CRot.z = 0.0f;
|
||||
Center.x = 0.0f;
|
||||
Center.y = 60.0f;
|
||||
Center.z = 0.0f;
|
||||
CZoom = 400.0f;
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||
{
|
||||
Hu3DCameraCreate(lbl_1_data_358[var_r31]);
|
||||
Hu3DCameraPerspectiveSet(lbl_1_data_358[var_r31], 45.0f, 20.0f, 20000.0f, 1.2f);
|
||||
Hu3DCameraViewportSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, ((var_r31 & 2) != 0) ? 0xF0 : 0, 320.0f, 240.0f, 0.0f, 1.0f);
|
||||
Hu3DCameraScissorSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, ((var_r31 & 2) != 0) ? 0xF0 : 0, 320, 240);
|
||||
}
|
||||
|
||||
lbl_1_bss_9F4 = omAddObjEx(temp_r30, 0, 0x20U, 0x20U, -1, fn_1_37DC);
|
||||
lbl_1_bss_9F8 = omAddObjEx(temp_r30, 0x7FDA, 0U, 0U, -1, fn_1_439C);
|
||||
lbl_1_bss_9A8 = HuPrcCreate(fn_1_46F0, 0x64U, 0x2000U, 0);
|
||||
|
||||
Hu3DBGColorSet(0x20U, 0x80U, 0x80U);
|
||||
WipeCreate(1, 0, 0x1E);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) {
|
||||
s8 temp_r28;
|
||||
|
||||
temp_r28 = HuPadSubStkX[0] & 0xF8;
|
||||
if (temp_r28 != 0) {
|
||||
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||
}
|
||||
PSVECNormalize(sp18, sp30);
|
||||
temp_r28 = -(HuPadSubStkY[0] & 0xF8);
|
||||
if (temp_r28 != 0) {
|
||||
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_37DC(omObjData *)
|
||||
{
|
||||
Point3d sp3C;
|
||||
Point3d sp30;
|
||||
Point3d sp24;
|
||||
Point3d sp18;
|
||||
float temp_f31;
|
||||
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_START) != 0) {
|
||||
if (lbl_1_bss_9A8) {
|
||||
HuPrcKill(lbl_1_bss_9A8);
|
||||
}
|
||||
omOvlReturnEx(1, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((HuPadBtn[0] & PAD_BUTTON_UP) != 0) {
|
||||
CRot.x += 2.0f;
|
||||
}
|
||||
if ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0) {
|
||||
CRot.x -= 2.0f;
|
||||
}
|
||||
if ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) {
|
||||
CRot.y += 2.0f;
|
||||
}
|
||||
if ((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) {
|
||||
CRot.y -= 2.0f;
|
||||
}
|
||||
|
||||
CZoom += HuPadTrigL[0] / 2;
|
||||
CZoom -= HuPadTrigR[0] / 2;
|
||||
|
||||
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
|
||||
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
|
||||
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
|
||||
sp30.x = Center.x - sp3C.x;
|
||||
sp30.y = Center.y - sp3C.y;
|
||||
sp30.z = Center.z - sp3C.z;
|
||||
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||
sp24.y = cos((M_PI * CRot.x) / 180.0);
|
||||
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||
temp_f31 = CRot.z;
|
||||
|
||||
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
|
||||
|
||||
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
|
||||
|
||||
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
|
||||
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
|
||||
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
|
||||
|
||||
PSVECCrossProduct(&sp24, &sp30, &sp30);
|
||||
PSVECNormalize(&sp30, &sp30);
|
||||
|
||||
HuControlCamCenter(&sp18, &sp30);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_439C(omObjData * )
|
||||
{
|
||||
s16 var_r31;
|
||||
f32 temp_f30;
|
||||
f32 temp_f31;
|
||||
f32 sp10;
|
||||
Point3d sp2C;
|
||||
Point3d sp20;
|
||||
Point3d sp14;
|
||||
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||
{
|
||||
temp_f31 = CRot.x;
|
||||
temp_f30 = CRot.y + (var_r31 * 90);
|
||||
sp10 = CRot.z;
|
||||
sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
|
||||
sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0));
|
||||
sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
|
||||
|
||||
sp20.x = Center.x;
|
||||
sp20.y = Center.y;
|
||||
sp20.z = Center.z;
|
||||
|
||||
sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
|
||||
sp14.y = cos((M_PI * temp_f31) / 180.0);
|
||||
sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
|
||||
|
||||
Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
const Point3d lbl_1_rodata_18C = {0.0f, 0.0f, 0.0f};
|
||||
const Point3d lbl_1_rodata_198 = {0.0f, 1.0f, 0.0f};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
void fn_1_46F0(void)
|
||||
{
|
||||
Point3d sp20;
|
||||
Point3d sp14;
|
||||
Point3d sp8;
|
||||
s16 var_r31;
|
||||
s16 var_r30;
|
||||
|
||||
sp14 = lbl_1_rodata_18C;
|
||||
sp8 = lbl_1_rodata_198;
|
||||
|
||||
Hu3DGLightCreate(0.0f, 500.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
|
||||
Hu3DShadowCreate(45.0f, 500.0f, 8000.0f);
|
||||
Hu3DShadowTPLvlSet(0.5f);
|
||||
Hu3DShadowSizeSet(0xC0U);
|
||||
|
||||
sp20.x = -500.0f;
|
||||
sp20.y = 1000.0f;
|
||||
sp20.z = 1000.0f;
|
||||
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||
{
|
||||
var_r30 = var_r31;
|
||||
lbl_1_bss_9EC[var_r31] = CharModelCreate(var_r30, 8);
|
||||
Hu3DModelShadowSet(lbl_1_bss_9EC[var_r31]);
|
||||
lbl_1_bss_9AC[var_r31][0] = CharModelMotionCreate(var_r30, 0x5F0002);
|
||||
CharModelMotionSet(var_r30, lbl_1_bss_9AC[var_r31][0]);
|
||||
Hu3DModelAttrSet(lbl_1_bss_9EC[var_r31], 0x40000001U);
|
||||
Hu3DModelCameraSet(lbl_1_bss_9EC[var_r31], lbl_1_data_358[var_r31]);
|
||||
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], ((( var_r31 / 4) * 200) - 100), 0.0f, (-( var_r31 % 4) * 150));
|
||||
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], 0.0f, 0.0f, 0.0f);
|
||||
CharModelMotionDataClose(var_r30);
|
||||
}
|
||||
|
||||
var_r31 = Hu3DModelCreateFile(0x700024);
|
||||
Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f);
|
||||
Hu3DModelShadowMapSet(var_r31);
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
|
||||
Hu3DCameraKill(2);
|
||||
Hu3DCameraKill(4);
|
||||
Hu3DCameraKill(8);
|
||||
sp20.x =
|
||||
sp20.z =
|
||||
sp20.y = 0.0f;
|
||||
sp20.y += 200.0f;
|
||||
CharModelCoinEffectCreate(4, &sp20);
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
|
||||
const Point3d lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f};
|
||||
const Point3d lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f};
|
||||
|
||||
// -------------------------------------------------------------------------- //
|
||||
0
src/REL/modeltestDll/modeltest01.c
Normal file
0
src/REL/modeltestDll/modeltest01.c
Normal file
237
src/REL/option/camera.c
Executable file
237
src/REL/option/camera.c
Executable file
|
|
@ -0,0 +1,237 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/process.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec unk00;
|
||||
/* 0x0C */ Vec unk0C;
|
||||
/* 0x18 */ float unk18;
|
||||
/* 0x1C */ float unk1C;
|
||||
/* 0x20 */ float unk20;
|
||||
/* 0x24 */ float unk24;
|
||||
/* 0x28 */ float unk28;
|
||||
/* 0x2C */ Vec unk2C;
|
||||
/* 0x38 */ Vec unk38;
|
||||
/* 0x44 */ char unk44[0xC];
|
||||
/* 0x50 */ float unk50;
|
||||
/* 0x54 */ float unk54;
|
||||
/* 0x58 */ Vec unk58;
|
||||
/* 0x64 */ Vec unk64;
|
||||
/* 0x70 */ char unk70[0xC];
|
||||
/* 0x7C */ float unk7C;
|
||||
/* 0x80 */ float unk80;
|
||||
/* 0x84 */ float unk84;
|
||||
/* 0x88 */ float unk88;
|
||||
/* 0x8C */ float unk8C;
|
||||
/* 0x90 */ float unk90;
|
||||
/* 0x94 */ float unk94;
|
||||
/* 0x98 */ float unk98;
|
||||
} UnkCameraDataStruct; // Size 0x9C
|
||||
|
||||
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3);
|
||||
static void fn_1_D44(omObjData *arg0);
|
||||
static void fn_1_D6C(omObjData *arg0);
|
||||
static void fn_1_12E4(omObjData *arg0);
|
||||
static void fn_1_14E4(omObjData *arg0);
|
||||
|
||||
omObjData *lbl_1_bss_10;
|
||||
|
||||
static float pad_04_00000000_data[] = {
|
||||
0.0f, 500.0f, 0.0f,
|
||||
0.0f, -1.0f, 0.0f
|
||||
};
|
||||
|
||||
static s32 pad_04_00000018_data = -1;
|
||||
|
||||
omObjData *fn_1_7F8(void) {
|
||||
omObjData *var_r30;
|
||||
UnkCameraDataStruct *temp_r31;
|
||||
|
||||
var_r30 = omAddObjEx(lbl_1_bss_8, 1001, 0, 0, 3, fn_1_D44);
|
||||
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkCameraDataStruct), MEMORY_DEFAULT_NUM);
|
||||
var_r30->data = temp_r31;
|
||||
temp_r31->unk00.x = 0.0f;
|
||||
temp_r31->unk00.y = 0.0f;
|
||||
temp_r31->unk00.z = 0.0f;
|
||||
temp_r31->unk0C.x = 0.0f;
|
||||
temp_r31->unk0C.y = 0.0f;
|
||||
temp_r31->unk0C.z = 0.0f;
|
||||
temp_r31->unk18 = 0.0f;
|
||||
temp_r31->unk1C = 1.0f;
|
||||
temp_r31->unk20 = 0.0f;
|
||||
temp_r31->unk24 = 0.0f;
|
||||
temp_r31->unk28 = 0.0f;
|
||||
temp_r31->unk8C = 1.0f;
|
||||
temp_r31->unk84 = 1.0f;
|
||||
temp_r31->unk94 = 1.0f;
|
||||
Hu3DCameraCreate(1);
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f);
|
||||
fn_1_B74(var_r30, 600.0f, 60.0f, 120.0f, 1);
|
||||
fn_1_A6C(var_r30, 180.0f, 120.0f, 0.0f, 1);
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_A3C(omObjData *arg0) {
|
||||
HuMemDirectFree(arg0->data);
|
||||
}
|
||||
|
||||
void fn_1_A6C(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk58.x = arg1;
|
||||
temp_r31->unk58.y = arg2;
|
||||
temp_r31->unk58.z = arg3;
|
||||
temp_r31->unk2C = temp_r31->unk00;
|
||||
temp_r31->unk84 = 0.0f;
|
||||
temp_r31->unk88 = 1.0f / arg4;
|
||||
}
|
||||
|
||||
void fn_1_AF0(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk64.x = arg1;
|
||||
temp_r31->unk64.y = arg2;
|
||||
temp_r31->unk64.z = arg3;
|
||||
temp_r31->unk38 = temp_r31->unk0C;
|
||||
temp_r31->unk8C = 0.0f;
|
||||
temp_r31->unk90 = 1.0f / arg4;
|
||||
}
|
||||
|
||||
void fn_1_B74(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk64.y = arg3;
|
||||
temp_r31->unk7C = arg1;
|
||||
temp_r31->unk80 = arg2;
|
||||
temp_r31->unk38.y = temp_r31->unk0C.y;
|
||||
temp_r31->unk50 = temp_r31->unk24;
|
||||
temp_r31->unk54 = temp_r31->unk28;
|
||||
temp_r31->unk94 = 0.0f;
|
||||
temp_r31->unk98 = 1.0f / arg4;
|
||||
}
|
||||
|
||||
float fn_1_BF8(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
float temp_f31;
|
||||
|
||||
temp_f31 = temp_r31->unk24;
|
||||
return temp_f31;
|
||||
}
|
||||
|
||||
float fn_1_C28(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
float temp_f31;
|
||||
|
||||
temp_f31 = temp_r31->unk28;
|
||||
return temp_f31;
|
||||
}
|
||||
|
||||
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
*arg1 = temp_r31->unk00.x;
|
||||
*arg2 = temp_r31->unk00.y;
|
||||
*arg3 = temp_r31->unk00.z;
|
||||
}
|
||||
|
||||
void fn_1_C88(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
*arg1 = temp_r31->unk0C.x;
|
||||
*arg2 = temp_r31->unk0C.y;
|
||||
*arg3 = temp_r31->unk0C.z;
|
||||
}
|
||||
|
||||
s32 fn_1_CB8(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
s32 var_r30 = 1;
|
||||
s32 var_r29 = 1;
|
||||
|
||||
if (!(temp_r31->unk8C < 1.0f) && !(temp_r31->unk94 < 1.0f)) {
|
||||
var_r29 = 0;
|
||||
}
|
||||
if (var_r29 == 0 && !(temp_r31->unk84 < 1.0f)) {
|
||||
var_r30 = 0;
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
static void fn_1_D44(omObjData *arg0) {
|
||||
fn_1_D6C(arg0);
|
||||
}
|
||||
|
||||
static void fn_1_D6C(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
float temp_f28;
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
|
||||
if (temp_r31->unk84 < 1.0f) {
|
||||
temp_f28 = sin(90.0f * temp_r31->unk84 * M_PI / 180.0);
|
||||
temp_r31->unk00.x = temp_r31->unk2C.x + temp_f28 * (temp_r31->unk58.x - temp_r31->unk2C.x);
|
||||
temp_r31->unk00.y = temp_r31->unk2C.y + temp_f28 * (temp_r31->unk58.y - temp_r31->unk2C.y);
|
||||
temp_r31->unk00.z = temp_r31->unk2C.z + temp_f28 * (temp_r31->unk58.z - temp_r31->unk2C.z);
|
||||
if ((temp_r31->unk84 += temp_r31->unk88) >= 1.0f) {
|
||||
temp_r31->unk00 = temp_r31->unk58;
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk8C < 1.0f) {
|
||||
temp_f28 = sin(90.0f * temp_r31->unk8C * M_PI / 180.0);
|
||||
temp_r31->unk0C.x = temp_r31->unk38.x + temp_f28 * (temp_r31->unk64.x - temp_r31->unk38.x);
|
||||
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
|
||||
temp_r31->unk0C.z = temp_r31->unk38.z + temp_f28 * (temp_r31->unk64.z - temp_r31->unk38.z);
|
||||
if ((temp_r31->unk8C += temp_r31->unk90) >= 1.0f) {
|
||||
temp_r31->unk0C = temp_r31->unk64;
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk94 < 1.0f) {
|
||||
temp_f28 = sin(90.0f * temp_r31->unk94 * M_PI / 180.0);
|
||||
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
|
||||
temp_r31->unk24 = temp_r31->unk50 + temp_f28 * (temp_r31->unk7C - temp_r31->unk50);
|
||||
temp_r31->unk28 = temp_r31->unk54 + temp_f28 * (temp_r31->unk80 - temp_r31->unk54);
|
||||
if ((temp_r31->unk94 += temp_r31->unk98) >= 1.0f) {
|
||||
temp_r31->unk0C.y = temp_r31->unk64.y;
|
||||
temp_r31->unk24 = temp_r31->unk7C;
|
||||
temp_r31->unk28 = temp_r31->unk80;
|
||||
}
|
||||
temp_r31->unk0C.x = temp_r31->unk24 * -sin(temp_r31->unk28 * M_PI / 180.0);
|
||||
temp_r31->unk0C.z = temp_r31->unk24 * cos(temp_r31->unk28 * M_PI / 180.0);
|
||||
}
|
||||
temp_f31 = temp_r31->unk0C.x - temp_r31->unk00.x;
|
||||
temp_f30 = temp_r31->unk0C.z - temp_r31->unk00.z;
|
||||
temp_r31->unk24 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30);
|
||||
temp_r31->unk28 = fmod(-(180.0 * (atan2(temp_f31, temp_f30) / M_PI)), 360.0);
|
||||
if (temp_r31->unk28 < 0.0f) {
|
||||
temp_r31->unk28 += 360.0f;
|
||||
}
|
||||
Hu3DCameraPosSet(1, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z, temp_r31->unk18, temp_r31->unk1C, temp_r31->unk20, temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
|
||||
}
|
||||
|
||||
static void fn_1_12E4(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31;
|
||||
|
||||
if (HuPadBtn[0] & 0xF) {
|
||||
temp_r31 = arg0->data;
|
||||
temp_r31->unk0C.x += 0.5f * HuPadStkX[0];
|
||||
temp_r31->unk0C.y += 0.5f * HuPadStkY[0];
|
||||
temp_r31->unk00.z += 0.5f * HuPadTrigL[0];
|
||||
temp_r31->unk00.z -= 0.5f * HuPadTrigR[0];
|
||||
temp_r31->unk00.x += 0.5f * HuPadSubStkY[0];
|
||||
temp_r31->unk00.y += 0.5f * HuPadSubStkX[0];
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_14E4(omObjData *arg0) {
|
||||
UnkCameraDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
|
||||
print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z);
|
||||
print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", temp_r31->unk24, temp_r31->unk28);
|
||||
}
|
||||
230
src/REL/option/guide.c
Executable file
230
src/REL/option/guide.c
Executable file
|
|
@ -0,0 +1,230 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ s16 unk04;
|
||||
/* 0x06 */ char unk06[2];
|
||||
/* 0x08 */ Vec unk08;
|
||||
/* 0x14 */ Vec unk14;
|
||||
/* 0x20 */ float unk20;
|
||||
/* 0x24 */ float unk24;
|
||||
/* 0x28 */ float unk28;
|
||||
/* 0x2C */ float unk2C;
|
||||
/* 0x30 */ float unk30;
|
||||
/* 0x34 */ float unk34;
|
||||
/* 0x38 */ float unk38;
|
||||
/* 0x3C */ float unk3C;
|
||||
/* 0x40 */ float unk40;
|
||||
/* 0x44 */ float unk44;
|
||||
/* 0x48 */ char unk48[0xC];
|
||||
/* 0x54 */ float unk54;
|
||||
/* 0x58 */ float unk58;
|
||||
/* 0x5C */ s32 unk5C;
|
||||
/* 0x60 */ s32 unk60;
|
||||
} UnkGuideDataStruct; // Size 0x64
|
||||
|
||||
static void fn_1_24A8(omObjData *arg0, s32 arg1);
|
||||
static s32 fn_1_24EC(omObjData *arg0);
|
||||
static void fn_1_25AC(omObjData *arg0);
|
||||
static void fn_1_2A18(omObjData *arg0);
|
||||
static float fn_1_2D00(float arg0, float arg1, float arg2);
|
||||
|
||||
omObjData *lbl_1_bss_20;
|
||||
|
||||
static const s32 lbl_1_rodata_E0[] = {
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 16),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 17),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 18)
|
||||
};
|
||||
|
||||
static omObjFunc lbl_1_data_98[] = {
|
||||
NULL,
|
||||
fn_1_25AC
|
||||
};
|
||||
|
||||
omObjData *fn_1_21F8(void) {
|
||||
omObjData *var_r31;
|
||||
UnkGuideDataStruct *temp_r30;
|
||||
s32 i;
|
||||
|
||||
var_r31 = omAddObjEx(lbl_1_bss_8, 1002, 1, 3, 2, NULL);
|
||||
temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkGuideDataStruct), MEMORY_DEFAULT_NUM);
|
||||
var_r31->data = temp_r30;
|
||||
temp_r30->unk08.x = -298.59f;
|
||||
temp_r30->unk08.z = 298.21f;
|
||||
temp_r30->unk08.y = 0.0f;
|
||||
temp_r30->unk20 = 0.0f;
|
||||
temp_r30->unk24 = 134.42f;
|
||||
temp_r30->unk28 = 0.0f;
|
||||
temp_r30->unk2C = 0.0f;
|
||||
temp_r30->unk34 = 0.0f;
|
||||
temp_r30->unk30 = 0.0f;
|
||||
var_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 12));
|
||||
Hu3DModelLayerSet(var_r31->model[0], 1);
|
||||
for (i = 0; i < 3; i++) {
|
||||
var_r31->motion[i] = Hu3DJointMotion(var_r31->model[0], HuDataSelHeapReadNum(lbl_1_rodata_E0[i], MEMORY_DEFAULT_NUM, HEAP_DATA));
|
||||
}
|
||||
temp_r30->unk5C = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[2], 1, 0xC);
|
||||
temp_r30->unk60 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[1], 0, 0xC);
|
||||
CharModelLayerSetAll(1);
|
||||
Hu3DModelShadowSet(var_r31->model[0]);
|
||||
Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[0], 0.0f, 8.0f, 0x40000001);
|
||||
fn_1_24A8(var_r31, 0);
|
||||
fn_1_2A18(var_r31);
|
||||
return var_r31;
|
||||
}
|
||||
|
||||
void fn_1_241C(omObjData *arg0) {
|
||||
UnkGuideDataStruct *temp_r29 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
Hu3DMotionKill(arg0->motion[i]);
|
||||
}
|
||||
HuMemDirectFree(temp_r29);
|
||||
}
|
||||
|
||||
static void fn_1_24A8(omObjData *arg0, s32 arg1) {
|
||||
UnkGuideDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk00 = arg1;
|
||||
arg0->func = lbl_1_data_98[arg1];
|
||||
arg0->unk10 = 0;
|
||||
arg0->unk10 = 0;
|
||||
}
|
||||
|
||||
static s32 fn_1_24EC(omObjData *arg0) {
|
||||
UnkGuideDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
return temp_r31->unk00;
|
||||
}
|
||||
|
||||
void fn_1_2508(omObjData *arg0, float arg1, float arg2, s32 arg3) {
|
||||
UnkGuideDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk40 = arg1;
|
||||
temp_r31->unk44 = arg2;
|
||||
temp_r31->unk54 = 0.0f;
|
||||
temp_r31->unk58 = 1.0f / arg3;
|
||||
temp_r31->unk04 = 0;
|
||||
fn_1_24A8(arg0, 1);
|
||||
}
|
||||
|
||||
static void fn_1_25AC(omObjData *arg0) {
|
||||
UnkGuideDataStruct *temp_r31 = arg0->data;
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
temp_r31->unk3C = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0);
|
||||
if (temp_r31->unk3C < 0.0f) {
|
||||
temp_r31->unk3C += 360.0f;
|
||||
}
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
var_f30 = sin(90.0f * temp_r31->unk54 * M_PI / 180.0);
|
||||
var_f31 = temp_r31->unk3C + var_f30 * (temp_r31->unk40 - temp_r31->unk3C);
|
||||
temp_r31->unk14.x = temp_r31->unk44 * -sin(var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk14.z = temp_r31->unk44 * cos(var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk14.y = 0.0f;
|
||||
temp_r31->unk2C = temp_r31->unk14.x - temp_r31->unk08.x;
|
||||
temp_r31->unk34 = temp_r31->unk14.z - temp_r31->unk08.z;
|
||||
if (temp_r31->unk54 <= 0.0f) {
|
||||
temp_r31->unk2C = 0.0f;
|
||||
temp_r31->unk34 = 0.0f;
|
||||
temp_r31->unk08 = temp_r31->unk14;
|
||||
}
|
||||
if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) {
|
||||
break;
|
||||
}
|
||||
var_f31 = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0);
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
temp_r31->unk14.x = 422.0 * -sin(var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk14.z = 422.0 * cos(var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk2C = (temp_r31->unk14.x - temp_r31->unk08.x) / 10.0f;
|
||||
temp_r31->unk34 = (temp_r31->unk14.z - temp_r31->unk08.z) / 10.0f;
|
||||
temp_r31->unk58 = 0.1f;
|
||||
temp_r31->unk54 = 0.0f;
|
||||
arg0->unk10 = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10 = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
temp_r31->unk08 = temp_r31->unk14;
|
||||
temp_r31->unk2C = 0.0f;
|
||||
temp_r31->unk30 = 0.0f;
|
||||
temp_r31->unk34 = 0.0f;
|
||||
fn_1_2A18(arg0);
|
||||
fn_1_24A8(arg0, 0);
|
||||
break;
|
||||
}
|
||||
fn_1_2A18(arg0);
|
||||
}
|
||||
|
||||
static void fn_1_2A18(omObjData *arg0) {
|
||||
UnkGuideDataStruct *temp_r31 = arg0->data;
|
||||
s16 var_r29;
|
||||
|
||||
var_r29 = 0;
|
||||
temp_r31->unk38 = sqrtf(temp_r31->unk2C * temp_r31->unk2C + temp_r31->unk34 * temp_r31->unk34);
|
||||
if (0.001f <= temp_r31->unk38) {
|
||||
if (14.0f <= temp_r31->unk38) {
|
||||
temp_r31->unk2C /= temp_r31->unk38;
|
||||
temp_r31->unk34 /= temp_r31->unk38;
|
||||
temp_r31->unk38 = 14.0f;
|
||||
temp_r31->unk2C = 14.0f * temp_r31->unk2C;
|
||||
temp_r31->unk34 = 14.0f * temp_r31->unk34;
|
||||
}
|
||||
temp_r31->unk24 = fn_1_2D00(temp_r31->unk24, 180.0 * (atan2(temp_r31->unk2C, temp_r31->unk34) / M_PI), 0.4f);
|
||||
if (8.0f <= temp_r31->unk38) {
|
||||
var_r29 = 2;
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
}
|
||||
}
|
||||
temp_r31->unk08.x += temp_r31->unk2C;
|
||||
temp_r31->unk08.z += temp_r31->unk34;
|
||||
if (temp_r31->unk04 != var_r29) {
|
||||
Hu3DMotionShiftSet(*arg0->model, arg0->motion[var_r29], 0.0f, 8.0f, 0x40000001);
|
||||
temp_r31->unk04 = var_r29;
|
||||
}
|
||||
omSetTra(arg0, temp_r31->unk08.x, temp_r31->unk08.y, temp_r31->unk08.z);
|
||||
omSetRot(arg0, temp_r31->unk20, temp_r31->unk24, temp_r31->unk28);
|
||||
}
|
||||
|
||||
static float fn_1_2D00(float arg0, float arg1, float arg2) {
|
||||
float var_f30;
|
||||
float var_f31;
|
||||
|
||||
var_f31 = fmod(arg1 - arg0, 360.0);
|
||||
if (0.0f > var_f31) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
if (180.0f < var_f31) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
var_f30 = fmod(arg0 + var_f31 * arg2, 360.0);
|
||||
if (0.0f > var_f30) {
|
||||
var_f30 += 360.0f;
|
||||
}
|
||||
return var_f30;
|
||||
}
|
||||
794
src/REL/option/record.c
Executable file
794
src/REL/option/record.c
Executable file
|
|
@ -0,0 +1,794 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/esprite.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ s32 unk04[8];
|
||||
/* 0x24 */ s32 unk24;
|
||||
/* 0x28 */ s32 unk28;
|
||||
} UnkRecordDataStruct00; // Size 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ omObjData *unk00;
|
||||
/* 0x004 */ omObjData *unk04;
|
||||
/* 0x008 */ UnkWindowDataStruct *unk08[10];
|
||||
/* 0x030 */ s32 unk30;
|
||||
/* 0x034 */ s16 unk34[153];
|
||||
/* 0x166 */ char unk166[6];
|
||||
/* 0x16C */ s32 unk16C;
|
||||
/* 0x170 */ s32 unk170;
|
||||
/* 0x174 */ s32 unk174;
|
||||
/* 0x178 */ UnkRecordDataStruct00 unk178[6];
|
||||
/* 0x280 */ s32 unk280[6];
|
||||
/* 0x298 */ s32 unk298;
|
||||
/* 0x29C */ s32 unk29C;
|
||||
} UnkRecordDataStruct01; // Size 0x2A0
|
||||
|
||||
static void fn_1_8310(omObjData *arg0);
|
||||
static omObjData *fn_1_8A88(void);
|
||||
static void fn_1_8B58(omObjData *arg0);
|
||||
static void fn_1_8BAC(omObjData *arg0, s32 arg1);
|
||||
static omObjData *fn_1_8C84(void);
|
||||
static void fn_1_8D80(omObjData *arg0);
|
||||
static void fn_1_8DD4(omObjData *arg0);
|
||||
static void fn_1_8E98(omObjData *arg0);
|
||||
static s32 fn_1_8EF8(s32 arg0, s32 arg1);
|
||||
static void fn_1_8F38(omObjData *arg0, s32 arg1);
|
||||
static void fn_1_96B4(omObjData *arg0);
|
||||
static void fn_1_9750(omObjData *arg0);
|
||||
static void fn_1_9A94(omObjData *arg0);
|
||||
static void fn_1_9B10(omObjData *arg0, s32 arg1);
|
||||
static void fn_1_A3B0(omObjData *arg0);
|
||||
|
||||
omObjData *lbl_1_bss_40;
|
||||
|
||||
static const s32 lbl_1_rodata_13C0[] = { 0, 1, 2, 3, 5, 10 };
|
||||
|
||||
static omObjFunc lbl_1_data_210[] = {
|
||||
NULL,
|
||||
fn_1_8310
|
||||
};
|
||||
|
||||
omObjData *fn_1_80E4(void) {
|
||||
omObjData *temp_r29;
|
||||
UnkRecordDataStruct01 *temp_r3;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
temp_r29 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRecordDataStruct01), MEMORY_DEFAULT_NUM);
|
||||
temp_r29->data = temp_r3;
|
||||
for (i = 0; i < 6; i++) {
|
||||
temp_r3->unk178[i].unk00 = GWBoardPlayCountGet(i);
|
||||
temp_r3->unk178[i].unk28 = GWBoardMaxStarsGet(i);
|
||||
temp_r3->unk178[i].unk24 = GWBoardMaxCoinsGet(i);
|
||||
for (j = 0; j < 8; j++) {
|
||||
temp_r3->unk178[i].unk04[j] = GWBoardWinCountGet(j, i);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 6; i++) {
|
||||
temp_r3->unk280[i] = GWMGRecordGet(lbl_1_rodata_13C0[i]);
|
||||
}
|
||||
temp_r3->unk170 = 0;
|
||||
temp_r3->unk174 = 0;
|
||||
temp_r3->unk16C = 0;
|
||||
temp_r3->unk00 = fn_1_8A88();
|
||||
temp_r3->unk04 = fn_1_8C84();
|
||||
fn_1_8DD4(temp_r29);
|
||||
fn_1_82B0(temp_r29, 0);
|
||||
return temp_r29;
|
||||
}
|
||||
|
||||
void fn_1_825C(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
|
||||
fn_1_8B58(temp_r31->unk00);
|
||||
fn_1_8D80(temp_r31->unk04);
|
||||
fn_1_8E98(arg0);
|
||||
HuMemDirectFree(temp_r31);
|
||||
}
|
||||
|
||||
void fn_1_82B0(omObjData *arg0, s32 arg1) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk30 = arg1;
|
||||
arg0->func = lbl_1_data_210[arg1];
|
||||
arg0->unk10 = 0;
|
||||
arg0->unk10 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_82F4(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
|
||||
return temp_r31->unk30;
|
||||
}
|
||||
|
||||
static void fn_1_8310(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
Vec sp8;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
temp_r31->unk08[0] = fn_1_A44C(0);
|
||||
temp_r31->unk08[1] = fn_1_A44C(1);
|
||||
for (i = 0; i < 8; i++) {
|
||||
temp_r31->unk08[i + 2] = fn_1_A44C(3);
|
||||
}
|
||||
fn_1_AF0(lbl_1_bss_10, 519.0f, 125.0f, 300.0f, 0x28);
|
||||
fn_1_A6C(lbl_1_bss_10, 308.98f, 125.0f, 178.74f, 0x28);
|
||||
temp_r31->unk170 = 0;
|
||||
temp_r31->unk174 = 0;
|
||||
temp_r31->unk298 = 0;
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
if (fn_1_CB8(lbl_1_bss_10) != 0) {
|
||||
break;
|
||||
}
|
||||
fn_1_3D54(lbl_1_bss_30);
|
||||
espBankSet(temp_r31->unk34[47], 0);
|
||||
espBankSet(temp_r31->unk34[48], 2);
|
||||
espPosSet(temp_r31->unk34[47], 46.0f, 240.0f);
|
||||
espPosSet(temp_r31->unk34[48], 494.0f, 240.0f);
|
||||
if (temp_r31->unk16C == 0) {
|
||||
fn_1_160(temp_r31->unk34[47], 1, 10);
|
||||
fn_1_160(temp_r31->unk34[48], 1, 10);
|
||||
temp_r31->unk29C = 0;
|
||||
}
|
||||
arg0->unk10 = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
fn_1_96B4(arg0);
|
||||
fn_1_A3B0(arg0);
|
||||
fn_1_9A94(arg0);
|
||||
switch (temp_r31->unk16C) {
|
||||
case 0:
|
||||
if (temp_r31->unk170 < 6) {
|
||||
fn_1_8F38(arg0, temp_r31->unk170);
|
||||
} else {
|
||||
fn_1_9750(arg0);
|
||||
}
|
||||
fn_1_A6EC(temp_r31->unk08[0]);
|
||||
fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 5));
|
||||
break;
|
||||
case 1:
|
||||
fn_1_9B10(arg0, temp_r31->unk174);
|
||||
fn_1_A6EC(temp_r31->unk08[0]);
|
||||
fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 6));
|
||||
break;
|
||||
}
|
||||
fn_1_A6EC(temp_r31->unk08[1]);
|
||||
fn_1_A71C(temp_r31->unk08[1], MAKE_MESSID(47, 169));
|
||||
if (temp_r31->unk298 == 0) {
|
||||
Hu3DModelAttrReset(temp_r31->unk04->model[0], 1);
|
||||
temp_r31->unk298 = 1;
|
||||
}
|
||||
sp8.x = 505.0 * -sin(305 * M_PI / 180.0);
|
||||
sp8.z = 505.0 * cos(305 * M_PI / 180.0);
|
||||
sp8.y = 144.0f - 14.0f * temp_r31->unk16C;
|
||||
omSetTra(temp_r31->unk04, sp8.x, sp8.y, sp8.z);
|
||||
arg0->unk10 = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
if (temp_r31->unk29C > 0) {
|
||||
temp_r31->unk29C--;
|
||||
break;
|
||||
}
|
||||
espBankSet(temp_r31->unk34[47], 0);
|
||||
espBankSet(temp_r31->unk34[48], 2);
|
||||
arg0->unk10 = 4;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
if (temp_r31->unk08[1]->unk20 != 0) {
|
||||
break;
|
||||
}
|
||||
if (fn_1_550(0x200) != 0) {
|
||||
HuAudFXPlay(3);
|
||||
arg0->unk10 = 5;
|
||||
} else if (fn_1_584(8) != 0 && temp_r31->unk16C == 1) {
|
||||
temp_r31->unk16C = 0;
|
||||
temp_r31->unk170 = 0;
|
||||
fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C);
|
||||
fn_1_160(temp_r31->unk34[47], 1, 5);
|
||||
fn_1_160(temp_r31->unk34[48], 1, 5);
|
||||
temp_r31->unk29C = 5;
|
||||
HuAudFXPlay(0x83F);
|
||||
arg0->unk10 = 2;
|
||||
} else if (fn_1_584(4) != 0 && temp_r31->unk16C == 0) {
|
||||
temp_r31->unk16C = 1;
|
||||
temp_r31->unk174 = 0;
|
||||
fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C);
|
||||
fn_1_160(temp_r31->unk34[47], 0, 5);
|
||||
fn_1_160(temp_r31->unk34[48], 0, 5);
|
||||
temp_r31->unk29C = 5;
|
||||
HuAudFXPlay(0x83F);
|
||||
arg0->unk10 = 2;
|
||||
} else {
|
||||
switch (temp_r31->unk16C) {
|
||||
case 0:
|
||||
if (fn_1_550(0x40) != 0) {
|
||||
if (--temp_r31->unk170 < 0) {
|
||||
temp_r31->unk170 = 6;
|
||||
}
|
||||
if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) {
|
||||
temp_r31->unk170--;
|
||||
}
|
||||
HuAudFXPlay(0x840);
|
||||
espBankSet(temp_r31->unk34[47], 1);
|
||||
temp_r31->unk29C = 0xA;
|
||||
arg0->unk10 = 2;
|
||||
return;
|
||||
}
|
||||
if (fn_1_550(0x20) != 0) {
|
||||
if (++temp_r31->unk170 >= 7) {
|
||||
temp_r31->unk170 = 0;
|
||||
}
|
||||
if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) {
|
||||
temp_r31->unk170++;
|
||||
}
|
||||
HuAudFXPlay(0x840);
|
||||
espBankSet(temp_r31->unk34[48], 3);
|
||||
temp_r31->unk29C = 0xA;
|
||||
arg0->unk10 = 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
fn_1_3E1C(lbl_1_bss_30);
|
||||
if (temp_r31->unk16C == 0) {
|
||||
fn_1_160(temp_r31->unk34[47], 0, 10);
|
||||
fn_1_160(temp_r31->unk34[48], 0, 10);
|
||||
}
|
||||
fn_1_A704(temp_r31->unk08[0]);
|
||||
fn_1_A704(temp_r31->unk08[1]);
|
||||
Hu3DModelAttrSet(temp_r31->unk04->model[0], 1);
|
||||
arg0->unk10 = 6;
|
||||
/* fallthrough */
|
||||
case 6:
|
||||
if (temp_r31->unk08[1]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) {
|
||||
for (i = 0; i < 10; i++) {
|
||||
fn_1_A6AC(temp_r31->unk08[i]);
|
||||
}
|
||||
fn_1_96B4(arg0);
|
||||
fn_1_A3B0(arg0);
|
||||
fn_1_9A94(arg0);
|
||||
fn_1_AF0(lbl_1_bss_10, 519.62f, 120.0f, 300.0f, 0x28);
|
||||
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28);
|
||||
fn_1_82B0(arg0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_8A88(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 1));
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 0);
|
||||
Hu3DMotionStartEndSet(temp_r31->model[0], 0.0f, 6.0f);
|
||||
Hu3DMotionTimeSet(temp_r31->model[0], 6.0f);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_8B58(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_8BAC(omObjData *arg0, s32 arg1) {
|
||||
s16 temp_r31 = arg0->model[0];
|
||||
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
Hu3DMotionStartEndSet(temp_r31, 0.0f, 6.0f);
|
||||
Hu3DMotionTimeSet(temp_r31, 0.0f);
|
||||
break;
|
||||
case 1:
|
||||
Hu3DMotionStartEndSet(temp_r31, 6.0f, 12.0f);
|
||||
Hu3DMotionTimeSet(temp_r31, 6.0f);
|
||||
break;
|
||||
}
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
|
||||
}
|
||||
|
||||
static omObjData *fn_1_8C84(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 14));
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 2);
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 0x40000001);
|
||||
omSetRot(temp_r31, 30.0f, 190.0f, 0.0f);
|
||||
omSetSca(temp_r31, 0.6f, 0.6f, 0.6f);
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 1);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_8D80(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_143C[153] = {
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 55),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 56),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 57),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 58),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 59),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 60),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 61),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 62),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 50),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 51),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 66),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 52),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 53),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 49),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 49),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 19),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 20),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 21),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 22),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 23),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 24),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 25),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 26),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 27),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 28),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 29),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 30),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 31),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 32),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 33),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 34),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54),
|
||||
DATA_MAKE_NUM(DATADIR_OPTION, 54)
|
||||
};
|
||||
|
||||
static void fn_1_8DD4(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 153; i++) {
|
||||
temp_r31->unk34[i] = espEntry(lbl_1_rodata_143C[i], 0, 0);
|
||||
espDrawNoSet(temp_r31->unk34[i], 0x40);
|
||||
espDispOff(temp_r31->unk34[i]);
|
||||
}
|
||||
espBankSet(temp_r31->unk34[47], 0);
|
||||
espBankSet(temp_r31->unk34[48], 2);
|
||||
HuSprExecLayerSet(0x40, 1);
|
||||
}
|
||||
|
||||
static void fn_1_8E98(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 153; i++) {
|
||||
espKill(temp_r31->unk34[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static s32 fn_1_8EF8(s32 arg0, s32 arg1) {
|
||||
s32 var_r31;
|
||||
|
||||
var_r31 = 1;
|
||||
while (arg1-- != 0) {
|
||||
var_r31 *= 10;
|
||||
}
|
||||
return (arg0 % (var_r31 * 10)) / var_r31;
|
||||
}
|
||||
|
||||
static void fn_1_8F38(omObjData *arg0, s32 arg1) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 temp_r28;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
espPosSet(temp_r31->unk34[arg1], 275.0f, 72.0f);
|
||||
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk00;
|
||||
for (i = 0; i < 4; i++) {
|
||||
espPosSet(temp_r31->unk34[i + 11], 323.0f + 20.0f * i, 116.0f);
|
||||
if (temp_r28 > 999) {
|
||||
espBankSet(temp_r31->unk34[i + 11], i + 10);
|
||||
} else {
|
||||
espBankSet(temp_r31->unk34[i + 11], fn_1_8EF8(temp_r28, 3 - i));
|
||||
}
|
||||
}
|
||||
espPosSet(temp_r31->unk34[8], 416.0f, 120.0f);
|
||||
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk24;
|
||||
for (i = 0; i < 4; i++) {
|
||||
espPosSet(temp_r31->unk34[i + 15], 364.0f + 20.0f * i, 268.0f);
|
||||
if (temp_r28 > 999) {
|
||||
espBankSet(temp_r31->unk34[i + 15], i + 10);
|
||||
} else {
|
||||
espBankSet(temp_r31->unk34[i + 15], fn_1_8EF8(temp_r28, 3 - i));
|
||||
}
|
||||
}
|
||||
espPosSet(temp_r31->unk34[9], 456.0f, 268.0f);
|
||||
temp_r28 = temp_r31->unk178[temp_r31->unk170].unk28;
|
||||
for (i = 0; i < 4; i++) {
|
||||
espPosSet(temp_r31->unk34[i + 19], 364.0f + 20.0f * i, 312.0f);
|
||||
if (temp_r28 > 999) {
|
||||
espBankSet(temp_r31->unk34[i + 19], i + 10);
|
||||
} else {
|
||||
espBankSet(temp_r31->unk34[i + 19], fn_1_8EF8(temp_r28, 3 - i));
|
||||
}
|
||||
}
|
||||
espPosSet(temp_r31->unk34[10], 456.0f, 312.0f);
|
||||
for (i = 0; i < 8; i++) {
|
||||
espPosSet(temp_r31->unk34[i + 49], 92.0f + 50.0f * i, 200.0f);
|
||||
for (j = 0; j < 3; j++) {
|
||||
espPosSet(temp_r31->unk34[i * 3 + 23 + j], 80.0f + 50.0f * i + 12.0f * j, 230.0f);
|
||||
espBankSet(temp_r31->unk34[i * 3 + 23 + j], fn_1_8EF8(temp_r31->unk178[temp_r31->unk170].unk04[i], 2 - j));
|
||||
}
|
||||
}
|
||||
espPosSet(temp_r31->unk34[47], 48.0f, 240.0f);
|
||||
espPosSet(temp_r31->unk34[48], 492.0f, 240.0f);
|
||||
espDispOn(temp_r31->unk34[arg1]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
espDispOn(temp_r31->unk34[i + 11]);
|
||||
}
|
||||
espDispOn(temp_r31->unk34[8]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
espDispOn(temp_r31->unk34[i + 15]);
|
||||
}
|
||||
espDispOn(temp_r31->unk34[9]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
espDispOn(temp_r31->unk34[i + 19]);
|
||||
}
|
||||
espDispOn(temp_r31->unk34[10]);
|
||||
for (i = 0; i < 8; i++) {
|
||||
espDispOn(temp_r31->unk34[i + 49]);
|
||||
for (j = 0; j < 3; j++) {
|
||||
espDispOn(temp_r31->unk34[i * 3 + 23 + j]);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_A7F0(temp_r31->unk08[i + 2]);
|
||||
}
|
||||
fn_1_A7B0(temp_r31->unk08[2], 64.0f, 96.0f);
|
||||
fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 19));
|
||||
fn_1_A7B0(temp_r31->unk08[3], 64.0f, 140.0f);
|
||||
fn_1_A71C(temp_r31->unk08[3], MAKE_MESSID(47, 20));
|
||||
fn_1_A7B0(temp_r31->unk08[4], 64.0f, 248.0f);
|
||||
fn_1_A71C(temp_r31->unk08[4], MAKE_MESSID(47, 21));
|
||||
fn_1_A7B0(temp_r31->unk08[5], 64.0f, 292.0f);
|
||||
fn_1_A71C(temp_r31->unk08[5], MAKE_MESSID(47, 22));
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_16F8[53] = {
|
||||
0, 1, 2, 3, 4, 5, 49, 50, 51, 52,
|
||||
53, 54, 55, 56, 8, 9, 10, 11, 12, 13,
|
||||
14, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 38, 39, 40, 35, 36, 37, 41,
|
||||
42, 43, 44, 45, 46, 15, 16, 17, 18, 19,
|
||||
20, 21, 22
|
||||
};
|
||||
|
||||
static void fn_1_96B4(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 53; i++) {
|
||||
espDispOff(temp_r31->unk34[lbl_1_rodata_16F8[i]]);
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_A828(temp_r31->unk08[i + 2]);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_9750(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 var_r27;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
espPosSet(temp_r31->unk34[6], 275.0f, 72.0f);
|
||||
for (i = 0; i < 8; i++) {
|
||||
espPosSet(temp_r31->unk34[i + 57], 148.0f + 80.0f * (i % 4), 172.0f + 104.0f * (i / 4));
|
||||
for (j = 0, var_r27 = 0; j < 6; j++) {
|
||||
var_r27 += temp_r31->unk178[j].unk04[i];
|
||||
}
|
||||
for (j = 0; j < 3; j++) {
|
||||
espPosSet(temp_r31->unk34[i * 3 + 65 + j], 132.0f + 80.0f * (i % 4) + 16.0f * j, 218.0f + 104.0f * (i / 4));
|
||||
espBankSet(temp_r31->unk34[i * 3 + 65 + j], fn_1_8EF8(var_r27, 2 - j));
|
||||
}
|
||||
}
|
||||
espDispOn(temp_r31->unk34[6]);
|
||||
for (i = 0; i < 8; i++) {
|
||||
espDispOn(temp_r31->unk34[i + 57]);
|
||||
for (j = 0; j < 3; j++) {
|
||||
espDispOn(temp_r31->unk34[i * 3 + 65 + j]);
|
||||
}
|
||||
}
|
||||
fn_1_A7B0(temp_r31->unk08[2], 136.0f, 96.0f);
|
||||
fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 23));
|
||||
fn_1_A7F0(temp_r31->unk08[2]);
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_17E8[33] = {
|
||||
6, 57, 58, 59, 60, 61, 62, 63, 64, 65,
|
||||
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
|
||||
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
|
||||
86, 87, 88
|
||||
};
|
||||
|
||||
static void fn_1_9A94(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 33; i++) {
|
||||
espDispOff(temp_r31->unk34[lbl_1_rodata_17E8[i]]);
|
||||
}
|
||||
fn_1_A828(temp_r31->unk08[2]);
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_186C[6][3] = {
|
||||
{ 0x00000195, MAKE_MESSID(23, 5), 0 },
|
||||
{ 0x00000197, MAKE_MESSID(23, 7), 1 },
|
||||
{ 0x000001AB, MAKE_MESSID(23, 27), 0 },
|
||||
{ 0x000001B0, MAKE_MESSID(23, 32), 0 },
|
||||
{ 0x000001BB, MAKE_MESSID(23, 43), 0 },
|
||||
{ 0x000001C8, MAKE_MESSID(23, 54), 0 }
|
||||
};
|
||||
|
||||
static void fn_1_9B10(omObjData *arg0, s32 arg1) {
|
||||
UnkRecordDataStruct01 *temp_r31 = arg0->data;
|
||||
s32 temp_r25;
|
||||
s32 temp_r27;
|
||||
s32 var_r28;
|
||||
s32 var_r26;
|
||||
s32 var_r17;
|
||||
s32 sp5C;
|
||||
s32 sp58;
|
||||
s32 sp54;
|
||||
s32 sp50;
|
||||
s32 sp4C;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
espPosSet(temp_r31->unk34[7], 275.0f, 72.0f);
|
||||
espPosSet(temp_r31->unk34[47], 48.0f, 240.0f);
|
||||
espPosSet(temp_r31->unk34[48], 492.0f, 240.0f);
|
||||
espDispOn(temp_r31->unk34[7]);
|
||||
for (i = 0; i < 8; i++) {
|
||||
sp50 = 0;
|
||||
temp_r27 = i + arg1 * 8;
|
||||
if (temp_r27 >= 6) {
|
||||
break;
|
||||
}
|
||||
sp54 = GWMGAvailGet(lbl_1_rodata_186C[temp_r27][0]);
|
||||
temp_r25 = temp_r31->unk280[temp_r27];
|
||||
if (sp54 != 0) {
|
||||
switch (lbl_1_rodata_186C[temp_r27][2]) {
|
||||
case 1:
|
||||
for (j = 0; j < 8; j++) {
|
||||
var_r17 = fn_1_8EF8(temp_r25, 7 - j);
|
||||
if (var_r17 != 0 || sp50 != 0 || j >= 7) {
|
||||
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
|
||||
espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r17);
|
||||
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
|
||||
sp50 = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
sp5C = temp_r25 / 3600;
|
||||
sp58 = (temp_r25 % 3600) / 60;
|
||||
var_r26 = (temp_r25 % 3600) % 60;
|
||||
if (lbl_1_rodata_186C[temp_r27][0] == 0x195 || lbl_1_rodata_186C[temp_r27][0] == 0x1B0) {
|
||||
var_r26 *= 1.6916667f;
|
||||
} else {
|
||||
var_r26 *= 1.6666666f;
|
||||
}
|
||||
for (j = 1; j < 8; j++) {
|
||||
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
|
||||
switch (j) {
|
||||
case 0:
|
||||
var_r28 = fn_1_8EF8(sp5C, 1);
|
||||
break;
|
||||
case 1:
|
||||
var_r28 = fn_1_8EF8(sp5C, 0);
|
||||
break;
|
||||
case 3:
|
||||
var_r28 = fn_1_8EF8(sp58, 1);
|
||||
break;
|
||||
case 4:
|
||||
var_r28 = fn_1_8EF8(sp58, 0);
|
||||
break;
|
||||
case 6:
|
||||
var_r28 = fn_1_8EF8(var_r26, 1);
|
||||
break;
|
||||
case 7:
|
||||
var_r28 = fn_1_8EF8(var_r26, 0);
|
||||
break;
|
||||
case 2:
|
||||
var_r28 = 11;
|
||||
break;
|
||||
case 5:
|
||||
var_r28 = 12;
|
||||
break;
|
||||
}
|
||||
espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r28);
|
||||
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
for (j = 0; j < 8; j++) {
|
||||
espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i);
|
||||
espBankSet(temp_r31->unk34[i * 8 + 89 + j], 0);
|
||||
espDispOn(temp_r31->unk34[i * 8 + 89 + j]);
|
||||
}
|
||||
}
|
||||
fn_1_A7B0(temp_r31->unk08[i + 2], 60.0f, 96.0f + 40.0f * i);
|
||||
sp4C = (sp54 != 0) ? lbl_1_rodata_186C[temp_r27][1] : MAKE_MESSID(35, 0);
|
||||
fn_1_A71C(temp_r31->unk08[i + 2], sp4C);
|
||||
fn_1_A7F0(temp_r31->unk08[i + 2]);
|
||||
}
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_18C8[65] = {
|
||||
7, 89, 90, 91, 92, 93, 94, 95, 96, 97,
|
||||
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
|
||||
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
|
||||
118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
|
||||
128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
|
||||
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
|
||||
148, 149, 150, 151, 152
|
||||
};
|
||||
|
||||
static void fn_1_A3B0(omObjData *arg0) {
|
||||
UnkRecordDataStruct01 *temp_r30 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 65; i++) {
|
||||
espDispOff(temp_r30->unk34[lbl_1_rodata_18C8[i]]);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
fn_1_A828(temp_r30->unk08[i + 2]);
|
||||
}
|
||||
}
|
||||
246
src/REL/option/room.c
Executable file
246
src/REL/option/room.c
Executable file
|
|
@ -0,0 +1,246 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ omObjData *unk00;
|
||||
/* 0x04 */ omObjData *unk04;
|
||||
/* 0x08 */ omObjData *unk08;
|
||||
/* 0x0C */ omObjData *unk0C;
|
||||
/* 0x10 */ UnkWindowDataStruct *unk10;
|
||||
/* 0x14 */ UnkWindowDataStruct *unk14;
|
||||
/* 0x18 */ s32 unk18;
|
||||
/* 0x1C */ s32 unk1C;
|
||||
/* 0x20 */ s16 unk20;
|
||||
/* 0x22 */ char unk22[6];
|
||||
/* 0x28 */ s32 unk28;
|
||||
} UnkRoomDataStruct; // Size 0x2C
|
||||
|
||||
static void fn_1_1844(omObjData *arg0, s32 arg1);
|
||||
static void fn_1_1A8C(omObjData *arg0);
|
||||
static omObjData *fn_1_2088(void);
|
||||
static void fn_1_2110(omObjData *arg0);
|
||||
static omObjData *fn_1_2144(void);
|
||||
static void fn_1_21C4(omObjData *arg0);
|
||||
|
||||
omObjData *lbl_1_bss_18;
|
||||
|
||||
static omObjFunc lbl_1_data_68[] = {
|
||||
NULL,
|
||||
fn_1_1A8C
|
||||
};
|
||||
|
||||
omObjData *fn_1_15A4(void) {
|
||||
omObjData *var_r30;
|
||||
UnkRoomDataStruct *temp_r31;
|
||||
|
||||
var_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
|
||||
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRoomDataStruct), MEMORY_DEFAULT_NUM);
|
||||
var_r30->data = temp_r31;
|
||||
temp_r31->unk18 = 0;
|
||||
temp_r31->unk20 = -1;
|
||||
temp_r31->unk28 = 0;
|
||||
fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1);
|
||||
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1);
|
||||
temp_r31->unk00 = fn_1_2088();
|
||||
lbl_1_bss_38 = fn_1_4028();
|
||||
lbl_1_bss_40 = fn_1_80E4();
|
||||
lbl_1_bss_30 = fn_1_3158();
|
||||
lbl_1_bss_20 = fn_1_21F8();
|
||||
temp_r31->unk04 = fn_1_2144();
|
||||
temp_r31->unk08 = fn_1_2144();
|
||||
temp_r31->unk0C = fn_1_2144();
|
||||
omSetRot(temp_r31->unk04, 0.0f, 0.0f, 0.0f);
|
||||
omSetRot(temp_r31->unk08, 0.0f, 120.0f, 0.0f);
|
||||
omSetRot(temp_r31->unk0C, 0.0f, 240.0f, 0.0f);
|
||||
temp_r31->unk10 = fn_1_A44C(0);
|
||||
temp_r31->unk14 = fn_1_A44C(1);
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_1798(omObjData *arg0) {
|
||||
UnkRoomDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
fn_1_2110(temp_r31->unk00);
|
||||
fn_1_42DC(lbl_1_bss_38);
|
||||
fn_1_322C(lbl_1_bss_30);
|
||||
fn_1_825C(lbl_1_bss_40);
|
||||
fn_1_241C(lbl_1_bss_20);
|
||||
fn_1_21C4(temp_r31->unk04);
|
||||
fn_1_21C4(temp_r31->unk08);
|
||||
fn_1_21C4(temp_r31->unk0C);
|
||||
fn_1_A6AC(temp_r31->unk10);
|
||||
fn_1_A6AC(temp_r31->unk14);
|
||||
HuMemDirectFree(temp_r31);
|
||||
}
|
||||
|
||||
static const float lbl_1_rodata_BC[3] = { 45.0f, 165.0f, 285.0f };
|
||||
|
||||
static void fn_1_1844(omObjData *arg0, s32 arg1) {
|
||||
UnkRoomDataStruct *temp_r31 = arg0->data;
|
||||
float sp10;
|
||||
float spC;
|
||||
float sp8;
|
||||
float var_f31;
|
||||
|
||||
temp_r31->unk18 += (arg1 == 0) ? -1 : 1;
|
||||
if (temp_r31->unk18 < 0) {
|
||||
temp_r31->unk18 = 2;
|
||||
} else if (temp_r31->unk18 >= 3) {
|
||||
temp_r31->unk18 = 0;
|
||||
}
|
||||
fn_1_C88(lbl_1_bss_10, &sp10, &spC, &sp8);
|
||||
fn_1_B74(lbl_1_bss_10, fn_1_BF8(lbl_1_bss_10), fn_1_C28(lbl_1_bss_10) + (arg1 == 0 ? -120.0f : 120.0f), spC, 0x60);
|
||||
if (temp_r31->unk18 == 2 && arg1 == 0) {
|
||||
var_f31 = lbl_1_rodata_BC[2] - 360.0f;
|
||||
} else if (temp_r31->unk18 == 0 && arg1 == 1) {
|
||||
var_f31 = 360.0f + lbl_1_rodata_BC[0];
|
||||
} else {
|
||||
var_f31 = lbl_1_rodata_BC[temp_r31->unk18];
|
||||
}
|
||||
fn_1_2508(lbl_1_bss_20, var_f31, 430.0f, 0x60);
|
||||
}
|
||||
|
||||
void fn_1_1A2C(omObjData *arg0, s32 arg1) {
|
||||
UnkRoomDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk1C = arg1;
|
||||
arg0->func = lbl_1_data_68[arg1];
|
||||
arg0->unk10 = 0;
|
||||
arg0->unk10 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_1A70(omObjData *arg0) {
|
||||
UnkRoomDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
return temp_r31->unk1C;
|
||||
}
|
||||
|
||||
static const s32 lbl_1_rodata_D4[] = {
|
||||
MAKE_MESSID(47, 1),
|
||||
MAKE_MESSID(47, 7),
|
||||
MAKE_MESSID(47, 4)
|
||||
};
|
||||
|
||||
static void fn_1_1A8C(omObjData *arg0) {
|
||||
UnkRoomDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
if (temp_r31->unk28 == 0) {
|
||||
fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1);
|
||||
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1);
|
||||
temp_r31->unk28 = 1;
|
||||
}
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
if (fn_1_CB8(lbl_1_bss_10) != 0) {
|
||||
break;
|
||||
}
|
||||
fn_1_A6EC(temp_r31->unk10);
|
||||
fn_1_A71C(temp_r31->unk10, lbl_1_rodata_D4[temp_r31->unk18]);
|
||||
fn_1_A6EC(temp_r31->unk14);
|
||||
fn_1_A71C(temp_r31->unk14, MAKE_MESSID(47, 14));
|
||||
arg0->unk10 = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
|
||||
if (fn_1_550(0x200) != 0) {
|
||||
HuAudFXPlay(3);
|
||||
arg0->unk10 = 7;
|
||||
} else if (fn_1_584(1) != 0) {
|
||||
fn_1_1844(arg0, 0);
|
||||
fn_1_A704(temp_r31->unk10);
|
||||
fn_1_A704(temp_r31->unk14);
|
||||
HuAudFXPlay(0);
|
||||
arg0->unk10 = 1;
|
||||
} else if (fn_1_584(2) != 0) {
|
||||
fn_1_1844(arg0, 1);
|
||||
fn_1_A704(temp_r31->unk10);
|
||||
fn_1_A704(temp_r31->unk14);
|
||||
HuAudFXPlay(0);
|
||||
arg0->unk10 = 1;
|
||||
} else if (fn_1_550(0x100) != 0) {
|
||||
fn_1_A704(temp_r31->unk10);
|
||||
fn_1_A704(temp_r31->unk14);
|
||||
HuAudFXPlay(2);
|
||||
arg0->unk10 = 3;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
|
||||
switch (temp_r31->unk18) {
|
||||
case 0:
|
||||
fn_1_3290(lbl_1_bss_30, 1);
|
||||
arg0->unk10 = 4;
|
||||
break;
|
||||
case 1:
|
||||
fn_1_4388(lbl_1_bss_38, 1);
|
||||
arg0->unk10 = 5;
|
||||
break;
|
||||
case 2:
|
||||
fn_1_82B0(lbl_1_bss_40, 1);
|
||||
arg0->unk10 = 6;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (fn_1_32D4(lbl_1_bss_30) == 0) {
|
||||
arg0->unk10 = 1;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (fn_1_43CC(lbl_1_bss_38) == 0) {
|
||||
arg0->unk10 = 1;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (fn_1_82F4(lbl_1_bss_40) == 0) {
|
||||
arg0->unk10 = 1;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
fn_1_A704(temp_r31->unk10);
|
||||
fn_1_A704(temp_r31->unk14);
|
||||
arg0->unk10 = 8;
|
||||
/* fallthrough */
|
||||
case 8:
|
||||
if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) {
|
||||
fn_1_1A2C(arg0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_2088(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 0));
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 0);
|
||||
Hu3DModelShadowMapSet(temp_r31->model[0]);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_2110(omObjData *arg0) {
|
||||
Hu3DModelKill(arg0->model[0]);
|
||||
}
|
||||
|
||||
static omObjData *fn_1_2144(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 0);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 6));
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_21C4(omObjData *arg0) {
|
||||
Hu3DModelKill(arg0->model[0]);
|
||||
}
|
||||
336
src/REL/option/rumble.c
Executable file
336
src/REL/option/rumble.c
Executable file
|
|
@ -0,0 +1,336 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/window.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ omObjData *unk00;
|
||||
/* 0x04 */ omObjData *unk04;
|
||||
/* 0x08 */ omObjData *unk08;
|
||||
/* 0x0C */ omObjData *unk0C;
|
||||
/* 0x10 */ omObjData *unk10;
|
||||
/* 0x14 */ UnkWindowDataStruct *unk14[2];
|
||||
/* 0x20 */ s32 unk1C;
|
||||
/* 0x20 */ s32 unk20;
|
||||
/* 0x24 */ s32 unk24;
|
||||
/* 0x28 */ s32 unk28;
|
||||
} UnkRumbleDataStruct; // Size 0x2C
|
||||
|
||||
static void fn_1_32F0(omObjData *arg0);
|
||||
static omObjData *fn_1_37AC(void);
|
||||
static void fn_1_3868(omObjData *arg0);
|
||||
static omObjData *fn_1_38BC(void);
|
||||
static void fn_1_398C(omObjData *arg0);
|
||||
static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2);
|
||||
static omObjData *fn_1_3B08(void);
|
||||
static void fn_1_3B8C(omObjData *arg0);
|
||||
static void fn_1_3BE0(omObjData *arg0, s32 arg1);
|
||||
static omObjData *fn_1_3C6C(void);
|
||||
static void fn_1_3D00(omObjData *arg0);
|
||||
static omObjData *fn_1_3F28(void);
|
||||
static void fn_1_3FD4(omObjData *arg0);
|
||||
|
||||
omObjData *lbl_1_bss_30;
|
||||
|
||||
static omObjFunc lbl_1_data_108[] = {
|
||||
NULL,
|
||||
fn_1_32F0
|
||||
};
|
||||
|
||||
omObjData *fn_1_3158(void) {
|
||||
omObjData *temp_r30;
|
||||
UnkRumbleDataStruct *temp_r3;
|
||||
|
||||
temp_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL);
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRumbleDataStruct), MEMORY_DEFAULT_NUM);
|
||||
temp_r30->data = temp_r3;
|
||||
temp_r3->unk20 = GWGameStat.rumble;
|
||||
temp_r3->unk00 = fn_1_38BC();
|
||||
fn_1_39E0(temp_r3->unk00, temp_r3->unk20, 0);
|
||||
temp_r3->unk04 = fn_1_3B08();
|
||||
fn_1_3BE0(temp_r3->unk04, temp_r3->unk20);
|
||||
temp_r3->unk08 = fn_1_3C6C();
|
||||
temp_r3->unk10 = fn_1_3F28();
|
||||
temp_r3->unk0C = fn_1_37AC();
|
||||
fn_1_3290(temp_r30, 0);
|
||||
return temp_r30;
|
||||
}
|
||||
|
||||
void fn_1_322C(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
fn_1_3868(temp_r31->unk0C);
|
||||
fn_1_398C(temp_r31->unk00);
|
||||
fn_1_3B8C(temp_r31->unk04);
|
||||
fn_1_3FD4(temp_r31->unk10);
|
||||
fn_1_3D00(temp_r31->unk08);
|
||||
HuMemDirectFree(temp_r31);
|
||||
}
|
||||
|
||||
void fn_1_3290(omObjData *arg0, s32 arg1) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
temp_r31->unk1C = arg1;
|
||||
arg0->func = lbl_1_data_108[arg1];
|
||||
arg0->unk10 = 0;
|
||||
arg0->unk10 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_32D4(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
return temp_r31->unk1C;
|
||||
}
|
||||
|
||||
static void fn_1_32F0(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
s32 i;
|
||||
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
temp_r31->unk14[0] = fn_1_A44C(0);
|
||||
temp_r31->unk14[1] = fn_1_A44C(1);
|
||||
fn_1_AF0(lbl_1_bss_10, -519.62f, 135.0f, 300.0f, 0x28);
|
||||
fn_1_A6C(lbl_1_bss_10, -315.64f, 135.0f, 182.25f, 0x28);
|
||||
fn_1_3D54(arg0);
|
||||
Hu3DModelLayerSet(temp_r31->unk08->model[0], 1);
|
||||
temp_r31->unk24 = 0;
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
if (fn_1_CB8(lbl_1_bss_10) != 0) {
|
||||
break;
|
||||
}
|
||||
if (temp_r31->unk24 == 0) {
|
||||
Hu3DModelAttrReset(temp_r31->unk0C->model[0], 1);
|
||||
temp_r31->unk24 = 1;
|
||||
Hu3DModelHookSet(temp_r31->unk00->model[0], "target", temp_r31->unk0C->model[0]);
|
||||
}
|
||||
fn_1_A6EC(temp_r31->unk14[1]);
|
||||
fn_1_A71C(temp_r31->unk14[1], MAKE_MESSID(47, 15));
|
||||
fn_1_A6EC(temp_r31->unk14[0]);
|
||||
if (temp_r31->unk20 != 0) {
|
||||
fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 2));
|
||||
} else {
|
||||
fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 3));
|
||||
}
|
||||
arg0->unk10 = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
if (temp_r31->unk14[0]->unk20 == 0 && temp_r31->unk14[1]->unk20 == 0) {
|
||||
if (fn_1_550(0x200) != 0) {
|
||||
HuAudFXPlay(3);
|
||||
arg0->unk10 = 4;
|
||||
} else if (fn_1_584(8) != 0 && temp_r31->unk20 == 0) {
|
||||
fn_1_39E0(temp_r31->unk00, 1, 1);
|
||||
temp_r31->unk20 = 1;
|
||||
temp_r31->unk28 = 0;
|
||||
GWGameStat.rumble = 1;
|
||||
arg0->unk10 = 3;
|
||||
} else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) {
|
||||
fn_1_39E0(temp_r31->unk00, 0, 1);
|
||||
temp_r31->unk20 = 0;
|
||||
temp_r31->unk28 = 0;
|
||||
GWGameStat.rumble = 0;
|
||||
HuPadRumbleAllStop();
|
||||
arg0->unk10 = 3;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (temp_r31->unk28++ >= 60) {
|
||||
HuAudFXPlay(0x83C);
|
||||
fn_1_3BE0(temp_r31->unk04, temp_r31->unk20);
|
||||
if (temp_r31->unk20 != 0) {
|
||||
HuPadRumbleSet(0, 0x3C, 0xA, 5);
|
||||
Hu3DMotionTimeSet(temp_r31->unk10->model[0], 0.0f);
|
||||
Hu3DModelAttrReset(temp_r31->unk10->model[0], 1);
|
||||
} else {
|
||||
Hu3DModelAttrSet(temp_r31->unk10->model[0], 1);
|
||||
}
|
||||
arg0->unk10 = 1;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
fn_1_A704(temp_r31->unk14[1]);
|
||||
fn_1_A704(temp_r31->unk14[0]);
|
||||
Hu3DModelAttrSet(temp_r31->unk0C->model[0], 1);
|
||||
fn_1_3E1C(arg0);
|
||||
arg0->unk10 = 5;
|
||||
/* fallthrough */
|
||||
case 5:
|
||||
if (temp_r31->unk14[1]->unk20 == 0 && temp_r31->unk14[0]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) {
|
||||
for (i = 0; i < 2; i++) {
|
||||
fn_1_A6AC(temp_r31->unk14[i]);
|
||||
}
|
||||
Hu3DModelHookReset(temp_r31->unk00->model[0]);
|
||||
fn_1_AF0(lbl_1_bss_10, -519.62f, 120.0f, 300.0f, 0x28);
|
||||
fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28);
|
||||
fn_1_3290(arg0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_37AC(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 15));
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 3);
|
||||
omSetRot(temp_r31, 0.0f, 180.0f, 0.0f);
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 1);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_3868(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_38BC(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 2));
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
|
||||
if (GWGameStat.rumble != 0) {
|
||||
Hu3DMotionTimeSet(temp_r31->model[0], 60.0f);
|
||||
} else {
|
||||
Hu3DMotionTimeSet(temp_r31->model[0], 0.0f);
|
||||
}
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_398C(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2) {
|
||||
s16 temp_r31 = arg0->model[0];
|
||||
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
|
||||
if (arg1 != 0) {
|
||||
Hu3DMotionStartEndSet(temp_r31, 60.0f, 120.0f);
|
||||
if (arg2 != 0) {
|
||||
Hu3DMotionTimeSet(temp_r31, 60.0f);
|
||||
} else {
|
||||
Hu3DMotionTimeSet(temp_r31, 119.0f);
|
||||
}
|
||||
} else {
|
||||
Hu3DMotionStartEndSet(temp_r31, 0.0f, 60.0f);
|
||||
if (arg2 != 0) {
|
||||
Hu3DMotionTimeSet(temp_r31, 0.0f);
|
||||
} else {
|
||||
Hu3DMotionTimeSet(temp_r31, 59.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_3B08(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 9));
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 0x40000001);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_3B8C(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_3BE0(omObjData *arg0, s32 arg1) {
|
||||
if (arg1 != 0) {
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000002);
|
||||
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
|
||||
} else {
|
||||
Hu3DModelAttrSet(arg0->model[0], 0x40000002);
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
|
||||
}
|
||||
}
|
||||
|
||||
static omObjData *fn_1_3C6C(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 10));
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
|
||||
Hu3DModelLayerSet(temp_r31->model[0], 2);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_3D00(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3D54(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
s16 temp_r30 = temp_r31->unk08->model[0];
|
||||
|
||||
Hu3DMotionStartEndSet(temp_r30, 0.0f, 40.0f);
|
||||
Hu3DMotionTimeSet(temp_r30, 0.0f);
|
||||
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002);
|
||||
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001);
|
||||
Hu3DModelLayerSet(temp_r31->unk08->model[0], 2);
|
||||
HuAudFXPlay(0x83D);
|
||||
}
|
||||
|
||||
void fn_1_3E1C(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
s16 temp_r30 = temp_r31->unk08->model[0];
|
||||
|
||||
Hu3DMotionStartEndSet(temp_r30, 40.0f, 80.0f);
|
||||
Hu3DMotionTimeSet(temp_r30, 40.0f);
|
||||
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002);
|
||||
Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001);
|
||||
HuAudFXPlay(0x83E);
|
||||
}
|
||||
|
||||
s32 fn_1_3ED0(omObjData *arg0) {
|
||||
UnkRumbleDataStruct *temp_r31 = arg0->data;
|
||||
s16 temp_r30 = temp_r31->unk08->model[0];
|
||||
|
||||
return !Hu3DMotionEndCheck(temp_r30);
|
||||
}
|
||||
|
||||
static omObjData *fn_1_3F28(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
|
||||
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 11));
|
||||
if (GWGameStat.rumble != 0) {
|
||||
Hu3DModelAttrReset(temp_r31->model[0], 1);
|
||||
} else {
|
||||
Hu3DModelAttrSet(temp_r31->model[0], 1);
|
||||
}
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_3FD4(omObjData *arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 1; i++) {
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
}
|
||||
206
src/REL/option/scene.c
Executable file
206
src/REL/option/scene.c
Executable file
|
|
@ -0,0 +1,206 @@
|
|||
#include "REL/option.h"
|
||||
#include "REL/executor.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/esprite.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/saveload.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/wipe.h"
|
||||
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk00;
|
||||
/* 0x02 */ char unk02[2];
|
||||
/* 0x04 */ float unk04;
|
||||
/* 0x08 */ float unk08;
|
||||
} UnkSceneDataStruct; // Size 0xC
|
||||
|
||||
static void fn_1_270(void);
|
||||
static void fn_1_354(s16 arg0, s32 arg1, s32 arg2);
|
||||
static void fn_1_468(void);
|
||||
static void fn_1_5EC(omObjData *arg0);
|
||||
static void fn_1_6E8(void);
|
||||
|
||||
Process *lbl_1_bss_8;
|
||||
static omObjData *lbl_1_bss_4;
|
||||
static s32 lbl_1_bss_0;
|
||||
|
||||
void ModuleProlog(void) {
|
||||
lbl_1_bss_8 = omInitObjMan(0x40, 0x2000);
|
||||
omGameSysInit(lbl_1_bss_8);
|
||||
HuWinInit(1);
|
||||
lbl_1_bss_0 = GWGameStat.rumble;
|
||||
lbl_1_bss_4 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 0, fn_1_5EC);
|
||||
lbl_1_bss_4->unk10 = 0;
|
||||
lbl_1_bss_28 = fn_1_2E04();
|
||||
}
|
||||
|
||||
void fn_1_160(s16 arg0, s32 arg1, s32 arg2) {
|
||||
UnkSceneDataStruct *temp_r31;
|
||||
Process *temp_r30;
|
||||
|
||||
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM);
|
||||
temp_r31->unk00 = arg0;
|
||||
temp_r31->unk08 = 1.0f / arg2;
|
||||
if (arg1 != 0) {
|
||||
temp_r31->unk08 = temp_r31->unk08;
|
||||
temp_r31->unk04 = 0.0f;
|
||||
} else {
|
||||
temp_r31->unk08 = -temp_r31->unk08;
|
||||
temp_r31->unk04 = 1.0f;
|
||||
}
|
||||
espDispOn(temp_r31->unk00);
|
||||
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
temp_r30 = HuPrcChildCreate(fn_1_270, 0x3000, 0x1500, 0, HuPrcCurrentGet());
|
||||
temp_r30->user_data = temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_270(void) {
|
||||
UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
|
||||
while (1) {
|
||||
temp_r31->unk04 += temp_r31->unk08;
|
||||
if (temp_r31->unk04 > 1.0f) {
|
||||
temp_r31->unk04 = 1.0f;
|
||||
break;
|
||||
}
|
||||
if (temp_r31->unk04 < 0.0f) {
|
||||
temp_r31->unk04 = 0.0f;
|
||||
break;
|
||||
}
|
||||
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
espTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
if (temp_r31->unk04 <= 0.0f) {
|
||||
espDispOff(temp_r31->unk00);
|
||||
}
|
||||
HuMemDirectFree(temp_r31);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
static void fn_1_354(s16 arg0, s32 arg1, s32 arg2) {
|
||||
UnkSceneDataStruct *temp_r31;
|
||||
Process *temp_r30;
|
||||
|
||||
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM);
|
||||
temp_r31->unk00 = arg0;
|
||||
temp_r31->unk08 = 1.0f / arg2;
|
||||
if (arg1 != 0) {
|
||||
temp_r31->unk08 = temp_r31->unk08;
|
||||
temp_r31->unk04 = 0.0f;
|
||||
} else {
|
||||
temp_r31->unk08 = -temp_r31->unk08;
|
||||
temp_r31->unk04 = 1.0f;
|
||||
}
|
||||
Hu3DModelAttrReset(temp_r31->unk00, 1);
|
||||
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
temp_r30 = HuPrcChildCreate(fn_1_468, 0x3000, 0x1500, 0, HuPrcCurrentGet());
|
||||
temp_r30->user_data = temp_r31;
|
||||
}
|
||||
|
||||
static void fn_1_468(void) {
|
||||
UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
|
||||
while (1) {
|
||||
temp_r31->unk04 += temp_r31->unk08;
|
||||
if (temp_r31->unk04 > 1.0f) {
|
||||
temp_r31->unk04 = 1.0f;
|
||||
break;
|
||||
}
|
||||
if (temp_r31->unk04 < 0.0f) {
|
||||
temp_r31->unk04 = 0.0f;
|
||||
break;
|
||||
}
|
||||
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04);
|
||||
if (temp_r31->unk04 <= 0.0f) {
|
||||
Hu3DModelAttrSet(temp_r31->unk00, 1);
|
||||
}
|
||||
HuMemDirectFree(temp_r31);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
s32 fn_1_550(u16 arg0) {
|
||||
u32 temp_r31 = HuPadBtnDown[0] & arg0;
|
||||
|
||||
return (temp_r31 != 0);
|
||||
}
|
||||
|
||||
s32 fn_1_584(u16 arg0) {
|
||||
u32 temp_r31 = HuPadDStkRep[0] & arg0;
|
||||
|
||||
return (temp_r31 != 0);
|
||||
}
|
||||
|
||||
s32 fn_1_5B8(u16 arg0) {
|
||||
u32 temp_r31 = HuPadDStk[0] & arg0;
|
||||
|
||||
return (temp_r31 != 0);
|
||||
}
|
||||
|
||||
static void fn_1_5EC(omObjData *arg0) {
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
if (omSysExitReq == 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10 = 2;
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
WipeCreate(2, 0, 0x3C);
|
||||
HuAudFadeOut(1000);
|
||||
arg0->unk10 = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
if (WipeStatGet() == 0) {
|
||||
fn_1_2F4C(lbl_1_bss_28);
|
||||
if (lbl_1_bss_0 != GWGameStat.rumble) {
|
||||
omSysExitReq = 0;
|
||||
fn_1_6E8();
|
||||
}
|
||||
omOvlReturnEx(1, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_6E8(void) {
|
||||
s16 temp_r31;
|
||||
|
||||
if (SLSaveFlagGet() == 0) {
|
||||
return;
|
||||
}
|
||||
Hu3DAllKill();
|
||||
HuSprClose();
|
||||
HuSprInit();
|
||||
espInit();
|
||||
HuPrcVSleep();
|
||||
temp_r31 = espEntry(0x860020, 0x1388, 0);
|
||||
espPosSet(temp_r31, 288.0f, 240.0f);
|
||||
espAttrReset(temp_r31, 4);
|
||||
Hu3DBGColorSet(0, 0, 0);
|
||||
WipeCreate(1, 0, 0xA);
|
||||
while (WipeStatGet() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
SLCommonSet();
|
||||
if (SLSave() == 0) {
|
||||
GWSystem.save_mode = 1;
|
||||
}
|
||||
WipeCreate(2, 0, 0x14);
|
||||
while (WipeStatGet() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
1654
src/REL/option/sound.c
Executable file
1654
src/REL/option/sound.c
Executable file
File diff suppressed because it is too large
Load diff
126
src/REL/option/state.c
Executable file
126
src/REL/option/state.c
Executable file
|
|
@ -0,0 +1,126 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/window.h"
|
||||
#include "game/wipe.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ UnkWindowDataStruct *unk00;
|
||||
/* 0x04 */ s32 unk04;
|
||||
/* 0x08 */ s16 unk08;
|
||||
/* 0x0A */ char unk0A[2];
|
||||
} UnkStateDataStruct; // Size 0xC
|
||||
|
||||
typedef struct {
|
||||
Vec unk00;
|
||||
Vec unk0C;
|
||||
GXColor unk18;
|
||||
} UnkLightDataStruct; // Size 0x1C
|
||||
|
||||
static void fn_1_2FB0(omObjData *arg0);
|
||||
|
||||
omObjData *lbl_1_bss_28;
|
||||
|
||||
static UnkLightDataStruct lbl_1_data_A0 = {
|
||||
{ 0.0f, 300.0f, 0.0f },
|
||||
{ 0.0f, -300.0f, -600.0f },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
};
|
||||
|
||||
static Vec lbl_1_data_BC[3] = {
|
||||
{ 0.0f, 3000.0f, 1.0f },
|
||||
{ 0.0f, 1.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 0.0f }
|
||||
};
|
||||
|
||||
omObjData *fn_1_2E04(void) {
|
||||
omObjData *var_r30;
|
||||
UnkStateDataStruct *temp_r3;
|
||||
LightData *sp8;
|
||||
|
||||
var_r30 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 4, fn_1_2FB0);
|
||||
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkStateDataStruct), MEMORY_DEFAULT_NUM);
|
||||
var_r30->data = temp_r3;
|
||||
lbl_1_bss_10 = fn_1_7F8();
|
||||
lbl_1_bss_18 = fn_1_15A4();
|
||||
temp_r3->unk00 = fn_1_A44C(0);
|
||||
Hu3DLighInit();
|
||||
temp_r3->unk08 = Hu3DGLightCreateV(&lbl_1_data_A0.unk00, &lbl_1_data_A0.unk0C, &lbl_1_data_A0.unk18);
|
||||
Hu3DGLightInfinitytSet(temp_r3->unk08);
|
||||
sp8 = &Hu3DGlobalLight[temp_r3->unk08];
|
||||
Hu3DShadowCreate(30.0f, 20.0f, 5000.0f);
|
||||
Hu3DShadowTPLvlSet(0.45f);
|
||||
Hu3DShadowPosSet(&lbl_1_data_BC[0], &lbl_1_data_BC[1], &lbl_1_data_BC[2]);
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_2F4C(omObjData *arg0) {
|
||||
UnkStateDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
fn_1_A3C(lbl_1_bss_10);
|
||||
fn_1_1798(lbl_1_bss_18);
|
||||
fn_1_A6AC(temp_r31->unk00);
|
||||
HuMemDirectFree(temp_r31);
|
||||
}
|
||||
|
||||
static void fn_1_2FB0(omObjData *arg0) {
|
||||
UnkStateDataStruct *temp_r31 = arg0->data;
|
||||
|
||||
switch (arg0->unk10) {
|
||||
case 0:
|
||||
arg0->unk10 = 1;
|
||||
/* fallthrough */
|
||||
case 1:
|
||||
WipeCreate(1, -1, 0x3C);
|
||||
arg0->unk10 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (WipeStatGet() != 0 || temp_r31->unk00->unk20 != 0) {
|
||||
break;
|
||||
}
|
||||
fn_1_1A2C(lbl_1_bss_18, 1);
|
||||
arg0->unk10 = 3;
|
||||
/* fallthrough */
|
||||
case 3:
|
||||
if (fn_1_1A70(lbl_1_bss_18) != 0) {
|
||||
break;
|
||||
}
|
||||
arg0->unk10 = 4;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
fn_1_A6EC(temp_r31->unk00);
|
||||
fn_1_A71C(temp_r31->unk00, MAKE_MESSID(47, 167));
|
||||
arg0->unk10 = 5;
|
||||
/* fallthrough */
|
||||
case 5:
|
||||
if (temp_r31->unk00->unk20 != 0) {
|
||||
break;
|
||||
}
|
||||
fn_1_A880(temp_r31->unk00, 1);
|
||||
arg0->unk10 = 6;
|
||||
/* fallthrough */
|
||||
case 6:
|
||||
if (temp_r31->unk00->unk20 != 0) {
|
||||
break;
|
||||
}
|
||||
fn_1_A704(temp_r31->unk00);
|
||||
if (temp_r31->unk00->unk1C == 0) {
|
||||
temp_r31->unk04 = 0;
|
||||
arg0->unk10 = 7;
|
||||
} else {
|
||||
arg0->unk10 = 2;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
arg0->unk10 = 8;
|
||||
temp_r31->unk04 = 0;
|
||||
/* fallthrough */
|
||||
case 8:
|
||||
if (temp_r31->unk00->unk20 == 0 && temp_r31->unk04++ >= 60) {
|
||||
omSysExitReq = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
148
src/REL/option/window.c
Executable file
148
src/REL/option/window.c
Executable file
|
|
@ -0,0 +1,148 @@
|
|||
#include "REL/option.h"
|
||||
#include "game/esprite.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
|
||||
static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2);
|
||||
static void fn_1_A860(UnkWindowDataStruct *arg0);
|
||||
static void fn_1_A8A4(void);
|
||||
|
||||
UnkWindowDataStruct *fn_1_A44C(s32 arg0) {
|
||||
UnkWindowDataStruct *temp_r31;
|
||||
|
||||
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWindowDataStruct), MEMORY_DEFAULT_NUM);
|
||||
temp_r31->unk18 = 0;
|
||||
temp_r31->unk10 = 0;
|
||||
temp_r31->unk14 = 0;
|
||||
temp_r31->unk20 = 0;
|
||||
temp_r31->unk00 = HuPrcChildCreate(fn_1_A8A4, 0x2000, 0x2000, 0, lbl_1_bss_8);
|
||||
temp_r31->unk00->user_data = temp_r31;
|
||||
temp_r31->unk08 = arg0;
|
||||
switch (temp_r31->unk08) {
|
||||
case 0:
|
||||
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1);
|
||||
HuWinBGTPLvlSet(temp_r31->unk04, 0.8f);
|
||||
HuWinMesSpeedSet(temp_r31->unk04, 0);
|
||||
HuWinMesPalSet(temp_r31->unk04, 7, 0, 0, 0);
|
||||
break;
|
||||
case 1:
|
||||
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 326.0f, 480, 40, -1, 0);
|
||||
HuWinAttrSet(temp_r31->unk04, 0x800);
|
||||
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
|
||||
HuWinMesSpeedSet(temp_r31->unk04, 0);
|
||||
break;
|
||||
case 2:
|
||||
temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 88.0f, 224, 34, -1, 0);
|
||||
HuWinAttrSet(temp_r31->unk04, 0x800);
|
||||
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
|
||||
HuWinMesSpeedSet(temp_r31->unk04, 0);
|
||||
break;
|
||||
case 3:
|
||||
temp_r31->unk04 = HuWinExCreateStyled(175.0f, 100.0f, 300, 34, -1, 0);
|
||||
HuWinBGTPLvlSet(temp_r31->unk04, 0.0f);
|
||||
HuWinMesSpeedSet(temp_r31->unk04, 0);
|
||||
break;
|
||||
}
|
||||
HuWinDrawNoSet(temp_r31->unk04, 0x3F);
|
||||
fn_1_A828(temp_r31);
|
||||
HuSprExecLayerSet(0x3F, 2);
|
||||
return temp_r31;
|
||||
}
|
||||
|
||||
void fn_1_A6AC(UnkWindowDataStruct *arg0) {
|
||||
HuWinExCleanup(arg0->unk04);
|
||||
HuPrcKill(arg0->unk00);
|
||||
HuMemDirectFree(arg0);
|
||||
}
|
||||
|
||||
void fn_1_A6EC(UnkWindowDataStruct *arg0) {
|
||||
if (arg0->unk0C == 0) {
|
||||
arg0->unk20 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A704(UnkWindowDataStruct *arg0) {
|
||||
if (arg0->unk0C != 0) {
|
||||
arg0->unk20 = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A71C(UnkWindowDataStruct *arg0, s32 arg1) {
|
||||
if (arg0->unk20 == 0) {
|
||||
HuWinMesSet(arg0->unk04, arg1);
|
||||
} else {
|
||||
arg0->unk18 = arg1;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2) {
|
||||
HuWinInsertMesSet(arg0->unk04, arg1, arg2);
|
||||
}
|
||||
|
||||
void fn_1_A7B0(UnkWindowDataStruct *arg0, float arg1, float arg2) {
|
||||
HuWinPosSet(arg0->unk04, arg1, arg2);
|
||||
}
|
||||
|
||||
void fn_1_A7F0(UnkWindowDataStruct *arg0) {
|
||||
HuWinDispOn(arg0->unk04);
|
||||
arg0->unk0C = 1;
|
||||
}
|
||||
|
||||
void fn_1_A828(UnkWindowDataStruct *arg0) {
|
||||
HuWinDispOff(arg0->unk04);
|
||||
arg0->unk0C = 0;
|
||||
}
|
||||
|
||||
static void fn_1_A860(UnkWindowDataStruct *arg0) {
|
||||
if (arg0->unk20 == 0) {
|
||||
arg0->unk20 = 3;
|
||||
}
|
||||
arg0->unk10 = 1;
|
||||
}
|
||||
|
||||
void fn_1_A880(UnkWindowDataStruct *arg0, s32 arg1) {
|
||||
if (arg0->unk20 == 0) {
|
||||
arg0->unk20 = 4;
|
||||
}
|
||||
arg0->unk14 = 1;
|
||||
arg0->unk1C = arg1;
|
||||
}
|
||||
|
||||
static void fn_1_A8A4(void) {
|
||||
UnkWindowDataStruct *temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
|
||||
while (1) {
|
||||
switch (temp_r31->unk20) {
|
||||
case 1:
|
||||
fn_1_A7F0(temp_r31);
|
||||
HuWinExAnimIn(temp_r31->unk04);
|
||||
break;
|
||||
case 2:
|
||||
HuWinExAnimOut(temp_r31->unk04);
|
||||
fn_1_A828(temp_r31);
|
||||
break;
|
||||
case 3:
|
||||
HuWinMesWait(temp_r31->unk04);
|
||||
temp_r31->unk10 = 0;
|
||||
break;
|
||||
case 4:
|
||||
temp_r31->unk1C = HuWinChoiceGet(temp_r31->unk04, temp_r31->unk1C);
|
||||
temp_r31->unk14 = 0;
|
||||
break;
|
||||
}
|
||||
if (temp_r31->unk18 != 0) {
|
||||
HuWinMesSet(temp_r31->unk04, temp_r31->unk18);
|
||||
temp_r31->unk18 = 0;
|
||||
}
|
||||
temp_r31->unk20 = 0;
|
||||
if (temp_r31->unk10 != 0) {
|
||||
temp_r31->unk20 = 3;
|
||||
}
|
||||
if (temp_r31->unk14 != 0) {
|
||||
temp_r31->unk20 = 4;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,63 @@
|
|||
#include "common.h"
|
||||
#include "REL/executor.h"
|
||||
#include "dolphin.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/pad.h"
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
void fn_1_0(void) {
|
||||
s32 lbl_1_data_0 = 100;
|
||||
s32 lbl_1_bss_0[192];
|
||||
|
||||
void fn_1_0(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//fn_1_4
|
||||
// https://decomp.me/scratch/Ii0sV
|
||||
void safMarioEyeDim(s16 id)
|
||||
{
|
||||
ModelData *model = &Hu3DData[id];
|
||||
HsfData *hsf = model->hsfData;
|
||||
HsfMaterial *material = hsf->material;
|
||||
s16 i, j;
|
||||
for(i=0; i<hsf->materialCnt; i++, material++) {
|
||||
for(j=0; j<material->numAttrs; j++) {
|
||||
HsfAttribute *attr = &hsf->attribute[material->attrs[j]];
|
||||
if(strcmp(attr->bitmap->name, "s3c000m1_eyes") == 0 || strcmp(attr->bitmap->name, "mario_eyes") == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(j == material->numAttrs) {
|
||||
material->color[0] *= 0.6f;
|
||||
material->color[1] *= 0.3f;
|
||||
material->color[2] *= 0.3f;
|
||||
material->litColor[0] *= 0.6f;
|
||||
material->litColor[1] *= 0.3f;
|
||||
material->litColor[2] *= 0.3f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// fn_1_288
|
||||
// https://decomp.me/scratch/VQ3CT
|
||||
void safSaveTest(void)
|
||||
{
|
||||
OSTick time_write;
|
||||
OSTick time_read;
|
||||
s16 character = GWPlayerCfg[0].character;
|
||||
SLLoad();
|
||||
time_write = time_read = 0;
|
||||
while(1) {
|
||||
print8(16, 420, 1.5f, "READ TIME %d", OSTicksToMilliseconds(time_read));
|
||||
print8(16, 430, 1.5f, "WRITE TIME %d", OSTicksToMilliseconds(time_write));
|
||||
HuPrcVSleep();
|
||||
if(HuPadBtnDown[0] & PAD_BUTTON_Y) {
|
||||
HuAudCharVoicePlayEntry(character, 282);
|
||||
time_write = OSGetTick();
|
||||
SLSave();
|
||||
time_write = OSGetTick()-time_write;
|
||||
}
|
||||
if(HuPadBtnDown[0] & PAD_BUTTON_X) {
|
||||
time_read = OSGetTick();
|
||||
SLLoad();
|
||||
time_read = OSGetTick()-time_read;
|
||||
}
|
||||
}
|
||||
}
|
||||
1076
src/REL/selmenuDll/main.c
Normal file
1076
src/REL/selmenuDll/main.c
Normal file
File diff suppressed because it is too large
Load diff
2558
src/REL/w01Dll/main.c
Executable file
2558
src/REL/w01Dll/main.c
Executable file
File diff suppressed because it is too large
Load diff
1072
src/REL/w01Dll/mg_coin.c
Executable file
1072
src/REL/w01Dll/mg_coin.c
Executable file
File diff suppressed because it is too large
Load diff
947
src/REL/w01Dll/mg_item.c
Executable file
947
src/REL/w01Dll/mg_item.c
Executable file
|
|
@ -0,0 +1,947 @@
|
|||
#include "REL/w01Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/ui.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
static void fn_1_E100(void);
|
||||
static void fn_1_E154(void);
|
||||
static void fn_1_E2B8(omObjData *arg0);
|
||||
static void fn_1_E44C(omObjData *arg0);
|
||||
static void fn_1_E914(omObjData *arg0);
|
||||
static void fn_1_ECD4(omObjData *arg0);
|
||||
static void fn_1_EEA0(omObjData *arg0, u16 *arg1);
|
||||
static void fn_1_EED8(omObjData *arg0);
|
||||
static void fn_1_F09C(omObjData *arg0);
|
||||
static void fn_1_F348(omObjData *arg0);
|
||||
static void fn_1_F3F8(omObjData *arg0);
|
||||
static void fn_1_F6E8(omObjData *arg0);
|
||||
static void fn_1_F890(omObjData *arg0);
|
||||
static void fn_1_FA1C(omObjData *arg0);
|
||||
static void fn_1_FABC(omObjData *arg0);
|
||||
static void fn_1_FB58(void);
|
||||
static void fn_1_FC3C(omObjData *arg0);
|
||||
static void fn_1_FCEC(void);
|
||||
static void fn_1_FD3C(omObjData *arg0);
|
||||
static void fn_1_FE44(omObjData *arg0);
|
||||
static void fn_1_FED0(omObjData *arg0);
|
||||
static s16 fn_1_1001C(u32 arg0);
|
||||
static void fn_1_101B8(s16 arg0);
|
||||
static void fn_1_10664(omObjData *arg0);
|
||||
static void fn_1_10820(omObjData *arg0);
|
||||
static void fn_1_10AE8(omObjData *arg0);
|
||||
static float fn_1_10BB0(u32 arg0);
|
||||
static void fn_1_10CF0(u32 arg0);
|
||||
static float fn_1_10EB8(Vec *arg0);
|
||||
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
|
||||
static void *lbl_1_bss_818;
|
||||
static Vec lbl_1_bss_80C;
|
||||
static omObjData *lbl_1_bss_7FC[4];
|
||||
static omObjData *lbl_1_bss_7F8;
|
||||
static omObjData *lbl_1_bss_7F4;
|
||||
static omObjData *lbl_1_bss_7F0;
|
||||
static float lbl_1_bss_7EC;
|
||||
static float lbl_1_bss_7E8;
|
||||
static s32 lbl_1_bss_7E4;
|
||||
static Vec lbl_1_bss_7D8;
|
||||
static s16 lbl_1_bss_7D6;
|
||||
static s16 lbl_1_bss_7D4;
|
||||
static s16 lbl_1_bss_7D2;
|
||||
static s16 lbl_1_bss_7D0;
|
||||
static Vec lbl_1_bss_7C4;
|
||||
static s32 lbl_1_bss_7C0_pad;
|
||||
static s32 lbl_1_bss_7BC;
|
||||
static s32 lbl_1_bss_7B8;
|
||||
static s16 lbl_1_bss_7B4;
|
||||
static s32 lbl_1_bss_7B0_pad;
|
||||
static s32 lbl_1_bss_7AC;
|
||||
static s16 lbl_1_bss_7AA;
|
||||
static s16 lbl_1_bss_7A8;
|
||||
static s32 lbl_1_bss_7A4;
|
||||
static AnimData *lbl_1_bss_7A0;
|
||||
|
||||
static s32 lbl_1_data_F08[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 109),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 110),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 111),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 112),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 113),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 114),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 115),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 116),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 118),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 119),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 120),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 121),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 122),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 123)
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_F40[8] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23)
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_F60[8] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 64)
|
||||
};
|
||||
|
||||
void fn_1_D740(s16 *arg0) {
|
||||
s16 sp10[14];
|
||||
s16 sp8[4];
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
s32 var_r28;
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
lbl_1_bss_818 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_W01, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
|
||||
sp8[0] = BoardModelIDGet(lbl_1_bss_6C4[19]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 1);
|
||||
for (i = 1; i < 4; i++) {
|
||||
sp8[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 24));
|
||||
}
|
||||
var_r30 = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i] = omAddObjEx(boardObjMan, 0x165, 2, 0, -1, NULL);
|
||||
if (arg0[i] != -1) {
|
||||
lbl_1_bss_7FC[var_r30++]->work[1] = arg0[i];
|
||||
}
|
||||
}
|
||||
while (var_r30 != 4) {
|
||||
var_r28 = 0;
|
||||
for (i = 0; i < 14; i++) {
|
||||
for (j = 0; j < var_r30; j++) {
|
||||
if (i == lbl_1_bss_7FC[j]->work[1]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j == var_r30) {
|
||||
sp10[var_r28++] = i;
|
||||
}
|
||||
}
|
||||
lbl_1_bss_7FC[var_r30++]->work[1] = sp10[rand8() % var_r28];
|
||||
}
|
||||
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->model[0] = sp8[i];
|
||||
lbl_1_bss_7FC[i]->model[1] = Hu3DModelCreateFile(lbl_1_data_F08[lbl_1_bss_7FC[i]->work[1]]);
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 5) {
|
||||
Hu3DData[lbl_1_bss_7FC[i]->model[1]].unk_F0[1][3] = -50.0f;
|
||||
}
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 11) {
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000001);
|
||||
}
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 4) {
|
||||
Hu3DMotionSpeedSet(lbl_1_bss_7FC[i]->model[1], 0.0f);
|
||||
}
|
||||
Hu3DModelAttrReset(sp8[i], 1);
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 1);
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000002);
|
||||
omSetTra(lbl_1_bss_7FC[i], lbl_1_bss_80C.x, lbl_1_bss_80C.y + 66.0f, lbl_1_bss_80C.z);
|
||||
var_f31 = 90.0f - 90.0f * i + 360.0f * (temp_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
omSetRot(lbl_1_bss_7FC[i], 0.0f, var_f31, 0.0f);
|
||||
lbl_1_bss_7FC[i]->work[0] = Hu3DAnimCreate(lbl_1_bss_818, lbl_1_bss_7FC[i]->model[0], "item01");
|
||||
Hu3DAnimAttrSet(lbl_1_bss_7FC[i]->work[0], 1);
|
||||
lbl_1_bss_7FC[i]->work[2] = i;
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
Hu3DAnmNoSet(lbl_1_bss_7FC[i]->work[0], lbl_1_bss_7FC[i]->work[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_DD84(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (i != 0) {
|
||||
Hu3DModelKill(lbl_1_bss_7FC[i]->model[0]);
|
||||
} else {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 0);
|
||||
Hu3DAnimKill(lbl_1_bss_7FC[i]->work[0]);
|
||||
}
|
||||
Hu3DModelKill(lbl_1_bss_7FC[i]->model[1]);
|
||||
omDelObjEx(boardObjMan, lbl_1_bss_7FC[i]);
|
||||
}
|
||||
if (lbl_1_bss_7A0) {
|
||||
HuSprAnimKill(lbl_1_bss_7A0);
|
||||
lbl_1_bss_7A0 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_DE94(void) {
|
||||
s32 i;
|
||||
|
||||
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->func = fn_1_FED0;
|
||||
}
|
||||
lbl_1_bss_7F4 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_E2B8);
|
||||
lbl_1_bss_7F8 = omAddObjEx(boardObjMan, 0x133, 0, 0, -1, fn_1_E44C);
|
||||
lbl_1_bss_7F8->work[3] = rand8() % 200 + 10;
|
||||
lbl_1_bss_7E4 = GWSystem.player_curr;
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &lbl_1_bss_7C4);
|
||||
lbl_1_bss_7EC = 1.0f;
|
||||
lbl_1_bss_7E8 = 1.0f;
|
||||
lbl_1_bss_7AA = 0;
|
||||
lbl_1_bss_7BC = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F40[GWPlayer[lbl_1_bss_7E4].character]);
|
||||
lbl_1_bss_7B8 = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F60[GWPlayer[lbl_1_bss_7E4].character]);
|
||||
lbl_1_bss_7A0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0));
|
||||
HuSprAnimLock(lbl_1_bss_7A0);
|
||||
lbl_1_bss_7B4 = 0;
|
||||
}
|
||||
|
||||
static void fn_1_E100(void) {
|
||||
lbl_1_bss_7AA = 1;
|
||||
BoardMGExit();
|
||||
HuAudFXPlay(0x40F);
|
||||
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
|
||||
}
|
||||
|
||||
static void fn_1_E154(void) {
|
||||
fn_1_DD84();
|
||||
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7BC);
|
||||
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7B8);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
BoardMGDoneFlagSet(0);
|
||||
}
|
||||
|
||||
static void fn_1_E2B8(omObjData *arg0) {
|
||||
if (lbl_1_bss_7AA == 1 && BoardMGDoneFlagGet() == 1) {
|
||||
fn_1_E154();
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static char *lbl_1_data_F9C[] = {
|
||||
"uma1", "uma2", "uma3", "uma4"
|
||||
};
|
||||
|
||||
static void fn_1_E44C(omObjData *arg0) {
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float temp_f27;
|
||||
float var_f29;
|
||||
float temp_f28;
|
||||
float var_f26;
|
||||
float var_f24;
|
||||
s32 i;
|
||||
|
||||
temp_f28 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f29 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
if (var_f29 >= temp_f28) {
|
||||
var_f29 -= temp_f28;
|
||||
}
|
||||
var_f24 = fmod(var_f29, temp_f28 / 4);
|
||||
if (var_f24 >= temp_f28 / 4 - 30.0f && lbl_1_bss_7B4 == 0) {
|
||||
lbl_1_bss_7B4 = 1;
|
||||
lbl_1_bss_7A8 = 90;
|
||||
}
|
||||
if (lbl_1_bss_7B4 != 0) {
|
||||
lbl_1_bss_7EC *= 0.97f;
|
||||
lbl_1_bss_7A8--;
|
||||
}
|
||||
if (lbl_1_bss_7EC != 1.0f && lbl_1_bss_7A8 == 0) {
|
||||
lbl_1_bss_7EC = 0.0f;
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[0], &spC);
|
||||
var_f26 = PSVECSquareDistance(&sp18, &spC);
|
||||
arg0->work[2] = 0;
|
||||
for (i = 1; i < 4; i++) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[i], &spC);
|
||||
temp_f27 = PSVECSquareDistance(&sp18, &spC);
|
||||
if (temp_f27 < var_f26) {
|
||||
var_f26 = temp_f27;
|
||||
arg0->work[2] = i;
|
||||
}
|
||||
}
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0->work[2]], &lbl_1_bss_7D8);
|
||||
PSVECSubtract(&lbl_1_bss_7D8, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
arg0->trans.x = spC.x;
|
||||
arg0->trans.y = spC.y;
|
||||
arg0->trans.z = spC.z;
|
||||
arg0->rot.x = sqrtf((lbl_1_bss_7D8.x - sp18.x) * (lbl_1_bss_7D8.x - sp18.x) + (lbl_1_bss_7D8.z - sp18.z) * (lbl_1_bss_7D8.z - sp18.z));
|
||||
arg0->rot.y = 10.0f;
|
||||
arg0->rot.z = sp18.y;
|
||||
arg0->scale.x = 0.0f;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
|
||||
arg0->func = fn_1_E914;
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
|
||||
}
|
||||
|
||||
static void fn_1_E914(omObjData *arg0) {
|
||||
Vec spC;
|
||||
s32 i;
|
||||
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &spC);
|
||||
spC.x += arg0->trans.x * arg0->rot.x / 32.760002f;
|
||||
spC.z += arg0->trans.z * arg0->rot.x / 32.760002f;
|
||||
spC.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
|
||||
arg0->scale.x += 1.0f;
|
||||
if (sqrtf((lbl_1_bss_7D8.x - spC.x) * (lbl_1_bss_7D8.x - spC.x) + (lbl_1_bss_7D8.z - spC.z) * (lbl_1_bss_7D8.z - spC.z)) < 2.0f) {
|
||||
spC = lbl_1_bss_7D8;
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10BB0(arg0->work[2]), 0.0f);
|
||||
lbl_1_bss_7EC = 0.05f;
|
||||
lbl_1_bss_7E8 = 0.05f;
|
||||
BoardModelAttrReset(lbl_1_bss_6C4[18], 0x40000002);
|
||||
BoardModelAttrSet(lbl_1_bss_6C4[18], 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->func = fn_1_FED0;
|
||||
}
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7B8, 0.0f, 5.0f, 0x40000001);
|
||||
lbl_1_bss_7D6 = MGSeqCreate(3, 0);
|
||||
BoardMusStart(1, 0xE, 0x7F, 0);
|
||||
arg0->func = fn_1_ECD4;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &spC);
|
||||
}
|
||||
|
||||
static void fn_1_ECD4(omObjData *arg0) {
|
||||
lbl_1_bss_7EC *= 1.05f;
|
||||
lbl_1_bss_7E8 *= 1.05f;
|
||||
if (lbl_1_bss_7EC > 2.0f) {
|
||||
lbl_1_bss_7EC = 2.0f;
|
||||
}
|
||||
if (lbl_1_bss_7E8 > 4.0f) {
|
||||
lbl_1_bss_7E8 = 4.0f;
|
||||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_7D6) == 0) {
|
||||
lbl_1_bss_7EC = 2.0f;
|
||||
lbl_1_bss_7E8 = 4.0f;
|
||||
arg0->func = fn_1_EED8;
|
||||
lbl_1_bss_7D2 = 5;
|
||||
lbl_1_bss_7D0 = 60;
|
||||
lbl_1_bss_7D4 = MGSeqCreate(1, lbl_1_bss_7D2, 0x120, 0x40);
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
|
||||
fn_1_10CF0(arg0->work[2]);
|
||||
}
|
||||
|
||||
static void fn_1_EEA0(omObjData *arg0, u16 *arg1) {
|
||||
*arg1 = 0;
|
||||
if (arg0->work[3] != 0) {
|
||||
arg0->work[3]--;
|
||||
} else {
|
||||
*arg1 |= 0x100;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_EED8(omObjData *arg0) {
|
||||
s16 temp_r29;
|
||||
u16 var_r30;
|
||||
|
||||
fn_1_10CF0(arg0->work[2]);
|
||||
temp_r29 = GWPlayer[lbl_1_bss_7E4].port;
|
||||
if ((lbl_1_bss_7D0 -= 1) == 0) {
|
||||
if ((lbl_1_bss_7D2 -= 1) >= 0) {
|
||||
MGSeqParamSet(lbl_1_bss_7D4, 1, lbl_1_bss_7D2);
|
||||
}
|
||||
lbl_1_bss_7D0 = 60;
|
||||
}
|
||||
if (GWPlayerCfg[lbl_1_bss_7E4].iscom == 1) {
|
||||
fn_1_EEA0(arg0, &var_r30);
|
||||
} else {
|
||||
var_r30 = HuPadBtnDown[temp_r29];
|
||||
}
|
||||
if (lbl_1_bss_7D2 < 0 || (var_r30 & 0x100)) {
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 0.0f);
|
||||
MGSeqParamSet(lbl_1_bss_7D4, 2, -1);
|
||||
arg0->scale.y = 0.0f;
|
||||
arg0->func = fn_1_F09C;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F09C(omObjData *arg0) {
|
||||
float temp_f31;
|
||||
float var_f30;
|
||||
|
||||
temp_f31 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
arg0->scale.y += lbl_1_bss_7E8;
|
||||
if (arg0->scale.y >= temp_f31 - 150.0f) {
|
||||
lbl_1_bss_7E8 *= 0.9745f;
|
||||
if (lbl_1_bss_7E8 < 0.08f) {
|
||||
lbl_1_bss_7E8 = 0.08f;
|
||||
}
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
|
||||
if (arg0->scale.y >= temp_f31) {
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
|
||||
var_f30 = arg0->scale.y - temp_f31 + BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
if (var_f30 > temp_f31) {
|
||||
var_f30 -= temp_f31;
|
||||
}
|
||||
BoardModelMotionTimeSet(lbl_1_bss_6C4[18], var_f30);
|
||||
arg0->work[0] = fn_1_1001C(arg0->work[2]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
|
||||
BoardModelPosSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->trans.x, lbl_1_bss_7FC[arg0->work[0]]->trans.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->trans.z);
|
||||
BoardModelRotSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->rot.x, lbl_1_bss_7FC[arg0->work[0]]->rot.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->rot.z);
|
||||
arg0->work[1] = 60;
|
||||
BoardAudSeqFadeOut(1, 100);
|
||||
arg0->func = fn_1_F348;
|
||||
HuAudFXPlay(0x40A);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F348(omObjData *arg0) {
|
||||
if ((arg0->work[1] / 4) & 1) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
} else {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
|
||||
}
|
||||
if ((arg0->work[1] -= 1) == 0) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
fn_1_101B8(arg0->work[0]);
|
||||
HuAudFXPlay(0x310);
|
||||
arg0->func = fn_1_F3F8;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F3F8(omObjData *arg0) {
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
|
||||
if (lbl_1_bss_7F0->work[0] != 1) {
|
||||
return;
|
||||
}
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
|
||||
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
arg0->trans.x = spC.x;
|
||||
arg0->trans.y = spC.y;
|
||||
arg0->trans.z = spC.z;
|
||||
arg0->rot.x = sqrtf((lbl_1_bss_7C4.x - sp18.x) * (lbl_1_bss_7C4.x - sp18.x) + (lbl_1_bss_7C4.z - sp18.z) * (lbl_1_bss_7C4.z - sp18.z));
|
||||
arg0->scale.y = 20.0f + 40.0f * (arg0->rot.x / 445.0f);
|
||||
arg0->rot.y = 0.016666668f * (arg0->scale.y / 2) * (arg0->scale.y / 2);
|
||||
arg0->rot.z = sp18.y;
|
||||
arg0->scale.x = 0.0f;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
|
||||
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10EB8(&spC), 0.0f);
|
||||
arg0->func = fn_1_F6E8;
|
||||
}
|
||||
|
||||
static void fn_1_F6E8(omObjData *arg0) {
|
||||
Vec sp8;
|
||||
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp8);
|
||||
sp8.x += arg0->trans.x * arg0->rot.x / arg0->scale.y;
|
||||
sp8.z += arg0->trans.z * arg0->rot.x / arg0->scale.y;
|
||||
sp8.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
|
||||
arg0->scale.x += 1.0f;
|
||||
if (sp8.y < lbl_1_bss_80C.y || arg0->scale.x >= arg0->scale.y) {
|
||||
sp8.y = lbl_1_bss_80C.y;
|
||||
BoardCameraMotionStart(BoardPlayerModelGet(lbl_1_bss_7E4), NULL, 700.0f, -1.0f);
|
||||
BoardPlayerMotionStart(lbl_1_bss_7E4, 2, 0x40000001);
|
||||
arg0->func = fn_1_F890;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &sp8);
|
||||
}
|
||||
|
||||
static void fn_1_F890(omObjData *arg0) {
|
||||
Vec sp8;
|
||||
|
||||
BoardPlayerRotGet(lbl_1_bss_7E4, &sp8);
|
||||
if (sp8.y == 0.0f) {
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0x40000001);
|
||||
lbl_1_bss_7F0->work[0] = 0;
|
||||
lbl_1_bss_7F0->func = fn_1_10820;
|
||||
arg0->func = fn_1_FA1C;
|
||||
} else if (sp8.y > 180.0f) {
|
||||
if (360.0f - sp8.y < 3.0f) {
|
||||
sp8.y = 0.0f;
|
||||
} else {
|
||||
sp8.y += 3.0f;
|
||||
}
|
||||
} else {
|
||||
if (sp8.y < 3.0f) {
|
||||
sp8.y = 0.0f;
|
||||
} else {
|
||||
sp8.y -= 3.0f;
|
||||
}
|
||||
}
|
||||
BoardPlayerRotSetV(lbl_1_bss_7E4, &sp8);
|
||||
}
|
||||
|
||||
static void fn_1_FA1C(omObjData *arg0) {
|
||||
if (lbl_1_bss_7F0->work[0] == 1) {
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7BC, 0.0f, 10.0f, 0);
|
||||
arg0->work[0] = 30;
|
||||
lbl_1_bss_7A4 = HuAudSStreamPlay(2);
|
||||
arg0->func = fn_1_FABC;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FABC(omObjData *arg0) {
|
||||
Process *var_r30;
|
||||
|
||||
if (arg0->work[0] == 0) {
|
||||
if (HuAudSStreamStatGet(lbl_1_bss_7A4) == 0) {
|
||||
var_r30 = HuPrcCreate(fn_1_FB58, 0x2004, 0x1000, 0);
|
||||
var_r30->user_data = arg0;
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
} else {
|
||||
arg0->work[0]--;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FB58(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
BoardWinCreate(2, MAKE_MESSID(10, 6), 0);
|
||||
BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_7F0->work[1]), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0);
|
||||
lbl_1_bss_7F0->work[0] = 0;
|
||||
HuAudFXPlay(0x30D);
|
||||
HuAudFXFadeOut(lbl_1_bss_7AC, 1000);
|
||||
lbl_1_bss_7F0->func = fn_1_10AE8;
|
||||
temp_r31->func = fn_1_FC3C;
|
||||
HuPrcKill(NULL);
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FC3C(omObjData *arg0) {
|
||||
Process *var_r31;
|
||||
|
||||
if (lbl_1_bss_7F0->work[0] == 1) {
|
||||
BoardPlayerItemAdd(lbl_1_bss_7E4, lbl_1_bss_7F0->work[1]);
|
||||
omVibrate(lbl_1_bss_7E4, 12, 6, 6);
|
||||
var_r31 = HuPrcCreate(fn_1_FCEC, 0x2004, 0x1000, 0);
|
||||
var_r31->user_data = arg0;
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FCEC(void) {
|
||||
omObjData *var_r31;
|
||||
|
||||
BoardWinCreate(2, MAKE_MESSID(10, 7), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
var_r31 = HuPrcCurrentGet()->user_data;
|
||||
var_r31->func = fn_1_FD3C;
|
||||
HuPrcKill(NULL);
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FD3C(omObjData *arg0) {
|
||||
BoardStatusShowSetAll(1);
|
||||
BoardCameraTargetModelSet(lbl_1_bss_6C4[21]);
|
||||
BoardCameraOffsetSet(0.0f, 0.0f, 0.0f);
|
||||
BoardCameraXRotZoomSet(1200.0f, -45.0f);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 1.0f);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[0]);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[1]);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[2]);
|
||||
omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_7F0);
|
||||
arg0->func = fn_1_FE44;
|
||||
}
|
||||
|
||||
static void fn_1_FE44(omObjData *arg0) {
|
||||
if (BoardStatusStopCheck(lbl_1_bss_7E4) && BoardCameraMotionIsDone()) {
|
||||
lbl_1_bss_7AA = 1;
|
||||
BoardMGExit();
|
||||
HuAudFXPlay(0x40F);
|
||||
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FED0(omObjData *arg0) {
|
||||
float temp_f30;
|
||||
float var_f31;
|
||||
float var_f29;
|
||||
|
||||
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f31 = 90.0f - 90.0f * arg0->work[2] + 360.0f * (temp_f30 / var_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
omSetRot(arg0, 0.0f, var_f31, 0.0f);
|
||||
}
|
||||
|
||||
static s16 fn_1_1001C(u32 arg0) {
|
||||
float var_f29;
|
||||
float var_f28;
|
||||
float temp_f27;
|
||||
float temp_f26;
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
|
||||
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
temp_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (var_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += var_f29;
|
||||
}
|
||||
var_f28 = 360.0f * (var_f30 / var_f29);
|
||||
var_f31 = var_f28 - temp_f27;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
var_f31 /= 90.0f;
|
||||
return var_f31;
|
||||
}
|
||||
|
||||
static void fn_1_101B8(s16 arg0) {
|
||||
omObjData *var_r31;
|
||||
float *var_r30;
|
||||
float var_f27;
|
||||
float temp_f26;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f28;
|
||||
float var_f31;
|
||||
|
||||
var_r31 = lbl_1_bss_7F0 = omAddObjEx(boardObjMan, 0x165, 3, 0, -1, fn_1_10664);
|
||||
var_r31->model[0] = lbl_1_bss_7FC[arg0]->model[1];
|
||||
Hu3DModelAttrReset(var_r31->model[0], 1);
|
||||
lbl_1_bss_7F0->work[1] = lbl_1_bss_7FC[arg0]->work[1];
|
||||
lbl_1_bss_7F0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 3 * sizeof(float), MEMORY_DEFAULT_NUM);
|
||||
var_r30 = lbl_1_bss_7F0->data;
|
||||
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
omSetSca(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
|
||||
var_f31 = 45.0f + var_f27 + 90.0f * arg0;
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
temp_f30 = lbl_1_bss_80C.x - 100.0 * cos(var_f31 * M_PI / 180.0);
|
||||
temp_f28 = lbl_1_bss_80C.z - 100.0 * sin(var_f31 * M_PI / 180.0);
|
||||
temp_f29 = lbl_1_bss_80C.y + 66.0f + 1.0f;
|
||||
omSetTra(var_r31, temp_f30, temp_f29, temp_f28);
|
||||
var_r31->work[0] = 0;
|
||||
var_r30[0] = 0.1f;
|
||||
var_r30[2] = 20.0f;
|
||||
var_r30[1] = 0.0f;
|
||||
var_r31->model[1] = Hu3DParticleCreate(lbl_1_bss_7A0, 200);
|
||||
var_r31->model[2] = Hu3DParticleCreate(lbl_1_bss_7A0, 100);
|
||||
Hu3DParticleHookSet(var_r31->model[1], fn_1_11064);
|
||||
Hu3DParticleHookSet(var_r31->model[2], fn_1_11484);
|
||||
Hu3DParticleColSet(var_r31->model[1], 0xFF, 0xFF, 0);
|
||||
Hu3DParticleColSet(var_r31->model[2], 0xFF, 0xFF, 0);
|
||||
Hu3DModelPosSet(var_r31->model[1], 0.0f, 0.0f, 0.0f);
|
||||
Hu3DModelPosSet(var_r31->model[2], temp_f30, temp_f29, temp_f28);
|
||||
Hu3DParticleBlendModeSet(var_r31->model[1], 1);
|
||||
Hu3DParticleBlendModeSet(var_r31->model[2], 1);
|
||||
Hu3DModelLayerSet(var_r31->model[1], 3);
|
||||
Hu3DModelLayerSet(var_r31->model[2], 3);
|
||||
lbl_1_bss_7AC = HuAudFXPlay(0x35F);
|
||||
}
|
||||
|
||||
static void fn_1_10664(omObjData *arg0) {
|
||||
float *temp_r31;
|
||||
float var_f31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
var_f31 = temp_r31[0];
|
||||
if (arg0->work[0] == 0) {
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
} else {
|
||||
temp_r31[0] += 0.025f;
|
||||
}
|
||||
arg0->trans.y += temp_r31[2];
|
||||
temp_r31[2] -= 1.0f;
|
||||
if (temp_r31[2] < 0.0f && arg0->trans.y < lbl_1_bss_80C.y + 66.0f + 1.0f + 90.0f) {
|
||||
arg0->work[0] = 1;
|
||||
}
|
||||
omSetSca(arg0, var_f31, var_f31, var_f31);
|
||||
} else {
|
||||
arg0->trans.y += sin(temp_r31[1] * M_PI / 180.0);
|
||||
temp_r31[1] += 4.0f;
|
||||
if (temp_r31[1] >= 360.0f) {
|
||||
temp_r31[1] -= 360.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_10820(omObjData *arg0) {
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float var_f28;
|
||||
float *temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
if (arg0->work[0] == 0) {
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp24);
|
||||
sp18.x = arg0->trans.x;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = arg0->trans.z;
|
||||
sp24.y = 0.0f;
|
||||
PSVECSubtract(&sp24, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
var_f28 = sqrtf((sp24.x - sp18.x) * (sp24.x - sp18.x) + (sp24.z - sp18.z) * (sp24.z - sp18.z));
|
||||
if (var_f28 < 8.0f) {
|
||||
arg0->trans.x = sp24.x;
|
||||
arg0->trans.z = sp24.z;
|
||||
arg0->work[0] = 1;
|
||||
} else {
|
||||
arg0->trans.x += 8.0f * spC.x;
|
||||
arg0->trans.z += 8.0f * spC.z;
|
||||
}
|
||||
}
|
||||
arg0->trans.y += sin(temp_r30[1] * M_PI / 180.0);
|
||||
temp_r30[1] += 4.0f;
|
||||
if (temp_r30[1] >= 360.0f) {
|
||||
temp_r30[1] -= 360.0f;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_10AE8(omObjData *arg0) {
|
||||
float *temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (arg0->work[0] == 0) {
|
||||
temp_r31[0] -= 0.016666668f;
|
||||
if (temp_r31[0] <= 0.0f) {
|
||||
temp_r31[0] = 0.0f;
|
||||
arg0->work[0] = 1;
|
||||
HuAudFXStop(lbl_1_bss_7AC);
|
||||
}
|
||||
arg0->trans.y -= 2.1666667f;
|
||||
}
|
||||
omSetSca(arg0, temp_r31[0], temp_r31[0], temp_r31[0]);
|
||||
}
|
||||
|
||||
static float fn_1_10BB0(u32 arg0) {
|
||||
float var_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += temp_f29;
|
||||
}
|
||||
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
return var_f31;
|
||||
}
|
||||
|
||||
static void fn_1_10CF0(u32 arg0) {
|
||||
float var_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
float var_f28;
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0], &lbl_1_bss_7D8);
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &lbl_1_bss_7D8);
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += temp_f29;
|
||||
}
|
||||
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
var_f28 = var_f31;
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, var_f28, 0.0f);
|
||||
}
|
||||
|
||||
static float fn_1_10EB8(Vec *arg0) {
|
||||
float var_f31;
|
||||
|
||||
if (arg0->x || arg0->z) {
|
||||
if (arg0->x == 0.0f) {
|
||||
if (arg0->z > 0.0f) {
|
||||
return 0.0f;
|
||||
} else {
|
||||
return 180.0f;
|
||||
}
|
||||
}
|
||||
if (arg0->z == 0.0f) {
|
||||
if (arg0->x > 0.0f) {
|
||||
return 90.0f;
|
||||
} else {
|
||||
return 270.0f;
|
||||
}
|
||||
}
|
||||
var_f31 = 180.0 * (atan2(arg0->z, arg0->x) / M_PI);
|
||||
if (arg0->z < 0.0f) {
|
||||
var_f31 = 90.0f - var_f31;
|
||||
} else {
|
||||
var_f31 = 90.0f - var_f31;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
}
|
||||
return var_f31;
|
||||
}
|
||||
return -1.0f;
|
||||
}
|
||||
|
||||
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
HsfanimStruct01 *var_r31;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f31;
|
||||
s32 var_r28;
|
||||
s32 i;
|
||||
|
||||
if (particle->unk_34 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
temp_f31 = lbl_1_bss_7F0->scale.x;
|
||||
for (i = 0; i < 30; i++) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
||||
if (var_r31->unk2C == 0.0f) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (var_r28 != particle->unk_30) {
|
||||
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
|
||||
temp_f29 = 0.003921569f * (frand() & 0xFF) * 70.0f * temp_f31;
|
||||
var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sin(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cos(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk34.y = lbl_1_bss_7F0->trans.y + temp_f31 * (-30.0f + 0.003921569f * (frand() & 0xFF) * 60.0f);
|
||||
var_r31->unk08.x = 0.5f + 0.003921569f * (frand() & 0xFF) * 3.0f;
|
||||
var_r31->unk08.y = 0.3f + 0.003921569f * (frand() & 0xFF) * 2.0f;
|
||||
var_r31->unk40.a = 0xB4;
|
||||
var_r31->unk2C = 15.0f * temp_f31;
|
||||
}
|
||||
}
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
var_r31->unk34.y -= var_r31->unk08.x;
|
||||
var_r31->unk2C -= var_r31->unk08.y;
|
||||
if (var_r31->unk2C <= 0.0f) {
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
HsfanimStruct01 *var_r31;
|
||||
float temp_f29;
|
||||
float temp_f30;
|
||||
float temp_f31;
|
||||
s32 var_r28;
|
||||
s32 var_r29;
|
||||
|
||||
if (particle->unk_34 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
if (particle->unk_00 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
||||
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
|
||||
temp_f31 = 0.003921569f * (frand() & 0xFF) * 50.0f;
|
||||
var_r31->unk08.x = temp_f31 * cos(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk08.y = 2.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
|
||||
var_r31->unk08.z = temp_f31 * sin(temp_f30 * M_PI / 180.0);
|
||||
temp_f29 = 60.0f + 20.0f * (frand() & 0xFF) * 0.003921569f;
|
||||
temp_f31 = 4.0f + 5.0f * (frand() & 0xFF) * 0.003921569f;
|
||||
var_r31->unk14.x = temp_f31 * sin(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk14.y = temp_f31 * sin(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk14.z = temp_f31 * cos(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk20 = 1.0f;
|
||||
var_r31->unk40.a = 0xB4;
|
||||
var_r31->unk2C = 9.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
|
||||
}
|
||||
particle->unk_00 = 1;
|
||||
}
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
var_r31->unk34.x = var_r31->unk08.x + var_r31->unk14.x * var_r31->unk20;
|
||||
var_r31->unk34.z = var_r31->unk08.z + var_r31->unk14.z * var_r31->unk20;
|
||||
var_r31->unk34.y = var_r31->unk08.y + var_r31->unk14.y * var_r31->unk20 - 0.2f * var_r31->unk20 * var_r31->unk20;
|
||||
var_r31->unk2C -= 0.25f;
|
||||
var_r31->unk20 += 1.0f;
|
||||
if (var_r31->unk2C <= 0.0f) {
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1148
src/REL/w03Dll/condor.c
Normal file
1148
src/REL/w03Dll/condor.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,61 +1,60 @@
|
|||
#include "dolphin.h"
|
||||
#include "REL/executor.h"
|
||||
#include "game/process.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/process.h"
|
||||
#include "game/wipe.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "game/board/lottery.h"
|
||||
#include "game/board/boo_house.h"
|
||||
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/shop.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/star.h"
|
||||
#include "game/object.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/map_object.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/hsfman.h"
|
||||
|
||||
s32 BoardModelPosSet(s16, f32, f32, f32);
|
||||
s32 BoardModelMotionStart(s16, s32, u32);
|
||||
|
||||
void fn_8005B150(void*, void*);
|
||||
void fn_1_740(void);
|
||||
//function signatures
|
||||
void fn_1_E0(void);
|
||||
s32 fn_1_2930(s32 arg0);
|
||||
void fn_1_884(void);
|
||||
void fn_1_740(void);
|
||||
void fn_1_8F0(void);
|
||||
s32 fn_1_910(void);
|
||||
s32 fn_1_A74(void);
|
||||
void fn_1_AF8(void);
|
||||
void fn_1_DEC(void);
|
||||
void fn_1_10B0(void);
|
||||
s32 fn_1_12C8(void);
|
||||
s32 fn_8006DDE8(s16, f32);
|
||||
void fn_1_10E4(omObjData* arg0);
|
||||
extern Process *boardObjMan;
|
||||
s32 fn_1_12C8(void);
|
||||
s32 fn_1_2930(s32 arg0);
|
||||
|
||||
typedef void (*VoidFunc)(void);
|
||||
extern const VoidFunc _ctors[];
|
||||
extern const VoidFunc _dtors[];
|
||||
|
||||
//Map Objects
|
||||
s16 lbl_1_bss_C[MAPOBJ_MAX];
|
||||
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
s16 BoardModelCreate(s32, s32*, s32);
|
||||
void BoardModelKill(s16);
|
||||
void BoardModelMotionStartEndSet(s16, s32, s32);
|
||||
void Hu3DFogSet(f32, f32, u8, u8, u8);
|
||||
void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6);
|
||||
u8 WipeStatGet(void);
|
||||
|
||||
//DATA
|
||||
w03StructUnk0 lbl_1_data_0[] = {
|
||||
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0004)},
|
||||
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0005)},
|
||||
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0006)},
|
||||
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)},
|
||||
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)},
|
||||
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000A)},
|
||||
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000A)},
|
||||
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0010)},
|
||||
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0011)},
|
||||
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0012)},
|
||||
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)},
|
||||
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)},
|
||||
BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
|
||||
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 4)},
|
||||
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 5)},
|
||||
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 6)},
|
||||
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
|
||||
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
|
||||
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
|
||||
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
|
||||
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 16)},
|
||||
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 17)},
|
||||
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 18)},
|
||||
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
|
||||
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
|
||||
};
|
||||
|
||||
s16 lbl_1_data_1E0 = -1;
|
||||
|
|
@ -80,12 +79,12 @@ w03StructUnk1 lbl_1_data_1EC = {
|
|||
};
|
||||
|
||||
s32 lbl_1_data_20C[] = {
|
||||
MAKE_DATA_NUM(0x0077, 0x001C),
|
||||
DATA_MAKE_NUM(DATADIR_W03, 0x001C),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_214[] = {
|
||||
MAKE_DATA_NUM(0x0002, 0x000E),
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 0x000E),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
|
|
@ -108,10 +107,7 @@ s32 lbl_1_data_26C[] = {
|
|||
0x0000044C, 0x0000043A, 0x0000043A, 0x0000044E
|
||||
};
|
||||
|
||||
s32 pad_27C[] = {0};
|
||||
|
||||
//BSS
|
||||
s16 lbl_1_bss_C[14];
|
||||
s32 lbl_1_bss_8;
|
||||
omObjData* lbl_1_bss_4;
|
||||
w03State* lbl_1_bss_0;
|
||||
|
|
@ -124,55 +120,63 @@ void BoardCreate(void) {
|
|||
f32 var_f31;
|
||||
s32 var_r31;
|
||||
s32 var_r31_2;
|
||||
w03StructUnk0* temp_r30;
|
||||
BoardMapObject* temp_r30;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_0 = (w03State*)&GWSystem.board_data;
|
||||
lbl_1_bss_0->unk3 = 0;
|
||||
BoardSpaceInit(0x770000);
|
||||
|
||||
lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E0, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001);
|
||||
|
||||
lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E8, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelLayerSet(lbl_1_data_1E8, 2);
|
||||
|
||||
lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
|
||||
|
||||
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
|
||||
|
||||
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
|
||||
|
||||
for (i = 0; i < 12; i++) {
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &lbl_1_data_0[i];
|
||||
if (temp_r30->datanum != -1) {
|
||||
if (temp_r30->data_num != -1) {
|
||||
if ((i == 10) || (i == 11)) {
|
||||
var_r29 = lbl_1_data_214;
|
||||
} else {
|
||||
var_r29 = NULL;
|
||||
}
|
||||
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->datanum, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->unk_00);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->unk_0C);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->unk_18);
|
||||
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->data_num, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
BoardModelMotionStart(lbl_1_bss_C[10], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[11], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
|
||||
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000002);
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0x40000002);
|
||||
|
||||
fn_1_3058();
|
||||
fn_1_6494();
|
||||
fn_1_7ABC();
|
||||
fn_1_9A7C();
|
||||
|
||||
BoardLightHookSet(&fn_1_884, &fn_1_8F0);
|
||||
BoardSpaceWalkEventFuncSet(&fn_1_910);
|
||||
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_A74);
|
||||
|
|
@ -185,6 +189,7 @@ void BoardCreate(void) {
|
|||
BoardJunctionMaskSet(0x3000);
|
||||
fn_1_CF4();
|
||||
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0x40000001);
|
||||
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = lbl_1_data_1EC.unk_10;
|
||||
var_f31 = lbl_1_data_1EC.unk_14;
|
||||
|
|
@ -194,10 +199,12 @@ void BoardCreate(void) {
|
|||
var_f31 = lbl_1_data_1EC.unk_04;
|
||||
fn_1_63F4(1);
|
||||
}
|
||||
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f30, var_f31);
|
||||
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 0x64);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 100);
|
||||
fn_1_785C();
|
||||
|
||||
if (lbl_1_bss_0->unk2 != 0) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) {
|
||||
|
|
@ -206,6 +213,7 @@ void BoardCreate(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn_1_DEC();
|
||||
}
|
||||
|
||||
|
|
@ -215,22 +223,27 @@ void BoardDestroy(void) {
|
|||
fn_1_10B0();
|
||||
fn_1_9A9C();
|
||||
fn_1_7B58();
|
||||
|
||||
for (i = 0; i < 0x0C; i++) {
|
||||
BoardModelKill(lbl_1_bss_C[i]);
|
||||
lbl_1_bss_C[i] = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E6 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E6);
|
||||
lbl_1_data_1E6 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E4 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E4);
|
||||
lbl_1_data_1E4 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E0 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E0);
|
||||
lbl_1_data_1E0 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E2 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E2);
|
||||
lbl_1_data_1E2 = -1;
|
||||
|
|
@ -255,6 +268,7 @@ s32 fn_1_910(void) {
|
|||
cur_player_index = GWSystem.player_curr;
|
||||
space = GWPlayer[cur_player_index].space_curr;
|
||||
temp_r3 = BoardSpaceFlagGet(0, space);
|
||||
|
||||
if (temp_r3 & 0xC000) {
|
||||
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].bowser_suit)))) {
|
||||
return 0;
|
||||
|
|
@ -270,18 +284,21 @@ s32 fn_1_910(void) {
|
|||
|
||||
return fn_1_309C();
|
||||
}
|
||||
|
||||
if (temp_r3 & 0x200) {
|
||||
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].bowser_suit)) != 0)) {
|
||||
return 0;
|
||||
}
|
||||
return fn_1_675C();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 fn_1_A74(void) {
|
||||
s16 space = GWPlayer[GWSystem.player_curr].space_curr;
|
||||
u32 var = BoardSpaceFlagGet(0, space) & 0x600000;
|
||||
|
||||
if (var + -0x200000 == 0) {
|
||||
fn_1_7BA8();
|
||||
return;
|
||||
|
|
@ -316,8 +333,10 @@ void fn_1_B5C(s32 arg0) {
|
|||
var_f28 = lbl_1_data_1EC.unk_04;
|
||||
fn_1_63F4(1);
|
||||
}
|
||||
|
||||
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f30);
|
||||
|
||||
while (1) {
|
||||
temp = BoardModelMotionTimeGet(lbl_1_bss_C[0]);
|
||||
if (temp >= var_f29) {
|
||||
|
|
@ -325,9 +344,10 @@ void fn_1_B5C(s32 arg0) {
|
|||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelAttrSet(lbl_1_bss_C[0], 0x40000001);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f31);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[0], (s32) var_f31, (s32) var_f28);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f31, var_f28);
|
||||
}
|
||||
|
||||
void fn_1_CF4(void) {
|
||||
|
|
@ -372,7 +392,8 @@ void fn_1_DEC(void) {
|
|||
BoardCameraPosGet(&sp20);
|
||||
BoardCameraDirGet(&sp14);
|
||||
HuAudFXListnerSetEX(&sp20, &sp14, 4800.0f, 36000.0f, 0.0f, 1200.0f, 1200.0f);
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_22C); i++) {
|
||||
sp8.x = lbl_1_data_22C[i].x - 3600.0f;
|
||||
sp8.y = lbl_1_data_22C[i].y;
|
||||
sp8.z = lbl_1_data_22C[i].z - 3600.0f;
|
||||
|
|
@ -415,6 +436,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
w03UnkStruct2* temp_r29;
|
||||
|
||||
temp_r29 = OM_GET_WORK_PTR(arg0, w03UnkStruct2);
|
||||
|
||||
if (temp_r29->unk0 != 0 || (BoardIsKill() != 0)) {
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_21C); i++) {
|
||||
if (lbl_1_data_21C[i] != -1) {
|
||||
|
|
@ -426,6 +448,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
BoardCameraDirGet(&sp8);
|
||||
BoardCameraTargetGet(&sp14);
|
||||
|
||||
|
|
@ -438,6 +461,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
}
|
||||
|
||||
sp14.y += 2000.0f;
|
||||
|
||||
if (_CheckFlag(0x10010) == 0) {
|
||||
if (lbl_1_bss_8 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
|
|
@ -447,7 +471,6 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_8 = 0;
|
||||
}
|
||||
|
||||
HuAudFXListnerUpdate(&sp14, &sp8);
|
||||
}
|
||||
|
||||
f32 const padMain = 0.0f;
|
||||
}
|
||||
|
|
@ -1,13 +1,16 @@
|
|||
#include "dolphin.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/object.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
extern u16 HuPadBtnDown[4];
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
|
||||
//structs
|
||||
typedef struct someBits3 { //make sure this is defined correctly
|
||||
/* 0x00 */ struct {
|
||||
u8 unk00_bit0 : 1;
|
||||
|
|
@ -61,56 +64,12 @@ void fn_1_9474(s32 arg0);
|
|||
void fn_1_97F8(s32 arg0);
|
||||
void fn_1_9A1C(unkTemp2* arg0);
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
extern s16 MGSeqCreate(s32, ...);
|
||||
u8 MGSeqStatGet(s16);
|
||||
float BoardModelMotionTimeGet(s16 model);
|
||||
float BoardModelMotionMaxTimeGet(s16 model);
|
||||
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s32 lbl_1_data_450 = -1;
|
||||
s16 lbl_1_data_454 = -1;
|
||||
s16 lbl_1_data_456 = -1;
|
||||
s16 lbl_1_data_458 = -1;
|
||||
s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1};
|
||||
char phei_str[] = "phei";
|
||||
s32 lbl_1_data_470[] = {
|
||||
0x005F0066,
|
||||
0x001A0066,
|
||||
0x006D0066,
|
||||
0x008A0066,
|
||||
0x00850066,
|
||||
0x00110066,
|
||||
0x000D0066,
|
||||
0x00810066
|
||||
};
|
||||
|
||||
s32 lbl_1_data_490[] = {
|
||||
0x005F0067,
|
||||
0x001A0067,
|
||||
0x006D0067,
|
||||
0x008A0067,
|
||||
0x00850067,
|
||||
0x00110067,
|
||||
0x000D0067,
|
||||
0x00810067
|
||||
};
|
||||
|
||||
s8 lbl_1_data_4B0 = -1;
|
||||
|
||||
s32 lbl_1_data_4B4[] = {
|
||||
0x00000440,
|
||||
0x00000441,
|
||||
0x00000442,
|
||||
0x00000443,
|
||||
0x00000444
|
||||
};
|
||||
|
||||
s8 lbl_1_data_4C8[] = {1, 5, 10, 15, 20, 20};
|
||||
|
||||
//BSS
|
||||
char lbl_1_bss_150[0x30];
|
||||
|
|
@ -120,10 +79,9 @@ omObjData* lbl_1_bss_148;
|
|||
omObjData* lbl_1_bss_144;
|
||||
Process* lbl_1_bss_140;
|
||||
|
||||
|
||||
void fn_1_7ABC(void) {
|
||||
lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0);
|
||||
BoardModelHookSet(lbl_1_bss_C[7], phei_str, lbl_1_data_456);
|
||||
BoardModelHookSet(lbl_1_bss_C[7], "phei", lbl_1_data_456);
|
||||
BoardModelMotionStart(lbl_1_data_456, 2, 0x40000002);
|
||||
BoardModelRotYSet(lbl_1_data_456, -45.0f);
|
||||
}
|
||||
|
|
@ -180,56 +138,69 @@ s32 fn_1_7D18(s32 arg0) {
|
|||
f32 arctan;
|
||||
|
||||
BoardWinCreateChoice(2, 0x160015, 2, 0);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
if (BoardWinChoiceGet() != 0) {
|
||||
BoardWinCreate(2, 0x160018, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 200.0f;
|
||||
sp14.z = 0.0f;
|
||||
sp8.x = -10.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
|
||||
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 21);
|
||||
space = GWPlayer[arg0].space_curr;
|
||||
temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardSpacePosGet(0, temp_r28, &sp38);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
PSVECNormalize(&sp20, &sp20);
|
||||
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793));
|
||||
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI));
|
||||
HuPrcSleep(0x1E);
|
||||
model = BoardModelIDGet(lbl_1_bss_C[7]);
|
||||
Hu3DModelObjPosGet(model, phei_str, &sp38);
|
||||
Hu3DModelObjPosGet(model, "phei", &sp38);
|
||||
|
||||
if (GWPlayer[arg0].character == 5) {
|
||||
var_f31 = 54.000004f;
|
||||
} else {
|
||||
var_f31 = 39.0f;
|
||||
}
|
||||
sp38.x = sp38.x + (var_f31 * sin((3.141592653589793 * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
sp38.z = sp38.z + (var_f31 * cos((3.141592653589793 * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
|
||||
sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
|
||||
BoardPlayerPosGet(arg0, &sp38);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
arctan = atan2(sp20.x, sp20.z) / 3.141592653589793 * 180.0;
|
||||
arctan = atan2(sp20.x, sp20.z) / M_PI * 180.0;
|
||||
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotBlendSet(arg0, -0x2D, 7);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -239,17 +210,43 @@ void fn_1_8140(s32 arg0) {
|
|||
fn_1_81E0(arg0);
|
||||
BoardMusStart(1, 0x16, 0x7F, 0);
|
||||
temp_r31 = MGSeqCreate(3, 0);
|
||||
|
||||
while (MGSeqStatGet(temp_r31)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_9384();
|
||||
fn_1_84A8(0);
|
||||
|
||||
while (lbl_1_bss_144) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_91B8();
|
||||
}
|
||||
|
||||
s32 lbl_1_data_470[] = {
|
||||
0x005F0066,
|
||||
0x001A0066,
|
||||
0x006D0066,
|
||||
0x008A0066,
|
||||
0x00850066,
|
||||
0x00110066,
|
||||
0x000D0066,
|
||||
0x00810066
|
||||
};
|
||||
|
||||
s32 lbl_1_data_490[] = {
|
||||
0x005F0067,
|
||||
0x001A0067,
|
||||
0x006D0067,
|
||||
0x008A0067,
|
||||
0x00850067,
|
||||
0x00110067,
|
||||
0x000D0067,
|
||||
0x00810067
|
||||
};
|
||||
|
||||
void fn_1_81E0(s32 arg0) {
|
||||
Point3d sp8;
|
||||
omObjData* temp_r3;
|
||||
|
|
@ -337,10 +334,12 @@ void fn_1_8530(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_r31->unk1 != 0) {
|
||||
temp_r31->unk1--;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (temp_r31->unk00_bit1) {
|
||||
case 0:
|
||||
fn_1_8698(arg0, temp_r31);
|
||||
|
|
@ -376,13 +375,15 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
arg1->unk_04 = -1;
|
||||
arg1->unk00_bit1 = 1;
|
||||
temp = BoardModelMotionTimeGet(lbl_1_bss_C[7]);
|
||||
|
||||
if (temp == 0.0f) {
|
||||
temp = 1.0f;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_14E > 30) {
|
||||
lbl_1_bss_14E = 30;
|
||||
}
|
||||
//temp2 =
|
||||
|
||||
OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //??
|
||||
BoardModelAttrReset(lbl_1_data_456, 0x40000002);
|
||||
BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002);
|
||||
|
|
@ -399,9 +400,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
arg0->rot.y = 16.666666f * arg0->rot.x;
|
||||
arg0->scale.x = BoardModelMotionMaxTimeGet(lbl_1_bss_C[7]);
|
||||
HuWinDispOff(lbl_1_data_454);
|
||||
BoardCameraMotionStartEx(-1, 0, 0, 1900.0f, -1.0f, 0x15);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 1900.0f, -1.0f, 21);
|
||||
return;
|
||||
}
|
||||
|
||||
MGSeqParamSet(arg1->unk_04, 1, arg1->unk2);
|
||||
arg1->unk3 = 60;
|
||||
}
|
||||
|
|
@ -409,8 +411,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
var_r26 = GWPlayer[arg1->unk00_bit5].port;
|
||||
var_r28 = 0;
|
||||
|
||||
if ((GWPlayer[arg1->unk00_bit5].com) != 0) {
|
||||
temp_r27 = BoardRandMod(100);
|
||||
|
||||
switch (GWPlayer[arg1->unk00_bit5].diff) {
|
||||
case 0:
|
||||
if (temp_r27 < 12) {
|
||||
|
|
@ -434,6 +438,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
} else {
|
||||
var_r28 = HuPadBtnDown[var_r26] & 0x100;
|
||||
}
|
||||
|
||||
if ((var_r28 & 0x100)) {
|
||||
arg0->trans.y += 0.5f;
|
||||
if (arg0->trans.y > 2.0f) {
|
||||
|
|
@ -456,17 +461,30 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((lbl_1_data_450 != -1) && (HuAudFXStatusGet(lbl_1_data_450) == 0)) {
|
||||
lbl_1_data_450 = -1;
|
||||
}
|
||||
|
||||
arg0->trans.x += arg0->trans.y;
|
||||
|
||||
if (arg0->trans.x > 3.0f) {
|
||||
arg0->trans.x = 3.0f;
|
||||
}
|
||||
|
||||
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, arg0->trans.x);
|
||||
BoardModelMotionSpeedSet(lbl_1_data_456, arg0->trans.x);
|
||||
}
|
||||
|
||||
s8 lbl_1_data_4B0 = -1;
|
||||
s32 lbl_1_data_4B4[] = {
|
||||
0x00000440,
|
||||
0x00000441,
|
||||
0x00000442,
|
||||
0x00000443,
|
||||
0x00000444
|
||||
};
|
||||
|
||||
void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
|
||||
Point3d spC;
|
||||
f32 temp_f31;
|
||||
|
|
@ -475,24 +493,28 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
BoardModelPosGet(lbl_1_data_456, &spC);
|
||||
spC.y += 1.6666666f;
|
||||
|
||||
if (spC.y >= (arg0->trans.z + arg0->rot.y)) {
|
||||
spC.y = arg0->trans.z + arg0->rot.y;
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[10], 0.0f);
|
||||
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, 0.0f);
|
||||
BoardModelAttrSet(lbl_1_bss_C[7], 0x40000002);
|
||||
BoardModelAttrSet(lbl_1_data_456, 0x40000002);
|
||||
arg1->unk00_bit1 = 2;
|
||||
arg1->unk00_bit1 = 2;
|
||||
arg1->unk1 = 0x3C;
|
||||
arg1->unk2 = 0;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_456, &spC);
|
||||
temp_f30 = arg0->scale.x * ((spC.y - arg0->trans.z) / 500.0f);
|
||||
OSf32tos8(&temp_f30, &temp_r27);
|
||||
temp_r27 = temp_r27 / 30;
|
||||
|
||||
if (lbl_1_data_4B0 != temp_r27) {
|
||||
lbl_1_data_4B0 = temp_r27;
|
||||
HuAudFXPlay(lbl_1_data_4B4[temp_r27]);
|
||||
}
|
||||
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[7], temp_f30);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[10], 0.2f * temp_f30);
|
||||
BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30);
|
||||
|
|
@ -512,9 +534,12 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
|
|||
}
|
||||
BoardAudSeqFadeOut(1, 0x3E8);
|
||||
}
|
||||
|
||||
OSu8tof32(&arg1->unk2, &temp_f31);
|
||||
BoardModelPosGet(lbl_1_data_456, &sp8);
|
||||
|
||||
sp8.y = (sp8.y + (-0.08166666666666668 * temp_f31 * temp_f31));
|
||||
|
||||
if (sp8.y < arg0->trans.z) {
|
||||
sp8.y = arg0->trans.z;
|
||||
arg1->unk00_bit1 = 3;
|
||||
|
|
@ -528,6 +553,7 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
|
|||
HuAudFXPlay(0x449);
|
||||
BoardAudSeqPause(0, 0, 0x3E8);
|
||||
}
|
||||
|
||||
arg1->unk2 += 1;
|
||||
BoardModelPosSetV(lbl_1_data_456, &sp8);
|
||||
}
|
||||
|
|
@ -537,27 +563,32 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
BoardModelRotGet(lbl_1_data_456, &sp8);
|
||||
arg0->trans.y = BoardDAngleCalc(arg0->trans.y + arg0->trans.z);
|
||||
|
||||
if (arg0->trans.y <= 2.0f) {
|
||||
if (arg0->trans.y >= -2.0) {
|
||||
arg0->trans.x *= 0.5f;
|
||||
if (arg0->trans.x <= 1.0f) {
|
||||
arg0->trans.y = 0.0f;
|
||||
BoardRotateDiceNumbers(arg1->unk00_bit5);
|
||||
BoardPlayerIdleSet(arg1->unk00_bit5);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[10], 1, 0.0f, 10.0f, 0x40000001U);
|
||||
arg1->unk00_bit0 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
sp8.z = arg0->trans.x * sin((3.141592653589793 * arg0->trans.y) / 180.0);
|
||||
|
||||
sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0);
|
||||
BoardModelRotSetV(lbl_1_data_456, &sp8);
|
||||
}
|
||||
|
||||
s8 lbl_1_data_4C8[] = {1, 5, 10, 15, 20, 20};
|
||||
|
||||
void fn_1_91B8(void) {
|
||||
s8 temp_r3;
|
||||
|
||||
if (lbl_1_bss_14E == 0) {
|
||||
lbl_1_bss_14E = 1;
|
||||
}
|
||||
|
||||
temp_r3 = lbl_1_bss_14E / 6;
|
||||
lbl_1_bss_14C = lbl_1_data_4C8[temp_r3];
|
||||
}
|
||||
|
|
@ -575,14 +606,16 @@ void fn_1_9230(s32 arg0) {
|
|||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardCameraViewSet(1);
|
||||
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp14, &sp20, &sp8);
|
||||
rotY = atan2(sp8.x, sp8.z) / 3.141592653589793 * 180.0;
|
||||
rotY = atan2(sp8.x, sp8.z) / M_PI * 180.0;
|
||||
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelRotYSet(lbl_1_bss_C[10], 0.0f);
|
||||
BoardCameraMotionWait();
|
||||
}
|
||||
|
|
@ -607,18 +640,24 @@ void fn_1_9474(s32 arg0) {
|
|||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardPlayerMotBlendSet(arg0, 0, 0xF);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_97F8(arg0);
|
||||
|
||||
while (lbl_1_bss_148) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U);
|
||||
HuPrcSleep(8);
|
||||
|
||||
while (BoardPlayerMotionEndCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardWinCreate(2, 0x160018U, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
|
@ -637,6 +676,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
s32 temp;
|
||||
|
||||
temp_r29 = OM_GET_WORK_PTR(arg0, unkTemp2);
|
||||
|
||||
if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
|
||||
fn_1_9A1C(temp_r29);
|
||||
HuMemDirectFree((void*)temp_r29->unk_0C);
|
||||
|
|
@ -644,6 +684,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
var_r30 = temp_r29->unk_0C;
|
||||
|
||||
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
|
||||
|
|
@ -656,6 +697,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
temp_r29->unk00_bit0 = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
var_r25 = 0;
|
||||
for (i = 0; i < 20; i++) {
|
||||
var_r30 = &temp_r29->unk_0C[i];
|
||||
|
|
@ -670,7 +712,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
var_r30->unk8.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
|
||||
if (var_r30->unk8.y < temp_r29->unk8) {
|
||||
var_r30->unk8.y = temp_r29->unk8;
|
||||
CharModelCreateCoinParticle(1, &var_r30->unk8);
|
||||
CharModelCoinEffectCreate(1, &var_r30->unk8);
|
||||
BoardModelVisibilitySet(var_r30->unk_02, 0);
|
||||
HuAudFXPlay(7);
|
||||
BoardPlayerCoinsAdd(temp_r29->unk4, 1);
|
||||
|
|
@ -703,6 +745,7 @@ void fn_1_97F8(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp8);
|
||||
temp_r30->unk8 = (80.0f + sp8.y);
|
||||
memset(temp_r30->unk_0C, 0, 0x190);
|
||||
|
||||
for (i = 0; i < lbl_1_bss_14C; i++) {
|
||||
if (i == 0) {
|
||||
var_f31 = 0.0f;
|
||||
|
|
@ -711,8 +754,8 @@ void fn_1_97F8(s32 arg0) {
|
|||
}
|
||||
temp_r31 = &temp_r30->unk_0C[i];
|
||||
temp_r31->unk0 = 1;
|
||||
temp_r31->unk8.x = sp8.x + (50.0f * sin((3.141592653589793 * var_f31) / 180.0));
|
||||
temp_r31->unk8.z = sp8.z + (50.0f * cos((3.141592653589793 * var_f31) / 180.0));
|
||||
temp_r31->unk8.x = sp8.x + (50.0f * sin((M_PI * var_f31) / 180.0));
|
||||
temp_r31->unk8.z = sp8.z + (50.0f * cos((M_PI * var_f31) / 180.0));
|
||||
temp_r31->unk8.y = 600.0f + sp8.y + (500.0f * BoardRandFloat());
|
||||
temp_r31->unk1 = 0;
|
||||
temp_r31->unk4 = BoardRandFloat() * 360.0f;
|
||||
|
|
@ -729,5 +772,3 @@ void fn_1_9A1C(unkTemp2* arg0) {
|
|||
BoardModelKill(temp->unk_02);
|
||||
}
|
||||
}
|
||||
|
||||
char mg_pad[] = "\0\0\0\0\0\0";
|
||||
|
|
@ -4,20 +4,20 @@
|
|||
#include "game/data.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/board/player.h"
|
||||
#include "math.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "dolphin/os/OSFastCast.h"
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
|
||||
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
typedef struct someBits {
|
||||
/* 0x00 */ struct {
|
||||
|
|
@ -53,36 +53,18 @@ typedef struct w03UnkMG {
|
|||
/* 0x10 */ s16 unk_10;
|
||||
/* 0x12 */ s16 unk_12;
|
||||
/* 0x14 */ s16 unk_14;
|
||||
/* 0x16 */ s16 unk_16;
|
||||
/* 0x16 */ s16 unk_16;
|
||||
} w03UnkMG;
|
||||
|
||||
//external symbols
|
||||
extern Process *boardMainProc;
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
extern Process *boardObjMan;
|
||||
|
||||
extern u16 HuPadBtnDown[4];
|
||||
|
||||
//function signatures
|
||||
s32 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
|
||||
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
|
||||
void BoardCameraQuakeSet(s32 duration, float strength);
|
||||
s16 MGSeqCreate(s32, ...);
|
||||
u8 MGSeqStatGet(s16);
|
||||
f32 BoardPlayerRotYGet(s32);
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
|
||||
s32 BoardModelScaleGet(s16 model, Vec *dst);
|
||||
s32 BoardModelMotionTimeSet(s16 model, float time);
|
||||
s32 BoardDAngleCalcRange(float *value, float min, float range);
|
||||
u32 BoardRandMod(u32 value);
|
||||
void BoardModelMotionStartEndSet(s16, s32, s32);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
s32 BoardModelPosGet(s16 model, Vec *dst);
|
||||
s16 Hu3DMotionShiftIDGet(s16 arg0);
|
||||
f32 BoardPlayerMotionTimeGet(s32);
|
||||
s32 frand(void);
|
||||
|
||||
void fn_1_BE30(s32 arg0, ParticleData* arg1);
|
||||
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
void fn_1_BDAC(void);
|
||||
void fn_1_BC7C(s16 arg0);
|
||||
void fn_1_BBF8(void);
|
||||
|
|
@ -113,7 +95,7 @@ s32 fn_1_9CF4(s32 arg0);
|
|||
void fn_1_9F78(void);
|
||||
void fn_1_9FE4(void);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s16 lbl_1_data_4D8 = -1;
|
||||
s16 lbl_1_data_4DA = -1;
|
||||
s16 lbl_1_data_4DC = -1;
|
||||
|
|
@ -121,29 +103,25 @@ s32 lbl_1_data_4E0 = -1;
|
|||
s16 lbl_1_data_4E4 = -1;
|
||||
s8 lbl_1_data_4E6[] = {1, 1, 3, 3, 2, 2, 2, 1, 2, 3, 0, 4, 5, 0};
|
||||
|
||||
char itemString[] = "item";
|
||||
char item1String[] = "item1";
|
||||
char item2String[] = "item2";
|
||||
|
||||
char* lbl_1_data_508[] = {
|
||||
itemString, item1String, item2String
|
||||
"item", "item1", "item2"
|
||||
};
|
||||
|
||||
s32 lbl_1_data_514[] = {
|
||||
MAKE_DATA_NUM(7, 0x6D),
|
||||
MAKE_DATA_NUM(7, 0x6E),
|
||||
MAKE_DATA_NUM(7, 0x6F),
|
||||
MAKE_DATA_NUM(7, 0x70),
|
||||
MAKE_DATA_NUM(7, 0x71),
|
||||
MAKE_DATA_NUM(7, 0x72),
|
||||
MAKE_DATA_NUM(7, 0x73),
|
||||
MAKE_DATA_NUM(7, 0x74),
|
||||
MAKE_DATA_NUM(7, 0x76),
|
||||
MAKE_DATA_NUM(7, 0x77),
|
||||
MAKE_DATA_NUM(7, 0x78),
|
||||
MAKE_DATA_NUM(7, 0x79),
|
||||
MAKE_DATA_NUM(7, 0x7A),
|
||||
MAKE_DATA_NUM(7, 0x7B),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x6D),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x6E),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x6F),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x70),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x71),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x72),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x73),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x74),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x76),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x77),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x78),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x79),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x7A),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 0x7B),
|
||||
};
|
||||
|
||||
//BSS
|
||||
|
|
@ -166,37 +144,46 @@ void fn_1_9AA0(void) {
|
|||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
|
||||
|
||||
while (lbl_1_bss_180 != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
void fn_1_9B30(void) {
|
||||
fn_1_BDAC();
|
||||
|
||||
if (lbl_1_bss_188) {
|
||||
lbl_1_bss_188;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_184) {
|
||||
OM_GET_WORK_PTR(lbl_1_bss_184, someBits2)->unk00_bit0 = 1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4E0 != -1) {
|
||||
HuAudFXStop(lbl_1_data_4E0);
|
||||
lbl_1_data_4E0 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4DC != -1) {
|
||||
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC);
|
||||
lbl_1_data_4DC = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4DA != -1) {
|
||||
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA);
|
||||
lbl_1_data_4DA = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4D8 != -1) {
|
||||
HuWinKill(lbl_1_data_4D8);
|
||||
lbl_1_data_4D8 = -1;
|
||||
}
|
||||
lbl_1_bss_180 = 0U;
|
||||
|
||||
lbl_1_bss_180 = 0;
|
||||
}
|
||||
|
||||
void fn_1_9C8C(void) {
|
||||
|
|
@ -204,10 +191,12 @@ void fn_1_9C8C(void) {
|
|||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
lbl_1_data_4E0 = -1;
|
||||
|
||||
if (fn_1_9CF4(temp_r31) != 0) {
|
||||
fn_1_A44C(temp_r31);
|
||||
fn_1_A5E0(temp_r31);
|
||||
}
|
||||
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
|
|
@ -226,37 +215,46 @@ s32 fn_1_9CF4(s32 arg0) {
|
|||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardWinCreateChoice(2, 0x16001A, 2, 0);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
|
||||
if (BoardWinChoiceGet() != 0) {
|
||||
BoardWinCreate(2, 0x16001B, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardWinKill();
|
||||
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 200.0f;
|
||||
sp14.z = 0.0f;
|
||||
sp8.x = -10.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
|
||||
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 21);
|
||||
spaceCur = GWPlayer[arg0].space_curr;
|
||||
temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardSpacePosGet(0, temp_r29, &sp38);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
PSVECNormalize(&sp20, &sp20);
|
||||
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793)));
|
||||
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)));
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
HuPrcSleep(0x3C);
|
||||
fn_1_B0A4(arg0);
|
||||
fn_1_9F78();
|
||||
|
|
@ -284,26 +282,31 @@ void fn_1_9FE4(void) {
|
|||
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
|
||||
sp18.y = sp24.y;
|
||||
PSVECSubtract(&sp18, &sp24, &spC);
|
||||
temp_f30 = (atan2(spC.z, spC.x) / 3.141592653589793 * 180.0);
|
||||
temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0);
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], temp_f30);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[11], 2.0f);
|
||||
|
||||
spC.x /= 20.0f;
|
||||
spC.z /= 20.0f;
|
||||
spC.y = 0.0f;
|
||||
sp30 = sp24;
|
||||
var_f31 = 0.0f;
|
||||
|
||||
while (var_f31 < 20.0f) {
|
||||
PSVECAdd(&sp30, &spC, &sp30);
|
||||
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
|
||||
HuPrcVSleep();
|
||||
var_f31 += 1.0f;
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 1, 0x3E8);
|
||||
HuAudFXPlay(0x450);
|
||||
HuAudFXPlay(0x362);
|
||||
|
|
@ -311,23 +314,28 @@ void fn_1_9FE4(void) {
|
|||
fn_1_B8E8(1);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005);
|
||||
PSVECSubtract(&sp24, &sp30, &spC);
|
||||
|
||||
spC.x /= 60.0f;
|
||||
spC.z /= 60.0f;
|
||||
spC.y = 0.0f;
|
||||
var_f31 = 0.0f;
|
||||
|
||||
while (var_f31 < 60.0f) {
|
||||
PSVECAdd(&sp30, &spC, &sp30);
|
||||
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
|
||||
HuPrcVSleep();
|
||||
var_f31 += 1.0f;
|
||||
}
|
||||
|
||||
temp_f30 = 0.0f;
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001);
|
||||
}
|
||||
|
||||
|
|
@ -338,34 +346,44 @@ void fn_1_A44C(s32 arg0) {
|
|||
|
||||
BoardMusStart(1, 0x17, 0x7F, 0);
|
||||
temp_r30 = MGSeqCreate(3, 0);
|
||||
|
||||
while (MGSeqStatGet(temp_r30) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_A7A0(arg0);
|
||||
fn_1_A6B0();
|
||||
fn_1_ACD8(1);
|
||||
|
||||
while (fn_1_AE20() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
temp_r29 = fn_1_BBC4() + 0x80000;
|
||||
BoardWinCreate(2, 0x16001C, 2);
|
||||
BoardWinInsertMesSet(temp_r29, 0);
|
||||
BoardWinWait();
|
||||
fn_1_B8E8(4);
|
||||
|
||||
while (fn_1_BB48() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
omVibrate(arg0, 0xC, 6, 6);
|
||||
BoardPlayerItemAdd(arg0, fn_1_BBC4());
|
||||
fn_1_ACD8(3);
|
||||
temp_r28 = HuAudSStreamPlay(2);
|
||||
|
||||
while (HuAudSStreamStatGet(temp_r28) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqPause(0, 0, 0x3E8);
|
||||
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
|
||||
while (lbl_1_bss_188) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
HuPrcSleep(0x1E);
|
||||
BoardWinCreate(2, 0x16001D, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -382,7 +400,7 @@ void fn_1_A5E0(s32 arg0) {
|
|||
BoardSpacePosGet(0, spaceCur, &sp8);
|
||||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardCameraViewSet(1);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -400,7 +418,7 @@ void fn_1_A6B0(void) {
|
|||
lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0);
|
||||
HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f);
|
||||
HuWinMesSpeedSet(lbl_1_data_4D8, 0);
|
||||
HuWinMesSet(lbl_1_data_4D8, 0x16001FU);
|
||||
HuWinMesSet(lbl_1_data_4D8, 0x16001F);
|
||||
}
|
||||
|
||||
void fn_1_A7A0(s32 arg0) {
|
||||
|
|
@ -429,12 +447,15 @@ void fn_1_A8AC(s32 arg0) {
|
|||
BoardModelPosGet(lbl_1_bss_C[9], &sp8);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
sp8.y = sp14.y;
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
playerYRot = BoardPlayerRotYGet(arg0) + 180.0f;
|
||||
BoardPlayerMotBlendSet(arg0, playerYRot, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, playerYRot, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -455,6 +476,7 @@ void fn_1_A994(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_r31->unk00_bit6 == 0) {
|
||||
if (temp_r31->unk2 != 0) {
|
||||
temp_r31->unk2--;
|
||||
|
|
@ -468,6 +490,7 @@ void fn_1_A994(omObjData* arg0) {
|
|||
temp_r31->unk2 = 0x3CU;
|
||||
}
|
||||
}
|
||||
|
||||
switch (temp_r31->unk00_bit1) {
|
||||
case 1:
|
||||
fn_1_AB18(arg0, temp_r31);
|
||||
|
|
@ -532,9 +555,10 @@ void fn_1_ACD8(s32 arg0) {
|
|||
|
||||
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
|
||||
temp_r31->unk00_bit1 = arg0;
|
||||
|
||||
switch (arg0) {
|
||||
case 0:
|
||||
BoardRotateDiceNumbers(temp_r31->unk00_bit4);
|
||||
BoardPlayerIdleSet(temp_r31->unk00_bit4);
|
||||
return;
|
||||
case 2:
|
||||
temp_r31->unk00_bit6 = 1;
|
||||
|
|
@ -568,6 +592,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
|
|||
temp_r29 = lbl_1_data_4E6[arg1[0]];
|
||||
temp_r28 = lbl_1_data_4E6[arg1[1]];
|
||||
temp_r30 = lbl_1_data_4E6[arg1[2]];
|
||||
|
||||
if (temp_r29 > temp_r28) {
|
||||
if (temp_r29 > temp_r30) {
|
||||
var_r31 = 0;
|
||||
|
|
@ -583,6 +608,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
|
|||
} else {
|
||||
var_r31 = 0;
|
||||
}
|
||||
|
||||
return var_r31;
|
||||
}
|
||||
|
||||
|
|
@ -594,6 +620,7 @@ u32 fn_1_AF24(s32 arg0) {
|
|||
s8 temp_r0_2;
|
||||
|
||||
spC = 0;
|
||||
|
||||
switch (GWPlayer[arg0].diff) {
|
||||
case 3:
|
||||
var_r30 = 0;
|
||||
|
|
@ -652,8 +679,8 @@ void fn_1_B0A4(s32 arg0) {
|
|||
temp_r30->unk00_bit1 = 0;
|
||||
temp_r30->unk00_bit4 = arg0;
|
||||
|
||||
for (i = 0; i < 3;) {
|
||||
spC[i] = BoardRandMod(14);
|
||||
for (i = 0; i < ARRAY_COUNT(spC);) {
|
||||
spC[i] = BoardRandMod(14);
|
||||
if ((spC[i] != 10) && (spC[i] != 13)) {
|
||||
for (j = 0; j < i; j++) {
|
||||
if (spC[i] == spC[j]) {
|
||||
|
|
@ -671,19 +698,22 @@ void fn_1_B0A4(s32 arg0) {
|
|||
|
||||
fn_1_BBF8();
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(spC); i++) {
|
||||
temp_r29 = spC[i];
|
||||
temp_r30->unk3[i] = temp_r29;
|
||||
temp_r30->unk_06[i] = BoardModelCreate(lbl_1_data_514[temp_r29], NULL, 0);
|
||||
BoardModelHookSet(lbl_1_bss_C[9], lbl_1_data_508[i], temp_r30->unk_06[i]);
|
||||
BoardModelMotionSpeedSet(temp_r30->unk_06[i], 0.0f);
|
||||
if (temp_r29 == 0xB) {
|
||||
|
||||
if (temp_r29 == 11) {
|
||||
BoardModelMotionStart(temp_r30->unk_06[i], 0, 0x40000001);
|
||||
}
|
||||
|
||||
if (temp_r29 == 5) {
|
||||
PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f);
|
||||
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
|
||||
}
|
||||
|
||||
if ((temp_r29 == 6) || (temp_r29 == 7)) {
|
||||
PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f);
|
||||
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
|
||||
|
|
@ -696,6 +726,7 @@ void fn_1_B350(omObjData* arg0) {
|
|||
someBits2* temp_r31;
|
||||
|
||||
temp_r31 = (someBits2*)&arg0->work[0];
|
||||
|
||||
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
|
||||
BoardModelHookReset(lbl_1_bss_C[9]);
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
|
@ -794,7 +825,7 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) {
|
|||
BoardModelPosSetV(temp_r29, &sp8);
|
||||
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
|
||||
BoardModelScaleGet(temp_r29, &sp14);
|
||||
sp14.x = sp14.y = sp14.z = cos(3.141592653589793 * temp_f0 / 180.0);
|
||||
sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0);
|
||||
BoardModelScaleSetV(temp_r29, &sp14);
|
||||
arg1->unk1 += 4;
|
||||
return;
|
||||
|
|
@ -817,6 +848,7 @@ void fn_1_B8E8(s32 arg0) {
|
|||
|
||||
temp_r31 = (someBits2*)&lbl_1_bss_184->work[0];
|
||||
temp_r31->unk00_bit1 = arg0;
|
||||
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
temp_f31 = 0.31666666f;
|
||||
|
|
@ -855,7 +887,7 @@ void fn_1_BB74(s8* arg0) {
|
|||
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(bits->unk3); i++) {
|
||||
arg0[i] = bits->unk3[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -876,7 +908,7 @@ void fn_1_BBF8(void) {
|
|||
void fn_1_BC7C(s16 arg0) {
|
||||
ParticleData* particle;
|
||||
|
||||
lbl_1_bss_190 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, 2));
|
||||
lbl_1_bss_190 = HuSprAnimReadFile(0x120000);
|
||||
HuSprAnimLock(lbl_1_bss_190);
|
||||
lbl_1_data_4E4 = Hu3DParticleCreate(lbl_1_bss_190, 100);
|
||||
Hu3DParticleHookSet(lbl_1_data_4E4, fn_1_BE30);
|
||||
|
|
@ -899,40 +931,39 @@ void fn_1_BDAC(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void fn_1_BE30(s32 arg0, ParticleData* arg1) {
|
||||
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
Point3d sp8;
|
||||
|
||||
f32 temp_f30;
|
||||
f32 temp_f29;
|
||||
f32 temp_f31;
|
||||
HsfanimStruct01* var_r31;
|
||||
s32 i, j;
|
||||
|
||||
if (arg1->unk_34 == 0U) {
|
||||
var_r31 = arg1->unk_48;
|
||||
for (i = 0; i < arg1->unk_30; i++, var_r31++) {
|
||||
if (particle->unk_34 == 0U) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
arg1->unk_00 = 0;
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
|
||||
BoardModelScaleGet(arg1->unk_02, &sp8);
|
||||
BoardModelScaleGet(particle->unk_02, &sp8);
|
||||
temp_f31 = sp8.x;
|
||||
BoardModelPosGet(arg1->unk_02, &sp8);
|
||||
BoardModelPosGet(particle->unk_02, &sp8);
|
||||
|
||||
for (i = 0; i < 0x16; i++) {
|
||||
var_r31 = arg1->unk_48;
|
||||
for (j = 0; j < arg1->unk_30; j++, var_r31++) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (j = 0; j < particle->unk_30; j++, var_r31++) {
|
||||
if (0.0f == var_r31->unk2C) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j != arg1->unk_30) {
|
||||
if (j != particle->unk_30) {
|
||||
temp_f30 = 360.0f * (0.003921569f * (frand() & 0xFF));
|
||||
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((3.141592653589793 * temp_f30) / 180.0)));
|
||||
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((3.141592653589793 * temp_f30) / 180.0)));
|
||||
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0)));
|
||||
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0)));
|
||||
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (frand() & 0xFF))))));
|
||||
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
|
|
@ -940,9 +971,10 @@ void fn_1_BE30(s32 arg0, ParticleData* arg1) {
|
|||
var_r31->unk2C = (15.0f * temp_f31);
|
||||
}
|
||||
}
|
||||
var_r31 = arg1->unk_48;
|
||||
|
||||
var_r31 = particle->unk_48;
|
||||
|
||||
for (i = 0; i < arg1->unk_30; i++, var_r31++) {
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
if (0.0f != var_r31->unk2C) {
|
||||
var_r31->unk34.y = (var_r31->unk34.y - var_r31->unk08.x);
|
||||
var_r31->unk2C = (var_r31->unk2C - var_r31->unk08.y);
|
||||
|
|
|
|||
|
|
@ -1,26 +1,12 @@
|
|||
#include "dolphin.h"
|
||||
#include "game/object.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/hsfdraw.h"
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
s16 BoardModelIDGet(s16 model);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
float BoardModelMotionTimeGet(s16 model);
|
||||
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
|
||||
void BoardPlayerPosSet(s32, f32, f32, f32);
|
||||
s32 BoardModelHookSet(s16 model, char *name, s16 hook);
|
||||
|
||||
|
||||
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
|
||||
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
extern s16 boardPlayerMdl[4];
|
||||
|
||||
//BSS
|
||||
char lbl_1_bss_130[8];
|
||||
omObjData* lbl_1_bss_12C;
|
||||
s16 lbl_1_bss_128;
|
||||
|
|
@ -46,7 +32,7 @@ typedef struct unkWorkStruct {
|
|||
f32 unk_04;
|
||||
} unkWorkStruct;
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s32 lbl_1_data_368[] = {
|
||||
0x00000105, 0x00000145, 0x00000185,
|
||||
0x000001C5, 0x00000205, 0x00000245,
|
||||
|
|
@ -63,9 +49,91 @@ s32 lbl_1_data_390[] = {
|
|||
-1
|
||||
};
|
||||
|
||||
char itemhook_RString[] = "itemhook_R";
|
||||
char hei01String[] = "hei01";
|
||||
char ikadaString[] = "ikada";
|
||||
void fn_1_63F4(s32 arg0) {
|
||||
Vec spC;
|
||||
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
|
||||
work->unk_04 = 0.0f;
|
||||
|
||||
BoardModelPosGet(lbl_1_data_388, &spC);
|
||||
if (arg0 != 0) {
|
||||
spC.y = -185.0f;
|
||||
} else {
|
||||
spC.y = 10.0f;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_388, &spC);
|
||||
}
|
||||
|
||||
void fn_1_6494(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
unkWorkStruct* temp_r31;
|
||||
|
||||
lbl_1_data_388 = BoardModelCreate(0x77000E, NULL, 0);
|
||||
lbl_1_data_38C = BoardModelCreate(0x77000F, NULL, 0);
|
||||
lbl_1_data_38A = BoardModelCreate(0x2000D, &lbl_1_data_390[0], 0);
|
||||
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
|
||||
BoardModelHookSet(lbl_1_data_38A, "itemhook_R", lbl_1_data_38C);
|
||||
BoardModelHookSet(lbl_1_data_388, "hei01", lbl_1_data_38A);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
|
||||
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp14);
|
||||
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
temp_r31->temp1 = 0;
|
||||
temp_r31->unk_04 = 0.0f;
|
||||
lbl_1_bss_124 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_6698(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
|
||||
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
|
||||
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s16 fn_1_675C(void) {
|
||||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
|
||||
|
||||
while (lbl_1_bss_120 != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
return lbl_1_bss_128;
|
||||
}
|
||||
|
||||
void fn_1_67F8(void) {
|
||||
s32 temp_r31;
|
||||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
lbl_1_bss_128 = 0;
|
||||
|
||||
if (fn_1_6898(temp_r31) != 0) {
|
||||
fn_1_6F9C(temp_r31);
|
||||
fn_1_6B98(temp_r31);
|
||||
fn_1_735C(temp_r31);
|
||||
lbl_1_bss_128 = 1;
|
||||
}
|
||||
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraMotionWait();
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
void fn_1_6884(void) {
|
||||
lbl_1_bss_120 = 0;
|
||||
}
|
||||
|
||||
typedef struct unkPos {
|
||||
s32 x;
|
||||
|
|
@ -82,87 +150,6 @@ unkPos lbl_1_data_3B8[6] = {
|
|||
{101, 999, 20},
|
||||
};
|
||||
|
||||
void fn_1_63F4(s32 arg0) {
|
||||
Vec spC;
|
||||
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
|
||||
work->unk_04 = 0.0f;
|
||||
BoardModelPosGet(lbl_1_data_388, &spC);
|
||||
if (arg0 != 0) {
|
||||
spC.y = -185.0f;
|
||||
} else {
|
||||
spC.y = 10.0f;
|
||||
}
|
||||
BoardModelPosSetV(lbl_1_data_388, &spC);
|
||||
}
|
||||
|
||||
void fn_1_6494(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
unkWorkStruct* temp_r31;
|
||||
|
||||
lbl_1_data_388 = BoardModelCreate(0x77000E, NULL, 0);
|
||||
lbl_1_data_38C = BoardModelCreate(0x77000F, NULL, 0);
|
||||
lbl_1_data_38A = BoardModelCreate(0x2000D, &lbl_1_data_390[0], 0);
|
||||
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
|
||||
BoardModelHookSet(lbl_1_data_38A, itemhook_RString, lbl_1_data_38C);
|
||||
BoardModelHookSet(lbl_1_data_388, hei01String, lbl_1_data_38A);
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), ikadaString, &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
|
||||
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp14);
|
||||
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
temp_r31->temp1 = 0;
|
||||
temp_r31->unk_04 = 0.0f;
|
||||
lbl_1_bss_124 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_6698(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), ikadaString, &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
|
||||
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
|
||||
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s16 fn_1_675C(void) {
|
||||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
|
||||
while ((u32) lbl_1_bss_120 != 0U) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
return lbl_1_bss_128;
|
||||
}
|
||||
|
||||
void fn_1_67F8(void) {
|
||||
s32 temp_r31;
|
||||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
lbl_1_bss_128 = 0;
|
||||
if (fn_1_6898(temp_r31) != 0) {
|
||||
fn_1_6F9C(temp_r31);
|
||||
fn_1_6B98(temp_r31);
|
||||
fn_1_735C(temp_r31);
|
||||
lbl_1_bss_128 = 1;
|
||||
}
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraMotionWait();
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
void fn_1_6884(void) {
|
||||
lbl_1_bss_120 = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_6898(s32 arg0) {
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
|
|
@ -173,23 +160,26 @@ s32 fn_1_6898(s32 arg0) {
|
|||
s32 i, j;
|
||||
s32 temp, temp2;
|
||||
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
BoardCameraViewSet(2);
|
||||
BoardCameraMotionWait();
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), hei01String, &sp20);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / 3.141592653589793);
|
||||
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI);
|
||||
BoardCameraTargetModelSet(lbl_1_data_388);
|
||||
BoardPlayerMotBlendSet(arg0, temp_f31, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp_f31, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardCameraTargetModelSet(-1);
|
||||
BoardWinCreate(2, 0x160009, 2);
|
||||
BoardWinWait();
|
||||
temp_r3 = BoardPlayerCoinsGet(arg0);
|
||||
|
||||
if (temp_r3 < 5) {
|
||||
BoardWinCreate(2, 0x16000A, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -197,7 +187,7 @@ s32 fn_1_6898(s32 arg0) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
for (var_r27 = i = 0; i < 6; i++) {
|
||||
for (var_r27 = i = 0; i < ARRAY_COUNT(lbl_1_data_3B8); i++) {
|
||||
temp = lbl_1_data_3B8[i].x;
|
||||
temp2 = lbl_1_data_3B8[i].y;
|
||||
if (temp_r3 >= temp) {
|
||||
|
|
@ -207,17 +197,22 @@ s32 fn_1_6898(s32 arg0) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(lbl_1_bss_130, "%d", var_r27);
|
||||
|
||||
j = 0;
|
||||
while (j == 0) {
|
||||
BoardWinCreateChoice(2, 0x16000B, 2, 0);
|
||||
BoardWinInsertMesSet(lbl_1_bss_130, 2);
|
||||
BoardWinAttrSet(0x10);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
fn_1_77E4(arg0);
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
switch (BoardWinChoiceGet()) {
|
||||
case 0:
|
||||
j = 1;
|
||||
|
|
@ -232,11 +227,13 @@ s32 fn_1_6898(s32 arg0) {
|
|||
BoardViewMapExec(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < var_r27; i++) {
|
||||
BoardPlayerCoinsAdd(arg0, -1);
|
||||
HuAudFXPlay(0xE);
|
||||
HuPrcSleep(6);
|
||||
}
|
||||
|
||||
HuAudFXPlay(0xF);
|
||||
BoardWinCreate(2, 0x0016000C, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -244,9 +241,7 @@ s32 fn_1_6898(s32 arg0) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
float BoardModelRotYGet(s16 model);
|
||||
s32 BoardDAngleCalcRange(float *value, float min, float range);
|
||||
float BoardModelRotYGet(s16 model);
|
||||
|
||||
void fn_1_6B98(s32 arg0) {
|
||||
Vec sp30;
|
||||
|
|
@ -262,17 +257,20 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0);
|
||||
sp8 = BoardModelRotYGet(lbl_1_data_38A);
|
||||
temp_f31 = sp8 + 180.0f;
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_38A, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelPosGet(lbl_1_data_388, &sp24);
|
||||
BoardSpaceFlagPosGet(0, 0x100, &sp30);
|
||||
sp18.x = sp30.x + (400.0 * sin(1.5707963267948966));
|
||||
sp18.z = sp30.z + (400.0 * cos(1.5707963267948966));
|
||||
sp18.x = sp30.x + (400.0 * sin(M_PI / 2));
|
||||
sp18.z = sp30.z + (400.0 * cos(M_PI / 2));
|
||||
sp18.y = sp24.y;
|
||||
PSVECSubtract(&sp18, &sp24, &spC);
|
||||
spC.x = spC.x / 120.0f;
|
||||
|
|
@ -281,17 +279,21 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardCameraTargetModelSet(lbl_1_data_388);
|
||||
BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U);
|
||||
HuPrcSleep(4);
|
||||
|
||||
var_r31 = 0;
|
||||
for (i = 0; i < 0x78U; i++) {
|
||||
PSVECAdd(&spC, &sp24, &sp24);
|
||||
temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A);
|
||||
|
||||
if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) {
|
||||
HuAudFXPlay(0x451);
|
||||
var_r31 = 1;
|
||||
}
|
||||
|
||||
if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) {
|
||||
var_r31 = 0;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp24);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -301,18 +303,21 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U);
|
||||
sp8 = BoardModelRotYGet(lbl_1_data_38A);
|
||||
temp_f31 = 0.0f;
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_38A, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U);
|
||||
}
|
||||
|
||||
extern s32 lbl_1_data_368[];
|
||||
extern w03State* lbl_1_bss_0;
|
||||
// extern w03State* lbl_1_bss_0;
|
||||
|
||||
void fn_1_6F9C(s32 arg0) {
|
||||
Vec sp20;
|
||||
|
|
@ -328,9 +333,11 @@ void fn_1_6F9C(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp14);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
|
||||
sp8.x /= 60.0f;
|
||||
sp8.z /= 60.0f;
|
||||
sp8.y = 0.0f;
|
||||
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = 10.0f;
|
||||
var_f29 = 0.21f;
|
||||
|
|
@ -339,16 +346,18 @@ void fn_1_6F9C(s32 arg0) {
|
|||
var_f30 = 0.0f;
|
||||
var_f29 = 0.15f;
|
||||
}
|
||||
|
||||
lbl_1_bss_124 = 1;
|
||||
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
|
||||
|
||||
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
|
||||
PSVECAdd(&sp14, &sp8, &sp14);
|
||||
sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31));
|
||||
if (sp14.y <= sp20.y) {
|
||||
sp14.y = sp20.y;
|
||||
if (var_r30 == 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
var_r30 = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -356,14 +365,16 @@ void fn_1_6F9C(s32 arg0) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
HuPrcSleep(10);
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
if (GWPlayer[arg0].bowser_suit != 0) {
|
||||
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
|
||||
} else {
|
||||
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
|
||||
}
|
||||
|
||||
BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f);
|
||||
lbl_1_bss_124 = 0;
|
||||
}
|
||||
|
|
@ -390,7 +401,7 @@ void fn_1_735C(s32 arg0) {
|
|||
sp8.y = 0.0f;
|
||||
|
||||
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = 0.25f;
|
||||
} else {
|
||||
|
|
@ -403,7 +414,7 @@ void fn_1_735C(s32 arg0) {
|
|||
if (sp14.y <= sp20.y && var_f31 > 48.0f) {
|
||||
sp14.y = sp20.y;
|
||||
if (var_r30 == 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
var_r30 = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -413,11 +424,13 @@ void fn_1_735C(s32 arg0) {
|
|||
|
||||
BoardPlayerPosSetV(arg0, &sp20);
|
||||
HuPrcSleep(0xA);
|
||||
BoardPlayerMotBlendSet(arg0, 0, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, 0, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
GWPlayer[arg0].space_curr = temp_r29;
|
||||
GWPlayer[arg0].space_prev = -1;
|
||||
BoardPlayerPostTurnHookSet(arg0, fn_1_6698);
|
||||
|
|
@ -433,18 +446,20 @@ void fn_1_767C(omObjData* arg0) {
|
|||
unkWorkStruct* temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct);
|
||||
|
||||
if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) {
|
||||
lbl_1_bss_12C = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
|
||||
temp_r31->unk_04 += 3.0f;
|
||||
if (temp_r31->unk_04 >= 360.0f) {
|
||||
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
|
||||
}
|
||||
BoardModelPosGet(lbl_1_data_388, &sp8);
|
||||
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((3.141592653589793 * (f64) temp_r31->unk_04) / 180.0))));
|
||||
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0))));
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp8);
|
||||
}
|
||||
}
|
||||
|
|
@ -454,14 +469,15 @@ void fn_1_77E4(s32 arg0) {
|
|||
s32 var_r30 = 0;
|
||||
|
||||
boardIndex = GWSystem.star_pos;
|
||||
|
||||
if ((boardIndex == 1) || (boardIndex == 2) || (boardIndex == 3) || (boardIndex == 4)) {
|
||||
var_r30 = 1;
|
||||
}
|
||||
|
||||
if (var_r30 != 0) {
|
||||
BoardComKeySetLeft();
|
||||
return;
|
||||
}
|
||||
|
||||
BoardComKeySetRight();
|
||||
}
|
||||
|
||||
char padRiver[] = "\0\0\0\0";
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#include "dolphin.h"
|
||||
#include "game/object.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
|
||||
typedef struct w03UnkWorkStruct {
|
||||
s16 unk_00[5];
|
||||
|
|
@ -16,17 +16,10 @@ extern Process *boardObjMan;
|
|||
extern s16 lbl_1_data_1E0;
|
||||
|
||||
void fn_1_79E0(omObjData* arg0);
|
||||
f32 BoardModelMotionMaxTimeGet(s16);
|
||||
|
||||
char kemuri1[] = "kemuri1";
|
||||
char kemuri2[] = "kemuri2";
|
||||
char kemuri3[] = "kemuri3";
|
||||
char kemuri4[] = "kemuri4";
|
||||
char kemuri5[] = "kemuri5";
|
||||
|
||||
char* kemuri_strings[] = {
|
||||
kemuri1, kemuri2, kemuri3,
|
||||
kemuri4, kemuri5
|
||||
"kemuri1", "kemuri2", "kemuri3",
|
||||
"kemuri4", "kemuri5"
|
||||
};
|
||||
|
||||
void fn_1_785C(void) {
|
||||
|
|
@ -37,16 +30,20 @@ void fn_1_785C(void) {
|
|||
|
||||
lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
|
||||
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0];
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r31->unk_00); i++) {
|
||||
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
|
||||
temp_r29 = kemuri_strings[i];
|
||||
|
||||
if (0.0f == temp_r31->unk_0C) {
|
||||
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
|
||||
}
|
||||
|
||||
var_f31 = temp_r31->unk_0C * BoardRandFloat();
|
||||
|
||||
if (var_f31 < 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
|
||||
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
|
||||
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
|
||||
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
|
||||
|
|
@ -70,14 +67,14 @@ void fn_1_79E0(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_0->unk3 != 0) {
|
||||
var_r29 = 0;
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r30->unk_00); i++) {
|
||||
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
|
||||
}
|
||||
}
|
||||
|
||||
char pad[4] = "\0\0\0\0";
|
||||
|
|
@ -5,9 +5,10 @@
|
|||
#include "game/gamework_data.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/ui.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/objsub.h"
|
||||
|
|
@ -25,60 +26,17 @@ void fn_1_2AC0(void);
|
|||
void fn_1_2818(void);
|
||||
void fn_1_2A40(void);
|
||||
void fn_1_2B44(void);
|
||||
s32 BoardDAngleCalcRange(f32*, f32, f32);
|
||||
s32 BoardPlayerMotBlendCheck(s32);
|
||||
f32 BoardPlayerRotYGet(s32);
|
||||
void BoardConfettiCreate(Point3d*, s16, f32);
|
||||
double atan2(double y, double x);
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s16 lbl_1_data_280 = -1;
|
||||
s16 lbl_1_data_282 = -1;
|
||||
s16 lbl_1_data_284 = -1;
|
||||
s16 lbl_1_data_286 = -1;
|
||||
s32 lbl_1_data_288 = -1;
|
||||
|
||||
char lbl_1_data_28C[] = "%d";
|
||||
|
||||
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
|
||||
MAKE_DATA_NUM(0x5F, 0x62),
|
||||
MAKE_DATA_NUM(0x1A, 0x62),
|
||||
MAKE_DATA_NUM(0x6D, 0x62),
|
||||
MAKE_DATA_NUM(0x8A, 0x62),
|
||||
MAKE_DATA_NUM(0x85, 0x62),
|
||||
MAKE_DATA_NUM(0x11, 0x62),
|
||||
MAKE_DATA_NUM(0x0D, 0x62),
|
||||
MAKE_DATA_NUM(0x81, 0x62),
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
|
||||
MAKE_DATA_NUM(0x5F, 0x33),
|
||||
MAKE_DATA_NUM(0x1A, 0x33),
|
||||
MAKE_DATA_NUM(0x6D, 0x33),
|
||||
MAKE_DATA_NUM(0x8A, 0x33),
|
||||
MAKE_DATA_NUM(0x85, 0x33),
|
||||
MAKE_DATA_NUM(0x11, 0x33),
|
||||
MAKE_DATA_NUM(0x0D, 0x33),
|
||||
MAKE_DATA_NUM(0x81, 0x33),
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2D0[] = {
|
||||
0x00000125, 0x00000165, 0x000001A5,
|
||||
0x000001E5, 0x00000225, 0x00000265,
|
||||
0x000002A5, 0x000002E5
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2F0[] = {
|
||||
0x0000012E, 0x0000016E, 0x000001AE,
|
||||
0x000001EE, 0x0000022E, 0x0000026E,
|
||||
0x000002AE, 0x000002EE
|
||||
};
|
||||
|
||||
//BSS Extern
|
||||
extern w03State* lbl_1_bss_0;
|
||||
extern Process *boardMainProc;
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
|
||||
|
||||
//BSS
|
||||
s8 lbl_1_bss_6F;
|
||||
|
|
@ -102,6 +60,7 @@ void fn_1_12C8(void) {
|
|||
while (lbl_1_bss_28) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
|
|
@ -112,6 +71,7 @@ void fn_1_1358(void) {
|
|||
cur_player_index = GWSystem.player_curr;
|
||||
unkC = GWPlayer[cur_player_index].space_curr;
|
||||
lbl_1_bss_2C = 0;
|
||||
|
||||
if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) {
|
||||
lbl_1_bss_6E = 0;
|
||||
lbl_1_bss_6C = lbl_1_bss_C[3];
|
||||
|
|
@ -119,6 +79,7 @@ void fn_1_1358(void) {
|
|||
lbl_1_bss_6E = 1;
|
||||
lbl_1_bss_6C = lbl_1_bss_C[4];
|
||||
}
|
||||
|
||||
if (fn_1_1650(cur_player_index) != 0) {
|
||||
if (fn_1_1D1C() != 0) {
|
||||
fn_1_1ED4(cur_player_index);
|
||||
|
|
@ -126,7 +87,7 @@ void fn_1_1358(void) {
|
|||
fn_1_20E0(cur_player_index);
|
||||
}
|
||||
if (lbl_1_bss_2C) {
|
||||
sprintf(lbl_1_bss_44, lbl_1_data_28C, lbl_1_bss_2C);
|
||||
sprintf(lbl_1_bss_44, "%d", lbl_1_bss_2C);
|
||||
BoardWinCreate(0, 0x160006, -1);
|
||||
BoardWinInsertMesSet((s32)lbl_1_bss_44, 0);
|
||||
BoardWinWait();
|
||||
|
|
@ -138,6 +99,7 @@ void fn_1_1358(void) {
|
|||
fn_1_26E0(cur_player_index);
|
||||
BoardStatusShowSetAll(1);
|
||||
}
|
||||
|
||||
BoardPlayerPostTurnHookSet(cur_player_index, &fn_1_15E8);
|
||||
BoardWinKill();
|
||||
HuPrcEnd();
|
||||
|
|
@ -145,24 +107,29 @@ void fn_1_1358(void) {
|
|||
|
||||
void fn_1_152C(void) {
|
||||
BoardConfettiKill();
|
||||
|
||||
if (lbl_1_data_282 != -1) {
|
||||
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_282);
|
||||
lbl_1_data_282 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_280 != -1) {
|
||||
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_280);
|
||||
lbl_1_data_280 = -1;
|
||||
}
|
||||
|
||||
fn_1_2AC0();
|
||||
lbl_1_bss_28 = NULL;
|
||||
}
|
||||
|
||||
s32 fn_1_15E8(void) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C, 1);
|
||||
|
||||
if (lbl_1_data_284 != -1) {
|
||||
BoardModelKill(lbl_1_data_284);
|
||||
lbl_1_data_284 = -1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -175,7 +142,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
f32 temp;
|
||||
s32 temp2;
|
||||
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
if (lbl_1_bss_0->unk2) {
|
||||
BoardWinCreate(0, 0x160000, -1);
|
||||
|
|
@ -188,7 +155,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
BoardSpacePosGet(0, temp2, &sp38);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
temp = (atan2(-sp20.x, -sp20.z) / 3.141592653589793) * 180.0f;
|
||||
temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f;
|
||||
BoardPlayerRotYSet(arg0, temp);
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 100.0f;
|
||||
|
|
@ -196,7 +163,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
sp8.x = -20.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 0x15);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 21);
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x28);
|
||||
|
||||
while (GWPlayer[arg0].moving) {
|
||||
|
|
@ -210,11 +177,12 @@ s32 fn_1_1650(s32 arg0) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
BoardWinCreate(2, 0x160001, 2);
|
||||
BoardWinWait();
|
||||
BoardWinCreateChoice(0, 0x160002, -1, 0);
|
||||
BoardWinAttrSet(0x10);
|
||||
|
||||
if (GWPlayer[arg0].com) {
|
||||
if (BoardRandMod(0x64) > 0x32U) {
|
||||
BoardComKeySetLeft();
|
||||
|
|
@ -222,6 +190,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
BoardComKeySetRight();
|
||||
}
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
lbl_1_bss_6F = BoardWinChoiceGet();
|
||||
BoardWinKill();
|
||||
|
|
@ -245,6 +214,40 @@ s32 fn_1_1650(s32 arg0) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
s32 lbl_1_data_290[] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 98)
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2B0[] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 51)
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2D0[] = {
|
||||
0x00000125, 0x00000165, 0x000001A5,
|
||||
0x000001E5, 0x00000225, 0x00000265,
|
||||
0x000002A5, 0x000002E5
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2F0[] = {
|
||||
0x0000012E, 0x0000016E, 0x000001AE,
|
||||
0x000001EE, 0x0000022E, 0x0000026E,
|
||||
0x000002AE, 0x000002EE
|
||||
};
|
||||
|
||||
void fn_1_19DC(s32 arg0, s32 arg1) {
|
||||
s32 temp_r30;
|
||||
s32 temp_r5;
|
||||
|
|
@ -253,6 +256,7 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
f32 temp;
|
||||
|
||||
temp_r30 = GWPlayer[arg0].character;
|
||||
|
||||
if (arg1 != 0) {
|
||||
lbl_1_data_282 = BoardPlayerMotionCreate(arg0, lbl_1_data_2B0[temp_r30]);
|
||||
lbl_1_bss_6A = 8;
|
||||
|
|
@ -263,12 +267,15 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
lbl_1_bss_68 = 1;
|
||||
var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character];
|
||||
}
|
||||
|
||||
lbl_1_data_280 = BoardPlayerMotionCreate(arg0, lbl_1_data_290[temp_r30]);
|
||||
temp = (180.0f + BoardPlayerRotYGet(arg0));
|
||||
BoardPlayerMotBlendSet(arg0, temp, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
HuAudFXPlay(var_r29);
|
||||
BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0);
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0);
|
||||
|
|
@ -278,7 +285,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
HuPrcVSleep();
|
||||
|
||||
}
|
||||
HuPrcSleep(0x3C);
|
||||
|
||||
HuPrcSleep(60);
|
||||
|
||||
if (arg1 != 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0);
|
||||
|
|
@ -287,16 +295,20 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
HuPrcSleep(0x14);
|
||||
temp = (180.0f + BoardPlayerRotYGet(arg0));
|
||||
BoardPlayerMotBlendSet(arg0, temp, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqPause(0, 1, 0x3E8);
|
||||
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0);
|
||||
HuPrcSleep(0xB);
|
||||
HuPrcSleep(11);
|
||||
|
||||
while (BoardPlayerMotionEndCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -329,16 +341,20 @@ s32 fn_1_1D1C(void) {
|
|||
BoardWinCreate(2, 0x160003, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
prevTurn = GWSystem.turn - 1;
|
||||
maxTurn = GWSystem.max_turn;
|
||||
var_r31 = prevTurn / (maxTurn / 3);
|
||||
|
||||
if (var_r31 >= 3) {
|
||||
var_r31 = 2;
|
||||
}
|
||||
|
||||
modRand = BoardRandMod(100);
|
||||
if (modRand < sp8[var_r31] ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
modRand2 = BoardRandMod(100 - sp8[var_r31]);
|
||||
if (modRand2 < sp14[var_r31][0]) {
|
||||
lbl_1_bss_2C = 3;
|
||||
|
|
@ -347,6 +363,7 @@ s32 fn_1_1D1C(void) {
|
|||
} else {
|
||||
lbl_1_bss_2C = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -379,11 +396,13 @@ void fn_1_1ED4(s32 arg0) {
|
|||
while (BoardFilterFadePauseCheck() == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
while (BoardMusStatusGet(1) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
BoardWinCreate(2, 0x160004, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -407,10 +426,12 @@ void fn_1_20E0(s32 arg0) {
|
|||
BoardModelPosSetV(lbl_1_data_284, &spC);
|
||||
BoardFilterFadeOut(0x1E);
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_284, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
omVibrate(arg0, 0xC, 4, 2);
|
||||
BoardModelRotYSet(lbl_1_data_284, 0.0f);
|
||||
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
|
||||
|
|
@ -432,26 +453,30 @@ void fn_1_20E0(s32 arg0) {
|
|||
if (lbl_1_bss_30 > 128.0f) {
|
||||
lbl_1_bss_30 = 128.0f;
|
||||
}
|
||||
HuPrcSleep(0x28);
|
||||
|
||||
HuPrcSleep(40);
|
||||
lbl_1_bss_30 = 128.0f;
|
||||
|
||||
while (lbl_1_bss_30 > 0.0f) {
|
||||
HuPrcVSleep();
|
||||
lbl_1_bss_30 -= 12.0f;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_30 < 0.0f) {
|
||||
lbl_1_bss_30 = 0.0f;
|
||||
}
|
||||
|
||||
fn_1_2AC0();
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 0xD);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 680.0f, -1.0f, 13);
|
||||
BoardCameraMotionWait();
|
||||
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 0xD);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 1360.0f, -1.0f, 13);
|
||||
BoardCameraMotionWait();
|
||||
}
|
||||
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
while (BoardMusStatusGet(1) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -471,7 +496,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
sp18.x = -20.0f;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 0x3C);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 60);
|
||||
BoardCameraMotionWait();
|
||||
omVibrate(arg0, 0x1E, 6, 6);
|
||||
HuPrcSleep(0x1E);
|
||||
|
|
@ -482,6 +507,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
}
|
||||
|
||||
BoardCameraQuakeReset();
|
||||
|
||||
if (lbl_1_data_288 != 0) {
|
||||
HuAudFXStop(lbl_1_data_288);
|
||||
lbl_1_data_288 = -1;
|
||||
|
|
@ -498,7 +524,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
sp18.x = -20.0f;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 0x3C);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 60);
|
||||
BoardCameraMotionWait();
|
||||
HuPrcSleep(0x3C);
|
||||
}
|
||||
|
|
@ -513,17 +539,19 @@ void fn_1_26E0(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
PSVECNormalize(&sp8, &sp8);
|
||||
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / 3.141592653589793));
|
||||
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI));
|
||||
BoardPlayerRotYSet(arg0, temp);
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp20, 0x28);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardCameraMotionWait();
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
|
||||
BoardRotateDiceNumbers(arg0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
}
|
||||
|
||||
void fn_1_2818(void) {
|
||||
|
|
@ -532,8 +560,9 @@ void fn_1_2818(void) {
|
|||
s16 j;
|
||||
s16 sp8[3] = {0x0002, 0x003E, 0x007A};
|
||||
|
||||
temp_r29 = (4 - lbl_1_bss_2C) * 0x3C;
|
||||
temp_r29 = (4 - lbl_1_bss_2C) * 60;
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
|
||||
|
||||
while (1) {
|
||||
temp_r30 = BoardModelMotionTimeGet(lbl_1_bss_C[1]);
|
||||
if (temp_r29 > temp_r30) {
|
||||
|
|
@ -554,6 +583,7 @@ void fn_1_2818(void) {
|
|||
|
||||
s32 fn_1_2930(s32 arg0) {
|
||||
lbl_1_bss_0->unk0--;
|
||||
|
||||
if (lbl_1_bss_0->unk0 <= 0) {
|
||||
lbl_1_bss_0->unk2 = 0;
|
||||
lbl_1_bss_0->unk0 = 0;
|
||||
|
|
@ -564,7 +594,8 @@ s32 fn_1_2930(s32 arg0) {
|
|||
fn_1_CF4();
|
||||
return 1;
|
||||
}
|
||||
sprintf(lbl_1_bss_38, lbl_1_data_28C, lbl_1_bss_0->unk0);
|
||||
|
||||
sprintf(lbl_1_bss_38, "%d", lbl_1_bss_0->unk0);
|
||||
BoardWinCreate(0, 0x160007, -1);
|
||||
BoardWinInsertMesSet((s32)lbl_1_bss_38, 1);
|
||||
BoardWinWait();
|
||||
|
|
@ -585,6 +616,7 @@ void fn_1_2AC0(void) {
|
|||
HuMemDirectFree(lbl_1_bss_34);
|
||||
lbl_1_bss_34 = NULL;
|
||||
}
|
||||
|
||||
if (lbl_1_data_286 != -1) {
|
||||
Hu3DModelKill(lbl_1_data_286);
|
||||
lbl_1_data_286 = -1;
|
||||
|
|
@ -646,5 +678,3 @@ void fn_1_2B44(void) {
|
|||
GXPosition2f32(0.0f, 1.0f);
|
||||
GXSetChanMatColor(GX_COLOR0A0, sp1C);
|
||||
}
|
||||
|
||||
f32 const padStatue = 0.0f;
|
||||
|
|
|
|||
325
src/REL/w06Dll/main.c
Executable file
325
src/REL/w06Dll/main.c
Executable file
|
|
@ -0,0 +1,325 @@
|
|||
#include "REL/w06Dll.h"
|
||||
#include "REL/board_executor.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/object.h"
|
||||
#include "game/process.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/lottery.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/map_object.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/shop.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/star.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk00_field0 : 1;
|
||||
};
|
||||
s8 unk01[10];
|
||||
} Bss8Work;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ Vec unk04;
|
||||
} Data108Struct; // Size 0x10
|
||||
|
||||
static void fn_1_730(void);
|
||||
static void fn_1_79C(void);
|
||||
static s32 fn_1_7BC(void);
|
||||
static s32 fn_1_900(void);
|
||||
static s32 fn_1_984(void);
|
||||
static void fn_1_9C0(void);
|
||||
static void fn_1_B28(void);
|
||||
static void fn_1_B5C(omObjData *arg0);
|
||||
|
||||
s16 lbl_1_bss_C[MAPOBJ_MAX];
|
||||
|
||||
static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
|
||||
{ { 450.0f, 200.0f, -2950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 6) },
|
||||
{ { -1650.0f, 0.0f, 2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 8) },
|
||||
{ { 2700.0f, 100.0f, -1950.0f }, { 0.0f, -89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
|
||||
{ { -3000.0f, 0.0f, 2550.0f }, { 0.0f, 89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
|
||||
{ { -1800.0f, 0.0f, 2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) },
|
||||
{ { 300.0f, 200.0f, -2850.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) }
|
||||
};
|
||||
|
||||
static omObjData *lbl_1_bss_8;
|
||||
static s32 lbl_1_bss_4;
|
||||
void *lbl_1_bss_0;
|
||||
|
||||
static s16 lbl_1_data_F0 = -1;
|
||||
static s16 lbl_1_data_F2 = -1;
|
||||
static s16 lbl_1_data_F4 = -1;
|
||||
static s16 lbl_1_data_F6 = -1;
|
||||
|
||||
static s32 lbl_1_data_F8[] = {
|
||||
DATA_MAKE_NUM(DATADIR_W06, 18),
|
||||
-1
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_100[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 34),
|
||||
-1
|
||||
};
|
||||
|
||||
static Data108Struct lbl_1_data_108[] = {
|
||||
0x00000002, { -3359.9998f, 170.0f, -3559.9998f },
|
||||
0x0000002A, { 3540.0002f, 170.0f, 1320.0f },
|
||||
0x00000052, { -710.0f, 170.0f, -4580.0f },
|
||||
0x0000007A, { -3670.0f, 170.0f, 1020.0f },
|
||||
0x000000A2, { 1970.0001f, 170.0f, -3840.0002f },
|
||||
0x000000CA, { -3160.0f, 170.0f, -3770.0f },
|
||||
0x000000F2, { -3500.0f, 170.0f, -2340.0f },
|
||||
0x0000011A, { -3700.0f, 170.0f, -810.00005f },
|
||||
0x00000142, { 100.0f, 170.0f, -4100.0f },
|
||||
0x0000016A, { 3290.0002f, 170.0f, -340.0f }
|
||||
};
|
||||
|
||||
void BoardCreate(void) {
|
||||
BoardMapObject *temp_r30;
|
||||
s32 *var_r29;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_0 = GWSystem.board_data;
|
||||
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W06, 0));
|
||||
lbl_1_data_F0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 1), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_F0, -1.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F0, 0, 0x40000001);
|
||||
lbl_1_data_F2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 2), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_F2, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_F2, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F2, 0, 0x40000001);
|
||||
lbl_1_data_F4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 17), lbl_1_data_F8, 0);
|
||||
BoardModelPosSet(lbl_1_data_F4, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F4, 1, 0x40000001);
|
||||
lbl_1_data_F6 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 33), lbl_1_data_100, 0);
|
||||
BoardModelPosSet(lbl_1_data_F6, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F6, 1, 0x40000001);
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &lbl_1_data_0[i];
|
||||
if (temp_r30->data_num != -1) {
|
||||
if (i == 4 || i == 5) {
|
||||
var_r29 = lbl_1_data_100;
|
||||
} else {
|
||||
var_r29 = NULL;
|
||||
}
|
||||
lbl_1_bss_C[i] = BoardModelCreate(temp_r30->data_num, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
|
||||
}
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_C[4], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[5], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[2], 0.0f);
|
||||
BoardModelLayerSet(lbl_1_bss_C[2], 1);
|
||||
BoardModelMotionStart(lbl_1_bss_C[3], 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[3], 0.0f);
|
||||
BoardModelLayerSet(lbl_1_bss_C[3], 1);
|
||||
fn_1_D70();
|
||||
fn_1_4878();
|
||||
fn_1_7BB0();
|
||||
fn_1_8F20();
|
||||
BoardLightHookSet(fn_1_730, fn_1_79C);
|
||||
BoardSpaceWalkEventFuncSet(fn_1_7BC);
|
||||
BoardSpaceWalkMiniEventFuncSet(fn_1_900);
|
||||
BoardSpaceLandEventFuncSet(fn_1_984);
|
||||
BoardStarHostSet(lbl_1_data_F4);
|
||||
BoardBooHouseHostSet(lbl_1_data_F6);
|
||||
BoardLotteryHostSet(lbl_1_data_F6);
|
||||
BoardShopHostSet(lbl_1_data_F6);
|
||||
BoardJunctionMaskSet(0x3000);
|
||||
boardTurnFunc = fn_1_C2B4;
|
||||
boardStarShowNextHook = fn_1_CD0C;
|
||||
boardTurnStartFunc = fn_1_9294;
|
||||
boardStarGiveHook = fn_1_CC90;
|
||||
boardBowserHook = fn_1_C108;
|
||||
fn_1_9C0();
|
||||
}
|
||||
|
||||
void BoardDestroy(void) {
|
||||
s32 i;
|
||||
|
||||
fn_1_B28();
|
||||
boardTurnFunc
|
||||
= (void*) boardStarShowNextHook
|
||||
= (void*) boardTurnStartFunc
|
||||
= (void*) boardStarGiveHook
|
||||
= (void*) boardBowserHook = NULL;
|
||||
fn_1_91D8();
|
||||
fn_1_7F3C();
|
||||
fn_1_F6C();
|
||||
fn_1_4A10();
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
BoardModelKill(lbl_1_bss_C[i]);
|
||||
lbl_1_bss_C[i] = -1;
|
||||
}
|
||||
if (lbl_1_data_F6 != -1) {
|
||||
BoardModelKill(lbl_1_data_F6);
|
||||
lbl_1_data_F6 = -1;
|
||||
}
|
||||
if (lbl_1_data_F4 != -1) {
|
||||
BoardModelKill(lbl_1_data_F4);
|
||||
lbl_1_data_F4 = -1;
|
||||
}
|
||||
if (lbl_1_data_F0 != -1) {
|
||||
BoardModelKill(lbl_1_data_F0);
|
||||
lbl_1_data_F0 = -1;
|
||||
}
|
||||
if (lbl_1_data_F2 != -1) {
|
||||
BoardModelKill(lbl_1_data_F2);
|
||||
lbl_1_data_F2 = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_730(void) {
|
||||
s16 var_r31;
|
||||
|
||||
var_r31 = BoardModelIDGet(lbl_1_data_F0);
|
||||
Hu3DModelLightInfoSet(var_r31, 1);
|
||||
Hu3DFogSet(4200.0f, 30000.0f, 0xF8, 0x30, 0);
|
||||
}
|
||||
|
||||
static void fn_1_79C(void) {
|
||||
Hu3DFogClear();
|
||||
}
|
||||
|
||||
static s32 fn_1_7BC(void) {
|
||||
s32 sp10[] = { 0, 1 };
|
||||
s32 sp8[] = { 0x300, 0xC0 };
|
||||
BoardSpace *temp_r31;
|
||||
s16 temp_r28;
|
||||
s32 temp_r27;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
temp_r27 = GWSystem.player_curr;
|
||||
temp_r28 = GWPlayer[temp_r27].space_curr;
|
||||
if (fn_1_92D8(temp_r27, temp_r28) != 0) {
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (BoardSpaceLinkFlagSearch(0, temp_r28, sp8[i]) == -1) {
|
||||
continue;
|
||||
}
|
||||
temp_r31 = BoardSpaceGet(0, temp_r28);
|
||||
for (j = 0; j < temp_r31->link_cnt; j++) {
|
||||
if ((BoardSpaceFlagGet(0, temp_r31->link[j]) & 0x04000000) == 0) {
|
||||
fn_1_8264(sp10[i], temp_r31->link[j]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 fn_1_900(void) {
|
||||
s16 var_r30;
|
||||
s32 temp_r31;
|
||||
|
||||
var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
|
||||
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
|
||||
if (temp_r31 == 0x200000) {
|
||||
fn_1_1054(); // TODO: return?
|
||||
} else if (temp_r31 == 0x400000) {
|
||||
fn_1_4A60(); // TODO: return?
|
||||
}
|
||||
}
|
||||
|
||||
static s32 fn_1_984(void) {
|
||||
if (BoardPlayerSizeGet(GWSystem.player_curr) != 2) {
|
||||
fn_1_6EF0(); // TODO: return?
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_9C0(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
omObjData *temp_r3;
|
||||
Bss8Work *temp_r30;
|
||||
s32 i;
|
||||
|
||||
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B5C);
|
||||
lbl_1_bss_8 = temp_r3;
|
||||
temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss8Work);
|
||||
temp_r30->unk00_field0 = 0;
|
||||
BoardCameraPosGet(&sp14);
|
||||
BoardCameraDirGet(&sp8);
|
||||
HuAudFXListnerSetEX(&sp14, &sp8, 6600.0f, 36000.0f, 0.0f, 1650.0f, 1650.0f);
|
||||
for (i = 0; i < 10; i++) {
|
||||
temp_r30->unk01[i] = 0;
|
||||
}
|
||||
if (!_CheckFlag(0x10010)) {
|
||||
if (lbl_1_bss_4 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
lbl_1_bss_4 = 1;
|
||||
}
|
||||
} else if (lbl_1_bss_4 != 0) {
|
||||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_B28(void) {
|
||||
if (lbl_1_bss_8) {
|
||||
OM_GET_WORK_PTR(lbl_1_bss_8, Bss8Work)->unk00_field0 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_B5C(omObjData *arg0) {
|
||||
Bss8Work *temp_r30;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s16 temp_r28;
|
||||
s16 var_r29;
|
||||
s16 i;
|
||||
|
||||
temp_r30 = OM_GET_WORK_PTR(arg0, Bss8Work);
|
||||
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
|
||||
HuAudFXListnerKill();
|
||||
lbl_1_bss_8 = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
temp_r28 = BoardModelMotionTimeGet(lbl_1_data_F0);
|
||||
BoardCameraDirGet(&sp8);
|
||||
BoardCameraTargetGet(&sp14);
|
||||
sp14.y += 2000.0f;
|
||||
if (!_CheckFlag(0x10010)) {
|
||||
if (lbl_1_bss_4 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
lbl_1_bss_4 = 1;
|
||||
}
|
||||
} else if (lbl_1_bss_4 != 0) {
|
||||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_4 = 0;
|
||||
}
|
||||
if (!_CheckFlag(0x1001C)) {
|
||||
for (var_r29 = i = 0; i < 10; i++) {
|
||||
if (temp_r30->unk01[i] != 0) {
|
||||
var_r29++;
|
||||
} else if (temp_r28 == lbl_1_data_108[i].unk00) {
|
||||
HuAudFXEmiterPlay(0x4A1, &lbl_1_data_108[i].unk04);
|
||||
temp_r30->unk01[i] = 1;
|
||||
goto block_20;
|
||||
}
|
||||
}
|
||||
if (var_r29 < 10) {
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < 10; i++) {
|
||||
temp_r30->unk01[i] = 0;
|
||||
}
|
||||
}
|
||||
block_20:
|
||||
HuAudFXListnerUpdate(&sp14, &sp8);
|
||||
}
|
||||
|
|
@ -1,64 +1,73 @@
|
|||
#include "REL/w10Dll.h"
|
||||
#include "game/data.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/tutorial.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
s32 lbl_1_data_78[2] = {
|
||||
MAKE_DATA_NUM(DATADIR_W10, 16),
|
||||
static s16 hostMdl;
|
||||
static s16 hostPos;
|
||||
static Process *hostProc;
|
||||
|
||||
static s32 hostMot[2] = {
|
||||
DATA_MAKE_NUM(DATADIR_W10, 16),
|
||||
-1
|
||||
};
|
||||
|
||||
Vec lbl_1_data_80[2] = {
|
||||
static Vec hostPosTbl[2] = {
|
||||
{70.0f, 355.0f, 200.f},
|
||||
{70.0f, 175.0f, 200.f},
|
||||
};
|
||||
|
||||
void fn_1_AEC(void) {
|
||||
lbl_1_bss_1C = 0;
|
||||
lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), lbl_1_data_78, 0);
|
||||
BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001);
|
||||
BoardTutorialHostSet(lbl_1_bss_1E);
|
||||
BoardModelLayerSet(lbl_1_bss_1E, 6);
|
||||
lbl_1_bss_18 = HuPrcCreate(fn_1_C20, 0x1FFF, 0x1800, 0);
|
||||
static void UpdateHost(void);
|
||||
|
||||
|
||||
void HostCreate(void) {
|
||||
hostPos = 0;
|
||||
hostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 15), hostMot, 0);
|
||||
BoardModelMotionStart(hostMdl, 1, 0x40000001);
|
||||
BoardTutorialHostSet(hostMdl);
|
||||
BoardModelLayerSet(hostMdl, 6);
|
||||
hostProc = HuPrcCreate(UpdateHost, 0x1FFF, 0x1800, 0);
|
||||
}
|
||||
|
||||
void fn_1_BA0(s32 arg0) {
|
||||
s16 var_r31;
|
||||
void HostWinExec(s32 arg0) {
|
||||
s16 pos;
|
||||
|
||||
switch (lbl_1_bss_1C) {
|
||||
switch (hostPos) {
|
||||
case 0:
|
||||
var_r31 = 5;
|
||||
pos = 5;
|
||||
break;
|
||||
case 1:
|
||||
var_r31 = 6;
|
||||
pos = 6;
|
||||
break;
|
||||
}
|
||||
BoardWinCreate(var_r31, arg0, -1);
|
||||
BoardWinCreate(pos, arg0, -1);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
}
|
||||
|
||||
void fn_1_C10(s16 arg0) {
|
||||
lbl_1_bss_1C = arg0;
|
||||
void HostPosSet(s16 arg0) {
|
||||
hostPos = arg0;
|
||||
}
|
||||
|
||||
void fn_1_C20(void) {
|
||||
Mtx sp20;
|
||||
void UpdateHost(void) {
|
||||
Mtx rot;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
while (1) {
|
||||
if (BoardIsKill() != 0) {
|
||||
BoardModelKill(lbl_1_bss_1E);
|
||||
BoardModelKill(hostMdl);
|
||||
BoardTutorialHostSet(-1);
|
||||
HuPrcEnd();
|
||||
}
|
||||
Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14);
|
||||
BoardModelPosSetV(lbl_1_bss_1E, &sp14);
|
||||
Hu3D2Dto3D(&hostPosTbl[hostPos], 1, &sp14);
|
||||
BoardModelPosSetV(hostMdl, &sp14);
|
||||
BoardCameraRotGet(&sp8);
|
||||
PSMTXRotRad(sp20, 'y', 0.2617994f);
|
||||
BoardModelMtxSet(lbl_1_bss_1E, &sp20);
|
||||
BoardModelRotSet(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f);
|
||||
BoardModelScaleSet(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f);
|
||||
PSMTXRotRad(rot, 'y', 0.2617994f);
|
||||
BoardModelMtxSet(hostMdl, &rot);
|
||||
BoardModelRotSet(hostMdl, sp8.x, 0.0f, 0.0f);
|
||||
BoardModelScaleSet(hostMdl, 0.2f, 0.2f, 0.2f);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,204 +1,220 @@
|
|||
#include "include/REL/w10Dll.h"
|
||||
#include "game/data.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/board/lottery.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/shop.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/star.h"
|
||||
#include "game/board/tutorial.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/map_object.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] = {
|
||||
//Map Objects
|
||||
static BoardMapObject mapObjTbl[MAPOBJ_MAX] = {
|
||||
3300.0f, 100.0f, -900.0f,
|
||||
0.0f, 0.0f, 0.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
MAKE_DATA_NUM(DATADIR_W10, 3)
|
||||
DATA_MAKE_NUM(DATADIR_W10, 3)
|
||||
};
|
||||
|
||||
s16 boardMapObjMdl[MAPOBJ_MAX];
|
||||
|
||||
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;
|
||||
s16 tutorialExitWin;
|
||||
s16 tutorialDoneF;
|
||||
static s32 *motTbl;
|
||||
s32 lbl_1_bss_4;
|
||||
W10BoardWork *boardWork;
|
||||
|
||||
//unused?
|
||||
s32 lbl_1_data_34[] = {
|
||||
0x005F0000, 0x001A0000,
|
||||
0x006D0000, 0x008A0000,
|
||||
0x00850000, 0x00110000,
|
||||
0x000D0000, 0x00810000,
|
||||
static s16 bgMdl = -1;
|
||||
static s16 fgMdl = -1;
|
||||
s16 boardStarHostMdl = -1;
|
||||
s16 boardShopHostMdl = -1;
|
||||
s16 boardLotteryHostMdl = -1;
|
||||
s16 boardBooHouseHostMdl = -1;
|
||||
|
||||
static s32 charMotDirTbl[] = {
|
||||
DATADIR_MARIOMOT, DATADIR_LUIGIMOT,
|
||||
DATADIR_PEACHMOT, DATADIR_YOSHIMOT,
|
||||
DATADIR_WARIOMOT, DATADIR_DONKEYMOT,
|
||||
DATADIR_DAISYMOT, DATADIR_WALUIGIMOT,
|
||||
};
|
||||
|
||||
s32 lbl_1_data_54[2] = {
|
||||
MAKE_DATA_NUM(DATADIR_W10, 18),
|
||||
static s32 starHostMot[2] = {
|
||||
DATA_MAKE_NUM(DATADIR_W10, 18),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_5C[2] = {
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 9),
|
||||
static s32 shopHostMot[2] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 9),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_64[2] = {
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 24),
|
||||
static s32 lotteryHostMot[2] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 24),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_6C[2] = {
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 14),
|
||||
static s32 booHouseHostMot[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;
|
||||
}
|
||||
static void LightSetHook(void);
|
||||
static void LightResetHook(void);
|
||||
static s32 WalkEvent(void);
|
||||
static s32 WalkMiniEvent(void);
|
||||
static s32 LandEvent(void);
|
||||
|
||||
void BoardCreate(void) {
|
||||
f32 sp10;
|
||||
f32 spC[2];
|
||||
s32 sp8;
|
||||
|
||||
void BoardCreate(void)
|
||||
{
|
||||
float size[2];
|
||||
|
||||
s32 i;
|
||||
unkw10Dll* temp_r30;
|
||||
s32 temp;
|
||||
s32 temp2;
|
||||
BoardMapObject *temp_r30;
|
||||
s32 space;
|
||||
s32 board;
|
||||
|
||||
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(MAKE_DATA_NUM(DATADIR_W10, 0));
|
||||
temp = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(temp, 1);
|
||||
lbl_1_data_28 = BoardModelCreate(MAKE_DATA_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(MAKE_DATA_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(MAKE_DATA_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(MAKE_DATA_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0);
|
||||
BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001);
|
||||
lbl_1_data_32 = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0);
|
||||
BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001);
|
||||
lbl_1_data_30 = BoardModelCreate(MAKE_DATA_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);
|
||||
board = GWBoardGet();
|
||||
boardWork = (W10BoardWork *)&GWSystem.board_data[0];
|
||||
boardWork->scene = 0;
|
||||
boardWork->dice = 0;
|
||||
boardWork->msg = 0;
|
||||
BoardTutorialHookSet(TutorialHookExec);
|
||||
HostCreate();
|
||||
TutorialSprCreate();
|
||||
tutorialDoneF = 0;
|
||||
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0));
|
||||
space = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(space, 1);
|
||||
bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0);
|
||||
fn_8006DDE8(bgMdl, -1.0f);
|
||||
BoardModelPosSet(bgMdl, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(bgMdl, 0, 0x40000001);
|
||||
BoardModelMotionSpeedSet(bgMdl, 1.0f);
|
||||
fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0);
|
||||
fn_8006DDE8(fgMdl, -1.0f);
|
||||
BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(fgMdl, 0, 0x40000001);
|
||||
boardStarHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), starHostMot, 0);
|
||||
BoardModelPosSet(boardStarHostMdl, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(boardStarHostMdl, 1, 0x40000001);
|
||||
boardShopHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), shopHostMot, 0);
|
||||
BoardModelMotionStart(boardShopHostMdl, 1, 0x40000001);
|
||||
boardBooHouseHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lotteryHostMot, 0);
|
||||
BoardModelMotionStart(boardBooHouseHostMdl, 1, 0x40000001);
|
||||
boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0);
|
||||
BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001);
|
||||
BoardLightHookSet(LightSetHook, LightResetHook);
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &mapObjTbl[i];
|
||||
if (temp_r30->data_num != -1) {
|
||||
motTbl = NULL;
|
||||
boardMapObjMdl[i] = BoardModelCreate(temp_r30->data_num, motTbl, 0);
|
||||
BoardModelPosSetV(boardMapObjMdl[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(boardMapObjMdl[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(boardMapObjMdl[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(boardMapObjMdl[i], 1);
|
||||
if (motTbl != NULL) {
|
||||
BoardModelMotionStart(boardMapObjMdl[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);
|
||||
BoardModelVisibilitySet(boardMapObjMdl[MAPOBJ_MELON], 0);
|
||||
boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
|
||||
BoardModelVisibilitySet(boardWork->focus_mdl, 0);
|
||||
BoardSpaceWalkEventFuncSet(WalkEvent);
|
||||
BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent);
|
||||
BoardSpaceLandEventFuncSet(LandEvent);
|
||||
BoardStarHostSet(boardStarHostMdl);
|
||||
BoardBooHouseHostSet(boardBooHouseHostMdl);
|
||||
BoardShopHostSet(boardShopHostMdl);
|
||||
BoardLotteryHostSet(boardLotteryHostMdl);
|
||||
HuWinMesMaxSizeGet(1, size, 0x2E003A);
|
||||
tutorialExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
|
||||
HuWinMesSet(tutorialExitWin, 0x2E003A);
|
||||
HuWinMesSpeedSet(tutorialExitWin, 0);
|
||||
HuWinPriSet(tutorialExitWin, 1);
|
||||
HuWinMesPalSet(tutorialExitWin, 7, 0, 0, 0);
|
||||
}
|
||||
|
||||
void BoardDestroy(void) {
|
||||
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 (boardMapObjMdl[i] != 0) {
|
||||
BoardModelKill(boardMapObjMdl[i]);
|
||||
boardMapObjMdl[i] = 0;
|
||||
}
|
||||
}
|
||||
if (lbl_1_data_32 != -1) {
|
||||
BoardModelKill(lbl_1_data_32);
|
||||
lbl_1_data_32 = -1;
|
||||
if (boardBooHouseHostMdl != -1) {
|
||||
BoardModelKill(boardBooHouseHostMdl);
|
||||
boardBooHouseHostMdl = -1;
|
||||
}
|
||||
if (lbl_1_data_2E != -1) {
|
||||
BoardModelKill(lbl_1_data_2E);
|
||||
lbl_1_data_2E = -1;
|
||||
if (boardShopHostMdl != -1) {
|
||||
BoardModelKill(boardShopHostMdl);
|
||||
boardShopHostMdl = -1;
|
||||
}
|
||||
if (lbl_1_data_30 != -1) {
|
||||
BoardModelKill(lbl_1_data_30);
|
||||
lbl_1_data_30 = -1;
|
||||
if (boardLotteryHostMdl != -1) {
|
||||
BoardModelKill(boardLotteryHostMdl);
|
||||
boardLotteryHostMdl = -1;
|
||||
}
|
||||
if (lbl_1_data_2C != -1) {
|
||||
BoardModelKill(lbl_1_data_2C);
|
||||
lbl_1_data_2C = -1;
|
||||
if (boardStarHostMdl != -1) {
|
||||
BoardModelKill(boardStarHostMdl);
|
||||
boardStarHostMdl = -1;
|
||||
}
|
||||
if (lbl_1_data_28 != -1) {
|
||||
BoardModelKill(lbl_1_data_28);
|
||||
lbl_1_data_28 = -1;
|
||||
if (bgMdl != -1) {
|
||||
BoardModelKill(bgMdl);
|
||||
bgMdl = -1;
|
||||
}
|
||||
if (lbl_1_data_2A != -1) {
|
||||
BoardModelKill(lbl_1_data_2A);
|
||||
lbl_1_data_2A = -1;
|
||||
if (fgMdl != -1) {
|
||||
BoardModelKill(fgMdl);
|
||||
fgMdl = -1;
|
||||
}
|
||||
BoardModelKill(lbl_1_bss_0->unk8);
|
||||
fn_1_1DEC();
|
||||
HuWinKill(lbl_1_bss_E);
|
||||
BoardModelKill(boardWork->focus_mdl);
|
||||
TutorialSprKill();
|
||||
HuWinKill(tutorialExitWin);
|
||||
BoardSpaceDestroy();
|
||||
}
|
||||
|
||||
void fn_1_8C0(void) {
|
||||
s16 temp = BoardModelIDGet(lbl_1_data_28);
|
||||
Hu3DModelLightInfoSet(temp, 1);
|
||||
static void LightSetHook(void)
|
||||
{
|
||||
s16 id = BoardModelIDGet(bgMdl);
|
||||
Hu3DModelLightInfoSet(id, 1);
|
||||
}
|
||||
|
||||
void fn_1_904(void) {
|
||||
static void LightResetHook(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void fn_1_908(void) {
|
||||
static s32 LandEvent(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
s32 fn_1_90C(void) {
|
||||
static s32 WalkEvent(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fn_1_914(void) {
|
||||
void fn_1_914(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void fn_1_918(void) {
|
||||
void fn_1_918(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void fn_1_91C(void) {
|
||||
static s32 WalkMiniEvent(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
s32 fn_1_920(s16 arg0, f32 arg8, f32 arg9) {
|
||||
|
|
|
|||
|
|
@ -1,232 +1,243 @@
|
|||
#include "include/REL/w10Dll.h"
|
||||
#include "game/board/char_wheel.h"
|
||||
#include "game/board/lottery.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/shop.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/star.h"
|
||||
#include "game/board/tutorial.h"
|
||||
#include "game/board/ui.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/mg_setup.h"
|
||||
|
||||
void fn_1_D2C(void) {
|
||||
fn_1_BA0(0x2E0001);
|
||||
void TutorialStartExec(void) {
|
||||
HostWinExec(0x2E0001);
|
||||
}
|
||||
|
||||
void fn_1_D54(void) {
|
||||
fn_1_BA0(0x2E0002);
|
||||
void TutorialPreRollExec(void) {
|
||||
HostWinExec(0x2E0002);
|
||||
}
|
||||
|
||||
void fn_1_D7C(void) {
|
||||
fn_1_BA0(0x2E0003);
|
||||
void TutorialOrderExec(void) {
|
||||
HostWinExec(0x2E0003);
|
||||
}
|
||||
|
||||
void fn_1_DA4(void) {
|
||||
fn_1_BA0(0x2E0004);
|
||||
void TutorialP1StartExec(void) {
|
||||
HostWinExec(0x2E0004);
|
||||
}
|
||||
|
||||
void fn_1_DCC(void) {
|
||||
fn_1_BA0(0x2E0005);
|
||||
void TutorialP2StartExec(void) {
|
||||
HostWinExec(0x2E0005);
|
||||
}
|
||||
|
||||
void fn_1_DF4(void) {
|
||||
fn_1_BA0(0x2E0006);
|
||||
void TutorialP3StartExec(void) {
|
||||
HostWinExec(0x2E0006);
|
||||
}
|
||||
|
||||
void fn_1_E1C(void) {
|
||||
fn_1_BA0(0x2E0007);
|
||||
void TutorialP4StartExec(void) {
|
||||
HostWinExec(0x2E0007);
|
||||
}
|
||||
|
||||
void fn_1_E44(void) {
|
||||
fn_1_BA0(0x2E0008);
|
||||
fn_1_BA0(0x2E0009);
|
||||
void TutorialGameStartExec(void) {
|
||||
HostWinExec(0x2E0008);
|
||||
HostWinExec(0x2E0009);
|
||||
BoardSpaceStarSetIndex(0);
|
||||
BoardModelVisibilitySet(lbl_1_data_2C, 1);
|
||||
BoardModelVisibilitySet(boardStarHostMdl, 1);
|
||||
}
|
||||
|
||||
void fn_1_E94(void) {
|
||||
fn_1_BA0(0x2E000A);
|
||||
void TutorialRollExec(void) {
|
||||
HostWinExec(0x2E000A);
|
||||
}
|
||||
|
||||
void fn_1_EBC(void) {
|
||||
fn_1_BA0(0x2E000B);
|
||||
void TutorialMoveExec(void) {
|
||||
HostWinExec(0x2E000B);
|
||||
}
|
||||
|
||||
void fn_1_EE4(void) {
|
||||
void TutorialLandExec(void) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_EE8(void) {
|
||||
fn_1_1E3C(0, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E000C);
|
||||
fn_1_BA0(0x2E000D);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandBlueExec(void) {
|
||||
TutorialSpaceShow(0, 0x122, 0x8C);
|
||||
HostWinExec(0x2E000C);
|
||||
HostWinExec(0x2E000D);
|
||||
TutorialSpaceHide();
|
||||
}
|
||||
|
||||
void fn_1_F30(void) {
|
||||
fn_1_1E3C(1, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E000E);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandRedExec(void) {
|
||||
TutorialSpaceShow(1, 0x122, 0x8C);
|
||||
HostWinExec(0x2E000E);
|
||||
TutorialSpaceHide();
|
||||
}
|
||||
|
||||
void fn_1_F6C(void) {
|
||||
fn_1_1E3C(2, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E000F);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandHappenExec(void) {
|
||||
TutorialSpaceShow(2, 0x122, 0x8C);
|
||||
HostWinExec(0x2E000F);
|
||||
TutorialSpaceHide();
|
||||
BoardTutorialDirInputSet(0, 0x50, 1);
|
||||
}
|
||||
|
||||
void fn_1_FB8(void) {
|
||||
fn_1_1E3C(3, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0010);
|
||||
fn_1_1FB0();
|
||||
fn_1_BA0(0x2E0011);
|
||||
void TutorialLandFortuneExec(void) {
|
||||
TutorialSpaceShow(3, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0010);
|
||||
TutorialSpaceHide();
|
||||
HostWinExec(0x2E0011);
|
||||
BoardTutorialDirInputSet(-0x50, 0, 1);
|
||||
}
|
||||
|
||||
void fn_1_1010(void) {
|
||||
fn_1_1E3C(4, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0012);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandBowserExec(void) {
|
||||
TutorialSpaceShow(4, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0012);
|
||||
TutorialSpaceHide();
|
||||
BoardTutorialDirInputSet(0, 0x50, 1);
|
||||
}
|
||||
|
||||
void fn_1_105C(void) {
|
||||
fn_1_1E3C(5, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0013);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandMushroomExec(void) {
|
||||
TutorialSpaceShow(5, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0013);
|
||||
TutorialSpaceHide();
|
||||
}
|
||||
|
||||
void fn_1_1098(void) {
|
||||
fn_1_BA0(0x2E0014);
|
||||
void TutorialMushroomMegaExec(void) {
|
||||
HostWinExec(0x2E0014);
|
||||
}
|
||||
|
||||
void fn_1_10C0(void) {
|
||||
fn_1_BA0(0x2E0015);
|
||||
void TutorialMushroomMiniExec(void) {
|
||||
HostWinExec(0x2E0015);
|
||||
BoardTutorialDirInputSet(-0x50, 0, 1);
|
||||
}
|
||||
|
||||
void fn_1_10F8(void) {
|
||||
fn_1_1E3C(6, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0016);
|
||||
fn_1_1FB0();
|
||||
void TutorialLandBattleExec(void) {
|
||||
TutorialSpaceShow(6, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0016);
|
||||
TutorialSpaceHide();
|
||||
}
|
||||
|
||||
void fn_1_1134(void) {
|
||||
fn_1_1E3C(7, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0017);
|
||||
fn_1_1FB0();
|
||||
BoardCharWheelSetTarget(1);
|
||||
void TutorialLandWarpExec(void) {
|
||||
TutorialSpaceShow(7, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0017);
|
||||
TutorialSpaceHide();
|
||||
BoardCharWheelTargetSet(1);
|
||||
}
|
||||
|
||||
void fn_1_1178(void) {
|
||||
fn_1_BA0(0x2E0018);
|
||||
void TutorialWarpDecideExec(void) {
|
||||
HostWinExec(0x2E0018);
|
||||
}
|
||||
|
||||
void fn_1_11A0(void) {
|
||||
s32 temp;
|
||||
void TutorialBlockStarExec(void) {
|
||||
s32 space;
|
||||
|
||||
fn_1_BA0(0x2E0019);
|
||||
temp = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(temp, 0);
|
||||
HostWinExec(0x2E0019);
|
||||
space = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(space, 0);
|
||||
}
|
||||
|
||||
void fn_1_11EC(void) {
|
||||
s32 temp;
|
||||
void TutorialBlockCoinExec(void) {
|
||||
s32 space;
|
||||
|
||||
fn_1_BA0(0x2E001A);
|
||||
temp = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(temp, 0);
|
||||
HostWinExec(0x2E001A);
|
||||
space = BoardSpaceFlagSearch(0, 1);
|
||||
BoardTutorialBlockSetPos(space, 0);
|
||||
BoardTutorialItemSet(0);
|
||||
}
|
||||
|
||||
void fn_1_1240(void) {
|
||||
fn_1_BA0(0x2E001B);
|
||||
void TutorialMiniMegaExec(void) {
|
||||
HostWinExec(0x2E001B);
|
||||
BoardTutorialDirInputSet(0x50, 0, 1);
|
||||
}
|
||||
|
||||
void fn_1_1278(void) {
|
||||
fn_1_BA0(0x2E001C);
|
||||
void TutorialMiniUseExec(void) {
|
||||
HostWinExec(0x2E001C);
|
||||
}
|
||||
|
||||
void fn_1_12A0(void) {
|
||||
fn_1_BA0(0x2E001D);
|
||||
void TutorialMiniStopExec(void) {
|
||||
HostWinExec(0x2E001D);
|
||||
BoardPlayerItemAdd(2, 1);
|
||||
BoardTutorialItemSet(1);
|
||||
}
|
||||
|
||||
void fn_1_12DC(void) {
|
||||
fn_1_BA0(0x2E001E);
|
||||
void TutorialMegaUseExec(void) {
|
||||
HostWinExec(0x2E001E);
|
||||
}
|
||||
|
||||
void fn_1_1304(void) {
|
||||
fn_1_BA0(0x2E001F);
|
||||
void TutorialMegaDiceExec(void) {
|
||||
HostWinExec(0x2E001F);
|
||||
}
|
||||
|
||||
void fn_1_132C(void) {
|
||||
fn_1_BA0(0x2E0020);
|
||||
void TutorialMegaStompExec(void) {
|
||||
HostWinExec(0x2E0020);
|
||||
}
|
||||
|
||||
void fn_1_1354(void) {
|
||||
fn_1_BA0(0x2E0021);
|
||||
void TutorialMegaEventExec(void) {
|
||||
HostWinExec(0x2E0021);
|
||||
}
|
||||
|
||||
void fn_1_137C(void) {
|
||||
fn_1_BA0(0x2E0022);
|
||||
void TutorialMegaStopExec(void) {
|
||||
HostWinExec(0x2E0022);
|
||||
}
|
||||
|
||||
void fn_1_13A4(void) {
|
||||
void TutorialEndExec(void) {
|
||||
s32 i;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s32 temp_r3_2;
|
||||
Vec pos;
|
||||
Vec offset;
|
||||
s32 space;
|
||||
|
||||
fn_1_BA0(0x2E0023);
|
||||
HostWinExec(0x2E0023);
|
||||
for (i = 0; i < 4; i++) {
|
||||
GWPlayer[i].color = 1;
|
||||
}
|
||||
BoardMGSetupTutorialExec();
|
||||
BoardStatusShowSetAll(0);
|
||||
fn_1_C10(0);
|
||||
fn_1_BA0(0x2E002B);
|
||||
sp8.x = -33.0f;
|
||||
sp8.y = sp8.z = 0.0f;
|
||||
temp_r3_2 = BoardSpaceFlagSearch(0, 0x80000);
|
||||
BoardSpacePosGet(0, temp_r3_2, &sp14);
|
||||
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
HostPosSet(0);
|
||||
HostWinExec(0x2E002B);
|
||||
offset.x = -33.0f;
|
||||
offset.y = offset.z = 0.0f;
|
||||
space = BoardSpaceFlagSearch(0, 0x80000);
|
||||
BoardSpacePosGet(0, space, &pos);
|
||||
BoardModelPosSetV(boardWork->focus_mdl, &pos);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
fn_1_BA0(0x2E002C);
|
||||
BoardShopTutorialExec(temp_r3_2);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
HostWinExec(0x2E002C);
|
||||
BoardShopTutorialExec(space);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
temp_r3_2 = BoardSpaceFlagSearch(0, 0x10000000);
|
||||
BoardSpacePosGet(0, temp_r3_2, &sp14);
|
||||
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
space = BoardSpaceFlagSearch(0, 0x10000000);
|
||||
BoardSpacePosGet(0, space, &pos);
|
||||
BoardModelPosSetV(boardWork->focus_mdl, &pos);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
fn_1_BA0(0x2E002E);
|
||||
HostWinExec(0x2E002E);
|
||||
BoardLotteryTutorialExec();
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
temp_r3_2 = BoardSpaceFlagSearch(0, 0x08000000);
|
||||
BoardSpacePosGet(0, temp_r3_2, &sp14);
|
||||
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
space = BoardSpaceFlagSearch(0, 0x08000000);
|
||||
BoardSpacePosGet(0, space, &pos);
|
||||
BoardModelPosSetV(boardWork->focus_mdl, &pos);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
fn_1_BA0(0x2E0030);
|
||||
HostWinExec(0x2E0030);
|
||||
BoardBooHouseTutorialExec();
|
||||
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30);
|
||||
BoardCameraMotionWait();
|
||||
fn_1_BA0(0x2E0032);
|
||||
HostWinExec(0x2E0032);
|
||||
BoardCameraTargetModelSet(BoardStarHostMdlGet());
|
||||
BoardCameraMotionWait();
|
||||
fn_1_BA0(0x2E0033);
|
||||
fn_1_BA0(0x2E0034);
|
||||
fn_1_1E3C(8, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0035);
|
||||
fn_1_1FB0();
|
||||
fn_1_1E3C(9, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0036);
|
||||
fn_1_1FB0();
|
||||
fn_1_1E3C(0xA, 0x122, 0x8C);
|
||||
fn_1_BA0(0x2E0037);
|
||||
fn_1_1FB0();
|
||||
fn_1_BA0(0x2E0038);
|
||||
fn_1_BA0(0x2E0039);
|
||||
if (lbl_1_bss_C == 0) {
|
||||
lbl_1_bss_C = 1;
|
||||
HostWinExec(0x2E0033);
|
||||
HostWinExec(0x2E0034);
|
||||
TutorialSpaceShow(8, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0035);
|
||||
TutorialSpaceHide();
|
||||
TutorialSpaceShow(9, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0036);
|
||||
TutorialSpaceHide();
|
||||
TutorialSpaceShow(0xA, 0x122, 0x8C);
|
||||
HostWinExec(0x2E0037);
|
||||
TutorialSpaceHide();
|
||||
HostWinExec(0x2E0038);
|
||||
HostWinExec(0x2E0039);
|
||||
if (tutorialDoneF == 0) {
|
||||
tutorialDoneF = 1;
|
||||
BoardAudSeqFadeOut(0, 0x1F3);
|
||||
BoardKill();
|
||||
}
|
||||
|
|
@ -235,3 +246,50 @@ void fn_1_13A4(void) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
void TutorialMGStatusExec(void) {
|
||||
HostPosSet(1);
|
||||
HostWinExec(0x2E0024);
|
||||
}
|
||||
|
||||
void TutorialMG4PExec(void) {
|
||||
HostWinExec(0x2E0025);
|
||||
GWPlayer[1].color = 2;
|
||||
GWPlayer[3].color = 2;
|
||||
}
|
||||
|
||||
void TutorialMG2Vs2Exec(void) {
|
||||
HostWinExec(0x2E0026);
|
||||
GWPlayer[0].color = 2;
|
||||
}
|
||||
|
||||
void TutorialMG1Vs3Exec(void) {
|
||||
HostWinExec(0x2E0027);
|
||||
GWPlayer[0].color = 1;
|
||||
GWPlayer[1].color = 1;
|
||||
GWPlayer[2].color = 1;
|
||||
GWPlayer[3].color = 2;
|
||||
}
|
||||
|
||||
void TutorialMG1Vs3AltExec(void) {
|
||||
HostWinExec(0x2E0028);
|
||||
HostWinExec(0x2E0029);
|
||||
boardTutorialData[0] = 0;
|
||||
BoardStatusItemSet(0);
|
||||
}
|
||||
|
||||
void TutorialShopExec(void) {
|
||||
HostWinExec(0x2E002D);
|
||||
}
|
||||
|
||||
void TutorialLotteryExec(void) {
|
||||
HostWinExec(0x2E002F);
|
||||
}
|
||||
|
||||
void TutorialBooHouseExec(void) {
|
||||
HostWinExec(0x2E0031);
|
||||
}
|
||||
|
||||
void TutorialNullExec(void) {
|
||||
|
||||
}
|
||||
|
|
@ -3,156 +3,36 @@
|
|||
#include "game/pad.h"
|
||||
#include "game/data.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/board/ui.h"
|
||||
|
||||
char lbl_1_data_98[] = "@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000";
|
||||
static s16 sprList[11];
|
||||
static s16 sprCurr;
|
||||
|
||||
w10DllUnk03 lbl_1_data_C6[11] = {
|
||||
1, -1, -1,
|
||||
2, -1, -1,
|
||||
4, -1, -1,
|
||||
5, -1, -1,
|
||||
5, -1, -1,
|
||||
4, -1, -1,
|
||||
1, -1, -1,
|
||||
3, -1, -1,
|
||||
2, -1, -1,
|
||||
4, -1, -1,
|
||||
5, 6, -1,
|
||||
};
|
||||
|
||||
w10DllUnk04 lbl_1_data_108[42] = {
|
||||
{0x0000, 0000, fn_1_D2C},
|
||||
{0x0001, 0000, fn_1_D54},
|
||||
{0x0002, 0000, fn_1_D7C},
|
||||
{0x0003, 0000, fn_1_DA4},
|
||||
{0x0003, 0000, fn_1_DCC},
|
||||
{0x0003, 0000, fn_1_DF4},
|
||||
{0x0003, 0000, fn_1_E1C},
|
||||
{0x0004, 0000, fn_1_E44},
|
||||
{0x0005, 0000, fn_1_E94},
|
||||
{0x0006, 0000, fn_1_EBC},
|
||||
{0x0007, 0000, fn_1_EE4},
|
||||
{0x000A, 0000, fn_1_EE8},
|
||||
{0x000B, 0000, fn_1_F30},
|
||||
{0x0010, 0000, fn_1_F6C},
|
||||
{0x0011, 0000, fn_1_FB8},
|
||||
{0x000C, 0000, fn_1_1010},
|
||||
{0x000D, 0000, fn_1_105C},
|
||||
{0x000E, 0000, fn_1_1098},
|
||||
{0x000E, 0000, fn_1_10C0},
|
||||
{0x000F, 0000, fn_1_10F8},
|
||||
{0x0012, 0000, fn_1_1134},
|
||||
{0x0014, 0000, fn_1_1178},
|
||||
{0x0015, 0000, fn_1_11A0},
|
||||
{0x0016, 0000, fn_1_11EC},
|
||||
{0x0005, 0000, fn_1_1240},
|
||||
{0x0017, 0000, fn_1_1278},
|
||||
{0x0007, 0000, fn_1_12A0},
|
||||
{0x0005, 0000, fn_1_12DC},
|
||||
{0x0017, 0000, fn_1_1304},
|
||||
{0x0018, 0000, fn_1_132C},
|
||||
{0x0019, 0000, fn_1_1354},
|
||||
{0x0008, 0000, fn_1_137C},
|
||||
{0x0009, 0000, fn_1_13A4},
|
||||
{0x001A, 0000, fn_1_176C},
|
||||
{0x001B, 0000, fn_1_179C},
|
||||
{0x001B, 0000, fn_1_17F4},
|
||||
{0x001B, 0000, fn_1_1834},
|
||||
{0x001B, 0000, fn_1_18BC},
|
||||
{0x001C, 0000, fn_1_1908},
|
||||
{0x001C, 0000, fn_1_1930},
|
||||
{0x001C, 0000, fn_1_1958},
|
||||
{-1, 0, 0},
|
||||
};
|
||||
|
||||
char lbl_1_data_258[] = "Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n";
|
||||
|
||||
s32 lbl_1_data_2A8[11] = {
|
||||
MAKE_DATA_NUM(DATADIR_W10, 4),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 5),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 6),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 7),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 8),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 9),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 10),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 11),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 12),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 13),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 14)
|
||||
};
|
||||
|
||||
void fn_1_176C(void) {
|
||||
fn_1_C10(1);
|
||||
fn_1_BA0(0x2E0024);
|
||||
}
|
||||
|
||||
void fn_1_179C(void) {
|
||||
fn_1_BA0(0x2E0025);
|
||||
GWPlayer[1].color = 2;
|
||||
GWPlayer[3].color = 2;
|
||||
}
|
||||
|
||||
void fn_1_17F4(void) {
|
||||
fn_1_BA0(0x2E0026);
|
||||
GWPlayer[0].color = 2;
|
||||
}
|
||||
|
||||
void fn_1_1834(void) {
|
||||
fn_1_BA0(0x2E0027);
|
||||
GWPlayer[0].color = 1;
|
||||
GWPlayer[1].color = 1;
|
||||
GWPlayer[2].color = 1;
|
||||
GWPlayer[3].color = 2;
|
||||
}
|
||||
|
||||
void fn_1_18BC(void) {
|
||||
fn_1_BA0(0x2E0028);
|
||||
fn_1_BA0(0x2E0029);
|
||||
boardTutorialData = 0;
|
||||
BoardStatusItemSet(0);
|
||||
}
|
||||
|
||||
void fn_1_1908(void) {
|
||||
fn_1_BA0(0x2E002D);
|
||||
}
|
||||
|
||||
void fn_1_1930(void) {
|
||||
fn_1_BA0(0x2E002F);
|
||||
}
|
||||
|
||||
void fn_1_1958(void) {
|
||||
fn_1_BA0(0x2E0031);
|
||||
}
|
||||
|
||||
void fn_1_1980(void) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_1984(void) {
|
||||
s32 contPortIndex;
|
||||
static void CloseTutorial(void) {
|
||||
s32 port;
|
||||
s32 i;
|
||||
|
||||
if (lbl_1_bss_C == 0) {
|
||||
if (tutorialDoneF == 0) {
|
||||
if (WipeStatGet() != 0) {
|
||||
HuWinDispOff(lbl_1_bss_E);
|
||||
HuWinDispOff(tutorialExitWin);
|
||||
return;
|
||||
}
|
||||
HuWinDispOn(lbl_1_bss_E);
|
||||
HuWinDispOn(tutorialExitWin);
|
||||
if (BoardIsKill() != 0) {
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(GWPlayer); i++) {
|
||||
contPortIndex = GWPlayer[i].port;
|
||||
if (contPortIndex == -1) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
port = GWPlayer[i].port;
|
||||
if (port == -1) {
|
||||
continue;
|
||||
}
|
||||
if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & PAD_BUTTON_START) {
|
||||
if (HuPadStatGet(port) == 0 && HuPadBtnDown[port] & PAD_BUTTON_START) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i != 4) {
|
||||
lbl_1_bss_C = 1;
|
||||
OSReport(lbl_1_data_98);
|
||||
tutorialDoneF = 1;
|
||||
OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n");
|
||||
BoardAudSeqFadeOut(0, 0x1F3);
|
||||
BoardKill();
|
||||
BoardTutorialHookSet(NULL);
|
||||
|
|
@ -160,93 +40,138 @@ void fn_1_1984(void) {
|
|||
}
|
||||
}
|
||||
|
||||
int fn_1_1AAC(s16 arg0, s32 arg1) {
|
||||
s32 i;
|
||||
if (arg0 == 0x1E) {
|
||||
if (lbl_1_bss_C == 0) {
|
||||
if (WipeStatGet() != 0) {
|
||||
HuWinDispOff(lbl_1_bss_E);
|
||||
} else {
|
||||
HuWinDispOn(lbl_1_bss_E);
|
||||
if (BoardIsKill() == 0) {
|
||||
s32 contPortIndex;
|
||||
for (i = 0; i < ARRAY_COUNT(GWPlayer); i++) {
|
||||
contPortIndex = GWPlayer[i].port;
|
||||
if (contPortIndex == -1) {
|
||||
continue;
|
||||
}
|
||||
if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & 0x1000) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i != 4) {
|
||||
lbl_1_bss_C = 1;
|
||||
OSReport(lbl_1_data_98);
|
||||
BoardAudSeqFadeOut(0, 0x1F3);
|
||||
BoardKill();
|
||||
BoardTutorialHookSet(NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static s16 rollDataTbl[11][3] = {
|
||||
1, -1, -1,
|
||||
2, -1, -1,
|
||||
4, -1, -1,
|
||||
5, -1, -1,
|
||||
5, -1, -1,
|
||||
4, -1, -1,
|
||||
1, -1, -1,
|
||||
3, -1, -1,
|
||||
2, -1, -1,
|
||||
4, -1, -1,
|
||||
5, 6, -1,
|
||||
};
|
||||
|
||||
static TutorialScene sceneTbl[42] = {
|
||||
{0, TutorialStartExec},
|
||||
{1, TutorialPreRollExec},
|
||||
{2, TutorialOrderExec},
|
||||
{3, TutorialP1StartExec},
|
||||
{3, TutorialP2StartExec},
|
||||
{3, TutorialP3StartExec},
|
||||
{3, TutorialP4StartExec},
|
||||
{4, TutorialGameStartExec},
|
||||
{5, TutorialRollExec},
|
||||
{6, TutorialMoveExec},
|
||||
{7, TutorialLandExec},
|
||||
{10, TutorialLandBlueExec},
|
||||
{11, TutorialLandRedExec},
|
||||
{16, TutorialLandHappenExec},
|
||||
{17, TutorialLandFortuneExec},
|
||||
{12, TutorialLandBowserExec},
|
||||
{13, TutorialLandMushroomExec},
|
||||
{14, TutorialMushroomMegaExec},
|
||||
{14, TutorialMushroomMiniExec},
|
||||
{15, TutorialLandBattleExec},
|
||||
{18, TutorialLandWarpExec},
|
||||
{20, TutorialWarpDecideExec},
|
||||
{21, TutorialBlockStarExec},
|
||||
{22, TutorialBlockCoinExec},
|
||||
{5, TutorialMiniMegaExec},
|
||||
{23, TutorialMiniUseExec},
|
||||
{7, TutorialMiniStopExec},
|
||||
{5, TutorialMegaUseExec},
|
||||
{23, TutorialMegaDiceExec},
|
||||
{24, TutorialMegaStompExec},
|
||||
{25, TutorialMegaEventExec},
|
||||
{8, TutorialMegaStopExec},
|
||||
{9, TutorialEndExec},
|
||||
{26, TutorialMGStatusExec},
|
||||
{27, TutorialMG4PExec},
|
||||
{27, TutorialMG2Vs2Exec},
|
||||
{27, TutorialMG1Vs3Exec},
|
||||
{27, TutorialMG1Vs3AltExec},
|
||||
{28, TutorialShopExec},
|
||||
{28, TutorialLotteryExec},
|
||||
{28, TutorialBooHouseExec},
|
||||
{-1, NULL },
|
||||
};
|
||||
|
||||
int TutorialHookExec(s16 arg0, s32 arg1) {
|
||||
if (arg0 == 30) {
|
||||
CloseTutorial();
|
||||
return;
|
||||
}
|
||||
if (arg0 != 0x1D) {
|
||||
OSReport(lbl_1_data_258,
|
||||
if (arg0 != 29) {
|
||||
OSReport("Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n",
|
||||
GWPlayer[0].com, GWPlayer[1].com,
|
||||
GWPlayer[2].com, GWPlayer[3].com,
|
||||
lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6);
|
||||
if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) {
|
||||
boardWork->scene, arg0, arg1, boardWork->dice, boardWork->msg);
|
||||
if (sceneTbl[boardWork->scene].cue != -1) {
|
||||
if (arg0 == 5) {
|
||||
BoardRollTutorialSet(&lbl_1_data_C6[lbl_1_bss_0->unk4++]);
|
||||
BoardRollTutorialSet(&rollDataTbl[boardWork->dice++][0]);
|
||||
}
|
||||
if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) {
|
||||
void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4;
|
||||
temp_r3_3();
|
||||
if (arg0 == sceneTbl[boardWork->scene].cue) {
|
||||
TutorialSceneFunc func = sceneTbl[boardWork->scene++].func;
|
||||
func();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1D68(void) {
|
||||
s32 temp_r4;
|
||||
s32 temp_r5;
|
||||
static s32 tutorialSprTbl[11] = {
|
||||
DATA_MAKE_NUM(DATADIR_W10, 4),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 5),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 6),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 7),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 8),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 9),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 10),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 11),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 12),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 13),
|
||||
DATA_MAKE_NUM(DATADIR_W10, 14)
|
||||
};
|
||||
|
||||
void TutorialSprCreate(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 11; i++) {
|
||||
lbl_1_bss_22[i] = espEntry(lbl_1_data_2A8[i], 0, 0);
|
||||
espDispOff(lbl_1_bss_22[i]);
|
||||
sprList[i] = espEntry(tutorialSprTbl[i], 0, 0);
|
||||
espDispOff(sprList[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1DEC(void) {
|
||||
void TutorialSprKill(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 11; i++) {
|
||||
espKill(lbl_1_bss_22[i]);
|
||||
espKill(sprList[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1E3C(s16 arg0, s16 arg1, s16 arg2) {
|
||||
void TutorialSpaceShow(s16 arg0, s16 arg1, s16 arg2) {
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
u32 i;
|
||||
|
||||
lbl_1_bss_20 = lbl_1_bss_22[arg0];
|
||||
espPosSet(lbl_1_bss_20, arg1, arg2);
|
||||
sprCurr = sprList[arg0];
|
||||
espPosSet(sprCurr, arg1, arg2);
|
||||
var_f31 = 0.0f;
|
||||
var_f30 = 0.0f;
|
||||
espDispOn(lbl_1_bss_20);
|
||||
espDispOn(sprCurr);
|
||||
for (i = 0; i < 15; i++) {
|
||||
var_f31 += 0.06666667f;
|
||||
var_f30 += 0.06666667f;
|
||||
espScaleSet(lbl_1_bss_20, var_f31, var_f30);
|
||||
espScaleSet(sprCurr, var_f31, var_f30);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
espScaleSet(lbl_1_bss_20, 1.0f, 1.0f);
|
||||
espScaleSet(sprCurr, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void fn_1_1FB0(void) {
|
||||
void TutorialSpaceHide(void) {
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
u32 i;
|
||||
|
|
@ -256,8 +181,8 @@ void fn_1_1FB0(void) {
|
|||
for (i = 0; i < 15; i++) {
|
||||
var_f31 -= 0.06666667f;
|
||||
var_f30 -= 0.06666667f;
|
||||
espScaleSet(lbl_1_bss_20, var_f31, var_f30);
|
||||
espScaleSet(sprCurr, var_f31, var_f30);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
espDispOff(lbl_1_bss_20);
|
||||
espDispOff(sprCurr);
|
||||
}
|
||||
85
src/REL/w21Dll/main.c
Normal file
85
src/REL/w21Dll/main.c
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#include "game/board/space.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/star.h"
|
||||
#include "game/board/shop.h"
|
||||
|
||||
#include "game/data.h"
|
||||
|
||||
static s16 bgMdl = -1;
|
||||
static s16 fgMdl = -1;
|
||||
static s16 hostMdl = -1;
|
||||
|
||||
static s32 hostMotTbl[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 42),
|
||||
-1
|
||||
};
|
||||
|
||||
static void LightSetHook(void);
|
||||
static void LightResetHook(void);
|
||||
static s32 WalkEvent(void);
|
||||
static s32 WalkMiniEvent(void);
|
||||
static s32 LandEvent(void);
|
||||
|
||||
void BoardCreate(void)
|
||||
{
|
||||
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W21, 0));
|
||||
bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W21, 1), NULL, 0);
|
||||
fn_8006DDE8(bgMdl, -1.0f);
|
||||
BoardModelMotionStart(bgMdl, 0, 0x40000001);
|
||||
fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W21, 2), NULL, 0);
|
||||
fn_8006DDE8(fgMdl, -1.0f);
|
||||
BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(fgMdl, 0, 0x40000001);
|
||||
hostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 41), hostMotTbl, 0);
|
||||
BoardModelPosSet(hostMdl, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(hostMdl, 1, 0x40000001);
|
||||
BoardLightHookSet(LightSetHook, LightResetHook);
|
||||
BoardSpaceWalkEventFuncSet(WalkEvent);
|
||||
BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent);
|
||||
BoardSpaceLandEventFuncSet(LandEvent);
|
||||
BoardStarHostSet(hostMdl);
|
||||
BoardShopHostSet(hostMdl);
|
||||
}
|
||||
|
||||
void BoardDestroy(void)
|
||||
{
|
||||
if(hostMdl != -1) {
|
||||
BoardModelKill(hostMdl);
|
||||
hostMdl = -1;
|
||||
}
|
||||
if(bgMdl != -1) {
|
||||
BoardModelKill(bgMdl);
|
||||
bgMdl = -1;
|
||||
}
|
||||
if(fgMdl != -1) {
|
||||
BoardModelKill(fgMdl);
|
||||
fgMdl = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static void LightSetHook(void)
|
||||
{
|
||||
s16 id = BoardModelIDGet(bgMdl);
|
||||
Hu3DModelLightInfoSet(id, 1);
|
||||
}
|
||||
|
||||
static void LightResetHook(void)
|
||||
{
|
||||
Hu3DFogClear();
|
||||
}
|
||||
|
||||
static s32 WalkEvent(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 WalkMiniEvent(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static s32 LandEvent(void)
|
||||
{
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue