diff options
author | yenatch <yenatch@gmail.com> | 2017-03-22 18:34:29 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2017-03-22 18:34:29 -0400 |
commit | 7acbfe40778bfbd03b0e2d357efef9ee9b0a34e9 (patch) | |
tree | 90c0b95146f3d768b536658eac6a63ff9adcaaec /include | |
parent | c0a27d5455014bfe54f7ea73e8a38ce0ed8da6da (diff) | |
parent | e3c26e52ae6ab881ade913ca1fad2cd9629bbcb1 (diff) |
Merge remote-tracking branch 'origin/master'
Conflicts:
Makefile
Diffstat (limited to 'include')
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 |