diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-29 21:10:54 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-29 21:10:54 -0400 |
commit | e130a00cdf69c58dbff8e98a69559aeb33f87b60 (patch) | |
tree | e128e502a2229f5d934f0436a0eb31dc86350bbb /include | |
parent | ef4c86fbfdd18b78700f61b629907a85579197c0 (diff) | |
parent | d4cc0e161bf103d3d3e01fefa02e867d4a2053c2 (diff) |
Merge branch 'master' into slot_machine
Diffstat (limited to 'include')
103 files changed, 3499 insertions, 503 deletions
diff --git a/include/battle.h b/include/battle.h index c86bc9232..b1284fd6c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -33,39 +33,6 @@ #define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE)) #define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_WILD 0x0004 -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 -#define BATTLE_TYPE_DOME 0x10000 // this is used in pokemon.c, but its clearly not the correct name for FR/LG. TODO: Fix these -#define BATTLE_TYPE_PALACE 0x20000 -#define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_FACTORY 0x80000 -#define BATTLE_TYPE_x100000 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_x4000000 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYORGE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 - #define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 #define TRAINER_OPPONENT_800 0x800 @@ -159,14 +126,14 @@ #define MSG_DISPLAY 0x7 #define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8 -#define MOVE_TARGET_SELECTED 0x0 -#define MOVE_TARGET_DEPENDS 0x1 -#define MOVE_TARGET_USER 0x2 -#define MOVE_TARGET_RANDOM 0x4 -#define MOVE_TARGET_x10 0x10 -#define MOVE_TARGET_BOTH 0x8 -#define MOVE_TARGET_FOES_AND_ALLY 0x20 -#define MOVE_TARGET_OPPONENTS_FIELD 0x40 +#define MOVE_TARGET_SELECTED 0x0 +#define MOVE_TARGET_DEPENDS 0x1 +#define MOVE_TARGET_USER_OR_SELECTED 0x2 +#define MOVE_TARGET_RANDOM 0x4 +#define MOVE_TARGET_BOTH 0x8 +#define MOVE_TARGET_USER 0x10 +#define MOVE_TARGET_FOES_AND_ALLY 0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 // defines for the u8 array gTypeEffectiveness #define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) @@ -983,6 +950,7 @@ extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; extern s32 gBattleMoveDamage; -extern u8 gUnknown_2023E8A; +extern u8 gBattleOutcome; +extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index 1f7a2304d..02050afd9 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_2_H #include "global.h" +#include "sprite.h" void CB2_InitBattle(void); void BattleMainCB2(void); @@ -44,6 +45,7 @@ void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); +void sub_80120C4(struct Sprite *); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 5f8c4419b..3786d4a8c 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,6 +3,8 @@ #include "global.h" +extern u8 sBattler_AI; + void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); diff --git a/include/battle_anim.h b/include/battle_anim.h index 4ea3bdead..5929a318e 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -59,10 +59,13 @@ extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; extern u8 gAnimMoveTurn; -extern u8 gAnimBankAttacker; -extern u8 gAnimBankTarget; +extern u8 gBattleAnimAttacker; +extern u8 gBattleAnimTarget; extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02038440; +extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; +extern u16 gUnknown_2037EEC; +extern s32 gUnknown_2037EE8; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); @@ -77,6 +80,7 @@ s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); +bool8 sub_8072DF0(u8 battlerId); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); @@ -121,4 +125,14 @@ u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId); +// battle_anim_mons.s +void sub_8074DC4(struct Sprite * sprite); +void sub_8074E14(struct Sprite * sprite); +void sub_80754B8(struct Sprite * sprite); +void sub_80758E0(u8 spriteId, u8 b); +void sub_8075980(u8 spriteId); +void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +bool8 sub_8073788(void); +void sub_80759DC(u8 spriteId); + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_util.h b/include/battle_util.h index ed070720d..a062f0743 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -87,5 +87,6 @@ void HandleAction_RunBattleScript(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); void MarkBufferBankForExecution(u8 battlerId); +void sub_80174B8(u8 battlerId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/berry.h b/include/berry.h index 40715868b..c5a132ccb 100644 --- a/include/berry.h +++ b/include/berry.h @@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +const struct Berry * sub_809C8A0(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/berry_pouch.h b/include/berry_pouch.h new file mode 100644 index 000000000..8e652225b --- /dev/null +++ b/include/berry_pouch.h @@ -0,0 +1,12 @@ +#ifndef GUARD_BERRY_POUCH_H +#define GUARD_BERRY_POUCH_H + +#include "task.h" + +void BerryPouch_StartFadeToExitCallback(u8 taskId); +void BerryPouch_SetExitCallback(void (*)(void)); +void InitBerryPouch(u8, void (*)(void), u8); +void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc); +void sub_813E2B8(u8 taskId); + +#endif //GUARD_BERRY_POUCH_H diff --git a/include/berry_powder.h b/include/berry_powder.h new file mode 100644 index 000000000..89582aacc --- /dev/null +++ b/include/berry_powder.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_POWDER_H +#define GUARD_BERRY_POWDER_H + +u32 GetBerryPowder(void); + +#endif //GUARD_BERRY_POWDER_H diff --git a/include/bg.h b/include/bg.h index 003ffc916..40c51167f 100644 --- a/include/bg.h +++ b/include/bg.h @@ -25,6 +25,17 @@ enum BG_CTRL_ATTR_WRAPAROUND = 8, }; +enum AdjustBgMosaicMode +{ + BG_MOSAIC_SET, + BG_MOSAIC_SET_H, + BG_MOSAIC_INC_H, + BG_MOSAIC_DEC_H, + BG_MOSAIC_SET_V, + BG_MOSAIC_INC_V, + BG_MOSAIC_DEC_V, +}; + enum BgTileAllocMode { BG_TILE_FIND_FREE_SPACE, @@ -71,7 +82,7 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op); u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op); u32 GetBgY(u8 bg); void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); -u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); +u8 AdjustBgMosaic(u8 value, u8 mode); void SetBgTilemapBuffer(u8 bg, void *tilemap); void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); diff --git a/include/bike.h b/include/bike.h index 468c48273..68cc5f5c9 100644 --- a/include/bike.h +++ b/include/bike.h @@ -2,5 +2,7 @@ #define GUARD_BIKE_H void sub_80BD620(u32 unkC, u32 unk10); +bool8 sub_80BD540(void); +void StartTransitionToFlipBikeState(u8 flags); #endif //GUARD_BIKE_H diff --git a/include/cereader_tool.h b/include/cereader_tool.h index 05677dc79..f223bdaa5 100644 --- a/include/cereader_tool.h +++ b/include/cereader_tool.h @@ -3,7 +3,45 @@ #include "global.h" -bool32 sub_815D794(u8 *); -bool32 sub_815D6B4(u8 *); +struct TrainerTowerTrainer_004 +{ + /* 0x000 */ u8 unk_000[11]; + /* 0x00B */ u8 unk_00B; + /* 0x00C */ u8 unk_00C; + /* 0x00E */ u16 unk_00E[6]; + /* 0x01A */ u16 unk_01A[6]; + /* 0x026 */ u16 unk_026[6]; + /* 0x032 */ u16 unk_032[6]; + /* 0x040 */ struct BattleTowerPokemon unk_040[PARTY_SIZE]; +}; // size: 328 + +struct TrainerTowerTrainer +{ + /* 0x000 */ u8 unk_000; + /* 0x000 */ u8 unk_001; + /* 0x002 */ u8 unk_002; + /* 0x003 */ u8 unk_003; + /* 0x004 */ struct TrainerTowerTrainer_004 unk_004[3]; + /* 0x3DC */ u32 checksum; +}; + +struct Unk_203F458_Header +{ + u8 unk0; + u8 unk1; + u32 unk4; +}; + +struct TrainerTowerData +{ + u8 count; + u8 id; + u16 dummy; + u32 checksum; + struct TrainerTowerTrainer trainers[8]; +}; + +bool32 ValidateTrainerTowerData(struct TrainerTowerData * a0); +bool32 CEReaderTool_SaveTrainerTower(struct TrainerTowerData * a0); #endif //GUARD_CEREADER_TOOL_H diff --git a/include/config.h b/include/config.h index f094c95bd..491eadf13 100644 --- a/include/config.h +++ b/include/config.h @@ -15,8 +15,6 @@ // since not all baseroms and pointers have been dumped yet and will result in // a broken ROM. -#define ENGLISH - #ifdef ENGLISH #define UNITS_IMPERIAL #else diff --git a/include/constants/battle.h b/include/constants/battle.h index 074c0d0cd..f886f560b 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -59,8 +59,8 @@ #define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 #define BATTLE_TYPE_LEGENDARY 0x2000 #define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 -#define BATTLE_TYPE_DOME 0x10000 +#define BATTLE_TYPE_GHOST 0x8000 +#define BATTLE_TYPE_POKEDUDE 0x10000 #define BATTLE_TYPE_PALACE 0x20000 #define BATTLE_TYPE_ARENA 0x40000 #define BATTLE_TYPE_FACTORY 0x80000 diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 1b59f2f64..b54f01353 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -151,7 +151,7 @@ #define EFFECT_EARTHQUAKE 147 #define EFFECT_FUTURE_SIGHT 148 #define EFFECT_GUST 149 -#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM +#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM #define EFFECT_SOLARBEAM 151 #define EFFECT_THUNDER 152 #define EFFECT_TELEPORT 153 diff --git a/include/constants/fanfares.h b/include/constants/fanfares.h new file mode 100644 index 000000000..21d3af79c --- /dev/null +++ b/include/constants/fanfares.h @@ -0,0 +1,22 @@ +#ifndef GUARD_CONSTANTS_FANFARES_H +#define GUARD_CONSTANTS_FANFARES_H + +enum Fanfares +{ + FANFARE_00, + FANFARE_01, + FANFARE_02, + FANFARE_03, + FANFARE_04, + FANFARE_05, + FANFARE_06, + FANFARE_07, + FANFARE_08, + FANFARE_09, + FANFARE_10, + FANFARE_POKEFLUTE, + FANFARE_KEY_ITEM, + FANFARE_DEX_EVAL +}; + +#endif //GUARD_CONSTANTS_FANFARES_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 8ecac9769..de9a98b43 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1,6 +1,11 @@ #ifndef GUARD_CONSTANTS_FLAGS_H #define GUARD_CONSTANTS_FLAGS_H +// Sys Flags Maybe +#define FLAG_SYS_SAFARI_MODE 0x800 +#define FLAG_WHITE_FLUTE_ACTIVE 0x803 +#define FLAG_BLACK_FLUTE_ACTIVE 0x804 + // World Map Flags #define FLAG_WORLD_MAP_PALLET_TOWN 0x890 #define FLAG_WORLD_MAP_VIRIDIAN_CITY 0x891 @@ -67,7 +72,8 @@ #define FLAG_0x82C 0x82C #define FLAG_0x82F 0x82F #define FLAG_0x830 0x830 -#define FLAG_0x834 0x834 +#define FLAG_SYS_NOT_SOMEONES_PC 0x834 +#define FLAG_0x83C 0x83C #define FLAG_0x83E 0x83E #define FLAG_0x841 0x841 #define FLAG_0x844 0x844 @@ -1431,7 +1437,7 @@ #define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29) #define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A) #define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B) -#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C) +#define FLAG_0x88C (CODE_FLAGS + 0x2C) #define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D) #define FLAG_0x88E (CODE_FLAGS + 0x2E) diff --git a/include/constants/global.h b/include/constants/global.h new file mode 100644 index 000000000..3cac8d473 --- /dev/null +++ b/include/constants/global.h @@ -0,0 +1,83 @@ +#ifndef GUARD_CONSTANTS_GLOBAL_H +#define GUARD_CONSTANTS_GLOBAL_H + +#define POKEMON_SLOTS_NUMBER 412 + +#define ITEM_NAME_LENGTH 14 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + +enum +{ + VERSION_SAPPHIRE = 1, + VERSION_RUBY = 2, + VERSION_EMERALD = 3, + VERSION_FIRE_RED = 4, + VERSION_LEAF_GREEN = 5, +}; + +enum LanguageId { + LANGUAGE_JAPANESE = 1, + LANGUAGE_ENGLISH = 2, + LANGUAGE_FRENCH = 3, + LANGUAGE_ITALIAN = 4, + LANGUAGE_GERMAN = 5, + // 6 goes unused but the theory is it was meant to be Korean + LANGUAGE_SPANISH = 7, +}; + +#ifdef ENGLISH +#define GAME_LANGUAGE (LANGUAGE_ENGLISH) +#endif + +#define PC_ITEMS_COUNT 30 +#define BAG_ITEMS_COUNT 42 +#define BAG_KEYITEMS_COUNT 30 +#define BAG_POKEBALLS_COUNT 13 +#define BAG_TMHM_COUNT 58 +#define BAG_BERRIES_COUNT 43 + +enum +{ + MALE, + FEMALE +}; + +enum +{ + OPTIONS_BUTTON_MODE_NORMAL, + OPTIONS_BUTTON_MODE_LR, + OPTIONS_BUTTON_MODE_L_EQUALS_A +}; + +enum +{ + OPTIONS_TEXT_SPEED_SLOW, + OPTIONS_TEXT_SPEED_MID, + OPTIONS_TEXT_SPEED_FAST +}; + +enum +{ + OPTIONS_SOUND_MONO, + OPTIONS_SOUND_STEREO +}; + +enum +{ + OPTIONS_BATTLE_STYLE_SHIFT, + OPTIONS_BATTLE_STYLE_SET +}; + +enum +{ + POCKET_ITEMS = 1, + POCKET_KEY_ITEMS, + POCKET_POKE_BALLS, + POCKET_TM_CASE, + POCKET_BERRY_POUCH, +}; + +#define NUM_BAG_POCKETS 5 + +#endif //GUARD_CONSTANTS_GLOBAL_H diff --git a/include/constants/hoenn_cries.h b/include/constants/hoenn_cries.h new file mode 100644 index 000000000..5b90aa31d --- /dev/null +++ b/include/constants/hoenn_cries.h @@ -0,0 +1,143 @@ +#ifndef GUARD_CONSTANTS_HOENN_CRIES_H +#define GUARD_CONSTANTS_HOENN_CRIES_H + +enum +{ + CRY_KECLEON = 251, + CRY_ROSELIA = 252, + CRY_TORKOAL = 253, + CRY_ELECTRIKE = 254, + CRY_MANECTRIC = 255, + CRY_DUSKULL = 256, + CRY_LATIAS = 257, + CRY_WYNAUT = 258, + CRY_SEVIPER = 259, + CRY_SHARPEDO = 260, + CRY_ZANGOOSE = 261, + CRY_AZURILL = 262, + CRY_SWABLU = 263, + CRY_ALTARIA = 264, + CRY_TAILLOW = 266, + CRY_SWELLOW = 267, + CRY_SPINDA = 269, + CRY_TORCHIC = 270, + CRY_COMBUSKEN = 271, + CRY_BLAZIKEN = 272, + CRY_TREECKO = 273, + CRY_GROVYLE = 274, + CRY_SCEPTILE = 275, + CRY_MUDKIP = 276, + CRY_MARSHTOMP = 277, + CRY_SWAMPERT = 278, + CRY_PELIPPER = 279, + CRY_WINGULL = 280, + CRY_BANETTE = 281, + CRY_SHUPPET = 282, + CRY_LOTAD = 283, + CRY_LOMBRE = 284, + CRY_LUDICOLO = 285, + CRY_SEEDOT = 286, + CRY_NUZLEAF = 287, + CRY_SHIFTRY = 288, + CRY_CARVANHA = 289, + CRY_WURMPLE = 290, + CRY_SILCOON = 291, + CRY_BEAUTIFLY = 292, + CRY_CASCOON = 293, + CRY_DUSTOX = 294, + CRY_RALTS = 295, + CRY_KIRLIA = 296, + CRY_GARDEVOIR = 297, + CRY_SLAKOTH = 298, + CRY_VIGOROTH = 299, + CRY_SLAKING = 300, + CRY_NINCADA = 301, + CRY_NINJASK = 302, + CRY_SHEDINJA = 303, + CRY_MAKUHITA = 304, + CRY_HARIYAMA = 305, + CRY_NOSEPASS = 306, + CRY_GLALIE = 307, + CRY_PLUSLE = 308, + CRY_MINUN = 309, + CRY_SURSKIT = 310, + CRY_MASQUERAIN = 311, + CRY_SKITTY = 312, + CRY_DELCATTY = 313, + CRY_GULPIN = 314, + CRY_SWALOT = 315, + CRY_NUMEL = 316, + CRY_CAMERUPT = 317, + CRY_BARBOACH = 318, + CRY_WHISCASH = 319, + CRY_CORPHISH = 320, + CRY_CRAWDAUNT = 321, + CRY_SPOINK = 322, + CRY_GRUMPIG = 323, + CRY_TRAPINCH = 324, + CRY_VIBRAVA = 325, + CRY_FLYGON = 326, + CRY_CACNEA = 327, + CRY_CACTURNE = 328, + CRY_BALTOY = 329, + CRY_CLAYDOL = 330, + CRY_LUNATONE = 331, + CRY_SOLROCK = 332, + CRY_FEEBAS = 333, + CRY_MILOTIC = 334, + CRY_ABSOL = 335, + CRY_MEDITITE = 336, + CRY_MEDICHAM = 337, + CRY_SPHEAL = 338, + CRY_SEALEO = 339, + CRY_WALREIN = 340, + CRY_CLAMPERL = 341, + CRY_HUNTAIL = 342, + CRY_GOREBYSS = 343, + CRY_LILEEP = 344, + CRY_CRADILY = 345, + CRY_ANORITH = 346, + CRY_ARMALDO = 347, + CRY_BELDUM = 348, + CRY_METANG = 349, + CRY_METAGROSS = 350, + CRY_BAGON = 351, + CRY_SHELGON = 352, + CRY_REGIROCK = 353, + CRY_REGICE = 354, + CRY_REGISTEEL = 355, + CRY_CASTFORM = 356, + CRY_VOLBEAT = 357, + CRY_ILLUMISE = 358, + CRY_POOCHYENA = 359, + CRY_MIGHTYENA = 360, + CRY_DUSCLOPS = 361, + CRY_SABLEYE = 362, + CRY_MAWILE = 363, + CRY_ARON = 364, + CRY_LAIRON = 365, + CRY_AGGRON = 366, + CRY_RELICANTH = 367, + CRY_LUVDISC = 368, + CRY_GROUDON = 369, + CRY_KYOGRE = 370, + CRY_RAYQUAZA = 371, + CRY_SALAMENCE = 372, + CRY_BRELOOM = 373, + CRY_SHROOMISH = 374, + CRY_LINOONE = 375, + CRY_TROPIUS = 376, + CRY_WAILMER = 377, + CRY_ZIGZAGOON = 378, + CRY_EXPLOUD = 379, + CRY_LOUDRED = 380, + CRY_WAILORD = 381, + CRY_WHISMUR = 382, + CRY_SNORUNT = 383, + CRY_LATIOS = 384, + CRY_JIRACHI = 385, + CRY_DEOXYS = 386, + CRY_CHIMECHO = 387, +}; + +#endif diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h new file mode 100644 index 000000000..a5bb77035 --- /dev/null +++ b/include/constants/item_effects.h @@ -0,0 +1,79 @@ +#ifndef GUARD_CONSTANTS_ITEM_EFFECTS_H +#define GUARD_CONSTANTS_ITEM_EFFECTS_H + +// field 0 masks +#define ITEM0_X_ATTACK 0x0F +#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy. +#define ITEM0_SACRED_ASH 0x40 +#define ITEM0_INFATUATION 0x80 + +// field 1 masks +#define ITEM1_X_SPEED 0x0F +#define ITEM1_X_DEFEND 0xF0 + +// field 2 masks +#define ITEM2_X_SPATK 0x0F +#define ITEM2_X_ACCURACY 0xF0 + +// field 3 masks +#define ITEM3_CONFUSION 0x1 +#define ITEM3_PARALYSIS 0x2 +#define ITEM3_FREEZE 0x4 +#define ITEM3_BURN 0x8 +#define ITEM3_POISON 0x10 +#define ITEM3_SLEEP 0x20 +#define ITEM3_LEVEL_UP 0x40 +#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist. + +#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP) + +// field 4 masks +#define ITEM4_EV_HP 0x1 +#define ITEM4_EV_ATK 0x2 +#define ITEM4_HEAL_HP 0x4 +#define ITEM4_HEAL_PP_ALL 0x8 +#define ITEM4_HEAL_PP_ONE 0x10 +#define ITEM4_PP_UP 0x20 +#define ITEM4_REVIVE 0x40 +#define ITEM4_EVO_STONE 0x80 + +// field 5 masks +#define ITEM5_EV_DEF 0x1 +#define ITEM5_EV_SPEED 0x2 +#define ITEM5_EV_SPDEF 0x4 +#define ITEM5_EV_SPATK 0x8 +#define ITEM5_PP_MAX 0x10 +#define ITEM5_FRIENDSHIP_LOW 0x20 +#define ITEM5_FRIENDSHIP_MID 0x40 +#define ITEM5_FRIENDSHIP_HIGH 0x80 + +#define ITEM5_FRIENDSHIP_ALL (ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID | ITEM5_FRIENDSHIP_HIGH) + +// fields 6 and onwards are item-specific arguments + +// Used for GetItemEffectType. +#define ITEM_EFFECT_X_ITEM 0 +#define ITEM_EFFECT_RAISE_LEVEL 1 +#define ITEM_EFFECT_HEAL_HP 2 +#define ITEM_EFFECT_CURE_POISON 3 +#define ITEM_EFFECT_CURE_SLEEP 4 +#define ITEM_EFFECT_CURE_BURN 5 +#define ITEM_EFFECT_CURE_FREEZE 6 +#define ITEM_EFFECT_CURE_PARALYSIS 7 +#define ITEM_EFFECT_CURE_CONFUSION 8 +#define ITEM_EFFECT_CURE_INFATUATION 9 +#define ITEM_EFFECT_SACRED_ASH 10 +#define ITEM_EFFECT_CURE_ALL_STATUS 11 +#define ITEM_EFFECT_ATK_EV 12 +#define ITEM_EFFECT_HP_EV 13 +#define ITEM_EFFECT_SPATK_EV 14 +#define ITEM_EFFECT_SPDEF_EV 15 +#define ITEM_EFFECT_SPEED_EV 16 +#define ITEM_EFFECT_DEF_EV 17 +#define ITEM_EFFECT_EVO_STONE 18 +#define ITEM_EFFECT_PP_UP 19 +#define ITEM_EFFECT_PP_MAX 20 +#define ITEM_EFFECT_HEAL_PP 21 +#define ITEM_EFFECT_NONE 22 + +#endif // GUARD_CONSTANTS_ITEM_EFFECTS_H diff --git a/include/constants/items.h b/include/constants/items.h index 64fed0e4c..8f3e82c90 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -351,6 +351,65 @@ #define ITEM_15B 347 #define ITEM_15C 348 +#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01 +#define ITEM_TM02_DRAGON_CLAW ITEM_TM02 +#define ITEM_TM03_WATER_PULSE ITEM_TM03 +#define ITEM_TM04_CALM_MIND ITEM_TM04 +#define ITEM_TM05_ROAR ITEM_TM05 +#define ITEM_TM06_TOXIC ITEM_TM06 +#define ITEM_TM07_HAIL ITEM_TM07 +#define ITEM_TM08_BULK_UP ITEM_TM08 +#define ITEM_TM09_BULLET_SEED ITEM_TM09 +#define ITEM_TM10_HIDDEN_POWER ITEM_TM10 +#define ITEM_TM11_SUNNY_DAY ITEM_TM11 +#define ITEM_TM12_TAUNT ITEM_TM12 +#define ITEM_TM13_ICE_BEAM ITEM_TM13 +#define ITEM_TM14_BLIZZARD ITEM_TM14 +#define ITEM_TM15_HYPER_BEAM ITEM_TM15 +#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16 +#define ITEM_TM17_PROTECT ITEM_TM17 +#define ITEM_TM18_RAIN_DANCE ITEM_TM18 +#define ITEM_TM19_GIGA_DRAIN ITEM_TM19 +#define ITEM_TM20_SAFEGUARD ITEM_TM20 +#define ITEM_TM21_FRUSTRATION ITEM_TM21 +#define ITEM_TM22_SOLARBEAM ITEM_TM22 +#define ITEM_TM23_IRON_TAIL ITEM_TM23 +#define ITEM_TM24_THUNDERBOLT ITEM_TM24 +#define ITEM_TM25_THUNDER ITEM_TM25 +#define ITEM_TM26_EARTHQUAKE ITEM_TM26 +#define ITEM_TM27_RETURN ITEM_TM27 +#define ITEM_TM28_DIG ITEM_TM28 +#define ITEM_TM29_PSYCHIC ITEM_TM29 +#define ITEM_TM30_SHADOW_BALL ITEM_TM30 +#define ITEM_TM31_BRICK_BREAK ITEM_TM31 +#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32 +#define ITEM_TM33_REFLECT ITEM_TM33 +#define ITEM_TM34_SHOCK_WAVE ITEM_TM34 +#define ITEM_TM35_FLAMETHROWER ITEM_TM35 +#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36 +#define ITEM_TM37_SANDSTORM ITEM_TM37 +#define ITEM_TM38_FIRE_BLAST ITEM_TM38 +#define ITEM_TM39_ROCK_TOMB ITEM_TM39 +#define ITEM_TM40_AERIAL_ACE ITEM_TM40 +#define ITEM_TM41_TORMENT ITEM_TM41 +#define ITEM_TM42_FACADE ITEM_TM42 +#define ITEM_TM43_SECRET_POWER ITEM_TM43 +#define ITEM_TM44_REST ITEM_TM44 +#define ITEM_TM45_ATTRACT ITEM_TM45 +#define ITEM_TM46_THIEF ITEM_TM46 +#define ITEM_TM47_STEEL_WING ITEM_TM47 +#define ITEM_TM48_SKILL_SWAP ITEM_TM48 +#define ITEM_TM49_SNATCH ITEM_TM49 +#define ITEM_TM50_OVERHEAT ITEM_TM50 +#define ITEM_HM01_CUT ITEM_HM01 +#define ITEM_HM02_FLY ITEM_HM02 +#define ITEM_HM03_SURF ITEM_HM03 +#define ITEM_HM04_STRENGTH ITEM_HM04 +#define ITEM_HM05_FLASH ITEM_HM05 +#define ITEM_HM06_ROCK_SMASH ITEM_HM06 +#define ITEM_HM07_WATERFALL ITEM_HM07 +#define ITEM_HM08_DIVE ITEM_HM08 + // FireRed/LeafGreen #define ITEM_OAKS_PARCEL 349 #define ITEM_POKE_FLUTE 350 @@ -379,6 +438,8 @@ #define ITEM_RUBY 373 #define ITEM_SAPPHIRE 374 +#define ITEM_N_A 375 + // Emerald #define ITEM_MAGMA_EMBLEM 375 #define ITEM_OLD_SEA_MAP 376 @@ -393,11 +454,4 @@ // Check if the item is one that can be used on a Pokemon. #define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2) -// POCKETS -#define POCKET_ITEMS 1 -#define POCKET_KEY_ITEMS 2 -#define POCKET_POKE_BALLS 3 -#define POCKET_TM_CASE 4 -#define POCKET_BERRY_POUCH 5 - #endif // GUARD_CONSTANTS_ITEMS_H diff --git a/include/constants/moves.h b/include/constants/moves.h index f3a3acb90..62eacc5f1 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -359,4 +359,6 @@ #define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST +#define MOVES_COUNT 355 + #endif // GUARD_CONSTANTS_MOVES_H diff --git a/include/constants/songs.h b/include/constants/songs.h index b83b84f26..193a57756 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -251,6 +251,10 @@ #define SE_W114 246 #define SE_W063B 247 #define SE_CASHIER 248 +#define SE_SHIP_HORN 249 +#define SE_HELP_OPEN 250 +#define SE_HELP_CLOSE 251 +#define SE_HELP_PAGE 252 #define MUS_ME_ASA 256 #define MUS_FANFA1 257 diff --git a/include/constants/species.h b/include/constants/species.h index 9cb239799..bedb1282d 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -450,4 +450,838 @@ #define NUM_SPECIES SPECIES_EGG +// National Dex Index Defines + +#define NATIONAL_DEX_NONE 0 +#define NATIONAL_DEX_BULBASAUR 1 +#define NATIONAL_DEX_IVYSAUR 2 +#define NATIONAL_DEX_VENUSAUR 3 +#define NATIONAL_DEX_CHARMANDER 4 +#define NATIONAL_DEX_CHARMELEON 5 +#define NATIONAL_DEX_CHARIZARD 6 +#define NATIONAL_DEX_SQUIRTLE 7 +#define NATIONAL_DEX_WARTORTLE 8 +#define NATIONAL_DEX_BLASTOISE 9 +#define NATIONAL_DEX_CATERPIE 10 +#define NATIONAL_DEX_METAPOD 11 +#define NATIONAL_DEX_BUTTERFREE 12 +#define NATIONAL_DEX_WEEDLE 13 +#define NATIONAL_DEX_KAKUNA 14 +#define NATIONAL_DEX_BEEDRILL 15 +#define NATIONAL_DEX_PIDGEY 16 +#define NATIONAL_DEX_PIDGEOTTO 17 +#define NATIONAL_DEX_PIDGEOT 18 +#define NATIONAL_DEX_RATTATA 19 +#define NATIONAL_DEX_RATICATE 20 +#define NATIONAL_DEX_SPEAROW 21 +#define NATIONAL_DEX_FEAROW 22 +#define NATIONAL_DEX_EKANS 23 +#define NATIONAL_DEX_ARBOK 24 +#define NATIONAL_DEX_PIKACHU 25 +#define NATIONAL_DEX_RAICHU 26 +#define NATIONAL_DEX_SANDSHREW 27 +#define NATIONAL_DEX_SANDSLASH 28 +#define NATIONAL_DEX_NIDORAN_F 29 +#define NATIONAL_DEX_NIDORINA 30 +#define NATIONAL_DEX_NIDOQUEEN 31 +#define NATIONAL_DEX_NIDORAN_M 32 +#define NATIONAL_DEX_NIDORINO 33 +#define NATIONAL_DEX_NIDOKING 34 +#define NATIONAL_DEX_CLEFAIRY 35 +#define NATIONAL_DEX_CLEFABLE 36 +#define NATIONAL_DEX_VULPIX 37 +#define NATIONAL_DEX_NINETALES 38 +#define NATIONAL_DEX_JIGGLYPUFF 39 +#define NATIONAL_DEX_WIGGLYTUFF 40 +#define NATIONAL_DEX_ZUBAT 41 +#define NATIONAL_DEX_GOLBAT 42 +#define NATIONAL_DEX_ODDISH 43 +#define NATIONAL_DEX_GLOOM 44 +#define NATIONAL_DEX_VILEPLUME 45 +#define NATIONAL_DEX_PARAS 46 +#define NATIONAL_DEX_PARASECT 47 +#define NATIONAL_DEX_VENONAT 48 +#define NATIONAL_DEX_VENOMOTH 49 +#define NATIONAL_DEX_DIGLETT 50 +#define NATIONAL_DEX_DUGTRIO 51 +#define NATIONAL_DEX_MEOWTH 52 +#define NATIONAL_DEX_PERSIAN 53 +#define NATIONAL_DEX_PSYDUCK 54 +#define NATIONAL_DEX_GOLDUCK 55 +#define NATIONAL_DEX_MANKEY 56 +#define NATIONAL_DEX_PRIMEAPE 57 +#define NATIONAL_DEX_GROWLITHE 58 +#define NATIONAL_DEX_ARCANINE 59 +#define NATIONAL_DEX_POLIWAG 60 +#define NATIONAL_DEX_POLIWHIRL 61 +#define NATIONAL_DEX_POLIWRATH 62 +#define NATIONAL_DEX_ABRA 63 +#define NATIONAL_DEX_KADABRA 64 +#define NATIONAL_DEX_ALAKAZAM 65 +#define NATIONAL_DEX_MACHOP 66 +#define NATIONAL_DEX_MACHOKE 67 +#define NATIONAL_DEX_MACHAMP 68 +#define NATIONAL_DEX_BELLSPROUT 69 +#define NATIONAL_DEX_WEEPINBELL 70 +#define NATIONAL_DEX_VICTREEBEL 71 +#define NATIONAL_DEX_TENTACOOL 72 +#define NATIONAL_DEX_TENTACRUEL 73 +#define NATIONAL_DEX_GEODUDE 74 +#define NATIONAL_DEX_GRAVELER 75 +#define NATIONAL_DEX_GOLEM 76 +#define NATIONAL_DEX_PONYTA 77 +#define NATIONAL_DEX_RAPIDASH 78 +#define NATIONAL_DEX_SLOWPOKE 79 +#define NATIONAL_DEX_SLOWBRO 80 +#define NATIONAL_DEX_MAGNEMITE 81 +#define NATIONAL_DEX_MAGNETON 82 +#define NATIONAL_DEX_FARFETCHD 83 +#define NATIONAL_DEX_DODUO 84 +#define NATIONAL_DEX_DODRIO 85 +#define NATIONAL_DEX_SEEL 86 +#define NATIONAL_DEX_DEWGONG 87 +#define NATIONAL_DEX_GRIMER 88 +#define NATIONAL_DEX_MUK 89 +#define NATIONAL_DEX_SHELLDER 90 +#define NATIONAL_DEX_CLOYSTER 91 +#define NATIONAL_DEX_GASTLY 92 +#define NATIONAL_DEX_HAUNTER 93 +#define NATIONAL_DEX_GENGAR 94 +#define NATIONAL_DEX_ONIX 95 +#define NATIONAL_DEX_DROWZEE 96 +#define NATIONAL_DEX_HYPNO 97 +#define NATIONAL_DEX_KRABBY 98 +#define NATIONAL_DEX_KINGLER 99 +#define NATIONAL_DEX_VOLTORB 100 +#define NATIONAL_DEX_ELECTRODE 101 +#define NATIONAL_DEX_EXEGGCUTE 102 +#define NATIONAL_DEX_EXEGGUTOR 103 +#define NATIONAL_DEX_CUBONE 104 +#define NATIONAL_DEX_MAROWAK 105 +#define NATIONAL_DEX_HITMONLEE 106 +#define NATIONAL_DEX_HITMONCHAN 107 +#define NATIONAL_DEX_LICKITUNG 108 +#define NATIONAL_DEX_KOFFING 109 +#define NATIONAL_DEX_WEEZING 110 +#define NATIONAL_DEX_RHYHORN 111 +#define NATIONAL_DEX_RHYDON 112 +#define NATIONAL_DEX_CHANSEY 113 +#define NATIONAL_DEX_TANGELA 114 +#define NATIONAL_DEX_KANGASKHAN 115 +#define NATIONAL_DEX_HORSEA 116 +#define NATIONAL_DEX_SEADRA 117 +#define NATIONAL_DEX_GOLDEEN 118 +#define NATIONAL_DEX_SEAKING 119 +#define NATIONAL_DEX_STARYU 120 +#define NATIONAL_DEX_STARMIE 121 +#define NATIONAL_DEX_MR_MIME 122 +#define NATIONAL_DEX_SCYTHER 123 +#define NATIONAL_DEX_JYNX 124 +#define NATIONAL_DEX_ELECTABUZZ 125 +#define NATIONAL_DEX_MAGMAR 126 +#define NATIONAL_DEX_PINSIR 127 +#define NATIONAL_DEX_TAUROS 128 +#define NATIONAL_DEX_MAGIKARP 129 +#define NATIONAL_DEX_GYARADOS 130 +#define NATIONAL_DEX_LAPRAS 131 +#define NATIONAL_DEX_DITTO 132 +#define NATIONAL_DEX_EEVEE 133 +#define NATIONAL_DEX_VAPOREON 134 +#define NATIONAL_DEX_JOLTEON 135 +#define NATIONAL_DEX_FLAREON 136 +#define NATIONAL_DEX_PORYGON 137 +#define NATIONAL_DEX_OMANYTE 138 +#define NATIONAL_DEX_OMASTAR 139 +#define NATIONAL_DEX_KABUTO 140 +#define NATIONAL_DEX_KABUTOPS 141 +#define NATIONAL_DEX_AERODACTYL 142 +#define NATIONAL_DEX_SNORLAX 143 +#define NATIONAL_DEX_ARTICUNO 144 +#define NATIONAL_DEX_ZAPDOS 145 +#define NATIONAL_DEX_MOLTRES 146 +#define NATIONAL_DEX_DRATINI 147 +#define NATIONAL_DEX_DRAGONAIR 148 +#define NATIONAL_DEX_DRAGONITE 149 +#define NATIONAL_DEX_MEWTWO 150 +#define NATIONAL_DEX_MEW 151 +#define NATIONAL_DEX_CHIKORITA 152 +#define NATIONAL_DEX_BAYLEEF 153 +#define NATIONAL_DEX_MEGANIUM 154 +#define NATIONAL_DEX_CYNDAQUIL 155 +#define NATIONAL_DEX_QUILAVA 156 +#define NATIONAL_DEX_TYPHLOSION 157 +#define NATIONAL_DEX_TOTODILE 158 +#define NATIONAL_DEX_CROCONAW 159 +#define NATIONAL_DEX_FERALIGATR 160 +#define NATIONAL_DEX_SENTRET 161 +#define NATIONAL_DEX_FURRET 162 +#define NATIONAL_DEX_HOOTHOOT 163 +#define NATIONAL_DEX_NOCTOWL 164 +#define NATIONAL_DEX_LEDYBA 165 +#define NATIONAL_DEX_LEDIAN 166 +#define NATIONAL_DEX_SPINARAK 167 +#define NATIONAL_DEX_ARIADOS 168 +#define NATIONAL_DEX_CROBAT 169 +#define NATIONAL_DEX_CHINCHOU 170 +#define NATIONAL_DEX_LANTURN 171 +#define NATIONAL_DEX_PICHU 172 +#define NATIONAL_DEX_CLEFFA 173 +#define NATIONAL_DEX_IGGLYBUFF 174 +#define NATIONAL_DEX_TOGEPI 175 +#define NATIONAL_DEX_TOGETIC 176 +#define NATIONAL_DEX_NATU 177 +#define NATIONAL_DEX_XATU 178 +#define NATIONAL_DEX_MAREEP 179 +#define NATIONAL_DEX_FLAAFFY 180 +#define NATIONAL_DEX_AMPHAROS 181 +#define NATIONAL_DEX_BELLOSSOM 182 +#define NATIONAL_DEX_MARILL 183 +#define NATIONAL_DEX_AZUMARILL 184 +#define NATIONAL_DEX_SUDOWOODO 185 +#define NATIONAL_DEX_POLITOED 186 +#define NATIONAL_DEX_HOPPIP 187 +#define NATIONAL_DEX_SKIPLOOM 188 +#define NATIONAL_DEX_JUMPLUFF 189 +#define NATIONAL_DEX_AIPOM 190 +#define NATIONAL_DEX_SUNKERN 191 +#define NATIONAL_DEX_SUNFLORA 192 +#define NATIONAL_DEX_YANMA 193 +#define NATIONAL_DEX_WOOPER 194 +#define NATIONAL_DEX_QUAGSIRE 195 +#define NATIONAL_DEX_ESPEON 196 +#define NATIONAL_DEX_UMBREON 197 +#define NATIONAL_DEX_MURKROW 198 +#define NATIONAL_DEX_SLOWKING 199 +#define NATIONAL_DEX_MISDREAVUS 200 +#define NATIONAL_DEX_UNOWN 201 +#define NATIONAL_DEX_WOBBUFFET 202 +#define NATIONAL_DEX_GIRAFARIG 203 +#define NATIONAL_DEX_PINECO 204 +#define NATIONAL_DEX_FORRETRESS 205 +#define NATIONAL_DEX_DUNSPARCE 206 +#define NATIONAL_DEX_GLIGAR 207 +#define NATIONAL_DEX_STEELIX 208 +#define NATIONAL_DEX_SNUBBULL 209 +#define NATIONAL_DEX_GRANBULL 210 +#define NATIONAL_DEX_QWILFISH 211 +#define NATIONAL_DEX_SCIZOR 212 +#define NATIONAL_DEX_SHUCKLE 213 +#define NATIONAL_DEX_HERACROSS 214 +#define NATIONAL_DEX_SNEASEL 215 +#define NATIONAL_DEX_TEDDIURSA 216 +#define NATIONAL_DEX_URSARING 217 +#define NATIONAL_DEX_SLUGMA 218 +#define NATIONAL_DEX_MAGCARGO 219 +#define NATIONAL_DEX_SWINUB 220 +#define NATIONAL_DEX_PILOSWINE 221 +#define NATIONAL_DEX_CORSOLA 222 +#define NATIONAL_DEX_REMORAID 223 +#define NATIONAL_DEX_OCTILLERY 224 +#define NATIONAL_DEX_DELIBIRD 225 +#define NATIONAL_DEX_MANTINE 226 +#define NATIONAL_DEX_SKARMORY 227 +#define NATIONAL_DEX_HOUNDOUR 228 +#define NATIONAL_DEX_HOUNDOOM 229 +#define NATIONAL_DEX_KINGDRA 230 +#define NATIONAL_DEX_PHANPY 231 +#define NATIONAL_DEX_DONPHAN 232 +#define NATIONAL_DEX_PORYGON2 233 +#define NATIONAL_DEX_STANTLER 234 +#define NATIONAL_DEX_SMEARGLE 235 +#define NATIONAL_DEX_TYROGUE 236 +#define NATIONAL_DEX_HITMONTOP 237 +#define NATIONAL_DEX_SMOOCHUM 238 +#define NATIONAL_DEX_ELEKID 239 +#define NATIONAL_DEX_MAGBY 240 +#define NATIONAL_DEX_MILTANK 241 +#define NATIONAL_DEX_BLISSEY 242 +#define NATIONAL_DEX_RAIKOU 243 +#define NATIONAL_DEX_ENTEI 244 +#define NATIONAL_DEX_SUICUNE 245 +#define NATIONAL_DEX_LARVITAR 246 +#define NATIONAL_DEX_PUPITAR 247 +#define NATIONAL_DEX_TYRANITAR 248 +#define NATIONAL_DEX_LUGIA 249 +#define NATIONAL_DEX_HO_OH 250 +#define NATIONAL_DEX_CELEBI 251 + +#define NATIONAL_DEX_OLD_UNOWN_B 387 +#define NATIONAL_DEX_OLD_UNOWN_C 388 +#define NATIONAL_DEX_OLD_UNOWN_D 389 +#define NATIONAL_DEX_OLD_UNOWN_E 390 +#define NATIONAL_DEX_OLD_UNOWN_F 391 +#define NATIONAL_DEX_OLD_UNOWN_G 392 +#define NATIONAL_DEX_OLD_UNOWN_H 393 +#define NATIONAL_DEX_OLD_UNOWN_I 394 +#define NATIONAL_DEX_OLD_UNOWN_J 395 +#define NATIONAL_DEX_OLD_UNOWN_K 396 +#define NATIONAL_DEX_OLD_UNOWN_L 397 +#define NATIONAL_DEX_OLD_UNOWN_M 398 +#define NATIONAL_DEX_OLD_UNOWN_N 399 +#define NATIONAL_DEX_OLD_UNOWN_O 400 +#define NATIONAL_DEX_OLD_UNOWN_P 401 +#define NATIONAL_DEX_OLD_UNOWN_Q 402 +#define NATIONAL_DEX_OLD_UNOWN_R 403 +#define NATIONAL_DEX_OLD_UNOWN_S 404 +#define NATIONAL_DEX_OLD_UNOWN_T 405 +#define NATIONAL_DEX_OLD_UNOWN_U 406 +#define NATIONAL_DEX_OLD_UNOWN_V 407 +#define NATIONAL_DEX_OLD_UNOWN_W 408 +#define NATIONAL_DEX_OLD_UNOWN_X 409 +#define NATIONAL_DEX_OLD_UNOWN_Y 410 +#define NATIONAL_DEX_OLD_UNOWN_Z 411 + +#define NATIONAL_DEX_TREECKO 252 +#define NATIONAL_DEX_GROVYLE 253 +#define NATIONAL_DEX_SCEPTILE 254 +#define NATIONAL_DEX_TORCHIC 255 +#define NATIONAL_DEX_COMBUSKEN 256 +#define NATIONAL_DEX_BLAZIKEN 257 +#define NATIONAL_DEX_MUDKIP 258 +#define NATIONAL_DEX_MARSHTOMP 259 +#define NATIONAL_DEX_SWAMPERT 260 +#define NATIONAL_DEX_POOCHYENA 261 +#define NATIONAL_DEX_MIGHTYENA 262 +#define NATIONAL_DEX_ZIGZAGOON 263 +#define NATIONAL_DEX_LINOONE 264 +#define NATIONAL_DEX_WURMPLE 265 +#define NATIONAL_DEX_SILCOON 266 +#define NATIONAL_DEX_BEAUTIFLY 267 +#define NATIONAL_DEX_CASCOON 268 +#define NATIONAL_DEX_DUSTOX 269 +#define NATIONAL_DEX_LOTAD 270 +#define NATIONAL_DEX_LOMBRE 271 +#define NATIONAL_DEX_LUDICOLO 272 +#define NATIONAL_DEX_SEEDOT 273 +#define NATIONAL_DEX_NUZLEAF 274 +#define NATIONAL_DEX_SHIFTRY 275 +#define NATIONAL_DEX_NINCADA 290 +#define NATIONAL_DEX_NINJASK 291 +#define NATIONAL_DEX_SHEDINJA 292 +#define NATIONAL_DEX_TAILLOW 276 +#define NATIONAL_DEX_SWELLOW 277 +#define NATIONAL_DEX_SHROOMISH 285 +#define NATIONAL_DEX_BRELOOM 286 +#define NATIONAL_DEX_SPINDA 327 +#define NATIONAL_DEX_WINGULL 278 +#define NATIONAL_DEX_PELIPPER 279 +#define NATIONAL_DEX_SURSKIT 283 +#define NATIONAL_DEX_MASQUERAIN 284 +#define NATIONAL_DEX_WAILMER 320 +#define NATIONAL_DEX_WAILORD 321 +#define NATIONAL_DEX_SKITTY 300 +#define NATIONAL_DEX_DELCATTY 301 +#define NATIONAL_DEX_KECLEON 352 +#define NATIONAL_DEX_BALTOY 343 +#define NATIONAL_DEX_CLAYDOL 344 +#define NATIONAL_DEX_NOSEPASS 299 +#define NATIONAL_DEX_TORKOAL 324 +#define NATIONAL_DEX_SABLEYE 302 +#define NATIONAL_DEX_BARBOACH 339 +#define NATIONAL_DEX_WHISCASH 340 +#define NATIONAL_DEX_LUVDISC 370 +#define NATIONAL_DEX_CORPHISH 341 +#define NATIONAL_DEX_CRAWDAUNT 342 +#define NATIONAL_DEX_FEEBAS 349 +#define NATIONAL_DEX_MILOTIC 350 +#define NATIONAL_DEX_CARVANHA 318 +#define NATIONAL_DEX_SHARPEDO 319 +#define NATIONAL_DEX_TRAPINCH 328 +#define NATIONAL_DEX_VIBRAVA 329 +#define NATIONAL_DEX_FLYGON 330 +#define NATIONAL_DEX_MAKUHITA 296 +#define NATIONAL_DEX_HARIYAMA 297 +#define NATIONAL_DEX_ELECTRIKE 309 +#define NATIONAL_DEX_MANECTRIC 310 +#define NATIONAL_DEX_NUMEL 322 +#define NATIONAL_DEX_CAMERUPT 323 +#define NATIONAL_DEX_SPHEAL 363 +#define NATIONAL_DEX_SEALEO 364 +#define NATIONAL_DEX_WALREIN 365 +#define NATIONAL_DEX_CACNEA 331 +#define NATIONAL_DEX_CACTURNE 332 +#define NATIONAL_DEX_SNORUNT 361 +#define NATIONAL_DEX_GLALIE 362 +#define NATIONAL_DEX_LUNATONE 337 +#define NATIONAL_DEX_SOLROCK 338 +#define NATIONAL_DEX_AZURILL 298 +#define NATIONAL_DEX_SPOINK 325 +#define NATIONAL_DEX_GRUMPIG 326 +#define NATIONAL_DEX_PLUSLE 311 +#define NATIONAL_DEX_MINUN 312 +#define NATIONAL_DEX_MAWILE 303 +#define NATIONAL_DEX_MEDITITE 307 +#define NATIONAL_DEX_MEDICHAM 308 +#define NATIONAL_DEX_SWABLU 333 +#define NATIONAL_DEX_ALTARIA 334 +#define NATIONAL_DEX_WYNAUT 360 +#define NATIONAL_DEX_DUSKULL 355 +#define NATIONAL_DEX_DUSCLOPS 356 +#define NATIONAL_DEX_ROSELIA 315 +#define NATIONAL_DEX_SLAKOTH 287 +#define NATIONAL_DEX_VIGOROTH 288 +#define NATIONAL_DEX_SLAKING 289 +#define NATIONAL_DEX_GULPIN 316 +#define NATIONAL_DEX_SWALOT 317 +#define NATIONAL_DEX_TROPIUS 357 +#define NATIONAL_DEX_WHISMUR 293 +#define NATIONAL_DEX_LOUDRED 294 +#define NATIONAL_DEX_EXPLOUD 295 +#define NATIONAL_DEX_CLAMPERL 366 +#define NATIONAL_DEX_HUNTAIL 367 +#define NATIONAL_DEX_GOREBYSS 368 +#define NATIONAL_DEX_ABSOL 359 +#define NATIONAL_DEX_SHUPPET 353 +#define NATIONAL_DEX_BANETTE 354 +#define NATIONAL_DEX_SEVIPER 336 +#define NATIONAL_DEX_ZANGOOSE 335 +#define NATIONAL_DEX_RELICANTH 369 +#define NATIONAL_DEX_ARON 304 +#define NATIONAL_DEX_LAIRON 305 +#define NATIONAL_DEX_AGGRON 306 +#define NATIONAL_DEX_CASTFORM 351 +#define NATIONAL_DEX_VOLBEAT 313 +#define NATIONAL_DEX_ILLUMISE 314 +#define NATIONAL_DEX_LILEEP 345 +#define NATIONAL_DEX_CRADILY 346 +#define NATIONAL_DEX_ANORITH 347 +#define NATIONAL_DEX_ARMALDO 348 +#define NATIONAL_DEX_RALTS 280 +#define NATIONAL_DEX_KIRLIA 281 +#define NATIONAL_DEX_GARDEVOIR 282 +#define NATIONAL_DEX_BAGON 371 +#define NATIONAL_DEX_SHELGON 372 +#define NATIONAL_DEX_SALAMENCE 373 +#define NATIONAL_DEX_BELDUM 374 +#define NATIONAL_DEX_METANG 375 +#define NATIONAL_DEX_METAGROSS 376 +#define NATIONAL_DEX_REGIROCK 377 +#define NATIONAL_DEX_REGICE 378 +#define NATIONAL_DEX_REGISTEEL 379 +#define NATIONAL_DEX_KYOGRE 382 +#define NATIONAL_DEX_GROUDON 383 +#define NATIONAL_DEX_RAYQUAZA 384 +#define NATIONAL_DEX_LATIAS 380 +#define NATIONAL_DEX_LATIOS 381 +#define NATIONAL_DEX_JIRACHI 385 +#define NATIONAL_DEX_DEOXYS 386 +#define NATIONAL_DEX_CHIMECHO 358 + +// Hoenn Dex Index Defines + +#define HOENN_DEX_NONE 0 +#define HOENN_DEX_BULBASAUR 203 +#define HOENN_DEX_IVYSAUR 204 +#define HOENN_DEX_VENUSAUR 205 +#define HOENN_DEX_CHARMANDER 206 +#define HOENN_DEX_CHARMELEON 207 +#define HOENN_DEX_CHARIZARD 208 +#define HOENN_DEX_SQUIRTLE 209 +#define HOENN_DEX_WARTORTLE 210 +#define HOENN_DEX_BLASTOISE 211 +#define HOENN_DEX_CATERPIE 212 +#define HOENN_DEX_METAPOD 213 +#define HOENN_DEX_BUTTERFREE 214 +#define HOENN_DEX_WEEDLE 215 +#define HOENN_DEX_KAKUNA 216 +#define HOENN_DEX_BEEDRILL 217 +#define HOENN_DEX_PIDGEY 218 +#define HOENN_DEX_PIDGEOTTO 219 +#define HOENN_DEX_PIDGEOT 220 +#define HOENN_DEX_RATTATA 221 +#define HOENN_DEX_RATICATE 222 +#define HOENN_DEX_SPEAROW 223 +#define HOENN_DEX_FEAROW 224 +#define HOENN_DEX_EKANS 225 +#define HOENN_DEX_ARBOK 226 +#define HOENN_DEX_PIKACHU 156 +#define HOENN_DEX_RAICHU 157 +#define HOENN_DEX_SANDSHREW 112 +#define HOENN_DEX_SANDSLASH 113 +#define HOENN_DEX_NIDORAN_F 227 +#define HOENN_DEX_NIDORINA 228 +#define HOENN_DEX_NIDOQUEEN 229 +#define HOENN_DEX_NIDORAN_M 230 +#define HOENN_DEX_NIDORINO 231 +#define HOENN_DEX_NIDOKING 232 +#define HOENN_DEX_CLEFAIRY 233 +#define HOENN_DEX_CLEFABLE 234 +#define HOENN_DEX_VULPIX 153 +#define HOENN_DEX_NINETALES 154 +#define HOENN_DEX_JIGGLYPUFF 138 +#define HOENN_DEX_WIGGLYTUFF 139 +#define HOENN_DEX_ZUBAT 63 +#define HOENN_DEX_GOLBAT 64 +#define HOENN_DEX_ODDISH 88 +#define HOENN_DEX_GLOOM 89 +#define HOENN_DEX_VILEPLUME 90 +#define HOENN_DEX_PARAS 235 +#define HOENN_DEX_PARASECT 236 +#define HOENN_DEX_VENONAT 237 +#define HOENN_DEX_VENOMOTH 238 +#define HOENN_DEX_DIGLETT 239 +#define HOENN_DEX_DUGTRIO 240 +#define HOENN_DEX_MEOWTH 241 +#define HOENN_DEX_PERSIAN 242 +#define HOENN_DEX_PSYDUCK 158 +#define HOENN_DEX_GOLDUCK 159 +#define HOENN_DEX_MANKEY 243 +#define HOENN_DEX_PRIMEAPE 244 +#define HOENN_DEX_GROWLITHE 245 +#define HOENN_DEX_ARCANINE 246 +#define HOENN_DEX_POLIWAG 247 +#define HOENN_DEX_POLIWHIRL 248 +#define HOENN_DEX_POLIWRATH 249 +#define HOENN_DEX_ABRA 39 +#define HOENN_DEX_KADABRA 40 +#define HOENN_DEX_ALAKAZAM 41 +#define HOENN_DEX_MACHOP 73 +#define HOENN_DEX_MACHOKE 74 +#define HOENN_DEX_MACHAMP 75 +#define HOENN_DEX_BELLSPROUT 250 +#define HOENN_DEX_WEEPINBELL 251 +#define HOENN_DEX_VICTREEBEL 252 +#define HOENN_DEX_TENTACOOL 66 +#define HOENN_DEX_TENTACRUEL 67 +#define HOENN_DEX_GEODUDE 57 +#define HOENN_DEX_GRAVELER 58 +#define HOENN_DEX_GOLEM 59 +#define HOENN_DEX_PONYTA 253 +#define HOENN_DEX_RAPIDASH 254 +#define HOENN_DEX_SLOWPOKE 255 +#define HOENN_DEX_SLOWBRO 256 +#define HOENN_DEX_MAGNEMITE 82 +#define HOENN_DEX_MAGNETON 83 +#define HOENN_DEX_FARFETCHD 257 +#define HOENN_DEX_DODUO 92 +#define HOENN_DEX_DODRIO 93 +#define HOENN_DEX_SEEL 258 +#define HOENN_DEX_DEWGONG 259 +#define HOENN_DEX_GRIMER 106 +#define HOENN_DEX_MUK 107 +#define HOENN_DEX_SHELLDER 260 +#define HOENN_DEX_CLOYSTER 261 +#define HOENN_DEX_GASTLY 262 +#define HOENN_DEX_HAUNTER 263 +#define HOENN_DEX_GENGAR 264 +#define HOENN_DEX_ONIX 265 +#define HOENN_DEX_DROWZEE 266 +#define HOENN_DEX_HYPNO 267 +#define HOENN_DEX_KRABBY 268 +#define HOENN_DEX_KINGLER 269 +#define HOENN_DEX_VOLTORB 84 +#define HOENN_DEX_ELECTRODE 85 +#define HOENN_DEX_EXEGGCUTE 270 +#define HOENN_DEX_EXEGGUTOR 271 +#define HOENN_DEX_CUBONE 272 +#define HOENN_DEX_MAROWAK 273 +#define HOENN_DEX_HITMONLEE 274 +#define HOENN_DEX_HITMONCHAN 275 +#define HOENN_DEX_LICKITUNG 276 +#define HOENN_DEX_KOFFING 108 +#define HOENN_DEX_WEEZING 109 +#define HOENN_DEX_RHYHORN 169 +#define HOENN_DEX_RHYDON 170 +#define HOENN_DEX_CHANSEY 277 +#define HOENN_DEX_TANGELA 278 +#define HOENN_DEX_KANGASKHAN 279 +#define HOENN_DEX_HORSEA 184 +#define HOENN_DEX_SEADRA 185 +#define HOENN_DEX_GOLDEEN 50 +#define HOENN_DEX_SEAKING 51 +#define HOENN_DEX_STARYU 143 +#define HOENN_DEX_STARMIE 144 +#define HOENN_DEX_MR_MIME 280 +#define HOENN_DEX_SCYTHER 281 +#define HOENN_DEX_JYNX 282 +#define HOENN_DEX_ELECTABUZZ 283 +#define HOENN_DEX_MAGMAR 284 +#define HOENN_DEX_PINSIR 167 +#define HOENN_DEX_TAUROS 285 +#define HOENN_DEX_MAGIKARP 52 +#define HOENN_DEX_GYARADOS 53 +#define HOENN_DEX_LAPRAS 286 +#define HOENN_DEX_DITTO 287 +#define HOENN_DEX_EEVEE 288 +#define HOENN_DEX_VAPOREON 289 +#define HOENN_DEX_JOLTEON 290 +#define HOENN_DEX_FLAREON 291 +#define HOENN_DEX_PORYGON 292 +#define HOENN_DEX_OMANYTE 293 +#define HOENN_DEX_OMASTAR 294 +#define HOENN_DEX_KABUTO 295 +#define HOENN_DEX_KABUTOPS 296 +#define HOENN_DEX_AERODACTYL 297 +#define HOENN_DEX_SNORLAX 298 +#define HOENN_DEX_ARTICUNO 299 +#define HOENN_DEX_ZAPDOS 300 +#define HOENN_DEX_MOLTRES 301 +#define HOENN_DEX_DRATINI 302 +#define HOENN_DEX_DRAGONAIR 303 +#define HOENN_DEX_DRAGONITE 304 +#define HOENN_DEX_MEWTWO 305 +#define HOENN_DEX_MEW 306 +#define HOENN_DEX_CHIKORITA 307 +#define HOENN_DEX_BAYLEEF 308 +#define HOENN_DEX_MEGANIUM 309 +#define HOENN_DEX_CYNDAQUIL 310 +#define HOENN_DEX_QUILAVA 311 +#define HOENN_DEX_TYPHLOSION 312 +#define HOENN_DEX_TOTODILE 313 +#define HOENN_DEX_CROCONAW 314 +#define HOENN_DEX_FERALIGATR 315 +#define HOENN_DEX_SENTRET 316 +#define HOENN_DEX_FURRET 317 +#define HOENN_DEX_HOOTHOOT 318 +#define HOENN_DEX_NOCTOWL 319 +#define HOENN_DEX_LEDYBA 320 +#define HOENN_DEX_LEDIAN 321 +#define HOENN_DEX_SPINARAK 322 +#define HOENN_DEX_ARIADOS 323 +#define HOENN_DEX_CROBAT 65 +#define HOENN_DEX_CHINCHOU 181 +#define HOENN_DEX_LANTURN 182 +#define HOENN_DEX_PICHU 155 +#define HOENN_DEX_CLEFFA 324 +#define HOENN_DEX_IGGLYBUFF 137 +#define HOENN_DEX_TOGEPI 325 +#define HOENN_DEX_TOGETIC 326 +#define HOENN_DEX_NATU 162 +#define HOENN_DEX_XATU 163 +#define HOENN_DEX_MAREEP 327 +#define HOENN_DEX_FLAAFFY 328 +#define HOENN_DEX_AMPHAROS 329 +#define HOENN_DEX_BELLOSSOM 91 +#define HOENN_DEX_MARILL 55 +#define HOENN_DEX_AZUMARILL 56 +#define HOENN_DEX_SUDOWOODO 330 +#define HOENN_DEX_POLITOED 331 +#define HOENN_DEX_HOPPIP 332 +#define HOENN_DEX_SKIPLOOM 333 +#define HOENN_DEX_JUMPLUFF 334 +#define HOENN_DEX_AIPOM 335 +#define HOENN_DEX_SUNKERN 336 +#define HOENN_DEX_SUNFLORA 337 +#define HOENN_DEX_YANMA 338 +#define HOENN_DEX_WOOPER 339 +#define HOENN_DEX_QUAGSIRE 340 +#define HOENN_DEX_ESPEON 341 +#define HOENN_DEX_UMBREON 342 +#define HOENN_DEX_MURKROW 343 +#define HOENN_DEX_SLOWKING 344 +#define HOENN_DEX_MISDREAVUS 345 +#define HOENN_DEX_UNOWN 346 +#define HOENN_DEX_WOBBUFFET 161 +#define HOENN_DEX_GIRAFARIG 164 +#define HOENN_DEX_PINECO 347 +#define HOENN_DEX_FORRETRESS 348 +#define HOENN_DEX_DUNSPARCE 349 +#define HOENN_DEX_GLIGAR 350 +#define HOENN_DEX_STEELIX 351 +#define HOENN_DEX_SNUBBULL 352 +#define HOENN_DEX_GRANBULL 353 +#define HOENN_DEX_QWILFISH 354 +#define HOENN_DEX_SCIZOR 355 +#define HOENN_DEX_SHUCKLE 356 +#define HOENN_DEX_HERACROSS 168 +#define HOENN_DEX_SNEASEL 357 +#define HOENN_DEX_TEDDIURSA 358 +#define HOENN_DEX_URSARING 359 +#define HOENN_DEX_SLUGMA 103 +#define HOENN_DEX_MAGCARGO 104 +#define HOENN_DEX_SWINUB 360 +#define HOENN_DEX_PILOSWINE 361 +#define HOENN_DEX_CORSOLA 180 +#define HOENN_DEX_REMORAID 362 +#define HOENN_DEX_OCTILLERY 363 +#define HOENN_DEX_DELIBIRD 364 +#define HOENN_DEX_MANTINE 365 +#define HOENN_DEX_SKARMORY 115 +#define HOENN_DEX_HOUNDOUR 366 +#define HOENN_DEX_HOUNDOOM 367 +#define HOENN_DEX_KINGDRA 186 +#define HOENN_DEX_PHANPY 165 +#define HOENN_DEX_DONPHAN 166 +#define HOENN_DEX_PORYGON2 368 +#define HOENN_DEX_STANTLER 369 +#define HOENN_DEX_SMEARGLE 370 +#define HOENN_DEX_TYROGUE 371 +#define HOENN_DEX_HITMONTOP 372 +#define HOENN_DEX_SMOOCHUM 373 +#define HOENN_DEX_ELEKID 374 +#define HOENN_DEX_MAGBY 375 +#define HOENN_DEX_MILTANK 376 +#define HOENN_DEX_BLISSEY 377 +#define HOENN_DEX_RAIKOU 378 +#define HOENN_DEX_ENTEI 379 +#define HOENN_DEX_SUICUNE 380 +#define HOENN_DEX_LARVITAR 381 +#define HOENN_DEX_PUPITAR 382 +#define HOENN_DEX_TYRANITAR 383 +#define HOENN_DEX_LUGIA 384 +#define HOENN_DEX_HO_OH 385 +#define HOENN_DEX_CELEBI 386 + +#define HOENN_DEX_OLD_UNOWN_B 387 +#define HOENN_DEX_OLD_UNOWN_C 388 +#define HOENN_DEX_OLD_UNOWN_D 389 +#define HOENN_DEX_OLD_UNOWN_E 390 +#define HOENN_DEX_OLD_UNOWN_F 391 +#define HOENN_DEX_OLD_UNOWN_G 392 +#define HOENN_DEX_OLD_UNOWN_H 393 +#define HOENN_DEX_OLD_UNOWN_I 394 +#define HOENN_DEX_OLD_UNOWN_J 395 +#define HOENN_DEX_OLD_UNOWN_K 396 +#define HOENN_DEX_OLD_UNOWN_L 397 +#define HOENN_DEX_OLD_UNOWN_M 398 +#define HOENN_DEX_OLD_UNOWN_N 399 +#define HOENN_DEX_OLD_UNOWN_O 400 +#define HOENN_DEX_OLD_UNOWN_P 401 +#define HOENN_DEX_OLD_UNOWN_Q 402 +#define HOENN_DEX_OLD_UNOWN_R 403 +#define HOENN_DEX_OLD_UNOWN_S 404 +#define HOENN_DEX_OLD_UNOWN_T 405 +#define HOENN_DEX_OLD_UNOWN_U 406 +#define HOENN_DEX_OLD_UNOWN_V 407 +#define HOENN_DEX_OLD_UNOWN_W 408 +#define HOENN_DEX_OLD_UNOWN_X 409 +#define HOENN_DEX_OLD_UNOWN_Y 410 +#define HOENN_DEX_OLD_UNOWN_Z 411 + +#define HOENN_DEX_TREECKO 1 +#define HOENN_DEX_GROVYLE 2 +#define HOENN_DEX_SCEPTILE 3 +#define HOENN_DEX_TORCHIC 4 +#define HOENN_DEX_COMBUSKEN 5 +#define HOENN_DEX_BLAZIKEN 6 +#define HOENN_DEX_MUDKIP 7 +#define HOENN_DEX_MARSHTOMP 8 +#define HOENN_DEX_SWAMPERT 9 +#define HOENN_DEX_POOCHYENA 10 +#define HOENN_DEX_MIGHTYENA 11 +#define HOENN_DEX_ZIGZAGOON 12 +#define HOENN_DEX_LINOONE 13 +#define HOENN_DEX_WURMPLE 14 +#define HOENN_DEX_SILCOON 15 +#define HOENN_DEX_BEAUTIFLY 16 +#define HOENN_DEX_CASCOON 17 +#define HOENN_DEX_DUSTOX 18 +#define HOENN_DEX_LOTAD 19 +#define HOENN_DEX_LOMBRE 20 +#define HOENN_DEX_LUDICOLO 21 +#define HOENN_DEX_SEEDOT 22 +#define HOENN_DEX_NUZLEAF 23 +#define HOENN_DEX_SHIFTRY 24 +#define HOENN_DEX_NINCADA 42 +#define HOENN_DEX_NINJASK 43 +#define HOENN_DEX_SHEDINJA 44 +#define HOENN_DEX_TAILLOW 25 +#define HOENN_DEX_SWELLOW 26 +#define HOENN_DEX_SHROOMISH 34 +#define HOENN_DEX_BRELOOM 35 +#define HOENN_DEX_SPINDA 114 +#define HOENN_DEX_WINGULL 27 +#define HOENN_DEX_PELIPPER 28 +#define HOENN_DEX_SURSKIT 32 +#define HOENN_DEX_MASQUERAIN 33 +#define HOENN_DEX_WAILMER 99 +#define HOENN_DEX_WAILORD 100 +#define HOENN_DEX_SKITTY 61 +#define HOENN_DEX_DELCATTY 62 +#define HOENN_DEX_KECLEON 145 +#define HOENN_DEX_BALTOY 131 +#define HOENN_DEX_CLAYDOL 132 +#define HOENN_DEX_NOSEPASS 60 +#define HOENN_DEX_TORKOAL 105 +#define HOENN_DEX_SABLEYE 68 +#define HOENN_DEX_BARBOACH 127 +#define HOENN_DEX_WHISCASH 128 +#define HOENN_DEX_LUVDISC 183 +#define HOENN_DEX_CORPHISH 129 +#define HOENN_DEX_CRAWDAUNT 130 +#define HOENN_DEX_FEEBAS 140 +#define HOENN_DEX_MILOTIC 141 +#define HOENN_DEX_CARVANHA 97 +#define HOENN_DEX_SHARPEDO 98 +#define HOENN_DEX_TRAPINCH 116 +#define HOENN_DEX_VIBRAVA 117 +#define HOENN_DEX_FLYGON 118 +#define HOENN_DEX_MAKUHITA 48 +#define HOENN_DEX_HARIYAMA 49 +#define HOENN_DEX_ELECTRIKE 78 +#define HOENN_DEX_MANECTRIC 79 +#define HOENN_DEX_NUMEL 101 +#define HOENN_DEX_CAMERUPT 102 +#define HOENN_DEX_SPHEAL 173 +#define HOENN_DEX_SEALEO 174 +#define HOENN_DEX_WALREIN 175 +#define HOENN_DEX_CACNEA 119 +#define HOENN_DEX_CACTURNE 120 +#define HOENN_DEX_SNORUNT 171 +#define HOENN_DEX_GLALIE 172 +#define HOENN_DEX_LUNATONE 125 +#define HOENN_DEX_SOLROCK 126 +#define HOENN_DEX_AZURILL 54 +#define HOENN_DEX_SPOINK 110 +#define HOENN_DEX_GRUMPIG 111 +#define HOENN_DEX_PLUSLE 80 +#define HOENN_DEX_MINUN 81 +#define HOENN_DEX_MAWILE 69 +#define HOENN_DEX_MEDITITE 76 +#define HOENN_DEX_MEDICHAM 77 +#define HOENN_DEX_SWABLU 121 +#define HOENN_DEX_ALTARIA 122 +#define HOENN_DEX_WYNAUT 160 +#define HOENN_DEX_DUSKULL 148 +#define HOENN_DEX_DUSCLOPS 149 +#define HOENN_DEX_ROSELIA 94 +#define HOENN_DEX_SLAKOTH 36 +#define HOENN_DEX_VIGOROTH 37 +#define HOENN_DEX_SLAKING 38 +#define HOENN_DEX_GULPIN 95 +#define HOENN_DEX_SWALOT 96 +#define HOENN_DEX_TROPIUS 150 +#define HOENN_DEX_WHISMUR 45 +#define HOENN_DEX_LOUDRED 46 +#define HOENN_DEX_EXPLOUD 47 +#define HOENN_DEX_CLAMPERL 176 +#define HOENN_DEX_HUNTAIL 177 +#define HOENN_DEX_GOREBYSS 178 +#define HOENN_DEX_ABSOL 152 +#define HOENN_DEX_SHUPPET 146 +#define HOENN_DEX_BANETTE 147 +#define HOENN_DEX_SEVIPER 124 +#define HOENN_DEX_ZANGOOSE 123 +#define HOENN_DEX_RELICANTH 179 +#define HOENN_DEX_ARON 70 +#define HOENN_DEX_LAIRON 71 +#define HOENN_DEX_AGGRON 72 +#define HOENN_DEX_CASTFORM 142 +#define HOENN_DEX_VOLBEAT 86 +#define HOENN_DEX_ILLUMISE 87 +#define HOENN_DEX_LILEEP 133 +#define HOENN_DEX_CRADILY 134 +#define HOENN_DEX_ANORITH 135 +#define HOENN_DEX_ARMALDO 136 +#define HOENN_DEX_RALTS 29 +#define HOENN_DEX_KIRLIA 30 +#define HOENN_DEX_GARDEVOIR 31 +#define HOENN_DEX_BAGON 187 +#define HOENN_DEX_SHELGON 188 +#define HOENN_DEX_SALAMENCE 189 +#define HOENN_DEX_BELDUM 190 +#define HOENN_DEX_METANG 191 +#define HOENN_DEX_METAGROSS 192 +#define HOENN_DEX_REGIROCK 193 +#define HOENN_DEX_REGICE 194 +#define HOENN_DEX_REGISTEEL 195 +#define HOENN_DEX_KYOGRE 198 +#define HOENN_DEX_GROUDON 199 +#define HOENN_DEX_RAYQUAZA 200 +#define HOENN_DEX_LATIAS 196 +#define HOENN_DEX_LATIOS 197 +#define HOENN_DEX_JIRACHI 201 +#define HOENN_DEX_DEOXYS 202 +#define HOENN_DEX_CHIMECHO 151 + #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 54bcb20a0..989b27387 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -35,8 +35,8 @@ #define VAR_0x401D 0x401D #define VAR_0x401E 0x401E #define VAR_0x401F 0x401F -#define VAR_RECYCLE_GOODS 0x4020 -#define VAR_REPEL_STEP_COUNT 0x4021 +#define VAR_REPEL_STEP_COUNT 0x4020 +#define VAR_0x4021 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 #define VAR_0x4023 0x4023 #define VAR_MIRAGE_RND_H 0x4024 @@ -89,7 +89,7 @@ #define VAR_MAP_SCENE_PALLET_TOWN 0x4050 #define VAR_0x4051 0x4051 #define VAR_0x4052 0x4052 -#define VAR_0x4053 0x4053 +#define VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER 0x4053 #define VAR_0x4054 0x4054 #define VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB 0x4055 #define VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F 0x4056 diff --git a/include/data2.h b/include/data2.h index e383b1c9a..3ce3c33c8 100644 --- a/include/data2.h +++ b/include/data2.h @@ -18,5 +18,30 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; extern const u8 gAbilityNames[][13]; extern const u8 gTypeNames[][7]; +extern const u16 gUnknown_8251CB8[]; +extern const u16 gUnknown_8251FEE[]; +extern const u16 gUnknown_8252324[]; +extern const u16 gUnknown_82539D4[]; + +extern const struct CompressedSpritePalette gMonPaletteTable[]; +extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; +extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; +extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; + +extern const struct OamData gUnknown_824F010; +extern const struct OamData gUnknown_824F018; +extern const union AnimCmd *const gUnknown_82349BC[]; +extern const union AffineAnimCmd *const gUnknown_82348C8[]; +extern const union AffineAnimCmd *const gUnknown_8234944[]; +extern const struct SpriteFrameImage gUnknown_8234698[]; +extern const struct SpriteFrameImage gUnknown_82346B8[]; +extern const struct SpriteFrameImage gUnknown_82346D8[]; +extern const struct SpriteFrameImage gUnknown_82346F8[]; +extern const struct SpriteFrameImage gUnknown_8234718[]; +extern const struct SpriteFrameImage gUnknown_8234740[]; +extern const struct SpriteFrameImage gUnknown_8234768[]; +extern const struct SpriteFrameImage gUnknown_8234788[]; +extern const struct SpriteFrameImage gUnknown_82347A8[]; +extern const struct SpriteFrameImage gUnknown_82347C8[]; #endif // GUARD_DATA2_H diff --git a/include/decompress.h b/include/decompress.h index 19b507525..03080fe48 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -10,15 +10,13 @@ extern u8 gDecompressionBuffer[0x4000]; void LZDecompressWram(const void *src, void *dest); void LZDecompressVram(const void *src, void *dest); -u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src); -void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src); +u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src); +void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); +bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src); -void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); -void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); -bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src); - -bool8 sub_800F078(const struct CompressedSpritePalette *src); +void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src); +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); +bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src); void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species); @@ -27,15 +25,12 @@ void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); -void sub_800ECC4(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); -u32 sub_8034974(const u8 *ptr); - -void sub_800F034(const struct CompressedSpriteSheet *src); u32 GetDecompressedDataSize(const u8 *ptr); #endif // GUARD_DECOMPRESS_H diff --git a/include/dma3.h b/include/dma3.h index fcd7bae43..381e1e322 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -3,10 +3,55 @@ #include "global.h" +// Maximum amount of data we will transfer in one operation +#define MAX_DMA_BLOCK_SIZE 0x1000 + +#define Dma3CopyLarge_(src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaCopy##bit(3, _src, _dest, _size); \ + break; \ + } \ + DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \ + _src += MAX_DMA_BLOCK_SIZE; \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16) +#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32) + +#define Dma3FillLarge_(value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaFill##bit(3, value, _dest, _size); \ + break; \ + } \ + DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) +#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) + void ClearDma3Requests(void); void ProcessDma3Requests(void); -int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); -int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); -int CheckForSpaceForDma3Request(s16 index); +s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); +s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); +s16 CheckForSpaceForDma3Request(s16 index); #endif // GUARD_DMA3_H diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h new file mode 100644 index 000000000..31cfe8d30 --- /dev/null +++ b/include/dynamic_placeholder_text_util.h @@ -0,0 +1,12 @@ +#ifndef GUARD_UNK_TEXT_UTIL_H +#define GUARD_UNK_TEXT_UTIL_H + +#include "global.h" + +void DynamicPlaceholderTextUtil_Reset(void); +void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr); +u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src); +const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx); +u8 GetColorFromTextColorTable(u16 graphicId); + +#endif //GUARD_UNK_TEXT_UTIL_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 1762faf8e..91612c06b 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -772,4 +772,385 @@ extern const u8 gOakText_ConfirmRivalName[]; extern const u8 gOakText_RememberRivalName[]; extern const u8 gOakText_LegendAboutToUnfold[]; +// Help System +extern const u8 gUnknown_81B2DF8[]; +extern const u8 gUnknown_81B2E1C[]; +extern const u8 gUnknown_81B2E2E[]; +extern const u8 gUnknown_81B2E48[]; +extern const u8 gUnknown_81B2E58[]; +extern const u8 gUnknown_81B2E6A[]; +extern const u8 gUnknown_81B2E6F[]; +extern const u8 gUnknown_81B2E76[]; +extern const u8 gUnknown_81B2E88[]; +extern const u8 gUnknown_81B2EC8[]; +extern const u8 gUnknown_81B2F00[]; +extern const u8 gUnknown_81B2F43[]; +extern const u8 gUnknown_81B2F74[]; +extern const u8 gUnknown_81B2FA9[]; +extern const u8 gUnknown_81B2FC9[]; +extern const u8 gUnknown_81B301B[]; +extern const u8 gUnknown_81B3083[]; +extern const u8 gUnknown_81B30A9[]; +extern const u8 gUnknown_81B30C1[]; +extern const u8 gUnknown_81B30DC[]; +extern const u8 gUnknown_81B30FC[]; +extern const u8 gUnknown_81B311F[]; +extern const u8 gUnknown_81B3140[]; +extern const u8 gUnknown_81B314F[]; +extern const u8 gUnknown_81B3168[]; +extern const u8 gUnknown_81B3189[]; +extern const u8 gUnknown_81B31AE[]; +extern const u8 gUnknown_81B31D3[]; +extern const u8 gUnknown_81B31EC[]; +extern const u8 gUnknown_81B31FF[]; +extern const u8 gUnknown_81B3215[]; +extern const u8 gUnknown_81B3226[]; +extern const u8 gUnknown_81B3243[]; +extern const u8 gUnknown_81B3261[]; +extern const u8 gUnknown_81B3276[]; +extern const u8 gUnknown_81B3290[]; +extern const u8 gUnknown_81B32B6[]; +extern const u8 gUnknown_81B32CD[]; +extern const u8 gUnknown_81B32E3[]; +extern const u8 gUnknown_81B32F9[]; +extern const u8 gUnknown_81B330B[]; +extern const u8 gUnknown_81B332B[]; +extern const u8 gUnknown_81B3344[]; +extern const u8 gUnknown_81B335C[]; +extern const u8 gUnknown_81B3373[]; +extern const u8 gUnknown_81B338C[]; +extern const u8 gUnknown_81B33A6[]; +extern const u8 gUnknown_81B33CA[]; +extern const u8 gUnknown_81B33EA[]; +extern const u8 gUnknown_81B3402[]; +extern const u8 gUnknown_81B3427[]; +extern const u8 gUnknown_81B3440[]; +extern const u8 gUnknown_81B3457[]; +extern const u8 gUnknown_81B346F[]; +extern const u8 gUnknown_81B3481[]; +extern const u8 gUnknown_81B349B[]; +extern const u8 gUnknown_81B34B7[]; +extern const u8 gUnknown_81B34D6[]; +extern const u8 gUnknown_81B34F6[]; +extern const u8 gUnknown_81B3516[]; +extern const u8 gUnknown_81B3525[]; +extern const u8 gUnknown_81B35E6[]; +extern const u8 gUnknown_81B36EB[]; +extern const u8 gUnknown_81B379A[]; +extern const u8 gUnknown_81B3849[]; +extern const u8 gUnknown_81B3876[]; +extern const u8 gUnknown_81B3972[]; +extern const u8 gUnknown_81B3A51[]; +extern const u8 gUnknown_81B3ACC[]; +extern const u8 gUnknown_81B3BB6[]; +extern const u8 gUnknown_81B3C99[]; +extern const u8 gUnknown_81B3D1B[]; +extern const u8 gUnknown_81B3DE3[]; +extern const u8 gUnknown_81B3EBC[]; +extern const u8 gUnknown_81B3F7F[]; +extern const u8 gUnknown_81B406C[]; +extern const u8 gUnknown_81B410B[]; +extern const u8 gUnknown_81B41D7[]; +extern const u8 gUnknown_81B42B3[]; +extern const u8 gUnknown_81B439D[]; +extern const u8 gUnknown_81B4483[]; +extern const u8 gUnknown_81B457C[]; +extern const u8 gUnknown_81B4645[]; +extern const u8 gUnknown_81B470A[]; +extern const u8 gUnknown_81B47F0[]; +extern const u8 gUnknown_81B48C6[]; +extern const u8 gUnknown_81B497A[]; +extern const u8 gUnknown_81B4A72[]; +extern const u8 gUnknown_81B4B65[]; +extern const u8 gUnknown_81B4C54[]; +extern const u8 gUnknown_81B4D26[]; +extern const u8 gUnknown_81B4E0B[]; +extern const u8 gUnknown_81B4ED8[]; +extern const u8 gUnknown_81B4FB2[]; +extern const u8 gUnknown_81B4FFD[]; +extern const u8 gUnknown_81B50FF[]; +extern const u8 gUnknown_81B51B1[]; +extern const u8 gUnknown_81B5272[]; +extern const u8 gUnknown_81B5325[]; +extern const u8 gUnknown_81B5382[]; +extern const u8 gUnknown_81B547C[]; +extern const u8 gUnknown_81B54E1[]; +extern const u8 gUnknown_81B5589[]; +extern const u8 gUnknown_81B55F4[]; +extern const u8 gUnknown_81B56E3[]; +extern const u8 gUnknown_81B56F4[]; +extern const u8 gUnknown_81B5705[]; +extern const u8 gUnknown_81B5717[]; +extern const u8 gUnknown_81B5728[]; +extern const u8 gUnknown_81B5737[]; +extern const u8 gUnknown_81B5744[]; +extern const u8 gUnknown_81B5754[]; +extern const u8 gUnknown_81B5767[]; +extern const u8 gUnknown_81B577B[]; +extern const u8 gUnknown_81B5787[]; +extern const u8 gUnknown_81B5795[]; +extern const u8 gUnknown_81B57A5[]; +extern const u8 gUnknown_81B57B8[]; +extern const u8 gUnknown_81B57CF[]; +extern const u8 gUnknown_81B57DE[]; +extern const u8 gUnknown_81B57EE[]; +extern const u8 gUnknown_81B580D[]; +extern const u8 gUnknown_81B5824[]; +extern const u8 gUnknown_81B5834[]; +extern const u8 gUnknown_81B583F[]; +extern const u8 gUnknown_81B5850[]; +extern const u8 gUnknown_81B5863[]; +extern const u8 gUnknown_81B5875[]; +extern const u8 gUnknown_81B5884[]; +extern const u8 gUnknown_81B5893[]; +extern const u8 gUnknown_81B58A4[]; +extern const u8 gUnknown_81B58BC[]; +extern const u8 gUnknown_81B58D3[]; +extern const u8 gUnknown_81B58E5[]; +extern const u8 gUnknown_81B58FD[]; +extern const u8 gUnknown_81B590E[]; +extern const u8 gUnknown_81B591D[]; +extern const u8 gUnknown_81B592E[]; +extern const u8 gUnknown_81B593E[]; +extern const u8 gUnknown_81B5950[]; +extern const u8 gUnknown_81B595D[]; +extern const u8 gUnknown_81B5974[]; +extern const u8 gUnknown_81B5989[]; +extern const u8 gUnknown_81B59A7[]; +extern const u8 gUnknown_81B59BF[]; +extern const u8 gUnknown_81B59D6[]; +extern const u8 gUnknown_81B59E8[]; +extern const u8 gUnknown_81B59F5[]; +extern const u8 gUnknown_81B5A0D[]; +extern const u8 gUnknown_81B5A1B[]; +extern const u8 gUnknown_81B5A29[]; +extern const u8 gUnknown_81B5A37[]; +extern const u8 gUnknown_81B5A4D[]; +extern const u8 gUnknown_81B5B0C[]; +extern const u8 gUnknown_81B5B7D[]; +extern const u8 gUnknown_81B5C13[]; +extern const u8 gUnknown_81B5CDF[]; +extern const u8 gUnknown_81B5D87[]; +extern const u8 gUnknown_81B5E41[]; +extern const u8 gUnknown_81B5F10[]; +extern const u8 gUnknown_81B5FA6[]; +extern const u8 gUnknown_81B606C[]; +extern const u8 gUnknown_81B6140[]; +extern const u8 gUnknown_81B6203[]; +extern const u8 gUnknown_81B62E4[]; +extern const u8 gUnknown_81B6397[]; +extern const u8 gUnknown_81B6478[]; +extern const u8 gUnknown_81B6525[]; +extern const u8 gUnknown_81B65E7[]; +extern const u8 gUnknown_81B66BA[]; +extern const u8 gUnknown_81B678E[]; +extern const u8 gUnknown_81B6883[]; +extern const u8 gUnknown_81B68CD[]; +extern const u8 gUnknown_81B69B9[]; +extern const u8 gUnknown_81B6A9A[]; +extern const u8 gUnknown_81B6B6E[]; +extern const u8 gUnknown_81B6C4F[]; +extern const u8 gUnknown_81B6D4A[]; +extern const u8 gUnknown_81B6E02[]; +extern const u8 gUnknown_81B6EC1[]; +extern const u8 gUnknown_81B6FA8[]; +extern const u8 gUnknown_81B7075[]; +extern const u8 gUnknown_81B7108[]; +extern const u8 gUnknown_81B71EA[]; +extern const u8 gUnknown_81B723B[]; +extern const u8 gUnknown_81B7319[]; +extern const u8 gUnknown_81B73E8[]; +extern const u8 gUnknown_81B747E[]; +extern const u8 gUnknown_81B752C[]; +extern const u8 gUnknown_81B7611[]; +extern const u8 gUnknown_81B7692[]; +extern const u8 gUnknown_81B771E[]; +extern const u8 gUnknown_81B77DD[]; +extern const u8 gUnknown_81B7884[]; +extern const u8 gUnknown_81B7931[]; +extern const u8 gUnknown_81B79CB[]; +extern const u8 gUnknown_81B7A60[]; +extern const u8 gUnknown_81B7AEE[]; +extern const u8 gUnknown_81B7BBE[]; +extern const u8 gUnknown_81B7C57[]; +extern const u8 gUnknown_81B7CC1[]; +extern const u8 gUnknown_81B7CC4[]; +extern const u8 gUnknown_81B7CD9[]; +extern const u8 gUnknown_81B7CDF[]; +extern const u8 gUnknown_81B7CE6[]; +extern const u8 gUnknown_81B7CEE[]; +extern const u8 gUnknown_81B7CF6[]; +extern const u8 gUnknown_81B7CFE[]; +extern const u8 gUnknown_81B7D04[]; +extern const u8 gUnknown_81B7D12[]; +extern const u8 gUnknown_81B7D17[]; +extern const u8 gUnknown_81B7D1A[]; +extern const u8 gUnknown_81B7D1F[]; +extern const u8 gUnknown_81B7D27[]; +extern const u8 gUnknown_81B7D2D[]; +extern const u8 gUnknown_81B7D37[]; +extern const u8 gUnknown_81B7D3E[]; +extern const u8 gUnknown_81B7D45[]; +extern const u8 gUnknown_81B7D48[]; +extern const u8 gUnknown_81B7D4E[]; +extern const u8 gUnknown_81B7D57[]; +extern const u8 gUnknown_81B7D5B[]; +extern const u8 gUnknown_81B7D61[]; +extern const u8 gUnknown_81B7D6B[]; +extern const u8 gUnknown_81B7D76[]; +extern const u8 gUnknown_81B7D7E[]; +extern const u8 gUnknown_81B7D88[]; +extern const u8 gUnknown_81B7D8F[]; +extern const u8 gUnknown_81B7D9A[]; +extern const u8 gUnknown_81B7DA7[]; +extern const u8 gUnknown_81B7DB4[]; +extern const u8 gUnknown_81B7DBA[]; +extern const u8 gUnknown_81B7DC6[]; +extern const u8 gUnknown_81B7DCC[]; +extern const u8 gUnknown_81B7DD3[]; +extern const u8 gUnknown_81B7DD6[]; +extern const u8 gUnknown_81B7DD9[]; +extern const u8 gUnknown_81B7DE1[]; +extern const u8 gUnknown_81B7DEB[]; +extern const u8 gUnknown_81B7DFA[]; +extern const u8 gUnknown_81B7E02[]; +extern const u8 gUnknown_81B7E09[]; +extern const u8 gUnknown_81B7E0F[]; +extern const u8 gUnknown_81B7E16[]; +extern const u8 gUnknown_81B7F0A[]; +extern const u8 gUnknown_81B800A[]; +extern const u8 gUnknown_81B80EC[]; +extern const u8 gUnknown_81B81C2[]; +extern const u8 gUnknown_81B8256[]; +extern const u8 gUnknown_81B8348[]; +extern const u8 gUnknown_81B83EF[]; +extern const u8 gUnknown_81B847B[]; +extern const u8 gUnknown_81B8550[]; +extern const u8 gUnknown_81B8647[]; +extern const u8 gUnknown_81B86E2[]; +extern const u8 gUnknown_81B87B8[]; +extern const u8 gUnknown_81B8897[]; +extern const u8 gUnknown_81B8924[]; +extern const u8 gUnknown_81B8A04[]; +extern const u8 gUnknown_81B8A84[]; +extern const u8 gUnknown_81B8B62[]; +extern const u8 gUnknown_81B8C18[]; +extern const u8 gUnknown_81B8C94[]; +extern const u8 gUnknown_81B8D1D[]; +extern const u8 gUnknown_81B8DD4[]; +extern const u8 gUnknown_81B8E67[]; +extern const u8 gUnknown_81B8F4D[]; +extern const u8 gUnknown_81B901B[]; +extern const u8 gUnknown_81B90A7[]; +extern const u8 gUnknown_81B90E8[]; +extern const u8 gUnknown_81B9170[]; +extern const u8 gUnknown_81B91C2[]; +extern const u8 gUnknown_81B91F9[]; +extern const u8 gUnknown_81B92B8[]; +extern const u8 gUnknown_81B92ED[]; +extern const u8 gUnknown_81B93D8[]; +extern const u8 gUnknown_81B9439[]; +extern const u8 gUnknown_81B9497[]; +extern const u8 gUnknown_81B9560[]; +extern const u8 gUnknown_81B9656[]; +extern const u8 gUnknown_81B9749[]; +extern const u8 gUnknown_81B984F[]; +extern const u8 gUnknown_81B991C[]; +extern const u8 gUnknown_81B99C4[]; +extern const u8 gUnknown_81B9AA2[]; +extern const u8 gUnknown_81B9B2F[]; +extern const u8 gUnknown_81B9BB7[]; +extern const u8 gUnknown_81B9BC7[]; +extern const u8 gUnknown_81B9BD0[]; +extern const u8 gUnknown_81B9BE1[]; +extern const u8 gUnknown_81B9BF5[]; +extern const u8 gUnknown_81B9C09[]; +extern const u8 gUnknown_81B9C1D[]; +extern const u8 gUnknown_81B9C2F[]; +extern const u8 gUnknown_81B9D04[]; +extern const u8 gUnknown_81B9DC5[]; +extern const u8 gUnknown_81B9E75[]; +extern const u8 gUnknown_81B9F09[]; +extern const u8 gUnknown_81B9FCE[]; +extern const u8 gUnknown_81BA027[]; +extern const u8 gUnknown_81BA0F1[]; +extern const u8 gUnknown_81BA10D[]; +extern const u8 gUnknown_81BA121[]; +extern const u8 gUnknown_81BA138[]; +extern const u8 gUnknown_81BA14C[]; +extern const u8 gUnknown_81BA163[]; +extern const u8 gUnknown_81BA17A[]; +extern const u8 gUnknown_81BA194[]; +extern const u8 gUnknown_81BA1AC[]; +extern const u8 gUnknown_81BA1C7[]; +extern const u8 gUnknown_81BA1DC[]; +extern const u8 gUnknown_81BA1F4[]; +extern const u8 gUnknown_81BA209[]; +extern const u8 gUnknown_81BA221[]; +extern const u8 gUnknown_81BA234[]; +extern const u8 gUnknown_81BA24A[]; +extern const u8 gUnknown_81BA260[]; +extern const u8 gUnknown_81BA279[]; +extern const u8 gUnknown_81BA291[]; +extern const u8 gUnknown_81BA2AC[]; +extern const u8 gUnknown_81BA2C2[]; +extern const u8 gUnknown_81BA2DB[]; +extern const u8 gUnknown_81BA2F1[]; +extern const u8 gUnknown_81BA30A[]; +extern const u8 gUnknown_81BA320[]; +extern const u8 gUnknown_81BA339[]; +extern const u8 gUnknown_81BA34E[]; +extern const u8 gUnknown_81BA366[]; +extern const u8 gUnknown_81BA37C[]; +extern const u8 gUnknown_81BA395[]; +extern const u8 gUnknown_81BA3A9[]; +extern const u8 gUnknown_81BA3C0[]; +extern const u8 gUnknown_81BA3D5[]; +extern const u8 gUnknown_81BA3ED[]; +extern const u8 gUnknown_81BA400[]; +extern const u8 gUnknown_81BA416[]; +extern const u8 gUnknown_81BA4E6[]; +extern const u8 gUnknown_81BA539[]; +extern const u8 gUnknown_81BA595[]; +extern const u8 gUnknown_81BA5F2[]; +extern const u8 gUnknown_81BA66F[]; +extern const u8 gUnknown_81BA6C9[]; +extern const u8 gUnknown_81BA71F[]; +extern const u8 gUnknown_81BA796[]; +extern const u8 gUnknown_81BA7E9[]; +extern const u8 gUnknown_81BA862[]; +extern const u8 gUnknown_81BA8D3[]; +extern const u8 gUnknown_81BA92A[]; +extern const u8 gUnknown_81BA98D[]; +extern const u8 gUnknown_81BA9F1[]; +extern const u8 gUnknown_81BAA44[]; +extern const u8 gUnknown_81BAAB6[]; +extern const u8 gUnknown_81BAB18[]; +extern const u8 gUnknown_81BAB7A[]; +extern const u8 gUnknown_81BABCC[]; +extern const u8 gUnknown_81BAC29[]; +extern const u8 gUnknown_81BAC89[]; +extern const u8 gUnknown_81BACC4[]; +extern const u8 gUnknown_81BAD20[]; +extern const u8 gUnknown_81BAD60[]; +extern const u8 gUnknown_81BADA2[]; +extern const u8 gUnknown_81BADF7[]; +extern const u8 gUnknown_81BAEA8[]; +extern const u8 gUnknown_81BAF01[]; +extern const u8 gUnknown_81BAF6B[]; +extern const u8 gUnknown_81BAFCA[]; +extern const u8 gUnknown_81BB02E[]; +extern const u8 gUnknown_81BB084[]; +extern const u8 gUnknown_81BB0DF[]; +extern const u8 gUnknown_81BB156[]; + +extern const u8 EventScript_FldEffStrength[]; +extern const u8 EventScript_FailSweetScent[]; +extern const u8 EventScript_FldEffRockSmash[]; + +extern const u8 EventScript_SafariTimesUp[]; +extern const u8 EventScript_SafariRetire[]; +extern const u8 EventScript_SafariWarpOut[]; +extern const u8 EventScript_SafariOutOfBalls[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_effect.h b/include/field_effect.h index 979037a8e..426f77510 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -82,5 +82,6 @@ bool8 FieldEffectActiveListContains(u8 id); void sub_80B69DC(void); void CreateTeleportFieldEffectTask(void); void FieldEffectActiveListRemove(u8 id); +void sub_8085620(void); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index d0856c84c..4ba350491 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -14,5 +14,6 @@ void sub_807E500(void); void sub_807DF64(void); void sub_807DC18(void); void FieldCallback_ReturnToEventScript2(void); +void sub_807DC00(void); #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 69e3419de..83cc263e5 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -46,9 +46,9 @@ void FieldObjectClearAnim(struct MapObject *); void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); void SpawnFieldObjectsInView(s16, s16); u8 sprite_new(u8, u8, s16, s16, u8, u8); -u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8); +u8 AddPseudoEventObject(u16, SpriteCallback, s16, s16, u8); u8 show_sprite(u8, u8, u8); -u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); +u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); void sub_8093038(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); @@ -76,21 +76,25 @@ u8 GetStepInPlaceDelay32AnimId(u32); u8 npc_block_way(struct MapObject *, s16, s16, u32); void MoveCoords(u8, s16 *, s16 *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); -u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); +u8 FieldObjectClearHeldMovementIfFinished(struct MapObject *); u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z); void sub_8063E28(struct MapObject *, struct Sprite *); -void sub_8063CA4(struct MapObject *, u8); +void FieldObjectSetHeldMovement(struct MapObject *, u8); void npc_coords_shift_still(struct MapObject *); void sub_805FE7C(struct MapObject *, u8); void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 sub_80634F0(u8 direction); u8 sub_8063500(u8 a0); -void sub_805F060(struct MapObject *mapObject, u8 a1); +void EventObjectSetGraphicsId(struct MapObject *mapObject, u8 a1); u8 sub_805EB44(u8, u8, s16, s16); void npc_paltag_set_load(u8 mode); +bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); +u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); // Exported data declarations extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; +extern const struct SpritePalette gUnknown_83A5348; +extern const struct SpriteTemplate * const gUnknown_83A0010[]; #endif //GUARD_FIELD_MAP_OBJ_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index b365a9d92..b87de3fef 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -8,7 +8,7 @@ void SetPlayerAvatarExtraStateTransition(u8, u8); u8 GetPlayerAvatarGenderByGraphicsId(u8); bool8 TestPlayerAvatarFlags(u8); void PlayerGetDestCoords(s16 *, s16 *); -u8 player_get_direction_lower_nybble(void); +u8 GetPlayerFacingDirection(void); u8 player_get_direction_upper_nybble(void); u8 player_get_x22(void); @@ -22,5 +22,11 @@ void sub_805D9C4(struct Sprite *sprite); void sub_805D154(u8 direction); void sub_805DAE4(u8 direction); void SetPlayerAvatarTransitionFlags(u16 a); +bool8 IsPlayerFacingSurfableFishableWater(void); +void sub_805D2C0(u8 secondaryId); +u8 GetPlayerAvatarObjectId(void); +u8 PlayerGetZCoord(void); +u8 GetPlayerAvatarGraphicsIdByCurrentState(void); +void sub_805CB70(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_poison.h b/include/field_poison.h index fcfb71cf5..4887fa27a 100644 --- a/include/field_poison.h +++ b/include/field_poison.h @@ -3,19 +3,13 @@ #include "global.h" -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - enum { FLDPSN_NONE, FLDPSN_PSN, FLDPSN_FNT }; -void sub_80F972C(void); -unsigned int overworld_poison(void); +void ExecuteWhiteOut(void); +s32 DoPoisonFieldEffect(void); #endif //GUARD_FIELD_POISON_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 14d7e5d81..d1fde7eac 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -6,5 +6,6 @@ void sub_80AF79C(void); void sub_807F028(u8); void sub_80B0244(void); +void sub_807E3EC(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_specials.h b/include/field_specials.h index c1bc8e8c9..a82cb20a2 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -7,5 +7,11 @@ u8 GetLeadMonIndex(void); u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); u16 ScrSpecial_GetStarter(void); +void sub_80CCB68(void); +void nullsub_60(void); +void nullsub_61(void); +u8 ContextNpcGetTextColor(void); +void set_unknown_box_id(u8); +u16 get_unknown_box_id(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_weather.h b/include/field_weather.h index cf0e34d06..c3ecd4fa6 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -13,5 +13,8 @@ void DoCurrentWeather(void); void SetSav1WeatherFromCurrMapHeader(void); void sub_807B0C4(u16 *, u16 *, u32); void PlayRainStoppingSoundEffect(void); +bool8 sub_807AA70(void); +void SetWeatherScreenFadeOut(void); +void sub_807B070(void); #endif // GUARD_WEATHER_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 537626edc..9903962a1 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -12,6 +12,7 @@ #define VIRTUAL_MAP_SIZE 0x2800 extern struct BackupMapData VMap; +extern const struct MapData Route1_Layout; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); diff --git a/include/fldeff.h b/include/fldeff.h index 364cb7550..e5e7e5f7d 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -1,7 +1,51 @@ #ifndef GUARD_FLDEFF_H #define GUARD_FLDEFF_H -// rock smash +#define FLDEFF_CALL_FUNC_IN_DATA() ((void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]))(); + +#define FLDEFF_SET_FUNC_TO_DATA(func) \ +gTasks[taskId].data[8] = (u32)func >> 16; \ +gTasks[taskId].data[9] = (u32)func; + +extern struct MapPosition gPlayerFacingPosition; + +bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); u8 oei_task_add(void); +// flash + +// cut + +// dig +bool8 SetUpFieldMove_Dig(void); +bool8 FldEff_UseDig(void); + +// rocksmash +bool8 SetUpFieldMove_RockSmash(void); +bool8 FldEff_UseRockSmash(void); + +// berrytree +void nullsub_56(void); + +// poison +void FldEffPoison_Start(void); +bool32 FldEffPoison_IsActive(void); + +// strength +bool8 SetUpFieldMove_Strength(void); +bool8 sub_80D0860(void); + +// teleport +bool8 SetUpFieldMove_Teleport(void); +bool8 FldEff_UseTeleport(void); + +// softboiled +bool8 hm_prepare_dive_probably(void); +void sub_80E56DC(u8 taskId); +void sub_80E5724(u8 taskId); + +// sweetscent +bool8 SetUpFieldMove_SweetScent(void); +bool8 FldEff_SweetScent(void); + #endif // GUARD_FLDEFF_H diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h deleted file mode 100644 index 3960c6c65..000000000 --- a/include/fldeff_80F9BCC.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef GUARD_FLDEFF_80F9BCC_H -#define GUARD_FLDEFF_80F9BCC_H - -#include "global.h" - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - -void sub_80FA5E4(s16 id, s16 x, s16 y); -void sub_80FA794(s16 x, s16 y); -void overworld_poison_effect(void); - -#endif //GUARD_FLDEFF_80F9BCC_H diff --git a/include/gba/defines.h b/include/gba/defines.h index a0ef506dd..5489f9e14 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -40,6 +40,9 @@ #define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (BG_SCREEN_SIZE * (n))) #define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n))) +#define BG_TILE_H_FLIP(n) (0x400 + (n)) +#define BG_TILE_V_FLIP(n) (0x800 + (n)) + // text-mode BG #define OBJ_VRAM0 (void *)(VRAM + 0x10000) #define OBJ_VRAM0_SIZE 0x8000 diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h index e88b43a19..a8bc8fddf 100644 --- a/include/gba/multiboot.h +++ b/include/gba/multiboot.h @@ -18,9 +18,9 @@ struct MultiBootParam u8 response_bit; u8 client_bit; u8 reserved1; - u8 *boot_srcp; - u8 *boot_endp; - u8 *masterp; + const u8 *boot_srcp; + const u8 *boot_endp; + const u8 *masterp; u8 *reserved2[MULTIBOOT_NCHILD]; u32 system_work2[4]; u8 sendflag; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a14905cc2..3623737ea 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -51,8 +51,8 @@ struct Tileset /*0x04*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ void *metatiles; - /*0x14*/ TilesetCB callback; - /*0x10*/ void *metatileAttributes; + /*0x10*/ TilesetCB callback; + /*0x14*/ void *metatileAttributes; }; struct MapData diff --git a/include/global.h b/include/global.h index b10f4af49..e1f63213a 100644 --- a/include/global.h +++ b/include/global.h @@ -4,6 +4,7 @@ #include "config.h" #include "gba/gba.h" #include <string.h> +#include "constants/global.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -39,10 +40,6 @@ // Converts a number to Q4.12 fixed-point format #define Q_4_12(n) ((s16)((n) * 4096)) -#define POKEMON_SLOTS_NUMBER 412 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 - #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) @@ -72,81 +69,13 @@ #define TEST_BUTTON(field, button) ({(field) & (button);}) #define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button) #define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button) +#define JOY_REPT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button) extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; -enum -{ - VERSION_SAPPHIRE = 1, - VERSION_RUBY = 2, - VERSION_EMERALD = 3, - VERSION_FIRE_RED = 4, - VERSION_LEAF_GREEN = 5, -}; - -enum LanguageId { - LANGUAGE_JAPANESE = 1, - LANGUAGE_ENGLISH = 2, - LANGUAGE_FRENCH = 3, - LANGUAGE_ITALIAN = 4, - LANGUAGE_GERMAN = 5, - // 6 goes unused but the theory is it was meant to be Korean - LANGUAGE_SPANISH = 7, -}; - -#define GAME_LANGUAGE (LANGUAGE_ENGLISH) - -#define PC_ITEMS_COUNT 30 -#define BAG_ITEMS_COUNT 42 -#define BAG_KEYITEMS_COUNT 30 -#define BAG_POKEBALLS_COUNT 13 -#define BAG_TMHM_COUNT 58 -#define BAG_BERRIES_COUNT 43 - -enum -{ - MALE, - FEMALE -}; - -enum -{ - OPTIONS_BUTTON_MODE_NORMAL, - OPTIONS_BUTTON_MODE_LR, - OPTIONS_BUTTON_MODE_L_EQUALS_A -}; - -enum -{ - OPTIONS_TEXT_SPEED_SLOW, - OPTIONS_TEXT_SPEED_MID, - OPTIONS_TEXT_SPEED_FAST -}; - -enum -{ - OPTIONS_SOUND_MONO, - OPTIONS_SOUND_STEREO -}; - -enum -{ - OPTIONS_BATTLE_STYLE_SHIFT, - OPTIONS_BATTLE_STYLE_SET -}; - -enum -{ - BAG_ITEMS = 1, - BAG_POKEBALLS, - BAG_TMsHMs, - BAG_BERRIES, - BAG_KEYITEMS -}; - struct Coords16 { s16 x; @@ -280,7 +209,7 @@ struct SaveBlock2 { /*0x000*/ u8 playerName[PLAYER_NAME_LENGTH]; /*0x008*/ u8 playerGender; // MALE, FEMALE - /*0x009*/ u8 specialSaveWarp; + /*0x009*/ u8 specialSaveWarpFlags; /*0x00A*/ u8 playerTrainerId[4]; /*0x00E*/ u16 playTimeHours; /*0x010*/ u8 playTimeMinutes; @@ -797,8 +726,14 @@ struct SaveBlock1 /*0x3D38*/ struct TrainerTowerLog unkArray[4]; }; -extern struct SaveBlock1* gSaveBlock1Ptr; +struct MapPosition +{ + s16 x; + s16 y; + s8 height; +}; +extern struct SaveBlock1* gSaveBlock1Ptr; extern u8 gReservedSpritePaletteCount; #endif // GUARD_GLOBAL_H diff --git a/include/graphics.h b/include/graphics.h index 04d05da2b..e8503609e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -32,6 +32,9 @@ extern const u8 gInterfacePal_LuxuryBall[]; extern const u8 gInterfaceGfx_PremierBall[]; extern const u8 gInterfacePal_PremierBall[]; extern const u8 gOpenPokeballGfx[]; +extern const u8 gFireRedMenuElements_Gfx[]; +extern const u16 gFireRedMenuElements1_Pal[]; +extern const u16 gFireRedMenuElements2_Pal[]; extern const u8 gItemIcon_QuestionMark[]; extern const u8 gItemIconPalette_QuestionMark[]; @@ -160,6 +163,7 @@ extern const u32 gTMCase_TMSpriteGfx[]; extern const u32 gUnknown_8E84F20[]; extern const u32 gUnknown_8E85068[]; extern const u8 gUnknown_8E99118[]; +extern const u16 gTMCaseMainWindowPalette[]; // egg_hatch extern const u32 gBattleTextboxTiles[]; @@ -168,4 +172,793 @@ extern const u32 gBattleTextboxPalette[]; extern const u32 gTradeGba2_Pal[]; extern const u32 gTradeGba_Gfx[]; +// teachy_tv +extern const u8 gUnknown_8E86240[]; +extern const u8 gUnknown_8E86BE8[]; +extern const u8 gUnknown_8E86D6C[]; +extern const u8 gUnknown_8E86F98[]; + +// berry_fix_program +extern const u8 gBerryFixGameboy_Gfx[]; +extern const u8 gBerryFixGameboy_Tilemap[]; +extern const u8 gBerryFixGameboy_Pal[]; +extern const u8 gBerryFixGameboyLogo_Gfx[]; +extern const u8 gBerryFixGameboyLogo_Tilemap[]; +extern const u8 gBerryFixGameboyLogo_Pal[]; +extern const u8 gBerryFixGbaTransfer_Gfx[]; +extern const u8 gBerryFixGbaTransfer_Tilemap[]; +extern const u8 gBerryFixGbaTransfer_Pal[]; +extern const u8 gBerryFixGbaTransferHighlight_Gfx[]; +extern const u8 gBerryFixGbaTransferHighlight_Tilemap[]; +extern const u8 gBerryFixGbaTransferHighlight_Pal[]; +extern const u8 gBerryFixGbaTransferError_Gfx[]; +extern const u8 gBerryFixGbaTransferError_Tilemap[]; +extern const u8 gBerryFixGbaTransferError_Pal[]; +extern const u8 gBerryFixWindow_Gfx[]; +extern const u8 gBerryFixWindow_Tilemap[]; +extern const u8 gBerryFixWindow_Pal[]; + +// item_pc + +extern const u8 gItemPcTiles[]; +extern const u8 gItemPcBgPals[]; +extern const u8 gItemPcTilemap[]; + +// item_menu_icons +extern const u32 gUnknown_8E8362C[]; +extern const u32 gUnknown_8E83DBC[]; +extern const u32 gUnknown_8E84560[]; +extern const u32 gFile_graphics_interface_bag_swap_sheet[]; +extern const u32 gFile_graphics_interface_bag_swap_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_master_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_master_ball_palette[]; +extern const u8 gFile_graphics_items_icons_ultra_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ultra_ball_palette[]; +extern const u8 gFile_graphics_items_icons_great_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_great_ball_palette[]; +extern const u8 gFile_graphics_items_icons_poke_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poke_ball_palette[]; +extern const u8 gFile_graphics_items_icons_safari_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_safari_ball_palette[]; +extern const u8 gFile_graphics_items_icons_net_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_net_ball_palette[]; +extern const u8 gFile_graphics_items_icons_dive_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dive_ball_palette[]; +extern const u8 gFile_graphics_items_icons_nest_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_nest_ball_palette[]; +extern const u8 gFile_graphics_items_icons_repeat_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[]; +extern const u8 gFile_graphics_items_icons_timer_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[]; +extern const u8 gFile_graphics_items_icons_luxury_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[]; +extern const u8 gFile_graphics_items_icons_premier_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[]; +extern const u8 gFile_graphics_items_icons_potion_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_potion_palette[]; +extern const u8 gFile_graphics_items_icons_antidote_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_antidote_palette[]; +extern const u8 gFile_graphics_items_icons_status_heal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_burn_heal_palette[]; +extern const u8 gFile_graphics_items_icons_status_heal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ice_heal_palette[]; +extern const u8 gFile_graphics_items_icons_status_heal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_awakening_palette[]; +extern const u8 gFile_graphics_items_icons_status_heal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_paralyze_heal_palette[]; +extern const u8 gFile_graphics_items_icons_large_potion_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_full_restore_palette[]; +extern const u8 gFile_graphics_items_icons_large_potion_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_max_potion_palette[]; +extern const u8 gFile_graphics_items_icons_potion_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hyper_potion_palette[]; +extern const u8 gFile_graphics_items_icons_potion_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_super_potion_palette[]; +extern const u8 gFile_graphics_items_icons_full_heal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_full_heal_palette[]; +extern const u8 gFile_graphics_items_icons_revive_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_revive_palette[]; +extern const u8 gFile_graphics_items_icons_max_revive_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_revive_palette[]; +extern const u8 gFile_graphics_items_icons_fresh_water_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fresh_water_palette[]; +extern const u8 gFile_graphics_items_icons_soda_pop_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[]; +extern const u8 gFile_graphics_items_icons_lemonade_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[]; +extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];; +extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[]; +extern const u8 gFile_graphics_items_icons_energy_root_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[]; +extern const u8 gFile_graphics_items_icon_palettes_heal_powder_palette[]; +extern const u8 gFile_graphics_items_icons_revival_herb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_revival_herb_palette[]; +extern const u8 gFile_graphics_items_icons_ether_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ether_palette[]; +extern const u8 gFile_graphics_items_icons_ether_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_max_ether_palette[]; +extern const u8 gFile_graphics_items_icons_ether_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_elixir_palette[]; +extern const u8 gFile_graphics_items_icons_ether_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_max_elixir_palette[]; +extern const u8 gFile_graphics_items_icons_lava_cookie_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[]; +extern const u8 gFile_graphics_items_icons_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_blue_flute_palette[]; +extern const u8 gFile_graphics_items_icons_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_yellow_flute_palette[]; +extern const u8 gFile_graphics_items_icons_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_red_flute_palette[]; +extern const u8 gFile_graphics_items_icons_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_black_flute_palette[]; +extern const u8 gFile_graphics_items_icons_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_white_flute_palette[]; +extern const u8 gFile_graphics_items_icons_berry_juice_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_berry_juice_palette[]; +extern const u8 gFile_graphics_items_icons_sacred_ash_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sacred_ash_palette[]; +extern const u32 gFile_graphics_items_icons_powder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_shoal_salt_palette[]; +extern const u8 gFile_graphics_items_icons_shoal_shell_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_shell_palette[]; +extern const u8 gFile_graphics_items_icons_shard_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_red_shard_palette[]; +extern const u8 gFile_graphics_items_icons_shard_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_blue_shard_palette[]; +extern const u8 gFile_graphics_items_icons_shard_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_yellow_shard_palette[]; +extern const u8 gFile_graphics_items_icons_shard_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_green_shard_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_hp_up_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hp_up_palette[]; +extern const u8 gFile_graphics_items_icons_vitamin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_protein_palette[]; +extern const u8 gFile_graphics_items_icons_vitamin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_iron_palette[]; +extern const u8 gFile_graphics_items_icons_vitamin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_carbos_palette[]; +extern const u8 gFile_graphics_items_icons_vitamin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_calcium_palette[]; +extern const u8 gFile_graphics_items_icons_rare_candy_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rare_candy_palette[]; +extern const u8 gFile_graphics_items_icons_pp_up_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pp_up_palette[]; +extern const u8 gFile_graphics_items_icons_vitamin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_zinc_palette[]; +extern const u8 gFile_graphics_items_icons_pp_max_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pp_max_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_guard_spec_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dire_hit_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_x_attack_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_x_defend_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_x_speed_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_x_accuracy_palette[]; +extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_x_special_palette[]; +extern const u8 gFile_graphics_items_icons_poke_doll_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poke_doll_palette[]; +extern const u8 gFile_graphics_items_icons_fluffy_tail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fluffy_tail_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_repel_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_super_repel_palette[]; +extern const u8 gFile_graphics_items_icons_repel_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_max_repel_palette[]; +extern const u8 gFile_graphics_items_icons_escape_rope_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_escape_rope_palette[]; +extern const u8 gFile_graphics_items_icons_repel_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_repel_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_sun_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sun_stone_palette[]; +extern const u8 gFile_graphics_items_icons_moon_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_moon_stone_palette[]; +extern const u8 gFile_graphics_items_icons_fire_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fire_stone_palette[]; +extern const u8 gFile_graphics_items_icons_thunder_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_thunder_stone_palette[]; +extern const u8 gFile_graphics_items_icons_water_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_stone_palette[]; +extern const u8 gFile_graphics_items_icons_leaf_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_leaf_stone_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_tiny_mushroom_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[]; +extern const u8 gFile_graphics_items_icons_big_mushroom_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_pearl_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[]; +extern const u8 gFile_graphics_items_icons_big_pearl_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[]; +extern const u8 gFile_graphics_items_icons_stardust_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_star_palette[]; +extern const u8 gFile_graphics_items_icons_star_piece_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_star_palette[]; +extern const u8 gFile_graphics_items_icons_nugget_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_nugget_palette[]; +extern const u8 gFile_graphics_items_icons_heart_scale_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_heart_scale_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_orange_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_orange_mail_palette[]; +extern const u8 gFile_graphics_items_icons_harbor_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_harbor_mail_palette[]; +extern const u8 gFile_graphics_items_icons_glitter_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_glitter_mail_palette[]; +extern const u8 gFile_graphics_items_icons_mech_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mech_mail_palette[]; +extern const u8 gFile_graphics_items_icons_wood_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_wood_mail_palette[]; +extern const u8 gFile_graphics_items_icons_wave_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_wave_mail_palette[]; +extern const u8 gFile_graphics_items_icons_bead_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_bead_mail_palette[]; +extern const u8 gFile_graphics_items_icons_shadow_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_shadow_mail_palette[]; +extern const u8 gFile_graphics_items_icons_tropic_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_tropic_mail_palette[]; +extern const u8 gFile_graphics_items_icons_dream_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dream_mail_palette[]; +extern const u8 gFile_graphics_items_icons_fab_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fab_mail_palette[]; +extern const u8 gFile_graphics_items_icons_retro_mail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_retro_mail_palette[]; +extern const u8 gFile_graphics_items_icons_cheri_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_cheri_berry_palette[]; +extern const u8 gFile_graphics_items_icons_chesto_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_chesto_berry_palette[]; +extern const u8 gFile_graphics_items_icons_pecha_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pecha_berry_palette[]; +extern const u8 gFile_graphics_items_icons_rawst_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rawst_berry_palette[]; +extern const u8 gFile_graphics_items_icons_aspear_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_aspear_berry_palette[]; +extern const u8 gFile_graphics_items_icons_leppa_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_leppa_berry_palette[]; +extern const u8 gFile_graphics_items_icons_oran_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_oran_berry_palette[]; +extern const u8 gFile_graphics_items_icons_persim_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_persim_berry_palette[]; +extern const u8 gFile_graphics_items_icons_lum_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lum_berry_palette[]; +extern const u8 gFile_graphics_items_icons_sitrus_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sitrus_berry_palette[]; +extern const u8 gFile_graphics_items_icons_figy_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_figy_berry_palette[]; +extern const u8 gFile_graphics_items_icons_wiki_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_wiki_berry_palette[]; +extern const u8 gFile_graphics_items_icons_mago_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mago_berry_palette[]; +extern const u8 gFile_graphics_items_icons_aguav_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_aguav_berry_palette[]; +extern const u8 gFile_graphics_items_icons_iapapa_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_iapapa_berry_palette[]; +extern const u8 gFile_graphics_items_icons_razz_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_razz_berry_palette[]; +extern const u8 gFile_graphics_items_icons_bluk_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_bluk_berry_palette[]; +extern const u8 gFile_graphics_items_icons_nanab_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_nanab_berry_palette[]; +extern const u8 gFile_graphics_items_icons_wepear_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_wepear_berry_palette[]; +extern const u8 gFile_graphics_items_icons_pinap_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pinap_berry_palette[]; +extern const u8 gFile_graphics_items_icons_pomeg_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pomeg_berry_palette[]; +extern const u8 gFile_graphics_items_icons_kelpsy_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_kelpsy_berry_palette[]; +extern const u8 gFile_graphics_items_icons_qualot_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_qualot_berry_palette[]; +extern const u8 gFile_graphics_items_icons_hondew_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hondew_berry_palette[]; +extern const u8 gFile_graphics_items_icons_grepa_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_grepa_berry_palette[]; +extern const u8 gFile_graphics_items_icons_tamato_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_tamato_berry_palette[]; +extern const u8 gFile_graphics_items_icons_cornn_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_cornn_berry_palette[]; +extern const u8 gFile_graphics_items_icons_magost_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_magost_berry_palette[]; +extern const u8 gFile_graphics_items_icons_rabuta_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rabuta_berry_palette[]; +extern const u8 gFile_graphics_items_icons_nomel_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_nomel_berry_palette[]; +extern const u8 gFile_graphics_items_icons_spelon_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_spelon_berry_palette[]; +extern const u8 gFile_graphics_items_icons_pamtre_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pamtre_berry_palette[]; +extern const u8 gFile_graphics_items_icons_watmel_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_watmel_berry_palette[]; +extern const u8 gFile_graphics_items_icons_durin_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_durin_berry_palette[]; +extern const u8 gFile_graphics_items_icons_belue_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_belue_berry_palette[]; +extern const u8 gFile_graphics_items_icons_liechi_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_liechi_berry_palette[]; +extern const u8 gFile_graphics_items_icons_ganlon_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ganlon_berry_palette[]; +extern const u8 gFile_graphics_items_icons_salac_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_salac_berry_palette[]; +extern const u8 gFile_graphics_items_icons_petaya_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_petaya_berry_palette[]; +extern const u8 gFile_graphics_items_icons_apicot_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_apicot_berry_palette[]; +extern const u8 gFile_graphics_items_icons_lansat_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lansat_berry_palette[]; +extern const u8 gFile_graphics_items_icons_starf_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_starf_berry_palette[]; +extern const u8 gFile_graphics_items_icons_enigma_berry_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_enigma_berry_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_bright_powder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_bright_powder_palette[]; +extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_white_herb_palette[]; +extern const u8 gFile_graphics_items_icons_macho_brace_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_macho_brace_palette[]; +extern const u8 gFile_graphics_items_icons_exp_share_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_exp_share_palette[]; +extern const u8 gFile_graphics_items_icons_quick_claw_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_quick_claw_palette[]; +extern const u8 gFile_graphics_items_icons_soothe_bell_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_soothe_bell_palette[]; +extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mental_herb_palette[]; +extern const u8 gFile_graphics_items_icons_choice_band_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_choice_band_palette[]; +extern const u8 gFile_graphics_items_icons_kings_rock_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_kings_rock_palette[]; +extern const u8 gFile_graphics_items_icons_silver_powder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_silver_powder_palette[]; +extern const u8 gFile_graphics_items_icons_amulet_coin_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_amulet_coin_palette[]; +extern const u8 gFile_graphics_items_icons_cleanse_tag_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_cleanse_tag_palette[]; +extern const u8 gFile_graphics_items_icons_soul_dew_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_soul_dew_palette[]; +extern const u8 gFile_graphics_items_icons_deep_sea_tooth_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_deep_sea_tooth_palette[]; +extern const u8 gFile_graphics_items_icons_deep_sea_scale_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_deep_sea_scale_palette[]; +extern const u8 gFile_graphics_items_icons_smoke_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_smoke_ball_palette[]; +extern const u8 gFile_graphics_items_icons_everstone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_everstone_palette[]; +extern const u8 gFile_graphics_items_icons_focus_band_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_focus_band_palette[]; +extern const u8 gFile_graphics_items_icons_lucky_egg_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lucky_egg_palette[]; +extern const u8 gFile_graphics_items_icons_scope_lens_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_scope_lens_palette[]; +extern const u8 gFile_graphics_items_icons_metal_coat_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_metal_coat_palette[]; +extern const u8 gFile_graphics_items_icons_leftovers_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_leftovers_palette[]; +extern const u8 gFile_graphics_items_icons_dragon_scale_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dragon_scale_palette[]; +extern const u8 gFile_graphics_items_icons_light_ball_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_light_ball_palette[]; +extern const u8 gFile_graphics_items_icons_soft_sand_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_soft_sand_palette[]; +extern const u8 gFile_graphics_items_icons_hard_stone_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hard_stone_palette[]; +extern const u8 gFile_graphics_items_icons_miracle_seed_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_miracle_seed_palette[]; +extern const u8 gFile_graphics_items_icons_black_glasses_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[]; +extern const u8 gFile_graphics_items_icons_black_belt_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[]; +extern const u8 gFile_graphics_items_icons_magnet_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_magnet_palette[]; +extern const u8 gFile_graphics_items_icons_mystic_water_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mystic_water_palette[]; +extern const u8 gFile_graphics_items_icons_sharp_beak_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sharp_beak_palette[]; +extern const u8 gFile_graphics_items_icons_poison_barb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poison_barb_palette[]; +extern const u8 gFile_graphics_items_icons_never_melt_ice_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_never_melt_ice_palette[]; +extern const u8 gFile_graphics_items_icons_spell_tag_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_spell_tag_palette[]; +extern const u8 gFile_graphics_items_icons_twisted_spoon_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_twisted_spoon_palette[]; +extern const u8 gFile_graphics_items_icons_charcoal_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_charcoal_palette[]; +extern const u8 gFile_graphics_items_icons_dragon_fang_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dragon_fang_palette[]; +extern const u8 gFile_graphics_items_icons_silk_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_silk_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_up_grade_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_up_grade_palette[]; +extern const u8 gFile_graphics_items_icons_shell_bell_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_shell_palette[]; +extern const u8 gFile_graphics_items_icons_sea_incense_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sea_incense_palette[]; +extern const u8 gFile_graphics_items_icons_lax_incense_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lax_incense_palette[]; +extern const u8 gFile_graphics_items_icons_lucky_punch_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lucky_punch_palette[]; +extern const u8 gFile_graphics_items_icons_metal_powder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_metal_powder_palette[]; +extern const u8 gFile_graphics_items_icons_thick_club_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_thick_club_palette[]; +extern const u8 gFile_graphics_items_icons_stick_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_stick_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_red_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_blue_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pink_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_green_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_scarf_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_yellow_scarf_palette[]; +extern const u8 gFile_graphics_items_icons_mach_bike_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mach_bike_palette[]; +extern const u8 gFile_graphics_items_icons_coin_case_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_coin_case_palette[]; +extern const u8 gFile_graphics_items_icons_itemfinder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_itemfinder_palette[]; +extern const u8 gFile_graphics_items_icons_old_rod_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_old_rod_palette[]; +extern const u8 gFile_graphics_items_icons_good_rod_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_good_rod_palette[]; +extern const u8 gFile_graphics_items_icons_super_rod_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_super_rod_palette[]; +extern const u8 gFile_graphics_items_icons_ss_ticket_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ss_ticket_palette[]; +extern const u8 gFile_graphics_items_icons_contest_pass_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_contest_pass_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_wailmer_pail_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_wailmer_pail_palette[]; +extern const u8 gFile_graphics_items_icons_devon_goods_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_devon_goods_palette[]; +extern const u8 gFile_graphics_items_icons_soot_sack_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_soot_sack_palette[]; +extern const u8 gFile_graphics_items_icons_basement_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[]; +extern const u8 gFile_graphics_items_icons_acro_bike_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_acro_bike_palette[]; +extern const u8 gFile_graphics_items_icons_pokeblock_case_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_pokeblock_case_palette[]; +extern const u8 gFile_graphics_items_icons_letter_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[]; +extern const u8 gFile_graphics_items_icons_eon_ticket_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_eon_ticket_palette[]; +extern const u8 gFile_graphics_items_icons_orb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_red_orb_palette[]; +extern const u8 gFile_graphics_items_icons_orb_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_blue_orb_palette[]; +extern const u8 gFile_graphics_items_icons_scanner_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_scanner_palette[]; +extern const u8 gFile_graphics_items_icons_go_goggles_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_go_goggles_palette[]; +extern const u8 gFile_graphics_items_icons_meteorite_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_meteorite_palette[]; +extern const u8 gFile_graphics_items_icons_room1_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_key_palette[]; +extern const u8 gFile_graphics_items_icons_room2_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_key_palette[]; +extern const u8 gFile_graphics_items_icons_room4_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_key_palette[]; +extern const u8 gFile_graphics_items_icons_room6_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_key_palette[]; +extern const u8 gFile_graphics_items_icons_storage_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[]; +extern const u8 gFile_graphics_items_icons_root_fossil_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[]; +extern const u8 gFile_graphics_items_icons_claw_fossil_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[]; +extern const u8 gFile_graphics_items_icons_devon_scope_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_devon_scope_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dragon_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ghost_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_tm_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; +extern const u8 gFile_graphics_items_icons_oaks_parcel_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_oaks_parcel_palette[]; +extern const u8 gFile_graphics_items_icons_poke_flute_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_poke_flute_palette[]; +extern const u8 gFile_graphics_items_icons_secret_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_secret_key_palette[]; +extern const u8 gFile_graphics_items_icons_bike_voucher_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_bike_voucher_palette[]; +extern const u8 gFile_graphics_items_icons_gold_teeth_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_gold_teeth_palette[]; +extern const u8 gFile_graphics_items_icons_old_amber_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_old_amber_palette[]; +extern const u8 gFile_graphics_items_icons_card_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_card_key_palette[]; +extern const u8 gFile_graphics_items_icons_lift_key_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_key_palette[]; +extern const u8 gFile_graphics_items_icons_helix_fossil_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[]; +extern const u8 gFile_graphics_items_icons_dome_fossil_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[]; +extern const u8 gFile_graphics_items_icons_silph_scope_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_silph_scope_palette[]; +extern const u8 gFile_graphics_items_icons_bicycle_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_bicycle_palette[]; +extern const u8 gFile_graphics_items_icons_town_map_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_town_map_palette[]; +extern const u8 gFile_graphics_items_icons_vs_seeker_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_vs_seeker_palette[]; +extern const u8 gFile_graphics_items_icons_fame_checker_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_fame_checker_palette[]; +extern const u8 gFile_graphics_items_icons_tm_case_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_tm_case_palette[]; +extern const u8 gFile_graphics_items_icons_berry_pouch_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_berry_pouch_palette[]; +extern const u8 gFile_graphics_items_icons_teachy_tv_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_teachy_tv_palette[]; +extern const u8 gFile_graphics_items_icons_tri_pass_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_tri_pass_palette[]; +extern const u8 gFile_graphics_items_icons_rainbow_pass_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_rainbow_pass_palette[]; +extern const u8 gFile_graphics_items_icons_tea_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_tea_palette[]; +extern const u8 gFile_graphics_items_icons_mystic_ticket_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_mystic_ticket_palette[]; +extern const u8 gFile_graphics_items_icons_aurora_ticket_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_aurora_ticket_palette[]; +extern const u8 gFile_graphics_items_icons_powder_jar_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_powder_jar_palette[]; +extern const u8 gFile_graphics_items_icons_gem_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_ruby_palette[]; +extern const u8 gFile_graphics_items_icons_gem_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[]; +extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h index 2dc9fae41..1d2122399 100644 --- a/include/hall_of_fame.h +++ b/include/hall_of_fame.h @@ -7,5 +7,8 @@ void CB2_DoHallOfFameScreen(void); void CB2_DoHallOfFameScreenDontSaveData(void); void CB2_DoHallOfFamePC(void); void sub_8175280(void); +void sub_80F2978(void); +void HallOfFamePCBeginFade(void); +void ReturnFromHallOfFamePC(void); #endif // GUARD_HALL_OF_FAME_H diff --git a/include/help_system.h b/include/help_system.h index 6398d306b..3ba0cf475 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -2,11 +2,92 @@ #define GUARD_HELP_SYSTEM_H #include "global.h" +#include "list_menu.h" +#include "blit.h" +struct HelpSystemListMenu_sub +{ + struct ListMenuItem * items; + u16 totalItems; + u16 maxShowed; + u8 left; + u8 top; +}; + +struct HelpSystemListMenu +{ + struct HelpSystemListMenu_sub sub; + u8 field_0C; + u8 field_0D; + u8 field_0E; + u8 filler_10[0xC]; +}; + +extern struct HelpSystemListMenu gHelpSystemListMenu; +extern struct ListMenuItem gHelpSystemListMenuItems[]; extern bool8 gUnknown_3005ECC; +extern u8 gUnknown_203F175; -void sub_812B484(void); +// help_system_812B1E0 +void sub_812B1E0(u8); void HelpSystem_SetSomeVariable2(u8); +bool8 sub_812B40C(void); +bool8 sub_812B45C(void); void sub_812B478(void); +void sub_812B484(void); +void sub_812B4B8(void); +bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BC80(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BCA8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BCD0(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BD2C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BD64(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BD98(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +void sub_812BDEC(void); +bool8 sub_812BE10(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BEEC(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BF18(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); +bool8 sub_812BF88(void); + +// help_system +bool8 RunHelpSystemCallback(void); +void SaveCallbacks(void); +void SaveMapGPURegs(void); +void SaveMapTiles(void); +void SaveMapTextColors(void); +void RestoreCallbacks(void); +void RestoreGPURegs(void); +void RestoreMapTiles(void); +void RestoreMapTextColors(void); +void CommitTilemap(void); +void sub_813BCF4(void); +void sub_813BD14(u8); +void sub_813BD5C(u8); +void sub_813BDA4(u8); +void sub_813BDE8(u8); +void sub_813BE30(u8); +void sub_813BE78(u8); +void sub_813BEE4(u8); +void sub_813BF50(u8); +void sub_813BFC0(u8); +void sub_813C004(u8, u8); +void HelpSystem_PrintTextRightAlign_Row52(const u8 *str); +void HelpSystem_PrintTextAt(const u8 *, u8, u8); +void HelpSystem_PrintTwoStrings(const u8 *a0, const u8 *a1); +void HelpSystem_PrintText_813C584(const u8 *str); +void HelpSystem_FillPanel2(void); +void HelpSystem_FillPanel1(void); +void HelpSystem_InitListMenuController(struct HelpSystemListMenu *, u8, u8); +void HelpSystem_SetInputDelay(u8); +s32 HelpSystem_GetMenuInput(void); +void sub_813C75C(void); + +void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height); +void HelpSystem_PrintText_Row61(const u8 * str); +void HelpSystem_FillPanel3(void); +void PrintListMenuItems(void); +void PlaceListMenuCursor(void); +bool8 MoveCursor(u8 by, u8 dirn); #endif //GUARD_HELP_SYSTEM_H diff --git a/include/item.h b/include/item.h index 320b7ffec..0f0adbca8 100644 --- a/include/item.h +++ b/include/item.h @@ -1,18 +1,20 @@ -#ifndef ITEM_H -#define ITEM_H +#ifndef GUARD_ITEM_H +#define GUARD_ITEM_H + +#include "global.h" typedef void (*ItemUseFunc)(u8); struct Item { - u8 name[14]; + u8 name[ITEM_NAME_LENGTH]; u16 itemId; u16 price; u8 holdEffect; u8 holdEffectParam; const u8 *description; u8 importance; - u8 unk19; + u8 exitsBagOnUse; u8 pocket; u8 type; ItemUseFunc fieldUseFunc; @@ -44,7 +46,7 @@ bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); void RemovePCItem(u8 index, u16 count); void SwapRegisteredBike(void); -const struct Item *ItemId_GetItem(u16 itemId); +const u8 *ItemId_GetName(u16 itemId); u16 ItemId_GetId(u16 itemId); u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); @@ -60,16 +62,20 @@ u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); -void sub_809A2DC(void); -void sub_809A2A4(void); +void ClearItemSlotsInAllBagPockets(void); +void ClearPCItemSlots(void); void CopyItemName(u16, u8 *); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); -void sub_809A5E4(struct BagPocket *); +void SortPocketAndPlaceHMsFirst(struct BagPocket *); u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1); u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1); bool8 itemid_is_unique(u16 itemId); -void sub_809A584(struct ItemSlot * slots, u8 capacity); +void BagPocketCompaction(struct ItemSlot * slots, u8 capacity); +u16 GetPcItemQuantity(u16 *); + +void ItemPcCompaction(void); +void RemoveItemFromPC(u16 itemId, u16 quantity); -#endif // ITEM_H +#endif // GUARD_ITEM_H diff --git a/include/item_icon.h b/include/item_icon.h deleted file mode 100644 index 75e2475f3..000000000 --- a/include/item_icon.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by scott on 10/20/2017. -// - -#ifndef GUARD_ITEM_ICON_H -#define GUARD_ITEM_ICON_H - -#include "global.h" - -extern EWRAM_DATA void *gUnknown_0203CEBC; -extern EWRAM_DATA void *gUnknown_0203CEC0; - -extern const struct SpriteTemplate gUnknown_08614FF4; - -bool8 AllocItemIconTemporaryBuffers(void); -void CopyItemIconPicTo4x4Buffer(void *src, void *dest); -void FreeItemIconTemporaryBuffers(void); - -#endif //GUARD_ITEM_ICON_H diff --git a/include/item_menu.h b/include/item_menu.h index efd0066ed..2e83ed1f4 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -2,6 +2,7 @@ #define GUARD_ITEM_MENU_H #include "global.h" +#include "task.h" // Exported type declarations @@ -25,6 +26,16 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC50(void); void sub_81AAC70(void); void sub_8108CF0(void); -void UseFameCheckerFromMenu(void); +void sub_810B108(u8); +void ReturnToBagFromKeyItem(void); +void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); +void ItemMenu_StartFadeToExitCallback(u8 taskId); +void sub_8108CB4(void); +void ItemMenu_SetExitCallback(void (*)(void)); +void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc); +void sub_810A1F8(u8 taskId); +void sub_8107ECC(void); +void sub_8108DC8(u8 pocketId); +void sub_81089F4(u8 pocketId); #endif //GUARD_ITEM_MENU_H diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h index 7fcd6d5e1..b5b5c6b0b 100644 --- a/include/item_menu_icons.h +++ b/include/item_menu_icons.h @@ -3,6 +3,28 @@ #include "global.h" -u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3); +extern void * gUnknown_2039884; + +extern const struct CompressedSpriteSheet gUnknown_83D41E4; +extern const struct CompressedSpriteSheet gUnknown_83D41EC; +extern const struct CompressedSpritePalette gUnknown_83D41F4; + +extern const struct CompressedSpriteSheet gBagSwapSpriteSheet; +extern const struct CompressedSpritePalette gBagSwapSpritePalette; + +void ResetItemMenuIconState(void); +void sub_80985E4(void); +void DestroyItemMenuIcon(bool8 a0); +void CreateItemMenuIcon(u16 itemId, bool8 a0); +void CopyItemIconPicTo4x4Buffer(const void *src, void *dest); +u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId); +u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId); +void sub_80989A0(u16 itemId, u8 idx); +void sub_80986A8(s16 x, u16 y); +void sub_8098660(u8); +void sub_8098528(u8); +void sub_8098580(void); +const void * sub_8098974(u16 itemId, u8 ptrId); +void sub_80984FC(u8 animNum); #endif // GUARD_ITEM_MENU_ICONS diff --git a/include/item_pc.h b/include/item_pc.h new file mode 100644 index 000000000..2fecf69a8 --- /dev/null +++ b/include/item_pc.h @@ -0,0 +1,7 @@ +#ifndef GUARD_ITEM_PC_H +#define GUARD_ITEM_PC_H + +void ItemPc_Init(u8 a0, MainCallback callback); +void ItemPc_SetInitializedFlag(u8); + +#endif //GUARD_ITEM_PC_H diff --git a/include/item_use.h b/include/item_use.h index 5ec5f2b33..db98533f1 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -4,6 +4,41 @@ #include "global.h" void sub_80A1E0C(u8); -void sub_80A2294(u8, u8, u16, u16); +void ItemUse_SetQuestLogEvent(u8, struct Pokemon *, u16, u16); + +void FieldUseFunc_OrangeMail(u8 taskId); +void FieldUseFunc_MachBike(u8 taskId); +void FieldUseFunc_OldRod(u8 taskId); +void FieldUseFunc_CoinCase(u8 taskId); +void FieldUseFunc_PowderJar(u8 taskId); +void FieldUseFunc_PokeFlute(u8 taskId); +void FieldUseFunc_Medicine(u8 taskId); +void FieldUseFunc_Ether(u8 taskId); +void FieldUseFunc_PpUp(u8 taskId); +void FieldUseFunc_RareCandy(u8 taskId); +void FieldUseFunc_EvoItem(u8 taskId); +void FieldUseFunc_SacredAsh(u8 taskId); +void FieldUseFunc_TmCase(u8 taskId); +void FieldUseFunc_BerryPouch(u8 taskId); +void BattleUseFunc_BerryPouch(u8 taskId); +void FieldUseFunc_TeachyTv(u8 taskId); +void FieldUseFunc_SuperRepel(u8 taskId); +void FieldUseFunc_BlackFlute(u8 taskId); +void FieldUseFunc_TownMap(u8 taskId); +void FieldUseFunc_FameChecker(u8 taskId); +void FieldUseFunc_VsSeeker(u8 taskId); +void BattleUseFunc_PokeBallEtc(u8 taskId); +void BattleUseFunc_PokeFlute(u8 taskId); +void BattleUseFunc_GuardSpec(u8 taskId); +void BattleUseFunc_Medicine(u8 taskId); +void BattleUseFunc_Ether(u8 taskId); +void BattleUseFunc_PokeDoll(u8 taskId); +void FieldUseFunc_OakStopsYou(u8 taskId); +void ItemUseOutOfBattle_EscapeRope(u8 taskId); +void ItemUseOutOfBattle_EnigmaBerry(u8 taskId); +void ItemUseInBattle_EnigmaBerry(u8 taskId); +void ItemUseOutOfBattle_Itemfinder(u8 taskId); +void sub_80A1C44(u8 taskId); +u8 CanUseEscapeRopeOnCurrMap(void); #endif //GUARD_ITEM_USE_H diff --git a/include/itemfinder.h b/include/itemfinder.h new file mode 100644 index 000000000..2b882b144 --- /dev/null +++ b/include/itemfinder.h @@ -0,0 +1,6 @@ +#ifndef GUARD_ITEMFINDER_H +#define GUARD_ITEMFINDER_H + +void sub_813EC8C(u8 taskId); + +#endif //GUARD_ITEMFINDER_H diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h new file mode 100644 index 000000000..7d347df05 --- /dev/null +++ b/include/libgcnmultiboot.h @@ -0,0 +1,17 @@ +#ifndef GUARD_LIBGCMMULTIBOOT_H +#define GUARD_LIBGCNMULTIBOOT_H + +struct GcmbStruct +{ + u16 gcmb_field_0; + vu8 gcmb_field_2; + u8 filler3[0x2C - 0x3]; +}; + +void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_Quit(void); + +#endif // GUARD_LIBGCNMULTIBOOT_H diff --git a/include/link.h b/include/link.h index a875149aa..e1a4e106b 100644 --- a/include/link.h +++ b/include/link.h @@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; extern u8 gUnknown_3003F84; -extern u64 gUnknown_3003FB4; +extern u64 gSioMlt_Recv; void Task_DestroySelf(u8); void OpenLink(void); @@ -206,5 +206,8 @@ void sub_800AA80(u8); void sub_80098D8(void); void CloseLink(void); bool8 sub_800A4BC(void); +bool32 sub_800B270(void); +void sub_800B388(void); +void sub_8054A28(void); #endif // GUARD_LINK_H diff --git a/include/list_menu.h b/include/list_menu.h index 8ff65da0b..df53bb529 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -2,15 +2,28 @@ #define GUARD_LIST_MENU_H #include "global.h" +#include "window.h" -// Exported type declarations +#define LIST_NOTHING_CHOSEN -1 +#define LIST_CANCEL -2 +#define LIST_HEADER -3 -// Exported RAM declarations +#define LIST_NO_MULTIPLE_SCROLL 0 +#define LIST_MULTIPLE_SCROLL_DPAD 1 +#define LIST_MULTIPLE_SCROLL_L_R 2 + +enum +{ + SCROLL_ARROW_LEFT, + SCROLL_ARROW_RIGHT, + SCROLL_ARROW_UP, + SCROLL_ARROW_DOWN, +}; struct ListMenuItem { - const u8 *unk_00; - s32 unk_04; + const u8 *label; + s32 index; }; struct ListMenu; @@ -37,29 +50,38 @@ struct ListMenuTemplate u8 cursorKind:2; // x40, x80 }; -struct ListMenu { - struct ListMenuTemplate _template; +struct ListMenu +{ + struct ListMenuTemplate template; u16 scrollOffset; u16 selectedRow; u8 unk_1C; u8 unk_1D; - u8 unk_1E; + u8 taskId; u8 unk_1F; }; -extern struct ListMenuTemplate gUnknown_03006310; -extern struct ListMenuTemplate gMultiuseListMenuTemplate; +struct ListMenuWindowRect +{ + u8 x; + u8 y; + u8 width; + u8 height; + u8 palNum; +}; -// Exported ROM declarations +extern struct ListMenuTemplate gMultiuseListMenuTemplate; -u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); -s32 ListMenuHandleInput(u8 id); -void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); -void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); -void DestroyListMenu(u8, u16 *, u16 *); -u16 ListMenuGetYCoordForPrintingArrowCursor(u8); -void sub_8107D38(u8, u8); s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); -void ListMenuDefaultCursorMoveFunc(s32, u8, struct ListMenu *); +u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); +u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow); +s32 ListMenu_ProcessInput(u8 listTaskId); +void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +void RedrawListMenu(u8 listTaskId); +void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); +void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); +void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value); #endif //GUARD_LIST_MENU_H diff --git a/include/load_save.h b/include/load_save.h index 064e6dff2..bd33f89c8 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -24,5 +24,7 @@ void SetSaveBlocksPointers(void); void MoveSaveBlocks_ResetHeap(void); void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey); +void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey); +void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey); #endif // GUARD_LOAD_SAVE_H diff --git a/include/m4a.h b/include/m4a.h index 24b454104..2bb7f2124 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -5,6 +5,11 @@ #include "gba/m4a_internal.h" +extern struct MusicPlayerInfo gMPlayInfo_BGM; +extern struct MusicPlayerInfo gMPlayInfo_SE1; +extern struct MusicPlayerInfo gMPlayInfo_SE2; +extern struct MusicPlayerInfo gMPlayInfo_SE3; + void m4aSoundVSync(void); void m4aSoundVSyncOn(void); diff --git a/include/mail.h b/include/mail.h index 5d6ad559b..3ba731c66 100644 --- a/include/mail.h +++ b/include/mail.h @@ -3,6 +3,8 @@ #include "global.h" +#define MAIL_WORDS_COUNT 9 + #define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \ || itemId == ITEM_HARBOR_MAIL \ || itemId == ITEM_GLITTER_MAIL \ @@ -17,9 +19,6 @@ || itemId == ITEM_RETRO_MAIL)) -bool8 MonHasMail(struct Pokemon *mon); -void TakeMailFromMon(struct Pokemon *mon); -u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); -void ClearMailStruct(struct MailStruct *mail); +void sub_80BEBEC(struct MailStruct * mail, void (* callback)(void), u8 a2); #endif // GUARD_MAIL_H diff --git a/include/mail_data.h b/include/mail_data.h index 0275d8dc6..a5795ed7e 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -9,7 +9,16 @@ // Exported ROM declarations -u16 sub_80D45E8(u16, u16 *); -bool8 itemid_is_mail(u16 itemId); +void ClearMailData(void); +void ClearMailStruct(struct MailStruct *mail); +bool8 MonHasMail(struct Pokemon *mon); +u8 GiveMailToMon(struct Pokemon *mon, u16 itemId); +u16 SpeciesToMailSpecies(u16 species, u32 personality); +u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer); +u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); +void TakeMailFromMon(struct Pokemon *mon); +void ClearMailItemId(u8 mailId); +u8 TakeMailFromMon2(struct Pokemon *mon); +bool8 ItemIsMail(u16 itemId); #endif //GUARD_MAIL_DATA_H diff --git a/include/main.h b/include/main.h index 6e9d2a25d..a250475cb 100644 --- a/include/main.h +++ b/include/main.h @@ -3,8 +3,6 @@ #include "global.h" -#include "global.h" - typedef void (*MainCallback)(void); typedef void (*IntrCallback)(void); typedef void (*IntrFunc)(void); diff --git a/include/menu.h b/include/menu.h index 172944064..19d7c82a4 100644 --- a/include/menu.h +++ b/include/menu.h @@ -2,10 +2,12 @@ #define GUARD_MENU_H #include "global.h" - #include "text.h" #include "window.h" +#define MENU_NOTHING_CHOSEN -2 +#define MENU_B_PRESSED -1 + struct MenuAction { const u8 *text; @@ -15,41 +17,54 @@ struct MenuAction } func; }; -void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); -void sub_8198070(u8 windowId, bool8 copyToVram); -void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); -void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); -void schedule_bg_copy_tilemap_to_vram(u8 bgNum); -void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs); -void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8); -u8 GetMenuCursorPos(void); -s8 ProcessMenuInput(void); -s8 ProcessMenuInputNoWrapAround(void); -void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); -void reset_temp_tile_data_buffers(void); -int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); -bool8 free_temp_tile_data_buffers_if_possible(void); -u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd -//void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); -s8 Menu_ProcessInputNoWrapClearOnChoose(void); -void do_scheduled_bg_tilemap_copies_to_vram(void); -void clear_scheduled_bg_copies_to_vram(void); -void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); -void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); -void sub_810F4D8(u8 windowId, bool32 someBool); -void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); -void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16); -void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8); -void PrintTextOnRightSnappedWindow(const u8 *, u32, u8); -void sub_810F71C(void); -void sub_810F740(void); -u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition); -void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); - +// menu2 +void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str); +void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); +void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); bool8 IsBlendTaskActive(void); void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); void sub_810F260(u8 windowId, u8 a1); void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); +u8 sub_812EA78(u16 species, u32 personality, u8 a2); +s8 sub_812EAE4(u16 species, u32 personality, u8 a2); + +// list_menu +void sub_8107CD8(u8 palOffset, u16 speciesId); +void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y); +void sub_8107D38(u8 palOffset, u8 palId); +void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y); + +// menu +s8 Menu_ProcessInputGridLayout(void); +u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos); +void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs); +void DestroyYesNoMenu(void); +s8 Menu_ProcessInputNoWrapClearOnChoose(void); +void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos); +void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray); +void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs); +void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing); +void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs); +s8 Menu_ProcessInputNoWrapAround_other(void); +s8 Menu_ProcessInput_other(void); +s8 Menu_ProcessInputNoWrapAround(void); +s8 Menu_ProcessInput(void); +u8 Menu_GetCursorPos(void); +u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta); +u8 Menu_MoveCursor(s8 cursorDelta); +u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos); +u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted); +void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 notUsed, bool8 copyToVram); +void TopBarWindowPrintString(const u8 *string, u8 unUsed, bool8 copyToVram); +void ClearTopBarWindow(void); +void DestroyTopBarWindow(void); +u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile); +void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram); +void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum); +void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram); +void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum); +struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock); #endif // GUARD_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index e27fb4e5d..7fe8c19b2 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -2,29 +2,28 @@ #define GUARD_MENU_HELPERS_H #include "global.h" +#include "task.h" -// Exported type declarations - -struct YesNoFuncTable { +struct YesNoFuncTable +{ TaskFunc yesFunc; TaskFunc noFunc; }; -// Exported RAM declarations - -// Exported ROM declarations - -void sub_812225C(u16 *, u16 *, u8, u8); -void sub_8122298(u16 *, u16 *, u8, u8, u8); -void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); -bool8 sub_81221AC(void); +bool16 RunTextPrinters_CheckActive(u8 textPrinterId); bool8 sub_80BF72C(void); -bool8 sub_80BF708(void); -void sub_80BF768(void); -void sub_80BF7C8(void); +bool8 sub_80BF748(void); +bool8 MenuHelpers_LinkSomething(void); +void SetVBlankHBlankCallbacksToNull(void); +void ResetAllBgsCoordinatesAndBgCntRegs(void); u8 sub_80BF8E4(void); -u8 sub_80BF848(s16 * a0, u16 a1); -void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); -void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const struct YesNoFuncTable *ptrs); +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); +void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); +u8 GetLRKeysState(void); +u8 sub_80BF66C(void); +bool8 sub_80BF6A8(u16 itemId); +bool8 itemid_80BF6D8_mail_related(u16 itemId); +void ClearVramOamPltt(void); #endif //GUARD_MENU_HELPERS_H diff --git a/include/menu_indicators.h b/include/menu_indicators.h index f195ceb6d..fbcee2590 100644 --- a/include/menu_indicators.h +++ b/include/menu_indicators.h @@ -3,29 +3,40 @@ #include "global.h" -// Exported type declarations - -// Exported RAM declarations +struct ScrollArrowsTemplate +{ + u8 firstArrowType; + u8 firstX; + u8 firstY; + u8 secondArrowType; + u8 secondX; + u8 secondY; + u16 fullyUpThreshold; + u16 fullyDownThreshold; + u16 tileTag; + u16 palTag; + u8 palNum; +}; -struct ScrollIndicatorArrowPairTemplate +struct CursorStruct { - u8 unk_00; - u8 unk_01; - u8 unk_02; - u8 unk_03; - u8 unk_04; - u8 unk_05; - u16 unk_06; - u16 unk_08; - u16 unk_0a; - u16 unk_0c; - u16 unk_0e_0:4; - u16 unk_0e_4:12; + u8 left; + u8 top; + u16 rowWidth; + u16 rowHeight; + u16 tileTag; + u16 palTag; + u8 palNum; }; -// Exported ROM declarations -u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *); -u8 AddScrollIndicatorArrowPair(const struct ScrollIndicatorArrowPairTemplate * template, u16 * a1); +u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset); +u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1); void RemoveScrollIndicatorArrowPair(u8); +u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind); +u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor); +void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y); +void ListMenuRemoveRedOutlineCursorObject(u8 taskId); +void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind); +void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind); #endif //GUARD_MENU_INDICATORS_H diff --git a/include/mevent.h b/include/mevent.h index b9b17d8c0..b61fa732d 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -23,9 +23,9 @@ struct MEventStruct_Unk1442CC struct MEvent_Str_1 { - u16 unk_000; - size_t unk_004; - const void * unk_008; + u16 status; + size_t size; + const void * data; }; struct MEvent_Str_2 diff --git a/include/multiboot.h b/include/multiboot.h index 4b4a3693a..ee0a34c83 100644 --- a/include/multiboot.h +++ b/include/multiboot.h @@ -18,6 +18,6 @@ void MultiBootInit(struct MultiBootParam *mp); int MultiBootMain(struct MultiBootParam *mp); void MultiBootStartProbe(struct MultiBootParam *mp); void MultiBootStartMaster(struct MultiBootParam *mp, const u8 *srcp, int length, u8 palette_color, s8 palette_speed); -int MultiBootCheckComplete(struct MultiBootParam *mp); +bool32 MultiBootCheckComplete(struct MultiBootParam *mp); #endif // GUARD_MULTIBOOT_H diff --git a/include/new_game.h b/include/new_game.h index c495a9585..a45b090c8 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -14,5 +14,6 @@ void NewGameInitData(void); void ResetMiniGamesResults(void); void sub_808447C(void); void Sav2_ClearSetDefault(void); +void ResetMenuAndMonGlobals(void); #endif // GUARD_NEW_GAME_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 8fb3bba78..7b83c913b 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -5,33 +5,49 @@ #include "text.h" #include "task.h" -void sub_81973A4(void); -void sub_81973C4(u8, u8); -void sub_819746C(u8 windowId, bool8 copyToVram); -void sub_81973FC(u8, u8); -u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); -void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback); -void sub_8197434(u8 a0, u8 a1); -void SetStandardWindowBorderStyle(u8 a0, u8 a1); -void sub_8197930(void); -u8 GetPlayerTextSpeed(void); -void ClearDialogWindowAndFrame(u8, u8); -u8 GetTextSpeedSetting(void); +void ClearScheduledBgCopiesToVram(void); +void ScheduleBgCopyTilemapToVram(u8 bgId); +void DoScheduledBgTilemapCopiesToVram(void); +void ResetTempTileDataBuffers(void); +bool8 FreeTempTileDataBuffersIfPossible(void); +void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void * MallocAndDecompress(const void * src, u32 * size); +void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); +void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); +void ResetBgPositions(void); +void InitStandardTextBoxWindows(void); +void FreeAllOverworldWindowBuffers(void); +void ResetBg0(void); +u16 RunTextPrinters_CheckPrinter0Active(void); +u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); +void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress); +void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress); +void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed); void sub_80F6E9C(void); void DrawDialogueFrame(u8 windowId, bool8 transfer); -void sub_80F7974(const u8 *); -u8 GetStartMenuWindowId(void); -void sub_80F7998(void); -void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void DrawStdWindowFrame(u8 windowId, bool8 copyNow); -void InitStandardTextBoxWindows(void); -void ResetBg0(void); -void Menu_LoadStdPalAt(u16); -void * malloc_and_decompress(const void * src, u32 * size); -u16 sub_80F796C(void); -void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); -void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4); +void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow); void sub_80F6C14(void); +void sub_80F771C(bool8 copyToVram); +void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram); +void sub_80F7768(u8 windowId, bool8 copyToVram); +void Menu_LoadStdPal(void); +void Menu_LoadStdPalAt(u16 offset); +void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback); +void DisplayYesNoMenuDefaultYes(void); +void DisplayYesNoMenuDefaultNo(void); +u8 GetTextSpeedSetting(void); +u8 sub_80F78E0(u8 height); +u8 GetStartMenuWindowId(void); +void RemoveStartMenuWindow(void); +u16 GetStdWindowBaseTileNum(void); +void sub_80F7974(const u8 * text); +void sub_80F7998(void); +void sub_80F79A4(void); +void SetDefaultFontsPointer(void); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h index 5c4235b8c..9a9657006 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -2,7 +2,6 @@ #define GUARD_ROM4_H #include "global.h" - #include "main.h" struct UnkPlayerStruct @@ -31,6 +30,8 @@ extern MainCallback gFieldCallback; extern struct WarpData gUnknown_2031DBC; +extern u8 gUnknown_2031DE0; + void IncrementGameStat(u8 index); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); @@ -59,7 +60,7 @@ void Overworld_SetSavedMusic(u16); void Overworld_ChangeMusicToDefault(void); void Overworld_ChangeMusicTo(u16); -bool32 is_c1_link_related_active(void); +bool32 IsUpdateLinkStateCBActive(void); void strange_npc_table_clear(void); const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16); @@ -67,8 +68,8 @@ void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); void CB2_ReturnToField(void); bool32 sub_8087598(void); -void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -void warp_in(void); +void CB2_ReturnToFieldContinueScriptPlayMapMusic(void); +void WarpIntoMap(void); u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); void sub_8086194(void); void sub_8084CCC(u8 spawn); @@ -77,14 +78,15 @@ void c2_load_new_map(void); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void mapldr_default(void); -u32 GetGameStat(u8); +u32 GetGameStat(u8 statId); +u32 SetGameStat(u8 statId, u32 value); -void sub_8056938(void); +void CB2_ContinueSavedGame(void); void sub_8055D5C(struct WarpData *); void sub_80572A8(void); void sub_805726C(void); void sub_8057430(void); -void sub_8055DC4(void); +void Overworld_PlaySpecialMapMusic(void); u8 GetCurrentRegionMapSectionId(void); @@ -103,12 +105,17 @@ extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); +void CB2_Overworld(void); void CB2_NewGame(void); bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); void Overworld_ResetStateAfterTeleport(void); void Overworld_FadeOutMapMusic(void); -void sub_805671C(void); +void CB2_LoadMap(void); bool8 sub_8055FC4(void); +bool8 is_light_level_8_or_9(u8 mapType); +bool32 sub_8055C9C(void); +void Overworld_ResetStateAfterDigEscRope(void); +bool32 sub_8058244(void); #endif //GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index 31c8ffefe..06b9b1f6f 100644 --- a/include/palette.h +++ b/include/palette.h @@ -43,7 +43,7 @@ struct PaletteFadeControl extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; -extern u8 gPaletteDecompressionBuffer[]; +extern u8 *gUnknown_203AAB0; extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; diff --git a/include/party_menu.h b/include/party_menu.h index 34b375e42..e4fc182e9 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -13,6 +13,23 @@ enum { AILMENT_BRN }; +struct Struct203B0A0 +{ + MainCallback exitCallback; + TaskFunc unk4; + u8 unk8_0:4; + u8 mode:2; + u8 unk8_2:2; + s8 unk9; + s8 unkA; + u8 unkB; + u16 unkC; + s16 unkE; + s16 unk10; +}; + +extern struct Struct203B0A0 gUnknown_203B0A0; + extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); bool8 FieldCallback_PrepareFadeInFromMenu(void); @@ -27,5 +44,23 @@ void sub_8126EDC(void); void c2_8123744(void); u8 GetCursorSelectionMonId(void); void sub_8128370(void); +void sub_811F818(u8 monId, u8 a1); +void sub_8121D0C(u8); +void sub_811FB28(u8 taskId); +void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); +void GetMonNickname(const struct Pokemon * mon, u8 * dest); +void sub_81202F8(const u8 * src, u8 a1); +bool8 sub_8120370(void); +void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); +void sub_81252D0(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_PpRestore(u8 taskId, TaskFunc followUpFunc); +void dp05_pp_up(u8 taskId, TaskFunc followUpFunc); +void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc); +void sub_8126B60(u8 taskId, TaskFunc followUpFunc); +void sub_8126894(u8 taskId, TaskFunc followUpFunc); +void sub_81279E0(void); +void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); +u8 GetItemEffectType(u16 itemId); +u8 pokemon_order_func(u8); #endif // GUARD_PARTY_MENU_H diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h new file mode 100644 index 000000000..6d68de2d3 --- /dev/null +++ b/include/pc_screen_effect.h @@ -0,0 +1,9 @@ +#ifndef GUARD_PC_SCREEN_EFFECT_H +#define GUARD_PC_SCREEN_EFFECT_H + +void sub_80A0A48(u16, u16, u8); +void sub_80A0A70(u16, u16, u8); +bool8 sub_80A0AAC(void); +bool8 sub_80A0A98(void); + +#endif //GUARD_PC_SCREEN_EFFECT_H diff --git a/include/pokedex.h b/include/pokedex.h index b389bf821..c4ec27e0b 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -7,7 +7,8 @@ void ResetPokedex(void); void CopyMonCategoryText(u16 species, u8 *dst); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); -u16 GetHoennPokedexCount(u8); +u16 GetKantoPokedexCount(u8); +bool16 HasAllKantoMons(void); u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality); enum diff --git a/include/pokemon.h b/include/pokemon.h index a6dd9931b..9dd5850b4 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -2,6 +2,7 @@ #define GUARD_POKEMON_H #include "global.h" +#include "sprite.h" #define MON_DATA_PERSONALITY 0 #define MON_DATA_OT_ID 1 @@ -109,6 +110,16 @@ #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF +#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0 +#define FRIENDSHIP_EVENT_VITAMIN 0x1 +#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 +#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3 +#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4 +#define FRIENDSHIP_EVENT_WALKING 0x5 +#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6 +#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 +#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8 + #define TYPE_NORMAL 0x00 #define TYPE_FIGHTING 0x01 #define TYPE_FLYING 0x02 @@ -425,8 +436,7 @@ struct BaseStats /* 0x13 */ u8 growthRate; /* 0x14 */ u8 eggGroup1; /* 0x15 */ u8 eggGroup2; - /* 0x16 */ u8 ability1; - /* 0x17 */ u8 ability2; + /* 0x16 */ u8 abilities[2]; /* 0x18 */ u8 safariZoneFleeRate; /* 0x19 */ u8 bodyColor : 7; u8 noFlip : 1; @@ -530,11 +540,6 @@ extern const u16 *const gLevelUpLearnsets[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; -u8 CountAliveMons(u8 caseId); -#define BATTLE_ALIVE_EXCEPT_ACTIVE 0 -#define BATTLE_ALIVE_ATK_SIDE 1 -#define BATTLE_ALIVE_DEF_SIDE 2 - void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); void ZeroPlayerPartyMons(void); @@ -545,30 +550,32 @@ void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter); void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level); void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); -void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId); void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); -u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); +void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src); +void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CalculateMonStats(struct Pokemon *mon); -u8 GetLevelFromMonExp(struct Pokemon *mon); +void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); -u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); -void MonRestorePP(struct Pokemon *mon); void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); -void GiveMonInitialMoveset(struct Pokemon *mon); -void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon); +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); -void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); -bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); -bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef); + +#define BATTLE_ALIVE_EXCEPT_ACTIVE 0 +#define BATTLE_ALIVE_ATK_SIDE 1 +#define BATTLE_ALIVE_DEF_SIDE 2 + +u8 CountAliveMonsInBattle(u8 caseId); +u8 GetDefaultMoveTarget(u8 battlerId); u8 GetMonGender(struct Pokemon *mon); u8 GetBoxMonGender(struct BoxPokemon *boxMon); u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality); -void EncryptBoxMon(struct BoxPokemon *boxMon); -void DecryptBoxMon(struct BoxPokemon *boxMon); +void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition); +void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition); // These are full type signatures for GetMonData() and GetBoxMonData(), // but they are not used since some code erroneously omits the third arg. @@ -583,99 +590,81 @@ u32 GetMonData(); u32 GetBoxMonData(); #endif // IS_POKEMON_C -void SetMonData(struct Pokemon *mon, s32 field, const void *data); -void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data); +void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg); +void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); -u8 SendMonToPC(struct Pokemon *mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); - +u8 GetMonsStateToDoubles(void); u8 GetAbilityBySpecies(u16 species, bool8 altAbility); u8 GetMonAbility(struct Pokemon *mon); -void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord); u8 GetSecretBaseTrainerPicIndex(void); u8 GetSecretBaseTrainerNameIndex(void); bool8 IsPlayerPartyAndPokemonStorageFull(void); -bool8 IsPokemonStorageFull(void); void GetSpeciesName(u8 *name, u16 species); u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex); void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); -void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex); - +bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); +bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); +const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); u8 GetNature(struct Pokemon *mon); -u8 GetNatureFromPersonality(u32 personality); - -u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex); - -void MonRestorePP(struct Pokemon *); -void BoxMonRestorePP(struct BoxPokemon *); - +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); u16 NationalPokedexNumToSpecies(u16 nationalNum); -u16 NationalToHoennOrder(u16); -u16 SpeciesToNationalPokedexNum(u16); -u16 HoennToNationalOrder(u16); +u16 SpeciesToNationalPokedexNum(u16 species); +u16 HoennToNationalOrder(u16 hoennNum); u16 SpeciesToCryId(u16 species); -void DrawSpindaSpots(u16, u32, u8 *, u8); -void AdjustFriendship(struct Pokemon *, u8); -u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); -void UpdatePartyPokerusTime(u16); -u32 CanMonLearnTMHM(struct Pokemon *, u8); -u32 CanSpeciesLearnTMHM(u16 species, u8 tm); +void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +bool8 sub_80435E0(void); +bool8 GetLinkTrainerFlankId(u8 linkPlayerId); +s32 GetBankMultiplayerId(u16 a1); +u8 GetTrainerEncounterMusicId(u16 trainer); +void AdjustFriendship(struct Pokemon *mon, u8 event); +void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +u16 GetMonEVCount(struct Pokemon *mon); +void sub_8043A68(void); +u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); +u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); +void sub_8043B40(void); +bool8 TryIncrementMonLevel(struct Pokemon *mon); +u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); +u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); +u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); +u16 sub_8043F90(u16 species); void ClearBattleMonForms(void); -const u8 *GetMonFrontSpritePal(struct Pokemon *mon); -const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32); -const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); -bool8 IsOtherTrainer(u32, u8 *); -void SetWildMonHeldItem(void); -u16 GetMonEVCount(struct Pokemon *); - -const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon); +void PlayBattleBGM(void); +void PlayMapChosenOrBattleBGM(u16 songId); +const u32 *GetMonFrontSpritePal(struct Pokemon *mon); +const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); bool32 IsHMMove2(u16 move); bool8 IsPokeSpriteNotFlipped(u16 species); -bool8 IsMonShiny(struct Pokemon *mon); -bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); - -void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor); bool8 IsTradedMon(struct Pokemon *mon); +bool8 IsOtherTrainer(u32 otId, u8 *otName); +void MonRestorePP(struct Pokemon *mon); +void BoxMonRestorePP(struct BoxPokemon *boxMon); +void sub_8044348(void); +void SetWildMonHeldItem(void); +bool8 IsMonShiny(struct Pokemon *mon); +u8 *GetTrainerPartnerName(void); +u8 GetPlayerPartyHighestLevel(void); +u16 FacilityClassToPicIndex(u16 facilityClass); +bool8 sub_804455C(u8 caseId, u8 battlerId); +void SetDeoxysStats(void); +u16 sub_80447AC(void); +u16 sub_80447F0(void); +void CreateObedientEnemyMon(void); void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); -s32 GetBankMultiplayerId(u16 a1); -bool16 sub_806D82C(u8 id); -u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); -void sub_8068AA4(void); // sets stats for deoxys -bool8 HasTwoFramesAnimation(u16 species); -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); -void RandomlyGivePartyPokerus(struct Pokemon *party); -u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); -u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); -void UpdatePartyPokerusTime(u16 days); -void PartySpreadPokerus(struct Pokemon *party); -s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2); -s8 GetFlavorRelationByPersonality(u32 personality, u8 a2); -u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); -u8 GetDefaultMoveTarget(u8 atkBank); -u16 PlayerGenderToFrontTrainerPicId(u8 playerGender); -void sub_806A1C0(u16 arg0, u8 bankIdentity); -void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity); -u8 GetSecretBaseTrainerPicIndex(void); -bool8 TryIncrementMonLevel(struct Pokemon *mon); -void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon); -u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); -bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId); - -#include "sprite.h" - -void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); -void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); -void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); - -void PlayMapChosenOrBattleBGM(u16 songId); -u8 GetMonsStateToDoubles(void); -void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); -void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition); +bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank); +struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable); +void OakSpeechNidoranFFreeResources(void); +void *OakSpeechNidoranFGetBuffer(u8 bufferId); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h deleted file mode 100644 index e65bc85fc..000000000 --- a/include/pokemon_3.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_POKEMON_3_H -#define GUARD_POKEMON_3_H - -#include "global.h" - -const u8* GetTrainerClassNameFromId(u16 trainerId); -const u8* GetTrainerNameFromId(u16 trainerId); -void * SetUpMonSpriteManagerMaybe(u8, u8); -void sub_8044D80(void); -void * sub_8044E00(u8 buffId); - -#endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 593715b7d..cd8c798f9 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -15,5 +15,6 @@ void FreeMonIconPalettes(void); u16 sub_8096FD4(u16); u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32); void sub_8097070(struct Sprite *); +u16 GetUnownLetterByPersonality(u32 personality); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index f2fbe85a7..8ab9e5f0e 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,5 +14,6 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); +u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index aca3e5fe8..858ea593a 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -27,6 +27,11 @@ void sub_8115748(u16); u8 sub_8112CAC(void); bool8 sub_81119D4(void (*func)(void)); void sub_8111F38(u16, u16); +void sub_8111134(void); +void sub_8112EDC(u8 a0); +u8 sub_8112EB4(void); +void sub_8113018(const u8 * text, u8 mode); +void MapNamePopupWindowIdSetDummy(void); extern u8 gUnknown_203ADFA; diff --git a/include/region_map.h b/include/region_map.h index ea8a8130e..394fee469 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -95,5 +95,6 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); void sub_80C4DF8(u8 *, u8); +void sub_80BFF50(u8 a0, void (*a1)(void)); #endif //GUARD_REGION_MAP_H diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h new file mode 100644 index 000000000..8cb038906 --- /dev/null +++ b/include/reset_save_heap.h @@ -0,0 +1,13 @@ +#ifndef GUARD_RESET_SAVE_HEAP_H +#define GUARD_RESET_SAVE_HEAP_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_8079B7C(void); + +#endif //GUARD_RESET_SAVE_HEAP_H + diff --git a/include/safari_zone.h b/include/safari_zone.h index b20555a8c..feaa93ed0 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -4,6 +4,7 @@ #include "global.h" extern u8 gNumSafariBalls; +extern u16 gSafariZoneStepCounter; bool32 GetSafariZoneFlag(void); void SetSafariZoneFlag(void); @@ -15,7 +16,4 @@ void ExitSafariMode(void); bool8 SafariZoneTakeStep(void); void SafariZoneRetirePrompt(void); -struct Pokeblock *SafariZoneGetActivePokeblock(void); -void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); - #endif // GUARD_SAFARI_ZONE_H diff --git a/include/save.h b/include/save.h index f547230b9..7a74373c8 100644 --- a/include/save.h +++ b/include/save.h @@ -121,7 +121,7 @@ u8 Save_LoadGameData(u8 a1); u32 TryCopySpecialSaveSection(u8 sector, u8* dst); u32 sub_8153634(u8 sector, u8* src); void sub_8153688(u8 taskId); -u32 sub_80DA5E0(u8 sector, u8* src); +u32 TryWriteSpecialSaveSection(u8 sector, u8* src); void sub_80DA634(u8 taskId); #endif // GUARD_SAVE_H diff --git a/include/save_location.h b/include/save_location.h index 69b39ea53..4e01c64e4 100644 --- a/include/save_location.h +++ b/include/save_location.h @@ -1,11 +1,15 @@ #ifndef GUARD_SAVE_LOCATION_H #define GUARD_SAVE_LOCATION_H -#include "global.h" +// specialSaveWarp flags +#define CONTINUE_GAME_WARP (1 << 0) +#define POKECENTER_SAVEWARP (1 << 1) +#define LOBBY_SAVEWARP (1 << 2) +#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3) -bool32 sub_81AFCEC(void); void TrySetMapSaveWarpStatus(void); -void sub_81AFDA0(void); -void sub_81AFDD0(void); +bool32 IsCurMapPokeCenter(void); +void sub_810B810(void); +void sub_810B82C(void); -#endif // GUARD_SAVE_LOCATION_H +#endif // GUARD_SAVE_LOCATION_H
\ No newline at end of file diff --git a/include/script.h b/include/script.h index 8ffbe1563..4e8b8c305 100644 --- a/include/script.h +++ b/include/script.h @@ -72,6 +72,7 @@ void sub_80699A4(void); void sub_8069970(void); void sub_8069A20(void); void sub_8069A2C(void); +bool8 IsMsgSignPost(void); extern const u8 *gRAMScriptPtr; diff --git a/include/script_menu.h b/include/script_menu.h index f82b061a5..c1e32beae 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -10,6 +10,9 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 va bool8 ScriptMenu_YesNo(u8 var1, u8 var2); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool32 ScrSpecial_CreatePCMenu(void); +void ScriptMenu_DisplayPCStartupPrompt(void); + bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); void sub_809D6D4(void); diff --git a/include/shop.h b/include/shop.h index 05f5160e6..481fd6c76 100644 --- a/include/shop.h +++ b/include/shop.h @@ -2,6 +2,7 @@ #define GUARD_SHOP_H #include "global.h" +#include "menu_helpers.h" extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; @@ -9,5 +10,15 @@ void CreatePokemartMenu(const u16 *); void CreateDecorationShop1Menu(const u16 *); void CreateDecorationShop2Menu(const u16 *); void sub_809C09C(u16, u16, u8); +u8 sub_809B56C(void); + +// buy_menu_helper +void BuyMenuInitWindows(bool32 isSellingTM); +void BuyMenuDrawMoneyBox(void); +void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color); +void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback); +void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram); +void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram); +void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo); #endif // GUARD_SHOP_H diff --git a/include/sound.h b/include/sound.h index e720fc1a2..e5736fad8 100644 --- a/include/sound.h +++ b/include/sound.h @@ -12,7 +12,6 @@ void StopMapMusic(void); void FadeOutMapMusic(u8 speed); void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed); void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed); -void FadeInNewMapMusic(u16 songNum, u8 speed); bool8 IsNotWaitingForBGMStop(void); void PlayFanfareByFanfareNum(u8 fanfareNum); bool8 WaitFanfare(bool8 stop); diff --git a/include/sprite.h b/include/sprite.h index bc47f7100..27e5dc852 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -4,28 +4,30 @@ #include "global.h" #define MAX_SPRITES 64 +#define SPRITE_INVALID_TAG 0xFFFF struct SpriteSheet { - const u8 *data; // Raw uncompressed pixel data + const void *data; // Raw uncompressed pixel data u16 size; u16 tag; }; struct CompressedSpriteSheet { - const u8 *data; // LZ77 compressed pixel data + const u32 *data; // LZ77 compressed pixel data u16 size; // Uncompressed size of pixel data u16 tag; }; struct SpriteFrameImage { - const u8 *data; + const void *data; u16 size; }; #define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr} +#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2} struct SpritePalette { @@ -35,7 +37,7 @@ struct SpritePalette struct CompressedSpritePalette { - const u8 *data; // LZ77 compressed palette data + const u32 *data; // LZ77 compressed palette data u16 tag; }; @@ -102,6 +104,12 @@ struct AffineAnimJumpCmd u16 target; }; +struct AffineAnimEndCmdAlt +{ + s16 type; + u16 val; +}; + union AffineAnimCmd { s16 type; @@ -126,6 +134,8 @@ union AffineAnimCmd {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} #define AFFINEANIMCMD_JUMP(_target) \ {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} +#define AFFINEANIMCMD_END_ALT(_val) \ + {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}} struct AffineAnimState { @@ -163,6 +173,8 @@ struct SubspriteTable struct Sprite; +typedef void (*SpriteCallback)(struct Sprite *); + struct SpriteTemplate { u16 tileTag; @@ -171,7 +183,7 @@ struct SpriteTemplate const union AnimCmd *const *anims; const struct SpriteFrameImage *images; const union AffineAnimCmd *const *affineAnims; - void (*callback)(struct Sprite *); + SpriteCallback callback; }; struct Sprite @@ -182,7 +194,7 @@ struct Sprite /*0x10*/ const union AffineAnimCmd *const *affineAnims; /*0x14*/ const struct SpriteTemplate *template; /*0x18*/ const struct SubspriteTable *subspriteTables; - /*0x1C*/ void (*callback)(struct Sprite *); + /*0x1C*/ SpriteCallback callback; /*0x20*/ struct Coords16 pos1; /*0x24*/ struct Coords16 pos2; @@ -237,7 +249,7 @@ extern const union AnimCmd *const gDummySpriteAnimTable[]; extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; - +extern const struct SpriteTemplate gDummySpriteTemplate; extern struct Sprite gSprites[]; void ResetSpriteData(void); @@ -300,5 +312,6 @@ void CopyFromSprites(u8 *dest); u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); void ClearSpriteCopyRequests(void); void ResetAffineAnimData(void); +void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3); #endif //GUARD_SPRITE_H diff --git a/include/strings.h b/include/strings.h index 6af1b0d69..85b67ed57 100644 --- a/include/strings.h +++ b/include/strings.h @@ -91,6 +91,7 @@ extern const u8 gText_PkmnFainted3[]; extern const u8 gText_Coins[]; extern const u8 gText_EggNickname[]; extern const u8 gText_Pokemon[]; +extern const u8 gText_PkmnFainted3[]; extern const u8 gOtherText_Use[]; extern const u8 gOtherText_Give[]; @@ -113,6 +114,93 @@ extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[]; extern const u8 gText_TurnedOverItemsWorthYen[]; extern const u8 gPokeDudeText_TMTypes[]; extern const u8 gPokeDudeText_ReadTMDescription[]; -extern const u16 gTMCaseMainWindowPalette[]; +extern const u8 gFameCheckerText_Cancel[]; + +// teachy_tv +extern const u8 gTeachyTvString_TeachBattle[]; +extern const u8 gTeachyTvString_StatusProblems[]; +extern const u8 gTeachyTvString_TypeMatchups[]; +extern const u8 gTeachyTvString_CatchPkmn[]; +extern const u8 gTeachyTvString_AboutTMs[]; +extern const u8 gTeachyTvString_RegisterItem[]; +extern const u8 gTeachyTvString_Cancel[]; +extern const u8 gTeachyTvText_PokeDudeSaysHello[]; +extern const u8 gTeachyTvText_BattleScript1[]; +extern const u8 gTeachyTvText_StatusScript1[]; +extern const u8 gTeachyTvText_MatchupsScript1[]; +extern const u8 gTeachyTvText_CatchingScript1[]; +extern const u8 gTeachyTvText_TMsScript1[]; +extern const u8 gTeachyTvText_RegisterScript1[]; +extern const u8 gTeachyTvText_BattleScript2[]; +extern const u8 gTeachyTvText_StatusScript2[]; +extern const u8 gTeachyTvText_MatchupsScript2[]; +extern const u8 gTeachyTvText_CatchingScript2[]; +extern const u8 gTeachyTvText_TMsScript2[]; +extern const u8 gTeachyTvText_RegisterScript2[]; + +// help_system_812B1E0 +extern const u8 gUnknown_841DFA5[]; +extern const u8 gUnknown_841DFAC[]; +extern const u8 gUnknown_841DFBE[]; +extern const u8 gUnknown_841DFC9[]; + +// help_system +extern const u8 gString_Bill[]; +extern const u8 gString_Someone[]; +extern const u8 gString_Help[]; +extern const u8 gString_HelpSystem_ClearTo8[]; + +extern const u8 gOtherText_Give[]; +extern const u8 gFameCheckerText_Cancel[]; +extern const u8 gOtherText_StrVar1[]; +extern const u8 gOtherText_WhereShouldTheStrVar1BePlaced[]; +extern const u8 gOtherText_Powder[]; +extern const u8 gText_NoMoreRoomInBag[]; +extern const u8 gText_WithdrawHowMany[]; +extern const u8 gText_WithdrewQuantItem[]; +extern const u8 gText_WithdrawItem[]; +extern const u8 gText_Withdraw[]; +extern const u8 gText_ReturnToPC[]; + +extern const u8 gUnknown_8416425[]; +extern const u8 gUnknown_8416451[]; +extern const u8 gUnknown_8416537[]; +extern const u8 gUnknown_841658C[]; +extern const u8 gUnknown_841659E[]; +extern const u8 gUnknown_84165D2[]; +extern const u8 gUnknown_8416600[]; +extern const u8 gUnknown_8416631[]; +extern const u8 gUnknown_8416644[]; +extern const u8 gUnknown_841665C[]; +extern const u8 gUnknown_8416690[]; +extern const u8 gUnknown_84166A7[]; +extern const u8 gUnknown_84169DC[]; +extern const u8 gUnknown_841623D[]; +extern const u8 gUnknown_84162BD[]; +extern const u8 gUnknown_841D148[]; + +// pokemon.c +extern const u8 BattleText_Rose[]; +extern const u8 BattleText_UnknownString3[]; +extern const u8 BattleText_GetPumped[]; +extern const u8 BattleText_MistShroud[]; +extern const u8 gText_EggNickname[]; +extern const u8 gText_BadEgg[]; +extern const u8 gText_PkmnsXPreventsSwitching[]; +extern u8 *gUnknown_83FD5D0[]; + +// diploma +extern const u8 gUnknown_841B60E[]; +extern const u8 gUnknown_841B619[]; +extern const u8 gUnknown_841B684[]; +extern const u8 gUnknown_841B68F[]; +extern const u8 gUnknown_841B698[]; + +// battle_records +extern const u8 gString_BattleRecords_PlayersBattleResults[]; +extern const u8 gString_BattleRecords_TotalRecord[]; +extern const u8 gString_BattleRecords_ColumnHeaders[]; +extern const u8 gString_BattleRecords_7Dashes[]; +extern const u8 gString_BattleRecords_4Dashes[]; #endif //GUARD_STRINGS_H diff --git a/include/task.h b/include/task.h index cd3deb544..834bb5655 100644 --- a/include/task.h +++ b/include/task.h @@ -4,6 +4,7 @@ #include "global.h" #define NUM_TASKS 16 +#define TASK_NONE 0xFF typedef void (*TaskFunc)(u8 taskId); diff --git a/include/teachy_tv.h b/include/teachy_tv.h index 374780c04..36bac6a67 100644 --- a/include/teachy_tv.h +++ b/include/teachy_tv.h @@ -1,7 +1,8 @@ #ifndef GUARD_TEACHY_TV_H #define GUARD_TEACHY_TV_H +void InitTeachyTvController(u8 mode, void (*cb)()); void CB2_ReturnToTeachyTV(void); -void sub_815AC20(void); +void SetTeachyTvControllerModeToResume(void); #endif //GUARD_TEACHY_TV_H diff --git a/include/text.h b/include/text.h index e0533cc98..07f6b29c2 100644 --- a/include/text.h +++ b/include/text.h @@ -68,7 +68,8 @@ #define CHAR_y 0xED #define CHAR_z 0xEE #define CHAR_SPECIAL_F7 0xF7 -#define CHAR_SPECIAL_F9 0xF9 +#define CHAR_KEYPAD_ICON 0xF8 +#define CHAR_EXTRA_EMOJI 0xF9 #define CHAR_COLON 0xF0 #define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog #define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog @@ -90,6 +91,18 @@ #define TEXT_SPEED_FF 0xFF +enum +{ + FONTATTR_MAX_LETTER_WIDTH, + FONTATTR_MAX_LETTER_HEIGHT, + FONTATTR_LETTER_SPACING, + FONTATTR_LINE_SPACING, + FONTATTR_UNKNOWN, // dunno what this is yet + FONTATTR_COLOR_FOREGROUND, + FONTATTR_COLOR_BACKGROUND, + FONTATTR_COLOR_SHADOW +}; + struct TextPrinterSubStruct { u8 font_type:4; // 0x14 @@ -192,6 +205,8 @@ extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +extern const u8 gKeypadIconTiles[]; + void SetFontsPointer(const struct FontInfo *fonts); void DeactivateAllTextPrinters(void); u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); @@ -215,6 +230,7 @@ u16 Font4Func(struct TextPrinter *textPrinter); u16 Font5Func(struct TextPrinter *textPrinter); u16 Font7Func(struct TextPrinter *textPrinter); u16 Font8Func(struct TextPrinter *textPrinter); +u16 Font6Func(struct TextPrinter *textPrinter); void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter); void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter); @@ -248,6 +264,7 @@ s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese); void DecompressGlyphFont9(u16 glyphId); s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese); s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese); +void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese); s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese); void sub_80062B0(struct Sprite *sprite); u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority); diff --git a/include/text_window.h b/include/text_window.h index c384ca1bb..c1463a9c7 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -20,11 +20,14 @@ void rbox_fill_rectangle(u8 windowId); const u16* stdpal_get(u8 id); const u16* GetOverworldTextboxPalettePtr(void); void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset); -void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette); -void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette); -void sub_815001C(u8 windowId, u16 tileStart, u8 palette); +void TextWindow_LoadResourcesStdFrame0(u8 windowId, u16 tileStart, u8 palette); +void TextWindow_SetStdFrame0_WithPal(u8 windowId, u16 tileStart, u8 palette); +void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette); void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette); void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette); void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette); +void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset); +void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx); +void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx); #endif // GUARD_TEXT_WINDOW_H diff --git a/include/text_window_graphics.h b/include/text_window_graphics.h index 5fa78d955..17e919705 100644 --- a/include/text_window_graphics.h +++ b/include/text_window_graphics.h @@ -8,11 +8,11 @@ struct TextWindowGraphics }; extern const u16 gUnknown_8470B0C[]; -extern const u16 gUnknown_8471A4C[]; -extern const u16 gUnknown_8471B6C[]; +extern const u16 gStdFrame0[]; +extern const u16 gStdFrame1[]; extern const u16 gUnknown_8471DEC[][16]; -extern const struct TextWindowGraphics gUnknown_8471E8C[]; +extern const struct TextWindowGraphics gUserFrames[]; const struct TextWindowGraphics * sub_8069788(u8 idx); diff --git a/include/trainer_card.h b/include/trainer_card.h new file mode 100644 index 000000000..e8531cef5 --- /dev/null +++ b/include/trainer_card.h @@ -0,0 +1,43 @@ +#ifndef GUARD_TRAINER_CARD_H +#define GUARD_TRAINER_CARD_H + +struct TrainerCard +{ + /*0x00*/ u8 gender; + /*0x01*/ u8 stars; + /*0x02*/ bool8 hasPokedex; + /*0x03*/ bool8 caughtAllHoenn; + /*0x04*/ bool8 hasAllPaintings; + /*0x06*/ u16 hofDebutHours; + /*0x08*/ u16 hofDebutMinutes; + /*0x0A*/ u16 hofDebutSeconds; + /*0x0C*/ u16 caughtMonsCount; + /*0x0E*/ u16 trainerId; + /*0x10*/ u16 playTimeHours; + /*0x12*/ u16 playTimeMinutes; + /*0x14*/ u16 linkBattleWins; + /*0x16*/ u16 linkBattleLosses; + /*0x18*/ u16 battleTowerWins; + /*0x1A*/ u16 battleTowerStraightWins; + /*0x1C*/ u16 contestsWithFriends; + /*0x1E*/ u16 pokeblocksWithFriends; + /*0x20*/ u16 pokemonTrades; + /*0x24*/ u32 money; + /*0x28*/ u16 var_28[4]; + /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x38*/ u8 version; + /*0x3A*/ u16 var_3A; + /*0x3C*/ u32 berryCrushPoints; + /*0x40*/ u32 unionRoomNum; + /*0x44*/ u8 filler44[0x8]; + /*0x4C*/ u8 var_4C; + /*0x4D*/ u8 var_4D; + /*0x4E*/ u8 var_4E; + /*0x4F*/ u8 var_4F; + /*0x50*/ u8 var_50[0x4]; + /*0x54*/ u16 monSpecies[PARTY_SIZE]; +}; + +extern struct TrainerCard gTrainerCards[4]; + +#endif //GUARD_TRAINER_CARD_H diff --git a/include/trainer_tower.h b/include/trainer_tower.h new file mode 100644 index 000000000..b9c16d958 --- /dev/null +++ b/include/trainer_tower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TRAINER_TOWER_H +#define GUARD_TRAINER_TOWER_H + +void PrintTrainerTowerRecords(void); + +#endif //GUARD_TRAINER_TOWER_H diff --git a/include/unk_8159F40.h b/include/unk_8159F40.h index f0e85d416..7f6a98c3a 100644 --- a/include/unk_8159F40.h +++ b/include/unk_8159F40.h @@ -3,6 +3,7 @@ #include "global.h" +void sub_8159F40(void); void sub_815A008(struct QuestLog *); void sub_815A1F8(struct QuestLog *, struct MapObjectTemplate *); diff --git a/include/unk_815C980.h b/include/unk_815C980.h index 78d4bd73b..a3249a8e2 100644 --- a/include/unk_815C980.h +++ b/include/unk_815C980.h @@ -17,8 +17,8 @@ struct UnkStruct3 void sub_815C9F4(void); void sub_815D108(u32 id); -void sub_815CD70(u32 id, s32 arg1); -u8 sub_815D324(u32 shape, u32 size); +void sub_815D1A8(u32 id, bool32 arg1); bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2); +void sub_815CD70(u32 id, s32 arg1); #endif //GUARD_UNK_815C980_H diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h index cc1cbb7ce..02c886895 100644 --- a/include/unk_815c27c.h +++ b/include/unk_815c27c.h @@ -1,11 +1,11 @@ #ifndef GUARD_UNK_815C27C_H #define GUARD_UNK_815C27C_H -void sub_815C6D4(void); -void sub_815C6C4(void); -void sub_815C8C8(void); -void sub_815C960(void); -void sub_815C91C(void); -u16 sub_815C498(u8, size_t, const void *, u8); +void EReaderHelper_SerialCallback(void); +void EReaderHelper_Timer3Callback(void); +void EReaderHelper_SaveRegsState(void); +void EReaderHelper_ClearsSendRecvMgr(void); +void EReaderHelper_RestoreRegsState(void); +u16 EReaderHandleTransfer(u8, size_t, const void *, void *); #endif //GUARD_UNK_815C27C_H diff --git a/include/unk_text_util.h b/include/unk_text_util.h deleted file mode 100644 index 750c0541e..000000000 --- a/include/unk_text_util.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_UNK_TEXT_UTIL_H -#define GUARD_UNK_TEXT_UTIL_H - -#include "global.h" - -void UnkTextUtil_Reset(void); -void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr); -u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src); -const u8 *UnkTextUtil_GetPtrI(u8 idx); - -#endif //GUARD_UNK_TEXT_UTIL_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index b4c42116a..bf53ed6ee 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -43,6 +43,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); void sub_8082740(u8); -u8 GetUnownLetterByPersonality(u32 personality); +u8 GetUnownLetterByPersonalityLoByte(u32 personality); +bool8 SweetScentWildEncounter(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/include/window.h b/include/window.h index eb35e94d2..30e73dd32 100644 --- a/include/window.h +++ b/include/window.h @@ -47,6 +47,8 @@ struct Window u8 *tileData; }; +typedef void (*WindowFunc)(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum); + bool16 InitWindows(const struct WindowTemplate *templates); u16 AddWindow(const struct WindowTemplate *template); int AddWindowWithoutTileMap(const struct WindowTemplate *template); @@ -64,7 +66,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); void FillWindowPixelBuffer(u8 windowId, u8 fillValue); void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); -void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); +void CallWindowFunction(u8 windowId, WindowFunc func); bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); u32 GetWindowAttribute(u8 windowId, u8 attributeId); u16 AddWindow8Bit(struct WindowTemplate *template); |