Implement & link m_submenu.c

This commit is contained in:
Cuyler36
2023-11-19 21:52:12 -05:00
parent 49fc1eba2c
commit d55c971aba
11 changed files with 925 additions and 23 deletions
+1
View File
@@ -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();
+1
View File
@@ -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
}
+2 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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 */
};
+3
View File
@@ -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
View File
@@ -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
}
+2
View File
@@ -145,6 +145,8 @@ struct submenu_overlay_s {
/* 0xA00 */ Mtx* projection_matrix;
};
extern void mSM_menu_ovl_init(Submenu* submenu);
#ifdef __cplusplus
}
#endif