From 938310c423bd6d677daded58b44dca631d8ee62d Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Sun, 3 Nov 2024 07:29:19 -0500 Subject: [PATCH] Implement & link ac_gyo_release --- configure.py | 2 +- include/ac_gyo_release.h | 2 +- include/audio_defs.h | 1 + include/m_actor_shadow.h | 2 +- src/actor/ac_gyo_release.c | 353 +++++++++++++++++++++++++++++ src/actor/ac_gyoei_model.c_inc | 400 ++++++++++++++++++++++++++++++++ src/actor/ac_handOverItem.c | 401 +-------------------------------- src/game/m_actor_shadow.c | 4 +- 8 files changed, 761 insertions(+), 404 deletions(-) create mode 100644 src/actor/ac_gyo_release.c create mode 100644 src/actor/ac_gyoei_model.c_inc diff --git a/configure.py b/configure.py index f22b21c0..4d7b924f 100644 --- a/configure.py +++ b/configure.py @@ -963,7 +963,7 @@ config.libs = [ Object(Matching, "actor/ac_groundhog_control.c"), Object(Matching, "actor/ac_gyo_kage.c"), Object(NonMatching, "actor/ac_gyo_kaseki.c"), - Object(NonMatching, "actor/ac_gyo_release.c"), + Object(Matching, "actor/ac_gyo_release.c"), Object(NonMatching, "actor/ac_gyo_test.c"), Object(NonMatching, "actor/ac_gyoei.c"), Object(Matching, "actor/ac_handOverItem.c"), diff --git a/include/ac_gyo_release.h b/include/ac_gyo_release.h index aa36b74d..3391e284 100644 --- a/include/ac_gyo_release.h +++ b/include/ac_gyo_release.h @@ -15,7 +15,7 @@ struct gyo_release_actor_s { /* 0x000 */ ACTOR actor_class; /* 0x174 */ ACTOR* gyoei_actor_p; /* 0x178 */ int gyo_type; - /* 0x17C */ int size_type; + /* 0x17C */ s16 size_type; /* 0x180 */ int anime_frame; /* 0x184 */ int segment; /* 0x188 */ int _188; diff --git a/include/audio_defs.h b/include/audio_defs.h index d9cc8d2a..f509a266 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -195,6 +195,7 @@ typedef enum audio_sound_effects { NA_SE_435 = 0x435, NA_SE_436 = 0x436, + NA_SE_437 = 0x437, NA_SE_KARABURI = 0x43A, diff --git a/include/m_actor_shadow.h b/include/m_actor_shadow.h index c3329259..83932c86 100644 --- a/include/m_actor_shadow.h +++ b/include/m_actor_shadow.h @@ -28,7 +28,7 @@ void mAc_ActorShadowDraw(ACTOR *, GAME_PLAY *, int, xyz_t, f32); void mActorShadow_SetForceShadowPos(ACTOR *, xyz_t *); void mActorShadow_UnSetForceShadowPos(ACTOR *); void mAc_NormalActorShadow(ACTOR *, GAME_PLAY *, f32); -void mAc_UnagiActorShadow(ACTOR *, GAME_PLAY *, xyz_t); +void mAc_UnagiActorShadow(ACTOR *, GAME *, xyz_t); void mAc_ActorShadowCircle(ACTOR *, LightsN *, GAME_PLAY *); void mAc_ActorShadowEllipse(ACTOR *, LightsN *, GAME_PLAY *); diff --git a/src/actor/ac_gyo_release.c b/src/actor/ac_gyo_release.c new file mode 100644 index 00000000..b4f0665f --- /dev/null +++ b/src/actor/ac_gyo_release.c @@ -0,0 +1,353 @@ +#include "ac_gyo_release.h" + +#include "ac_gyoei.h" +#include "m_name_table.h" +#include "m_play.h" +#include "sys_matrix.h" +#include "m_rcp.h" +#include "m_actor_shadow.h" +#include "m_common_data.h" + +static void aGYR_actor_ct(ACTOR* actorx, GAME* game); +static void aGYR_actor_dt(ACTOR* actorx, GAME* game); +static void aGYR_actor_move(ACTOR* actorx, GAME* game); +static void aGYR_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Gyo_Release_Profile = { + mAc_PROFILE_GYO_RELEASE, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(GYO_RELEASE_ACTOR), + &aGYR_actor_ct, + &aGYR_actor_dt, + &aGYR_actor_move, + &aGYR_actor_draw, + NULL, +}; +// clang-format on + +#include "../src/actor/ac_gyoei_type.c_inc" +#include "../src/actor/ac_gyoei_model.c_inc" + +static f32 aGYO_shadow_scale[aGYO_SIZE_NUM] = { 0.3f, 0.4f, 0.5f, 0.5f, 0.6f, 0.8f, 1.2f, 10.0f }; + +static int aGYR_empty_area(ACTOR* actorx); + +static void aGYR_actor_ct(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + f32 dx; + f32 dy; + f32 dz; + f32 dist; + f32 water_y; + f32 speed_xz; + f32 speed_y; + s16 angle_y; + xyz_t pos; + + gyo_release->gyo_type = actorx->actor_specific - ITM_FISH_START; + gyo_release->gyoei_actor_p = Actor_info_name_search(&play->actor_info, mAc_PROFILE_GYOEI, ACTOR_PART_CONTROL); + gyo_release->segment = aGYR_empty_area(gyo_release->gyoei_actor_p); + ((GYOEI_ACTOR*)gyo_release->gyoei_actor_p)->segment_type[gyo_release->segment] = gyo_release->gyo_type; + actorx->drawn = TRUE; + actorx->shape_info.draw_shadow = TRUE; + gyo_release->size_type = gyoei_type[gyo_release->gyo_type].size; + actorx->scale.x = 0.0126f; + actorx->scale.y = 0.0126f; + actorx->scale.z = 0.0126f; + + dx = play->submenu.water_pos.x - actorx->world.position.x; + dz = play->submenu.water_pos.z - actorx->world.position.z; + water_y = mCoBG_GetWaterHeight_File(play->submenu.water_pos, __FILE__, 213); + dy = water_y - actorx->world.position.y; + dist = sqrtf(SQ(dx) + SQ(dz)); + + if (dist > mFI_UNIT_BASE_SIZE_F) { + speed_xz = (dist / 60.0f) / 0.5f; + speed_y = (dy - -450.0f) / 60.0f; + if (speed_y < 0.0f) { + speed_y = 0.0f; + } + } else { + speed_xz = 2.5f; + speed_y = ABS(dist) * 0.18f; + } + + angle_y = atans_table(dz, dx); + actorx->world.angle.y = angle_y; + actorx->shape_info.rotation.y = angle_y; + actorx->position_speed.y = speed_y; + actorx->position_speed.x = speed_xz * sin_s(angle_y); + actorx->position_speed.z = speed_xz * cos_s(angle_y); + + gyo_release->angle_xz = 0; + gyo_release->angle_y = 0; + gyo_release->angle_y_add = 180; + gyo_release->exist_timer = 0; + gyo_release->shadow_scale = 1.0f; + gyo_release->exist_flag = TRUE; + gyo_release->_1B5 = FALSE; +} + +static void aGYR_actor_dt(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + + gyo_release->exist_flag = FALSE; + ((GYOEI_ACTOR*)gyo_release->gyoei_actor_p)->segment_type[gyo_release->segment] = aGYO_TYPE_INVALID; + ClObjPipe_dt(game, &gyo_release->col_pipe); +} + +static int aGYR_anime_frame(GYO_RELEASE_ACTOR* gyo_release) { + static int aGYR_frame_ptn1[] = { 1, 1, 0, 0, 2, 2, 0, 0 }; + static int aGYR_frame_ptn2[] = { 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0 }; + static int aGYR_anime_ptn[] = { + 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + }; + + int cur_frame = gyo_release->anime_frame; + int next_frame; + + cur_frame++; + if (aGYR_anime_ptn[gyo_release->gyo_type] == 1) { + if (cur_frame >= ARRAY_COUNT(aGYR_frame_ptn1)) { + cur_frame = 0; + } + + next_frame = aGYR_frame_ptn1[cur_frame]; + } else if (aGYR_anime_ptn[gyo_release->gyo_type] == 2) { + if (cur_frame >= ARRAY_COUNT(aGYR_frame_ptn2)) { + cur_frame = 0; + } + + next_frame = aGYR_frame_ptn2[cur_frame]; + } else { + cur_frame = 0; + next_frame = 0; + } + + gyo_release->anime_frame = cur_frame; + return next_frame; +} + +static int aGYR_empty_area(ACTOR* actorx) { + GYOEI_ACTOR* gyoei = (GYOEI_ACTOR*)actorx; + int i; + int n = 0; + + for (i = 2; i < 4; i++) { + if (gyoei->segment_type[i] == aGYO_TYPE_INVALID) { + n = i; + break; + } + } + + return n; +} + +static s16 aGYR_Get_flow_angle(ACTOR* actorx) { + xyz_t flow; + s16 angle; + + mCoBG_GetWaterFlow(&flow, mCoBG_Wpos2BgAttribute_Original(actorx->world.position)); + angle = atans_table(flow.z, flow.x); + return angle; +} + +static void aGYR_effect_hamon(ACTOR* actorx, GAME* game, s16 arg) { + xyz_t pos = actorx->world.position; + f32 water_height = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 401); + s16 angle = aGYR_Get_flow_angle(actorx); + + pos.y = water_height; + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_HAMON, pos, 1, angle, game, EMPTY_NO, arg, 0); +} + +static void aGYR_cull_check(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (actorx->block_x != play->block_table.block_x || actorx->block_z != play->block_table.block_z) { + Actor_delete(actorx); + } +} + +static void aGYR_Shadow_size(ACTOR* actorx) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + f32 ground_y; + f32 height; + f32 ofs_y; + /* @BUG - the devs forgot to add a size for the new size types added in AC - XXL for Arapaima & WHALE size */ + static f32 hoseix[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.5f }; + static f32 hoseiz[] = { 3.0f, 2.5f, 2.5f, 2.5f, 2.5f, 7.0f }; + f32 correction_x; + f32 correction_z; + + ground_y = mCoBG_GetBgY_AngleS_FromWpos(NULL, actorx->world.position, 0.0f); + height = actorx->world.position.y - ground_y; + ofs_y = 10.0f + (50.0f - height) * 0.2f; + if (height < 0.0f) { + ofs_y = 0.0f; + } + + if (gyo_release->gyo_type == aGYO_TYPE_EEL) { + correction_x = 9.0f; + correction_z = 3.5f; + } else { + correction_x = hoseix[gyo_release->size_type]; + correction_z = hoseiz[gyo_release->size_type]; + } + + actorx->shape_info.shadow_size_x = + aGYO_shadow_scale[gyo_release->size_type] * ofs_y * gyo_release->shadow_scale + correction_x; + actorx->shape_info.shadow_size_z = + aGYO_shadow_scale[gyo_release->size_type] * ofs_y * gyo_release->shadow_scale - correction_z; +} + +static void aGYR_position_move(ACTOR* actorx) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + u32 atr; + + xyz_t_move(&actorx->last_world_position, &actorx->world.position); + actorx->position_speed.y += -0.25f; + Actor_position_move(actorx); + + atr = mCoBG_Wpos2BgAttribute_Original(actorx->world.position); + gyo_release->revert_position_timer--; + if (gyo_release->revert_position_timer <= 0) { + gyo_release->revert_position_timer = 0; + } + + if (mCoBG_CheckWaterAttribute(atr)) { + if (!gyo_release->revert_position_flag) { + gyo_release->revert_position_flag = TRUE; + gyo_release->revert_position_timer = 3; + } + } else { + if (gyo_release->revert_position_flag == TRUE && gyo_release->revert_position_timer <= 0) { + actorx->world.position.x = actorx->last_world_position.x; + actorx->world.position.z = actorx->last_world_position.z; + } + } +} + +static int aGYR_check_timer(ACTOR* actorx) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + int res = TRUE; + + gyo_release->exist_timer++; + if (gyo_release->exist_timer > 140) { + f32 scale_rate; + + if (actorx->scale.x > 0.006f) { + scale_rate = 0.89f; + } else { + scale_rate = 0.98f; + } + + actorx->scale.x *= scale_rate; + actorx->scale.y = actorx->scale.z = actorx->scale.x; + gyo_release->shadow_scale *= scale_rate; + if (gyo_release->exist_timer > 160) { + Actor_delete(actorx); + res = FALSE; + } + } + + return res; +} + +static void aGYR_in_water_move(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + aGYR_effect_hamon(actorx, game, 3); + sAdo_OngenTrgStart(NA_SE_437, &actorx->world.position); + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_GYO_KAGE, actorx->world.position.x, + actorx->world.position.y, actorx->world.position.z, 0, actorx->world.angle.y, 0, + play->block_table.block_x, play->block_table.block_z, -1, EMPTY_NO, gyo_release->size_type, + -1, ACTOR_OBJ_BANK_KEEP); + Actor_delete(actorx); +} + +static void aGYR_move_sub(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + + chase_s(&gyo_release->angle_xz, DEG2SHORT_ANGLE2(90.0f), 0x800); + if (aGYR_check_timer(actorx) == TRUE) { + if (mCoBG_CheckWaterAttribute(mCoBG_Wpos2BgAttribute_Original(actorx->world.position))) { + f32 water_y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 635); + + if (water_y >= actorx->world.position.y) { + aGYR_in_water_move(actorx, game); + return; + } + } + + chase_s(&gyo_release->angle_y_add, 180, 32); + if (gyo_release->gyo_type == aGYO_TYPE_LOACH || gyo_release->gyo_type == aGYO_TYPE_EEL) { + gyo_release->angle_y = 0; + } else { + gyo_release->angle_y = DEG2SHORT_ANGLE2(30.0f * sin_s(DEG2SHORT_ANGLE2(gyo_release->angle_y_add))); + } + + aGYR_Shadow_size(actorx); + } +} + +static void aGYR_actor_move(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + + if (gyo_release->gyoei_actor_p != NULL) { + GYOEI_ACTOR* gyoei = (GYOEI_ACTOR*)gyo_release->gyoei_actor_p; + + if (gyoei->exist[gyo_release->segment] != 0) { + gyoei->exist[gyo_release->segment] = 0; + } + } + + actorx->state_bitfield &= ~ACTOR_STATE_24; + if ((actorx->state_bitfield & ACTOR_STATE_NO_MOVE_WHILE_CULLED) != 0) { + aGYR_position_move(actorx); + aGYR_move_sub(actorx, game); + aGYR_cull_check(actorx, game); + } +} + +static void aGYR_actor_draw(ACTOR* actorx, GAME* game) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actorx; + GRAPH* graph = game->graph; + int frame; + + Matrix_push(); + _texture_z_light_fog_prim(graph); + Matrix_translate(actorx->world.position.x, actorx->world.position.y, actorx->world.position.z, 0); + Matrix_RotateX(-gyo_release->angle_xz, 1); + Matrix_RotateY(gyo_release->angle_y, 1); + Matrix_RotateZ(gyo_release->angle_xz, 1); + Matrix_scale(actorx->scale.x * 1.2f, actorx->scale.y, actorx->scale.z, 1); + + OPEN_DISP(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if (actorx->bg_collision_check.result.on_ground) { + frame = 0; + } else { + frame = aGYR_anime_frame(gyo_release); + } + gSPDisplayList(NEXT_POLY_OPA_DISP, ((Gfx**)aGYO_displayList[gyo_release->gyo_type])[(int)(frame * 0.5f)]); + + CLOSE_DISP(graph); + + { + static xyz_t offset = { 0.0f, 0.0f, 0.0f }; + + actorx->shape_info.shadow_alpha_change_rate = 0.5f; + mAc_UnagiActorShadow(actorx, game, offset); + } + + Matrix_pull(); +} diff --git a/src/actor/ac_gyoei_model.c_inc b/src/actor/ac_gyoei_model.c_inc new file mode 100644 index 00000000..f9dec0c7 --- /dev/null +++ b/src/actor/ac_gyoei_model.c_inc @@ -0,0 +1,400 @@ +typedef struct gyo_model_s { + Gfx* dl_a; + Gfx* dl_b; + Gfx* dl_c; +} aGYO_DL_c; + +extern Gfx act_f01_funa_aT_model[]; +extern Gfx act_f01_funa_bT_model[]; +extern Gfx act_f01_funa_cT_model[]; +extern Gfx act_f02_hera_aT_model[]; +extern Gfx act_f02_hera_bT_model[]; +extern Gfx act_f02_hera_cT_model[]; +extern Gfx act_f03_koi_aT_model[]; +extern Gfx act_f03_koi_bT_model[]; +extern Gfx act_f03_koi_cT_model[]; +extern Gfx act_f04_nisiki_aT_model[]; +extern Gfx act_f04_nisiki_bT_model[]; +extern Gfx act_f04_nisiki_cT_model[]; +extern Gfx act_f05_namazu_aT_model[]; +extern Gfx act_f05_namazu_bT_model[]; +extern Gfx act_f05_namazu_cT_model[]; +extern Gfx act_f06_bass_aT_model[]; +extern Gfx act_f06_bass_bT_model[]; +extern Gfx act_f06_bass_cT_model[]; +extern Gfx act_f07_bassm_aT_model[]; +extern Gfx act_f07_bassm_bT_model[]; +extern Gfx act_f07_bassm_cT_model[]; +extern Gfx act_f08_bassl_aT_model[]; +extern Gfx act_f08_bassl_bT_model[]; +extern Gfx act_f08_bassl_cT_model[]; +extern Gfx act_f09_gill_aT_model[]; +extern Gfx act_f09_gill_bT_model[]; +extern Gfx act_f09_gill_cT_model[]; +extern Gfx act_f10_oonamazu_aT_model[]; +extern Gfx act_f10_oonamazu_bT_model[]; +extern Gfx act_f10_oonamazu_cT_model[]; +extern Gfx act_f11_raigyo_aT_model[]; +extern Gfx act_f11_raigyo_bT_model[]; +extern Gfx act_f11_raigyo_cT_model[]; +extern Gfx act_f12_nigoi_aT_model[]; +extern Gfx act_f12_nigoi_bT_model[]; +extern Gfx act_f12_nigoi_cT_model[]; +extern Gfx act_f13_ugui_aT_model[]; +extern Gfx act_f13_ugui_bT_model[]; +extern Gfx act_f13_ugui_cT_model[]; +extern Gfx act_f14_oikawa_aT_model[]; +extern Gfx act_f14_oikawa_bT_model[]; +extern Gfx act_f14_oikawa_cT_model[]; +extern Gfx act_f15_tanago_aT_model[]; +extern Gfx act_f15_tanago_bT_model[]; +extern Gfx act_f15_tanago_cT_model[]; +extern Gfx act_f16_dojyo_aT_model[]; +extern Gfx act_f16_dojyo_bT_model[]; +extern Gfx act_f16_dojyo_cT_model[]; +extern Gfx act_f17_wakasagi_aT_model[]; +extern Gfx act_f17_wakasagi_bT_model[]; +extern Gfx act_f17_wakasagi_cT_model[]; +extern Gfx act_f18_ayu_aT_model[]; +extern Gfx act_f18_ayu_bT_model[]; +extern Gfx act_f18_ayu_cT_model[]; +extern Gfx act_f19_yamame_aT_model[]; +extern Gfx act_f19_yamame_bT_model[]; +extern Gfx act_f19_yamame_cT_model[]; +extern Gfx act_f20_iwana_aT_model[]; +extern Gfx act_f20_iwana_bT_model[]; +extern Gfx act_f20_iwana_cT_model[]; +extern Gfx act_f21_niji_aT_model[]; +extern Gfx act_f21_niji_bT_model[]; +extern Gfx act_f21_niji_cT_model[]; +extern Gfx act_f22_ito_aT_model[]; +extern Gfx act_f22_ito_bT_model[]; +extern Gfx act_f22_ito_cT_model[]; +extern Gfx act_f23_sake_aT_model[]; +extern Gfx act_f23_sake_bT_model[]; +extern Gfx act_f23_sake_cT_model[]; +extern Gfx act_f24_kingyo_aT_model[]; +extern Gfx act_f24_kingyo_bT_model[]; +extern Gfx act_f24_kingyo_cT_model[]; +extern Gfx act_f25_pirania_aT_model[]; +extern Gfx act_f25_pirania_bT_model[]; +extern Gfx act_f25_pirania_cT_model[]; +extern Gfx act_f26_aroana_aT_model[]; +extern Gfx act_f26_aroana_bT_model[]; +extern Gfx act_f26_aroana_cT_model[]; +extern Gfx act_f27_unagi_aT_model[]; +extern Gfx act_f27_unagi_bT_model[]; +extern Gfx act_f27_unagi_cT_model[]; +extern Gfx act_f28_donko_aT_model[]; +extern Gfx act_f28_donko_bT_model[]; +extern Gfx act_f28_donko_cT_model[]; +extern Gfx act_f29_angel_aT_model[]; +extern Gfx act_f29_angel_bT_model[]; +extern Gfx act_f29_angel_cT_model[]; +extern Gfx act_f30_gupi_aT_model[]; +extern Gfx act_f30_gupi_bT_model[]; +extern Gfx act_f30_gupi_cT_model[]; +extern Gfx act_f31_demekin_aT_model[]; +extern Gfx act_f31_demekin_bT_model[]; +extern Gfx act_f31_demekin_cT_model[]; +extern Gfx act_f32_kaseki_aT_model[]; +extern Gfx act_f32_kasekiT_model[]; +extern Gfx act_f32_kaseki_cT_model[]; +extern Gfx act_f35_zarigani_aT_model[]; +extern Gfx act_f35_zarigani_bT_model[]; +extern Gfx act_f35_zarigani_cT_model[]; +extern Gfx act_f36_kaeru_aT_model[]; +extern Gfx act_f36_kaeru_bT_model[]; +extern Gfx act_f36_kaeru_cT_model[]; +extern Gfx act_f33_medaka_aT_model[]; +extern Gfx act_f33_medaka_bT_model[]; +extern Gfx act_f33_medaka_cT_model[]; +extern Gfx act_f37_kurage_aT_model[]; +extern Gfx act_f37_kurage_bT_model[]; +extern Gfx act_f37_kurage_cT_model[]; +extern Gfx act_f38_suzuki_aT_model[]; +extern Gfx act_f38_suzuki_bT_model[]; +extern Gfx act_f38_suzuki_cT_model[]; +extern Gfx act_f39_tai_aT_model[]; +extern Gfx act_f39_tai_bT_model[]; +extern Gfx act_f39_tai_cT_model[]; +extern Gfx act_f40_isidai_aT_model[]; +extern Gfx act_f40_isidai_bT_model[]; +extern Gfx act_f40_isidai_cT_model[]; +extern Gfx act_f34_piraluku_aT_model[]; +extern Gfx act_f34_piraluku_bT_model[]; +extern Gfx act_f34_piraluku_cT_model[]; +extern Gfx act_f28_akikanT_model[]; +extern Gfx act_f28_akikanT_model[]; +extern Gfx act_f28_akikanT_model[]; +extern Gfx act_f30_nagagutuT_model[]; +extern Gfx act_f30_nagagutuT_model[]; +extern Gfx act_f30_nagagutuT_model[]; +extern Gfx act_f29_petT_model[]; +extern Gfx act_f29_petT_model[]; +extern Gfx act_f29_petT_model[]; + +static aGYO_DL_c aGYO_funa_dl = { + act_f01_funa_aT_model, + act_f01_funa_bT_model, + act_f01_funa_cT_model, +}; +static aGYO_DL_c aGYO_hera_dl = { + act_f02_hera_aT_model, + act_f02_hera_bT_model, + act_f02_hera_cT_model, +}; +static aGYO_DL_c aGYO_koi_dl = { + act_f03_koi_aT_model, + act_f03_koi_bT_model, + act_f03_koi_cT_model, +}; +static aGYO_DL_c aGYO_nisiki_dl = { + act_f04_nisiki_aT_model, + act_f04_nisiki_bT_model, + act_f04_nisiki_cT_model, +}; +static aGYO_DL_c aGYO_namazu_dl = { + act_f05_namazu_aT_model, + act_f05_namazu_bT_model, + act_f05_namazu_cT_model, +}; +static aGYO_DL_c aGYO_bass_s_dl = { + act_f06_bass_aT_model, + act_f06_bass_bT_model, + act_f06_bass_cT_model, +}; +static aGYO_DL_c aGYO_bass_m_dl = { + act_f07_bassm_aT_model, + act_f07_bassm_bT_model, + act_f07_bassm_cT_model, +}; +static aGYO_DL_c aGYO_bass_l_dl = { + act_f08_bassl_aT_model, + act_f08_bassl_bT_model, + act_f08_bassl_cT_model, +}; +static aGYO_DL_c aGYO_blue_gill_dl = { + act_f09_gill_aT_model, + act_f09_gill_bT_model, + act_f09_gill_cT_model, +}; +static aGYO_DL_c aGYO_oonamazu_dl = { + act_f10_oonamazu_aT_model, + act_f10_oonamazu_bT_model, + act_f10_oonamazu_cT_model, +}; +static aGYO_DL_c aGYO_raigyo_dl = { + act_f11_raigyo_aT_model, + act_f11_raigyo_bT_model, + act_f11_raigyo_cT_model, +}; +static aGYO_DL_c aGYO_nigoi_dl = { + act_f12_nigoi_aT_model, + act_f12_nigoi_bT_model, + act_f12_nigoi_cT_model, +}; +static aGYO_DL_c aGYO_ugui_dl = { + act_f13_ugui_aT_model, + act_f13_ugui_bT_model, + act_f13_ugui_cT_model, +}; +static aGYO_DL_c aGYO_oikawa_dl = { + act_f14_oikawa_aT_model, + act_f14_oikawa_bT_model, + act_f14_oikawa_cT_model, +}; +static aGYO_DL_c aGYO_tanago_dl = { + act_f15_tanago_aT_model, + act_f15_tanago_bT_model, + act_f15_tanago_cT_model, +}; +static aGYO_DL_c aGYO_dojyo_dl = { + act_f16_dojyo_aT_model, + act_f16_dojyo_bT_model, + act_f16_dojyo_cT_model, +}; +static aGYO_DL_c aGYO_wakasagi_dl = { + act_f17_wakasagi_aT_model, + act_f17_wakasagi_bT_model, + act_f17_wakasagi_cT_model, +}; +static aGYO_DL_c aGYO_ayu_dl = { + act_f18_ayu_aT_model, + act_f18_ayu_bT_model, + act_f18_ayu_cT_model, +}; +static aGYO_DL_c aGYO_yamame_dl = { + act_f19_yamame_aT_model, + act_f19_yamame_bT_model, + act_f19_yamame_cT_model, +}; +static aGYO_DL_c aGYO_iwana_dl = { + act_f20_iwana_aT_model, + act_f20_iwana_bT_model, + act_f20_iwana_cT_model, +}; +static aGYO_DL_c aGYO_niji_dl = { + act_f21_niji_aT_model, + act_f21_niji_bT_model, + act_f21_niji_cT_model, +}; +static aGYO_DL_c aGYO_ito_dl = { + act_f22_ito_aT_model, + act_f22_ito_bT_model, + act_f22_ito_cT_model, +}; +static aGYO_DL_c aGYO_sake_dl = { + act_f23_sake_aT_model, + act_f23_sake_bT_model, + act_f23_sake_cT_model, +}; +static aGYO_DL_c aGYO_kingyo_dl = { + act_f24_kingyo_aT_model, + act_f24_kingyo_bT_model, + act_f24_kingyo_cT_model, +}; +static aGYO_DL_c aGYO_pirania_dl = { + act_f25_pirania_aT_model, + act_f25_pirania_bT_model, + act_f25_pirania_cT_model, +}; +static aGYO_DL_c aGYO_aroana_dl = { + act_f26_aroana_aT_model, + act_f26_aroana_bT_model, + act_f26_aroana_cT_model, +}; +static aGYO_DL_c aGYO_unagi_dl = { + act_f27_unagi_aT_model, + act_f27_unagi_bT_model, + act_f27_unagi_cT_model, +}; +static aGYO_DL_c aGYO_donko_dl = { + act_f28_donko_aT_model, + act_f28_donko_bT_model, + act_f28_donko_cT_model, +}; +static aGYO_DL_c aGYO_angel_dl = { + act_f29_angel_aT_model, + act_f29_angel_bT_model, + act_f29_angel_cT_model, +}; +static aGYO_DL_c aGYO_gupi_dl = { + act_f30_gupi_aT_model, + act_f30_gupi_bT_model, + act_f30_gupi_cT_model, +}; +static aGYO_DL_c aGYO_demekin_dl = { + act_f31_demekin_aT_model, + act_f31_demekin_bT_model, + act_f31_demekin_cT_model, +}; +static aGYO_DL_c aGYO_kaseki_dl = { + act_f32_kaseki_aT_model, + act_f32_kasekiT_model, + act_f32_kaseki_cT_model, +}; +static aGYO_DL_c aGYO_zarigani_dl = { + act_f35_zarigani_aT_model, + act_f35_zarigani_bT_model, + act_f35_zarigani_cT_model, +}; +static aGYO_DL_c aGYO_kaeru_dl = { + act_f36_kaeru_aT_model, + act_f36_kaeru_bT_model, + act_f36_kaeru_cT_model, +}; +static aGYO_DL_c aGYO_medaka_dl = { + act_f33_medaka_aT_model, + act_f33_medaka_bT_model, + act_f33_medaka_cT_model, +}; +static aGYO_DL_c aGYO_kurage_dl = { + act_f37_kurage_aT_model, + act_f37_kurage_bT_model, + act_f37_kurage_cT_model, +}; +static aGYO_DL_c aGYO_suzuki_dl = { + act_f38_suzuki_aT_model, + act_f38_suzuki_bT_model, + act_f38_suzuki_cT_model, +}; +static aGYO_DL_c aGYO_tai_dl = { + act_f39_tai_aT_model, + act_f39_tai_bT_model, + act_f39_tai_cT_model, +}; +static aGYO_DL_c aGYO_ishidai_dl = { + act_f40_isidai_aT_model, + act_f40_isidai_bT_model, + act_f40_isidai_cT_model, +}; +static aGYO_DL_c aGYO_piraluku_dl = { + act_f34_piraluku_aT_model, + act_f34_piraluku_bT_model, + act_f34_piraluku_cT_model, +}; +static aGYO_DL_c aGYO_akikan_dl = { + act_f28_akikanT_model, + act_f28_akikanT_model, + act_f28_akikanT_model, +}; +static aGYO_DL_c aGYO_nagagutu_dl = { + act_f30_nagagutuT_model, + act_f30_nagagutuT_model, + act_f30_nagagutuT_model, +}; +static aGYO_DL_c aGYO_taiya_dl = { + act_f29_petT_model, + act_f29_petT_model, + act_f29_petT_model, +}; + + +static aGYO_DL_c* aGYO_displayList[45] = { + &aGYO_funa_dl, + &aGYO_hera_dl, + &aGYO_koi_dl, + &aGYO_nisiki_dl, + &aGYO_namazu_dl, + &aGYO_bass_s_dl, + &aGYO_bass_m_dl, + &aGYO_bass_l_dl, + &aGYO_blue_gill_dl, + &aGYO_oonamazu_dl, + &aGYO_raigyo_dl, + &aGYO_nigoi_dl, + &aGYO_ugui_dl, + &aGYO_oikawa_dl, + &aGYO_tanago_dl, + &aGYO_dojyo_dl, + &aGYO_wakasagi_dl, + &aGYO_ayu_dl, + &aGYO_yamame_dl, + &aGYO_iwana_dl, + &aGYO_niji_dl, + &aGYO_ito_dl, + &aGYO_sake_dl, + &aGYO_kingyo_dl, + &aGYO_pirania_dl, + &aGYO_aroana_dl, + &aGYO_unagi_dl, + &aGYO_donko_dl, + &aGYO_angel_dl, + &aGYO_gupi_dl, + &aGYO_demekin_dl, + &aGYO_kaseki_dl, + &aGYO_zarigani_dl, + &aGYO_kaeru_dl, + &aGYO_medaka_dl, + &aGYO_kurage_dl, + &aGYO_suzuki_dl, + &aGYO_tai_dl, + &aGYO_ishidai_dl, + &aGYO_piraluku_dl, + &aGYO_piraluku_dl, + &aGYO_akikan_dl, + &aGYO_nagagutu_dl, + &aGYO_taiya_dl, + NULL +}; diff --git a/src/actor/ac_handOverItem.c b/src/actor/ac_handOverItem.c index 0d8620e0..98381b2e 100644 --- a/src/actor/ac_handOverItem.c +++ b/src/actor/ac_handOverItem.c @@ -38,406 +38,7 @@ ACTOR_PROFILE HandOverItem_Profile = { static aHOI_Clip_c aHOI_clip; -typedef struct gyo_model_s { - Gfx* dl_a; - Gfx* dl_b; - Gfx* dl_c; -} aHOI_GYO_DL_c; - -extern Gfx act_f01_funa_aT_model[]; -extern Gfx act_f01_funa_bT_model[]; -extern Gfx act_f01_funa_cT_model[]; -extern Gfx act_f02_hera_aT_model[]; -extern Gfx act_f02_hera_bT_model[]; -extern Gfx act_f02_hera_cT_model[]; -extern Gfx act_f03_koi_aT_model[]; -extern Gfx act_f03_koi_bT_model[]; -extern Gfx act_f03_koi_cT_model[]; -extern Gfx act_f04_nisiki_aT_model[]; -extern Gfx act_f04_nisiki_bT_model[]; -extern Gfx act_f04_nisiki_cT_model[]; -extern Gfx act_f05_namazu_aT_model[]; -extern Gfx act_f05_namazu_bT_model[]; -extern Gfx act_f05_namazu_cT_model[]; -extern Gfx act_f06_bass_aT_model[]; -extern Gfx act_f06_bass_bT_model[]; -extern Gfx act_f06_bass_cT_model[]; -extern Gfx act_f07_bassm_aT_model[]; -extern Gfx act_f07_bassm_bT_model[]; -extern Gfx act_f07_bassm_cT_model[]; -extern Gfx act_f08_bassl_aT_model[]; -extern Gfx act_f08_bassl_bT_model[]; -extern Gfx act_f08_bassl_cT_model[]; -extern Gfx act_f09_gill_aT_model[]; -extern Gfx act_f09_gill_bT_model[]; -extern Gfx act_f09_gill_cT_model[]; -extern Gfx act_f10_oonamazu_aT_model[]; -extern Gfx act_f10_oonamazu_bT_model[]; -extern Gfx act_f10_oonamazu_cT_model[]; -extern Gfx act_f11_raigyo_aT_model[]; -extern Gfx act_f11_raigyo_bT_model[]; -extern Gfx act_f11_raigyo_cT_model[]; -extern Gfx act_f12_nigoi_aT_model[]; -extern Gfx act_f12_nigoi_bT_model[]; -extern Gfx act_f12_nigoi_cT_model[]; -extern Gfx act_f13_ugui_aT_model[]; -extern Gfx act_f13_ugui_bT_model[]; -extern Gfx act_f13_ugui_cT_model[]; -extern Gfx act_f14_oikawa_aT_model[]; -extern Gfx act_f14_oikawa_bT_model[]; -extern Gfx act_f14_oikawa_cT_model[]; -extern Gfx act_f15_tanago_aT_model[]; -extern Gfx act_f15_tanago_bT_model[]; -extern Gfx act_f15_tanago_cT_model[]; -extern Gfx act_f16_dojyo_aT_model[]; -extern Gfx act_f16_dojyo_bT_model[]; -extern Gfx act_f16_dojyo_cT_model[]; -extern Gfx act_f17_wakasagi_aT_model[]; -extern Gfx act_f17_wakasagi_bT_model[]; -extern Gfx act_f17_wakasagi_cT_model[]; -extern Gfx act_f18_ayu_aT_model[]; -extern Gfx act_f18_ayu_bT_model[]; -extern Gfx act_f18_ayu_cT_model[]; -extern Gfx act_f19_yamame_aT_model[]; -extern Gfx act_f19_yamame_bT_model[]; -extern Gfx act_f19_yamame_cT_model[]; -extern Gfx act_f20_iwana_aT_model[]; -extern Gfx act_f20_iwana_bT_model[]; -extern Gfx act_f20_iwana_cT_model[]; -extern Gfx act_f21_niji_aT_model[]; -extern Gfx act_f21_niji_bT_model[]; -extern Gfx act_f21_niji_cT_model[]; -extern Gfx act_f22_ito_aT_model[]; -extern Gfx act_f22_ito_bT_model[]; -extern Gfx act_f22_ito_cT_model[]; -extern Gfx act_f23_sake_aT_model[]; -extern Gfx act_f23_sake_bT_model[]; -extern Gfx act_f23_sake_cT_model[]; -extern Gfx act_f24_kingyo_aT_model[]; -extern Gfx act_f24_kingyo_bT_model[]; -extern Gfx act_f24_kingyo_cT_model[]; -extern Gfx act_f25_pirania_aT_model[]; -extern Gfx act_f25_pirania_bT_model[]; -extern Gfx act_f25_pirania_cT_model[]; -extern Gfx act_f26_aroana_aT_model[]; -extern Gfx act_f26_aroana_bT_model[]; -extern Gfx act_f26_aroana_cT_model[]; -extern Gfx act_f27_unagi_aT_model[]; -extern Gfx act_f27_unagi_bT_model[]; -extern Gfx act_f27_unagi_cT_model[]; -extern Gfx act_f28_donko_aT_model[]; -extern Gfx act_f28_donko_bT_model[]; -extern Gfx act_f28_donko_cT_model[]; -extern Gfx act_f29_angel_aT_model[]; -extern Gfx act_f29_angel_bT_model[]; -extern Gfx act_f29_angel_cT_model[]; -extern Gfx act_f30_gupi_aT_model[]; -extern Gfx act_f30_gupi_bT_model[]; -extern Gfx act_f30_gupi_cT_model[]; -extern Gfx act_f31_demekin_aT_model[]; -extern Gfx act_f31_demekin_bT_model[]; -extern Gfx act_f31_demekin_cT_model[]; -extern Gfx act_f32_kaseki_aT_model[]; -extern Gfx act_f32_kasekiT_model[]; -extern Gfx act_f32_kaseki_cT_model[]; -extern Gfx act_f35_zarigani_aT_model[]; -extern Gfx act_f35_zarigani_bT_model[]; -extern Gfx act_f35_zarigani_cT_model[]; -extern Gfx act_f36_kaeru_aT_model[]; -extern Gfx act_f36_kaeru_bT_model[]; -extern Gfx act_f36_kaeru_cT_model[]; -extern Gfx act_f33_medaka_aT_model[]; -extern Gfx act_f33_medaka_bT_model[]; -extern Gfx act_f33_medaka_cT_model[]; -extern Gfx act_f37_kurage_aT_model[]; -extern Gfx act_f37_kurage_bT_model[]; -extern Gfx act_f37_kurage_cT_model[]; -extern Gfx act_f38_suzuki_aT_model[]; -extern Gfx act_f38_suzuki_bT_model[]; -extern Gfx act_f38_suzuki_cT_model[]; -extern Gfx act_f39_tai_aT_model[]; -extern Gfx act_f39_tai_bT_model[]; -extern Gfx act_f39_tai_cT_model[]; -extern Gfx act_f40_isidai_aT_model[]; -extern Gfx act_f40_isidai_bT_model[]; -extern Gfx act_f40_isidai_cT_model[]; -extern Gfx act_f34_piraluku_aT_model[]; -extern Gfx act_f34_piraluku_bT_model[]; -extern Gfx act_f34_piraluku_cT_model[]; -extern Gfx act_f28_akikanT_model[]; -extern Gfx act_f28_akikanT_model[]; -extern Gfx act_f28_akikanT_model[]; -extern Gfx act_f30_nagagutuT_model[]; -extern Gfx act_f30_nagagutuT_model[]; -extern Gfx act_f30_nagagutuT_model[]; -extern Gfx act_f29_petT_model[]; -extern Gfx act_f29_petT_model[]; -extern Gfx act_f29_petT_model[]; - -static aHOI_GYO_DL_c aGYO_funa_dl = { - act_f01_funa_aT_model, - act_f01_funa_bT_model, - act_f01_funa_cT_model, -}; -static aHOI_GYO_DL_c aGYO_hera_dl = { - act_f02_hera_aT_model, - act_f02_hera_bT_model, - act_f02_hera_cT_model, -}; -static aHOI_GYO_DL_c aGYO_koi_dl = { - act_f03_koi_aT_model, - act_f03_koi_bT_model, - act_f03_koi_cT_model, -}; -static aHOI_GYO_DL_c aGYO_nisiki_dl = { - act_f04_nisiki_aT_model, - act_f04_nisiki_bT_model, - act_f04_nisiki_cT_model, -}; -static aHOI_GYO_DL_c aGYO_namazu_dl = { - act_f05_namazu_aT_model, - act_f05_namazu_bT_model, - act_f05_namazu_cT_model, -}; -static aHOI_GYO_DL_c aGYO_bass_s_dl = { - act_f06_bass_aT_model, - act_f06_bass_bT_model, - act_f06_bass_cT_model, -}; -static aHOI_GYO_DL_c aGYO_bass_m_dl = { - act_f07_bassm_aT_model, - act_f07_bassm_bT_model, - act_f07_bassm_cT_model, -}; -static aHOI_GYO_DL_c aGYO_bass_l_dl = { - act_f08_bassl_aT_model, - act_f08_bassl_bT_model, - act_f08_bassl_cT_model, -}; -static aHOI_GYO_DL_c aGYO_blue_gill_dl = { - act_f09_gill_aT_model, - act_f09_gill_bT_model, - act_f09_gill_cT_model, -}; -static aHOI_GYO_DL_c aGYO_oonamazu_dl = { - act_f10_oonamazu_aT_model, - act_f10_oonamazu_bT_model, - act_f10_oonamazu_cT_model, -}; -static aHOI_GYO_DL_c aGYO_raigyo_dl = { - act_f11_raigyo_aT_model, - act_f11_raigyo_bT_model, - act_f11_raigyo_cT_model, -}; -static aHOI_GYO_DL_c aGYO_nigoi_dl = { - act_f12_nigoi_aT_model, - act_f12_nigoi_bT_model, - act_f12_nigoi_cT_model, -}; -static aHOI_GYO_DL_c aGYO_ugui_dl = { - act_f13_ugui_aT_model, - act_f13_ugui_bT_model, - act_f13_ugui_cT_model, -}; -static aHOI_GYO_DL_c aGYO_oikawa_dl = { - act_f14_oikawa_aT_model, - act_f14_oikawa_bT_model, - act_f14_oikawa_cT_model, -}; -static aHOI_GYO_DL_c aGYO_tanago_dl = { - act_f15_tanago_aT_model, - act_f15_tanago_bT_model, - act_f15_tanago_cT_model, -}; -static aHOI_GYO_DL_c aGYO_dojyo_dl = { - act_f16_dojyo_aT_model, - act_f16_dojyo_bT_model, - act_f16_dojyo_cT_model, -}; -static aHOI_GYO_DL_c aGYO_wakasagi_dl = { - act_f17_wakasagi_aT_model, - act_f17_wakasagi_bT_model, - act_f17_wakasagi_cT_model, -}; -static aHOI_GYO_DL_c aGYO_ayu_dl = { - act_f18_ayu_aT_model, - act_f18_ayu_bT_model, - act_f18_ayu_cT_model, -}; -static aHOI_GYO_DL_c aGYO_yamame_dl = { - act_f19_yamame_aT_model, - act_f19_yamame_bT_model, - act_f19_yamame_cT_model, -}; -static aHOI_GYO_DL_c aGYO_iwana_dl = { - act_f20_iwana_aT_model, - act_f20_iwana_bT_model, - act_f20_iwana_cT_model, -}; -static aHOI_GYO_DL_c aGYO_niji_dl = { - act_f21_niji_aT_model, - act_f21_niji_bT_model, - act_f21_niji_cT_model, -}; -static aHOI_GYO_DL_c aGYO_ito_dl = { - act_f22_ito_aT_model, - act_f22_ito_bT_model, - act_f22_ito_cT_model, -}; -static aHOI_GYO_DL_c aGYO_sake_dl = { - act_f23_sake_aT_model, - act_f23_sake_bT_model, - act_f23_sake_cT_model, -}; -static aHOI_GYO_DL_c aGYO_kingyo_dl = { - act_f24_kingyo_aT_model, - act_f24_kingyo_bT_model, - act_f24_kingyo_cT_model, -}; -static aHOI_GYO_DL_c aGYO_pirania_dl = { - act_f25_pirania_aT_model, - act_f25_pirania_bT_model, - act_f25_pirania_cT_model, -}; -static aHOI_GYO_DL_c aGYO_aroana_dl = { - act_f26_aroana_aT_model, - act_f26_aroana_bT_model, - act_f26_aroana_cT_model, -}; -static aHOI_GYO_DL_c aGYO_unagi_dl = { - act_f27_unagi_aT_model, - act_f27_unagi_bT_model, - act_f27_unagi_cT_model, -}; -static aHOI_GYO_DL_c aGYO_donko_dl = { - act_f28_donko_aT_model, - act_f28_donko_bT_model, - act_f28_donko_cT_model, -}; -static aHOI_GYO_DL_c aGYO_angel_dl = { - act_f29_angel_aT_model, - act_f29_angel_bT_model, - act_f29_angel_cT_model, -}; -static aHOI_GYO_DL_c aGYO_gupi_dl = { - act_f30_gupi_aT_model, - act_f30_gupi_bT_model, - act_f30_gupi_cT_model, -}; -static aHOI_GYO_DL_c aGYO_demekin_dl = { - act_f31_demekin_aT_model, - act_f31_demekin_bT_model, - act_f31_demekin_cT_model, -}; -static aHOI_GYO_DL_c aGYO_kaseki_dl = { - act_f32_kaseki_aT_model, - act_f32_kasekiT_model, - act_f32_kaseki_cT_model, -}; -static aHOI_GYO_DL_c aGYO_zarigani_dl = { - act_f35_zarigani_aT_model, - act_f35_zarigani_bT_model, - act_f35_zarigani_cT_model, -}; -static aHOI_GYO_DL_c aGYO_kaeru_dl = { - act_f36_kaeru_aT_model, - act_f36_kaeru_bT_model, - act_f36_kaeru_cT_model, -}; -static aHOI_GYO_DL_c aGYO_medaka_dl = { - act_f33_medaka_aT_model, - act_f33_medaka_bT_model, - act_f33_medaka_cT_model, -}; -static aHOI_GYO_DL_c aGYO_kurage_dl = { - act_f37_kurage_aT_model, - act_f37_kurage_bT_model, - act_f37_kurage_cT_model, -}; -static aHOI_GYO_DL_c aGYO_suzuki_dl = { - act_f38_suzuki_aT_model, - act_f38_suzuki_bT_model, - act_f38_suzuki_cT_model, -}; -static aHOI_GYO_DL_c aGYO_tai_dl = { - act_f39_tai_aT_model, - act_f39_tai_bT_model, - act_f39_tai_cT_model, -}; -static aHOI_GYO_DL_c aGYO_ishidai_dl = { - act_f40_isidai_aT_model, - act_f40_isidai_bT_model, - act_f40_isidai_cT_model, -}; -static aHOI_GYO_DL_c aGYO_piraluku_dl = { - act_f34_piraluku_aT_model, - act_f34_piraluku_bT_model, - act_f34_piraluku_cT_model, -}; -static aHOI_GYO_DL_c aGYO_akikan_dl = { - act_f28_akikanT_model, - act_f28_akikanT_model, - act_f28_akikanT_model, -}; -static aHOI_GYO_DL_c aGYO_nagagutu_dl = { - act_f30_nagagutuT_model, - act_f30_nagagutuT_model, - act_f30_nagagutuT_model, -}; -static aHOI_GYO_DL_c aGYO_taiya_dl = { - act_f29_petT_model, - act_f29_petT_model, - act_f29_petT_model, -}; - - -static aHOI_GYO_DL_c* aGYO_displayList[45] = { - &aGYO_funa_dl, - &aGYO_hera_dl, - &aGYO_koi_dl, - &aGYO_nisiki_dl, - &aGYO_namazu_dl, - &aGYO_bass_s_dl, - &aGYO_bass_m_dl, - &aGYO_bass_l_dl, - &aGYO_blue_gill_dl, - &aGYO_oonamazu_dl, - &aGYO_raigyo_dl, - &aGYO_nigoi_dl, - &aGYO_ugui_dl, - &aGYO_oikawa_dl, - &aGYO_tanago_dl, - &aGYO_dojyo_dl, - &aGYO_wakasagi_dl, - &aGYO_ayu_dl, - &aGYO_yamame_dl, - &aGYO_iwana_dl, - &aGYO_niji_dl, - &aGYO_ito_dl, - &aGYO_sake_dl, - &aGYO_kingyo_dl, - &aGYO_pirania_dl, - &aGYO_aroana_dl, - &aGYO_unagi_dl, - &aGYO_donko_dl, - &aGYO_angel_dl, - &aGYO_gupi_dl, - &aGYO_demekin_dl, - &aGYO_kaseki_dl, - &aGYO_zarigani_dl, - &aGYO_kaeru_dl, - &aGYO_medaka_dl, - &aGYO_kurage_dl, - &aGYO_suzuki_dl, - &aGYO_tai_dl, - &aGYO_ishidai_dl, - &aGYO_piraluku_dl, - &aGYO_piraluku_dl, - &aGYO_akikan_dl, - &aGYO_nagagutu_dl, - &aGYO_taiya_dl, - NULL -}; +#include "../src/actor/ac_gyoei_model.c_inc" extern Gfx apple_DL_mode[]; extern Gfx orange_DL_mode[]; diff --git a/src/game/m_actor_shadow.c b/src/game/m_actor_shadow.c index ce997b13..64bd649c 100644 --- a/src/game/m_actor_shadow.c +++ b/src/game/m_actor_shadow.c @@ -377,7 +377,9 @@ void mAc_NormalActorShadow(ACTOR* actor, GAME_PLAY* play, f32 rad) { mAc_ActorShadowDraw(actor, play, 0, mActorShadow_offset0, rad); } -void mAc_UnagiActorShadow(ACTOR* actor, GAME_PLAY* play, xyz_t pos) { +void mAc_UnagiActorShadow(ACTOR* actor, GAME* game, xyz_t pos) { + GAME_PLAY* play = (GAME_PLAY*)game; + mAc_ActorShadowDraw(actor, play, 1, pos, 1.0f); }