diff --git a/include/ac_my_room.h b/include/ac_my_room.h index 60979ad8..e2172d28 100644 --- a/include/ac_my_room.h +++ b/include/ac_my_room.h @@ -109,6 +109,9 @@ extern int aMR_GetFurnitureUnit(mActor_name_t ftr); extern mActor_name_t aMR_FurnitureFg_to_FurnitureFgWithDirect(mActor_name_t ftr, int direct); extern void aMR_SameFurnitureSwitchOFF(u16 ftr_name); extern aMR_contact_info_c* aMR_GetContactInfoLayer1(void); +extern FTR_ACTOR* aMR_GetParentFactor(); +extern s16 aMR_GetParentAngleOffset(FTR_ACTOR* ftr_actor, MY_ROOM_ACTOR* my_room_actor); +extern void aMR_SetSurprise(ACTOR* my_room_actor, s16 rot); #ifdef __cplusplus } diff --git a/src/f_furniture.c b/src/f_furniture.c index e67fad4a..a9734855 100644 --- a/src/f_furniture.c +++ b/src/f_furniture.c @@ -172,31 +172,31 @@ static Gfx* fFTR_GetTwoTileGfx(int width0, int height0, int scroll_x0, int scrol #include "../src/ftr/ac_din_trikera_tail.c" #include "../src/ftr/ac_din_trilobite.c" #include "../src/ftr/ac_famicom_common.c" -// #include "../src/ftr/ac_fmanekin.c" -// #include "../src/ftr/ac_fumbrella.c" +#include "../src/ftr/ac_fmanekin.c" +#include "../src/ftr/ac_fumbrella.c" #include "../src/ftr/ac_hnw_common.c" #include "../src/ftr/ac_ike_art_ang.c" #include "../src/ftr/ac_ike_art_fel.c" -// #include "../src/ftr/ac_ike_island_hako01.c" +#include "../src/ftr/ac_ike_island_hako01.c" #include "../src/ftr/ac_ike_island_sensui01.c" -// #include "../src/ftr/ac_ike_island_uku01.c" +#include "../src/ftr/ac_ike_island_uku01.c" #include "../src/ftr/ac_ike_jny_afmen01.c" #include "../src/ftr/ac_ike_jny_botle01.c" #include "../src/ftr/ac_ike_jny_gate01.c" #include "../src/ftr/ac_ike_jny_gojyu01.c" -// #include "../src/ftr/ac_ike_jny_hariko01.c" -// #include "../src/ftr/ac_ike_jny_houi01.c" +#include "../src/ftr/ac_ike_jny_hariko01.c" +#include "../src/ftr/ac_ike_jny_houi01.c" #include "../src/ftr/ac_ike_jny_kibori01.c" #include "../src/ftr/ac_ike_jny_makada01.c" #include "../src/ftr/ac_ike_jny_moai01.c" #include "../src/ftr/ac_ike_jny_ningyo01.c" #include "../src/ftr/ac_ike_jny_pisa01.c" -// #include "../src/ftr/ac_ike_jny_rosia01.c" +#include "../src/ftr/ac_ike_jny_rosia01.c" #include "../src/ftr/ac_ike_jny_sirser01.c" #include "../src/ftr/ac_ike_jny_sirser201.c" -// #include "../src/ftr/ac_ike_jny_syon01.c" +#include "../src/ftr/ac_ike_jny_syon01.c" #include "../src/ftr/ac_ike_jny_tower01.c" -// #include "../src/ftr/ac_ike_jny_truth01.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_k_count01.c" diff --git a/src/ftr/ac_ike_island_hako01.c b/src/ftr/ac_ike_island_hako01.c index f24f9f6c..87ea7e1d 100644 --- a/src/ftr/ac_ike_island_hako01.c +++ b/src/ftr/ac_ike_island_hako01.c @@ -73,7 +73,7 @@ void fIIH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { sAdo_OngenPos((u32)ftr_actor, 0x52, &ftr_actor->position); } } - if (cKF_SkeletonInfo_R_play(keyf) == 1) { + if (cKF_SkeletonInfo_R_play(keyf) == cKF_STATE_STOPPED) { keyf->frame_control.speed = 0.0f; } } diff --git a/src/ftr/ac_ike_jny_hariko01.c b/src/ftr/ac_ike_jny_hariko01.c index 82d68dd9..11439a7f 100644 --- a/src/ftr/ac_ike_jny_hariko01.c +++ b/src/ftr/ac_ike_jny_hariko01.c @@ -2,6 +2,57 @@ static void fIJH_ct(FTR_ACTOR* ftr_actor, u8* data); static void fIJH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void fIJH_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +extern cKF_Skeleton_R_c cKF_bs_r_int_ike_jny_hariko01; +extern cKF_Animation_R_c cKF_ba_r_int_ike_jny_hariko01; + +static void fIJH_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_ike_jny_hariko01, &cKF_ba_r_int_ike_jny_hariko01, ftr_actor->joint, ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_ike_jny_hariko01, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; +} + + +static void fIJH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + cKF_SkeletonInfo_R_c* keyf; + + keyf = &ftr_actor->keyframe; + if (ftr_actor->keyframe.frame_control.speed == 0.0f){ + if (ftr_actor->switch_changed_flag != 0){ + if (aFTR_CAN_PLAY_SE(ftr_actor)){ + sAdo_OngenTrgStart(0x7B, &ftr_actor->position); + } + keyf->frame_control.current_frame = 1.0f; + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.25f; + } + } + else{ + if (cKF_SkeletonInfo_R_play(keyf) != cKF_STATE_STOPPED){ + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.25f; + } + else{ + keyf->frame_control.speed = 0.0f; + } + + } +} + +static void fIJH_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); + + cKF_Si3_draw_R_SV(game,&ftr_actor->keyframe,mtx,NULL,NULL,NULL); + CLOSE_DISP(game->graph); +} + static aFTR_vtable_c fIJH_func = { &fIJH_ct, &fIJH_mv, diff --git a/src/ftr/ac_ike_jny_houi01.c b/src/ftr/ac_ike_jny_houi01.c index 28c9cbc5..634e6f26 100644 --- a/src/ftr/ac_ike_jny_houi01.c +++ b/src/ftr/ac_ike_jny_houi01.c @@ -2,6 +2,134 @@ static void fIJHOUI_ct(FTR_ACTOR* ftr_actor, u8* data); static void fIJHOUI_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void fIJHOUI_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_ike_jny_houi01; +extern cKF_Skeleton_R_c cKF_bs_r_int_ike_jny_houi01; + +static void fIJHOUI_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_ike_jny_houi01, &cKF_ba_r_int_ike_jny_houi01, ftr_actor->joint, + ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_ike_jny_houi01, NULL); + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.speed = 0.0f; + ftr_actor->dynamic_work_s[0] = ftr_actor->state; +} + +static void fIJHOUI_Status2SetMode(FTR_ACTOR* arg0, FTR_ACTOR* ftr_actor) { + switch (arg0->state) { + case aFTR_STATE_STOP: + case aFTR_STATE_PUSH: + case aFTR_STATE_PULL: + default: + break; + case aFTR_STATE_WAIT_LROTATE: + case aFTR_STATE_WAIT_RROTATE: + ftr_actor->dynamic_work_s[1] = 0; + break; + case aFTR_STATE_LROTATE: + ftr_actor->dynamic_work_s[1]++; + if (ftr_actor->dynamic_work_s[1] == 8) { + ftr_actor->dynamic_work_s[2] = 0; + ftr_actor->dynamic_work_f[0] = + (ftr_actor->dynamic_work_f[0] * sin_s(ftr_actor->dynamic_work_s[2])) - 45.0f; + if (ftr_actor->dynamic_work_f[0] < -45.0f) { + ftr_actor->dynamic_work_f[0] = -45.0f; + } + } + break; + case aFTR_STATE_RROTATE: + ftr_actor->dynamic_work_s[1]++; + if (ftr_actor->dynamic_work_s[1] == 8) { + ftr_actor->dynamic_work_s[2] = 0; + ftr_actor->dynamic_work_f[0] = + 45.0f + (ftr_actor->dynamic_work_f[0] * sin_s(ftr_actor->dynamic_work_s[2])); + if (ftr_actor->dynamic_work_f[0] > 45.0f) { + ftr_actor->dynamic_work_f[0] = 45.0f; + } + } + break; + } +} + +static void fIJHOUI_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + cKF_SkeletonInfo_R_c* keyf = &ftr_actor->keyframe; + FTR_ACTOR* parent; + + parent = aMR_GetParentFactor(); + fIJHOUI_Status2SetMode(ftr_actor, ftr_actor); + + if (parent != NULL) { + fIJHOUI_Status2SetMode(parent, ftr_actor); + } + + cKF_SkeletonInfo_R_play(keyf); + + if (ftr_actor->dynamic_work_f[0] > 0.0f) { + ftr_actor->dynamic_work_f[0] -= (0.2f + (0.01f * GETREG(CRV, 81))); + if (ftr_actor->dynamic_work_f[0] < 0.0f) { + ftr_actor->dynamic_work_f[0] = 0.0f; + } + } else if (ftr_actor->dynamic_work_f[0] < 0.0f) { + ftr_actor->dynamic_work_f[0] = ftr_actor->dynamic_work_f[0] + (0.2f + (0.01f * GETREG(CRV, 81))); + if (ftr_actor->dynamic_work_f[0] > 0.0f) { + ftr_actor->dynamic_work_f[0] = 0.0f; + } + } + if (0.0f != ftr_actor->dynamic_work_f[0]) { + ftr_actor->dynamic_work_s[2] += 0x320 + GETREG(CRV, 80); + } else { + ftr_actor->dynamic_work_s[2] = 0; + } + + add_calc(&ftr_actor->dynamic_work_f[1], ftr_actor->dynamic_work_f[0] * sin_s(ftr_actor->dynamic_work_s[2]), 0.3f, + 100.0f, 0.0001f); + ftr_actor->dynamic_work_s[0] = ftr_actor->state; +} + +static int fIJHOUI_DrawBefore(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + FTR_ACTOR* actor = (FTR_ACTOR*)arg; + + int offset = 10430.378f * (0.017453292f * actor->dynamic_work_f[1]); + + if (jointNum == 3) { + MY_ROOM_ACTOR* my_room_actor; + int exists = FALSE; + + if ((Common_Get(clip).my_room_clip != NULL && Common_Get(clip).my_room_clip->my_room_actor_p != NULL)) { + exists = TRUE; + } + + if (exists != FALSE) { + my_room_actor = Common_Get(clip).my_room_clip->my_room_actor_p; + } else { + my_room_actor = NULL; + } + + joint1->y -= actor->s_angle_y + (aMR_GetParentAngleOffset(actor, my_room_actor)) + offset; + } + + return 1; +} + +static int fIJHOUI_DrawAfter(GAME* game, cKF_SkeletonInfo_R_c* keyf, int jointNum, Gfx** joint, u8* jointFlag, void* arg, + s_xyz* joint1, xyz_t* trans) { + return 1; +} + +static void fIJHOUI_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); + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx, fIJHOUI_DrawBefore, fIJHOUI_DrawAfter, ftr_actor); + CLOSE_DISP(game->graph); +} + static aFTR_vtable_c fIJHOUI_func = { &fIJHOUI_ct, &fIJHOUI_mv, diff --git a/src/ftr/ac_ike_jny_rosia01.c b/src/ftr/ac_ike_jny_rosia01.c index e403fc32..c467150b 100644 --- a/src/ftr/ac_ike_jny_rosia01.c +++ b/src/ftr/ac_ike_jny_rosia01.c @@ -3,6 +3,66 @@ static void aIkeJnyRosia01_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* static void aIkeJnyRosia01_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void aIkeJnyRosia01_dt(FTR_ACTOR* ftr_actor, u8* data); +extern cKF_Animation_R_c cKF_ba_r_int_ike_jny_rosia01; +extern cKF_Skeleton_R_c cKF_bs_r_int_ike_jny_rosia01; + +static void aIkeJnyRosia01_ct(FTR_ACTOR* ftr_actor, u8* data) { + cKF_SkeletonInfo_R_c* keyf = &ftr_actor->keyframe; + + cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_ike_jny_rosia01, &cKF_ba_r_int_ike_jny_rosia01, ftr_actor->joint, + ftr_actor->morph); + cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_ike_jny_rosia01, NULL); + keyf->frame_control.speed = 0.0f; + keyf->frame_control.start_frame = 1.0f; + keyf->frame_control.end_frame = cKF_ba_r_int_ike_jny_rosia01.frames; + ftr_actor->dynamic_work_s[0] = (ftr_actor->switch_bit == TRUE); + if (ftr_actor->dynamic_work_s[0] == 0) { + keyf->frame_control.current_frame = cKF_ba_r_int_ike_jny_rosia01.frames; + } + cKF_SkeletonInfo_R_play(keyf); +} + +static void aIkeJnyRosia01_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + cKF_SkeletonInfo_R_c* keyf = &ftr_actor->keyframe; + + if ((ftr_actor->switch_changed_flag != FALSE) && (keyf->frame_control.speed == 0.0f)) { + ftr_actor->dynamic_work_s[0] = ftr_actor->dynamic_work_s[0] + 1 & 1; + if (ftr_actor->dynamic_work_s[0] != 0) { + keyf->frame_control.speed = 0.5f; + keyf->frame_control.start_frame = cKF_ba_r_int_ike_jny_rosia01.frames; + keyf->frame_control.end_frame = 1.0f; + sAdo_OngenTrgStart(0x7A, &ftr_actor->position); + } else { + keyf->frame_control.speed = 0.5f; + keyf->frame_control.start_frame = 1.0f; + keyf->frame_control.end_frame = cKF_ba_r_int_ike_jny_rosia01.frames; + sAdo_OngenTrgStart(0x7A, &ftr_actor->position); + } + } + if (cKF_SkeletonInfo_R_play(keyf) == cKF_STATE_STOPPED) { + keyf->frame_control.speed = 0.0f; + } +} + +static void aIkeJnyRosia01_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); + + cKF_Si3_draw_R_SV(game, &ftr_actor->keyframe, mtx, NULL, NULL, NULL); + CLOSE_DISP(game->graph); +} + +static void aIkeJnyRosia01_dt(FTR_ACTOR* ftr_actor, u8* data){ + if (ftr_actor->dynamic_work_s[0] != FALSE){ + ftr_actor->switch_bit = TRUE; + } + else{ + ftr_actor->switch_bit = FALSE; + } +} + static aFTR_vtable_c aIkeJnyRosia01_func = { &aIkeJnyRosia01_ct, &aIkeJnyRosia01_mv, diff --git a/src/ftr/ac_ike_jny_syon01.c b/src/ftr/ac_ike_jny_syon01.c index 6e1bac0e..3f91b983 100644 --- a/src/ftr/ac_ike_jny_syon01.c +++ b/src/ftr/ac_ike_jny_syon01.c @@ -2,6 +2,91 @@ static void fIJS_ct(FTR_ACTOR* ftr_actor, u8* data); static void fIJS_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void fIJS_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); +extern Gfx int_ike_jny_syon01_off_model[]; +extern Gfx int_ike_jny_syon01_on_model[]; + +static void fIJS_ct(FTR_ACTOR* ftr_actor, u8* data){ + f32 alpha; + + if (ftr_actor->switch_bit == 1) { + ftr_actor->dynamic_work_s[0] = TRUE; + } else { + ftr_actor->dynamic_work_s[0] = FALSE; + } + if (ftr_actor->dynamic_work_s[0] == TRUE) { + alpha = 255.0f; + } else { + alpha = 0.0f; + } + ftr_actor->dynamic_work_f[0] = alpha; +} + +static void fIJS_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + f32 alpha; + + if (ftr_actor->dynamic_work_s[0] == TRUE) { + alpha = 255.0f; + } else { + alpha = 0.0f; + } + if (ftr_actor->dynamic_work_s[0] == TRUE) { + if (aFTR_CAN_PLAY_SE(ftr_actor)) { + sAdo_OngenPos((u32) ftr_actor, 0x4B, &ftr_actor->position); + } + } + if (ftr_actor->dynamic_work_f[0] > alpha) { + ftr_actor->dynamic_work_f[0] -= 6.0f; + if (ftr_actor->dynamic_work_f[0] < alpha) { + ftr_actor->dynamic_work_f[0] = alpha; + } + } else if (ftr_actor->dynamic_work_f[0] < alpha) { + ftr_actor->dynamic_work_f[0] += 6.0f; + if (ftr_actor->dynamic_work_f[0] > alpha) { + ftr_actor->dynamic_work_f[0] = alpha; + } + } else if (ftr_actor->switch_changed_flag != FALSE) { + ftr_actor->dynamic_work_s[0] = ((ftr_actor->dynamic_work_s[0] + 1) & 1); + } +} + +static Gfx* fIJS_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, 32); +} + +static void fNS_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + GAME_PLAY* play = (GAME_PLAY*)game; + u32 ctr_ofs; + Gfx* scroll; + u8 alpha; + + if (ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY) { + ctr_ofs = play->game_frame; + } else { + ctr_ofs = game->frame_counter; + } + + scroll = fIJS_GetTwoTileGfx(0,ctr_ofs * 6, 0, 0, game); + + if (ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY) { + alpha = (u8)(int)ftr_actor->dynamic_work_f[0]; + } else { + alpha = 255; + } + + if (scroll != 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); + gSPDisplayList(NEXT_POLY_OPA_DISP, int_ike_jny_syon01_on_model); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0,255, 120,160,255, alpha); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, scroll); + gSPDisplayList(NEXT_POLY_XLU_DISP, int_ike_jny_syon01_off_model); + + CLOSE_DISP(game->graph); + } +} + static aFTR_vtable_c fIJS_func = { &fIJS_ct, &fIJS_mv, diff --git a/src/ftr/ac_ike_jny_truth01.c b/src/ftr/ac_ike_jny_truth01.c index d1cb9a0c..211340ab 100644 --- a/src/ftr/ac_ike_jny_truth01.c +++ b/src/ftr/ac_ike_jny_truth01.c @@ -3,6 +3,56 @@ static void fIJT_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* static void fIJT_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); static void fIJT_dt(FTR_ACTOR* ftr_actor, u8* data); +extern u8 int_ike_jny_truthface1_TA_tex_txt[]; +extern u8 int_ike_jny_truthface2_TA_tex_txt[]; + +extern Gfx int_ike_jny_truth01_body_model[]; + +static void fIJT_ct(FTR_ACTOR* ftr_actor, u8* data){ + ftr_actor->dynamic_work_s[0] = 0; + ftr_actor->dynamic_work_s[1] = 0; +} + +static void fIJT_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + + player = GET_PLAYER_ACTOR(play); + if (ftr_actor->dynamic_work_s[1] == 0){ + if (ftr_actor->switch_changed_flag != 0){ + aMR_SetSurprise(my_room_actor, player->actor_class.shape_info.rotation.y); + ftr_actor->dynamic_work_s[0] = 0x32; + ftr_actor->dynamic_work_s[1] = 1; + } + } + else{ + ftr_actor->dynamic_work_s[0]--; + if (ftr_actor->dynamic_work_s[0] == 0x14){ + mVibctl_entry(100, 1, 1, 13, 0, 7, 7, 0.0f); + } + if (ftr_actor->dynamic_work_s[0] < 0){ + ftr_actor->dynamic_work_s[0] = 0; + ftr_actor->dynamic_work_s[1] = 0; + } + } +} + +static void fIJT_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){ + static u8* tex_table[] = { + int_ike_jny_truthface1_TA_tex_txt,int_ike_jny_truthface2_TA_tex_txt, + }; + int idx; + + OPEN_DISP(game->graph); + + idx = ftr_actor->dynamic_work_s[1] & 1; + 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,tex_table[idx]); + gSPDisplayList(NEXT_POLY_OPA_DISP,int_ike_jny_truth01_body_model); + + CLOSE_DISP(game->graph); +} + static aFTR_vtable_c fIJT_func = { &fIJT_ct, &fIJT_mv,