diff options
Diffstat (limited to 'include')
34 files changed, 422 insertions, 264 deletions
| diff --git a/include/berry_crush.h b/include/berry_crush.h new file mode 100644 index 000000000..2583aba61 --- /dev/null +++ b/include/berry_crush.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_CRUSH_H +#define GUARD_BERRY_CRUSH_H + +void sub_814B754(MainCallback callback); + +#endif //GUARD_BERRY_CRUSH_H diff --git a/include/cable_club.h b/include/cable_club.h index 5375c2210..c1dbab1a5 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -10,5 +10,6 @@  // Exported ROM declarations  void sub_8081A90(u8 taskId);  u8 sub_8081150(void); +void sub_8081668(void);  #endif //GUARD_CABLE_CLUB_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 2da89d815..b28955210 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -58,14 +58,15 @@  #define BATTLE_TYPE_EREADER_TRAINER  0x0800  #define BATTLE_TYPE_KYOGRE_GROUDON   0x1000  #define BATTLE_TYPE_LEGENDARY        0x2000 +#define BATTLE_TYPE_GHOST_UNVEILED   0x2000 // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST  #define BATTLE_TYPE_REGI             0x4000  #define BATTLE_TYPE_GHOST            0x8000  #define BATTLE_TYPE_POKEDUDE         0x10000 -#define BATTLE_TYPE_PALACE           0x20000 -#define BATTLE_TYPE_ARENA            0x40000 +#define BATTLE_TYPE_WILD_SCRIPTED    0x20000 +#define BATTLE_TYPE_LEGENDARY_FRLG   0x40000  #define BATTLE_TYPE_TRAINER_TOWER    0x80000 -#define BATTLE_TYPE_PIKE             0x100000 -#define BATTLE_TYPE_PYRAMID          0x200000 +#define BATTLE_TYPE_x100000          0x100000 +#define BATTLE_TYPE_x200000          0x200000  #define BATTLE_TYPE_INGAME_PARTNER   0x400000  #define BATTLE_TYPE_x800000          0x800000  #define BATTLE_TYPE_RECORDED         0x1000000 @@ -76,8 +77,9 @@  #define BATTLE_TYPE_KYOGRE           0x20000000  #define BATTLE_TYPE_RAYQUAZA         0x40000000  #define BATTLE_TYPE_x80000000        0x80000000 -#define BATTLE_TYPE_FRONTIER                (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) -#define BATTLE_TYPE_FRONTIER_NO_PYRAMID     (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) + +#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED)) +#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED)  // Battle Outcome defines  #define B_OUTCOME_WON                  0x1 diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index f55661b91..d23648f39 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -23,7 +23,7 @@  #define AI_EFFECTIVENESS_x0     0  // ai weather -#define AI_WEATHER_SUNNY     0 +#define AI_WEATHER_SUN       0  #define AI_WEATHER_RAIN      1  #define AI_WEATHER_SANDSTORM 2  #define AI_WEATHER_HAIL      3 @@ -35,8 +35,8 @@  // script's table id to bit  #define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) -#define AI_SCRIPT_TRY_TO_FAINT (1 << 1) -#define AI_SCRIPT_CHECK_VIABILITY (1 << 2) +#define AI_SCRIPT_CHECK_VIABILITY (1 << 1) +#define AI_SCRIPT_TRY_TO_FAINT (1 << 2)  #define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)  #define AI_SCRIPT_RISKY (1 << 4)  #define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5) diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 6a4405b65..bf75a47cc 100644 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -1,6 +1,7 @@  #ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H  #define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H +// FIXME: Different in FRLG  #define MOVEMENT_TYPE_NONE                             0x0  #define MOVEMENT_TYPE_LOOK_AROUND                      0x1  #define MOVEMENT_TYPE_WANDER_AROUND                    0x2 @@ -239,8 +240,10 @@  #define MOVEMENT_ACTION_STOP_LEVITATE                   0x99  #define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP    0x9A  #define MOVEMENT_ACTION_FIGURE_8                        0x9B -#define MOVEMENT_ACTION_FLY_UP                          0x9C -#define MOVEMENT_ACTION_FLY_DOWN                        0x9D + +// These two are verified correct in FRLG +#define MOVEMENT_ACTION_FLY_UP                          0xA4 +#define MOVEMENT_ACTION_FLY_DOWN                        0xA5  #define MOVEMENT_ACTION_STEP_END 0xFE diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index 292852b4f..ac2cb6469 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -37,6 +37,16 @@  #define METATILE_PokemonMansion_Statue_RedEyes_Shade                     0x34E  #define METATILE_PokemonMansion_Statue_RedEyes_Basement                  0x34F +// Cinnabar Gym +#define METATILE_CinnabarGym_Floor                  0x281 +#define METATILE_CinnabarGym_Floor_ShadeDiagonal    0x282 +#define METATILE_CinnabarGym_Floor_ShadeFull        0x289 +#define METATILE_CinnabarGym_Floor_WallRightCorner  0x2C6 +#define METATILE_CinnabarGym_Floor_WallLeftCorner   0x2C7 +#define METATILE_CinnabarGym_Floor_WallRightEdge    0x2CE +#define METATILE_CinnabarGym_Floor_WallLeftEdge     0x2CF +#define METATILE_CinnabarGym_Wall_RetractedBarrier  0x2D1 +  // gTileset_82D504C. Below metatile probably needs generic name  #define METATILE_MtEmber_CaveEntrance  0x346 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index dfbba41d9..a8009f1ff 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -1,6 +1,97 @@  #ifndef GUARD_CONSTANTS_POKEMON_H  #define GUARD_CONSTANTS_POKEMON_H +// For (Set|Get)(Box)?MonData +#define MON_DATA_PERSONALITY        0 +#define MON_DATA_OT_ID              1 +#define MON_DATA_NICKNAME           2 +#define MON_DATA_LANGUAGE           3 +#define MON_DATA_SANITY_IS_BAD_EGG  4 +#define MON_DATA_SANITY_HAS_SPECIES 5 +#define MON_DATA_SANITY_IS_EGG      6 +#define MON_DATA_OT_NAME            7 +#define MON_DATA_MARKINGS           8 +#define MON_DATA_CHECKSUM           9 +#define MON_DATA_ENCRYPT_SEPARATOR 10 +#define MON_DATA_SPECIES           11 +#define MON_DATA_HELD_ITEM         12 +#define MON_DATA_MOVE1             13 +#define MON_DATA_MOVE2             14 +#define MON_DATA_MOVE3             15 +#define MON_DATA_MOVE4             16 +#define MON_DATA_PP1               17 +#define MON_DATA_PP2               18 +#define MON_DATA_PP3               19 +#define MON_DATA_PP4               20 +#define MON_DATA_PP_BONUSES        21 +#define MON_DATA_COOL              22 +#define MON_DATA_BEAUTY            23 +#define MON_DATA_CUTE              24 +#define MON_DATA_EXP               25 +#define MON_DATA_HP_EV             26 +#define MON_DATA_ATK_EV            27 +#define MON_DATA_DEF_EV            28 +#define MON_DATA_SPEED_EV          29 +#define MON_DATA_SPATK_EV          30 +#define MON_DATA_SPDEF_EV          31 +#define MON_DATA_FRIENDSHIP        32 +#define MON_DATA_SMART             33 +#define MON_DATA_POKERUS           34 +#define MON_DATA_MET_LOCATION      35 +#define MON_DATA_MET_LEVEL         36 +#define MON_DATA_MET_GAME          37 +#define MON_DATA_POKEBALL          38 +#define MON_DATA_HP_IV             39 +#define MON_DATA_ATK_IV            40 +#define MON_DATA_DEF_IV            41 +#define MON_DATA_SPEED_IV          42 +#define MON_DATA_SPATK_IV          43 +#define MON_DATA_SPDEF_IV          44 +#define MON_DATA_IS_EGG            45 +#define MON_DATA_ABILITY_NUM       46 +#define MON_DATA_TOUGH             47 +#define MON_DATA_SHEEN             48 +#define MON_DATA_OT_GENDER         49 +#define MON_DATA_COOL_RIBBON       50 +#define MON_DATA_BEAUTY_RIBBON     51 +#define MON_DATA_CUTE_RIBBON       52 +#define MON_DATA_SMART_RIBBON      53 +#define MON_DATA_TOUGH_RIBBON      54 +#define MON_DATA_STATUS            55 +#define MON_DATA_LEVEL             56 +#define MON_DATA_HP                57 +#define MON_DATA_MAX_HP            58 +#define MON_DATA_ATK               59 +#define MON_DATA_DEF               60 +#define MON_DATA_SPEED             61 +#define MON_DATA_SPATK             62 +#define MON_DATA_SPDEF             63 +#define MON_DATA_MAIL              64 +#define MON_DATA_SPECIES2          65 +#define MON_DATA_IVS               66 +#define MON_DATA_CHAMPION_RIBBON   67 +#define MON_DATA_WINNING_RIBBON    68 +#define MON_DATA_VICTORY_RIBBON    69 +#define MON_DATA_ARTIST_RIBBON     70 +#define MON_DATA_EFFORT_RIBBON     71 +#define MON_DATA_GIFT_RIBBON_1     72 +#define MON_DATA_GIFT_RIBBON_2     73 +#define MON_DATA_GIFT_RIBBON_3     74 +#define MON_DATA_GIFT_RIBBON_4     75 +#define MON_DATA_GIFT_RIBBON_5     76 +#define MON_DATA_GIFT_RIBBON_6     77 +#define MON_DATA_GIFT_RIBBON_7     78 +#define MON_DATA_FATEFUL_ENCOUNTER 79 +#define MON_DATA_OBEDIENCE         80 +#define MON_DATA_KNOWN_MOVES       81 +#define MON_DATA_RIBBON_COUNT      82 +#define MON_DATA_RIBBONS           83 +#define MON_DATA_ATK2              84 +#define MON_DATA_DEF2              85 +#define MON_DATA_SPEED2            86 +#define MON_DATA_SPATK2            87 +#define MON_DATA_SPDEF2            88 +  // Pokemon types  #define TYPE_NORMAL   0x00  #define TYPE_FIGHTING 0x01 @@ -93,4 +184,33 @@  #define PLAYER_HAS_ONE_MON                      0x1  #define PLAYER_HAS_ONE_USABLE_MON               0x2 +#define MAX_LEVEL 100 + +#define OT_ID_RANDOM_NO_SHINY 2 +#define OT_ID_PRESET 1 +#define OT_ID_PLAYER_ID 0 + +#define MON_GIVEN_TO_PARTY      0x0 +#define MON_GIVEN_TO_PC         0x1 +#define MON_CANT_GIVE           0x2 + +#define MON_MALE       0x00 +#define MON_FEMALE     0xFE +#define MON_GENDERLESS 0xFF + +#define FRIENDSHIP_EVENT_GROW_LEVEL           0x0 +#define FRIENDSHIP_EVENT_VITAMIN              0x1 +#define FRIENDSHIP_EVENT_BATTLE_ITEM          0x2 +#define FRIENDSHIP_EVENT_LEAGUE_BATTLE        0x3 +#define FRIENDSHIP_EVENT_LEARN_TMHM           0x4 +#define FRIENDSHIP_EVENT_WALKING              0x5 +#define FRIENDSHIP_EVENT_FAINT_SMALL          0x6 +#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 +#define FRIENDSHIP_EVENT_FAINT_LARGE          0x8 + +#define PARTY_SIZE 6 +#define MAX_TOTAL_EVS 510 +#define UNOWN_FORM_COUNT 28 +#define MAX_MON_LEVEL 100 +  #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h new file mode 100644 index 000000000..59736ba7a --- /dev/null +++ b/include/dodrio_berry_picking.h @@ -0,0 +1,6 @@ +#ifndef GUARD_DODRIO_BERRY_PICKING_H +#define GUARD_DODRIO_BERRY_PICKING_H + +void sub_81507FC(u16 species, MainCallback callback); + +#endif //GUARD_DODRIO_BERRY_PICKING_H diff --git a/include/event_object_80688E4.h b/include/event_object_80688E4.h index cee8ff707..36040e0a5 100644 --- a/include/event_object_80688E4.h +++ b/include/event_object_80688E4.h @@ -6,5 +6,10 @@  void FreezeObjectEvents(void);  void FreezeObjectEvent(struct ObjectEvent *);  void FreezeObjectEventsExceptOne(u8 objEventId); +void sub_8069124(u8 a0, bool8 a1); +u32 sub_806916C(u8 a0); +void sub_80691A4(u8 a0, u8 a1); +void sub_8069094(u8 a0, u8 a1); +bool32 sub_8069294(u8 a0);  #endif // GUARD_EVENT_OBJECT_80688E4_H diff --git a/include/event_object_8097404.h b/include/event_object_8097404.h index 77781943e..23fce9576 100644 --- a/include/event_object_8097404.h +++ b/include/event_object_8097404.h @@ -14,7 +14,7 @@ extern void *gUnknown_020375B8;  // Exported ROM declarations  void sub_8097AC8(struct Sprite *); -void npc_sync_anim_pause_bits(struct ObjectEvent *); +void UnfreezeObjectEvent(struct ObjectEvent *);  void oamt_npc_ministep_reset(struct Sprite *, u8, u8);  u8 sub_8097F78(struct ObjectEvent *);  bool8 obj_npc_ministep(struct Sprite *sprite); diff --git a/include/event_object_lock.h b/include/event_object_lock.h index c5c32857b..5c65585b5 100644 --- a/include/event_object_lock.h +++ b/include/event_object_lock.h @@ -11,5 +11,6 @@ void sub_8098630(void);  bool8 sub_8098734(void);  void sub_80696C0(void);  bool8 walkrun_is_standing_still(void); +void sub_80696F0(void);  #endif // GUARD_EVENT_OBJECT_LOCK_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h index b81a61664..f2e7bd325 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -47,7 +47,7 @@ void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);  void SpawnObjectEventsInView(s16, s16);  u8 sprite_new(u8, u8, s16, s16, u8, u8);  u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8); -u8 show_sprite(u8, u8, u8); +u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);  u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);  u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);  void sub_8093038(s16, s16, s16 *, s16 *); @@ -82,7 +82,7 @@ bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);  u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);  u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);  void sub_8063E28(struct ObjectEvent *, struct Sprite *); -void ObjectEventSetHeldMovement(struct ObjectEvent *, u8); +bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);  void npc_coords_shift_still(struct ObjectEvent *);  void sub_805FE7C(struct ObjectEvent *, u8);  void SetTrainerMovementType(struct ObjectEvent *, u8); diff --git a/include/event_scripts.h b/include/event_scripts.h index 54eb2b2a9..b8da8f3e0 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1190,10 +1190,10 @@ extern const u8 EventScript_PC[];  extern const u8 EventScript_RepelWoreOff[];  // battle_message -extern const u8 Text_1A5CF1[]; -extern const u8 Text_1A5D31[]; -extern const u8 Text_1A5D6E[]; -extern const u8 Text_1A5DB1[]; +extern const u8 Text_MonSentToBoxInSomeonesPC[]; +extern const u8 Text_MonSentToBoxInBillsPC[]; +extern const u8 Text_MonSentToBoxSomeonesBoxFull[]; +extern const u8 Text_MonSentToBoxBillsBoxFull[];  extern const u8 EventScript_BagItemCanBeRegistered[]; diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index ecb622de5..57a2fab66 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -7,5 +7,6 @@ extern u32 gUnknown_3005078;  void RestartWildEncounterImmunitySteps(void);  void ClearPoisonStepCounter(void); +void SetCableClubWarp(void);  #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 22849a37d..d27d0e54a 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -17,6 +17,8 @@ void FieldCallback_ReturnToEventScript2(void);  void sub_807DC00(void);  void FadeTransition_FadeInOnReturnToStartMenu(void); +void sub_807DCE4(void); +  bool32 sub_807E418(void);  #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index ec1a077be..a69ec6155 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -35,5 +35,6 @@ bool32 sub_805DAD0(void);  bool32 sub_805DC24(void);  bool8 PartyHasMonWithSurf(void);  bool8 IsPlayerSurfingNorth(void); +void player_get_pos_including_state_based_drift(s16 *x, s16 *y);  #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_weather.h b/include/field_weather.h index 2709a7298..de2543edb 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -3,7 +3,7 @@  #include "global.h" -void fade_screen(u8, s8); +void FadeScreen(u8, s8);  void SetSav1Weather(u32);  u8 GetSav1Weather(void); diff --git a/include/fieldmap.h b/include/fieldmap.h index 1560a0841..91a45d8c5 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -31,5 +31,6 @@ void sub_8059948(u8 a0, u8 a1);  void save_serialize_map(void);  u32 sub_8058F1C(u32 original, u8 bit);  u32 sub_8058F48(s16 x, s16 y, u8 z); +void sub_8059024(s32 x, s32 y, bool32 arg2);  #endif //GUARD_FIELDMAP_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4402d5042..01cd992ec 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -275,9 +275,9 @@ enum  struct PlayerAvatar /* 0x202E858 */  {      /*0x00*/ u8 flags; -    /*0x01*/ u8 bike; -    /*0x02*/ u8 running2; -    /*0x03*/ u8 running1; +    /*0x01*/ u8 unk1; // used to be bike, but it's not that in Emerald and probably isn't here either. maybe transition flags? +    /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving. +    /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning.      /*0x04*/ u8 spriteId;      /*0x05*/ u8 objectEventId;      /*0x06*/ u8 unk6; diff --git a/include/link.h b/include/link.h index 4175ac97f..770a60f44 100644 --- a/include/link.h +++ b/include/link.h @@ -278,5 +278,6 @@ bool8 HandleLinkConnection(void);  void sub_800B0B4(void);  void sub_800B110(u32 who);  void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); +u8 sub_800A8D4(void);  #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index bde20c555..790429870 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -233,9 +233,9 @@ void MG_DrawCheckerboardPattern(void);  void task_add_05_task_del_08FA224_when_no_RfuFunc(void);  bool8 IsLinkRfuTaskFinished(void);  void DestroyWirelessStatusIndicatorSprite(void); -void MEvent_CreateTask_CardOrNewsWithFriend(u8); -void MEvent_CreateTask_CardOrNewsOverWireless(u8); -void MEvent_CreateTask_Leader(u8); +void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0); +void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0); +void MEvent_CreateTask_Leader(u32 arg0);  void sub_80F9E2C(void * data);  u8 sub_8116DE0(void);  void sub_80FBB4C(void); @@ -288,13 +288,43 @@ bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);  void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);  u8 sub_80FEA34(u8 a0, u16 a1);  void sub_80FDA30(u32 a0); -void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); +void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3);  void LinkRfu_syncVBlank_(void);  s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));  void sub_80FEB3C(void);  void sub_80FAFE0(u8 a0);  bool32 sub_80FA44C(u32 a0);  bool8 sub_80FC1B0(void); +bool8 sub_80F8F40(void); +void sub_80F8F5C(void); +bool32 sub_80FA5D4(void); +bool32 sub_80FC1CC(void); +bool32 sub_80F8F7C(bool32 a0); +bool32 sub_80FA634(u16 a0, const u8 *a1); +void sub_80FA670(u8 a0, u16 a1, const u8 *a2); +u32 sub_80FA6FC(u16 a0, const u8 *a1); +void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2); +void sub_80FBB8C(u32 a0); +void sub_80FBD4C(const u8 *ptr, u16 a1); +void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname); +void sub_80FBBD8(void); +void sub_80FA6BC(void); +void sub_80FBF54(const u8 *src, u16 trainerId); +void sub_80FB008(u8 a0, u32 a1, u32 a2); +void RecordMixTrainerNames(void); +void sub_80F8CFC(); +void sub_80F8D14(); +void sub_80FAF74(bool32 a0, bool32 a1); +void ClearAndInitHostRFUtgtGname(void); +void sub_80F8FA0(void); +void sub_80FAFA0(u32 type, u32 species, u32 level); +bool32 sub_80FBB0C(void); +void sub_80FBC00(void); +void sub_80FBD6C(u32 a0); +void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2); +bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name); +bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx); +bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);  #include "mevent_server.h"  extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/include/mevent.h b/include/mevent.h index 81caeb42f..85782f20a 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -70,5 +70,8 @@ void sub_8143D24(void);  u16 sub_81445C0(u32 command);  void sub_8144714(u32 a0, u32 a1);  u16 *GetMEventProfileECWordsMaybe(void); +void sub_81446C4(void); +bool32 sub_81446D0(u16 a0); +u16 GetWonderCardFlagId(void);  #endif //GUARD_MEVENT_H diff --git a/include/mevent_server.h b/include/mevent_server.h index b691e9e1f..1e9ef7bef 100644 --- a/include/mevent_server.h +++ b/include/mevent_server.h @@ -86,6 +86,7 @@ struct mevent_server_cmd  #define SRV_SEND_NEWS           {.instr = 14}  #define SRV_BUFFER_SEND         {.instr = 15}  #define SRV_SEND(x, y)          {.instr = 18, .flag = x, .parameter = (void *)y} +#define SRV_SENDSTR(x, y)       {.instr = 20, .flag = x, .parameter = (void *)y}  #define SRV_BUFFER_CARD         {.instr = 26}  #define SRV_BUFFER_NEWS         {.instr = 27}  #define SRV_RAM_SCRIPT_IF_VALID {.instr = 28} diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h index 32624d602..bd790b36e 100644 --- a/include/mystery_gift_menu.h +++ b/include/mystery_gift_menu.h @@ -7,5 +7,8 @@ void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);  void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);  void c2_mystery_gift(void);  void c2_mystery_gift_e_reader_run(void); +s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str); +void MG_DrawTextBorder(u8 windowId); +u16 GetMysteryGiftBaseBlock(void);  #endif //GUARD_MYSTERY_GIFT_MENU_H diff --git a/include/overworld.h b/include/overworld.h index c24b63cf9..a7031e56d 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,7 +62,8 @@ extern struct WarpData gUnknown_2031DB4;  extern struct WarpData gUnknown_2031DBC;  extern u8 gUnknown_2031DE0; -extern u8 gUnknown_300502C; +extern u8 gFieldLinkPlayerCount; +extern u8 gLocalLinkPlayerId;  void IncrementGameStat(u8 index); diff --git a/include/party_menu.h b/include/party_menu.h index cc8889137..a1b85e059 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -68,7 +68,7 @@ void CB2_ChooseMonToGiveItem(void);  void ChooseMonToGiveMailFromMailbox(void);  void InitChooseHalfPartyForBattle(u8 a1);  void ClearSelectedPartyOrder(void); -void sub_81277F4(u8 menuType, MainCallback callback); +void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);  void ChooseMonForMoveTutor(void);  void ChooseMonForWirelessMinigame(void);  void OpenPartyMenuInTutorialBattle(u8 partyAction); diff --git a/include/pokemon.h b/include/pokemon.h index ae909018c..be0a35877 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -3,167 +3,7 @@  #include "global.h"  #include "sprite.h" - -#define MON_DATA_PERSONALITY        0 -#define MON_DATA_OT_ID              1 -#define MON_DATA_NICKNAME           2 -#define MON_DATA_LANGUAGE           3 -#define MON_DATA_SANITY_IS_BAD_EGG  4 -#define MON_DATA_SANITY_HAS_SPECIES 5 -#define MON_DATA_SANITY_IS_EGG      6 -#define MON_DATA_OT_NAME            7 -#define MON_DATA_MARKINGS           8 -#define MON_DATA_CHECKSUM           9 -#define MON_DATA_ENCRYPT_SEPARATOR 10 -#define MON_DATA_SPECIES           11 -#define MON_DATA_HELD_ITEM         12 -#define MON_DATA_MOVE1             13 -#define MON_DATA_MOVE2             14 -#define MON_DATA_MOVE3             15 -#define MON_DATA_MOVE4             16 -#define MON_DATA_PP1               17 -#define MON_DATA_PP2               18 -#define MON_DATA_PP3               19 -#define MON_DATA_PP4               20 -#define MON_DATA_PP_BONUSES        21 -#define MON_DATA_COOL              22 -#define MON_DATA_BEAUTY            23 -#define MON_DATA_CUTE              24 -#define MON_DATA_EXP               25 -#define MON_DATA_HP_EV             26 -#define MON_DATA_ATK_EV            27 -#define MON_DATA_DEF_EV            28 -#define MON_DATA_SPEED_EV          29 -#define MON_DATA_SPATK_EV          30 -#define MON_DATA_SPDEF_EV          31 -#define MON_DATA_FRIENDSHIP        32 -#define MON_DATA_SMART             33 -#define MON_DATA_POKERUS           34 -#define MON_DATA_MET_LOCATION      35 -#define MON_DATA_MET_LEVEL         36 -#define MON_DATA_MET_GAME          37 -#define MON_DATA_POKEBALL          38 -#define MON_DATA_HP_IV             39 -#define MON_DATA_ATK_IV            40 -#define MON_DATA_DEF_IV            41 -#define MON_DATA_SPEED_IV          42 -#define MON_DATA_SPATK_IV          43 -#define MON_DATA_SPDEF_IV          44 -#define MON_DATA_IS_EGG            45 -#define MON_DATA_ABILITY_NUM       46 -#define MON_DATA_TOUGH             47 -#define MON_DATA_SHEEN             48 -#define MON_DATA_OT_GENDER         49 -#define MON_DATA_COOL_RIBBON       50 -#define MON_DATA_BEAUTY_RIBBON     51 -#define MON_DATA_CUTE_RIBBON       52 -#define MON_DATA_SMART_RIBBON      53 -#define MON_DATA_TOUGH_RIBBON      54 -#define MON_DATA_STATUS            55 -#define MON_DATA_LEVEL             56 -#define MON_DATA_HP                57 -#define MON_DATA_MAX_HP            58 -#define MON_DATA_ATK               59 -#define MON_DATA_DEF               60 -#define MON_DATA_SPEED             61 -#define MON_DATA_SPATK             62 -#define MON_DATA_SPDEF             63 -#define MON_DATA_MAIL              64 -#define MON_DATA_SPECIES2          65 -#define MON_DATA_IVS               66 -#define MON_DATA_CHAMPION_RIBBON   67 -#define MON_DATA_WINNING_RIBBON    68 -#define MON_DATA_VICTORY_RIBBON    69 -#define MON_DATA_ARTIST_RIBBON     70 -#define MON_DATA_EFFORT_RIBBON     71 -#define MON_DATA_GIFT_RIBBON_1     72 -#define MON_DATA_GIFT_RIBBON_2     73 -#define MON_DATA_GIFT_RIBBON_3     74 -#define MON_DATA_GIFT_RIBBON_4     75 -#define MON_DATA_GIFT_RIBBON_5     76 -#define MON_DATA_GIFT_RIBBON_6     77 -#define MON_DATA_GIFT_RIBBON_7     78 -#define MON_DATA_FATEFUL_ENCOUNTER 79 -#define MON_DATA_OBEDIENCE         80 -#define MON_DATA_KNOWN_MOVES       81 -#define MON_DATA_RIBBON_COUNT      82 -#define MON_DATA_RIBBONS           83 -#define MON_DATA_ATK2              84 -#define MON_DATA_DEF2              85 -#define MON_DATA_SPEED2            86 -#define MON_DATA_SPATK2            87 -#define MON_DATA_SPDEF2            88 - -#define MAX_LEVEL 100 - -#define OT_ID_RANDOM_NO_SHINY 2 -#define OT_ID_PRESET 1 -#define OT_ID_PLAYER_ID 0 - -#define MON_GIVEN_TO_PARTY      0x0 -#define MON_GIVEN_TO_PC         0x1 -#define MON_CANT_GIVE           0x2 - -#define MON_MALE       0x00 -#define MON_FEMALE     0xFE -#define MON_GENDERLESS 0xFF - -#define FRIENDSHIP_EVENT_GROW_LEVEL           0x0 -#define FRIENDSHIP_EVENT_VITAMIN              0x1 -#define FRIENDSHIP_EVENT_BATTLE_ITEM          0x2 -#define FRIENDSHIP_EVENT_LEAGUE_BATTLE        0x3 -#define FRIENDSHIP_EVENT_LEARN_TMHM           0x4 -#define FRIENDSHIP_EVENT_WALKING              0x5 -#define FRIENDSHIP_EVENT_FAINT_SMALL          0x6 -#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 -#define FRIENDSHIP_EVENT_FAINT_LARGE          0x8 - -#define TYPE_NORMAL   0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING   0x02 -#define TYPE_POISON   0x03 -#define TYPE_GROUND   0x04 -#define TYPE_ROCK     0x05 -#define TYPE_BUG      0x06 -#define TYPE_GHOST    0x07 -#define TYPE_STEEL    0x08 -#define TYPE_MYSTERY  0x09 -#define TYPE_FIRE     0x0a -#define TYPE_WATER    0x0b -#define TYPE_GRASS    0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC  0x0e -#define TYPE_ICE      0x0f -#define TYPE_DRAGON   0x10 -#define TYPE_DARK     0x11 - -#define NUMBER_OF_MON_TYPES     0x12 - -#define PARTY_SIZE 6 -#define MAX_TOTAL_EVS 510 -#define NUM_STATS 6 -#define UNOWN_FORM_COUNT 28 -#define MAX_MON_LEVEL 100 - -enum -{ -    EGG_GROUP_NONE, -    EGG_GROUP_MONSTER, -    EGG_GROUP_WATER_1, -    EGG_GROUP_BUG, -    EGG_GROUP_FLYING, -    EGG_GROUP_FIELD, -    EGG_GROUP_FAIRY, -    EGG_GROUP_GRASS, -    EGG_GROUP_HUMAN_LIKE, -    EGG_GROUP_WATER_3, -    EGG_GROUP_MINERAL, -    EGG_GROUP_AMORPHOUS, -    EGG_GROUP_WATER_2, -    EGG_GROUP_DITTO, -    EGG_GROUP_DRAGON, -    EGG_GROUP_UNDISCOVERED -}; +#include "constants/pokemon.h"  struct PokemonSubstruct0  { @@ -357,28 +197,6 @@ struct BattlePokemon      /*0x54*/ u32 otId;  }; -enum -{ -    STAT_STAGE_HP,       // 0 -    STAT_STAGE_ATK,      // 1 -    STAT_STAGE_DEF,      // 2 -    STAT_STAGE_SPEED,    // 3 -    STAT_STAGE_SPATK,    // 4 -    STAT_STAGE_SPDEF,    // 5 -    STAT_STAGE_ACC,      // 6 -    STAT_STAGE_EVASION,  // 7 -}; - -enum -{ -    STAT_HP,     // 0 -    STAT_ATK,    // 1 -    STAT_DEF,    // 2 -    STAT_SPD,    // 3 -    STAT_SPATK,  // 4 -    STAT_SPDEF,  // 5 -}; -  struct BaseStats  {   /* 0x00 */ u8 baseHP; diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 8623b223a..0e9094752 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -5,5 +5,6 @@  void ResetPokeJumpResults(void);  bool32 IsSpeciesAllowedInPokemonJump(u16 species); +void sub_8147AA8(u16 species, MainCallback callback);  #endif // GUARD_POKEMON_JUMP_H diff --git a/include/rfu_union_tool.h b/include/rfu_union_tool.h new file mode 100644 index 000000000..b8b5cd664 --- /dev/null +++ b/include/rfu_union_tool.h @@ -0,0 +1,17 @@ +#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H +#define GUARD_UNION_ROOM_PLAYER_AVATAR_H + +#include "union_room.h" + +void sub_811C1C8(void); +void sub_811BAAC(u8 *spriteIds, s32 arg1); +void sub_811BB40(u8 *spriteIds); +void sub_811BB68(void); +void sub_811BECC(struct UnkStruct_URoom *arg0); +void sub_811BEDC(struct UnkStruct_URoom *arg0); +bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3); +void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2); +u8 ZeroUnionObjWork(struct UnionObj * ptr); +void sub_811BA78(void); + +#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H diff --git a/include/save_location.h b/include/save_location.h index fb71ab728..c8e362231 100644 --- a/include/save_location.h +++ b/include/save_location.h @@ -6,6 +6,7 @@  #define POKECENTER_SAVEWARP          (1 << 1)  #define LOBBY_SAVEWARP               (1 << 2)  #define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3) +#define CHAMPION_SAVEWARP            (1 << 7)  void TrySetMapSaveWarpStatus(void);  bool32 IsCurMapPokeCenter(void); diff --git a/include/strings.h b/include/strings.h index 7e8a4fbb4..a57493a9b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1056,4 +1056,9 @@ extern const u8 gText_DepositHowManyStrVars1[];  extern const u8 gText_DepositedStrVar2StrVar1s[];  extern const u8 gText_NoRoomToStoreItems[]; +// union_room_battle +extern const u8 gText_CommStandbyAwaitingOtherPlayer[]; +extern const u8 gText_RefusedBattle[]; +extern const u8 gText_BattleWasRefused[]; +  #endif //GUARD_STRINGS_H diff --git a/include/union_room.h b/include/union_room.h index d57683a8a..3cb8eb84a 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -2,11 +2,11 @@  #define GUARD_UNION_ROOM_H  #include "global.h" -#include "librfu.h" +#include "link_rfu.h"  struct UnkStruct_Shared  { -    struct GFtgtGname field_0; +    struct GFtgtGname gname;      u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];  }; @@ -28,26 +28,27 @@ struct UnkStruct_x20      u8 field_1F;  }; +// These arrays are dynamically allocated but must be +// represented as structs to match. +// Don't ask me why. + +// FIXME: Find a way around this. +  struct UnkStruct_Main0  { -    struct UnkStruct_x20 arr[8]; +    struct UnkStruct_x20 arr[0];  };  struct UnkStruct_Main4  { -    struct UnkStruct_x1C arr[5]; -}; - -struct UnkStruct_Main8 -{ -    struct UnkStruct_x20 arr[5]; +    struct UnkStruct_x1C arr[0];  };  struct UnkStruct_Leader  { -    struct UnkStruct_Main0 *field_0; -    struct UnkStruct_Main4 *field_4; -    struct UnkStruct_Main8 *field_8; +    struct UnkStruct_Main0 * field_0; +    struct UnkStruct_Main4 * field_4; +    struct UnkStruct_Main0 * field_8;      u8 state;      u8 textState;      u8 field_E; @@ -67,8 +68,8 @@ struct UnkStruct_Leader  struct UnkStruct_Group  { -    struct UnkStruct_Main0 *field_0; -    struct UnkStruct_Main4 *field_4; +    struct UnkStruct_Main0 * field_0; +    struct UnkStruct_Main4 * field_4;      u8 state;      u8 textState;      u8 field_A; @@ -85,56 +86,56 @@ struct UnkStruct_Group      u8 field_15;  }; -struct UnkStruct_8019BA8 +struct UnionObj  { -    u8 field_0; -    u8 field_1; -    s8 field_2; -    u8 field_3; +    u8 state; +    u8 gfxId; +    s8 animState; +    u8 schedAnim;  };  struct UnkStruct_URoom  { -    struct UnkStruct_Main0 *field_0; -    struct UnkStruct_Main4 *field_4; -    struct UnkStruct_Main0 *field_8; -    struct UnkStruct_Main4 *field_C; -    u16 field_10; -    u16 field_12; -    u8 state; -    u8 stateAfterPrint; -    u8 textState; -    u8 field_17; -    u8 field_18; -    u8 field_19; -    u8 field_1A; -    u8 field_1B; -    u8 field_1C; -    u8 field_1D; -    u8 field_1E; -    u8 field_1F; -    u8 field_20; -    u8 spriteIds[40]; -    u8 field_49; -    u8 field_4A; -    u16 field_4C[6]; -    u8 field_58[0x98 - 0x58]; -    u16 field_98; -    u16 field_9A[3]; -    struct UnkStruct_8019BA8 field_A0[8]; -    u8 field_C0[12][15]; -    u8 field_174[48]; -    u8 field_1A4[200]; +    /* 0x000 */ struct UnkStruct_Main0 * field_0; +    /* 0x004 */ struct UnkStruct_Main4 * field_4; +    /* 0x008 */ struct UnkStruct_Main0 * field_8; +    /* 0x00C */ struct UnkStruct_Main4 * field_C; +    /* 0x010 */ u16 field_10; +    /* 0x012 */ u16 field_12; +    /* 0x014 */ u8 state; +    /* 0x015 */ u8 stateAfterPrint; +    /* 0x016 */ u8 textState; +    /* 0x017 */ u8 field_17; +    /* 0x018 */ u8 field_18; +    /* 0x019 */ u8 field_19; +    /* 0x01A */ u8 field_1A; +    /* 0x01B */ u8 field_1B; +    /* 0x01C */ u8 field_1C; +    /* 0x01D */ u8 field_1D; +    /* 0x01E */ u8 field_1E; +    /* 0x01F */ u8 field_1F; +    /* 0x020 */ u8 field_20; +    /* 0x021 */ u8 spriteIds[40]; +    /* 0x049 */ u8 field_49; +    /* 0x04A */ u8 field_4A; +    /* 0x04C */ u16 field_4C[6]; +    /* 0x058 */ u8 field_58[4][11]; +    /* 0x084 */ u16 field_98; +    /* 0x086 */ u16 field_9A[3]; +    /* 0x08C */ struct UnionObj unionObjs[8]; +    /* 0x0AC */ u8 trainerCardStrbufs[12][15]; +    /* 0x160 */ u8 field_174[48]; +    /* 0x190 */ u8 field_1A4[200];  };  union UnkUnion_Main  { -    struct UnkStruct_Leader *leader; -    struct UnkStruct_Group *group; -    struct UnkStruct_URoom *uRoom; +    struct UnkStruct_Leader * leader; +    struct UnkStruct_Group * group; +    struct UnkStruct_URoom * uRoom;  }; -struct TradeUnkStruct +struct UnionRoomTrade  {      u16 field_0;      u16 type; @@ -153,4 +154,6 @@ extern struct GFtgtGnameSub gUnknown_203B064;  extern u16 gUnionRoomOfferedSpecies;  extern u8 gUnionRoomRequestedMonType; +void sub_81173C0(u16 battleFlags); +  #endif //GUARD_UNION_ROOM_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 17e482525..66daac376 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -2,6 +2,7 @@  #define GUARD_UNION_ROOM_CHAT_H  void sub_801DD98(void); +void sub_8128420(void);  void copy_strings_to_sav1(void);  #endif // GUARD_UNION_ROOM_CHAT_H diff --git a/include/union_room_message.h b/include/union_room_message.h new file mode 100644 index 000000000..b7de673ba --- /dev/null +++ b/include/union_room_message.h @@ -0,0 +1,114 @@ +#ifndef GUARD_UNION_ROOM_MESSAGE_H +#define GUARD_UNION_ROOM_MESSAGE_H + +#include "global.h" + +extern const u8 gUnknown_84571AC[]; +extern const u8 gUnknown_84571B0[]; +extern const u8 gUnknown_84571B4[]; +extern const u8 gUnknown_84571B8[]; +extern const u8 gUnknown_84571E0[]; +extern const u8 gUnknown_8457234[]; +extern const u8 gUnknown_8457264[]; +extern const u8 *const gUnknown_845742C[][5]; +extern const u8 gUnknown_845747C[]; +extern const u8 gUnknown_84574A0[]; +extern const u8 gUnknown_84574C4[]; +extern const u8 gUnknown_84574EC[]; +extern const u8 gUnknown_8457514[]; +extern const u8 gUnknown_8457530[]; +extern const u8 gUnknown_8457554[]; +extern const u8 *const gUnknown_8457608[]; +extern const u8 gUnknown_8457610[]; +extern const u8 *const gUnknown_845767C[]; +extern const u8 gUnknown_84576AC[]; +extern const u8 gUnknown_84576C4[]; +extern const u8 gUnknown_8457700[]; +extern const u8 gUnknown_845771C[]; +extern const u8 *const gUnknown_8457754[]; +extern const u8 gUnknown_845777C[]; +extern const u8 gUnknown_84577BC[]; +extern const u8 gUnknown_84577F8[]; +extern const u8 *const gUnknown_8457838[]; +extern const u8 gUnknown_84578BC[]; +extern const u8 *const gUnknown_8457A34[]; +extern const u8 *const gUnknown_8457B04[][2]; +extern const u8 *const gUnknown_8457BCC[]; +extern const u8 *const gUnknown_8457C20[]; +extern const u8 gUnknown_8457C48[]; +extern const u8 gUnknown_8457CA4[]; +extern const u8 gUnknown_8457CF8[]; +extern const u8 gUnknown_8457D44[]; +extern const u8 gUnknown_8457DB8[]; +extern const u8 gUnknown_8457E0C[]; +extern const u8 gUnknown_8457E28[]; +extern const u8 gUnknown_8457E44[]; +extern const u8 gUnknown_8457E60[]; +extern const u8 *const gUnknown_8457F80[][2]; +extern const u8 gUnknown_8457F90[]; +extern const u8 *const gUnknown_84580F4[][4]; +extern const u8 *const gUnknown_8458230[][2][3]; +extern const u8 *const gUnknown_8458314[]; +extern const u8 *const gUnknown_84583B4[]; +extern const u8 *const gUnknown_845842C[]; +extern const u8 gUnknown_8458434[]; +extern const u8 gUnknown_845847C[]; +extern const u8 gUnknown_84584C0[]; +extern const u8 *const gUnknown_8458548[]; +extern const u8 *const gUnknown_84585E8[]; +extern const u8 *const gUnknown_8458758[2][4]; +extern const u8 *const gUnknown_84588BC[2][4]; +extern const u8 *const gUnknown_84589AC[2][2]; +extern const u8 *const gUnknown_8458A78[2][4]; +extern const u8 gUnknown_8458A98[]; +extern const u8 gUnknown_8458AB8[]; +extern const u8 gUnknown_8458B44[]; +extern const u8 gUnknown_8458CD4[]; +extern const u8 gUnknown_8458D1C[]; +extern const u8 gUnknown_8458D54[]; +extern const u8 gUnknown_8458D78[]; +extern const u8 gUnknown_8458D9C[]; +extern const u8 gUnknown_8458DBC[]; +extern const u8 gUnknown_8458DE8[]; +extern const u8 gUnknown_8458E10[]; +extern const u8 gUnknown_8458E70[]; +extern const u8 gUnknown_8458ED0[]; +extern const u8 gUnknown_8458F04[]; +extern const u8 gUnknown_8458F9C[]; +extern const u8 gUnknown_8458FBC[]; +extern const u8 gUnknown_8458FC8[]; +extern const u8 gUnknown_8458FE4[]; +extern const u8 gUnknown_84591DC[]; +extern const u8 *const gUnknown_84591B8[]; +extern const u8 gUnknown_8459238[]; +extern const u8 gUnknown_8459250[]; +extern const u8 gUnknown_845928C[]; +extern const u8 *const gUnknown_845933C[]; +extern const u8 gUnknown_8459344[]; +extern const u8 gUnknown_845934C[]; +extern const u8 gUnknown_8459354[]; +extern const u8 gUnknown_8459360[]; +extern const u8 gUnknown_8459368[]; +extern const u8 gUnknown_8459370[]; +extern const u8 gUnknown_8459378[]; +extern const u8 gUnknown_8459394[]; +extern const u8 gUnknown_84593A4[]; +extern const u8 gUnknown_84593B4[]; +extern const u8 gUnknown_84593C4[]; +extern const u8 gUnknown_84593D4[]; +extern const u8 gUnknown_84593E4[]; +extern const u8 gUnknown_84593F4[]; +extern const u8 gUnknown_84593DC[]; +extern const u8 gUnknown_8459400[]; +extern const u8 gUnknown_8459410[]; +extern const u8 gUnknown_845941C[]; +extern const u8 gUnknown_845942C[]; +extern const u8 gUnknown_8459434[]; +extern const u8 gUnknown_8459440[]; +extern const u8 *const gUnknown_84594B0[]; +extern const u8 gUnknown_84594C4[]; +extern const u8 gUnknown_8459504[]; +extern const u8 *const gUnknown_8459580[]; +extern const u8 gUnknown_8459588[]; + +#endif //GUARD_UNION_ROOM_MESSAGE_H | 
