1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#ifndef M_SUBMENU_H
#define M_SUBMENU_H
#include "ultra64.h"
#include "m_mail.h"
#include "z64math.h"
#include "libc/stdint.h"
#include "other_types.h"
#include "unk.h"
struct Game_Play;
struct Submenu;
struct struct_8085E9B0;
typedef enum mSMMoveProcIndex {
/* 0 */ MSM_MOVE_PROC_WAIT,
/* 1 */ MSM_MOVE_PROC_PREWAIT,
/* 2 */ MSM_MOVE_PROC_LINKWAIT,
/* 3 */ MSM_MOVE_PROC_PLAY,
/* 4 */ MSM_MOVE_PROC_END,
/* 5 */ MSM_MOVE_PROC_MAX
} mSMMoveProcIndex;
typedef enum InventoryItemList {
/* 0 */ INVENTORY_ITEM_LIST_0,
/* 1 */ INVENTORY_ITEM_LIST_1,
/* 2 */ INVENTORY_ITEM_LIST_ENTRUST,
/* 3 */ INVENTORY_ITEM_LIST_3,
/* 4 */ INVENTORY_ITEM_LIST_4,
/* 5 */ INVENTORY_ITEM_LIST_SELL,
/* 6 */ INVENTORY_ITEM_LIST_GIVE,
/* 7 */ INVENTORY_ITEM_LIST_7,
/* 8 */ INVENTORY_ITEM_LIST_TAKE,
/* 9 */ INVENTORY_ITEM_LIST_FURNITURE,
/* 10 */ INVENTORY_ITEM_LIST_MINIDISK,
/* 11 */ INVENTORY_ITEM_LIST_SHRINE,
/* 12 */ INVENTORY_ITEM_LIST_C,
/* 13 */ INVENTORY_ITEM_LIST_ECHANGE,
/* 14 */ INVENTORY_ITEM_LIST_E,
/* 15 */ INVENTORY_ITEM_LIST_F,
/* 16 */ INVENTORY_ITEM_LIST_MAX
} InventoryItemList;
typedef enum SubmenuProgramId {
/* 0 */ SUBMENU_PROGRAM_0, // inventory, NONE? DEFAULT?
/* 1 */ SUBMENU_PROGRAM_1, // inventory
/* 2 */ SUBMENU_PROGRAM_2,
/* 3 */ SUBMENU_PROGRAM_3,
/* 4 */ SUBMENU_PROGRAM_LEDIT,
/* 5 */ SUBMENU_PROGRAM_MAP,
/* 6 */ SUBMENU_PROGRAM_6,
/* 7 */ SUBMENU_PROGRAM_7,
/* 8 */ SUBMENU_PROGRAM_8,
/* 9 */ SUBMENU_PROGRAM_9,
/* 10 */ SUBMENU_PROGRAM_10,
/* 11 */ SUBMENU_PROGRAM_11,
/* 12 */ SUBMENU_PROGRAM_BOARD,
/* 13 */ SUBMENU_PROGRAM_13,
/* 14 */ SUBMENU_PROGRAM_14,
/* 15 */ SUBMENU_PROGRAM_15,
/* 16 */ SUBMENU_PROGRAM_16,
/* 17 */ SUBMENU_PROGRAM_17,
/* 18 */ SUBMENU_PROGRAM_18,
/* 19 */ SUBMENU_PROGRAM_19,
/* 20 */ SUBMENU_PROGRAM_CATALOG,
/* 21 */ SUBMENU_PROGRAM_MAX
} SubmenuProgramId;
typedef void (*SubmenuMoveFunc)(struct Submenu*);
typedef void (*SubmenuDrawFunc)(struct Submenu*, struct Game_Play*);
typedef struct Submenu {
/* 0x00 */ s32 unk_00;
/* 0x04 */ SubmenuProgramId programId;
/* 0x08 */ SubmenuProgramId unk_08;
/* 0x0C */ mSMMoveProcIndex moveProcIndex;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ void* linkedAllocStart;
/* 0x28 */ void* linkedAllocEnd;
/* 0x2C */ struct struct_8085E9B0* unk_2C;
/* 0x30 */ SubmenuMoveFunc move;
/* 0x34 */ SubmenuDrawFunc draw;
/* 0x38 */ Mail_c mail;
/* 0xDC */ u8 unk_DC;
/* 0xDD */ u8 unk_DD;
/* 0xDE */ u8 unk_DE;
/* 0xDF */ u8 unk_DF;
/* 0xE0 */ u16 unk_E0;
/* 0xE2 */ u8 unk_E2;
/* 0xE3 */ u8 unk_E3;
/* 0xE4 */ xyz_t unk_E4;
} Submenu; // size = 0xF0
s32 SubmenuArea_IsPlayer(void);
void* mSM_ovlptr_dllcnv(void* vram, Submenu* submenu);
void mSM_submenu_ovlptr_init(struct Game_Play* game_play);
void mSM_submenu_ovlptr_cleanup(Submenu* submenu);
void load_player(Submenu* submenu);
void mSM_submenu_ct(Submenu* submenu);
void mSM_submenu_dt(Submenu* submenu);
void mSM_open_submenu(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3);
void mSM_open_submenu_new(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4);
void mSM_open_submenu_new2(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4, s32 arg5);
void mSM_submenu_ctrl(struct Game_Play* game_play);
void mSM_submenu_move(Submenu* submenu);
void mSM_submenu_draw(Submenu* submenu, struct Game_Play* game_play);
u32 mSM_check_open_inventory_itemlist(InventoryItemList itemlist, s32 arg1) ;
// void mSM_Object_Exchange_keep_new();
// void mSM_Object_Exchange_keep_new_MenuTexAndPallet();
void mSM_Object_Exchange_keep_new_Menu(struct Game_Play* play);
// void mSM_Get_ground_tex_p();
// void mSM_Get_ground_pallet_p();
#endif
|