mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Implement and link m_cockroach, m_police_box
This commit is contained in:
@@ -8,8 +8,25 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mCkRh_MAX_NUM 10 /* maximum 'stored' in the house */
|
||||
#define mCkRh_INTERVAL_DAYS 6 /* number of days before roaches will spawn */
|
||||
|
||||
#define mCkRh_CAN_LOOK_GOKI_NUM 3 /* maximum that can spawn in the house at once */
|
||||
|
||||
extern void mCkRh_InitGokiSaveData_InitNewPlayer();
|
||||
extern void mCkRh_InitGokiSaveData_1Room(int home_no);
|
||||
extern void mCkRh_InitGokiSaveData_1Room_ByHomeData(mHm_hs_c* home);
|
||||
extern void mCkRh_InitGokiSaveData_IslandPlayerRoom();
|
||||
extern void mCkRh_InitGokiSaveData_AllRoom();
|
||||
extern void mCkRh_SetGoingOutCottageTime(int scene_id);
|
||||
extern void mCkRh_SavePlayTime(int player_no);
|
||||
extern void mCkRh_DecideNowGokiFamilyCount(int player_no);
|
||||
extern int mCkRh_PlussGokiN_NowRoom(int count, int scene_no);
|
||||
extern int mCkRh_MinusGokiN_NowRoom(int count, int scene_id);
|
||||
extern int mCkRh_NowSceneGokiFamilyCount();
|
||||
extern void mCkRh_InitCanLookGokiCount();
|
||||
extern int mCkRh_CalcCanLookGokiCount(int count);
|
||||
extern int mCkRh_GetCanLookGokiCount();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ typedef union save_u {
|
||||
u8 raw[0x26000]; /* Temp to force length */
|
||||
} Save;
|
||||
|
||||
/* sizeof(common_data_t) == 0x2DC00 */
|
||||
typedef struct common_data_s {
|
||||
/* 0x000000 */ Save save;
|
||||
/* 0x026000 */ u8 game_started;
|
||||
@@ -109,6 +110,9 @@ typedef struct common_data_s {
|
||||
/* 0x026144 */ u8 tmp0[0x23E8];
|
||||
/* 0x02852C */ s16 money_power;
|
||||
/* 0x02852E */ s16 goods_power;
|
||||
/* 0x028530 */ u8 tmp1[0x5680];
|
||||
/* 0x02DBB0 */ s16 can_look_goki_count;
|
||||
/* 0x02DBB2 */ u8 tmp2[0x4E];
|
||||
} common_data_t;
|
||||
|
||||
extern common_data_t common_data;
|
||||
|
||||
@@ -8,7 +8,96 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Event type definition
|
||||
* xxxyyyyy yyyyyyyy yyyyyyyy yyyyyyyy
|
||||
*
|
||||
* x: event type (e.g. special event, 'first job' (chores) event, holidays, ...) (0-7)
|
||||
* y: sub-type (specific event)
|
||||
**/
|
||||
|
||||
#define mEv_SUBTYPE_BITS 29
|
||||
#define mEv_TYPE_BITMASK (0b111 << mEv_SUBTYPE_BITS)
|
||||
#define mEv_SUBTYPE_BITMASK ((1 << mEv_SUBTYPE_BITS) - 1)
|
||||
|
||||
#define mEv_GET_TYPE(event) (((event) & mEv_TYPE_BITMASK) >> mEv_SUBTYPE_BITS)
|
||||
#define mEv_SET_TYPE(t) (((t) << mEv_SUBTYPE_BITS) & mEv_TYPE_BITMASK)
|
||||
|
||||
#define mEv_GET_SUBTYPE(event) ((event) & mEv_SUBTYPE_BITMASK)
|
||||
#define mEv_SET_SUBTYPE(s) ((s) & mEv_SUBTYPE_BITMASK)
|
||||
|
||||
#define mEv_SET(type, subtype) (mEv_SET_TYPE(type) | mEv_SET_TYPE(subtype))
|
||||
|
||||
enum event_type {
|
||||
mEv_SPNPC_EVENT, /* special NPC events */
|
||||
mEv_SAVED_EVENT, /* events saved to data */
|
||||
mEv_TYPE2_EVENT, /* unused? */
|
||||
mEv_TYPE3_EVENT, /* unused? */
|
||||
mEv_TYPE4_EVENT, /* unused? */
|
||||
mEv_DAILY_EVENT, /* checked daily always? aSL_ReportShopOpen2Event has event 3 */
|
||||
mEv_SPECL_EVENT, /* ??? secondary special npc event data? */
|
||||
|
||||
mEv_EVENT_NUM
|
||||
};
|
||||
|
||||
enum events {
|
||||
mEv_SPNPC_SHOP = (int)mEv_SET(mEv_SPNPC_EVENT, 0),
|
||||
mEv_SPNPC_DESIGNER,
|
||||
mEv_SPNPC_BROKER,
|
||||
mEv_SPNPC_ARTIST,
|
||||
mEv_SPNPC_ARABIAN,
|
||||
mEv_SPNPC_GYPSY,
|
||||
|
||||
mEv_SAVED_RENEWSHOP = (int)mEv_SET(mEv_SAVED_EVENT, 0), /* renew shop */
|
||||
mEv_SAVED_UNK1, /* unused */
|
||||
|
||||
/* intro through chores */
|
||||
mEv_SAVED_FIRSTJOB_PLR0,
|
||||
mEv_SAVED_FIRSTJOB_PLR1,
|
||||
mEv_SAVED_FIRSTJOB_PLR2,
|
||||
mEv_SAVED_FIRSTJOB_PLR3,
|
||||
|
||||
/* selecting house */
|
||||
mEv_SAVED_FIRSTINTRO_PLR0,
|
||||
mEv_SAVED_FIRSTINTRO_PLR1,
|
||||
mEv_SAVED_FIRSTINTRO_PLR2,
|
||||
mEv_SAVED_FIRSTINTRO_PLR3,
|
||||
|
||||
/* wait for next day to talk about HRA */
|
||||
mEv_SAVED_HRAWAIT_PLR0,
|
||||
mEv_SAVED_HRAWAIT_PLR1,
|
||||
mEv_SAVED_HRAWAIT_PLR2,
|
||||
mEv_SAVED_HRAWAIT_PLR3,
|
||||
|
||||
/* Nook will talk about HRA when entering the shop */
|
||||
mEv_SAVED_HRATALK_PLR0,
|
||||
mEv_SAVED_HRATALK_PLR1,
|
||||
mEv_SAVED_HRATALK_PLR2,
|
||||
mEv_SAVED_HRATALK_PLR3,
|
||||
|
||||
/* Do a 'favor' for a villager during chores */
|
||||
mEv_SAVED_FJOPENQUEST_PLR0,
|
||||
mEv_SAVED_FJOPENQUEST_PLR1,
|
||||
mEv_SAVED_FJOPENQUEST_PLR2,
|
||||
mEv_SAVED_FJOPENQUEST_PLR3,
|
||||
|
||||
/* Player going to another town, set at train station */
|
||||
mEv_SAVED_GATEWAY_PLR0,
|
||||
mEv_SAVED_GATEWAY_PLR1,
|
||||
mEv_SAVED_GATEWAY_PLR2,
|
||||
mEv_SAVED_GATEWAY_PLR3,
|
||||
mEv_SAVED_GATEWAY_FRGN, /* Foreigner */
|
||||
|
||||
mEv_DAILY_0 = (int)mEv_SET(mEv_DAILY_EVENT, 0), /* unused */
|
||||
mEv_DAILY_1, /* unused */
|
||||
mEv_DAILY_2, /* unused */
|
||||
mEv_DAILY_OPEN_SHOP, /* shop opened */
|
||||
|
||||
mEv_SPECL_DESIGNER_COMPLETE = (int)mEv_SET(mEv_SPECL_EVENT, 0)
|
||||
};
|
||||
|
||||
extern int mEv_CheckFirstJob();
|
||||
extern int mEv_CheckArbeit();
|
||||
|
||||
extern void mEv_debug_print4f(gfxprint_t* gfxprint);
|
||||
extern void mEv_sp_debug_print4f(gfxprint_t* gfxprint);
|
||||
|
||||
@@ -9,6 +9,37 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum field_type {
|
||||
mFI_FIELDTYPE_FG,
|
||||
mFI_FIELDTYPE_1,
|
||||
mFI_FIELDTYPE_2,
|
||||
mFI_FIELDTYPE_ROOM,
|
||||
mFI_FIELDTYPE_NPC_ROOM,
|
||||
mFI_FIELDTYPE_DEMO,
|
||||
mFI_FIELDTYPE_PLAYER_ROOM,
|
||||
|
||||
mFI_FIELDTYPE_NUM
|
||||
};
|
||||
|
||||
#define mFI_TO_FIELD_ID(type, index) ((type << 12) | index)
|
||||
#define mFI_GET_TYPE (field_id) (field_id & 0xF000)
|
||||
|
||||
enum field_room {
|
||||
/* TODO: others */
|
||||
|
||||
mFI_FIELD_PLAYER0_ROOM = mFI_TO_FIELD_ID(mFI_FIELDTYPE_PLAYER_ROOM, 0),
|
||||
mFI_FIELD_PLAYER1_ROOM,
|
||||
mFI_FIELD_PLAYER2_ROOM,
|
||||
mFI_FIELD_PLAYER3_ROOM,
|
||||
|
||||
/* TODO: others */
|
||||
};
|
||||
|
||||
#define mFI_GET_PLAYER_ROOM_NO(field_id) (((field_id)-mFI_FIELD_PLAYER0_ROOM) & 3)
|
||||
#define mFI_IS_PLAYER_ROOM(field_id) \
|
||||
((field_id) == mFI_FIELD_PLAYER0_ROOM || (field_id) == mFI_FIELD_PLAYER1_ROOM || \
|
||||
(field_id) == mFI_FIELD_PLAYER2_ROOM || (field_id) == mFI_FIELD_PLAYER3_ROOM)
|
||||
|
||||
/* Not sure about these other than the island one */
|
||||
enum {
|
||||
mFI_CLIMATE_0,
|
||||
@@ -20,7 +51,10 @@ enum {
|
||||
mFI_CLIMATE_NUM
|
||||
};
|
||||
|
||||
extern mActor_name_t mFI_GetFieldId();
|
||||
extern int mFI_GetClimate();
|
||||
extern mActor_name_t* mFI_BkNumtoUtFGTop(int block_x, int block_z);
|
||||
extern void mFI_ClearDeposit(int block_x, int block_z);
|
||||
|
||||
extern void mFI_PrintNowBGNum(gfxprint_t* gfxprint);
|
||||
extern void mFI_PrintFgAttr(gfxprint_t* gfxprint);
|
||||
|
||||
@@ -85,6 +85,7 @@ typedef struct home_wall_floor_s {
|
||||
typedef struct home_goki_s {
|
||||
/* 0x00 */ lbRTC_time_c time; /* last time updated */
|
||||
/* 0x08 */ u8 num; /* number of cockroaches in the house */
|
||||
/* 0x09 */ u8 pad; /* unused outside of being initalized to 0 */
|
||||
} mHm_goki_c;
|
||||
|
||||
/* sizeof(mHm_lyr_c) == 0x228 */
|
||||
|
||||
+23
-2
@@ -37,8 +37,10 @@ enum {
|
||||
#define ITEM_IS_FTR(n) \
|
||||
(ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR0 || ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR1)
|
||||
|
||||
#define GET_NAME_ITEM0_CATEGORY(f) (((f)&0x800) >> 11)
|
||||
#define GET_NAME_ITEM1_CATEGORY(f) (((f)&0xF00) >> 8)
|
||||
#define ITEM_IS_ITEM1(n) (ITEM_NAME_GET_TYPE(n) == NAME_TYPE_ITEM1)
|
||||
|
||||
#define GET_NAME_ITEM0_CATEGORY(f) (((f) & 0x0800) >> 11)
|
||||
#define GET_NAME_ITEM1_CATEGORY(f) (((f) & 0x0F00) >> 8)
|
||||
|
||||
#define EMPTY_NO 0x0000
|
||||
|
||||
@@ -47,6 +49,25 @@ enum {
|
||||
|
||||
#define FTR_TAPEDECK 0x1E58
|
||||
|
||||
#define ITM_TOOL_START 0x2200
|
||||
#define ITM_NET ITM_TOOL_START
|
||||
#define ITM_AXE 0x2201
|
||||
#define ITM_SHOVEL 0x2202
|
||||
#define ITM_ROD 0x2203
|
||||
|
||||
#define ITM_ENV_START 0x2900
|
||||
#define ITM_SAPLING ITM_ENV_START
|
||||
#define ITM_CEDAR_SAPLING 0x2901
|
||||
#define ITM_WHITE_PANSY_BAG 0x2902
|
||||
#define ITM_PURPLE_PANSY_BAG 0x2903
|
||||
#define ITM_YELLOW_PANSY_BAG 0x2904
|
||||
#define ITM_WHITE_COSMOS_BAG 0x2905
|
||||
#define ITM_PINK_COSMOS_BAG 0x2906
|
||||
#define ITM_BLUE_COSMOS_BAG 0x2907
|
||||
#define ITM_RED_TULIP_BAG 0x2908
|
||||
#define ITM_WHITE_TULIP_BAG 0x2909
|
||||
#define ITEM_YELLOW_TULIP_BAG 0x290A
|
||||
|
||||
#define ITM_COLLEGERULE 0x2B00
|
||||
|
||||
#define FTR_ORANGEBOX 0x30F8
|
||||
|
||||
+20
-1
@@ -3,18 +3,37 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "m_actor_type.h"
|
||||
#include "game.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mPB_POLICE_BOX_ITEM_STORAGE_COUNT 20
|
||||
#define mPB_POLICE_BOX_ITEM_STORAGE_COUNT 20 /* total storage space */
|
||||
#define mPB_MAX_GROW_SIZE 5 /* Maximum number of items to trigger generating random new items */
|
||||
|
||||
/* Possible new items to add to lost and found */
|
||||
enum police_box_category {
|
||||
mPB_CATEGORY_GOODS,
|
||||
mPB_CATEGORY_ITEM,
|
||||
mPB_CATEGORY_FLOWER,
|
||||
mPB_CATEGORY_UMBRELLA,
|
||||
|
||||
mPB_CATEGORY_NUM
|
||||
};
|
||||
|
||||
/* sizeof(PoliceBox_c) == 0x28 */
|
||||
typedef struct police_box_s {
|
||||
/* 0x00 */ mActor_name_t keep_items[mPB_POLICE_BOX_ITEM_STORAGE_COUNT];
|
||||
} PoliceBox_c;
|
||||
|
||||
extern void mPB_copy_itemBuf(mActor_name_t* item_buf);
|
||||
extern int mPB_get_keep_item_sum();
|
||||
extern void mPB_keep_item(mActor_name_t item_no);
|
||||
extern void mPB_keep_all_item_in_block(int blk_x, int blk_z);
|
||||
extern void mPB_force_set_keep_item();
|
||||
extern void mPB_police_box_init(GAME* game);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef M_SCENE_TABLE_H
|
||||
#define M_SCENE_TABLE_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
TODO: is this right? I assume so based on file names but
|
||||
there may be a better place for this
|
||||
*/
|
||||
|
||||
enum scene_table {
|
||||
/* TODO: finish */
|
||||
SCENE_ISLAND_COTTAGE = 0x2F,
|
||||
/* TODO: finish */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+77
-7
@@ -6,6 +6,7 @@
|
||||
#include "lb_rtc.h"
|
||||
#include "m_personal_id.h"
|
||||
#include "m_actor_type.h"
|
||||
#include "game.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -15,14 +16,81 @@ extern "C" {
|
||||
#define mSP_GOODS_COUNT 39
|
||||
#define mSP_LOTTERY_ITEM_COUNT 3
|
||||
|
||||
/* item list groups */
|
||||
enum {
|
||||
mSP_LIST_FURNITURE,
|
||||
mSP_LIST_PAPER,
|
||||
mSP_LIST_CLOTH,
|
||||
mSP_LIST_CARPET,
|
||||
mSP_LIST_WALLPAPER,
|
||||
mSP_LIST_A, /* A priority list */
|
||||
mSP_LIST_B, /* B priority list */
|
||||
mSP_LIST_C, /* C priority list */
|
||||
mSP_LIST_EVENT, /* event list */
|
||||
mSP_LIST_TRAIN, /* */
|
||||
mSP_LIST_LOTTERY, /* lottery list */
|
||||
mSP_LIST_HALLOWEEN, /* halloween theme list */
|
||||
mSP_LIST_PRESENT, /* */
|
||||
mSP_LIST_CHRISTMAS,
|
||||
mSP_LIST_SNOW,
|
||||
mSP_LIST_HALLOWEEN2,
|
||||
mSP_LIST_JONASON,
|
||||
mSP_LIST_POSTOFFICE,
|
||||
mSP_LIST_NINTENDO64,
|
||||
mSP_LIST_SPECIALPRESENT,
|
||||
mSP_LIST_ISLAND,
|
||||
mSP_LIST_HOMEPAGE,
|
||||
mSP_LIST_EVENTPRESENTCHUMON,
|
||||
mSP_LIST_KAMAKURA,
|
||||
mSP_LIST_ISLANDFAMICOM,
|
||||
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_MAX
|
||||
mSP_LIST_NUM
|
||||
};
|
||||
|
||||
/* item List types */
|
||||
enum {
|
||||
mSP_LISTTYPE_COMMON, /* common ABC priority list */
|
||||
mSP_LISTTYPE_UNCOMMON, /* uncommon ABC priority list */
|
||||
mSP_LISTTYPE_RARE, /* rare ABC priority list */
|
||||
mSP_LISTTYPE_EVENT, /* event list */
|
||||
mSP_LISTTYPE_TRAIN, /* */
|
||||
mSP_LISTTYPE_LOTTERY, /* lottery list */
|
||||
mSP_LISTTYPE_HALLOWEEN, /* halloween theme list */
|
||||
mSP_LISTTYPE_PRESENT, /* */
|
||||
mSP_LISTTYPE_ABC, /* ABC */
|
||||
mSP_LISTTYPE_CHRISTMAS,
|
||||
mSP_LISTTYPE_SNOW,
|
||||
mSP_LISTTYPE_HALLOWEEN2,
|
||||
mSP_LISTTYPE_JONASON,
|
||||
mSP_LISTTYPE_POSTOFFICE,
|
||||
mSP_LISTTYPE_NINTENDO64,
|
||||
mSP_LISTTYPE_SPECIALPRESENT,
|
||||
mSP_LISTTYPE_ISLAND,
|
||||
mSP_LISTTYPE_HOMEPAGE,
|
||||
mSP_LISTTYPE_EVENTPRESENTCHUMON,
|
||||
mSP_LISTTYPE_KAMAKURA,
|
||||
mSP_LISTTYPE_ISLANDFAMICOM,
|
||||
mSP_LISTTYPE_HARVEST,
|
||||
mSP_LISTTYPE_MARIO,
|
||||
mSP_LISTTYPE_TENT,
|
||||
|
||||
mSP_LISTTYPE_NUM
|
||||
};
|
||||
|
||||
/* item list kinds */
|
||||
enum {
|
||||
mSP_KIND_FURNITURE,
|
||||
mSP_KIND_PAPER,
|
||||
mSP_KIND_CLOTH,
|
||||
mSP_KIND_CARPET,
|
||||
mSP_KIND_WALLPAPER,
|
||||
|
||||
mSP_KIND_MAX
|
||||
};
|
||||
|
||||
/* sizeof(mSP_goods_priority_list_c) == 1 */
|
||||
@@ -35,7 +103,7 @@ typedef struct shop_goods_priority_list_s {
|
||||
|
||||
/* sizeof(Shop_c) == 0x140 */
|
||||
typedef struct shop_s {
|
||||
/* 0x000 */ mSP_goods_priority_list_c priority_lists[mSP_LIST_MAX]; /* ABC list rarity (known internally as priority) */
|
||||
/* 0x000 */ mSP_goods_priority_list_c priority_lists[mSP_KIND_MAX]; /* ABC list rarity (known internally as priority) */
|
||||
/* 0x006 */ PersonalID_c unused_ids[mSP_PERSONAL_ID_COUNT]; /* unused personal ids */
|
||||
/* 0x0CE */ mActor_name_t items[mSP_GOODS_COUNT]; /* standard shop items */
|
||||
/* 0x11C */ mActor_name_t rare_item; /* spotlight rare item taken from rare furniture ABC list */
|
||||
@@ -56,6 +124,8 @@ typedef struct shop_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 void mItemDebug_ItemDebugMain();
|
||||
extern void mItemDebug_ItemDebugDraw(gfxprint_t* gfxprint);
|
||||
|
||||
Reference in New Issue
Block a user