summaryrefslogtreecommitdiff
path: root/include/pokemon_storage_system.h
blob: 2ae0a043e3491dbf85d99698c6d8fa756ce5b230 (plain)
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
#define GUARD_POKEMON_STORAGE_SYSTEM_H

#include "pc_screen_effect.h"
#include "mon_markings.h"

enum {
    PC_TEXT_EXIT_BOX,
    PC_TEXT_WHAT_YOU_DO,
    PC_TEXT_PICK_A_THEME,
    PC_TEXT_PICK_A_WALLPAPER,
    PC_TEXT_IS_SELECTED,
    PC_TEXT_JUMP_TO_WHICH_BOX,
    PC_TEXT_DEPOSIT_IN_WHICH_BOX,
    PC_TEXT_WAS_DEPOSITED,
    PC_TEXT_BOX_IS_FULL,
    PC_TEXT_RELEASE_POKE,
    PC_TEXT_WAS_RELEASED,
    PC_TEXT_BYE_BYE,
    PC_TEXT_MARK_POKE,
    PC_TEXT_LAST_POKE,
    PC_TEXT_PARTY_FULL,
    PC_TEXT_HOLDING_POKE,
    PC_TEXT_WHICH_ONE_WILL_TAKE,
    PC_TEXT_CANT_RELEASE_EGG,
    PC_TEXT_CONTINUE_BOX,
    PC_TEXT_CAME_BACK,
    PC_TEXT_WORRIED,
    PC_TEXT_SURPRISE,
    PC_TEXT_PLEASE_REMOVE_MAIL
};

enum {
    PC_TEXT_FMT_NORMAL,
    PC_TEXT_FMT_MON_NAME,
    PC_TEXT_FMT_UNK_02,
    PC_TEXT_FMT_UNK_03,
    PC_TEXT_FMT_MON_NAME_2,
    PC_TEXT_FMT_UNK_05,
    PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK
};

struct PokemonStorageSystemFunc
{
    u8 (*func)(void);
    s8 unk4;
};

struct StorageAction {
    const u8 *text;
    u8 format;
};

struct StorageText {
    const u8 *text;
    int textId;
};

struct PSS_MenuStringPtrs {
    const u8 *text;
    const u8 *desc;
};

struct UnkStruct_2000028 {
    const u8 *unk_00;
    u8 *unk_04;
    u16 unk_08;
    u16 unk_0a;
    void (*unk_0c)(struct UnkStruct_2000028 *data);
};

struct UnkStruct_2000020 {
    struct UnkStruct_2000028 *unk_00;
    u8 unk_04;
    u8 unk_05;
};

struct UnkPSSStruct_2002370 {
    struct Sprite *unk_0000;
    struct Sprite *unk_0004[4];
    u32 unk_0014[3];
    struct Sprite *unk_0020[2];
    u8 filler_0028[0x214];
    u8 curBox;
    u8 unk_023d;
    u8 unk_023e;
    u16 unk_0240;
    u16 unk_0242;
}; // 0244

struct PokemonStorageSystemData {
    void (*unk_0000)(void);
    u8 unk_0004;
    u8 unk_0005;
    u8 unk_0006;
    u8 unk_0007;
    u16 unk_0008;
    u16 unk_000a;
    struct PCScreenEffectStruct unk_000c;
    struct UnkStruct_2000020 unk_0020;
    struct UnkStruct_2000028 unk_0028[8];
    u8 unk_00a8[0x800];
    u16 unk_08a8;
    u16 unk_08aa;
    u8 unk_08ac;
    u8 unk_08ad;
    u8 unk_08ae;
    u8 unk_08af;
    u8 unk_08b0;
    bool8 unk_08b1;
    s16 unk_08b2;
    u16 unk_08b4;
    u16 unk_08b6;
    u16 unk_08b8;
    bool8 unk_08ba;
    u8 unk_08bb;
    u16 unk_08bc;
    u16 unk_08be;
    u16 unk_08c0;
    u16 unk_08c2;
    u16 unk_08c4;
    u16 unk_08c6;
    u16 unk_08c8;
    u8 unk_08ca[0x400];
    u8 unk_0cca;
    u16 unk_0ccc[0x10];
    u16 unk_0cec;
    u16 unk_0cee;
    struct Sprite *unk_0cf0[2];
    struct Sprite *unk_0cf8[2];
    struct Sprite *unk_0d00[2];
    u32 unk_0d08;
    u8 filler_0d0c[0x50];
    u16 unk_0d5c;
    s16 unk_0d5e;
    s16 unk_0d60;
    u16 unk_0d62[360];
    u8 unk_1032;
    struct Sprite *unk_1034;
    struct Sprite *unk_1038[6]; // party
    struct Sprite *unk_1050[30]; // box
    struct Sprite **unk_10c8;
    struct Sprite **unk_10cc;
    u16 unk_10d0[40];
    u16 unk_1120[40];
    u8 unk_1170;
    u8 unk_1171;
    u16 unk_1172;
    s16 unk_1174;
    s16 unk_1176;
    u16 unk_1178;
    u8 unk_117a;
    s8 unk_117b;
    u8 unk_117c;
    u8 unk_117d;
    u8 filler_117e[2];
    struct StorageText unk_1180[6];
    u8 filler_11b0[8];
    u8 unk_11b8;
    u8 unk_11b9;
    u16 unk_11ba;
    u16 unk_11bc;
    u8 filler_11be;
    struct Sprite *unk_11c0;
    struct Sprite *unk_11c4;
    s32 unk_11c8;
    s32 unk_11cc;
    s32 unk_11d0;
    s32 unk_11d4;
    s16 unk_11d8;
    s16 unk_11da;
    u16 unk_11dc;
    s8 unk_11de;
    s8 unk_11df;
    u8 unk_11e0;
    u8 unk_11e1;
    s8 unk_11e2;
    u8 unk_11e3;
    u8 unk_11e4[4];
    const u8 *unk_11e8;
    u32 unk_11ec;
    u16 unk_11f0;
    u16 unk_11f2;
    u8 filler_11f4[2];
    u8 unk_11f6;
    u8 unk_11f7;
    u8 unk_11f8;
    u8 unk_11f9;
    u8 unk_11fa[0x15];
    u8 unk_120f[0x25];
    u8 unk_1234[0x25];
    u8 unk_1259[0x21];
    u8 unk_127a[0x2a];
    bool8 (*unk_12a4)(void);
    u8 unk_12a8;
    u8 unk_12a9;
    struct Sprite *unk_12ac;
    struct Sprite *unk_12b0[2];
    u16 *unk_12b8;
    struct PokemonMarkMenu unk_12bc;
    struct UnkPSSStruct_2002370 unk_2370;
    struct Pokemon unk_25b4;
    struct Pokemon unk_2618;
    u8 unk_267c;
    u8 unk_267d;
    u8 unk_267e;
    u8 unk_267f;
    s8 unk_2680;
    s8 unk_2681;
    s8 unk_2682;
    s8 unk_2683;
    u16 unk_2684;
    u16 unk_2686[3];
    u8 unk_268c;
    u8 unk_268d;
    u8 unk_268e;
    union {
        struct Pokemon *pokemon;
        struct BoxPokemon *box;
    } unk_2690;
    u8 unk_2694[18];
    u8 unk_26a6[62];
    u8 unk_26e4[0x16];
    u16 unk_26fa;
    u16 *unk_26fc;
    struct Sprite *unk_2700;
    u16 unk_2704[0x10];
    u8 filler_2724[0x60];
    u8 unk_2784[0x800];
    u8 filler_2f84[0x1800];
    u8 unk_4784[0x800];
};

extern u8 gUnknown_02039760[0xC00];
extern struct UnkPSSStruct_2002370 *gUnknown_02038478;
extern struct PokemonStorageSystemData *const gPokemonStorageSystemPtr;
extern u8 *const gUnknown_083B6DB8;

u8 StorageSystemGetPartySize(void);
s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId);
u8 CountAlivePartyMonsExceptOne(u8 toSkip);
u8 CountPokemonInBoxN(u8 boxId);
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3);
void sub_809634C(u8 curBox);
u8 sub_8096368(void);
void sub_809635C(void);
void sub_8096310(void);
void sub_80961A8(void);
void task_intro_29(u8 whichMenu);
void ResetPokemonStorageSystem(void);
void ResetPSSMonIconSprites(void);
void SpawnBoxIconSprites(u8 boxId);
u8 get_preferred_box(void);
void sub_8098BF0(void);
void sub_8098D20(u8 monId);
bool8 sub_80990AC(void);
void sub_8099200(bool8 a0);
void sub_8099310(void);
bool8 sub_8099374(void);
void sub_8099480(void);
void sub_80994A8(s16 a0);
void sub_8099520(u8 a0);
void sub_809954C(void);
void sub_8099584(u8 a0, u8 a1);
void sub_809960C(u8 a0, u8 a1);
void sub_80996B0(u8 a0, u8 a1);
bool8 sub_809971C(void);
void sub_809981C(u8 mode, u8 idx);
bool8 sub_80998D8(void);
void sub_8099920(void);
void sub_8099958(void);
bool8 sub_8099990(void);
struct Sprite *sub_809A9A0(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
void sub_8099BF8(u8 a0);
void sub_8099C70(u8 whichBox);
bool8 sub_8099D34(void);
void sub_8099DCC(u8 a0);
bool8 sub_8099E08(void);
void sub_809A860(bool8 a0);
void sub_809AA24(void);
void sub_809AA98(void);
bool8 sub_809AC00(void);
void sub_809B0C0(u8 a0);
void sub_809B0D4(void);
void sub_809B0E0(void);
u8 sub_809B0F4(void);
void sub_809B068(void);
void sub_809B100(u8 a0);
bool8 sub_809B130(void);
void sub_809B440(void);
bool8 sub_809B62C(u8);
void sub_809B6BC(void);
void sub_809B6DC(void);
bool8 sub_809B734(void);
void sub_809B760(void);
void sub_809B7AC(void);
void sub_809B7D4(void);
s8 sub_809B960(void);
void sub_809BB90(void);
void sub_809BBC0(void);
void sub_809BC18(void);
void sub_809BD14(void);
s16 party_compaction(void);
void sub_809BDD8(u8 markings);
bool8 sub_809BE80(void);
bool8 sub_809BEBC(void);
bool8 sub_809BF20(void);
bool8 sub_809BF48(void);
u8 sub_809CA40(void);
void sub_809CDCC(void);
void sub_809CDEC(u8 a0);
void sub_809CE84(void);
s16 sub_809CF30(void);
void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000028 *a1, u8 a2);
void sub_809CFF0(void);
bool8 sub_809D034(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height);
void sub_809D104(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height);
bool8 sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height);
void ShowPokemonStorageSystem(void);

void debug_sub_80A433C(struct Pokemon *pokemon, void (*func)(void));

#endif // GUARD_POKEMON_STORAGE_SYSTEM_H