Merge pull request #127 from Cuyler36/m_shop

Implement & link m_shop.c
This commit is contained in:
Cuyler36
2023-10-21 01:46:20 -04:00
committed by GitHub
15 changed files with 3236 additions and 45 deletions
+5
View File
@@ -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]
+1
View File
@@ -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();
+1 -1
View File
@@ -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. */
+5
View File
@@ -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();
+41
View File
@@ -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
View File
@@ -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
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+206
View File
@@ -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
View File
@@ -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) {
+1 -1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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);