diff --git a/config/rel_slices.yml b/config/rel_slices.yml index a6f23764..d6e9de75 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -533,6 +533,11 @@ ac_set_ovl_insect.c: ac_shop_design.c: .text: [0x8049C748, 0x8049D51C] .data: [0x8068E3C0, 0x8068E430] +ac_shop_goods.c: + .text: [0x8049D51C, 0x8049E6F4] + .rodata: [0x80644E28, 0x80645CB0] + .data: [0x8068E430, 0x8068E458] + .bss: [0x812FD270, 0x812FD480] ac_shop_indoor.c: .text: [0x8049E6F4, 0x8049F40C] .rodata: [0x80645CB0, 0x80645CD0] diff --git a/include/ac_my_room.h b/include/ac_my_room.h index b72ac650..766ca477 100644 --- a/include/ac_my_room.h +++ b/include/ac_my_room.h @@ -297,6 +297,8 @@ extern int aMR_DrawDolphinMode(u16 ftr_name); extern Gfx* aMR_IconNo2Gfx1(int icon_no); extern Gfx* aMR_IconNo2Gfx2(int icon_no); extern int aMR_RadioBgmNow(void); +extern void aMR_ThrowItem_FurnitureLock(void); +extern void aMR_ThrowItem_FurnitureUnlock(void); #ifdef __cplusplus } diff --git a/include/ac_shop_goods.h b/include/ac_shop_goods.h index e4694002..ef7a28fa 100644 --- a/include/ac_shop_goods.h +++ b/include/ac_shop_goods.h @@ -9,6 +9,39 @@ extern "C" { #endif +#define aSG_SINGLE_DRAW_NUM 9 + +typedef struct ac_shop_goods_s SHOP_GOODS_ACTOR; + +typedef struct ac_shop_good_single_draw_s { + mActor_name_t item; + s16 layer; + xyz_t target_pos; + xyz_t current_pos; + xyz_t start_pos; + f32 scale; + u16 counter; + s_xyz angle; + f32 velocity_y; + f32 _38; + f32 acceleration_y; + s16 _40; + u16 flags; + int delay_timer; +} aSG_single_draw_c; + +struct ac_shop_goods_s { + ACTOR actor_class; + int picture_count; + int bx; + int bz; + f32 bx_pos; + f32 bz_pos; + s16 mode; + s16 _18A; + aSG_single_draw_c single_draw[aSG_SINGLE_DRAW_NUM]; +}; + extern ACTOR_PROFILE Shop_Goods_Profile; #ifdef __cplusplus diff --git a/include/m_name_table.h b/include/m_name_table.h index 9feed8de..4cc996ca 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2278,6 +2278,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ITM_DIARY_END (ITM_DIARY_START + 16) #define ITM_TICKET_START 0x2C00 +#define ITM_TICKET_END (ITM_TICKET_START + 95) #define ITM_INSECT_START 0x2D00 #define ITM_INSECT00 (ITM_INSECT_START + 0) diff --git a/src/ac_shop_goods.c b/src/ac_shop_goods.c new file mode 100644 index 00000000..a3155114 --- /dev/null +++ b/src/ac_shop_goods.c @@ -0,0 +1,528 @@ +#include "ac_shop_goods.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "sys_matrix.h" +#include "ac_my_room.h" +#include "m_malloc.h" + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Goods_Profile = { + mAc_PROFILE_SHOP_GOODS, + ACTOR_PART_CONTROL, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_SHOP_GOODS, + sizeof(SHOP_GOODS_ACTOR), + &Shop_Goods_Actor_ct, + &Shop_Goods_Actor_dt, + &Shop_Goods_Actor_move, + &Shop_Goods_Actor_draw, + NULL, +}; +// clang-format on + +#define aSG_DATA_ROTATE_Y_FLAG (1 << 0) + +#include "../src/ac_shop_goods_data.c_inc" + +#define aSG_SCALE_FLAG (1 << 0) + +static s16 SG_angle_y[UT_Z_NUM][UT_X_NUM]; +static SHOP_GOODS_ACTOR* Glb_shop_goods_actor; +static int picture_count; +static s16 mode; + +static s16 Shop_Goods_Actor_single_get_angle_y(int ut_z, int ut_x, int layer) { + if (layer == mCoBG_LAYER1) { + return SG_angle_y[ut_z][ut_x]; + } + + return 0; +} + +static void Shop_Goods_Actor_single_set_angle_y(int ut_z, int ut_x, int layer, s16 angle_y) { + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = angle_y; + } +} + +static void Shop_Goods_draw_ta_set(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_DOLPHIN); + + CLOSE_DISP(game->graph); +} + +static void Shop_Goods_draw_ta_clr(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_N64); + + CLOSE_DISP(game->graph); +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int timer, u16 flags); + +static int Shop_Goods_Actor_player_drop_entry(GAME* game, mActor_name_t item, int ut_x, int ut_z, int layer, + int delay_timer) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + int res = 0; + xyz_t now_pos; + xyz_t target_pos; + mActor_name_t* fg_p; + + target_pos.x = 0.0f; + target_pos.y = 0.0f; + target_pos.z = 0.0f; + + mFI_UtNum2CenterWpos(&target_pos, ut_x, ut_z); + + if (layer == mCoBG_LAYER0) { + target_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(target_pos, -1.0f); + } else { + target_pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, target_pos, -1.0f); + } + + if (layer == mCoBG_LAYER0) { + fg_p = mFI_GetUnitFG(target_pos); + } else { + fg_p = mFI_GetUnitFG2(target_pos); + } + + if (*fg_p == EMPTY_NO) { + xyz_t_move(&now_pos, &player_actor->world.position); + now_pos.y += 50.0f; + + if (Shop_Goods_Actor_drop_entry(Glb_shop_goods_actor, item, &now_pos, &target_pos, layer, delay_timer, 1)) { + if (layer == mCoBG_LAYER0) { + mFI_SetFG_common(RSV_NO, target_pos, FALSE); + } else { + mFI_SetFG2(RSV_NO, target_pos); + } + + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = 0; + } + + res = 1; + aMR_ThrowItem_FurnitureLock(); + } + } else { + res = -1; + } + + return res; +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int delay_timer, u16 flags) { + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + int i; + f32 dist_xz; + f32 dist_y; + int res = FALSE; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter == 0) { + xyz_t_move(&single_draw_p->start_pos, now_pos); + xyz_t_move(&single_draw_p->current_pos, now_pos); + xyz_t_move(&single_draw_p->target_pos, target_pos); + single_draw_p->item = item; + single_draw_p->layer = layer; + single_draw_p->angle.y = search_position_angleY(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->flags = flags; + single_draw_p->acceleration_y = -1.2f; + single_draw_p->counter = 1; + single_draw_p->_40 = 0; + single_draw_p->delay_timer = delay_timer; + + if ((flags & 1)) { + single_draw_p->scale = 0.0f; + } else { + single_draw_p->scale = 1.0f; + } + + dist_xz = search_position_distanceXZ(&single_draw_p->target_pos, &single_draw_p->current_pos); + dist_y = single_draw_p->target_pos.y - single_draw_p->current_pos.y; + if (dist_xz != 0.0f) { + f32 tmp = + ((single_draw_p->acceleration_y * 0.5f) + (single_draw_p->acceleration_y * 0.5f) * 28.0f) * 14.0f; + + single_draw_p->velocity_y = (dist_y - tmp) / 28.0f; + } else { + single_draw_p->velocity_y = 0.0f; + } + + res = TRUE; + break; + } + + single_draw_p++; + } + + return res; +} + +static void Shop_Goods_Actor_drop_destruct(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + } + + single_draw_p++; + } +} + +static void Shop_Goods_Actor_drop_move(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++, single_draw_p++) { + if (single_draw_p->delay_timer > 0) { + single_draw_p->delay_timer--; + continue; + } + + if (single_draw_p->counter != 0) { + f32 percent_xz = (f32)single_draw_p->counter * (1.0f / 30.0f); + + if (percent_xz > 1.0f) { + percent_xz = 1.0f; + } else { + percent_xz = percent_xz; + } + + single_draw_p->velocity_y += single_draw_p->acceleration_y * 0.5f; + single_draw_p->current_pos.y += single_draw_p->velocity_y * 0.5f; + single_draw_p->current_pos.x = + single_draw_p->start_pos.x + percent_xz * (single_draw_p->target_pos.x - single_draw_p->start_pos.x); + single_draw_p->current_pos.z = + single_draw_p->start_pos.z + percent_xz * (single_draw_p->target_pos.z - single_draw_p->start_pos.z); + + if ((single_draw_p->flags & aSG_SCALE_FLAG)) { + single_draw_p->scale = 0.1f + (1.0f - SQ(1.0f - (f32)single_draw_p->counter / 28.0f)) * 0.9f; + } + + if (single_draw_p->counter == 27) { + if (single_draw_p->item == ITM_FOOD_APPLE || single_draw_p->item == ITM_FOOD_CHERRY || + single_draw_p->item == ITM_FOOD_PEAR || single_draw_p->item == ITM_FOOD_PEACH || + single_draw_p->item == ITM_FOOD_ORANGE) { + sAdo_OngenTrgStart(0x127, &single_draw_p->current_pos); + } else if (single_draw_p->item == ITM_MONEY_1000 || single_draw_p->item == ITM_MONEY_10000 || + single_draw_p->item == ITM_MONEY_30000 || single_draw_p->item == ITM_MONEY_100) { + sAdo_OngenTrgStart(0x444, &single_draw_p->current_pos); + } else { + sAdo_OngenTrgStart(0x128, &single_draw_p->current_pos); + } + } + + if (single_draw_p->current_pos.y <= single_draw_p->target_pos.y) { + if (single_draw_p->_40 == 0) { + single_draw_p->flags &= ~aSG_SCALE_FLAG; + single_draw_p->scale = 1.0f; + xyz_t_move(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->velocity_y = -single_draw_p->velocity_y * 0.25f; + single_draw_p->_40++; + if (single_draw_p->velocity_y > 3.0f) { + single_draw_p->velocity_y = 3.0f; + } + } else { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + + single_draw_p->counter = 0; + aMR_ThrowItem_FurnitureUnlock(); + } + } else { + single_draw_p->counter++; + } + } + } +} + +static void Shop_Goods_Actor_single_drawR(GAME* game, mActor_name_t item, xyz_t* pos, xyz_t* scale, s16 angle_y, + int layer) { + GAME_PLAY* play = (GAME_PLAY*)game; + const aSG_data_c* src_data_p = l_shop_goods_dsp_table; + int i; + + for (i = 0; i < picture_count; i++) { + const aSG_data_c* data_p = &src_data_p[i]; + // Global_light* glight = &((GAME_PLAY*)game)->global_light; + LightsN* lightsN; + + if (item >= data_p->item_start && item <= data_p->item_end) { + int xlu_flag = data_p->xlu_gfx0[mode] != NULL; + GRAPH* graph; + + if (xlu_flag) { + _texture_z_light_fog_prim_xlu(game->graph); + } + + _texture_z_light_fog_prim(game->graph); + + graph = play->game.graph; + OPEN_DISP(graph); + + lightsN = Global_light_read(&play->global_light, graph); + LightsN_list_check(lightsN, play->global_light.list, pos); + LightsN_disp(lightsN, play->game.graph); + + Matrix_translate(pos->x, pos->y, pos->z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(angle_y, 1); + } + Matrix_scale(scale->x, scale->y, scale->z, 1); + + 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, data_p->gfx0[mode]); + + if (data_p->gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, data_p->gfx1[mode]); + } + + if (xlu_flag != FALSE) { + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx0[mode]); + + if (data_p->xlu_gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx1[mode]); + } + } + + CLOSE_DISP(graph); + return; + } + } +} + +static void Shop_Goods_Actor_single_draw(GAME* game, mActor_name_t item, xyz_t* pos, f32 scale, s16 angle_y, + int layer) { + xyz_t xyz_scale; + + Shop_Goods_draw_ta_set(game); + xyz_scale.x = scale; + xyz_scale.y = scale; + xyz_scale.z = scale; + Shop_Goods_Actor_single_drawR(game, item, pos, &xyz_scale, angle_y, layer); + Shop_Goods_draw_ta_clr(game); +} + +static void Shop_Goods_Actor_drop_draw(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + int ut_x; + int ut_z; + s16 angle_y; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, single_draw_p->target_pos)) { + angle_y = SG_angle_y[ut_z][ut_x]; + } else { + angle_y = 0; + } + + Shop_Goods_Actor_single_draw(game, single_draw_p->item, &single_draw_p->current_pos, + single_draw_p->scale * 0.01f, angle_y, single_draw_p->layer); + } + + single_draw_p++; + } +} + +static int aSG_CountPictureKind(void) { + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int count = 0; + + for (data_p; data_p->item_start != EMPTY_NO || data_p->item_end != EMPTY_NO; data_p++) { + count++; + } + + return count; +} + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + + shop_goods->picture_count = aSG_CountPictureKind(); + picture_count = shop_goods->picture_count; + + mFI_Wpos2BlockNum(&shop_goods->bx, &shop_goods->bz, actorx->world.position); + shop_goods->bx_pos = (f32)shop_goods->bx * mFI_BK_WORLDSIZE_X_F; + shop_goods->bz_pos = (f32)shop_goods->bz * mFI_BK_WORLDSIZE_Z_F; + + shop_goods->mode = actorx->actor_specific; + mode = shop_goods->mode; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + shop_goods->single_draw[i].counter = 0; + } + + Glb_shop_goods_actor = shop_goods; + + if (Common_Get(clip).shop_goods_clip == NULL) { + Common_Get(clip).shop_goods_clip = (aSG_Clip_c*)zelda_malloc(sizeof(aSG_Clip_c)); + Common_Get(clip).shop_goods_clip->single_draw_proc = &Shop_Goods_Actor_single_draw; + Common_Get(clip).shop_goods_clip->player_drop_entry_proc = &Shop_Goods_Actor_player_drop_entry; + Common_Get(clip).shop_goods_clip->single_get_angle_y_proc = &Shop_Goods_Actor_single_get_angle_y; + Common_Get(clip).shop_goods_clip->single_set_angle_y_proc = &Shop_Goods_Actor_single_set_angle_y; + } +} + +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_destruct(shop_goods); + if (Common_Get(clip).shop_goods_clip != NULL) { + zelda_free(Common_Get(clip).shop_goods_clip); +/* @BUG - shouldn't shop_goods_clip get set to NULL? */ +#ifdef BUGFIXES + Common_Get(clip).shop_goods_clip = NULL; +#endif + } +} + +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_move(shop_goods); +} + +static void aSG_DrawGoods(GRAPH* graph, Global_light* glight, SHOP_GOODS_ACTOR* shop_goods, int bx, int bz, int ux, + int uz, const aSG_data_c* data_p, int layer) { + xyz_t pos; + int mode = shop_goods->mode; + Gfx* gfx0 = data_p->gfx0[mode]; + Gfx* gfx1 = data_p->gfx1[mode]; + Gfx* xlu_gfx0 = data_p->xlu_gfx0[mode]; + Gfx* xlu_gfx1 = data_p->xlu_gfx1[mode]; + LightsN* lightsN; + + mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ux, uz); + if (layer == mCoBG_LAYER0) { + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + } else { + pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, pos, 0.0f); + } + + OPEN_DISP(graph); + + lightsN = Global_light_read(glight, graph); + LightsN_list_check(lightsN, glight->list, &pos); + LightsN_disp(lightsN, graph); + + if (gfx0 != NULL || xlu_gfx0 != NULL) { + Matrix_translate(pos.x, pos.y, pos.z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(SG_angle_y[uz][ux], 1); + } + Matrix_scale(0.01f, 0.01f, 0.01f, 1); + + if (gfx0 != NULL) { + _texture_z_light_fog_prim(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx0); + + if (gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx1); + } + } + + if (xlu_gfx0 != NULL) { + _texture_z_light_fog_prim_xlu(graph); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx0); + + if (xlu_gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx1); + } + } + } + + CLOSE_DISP(graph); +} + +static void aSG_DrawGoodsPicture(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Global_light* glight = &play->global_light; + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int picture_count = shop_goods->picture_count; + int bx = shop_goods->bx; + int bz = shop_goods->bz; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + mActor_name_t* fg2_p = mFI_BkNum2UtFGTop_layer(bx, bz, mCoBG_LAYER1); + s16 mode = shop_goods->mode; + int ux; + int uz; + int i; + + if (fg_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg_p >= data_p[i].item_start && *fg_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER0); + break; + } + } + } + + fg_p++; + } + } + } + + if (mode == 1 && fg2_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg2_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg2_p >= data_p[i].item_start && *fg2_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER1); + break; + } + } + } + + fg2_p++; + } + } + } +} + +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game) { + _texture_z_light_fog_prim(game->graph); + Shop_Goods_draw_ta_set(game); + aSG_DrawGoodsPicture(actorx, game); + Shop_Goods_draw_ta_clr(game); + Shop_Goods_Actor_drop_draw(actorx, game); +} diff --git a/src/ac_shop_goods_data.c_inc b/src/ac_shop_goods_data.c_inc new file mode 100644 index 00000000..629c242d --- /dev/null +++ b/src/ac_shop_goods_data.c_inc @@ -0,0 +1,971 @@ +extern Gfx obj_apple2_modelT[]; +extern Gfx obj_axeT_mat_model[]; +extern Gfx obj_axeT_gfx_model[]; +extern Gfx obj_paper_mat_model[]; +extern Gfx obj_paper_gfx_model[]; +extern Gfx obj_carpetT_mat_model[]; +extern Gfx obj_carpetT_gfx_model[]; +extern Gfx item_fish_modelT[]; +extern Gfx obj_shop_fossil_mat_model[]; +extern Gfx obj_shop_fossil_gfx_model[]; +extern Gfx obj_fukuT_mat_model[]; +extern Gfx obj_fukuT_gfx_model[]; +extern Gfx item_kabu_modelT[]; +extern Gfx obj_shop_kanbanT_mat_model[]; +extern Gfx obj_shop_kanbanT_gfx_model[]; +extern Gfx obj_shop_kaza1_model[]; +extern Gfx obj_shop_kaza2_model[]; +extern Gfx obj_shop_kaza3_model[]; +extern Gfx obj_shop_kaza4_model[]; +extern Gfx obj_shop_kaza5_model[]; +extern Gfx obj_shop_kaza6_model[]; +extern Gfx obj_shop_kaza7_model[]; +extern Gfx obj_shop_kaza8_model[]; +extern Gfx item_matutake_modelT[]; +extern Gfx obj_mdT_mat_model[]; +extern Gfx obj_mdT_gfx_model[]; +extern Gfx obj_shop_cnaegiT_mat_model[]; +extern Gfx obj_shop_cnaegiT_gfx_model[]; +extern Gfx obj_naegiT_mat_model[]; +extern Gfx obj_naegiT_gfx_model[]; +extern Gfx obj_netT_mat_model[]; +extern Gfx obj_netT_gfx_model[]; +extern Gfx item_orange_modelT[]; +extern Gfx obj_paintT_a_mat_model[]; +extern Gfx obj_paintT_b_mat_model[]; +extern Gfx obj_paintT_c_mat_model[]; +extern Gfx obj_paintT_d_mat_model[]; +extern Gfx obj_paintT_e_mat_model[]; +extern Gfx obj_paintT_f_mat_model[]; +extern Gfx obj_paintT_g_mat_model[]; +extern Gfx obj_paintT_h_mat_model[]; +extern Gfx obj_paintT_i_mat_model[]; +extern Gfx obj_paintT_j_mat_model[]; +extern Gfx obj_paintT_k_mat_model[]; +extern Gfx obj_paintT_l_mat_model[]; +extern Gfx obj_paintT_gfx_model[]; +extern Gfx obj_rodT_mat_model[]; +extern Gfx obj_rodT_gfx_model[]; +extern Gfx obj_rod_lineT_mat_model[]; +extern Gfx obj_rod_lineT_gfx_model[]; +extern Gfx obj_sangoT_mat_model[]; +extern Gfx obj_sangoT_gfx_model[]; +extern Gfx obj_seed_mat_model[]; +extern Gfx obj_seed_gfx_model[]; +extern Gfx obj_honegaiT_mat_model[]; +extern Gfx obj_honegaiT_gfx_model[]; +extern Gfx obj_horagaiT_mat_model[]; +extern Gfx obj_horagaiT_gfx_model[]; +extern Gfx obj_komagaiT_mat_model[]; +extern Gfx obj_komagaiT_gfx_model[]; +extern Gfx obj_takaragaiT_mat_model[]; +extern Gfx obj_takaragaiT_gfx_model[]; +extern Gfx obj_ougigaiT_mat_model[]; +extern Gfx obj_ougigaiT_gfx_model[]; +extern Gfx obj_sakuragaiT_mat_model[]; +extern Gfx obj_sakuragaiT_gfx_model[]; +extern Gfx obj_shakogaiT_mat_model[]; +extern Gfx obj_shakogaiT_gfx_model[]; +extern Gfx obj_shovelT_mat_model[]; +extern Gfx obj_shovelT_gfx_model[]; +extern Gfx obj_soldoutT_mat_model[]; +extern Gfx obj_soldoutT_gfx_model[]; +extern Gfx obj_ticketT_mat_model[]; +extern Gfx obj_ticketT_gfx_model[]; +extern Gfx obj_axe2T_mat_model[]; +extern Gfx obj_axe2T_gfx_model[]; +extern Gfx obj_net2T_mat_model[]; +extern Gfx obj_net2T_gfx_model[]; +extern Gfx obj_rod2T_mat_model[]; +extern Gfx obj_rod2T_gfx_model[]; +extern Gfx obj_rod2_lineT_mat_model[]; +extern Gfx obj_rod2_lineT_gfx_model[]; +extern Gfx obj_shovel2T_mat_model[]; +extern Gfx obj_shovel2T_gfx_model[]; +extern Gfx obj_g2T_mat_model[]; +extern Gfx obj_g2T_gfx_model[]; +extern Gfx obj_nagagutuT_mat_model[]; +extern Gfx obj_nagagutuT_gfx_model[]; +extern Gfx obj_g1T_mat_model[]; +extern Gfx obj_g1T_gfx_model[]; +extern Gfx obj_shop_utiwa1_mat_model[]; +extern Gfx obj_shop_utiwa1_gfx_model[]; +extern Gfx obj_shop_utiwa2_mat_model[]; +extern Gfx obj_shop_utiwa2_gfx_model[]; +extern Gfx obj_shop_utiwa3_mat_model[]; +extern Gfx obj_shop_utiwa3_gfx_model[]; +extern Gfx obj_shop_utiwa4_mat_model[]; +extern Gfx obj_shop_utiwa4_gfx_model[]; +extern Gfx obj_shop_utiwa5_mat_model[]; +extern Gfx obj_shop_utiwa5_gfx_model[]; +extern Gfx obj_shop_utiwa6_mat_model[]; +extern Gfx obj_shop_utiwa6_gfx_model[]; +extern Gfx obj_shop_utiwa7_mat_model[]; +extern Gfx obj_shop_utiwa7_gfx_model[]; +extern Gfx obj_shop_utiwa8_mat_model[]; +extern Gfx obj_shop_utiwa8_gfx_model[]; +extern Gfx obj_wallT_mat_model[]; +extern Gfx obj_wallT_gfx_model[]; +extern Gfx int_iid_diary_model[]; +extern Gfx int_iid_funediary_model[]; +extern Gfx int_iid_mdiary_model[]; +extern Gfx int_iid_newediary_model[]; +extern Gfx int_ike_nikki_fan1_on_model[]; +extern Gfx int_ike_nikki_fan2_on_model[]; +extern Gfx int_ike_nikki_fan3_on_model[]; +extern Gfx int_ike_nikki_fan4_on_model[]; +extern Gfx int_ike_nikki_fan5_on_model[]; +extern Gfx int_ike_nikki_wafu1_on_model[]; +extern Gfx bag_DL_mode[]; +extern Gfx bag_DL_vtx[]; +extern Gfx obj_shop_candy_modelT[]; +extern Gfx obj_item_cocoT_mat_model[]; +extern Gfx obj_item_cocoT_gfx_model[]; +extern Gfx nuts_DL_mode[]; +extern Gfx nuts_DL_vtx[]; +extern Gfx obj_otosiT_mat_model[]; +extern Gfx obj_otosiT_gfx_model[]; +extern Gfx peach_DL_mode[]; +extern Gfx peach_DL_vtx[]; +extern Gfx pear_DL_mode[]; +extern Gfx pear_DL_vtx[]; +extern Gfx int_nog_collegenote_model[]; +extern Gfx int_nog_harddiaryT_model[]; +extern Gfx int_nog_schoolnote_model[]; +extern Gfx int_nog_systemnote_model[]; +extern Gfx int_nog_tudurinoteT_model[]; +extern Gfx int_tak_nikki01_on_model[]; + +typedef struct ac_shop_goods_data_s { + mActor_name_t item_start; + mActor_name_t item_end; + Gfx* gfx0[2]; + Gfx* gfx1[2]; + Gfx* xlu_gfx0[2]; + Gfx* xlu_gfx1[2]; + int flags; +} aSG_data_c; + +// clang-format off +static const aSG_data_c l_shop_goods_dsp_table[] = { + { + ITM_PAPER00, + ITM_PAPER_END - 1, + { obj_paper_mat_model, obj_paper_mat_model }, + { obj_paper_gfx_model, obj_paper_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + 0xFE0E, + 0xFE0E, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + 0xFE10, + 0xFE18, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_CARPET00, + ITM_CARPET66, + { obj_carpetT_mat_model, obj_carpetT_mat_model }, + { obj_carpetT_gfx_model, obj_carpetT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WALL00, + ITM_WALL66, + { obj_wallT_mat_model, obj_wallT_mat_model }, + { obj_wallT_gfx_model, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOTH000, + ITM_CLOTH254, + { NULL, obj_wallT_mat_model }, + { NULL, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_AXE, + ITM_AXE, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_AXE_USE_1, + ITM_AXE_USE_7, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHOVEL, + ITM_SHOVEL, + { obj_shovelT_mat_model, obj_shovelT_mat_model }, + { obj_shovelT_gfx_model, obj_shovelT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_NET, + ITM_NET, + { obj_netT_mat_model, obj_netT_mat_model }, + { obj_netT_gfx_model, obj_netT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_ROD, + ITM_ROD, + { obj_rodT_mat_model, obj_rodT_mat_model }, + { obj_rodT_gfx_model, obj_rodT_gfx_model }, + { obj_rod_lineT_mat_model, obj_rod_lineT_mat_model }, + { obj_rod_lineT_gfx_model, obj_rod_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SAPLING, + ITM_SAPLING, + { obj_naegiT_mat_model, obj_naegiT_mat_model }, + { obj_naegiT_gfx_model, obj_naegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WHITE_PANSY_BAG, + ITM_YELLOW_TULIP_BAG, + { obj_seed_mat_model, obj_seed_mat_model }, + { obj_seed_gfx_model, obj_seed_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CEDAR_SAPLING, + ITM_CEDAR_SAPLING, + { obj_shop_cnaegiT_mat_model, obj_shop_cnaegiT_mat_model }, + { obj_shop_cnaegiT_gfx_model, obj_shop_cnaegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_YELLOW_PINWHEEL, + ITM_YELLOW_PINWHEEL, + { obj_shop_kaza1_model, obj_shop_kaza1_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PINWHEEL, + ITM_RED_PINWHEEL, + { obj_shop_kaza2_model, obj_shop_kaza2_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_TIGER_PINWHEEL, + ITM_TIGER_PINWHEEL, + { obj_shop_kaza3_model, obj_shop_kaza3_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GREEN_PINWHEEL, + ITM_GREEN_PINWHEEL, + { obj_shop_kaza4_model, obj_shop_kaza4_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PINK_PINWHEEL, + ITM_PINK_PINWHEEL, + { obj_shop_kaza5_model, obj_shop_kaza5_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_STRIPED_PINWHEEL, + ITM_STRIPED_PINWHEEL, + { obj_shop_kaza6_model, obj_shop_kaza6_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_PINWHEEL, + ITM_FLOWER_PINWHEEL, + { obj_shop_kaza7_model, obj_shop_kaza7_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FANCY_PINWHEEL, + ITM_FANCY_PINWHEEL, + { obj_shop_kaza8_model, obj_shop_kaza8_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BLUEBELL_FAN, + ITM_BLUEBELL_FAN, + { obj_shop_utiwa1_mat_model, obj_shop_utiwa1_mat_model }, + { obj_shop_utiwa1_gfx_model, obj_shop_utiwa1_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PLUM_FAN, + ITM_PLUM_FAN, + { obj_shop_utiwa2_mat_model, obj_shop_utiwa2_mat_model }, + { obj_shop_utiwa2_gfx_model, obj_shop_utiwa2_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BAMBOO_FAN, + ITM_BAMBOO_FAN, + { obj_shop_utiwa3_mat_model, obj_shop_utiwa3_mat_model }, + { obj_shop_utiwa3_gfx_model, obj_shop_utiwa3_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOUD_FAN, + ITM_CLOUD_FAN, + { obj_shop_utiwa4_mat_model, obj_shop_utiwa4_mat_model }, + { obj_shop_utiwa4_gfx_model, obj_shop_utiwa4_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_MAPLE_FAN, + ITM_MAPLE_FAN, + { obj_shop_utiwa5_mat_model, obj_shop_utiwa5_mat_model }, + { obj_shop_utiwa5_gfx_model, obj_shop_utiwa5_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FAN_FAN, + ITM_FAN_FAN, + { obj_shop_utiwa6_mat_model, obj_shop_utiwa6_mat_model }, + { obj_shop_utiwa6_gfx_model, obj_shop_utiwa6_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_FAN, + ITM_FLOWER_FAN, + { obj_shop_utiwa7_mat_model, obj_shop_utiwa7_mat_model }, + { obj_shop_utiwa7_gfx_model, obj_shop_utiwa7_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_LEAF_FAN, + ITM_LEAF_FAN, + { obj_shop_utiwa8_mat_model, obj_shop_utiwa8_mat_model }, + { obj_shop_utiwa8_gfx_model, obj_shop_utiwa8_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOOD_APPLE, + ITM_FOOD_APPLE, + { obj_apple2_modelT, obj_apple2_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEACH, + ITM_FOOD_PEACH, + { peach_DL_mode, peach_DL_mode }, + { peach_DL_vtx, peach_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_ORANGE, + ITM_FOOD_ORANGE, + { item_orange_modelT, item_orange_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FISH00, + ITM_FISH39, + { item_fish_modelT, item_fish_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_MUSHROOM, + ITM_FOOD_MUSHROOM, + { item_matutake_modelT, item_matutake_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_KABU_10, + ITM_KABU_SPOILED, + { item_kabu_modelT, item_kabu_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CANDY, + ITM_FOOD_CANDY, + { obj_shop_candy_modelT, obj_shop_candy_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CHERRY, + ITM_FOOD_CHERRY, + { nuts_DL_mode, nuts_DL_mode }, + { nuts_DL_vtx, nuts_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEAR, + ITM_FOOD_PEAR, + { pear_DL_mode, pear_DL_mode }, + { pear_DL_vtx, pear_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_COCONUT, + ITM_FOOD_COCONUT, + { obj_item_cocoT_mat_model, obj_item_cocoT_mat_model }, + { obj_item_cocoT_gfx_model, obj_item_cocoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MONEY_1000, + ITM_MONEY_100, + { bag_DL_mode, bag_DL_mode }, + { bag_DL_vtx, bag_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MINIDISK00, + ITM_MINIDISK54, + { obj_mdT_mat_model, obj_mdT_mat_model }, + { obj_mdT_gfx_model, obj_mdT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_TICKET_START, + ITM_TICKET_END, + { obj_ticketT_mat_model, obj_ticketT_mat_model }, + { obj_ticketT_gfx_model, obj_ticketT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_HUKUBUKURO_BAG, + ITM_HUKUBUKURO_PRESENT, + { obj_fukuT_mat_model, obj_fukuT_mat_model }, + { obj_fukuT_gfx_model, obj_fukuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST0_EMPTY_CAN, + ITM_DUST0_EMPTY_CAN, + { obj_g2T_mat_model, obj_g2T_mat_model }, + { obj_g2T_gfx_model, obj_g2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST1_BOOT, + ITM_DUST1_BOOT, + { obj_nagagutuT_mat_model, obj_nagagutuT_mat_model }, + { obj_nagagutuT_gfx_model, obj_nagagutuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST2_OLD_TIRE, + ITM_DUST2_OLD_TIRE, + { obj_g1T_mat_model, obj_g1T_mat_model }, + { obj_g1T_gfx_model, obj_g1T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOSSIL, + ITM_FOSSIL, + { obj_shop_fossil_mat_model, obj_shop_fossil_mat_model }, + { obj_shop_fossil_gfx_model, obj_shop_fossil_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PITFALL, + ITM_PITFALL, + { obj_otosiT_mat_model, obj_otosiT_mat_model }, + { obj_otosiT_gfx_model, obj_otosiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SHELL1, + ITM_SHELL1, + { obj_komagaiT_mat_model, obj_komagaiT_mat_model }, + { obj_komagaiT_gfx_model, obj_komagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL3, + ITM_SHELL3, + { obj_takaragaiT_mat_model, obj_takaragaiT_mat_model }, + { obj_takaragaiT_gfx_model, obj_takaragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL2, + ITM_SHELL2, + { obj_honegaiT_mat_model, obj_honegaiT_mat_model }, + { obj_honegaiT_gfx_model, obj_honegaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL6, + ITM_SHELL6, + { obj_horagaiT_mat_model, obj_horagaiT_mat_model }, + { obj_horagaiT_gfx_model, obj_horagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL4, + ITM_SHELL4, + { obj_sakuragaiT_mat_model, obj_sakuragaiT_mat_model }, + { obj_sakuragaiT_gfx_model, obj_sakuragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL0, + ITM_SHELL0, + { obj_ougigaiT_mat_model, obj_ougigaiT_mat_model }, + { obj_ougigaiT_gfx_model, obj_ougigaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL5, + ITM_SHELL5, + { obj_shakogaiT_mat_model, obj_shakogaiT_mat_model }, + { obj_shakogaiT_gfx_model, obj_shakogaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL7, + ITM_SHELL7, + { obj_sangoT_mat_model, obj_sangoT_mat_model }, + { obj_sangoT_gfx_model, obj_sangoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PAINT, + ITM_RED_PAINT, + { obj_paintT_a_mat_model, obj_paintT_a_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_ORANGE_PAINT, + ITM_ORANGE_PAINT, + { obj_paintT_b_mat_model, obj_paintT_b_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_YELLOW_PAINT, + ITM_YELLOW_PAINT, + { obj_paintT_c_mat_model, obj_paintT_c_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PALE_GREEN_PAINT, + ITM_PALE_GREEN_PAINT, + { obj_paintT_d_mat_model, obj_paintT_d_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GREEN_PAINT, + ITM_GREEN_PAINT, + { obj_paintT_e_mat_model, obj_paintT_e_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SKY_BLUE_PAINT, + ITM_SKY_BLUE_PAINT, + { obj_paintT_f_mat_model, obj_paintT_f_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLUE_PAINT, + ITM_BLUE_PAINT, + { obj_paintT_g_mat_model, obj_paintT_g_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PURPLE_PAINT, + ITM_PURPLE_PAINT, + { obj_paintT_h_mat_model, obj_paintT_h_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PINK_PAINT, + ITM_PINK_PAINT, + { obj_paintT_i_mat_model, obj_paintT_i_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLACK_PAINT, + ITM_BLACK_PAINT, + { obj_paintT_j_mat_model, obj_paintT_j_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_WHITE_PAINT, + ITM_WHITE_PAINT, + { obj_paintT_k_mat_model, obj_paintT_k_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BROWN_PAINT, + ITM_BROWN_PAINT, + { obj_paintT_l_mat_model, obj_paintT_l_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GOLDEN_NET, + ITM_GOLDEN_NET, + { obj_net2T_mat_model, obj_net2T_mat_model }, + { obj_net2T_gfx_model, obj_net2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_AXE, + ITM_GOLDEN_AXE, + { obj_axe2T_mat_model, obj_axe2T_mat_model }, + { obj_axe2T_gfx_model, obj_axe2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_SHOVEL, + ITM_GOLDEN_SHOVEL, + { obj_shovel2T_mat_model, obj_shovel2T_mat_model }, + { obj_shovel2T_gfx_model, obj_shovel2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_ROD, + ITM_GOLDEN_ROD, + { obj_rod2T_mat_model, obj_rod2T_mat_model }, + { obj_rod2T_gfx_model, obj_rod2T_gfx_model }, + { obj_rod2_lineT_mat_model, obj_rod2_lineT_mat_model }, + { obj_rod2_lineT_gfx_model, obj_rod2_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SIGNBOARD, + ITM_SIGNBOARD, + { obj_shop_kanbanT_mat_model, obj_shop_kanbanT_mat_model }, + { obj_shop_kanbanT_gfx_model, obj_shop_kanbanT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY00, + ITM_DIARY00, + { int_nog_collegenote_model, int_nog_collegenote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY01, + ITM_DIARY01, + { int_nog_schoolnote_model, int_nog_schoolnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY02, + ITM_DIARY02, + { int_nog_systemnote_model, int_nog_systemnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY03, + ITM_DIARY03, + { int_nog_harddiaryT_model, int_nog_harddiaryT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY04, + ITM_DIARY04, + { int_nog_tudurinoteT_model, int_nog_tudurinoteT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY05, + ITM_DIARY05, + { int_iid_diary_model, int_iid_diary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY06, + ITM_DIARY06, + { int_iid_funediary_model, int_iid_funediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY07, + ITM_DIARY07, + { int_iid_mdiary_model, int_iid_mdiary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY08, + ITM_DIARY08, + { int_iid_newediary_model, int_iid_newediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY09, + ITM_DIARY09, + { int_tak_nikki01_on_model, int_tak_nikki01_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY10, + ITM_DIARY10, + { int_ike_nikki_fan1_on_model, int_ike_nikki_fan1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY11, + ITM_DIARY11, + { int_ike_nikki_fan2_on_model, int_ike_nikki_fan2_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY12, + ITM_DIARY12, + { int_ike_nikki_fan3_on_model, int_ike_nikki_fan3_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY13, + ITM_DIARY13, + { int_ike_nikki_fan4_on_model, int_ike_nikki_fan4_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY14, + ITM_DIARY14, + { int_ike_nikki_fan5_on_model, int_ike_nikki_fan5_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY15, + ITM_DIARY15, + { int_ike_nikki_wafu1_on_model, int_ike_nikki_wafu1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + EMPTY_NO, + EMPTY_NO, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, +}; +// clang-format on