mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-07-07 20:11:51 -04:00
Implement & link m_submenu.c
This commit is contained in:
@@ -258,6 +258,7 @@ extern int mCoBG_GetHoleNumber(xyz_t wpos);
|
||||
extern int mCoBG_Attr2CheckPlaceNpc(u32 attribute);
|
||||
extern int mCoBG_ExistHeightGap_KeepAndNow(xyz_t wpos);
|
||||
extern void mCoBG_GetNorm_By3Point(xyz_t* norm, xyz_t* p0, xyz_t* p1, xyz_t* p2);
|
||||
extern int mCoBG_SearchWaterLimitDistN(xyz_t* water_pos, xyz_t wpos, s16 angle, float max_dist, int divisor);
|
||||
|
||||
extern void mCoBG_InitMoveBgData();
|
||||
extern void mCoBG_InitBlockBgCheckMode();
|
||||
|
||||
@@ -260,6 +260,7 @@ extern int mMsg_Check_main_index(mMsg_Window_c* msg_win, int index);
|
||||
extern int mMsg_request_main_appear(mMsg_Window_c* msg_win, ACTOR* other_actor, int display_name, rgba_t* window_color_p, int msg_no, int request_priority);
|
||||
extern int mMsg_Check_main_hide(mMsg_Window_c* msg_win);
|
||||
extern int mMsg_sound_voice_get_for_editor(int code);
|
||||
extern int mMsg_sound_spec_change_voice(mMsg_Window_c* msg_win);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -152,7 +152,8 @@ typedef struct offset_table_s {
|
||||
#define MINIDISK_NUM 55
|
||||
#define DIARY_NUM 16
|
||||
#define TICKET_NUM 96
|
||||
#define INSECT_NUM 40 + 5 // 5 spirits
|
||||
#define INSECT_ONLY_NUM 40
|
||||
#define INSECT_NUM INSECT_ONLY_NUM + 5 // 5 spirits
|
||||
#define HUKUBUKURO_NUM 2
|
||||
#define KABU_NUM 4
|
||||
|
||||
|
||||
+3
-2
@@ -42,8 +42,9 @@ struct game_play_s {
|
||||
/* 0x1DA0 */ pause_t pause;
|
||||
/* 0x1DA8 */ Actor_info actor_info;
|
||||
/* 0x1DEC */ Submenu submenu;
|
||||
/* 0x1FA4 */ s8 unk1FA4;
|
||||
/* 0x1FA8 */ u8 _1FA4[0x1FB8 - 0x1FA8];
|
||||
/* 0x1FA4 */ s8 submenu_ground_idx;
|
||||
/* 0x1FA8 */ char* submenu_ground_tex[2];
|
||||
/* 0x1FB0 */ char* submenu_ground_pallet[2];
|
||||
/* 0x1FB8 */ PreRender prerender;
|
||||
/* 0x2000 */ Door_info_c door_info;
|
||||
/* 0x2008 */ int next_scene_no;
|
||||
|
||||
+129
-1
@@ -29,6 +29,130 @@ enum {
|
||||
mPlayer_ADDRESSABLE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mPlayer_INDEX_DMA,
|
||||
mPlayer_INDEX_INTRO,
|
||||
mPlayer_INDEX_REFUSE,
|
||||
mPlayer_INDEX_REFUSE_PICKUP,
|
||||
mPlayer_INDEX_RETURN_DEMO,
|
||||
mPlayer_INDEX_RETURN_OUTDOOR,
|
||||
mPlayer_INDEX_RETURN_OUTDOOR2,
|
||||
mPlayer_INDEX_WAIT,
|
||||
mPlayer_INDEX_WALK,
|
||||
mPlayer_INDEX_RUN,
|
||||
mPlayer_INDEX_DASH,
|
||||
mPlayer_INDEX_TUMBLE,
|
||||
mPlayer_INDEX_TUMBLE_GETUP,
|
||||
mPlayer_INDEX_TURN_DASH,
|
||||
mPlayer_INDEX_FALL,
|
||||
mPlayer_INDEX_WADE,
|
||||
mPlayer_INDEX_DOOR,
|
||||
mPlayer_INDEX_OUTDOOR,
|
||||
mPlayer_INDEX_INVADE,
|
||||
mPlayer_INDEX_HOLD,
|
||||
mPlayer_INDEX_PUSH,
|
||||
mPlayer_INDEX_PULL,
|
||||
mPlayer_INDEX_ROTATE_FURNITURE,
|
||||
mPlayer_INDEX_OPEN_FURNITURE,
|
||||
mPlayer_INDEX_WAIT_OPEN_FURNITURE,
|
||||
mPlayer_INDEX_CLOSE_FURNITURE,
|
||||
mPlayer_INDEX_LIE_BED,
|
||||
mPlayer_INDEX_WAIT_BED,
|
||||
mPlayer_INDEX_ROLL_BED,
|
||||
mPlayer_INDEX_STANDUP_BED,
|
||||
mPlayer_INDEX_PICKUP,
|
||||
mPlayer_INDEX_PICKUP_JUMP,
|
||||
mPlayer_INDEX_PICKUP_FURNITURE,
|
||||
mPlayer_INDEX_PICKUP_EXCHANGE,
|
||||
mPlayer_INDEX_SITDOWN,
|
||||
mPlayer_INDEX_SITDOWN_WAIT,
|
||||
mPlayer_INDEX_STANDUP,
|
||||
mPlayer_INDEX_SWING_AXE,
|
||||
mPlayer_INDEX_AIR_AXE,
|
||||
mPlayer_INDEX_REFLECT_AXE,
|
||||
mPlayer_INDEX_BROKEN_AXE,
|
||||
mPlayer_INDEX_SLIP_NET,
|
||||
mPlayer_INDEX_READY_NET,
|
||||
mPlayer_INDEX_READY_WALK_NET,
|
||||
mPlayer_INDEX_SWING_NET,
|
||||
mPlayer_INDEX_PULL_NET,
|
||||
mPlayer_INDEX_STOP_NET,
|
||||
mPlayer_INDEX_NOTICE_NET,
|
||||
mPlayer_INDEX_PUTAWAY_NET,
|
||||
mPlayer_INDEX_READY_ROD,
|
||||
mPlayer_INDEX_CAST_ROD,
|
||||
mPlayer_INDEX_AIR_ROD,
|
||||
mPlayer_INDEX_RELAX_ROD,
|
||||
mPlayer_INDEX_COLLECT_ROD,
|
||||
mPlayer_INDEX_VIB_ROD,
|
||||
mPlayer_INDEX_FLY_ROD,
|
||||
mPlayer_INDEX_NOTICE_ROD,
|
||||
mPlayer_INDEX_PUTAWAY_ROD,
|
||||
mPlayer_INDEX_DIG_SCOOP,
|
||||
mPlayer_INDEX_FILL_SCOOP,
|
||||
mPlayer_INDEX_REFLECT_SCOOP,
|
||||
mPlayer_INDEX_AIR_SCOOP,
|
||||
mPlayer_INDEX_GET_SCOOP,
|
||||
mPlayer_INDEX_PUTAWAY_SCOOP,
|
||||
mPlayer_INDEX_PUTIN_SCOOP,
|
||||
mPlayer_INDEX_TALK,
|
||||
mPlayer_INDEX_RECIEVE_WAIT,
|
||||
mPlayer_INDEX_RECIEVE_STRETCH,
|
||||
mPlayer_INDEX_RECIEVE,
|
||||
mPlayer_INDEX_RECIEVE_PUTAWAY,
|
||||
mPlayer_INDEX_GIVE,
|
||||
mPlayer_INDEX_GIVE_WAIT,
|
||||
mPlayer_INDEX_TAKEOUT_ITEM,
|
||||
mPlayer_INDEX_PUTIN_ITEM,
|
||||
mPlayer_INDEX_DEMO_WAIT,
|
||||
mPlayer_INDEX_DEMO_WALK,
|
||||
mPlayer_INDEX_DEMO_GETON_TRAIN,
|
||||
mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT,
|
||||
mPlayer_INDEX_DEMO_GETOFF_TRAIN,
|
||||
mPlayer_INDEX_DEMO_STANDING_TRAIN,
|
||||
mPlayer_INDEX_DEMO_WADE,
|
||||
mPlayer_INDEX_HIDE,
|
||||
mPlayer_INDEX_GROUNDHOG,
|
||||
mPlayer_INDEX_RELEASE_CREATURE,
|
||||
mPlayer_INDEX_WASH_CAR,
|
||||
mPlayer_INDEX_TIRED,
|
||||
mPlayer_INDEX_ROTATE_OCTAGON,
|
||||
mPlayer_INDEX_THROW_MONEY,
|
||||
mPlayer_INDEX_PRAY,
|
||||
mPlayer_INDEX_SHAKE_TREE,
|
||||
mPlayer_INDEX_MAIL_JUMP,
|
||||
mPlayer_INDEX_MAIL_LAND,
|
||||
mPlayer_INDEX_READY_PITFALL,
|
||||
mPlayer_INDEX_FALL_PITFALL,
|
||||
mPlayer_INDEX_STRUGGLE_PITFALL,
|
||||
mPlayer_INDEX_CLIMBUP_PITFALL,
|
||||
mPlayer_INDEX_STUNG_BEE,
|
||||
mPlayer_INDEX_NOTICE_BEE,
|
||||
mPlayer_INDEX_REMOVE_GRASS,
|
||||
mPlayer_INDEX_SHOCK,
|
||||
mPlayer_INDEX_KNOCK_DOOR,
|
||||
mPlayer_INDEX_CHANGE_CLOTH,
|
||||
mPlayer_INDEX_PUSH_SNOWBALL,
|
||||
mPlayer_INDEX_ROTATE_UMBRELLA,
|
||||
mPlayer_INDEX_WADE_SNOWBALL,
|
||||
mPlayer_INDEX_COMPLETE_PAYMENT,
|
||||
mPlayer_INDEX_FAIL_EMU,
|
||||
mPlayer_INDEX_STUNG_MOSQUITO,
|
||||
mPlayer_INDEX_NOTICE_MOSQUITO,
|
||||
mPlayer_INDEX_SWING_FAN,
|
||||
mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE,
|
||||
mPlayer_INDEX_RADIO_EXERCISE,
|
||||
mPlayer_INDEX_DEMO_GETON_BOAT,
|
||||
mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN,
|
||||
mPlayer_INDEX_DEMO_GETON_BOAT_WAIT,
|
||||
mPlayer_INDEX_DEMO_GETON_BOAT_WADE,
|
||||
mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP,
|
||||
mPlayer_INDEX_DEMO_GETOFF_BOAT,
|
||||
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM,
|
||||
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2,
|
||||
mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT
|
||||
};
|
||||
|
||||
/* sizeof(struct player_actor_s) == 0x13A8 */
|
||||
struct player_actor_s {
|
||||
/* 0x0000 */ ACTOR actor_class;
|
||||
@@ -76,7 +200,11 @@ struct player_actor_s {
|
||||
/* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8);
|
||||
/* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*);
|
||||
/* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*);
|
||||
/* 0x131C */ u8 tmp131C[0x13A8 - 0x131C];
|
||||
/* 0x131C */ u8 tmp131C[0x138C - 0x131C];
|
||||
/* 0x138C */ int a_btn_pressed;
|
||||
/* 0x1390 */ int a_btn_triggers_submenu;
|
||||
/* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */
|
||||
/* 0x1396 */ u8 _1396[0x13A8 - 0x1396];
|
||||
/* TODO: finish */
|
||||
};
|
||||
|
||||
|
||||
@@ -42,6 +42,9 @@ extern int mPlib_check_request_main_outdoor_priority(GAME* game);
|
||||
extern int mPlib_check_request_main_talk_type1_priority(GAME* game);
|
||||
extern int mPlib_check_request_main_speak_type1_priority(GAME* game);
|
||||
extern int mPlib_Check_able_force_speak_label(GAME* game);
|
||||
extern int mPlib_able_submenu_type1(GAME* game);
|
||||
extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* force_speak_label);
|
||||
extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx);
|
||||
|
||||
extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play);
|
||||
extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx);
|
||||
|
||||
+44
-11
@@ -14,6 +14,10 @@ extern "C" {
|
||||
|
||||
typedef struct submenu_s Submenu;
|
||||
|
||||
#define mSM_MAP_BUTTON BUTTON_X
|
||||
#define mSM_INV_BUTTON_0 BUTTON_START
|
||||
#define mSM_INV_BUTTON_1 BUTTON_Y
|
||||
|
||||
enum {
|
||||
mSM_PROCESS_WAIT,
|
||||
mSM_PROCESS_PREWAIT,
|
||||
@@ -24,6 +28,13 @@ enum {
|
||||
mSM_PROCESS_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSM_DLF_SUBMENU_OVL,
|
||||
mSM_DLF_PLAYER_ACTOR,
|
||||
|
||||
mSM_DLF_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mSM_MOVE_OUT_RIGHT,
|
||||
mSM_MOVE_IN_RIGHT,
|
||||
@@ -82,6 +93,16 @@ typedef struct submenu_item_s {
|
||||
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;
|
||||
} mSM_dlftbl_c;
|
||||
|
||||
typedef void (*SUBMENU_PROC)(Submenu*);
|
||||
typedef void (*SUBMENU_GAME_PROC)(Submenu*, GAME*);
|
||||
|
||||
@@ -119,19 +140,31 @@ struct submenu_s {
|
||||
/* 0x17C */ Submenu_Item_c items[mPr_POCKETS_SLOT_COUNT]; /* item buffer, entries are only set when an item is selected by the player */
|
||||
};
|
||||
|
||||
extern void mSM_open_submenu(Submenu* submenu, int menu_type, int arg0, int arg1);
|
||||
extern void load_player(Submenu* submenu);
|
||||
extern void* mSM_ovlptr_dllcnv(void* vram, Submenu* submenu, int);
|
||||
extern void mSM_submenu_dt(Submenu*);
|
||||
extern void mSM_submenu_ovlptr_cleanup(Submenu*);
|
||||
extern void mSM_submenu_ovlptr_init(GAME_PLAY*);
|
||||
extern void mSM_submenu_ct(Submenu*);
|
||||
extern void mSM_submenu_ctrl(GAME_PLAY*);
|
||||
extern void mSM_submenu_move(Submenu*);
|
||||
extern void mSM_submenu_draw(Submenu*, GAME_PLAY*);
|
||||
extern int mSM_CHECK_ALL_FISH_GET();
|
||||
extern int mSM_COLLECT_INSECT_GET(int idx);
|
||||
extern void mSM_COLLECT_INSECT_SET(int idx);
|
||||
extern int mSM_CHECK_ALL_INSECT_GET();
|
||||
extern int mSM_CHECK_LAST_INSECT_GET(int idx);
|
||||
extern int mSM_COLLECT_FISH_GET(int idx);
|
||||
extern void mSM_COLLECT_FISH_SET(int idx);
|
||||
extern int mSM_CHECK_ALL_FISH_GET();
|
||||
extern int mSM_CHECK_LAST_FISH_GET(int idx);
|
||||
extern int SubmenuArea_IsPlayer();
|
||||
extern void* mSM_ovlptr_dllcnv(void* proc, Submenu* submenu, int dlf_idx);
|
||||
extern void mSM_submenu_ovlptr_init(GAME_PLAY* play);
|
||||
extern void mSM_submenu_ovlptr_cleanup(Submenu* submenu);
|
||||
extern void load_player(Submenu* submenu);
|
||||
extern void mSM_submenu_ct(Submenu* submenu);
|
||||
extern void mSM_submenu_dt(Submenu* submenu);
|
||||
extern void mSM_open_submenu(Submenu* submenu, int type, int arg0, int arg1);
|
||||
extern void mSM_open_submenu_new(Submenu* submenu, int type, int arg0, int arg1, void* arg2);
|
||||
extern void mSM_open_submenu_new2(Submenu* submenu, int type, int arg0, int arg1, void* arg2, int arg3);
|
||||
extern void mSM_submenu_ctrl(GAME_PLAY* play);
|
||||
extern void mSM_submenu_move(Submenu* submenu);
|
||||
extern void mSM_submenu_draw(Submenu* submenu, GAME* game);
|
||||
extern int mSM_check_open_inventory_itemlist(int type, int param_2);
|
||||
extern void mSM_Object_Exchange_keep_new_Menu(GAME_PLAY* play);
|
||||
extern u8* mSM_Get_ground_tex_p(GAME_PLAY* play);
|
||||
extern u16* mSM_Get_ground_pallet_p(GAME_PLAY* play);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -145,6 +145,8 @@ struct submenu_overlay_s {
|
||||
/* 0xA00 */ Mtx* projection_matrix;
|
||||
};
|
||||
|
||||
extern void mSM_menu_ovl_init(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user