summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm.inc.h74
-rw-r--r--include/berry_tag_screen.h6
-rw-r--r--include/config.h25
-rw-r--r--include/decompress.h1
-rw-r--r--include/global.h24
-rw-r--r--include/hold_effects.h72
-rw-r--r--include/link.h2
-rw-r--r--include/load_save.h17
-rw-r--r--include/mail.h15
-rw-r--r--include/main.h1
-rw-r--r--include/menu.h6
-rw-r--r--include/metatile_behavior.h136
-rw-r--r--include/metatile_behaviors.h173
-rw-r--r--include/money.h17
-rw-r--r--include/mystery_event_menu.h6
-rw-r--r--include/pokemon.h19
-rw-r--r--include/rom4.h2
-rw-r--r--include/save_failed_screen.h6
-rw-r--r--include/sprite.h3
-rw-r--r--include/start_menu.h2
-rw-r--r--include/text.h3
21 files changed, 549 insertions, 61 deletions
diff --git a/include/asm.inc.h b/include/asm.inc.h
index f533d8729..bfa37e058 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -11,7 +11,6 @@ void sub_8032AA8(u8 index, int i);
// asm/rom_803D1FC.o
u16 SpeciesToNationalPokedexNum(u16);
-u32 SpeciesToCryId(u32);
void DrawSpindaSpots(u16, u32, void *, u8);
u8 sub_803FC58(u16);
void AdjustFriendship(struct Pokemon *, u8);
@@ -34,42 +33,9 @@ u8 daycare_relationship_score_from_savegame(void);
// asm/rom_804373C.o
void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u16 s4);
-// asm/load_save.o
-void CheckForFlashMemory(void);
-int sub_80479F8();
-void sub_8047A04();
-void sub_8047A1C(void);
-void sub_8047A34(void);
-void save_serialize_game(void);
-void save_deserialize_game();
-
// asm/berry_blender.o
void sub_80516C4(u8, u16);
-// asm/metatile_behavior.o
-bool8 MetatileBehavior_IsSandOrDeepSand(char);
-bool8 is_tile_x69_2_warp_door(u8);
-u8 MetatileBehavior_IsDoor(u8);
-bool8 MetatileBehavior_IsLadder(u8);
-u8 sub_8056F08(u8);
-bool8 sub_8056F24(u8);
-u8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8);
-bool8 MetatileBehavior_IsEastArrowWarp(u8);
-bool8 MetatileBehavior_IsWestArrowWarp(u8);
-bool8 MetatileBehavior_IsNorthArrowWarp(u8);
-bool8 MetatileBehavior_IsSouthArrowWarp(u8);
-bool8 MetatileBehavior_IsTallGrass(char);
-bool8 MetatileBehavior_IsLongGrass(char);
-u8 MetatileBehavior_IsBridge(u8);
-u8 sub_8057450(u8);
-u8 MetatileBehavior_IsLandWildEncounter(u8);
-u8 MetatileBehavior_IsWaterWildEncounter(u8);
-bool8 sub_80574C4(char);
-bool8 sub_80574D8(char);
-bool8 sub_8057568(char);
-bool8 sub_805759C(u8);
-bool8 MetatileBehavior_IsSurfableFishableWater(u8);
-
// src/field_door.o
void FieldSetDoorOpened(u32, u32);
void FieldSetDoorClosed(u32, u32);
@@ -100,6 +66,7 @@ void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *);
void sub_805BCF0(u8, u8, u8, u8);
void sub_805BD48(u8, u8, u8);
void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
+void gpu_pal_allocator_reset__manage_upper_four(void);
void npc_coords_shift(struct MapObject *pObject, s16 x, s16 y);
void sub_805C0F8(u8, u8, u8, s16, s16);
void npc_coords_shift_still(struct MapObject *pObject);
@@ -249,11 +216,17 @@ void sub_808AB90(void);
// asm/rom_8094928.o
void sub_80961D8(void);
+u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4);
+u16 sub_809D4A8(u16);
+void sub_809D510(struct Sprite *);
+void sub_809D580(u16);
+void sub_809D608(u16);
u8 pokemon_ailments_get_primary(u32);
u8 exec_movement(u8, u8, u8, void *);
bool8 sub_80A212C(u8, u8, u8);
void sub_80A2178(void);
void sub_80A2B18(void);
+u16 sub_80A2D64(u16, u8 *);
void AddMapNamePopUpWindowTask(void);
void HideMapNamePopUpWindow();
@@ -261,12 +234,22 @@ void HideMapNamePopUpWindow();
void sub_80A3684(void);
void sub_80A3714(void);
void sub_80A53F8(void);
+void sub_80A5B40(void);
void sub_80A68CC();
+u8 sub_80A7D8C(u8 berry, int i, int i1);
+void sub_80A7DD4(void);
+u8 sub_80A7E5C(u8);
+
+// src/matsuda_debug_menu.o
+void sub_80AA280(u8);
+void sub_80AA5E8(u8);
+void sub_80AA658(u8);
// asm/contest.o
void sub_80AB1B0(void);
void sub_80AE098(u8);
void sub_80AE398(u8, u8);
+u32 sub_80AE770(u8, u8);
void sub_80AE82C(u8);
void sub_80AF668(void);
void sub_80B0F28(u8);
@@ -289,15 +272,6 @@ void *picbox_close(void);
// asm/naming_screen.o
void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4);
-// asm/money.o
-bool8 IsEnoughMoney(u32, u32);
-void sub_80B79B8(u32 *, u32);
-void sub_80B79E0(u32 *, u32);
-void sub_80B7AEC(u32, u8 left, u8 top);
-void sub_80B7BEC(u32, u8, u8);
-void sub_80B7C14(u32, u8, u8);
-void RemoveMoneyLabelObject(u8, u8);
-
// asm/secret_base.o
void sub_80BB5B4(void);
u8 sub_80BBB24(void);
@@ -373,6 +347,11 @@ void sub_80EBA5C(void);
void sub_80F7AA4(void);
void sub_80F7F30(void);
+// asm/menu_helpers.o
+bool8 sub_80F9344(void);
+void sub_80F9368(void);
+void sub_80F9438(void);
+
// asm/script_pokemon_util_80F99CC.o
void sub_80F99CC(void);
@@ -417,6 +396,7 @@ void sub_811AAD8(u8);
u8 sub_811AAE8(void);
// asm/mystery_event_script.o
+u32 sub_812613C(u8 *);
void sub_8126160(u8);
u16 sub_8126338(void);
@@ -467,12 +447,6 @@ void sub_813E930(/*TODO: arg types*/);
void sub_813EB4C(u8);
void sub_813EDBC(/*TODO: arg types*/);
-// asm/mystery_event_menu.o
-void CB2_InitMysteryEventMenu(void);
-
-// asm/save_failed_screen.o
-void fullscreen_save_activate();
-
// asm/rom_81473B8.o
bool8 sub_81474C8(void);
void sub_8147514(void);
@@ -486,6 +460,7 @@ u8 intro_create_brendan_sprite(/*TODO: arg types*/);
u8 intro_create_may_sprite(/*TODO: arg types*/);
u8 intro_create_latios_sprite(/*TODO: arg types*/);
u8 intro_create_latias_sprite(/*TODO: arg types*/);
+void sub_814A568(u8*);
// src/agb_flash.o
u16 ReadFlashId(void);
@@ -493,3 +468,4 @@ u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);
u32 ProgramFlashSectorAndVerify();
u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n);
+u16 IdentifyFlash(void);
diff --git a/include/berry_tag_screen.h b/include/berry_tag_screen.h
new file mode 100644
index 000000000..60932ff80
--- /dev/null
+++ b/include/berry_tag_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_TAG_SCREEN_H
+#define GUARD_BERRY_TAG_SCREEN_H
+
+void BerryTagScreen_814625C(u8 taskId);
+
+#endif // GUARD_BERRY_TAG_SCREEN_H
diff --git a/include/config.h b/include/config.h
new file mode 100644
index 000000000..5ee062006
--- /dev/null
+++ b/include/config.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_CONFIG_H
+#define GUARD_CONFIG_H
+
+#ifndef REVISION
+#define REVISION 0
+#endif
+
+#if REVISION == 2
+#define BUGFIX_BERRY
+#endif
+
+#if REVISION >= 1
+#define BUGFIX_GLYPHWIDTH
+#define BUGFIX_SAVEFAILEDSCREEN1
+#endif
+
+// #define BUGFIX_SAVEFAILEDSCREEN2
+
+// European editions of Ruby/Sapphire and all editions of Emerald have this fix.
+// #define BUGFIX_TRAINERAPPROACH
+
+// Fixed in Emerald.
+// #define BUGFIX_SETMONIVS
+
+#endif // GUARD_CONFIG_H
diff --git a/include/decompress.h b/include/decompress.h
index 382e6d76a..a9bdd341b 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -12,5 +12,6 @@ void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, vo
void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f);
void sub_800D334(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g);
void sub_800D378(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g, u32 h);
+void Unused_LZDecompressWramIndirect(const void **src, void *dest);
#endif // GUARD_DECOMPRESS_H
diff --git a/include/global.h b/include/global.h
index ce2267642..66b6b6b50 100644
--- a/include/global.h
+++ b/include/global.h
@@ -2,10 +2,7 @@
#define GUARD_GLOBAL_H
#include "gba/gba.h"
-
-#ifndef REVISION
-#define REVISION 0
-#endif
+#include "config.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -29,6 +26,14 @@ enum
VERSION_RUBY = 2,
};
+enum LanguageId {
+ LANGUAGE_JAPANESE = 1,
+ LANGUAGE_ENGLISH = 2,
+ LANGUAGE_GERMAN = 5,
+};
+
+#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+
enum
{
MALE,
@@ -169,6 +174,11 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
+struct SaveBlock1_2B4C_Struct
+{
+ u8 filler[0x24];
+};
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -230,7 +240,9 @@ struct SaveBlock1
/*0x2B0D*/ u8 outbreakPokemonProbability;
/*0x2B0E*/ u8 filler_2B0E[0xE];
/*0x2B1C*/ u16 unk2B1C[4];
- /*0x2B24*/ u8 filler_2B24[0x2B0];
+ /*0x2B24*/ u8 filler_2B24[0x28];
+ /*0x2B4C*/ struct SaveBlock1_2B4C_Struct unkSave[16];
+ /*0x2D8C*/ u8 filler_2D8C[0x48];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x100];
/*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
@@ -284,7 +296,7 @@ struct SaveBlock2
{
/*0x00*/ u8 playerName[8];
/*0x08*/ u8 playerGender; // MALE, FEMALE
- /*0x09*/ u8 sb2_field_9;
+ /*0x09*/ u8 specialSaveWarp;
/*0x0A*/ u8 playerTrainerId[4];
/*0x0E*/ u16 playTimeHours;
/*0x10*/ u8 playTimeMinutes;
diff --git a/include/hold_effects.h b/include/hold_effects.h
new file mode 100644
index 000000000..b653f5a92
--- /dev/null
+++ b/include/hold_effects.h
@@ -0,0 +1,72 @@
+#ifndef GUARD_HOLD_EFFECTS_H
+#define GUARD_HOLD_EFFECTS_H
+
+#define HOLD_EFFECT_NONE 0
+#define HOLD_EFFECT_RESTORE_HP 1
+#define HOLD_EFFECT_CURE_PAR 2
+#define HOLD_EFFECT_CURE_SLP 3
+#define HOLD_EFFECT_CURE_PSN 4
+#define HOLD_EFFECT_CURE_BRN 5
+#define HOLD_EFFECT_CURE_FRZ 6
+#define HOLD_EFFECT_RESTORE_PP 7
+#define HOLD_EFFECT_CURE_CONFUSION 8
+#define HOLD_EFFECT_CURE_STATUS 9
+#define HOLD_EFFECT_CONFUSE_SPICY 10
+#define HOLD_EFFECT_CONFUSE_DRY 11
+#define HOLD_EFFECT_CONFUSE_SWEET 12
+#define HOLD_EFFECT_CONFUSE_BITTER 13
+#define HOLD_EFFECT_CONFUSE_SOUR 14
+#define HOLD_EFFECT_ATTACK_UP 15
+#define HOLD_EFFECT_DEFENSE_UP 16
+#define HOLD_EFFECT_SPEED_UP 17
+#define HOLD_EFFECT_SP_ATTACK_UP 18
+#define HOLD_EFFECT_SP_DEFENSE_UP 19
+#define HOLD_EFFECT_CRITICAL_UP 20
+#define HOLD_EFFECT_RANDOM_STAT_UP 21
+#define HOLD_EFFECT_EVASION_UP 22
+#define HOLD_EFFECT_RESTORE_STATS 23
+#define HOLD_EFFECT_MACHO_BRACE 24
+#define HOLD_EFFECT_EXP_SHARE 25
+#define HOLD_EFFECT_QUICK_CLAW 26
+#define HOLD_EFFECT_HAPPINESS_UP 27
+#define HOLD_EFFECT_CURE_ATTRACT 28
+#define HOLD_EFFECT_CHOICE_BAND 29
+#define HOLD_EFFECT_FLINCH 30
+#define HOLD_EFFECT_BUG_POWER 31
+#define HOLD_EFFECT_DOUBLE_PRIZE 32
+#define HOLD_EFFECT_REPEL 33
+#define HOLD_EFFECT_SOUL_DEW 34
+#define HOLD_EFFECT_DEEP_SEA_TOOTH 35
+#define HOLD_EFFECT_DEEP_SEA_SCALE 36
+#define HOLD_EFFECT_CAN_ALWAYS_RUN 37
+#define HOLD_EFFECT_PREVENT_EVOLVE 38
+#define HOLD_EFFECT_FOCUS_BAND 39
+#define HOLD_EFFECT_LUCKY_EGG 40
+#define HOLD_EFFECT_SCOPE_LENS 41
+#define HOLD_EFFECT_STEEL_POWER 42
+#define HOLD_EFFECT_LEFTOVERS 43
+#define HOLD_EFFECT_DRAGON_SCALE 44
+#define HOLD_EFFECT_LIGHT_BALL 45
+#define HOLD_EFFECT_GROUND_POWER 46
+#define HOLD_EFFECT_ROCK_POWER 47
+#define HOLD_EFFECT_GRASS_POWER 48
+#define HOLD_EFFECT_DARK_POWER 49
+#define HOLD_EFFECT_FIGHTING_POWER 50
+#define HOLD_EFFECT_ELECTRIC_POWER 51
+#define HOLD_EFFECT_WATER_POWER 52
+#define HOLD_EFFECT_FLYING_POWER 53
+#define HOLD_EFFECT_POISON_POWER 54
+#define HOLD_EFFECT_ICE_POWER 55
+#define HOLD_EFFECT_GHOST_POWER 56
+#define HOLD_EFFECT_PSYCHIC_POWER 57
+#define HOLD_EFFECT_FIRE_POWER 58
+#define HOLD_EFFECT_DRAGON_POWER 59
+#define HOLD_EFFECT_NORMAL_POWER 60
+#define HOLD_EFFECT_UP_GRADE 61
+#define HOLD_EFFECT_SHELL_BELL 62
+#define HOLD_EFFECT_LUCKY_PUNCH 63
+#define HOLD_EFFECT_METAL_POWDER 64
+#define HOLD_EFFECT_THICK_CLUB 65
+#define HOLD_EFFECT_STICK 66
+
+#endif // GUARD_HOLD_EFFECTS_H
diff --git a/include/link.h b/include/link.h
index 694339164..a5d30a473 100644
--- a/include/link.h
+++ b/include/link.h
@@ -124,11 +124,13 @@ struct Link
extern struct Link gLink;
extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS];
+extern u16 gLinkType;
extern u32 gLinkStatus;
extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
extern u16 word_3002910[];
+extern bool8 gReceivedRemoteLinkPlayers;
void Task_DestroySelf(u8);
void sub_8007270(u8);
diff --git a/include/load_save.h b/include/load_save.h
new file mode 100644
index 000000000..5ca52a2fc
--- /dev/null
+++ b/include/load_save.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_LOAD_SAVE_H
+#define GUARD_LOAD_SAVE_H
+
+void CheckForFlashMemory(void);
+bool32 GetSecretBase2Field_9(void);
+void ClearSecretBase2Field_9(void);
+void SetSecretBase2Field_9(void);
+void SetSecretBase2Field_9_AndHideBG(void);
+void ClearSecretBase2Field_9_2(void);
+void SavePlayerParty(void);
+void LoadPlayerParty(void);
+void SaveSerializedGame(void);
+void LoadSerializedGame(void);
+void LoadPlayerData(void);
+void SavePlayerData(void);
+
+#endif // GUARD_LOAD_SAVE_H
diff --git a/include/mail.h b/include/mail.h
new file mode 100644
index 000000000..a579dc458
--- /dev/null
+++ b/include/mail.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_MAIL_H
+#define GUARD_MAIL_H
+
+#include "main.h"
+
+struct MailStruct {
+ /* 0x00 */ u16 words[9];
+ /* 0x12 */ u8 var12[12];
+ /* 0x1E */ u16 var1E;
+ /* 0x20 */ u16 var20;
+};
+
+void sub_80F890C(struct MailStruct *arg0, MainCallback arg1, bool8 arg2);
+
+#endif // GUARD_MAIL_H
diff --git a/include/main.h b/include/main.h
index 054bba901..5d8f8b68a 100644
--- a/include/main.h
+++ b/include/main.h
@@ -40,6 +40,7 @@ struct Main
u8 state;
u8 oamLoadDisabled:1;
+ u8 inBattle:1;
};
extern u8 gUnknown_3001764;
diff --git a/include/menu.h b/include/menu.h
index 9592fc291..7b3525461 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -6,9 +6,11 @@
struct MenuAction
{
u8 *text;
- u8 (*func)(void);
+ u8 (*func)();
};
+void sub_8071C20(void);
+void AppendToList(u8 *list, u8 *pindex, u32 value);
void InitMenuWindow(const struct WindowConfig *);
void MultistepInitMenuWindowBegin(const struct WindowConfig *);
bool32 MultistepInitMenuWindowContinue(void);
@@ -39,7 +41,7 @@ s8 ProcessMenuInput(void);
s8 ProcessMenuInputNoWrap(void);
u8 MoveMenuCursor3(s8);
u8 MoveMenuCursor4(s8);
-void sub_807274C(u8, u8, u8, u8, u8 * const [][2], u8, u32);
+void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32);
s8 sub_80727CC(void);
u8 sub_807288C(u8);
void PrintMenuItems(u8, u8, u8, const struct MenuAction[]);
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
new file mode 100644
index 000000000..34b660054
--- /dev/null
+++ b/include/metatile_behavior.h
@@ -0,0 +1,136 @@
+#ifndef GUARD_METATILE_BEHAVIOR
+#define GUARD_METATILE_BEHAVIOR
+
+bool8 sub_8056D9C(u8);
+bool8 sub_8056DA0(u8);
+bool8 MetatileBehavior_IsJumpEast(u8);
+bool8 MetatileBehavior_IsJumpWest(u8);
+bool8 MetatileBehavior_IsJumpNorth(u8);
+bool8 MetatileBehavior_IsJumpSouth(u8);
+bool8 sub_8056E14(u8);
+bool8 MetatileBehavior_IsSandOrDeepSand(u8);
+bool8 MetatileBehavior_IsDeepSand(u8);
+bool8 MetatileBehavior_IsReflective(u8);
+bool8 MetatileBehavior_IsIce(u8);
+bool8 is_tile_x69_2_warp_door(u8);
+bool8 MetatileBehavior_IsDoor(u8);
+bool8 MetatileBehavior_IsEscalator(u8);
+bool8 unref_sub_8056EE0(u8);
+bool8 MetatileBehavior_IsLadder(u8);
+bool8 sub_8056F08(u8);
+bool8 sub_8056F24(u8);
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8);
+bool8 MetatileBehavior_IsEastArrowWarp(u8);
+bool8 MetatileBehavior_IsWestArrowWarp(u8);
+bool8 MetatileBehavior_IsNorthArrowWarp(u8);
+bool8 MetatileBehavior_IsSouthArrowWarp(u8);
+bool8 MetatileBehavior_IsArrowWarp(u8);
+bool8 sub_8056FFC(u8);
+bool8 MetatileBehavior_IsIce_2(u8);
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8);
+bool8 MetatileBehavior_0x05(u8);
+bool8 MetatileBehavior_IsWalkNorth(u8);
+bool8 MetatileBehavior_IsWalkSouth(u8);
+bool8 MetatileBehavior_IsWalkWest(u8);
+bool8 MetatileBehavior_IsWalkEast(u8);
+bool8 MetatileBehavior_IsNorthwardCurrent(u8);
+bool8 MetatileBehavior_IsSouthwardCurrent(u8);
+bool8 MetatileBehavior_IsWestwardCurrent(u8);
+bool8 MetatileBehavior_IsEastwardCurrent(u8);
+bool8 MetatileBehavior_IsSlideNorth(u8);
+bool8 MetatileBehavior_IsSlideSouth(u8);
+bool8 MetatileBehavior_IsSlideWest(u8);
+bool8 MetatileBehavior_IsSlideEast(u8);
+bool8 MetatileBehavior_IsCounter(u8);
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8, u8);
+bool8 MetatileBehavior_IsPC(u8);
+bool8 is_tile_x84(u8);
+bool8 sub_80571C0(u8);
+bool8 sub_80571EC(u8);
+bool8 sub_805720C(u8);
+bool8 is_tile_x98(u8);
+bool8 sub_8057238(u8);
+bool8 sub_805724C(u8);
+bool8 unref_sub_8057260(u8);
+bool8 sub_8057274(u8);
+bool8 sub_8057288(u8);
+bool8 sub_805729C(u8);
+bool8 sub_80572B0(u8);
+bool8 unref_sub_80572C4(u8);
+bool8 sub_80572D8(u8);
+bool8 sub_80572EC(u8);
+bool8 sub_8057300(u8);
+bool8 sub_8057314(u8);
+bool8 sub_8057328(u8);
+bool8 sub_805733C(u8);
+bool8 sub_8057350(u8);
+bool8 sub_8057364(u8);
+bool8 sub_8057378(u8);
+bool8 sub_805738C(u8);
+bool8 MetatileBehavior_HasRipples(u8);
+bool8 MetatileBehavior_IsPuddle(u8);
+bool8 MetatileBehavior_IsTallGrass(u8);
+bool8 MetatileBehavior_IsLongGrass(u8);
+bool8 MetatileBehavior_IsBerryTreeSoil(u8);
+bool8 MetatileBehavior_IsAsh(u8);
+bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8);
+bool8 MetatileBehavior_IsBridge(u8);
+u8 sub_8057450(u8);
+bool8 MetatileBehavior_IsLandWildEncounter(u8);
+bool8 MetatileBehavior_IsWaterWildEncounter(u8);
+bool8 sub_80574C4(u8);
+bool8 sub_80574D8(u8);
+bool8 sub_80574EC(u8);
+bool8 sub_805750C(u8);
+bool8 MetatileBehavior_IsShallowFlowingWater(u8);
+bool8 sub_8057540(u8);
+bool8 sub_8057554(u8);
+bool8 sub_8057568(u8);
+bool8 unref_sub_8057584(u8);
+bool8 sub_805759C(u8);
+bool8 MetatileBehavior_IsEastBlocked(u8);
+bool8 MetatileBehavior_IsWestBlocked(u8);
+bool8 MetatileBehavior_IsNorthBlocked(u8);
+bool8 MetatileBehavior_IsSouthBlocked(u8);
+bool8 MetatileBehavior_IsShortGrass(u8);
+bool8 MetatileBehavior_IsHotSprings(u8);
+bool8 MetatileBehavior_IsWaterfall(u8);
+bool8 MetatileBehavior_IsFortreeBridge(u8);
+bool8 sub_80576A0(u8);
+bool8 sub_80576B4(u8);
+bool8 sub_80576C8(u8);
+bool8 sub_80576DC(u8);
+bool8 MetatileBehavior_IsPacifidlogLog(u8);
+bool8 is_tile_x8C(u8);
+bool8 is_tile_x85(u8);
+bool8 is_tile_x8B(u8);
+bool8 is_tile_x8A(u8);
+bool8 is_tile_x87(u8);
+bool8 MetatileBehavior_0xBB(u8);
+bool8 MetatileBehavior_0xBC(u8);
+bool8 sub_8057798(u8);
+bool8 is_role_x68(u8);
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8);
+bool8 MetatileBehavior_IsSurfableFishableWater(u8);
+bool8 sub_8057804(u8);
+bool8 sub_8057818(u8);
+bool8 sub_805782C(u8);
+bool8 MetatileBehavior_IsMuddySlope(u8);
+bool8 MetatileBehavior_IsBumpySlope(u8);
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8);
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8);
+bool8 MetatileBehavior_IsVerticalRail(u8);
+bool8 MetatileBehavior_IsHorizontalRail(u8);
+bool8 MetatileBehavior_IsSeaweed(u8);
+bool8 MetatileBehavior_IsRunningDisallowed(u8);
+bool8 sub_80578F8(u8);
+bool8 sub_805791C(u8);
+bool8 sub_8057930(u8);
+bool8 sub_8057944(u8);
+bool8 sub_8057958(u8);
+bool8 sub_805796C(u8);
+bool8 sub_8057980(u8);
+bool8 sub_8057994(u8);
+bool8 sub_80579A8(u8);
+
+#endif // GUARD_METATILE_BEHAVIOR
diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h
new file mode 100644
index 000000000..ea705054e
--- /dev/null
+++ b/include/metatile_behaviors.h
@@ -0,0 +1,173 @@
+#ifndef GUARD_METATILE_BEHAVIORS
+#define GUARD_METATILE_BEHAVIORS
+
+#define MB_NORMAL 0x00
+#define MB_TALL_GRASS 0x02
+#define MB_LONG_GRASS 0x03
+#define MB_04 0x04
+#define MB_05 0x05
+#define MB_DEEP_SAND 0x06
+#define MB_SHORT_GRASS 0x07
+#define MB_CAVE 0x08
+#define MB_LONG_GRASS_SOUTH_EDGE 0x09
+#define MB_NO_RUNNING 0x0A
+#define MB_0B 0x0B
+#define MB_MOUNTAIN_TOP 0x0C
+#define MB_BATTLE_PYRAMID_WARP 0x0D
+#define MB_MOSSDEEP_GYM_WARP 0x0E
+#define MB_MT_PYRE_HOLE 0x0F
+#define MB_POND_WATER 0x10
+#define MB_SEMI_DEEP_WATER 0x11
+#define MB_DEEP_WATER 0x12
+#define MB_WATERFALL 0x13
+#define MB_SOOTOPOLIS_DEEP_WATER 0x14
+#define MB_OCEAN_WATER 0x15
+#define MB_PUDDLE 0x16
+#define MB_SHALLOW_WATER 0x17
+#define MB_18 0x18
+#define MB_NO_SURFACING 0x19
+#define MB_1A 0x1A
+#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
+#define MB_SHOAL_CAVE_ENTRANCE 0x1C
+#define MB_ICE 0x20
+#define MB_SAND 0x21
+#define MB_SEAWEED 0x22
+#define MB_ASH 0x24
+#define MB_25 0x25
+#define MB_THIN_ICE 0x26
+#define MB_CRACKED_ICE 0x27
+#define MB_HOT_SPRINGS 0x28
+#define MB_LAVARIDGE_GYM_B1F_WARP 0x29
+#define MB_SEAWEED_NO_SURFACING 0x2A
+#define MB_REFLECTION_UNDER_BRIDGE 0x2B
+#define MB_IMPASSABLE_EAST 0x30
+#define MB_IMPASSABLE_WEST 0x31
+#define MB_IMPASSABLE_NORTH 0x32
+#define MB_IMPASSABLE_SOUTH 0x33
+#define MB_IMPASSABLE_NORTHEAST 0x34
+#define MB_IMPASSABLE_NORTHWEST 0x35
+#define MB_IMPASSABLE_SOUTHEAST 0x36
+#define MB_IMPASSABLE_SOUTHWEST 0x37
+#define MB_JUMP_EAST 0x38
+#define MB_JUMP_WEST 0x39
+#define MB_JUMP_NORTH 0x3A
+#define MB_JUMP_SOUTH 0x3B
+#define MB_JUMP_SOUTHEAST 0x3E
+#define MB_JUMP_SOUTHWEST 0x3F
+#define MB_WALK_EAST 0x40
+#define MB_WALK_WEST 0x41
+#define MB_WALK_NORTH 0x42
+#define MB_WALK_SOUTH 0x43
+#define MB_SLIDE_EAST 0x44
+#define MB_SLIDE_WEST 0x45
+#define MB_SLIDE_NORTH 0x46
+#define MB_SLIDE_SOUTH 0x47
+#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
+#define MB_EASTWARD_CURRENT 0x50
+#define MB_WESTWARD_CURRENT 0x51
+#define MB_NORTHWARD_CURRENT 0x52
+#define MB_SOUTHWARD_CURRENT 0x53
+#define MB_NON_ANIMATED_DOOR 0x60
+#define MB_LADDER 0x61
+#define MB_EAST_ARROW_WARP 0x62
+#define MB_WEST_ARROW_WARP 0x63
+#define MB_NORTH_ARROW_WARP 0x64
+#define MB_SOUTH_ARROW_WARP 0x65
+#define MB_CRACKED_FLOOR_HOLE 0x66
+#define MB_AQUA_HIDEOUT_WARP 0x67
+#define MB_LAVARIDGE_GYM_1F_WARP 0x68
+#define MB_ANIMATED_DOOR 0x69
+#define MB_UP_ESCALATOR 0x6A
+#define MB_DOWN_ESCALATOR 0x6B
+#define MB_WATER_DOOR 0x6C
+#define MB_WATER_SOUTH_ARROW_WARP 0x6D
+#define MB_DEEP_SOUTH_WARP 0x6E
+#define MB_WARP_OR_BRIDGE 0x70
+#define MB_ROUTE120_NORTH_BRIDGE_1 0x72
+#define MB_ROUTE120_NORTH_BRIDGE_2 0x73
+#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74
+#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77
+#define MB_FORTREE_BRIDGE 0x78
+#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A
+#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B
+#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C
+#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D
+#define MB_ROUTE110_BRIDGE 0x7F
+#define MB_COUNTER 0x80
+#define MB_PC 0x83
+#define MB_84 0x84
+#define MB_REGION_MAP 0x85
+#define MB_TELEVISION 0x86
+#define MB_POKEBLOCK_FEEDER 0x87
+#define MB_SLOT_MACHINE 0x89
+#define MB_ROULETTE 0x8A
+#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B
+#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
+#define MB_8D 0x8D
+#define MB_8E 0x8E
+#define MB_QUESTIONNAIRE 0x8F
+#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90
+#define MB_91 0x91
+#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
+#define MB_93 0x93
+#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
+#define MB_95 0x95
+#define MB_SECRET_BASE_SPOT_TREE_1 0x96
+#define MB_97 0x97
+#define MB_SECRET_BASE_SPOT_SHRUB 0x98
+#define MB_99 0x99
+#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
+#define MB_9B 0x9B
+#define MB_SECRET_BASE_SPOT_TREE_2 0x9C
+#define MB_9D 0x9D
+#define MB_BERRY_TREE_SOIL 0xA0
+#define MB_SECRET_BASE_PC 0xB0
+#define MB_B1 0xB1
+#define MB_B2 0xB2
+#define MB_B3 0xB3
+#define MB_B4 0xB4
+#define MB_B5 0xB5
+#define MB_B6 0xB6
+#define MB_B7 0xB7
+#define MB_B8 0xB8
+#define MB_B9 0xB9
+#define MB_BA 0xBA
+#define MB_BB 0xBB
+#define MB_BC 0xBC
+#define MB_BD 0xBD
+#define MB_BE 0xBE
+#define MB_BF 0xBF
+#define MB_BED 0xC0
+#define MB_C1 0xC1
+#define MB_C2 0xC2
+#define MB_C3 0xC3
+#define MB_C4 0xC4
+#define MB_C5 0xC5
+#define MB_C6 0xC6
+#define MB_C7 0xC7
+#define MB_C8 0xC8
+#define MB_C9 0xC9
+#define MB_CA 0xCA
+#define MB_CB 0xCB
+#define MB_CC 0xCC
+#define MB_CD 0xCD
+#define MB_CE 0xCE
+#define MB_CF 0xCF
+#define MB_MUDDY_SLOPE 0xD0
+#define MB_BUMPY_SLOPE 0xD1
+#define MB_CRACKED_FLOOR 0xD2
+#define MB_ISOLATED_VERTICAL_RAIL 0xD3
+#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4
+#define MB_VERTICAL_RAIL 0xD5
+#define MB_HORIZONTAL_RAIL 0xD6
+#define MB_PICTURE_BOOK_SHELF 0xE0
+#define MB_BOOKSHELF 0xE1
+#define MB_POKEMON_CENTER_BOOKSHELF 0xE2
+#define MB_VASE 0xE3
+#define MB_TRASH_CAN 0xE4
+#define MB_SHOP_SHELF 0xE5
+#define MB_BLUEPRINT 0xE6
+
+#endif // GUARD_METATILE_BEHAVIORS
diff --git a/include/money.h b/include/money.h
new file mode 100644
index 000000000..49015ee19
--- /dev/null
+++ b/include/money.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_MONEY_H
+#define GUARD_MONEY_H
+
+bool8 IsEnoughMoney(u32, u32);
+void sub_80B79B8(u32 *, u32);
+void sub_80B79E0(u32 *, u32);
+void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2);
+void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y);
+void sub_80B7AEC(u32, u8 left, u8 top);
+void sub_80B7B34(void);
+void sub_80B7BEC(u32, u8, u8);
+void sub_80B7C14(u32, u8, u8);
+void RemoveMoneyLabelObject(u8, u8);
+bool8 sub_80B7CE8(void);
+void sub_80B7D0C(void);
+
+#endif // GUARD_MONEY_H
diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h
new file mode 100644
index 000000000..8801789d9
--- /dev/null
+++ b/include/mystery_event_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_MYSTERY_EVENT_MENU_H
+#define GUARD_MYSTERY_EVENT_MENU_H
+
+void CB2_InitMysteryEventMenu(void);
+
+#endif // GUARD_MYSTERY_EVENT_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index dd80e1ea1..ee141dcc5 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -95,6 +95,25 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+#define TYPE_NORMAL 0x00
+#define TYPE_FIGHTING 0x01
+#define TYPE_FLYING 0x02
+#define TYPE_POISON 0x03
+#define TYPE_GROUND 0x04
+#define TYPE_ROCK 0x05
+#define TYPE_BUG 0x06
+#define TYPE_GHOST 0x07
+#define TYPE_STEEL 0x08
+#define TYPE_MYSTERY 0x09
+#define TYPE_FIRE 0x0a
+#define TYPE_WATER 0x0b
+#define TYPE_GRASS 0x0c
+#define TYPE_ELECTRIC 0x0d
+#define TYPE_PSYCHIC 0x0e
+#define TYPE_ICE 0x0f
+#define TYPE_DRAGON 0x10
+#define TYPE_DARK 0x11
+
struct PokemonSubstruct0
{
u16 species;
diff --git a/include/rom4.h b/include/rom4.h
index b12bbf4bc..036f43c36 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -59,7 +59,7 @@ void sub_8053720(s16, s16);
// sub_8053778
// unref_sub_8053790
// sub_80537CC
-// gpu_sync_bg_hide
+void gpu_sync_bg_hide();
// sub_8053818
// sub_8053850
// sub_80538B0
diff --git a/include/save_failed_screen.h b/include/save_failed_screen.h
new file mode 100644
index 000000000..5a097fb3f
--- /dev/null
+++ b/include/save_failed_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SAVE_FAILED_SCREEN_H
+#define GUARD_SAVE_FAILED_SCREEN_H
+
+void DoSaveFailedScreen(u8);
+
+#endif // GUARD_SAVE_FAILED_SCREEN_H
diff --git a/include/sprite.h b/include/sprite.h
index 4298593ca..57926fc68 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -245,5 +245,8 @@ void FreeSpritePaletteByTag(u16 tag);
void SetSubspriteTables(struct Sprite *sprite, 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);
#endif // GUARD_SPRITE_H
diff --git a/include/start_menu.h b/include/start_menu.h
index 77bfe5d0e..ae9e51284 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -17,7 +17,5 @@ u8 StartMenu_RetireCallback(void);
u8 StartMenu_PlayerLinkCallback(void);
void InitSaveDialog(void);
void sub_8071B28(void);
-void sub_8071C20(void);
-void AppendToList(u8 *list, u8 *pindex, u32 value);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/text.h b/include/text.h
index d0d418eab..7dbbcb844 100644
--- a/include/text.h
+++ b/include/text.h
@@ -4,6 +4,7 @@
#define CHAR_SPACE 0x00
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_HYPHEN 0xAE
+#define CHAR_CURRENCY 0xB7
#define CHAR_COLON 0xF0
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
@@ -35,7 +36,7 @@ struct Window
{
u8 textMode;
u8 fontNum;
- u8 charset;
+ u8 language;
u8 foregroundColor;
u8 backgroundColor;
u8 shadowColor;