summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-15 09:01:56 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-15 09:01:56 -0500
commit89b695278d0a126279ac232d534aebdc351cc2be (patch)
tree2b22248f02a30a906187553274dee989c6ddb74e /include
parent79609d52c8d8489b490589a1150b0754c0f61568 (diff)
parent055a419830c0725a629f971b0299c89082c192fd (diff)
Merge branch 'master' into heal_location
Diffstat (limited to 'include')
-rw-r--r--include/battle.h100
-rw-r--r--include/battle_anim.h6
-rw-r--r--include/battle_gfx_sfx_util.h50
-rw-r--r--include/battle_interface.h9
-rw-r--r--include/battle_script_commands.h2
-rw-r--r--include/battle_util2.h10
-rw-r--r--include/contest.h10
-rw-r--r--include/decompress.h2
-rw-r--r--include/event_data.h10
-rwxr-xr-xinclude/event_scripts.h32
-rw-r--r--include/flags.h150
-rw-r--r--include/hall_of_fame.h8
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/malloc.h6
-rw-r--r--include/pokedex.h2
-rw-r--r--include/pokemon.h4
-rw-r--r--include/starter_choose.h7
-rw-r--r--include/text_window.h2
18 files changed, 249 insertions, 163 deletions
diff --git a/include/battle.h b/include/battle.h
index ace2bb4ad..0939c92b6 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -6,6 +6,8 @@
#include "battle_script_commands.h"
#include "battle_2.h"
#include "battle_ai_switch_items.h"
+#include "battle_gfx_sfx_util.h"
+#include "battle_util2.h"
/*
Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
@@ -252,11 +254,21 @@
#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]))
+#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
+#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
+
+// defines for the gTypeEffectiveness multipliers
#define TYPE_MUL_NO_EFFECT 0
#define TYPE_MUL_NOT_EFFECTIVE 5
#define TYPE_MUL_NORMAL 10
#define TYPE_MUL_SUPER_EFFECTIVE 20
+// special type table Ids
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
@@ -361,8 +373,8 @@ struct DisableStruct
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer1 : 4;
/*0x0E*/ u8 encoreTimer2 : 4;
- /*0x0F*/ u8 perishSong1 : 4;
- /*0x0F*/ u8 perishSong2 : 4;
+ /*0x0F*/ u8 perishSongTimer1 : 4;
+ /*0x0F*/ u8 perishSongTimer2 : 4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutCounter1 : 4;
/*0x11*/ u8 rolloutCounter2 : 4;
@@ -611,7 +623,7 @@ struct BattleStruct
u8 sentInPokes;
bool8 selectionScriptFinished[BATTLE_BANKS_COUNT];
u8 field_58[4];
- u8 field_5C[4];
+ u8 monToSwitchIntoId[BATTLE_BANKS_COUNT];
u8 field_60[4][3];
u8 runTries;
u8 caughtMonNick[11];
@@ -670,7 +682,7 @@ struct BattleStruct
u8 fillerDC[0xDF-0xDC];
u8 field_DF;
u8 mirrorMoveArrays[32];
- u16 castformPalette[4][16];
+ u16 castformPalette[BATTLE_BANKS_COUNT][16];
u8 field_180;
u8 field_181;
u8 field_182;
@@ -683,7 +695,7 @@ struct BattleStruct
u8 field_1A4[96];
u8 field_204[104];
u8 field_26C[40];
- u8 field_294[4];
+ u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT];
u8 field_298[8];
u8 field_2A0;
u8 field_2A1;
@@ -807,6 +819,18 @@ extern struct BattleStruct* gBattleStruct;
#define B_ANIM_SUBSTITUTE_TO_MON 0x5
#define B_ANIM_MON_TO_SUBSTITUTE 0x6
+// status animation table
+#define B_ANIM_STATUS_PSN 0x0
+#define B_ANIM_STATUS_CONFUSION 0x1
+#define B_ANIM_STATUS_BRN 0x2
+#define B_ANIM_STATUS_INFATUATION 0x3
+#define B_ANIM_STATUS_SLP 0x4
+#define B_ANIM_STATUS_PRZ 0x5
+#define B_ANIM_STATUS_FRZ 0x6
+#define B_ANIM_STATUS_CURSED 0x7
+#define B_ANIM_STATUS_NIGHTMARE 0x8
+#define B_ANIM_STATUS_WRAPPED 0x9
+
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
@@ -857,50 +881,6 @@ bool8 LoadChosenBattleElement(u8 caseId);
void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
-// battle_5
-void AllocateBattleResrouces(void);
-void FreeBattleResources(void);
-void AdjustFriendshipOnBattleFaint(u8 bank);
-void sub_80571DC(u8 bank, u8 arg1);
-u32 sub_805725C(u8 bank);
-
-// battle 7
-void AllocateBattleSpritesData(void);
-void FreeBattleSpritesData(void);
-void AllocateMonSpritesGfx(void);
-void FreeMonSpritesGfx(void);
-void BattleMusicStop(void);
-void sub_805E990(struct Pokemon *mon, u8 bank);
-void sub_805EF14(void);
-bool8 BattleInitAllSprites(u8 *state1, u8 *state2);
-void sub_805E350(void);
-bool8 BattleLoadAllHealthBoxesGfx(u8 state);
-void LoadAndCreateEnemyShadowSprites(void);
-void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1);
-void nullsub_24(u16 arg0);
-void nullsub_25(u8 arg0);
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
-void sub_805D714(struct Sprite *sprite);
-void DecompressTrainerBackPic(u16 backPicId, u8 bank);
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
-void FreeTrainerFrontPicPalette(u16 frontPicId);
-void sub_805D7AC(struct Sprite *sprite);
-bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
-void sub_805EB9C(u8 arg0);
-void sub_805E394(void);
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
-void DoStatusAnimation(bool8 isStatus2, u32 status);
-void DoSpecialBattleAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
-bool8 DoBattleAnimationFromTable(u8 active, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
-void CopyBattleSpriteInvisibility(u8 bank);
-u16 ChooseMoveAndTargetInBattlePalace(void);
-void LoadBattleBarGfx(u8 arg0);
-bool8 mplay_80342A4(u8 bank);
-void sub_805EEE0(u8 bank);
-
enum
{
BACK_PIC_BRENDAN,
@@ -921,7 +901,7 @@ u8 GetBankByIdentity(u8 bank);
struct BattleSpriteInfo
{
u16 invisible : 1; // 0x1
- u16 flag_x2 : 1; // 0x2
+ u16 lowHpSong : 1; // 0x2
u16 behindSubstitute : 1; // 0x4
u16 flag_x8 : 1; // 0x8
u16 hpNumbersNoBars : 1; // 0x10
@@ -930,7 +910,7 @@ struct BattleSpriteInfo
struct BattleAnimationInfo
{
- u16 field; // to fill up later
+ u16 animArg; // to fill up later
u8 field_2;
u8 field_3;
u8 field_4;
@@ -944,6 +924,12 @@ struct BattleAnimationInfo
u8 field_9_x20 : 1;
u8 field_9_x40 : 1;
u8 field_9_x80 : 1;
+ u8 field_A;
+ u8 field_B;
+ u8 field_C;
+ u8 field_D;
+ u8 field_E;
+ u8 field_F;
};
struct BattleHealthboxInfo
@@ -966,7 +952,7 @@ struct BattleHealthboxInfo
u8 animationState;
u8 field_5;
u8 field_6;
- u8 field_7;
+ u8 shadowSpriteId;
u8 field_8;
u8 field_9;
u8 field_A;
@@ -997,6 +983,9 @@ extern struct BattleSpriteData *gBattleSpritesDataPtr;
extern u8 *gLinkBattleSendBuffer;
extern u8 *gLinkBattleRecvBuffer;
+extern u8 *gUnknown_0202305C;
+extern u8 *gUnknown_02023060;
+
// Move this somewhere else
#include "sprite.h"
@@ -1006,8 +995,11 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
- u8 field_74[0x100];
- u8 *fontPixels;
+ struct SpriteFrameImage field_74[4][4];
+ u8 field_F4[0x80];
+ u8 *barFontGfx;
+ void *field_178;
+ void *field_17C;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index e912af6b1..c055e94fa 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -92,7 +92,11 @@ u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
-u8 sub_80A6138(u8 bank);
+u8 GetBankSpriteDefault_Y(u8 bank);
u8 sub_80A82E4(u8 bank);
+u8 GetSubstituteSpriteDefault_Y(u8 bank);
+
+// battle_anim_80A9C70.s
+void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
new file mode 100644
index 000000000..313a29811
--- /dev/null
+++ b/include/battle_gfx_sfx_util.h
@@ -0,0 +1,50 @@
+#ifndef GUARD_BATTLE_GFX_SFX_UTIL
+#define GUARD_BATTLE_GFX_SFX_UTIL
+
+void AllocateBattleSpritesData(void);
+void FreeBattleSpritesData(void);
+u16 ChooseMoveAndTargetInBattlePalace(void);
+void sub_805D714(struct Sprite *sprite);
+void sub_805D770(struct Sprite *sprite, bool8 arg1);
+void sub_805D7AC(struct Sprite *sprite);
+void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
+bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
+void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
+bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
+bool8 mplay_80342A4(u8 bank);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void nullsub_23(void);
+void nullsub_24(u16 species);
+void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
+void DecompressTrainerBackPic(u16 backPicId, u8 bank);
+void nullsub_25(u8 arg0);
+void FreeTrainerFrontPicPalette(u16 frontPicId);
+void sub_805DFFC(void);
+bool8 BattleLoadAllHealthBoxesGfx(u8 state);
+void LoadBattleBarGfx(u8 arg0);
+bool8 BattleInitAllSprites(u8 *state1, u8 *bank);
+void ClearSpritesHealthboxAnimData(void);
+void CopyAllBattleSpritesInvisibilities(void);
+void CopyBattleSpriteInvisibility(u8 bank);
+void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform);
+void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite);
+void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId);
+void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
+void ClearBehindSubstituteBit(u8 bank);
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank);
+void BattleStopLowHpSound(void);
+u8 GetMonHPBarLevel(struct Pokemon *mon);
+void sub_805EAE8(void);
+void sub_805EB9C(u8 affineMode);
+void LoadAndCreateEnemyShadowSprites(void);
+void SpriteCB_SetInvisible(struct Sprite *sprite);
+void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
+void EnemyShadowCallbackToSetInvisible(u8 bank);
+void sub_805EF14(void);
+void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
+void AllocateMonSpritesGfx(void);
+void FreeMonSpritesGfx(void);
+bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
+
+#endif // GUARD_BATTLE_GFX_SFX_UTIL
diff --git a/include/battle_interface.h b/include/battle_interface.h
index aad30f7b3..b2d3b1b97 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -15,6 +15,15 @@ enum
EXP_BAR
};
+enum
+{
+ HP_BAR_EMPTY,
+ HP_BAR_RED,
+ HP_BAR_YELLOW,
+ HP_BAR_GREEN,
+ HP_BAR_FULL,
+};
+
#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index a466abc04..ebfeabccc 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -57,6 +57,6 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 bank);
extern void (* const gBattleScriptingCommandsTable[])(void);
-extern const u8 gUnknown_0831C494[];
+extern const u8 gUnknown_0831C494[][4];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_util2.h b/include/battle_util2.h
new file mode 100644
index 000000000..3954e42dc
--- /dev/null
+++ b/include/battle_util2.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_BATTLE_UTIL2_H
+#define GUARD_BATTLE_UTIL2_H
+
+void AllocateBattleResources(void);
+void FreeBattleResources(void);
+void AdjustFriendshipOnBattleFaint(u8 bank);
+void sub_80571DC(u8 bank, u8 arg1);
+u32 sub_805725C(u8 bank);
+
+#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/contest.h b/include/contest.h
index 7dcde7da2..d920117f3 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -12,14 +12,20 @@ struct ContestStruct_02039E00
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
extern u8 gUnknown_02039F24;
-extern u16 gScriptContestCategory;
-extern u8 gUnknown_02039F2E;
+extern u16 gSpecialVar_ContestCategory;
+extern u8 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F30;
struct ContestStruct_field_18
{
// unknown size
u16 field_0;
+ u16 field_2;
+ u16 field_4;
+ u16 field_6;
+ u32 field_8;
+ u32 field_C;
+ u32 field_10;
};
struct ContestResources
diff --git a/include/decompress.h b/include/decompress.h
index c3a771893..36be803e0 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -3,6 +3,8 @@
#include "sprite.h"
+extern u8 gDecompressionBuffer[0x4000];
+
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
diff --git a/include/event_data.h b/include/event_data.h
index 0bd11fdcd..f0ab90ae4 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -42,11 +42,11 @@ extern u16 gSpecialVar_0x8008;
extern u16 gSpecialVar_0x8009;
extern u16 gSpecialVar_0x800A;
extern u16 gSpecialVar_0x800B;
-extern u16 gScriptResult;
-extern u16 gScriptLastTalked;
-extern u16 gScriptFacing;
-extern u16 gSpecialVar_0x8012;
-extern u16 gSpecialVar_0x8013;
+extern u16 gSpecialVar_Result;
+extern u16 gSpecialVar_LastTalked;
+extern u16 gSpecialVar_Facing;
+extern u16 gSpecialVar_MonBoxId;
+extern u16 gSpecialVar_MonBoxPos;
extern u16 gSpecialVar_0x8014;
#endif // GUARD_EVENT_DATA_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index f85118e00..844f1052a 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -7,12 +7,12 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
-extern const u8 gUnknown_08275BB7[];
-extern const u8 gUnknown_08275D0C[];
-extern const u8 gUnknown_08275D1F[];
-extern const u8 gUnknown_08275D2E[];
-extern const u8 gUnknown_082766A2[];
-extern const u8 gUnknown_082766A6[];
+extern const u8 EventScript_275BB7[];
+extern const u8 EventScript_275D0C[];
+extern const u8 EventScript_275D1F[];
+extern const u8 EventScript_275D2E[];
+extern const u8 EventScript_2766A2[];
+extern const u8 EventScript_2766A6[];
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
@@ -362,14 +362,14 @@ extern const u8 gPokeNewsTextLilycove_Ending[];
extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
extern const u8 gPokeNewsTextBlendMaster_Ending[];
-extern const u8 gUnknown_08274966[];
-extern const u8 gUnknown_08274D13[];
-extern const u8 gUnknown_08274FFE[];
-extern const u8 gUnknown_08275367[];
-extern const u8 gUnknown_082756C7[];
-extern const u8 gUnknown_08274B24[];
-extern const u8 gUnknown_08274E75[];
-extern const u8 gUnknown_082751E1[];
-extern const u8 gUnknown_082754F6[];
-extern const u8 gUnknown_082758CC[];
+extern const u8 SecretBase_RedCave1_Text_274966[];
+extern const u8 SecretBase_RedCave1_Text_274D13[];
+extern const u8 SecretBase_RedCave1_Text_274FFE[];
+extern const u8 SecretBase_RedCave1_Text_275367[];
+extern const u8 SecretBase_RedCave1_Text_2756C7[];
+extern const u8 SecretBase_RedCave1_Text_274B24[];
+extern const u8 SecretBase_RedCave1_Text_274E75[];
+extern const u8 SecretBase_RedCave1_Text_2751E1[];
+extern const u8 SecretBase_RedCave1_Text_2754F6[];
+extern const u8 SecretBase_RedCave1_Text_2758CC[];
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/flags.h b/include/flags.h
index 474037a0e..ffe205c05 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -1,29 +1,29 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
-#define TRAINER_FLAG_START 0x500
+#define FLAG_TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
-#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
+#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
-#define SYS_POKEMON_GET CODE_FLAGS + 0
-#define SYS_POKEDEX_GET CODE_FLAGS + 1
-#define SYS_POKENAV_GET CODE_FLAGS + 2
+#define FLAG_SYS_POKEMON_GET CODE_FLAGS + 0
+#define FLAG_SYS_POKEDEX_GET CODE_FLAGS + 1
+#define FLAG_SYS_POKENAV_GET CODE_FLAGS + 2
// third one appears unused
-#define SYS_GAME_CLEAR CODE_FLAGS + 4
-#define SYS_CHAT_USED CODE_FLAGS + 5
-#define SYS_HIPSTER_MEET CODE_FLAGS + 6
+#define FLAG_SYS_GAME_CLEAR CODE_FLAGS + 4
+#define FLAG_SYS_CHAT_USED CODE_FLAGS + 5
+#define FLAG_SYS_HIPSTER_MEET CODE_FLAGS + 6
// badges
-#define BADGE01_GET CODE_FLAGS + 7
-#define BADGE02_GET CODE_FLAGS + 8
-#define BADGE03_GET CODE_FLAGS + 9
-#define BADGE04_GET CODE_FLAGS + 0xA
-#define BADGE05_GET CODE_FLAGS + 0xB
-#define BADGE06_GET CODE_FLAGS + 0xC
-#define BADGE07_GET CODE_FLAGS + 0xD
-#define BADGE08_GET CODE_FLAGS + 0xE
+#define FLAG_BADGE01_GET CODE_FLAGS + 7
+#define FLAG_BADGE02_GET CODE_FLAGS + 8
+#define FLAG_BADGE03_GET CODE_FLAGS + 9
+#define FLAG_BADGE04_GET CODE_FLAGS + 0xA
+#define FLAG_BADGE05_GET CODE_FLAGS + 0xB
+#define FLAG_BADGE06_GET CODE_FLAGS + 0xC
+#define FLAG_BADGE07_GET CODE_FLAGS + 0xD
+#define FLAG_BADGE08_GET CODE_FLAGS + 0xE
// cities and towns
#define FLAG_VISITED_LITTLEROOT_TOWN CODE_FLAGS + 0xF
@@ -43,69 +43,69 @@
#define FLAG_VISITED_SOOTOPOLIS_CITY CODE_FLAGS + 0x1D
#define FLAG_VISITED_EVER_GRANDE_CITY CODE_FLAGS + 0x1E
-#define SYS_UNKNOWN_880 CODE_FLAGS + 0x20
-
-#define SYS_USE_FLASH CODE_FLAGS + 0x28
-#define SYS_USE_STRENGTH CODE_FLAGS + 0x29
-#define SYS_WEATHER_CTRL CODE_FLAGS + 0x2A
-#define SYS_CYCLING_ROAD CODE_FLAGS + 0x2B
-#define SYS_SAFARI_MODE CODE_FLAGS + 0x2C
-#define SYS_CRUISE_MODE CODE_FLAGS + 0x2D
-
-#define SYS_TV_HOME CODE_FLAGS + 0x30
-#define SYS_TV_WATCH CODE_FLAGS + 0x31
-#define SYS_TV_START CODE_FLAGS + 0x32
-#define SYS_POPWORD_INPUT CODE_FLAGS + 0x33
-#define SYS_MIX_RECORD CODE_FLAGS + 0x34
-#define SYS_CLOCK_SET CODE_FLAGS + 0x35
-#define SYS_NATIONAL_DEX CODE_FLAGS + 0x36
-#define SYS_CAVE_SHIP CODE_FLAGS + 0x37
-#define SYS_CAVE_WONDER CODE_FLAGS + 0x38
-#define SYS_CAVE_BATTLE CODE_FLAGS + 0x39
-#define SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
-#define SYS_RIBBON_GET CODE_FLAGS + 0x3B
+#define FLAG_SYS_UNKNOWN_880 CODE_FLAGS + 0x20
+
+#define FLAG_SYS_USE_FLASH CODE_FLAGS + 0x28
+#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_SYS_CRUISE_MODE CODE_FLAGS + 0x2D
+
+#define FLAG_SYS_TV_HOME CODE_FLAGS + 0x30
+#define FLAG_SYS_TV_WATCH CODE_FLAGS + 0x31
+#define FLAG_SYS_TV_START CODE_FLAGS + 0x32
+#define FLAG_SYS_POPWORD_INPUT CODE_FLAGS + 0x33
+#define FLAG_SYS_MIX_RECORD CODE_FLAGS + 0x34
+#define FLAG_SYS_CLOCK_SET CODE_FLAGS + 0x35
+#define FLAG_SYS_NATIONAL_DEX CODE_FLAGS + 0x36
+#define FLAG_SYS_CAVE_SHIP CODE_FLAGS + 0x37
+#define FLAG_SYS_CAVE_WONDER CODE_FLAGS + 0x38
+#define FLAG_SYS_CAVE_BATTLE CODE_FLAGS + 0x39
+#define FLAG_SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
+#define FLAG_SYS_RIBBON_GET CODE_FLAGS + 0x3B
#define FLAG_UNLOCK_BATTLE_FRONTIER CODE_FLAGS + 0x48
#define FLAG_UNLOCK_SOUTHERN_ISLAND CODE_FLAGS + 0x49
-#define SYS_PC_LANETTE CODE_FLAGS + 0x4B
-#define SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
-#define SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
-#define SYS_ENC_DOWN_ITEM CODE_FLAGS + 0x4E
-#define SYS_BRAILLE_DIG CODE_FLAGS + 0x4F
-#define SYS_BRAILLE_STRENGTH CODE_FLAGS + 0x50
-#define SYS_BRAILLE_WAIT CODE_FLAGS + 0x51
-#define SYS_BRAILLE_FLY CODE_FLAGS + 0x52
-#define SYS_HAS_EON_TICKET CODE_FLAGS + 0x53
-
-#define SYS_POKEMON_LEAGUE_FLY CODE_FLAGS + 0x54
-
-#define SYS_TV_LATI CODE_FLAGS + 0x5D
-
-#define SYS_SHOAL_ITEM CODE_FLAGS + 0x5F
-#define SYS_B_DASH CODE_FLAGS + 0x60 // got Running Shoes
-#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
-#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
-
-#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
-#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
-#define SYS_DOME_SILVER CODE_FLAGS + 0x66
-#define SYS_DOME_GOLD CODE_FLAGS + 0x67
-#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
-#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
-#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
-#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
-#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
-#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
-#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
-#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
-#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
-#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
-#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
-
-#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
-
-#define SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
+#define FLAG_SYS_PC_LANETTE CODE_FLAGS + 0x4B
+#define FLAG_SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
+#define FLAG_SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
+#define FLAG_SYS_ENC_DOWN_ITEM CODE_FLAGS + 0x4E
+#define FLAG_SYS_BRAILLE_DIG CODE_FLAGS + 0x4F
+#define FLAG_SYS_BRAILLE_STRENGTH CODE_FLAGS + 0x50
+#define FLAG_SYS_BRAILLE_WAIT CODE_FLAGS + 0x51
+#define FLAG_SYS_BRAILLE_FLY CODE_FLAGS + 0x52
+#define FLAG_SYS_HAS_EON_TICKET CODE_FLAGS + 0x53
+
+#define FLAG_SYS_POKEMON_LEAGUE_FLY CODE_FLAGS + 0x54
+
+#define FLAG_SYS_TV_LATI CODE_FLAGS + 0x5D
+
+#define FLAG_SYS_SHOAL_ITEM CODE_FLAGS + 0x5F
+#define FLAG_SYS_B_DASH CODE_FLAGS + 0x60 // got Running Shoes
+#define FLAG_SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
+#define FLAG_SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
+
+#define FLAG_SYS_TOWER_SILVER CODE_FLAGS + 0x64
+#define FLAG_SYS_TOWER_GOLD CODE_FLAGS + 0x65
+#define FLAG_SYS_DOME_SILVER CODE_FLAGS + 0x66
+#define FLAG_SYS_DOME_GOLD CODE_FLAGS + 0x67
+#define FLAG_SYS_PALACE_SILVER CODE_FLAGS + 0x68
+#define FLAG_SYS_PALACE_GOLD CODE_FLAGS + 0x69
+#define FLAG_SYS_ARENA_SILVER CODE_FLAGS + 0x6A
+#define FLAG_SYS_ARENA_GOLD CODE_FLAGS + 0x6B
+#define FLAG_SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
+#define FLAG_SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
+#define FLAG_SYS_PIKE_SILVER CODE_FLAGS + 0x6E
+#define FLAG_SYS_PIKE_GOLD CODE_FLAGS + 0x6F
+#define FLAG_SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
+#define FLAG_SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
+#define FLAG_SYS_FRONTIER_PASS CODE_FLAGS + 0x72
+
+#define FLAG_SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
+
+#define FLAG_SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
// SPECIAL FLAGS (unknown purpose)
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 62e84c39e..d35ecf268 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -1,9 +1,9 @@
#ifndef GUARD_HALL_OF_FAME_H
#define GUARD_HALL_OF_FAME_H
-void sub_8141F90(void);
-void sub_8143648(u16 paletteTag, u8 arg1);
-void sub_81428CC(void);
-void sub_8143680(int, u8);
+void CB2_DoHallOfFameScreen(void);
+void CB2_DoHallOfFameScreenDontSaveData(void);
+void CB2_DoHallOfFamePC(void);
+void sub_8175280(void);
#endif // GUARD_HALL_OF_FAME_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 9d9735a52..e7876162e 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -12,7 +12,7 @@ s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 lett
s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
// sub_81DB41C
-// sub_81DB468
+// CopyMonCategoryText
// sub_81DB494
// sub_81DB4DC
// sub_81DB554
diff --git a/include/malloc.h b/include/malloc.h
index f3a731797..003ee1f03 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -5,6 +5,12 @@
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
+#define FREE_AND_SET_NULL(ptr) \
+{ \
+ free(ptr); \
+ ptr = NULL; \
+}
+
extern u8 gHeap[];
void *Alloc(u32 size);
void *AllocZeroed(u32 size);
diff --git a/include/pokedex.h b/include/pokedex.h
index 79721899f..236feac45 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -2,7 +2,7 @@
#define GUARD_POKEDEX_H
void ResetPokedex(void);
-const u8 *GetPokemonCategory(u16);
+void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
diff --git a/include/pokemon.h b/include/pokemon.h
index 0c7d6ac40..69b9e71d5 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -612,8 +612,8 @@ u32 CanMonLearnTMHM(struct Pokemon *, u8);
u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
void ClearBattleMonForms(void);
-const u8 *pokemon_get_pal(struct Pokemon *mon);
-const u8 *species_and_otid_get_pal(u16, u32, u32);
+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);
diff --git a/include/starter_choose.h b/include/starter_choose.h
new file mode 100644
index 000000000..61bc17735
--- /dev/null
+++ b/include/starter_choose.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_STARTER_CHOOSE_H
+#define GUARD_STARTER_CHOOSE_H
+
+u16 GetStarterPokemon(u16 chosenStarterId);
+void CB2_ChooseStarter(void);
+
+#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/text_window.h b/include/text_window.h
index 0cefeea8e..da3fb301e 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -16,7 +16,7 @@ void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
-const u16* sub_8098C64(void);
+const u16* GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
#endif // GUARD_TEXT_WINDOW_H