1581 lines
39 KiB
C
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);
|
|
}
|