summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/alloc.h22
-rw-r--r--include/battle_anim.h100
-rw-r--r--include/battle_controllers.h4
-rw-r--r--include/battle_main.h6
-rw-r--r--include/battle_pyramid_bag.h6
-rw-r--r--include/battle_util2.h2
-rw-r--r--include/bg.h85
-rw-r--r--include/blit.h17
-rw-r--r--include/constants/battle_frontier.h19
-rw-r--r--include/constants/battle_pike.h49
-rw-r--r--include/constants/battle_pyramid.h49
-rw-r--r--include/constants/cable_club.h15
-rw-r--r--include/constants/contest.h6
-rw-r--r--include/constants/easy_chat.h1
-rwxr-xr-xinclude/constants/event_object_movement_constants.h4
-rw-r--r--include/constants/field_poison.h12
-rw-r--r--include/constants/field_tasks.h13
-rw-r--r--include/constants/flags.h149
-rw-r--r--include/constants/global.h8
-rwxr-xr-xinclude/constants/map_groups.h4
-rw-r--r--include/constants/mauville_man.h10
-rw-r--r--include/constants/mauville_old_man.h12
-rw-r--r--include/constants/metatile_labels.h18
-rw-r--r--include/constants/party_menu.h132
-rw-r--r--include/constants/pokemon.h5
-rw-r--r--include/constants/script_menu.h4
-rw-r--r--include/constants/trade.h116
-rw-r--r--include/constants/trainer_hill.h2
-rw-r--r--include/constants/tv.h46
-rw-r--r--include/constants/vars.h10
-rw-r--r--include/contest.h2
-rw-r--r--include/dma3.h55
-rw-r--r--include/dodrio_berry_picking.h4
-rw-r--r--include/easy_chat.h4
-rw-r--r--include/event_scripts.h292
-rw-r--r--include/field_effect.h2
-rw-r--r--include/field_poison.h8
-rw-r--r--include/field_screen_effect.h8
-rw-r--r--include/fldeff.h4
-rw-r--r--include/global.fieldmap.h41
-rw-r--r--include/global.h40
-rw-r--r--include/global.tv.h47
-rw-r--r--include/gpu_regs.h19
-rw-r--r--include/graphics.h14
-rw-r--r--include/item_use.h2
-rw-r--r--include/librfu.h10
-rw-r--r--include/link.h69
-rw-r--r--include/link_rfu.h6
-rw-r--r--include/mauville_old_man.h10
-rw-r--r--include/menu.h5
-rw-r--r--include/menu_helpers.h7
-rw-r--r--include/mossdeep_gym.h9
-rw-r--r--include/naming_screen.h16
-rw-r--r--include/party_menu.h179
-rw-r--r--include/pokeball.h2
-rw-r--r--include/pokemon.h5
-rw-r--r--include/pokemon_icon.h4
-rw-r--r--include/pokemon_jump.h6
-rw-r--r--include/pokemon_storage_system.h2
-rwxr-xr-xinclude/pokemon_summary_screen.h3
-rw-r--r--include/region_map.h2
-rw-r--r--include/rotating_tile_puzzle.h9
-rw-r--r--include/script.h2
-rw-r--r--include/script_pokemon_81B9.h6
-rw-r--r--include/sprite.h319
-rw-r--r--include/string_util.h46
-rw-r--r--include/strings.h101
-rw-r--r--include/text.h312
-rw-r--r--include/trade.h27
-rw-r--r--include/trainer_hill.h2
-rw-r--r--include/trainer_see.h8
-rw-r--r--include/tv.h16
-rw-r--r--include/union_room.h6
-rwxr-xr-xinclude/union_room_chat.h11
-rw-r--r--include/window.h78
75 files changed, 1134 insertions, 1612 deletions
diff --git a/include/alloc.h b/include/alloc.h
deleted file mode 100644
index f2dcf6d46..000000000
--- a/include/alloc.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef GUARD_ALLOC_H
-#define GUARD_ALLOC_H
-
-#define HEAP_SIZE 0x1C000
-#define malloc Alloc
-#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);
-void Free(void *pointer);
-void InitHeap(void *pointer, u32 size);
-
-#endif // GUARD_ALLOC_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
index a7b71bd85..503e23df2 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -101,7 +101,7 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2);
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 a2);
u8 GetBattlerYCoordWithElevation(u8 battlerId);
void WaitAnimForDuration(struct Sprite *sprite);
-void sub_80A7938(struct Sprite *sprite);
+void AnimSnoreZ(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
void sub_80A6F98(struct Sprite *sprite);
u8 GetBattlerSpriteBGPriority(u8 battlerId);
@@ -141,17 +141,17 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite);
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
void TranslateMonSpriteLinear(struct Sprite *sprite);
void TranslateSpriteLinear(struct Sprite *sprite);
-void sub_80A77C8(struct Sprite *sprite);
+void AnimSpriteOnMonPos(struct Sprite *sprite);
void sub_80A7000(struct Sprite *sprite);
void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2);
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
bool8 RunAffineAnimFromTaskData(struct Task *task);
-void sub_80A78AC(struct Sprite *sprite);
+void AnimThrowProjectile(struct Sprite *sprite);
void sub_80A6BFC(struct BattleAnimBgData *unk, u8 unused);
u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
void sub_80A749C(struct Sprite *sprite);
-void sub_80A6DEC(struct Sprite *sprite);
+void TradeMenuBouncePartySprites(struct Sprite *sprite);
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId);
@@ -221,11 +221,11 @@ void sub_8116EB4(u8);
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *arg8, const u32 *arg9, const u32 *palette);
// battle_anim_effects_1.c
-void sub_810310C(u8 battler, struct Sprite* sprite);
+void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite);
void AnimMoveTwisterParticle(struct Sprite* sprite);
// water.c
-void sub_8108C94(struct Sprite *sprite);
+void AnimWaterPulseRing(struct Sprite *sprite);
// flying.c
void sub_810E2C8(struct Sprite *sprite);
@@ -237,50 +237,50 @@ u32 UnpackSelectedBattleAnimPalettes(s16);
u8 GetBattlerSpriteFinal_Y(u8, u16, u8);
-extern const struct OamData gUnknown_08524944;
-extern const struct OamData gUnknown_08524A8C;
-extern const struct OamData gUnknown_08524904;
-extern const struct OamData gUnknown_085249C4;
-extern const struct OamData gUnknown_0852490C;
-extern const struct OamData gUnknown_08524934;
-extern const struct OamData gUnknown_08524974;
-extern const struct OamData gUnknown_0852499C;
-extern const struct OamData gUnknown_085249CC;
-extern const struct OamData gUnknown_08524914;
-extern const struct OamData gUnknown_0852496C;
-extern const struct OamData gUnknown_08524A34;
-extern const struct OamData gUnknown_08524A3C;
-extern const struct OamData gUnknown_08524A94;
-extern const struct OamData gUnknown_08524954;
-extern const struct OamData gUnknown_08524AE4;
-extern const struct OamData gUnknown_085249D4;
-extern const struct OamData gUnknown_08524A9C;
-extern const struct OamData gUnknown_08524ADC;
-extern const struct OamData gUnknown_08524B14;
-extern const struct OamData gUnknown_08524A54;
-extern const struct OamData gUnknown_08524A14;
-extern const struct OamData gUnknown_08524A1C;
-extern const struct OamData gUnknown_085249BC;
-extern const struct OamData gUnknown_08524AF4;
-extern const struct OamData gUnknown_085249DC;
-extern const struct OamData gUnknown_08524AFC;
-extern const struct OamData gUnknown_08524B1C;
-extern const struct OamData gUnknown_08524A04;
-extern const struct OamData gUnknown_08524A2C;
-extern const struct OamData gUnknown_08524AEC;
-extern const struct OamData gUnknown_08524964;
-extern const struct OamData gUnknown_08524B24;
-extern const struct OamData gUnknown_08524A24;
-extern const struct OamData gUnknown_08524AC4;
-extern const struct OamData gUnknown_08524A84;
-extern const struct OamData gUnknown_08524A64;
-extern const struct OamData gUnknown_0852491C;
-extern const struct OamData gUnknown_0852495C;
-extern const struct OamData gUnknown_0852497C;
-extern const struct OamData gUnknown_085249F4;
-extern const struct OamData gUnknown_0852493C;
-extern const struct OamData gUnknown_08524A5C;
-extern const struct OamData gUnknown_08524A74;
+extern const struct OamData gOamData_AffineOff_ObjNormal_8x16;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineOff_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x16;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_64x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineOff_ObjNormal_16x32;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_32x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_32x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_32x16;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_16x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineOff_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_64x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_64x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_16x32;
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 365229fda..32918fefb 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -248,8 +248,8 @@ void nullsub_21(void);
void PlayerHandleGetRawMonData(void);
void sub_80587B0(void);
void sub_805CC00(struct Sprite *sprite);
-void SetCB2ToReshowScreenAfterMenu(void);
-void SetCB2ToReshowScreenAfterMenu2(void);
+void CB2_SetUpReshowBattleScreenAfterMenu(void);
+void CB2_SetUpReshowBattleScreenAfterMenu2(void);
void c3_0802FDF4(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
diff --git a/include/battle_main.h b/include/battle_main.h
index c134f819f..e04db17bb 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -77,20 +77,20 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
-void sub_803BDA0(u8 battlerId);
+void SwitchPartyOrder(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
-extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3];
+extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE];
extern const struct SpriteTemplate gUnknown_0831AC88;
extern const struct OamData gOamData_831ACA8;
extern const struct OamData gOamData_831ACB0;
extern const u8 gTypeEffectiveness[336];
-extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
+extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1];
extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];
extern const u8 *const gAbilityDescriptionPointers[];
diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h
index c3b799a4d..f0c6e7ee4 100644
--- a/include/battle_pyramid_bag.h
+++ b/include/battle_pyramid_bag.h
@@ -36,13 +36,13 @@ extern struct PyramidBagCursorData gPyramidBagCursorData;
void InitBattlePyramidBagCursorPosition(void);
void CB2_PyramidBagMenuFromStartMenu(void);
-void sub_81C4F84(void);
+void CB2_ReturnToPyramidBagMenu(void);
void sub_81C5924(void);
void sub_81C59BC(void);
void sub_81C4EFC(void);
-void sub_81C4F98(u8 a0, void (*callback)(void));
+void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void));
void sub_81C6714(u8 taskId);
-void sub_81C6A94(void);
+void TryStoreHeldItemsInPyramidBag(void);
void sub_81C4F24(void);
void sub_81C5B14(u8 taskId);
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId));
diff --git a/include/battle_util2.h b/include/battle_util2.h
index 336698ea3..fe767ea4b 100644
--- a/include/battle_util2.h
+++ b/include/battle_util2.h
@@ -4,7 +4,7 @@
void AllocateBattleResources(void);
void FreeBattleResources(void);
void AdjustFriendshipOnBattleFaint(u8 battler);
-void sub_80571DC(u8 battler, u8 arg1);
+void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1);
u32 sub_805725C(u8 battler);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/bg.h b/include/bg.h
deleted file mode 100644
index 3c7eee292..000000000
--- a/include/bg.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef GUARD_BG_H
-#define GUARD_BG_H
-
-struct BGCntrlBitfield // for the I/O registers
-{
- volatile u16 priority:2;
- volatile u16 charBaseBlock:2;
- volatile u16 field_0_2:4;
- volatile u16 field_1_0:5;
- volatile u16 areaOverflowMode:1;
- volatile u16 screenSize:2;
-};
-
-enum
-{
- BG_ATTR_CHARBASEINDEX = 1,
- BG_ATTR_MAPBASEINDEX,
- BG_ATTR_SCREENSIZE,
- BG_ATTR_PALETTEMODE,
- BG_ATTR_MOSAIC,
- BG_ATTR_WRAPAROUND,
- BG_ATTR_PRIORITY,
- BG_ATTR_METRIC,
- BG_ATTR_TYPE,
- BG_ATTR_BASETILE,
-};
-
-struct BgTemplate
-{
- u16 bg:2; // 0x1, 0x2 -> 0x3
- u16 charBaseIndex:2; // 0x4, 0x8 -> 0xC
- u16 mapBaseIndex:5; // 0x10, 0x20, 0x40, 0x80, 0x100 -> 0x1F0
- u16 screenSize:2; // 0x200, 0x400 -> 0x600
- u16 paletteMode:1; // 0x800
- u16 priority:2; // 0x1000, 0x2000 > 0x3000
- u16 baseTile:10;
-};
-
-void ResetBgs(void);
-u8 GetBgMode(void);
-void ResetBgControlStructs(void);
-void Unused_ResetBgControlStruct(u8 bg);
-u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode);
-void SetTextModeAndHideBgs(void);
-bool8 IsInvalidBg(u8 bg);
-int DummiedOutFireRedLeafGreenTileAllocFunc(int a1, int a2, int a3, int a4);
-void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
-void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates);
-void InitBgFromTemplate(const struct BgTemplate *template);
-void SetBgMode(u8 bgMode);
-u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset);
-u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset);
-u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset);
-bool8 IsDma3ManagerBusyWithBgCopy(void);
-void ShowBg(u8 bg);
-void HideBg(u8 bg);
-void SetBgAttribute(u8 bg, u8 attributeId, u8 value);
-u16 GetBgAttribute(u8 bg, u8 attributeId);
-s32 ChangeBgX(u8 bg, s32 value, u8 op);
-s32 GetBgX(u8 bg);
-s32 ChangeBgY(u8 bg, s32 value, u8 op);
-s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op);
-s32 GetBgY(u8 bg);
-void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
-u8 Unused_AdjustBgMosaic(u8 a1, u8 a2);
-void SetBgTilemapBuffer(u8 bg, void *tilemap);
-void UnsetBgTilemapBuffer(u8 bg);
-void* GetBgTilemapBuffer(u8 bg);
-void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
-void CopyBgTilemapBufferToVram(u8 bg);
-void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
-void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
-void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset);
-void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
-void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
-void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
-u16 GetBgMetricTextMode(u8 bg, u8 whichMetric);
-u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric);
-u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32 screenHeight);
-void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2);
-u32 GetBgType(u8 bg);
-bool32 IsInvalidBg32(u8 bg);
-bool32 IsTileMapOutsideWram(u8 bg);
-
-#endif // GUARD_BG_H
diff --git a/include/blit.h b/include/blit.h
deleted file mode 100644
index 78f67766e..000000000
--- a/include/blit.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef GUARD_BLIT_H
-#define GUARD_BLIT_H
-
-struct Bitmap
-{
- u8 *pixels;
- u32 width:16;
- u32 height:16;
-};
-
-void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
-void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
-void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
-void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
-void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
-
-#endif // GUARD_BLIT_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index d287dd2db..b849686f5 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -4,16 +4,17 @@
#define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode)
// Battle Frontier facility ids.
-#define FRONTIER_FACILITY_TOWER 0
-#define FRONTIER_FACILITY_DOME 1
-#define FRONTIER_FACILITY_PALACE 2
-#define FRONTIER_FACILITY_ARENA 3
-#define FRONTIER_FACILITY_FACTORY 4
-#define FRONTIER_FACILITY_PIKE 5
-#define FRONTIER_FACILITY_PYRAMID 6
-#define NUM_FRONTIER_FACILITIES 7
+#define FRONTIER_FACILITY_TOWER 0
+#define FRONTIER_FACILITY_DOME 1
+#define FRONTIER_FACILITY_PALACE 2
+#define FRONTIER_FACILITY_ARENA 3
+#define FRONTIER_FACILITY_FACTORY 4
+#define FRONTIER_FACILITY_PIKE 5
+#define FRONTIER_FACILITY_PYRAMID 6
+#define NUM_FRONTIER_FACILITIES 7
// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY.
-#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9
+#define FACILITY_UNION_ROOM 8
+#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h
new file mode 100644
index 000000000..e92c4a006
--- /dev/null
+++ b/include/constants/battle_pike.h
@@ -0,0 +1,49 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PIKE_H
+#define GUARD_CONSTANTS_BATTLE_PIKE_H
+
+#define PIKE_ROOM_SINGLE_BATTLE 0
+#define PIKE_ROOM_HEAL_FULL 1
+#define PIKE_ROOM_NPC 2
+#define PIKE_ROOM_STATUS 3
+#define PIKE_ROOM_HEAL_PART 4
+#define PIKE_ROOM_WILD_MONS 5
+#define PIKE_ROOM_HARD_BATTLE 6
+#define PIKE_ROOM_DOUBLE_BATTLE 7
+#define PIKE_ROOM_BRAIN 8
+
+// For the room with a status effect.
+#define PIKE_STATUS_KIRLIA 0
+#define PIKE_STATUS_DUSCLOPS 1
+
+// Function IDs for sBattlePikeFunctions / CallBattlePikeFunction
+#define BATTLE_PIKE_FUNC_SET_ROOM_TYPE 0
+#define BATTLE_PIKE_FUNC_GET_DATA 1
+#define BATTLE_PIKE_FUNC_SET_DATA 2
+#define BATTLE_PIKE_FUNC_IN_FINAL_ROOM 3
+#define BATTLE_PIKE_FUNC_SET_UP_ROOM_OBJECTS 4
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5
+#define BATTLE_PIKE_FUNC_6 6
+#define BATTLE_PIKE_FUNC_7 7
+#define BATTLE_PIKE_FUNC_8 8
+#define BATTLE_PIKE_FUNC_NULL_9 9
+#define BATTLE_PIKE_FUNC_NULL_10 10
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS 11
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON 12
+#define BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS 13
+#define BATTLE_PIKE_FUNC_BUFFER_NPC_MSG 14
+#define BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE 15
+#define BATTLE_PIKE_FUNC_IS_IN 16
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM_ID 18
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT 19
+#define BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS 20
+#define BATTLE_PIKE_FUNC_BUFFER_RECORD_MIX_MSG 21
+#define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22
+#define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23
+#define BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED 24
+#define BATTLE_PIKE_FUNC_CAN_PARTY_BE_HEALED 25
+#define BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS 26
+#define BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS 27
+#define BATTLE_PIKE_FUNC_INIT_CHALLENGE 28
+
+#endif // GUARD_CONSTANTS_BATTLE_PIKE_H
diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h
new file mode 100644
index 000000000..0d59ae94d
--- /dev/null
+++ b/include/constants/battle_pyramid.h
@@ -0,0 +1,49 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PYRAMID_H
+#define GUARD_CONSTANTS_BATTLE_PYRAMID_H
+
+#define TOTAL_ROUNDS 20
+#define PICKUP_ITEMS_PER_ROUND 10
+
+#define FLOOR_WALKABLE_METATILE 0x28D
+#define FLOOR_EXIT_METATILE 0x28E
+
+#define HINT_EXIT_DIRECTION 0
+#define HINT_REMAINING_ITEMS 1
+#define HINT_REMAINING_TRAINERS 2
+#define HINT_EXIT_SHORT_REMAINING_TRAINERS 3
+#define HINT_EXIT_SHORT_REMAINING_ITEMS 4
+#define HINT_EXIT_MEDIUM_REMAINING_TRAINERS 5
+#define HINT_EXIT_MEDIUM_REMAINING_ITEMS 6
+#define HINT_EXIT_FAR_REMAINING_TRAINERS 7
+#define HINT_EXIT_FAR_REMAINING_ITEMS 8
+
+#define OBJ_TRAINERS 0
+#define OBJ_ITEMS 1
+
+#define OBJ_POSITIONS_UNIFORM 0
+#define OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE 1
+#define OBJ_POSITIONS_IN_AND_NEAR_EXIT 2
+#define OBJ_POSITIONS_NEAR_ENTRANCE 3
+#define OBJ_POSITIONS_NEAR_EXIT 4
+
+// Functions IDs for sBattlePyramidFunctions / CallBattlePyramidFunction
+#define BATTLE_PYRAMID_FUNC_INIT_CHALLENGE 0
+#define BATTLE_PYRAMID_FUNC_GET_DATA 1
+#define BATTLE_PYRAMID_FUNC_SET_DATA 2
+#define BATTLE_PYRAMID_FUNC_3 3
+#define BATTLE_PYRAMID_FUNC_SET_REWARD 4
+#define BATTLE_PYRAMID_FUNC_GIVE_REWARD 5
+#define BATTLE_PYRAMID_FUNC_SEED_FLOOR 6
+#define BATTLE_PYRAMID_FUNC_SET_ITEM 7
+#define BATTLE_PYRAMID_FUNC_HIDE_ITEM 8
+#define BATTLE_PYRAMID_FUNC_INIT_TRAINERS 9
+#define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10
+#define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11
+#define BATTLE_PYRAMID_FUNC_IS_IN 12
+#define BATTLE_PYRAMID_FUNC_UPDATE_LIGHT 13
+#define BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS 14
+#define BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE 15
+#define BATTLE_PYRAMID_FUNC_16 16
+#define BATTLE_PYRAMID_FUNC_RESTORE_PARTY 17
+
+#endif // GUARD_CONSTANTS_BATTLE_PYRAMID_H
diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h
new file mode 100644
index 000000000..f2aa4120c
--- /dev/null
+++ b/include/constants/cable_club.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_CONSTANTS_CABLE_CLUB_H
+#define GUARD_CONSTANTS_CABLE_CLUB_H
+
+// States for VAR_CABLE_CLUB_STATE
+#define USING_SINGLE_BATTLE 1
+#define USING_DOUBLE_BATTLE 2
+#define USING_TRADE_CENTER 3
+#define USING_RECORD_CORNER 4
+#define USING_MULTI_BATTLE 5
+#define USING_UNION_ROOM 6
+#define USING_BERRY_CRUSH 7
+#define USING_MINIGAME 8
+#define USING_BATTLE_TOWER 9
+
+#endif //GUARD_CONSTANTS_CABLE_CLUB_H
diff --git a/include/constants/contest.h b/include/constants/contest.h
index d3296222b..0c866069e 100644
--- a/include/constants/contest.h
+++ b/include/constants/contest.h
@@ -16,4 +16,10 @@
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
+#define CANT_ENTER_CONTEST 0
+#define CAN_ENTER_CONTEST_EQUAL_RANK 1
+#define CAN_ENTER_CONTEST_HIGH_RANK 2
+#define CANT_ENTER_CONTEST_EGG 3
+#define CANT_ENTER_CONTEST_FAINTED 4
+
#endif // GUARD_CONSTANTS_CONTEST_H
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 50f5994f4..b97c2aaf2 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1095,6 +1095,7 @@
#define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e
#define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f
#define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20
+#define NUM_ADDITIONAL_PHRASES 33
#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon)
#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon)
diff --git a/include/constants/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h
index b1f9b4cb5..ed6f6c7fb 100755
--- a/include/constants/event_object_movement_constants.h
+++ b/include/constants/event_object_movement_constants.h
@@ -179,8 +179,8 @@
#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D
#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E
#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F
-#define MOVEMENT_ACTION_UNKNOWN1 0x60
-#define MOVEMENT_ACTION_UNKNOWN2 0x61
+#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60
+#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61
#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62
#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64
diff --git a/include/constants/field_poison.h b/include/constants/field_poison.h
new file mode 100644
index 000000000..19b91e7c2
--- /dev/null
+++ b/include/constants/field_poison.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_FIELD_POISON_H
+#define GUARD_CONSTANTS_FIELD_POISON_H
+
+#define FLDPSN_NONE 0
+#define FLDPSN_PSN 1
+#define FLDPSN_FNT 2
+
+#define FLDPSN_NO_WHITEOUT 0
+#define FLDPSN_WHITEOUT 1
+#define FLDPSN_FRONTIER_WHITEOUT 2
+
+#endif //GUARD_CONSTANTS_FIELD_POISON_H
diff --git a/include/constants/field_tasks.h b/include/constants/field_tasks.h
new file mode 100644
index 000000000..7f773855d
--- /dev/null
+++ b/include/constants/field_tasks.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_CONSTANTS_FIELD_TASKS_H
+#define GUARD_CONSTANTS_FIELD_TASKS_H
+
+#define STEP_CB_DUMMY 0
+#define STEP_CB_ASH 1
+#define STEP_CB_FORTREE_BRIDGE 2
+#define STEP_CB_PACIFIDLOG_BRIDGE 3
+#define STEP_CB_SOOTOPOLIS_ICE 4
+#define STEP_CB_TRUCK 5
+#define STEP_CB_SECRET_BASE 6
+#define STEP_CB_CRACKED_FLOOR 7
+
+#endif // GUARD_CONSTANTS_FIELD_TASKS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 4679e953c..0e85e2570 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -87,7 +87,7 @@
#define FLAG_UNUSED_0x04F 0x4F // Unused Flag
// Scripts
-#define FLAG_RAYQUAZA_ON_SKY_TOWER_SUMMIT 0x50
+#define FLAG_HIDE_RAYQUAZA_SKY_TOWER_SUMMIT 0x50
#define FLAG_SET_WALL_CLOCK 0x51
#define FLAG_RESCUED_BIRCH 0x52
#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
@@ -109,10 +109,10 @@
#define FLAG_MET_TEAM_AQUA_HARBOR 0x61
#define FLAG_TV_EXPLAINED 0x62
#define FLAG_MAUVILLE_GYM_BARRIERS_STATE 0x63
-#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64
-#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65
-#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66
-#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67
+#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64 // Leftover from the RS version of Mossdeep Gym, functionally unused
+#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65 //
+#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66 //
+#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67 //
#define FLAG_UNUSED_0x068 0x68 // Unused Flag
@@ -146,7 +146,7 @@
#define FLAG_DEFEATED_RIVAL_ROUTE103 0x82
#define FLAG_RECEIVED_DOLL_LANETTE 0x83
#define FLAG_RECEIVED_POTION_OLDALE 0x84
-#define FLAG_MOM_SAYS_GOODBYE 0x85
+#define FLAG_RECEIVED_AMULET_COIN 0x85
#define FLAG_PENDING_DAYCARE_EGG 0x86
#define FLAG_THANKED_FOR_PLAYING_WITH_WALLY 0x87
#define FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL 0x88 // Set after defeating Wally outside Mauville Gym. Will activate a call later to register Wally.
@@ -163,9 +163,7 @@
#define FLAG_MR_BRINEY_SAILING_INTRO 0x93
#define FLAG_DOCK_REJECTED_DEVON_GOODS 0x94
#define FLAG_DELIVERED_DEVON_GOODS 0x95
-
-#define FLAG_UNUSED_0x096 0x96 // Unused Flag
-
+#define FLAG_RECEIVED_CONTEST_PASS 0x96 // Unused, leftover from R/S
#define FLAG_RECEIVED_CASTFORM 0x97
#define FLAG_RECEIVED_SUPER_ROD 0x98
#define FLAG_RUSTBORO_NPC_TRADE_COMPLETED 0x99
@@ -332,10 +330,10 @@
#define FLAG_MET_SCOTT_RUSTBORO 0x136
#define FLAG_WALLACE_GOES_TO_SKY_PILLAR 0x137 // Set after speaking to Wallace within the Cave of Origin.
#define FLAG_RECEIVED_HM07 0x138
-#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139 // Beat Magma Grunt blocking Magma Hideout entrance.
-#define FLAG_RECEIVED_AURORA_TICKET 0x13A // RECEIVED Aurora Ticket in Mystery Gift
-#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B // RECEIVED Mystic Ticket in Mystery Gift
-#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C // RECEIVED Old Sea Map in Mystery Gift
+#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139
+#define FLAG_RECEIVED_AURORA_TICKET 0x13A
+#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B
+#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C
#define FLAG_UNUSED_MYSTERY_GIFT_0x13D 0x13D
#define FLAG_UNUSED_MYSTERY_GIFT_0x13E 0x13E
#define FLAG_UNUSED_MYSTERY_GIFT_0x13F 0x13F
@@ -355,8 +353,8 @@
#define FLAG_UNUSED_MYSTERY_GIFT_0x14D 0x14D
#define FLAG_MIRAGE_TOWER_VISIBLE 0x14E
-#define FLAG_CHOSE_CLAW_FOSSIL 0x14F // Player chose Claw Fossil
-#define FLAG_CHOSE_ROOT_FOSSIL 0x150 // Player chose Root Fossil
+#define FLAG_CHOSE_CLAW_FOSSIL 0x14F
+#define FLAG_CHOSE_ROOT_FOSSIL 0x150
#define FLAG_RECEIVED_POWDER_JAR 0x151
#define FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER 0x152
@@ -367,7 +365,7 @@
#define FLAG_MET_SLATEPORT_FANCLUB_CHAIRMAN 0x156
#define FLAG_MET_BATTLE_FRONTIER_BETTOR 0x157
#define FLAG_ENABLE_MR_STONE_POKENAV 0x158
-#define FLAG_OLDALE_NURSE_MENTIONS_GOLD_CARD 0x159
+#define FLAG_NURSE_MENTIONS_GOLD_CARD 0x159
#define FLAG_MET_FRONTIER_BEAUTY_MOVE_TUTOR 0x15A
#define FLAG_MET_FRONTIER_SWIMMER_MOVE_TUTOR 0x15B
@@ -650,6 +648,95 @@
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5D)
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5E)
+#define FLAG_UNUSED_0x264 0x264 // Unused Flag
+#define FLAG_UNUSED_0x265 0x265 // Unused Flag
+#define FLAG_UNUSED_0x266 0x266 // Unused Flag
+#define FLAG_UNUSED_0x267 0x267 // Unused Flag
+#define FLAG_UNUSED_0x268 0x268 // Unused Flag
+#define FLAG_UNUSED_0x269 0x269 // Unused Flag
+#define FLAG_UNUSED_0x26A 0x26A // Unused Flag
+#define FLAG_UNUSED_0x26B 0x26B // Unused Flag
+#define FLAG_UNUSED_0x26C 0x26C // Unused Flag
+#define FLAG_UNUSED_0x26D 0x26D // Unused Flag
+#define FLAG_UNUSED_0x26E 0x26E // Unused Flag
+#define FLAG_UNUSED_0x26F 0x26F // Unused Flag
+#define FLAG_UNUSED_0x270 0x270 // Unused Flag
+#define FLAG_UNUSED_0x271 0x271 // Unused Flag
+#define FLAG_UNUSED_0x272 0x272 // Unused Flag
+#define FLAG_UNUSED_0x273 0x273 // Unused Flag
+#define FLAG_UNUSED_0x274 0x274 // Unused Flag
+#define FLAG_UNUSED_0x275 0x275 // Unused Flag
+#define FLAG_UNUSED_0x276 0x276 // Unused Flag
+#define FLAG_UNUSED_0x277 0x277 // Unused Flag
+#define FLAG_UNUSED_0x278 0x278 // Unused Flag
+#define FLAG_UNUSED_0x279 0x279 // Unused Flag
+#define FLAG_UNUSED_0x27A 0x27A // Unused Flag
+#define FLAG_UNUSED_0x27B 0x27B // Unused Flag
+#define FLAG_UNUSED_0x27C 0x27C // Unused Flag
+#define FLAG_UNUSED_0x27D 0x27D // Unused Flag
+#define FLAG_UNUSED_0x27E 0x27E // Unused Flag
+#define FLAG_UNUSED_0x27F 0x27F // Unused Flag
+#define FLAG_UNUSED_0x280 0x280 // Unused Flag
+#define FLAG_UNUSED_0x281 0x281 // Unused Flag
+#define FLAG_UNUSED_0x282 0x282 // Unused Flag
+#define FLAG_UNUSED_0x283 0x283 // Unused Flag
+#define FLAG_UNUSED_0x284 0x284 // Unused Flag
+#define FLAG_UNUSED_0x285 0x285 // Unused Flag
+#define FLAG_UNUSED_0x286 0x286 // Unused Flag
+#define FLAG_UNUSED_0x287 0x287 // Unused Flag
+#define FLAG_UNUSED_0x288 0x288 // Unused Flag
+#define FLAG_UNUSED_0x289 0x289 // Unused Flag
+#define FLAG_UNUSED_0x28A 0x28A // Unused Flag
+#define FLAG_UNUSED_0x28B 0x28B // Unused Flag
+#define FLAG_UNUSED_0x28C 0x28C // Unused Flag
+#define FLAG_UNUSED_0x28D 0x28D // Unused Flag
+#define FLAG_UNUSED_0x28E 0x28E // Unused Flag
+#define FLAG_UNUSED_0x28F 0x28F // Unused Flag
+#define FLAG_UNUSED_0x290 0x290 // Unused Flag
+#define FLAG_UNUSED_0x291 0x291 // Unused Flag
+#define FLAG_UNUSED_0x292 0x292 // Unused Flag
+#define FLAG_UNUSED_0x293 0x293 // Unused Flag
+#define FLAG_UNUSED_0x294 0x294 // Unused Flag
+#define FLAG_UNUSED_0x295 0x295 // Unused Flag
+#define FLAG_UNUSED_0x296 0x296 // Unused Flag
+#define FLAG_UNUSED_0x297 0x297 // Unused Flag
+#define FLAG_UNUSED_0x298 0x298 // Unused Flag
+#define FLAG_UNUSED_0x299 0x299 // Unused Flag
+#define FLAG_UNUSED_0x29A 0x29A // Unused Flag
+#define FLAG_UNUSED_0x29B 0x29B // Unused Flag
+#define FLAG_UNUSED_0x29C 0x29C // Unused Flag
+#define FLAG_UNUSED_0x29D 0x29D // Unused Flag
+#define FLAG_UNUSED_0x29E 0x29E // Unused Flag
+#define FLAG_UNUSED_0x29F 0x29F // Unused Flag
+#define FLAG_UNUSED_0x2A0 0x2A0 // Unused Flag
+#define FLAG_UNUSED_0x2A1 0x2A1 // Unused Flag
+#define FLAG_UNUSED_0x2A2 0x2A2 // Unused Flag
+#define FLAG_UNUSED_0x2A3 0x2A3 // Unused Flag
+#define FLAG_UNUSED_0x2A4 0x2A4 // Unused Flag
+#define FLAG_UNUSED_0x2A5 0x2A5 // Unused Flag
+#define FLAG_UNUSED_0x2A6 0x2A6 // Unused Flag
+#define FLAG_UNUSED_0x2A7 0x2A7 // Unused Flag
+#define FLAG_UNUSED_0x2A8 0x2A8 // Unused Flag
+#define FLAG_UNUSED_0x2A9 0x2A9 // Unused Flag
+#define FLAG_UNUSED_0x2AA 0x2AA // Unused Flag
+#define FLAG_UNUSED_0x2AB 0x2AB // Unused Flag
+#define FLAG_UNUSED_0x2AC 0x2AC // Unused Flag
+#define FLAG_UNUSED_0x2AD 0x2AD // Unused Flag
+#define FLAG_UNUSED_0x2AE 0x2AE // Unused Flag
+#define FLAG_UNUSED_0x2AF 0x2AF // Unused Flag
+#define FLAG_UNUSED_0x2B0 0x2B0 // Unused Flag
+#define FLAG_UNUSED_0x2B1 0x2B1 // Unused Flag
+#define FLAG_UNUSED_0x2B2 0x2B2 // Unused Flag
+#define FLAG_UNUSED_0x2B3 0x2B3 // Unused Flag
+#define FLAG_UNUSED_0x2B4 0x2B4 // Unused Flag
+#define FLAG_UNUSED_0x2B5 0x2B5 // Unused Flag
+#define FLAG_UNUSED_0x2B6 0x2B6 // Unused Flag
+#define FLAG_UNUSED_0x2B7 0x2B7 // Unused Flag
+#define FLAG_UNUSED_0x2B8 0x2B8 // Unused Flag
+#define FLAG_UNUSED_0x2B9 0x2B9 // Unused Flag
+#define FLAG_UNUSED_0x2BA 0x2BA // Unused Flag
+#define FLAG_UNUSED_0x2BB 0x2BB // Unused Flag
+
// Event Flags
#define FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG 0x2BC
#define FLAG_HIDE_APPRENTICE 0x2BD
@@ -690,16 +777,16 @@
#define FLAG_HIDE_PLAYERS_HOUSE_DAD 0x2DE
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_SIBLING 0x2DF
#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_SIBLING 0x2E0
-#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_INVISIBLE_NINJA_BOY 0x2E1
+#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_MAGMA_NOTE 0x2E1
#define FLAG_HIDE_ROUTE_104_MR_BRINEY 0x2E2
#define FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY 0x2E3
#define FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN 0x2E4
-#define FLAG_HIDE_ROUTE_108_MR_BRINEY 0x2E5
+#define FLAG_HIDE_ROUTE_109_MR_BRINEY 0x2E5
#define FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT 0x2E6
#define FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN 0x2E7
#define FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT 0x2E8
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_BRENDAN 0x2E9
-#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_BRENDAN 0x2EA
+#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_MAY 0x2EA
#define FLAG_HIDE_SAFARI_ZONE_SOUTH_EAST_EXPANSION 0x2EB
#define FLAG_HIDE_LILYCOVE_HARBOR_EVENT_TICKET_TAKER 0x2EC
#define FLAG_HIDE_SLATEPORT_CITY_SCOTT 0x2ED
@@ -778,9 +865,7 @@
#define FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_2_BLOCKING_ENTRANCE 0x336
#define FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA 0x337
#define FLAG_HIDE_PETALBURG_GYM_WALLYS_UNCLE 0x338
-
-#define FLAG_UNUSED_0x339 0x339 // Unused Flag
-
+#define FLAG_HIDE_LEGEND_MON_CAVE_OF_ORIGIN 0x339 // Unused, leftover from R/S
#define FLAG_HIDE_SOOTOPOLIS_CITY_ARCHIE 0x33A
#define FLAG_HIDE_SOOTOPOLIS_CITY_MAXIE 0x33B
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_ARCHIE 0x33C
@@ -883,7 +968,7 @@
#define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D
#define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E
#define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F
-#define FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO 0x3A0
+#define FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO 0x3A0
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_1 0x3A1
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3
@@ -925,7 +1010,7 @@
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8
#define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9
-#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3CA
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA
#define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB
#define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC
#define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD
@@ -936,14 +1021,14 @@
#define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2
#define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3
#define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4
-#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3D5
-#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D6
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
+#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6
#define FLAG_HIDE_RUSTURF_TUNNEL_LOVER_WOMAN 0x3D7
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_LOVER_WOMAN 0x3D8
-#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3D9
-#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DA
-#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DB
-#define FLAG_HIDE_ROUTE_120_KECLEON_6 0x3DC
+#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D9
+#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3DA
+#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DB
+#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DC
#define FLAG_HIDE_ROUTE_119_KECLEON_1 0x3DD
#define FLAG_HIDE_ROUTE_119_KECLEON_2 0x3DE
#define FLAG_HIDE_ROUTE_101_BOY 0x3DF
@@ -1549,9 +1634,9 @@
// Special Flags (Unknown)
#define SPECIAL_FLAGS_START 0x4000
#define FLAG_HIDE_MAP_NAME_POPUP 0x4000
-#define FLAG_SPECIAL_FLAG_0x4001 0x4001
+#define FLAG_DONT_TRANSITION_MUSIC 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
-#define FLAG_SPECIAL_FLAG_0x4004 0x4004
+#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004
#endif // GUARD_CONSTANTS_FLAGS_H
diff --git a/include/constants/global.h b/include/constants/global.h
index 7e0b5cfa4..4ade1c823 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -46,12 +46,16 @@
#define BAG_TMHM_COUNT 64
#define BAG_BERRIES_COUNT 46
#define EVENT_OBJECT_TEMPLATES_COUNT 64
+#define DECOR_MAX_SECRET_BASE 16
+#define DECOR_MAX_PLAYERS_HOUSE 12
#define PYRAMID_BAG_ITEMS_COUNT 10
#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode.
#define TRAINER_ID_LENGTH 4
#define PARTY_SIZE 6
+#define FRONTIER_PARTY_SIZE 3
+#define MULTI_PARTY_SIZE PARTY_SIZE / 2
#define MAX_MON_MOVES 4
// string lengths
@@ -65,6 +69,10 @@
#define FEMALE 1
#define GENDER_COUNT 2
+#define BARD_SONG_LENGTH 6
+#define NUM_STORYTELLER_TALES 4
+#define NUM_TRADER_ITEMS 4
+
#define OPTIONS_BUTTON_MODE_NORMAL 0
#define OPTIONS_BUTTON_MODE_LR 1
#define OPTIONS_BUTTON_MODE_L_EQUALS_A 2
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 6a3276b44..802c381b5 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -98,8 +98,8 @@
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
// Map Group 6
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
diff --git a/include/constants/mauville_man.h b/include/constants/mauville_man.h
deleted file mode 100644
index b00e3a291..000000000
--- a/include/constants/mauville_man.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H
-#define GUARD_CONSTANTS_MAUVILLE_MAN_H
-
-#define MAUVILLE_MAN_BARD 0
-#define MAUVILLE_MAN_HIPSTER 1
-#define MAUVILLE_MAN_TRADER 2
-#define MAUVILLE_MAN_STORYTELLER 3
-#define MAUVILLE_MAN_GIDDY 4
-
-#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H
diff --git a/include/constants/mauville_old_man.h b/include/constants/mauville_old_man.h
new file mode 100644
index 000000000..c1fb0bf24
--- /dev/null
+++ b/include/constants/mauville_old_man.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
+#define GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
+
+#define MAUVILLE_MAN_BARD 0
+#define MAUVILLE_MAN_HIPSTER 1
+#define MAUVILLE_MAN_TRADER 2
+#define MAUVILLE_MAN_STORYTELLER 3
+#define MAUVILLE_MAN_GIDDY 4
+#define MAUVILLE_MAN_UNUSED1 5
+#define MAUVILLE_MAN_UNUSED2 6
+
+#endif // GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 8fe95b464..2f3ce5f71 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -68,13 +68,16 @@
#define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B
#define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C
-// gTileset_MossdeepGym
-#define METATILE_MossdeepGym_Obelisk_Top 0x204
-#define METATILE_MossdeepGym_Obelisk_Base 0x20C
-#define METATILE_MossdeepGym_Wall_LeftCorner 0x20D
-#define METATILE_MossdeepGym_OuterWall_RightCorner 0x205
-#define METATILE_MossdeepGym_Empty0 0x238
-#define METATILE_MossdeepGym_Empty1 0x239
+// gTileset_MossdeepGym from R/S
+#define METATILE_RS_MossdeepGym_RedArrow_Right 0x204
+#define METATILE_RS_MossdeepGym_RedArrow_Left 0x20C
+#define METATILE_RS_MossdeepGym_RedArrow_Up 0x20D
+#define METATILE_RS_MossdeepGym_RedArrow_Down 0x205
+#define METATILE_RS_MossdeepGym_Switch_Up 0x238
+#define METATILE_RS_MossdeepGym_Switch_Down 0x239
+
+// gTileset_MossdeepGym from Emerald
+#define METATILE_MossdeepGym_YellowArrow_Right 0x250
// gTileset_BrendansMaysHouse
#define METATILE_BrendansMaysHouse_BrendanPC_Off 0x25A
@@ -376,6 +379,7 @@
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Down 0x263
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left_Alt 0x27B
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right_Alt 0x27C
+#define METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right 0x298
// gTileset_BikeShop
#define METATILE_BikeShop_Barrier_Hidden_Top 0x269
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
new file mode 100644
index 000000000..7953967ed
--- /dev/null
+++ b/include/constants/party_menu.h
@@ -0,0 +1,132 @@
+#ifndef GUARD_CONSTANTS_PARTY_MENU_H
+#define GUARD_CONSTANTS_PARTY_MENU_H
+
+#define AILMENT_NONE 0
+#define AILMENT_PSN 1
+#define AILMENT_PRZ 2
+#define AILMENT_SLP 3
+#define AILMENT_FRZ 4
+#define AILMENT_BRN 5
+#define AILMENT_PKRS 6
+#define AILMENT_FNT 7
+
+#define TUTOR_MOVE_MEGA_PUNCH 0
+#define TUTOR_MOVE_SWORDS_DANCE 1
+#define TUTOR_MOVE_MEGA_KICK 2
+#define TUTOR_MOVE_BODY_SLAM 3
+#define TUTOR_MOVE_DOUBLE_EDGE 4
+#define TUTOR_MOVE_COUNTER 5
+#define TUTOR_MOVE_SEISMIC_TOSS 6
+#define TUTOR_MOVE_MIMIC 7
+#define TUTOR_MOVE_METRONOME 8
+#define TUTOR_MOVE_SOFT_BOILED 9
+#define TUTOR_MOVE_DREAM_EATER 10
+#define TUTOR_MOVE_THUNDER_WAVE 11
+#define TUTOR_MOVE_EXPLOSION 12
+#define TUTOR_MOVE_ROCK_SLIDE 13
+#define TUTOR_MOVE_SUBSTITUTE 14
+#define TUTOR_MOVE_DYNAMIC_PUNCH 15
+#define TUTOR_MOVE_ROLLOUT 16
+#define TUTOR_MOVE_PSYCH_UP 17
+#define TUTOR_MOVE_SNORE 18
+#define TUTOR_MOVE_ICY_WIND 19
+#define TUTOR_MOVE_ENDURE 20
+#define TUTOR_MOVE_MUD_SLAP 21
+#define TUTOR_MOVE_ICE_PUNCH 22
+#define TUTOR_MOVE_SWAGGER 23
+#define TUTOR_MOVE_SLEEP_TALK 24
+#define TUTOR_MOVE_SWIFT 25
+#define TUTOR_MOVE_DEFENSE_CURL 26
+#define TUTOR_MOVE_THUNDER_PUNCH 27
+#define TUTOR_MOVE_FIRE_PUNCH 28
+#define TUTOR_MOVE_FURY_CUTTER 29
+#define TUTOR_MOVE_COUNT 30
+
+#define PARTY_LAYOUT_SINGLE 0
+#define PARTY_LAYOUT_DOUBLE 1
+#define PARTY_LAYOUT_MULTI 2
+#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle
+#define PARTY_LAYOUT_COUNT 4
+#define KEEP_PARTY_LAYOUT 0xFF
+
+#define PARTY_MENU_TYPE_FIELD 0
+#define PARTY_MENU_TYPE_IN_BATTLE 1
+#define PARTY_MENU_TYPE_CONTEST 2
+#define PARTY_MENU_TYPE_CHOOSE_MON 3
+#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities
+#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5
+#define PARTY_MENU_TYPE_DAYCARE 6
+#define PARTY_MENU_TYPE_MOVE_RELEARNER 7
+#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board
+#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
+#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
+#define PARTY_MENU_TYPE_MINIGAME 11
+#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
+
+#define PARTY_ACTION_CHOOSE_MON 0
+#define PARTY_ACTION_SEND_OUT 1
+#define PARTY_ACTION_CANT_SWITCH 2
+#define PARTY_ACTION_USE_ITEM 3
+#define PARTY_ACTION_ABILITY_PREVENTS 4
+#define PARTY_ACTION_GIVE_ITEM 5
+#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC
+#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
+#define PARTY_ACTION_SWITCH 8
+#define PARTY_ACTION_SWITCHING 9
+#define PARTY_ACTION_SOFTBOILED 10
+#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
+#define PARTY_ACTION_MOVE_TUTOR 12
+#define PARTY_ACTION_MINIGAME 13
+#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately
+
+// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
+#define PARTY_MSG_CHOOSE_MON 0
+#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1
+#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2
+#define PARTY_MSG_MOVE_TO_WHERE 3
+#define PARTY_MSG_TEACH_WHICH_MON 4
+#define PARTY_MSG_USE_ON_WHICH_MON 5
+#define PARTY_MSG_GIVE_TO_WHICH_MON 6
+#define PARTY_MSG_NOTHING_TO_CUT 7
+#define PARTY_MSG_CANT_SURF_HERE 8
+#define PARTY_MSG_ALREADY_SURFING 9
+#define PARTY_MSG_CURRENT_TOO_FAST 10
+#define PARTY_MSG_ENJOY_CYCLING 11
+#define PARTY_MSG_ALREADY_IN_USE 12
+#define PARTY_MSG_CANT_USE_HERE 13
+#define PARTY_MSG_NO_MON_FOR_BATTLE 14
+#define PARTY_MSG_CHOOSE_MON_2 15
+#define PARTY_MSG_NOT_ENOUGH_HP 16
+#define PARTY_MSG_X_MONS_ARE_NEEDED 17
+#define PARTY_MSG_MONS_CANT_BE_SAME 18
+#define PARTY_MSG_NO_SAME_HOLD_ITEMS 19
+#define PARTY_MSG_UNUSED 20
+#define PARTY_MSG_DO_WHAT_WITH_MON 21
+#define PARTY_MSG_RESTORE_WHICH_MOVE 22
+#define PARTY_MSG_BOOST_PP_WHICH_MOVE 23
+#define PARTY_MSG_DO_WHAT_WITH_ITEM 24
+#define PARTY_MSG_DO_WHAT_WITH_MAIL 25
+#define PARTY_MSG_ALREADY_HOLDING_ONE 26
+#define PARTY_MSG_NONE 127
+
+// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box
+#define PARTYBOX_DESC_NO_USE 0
+#define PARTYBOX_DESC_ABLE_3 1
+#define PARTYBOX_DESC_FIRST 2
+#define PARTYBOX_DESC_SECOND 3
+#define PARTYBOX_DESC_THIRD 4
+#define PARTYBOX_DESC_FOURTH 5
+#define PARTYBOX_DESC_ABLE 6
+#define PARTYBOX_DESC_NOT_ABLE 7
+#define PARTYBOX_DESC_ABLE_2 8
+#define PARTYBOX_DESC_NOT_ABLE_2 9
+#define PARTYBOX_DESC_LEARNED 10
+#define PARTYBOX_DESC_HAVE 11
+#define PARTYBOX_DESC_DONT_HAVE 12
+
+#define SELECTWINDOW_ACTIONS 0
+#define SELECTWINDOW_ITEM 1
+#define SELECTWINDOW_MAIL 2
+#define SELECTWINDOW_MOVES 3
+
+#endif // GUARD_CONSTANTS_PARTY_MENU_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 52a4f0254..b2084f154 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -177,13 +177,13 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
+#define MIN_LEVEL 1
#define MAX_LEVEL 100
#define OT_ID_PLAYER_ID 0
#define OT_ID_PRESET 1
#define OT_ID_RANDOM_NO_SHINY 2
-
#define MON_GIVEN_TO_PARTY 0
#define MON_GIVEN_TO_PC 1
#define MON_CANT_GIVE 2
@@ -192,6 +192,9 @@
#define PLAYER_HAS_ONE_MON 1
#define PLAYER_HAS_ONE_USABLE_MON 2
+#define MON_ALREADY_KNOWS_MOVE 0xFFFE
+#define MON_HAS_MAX_MOVES 0xFFFF
+
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h
index b7ec908c1..928ca00e0 100644
--- a/include/constants/script_menu.h
+++ b/include/constants/script_menu.h
@@ -13,8 +13,8 @@
#define MULTI_ENTERINFO 2
#define MULTI_CONTEST_INFO 3
#define MULTI_CONTEST_TYPE 4
-#define MULTI_DECOR_NOREGISTRY 5
-#define MULTI_DECOR_REGISTRY 6
+#define MULTI_BASE_PC_NO_REGISTRY 5
+#define MULTI_BASE_PC_WITH_REGISTRY 6
#define MULTI_REGISTER_MENU 7
#define MULTI_SSTIDAL_LILYCOVE 8 // Exit only, populated by CreateLilycoveSSTidalMultichoice
#define MULTI_UNUSED_9 9
diff --git a/include/constants/trade.h b/include/constants/trade.h
new file mode 100644
index 000000000..fa42e6b43
--- /dev/null
+++ b/include/constants/trade.h
@@ -0,0 +1,116 @@
+#ifndef GUARD_CONSTANTS_TRADE_H
+#define GUARD_CONSTANTS_TRADE_H
+
+#define TRADE_PLAYER 0
+#define TRADE_PARTNER 1
+
+#define LINK_TRADE_TIMEOUT 300
+
+// In-game Trade IDs
+#define INGAME_TRADE_SEEDOT 0
+#define INGAME_TRADE_PLUSLE 1
+#define INGAME_TRADE_HORSEA 2
+#define INGAME_TRADE_MEOWTH 3
+
+// Flag IDs for sending link data
+#define INITIATE_TRADE 1
+#define CANCEL_TRADE 2
+#define WANTS_TO_TRADE 1
+#define WANTS_TO_CANCEL 2
+#define READY_FINISH_TRADE 1
+#define FINISH_TRADE 2
+
+// Return values for CanTradeSelectedMon and CanSpinTradeMon
+#define CAN_TRADE_MON 0
+#define CANT_TRADE_LAST_MON 1
+#define CANT_TRADE_NATIONAL 2
+#define CANT_TRADE_EGG_YET 3
+#define CANT_TRADE_INVALID_MON 4
+#define CANT_TRADE_EGG_YET2 5
+
+// Return values for CheckValidityOfTradeMons
+#define PLAYER_MON_INVALID 0
+#define BOTH_MONS_VALID 1
+#define PARTNER_MON_INVALID 2
+
+// Return values for GetGameProgressForLinkTrade
+#define TRADE_BOTH_PLAYERS_READY 0
+#define TRADE_PLAYER_NOT_READY 1
+#define TRADE_PARTNER_NOT_READY 2
+
+// Indexes for sTradeActionTexts
+#define TRADE_TEXT_CANCEL 0
+#define TRADE_TEXT_CHOOSE_MON 1
+#define TRADE_TEXT_SUMMARY 2
+#define TRADE_TEXT_TRADE 3
+#define TRADE_TEXT_CANCEL_TRADE 4
+#define TRADE_TEXT_JP_QUIT 5
+
+// Checked to confirm DrawTradeMenuParty has reached final state
+#define DRAW_PARTY_FINISH 5
+
+// Message indexes for sTradeMessages
+#define TRADE_MSG_STANDBY 0
+#define TRADE_MSG_CANCELED 1
+#define TRADE_MSG_ONLY_MON1 2
+#define TRADE_MSG_ONLY_MON2 3
+#define TRADE_MSG_WAITING_FOR_FRIEND 4
+#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5
+#define TRADE_MSG_MON_CANT_BE_TRADED 6
+#define TRADE_MSG_EGG_CANT_BE_TRADED 7
+#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8
+
+// IDs for QueueAction
+#define QUEUE_SEND_DATA 0
+#define QUEUE_STANDBY 1
+#define QUEUE_ONLY_MON1 2
+#define QUEUE_ONLY_MON2 3
+#define QUEUE_UNUSED1 4
+#define QUEUE_UNUSED2 5
+#define QUEUE_MON_CANT_BE_TRADED 6
+#define QUEUE_EGG_CANT_BE_TRADED 7
+#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8
+
+#define QUEUE_DELAY_MSG 3
+#define QUEUE_DELAY_DATA 5
+
+// IDs for CallTradeMenuFunc
+#define TRADEMENUFUNC_MAIN_MENU 0
+#define TRADEMENUFUNC_SELECTED_MON 1
+#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2
+#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3
+#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4
+#define TRADEMENUFUNC_UNUSED_5 5
+#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6
+#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7
+#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8
+#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10
+#define TRADEMENUFUNC_CANCEL_TRADE_1 11
+#define TRADEMENUFUNC_CANCEL_TRADE_2 12
+#define TRADEMENUFUNC_START_LINK_TRADE 13
+#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14
+#define TRADEMENUFUNC_UNUSED_15 15
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16
+#define TRADEMENUFUNC_PARTNER_MON_INVALID 17
+#define TRADEMENUFUNC_STANDBY 100
+
+// Message indexes for sUnionRoomTradeMessages
+#define UR_TRADE_MSG_NONE 0
+#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1
+#define UR_TRADE_MSG_NOT_EGG 2
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4
+#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5
+#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6
+#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9
+
+// Return values for CanRegisterMonForTradingBoard
+#define CAN_REGISTER_MON 0
+#define CANT_REGISTER_MON 1
+#define CANT_REGISTER_EGG 2
+
+
+#endif //GUARD_CONSTANTS_TRADE_H
diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h
index 4aae1dbbc..cab56a5ac 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -11,7 +11,7 @@
#define TRAINER_HILL_FUNC_7 7
#define TRAINER_HILL_FUNC_8 8
#define TRAINER_HILL_FUNC_9 9
-#define TRAINER_HILL_FUNC_10 10
+#define TRAINER_HILL_FUNC_IS_IN 10
#define TRAINER_HILL_FUNC_11 11
#define TRAINER_HILL_FUNC_12 12
#define TRAINER_HILL_FUNC_13 13
diff --git a/include/constants/tv.h b/include/constants/tv.h
new file mode 100644
index 000000000..c22bec9a3
--- /dev/null
+++ b/include/constants/tv.h
@@ -0,0 +1,46 @@
+#ifndef GUARD_CONSTANTS_TV_H
+#define GUARD_CONSTANTS_TV_H
+
+#define POKENEWS_NONE 0
+#define POKENEWS_SLATEPORT 1
+#define POKENEWS_GAME_CORNER 2
+#define POKENEWS_LILYCOVE 3
+#define POKENEWS_BLENDMASTER 4
+
+#define TVSHOW_OFF_AIR 0
+#define TVSHOW_FAN_CLUB_LETTER 1
+#define TVSHOW_RECENT_HAPPENINGS 2
+#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3
+#define TVSHOW_UNKN_SHOWTYPE_04 4
+#define TVSHOW_NAME_RATER_SHOW 5
+#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6
+#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7
+#define TVSHOW_CONTEST_LIVE_UPDATES 8
+#define TVSHOW_3_CHEERS_FOR_POKEBLOCKS 9
+#define TVSHOW_BATTLE_UPDATE 10
+#define TVSHOW_FAN_CLUB_SPECIAL 11
+#define TVSHOW_CONTEST_LIVE_UPDATES_2 12
+// //
+#define TVSHOW_POKEMON_TODAY_CAUGHT 21
+#define TVSHOW_SMART_SHOPPER 22
+#define TVSHOW_POKEMON_TODAY_FAILED 23
+#define TVSHOW_FISHING_ADVICE 24
+#define TVSHOW_WORLD_OF_MASTERS 25
+#define TVSHOW_TODAYS_RIVAL_TRAINER 26
+#define TVSHOW_TREND_WATCHER 27
+#define TVSHOW_TREASURE_INVESTIGATORS 28
+#define TVSHOW_FIND_THAT_GAMER 29
+#define TVSHOW_BREAKING_NEWS 30
+#define TVSHOW_SECRET_BASE_VISIT 31
+#define TVSHOW_LOTTO_WINNER 32
+#define TVSHOW_BATTLE_SEMINAR 33
+#define TVSHOW_TRAINER_FAN_CLUB 34
+#define TVSHOW_CUTIES 35
+#define TVSHOW_FRONTIER 36
+#define TVSHOW_NUMBER_ONE 37
+#define TVSHOW_SECRET_BASE_SECRETS 38
+#define TVSHOW_SAFARI_FAN_CLUB 39
+// //
+#define TVSHOW_MASS_OUTBREAK 41
+
+#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 72b15654e..64ff6622b 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -77,7 +77,7 @@
#define VAR_REGICE_STEPS_2 0x403C
#define VAR_REGICE_STEPS_3 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
-#define VAR_ALWAYS_ZERO_0x403F 0x403F // This var is read and written, but is always zero.
+#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
#define VAR_DAYS 0x4040
#define VAR_FANCLUB_UNKNOWN_1 0x4041
#define VAR_FANCLUB_UNKNOWN_2 0x4042
@@ -147,7 +147,7 @@
#define VAR_LITTLEROOT_HOUSES_STATE 0x4082
#define VAR_UNUSED_0x4083 0x4083 // Unused Var
#define VAR_BIRCH_LAB_STATE 0x4084
-#define VAR_PETALBURG_GYM_STATE 0x4085
+#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
#define VAR_LINK_CONTEST_ROOM_STATE 0x4086
#define VAR_CABLE_CLUB_STATE 0x4087
#define VAR_CONTEST_LOCATION 0x4088
@@ -172,13 +172,13 @@
#define VAR_UNUSED_0x409B 0x409B // Unused Var
#define VAR_ELITE_4_STATE 0x409C
#define VAR_UNUSED_0x409D 0x409D // Unused Var
-#define VAR_MOSSDEEP_SPACE_CENTER_STATE_1 0x409E
-#define VAR_MOSSDEEP_SPACE_CENTER_STATE_2 0x409F
+#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E
+#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F
#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
#define VAR_UNUSED_0x40A1 0x40A1 // Unused var
#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
#define VAR_CABLE_CAR_STATION_STATE 0x40A3
-#define VAR_SAFARI_ZONE_STATE 0x40A4
+#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_1 0x40A5
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7
diff --git a/include/contest.h b/include/contest.h
index 2b1b95af5..aeedc63b1 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -466,7 +466,7 @@ void CB2_StartContest(void);
void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
-u8 sub_80DAE0C(struct Pokemon *pkmn);
+u8 GetContestEntryEligibility(struct Pokemon *pkmn);
void sub_80DB09C(u8 contestCategory);
bool8 IsSpeciesNotUnown(u16 species);
bool8 Contest_IsMonsTurnDisabled(u8 a);
diff --git a/include/dma3.h b/include/dma3.h
deleted file mode 100644
index 8eff34f55..000000000
--- a/include/dma3.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef GUARD_DMA3_H
-#define GUARD_DMA3_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);
-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/dodrio_berry_picking.h b/include/dodrio_berry_picking.h
index 55e8fa880..9995decc2 100644
--- a/include/dodrio_berry_picking.h
+++ b/include/dodrio_berry_picking.h
@@ -2,7 +2,7 @@
#define GUARD_DODRIO_BERRY_PICKING_H
void sub_802493C(u16 a0, void (*callback)(void));
-void sub_8027A5C(void);
-void sub_8027AAC(void);
+void IsDodrioInParty(void);
+void ShowDodrioBerryPickingRecords(void);
#endif // GUARD_DODRIO_BERRY_PICKING_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 84ac15422..221cbd1da 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -129,11 +129,11 @@ void InitializeEasyChatWordArray(u16 *words, u16 length);
u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
u16 sub_811EE38(u16 group);
-u16 sub_811F01C(void);
+u16 GetNewHipsterPhraseToTeach(void);
u16 EasyChat_GetNumWordsInGroup(u8);
u16 sub_811EE90(u16);
void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType);
void sub_811F8BC(void);
-void sub_811EFC0(u8 additionalPhraseId);
+void UnlockAdditionalPhrase(u8 additionalPhraseId);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index fc0b3cde0..b86c46df0 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1,22 +1,14 @@
#ifndef GUARD_EVENT_SCRIPTS_H
#define GUARD_EVENT_SCRIPTS_H
-extern const u8 gUnknown_0823B4E8[];
-extern const u8 gUnknown_0823B5E9[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_TryGetTrainerScript[];
-extern const u8 EventScript_275BB7[];
-extern const u8 EventScript_275D0C[];
-extern const u8 EventScript_275D1F[];
-extern const u8 EventScript_275D2E[];
extern const u8 EventScript_271354[];
extern const u8 EventScript_DoTainerBattle[];
extern const u8 EventScript_TryDoDoubleTrainerBattle[];
extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
-extern const u8 SecretBase_EventScript_DollInteract[];
-extern const u8 SecretBase_EventScript_CushionInteract[];
extern const u8 BerryTreeScript[];
@@ -368,28 +360,28 @@ extern const u8 gPokeNewsTextLilycove_Ending[];
extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
extern const u8 gPokeNewsTextBlendMaster_Ending[];
-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[];
+extern const u8 SecretBase_Text_Trainer0Defeated[];
+extern const u8 SecretBase_Text_Trainer1Defeated[];
+extern const u8 SecretBase_Text_Trainer2Defeated[];
+extern const u8 SecretBase_Text_Trainer3Defeated[];
+extern const u8 SecretBase_Text_Trainer4Defeated[];
+extern const u8 SecretBase_Text_Trainer5Defeated[];
+extern const u8 SecretBase_Text_Trainer6Defeated[];
+extern const u8 SecretBase_Text_Trainer7Defeated[];
+extern const u8 SecretBase_Text_Trainer8Defeated[];
+extern const u8 SecretBase_Text_Trainer9Defeated[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
//field effects
extern const u8 EventScript_FldEffStrength[];
extern const u8 EventScript_FailSweetScent[];
-extern const u8 EventScript_2926F8[];
+extern const u8 EventScript_FldEffFlash[];
extern const u8 EventScript_FldEffRockSmash[];
//player pc
-extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
-extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
+extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[];
+extern const u8 LittlerootTown_MaysHouse_2F_EventScript_TurnOffPlayerPC[];
//contest_strings
extern const u8 gText_0827D507[];
@@ -415,124 +407,121 @@ extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[];
extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[];
extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[];
+// mauville old man storyteller
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarStory[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsTitle[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsAction[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsStory[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E947[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E956[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9D7[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9EF[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9FE[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA7D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA98[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EAA8[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB19[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB31[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB3E[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBB5[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBCD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBDD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC60[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC79[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC81[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED04[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED21[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED30[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDA1[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDB5[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDCF[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE45[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE5D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE6A[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEDD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEF1[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF01[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF73[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF95[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EFAA[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F045[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F05A[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F071[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F0F3[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F10D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F125[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1BE[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1D5[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1DE[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F24F[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F269[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F277[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F2FC[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F314[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F32A[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3AD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3C6[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3D2[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F44B[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F461[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F47C[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F50C[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F51B[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F538[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5BE[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5D1[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5F2[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F678[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F694[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F6B4[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F751[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F76A[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F776[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F7F6[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F811[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F822[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F89C[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8AF[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8BC[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F92F[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F941[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F949[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9D1[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9EA[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9FD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA81[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA99[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FAA7[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB1D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB35[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB47[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBC4[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBD9[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBEA[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC6B[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC85[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC98[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD1D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD35[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD40[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDA2[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDBD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDCE[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE57[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE72[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE88[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF0C[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF27[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF44[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFDD[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFFA[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_29000D[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_290097[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900B5[];
-extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900CB[];
-
-extern const u8 EventScript_PlayerPCMale[];
-extern const u8 EventScript_PlayerPCFemale[];
-extern const u8 EventScript_SecretBasePC[];
-extern const u8 EventScript_RecordMixingSecretBasePC[];
+extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_PC[];
+extern const u8 LittlerootTown_MaysHouse_2F_EventScript_PC[];
extern const u8 EventScript_PC[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_HiddenItemScript[];
-extern const u8 EventScript_2759F1[];
extern const u8 EventScript_TV[];
extern const u8 EventScript_ClosedSootopolisDoor[];
extern const u8 SkyPillar_Outside_EventScript_2393F9[];
@@ -552,8 +541,6 @@ extern const u8 EventScript_WirelessBoxResults[];
extern const u8 EventScript_CableBoxResults[];
extern const u8 EventScript_Questionnaire[];
extern const u8 EventScript_TrainerHillTimer[];
-extern const u8 EventScript_SecretBaseSandOrnament[];
-extern const u8 EventScript_SecretBaseShieldOrToyTV[];
extern const u8 EventScript_UseSurf[];
extern const u8 EventScript_UseWaterfall[];
extern const u8 EventScript_CannotUseWaterfall[];
@@ -561,17 +548,32 @@ extern const u8 EventScript_UseDive[];
extern const u8 EventScript_UseDiveUnderwater[];
extern const u8 EventScript_FallDownHole[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8[];
-extern const u8 EventScript_Poison[];
+extern const u8 EventScript_FieldPoison[];
extern const u8 EventScript_EggHatch[];
extern const u8 UnusualWeather_EventScript_EndEventAndCleanup_1[];
-extern const u8 IslandCave_EventScript_238EAF[];
+extern const u8 IslandCave_EventScript_OpenRegiEntrance[];
extern const u8 MauvilleCity_EventScript_1DF7BA[];
extern const u8 Route119_EventScript_1F49EC[];
extern const u8 LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6[];
-extern const u8 RustboroCity_Gym_EventScript_21307B[];
-extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224175[];
+extern const u8 RustboroCity_Gym_EventScript_RegisterRoxanne[];
+extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall[];
extern const u8 SSTidalCorridor_EventScript_23C050[];
-extern const u8 gUnknown_082A8350[];
+extern const u8 EventScript_FallDownHoleMtPyre[];
+
+// Secret Base
+extern const u8 SecretBase_EventScript_PC[];
+extern const u8 SecretBase_EventScript_RecordMixingPC[];
+extern const u8 SecretBase_EventScript_PCCancel[];
+extern const u8 SecretBase_EventScript_ShowRegisterMenu[];
+extern const u8 SecretBase_EventScript_SandOrnament[];
+extern const u8 SecretBase_EventScript_ShieldOrToyTV[];
+extern const u8 SecretBase_EventScript_DollInteract[];
+extern const u8 SecretBase_EventScript_CushionInteract[];
+extern const u8 SecretBase_EventScript_CheckEntrance[];
+extern const u8 SecretBase_EventScript_Enter[];
+extern const u8 SecretBase_EventScript_InitDecorations[];
+extern const u8 SecretBase_EventScript_PutAwayDecoration[];
+extern const u8 SecretBase_EventScript_SetDecoration[];
// Battle Pyramid.
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
@@ -579,9 +581,9 @@ extern const u8 BattlePyramid_TrainerBattle[];
extern const u8 BattlePyramid_FindItemBall[];
// fldeff misc
-extern const u8 EventScript_275A86[];
-extern const u8 EventScript_275ADF[];
-extern const u8 EventScript_275B38[];
+extern const u8 SecretBase_EventScript_CaveUseSecretPower[];
+extern const u8 SecretBase_EventScript_TreeUseSecretPower[];
+extern const u8 SecretBase_EventScript_ShrubUseSecretPower[];
// trainer hill
extern const u8 EventScript_2C83F0[];
diff --git a/include/field_effect.h b/include/field_effect.h
index 0dbe600d3..0a99938d7 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -12,7 +12,7 @@ extern bool8 (*gFieldCallback2)(void);
u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void FieldEffectActiveListClear(void);
-void sub_80B69DC(void);
+void ReturnToFieldFromFlyMapSelect(void);
u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
diff --git a/include/field_poison.h b/include/field_poison.h
index a23a93ca5..e9de7878e 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -7,13 +7,7 @@
// Exported ROM declarations
-enum {
- FLDPSN_NONE,
- FLDPSN_PSN,
- FLDPSN_FNT
-};
-
-void ExecuteWhiteOut(void);
+void TryFieldPoisonWhiteOut(void);
s32 DoPoisonFieldEffect(void);
#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index a62a76b2a..42f077dc3 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -28,17 +28,17 @@ void sub_80AF80C(u8 metatileBehavior);
void sub_80AF828(void);
void sub_80AF838(void);
void sub_80AF848(void);
-void sub_80AF87C(void);
+void DoMossdeepGymWarp(void);
void sub_80AF8B8(void);
void sub_80AF948(void);
void sub_80AF9F8(void);
void sub_80AFC60(void);
-void sub_80B009C(u8 flashLevel);
+void AnimateFlash(u8 flashLevel);
void WriteBattlePyramidViewScanlineEffectBuffer(void);
void sub_80B0244(void);
void sub_80B0268(void);
-void sub_80B0534(void);
-void sub_80B058C(void);
+void DoOrbEffect(void);
+void FadeOutOrbEffect(void);
void sub_80B05B4(void);
void WriteFlashScanlineEffectBuffer(u8 flashLevel);
bool8 walkrun_is_standing_still(void);
diff --git a/include/fldeff.h b/include/fldeff.h
index ff6c9823f..5da189c2a 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -28,8 +28,8 @@ bool8 sub_80E1584(void);
// soft-boiled
bool8 SetUpFieldMove_SoftBoiled(void);
-void sub_81615A8(u8 taskId);
-void sub_8161560(u8 taskId);
+void Task_TryUseSoftboiledOnPartyMon(u8 taskId);
+void ChooseMonForSoftboiled(u8 taskId);
// flash
bool8 SetUpFieldMove_Flash(void);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a17180589..de08fd1ec 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -65,7 +65,7 @@ struct EventObjectTemplate
/*0x0E*/ u16 trainerRange_berryTreeId;
/*0x10*/ const u8 *script;
/*0x14*/ u16 flagId;
-}; /*size = 0x18*/
+};
struct WarpEvent
{
@@ -82,7 +82,6 @@ struct CoordEvent
u8 elevation;
u16 trigger;
u16 index;
- u8 filler_A[0x2];
u8 *script;
};
@@ -90,20 +89,14 @@ struct BgEvent
{
u16 x, y;
u8 elevation;
- u8 kind;
- union { // carried over from diego's FR/LG work, seems to be the same struct
- // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union.
+ u8 kind; // The "kind" field determines how to access bgUnion union below.
+ union {
u8 *script;
-
- // hidden item type
struct {
u16 item;
- u16 hiddenItemId; // flag offset to determine flag lookup
+ u16 hiddenItemId;
} hiddenItem;
-
- // secret base type
u32 secretBaseId;
-
} bgUnion;
};
@@ -113,7 +106,6 @@ struct MapEvents
u8 warpCount;
u8 coordEventCount;
u8 bgEventCount;
-
struct EventObjectTemplate *eventObjects;
struct WarpEvent *warps;
struct CoordEvent *coordEvents;
@@ -122,10 +114,10 @@ struct MapEvents
struct MapConnection
{
- /*0x00*/ u8 direction;
- /*0x01*/ u32 offset;
- /*0x05*/ u8 mapGroup;
- /*0x06*/ u8 mapNum;
+ u8 direction;
+ u32 offset;
+ u8 mapGroup;
+ u8 mapNum;
};
struct MapConnections
@@ -180,7 +172,7 @@ struct EventObject
/*0x03*/ u32 spriteAffineAnimPausedBackup:1;
u32 disableJumpLandingGroundEffect:1;
u32 fixedPriority:1;
- u32 unk3_3:1;
+ u32 hideReflection:1;
/*0x04*/ u8 spriteId;
/*0x05*/ u8 graphicsId;
/*0x06*/ u8 movementType;
@@ -267,7 +259,20 @@ enum
enum
{
- COLLISION_LEDGE_JUMP = 6
+ COLLISION_NONE,
+ COLLISION_OUTSIDE_RANGE,
+ COLLISION_IMPASSABLE,
+ COLLISION_ELEVATION_MISMATCH,
+ COLLISION_EVENT_OBJECT,
+ COLLISION_STOP_SURFING,
+ COLLISION_LEDGE_JUMP,
+ COLLISION_PUSHED_BOULDER,
+ COLLISION_ROTATING_GATE,
+ COLLISION_WHEELIE_HOP,
+ COLLISION_ISOLATED_VERTICAL_RAIL,
+ COLLISION_ISOLATED_HORIZONTAL_RAIL,
+ COLLISION_VERTICAL_RAIL,
+ COLLISION_HORIZONTAL_RAIL,
};
// player running states
diff --git a/include/global.h b/include/global.h
index 44a4d0164..94dfebc28 100644
--- a/include/global.h
+++ b/include/global.h
@@ -220,7 +220,7 @@ struct Apprentice
u8 lvlMode:2; // + 1
u8 field_1;
u8 number;
- struct ApprenticeMon party[3];
+ struct ApprenticeMon party[MULTI_PARTY_SIZE];
u16 easyChatWords[6];
u8 playerId[TRAINER_ID_LENGTH];
u8 playerName[PLAYER_NAME_LENGTH];
@@ -282,7 +282,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6];
- /*0x34*/ struct BattleTowerPokemon party[3];
+ /*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE];
/*0xB8*/ u32 checksum;
};
@@ -329,7 +329,7 @@ struct BattleFrontier
/*0xCA9*/ u8 field_CA9_d:1; // 0x20
/*0xCA9*/ u8 field_CA9_e:1; // 0x40
/*0xCA9*/ u8 field_CA9_f:1; // 0x80
- /*0xCAA*/ u16 selectedPartyMons[3];
+ /*0xCAA*/ u16 selectedPartyMons[FRONTIER_PARTY_SIZE];
/*0xCB0*/ u16 field_CB0;
/*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor.
/*0xCB4*/ u16 trainerIds[20];
@@ -356,7 +356,7 @@ struct BattleFrontier
/*0xD14*/ u16 domeRecordWinStreaks[2][2];
/*0xD1C*/ u16 domeTotalChampionships[2][2];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT];
- /*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][3];
+ /*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][FRONTIER_PARTY_SIZE];
/*0xDC4*/ u16 field_DC4;
/*0xDC6*/ u16 field_DC6;
/*0xDC8*/ u16 palaceWinStreaks[2][2];
@@ -375,7 +375,7 @@ struct BattleFrontier
/*0xE10*/ u8 pikeHintedRoomIndex:3;
/*0xE10*/ u8 pikeHintedRoomType:4;
/*0xE10*/ u8 pikeHealingRoomsDisabled:1;
- /*0xE12*/ u16 pikeHeldItemsBackup[3];
+ /*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE];
/*0xE18*/ u16 pyramidRewardItem;
/*0xE1A*/ u16 pyramidWinStreaks[2];
/*0xE1E*/ u16 pyramidRecordStreaks[2];
@@ -419,7 +419,7 @@ struct PlayersApprentice
/*0xB2*/ u8 field_B2_0:3;
/*0xB2*/ u8 field_B2_1:2;
/*0xB3*/ u8 field_B3;
- /*0xB4*/ u8 monIds[3];
+ /*0xB4*/ u8 monIds[MULTI_PARTY_SIZE];
/*0xB8*/ struct Sav2_B8 field_B8[9];
};
@@ -500,8 +500,8 @@ struct SecretBase
/*0x1AAA*/ u16 numSecretBasesReceived;
/*0x1AAC*/ u8 numTimesEntered;
/*0x1AAD*/ u8 sbr_field_11;
- /*0x1AAE*/ u8 decorations[16];
- /*0x1ABE*/ u8 decorationPositions[16];
+ /*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE];
+ /*0x1ABE*/ u8 decorationPositions[DECOR_MAX_SECRET_BASE];
/*0x1AD0*/ struct SecretBaseParty party;
};
@@ -594,9 +594,9 @@ struct MauvilleManCommon
struct MauvilleManBard
{
/*0x00*/ u8 id;
- /*0x02*/ u16 songLyrics[6];
- /*0x0E*/ u16 temporaryLyrics[6];
- /*0x1A*/ u8 playerName[8];
+ /*0x02*/ u16 songLyrics[BARD_SONG_LENGTH];
+ /*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH];
+ /*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x22*/ u8 filler_2DB6[0x3];
/*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH];
/*0x29*/ bool8 hasChangedSong;
@@ -608,10 +608,10 @@ struct MauvilleManStoryteller
u8 id;
bool8 alreadyRecorded;
u8 filler2[2];
- u8 gameStatIDs[4];
- u8 trainerNames[4][7];
- u8 statValues[4][4];
- u8 language[4];
+ u8 gameStatIDs[NUM_STORYTELLER_TALES];
+ u8 trainerNames[NUM_STORYTELLER_TALES][PLAYER_NAME_LENGTH];
+ u8 statValues[NUM_STORYTELLER_TALES][4];
+ u8 language[NUM_STORYTELLER_TALES];
};
struct MauvilleManGiddy
@@ -634,10 +634,10 @@ struct MauvilleManHipster
struct MauvilleOldManTrader
{
u8 id;
- u8 decorIds[4];
- u8 playerNames[4][11];
+ u8 decorIds[NUM_TRADER_ITEMS];
+ u8 playerNames[NUM_TRADER_ITEMS][11];
u8 alreadyTraded;
- u8 language[4];
+ u8 language[NUM_TRADER_ITEMS];
};
typedef union OldMan
@@ -925,8 +925,8 @@ struct SaveBlock1
/*0x159C*/ u32 gameStats[NUM_GAME_STATS];
/*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT];
/*0x1A9C*/ struct SecretBase secretBases[SECRET_BASES_COUNT];
- /*0x271C*/ u8 playerRoomDecor[12];
- /*0x2728*/ u8 playerRoomDecorPos[12];
+ /*0x271C*/ u8 playerRoomDecor[DECOR_MAX_PLAYERS_HOUSE];
+ /*0x2728*/ u8 playerRoomDecorPos[DECOR_MAX_PLAYERS_HOUSE];
/*0x2734*/ u8 decorDesk[10];
/*0x????*/ u8 decorChair[10];
/*0x????*/ u8 decorPlant[10];
diff --git a/include/global.tv.h b/include/global.tv.h
index 1cef057ae..34791d43c 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -1,45 +1,6 @@
#ifndef GUARD_GLOBAL_TV_H
#define GUARD_GLOBAL_TV_H
-enum
-{
- TVSHOW_OFF_AIR,
- TVSHOW_FAN_CLUB_LETTER,
- TVSHOW_RECENT_HAPPENINGS,
- TVSHOW_PKMN_FAN_CLUB_OPINIONS,
- TVSHOW_UNKN_SHOWTYPE_04,
- TVSHOW_NAME_RATER_SHOW,
- TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
- TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
- TVSHOW_CONTEST_LIVE_UPDATES,
- TVSHOW_3_CHEERS_FOR_POKEBLOCKS,
- TVSHOW_BATTLE_UPDATE,
- TVSHOW_FAN_CLUB_SPECIAL,
- TVSHOW_CONTEST_LIVE_UPDATES_2,
-
- TVSHOW_POKEMON_TODAY_CAUGHT = 21,
- TVSHOW_SMART_SHOPPER,
- TVSHOW_POKEMON_TODAY_FAILED,
- TVSHOW_FISHING_ADVICE,
- TVSHOW_WORLD_OF_MASTERS,
- TVSHOW_TODAYS_RIVAL_TRAINER,
- TVSHOW_TREND_WATCHER,
- TVSHOW_TREASURE_INVESTIGATORS,
- TVSHOW_FIND_THAT_GAMER,
- TVSHOW_BREAKING_NEWS,
- TVSHOW_SECRET_BASE_VISIT,
- TVSHOW_LOTTO_WINNER,
- TVSHOW_BATTLE_SEMINAR,
- TVSHOW_TRAINER_FAN_CLUB,
- TVSHOW_CUTIES,
- TVSHOW_FRONTIER,
- TVSHOW_NUMBER_ONE,
- TVSHOW_SECRET_BASE_SECRETS,
- TVSHOW_SAFARI_FAN_CLUB,
-
- TVSHOW_MASS_OUTBREAK = 41,
-};
-
typedef union // size = 0x24
{
// Common
@@ -495,14 +456,6 @@ typedef union // size = 0x24
} massOutbreak;
} TVShow;
-enum {
- POKENEWS_NONE,
- POKENEWS_SLATEPORT,
- POKENEWS_GAME_CORNER,
- POKENEWS_LILYCOVE,
- POKENEWS_BLENDMASTER
-};
-
typedef struct // 2b50
{
u8 kind;
diff --git a/include/gpu_regs.h b/include/gpu_regs.h
deleted file mode 100644
index 89e0cb64b..000000000
--- a/include/gpu_regs.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef GUARD_GPU_REGS_H
-#define GUARD_GPU_REGS_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void InitGpuRegManager(void);
-void CopyBufferedValuesToGpuRegs(void);
-void SetGpuReg(u8 regOffset, u16 value);
-void SetGpuReg_ForcedBlank(u8 regOffset, u16 value);
-u16 GetGpuReg(u8 regOffset);
-void SetGpuRegBits(u8 regOffset, u16 mask);
-void ClearGpuRegBits(u8 regOffset, u16 mask);
-void EnableInterrupts(u16 mask);
-void DisableInterrupts(u16 mask);
-
-#endif //GUARD_GPU_REGS_H
diff --git a/include/graphics.h b/include/graphics.h
index 5f5c579d2..37dd77e89 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3916,9 +3916,9 @@ extern const u16 gIntro2FlygonPal[];
extern const u32 gIntro2FlygonGfx[];
// party menu graphics
-extern const u32 gPartyMenuMisc_Gfx[];
-extern const u32 gPartyMenuMisc_Tilemap[];
-extern const u32 gPartyMenuMisc_Pal[];
+extern const u32 gPartyMenuBg_Gfx[];
+extern const u32 gPartyMenuBg_Tilemap[];
+extern const u32 gPartyMenuBg_Pal[];
// berry pics
extern const u32 gBerryPic_Cheri[];
@@ -4848,13 +4848,13 @@ extern const u32 gCableCarCord_Gfx[];
extern const u16 gCableCar_Pal[];
// Trade
-extern const u16 gUnknown_08DDB3E4[];
-extern const u8 gUnknown_08DDB464[];
+extern const u16 gTradeMenu_Pal[];
+extern const u8 gTradeMenu_Gfx[];
extern const u16 gUnknown_08DDCF04[];
extern const u16 gTradeGba2_Pal[];
extern const u8 gTradeGba_Gfx[];
-extern const u16 gUnknown_08DDD704[];
-extern const u8 gUnknown_08DDC6E4[];
+extern const u16 gTradeMenuMonBox_Tilemap[];
+extern const u8 gTradeButtons_Gfx[];
extern const u16 gUnknown_08DDB444[];
// Party menu
diff --git a/include/item_use.h b/include/item_use.h
index 37343f6e7..5ce47a9bc 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -50,6 +50,6 @@ void ItemUseOutOfBattle_EnigmaBerry(u8);
void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
-void sub_80FDD10(u8);
+void ItemUseOutOfBattle_Berry(u8);
#endif // GUARD_ITEM_USE_H
diff --git a/include/librfu.h b/include/librfu.h
index 38c819835..55b5d264c 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -76,10 +76,10 @@ struct UnkLinkRfuStruct_02022B14Substruct
u16 unk_00_4:1;
u16 unk_00_5:1;
u16 unk_00_6:1;
- u16 unk_00_7:1;
- u16 unk_01_0:1;
- u16 unk_01_1:1;
- u16 unk_01_2:4;
+ u16 isChampion:1;
+ u16 hasNationalDex:1;
+ u16 gameClear:1; // never read, redundant with isChampion
+ u16 unk_01_2:4; // always 3?
u16 unk_01_6:2;
u8 playerTrainerId[2];
};
@@ -93,7 +93,7 @@ struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
u8 unk_0a_0:7;
u8 unk_0a_7:1;
u8 playerGender:1;
- u8 unk_0b_1:7;
+ u8 level:7;
u8 unk_0c;
};
diff --git a/include/link.h b/include/link.h
index c14084066..499405fc1 100644
--- a/include/link.h
+++ b/include/link.h
@@ -48,20 +48,52 @@
#define EXTRACT_LINK_ERRORS(status) \
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
-#define LINKCMD_SEND_LINK_TYPE 0x2222
-#define LINKCMD_0x2FFE 0x2FFE
-#define LINKCMD_SEND_HELD_KEYS 0x4444
-#define LINKCMD_0x5555 0x5555
-#define LINKCMD_0x5566 0x5566
-#define LINKCMD_0x5FFF 0x5FFF
-#define LINKCMD_0x6666 0x6666
-#define LINKCMD_0x7777 0x7777
-#define LINKCMD_CONT_BLOCK 0x8888
-#define LINKCMD_0xAAAA 0xAAAA
-#define LINKCMD_0xAAAB 0xAAAB
-#define LINKCMD_INIT_BLOCK 0xBBBB
-#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
-#define LINKCMD_0xCCCC 0xCCCC
+#define LINKCMD_SEND_LINK_TYPE 0x2222
+#define LINKCMD_0x2FFE 0x2FFE
+#define LINKCMD_SEND_HELD_KEYS 0x4444
+#define LINKCMD_0x5555 0x5555
+#define LINKCMD_0x5566 0x5566
+#define LINKCMD_0x5FFF 0x5FFF
+#define LINKCMD_0x6666 0x6666
+#define LINKCMD_0x7777 0x7777
+#define LINKCMD_CONT_BLOCK 0x8888
+#define LINKCMD_0xAAAA 0xAAAA
+#define LINKCMD_0xAAAB 0xAAAB
+#define LINKCMD_READY_TO_TRADE 0xAABB
+#define LINKCMD_READY_FINISH_TRADE 0xABCD
+#define LINKCMD_INIT_BLOCK 0xBBBB
+#define LINKCMD_READY_CANCEL_TRADE 0xBBCC
+#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
+#define LINKCMD_0xCCCC 0xCCCC
+#define LINKCMD_START_TRADE 0xCCDD
+#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA
+#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD
+#define LINKCMD_0xDDEE 0xDDEE
+#define LINKCMD_REQUEST_CANCEL 0xEEAA
+#define LINKCMD_CANCEL_TRADE 0xEEBB
+#define LINKCMD_0xEECC 0xEECC
+
+#define LINKTYPE_0x1111 0x1111 // trade
+#define LINKTYPE_0x1122 0x1122 // trade
+#define LINKTYPE_0x1133 0x1133 // trade
+#define LINKTYPE_0x1144 0x1144 // trade
+#define LINKTYPE_BATTLE 0x2211
+#define LINKTYPE_0x2222 0x2222 // unused battle?
+#define LINKTYPE_SINGLE_BATTLE 0x2233
+#define LINKTYPE_DOUBLE_BATTLE 0x2244
+#define LINKTYPE_MULTI_BATTLE 0x2255
+#define LINKTYPE_BATTLE_TOWER_50 0x2266
+#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
+#define LINKTYPE_0x2288 0x2288 // battle?
+#define LINKTYPE_0x3311 0x3311
+#define LINKTYPE_0x3322 0x3322
+#define LINKTYPE_0x4411 0x4411
+#define LINKTYPE_BERRY_BLENDER 0x4422
+#define LINKTYPE_0x5501 0x5501 // mystery event
+#define LINKTYPE_0x5502 0x5502 // unused?
+#define LINKTYPE_0x5503 0x5503 // eReader
+#define LINKTYPE_0x6601 0x6601
+#define LINKTYPE_0x6602 0x6602
struct LinkStatus
{
@@ -95,8 +127,8 @@ enum
EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS,
- EXCHANGE_STAT_4,
- EXCHANGE_STAT_5,
+ EXCHANGE_PLAYER_NOT_READY,
+ EXCHANGE_PARTNER_NOT_READY,
EXCHANGE_STAT_6,
EXCHANGE_STAT_7
};
@@ -120,7 +152,10 @@ struct LinkPlayer
/* 0x00 */ u16 version;
/* 0x02 */ u16 lp_field_2;
/* 0x04 */ u32 trainerId;
- /* 0x08 */ u8 name[11];
+ /* 0x08 */ u8 name[PLAYER_NAME_LENGTH + 1];
+ /* 0x10 */ u8 progressFlags; // (& 0x0F) is hasNationalDex, (& 0xF0) is hasClearedGame
+ /* 0x11 */ u8 neverRead;
+ /* 0x12 */ u8 progressFlagsCopy;
/* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
/* 0x18 */ u16 id; // battler id in battles
diff --git a/include/link_rfu.h b/include/link_rfu.h
index d6e1009e1..533e515c5 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -128,7 +128,7 @@ struct UnkRfuStruct_Sub_Unused
struct UnkRfuStruct_2
{
- /* 0x000 */ void (*unk_00)(void);
+ /* 0x000 */ void (*linkRfuCallback)(void);
/* 0x004 */ u16 unk_04;
/* 0x006 */ u8 filler_06[4];
/* 0x00a */ u16 unk_0a;
@@ -224,11 +224,11 @@ void sub_800F804(void);
void sub_800F850(void);
u8 sub_800FCD8(void);
bool32 sub_800FE84(const u8 *src, size_t size);
-void Rfu_set_zero(void);
+void ClearLinkRfuCallback(void);
u8 sub_80104F4(void);
u8 rfu_get_multiplayer_id(void);
bool8 sub_8010100(u8 a0);
-bool8 sub_8010500(void);
+bool8 IsLinkRfuTaskFinished(void);
bool8 Rfu_IsMaster(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
void sub_8010434(void);
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 9d71e81aa..3845ac290 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -1,16 +1,6 @@
-
#ifndef GUARD_MAUVILLE_OLD_MAN_H
#define GUARD_MAUVILLE_OLD_MAN_H
-enum MauvilleOldManType
-{
- MAUVILLE_MAN_BARD,
- MAUVILLE_MAN_HIPSTER,
- MAUVILLE_MAN_TRADER,
- MAUVILLE_MAN_STORYTELLER,
- MAUVILLE_MAN_GIDDY
-};
-
extern struct BardSong gBardSong;
void SetMauvilleOldMan(void);
diff --git a/include/menu.h b/include/menu.h
index 62e2558dc..c5cef202c 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -1,4 +1,3 @@
-
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
@@ -87,7 +86,7 @@ void RemoveMapNamePopUpWindow(void);
u8 GetMapNamePopUpWindowId(void);
u8 AddMapNamePopUpWindow(void);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
-void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP);
void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram);
void sub_8197AE8(bool8 copyToVram);
@@ -95,7 +94,7 @@ void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const
s8 Menu_ProcessInputGridLayout(void);
u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
s8 Menu_ProcessInputNoWrapAround_other(void);
-void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile);
void sub_8198314(void);
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 3b6c13172..442f4a063 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -4,6 +4,9 @@
#include "task.h"
#include "window.h"
+#define MENU_L_PRESSED 1
+#define MENU_R_PRESSED 2
+
// Exported type declarations
struct YesNoFuncTable
@@ -23,8 +26,8 @@ bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
-u8 GetLRKeysState(void);
-u8 sub_812210C(void);
+u8 GetLRKeysPressed(void);
+u8 GetLRKeysPressedAndHeld(void);
bool8 sub_8122148(u16 itemId);
bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void);
diff --git a/include/mossdeep_gym.h b/include/mossdeep_gym.h
deleted file mode 100644
index c16730094..000000000
--- a/include/mossdeep_gym.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef GUARD_MOSSDEEP_GYM_H
-#define GUARD_MOSSDEEP_GYM_H
-
-void InitMossdeepGymTiles(bool8 arg0);
-void FinishMossdeepGymTiles(void);
-u16 MossdeepGym_MoveEvents(u8 arg0);
-void MossdeepGym_TurnEvents(void);
-
-#endif // GUARD_MOSSDEEP_GYM_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index 611f53ef2..7d32abcd3 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -9,6 +9,16 @@
#define KBEVENT_PRESSED_SELECT 8
#define KBEVENT_PRESSED_START 9
+#define KBROW_COUNT 4
+
+enum
+{
+ KBPAGE_LETTERS_LOWER,
+ KBPAGE_LETTERS_UPPER,
+ KBPAGE_SYMBOLS,
+ KBPAGE_COUNT,
+};
+
enum
{
NAMING_SCREEN_PLAYER,
@@ -57,12 +67,6 @@ struct NamingScreenData {
/*0x1E3C*/ MainCallback returnCallback;
};
-enum
-{
- PAGE_OTHERS,
- PAGE_UPPER,
- PAGE_LOWER,
-};
enum
{
diff --git a/include/party_menu.h b/include/party_menu.h
index d76e50788..126931762 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -4,147 +4,90 @@
#include "main.h"
#include "task.h"
-enum
-{
- AILMENT_NONE,
- AILMENT_PSN,
- AILMENT_PRZ,
- AILMENT_SLP,
- AILMENT_FRZ,
- AILMENT_BRN,
- AILMENT_PKRS,
- AILMENT_FNT
-};
-
-enum
-{
- PARTY_CHOOSE_MON,
- PARTY_MUST_CHOOSE_MON,
- PARTY_CANT_SWITCH,
- PARTY_USE_ITEM_ON,
- PARTY_ABILITY_PREVENTS,
- PARTY_GIVE_ITEM,
-};
-
-enum
-{
- TUTOR_MOVE_MEGA_PUNCH,
- TUTOR_MOVE_SWORDS_DANCE,
- TUTOR_MOVE_MEGA_KICK,
- TUTOR_MOVE_BODY_SLAM,
- TUTOR_MOVE_DOUBLE_EDGE,
- TUTOR_MOVE_COUNTER,
- TUTOR_MOVE_SEISMIC_TOSS,
- TUTOR_MOVE_MIMIC,
- TUTOR_MOVE_METRONOME,
- TUTOR_MOVE_SOFT_BOILED,
- TUTOR_MOVE_DREAM_EATER,
- TUTOR_MOVE_THUNDER_WAVE,
- TUTOR_MOVE_EXPLOSION,
- TUTOR_MOVE_ROCK_SLIDE,
- TUTOR_MOVE_SUBSTITUTE,
- TUTOR_MOVE_DYNAMIC_PUNCH,
- TUTOR_MOVE_ROLLOUT,
- TUTOR_MOVE_PSYCH_UP,
- TUTOR_MOVE_SNORE,
- TUTOR_MOVE_ICY_WIND,
- TUTOR_MOVE_ENDURE,
- TUTOR_MOVE_MUD_SLAP,
- TUTOR_MOVE_ICE_PUNCH,
- TUTOR_MOVE_SWAGGER,
- TUTOR_MOVE_SLEEP_TALK,
- TUTOR_MOVE_SWIFT,
- TUTOR_MOVE_DEFENSE_CURL,
- TUTOR_MOVE_THUNDER_PUNCH,
- TUTOR_MOVE_FIRE_PUNCH,
- TUTOR_MOVE_FURY_CUTTER,
- TUTOR_MOVE_COUNT
-};
-
-struct Struct203CEC8
+// seems like the last two fields may have been left as all-purpose vars
+// and the second of the two just happens to only be used in one case
+struct PartyMenu
{
MainCallback exitCallback;
- TaskFunc unk4;
- u8 unk8_0:4;
- u8 mode:2;
- u8 unk8_2:2;
+ TaskFunc task;
+ u8 menuType:4;
+ u8 layout:2;
s8 slotId;
- s8 unkA;
- u8 unkB;
- u16 unkC;
- s16 unkE;
- s16 unk10;
+ s8 slotId2;
+ u8 action;
+ u16 bagItem;
+ s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
+ s16 learnMoveState; // data2, used only as a learn move state
};
-extern struct Struct203CEC8 gUnknown_0203CEC8;
-extern u8 gUnknown_0203CEE8;
-extern u8 gUnknown_0203CEE9;
+extern struct PartyMenu gPartyMenu;
+extern bool8 gPartyMenuUseExitCallback;
+extern u8 gSelectedMonPartyId;
extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[4];
-extern u8 gUnknown_0203CF00[3];
+extern u8 gBattlePartyCurrentOrder[3];
-extern void (*gUnknown_03006328)(u8, TaskFunc);
+extern void (*gItemUseCB)(u8, TaskFunc);
extern const u16 gTutorMoves[];
-void sub_81B0FCC(u8 slot, u8 b);
+void AnimatePartySlot(u8 slot, u8 animNum);
bool8 IsMultiBattle(void);
u8 GetCursorSelectionMonId(void);
-u8 sub_81B1360(void);
-void sub_81B1370(u8 taskId);
+u8 GetPartyMenuType(void);
+void Task_HandleChooseMonInput(u8 taskId);
u8* GetMonNickname(struct Pokemon *mon, u8 *dest);
-u8 sub_81B1B5C(const u8* str, u8 b);
-bool8 sub_81B1BD4(void);
-void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func);
-u8 pokemon_ailments_get_primary(u32 status);
+u8 DisplayPartyMenuMessage(const u8* str, bool8 keepOpen);
+bool8 IsPartyMenuTextPrinterActive(void);
+void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 HPDifference, TaskFunc task);
+u8 GetAilmentFromStatus(u32 status);
u8 GetMonAilment(struct Pokemon *mon);
-void display_pokemon_menu_message(u32 stringID);
-void sub_81B47E0(u8 taskId);
+void DisplayPartyMenuStdMessage(u32 stringId);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
-void sub_81B58A8(void);
+void CB2_ReturnToPartyMenuFromFlyMap(void);
void LoadHeldItemIcons(void);
-void sub_81B5D4C(u8 *a, u8 *b, u8 c);
-void sub_81B617C(void);
+void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty);
+void CB2_ShowPartyMenuForItemUse(void);
void ItemUseCB_Medicine(u8 taskId, TaskFunc task);
-void sub_81B67C8(u8 taskId, TaskFunc task);
-void dp05_ether(u8 taskId, TaskFunc task);
-void dp05_pp_up(u8 taskId, TaskFunc task);
+void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task);
+void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task);
+void ItemUseCB_PPUp(u8 taskId, TaskFunc task);
u16 ItemIdToBattleMoveId(u16 item);
bool8 IsMoveHm(u16 move);
bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
-void sub_81B6DC4(u8 taskId, TaskFunc task);
-void dp05_rare_candy(u8 taskId, TaskFunc task);
-void sub_81B79E8(u8 taskId, TaskFunc task);
-void sub_81B7C74(u8 taskId, TaskFunc task);
+void ItemUseCB_TMHM(u8 taskId, TaskFunc task);
+void ItemUseCB_RareCandy(u8 taskId, TaskFunc task);
+void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task);
+void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task);
u8 GetItemEffectType(u16 item);
void CB2_PartyMenuFromStartMenu(void);
-void sub_81B7F60(void);
-void sub_81B8448(void);
+void CB2_ChooseMonToGiveItem(void);
+void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 unused);
-void sub_81B8558(void);
-void sub_81B8904(u8 initArg, MainCallback callback);
-void sub_81B892C(void);
-void sub_81B8958(void);
-void OpenPartyMenuInBattle(u8 arg);
-void sub_81B89F0(void);
-void sub_81B8C68(void);
-void sub_81B8D64(u8 battlerId, u8 multiplayerFlag);
-void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex);
-void sub_81B8FB0(u8 slot, u8 slot2);
-u8 pokemon_order_func(u8 slot);
-void sub_81B9150(void);
-void sub_81B9328(void);
-bool8 hm_add_c3_without_phase_2(void);
-void sub_81B9404(void);
-void sub_81B94B0(void);
-void sub_81B951C(void);
-void sub_81B9620(void);
-void sub_81B95E0(void);
-void sub_81B98DC(void);
-void sub_81B9918(void);
-void sub_81B9770(void);
-void sub_81B9718(void);
-void sub_81B96D0(void);
-void sub_81B968C(void);
+void ClearSelectedPartyOrder(void);
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
+void ChooseMonForMoveTutor(void);
+void ChooseMonForWirelessMinigame(void);
+void OpenPartyMenuInBattle(u8 partyAction);
+void ChooseMonForInBattleItem(void);
+void BufferBattlePartyCurrentOrder(void);
+void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
+void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
+void SwitchPartyMonSlots(u8 slot, u8 slot2);
+u8 GetPartyIdFromBattlePartyId(u8 slot);
+void ShowPartyMenuToShowcaseMultiBattleParty(void);
+void ChooseMonForDaycare(void);
+bool8 CB2_FadeFromPartyMenu(void);
+void ChooseContestMon(void);
+void ChoosePartyMon(void);
+void ChooseMonForMoveRelearner(void);
+void BattlePyramidChooseMonHeldItems(void);
+void DoBattlePyramidMonsHaveHeldItem(void);
+void IsSelectedMonEgg(void);
+void IsLastMonThatKnowsSurf(void);
+void MoveDeleterForgetMove(void);
+void BufferMoveDeleterNicknameAndMove(void);
+void GetNumMovesSelectedMonHas(void);
+void MoveDeleterChooseMoveToForget(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokeball.h b/include/pokeball.h
index 8e1d8b8ec..12b9b1eff 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -25,7 +25,7 @@ extern const struct SpriteTemplate gBallSpriteTemplates[];
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battler, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species);
-u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
+u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
void sub_8076918(u8 battler);
void DoHitAnimHealthboxEffect(u8 battler);
void LoadBallGfx(u8 ballId);
diff --git a/include/pokemon.h b/include/pokemon.h
index 6a34e3cda..316fbc2b3 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -287,7 +287,6 @@ void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
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 SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
@@ -357,8 +356,8 @@ u16 SpeciesToCryId(u16 species);
void sub_806D544(u16 species, u32 personality, u8 *dest);
void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
-bool8 sub_806D7EC(void);
-bool16 GetLinkTrainerFlankId(u8 id);
+u8 GetPlayerFlankId(void);
+u16 GetLinkTrainerFlankId(u8 id);
s32 GetBattlerMultiplayerId(u16 a1);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 8af43c753..9d56aebcb 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -21,8 +21,8 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
-void sub_80D3014(struct Sprite *sprite);
-void sub_80D32C8(struct Sprite *sprite, u8 animNum);
+void SpriteCB_MonIcon(struct Sprite *sprite);
+void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 28b19f9b1..dde59aac5 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -4,10 +4,10 @@
#include "main.h"
void sub_802A9A8(u16 monId, MainCallback callback);
-bool32 sub_802C908(u16 species);
-void sub_802C920(void);
+bool32 IsSpeciesAllowedInPokemonJump(u16 species);
+void IsPokemonJumpSpeciesInParty(void);
void ResetPokeJumpResults(void);
-void sub_802E3C4(void);
+void ShowPokemonJumpRecords(void);
void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority);
bool32 sub_802EB84(void);
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 4c319e59d..7b6a38678 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -25,7 +25,7 @@ struct PokemonStorage
extern struct PokemonStorage *gPokemonStoragePtr;
-void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4);
+void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 bytesToBuffer);
u8 CountMonsInBox(u8 boxId);
s16 GetFirstFreeBoxSpot(u8 boxId);
u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 20d881702..07d541cac 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -9,10 +9,9 @@ extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
-void sub_81C4F98(u8, void(*)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
-u8 sub_81C1B94(void);
+u8 GetMoveSlotToReplace(void);
void SummaryScreen_SetUnknownTaskId(u8 a0);
void SummaryScreen_DestroyUnknownTask(void);
diff --git a/include/region_map.h b/include/region_map.h
index 798e6f56d..0d219643d 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -102,7 +102,7 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
-u8 *sub_81245DC(u8 *dest, u16 mapSecId);
+u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId);
u8 *sub_8124610(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap);
diff --git a/include/rotating_tile_puzzle.h b/include/rotating_tile_puzzle.h
new file mode 100644
index 000000000..8c6ab7944
--- /dev/null
+++ b/include/rotating_tile_puzzle.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_ROTATING_TILE_PUZZLE_H
+#define GUARD_ROTATING_TILE_PUZZLE_H
+
+void InitRotatingTilePuzzle(bool8 isTrickHouse);
+void FreeRotatingTilePuzzle(void);
+u16 MoveRotatingTileObjects(u8 puzzleNumber);
+void TurnRotatingTileObjects(void);
+
+#endif // GUARD_ROTATING_TILE_PUZZLE_H
diff --git a/include/script.h b/include/script.h
index cfe493479..3f92964ac 100644
--- a/include/script.h
+++ b/include/script.h
@@ -62,6 +62,6 @@ u8 *GetSavedRamScriptIfValid(void);
void InitRamScript_NoEventObject(u8 *script, u16 scriptSize);
// srccmd.h
-void sub_809BE48(u16 npcId);
+void SetMovingNpcId(u16 npcId);
#endif // GUARD_SCRIPT_H
diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h
deleted file mode 100644
index 1b8563ee6..000000000
--- a/include/script_pokemon_81B9.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GUARD_SCRIPTPOKE81B9_H
-#define GUARD_SCRIPTPOKE81B9_H
-
-void sub_81B9404(void);
-
-#endif
diff --git a/include/sprite.h b/include/sprite.h
deleted file mode 100644
index 9753837fd..000000000
--- a/include/sprite.h
+++ /dev/null
@@ -1,319 +0,0 @@
-#ifndef GUARD_SPRITE_H
-#define GUARD_SPRITE_H
-
-#define MAX_SPRITES 64
-#define SPRITE_INVALID_TAG 0xFFFF
-
-struct SpriteSheet
-{
- const void *data; // Raw uncompressed pixel data
- u16 size;
- u16 tag;
-};
-
-struct CompressedSpriteSheet
-{
- const u32 *data; // LZ77 compressed pixel data
- u16 size; // Uncompressed size of pixel data
- u16 tag;
-};
-
-struct SpriteFrameImage
-{
- 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
-{
- const u16 *data; // Raw uncompressed palette data
- u16 tag;
-};
-
-struct CompressedSpritePalette
-{
- const u32 *data; // LZ77 compressed palette data
- u16 tag;
-};
-
-struct AnimFrameCmd
-{
- // If the sprite has an array of images, this is the array index.
- // If the sprite has a sheet, this is the tile offset.
- u32 imageValue:16;
-
- u32 duration:6;
- u32 hFlip:1;
- u32 vFlip:1;
-};
-
-struct AnimLoopCmd
-{
- u32 type:16;
- u32 count:6;
-};
-
-struct AnimJumpCmd
-{
- u32 type:16;
- u32 target:6;
-};
-
-// The first halfword of this union specifies the type of command.
-// If it -2, then it is a jump command. If it is -1, then it is the end of the script.
-// Otherwise, it is the imageValue for a frame command.
-union AnimCmd
-{
- s16 type;
- struct AnimFrameCmd frame;
- struct AnimLoopCmd loop;
- struct AnimJumpCmd jump;
-};
-
-#define ANIMCMD_FRAME(...) \
- {.frame = {__VA_ARGS__}}
-#define ANIMCMD_LOOP(_count) \
- {.loop = {.type = -3, .count = _count}}
-#define ANIMCMD_JUMP(_target) \
- {.jump = {.type = -2, .target = _target}}
-#define ANIMCMD_END \
- {.type = -1}
-
-struct AffineAnimFrameCmd
-{
- s16 xScale;
- s16 yScale;
- u8 rotation;
- u8 duration;
-};
-
-struct AffineAnimLoopCmd
-{
- s16 type;
- s16 count;
-};
-
-struct AffineAnimJumpCmd
-{
- s16 type;
- u16 target;
-};
-
-struct AffineAnimEndCmdAlt
-{
- s16 type;
- u16 val;
-};
-
-union AffineAnimCmd
-{
- s16 type;
- struct AffineAnimFrameCmd frame;
- struct AffineAnimLoopCmd loop;
- struct AffineAnimJumpCmd jump;
- struct AffineAnimEndCmdAlt end; // unused in code
-};
-
-#define AFFINEANIMCMDTYPE_LOOP 0x7FFD
-#define AFFINEANIMCMDTYPE_JUMP 0x7FFE
-#define AFFINEANIMCMDTYPE_END 0x7FFF
-
-#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
- {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
-#define AFFINEANIMCMD_LOOP(_count) \
- {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}}
-#define AFFINEANIMCMD_JUMP(_target) \
- {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
-#define AFFINEANIMCMD_END \
- {.type = AFFINEANIMCMDTYPE_END}
-#define AFFINEANIMCMD_END_ALT(_val) \
- {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}
-
-struct AffineAnimState
-{
- u8 animNum;
- u8 animCmdIndex;
- u8 delayCounter;
- u8 loopCounter;
- s16 xScale;
- s16 yScale;
- u16 rotation;
-};
-
-enum
-{
- SUBSPRITES_OFF,
- SUBSPRITES_ON,
- SUBSPRITES_IGNORE_PRIORITY, // on but priority is ignored
-};
-
-struct Subsprite
-{
- s8 x; // was u16 in R/S
- s8 y; // was u16 in R/S
- u16 shape:2;
- u16 size:2;
- u16 tileOffset:10;
- u16 priority:2;
-};
-
-struct SubspriteTable
-{
- u8 subspriteCount;
- const struct Subsprite *subsprites;
-};
-
-struct Sprite;
-
-typedef void (*SpriteCallback)(struct Sprite *);
-
-struct SpriteTemplate
-{
- u16 tileTag;
- u16 paletteTag;
- const struct OamData *oam;
- const union AnimCmd *const *anims;
- const struct SpriteFrameImage *images;
- const union AffineAnimCmd *const *affineAnims;
- SpriteCallback callback;
-};
-
-struct Sprite
-{
- /*0x00*/ struct OamData oam;
- /*0x08*/ const union AnimCmd *const *anims;
- /*0x0C*/ const struct SpriteFrameImage *images;
- /*0x10*/ const union AffineAnimCmd *const *affineAnims;
- /*0x14*/ const struct SpriteTemplate *template;
- /*0x18*/ const struct SubspriteTable *subspriteTables;
- /*0x1C*/ SpriteCallback callback;
-
- /*0x20*/ struct Coords16 pos1;
- /*0x24*/ struct Coords16 pos2;
- /*0x28*/ s8 centerToCornerVecX;
- /*0x29*/ s8 centerToCornerVecY;
-
- /*0x2A*/ u8 animNum;
- /*0x2B*/ u8 animCmdIndex;
- /*0x2C*/ u8 animDelayCounter:6;
- bool8 animPaused:1;
- bool8 affineAnimPaused:1;
- /*0x2D*/ u8 animLoopCounter;
-
- // general purpose data fields
- /*0x2E*/ s16 data[8];
-
- /*0x3E*/ bool16 inUse:1; //1
- bool16 coordOffsetEnabled:1; //2
- bool16 invisible:1; //4
- bool16 flags_3:1; //8
- bool16 flags_4:1; //0x10
- bool16 flags_5:1; //0x20
- bool16 flags_6:1; //0x40
- bool16 flags_7:1; //0x80
- /*0x3F*/ bool16 hFlip:1; //1
- bool16 vFlip:1; //2
- bool16 animBeginning:1; //4
- bool16 affineAnimBeginning:1; //8
- bool16 animEnded:1; //0x10
- bool16 affineAnimEnded:1; //0x20
- bool16 usingSheet:1; //0x40
- bool16 flags_f:1; //0x80
-
- /*0x40*/ u16 sheetTileStart;
-
- /*0x42*/ u8 subspriteTableNum:6;
- u8 subspriteMode:2;
-
- /*0x43*/ u8 subpriority;
-};
-
-struct OamMatrix
-{
- s16 a;
- s16 b;
- s16 c;
- s16 d;
-};
-
-extern const struct OamData gDummyOamData;
-extern const union AnimCmd *const gDummySpriteAnimTable[];
-extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
-extern const struct SpriteTemplate gDummySpriteTemplate;
-
-extern u8 gReservedSpritePaletteCount;
-extern struct Sprite gSprites[];
-extern u8 gOamLimit;
-extern u16 gReservedSpriteTileCount;
-extern s16 gSpriteCoordOffsetX;
-extern s16 gSpriteCoordOffsetY;
-extern struct OamMatrix gOamMatrices[];
-extern bool8 gAffineAnimsDisabled;
-
-void ResetSpriteData(void);
-void AnimateSprites(void);
-void BuildOamBuffer(void);
-u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
-u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
-u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
-u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
-void DestroySprite(struct Sprite *sprite);
-void ResetOamRange(u8 a, u8 b);
-void LoadOam(void);
-void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d);
-void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode);
-void SpriteCallbackDummy(struct Sprite *sprite);
-void ProcessSpriteCopyRequests(void);
-void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size);
-void FreeSpriteTiles(struct Sprite *sprite);
-void FreeSpritePalette(struct Sprite *sprite);
-void FreeSpriteOamMatrix(struct Sprite *sprite);
-void DestroySpriteAndFreeResources(struct Sprite *sprite);
-void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5);
-void AnimateSprite(struct Sprite *sprite);
-void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3);
-void StartSpriteAnim(struct Sprite *sprite, u8 animNum);
-void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum);
-void SeekSpriteAnim(struct Sprite *sprite, u8 animCmdIndex);
-void StartSpriteAffineAnim(struct Sprite *sprite, u8 animNum);
-void StartSpriteAffineAnimIfDifferent(struct Sprite *sprite, u8 animNum);
-void ChangeSpriteAffineAnim(struct Sprite *sprite, u8 animNum);
-void ChangeSpriteAffineAnimIfDifferent(struct Sprite *sprite, u8 animNum);
-void SetSpriteSheetFrameTileNum(struct Sprite *sprite);
-u8 AllocOamMatrix(void);
-void FreeOamMatrix(u8 matrixNum);
-void InitSpriteAffineAnim(struct Sprite *sprite);
-void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation);
-u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
-void LoadSpriteSheets(const struct SpriteSheet *sheets);
-u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
-void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
-void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet);
-void LoadTilesForSpriteSheets(struct SpriteSheet *sheets);
-void FreeSpriteTilesByTag(u16 tag);
-void FreeSpriteTileRanges(void);
-u16 GetSpriteTileStartByTag(u16 tag);
-u16 GetSpriteTileTagByTileStart(u16 start);
-void RequestSpriteSheetCopy(const struct SpriteSheet *sheet);
-u16 LoadSpriteSheetDeferred(const struct SpriteSheet *sheet);
-void FreeAllSpritePalettes(void);
-u8 LoadSpritePalette(const struct SpritePalette *palette);
-void LoadSpritePalettes(const struct SpritePalette *palettes);
-u8 AllocSpritePalette(u16 tag);
-u8 IndexOfSpritePaletteTag(u16 tag);
-u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum);
-void FreeSpritePaletteByTag(u16 tag);
-void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables);
-bool8 AddSpriteToOamBuffer(struct Sprite *object, u8 *oamIndex);
-bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u8 *oamIndex);
-void CopyToSprites(u8 *src);
-void CopyFromSprites(u8 *dest);
-u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
-void ClearSpriteCopyRequests(void);
-void ResetAffineAnimData(void);
-
-#endif //GUARD_SPRITE_H
diff --git a/include/string_util.h b/include/string_util.h
deleted file mode 100644
index b921d2391..000000000
--- a/include/string_util.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef GUARD_STRING_UTIL_H
-#define GUARD_STRING_UTIL_H
-
-extern u8 gStringVar1[];
-extern u8 gStringVar2[];
-extern u8 gStringVar3[];
-extern u8 gStringVar4[];
-
-enum StringConvertMode
-{
- STR_CONV_MODE_LEFT_ALIGN,
- STR_CONV_MODE_RIGHT_ALIGN,
- STR_CONV_MODE_LEADING_ZEROS
-};
-
-u8 *StringCopy10(u8 *dest, const u8 *src);
-u8 *StringGetEnd10(u8 *str);
-u8 *StringCopy7(u8 *dest, const u8 *src);
-u8 *StringCopy(u8 *dest, const u8 *src);
-u8 *StringAppend(u8 *dest, const u8 *src);
-u8 *StringCopyN(u8 *dest, const u8 *src, u8 n);
-u8 *StringAppendN(u8 *dest, const u8 *src, u8 n);
-u16 StringLength(const u8 *str);
-s32 StringCompare(const u8 *str1, const u8 *str2);
-s32 StringCompareN(const u8 *str1, const u8 *str2, u32 n);
-bool8 IsStringLengthAtLeast(const u8 *str, s32 n);
-u8 *ConvertIntToDecimalStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n);
-u8 *ConvertUIntToDecimalStringN(u8 *dest, u32 value, enum StringConvertMode mode, u8 n);
-u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n);
-u8 *StringExpandPlaceholders(u8 *dest, const u8 *src);
-u8 *StringBraille(u8 *dest, const u8 *src);
-const u8 *GetExpandedPlaceholder(u32 id);
-u8 *StringFill(u8 *dest, u8 c, u16 n);
-u8 *StringCopyPadded(u8 *dest, const u8 *src, u8 c, u16 n);
-u8 *StringFillWithTerminator(u8 *dest, u16 n);
-u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);
-u32 StringLength_Multibyte(const u8 *str);
-u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color);
-bool32 IsStringJapanese(u8 *str);
-bool32 sub_800924C(u8 *str, s32 n);
-u8 GetExtCtrlCodeLength(u8 code);
-s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2);
-void ConvertInternationalString(u8 *s, u8 language);
-void StripExtCtrlCodes(u8 *str);
-
-#endif // GUARD_STRING_UTIL_H
diff --git a/include/strings.h b/include/strings.h
index c1414269a..f135944bd 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -411,7 +411,7 @@ extern const u8 gText_CantBeUsedOnPkmn[];
extern const u8 gText_CancelParticipation[];
extern const u8 gText_PkmnWasGivenItem[];
extern const u8 gText_ReceivedItemFromPkmn[];
-extern const u8 gText_SwitchPkmnItem[];
+extern const u8 gText_PkmnAlreadyHoldingItemSwitch[];
extern const u8 gText_SwitchedPkmnItem[];
extern const u8 gText_BagFullCouldNotRemoveItem[];
extern const u8 gText_PkmnCantParticipate[];
@@ -427,7 +427,7 @@ extern const u8 gText_NoMoreThanVar1Pkmn[];
extern const u8 gText_PkmnCantBeTradedNow[];
extern const u8 gText_EggCantBeTradedNow[];
extern const u8 gText_OnlyPkmnForBattle[];
-extern const u8 gJPText_PutVar1IntoSpinner[];
+extern const u8 gJPText_AreYouSureYouWantToSpinTradeMon[];
extern const u8 gText_PauseUntilPress[];
extern const u8 gText_CantUseUntilNewBadge[];
extern const u8 gText_ReturnToHealingSpot[];
@@ -2035,8 +2035,8 @@ extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
// battle message
-extern const u8 gText_PkmnBoxSomeonesPCFull[];
-extern const u8 gText_PkmnBoxLanettesPCFull[];
+extern const u8 gText_PkmnTransferredSomeonesPCBoxFull[];
+extern const u8 gText_PkmnTransferredLanettesPCBoxFull[];
extern const u8 gText_PkmnTransferredSomeonesPC[];
extern const u8 gText_PkmnTransferredLanettesPC[];
@@ -2512,52 +2512,53 @@ extern const u8 gEasyChatGroupName_Move2[];
extern const u8 gEasyChatGroupName_TrendySaying[];
extern const u8 gEasyChatGroupName_Pokemon2[];
-extern const u8 gUnknown_862B810[];
-extern const u8 gUnknown_862B832[];
-extern const u8 gUnknown_862B84B[];
-extern const u8 gUnknown_862B86C[];
-extern const u8 gUnknown_0862B88D[];
-extern const u8 gUnknown_0862B8AE[];
-extern const u8 gUnknown_0862B8CF[];
-extern const u8 gUnknown_0862B8F0[];
-extern const u8 gUnknown_0862B911[];
-extern const u8 gUnknown_0862B932[];
-extern const u8 gUnknown_0862B953[];
-extern const u8 gUnknown_0862B974[];
-extern const u8 gUnknown_0862B995[];
-extern const u8 gUnknown_0862B9AE[];
-extern const u8 gUnknown_0862B9C7[];
-extern const u8 gUnknown_0862B9E0[];
-extern const u8 gUnknown_0862B9F9[];
-extern const u8 gUnknown_0862B9FF[];
-extern const u8 gUnknown_0862BA05[];
-extern const u8 gUnknown_0862BA0B[];
-extern const u8 gUnknown_0862BA11[];
-extern const u8 gUnknown_0862BA17[];
-extern const u8 gUnknown_0862BA1D[];
-extern const u8 gUnknown_0862BA23[];
-extern const u8 gUnknown_0862BA29[];
-extern const u8 gUnknown_0862BA2F[];
-extern const u8 gUnknown_0862BA35[];
-extern const u8 gUnknown_0862BA3B[];
-extern const u8 gUnknown_0862BA41[];
-extern const u8 gUnknown_0862BA47[];
-extern const u8 gUnknown_0862BA4D[];
-extern const u8 gUnknown_0862BA53[];
-extern const u8 gUnknown_0862BA59[];
-extern const u8 gUnknown_0862BA5F[];
-extern const u8 gUnknown_0862BA65[];
-extern const u8 gUnknown_0862BA6B[];
-extern const u8 gUnknown_0862BA79[];
-extern const u8 gUnknown_0862BA84[];
-extern const u8 gUnknown_0862BA8F[];
-extern const u8 gUnknown_0862BA9A[];
-extern const u8 gUnknown_0862BAA3[];
-extern const u8 gUnknown_0862BAAE[];
-extern const u8 gUnknown_0862BAB9[];
-extern const u8 gUnknown_0862BAC4[];
-extern const u8 gUnknown_0862BACF[];
-extern const u8 gUnknown_0862BADA[];
+// Text Input Strings
+extern const u8 gText_EasyChatKeyboard_ABCDEFothers[];
+extern const u8 gText_EasyChatKeyboard_GHIJKL[];
+extern const u8 gText_EasyChatKeyboard_MNOPQRS[];
+extern const u8 gText_EasyChatKeyboard_TUVWXYZ[];
+extern const u8 gText_NamingScreenKeyboard_abcdef[];
+extern const u8 gText_NamingScreenKeyboard_ghijkl[];
+extern const u8 gText_NamingScreenKeyboard_mnopqrs[];
+extern const u8 gText_NamingScreenKeyboard_tuvwxyz[];
+extern const u8 gText_NamingScreenKeyboard_ABCDEF[];
+extern const u8 gText_NamingScreenKeyboard_GHIJKL[];
+extern const u8 gText_NamingScreenKeyboard_MNOPQRS[];
+extern const u8 gText_NamingScreenKeyboard_TUVWXYZ[];
+extern const u8 gText_NamingScreenKeyboard_01234[];
+extern const u8 gText_NamingScreenKeyboard_56789[];
+extern const u8 gText_NamingScreenKeyboard_Symbols1[];
+extern const u8 gText_NamingScreenKeyboard_Symbols2[];
+extern const u8 gText_UnionRoomChatKeyboard_ABCDE[];
+extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[];
+extern const u8 gText_UnionRoomChatKeyboard_KLMNO[];
+extern const u8 gText_UnionRoomChatKeyboard_PQRST[];
+extern const u8 gText_UnionRoomChatKeyboard_UVWXY[];
+extern const u8 gText_UnionRoomChatKeyboard_Z[];
+extern const u8 gText_UnionRoomChatKeyboard_01234Upper[];
+extern const u8 gText_UnionRoomChatKeyboard_56789Upper[];
+extern const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[];
+extern const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[];
+extern const u8 gText_UnionRoomChatKeyboard_abcde[];
+extern const u8 gText_UnionRoomChatKeyboard_fghij[];
+extern const u8 gText_UnionRoomChatKeyboard_klmno[];
+extern const u8 gText_UnionRoomChatKeyboard_pqrst[];
+extern const u8 gText_UnionRoomChatKeyboard_uvwxy[];
+extern const u8 gText_UnionRoomChatKeyboard_z[];
+extern const u8 gText_UnionRoomChatKeyboard_01234Lower[];
+extern const u8 gText_UnionRoomChatKeyboard_56789Lower[];
+extern const u8 gText_UnionRoomChatKeyboard_PunctuationLower[];
+extern const u8 gText_UnionRoomChatKeyboard_SymbolsLower[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji1[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji2[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji3[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji4[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji5[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji6[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji7[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji8[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji9[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji10[];
// E-Reader
extern const u8 gUnknown_085EDFD6[];
diff --git a/include/text.h b/include/text.h
deleted file mode 100644
index e37773475..000000000
--- a/include/text.h
+++ /dev/null
@@ -1,312 +0,0 @@
-#ifndef GUARD_TEXT_H
-#define GUARD_TEXT_H
-
-#define CHAR_SPACE 0x00
-#define CHAR_PLUS 0x2E
-#define CHAR_0 0xA1
-#define CHAR_1 0xA2
-#define CHAR_2 0xA3
-#define CHAR_3 0xA4
-#define CHAR_4 0xA5
-#define CHAR_5 0xA6
-#define CHAR_6 0xA7
-#define CHAR_7 0xA8
-#define CHAR_8 0xA9
-#define CHAR_9 0xAA
-#define CHAR_EXCL_MARK 0xAB
-#define CHAR_QUESTION_MARK 0xAC
-#define CHAR_PERIOD 0xAD
-#define CHAR_HYPHEN 0xAE
-#define CHAR_ELLIPSIS 0xB0
-#define CHAR_DBL_QUOT_LEFT 0xB1
-#define CHAR_DBL_QUOT_RIGHT 0xB2
-#define CHAR_SGL_QUOT_LEFT 0xB3
-#define CHAR_SGL_QUOT_RIGHT 0xB4
-#define CHAR_MALE 0xB5
-#define CHAR_FEMALE 0xB6
-#define CHAR_CURRENCY 0xB7
-#define CHAR_COMMA 0xB8
-#define CHAR_MULT_SIGN 0xB9
-#define CHAR_SLASH 0xBA
-#define CHAR_A 0xBB
-#define CHAR_B 0xBC
-#define CHAR_C 0xBD
-#define CHAR_D 0xBE
-#define CHAR_E 0xBF
-#define CHAR_F 0xC0
-#define CHAR_G 0xC1
-#define CHAR_H 0xC2
-#define CHAR_I 0xC3
-#define CHAR_J 0xC4
-#define CHAR_K 0xC5
-#define CHAR_L 0xC6
-#define CHAR_M 0xC7
-#define CHAR_N 0xC8
-#define CHAR_O 0xC9
-#define CHAR_P 0xCA
-#define CHAR_Q 0xCB
-#define CHAR_R 0xCC
-#define CHAR_S 0xCD
-#define CHAR_T 0xCE
-#define CHAR_U 0xCF
-#define CHAR_V 0xD0
-#define CHAR_W 0xD1
-#define CHAR_X 0xD2
-#define CHAR_Y 0xD3
-#define CHAR_Z 0xD4
-#define CHAR_a 0xD5
-#define CHAR_b 0xD6
-#define CHAR_c 0xD7
-#define CHAR_d 0xD8
-#define CHAR_e 0xD9
-#define CHAR_f 0xDA
-#define CHAR_g 0xDB
-#define CHAR_h 0xDC
-#define CHAR_i 0xDD
-#define CHAR_j 0xDE
-#define CHAR_k 0xDF
-#define CHAR_l 0xE0
-#define CHAR_m 0xE1
-#define CHAR_n 0xE2
-#define CHAR_o 0xE3
-#define CHAR_p 0xE4
-#define CHAR_q 0xE5
-#define CHAR_r 0xE6
-#define CHAR_s 0xE7
-#define CHAR_t 0xE8
-#define CHAR_u 0xE9
-#define CHAR_v 0xEA
-#define CHAR_w 0xEB
-#define CHAR_x 0xEC
-#define CHAR_y 0xED
-#define CHAR_z 0xEE
-#define CHAR_SPECIAL_F7 0xF7
-#define CHAR_SPECIAL_F8 0xF8
-#define CHAR_SPECIAL_F9 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
-#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
-#define PLACEHOLDER_BEGIN 0xFD // string placeholder
-#define CHAR_NEWLINE 0xFE
-#define EOS 0xFF // end of string
-
-#define EXT_CTRL_CODE_COLOR 0x1
-#define EXT_CTRL_CODE_HIGHLIGHT 0x2
-#define EXT_CTRL_CODE_SHADOW 0x3
-//
-#define EXT_CTRL_CODE_UNKNOWN_7 0x7
-//
-#define EXT_CTRL_CODE_CLEAR 0x11
-//
-#define EXT_CTRL_CODE_CLEAR_TO 0x13
-#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
-#define EXT_CTRL_CODE_JPN 0x15
-#define EXT_CTRL_CODE_ENG 0x16
-
-#define TEXT_COLOR_TRANSPARENT 0x0
-#define TEXT_COLOR_WHITE 0x1
-#define TEXT_COLOR_DARK_GREY 0x2
-// 0x3
-#define TEXT_COLOR_RED 0x4
-// 0x5
-#define TEXT_COLOR_GREEN 0x6
-// 0x7
-#define TEXT_COLOR_BLUE 0x8
-
-#define PLACEHOLDER_ID_UNKNOWN 0x0
-#define PLACEHOLDER_ID_PLAYER 0x1
-#define PLACEHOLDER_ID_STRING_VAR_1 0x2
-#define PLACEHOLDER_ID_STRING_VAR_2 0x3
-#define PLACEHOLDER_ID_STRING_VAR_3 0x4
-#define PLACEHOLDER_ID_KUN 0x5
-#define PLACEHOLDER_ID_RIVAL 0x6
-#define PLACEHOLDER_ID_VERSION 0x7
-#define PLACEHOLDER_ID_AQUA 0x8
-#define PLACEHOLDER_ID_MAGMA 0x9
-#define PLACEHOLDER_ID_ARCHIE 0xA
-#define PLACEHOLDER_ID_MAXIE 0xB
-#define PLACEHOLDER_ID_KYOGRE 0xC
-#define PLACEHOLDER_ID_GROUDON 0xD
-
-// battle placeholders are located in battle_message.h
-
-#define NUM_TEXT_PRINTERS 32
-
-#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 glyphId:4; // 0x14
- bool8 hasPrintBeenSpedUp:1;
- u8 unk:3;
- u8 downArrowDelay:5;
- u8 downArrowYPosIdx:2;
- bool8 hasGlyphIdBeenSet:1;
- u8 autoScrollDelay;
-};
-
-struct TextPrinterTemplate
-{
- const u8* currentChar;
- u8 windowId;
- u8 fontId;
- u8 x;
- u8 y;
- u8 currentX; // 0x8
- u8 currentY;
- u8 letterSpacing;
- u8 lineSpacing;
- u8 unk:4; // 0xC
- u8 fgColor:4;
- u8 bgColor:4;
- u8 shadowColor:4;
-};
-
-struct TextPrinter
-{
- struct TextPrinterTemplate printerTemplate;
-
- void (*callback)(struct TextPrinterTemplate *, u16); // 0x10
-
- union
-#if !MODERN
- __attribute__((packed))
-#endif
- {
- struct TextPrinterSubStruct sub;
- u8 fields[7];
- } subUnion;
-
- u8 active;
- u8 state; // 0x1C
- u8 textSpeed;
- u8 delayCounter;
- u8 scrollDistance;
- u8 minLetterSpacing; // 0x20
- u8 japanese;
-};
-
-struct FontInfo
-{
- u16 (*fontFunction)(struct TextPrinter *x);
- u8 maxLetterWidth;
- u8 maxLetterHeight;
- u8 letterSpacing;
- u8 lineSpacing;
- u8 unk:4;
- u8 fgColor:4;
- u8 bgColor:4;
- u8 shadowColor:4;
-};
-
-extern const struct FontInfo *gFonts;
-
-struct GlyphWidthFunc
-{
- u32 fontId;
- u32 (*func)(u16 glyphId, bool32 isJapanese);
-};
-
-struct KeypadIcon
-{
- u16 tileOffset;
- u8 width;
- u8 height;
-};
-
-typedef struct {
- bool8 canABSpeedUpPrint:1;
- bool8 useAlternateDownArrow:1;
- bool8 autoScroll:1;
- bool8 forceMidTextSpeed:1;
-} TextFlags;
-
-struct Struct_03002F90
-{
- u32 unk0[8];
- u32 unk20[8];
- u32 unk40[8];
- u32 unk60[8];
- u8 unk80;
- u8 unk81;
-};
-
-extern TextFlags gTextFlags;
-
-extern u8 gUnknown_03002F84;
-extern struct Struct_03002F90 gUnknown_03002F90;
-
-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));
-bool16 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
-void RunTextPrinters(void);
-bool16 IsTextPrinterActive(u8 id);
-u32 RenderFont(struct TextPrinter *textPrinter);
-void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor);
-void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor);
-void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor);
-void DecompressGlyphTile(const void *src_, void *dest_);
-u8 GetLastTextColor(u8 colorType);
-void CopyGlyphToWindow(struct TextPrinter *x);
-void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
-u8 GetMenuCursorDimensionByFont(u8, u8);
-
-u16 Font0Func(struct TextPrinter *textPrinter);
-u16 Font1Func(struct TextPrinter *textPrinter);
-u16 Font2Func(struct TextPrinter *textPrinter);
-u16 Font3Func(struct TextPrinter *textPrinter);
-u16 Font4Func(struct TextPrinter *textPrinter);
-u16 Font5Func(struct TextPrinter *textPrinter);
-u16 Font7Func(struct TextPrinter *textPrinter);
-u16 Font8Func(struct TextPrinter *textPrinter);
-
-void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
-void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
-void TextPrinterClearDownArrow(struct TextPrinter *textPrinter);
-bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter);
-bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
-bool16 TextPrinterWait(struct TextPrinter *textPrinter);
-void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);
-u16 RenderText(struct TextPrinter *textPrinter);
-u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
-u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
-s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
-u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
-u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
-u8 GetKeypadIconTileOffset(u8 keypadIconId);
-u8 GetKeypadIconWidth(u8 keypadIconId);
-u8 GetKeypadIconHeight(u8 keypadIconId);
-void SetDefaultFontsPointer(void);
-u8 GetFontAttribute(u8 fontId, u8 attributeId);
-u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
-void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese);
-void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese);
-void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese);
-void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese);
-void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
-void DecompressGlyphFont9(u16 glyphId);
-
-// unk_text_util_2.c
-u16 Font6Func(struct TextPrinter *textPrinter);
-u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
-
-#endif // GUARD_TEXT_H
diff --git a/include/trade.h b/include/trade.h
index 0c95e1e81..72a04ed21 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -2,25 +2,26 @@
#define GUARD_TRADE_H
#include "link_rfu.h"
+#include "constants/trade.h"
// Exported type declarations
// Exported RAM declarations
-extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
-extern u8 gUnknown_02032298[2];
+extern struct MailStruct gTradeMail[PARTY_SIZE];
+extern u8 gSelectedTradeMonPositions[2];
// Exported ROM declarations
-extern const struct WindowTemplate gUnknown_0833900C;
+extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
-s32 sub_807A728(void);
-void sub_80773AC(void);
-void sub_807AE50(void);
-int sub_807A8D0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
-int sub_807A7E0(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
-int sub_807A918(struct Pokemon*, u16);
-void sub_807B140(void);
-void sub_807B154(void);
-void sub_807F19C(void);
-void sub_807F1A8(u8, const u8 *, u8);
+s32 GetGameProgressForLinkTrade(void);
+void CB2_StartCreateTradeMenu(void);
+void CB2_LinkTrade(void);
+int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
+int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
+int CanSpinTradeMon(struct Pokemon*, u16);
+void InitTradeSequenceBgGpuRegs(void);
+void LinkTradeDrawWindow(void);
+void InitTradeBg(void);
+void DrawTextOnTradeWindow(u8, const u8 *, u8);
#endif //GUARD_TRADE_H
diff --git a/include/trainer_hill.h b/include/trainer_hill.h
index 31480287a..a592ef580 100644
--- a/include/trainer_hill.h
+++ b/include/trainer_hill.h
@@ -57,7 +57,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
void InitTrainerHillBattleStruct(void);
void FreeTrainerHillBattleStruct(void);
void CopyTrainerHillTrainerText(u8 which, u16 trainerId);
-bool8 sub_81D5C18(void);
+bool8 InTrainerHillChallenge(void);
void nullsub_129(void);
void PrintOnTrainerHillRecordsWindow(void);
void sub_81D5DF8(void);
diff --git a/include/trainer_see.h b/include/trainer_see.h
index a9b92d71b..daf9d0298 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -9,11 +9,11 @@ struct ApproachingTrainer
u8 taskId;
};
-extern u16 gUnknown_03006080;
-extern u8 gUnknown_03006084[4];
+extern u16 gWhichTrainerToFaceAfterBattle;
+extern u8 gPostBattleMovementScript[4];
extern struct ApproachingTrainer gApproachingTrainers[2];
extern u8 gNoOfApproachingTrainers;
-extern u8 gUnknown_030060AC;
+extern bool8 gTrainerApproachedPlayer;
extern u8 gApproachingTrainerId;
bool8 CheckForTrainersWantingBattle(void);
@@ -25,6 +25,6 @@ u8 FldEff_QuestionMarkIcon(void);
u8 FldEff_HeartIcon(void);
u8 GetCurrentApproachingTrainerEventObjectId(void);
u8 GetChosenApproachingTrainerEventObjectId(u8 arrayId);
-void sub_80B4808(void);
+void PlayerFaceTrainerAfterBattle(void);
#endif // GUARD_TRAINER_SEE_H
diff --git a/include/tv.h b/include/tv.h
index ec7ac1e89..8f697afe9 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -12,12 +12,12 @@ void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u1
void sub_80EE8C8(u16 winStreak, u8 facility);
void DoTVShow(void);
void DoTVShowInSearchOfTrainers(void);
-void sub_80EDCE8(void);
+void TryPutTreasureInvestigatorsOnAir(void);
void sub_80EE2CC(void);
void sub_80EE72C(void);
-void sub_80EED10(void);
-void sub_80EED34(void);
-void sub_80EED60(u16 delta);
+void IncrementDailyPlantedBerries(void);
+void IncrementDailyPickedBerries(void);
+void IncrementDailyBattlePoints(u16 delta);
void sub_80F01B8(void);
void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx);
void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
@@ -36,10 +36,10 @@ void sub_80EDA80(void);
void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
void sub_80F0BB8(void);
void sub_80ED950(bool8 flag);
-void sub_80EEC80(void);
-void sub_80EECA4(void);
-void sub_80EECC8(void);
-void sub_80EECEC(void);
+void IncrementDailySlotsUses(void);
+void IncrementDailyRouletteUses(void);
+void IncrementDailyWildBattles(void);
+void IncrementDailyBerryBlender(void);
void sub_80F1208(TVShow *shows);
void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
void sub_80F14F8(TVShow *shows);
diff --git a/include/union_room.h b/include/union_room.h
index facc63986..54f09cbeb 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -135,7 +135,7 @@ union UnkUnion_Main
struct UnkStruct_URoom *uRoom;
};
-struct TradeUnkStruct
+struct UnionRoomTrade
{
u16 field_0;
u16 type;
@@ -156,8 +156,8 @@ extern u8 gUnknown_02022C2C;
extern union UnkUnion_Main gUnknown_02022C30;
extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
-extern u16 gUnknown_02022C3C;
-extern u8 gUnknown_02022C3E;
+extern u16 gUnionRoomOfferedSpecies;
+extern u8 gUnionRoomRequestedMonType;
// Exported ROM declarations
diff --git a/include/union_room_chat.h b/include/union_room_chat.h
index 17e482525..e7ca9d46e 100755
--- a/include/union_room_chat.h
+++ b/include/union_room_chat.h
@@ -1,6 +1,17 @@
#ifndef GUARD_UNION_ROOM_CHAT_H
#define GUARD_UNION_ROOM_CHAT_H
+enum
+{
+ UNION_ROOM_KB_PAGE_UPPER,
+ UNION_ROOM_KB_PAGE_LOWER,
+ UNION_ROOM_KB_PAGE_EMOJI,
+ UNION_ROOM_KB_PAGE_COUNT
+};
+
+#define UNION_ROOM_KB_ROW_COUNT 10
+
+
void sub_801DD98(void);
void copy_strings_to_sav1(void);
diff --git a/include/window.h b/include/window.h
deleted file mode 100644
index 10e447789..000000000
--- a/include/window.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef GUARD_WINDOW_H
-#define GUARD_WINDOW_H
-
-#define PIXEL_FILL(num) ((num) | ((num) << 4))
-
-enum
-{
- WINDOW_BG,
- WINDOW_TILEMAP_LEFT,
- WINDOW_TILEMAP_TOP,
- WINDOW_WIDTH,
- WINDOW_HEIGHT,
- WINDOW_PALETTE_NUM,
- WINDOW_BASE_BLOCK,
- WINDOW_TILE_DATA
-};
-
-struct WindowTemplate
-{
- u8 bg;
- u8 tilemapLeft;
- u8 tilemapTop;
- u8 width;
- u8 height;
- u8 paletteNum;
- u16 baseBlock;
-};
-
-#define DUMMY_WIN_TEMPLATE \
-{ \
- 0xFF, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
-}
-
-struct Window
-{
- struct WindowTemplate window;
- u8 *tileData;
-};
-
-bool16 InitWindows(const struct WindowTemplate *templates);
-u16 AddWindow(const struct WindowTemplate *template);
-int AddWindowWithoutTileMap(const struct WindowTemplate *template);
-void RemoveWindow(u8 windowId);
-void FreeAllWindowBuffers(void);
-void CopyWindowToVram(u8 windowId, u8 mode);
-void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h);
-void PutWindowTilemap(u8 windowId);
-void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette);
-void ClearWindowTilemap(u8 windowId);
-void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
-void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height);
-void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
-void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
-void CopyToWindowPixelBuffer(u8 windowId, const void *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));
-bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value);
-u32 GetWindowAttribute(u8 windowId, u8 attributeId);
-u16 AddWindow8Bit(const struct WindowTemplate *template);
-void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue);
-void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
-void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum);
-void CopyWindowToVram8Bit(u8 windowId, u8 mode);
-
-extern struct Window gWindows[];
-extern void* gUnknown_03002F70[];
-extern u32 filler_03002F58;
-extern u32 filler_03002F5C;
-extern u32 filler_03002F64;
-
-#endif // GUARD_WINDOW_H