Implement & link ac_quest_talk_init.c

This commit is contained in:
Cuyler36
2024-02-18 17:07:29 -05:00
parent f706280480
commit d43b4c26aa
11 changed files with 2801 additions and 506 deletions
+4
View File
@@ -443,6 +443,10 @@ ac_quest_talk_greeting.c:
.rodata: [0x80644CA0, 0x80644CA8]
.data: [0x8068AE40, 0x8068B048]
.bss: [0x812FCA68, 0x812FCAA8]
ac_quest_talk_init.c:
.text: [0x80489A34, 0x8048D768]
.rodata: [0x80644CA8, 0x80644D10]
.data: [0x8068B048, 0x8068B310]
ac_rope.c:
.text: [0x804967A4, 0x80496AB8]
.rodata: [0x80644DB0, 0x80644DB8]
+14 -12
View File
@@ -75,7 +75,7 @@ enum {
aQMgr_MSG_KIND_FULL_ITEM, // pockets are full so can't give quests
aQMgr_MSG_KIND_AFTER_REWARD,
aQMgr_MSG_KIND_AFTER_REWARD_THANKS,
aQMgr_MSG_KIND_REWARD_FULL_ITEM, // pockets are full so can't give reward
aQMgr_MSG_KIND_REWARD_FULL_ITEM, // pockets are full so can't give reward
aQMgr_MSG_KIND_REWARD_FULL_ITEM2, // pockets are still full
aQMgr_MSG_KIND_NONE,
@@ -141,11 +141,11 @@ typedef struct quest_manager_order_s {
} aQMgr_order_c;
typedef struct quest_manager_set_data_s {
u32 to_type:3;
u32 day_limit:6;
u32 last_step:4;
u32 handover_item:1;
u32 src_item_type:3;
u32 to_type : 3;
u32 day_limit : 6;
u32 last_step : 4;
u32 handover_item : 1;
u32 src_item_type : 3;
mActor_name_t item;
u8 reward_percentages[aQMgr_QUEST_REWARD_NUM];
u32 max_pay;
@@ -153,8 +153,8 @@ typedef struct quest_manager_set_data_s {
} aQMgr_set_data_c;
typedef struct quest_manager_flower_work_data_s {
int exist_num;
int goal_num;
int exist_num;
int remain_num;
} aQMgr_flower_data_c;
@@ -175,7 +175,7 @@ typedef struct quest_manager_target_s {
aQMgr_set_data_c* set_data_p;
int free_data_idx;
mQst_base_c* free_data_p;
u8 errand_type;
s8 errand_type;
aQMgr_work_data_c work;
} aQMgr_target_c;
@@ -199,8 +199,8 @@ typedef struct quest_manager_normal_info_s {
Anmmem_c* memory;
Anmplmail_c* anmplmail;
u32 pay;
int player_num_items; // valid items to trade
int player_give_item_idx; // index to give item away
int player_num_items; // valid items to trade
int player_give_item_idx; // index to give item away
mActor_name_t player_items[4]; // items which the player has in their inventory which match 'player_num_items'
mActor_name_t selected_item;
} aQMgr_normal_info_c;
@@ -253,7 +253,7 @@ struct quest_manager_actor {
/* 0x958 */ mActor_name_t cloth;
/* 0x95A */ u8 talk_type;
/* 0x95B */ u8 talk_change_type;
/* 0x95C */ u8 errand_next[5];
/* 0x95C */ u8 errand_next[mPr_ERRAND_QUEST_NUM];
/* 0x962 */ Mail_c mail;
/* 0xA8C */ Anmmem_c* mail_memory;
/* 0xA90 */ u8 last_strings[7];
@@ -261,6 +261,9 @@ struct quest_manager_actor {
/* 0xA9C */ int _A9C;
};
#define aQMgr_GET_CLIENT(manager) ((NPC_ACTOR*)*manager->client)
#define aQMgr_GET_CLIENT_ANIMAL(manager) aQMgr_GET_CLIENT(manager)->npc_info.animal
extern ACTOR_PROFILE Quest_Manager_Profile;
#ifdef __cplusplus
@@ -268,4 +271,3 @@ extern ACTOR_PROFILE Quest_Manager_Profile;
#endif
#endif
+8
View File
@@ -8,6 +8,14 @@
extern "C" {
#endif
#define aQMgr_NEW_QUEST_SUCCESS 1
#define aQMgr_NEW_QUEST_NO_SPACE -1
#define aQMgr_NEW_QUEST_NO_FOREIGN_ID -2
#define aQMgr_NEW_QUEST_NO_REMOVE_ANIMAL_ID -3
#define aQMgr_NEW_QUEST_ERROR -4
#define aQMgr_FLOWER_GOAL_NUM 4
extern void aQMgr_actor_move_talk_init(QUEST_MANAGER_ACTOR* manager);
#ifdef __cplusplus
+265 -253
View File
@@ -41,279 +41,289 @@ extern "C" {
#define SCHEDULE_NUM ANIMAL_NUM_MAX + mISL_ISLANDER_NUM
typedef struct time_s {
u32 season;
u32 term_idx;
s16 bgitem_profile;
s16 bgitem_bank;
int now_sec;
lbRTC_time_c rtc_time;
s16 rad_min; /* clock hand radial position for mins */
s16 rad_hour; /* clock hand radial position for hours */
u8 time_signal;
u8 under_sec;
u8 disp;
u8 rtc_crashed;
int rtc_enabled;
int add_sec;
int add_idx;
u32 season;
u32 term_idx;
s16 bgitem_profile;
s16 bgitem_bank;
int now_sec;
lbRTC_time_c rtc_time;
s16 rad_min; /* clock hand radial position for mins */
s16 rad_hour; /* clock hand radial position for hours */
u8 time_signal;
u8 under_sec;
u8 disp;
u8 rtc_crashed;
int rtc_enabled;
int add_sec;
int add_idx;
} Time_c;
/* sizeof(PlusBridge_c) == 8 */
typedef struct bridge_s {
/* 0x00 */ u8 block_x;
/* 0x01 */ u8 block_z;
/* 0x02 */ struct {
u8 exists:1;
u8 pending:1;
u8 pad:6;
};
/* 0x04 */ lbRTC_ymd_c build_date;
/* 0x00 */ u8 block_x;
/* 0x01 */ u8 block_z;
/* 0x02 */ struct {
u8 exists : 1;
u8 pending : 1;
u8 pad : 6;
};
/* 0x04 */ lbRTC_ymd_c build_date;
} PlusBridge_c;
typedef struct lighthouse_s {
lbRTC_ymd_c renew_time;
u8 days_switched_on;
u8 players_quest_started;
u8 players_completed;
lbRTC_ymd_c renew_time;
u8 days_switched_on;
u8 players_quest_started;
u8 players_completed;
} LightHouse_c;
typedef struct Save_s {
/* 0x000000 */ mFRm_chk_t save_check; /* save information */
/* 0x000014 */ int scene_no; /* current 'scene' id */
/* 0x000018 */ u8 now_npc_max; /* current number of villagers living in town (see (Add/Sub)NowNpcMax) */
/* 0x000019 */ u8 remove_animal_idx; /* index of the villager which is scheduled to leave town, 0xFF when none selected */
/* 0x00001A */ u16 copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */
/* 0x00001C */ u8 pad_1C[4];
/* 0x000020 */ Private_c private[PLAYER_NUM]; /* player data */
/* 0x009120 */ mLd_land_info_c land_info; /* town name & id */
/* 0x00912C */ mNtc_board_post_c noticeboard[mNtc_BOARD_POST_COUNT]; /* noticeboard posts */
/* 0x009CE4 */ u8 pad_9CE4[4];
/* 0x009CE8 */ mHm_hs_c homes[PLAYER_NUM]; /* player house data */
/* 0x0137A8 */ mFM_fg_c fg[FG_BLOCK_Z_NUM][FG_BLOCK_X_NUM]; /* fg items (fg = foreground?) */
/* 0x0173A8 */ mFM_combination_c combi_table[BLOCK_Z_NUM][BLOCK_X_NUM]; /* acre 'combination' data */
/* 0x017438 */ Animal_c animals[ANIMAL_NUM_MAX]; /* villagers in town */
/* 0x020330 */ AnmPersonalID_c last_removed_animal_id; /* ID of last villager who left town */
/* 0x020340 */ Shop_c shop; /* Nook's shop */
/* 0x020480 */ Kabu_price_c kabu_price_schedule; /* Stalk Market info */
/* 0x020498 */ mEv_event_save_c event_save_data;
/* 0x020554 */ mEv_save_common_data_c event_save_common;
/* 0x020688 */ mActor_name_t fruit; /* town fruit type */
/* 0x02068A */ u8 house_arrangement; /* 2 bits for each player for the # of house they own */
/* 0x02068B */ u8 num_statues; /* number of statues built for players who have paid off their debts */
/* 0x02068C */ lbRTC_time_c all_grow_renew_time; /* renewal time for fg items handled by mAgrw_RenewalFgItem_ovl */
/* 0x020694 */ PostOffice_c post_office; /* post office data */
/* 0x020ED0 */ PoliceBox_c police_box; /* police station lost & found */
/* 0x020EF8 */ mSN_snowman_save_c snowmen; /* saved snowmen data */
/* 0x020F08 */ u64 melody; /* town tune, each nibble is a note (16 notes) */
/* 0x020F10 */ Config_c config; /* saved config for sound mode, voice mode, and vibration */
/* 0x020F14 */ lbRTC_ymd_c renew_time; /* next renew date */
/* 0x020F18 */ u8 station_type; /* train station type */
/* 0x020F19 */ u8 weather; /* upper nibble is intensity, lower nibble is type */
/* 0x020F1A */ u8 save_exist; /* unsure, set in mCD_SaveHome_bg_set_data (1) & mCD_SaveHome_bg (bss) */
/* 0x020F1B */ u8 npc_force_go_home; /* when set to 1, forces the 'm_go_home' code to activate */
/* 0x020F1C */ u16 deposit[FG_BLOCK_X_NUM * FG_BLOCK_Z_NUM][UT_Z_NUM]; /* flags for which items are buried around town */
/* 0x0212DC */ lbRTC_time_c last_grow_time; /* last time that a new villager moved into town */
/* 0x0212E4 */ mPr_mother_mail_info_c mother_mail[PLAYER_NUM]; /* info on when mom sent player letters and what event was sent */
/* 0x02131C */ mMsr_time_c mushroom_time; /* last time mushroom season info was updated */
/* 0x021322 */ lbRTC_ymd_c _021322;
/* 0x021326 */ u16 _021326[20];
/* 0x02134E */ u8 npc_used_tbl[32];
/* 0x02136E */ lbRTC_time_c _02136E;
/* 0x021376 */ u8 cheated_flag;
/* 0x021377 */ u8 _021377[7];
/* 0x02137E */ lbRTC_time_c treasure_buried_time; /* last time treasure was actually buried */
/* 0x021386 */ lbRTC_time_c treasure_checked_time; /* last time check to bury treasure was executed */
/* 0x02138E */ u8 saved_rom_debug; /* flag to set save to 'debug rom' mode */
/* 0x02138F */ u8 snowman_year; /* year last snowman was built */
/* 0x021390 */ u8 snowman_month; /* month last snowman was built */
/* 0x021391 */ u8 snowman_day; /* day last snowman was built */
/* 0x021392 */ u8 snowman_hour; /* hour last snowman was built */
/* 0x021393 */ u8 haniwa_scheduled; /* when set, gyroids will be spwaned */
/* 0x021394 */ u8 dust_flag; /* set by field assessment for too much 'dust' (garbage) around town, causes immediate fail of town ranking */
/* 0x021395 */ u8 clear_grass; /* set by Wisp, removes all weeds */
/* 0x021396 */ u8 _021396[2];
/* 0x021398 */ lbRTC_year_t event_year; /* might not exist and just be lbRTC_year_t */
/* 0x02139A */ u8 unused_2139C[6];
/* 0x0213A0 */ u8 keep_house_size[PLAYER_NUM]; /* saved flags for house sizes */
/* 0x0213A4 */ lbRTC_ymd_c force_remove_date; /* last time the NPC force remove timer was updated */
/* 0x0213A8 */ mMmd_info_c museum_display; /* museum display bits */
/* 0x0213E7 */ u8 _tmp6[0x213F0 - 0x213E7];
/* 0x0213F0 */ PlusBridge_c bridge; /* additional bridge info */
/* 0x021400 */ mNW_needlework_c needlework; /* Able Sisters' designs */
/* 0x022500 */ u8 _tmp7[0x22528 - 0x22500];
/* 0x022528 */ OSTime time_delta; /* time delta against GC RTC */
/* 0x022540 */ Island_c island; /* island data */
/* 0x023E40 */ mAGrw_AllGrow_c allgrow_ss_pos_info;
/* 0x023E68 */ mFR_record_c fishRecord[mFR_RECORD_NUM];
/* 0x023F20 */ MaskCat_c mask_cat;
/* 0x024160 */ Anmret_c return_animal; /* information about villager which moved back in to your town after moving to someone else's town */
/* 0x02416C */ LightHouse_c LightHouse; /* info for tracking the light house quest */
/* 0x024174 */ u8 insect_term; /* current insect term idx */
/* 0x024175 */ u8 insect_term_transition_offset; /* days offset from end of term to begin transition */
/* 0x024176 */ u8 gyoei_term; /* current fish term idx */
/* 0x024177 */ u8 gyoei_term_transition_offset; /* days offset from end of term to begin transition */
/* 0x024178 */ mFAs_GoodField_c good_field; /* field assessment last info */
/* 0x024184 */ u8 bg_tex_idx; /* Grass type */
/* 0x024185 */ lbRTC_month_t rainbow_month;
/* 0x024186 */ lbRTC_day_t rainbow_day;
/* 0x024187 */ u8 rainbow_reserved;
/* 0x024188 */ u8 _24188;
/* 0x024189 */ u8 _24189;
/* 0x02418A */ u8 town_day;
/* 0x02418B */ u8 _2418B[0x241A0 - 0x2418B];
/* 0x0241A0 */ lbRTC_time_c saved_auto_nwrite_time; /* save data notice time used for fishing tourney results? */
/* 0x0241A8 */ u8 _241A8[0x26000 - 0x241A8];
/* 0x000000 */ mFRm_chk_t save_check; /* save information */
/* 0x000014 */ int scene_no; /* current 'scene' id */
/* 0x000018 */ u8 now_npc_max; /* current number of villagers living in town (see (Add/Sub)NowNpcMax) */
/* 0x000019 */ u8
remove_animal_idx; /* index of the villager which is scheduled to leave town, 0xFF when none selected */
/* 0x00001A */ u16
copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */
/* 0x00001C */ u8 pad_1C[4];
/* 0x000020 */ Private_c private[PLAYER_NUM]; /* player data */
/* 0x009120 */ mLd_land_info_c land_info; /* town name & id */
/* 0x00912C */ mNtc_board_post_c noticeboard[mNtc_BOARD_POST_COUNT]; /* noticeboard posts */
/* 0x009CE4 */ u8 pad_9CE4[4];
/* 0x009CE8 */ mHm_hs_c homes[PLAYER_NUM]; /* player house data */
/* 0x0137A8 */ mFM_fg_c fg[FG_BLOCK_Z_NUM][FG_BLOCK_X_NUM]; /* fg items (fg = foreground?) */
/* 0x0173A8 */ mFM_combination_c combi_table[BLOCK_Z_NUM][BLOCK_X_NUM]; /* acre 'combination' data */
/* 0x017438 */ Animal_c animals[ANIMAL_NUM_MAX]; /* villagers in town */
/* 0x020330 */ AnmPersonalID_c last_removed_animal_id; /* ID of last villager who left town */
/* 0x020340 */ Shop_c shop; /* Nook's shop */
/* 0x020480 */ Kabu_price_c kabu_price_schedule; /* Stalk Market info */
/* 0x020498 */ mEv_event_save_c event_save_data;
/* 0x020554 */ mEv_save_common_data_c event_save_common;
/* 0x020688 */ mActor_name_t fruit; /* town fruit type */
/* 0x02068A */ u8 house_arrangement; /* 2 bits for each player for the # of house they own */
/* 0x02068B */ u8 num_statues; /* number of statues built for players who have paid off their debts */
/* 0x02068C */ lbRTC_time_c all_grow_renew_time; /* renewal time for fg items handled by mAgrw_RenewalFgItem_ovl */
/* 0x020694 */ PostOffice_c post_office; /* post office data */
/* 0x020ED0 */ PoliceBox_c police_box; /* police station lost & found */
/* 0x020EF8 */ mSN_snowman_save_c snowmen; /* saved snowmen data */
/* 0x020F08 */ u64 melody; /* town tune, each nibble is a note (16 notes) */
/* 0x020F10 */ Config_c config; /* saved config for sound mode, voice mode, and vibration */
/* 0x020F14 */ lbRTC_ymd_c renew_time; /* next renew date */
/* 0x020F18 */ u8 station_type; /* train station type */
/* 0x020F19 */ u8 weather; /* upper nibble is intensity, lower nibble is type */
/* 0x020F1A */ u8 save_exist; /* unsure, set in mCD_SaveHome_bg_set_data (1) & mCD_SaveHome_bg (bss) */
/* 0x020F1B */ u8 npc_force_go_home; /* when set to 1, forces the 'm_go_home' code to activate */
/* 0x020F1C */ u16 deposit[FG_BLOCK_X_NUM * FG_BLOCK_Z_NUM]
[UT_Z_NUM]; /* flags for which items are buried around town */
/* 0x0212DC */ lbRTC_time_c last_grow_time; /* last time that a new villager moved into town */
/* 0x0212E4 */ mPr_mother_mail_info_c
mother_mail[PLAYER_NUM]; /* info on when mom sent player letters and what event was sent */
/* 0x02131C */ mMsr_time_c mushroom_time; /* last time mushroom season info was updated */
/* 0x021322 */ lbRTC_ymd_c _021322;
/* 0x021326 */ u16 _021326[20];
/* 0x02134E */ u8 npc_used_tbl[32];
/* 0x02136E */ lbRTC_time_c _02136E;
/* 0x021376 */ u8 cheated_flag;
/* 0x021377 */ u8 _021377[7];
/* 0x02137E */ lbRTC_time_c treasure_buried_time; /* last time treasure was actually buried */
/* 0x021386 */ lbRTC_time_c treasure_checked_time; /* last time check to bury treasure was executed */
/* 0x02138E */ u8 saved_rom_debug; /* flag to set save to 'debug rom' mode */
/* 0x02138F */ u8 snowman_year; /* year last snowman was built */
/* 0x021390 */ u8 snowman_month; /* month last snowman was built */
/* 0x021391 */ u8 snowman_day; /* day last snowman was built */
/* 0x021392 */ u8 snowman_hour; /* hour last snowman was built */
/* 0x021393 */ u8 haniwa_scheduled; /* when set, gyroids will be spwaned */
/* 0x021394 */ u8 dust_flag; /* set by field assessment for too much 'dust' (garbage) around town, causes immediate
fail of town ranking */
/* 0x021395 */ u8 clear_grass; /* set by Wisp, removes all weeds */
/* 0x021396 */ u8 _021396[2];
/* 0x021398 */ lbRTC_year_t event_year; /* might not exist and just be lbRTC_year_t */
/* 0x02139A */ u8 unused_2139C[6];
/* 0x0213A0 */ u8 keep_house_size[PLAYER_NUM]; /* saved flags for house sizes */
/* 0x0213A4 */ lbRTC_ymd_c force_remove_date; /* last time the NPC force remove timer was updated */
/* 0x0213A8 */ mMmd_info_c museum_display; /* museum display bits */
/* 0x0213E7 */ u8 _tmp6[0x213F0 - 0x213E7];
/* 0x0213F0 */ PlusBridge_c bridge; /* additional bridge info */
/* 0x021400 */ mNW_needlework_c needlework; /* Able Sisters' designs */
/* 0x022500 */ u8 _tmp7[0x22528 - 0x22500];
/* 0x022528 */ OSTime time_delta; /* time delta against GC RTC */
/* 0x022540 */ Island_c island; /* island data */
/* 0x023E40 */ mAGrw_AllGrow_c allgrow_ss_pos_info;
/* 0x023E68 */ mFR_record_c fishRecord[mFR_RECORD_NUM];
/* 0x023F20 */ MaskCat_c mask_cat;
/* 0x024160 */ Anmret_c return_animal; /* information about villager which moved back in to your town after moving
to someone else's town */
/* 0x02416C */ LightHouse_c LightHouse; /* info for tracking the light house quest */
/* 0x024174 */ u8 insect_term; /* current insect term idx */
/* 0x024175 */ u8 insect_term_transition_offset; /* days offset from end of term to begin transition */
/* 0x024176 */ u8 gyoei_term; /* current fish term idx */
/* 0x024177 */ u8 gyoei_term_transition_offset; /* days offset from end of term to begin transition */
/* 0x024178 */ mFAs_GoodField_c good_field; /* field assessment last info */
/* 0x024184 */ u8 bg_tex_idx; /* Grass type */
/* 0x024185 */ lbRTC_month_t rainbow_month;
/* 0x024186 */ lbRTC_day_t rainbow_day;
/* 0x024187 */ u8 rainbow_reserved;
/* 0x024188 */ u8 _24188;
/* 0x024189 */ u8 _24189;
/* 0x02418A */ u8 town_day;
/* 0x02418B */ u8 _2418B[0x241A0 - 0x2418B];
/* 0x0241A0 */ lbRTC_time_c saved_auto_nwrite_time; /* save data notice time used for fishing tourney results? */
/* 0x0241A8 */ u8 _241A8[0x26000 - 0x241A8];
} Save_t;
typedef union save_u {
Save_t save;
//u8 raw[0x26000]; /* Temp to force length */
Save_t save;
// u8 raw[0x26000]; /* Temp to force length */
} Save;
typedef struct transition_s {
u8 _00; // only set in Global_kankyo_ct?
u8 fade_rate;
u8 wipe_rate;
u8 wipe_type;
u8 _00; // only set in Global_kankyo_ct?
u8 fade_rate;
u8 wipe_rate;
u8 wipe_type;
} Transition_c;
/* sizeof(common_data_t) == 0x2DC00 */
typedef struct common_data_s {
/* 0x000000 */ Save save;
/* 0x026000 */ u8 game_started;
/* 0x026001 */ u8 field_type;
/* 0x026002 */ u8 field_draw_type;
/* 0x026003 */ u8 player_no;
/* 0x026004 */ int last_scene_no;
/* 0x026008 */ int player_data_mode;
/* 0x02600C */ Clip_c clip;
/* 0x026110 */ Time_c time;
/* 0x02613C */ Private_c* now_private;
/* 0x026140 */ mHm_hs_c* now_home;
/* 0x026144 */ u8 map_flag;
/* 0x026145 */ u8 fish_location;
/* 0x026146 */ u8 npc_is_summercamper;
/* 0x026147 */ u8 player_select_animal_no;
/* 0x026148 */ u8 _26148[0x2614C - 0x26148];
/* 0x02614C */ Transition_c transition;
/* 0x026150 */ s16 bg_item_type;
/* 0x026152 */ s16 bg_item_profile;
/* 0x026154 */ u8 _26154[0x26164 - 0x26154];
/* 0x026164 */ mNpc_NpcList_c npclist[ANIMAL_NUM_MAX + 1];
/* 0x0264E4 */ mNpc_NpcList_c island_npclist[1]; // TODO: define for island npc count
/* 0x02651C */ mActor_name_t house_owner_name;
/* 0x02651E */ mActor_name_t last_field_id;
/* 0x026520 */ u8 in_initial_block; /* when TRUE, the player is in the acre which they exited a building. FALSE otherwise. */
/* 0x026521 */ u8 submenu_disabled; /* when set, submenus cannot be accessed from start button */
/* 0x026522 */ u8 sunlight_flag;
/* 0x026523 */ u8 train_flag;
/* 0x026522 */ u8 _26524[0x2666C - 0x26524];
/* 0x02666C */ s16 weather;
/* 0x02666E */ s16 weather_intensity;
/* 0x026670 */ lbRTC_time_c weather_time;
/* 0x026678 */ s_xyz wind;
/* 0x026680 */ f32 wind_speed;
/* 0x026684 */ mEv_event_common_u special_event_common;
/* 0x02669C */ mQst_not_saved_c quest;
/* 0x0266A4 */ int scene_from_title_demo; /* next scene to be loaded when title demo finishes */
/* 0x0266A8 */ mNPS_schedule_c npc_schedule[SCHEDULE_NUM];
/* 0x0267A8 */ mNpc_walk_c npc_walk;
/* 0x026838 */ mNpc_EventNpc_c event_npc[mNpc_EVENT_NPC_NUM];
/* 0x026878 */ mNpc_MaskNpc_c mask_npc[mNpc_MASK_NPC_NUM];
/* 0x028528 */ int snowman_msg_id;
/* 0x02852C */ s16 money_power;
/* 0x02852E */ s16 goods_power;
/* 0x028530 */ Door_data_c door_data; /* misc door data */
/* 0x028544 */ Door_data_c structure_exit_door_data; /* door data for when exiting a building */
/* 0x028558 */ mDemo_Request_c start_demo_request;
/* 0x028568 */ Door_data_c event_door_data;
/* 0x02857C */ Door_data_c famicom_emu_exit_door_data;
/* 0x028590 */ u8 remove_cut_tree_info_bitfield; /* resets the cut tree states for trees in a visible acre */
/* 0x028591 */ u8 floor_idx;
/* 0x028592 */ s16 demo_profiles[2]; /* demo_profiles[0] is for demo_clip, demo_profiles[1] is for demo_clip2 */
/* 0x028596 */ u16 copy_protect_code;
/* 0x028598 */ int event_keep_flags[4];
/* 0x0285A8 */ u8 _285A8[0x0285BE - 0x0285A8];
/* 0x0285BE */ s8 player_actor_exists;
/* 0x0285BF */ s8 payment_completed_type;
/* 0x0285C0 */ s8 player_decoy_flag;
/* 0x0285C1 */ u8 _285C1;
/* 0x0285C2 */ u8 make_npc2_actor;
/* 0x0285C4 */ s16 event_id;
/* 0x0285C6 */ u8 event_title_flags;
/* 0x0285C7 */ u8 event_title_fade_in_progress;
/* 0x0285C8 */ mEv_common_data_c event_common;
/* 0x0287F8 */ s8 current_famicom_rom;
/* 0x0287F9 */ s8 famicom_287F9;
/* 0x0287FA */ u8 _287FA[0x28838 - 0x0287FA];
/* 0x028838 */ s8 player_bee_swell_flag;
/* 0x028839 */ s8 player_bee_chase_flag;
/* 0x02883A */ u8 goki_shocked_flag;
/* 0x02883B */ u8 time_changed_flag;
/* 0x02883C */ u8 unable_to_wade_flag;
/* 0x02883D */ u8 _02883D;
/* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */
/* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */
/* 0x028840 */ u8 train_control_state; /* current train state */
/* 0x028841 */ u8 train_last_control_state; /* previous train state */
/* 0x028842 */ u8 train_signal;
/* 0x028843 */ u8 train_day;
/* 0x028844 */ u8 train_action;
/* 0x028845 */ u8 train_timer;
/* 0x028848 */ u32 train_start_timer;
/* 0x02884C */ f32 train_speed;
/* 0x028850 */ xyz_t train_position;
/* 0x02885C */ f32 unused_02885C;
/* 0x028860 */ f32 unused_028860;
/* 0x028864 */ u16 unused_028864;
/* 0x028866 */ u16 unused_028866;
/* 0x028868 */ u8 reset_flag;
/* 0x028869 */ u8 reset_type;
/* 0x02886A */ u8 force_mail_delivery_flag;
/* 0x02886B */ u8 post_girl_npc_type;
/* 0x02886C */ xyz_t ball_pos;
/* 0x028878 */ u8 ball_type;
/* 0x028879 */ u8 auto_nwrite_count;
/* 0x02887A */ lbRTC_year_t auto_nwrite_year;
/* 0x02887C */ u8 save_error_type; /* set to one of the mFRm_ERROR_* states when save is invalid */
/* 0x02887D */ u8 train_approaching_flag; /* set when the train is coming */
/* 0x02887E */ u8 buried_treasure_flag; /* when set, treasure cannot be buried */
/* 0x02887F */ u8 spnpc_first_talk_flags;
/* 0x028880 */ u8 needlework_first_talk_flags;
/* 0x028882 */ u16 event_notification_active;
/* 0x028884 */ lbRTC_time_c newly_set_time; /* time set by player in time adjust menu */
/* 0x02888C */ lbRTC_time_c old_time; /* time before being changed by the player */
/* 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 tanuki_shop_status; /* adjusted based on any current events happening to Nook's shop */
/* 0x0288A0 */ u8 pad_connected; /* is gamepad 0 connected? */
/* 0x0288A1 */ u8 unk288A1;
/* 0x0288A2 */ s16 current_sound_effect;
/* 0x0288A4 */ u8 _288a4[0x0288C0 - 0x0288A4];
/* 0x0288C0 */ Island_c transfer_island; /* used when transferring islands with the GBA */
/* 0x02A1C0 */ Island_agb_c agb_island; /* converted island data sent over to the GBA */
/* 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. */
/* 0x02DB42 */ u16 select_last_select_no;
/* 0x02DB44 */ u16 select_last_top_no;
/* 0x02DB46 */ mCD_persistent_data_c travel_persistent_data; /* used for checking if travelling back to town */
/* 0x02DBA2 */ s16 island_weather;
/* 0x02DBA4 */ s16 island_weather_intensity;
/* 0x02DBA6 */ s16 _2DBA6;
/* 0x02DBA8 */ u8 memcard_slot;
/* 0X02DBAC */ int famicom_2DBAC;
/* 0x02DBB0 */ s16 can_look_goki_count;
/* 0x02DBB4 */ f32 rainbow_opacity; /* current opacity of rainbow (0.0f - 1.0f) */
/* 0x02DBB8 */ u32 event_flags[mEv_EVENT_TYPE_NUM];
/* 0x02DBD4 */ xyz_t* pluss_bridge_pos; /* position of extra bridge */
/* 0x02DBD8 */ lbRTC_time_c auto_nwrite_time; /* cached notice time used for fishing tourney results? */
/* 0x02DBE0 */ u8 rhythym_updated;
/* 0x02DBE1 */ u8 _2dbe1;
/* 0x02DBE2 */ u8 hem_visible; /* controls farley's visiblilty during cutscene? */
/* 0x02DBE4 */ u8* carde_program_p; /* pointer to current e-Reader program data */
/* 0x02DBE8 */ size_t carde_program_size; /* size of current e-Reader program data */
/* 0x02DBEC */ int unk_nook_present_count; /* something possibly to do withhanding over password present? */
/* 0x02DBF0 */ u8 pad[16];
/* 0x000000 */ Save save;
/* 0x026000 */ u8 game_started;
/* 0x026001 */ u8 field_type;
/* 0x026002 */ u8 field_draw_type;
/* 0x026003 */ u8 player_no;
/* 0x026004 */ int last_scene_no;
/* 0x026008 */ int player_data_mode;
/* 0x02600C */ Clip_c clip;
/* 0x026110 */ Time_c time;
/* 0x02613C */ Private_c* now_private;
/* 0x026140 */ mHm_hs_c* now_home;
/* 0x026144 */ u8 map_flag;
/* 0x026145 */ u8 fish_location;
/* 0x026146 */ u8 npc_is_summercamper;
/* 0x026147 */ u8 player_select_animal_no;
/* 0x026148 */ u8 _26148[0x2614C - 0x26148];
/* 0x02614C */ Transition_c transition;
/* 0x026150 */ s16 bg_item_type;
/* 0x026152 */ s16 bg_item_profile;
/* 0x026154 */ u8 _26154[0x26164 - 0x26154];
/* 0x026164 */ mNpc_NpcList_c npclist[ANIMAL_NUM_MAX + 1];
/* 0x0264E4 */ mNpc_NpcList_c island_npclist[1]; // TODO: define for island npc count
/* 0x02651C */ mActor_name_t house_owner_name;
/* 0x02651E */ mActor_name_t last_field_id;
/* 0x026520 */ u8
in_initial_block; /* when TRUE, the player is in the acre which they exited a building. FALSE otherwise. */
/* 0x026521 */ u8 submenu_disabled; /* when set, submenus cannot be accessed from start button */
/* 0x026522 */ u8 sunlight_flag;
/* 0x026523 */ u8 train_flag;
/* 0x026522 */ u8 _26524[0x26668 - 0x26524];
/* 0x026668 */ mActor_name_t npc_chg_cloth;
/* 0x02666A */ u16 _pad_2666A; // weather data is probably a struct aligned to 4 bytes
/* 0x02666C */ s16 weather;
/* 0x02666E */ s16 weather_intensity;
/* 0x026670 */ lbRTC_time_c weather_time;
/* 0x026678 */ s_xyz wind;
/* 0x026680 */ f32 wind_speed;
/* 0x026684 */ mEv_event_common_u special_event_common;
/* 0x02669C */ mQst_not_saved_c quest;
/* 0x0266A4 */ int scene_from_title_demo; /* next scene to be loaded when title demo finishes */
/* 0x0266A8 */ mNPS_schedule_c npc_schedule[SCHEDULE_NUM];
/* 0x0267A8 */ mNpc_walk_c npc_walk;
/* 0x026838 */ mNpc_EventNpc_c event_npc[mNpc_EVENT_NPC_NUM];
/* 0x026878 */ mNpc_MaskNpc_c mask_npc[mNpc_MASK_NPC_NUM];
/* 0x028528 */ int snowman_msg_id;
/* 0x02852C */ s16 money_power;
/* 0x02852E */ s16 goods_power;
/* 0x028530 */ Door_data_c door_data; /* misc door data */
/* 0x028544 */ Door_data_c structure_exit_door_data; /* door data for when exiting a building */
/* 0x028558 */ mDemo_Request_c start_demo_request;
/* 0x028568 */ Door_data_c event_door_data;
/* 0x02857C */ Door_data_c famicom_emu_exit_door_data;
/* 0x028590 */ u8 remove_cut_tree_info_bitfield; /* resets the cut tree states for trees in a visible acre */
/* 0x028591 */ u8 floor_idx;
/* 0x028592 */ s16 demo_profiles[2]; /* demo_profiles[0] is for demo_clip, demo_profiles[1] is for demo_clip2 */
/* 0x028596 */ u16 copy_protect_code;
/* 0x028598 */ int event_keep_flags[4];
/* 0x0285A8 */ u8 _285A8[0x0285BE - 0x0285A8];
/* 0x0285BE */ s8 player_actor_exists;
/* 0x0285BF */ s8 payment_completed_type;
/* 0x0285C0 */ s8 player_decoy_flag;
/* 0x0285C1 */ u8 _285C1;
/* 0x0285C2 */ u8 make_npc2_actor;
/* 0x0285C4 */ s16 event_id;
/* 0x0285C6 */ u8 event_title_flags;
/* 0x0285C7 */ u8 event_title_fade_in_progress;
/* 0x0285C8 */ mEv_common_data_c event_common;
/* 0x0287F8 */ s8 current_famicom_rom;
/* 0x0287F9 */ s8 famicom_287F9;
/* 0x0287FA */ u8 _287FA[0x28838 - 0x0287FA];
/* 0x028838 */ s8 player_bee_swell_flag;
/* 0x028839 */ s8 player_bee_chase_flag;
/* 0x02883A */ u8 goki_shocked_flag;
/* 0x02883B */ u8 time_changed_flag;
/* 0x02883C */ u8 unable_to_wade_flag;
/* 0x02883D */ u8 _02883D;
/* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */
/* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */
/* 0x028840 */ u8 train_control_state; /* current train state */
/* 0x028841 */ u8 train_last_control_state; /* previous train state */
/* 0x028842 */ u8 train_signal;
/* 0x028843 */ u8 train_day;
/* 0x028844 */ u8 train_action;
/* 0x028845 */ u8 train_timer;
/* 0x028848 */ u32 train_start_timer;
/* 0x02884C */ f32 train_speed;
/* 0x028850 */ xyz_t train_position;
/* 0x02885C */ f32 unused_02885C;
/* 0x028860 */ f32 unused_028860;
/* 0x028864 */ u16 unused_028864;
/* 0x028866 */ u16 unused_028866;
/* 0x028868 */ u8 reset_flag;
/* 0x028869 */ u8 reset_type;
/* 0x02886A */ u8 force_mail_delivery_flag;
/* 0x02886B */ u8 post_girl_npc_type;
/* 0x02886C */ xyz_t ball_pos;
/* 0x028878 */ u8 ball_type;
/* 0x028879 */ u8 auto_nwrite_count;
/* 0x02887A */ lbRTC_year_t auto_nwrite_year;
/* 0x02887C */ u8 save_error_type; /* set to one of the mFRm_ERROR_* states when save is invalid */
/* 0x02887D */ u8 train_approaching_flag; /* set when the train is coming */
/* 0x02887E */ u8 buried_treasure_flag; /* when set, treasure cannot be buried */
/* 0x02887F */ u8 spnpc_first_talk_flags;
/* 0x028880 */ u8 needlework_first_talk_flags;
/* 0x028882 */ u16 event_notification_active;
/* 0x028884 */ lbRTC_time_c newly_set_time; /* time set by player in time adjust menu */
/* 0x02888C */ lbRTC_time_c old_time; /* time before being changed by the player */
/* 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 tanuki_shop_status; /* adjusted based on any current events happening to Nook's shop */
/* 0x0288A0 */ u8 pad_connected; /* is gamepad 0 connected? */
/* 0x0288A1 */ u8 unk288A1;
/* 0x0288A2 */ s16 current_sound_effect;
/* 0x0288A4 */ u8 _288a4[0x0288C0 - 0x0288A4];
/* 0x0288C0 */ Island_c transfer_island; /* used when transferring islands with the GBA */
/* 0x02A1C0 */ Island_agb_c agb_island; /* converted island data sent over to the GBA */
/* 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. */
/* 0x02DB42 */ u16 select_last_select_no;
/* 0x02DB44 */ u16 select_last_top_no;
/* 0x02DB46 */ mCD_persistent_data_c travel_persistent_data; /* used for checking if travelling back to town */
/* 0x02DBA2 */ s16 island_weather;
/* 0x02DBA4 */ s16 island_weather_intensity;
/* 0x02DBA6 */ s16 _2DBA6;
/* 0x02DBA8 */ u8 memcard_slot;
/* 0X02DBAC */ int famicom_2DBAC;
/* 0x02DBB0 */ s16 can_look_goki_count;
/* 0x02DBB4 */ f32 rainbow_opacity; /* current opacity of rainbow (0.0f - 1.0f) */
/* 0x02DBB8 */ u32 event_flags[mEv_EVENT_TYPE_NUM];
/* 0x02DBD4 */ xyz_t* pluss_bridge_pos; /* position of extra bridge */
/* 0x02DBD8 */ lbRTC_time_c auto_nwrite_time; /* cached notice time used for fishing tourney results? */
/* 0x02DBE0 */ u8 rhythym_updated;
/* 0x02DBE1 */ u8 _2dbe1;
/* 0x02DBE2 */ u8 hem_visible; /* controls farley's visiblilty during cutscene? */
/* 0x02DBE4 */ u8* carde_program_p; /* pointer to current e-Reader program data */
/* 0x02DBE8 */ size_t carde_program_size; /* size of current e-Reader program data */
/* 0x02DBEC */ int unk_nook_present_count; /* something possibly to do withhanding over password present? */
/* 0x02DBF0 */ u8 pad[16];
} common_data_t;
extern common_data_t common_data;
@@ -343,6 +353,8 @@ extern void common_data_reinit();
extern void common_data_init();
extern void common_data_clear();
//clang-format on
#ifdef __cplusplus
}
#endif
+49 -49
View File
@@ -1684,57 +1684,57 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define ITM_CLOTH_END (ITM_CLOTH_START + 255)
#define ITM_ETC_START 0x2500
#define ITM_QST_LETTER ITM_ETC_START
#define ITM_QST_CLOTH (ITM_QST_LETTER + 1)
#define ITM_QST_MONEY (ITM_QST_CLOTH + 1)
#define ITM_QST_VIDEOTAPE (ITM_QST_MONEY + 1)
#define ITM_QST_ORGANIZER (ITM_QST_VIDEOTAPE + 1)
#define ITM_QST_POKEMON_PIKACHU (ITM_QST_ORGANIZER + 1)
#define ITM_QST_COMIC_BOOK (ITM_QST_POKEMON_PIKACHU + 1)
#define ITM_QST_PICTURE_BOOK (ITM_QST_COMIC_BOOK + 1)
#define ITM_QST_GAME_BOY (ITM_QST_PICTURE_BOOK + 1)
#define ITM_QST_CAMREA (ITM_QST_GAME_BOY + 1)
#define ITM_QST_WATCH (ITM_QST_CAMREA + 1)
#define ITM_QST_HANDKERCHIEF (ITM_QST_WATCH + 1)
#define ITM_QST_GLASSES_CASE (ITM_QST_HANDKERCHIEF + 1)
#define ITM_MONEY1000BELL (ITM_QST_GLASSES_CASE + 1)
#define ITM_DUST0_EMPTY_CAN (ITM_MONEY1000BELL + 1)
#define ITM_DUST1_BOOT (ITM_DUST0_EMPTY_CAN + 1)
#define ITM_DUST2_OLD_TIRE (ITM_DUST1_BOOT + 1)
#define ITM_FOSSIL (ITM_DUST2_OLD_TIRE + 1)
#define ITM_PITFALL (ITM_FOSSIL + 1)
#define ITM_FORTUNE_SLIP (ITM_PITFALL + 1)
#define ITM_QST_LETTER (ITM_ETC_START + 0)
#define ITM_QST_CLOTH (ITM_ETC_START + 1)
#define ITM_QST_MONEY (ITM_ETC_START + 2)
#define ITM_QST_VIDEOTAPE (ITM_ETC_START + 3)
#define ITM_QST_ORGANIZER (ITM_ETC_START + 4)
#define ITM_QST_POKEMON_PIKACHU (ITM_ETC_START + 5)
#define ITM_QST_COMIC_BOOK (ITM_ETC_START + 6)
#define ITM_QST_PICTURE_BOOK (ITM_ETC_START + 7)
#define ITM_QST_GAME_BOY (ITM_ETC_START + 8)
#define ITM_QST_CAMREA (ITM_ETC_START + 9)
#define ITM_QST_WATCH (ITM_ETC_START + 10)
#define ITM_QST_HANDKERCHIEF (ITM_ETC_START + 11)
#define ITM_QST_GLASSES_CASE (ITM_ETC_START + 12)
#define ITM_MONEY1000BELL (ITM_ETC_START + 13)
#define ITM_DUST0_EMPTY_CAN (ITM_ETC_START + 14)
#define ITM_DUST1_BOOT (ITM_ETC_START + 15)
#define ITM_DUST2_OLD_TIRE (ITM_ETC_START + 16)
#define ITM_FOSSIL (ITM_ETC_START + 17)
#define ITM_PITFALL (ITM_ETC_START + 18)
#define ITM_FORTUNE_SLIP (ITM_ETC_START + 19)
#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_SHELL0 (ITM_ETC_START + 20)
#define ITM_SHELL1 (ITM_ETC_START + 21)
#define ITM_SHELL2 (ITM_ETC_START + 22)
#define ITM_SHELL3 (ITM_ETC_START + 23)
#define ITM_SHELL4 (ITM_ETC_START + 24)
#define ITM_SHELL5 (ITM_ETC_START + 25)
#define ITM_SHELL6 (ITM_ETC_START + 26)
#define ITM_SHELL7 (ITM_ETC_START + 27)
#define ITM_SHELL_END (ITM_ETC_START + 28)
#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)
#define ITM_GOLDEN_AXE_PRESENT (ITM_GOLDEN_NET_PRESENT + 1)
#define ITM_GOLDEN_SHOVEL_PRESENT (ITM_GOLDEN_AXE_PRESENT + 1)
#define ITM_GOLDEN_ROD_PRESENT (ITM_GOLDEN_SHOVEL_PRESENT + 1)
#define ITM_EXCERCISE_CARD00 (ITM_GOLDEN_ROD_PRESENT + 1)
#define ITM_EXCERCISE_CARD01 (ITM_EXCERCISE_CARD00 + 1)
#define ITM_EXCERCISE_CARD02 (ITM_EXCERCISE_CARD01 + 1)
#define ITM_EXCERCISE_CARD03 (ITM_EXCERCISE_CARD02 + 1)
#define ITM_EXCERCISE_CARD04 (ITM_EXCERCISE_CARD03 + 1)
#define ITM_EXCERCISE_CARD05 (ITM_EXCERCISE_CARD04 + 1)
#define ITM_EXCERCISE_CARD06 (ITM_EXCERCISE_CARD05 + 1)
#define ITM_EXCERCISE_CARD07 (ITM_EXCERCISE_CARD06 + 1)
#define ITM_EXCERCISE_CARD08 (ITM_EXCERCISE_CARD07 + 1)
#define ITM_EXCERCISE_CARD09 (ITM_EXCERCISE_CARD08 + 1)
#define ITM_EXCERCISE_CARD10 (ITM_EXCERCISE_CARD09 + 1)
#define ITM_EXCERCISE_CARD11 (ITM_EXCERCISE_CARD10 + 1)
#define ITM_EXCERCISE_CARD12 (ITM_EXCERCISE_CARD11 + 1)
#define ITM_KNIFE_AND_FORK (ITM_EXCERCISE_CARD12 + 1)
#define ITM_TOWN_MAP (ITM_ETC_START + 29)
#define ITM_SIGNBOARD (ITM_ETC_START + 30)
#define ITM_GOLDEN_NET_PRESENT (ITM_ETC_START + 31)
#define ITM_GOLDEN_AXE_PRESENT (ITM_ETC_START + 32)
#define ITM_GOLDEN_SHOVEL_PRESENT (ITM_ETC_START + 33)
#define ITM_GOLDEN_ROD_PRESENT (ITM_ETC_START + 34)
#define ITM_EXCERCISE_CARD00 (ITM_ETC_START + 35)
#define ITM_EXCERCISE_CARD01 (ITM_ETC_START + 36)
#define ITM_EXCERCISE_CARD02 (ITM_ETC_START + 37)
#define ITM_EXCERCISE_CARD03 (ITM_ETC_START + 38)
#define ITM_EXCERCISE_CARD04 (ITM_ETC_START + 39)
#define ITM_EXCERCISE_CARD05 (ITM_ETC_START + 40)
#define ITM_EXCERCISE_CARD06 (ITM_ETC_START + 41)
#define ITM_EXCERCISE_CARD07 (ITM_ETC_START + 42)
#define ITM_EXCERCISE_CARD08 (ITM_ETC_START + 43)
#define ITM_EXCERCISE_CARD09 (ITM_ETC_START + 44)
#define ITM_EXCERCISE_CARD10 (ITM_ETC_START + 45)
#define ITM_EXCERCISE_CARD11 (ITM_ETC_START + 46)
#define ITM_EXCERCISE_CARD12 (ITM_ETC_START + 47)
#define ITM_KNIFE_AND_FORK (ITM_ETC_START + 48)
#define ITM_ETC_END 0x2531
#define ITM_CARPET_START 0x2600
+1 -1
View File
@@ -434,7 +434,7 @@ extern void mNpc_ClearTalkInfo();
extern int mNpc_CheckOverImpatient(int animal_idx, int looks);
extern int mNpc_GetOverImpatient(int animal_idx, int looks);
extern int mNpc_CheckQuestRequest(int animal_idx);
extern void mNpc_SetQuestRequestOFF(int animal_idx, int feel);
extern void mNpc_SetQuestRequestOFF(int animal_idx, int looks);
extern void mNpc_TalkInfoMove();
extern void mNpc_TalkEndMove(int animal_idx, int feel);
extern int mNpc_GetNpcFloorNo();
+4
View File
@@ -19,13 +19,17 @@ extern "C" {
#define mPr_DEPOSIT_MAX 999999999
#define mPr_FLAG_MASK_CAT_SCHEDULED (1 << 0) // Blanca appears when travelling
#define mPr_FLAG_1 (1 << 1) // unused?
#define mPr_FLAG_POSTOFFICE_GIFT0 (1 << 2) // 1,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT1 (1 << 3) // 10,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT2 (1 << 4) // 100,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT3 (1 << 5) // 999,999,999 Bells
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED (1 << 6) // player is scheduled to receive completion letter & reward
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED (1 << 7) // player has received the completion letter & reward
#define mPr_FLAG_8 (1 << 8) // unused?
#define mPr_FLAG_UPDATE_OUTLOOK_PENDING (1 << 9) // player bought a new coat of roof paint to be repainted
#define mPr_FLAG_BIRTHDAY_ACTIVE (1 << 10) // player's birthday is active and a villager can give them a gift
#define mPr_FLAG_TOTAKEKE_INTRODUCTION (1 << 11) // player has spoken to K.K. Slider before
#define mPr_MONEY_POWER_MIN -80
+94 -77
View File
@@ -31,77 +31,92 @@ extern "C" {
#define mQst_LETTER_RANK_11 11
#define mQst_LETTER_RANK_MAX mQst_LETTER_RANK_11 + 1
#define mQst_LETTER_SCORE_BONUS 3 /* Given when the raw score of the letter has passed the threshold */
#define mQst_LETTER_SCORE_BONUS 3 /* Given when the raw score of the letter has passed the threshold */
#define mQst_LETTER_PRESENT_BONUS 6 /* Given when a present is attached */
#define mQst_LETTER_OKAY_LENGTH 17
#define mQst_LETTER_GOOD_LENGTH 49
#define mQst_DELIVERY_KIND_NUM 4
enum {
mQst_QUEST_TYPE_DELIVERY, /* Deliver item quest */
mQst_QUEST_TYPE_ERRAND, /* Villager 'can I help' quests */
mQst_QUEST_TYPE_CONTEST, /* Villager send letter, plant flowers, bring ball, etc */
mQst_QUEST_TYPE_NONE,
mQst_QUEST_TYPE_NUM = mQst_QUEST_TYPE_NONE
mQst_QUEST_TYPE_DELIVERY, /* Deliver item quest */
mQst_QUEST_TYPE_ERRAND, /* Villager 'can I help' quests */
mQst_QUEST_TYPE_CONTEST, /* Villager send letter, plant flowers, bring ball, etc */
mQst_QUEST_TYPE_NONE,
mQst_QUEST_TYPE_NUM = mQst_QUEST_TYPE_NONE
};
/* sizeof(mQst_base_c) == 0xC */
typedef struct quest_base_s {
/* 0x00 */ u32 quest_type:2; /* type, 0 = delivery, 1 = errand, 2 = contest, 3 = none */
/* 0x00 */ u32 quest_kind:6; /* kind, differs by type */
/* 0x01 */ u32 time_limit_enabled:1; /* when set, the time limit will be utilized */
/* 0x01 */ u32 progress:4; /* progress towards quest goal */
/* 0x01 */ u32 give_reward:1; /* set to true when player cannot take the item, and will skip quest completion checks */
/* 0x01 */ u32 unused:2;
/* 0x00 */ u32 quest_type : 2; /* type, 0 = delivery, 1 = errand, 2 = contest, 3 = none */
/* 0x00 */ u32 quest_kind : 6; /* kind, differs by type */
/* 0x01 */ u32 time_limit_enabled : 1; /* when set, the time limit will be utilized */
/* 0x01 */ u32 progress : 4; /* progress towards quest goal */
/* 0x01 */ u32 give_reward : 1; /* player cannot take the item, and will skip quest completion checks */
/* 0x01 */ u32 unused : 2;
/* 0x02 */ lbRTC_time_c time_limit;
/* 0x02 */ lbRTC_time_c time_limit;
} mQst_base_c;
/* Contest Quest */
enum {
mQst_CONTEST_KIND_FRUIT, /* get fruit for villager */
mQst_CONTEST_KIND_SOCCER, /* get ball for villager */
mQst_CONTEST_KIND_SNOWMAN, /* build snowman for villager */
mQst_CONTEST_KIND_FLOWER, /* plant flowers for villager */
mQst_CONTEST_KIND_FISH, /* get fish for villager */
mQst_CONTEST_KIND_INSECT, /* get insect for villager */
mQst_CONTEST_KIND_LETTER, /* send letter to villager */
mQst_CONTEST_KIND_FRUIT, /* get fruit for villager */
mQst_CONTEST_KIND_SOCCER, /* get ball for villager */
mQst_CONTEST_KIND_SNOWMAN, /* build snowman for villager */
mQst_CONTEST_KIND_FLOWER, /* plant flowers for villager */
mQst_CONTEST_KIND_FISH, /* get fish for villager */
mQst_CONTEST_KIND_INSECT, /* get insect for villager */
mQst_CONTEST_KIND_LETTER, /* send letter to villager */
mQst_CONTEST_KIND_NUM
mQst_CONTEST_KIND_NUM
};
enum {
mQst_CONTEST_DATA_NONE,
mQst_CONTEST_DATA_FLOWER,
mQst_CONTEST_DATA_LETTER,
mQst_CONTEST_DATA_NUM
};
/* sizeof(mQst_contest_info_u) == 4 */
typedef union quest_contest_info_s {
struct {
/* 0x00 */ u8 flowers_requested; /* number of flowers village requests be planted in acre */
} flower_data;
struct {
/* 0x00 */ u8 flowers_requested; /* number of flowers village requests be planted in acre */
} flower_data;
struct {
/* 0x00 */ u8 score; /* score rank of letter */
/* 0x02 */ mActor_name_t present; /* present sent with letter */
} letter_data;
struct {
/* 0x00 */ u8 score; /* score rank of letter */
/* 0x02 */ mActor_name_t present; /* present sent with letter */
} letter_data;
} mQst_contest_info_u;
/* sizeof(mQst_contest_c) == 0x28 */
typedef struct quest_contest_s {
/* 0x00 */ mQst_base_c base; /* quest base struct */
/* 0x0C */ mActor_name_t requested_item; /* item (if any) requested by the villager */
/* 0x0E */ PersonalID_c player_id; /* personal id of the player */
/* 0x22 */ s8 type; /* type of quest, seems to be repeat of data in quest base */
/* 0x24 */ mQst_contest_info_u info; /* contest info for flower & letter quests */
/* 0x00 */ mQst_base_c base; /* quest base struct */
/* 0x0C */ mActor_name_t requested_item; /* item (if any) requested by the villager */
/* 0x0E */ PersonalID_c player_id; /* personal id of the player */
/* 0x22 */ s8 type; /* type of quest, seems to be repeat of data in quest base */
/* 0x24 */ mQst_contest_info_u info; /* contest info for flower & letter quests */
} mQst_contest_c;
/* Delivery Quest */
enum {
mQst_DELIVERY_KIND_NORMAL, // standard delivery
mQst_DELIVERY_KIND_FOREIGN, // delivered to a foreign animal
mQst_DELIVERY_KIND_REMOVE, // delivered to the animal who last left for another town
mQst_DELIVERY_KIND_LOST, // assumed, probably for when a delivery is 'undeliverable'
mQst_DELIVERY_KIND_NUM
};
/* sizeof(mQst_delivery_c) == 0x28 */
typedef struct quest_delivery_s {
/* 0x00 */ mQst_base_c base; /* quest base info */
/* 0x0C */ AnmPersonalID_c recipient; /* villager who will receive it */
/* 0x1A */ AnmPersonalID_c sender; /* villager who sent it */
/* 0x00 */ mQst_base_c base; /* quest base info */
/* 0x0C */ AnmPersonalID_c recipient; /* villager who will receive it */
/* 0x1A */ AnmPersonalID_c sender; /* villager who sent it */
} mQst_delivery_c;
/* Errand Quest */
@@ -109,68 +124,69 @@ typedef struct quest_delivery_s {
#define mQst_ERRAND_CHAIN_ANIMAL_NUM 3
enum {
mQst_ERRAND_REQUEST,
mQst_ERRAND_REQUEST_CONTINUE,
mQst_ERRAND_REQUEST_FINAL,
mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH,
mQst_ERRAND_FIRSTJOB_PLANT_FLOWER,
mQst_ERRAND_FIRSTJOB_DELIVER_FTR,
mQst_ERRAND_FIRSTJOB_SEND_LETTER,
mQst_ERRAND_FIRSTJOB_DELIVER_CARPET,
mQst_ERRAND_FIRSTJOB_DELIVER_AXE,
mQst_ERRAND_FIRSTJOB_POST_NOTICE,
mQst_ERRAND_FIRSTJOB_SEND_LETTER2,
mQst_ERRAND_FIRSTJOB_DELIVER_AXE2,
mQst_ERRAND_FIRSTJOB_INTRODUCTIONS,
mQst_ERRAND_FIRSTJOB_OPEN,
mQst_ERRAND_FIRSTJOB_START,
mQst_ERRAND_REQUEST,
mQst_ERRAND_REQUEST_CONTINUE,
mQst_ERRAND_REQUEST_FINAL,
mQst_ERRAND_NUM
mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH,
mQst_ERRAND_FIRSTJOB_PLANT_FLOWER,
mQst_ERRAND_FIRSTJOB_DELIVER_FTR,
mQst_ERRAND_FIRSTJOB_SEND_LETTER,
mQst_ERRAND_FIRSTJOB_DELIVER_CARPET,
mQst_ERRAND_FIRSTJOB_DELIVER_AXE,
mQst_ERRAND_FIRSTJOB_POST_NOTICE,
mQst_ERRAND_FIRSTJOB_SEND_LETTER2,
mQst_ERRAND_FIRSTJOB_DELIVER_AXE2,
mQst_ERRAND_FIRSTJOB_INTRODUCTIONS,
mQst_ERRAND_FIRSTJOB_OPEN,
mQst_ERRAND_FIRSTJOB_START,
mQst_ERRAND_NUM
};
enum {
mQst_ERRAND_TYPE_NONE,
mQst_ERRAND_TYPE_CHAIN,
mQst_ERRAND_TYPE_FIRST_JOB,
mQst_ERRAND_TYPE_NONE,
mQst_ERRAND_TYPE_CHAIN,
mQst_ERRAND_TYPE_FIRST_JOB,
mQst_ERRAND_TYPE_NUM
mQst_ERRAND_TYPE_NUM
};
/* sizeof(mQst_first_job_c) == 0x20 */
typedef struct quest_first_job_s {
/* 0x00 */ AnmPersonalID_c used_ids[mQst_ERRAND_FIRST_JOB_ANIMAL_NUM]; /* villagers already used for first job quest (furniture, then letter) */
/* 0x1C */ u8 used_num:7; /* used count for 'used_ids' */
/* 0x1C */ u8 wrong_cloth:1; /* set to TRUE if player changes out of work uniform during chores */
/* 0x00 */ AnmPersonalID_c used_ids[mQst_ERRAND_FIRST_JOB_ANIMAL_NUM]; /* villagers already used for first job quest
(furniture, then letter) */
/* 0x1C */ u8 used_num : 7; /* used count for 'used_ids' */
/* 0x1C */ u8 wrong_cloth : 1; /* set to TRUE if player changes out of work uniform during chores */
} mQst_firstjob_c;
/* sizeof(mQst_errand_chain_c) == 0x2C */
typedef struct quest_errand_chain_s {
/* 0x00 */ AnmPersonalID_c used_ids[mQst_ERRAND_CHAIN_ANIMAL_NUM];
/* 0x2A */ u8 used_num;
/* 0x00 */ AnmPersonalID_c used_ids[mQst_ERRAND_CHAIN_ANIMAL_NUM];
/* 0x2A */ u8 used_num;
} mQst_errand_chain_c;
/* sizeof(mQst_errand_info_u) == 0x2C */
typedef union {
mQst_errand_chain_c chain;
mQst_firstjob_c first_job;
mQst_errand_chain_c chain;
mQst_firstjob_c first_job;
} mQst_errand_info_u;
/* sizeof(mQst_errand_c) == 0x58 */
typedef struct quest_errand_s {
/* 0x00 */ mQst_base_c base; /* quest base info */
/* 0x0C */ AnmPersonalID_c recipient; /* villager who will receive it */
/* 0x1A */ AnmPersonalID_c sender; /* villager who sent it */
/* 0x28 */ mActor_name_t item; /* errand item */
/* 0x2A */ s8 pockets_idx:5; /* index in player pockets where the errand item is */
/* 0x2A */ s8 errand_type:3; /* errand type */
/* 0x2C */ mQst_errand_info_u info; /* errand type-specific data */
/* 0x00 */ mQst_base_c base; /* quest base info */
/* 0x0C */ AnmPersonalID_c recipient; /* villager who will receive it */
/* 0x1A */ AnmPersonalID_c sender; /* villager who sent it */
/* 0x28 */ mActor_name_t item; /* errand item */
/* 0x2A */ s8 pockets_idx : 5; /* index in player pockets where the errand item is */
/* 0x2A */ s8 errand_type : 3; /* errand type */
/* 0x2C */ mQst_errand_info_u info; /* errand type-specific data */
} mQst_errand_c;
/* 'Not Saved' Quest */
typedef struct not_saved_quest_s {
int work;
u8 h;
int work;
u8 h;
} mQst_not_saved_c;
extern void mQst_ClearQuestInfo(mQst_base_c* quest);
@@ -216,7 +232,8 @@ extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mAc
extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot);
extern void mQst_SetFirstJobNotice(mQst_errand_c* errand);
extern int mQst_GetRandom(int max);
extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, int exist_num, int list);
extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table,
int exist_num, int list);
extern int mQst_CheckSoccerTarget(ACTOR* actor);
extern void mQst_NextSoccer(ACTOR* actor);
extern void mQst_NextSnowman(xyz_t snowman_pos);
+122 -112
View File
@@ -19,120 +19,128 @@ typedef struct submenu_s Submenu;
#define mSM_INV_BUTTON_1 BUTTON_Y
enum {
mSM_PROCESS_WAIT,
mSM_PROCESS_PREWAIT,
mSM_PROCESS_LINKWAIT,
mSM_PROCESS_PLAY,
mSM_PROCESS_END,
mSM_PROCESS_WAIT,
mSM_PROCESS_PREWAIT,
mSM_PROCESS_LINKWAIT,
mSM_PROCESS_PLAY,
mSM_PROCESS_END,
mSM_PROCESS_NUM
mSM_PROCESS_NUM
};
enum {
mSM_DLF_SUBMENU_OVL,
mSM_DLF_PLAYER_ACTOR,
mSM_DLF_SUBMENU_OVL,
mSM_DLF_PLAYER_ACTOR,
mSM_DLF_NUM
mSM_DLF_NUM
};
enum {
mSM_MOVE_OUT_RIGHT,
mSM_MOVE_IN_RIGHT,
mSM_MOVE_OUT_LEFT,
mSM_MOVE_IN_LEFT,
mSM_MOVE_OUT_TOP,
mSM_MOVE_IN_TOP,
mSM_MOVE_OUT_BOTTOM,
mSM_MOVE_IN_BOTTOM,
mSM_MOVE_OUT_RIGHT,
mSM_MOVE_IN_RIGHT,
mSM_MOVE_NUM
mSM_MOVE_OUT_LEFT,
mSM_MOVE_IN_LEFT,
mSM_MOVE_OUT_TOP,
mSM_MOVE_IN_TOP,
mSM_MOVE_OUT_BOTTOM,
mSM_MOVE_IN_BOTTOM,
mSM_MOVE_NUM
};
enum submenu_overlay {
mSM_OVL_NONE,
mSM_OVL_INVENTORY,
mSM_OVL_HBOARD,
mSM_OVL_TIMEIN,
mSM_OVL_LEDIT,
mSM_OVL_MAP,
mSM_OVL_NOTICE,
mSM_OVL_REPAY,
mSM_OVL_MSCORE,
mSM_OVL_BIRTHDAY,
mSM_OVL_EDITOR,
mSM_OVL_MAILBOX,
mSM_OVL_BOARD,
mSM_OVL_ADDRESS,
mSM_OVL_HANIWA,
mSM_OVL_EDITENDCHK,
mSM_OVL_WARNING,
mSM_OVL_CPMAIL,
mSM_OVL_CPWARNING,
mSM_OVL_CPEDIT,
mSM_OVL_CATALOG,
mSM_OVL_MUSIC,
mSM_OVL_BANK,
mSM_OVL_NEEDLEWORK,
mSM_OVL_CPORIGINAL,
mSM_OVL_DESIGN,
mSM_OVL_GBA,
mSM_OVL_DIARY,
mSM_OVL_CALENDAR,
mSM_OVL_PASSWORDMAKE,
mSM_OVL_PASSWORDCHK,
mSM_OVL_NONE,
mSM_OVL_NUM
mSM_OVL_INVENTORY,
mSM_OVL_HBOARD,
mSM_OVL_TIMEIN,
mSM_OVL_LEDIT,
mSM_OVL_MAP,
mSM_OVL_NOTICE,
mSM_OVL_REPAY,
mSM_OVL_MSCORE,
mSM_OVL_BIRTHDAY,
mSM_OVL_EDITOR,
mSM_OVL_MAILBOX,
mSM_OVL_BOARD,
mSM_OVL_ADDRESS,
mSM_OVL_HANIWA,
mSM_OVL_EDITENDCHK,
mSM_OVL_WARNING,
mSM_OVL_CPMAIL,
mSM_OVL_CPWARNING,
mSM_OVL_CPEDIT,
mSM_OVL_CATALOG,
mSM_OVL_MUSIC,
mSM_OVL_BANK,
mSM_OVL_NEEDLEWORK,
mSM_OVL_CPORIGINAL,
mSM_OVL_DESIGN,
mSM_OVL_GBA,
mSM_OVL_DIARY,
mSM_OVL_CALENDAR,
mSM_OVL_PASSWORDMAKE,
mSM_OVL_PASSWORDCHK,
mSM_OVL_NUM
};
enum {
mSM_IV_OPEN_NORMAL,
mSM_IV_OPEN_MAILBOX,
mSM_IV_OPEN_HANIWA_ENTRUST,
mSM_IV_OPEN_HANIWA_TAKE,
mSM_IV_OPEN_QUEST,
mSM_IV_OPEN_SELL,
mSM_IV_OPEN_GIVE,
mSM_IV_OPEN_SEND_MAIL,
mSM_IV_OPEN_TAKE,
mSM_IV_OPEN_PUTIN_FTR,
mSM_IV_OPEN_MINIDISK,
mSM_IV_OPEN_SHRINE,
mSM_IV_OPEN_12,
mSM_IV_OPEN_EXCHANGE,
mSM_IV_OPEN_14,
mSM_IV_OPEN_CURATOR,
mSM_IV_OPEN_16,
mSM_IV_OPEN_NORMAL,
mSM_IV_OPEN_MAILBOX,
mSM_IV_OPEN_HANIWA_ENTRUST,
mSM_IV_OPEN_HANIWA_TAKE,
mSM_IV_OPEN_QUEST,
mSM_IV_OPEN_SELL,
mSM_IV_OPEN_GIVE,
mSM_IV_OPEN_SEND_MAIL,
mSM_IV_OPEN_TAKE,
mSM_IV_OPEN_PUTIN_FTR,
mSM_IV_OPEN_MINIDISK,
mSM_IV_OPEN_SHRINE,
mSM_IV_OPEN_12,
mSM_IV_OPEN_EXCHANGE,
mSM_IV_OPEN_14,
mSM_IV_OPEN_CURATOR,
mSM_IV_OPEN_16,
mSM_IV_OPEN_NUM
mSM_IV_OPEN_NUM
};
enum {
mSM_BD_OPEN_WRITE,
mSM_BD_OPEN_READ,
mSM_BD_OPEN_REWRITE,
mSM_BD_OPEN_WRITE_ISLAND,
mSM_BD_OPEN_READ_ISLAND,
mSM_IV_ITEM_NORMAL,
mSM_IV_ITEM_PUT_AWAY,
mSM_IV_ITEM_WAIT,
mSM_BD_OPEN_NUM
mSM_IV_ITEM_NUM
};
enum {
mSM_BD_OPEN_WRITE,
mSM_BD_OPEN_READ,
mSM_BD_OPEN_REWRITE,
mSM_BD_OPEN_WRITE_ISLAND,
mSM_BD_OPEN_READ_ISLAND,
mSM_BD_OPEN_NUM
};
typedef struct submenu_item_s {
mActor_name_t item;
u8 slot_no;
mActor_name_t item;
u8 slot_no;
} Submenu_Item_c;
typedef struct submenu_dlftbl {
void* _00;
int _04;
int _08;
int _0C;
int _10;
int _14;
const char* name;
void* _00;
int _04;
int _08;
int _0C;
int _10;
int _14;
const char* name;
} mSM_dlftbl_c;
typedef void (*SUBMENU_PROC)(Submenu*);
@@ -140,36 +148,38 @@ typedef void (*SUBMENU_GAME_PROC)(Submenu*, GAME*);
/* sizeof (struct submenu_s) == 0x1B8 */
struct submenu_s {
/* 0x000 */ int mode;
/* 0x004 */ int menu_type;
/* 0x008 */ int current_menu_type;
/* 0x000 */ int mode;
/* 0x004 */ int menu_type;
/* 0x008 */ int current_menu_type;
/* 0x00C */ int process_status;
/* 0x00C */ int process_status;
/* 0x010 */ int param0;
/* 0x014 */ int param1;
/* 0x018 */ void* param2;
/* 0x01C */ int param3;
/* 0x010 */ int param0;
/* 0x014 */ int param1;
/* 0x018 */ void* param2;
/* 0x01C */ int param3;
/* 0x020 */ int wait_timer;
/* 0x020 */ int wait_timer;
/* 0x024 */ char* overlay_address;
/* 0x028 */ char* next_overlay_address;
/* 0x02C */ Submenu_Overlay_c* overlay;
/* 0x030 */ SUBMENU_PROC move_proc;
/* 0x034 */ SUBMENU_GAME_PROC draw_proc;
/* 0x024 */ char* overlay_address;
/* 0x028 */ char* next_overlay_address;
/* 0x02C */ Submenu_Overlay_c* overlay;
/* 0x030 */ SUBMENU_PROC move_proc;
/* 0x034 */ SUBMENU_GAME_PROC draw_proc;
/* 0x038 */ Mail_c mail; /* selected mail */
/* 0x162 */ u8 open_flag; // only set to 0 or 1, checked at least once in aQMgr_actor_move_talk_sub_hand_item_wait
/* 0x163 */ u8 after_mode; /* relates to code which runs after the submenu process */
/* 0x164 */ u8 unk_164; // only set to 0 in mSM_move_LINKWait in AC
/* 0x165 */ u8 disable_start_btn_flag; /* when set to TRUE, the START button input will be ignored */
/* 0x166 */ u8 disable_start_btn_timer; /* timer for when to disable the start button ignore flag */
/* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */
/* 0x174 */ Submenu_Item_c* item_p; /* pointer to a 'Submenu_Item_c' array, seemingly only points to Submenu::items */
/* 0x178 */ s16 item_num; /* number of items in the item array */
/* 0x17A */ s16 selected_item_num; /* number of selected items in the item array */
/* 0x17C */ Submenu_Item_c items[mPr_POCKETS_SLOT_COUNT]; /* item buffer, entries are only set when an item is selected by the player */
/* 0x038 */ Mail_c mail; /* selected mail */
/* 0x162 */ u8 open_flag; // only set to 0 or 1, checked at least once in aQMgr_actor_move_talk_sub_hand_item_wait
/* 0x163 */ u8 after_mode; /* relates to code which runs after the submenu process */
/* 0x164 */ u8 unk_164; // only set to 0 in mSM_move_LINKWait in AC
/* 0x165 */ u8 disable_start_btn_flag; /* when set to TRUE, the START button input will be ignored */
/* 0x166 */ u8 disable_start_btn_timer; /* timer for when to disable the start button ignore flag */
/* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */
/* 0x174 */ Submenu_Item_c*
item_p; /* pointer to a 'Submenu_Item_c' array, seemingly only points to Submenu::items */
/* 0x178 */ s16 item_num; /* number of items in the item array */
/* 0x17A */ s16 selected_item_num; /* number of selected items in the item array */
/* 0x17C */ Submenu_Item_c
items[mPr_POCKETS_SLOT_COUNT]; /* item buffer, entries are only set when an item is selected by the player */
};
extern int mSM_COLLECT_INSECT_GET(int idx);
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -5141,12 +5141,12 @@ extern int mNpc_CheckQuestRequest(int animal_idx) {
return res;
}
extern void mNpc_SetQuestRequestOFF(int animal_idx, int feel) {
extern void mNpc_SetQuestRequestOFF(int animal_idx, int looks) {
mNpc_Talk_Info_c* talk_info = &l_npc_talk_info[animal_idx];
if (animal_idx >= 0 && animal_idx < ARRAY_COUNT(l_npc_talk_info)) {
if (talk_info->quest_request == TRUE) {
mNpc_SetUnlockTimer(&talk_info->unlock_timer, &talk_info->reset_timer, feel);
mNpc_SetUnlockTimer(&talk_info->unlock_timer, &talk_info->reset_timer, looks);
}
talk_info->quest_request = FALSE;