Files
Pokemon-Firered/src/help_system_812B1E0.c
T
2019-10-13 22:04:51 -04:00

1581 lines
39 KiB
C

#include "global.h"
#include "event_data.h"
#include "event_scripts.h"
#include "field_player_avatar.h"
#include "help_system.h"
#include "item.h"
#include "link.h"
#include "overworld.h"
#include "pokedex.h"
#include "quest_log.h"
#include "save.h"
#include "save_location.h"
#include "sound.h"
#include "strings.h"
#include "constants/items.h"
#include "constants/maps.h"
#include "constants/songs.h"
static EWRAM_DATA u16 sSomeVariable = 0;
static EWRAM_DATA u8 gUnknown_203B0EE = 0;
u8 gUnknown_3005E9C[4];
u16 gSomeVariableBackup;
static bool32 IsCurrentMapInArray(const u16 * mapIdxs);
static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
static bool8 sub_812B754(void);
static bool8 sub_812B780(u8);
static bool8 sub_812BB10(void);
static void sub_812BF5C(void);
static void sub_812BF74(const u8 *);
static void sub_812BF94(struct HelpSystemListMenu * a0);
static void sub_812BF9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
static const u8 *const gUnknown_845B080[] = {
gUnknown_81B2DF8,
gUnknown_81B2E1C,
gUnknown_81B2E2E,
gUnknown_81B2E48,
gUnknown_81B2E58,
gUnknown_81B2E6A
};
static const u8 *const gUnknown_845B098[] = {
gUnknown_81B2E88,
gUnknown_81B2EC8,
gUnknown_81B2F00,
gUnknown_81B2F43,
gUnknown_81B2F74,
gUnknown_81B2FA9
};
static const u8 *const gUnknown_845B0B0[] = {
NULL,
gUnknown_81B3083,
gUnknown_81B30A9,
gUnknown_81B30C1,
gUnknown_81B30DC,
gUnknown_81B30FC,
gUnknown_81B311F,
gUnknown_81B3140,
gUnknown_81B314F,
gUnknown_81B3168,
gUnknown_81B3189,
gUnknown_81B31AE,
gUnknown_81B31D3,
gUnknown_81B31EC,
gUnknown_81B31FF,
gUnknown_81B3215,
gUnknown_81B3226,
gUnknown_81B3243,
gUnknown_81B3261,
gUnknown_81B3276,
gUnknown_81B3290,
gUnknown_81B32B6,
gUnknown_81B32CD,
gUnknown_81B32E3,
gUnknown_81B32F9,
gUnknown_81B330B,
gUnknown_81B332B,
gUnknown_81B3344,
gUnknown_81B335C,
gUnknown_81B3373,
gUnknown_81B338C,
gUnknown_81B33A6,
gUnknown_81B33CA,
gUnknown_81B33EA,
gUnknown_81B3402,
gUnknown_81B3427,
gUnknown_81B3440,
gUnknown_81B3457,
gUnknown_81B346F,
gUnknown_81B3481,
gUnknown_81B349B,
gUnknown_81B34B7,
gUnknown_81B34D6,
gUnknown_81B34F6,
gUnknown_81B3516
};
static const u8 *const gUnknown_845B164[] = {
NULL,
gUnknown_81B3525,
gUnknown_81B35E6,
gUnknown_81B36EB,
gUnknown_81B379A,
gUnknown_81B3849,
gUnknown_81B3876,
gUnknown_81B3972,
gUnknown_81B3A51,
gUnknown_81B3ACC,
gUnknown_81B3BB6,
gUnknown_81B3C99,
gUnknown_81B3D1B,
gUnknown_81B3DE3,
gUnknown_81B3EBC,
gUnknown_81B3F7F,
gUnknown_81B406C,
gUnknown_81B410B,
gUnknown_81B41D7,
gUnknown_81B42B3,
gUnknown_81B439D,
gUnknown_81B4483,
gUnknown_81B457C,
gUnknown_81B4645,
gUnknown_81B470A,
gUnknown_81B47F0,
gUnknown_81B48C6,
gUnknown_81B497A,
gUnknown_81B4A72,
gUnknown_81B4B65,
gUnknown_81B4C54,
gUnknown_81B4D26,
gUnknown_81B4E0B,
gUnknown_81B4ED8,
gUnknown_81B4FB2,
gUnknown_81B4FFD,
gUnknown_81B50FF,
gUnknown_81B51B1,
gUnknown_81B5272,
gUnknown_81B5325,
gUnknown_81B5382,
gUnknown_81B547C,
gUnknown_81B54E1,
gUnknown_81B5589,
gUnknown_81B55F4
};
static const u8 *const gUnknown_845B218[] = {
NULL,
gUnknown_81B56E3,
gUnknown_81B56F4,
gUnknown_81B5705,
gUnknown_81B5717,
gUnknown_81B5728,
gUnknown_81B5737,
gUnknown_81B5744,
gUnknown_81B5754,
gUnknown_81B5767,
gUnknown_81B577B,
gUnknown_81B5787,
gUnknown_81B5795,
gUnknown_81B57A5,
gUnknown_81B57B8,
gUnknown_81B57CF,
gUnknown_81B57DE,
gUnknown_81B57EE,
gUnknown_81B580D,
gUnknown_81B5824,
gUnknown_81B5834,
gUnknown_81B583F,
gUnknown_81B5850,
gUnknown_81B5863,
gUnknown_81B5875,
gUnknown_81B5884,
gUnknown_81B5893,
gUnknown_81B58A4,
gUnknown_81B58BC,
gUnknown_81B58D3,
gUnknown_81B58E5,
gUnknown_81B58FD,
gUnknown_81B590E,
gUnknown_81B591D,
gUnknown_81B592E,
gUnknown_81B593E,
gUnknown_81B5950,
gUnknown_81B595D,
gUnknown_81B5974,
gUnknown_81B5989,
gUnknown_81B59A7,
gUnknown_81B59BF,
gUnknown_81B59D6,
gUnknown_81B59E8,
gUnknown_81B59F5,
gUnknown_81B5A0D,
gUnknown_81B5A1B,
gUnknown_81B5A29,
gUnknown_81B5A37
};
static const u8 *const gUnknown_845B2DC[] = {
NULL,
gUnknown_81B5A4D,
gUnknown_81B5B0C,
gUnknown_81B5B7D,
gUnknown_81B5C13,
gUnknown_81B5CDF,
gUnknown_81B5D87,
gUnknown_81B5E41,
gUnknown_81B5F10,
gUnknown_81B5FA6,
gUnknown_81B606C,
gUnknown_81B6140,
gUnknown_81B6203,
gUnknown_81B62E4,
gUnknown_81B6397,
gUnknown_81B6478,
gUnknown_81B6525,
gUnknown_81B65E7,
gUnknown_81B66BA,
gUnknown_81B678E,
gUnknown_81B6883,
gUnknown_81B68CD,
gUnknown_81B69B9,
gUnknown_81B6A9A,
gUnknown_81B6B6E,
gUnknown_81B6C4F,
gUnknown_81B6D4A,
gUnknown_81B6E02,
gUnknown_81B6EC1,
gUnknown_81B6FA8,
gUnknown_81B7075,
gUnknown_81B7108,
gUnknown_81B71EA,
gUnknown_81B723B,
gUnknown_81B7319,
gUnknown_81B73E8,
gUnknown_81B747E,
gUnknown_81B752C,
gUnknown_81B7611,
gUnknown_81B7692,
gUnknown_81B771E,
gUnknown_81B77DD,
gUnknown_81B7884,
gUnknown_81B7931,
gUnknown_81B79CB,
gUnknown_81B7A60,
gUnknown_81B7AEE,
gUnknown_81B7BBE,
gUnknown_81B7C57
};
static const u8 *const gUnknown_845B3A0[] = {
NULL,
gUnknown_81B7CC1,
gUnknown_81B7CC4,
gUnknown_81B7CD9,
gUnknown_81B7CDF,
gUnknown_81B7CE6,
gUnknown_81B7CEE,
gUnknown_81B7CF6,
gUnknown_81B7CFE,
gUnknown_81B7D04,
gUnknown_81B7D12,
gUnknown_81B7D17,
gUnknown_81B7D1A,
gUnknown_81B7D1F,
gUnknown_81B7D27,
gUnknown_81B7D2D,
gUnknown_81B7D37,
gUnknown_81B7D3E,
gUnknown_81B7D45,
gUnknown_81B7D48,
gUnknown_81B7D4E,
gUnknown_81B7D57,
gUnknown_81B7D5B,
gUnknown_81B7D61,
gUnknown_81B7D6B,
gUnknown_81B7D76,
gUnknown_81B7D7E,
gUnknown_81B7D88,
gUnknown_81B7D8F,
gUnknown_81B7D9A,
gUnknown_81B7DA7,
gUnknown_81B7DB4,
gUnknown_81B7DBA,
gUnknown_81B7DC6,
gUnknown_81B7DCC,
gUnknown_81B7DD3,
gUnknown_81B7DD6,
gUnknown_81B7DD9,
gUnknown_81B7DE1,
gUnknown_81B7DEB,
gUnknown_81B7DFA,
gUnknown_81B7E02,
gUnknown_81B7E09,
gUnknown_81B7E0F
};
static const u8 *const gUnknown_845B450[] = {
NULL,
gUnknown_81B7E16,
gUnknown_81B7F0A,
gUnknown_81B800A,
gUnknown_81B80EC,
gUnknown_81B81C2,
gUnknown_81B8256,
gUnknown_81B8348,
gUnknown_81B83EF,
gUnknown_81B847B,
gUnknown_81B8550,
gUnknown_81B8647,
gUnknown_81B86E2,
gUnknown_81B87B8,
gUnknown_81B8897,
gUnknown_81B8924,
gUnknown_81B8A04,
gUnknown_81B8A84,
gUnknown_81B8B62,
gUnknown_81B8C18,
gUnknown_81B8C94,
gUnknown_81B8D1D,
gUnknown_81B8DD4,
gUnknown_81B8E67,
gUnknown_81B8F4D,
gUnknown_81B901B,
gUnknown_81B90A7,
gUnknown_81B90E8,
gUnknown_81B9170,
gUnknown_81B91C2,
gUnknown_81B91F9,
gUnknown_81B92B8,
gUnknown_81B92ED,
gUnknown_81B93D8,
gUnknown_81B9439,
gUnknown_81B9497,
gUnknown_81B9560,
gUnknown_81B9656,
gUnknown_81B9749,
gUnknown_81B984F,
gUnknown_81B991C,
gUnknown_81B99C4,
gUnknown_81B9AA2,
gUnknown_81B9B2F
};
static const u8 *const gUnknown_845B500[] = {
NULL,
gUnknown_81B9BB7,
gUnknown_81B9BC7,
gUnknown_81B9BD0,
gUnknown_81B9BE1,
gUnknown_81B9BF5,
gUnknown_81B9C09,
gUnknown_81B9C1D
};
static const u8 *const gUnknown_845B520[] = {
NULL,
gUnknown_81B9C2F,
gUnknown_81B9D04,
gUnknown_81B9DC5,
gUnknown_81B9E75,
gUnknown_81B9F09,
gUnknown_81B9FCE,
gUnknown_81BA027
};
static const u8 *const gUnknown_845B540[] = {
NULL,
gUnknown_81BA0F1,
gUnknown_81BA10D,
gUnknown_81BA121,
gUnknown_81BA138,
gUnknown_81BA14C,
gUnknown_81BA163,
gUnknown_81BA17A,
gUnknown_81BA194,
gUnknown_81BA1AC,
gUnknown_81BA1C7,
gUnknown_81BA1DC,
gUnknown_81BA1F4,
gUnknown_81BA209,
gUnknown_81BA221,
gUnknown_81BA234,
gUnknown_81BA24A,
gUnknown_81BA260,
gUnknown_81BA279,
gUnknown_81BA291,
gUnknown_81BA2AC,
gUnknown_81BA2C2,
gUnknown_81BA2DB,
gUnknown_81BA2F1,
gUnknown_81BA30A,
gUnknown_81BA320,
gUnknown_81BA339,
gUnknown_81BA34E,
gUnknown_81BA366,
gUnknown_81BA37C,
gUnknown_81BA395,
gUnknown_81BA3A9,
gUnknown_81BA3C0,
gUnknown_81BA3D5,
gUnknown_81BA3ED,
gUnknown_81BA400
};
static const u8 *const gUnknown_845B5D0[] = {
NULL,
gUnknown_81BA416,
gUnknown_81BA4E6,
gUnknown_81BA539,
gUnknown_81BA595,
gUnknown_81BA5F2,
gUnknown_81BA66F,
gUnknown_81BA6C9,
gUnknown_81BA71F,
gUnknown_81BA796,
gUnknown_81BA7E9,
gUnknown_81BA862,
gUnknown_81BA8D3,
gUnknown_81BA92A,
gUnknown_81BA98D,
gUnknown_81BA9F1,
gUnknown_81BAA44,
gUnknown_81BAAB6,
gUnknown_81BAB18,
gUnknown_81BAB7A,
gUnknown_81BABCC,
gUnknown_81BAC29,
gUnknown_81BAC89,
gUnknown_81BACC4,
gUnknown_81BAD20,
gUnknown_81BAD60,
gUnknown_81BADA2,
gUnknown_81BADF7,
gUnknown_81BAEA8,
gUnknown_81BAF01,
gUnknown_81BAF6B,
gUnknown_81BAFCA,
gUnknown_81BB02E,
gUnknown_81BB084,
gUnknown_81BB0DF,
gUnknown_81BB156
};
static const u8 gUnknown_845B660[] = {
0x01, 0x02, 0x03, 0xff
};
static const u8 gUnknown_845B664[] = {
0x01, 0x02, 0x03, 0xff
};
static const u8 gUnknown_845B668[] = {
0x13, 0xff
};
static const u8 gUnknown_845B66A[] = {
0x01, 0x02, 0x03, 0xff
};
static const u8 gUnknown_845B66E[] = {
0x01, 0x25, 0xff
};
static const u8 gUnknown_845B671[] = {
0x02, 0x03, 0x04, 0x05, 0x11, 0xff
};
static const u8 gUnknown_845B677[] = {
0x09, 0x01, 0xff
};
static const u8 gUnknown_845B67A[] = {
0x02, 0x03, 0xff
};
static const u8 gUnknown_845B67D[] = {
0x09, 0x0a, 0x0b, 0x11, 0x0c, 0x10, 0xff
};
static const u8 gUnknown_845B684[] = {
0x09, 0x01, 0x04, 0x05, 0x06, 0x07, 0x08, 0x02, 0x0d, 0xff
};
static const u8 gUnknown_845B68E[] = {
0x09, 0x03, 0x0a, 0x0f, 0x12, 0x13, 0x14, 0xff
};
static const u8 gUnknown_845B696[] = {
0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0xff
};
static const u8 gUnknown_845B6A1[] = {
0x16, 0x17, 0x18, 0xff
};
static const u8 gUnknown_845B6A5[] = {
0x0a, 0xff
};
static const u8 gUnknown_845B6A7[] = {
0x11, 0x0e, 0x19, 0x1a, 0x1b, 0xff
};
static const u8 gUnknown_845B6AD[] = {
0x0a, 0xff
};
static const u8 gUnknown_845B6AF[] = {
0x0b, 0xff
};
static const u8 gUnknown_845B6B1[] = {
0x2b, 0x19, 0x1a, 0xff
};
static const u8 gUnknown_845B6B5[] = {
0x0c, 0xff
};
static const u8 gUnknown_845B6B7[] = {
0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0xff
};
static const u8 gUnknown_845B6BF[] = {
0x02, 0x03, 0x04, 0xff
};
static const u8 gUnknown_845B6C3[] = {
0x01, 0x02, 0x03, 0x07, 0xff
};
static const u8 gUnknown_845B6C8[] = {
0x02, 0x04, 0x05, 0x09, 0x25, 0xff
};
static const u8 gUnknown_845B6CE[] = {
0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B6E2[] = {
0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
};
static const u8 gUnknown_845B6E9[] = {
0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
};
static const u8 gUnknown_845B6F2[] = {
0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0x14, 0xff
};
static const u8 gUnknown_845B707[] = {
0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
};
static const u8 gUnknown_845B70E[] = {
0x03, 0x07, 0x04, 0x05, 0x06, 0xff
};
static const u8 gUnknown_845B714[] = {
0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
};
static const u8 gUnknown_845B71D[] = {
0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B731[] = {
0x09, 0x01, 0x02, 0x03, 0x0a, 0x0c, 0x0e, 0x16, 0x17, 0x18, 0x15, 0xff
};
static const u8 gUnknown_845B73D[] = {
0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
};
static const u8 gUnknown_845B744[] = {
0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B758[] = {
0x09, 0x01, 0x02, 0x03, 0x0a, 0x15, 0xff
};
static const u8 gUnknown_845B75F[] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
};
static const u8 gUnknown_845B783[] = {
0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
};
static const u8 gUnknown_845B7A7[] = {
0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B7BB[] = {
0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
};
static const u8 gUnknown_845B7C4[] = {
0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
};
static const u8 gUnknown_845B7E8[] = {
0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B7F1[] = {
0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0x28, 0xff
};
static const u8 gUnknown_845B7FB[] = {
0x0a, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
};
static const u8 gUnknown_845B81A[] = {
0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B823[] = {
0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
};
static const u8 gUnknown_845B82C[] = {
0x07, 0x27, 0x08, 0x2c, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
};
static const u8 gUnknown_845B83E[] = {
0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
};
static const u8 gUnknown_845B847[] = {
0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
};
static const u8 gUnknown_845B850[] = {
0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x15, 0x17, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
};
static const u8 gUnknown_845B85D[] = {
0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x09, 0x2b, 0xff
};
static const u8 gUnknown_845B866[] = {
0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
};
static const u8 gUnknown_845B878[] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
};
static const u8 gUnknown_845B89C[] = {
0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
};
static const u8 gUnknown_845B8A7[] = {
0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
};
static const u8 gUnknown_845B8AF[] = {
0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
};
static const u8 gUnknown_845B8C1[] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
};
static const u8 gUnknown_845B8E5[] = {
0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
};
static const u8 gUnknown_845B8F0[] = {
0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
};
static const u8 gUnknown_845B8F8[] = {
0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
};
static const u8 gUnknown_845B90A[] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
};
static const u8 gUnknown_845B92E[] = {
0x29, 0x2a, 0x2b, 0xff
};
static const u8 gUnknown_845B932[] = {
0x2d, 0x2e, 0x2f, 0x2b, 0xff
};
static const u8 gUnknown_845B937[] = {
0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0xff
};
static const u8 gUnknown_845B947[] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
};
static const u8 gUnknown_845B96B[] = {
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
};
static const u8 gUnknown_845B978[] = {
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
};
static const u8 gUnknown_845B985[] = {
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
};
static const u8 gUnknown_845B992[] = {
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
};
static const u8 gUnknown_845B99F[] = {
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
};
static const u8 gUnknown_845B9AC[] = {
0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
};
static const u8 gUnknown_845B9B2[] = {
0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
};
static const u8 gUnknown_845B9B8[] = {
0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
};
static const u8 gUnknown_845B9BE[] = {
0x09, 0x01, 0x02, 0x03, 0x23, 0x25, 0x24, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x27, 0x15, 0x26, 0x16, 0x17, 0x18, 0x1a, 0x0e, 0x1b, 0xff
};
static const u8 *const gUnknown_845B9E0[] = {
NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, gUnknown_845B660, NULL,
NULL, NULL, NULL, gUnknown_845B664, NULL,
NULL, gUnknown_845B668, NULL, gUnknown_845B66A, NULL,
NULL, gUnknown_845B66E, NULL, NULL, NULL,
NULL, gUnknown_845B671, gUnknown_845B677, NULL, NULL,
NULL, gUnknown_845B67A, gUnknown_845B67D, NULL, NULL,
NULL, NULL, gUnknown_845B684, NULL, NULL,
NULL, NULL, gUnknown_845B68E, NULL, NULL,
NULL, gUnknown_845B696, gUnknown_845B6A1, NULL, NULL,
NULL, gUnknown_845B6A5, gUnknown_845B6A7, NULL, NULL,
NULL, gUnknown_845B6AD, NULL, NULL, NULL,
NULL, gUnknown_845B6AF, gUnknown_845B6B1, NULL, NULL,
NULL, gUnknown_845B6B5, gUnknown_845B6B7, NULL, NULL,
gUnknown_845B6BF, NULL, NULL, gUnknown_845B6C3, NULL,
gUnknown_845B6C8, gUnknown_845B6CE, gUnknown_845B6E2, NULL, NULL,
gUnknown_845B6E9, gUnknown_845B6F2, gUnknown_845B707, gUnknown_845B70E, NULL,
gUnknown_845B714, gUnknown_845B71D, gUnknown_845B731, NULL, NULL,
gUnknown_845B73D, gUnknown_845B744, gUnknown_845B758, NULL, gUnknown_845B75F,
gUnknown_845B783, gUnknown_845B7A7, gUnknown_845B7BB, NULL, NULL,
gUnknown_845B7C4, gUnknown_845B7E8, gUnknown_845B7F1, NULL, NULL,
gUnknown_845B7FB, gUnknown_845B81A, gUnknown_845B823, NULL, NULL,
gUnknown_845B82C, gUnknown_845B83E, gUnknown_845B847, NULL, NULL,
gUnknown_845B850, gUnknown_845B85D, gUnknown_845B866, NULL, gUnknown_845B878,
gUnknown_845B89C, gUnknown_845B8A7, gUnknown_845B8AF, NULL, gUnknown_845B8C1,
gUnknown_845B8E5, gUnknown_845B8F0, gUnknown_845B8F8, NULL, gUnknown_845B90A,
gUnknown_845B92E, gUnknown_845B932, gUnknown_845B937, NULL, gUnknown_845B947,
NULL, gUnknown_845B96B, NULL, NULL, NULL,
NULL, gUnknown_845B978, NULL, NULL, NULL,
NULL, gUnknown_845B985, NULL, NULL, NULL,
NULL, gUnknown_845B992, NULL, NULL, NULL,
NULL, gUnknown_845B99F, NULL, NULL, NULL,
NULL, gUnknown_845B9AC, NULL, NULL, NULL,
NULL, gUnknown_845B9B2, NULL, NULL, NULL,
NULL, gUnknown_845B9B8, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL
};
static const u16 unref_845BCB0[] = INCBIN_U16("graphics/help_system/unk_845BCB0.bin");
static const u8 gUnknown_845C4B0[] = {
3, 0, 1, 2, 4, 5
};
static const u8 gUnknown_845C4B6[][6] = {
{0, 0, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 1},
{0, 0, 0, 1, 0, 1},
{0, 1, 0, 1, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{0, 0, 1, 0, 0, 1},
{0, 0, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1},
{1, 0, 0, 1, 0, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 1, 0, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 1, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0}
};
static const u16 sMartMaps[] = {
MAP_VIRIDIAN_CITY_MART,
MAP_PEWTER_CITY_MART,
MAP_CERULEAN_CITY_MART,
MAP_LAVENDER_TOWN_MART,
MAP_VERMILION_CITY_MART,
MAP_CELADON_CITY_DEPARTMENT_STORE_1F,
MAP_CELADON_CITY_DEPARTMENT_STORE_2F,
MAP_CELADON_CITY_DEPARTMENT_STORE_3F,
MAP_CELADON_CITY_DEPARTMENT_STORE_4F,
MAP_CELADON_CITY_DEPARTMENT_STORE_5F,
MAP_CELADON_CITY_DEPARTMENT_STORE_ROOF,
MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR,
MAP_FUCHSIA_CITY_MART,
MAP_CINNABAR_ISLAND_MART,
MAP_SAFFRON_CITY_MART,
MAP_THREE_ISLAND_MART,
MAP_FOUR_ISLAND_MART,
MAP_SEVEN_ISLAND_MART,
MAP_SIX_ISLAND_MART,
MAP_UNDEFINED
};
static const u16 sGymMaps[] = {
MAP_PEWTER_CITY_GYM,
MAP_CERULEAN_CITY_GYM,
MAP_VERMILION_CITY_GYM,
MAP_CELADON_CITY_GYM,
MAP_FUCHSIA_CITY_GYM,
MAP_SAFFRON_CITY_GYM,
MAP_CINNABAR_ISLAND_GYM,
MAP_VIRIDIAN_CITY_GYM,
MAP_UNDEFINED
};
static const u8 sDungeonMaps[][3] = {
{ MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 },
{ MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 },
{ MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 },
{ MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), 3 },
{ MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 5 },
{ MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), 3 },
{ MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), 3 },
{ MAP_GROUP(MT_EMBER_RUBY_PATH_B4F), MAP_NUM(MT_EMBER_RUBY_PATH_B4F), 1 },
{ MAP_GROUP(MT_EMBER_SUMMIT_PATH_1F), MAP_NUM(MT_EMBER_SUMMIT_PATH_1F), 3 },
{ MAP_GROUP(MT_EMBER_RUBY_PATH_B5F), MAP_NUM(MT_EMBER_RUBY_PATH_B5F), 7 },
{ MAP_GROUP(THREE_ISLAND_BERRY_FOREST), MAP_NUM(THREE_ISLAND_BERRY_FOREST), 1 },
{ MAP_GROUP(SIX_ISLAND_PATTERN_BUSH), MAP_NUM(SIX_ISLAND_PATTERN_BUSH), 1 },
{ MAP_GROUP(FIVE_ISLAND_LOST_CAVE_ENTRANCE), MAP_NUM(FIVE_ISLAND_LOST_CAVE_ENTRANCE), 15 },
{ MAP_GROUP(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), MAP_NUM(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), 4 },
{ MAP_GROUP(SIX_ISLAND_ALTERING_CAVE), MAP_NUM(SIX_ISLAND_ALTERING_CAVE), 1 },
{ MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 }
};
void HelpSystem_SetSomeVariable(u8 a0)
{
sSomeVariable = a0;
}
void HelpSystem_SetSomeVariable2(u8 a0)
{
switch (sSomeVariable)
{
case 23:
case 24:
case 25:
case 26:
if (a0 == 9 || a0 == 5 || a0 == 6 || a0 == 7 || a0 == 8)
break;
// fallthrough
default:
sSomeVariable = a0;
break;
}
}
void Special_SetSomeVariable(void)
{
sSomeVariable = gSpecialVar_0x8004;
}
void HelpSystem_BackupSomeVariable(void)
{
gSomeVariableBackup = sSomeVariable;
}
void HelpSystem_RestoreSomeVariable(void)
{
sSomeVariable = gSomeVariableBackup;
}
static bool32 IsInMartMap(void)
{
return IsCurrentMapInArray(sMartMaps);
}
static bool32 IsInGymMap(void)
{
return IsCurrentMapInArray(sGymMaps);
}
static bool32 IsCurrentMapInArray(const u16 * mapIdxs)
{
u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum;
s32 i;
for (i = 0; mapIdxs[i] != MAP_UNDEFINED; i++)
{
if (mapIdxs[i] == mapIdx)
return TRUE;
}
return FALSE;
}
static bool8 IsInDungeonMap(void)
{
u8 i, j;
for (i = 0; i < 16; i++)
{
for (j = 0; j < sDungeonMaps[i][2]; j++)
{
if (
sDungeonMaps[i][0] == gSaveBlock1Ptr->location.mapGroup
&& sDungeonMaps[i][1] + j == gSaveBlock1Ptr->location.mapNum
&& (i != 15 /* TANOBY */ || FlagGet(FLAG_0x849) == TRUE)
)
return TRUE;
}
}
return FALSE;
}
void sub_812B35C(void)
{
sub_812B4B8();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
HelpSystem_SetSomeVariable2(0x16);
else if (IsInDungeonMap())
HelpSystem_SetSomeVariable2(0x15);
else if (is_light_level_8_or_9(gMapHeader.mapType))
{
if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F)))
HelpSystem_SetSomeVariable2(0x0E);
else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB))
HelpSystem_SetSomeVariable2(0x0F);
else if (IsCurMapPokeCenter() == TRUE)
HelpSystem_SetSomeVariable2(0x10);
else if (IsInMartMap() == TRUE)
HelpSystem_SetSomeVariable2(0x11);
else if (IsInGymMap() == TRUE)
HelpSystem_SetSomeVariable2(0x12);
else
HelpSystem_SetSomeVariable2(0x13);
}
else
HelpSystem_SetSomeVariable2(0x14);
}
bool8 sub_812B40C(void)
{
if (gUnknown_203B0EE == 1)
return FALSE;
if (gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID && FlagGet(FLAG_0x83C))
return FALSE;
FlagSet(FLAG_0x83C);
gUnknown_203B0EE = 1;
return TRUE;
}
bool8 sub_812B45C(void)
{
if (gReceivedRemoteLinkPlayers == 1)
return FALSE;
return TRUE;
}
void HelpSystem_Disable(void)
{
gHelpSystemEnabled = FALSE;
}
void HelpSystem_Enable(void)
{
if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3)
{
gHelpSystemEnabled = TRUE;
sub_812B4B8();
}
}
void sub_812B4AC(void)
{
gUnknown_203F175 = 1;
}
void sub_812B4B8(void)
{
gUnknown_203F175 = 0;
}
static void sub_812B4C4(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
a0->sub.items = a1;
a0->sub.totalItems = 1;
a0->sub.maxShowed = 1;
a0->sub.left = 1;
a0->sub.top = 4;
}
static void sub_812B4D8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
sub_812B4C4(a0, a1);
sub_812B520(a0, a1);
sub_812BF74(gUnknown_841DFAC);
HelpSystem_InitListMenuController(a0, 0, gUnknown_3005E9C[2]);
sub_812BF9C(a0, a1);
sub_813BDA4(1);
sub_813BD5C(1);
}
static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
u8 i;
u8 r4 = 0;
for (i = 0; i < 6; i++)
{
if (gUnknown_845C4B6[sSomeVariable][gUnknown_845C4B0[i]] == 1)
{
a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]];
a1[r4].index = gUnknown_845C4B0[i];
r4++;
}
}
a1[r4 - 1].index = -2;
a0->sub.totalItems = r4;
a0->sub.maxShowed = r4;
a0->sub.left = 0;
}
static void sub_812B5A8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
sub_813BDE8(0);
sub_813BFC0(0);
sub_813BE78(1);
sub_812B4C4(a0, a1);
sub_812B614(a0, a1);
sub_812BF74(gUnknown_841DFC9);
HelpSystem_InitListMenuController(a0, a0->field_0C, a0->field_0D);
HelpSystem_PrintTextAt(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
sub_813BDA4(1);
sub_813BD5C(1);
}
static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
u8 r6 = 0;
const u8 * r3 = gUnknown_845B9E0[sSomeVariable * 5 + gUnknown_3005E9C[1]];
u8 i;
for (i = 0; r3[i] != 0xFF; i++)
{
if (sub_812B780(r3[i]) == TRUE)
{
if (gUnknown_3005E9C[1] == 0)
a1[r6].label = gUnknown_845B0B0[r3[i]];
else if (gUnknown_3005E9C[1] == 1)
a1[r6].label = gUnknown_845B218[r3[i]];
else if (gUnknown_3005E9C[1] == 2)
a1[r6].label = gUnknown_845B3A0[r3[i]];
else if (gUnknown_3005E9C[1] == 3)
a1[r6].label = gUnknown_845B500[r3[i]];
else
a1[r6].label = gUnknown_845B540[r3[i]];
a1[r6].index = r3[i];
r6++;
}
}
if (sub_812B754() == TRUE)
{
for (i = 0, r3 = gUnknown_845B9BE; r3[i] != 0xFF; i++)
{
a1[r6].label = gUnknown_845B3A0[r3[i]];
a1[r6].index = r3[i];
r6++;
}
}
a1[r6].label = gUnknown_81B2E6F;
a1[r6].index = -2;
r6++;
a0->sub.totalItems = r6;
a0->sub.maxShowed = 7;
a0->sub.left = 0;
a0->sub.top = 21;
}
static bool8 sub_812B754(void)
{
if (FlagGet(FLAG_0x4B0) == TRUE && gUnknown_3005E9C[1] == 2)
return TRUE;
return FALSE;
}
static bool8 sub_812B780(u8 id)
{
u8 i = 0;
if (gUnknown_3005E9C[1] == 0)
{
switch (id)
{
case 1:
case 2:
case 3:
case 5:
case 8:
case 34:
case 38:
case 41:
case 42:
case 43:
return TRUE;
case 4:
return FlagGet(FLAG_0x2CF);
case 6:
case 10:
case 16:
case 19:
case 22:
case 35:
case 36:
return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY);
case 7:
return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY);
case 11:
case 24:
return FlagGet(FLAG_0x8A4);
case 9:
case 13:
case 14:
case 15:
case 17:
case 18:
case 20:
case 26:
case 29:
case 31:
case 37:
return FlagGet(FLAG_0x828);
case 21:
case 23:
return FlagGet(FLAG_0x829);
case 12:
case 25:
case 27:
case 30:
case 32:
case 33:
return FlagGet(FLAG_UNK820);
case 28:
case 40:
return sub_812BB10();
case 39:
return FlagGet(FLAG_0x29B);
case 44:
return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY);
}
return FALSE;
}
if (gUnknown_3005E9C[1] == 1)
{
switch (id)
{
case 06:
case 10:
case 11:
case 12:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 31:
case 36:
case 38:
case 39:
case 40:
case 41:
case 42:
case 45:
case 46:
case 47:
return TRUE;
case 1:
case 30:
case 37:
return FlagGet(FLAG_0x829);
case 14:
return CheckBagHasItem(ITEM_TOWN_MAP, 1);
case 2:
case 3:
case 5:
case 7:
case 8:
case 9:
case 13:
case 32:
case 33:
case 35:
case 43:
case 44:
return FlagGet(FLAG_0x828);
case 4:
case 34:
if (GetKantoPokedexCount(1) > 1)
return TRUE;
return FALSE;
case 15:
return FlagGet(FLAG_UNK820);
case 16:
case 17:
return sub_812BB10();
case 18:
return FlagGet(FLAG_0x271);
case 48:
return FlagGet(FLAG_0x82C);
}
return FALSE;
}
if (gUnknown_3005E9C[1] == 2)
{
if (sub_812B754() == TRUE)
{
for (i = 0; gUnknown_845B9BE[i] != 0xFF; i++)
{
if (gUnknown_845B9BE[i] == id)
return FALSE;
}
}
switch (id)
{
case 14:
case 17:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
case 33:
case 34:
case 35:
case 38:
return TRUE;
case 1:
case 2:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 16:
case 19:
case 20:
case 21:
return FlagGet(FLAG_0x828);
case 36:
case 37:
return sub_812BB10();
case 3:
case 15:
case 18:
case 39:
return FlagGet(FLAG_0x8A4);
}
return TRUE;
}
if (gUnknown_3005E9C[1] == 3)
{
switch (id)
{
case 5:
return FlagGet(FLAG_UNK820);
case 6:
return FlagGet(FLAG_0x821);
}
return TRUE;
}
if (gUnknown_3005E9C[1] == 4)
{
return TRUE;
}
return FALSE;
}
static bool8 sub_812BB10(void)
{
if (FlagGet(FLAG_0x237) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x238) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x239) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x23A) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x23B) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x2EF) == TRUE)
return TRUE;
if (FlagGet(FLAG_0x1F1) == TRUE)
return TRUE;
return FALSE;
}
bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
switch (a0->field_0E)
{
case 8:
return sub_812BC54(a0, a1);
case 9:
return sub_812BC80(a0, a1);
case 10:
return sub_812BCA8(a0, a1);
case 0:
return sub_812BCD0(a0, a1);
case 1:
return sub_812BD2C(a0, a1);
case 2:
return sub_812BD64(a0, a1);
case 3:
return sub_812BD98(a0, a1);
case 4:
return sub_812BE10(a0, a1);
case 5:
return sub_812BEEC(a0, a1);
case 6:
return sub_812BF18(a0, a1);
}
return FALSE;
}
bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
sub_812BF74(gUnknown_841DFA5);
sub_812BF5C();
sub_813BDA4(1);
sub_813BD5C(1);
a0->field_0E = 9;
return TRUE;
}
bool8 sub_812BC80(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
a0->field_0E = 10;
}
return TRUE;
}
bool8 sub_812BCA8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
gUnknown_3005E9C[2] = 0;
sub_812BF94(a0);
sub_812B4D8(a0, a1);
a0->field_0E = 0;
return TRUE;
}
bool8 sub_812BCD0(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
s32 v0 = HelpSystem_GetMenuInput();
switch (v0)
{
case -6:
case -2:
return FALSE;
case -5:
case -4:
sub_812BF9C(a0, a1);
break;
case -3:
case -1:
break;
default:
gUnknown_3005E9C[1] = v0;
a0->field_0E = 1;
break;
}
return TRUE;
}
bool8 sub_812BD2C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
gUnknown_3005E9C[0] = 1;
gUnknown_3005E9C[2] = a0->field_0D;
sub_812BF94(a0);
sub_812B5A8(a0, a1);
sub_813C75C();
HelpSystem_SetInputDelay(2);
a0->field_0E = 3;
return TRUE;
}
bool8 sub_812BD64(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
sub_813C004(0, 0);
sub_813C004(1, 0);
gUnknown_3005E9C[0] = 0;
sub_812B4D8(a0, a1);
a0->field_0E = 0;
return TRUE;
}
bool8 sub_812BD98(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
s32 v0 = HelpSystem_GetMenuInput();
switch (v0)
{
case -6:
return FALSE;
case -2:
a0->field_0E = 2;
break;
case -5:
case -4:
case -3:
case -1:
break;
default:
gUnknown_3005E9C[3] = v0;
a0->field_0E = 4;
break;
}
return TRUE;
}
void sub_812BDEC(void)
{
HelpSystem_PrintTextAt(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
}
bool8 sub_812BE10(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
gUnknown_3005E9C[0] = 2;
sub_813BDA4(0);
HelpSystem_FillPanel1();
sub_812BF74(gUnknown_841DFBE);
sub_813BDE8(1);
sub_813BEE4(1);
if (gUnknown_3005E9C[1] == 0)
{
HelpSystem_PrintTwoStrings(gUnknown_845B0B0[gUnknown_3005E9C[3]], gUnknown_845B164[gUnknown_3005E9C[3]]);
}
else if (gUnknown_3005E9C[1] == 1)
{
HelpSystem_PrintTwoStrings(gUnknown_845B218[gUnknown_3005E9C[3]], gUnknown_845B2DC[gUnknown_3005E9C[3]]);
}
else if (gUnknown_3005E9C[1] == 2)
{
HelpSystem_PrintTwoStrings(gUnknown_845B3A0[gUnknown_3005E9C[3]], gUnknown_845B450[gUnknown_3005E9C[3]]);
}
else if (gUnknown_3005E9C[1] == 3)
{
HelpSystem_PrintTwoStrings(gUnknown_845B500[gUnknown_3005E9C[3]], gUnknown_845B520[gUnknown_3005E9C[3]]);
}
else
{
HelpSystem_PrintTwoStrings(gUnknown_845B540[gUnknown_3005E9C[3]], gUnknown_845B5D0[gUnknown_3005E9C[3]]);
}
sub_813BDA4(1);
sub_813BD5C(1);
a0->field_0E = 6;
return TRUE;
}
bool8 sub_812BEEC(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
gUnknown_3005E9C[0] = 1;
sub_812B5A8(a0, a1);
sub_813C75C();
HelpSystem_SetInputDelay(2);
a0->field_0E = 3;
return TRUE;
}
bool8 sub_812BF18(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
a0->field_0E = 5;
return TRUE;
}
if (JOY_NEW(L_BUTTON | R_BUTTON))
return FALSE;
return TRUE;
}
static void sub_812BF5C(void)
{
HelpSystem_FillPanel1();
HelpSystem_PrintTextAt(gUnknown_81B2FC9, 0, 0);
}
static void sub_812BF74(const u8 * str)
{
HelpSystem_FillPanel2();
HelpSystem_PrintTextRightAlign_Row52(str);
}
u8 sub_812BF88(void)
{
return gUnknown_3005E9C[0];
}
static void sub_812BF94(struct HelpSystemListMenu * a0)
{
a0->field_0C = 0;
a0->field_0D = 0;
}
static void sub_812BF9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
s32 index = a1[a0->field_0C + a0->field_0D].index;
if (index == -2)
HelpSystem_PrintText_813C584(gUnknown_845B098[5]);
else
HelpSystem_PrintText_813C584(gUnknown_845B098[index]);
sub_813BE30(1);
}