summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm.h47
-rw-r--r--include/asm.inc.h135
-rw-r--r--include/battle.h131
-rw-r--r--include/battle_ai.h31
-rw-r--r--include/battle_anim.h58
-rw-r--r--include/battle_move_effects.h222
-rw-r--r--include/battle_party_menu.h36
-rw-r--r--include/battle_setup.h154
-rw-r--r--include/berry.h12
-rw-r--r--include/bike.h56
-rw-r--r--include/braille_puzzles.h14
-rw-r--r--include/clock.h8
-rw-r--r--include/contest.h26
-rw-r--r--include/contest_painting.h77
-rw-r--r--include/dewford_trend.h10
-rw-r--r--include/field_control_avatar.h13
-rw-r--r--include/field_door.h25
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_map_obj_helpers.h11
-rw-r--r--include/field_player_avatar.h44
-rw-r--r--include/fieldmap.h6
-rw-r--r--include/fonts/.gitignore8
-rw-r--r--include/gba/flash_internal.h7
-rw-r--r--include/gba/gba.h1
-rw-r--r--include/gba/io_reg.h35
-rw-r--r--include/gba/multiboot.h55
-rw-r--r--include/gba/syscall.h2
-rw-r--r--include/global.berry.h6
-rw-r--r--include/global.fieldmap.h144
-rw-r--r--include/global.h86
-rw-r--r--include/heal_location.h8
-rw-r--r--include/intro.h1
-rw-r--r--include/libgncmultiboot.h4
-rw-r--r--include/link.h6
-rw-r--r--include/link/.gitignore2
-rw-r--r--include/load_save.h2
-rw-r--r--include/map_constants.h1098
-rw-r--r--include/map_object_constants.h226
-rw-r--r--include/matsuda_debug_menu.h11
-rw-r--r--include/menu.h2
-rw-r--r--include/metatile_behavior.h6
-rw-r--r--include/metatile_behaviors.h2
-rw-r--r--include/moves.h363
-rw-r--r--include/name_string_util.h7
-rw-r--r--include/naming_screen.h83
-rw-r--r--include/opponent_constants.h702
-rw-r--r--include/pokedex.h88
-rw-r--r--include/pokemon.h4
-rw-r--r--include/rom4.h21
-rw-r--r--include/rom6.h7
-rw-r--r--include/save.h83
-rw-r--r--include/save_menu_util.h4
-rw-r--r--include/script_menu.h31
-rw-r--r--include/script_pokemon_80C4.h22
-rw-r--r--include/script_pokemon_80F9.h17
-rw-r--r--include/songs.h20
-rw-r--r--include/sound.h8
-rw-r--r--include/species.h880
-rw-r--r--include/sprite.h55
-rw-r--r--include/starter_choose.h4
-rw-r--r--include/strings.h905
-rw-r--r--include/text.h7
-rw-r--r--include/text_window.h4
-rw-r--r--include/trainer_card.h48
-rw-r--r--include/trainer_see.h2
-rw-r--r--include/vars.h30
-rw-r--r--include/wallclock.h5
67 files changed, 5293 insertions, 937 deletions
diff --git a/include/asm.h b/include/asm.h
index acf688d84..0b0fc3006 100644
--- a/include/asm.h
+++ b/include/asm.h
@@ -6,36 +6,43 @@
#include "sprite.h"
#include "asm_fieldmap.h"
-struct UnkInputStruct
+struct FieldInput
{
- u8 input_field_0_0:1;
+ u8 pressedAButton:1;
u8 input_field_0_1:1;
- u8 input_field_0_2:1;
- u8 input_field_0_3:1;
+ u8 pressedStartButton:1;
+ u8 pressedSelectButton:1;
u8 input_field_0_4:1;
u8 input_field_0_5:1;
u8 input_field_0_6:1;
- u8 input_field_0_7:1;
- u8 input_field_1;
- u8 input_field_2;
+ u8 pressedBButton:1;
+ u8 input_field_1_0:1;
+ u8 input_field_1_1:1;
+ u8 input_field_1_2:1;
+ u8 input_field_1_3:1;
+ u8 input_field_1_4:1;
+ u8 input_field_1_5:1;
+ u8 input_field_1_6:1;
+ u8 input_field_1_7:1;
+ u8 dpadDirection;
u8 input_field_3;
};
struct UnknownStruct_FPA
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- s16 unk4;
- s16 unk6;
- u8 unk8;
- u8 unk9;
- u8 unkA_0:4;
- u8 unkA_4:4;
- u16 unkC;
- u16 unkE;
- u32 unk10;
- u16 unk14;
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ s16 unk4;
+ s16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA_0:4;
+ u8 unkA_4:4;
+ u16 unkC;
+ u16 unkE;
+ u32 unk10;
+ u16 unk14;
};
#include "asm.inc.h"
diff --git a/include/asm.inc.h b/include/asm.inc.h
index c415cd825..9ee10aa58 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -38,14 +38,6 @@ void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u16 s
// asm/berry_blender.o
void sub_80516C4(u8, u16);
-// src/field_door.o
-void FieldSetDoorOpened(u32, u32);
-void FieldSetDoorClosed(u32, u32);
-s8 FieldAnimateDoorClose(u32, u32);
-s8 FieldAnimateDoorOpen(u32, u32);
-bool8 FieldIsDoorAnimationRunning(void);
-u32 sub_8058790(u32 x, u32 y);
-
// asm/field_map_obj.o
void sub_805AA98();
u8 sub_805AB54(void);
@@ -53,16 +45,17 @@ u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetFieldObjectIdByXY(s16, s16);
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
-u8 SpawnSpecialFieldObject(struct UnknownStruct_FPA *);
+u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
u8 show_sprite(u8, u8, u8);
-u8 AddPseudoFieldObject(u8 val, void (*player)(struct Sprite *), int i, int i1, int i2);
+u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c, s16 d, u8 subpriority);
u8 sub_805B410(u8, u8, s16, s16, u8, u8);
-void sub_805B55C(int i, int i1);
-void sub_805B710(int i, int i1);
+//void sub_805B55C(int i, int i1);
+void sub_805B55C(s16 a, s16 b);
+void sub_805B710(u16 i, u16 i1);
void sub_805B980(struct MapObject *, u8);
void FieldObjectTurn(struct MapObject *, u8);
void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8);
-struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
+const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *);
void sub_805BCF0(u8, u8, u8, u8);
@@ -72,15 +65,15 @@ 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);
-u8 GetFieldObjectIdByXYZ(u16, u16, int);
+u8 GetFieldObjectIdByXYZ(u16, u16, u8);
void UpdateFieldObjectsForCameraUpdate(s16, s16);
u8 AddCameraObject(u8);
u8 * GetFieldObjectScriptPointerByFieldObjectId(u8);
u8 FieldObjectGetBerryTreeId(u8);
void sub_805C754(struct MapObject *pObject);
-void sub_805C774(struct MapObject *, u8 );
+void sub_805C774(struct MapObject *, u8);
void sub_805C78C(u8, u8, u8);
-void sub_805C7C4(int i);
+void sub_805C7C4(u8 i);
u8 FieldObjectDirectionToImageAnimId(u8);
u8 get_go_image_anim_num(u8 unk_19);
u8 sub_805FD98(u8);
@@ -96,7 +89,7 @@ void sub_8060288(u8, u8, u8);
void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1);
void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1);
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *);
-void FieldObjectSetSpecialAnim(struct MapObject *, u8);
+bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8);
void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a);
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
void FieldObjectClearAnim(struct MapObject *);
@@ -136,32 +129,11 @@ u8 ZCoordToPriority(u8);
void FieldObjectUpdateZCoord(struct MapObject *pObject);
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
-// src/field_map_obj_helpers.o
-bool8 FreezeMapObject(struct MapObject *);
-void FreezeMapObjects(void);
-void FreezeMapObjectsExceptOne(u8);
-void UnfreezeMapObjects(void);
-void sub_806487C(struct Sprite *sprite, bool8 invisible);
-void sub_8064990(u8, u8);
-
-// asm/field_control_avatar.o
-void sub_8067EEC(struct UnkInputStruct *pStruct);
-void process_overworld_input(struct UnkInputStruct *pStruct, u16 keys, u16 heldKeys);
-int sub_8068024(struct UnkInputStruct *pStruct);
-u8 *sub_80682A8(void *, u8, u8);
-void overworld_poison_timer_set(void);
-void prev_quest_postbuffer_cursor_backup_reset(void);
-u8 *sub_8068E24(struct UnkStruct_8054FF8_Substruct *);
-u8 *GetFieldObjectScriptPointerForComparison();
-
// asm/field_tasks.o
void SetUpFieldTasks();
void ActivatePerStepCallback(u8);
void ResetFieldTasksArgs(void);
-// asm/clock.o
-void DoTimeBasedEvents(void);
-
// asm/reset_rtc_screen.o
void CB2_InitResetRtcScreen(void);
@@ -202,10 +174,6 @@ u8 sub_8083664(void);
void sub_8083A84(TaskFunc);
s32 sub_8083BF4(u8 id);
-// src/fldeff_emotion.o
-void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
-void objc_exclamation_mark_probably(struct Sprite *sprite);
-
// asm/rom_80859BC.o
u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *);
void LoadTrainerGfx_TrainerCard(u8 gender, int, void *);
@@ -236,7 +204,7 @@ void sub_809D608(u16);
u8 pokemon_ailments_get_primary(u32);
// asm/script_movement.o
-u8 exec_movement(u8, u8, u8, void *);
+bool8 exec_movement(u8, u8, u8, u8 *);
bool8 sub_80A212C(u8, u8, u8);
void sub_80A2178(void);
@@ -245,8 +213,8 @@ void sub_80A2B18(void);
u16 sub_80A2D64(u16, u8 *);
// asm/map_name_popup.o
-void AddMapNamePopUpWindowTask(void);
-void HideMapNamePopUpWindow();
+void ShowMapNamePopup(void);
+void HideMapNamePopup();
// asm/item_menu.o
void sub_80A3684(void);
@@ -258,11 +226,6 @@ 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);
@@ -278,18 +241,6 @@ void CreatePokemartMenu(void *);
void CreateDecorationShop1Menu(void *);
void CreateDecorationShop2Menu(void *);
-// src/script_menu.o
-bool8 sub_80B5054(u8, u8, u8, u8);
-bool8 sub_80B50B0(u8, u8, u8, u8, u8);
-bool8 Multichoice(u8, u8, u8, u8);
-bool8 yes_no_box(u8, u8);
-bool8 sub_80B5578(u8, u8, u8, u8, u8);
-bool8 sub_80B58C4(u16, u8, u8);
-void *picbox_close(void);
-
-// asm/naming_screen.o
-void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4);
-
// asm/secret_base.o
void sub_80BB5B4(void);
u8 sub_80BBB24(void);
@@ -329,15 +280,6 @@ void sub_80C4940(void);
void sub_80C4980(u8);
u8 sub_80C4B34(u8 *);
-// asm/script_pokemon_util_80C4BF0.o
-u8 sub_80C4D50(void);
-void ShowContestWinner(void);
-void HealPlayerParty();
-u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
-u8 ScriptGiveEgg(u16);
-void ScriptWildBattle(u16, u8, u16);
-void ScriptSetMonMoveSlot(u8, u16, u8);
-
// asm/fldeff_80C5CD4.o
void DoFieldPoisonEffect(void);
bool32 FieldPoisonEffectIsRunning(void);
@@ -356,16 +298,6 @@ void sub_80C8E1C(u8);
void sub_80C8EBC(u8);
void sub_80C8F34(u8);
-// asm/bike.o
-void MovePlayerOnBike(u8, u16, u16);
-void sub_80E5B38(u16 i, u16 c);
-u8 sub_80E5DEC(u8);
-bool8 player_should_look_direction_be_enforced_upon_movement(void);
-void sub_80E5FCC(int i, int i1);
-void sub_80E6010(int i);
-s16 sub_80E6034(void);
-void sub_80E6084();
-
// asm/easy_chat.o
void sub_80E6764(void);
void sub_80EB3FC(u8 *, u16);
@@ -376,7 +308,7 @@ u16 sub_80EB72C(u16);
void sub_80EBA5C(void);
// asm/mauville_old_man.o
-void sub_80F7AA4(void);
+void SetMauvilleOldMan(void);
void sub_80F7F30(void);
// asm/menu_helpers.o
@@ -384,18 +316,6 @@ bool8 sub_80F9344(void);
void sub_80F9368(void);
void sub_80F9438(void);
-// asm/script_pokemon_util_80F99CC.o
-void sub_80F99CC(void);
-
-// src/dewford_trend.o
-void sub_80FA17C(void);
-void sub_80FA46C(struct EasyChatPair *, u16, u8);
-void sub_80FA4E4(struct EasyChatPair *, u32, u8);
-bool8 sub_80FA670(struct EasyChatPair *, struct EasyChatPair *, u8);
-void sub_80FA740(struct EasyChatPair *);
-bool8 SB1ContainsWords(u16 *);
-bool8 IsEasyChatPairEqual(u16 *, u16 *);
-
// asm/region_map.o
void sub_80FBFB4(u8 *str, u8 region, u8);
void CopyMapName();
@@ -404,13 +324,6 @@ u8 *CopyLocationName(u8 *dest, u8 location);
// asm/slot_machine.o
void PlaySlotMachine(u8, void *);
-// asm/contest_painting.o
-void sub_8106630(u32);
-
-// asm/rom6.o
-bool8 npc_before_player_of_type(u8);
-u8 oei_task_add(void);
-
// asm/pokeblock.o
void sub_810C994(void);
void sub_810CA6C(s32);
@@ -468,30 +381,14 @@ void sub_8134AC0(void *);
// src/player_pc.o
void NewGameInitPCItems(void);
-// src/intro.o
-void sub_813CE30(u16, u16, u16, u16);
-
-// asm/braille_puzzles.o
-bool8 ShouldDoBrailleStrengthEffect(void);
-void DoBrailleStrengthEffect(void);
-
// asm/intro_credits_graphics.o
void load_intro_part2_graphics(/*TODO: arg types*/);
void sub_8148C78(/*TODO: arg types*/);
+void sub_8148CB0(u8);
+void sub_8148E90(u8);
u8 sub_8148EC0(/*TODO: arg types*/);
void sub_8149020(/*TODO: arg types*/);
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*/);
-
-// asm/name_string_util.o
-void SanitizeNameString(u8*);
-
-// src/agb_flash.o
-u16 ReadFlashId(void);
-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/battle.h b/include/battle.h
index d58b234e3..4b9144721 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -17,54 +17,129 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
+#define AI_ACTION_DONE 0x0001
+#define AI_ACTION_FLEE 0x0002
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
+#define AI_ACTION_UNK5 0x0010
+#define AI_ACTION_UNK6 0x0020
+#define AI_ACTION_UNK7 0x0040
+#define AI_ACTION_UNK8 0x0080
+
+#define MAX_TRAINER_ITEMS 4
+#define MAX_MON_MOVES 4
+
+// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
+extern u8 unk_2000000[];
+
+// to do: maybe try to reduce the defines needed to match?
+#define BATTLE_STRUCT ((struct BattleStruct *)(unk_2000000))
+#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(unk_2000000 + 0x16800))
+#define UNK_2016A00_STRUCT ((struct UnknownStruct1 *)(unk_2000000 + 0x16A00))
+#define AI_STACK ((struct AI_Stack *)(unk_2000000 + 0x16C00))
+#define AI_ARRAY_160CC ((struct SmallItemStruct *)(unk_2000000 + 0x160CC))
+
+enum
+{
+ WEATHER_SUN,
+ WEATHER_RAIN,
+ WEATHER_SANDSTORM,
+ WEATHER_HAIL,
+};
+
struct Trainer
{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic:7;
- /*0x02*/ u8 gender:1;
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ void *party;
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic:7;
+ /*0x02*/ u8 gender:1;
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ void *party;
+};
+
+struct UnknownStruct1 // AI_Opponent_Info?
+{
+ /*0x00*/ u16 movesUsed[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
+ /*0x20*/ u8 unk20[2];
+ /*0x22*/ u8 unk22[2];
+ /*0x24*/ u16 items[4];
+ /*0x2C*/ u8 numOfItems;
+};
+
+struct AI_Stack
+{
+ u8 *ptr[8];
+ u8 size;
};
struct AI_ThinkingStruct /* 0x2016800 */
{
-/* 0x00 */ u8 unk0;
-/* 0x01 */ u8 moveConsidered;
-/* 0x02 */ u16 unk2;
+/* 0x00 */ u8 aiState;
+/* 0x01 */ u8 movesetIndex;
+/* 0x02 */ u16 moveConsidered;
/* 0x04 */ s8 score[4]; // score?
-/* 0x08 */ u32 unk8;
+/* 0x08 */ u32 funcResult;
/* 0x0C */ u32 aiFlags;
-/* 0x10 */ u8 unk10;
+/* 0x10 */ u8 aiAction;
/* 0x11 */ u8 aiLogicId;
/* 0x12 */ u8 filler12[6];
-/* 0x18 */ u8 unk18[4];
+/* 0x18 */ u8 simulatedRNG[4];
};
struct SmallBattleStruct1
{
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ // unknown size
+};
+
+struct SmallItemStruct
+{
+ u8 itemLocal[2][3];
};
struct BattleStruct /* 0x2000000 */
{
- u8 filler0[0x1601C];
- struct SmallBattleStruct1 unk;
- u8 filler1[0xAB]; // 0x2016020
- /* 0x160CB */ u8 linkPlayerIndex;
- u8 filler2[0x734];
- struct AI_ThinkingStruct ai;
+ u8 filler0[0x15DDE];
+ /*0x15DDE*/ u8 unk15DDE;
+ /*0x15DDF*/ u8 unk15DDF;
+ /*0x15DE0*/ u8 filler15DE0[0x23C]; // 0xAF off?
+ struct SmallBattleStruct1 unk;
+ u8 filler1[0x68];
+ /* 0x16089 */ u8 safariFleeRate;
+ u8 filler1_2[0x42];
+ /* 0x160CB */ u8 linkPlayerIndex;
+ /* 0x160CC */ struct SmallItemStruct item;
+ u8 filler2[0x72E];
+ /* 0x16800 */ struct AI_ThinkingStruct ai; /* 0x2016800 */
+ u8 filler1681C[0x1E4];
+ /* 0x16A00 */ struct UnknownStruct1 unk_2016A00_2;
+};
+
+struct UnknownStruct4
+{
+ u8 filler0[0x3];
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 fillerA[0x9];
+ u8 taunt:4;
+ u8 unkC:4;
+ u8 fillerD[0x2];
+ u8 unk16;
+ u8 filler17[0x4];
};
-extern struct BattleStruct battle_2000000;
+extern struct UnknownStruct1 unk_2016A00;
+extern struct UnknownStruct4 gUnknown_02024CA8[];
extern struct AI_ThinkingStruct gAIThinkingSpace;
#endif // GUARD_BATTLE_H
diff --git a/include/battle_ai.h b/include/battle_ai.h
new file mode 100644
index 000000000..a5fea3480
--- /dev/null
+++ b/include/battle_ai.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_BATTLEAI_H
+#define GUARD_BATTLEAI_H
+
+#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
+#define AIScriptRead8(ptr) ((ptr)[0])
+#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
+
+enum
+{
+ TARGET,
+ USER
+};
+
+// AI states
+enum
+{
+ AIState_SettingUp,
+ AIState_Processing,
+ AIState_FinishedProcessing,
+ AIState_DoNotProcess
+};
+
+// battle_ai
+void BattleAI_SetupAIData(void);
+void BattleAI_DoAIProcessing(void);
+void sub_810745C(void);
+void AIStackPushVar(u8 *);
+u8 AIStackPop(void);
+
+#endif
diff --git a/include/battle_anim.h b/include/battle_anim.h
new file mode 100644
index 000000000..eb98ebf09
--- /dev/null
+++ b/include/battle_anim.h
@@ -0,0 +1,58 @@
+#ifndef GUARD_BATTLEANIM_H
+#define GUARD_BATTLEANIM_H
+
+#define SCRIPT_READ_8(ptr) ((ptr)[0])
+#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define SCRIPT_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+
+#define REG_BGnCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT)
+#define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1)
+#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2)
+
+#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800))
+#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800))
+#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810))
+#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000))
+#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348))
+
+struct BGCntrlBitfield
+{
+ 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;
+};
+
+struct BattleAnimBackground
+{
+ void *image;
+ void *palette;
+ void *tilemap;
+};
+
+struct UnknownStruct1
+{
+ u8 unk0;
+};
+
+struct UnknownStruct2
+{
+ void *unk0;
+ u16 *unk4;
+ u8 unk8;
+};
+
+struct UnknownStruct3
+{
+ u8 unk0;
+ u8 filler1[0xB];
+};
+
+void move_something(const u8 *const moveAnims[], u16 b, u8 c);
+bool8 b_side_obj__get_some_boolean(u8 a);
+void sub_8076034(u8, u8);
+bool8 sub_8076BE0(void);
+
+#endif
diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h
new file mode 100644
index 000000000..4a9415379
--- /dev/null
+++ b/include/battle_move_effects.h
@@ -0,0 +1,222 @@
+#ifndef GUARD_BATTLE_MOVE_EFFECTS_H
+#define GUARD_BATTLE_MOVE_EFFECTS_H
+
+enum
+{
+ EFFECT_HIT,
+ EFFECT_SLEEP,
+ EFFECT_POISON_HIT,
+ EFFECT_ABSORB,
+ EFFECT_BURN_HIT,
+ EFFECT_FREEZE_HIT,
+ EFFECT_PARALYZE_HIT,
+ EFFECT_EXPLOSION,
+ EFFECT_DREAM_EATER,
+ EFFECT_MIRROR_MOVE,
+ EFFECT_ATTACK_UP,
+ EFFECT_DEFENSE_UP,
+ EFFECT_SPEED_UP,
+ EFFECT_SPECIAL_ATTACK_UP,
+ EFFECT_SPECIAL_DEFENSE_UP,
+ EFFECT_ACCURACY_UP,
+ EFFECT_EVASION_UP,
+ EFFECT_ALWAYS_HIT,
+ EFFECT_ATTACK_DOWN,
+ EFFECT_DEFENSE_DOWN,
+ EFFECT_SPEED_DOWN,
+ EFFECT_SPECIAL_ATTACK_DOWN, // unused
+ EFFECT_SPECIAL_DEFENSE_DOWN, // unused
+ EFFECT_ACCURACY_DOWN,
+ EFFECT_EVASION_DOWN,
+ EFFECT_HAZE,
+ EFFECT_BIDE,
+ EFFECT_RAMPAGE,
+ EFFECT_ROAR,
+ EFFECT_MULTI_HIT,
+ EFFECT_CONVERSION,
+ EFFECT_FLINCH_HIT,
+ EFFECT_RESTORE_HP,
+ EFFECT_TOXIC,
+ EFFECT_PAY_DAY,
+ EFFECT_LIGHT_SCREEN,
+ EFFECT_TRI_ATTACK,
+ EFFECT_REST,
+ EFFECT_OHKO,
+ EFFECT_RAZOR_WIND,
+ EFFECT_SUPER_FANG,
+ EFFECT_DRAGON_RAGE,
+ EFFECT_TRAP,
+ EFFECT_HIGH_CRITICAL,
+ EFFECT_DOUBLE_HIT,
+ EFFECT_RECOIL_IF_MISS,
+ EFFECT_MIST,
+ EFFECT_FOCUS_ENERGY,
+ EFFECT_RECOIL,
+ EFFECT_CONFUSE,
+ EFFECT_ATTACK_UP_2,
+ EFFECT_DEFENSE_UP_2,
+ EFFECT_SPEED_UP_2,
+ EFFECT_SPECIAL_ATTACK_UP_2,
+ EFFECT_SPECIAL_DEFENSE_UP_2,
+ EFFECT_ACCURACY_UP_2,
+ EFFECT_EVASION_UP_2,
+ EFFECT_TRANSFORM,
+ EFFECT_ATTACK_DOWN_2,
+ EFFECT_DEFENSE_DOWN_2,
+ EFFECT_SPEED_DOWN_2,
+ EFFECT_SPECIAL_ATTACK_DOWN_2,
+ EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ EFFECT_ACCURACY_DOWN_2,
+ EFFECT_EVASION_DOWN_2,
+ EFFECT_REFLECT,
+ EFFECT_POISON,
+ EFFECT_PARALYZE,
+ EFFECT_ATTACK_DOWN_HIT,
+ EFFECT_DEFENSE_DOWN_HIT,
+ EFFECT_SPEED_DOWN_HIT,
+ EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ EFFECT_ACCURACY_DOWN_HIT,
+ EFFECT_EVASION_DOWN_HIT,
+ EFFECT_SKY_ATTACK,
+ EFFECT_CONFUSE_HIT,
+ EFFECT_TWINEEDLE,
+ EFFECT_VITAL_THROW,
+ EFFECT_SUBSTITUTE,
+ EFFECT_RECHARGE,
+ EFFECT_RAGE,
+ EFFECT_MIMIC,
+ EFFECT_METRONOME,
+ EFFECT_LEECH_SEED,
+ EFFECT_SPLASH,
+ EFFECT_DISABLE,
+ EFFECT_LEVEL_DAMAGE,
+ EFFECT_PSYWAVE,
+ EFFECT_COUNTER,
+ EFFECT_ENCORE,
+ EFFECT_PAIN_SPLIT,
+ EFFECT_SNORE,
+ EFFECT_CONVERSION_2,
+ EFFECT_LOCK_ON,
+ EFFECT_SKETCH,
+ EFFECT_UNUSED_60, // thaw
+ EFFECT_SLEEP_TALK,
+ EFFECT_DESTINY_BOND,
+ EFFECT_FLAIL,
+ EFFECT_SPITE,
+ EFFECT_FALSE_SWIPE,
+ EFFECT_HEAL_BELL,
+ EFFECT_QUICK_ATTACK,
+ EFFECT_TRIPLE_KICK,
+ EFFECT_THIEF,
+ EFFECT_MEAN_LOOK,
+ EFFECT_NIGHTMARE,
+ EFFECT_MINIMIZE,
+ EFFECT_CURSE,
+ EFFECT_UNUSED_6E,
+ EFFECT_PROTECT,
+ EFFECT_SPIKES,
+ EFFECT_FORESIGHT,
+ EFFECT_PERISH_SONG,
+ EFFECT_SANDSTORM,
+ EFFECT_ENDURE,
+ EFFECT_ROLLOUT,
+ EFFECT_SWAGGER,
+ EFFECT_FURY_CUTTER,
+ EFFECT_ATTRACT,
+ EFFECT_RETURN,
+ EFFECT_PRESENT,
+ EFFECT_FRUSTRATION,
+ EFFECT_SAFEGUARD,
+ EFFECT_THAW_HIT,
+ EFFECT_MAGNITUDE,
+ EFFECT_BATON_PASS,
+ EFFECT_PURSUIT,
+ EFFECT_RAPID_SPIN,
+ EFFECT_SONICBOOM,
+ EFFECT_UNUSED_83,
+ EFFECT_MORNING_SUN,
+ EFFECT_SYNTHESIS,
+ EFFECT_MOONLIGHT,
+ EFFECT_HIDDEN_POWER,
+ EFFECT_RAIN_DANCE,
+ EFFECT_SUNNY_DAY,
+ EFFECT_DEFENSE_UP_HIT,
+ EFFECT_ATTACK_UP_HIT,
+ EFFECT_ALL_STATS_UP_HIT,
+ EFFECT_UNUSED_8D, // incomplete fake out in gen 2
+ EFFECT_BELLY_DRUM,
+ EFFECT_PSYCH_UP,
+ EFFECT_MIRROR_COAT,
+ EFFECT_SKULL_BASH,
+ EFFECT_TWISTER,
+ EFFECT_EARTHQUAKE,
+ EFFECT_FUTURE_SIGHT,
+ EFFECT_GUST,
+ EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+ EFFECT_SOLARBEAM,
+ EFFECT_THUNDER,
+ EFFECT_TELEPORT,
+ EFFECT_BEAT_UP,
+ EFFECT_FLY,
+ EFFECT_DEFENSE_CURL,
+ EFFECT_SOFTBOILED,
+ EFFECT_FAKE_OUT,
+ EFFECT_UPROAR,
+ EFFECT_STOCKPILE,
+ EFFECT_SPIT_UP,
+ EFFECT_SWALLOW,
+ EFFECT_UNUSED_A3,
+ EFFECT_HAIL,
+ EFFECT_TORMENT,
+ EFFECT_FLATTER,
+ EFFECT_WILL_O_WISP,
+ EFFECT_MEMENTO,
+ EFFECT_FACADE,
+ EFFECT_FOCUS_PUNCH,
+ EFFECT_SMELLINGSALT,
+ EFFECT_FOLLOW_ME,
+ EFFECT_NATURE_POWER,
+ EFFECT_CHARGE,
+ EFFECT_TAUNT,
+ EFFECT_HELPING_HAND,
+ EFFECT_TRICK,
+ EFFECT_ROLE_PLAY,
+ EFFECT_WISH,
+ EFFECT_ASSIST,
+ EFFECT_INGRAIN,
+ EFFECT_SUPERPOWER,
+ EFFECT_MAGIC_COAT,
+ EFFECT_RECYCLE,
+ EFFECT_REVENGE,
+ EFFECT_BRICK_BREAK,
+ EFFECT_YAWN,
+ EFFECT_KNOCK_OFF,
+ EFFECT_ENDEAVOR,
+ EFFECT_ERUPTION,
+ EFFECT_SKILL_SWAP,
+ EFFECT_IMPRISON,
+ EFFECT_REFRESH,
+ EFFECT_GRUDGE,
+ EFFECT_SNATCH,
+ EFFECT_LOW_KICK,
+ EFFECT_SECRET_POWER,
+ EFFECT_DOUBLE_EDGE,
+ EFFECT_TEETER_DANCE,
+ EFFECT_BLAZE_KICK,
+ EFFECT_MUD_SPORT,
+ EFFECT_POISON_FANG,
+ EFFECT_WEATHER_BALL,
+ EFFECT_OVERHEAT,
+ EFFECT_TICKLE,
+ EFFECT_COSMIC_POWER,
+ EFFECT_SKY_UPPERCUT,
+ EFFECT_BULK_UP,
+ EFFECT_POISON_TAIL,
+ EFFECT_WATER_SPORT,
+ EFFECT_CALM_MIND,
+ EFFECT_DRAGON_DANCE,
+ EFFECT_CAMOUFLAGE,
+};
+
+#endif // GUARD_BATTLE_MOVE_EFFECTS_H
diff --git a/include/battle_party_menu.h b/include/battle_party_menu.h
new file mode 100644
index 000000000..d0ae8da35
--- /dev/null
+++ b/include/battle_party_menu.h
@@ -0,0 +1,36 @@
+#ifndef GUARD_BATTLE_PARTY_MENU_H
+#define GUARD_BATTLE_PARTY_MENU_H
+
+struct UnknownStruct1
+{
+ u8 filler0[0x259];
+ u8 unk259;
+ u8 filler25A[6];
+ u8 unk260;
+ u8 filler261[1];
+ u8 unk262;
+ s16 unk264;
+ s16 unk266;
+};
+
+struct PartyMenuItem
+{
+ const u8 *text;
+ TaskFunc func;
+};
+
+struct PartyPopupMenu
+{
+ u8 unk0;
+ u8 unk1;
+ const u8 *unk4;
+};
+
+extern u8 unk_2000000[];
+
+void SetUpBattlePokemonMenu(u8);
+
+#define EWRAM_1609D unk_2000000[0x1609D]
+#define EWRAM_1B000 (*(struct UnknownStruct1 *)(unk_2000000 + 0x1B000))
+
+#endif
diff --git a/include/battle_setup.h b/include/battle_setup.h
index 6271a3cc5..e88aefe6d 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,84 +1,136 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
-// task01_battle_start
-// task_add_01_battle_start
+#define NUM_TRAINER_EYE_TRAINERS 56
+#define TRAINER_REMATCH_STEPS 255
+
+// IV + LEVEL + SPECIES
+struct TrainerPartyMember0
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+};
+
+// IV + LEVEL + SPECIES + MOVES
+struct TrainerPartyMember1
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 moves[4];
+};
+
+// IV + LEVEL + SPECIES + ITEMS
+struct TrainerPartyMember2
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 heldItem;
+};
+
+// IV + LEVEL + SPECIES + ITEMS + MOVES
+struct TrainerPartyMember3
+{
+ u16 iv;
+ u8 level;
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+};
+
+struct TrainerBattleSpec
+{
+ void *ptr;
+ u8 ptrType;
+};
+
+struct TrainerEyeTrainer
+{
+ u16 trainerNums[5];
+ u16 mapGroup;
+ u16 mapNum;
+};
+
+//void task01_battle_start(u8 taskId);
+//void task_add_01_battle_start(u8 transition, u16 song);
void CheckForSafariZoneAndProceed(void);
void StartBattle_StandardWild(void);
void StartBattle_Roamer(void);
void StartBattle_Safari(void);
-// task_add_01_battle_start_with_music_and_stats
-// StartBattle_WallyTutorial
+//void task_add_01_battle_start_with_music_and_stats(void);
+//void StartBattle_WallyTutorial(void);
void StartBattle_ScriptedWild(void);
-// StartBattle_SouthernIsland
-// StartBattle_Rayquaza
-// StartBattle_GroudonKyogre
-// StartBattle_Regi
+//void StartBattle_SouthernIsland(void);
+//void StartBattle_Rayquaza(void);
+//void StartBattle_GroudonKyogre(void);
+//void StartBattle_Regi(void);
void HandleWildBattleEnd(void);
void HandleScriptedWildBattleEnd(void);
-// GetBattleTerrain
-// GetBattleTransitionTypeByMap
-// GetSumOfPartyMonLevel
-// GetSumOfEnemyPartyLevel
+s8 GetBattleTerrain(void);
+//s8 GetBattleTransitionTypeByMap(void);
+//u16 GetSumOfPartyMonLevel(u8 numMons);
+//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons);
u8 GetWildBattleTransition(void);
u8 GetTrainerBattleTransition(void);
-// GetBattleTowerBattleTransition
-// ChooseStarter
+u8 GetBattleTowerBattleTransition(void);
+//void ChooseStarter(void);
void CB2_GiveStarter(void);
void CB2_StartFirstBattle(void);
void HandleFirstBattleEnd(void);
-// TrainerBattleLoadArg32
-// TrainerBattleLoadArg16
-// TrainerBattleLoadArg8
-// trainerflag_opponent
+//u32 TrainerBattleLoadArg32(u8 *ptr);
+//u16 TrainerBattleLoadArg16(u8 *ptr);
+//u8 TrainerBattleLoadArg8(u8 *ptr);
+//u16 trainerflag_opponent(void);
bool32 battle_exit_is_player_defeat(u32 a1);
-// sub_80822BC
-// TrainerBattleLoadArgs
-// battle_80801F0
+//void sub_80822BC(void);
+//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data);
+//void battle_80801F0(void);
u8 *TrainerBattleConfigure(u8 *data);
void TrainerWantsBattle(u8, u8 *);
bool32 GetTrainerFlagFromScriptPointer(u8 *data);
-// sub_8082524
-// sub_8082558
-// sub_8082564
-// sub_808257C
-// unref_sub_8082590
+//void sub_8082524(void);
+//u8 sub_8082558(void);
+//u8 sub_8082564(void);
+//void sub_808257C(void);
+//void unref_sub_8082590(void); // unused
u8 trainer_flag_check(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
void sub_80825E4(void);
void sub_808260C(void);
-// do_choose_name_or_words_screen
-// sub_80826B0
-// sub_80826D8
+void do_choose_name_or_words_screen(void);
+//void sub_80826B0(void);
+//void sub_80826D8(void);
u8 *sub_80826E8(void);
u8 *sub_8082700(void);
-// sub_8082718
-// PlayTrainerEncounterMusic
-// SanitizeString
+//void sub_8082718(void);
+//void PlayTrainerEncounterMusic(void);
+//u8 *SanitizeString(u8 *str);
u8 *sub_808281C(void);
-// sub_8082830
-// unref_sub_808286C
+u8 *sub_8082830(void);
+//u8 *unref_sub_808286C(void);
u8 *sub_8082880(void);
-// sub_8082894
-// sub_80828B8
-// sub_80828FC
-// sub_80829A8
-// sub_80829E8
-// sub_8082A18
-// sub_8082A54
-// sub_8082A90
-// sub_8082AE4
-// sub_8082B10
-// sub_8082B44
-// sub_8082B78
-// sub_8082BA4
+//s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
+//bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool32 sub_8082B44(void);
+void sub_8082B78(void);
+//bool32 sub_8082BA4(void);
void sub_8082BD0(u16, u16);
-// sub_8082C0C
-// unref_sub_8082C2C
+s32 sub_8082C0C(u16 mapGroup, u16 mapNum);
+s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum);
u16 sub_8082C4C(u16 a1);
-// sub_8082C68
-// sub_8082C9C
+//s32 sub_8082C68(void);
+//u8 sub_8082C9C(void);
void sub_8082CB8(void);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/berry.h b/include/berry.h
index 152f92e38..f17799870 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -1,11 +1,21 @@
#ifndef GUARD_BERRY_H
#define GUARD_BERRY_H
+enum
+{
+ BERRY_FIRMNESS_UNKNOWN,
+ BERRY_FIRMNESS_VERY_SOFT,
+ BERRY_FIRMNESS_SOFT,
+ BERRY_FIRMNESS_HARD,
+ BERRY_FIRMNESS_VERY_HARD,
+ BERRY_FIRMNESS_SUPER_HARD,
+};
+
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
bool32 IsEnigmaBerryValid(void);
-struct Berry *GetBerryInfo(u8 berry);
+const struct Berry *GetBerryInfo(u8 berry);
struct BerryTree *GetBerryTreeInfo(u8 id);
bool32 FieldObjectInteractionWaterBerryTree(void);
bool32 IsPlayerFacingPlantedBerryTree(void);
diff --git a/include/bike.h b/include/bike.h
new file mode 100644
index 000000000..decbd1d49
--- /dev/null
+++ b/include/bike.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_BIKE_H
+#define GUARD_BIKE_H
+
+struct UnknownStruct1
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+ const u8 *unk10;
+ const u8 *unk14;
+ u32 unk18;
+};
+
+// Player speeds
+enum
+{
+ SPEED_STANDING,
+ SPEED_NORMAL,
+ SPEED_FAST,
+ SPEED_FASTER,
+ SPEED_FASTEST,
+};
+
+//Acro bike states
+enum
+{
+ ACRO_STATE_NORMAL,
+ ACRO_STATE_TURNING,
+ ACRO_STATE_WHEELIE_STANDING,
+ ACRO_STATE_BUNNY_HOP,
+ ACRO_STATE_WHEELIE_MOVING,
+ ACRO_STATE_5,
+ ACRO_STATE_6,
+};
+
+//Acro bike transitions
+enum
+{
+ ACRO_TRANS_FACE_DIRECTION,
+ ACRO_TRANS_NORMAL_TO_WHEELIE = 3,
+ ACRO_TRANS_WHEELIE_TO_NORMAL,
+};
+
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
+void sub_80E5B38(u16 a, u16 b);
+bool8 IsRunningDisallowed(u8 tile);
+bool8 IsBikingDisallowedByPlayer(void);
+bool8 player_should_look_direction_be_enforced_upon_movement(void);
+void GetOnOffBike(u8 var);
+void BikeClearState(int var1, int var2);
+void sub_80E6010(u8 var);
+s16 GetPlayerSpeed(void);
+void sub_80E6084(void);
+
+#endif
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
new file mode 100644
index 000000000..2b0e2bb96
--- /dev/null
+++ b/include/braille_puzzles.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_BRAILLEPUZZLES_H
+#define GUARD_BRAILLEPUZZLES_H
+
+bool8 ShouldDoBrailleStrengthEffect(void);
+void DoBrailleStrengthEffect(void);
+void UseFlyAncientTomb_Callback(void);
+void UseFlyAncientTomb_Finish(void);
+void Task_BrailleWait(u8 taskId);
+bool32 BrailleWait_CheckButtonPress(void);
+void SealedChamberShakingEffect(u8 taskId);
+bool8 ShouldDoBrailleDigEffect(void);
+void DoBrailleDigEffect(void);
+
+#endif
diff --git a/include/clock.h b/include/clock.h
new file mode 100644
index 000000000..4e6560c91
--- /dev/null
+++ b/include/clock.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CLOCK_H
+#define GUARD_CLOCK_H
+
+// TODO: time of day and seconds in a day defines
+
+void DoTimeBasedEvents(void);
+
+#endif
diff --git a/include/contest.h b/include/contest.h
new file mode 100644
index 000000000..82520717f
--- /dev/null
+++ b/include/contest.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_CONTEST_H
+#define GUARD_CONTEST_H
+
+struct ContestPokemon
+{
+ /* 0x00 */ u16 species;
+ /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH];
+ /* 0x0D */ u8 trainerName[8];
+ /* 0x15 */ u8 unk15;
+ /* 0x16 */ u8 unk16;
+ /* 0x17 */ u8 filler17[7];
+ /* 0x1E */ u16 moves[4]; // moves
+ /* 0x26 */ u8 cool; // cool
+ /* 0x27 */ u8 beauty; // beauty
+ /* 0x28 */ u8 cute; // cute
+ /* 0x29 */ u8 smart; // smart
+ /* 0x2A */ u8 tough; // tough
+ /* 0x2B */ u8 sheen; // sheen
+ /* 0x2C */ u8 filler2C[12];
+ /* 0x38 */ u32 unk38;
+ /* 0x3C */ u32 unk3C;
+}; // wow
+
+extern struct ContestPokemon gContestMons[];
+
+#endif // GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
new file mode 100644
index 000000000..896aa299b
--- /dev/null
+++ b/include/contest_painting.h
@@ -0,0 +1,77 @@
+#ifndef GUARD_CONTESTPAINTING_H
+#define GUARD_CONTESTPAINTING_H
+
+#define MOSAIC_BIT_BG_HSIZE (0)
+#define MOSAIC_BIT_BG_VSIZE (4)
+#define MOSAIC_BIT_OBJ_HSIZE (8)
+#define MOSAIC_BIT_OBJ_VSIZE (12)
+
+enum
+{
+ CONTEST_COOL,
+ CONTEST_BEAUTY,
+ CONTEST_CUTE,
+ CONTEST_SMART,
+ CONTEST_TOUGH,
+};
+
+enum
+{
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+struct Unk2015E00
+{
+ u16 unk2015e00[128][32];
+ u16 unk2017e00[0];
+};
+
+struct ContestEntry
+{
+ /*0x00*/ u8 var0;
+ /*0x04*/ u32 var4;
+ /*0x08*/ u16 var8;
+ /*0x0A*/ u8 contestType;
+ /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH];
+ /*0x15*/ u8 pad15;
+ /*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
+};
+
+struct Unk3000756
+{
+ /*0x00*/ u8 var_0;
+};
+
+struct LabelPair
+{
+ const u8 *prefix;
+ const u8 *suffix;
+};
+
+struct Unk03005E20
+{
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 (*var_8)[];
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+void sub_8106630(u32);
+
+#endif
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
new file mode 100644
index 000000000..713d491b6
--- /dev/null
+++ b/include/dewford_trend.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_DEWFORDTREND_H
+#define GUARD_DEWFORDTREND_H
+
+#define ARRAY_2007800 ((struct EasyChatPair *)(unk_2000000 + 0x7800))
+#define ARRAY_2007900 ((struct EasyChatPair *)(unk_2000000 + 0x7900))
+
+void sub_80FA17C(void);
+void sub_80FA4E4(void *, u32, u8);
+
+#endif
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
new file mode 100644
index 000000000..3f17ebee9
--- /dev/null
+++ b/include/field_control_avatar.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_FIELDCONTROLAVATAR_H
+#define GUARD_FIELDCONTROLAVATAR_H
+
+void FieldClearPlayerInput(struct FieldInput *pStruct);
+void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys);
+int sub_8068024(struct FieldInput *pStruct);
+u8 *sub_80682A8(struct MapPosition *, u8, u8);
+void overworld_poison_timer_set(void);
+void prev_quest_postbuffer_cursor_backup_reset(void);
+u8 *sub_8068E24(struct MapPosition *);
+u8 *GetFieldObjectScriptPointerForComparison();
+
+#endif
diff --git a/include/field_door.h b/include/field_door.h
new file mode 100644
index 000000000..1759e0dc1
--- /dev/null
+++ b/include/field_door.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_FIELDDOOR_H
+#define GUARD_FIELDDOOR_H
+
+struct DoorGraphics
+{
+ u16 metatileNum;
+ u8 unk2;
+ void *tiles;
+ void *palette;
+};
+
+struct DoorAnimFrame
+{
+ u8 time;
+ u16 offset;
+};
+
+void FieldSetDoorOpened(u32, u32);
+void FieldSetDoorClosed(u32, u32);
+s8 FieldAnimateDoorClose(u32, u32);
+s8 FieldAnimateDoorOpen(u32, u32);
+bool8 FieldIsDoorAnimationRunning(void);
+u32 sub_8058790(u32 x, u32 y);
+
+#endif
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index c31b0fc2a..dfc41d38b 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -6,6 +6,6 @@
void sub_805C058(struct MapObject *mapObject, s16 a, s16 b);
void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18);
void MoveCoords(u8 direction, s16 *x, s16 *y);
-void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)(void));
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)());
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
new file mode 100644
index 000000000..5498bde12
--- /dev/null
+++ b/include/field_map_obj_helpers.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_FIELDMAPOBJHELP_H
+#define GUARD_FIELDMAPOBJHELP_H
+
+bool8 FreezeMapObject(struct MapObject *);
+void FreezeMapObjects(void);
+void FreezeMapObjectsExceptOne(u8);
+void UnfreezeMapObjects(void);
+void sub_806487C(struct Sprite *sprite, bool8 invisible);
+void sub_8064990(u8, u8);
+
+#endif
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 9f6f634f7..a4f77a172 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -34,28 +34,28 @@ void SetPlayerAvatarTransitionFlags(u16 a);
// sub_80591F4
void sub_8059204(void);
// player_get_x22
-// player_npc_set_state_and_x22_etc
+void PlayerSetAnimId(u8 a, u8 b);
void PlayerGoSpeed0(u8 a);
void sub_80593C4(u8 a);
void npc_use_some_d2s(u8 a);
-// sub_80593F4
+void sub_80593F4(u8 a);
void sub_805940C(u8 a);
-// PlayerOnBikeCollide
+void PlayerOnBikeCollide(u8);
void PlayerFaceDirection(u8 a);
void PlayerTurnInPlace(u8 a);
void PlayerJumpLedge(u8 a);
void sub_80594C0(void);
-// sub_8059504
-// sub_805951C
-// sub_8059534
-// sub_805954C
-// sub_8059570
-// sub_8059594
-// sub_80595B8
-// sub_80595DC
-// sub_8059600
-// sub_8059618
-// sub_8059630
+void sub_8059504(u8 a);
+void PlayerStartWheelie(u8 a);
+void sub_8059534(u8 a);
+void sub_805954C(u8 a);
+void sub_8059570(u8 a);
+void sub_8059594(u8 a);
+void sub_80595B8(u8 a);
+void sub_80595DC(u8 a);
+void sub_8059600(u8 a);
+void sub_8059618(u8 a);
+void sub_8059630(u8 a);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y);
void PlayerGetDestCoords(s16 *, s16 *);
u8 player_get_direction_lower_nybble(void);
@@ -66,21 +66,21 @@ u8 TestPlayerAvatarFlags(u8);
// GetPlayerAvatarObjectId
void sub_80597E8(void);
void sub_80597F4(void);
-u8 sub_805983C(u8 a, u8 b);
+u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 a, u8 b);
u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
-// GetPlayerAvatarGenderByGraphicsId
-// PartyHasMonWithSurf
-// IsPlayerSurfingNorth
+u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId);
+bool8 PartyHasMonWithSurf(void);
+bool8 IsPlayerSurfingNorth(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
// ClearPlayerAvatarInfo
void SetPlayerAvatarStateMask(u8 a);
-// GetPlayerAvatarGraphicsIdByCurrentState
-// SetPlayerAvatarExtraStateTransition
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void SetPlayerAvatarExtraStateTransition(u8 a, u8 b);
void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
// sub_8059B88
-// sub_8059BF4
+void sub_8059BF4(void);
// sub_8059C3C
-// sub_8059C94
+void sub_8059C94(u8);
// sub_8059D08
// sub_8059E84
// sub_8059EA4
diff --git a/include/fieldmap.h b/include/fieldmap.h
new file mode 100644
index 000000000..936d27b4a
--- /dev/null
+++ b/include/fieldmap.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELDMAP2_H
+#define GUARD_FIELDMAP2_H
+
+struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);
+
+#endif
diff --git a/include/fonts/.gitignore b/include/fonts/.gitignore
deleted file mode 100644
index 6e5bdcae2..000000000
--- a/include/fonts/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-font0_lat_glyphs.h
-font1_lat_glyphs.h
-font0_jpn_glyphs.h
-font1_jpn_glyphs.h
-braille_glyphs.h
-down_arrow_tiles.h
-unknown_palette_81E6692.h
-default_palette.h
diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h
index 6156b6c14..cbcfb5466 100644
--- a/include/gba/flash_internal.h
+++ b/include/gba/flash_internal.h
@@ -65,6 +65,10 @@ u16 ReadFlashId(void);
void StartFlashTimer(u8 phase);
void SetReadFlash1(u16 *dest);
void StopFlashTimer(void);
+u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
+u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src);
+void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);
+u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n);
u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData);
@@ -73,4 +77,7 @@ u16 EraseFlashSector_MX(u16 sectorNum);
u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data);
u16 ProgramFlashSector_MX(u16 sectorNum, u8 *src);
+// agb_flash_1m
+u16 IdentifyFlash(void);
+
#endif // GUARD_GBA_FLASH_INTERNAL_H
diff --git a/include/gba/gba.h b/include/gba/gba.h
index 26342cf88..42ae3cdde 100644
--- a/include/gba/gba.h
+++ b/include/gba/gba.h
@@ -4,6 +4,7 @@
#include "gba/defines.h"
#include "gba/io_reg.h"
#include "gba/types.h"
+#include "gba/multiboot.h"
#include "gba/syscall.h"
#include "gba/macro.h"
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 0be92fa60..c0874bcbb 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -495,12 +495,12 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000
-#define DISPCNT_MODE_1 0x0001
-#define DISPCNT_MODE_2 0x0002
-#define DISPCNT_MODE_3 0x0003
-#define DISPCNT_MODE_4 0x0004
-#define DISPCNT_MODE_5 0x0005
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -521,6 +521,26 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BGCNT
+#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_MOSAIC 0x0040
+#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
+#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
+#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
+#define BGCNT_TXT512x256 0x4000
+#define BGCNT_TXT256x512 0x8000
+#define BGCNT_TXT512x512 0xC000
+#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
+#define BGCNT_AFF256x256 0x4000
+#define BGCNT_AFF512x512 0x8000
+#define BGCNT_AFF1024x1024 0xC000
+
+// BLDCNT
+
+
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
#define SOUND_CGB_MIX_HALF 0x0001
@@ -577,6 +597,8 @@
#define TIMER_ENABLE 0x80
// serial
+#define SIO_ID 0x0030 // Communication ID
+
#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode
#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode
#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode
@@ -589,6 +611,7 @@
#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal
#define SIO_MULTI_SD 0x0008 // SD terminal
+#define SIO_MULTI_BUSY 0x0080
#define SIO_ERROR 0x0040 // Detect error
#define SIO_START 0x0080 // Start transfer
diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h
new file mode 100644
index 000000000..e88b43a19
--- /dev/null
+++ b/include/gba/multiboot.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_GBA_MULTIBOOT_H
+#define GUARD_GBA_MULTIBOOT_H
+
+#define MULTIBOOT_NCHILD 3 // Maximum number of slaves
+#define MULTIBOOT_HEADER_SIZE 0xc0 // Header size
+#define MULTIBOOT_SEND_SIZE_MIN 0x100 // Minimum transmission size
+#define MULTIBOOT_SEND_SIZE_MAX 0x40000 // Maximum transmission size
+
+struct MultiBootParam
+{
+ u32 system_work[5];
+ u8 handshake_data;
+ u8 padding;
+ u16 handshake_timeout;
+ u8 probe_count;
+ u8 client_data[MULTIBOOT_NCHILD];
+ u8 palette_data;
+ u8 response_bit;
+ u8 client_bit;
+ u8 reserved1;
+ u8 *boot_srcp;
+ u8 *boot_endp;
+ u8 *masterp;
+ u8 *reserved2[MULTIBOOT_NCHILD];
+ u32 system_work2[4];
+ u8 sendflag;
+ u8 probe_target_bit;
+ u8 check_wait;
+ u8 server_type;
+};
+
+#define MULTIBOOT_ERROR_04 0x04
+#define MULTIBOOT_ERROR_08 0x08
+#define MULTIBOOT_ERROR_0c 0x0c
+#define MULTIBOOT_ERROR_40 0x40
+#define MULTIBOOT_ERROR_44 0x44
+#define MULTIBOOT_ERROR_48 0x48
+#define MULTIBOOT_ERROR_4c 0x4c
+#define MULTIBOOT_ERROR_80 0x80
+#define MULTIBOOT_ERROR_84 0x84
+#define MULTIBOOT_ERROR_88 0x88
+#define MULTIBOOT_ERROR_8c 0x8c
+#define MULTIBOOT_ERROR_NO_PROBE_TARGET 0x50
+#define MULTIBOOT_ERROR_NO_DLREADY 0x60
+#define MULTIBOOT_ERROR_BOOT_FAILURE 0x70
+#define MULTIBOOT_ERROR_HANDSHAKE_FAILURE 0x71
+
+#define MULTIBOOT_CONNECTION_CHECK_WAIT 15
+
+#define MULTIBOOT_SERVER_TYPE_NORMAL 0
+#define MULTIBOOT_SERVER_TYPE_QUICK 1
+
+#define MULTIBOOT_HANDSHAKE_TIMEOUT 400
+
+#endif // GUARD_GBA_MULTIBOOT_H
diff --git a/include/gba/syscall.h b/include/gba/syscall.h
index e47f964d1..deddec5ba 100644
--- a/include/gba/syscall.h
+++ b/include/gba/syscall.h
@@ -43,4 +43,6 @@ void RLUnCompWram(const void *src, void *dest);
void RLUnCompVram(const void *src, void *dest);
+int MultiBoot(struct MultiBootParam *mp);
+
#endif // GUARD_GBA_SYSCALL_H
diff --git a/include/global.berry.h b/include/global.berry.h
index 8b98a5f58..b7938868d 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -3,13 +3,13 @@
struct Berry
{
- u8 name[7];
+ const u8 name[7];
u8 firmness;
u16 size;
u8 maxYield;
u8 minYield;
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u8 stageDuration;
u8 spicy;
u8 dry;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 95ccf2614..508d7e4ed 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -14,16 +14,16 @@ enum
// map types
enum
{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
+ MAP_TYPE_0,
+ MAP_TYPE_TOWN,
+ MAP_TYPE_CITY,
+ MAP_TYPE_ROUTE,
+ MAP_TYPE_UNDERGROUND,
+ MAP_TYPE_UNDERWATER,
+ MAP_TYPE_6,
+ MAP_TYPE_7,
+ MAP_TYPE_INDOOR,
+ MAP_TYPE_SECRET_BASE
};
// map battle scenes
@@ -66,28 +66,35 @@ struct MapData
struct MapObjectTemplate
{
/*0x00*/ u8 localId;
- /*0x01*/ u8 filler_1[0x3];
+ /*0x01*/ u8 graphicsId;
+ /*0x02*/ u8 unk2;
/*0x04*/ s16 x;
/*0x06*/ s16 y;
/*0x08*/ u8 elevation;
/*0x09*/ u8 movementType;
- /*0x0A*/ u8 filler_A[0x6];
+ /*0x0A*/ u8 unkA_0:4;
+ u8 unkA_4:4;
+ ///*0x0B*/ u8 fillerB[1];
+ /*0x0C*/ u16 unkC;
+ /*0x0E*/ u16 unkE;
/*0x10*/ u8 *script;
- /*0x14*/ u8 filler_14[0x4];
+ /*0x14*/ u16 flagId;
+ /*0x16*/ u8 filler_16[2];
}; /*size = 0x18*/
struct WarpEvent
{
s16 x, y;
s8 warpId;
- s8 mapGroup;
- s8 mapNum;
+ u8 mapGroup;
+ u8 mapNum;
+ u8 unk7;
};
struct CoordEvent
{
s16 x, y;
- u8 filler_4;
+ u8 unk4;
u8 filler_5;
u16 trigger;
u16 index;
@@ -98,10 +105,23 @@ struct CoordEvent
struct BgEvent
{
s16 x, y;
- u8 filler_4;
+ u8 unk4;
u8 kind;
- s16 filler_6;
- u8 *script;
+ // 0x2 padding for the union beginning.
+ 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 *script;
+
+ // hidden item type probably
+ struct {
+ u8 filler6[0x2];
+ u16 hiddenItemId; // flag offset to determine flag lookup
+ } hiddenItem;
+
+ // secret base type
+ u16 secretBaseId;
+
+ } bgUnion;
};
struct MapEvents
@@ -119,10 +139,10 @@ struct MapEvents
struct MapConnection
{
- u8 direction;
- u32 offset;
- u8 mapGroup;
- u8 mapNum;
+ /*0x00*/ u8 direction;
+ /*0x01*/ u32 offset;
+ /*0x05*/ u8 mapGroup;
+ /*0x06*/ u8 mapNum;
};
struct MapConnections
@@ -195,7 +215,7 @@ struct MapObject
/*0x0C*/ struct Coords16 coords1;
/*0x10*/ struct Coords16 coords2;
/*0x14*/ struct Coords16 coords3;
- /*0x18*/ u8 mapobj_unk_18:4;
+ /*0x18*/ u8 mapobj_unk_18:4; //current direction?
/*0x18*/ u8 placeholder18:4;
/*0x19*/ u8 mapobj_unk_19;
/*0x1A*/ u8 mapobj_unk_1A;
@@ -206,7 +226,7 @@ struct MapObject
/*0x1F*/ u8 mapobj_unk_1F;
/*0x20*/ u8 mapobj_unk_20;
/*0x21*/ u8 mapobj_unk_21;
- /*0x22*/ u8 mapobj_unk_22;
+ /*0x22*/ u8 animId;
/*size = 0x24*/
};
@@ -274,22 +294,22 @@ struct MapObject2
struct MapObjectGraphicsInfo
{
- u16 tileTag;
- u16 paletteTag1;
- u16 paletteTag2;
- u16 size;
- s16 width;
- s16 height;
- u8 paletteSlot:4;
- u8 shadowSize:2;
- u8 inanimate:1;
- u8 disableReflectionPaletteLoad:1;
- u8 tracks;
- struct OamData *oam;
- struct SubspriteTable *subspriteTables;
- union AnimCmd **anims;
- struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ /*0x00*/ u16 tileTag;
+ /*0x02*/ u16 paletteTag1;
+ /*0x04*/ u16 paletteTag2;
+ /*0x06*/ u16 size;
+ /*0x08*/ s16 width;
+ /*0x0A*/ s16 height;
+ /*0x0C*/ u8 paletteSlot:4;
+ u8 shadowSize:2;
+ u8 inanimate:1;
+ u8 disableReflectionPaletteLoad:1;
+ /*0x0D*/ u8 tracks;
+ /*0x10*/ struct OamData *oam;
+ /*0x14*/ struct SubspriteTable *subspriteTables;
+ /*0x18*/ const union AnimCmd *const *anims;
+ /*0x1C*/ struct SpriteFrameImage *images;
+ /*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
@@ -301,7 +321,32 @@ struct MapObjectGraphicsInfo
#define PLAYER_AVATAR_FLAG_6 (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
-struct PlayerAvatar
+enum
+{
+ ACRO_BIKE_NORMAL,
+ ACRO_BIKE_TURNING,
+ ACRO_BIKE_WHEELIE_STANDING,
+ ACRO_BIKE_BUNNY_HOP,
+ ACRO_BIKE_WHEELIE_MOVING,
+ ACRO_BIKE_STATE5,
+ ACRO_BIKE_STATE6,
+};
+
+enum
+{
+ DIR_NONE,
+ DIR_SOUTH,
+ DIR_NORTH,
+ DIR_WEST,
+ DIR_EAST,
+};
+
+enum
+{
+ COLLISION_LEDGE_JUMP = 6
+};
+
+struct PlayerAvatar /* 0x202E858 */
{
/*0x00*/ u8 flags;
/*0x01*/ u8 bike;
@@ -311,9 +356,24 @@ struct PlayerAvatar
/*0x05*/ u8 mapObjectId;
/*0x06*/ u8 unk6;
/*0x07*/ u8 gender;
+ u8 acroBikeState;
+ u8 unk9;
+ u8 bikeFrameCounter;
+ u8 unkB;
+ u32 unkC;
+ u32 unk10;
+ u8 unk14[8];
+ u8 unk1C[8];
// TODO: rest of struct
};
+struct Camera
+{
+ bool8 field_0:1;
+ s32 x;
+ s32 y;
+};
+
extern struct MapObject gMapObjects[];
extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
diff --git a/include/global.h b/include/global.h
index a5932d175..ad08af84f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -15,11 +15,6 @@
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
-extern u8 gStringVar1[];
-extern u8 gStringVar2[];
-extern u8 gStringVar3[];
-extern u8 gStringVar4[];
-
enum
{
VERSION_SAPPHIRE = 1,
@@ -76,6 +71,11 @@ enum
BAG_KEYITEMS
};
+struct TextStruct
+{
+ const u8 *text;
+};
+
struct Coords16
{
s16 x;
@@ -172,7 +172,8 @@ struct RamScript
struct SB1_2EFC_Struct
{
- u8 unknown[0x20];
+ u16 var;
+ u8 unknown[0x1E];
};
struct EasyChatPair
@@ -271,7 +272,55 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
-struct SaveBlock1
+struct UnkMauvilleOldManStruct
+{
+ u8 unk_2D94;
+ u8 unk_2D95;
+ /*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
+ /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
+ /*0x2DAE*/ u8 playerName[8];
+ /*0x2DB6*/ u8 filler_2DB6[0x3];
+ /*0x2DB9*/ u8 playerTrainerId[4];
+ u8 unk_2DBD;
+ /* size = 0x2C */
+};
+
+struct UnkMauvilleOldManStruct2
+{
+ u8 filler0;
+ u8 unk1;
+ u8 unk2;
+ u16 mauvilleOldMan_ecArray[10];
+ u16 mauvilleOldMan_ecArray2[6];
+ u8 fillerF[0x2];
+ /* size = 0x2C */
+};
+
+typedef union OldMan {
+ struct UnkMauvilleOldManStruct oldMan1;
+ struct UnkMauvilleOldManStruct2 oldMan2;
+} OldMan;
+
+struct Unk_SB_Access_Struct1
+{
+ u8 filler0[0xF8];
+ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
+};
+
+struct Unk_SB_Access_Struct2
+{
+ struct SB1_2EFC_Struct sb1_2EFC_struct2[12]; // each is 0x20
+ /*0x2F84*/ u8 filler[0x18];
+};
+
+/*0x2E04*/
+typedef union SB_Struct {
+ struct Unk_SB_Access_Struct1 unkSB1;
+ struct Unk_SB_Access_Struct2 unkSB2;
+} SB_Struct;
+// size is 0x198
+
+struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
/*0x04*/ struct WarpData location;
@@ -336,10 +385,12 @@ struct SaveBlock1
/*0x2B1C*/ u16 unk2B1C[4];
/*0x2B24*/ u8 filler_2B24[0x28];
/*0x2B4C*/ struct MailStruct mail[16];
- /*0x2D8C*/ u8 filler_2D8C[0x48];
+ /*0x2D8C*/ u8 filler_2D8C[0x8];
+ /*0x2D94*/ OldMan oldMan;
+ /*0x2DC0*/ u8 unk_2DC0[0x14];
/*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];
+ /*0x2DFC*/ u8 filler_2DFC[0x8];
+ /*0x2E04*/ SB_Struct sbStruct;
/*0x2F9C*/ u8 filler_2F9C[0xA0];
/*0x303C*/ u8 filler_303C[0x38];
/*0x3074*/ u8 filler_3074[0x42];
@@ -380,7 +431,14 @@ struct Pokedex
struct SaveBlock2_Sub
{
- /*0x0000, 0x00A8*/ u8 filler_000[0x4C8];
+ /*0x0000, 0x00A8*/ u8 filler_000[0x4AE];
+ /*0x04AE, 0x0556*/ u8 var_4AE;
+ /*0x04AF, 0x0557*/ u8 var_4AF;
+ /*0x04B0, 0x0558*/ u16 var_4B0;
+ /*0x04B2, 0x055A*/ u16 var_4B2;
+ /*0x04B4, 0x055C*/ u16 var_4B4;
+ /*0x04B6, 0x055E*/ u16 var_4B6;
+ /*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
/*0x04CC, 0x0574*/ u8 filler_4CC[0x31C];
@@ -410,11 +468,11 @@ struct SaveBlock2 /* 0x02024EA4 */
/*0xA8*/ struct SaveBlock2_Sub filler_A8;
};
-struct UnkStruct_8054FF8_Substruct
+struct MapPosition
{
s16 x;
s16 y;
- u8 field_8;
+ u8 height;
};
struct UnkStruct_8054FF8
@@ -423,7 +481,7 @@ struct UnkStruct_8054FF8
u8 b;
u8 c;
u8 d;
- struct UnkStruct_8054FF8_Substruct sub;
+ struct MapPosition sub;
u16 field_C;
};
diff --git a/include/heal_location.h b/include/heal_location.h
index 785918bd6..94dac2417 100644
--- a/include/heal_location.h
+++ b/include/heal_location.h
@@ -5,10 +5,10 @@
struct HealLocation
{
- s8 group;
- s8 map;
- u16 x;
- u16 y;
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum);
diff --git a/include/intro.h b/include/intro.h
index a859a9ce4..7fdbd9cb0 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -3,5 +3,6 @@
void c2_copyright_1(void);
void CB2_InitCopyrightScreen(void);
+void sub_813CE30(u16, u16, u16, u16);
#endif // GUARD_INTRO_H
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
index b4d1cd231..33c9f6bfa 100644
--- a/include/libgncmultiboot.h
+++ b/include/libgncmultiboot.h
@@ -3,8 +3,8 @@
struct GcmbStruct
{
- u16 gcmb_field_0;
- u8 gcmb_field_2;
+ u16 gcmb_field_0;
+ u8 gcmb_field_2;
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
diff --git a/include/link.h b/include/link.h
index 49dff6547..f88cf8f5a 100644
--- a/include/link.h
+++ b/include/link.h
@@ -65,11 +65,11 @@ struct LinkPlayer
/* 0x00 */ u16 version;
/* 0x02 */ u16 lp_field_2;
/* 0x04 */ u32 trainerId;
- /* 0x05 */ u8 name[11];
- /* 0x10 */ u8 gender;
+ /* 0x08 */ u8 name[11];
+ /* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
/* 0x18 */ u16 lp_field_18;
- /* 0x20 */ u16 language;
+ /* 0x1A */ u16 language;
};
struct LinkPlayerBlock
diff --git a/include/link/.gitignore b/include/link/.gitignore
deleted file mode 100644
index 266afbe6e..000000000
--- a/include/link/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-digit_tiles.h
-digit_palette.h
diff --git a/include/load_save.h b/include/load_save.h
index a3c2c609c..0abc9985d 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -1,6 +1,8 @@
#ifndef GUARD_LOAD_SAVE_H
#define GUARD_LOAD_SAVE_H
+extern bool32 gFlashMemoryPresent;
+
void CheckForFlashMemory(void);
bool32 GetSecretBase2Field_9(void);
void ClearSecretBase2Field_9(void);
diff --git a/include/map_constants.h b/include/map_constants.h
new file mode 100644
index 000000000..f525f43a3
--- /dev/null
+++ b/include/map_constants.h
@@ -0,0 +1,1098 @@
+#ifndef GUARD_MAP_CONSTANTS_H
+#define GUARD_MAP_CONSTANTS_H
+
+//--------------------------------------------------
+// Map Group 0
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY,
+ MAP_ID_SLATEPORT_CITY,
+ MAP_ID_MAUVILLE_CITY,
+ MAP_ID_RUSTBORO_CITY,
+ MAP_ID_FORTREE_CITY,
+ MAP_ID_LILYCOVE_CITY,
+ MAP_ID_MOSSDEEP_CITY,
+ MAP_ID_SOOTOPOLIS_CITY,
+ MAP_ID_EVER_GRANDE_CITY,
+ MAP_ID_LITTLEROOT_TOWN,
+ MAP_ID_OLDALE_TOWN,
+ MAP_ID_DEWFORD_TOWN,
+ MAP_ID_LAVARIDGE_TOWN,
+ MAP_ID_FALLARBOR_TOWN,
+ MAP_ID_VERDANTURF_TOWN,
+ MAP_ID_PACIFIDLOG_TOWN,
+ MAP_ID_ROUTE101,
+ MAP_ID_ROUTE102,
+ MAP_ID_ROUTE103,
+ MAP_ID_ROUTE104,
+ MAP_ID_ROUTE105,
+ MAP_ID_ROUTE106,
+ MAP_ID_ROUTE107,
+ MAP_ID_ROUTE108,
+ MAP_ID_ROUTE109,
+ MAP_ID_ROUTE110,
+ MAP_ID_ROUTE111,
+ MAP_ID_ROUTE112,
+ MAP_ID_ROUTE113,
+ MAP_ID_ROUTE114,
+ MAP_ID_ROUTE115,
+ MAP_ID_ROUTE116,
+ MAP_ID_ROUTE117,
+ MAP_ID_ROUTE118,
+ MAP_ID_ROUTE119,
+ MAP_ID_ROUTE120,
+ MAP_ID_ROUTE121,
+ MAP_ID_ROUTE122,
+ MAP_ID_ROUTE123,
+ MAP_ID_ROUTE124,
+ MAP_ID_ROUTE125,
+ MAP_ID_ROUTE126,
+ MAP_ID_ROUTE127,
+ MAP_ID_ROUTE128,
+ MAP_ID_ROUTE129,
+ MAP_ID_ROUTE130,
+ MAP_ID_ROUTE131,
+ MAP_ID_ROUTE132,
+ MAP_ID_ROUTE133,
+ MAP_ID_ROUTE134,
+ MAP_ID_UNDERWATER1,
+ MAP_ID_UNDERWATER2,
+ MAP_ID_UNDERWATER3,
+ MAP_ID_UNDERWATER4,
+};
+
+#define MAP_GROUP_PETALBURG_CITY 0
+#define MAP_GROUP_SLATEPORT_CITY 0
+#define MAP_GROUP_MAUVILLE_CITY 0
+#define MAP_GROUP_RUSTBORO_CITY 0
+#define MAP_GROUP_FORTREE_CITY 0
+#define MAP_GROUP_LILYCOVE_CITY 0
+#define MAP_GROUP_MOSSDEEP_CITY 0
+#define MAP_GROUP_SOOTOPOLIS_CITY 0
+#define MAP_GROUP_EVER_GRANDE_CITY 0
+#define MAP_GROUP_LITTLEROOT_TOWN 0
+#define MAP_GROUP_OLDALE_TOWN 0
+#define MAP_GROUP_DEWFORD_TOWN 0
+#define MAP_GROUP_LAVARIDGE_TOWN 0
+#define MAP_GROUP_FALLARBOR_TOWN 0
+#define MAP_GROUP_VERDANTURF_TOWN 0
+#define MAP_GROUP_PACIFIDLOG_TOWN 0
+#define MAP_GROUP_ROUTE101 0
+#define MAP_GROUP_ROUTE102 0
+#define MAP_GROUP_ROUTE103 0
+#define MAP_GROUP_ROUTE104 0
+#define MAP_GROUP_ROUTE105 0
+#define MAP_GROUP_ROUTE106 0
+#define MAP_GROUP_ROUTE107 0
+#define MAP_GROUP_ROUTE108 0
+#define MAP_GROUP_ROUTE109 0
+#define MAP_GROUP_ROUTE110 0
+#define MAP_GROUP_ROUTE111 0
+#define MAP_GROUP_ROUTE112 0
+#define MAP_GROUP_ROUTE113 0
+#define MAP_GROUP_ROUTE114 0
+#define MAP_GROUP_ROUTE115 0
+#define MAP_GROUP_ROUTE116 0
+#define MAP_GROUP_ROUTE117 0
+#define MAP_GROUP_ROUTE118 0
+#define MAP_GROUP_ROUTE119 0
+#define MAP_GROUP_ROUTE120 0
+#define MAP_GROUP_ROUTE121 0
+#define MAP_GROUP_ROUTE122 0
+#define MAP_GROUP_ROUTE123 0
+#define MAP_GROUP_ROUTE124 0
+#define MAP_GROUP_ROUTE125 0
+#define MAP_GROUP_ROUTE126 0
+#define MAP_GROUP_ROUTE127 0
+#define MAP_GROUP_ROUTE128 0
+#define MAP_GROUP_ROUTE129 0
+#define MAP_GROUP_ROUTE130 0
+#define MAP_GROUP_ROUTE131 0
+#define MAP_GROUP_ROUTE132 0
+#define MAP_GROUP_ROUTE133 0
+#define MAP_GROUP_ROUTE134 0
+#define MAP_GROUP_UNDERWATER1 0
+#define MAP_GROUP_UNDERWATER2 0
+#define MAP_GROUP_UNDERWATER3 0
+#define MAP_GROUP_UNDERWATER4 0
+
+//--------------------------------------------------
+// Map Group 1
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
+};
+
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
+
+//--------------------------------------------------
+// Map Group 2
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_OLDALE_TOWN_HOUSE1,
+ MAP_ID_OLDALE_TOWN_HOUSE2,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_OLDALE_TOWN_MART,
+};
+
+#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
+#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
+#define MAP_GROUP_OLDALE_TOWN_MART 2
+
+//--------------------------------------------------
+// Map Group 3
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_DEWFORD_TOWN_HOUSE1,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_DEWFORD_TOWN_GYM,
+ MAP_ID_DEWFORD_TOWN_HALL,
+ MAP_ID_DEWFORD_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
+#define MAP_GROUP_DEWFORD_TOWN_GYM 3
+#define MAP_GROUP_DEWFORD_TOWN_HALL 3
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
+
+//--------------------------------------------------
+// Map Group 4
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
+ MAP_ID_LAVARIDGE_TOWN_GYM_1F,
+ MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
+ MAP_ID_LAVARIDGE_TOWN_HOUSE,
+ MAP_ID_LAVARIDGE_TOWN_MART,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
+#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
+
+//--------------------------------------------------
+// Map Group 5
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FALLARBOR_TOWN_MART,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_LOBBY,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_HALL,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_FALLARBOR_TOWN_HOUSE1,
+ MAP_ID_FALLARBOR_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_FALLARBOR_TOWN_MART 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_LOBBY 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_HALL 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
+
+//--------------------------------------------------
+// Map Group 6
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_VERDANTURF_TOWN_CONTEST_LOBBY,
+ MAP_ID_VERDANTURF_TOWN_CONTEST_HALL,
+ MAP_ID_VERDANTURF_TOWN_MART,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_HOUSE,
+};
+
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_LOBBY 6
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_HALL 6
+#define MAP_GROUP_VERDANTURF_TOWN_MART 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
+#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
+
+//--------------------------------------------------
+// Map Group 7
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
+};
+
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
+
+//--------------------------------------------------
+// Map Group 8
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
+ MAP_ID_PETALBURG_CITY_GYM,
+ MAP_ID_PETALBURG_CITY_HOUSE1,
+ MAP_ID_PETALBURG_CITY_HOUSE2,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_ID_PETALBURG_CITY_MART,
+};
+
+#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
+#define MAP_GROUP_PETALBURG_CITY_GYM 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
+#define MAP_GROUP_PETALBURG_CITY_MART 8
+
+//--------------------------------------------------
+// Map Group 9
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
+ MAP_ID_SLATEPORT_CITY_CONTEST_LOBBY,
+ MAP_ID_SLATEPORT_CITY_CONTEST_HALL,
+ MAP_ID_SLATEPORT_CITY_HOUSE1,
+ MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
+ MAP_ID_SLATEPORT_CITY_HARBOR,
+ MAP_ID_SLATEPORT_CITY_HOUSE2,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SLATEPORT_CITY_MART,
+};
+
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_LOBBY 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_HALL 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_MART 9
+
+//--------------------------------------------------
+// Map Group 10
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MAUVILLE_CITY_GYM,
+ MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
+ MAP_ID_MAUVILLE_CITY_HOUSE1,
+ MAP_ID_MAUVILLE_CITY_GAME_CORNER,
+ MAP_ID_MAUVILLE_CITY_HOUSE2,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MAUVILLE_CITY_MART,
+};
+
+#define MAP_GROUP_MAUVILLE_CITY_GYM 10
+#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
+#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
+#define MAP_GROUP_MAUVILLE_CITY_MART 10
+
+//--------------------------------------------------
+// Map Group 11
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
+ MAP_ID_RUSTBORO_CITY_GYM,
+ MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_ID_RUSTBORO_CITY_MART,
+ MAP_ID_RUSTBORO_CITY_FLAT1_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT1_2F,
+ MAP_ID_RUSTBORO_CITY_HOUSE1,
+ MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
+ MAP_ID_RUSTBORO_CITY_HOUSE2,
+ MAP_ID_RUSTBORO_CITY_FLAT2_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_2F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_3F,
+ MAP_ID_RUSTBORO_CITY_HOUSE3,
+};
+
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_GYM 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_MART 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
+#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
+
+//--------------------------------------------------
+// Map Group 12
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FORTREE_CITY_HOUSE1,
+ MAP_ID_FORTREE_CITY_GYM,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_FORTREE_CITY_MART,
+ MAP_ID_FORTREE_CITY_HOUSE2,
+ MAP_ID_FORTREE_CITY_HOUSE3,
+ MAP_ID_FORTREE_CITY_HOUSE4,
+ MAP_ID_FORTREE_CITY_HOUSE5,
+ MAP_ID_FORTREE_CITY_DECORATION_SHOP,
+};
+
+#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
+#define MAP_GROUP_FORTREE_CITY_GYM 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
+#define MAP_GROUP_FORTREE_CITY_MART 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
+#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
+
+//--------------------------------------------------
+// Map Group 13
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
+ MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
+ MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_LILYCOVE_CITY_UNUSED_MART,
+ MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
+ MAP_ID_LILYCOVE_CITY_HARBOR,
+ MAP_ID_LILYCOVE_CITY_EMPTY_MAP,
+ MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
+ MAP_ID_LILYCOVE_CITY_HOUSE1,
+ MAP_ID_LILYCOVE_CITY_HOUSE2,
+ MAP_ID_LILYCOVE_CITY_HOUSE3,
+ MAP_ID_LILYCOVE_CITY_HOUSE4,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
+};
+
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
+#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
+#define MAP_GROUP_LILYCOVE_CITY_EMPTY_MAP 13
+#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
+
+//--------------------------------------------------
+// Map Group 14
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MOSSDEEP_CITY_GYM,
+ MAP_ID_MOSSDEEP_CITY_HOUSE1,
+ MAP_ID_MOSSDEEP_CITY_HOUSE2,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_MART,
+ MAP_ID_MOSSDEEP_CITY_HOUSE3,
+ MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
+ MAP_ID_MOSSDEEP_CITY_HOUSE4,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
+};
+
+#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_MART 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
+#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
+
+//--------------------------------------------------
+// Map Group 15
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
+ MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SOOTOPOLIS_CITY_MART,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
+};
+
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
+
+//--------------------------------------------------
+// Map Group 16
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE,
+ MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE 16
+#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
+
+//--------------------------------------------------
+// Map Group 17
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
+ MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
+#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
+
+//--------------------------------------------------
+// Map Group 18
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
+ MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
+};
+
+#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
+#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
+
+//--------------------------------------------------
+// Map Group 19
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE112_CABLE_CAR_STATION,
+ MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
+};
+
+#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
+#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
+
+//--------------------------------------------------
+// Map Group 20
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
+ MAP_ID_ROUTE114_LANETTES_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
+#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
+
+//--------------------------------------------------
+// Map Group 21
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
+
+//--------------------------------------------------
+// Map Group 22
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE117_POKEMON_DAY_CARE,
+};
+
+#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
+
+//--------------------------------------------------
+// Map Group 23
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
+
+//--------------------------------------------------
+// Map Group 24
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_METEOR_FALLS_1F_1R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_B1F_1R,
+ MAP_ID_METEOR_FALLS_B1F_2R,
+ MAP_ID_RUSTURF_TUNNEL,
+ MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
+ MAP_ID_DESERT_RUINS,
+ MAP_ID_GRANITE_CAVE_1F,
+ MAP_ID_GRANITE_CAVE_B1F,
+ MAP_ID_GRANITE_CAVE_B2F,
+ MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
+ MAP_ID_PETALBURG_WOODS,
+ MAP_ID_MT_CHIMNEY,
+ MAP_ID_JAGGED_PASS,
+ MAP_ID_FIERY_PATH,
+ MAP_ID_MT_PYRE_1F,
+ MAP_ID_MT_PYRE_2F,
+ MAP_ID_MT_PYRE_3F,
+ MAP_ID_MT_PYRE_4F,
+ MAP_ID_MT_PYRE_5F,
+ MAP_ID_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_EXTERIOR,
+ MAP_ID_MT_PYRE_SUMMIT,
+ MAP_ID_AQUA_HIDEOUT_1F,
+ MAP_ID_AQUA_HIDEOUT_B1F,
+ MAP_ID_AQUA_HIDEOUT_B2F,
+ MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
+ MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM1,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM2,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM3,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM4,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM5,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM6,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM7,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM8,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM9,
+ MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
+ MAP_ID_CAVE_OF_ORIGIN_1F,
+ MAP_ID_CAVE_OF_ORIGIN_B1F,
+ MAP_ID_CAVE_OF_ORIGIN_B2F,
+ MAP_ID_CAVE_OF_ORIGIN_B3F,
+ MAP_ID_CAVE_OF_ORIGIN_B4F,
+ MAP_ID_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_B1F,
+ MAP_ID_VICTORY_ROAD_B2F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
+ MAP_ID_NEW_MAUVILLE_ENTRANCE,
+ MAP_ID_NEW_MAUVILLE_INSIDE,
+ MAP_ID_ABANDONED_SHIP_DECK,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_1F,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER1,
+ MAP_ID_ABANDONED_SHIP_ROOM_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER2,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
+ MAP_ID_ISLAND_CAVE,
+ MAP_ID_ANCIENT_TOMB,
+ MAP_ID_UNDERWATER_ROUTE134,
+ MAP_ID_UNDERWATER_SEALED_CHAMBER,
+ MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
+ MAP_ID_SEALED_CHAMBER_INNER_ROOM,
+ MAP_ID_SCORCHED_SLAB,
+ MAP_ID_MAGMA_HIDEOUT_1F,
+ MAP_ID_MAGMA_HIDEOUT_B1F,
+ MAP_ID_MAGMA_HIDEOUT_B2F,
+ MAP_ID_SKY_PILLAR_ENTRANCE,
+ MAP_ID_SKY_PILLAR_OUTSIDE,
+ MAP_ID_SKY_PILLAR_1F,
+ MAP_ID_SKY_PILLAR_2F,
+ MAP_ID_SKY_PILLAR_3F,
+ MAP_ID_SKY_PILLAR_4F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
+ MAP_ID_SKY_PILLAR_5F,
+ MAP_ID_SKY_PILLAR_TOP,
+};
+
+#define MAP_GROUP_METEOR_FALLS_1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_1F_2R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
+#define MAP_GROUP_RUSTURF_TUNNEL 24
+#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
+#define MAP_GROUP_DESERT_RUINS 24
+#define MAP_GROUP_GRANITE_CAVE_1F 24
+#define MAP_GROUP_GRANITE_CAVE_B1F 24
+#define MAP_GROUP_GRANITE_CAVE_B2F 24
+#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
+#define MAP_GROUP_PETALBURG_WOODS 24
+#define MAP_GROUP_MT_CHIMNEY 24
+#define MAP_GROUP_JAGGED_PASS 24
+#define MAP_GROUP_FIERY_PATH 24
+#define MAP_GROUP_MT_PYRE_1F 24
+#define MAP_GROUP_MT_PYRE_2F 24
+#define MAP_GROUP_MT_PYRE_3F 24
+#define MAP_GROUP_MT_PYRE_4F 24
+#define MAP_GROUP_MT_PYRE_5F 24
+#define MAP_GROUP_MT_PYRE_6F 24
+#define MAP_GROUP_MT_PYRE_EXTERIOR 24
+#define MAP_GROUP_MT_PYRE_SUMMIT 24
+#define MAP_GROUP_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
+#define MAP_GROUP_VICTORY_ROAD_1F 24
+#define MAP_GROUP_VICTORY_ROAD_B1F 24
+#define MAP_GROUP_VICTORY_ROAD_B2F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
+#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
+#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
+#define MAP_GROUP_ABANDONED_SHIP_DECK 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
+#define MAP_GROUP_ISLAND_CAVE 24
+#define MAP_GROUP_ANCIENT_TOMB 24
+#define MAP_GROUP_UNDERWATER_ROUTE134 24
+#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
+#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
+#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
+#define MAP_GROUP_SCORCHED_SLAB 24
+#define MAP_GROUP_MAGMA_HIDEOUT_1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
+#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
+#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
+#define MAP_GROUP_SKY_PILLAR_1F 24
+#define MAP_GROUP_SKY_PILLAR_2F 24
+#define MAP_GROUP_SKY_PILLAR_3F 24
+#define MAP_GROUP_SKY_PILLAR_4F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
+#define MAP_GROUP_SKY_PILLAR_5F 24
+#define MAP_GROUP_SKY_PILLAR_TOP 24
+
+//--------------------------------------------------
+// Map Group 25
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SECRET_BASE_RED_CAVE1,
+ MAP_ID_SECRET_BASE_BROWN_CAVE1,
+ MAP_ID_SECRET_BASE_BLUE_CAVE1,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE1,
+ MAP_ID_SECRET_BASE_TREE1,
+ MAP_ID_SECRET_BASE_SHRUB1,
+ MAP_ID_SECRET_BASE_RED_CAVE2,
+ MAP_ID_SECRET_BASE_BROWN_CAVE2,
+ MAP_ID_SECRET_BASE_BLUE_CAVE2,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE2,
+ MAP_ID_SECRET_BASE_TREE2,
+ MAP_ID_SECRET_BASE_SHRUB2,
+ MAP_ID_SECRET_BASE_RED_CAVE3,
+ MAP_ID_SECRET_BASE_BROWN_CAVE3,
+ MAP_ID_SECRET_BASE_BLUE_CAVE3,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE3,
+ MAP_ID_SECRET_BASE_TREE3,
+ MAP_ID_SECRET_BASE_SHRUB3,
+ MAP_ID_SECRET_BASE_RED_CAVE4,
+ MAP_ID_SECRET_BASE_BROWN_CAVE4,
+ MAP_ID_SECRET_BASE_BLUE_CAVE4,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE4,
+ MAP_ID_SECRET_BASE_TREE4,
+ MAP_ID_SECRET_BASE_SHRUB4,
+ MAP_ID_SINGLE_BATTLE_COLOSSEUM,
+ MAP_ID_TRADE_CENTER,
+ MAP_ID_RECORD_CORNER,
+ MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
+ MAP_ID_LINK_CONTEST_ROOM1,
+ MAP_ID_UNKNOWN_MAP_25_29,
+ MAP_ID_UNKNOWN_MAP_25_30,
+ MAP_ID_UNKNOWN_MAP_25_31,
+ MAP_ID_UNKNOWN_MAP_25_32,
+ MAP_ID_UNKNOWN_MAP_25_33,
+ MAP_ID_UNKNOWN_MAP_25_34,
+ MAP_ID_LINK_CONTEST_ROOM2,
+ MAP_ID_LINK_CONTEST_ROOM3,
+ MAP_ID_LINK_CONTEST_ROOM4,
+ MAP_ID_LINK_CONTEST_ROOM5,
+ MAP_ID_LINK_CONTEST_ROOM6,
+ MAP_ID_INSIDE_OF_TRUCK,
+ MAP_ID_SS_TIDAL_CORRIDOR,
+ MAP_ID_SS_TIDAL_LOWER_DECK,
+ MAP_ID_SS_TIDAL_ROOMS,
+};
+
+#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_TREE1 25
+#define MAP_GROUP_SECRET_BASE_SHRUB1 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_TREE2 25
+#define MAP_GROUP_SECRET_BASE_SHRUB2 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_TREE3 25
+#define MAP_GROUP_SECRET_BASE_SHRUB3 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_TREE4 25
+#define MAP_GROUP_SECRET_BASE_SHRUB4 25
+#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_TRADE_CENTER 25
+#define MAP_GROUP_RECORD_CORNER 25
+#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_LINK_CONTEST_ROOM1 25
+#define MAP_GROUP_UNKNOWN_MAP_25_29 25
+#define MAP_GROUP_UNKNOWN_MAP_25_30 25
+#define MAP_GROUP_UNKNOWN_MAP_25_31 25
+#define MAP_GROUP_UNKNOWN_MAP_25_32 25
+#define MAP_GROUP_UNKNOWN_MAP_25_33 25
+#define MAP_GROUP_UNKNOWN_MAP_25_34 25
+#define MAP_GROUP_LINK_CONTEST_ROOM2 25
+#define MAP_GROUP_LINK_CONTEST_ROOM3 25
+#define MAP_GROUP_LINK_CONTEST_ROOM4 25
+#define MAP_GROUP_LINK_CONTEST_ROOM5 25
+#define MAP_GROUP_LINK_CONTEST_ROOM6 25
+#define MAP_GROUP_INSIDE_OF_TRUCK 25
+#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
+#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
+#define MAP_GROUP_SS_TIDAL_ROOMS 25
+
+//--------------------------------------------------
+// Map Group 26
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SAFARI_ZONE_NORTHWEST,
+ MAP_ID_SAFARI_ZONE_NORTHEAST,
+ MAP_ID_SAFARI_ZONE_SOUTHWEST,
+ MAP_ID_SAFARI_ZONE_SOUTHEAST,
+ MAP_ID_BATTLE_TOWER_OUTSIDE,
+ MAP_ID_BATTLE_TOWER_LOBBY,
+ MAP_ID_BATTLE_TOWER_ELEVATOR,
+ MAP_ID_BATTLE_TOWER_CORRIDOR,
+ MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
+ MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
+ MAP_ID_SOUTHERN_ISLAND_INTERIOR,
+ MAP_ID_SAFARI_ZONE_REST_HOUSE,
+};
+
+#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
+#define MAP_GROUP_BATTLE_TOWER_OUTSIDE 26
+#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
+#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
+#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
+#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
+#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
+#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
+#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
+
+//--------------------------------------------------
+// Map Group 27
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_PROTOTYPE,
+ MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_PROTOTYPE 27
+#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
+
+//--------------------------------------------------
+// Map Group 28
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE109_SEASHORE_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
+
+//--------------------------------------------------
+// Map Group 29
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
+ MAP_ID_ROUTE110_TRICK_HOUSE_END,
+ MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
+
+//--------------------------------------------------
+// Map Group 30
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE113_GLASS_WORKSHOP,
+};
+
+#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
+
+//--------------------------------------------------
+// Map Group 31
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
+
+//--------------------------------------------------
+// Map Group 32
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
+ MAP_ID_ROUTE119_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
+#define MAP_GROUP_ROUTE119_HOUSE 32
+
+//--------------------------------------------------
+// Map Group 33
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
+
+#endif // GUARD_MAP_CONSTANTS_H
diff --git a/include/map_object_constants.h b/include/map_object_constants.h
new file mode 100644
index 000000000..440b6e97e
--- /dev/null
+++ b/include/map_object_constants.h
@@ -0,0 +1,226 @@
+#ifndef GUARD_MAP_OBJECT_CONSTANTS_H
+#define GUARD_MAP_OBJECT_CONSTANTS_H
+
+enum
+{
+ MAP_OBJ_GFX_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_BRENDAN_SURFING,
+ MAP_OBJ_GFX_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_QUINTY_PLUMP,
+ MAP_OBJ_GFX_LITTLE_BOY_1,
+ MAP_OBJ_GFX_LITTLE_GIRL_1,
+ MAP_OBJ_GFX_BOY_1,
+ MAP_OBJ_GFX_GIRL_1,
+ MAP_OBJ_GFX_BOY_2,
+ MAP_OBJ_GFX_GIRL_2,
+ MAP_OBJ_GFX_LITTLE_BOY_2,
+ MAP_OBJ_GFX_LITTLE_GIRL_2,
+ MAP_OBJ_GFX_BOY_3,
+ MAP_OBJ_GFX_GIRL_3,
+ MAP_OBJ_GFX_BOY_4,
+ MAP_OBJ_GFX_WOMAN_1,
+ MAP_OBJ_GFX_FAT_MAN,
+ MAP_OBJ_GFX_WOMAN_2,
+ MAP_OBJ_GFX_MAN_1,
+ MAP_OBJ_GFX_WOMAN_3,
+ MAP_OBJ_GFX_OLD_MAN_1,
+ MAP_OBJ_GFX_OLD_WOMAN_1,
+ MAP_OBJ_GFX_MAN_2,
+ MAP_OBJ_GFX_WOMAN_4,
+ MAP_OBJ_GFX_MAN_3,
+ MAP_OBJ_GFX_WOMAN_5,
+ MAP_OBJ_GFX_COOK,
+ MAP_OBJ_GFX_WOMAN_6,
+ MAP_OBJ_GFX_OLD_MAN_2,
+ MAP_OBJ_GFX_OLD_WOMAN_2,
+ MAP_OBJ_GFX_CAMPER,
+ MAP_OBJ_GFX_PICNICKER,
+ MAP_OBJ_GFX_MAN_4,
+ MAP_OBJ_GFX_WOMAN_7,
+ MAP_OBJ_GFX_YOUNGSTER,
+ MAP_OBJ_GFX_BUG_CATCHER,
+ MAP_OBJ_GFX_PSYCHIC_M,
+ MAP_OBJ_GFX_SCHOOL_KID_M,
+ MAP_OBJ_GFX_MANIAC,
+ MAP_OBJ_GFX_HEX_MANIAC,
+ MAP_OBJ_GFX_WOMAN_8,
+ MAP_OBJ_GFX_SWIMMER_M,
+ MAP_OBJ_GFX_SWIMMER_F,
+ MAP_OBJ_GFX_BLACK_BELT,
+ MAP_OBJ_GFX_BEAUTY,
+ MAP_OBJ_GFX_SCIENTIST_1,
+ MAP_OBJ_GFX_LASS,
+ MAP_OBJ_GFX_GENTLEMAN,
+ MAP_OBJ_GFX_SAILOR,
+ MAP_OBJ_GFX_FISHERMAN,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ MAP_OBJ_GFX_TUBER_F,
+ MAP_OBJ_GFX_TUBER_M,
+ MAP_OBJ_GFX_HIKER,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ MAP_OBJ_GFX_NURSE,
+ MAP_OBJ_GFX_ITEM_BALL,
+ MAP_OBJ_GFX_BERRY_TREE,
+ MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES,
+ MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES,
+ MAP_OBJ_GFX_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_PROF_BIRCH,
+ MAP_OBJ_GFX_MAN_5,
+ MAP_OBJ_GFX_MAN_6,
+ MAP_OBJ_GFX_REPORTER_M,
+ MAP_OBJ_GFX_REPORTER_F,
+ MAP_OBJ_GFX_BARD,
+ MAP_OBJ_GFX_HIPSTER,
+ MAP_OBJ_GFX_TRADER,
+ MAP_OBJ_GFX_STORYTELLER,
+ MAP_OBJ_GFX_GIDDY,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2,
+ MAP_OBJ_GFX_UNUSED_NATU_DOLL,
+ MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL,
+ MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL,
+ MAP_OBJ_GFX_UNUSED_WOOPER_DOLL,
+ MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL,
+ MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL,
+ MAP_OBJ_GFX_CUTTABLE_TREE,
+ MAP_OBJ_GFX_MART_EMPLOYEE,
+ MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN,
+ MAP_OBJ_GFX_TEALA,
+ MAP_OBJ_GFX_BREAKABLE_ROCK,
+ MAP_OBJ_GFX_PUSHABLE_BOULDER,
+ MAP_OBJ_GFX_MR_BRINEYS_BOAT,
+ MAP_OBJ_GFX_MAY_NORMAL,
+ MAP_OBJ_GFX_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_MAY_SURFING,
+ MAP_OBJ_GFX_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_TRUCK,
+ MAP_OBJ_GFX_MACHOKE_CARRYING_BOX,
+ MAP_OBJ_GFX_MACHOKE_FACING_AWAY,
+ MAP_OBJ_GFX_BIRCHS_BAG,
+ MAP_OBJ_GFX_POOCHYENA,
+ MAP_OBJ_GFX_ARTIST,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
+ MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_SURFING,
+ MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_CAMERAMAN,
+ MAP_OBJ_GFX_BRENDAN_UNDERWATER,
+ MAP_OBJ_GFX_MAY_UNDERWATER,
+ MAP_OBJ_GFX_MOVING_BOX,
+ MAP_OBJ_GFX_CABLE_CAR,
+ MAP_OBJ_GFX_SCIENTIST_2,
+ MAP_OBJ_GFX_MAN_7,
+ MAP_OBJ_GFX_AQUA_MEMBER_M,
+ MAP_OBJ_GFX_AQUA_MEMBER_F,
+ MAP_OBJ_GFX_MAGMA_MEMBER_M,
+ MAP_OBJ_GFX_MAGMA_MEMBER_F,
+ MAP_OBJ_GFX_SIDNEY,
+ MAP_OBJ_GFX_PHOEBE,
+ MAP_OBJ_GFX_GLACIA,
+ MAP_OBJ_GFX_DRAKE,
+ MAP_OBJ_GFX_ROXANNE,
+ MAP_OBJ_GFX_BRAWLY,
+ MAP_OBJ_GFX_WATTSON,
+ MAP_OBJ_GFX_FLANNERY,
+ MAP_OBJ_GFX_NORMAN,
+ MAP_OBJ_GFX_WINONA,
+ MAP_OBJ_GFX_LIZA,
+ MAP_OBJ_GFX_TATE,
+ MAP_OBJ_GFX_WALLACE,
+ MAP_OBJ_GFX_STEVEN,
+ MAP_OBJ_GFX_WALLY,
+ MAP_OBJ_GFX_LITTLE_BOY_3,
+ MAP_OBJ_GFX_BRENDAN_FISHING,
+ MAP_OBJ_GFX_MAY_FISHING,
+ MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN,
+ MAP_OBJ_GFX_SS_TIDAL,
+ MAP_OBJ_GFX_SUBMARINE_SHADOW,
+ MAP_OBJ_GFX_PICHU_DOLL,
+ MAP_OBJ_GFX_PIKACHU_DOLL,
+ MAP_OBJ_GFX_MARILL_DOLL,
+ MAP_OBJ_GFX_TOGEPI_DOLL,
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL,
+ MAP_OBJ_GFX_CHIKORITA_DOLL,
+ MAP_OBJ_GFX_TOTODILE_DOLL,
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL,
+ MAP_OBJ_GFX_MEOWTH_DOLL,
+ MAP_OBJ_GFX_CLEFAIRY_DOLL,
+ MAP_OBJ_GFX_DITTO_DOLL,
+ MAP_OBJ_GFX_SMOOCHUM_DOLL,
+ MAP_OBJ_GFX_TREECKO_DOLL,
+ MAP_OBJ_GFX_TORCHIC_DOLL,
+ MAP_OBJ_GFX_MUDKIP_DOLL,
+ MAP_OBJ_GFX_DUSKULL_DOLL,
+ MAP_OBJ_GFX_WYNAUT_DOLL,
+ MAP_OBJ_GFX_BALTOY_DOLL,
+ MAP_OBJ_GFX_KECLEON_DOLL,
+ MAP_OBJ_GFX_AZURILL_DOLL,
+ MAP_OBJ_GFX_SKITTY_DOLL,
+ MAP_OBJ_GFX_SWABLU_DOLL,
+ MAP_OBJ_GFX_GULPIN_DOLL,
+ MAP_OBJ_GFX_LOTAD_DOLL,
+ MAP_OBJ_GFX_SEEDOT_DOLL,
+ MAP_OBJ_GFX_PIKA_CUSHION,
+ MAP_OBJ_GFX_ROUND_CUSHION,
+ MAP_OBJ_GFX_KISS_CUSHION,
+ MAP_OBJ_GFX_ZIGZAG_CUSHION,
+ MAP_OBJ_GFX_SPIN_CUSHION,
+ MAP_OBJ_GFX_DIAMOND_CUSHION,
+ MAP_OBJ_GFX_BALL_CUSHION,
+ MAP_OBJ_GFX_GRASS_CUSHION,
+ MAP_OBJ_GFX_FIRE_CUSHION,
+ MAP_OBJ_GFX_WATER_CUSHION,
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL,
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL,
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL,
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL,
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL,
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL,
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL,
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL,
+ MAP_OBJ_GFX_BIG_REGICE_DOLL,
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL,
+ MAP_OBJ_GFX_LATIAS,
+ MAP_OBJ_GFX_LATIOS,
+ MAP_OBJ_GFX_BOY_5,
+ MAP_OBJ_GFX_CONTEST_JUDGE,
+ MAP_OBJ_GFX_BRENDAN_WATERING,
+ MAP_OBJ_GFX_MAY_WATERING,
+ MAP_OBJ_GFX_BRENDAN_DECORATING,
+ MAP_OBJ_GFX_MAY_DECORATING,
+ MAP_OBJ_GFX_ARCHIE,
+ MAP_OBJ_GFX_MAXIE,
+ MAP_OBJ_GFX_KYOGRE_1,
+ MAP_OBJ_GFX_GROUDON_1,
+ MAP_OBJ_GFX_FOSSIL,
+ MAP_OBJ_GFX_REGIROCK,
+ MAP_OBJ_GFX_REGICE,
+ MAP_OBJ_GFX_REGISTEEL,
+ MAP_OBJ_GFX_SKITTY,
+ MAP_OBJ_GFX_KECLEON_1,
+ MAP_OBJ_GFX_KYOGRE_2,
+ MAP_OBJ_GFX_GROUDON_2,
+ MAP_OBJ_GFX_RAYQUAZA,
+ MAP_OBJ_GFX_ZIGZAGOON,
+ MAP_OBJ_GFX_PIKACHU,
+ MAP_OBJ_GFX_AZUMARILL,
+ MAP_OBJ_GFX_WINGULL,
+ MAP_OBJ_GFX_KECLEON_2,
+ MAP_OBJ_GFX_TUBER_M_SWIMMING,
+ MAP_OBJ_GFX_AZURILL,
+ MAP_OBJ_GFX_MOM,
+ MAP_OBJ_GFX_LINK_BRENDAN,
+ MAP_OBJ_GFX_LINK_MAY,
+};
+
+#endif // GUARD_MAP_OBJECT_CONSTANTS_H \ No newline at end of file
diff --git a/include/matsuda_debug_menu.h b/include/matsuda_debug_menu.h
new file mode 100644
index 000000000..5df53d688
--- /dev/null
+++ b/include/matsuda_debug_menu.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_MATSUDADEBUG_H
+#define GUARD_MATSUDADEBUG_H
+
+#define BIT(n) (1 << (n))
+
+void sub_80AB184(void);
+void sub_80AA280(u8);
+void sub_80AA5E8(u8);
+void sub_80AA658(u8);
+
+#endif
diff --git a/include/menu.h b/include/menu.h
index 0e4860791..c3dcbc969 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -58,7 +58,7 @@ void sub_8072B80(u8 *, u8, u8, u8 *);
void sub_8072BD8(u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
u8 *sub_8072C44(u8 *, s32, u8, u8);
-u8 *sub_8072C74(u8 *, u8 *, u8, u8);
+u8 *sub_8072C74(u8 *, const u8 *, u8, u8);
u8 sub_8072CA4(u8 *s);
u8 sub_8072CBC(void);
void sub_8072CD4(u8 *, u8 *, u8 *);
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index e7b4adfbd..f4250f07b 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -72,7 +72,7 @@ bool8 MetatileBehavior_IsPuddle(u8);
bool8 MetatileBehavior_IsTallGrass(u8);
bool8 MetatileBehavior_IsLongGrass(u8);
bool8 MetatileBehavior_IsBerryTreeSoil(u8);
-bool8 MetatileBehavior_IsAsh(u8);
+bool8 MetatileBehavior_IsAshGrass(u8);
bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8);
bool8 MetatileBehavior_IsBridge(u8);
u8 sub_8057450(u8);
@@ -103,7 +103,7 @@ bool8 sub_80576DC(u8);
bool8 MetatileBehavior_IsPacifidlogLog(u8);
bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8);
bool8 MetatileBehavior_IsRegionMap(u8);
-bool8 MetatileBehavior_IsClosedSootpolisGymDoor(u8);
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8);
bool8 MetatileBehavior_IsRoulette(u8);
bool8 MetatileBehavior_IsPokeblockFeeder(u8);
bool8 MetatileBehavior_0xBB(u8);
@@ -123,7 +123,7 @@ bool8 MetatileBehavior_IsVerticalRail(u8);
bool8 MetatileBehavior_IsHorizontalRail(u8);
bool8 MetatileBehavior_IsSeaweed(u8);
bool8 MetatileBehavior_IsRunningDisallowed(u8);
-bool8 sub_80578F8(u8);
+bool8 MetatileBehavior_IsCuttableGrass(u8);
bool8 sub_805791C(u8);
bool8 MetatileBehavior_IsPictureBookShelf(u8);
bool8 MetatileBehavior_IsBookShelf(u8);
diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h
index ea705054e..1241fbb81 100644
--- a/include/metatile_behaviors.h
+++ b/include/metatile_behaviors.h
@@ -32,7 +32,7 @@
#define MB_ICE 0x20
#define MB_SAND 0x21
#define MB_SEAWEED 0x22
-#define MB_ASH 0x24
+#define MB_ASHGRASS 0x24
#define MB_25 0x25
#define MB_THIN_ICE 0x26
#define MB_CRACKED_ICE 0x27
diff --git a/include/moves.h b/include/moves.h
new file mode 100644
index 000000000..e3b6d3113
--- /dev/null
+++ b/include/moves.h
@@ -0,0 +1,363 @@
+#ifndef GUARD_MOVES_H
+#define GUARD_MOVES_H
+
+enum
+{
+ MOVE_NONE,
+ MOVE_POUND,
+ MOVE_KARATE_CHOP,
+ MOVE_DOUBLE_SLAP,
+ MOVE_COMET_PUNCH,
+ MOVE_MEGA_PUNCH,
+ MOVE_PAY_DAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_SCRATCH,
+ MOVE_VICE_GRIP,
+ MOVE_GUILLOTINE,
+ MOVE_RAZOR_WIND,
+ MOVE_SWORDS_DANCE,
+ MOVE_CUT,
+ MOVE_GUST,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_FLY,
+ MOVE_BIND,
+ MOVE_SLAM,
+ MOVE_VINE_WHIP,
+ MOVE_STOMP,
+ MOVE_DOUBLE_KICK,
+ MOVE_MEGA_KICK,
+ MOVE_JUMP_KICK,
+ MOVE_ROLLING_KICK,
+ MOVE_SAND_ATTACK,
+ MOVE_HEADBUTT,
+ MOVE_HORN_ATTACK,
+ MOVE_FURY_ATTACK,
+ MOVE_HORN_DRILL,
+ MOVE_TACKLE,
+ MOVE_BODY_SLAM,
+ MOVE_WRAP,
+ MOVE_TAKE_DOWN,
+ MOVE_THRASH,
+ MOVE_DOUBLE_EDGE,
+ MOVE_TAIL_WHIP,
+ MOVE_POISON_STING,
+ MOVE_TWINEEDLE,
+ MOVE_PIN_MISSILE,
+ MOVE_LEER,
+ MOVE_BITE,
+ MOVE_GROWL,
+ MOVE_ROAR,
+ MOVE_SING,
+ MOVE_SUPERSONIC,
+ MOVE_SONIC_BOOM,
+ MOVE_DISABLE,
+ MOVE_ACID,
+ MOVE_EMBER,
+ MOVE_FLAMETHROWER,
+ MOVE_MIST,
+ MOVE_WATER_GUN,
+ MOVE_HYDRO_PUMP,
+ MOVE_SURF,
+ MOVE_ICE_BEAM,
+ MOVE_BLIZZARD,
+ MOVE_PSYBEAM,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_HYPER_BEAM,
+ MOVE_PECK,
+ MOVE_DRILL_PECK,
+ MOVE_SUBMISSION,
+ MOVE_LOW_KICK,
+ MOVE_COUNTER,
+ MOVE_SEISMIC_TOSS,
+ MOVE_STRENGTH,
+ MOVE_ABSORB,
+ MOVE_MEGA_DRAIN,
+ MOVE_LEECH_SEED,
+ MOVE_GROWTH,
+ MOVE_RAZOR_LEAF,
+ MOVE_SOLAR_BEAM,
+ MOVE_POISON_POWDER,
+ MOVE_STUN_SPORE,
+ MOVE_SLEEP_POWDER,
+ MOVE_PETAL_DANCE,
+ MOVE_STRING_SHOT,
+ MOVE_DRAGON_RAGE,
+ MOVE_FIRE_SPIN,
+ MOVE_THUNDER_SHOCK,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER_WAVE,
+ MOVE_THUNDER,
+ MOVE_ROCK_THROW,
+ MOVE_EARTHQUAKE,
+ MOVE_FISSURE,
+ MOVE_DIG,
+ MOVE_TOXIC,
+ MOVE_CONFUSION,
+ MOVE_PSYCHIC,
+ MOVE_HYPNOSIS,
+ MOVE_MEDITATE,
+ MOVE_AGILITY,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAGE,
+ MOVE_TELEPORT,
+ MOVE_NIGHT_SHADE,
+ MOVE_MIMIC,
+ MOVE_SCREECH,
+ MOVE_DOUBLE_TEAM,
+ MOVE_RECOVER,
+ MOVE_HARDEN,
+ MOVE_MINIMIZE,
+ MOVE_SMOKESCREEN,
+ MOVE_CONFUSE_RAY,
+ MOVE_WITHDRAW,
+ MOVE_DEFENSE_CURL,
+ MOVE_BARRIER,
+ MOVE_LIGHT_SCREEN,
+ MOVE_HAZE,
+ MOVE_REFLECT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BIDE,
+ MOVE_METRONOME,
+ MOVE_MIRROR_MOVE,
+ MOVE_SELF_DESTRUCT,
+ MOVE_EGG_BOMB,
+ MOVE_LICK,
+ MOVE_SMOG,
+ MOVE_SLUDGE,
+ MOVE_BONE_CLUB,
+ MOVE_FIRE_BLAST,
+ MOVE_WATERFALL,
+ MOVE_CLAMP,
+ MOVE_SWIFT,
+ MOVE_SKULL_BASH,
+ MOVE_SPIKE_CANNON,
+ MOVE_CONSTRICT,
+ MOVE_AMNESIA,
+ MOVE_KINESIS,
+ MOVE_SOFT_BOILED,
+ MOVE_HI_JUMP_KICK,
+ MOVE_GLARE,
+ MOVE_DREAM_EATER,
+ MOVE_POISON_GAS,
+ MOVE_BARRAGE,
+ MOVE_LEECH_LIFE,
+ MOVE_LOVELY_KISS,
+ MOVE_SKY_ATTACK,
+ MOVE_TRANSFORM,
+ MOVE_BUBBLE,
+ MOVE_DIZZY_PUNCH,
+ MOVE_SPORE,
+ MOVE_FLASH,
+ MOVE_PSYWAVE,
+ MOVE_SPLASH,
+ MOVE_ACID_ARMOR,
+ MOVE_CRABHAMMER,
+ MOVE_EXPLOSION,
+ MOVE_FURY_SWIPES,
+ MOVE_BONEMERANG,
+ MOVE_REST,
+ MOVE_ROCK_SLIDE,
+ MOVE_HYPER_FANG,
+ MOVE_SHARPEN,
+ MOVE_CONVERSION,
+ MOVE_TRI_ATTACK,
+ MOVE_SUPER_FANG,
+ MOVE_SLASH,
+ MOVE_SUBSTITUTE,
+ MOVE_STRUGGLE,
+ MOVE_SKETCH,
+ MOVE_TRIPLE_KICK,
+ MOVE_THIEF,
+ MOVE_SPIDER_WEB,
+ MOVE_MIND_READER,
+ MOVE_NIGHTMARE,
+ MOVE_FLAME_WHEEL,
+ MOVE_SNORE,
+ MOVE_CURSE,
+ MOVE_FLAIL,
+ MOVE_CONVERSION_2,
+ MOVE_AEROBLAST,
+ MOVE_COTTON_SPORE,
+ MOVE_REVERSAL,
+ MOVE_SPITE,
+ MOVE_POWDER_SNOW,
+ MOVE_PROTECT,
+ MOVE_MACH_PUNCH,
+ MOVE_SCARY_FACE,
+ MOVE_FAINT_ATTACK,
+ MOVE_SWEET_KISS,
+ MOVE_BELLY_DRUM,
+ MOVE_SLUDGE_BOMB,
+ MOVE_MUD_SLAP,
+ MOVE_OCTAZOOKA,
+ MOVE_SPIKES,
+ MOVE_ZAP_CANNON,
+ MOVE_FORESIGHT,
+ MOVE_DESTINY_BOND,
+ MOVE_PERISH_SONG,
+ MOVE_ICY_WIND,
+ MOVE_DETECT,
+ MOVE_BONE_RUSH,
+ MOVE_LOCK_ON,
+ MOVE_OUTRAGE,
+ MOVE_SANDSTORM,
+ MOVE_GIGA_DRAIN,
+ MOVE_ENDURE,
+ MOVE_CHARM,
+ MOVE_ROLLOUT,
+ MOVE_FALSE_SWIPE,
+ MOVE_SWAGGER,
+ MOVE_MILK_DRINK,
+ MOVE_SPARK,
+ MOVE_FURY_CUTTER,
+ MOVE_STEEL_WING,
+ MOVE_MEAN_LOOK,
+ MOVE_ATTRACT,
+ MOVE_SLEEP_TALK,
+ MOVE_HEAL_BELL,
+ MOVE_RETURN,
+ MOVE_PRESENT,
+ MOVE_FRUSTRATION,
+ MOVE_SAFEGUARD,
+ MOVE_PAIN_SPLIT,
+ MOVE_SACRED_FIRE,
+ MOVE_MAGNITUDE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_MEGAHORN,
+ MOVE_DRAGON_BREATH,
+ MOVE_BATON_PASS,
+ MOVE_ENCORE,
+ MOVE_PURSUIT,
+ MOVE_RAPID_SPIN,
+ MOVE_SWEET_SCENT,
+ MOVE_IRON_TAIL,
+ MOVE_METAL_CLAW,
+ MOVE_VITAL_THROW,
+ MOVE_MORNING_SUN,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_HIDDEN_POWER,
+ MOVE_CROSS_CHOP,
+ MOVE_TWISTER,
+ MOVE_RAIN_DANCE,
+ MOVE_SUNNY_DAY,
+ MOVE_CRUNCH,
+ MOVE_MIRROR_COAT,
+ MOVE_PSYCH_UP,
+ MOVE_EXTREME_SPEED,
+ MOVE_ANCIENT_POWER,
+ MOVE_SHADOW_BALL,
+ MOVE_FUTURE_SIGHT,
+ MOVE_ROCK_SMASH,
+ MOVE_WHIRLPOOL,
+ MOVE_BEAT_UP,
+ MOVE_FAKE_OUT,
+ MOVE_UPROAR,
+ MOVE_STOCKPILE,
+ MOVE_SPIT_UP,
+ MOVE_SWALLOW,
+ MOVE_HEAT_WAVE,
+ MOVE_HAIL,
+ MOVE_TORMENT,
+ MOVE_FLATTER,
+ MOVE_WILL_O_WISP,
+ MOVE_MEMENTO,
+ MOVE_FACADE,
+ MOVE_FOCUS_PUNCH,
+ MOVE_SMELLING_SALT,
+ MOVE_FOLLOW_ME,
+ MOVE_NATURE_POWER,
+ MOVE_CHARGE,
+ MOVE_TAUNT,
+ MOVE_HELPING_HAND,
+ MOVE_TRICK,
+ MOVE_ROLE_PLAY,
+ MOVE_WISH,
+ MOVE_ASSIST,
+ MOVE_INGRAIN,
+ MOVE_SUPERPOWER,
+ MOVE_MAGIC_COAT,
+ MOVE_RECYCLE,
+ MOVE_REVENGE,
+ MOVE_BRICK_BREAK,
+ MOVE_YAWN,
+ MOVE_KNOCK_OFF,
+ MOVE_ENDEAVOR,
+ MOVE_ERUPTION,
+ MOVE_SKILL_SWAP,
+ MOVE_IMPRISON,
+ MOVE_REFRESH,
+ MOVE_GRUDGE,
+ MOVE_SNATCH,
+ MOVE_SECRET_POWER,
+ MOVE_DIVE,
+ MOVE_ARM_THRUST,
+ MOVE_CAMOUFLAGE,
+ MOVE_TAIL_GLOW,
+ MOVE_LUSTER_PURGE,
+ MOVE_MIST_BALL,
+ MOVE_FEATHER_DANCE,
+ MOVE_TEETER_DANCE,
+ MOVE_BLAZE_KICK,
+ MOVE_MUD_SPORT,
+ MOVE_ICE_BALL,
+ MOVE_NEEDLE_ARM,
+ MOVE_SLACK_OFF,
+ MOVE_HYPER_VOICE,
+ MOVE_POISON_FANG,
+ MOVE_CRUSH_CLAW,
+ MOVE_BLAST_BURN,
+ MOVE_HYDRO_CANNON,
+ MOVE_METEOR_MASH,
+ MOVE_ASTONISH,
+ MOVE_WEATHER_BALL,
+ MOVE_AROMATHERAPY,
+ MOVE_FAKE_TEARS,
+ MOVE_AIR_CUTTER,
+ MOVE_OVERHEAT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_ROCK_TOMB,
+ MOVE_SILVER_WIND,
+ MOVE_METAL_SOUND,
+ MOVE_GRASS_WHISTLE,
+ MOVE_TICKLE,
+ MOVE_COSMIC_POWER,
+ MOVE_WATER_SPOUT,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXTRASENSORY,
+ MOVE_SKY_UPPERCUT,
+ MOVE_SAND_TOMB,
+ MOVE_SHEER_COLD,
+ MOVE_MUDDY_WATER,
+ MOVE_BULLET_SEED,
+ MOVE_AERIAL_ACE,
+ MOVE_ICICLE_SPEAR,
+ MOVE_IRON_DEFENSE,
+ MOVE_BLOCK,
+ MOVE_HOWL,
+ MOVE_DRAGON_CLAW,
+ MOVE_FRENZY_PLANT,
+ MOVE_BULK_UP,
+ MOVE_BOUNCE,
+ MOVE_MUD_SHOT,
+ MOVE_POISON_TAIL,
+ MOVE_COVET,
+ MOVE_VOLT_TACKLE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_WATER_SPORT,
+ MOVE_CALM_MIND,
+ MOVE_LEAF_BLADE,
+ MOVE_DRAGON_DANCE,
+ MOVE_ROCK_BLAST,
+ MOVE_SHOCK_WAVE,
+ MOVE_WATER_PULSE,
+ MOVE_DOOM_DESIRE,
+ MOVE_PSYCHO_BOOST,
+};
+
+#endif // GUARD_MOVES_H \ No newline at end of file
diff --git a/include/name_string_util.h b/include/name_string_util.h
new file mode 100644
index 000000000..110f8cc22
--- /dev/null
+++ b/include/name_string_util.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_NAMESTRINGUTIL_H
+#define GUARD_NAMESTRINGUTIL_H
+
+void PadNameString(u8 *a1, u8 a2);
+void SanitizeNameString(u8 *a1);
+
+#endif
diff --git a/include/naming_screen.h b/include/naming_screen.h
new file mode 100644
index 000000000..b6b464538
--- /dev/null
+++ b/include/naming_screen.h
@@ -0,0 +1,83 @@
+#ifndef GUARD_NAMINGSCREEN_H
+#define GUARD_NAMINGSCREEN_H
+
+#define KBEVENT_NONE 0
+#define KBEVENT_PRESSED_A 5
+#define KBEVENT_PRESSED_B 6
+#define KBEVENT_PRESSED_SELECT 8
+#define KBEVENT_PRESSED_START 9
+
+enum
+{
+ NAMING_SCREEN_TEMPLATE_PLAYER_NAME,
+ NAMING_SCREEN_TEMPLATE_BOX_NAME,
+ NAMING_SCREEN_TEMPLATE_MON_NAME,
+};
+
+struct NamingScreenTemplate
+{
+ u8 unk0;
+ u8 maxChars;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4; //mode?
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ const u8 *title;
+};
+
+struct NamingScreenData
+{
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 templateNum;
+ /*0x02*/ u16 unk2;
+ /*0x04*/ u16 bg1vOffset;
+ /*0x06*/ u16 bg2vOffset;
+ /*0x08*/ u16 unk8;
+ /*0x0A*/ u16 unkA;
+ /*0x0C*/ u8 unkC;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 currentPage;
+ /*0x0F*/ u8 cursorSpriteId;
+ /*0x10*/ u8 unk10;
+ /*0x11*/ u8 textBuffer[0x10];
+ /*0x21*/ u8 filler21[0x13];
+ const struct NamingScreenTemplate *template;
+ /*0x38*/ u8 *destBuffer;
+ /*0x3C*/ u16 unk3C; //savedKeyRepeatStartDelay
+ /*0x3E*/ u16 unk3E;
+ /*0x40*/ u16 unk40;
+ /*0x42*/ u32 unk42;
+ /*0x46*/ MainCallback returnCallback;
+};
+
+enum
+{
+ PAGE_UPPER,
+ PAGE_LOWER,
+ PAGE_OTHERS,
+};
+
+enum
+{
+ MAIN_STATE_BEGIN_FADE_IN,
+ MAIN_STATE_WAIT_FADE_IN,
+ MAIN_STATE_HANDLE_INPUT,
+ MAIN_STATE_MOVE_TO_OK_BUTTON,
+ MAIN_STATE_START_PAGE_SWAP,
+ MAIN_STATE_WAIT_PAGE_SWAP,
+ MAIN_STATE_6,
+ MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
+ MAIN_STATE_BEGIN_FADE_OUT,
+};
+
+enum
+{
+ INPUT_STATE_DISABLED,
+ INPUT_STATE_ENABLED,
+};
+
+void DoNamingScreen(u8 r0, u8 *r1, u16 r2, u16 r3, u32 s0, MainCallback s4);
+
+#endif
diff --git a/include/opponent_constants.h b/include/opponent_constants.h
new file mode 100644
index 000000000..1829facaa
--- /dev/null
+++ b/include/opponent_constants.h
@@ -0,0 +1,702 @@
+#ifndef GUARD_OPPONENT_CONSTANTS_H
+#define GUARD_OPPONENT_CONSTANTS_H
+
+enum
+{
+ OPPONENT_NONE,
+ OPPONENT_ARCHIE_1,
+ OPPONENT_GRUNT_1,
+ OPPONENT_GRUNT_2,
+ OPPONENT_GRUNT_3,
+ OPPONENT_GRUNT_4,
+ OPPONENT_GRUNT_5,
+ OPPONENT_GRUNT_6,
+ OPPONENT_GRUNT_7,
+ OPPONENT_GRUNT_8,
+ OPPONENT_GRUNT_9,
+ OPPONENT_GRUNT_10,
+ OPPONENT_GRUNT_11,
+ OPPONENT_GRUNT_12,
+ OPPONENT_GRUNT_13,
+ OPPONENT_GRUNT_14,
+ OPPONENT_GRUNT_15,
+ OPPONENT_GRUNT_16,
+ OPPONENT_GRUNT_17,
+ OPPONENT_GRUNT_18,
+ OPPONENT_GRUNT_19,
+ OPPONENT_GRUNT_20,
+ OPPONENT_GRUNT_21,
+ OPPONENT_GRUNT_22,
+ OPPONENT_GRUNT_23,
+ OPPONENT_GRUNT_24,
+ OPPONENT_GRUNT_25,
+ OPPONENT_GRUNT_26,
+ OPPONENT_GRUNT_27,
+ OPPONENT_ANONYMOUS_1,
+ OPPONENT_MATT_1,
+ OPPONENT_MATT_2,
+ OPPONENT_SHELLY_1,
+ OPPONENT_SHELLY_2,
+ OPPONENT_ARCHIE_2,
+ OPPONENT_ARCHIE_3,
+ OPPONENT_DAISY,
+ OPPONENT_ROSE_1,
+ OPPONENT_LILY,
+ OPPONENT_VIOLET,
+ OPPONENT_ROSE_2,
+ OPPONENT_ROSE_3,
+ OPPONENT_ROSE_4,
+ OPPONENT_ROSE_5,
+ OPPONENT_DUSTY_1,
+ OPPONENT_CHIP,
+ OPPONENT_FOSTER,
+ OPPONENT_DUSTY_2,
+ OPPONENT_DUSTY_3,
+ OPPONENT_DUSTY_4,
+ OPPONENT_DUSTY_5,
+ OPPONENT_GABBY_AND_TY_1,
+ OPPONENT_GABBY_AND_TY_2,
+ OPPONENT_GABBY_AND_TY_3,
+ OPPONENT_GABBY_AND_TY_4,
+ OPPONENT_GABBY_AND_TY_5,
+ OPPONENT_GABBY_AND_TY_6,
+ OPPONENT_LOLA_1,
+ OPPONENT_CARMEN,
+ OPPONENT_GWEN,
+ OPPONENT_LOLA_2,
+ OPPONENT_LOLA_3,
+ OPPONENT_LOLA_4,
+ OPPONENT_LOLA_5,
+ OPPONENT_RICKY_1,
+ OPPONENT_SIMON,
+ OPPONENT_CHARLIE,
+ OPPONENT_RICKY_2,
+ OPPONENT_RICKY_3,
+ OPPONENT_RICKY_4,
+ OPPONENT_RICKY_5,
+ OPPONENT_RANDALL,
+ OPPONENT_PARKER,
+ OPPONENT_GEORGE,
+ OPPONENT_BERKE,
+ OPPONENT_CLYDE,
+ OPPONENT_VINCENT,
+ OPPONENT_LEROY,
+ OPPONENT_WILTON_1,
+ OPPONENT_EDGAR,
+ OPPONENT_ALBERT,
+ OPPONENT_SAMUEL,
+ OPPONENT_VITO,
+ OPPONENT_OWEN,
+ OPPONENT_WILTON_2,
+ OPPONENT_WILTON_3,
+ OPPONENT_WILTON_4,
+ OPPONENT_WILTON_5,
+ OPPONENT_WARREN,
+ OPPONENT_MARY,
+ OPPONENT_LORI,
+ OPPONENT_JODY,
+ OPPONENT_WENDY,
+ OPPONENT_ELAINE,
+ OPPONENT_BROOKE_1,
+ OPPONENT_JENNIFER,
+ OPPONENT_HOPE,
+ OPPONENT_SHANNON,
+ OPPONENT_MICHELLE,
+ OPPONENT_CAROLINE,
+ OPPONENT_JULIE,
+ OPPONENT_BROOKE_2,
+ OPPONENT_BROOKE_3,
+ OPPONENT_BROOKE_4,
+ OPPONENT_BROOKE_5,
+ OPPONENT_PATRICIA,
+ OPPONENT_KINDRA,
+ OPPONENT_TAMMY,
+ OPPONENT_VALERIE_1,
+ OPPONENT_TASHA,
+ OPPONENT_VALERIE_2,
+ OPPONENT_VALERIE_3,
+ OPPONENT_VALERIE_4,
+ OPPONENT_VALERIE_5,
+ OPPONENT_CINDY_1,
+ OPPONENT_ANONYMOUS_2,
+ OPPONENT_BRIANNA_1,
+ OPPONENT_CINDY_2,
+ OPPONENT_BRIANNA_2,
+ OPPONENT_ANETTE,
+ OPPONENT_CINDY_3,
+ OPPONENT_CINDY_4,
+ OPPONENT_CINDY_5,
+ OPPONENT_CINDY_6,
+ OPPONENT_MELISSA,
+ OPPONENT_SHEILA,
+ OPPONENT_SHIRLEY,
+ OPPONENT_JESSICA_1,
+ OPPONENT_CONNIE,
+ OPPONENT_BRIDGET,
+ OPPONENT_OLIVIA,
+ OPPONENT_TIFFANY,
+ OPPONENT_JESSICA_2,
+ OPPONENT_JESSICA_3,
+ OPPONENT_JESSICA_4,
+ OPPONENT_JESSICA_5,
+ OPPONENT_WINSTON_1,
+ OPPONENT_ANONYMOUS_3,
+ OPPONENT_GARRET,
+ OPPONENT_WINSTON_2,
+ OPPONENT_WINSTON_3,
+ OPPONENT_WINSTON_4,
+ OPPONENT_WINSTON_5,
+ OPPONENT_STEVE_1,
+ OPPONENT_CHRIS,
+ OPPONENT_MARK,
+ OPPONENT_KENN,
+ OPPONENT_STEVE_2,
+ OPPONENT_STEVE_3,
+ OPPONENT_STEVE_4,
+ OPPONENT_STEVE_5,
+ OPPONENT_LUIS,
+ OPPONENT_AUSTIN,
+ OPPONENT_DOUGLAS,
+ OPPONENT_DARRIN,
+ OPPONENT_TONY_1,
+ OPPONENT_JEROME,
+ OPPONENT_MATTHEW,
+ OPPONENT_DAVID,
+ OPPONENT_SPENCER,
+ OPPONENT_ROLAND,
+ OPPONENT_CODY,
+ OPPONENT_STAN,
+ OPPONENT_BARRY,
+ OPPONENT_DEAN,
+ OPPONENT_RODNEY,
+ OPPONENT_RICHARD,
+ OPPONENT_HERMAN,
+ OPPONENT_ANONYMOUS_4,
+ OPPONENT_GILBERT,
+ OPPONENT_FRANKLIN,
+ OPPONENT_DANNY,
+ OPPONENT_JACK,
+ OPPONENT_DUDLEY,
+ OPPONENT_CHAD,
+ OPPONENT_TONY_2,
+ OPPONENT_TONY_3,
+ OPPONENT_TONY_4,
+ OPPONENT_TONY_5,
+ OPPONENT_HIDEKI,
+ OPPONENT_HITOSHI,
+ OPPONENT_KIYO,
+ OPPONENT_KOICHI,
+ OPPONENT_NOB_1,
+ OPPONENT_NOB_2,
+ OPPONENT_NOB_3,
+ OPPONENT_NOB_4,
+ OPPONENT_NOB_5,
+ OPPONENT_YUJI,
+ OPPONENT_DAISUKE,
+ OPPONENT_ATSUSHI,
+ OPPONENT_KIRK,
+ OPPONENT_SCOTT,
+ OPPONENT_HARVEY,
+ OPPONENT_SHAWN,
+ OPPONENT_RANDY,
+ OPPONENT_DALTON_1,
+ OPPONENT_DALTON_2,
+ OPPONENT_DALTON_3,
+ OPPONENT_DALTON_4,
+ OPPONENT_DALTON_5,
+ OPPONENT_COLE,
+ OPPONENT_FLINT,
+ OPPONENT_AXLE,
+ OPPONENT_JAKE,
+ OPPONENT_ANDY,
+ OPPONENT_BERNIE_1,
+ OPPONENT_BERNIE_2,
+ OPPONENT_BERNIE_3,
+ OPPONENT_BERNIE_4,
+ OPPONENT_BERNIE_5,
+ OPPONENT_DREW,
+ OPPONENT_CLIFF,
+ OPPONENT_LARRY,
+ OPPONENT_SHANE,
+ OPPONENT_JUSTIN,
+ OPPONENT_ETHAN_1,
+ OPPONENT_JEFF,
+ OPPONENT_TRAVIS,
+ OPPONENT_ETHAN_2,
+ OPPONENT_ETHAN_3,
+ OPPONENT_ETHAN_4,
+ OPPONENT_ETHAN_5,
+ OPPONENT_BRENT,
+ OPPONENT_DONALD,
+ OPPONENT_TAYLOR,
+ OPPONENT_BRANDON_1,
+ OPPONENT_DEREK,
+ OPPONENT_BRANDON_2,
+ OPPONENT_BRANDON_3,
+ OPPONENT_BRANDON_4,
+ OPPONENT_BRANDON_5,
+ OPPONENT_EDWARD,
+ OPPONENT_PRESTON,
+ OPPONENT_VIRGIL,
+ OPPONENT_FRITZ,
+ OPPONENT_WILLIAM,
+ OPPONENT_JOSHUA,
+ OPPONENT_CAMERON_1,
+ OPPONENT_CAMERON_2,
+ OPPONENT_CAMERON_3,
+ OPPONENT_CAMERON_4,
+ OPPONENT_CAMERON_5,
+ OPPONENT_JACLYN,
+ OPPONENT_HANNAH,
+ OPPONENT_SAMANTHA,
+ OPPONENT_MAURA,
+ OPPONENT_KAYLA,
+ OPPONENT_ALEXIS,
+ OPPONENT_JACKI_1,
+ OPPONENT_JACKI_2,
+ OPPONENT_JACKI_3,
+ OPPONENT_JACKI_4,
+ OPPONENT_JACKI_5,
+ OPPONENT_WALTER_1,
+ OPPONENT_TUCKER,
+ OPPONENT_THOMAS,
+ OPPONENT_WALTER_2,
+ OPPONENT_WALTER_3,
+ OPPONENT_WALTER_4,
+ OPPONENT_WALTER_5,
+ OPPONENT_SIDNEY,
+ OPPONENT_PHOEBE,
+ OPPONENT_GLACIA,
+ OPPONENT_DRAKE,
+ OPPONENT_ROXANNE,
+ OPPONENT_BRAWLY,
+ OPPONENT_WATTSON,
+ OPPONENT_FLANNERY,
+ OPPONENT_NORMAN,
+ OPPONENT_WINONA,
+ OPPONENT_TATE_AND_LIZA,
+ OPPONENT_WALLACE,
+ OPPONENT_JERRY_1,
+ OPPONENT_TED,
+ OPPONENT_PAUL,
+ OPPONENT_JERRY_2,
+ OPPONENT_JERRY_3,
+ OPPONENT_JERRY_4,
+ OPPONENT_JERRY_5,
+ OPPONENT_KAREN_1,
+ OPPONENT_GEORGIA,
+ OPPONENT_KAREN_2,
+ OPPONENT_KAREN_3,
+ OPPONENT_KAREN_4,
+ OPPONENT_KAREN_5,
+ OPPONENT_KATE_AND_JOY,
+ OPPONENT_ANNA_AND_MEG_1,
+ OPPONENT_ANNA_AND_MEG_2,
+ OPPONENT_ANNA_AND_MEG_3,
+ OPPONENT_ANNA_AND_MEG_4,
+ OPPONENT_ANNA_AND_MEG_5,
+ OPPONENT_VICTOR,
+ OPPONENT_MIGUEL_1,
+ OPPONENT_COLTON,
+ OPPONENT_MIGUEL_2,
+ OPPONENT_MIGUEL_3,
+ OPPONENT_MIGUEL_4,
+ OPPONENT_MIGUEL_5,
+ OPPONENT_VICTORIA,
+ OPPONENT_VANESSA,
+ OPPONENT_MARISSA,
+ OPPONENT_ISABEL_1,
+ OPPONENT_ISABEL_2,
+ OPPONENT_ISABEL_3,
+ OPPONENT_ISABEL_4,
+ OPPONENT_ISABEL_5,
+ OPPONENT_TIMOTHY_1,
+ OPPONENT_TIMOTHY_2,
+ OPPONENT_TIMOTHY_3,
+ OPPONENT_TIMOTHY_4,
+ OPPONENT_TIMOTHY_5,
+ OPPONENT_VICKY,
+ OPPONENT_SHELBY_1,
+ OPPONENT_SHELBY_2,
+ OPPONENT_SHELBY_3,
+ OPPONENT_SHELBY_4,
+ OPPONENT_SHELBY_5,
+ OPPONENT_CALVIN_1,
+ OPPONENT_BILLY,
+ OPPONENT_JOSH,
+ OPPONENT_TOMMY,
+ OPPONENT_JOEY,
+ OPPONENT_BEN,
+ OPPONENT_ANONYMOUS_5,
+ OPPONENT_KEVIN,
+ OPPONENT_NEAL,
+ OPPONENT_DILLON,
+ OPPONENT_CALVIN_2,
+ OPPONENT_CALVIN_3,
+ OPPONENT_CALVIN_4,
+ OPPONENT_CALVIN_5,
+ OPPONENT_EDDIE,
+ OPPONENT_ALLEN,
+ OPPONENT_TIMMY,
+ OPPONENT_STEVEN,
+ OPPONENT_ANDREW,
+ OPPONENT_IVAN,
+ OPPONENT_CLAUDE,
+ OPPONENT_ELLIOT_1,
+ OPPONENT_NED,
+ OPPONENT_DALE,
+ OPPONENT_NOLAN,
+ OPPONENT_BARNY,
+ OPPONENT_WADE,
+ OPPONENT_CARTER,
+ OPPONENT_ELLIOT_2,
+ OPPONENT_ELLIOT_3,
+ OPPONENT_ELLIOT_4,
+ OPPONENT_ELLIOT_5,
+ OPPONENT_RONALD,
+ OPPONENT_JACOB,
+ OPPONENT_ANTHONY,
+ OPPONENT_BENJAMIN_1,
+ OPPONENT_BENJAMIN_2,
+ OPPONENT_BENJAMIN_3,
+ OPPONENT_BENJAMIN_4,
+ OPPONENT_BENJAMIN_5,
+ OPPONENT_ABIGAIL_1,
+ OPPONENT_JASMINE,
+ OPPONENT_ABIGAIL_2,
+ OPPONENT_ABIGAIL_3,
+ OPPONENT_ABIGAIL_4,
+ OPPONENT_ABIGAIL_5,
+ OPPONENT_DYLAN_1,
+ OPPONENT_DYLAN_2,
+ OPPONENT_DYLAN_3,
+ OPPONENT_DYLAN_4,
+ OPPONENT_DYLAN_5,
+ OPPONENT_MARIA_1,
+ OPPONENT_MARIA_2,
+ OPPONENT_MARIA_3,
+ OPPONENT_MARIA_4,
+ OPPONENT_MARIA_5,
+ OPPONENT_CALEB,
+ OPPONENT_ANONYMOUS_6,
+ OPPONENT_ISAIAH_1,
+ OPPONENT_ANONYMOUS_7,
+ OPPONENT_CHASE,
+ OPPONENT_ISAIAH_2,
+ OPPONENT_ISAIAH_3,
+ OPPONENT_ISAIAH_4,
+ OPPONENT_ISAIAH_5,
+ OPPONENT_ANONYMOUS_8,
+ OPPONENT_CONNOR,
+ OPPONENT_ANONYMOUS_9,
+ OPPONENT_KATELYN_1,
+ OPPONENT_ALLISON,
+ OPPONENT_KATELYN_2,
+ OPPONENT_KATELYN_3,
+ OPPONENT_KATELYN_4,
+ OPPONENT_KATELYN_5,
+ OPPONENT_NICOLAS_1,
+ OPPONENT_NICOLAS_2,
+ OPPONENT_NICOLAS_3,
+ OPPONENT_NICOLAS_4,
+ OPPONENT_NICOLAS_5,
+ OPPONENT_AARON,
+ OPPONENT_PERRY,
+ OPPONENT_HUGH,
+ OPPONENT_PHIL,
+ OPPONENT_JARED,
+ OPPONENT_ANONYMOUS_10,
+ OPPONENT_TANNER,
+ OPPONENT_WILL,
+ OPPONENT_COLIN,
+ OPPONENT_ROBERT_1,
+ OPPONENT_BENNY,
+ OPPONENT_CHESTER,
+ OPPONENT_ROBERT_2,
+ OPPONENT_ROBERT_3,
+ OPPONENT_ROBERT_4,
+ OPPONENT_ROBERT_5,
+ OPPONENT_ALEX,
+ OPPONENT_BECK,
+ OPPONENT_YASU,
+ OPPONENT_TAKASHI,
+ OPPONENT_MAKOTO,
+ OPPONENT_HIDEO_1,
+ OPPONENT_LAO_1,
+ OPPONENT_LUNG,
+ OPPONENT_LAO_2,
+ OPPONENT_LAO_3,
+ OPPONENT_LAO_4,
+ OPPONENT_LAO_5,
+ OPPONENT_TESSA,
+ OPPONENT_LAURA,
+ OPPONENT_CYNDY_1,
+ OPPONENT_CORA,
+ OPPONENT_JILL,
+ OPPONENT_CYNDY_2,
+ OPPONENT_CYNDY_3,
+ OPPONENT_CYNDY_4,
+ OPPONENT_CYNDY_5,
+ OPPONENT_MADELINE_1,
+ OPPONENT_CLARISSA,
+ OPPONENT_ANGELICA,
+ OPPONENT_MADELINE_2,
+ OPPONENT_MADELINE_3,
+ OPPONENT_MADELINE_4,
+ OPPONENT_MADELINE_5,
+ OPPONENT_BEVERLY,
+ OPPONENT_DAWN,
+ OPPONENT_NICOLE,
+ OPPONENT_DENISE,
+ OPPONENT_BETH,
+ OPPONENT_TARA,
+ OPPONENT_MISSY,
+ OPPONENT_ALICE,
+ OPPONENT_JENNY_1,
+ OPPONENT_GRACE,
+ OPPONENT_TANYA,
+ OPPONENT_SHARON,
+ OPPONENT_NIKKI,
+ OPPONENT_BRENDA,
+ OPPONENT_KATIE,
+ OPPONENT_SUSIE,
+ OPPONENT_KARA,
+ OPPONENT_DANA,
+ OPPONENT_ERIN,
+ OPPONENT_DEBRA,
+ OPPONENT_LINDA,
+ OPPONENT_KAYLEE,
+ OPPONENT_LAUREL,
+ OPPONENT_DARCY,
+ OPPONENT_JENNY_2,
+ OPPONENT_JENNY_3,
+ OPPONENT_JENNY_4,
+ OPPONENT_JENNY_5,
+ OPPONENT_HEIDI,
+ OPPONENT_BECKY,
+ OPPONENT_CAROL,
+ OPPONENT_NANCY,
+ OPPONENT_MARTHA,
+ OPPONENT_DIANA_1,
+ OPPONENT_NINA,
+ OPPONENT_IRENE,
+ OPPONENT_DIANA_2,
+ OPPONENT_DIANA_3,
+ OPPONENT_DIANA_4,
+ OPPONENT_DIANA_5,
+ OPPONENT_AMY_AND_LIV_1,
+ OPPONENT_AMY_AND_LIV_2,
+ OPPONENT_GINA_AND_MIA_1,
+ OPPONENT_MIU_AND_YUKI,
+ OPPONENT_AMY_AND_LIV_3,
+ OPPONENT_GINA_AND_MIA_2,
+ OPPONENT_AMY_AND_LIV_4,
+ OPPONENT_AMY_AND_LIV_5,
+ OPPONENT_AMY_AND_LIV_6,
+ OPPONENT_HUEY,
+ OPPONENT_EDMOND,
+ OPPONENT_ERNEST_1,
+ OPPONENT_DWAYNE,
+ OPPONENT_PHILLIP,
+ OPPONENT_LEONARD,
+ OPPONENT_DUNCAN,
+ OPPONENT_ERNEST_2,
+ OPPONENT_ERNEST_3,
+ OPPONENT_ERNEST_4,
+ OPPONENT_ERNEST_5,
+ OPPONENT_ANONYMOUS_11,
+ OPPONENT_ANONYMOUS_12,
+ OPPONENT_ANONYMOUS_13,
+ OPPONENT_SONNY,
+ OPPONENT_DONOVAN,
+ OPPONENT_GERALD,
+ OPPONENT_KELVIN,
+ OPPONENT_KODY,
+ OPPONENT_TEVIN,
+ OPPONENT_DAMON,
+ OPPONENT_PABLO,
+ OPPONENT_EDWIN_1,
+ OPPONENT_HECTOR_1,
+ OPPONENT_HECTOR_2,
+ OPPONENT_EDWIN_2,
+ OPPONENT_EDWIN_3,
+ OPPONENT_EDWIN_4,
+ OPPONENT_EDWIN_5,
+ OPPONENT_WALLY_1,
+ OPPONENT_BRENDAN_1,
+ OPPONENT_BRENDAN_2,
+ OPPONENT_BRENDAN_3,
+ OPPONENT_BRENDAN_4,
+ OPPONENT_BRENDAN_5,
+ OPPONENT_BRENDAN_6,
+ OPPONENT_BRENDAN_7,
+ OPPONENT_BRENDAN_8,
+ OPPONENT_BRENDAN_9,
+ OPPONENT_MAY_1,
+ OPPONENT_MAY_2,
+ OPPONENT_MAY_3,
+ OPPONENT_MAY_4,
+ OPPONENT_MAY_5,
+ OPPONENT_MAY_6,
+ OPPONENT_MAY_7,
+ OPPONENT_MAY_8,
+ OPPONENT_MAY_9,
+ OPPONENT_ISAAC_1,
+ OPPONENT_RILEY,
+ OPPONENT_AIDAN,
+ OPPONENT_ISAAC_2,
+ OPPONENT_ISAAC_3,
+ OPPONENT_ISAAC_4,
+ OPPONENT_ISAAC_5,
+ OPPONENT_LYDIA_1,
+ OPPONENT_ALEXIA,
+ OPPONENT_DANIELLE,
+ OPPONENT_LYDIA_2,
+ OPPONENT_LYDIA_3,
+ OPPONENT_LYDIA_4,
+ OPPONENT_LYDIA_5,
+ OPPONENT_JACKSON_1,
+ OPPONENT_CARLOS,
+ OPPONENT_SEBASTIAN,
+ OPPONENT_JACKSON_2,
+ OPPONENT_JACKSON_3,
+ OPPONENT_JACKSON_4,
+ OPPONENT_JACKSON_5,
+ OPPONENT_CATHERINE_1,
+ OPPONENT_JENNA,
+ OPPONENT_SOPHIA,
+ OPPONENT_CATHERINE_2,
+ OPPONENT_CATHERINE_3,
+ OPPONENT_CATHERINE_4,
+ OPPONENT_CATHERINE_5,
+ OPPONENT_MAXIE_1,
+ OPPONENT_GRUNT_28,
+ OPPONENT_GRUNT_29,
+ OPPONENT_GRUNT_30,
+ OPPONENT_GRUNT_31,
+ OPPONENT_GRUNT_32,
+ OPPONENT_GRUNT_33,
+ OPPONENT_GRUNT_34,
+ OPPONENT_GRUNT_35,
+ OPPONENT_GRUNT_36,
+ OPPONENT_GRUNT_37,
+ OPPONENT_GRUNT_38,
+ OPPONENT_GRUNT_39,
+ OPPONENT_GRUNT_40,
+ OPPONENT_GRUNT_41,
+ OPPONENT_GRUNT_42,
+ OPPONENT_GRUNT_43,
+ OPPONENT_GRUNT_44,
+ OPPONENT_GRUNT_45,
+ OPPONENT_GRUNT_46,
+ OPPONENT_GRUNT_47,
+ OPPONENT_GRUNT_48,
+ OPPONENT_GRUNT_49,
+ OPPONENT_GRUNT_50,
+ OPPONENT_GRUNT_51,
+ OPPONENT_GRUNT_52,
+ OPPONENT_GRUNT_53,
+ OPPONENT_GRUNT_54,
+ OPPONENT_ANONYMOUS_14,
+ OPPONENT_ANONYMOUS_15,
+ OPPONENT_TABITHA_1,
+ OPPONENT_TABITHA_2,
+ OPPONENT_ANONYMOUS_16,
+ OPPONENT_COURTNEY_1,
+ OPPONENT_COURTNEY_2,
+ OPPONENT_MAXIE_2,
+ OPPONENT_MAXIE_3,
+ OPPONENT_TIANA,
+ OPPONENT_HALEY_1,
+ OPPONENT_JANICE,
+ OPPONENT_VIVI,
+ OPPONENT_HALEY_2,
+ OPPONENT_HALEY_3,
+ OPPONENT_HALEY_4,
+ OPPONENT_HALEY_5,
+ OPPONENT_SALLY,
+ OPPONENT_ROBIN,
+ OPPONENT_ANDREA,
+ OPPONENT_CRISSY,
+ OPPONENT_RICK,
+ OPPONENT_LYLE,
+ OPPONENT_JOSE,
+ OPPONENT_DOUG,
+ OPPONENT_GREG,
+ OPPONENT_KENT,
+ OPPONENT_JAMES_1,
+ OPPONENT_JAMES_2,
+ OPPONENT_JAMES_3,
+ OPPONENT_JAMES_4,
+ OPPONENT_JAMES_5,
+ OPPONENT_BRICE,
+ OPPONENT_TRENT_1,
+ OPPONENT_LENNY,
+ OPPONENT_LUCAS_1,
+ OPPONENT_ALAN,
+ OPPONENT_CLARK,
+ OPPONENT_ERIC,
+ OPPONENT_LUCAS_2,
+ OPPONENT_MIKE_1,
+ OPPONENT_MIKE_2,
+ OPPONENT_TRENT_2,
+ OPPONENT_TRENT_3,
+ OPPONENT_TRENT_4,
+ OPPONENT_TRENT_5,
+ OPPONENT_DEZ_AND_LUKE,
+ OPPONENT_LEA_AND_JED,
+ OPPONENT_LOIS_AND_HAL_1,
+ OPPONENT_LOIS_AND_HAL_2,
+ OPPONENT_LOIS_AND_HAL_3,
+ OPPONENT_LOIS_AND_HAL_4,
+ OPPONENT_LOIS_AND_HAL_5,
+ OPPONENT_JOHANNA,
+ OPPONENT_ZANE,
+ OPPONENT_VIVIAN,
+ OPPONENT_SADIE,
+ OPPONENT_HIDEO_2,
+ OPPONENT_KEIGO,
+ OPPONENT_TSUNAO,
+ OPPONENT_TERRELL,
+ OPPONENT_KYLEE,
+ OPPONENT_WALLY_2,
+ OPPONENT_WALLY_3,
+ OPPONENT_WALLY_4,
+ OPPONENT_WALLY_5,
+ OPPONENT_WALLY_6,
+ OPPONENT_BRENDAN_10,
+ OPPONENT_BRENDAN_11,
+ OPPONENT_BRENDAN_12,
+ OPPONENT_MAY_10,
+ OPPONENT_MAY_11,
+ OPPONENT_MAY_12,
+ OPPONENT_JONAH,
+ OPPONENT_HENRY,
+ OPPONENT_ROGER,
+ OPPONENT_ALEXA,
+ OPPONENT_RUBEN,
+ OPPONENT_KOJI,
+ OPPONENT_WAYNE,
+ OPPONENT_BYRON,
+ OPPONENT_REED,
+ OPPONENT_TISHA,
+ OPPONENT_TORI_AND_TIA,
+ OPPONENT_KIM_AND_IRIS,
+ OPPONENT_TYRA_AND_IVY,
+ OPPONENT_MEL_AND_PAUL,
+ OPPONENT_JOHN_AND_JAY_1,
+ OPPONENT_JOHN_AND_JAY_2,
+ OPPONENT_JOHN_AND_JAY_3,
+ OPPONENT_JOHN_AND_JAY_4,
+ OPPONENT_JOHN_AND_JAY_5,
+ OPPONENT_RELI_AND_IAN,
+ OPPONENT_RITA_AND_SAM_1,
+ OPPONENT_RITA_AND_SAM_2,
+ OPPONENT_RITA_AND_SAM_3,
+ OPPONENT_RITA_AND_SAM_4,
+ OPPONENT_RITA_AND_SAM_5,
+ OPPONENT_LISA_AND_RAY,
+ OPPONENT_EUGENE,
+};
+
+#endif // GUARD_OPPONENT_CONSTANTS_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 1ac4e8c33..fded1ec65 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -5,54 +5,54 @@
struct PokedexListItem
{
- u16 dexNum;
- u16 seen:1;
- u16 owned:1;
+ u16 dexNum;
+ u16 seen:1;
+ u16 owned:1;
};
struct PokedexView
{
- struct PokedexListItem unk0[386];
- u16 unk608;
- u8 unk60A_1:1;
- u8 unk60A_2:1;
- u8 unk60B;
- u16 unk60C;
- u16 selectedPokemon;
- u16 unk610;
- u16 dexMode; //National or Hoenn
- u16 unk614;
- u16 dexOrder;
- u16 unk618;
- u16 unk61A;
- u16 unk61C;
- u16 unk61E[4];
- u16 unk626; //sprite id of selected Pokemon
- u16 unk628;
- u16 unk62A;
- u8 unk62C;
- u8 unk62D;
- u8 unk62E;
- u8 unk62F;
- s16 unk630;
- s16 unk632;
- u16 unk634;
- u16 unk636;
- u16 unk638;
- u16 unk63A[4];
- u8 filler642[8];
- u8 unk64A;
- u8 unk64B;
- u8 unk64C_1:1;
- u8 selectedScreen;
- u8 unk64E;
- u8 unk64F;
- u8 menuIsOpen; //menuIsOpen
- u8 unk651;
- u16 menuCursorPos; //Menu cursor position
- s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
- u8 unk656[8];
- u8 unk65E[8];
+ struct PokedexListItem unk0[386];
+ u16 unk608;
+ u8 unk60A_1:1;
+ u8 unk60A_2:1;
+ u8 unk60B;
+ u16 unk60C;
+ u16 selectedPokemon;
+ u16 unk610;
+ u16 dexMode; //National or Hoenn
+ u16 unk614;
+ u16 dexOrder;
+ u16 unk618;
+ u16 unk61A;
+ u16 unk61C;
+ u16 unk61E[4];
+ u16 unk626; //sprite id of selected Pokemon
+ u16 unk628;
+ u16 unk62A;
+ u8 unk62C;
+ u8 unk62D;
+ u8 unk62E;
+ u8 unk62F;
+ s16 unk630;
+ s16 unk632;
+ u16 unk634;
+ u16 unk636;
+ u16 unk638;
+ u16 unk63A[4];
+ u8 filler642[8];
+ u8 unk64A;
+ u8 unk64B;
+ u8 unk64C_1:1;
+ u8 selectedScreen;
+ u8 unk64E;
+ u8 unk64F;
+ u8 menuIsOpen; //menuIsOpen
+ u8 unk651;
+ u16 menuCursorPos; //Menu cursor position
+ s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
+ u8 unk656[8];
+ u8 unk65E[8];
};
void sub_808C02C(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 10eb05757..3987bada6 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -370,8 +370,8 @@ struct BattleMove
struct PokemonStorage
{
- u8 currentBox;
- struct BoxPokemon boxes[14][30];
+ /* 0x00 */ u8 currentBox;
+ /* 0x01 */ struct BoxPokemon boxes[14][30];
u8 boxNames[14][9];
u8 unkArray[14];
};
diff --git a/include/rom4.h b/include/rom4.h
index 44819cbee..5aae277a6 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -9,7 +9,8 @@ struct UnkPlayerStruct
u8 player_field_1;
};
-struct LinkPlayerMapObject {
+struct LinkPlayerMapObject
+{
u8 active;
u8 linkPlayerId;
u8 mapObjId;
@@ -18,8 +19,8 @@ struct LinkPlayerMapObject {
// sub_8052F5C
// flag_var_implications_of_teleport_
-// new_game
-// sub_8053014
+void new_game(void);
+void sub_8053014(void);
void sub_8053050(void);
// sub_805308C
void ResetGameStats(void);
@@ -35,21 +36,21 @@ void update_saveblock1_field_object_movement_behavior(u8, u8);
// warp_shift
// warp_set
// warp_data_is_not_neg_1
-// get_mapheader_by_bank_and_number
+struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum);
// warp1_get_mapheader
// set_current_map_header_from_sav1_save_old_name
// sub_805338C
// sub_80533CC
void warp_in(void);
void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-// warp1_set_2
+void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
// sub_8053538
void sub_8053570(void);
void sub_8053588(u8);
-// sub_80535C4
+void sub_80535C4(s16 a1, s16 a2);
void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
// sub_8053678
void sub_8053690(s8, s8, s8, s8, s8);
@@ -62,8 +63,8 @@ void sub_8053720(s16, s16);
void gpu_sync_bg_hide();
// sub_8053818
// sub_8053850
-// sub_80538B0
-// sub_80538D0
+bool8 sub_80538B0(u16 x, u16 y);
+bool8 sub_80538D0(u16 x, u16 y);
// sub_80538F0
// sub_8053994
void player_avatar_init_params_reset(void);
@@ -83,7 +84,7 @@ void sub_8053D14(u16);
// sav1_map_get_music
// warp1_target_get_music
// call_map_music_set_to_zero
-// sub_8053E90
+void sub_8053E90(void);
void sav1_set_battle_music_maybe(u16);
void sav1_reset_battle_music_maybe(void);
void sub_8053F0C(void);
@@ -101,7 +102,7 @@ u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
u8 sav1_map_get_light_level(void);
// get_map_light_from_warp0
bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-// is_light_level_1_2_3_or_6
+bool8 is_light_level_1_2_3_or_6(u8 a1);
u8 is_light_level_8_or_9(u8);
// unref_sub_8054260
u8 sav1_map_get_name();
diff --git a/include/rom6.h b/include/rom6.h
new file mode 100644
index 000000000..e7a3ba48e
--- /dev/null
+++ b/include/rom6.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_ROM6_H
+#define GUARD_ROM6_H
+
+bool8 npc_before_player_of_type(u8);
+u8 oei_task_add(void);
+
+#endif
diff --git a/include/save.h b/include/save.h
index 976af77c6..b9d4121ec 100644
--- a/include/save.h
+++ b/include/save.h
@@ -3,47 +3,72 @@
struct SaveSectionLocation
{
- void *data;
- u16 size;
+ void *data;
+ u16 size;
};
struct SaveSection
{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 unknown;
- u32 counter;
-};
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 security;
+ u32 counter;
+}; // size is 0x1000
+// headless save section?
struct UnkSaveSection
{
- u8 data[0xFF4];
- u32 unknown;
+ u8 data[0xFF4];
+ u32 security;
+}; // size is 0xFF8
+
+// Ruby/Sapphire's save data is Flash 128K, which is 32 save sectors.
+#define NUM_SECTORS 32 // defined in agb_flash but not in a header
+
+#define UNKNOWN_CHECK_VALUE 0x8012025
+
+// SetDamagedSectorBits states
+enum
+{
+ ENABLE,
+ DISABLE,
+ CHECK // unused
+};
+
+// Do save types
+enum
+{
+ NORMAL_SAVE,
+ LINK_SAVE,
+ EREADER_SAVE, // mossdeep event
+ HOF_SAVE,
+ DIFFERENT_FILE_SAVE,
+ HOF_DELETE_SAVE // unused
};
void ClearSaveData(void);
-void sub_81251B8(void);
-bool32 sub_81251D4(u8 op, u8 bit);
-u8 save_write_to_flash(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81252D8(u16, struct SaveSectionLocation *);
-u8 sub_81253C8(u8 sector, u8 *data, u16 size);
-u8 sub_8125440(u8, u8 *);
-u32 sub_812546C(struct SaveSectionLocation *a1);
-u32 sub_81254C8(struct SaveSectionLocation *a1);
-u8 sub_812550C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_812556C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81255B8(u16, struct SaveSectionLocation *);
-u8 sub_8125758(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81257F0(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_812587C(u16 a1, struct SaveSectionLocation *a2);
-u8 sub_81258BC(u16, struct SaveSectionLocation *);
-u8 sub_8125974(struct SaveSectionLocation *);
+void ResetSaveCounters(void);
+bool32 ManipulateSectorBits(u8 op, u8 bit);
+u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *a2);
+u8 HandleWriteSector(u16, const struct SaveSectionLocation *);
+u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
+u8 TryWriteSector(u8, u8 *);
+u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
+u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
+u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81255B8(u16, const struct SaveSectionLocation *location);
+u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_81258BC(u16, const struct SaveSectionLocation *location);
+u8 sub_8125974(const struct SaveSectionLocation *location);
u8 sub_8125B88(u8 a1, u8 *data, u16 size);
u8 sub_8125BF8(u8, struct SaveSection *);
-u16 sub_8125C10(void *, u16);
-u8 sub_8125C3C(u8 a1);
-u8 sub_8125D44(u8 a1);
+u16 CalculateChecksum(void *, u16);
+u8 HandleSavingData(u8 saveType);
+u8 TrySavingData(u8 saveType);
u8 sub_8125D80(void);
bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
diff --git a/include/save_menu_util.h b/include/save_menu_util.h
index 560a39d89..cf1d3f929 100644
--- a/include/save_menu_util.h
+++ b/include/save_menu_util.h
@@ -2,8 +2,8 @@
#define GUARD_SAVE_MENU_UTIL_H
void HandleDrawSaveWindowInfo(s16 left, s16 top);
-void sub_80946C8(u16 left, u16 top);
-u8 sub_809473C(void);
+void HandleCloseSaveWindow(u16 left, u16 top);
+u8 IsResizeSaveWindowEnabled(void);
void PrintSavePlayerName(s16 x, s16 y);
void PrintSaveMapName(s16 x, s16 y);
void PrintSaveBadges(s16 x, s16 y);
diff --git a/include/script_menu.h b/include/script_menu.h
new file mode 100644
index 000000000..7a504556e
--- /dev/null
+++ b/include/script_menu.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_SCRIPTMENU_H
+#define GUARD_SCRIPTMENU_H
+
+struct MultichoiceListStruct
+{
+ struct MenuAction *list;
+ u8 count;
+};
+
+bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4);
+bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
+u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
+void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8);
+void sub_80B5230(u8, u8, u8, u8, u8, u8);
+void sub_80B52B4(u8);
+bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4);
+void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8);
+bool8 yes_no_box(u8 var1, u8 var2);
+bool8 IsScriptActive(void); // unused
+void task_yes_no_maybe(u8);
+bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+void sub_80B5684(u8);
+bool8 TryCreatePCMenu(void);
+void CreatePCMenu(void);
+void sub_80B5838(void);
+void task_picbox(u8 taskId);
+bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3);
+void *picbox_close(void);
+bool8 sub_80B59AC(void);
+
+#endif
diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h
new file mode 100644
index 000000000..6d4e689b5
--- /dev/null
+++ b/include/script_pokemon_80C4.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_SCRIPTPOKE80C4_H
+#define GUARD_SCRIPTPOKE80C4_H
+
+struct MonCoords
+{
+ u8 x, y;
+};
+
+void sub_80C5190(u8);
+void sub_80C5580(void);
+void SetBattleTowerPlayerParty(void);
+void ReducePlayerPartyToThree(void);
+
+u8 sub_80C4D50(void);
+void ShowContestWinner(void);
+void HealPlayerParty();
+u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
+u8 ScriptGiveEgg(u16);
+void ScriptWildBattle(u16, u8, u16);
+void ScriptSetMonMoveSlot(u8, u16, u8);
+
+#endif
diff --git a/include/script_pokemon_80F9.h b/include/script_pokemon_80F9.h
new file mode 100644
index 000000000..d65c99c15
--- /dev/null
+++ b/include/script_pokemon_80F9.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_SCRIPTPOKE80F9_H
+#define GUARD_SCRIPTPOKE80F9_H
+
+struct UnknownStruct2018000
+{
+ u8 filler0[0x8];
+ u8 unk8;
+};
+
+extern struct UnknownStruct2018000 unk_2018000;
+
+void sub_80F9A8C(u8);
+void sub_80F9C00(void);
+void sub_80F9E1C(void);
+void sub_80F99CC(void);
+
+#endif
diff --git a/include/songs.h b/include/songs.h
index c77bad515..01ecf9fe0 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -359,16 +359,16 @@ enum
BGM_DAIGO,
BGM_THANKFOR,
BGM_END,
- BGM_BATTLE27,
- BGM_BATTLE31,
- BGM_BATTLE20,
- BGM_BATTLE32,
- BGM_BATTLE33,
- BGM_BATTLE36,
- BGM_BATTLE34,
- BGM_BATTLE35,
- BGM_BATTLE38,
- BGM_BATTLE30,
+ BGM_BATTLE27, // wild
+ BGM_BATTLE31, // aqua/magma grunt
+ BGM_BATTLE20, // trainer
+ BGM_BATTLE32, // gym leader
+ BGM_BATTLE33, // champion
+ BGM_BATTLE36, // regi
+ BGM_BATTLE34, // weather trio
+ BGM_BATTLE35, // rival
+ BGM_BATTLE38, // elite four
+ BGM_BATTLE30, // aqua/magma leader
};
#endif // GUARD_SONGS_H
diff --git a/include/sound.h b/include/sound.h
index 1a5161ca8..283b2b1f9 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -35,10 +35,10 @@ bool8 IsCryPlayingOrClearCrySongs(void);
bool8 IsCryPlaying(void);
void PlayBGM(u16 songNum);
void PlaySE(u16 songNum);
-void PlaySE12WithPanning(u16 songNum, u8 pan);
-void PlaySE1WithPanning(u16 songNum, u8 pan);
-void PlaySE2WithPanning(u16 songNum, u8 pan);
-void SE12PanpotControl(u8 pan);
+void PlaySE12WithPanning(u16 songNum, s8 pan);
+void PlaySE1WithPanning(u16 songNum, s8 pan);
+void PlaySE2WithPanning(u16 songNum, s8 pan);
+void SE12PanpotControl(s8 pan);
bool8 IsSEPlaying(void);
bool8 IsBGMPlaying(void);
bool8 IsSpecialSEPlaying(void);
diff --git a/include/species.h b/include/species.h
index d0cd7f664..e33481afd 100644
--- a/include/species.h
+++ b/include/species.h
@@ -2,449 +2,449 @@
#define GUARD_SPECIES_H
enum {
- SPECIES_NONE, // 0x000
- SPECIES_BULBASAUR, // 0x001
- SPECIES_IVYSAUR, // 0x002
- SPECIES_VENUSAUR, // 0x003
- SPECIES_CHARMANDER, // 0x004
- SPECIES_CHARMELEON, // 0x005
- SPECIES_CHARIZARD, // 0x006
- SPECIES_SQUIRTLE, // 0x007
- SPECIES_WARTORTLE, // 0x008
- SPECIES_BLASTOISE, // 0x009
- SPECIES_CATERPIE, // 0x00a
- SPECIES_METAPOD, // 0x00b
- SPECIES_BUTTERFREE, // 0x00c
- SPECIES_WEEDLE, // 0x00d
- SPECIES_KAKUNA, // 0x00e
- SPECIES_BEEDRILL, // 0x00f
- SPECIES_PIDGEY, // 0x010
- SPECIES_PIDGEOTTO, // 0x011
- SPECIES_PIDGEOT, // 0x012
- SPECIES_RATTATA, // 0x013
- SPECIES_RATICATE, // 0x014
- SPECIES_SPEAROW, // 0x015
- SPECIES_FEAROW, // 0x016
- SPECIES_EKANS, // 0x017
- SPECIES_ARBOK, // 0x018
- SPECIES_PIKACHU, // 0x019
- SPECIES_RAICHU, // 0x01a
- SPECIES_SANDSHREW, // 0x01b
- SPECIES_SANDSLASH, // 0x01c
- SPECIES_NIDORAN_F, // 0x01d
- SPECIES_NIDORINA, // 0x01e
- SPECIES_NIDOQUEEN, // 0x01f
- SPECIES_NIDORAN_M, // 0x020
- SPECIES_NIDORINO, // 0x021
- SPECIES_NIDOKING, // 0x022
- SPECIES_CLEFAIRY, // 0x023
- SPECIES_CLEFABLE, // 0x024
- SPECIES_VULPIX, // 0x025
- SPECIES_NINETALES, // 0x026
- SPECIES_JIGGLYPUFF, // 0x027
- SPECIES_WIGGLYTUFF, // 0x028
- SPECIES_ZUBAT, // 0x029
- SPECIES_GOLBAT, // 0x02a
- SPECIES_ODDISH, // 0x02b
- SPECIES_GLOOM, // 0x02c
- SPECIES_VILEPLUME, // 0x02d
- SPECIES_PARAS, // 0x02e
- SPECIES_PARASECT, // 0x02f
- SPECIES_VENONAT, // 0x030
- SPECIES_VENOMOTH, // 0x031
- SPECIES_DIGLETT, // 0x032
- SPECIES_DUGTRIO, // 0x033
- SPECIES_MEOWTH, // 0x034
- SPECIES_PERSIAN, // 0x035
- SPECIES_PSYDUCK, // 0x036
- SPECIES_GOLDUCK, // 0x037
- SPECIES_MANKEY, // 0x038
- SPECIES_PRIMEAPE, // 0x039
- SPECIES_GROWLITHE, // 0x03a
- SPECIES_ARCANINE, // 0x03b
- SPECIES_POLIWAG, // 0x03c
- SPECIES_POLIWHIRL, // 0x03d
- SPECIES_POLIWRATH, // 0x03e
- SPECIES_ABRA, // 0x03f
- SPECIES_KADABRA, // 0x040
- SPECIES_ALAKAZAM, // 0x041
- SPECIES_MACHOP, // 0x042
- SPECIES_MACHOKE, // 0x043
- SPECIES_MACHAMP, // 0x044
- SPECIES_BELLSPROUT, // 0x045
- SPECIES_WEEPINBELL, // 0x046
- SPECIES_VICTREEBEL, // 0x047
- SPECIES_TENTACOOL, // 0x048
- SPECIES_TENTACRUEL, // 0x049
- SPECIES_GEODUDE, // 0x04a
- SPECIES_GRAVELER, // 0x04b
- SPECIES_GOLEM, // 0x04c
- SPECIES_PONYTA, // 0x04d
- SPECIES_RAPIDASH, // 0x04e
- SPECIES_SLOWPOKE, // 0x04f
- SPECIES_SLOWBRO, // 0x050
- SPECIES_MAGNEMITE, // 0x051
- SPECIES_MAGNETON, // 0x052
- SPECIES_FARFETCHD, // 0x053
- SPECIES_DODUO, // 0x054
- SPECIES_DODRIO, // 0x055
- SPECIES_SEEL, // 0x056
- SPECIES_DEWGONG, // 0x057
- SPECIES_GRIMER, // 0x058
- SPECIES_MUK, // 0x059
- SPECIES_SHELLDER, // 0x05a
- SPECIES_CLOYSTER, // 0x05b
- SPECIES_GASTLY, // 0x05c
- SPECIES_HAUNTER, // 0x05d
- SPECIES_GENGAR, // 0x05e
- SPECIES_ONIX, // 0x05f
- SPECIES_DROWZEE, // 0x060
- SPECIES_HYPNO, // 0x061
- SPECIES_KRABBY, // 0x062
- SPECIES_KINGLER, // 0x063
- SPECIES_VOLTORB, // 0x064
- SPECIES_ELECTRODE, // 0x065
- SPECIES_EXEGGCUTE, // 0x066
- SPECIES_EXEGGUTOR, // 0x067
- SPECIES_CUBONE, // 0x068
- SPECIES_MAROWAK, // 0x069
- SPECIES_HITMONLEE, // 0x06a
- SPECIES_HITMONCHAN, // 0x06b
- SPECIES_LICKITUNG, // 0x06c
- SPECIES_KOFFING, // 0x06d
- SPECIES_WEEZING, // 0x06e
- SPECIES_RHYHORN, // 0x06f
- SPECIES_RHYDON, // 0x070
- SPECIES_CHANSEY, // 0x071
- SPECIES_TANGELA, // 0x072
- SPECIES_KANGASKHAN, // 0x073
- SPECIES_HORSEA, // 0x074
- SPECIES_SEADRA, // 0x075
- SPECIES_GOLDEEN, // 0x076
- SPECIES_SEAKING, // 0x077
- SPECIES_STARYU, // 0x078
- SPECIES_STARMIE, // 0x079
- SPECIES_MR_MIME, // 0x07a
- SPECIES_SCYTHER, // 0x07b
- SPECIES_JYNX, // 0x07c
- SPECIES_ELECTABUZZ, // 0x07d
- SPECIES_MAGMAR, // 0x07e
- SPECIES_PINSIR, // 0x07f
- SPECIES_TAUROS, // 0x080
- SPECIES_MAGIKARP, // 0x081
- SPECIES_GYARADOS, // 0x082
- SPECIES_LAPRAS, // 0x083
- SPECIES_DITTO, // 0x084
- SPECIES_EEVEE, // 0x085
- SPECIES_VAPOREON, // 0x086
- SPECIES_JOLTEON, // 0x087
- SPECIES_FLAREON, // 0x088
- SPECIES_PORYGON, // 0x089
- SPECIES_OMANYTE, // 0x08a
- SPECIES_OMASTAR, // 0x08b
- SPECIES_KABUTO, // 0x08c
- SPECIES_KABUTOPS, // 0x08d
- SPECIES_AERODACTYL, // 0x08e
- SPECIES_SNORLAX, // 0x08f
- SPECIES_ARTICUNO, // 0x090
- SPECIES_ZAPDOS, // 0x091
- SPECIES_MOLTRES, // 0x092
- SPECIES_DRATINI, // 0x093
- SPECIES_DRAGONAIR, // 0x094
- SPECIES_DRAGONITE, // 0x095
- SPECIES_MEWTWO, // 0x096
- SPECIES_MEW, // 0x097
- SPECIES_CHIKORITA, // 0x098
- SPECIES_BAYLEEF, // 0x099
- SPECIES_MEGANIUM, // 0x09a
- SPECIES_CYNDAQUIL, // 0x09b
- SPECIES_QUILAVA, // 0x09c
- SPECIES_TYPHLOSION, // 0x09d
- SPECIES_TOTODILE, // 0x09e
- SPECIES_CROCONAW, // 0x09f
- SPECIES_FERALIGATR, // 0x0a0
- SPECIES_SENTRET, // 0x0a1
- SPECIES_FURRET, // 0x0a2
- SPECIES_HOOTHOOT, // 0x0a3
- SPECIES_NOCTOWL, // 0x0a4
- SPECIES_LEDYBA, // 0x0a5
- SPECIES_LEDIAN, // 0x0a6
- SPECIES_SPINARAK, // 0x0a7
- SPECIES_ARIADOS, // 0x0a8
- SPECIES_CROBAT, // 0x0a9
- SPECIES_CHINCHOU, // 0x0aa
- SPECIES_LANTURN, // 0x0ab
- SPECIES_PICHU, // 0x0ac
- SPECIES_CLEFFA, // 0x0ad
- SPECIES_IGGLYBUFF, // 0x0ae
- SPECIES_TOGEPI, // 0x0af
- SPECIES_TOGETIC, // 0x0b0
- SPECIES_NATU, // 0x0b1
- SPECIES_XATU, // 0x0b2
- SPECIES_MAREEP, // 0x0b3
- SPECIES_FLAAFFY, // 0x0b4
- SPECIES_AMPHAROS, // 0x0b5
- SPECIES_BELLOSSOM, // 0x0b6
- SPECIES_MARILL, // 0x0b7
- SPECIES_AZUMARILL, // 0x0b8
- SPECIES_SUDOWOODO, // 0x0b9
- SPECIES_POLITOED, // 0x0ba
- SPECIES_HOPPIP, // 0x0bb
- SPECIES_SKIPLOOM, // 0x0bc
- SPECIES_JUMPLUFF, // 0x0bd
- SPECIES_AIPOM, // 0x0be
- SPECIES_SUNKERN, // 0x0bf
- SPECIES_SUNFLORA, // 0x0c0
- SPECIES_YANMA, // 0x0c1
- SPECIES_WOOPER, // 0x0c2
- SPECIES_QUAGSIRE, // 0x0c3
- SPECIES_ESPEON, // 0x0c4
- SPECIES_UMBREON, // 0x0c5
- SPECIES_MURKROW, // 0x0c6
- SPECIES_SLOWKING, // 0x0c7
- SPECIES_MISDREAVUS, // 0x0c8
- SPECIES_UNOWN, // 0x0c9
- SPECIES_WOBBUFFET, // 0x0ca
- SPECIES_GIRAFARIG, // 0x0cb
- SPECIES_PINECO, // 0x0cc
- SPECIES_FORRETRESS, // 0x0cd
- SPECIES_DUNSPARCE, // 0x0ce
- SPECIES_GLIGAR, // 0x0cf
- SPECIES_STEELIX, // 0x0d0
- SPECIES_SNUBBULL, // 0x0d1
- SPECIES_GRANBULL, // 0x0d2
- SPECIES_QWILFISH, // 0x0d3
- SPECIES_SCIZOR, // 0x0d4
- SPECIES_SHUCKLE, // 0x0d5
- SPECIES_HERACROSS, // 0x0d6
- SPECIES_SNEASEL, // 0x0d7
- SPECIES_TEDDIURSA, // 0x0d8
- SPECIES_URSARING, // 0x0d9
- SPECIES_SLUGMA, // 0x0da
- SPECIES_MAGCARGO, // 0x0db
- SPECIES_SWINUB, // 0x0dc
- SPECIES_PILOSWINE, // 0x0dd
- SPECIES_CORSOLA, // 0x0de
- SPECIES_REMORAID, // 0x0df
- SPECIES_OCTILLERY, // 0x0e0
- SPECIES_DELIBIRD, // 0x0e1
- SPECIES_MANTINE, // 0x0e2
- SPECIES_SKARMORY, // 0x0e3
- SPECIES_HOUNDOUR, // 0x0e4
- SPECIES_HOUNDOOM, // 0x0e5
- SPECIES_KINGDRA, // 0x0e6
- SPECIES_PHANPY, // 0x0e7
- SPECIES_DONPHAN, // 0x0e8
- SPECIES_PORYGON2, // 0x0e9
- SPECIES_STANTLER, // 0x0ea
- SPECIES_SMEARGLE, // 0x0eb
- SPECIES_TYROGUE, // 0x0ec
- SPECIES_HITMONTOP, // 0x0ed
- SPECIES_SMOOCHUM, // 0x0ee
- SPECIES_ELEKID, // 0x0ef
- SPECIES_MAGBY, // 0x0f0
- SPECIES_MILTANK, // 0x0f1
- SPECIES_BLISSEY, // 0x0f2
- SPECIES_RAIKOU, // 0x0f3
- SPECIES_ENTEI, // 0x0f4
- SPECIES_SUICUNE, // 0x0f5
- SPECIES_LARVITAR, // 0x0f6
- SPECIES_PUPITAR, // 0x0f7
- SPECIES_TYRANITAR, // 0x0f8
- SPECIES_LUGIA, // 0x0f9
- SPECIES_HO_OH, // 0x0fa
- SPECIES_CELEBI, // 0x0fb
+ SPECIES_NONE, // 0x000
+ SPECIES_BULBASAUR, // 0x001
+ SPECIES_IVYSAUR, // 0x002
+ SPECIES_VENUSAUR, // 0x003
+ SPECIES_CHARMANDER, // 0x004
+ SPECIES_CHARMELEON, // 0x005
+ SPECIES_CHARIZARD, // 0x006
+ SPECIES_SQUIRTLE, // 0x007
+ SPECIES_WARTORTLE, // 0x008
+ SPECIES_BLASTOISE, // 0x009
+ SPECIES_CATERPIE, // 0x00a
+ SPECIES_METAPOD, // 0x00b
+ SPECIES_BUTTERFREE, // 0x00c
+ SPECIES_WEEDLE, // 0x00d
+ SPECIES_KAKUNA, // 0x00e
+ SPECIES_BEEDRILL, // 0x00f
+ SPECIES_PIDGEY, // 0x010
+ SPECIES_PIDGEOTTO, // 0x011
+ SPECIES_PIDGEOT, // 0x012
+ SPECIES_RATTATA, // 0x013
+ SPECIES_RATICATE, // 0x014
+ SPECIES_SPEAROW, // 0x015
+ SPECIES_FEAROW, // 0x016
+ SPECIES_EKANS, // 0x017
+ SPECIES_ARBOK, // 0x018
+ SPECIES_PIKACHU, // 0x019
+ SPECIES_RAICHU, // 0x01a
+ SPECIES_SANDSHREW, // 0x01b
+ SPECIES_SANDSLASH, // 0x01c
+ SPECIES_NIDORAN_F, // 0x01d
+ SPECIES_NIDORINA, // 0x01e
+ SPECIES_NIDOQUEEN, // 0x01f
+ SPECIES_NIDORAN_M, // 0x020
+ SPECIES_NIDORINO, // 0x021
+ SPECIES_NIDOKING, // 0x022
+ SPECIES_CLEFAIRY, // 0x023
+ SPECIES_CLEFABLE, // 0x024
+ SPECIES_VULPIX, // 0x025
+ SPECIES_NINETALES, // 0x026
+ SPECIES_JIGGLYPUFF, // 0x027
+ SPECIES_WIGGLYTUFF, // 0x028
+ SPECIES_ZUBAT, // 0x029
+ SPECIES_GOLBAT, // 0x02a
+ SPECIES_ODDISH, // 0x02b
+ SPECIES_GLOOM, // 0x02c
+ SPECIES_VILEPLUME, // 0x02d
+ SPECIES_PARAS, // 0x02e
+ SPECIES_PARASECT, // 0x02f
+ SPECIES_VENONAT, // 0x030
+ SPECIES_VENOMOTH, // 0x031
+ SPECIES_DIGLETT, // 0x032
+ SPECIES_DUGTRIO, // 0x033
+ SPECIES_MEOWTH, // 0x034
+ SPECIES_PERSIAN, // 0x035
+ SPECIES_PSYDUCK, // 0x036
+ SPECIES_GOLDUCK, // 0x037
+ SPECIES_MANKEY, // 0x038
+ SPECIES_PRIMEAPE, // 0x039
+ SPECIES_GROWLITHE, // 0x03a
+ SPECIES_ARCANINE, // 0x03b
+ SPECIES_POLIWAG, // 0x03c
+ SPECIES_POLIWHIRL, // 0x03d
+ SPECIES_POLIWRATH, // 0x03e
+ SPECIES_ABRA, // 0x03f
+ SPECIES_KADABRA, // 0x040
+ SPECIES_ALAKAZAM, // 0x041
+ SPECIES_MACHOP, // 0x042
+ SPECIES_MACHOKE, // 0x043
+ SPECIES_MACHAMP, // 0x044
+ SPECIES_BELLSPROUT, // 0x045
+ SPECIES_WEEPINBELL, // 0x046
+ SPECIES_VICTREEBEL, // 0x047
+ SPECIES_TENTACOOL, // 0x048
+ SPECIES_TENTACRUEL, // 0x049
+ SPECIES_GEODUDE, // 0x04a
+ SPECIES_GRAVELER, // 0x04b
+ SPECIES_GOLEM, // 0x04c
+ SPECIES_PONYTA, // 0x04d
+ SPECIES_RAPIDASH, // 0x04e
+ SPECIES_SLOWPOKE, // 0x04f
+ SPECIES_SLOWBRO, // 0x050
+ SPECIES_MAGNEMITE, // 0x051
+ SPECIES_MAGNETON, // 0x052
+ SPECIES_FARFETCHD, // 0x053
+ SPECIES_DODUO, // 0x054
+ SPECIES_DODRIO, // 0x055
+ SPECIES_SEEL, // 0x056
+ SPECIES_DEWGONG, // 0x057
+ SPECIES_GRIMER, // 0x058
+ SPECIES_MUK, // 0x059
+ SPECIES_SHELLDER, // 0x05a
+ SPECIES_CLOYSTER, // 0x05b
+ SPECIES_GASTLY, // 0x05c
+ SPECIES_HAUNTER, // 0x05d
+ SPECIES_GENGAR, // 0x05e
+ SPECIES_ONIX, // 0x05f
+ SPECIES_DROWZEE, // 0x060
+ SPECIES_HYPNO, // 0x061
+ SPECIES_KRABBY, // 0x062
+ SPECIES_KINGLER, // 0x063
+ SPECIES_VOLTORB, // 0x064
+ SPECIES_ELECTRODE, // 0x065
+ SPECIES_EXEGGCUTE, // 0x066
+ SPECIES_EXEGGUTOR, // 0x067
+ SPECIES_CUBONE, // 0x068
+ SPECIES_MAROWAK, // 0x069
+ SPECIES_HITMONLEE, // 0x06a
+ SPECIES_HITMONCHAN, // 0x06b
+ SPECIES_LICKITUNG, // 0x06c
+ SPECIES_KOFFING, // 0x06d
+ SPECIES_WEEZING, // 0x06e
+ SPECIES_RHYHORN, // 0x06f
+ SPECIES_RHYDON, // 0x070
+ SPECIES_CHANSEY, // 0x071
+ SPECIES_TANGELA, // 0x072
+ SPECIES_KANGASKHAN, // 0x073
+ SPECIES_HORSEA, // 0x074
+ SPECIES_SEADRA, // 0x075
+ SPECIES_GOLDEEN, // 0x076
+ SPECIES_SEAKING, // 0x077
+ SPECIES_STARYU, // 0x078
+ SPECIES_STARMIE, // 0x079
+ SPECIES_MR_MIME, // 0x07a
+ SPECIES_SCYTHER, // 0x07b
+ SPECIES_JYNX, // 0x07c
+ SPECIES_ELECTABUZZ, // 0x07d
+ SPECIES_MAGMAR, // 0x07e
+ SPECIES_PINSIR, // 0x07f
+ SPECIES_TAUROS, // 0x080
+ SPECIES_MAGIKARP, // 0x081
+ SPECIES_GYARADOS, // 0x082
+ SPECIES_LAPRAS, // 0x083
+ SPECIES_DITTO, // 0x084
+ SPECIES_EEVEE, // 0x085
+ SPECIES_VAPOREON, // 0x086
+ SPECIES_JOLTEON, // 0x087
+ SPECIES_FLAREON, // 0x088
+ SPECIES_PORYGON, // 0x089
+ SPECIES_OMANYTE, // 0x08a
+ SPECIES_OMASTAR, // 0x08b
+ SPECIES_KABUTO, // 0x08c
+ SPECIES_KABUTOPS, // 0x08d
+ SPECIES_AERODACTYL, // 0x08e
+ SPECIES_SNORLAX, // 0x08f
+ SPECIES_ARTICUNO, // 0x090
+ SPECIES_ZAPDOS, // 0x091
+ SPECIES_MOLTRES, // 0x092
+ SPECIES_DRATINI, // 0x093
+ SPECIES_DRAGONAIR, // 0x094
+ SPECIES_DRAGONITE, // 0x095
+ SPECIES_MEWTWO, // 0x096
+ SPECIES_MEW, // 0x097
+ SPECIES_CHIKORITA, // 0x098
+ SPECIES_BAYLEEF, // 0x099
+ SPECIES_MEGANIUM, // 0x09a
+ SPECIES_CYNDAQUIL, // 0x09b
+ SPECIES_QUILAVA, // 0x09c
+ SPECIES_TYPHLOSION, // 0x09d
+ SPECIES_TOTODILE, // 0x09e
+ SPECIES_CROCONAW, // 0x09f
+ SPECIES_FERALIGATR, // 0x0a0
+ SPECIES_SENTRET, // 0x0a1
+ SPECIES_FURRET, // 0x0a2
+ SPECIES_HOOTHOOT, // 0x0a3
+ SPECIES_NOCTOWL, // 0x0a4
+ SPECIES_LEDYBA, // 0x0a5
+ SPECIES_LEDIAN, // 0x0a6
+ SPECIES_SPINARAK, // 0x0a7
+ SPECIES_ARIADOS, // 0x0a8
+ SPECIES_CROBAT, // 0x0a9
+ SPECIES_CHINCHOU, // 0x0aa
+ SPECIES_LANTURN, // 0x0ab
+ SPECIES_PICHU, // 0x0ac
+ SPECIES_CLEFFA, // 0x0ad
+ SPECIES_IGGLYBUFF, // 0x0ae
+ SPECIES_TOGEPI, // 0x0af
+ SPECIES_TOGETIC, // 0x0b0
+ SPECIES_NATU, // 0x0b1
+ SPECIES_XATU, // 0x0b2
+ SPECIES_MAREEP, // 0x0b3
+ SPECIES_FLAAFFY, // 0x0b4
+ SPECIES_AMPHAROS, // 0x0b5
+ SPECIES_BELLOSSOM, // 0x0b6
+ SPECIES_MARILL, // 0x0b7
+ SPECIES_AZUMARILL, // 0x0b8
+ SPECIES_SUDOWOODO, // 0x0b9
+ SPECIES_POLITOED, // 0x0ba
+ SPECIES_HOPPIP, // 0x0bb
+ SPECIES_SKIPLOOM, // 0x0bc
+ SPECIES_JUMPLUFF, // 0x0bd
+ SPECIES_AIPOM, // 0x0be
+ SPECIES_SUNKERN, // 0x0bf
+ SPECIES_SUNFLORA, // 0x0c0
+ SPECIES_YANMA, // 0x0c1
+ SPECIES_WOOPER, // 0x0c2
+ SPECIES_QUAGSIRE, // 0x0c3
+ SPECIES_ESPEON, // 0x0c4
+ SPECIES_UMBREON, // 0x0c5
+ SPECIES_MURKROW, // 0x0c6
+ SPECIES_SLOWKING, // 0x0c7
+ SPECIES_MISDREAVUS, // 0x0c8
+ SPECIES_UNOWN, // 0x0c9
+ SPECIES_WOBBUFFET, // 0x0ca
+ SPECIES_GIRAFARIG, // 0x0cb
+ SPECIES_PINECO, // 0x0cc
+ SPECIES_FORRETRESS, // 0x0cd
+ SPECIES_DUNSPARCE, // 0x0ce
+ SPECIES_GLIGAR, // 0x0cf
+ SPECIES_STEELIX, // 0x0d0
+ SPECIES_SNUBBULL, // 0x0d1
+ SPECIES_GRANBULL, // 0x0d2
+ SPECIES_QWILFISH, // 0x0d3
+ SPECIES_SCIZOR, // 0x0d4
+ SPECIES_SHUCKLE, // 0x0d5
+ SPECIES_HERACROSS, // 0x0d6
+ SPECIES_SNEASEL, // 0x0d7
+ SPECIES_TEDDIURSA, // 0x0d8
+ SPECIES_URSARING, // 0x0d9
+ SPECIES_SLUGMA, // 0x0da
+ SPECIES_MAGCARGO, // 0x0db
+ SPECIES_SWINUB, // 0x0dc
+ SPECIES_PILOSWINE, // 0x0dd
+ SPECIES_CORSOLA, // 0x0de
+ SPECIES_REMORAID, // 0x0df
+ SPECIES_OCTILLERY, // 0x0e0
+ SPECIES_DELIBIRD, // 0x0e1
+ SPECIES_MANTINE, // 0x0e2
+ SPECIES_SKARMORY, // 0x0e3
+ SPECIES_HOUNDOUR, // 0x0e4
+ SPECIES_HOUNDOOM, // 0x0e5
+ SPECIES_KINGDRA, // 0x0e6
+ SPECIES_PHANPY, // 0x0e7
+ SPECIES_DONPHAN, // 0x0e8
+ SPECIES_PORYGON2, // 0x0e9
+ SPECIES_STANTLER, // 0x0ea
+ SPECIES_SMEARGLE, // 0x0eb
+ SPECIES_TYROGUE, // 0x0ec
+ SPECIES_HITMONTOP, // 0x0ed
+ SPECIES_SMOOCHUM, // 0x0ee
+ SPECIES_ELEKID, // 0x0ef
+ SPECIES_MAGBY, // 0x0f0
+ SPECIES_MILTANK, // 0x0f1
+ SPECIES_BLISSEY, // 0x0f2
+ SPECIES_RAIKOU, // 0x0f3
+ SPECIES_ENTEI, // 0x0f4
+ SPECIES_SUICUNE, // 0x0f5
+ SPECIES_LARVITAR, // 0x0f6
+ SPECIES_PUPITAR, // 0x0f7
+ SPECIES_TYRANITAR, // 0x0f8
+ SPECIES_LUGIA, // 0x0f9
+ SPECIES_HO_OH, // 0x0fa
+ SPECIES_CELEBI, // 0x0fb
- SPECIES_OLD_UNOWN_B,
- SPECIES_OLD_UNOWN_C,
- SPECIES_OLD_UNOWN_D,
- SPECIES_OLD_UNOWN_E,
- SPECIES_OLD_UNOWN_F,
- SPECIES_OLD_UNOWN_G,
- SPECIES_OLD_UNOWN_H,
- SPECIES_OLD_UNOWN_I,
- SPECIES_OLD_UNOWN_J,
- SPECIES_OLD_UNOWN_K,
- SPECIES_OLD_UNOWN_L,
- SPECIES_OLD_UNOWN_M,
- SPECIES_OLD_UNOWN_N,
- SPECIES_OLD_UNOWN_O,
- SPECIES_OLD_UNOWN_P,
- SPECIES_OLD_UNOWN_Q,
- SPECIES_OLD_UNOWN_R,
- SPECIES_OLD_UNOWN_S,
- SPECIES_OLD_UNOWN_T,
- SPECIES_OLD_UNOWN_U,
- SPECIES_OLD_UNOWN_V,
- SPECIES_OLD_UNOWN_W,
- SPECIES_OLD_UNOWN_X,
- SPECIES_OLD_UNOWN_Y,
- SPECIES_OLD_UNOWN_Z,
+ SPECIES_OLD_UNOWN_B,
+ SPECIES_OLD_UNOWN_C,
+ SPECIES_OLD_UNOWN_D,
+ SPECIES_OLD_UNOWN_E,
+ SPECIES_OLD_UNOWN_F,
+ SPECIES_OLD_UNOWN_G,
+ SPECIES_OLD_UNOWN_H,
+ SPECIES_OLD_UNOWN_I,
+ SPECIES_OLD_UNOWN_J,
+ SPECIES_OLD_UNOWN_K,
+ SPECIES_OLD_UNOWN_L,
+ SPECIES_OLD_UNOWN_M,
+ SPECIES_OLD_UNOWN_N,
+ SPECIES_OLD_UNOWN_O,
+ SPECIES_OLD_UNOWN_P,
+ SPECIES_OLD_UNOWN_Q,
+ SPECIES_OLD_UNOWN_R,
+ SPECIES_OLD_UNOWN_S,
+ SPECIES_OLD_UNOWN_T,
+ SPECIES_OLD_UNOWN_U,
+ SPECIES_OLD_UNOWN_V,
+ SPECIES_OLD_UNOWN_W,
+ SPECIES_OLD_UNOWN_X,
+ SPECIES_OLD_UNOWN_Y,
+ SPECIES_OLD_UNOWN_Z,
- SPECIES_TREECKO, // 0x115
- SPECIES_GROVYLE, // 0x116
- SPECIES_SCEPTILE, // 0x117
- SPECIES_TORCHIC, // 0x118
- SPECIES_COMBUSKEN, // 0x119
- SPECIES_BLAZIKEN, // 0x11a
- SPECIES_MUDKIP, // 0x11b
- SPECIES_MARSHTOMP, // 0x11c
- SPECIES_SWAMPERT, // 0x11d
- SPECIES_POOCHYENA, // 0x11e
- SPECIES_MIGHTYENA, // 0x11f
- SPECIES_ZIGZAGOON, // 0x120
- SPECIES_LINOONE, // 0x121
- SPECIES_WURMPLE, // 0x122
- SPECIES_SILCOON, // 0x123
- SPECIES_BEAUTIFLY, // 0x124
- SPECIES_CASCOON, // 0x125
- SPECIES_DUSTOX, // 0x126
- SPECIES_LOTAD, // 0x127
- SPECIES_LOMBRE, // 0x128
- SPECIES_LUDICOLO, // 0x129
- SPECIES_SEEDOT, // 0x12a
- SPECIES_NUZLEAF, // 0x12b
- SPECIES_SHIFTRY, // 0x12c
- SPECIES_NINCADA, // 0x12d
- SPECIES_NINJASK, // 0x12e
- SPECIES_SHEDINJA, // 0x12f
- SPECIES_TAILLOW, // 0x130
- SPECIES_SWELLOW, // 0x131
- SPECIES_SHROOMISH, // 0x132
- SPECIES_BRELOOM, // 0x133
- SPECIES_SPINDA, // 0x134
- SPECIES_WINGULL, // 0x135
- SPECIES_PELIPPER, // 0x136
- SPECIES_SURSKIT, // 0x137
- SPECIES_MASQUERAIN, // 0x138
- SPECIES_WAILMER, // 0x139
- SPECIES_WAILORD, // 0x13a
- SPECIES_SKITTY, // 0x13b
- SPECIES_DELCATTY, // 0x13c
- SPECIES_KECLEON, // 0x13d
- SPECIES_BALTOY, // 0x13e
- SPECIES_CLAYDOL, // 0x13f
- SPECIES_NOSEPASS, // 0x140
- SPECIES_TORKOAL, // 0x141
- SPECIES_SABLEYE, // 0x142
- SPECIES_BARBOACH, // 0x143
- SPECIES_WHISCASH, // 0x144
- SPECIES_LUVDISC, // 0x145
- SPECIES_CORPHISH, // 0x146
- SPECIES_CRAWDAUNT, // 0x147
- SPECIES_FEEBAS, // 0x148
- SPECIES_MILOTIC, // 0x149
- SPECIES_CARVANHA, // 0x14a
- SPECIES_SHARPEDO, // 0x14b
- SPECIES_TRAPINCH, // 0x14c
- SPECIES_VIBRAVA, // 0x14d
- SPECIES_FLYGON, // 0x14e
- SPECIES_MAKUHITA, // 0x14f
- SPECIES_HARIYAMA, // 0x150
- SPECIES_ELECTRIKE, // 0x151
- SPECIES_MANECTRIC, // 0x152
- SPECIES_NUMEL, // 0x153
- SPECIES_CAMERUPT, // 0x154
- SPECIES_SPHEAL, // 0x155
- SPECIES_SEALEO, // 0x156
- SPECIES_WALREIN, // 0x157
- SPECIES_CACNEA, // 0x158
- SPECIES_CACTURNE, // 0x159
- SPECIES_SNORUNT, // 0x15a
- SPECIES_GLALIE, // 0x15b
- SPECIES_LUNATONE, // 0x15c
- SPECIES_SOLROCK, // 0x15d
- SPECIES_AZURILL, // 0x15e
- SPECIES_SPOINK, // 0x15f
- SPECIES_GRUMPIG, // 0x160
- SPECIES_PLUSLE, // 0x161
- SPECIES_MINUN, // 0x162
- SPECIES_MAWILE, // 0x163
- SPECIES_MEDITITE, // 0x164
- SPECIES_MEDICHAM, // 0x165
- SPECIES_SWABLU, // 0x166
- SPECIES_ALTARIA, // 0x167
- SPECIES_WYNAUT, // 0x168
- SPECIES_DUSKULL, // 0x169
- SPECIES_DUSCLOPS, // 0x16a
- SPECIES_ROSELIA, // 0x16b
- SPECIES_SLAKOTH, // 0x16c
- SPECIES_VIGOROTH, // 0x16d
- SPECIES_SLAKING, // 0x16e
- SPECIES_GULPIN, // 0x16f
- SPECIES_SWALOT, // 0x170
- SPECIES_TROPIUS, // 0x171
- SPECIES_WHISMUR, // 0x172
- SPECIES_LOUDRED, // 0x173
- SPECIES_EXPLOUD, // 0x174
- SPECIES_CLAMPERL, // 0x175
- SPECIES_HUNTAIL, // 0x176
- SPECIES_GOREBYSS, // 0x177
- SPECIES_ABSOL, // 0x178
- SPECIES_SHUPPET, // 0x179
- SPECIES_BANETTE, // 0x17a
- SPECIES_SEVIPER, // 0x17b
- SPECIES_ZANGOOSE, // 0x17c
- SPECIES_RELICANTH, // 0x17d
- SPECIES_ARON, // 0x17e
- SPECIES_LAIRON, // 0x17f
- SPECIES_AGGRON, // 0x180
- SPECIES_CASTFORM, // 0x181
- SPECIES_VOLBEAT, // 0x182
- SPECIES_ILLUMISE, // 0x183
- SPECIES_LILEEP, // 0x184
- SPECIES_CRADILY, // 0x185
- SPECIES_ANORITH, // 0x186
- SPECIES_ARMALDO, // 0x187
- SPECIES_RALTS, // 0x188
- SPECIES_KIRLIA, // 0x189
- SPECIES_GARDEVOIR, // 0x18a
- SPECIES_BAGON, // 0x18b
- SPECIES_SHELGON, // 0x18c
- SPECIES_SALAMENCE, // 0x18d
- SPECIES_BELDUM, // 0x18e
- SPECIES_METANG, // 0x18f
- SPECIES_METAGROSS, // 0x190
- SPECIES_REGIROCK, // 0x191
- SPECIES_REGICE, // 0x192
- SPECIES_REGISTEEL, // 0x193
- SPECIES_KYOGRE, // 0x194
- SPECIES_GROUDON, // 0x195
- SPECIES_RAYQUAZA, // 0x196
- SPECIES_LATIAS, // 0x197
- SPECIES_LATIOS, // 0x198
- SPECIES_JIRACHI, // 0x199
- SPECIES_DEOXYS, // 0x19a
- SPECIES_CHIMECHO, // 0x19b
- SPECIES_EGG, // 0x19c
+ SPECIES_TREECKO, // 0x115
+ SPECIES_GROVYLE, // 0x116
+ SPECIES_SCEPTILE, // 0x117
+ SPECIES_TORCHIC, // 0x118
+ SPECIES_COMBUSKEN, // 0x119
+ SPECIES_BLAZIKEN, // 0x11a
+ SPECIES_MUDKIP, // 0x11b
+ SPECIES_MARSHTOMP, // 0x11c
+ SPECIES_SWAMPERT, // 0x11d
+ SPECIES_POOCHYENA, // 0x11e
+ SPECIES_MIGHTYENA, // 0x11f
+ SPECIES_ZIGZAGOON, // 0x120
+ SPECIES_LINOONE, // 0x121
+ SPECIES_WURMPLE, // 0x122
+ SPECIES_SILCOON, // 0x123
+ SPECIES_BEAUTIFLY, // 0x124
+ SPECIES_CASCOON, // 0x125
+ SPECIES_DUSTOX, // 0x126
+ SPECIES_LOTAD, // 0x127
+ SPECIES_LOMBRE, // 0x128
+ SPECIES_LUDICOLO, // 0x129
+ SPECIES_SEEDOT, // 0x12a
+ SPECIES_NUZLEAF, // 0x12b
+ SPECIES_SHIFTRY, // 0x12c
+ SPECIES_NINCADA, // 0x12d
+ SPECIES_NINJASK, // 0x12e
+ SPECIES_SHEDINJA, // 0x12f
+ SPECIES_TAILLOW, // 0x130
+ SPECIES_SWELLOW, // 0x131
+ SPECIES_SHROOMISH, // 0x132
+ SPECIES_BRELOOM, // 0x133
+ SPECIES_SPINDA, // 0x134
+ SPECIES_WINGULL, // 0x135
+ SPECIES_PELIPPER, // 0x136
+ SPECIES_SURSKIT, // 0x137
+ SPECIES_MASQUERAIN, // 0x138
+ SPECIES_WAILMER, // 0x139
+ SPECIES_WAILORD, // 0x13a
+ SPECIES_SKITTY, // 0x13b
+ SPECIES_DELCATTY, // 0x13c
+ SPECIES_KECLEON, // 0x13d
+ SPECIES_BALTOY, // 0x13e
+ SPECIES_CLAYDOL, // 0x13f
+ SPECIES_NOSEPASS, // 0x140
+ SPECIES_TORKOAL, // 0x141
+ SPECIES_SABLEYE, // 0x142
+ SPECIES_BARBOACH, // 0x143
+ SPECIES_WHISCASH, // 0x144
+ SPECIES_LUVDISC, // 0x145
+ SPECIES_CORPHISH, // 0x146
+ SPECIES_CRAWDAUNT, // 0x147
+ SPECIES_FEEBAS, // 0x148
+ SPECIES_MILOTIC, // 0x149
+ SPECIES_CARVANHA, // 0x14a
+ SPECIES_SHARPEDO, // 0x14b
+ SPECIES_TRAPINCH, // 0x14c
+ SPECIES_VIBRAVA, // 0x14d
+ SPECIES_FLYGON, // 0x14e
+ SPECIES_MAKUHITA, // 0x14f
+ SPECIES_HARIYAMA, // 0x150
+ SPECIES_ELECTRIKE, // 0x151
+ SPECIES_MANECTRIC, // 0x152
+ SPECIES_NUMEL, // 0x153
+ SPECIES_CAMERUPT, // 0x154
+ SPECIES_SPHEAL, // 0x155
+ SPECIES_SEALEO, // 0x156
+ SPECIES_WALREIN, // 0x157
+ SPECIES_CACNEA, // 0x158
+ SPECIES_CACTURNE, // 0x159
+ SPECIES_SNORUNT, // 0x15a
+ SPECIES_GLALIE, // 0x15b
+ SPECIES_LUNATONE, // 0x15c
+ SPECIES_SOLROCK, // 0x15d
+ SPECIES_AZURILL, // 0x15e
+ SPECIES_SPOINK, // 0x15f
+ SPECIES_GRUMPIG, // 0x160
+ SPECIES_PLUSLE, // 0x161
+ SPECIES_MINUN, // 0x162
+ SPECIES_MAWILE, // 0x163
+ SPECIES_MEDITITE, // 0x164
+ SPECIES_MEDICHAM, // 0x165
+ SPECIES_SWABLU, // 0x166
+ SPECIES_ALTARIA, // 0x167
+ SPECIES_WYNAUT, // 0x168
+ SPECIES_DUSKULL, // 0x169
+ SPECIES_DUSCLOPS, // 0x16a
+ SPECIES_ROSELIA, // 0x16b
+ SPECIES_SLAKOTH, // 0x16c
+ SPECIES_VIGOROTH, // 0x16d
+ SPECIES_SLAKING, // 0x16e
+ SPECIES_GULPIN, // 0x16f
+ SPECIES_SWALOT, // 0x170
+ SPECIES_TROPIUS, // 0x171
+ SPECIES_WHISMUR, // 0x172
+ SPECIES_LOUDRED, // 0x173
+ SPECIES_EXPLOUD, // 0x174
+ SPECIES_CLAMPERL, // 0x175
+ SPECIES_HUNTAIL, // 0x176
+ SPECIES_GOREBYSS, // 0x177
+ SPECIES_ABSOL, // 0x178
+ SPECIES_SHUPPET, // 0x179
+ SPECIES_BANETTE, // 0x17a
+ SPECIES_SEVIPER, // 0x17b
+ SPECIES_ZANGOOSE, // 0x17c
+ SPECIES_RELICANTH, // 0x17d
+ SPECIES_ARON, // 0x17e
+ SPECIES_LAIRON, // 0x17f
+ SPECIES_AGGRON, // 0x180
+ SPECIES_CASTFORM, // 0x181
+ SPECIES_VOLBEAT, // 0x182
+ SPECIES_ILLUMISE, // 0x183
+ SPECIES_LILEEP, // 0x184
+ SPECIES_CRADILY, // 0x185
+ SPECIES_ANORITH, // 0x186
+ SPECIES_ARMALDO, // 0x187
+ SPECIES_RALTS, // 0x188
+ SPECIES_KIRLIA, // 0x189
+ SPECIES_GARDEVOIR, // 0x18a
+ SPECIES_BAGON, // 0x18b
+ SPECIES_SHELGON, // 0x18c
+ SPECIES_SALAMENCE, // 0x18d
+ SPECIES_BELDUM, // 0x18e
+ SPECIES_METANG, // 0x18f
+ SPECIES_METAGROSS, // 0x190
+ SPECIES_REGIROCK, // 0x191
+ SPECIES_REGICE, // 0x192
+ SPECIES_REGISTEEL, // 0x193
+ SPECIES_KYOGRE, // 0x194
+ SPECIES_GROUDON, // 0x195
+ SPECIES_RAYQUAZA, // 0x196
+ SPECIES_LATIAS, // 0x197
+ SPECIES_LATIOS, // 0x198
+ SPECIES_JIRACHI, // 0x199
+ SPECIES_DEOXYS, // 0x19a
+ SPECIES_CHIMECHO, // 0x19b
+ SPECIES_EGG, // 0x19c
- SPECIES_UNOWN_B,
- SPECIES_UNOWN_C,
- SPECIES_UNOWN_D,
- SPECIES_UNOWN_E,
- SPECIES_UNOWN_F,
- SPECIES_UNOWN_G,
- SPECIES_UNOWN_H,
- SPECIES_UNOWN_I,
- SPECIES_UNOWN_J,
- SPECIES_UNOWN_K,
- SPECIES_UNOWN_L,
- SPECIES_UNOWN_M,
- SPECIES_UNOWN_N,
- SPECIES_UNOWN_O,
- SPECIES_UNOWN_P,
- SPECIES_UNOWN_Q,
- SPECIES_UNOWN_R,
- SPECIES_UNOWN_S,
- SPECIES_UNOWN_T,
- SPECIES_UNOWN_U,
- SPECIES_UNOWN_V,
- SPECIES_UNOWN_W,
- SPECIES_UNOWN_X,
- SPECIES_UNOWN_Y,
- SPECIES_UNOWN_Z,
- SPECIES_UNOWN_EMARK,
- SPECIES_UNOWN_QMARK,
+ SPECIES_UNOWN_B,
+ SPECIES_UNOWN_C,
+ SPECIES_UNOWN_D,
+ SPECIES_UNOWN_E,
+ SPECIES_UNOWN_F,
+ SPECIES_UNOWN_G,
+ SPECIES_UNOWN_H,
+ SPECIES_UNOWN_I,
+ SPECIES_UNOWN_J,
+ SPECIES_UNOWN_K,
+ SPECIES_UNOWN_L,
+ SPECIES_UNOWN_M,
+ SPECIES_UNOWN_N,
+ SPECIES_UNOWN_O,
+ SPECIES_UNOWN_P,
+ SPECIES_UNOWN_Q,
+ SPECIES_UNOWN_R,
+ SPECIES_UNOWN_S,
+ SPECIES_UNOWN_T,
+ SPECIES_UNOWN_U,
+ SPECIES_UNOWN_V,
+ SPECIES_UNOWN_W,
+ SPECIES_UNOWN_X,
+ SPECIES_UNOWN_Y,
+ SPECIES_UNOWN_Z,
+ SPECIES_UNOWN_EMARK,
+ SPECIES_UNOWN_QMARK,
};
#define NUM_SPECIES SPECIES_EGG
diff --git a/include/sprite.h b/include/sprite.h
index 13d94e9f3..42620c9e9 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -5,7 +5,7 @@
struct SpriteSheet
{
- u8 *data;
+ const u8 *data;
u16 size;
u16 tag;
};
@@ -18,7 +18,7 @@ struct SpriteFrameImage
struct SpritePalette
{
- u16 *data;
+ const u16 *data;
u16 tag;
};
@@ -45,6 +45,9 @@ struct AnimJumpCmd
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;
@@ -53,6 +56,13 @@ union AnimCmd
struct AnimJumpCmd jump;
};
+#define ANIMCMD_FRAME(...) \
+ {.frame = {__VA_ARGS__}}
+#define ANIMCMD_JUMP(_target) \
+ {.jump = {.type = -2, .target = _target}}
+#define ANIMCMD_END \
+ {.type = -1}
+
struct AffineAnimFrameCmd
{
s16 xScale;
@@ -81,6 +91,11 @@ union AffineAnimCmd
struct AffineAnimJumpCmd jump;
};
+#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
+ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
+#define AFFINEANIMCMD_END \
+ {.type = 0x7FFF}
+
struct AffineAnimState
{
u8 animNum;
@@ -121,21 +136,21 @@ struct SpriteTemplate
{
u16 tileTag;
u16 paletteTag;
- struct OamData *oam;
- union AnimCmd **anims;
+ const struct OamData *oam;
+ const union AnimCmd *const *anims;
struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ const union AffineAnimCmd *const *affineAnims;
void (*callback)(struct Sprite *);
};
struct Sprite
{
/*0x00*/ struct OamData oam;
- /*0x08*/ union AnimCmd **anims;
- /*0x0C*/ struct SpriteFrameImage *images;
- /*0x10*/ union AffineAnimCmd **affineAnims;
+ /*0x08*/ const union AnimCmd *const *anims;
+ /*0x0C*/ const struct SpriteFrameImage *images;
+ /*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
- /*0x18*/ struct SubspriteTable *subspriteTables;
+ /*0x18*/ const struct SubspriteTable *subspriteTables;
/*0x1C*/ void (*callback)(struct Sprite *);
/*0x20*/ struct Coords16 pos1;
@@ -185,6 +200,10 @@ struct Sprite
/*0x43*/ u8 subpriority;
};
+extern const struct OamData gDummyOamData;
+extern const union AnimCmd *const gDummySpriteAnimTable[];
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
@@ -194,7 +213,7 @@ 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, u16 x, u16 y, u8 subpriority);
+u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
void DestroySprite(struct Sprite *sprite);
@@ -204,7 +223,7 @@ 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(u8 *src, u8 *dest, u16 size);
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size);
void FreeSpriteTiles(struct Sprite *sprite);
void FreeSpritePalette(struct Sprite *sprite);
void FreeSpriteOamMatrix(struct Sprite *sprite);
@@ -223,18 +242,18 @@ u8 AllocOamMatrix(void);
void FreeOamMatrix(u8 matrixNum);
void InitSpriteAffineAnim(struct Sprite *sprite);
void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation);
-u16 LoadSpriteSheet(struct SpriteSheet *sheet);
-void LoadSpriteSheets(struct SpriteSheet *sheets);
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
+void LoadSpriteSheets(const struct SpriteSheet *sheets);
u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
-void LoadTilesForSpriteSheet(struct SpriteSheet *sheet);
+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(struct SpriteSheet *sheet);
-u16 LoadSpriteSheetDeferred(struct SpriteSheet *sheet);
+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);
@@ -242,11 +261,13 @@ u8 AllocSpritePalette(u16 tag);
u8 IndexOfSpritePaletteTag(u16 tag);
u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum);
void FreeSpritePaletteByTag(u16 tag);
-void SetSubspriteTables(struct Sprite *sprite, struct SubspriteTable *subspriteTables);
+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);
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
#endif // GUARD_SPRITE_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
index 4a7e0514c..008d1b14e 100644
--- a/include/starter_choose.h
+++ b/include/starter_choose.h
@@ -5,9 +5,5 @@
u16 GetStarterPokemon(u16);
void CB2_ChooseStarter(void);
-void nullsub_72(struct Sprite *sprite);
-void sub_810A62C(struct Sprite *sprite);
-void sub_810A68C(struct Sprite *sprite);
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/strings.h b/include/strings.h
new file mode 100644
index 000000000..89a78e478
--- /dev/null
+++ b/include/strings.h
@@ -0,0 +1,905 @@
+#ifndef GUARD_STRINGS_H
+#define GUARD_STRINGS_H
+
+// placeholder strings
+extern const u8 gExpandedPlaceholder_Empty[];
+extern const u8 gExpandedPlaceholder_Kun[];
+extern const u8 gExpandedPlaceholder_Chan[];
+extern const u8 gExpandedPlaceholder_Sapphire[];
+extern const u8 gExpandedPlaceholder_Ruby[];
+extern const u8 gExpandedPlaceholder_Aqua[];
+extern const u8 gExpandedPlaceholder_Magma[];
+extern const u8 gExpandedPlaceholder_Archie[];
+extern const u8 gExpandedPlaceholder_Maxie[];
+extern const u8 gExpandedPlaceholder_Kyogre[];
+extern const u8 gExpandedPlaceholder_Groudon[];
+extern const u8 gExpandedPlaceholder_Brendan[];
+extern const u8 gExpandedPlaceholder_May[];
+
+// system text
+extern const u8 gSystemText_Egg[];
+extern const u8 gSystemText_Pokemon2[];
+
+// main menu text
+extern const u8 gMainMenuString_NewGame[];
+extern const u8 gMainMenuString_Continue[];
+extern const u8 gMainMenuString_Option[];
+extern const u8 gMainMenuString_MysteryEvents[];
+
+// system text 2
+extern const u8 SystemText_UpdatingSaveExternal[];
+extern const u8 SystemText_SaveUpdated[];
+extern const u8 SystemText_SaveUpdatedExchangeBackup[];
+extern const u8 SystemText_SaveNotUpdated[];
+
+// save file text
+extern const u8 gSaveFileCorruptMessage[];
+extern const u8 gSaveFileDeletedMessage[];
+
+// system text 3
+extern const u8 gBoardNotInstalledMessage[];
+extern const u8 gBatteryDryMessage[];
+
+// main menu text 2
+extern const u8 gMainMenuString_Player[];
+extern const u8 gMainMenuString_Pokedex[];
+extern const u8 gMainMenuString_Time[];
+extern const u8 gMainMenuString_Badges[];
+
+// birch text
+extern const u8 gBirchText_Boy[];
+extern const u8 gBirchText_Girl[];
+extern const u8 gBirchText_NewName[];
+
+extern const u8 gDefaultBoyName1[];
+extern const u8 gDefaultBoyName2[];
+extern const u8 gDefaultBoyName3[];
+extern const u8 gDefaultBoyName4[];
+
+extern const u8 gDefaultGirlName1[];
+extern const u8 gDefaultGirlName2[];
+extern const u8 gDefaultGirlName3[];
+extern const u8 gDefaultGirlName4[];
+
+extern const u8 gSystemText_IntroWeCall[];
+extern const u8 gSystemText_NewPara[];
+
+extern const u8 gDexText_UnknownPoke[];
+extern const u8 gDexText_UnknownHeight[];
+extern const u8 gDexText_UnknownWeight[];
+extern const u8 gDexText_CryOf[];
+extern const u8 gDexText_SizeComparedTo[];
+extern const u8 gDexText_RegisterComplete[];
+extern const u8 gDexText_Searching[];
+extern const u8 gDexText_SearchComplete[];
+extern const u8 gDexText_NoMatching[];
+
+extern const u8 DexText_SearchForPoke[];
+extern const u8 DexText_SwitchDex[];
+extern const u8 DexText_ReturnToDex[];
+extern const u8 DexText_SelectDexMode[];
+extern const u8 DexText_SelectDexList[];
+extern const u8 DexText_ListByABC[];
+extern const u8 DexText_ListByColor[];
+extern const u8 DexText_ListByType[];
+extern const u8 DexText_ExecuteSearchSwitch[];
+extern const u8 DexText_HoennDex[];
+extern const u8 DexText_NationalDex[];
+extern const u8 DexText_NumericalMode[];
+extern const u8 DexText_ABCMode[];
+extern const u8 DexText_HeaviestMode[];
+extern const u8 DexText_LightestMode[];
+extern const u8 DexText_TallestMode[];
+extern const u8 DexText_SmallestMode[];
+extern const u8 DexText_ABC[];
+extern const u8 DexText_DEF[];
+extern const u8 DexText_GHI[];
+extern const u8 DexText_JKL[];
+extern const u8 DexText_MNO[];
+extern const u8 DexText_PQR[];
+extern const u8 DexText_STU[];
+extern const u8 DexText_VWX[];
+extern const u8 DexText_YZ[];
+extern const u8 DexText_Red[];
+extern const u8 DexText_Blue[];
+extern const u8 DexText_Yellow[];
+extern const u8 DexText_Green[];
+extern const u8 DexText_Black[];
+extern const u8 DexText_Brown[];
+extern const u8 DexText_Purple[];
+extern const u8 DexText_Gray[];
+extern const u8 DexText_White[];
+extern const u8 DexText_Pink[];
+extern const u8 DexText_HoennDex2[];
+extern const u8 DexText_NationalDex2[];
+extern const u8 DexText_ListByNumber[];
+extern const u8 DexText_ListByABC2[];
+extern const u8 DexText_ListByHeavyToLightest[];
+extern const u8 DexText_ListByLightToHeaviest[];
+extern const u8 DexText_ListByTallToSmallest[];
+extern const u8 DexText_ListBySmallToTallest[];
+extern const u8 DexText_Terminator5[];
+extern const u8 DexText_DontSpecify[];
+extern const u8 DexText_None[];
+extern const u8 DexText_RightPointingTriangle[];
+extern const u8 DexText_Terminator6[];
+
+extern const u8 gMenuText_WelcomeToHOFAndDexRating[];
+extern const u8 gMenuText_HOFSaving[];
+extern const u8 gMenuText_HOFCorrupt[];
+extern const u8 gMenuText_HOFNumber[];
+extern const u8 gMenuText_HOFCongratulations[];
+
+extern const u8 gOtherText_Number2[];
+extern const u8 gOtherText_Level3[];
+extern const u8 gOtherText_IDNumber[];
+extern const u8 gOtherText_Name[];
+extern const u8 gOtherText_IDNumber2[];
+extern const u8 gOtherText_BirchInTrouble[];
+extern const u8 gOtherText_DoYouChoosePoke[];
+extern const u8 gOtherText_Poke[];
+
+extern const u8 gSystemText_SaveErrorExchangeBackup[];
+extern const u8 gOtherText_FlyToWhere[];
+
+extern const u8 OtherText_Use[];
+extern const u8 OtherText_Toss[];
+extern const u8 OtherText_Register[];
+extern const u8 OtherText_Give2[];
+extern const u8 OtherText_CheckTag[];
+extern const u8 OtherText_Confirm[];
+extern const u8 gOtherText_Walk[];
+
+extern const u8 gUnknownText_Exit[];
+extern const u8 gOtherText_CancelNoTerminator[];
+extern const u8 gOtherText_CancelWithTerminator[];
+
+extern const u8 OtherText_Item[];
+extern const u8 OtherText_Mail[];
+extern const u8 OtherText_Take2[];
+extern const u8 OtherText_Store[];
+
+extern const u8 gOtherText_Check[];
+extern const u8 gOtherText_None[];
+
+extern const u8 gOtherText_ThreeQuestions2[];
+
+extern const u8 gOtherText_FiveQuestionsAndSlash[];
+
+extern const u8 gOtherText_OneDash[];
+extern const u8 gOtherText_TwoDashes[];
+extern const u8 gOtherText_ThreeDashes2[];
+extern const u8 gOtherText_MaleSymbol2[];
+extern const u8 gOtherText_FemaleSymbolAndLv[];
+extern const u8 gOtherText_TallPlusAndRightArrow[];
+extern const u8 gMenuText_GoBackToPrev[];
+extern const u8 gOtherText_WhatWillYouDo[];
+
+extern const u8 gOtherText_xString1[];
+extern const u8 gOtherText_Berry2[];
+extern const u8 gOtherText_Coins2[];
+extern const u8 gOtherText_CloseBag[];
+
+extern const u8 OtherText_TheField3[];
+extern const u8 OtherText_TheBattle[];
+extern const u8 OtherText_ThePokeList[];
+extern const u8 OtherText_TheShop[];
+extern const u8 OtherText_TheField[];
+extern const u8 OtherText_TheField2[];
+extern const u8 OtherText_ThePC[];
+
+extern const struct TextStruct gUnknown_0840E740[];
+
+extern const u8 gOtherText_ReturnTo[];
+extern const u8 gOtherText_WhatWillYouDo2[];
+extern const u8 gOtherText_CantWriteMail[];
+extern const u8 gOtherText_NoPokemon[];
+extern const u8 gOtherText_SwitchWhichItem[];
+extern const u8 gOtherText_CantBeHeld[];
+extern const u8 gOtherText_CantBeHeldHere[];
+extern const u8 gOtherText_HowManyToDeposit[];
+extern const u8 gOtherText_DepositedItems[];
+extern const u8 gOtherText_NoRoomForItems[];
+extern const u8 gOtherText_CantStoreSomeoneItem[];
+extern const u8 gOtherText_TooImportant[];
+extern const u8 gOtherText_HowManyToToss[];
+extern const u8 gOtherText_ThrewAwayItem[];
+extern const u8 gOtherText_OkayToThrowAwayPrompt[];
+extern const u8 gOtherText_DadsAdvice[];
+extern const u8 gOtherText_CantGetOffBike[];
+extern const u8 gOtherText_ItemfinderResponding[];
+extern const u8 gOtherText_ItemfinderItemUnderfoot[];
+extern const u8 gOtherText_NoResponse[];
+extern const u8 gOtherText_Coins3[];
+extern const u8 gOtherText_BootedTM[];
+extern const u8 gOtherText_BootedHM[];
+extern const u8 gOtherText_ContainsMove[];
+extern const u8 gOtherText_UsedItem[];
+extern const u8 gOtherText_RepelLingers[];
+extern const u8 gOtherText_UsedFlute[];
+extern const u8 gOtherText_UsedRepel[];
+extern const u8 gOtherText_BoxIsFull[];
+extern const u8 gOtherText_Size[];
+extern const u8 gOtherText_Firm[];
+
+extern const u8 gContestStatsText_Unknown1[];
+
+extern const u8 ContestStatsText_VerySoft[];
+extern const u8 ContestStatsText_Soft[];
+extern const u8 ContestStatsText_Hard[];
+extern const u8 ContestStatsText_VeryHard[];
+extern const u8 ContestStatsText_SuperHard[];
+
+extern const u8 ContestStatsText_RedPokeBlock[];
+extern const u8 ContestStatsText_BluePokeBlock[];
+extern const u8 ContestStatsText_PinkPokeBlock[];
+extern const u8 ContestStatsText_GreenPokeBlock[];
+extern const u8 ContestStatsText_YellowPokeBlock[];
+extern const u8 ContestStatsText_PurplePokeBlock[];
+extern const u8 ContestStatsText_IndigoPokeBlock[];
+extern const u8 ContestStatsText_BrownPokeBlock[];
+extern const u8 ContestStatsText_LiteBluePokeBlock[];
+extern const u8 ContestStatsText_OlivePokeBlock[];
+extern const u8 ContestStatsText_GrayPokeBlock[];
+extern const u8 ContestStatsText_BlackPokeBlock[];
+extern const u8 ContestStatsText_WhitePokeBlock[];
+extern const u8 ContestStatsText_GoldPokeBlock[];
+
+extern const u8 gContestStatsText_Spicy[];
+extern const u8 gContestStatsText_Dry[];
+extern const u8 gContestStatsText_Sweet[];
+extern const u8 gContestStatsText_Bitter[];
+extern const u8 gContestStatsText_Sour[];
+
+extern const u8 gContestStatsText_StowCase[];
+extern const u8 gContestStatsText_ThrowAwayPrompt[];
+extern const u8 gContestStatsText_WasThrownAway[];
+extern const u8 gContestStatsText_NormallyAte[];
+extern const u8 gContestStatsText_HappilyAte[];
+extern const u8 gContestStatsText_DisdainfullyAte[];
+
+extern const u8 MartText_Buy[];
+extern const u8 MartText_Sell[];
+extern const u8 MartText_Quit2[];
+
+extern const u8 gOtherText_QuitShopping[];
+
+extern const u8 gOtherText_HowManyYouWant[];
+extern const u8 gOtherText_ThatWillBe[];
+extern const u8 gOtherText_ThatWillBe2[];
+extern const u8 gOtherText_ThatWillBe3[];
+extern const u8 gOtherText_HereYouGo[];
+extern const u8 gOtherText_HereYouGo2[];
+extern const u8 gOtherText_HereYouGo3[];
+extern const u8 gOtherText_NotEnoughMoney[];
+extern const u8 gOtherText_NoRoomFor[];
+extern const u8 gOtherText_SpaceForIsFull[];
+extern const u8 gOtherText_AnythingElse[];
+extern const u8 gOtherText_CanIHelpYou[];
+extern const u8 gOtherText_FreePremierBall[];
+extern const u8 gOtherText_CantBuyThat[];
+extern const u8 gOtherText_HowManyToSell[];
+extern const u8 gOtherText_CanPay[];
+extern const u8 gOtherText_SoldItem[];
+
+extern const u8 OtherText_Money[];
+extern const u8 OtherText_Shift[];
+extern const u8 OtherText_SendOut[];
+extern const u8 OtherText_Switch2[];
+extern const u8 OtherText_Summary[];
+extern const u8 OtherText_Moves[];
+extern const u8 OtherText_Enter2[];
+extern const u8 OtherText_NoEntry[];
+extern const u8 OtherText_Take[];
+extern const u8 OtherText_Read2[];
+
+extern const u8 gOtherText_Hp2[];
+extern const u8 gOtherText_SpAtk2[];
+extern const u8 gOtherText_SpDef2[];
+extern const u8 gOtherText_WontHaveAnyEffect[];
+
+extern const u8 gOtherText_CantUseOnPoke[];
+
+extern const u8 gOtherText_CantBeSwitched[];
+extern const u8 gOtherText_AlreadyBattle[];
+extern const u8 gOtherText_AlreadySelected[];
+extern const u8 gOtherText_NoEnergyLeft[];
+extern const u8 gOtherText_CantSwitchPokeWithYours[];
+extern const u8 gOtherText_EGGCantBattle[];
+extern const u8 gOtherText_CantBeUsedBadge[];
+extern const u8 gOtherText_NoMoreThreePoke[];
+extern const u8 gOtherText_SendRemovedMailPrompt[];
+extern const u8 gOtherText_MailWasSent[];
+extern const u8 gOtherText_MailboxIsFull[];
+extern const u8 gOtherText_MailRemovedMessageLost[];
+extern const u8 gOtherText_MailMustBeRemoved[];
+extern const u8 gOtherText_WasGivenToHold[];
+extern const u8 gOtherText_AlreadyHolding[];
+extern const u8 gOtherText_NotHoldingAnything[];
+extern const u8 gOtherText_ReceivedTheThingFrom[];
+extern const u8 gOtherText_MailTaken[];
+extern const u8 gOtherText_TakenAndReplaced[];
+extern const u8 gOtherText_PokeHoldingItemCantMail[];
+extern const u8 gOtherText_MailTransferredMailbox[];
+extern const u8 gOtherText_BagFullCannotRemoveItem[];
+extern const u8 gOtherText_LearnedMove[];
+extern const u8 gOtherText_NotCompatible[];
+extern const u8 gOtherText_WantsToLearn[];
+extern const u8 gOtherText_StopTryingTo[];
+extern const u8 gOtherText_DidNotLearnMove2[];
+extern const u8 gOtherText_WhichMoveToForget2[];
+extern const u8 gOtherText_ForgetMove123_2[];
+extern const u8 gOtherText_AlreadyKnows[];
+extern const u8 gOtherText_HPRestoredBy[];
+extern const u8 gOtherText_CuredPoisoning[];
+extern const u8 gOtherText_CuredParalysis[];
+extern const u8 gOtherText_WokeUp[];
+extern const u8 gOtherText_BurnHealed[];
+extern const u8 gOtherText_ThawedOut[];
+extern const u8 gOtherText_PPRestored[];
+extern const u8 gOtherText_RegainedHealth[];
+extern const u8 gOtherText_BecameHealthy[];
+extern const u8 gOtherText_PPIncreased[];
+extern const u8 gOtherText_ElevatedTo[];
+extern const u8 gOtherText_WasRaised[];
+extern const u8 gOtherText_SnapConfusion[];
+extern const u8 gOtherText_GotOverLove[];
+extern const u8 OtherText_ChoosePoke[];
+extern const u8 OtherText_MovePokeTo[];
+extern const u8 OtherText_TeachWhat[];
+extern const u8 OtherText_UseWhat[];
+extern const u8 OtherText_GiveWhat[];
+extern const u8 OtherText_DoWhat[];
+extern const u8 OtherText_NothingToCut[];
+extern const u8 OtherText_CantSurf[];
+extern const u8 OtherText_AlreadySurfing[];
+extern const u8 OtherText_CantUseThatHere[];
+extern const u8 OtherText_RestoreWhatMove[];
+extern const u8 OtherText_BoostPP[];
+extern const u8 OtherText_DoWhatWithItem[];
+extern const u8 OtherText_NoPokeForBattle[];
+extern const u8 OtherText_ChoosePoke2[];
+extern const u8 OtherText_NotEnoughHP[];
+extern const u8 OtherText_ThreePokeNeeded[];
+extern const u8 OtherText_PokeCantBeSame[];
+extern const u8 OtherText_NoIdenticalHoldItems[];
+extern const u8 OtherText_TeachWhichPoke[];
+extern const u8 gOtherText_Attack[];
+extern const u8 gOtherText_Defense[];
+extern const u8 gOtherText_SpAtk[];
+extern const u8 gOtherText_SpDef[];
+extern const u8 gOtherText_Speed[];
+extern const u8 gOtherText_HP[];
+extern const u8 gOtherText_Terminator18[];
+extern const u8 gOtherText_OriginalTrainer[];
+extern const u8 gOtherText_Type2[];
+extern const u8 gOtherText_Power2[];
+extern const u8 gOtherText_Accuracy2[];
+extern const u8 gOtherText_Appeal2[];
+extern const u8 gOtherText_Jam2[];
+extern const u8 gOtherText_Status[];
+extern const u8 gOtherText_ExpPoints[];
+extern const u8 gOtherText_NextLv[];
+extern const u8 gOtherText_Ribbons00[];
+
+extern const u8 OtherText_Event[];
+extern const u8 OtherText_Switch[];
+extern const u8 OtherText_PokeInfo[];
+extern const u8 OtherText_PokeSkills[];
+extern const u8 OtherText_BattleMoves[];
+extern const u8 OtherText_ContestMoves[];
+extern const u8 OtherText_Info[];
+
+extern const u8 gOtherText_EggLongTime[];
+extern const u8 gOtherText_EggSomeTime[];
+extern const u8 gOtherText_EggSoon[];
+extern const u8 gOtherText_EggAbout[];
+extern const u8 gOtherText_CantForgetHMs[];
+extern const u8 gOtherText_PlayersBase[];
+extern const u8 gOtherText_OkayToDeleteFromRegistry[];
+extern const u8 gOtherText_RegisteredDataDeleted[];
+
+extern const u8 gSecretBaseText_NoRegistry[];
+extern const u8 SecretBaseText_DelRegist[];
+extern const u8 SecretBaseText_Decorate[];
+extern const u8 SecretBaseText_PutAway[];
+extern const u8 SecretBaseText_Toss[];
+extern const u8 SecretBaseText_PutOutDecor[];
+extern const u8 SecretBaseText_StoreChosenDecor[];
+extern const u8 SecretBaseText_ThrowAwayDecor[];
+extern const u8 gSecretBaseText_NoDecors[];
+extern const u8 SecretBaseText_Desk[];
+extern const u8 SecretBaseText_Chair[];
+extern const u8 SecretBaseText_Plant[];
+extern const u8 SecretBaseText_Ornament[];
+extern const u8 SecretBaseText_Mat[];
+extern const u8 SecretBaseText_Poster[];
+extern const u8 SecretBaseText_Doll[];
+extern const u8 SecretBaseText_Cushion[];
+extern const u8 gSecretBaseText_GoldRank[];
+extern const u8 gSecretBaseText_SilverRank[];
+extern const u8 gSecretBaseText_PlaceItHere[];
+extern const u8 gSecretBaseText_CantBePlacedHere[];
+extern const u8 gSecretBaseText_CancelDecorating[];
+extern const u8 gSecretBaseText_InUseAlready[];
+extern const u8 gSecretBaseText_NoMoreDecor[];
+extern const u8 gSecretBaseText_NoMoreDecor2[];
+extern const u8 gSecretBaseText_DecorCantPlace[];
+extern const u8 gSecretBaseText_DecorInUse[];
+extern const u8 gSecretBaseText_WillBeDiscarded[];
+extern const u8 gSecretBaseText_DecorThrownAway[];
+extern const u8 gSecretBaseText_StopPuttingAwayDecor[];
+extern const u8 gSecretBaseText_NoDecor[];
+extern const u8 gSecretBaseText_ReturnDecor[];
+extern const u8 gSecretBaseText_DecorReturned[];
+extern const u8 gSecretBaseText_NoDecorInUse[];
+extern const u8 SecretBaseText_Tristan[];
+extern const u8 SecretBaseText_Philip[];
+extern const u8 SecretBaseText_Dennis[];
+extern const u8 SecretBaseText_Roberto[];
+extern const u8 SecretBaseText_TurnOff[];
+extern const u8 SecretBaseText_Decoration[];
+extern const u8 SecretBaseText_ItemStorage[];
+
+extern const u8 gPCText_Mailbox[];
+extern const u8 PCText_DepositItem[];
+extern const u8 PCText_WithdrawItem[];
+extern const u8 PCText_TossItem[];
+extern const u8 PCText_StoreItems[];
+extern const u8 PCText_TakeOutItems[];
+extern const u8 PCText_ThrowAwayItems[];
+
+extern const u8 gOtherText_NoItems[];
+extern const u8 gOtherText_NoMoreRoom[];
+extern const u8 gOtherText_HowManyToWithdraw[];
+extern const u8 gOtherText_WithdrewThing[];
+extern const u8 OtherText_Read[];
+extern const u8 gOtherText_MoveToBag[];
+extern const u8 OtherText_Give[];
+extern const u8 gOtherText_NoMailHere[];
+extern const u8 gOtherText_WhatWillYouDoMail[];
+extern const u8 gOtherText_MessageWillBeLost[];
+extern const u8 gOtherText_BagIsFull[];
+extern const u8 gOtherText_MailWasReturned[];
+extern const u8 gOtherText_Dad[];
+extern const u8 gOtherText_Mom[];
+extern const u8 gOtherText_Wallace[];
+extern const u8 gOtherText_Steven[];
+extern const u8 gOtherText_Brawly[];
+extern const u8 gOtherText_Winona[];
+extern const u8 gOtherText_Phoebe[];
+extern const u8 gOtherText_Glacia[];
+extern const u8 gContestText_ContestWinner[];
+extern const u8 gOtherText_Unknown1[];
+extern const u8 OtherText_Cool[];
+extern const u8 OtherText_Beauty2[];
+extern const u8 OtherText_Cute[];
+extern const u8 OtherText_Smart[];
+extern const u8 OtherText_Tough[];
+extern const u8 OtherText_NonstopSuperCool[];
+extern const u8 OtherText_Terminator6[];
+extern const u8 OtherText_GoodLookingPoke[];
+extern const u8 OtherText_Terminator7[];
+extern const u8 OtherText_MarvelousGreat[];
+extern const u8 OtherText_Terminator8[];
+extern const u8 OtherText_CenturyLastVenus[];
+extern const u8 OtherText_Terminator9[];
+extern const u8 OtherText_Terminator10[];
+extern const u8 OtherText_DazzlingSmile[];
+extern const u8 OtherText_PokeCenterIdol[];
+extern const u8 OtherText_Terminator11[];
+extern const u8 OtherText_LovelyAndSweet[];
+extern const u8 OtherText_Terminator12[];
+extern const u8 OtherText_ThePretty[];
+extern const u8 OtherText_WinningPortrait[];
+extern const u8 OtherText_GiveUsWink[];
+extern const u8 OtherText_Terminator13[];
+extern const u8 OtherText_SmartnessMaestro[];
+extern const u8 OtherText_Terminator14[];
+extern const u8 OtherText_ChosenPokeAmong[];
+extern const u8 OtherText_Terminator15[];
+extern const u8 OtherText_TheExcellent[];
+extern const u8 OtherText_ItsMomentOfElegance[];
+extern const u8 OtherText_PowerfullyMuscular[];
+extern const u8 OtherText_Terminator16[];
+extern const u8 OtherText_StrongErEst[];
+extern const u8 OtherText_Terminator17[];
+extern const u8 OtherText_MightyTough[];
+extern const u8 OtherText_Exclamation[];
+extern const u8 OtherText_Petalburg[];
+extern const u8 OtherText_Slateport[];
+extern const u8 OtherText_Littleroot[];
+extern const u8 OtherText_Lilycove[];
+extern const u8 OtherText_Dewford[];
+extern const u8 OtherText_Enter[];
+extern const u8 OtherText_Info3[];
+extern const u8 OtherText_WhatsAContest[];
+extern const u8 OtherText_TypesOfContest[];
+extern const u8 OtherText_Ranks[];
+extern const u8 OtherText_Judging[];
+extern const u8 OtherText_CoolContest[];
+extern const u8 OtherText_BeautyContest[];
+extern const u8 OtherText_CuteContest[];
+extern const u8 OtherText_SmartContest[];
+extern const u8 OtherText_ToughContest[];
+extern const u8 OtherText_Decoration[];
+extern const u8 OtherText_PackUp[];
+extern const u8 OtherText_Count[];
+extern const u8 OtherText_Registry[];
+extern const u8 OtherText_Information[];
+extern const u8 OtherText_Mach[];
+extern const u8 OtherText_Acro[];
+extern const u8 OtherText_Poison[];
+extern const u8 OtherText_Paralysis[];
+extern const u8 OtherText_Sleep[];
+extern const u8 OtherText_Burn[];
+extern const u8 OtherText_Frozen[];
+extern const u8 OtherText_Quit[];
+extern const u8 OtherText_SawIt[];
+extern const u8 OtherText_NotYet[];
+extern const u8 OtherText_Yes[];
+extern const u8 OtherText_No[];
+extern const u8 OtherText_Info2[];
+extern const u8 OtherText_SingleBattle[];
+extern const u8 OtherText_DoubleBattle[];
+extern const u8 OtherText_MultiBattle[];
+extern const u8 OtherText_MrBriney[];
+extern const u8 OtherText_MakeAChallenge[];
+extern const u8 OtherText_ObtainInformation[];
+extern const u8 OtherText_Lv50_2[];
+extern const u8 OtherText_Lv100_2[];
+extern const u8 OtherText_Zigzagoon[];
+extern const u8 OtherText_Nincada[];
+extern const u8 OtherText_Poochyena[];
+extern const u8 OtherText_Nincada2[];
+extern const u8 OtherText_Lotad[];
+extern const u8 OtherText_Roselia[];
+extern const u8 OtherText_Shroomish[];
+extern const u8 OtherText_Nincada3[];
+extern const u8 OtherText_Surskit[];
+extern const u8 OtherText_Treecko[];
+extern const u8 OtherText_Torchic[];
+extern const u8 OtherText_Mudkip[];
+extern const u8 OtherText_Seedot[];
+extern const u8 OtherText_Shroomish2[];
+extern const u8 OtherText_Spinda[];
+extern const u8 OtherText_Shroomish3[];
+extern const u8 OtherText_Zigzagoon2[];
+extern const u8 OtherText_Wurmple[];
+extern const u8 OtherText_PokeBall[];
+extern const u8 OtherText_SuperPotion[];
+extern const u8 OtherText_SamePrice[];
+extern const u8 OtherText_Yen135[];
+extern const u8 OtherText_Yen155[];
+extern const u8 OtherText_Yen175[];
+extern const u8 OtherText_CostMore[];
+extern const u8 OtherText_CostLess[];
+extern const u8 OtherText_SamePrice2[];
+extern const u8 OtherText_MaleSymbol[];
+extern const u8 OtherText_FemaleSymbol[];
+extern const u8 OtherText_Neither[];
+extern const u8 OtherText_Males[];
+extern const u8 OtherText_Females[];
+extern const u8 OtherText_SameNumber[];
+extern const u8 OtherText_Male[];
+extern const u8 OtherText_Female[];
+extern const u8 OtherText_ItDepends[];
+extern const u8 OtherText_Six2[];
+extern const u8 OtherText_Eight2[];
+extern const u8 OtherText_Ten[];
+extern const u8 OtherText_One[];
+extern const u8 OtherText_Two[];
+extern const u8 OtherText_Three[];
+extern const u8 OtherText_Six[];
+extern const u8 OtherText_Seven[];
+extern const u8 OtherText_Eight[];
+extern const u8 OtherText_FreshWater[];
+extern const u8 OtherText_SodaPop[];
+extern const u8 OtherText_Lemonade[];
+extern const u8 OtherText_HowToRide[];
+extern const u8 OtherText_HowToTurn[];
+extern const u8 OtherText_SandySlopes[];
+extern const u8 OtherText_Wheelies[];
+extern const u8 OtherText_BunnyHops[];
+extern const u8 OtherText_Jumping[];
+extern const u8 OtherText_Satisfied[];
+extern const u8 OtherText_Dissatisfied[];
+extern const u8 OtherText_Deepseatooth[];
+extern const u8 OtherText_Deepseascale[];
+extern const u8 OtherText_BlueFlute2[];
+extern const u8 OtherText_YellowFlute2[];
+extern const u8 OtherText_RedFlute2[];
+extern const u8 OtherText_WhiteFlute2[];
+extern const u8 OtherText_BlackFlute2[];
+extern const u8 OtherText_GlassChair[];
+extern const u8 OtherText_GlassDesk[];
+extern const u8 OtherText_TreeckoDoll[];
+extern const u8 OtherText_TorchicDoll[];
+extern const u8 OtherText_MudkipDoll[];
+extern const u8 OtherText_50Coins[];
+extern const u8 OtherText_500Coins[];
+extern const u8 OtherText_Excellent[];
+extern const u8 OtherText_NotSoHot[];
+extern const u8 OtherText_RedShard[];
+extern const u8 OtherText_YellowShard[];
+extern const u8 OtherText_BlueShard[];
+extern const u8 OtherText_GreenShard[];
+extern const u8 OtherText_BattleTower[];
+extern const u8 OtherText_Right[];
+extern const u8 OtherText_Left[];
+extern const u8 OtherText_TM32[];
+extern const u8 OtherText_TM29[];
+extern const u8 OtherText_TM35[];
+extern const u8 OtherText_TM24[];
+extern const u8 OtherText_TM13[];
+extern const u8 OtherText_1F_2[];
+extern const u8 OtherText_2F_2[];
+extern const u8 OtherText_3F_2[];
+extern const u8 OtherText_4F_2[];
+extern const u8 OtherText_5F_2[];
+extern const u8 OtherText_Cool2[];
+extern const u8 OtherText_Beauty3[];
+extern const u8 OtherText_Cute2[];
+extern const u8 OtherText_Smart2[];
+extern const u8 OtherText_Tough2[];
+extern const u8 OtherText_Normal[];
+extern const u8 OtherText_Super[];
+extern const u8 OtherText_Hyper[];
+extern const u8 OtherText_Master[];
+extern const u8 OtherText_Cool3[];
+extern const u8 OtherText_Beauty4[];
+extern const u8 OtherText_Cute3[];
+extern const u8 OtherText_Smart3[];
+extern const u8 OtherText_Tough3[];
+extern const u8 OtherText_Items[];
+extern const u8 OtherText_KeyItems[];
+extern const u8 OtherText_Balls[];
+extern const u8 OtherText_TMsHMs[];
+extern const u8 OtherText_Berries[];
+
+extern const u8 gPCText_SomeonesPC[];
+extern const u8 gPCText_LanettesPC[];
+extern const u8 gPCText_PlayersPC[];
+extern const u8 gPCText_HallOfFame[];
+extern const u8 gPCText_LogOff[];
+
+extern const u8 gOtherText_99Times[];
+extern const u8 gOtherText_1Minute[];
+extern const u8 gOtherText_Seconds[];
+extern const u8 gOtherText_Times[];
+extern const u8 gOtherText_BigGuy[];
+extern const u8 gOtherText_BigGirl[];
+extern const u8 gOtherText_Son[];
+extern const u8 gOtherText_Daughter[];
+extern const u8 OtherText_BlueFlute[];
+extern const u8 OtherText_YellowFlute[];
+extern const u8 OtherText_RedFlute[];
+extern const u8 OtherText_WhiteFlute[];
+extern const u8 OtherText_BlackFlute[];
+extern const u8 OtherText_PrettyChair[];
+extern const u8 OtherText_PrettyDesk[];
+extern const u8 OtherText_1F[];
+extern const u8 OtherText_2F[];
+extern const u8 OtherText_3F[];
+extern const u8 OtherText_4F[];
+extern const u8 OtherText_5F[];
+extern const u8 OtherText_6F[];
+extern const u8 OtherText_7F[];
+extern const u8 OtherText_8F[];
+extern const u8 OtherText_9F[];
+extern const u8 OtherText_10F[];
+extern const u8 OtherText_11F[];
+extern const u8 OtherText_B1F[];
+extern const u8 OtherText_B2F[];
+extern const u8 OtherText_B3F[];
+extern const u8 OtherText_B4F[];
+extern const u8 OtherText_Rooftop[];
+
+extern const u8 gOtherText_NowOn[];
+
+extern const u8 gPCText_Cancel[];
+
+extern const u8 PCText_ExitBox[];
+extern const u8 PCText_WhatYouDo[];
+extern const u8 PCText_PickATheme[];
+extern const u8 PCText_PickAWallpaper[];
+extern const u8 PCText_IsSelected[];
+extern const u8 PCText_JumpToWhichBox[];
+extern const u8 PCText_DepositInWhichBox[];
+extern const u8 PCText_WasDeposited[];
+extern const u8 PCText_BoxIsFull[];
+extern const u8 PCText_ReleasePoke[];
+extern const u8 PCText_WasReleased[];
+extern const u8 PCText_ByeBye[];
+extern const u8 PCText_MarkPoke[];
+extern const u8 PCText_LastPoke[];
+extern const u8 PCText_PartyFull[];
+extern const u8 PCText_HoldingPoke[];
+extern const u8 PCText_WhichOneWillTake[];
+extern const u8 PCText_CantReleaseEgg[];
+extern const u8 PCText_ContinueBox[];
+extern const u8 PCText_CameBack[];
+extern const u8 PCText_Worried[];
+extern const u8 PCText_Surprise[];
+extern const u8 PCText_PleaseRemoveMail[];
+extern const u8 PCText_Cancel2[];
+extern const u8 PCText_Deposit[];
+extern const u8 PCText_Withdraw[];
+extern const u8 PCText_Switch[];
+extern const u8 PCText_Move[];
+extern const u8 PCText_Place[];
+extern const u8 PCText_Summary[];
+extern const u8 PCText_Release[];
+extern const u8 PCText_Mark[];
+extern const u8 PCText_Name[];
+extern const u8 PCText_Jump[];
+extern const u8 PCText_Wallpaper[];
+extern const u8 PCText_Scenery1[];
+extern const u8 PCText_Scenery2[];
+extern const u8 PCText_Scenery3[];
+extern const u8 PCText_Etc[];
+extern const u8 PCText_Forest[];
+extern const u8 PCText_City[];
+extern const u8 PCText_Desert[];
+extern const u8 PCText_Savanna[];
+extern const u8 PCText_Crag[];
+extern const u8 PCText_Volcano[];
+extern const u8 PCText_Snow[];
+extern const u8 PCText_Cave[];
+extern const u8 PCText_Beach[];
+extern const u8 PCText_Seafloor[];
+extern const u8 PCText_River[];
+extern const u8 PCText_Sky[];
+extern const u8 PCText_Polka[];
+extern const u8 PCText_PokeCenter[];
+extern const u8 PCText_Machine[];
+extern const u8 PCText_Plain[];
+extern const u8 PCText_WhatDoYouWant[];
+extern const u8 PCText_WithdrawPoke[];
+extern const u8 PCText_DepositPoke[];
+extern const u8 PCText_MovePoke[];
+extern const u8 PCText_SeeYa[];
+extern const u8 PCText_MovePokeToParty[];
+extern const u8 PCText_StorePokeInBox[];
+extern const u8 PCText_OrganizeBoxesParty[];
+extern const u8 PCText_ReturnToPrevMenu[];
+
+extern const u8 gPCText_OnlyOne[];
+extern const u8 gPCText_PartyFull2[];
+extern const u8 gPCText_BOX[];
+
+// pokenav
+extern const u8 PCText_CheckMap[];
+extern const u8 PCText_CheckPoke[];
+extern const u8 PCText_CheckTrainer[];
+extern const u8 PCText_CheckRibbons[];
+extern const u8 PCText_PutAwayNav[];
+extern const u8 PCText_NoRibbonWin[];
+extern const u8 PCText_NoTrainers[];
+extern const u8 PCText_CheckParty[];
+extern const u8 PCText_CheckPokeAll[];
+extern const u8 PCText_ReturnToNav[];
+extern const u8 PCText_FindCool[];
+extern const u8 PCText_FindBeauty[];
+extern const u8 PCText_FindCute[];
+extern const u8 PCText_FindSmart[];
+extern const u8 PCText_FindTough[];
+extern const u8 PCText_ReturnToCondition[];
+
+extern const u8 gOtherText_NumberRegistered[];
+extern const u8 gOtherText_NumberBattles[];
+extern const u8 gOtherText_Strategy[];
+extern const u8 gOtherText_TrainersPokemon[];
+extern const u8 gOtherText_SelfIntroduction[];
+extern const u8 gOtherText_Nature2[];
+extern const u8 gOtherText_InParty[];
+extern const u8 gOtherText_Number[];
+extern const u8 gOtherText_Ribbons[];
+extern const u8 OtherText_MakeProfilePage1[];
+extern const u8 OtherText_MakeProfilePage2[];
+extern const u8 OtherText_MakeMessagePage1[];
+extern const u8 OtherText_MakeMessagePage2[];
+extern const u8 OtherText_DescribeFeelingsPage1[];
+extern const u8 OtherText_DescribeFeelingsPage2[];
+extern const u8 OtherText_WithFourPhrases[];
+extern const u8 OtherText_CombineNinePhrasesPage1[];
+extern const u8 OtherText_CombineNinePhrasesPage2[];
+extern const u8 OtherText_ImproveBardSongPage1[];
+extern const u8 OtherText_ImproveBardSongPage2[];
+extern const u8 OtherText_YourProfile[];
+extern const u8 OtherText_YourFeelingBattle[];
+extern const u8 OtherText_SetWinMessage[];
+extern const u8 OtherText_SetLossMessage[];
+extern const u8 OtherText_TheAnswer[];
+extern const u8 OtherText_MailMessage[];
+extern const u8 OtherText_MailSalutation[];
+extern const u8 OtherText_NewSong[];
+extern const u8 OtherText_CombineTwoPhrasesPage1[];
+extern const u8 OtherText_CombineTwoPhrasesPage2[];
+extern const u8 OtherText_ConfirmTrendyPage1[];
+extern const u8 OtherText_ConfirmTrendyPage2[];
+extern const u8 OtherText_HipsterPage1[];
+extern const u8 OtherText_HipsterPage2[];
+
+extern const u8 gOtherText_TextDeletedConfirmPage1[];
+extern const u8 gOtherText_TextDeletedConfirmPage2[];
+extern const u8 gOtherText_QuitEditing[];
+extern const u8 gOtherText_EditedTextNoSavePage1[];
+extern const u8 gOtherText_EditedTextNoSavePage2[];
+extern const u8 gOtherText_EnterAPhraseOrWord[];
+extern const u8 gOtherText_TextNoDelete[];
+extern const u8 gOtherText_OnlyOnePhrase[];
+extern const u8 gOtherText_OriginalSongRestored[];
+extern const u8 gOtherText_TrendyAlready[];
+extern const u8 gOtherText_CombineTwoPhrases[];
+extern const u8 gOtherText_QuitGivingInfo[];
+extern const u8 gOtherText_StopGivingMail[];
+extern const u8 gOtherText_Profile[];
+extern const u8 gOtherText_AtBattleStart[];
+extern const u8 gOtherText_UponWinningBattle[];
+extern const u8 gOtherText_UponLosingBattle[];
+
+// mauville_old_man?
+extern const u8 gOtherText_TheBardsSong[];
+extern const u8 gOtherText_WhatsHipHappening[];
+extern const u8 gOtherText_Interview[];
+extern const u8 gOtherText_GoodSaying[];
+extern const u8 OtherText_SoPretty[];
+extern const u8 OtherText_SoDarling[];
+extern const u8 OtherText_SoRelaxed[];
+extern const u8 OtherText_SoSunny[];
+extern const u8 OtherText_SoDesirable[];
+extern const u8 OtherText_SoExciting[];
+extern const u8 OtherText_SoAmusing[];
+extern const u8 OtherText_SoMagical[];
+
+extern const u8 gOtherText_Is[];
+extern const u8 gOtherText_DontYouAgree[];
+
+extern const u8 OtherText_WantVacationNicePlace[];
+extern const u8 OtherText_BoughtCrayonsIsNice[];
+extern const u8 OtherText_IfWeCouldFloat[];
+extern const u8 OtherText_SandWashesAwayMakeSad[];
+extern const u8 OtherText_WhatsBottomSeaLike[];
+extern const u8 OtherText_SeeSettingSun[];
+extern const u8 OtherText_LyingInGreenGrass[];
+extern const u8 OtherText_SecretBasesWonderful[];
+
+extern const u8 OtherText_PokeLeague[];
+extern const u8 OtherText_PokeCenter[];
+
+extern const u8 gOtherText_GetsAPokeBlock[];
+
+extern const u8 OtherText_Coolness[];
+extern const u8 OtherText_Beauty[];
+extern const u8 OtherText_Cuteness[];
+extern const u8 OtherText_Smartness[];
+extern const u8 OtherText_Toughness[];
+
+extern const u8 gOtherText_WasEnhanced[];
+extern const u8 gOtherText_NothingChanged[];
+extern const u8 gOtherText_WontEat[];
+
+extern const u8 gSystemText_SaveFailedBackupCheck[];
+extern const u8 gSystemText_BackupDamagedGameContinue[];
+extern const u8 gSystemText_GameplayEnded[];
+extern const u8 gSystemText_CheckCompleteSaveAttempt[];
+extern const u8 gSystemText_SaveCompletedGameEnd[];
+extern const u8 gSystemText_SaveCompletedPressA[];
+
+extern const u8 gOtherText_Ferry[];
+extern const u8 gOtherText_SecretBase[];
+extern const u8 gOtherText_Hideout[];
+
+extern const u8 gSystemText_ResetRTCPrompt[];
+extern const u8 gSystemText_PresentTime[];
+extern const u8 gSystemText_PreviousTime[];
+extern const u8 gSystemText_PleaseResetTime[];
+extern const u8 gSystemText_ClockResetDataSave[];
+extern const u8 gSystemText_SaveCompleted[];
+extern const u8 gSystemText_SaveFailed[];
+extern const u8 gSystemText_NoSaveFileNoTime[];
+extern const u8 gSystemText_ClockAdjustmentUsable[];
+extern const u8 gSystemText_Saving[];
+
+#endif
diff --git a/include/text.h b/include/text.h
index 99d346a23..4f52e3cdd 100644
--- a/include/text.h
+++ b/include/text.h
@@ -134,6 +134,13 @@ extern const struct WindowConfig gWindowConfig_81E725C;
extern const struct WindowConfig gWindowConfig_81E7278;
extern const struct WindowConfig gWindowConfig_81E7294;
+extern u16 gBGTilemapBuffers[4][0x400];
+
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u8 gStringVar4[];
+
void LoadFontDefaultPalette(const struct WindowConfig *winConfig);
void SetUpWindowConfig(const struct WindowConfig *winConfig);
u16 InitWindowTileData(struct Window *win, u16 startOffset);
diff --git a/include/text_window.h b/include/text_window.h
index 6df3f7d33..afd645540 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -5,8 +5,8 @@
struct FrameGraphics
{
- u8 *tiles;
- u16 *palette;
+ u8 *tiles;
+ u16 *palette;
};
u16 SetTextWindowBaseTileNum(u16 baseTileNum);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 7269c0b20..bd0c808dd 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -2,30 +2,30 @@
#define GUARD_TRAINER_CARD_H
struct TrainerCard {
- /*0x00*/ u8 gender;
- /*0x01*/ u8 stars;
- /*0x02*/ bool8 hasPokedex;
- /*0x03*/ bool8 var_3;
- /*0x04*/ bool8 var_4;
- /*0x05*/ u8 var_5;
- /*0x06*/ u16 firstHallOfFameA;
- /*0x08*/ u16 firstHallOfFameB;
- /*0x0A*/ u16 firstHallOfFameC;
- /*0x0C*/ u16 pokedexSeen;
- /*0x0E*/ u16 trainerId;
- /*0x10*/ u16 playTimeHours;
- /*0x12*/ u16 playTimeMinutes;
- /*0x14*/ u16 linkBattleWins;
- /*0x16*/ u16 linkBattleLosses;
- /*0x18*/ u16 battleTowerWins;
- /*0x1A*/ u16 battleTowerLosses;
- /*0x1C*/ u16 contestsWithFriends;
- /*0x1E*/ u16 pokeblocksWithFriends;
- /*0x20*/ u16 pokemonTrades;
- /*0x22*/ u16 var_22;
- /*0x24*/ u32 money;
- /*0x28*/ u16 var_28[4];
- /*0x30*/ u8 playerName[8];
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 var_3;
+ /*0x04*/ bool8 var_4;
+ /*0x05*/ u8 var_5;
+ /*0x06*/ u16 firstHallOfFameA;
+ /*0x08*/ u16 firstHallOfFameB;
+ /*0x0A*/ u16 firstHallOfFameC;
+ /*0x0C*/ u16 pokedexSeen;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerLosses;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x22*/ u16 var_22;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[8];
};
void sub_8093110(void (*)(void));
diff --git a/include/trainer_see.h b/include/trainer_see.h
index e4d1fe270..dd04912e7 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -30,5 +30,7 @@ void sub_80846E4(u8 taskId);
void sub_8084794(u32 var);
void sub_80847C8(void);
void sub_80847D8(u8);
+void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
+void objc_exclamation_mark_probably(struct Sprite *sprite);
#endif // GUARD_TRAINER_SEE_H
diff --git a/include/vars.h b/include/vars.h
index 4661bbd52..3fc71dc15 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,24 +1,28 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_RECYCLE_GOODS 0x4020
+#define VAR_REPEL_STEP_COUNT 0x4021
-#define VAR_FIRST_POKE 0x4023
-#define VAR_MIRAGE_RND_H 0x4024
-#define VAR_MIRAGE_RND_L 0x4025
+#define VAR_FIRST_POKE 0x4023
+#define VAR_MIRAGE_RND_H 0x4024
+#define VAR_MIRAGE_RND_L 0x4025
-#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
-#define VAR_DAYS 0x4040
+#define VAR_DAYS 0x4040
-#define VAR_POKELOT_PRIZE 0x4045
-#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SHROOMISH_SIZE_RECORD 0x4047
+#define VAR_POKELOT_PRIZE 0x4045
+#define VAR_NATIONAL_DEX 0x4046
+#define VAR_SHROOMISH_SIZE_RECORD 0x4047
-#define VAR_POKELOT_RND1 0x404B
-#define VAR_POKELOT_RND2 0x404C
+#define VAR_POKELOT_RND1 0x404B
+#define VAR_POKELOT_RND2 0x404C
-#define VAR_BARBOACH_SIZE_RECORD 0x404F
+#define VAR_BARBOACH_SIZE_RECORD 0x404F
+
+#define VAR_PORTHOLE 0x40B4
#endif // GUARD_VARS_H
diff --git a/include/wallclock.h b/include/wallclock.h
index c869e3941..794f456be 100644
--- a/include/wallclock.h
+++ b/include/wallclock.h
@@ -6,9 +6,4 @@
void CB2_StartWallClock(void);
void CB2_ViewWallClock(void);
-void sub_810B05C(struct Sprite *sprite);
-void sub_810B0F4(struct Sprite *sprite);
-void sub_810B18C(struct Sprite *sprite);
-void sub_810B230(struct Sprite *sprite);
-
#endif // GUARD_WALLCLOCK_H