diff --git a/include/game/hsfmotion.h b/include/game/hsfmotion.h index fa8dc409..7ec10d4c 100644 --- a/include/game/hsfmotion.h +++ b/include/game/hsfmotion.h @@ -4,6 +4,9 @@ #include "dolphin.h" #include "game/hsfformat.h" +#define Hu3DJointMotionFile(model, data_id) (Hu3DJointMotion((model), HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) + + typedef struct motion_data { s16 unk_00; s16 unk_02; diff --git a/include/game/objsub.h b/include/game/objsub.h index c83ecd03..2cc262d0 100644 --- a/include/game/objsub.h +++ b/include/game/objsub.h @@ -14,9 +14,7 @@ typedef struct mg_info { u32 data_dir; u32 inst_pic[3]; u32 mg_pic[3]; - u32 rules_mess; - u32 control_mess[2]; - u32 advice_mess; + u32 inst_mess[4]; } MgInfo; s32 omMgIndexGet(s16 overlay); diff --git a/include/game/window.h b/include/game/window.h index 86d5eb0e..ba0aceac 100644 --- a/include/game/window.h +++ b/include/game/window.h @@ -136,5 +136,8 @@ void HuWinExAnimIn(s16 window); void HuWinExAnimOut(s16 window); void HuWinExCleanup(s16 window); void HuWinExAnimPopIn(s16 window, s16 portrait); +void *MessData_MesPtrGet(void *data, u32 index); + +extern void *messDataPtr; #endif diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index e70cc7c7..b5ada221 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -3,6 +3,9 @@ #include "game/pad.h" #include "game/gamework_data.h" #include "game/hsfman.h" +#include "game/hsfdraw.h" +#include "game/printfunc.h" + #include "game/hsfmotion.h" #include "game/wipe.h" @@ -12,11 +15,14 @@ #include "game/audio.h" #include "game/window.h" #include "game/sprite.h" +#include "game/chrman.h" + #include "math.h" #include "rel_sqrt_consts.h" void HuSprGrpDrawNoSet(s16 group, s32 draw_no); + static s16 lbl_1_data_0 = 1; static omObjData *lbl_1_bss_60; @@ -142,15 +148,15 @@ void ModuleProlog(void) HuWinInit(1); } -static s8 lbl_1_data_26[][4] = { - { 3, 2, 1, 0 }, - { 1, 1, 1, 0 }, - { 1, 1, 0, 0 }, - { 0, 1, 2, 3 }, - { 3, 2, 1, 0 }, - { 0, -1, -1, -1 }, - { 0, -1, -1, -1 }, - { 3, 2, 1, 0 }, +static s8 lbl_1_data_26[] = { + 3, 2, 1, 0, + 1, 1, 1, 0, + 1, 1, 0, 0, + 0, 1, 2, 3, + 3, 2, 1, 0, + 0, -1, -1, -1, + 0, -1, -1, -1, + 3, 2, 1, 0 }; static s8 lbl_1_data_46[] = { @@ -408,4 +414,360 @@ static void fn_1_994(void) while(1) { HuPrcVSleep(); } +} + +static char *lbl_1_data_B0[] = { + "p_pos_a", + "p_pos_b", + "p_pos_c", + "p_pos_d" +}; + +static u8 lbl_1_data_C0[] = { + 8, + 0, + 12, + 4 +}; + +static void fn_1_17E4(void) +{ + float tplvl; + s16 i; + s16 j; + s16 time; + s16 player_cnt; + s16 order; + s16 type; + s16 group_type; + s16 group; + ModelData *model; + s16 player_mdl[4]; + s16 char_tbl[4]; + s16 platform_mdl[4]; + s16 player_order[4]; + s16 mot_tbl[4][3]; + Vec player_pos[4]; + + type = mgInfoTbl[lbl_1_bss_14].type; + player_cnt = lbl_1_data_46[type]; + for(i=0; i= 0) { + tplvl = 0.1*time; + Hu3DModelTPLvlSet(platform_mdl[j], 0.5*tplvl); + Hu3DModelScaleSet(platform_mdl[j], tplvl, tplvl, tplvl); + } + } + } + HuPrcVSleep(); + } + model = &Hu3DData[player_mdl[0]]; + while(lbl_1_data_0 != 4) { + HuPrcVSleep(); + } + for(i=0; i<=45; i++) { + for(j=0; j= 4) { + lbl_1_bss_6 = 0; + } + HuWinMesSet(window, mgInfoTbl[lbl_1_bss_14].inst_mess[lbl_1_bss_6]); + HuWinMesPalSet(window, 7, 0, 0, 192); + HuWinPosSet(window_other, 142.0f, 320.0f); + for(i=0; i<=10; i++) { + HuWinPosSet(window_other, 30.0*sin(M_PI*(i*9.0f)/180.0)+142.0, 160.0*(1.0-cos(M_PI*(i*9.0f)/180.0))+320.0); + HuPrcVSleep(); + } + HuPrcSleep(5); + } + lbl_1_bss_4 = 1; + HuPrcVSleep(); + } + for(i=0; i<=20; i++) { + pos_x = 500.0*(1.0-cos(M_PI*(i*4.5f)/180.0))+142.0; + HuWinPosSet(window, pos_x, 320); + HuPrcVSleep(); + } + HuWinAllKill(); + HuPrcEnd(); + while(1) { + HuPrcVSleep(); + } +} + +static void fn_1_2FA0(void) +{ + +} + +static void fn_1_4174(omObjData *object) +{ + +} + + +static void fn_1_4528(omObjData *object) +{ + +} + +static void fn_1_50B0(ModelData *model, Mtx mtx) +{ + +} + +static void fn_1_5B64(ModelData *model, Mtx mtx) +{ + } \ No newline at end of file diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index 62bfe709..dceadba4 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -3192,7 +3192,7 @@ static void PauseProc(void) char_mess_map[GWPlayerCfg[i].group]++; } mg = omMgIndexGet(omcurovl); - if(mgInfoTbl[mg].control_mess[0] == 0 && mgInfoTbl[mg].control_mess[1] == 0) { + if(mgInfoTbl[mg].inst_mess[1] == 0 && mgInfoTbl[mg].inst_mess[2] == 0) { for(i=1; i<=20; i++) { ratio = sin(M_PI*(i*4.5f)/180.0); HuSprGrpPosSet(work.spr_grp[0], 288.0f, (ratio*290)-50.0f); @@ -3207,18 +3207,18 @@ static void PauseProc(void) HuWinAttrSet(window[2], 0x800); HuWinMesSet(window[2], 0x3300A1); } - if(mgInfoTbl[mg].control_mess[1]) { + if(mgInfoTbl[mg].inst_mess[2]) { s16 insert_idx; window[0] = HuWinExCreateStyled(-10000.0f, 140.0f, 412, 120, -1, 0); HuWinPriSet(window[0], 0); HuWinDispOn(window[0]); HuWinMesSpeedSet(window[0], 0); - HuWinMesSet(window[0], mgInfoTbl[mg].control_mess[0]); + HuWinMesSet(window[0], mgInfoTbl[mg].inst_mess[1]); window[1] = HuWinExCreateStyled(-10000.0f, 276.0f, 412, 120, -1, 0); HuWinPriSet(window[1], 0); HuWinDispOn(window[1]); HuWinMesSpeedSet(window[1], 0); - HuWinMesSet(window[1], mgInfoTbl[mg].control_mess[1]); + HuWinMesSet(window[1], mgInfoTbl[mg].inst_mess[2]); for(i=insert_idx=0; i<4; i++) { for(j=0; j