diff --git a/src/f_furniture.c b/src/f_furniture.c index 7aa5002f..c1dc6649 100644 --- a/src/f_furniture.c +++ b/src/f_furniture.c @@ -199,7 +199,7 @@ static Gfx* fFTR_GetTwoTileGfx(int width0, int height0, int scroll_x0, int scrol #include "../src/ftr/ac_ike_jny_tower01.c" #include "../src/ftr/ac_ike_jny_truth01.c" #include "../src/ftr/ac_ike_jpn_tansu01.c" -// #include "../src/ftr/ac_ike_kama_danro01.c" +#include "../src/ftr/ac_ike_kama_danro01.c" // #include "../src/ftr/ac_ike_k_count01.c" #include "../src/ftr/ac_ike_k_iveboy01.c" #include "../src/ftr/ac_ike_k_kid01.c" @@ -208,7 +208,7 @@ static Gfx* fFTR_GetTwoTileGfx(int width0, int height0, int scroll_x0, int scrol #include "../src/ftr/ac_ike_k_sum01.c" #include "../src/ftr/ac_ike_k_otome01.c" #include "../src/ftr/ac_ike_k_sinnen01.c" -// #include "../src/ftr/ac_ike_k_tanabata01.c" +#include "../src/ftr/ac_ike_k_tanabata01.c" #include "../src/ftr/ac_ike_k_turis01.c" #include "../src/ftr/ac_ike_nikki_fan1.c" #include "../src/ftr/ac_ike_nikki_fan2.c" @@ -216,53 +216,53 @@ static Gfx* fFTR_GetTwoTileGfx(int width0, int height0, int scroll_x0, int scrol #include "../src/ftr/ac_ike_nikki_fan4.c" #include "../src/ftr/ac_ike_nikki_fan5.c" #include "../src/ftr/ac_ike_nikki_wafu1.c" -// #include "../src/ftr/ac_ike_pst_pig01.c" +#include "../src/ftr/ac_ike_pst_pig01.c" #include "../src/ftr/ac_ike_pst_tesyu01.c" -// #include "../src/ftr/ac_kob_disksystem8.c" +#include "../src/ftr/ac_kob_disksystem8.c" #include "../src/ftr/ac_kob_getabako1.c" #include "../src/ftr/ac_kob_getabako2.c" #include "../src/ftr/ac_kob_jimudesk.c" #include "../src/ftr/ac_kob_jimuisu.c" -// #include "../src/ftr/ac_kob_locker1.c" +#include "../src/ftr/ac_kob_locker1.c" // #include "../src/ftr/ac_kob_mastersword.c" -// #include "../src/ftr/ac_kob_ncube.c" +#include "../src/ftr/ac_kob_ncube.c" #include "../src/ftr/ac_kob_pipeisu.c" #include "../src/ftr/ac_kob_rika_desk.c" #include "../src/ftr/ac_kob_tobibako.c" -// #include "../src/ftr/ac_kon_ameclock.c" -// #include "../src/ftr/ac_kon_atqclock.c" -// #include "../src/ftr/ac_kon_blueclock.c" -// #include "../src/ftr/ac_kon_cracker.c" +#include "../src/ftr/ac_kon_ameclock.c" +#include "../src/ftr/ac_kon_atqclock.c" +#include "../src/ftr/ac_kon_blueclock.c" +#include "../src/ftr/ac_kon_cracker.c" #include "../src/ftr/ac_kon_gomi03.c" // #include "../src/ftr/ac_kon_gomi04.c" -// #include "../src/ftr/ac_kon_grclock.c" +#include "../src/ftr/ac_kon_grclock.c" #include "../src/ftr/ac_kon_isi01.c" #include "../src/ftr/ac_kon_isi02.c" #include "../src/ftr/ac_kon_isi03.c" #include "../src/ftr/ac_kon_isi04.c" #include "../src/ftr/ac_kon_isi05.c" #include "../src/ftr/ac_kon_isi06.c" -// #include "../src/ftr/ac_kon_jihanki02.c" +#include "../src/ftr/ac_kon_jihanki02.c" #include "../src/ftr/ac_kon_jihanki03.c" -// #include "../src/ftr/ac_kon_mimiclock.c" -// #include "../src/ftr/ac_kon_musya.c" +#include "../src/ftr/ac_kon_mimiclock.c" +#include "../src/ftr/ac_kon_musya.c" #include "../src/ftr/ac_kon_pound.c" -// #include "../src/ftr/ac_kon_redclock.c" -// #include "../src/ftr/ac_kon_sisiodosi.c" +#include "../src/ftr/ac_kon_redclock.c" +#include "../src/ftr/ac_kon_sisiodosi.c" #include "../src/ftr/ac_kon_snowbed.c" -// #include "../src/ftr/ac_kon_snowbox.c" -// #include "../src/ftr/ac_kon_snowclock.c" +#include "../src/ftr/ac_kon_snowbox.c" +#include "../src/ftr/ac_kon_snowclock.c" #include "../src/ftr/ac_kon_snowfreezer.c" #include "../src/ftr/ac_kon_snowsofa.c" #include "../src/ftr/ac_kon_snowtable.c" -// #include "../src/ftr/ac_kon_snowtansu.c" -// #include "../src/ftr/ac_kon_snowtv.c" +#include "../src/ftr/ac_kon_snowtansu.c" +#include "../src/ftr/ac_kon_snowtv.c" #include "../src/ftr/ac_kon_taiju.c" #include "../src/ftr/ac_kon_tubo.c" #include "../src/ftr/ac_kon_tubo2.c" #include "../src/ftr/ac_kon_tubo3.c" #include "../src/ftr/ac_kon_tukue.c" -// #include "../src/ftr/ac_kon_waclock.c" +#include "../src/ftr/ac_kon_waclock.c" #include "../src/ftr/ac_kon_xtree02.c" // #include "../src/ftr/ac_myfmanekin.c" // #include "../src/ftr/ac_myfumbrella.c" diff --git a/src/ftr/ac_ike_k_tanabata01.c b/src/ftr/ac_ike_k_tanabata01.c index cfcc98e0..830ee6cc 100644 --- a/src/ftr/ac_ike_k_tanabata01.c +++ b/src/ftr/ac_ike_k_tanabata01.c @@ -1,5 +1,15 @@ static void fITN_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +extern Gfx int_ike_k_tanabata01_body_model[]; + +static void fITN_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + OPEN_DISP(game->graph); + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_ike_k_tanabata01_body_model); + CLOSE_DISP(game->graph); +} + static aFTR_vtable_c fITN_func = { NULL, NULL, diff --git a/src/ftr/ac_ike_kama_danro01.c b/src/ftr/ac_ike_kama_danro01.c index 558589ba..0b5d48ba 100644 --- a/src/ftr/ac_ike_kama_danro01.c +++ b/src/ftr/ac_ike_kama_danro01.c @@ -1,6 +1,44 @@ static void fIKD_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void fIKD_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +extern Gfx int_ike_kama_danro01_on_model[]; +extern Gfx int_ike_kama_danrofire_off_model[]; + +static void fIKD_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(aFTR_CAN_PLAY_SE(ftr_actor)){ + sAdo_OngenPos((u32)ftr_actor, 0x46, &ftr_actor->position); + } +} +static Gfx* fIKD_GetTwoTileGfx(int x0, int y0, int x1, int y1, GAME* game) { + return two_tex_scroll_dolphin(game->graph, 0, x0, y0, 32, 32, 1, x1, y1, 32, 64); +} + +static void fIKD_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + GAME_PLAY* play = (GAME_PLAY*)game; + int ctr; + Gfx* gfx; + + if(ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY){ + ctr = play->game_frame; + } + else{ + ctr = game->frame_counter; + } + + gfx = fIKD_GetTwoTileGfx(0,0,0,-ctr << 2,game); + + if(gfx != NULL){ + OPEN_DISP(game->graph); + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(NEXT_POLY_XLU_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, gfx); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_ike_kama_danro01_on_model); + gSPDisplayList(NEXT_POLY_XLU_DISP,int_ike_kama_danrofire_off_model); + CLOSE_DISP(game->graph); + } +} + static aFTR_vtable_c fIKD_func = { NULL, &fIKD_mv, diff --git a/src/ftr/ac_ike_pst_pig01.c b/src/ftr/ac_ike_pst_pig01.c index dcb2a460..52893f98 100644 --- a/src/ftr/ac_ike_pst_pig01.c +++ b/src/ftr/ac_ike_pst_pig01.c @@ -2,6 +2,15 @@ extern Gfx int_ike_pst_pig01_on_model[]; extern Gfx int_ike_pst_pig01_onT_model[]; static void fIPP_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); + +static void fIPP_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if((ftr_actor->switch_changed_flag != FALSE) && (Common_Get(now_private)->inventory.wallet != 0)){ + sAdo_OngenTrgStart(0x7C, &ftr_actor->position); + Common_Get(now_private)->inventory.wallet--; + } +} + static aFTR_vtable_c fIPP_func = { NULL, &fIPP_mv, diff --git a/src/ftr/ac_kob_disksystem8.c b/src/ftr/ac_kob_disksystem8.c index 7d02ac70..b2e50937 100644 --- a/src/ftr/ac_kob_disksystem8.c +++ b/src/ftr/ac_kob_disksystem8.c @@ -3,6 +3,40 @@ static void aKobDisksystem8_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* static void aKobDisksystem8_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKobDisksystem8_dt(FTR_ACTOR* ftr_actor, u8* data); +extern u8 int_tak_nes_ds_tex_rgb_i4[]; +extern u16 int_tak_nes_cl_pal[]; +extern Gfx int_tak_nes01_on_model[]; +extern Gfx int_tak_nes01_onT_model[]; +extern Gfx int_tak_nes01_game_on_model[]; + +static void aKobDisksystem8_ct(FTR_ACTOR* ftr_actor, u8* data){ + +} + +static void aKobDisksystem8_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + if(Common_Get(clip).my_room_clip != NULL){ + Common_Get(clip).my_room_clip->famicom_emu_common_move_proc(ftr_actor,my_room_actor,game,0,-1); + } +} + +static void aKobDisksystem8_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8,int_tak_nes_ds_tex_rgb_i4); + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_9,int_tak_nes_cl_pal); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_tak_nes01_on_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_tak_nes01_onT_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_tak_nes01_game_on_model); + CLOSE_DISP(game->graph); +} + +static void aKobDisksystem8_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKobDisksystem8_func = { &aKobDisksystem8_ct, &aKobDisksystem8_mv, diff --git a/src/ftr/ac_kob_locker1.c b/src/ftr/ac_kob_locker1.c index 7ffda0d8..92362169 100644 --- a/src/ftr/ac_kob_locker1.c +++ b/src/ftr/ac_kob_locker1.c @@ -3,6 +3,34 @@ static void aKobLocker1_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* gam static void aKobLocker1_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKobLocker1_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kob_locker1; +extern cKF_Skeleton_R_c cKF_bs_r_int_kob_locker1; + +static void aKobLocker1_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kob_locker1, &cKF_ba_r_int_kob_locker1, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_kob_locker1, NULL); + keyf->frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKobLocker1_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(Common_Get(clip).my_room_clip != NULL){ + Common_Get(clip).my_room_clip->open_close_common_move_proc(ftr_actor,my_room_actor,game,1.0f,16.0f); + } +} + +static void aKobLocker1_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, ftr_actor->skeleton_mtx[game->frame_counter & 1] , NULL, NULL, NULL); +} + +static void aKobLocker1_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKobLocker1_func = { &aKobLocker1_ct, &aKobLocker1_mv, diff --git a/src/ftr/ac_kob_ncube.c b/src/ftr/ac_kob_ncube.c index 62bd1ee1..22f5aba2 100644 --- a/src/ftr/ac_kob_ncube.c +++ b/src/ftr/ac_kob_ncube.c @@ -5,6 +5,23 @@ static void aKobNcube_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, static void aKobNcube_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKobNcube_dt(FTR_ACTOR* ftr_actor, u8* data); + +static void aKobNcube_ct(FTR_ACTOR* ftr_actor, u8* data){ + +} + +static void aKobNcube_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + +} + +static void aKobNcube_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + +} + +static void aKobNcube_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKobNcube_func = { &aKobNcube_ct, &aKobNcube_mv, diff --git a/src/ftr/ac_kon_ameclock.c b/src/ftr/ac_kon_ameclock.c index 31d60b97..87d0fb21 100644 --- a/src/ftr/ac_kon_ameclock.c +++ b/src/ftr/ac_kon_ameclock.c @@ -3,6 +3,50 @@ static void aKonAmeclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* ga static void aKonAmeclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonAmeclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_ameclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_ameclock; + +static int aKonAmeclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonAmeclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 3){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 5){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonAmeclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, ftr_actor->skeleton_mtx[game->frame_counter & 1] , aKonAmeclock_DwBefore, aKonAmeclock_DwAfter, ftr_actor); +} + +static void aKonAmeclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_ameclock, &cKF_ba_r_int_kon_ameclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_ameclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonAmeclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_play(&ftr_actor->keyframe); +} + +static void aKonAmeclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonAmeclock_func = { &aKonAmeclock_ct, &aKonAmeclock_mv, diff --git a/src/ftr/ac_kon_atqclock.c b/src/ftr/ac_kon_atqclock.c index 7fb857f5..85d724a7 100644 --- a/src/ftr/ac_kon_atqclock.c +++ b/src/ftr/ac_kon_atqclock.c @@ -3,6 +3,73 @@ static void aKonAtqclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* ga static void aKonAtqclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonAtqclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_atqclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_atqclock; + +static int aKonAtqclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonAtqclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 5){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 7){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonAtqclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, ftr_actor->skeleton_mtx[game->frame_counter & 1] , aKonAtqclock_DwBefore, aKonAtqclock_DwAfter, ftr_actor); +} + +static void aKonAtqclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_atqclock, &cKF_ba_r_int_kon_atqclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_atqclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonAtqclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + aMR_clock_info_c* clock_info; + + if(Common_Get(clip).my_room_clip == NULL){ + return; + } + clock_info = Common_Get(clip).my_room_clip->clock_info_p; + keyf = &ftr_actor->keyframe; + + if(clock_info->tick_stop != 0){ + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_atqclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + } + else if(clock_info->tick0 == 1 || clock_info->tick1 == 1){ + if(aFTR_CAN_PLAY_SE(ftr_actor)){ + sAdo_OngenTrgStart(0x12D, &ftr_actor->position); + } + cKF_SkeletonInfo_R_play(keyf); + } + else{ + cKF_SkeletonInfo_R_play(keyf); + } + +} + +static void aKonAtqclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonAtqclock_func = { &aKonAtqclock_ct, &aKonAtqclock_mv, diff --git a/src/ftr/ac_kon_blueclock.c b/src/ftr/ac_kon_blueclock.c index f4034fd1..a758f5cf 100644 --- a/src/ftr/ac_kon_blueclock.c +++ b/src/ftr/ac_kon_blueclock.c @@ -3,6 +3,57 @@ static void aKonBlueclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* g static void aKonBlueclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonBlueclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_blueclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_blueclock; + +static int aKonBlueclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonBlueclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 3){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 5){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonBlueclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + _texture_z_light_fog_prim(game->graph); + _texture_z_light_fog_prim_xlu(game->graph); + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonBlueclock_DwBefore, aKonBlueclock_DwAfter, ftr_actor); +} + +static void aKonBlueclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_blueclock, &cKF_ba_r_int_kon_blueclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_blueclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonBlueclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonBlueclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonBlueclock_func = { &aKonBlueclock_ct, &aKonBlueclock_mv, diff --git a/src/ftr/ac_kon_cracker.c b/src/ftr/ac_kon_cracker.c index 88582782..a3a6b65a 100644 --- a/src/ftr/ac_kon_cracker.c +++ b/src/ftr/ac_kon_cracker.c @@ -4,6 +4,25 @@ static void aKonCracker_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* gam static void aKonCracker_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonCracker_dt(FTR_ACTOR* ftr_actor, u8* data); +static void aKonCracker_ct(FTR_ACTOR* ftr_actor, u8* data) { + +} + +static void aKonCracker_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + if (aFTR_CAN_PLAY_SE(ftr_actor) && (ftr_actor->keyframe.frame_control.current_frame == 8.0f || + ftr_actor->keyframe.frame_control.current_frame == 24.0f)) { + sAdo_OngenTrgStart(0x812C, &ftr_actor->position); + } +} + +static void aKonCracker_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + +} + +static void aKonCracker_dt(FTR_ACTOR* ftr_actor, u8* data) { + +} + static aFTR_vtable_c aKonCracker_func = { &aKonCracker_ct, &aKonCracker_mv, diff --git a/src/ftr/ac_kon_grclock.c b/src/ftr/ac_kon_grclock.c index 40eff126..135d6408 100644 --- a/src/ftr/ac_kon_grclock.c +++ b/src/ftr/ac_kon_grclock.c @@ -3,6 +3,55 @@ static void aKonGrclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* gam static void aKonGrclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonGrclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_grclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_grclock; + +static int aKonGrclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonGrclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 3){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 5){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonGrclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonGrclock_DwBefore, aKonGrclock_DwAfter, ftr_actor); +} + +static void aKonGrclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_grclock, &cKF_ba_r_int_kon_grclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_grclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonGrclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonGrclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonGrclock_func = { &aKonGrclock_ct, &aKonGrclock_mv, diff --git a/src/ftr/ac_kon_jihanki02.c b/src/ftr/ac_kon_jihanki02.c index fbe1b48a..0bf812b7 100644 --- a/src/ftr/ac_kon_jihanki02.c +++ b/src/ftr/ac_kon_jihanki02.c @@ -3,6 +3,36 @@ static void aKonJihanki02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* g static void aKonJihanki02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonJihanki02_dt(FTR_ACTOR* ftr_actor, u8* data); +extern Gfx int_kon_jihanki02_offT_model[]; +extern Gfx int_kon_jihanki02_off_model[]; +extern Gfx int_kon_jihanki02_onT_model[]; +extern Gfx int_kon_jihanki02_on_model[]; + +static void aKonJihanki02_ct(FTR_ACTOR* ftr_actor, u8* data){ + +} + +static void aKonJihanki02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ +} + +static void aKonJihanki02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_jihanki02_on_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_jihanki02_off_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_jihanki02_onT_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_jihanki02_offT_model); + + CLOSE_DISP(game->graph); +} + +static void aKonJihanki02_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonJihanki02_func = { &aKonJihanki02_ct, &aKonJihanki02_mv, diff --git a/src/ftr/ac_kon_mimiclock.c b/src/ftr/ac_kon_mimiclock.c index b355c0cc..eed13957 100644 --- a/src/ftr/ac_kon_mimiclock.c +++ b/src/ftr/ac_kon_mimiclock.c @@ -3,6 +3,57 @@ static void aKonMimiclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* g static void aKonMimiclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonMimiclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_mimiclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_mimiclock; + +static int aKonMimiclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonMimiclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 3){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 6){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonMimiclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + _texture_z_light_fog_prim(game->graph); + _texture_z_light_fog_prim_xlu(game->graph); + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonMimiclock_DwBefore, aKonMimiclock_DwAfter, ftr_actor); +} + +static void aKonMimiclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_mimiclock, &cKF_ba_r_int_kon_mimiclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_mimiclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonMimiclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonMimiclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonMimiclock_func = { &aKonMimiclock_ct, &aKonMimiclock_mv, diff --git a/src/ftr/ac_kon_musya.c b/src/ftr/ac_kon_musya.c index 619b57d1..4edc6fea 100644 --- a/src/ftr/ac_kon_musya.c +++ b/src/ftr/ac_kon_musya.c @@ -3,6 +3,39 @@ static void aKonMusya_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, static void aKonMusya_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonMusya_dt(FTR_ACTOR* ftr_actor, u8* data); +extern Gfx int_kon_musya_atama_onT_model[]; +extern Gfx int_kon_musya_atama_on_model[]; +extern Gfx int_kon_musya_dou_onT_model[]; +extern Gfx int_kon_musya_hako_on_model[]; +extern Gfx int_kon_musya_tare_onT_model[]; + +static void aKonJihanki02_ct(FTR_ACTOR* ftr_actor, u8* data){ + +} + +static void aKonJihanki02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ +} + +static void aKonJihanki02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_musya_hako_on_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_musya_atama_on_model); + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_musya_tare_onT_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_musya_dou_onT_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_musya_atama_onT_model); + + CLOSE_DISP(game->graph); +} + +static void aKonJihanki02_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonMusya_func = { &aKonMusya_ct, &aKonMusya_mv, diff --git a/src/ftr/ac_kon_redclock.c b/src/ftr/ac_kon_redclock.c index c00dbdbf..86d74df9 100644 --- a/src/ftr/ac_kon_redclock.c +++ b/src/ftr/ac_kon_redclock.c @@ -3,6 +3,55 @@ static void aKonRedclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* ga static void aKonRedclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonRedclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_redclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_redclock; + +static int aKonRedclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonRedclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 3){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 4){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonRedclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonRedclock_DwBefore, aKonRedclock_DwAfter, ftr_actor); +} + +static void aKonRedclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_redclock, &cKF_ba_r_int_kon_redclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_redclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonRedclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonRedclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonRedclock_func = { &aKonRedclock_ct, &aKonRedclock_mv, diff --git a/src/ftr/ac_kon_sisiodosi.c b/src/ftr/ac_kon_sisiodosi.c index de8f7f4d..60d93abc 100644 --- a/src/ftr/ac_kon_sisiodosi.c +++ b/src/ftr/ac_kon_sisiodosi.c @@ -2,6 +2,19 @@ extern aFTR_rig_c aKonSisiodosi_sklkey; static void aKonSisiodosi_ct(FTR_ACTOR* ftr_actor, u8* data); static void aKonSisiodosi_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +static void aKonSisiodosi_ct(FTR_ACTOR* ftr_actor, u8* data){ + ftr_actor->keyframe.frame_control.current_frame = (int)(1.0f + RANDOM_F(119.0f)); +} + +static void aKonSisiodosi_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(ftr_actor->keyframe.frame_control.current_frame == 20.0f){ + if(aFTR_CAN_PLAY_SE(ftr_actor)){ + sAdo_OngenTrgStart(0x18, &ftr_actor->position); + } + } +} + static aFTR_vtable_c aKonSisiodosi_func = { &aKonSisiodosi_ct, &aKonSisiodosi_mv, diff --git a/src/ftr/ac_kon_snowbox.c b/src/ftr/ac_kon_snowbox.c index ee15c33c..d768a61f 100644 --- a/src/ftr/ac_kon_snowbox.c +++ b/src/ftr/ac_kon_snowbox.c @@ -3,6 +3,44 @@ static void aKonSnowbox_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* gam static void aKonSnowbox_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonSnowbox_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_snowbox; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_snowbox; + +static void aKonSnowbox_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_snowbox, &cKF_ba_r_int_kon_snowbox, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_kon_snowbox, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonSnowbox_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(Common_Get(clip).my_room_clip != NULL){ + Common_Get(clip).my_room_clip->open_close_common_move_proc(ftr_actor,my_room_actor,game,1.0f,16.0f); + } +} + +static void aKonSnowbox_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_DISP(game->graph); + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , NULL, NULL, NULL); +} + + +static void aKonSnowbox_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonSnowbox_func = { &aKonSnowbox_ct, &aKonSnowbox_mv, diff --git a/src/ftr/ac_kon_snowclock.c b/src/ftr/ac_kon_snowclock.c index 187dd8c2..59286011 100644 --- a/src/ftr/ac_kon_snowclock.c +++ b/src/ftr/ac_kon_snowclock.c @@ -3,6 +3,79 @@ static void aKonSnowclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* g static void aKonSnowclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonSnowclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_snowclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_snowclock; +extern Gfx int_kon_snowclock_long_model[]; +extern Gfx int_kon_snowclock_short_model[]; + +static int aKonSnowclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + + if(jointNum == 6){ + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowclock_short_model); + + CLOSE_DISP(game->graph); + } + else if(jointNum == 7){ + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowclock_long_model); + + CLOSE_DISP(game->graph); + } + return 1; +} + +static int aKonSnowclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 6){ + joint1->z -= Common_Get(time).rad_hour; + } + else if(jointNum == 7){ + joint1->z -= Common_Get(time).rad_min; + } + + return 1; +} + +static void aKonSnowclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonSnowclock_DwBefore, aKonSnowclock_DwAfter, ftr_actor); +} + +static void aKonSnowclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_snowclock, &cKF_ba_r_int_kon_snowclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_snowclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + +static void aKonSnowclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonSnowclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + + + static aFTR_vtable_c aKonSnowclock_func = { &aKonSnowclock_ct, &aKonSnowclock_mv, diff --git a/src/ftr/ac_kon_snowtansu.c b/src/ftr/ac_kon_snowtansu.c index eb9ccc2e..00268160 100644 --- a/src/ftr/ac_kon_snowtansu.c +++ b/src/ftr/ac_kon_snowtansu.c @@ -3,6 +3,46 @@ static void aKonSnowtansu_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* g static void aKonSnowtansu_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonSnowtansu_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_snowtansu; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_snowtansu; + +static void aKonsnowtansu_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_snowtansu, &cKF_ba_r_int_kon_snowtansu, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_kon_snowtansu, NULL); + keyf->frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_play(keyf); + +} + +static void aKonsnowtansu_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(Common_Get(clip).my_room_clip != NULL){ + Common_Get(clip).my_room_clip->open_close_common_move_proc(ftr_actor,my_room_actor,game,1.0f,16.0f); + } +} + + + +static void aKonsnowtansu_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_DISP(game->graph); + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , NULL, NULL, NULL); +} + + +static void aKonsnowtansu_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonSnowtansu_func = { &aKonSnowtansu_ct, &aKonSnowtansu_mv, diff --git a/src/ftr/ac_kon_snowtv.c b/src/ftr/ac_kon_snowtv.c index 096cf6b3..ff826b5f 100644 --- a/src/ftr/ac_kon_snowtv.c +++ b/src/ftr/ac_kon_snowtv.c @@ -3,6 +3,77 @@ static void aKonsnowtv_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game static void aKonsnowtv_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonsnowtv_dt(FTR_ACTOR* ftr_actor, u8* data); +extern u8 int_kon_snowtv07a_TA_tex_txt[]; +extern u8 int_kon_snowtv07b_TA_tex_txt[]; +extern u8 int_kon_snowtv07c_TA_tex_txt[]; +extern u8 int_kon_snowtv07d_TA_tex_txt[]; + +extern Gfx int_kon_snowtv_body_model[]; +extern Gfx int_kon_snowtv_face_model[]; + +u8* aKonsnowtv_on_anime[] = { + int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, + int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, + int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, + int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, + int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, + int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, + int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, + int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, + int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, + int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, +}; + +static void aKonsnowtv_ct(FTR_ACTOR* ftr_actor, u8* data){ + +} +static void aKonsnowtv_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + + if(ftr_actor->switch_bit != FALSE){ + if(aFTR_CAN_PLAY_SE(ftr_actor)){ + sAdo_OngenPos((u32) ftr_actor, 0x2B, &ftr_actor->position); + } + ftr_actor->tex_animation.frame++; + + if(ftr_actor->tex_animation.frame >= 60 || ftr_actor->tex_animation.frame < 0){ + ftr_actor->tex_animation.frame = 0; + } + + } + + if(ftr_actor->switch_changed_flag != FALSE){ + if(ftr_actor->switch_bit != FALSE){ + sAdo_OngenTrgStart(0x16, &ftr_actor->position); + } + else{ + sAdo_OngenTrgStart(0x17, &ftr_actor->position); + } + } + +} +static void aKonsnowtv_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if(ftr_actor->switch_bit != FALSE){ + u8* anime = aKonsnowtv_on_anime[(s16)(ftr_actor->tex_animation.frame >> 1)]; + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, anime); + } + else{ + gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, int_kon_snowtv07a_TA_tex_txt); + } + + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowtv_face_model); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowtv_body_model); + + CLOSE_DISP(game->graph); +} +static void aKonsnowtv_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + + static aFTR_vtable_c aKonsnowtv_func = { &aKonsnowtv_ct, &aKonsnowtv_mv, diff --git a/src/ftr/ac_kon_waclock.c b/src/ftr/ac_kon_waclock.c index 0cc5722c..b9598b6f 100644 --- a/src/ftr/ac_kon_waclock.c +++ b/src/ftr/ac_kon_waclock.c @@ -3,6 +3,53 @@ static void aKonWaclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* gam static void aKonWaclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aKonWaclock_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_kon_waclock; +extern cKF_Skeleton_R_c cKF_bs_r_int_kon_waclock; + +static int aKonWaclock_DwAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static int aKonWaclock_DwBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + + if(jointNum == 2){ + joint1->z -= Common_Get(time).rad_hour; + } + + return 1; +} + +static void aKonWaclock_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx , aKonWaclock_DwBefore, aKonWaclock_DwAfter, ftr_actor); +} + +static void aKonwaclock_ct(FTR_ACTOR* ftr_actor, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_kon_waclock, &cKF_ba_r_int_kon_waclock, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyf, &cKF_ba_r_int_kon_waclock, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + +} + + +static void aKonwaclock_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + cKF_SkeletonInfo_R_play(keyf); +} + +static void aKonwaclock_dt(FTR_ACTOR* ftr_actor, u8* data){ + +} + static aFTR_vtable_c aKonWaclock_func = { &aKonWaclock_ct, &aKonWaclock_mv,