//
// Generated by dtk
// Translation Unit: d_shop.cpp
//

#include "d/dolzel.h" // IWYU pragma: keep
#include "d/d_shop.h"
#include "f_op/f_op_camera_mng.h"
#include "f_op/f_op_msg.h"
#include "d/d_lib.h"
#include "f_op/f_op_actor_mng.h"
#include "d/actor/d_a_shop_item.h"
#include "d/d_item_data.h"
#include "SSystem/SComponent/c_lib.h"
#include "d/d_com_inf_game.h"
#include "f_op/f_op_camera.h"
#include "m_Do/m_Do_mtx.h"
#include "d/actor/d_a_player.h"
#include "d/d_item.h"

u32 default_select_msg[] = {
    0x1DC1,
    0x2777,
    0x2784,
    0x0F3F,
    0x0F3F,
    0x0F3F,
    0x2F48,
    0x2F48,
    0x2866,
};

ShopItems_c__ItemData shopItemData_Feedbag = {
    /* mItemNo           */ dItemNo_BAIT_BAG_e,
    /* mMustNotOwnItemNo */ dItemNo_BAIT_BAG_e,
    /* mMustOwnItemNo    */ -1,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MUST_NOT_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_FoodAll = {
    /* mItemNo           */ dItemNo_BIRD_BAIT_5_e,
    /* mMustNotOwnItemNo */ dItemNo_BIRD_BAIT_5_e,
    /* mMustOwnItemNo    */ dItemNo_BAIT_BAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e | Shop_BuyCond_MUST_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_FoodHyoi = {
    /* mItemNo           */ dItemNo_HYOI_PEAR_e,
    /* mMustNotOwnItemNo */ dItemNo_HYOI_PEAR_e,
    /* mMustOwnItemNo    */ dItemNo_BAIT_BAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e | Shop_BuyCond_MUST_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_arrow10 = {
    /* mItemNo           */ dItemNo_ARROW_10_e,
    /* mMustNotOwnItemNo */ dItemNo_ARROW_10_e,
    /* mMustOwnItemNo    */ dItemNo_BOW_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e | Shop_BuyCond_MUST_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_arrow30 = {
    /* mItemNo           */ dItemNo_ARROW_30_e,
    /* mMustNotOwnItemNo */ dItemNo_ARROW_30_e,
    /* mMustOwnItemNo    */ dItemNo_BOW_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e | Shop_BuyCond_MUST_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_red_bottle = {
    /* mItemNo           */ dItemNo_RED_POTION_e,
    /* mMustNotOwnItemNo */ dItemNo_RED_POTION_e,
    /* mMustOwnItemNo    */ dItemNo_EMPTY_BOTTLE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_EMPTY_BOTTLE_e | Shop_BuyCond_ANY_BOTTLE_e,
};

ShopItems_c__ItemData shopItemData_blue_bottle = {
    /* mItemNo           */ dItemNo_BLUE_POTION_e,
    /* mMustNotOwnItemNo */ dItemNo_BLUE_POTION_e,
    /* mMustOwnItemNo    */ dItemNo_EMPTY_BOTTLE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_EMPTY_BOTTLE_e | Shop_BuyCond_ANY_BOTTLE_e,
};

ShopItems_c__ItemData shopItemData_green_bottle = {
    /* mItemNo           */ dItemNo_GREEN_POTION_e,
    /* mMustNotOwnItemNo */ dItemNo_GREEN_POTION_e,
    /* mMustOwnItemNo    */ dItemNo_EMPTY_BOTTLE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_EMPTY_BOTTLE_e | Shop_BuyCond_ANY_BOTTLE_e,
};

ShopItems_c__ItemData shopItemData_bomb10 = {
    /* mItemNo           */ dItemNo_BOMB_10_e,
    /* mMustNotOwnItemNo */ dItemNo_BOMB_10_e,
    /* mMustOwnItemNo    */ dItemNo_BOMB_BAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_bomb20 = {
    /* mItemNo           */ dItemNo_BOMB_20_e,
    /* mMustNotOwnItemNo */ dItemNo_BOMB_20_e,
    /* mMustOwnItemNo    */ dItemNo_BOMB_BAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_bomb30 = {
    /* mItemNo           */ dItemNo_BOMB_30_e,
    /* mMustNotOwnItemNo */ dItemNo_BOMB_30_e,
    /* mMustOwnItemNo    */ dItemNo_BOMB_BAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_emptybottle = {
    /* mItemNo           */ dItemNo_EMPTY_BOTTLE_e,
    /* mMustNotOwnItemNo */ dItemNo_EMPTY_BOTTLE_e,
    /* mMustOwnItemNo    */ dItemNo_EMPTY_BOTTLE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e,
};

ShopItems_c__ItemData shopItemData_kakera_heart = {
    /* mItemNo           */ dItemNo_HEART_PIECE_e,
    /* mMustNotOwnItemNo */ dItemNo_HEART_PIECE_e,
    /* mMustOwnItemNo    */ -1,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MUST_NOT_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_map = {
    /* mItemNo           */ dItemNo_COLLECT_MAP_30_e,
    /* mMustNotOwnItemNo */ dItemNo_COLLECT_MAP_30_e,
    /* mMustOwnItemNo    */ dItemNo_COLLECT_MAP_30_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MUST_NOT_OWN_ITEM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem0 = {
    /* mItemNo           */ dItemNo_TOWN_FLOWER_e,
    /* mMustNotOwnItemNo */ dItemNo_TOWN_FLOWER_e,
    /* mMustOwnItemNo    */ dItemNo_TOWN_FLOWER_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem1 = {
    /* mItemNo           */ dItemNo_SEA_FLOWER_e,
    /* mMustNotOwnItemNo */ dItemNo_SEA_FLOWER_e,
    /* mMustOwnItemNo    */ dItemNo_SEA_FLOWER_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem2 = {
    /* mItemNo           */ dItemNo_EXOTIC_FLOWER_e,
    /* mMustNotOwnItemNo */ dItemNo_EXOTIC_FLOWER_e,
    /* mMustOwnItemNo    */ dItemNo_EXOTIC_FLOWER_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem3 = {
    /* mItemNo           */ dItemNo_HEROS_FLAG_e,
    /* mMustNotOwnItemNo */ dItemNo_HEROS_FLAG_e,
    /* mMustOwnItemNo    */ dItemNo_HEROS_FLAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem4 = {
    /* mItemNo           */ dItemNo_BIG_CATCH_FLAG_e,
    /* mMustNotOwnItemNo */ dItemNo_BIG_CATCH_FLAG_e,
    /* mMustOwnItemNo    */ dItemNo_BIG_CATCH_FLAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem5 = {
    /* mItemNo           */ dItemNo_BIG_SALE_FLAG_e,
    /* mMustNotOwnItemNo */ dItemNo_BIG_SALE_FLAG_e,
    /* mMustOwnItemNo    */ dItemNo_BIG_SALE_FLAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem6 = {
    /* mItemNo           */ dItemNo_PINWHEEL_e,
    /* mMustNotOwnItemNo */ dItemNo_PINWHEEL_e,
    /* mMustOwnItemNo    */ dItemNo_PINWHEEL_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem7 = {
    /* mItemNo           */ dItemNo_SICKLE_MOON_FLAG_e,
    /* mMustNotOwnItemNo */ dItemNo_SICKLE_MOON_FLAG_e,
    /* mMustOwnItemNo    */ dItemNo_SICKLE_MOON_FLAG_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem8 = {
    /* mItemNo           */ dItemNo_SKULL_TOWER_IDOL_e,
    /* mMustNotOwnItemNo */ dItemNo_SKULL_TOWER_IDOL_e,
    /* mMustOwnItemNo    */ dItemNo_SKULL_TOWER_IDOL_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem9 = {
    /* mItemNo           */ dItemNo_FOUNTAIN_IDOL_e,
    /* mMustNotOwnItemNo */ dItemNo_FOUNTAIN_IDOL_e,
    /* mMustOwnItemNo    */ dItemNo_FOUNTAIN_IDOL_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem10 = {
    /* mItemNo           */ dItemNo_POSTMAN_STATUE_e,
    /* mMustNotOwnItemNo */ dItemNo_POSTMAN_STATUE_e,
    /* mMustOwnItemNo    */ dItemNo_POSTMAN_STATUE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

ShopItems_c__ItemData shopItemData_RotenItem11 = {
    /* mItemNo           */ dItemNo_SHOP_GURU_STATUE_e,
    /* mMustNotOwnItemNo */ dItemNo_SHOP_GURU_STATUE_e,
    /* mMustOwnItemNo    */ dItemNo_SHOP_GURU_STATUE_e,
    /* mBuyConditions    */ Shop_BuyCond_RUPEES_e | Shop_BuyCond_MAXIMUM_e,
};

__shop_items_set_data shopItems_setData_Bomb10_exp = {
    /* mpItemData */ &shopItemData_bomb10,
    /* mShowMsgID */ 0x0000277A,
    /* mBuyMsgID  */ 0x0000277D,
    /* m0C        */ 0x000003E8,
    /* mCount     */ 10,
};

__shop_items_set_data shopItems_setData_Bomb20_exp = {
    /* mpItemData */ &shopItemData_bomb20,
    /* mShowMsgID */ 0x0000277B,
    /* mBuyMsgID  */ 0x0000277E,
    /* m0C        */ 0x000007D0,
    /* mCount     */ 20,
};

__shop_items_set_data shopItems_setData_Bomb30_exp = {
    /* mpItemData */ &shopItemData_bomb10,
    /* mShowMsgID */ 0x0000277C,
    /* mBuyMsgID  */ 0x0000277F,
    /* m0C        */ 0x00000BB8,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_Bomb10 = {
    /* mpItemData */ &shopItemData_bomb10,
    /* mShowMsgID */ 0x00002788,
    /* mBuyMsgID  */ 0x0000278B,
    /* m0C        */ 0x00000014,
    /* mCount     */ 10,
};

__shop_items_set_data shopItems_setData_Bomb20 = {
    /* mpItemData */ &shopItemData_bomb20,
    /* mShowMsgID */ 0x00002789,
    /* mBuyMsgID  */ 0x0000278C,
    /* m0C        */ 0x00000023,
    /* mCount     */ 20,
};

__shop_items_set_data shopItems_setData_Bomb30 = {
    /* mpItemData */ &shopItemData_bomb30,
    /* mShowMsgID */ 0x0000278A,
    /* mBuyMsgID  */ 0x0000278D,
    /* m0C        */ 0x00000032,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_Feedbag = {
    /* mpItemData */ &shopItemData_Feedbag,
    /* mShowMsgID */ 0x00000F42,
    /* mBuyMsgID  */ 0x00000F45,
    /* m0C        */ 0x00000F66,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_FoodAll = {
    /* mpItemData */ &shopItemData_FoodAll,
    /* mShowMsgID */ 0x00000F43,
    /* mBuyMsgID  */ 0x00000F46,
    /* m0C        */ 0x0000000A,
    /* mCount     */ 10,
};

__shop_items_set_data shopItems_setData_FoodHyoi = {
    /* mpItemData */ &shopItemData_FoodHyoi,
    /* mShowMsgID */ 0x00000F44,
    /* mBuyMsgID  */ 0x00000F47,
    /* m0C        */ 0x0000000A,
    /* mCount     */ 10,
};

__shop_items_set_data shopItems_setData_Bomb30Bs = {
    /* mpItemData */ &shopItemData_bomb30,
    /* mShowMsgID */ 0x00000F67,
    /* mBuyMsgID  */ 0x00000F68,
    /* m0C        */ 0x00000F63,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_arrow10 = {
    /* mpItemData */ &shopItemData_arrow10,
    /* mShowMsgID */ 0x00000F69,
    /* mBuyMsgID  */ 0x00000F6A,
    /* m0C        */ 0x00000F64,
    /* mCount     */ 10,
};

__shop_items_set_data shopItems_setData_arrow30 = {
    /* mpItemData */ &shopItemData_arrow30,
    /* mShowMsgID */ 0x00000F6B,
    /* mBuyMsgID  */ 0x00000F6C,
    /* m0C        */ 0x00000F64,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_red_bottleBs = {
    /* mpItemData */ &shopItemData_red_bottle,
    /* mShowMsgID */ 0x00000F6D,
    /* mBuyMsgID  */ 0x00000F6E,
    /* m0C        */ 0x00000F65,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_Bomb30Bs2 = {
    /* mpItemData */ &shopItemData_bomb30,
    /* mShowMsgID */ 0x00002F72,
    /* mBuyMsgID  */ 0x00002F73,
    /* m0C        */ 0x00002F6B,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_arrow30Bs2 = {
    /* mpItemData */ &shopItemData_arrow30,
    /* mShowMsgID */ 0x00002F74,
    /* mBuyMsgID  */ 0x00002F75,
    /* m0C        */ 0x00002F6B,
    /* mCount     */ 30,
};

__shop_items_set_data shopItems_setData_red_bottleBs2 = {
    /* mpItemData */ &shopItemData_red_bottle,
    /* mShowMsgID */ 0x00002F76,
    /* mBuyMsgID  */ 0x00002F77,
    /* m0C        */ 0x00002F6B,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_emptybottle = {
    /* mpItemData */ &shopItemData_emptybottle,
    /* mShowMsgID */ 0x00002F4A,
    /* mBuyMsgID  */ 0x00002F4D,
    /* m0C        */ 0x00002F78,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_kakera_heart = {
    /* mpItemData */ &shopItemData_kakera_heart,
    /* mShowMsgID */ 0x00002F4B,
    /* mBuyMsgID  */ 0x00002F4E,
    /* m0C        */ 0x00002F78,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_map = {
    /* mpItemData */ &shopItemData_map,
    /* mShowMsgID */ 0x00002F4C,
    /* mBuyMsgID  */ 0x00002F4F,
    /* m0C        */ 0x00002F78,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_red_bottleDs = {
    /* mpItemData */ &shopItemData_red_bottle,
    /* mShowMsgID */ 0x00001DD1,
    /* mBuyMsgID  */ 0x00001DD4,
    /* m0C        */ 0x00000014,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_green_bottleDs = {
    /* mpItemData */ &shopItemData_green_bottle,
    /* mShowMsgID */ 0x00001DD2,
    /* mBuyMsgID  */ 0x00001DD5,
    /* m0C        */ 0x0000000A,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_blue_bottleDs = {
    /* mpItemData */ &shopItemData_blue_bottle,
    /* mShowMsgID */ 0x00001DD3,
    /* mBuyMsgID  */ 0x00001DD6,
    /* m0C        */ 0x0000003C,
    /* mCount     */ -1,
};

__shop_items_set_data shopItems_setData_RotenItem0 = {
    /* mpItemData */ &shopItemData_RotenItem0,
    /* mShowMsgID */ 0x0000286B,
    /* mBuyMsgID  */ 0x0000286C,
    /* m0C        */ 0x0000000A,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem1 = {
    /* mpItemData */ &shopItemData_RotenItem1,
    /* mShowMsgID */ 0x0000286D,
    /* mBuyMsgID  */ 0x0000286E,
    /* m0C        */ 0x00000014,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem2 = {
    /* mpItemData */ &shopItemData_RotenItem2,
    /* mShowMsgID */ 0x0000286F,
    /* mBuyMsgID  */ 0x00002870,
    /* m0C        */ 0x00000019,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem3 = {
    /* mpItemData */ &shopItemData_RotenItem3,
    /* mShowMsgID */ 0x00002871,
    /* mBuyMsgID  */ 0x00002872,
    /* m0C        */ 0x0000004B,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem4 = {
    /* mpItemData */ &shopItemData_RotenItem4,
    /* mShowMsgID */ 0x00002873,
    /* mBuyMsgID  */ 0x00002874,
    /* m0C        */ 0x00000019,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem5 = {
    /* mpItemData */ &shopItemData_RotenItem5,
    /* mShowMsgID */ 0x00002875,
    /* mBuyMsgID  */ 0x00002876,
    /* m0C        */ 0x0000000A,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem6 = {
    /* mpItemData */ &shopItemData_RotenItem6,
    /* mShowMsgID */ 0x00002877,
    /* mBuyMsgID  */ 0x00002878,
    /* m0C        */ 0x00000014,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem7 = {
    /* mpItemData */ &shopItemData_RotenItem7,
    /* mShowMsgID */ 0x00002879,
    /* mBuyMsgID  */ 0x0000287A,
    /* m0C        */ 0x00000028,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem8 = {
    /* mpItemData */ &shopItemData_RotenItem8,
    /* mShowMsgID */ 0x0000287B,
    /* mBuyMsgID  */ 0x0000287C,
    /* m0C        */ 0x0000003C,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem9 = {
    /* mpItemData */ &shopItemData_RotenItem9,
    /* mShowMsgID */ 0x0000287D,
    /* mBuyMsgID  */ 0x0000287E,
    /* m0C        */ 0x00000019,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem10 = {
    /* mpItemData */ &shopItemData_RotenItem10,
    /* mShowMsgID */ 0x0000287F,
    /* mBuyMsgID  */ 0x00002880,
    /* m0C        */ 0x00000064,
    /* mCount     */ 1,
};

__shop_items_set_data shopItems_setData_RotenItem11 = {
    /* mpItemData */ &shopItemData_RotenItem11,
    /* mShowMsgID */ 0x00002881,
    /* mBuyMsgID  */ 0x00002882,
    /* m0C        */ 0x000000C8,
    /* mCount     */ 1,
};

__shop_items_set_data* Item_setData_rshop[] = {
    &shopItems_setData_RotenItem0,
    &shopItems_setData_RotenItem1,
    &shopItems_setData_RotenItem2,
    &shopItems_setData_RotenItem3,
    &shopItems_setData_RotenItem4,
    &shopItems_setData_RotenItem5,
    &shopItems_setData_RotenItem6,
    &shopItems_setData_RotenItem7,
    &shopItems_setData_RotenItem8,
    &shopItems_setData_RotenItem9,
    &shopItems_setData_RotenItem10,
    &shopItems_setData_RotenItem11,
    NULL,
};

__shop_items_set_data* Item_set_data_dshop[] = {
    &shopItems_setData_red_bottleDs,
    &shopItems_setData_green_bottleDs,
    &shopItems_setData_blue_bottleDs,
    NULL,
};

__shop_items_set_data* Item_set_data_bmshop1[] = {
    &shopItems_setData_Bomb10_exp,
    &shopItems_setData_Bomb20_exp,
    &shopItems_setData_Bomb30_exp,
    NULL,
};

__shop_items_set_data* Item_set_data_bmshop2[] = {
    &shopItems_setData_Bomb10,
    &shopItems_setData_Bomb20,
    &shopItems_setData_Bomb30,
    NULL,
};

__shop_items_set_data* Item_set_data_bshop_3[] = {
    &shopItems_setData_Feedbag,
    &shopItems_setData_FoodAll,
    &shopItems_setData_FoodHyoi,
    NULL,
};

__shop_items_set_data* Item_set_data_bshop_4[] = {
    &shopItems_setData_arrow10,
    &shopItems_setData_arrow30,
    &shopItems_setData_FoodAll,
    NULL,
};

__shop_items_set_data* Item_set_data_bshop_5[] = {
    &shopItems_setData_arrow30,
    &shopItems_setData_Bomb30Bs,
    &shopItems_setData_red_bottleBs,
    NULL,
};

__shop_items_set_data* Item_set_data_bshop_6[] = {
    &shopItems_setData_emptybottle,
    &shopItems_setData_kakera_heart,
    &shopItems_setData_map,
    NULL,
};

__shop_items_set_data** Item_set_data_tbl[] = {
    Item_set_data_dshop,
    Item_set_data_bmshop1,
    Item_set_data_bmshop2,
    Item_set_data_bshop_3,
    Item_set_data_bshop_4,
    Item_set_data_bshop_5,
    Item_set_data_bshop_6,
    Item_set_data_bshop_6,
    NULL,
};

Vec Item_set_pos_data_dshop[] = {
    {-50.0f, 75.0f, -70.0f},
    {40.0f, 75.0f, -70.0f},
    {130.0f, 75.0f, -70.0f},
};

Vec Item_set_pos_data_bmshop1[] = {
    {5.0f, 157.0f, -90.0f},
    {95.0f, 157.0f, -90.0f},
    {185.0f, 157.0f, -90.0f},
};

Vec Item_set_pos_data_bmshop2[] = {
    {5.0f, 157.0f, -90.0f},
    {95.0f, 157.0f, -90.0f},
    {185.0f, 157.0f, -90.0f},
};

Vec Item_set_pos_data_bshop_3[] = {
    {-15.0f, 77.0f, 5.0f},
    {50.0f, 77.0f, 5.0f},
    {115.0f, 77.0f, 5.0f},
};

Vec Item_set_pos_data_bshop_4[] = {
    {-15.0f, 77.0f, 5.0f},
    {50.0f, 77.0f, 5.0f},
    {115.0f, 77.0f, 5.0f},
};

Vec Item_set_pos_data_bshop_5[] = {
    {-15.0f, 77.0f, 5.0f},
    {50.0f, 77.0f, 5.0f},
    {115.0f, 77.0f, 5.0f},
};

Vec Item_set_pos_data_bshop_6[] = {
    {-25.0f, 75.0f, 5.0f},
    {50.0f, 75.0f, 5.0f},
    {125.0f, 75.0f, 5.0f},
};

Vec Item_set_pos_data_bshop_7[] = {
    {-25.0f, 75.0f, 5.0f},
    {50.0f, 75.0f, 5.0f},
    {125.0f, 75.0f, 5.0f},
};

Vec Item_set_pos_data_rshop_0[] = {
    {1423.0f, 790.0f, -204553.0f},
    {1506.0f, 790.0f, -204494.0f},
    {1592.0f, 790.0f, -204438.0f},
    {1711.0f, 790.0f, -204357.0f},
    {1783.0f, 790.0f, -204288.0f},
    {1852.0f, 790.0f, -204220.0f},
    {1946.0f, 790.0f, -204132.0f},
    {2017.0f, 790.0f, -204064.0f},
    {2084.0f, 790.0f, -203986.0f},
    {2183.0f, 790.0f, -203872.0f},
    {2231.0f, 790.0f, -203798.0f},
    {2291.0f, 790.0f, -203736.0f},
};

Vec* Item_set_pos_data_tbl[] = {
    Item_set_pos_data_dshop,
    Item_set_pos_data_bmshop1,
    Item_set_pos_data_bmshop2,
    Item_set_pos_data_bshop_3,
    Item_set_pos_data_bshop_4,
    Item_set_pos_data_bshop_5,
    Item_set_pos_data_bshop_6,
    Item_set_pos_data_bshop_7,
    Item_set_pos_data_rshop_0,
};

ShopItems_c__select_list_data select_list_data_dshop_0[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_1[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_2[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_3[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_4[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_5[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_6[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_bshop_7[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data select_list_data_rshop[4] = {
    {2, 0, -1, -1},
    {-1, 1, 0, 0},
    {0, 2, 1, 1},
    {1, -1, 2, 2},
};

ShopItems_c__select_list_data* select_list_data_tbl[] = {
    select_list_data_dshop_0,
    select_list_data_bshop_1,
    select_list_data_bshop_2,
    select_list_data_bshop_3,
    select_list_data_bshop_4,
    select_list_data_bshop_5,
    select_list_data_bshop_6,
    select_list_data_bshop_7,
    select_list_data_rshop,
};

ShopItems_c__shop_cam_data cam_dshop_0[] = {
    {
        {-166.0f, 102.0f, -254.0f},
        {-11.0f, 102.0f, 60.0f},
        60.0f,
    },
    {
        {0.0f, 102.0f, -254.0f},
        {0.0f, 102.0f, 185.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bmshop_0[] = {
    {
        {-132.0f, 145.0f, -67.0f},
        {15.0f, 145.0f, 308.0f},
        60.0f,
    },
    {
        {35.0f, 145.0f, -94.0f},
        {15.0f, 145.0f, 308.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bmshop_1[] = {
    {
        {-132.0f, 145.0f, -67.0f},
        {15.0f, 145.0f, 308.0f},
        60.0f,
    },
    {
        {35.0f, 145.0f, -94.0f},
        {15.0f, 145.0f, 308.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bshop_3[] = {
    {
        {-27.0f, 83.0f, -108.0f},
        {44.0f, 83.0f, 258.0f},
        60.0f,
    },
    {
        {-21.0f, 83.0f, -108.0f},
        {-21.0f, 83.0f, 268.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bshop_4[] = {
    {
        {-27.0f, 83.0f, -108.0f},
        {44.0f, 83.0f, 258.0f},
        60.0f,
    },
    {
        {-21.0f, 83.0f, -108.0f},
        {-21.0f, 83.0f, 268.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bshop_5[] = {
    {
        {-27.0f, 83.0f, -108.0f},
        {44.0f, 83.0f, 258.0f},
        60.0f,
    },
    {
        {-21.0f, 83.0f, -108.0f},
        {-21.0f, 83.0f, 268.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bshop_6[] = {
    {
        {-27.0f, 83.0f, -108.0f},
        {44.0f, 83.0f, 258.0f},
        60.0f,
    },
    {
        {-21.0f, 83.0f, -108.0f},
        {-21.0f, 83.0f, 268.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_bshop_7[] = {
    {
        {-27.0f, 83.0f, -108.0f},
        {44.0f, 83.0f, 258.0f},
        60.0f,
    },
    {
        {-21.0f, 83.0f, -108.0f},
        {-21.0f, 83.0f, 268.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_rshop_0[] = {
    {
        {860.0f, 817.0f, -204373.0f},
        {809.0f, 810.0f, -204277.0f},
        45.0f,
    },
    {
        {957.0f, 830.0f, -204557.0f},
        {809.0f, 810.0f, -204277.0f},
        45.0f,
    },
};

ShopItems_c__shop_cam_data cam_rshop_1[] = {
    {
        {1422.0f, 778.0f, -204407.0f},
        {1276.0f, 857.0f, -204086.0f},
        60.0f,
    },
    {
        {1513.0f, 803.0f, -204507.0f},
        {1263.0f, 860.0f, -204117.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_rshop_2[] = {
    {
        {1687.0f, 782.0f, -204197.0f},
        {1508.0f, 845.0f, -203874.0f},
        60.0f,
    },
    {
        {1746.0f, 816.0f, -204231.0f},
        {1480.0f, 894.0f, -203907.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_rshop_3[] = {
    {
        {1899.0f, 775.0f, -204025.0f},
        {1682.0f, 863.0f, -203732.0f},
        60.0f,
    },
    {
        {2013.0f, 810.0f, -204065.0f},
        {1679.0f, 854.0f, -203730.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data cam_rshop_4[] = {
    {
        {2149.0f, 759.0f, -203759.0f},
        {1902.0f, 850.0f, -203486.0f},
        60.0f,
    },
    {
        {2209.0f, 821.0f, -203780.0f},
        {1874.0f, 873.0f, -203524.0f},
        60.0f,
    },
};

ShopItems_c__shop_cam_data* shop_cam_data_tbl[] = {
    cam_dshop_0,
    cam_bmshop_0,
    cam_bmshop_1,
    cam_bshop_3,
    cam_bshop_4,
    cam_bshop_5,
    cam_bshop_6,
    cam_bshop_7,
    cam_rshop_0,
    cam_rshop_1,
    cam_rshop_2,
    cam_rshop_3,
    cam_rshop_4,
};

/* 8005EFDC-8005F088       .text shop_cam_action_init__16ShopCam_action_cFv */
BOOL ShopCam_action_c::shop_cam_action_init() {
    daPy_getPlayerActorClass()->onPlayerNoDraw();
    setCamAction(&ShopCam_action_c::shop_cam_action);
    
    m18 = shop_cam_data_tbl[mCamDataIdx][0].m00;
    m24 = shop_cam_data_tbl[mCamDataIdx][0].m0C;
    m30 = shop_cam_data_tbl[mCamDataIdx][0].m18;
    m54 = -1;
    
    return TRUE;
}

/* 8005F088-8005F220       .text shop_cam_action__16ShopCam_action_cFv */
int ShopCam_action_c::shop_cam_action() {
    camera_process_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
    camera->mCamera.Stay();
    camera->mCamera.SetTrimSize(1);
    cXyz r1_2C;
    cXyz r1_20;
    f32 temp;
    if (m54 < 0) {
        r1_2C = shop_cam_data_tbl[mCamDataIdx][0].m00;
        r1_20 = shop_cam_data_tbl[mCamDataIdx][0].m0C;
        temp = shop_cam_data_tbl[mCamDataIdx][0].m18;
    } else {
        r1_2C = shop_cam_data_tbl[mCamDataIdx][1].m00;
        r1_20 = shop_cam_data_tbl[mCamDataIdx][1].m0C;
        temp = shop_cam_data_tbl[mCamDataIdx][1].m18;
    }
    cLib_addCalcPos2(&m18, r1_2C, 0.25f, 20.0f);
    cLib_addCalcPos2(&m24, r1_20, 0.25f, 20.0f);
    cLib_addCalc2(&m30, temp, 0.25f, 5.0f);
    camera->mCamera.Set(m18, m24, m30, 0);
    return TRUE;
}

/* 8005F220-8005F370       .text rsh_talk_cam_action_init__16ShopCam_action_cFP10fopAc_ac_c4cXyz4cXyzf */
BOOL ShopCam_action_c::rsh_talk_cam_action_init(fopAc_ac_c* param_1, cXyz param_2, cXyz param_3, f32 param_4) {
    if (checkCamAction(&ShopCam_action_c::rsh_talk_cam_action)) {
        return TRUE;
    }
    
    daPy_getPlayerActorClass()->onPlayerNoDraw();
    setCamAction(&ShopCam_action_c::rsh_talk_cam_action);
    
    mDoMtx_stack_c::transS(param_1->attention_info.position);
    mDoMtx_stack_c::YrotM(param_1->current.angle.y);
    cXyz r1_20;
    mDoMtx_stack_c::multVec(&param_2, &r1_20);
    cXyz r1_14;
    mDoMtx_stack_c::multVec(&param_3, &r1_14);
    m18 = r1_20;
    m24 = r1_14;
    m30 = param_4;
    m54 = -1;
    
    return TRUE;
}

/* 8005F370-8005F41C       .text rsh_talk_cam_action__16ShopCam_action_cFv */
int ShopCam_action_c::rsh_talk_cam_action() {
    camera_process_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
    camera->mCamera.Stay();
    camera->mCamera.SetTrimSize(1);
    camera->mCamera.Set(m18, m24, m30, 0);
    return TRUE;
}

/* 8005F41C-8005F494       .text ds_normal_cam_action_init__16ShopCam_action_cFv */
BOOL ShopCam_action_c::ds_normal_cam_action_init() {
    daPy_getPlayerActorClass()->onPlayerNoDraw();
    setCamAction(&ShopCam_action_c::ds_normal_cam_action);
    
    m18.set(-136.0f, 102.0f, -254.0f);
    m24.set(-136.0f, 102.0f, 90.0f);
    m30 = 60.0f;
    m54 = -1;
    
    return TRUE;
}

/* 8005F494-8005F570       .text ds_normal_cam_action__16ShopCam_action_cFv */
int ShopCam_action_c::ds_normal_cam_action() {
    camera_process_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
    camera->mCamera.Stay();
    camera->mCamera.SetTrimSize(1);
    
    m18.set(-136.0f, 102.0f, -254.0f);
    m24.set(-136.0f, 102.0f, 90.0f);
    m30 = 60.0f;
    
    camera->mCamera.Set(m18, m24, m30, 0);
    return TRUE;
}

/* 8005F570-8005F5C0       .text Save__16ShopCam_action_cFv */
void ShopCam_action_c::Save() {
    camera_process_class* camera = dComIfGp_getCamera(0);
    if (camera) {
        mOrigCenter = *fopCamM_GetCenter_p(camera);
        mOrigEye = *fopCamM_GetEye_p(camera);
        mOrigFovy = fopCamM_GetFovy(camera);
    }
}

/* 8005F5C0-8005F6C4       .text Reset__16ShopCam_action_cFv */
void ShopCam_action_c::Reset() {
    camera_process_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
    camera->mCamera.Set(mOrigCenter, mOrigEye, mOrigFovy, 0);
    camera->mCamera.Stay();
    camera->mCamera.Reset(mOrigCenter, mOrigEye, mOrigFovy, 0);
    mCurrActionFunc = NULL;
}

/* 8005F6C4-8005F708       .text move__16ShopCam_action_cFv */
void ShopCam_action_c::move() {
    if (mCurrActionFunc) {
        (this->*mCurrActionFunc)();
    }
}

/* 8005F708-8005F91C       .text createItem__11ShopItems_cFii */
void ShopItems_c::createItem(int numItems, int roomNo) {
    csXyz angle = csXyz::Zero;
    if (mItemSetListGlobalIdx == 0) {
        cXyz pos;
        pos.set(
            Item_set_pos_data_tbl[mItemSetListGlobalIdx][0].x,
            Item_set_pos_data_tbl[mItemSetListGlobalIdx][0].y,
            Item_set_pos_data_tbl[mItemSetListGlobalIdx][0].z
        );
        
        dComIfGs_isEventBit(dSv_event_flag_c::UNK_0D04);
        dComIfGs_isEventBit(dSv_event_flag_c::UNK_0D02);
        
        mItemActorProcessIds[0] = fopAcM_createShopItem(
            &pos, Item_set_data_tbl[mItemSetListGlobalIdx][0]->mpItemData->mItemNo,
            &angle, roomNo
        );
        pos.x += 75.0f;
        
        if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0D04)) {
            mItemActorProcessIds[1] = fopAcM_createShopItem(
                &pos, Item_set_data_tbl[mItemSetListGlobalIdx][1]->mpItemData->mItemNo,
                &angle, roomNo
            );
            pos.x += 75.0f;
        }
        
        if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0D02)) {
            mItemActorProcessIds[2] = fopAcM_createShopItem(
                &pos, Item_set_data_tbl[mItemSetListGlobalIdx][2]->mpItemData->mItemNo,
                &angle, roomNo
            );
        }
    } else {
        for (int i = 0; i < numItems; i++) {
            mItemActorProcessIds[i] = fopAcM_createShopItem(
                (cXyz*)&Item_set_pos_data_tbl[mItemSetListGlobalIdx][i],
                Item_set_data_tbl[mItemSetListGlobalIdx][i]->mpItemData->mItemNo,
                &angle, roomNo
            );
        }
    }
    mNumItems = numItems;
}

/* 8005F91C-8005FB68       .text Item_Select__11ShopItems_cFi */
BOOL ShopItems_c::Item_Select(int idx) {
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[idx]);
    if (item) {
        csXyz* pAngle = item->getRotateP();
        cXyz* pPos = item->getPosP();
        cXyz temp2 = item->home.pos;
        cXyz temp = m30;
        temp -= item->getCenter();
        if (m3C == 1) {
            cXyz temp3 = temp - temp2;
            f32 f2 = temp3.abs() * 0.05f;
            cLib_addCalcPos2(pPos, temp, 0.5f, f2);
        } else {
            cXyz temp3 = temp - temp2;
            f32 f2 = temp3.abs() * 0.1f;
            cLib_addCalcPos2(pPos, temp2, 0.5f, f2);
        }
        pAngle->y += 0x400;
        return TRUE;
    }
    return TRUE;
}

/* 8005FB68-8005FC10       .text Item_Wait__11ShopItems_cFi */
BOOL ShopItems_c::Item_Wait(int idx) {
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[idx]);
    if (item) {
        cLib_addCalcAngleS(&item->getRotateP()->y, item->home.angle.y, 0x4, 0x800, 0x80);
        cXyz* pPos = item->getPosP();
        cXyz targetPos = item->home.pos;
        cLib_addCalcPos2(pPos, targetPos, 0.5f, 20.0f);
        return TRUE;
    }
    return FALSE;
}

/* 8005FC10-8005FC38       .text Item_ZoomUp__11ShopItems_cFR4cXyz */
BOOL ShopItems_c::Item_ZoomUp(cXyz& pos) {
    m3C = 1;
    m30 = pos;
    return TRUE;
}

/* 8005FC38-8005FD20       .text Item_Move__11ShopItems_cFv */
BOOL ShopItems_c::Item_Move() {
    for (int i = 0; i < mNumItems; i++) {
        if (i == mSelectedItemIdx) {
            if (mItemActorProcessIds[i] != fpcM_ERROR_PROCESS_ID_e) {
                Item_Select(i);
            }
        } else {
            if (mItemActorProcessIds[i] != fpcM_ERROR_PROCESS_ID_e) {
                Item_Wait(i);
            }
        }
        
        if (isSoldOutItem(i)) {
            daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[i]);
            if (item) {
                item->hide();
            }
        }
    }
    m3C = 0;
    return TRUE;
}

/* 8005FD20-8005FDE8       .text getSelectItemPos__11ShopItems_cFv */
cXyz ShopItems_c::getSelectItemPos() {
    if (mSelectedItemIdx < 0) {
        return cXyz::Zero;
    }
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[mSelectedItemIdx]);
    if (item) {
        return *item->getPosP() + item->getCenter();
    } else {
        return cXyz::Zero;
    }
}

/* 8005FDE8-8005FEA8       .text getSelectItemBasePos__11ShopItems_cFv */
cXyz ShopItems_c::getSelectItemBasePos() {
    if (mSelectedItemIdx < 0) {
        return cXyz::Zero;
    }
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[mSelectedItemIdx]);
    if (item) {
        return item->home.pos + item->getCenter();
    } else {
        return cXyz::Zero;
    }
}

/* 8005FEA8-8005FF10       .text hideSelectItem__11ShopItems_cFv */
void ShopItems_c::hideSelectItem() {
    if (mSelectedItemIdx < 0) {
        return;
    }
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[mSelectedItemIdx]);
    if (item) {
        item->hide();
    }
    mbIsHide = 1;
}

/* 8005FF10-8005FF7C       .text SoldOutItem__11ShopItems_cFi */
void ShopItems_c::SoldOutItem(int idx) {
    daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[idx]);
    if (item) {
        item->hide();
    }
    mItemIsSoldOut[idx] = true;
}

/* 8005FF7C-8005FF98       .text getItemNo__11ShopItems_cFi */
u8 ShopItems_c::getItemNo(int idx) {
    return mpItemSetList[idx]->mpItemData->mItemNo;
}

/* 8005FF98-80060058       .text showItem__11ShopItems_cFv */
void ShopItems_c::showItem() {
    for (int i = 0; i < mNumItems; i++) {
        daShopItem_c* item = (daShopItem_c*)fopAcM_SearchByID(mItemActorProcessIds[i]);
        if (item && mItemIsSoldOut[i] != true) {
            item->show();
            item->current.pos = item->home.pos;
            item->getRotateP()->y = item->home.angle.y;
        }
    }
    mbIsHide = 0;
}

/* 80060058-80060078       .text getSelectItemNo__11ShopItems_cFv */
u8 ShopItems_c::getSelectItemNo() {
    return mpItemSetList[mSelectedItemIdx]->mpItemData->mItemNo;
}

/* 80060078-80060090       .text getSelectItemShowMsg__11ShopItems_cFv */
u32 ShopItems_c::getSelectItemShowMsg() {
    return mpItemSetList[mSelectedItemIdx]->mShowMsgNo;
}

/* 80060090-800600A8       .text getSelectItemBuyMsg__11ShopItems_cFv */
u32 ShopItems_c::getSelectItemBuyMsg() {
    return mpItemSetList[mSelectedItemIdx]->mBuyMsgNo;
}

/* 800600A8-80060138       .text dShop_get_next_select__FiP11ShopItems_c */
s16 dShop_get_next_select(int param_1, ShopItems_c* shopItems) {
    s16 dataIdx = shopItems->getItemDataIdx();
    s16 selectedItemIdx = shopItems->mSelectedItemIdx;
    while (true) {
        ShopItems_c__select_list_data* selectData = &select_list_data_tbl[dataIdx][selectedItemIdx+1];
        if (param_1 == 0) { // Left trigger
            selectedItemIdx = selectData->mLeftIdx;
        } else if (param_1 == 1) { // Right trigger
            selectedItemIdx = selectData->mRightIdx;
        }
        if (param_1 == 2) { // Up trigger
            selectedItemIdx = selectData->mUpIdx;
        } else if (param_1 == 3) { // Down trigger
            selectedItemIdx = selectData->mDownIdx;
        }
        if (selectedItemIdx == shopItems->mSelectedItemIdx) {
            break;
        }
        if (shopItems->mItemActorProcessIds[selectedItemIdx] != fpcM_ERROR_PROCESS_ID_e) {
            break;
        }
    }
    return selectedItemIdx;
}

/* 80060138-80060154       .text setItemSetDataList__11ShopItems_cFv */
void ShopItems_c::setItemSetDataList() {
    mpItemSetList = Item_set_data_tbl[mItemSetListGlobalIdx];
}

/* 80060154-8006015C       .text setItemSetDataList__11ShopItems_cFPP21__shop_items_set_data */
void ShopItems_c::setItemSetDataList(__shop_items_set_data** pSetList) {
    mpItemSetList = pSetList;
}

/* 8006015C-8006019C       .text isSoldOutItemAll__11ShopItems_cFv */
BOOL ShopItems_c::isSoldOutItemAll() {
    for (s16 i = 0; i < mNumItems; i++) {
        if (!isSoldOutItem(i)) {
            return FALSE;
        }
    }
    return TRUE;
}

/* 8006019C-8006036C       .text dShop_now_triggercheck__FP9msg_classP9STControlP11ShopItems_cPUlPFPv_UlPv */
BOOL dShop_now_triggercheck(msg_class* msg, STControl* stickControl, ShopItems_c* shopItems, u32* pMsgNo, dShop_DefaultMsgCallback defaultMsgCb, void* defaultMsgArg) {
    int itemDataIdx;
    int selectedItemIdx;
    __shop_items_set_data** itemSetList;
    
    selectedItemIdx = shopItems->mSelectedItemIdx;
    itemSetList = shopItems->mpItemSetList;
    itemDataIdx = shopItems->getItemDataIdx();
    
    s16 nextIdx;
    BOOL idxChanged = FALSE;
    
    stickControl->checkTrigger();
    s16 nextIdxLeft = dShop_get_next_select(0, shopItems);
    s16 nextIdxRight = dShop_get_next_select(1, shopItems);
    s16 nextIdxUp = dShop_get_next_select(2, shopItems);
    s16 nextIdxDown = dShop_get_next_select(3, shopItems);
    
    if (selectedItemIdx != nextIdxLeft && stickControl->checkLeftTrigger()) {
        nextIdx = nextIdxLeft;
        idxChanged = TRUE;
    } else if (selectedItemIdx != nextIdxRight && stickControl->checkRightTrigger()) {
        nextIdx = nextIdxRight;
        idxChanged = TRUE;
    }
    if (selectedItemIdx != nextIdxUp && stickControl->checkUpTrigger()) {
        nextIdx = nextIdxUp;
        idxChanged = TRUE;
    } else if (selectedItemIdx != nextIdxDown && stickControl->checkDownTrigger()) {
        nextIdx = nextIdxDown;
        idxChanged = TRUE;
    }
    
    if (idxChanged) {
        if (nextIdx < 0) {
            if (defaultMsgCb == NULL) {
                *pMsgNo = default_select_msg[itemDataIdx];
            } else {
                *pMsgNo = defaultMsgCb(defaultMsgArg);
            }
        } else {
            if (shopItems->isSoldOutItem(nextIdx)) {
                *pMsgNo = itemSetList[nextIdx]->m0C;
            } else {
                *pMsgNo = itemSetList[nextIdx]->mShowMsgNo;
            }
        }
        
        msg->mStatus = fopMsgStts_MSG_CONTINUES_e;
        fopMsgM_messageSet(*pMsgNo);
        fopMsgM_messageSendOn();
        shopItems->mSelectedItemIdx = nextIdx;
    }
    
    return idxChanged;
}

/* 8006036C-8006044C       .text dShop_maxCheck__Fii */
BOOL dShop_maxCheck(int itemNo, int) {
    if (itemNo == dItemNo_BIRD_BAIT_5_e || itemNo == dItemNo_HYOI_PEAR_e) {
        if (!dComIfGs_checkBaitItemEmpty()) {
            return TRUE;
        }
    // Bug: This check is probably supposed to be (itemNo >= dItemNo_TOWN_FLOWER_e && itemNo <= dItemNo_SHOP_GURU_STATUE_e)
    } else if (itemNo == dItemNo_TOWN_FLOWER_e && itemNo == dItemNo_SHOP_GURU_STATUE_e) {
        if (dComIfGs_checkReserveItemEmpty() == 0) {
            return TRUE;
        }
    } else if (itemNo >= dItemNo_ARROW_10_e && itemNo <= dItemNo_ARROW_30_e) {
        if (dComIfGs_getArrowNum() == dComIfGs_getArrowMax()) {
            return TRUE;
        }
    } else if (itemNo >= dItemNo_BOMB_5_e && itemNo <= dItemNo_BOMB_30_e) {
        if (dComIfGs_getBombNum() == dComIfGs_getBombMax()) {
            return TRUE;
        }
    }
    return FALSE;
}

/* 8006044C-800606A8       .text dShop_BoughtErrorStatus__FP11ShopItems_cii */
u8 dShop_BoughtErrorStatus(ShopItems_c* shopItems, int param_2, int param_3) {
    s16 selectedItemIdx = shopItems->mSelectedItemIdx;
    ShopItems_c__ItemData* itemData = shopItems->mpItemSetList[selectedItemIdx]->mpItemData;
    u8 buyCond = itemData->mBuyConditions;
    u32 itemNo = itemData->mItemNo;
    u8 errorStatus = 0x00;
    
    if (buyCond & Shop_BuyCond_MUST_OWN_ITEM_e) {
        if (itemData->mMustOwnItemNo == dItemNo_BOW_e) {
            if (dComIfGs_getItem(dInvSlot_BOW_e) == dItemNo_NONE_e) {
                errorStatus |= Shop_BuyCond_MUST_OWN_ITEM_e;
            }
        } else {
            if (!dComIfGs_checkGetItem(itemData->mMustOwnItemNo)) {
                errorStatus |= Shop_BuyCond_MUST_OWN_ITEM_e;
            }
        }
    }
    
    if (buyCond & Shop_BuyCond_MUST_NOT_OWN_ITEM_e) {
        if (dComIfGs_checkGetItem(itemData->mMustNotOwnItemNo)) {
            errorStatus |= Shop_BuyCond_MUST_NOT_OWN_ITEM_e;
        }
    }
    
    if (buyCond & Shop_BuyCond_ANY_BOTTLE_e) {
        if (!dComIfGs_checkGetBottle()) {
            errorStatus |= Shop_BuyCond_ANY_BOTTLE_e;
        }
    }
    
    if (buyCond & Shop_BuyCond_EMPTY_BOTTLE_e) {
        if (!dComIfGs_checkEmptyBottle()) {
            errorStatus |= Shop_BuyCond_EMPTY_BOTTLE_e;
        }
    }
    
    if (buyCond & Shop_BuyCond_MAXIMUM_e) {
        if (dShop_maxCheck(itemNo, 0)) {
            errorStatus |= Shop_BuyCond_MAXIMUM_e;
        }
    }
    
    if (buyCond & Shop_BuyCond_RUPEES_e) {
        if (param_3 == -1) {
            param_3 = 0;
        }
        if (dComIfGs_getRupee() < param_3) {
            errorStatus |= Shop_BuyCond_RUPEES_e;
        } else if (param_2 == 1 && errorStatus == 0) {
            dComIfGp_setItemRupeeCount(-param_3);
        }
    }
    
    if (param_2 == 1 && errorStatus == 0) {
        execItemGet(itemNo);
    }
    
    return errorStatus;
}

/* 800606A8-80060830       .text __ct__12ShopCursor_cFP12J3DModelDataP15J3DAnmTevRegKeyf */
ShopCursor_c::ShopCursor_c(J3DModelData* modelData, J3DAnmTevRegKey* brkData, f32 param_2) {
    static J3DZModeInfo ZModeInfo = {GX_TRUE, GX_ALWAYS, GX_TRUE};
    for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
        J3DMaterial* mat = modelData->getMaterialNodePointer(i);
        mat->getZMode()->setZModeInfo(ZModeInfo);
    }
    
    for (int i = 0; i < (int)ARRAY_SIZE(mpModels); i++) {
        mpModels[i] = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
    }
    
    mpBrkData = brkData;
    if (!mBrkAnm.init(modelData, mpBrkData, true, J3DFrameCtrl::EMode_LOOP)) {
        mpBrkData = NULL;
    }
    
    m38 = 30.0f;
    m3C = 25.0f;
    m40 = m38;
    m44 = 15;
    m48 = param_2;
#if VERSION > VERSION_DEMO
    m4C = 1.0f;
    m50 = 1.0f;
#endif
    m54 = 0;
}

/* 800608D4-80060960       .text anm_play__12ShopCursor_cFv */
void ShopCursor_c::anm_play() {
    mBrkAnm.play();
    if (m44-- <= 0) {
        m44 = 15 + (s16)cM_rndF(5.0f);
        if (m40 > (m38 + m3C) * 0.5f) {
            m40 = m3C;
        } else {
            m40 = m38;
        }
    }
}

/* 80060960-80060B2C       .text draw__12ShopCursor_cFv */
void ShopCursor_c::draw() {
    camera_class* camera = dComIfGp_getCamera(0);
    s16 angleY = cLib_targetAngleY(fopCamM_GetCenter_p(camera), fopCamM_GetEye_p(camera));
    s16 angleX = -cLib_targetAngleX(fopCamM_GetCenter_p(camera), fopCamM_GetEye_p(camera));
    
    if (m54 == 0) {
        return;
    }
    
    f32 temp2;
    if (m40 > (m38 + m3C) * 0.5f) {
        temp2 = m4C;
    } else {
        temp2 = m50;
    }
    
    dComIfGd_setListMaskOff();
    
    static s16 angle_z[ARRAY_SIZE(mpModels)] = {
        0xE000, 0x2000, 0x6000, 0xA000,
    };
    const f32 sqrt_2 = 1.4142f; // Approximately sqrt(2)
    for (int i = 0; i < (int)ARRAY_SIZE(mpModels); i++) {
        mDoMtx_stack_c::transS(mPos);
        mDoMtx_stack_c::XYZrotM(angleX, angleY, 0);
        mDoMtx_stack_c::ZrotM(angle_z[i]);
        mDoMtx_stack_c::transM(0.0f, sqrt_2 * m40, 0.0f);
        mDoMtx_stack_c::scaleM(m48, m48 * temp2, m48);
        mpModels[i]->setBaseTRMtx(mDoMtx_stack_c::get());
    }
    
    mBrkAnm.entry(mpModels[0]->getModelData());
    mDoExt_modelUpdateDL(mpModels[0]);
    mDoExt_modelUpdateDL(mpModels[1]);
    mDoExt_modelUpdateDL(mpModels[2]);
    mDoExt_modelUpdateDL(mpModels[3]);
    
    dComIfGd_setList();
}

/* 80060B2C-80060B48       .text setPos__12ShopCursor_cFR4cXyz */
void ShopCursor_c::setPos(cXyz& pos) {
    mPos = pos;
}

/* 80060B48-80060BE8       .text ShopCursor_create__FP12J3DModelDataP15J3DAnmTevRegKeyf */
ShopCursor_c* ShopCursor_create(J3DModelData* modelData, J3DAnmTevRegKey* brkData, f32 param_2) {
    ShopCursor_c* cursor = new ShopCursor_c(modelData, brkData, param_2);
    
    // Bug: If any of the models are null these checks will crash instead of returning NULL.
    for (int i = 0; i < 4; i++) {
        if (cursor->getModel(i) == NULL) {
            cursor = NULL;
        }
    }
    if (cursor->getBrk() == NULL) {
        cursor = NULL;
    }
    
    return cursor;
}
