mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-22 22:24:16 -04:00
Implement & link m_shop.c
This commit is contained in:
@@ -212,6 +212,11 @@ m_room_type/mRmTp_FtrItemNo2FtrIdx.c:
|
||||
.text: [0x803E7878, 0x803E78BC]
|
||||
m_scene_ftr.c:
|
||||
.text: [0x803E7998, 0x803E7A7C]
|
||||
m_shop.c:
|
||||
.text: [0x803E7A7C, 0x803EC240]
|
||||
.rodata: [0x80643270, 0x806432D0]
|
||||
.data: [0x8065D690, 0x8065DBF8]
|
||||
.bss: [0x8129F308, 0x8129F320]
|
||||
m_start_data_init.c:
|
||||
.text: [0x803EDEC0, 0x803EED30]
|
||||
.rodata: [0x806432E0, 0x806432F0]
|
||||
|
||||
@@ -181,6 +181,7 @@ extern void mCoBG_InitBoatCollision();
|
||||
extern int mCoBG_CheckAttribute_BallRolling(s16* angles, const xyz_t* wpos);
|
||||
extern f32 mCoBG_CheckBallRollingArea(s16 angle, const xyz_t* wpos);
|
||||
extern int mCoBG_ExistHeightGap_KeepAndNow_Detail(xyz_t wpos);
|
||||
extern int mCoBG_GetHoleNumber(xyz_t wpos);
|
||||
|
||||
extern void mCoBG_InitMoveBgData();
|
||||
extern void mCoBG_InitBlockBgCheckMode();
|
||||
|
||||
@@ -280,7 +280,7 @@ typedef struct common_data_s {
|
||||
/* 0x028894 */ s16 balloon_state; /* balloon's current state */
|
||||
/* 0x028896 */ s16 balloon_last_spawn_min; /* last minute the balloon was spawned */
|
||||
/* 0x028898 */ f32 balloon_spawn_percent; /* chance that a balloon will spawn */
|
||||
/* 0x02889C */ int nook_shop_state; /* adjusted based on any current events happening to Nook's shop */
|
||||
/* 0x02889C */ int tanuki_shop_status; /* adjusted based on any current events happening to Nook's shop */
|
||||
/* 0x0288A0 */ u8 pad_connected; /* is gamepad 0 connected? */
|
||||
/* 0x0288A1 */ u8 _288a1[0x02DB40 - 0x0288A1];
|
||||
/* 0x02DB40 */ u8 auto_nwrite_set; /* when true, saved nwrite time will be utilized. Seems to be used to keep same date for fishing tourney stuff. */
|
||||
|
||||
@@ -20,6 +20,9 @@ extern "C" {
|
||||
#define mEv_SCHEDULE_MULTIDAY 0x40 /* event scheduled over more than a single day */
|
||||
#define mEv_SCHEDULE_TODAY 0x80 /* event will be active on the day loaded */
|
||||
|
||||
#define mEv_TO_DAY(month_day) ((lbRTC_day_t)(month_day))
|
||||
#define mEv_TO_MONTH(month_day) ((lbRTC_month_t)((month_day) >> 8))
|
||||
|
||||
typedef union event_monthday_s {
|
||||
struct {
|
||||
s8 month;
|
||||
@@ -499,6 +502,8 @@ extern mEv_place_data_c* mEv_get_common_place(int type, s8 id);
|
||||
extern void mEv_set_status(int event, s16 status);
|
||||
extern void mEv_GetEventWeather(s16* weather, s16* intensity);
|
||||
extern int mEv_CheckRealArbeit();
|
||||
extern int mEv_CheckEvent(u32 event);
|
||||
extern u16 mEv_get_bargain_day();
|
||||
|
||||
extern int mEv_weekday2day(lbRTC_month_t month, int week_type, lbRTC_weekday_t weekday);
|
||||
extern void mEv_ClearEventInfo();
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef M_ITEM_DEBUG_H
|
||||
#define M_ITEM_DEBUG_H
|
||||
|
||||
#include "types.h"
|
||||
#include "libu64/gfxprint.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
mItemDebug_CATEGORY_NONE,
|
||||
mItemDebug_CATEGORY_FTR,
|
||||
mItemDebug_CATEGORY_PPR,
|
||||
mItemDebug_CATEGORY_MNY,
|
||||
mItemDebug_CATEGORY_TOL,
|
||||
mItemDebug_CATEGORY_FSH,
|
||||
mItemDebug_CATEGORY_CLT,
|
||||
mItemDebug_CATEGORY_ELS,
|
||||
mItemDebug_CATEGORY_CPT,
|
||||
mItemDebug_CATEGORY_WLL,
|
||||
mItemDebug_CATEGORY_FOD,
|
||||
mItemDebug_CATEGORY_PLT,
|
||||
mItemDebug_CATEGORY_MSC,
|
||||
mItemDebug_CATEGORY_DST,
|
||||
mItemDebug_CATEGORY_LOT,
|
||||
mItemDebug_CATEGORY_IST,
|
||||
mItemDebug_CATEGORY_HPY,
|
||||
mItemDebug_CATEGORY_KAB,
|
||||
|
||||
mItemDebug_CATEGORY_NUM
|
||||
};
|
||||
|
||||
extern void mItemDebug_ItemDebugMain();
|
||||
extern void mItemDebug_ItemDebugDraw(gfxprint_t* gfxprint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+86
-18
@@ -168,6 +168,13 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define HUKUBUKURO_NUM 2
|
||||
#define KABU_NUM 4
|
||||
|
||||
#define PAPER_UNIQUE_NUM 64
|
||||
#define PAINT_NUM 12
|
||||
#define FLOWER_NUM 9
|
||||
#define HANIWA_NUM 127
|
||||
#define NOT_SECRET_MD_NUM 52
|
||||
#define UMBRELLA_NUM 32
|
||||
|
||||
#define EMPTY_NO 0x0000
|
||||
#define TREE_STUMP001 (EMPTY_NO + 1)
|
||||
#define TREE_STUMP002 (EMPTY_NO + 2)
|
||||
@@ -449,7 +456,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define SIGNBOARD7_PLR3 (SIGNBOARD6_PLR3 + 1)
|
||||
|
||||
#define FTR0_START 0x1000
|
||||
|
||||
#define FTR_CLASSIC_WARDROBE 0x1004
|
||||
#define FTR_PAPA_BEAR 0x10E8
|
||||
#define FTR_PAPA_BEAR_EAST 0x10E9
|
||||
#define FTR_PAPA_BEAR_NORTH 0x10EA
|
||||
@@ -504,10 +511,37 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
|
||||
#define FTR_UMBRELLA31_WEST 0x1D87
|
||||
|
||||
#define FTR_FAMICOM_CLU_CLU_LAND 0x1DA8
|
||||
#define FTR_FAMICOM_BALLOON_FIGHT 0x1DAC
|
||||
#define FTR_FAMICOM_DONKEY_KONG 0x1DB0
|
||||
#define FTR_FAMICOM_DK_JR_MATCH 0x1DB4
|
||||
#define FTR_FAMICOM_PINBALL 0x1DB8
|
||||
#define FTR_FAMICOM_TENNIS 0x1DBC
|
||||
#define FTR_FAMICOM_GOLF 0x1DC0
|
||||
#define FTR_FAMICOM_PUNCHOUT 0x1DC4
|
||||
#define FTR_FAMICOM_BASEBALL 0x1DC8
|
||||
#define FTR_FAMICOM_CLU_CLU_LAND_DISK 0x1DCC
|
||||
#define FTR_FAMICOM_DONKEY_KONG_3 0x1DD0
|
||||
#define FTR_FAMICOM_DONKEY_KONG_JR 0x1DD4
|
||||
#define FTR_FAMICOM_SOCCER 0x1DD8
|
||||
#define FTR_FAMICOM_EXCITEBIKE 0x1DDC
|
||||
#define FTR_FAMICOM_WARIOS_WOODS 0x1DE0
|
||||
#define FTR_FAMICOM_ICE_CLIMBERS 0x1DE4
|
||||
#define FTR_FAMICOM_MARIO_BROS 0x1DE8
|
||||
#define FTR_FAMICOM_SUPER_MARIO_BROS 0x1DEC
|
||||
#define FTR_FAMICOM_LEGEND_OF_ZELDA 0x1DF0
|
||||
#define FTR_FAMICOM 0x1DF4
|
||||
|
||||
#define FTR_TAPEDECK 0x1E58
|
||||
|
||||
#define FTR_BIG_FESTIVE_TREE 0x1E88
|
||||
|
||||
#define FTR_FESTIVE_TREE 0x1EBC
|
||||
|
||||
#define FTR_DINO_TRICERA_SKULL 0x1EEC
|
||||
|
||||
#define FTR_DINO_TREX_SKULL 0x1EF8
|
||||
|
||||
#define FTR_DINO_TRILOBITE_WEST 0x1F4F
|
||||
|
||||
#define FTR_DINO_DISP_TRICERA 0x1F7C
|
||||
@@ -595,7 +629,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_PAPER_STACK_TWO_START 0x2040
|
||||
#define ITM_PAPER_STACK_THREE_START 0x2080
|
||||
#define ITM_PAPER_STACK_FOUR_START 0x20C0
|
||||
#define ITM_PAPER_END 0x20FF
|
||||
#define ITM_PAPER_END (ITM_PAPER_START + 256)
|
||||
|
||||
#define ITM_MONEY_START 0x2100
|
||||
#define ITM_MONEY_1000 ITM_MONEY_START // 0x2100
|
||||
@@ -993,15 +1027,17 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_FOSSIL (ITM_DUST2_OLD_TIRE + 1)
|
||||
#define ITM_PITFALL (ITM_FOSSIL + 1)
|
||||
#define ITM_FORTUNE_SLIP (ITM_PITFALL + 1)
|
||||
#define ITM_SHELL0 (ITM_FORTUNE_SLIP + 1)
|
||||
#define ITM_SHELL1 (ITM_SHELL0 + 1)
|
||||
#define ITM_SHELL2 (ITM_SHELL1 + 1)
|
||||
#define ITM_SHELL3 (ITM_SHELL2 + 1)
|
||||
#define ITM_SHELL4 (ITM_SHELL3 + 1)
|
||||
#define ITM_SHELL5 (ITM_SHELL4 + 1)
|
||||
#define ITM_SHELL6 (ITM_SHELL5 + 1)
|
||||
#define ITM_SHELL7 (ITM_SHELL6 + 1)
|
||||
#define ITM_PRESENT (ITM_SHELL7 + 1)
|
||||
#define ITM_SHELL_START (ITM_ETC_START + 20)
|
||||
#define ITM_SHELL0 (ITM_SHELL_START + 0)
|
||||
#define ITM_SHELL1 (ITM_SHELL_START + 1)
|
||||
#define ITM_SHELL2 (ITM_SHELL_START + 2)
|
||||
#define ITM_SHELL3 (ITM_SHELL_START + 3)
|
||||
#define ITM_SHELL4 (ITM_SHELL_START + 4)
|
||||
#define ITM_SHELL5 (ITM_SHELL_START + 5)
|
||||
#define ITM_SHELL6 (ITM_SHELL_START + 6)
|
||||
#define ITM_SHELL7 (ITM_SHELL_START + 7)
|
||||
#define ITM_SHELL_END (ITM_SHELL_START + 8)
|
||||
#define ITM_PRESENT (ITM_ETC_START + 28)
|
||||
#define ITM_TOWN_MAP (ITM_PRESENT + 1)
|
||||
#define ITM_SIGNBOARD (ITM_TOWN_MAP + 1)
|
||||
#define ITM_GOLDEN_NET_PRESENT (ITM_SIGNBOARD + 1)
|
||||
@@ -1025,8 +1061,12 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_ETC_END 0x2531
|
||||
|
||||
#define ITM_CARPET_START 0x2600
|
||||
#define ITM_CARPET00 (ITM_CARPET_START + 0)
|
||||
#define ITM_CARPET_END (ITM_CARPET_START + 71)
|
||||
|
||||
#define ITM_WALL_START 0x2700
|
||||
#define ITM_WALL00 (ITM_WALL_START + 0)
|
||||
#define ITM_WALL_END (ITM_WALL_START + 71)
|
||||
|
||||
#define ITM_FOOD_START 0x2800
|
||||
#define ITM_FOOD_APPLE (ITM_FOOD_START + 0)
|
||||
@@ -1055,9 +1095,23 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_MINIDISK_START 0x2A00
|
||||
|
||||
#define ITM_DIARY_START 0x2B00
|
||||
#define ITM_COLLEGERULE ITM_DIARY_START
|
||||
#define ITM_CALLIGRAPHY_PAD 0x2B0F
|
||||
#define ITM_DIARY_END 0x2B10
|
||||
#define ITM_DIARY00 (ITM_DIARY_START + 0)
|
||||
#define ITM_DIARY01 (ITM_DIARY_START + 1)
|
||||
#define ITM_DIARY02 (ITM_DIARY_START + 2)
|
||||
#define ITM_DIARY03 (ITM_DIARY_START + 3)
|
||||
#define ITM_DIARY04 (ITM_DIARY_START + 4)
|
||||
#define ITM_DIARY05 (ITM_DIARY_START + 5)
|
||||
#define ITM_DIARY06 (ITM_DIARY_START + 6)
|
||||
#define ITM_DIARY07 (ITM_DIARY_START + 7)
|
||||
#define ITM_DIARY08 (ITM_DIARY_START + 8)
|
||||
#define ITM_DIARY09 (ITM_DIARY_START + 9)
|
||||
#define ITM_DIARY10 (ITM_DIARY_START + 10)
|
||||
#define ITM_DIARY11 (ITM_DIARY_START + 11)
|
||||
#define ITM_DIARY12 (ITM_DIARY_START + 12)
|
||||
#define ITM_DIARY13 (ITM_DIARY_START + 13)
|
||||
#define ITM_DIARY14 (ITM_DIARY_START + 14)
|
||||
#define ITM_DIARY15 (ITM_DIARY_START + 15)
|
||||
#define ITM_DIARY_END (ITM_DIARY_START + 16)
|
||||
|
||||
#define ITM_TICKET_START 0x2C00
|
||||
|
||||
@@ -1109,10 +1163,17 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_SPIRIT4 (ITM_INSECT_START + 44)
|
||||
#define ITM_INSECT_END (ITM_INSECT_START + 45)
|
||||
|
||||
#define ITM_KABU_10 0x2F00
|
||||
#define ITM_KABU_50 0x2F01
|
||||
#define ITM_KABU_100 0x2F02
|
||||
#define ITM_KABU_SPOILED 0x2F03
|
||||
#define ITM_HUKUBUKURO_START 0x2E00
|
||||
#define ITM_HUKUBUKURO_BAG (ITM_HUKUBUKURO_START + 0)
|
||||
#define ITM_HUKUBUKURO_PRESENT (ITM_HUKUBUKURO_START + 1)
|
||||
#define ITM_HUKUBUKURO_END (ITM_HUKUBUKURO_START + 2)
|
||||
|
||||
#define ITM_KABU_START 0x2F00
|
||||
#define ITM_KABU_10 (ITM_KABU_START + 0)
|
||||
#define ITM_KABU_50 (ITM_KABU_START + 1)
|
||||
#define ITM_KABU_100 (ITM_KABU_START + 2)
|
||||
#define ITM_KABU_SPOILED (ITM_KABU_START + 3)
|
||||
#define ITM_KABU_END (ITM_KABU_START + 4)
|
||||
|
||||
#define FTR1_START 0x3000
|
||||
|
||||
@@ -1122,13 +1183,19 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define FTR_POLICE_MODEL 0x302C
|
||||
#define FTR_MUSEUM_MODEL 0x3030
|
||||
|
||||
#define FTR_LOCOMOTIVE_MODEL 0x30A0
|
||||
|
||||
#define FTR_TRAIN_CAR_MODEL 0x30F4
|
||||
#define FTR_ORANGEBOX 0x30F8
|
||||
|
||||
#define FTR_COLLEGERULE 0x30FC
|
||||
|
||||
#define FTR_CALLIGRAPHY_PAD_WEST 0x313B
|
||||
|
||||
#define FTR_FESTIVE_FLAG 0x327C
|
||||
|
||||
#define FTR_MAILBOX 0x3294
|
||||
#define FTR_FESTIVE_CANDLE 0x3298
|
||||
|
||||
#define FTR1_END 0x3000
|
||||
|
||||
@@ -1257,6 +1324,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define SNOWMAN7 (SNOWMAN6 + 1)
|
||||
#define SNOWMAN8 (SNOWMAN7 + 1)
|
||||
#define TRAIN_DOOR 0xA011
|
||||
#define ACTOR_PROP_VILLAGER_SIGNBOARD 0xA012
|
||||
|
||||
#define SP_NPC_START 0xD000
|
||||
#define SP_NPC_ARTIST (SP_NPC_START + 0) // D000
|
||||
|
||||
@@ -146,5 +146,6 @@ extern int mRmTp_Index2LightSwitchStatus(int index);
|
||||
extern int mRmTp_NowSceneLightSwitchON();
|
||||
extern int mRmTp_NowSceneLightSwitchOFF();
|
||||
extern void mRmTp_MakeFtrNoTable(mActor_name_t* dst, mActor_name_t* src);
|
||||
extern u8* mRmTp_CheckFtrBirthInfoTop();
|
||||
|
||||
#endif
|
||||
+124
-21
@@ -7,6 +7,7 @@
|
||||
#include "m_personal_id.h"
|
||||
#include "m_actor_type.h"
|
||||
#include "game.h"
|
||||
#include "m_item_debug.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -16,6 +17,17 @@ extern "C" {
|
||||
#define mSP_GOODS_COUNT 39
|
||||
#define mSP_LOTTERY_ITEM_COUNT 3
|
||||
|
||||
#define mSP_SIGNBOARD_PRICE 500
|
||||
#define mSP_FORIEGN_FRUIT_PRICE 2000
|
||||
|
||||
#define mSP_NET_SALES_SUM 3000 // minimum sales sum before net appears (Nook's Cranny only)
|
||||
#define mSP_ROD_SALES_SUM 8000 // minimum sales sum before rod appears (Nook's Cranny only)
|
||||
#define mSP_AXE_SALES_SUM 12000 // minimum sales sum before axe appears (Nook's Cranny only)
|
||||
|
||||
#define mSP_COMBINI_SUM 25000 // sales sum for upgrading to Nook 'n' Go
|
||||
#define mSP_SUPER_SUM 90000 // sales sum for upgrading to Nookway
|
||||
#define mSP_DSUPER_SUM 240000 // sales sum for upgrading to Nookington's
|
||||
|
||||
/* item list groups */
|
||||
enum {
|
||||
mSP_LIST_A, /* A priority list */
|
||||
@@ -41,13 +53,6 @@ enum {
|
||||
mSP_LIST_HARVEST,
|
||||
mSP_LIST_MARIO,
|
||||
mSP_LIST_TENT,
|
||||
mSP_LIST_DUMMY23,
|
||||
mSP_LIST_DUMMY24,
|
||||
mSP_LIST_DUMMY25,
|
||||
mSP_LIST_DUMMY26,
|
||||
mSP_LIST_DUMMY27,
|
||||
mSP_LIST_DUMMY28,
|
||||
mSP_LIST_DUMMY29,
|
||||
|
||||
mSP_LIST_NUM
|
||||
};
|
||||
@@ -89,8 +94,10 @@ enum {
|
||||
mSP_KIND_CLOTH,
|
||||
mSP_KIND_CARPET,
|
||||
mSP_KIND_WALLPAPER,
|
||||
mSP_KIND_DIARY,
|
||||
|
||||
mSP_KIND_MAX
|
||||
mSP_KIND_MAX = mSP_KIND_DIARY,
|
||||
mSP_KIND_EXTENDED_MAX /* includes diary */
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -101,6 +108,63 @@ enum {
|
||||
mSP_PRIORITY_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSP_CLOTH_SEASON_ANY,
|
||||
mSP_CLOTH_SEASON_SPRING,
|
||||
mSP_CLOTH_SEASON_SUMMER,
|
||||
mSP_CLOTH_SEASON_AUTUMN,
|
||||
mSP_CLOTH_SEASON_WINTER,
|
||||
|
||||
mSP_CLOTH_SEASON_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSP_GOODS_TYPE_PAPER,
|
||||
mSP_GOODS_TYPE_CLOTH,
|
||||
mSP_GOODS_TYPE_FTR,
|
||||
mSP_GOODS_TYPE_RARE_FTR,
|
||||
mSP_GOODS_TYPE_CARPET,
|
||||
mSP_GOODS_TYPE_WALL,
|
||||
mSP_GOODS_TYPE_6,
|
||||
mSP_GOODS_TYPE_7,
|
||||
mSP_GOODS_TYPE_SAPLING,
|
||||
mSP_GOODS_TYPE_TOOL,
|
||||
mSP_GOODS_TYPE_PLANT,
|
||||
|
||||
mSP_GOODS_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSP_SHOP_TYPE_ZAKKA,
|
||||
mSP_SHOP_TYPE_COMBINI,
|
||||
mSP_SHOP_TYPE_SUPER,
|
||||
mSP_SHOP_TYPE_DSUPER,
|
||||
|
||||
mSP_SHOP_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSP_SHOP_STATUS_PRE,
|
||||
mSP_SHOP_STATUS_END,
|
||||
mSP_SHOP_STATUS_OPEN,
|
||||
mSP_SHOP_STATUS_RENEW,
|
||||
mSP_SHOP_STATUS_PREEVENT,
|
||||
mSP_SHOP_STATUS_ENDEVENT,
|
||||
mSP_SHOP_STATUS_OPENEVENT,
|
||||
|
||||
mSP_SHOP_STATUS_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSP_TANUKI_SHOP_STATUS_NORMAL,
|
||||
mSP_TANUKI_SHOP_STATUS_EVENT,
|
||||
mSP_TANUKI_SHOP_STATUS_HALLOWEEN,
|
||||
mSP_TANUKI_SHOP_STATUS_FUKUBIKI,
|
||||
mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE,
|
||||
|
||||
mSP_TANUKI_SHOP_STATUS_NUM
|
||||
};
|
||||
|
||||
/* sizeof(mSP_goods_priority_list_c) == 1 */
|
||||
typedef struct shop_goods_priority_list_s {
|
||||
u8 a:2; /* list A rarity */
|
||||
@@ -131,20 +195,59 @@ typedef struct shop_s {
|
||||
/* 0x13C */ int visitor_flag; /* set when a foreign player enters Nook's shop, required for Nookington's */
|
||||
} Shop_c;
|
||||
|
||||
extern void mSP_PrintNowShopSalesSum(gfxprint_t* gfxprint);
|
||||
extern void mSP_SelectRandomItem_New(GAME* unused, mActor_name_t* item_tbl, int item_tbl_count, mActor_name_t* goods_exist_tbl, int goods_exist_tbl_count, int category, int list_type, int get_uncollected_item);
|
||||
extern void mSP_RandomUmbSelect(mActor_name_t* item_buf, int item_buf_count);
|
||||
extern int mSP_GetShopLevel();
|
||||
extern u32 mSP_ItemNo2ItemPrice(mActor_name_t item_no);
|
||||
extern int mSP_SearchItemCategoryPriority(mActor_name_t item_no, int category, int priority, GAME* unused); // not sure if it's actually a GAME*
|
||||
extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil);
|
||||
extern mActor_name_t mSP_RandomHaniwaSelect(mActor_name_t* item_buf, int num);
|
||||
extern mActor_name_t mSP_SelectFishginPresent(int player_no);
|
||||
extern mActor_name_t mSP_GetNowShopFgNum();
|
||||
extern mActor_name_t mSP_GetNowShopBgNum();
|
||||
extern mActor_name_t mSP_gc_famicom_table[];
|
||||
|
||||
extern void mItemDebug_ItemDebugMain();
|
||||
extern void mItemDebug_ItemDebugDraw(gfxprint_t* gfxprint);
|
||||
extern int mSP_CollectCheck(mActor_name_t item);
|
||||
extern void mSP_SelectRandomItem_New(GAME* game, mActor_name_t* goods_table, int goods_count, mActor_name_t* goods_exist_table, int goods_exist_count, int category, int list_type, int uncollected_only);
|
||||
extern int mSP_ShopSaleReport(mActor_name_t sold_item, mActor_name_t* goods_table, int goods_count, mActor_name_t rsv_item);
|
||||
extern u32 mSP_ItemNo2ItemPrice(mActor_name_t item_no);
|
||||
extern int mSP_SearchItemCategoryPriority(mActor_name_t item_no, int category, int list_type, GAME* game);
|
||||
extern int mSP_CountElementInGoodsList();
|
||||
extern int mSP_CheckExchangeDay2();
|
||||
extern int mSP_CheckExchangeMonth();
|
||||
extern void mSP_NewExchangeDay();
|
||||
extern void mSP_ShopItsumoChirashi(int house_no, int shop_level, mActor_name_t item, int type, int send_proc);
|
||||
extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods_list, int goods_count, GAME* game);
|
||||
extern void mSP_SetRenewalChiraswhi_AppoDay();
|
||||
extern void mSP_ExchangeLineUp_InGame(GAME* game);
|
||||
extern void mSP_PlusSales(u32 sum);
|
||||
extern int mSP_SetNewVisitor();
|
||||
extern u32 mSP_GetSalesSum();
|
||||
extern int mSP_GetShopLevel();
|
||||
extern int mSP_RenewShopLevel();
|
||||
extern int mSP_GetRealShopLevel();
|
||||
extern int mSP_GetGoodsPercent(int priority);
|
||||
extern void mSP_PrintNowShopSalesSum(gfxprint_t* gfxprint);
|
||||
extern void mSP_GetGoodsPriority(u8* abc_priorities, int category);
|
||||
extern void mSP_ExchangeLineUp_ZeldaMalloc();
|
||||
extern void mSP_LotteryLineUp_ZeldaMalloc();
|
||||
extern void mSP_ExchangeLineUp_GameAlloc(GAME* game);
|
||||
extern void mSP_LotteryLineUp_GameAlloc(GAME* game);
|
||||
extern void mSP_InitShopSaveData();
|
||||
extern void mSP_ShopGameStartCt(GAME* game);
|
||||
extern mActor_name_t mSP_GetNowShopBgNum();
|
||||
extern int mSP_WhatSpecialSale();
|
||||
extern mActor_name_t mSP_GetNowShopFgNum();
|
||||
extern lbRTC_hour_t mSP_GetShopOpenTime();
|
||||
extern lbRTC_hour_t mSP_GetShopCloseTime();
|
||||
extern lbRTC_hour_t mSP_GetShopCloseTime_Bgm();
|
||||
extern int mSP_InRenewal();
|
||||
extern int mSP_ShopOpen();
|
||||
extern void mSP_RandomHaniwaSelect(mActor_name_t* haniwa_list, int count);
|
||||
extern void mSP_RandomMDSelect(mActor_name_t* md_list, int count);
|
||||
extern void mSP_RandomUmbSelect(mActor_name_t* umb_list, int count);
|
||||
extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil);
|
||||
extern int mSP_Chk_HukubukuroSail();
|
||||
extern int mSP_CheckFukubikiDay();
|
||||
extern int mSP_SetGoods2ReservedPoint(mActor_name_t goods, mActor_name_t reserved_no);
|
||||
extern int mSP_CheckHallowinDay();
|
||||
extern void mSP_SetTanukiShopStatus();
|
||||
extern int mSP_money_check(u32 amount);
|
||||
extern void mSP_get_sell_price(u32 amount);
|
||||
extern mActor_name_t mSP_SelectFishginPresent(int player_no);
|
||||
extern void mSP_SelectRandomItemToAGB();
|
||||
extern const char* mSP_ShopStatus2String(int status);
|
||||
extern mActor_name_t mSP_GetRandomStationToyItemNo();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
|
||||
int fuusen_DEBUG_mode_flag;
|
||||
|
||||
extern void Balloon_init(GAME_PLAY*) {
|
||||
extern void Balloon_init(GAME_PLAY* play) {
|
||||
Common_Set(balloon_state, Balloon_STATE_DEAD);
|
||||
Common_Set(balloon_last_spawn_min, 0);
|
||||
Common_Set(balloon_spawn_percent, 0.05f);
|
||||
|
||||
+1
-1
@@ -252,7 +252,7 @@ extern void mHm_SetDefaultPlayerRoomData(int home_no) {
|
||||
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], l_mHm_player_room_default_data[home_no & 3].item);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_COLLEGERULE);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00);
|
||||
|
||||
for (i = 0; i < mHm_ROOM_NUM; i++) {
|
||||
Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, l_mHm_player_room_default_data[home_no & 3].floor_num);
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
#include "m_item_debug.h"
|
||||
|
||||
#include "libultra/libultra.h"
|
||||
#include "game.h"
|
||||
#include "m_room_type.h"
|
||||
#include "padmgr.h"
|
||||
#include "m_name_table.h"
|
||||
#include "m_private.h"
|
||||
#include "m_common_data.h"
|
||||
|
||||
typedef struct item_debug_s {
|
||||
int enabled;
|
||||
int category;
|
||||
int index;
|
||||
} ItemDebug_c;
|
||||
|
||||
static char* mItemDebug_category_name_table[mItemDebug_CATEGORY_NUM] = {
|
||||
"\xC5\xBC", // untranslated JP
|
||||
"FTR",
|
||||
"PPR",
|
||||
"MNY",
|
||||
"TOL",
|
||||
"FSH",
|
||||
"CLT",
|
||||
"ELS",
|
||||
"CPT",
|
||||
"WLL",
|
||||
"FOD",
|
||||
"PLT",
|
||||
"MSC",
|
||||
"DST",
|
||||
"LOT",
|
||||
"IST",
|
||||
"HPY",
|
||||
"KAB"
|
||||
};
|
||||
|
||||
static mActor_name_t mItemDebug_category_start_no_table[mItemDebug_CATEGORY_NUM] = {
|
||||
EMPTY_NO,
|
||||
FTR0_NO_START,
|
||||
ITM_PAPER_START,
|
||||
ITM_MONEY_START,
|
||||
ITM_TOOL_START,
|
||||
ITM_FISH_START,
|
||||
ITM_CLOTH_START,
|
||||
ITM_ETC_START,
|
||||
ITM_CARPET_START,
|
||||
ITM_WALL_START,
|
||||
ITM_FOOD_START,
|
||||
ITM_ENV_START,
|
||||
ITM_MINIDISK_START,
|
||||
ITM_DIARY_START,
|
||||
ITM_TICKET_START,
|
||||
ITM_INSECT_START,
|
||||
ITM_HUKUBUKURO_START,
|
||||
ITM_KABU_START
|
||||
};
|
||||
|
||||
static int mItemDebug_category_max_table[mItemDebug_CATEGORY_NUM] = {
|
||||
0,
|
||||
FTR_NUM,
|
||||
PAPER_NUM,
|
||||
MONEY_NUM,
|
||||
TOOL_NUM,
|
||||
FISH_NUM,
|
||||
CLOTH_NUM,
|
||||
ETC_NUM,
|
||||
CARPET_NUM,
|
||||
WALL_NUM,
|
||||
FRUIT_NUM,
|
||||
PLANT_NUM,
|
||||
MINIDISK_NUM,
|
||||
DIARY_NUM,
|
||||
TICKET_NUM,
|
||||
INSECT_NUM,
|
||||
HUKUBUKURO_NUM,
|
||||
KABU_NUM
|
||||
};
|
||||
|
||||
/* @unused ? mItemDebug_ItemDebugCt(...) */
|
||||
|
||||
static int mItemDebug_FurnitureCanUse(int ftr_idx) {
|
||||
if (ftr_idx >= 0 && ftr_idx < FTR_NUM) {
|
||||
u8* birth_info_p = mRmTp_CheckFtrBirthInfoTop();
|
||||
|
||||
if (birth_info_p[ftr_idx] == mRmTp_BIRTH_TYPE_UNOBTAINABLE || birth_info_p[ftr_idx] == mRmTp_BIRTH_TYPE_MY_ORIGINAL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static ItemDebug_c l_mItemDebug_work_data;
|
||||
|
||||
extern void mItemDebug_ItemDebugMain() {
|
||||
if ((gamePT->pads[PAD2].on.button & BUTTON_START) == BUTTON_START) {
|
||||
l_mItemDebug_work_data.enabled = (l_mItemDebug_work_data.enabled + 1) & 1;
|
||||
|
||||
if (l_mItemDebug_work_data.enabled != FALSE) {
|
||||
bzero(&l_mItemDebug_work_data, sizeof(ItemDebug_c));
|
||||
l_mItemDebug_work_data.enabled = TRUE;
|
||||
}
|
||||
else {
|
||||
bzero(&l_mItemDebug_work_data, sizeof(ItemDebug_c));
|
||||
}
|
||||
}
|
||||
|
||||
if (l_mItemDebug_work_data.enabled != FALSE) {
|
||||
int category;
|
||||
|
||||
if ((gamePT->pads[PAD2].on.button & BUTTON_DUP) == BUTTON_DUP) {
|
||||
l_mItemDebug_work_data.index = 0;
|
||||
l_mItemDebug_work_data.category++;
|
||||
|
||||
if (l_mItemDebug_work_data.category > mItemDebug_CATEGORY_KAB) {
|
||||
l_mItemDebug_work_data.category = 0;
|
||||
}
|
||||
}
|
||||
|
||||
category = l_mItemDebug_work_data.category;
|
||||
if (category != mItemDebug_CATEGORY_NONE) {
|
||||
if ((gamePT->pads[PAD2].on.button & BUTTON_DRIGHT) == BUTTON_DRIGHT) {
|
||||
/* Holding B increments by 10, holding A increments by 100 */
|
||||
if ((gamePT->pads[PAD2].now.button & BUTTON_B) == BUTTON_B) {
|
||||
l_mItemDebug_work_data.index += 10;
|
||||
}
|
||||
else if ((gamePT->pads[PAD2].now.button & BUTTON_A) == BUTTON_A) {
|
||||
l_mItemDebug_work_data.index += 100;
|
||||
}
|
||||
else {
|
||||
l_mItemDebug_work_data.index++;
|
||||
}
|
||||
|
||||
if (l_mItemDebug_work_data.index > mItemDebug_category_max_table[category] - 1) {
|
||||
l_mItemDebug_work_data.index = 0;
|
||||
}
|
||||
}
|
||||
else if ((gamePT->pads[PAD2].on.button & BUTTON_DLEFT) == BUTTON_DLEFT) {
|
||||
/* Holding B increments by 10, holding A increments by 100 */
|
||||
if ((gamePT->pads[PAD2].now.button & BUTTON_B) == BUTTON_B) {
|
||||
l_mItemDebug_work_data.index -= 10;
|
||||
}
|
||||
else if ((gamePT->pads[PAD2].now.button & BUTTON_A) == BUTTON_A) {
|
||||
l_mItemDebug_work_data.index -= 100;
|
||||
}
|
||||
else {
|
||||
l_mItemDebug_work_data.index--;
|
||||
}
|
||||
|
||||
if (l_mItemDebug_work_data.index < 0) {
|
||||
l_mItemDebug_work_data.index = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((gamePT->pads[PAD2].on.button & BUTTON_DDOWN) == BUTTON_DDOWN && category != mItemDebug_CATEGORY_NONE) {
|
||||
int slot_idx = mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), EMPTY_NO, mPr_ITEM_COND_NORMAL);
|
||||
mActor_name_t item;
|
||||
|
||||
if (category != mItemDebug_CATEGORY_FTR) {
|
||||
item = mItemDebug_category_start_no_table[category] + l_mItemDebug_work_data.index;
|
||||
}
|
||||
else {
|
||||
if (mItemDebug_FurnitureCanUse(l_mItemDebug_work_data.index)) {
|
||||
item = mRmTp_FtrIdx2FtrItemNo(l_mItemDebug_work_data.index, mRmTp_DIRECT_SOUTH);
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (slot_idx != -1) {
|
||||
mPr_SetPossessionItem(Common_Get(now_private), slot_idx, item, mPr_ITEM_COND_NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern void mItemDebug_ItemDebugDraw(gfxprint_t* gfxprint) {
|
||||
int category = l_mItemDebug_work_data.category;
|
||||
|
||||
if (l_mItemDebug_work_data.enabled != FALSE) {
|
||||
gfxprint_color(gfxprint, 225, 225, 255, 255);
|
||||
gfxprint_locate8x8(gfxprint, 3, 20);
|
||||
|
||||
if (category != mItemDebug_CATEGORY_NONE) {
|
||||
if (category == mItemDebug_CATEGORY_FTR) {
|
||||
if (mItemDebug_FurnitureCanUse(l_mItemDebug_work_data.index)) {
|
||||
gfxprint_printf(gfxprint, "%s:%d", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
||||
}
|
||||
else {
|
||||
gfxprint_printf(gfxprint, "%s:---(%d)", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
||||
}
|
||||
}
|
||||
else {
|
||||
gfxprint_printf(gfxprint, "%s:%d", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
||||
}
|
||||
}
|
||||
else {
|
||||
gfxprint_printf(gfxprint, "\xC5\xBC");
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -243,7 +243,7 @@ static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid
|
||||
mail->header.sender.type = mMl_NAME_TYPE_MUSEUM;
|
||||
|
||||
mail->present = present;
|
||||
mail->content.paper_type = (paper - ITM_PAPER_START) % 64;
|
||||
mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM;
|
||||
}
|
||||
|
||||
static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
|
||||
@@ -1087,7 +1087,7 @@ extern int mMpswd_check_present_user(mActor_name_t item) {
|
||||
}
|
||||
else if (
|
||||
(item >= ITM_RED_BALLOON && item <= ITM_BUNNY_O_BALLOON) ||
|
||||
(item >= ITM_COLLEGERULE && item <= ITM_CALLIGRAPHY_PAD) ||
|
||||
(item >= ITM_DIARY00 && item <= ITM_DIARY15) ||
|
||||
(item >= ITM_BLUEBELL_FAN && item <= ITM_LEAF_FAN) ||
|
||||
(item >= ITM_YELLOW_PINWHEEL && item <= ITM_FANCY_PINWHEEL) ||
|
||||
(item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_ROD) ||
|
||||
|
||||
+2761
File diff suppressed because it is too large
Load Diff
@@ -493,7 +493,7 @@ static void mWt_mybell_confirmation_move(GAME_PLAY* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((u32)i == 8 || mEv_CheckFirstJob() == TRUE || (i <= 4 && Common_Get(nook_shop_state) == 3)) { // TODO: shop state enum, this is likely raffle
|
||||
if ((u32)i == 8 || mEv_CheckFirstJob() == TRUE || (i <= 4 && Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI)) {
|
||||
if (S_mybell_conf.update_money == TRUE) {
|
||||
S_mybell_conf.all_money = get_all_money();
|
||||
mWt_set_coin_se(FALSE);
|
||||
|
||||
Reference in New Issue
Block a user