diff options
Diffstat (limited to 'include')
101 files changed, 2841 insertions, 1815 deletions
| diff --git a/include/battle.h b/include/battle.h index 789167197..c9bbb56eb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -4,29 +4,47 @@  #include "sprite.h"  #include "constants/battle_constants.h" -/* -    Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. -    Each bank has a value consisting of two bits. -    0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side. -    0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) -*/ - -#define BATTLE_BANKS_COUNT  4 - -#define IDENTITY_PLAYER_MON1        0 -#define IDENTITY_OPPONENT_MON1      1 -#define IDENTITY_PLAYER_MON2        2 -#define IDENTITY_OPPONENT_MON2      3 - -#define SIDE_PLAYER     0x0 -#define SIDE_OPPONENT   0x1 - -#define BIT_SIDE        0x1 -#define BIT_MON         0x2 - -#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) -#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE)) -#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) +#define GET_BATTLER_POSITION(bank)((gBattlerPositions[bank])) +#define GET_BATTLER_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE)) +#define GET_BATTLER_SIDE2(bank)((GET_BATTLER_POSITION(bank) & BIT_SIDE)) + +// Battle Actions +// These determine what each battler will do in a turn +#define B_ACTION_USE_MOVE               0 +#define B_ACTION_USE_ITEM               1 +#define B_ACTION_SWITCH                 2 +#define B_ACTION_RUN                    3 +#define B_ACTION_SAFARI_WATCH_CAREFULLY 4 +#define B_ACTION_SAFARI_BALL            5 +#define B_ACTION_SAFARI_POKEBLOCK       6 +#define B_ACTION_SAFARI_GO_NEAR         7 +#define B_ACTION_SAFARI_RUN             8 +// The exact purposes of these are unclear +#define B_ACTION_UNKNOWN9               9 +#define B_ACTION_EXEC_SCRIPT            10 // when executing an action +#define B_ACTION_CANCEL_PARTNER         12 // when choosing an action +#define B_ACTION_FINISHED               12 // when executing an action +#define B_ACTION_NOTHING_FAINTED        13 // when choosing an action +#define B_ACTION_NONE                   0xFF + +// defines for the u8 array gTypeEffectiveness +#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) +#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) +#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) + +// defines for the gTypeEffectiveness multipliers +#define TYPE_MUL_NO_EFFECT          0 +#define TYPE_MUL_NOT_EFFECTIVE      5 +#define TYPE_MUL_NORMAL             10 +#define TYPE_MUL_SUPER_EFFECTIVE    20 + +// special type table Ids +#define TYPE_FORESIGHT  0xFE +#define TYPE_ENDTABLE   0xFF + +// physical/special types +#define TYPE_IS_PHYSICAL(type) ((type) < TYPE_MYSTERY) +#define TYPE_IS_SPECIAL(type) ((type) > TYPE_MYSTERY)  enum  { @@ -53,16 +71,16 @@ struct Trainer      /*0x18*/ bool8 doubleBattle;      /*0x1C*/ u32 aiFlags;      /*0x20*/ u8 partySize; -    /*0x24*/ void *party; +    /*0x24*/ const void *party;  }; -struct UnkBattleStruct1 // AI_Opponent_Info? +struct BattleHistory  { -    /*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; +    /*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc) +    /*0x20*/ u8 abilities[MAX_BATTLERS_COUNT / 2]; +    /*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT / 2]; +    /*0x24*/ u16 trainerItems[MAX_BATTLERS_COUNT]; +    /*0x2C*/ u8 numItems;  };  struct AI_Stack @@ -179,7 +197,7 @@ struct BattleStruct /* 0x2000000 */      /*0x1605F*/ u8 sentInPokes;      /*0x16060*/ u8 unk16060[4];      /*0x16064*/ u8 unk16064[4]; -    /*0x16068*/ u8 unk16068[4]; +    /*0x16068*/ u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];      /*0x1606C*/ u8 unk1606C[4][3];      /*0x16078*/ u8 unk16078;      /*0x16079*/ u8 caughtNick[11]; @@ -242,8 +260,7 @@ struct BattleStruct /* 0x2000000 */      /*0x160C5*/ u8 unk160C5;      /*0x160C6*/ u8 unk160C6;      /*0x160C7*/ u8 unk160C7; -    /*0x160C8*/ u8 unk160C8; -    /*0x160C9*/ u8 unk160C9; +    /*0x160C8*/ u8 AI_monToSwitchIntoId[2];      /*0x160CA*/ u8 synchroniseEffect;      /*0x160CB*/ u8 linkPlayerIndex;      /*0x160CC*/ u16 usedHeldItems[4]; @@ -323,7 +340,7 @@ struct BattleStruct /* 0x2000000 */      /*0x1611F*/ u8 unk1611F;      //u8 filler2[0x72E]; -    /* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2; +    /* 0x16A00 */ struct BattleHistory unk_2016A00_2;  };  struct StatsArray @@ -352,8 +369,8 @@ struct DisableStruct      /*0x0D*/ u8 unkD;      /*0x0E*/ u8 encoreTimer1 : 4;      /*0x0E*/ u8 encoreTimer2 : 4; -    /*0x0F*/ u8 perishSong1 : 4; -    /*0x0F*/ u8 perishSong2 : 4; +    /*0x0F*/ u8 perishSongTimer1 : 4; +    /*0x0F*/ u8 perishSongTimer2 : 4;      /*0x10*/ u8 furyCutterCounter;      /*0x11*/ u8 rolloutTimer1 : 4;      /*0x11*/ u8 rolloutTimer2 : 4; @@ -394,7 +411,7 @@ struct BattleResults      u16 caughtPoke;           // 0x28      u8 caughtNick[10];        // 0x2A      u8 filler34[2]; -    u8 unk36[10];  // usedBalls? +    u8 usedBalls[11];  };  struct Struct2017100 @@ -520,21 +537,21 @@ struct sideTimer  struct WishFutureKnock  { -    u8 futureSightCounter[MAX_BANKS_BATTLE]; -    u8 futureSightAttacker[MAX_BANKS_BATTLE]; -    s32 futureSightDmg[MAX_BANKS_BATTLE]; -    u16 futureSightMove[MAX_BANKS_BATTLE]; -    u8 wishCounter[MAX_BANKS_BATTLE]; -    u8 wishUserID[MAX_BANKS_BATTLE]; +    u8 futureSightCounter[MAX_BATTLERS_COUNT]; +    u8 futureSightAttacker[MAX_BATTLERS_COUNT]; +    s32 futureSightDmg[MAX_BATTLERS_COUNT]; +    u16 futureSightMove[MAX_BATTLERS_COUNT]; +    u8 wishCounter[MAX_BATTLERS_COUNT]; +    u8 wishUserID[MAX_BATTLERS_COUNT];      u8 weatherDuration;      u8 knockedOffPokes[2];  }; -extern struct UnkBattleStruct1 unk_2016A00; -extern struct DisableStruct gDisableStructs[MAX_BANKS_BATTLE]; +extern struct BattleHistory unk_2016A00; +extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];  extern struct BattleResults gBattleResults; -extern struct ProtectStruct gProtectStructs[MAX_BANKS_BATTLE]; -extern struct SpecialStatus gSpecialStatuses[MAX_BANKS_BATTLE]; +extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT]; +extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];  extern struct sideTimer gSideTimers[2];  extern struct WishFutureKnock gWishFutureKnock;  extern struct AI_ThinkingStruct gAIThinkingSpace; @@ -723,13 +740,17 @@ extern u16 gBattle_WIN1V;  extern u8 gDisplayedStringBattle[]; -// asm/battle_1.o +extern u16 gBattleTypeFlags; +extern u8 gUnknown_02023A14_50; +extern u16 gTrainerBattleOpponent; + +// src/battle_bg.o  void sub_800D6D4(); -void sub_800D74C(); +void ApplyPlayerChosenFrameToBattleMenu();  void DrawMainBattleBackground(void); -void sub_800DAB8(); +void LoadBattleTextboxAndBackground();  void sub_800DE30(u8); -void sub_800E23C(); +void LoadBattleEntryBackground();  // src/battle_2.o  void sub_800E7C4(void); @@ -741,6 +762,7 @@ void BattleMainCB2(void);  void sub_800F838(struct Sprite *);  u8 CreateNPCTrainerParty(struct Pokemon *, u16);  void sub_800FCFC(void); +void nullsub_36(struct Sprite *);  void c2_8011A1C(void);  void sub_80101B8(void);  void c2_081284E0(void); @@ -808,7 +830,7 @@ void sub_802E424(void);  void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d);  void nullsub_9(u16);  void nullsub_10(int); -void load_gfxc_health_bar(); +void load_gfxc_health_bar(u8);  u8 battle_load_something();  void sub_8031F88(u8);  void HandleLowHpMusicChange(struct Pokemon *, u8); @@ -816,8 +838,11 @@ void sub_8032638();  void sub_8032AA8(u8, u8);  void SetBankFuncToOpponentBufferRunCommand(void);  void BattleStopLowHpSound(void); +void sub_8031FC4(u8, u8, bool8); +void sub_8032984(u8, u16); -// asm/battle_9.o  void SetBankFuncToLinkOpponentBufferRunCommand(void); +void GameClear(void); +  #endif // GUARD_BATTLE_H diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h new file mode 100644 index 000000000..648cfad74 --- /dev/null +++ b/include/battle_ai_switch_items.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H +#define GUARD_BATTLE_AI_SWITCH_ITEMS_H + +u8 GetMostSuitableMonToSwitchInto(void); + +#endif diff --git a/include/battle_anim.h b/include/battle_anim.h index ce9bb13de..b5b85625e 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -40,6 +40,79 @@ extern u8 gAnimFriendship;  extern u8 gAnimMoveTurn;  extern struct DisableStruct *gAnimDisableStructPtr; +extern const struct OamData gOamData_837DF24; +extern const struct OamData gOamData_837DF2C; +extern const struct OamData gOamData_837DF34; +extern const struct OamData gOamData_837DF3C; +extern const struct OamData gOamData_837DF44; +extern const struct OamData gOamData_837DF4C; +extern const struct OamData gOamData_837DF54; +extern const struct OamData gOamData_837DF5C; +extern const struct OamData gOamData_837DF64; +extern const struct OamData gOamData_837DF6C; +extern const struct OamData gOamData_837DF74; +extern const struct OamData gOamData_837DF7C; +extern const struct OamData gOamData_837DF84; +extern const struct OamData gOamData_837DF8C; +extern const struct OamData gOamData_837DF94; +extern const struct OamData gOamData_837DF9C; +extern const struct OamData gOamData_837DFA4; +extern const struct OamData gOamData_837DFAC; +extern const struct OamData gOamData_837DFB4; +extern const struct OamData gOamData_837DFBC; +extern const struct OamData gOamData_837DFC4; +extern const struct OamData gOamData_837DFCC; +extern const struct OamData gOamData_837DFD4; +extern const struct OamData gOamData_837DFDC; +extern const struct OamData gOamData_837DFE4; +extern const struct OamData gOamData_837DFEC; +extern const struct OamData gOamData_837DFF4; +extern const struct OamData gOamData_837DFFC; +extern const struct OamData gOamData_837D004; +extern const struct OamData gOamData_837D00C; +extern const struct OamData gOamData_837E014; +extern const struct OamData gOamData_837E01C; +extern const struct OamData gOamData_837E024; +extern const struct OamData gOamData_837E02C; +extern const struct OamData gOamData_837E034; +extern const struct OamData gOamData_837E03C; +extern const struct OamData gOamData_837E044; +extern const struct OamData gOamData_837E04C; +extern const struct OamData gOamData_837E054; +extern const struct OamData gOamData_837E05C; +extern const struct OamData gOamData_837E064; +extern const struct OamData gOamData_837E06C; +extern const struct OamData gOamData_837E074; +extern const struct OamData gOamData_837E07C; +extern const struct OamData gOamData_837E084; +extern const struct OamData gOamData_837E08C; +extern const struct OamData gOamData_837E094; +extern const struct OamData gOamData_837E09C; +extern const struct OamData gOamData_837E0A4; +extern const struct OamData gOamData_837E0AC; +extern const struct OamData gOamData_837E0B4; +extern const struct OamData gOamData_837E0BC; +extern const struct OamData gOamData_837E0C4; +extern const struct OamData gOamData_837E0CC; +extern const struct OamData gOamData_837E0D4; +extern const struct OamData gOamData_837E0DC; +extern const struct OamData gOamData_837E0E4; +extern const struct OamData gOamData_837E0EC; +extern const struct OamData gOamData_837E0F4; +extern const struct OamData gOamData_837E0FC; +extern const struct OamData gOamData_837E104; +extern const struct OamData gOamData_837E10C; +extern const struct OamData gOamData_837E114; +extern const struct OamData gOamData_837E11C; +extern const struct OamData gOamData_837E124; +extern const struct OamData gOamData_837E12C; +extern const struct OamData gOamData_837E134; +extern const struct OamData gOamData_837E13C; +extern const struct OamData gOamData_837E144; +extern const struct OamData gOamData_837E14C; +extern const struct OamData gOamData_837E154; +extern const struct OamData gOamData_837E15C; +  void DoMoveAnim(u16 move);  void LaunchBattleAnimation(const u8 *const moveAnims[], u16 b, u8 c);  bool8 IsAnimBankSpriteVisible(u8 a); diff --git a/include/battle_bg.h b/include/battle_bg.h new file mode 100644 index 000000000..8cbc74604 --- /dev/null +++ b/include/battle_bg.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_BG_H +#define GUARD_BATTLE_BG_H + +void debug_sub_800D684(void); + +#endif //GUARD_BATTLE_BG_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 8423a6e6e..88afcdf0a 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -47,6 +47,8 @@ struct TrainerEyeTrainer     u16 mapNum;  }; +extern const struct TrainerEyeTrainer gTrainerEyeTrainers[56]; +  void BattleSetup_StartWildBattle(void);  void BattleSetup_StartRoamerBattle(void);  void BattleSetup_StartScriptedWildBattle(void); diff --git a/include/berry.h b/include/berry.h index a7ac5ba94..259ada634 100644 --- a/include/berry.h +++ b/include/berry.h @@ -1,6 +1,17 @@  #ifndef GUARD_BERRY_H  #define GUARD_BERRY_H +#define BERRY_NAME_LENGTH 6 +#define BERRY_REGROW_LIMIT 10 +#define MAX_BERRY_TREES 128 + +#define BERRY_NONE 0 +#define FIRST_BERRY ITEM_CHERI_BERRY +#define LAST_BERRY  ITEM_ENIGMA_BERRY + +#define GETBERRYID(berry) ((berry - FIRST_BERRY) + 1) +#define GETITEMID(berry) ((berry + FIRST_BERRY) - 1) +  enum  {      BERRY_FIRMNESS_UNKNOWN, @@ -23,10 +34,12 @@ enum      BERRY_STAGE_SPARKLING = 0xFF,  }; +void ClearEnigmaBerries(void); +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam);  void SetEnigmaBerry(u8 *src);  bool32 IsEnigmaBerryValid(void);  const struct Berry *GetBerryInfo(u8 berry); -bool32 FieldObjectInteractionWaterBerryTree(void); +bool32 EventObjectInteractionWaterBerryTree(void);  bool8 IsPlayerFacingUnplantedSoil(void);  bool8 TryToWaterBerryTree(void);  void ClearBerryTrees(void); @@ -38,12 +51,14 @@ u8 GetStageByBerryTreeId(u8);  u8 ItemIdToBerryType(u16 item);  void GetBerryNameByBerryType(u8 berry, u8 *string);  void ResetBerryTreeSparkleFlag(u8 id); -void FieldObjectInteractionGetBerryTreeData(void); +void EventObjectInteractionGetBerryTreeData(void);  void Berry_FadeAndGoToBerryBagMenu(void); -void FieldObjectInteractionPlantBerryTree(void); -void FieldObjectInteractionPickBerryTree(void); -void FieldObjectInteractionRemoveBerryTree(void); +void EventObjectInteractionPlantBerryTree(void); +void EventObjectInteractionPickBerryTree(void); +void EventObjectInteractionRemoveBerryTree(void);  bool8 PlayerHasBerries(void);  void ResetBerryTreeSparkleFlags(void); +void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness); +u8 * DebugOpenBerryInfo(void);  #endif // GUARD_BERRY_H diff --git a/include/berry_blender.h b/include/berry_blender.h new file mode 100644 index 000000000..8aaf934e5 --- /dev/null +++ b/include/berry_blender.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_BLENDER_H +#define GUARD_BERRY_BLENDER_H + +void debug_sub_80524BC(void); + +#endif //GUARD_BERRY_BLENDER_H diff --git a/include/cable_club.h b/include/cable_club.h index 2f509c9fc..2fd447691 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -22,6 +22,7 @@ bool32 sub_8083BF4(u8 linkPlayerIndex);  void sub_8083C50(u8 taskId);  #if DEBUG  void debug_sub_808B838(u8); +bool8 debug_sub_8138CC4(void);  #endif  #endif // GUARD_CABLE_CLUB_H diff --git a/include/choose_party.h b/include/choose_party.h index 853202a89..9aacef27d 100644 --- a/include/choose_party.h +++ b/include/choose_party.h @@ -9,5 +9,8 @@ bool8 SetupLinkMultiBattlePartyMenu(void);  void HandleLinkMultiBattlePartyMenu(u8 taskId);  void HandleDaycarePartyMenu(u8 taskId);  void sub_8123138(u8 taskId); +#if DEBUG +void Debug_CopyLastThreePartyMonsToMultiPartnerParty(void); +#endif  #endif // GUARD_CHOOSE_PARTY_H diff --git a/include/constants/battle_constants.h b/include/constants/battle_constants.h index 49768f33e..65f44d8aa 100644 --- a/include/constants/battle_constants.h +++ b/include/constants/battle_constants.h @@ -1,12 +1,47 @@  #ifndef GUARD_CONSTANTS_BATTLE_CONSTANTS_H  #define GUARD_CONSTANTS_BATTLE_CONSTANTS_H -// Bank sides -#define SIDE_PLAYER     0x0 -#define SIDE_OPPONENT   0x1 - -#define BIT_SIDE        0x1 -#define BIT_MON         0x2 +/* + * A battler may be in one of four positions on the field. The first bit determines + * what side the battler is on, either the player's side or the opponent's side. + * The second bit determines what flank the battler is on, either the left or right. + * Note that the opponent's flanks are drawn corresponding to their perspective, so + * their right mon appears on the left, and their left mon appears on the right. + * The battler ID is usually the same as the position, except in the case of link battles. + * + *   + ------------------------- + + *   |           Opponent's side | + *   |            Right    Left  | + *   |              3       1    | + *   |                           | + *   | Player's side             | + *   |  Left   Right             | + *   |   0       2               | + *   ----------------------------+ + *   |                           | + *   |                           | + *   +---------------------------+ + */ + +#define MAX_BATTLERS_COUNT  4 + +#define B_POSITION_PLAYER_LEFT        0 +#define B_POSITION_OPPONENT_LEFT      1 +#define B_POSITION_PLAYER_RIGHT       2 +#define B_POSITION_OPPONENT_RIGHT     3 + +// These macros can be used with either battler ID or positions to get the partner or the opposite mon +#define BATTLE_OPPOSITE(id) ((id) ^ 1) +#define BATTLE_PARTNER(id) ((id) ^ 2) + +#define B_SIDE_PLAYER     0 +#define B_SIDE_OPPONENT   1 + +#define B_FLANK_LEFT 0 +#define B_FLANK_RIGHT 1 + +#define BIT_SIDE        1 +#define BIT_FLANK       2  #define STATUS_SLEEP            0x7  #define STATUS_POISON           0x8 @@ -88,19 +123,16 @@  #define HITMARKER_FAINTED(bank)         ((gBitTable[bank] << 0x1C))  #define HITMARKER_UNK(bank)             ((0x10000000 << bank)) -#define MOVESTATUS_MISSED             (1 << 0) -#define MOVESTATUS_SUPEREFFECTIVE     (1 << 1) -#define MOVESTATUS_NOTVERYEFFECTIVE   (1 << 2) -#define MOVESTATUS_NOTAFFECTED        (1 << 3) -#define MOVESTATUS_ONEHITKO           (1 << 4) -#define MOVESTATUS_FAILED             (1 << 5) -#define MOVESTATUS_ENDURED            (1 << 6) -#define MOVESTATUS_HUNGON             (1 << 7) - -#define IDENTITY_PLAYER_MON1        0 -#define IDENTITY_OPPONENT_MON1      1 -#define IDENTITY_PLAYER_MON2        2 -#define IDENTITY_OPPONENT_MON2      3 +// Flags describing move's result +#define MOVE_RESULT_MISSED             (1 << 0) +#define MOVE_RESULT_SUPER_EFFECTIVE    (1 << 1) +#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2) +#define MOVE_RESULT_DOESNT_AFFECT_FOE  (1 << 3) +#define MOVE_RESULT_ONE_HIT_KO         (1 << 4) +#define MOVE_RESULT_FAILED             (1 << 5) +#define MOVE_RESULT_FOE_ENDURED        (1 << 6) +#define MOVE_RESULT_FOE_HUNG_ON        (1 << 7) +#define MOVE_RESULT_NO_EFFECT          (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)  #define BATTLE_TYPE_DOUBLE          0x0001  #define BATTLE_TYPE_LINK            0x0002 @@ -206,11 +238,8 @@  #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) -#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) -  #define MAX_TRAINER_ITEMS 4  #define MAX_MON_MOVES 4 -#define MAX_BANKS_BATTLE 4  #define WEATHER_RAIN_TEMPORARY      (1 << 0)  #define WEATHER_RAIN_DOWNPOUR       (1 << 1) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h new file mode 100644 index 000000000..7c236671d --- /dev/null +++ b/include/constants/event_objects.h @@ -0,0 +1,252 @@ +#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H +#define GUARD_CONSTANTS_EVENT_OBJECTS_H + +#define EVENT_OBJ_GFX_BRENDAN_NORMAL 0 +#define EVENT_OBJ_GFX_BRENDAN_MACH_BIKE 1 +#define EVENT_OBJ_GFX_BRENDAN_SURFING 2 +#define EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE 3 +#define EVENT_OBJ_GFX_QUINTY_PLUMP 4 +#define EVENT_OBJ_GFX_LITTLE_BOY_1 5 +#define EVENT_OBJ_GFX_LITTLE_GIRL_1 6 +#define EVENT_OBJ_GFX_BOY_1 7 +#define EVENT_OBJ_GFX_GIRL_1 8 +#define EVENT_OBJ_GFX_BOY_2 9 +#define EVENT_OBJ_GFX_GIRL_2 10 +#define EVENT_OBJ_GFX_LITTLE_BOY_2 11 +#define EVENT_OBJ_GFX_LITTLE_GIRL_2 12 +#define EVENT_OBJ_GFX_BOY_3 13 +#define EVENT_OBJ_GFX_GIRL_3 14 +#define EVENT_OBJ_GFX_BOY_4 15 +#define EVENT_OBJ_GFX_WOMAN_1 16 +#define EVENT_OBJ_GFX_FAT_MAN 17 +#define EVENT_OBJ_GFX_WOMAN_2 18 +#define EVENT_OBJ_GFX_MAN_1 19 +#define EVENT_OBJ_GFX_WOMAN_3 20 +#define EVENT_OBJ_GFX_OLD_MAN_1 21 +#define EVENT_OBJ_GFX_OLD_WOMAN_1 22 +#define EVENT_OBJ_GFX_MAN_2 23 +#define EVENT_OBJ_GFX_WOMAN_4 24 +#define EVENT_OBJ_GFX_MAN_3 25 +#define EVENT_OBJ_GFX_WOMAN_5 26 +#define EVENT_OBJ_GFX_COOK 27 +#define EVENT_OBJ_GFX_WOMAN_6 28 +#define EVENT_OBJ_GFX_OLD_MAN_2 29 +#define EVENT_OBJ_GFX_OLD_WOMAN_2 30 +#define EVENT_OBJ_GFX_CAMPER 31 +#define EVENT_OBJ_GFX_PICNICKER 32 +#define EVENT_OBJ_GFX_MAN_4 33 +#define EVENT_OBJ_GFX_WOMAN_7 34 +#define EVENT_OBJ_GFX_YOUNGSTER 35 +#define EVENT_OBJ_GFX_BUG_CATCHER 36 +#define EVENT_OBJ_GFX_PSYCHIC_M 37 +#define EVENT_OBJ_GFX_SCHOOL_KID_M 38 +#define EVENT_OBJ_GFX_MANIAC 39 +#define EVENT_OBJ_GFX_HEX_MANIAC 40 +#define EVENT_OBJ_GFX_WOMAN_8 41 +#define EVENT_OBJ_GFX_SWIMMER_M 42 +#define EVENT_OBJ_GFX_SWIMMER_F 43 +#define EVENT_OBJ_GFX_BLACK_BELT 44 +#define EVENT_OBJ_GFX_BEAUTY 45 +#define EVENT_OBJ_GFX_SCIENTIST_1 46 +#define EVENT_OBJ_GFX_LASS 47 +#define EVENT_OBJ_GFX_GENTLEMAN 48 +#define EVENT_OBJ_GFX_SAILOR 49 +#define EVENT_OBJ_GFX_FISHERMAN 50 +#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M 51 +#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F 52 +#define EVENT_OBJ_GFX_TUBER_F 53 +#define EVENT_OBJ_GFX_TUBER_M 54 +#define EVENT_OBJ_GFX_HIKER 55 +#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M 56 +#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F 57 +#define EVENT_OBJ_GFX_NURSE 58 +#define EVENT_OBJ_GFX_ITEM_BALL 59 +#define EVENT_OBJ_GFX_BERRY_TREE 60 +#define EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61 +#define EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES 62 +#define EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE 63 +#define EVENT_OBJ_GFX_PROF_BIRCH 64 +#define EVENT_OBJ_GFX_MAN_5 65 +#define EVENT_OBJ_GFX_MAN_6 66 +#define EVENT_OBJ_GFX_REPORTER_M 67 +#define EVENT_OBJ_GFX_REPORTER_F 68 +#define EVENT_OBJ_GFX_BARD 69 +#define EVENT_OBJ_GFX_HIPSTER 70 +#define EVENT_OBJ_GFX_TRADER 71 +#define EVENT_OBJ_GFX_STORYTELLER 72 +#define EVENT_OBJ_GFX_GIDDY 73 +#define EVENT_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1 74 +#define EVENT_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2 75 +#define EVENT_OBJ_GFX_UNUSED_NATU_DOLL 76 +#define EVENT_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77 +#define EVENT_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78 +#define EVENT_OBJ_GFX_UNUSED_WOOPER_DOLL 79 +#define EVENT_OBJ_GFX_UNUSED_PIKACHU_DOLL 80 +#define EVENT_OBJ_GFX_UNUSED_PORYGON2_DOLL 81 +#define EVENT_OBJ_GFX_CUTTABLE_TREE 82 +#define EVENT_OBJ_GFX_MART_EMPLOYEE 83 +#define EVENT_OBJ_GFX_ROOFTOP_SALE_WOMAN 84 +#define EVENT_OBJ_GFX_TEALA 85 +#define EVENT_OBJ_GFX_BREAKABLE_ROCK 86 +#define EVENT_OBJ_GFX_PUSHABLE_BOULDER 87 +#define EVENT_OBJ_GFX_MR_BRINEYS_BOAT 88 +#define EVENT_OBJ_GFX_MAY_NORMAL 89 +#define EVENT_OBJ_GFX_MAY_MACH_BIKE 90 +#define EVENT_OBJ_GFX_MAY_ACRO_BIKE 91 +#define EVENT_OBJ_GFX_MAY_SURFING 92 +#define EVENT_OBJ_GFX_MAY_FIELD_MOVE 93 +#define EVENT_OBJ_GFX_TRUCK 94 +#define EVENT_OBJ_GFX_MACHOKE_CARRYING_BOX 95 +#define EVENT_OBJ_GFX_MACHOKE_FACING_AWAY 96 +#define EVENT_OBJ_GFX_BIRCHS_BAG 97 +#define EVENT_OBJ_GFX_POOCHYENA 98 +#define EVENT_OBJ_GFX_ARTIST 99 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING 103 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104 +#define EVENT_OBJ_GFX_RIVAL_MAY_NORMAL 105 +#define EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106 +#define EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107 +#define EVENT_OBJ_GFX_RIVAL_MAY_SURFING 108 +#define EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109 +#define EVENT_OBJ_GFX_CAMERAMAN 110 +#define EVENT_OBJ_GFX_BRENDAN_UNDERWATER 111 +#define EVENT_OBJ_GFX_MAY_UNDERWATER 112 +#define EVENT_OBJ_GFX_MOVING_BOX 113 +#define EVENT_OBJ_GFX_CABLE_CAR 114 +#define EVENT_OBJ_GFX_SCIENTIST_2 115 +#define EVENT_OBJ_GFX_MAN_7 116 +#define EVENT_OBJ_GFX_AQUA_MEMBER_M 117 +#define EVENT_OBJ_GFX_AQUA_MEMBER_F 118 +#define EVENT_OBJ_GFX_MAGMA_MEMBER_M 119 +#define EVENT_OBJ_GFX_MAGMA_MEMBER_F 120 +#define EVENT_OBJ_GFX_SIDNEY 121 +#define EVENT_OBJ_GFX_PHOEBE 122 +#define EVENT_OBJ_GFX_GLACIA 123 +#define EVENT_OBJ_GFX_DRAKE 124 +#define EVENT_OBJ_GFX_ROXANNE 125 +#define EVENT_OBJ_GFX_BRAWLY 126 +#define EVENT_OBJ_GFX_WATTSON 127 +#define EVENT_OBJ_GFX_FLANNERY 128 +#define EVENT_OBJ_GFX_NORMAN 129 +#define EVENT_OBJ_GFX_WINONA 130 +#define EVENT_OBJ_GFX_LIZA 131 +#define EVENT_OBJ_GFX_TATE 132 +#define EVENT_OBJ_GFX_WALLACE 133 +#define EVENT_OBJ_GFX_STEVEN 134 +#define EVENT_OBJ_GFX_WALLY 135 +#define EVENT_OBJ_GFX_LITTLE_BOY_3 136 +#define EVENT_OBJ_GFX_BRENDAN_FISHING 137 +#define EVENT_OBJ_GFX_MAY_FISHING 138 +#define EVENT_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139 +#define EVENT_OBJ_GFX_SS_TIDAL 140 +#define EVENT_OBJ_GFX_SUBMARINE_SHADOW 141 +#define EVENT_OBJ_GFX_PICHU_DOLL 142 +#define EVENT_OBJ_GFX_PIKACHU_DOLL 143 +#define EVENT_OBJ_GFX_MARILL_DOLL 144 +#define EVENT_OBJ_GFX_TOGEPI_DOLL 145 +#define EVENT_OBJ_GFX_CYNDAQUIL_DOLL 146 +#define EVENT_OBJ_GFX_CHIKORITA_DOLL 147 +#define EVENT_OBJ_GFX_TOTODILE_DOLL 148 +#define EVENT_OBJ_GFX_JIGGLYPUFF_DOLL 149 +#define EVENT_OBJ_GFX_MEOWTH_DOLL 150 +#define EVENT_OBJ_GFX_CLEFAIRY_DOLL 151 +#define EVENT_OBJ_GFX_DITTO_DOLL 152 +#define EVENT_OBJ_GFX_SMOOCHUM_DOLL 153 +#define EVENT_OBJ_GFX_TREECKO_DOLL 154 +#define EVENT_OBJ_GFX_TORCHIC_DOLL 155 +#define EVENT_OBJ_GFX_MUDKIP_DOLL 156 +#define EVENT_OBJ_GFX_DUSKULL_DOLL 157 +#define EVENT_OBJ_GFX_WYNAUT_DOLL 158 +#define EVENT_OBJ_GFX_BALTOY_DOLL 159 +#define EVENT_OBJ_GFX_KECLEON_DOLL 160 +#define EVENT_OBJ_GFX_AZURILL_DOLL 161 +#define EVENT_OBJ_GFX_SKITTY_DOLL 162 +#define EVENT_OBJ_GFX_SWABLU_DOLL 163 +#define EVENT_OBJ_GFX_GULPIN_DOLL 164 +#define EVENT_OBJ_GFX_LOTAD_DOLL 165 +#define EVENT_OBJ_GFX_SEEDOT_DOLL 166 +#define EVENT_OBJ_GFX_PIKA_CUSHION 167 +#define EVENT_OBJ_GFX_ROUND_CUSHION 168 +#define EVENT_OBJ_GFX_KISS_CUSHION 169 +#define EVENT_OBJ_GFX_ZIGZAG_CUSHION 170 +#define EVENT_OBJ_GFX_SPIN_CUSHION 171 +#define EVENT_OBJ_GFX_DIAMOND_CUSHION 172 +#define EVENT_OBJ_GFX_BALL_CUSHION 173 +#define EVENT_OBJ_GFX_GRASS_CUSHION 174 +#define EVENT_OBJ_GFX_FIRE_CUSHION 175 +#define EVENT_OBJ_GFX_WATER_CUSHION 176 +#define EVENT_OBJ_GFX_BIG_SNORLAX_DOLL 177 +#define EVENT_OBJ_GFX_BIG_RHYDON_DOLL 178 +#define EVENT_OBJ_GFX_BIG_LAPRAS_DOLL 179 +#define EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL 180 +#define EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL 181 +#define EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL 182 +#define EVENT_OBJ_GFX_BIG_WAILMER_DOLL 183 +#define EVENT_OBJ_GFX_BIG_REGIROCK_DOLL 184 +#define EVENT_OBJ_GFX_BIG_REGICE_DOLL 185 +#define EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL 186 +#define EVENT_OBJ_GFX_LATIAS 187 +#define EVENT_OBJ_GFX_LATIOS 188 +#define EVENT_OBJ_GFX_BOY_5 189 +#define EVENT_OBJ_GFX_CONTEST_JUDGE 190 +#define EVENT_OBJ_GFX_BRENDAN_WATERING 191 +#define EVENT_OBJ_GFX_MAY_WATERING 192 +#define EVENT_OBJ_GFX_BRENDAN_DECORATING 193 +#define EVENT_OBJ_GFX_MAY_DECORATING 194 +#define EVENT_OBJ_GFX_ARCHIE 195 +#define EVENT_OBJ_GFX_MAXIE 196 +#define EVENT_OBJ_GFX_KYOGRE_1 197 +#define EVENT_OBJ_GFX_GROUDON_1 198 +#define EVENT_OBJ_GFX_FOSSIL 199 +#define EVENT_OBJ_GFX_REGIROCK 200 +#define EVENT_OBJ_GFX_REGICE 201 +#define EVENT_OBJ_GFX_REGISTEEL 202 +#define EVENT_OBJ_GFX_SKITTY 203 +#define EVENT_OBJ_GFX_KECLEON_1 204 +#define EVENT_OBJ_GFX_KYOGRE_2 205 +#define EVENT_OBJ_GFX_GROUDON_2 206 +#define EVENT_OBJ_GFX_RAYQUAZA 207 +#define EVENT_OBJ_GFX_ZIGZAGOON 208 +#define EVENT_OBJ_GFX_PIKACHU 209 +#define EVENT_OBJ_GFX_AZUMARILL 210 +#define EVENT_OBJ_GFX_WINGULL 211 +#define EVENT_OBJ_GFX_KECLEON_2 212 +#define EVENT_OBJ_GFX_TUBER_M_SWIMMING 213 +#define EVENT_OBJ_GFX_AZURILL 214 +#define EVENT_OBJ_GFX_MOM 215 +#define EVENT_OBJ_GFX_LINK_BRENDAN 216 +#define EVENT_OBJ_GFX_LINK_MAY 217 + +// These are dynamic object gfx ids. +// They correspond with the values of the VAR_OBJ_GFX_ID_X vars. +// More info about them in include/constants/vars.h +#define EVENT_OBJ_GFX_VAR_0 240 +#define EVENT_OBJ_GFX_VAR_1 241 +#define EVENT_OBJ_GFX_VAR_2 242 +#define EVENT_OBJ_GFX_VAR_3 243 +#define EVENT_OBJ_GFX_VAR_4 244 +#define EVENT_OBJ_GFX_VAR_5 245 +#define EVENT_OBJ_GFX_VAR_6 246 +#define EVENT_OBJ_GFX_VAR_7 247 +#define EVENT_OBJ_GFX_VAR_8 248 +#define EVENT_OBJ_GFX_VAR_9 249 +#define EVENT_OBJ_GFX_VAR_A 250 +#define EVENT_OBJ_GFX_VAR_B 251 +#define EVENT_OBJ_GFX_VAR_C 252 +#define EVENT_OBJ_GFX_VAR_D 253 +#define EVENT_OBJ_GFX_VAR_E 254 +#define EVENT_OBJ_GFX_VAR_F 255 + +#define SHADOW_SIZE_S 0 +#define SHADOW_SIZE_M 1 +#define SHADOW_SIZE_L 2 +#define SHADOW_SIZE_XL 3 + +#define TRACKS_NONE 0 +#define TRACKS_FOOT 1 +#define TRACKS_BIKE_TIRE 2 + +#endif  // GUARD_CONSTANTS_EVENT_OBJECTS_H diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h new file mode 100644 index 000000000..86fd6718f --- /dev/null +++ b/include/constants/field_effects.h @@ -0,0 +1,69 @@ +#ifndef GUARD_FIELD_EFFECT_CONSTANTS_H +#define GUARD_FIELD_EFFECT_CONSTANTS_H + +#define FLDEFF_EXCLAMATION_MARK_ICON     0 +#define FLDEFF_USE_CUT_ON_GRASS          1 +#define FLDEFF_USE_CUT_ON_TREE           2 +#define FLDEFF_SHADOW                    3 +#define FLDEFF_TALL_GRASS                4 +#define FLDEFF_RIPPLE                    5 +#define FLDEFF_FIELD_MOVE_SHOW_MON       6 +#define FLDEFF_ASH                       7 +#define FLDEFF_SURF_BLOB                 8 +#define FLDEFF_USE_SURF                  9 +#define FLDEFF_DUST                      10 +#define FLDEFF_USE_SECRET_POWER_CAVE     11 +#define FLDEFF_JUMP_TALL_GRASS           12 +#define FLDEFF_SAND_FOOTPRINTS           13 +#define FLDEFF_JUMP_BIG_SPLASH           14 +#define FLDEFF_SPLASH                    15 +#define FLDEFF_JUMP_SMALL_SPLASH         16 +#define FLDEFF_LONG_GRASS                17 +#define FLDEFF_JUMP_LONG_GRASS           18 +#define FLDEFF_UNKNOWN_19                19 +#define FLDEFF_UNKNOWN_20                20 +#define FLDEFF_UNKNOWN_21                21 +#define FLDEFF_UNKNOWN_22                22 +#define FLDEFF_BERRY_TREE_GROWTH_SPARKLE 23 +#define FLDEFF_DEEP_SAND_FOOTPRINTS      24 +#define FLDEFF_POKECENTER_HEAL           25 +#define FLDEFF_USE_SECRET_POWER_TREE     26 +#define FLDEFF_USE_SECRET_POWER_SHRUB    27 +#define FLDEFF_TREE_DISGUISE             28 +#define FLDEFF_MOUNTAIN_DISGUISE         29 +#define FLDEFF_NPCFLY_OUT                30 +#define FLDEFF_USE_FLY                   31 +#define FLDEFF_FLY_IN                    32 +#define FLDEFF_QUESTION_MARK_ICON        33 +#define FLDEFF_FEET_IN_FLOWING_WATER     34 +#define FLDEFF_BIKE_TIRE_TRACKS          35 +#define FLDEFF_SAND_DISGUISE             36 +#define FLDEFF_USE_ROCK_SMASH            37 +#define FLDEFF_USE_DIG                   38 +#define FLDEFF_SAND_PILE                 39 +#define FLDEFF_USE_STRENGTH              40 +#define FLDEFF_SHORT_GRASS               41 +#define FLDEFF_HOT_SPRINGS_WATER         42 +#define FLDEFF_USE_WATERFALL             43 +#define FLDEFF_USE_DIVE                  44 +#define FLDEFF_POKEBALL                  45 +#define FLDEFF_HEART_ICON                46 +#define FLDEFF_NOP_47                    47 +#define FLDEFF_NOP_48                    48 +#define FLDEFF_POP_OUT_OF_ASH            49 +#define FLDEFF_LAVARIDGE_GYM_WARP        50 +#define FLDEFF_SWEET_SCENT               51 +#define FLDEFF_SAND_PILLAR               52 +#define FLDEFF_BUBBLES                   53 +#define FLDEFF_SPARKLE                   54 +#define FLDEFF_SECRET_POWER_CAVE         55 +#define FLDEFF_SECRET_POWER_TREE         56 +#define FLDEFF_SECRET_POWER_SHRUB        57 +#define FLDEFF_CUT_GRASS                 58 +#define FLDEFF_FIELD_MOVE_SHOW_MON_INIT  59 +#define FLDEFF_USE_FLY_ANCIENT_TOMB      60 +#define FLDEFF_SECRET_BASE_PC_TURN_ON    61 +#define FLDEFF_HALL_OF_FAME_RECORD       62 +#define FLDEFF_USE_TELEPORT              63 + +#endif diff --git a/include/constants/flags.h b/include/constants/flags.h index a8067f6ca..a867fd77e 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -158,7 +158,7 @@  #define FLAG_RECEIVED_GREEN_SCARF           0xCB  #define FLAG_RECEIVED_YELLOW_SCARF          0xCC -#define FLAG_ECOUNTERED_LATIAS_OR_LATIOS    0xCE +#define FLAG_ENCOUNTERED_LATIAS_OR_LATIOS    0xCE  #define FLAG_RECEIVED_BASEMENT_KEY          0xD0  #define FLAG_RECEIVED_TM24                  0xD1 @@ -357,7 +357,7 @@  #define FLAG_HIDDEN_ITEM_61      0x2B9 -// map object hide/show flags +// event object hide/show flags  #define FLAG_HIDE_BIRCH_STARTERS_BAG        0x2BC  #define FLAG_HIDE_BIRCH_BATTLE_POOCHYENA    0x2D0 diff --git a/include/constants/map_objects.h b/include/constants/map_objects.h deleted file mode 100644 index 7e5aef744..000000000 --- a/include/constants/map_objects.h +++ /dev/null @@ -1,252 +0,0 @@ -#ifndef GUARD_CONSTANTS_MAP_OBJECTS_H -#define GUARD_CONSTANTS_MAP_OBJECTS_H - -#define MAP_OBJ_GFX_BRENDAN_NORMAL 0 -#define MAP_OBJ_GFX_BRENDAN_MACH_BIKE 1 -#define MAP_OBJ_GFX_BRENDAN_SURFING 2 -#define MAP_OBJ_GFX_BRENDAN_FIELD_MOVE 3 -#define MAP_OBJ_GFX_QUINTY_PLUMP 4 -#define MAP_OBJ_GFX_LITTLE_BOY_1 5 -#define MAP_OBJ_GFX_LITTLE_GIRL_1 6 -#define MAP_OBJ_GFX_BOY_1 7 -#define MAP_OBJ_GFX_GIRL_1 8 -#define MAP_OBJ_GFX_BOY_2 9 -#define MAP_OBJ_GFX_GIRL_2 10 -#define MAP_OBJ_GFX_LITTLE_BOY_2 11 -#define MAP_OBJ_GFX_LITTLE_GIRL_2 12 -#define MAP_OBJ_GFX_BOY_3 13 -#define MAP_OBJ_GFX_GIRL_3 14 -#define MAP_OBJ_GFX_BOY_4 15 -#define MAP_OBJ_GFX_WOMAN_1 16 -#define MAP_OBJ_GFX_FAT_MAN 17 -#define MAP_OBJ_GFX_WOMAN_2 18 -#define MAP_OBJ_GFX_MAN_1 19 -#define MAP_OBJ_GFX_WOMAN_3 20 -#define MAP_OBJ_GFX_OLD_MAN_1 21 -#define MAP_OBJ_GFX_OLD_WOMAN_1 22 -#define MAP_OBJ_GFX_MAN_2 23 -#define MAP_OBJ_GFX_WOMAN_4 24 -#define MAP_OBJ_GFX_MAN_3 25 -#define MAP_OBJ_GFX_WOMAN_5 26 -#define MAP_OBJ_GFX_COOK 27 -#define MAP_OBJ_GFX_WOMAN_6 28 -#define MAP_OBJ_GFX_OLD_MAN_2 29 -#define MAP_OBJ_GFX_OLD_WOMAN_2 30 -#define MAP_OBJ_GFX_CAMPER 31 -#define MAP_OBJ_GFX_PICNICKER 32 -#define MAP_OBJ_GFX_MAN_4 33 -#define MAP_OBJ_GFX_WOMAN_7 34 -#define MAP_OBJ_GFX_YOUNGSTER 35 -#define MAP_OBJ_GFX_BUG_CATCHER 36 -#define MAP_OBJ_GFX_PSYCHIC_M 37 -#define MAP_OBJ_GFX_SCHOOL_KID_M 38 -#define MAP_OBJ_GFX_MANIAC 39 -#define MAP_OBJ_GFX_HEX_MANIAC 40 -#define MAP_OBJ_GFX_WOMAN_8 41 -#define MAP_OBJ_GFX_SWIMMER_M 42 -#define MAP_OBJ_GFX_SWIMMER_F 43 -#define MAP_OBJ_GFX_BLACK_BELT 44 -#define MAP_OBJ_GFX_BEAUTY 45 -#define MAP_OBJ_GFX_SCIENTIST_1 46 -#define MAP_OBJ_GFX_LASS 47 -#define MAP_OBJ_GFX_GENTLEMAN 48 -#define MAP_OBJ_GFX_SAILOR 49 -#define MAP_OBJ_GFX_FISHERMAN 50 -#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_M 51 -#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_F 52 -#define MAP_OBJ_GFX_TUBER_F 53 -#define MAP_OBJ_GFX_TUBER_M 54 -#define MAP_OBJ_GFX_HIKER 55 -#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_M 56 -#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_F 57 -#define MAP_OBJ_GFX_NURSE 58 -#define MAP_OBJ_GFX_ITEM_BALL 59 -#define MAP_OBJ_GFX_BERRY_TREE 60 -#define MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61 -#define MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES 62 -#define MAP_OBJ_GFX_BRENDAN_ACRO_BIKE 63 -#define MAP_OBJ_GFX_PROF_BIRCH 64 -#define MAP_OBJ_GFX_MAN_5 65 -#define MAP_OBJ_GFX_MAN_6 66 -#define MAP_OBJ_GFX_REPORTER_M 67 -#define MAP_OBJ_GFX_REPORTER_F 68 -#define MAP_OBJ_GFX_BARD 69 -#define MAP_OBJ_GFX_HIPSTER 70 -#define MAP_OBJ_GFX_TRADER 71 -#define MAP_OBJ_GFX_STORYTELLER 72 -#define MAP_OBJ_GFX_GIDDY 73 -#define MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1 74 -#define MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2 75 -#define MAP_OBJ_GFX_UNUSED_NATU_DOLL 76 -#define MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77 -#define MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78 -#define MAP_OBJ_GFX_UNUSED_WOOPER_DOLL 79 -#define MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL 80 -#define MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL 81 -#define MAP_OBJ_GFX_CUTTABLE_TREE 82 -#define MAP_OBJ_GFX_MART_EMPLOYEE 83 -#define MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN 84 -#define MAP_OBJ_GFX_TEALA 85 -#define MAP_OBJ_GFX_BREAKABLE_ROCK 86 -#define MAP_OBJ_GFX_PUSHABLE_BOULDER 87 -#define MAP_OBJ_GFX_MR_BRINEYS_BOAT 88 -#define MAP_OBJ_GFX_MAY_NORMAL 89 -#define MAP_OBJ_GFX_MAY_MACH_BIKE 90 -#define MAP_OBJ_GFX_MAY_ACRO_BIKE 91 -#define MAP_OBJ_GFX_MAY_SURFING 92 -#define MAP_OBJ_GFX_MAY_FIELD_MOVE 93 -#define MAP_OBJ_GFX_TRUCK 94 -#define MAP_OBJ_GFX_MACHOKE_CARRYING_BOX 95 -#define MAP_OBJ_GFX_MACHOKE_FACING_AWAY 96 -#define MAP_OBJ_GFX_BIRCHS_BAG 97 -#define MAP_OBJ_GFX_POOCHYENA 98 -#define MAP_OBJ_GFX_ARTIST 99 -#define MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100 -#define MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101 -#define MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102 -#define MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING 103 -#define MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104 -#define MAP_OBJ_GFX_RIVAL_MAY_NORMAL 105 -#define MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106 -#define MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107 -#define MAP_OBJ_GFX_RIVAL_MAY_SURFING 108 -#define MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109 -#define MAP_OBJ_GFX_CAMERAMAN 110 -#define MAP_OBJ_GFX_BRENDAN_UNDERWATER 111 -#define MAP_OBJ_GFX_MAY_UNDERWATER 112 -#define MAP_OBJ_GFX_MOVING_BOX 113 -#define MAP_OBJ_GFX_CABLE_CAR 114 -#define MAP_OBJ_GFX_SCIENTIST_2 115 -#define MAP_OBJ_GFX_MAN_7 116 -#define MAP_OBJ_GFX_AQUA_MEMBER_M 117 -#define MAP_OBJ_GFX_AQUA_MEMBER_F 118 -#define MAP_OBJ_GFX_MAGMA_MEMBER_M 119 -#define MAP_OBJ_GFX_MAGMA_MEMBER_F 120 -#define MAP_OBJ_GFX_SIDNEY 121 -#define MAP_OBJ_GFX_PHOEBE 122 -#define MAP_OBJ_GFX_GLACIA 123 -#define MAP_OBJ_GFX_DRAKE 124 -#define MAP_OBJ_GFX_ROXANNE 125 -#define MAP_OBJ_GFX_BRAWLY 126 -#define MAP_OBJ_GFX_WATTSON 127 -#define MAP_OBJ_GFX_FLANNERY 128 -#define MAP_OBJ_GFX_NORMAN 129 -#define MAP_OBJ_GFX_WINONA 130 -#define MAP_OBJ_GFX_LIZA 131 -#define MAP_OBJ_GFX_TATE 132 -#define MAP_OBJ_GFX_WALLACE 133 -#define MAP_OBJ_GFX_STEVEN 134 -#define MAP_OBJ_GFX_WALLY 135 -#define MAP_OBJ_GFX_LITTLE_BOY_3 136 -#define MAP_OBJ_GFX_BRENDAN_FISHING 137 -#define MAP_OBJ_GFX_MAY_FISHING 138 -#define MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139 -#define MAP_OBJ_GFX_SS_TIDAL 140 -#define MAP_OBJ_GFX_SUBMARINE_SHADOW 141 -#define MAP_OBJ_GFX_PICHU_DOLL 142 -#define MAP_OBJ_GFX_PIKACHU_DOLL 143 -#define MAP_OBJ_GFX_MARILL_DOLL 144 -#define MAP_OBJ_GFX_TOGEPI_DOLL 145 -#define MAP_OBJ_GFX_CYNDAQUIL_DOLL 146 -#define MAP_OBJ_GFX_CHIKORITA_DOLL 147 -#define MAP_OBJ_GFX_TOTODILE_DOLL 148 -#define MAP_OBJ_GFX_JIGGLYPUFF_DOLL 149 -#define MAP_OBJ_GFX_MEOWTH_DOLL 150 -#define MAP_OBJ_GFX_CLEFAIRY_DOLL 151 -#define MAP_OBJ_GFX_DITTO_DOLL 152 -#define MAP_OBJ_GFX_SMOOCHUM_DOLL 153 -#define MAP_OBJ_GFX_TREECKO_DOLL 154 -#define MAP_OBJ_GFX_TORCHIC_DOLL 155 -#define MAP_OBJ_GFX_MUDKIP_DOLL 156 -#define MAP_OBJ_GFX_DUSKULL_DOLL 157 -#define MAP_OBJ_GFX_WYNAUT_DOLL 158 -#define MAP_OBJ_GFX_BALTOY_DOLL 159 -#define MAP_OBJ_GFX_KECLEON_DOLL 160 -#define MAP_OBJ_GFX_AZURILL_DOLL 161 -#define MAP_OBJ_GFX_SKITTY_DOLL 162 -#define MAP_OBJ_GFX_SWABLU_DOLL 163 -#define MAP_OBJ_GFX_GULPIN_DOLL 164 -#define MAP_OBJ_GFX_LOTAD_DOLL 165 -#define MAP_OBJ_GFX_SEEDOT_DOLL 166 -#define MAP_OBJ_GFX_PIKA_CUSHION 167 -#define MAP_OBJ_GFX_ROUND_CUSHION 168 -#define MAP_OBJ_GFX_KISS_CUSHION 169 -#define MAP_OBJ_GFX_ZIGZAG_CUSHION 170 -#define MAP_OBJ_GFX_SPIN_CUSHION 171 -#define MAP_OBJ_GFX_DIAMOND_CUSHION 172 -#define MAP_OBJ_GFX_BALL_CUSHION 173 -#define MAP_OBJ_GFX_GRASS_CUSHION 174 -#define MAP_OBJ_GFX_FIRE_CUSHION 175 -#define MAP_OBJ_GFX_WATER_CUSHION 176 -#define MAP_OBJ_GFX_BIG_SNORLAX_DOLL 177 -#define MAP_OBJ_GFX_BIG_RHYDON_DOLL 178 -#define MAP_OBJ_GFX_BIG_LAPRAS_DOLL 179 -#define MAP_OBJ_GFX_BIG_VENUSAUR_DOLL 180 -#define MAP_OBJ_GFX_BIG_CHARIZARD_DOLL 181 -#define MAP_OBJ_GFX_BIG_BLASTOISE_DOLL 182 -#define MAP_OBJ_GFX_BIG_WAILMER_DOLL 183 -#define MAP_OBJ_GFX_BIG_REGIROCK_DOLL 184 -#define MAP_OBJ_GFX_BIG_REGICE_DOLL 185 -#define MAP_OBJ_GFX_BIG_REGISTEEL_DOLL 186 -#define MAP_OBJ_GFX_LATIAS 187 -#define MAP_OBJ_GFX_LATIOS 188 -#define MAP_OBJ_GFX_BOY_5 189 -#define MAP_OBJ_GFX_CONTEST_JUDGE 190 -#define MAP_OBJ_GFX_BRENDAN_WATERING 191 -#define MAP_OBJ_GFX_MAY_WATERING 192 -#define MAP_OBJ_GFX_BRENDAN_DECORATING 193 -#define MAP_OBJ_GFX_MAY_DECORATING 194 -#define MAP_OBJ_GFX_ARCHIE 195 -#define MAP_OBJ_GFX_MAXIE 196 -#define MAP_OBJ_GFX_KYOGRE_1 197 -#define MAP_OBJ_GFX_GROUDON_1 198 -#define MAP_OBJ_GFX_FOSSIL 199 -#define MAP_OBJ_GFX_REGIROCK 200 -#define MAP_OBJ_GFX_REGICE 201 -#define MAP_OBJ_GFX_REGISTEEL 202 -#define MAP_OBJ_GFX_SKITTY 203 -#define MAP_OBJ_GFX_KECLEON_1 204 -#define MAP_OBJ_GFX_KYOGRE_2 205 -#define MAP_OBJ_GFX_GROUDON_2 206 -#define MAP_OBJ_GFX_RAYQUAZA 207 -#define MAP_OBJ_GFX_ZIGZAGOON 208 -#define MAP_OBJ_GFX_PIKACHU 209 -#define MAP_OBJ_GFX_AZUMARILL 210 -#define MAP_OBJ_GFX_WINGULL 211 -#define MAP_OBJ_GFX_KECLEON_2 212 -#define MAP_OBJ_GFX_TUBER_M_SWIMMING 213 -#define MAP_OBJ_GFX_AZURILL 214 -#define MAP_OBJ_GFX_MOM 215 -#define MAP_OBJ_GFX_LINK_BRENDAN 216 -#define MAP_OBJ_GFX_LINK_MAY 217 - -// These are dynamic object gfx ids. -// They correspond with the values of the VAR_OBJ_GFX_ID_X vars. -// More info about them in include/constants/vars.h -#define MAP_OBJ_GFX_VAR_0 240 -#define MAP_OBJ_GFX_VAR_1 241 -#define MAP_OBJ_GFX_VAR_2 242 -#define MAP_OBJ_GFX_VAR_3 243 -#define MAP_OBJ_GFX_VAR_4 244 -#define MAP_OBJ_GFX_VAR_5 245 -#define MAP_OBJ_GFX_VAR_6 246 -#define MAP_OBJ_GFX_VAR_7 247 -#define MAP_OBJ_GFX_VAR_8 248 -#define MAP_OBJ_GFX_VAR_9 249 -#define MAP_OBJ_GFX_VAR_A 250 -#define MAP_OBJ_GFX_VAR_B 251 -#define MAP_OBJ_GFX_VAR_C 252 -#define MAP_OBJ_GFX_VAR_D 253 -#define MAP_OBJ_GFX_VAR_E 254 -#define MAP_OBJ_GFX_VAR_F 255 - -#define SHADOW_SIZE_S 0 -#define SHADOW_SIZE_M 1 -#define SHADOW_SIZE_L 2 -#define SHADOW_SIZE_XL 3 - -#define TRACKS_NONE 0 -#define TRACKS_FOOT 1 -#define TRACKS_BIKE_TIRE 2 - -#endif  // GUARD_CONSTANTS_MAP_OBJECTS_H diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h new file mode 100644 index 000000000..a2f21d031 --- /dev/null +++ b/include/constants/metatile_behaviors.h @@ -0,0 +1,245 @@ +#ifndef GUARD_METATILE_BEHAVIORS +#define GUARD_METATILE_BEHAVIORS + +#define MB_NORMAL 0x00 +#define MB_SECRET_BASE_WALL 0x01 +#define MB_TALL_GRASS 0x02 +#define MB_LONG_GRASS 0x03 +#define MB_UNUSED_04 0x04 +#define MB_UNUSED_05 0x05 +#define MB_UNUSED_DEEP_SAND 0x06 +#define MB_SHORT_GRASS 0x07 +#define MB_UNUSED_CAVE 0x08 +#define MB_LONG_GRASS_SOUTH_EDGE 0x09 +#define MB_NO_RUNNING 0x0A +#define MB_INDOOR_ENCOUNTER 0x0B +#define MB_MOUNTAIN_TOP 0x0C +#define MB_SECRET_BASE_GLITTER_MATTTLE_PYRAMID_WARP 0x0D +#define MB_MOSSDEEP_GYM_WARP 0x0E +#define MB_MT_PYRE_HOLE 0x0F +#define MB_POND_WATER 0x10 +#define MB_SEMI_DEEP_WATER 0x11 +#define MB_UNUSED_DEEP_WATER 0x12 +#define MB_WATERFALL 0x13 +#define MB_SOOTOPOLIS_DEEP_WATER 0x14 +#define MB_OCEAN_WATER 0x15 +#define MB_PUDDLE 0x16 +#define MB_SHALLOW_WATER 0x17 +#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER 0x18 +#define MB_NO_SURFACING 0x19 +#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2 0x1A +#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B +#define MB_SHOAL_CAVE_ENTRANCE 0x1C +#define MB_UNUSED_1D 0x1D +#define MB_UNUSED_1E 0x1E +#define MB_UNUSED_1F 0x1F +#define MB_ICE 0x20 +#define MB_SAND 0x21 +#define MB_SEAWEED 0x22 +#define MB_UNUSED_23 0x23 +#define MB_ASHGRASS 0x24 +#define MB_FOOTPRINTS 0x25 +#define MB_THIN_ICE 0x26 +#define MB_CRACKED_ICE 0x27 +#define MB_HOT_SPRINGS 0x28 +#define MB_LAVARIDGE_GYM_B1F_WARP 0x29 +#define MB_SEAWEED_NO_SURFACING 0x2A +#define MB_REFLECTION_UNDER_BRIDGE 0x2B +#define MB_UNUSED_2C 0x2C +#define MB_UNUSED_2D 0x2D +#define MB_UNUSED_2E 0x2E +#define MB_UNUSED_2F 0x2F +#define MB_IMPASSABLE_EAST 0x30 +#define MB_IMPASSABLE_WEST 0x31 +#define MB_IMPASSABLE_NORTH 0x32 +#define MB_IMPASSABLE_SOUTH 0x33 +#define MB_IMPASSABLE_NORTHEAST 0x34 +#define MB_IMPASSABLE_NORTHWEST 0x35 +#define MB_IMPASSABLE_SOUTHEAST 0x36 +#define MB_IMPASSABLE_SOUTHWEST 0x37 +#define MB_JUMP_EAST 0x38 +#define MB_JUMP_WEST 0x39 +#define MB_JUMP_NORTH 0x3A +#define MB_JUMP_SOUTH 0x3B +#define MB_JUMP_NORTHEAST 0x3C +#define MB_JUMP_NORTHWEST 0x3D +#define MB_JUMP_SOUTHEAST 0x3E +#define MB_JUMP_SOUTHWEST 0x3F +#define MB_WALK_EAST 0x40 +#define MB_WALK_WEST 0x41 +#define MB_WALK_NORTH 0x42 +#define MB_WALK_SOUTH 0x43 +#define MB_SLIDE_EAST 0x44 +#define MB_SLIDE_WEST 0x45 +#define MB_SLIDE_NORTH 0x46 +#define MB_SLIDE_SOUTH 0x47 +#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 +#define MB_UNUSED_49 0x49 +#define MB_UNUSED_4A 0x4A +#define MB_UNUSED_4B 0x4B +#define MB_UNUSED_4C 0x4C +#define MB_UNUSED_4D 0x4D +#define MB_UNUSED_4E 0x4E +#define MB_UNUSED_4F 0x4F +#define MB_UNUSED_EASTWARD_CURRENT 0x50 +#define MB_WESTWARD_CURRENT 0x51 +#define MB_NORTHWARD_CURRENT 0x52 +#define MB_SOUTHWARD_CURRENT 0x53 +#define MB_UNUSED_54 0x54 +#define MB_UNUSED_55 0x55 +#define MB_UNUSED_56 0x56 +#define MB_UNUSED_57 0x57 +#define MB_UNUSED_58 0x58 +#define MB_UNUSED_59 0x59 +#define MB_UNUSED_5A 0x5A +#define MB_UNUSED_5B 0x5B +#define MB_UNUSED_5C 0x5C +#define MB_UNUSED_5D 0x5D +#define MB_UNUSED_5E 0x5E +#define MB_UNUSED_5F 0x5F +#define MB_NON_ANIMATED_DOOR 0x60 +#define MB_LADDER 0x61 +#define MB_UNUSED_EAST_ARROW_WARP 0x62 +#define MB_WEST_ARROW_WARP 0x63 +#define MB_NORTH_ARROW_WARP 0x64 +#define MB_SOUTH_ARROW_WARP 0x65 +#define MB_CRACKED_FLOOR_HOLE 0x66 +#define MB_AQUA_HIDEOUT_WARP 0x67 +#define MB_LAVARIDGE_GYM_1F_WARP 0x68 +#define MB_ANIMATED_DOOR 0x69 +#define MB_UP_ESCALATOR 0x6A +#define MB_DOWN_ESCALATOR 0x6B +#define MB_WATER_DOOR 0x6C +#define MB_WATER_SOUTH_ARROW_WARP 0x6D +#define MB_UNUSED_DEEP_SOUTH_WARP 0x6E +#define MB_UNUSED_6F 0x6F +#define MB_WARP_OR_BRIDGE 0x70 +#define MB_UNUSED_71 0x71 +#define MB_ROUTE120_NORTH_BRIDGE_1 0x72 +#define MB_ROUTE120_NORTH_BRIDGE_2 0x73 +#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 +#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 +#define MB_FORTREE_BRIDGE 0x78 +#define MB_UNUSED_79 0x79 +#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A +#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B +#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C +#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D +#define MB_UNUSED_7E 0x7E +#define MB_ROUTE110_BRIDGE 0x7F +#define MB_COUNTER 0x80 +#define MB_UNUSED_81 0x81 +#define MB_UNUSED_82 0x82 +#define MB_PC 0x83 +#define MB_LINK_BATTLE_RECORDS 0x84 +#define MB_REGION_MAP 0x85 +#define MB_TELEVISION 0x86 +#define MB_POKEBLOCK_FEEDER 0x87 +#define MB_UNUSED_88 0x88 +#define MB_SLOT_MACHINE 0x89 +#define MB_ROULETTE 0x8A +#define MB_CLOSED_SOOTOPOLIS_DOOR 0x8B +#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C +#define MB_PETALBURG_GYM_DOOR 0x8D +#define MB_RUNNING_SHOES_MANUAL 0x8E +#define MB_QUESTIONNAIRE 0x8F +#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90 +#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95 +#define MB_SECRET_BASE_SPOT_TREE_1 0x96 +#define MB_SECRET_BASE_SPOT_TREE_1_OPEN 0x97 +#define MB_SECRET_BASE_SPOT_SHRUB 0x98 +#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99 +#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A +#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B +#define MB_SECRET_BASE_SPOT_TREE_2 0x9C +#define MB_SECRET_BASE_SPOT_TREE_2_OPEN 0x9D +#define MB_UNUSED_9E 0x9E +#define MB_UNUSED_9F 0x9F +#define MB_BERRY_TREE_SOIL 0xA0 +#define MB_UNUSED_A1 0xA1 +#define MB_UNUSED_A2 0xA2 +#define MB_UNUSED_A3 0xA3 +#define MB_UNUSED_A4 0xA4 +#define MB_UNUSED_A5 0xA5 +#define MB_UNUSED_A6 0xA6 +#define MB_UNUSED_A7 0xA7 +#define MB_UNUSED_A8 0xA8 +#define MB_UNUSED_A9 0xA9 +#define MB_UNUSED_AA 0xAA +#define MB_UNUSED_AB 0xAB +#define MB_UNUSED_AC 0xAC +#define MB_UNUSED_AD 0xAD +#define MB_UNUSED_AE 0xAE +#define MB_UNUSED_AF 0xAF +#define MB_SECRET_BASE_PC 0xB0 +#define MB_RECORD_MIXING_SECRET_BASE_PC 0xB1 +#define MB_SECRET_BASE_UNUSED 0xB2 +#define MB_BLOCK_DECORATION 0xB3 +#define MB_SECRET_BASE_DECORATION 0xB4 +#define MB_SECRET_BASE_LARGE_MAT_EDGE 0xB5 +#define MB_UNUSED_B6 0xB6 +#define MB_SECRET_BASE_NORTH_WALL 0xB7 +#define MB_SECRET_BASE_BALLOON 0xB8 +#define MB_SECRET_BASE_IMPASSABLE 0xB9 +#define MB_SECRET_BASE_GLITTER_MAT 0xBA +#define MB_SECRET_BASE_JUMP_MAT 0xBB +#define MB_SECRET_BASE_SPIN_MAT 0xBC +#define MB_SECRET_BASE_MUSIC_NOTE_MAT 0xBD +#define MB_SECRET_BASE_BREAKABLE_DOOR 0xBE +#define MB_SECRET_BASE_SAND_ORNAMENT 0xBF +#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0 +#define MB_IMPASSABLE_WEST_AND_EAST 0xC1 +#define MB_SECRET_BASE_HOLE 0xC2 +#define MB_LARGE_MAT_CENTER 0xC3 +#define MB_SECRET_BASE_SHIELD_OR_TOY_TV 0xC4 +#define MB_PLAYER_ROOM_PC_ON 0xC5 +#define MB_UNUSED_C6 0xC6 +#define MB_UNUSED_C7 0xC7 +#define MB_UNUSED_C8 0xC8 +#define MB_UNUSED_C9 0xC9 +#define MB_UNUSED_CA 0xCA +#define MB_UNUSED_CB 0xCB +#define MB_UNUSED_CC 0xCC +#define MB_UNUSED_CD 0xCD +#define MB_UNUSED_CE 0xCE +#define MB_UNUSED_CF 0xCF +#define MB_MUDDY_SLOPE 0xD0 +#define MB_BUMPY_SLOPE 0xD1 +#define MB_CRACKED_FLOOR 0xD2 +#define MB_ISOLATED_VERTICAL_RAIL 0xD3 +#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4 +#define MB_VERTICAL_RAIL 0xD5 +#define MB_HORIZONTAL_RAIL 0xD6 +#define MB_UNUSED_D7 0xD7 +#define MB_UNUSED_D8 0xD8 +#define MB_UNUSED_D9 0xD9 +#define MB_UNUSED_DA 0xDA +#define MB_UNUSED_DB 0xDB +#define MB_UNUSED_DC 0xDC +#define MB_UNUSED_DD 0xDD +#define MB_UNUSED_DE 0xDE +#define MB_UNUSED_DF 0xDF +#define MB_PICTURE_BOOK_SHELF 0xE0 +#define MB_BOOKSHELF 0xE1 +#define MB_POKEMON_CENTER_BOOKSHELF 0xE2 +#define MB_VASE 0xE3 +#define MB_TRASH_CAN 0xE4 +#define MB_SHOP_SHELF 0xE5 +#define MB_BLUEPRINT 0xE6 +#define MB_UNUSED_E7 0xE7 +#define MB_UNUSED_E8 0xE8 +#define MB_UNUSED_E9 0xE9 +#define MB_UNUSED_EA 0xEA +#define MB_UNUSED_EB 0xEB +#define MB_UNUSED_EC 0xEC +#define MB_UNUSED_ED 0xED +#define MB_UNUSED_EE 0xEE +#define MB_UNUSED_EF 0xEF + +#endif // GUARD_METATILE_BEHAVIORS diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h new file mode 100644 index 000000000..38ca06e1b --- /dev/null +++ b/include/constants/region_map_sections.h @@ -0,0 +1,97 @@ +#ifndef GUARD_REGIONMAPSEC_H +#define GUARD_REGIONMAPSEC_H + +enum +{ +    MAPSEC_LITTLEROOT_TOWN,           // 0x00 +    MAPSEC_OLDALE_TOWN,               // 0x01 +    MAPSEC_DEWFORD_TOWN,              // 0x02 +    MAPSEC_LAVARIDGE_TOWN,            // 0x03 +    MAPSEC_FALLARBOR_TOWN,            // 0x04 +    MAPSEC_VERDANTURF_TOWN,           // 0x05 +    MAPSEC_PACIFIDLOG_TOWN,           // 0x06 +    MAPSEC_PETALBURG_CITY,            // 0x07 +    MAPSEC_SLATEPORT_CITY,            // 0x08 +    MAPSEC_MAUVILLE_CITY,             // 0x09 +    MAPSEC_RUSTBORO_CITY,             // 0x0A +    MAPSEC_FORTREE_CITY,              // 0x0B +    MAPSEC_LILYCOVE_CITY,             // 0x0C +    MAPSEC_MOSSDEEP_CITY,             // 0x0D +    MAPSEC_SOOTOPOLIS_CITY,           // 0x0E +    MAPSEC_EVER_GRANDE_CITY,          // 0x0F +    MAPSEC_ROUTE_101,                 // 0x10 +    MAPSEC_ROUTE_102,                 // 0x11 +    MAPSEC_ROUTE_103,                 // 0x12 +    MAPSEC_ROUTE_104,                 // 0x13 +    MAPSEC_ROUTE_105,                 // 0x14 +    MAPSEC_ROUTE_106,                 // 0x15 +    MAPSEC_ROUTE_107,                 // 0x16 +    MAPSEC_ROUTE_108,                 // 0x17 +    MAPSEC_ROUTE_109,                 // 0x18 +    MAPSEC_ROUTE_110,                 // 0x19 +    MAPSEC_ROUTE_111,                 // 0x1A +    MAPSEC_ROUTE_112,                 // 0x1B +    MAPSEC_ROUTE_113,                 // 0x1C +    MAPSEC_ROUTE_114,                 // 0x1D +    MAPSEC_ROUTE_115,                 // 0x1E +    MAPSEC_ROUTE_116,                 // 0x1F +    MAPSEC_ROUTE_117,                 // 0x20 +    MAPSEC_ROUTE_118,                 // 0x21 +    MAPSEC_ROUTE_119,                 // 0x22 +    MAPSEC_ROUTE_120,                 // 0x23 +    MAPSEC_ROUTE_121,                 // 0x24 +    MAPSEC_ROUTE_122,                 // 0x25 +    MAPSEC_ROUTE_123,                 // 0x26 +    MAPSEC_ROUTE_124,                 // 0x27 +    MAPSEC_ROUTE_125,                 // 0x28 +    MAPSEC_ROUTE_126,                 // 0x29 +    MAPSEC_ROUTE_127,                 // 0x2A +    MAPSEC_ROUTE_128,                 // 0x2B +    MAPSEC_ROUTE_129,                 // 0x2C +    MAPSEC_ROUTE_130,                 // 0x2D +    MAPSEC_ROUTE_131,                 // 0x2E +    MAPSEC_ROUTE_132,                 // 0x2F +    MAPSEC_ROUTE_133,                 // 0x30 +    MAPSEC_ROUTE_134,                 // 0x31 +    MAPSEC_UNDERWATER_124,            // 0x32 +    MAPSEC_UNDERWATER_125,            // 0x33 +    MAPSEC_UNDERWATER_126,            // 0x34 +    MAPSEC_UNDERWATER_127,            // 0x35 +    MAPSEC_UNDERWATER_SOOTOPOLIS,     // 0x36 +    MAPSEC_GRANITE_CAVE,              // 0x37 +    MAPSEC_MT_CHIMNEY,                // 0x38 +    MAPSEC_SAFARI_ZONE,               // 0x39 +    MAPSEC_BATTLE_TOWER,              // 0x3A +    MAPSEC_PETALBURG_WOODS,           // 0x3B +    MAPSEC_RUSTURF_TUNNEL,            // 0x3C +    MAPSEC_ABANDONED_SHIP,            // 0x3D +    MAPSEC_NEW_MAUVILLE,              // 0x3E +    MAPSEC_METEOR_FALLS,              // 0x3F +    MAPSEC_METEOR_FALLS_2,            // 0x40 +    MAPSEC_MT_PYRE,                   // 0x41 +    MAPSEC_EVIL_TEAM_HIDEOUT,         // 0x42 +    MAPSEC_SHOAL_CAVE,                // 0x43 +    MAPSEC_SEAFLOOR_CAVERN,           // 0x44 +    MAPSEC_UNDERWATER_128,            // 0x45 +    MAPSEC_VICTORY_ROAD,              // 0x46 +    MAPSEC_MIRAGE_ISLAND,             // 0x47 +    MAPSEC_CAVE_OF_ORIGIN,            // 0x48 +    MAPSEC_SOUTHERN_ISLAND,           // 0x49 +    MAPSEC_FIERY_PATH,                // 0x4A +    MAPSEC_FIERY_PATH_2,              // 0x4B +    MAPSEC_JAGGED_PASS,               // 0x4C +    MAPSEC_JAGGED_PASS_2,             // 0x4D +    MAPSEC_SEALED_CHAMBER,            // 0x4E +    MAPSEC_UNDERWATER_SEALED_CHAMBER, // 0x4F +    MAPSEC_SCORCHED_SLAB,             // 0x50 +    MAPSEC_ISLAND_CAVE,               // 0x51 +    MAPSEC_DESERT_RUINS,              // 0x52 +    MAPSEC_ANCIENT_TOMB,              // 0x53 +    MAPSEC_INSIDE_OF_TRUCK,           // 0x54 +    MAPSEC_SKY_PILLAR,                // 0x55 +    MAPSEC_SECRET_BASE,               // 0x56 +    MAPSEC_DYNAMIC,                   // 0x57 +    MAPSEC_NOTHING                    // 0x58 +}; + +#endif // GUARD_REGIONMAPSEC_H diff --git a/include/constants/songs.h b/include/constants/songs.h index 920873a7c..45e3d335a 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -249,125 +249,125 @@  #define SE_W287B 245            // Stat Decreased  #define SE_W114 246             // Haze  #define SE_W063B 247            // Hyper Beam 2 -#define BGM_STOP 349 -#define BGM_TETSUJI 350         // Littleroot Town Test 'TETSUJI' -#define BGM_FIELD13 351         // GSC - Route 38 -#define BGM_KACHI22 352         // Wild Pokémon Defeated -#define BGM_KACHI2 353          // Wild Pokémon Defeated with Intro -#define BGM_KACHI3 354          // Gym Leader Defeated -#define BGM_KACHI5 355          // Victory! Elite Four -#define BGM_PCC 356             // Crystal - Pokémon Communication Center -#define BGM_NIBI 357            // GSC - Viridian/Saffron/Pewter/etc -#define BGM_SUIKUN 358          // Crystal - Battle! Legendary Beasts -#define BGM_DOORO1 359          // Route 101 -#define BGM_DOORO_X1 360        // Route 110 -#define BGM_DOORO_X3 361        // Route 120 -#define BGM_MACHI_S2 362        // Petalburg City -#define BGM_MACHI_S4 363        // Oldale Town -#define BGM_GIM 364             // Gym -#define BGM_NAMINORI 365        // Surfing -#define BGM_DAN01 366           // Caves and Darkness -#define BGM_FANFA1 367          // Level Up! -#define BGM_ME_ASA 368          // Pokémon Healed -#define BGM_ME_BACHI 369        // Obtained a Badge! -#define BGM_FANFA4 370          // Obtained an Item! -#define BGM_FANFA5 371          // Your Pokémon Just Evolved! -#define BGM_ME_WAZA 372         // Obtained a TM/HM! -#define BGM_BIJYUTU 373         // Lilycove Musseum -#define BGM_DOORO_X4 374        // Route 122/Intro -#define BGM_FUNE_KAN 375        // Slateport Museum -#define BGM_ME_SHINKA 376       // Evolution Intro -#define BGM_SHINKA 377          // Evolution -#define BGM_ME_WASURE 378       // Move Deleted -#define BGM_SYOUJOEYE 379       // Encounter! Tuber -#define BGM_BOYEYE 380          // Encounter! Boy -#define BGM_DAN02 381           // Abandoned Ship -#define BGM_MACHI_S3 382        // Fortree City -#define BGM_ODAMAKI 383         // Professor Birch's Lab -#define BGM_B_TOWER 384         // Battle Tower (RS) -#define BGM_SWIMEYE 385         // Encounter! Swimmer -#define BGM_DAN03 386           // Meteor Falls -#define BGM_ME_KINOMI 387       // Obtained a Berry! -#define BGM_ME_TAMA 388         // Awakening the Super-Ancient Pokémon -#define BGM_ME_B_BIG 389        // Slots Jackpot! -#define BGM_ME_B_SMALL 390      // Slots Victory! -#define BGM_ME_ZANNEN 391       // Too bad! -#define BGM_BD_TIME 392         // Roulette! -#define BGM_TEST1 393           // Contest Test 1 -#define BGM_TEST2 394           // Contest Test 2 -#define BGM_TEST3 395           // Contest Test 3 -#define BGM_TEST4 396           // Contest Test 4 -#define BGM_TEST 397            // Encounter! Gentleman (Test?) -#define BGM_GOMACHI0 398        // Verdanturf Town -#define BGM_GOTOWN 399          // Rustboro City -#define BGM_POKECEN 400         // Pokémon Center -#define BGM_NEXTROAD 401        // Route 104 -#define BGM_GRANROAD 402        // Route 119 -#define BGM_CYCLING 403         // Cycling -#define BGM_FRIENDLY 404        // Pokémart -#define BGM_MISHIRO 405         // Littleroot Town -#define BGM_TOZAN 406           // Sky Pillar -#define BGM_GIRLEYE 407         // Encounter! Girl -#define BGM_MINAMO 408          // Lilycove City -#define BGM_ASHROAD 409         // Route 111 -#define BGM_EVENT0 410          // Help me! -#define BGM_DEEPDEEP 411        // Underwater -#define BGM_KACHI1 412          // Victory! Trainer -#define BGM_TITLE3 413          // Title Screen -#define BGM_DEMO1 414           // Opening Movie -#define BGM_GIRL_SUP 415        // Encounter! May -#define BGM_HAGESHII 416        // Encounter! Biker -#define BGM_KAKKOII 417         // Encounter! Electric Trainer -#define BGM_KAZANBAI 418        // Route 113 -#define BGM_AQA_0 419           // Encounter! Team Aqua -#define BGM_TSURETEK 420        // Follow Me! -#define BGM_BOY_SUP 421         // Encounter! Brendan -#define BGM_RAINBOW 422         // Ever Grande City -#define BGM_AYASII 423          // Encounter! Psychic -#define BGM_KACHI4 424          // Victory! Aqua/Magma Grunt -#define BGM_ROPEWAY 425         // Cable Car -#define BGM_CASINO 426          // Game Corner -#define BGM_HIGHTOWN 427        // Dewford Town -#define BGM_SAFARI 428          // Safari Zone -#define BGM_C_ROAD 429          // Victory Toad -#define BGM_AJITO 430           // Aqua/Magma Hideout -#define BGM_M_BOAT 431          // Sailing -#define BGM_M_DUNGON 432        // Mt. Pyre (Inside) -#define BGM_FINECITY 433        // Slateport City -#define BGM_MACHUPI 434         // Mt. Pyre (Outside) -#define BGM_P_SCHOOL 435        // Pokémon Trainer's School -#define BGM_DENDOU 436          // Hall of Fame -#define BGM_TONEKUSA 437        // Lavaridge Town -#define BGM_MABOROSI 438        // Sealed Chamber -#define BGM_CON_FAN 439         // You are the Champion! -#define BGM_CONTEST0 440        // Pokémon Contest -#define BGM_MGM0 441            // Encounter! Team Magma -#define BGM_T_BATTLE 442        // Opening Battle -#define BGM_OOAME 443           // The Flood -#define BGM_HIDERI 444          // The Drought -#define BGM_RUNECITY 445        // Sootopolis City -#define BGM_CON_K 446           // Berry Blending Results -#define BGM_EIKOU_R 447         // Hall of Fame -#define BGM_KARAKURI 448        // Trick House -#define BGM_HUTAGO 449          // Encounter! Kid -#define BGM_SITENNOU 450        // Encounter! Elite Four -#define BGM_YAMA_EYE 451        // Encounter! Hiker -#define BGM_CONLOBBY 452        // Contest Lobby -#define BGM_INTER_V 453         // Encounter! Gabby and Ty -#define BGM_DAIGO 454           // Encounter! Wallace -#define BGM_THANKFOR 455        // Credits -#define BGM_END 456             // The End -#define BGM_BATTLE27 457        // Battle! Wild Pokémon -#define BGM_BATTLE31 458        // Battle! Team Aqua/Magma -#define BGM_BATTLE20 459        // Battle! Trainer -#define BGM_BATTLE32 460        // Battle! Gym Leader -#define BGM_BATTLE33 461        // Battle! Champion -#define BGM_BATTLE36 462        // Battle! Regi Trio -#define BGM_BATTLE34 463        // Battle! Legendary Pokémon -#define BGM_BATTLE35 464        // Battle! Rival -#define BGM_BATTLE38 465        // Battle! Elite Four -#define BGM_BATTLE30 466        // Battle! Archie/Maxie +#define MUS_STOP 349 +#define MUS_TETSUJI 350         // Littleroot Town Test 'TETSUJI' +#define MUS_FIELD13 351         // GSC - Route 38 +#define MUS_KACHI22 352         // Wild Pokémon Defeated +#define MUS_KACHI2 353          // Wild Pokémon Defeated with Intro +#define MUS_KACHI3 354          // Gym Leader Defeated +#define MUS_KACHI5 355          // Victory! Elite Four +#define MUS_PCC 356             // Crystal - Pokémon Communication Center +#define MUS_NIBI 357            // GSC - Viridian/Saffron/Pewter/etc +#define MUS_SUIKUN 358          // Crystal - Battle! Legendary Beasts +#define MUS_DOORO1 359          // Route 101 +#define MUS_DOORO_X1 360        // Route 110 +#define MUS_DOORO_X3 361        // Route 120 +#define MUS_MACHI_S2 362        // Petalburg City +#define MUS_MACHI_S4 363        // Oldale Town +#define MUS_GIM 364             // Gym +#define MUS_NAMINORI 365        // Surfing +#define MUS_DAN01 366           // Caves and Darkness +#define MUS_FANFA1 367          // Level Up! +#define MUS_ME_ASA 368          // Pokémon Healed +#define MUS_ME_BACHI 369        // Obtained a Badge! +#define MUS_FANFA4 370          // Obtained an Item! +#define MUS_FANFA5 371          // Your Pokémon Just Evolved! +#define MUS_ME_WAZA 372         // Obtained a TM/HM! +#define MUS_BIJYUTU 373         // Lilycove Musseum +#define MUS_DOORO_X4 374        // Route 122/Intro +#define MUS_FUNE_KAN 375        // Slateport Museum +#define MUS_ME_SHINKA 376       // Evolution Intro +#define MUS_SHINKA 377          // Evolution +#define MUS_ME_WASURE 378       // Move Deleted +#define MUS_SYOUJOEYE 379       // Encounter! Tuber +#define MUS_BOYEYE 380          // Encounter! Boy +#define MUS_DAN02 381           // Abandoned Ship +#define MUS_MACHI_S3 382        // Fortree City +#define MUS_ODAMAKI 383         // Professor Birch's Lab +#define MUS_B_TOWER 384         // Battle Tower (RS) +#define MUS_SWIMEYE 385         // Encounter! Swimmer +#define MUS_DAN03 386           // Meteor Falls +#define MUS_ME_KINOMI 387       // Obtained a Berry! +#define MUS_ME_TAMA 388         // Awakening the Super-Ancient Pokémon +#define MUS_ME_B_BIG 389        // Slots Jackpot! +#define MUS_ME_B_SMALL 390      // Slots Victory! +#define MUS_ME_ZANNEN 391       // Too bad! +#define MUS_BD_TIME 392         // Roulette! +#define MUS_TEST1 393           // Contest Test 1 +#define MUS_TEST2 394           // Contest Test 2 +#define MUS_TEST3 395           // Contest Test 3 +#define MUS_TEST4 396           // Contest Test 4 +#define MUS_TEST 397            // Encounter! Gentleman (Test?) +#define MUS_GOMACHI0 398        // Verdanturf Town +#define MUS_GOTOWN 399          // Rustboro City +#define MUS_POKECEN 400         // Pokémon Center +#define MUS_NEXTROAD 401        // Route 104 +#define MUS_GRANROAD 402        // Route 119 +#define MUS_CYCLING 403         // Cycling +#define MUS_FRIENDLY 404        // Pokémart +#define MUS_MISHIRO 405         // Littleroot Town +#define MUS_TOZAN 406           // Sky Pillar +#define MUS_GIRLEYE 407         // Encounter! Girl +#define MUS_MINAMO 408          // Lilycove City +#define MUS_ASHROAD 409         // Route 111 +#define MUS_EVENT0 410          // Help me! +#define MUS_DEEPDEEP 411        // Underwater +#define MUS_KACHI1 412          // Victory! Trainer +#define MUS_TITLE3 413          // Title Screen +#define MUS_DEMO1 414           // Opening Movie +#define MUS_GIRL_SUP 415        // Encounter! May +#define MUS_HAGESHII 416        // Encounter! Biker +#define MUS_KAKKOII 417         // Encounter! Electric Trainer +#define MUS_KAZANBAI 418        // Route 113 +#define MUS_AQA_0 419           // Encounter! Team Aqua +#define MUS_TSURETEK 420        // Follow Me! +#define MUS_BOY_SUP 421         // Encounter! Brendan +#define MUS_RAINBOW 422         // Ever Grande City +#define MUS_AYASII 423          // Encounter! Psychic +#define MUS_KACHI4 424          // Victory! Aqua/Magma Grunt +#define MUS_ROPEWAY 425         // Cable Car +#define MUS_CASINO 426          // Game Corner +#define MUS_HIGHTOWN 427        // Dewford Town +#define MUS_SAFARI 428          // Safari Zone +#define MUS_C_ROAD 429          // Victory Toad +#define MUS_AJITO 430           // Aqua/Magma Hideout +#define MUS_M_BOAT 431          // Sailing +#define MUS_M_DUNGON 432        // Mt. Pyre (Inside) +#define MUS_FINECITY 433        // Slateport City +#define MUS_MACHUPI 434         // Mt. Pyre (Outside) +#define MUS_P_SCHOOL 435        // Pokémon Trainer's School +#define MUS_DENDOU 436          // Hall of Fame +#define MUS_TONEKUSA 437        // Lavaridge Town +#define MUS_MABOROSI 438        // Sealed Chamber +#define MUS_CON_FAN 439         // You are the Champion! +#define MUS_CONTEST0 440        // Pokémon Contest +#define MUS_MGM0 441            // Encounter! Team Magma +#define MUS_T_BATTLE 442        // Opening Battle +#define MUS_OOAME 443           // The Flood +#define MUS_HIDERI 444          // The Drought +#define MUS_RUNECITY 445        // Sootopolis City +#define MUS_CON_K 446           // Berry Blending Results +#define MUS_EIKOU_R 447         // Hall of Fame +#define MUS_KARAKURI 448        // Trick House +#define MUS_HUTAGO 449          // Encounter! Kid +#define MUS_SITENNOU 450        // Encounter! Elite Four +#define MUS_YAMA_EYE 451        // Encounter! Hiker +#define MUS_CONLOBBY 452        // Contest Lobby +#define MUS_INTER_V 453         // Encounter! Gabby and Ty +#define MUS_DAIGO 454           // Encounter! Wallace +#define MUS_THANKFOR 455        // Credits +#define MUS_END 456             // The End +#define MUS_BATTLE27 457        // Battle! Wild Pokémon +#define MUS_BATTLE31 458        // Battle! Team Aqua/Magma +#define MUS_BATTLE20 459        // Battle! Trainer +#define MUS_BATTLE32 460        // Battle! Gym Leader +#define MUS_BATTLE33 461        // Battle! Champion +#define MUS_BATTLE36 462        // Battle! Regi Trio +#define MUS_BATTLE34 463        // Battle! Legendary Pokémon +#define MUS_BATTLE35 464        // Battle! Rival +#define MUS_BATTLE38 465        // Battle! Elite Four +#define MUS_BATTLE30 466        // Battle! Archie/Maxie -#define BGM_ROUTE_118 0x7FFF  // What is this for? +#define MUS_ROUTE_118 0x7FFF  // What is this for?  #endif  // GUARD_CONSTANTS_SONGS_H diff --git a/include/constants/species.h b/include/constants/species.h index f698ada14..dc9856081 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -447,4 +447,10 @@  #define NUM_SPECIES SPECIES_EGG +#ifdef SAPPHIRE +#define ROAMER_SPECIES SPECIES_LATIAS +#else +#define ROAMER_SPECIES SPECIES_LATIOS +#endif +  #endif  // GUARD_CONSTANTS_SPECIES_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 682d45003..856aba069 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -25,9 +25,9 @@  #define VAR_TEMP_F                 0x400F  // object gfx id vars -// These 0x10 vars are used to dynamically control a map object's sprite. +// These 0x10 vars are used to dynamically control a event object's sprite.  // For example, the rival's sprite id is dynamically set based on the player's gender. -// See VarGetFieldObjectGraphicsId(). +// See VarGetEventObjectGraphicsId().  #define VAR_OBJ_GFX_ID_0           0x4010  #define VAR_OBJ_GFX_ID_1           0x4011  #define VAR_OBJ_GFX_ID_2           0x4012 diff --git a/include/contest.h b/include/contest.h index 308fb9525..969ae51dd 100644 --- a/include/contest.h +++ b/include/contest.h @@ -13,13 +13,186 @@ enum  enum  {      CONTEST_EFFECT_HIGHLY_APPEALING, -    CONTEST_EFFECT_USER_MORE_STARTLED, -    CONTEST_EFFECT_APPEAL_ONLY_ONCE, -    CONTEST_EFFECT_REPEATABLE, +    CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, +    CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, +    CONTEST_EFFECT_REPETITION_NOT_BORING,      CONTEST_EFFECT_AVOID_STARTLE_ONCE,      CONTEST_EFFECT_AVOID_STARTLE, -    CONTEST_EFFECT_AVOID_STARTLE_LITTLE, -    //... +    CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY, +    CONTEST_EFFECT_USER_LESS_EASILY_STARTLED, +    CONTEST_EFFECT_STARTLE_FRONT_MON, +    CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS, +    CONTEST_EFFECT_STARTLE_PREV_MON, +    CONTEST_EFFECT_STARTLE_PREV_MONS, +    CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, +    CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, +    CONTEST_EFFECT_STARTLE_PREV_MON_2, +    CONTEST_EFFECT_STARTLE_PREV_MONS_2, +    CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, +    CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, +    CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, +    CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, +    CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL, +    CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL, +    CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL, +    CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL, +    CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL, +    CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS, +    CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, +    CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, +    CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION, +    CONTEST_EFFECT_BETTER_IF_FIRST, +    CONTEST_EFFECT_BETTER_IF_LAST, +    CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, +    CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, +    CONTEST_EFFECT_BETTER_WHEN_LATER, +    CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, +    CONTEST_EFFECT_BETTER_IF_SAME_TYPE, +    CONTEST_EFFECT_BETTER_IF_DIFF_TYPE, +    CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, +    CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, +    CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, +    CONTEST_EFFECT_NEXT_APPEAL_EARLIER, +    CONTEST_EFFECT_NEXT_APPEAL_LATER, +    CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER, +    CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, +    CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, +    CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, +    CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, +    CONTEST_EFFECT_DONT_EXCITE_AUDIENCE +}; + +enum +{ +    COMBO_STARTER_RAIN_DANCE = 1, +    COMBO_STARTER_RAGE, +    COMBO_STARTER_FOCUS_ENERGY, +    COMBO_STARTER_HYPNOSIS, +    COMBO_STARTER_ENDURE, +    COMBO_STARTER_HORN_ATTACK, +    COMBO_STARTER_SWORDS_DANCE, +    COMBO_STARTER_STOCKPILE, +    COMBO_STARTER_SUNNY_DAY, +    COMBO_STARTER_REST, +    COMBO_STARTER_VICE_GRIP, +    COMBO_STARTER_DEFENSE_CURL, +    COMBO_STARTER_CHARGE, +    COMBO_STARTER_ROCK_THROW, +    COMBO_STARTER_YAWN, +    COMBO_STARTER_SCARY_FACE, +    COMBO_STARTER_POWDER_SNOW, +    COMBO_STARTER_LOCK_ON, +    COMBO_STARTER_SOFT_BOILED, +    COMBO_STARTER_MEAN_LOOK, +    COMBO_STARTER_SCRATCH, +    COMBO_STARTER_GROWTH, +    COMBO_STARTER_HAIL, +    COMBO_STARTER_SANDSTORM, +    COMBO_STARTER_BELLY_DRUM, +    COMBO_STARTER_MIND_READER, +    COMBO_STARTER_DRAGON_BREATH, +    COMBO_STARTER_DRAGON_RAGE, +    COMBO_STARTER_DRAGON_DANCE, +    COMBO_STARTER_SURF, +    COMBO_STARTER_DIVE, +    COMBO_STARTER_STRING_SHOT, +    COMBO_STARTER_LEER, +    COMBO_STARTER_TAUNT, +    COMBO_STARTER_CHARM, +    COMBO_STARTER_HARDEN, +    COMBO_STARTER_SING, +    COMBO_STARTER_EARTHQUAKE, +    COMBO_STARTER_DOUBLE_TEAM, +    COMBO_STARTER_CURSE, +    COMBO_STARTER_SWEET_SCENT, +    COMBO_STARTER_SLUDGE, +    COMBO_STARTER_SLUDGE_BOMB, +    COMBO_STARTER_THUNDER_PUNCH, +    COMBO_STARTER_FIRE_PUNCH, +    COMBO_STARTER_ICE_PUNCH, +    COMBO_STARTER_PECK, +    COMBO_STARTER_METAL_SOUND, +    COMBO_STARTER_MUD_SPORT, +    COMBO_STARTER_WATER_SPORT, +    COMBO_STARTER_BONE_CLUB, +    COMBO_STARTER_BONEMERANG, +    COMBO_STARTER_BONE_RUSH, +    COMBO_STARTER_SAND_ATTACK, +    COMBO_STARTER_MUD_SLAP, +    COMBO_STARTER_FAKE_OUT, +    COMBO_STARTER_PSYCHIC, +    COMBO_STARTER_KINESIS, +    COMBO_STARTER_CONFUSION, +    COMBO_STARTER_POUND, +    COMBO_STARTER_SMOG, +    COMBO_STARTER_CALM_MIND +}; + +enum +{ +    CONTEST_STRING_MORE_CONSCIOUS, +    CONTEST_STRING_NO_APPEAL, +    CONTEST_STRING_SETTLE_DOWN, +    CONTEST_STRING_OBLIVIOUS_TO_OTHERS, +    CONTEST_STRING_LESS_AWARE, +    CONTEST_STRING_STOPPED_CARING, +    CONTEST_STRING_STARTLE_ATTEMPT, +    CONTEST_STRING_DAZZLE_ATTEMPT, +    CONTEST_STRING_JUDGE_LOOK_AWAY2, +    CONTEST_STRING_UNNERVE_ATTEMPT, +    CONTEST_STRING_NERVOUS, +    CONTEST_STRING_UNNERVE_WAITING, +    CONTEST_STRING_TAUNT_WELL, +    CONTEST_STRING_REGAINED_FORM, +    CONTEST_STRING_JAM_WELL, +    CONTEST_STRING_HUSTLE_STANDOUT, +    CONTEST_STRING_WORK_HARD_UNNOTICED, +    CONTEST_STRING_WORK_BEFORE, +    CONTEST_STRING_APPEAL_NOT_WELL, +    CONTEST_STRING_WORK_PRECEDING, +    CONTEST_STRING_APPEAL_NOT_WELL2, +    CONTEST_STRING_APPEAL_NOT_SHOWN_WELL, +    CONTEST_STRING_APPEAL_SLIGHTLY_WELL, +    CONTEST_STRING_APPEAL_PRETTY_WELL, +    CONTEST_STRING_APPEAL_EXCELLENTLY, +    CONTEST_STRING_APPEAL_DUD, +    CONTEST_STRING_APPEAL_NOT_VERY_WELL, +    CONTEST_STRING_APPEAL_SLIGHTLY_WELL2, +    CONTEST_STRING_APPEAL_PRETTY_WELL2, +    CONTEST_STRING_APPEAL_VERY_WELL, +    CONTEST_STRING_APPEAL_EXCELLENTLY2, +    CONTEST_STRING_SAME_TYPE_GOOD, +    CONTEST_STRING_DIFF_TYPE_GOOD, +    CONTEST_STRING_STOOD_OUT_AS_MUCH, +    CONTEST_STRING_NOT_AS_WELL, +    CONTEST_STRING_CONDITION_ROSE, +    CONTEST_STRING_HOT_STATUS, +    CONTEST_STRING_MOVE_UP_LINE, +    CONTEST_STRING_MOVE_BACK_LINE, +    CONTEST_STRING_SCRAMBLE_ORDER, +    CONTEST_STRING_JUDGE_EXPECTANTLY2, +    CONTEST_STRING_WENT_OVER_WELL, +    CONTEST_STRING_WENT_OVER_VERY_WELL, +    CONTEST_STRING_APPEAL_COMBO_EXCELLENTLY, +    CONTEST_STRING_AVERT_GAZE, +    CONTEST_STRING_AVOID_SEEING, +    CONTEST_STRING_NOT_FAZED, +    CONTEST_STRING_LITTLE_DISTRACTED, +    CONTEST_STRING_ATTEMPT_STARTLE, +    CONTEST_STRING_LOOKED_DOWN, +    CONTEST_STRING_TURNED_BACK, +    CONTEST_STRING_UTTER_CRY, +    CONTEST_STRING_LEAPT_UP, +    CONTEST_STRING_TRIPPED_OVER, +    CONTEST_STRING_MESSED_UP2, +    CONTEST_STRING_FAILED_TARGET_NERVOUS, +    CONTEST_STRING_FAILED_ANYONE_NERVOUS, +    CONTEST_STRING_IGNORED, +    CONTEST_STRING_NO_CONDITION_IMPROVE, +    CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL, +    CONTEST_STRING_UNAFFECTED, +    CONTEST_STRING_ATTRACTED_ATTENTION, +    CONTEST_STRING_NONE = 255  };  struct ContestMove @@ -156,51 +329,44 @@ struct ContestantStatus   /*0x0B*/ u8 unkB_0:2;            u8 unkB_2:2;            u8 moveRepeatCount:3; -          u8 unkB_7:1;  // used a one-time move? - /*0x0C*/ u8 unkC_0:1; -          u8 unkC_1:2; - /*0x0D*/ s8 unkD; - /*0x0E*/ u8 unkE; - /*0x0F*/ u8 unkF; - /*0x10*/ u8 unk10_0:1; -          u8 unk10_1:1; -          u8 unk10_2:1; -          u8 unk10_3:1; -          u8 unk10_4:2; -          u8 unk10_6:2; - /*0x11*/ u8 unk11_0:2; -          u8 unk11_2:1; -          u8 unk11_3:1; -          u8 unk11_4:1; -          u8 unk11_5:1; - /*0x12*/ u8 unk12; - /*0x13*/ u8 unk13;   // status action? - /*0x14*/ u8 unk14; +          u8 noMoreTurns:1;  // used a one-time move? + /*0x0C*/ u8 nervous:1; +          u8 numTurnsSkipped:2; + /*0x0D*/ s8 condition; + /*0x0E*/ u8 jam; + /*0x0F*/ u8 jamReduction; + +          // Flags set by move effect + /*0x10*/ u8 resistant:1; +          u8 immune:1; +          u8 moreEasilyStartled:1; +          u8 usedRepeatableMove:1; +          u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition +          u8 turnOrderMod:2; // 1: defined; 2: random + /*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random +          u8 turnSkipped:1; +          u8 exploded:1; +          u8 overrideCategoryExcitementMod:1; +          u8 appealTripleCondition:1; + + /*0x12*/ u8 jamSafetyCount; + /*0x13*/ u8 effectStringId;   // status action? + /*0x14*/ u8 effectStringId2;   /*0x15*/ u8 disappointedRepeat:1;            u8 unk15_1:1;            u8 unk15_2:1;            u8 unk15_3:1; -          u8 unk15_4:1; -          u8 unk15_5:1; +          u8 hasJudgesAttention:1; +          u8 judgesAttentionWasRemoved:1;            u8 unk15_6:1;   /*0x16*/ u8 unk16;   /*0x17*/ u8 unk17;   /*0x18*/ u8 unk18; - /*0x19*/ u8 unk19;  // turn position + /*0x19*/ u8 nextTurnOrder;  // turn position   /*0x1A*/ u8 attentionLevel;  // How much the Pokemon "stood out"   /*0x1B*/ u8 unk1B;  }; -struct UnknownContestStruct3 -{ -    u8 unk0; -    u8 unk1; -    //u8 unk2_0:1; -    //u8 unk2_1:1; -    u8 unk2;  // maybe a bitfield -    u8 filler3; -}; -  // possibly the same as UnknownContestStruct3?  struct UnknownContestStruct4  { @@ -209,28 +375,24 @@ struct UnknownContestStruct4      u8 unk2_0:1;      u8 unk2_1:1;      u8 unk2_2:1; -    u8 filler3;  };  struct UnknownContestStruct5  {      s8 bits_0;  // current move excitement? -    u8 bits_8:1; -    u8 bits_9:3; -    u8 bits_C:4; +    u8 excitementFrozen:1; +    u8 excitementFreezer:3;      s8 unk2; -    u8 filler3;  };  struct UnknownContestStruct7  { -    u8 unk0[4]; -    u16 unk4; -    u16 unk6; -    u8 filler8[0xD-8]; -    u8 unkD[4]; -    u8 unk11; -    u8 filler12[2]; +    u8 turnOrder[4]; +    s16 jam; +    s16 jam2; +    u8 jamQueue[5]; +    u8 unnervedPokes[4]; +    u8 contestant;  };  struct UnknownContestStruct8 @@ -239,7 +401,6 @@ struct UnknownContestStruct8      u16 unk2;      u8 unk4_0:1;      u8 unk5; -    u8 filler6[2];      u32 unk8;      u32 unkC;      u32 unk10; @@ -278,5 +439,13 @@ extern u8 gContestFinalStandings[4];  extern u8 gUnknown_02038696[4];  extern u8 gUnknown_0203869B;  extern u16 gSpecialVar_ContestRank; +extern u16 gSpecialVar_ContestCategory; + +void SetContestantEffectStringID(u8 a, u8 b); +void SetContestantEffectStringID2(u8 a, u8 b); +void MakeContestantNervous(u8 p); +bool8 Contest_IsMonsTurnDisabled(u8 a); +bool8 sub_80B214C(u8 a); +void SetStartledString(u8 a, u8 b);  #endif // GUARD_CONTEST_H diff --git a/include/contest_effect.h b/include/contest_effect.h new file mode 100644 index 000000000..2840bf106 --- /dev/null +++ b/include/contest_effect.h @@ -0,0 +1,6 @@ +#ifndef POKERUBY_GBA_CONTEST_EFFECT_H +#define POKERUBY_GBA_CONTEST_EFFECT_H + +extern bool8 AreMovesContestCombo(u16, u16); + +#endif //POKERUBY_GBA_CONTEST_EFFECT_H diff --git a/include/contest_painting.h b/include/contest_painting.h index 48ab95fbc..81535ec8b 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -40,9 +40,9 @@ struct Unk2015E00  struct ContestEntry  { -    /*0x00*/ u8 var0; -    /*0x04*/ u32 var4; -    /*0x08*/ u16 var8; +    /*0x00*/ u32 personality; +    /*0x04*/ u32 otId; +    /*0x08*/ u16 species;      /*0x0A*/ u8 contestType;      /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH];      /*0x15*/ u8 pad15; diff --git a/include/cute_sketch.h b/include/contest_painting_effects.h index 1fa3c90fb..1fa3c90fb 100644 --- a/include/cute_sketch.h +++ b/include/contest_painting_effects.h diff --git a/include/data2.h b/include/data2.h index 2fe8d39f8..593d04480 100644 --- a/include/data2.h +++ b/include/data2.h @@ -24,32 +24,32 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];  extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];  extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; -extern struct MonCoords gMonFrontPicCoords[]; -extern struct MonCoords gMonBackPicCoords[]; -extern struct CompressedSpriteSheet gMonFrontPicTable[]; -extern struct CompressedSpriteSheet gMonBackPicTable[]; +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct MonCoords gMonBackPicCoords[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[];  extern const struct CompressedSpritePalette gMonPaletteTable[];  extern const struct CompressedSpritePalette gMonShinyPaletteTable[];  extern const union AnimCmd *const *const gUnknown_081EC2A4[];  extern const union AnimCmd *const *const gUnknown_081ECACC[]; -extern struct MonCoords gTrainerBackPicCoords[]; -extern struct CompressedSpriteSheet gTrainerBackPicTable[]; +extern const struct MonCoords gTrainerBackPicCoords[]; +extern const struct CompressedSpriteSheet gTrainerBackPicTable[];  extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern u8 gEnemyMonElevation[]; +extern const u8 gEnemyMonElevation[];  extern const u8 gTrainerClassNames[][13];  extern const struct Trainer gTrainers[]; -extern u8 gSpeciesNames[][11]; +extern const u8 gSpeciesNames[][11];  extern const u8 gMoveNames[][13];  extern const u8 gAbilityNames[][13];  extern const u8 gTypeNames[][7];  extern const struct ScanlineEffectParams gUnknown_081F9674;  extern const u8 gUnknown_081F96C8[]; -extern struct CompressedSpriteSheet gUnknown_081FAEA4; -extern struct CompressedSpritePalette gUnknown_081FAEAC; +extern const struct CompressedSpriteSheet gUnknown_081FAEA4; +extern const struct CompressedSpritePalette gUnknown_081FAEAC;  extern const struct SpriteTemplate gSpriteTemplate_81FAF0C;  extern u8 *const gUnknown_081FAF4C[];  //extern u8 (*const gUnknown_081FAF4C[])[0x800]; -extern struct BattleMove gBattleMoves[]; +extern const struct BattleMove gBattleMoves[];  // data/graphics/trainers/front_pic_coords.inc  extern const struct MonCoords gTrainerFrontPicCoords[]; diff --git a/include/daycare.h b/include/daycare.h index c612113b9..983fd1e6b 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -1,6 +1,8 @@  #ifndef GUARD_DAYCARE_H  #define GUARD_DAYCARE_H +#define EGG_HATCH_LEVEL 5 +  u8 *GetMonNick(struct Pokemon *, u8 *);  u8 *GetBoxMonNick(struct BoxPokemon *, u8 *);  u8 CountPokemonInDaycare(struct DayCare *); diff --git a/include/debug.h b/include/debug.h index 2136dbfb8..d090f8bed 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,17 +1,57 @@  #ifndef GUARD_DEBUG_H  #define GUARD_DEBUG_H +struct UnkDebugMenu3Items { +    const u8 * text; +    size_t (*func)(u8 * dest); +}; +  // start_menu_debug  void DebugMenu_8077048(void);  // matsuda_debug_menu  void sub_80AAF30(void);  void Crash(const u8 *text); +bool8 InitMatsudaDebugMenu(void);  // tomomichi_debug_menu  void debug_nullsub_66(void); +bool8 InitTomomichiDebugWindow(void);  // sound_check_menu  void CB2_StartSoundCheckMenu(void); +// nakamura_debug_menu +void NakaGenderTest(void); + +// unk debug menu 3 +extern const u8 gUnknown_Debug_842E350; +extern const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[]; + +// unknown debug menu +int InitSogabeDebugMenu(void); + +// kagaya_debug_menu +bool8 InitKagayaDebugMenu_A(void); +bool8 debug_sub_80B0770(void); +bool8 debug_sub_80B07B0(void); +bool8 debug_sub_80B0800(void); + +// nohara_debug_menu +bool8 InitNoharaDebugMenu(void); + +// watanabe_debug_menu +void InitWatanabeDebugMenu(void); +void InitSizeComparison(void); +void InitBattleForDebug(void); +void InitCreatePokemon(void); +void InitSeePokemonGraphics(void); +void InitSeeTrainers(void); + +// taya_debug_menu +bool8 InitTayaDebugWindow(void); + +// nakamura_debug_menu +bool8 InitNakamuraDebugMenu(void); +  #endif // GUARD_DEBUG_H diff --git a/include/decoration.h b/include/decoration.h index d7f26bd05..7676c0add 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -152,9 +152,6 @@ extern const struct YesNoFuncTable gUnknown_083EC9CC;  extern const struct YesNoFuncTable gUnknown_083EC9D4;  extern const struct YesNoFuncTable gUnknown_083ECAA0; -extern u8 sub_8134194(u8); // src/decoration_inventory -extern bool8 sub_81341D4(void); // src/decoration_inventory -extern void sub_8134104(u8); // src/decoration_inventory  extern void sub_8109DAC(u8); // src/trader  extern void ReshowPlayerPC(u8); // src/player_pc  void Task_SecretBasePC_Decoration(u8); @@ -175,13 +172,17 @@ void sub_80FE948(u8);  void sub_80FEABC(u8, u8);  void sub_80FEC94(u8);  void sub_80FECB8(u8); +#ifdef GERMAN +int sub_80FECE0(u8); +#else  void sub_80FECE0(u8); +#endif  void sub_80FEF50(u8);  bool8 sub_80FEFA4(void);  void sub_80FF394(u16, u16, u16);  void sub_80FF6AC(u8);  void sub_80FF960(u8); -void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 *, u8); +void AddDecorationIconObjectFromEventObject(struct UnkStruct_02038900 *, u8);  void SetUpPlacingDecorationPlayerAvatar(u8, struct UnkStruct_02038900 *);  void sub_8100038(u8);  void sub_81000A0(u8); diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h index e59a23008..65bfcc8c0 100644 --- a/include/decoration_inventory.h +++ b/include/decoration_inventory.h @@ -2,11 +2,16 @@  #define GUARD_DECORATION_INVENTORY_H  void ClearDecorationInventories(void); -s8 sub_8133F9C(u8); -u8 sub_8133FE4(u8); -u8 IsThereStorageSpaceForDecoration(u8); -u8 sub_8134074(u8); -s8 sub_81340A8(u8); -u8 sub_8134194(u8); +s8 FindFreeDecorationInventorySlot(u8); +u8 InventoryContainsDecoration(u8); +u8 GiveDecoration(u8); +u8 CheckDecorationInventoryHasSpace(u8); +s8 RemoveDecorationFromInventory(u8); +void SortDecorationInventory(u8); +u8 GetNumDecorationsInInventoryCategory(u8); +bool8 GetNumDecorationsInInventory(void); +#if DEBUG +void Debug_GiveAllDecorations(void); +#endif // DEBUG  #endif // GUARD_DECORATION_INVENTORY_H diff --git a/include/event_data.h b/include/event_data.h index 5656ab8dc..44d1e8e41 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -19,7 +19,7 @@ bool32 CanResetRTC(void);  u16 *GetVarPointer(u16 id);  u16 VarGet(u16 id);  bool8 VarSet(u16 id, u16 value); -u8 VarGetFieldObjectGraphicsId(u8 id); +u8 VarGetEventObjectGraphicsId(u8 id);  u8 *GetFlagPointer(u16 id);  u8 FlagSet(u16 id);  u8 FlagClear(u16 id); diff --git a/include/map_obj_lock.h b/include/event_obj_lock.h index 9fb57743e..538edc579 100644 --- a/include/map_obj_lock.h +++ b/include/event_obj_lock.h @@ -1,16 +1,16 @@ -#ifndef GUARD_MAP_OBJ_LOCK_H -#define GUARD_MAP_OBJ_LOCK_H +#ifndef GUARD_EVENT_OBJ_LOCK_H +#define GUARD_EVENT_OBJ_LOCK_H  bool8 walkrun_is_standing_still(void);  void sub_8064CDC(u8 taskId);  bool8 sub_8064CFC(void); -void ScriptFreezeMapObjects(void); +void ScriptFreezeEventObjects(void);  void sub_8064D38(u8 taskId);  bool8 sub_8064DB4(void); -void LockSelectedMapObject(void); -void sub_8064E2C(void); +void LockSelectedEventObject(void); +void ScriptUnfreezeEventObjects(void);  void unref_sub_8064E5C(void);  void sub_8064EAC(void);  void sub_8064ED4(void); -#endif // GUARD_MAP_OBJ_LOCK_H +#endif // GUARD_EVENT_OBJ_LOCK_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 495942656..e1e7529ca 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -3,476 +3,712 @@  #include "sprite.h" -extern const u8 gUnknown_0830FD14[]; +enum { +    MOVEMENT_TYPE_NONE, +    MOVEMENT_TYPE_LOOK_AROUND, +    MOVEMENT_TYPE_WANDER_AROUND, +    MOVEMENT_TYPE_WANDER_UP_AND_DOWN, +    MOVEMENT_TYPE_WANDER_DOWN_AND_UP, +    MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT, +    MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT, +    MOVEMENT_TYPE_FACE_UP, +    MOVEMENT_TYPE_FACE_DOWN, +    MOVEMENT_TYPE_FACE_LEFT, +    MOVEMENT_TYPE_FACE_RIGHT, +    MOVEMENT_TYPE_PLAYER, +    MOVEMENT_TYPE_BERRY_TREE_GROWTH, +    MOVEMENT_TYPE_FACE_DOWN_AND_UP, +    MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT, +    MOVEMENT_TYPE_FACE_UP_AND_LEFT, +    MOVEMENT_TYPE_FACE_UP_AND_RIGHT, +    MOVEMENT_TYPE_FACE_DOWN_AND_LEFT, +    MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT, +    MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT, +    MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT, +    MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT, +    MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT, +    MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE, +    MOVEMENT_TYPE_ROTATE_CLOCKWISE, +    MOVEMENT_TYPE_WALK_UP_AND_DOWN, +    MOVEMENT_TYPE_WALK_DOWN_AND_UP, +    MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT, +    MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT, +    MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT, +    MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN, +    MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP, +    MOVEMENT_TYPE_COPY_PLAYER, +    MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE, +    MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE, +    MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE, +    MOVEMENT_TYPE_TREE_DISGUISE, +    MOVEMENT_TYPE_MOUNTAIN_DISGUISE, +    MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS, +    MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS, +    MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS, +    MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS, +    MOVEMENT_TYPE_HIDDEN, +    MOVEMENT_TYPE_WALK_IN_PLACE_DOWN, +    MOVEMENT_TYPE_WALK_IN_PLACE_UP, +    MOVEMENT_TYPE_WALK_IN_PLACE_LEFT, +    MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT, +    MOVEMENT_TYPE_JOG_IN_PLACE_DOWN, +    MOVEMENT_TYPE_JOG_IN_PLACE_UP, +    MOVEMENT_TYPE_JOG_IN_PLACE_LEFT, +    MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT, +    MOVEMENT_TYPE_RUN_IN_PLACE_DOWN, +    MOVEMENT_TYPE_RUN_IN_PLACE_UP, +    MOVEMENT_TYPE_RUN_IN_PLACE_LEFT, +    MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT, +    MOVEMENT_TYPE_INVISIBLE, +}; + +enum { +    MOVEMENT_ACTION_FACE_DOWN, +    MOVEMENT_ACTION_FACE_UP, +    MOVEMENT_ACTION_FACE_LEFT, +    MOVEMENT_ACTION_FACE_RIGHT, +    MOVEMENT_ACTION_WALK_SLOW_DOWN, +    MOVEMENT_ACTION_WALK_SLOW_UP, +    MOVEMENT_ACTION_WALK_SLOW_LEFT, +    MOVEMENT_ACTION_WALK_SLOW_RIGHT, +    MOVEMENT_ACTION_WALK_NORMAL_DOWN, +    MOVEMENT_ACTION_WALK_NORMAL_UP, +    MOVEMENT_ACTION_WALK_NORMAL_LEFT, +    MOVEMENT_ACTION_WALK_NORMAL_RIGHT, +    MOVEMENT_ACTION_JUMP_2_DOWN, +    MOVEMENT_ACTION_JUMP_2_UP, +    MOVEMENT_ACTION_JUMP_2_LEFT, +    MOVEMENT_ACTION_JUMP_2_RIGHT, +    MOVEMENT_ACTION_DELAY_1, +    MOVEMENT_ACTION_DELAY_2, +    MOVEMENT_ACTION_DELAY_4, +    MOVEMENT_ACTION_DELAY_8, +    MOVEMENT_ACTION_DELAY_16, +    MOVEMENT_ACTION_WALK_FAST_DOWN, +    MOVEMENT_ACTION_WALK_FAST_UP, +    MOVEMENT_ACTION_WALK_FAST_LEFT, +    MOVEMENT_ACTION_WALK_FAST_RIGHT, +    MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN, +    MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP, +    MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT, +    MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT, +    MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN, +    MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP, +    MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT, +    MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT, +    MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN, +    MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP, +    MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT, +    MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT, +    MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN, +    MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP, +    MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT, +    MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT, +    MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, +    MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP, +    MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT, +    MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT, +    MOVEMENT_ACTION_WALK_FASTEST_DOWN, +    MOVEMENT_ACTION_WALK_FASTEST_UP, +    MOVEMENT_ACTION_WALK_FASTEST_LEFT, +    MOVEMENT_ACTION_WALK_FASTEST_RIGHT, +    MOVEMENT_ACTION_SLIDE_DOWN, +    MOVEMENT_ACTION_SLIDE_UP, +    MOVEMENT_ACTION_SLIDE_LEFT, +    MOVEMENT_ACTION_SLIDE_RIGHT, +    MOVEMENT_ACTION_PLAYER_RUN_DOWN, +    MOVEMENT_ACTION_PLAYER_RUN_UP, +    MOVEMENT_ACTION_PLAYER_RUN_LEFT, +    MOVEMENT_ACTION_PLAYER_RUN_RIGHT, +    MOVEMENT_ACTION_START_ANIM_IN_DIRECTION, +    MOVEMENT_ACTION_JUMP_SPECIAL_DOWN, +    MOVEMENT_ACTION_JUMP_SPECIAL_UP, +    MOVEMENT_ACTION_JUMP_SPECIAL_LEFT , +    MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT, +    MOVEMENT_ACTION_FACE_PLAYER, +    MOVEMENT_ACTION_FACE_AWAY_PLAYER, +    MOVEMENT_ACTION_LOCK_FACING_DIRECTION, +    MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION, +    MOVEMENT_ACTION_JUMP_DOWN, +    MOVEMENT_ACTION_JUMP_UP, +    MOVEMENT_ACTION_JUMP_LEFT, +    MOVEMENT_ACTION_JUMP_RIGHT, +    MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN, +    MOVEMENT_ACTION_JUMP_IN_PLACE_UP, +    MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT, +    MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT, +    MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP, +    MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN, +    MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT, +    MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT, +    MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION, +    MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN, +    MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT, +    MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT, +    MOVEMENT_ACTION_DISABLE_ANIMATION, +    MOVEMENT_ACTION_RESTORE_ANIMATION, +    MOVEMENT_ACTION_SET_INVISIBLE, +    MOVEMENT_ACTION_SET_VISIBLE, +    MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK, +    MOVEMENT_ACTION_EMOTE_QUESTION_MARK, +    MOVEMENT_ACTION_EMOTE_HEART, +    MOVEMENT_ACTION_REVEAL_TRAINER, +    MOVEMENT_ACTION_ROCK_SMASH_BREAK, +    MOVEMENT_ACTION_CUT_TREE, +    MOVEMENT_ACTION_SET_FIXED_PRIORITY, +    MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY, +    MOVEMENT_ACTION_INIT_AFFINE_ANIM, +    MOVEMENT_ACTION_CLEAR_AFFINE_ANIM, +    MOVEMENT_ACTION_WALK_DOWN_START_AFFINE, +    MOVEMENT_ACTION_WALK_DOWN_AFFINE_1, +    MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT, +    MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT, +    MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT, +    MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT, +    MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN, +    MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP, +    MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT, +    MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT, +    MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT, +}; + +#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN   (1 << 0) +#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE    (1 << 1) +#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN   (1 << 2) +#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE    (1 << 3) +#define GROUND_EFFECT_FLAG_ICE_REFLECTION        (1 << 4) +#define GROUND_EFFECT_FLAG_REFLECTION            (1 << 5) +#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << 6) +#define GROUND_EFFECT_FLAG_SAND                  (1 << 7) +#define GROUND_EFFECT_FLAG_DEEP_SAND             (1 << 8) +#define GROUND_EFFECT_FLAG_RIPPLES               (1 << 9) +#define GROUND_EFFECT_FLAG_PUDDLE                (1 << 10) +#define GROUND_EFFECT_FLAG_SAND_PILE             (1 << 11) +#define GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS    (1 << 12) +#define GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS    (1 << 13) +#define GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER (1 << 14) +#define GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER    (1 << 15) +#define GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND (1 << 16) +#define GROUND_EFFECT_FLAG_SHORT_GRASS           (1 << 17) +#define GROUND_EFFECT_FLAG_HOT_SPRINGS           (1 << 18) +#define GROUND_EFFECT_FLAG_SEAWEED               (1 << 19) + +extern const u8 gReflectionEffectPaletteMap[]; -#define fieldmap_object_cb(setup, callback, table) \ -static u8 callback(struct MapObject *, struct Sprite *);\ +#define movement_type_def(setup, table) \ +static u8 setup##_callback(struct EventObject *, struct Sprite *);\  void setup(struct Sprite *sprite)\  {\ -    meta_step(&gMapObjects[sprite->data[0]], sprite, callback);\ +    UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\  }\ -static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\  {\ -    return table[sprite->data[1]](mapObject, sprite);\ +    return table[sprite->data[1]](eventObject, sprite);\  } -#define fieldmap_object_null_cb(setup, callback) \ -static u8 callback(struct MapObject *, struct Sprite *);\ +#define movement_type_empty_callback(setup) \ +static u8 setup##_callback(struct EventObject *, struct Sprite *);\  void setup(struct Sprite *sprite)\  {\ -    meta_step(&gMapObjects[sprite->data[0]], sprite, callback);\ +    UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\  }\ -static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\  {\      return 0;\  } -struct PairedPalettes +struct ReflectionPaletteSet  { -    u16 tag; -    const u16 *data; +    u16 mainPaletteTag; +    const u16 *reflectionPaletteTags;  }; -extern const u16 gMapObjectPalette19[]; +extern const u16 gEventObjectPalette19[]; -extern const u32 gMapObjectPic_MovingBox[32]; -extern const struct SpriteFrameImage gMapObjectPicTable_PechaBerryTree[]; +extern const u32 gEventObjectPic_MovingBox[32]; +extern const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[];  extern const u8 gFieldEffectPic_CutGrass[];  extern const u16 gFieldEffectObjectPalette6[]; -void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); -void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); +void sub_805C058(struct EventObject *eventObject, s16 a, s16 b); +void SetEventObjectDirection(struct EventObject *pObject, u8 unk_18);  void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject,  struct Sprite *pSprite,  u8 (*d8)(struct MapObject *, struct Sprite *)); -void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); +void UpdateEventObjectCurrentMovement(struct EventObject *pObject,  struct Sprite *pSprite,  u8 (*d8)(struct EventObject *, struct Sprite *)); -u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetVectorDirection(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_SouthNorth(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_WestEast(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_WestNorth(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_EastNorth(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_WestSouth(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_EastSouth(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_SouthNorthWest(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_SouthNorthEast(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_NorthWestEast(s16 a0, s16 a1, s16 a2, s16 a3); +u8 GetLimitedVectorDirection_SouthWestEast(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8)); -u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_None(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_FaceDirection(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_GoSpeed0(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_GoSpeed1(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_GoSpeed2(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_Slide(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 cph_IM_DIFFERENT(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_GoSpeed4(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 CopyablePlayerMovement_Jump(struct EventObject *, struct Sprite *, u8, bool8(u8)); -extern struct CameraSomething gUnknown_03004880; -extern u16 gUnknown_03004898; -extern u16 gUnknown_0300489C; +extern struct FieldCamera gFieldCamera; +extern u16 gTotalCameraPixelOffsetY; +extern u16 gTotalCameraPixelOffsetX;  extern const struct Coords16 gDirectionToVector[]; -void FieldObjectCB_BerryTree(struct Sprite *); -void FieldObjectCB_Hidden1(struct Sprite *); -void FieldObjectCB_MountainDisguise(struct Sprite *); -void FieldObjectCB_TreeDisguise(struct Sprite *); -void sub_80587B4(struct Sprite *); -void sub_805C884(struct Sprite *); -void sub_805C8AC(struct Sprite *); -void sub_805CDE8(struct Sprite *); -void sub_805CF28(struct Sprite *); -void sub_805D0AC(struct Sprite *); -void sub_805D230(struct Sprite *); -void sub_805D4F4(struct Sprite *); -void sub_805D634(struct Sprite *); -void sub_805D774(struct Sprite *); -void sub_805D8B4(struct Sprite *); -void sub_805D9F4(struct Sprite *); -void sub_805DB34(struct Sprite *); -void sub_805DC74(struct Sprite *); -void sub_805DDB4(struct Sprite *); -void sub_805DEF4(struct Sprite *); -void sub_805E034(struct Sprite *); -void sub_805E174(struct Sprite *); -void sub_805E278(struct Sprite *); -void sub_805E37C(struct Sprite *); -void sub_805E5DC(struct Sprite *); -void sub_805E668(struct Sprite *); -void sub_805E6F4(struct Sprite *); -void sub_805E780(struct Sprite *); -void sub_805E80C(struct Sprite *); -void sub_805E898(struct Sprite *); -void sub_805E924(struct Sprite *); -void sub_805E9B0(struct Sprite *); -void sub_805EA3C(struct Sprite *); -void sub_805EAC8(struct Sprite *); -void sub_805EB54(struct Sprite *); -void sub_805EBE0(struct Sprite *); -void sub_805EC6C(struct Sprite *); -void sub_805ECF8(struct Sprite *); -void sub_805ED84(struct Sprite *); -void sub_805EE10(struct Sprite *); -void sub_805EE9C(struct Sprite *); -void sub_805EF28(struct Sprite *); -void sub_805EFB4(struct Sprite *); -void sub_805F040(struct Sprite *); -void sub_805F0CC(struct Sprite *); -void sub_805F158(struct Sprite *); -void sub_805F1E4(struct Sprite *); -void sub_805F270(struct Sprite *); -void sub_805F2FC(struct Sprite *); -void sub_805F8E0(struct Sprite *); -void sub_805FB20(struct Sprite *); -void sub_805FB90(struct Sprite *); -void sub_805FC00(struct Sprite *); -void sub_805FC70(struct Sprite *); +void MovementType_BerryTreeGrowth(struct Sprite *); +void MovementType_Hidden(struct Sprite *); +void MovementType_MountainDisguise(struct Sprite *); +void MovementType_TreeDisguise(struct Sprite *); +void MovementType_Player(struct Sprite *); +void MovementType_None(struct Sprite *); +void MovementType_WanderAround(struct Sprite *); +void MovementType_LookAround(struct Sprite *); +void MovementType_WanderUpAndDown(struct Sprite *); +void MovementType_WanderLeftAndRight(struct Sprite *); +void MovementType_FaceDirection(struct Sprite *); +void MovementType_FaceDownAndUp(struct Sprite *); +void MovementType_FaceLeftAndRight(struct Sprite *); +void MovementType_FaceUpAndLeft(struct Sprite *); +void MovementType_FaceUpAndRight(struct Sprite *); +void MovementType_FaceDownAndLeft(struct Sprite *); +void MovementType_FaceDownAndRight(struct Sprite *); +void MovementType_FaceDownUpAndLeft(struct Sprite *); +void MovementType_FaceDownUpAndRight(struct Sprite *); +void MovementType_FaceUpLeftAndRight(struct Sprite *); +void MovementType_FaceDownLeftAndRight(struct Sprite *); +void MovementType_RotateCounterclockwise(struct Sprite *); +void MovementType_RotateClockwise(struct Sprite *); +void MovementType_WalkBackAndForth(struct Sprite *); +void MovementType_WalkSequenceUpRightLeftDown(struct Sprite *); +void MovementType_WalkSequenceRightLeftDownUp(struct Sprite *); +void MovementType_WalkSequenceDownUpRightLeft(struct Sprite *); +void MovementType_WalkSequenceLeftDownUpRight(struct Sprite *); +void MovementType_WalkSequenceUpLeftRightDown(struct Sprite *); +void MovementType_WalkSequenceLeftRightDownUp(struct Sprite *); +void MovementType_WalkSequenceDownUpLeftRight(struct Sprite *); +void MovementType_WalkSequenceRightDownUpLeft(struct Sprite *); +void MovementType_WalkSequenceLeftUpDownRight(struct Sprite *); +void MovementType_WalkSequenceUpDownRightLeft(struct Sprite *); +void MovementType_WalkSequenceRightLeftUpDown(struct Sprite *); +void MovementType_WalkSequenceDownRightLeftUp(struct Sprite *); +void MovementType_WalkSequenceRightUpDownLeft(struct Sprite *); +void MovementType_WalkSequenceUpDownLeftRight(struct Sprite *); +void MovementType_WalkSequenceLeftRightUpDown(struct Sprite *); +void MovementType_WalkSequenceDownLeftRightUp(struct Sprite *); +void MovementType_WalkSequenceUpLeftDownRight(struct Sprite *); +void MovementType_WalkSequenceDownRightUpLeft(struct Sprite *); +void MovementType_WalkSequenceLeftDownRightUp(struct Sprite *); +void MovementType_WalkSequenceRightUpLeftDown(struct Sprite *); +void MovementType_WalkSequenceUpRightDownLeft(struct Sprite *); +void MovementType_WalkSequenceDownLeftUpRight(struct Sprite *); +void MovementType_WalkSequenceLeftUpRightDown(struct Sprite *); +void MovementType_WalkSequenceRightDownLeftUp(struct Sprite *); +void MovementType_CopyPlayer(struct Sprite *); +void MovementType_CopyPlayerInGrass(struct Sprite *); +void MovementType_WalkInPlace(struct Sprite *); +void MovementType_JogInPlace(struct Sprite *); +void MovementType_RunInPlace(struct Sprite *); +void MovementType_Invisible(struct Sprite *); -u8 sub_805C8F0(struct MapObject *, struct Sprite *); -u8 sub_805C904(struct MapObject *, struct Sprite *); -u8 sub_805C930(struct MapObject *, struct Sprite *); -u8 sub_805C96C(struct MapObject *, struct Sprite *); -u8 sub_805C98C(struct MapObject *, struct Sprite *); -u8 sub_805C9D8(struct MapObject *, struct Sprite *); -u8 sub_805CA08(struct MapObject *, struct Sprite *); -u8 sub_805CE2C(struct MapObject *, struct Sprite *); -u8 sub_805CE40(struct MapObject *, struct Sprite *); -u8 sub_805CE6C(struct MapObject *, struct Sprite *); -u8 sub_805CEB0(struct MapObject *, struct Sprite *); -u8 sub_805CEE0(struct MapObject *, struct Sprite *); -u8 sub_805CF6C(struct MapObject *, struct Sprite *); -u8 sub_805CF80(struct MapObject *, struct Sprite *); -u8 sub_805CFAC(struct MapObject *, struct Sprite *); -u8 sub_805CFE8(struct MapObject *, struct Sprite *); -u8 sub_805D008(struct MapObject *, struct Sprite *); -u8 sub_805D054(struct MapObject *, struct Sprite *); -u8 sub_805D084(struct MapObject *, struct Sprite *); -u8 sub_805D0F0(struct MapObject *, struct Sprite *); -u8 sub_805D104(struct MapObject *, struct Sprite *); -u8 sub_805D130(struct MapObject *, struct Sprite *); -u8 sub_805D16C(struct MapObject *, struct Sprite *); -u8 sub_805D18C(struct MapObject *, struct Sprite *); -u8 sub_805D1D8(struct MapObject *, struct Sprite *); -u8 sub_805D208(struct MapObject *, struct Sprite *); -u8 sub_805D274(struct MapObject *, struct Sprite *); -u8 sub_805D2A0(struct MapObject *, struct Sprite *); -u8 sub_805D2C0(struct MapObject *, struct Sprite *); -u8 do_berry_tree_growth_sparkle_1(struct MapObject *, struct Sprite *); -u8 sub_805D3EC(struct MapObject *, struct Sprite *); -u8 do_berry_tree_growth_sparkle_2(struct MapObject *, struct Sprite *); -u8 sub_805D458(struct MapObject *, struct Sprite *); -u8 sub_805D4A8(struct MapObject *, struct Sprite *); -u8 sub_805D538(struct MapObject *, struct Sprite *); -u8 sub_805D54C(struct MapObject *, struct Sprite *); -u8 sub_805D578(struct MapObject *, struct Sprite *); -u8 sub_805D5BC(struct MapObject *, struct Sprite *); -u8 sub_805D5EC(struct MapObject *, struct Sprite *); -u8 sub_805D678(struct MapObject *, struct Sprite *); -u8 sub_805D68C(struct MapObject *, struct Sprite *); -u8 sub_805D6B8(struct MapObject *, struct Sprite *); -u8 sub_805D6FC(struct MapObject *, struct Sprite *); -u8 sub_805D72C(struct MapObject *, struct Sprite *); -u8 sub_805D7B8(struct MapObject *, struct Sprite *); -u8 sub_805D7CC(struct MapObject *, struct Sprite *); -u8 sub_805D7F8(struct MapObject *, struct Sprite *); -u8 sub_805D83C(struct MapObject *, struct Sprite *); -u8 sub_805D86C(struct MapObject *, struct Sprite *); -u8 sub_805D8F8(struct MapObject *, struct Sprite *); -u8 sub_805D90C(struct MapObject *, struct Sprite *); -u8 sub_805D938(struct MapObject *, struct Sprite *); -u8 sub_805D97C(struct MapObject *, struct Sprite *); -u8 sub_805D9AC(struct MapObject *, struct Sprite *); -u8 sub_805DA38(struct MapObject *, struct Sprite *); -u8 sub_805DA4C(struct MapObject *, struct Sprite *); -u8 sub_805DA78(struct MapObject *, struct Sprite *); -u8 sub_805DABC(struct MapObject *, struct Sprite *); -u8 sub_805DAEC(struct MapObject *, struct Sprite *); -u8 sub_805DB78(struct MapObject *, struct Sprite *); -u8 sub_805DB8C(struct MapObject *, struct Sprite *); -u8 sub_805DBB8(struct MapObject *, struct Sprite *); -u8 sub_805DBFC(struct MapObject *, struct Sprite *); -u8 sub_805DC2C(struct MapObject *, struct Sprite *); -u8 sub_805DCB8(struct MapObject *, struct Sprite *); -u8 sub_805DCCC(struct MapObject *, struct Sprite *); -u8 sub_805DCF8(struct MapObject *, struct Sprite *); -u8 sub_805DD3C(struct MapObject *, struct Sprite *); -u8 sub_805DD6C(struct MapObject *, struct Sprite *); -u8 sub_805DDF8(struct MapObject *, struct Sprite *); -u8 sub_805DE0C(struct MapObject *, struct Sprite *); -u8 sub_805DE38(struct MapObject *, struct Sprite *); -u8 sub_805DE7C(struct MapObject *, struct Sprite *); -u8 sub_805DEAC(struct MapObject *, struct Sprite *); -u8 sub_805DF38(struct MapObject *, struct Sprite *); -u8 sub_805DF4C(struct MapObject *, struct Sprite *); -u8 sub_805DF78(struct MapObject *, struct Sprite *); -u8 sub_805DFBC(struct MapObject *, struct Sprite *); -u8 sub_805DFEC(struct MapObject *, struct Sprite *); -u8 sub_805E078(struct MapObject *, struct Sprite *); -u8 sub_805E08C(struct MapObject *, struct Sprite *); -u8 sub_805E0B8(struct MapObject *, struct Sprite *); -u8 sub_805E0FC(struct MapObject *, struct Sprite *); -u8 sub_805E12C(struct MapObject *, struct Sprite *); -u8 sub_805E1B8(struct MapObject *, struct Sprite *); -u8 sub_805E1E4(struct MapObject *, struct Sprite *); -u8 sub_805E208(struct MapObject *, struct Sprite *); -u8 sub_805E234(struct MapObject *, struct Sprite *); -u8 sub_805E2BC(struct MapObject *, struct Sprite *); -u8 sub_805E2E8(struct MapObject *, struct Sprite *); -u8 sub_805E30C(struct MapObject *, struct Sprite *); -u8 sub_805E338(struct MapObject *, struct Sprite *); -u8 sub_805E3C0(struct MapObject *, struct Sprite *); -u8 sub_805E3D4(struct MapObject *, struct Sprite *); -u8 sub_805E40C(struct MapObject *, struct Sprite *); -u8 sub_805E4C4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E620(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E6AC(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E738(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E7C4(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E850(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E8DC(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E968(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805E9F4(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EA80(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EB0C(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EB98(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EC24(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805ECB0(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805ED3C(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EDC8(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EE54(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EEE0(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EF6C(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805EFF8(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805F084(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805F110(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805F19C(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805F228(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 sub_805E4EC(struct MapObject *, struct Sprite *); -u8 sub_805F2B4(struct MapObject *, struct Sprite *); -u8 sub_805E5B4(struct MapObject *, struct Sprite *); -u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *, struct Sprite *); -u8 sub_805F364(struct MapObject *, struct Sprite *); -u8 sub_805F3C4(struct MapObject *, struct Sprite *); -u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *, struct Sprite *); -u8 mss_08062EA4(struct MapObject *, struct Sprite *); -u8 sub_805F3C4(struct MapObject *, struct Sprite *); -u8 sub_805FAF8(struct MapObject *, struct Sprite *); -u8 sub_805FB64(struct MapObject *, struct Sprite *); -u8 sub_805FB04(struct MapObject *, struct Sprite *); -u8 sub_805FBD4(struct MapObject *, struct Sprite *); -u8 sub_805FB04(struct MapObject *, struct Sprite *); -u8 sub_805FC44(struct MapObject *, struct Sprite *); -u8 sub_805FB04(struct MapObject *, struct Sprite *); -u8 sub_805FCB4(struct MapObject *, struct Sprite *); -u8 sub_805FCE8(struct MapObject *, struct Sprite *); -u8 sub_805FD08(struct MapObject *, struct Sprite *); +u8 MovementType_WanderAround_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step6(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step6(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step6(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayerInGrass_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_Hidden_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_MoveInPlace_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_JogInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_MoveInPlace_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_RunInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_MoveInPlace_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step2(struct EventObject *, struct Sprite *); -u8 get_go_image_anim_num(u8); -u8 get_go_fast_image_anim_num(u8); -u8 get_go_fast_image_anim_num(u8); -u8 get_go_faster_image_anim_num(u8); -u8 sub_805FD78(u8); +u8 GetMoveDirectionAnimNum(u8); +u8 GetMoveDirectionFastAnimNum(u8); +u8 GetMoveDirectionFastAnimNum(u8); +u8 GetMoveDirectionFasterAnimNum(u8); +u8 GetMoveDirectionFastestAnimNum(u8);  u32 state_to_direction(u8, u32, u32); -void sub_805AA98(); -void sub_805AAB0(void); -u8 sub_805AB54(void); -u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); -bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); -u8 GetFieldObjectIdByXY(s16, s16); -u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8); -u8 GetFieldObjectIdByLocalId(u8); -u8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *); -void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); -void RemoveFieldObjectInternal(struct MapObject *); -u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); +void ResetEventObjects(); +u8 GetFirstInactiveEventObjectId(void); +u8 GetEventObjectIdByLocalIdAndMap(u8, u8, u8); +bool8 TryGetEventObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); +u8 GetEventObjectIdByXY(s16, s16); +u8 GetEventObjectIdByLocalIdAndMapInternal(u8, u8, u8); +u8 GetEventObjectIdByLocalId(u8); +u8 GetAvailableEventObjectId(u16, u8, u8, u8 *); +void RemoveEventObjectByLocalIdAndMap(u8, u8, u8); +void RemoveEventObjectInternal(struct EventObject *); +u8 SpawnSpecialEventObject(struct EventObjectTemplate *);  u8 show_sprite(u8, u8, u8); -void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables); -u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority); +void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables); +u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority);  u8 sub_805B410(u8, u8, s16, s16, u8, u8); -void sub_805B55C(s16 a, s16 b); +void TrySpawnEventObjects(s16, s16);  void sub_805B710(u16 i, u16 i1); -void sub_805B980(struct MapObject *, u8); -void FieldObjectTurn(struct MapObject *, u8); -void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); -const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); -void FieldObjectHandleDynamicGraphicsId(struct MapObject *); +void sub_805B980(struct EventObject *, u8); +void EventObjectTurn(struct EventObject *, u8); +void EventObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8); +void SetEventObjectDynamicGraphicsId(struct EventObject *);  void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); -void FieldObjectGetLocalIdAndMap(struct MapObject *, void *, void *, void *); +void EventObjectGetLocalIdAndMap(struct EventObject *, void *, void *, void *);  void sub_805BCC0(s16 x, s16 y);  void sub_805BCF0(u8, u8, u8, u8);  void sub_805BD48(u8, u8, u8);  void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); -void gpu_pal_allocator_reset__manage_upper_four(void); +void FreeAndReserveObjectSpritePalettes(void);  void sub_805BDF8(u16);  u8 sub_805BE58(const struct SpritePalette *); -void pal_patch_for_npc(u16, u16); -u8 FindFieldObjectPaletteIndexByTag(u16); -void npc_load_two_palettes__no_record(u16, u8); -void npc_load_two_palettes__and_record(u16, u8); -void npc_coords_shift(struct MapObject *pObject, s16 x, s16 y); +void PatchObjectPalette(u16, u16); +u8 FindEventObjectPaletteIndexByTag(u16); +void LoadPlayerObjectReflectionPalette(u16, u8); +void LoadSpecialObjectReflectionPalette(u16, u8); +void ShiftEventObjectCoords(struct EventObject *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, u8); -void UpdateFieldObjectsForCameraUpdate(s16, s16); +void ShiftStillEventObjectCoords(struct EventObject *pObject); +u8 GetEventObjectIdByXYZ(u16, u16, u8); +void UpdateEventObjectsForCameraUpdate(s16, s16);  u8 AddCameraObject(u8);  void CameraObjectReset1(void); -u8 * GetFieldObjectScriptPointerByFieldObjectId(u8); -u16 GetFieldObjectFlagIdByFieldObjectId(u8); -u8 FieldObjectGetBerryTreeId(u8); -struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8); -void sub_805C754(struct MapObject *pObject); -void sub_805C774(struct MapObject *, u8); -void sub_805C78C(u8, u8, u8); -void sub_805C7C4(u8 i); -u8 FieldObjectDirectionToImageAnimId(u8); -u8 get_go_image_anim_num(u8 unk_19); -u8 sub_805FD98(u8); -u8 sub_805FDE8(u8); -u8 sub_805FDF8(u8); -u8 sub_805FE08(u8); -void npc_set_running_behaviour_etc(struct MapObject *, u8); -u8 npc_running_behaviour_by_direction(u8); -u8 npc_block_way(struct MapObject *, s16, s16, u32); -u8 sub_8060024(struct MapObject *, s16, s16, u8); +u8 * GetEventObjectScriptPointerByEventObjectId(u8); +u16 GetEventObjectFlagIdByEventObjectId(u8); +u8 EventObjectGetBerryTreeId(u8); +struct EventObjectTemplate *GetEventObjectTemplateByLocalIdAndMap(u8, u8, u8); +void OverrideTemplateCoordsForEventObject(struct EventObject *pObject); +void OverrideMovementTypeForEventObject(struct EventObject *, u8); +void TryOverrideTemplateCoordsForEventObject(u8, u8, u8); +void InitEventObjectPalettes(u8); +u8 GetFaceDirectionAnimNum(u8); +u8 GetMoveDirectionAnimNum(u8 unk_19); +u8 GetAcroWheelieDirectionAnimNum(u8); +u8 GetFishingDirectionAnimNum(u8); +u8 GetFishingNoCatchDirectionAnimNum(u8); +u8 GetFishingBiteDirectionAnimNum(u8); +void SetTrainerMovementType(struct EventObject *, u8); +u8 GetTrainerFacingDirectionMovementType(u8); +u8 GetCollisionAtCoords(struct EventObject *, s16, s16, u32); +u8 GetCollisionFlagsAtCoords(struct EventObject *, s16, s16, u8);  bool8 IsBerryTreeSparkling(u8, u8, u8);  void sub_8060288(u8, u8, u8);  void sub_8060388(s16, s16, s16 *, s16 *);  void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); -void GetFieldObjectMovingCameraOffset(s16 *, s16 *); -void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); -bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); -bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); -bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8); -void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a); -void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); -void FieldObjectClearAnim(struct MapObject *); -bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); -u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); -u8 FieldObjectGetSpecialAnim(struct MapObject *); -u8 GetFaceDirectionAnimId(u32); -u8 GetSimpleGoAnimId(u32); -u8 GetGoSpeed0AnimId(u32); -u8 sub_8060744(u32); -u8 d2s_08064034(u32); -u8 sub_806079C(u32); -u8 sub_80607C8(u32); -u8 sub_80607F4(u32); -u8 GetJumpLedgeAnimId(u32); -u8 sub_806084C(u32); -u8 sub_8060878(u32); -u8 sub_80608A4(u32); -u8 sub_80608D0(u32); -u8 GetStepInPlaceDelay32AnimId(u32); -u8 GetStepInPlaceDelay16AnimId(u32); -u8 GetStepInPlaceDelay8AnimId(u32); -u8 GetStepInPlaceDelay4AnimId(u32); -u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); -u8 sub_80609D8(u8); -u8 sub_8060A04(u8); -u8 sub_8060A30(u8); -u8 sub_8060A5C(u8); -u8 sub_8060A88(u8); -u8 sub_8060AB4(u8); -u8 sub_8060AE0(u8); -u8 sub_8060B0C(u8); -u8 sub_8060B38(u8); -u8 sub_8060B64(u8); +void GetEventObjectMovingCameraOffset(s16 *, s16 *); +void EventObjectMoveDestCoords(struct EventObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); +bool8 EventObjectIsMovementOverridden(struct EventObject *); +bool8 EventObjectIsHeldMovementActive(struct EventObject *); +bool8 EventObjectSetHeldMovement(struct EventObject *, u8); +void EventObjectForceSetHeldMovement(struct EventObject *pObject, u8 a); +void EventObjectClearHeldMovementIfActive(struct EventObject *); +void EventObjectClearHeldMovement(struct EventObject *); +bool8 EventObjectCheckHeldMovementStatus(struct EventObject *); +u8 EventObjectClearHeldMovementIfFinished(struct EventObject *); +u8 EventObjectGetHeldMovementActionId(struct EventObject *); +u8 GetFaceDirectionMovementAction(u32); +u8 GetWalkSlowMovementAction(u32); +u8 GetWalkNormalMovementAction(u32); +u8 GetWalkFastMovementAction(u32); +u8 GetRideWaterCurrentMovementAction(u32); +u8 GetWalkFastestMovementAction(u32); +u8 GetSlideMovementAction(u32); +u8 GetPlayerRunMovementAction(u32); +u8 GetJump2MovementAction(u32); +u8 GetJumpInPlaceMovementAction(u32); +u8 GetJumpInPlaceTurnAroundMovementAction(u32); +u8 GetJumpMovementAction(u32); +u8 GetJumpSpecialMovementAction(u32); +u8 GetWalkInPlaceSlowMovementAction(u32); +u8 GetWalkInPlaceNormalMovementAction(u32); +u8 GetWalkInPlaceFastMovementAction(u32); +u8 GetWalkInPlaceFastestMovementAction(u32); +u8 EventObjectFaceOppositeDirection(struct EventObject *, u8); +u8 GetAcroWheelieFaceDirectionMovementAction(u8); +u8 GetAcroPopWheelieFaceDirectionMovementAction(u8); +u8 GetAcroEndWheelieFaceDirectionMovementAction(u8); +u8 GetAcroWheelieHopFaceDirectionMovementAction(u8); +u8 GetAcroWheelieHopDirectionMovementAction(u8); +u8 GetAcroWheelieJumpDirectionMovementAction(u8); +u8 GetAcroWheelieInPlaceDirectionMovementAction(u8); +u8 GetAcroPopWheelieMoveDirectionMovementAction(u8); +u8 GetAcroWheelieMoveDirectionMovementAction(u8); +u8 GetAcroEndWheelieMoveDirectionMovementAction(u8);  u8 GetOppositeDirection(u8); -void sub_80634D0(struct MapObject *, struct Sprite *); -u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); +u8 SpawnSpecialEventObjectParametrized(u8, u8, u8, s16, s16, u8);  void CameraObjectSetFollowedObjectId(u8); -u8 sub_805ADDC(u8); -void sub_8060320(u32, s16 *, s16 *, s16, s16); -u8 obj_unfreeze(struct Sprite *, s16, s16, u8); -u16 npc_paltag_by_palslot(u8); +u8 TryInitLocalEventObject(u8); +u8 CreateCopySpriteAt(struct Sprite *, s16, s16, u8); +u16 GetObjectPaletteTag(u8);  void sub_8060470(s16 *, s16 *, s16, s16); -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); -void UnfreezeMapObject(struct MapObject *mapObject); -void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); +bool8 FreezeEventObject(struct EventObject *); +void FreezeEventObjects(void); +void FreezeEventObjectsExceptOne(u8); +void UnfreezeEventObjects(void); +void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible); +void TurnEventObject(u8, u8); +void UnfreezeEventObject(struct EventObject *eventObject);  void sub_806467C(struct Sprite *sprite, u8 direction);  bool8 sub_806468C(struct Sprite *sprite);  void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); -void DoShadowFieldEffect(struct MapObject *mapObject); +void DoShadowFieldEffect(struct EventObject *eventObject);  u8 sub_8064704(struct Sprite *);  u8 sub_806478C(struct Sprite *); -void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); -void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite); +void SetAndStartSpriteAnim(struct Sprite *sprite, u8 a2, u8 a3); +void DoRippleFieldEffect(struct EventObject *eventObj, struct Sprite *sprite);  bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y);  bool8 AreZCoordsCompatible(u8 z1, u8 z2); -void FieldObjectUpdateMetatileBehaviors(struct MapObject *); -void GetGroundEffectFlags_Reflection(struct MapObject *, u32 *); -void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *, u32 *); -void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *, u32 *); -void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *, u32 *); -void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *, u32 *); -void GetGroundEffectFlags_Tracks(struct MapObject *, u32 *); -void GetGroundEffectFlags_SandPile(struct MapObject *, u32 *); -void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *, u32 *); -void GetGroundEffectFlags_Puddle(struct MapObject *, u32 *); -void GetGroundEffectFlags_Ripple(struct MapObject *, u32 *); -void GetGroundEffectFlags_ShortGrass(struct MapObject *, u32 *); -void GetGroundEffectFlags_HotSprings(struct MapObject *, u32 *); -void GetGroundEffectFlags_Seaweed(struct MapObject *, u32 *); -void GetGroundEffectFlags_JumpLanding(struct MapObject *, u32 *); -u8 FieldObjectCheckForReflectiveSurface(struct MapObject *); +void EventObjectUpdateMetatileBehaviors(struct EventObject *); +void GetGroundEffectFlags_Reflection(struct EventObject *, u32 *); +void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject *, u32 *); +void GetGroundEffectFlags_TallGrassOnBeginStep(struct EventObject *, u32 *); +void GetGroundEffectFlags_LongGrassOnSpawn(struct EventObject *, u32 *); +void GetGroundEffectFlags_LongGrassOnBeginStep(struct EventObject *, u32 *); +void GetGroundEffectFlags_Tracks(struct EventObject *, u32 *); +void GetGroundEffectFlags_SandPile(struct EventObject *, u32 *); +void GetGroundEffectFlags_ShallowFlowingWater(struct EventObject *, u32 *); +void GetGroundEffectFlags_Puddle(struct EventObject *, u32 *); +void GetGroundEffectFlags_Ripple(struct EventObject *, u32 *); +void GetGroundEffectFlags_ShortGrass(struct EventObject *, u32 *); +void GetGroundEffectFlags_HotSprings(struct EventObject *, u32 *); +void GetGroundEffectFlags_Seaweed(struct EventObject *, u32 *); +void GetGroundEffectFlags_JumpLanding(struct EventObject *, u32 *); +u8 EventObjectCheckForReflectiveSurface(struct EventObject *);  u8 GetLedgeJumpDirection(s16, s16, u8);  u8 ZCoordToPriority(u8); -void FieldObjectUpdateZCoord(struct MapObject *pObject); +void EventObjectUpdateZCoord(struct EventObject *pObject);  void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);  #endif // GUARD_EVENTOBJMV_H diff --git a/include/ewram.h b/include/ewram.h index f1d9baa78..baa64f42f 100644 --- a/include/ewram.h +++ b/include/ewram.h @@ -98,13 +98,13 @@ extern u8 gSharedMem[];  #define ewram16001                      (gSharedMem[0x16001])  #define ewram16002                      (gSharedMem[0x16002])  #define ewram16003                      (gSharedMem[0x16003]) -#define ewram16004arr(i, bank)          (gSharedMem[0x16004 + i + bank * 2]) +#define ewram16004arr(i, battler)       (gSharedMem[0x16004 + i + battler * 2])  #define ewram1600C                      (gSharedMem[0x1600C])  #define ewram1600E                      (gSharedMem[0x1600E]) -#define ewram16010arr(bank)             (gSharedMem[0x16010 + bank]) +#define ewram16010arr(battler)          (gSharedMem[0x16010 + battler])  #define ewram1601B                      (gSharedMem[0x1601B])  #define eDynamicMoveType                (gSharedMem[0x1601C]) -#define eFocusPunchBank                 (gSharedMem[0x1601D]) +#define eFocusPunchBattler              (gSharedMem[0x1601D])  #define eDmgMultiplier                  (gSharedMem[0x1601F])  #define ewram16020                      ((u8 *)(gSharedMem + 0x16020))  #define ewram16020arr(i)                (gSharedMem[0x16020 + i]) @@ -112,10 +112,10 @@ extern u8 gSharedMem[];  #define ewram16056                      (gSharedMem[0x16056])  #define ewram16058                      (gSharedMem[0x16058])  #define ewram16059                      (gSharedMem[0x16059]) -#define ewram16060(bank)                (gSharedMem[0x16060 + bank]) -#define BATTLE_PARTY_ID(bank)           (gSharedMem[0x16064 + bank]) +#define ewram16060(battler)             (gSharedMem[0x16060 + battler]) +#define BATTLE_PARTY_ID(battler)        (gSharedMem[0x16064 + battler])  #define ewram16064                      (&gSharedMem[0x16064]) -#define ewram16064arr(bank)             (gSharedMem[0x16064 + bank]) +#define ewram16064arr(battler)          (gSharedMem[0x16064 + battler])  #define ewram16068arr(i)                (gSharedMem[0x16068 + i])  #define UNK_201606C_ARRAY               (gSharedMem + 0x1606C) // lazy define but whatever.  #define ewram1606Carr(i, a)             (gSharedMem[0x1606C + i + a * 3]) @@ -132,7 +132,7 @@ extern u8 gSharedMem[];  #define ewram1608A                      gSharedMem[0x1608A]  #define ewram1608B                      gSharedMem[0x1608B] -#define ewram1608Carr(bank)             (gSharedMem[0x1608C + bank]) +#define ewram1608Carr(battler)          (gSharedMem[0x1608C + battler])  #define EWRAM_1609D                     (gSharedMem[0x1609D])  #define ewram160A1                      (gSharedMem[0x160A1])  #define ewram160A4                      (gSharedMem[0x160A4]) @@ -144,31 +144,31 @@ extern u8 gSharedMem[];  #define ewram160AB                      (gSharedMem[0x160AB])  #define ewram160AC                      ((u8 *)(gSharedMem + 0x160AC))  #define ewram160ACarr(i)                (gSharedMem[0x160AC + i]) -#define ewram160ACarr2(i, bank)         (gSharedMem[0x160AC + i + bank * 2]) +#define ewram160ACarr2(i, battler)      (gSharedMem[0x160AC + i + battler * 2])  #define ewram160BC                      ((u16 *)(gSharedMem + 0x160BC))  // hp -#define ewram160BCarr(bank)             (gSharedMem[0x160BC + bank * 2]) +#define ewram160BCarr(battler)          (gSharedMem[0x160BC + battler * 2])  #define ewram160C0                      (gSharedMem[0x160C0])  #define ewram160C2_Flags                ((u16 *)(gSharedMem + 0x160C2))  #define ewram160C4_Callback             ((MainCallback *)(gSharedMem + 0x160C4))  #define ewram160C8                      (gSharedMem[0x160C8]) -#define ewram160C8arr(bank)             (gSharedMem[0x160C8 + (bank / 2)]) +#define ewram160C8arr(battler)          (gSharedMem[0x160C8 + (battler / 2)])  #define ewram160C9                      (gSharedMem[0x160C9])  #define ewram160CB                      (gSharedMem[0x160CB])  #define ewram160CC                      ((u8 *)(gSharedMem + 0x160CC))  #define ewram160CCarr(i)                (gSharedMem[0x160CC + i]) -#define USED_HELD_ITEM(bank)            ((((u16*)(&gSharedMem[0x160CC + bank * 2])))) -#define USED_HELD_ITEMS(bank)           (*(u16 *)&gSharedMem[0x160CC + 2 * (bank)]) -#define ewram160D4(bank)                (gSharedMem[0x160D4 + (bank / 2) * 2]) -#define ewram160D8(bank)                (gSharedMem[0x160D8 + (bank / 2)]) -#define ewram160DA(bank)                (gSharedMem[0x160DA + (bank / 2)]) +#define USED_HELD_ITEM(battler)         ((((u16*)(&gSharedMem[0x160CC + battler * 2])))) +#define USED_HELD_ITEMS(battler)        (*(u16 *)&gSharedMem[0x160CC + 2 * (battler)]) +#define ewram160D4(battler)             (gSharedMem[0x160D4 + (battler / 2) * 2]) +#define ewram160D8(battler)             (gSharedMem[0x160D8 + (battler / 2)]) +#define ewram160DA(battler)             (gSharedMem[0x160DA + (battler / 2)])  #define ewram160DD                      (gSharedMem[0x160DD])  #define ewram160E0(i)                   (gSharedMem[0x160E0 + i])  #define ewram160E6                      (gSharedMem[0x160E6])  #define ewram160E7                      (gSharedMem[0x160E7]) -#define CHOICED_MOVE(bank)              (((u16*)(&gSharedMem[0x160E8 + bank * 2]))) +#define CHOICED_MOVE(battler)           (((u16*)(&gSharedMem[0x160E8 + battler * 2])))  #define ewram160E8                      ((u8 *)(gSharedMem + 0x160E8))  #define ewram160E8arr(i)                (gSharedMem[0x160E8 + i]) -#define ewram160E8arr2(i, bank)         (gSharedMem[0x160E8 + i + bank * 2]) +#define ewram160E8arr2(i, battler)      (gSharedMem[0x160E8 + i + battler * 2])  #define ewram160F0                      ((u8 *)(gSharedMem + 0x160F0))  #define ewram160F0arr(i)                (gSharedMem[0x160F0 + i])  #define ewram160F8                      (gSharedMem[0x160F8]) @@ -177,7 +177,7 @@ extern u8 gSharedMem[];  #define ewram160FB                      (gSharedMem[0x160FB])  #define ewram16100                      ((u8 *)(gSharedMem + 0x16100))  #define ewram16100arr(i)                (gSharedMem[0x16100 + i]) -#define ewram16100arr2(i, bank)         (gSharedMem[0x16100 + i + bank * 4]) +#define ewram16100arr2(i, battler)      (gSharedMem[0x16100 + i + battler * 4])  #define ewram16108                      ((u8 *)(gSharedMem + 0x16108))  #define ewram16108arr(i)                (gSharedMem[0x16108 + i])  #define ewram16110                      (gSharedMem[0x16110]) @@ -186,12 +186,12 @@ extern u8 gSharedMem[];  #define ewram16113                      (gSharedMem[0x16113])  #define ewram16400                      (gSharedMem + 0x16400)  #define AI_THINKING_STRUCT              ((struct AI_ThinkingStruct *)(gSharedMem + 0x16800)) -#define UNK_2016A00_STRUCT              ((struct UnkBattleStruct1 *) (gSharedMem + 0x16A00)) +#define AI_BATTLE_HISTORY               ((struct BattleHistory *) (gSharedMem + 0x16A00))  #define AI_STACK                        ((struct AI_Stack *)         (gSharedMem + 0x16C00))  #define AI_ARRAY_160CC(i)               (gSharedMem[0x160CC + i * 2])  #define ewram16800                      (&gSharedMem[0x16800])  #define ewram17000                      (&gSharedMem[0x17000]) -#define eLearnMoveStruct                (struct LearnMoveStruct *)(gSharedMem + 0x17000) +#define eMoveTutorMenu                  (struct MoveTutorMenu *)(gSharedMem + 0x17000)  #define eSecretBaseRecord               ((struct SecretBaseRecord *)(gSharedMem + 0x17000))  #define eCableCar1                      ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))  #define ewram17002                      (&gSharedMem[0x17002]) @@ -232,7 +232,7 @@ extern u8 gSharedMem[];  #define eRoulette                       ((struct Roulette *)(gSharedMem + 0x19000))  #define shared192D0                     (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))  #define eContestAI                      ((struct ContestAIInfo *)(gSharedMem + 0x192E4)) -#define EWRAM_19348                     (*(u16 *)(gSharedMem + 0x19348)) +#define EWRAM_19348                     ((u16 *)(gSharedMem + 0x19348))  #define ewram19800                      (&gSharedMem[0x19800])  #define ePokedexView4                   (struct PokedexView *)(gSharedMem + 0x19800)  #define ewram1A000                      (&gSharedMem[0x1A000]) @@ -248,7 +248,6 @@ extern u8 gSharedMem[];  #define ewram1c000                      (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar  #define eHallOfFameMons1                (struct HallofFameMons*)(&gSharedMem[0x1C000])  #define eHOFPCScreenEffect              (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000)) -#define EWRAM_1C800                     (*(struct Unk201C800 *)(gSharedMem + 0x1C800))  #define ewram1D000                      ((struct Pokemon *)(gSharedMem + 0x1D000))  #define ewram1D000_2                    ((u16 *)(gSharedMem + 0x1D000))  #define ewram1D400                      ((u16 *)(gSharedMem + 0x1D400)) diff --git a/include/field_camera.h b/include/field_camera.h index 17126d190..a8c0f4218 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -1,14 +1,14 @@  #ifndef GUARD_FIELD_CAMERA_H  #define GUARD_FIELD_CAMERA_H -struct CameraSomething +struct FieldCamera  { -    void (*callback)(struct CameraSomething *); -    u32 unk4; -    s32 unk8; -    s32 unkC; -    s32 unk10; -    s32 unk14; +    void (*callback)(struct FieldCamera *); +    u32 trackedSpriteId; +    s32 movementSpeedX; +    s32 movementSpeedY; +    s32 curMovementOffsetX; +    s32 curMovementOffsetY;  };  extern struct Camera gCamera; diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 49e9f23e3..599d1da0c 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -4,12 +4,12 @@  struct FieldInput  {      u8 pressedAButton:1; -    u8 input_field_0_1:1; +    u8 checkStandardWildEncounter: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 tookStep:1;      u8 pressedBButton:1;      u8 input_field_1_0:1;      u8 input_field_1_1:1; @@ -23,19 +23,15 @@ struct FieldInput      u8 input_field_3;  }; -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 *GetFieldObjectScriptPointerPlayerFacing(void); -bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *); -bool8 sub_8068870(u16 a); -bool8 sub_8068894(void); -bool8 sub_8068A64(struct MapPosition *, u16); -u8 sub_8068F18(void); -bool8 dive_warp(struct MapPosition *position, u16 b); +void ClearPlayerFieldInput(struct FieldInput *pStruct); +void GetPlayerFieldInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys); +int ProcessPlayerFieldInput(struct FieldInput *pStruct); +u8 *GetInteractedLinkPlayerScript(struct MapPosition *, u8, u8); +void ClearPoisonStepCounter(void); +void RestartWildEncounterImmunitySteps(void); +u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *); +u8 *GetEventObjectScriptPointerPlayerFacing(void); +u8 TrySetDiveWarp(void); +bool8 dive_warp(struct MapPosition*, u16);  #endif diff --git a/include/field_effect.h b/include/field_effect.h index 4d0e90767..a1c175eb8 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -4,74 +4,6 @@  #include "sprite.h"  #include "task.h" -enum FieldEffectScriptIdx -{ -    FLDEFF_EXCLAMATION_MARK_ICON_1, -    FLDEFF_USE_CUT_ON_GRASS, -    FLDEFF_USE_CUT_ON_TREE, -    FLDEFF_SHADOW, -    FLDEFF_TALL_GRASS, -    FLDEFF_RIPPLE, -    FLDEFF_FIELD_MOVE_SHOW_MON, -    FLDEFF_ASH, -    FLDEFF_SURF_BLOB, -    FLDEFF_USE_SURF, -    FLDEFF_DUST, -    FLDEFF_USE_SECRET_POWER_CAVE, -    FLDEFF_JUMP_TALL_GRASS, -    FLDEFF_SAND_FOOTPRINTS, -    FLDEFF_JUMP_BIG_SPLASH, -    FLDEFF_SPLASH, -    FLDEFF_JUMP_SMALL_SPLASH, -    FLDEFF_LONG_GRASS, -    FLDEFF_JUMP_LONG_GRASS, -    FLDEFF_UNKNOWN_19, -    FLDEFF_UNKNOWN_20, -    FLDEFF_UNKNOWN_21, -    FLDEFF_UNKNOWN_22, -    FLDEFF_BERRY_TREE_GROWTH_SPARKLE, -    FLDEFF_DEEP_SAND_FOOTPRINTS, -    FLDEFF_POKECENTER_HEAL, -    FLDEFF_USE_SECRET_POWER_TREE, -    FLDEFF_USE_SECRET_POWER_SHRUB, -    FLDEFF_TREE_DISGUISE, -    FLDEFF_MOUNTAIN_DISGUISE, -    FLDEFF_NPCFLY_OUT, -    FLDEFF_USE_FLY, -    FLDEFF_FLY_IN, -    FLDEFF_EXCLAMATION_MARK_ICON_2, -    FLDEFF_FEET_IN_FLOWING_WATER, -    FLDEFF_BIKE_TIRE_TRACKS, -    FLDEFF_SAND_DISGUISE, -    FLDEFF_USE_ROCK_SMASH, -    FLDEFF_USE_DIG, -    FLDEFF_SAND_PILE, -    FLDEFF_USE_STRENGTH, -    FLDEFF_SHORT_GRASS, -    FLDEFF_HOT_SPRINGS_WATER, -    FLDEFF_USE_WATERFALL, -    FLDEFF_USE_DIVE, -    FLDEFF_POKEBALL, -    FLDEFF_HEART_ICON, -    FLDEFF_NOP_47, -    FLDEFF_NOP_48, -    FLDEFF_POP_OUT_OF_ASH, -    FLDEFF_LAVARIDGE_GYM_WARP, -    FLDEFF_SWEET_SCENT, -    FLDEFF_SAND_PILLAR, -    FLDEFF_BUBBLES, -    FLDEFF_SPARKLE, -    FLDEFF_SECRET_POWER_CAVE, -    FLDEFF_SECRET_POWER_TREE, -    FLDEFF_SECRET_POWER_SHRUB, -    FLDEFF_CUT_GRASS, -    FLDEFF_FIELD_MOVE_SHOW_MON_INIT, -    FLDEFF_USE_FLY_ANCIENT_TOMB, -    FLDEFF_SECRET_BASE_PC_TURN_ON, -    FLDEFF_HALL_OF_FAME_RECORD, -    FLDEFF_USE_TELEPORT -}; -  extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2];  extern const struct SpritePalette gUnknown_0839F114;  extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2]; @@ -156,11 +88,11 @@ bool8 sub_8086E50(struct Task *);  bool8 sub_8086EB0(struct Task *);  bool8 sub_8086ED4(struct Task *); -bool8 sub_8086FB0(struct Task *, struct MapObject *); -bool8 waterfall_1_do_anim_probably(struct Task *, struct MapObject *); -bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct MapObject *); -bool8 sub_8087030(struct Task *, struct MapObject *); -bool8 sub_8087058(struct Task *, struct MapObject *); +bool8 sub_8086FB0(struct Task *, struct EventObject *); +bool8 waterfall_1_do_anim_probably(struct Task *, struct EventObject *); +bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct EventObject *); +bool8 sub_8087030(struct Task *, struct EventObject *); +bool8 sub_8087058(struct Task *, struct EventObject *);  bool8 sub_8087124(struct Task *);  bool8 dive_2_unknown(struct Task *); @@ -168,37 +100,29 @@ bool8 dive_3_unknown(struct Task *);  void sub_80871B8(u8); -bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80872E4(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80873D8(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80873F4(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_808722C(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_8087264(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_8087298(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80872E4(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80873D8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80873F4(struct Task *, struct EventObject *, struct Sprite *); -bool8 sub_80874CC(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80874CC(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80874FC(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_8087548(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_808759C(struct Task *, struct EventObject *, struct Sprite *);  void sub_8087654(u8); -bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80877AC(struct Task *, struct MapObject *, struct Sprite *); -bool8 sub_80877D4(struct Task *, struct MapObject *, struct Sprite *); - -void sub_80878F4(struct Task *); -void sub_8087914(struct Task *); +bool8 sub_80876C8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80876F8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_8087774(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80877AC(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80877D4(struct Task *, struct EventObject *, struct Sprite *);  void sub_8087AA4(struct Task *);  void sub_8087AC8(struct Task *); -void sub_8087BEC(struct Task *); -void sub_8087C14(struct Task *); -void sub_8087CA4(struct Task *); -void sub_8087D78(struct Task *); -  void sub_8087E4C(struct Task *);  void sub_8087ED8(struct Task *);  void sub_8087FDC(struct Task *); @@ -249,8 +173,8 @@ u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority);  u8 CreateMonSprite_PicBox(u16, s16, s16, u8);  void FreeResourcesAndDestroySprite(struct Sprite *sprite);  void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); -void sub_80878A8(void); -void sub_8087BA8(void); +void StartEscapeRopeFieldEffect(void); +void CreateTeleportFieldEffectTask(void);  void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);  extern s32 gFieldEffectArguments[8]; diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 7bba24fa6..8462b6ff8 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -3,34 +3,34 @@  extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; -void sub_812869C(struct MapObject *); -bool8 sub_81286C4(struct MapObject *); -void oamc_shadow(struct Sprite *); +void sub_812869C(struct EventObject *); +bool8 sub_81286C4(struct EventObject *); +void UpdateShadowFieldEffect(struct Sprite *);  void sub_8087638(struct Sprite *);  void sub_808788C(struct Sprite *); -void sub_8127334(struct Sprite *); -void sub_8127584(struct Sprite *); -void sub_81276B4(struct Sprite *); -void sub_8127A7C(struct Sprite *); -void sub_8127D84(struct Sprite *); -void sub_8127F7C(struct Sprite *); -void sub_81282E0(struct Sprite *); -void sub_8128410(struct Sprite *); -void sub_81285AC(struct Sprite *); -void sub_8128774(struct Sprite *); -void sub_81287C4(struct Sprite *); -void sub_8128800(struct Sprite *); -void unc_grass_normal(struct Sprite *); -void unc_grass_tall(struct Sprite *); -u8 sub_8126B54(void); -void objid_set_invisible(u8); -void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); +void UpdateShortGrassFieldEffect(struct Sprite *); +void UpdateFootprintsTireTracksFieldEffect(struct Sprite *); +void UpdateSplashFieldEffect(struct Sprite *); +void UpdateHotSpringsWaterFieldEffect(struct Sprite *); +void UpdateAshFieldEffect(struct Sprite *); +void UpdateSurfBlobFieldEffect(struct Sprite *); +void UpdateSandPileFieldEffect(struct Sprite *); +void UpdateBubblesFieldEffect(struct Sprite *); +void UpdateDisguiseFieldEffect(struct Sprite *); +void UpdateSparkleFieldEffect(struct Sprite *); +void UpdateJumpLandingFieldEffect(struct Sprite *); +void WaitFieldEffectSpriteAnim(struct Sprite *); +void UpdateTallGrassFieldEffect(struct Sprite *); +void UpdateLongGrassFieldEffect(struct Sprite *); +u8 CreateWarpArrowSprite(void); +void SetSpriteInvisible(u8); +void ShowWarpArrowSprite(u8 unk_1B, u8 r6, s16 x, s16 y);  void sub_8127ED0(u8, u8);  void sub_8127F28(u8, u8, s16);  u8 sub_8128124(u8 id); -void ash(s16, s16, u16, s16); -void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a); -u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject); -u8 sub_8126FF0(u8, u8, u8, s16, s16); +void StartAshFieldEffect(s16, s16, u16, s16); +void InitObjectReflectionSprite(struct EventObject *eventObj, struct Sprite *sprite, u8 a); +u32 StartFieldEffectForEventObject(u8 fieldEffectId, struct EventObject *eventObject); +u8 FindTallGrassFieldEffectSpriteId(u8, u8, u8, s16, s16);  #endif // GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index cd0cb6eab..04538753a 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -13,12 +13,11 @@ void sub_8080A3C(void);  void sub_8080AC4(void);  void mapldr_default();  void sub_8080B60(void); -void atk17_seteffectsecondary(void); +void sub_8080DEC(void);  void sub_8080E28(void);  void sub_8080E44(void);  bool32 sub_8080E70(void);  void sub_8080E88(void); -void sub_8080E88();  void sp13E_warp_to_last_warp(void);  void sub_8080EF0(void);  void sp13F_fall_to_last_warp(void); @@ -28,5 +27,7 @@ void sub_8080F58(void);  void sub_8080F68(void);  void sub_8080F9C(void);  void debug_sub_80888D8(void); +void WarpFadeScreen(void); +void pal_fill_for_map_transition(void);  #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 1b25aad24..2ac149088 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -3,43 +3,54 @@  #include "task.h" -// sub_80587B4 +enum { +    PLAYER_AVATAR_STATE_NORMAL, +    PLAYER_AVATAR_STATE_MACH_BIKE, +    PLAYER_AVATAR_STATE_ACRO_BIKE, +    PLAYER_AVATAR_STATE_SURFING, +    PLAYER_AVATAR_STATE_UNDERWATER, +    PLAYER_AVATAR_STATE_FIELD_MOVE, +    PLAYER_AVATAR_STATE_FISHING, +    PLAYER_AVATAR_STATE_WATERING, +}; + +// MovementType_None2  void player_step(u8 a, u16 b, u16 c);  u8 ForcedMovement_None(void);  u8 ForcedMovement_Slip(void); -u8 sub_8058AAC(void); -u8 sub_8058AC4(void); -u8 sub_8058ADC(void); -u8 sub_8058AF4(void); -u8 sub_8058B0C(void); -u8 sub_8058B24(void); -u8 sub_8058B3C(void); -u8 sub_8058B54(void); +u8 ForcedMovement_WalkSouth(void); +u8 ForcedMovement_WalkNorth(void); +u8 ForcedMovement_WalkWest(void); +u8 ForcedMovement_WalkEast(void); +u8 ForcedMovement_RideCurrentSouth(void); +u8 ForcedMovement_RideCurrentNorth(void); +u8 ForcedMovement_RideCurrentWest(void); +u8 ForcedMovement_RideCurrentEast(void);  u8 ForcedMovement_SlideSouth(void);  u8 ForcedMovement_SlideNorth(void);  u8 ForcedMovement_SlideWest(void);  u8 ForcedMovement_SlideEast(void); -u8 ForcedMovement_MatJump(void); -u8 sub_8058C10(void); +u8 ForcedMovement_SecretBaseJumpMat(void); +u8 ForcedMovement_SecretBaseSpinMat(void);  u8 ForcedMovement_MuddySlope(void);  void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys);  void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys);  void sub_8058D0C(u8 direction, u16 heldKeys); -u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e); +u8 CheckForEventObjectCollision(struct EventObject *a, s16 b, s16 c, u8 d, u8 e);  void SetPlayerAvatarTransitionFlags(u16 a); -void nullsub_49(struct MapObject *a); -void PlayerAvatarTransition_Normal(struct MapObject *a); -void PlayerAvatarTransition_MachBike(struct MapObject *a); -void PlayerAvatarTransition_AcroBike(struct MapObject *a); -void PlayerAvatarTransition_Surfing(struct MapObject *a); -void PlayerAvatarTransition_Underwater(struct MapObject *a); -void sub_80591F4(struct MapObject *a); +void nullsub_49(struct EventObject *a); +void PlayerAvatarTransition_Normal(struct EventObject *a); +void PlayerAvatarTransition_MachBike(struct EventObject *a); +void PlayerAvatarTransition_AcroBike(struct EventObject *a); +void PlayerAvatarTransition_Surfing(struct EventObject *a); +void PlayerAvatarTransition_Underwater(struct EventObject *a); +void sub_80591F4(struct EventObject *a);  void sub_8059204(void); -u8 player_get_x22(void); +u8 PlayerGetCopyableMovement(void);  void PlayerSetAnimId(u8 a, u8 b);  void PlayerGoSpeed1(u8 a);  void PlayerGoSpeed2(u8 a); -void npc_use_some_d2s(u8 a); +void PlayerRideWaterCurrent(u8 a);  void PlayerGoSpeed4(u8 a);  void sub_805940C(u8 a);  void PlayerOnBikeCollide(u8); @@ -60,8 +71,8 @@ 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); -u8 player_get_direction_upper_nybble(void); +u8 GetPlayerFacingDirection(void); +u8 GetPlayerMovementDirection(void);  u8 PlayerGetZCoord(void);  u8 TestPlayerAvatarFlags(u8);  u8 sub_80597D0(void); @@ -69,7 +80,7 @@ u8 GetPlayerAvatarObjectId(void);  void sub_80597E8(void);  void sub_80597F4(void);  u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 a, u8 b); -u8 GetPlayerAvatarGraphicsIdByStateId(u8 a); +u8 GetPlayerAvatarGraphicsIdByStateId(u8);  u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId);  bool8 PartyHasMonWithSurf(void);  bool8 IsPlayerSurfingNorth(void); @@ -84,14 +95,14 @@ void sub_8059BF4(void);  // sub_8059C3C  void sub_8059C94(u8);  void sub_8059D08(u8); -u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c); -u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c); -u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c); -u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct MapObject *mapObject); -u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject); -u8 sub_805A100(struct Task *task, struct MapObject *mapObject); -u8 sub_805A178(struct Task *task, struct MapObject *mapObject); -u8 sub_805A1B8(struct Task *task, struct MapObject *mapObject); +u8 sub_8059E84(struct Task *task, struct EventObject *b, struct EventObject *c); +u8 sub_8059EA4(struct Task *task, struct EventObject *b, struct EventObject *c); +u8 sub_8059F40(struct Task *task, struct EventObject *b, struct EventObject *c); +u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct EventObject *eventObject); +u8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct EventObject *eventObject); +u8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct EventObject *eventObject); +u8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct EventObject *eventObject); +u8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct EventObject *eventObject);  void sub_805A20C(u8 a);  void StartFishing(u8 a);  u8 Fishing1(struct Task *task); diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index d86109282..c731fded1 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -2,6 +2,6 @@  #define GUARD_FIELD_SCREEN_EFFECT_H  void sub_8081594(u8); -void sub_80815E0(u8 val); +void WriteFlashScanlineEffectBuffer(u8 val);  #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_specials.h b/include/field_specials.h index a8e8d3da7..a74ff6381 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -12,11 +12,13 @@ extern u8 gUnknown_02039250;  extern u8 gUnknown_02039251;  extern u32 gUnknown_02039254;  extern u8 gUnknown_02039258; -extern u8 gUnknown_02039259;  extern u8 gUnknown_0203925A;  extern u8 gUnknown_0203925B;  extern u8 gUnknown_0203925C; +extern const u8 gUnknown_083F8408[]; +extern const u8 gUnknown_083F8410[]; +  void ResetCyclingRoadChallengeData(void);  bool32 CountSSTidalStep(u16);  u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); @@ -27,5 +29,9 @@ u8 GetLeadMonIndex(void);  void ResetFanClub(void);  u8 sub_810FB10(u8 a0);  void sub_810FEFC(void); +u16 GetSlotMachineId(void); +void sub_810FAA0(void); +int sub_810FB9C(void); +int sub_810FC18(void);  #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 5aa9eb360..e77342b72 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -2,10 +2,9 @@  #define GUARD_FIELDMAP2_H  #include "event_object_movement.h" -extern struct BackupMapData gUnknown_03004870; +extern struct BackupMapLayout gUnknown_03004870;  struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);  int GetMapBorderIdAt(int x, int y); -extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);  int CanCameraMoveInDirection(int direction);  u32 GetBehaviorByMetatileId(u16 metatile);  void MapGridSetMetatileEntryAt(int, int, u16); @@ -36,9 +35,9 @@ struct MapConnection *sub_8056BA0(s16 x, s16 y); // fieldmap.c  void sub_8056C50(u16, u16);  void sav1_camera_get_focus_coords(u16 *x, u16 *y);  void GetCameraCoords(u16*, u16*); -void sub_8056D28(struct MapData *pData); -void sub_8056D38(struct MapData *pData); -void apply_map_tileset2_palette(struct MapData *pData); +void sub_8056D28(struct MapLayout *pData); +void sub_8056D38(struct MapLayout *pData); +void apply_map_tileset2_palette(struct MapLayout *pData);  void copy_map_tileset1_tileset2_to_vram(/*TODO: arg types*/);  void apply_map_tileset1_tileset2_palette(/*TODO: arg types*/); diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h deleted file mode 100644 index 0a5261468..000000000 --- a/include/fldeff_cut.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef GUARD_FLDEFF_CUT_H -#define GUARD_FLDEFF_CUT_H - -void sub_80A25E8(void); -void sub_80A2634(void); -void sub_80A2684(void); -void sub_80A27A8(s16, s16); -void sub_80A28F4(s16, s16); -void objc_8097BBC(struct Sprite *sprite); -void sub_80A2AB8(void); -void sub_80A2B00(void); // unknown args - -#endif // GUARD_FLDEFF_CUT_H diff --git a/include/fldeff_decoration.h b/include/fldeff_decoration.h index 50b075b89..8e1917d3f 100644 --- a/include/fldeff_decoration.h +++ b/include/fldeff_decoration.h @@ -1,9 +1,9 @@  #ifndef GUARD_FLDEFF_DECORATION_H  #define GUARD_FLDEFF_DECORATION_H -void sub_80C68A4(s16 metatileId, s16 x, s16 y); -void sub_80C6A54(s16 x, s16 y); -void DoDecorationSoundEffect(s16 metatileId); -void DoYellowCave4Sparkle(void); +void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y); +void ShatterSecretBaseBreakableDoor(s16 x, s16 y); +void PlaySecretBaseMusicNoteMatSound(s16 metatileId); +void DoSecretBaseGlitterMatSparkle(void);  #endif // GUARD_FLDEFF_DECORATION_H diff --git a/include/fldeff_flash.h b/include/fldeff_flash.h index 546a7f5dc..0b56c64dc 100644 --- a/include/fldeff_flash.h +++ b/include/fldeff_flash.h @@ -2,7 +2,8 @@  #define GUARD_FLDEFF_FLASH_H  void sub_810CC80(void); -u8 sub_810CDB8(u8, u8); -u8 fade_type_for_given_maplight_pair(u8, u8); +u8 GetMapPairFadeToType(u8, u8); +u8 GetMapPairFadeFromType(u8, u8); +void debug_sub_8122080(void);  #endif // GUARD_FLDEFF_FLASH_H diff --git a/include/fldeff_strength.h b/include/fldeff_strength.h new file mode 100644 index 000000000..9e324e057 --- /dev/null +++ b/include/fldeff_strength.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_STRENGTH_H +#define GUARD_FLDEFF_STRENGTH_H + +void debug_sub_8130318(void); + +#endif //GUARD_FLDEFF_STRENGTH_H diff --git a/include/fldeff_teleport.h b/include/fldeff_teleport.h deleted file mode 100644 index e447f5132..000000000 --- a/include/fldeff_teleport.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef GUARD_FLDEFF_TELEPORT_H -#define GUARD_FLDEFF_TELEPORT_H - -void hm_teleport_run_dp02scr(void); -void sub_814A404(void); - -#endif // GUARD_FLDEFF_TELEPORT_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 7fd429d9e..26e0c873f 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -8,6 +8,8 @@  #define IWRAM_DATA __attribute__((section("iwram_data")))  #define EWRAM_DATA __attribute__((section("ewram_data"))) +#define UNUSED __attribute__((unused)) +#define NAKED __attribute__((naked))  #define ALIGNED(n) __attribute__((aligned(n))) diff --git a/include/gba/types.h b/include/gba/types.h index 33ae7df9a..4d6c24a6c 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -32,7 +32,9 @@ struct BgCnt  {      u16 priority:2;      u16 charBaseBlock:2; -    u16 dummy:4; +    u16 dummy:2; +    u16 mosaic:1; +    u16 palettes:1;      u16 screenBaseBlock:5;      u16 areaOverflowMode:1;      u16 screenSize:2; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 30047c677..f15348689 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -53,7 +53,7 @@ struct Tileset      /*0x14*/ TilesetCB callback;  }; -struct MapData +struct MapLayout  {      /*0x00*/ s32 width;      /*0x04*/ s32 height; @@ -63,14 +63,14 @@ struct MapData      /*0x14*/ struct Tileset *secondaryTileset;  }; -struct BackupMapData +struct BackupMapLayout  {      s32 width;      s32 height;      u16 *map;  }; -struct MapObjectTemplate +struct EventObjectTemplate  {      /*0x00*/ u8 localId;      /*0x01*/ u8 graphicsId; @@ -79,15 +79,13 @@ struct MapObjectTemplate      /*0x06*/ s16 y;      /*0x08*/ u8 elevation;      /*0x09*/ u8 movementType; -    /*0x0A*/ u8 unkA_0:4; -             u8 unkA_4:4; -    ///*0x0B*/ u8 fillerB[1]; -    /*0x0C*/ u16 unkC; -    /*0x0E*/ u16 unkE; +    /*0x0A*/ u8 movementRangeX:4; +             u8 movementRangeY:4; +    /*0x0C*/ u16 trainerType; +    /*0x0E*/ u16 trainerRange_berryTreeId;      /*0x10*/ u8 *script;      /*0x14*/ u16 flagId; -    /*0x16*/ u8 filler_16[2]; -};  /*size = 0x18*/ +};  struct WarpEvent  { @@ -112,7 +110,7 @@ struct BgEvent  {      /*0x00*/u16 x;      /*0x02*/u16 y; -    /*0x04*/u8 unk4; +    /*0x04*/u8 elevation;      /*0x05*/u8 kind;      /*0x08*/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. @@ -132,12 +130,12 @@ struct BgEvent  struct MapEvents  { -    u8 mapObjectCount; +    u8 eventObjectCount;      u8 warpCount;      u8 coordEventCount;      u8 bgEventCount; -    struct MapObjectTemplate *mapObjects; +    struct EventObjectTemplate *eventObjects;      struct WarpEvent *warps;      struct CoordEvent *coordEvents;      struct BgEvent *bgEvents; @@ -159,12 +157,12 @@ struct MapConnections  struct MapHeader  { -    /* 0x00 */ struct MapData *mapData; +    /* 0x00 */ struct MapLayout *mapLayout;      /* 0x04 */ struct MapEvents *events;      /* 0x08 */ u8 *mapScripts;      /* 0x0C */ struct MapConnections *connections;      /* 0x10 */ u16 music; -    /* 0x12 */ u16 mapDataId; +    /* 0x12 */ u16 mapLayoutId;      /* 0x14 */ u8 regionMapSectionId;      /* 0x15 */ u8 cave;      /* 0x16 */ u8 weather; @@ -175,79 +173,73 @@ struct MapHeader      /* 0x1B */ u8 battleType;  }; -struct MapObject +struct EventObject  {      /*0x00*/ u32 active:1; -             u32 mapobj_bit_1:1; -             u32 mapobj_bit_2:1; -             u32 mapobj_bit_3:1; -             u32 mapobj_bit_4:1; -             u32 mapobj_bit_5:1; -             u32 mapobj_bit_6:1; -             u32 mapobj_bit_7:1; -    /*0x01*/ u32 mapobj_bit_8:1; -             u32 mapobj_bit_9:1; -             u32 mapobj_bit_10:1; -             u32 mapobj_bit_11:1; -             u32 mapobj_bit_12:1; -             u32 mapobj_bit_13:1; -             u32 mapobj_bit_14:1; -             u32 mapobj_bit_15:1; -    /*0x02*/ u32 mapobj_bit_16:1; -             u32 mapobj_bit_17:1; -             u32 mapobj_bit_18:1; -             u32 mapobj_bit_19:1; -             u32 mapobj_bit_20:1; -             u32 mapobj_bit_21:1; -             u32 mapobj_bit_22:1; -             u32 mapobj_bit_23:1; -    /*0x03*/ u32 mapobj_bit_24:1; -             u32 mapobj_bit_25:1; -             u32 mapobj_bit_26:1; -             u32 mapobj_bit_27:1; -             u32 mapobj_bit_28:1; -             u32 mapobj_bit_29:1; -             u32 mapobj_bit_30:1; -             u32 mapobj_bit_31:1; +             u32 singleMovementActive:1; +             u32 triggerGroundEffectsOnMove:1; +             u32 triggerGroundEffectsOnStop:1; +             u32 disableCoveringGroundEffects:1; // disables ground effects that cover parts of the object's sprite +             u32 landingJump:1; +             u32 heldMovementActive:1; +             u32 heldMovementFinished:1; +    /*0x01*/ u32 frozen:1; +             u32 facingDirectionLocked:1; +             u32 disableAnim:1; // used to disable forced movement sliding animations (like on ice) +             u32 enableAnim:1; +             u32 inanimate:1; +             u32 invisible:1; +             u32 offScreen:1; +             u32 trackedByCamera:1; // only set for the player object +    /*0x02*/ u32 isPlayer:1; +             u32 hasReflection:1; +             u32 inShortGrass:1; +             u32 inShallowFlowingWater:1; +             u32 inSandPile:1; +             u32 inHotSprings:1; +             u32 hasShadow:1; +             u32 spriteAnimPausedBackup:1; +    /*0x03*/ u32 spriteAffineAnimPausedBackup:1; +             u32 disableJumpLandingGroundEffect:1; +             u32 fixedPriority:1;      /*0x04*/ u8 spriteId;      /*0x05*/ u8 graphicsId; -    /*0x06*/ u8 animPattern; +    /*0x06*/ u8 movementType;      /*0x07*/ u8 trainerType;      /*0x08*/ u8 localId;      /*0x09*/ u8 mapNum;      /*0x0A*/ u8 mapGroup; -    /*0x0B*/ u8 mapobj_unk_0B_0:4; -             u8 elevation:4; -    /*0x0C*/ struct Coords16 coords1; -    /*0x10*/ struct Coords16 coords2; -    /*0x14*/ struct Coords16 coords3; -    /*0x18*/ u8 mapobj_unk_18:4;  //current direction? -    /*0x18*/ u8 placeholder18:4; +    /*0x0B*/ u8 currentElevation:4; +             u8 previousElevation:4; +    /*0x0C*/ struct Coords16 initialCoords; +    /*0x10*/ struct Coords16 currentCoords; +    /*0x14*/ struct Coords16 previousCoords; +    /*0x18*/ u8 facingDirection:4; +    /*0x18*/ u8 movementDirection:4;      /*0x19*/ union __attribute__((packed)) {          u8 as_byte;          struct __attribute__((packed)) { -            u8 x:4; -            u8 y:4; -        } __attribute((aligned (1))) as_nybbles; -    } __attribute((aligned (1))) range; -    // /*0x19*/ u8 mapobj_unk_19; -    /*0x1A*/ u8 mapobj_unk_1A; -    /*0x1B*/ u8 mapobj_unk_1B; -    /*0x1C*/ u8 mapobj_unk_1C; +            u16 x:4; +            u16 y:4; +        } as_nybbles; +    }  range; +    /*0x1A*/ u8 fieldEffectSpriteId; +    /*0x1B*/ u8 warpArrowSpriteId; +    /*0x1C*/ u8 movementActionId;      /*0x1D*/ u8 trainerRange_berryTreeId; -    /*0x1E*/ u8 mapobj_unk_1E; -    /*0x1F*/ u8 mapobj_unk_1F; -    /*0x20*/ u8 mapobj_unk_20; -    /*0x21*/ u8 mapobj_unk_21; -    /*0x22*/ u8 animId; +    /*0x1E*/ u8 currentMetatileBehavior; +    /*0x1F*/ u8 previousMetatileBehavior; +    /*0x20*/ u8 previousMovementDirection; +    /*0x21*/ u8 directionSequenceIndex; +    /*0x22*/ u8 playerCopyableMovement; // used as an index to gCopyPlayerMovementFuncs for the "copy player" movement types      /*size = 0x24*/  }; -struct MapObjectGraphicsInfo +struct EventObjectGraphicsInfo  {      /*0x00*/ u16 tileTag; -    /*0x02*/ u16 paletteTag1; -    /*0x04*/ u16 paletteTag2; +    /*0x02*/ u16 paletteTag; +    /*0x04*/ u16 bridgeReflectionPaletteTag;      /*0x06*/ u16 size;      /*0x08*/ s16 width;      /*0x0A*/ s16 height; @@ -263,14 +255,14 @@ struct MapObjectGraphicsInfo      /*0x20*/ const union AffineAnimCmd *const *affineAnims;  }; -#define PLAYER_AVATAR_FLAG_ON_FOOT   (1 << 0) -#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1) -#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2) -#define PLAYER_AVATAR_FLAG_SURFING   (1 << 3) -#define PLAYER_AVATAR_FLAG_4         (1 << 4) -#define PLAYER_AVATAR_FLAG_5         (1 << 5) -#define PLAYER_AVATAR_FLAG_6         (1 << 6) -#define PLAYER_AVATAR_FLAG_DASH      (1 << 7) +#define PLAYER_AVATAR_FLAG_ON_FOOT    (1 << 0) +#define PLAYER_AVATAR_FLAG_MACH_BIKE  (1 << 1) +#define PLAYER_AVATAR_FLAG_ACRO_BIKE  (1 << 2) +#define PLAYER_AVATAR_FLAG_SURFING    (1 << 3) +#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4) +#define PLAYER_AVATAR_FLAG_5          (1 << 5) +#define PLAYER_AVATAR_FLAG_6          (1 << 6) +#define PLAYER_AVATAR_FLAG_DASH       (1 << 7)  enum  { @@ -290,6 +282,10 @@ enum      DIR_NORTH,      DIR_WEST,      DIR_EAST, +    DIR_SOUTHWEST, +    DIR_SOUTHEAST, +    DIR_NORTHWEST, +    DIR_NORTHEAST,  };  enum @@ -320,7 +316,7 @@ struct PlayerAvatar /* 0x202E858 */      /*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 mapObjectId; +    /*0x05*/ u8 eventObjectId;      /*0x06*/ bool8 preventStep;      /*0x07*/ u8 gender;      /*0x08*/ u8 acroBikeState; // 00 is normal, 01 is turning, 02 is standing wheelie, 03 is hopping wheelie @@ -342,8 +338,8 @@ struct Camera      s32 y;  }; -extern struct MapObject gMapObjects[]; -extern u8 gSelectedMapObject; +extern struct EventObject gEventObjects[]; +extern u8 gSelectedEventObject;  extern struct MapHeader gMapHeader;  extern struct PlayerAvatar gPlayerAvatar; diff --git a/include/global.h b/include/global.h index faa4ace68..3c0169606 100644 --- a/include/global.h +++ b/include/global.h @@ -1,6 +1,8 @@  #ifndef GUARD_GLOBAL_H  #define GUARD_GLOBAL_H +#include <string.h> +#include <stdlib.h>  #include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines.  #include "gba/gba.h" @@ -14,9 +16,6 @@  #define INCBIN_S8 {0}  #define INCBIN_S16 {0}  #define INCBIN_S32 {0} -void *memcpy (void *, const void *, size_t); -void *memset (void *, int, size_t); -int strcmp (const char *, const char *);  #endif  // Prevent cross-jump optimization. @@ -94,6 +93,22 @@ enum LanguageId  #define GAME_LANGUAGE (LANGUAGE_GERMAN)  #endif +// capacities of various saveblock objects +#define DAYCARE_MON_COUNT   2 +#define POKEBLOCKS_COUNT    40 +#define EVENT_OBJECTS_COUNT   16 +#define BERRY_TREES_COUNT   128 +#define FLAGS_COUNT         288 +#define VARS_COUNT          256 +#define MAIL_COUNT          16 +#define SECRET_BASES_COUNT  20 +#define PC_ITEMS_COUNT      50 +#define BAG_ITEMS_COUNT     20 +#define BAG_KEYITEMS_COUNT  20 +#define BAG_POKEBALLS_COUNT 16 +#define BAG_TMHM_COUNT      64 +#define BAG_BERRIES_COUNT   46 +  enum  {      MALE, @@ -338,7 +353,7 @@ struct TVShowBravoTrainerBattleTowerSpotlight      /*0x01*/ bool8 active;      /*0x02*/ u8 trainerName[8];      /*0x0A*/ u16 species; -    /*0x0C*/ u8 pokemonName[8]; +    /*0x0C*/ u8 enemyTrainerName[8];      /*0x14*/ u16 defeatedSpecies;      /*0x16*/ u16 var16;      /*0x18*/ u16 var18[1]; @@ -561,26 +576,26 @@ struct DayCareMail  };  struct DayCareStepCountersEtc { -    u32 steps[2]; +    u32 steps[DAYCARE_MON_COUNT];      u16 pendingEggPersonality;      u8 eggCycleStepsRemaining;  };  struct RecordMixingDayCareMail  { -    struct DayCareMail mail[2]; +    struct DayCareMail mail[DAYCARE_MON_COUNT];      u32 numDaycareMons; -    u16 itemsHeld[2]; // marks whether or not each daycare mon is currently holding an item. +    u16 itemsHeld[DAYCARE_MON_COUNT]; // marks whether or not each daycare mon is currently holding an item.  };  struct DayCareMisc  { -    struct DayCareMail mail[2]; +    struct DayCareMail mail[DAYCARE_MON_COUNT];      struct DayCareStepCountersEtc countersEtc;  };  struct DayCare { -    struct BoxPokemon mons[2]; +    struct BoxPokemon mons[DAYCARE_MON_COUNT];      struct DayCareMisc misc;  }; @@ -613,8 +628,8 @@ struct ContestWinner      /*0x04*/ u32 otId;  // otId      /*0x08*/ u16 species;  // species      /*0x0A*/ u8 contestCategory; -    /*0x0B*/ u8 nickname[0x16-0xB]; -    /*0x16*/ u8 trainerName[0x20-0x16]; +    /*0x0B*/ u8 nickname[11]; +    /*0x16*/ u8 trainerName[8];  };  // there should be enough flags for all 412 slots @@ -634,32 +649,32 @@ struct SaveBlock1 /* 0x02025734 */      /*0x2E*/ u8 weather;      /*0x2F*/ u8 weatherCycleStage;      /*0x30*/ u8 flashLevel;  // flash level on current map, 0 being normal and 4 being the darkest -    /*0x32*/ u16 mapDataId; +    /*0x32*/ u16 mapLayoutId;      /*0x34*/ u16 mapView[0x100];      /*0x234*/ u8 playerPartyCount;      /*0x238*/ struct Pokemon playerParty[6];      /*0x490*/ u32 money;      /*0x494*/ u16 coins;      /*0x496*/ u16 registeredItem; // registered for use with SELECT button -    /*0x498*/ struct ItemSlot pcItems[50]; -    /*0x560*/ struct ItemSlot bagPocket_Items[20]; -    /*0x5B0*/ struct ItemSlot bagPocket_KeyItems[20]; -    /*0x600*/ struct ItemSlot bagPocket_PokeBalls[16]; -    /*0x640*/ struct ItemSlot bagPocket_TMHM[64]; -    /*0x740*/ struct ItemSlot bagPocket_Berries[46]; -    /*0x7F8*/ struct Pokeblock pokeblocks[40]; +    /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT]; +    /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT]; +    /*0x5B0*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; +    /*0x600*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT]; +    /*0x640*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; +    /*0x740*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; +    /*0x7F8*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT];      /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO];      /*0x96C*/ u16 berryBlenderRecords[3];      /*0x972*/ u8 filler_972[0x6];      /*0x978*/ u16 trainerRematchStepCounter;      /*0x97A*/ u8 trainerRematches[100]; -    /*0x9E0*/ struct MapObject mapObjects[16]; -    /*0xC20*/ struct MapObjectTemplate mapObjectTemplates[64]; -    /*0x1220*/ u8 flags[0x120]; -    /*0x1340*/ u16 vars[0x100]; +    /*0x9E0*/ struct EventObject eventObjects[EVENT_OBJECTS_COUNT]; +    /*0xC20*/ struct EventObjectTemplate eventObjectTemplates[64]; +    /*0x1220*/ u8 flags[FLAGS_COUNT]; +    /*0x1340*/ u16 vars[VARS_COUNT];      /*0x1540*/ u32 gameStats[NUM_GAME_STATS]; -    /*0x1608*/ struct BerryTree berryTrees[128]; -    /*0x1A08*/ struct SecretBaseRecord secretBases[20]; +    /*0x1608*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; +    /*0x1A08*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];      /*0x2688*/ u8 playerRoomDecor[12];      /*0x2694*/ u8 playerRoomDecorPos[12];      /*0x26A0*/ u8 decorDesk[10]; @@ -690,7 +705,7 @@ struct SaveBlock1 /* 0x02025734 */          /*0x2B34*/ u16 unk2B34[6];          /*0x2B40*/ u16 unk2B40[6];      } easyChats; -    /*0x2B4C*/ struct MailStruct mail[16]; +    /*0x2B4C*/ struct MailStruct mail[MAIL_COUNT];      /*0x2D8C*/ u8 unk2D8C[4];  // What is this? Apparently it's supposed to be 64 bytes in size.      /*0x2D90*/ u8 filler_2D90[0x4];      /*0x2D94*/ union MauvilleMan mauvilleMan; @@ -699,9 +714,16 @@ struct SaveBlock1 /* 0x02025734 */      /*0x2EFC*/ struct ContestWinner museumPortraits[5];      /*0x2F9C*/ struct DayCare daycare;      /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; -    /*0x3108*/ u8 filler_3108[8]; -    /*0x3110*/ u8 giftRibbons[11]; -    /*0x3117*/ u8 filler_311B[0x29]; +    struct { +        /*0x3108*/ u8 unknown1[8]; +        /*0x3110*/ u8 giftRibbons[11]; +        /*0x311B*/ u8 unknown2[8]; +        /*0x3123*/ u32 currentPokeCoupons; +        /*0x3127*/ u32 totalEarnedPokeCoupons; +        /*0x312B*/ u8 unknown3[6]; +        /*0x3131*/ u8 receivedWishmakerJirachi; +        /*0x3132*/ u8 unknown4[18]; +    } __attribute__((packed)) externalReservedData;      /*0x3144*/ struct Roamer roamer;      /*0x3160*/ struct EnigmaBerry enigmaBerry;      /*0x3690*/ struct RamScript ramScript; diff --git a/include/graphics.h b/include/graphics.h index bdb2b160e..8e8e0c97e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2634,9 +2634,9 @@ extern const u16 gUnknown_08EA02C8[];  extern const u16 gUnknown_08EA0348[];  extern const u16 gUnknown_08EA15C8[];  extern const u16 gTradeMonBoxTilemap[]; -extern const u8 gUnknown_08D00000[]; -extern const u16 gUnknown_08D00524[]; -extern const u8 gUnknown_08D004E0[]; +extern const u8 gBattleTextboxTiles[]; +extern const u16 gBattleTextboxTilemap[]; +extern const u8 gBattleTextboxPalette[];  extern const u8 gNamingScreenBackButtonTiles[];  extern const u8 gNamingScreenOKButtonTiles[]; @@ -3348,4 +3348,77 @@ extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21;  extern const u8 gContestConfetti_Gfx[];  extern const u8 gContestConfetti_Pal[]; +extern const struct CompressedSpriteSheet gBattleTerrainTiles_TallGrass[]; +extern const u8 gBattleTerrainTilemap_TallGrass[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_TallGrass[]; +extern const u8 gBattleTerrainAnimTilemap_TallGrass[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_TallGrass[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_LongGrass[]; +extern const u8 gBattleTerrainTilemap_LongGrass[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_LongGrass[]; +extern const u8 gBattleTerrainAnimTilemap_LongGrass[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_LongGrass[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Sand[]; +extern const u8 gBattleTerrainTilemap_Sand[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Sand[]; +extern const u8 gBattleTerrainAnimTilemap_Sand[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Sand[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Underwater[]; +extern const u8 gBattleTerrainTilemap_Underwater[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Underwater[]; +extern const u8 gBattleTerrainAnimTilemap_Underwater[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Underwater[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Water[]; +extern const u8 gBattleTerrainTilemap_Water[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Water[]; +extern const u8 gBattleTerrainAnimTilemap_Water[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Water[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_PondWater[]; +extern const u8 gBattleTerrainTilemap_PondWater[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_PondWater[]; +extern const u8 gBattleTerrainAnimTilemap_PondWater[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_PondWater[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Rock[]; +extern const u8 gBattleTerrainTilemap_Rock[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Rock[]; +extern const u8 gBattleTerrainAnimTilemap_Rock[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Rock[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Cave[]; +extern const u8 gBattleTerrainTilemap_Cave[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Cave[]; +extern const u8 gBattleTerrainAnimTilemap_Cave[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Cave[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Building[]; +extern const u8 gBattleTerrainTilemap_Building[]; +extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_Building[]; +extern const u8 gBattleTerrainAnimTilemap_Building[]; +extern const struct CompressedSpritePalette gBattleTerrainPalette_Building[]; + +extern const struct CompressedSpritePalette gBattleTerrainPalette_Plain[]; + +extern const struct CompressedSpriteSheet gBattleTerrainTiles_Stadium[]; +extern const u8 gBattleTerrainTilemap_Stadium[]; + +extern const u8 gBattleWindowLargeGfx[]; +extern const u8 gBattleWindowSmallGfx[]; +extern const u8 gBattleWindowSmall2Gfx[]; +extern const u8 gBattleWindowSmall3Gfx[]; +extern const u8 gBattleWindowLarge2Gfx[]; +extern const u8 gBlankGfxCompressed[]; +extern const u8 gBattleGfx_BallStatusBar[]; +extern const u16 gUnknown_08D1212C[]; +extern const u16 gUnknown_08D1214C[]; +extern const u8 Tiles_D129AC[]; + +extern const u8 gAreaUnknownTiles[]; +extern const u16 gAreaUnknownPalette[]; +  #endif  // GUARD_GRAPHICS_H diff --git a/include/item.h b/include/item.h index 57aebf88e..69fe1f941 100644 --- a/include/item.h +++ b/include/item.h @@ -32,7 +32,7 @@ u8 ItemId_GetHoldEffectParam(u16 itemId);  const u8 *ItemId_GetDescription(u16 itemId);  bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);  u8 ItemId_GetImportance(u16 itemId); -u8 ItemId_GetUnknownValue(u16 itemId); +u8 ItemId_GetExitsBagOnUse(u16 itemId);  u8 ItemId_GetPocket(u16 itemId);  u8 ItemId_GetType(u16 itemId);  ItemUseFunc ItemId_GetFieldFunc(u16 itemId); diff --git a/include/item_menu.h b/include/item_menu.h index 726d36789..22ef3892c 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -3,6 +3,15 @@  #include "string_util.h" +enum +{ +	ITEM_USE_SINGLE_MON, +	ITEM_USE_GIVE_ITEM, +	ITEM_USE_UNUSED, +	ITEM_USE_GIVE_MAIL, +	ITEM_USE_ALL_MONS, +}; +  struct PocketScrollState  {      u8 cursorPos; @@ -30,7 +39,7 @@ void sub_80A5D04(void);  void ItemMenu_LoadSellMenu(void);  void sub_80A68CC();  void sub_80A6A30(void); -bool32 sub_80A6D1C(void); +bool32 UseRegisteredKeyItem(void);  void sub_80A6DCC(void);  void sub_80A7094(u8);  u8 CreateBerrySprite(u8, s16, s16); diff --git a/include/item_use.h b/include/item_use.h index ee7939824..1ba75a0ee 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -10,6 +10,7 @@ void ItemUseOutOfBattle_Rod(u8);  void ItemUseOnFieldCB_Rod(u8);  void ItemUseOutOfBattle_Itemfinder(u8);  void ItemUseOnFieldCB_Itemfinder(u8); +void ItemUseOutOfBattle_Berry(u8);  void RunItemfinderResults(u8);  void ExitItemfinder(u8);  bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8); @@ -22,19 +23,13 @@ void RotatePlayerAndExitItemfinder(u8);  void ItemUseOutOfBattle_PokeblockCase(u8);  void ItemUseOutOfBattle_CoinCase(u8);  void ItemUseOutOfBattle_SSTicket(u8); -void sub_80C9D00(u8);  void ItemUseOutOfBattle_WailmerPail(u8); -void sub_80C9D74(u8);  void ItemUseOutOfBattle_Medicine(u8);  void ItemUseOutOfBattle_SacredAsh(u8);  void ItemUseOutOfBattle_PPRecovery(u8);  void ItemUseOutOfBattle_PPUp(u8);  void ItemUseOutOfBattle_RareCandy(u8);  void ItemUseOutOfBattle_TMHM(u8); -void sub_80C9EE4(u8); -void sub_80C9F10(u8); -void sub_80C9F80(u8); -void sub_80C9FC0(u8);  void ItemUseOutOfBattle_Repel(u8);  void ItemUseOutOfBattle_BlackWhiteFlute(u8);  void task08_080A1C44(u8); diff --git a/include/macros.inc b/include/macros.inc index f34353079..ea9e57140 100644 --- a/include/macros.inc +++ b/include/macros.inc @@ -2,8 +2,8 @@  	.include "include/macros/function.inc"  	.include "include/macros/movement.inc"  	.include "include/macros/pokemon_data.inc" -	.include "include/macros/ec.inc"  	.include "include/macros/map.inc" +	.include "include/macros/mystery_event_script.inc"  	.macro region_map_location x, y, width, height, name  	.byte \x diff --git a/include/macros/battle_script.inc b/include/macros/battle_script.inc index e4fa0c454..d92e28934 100644 --- a/include/macros/battle_script.inc +++ b/include/macros/battle_script.inc @@ -1402,7 +1402,7 @@  	.endm  	.macro jumpifmovehadnoeffect jumpptr -	jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, \jumpptr +	jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED, \jumpptr  	.endm  	.macro jumpifbattletype flags, jumpptr diff --git a/include/macros/ec.inc b/include/macros/ec.inc deleted file mode 100644 index d3fd45c2f..000000000 --- a/include/macros/ec.inc +++ /dev/null @@ -1,8 +0,0 @@ - -	.macro ec_duplicates count -	.2byte 0xff00 + \count -	.endm - -	.macro ec_words_by_letter label -	.2byte (gEasyChatWordsByLetter_\label - gEasyChatWordsAlphabetized) / 2 -	.endm diff --git a/include/macros/event.inc b/include/macros/event.inc index fcbd3a055..8b2d587c9 100644 --- a/include/macros/event.inc +++ b/include/macros/event.inc @@ -1233,10 +1233,9 @@  	.byte 0xb7  	.endm -	.macro setvaddress long, word +	.macro setvaddress addr  	.byte 0xb8 -	.4byte \long -	.2byte \word +	.4byte \addr  	.endm  	.macro vgoto pointer diff --git a/include/macros/map.inc b/include/macros/map.inc index db37d9346..80257fd23 100644 --- a/include/macros/map.inc +++ b/include/macros/map.inc @@ -14,13 +14,15 @@  	.4byte \address  	.endm -	.macro object_event byte1, word1, byte2, byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10, byte11, byte12, byte13, byte14, script, word2, byte15, byte16 -	.byte \byte1 -	.2byte \word1 -	.byte \byte2, \byte3, \byte4, \byte5, \byte6, \byte7, \byte8, \byte9, \byte10, \byte11, \byte12, \byte13, \byte14 +	.macro object_event index, gfx, replacement, x, y, elevation, movement_type, x_radius, y_radius, trainer_type, sight_radius_tree_etc, script, event_flag +	.byte \index, \gfx, \replacement, 0 +	.2byte \x +	.2byte \y +	.byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 +    .2byte \trainer_type, \sight_radius_tree_etc  	.4byte \script -	.2byte \word2 -	.byte \byte15, \byte16 +	.2byte \event_flag +	.2byte 0  	inc _num_npcs  	.endm diff --git a/include/macros/movement.inc b/include/macros/movement.inc index 674ce7169..80a5b5dca 100644 --- a/include/macros/movement.inc +++ b/include/macros/movement.inc @@ -1,4 +1,4 @@ -	.macro create_movement name +	.macro create_movement_action name  	enum _\name  	.macro \name  	.byte _\name @@ -6,111 +6,104 @@  	.endm  	enum_start -	create_movement step_00 -	create_movement step_01 -	create_movement step_02 -	create_movement step_03 -	create_movement slow_step_down -	create_movement slow_step_up -	create_movement slow_step_left -	create_movement slow_step_right -	create_movement step_down -	create_movement step_up -	create_movement step_left -	create_movement step_right -	create_movement fast_step_down -	create_movement fast_step_up -	create_movement fast_step_left -	create_movement fast_step_right -	create_movement step_10 -	create_movement step_11 -	create_movement step_12 -	create_movement step_13 -	create_movement step_14 -	create_movement step_15 -	create_movement step_16 -	create_movement step_17 -	create_movement step_18 -	create_movement step_19 -	create_movement step_1a -	create_movement step_1b -	create_movement step_1c -	create_movement step_1d -	create_movement step_1e -	create_movement step_1f -	create_movement step_20 -	create_movement step_21 -	create_movement step_22 -	create_movement step_23 -	create_movement step_24 -	create_movement step_25 -	create_movement step_26 -	create_movement step_27 -	create_movement step_28 -	create_movement step_29 -	create_movement step_2a -	create_movement step_2b -	create_movement step_2c -	create_movement step_2d -	create_movement step_2e -	create_movement step_2f -	create_movement step_30 -	create_movement step_31 -	create_movement step_32 -	create_movement step_33 -	create_movement step_34 -	create_movement step_35 -	create_movement step_36 -	create_movement step_37 -	create_movement step_38 -	create_movement step_39 -	create_movement step_3a -	create_movement step_3b -	create_movement step_3c -	create_movement step_3d -	create_movement step_3e -	create_movement step_3f -	create_movement step_40 -	create_movement step_41 -	create_movement step_42 -	create_movement step_43 -	create_movement step_44 -	create_movement step_45 -	create_movement step_46 -	create_movement step_47 -	create_movement step_48 -	create_movement step_49 -	create_movement step_4a -	create_movement step_4b -	create_movement step_4c -	create_movement step_4d -	create_movement step_4e -	create_movement step_4f -	create_movement step_50 -	create_movement step_51 -	create_movement step_52 -	create_movement step_53 -	create_movement step_54 -	create_movement step_55 -	create_movement step_56 -	create_movement step_57 -	create_movement step_58 -	create_movement step_59 -	create_movement step_5a -	create_movement step_5b -	create_movement step_5c -	create_movement step_5d -	create_movement step_5e -	create_movement step_5f -	create_movement step_60 -	create_movement step_61 - -	enum_start 0x91 -	create_movement step_91 -	create_movement step_92 - -	enum_start 0x96 -	create_movement step_96 +	create_movement_action face_down +	create_movement_action face_up +	create_movement_action face_left +	create_movement_action face_right +	create_movement_action walk_slow_down +	create_movement_action walk_slow_up +	create_movement_action walk_slow_left +	create_movement_action walk_slow_right +	create_movement_action walk_down +	create_movement_action walk_up +	create_movement_action walk_left +	create_movement_action walk_right +	create_movement_action jump_2_down +	create_movement_action jump_2_up +	create_movement_action jump_2_left +	create_movement_action jump_2_right +	create_movement_action delay_1 +	create_movement_action delay_2 +	create_movement_action delay_4 +	create_movement_action delay_8 +	create_movement_action delay_16 +	create_movement_action walk_fast_down +	create_movement_action walk_fast_up +	create_movement_action walk_fast_left +	create_movement_action walk_fast_right +	create_movement_action walk_in_place_slow_down +	create_movement_action walk_in_place_slow_up +	create_movement_action walk_in_place_slow_left +	create_movement_action walk_in_place_slow_right +	create_movement_action walk_in_place_down +	create_movement_action walk_in_place_up +	create_movement_action walk_in_place_left +	create_movement_action walk_in_place_right +	create_movement_action walk_in_place_fast_down +	create_movement_action walk_in_place_fast_up +	create_movement_action walk_in_place_fast_left +	create_movement_action walk_in_place_fast_right +	create_movement_action walk_in_place_fastest_down +	create_movement_action walk_in_place_fastest_up +	create_movement_action walk_in_place_fastest_left +	create_movement_action walk_in_place_fastest_right +	create_movement_action ride_water_current_down +	create_movement_action ride_water_current_up +	create_movement_action ride_water_current_left +	create_movement_action ride_water_current_right +	create_movement_action walk_fastest_down +	create_movement_action walk_fastest_up +	create_movement_action walk_fastest_left +	create_movement_action walk_fastest_right +	create_movement_action slide_down +	create_movement_action slide_up +	create_movement_action slide_left +	create_movement_action slide_right +	create_movement_action player_run_down +	create_movement_action player_run_up +	create_movement_action player_run_left +	create_movement_action player_run_right +	create_movement_action start_anim_in_direction +	create_movement_action jump_special_down +	create_movement_action jump_special_up +	create_movement_action jump_special_left +	create_movement_action jump_special_right +	create_movement_action face_player +	create_movement_action face_away_player +	create_movement_action lock_facing_direction +	create_movement_action unlock_facing_direction +	create_movement_action jump_down +	create_movement_action jump_up +	create_movement_action jump_left +	create_movement_action jump_right +	create_movement_action jump_in_place_down +	create_movement_action jump_in_place_up +	create_movement_action jump_in_place_left +	create_movement_action jump_in_place_right +	create_movement_action jump_in_place_down_up +	create_movement_action jump_in_place_up_down +	create_movement_action jump_in_place_left_right +	create_movement_action jump_in_place_right_left +	create_movement_action face_original_direction +	create_movement_action nurse_joy_bow +	create_movement_action enable_jump_landing_ground_effect +	create_movement_action disable_jump_landing_ground_effect +	create_movement_action disable_anim +	create_movement_action restore_anim +	create_movement_action set_invisible +	create_movement_action set_visible +	create_movement_action emote_exclamation_mark +	create_movement_action emote_question_mark +	create_movement_action emote_heart +	create_movement_action reveal_trainer +	create_movement_action rock_smash_break +	create_movement_action cut_tree +	create_movement_action set_fixed_priority +	create_movement_action clear_fixed_priority +	create_movement_action init_affine_anim +	create_movement_action clear_affine_anim +	create_movement_action walk_down_affine_0 +	create_movement_action walk_down_affine_1  	enum_start 0xfe -	create_movement step_end +	create_movement_action end_movement diff --git a/include/macros/mystery_event_script.inc b/include/macros/mystery_event_script.inc new file mode 100644 index 000000000..4d5f59d1b --- /dev/null +++ b/include/macros/mystery_event_script.inc @@ -0,0 +1,88 @@ +	.macro me_nop +	.byte 0 +	.endm + +	.macro me_checkcompat word, v1, v2, v3, v4 +	.byte 1 +	.4byte \word +	.2byte \v1 +	.4byte \v2 +	.2byte \v3 +	.4byte \v4 +	.endm + +	.macro me_end +	.byte 2 +	.endm + +	.macro me_setmsg value, str +	.byte 3 +	.byte \value +	.4byte \str +	.endm + +	.macro me_setstatus value +	.byte 4 +	.byte \value +	.endm + +	.macro me_runscript script +	.byte 5 +	.4byte \script +	.endm + +	.macro me_initramscript mapId, objId, script, end +	.byte 6 +	map \mapId +	.byte \objId +	.4byte \script, \end +	.endm + +	.macro me_setenigmaberry berry +	.byte 7 +	.4byte \berry +	.endm + +	.macro me_giveribbon index, ribbonId +	.byte 8 +	.byte \index, \ribbonId +	.endm + +	.macro me_givenationaldex +	.byte 9 +	.endm + +	.macro me_addrareword word +	.byte 10 +	.byte \word +	.endm + +	.macro me_setrecordmixinggift unk, quantity, itemId +	.byte 11 +	.byte \unk, \quantity +	.2byte \itemId +	.endm + +	.macro me_givepokemon data +	.byte 12 +	.4byte \data +	.endm + +	.macro me_addtrainer data +	.byte 13 +	.4byte \data +	.endm + +	.macro me_enableresetrtc +	.byte 14 +	.endm + +	.macro me_checksum checksum, data, dataEnd +	.byte 15 +	.4byte \checksum, \data, \dataEnd +	.endm + +	.macro me_crc crc, data, dataEnd +	.byte 16 +	.4byte \crc, \data, \dataEnd +	.endm diff --git a/include/main.h b/include/main.h index 78403225e..8a7c4d67c 100644 --- a/include/main.h +++ b/include/main.h @@ -64,4 +64,7 @@ void InitFlashTimer(void);  void DoSoftReset(void);  void ClearPokemonCrySongs(void); +extern const char BuildDateTime[]; +extern s8 gPcmDmaCounter; +  #endif // GUARD_MAIN_H diff --git a/include/mauville_man.h b/include/mauville_man.h index 622cd1bfb..5b2d00c6a 100644 --- a/include/mauville_man.h +++ b/include/mauville_man.h @@ -6,5 +6,7 @@  void SetupMauvilleOldMan(void);  void sub_80F7F30(void);  void sub_80F83D0(void); +void debug_sub_810B32C(u8); +u8 GetCurrentMauvilleOldMan(void);  #endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu.h b/include/menu.h index 3295cd5c5..8741649c8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -4,10 +4,12 @@  #include "task.h"  #include "text.h" +typedef bool8 (*MenuFunc)(); +  struct MenuAction  {     const u8 *text; -   u8 (*func)(); +   MenuFunc func;  };  struct MenuAction2 @@ -57,8 +59,8 @@ s8 Menu_ProcessInputNoWrap(void);  void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32);  s8 Menu_ProcessInputGridLayout(void);  u8 Menu_GetColumnXCoord(u8); -void Menu_PrintItems(u8, u8, u8, const struct MenuAction[]); -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); +void Menu_PrintItems(u8, u8, u8, const void *); +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order);  void InitYesNoMenu(u8, u8, u8);  void DisplayYesNoMenu(u8, u8, u32);  s8 Menu_ProcessInputNoWrap_(void); @@ -69,10 +71,10 @@ int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32);  void MenuPrint_RightAligned(const u8 *, u8, u8);  void sub_8072B80(const u8 *, u8, u8, const u8 *);  void sub_8072BD8(const u8 *, u8, u8, u16); -u8 *sub_8072C14(u8 *, s32, u8, u8); -u8 *sub_8072C44(u8 *, s32, u8, u8); -u8 *sub_8072C74(u8 *, const u8 *, u8, u8); -u8 sub_8072CA4(const u8 *s); +u8 *AlignInt1InMenuWindow(u8 *, s32, u8, u8); +u8 *AlignInt2InMenuWindow(u8 *, s32, u8, u8); +u8 *AlignStringInMenuWindow(u8 *, const u8 *, u8, u8); +u8 GetStringWidthInMenuWindow(const u8 *s);  u8 Menu_GetTextWindowPaletteNum(void);  void Menu_GetTextColors(u8 *, u8 *, u8 *);  u32 Menu_UpdateWindowTextOverrideLineLength(u8); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index a1c872c73..fb50ae724 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -50,5 +50,8 @@ void StartVerticalScrollIndicators(u8);  void sub_80F98DC(u8);  void PauseVerticalScrollIndicator(u8);  void SetVerticalScrollIndicatorPriority(u8, u8); +#if DEBUG +void PrintTriangleCursorWithPalette(u8, u8, u8); +#endif // DEBUG  #endif // GUARD_MENU_HELPERS_H diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index f4250f07b..b94ffe0cd 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -24,11 +24,10 @@ bool8 MetatileBehavior_IsEastArrowWarp(u8);  bool8 MetatileBehavior_IsWestArrowWarp(u8);  bool8 MetatileBehavior_IsNorthArrowWarp(u8);  bool8 MetatileBehavior_IsSouthArrowWarp(u8); -bool8 MetatileBehavior_IsArrowWarp(u8); -bool8 MetatileBehavior_IsMoveTile(u8); +bool8 MetatileBehavior_IsForcedMovementTile(u8);  bool8 MetatileBehavior_IsIce_2(u8);  bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8); -bool8 MetatileBehavior_0x05(u8); +bool8 Unref_MetatileBehavior_IsUnused05(u8);  bool8 MetatileBehavior_IsWalkNorth(u8);  bool8 MetatileBehavior_IsWalkSouth(u8);  bool8 MetatileBehavior_IsWalkWest(u8); @@ -44,50 +43,50 @@ bool8 MetatileBehavior_IsSlideEast(u8);  bool8 MetatileBehavior_IsCounter(u8);  bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8, u8);  bool8 MetatileBehavior_IsPC(u8); -bool8 is_tile_x84(u8); -bool8 sub_80571C0(u8); +bool8 MetatileBehavior_IsLinkBattleRecords(u8); +bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8);  bool8 MetatileBehavior_IsSecretBaseCave(u8);  bool8 MetatileBehavior_IsSecretBaseTree(u8);  bool8 MetatileBehavior_IsSecretBaseShrub(u8);  bool8 MetatileBehavior_IsSecretBasePC(u8); -bool8 sub_805724C(u8); -bool8 unref_sub_8057260(u8); -bool8 sub_8057274(u8); -bool8 sub_8057288(u8); -bool8 sub_805729C(u8); -bool8 sub_80572B0(u8); -bool8 unref_sub_80572C4(u8); -bool8 sub_80572D8(u8); -bool8 sub_80572EC(u8); -bool8 sub_8057300(u8); -bool8 sub_8057314(u8); -bool8 sub_8057328(u8); -bool8 sub_805733C(u8); -bool8 sub_8057350(u8); -bool8 sub_8057364(u8); -bool8 sub_8057378(u8); -bool8 sub_805738C(u8); +bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8); +bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2(u8); +bool8 MetatileBehavior_IsBlockDecoration(u8); +bool8 MetatileBehavior_IsSecretBaseImpassable(u8); +bool8 MetatileBehavior_IsNormal(u8); +bool8 MetatileBehavior_IsSecretBaseNorthWall(u8); +bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8); +bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8); +bool8 MetatileBehavior_IsLargeMatCenter(u8); +bool8 MetatileBehavior_IsSecretBaseHole(u8); +bool8 MetatileBehavior_IsSecretBaseBalloon(u8); +bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8); +bool8 MetatileBehavior_IsSecretBaseMusicNoteMat(u8); +bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8); +bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8); +bool8 MetatileBehavior_IsSecretBaseShieldOrToyTV(u8); +bool8 MetatileBehavior_IsPlayerRoomPCOn(u8);  bool8 MetatileBehavior_HasRipples(u8);  bool8 MetatileBehavior_IsPuddle(u8);  bool8 MetatileBehavior_IsTallGrass(u8);  bool8 MetatileBehavior_IsLongGrass(u8);  bool8 MetatileBehavior_IsBerryTreeSoil(u8);  bool8 MetatileBehavior_IsAshGrass(u8); -bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8); +bool8 MetatileBehavior_IsFootprints(u8);  bool8 MetatileBehavior_IsBridge(u8); -u8 sub_8057450(u8); +u8 MetatileBehavior_GetBridgeType(u8);  bool8 MetatileBehavior_IsLandWildEncounter(u8);  bool8 MetatileBehavior_IsWaterWildEncounter(u8); -bool8 sub_80574C4(u8); -bool8 sub_80574D8(u8); -bool8 sub_80574EC(u8); -bool8 sub_805750C(u8); +bool8 MetatileBehavior_IsIndoorEncounter(u8); +bool8 MetatileBehavior_IsMountainTop(u8); +bool8 MetatileBehavior_IsDiveable(u8); +bool8 MetatileBehavior_IsNotSurfacable(u8);  bool8 MetatileBehavior_IsShallowFlowingWater(u8);  bool8 MetatileBehavior_IsThinIce(u8);  bool8 MetatileBehavior_IsCrackedIce(u8); -bool8 sub_8057568(u8); -bool8 unref_sub_8057584(u8); -bool8 sub_805759C(u8); +bool8 MetatileBehavior_IsOceanWater(u8); +bool8 Unref_MetatileBehavior_IsUnusedSootopolisWater(u8); +bool8 MetatileBehavior_IsFeebasEncounterable(u8);  bool8 MetatileBehavior_IsEastBlocked(u8);  bool8 MetatileBehavior_IsWestBlocked(u8);  bool8 MetatileBehavior_IsNorthBlocked(u8); @@ -96,18 +95,18 @@ bool8 MetatileBehavior_IsShortGrass(u8);  bool8 MetatileBehavior_IsHotSprings(u8);  bool8 MetatileBehavior_IsWaterfall(u8);  bool8 MetatileBehavior_IsFortreeBridge(u8); -bool8 sub_80576A0(u8); -bool8 sub_80576B4(u8); -bool8 sub_80576C8(u8); -bool8 sub_80576DC(u8); +bool8 MetatileBehavior_IsPacifidlogVerticalLog1(u8); +bool8 MetatileBehavior_IsPacifidlogVerticalLog2(u8); +bool8 MetatileBehavior_IsPacifidlogHorizontalLog1(u8); +bool8 MetatileBehavior_IsPacifidlogHorizontalLog2(u8);  bool8 MetatileBehavior_IsPacifidlogLog(u8);  bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8);  bool8 MetatileBehavior_IsRegionMap(u8); -bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8); +bool8 MetatileBehavior_IsClosedSootopolisDoor(u8);  bool8 MetatileBehavior_IsRoulette(u8);  bool8 MetatileBehavior_IsPokeblockFeeder(u8); -bool8 MetatileBehavior_0xBB(u8); -bool8 MetatileBehavior_0xBC(u8); +bool8 MetatileBehavior_IsSecretBaseJumpMat(u8); +bool8 MetatileBehavior_IsSecretBaseSpinMat(u8);  bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8);  bool8 MetatileBehavior_IsLavaridge1FWarp(u8);  bool8 MetatileBehavior_IsAquaHideoutWarp(u8); @@ -124,7 +123,7 @@ bool8 MetatileBehavior_IsHorizontalRail(u8);  bool8 MetatileBehavior_IsSeaweed(u8);  bool8 MetatileBehavior_IsRunningDisallowed(u8);  bool8 MetatileBehavior_IsCuttableGrass(u8); -bool8 sub_805791C(u8); +bool8 MetatileBehavior_IsRunningShoesManual(u8);  bool8 MetatileBehavior_IsPictureBookShelf(u8);  bool8 MetatileBehavior_IsBookShelf(u8);  bool8 MetatileBehavior_IsPokeCenterBookShelf(u8); diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h deleted file mode 100644 index 1241fbb81..000000000 --- a/include/metatile_behaviors.h +++ /dev/null @@ -1,173 +0,0 @@ -#ifndef GUARD_METATILE_BEHAVIORS -#define GUARD_METATILE_BEHAVIORS - -#define MB_NORMAL 0x00 -#define MB_TALL_GRASS 0x02 -#define MB_LONG_GRASS 0x03 -#define MB_04 0x04 -#define MB_05 0x05 -#define MB_DEEP_SAND 0x06 -#define MB_SHORT_GRASS 0x07 -#define MB_CAVE 0x08 -#define MB_LONG_GRASS_SOUTH_EDGE 0x09 -#define MB_NO_RUNNING 0x0A -#define MB_0B 0x0B -#define MB_MOUNTAIN_TOP 0x0C -#define MB_BATTLE_PYRAMID_WARP 0x0D -#define MB_MOSSDEEP_GYM_WARP 0x0E -#define MB_MT_PYRE_HOLE 0x0F -#define MB_POND_WATER 0x10 -#define MB_SEMI_DEEP_WATER 0x11 -#define MB_DEEP_WATER 0x12 -#define MB_WATERFALL 0x13 -#define MB_SOOTOPOLIS_DEEP_WATER 0x14 -#define MB_OCEAN_WATER 0x15 -#define MB_PUDDLE 0x16 -#define MB_SHALLOW_WATER 0x17 -#define MB_18 0x18 -#define MB_NO_SURFACING 0x19 -#define MB_1A 0x1A -#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B -#define MB_SHOAL_CAVE_ENTRANCE 0x1C -#define MB_ICE 0x20 -#define MB_SAND 0x21 -#define MB_SEAWEED 0x22 -#define MB_ASHGRASS 0x24 -#define MB_25 0x25 -#define MB_THIN_ICE 0x26 -#define MB_CRACKED_ICE 0x27 -#define MB_HOT_SPRINGS 0x28 -#define MB_LAVARIDGE_GYM_B1F_WARP 0x29 -#define MB_SEAWEED_NO_SURFACING 0x2A -#define MB_REFLECTION_UNDER_BRIDGE 0x2B -#define MB_IMPASSABLE_EAST 0x30 -#define MB_IMPASSABLE_WEST 0x31 -#define MB_IMPASSABLE_NORTH 0x32 -#define MB_IMPASSABLE_SOUTH 0x33 -#define MB_IMPASSABLE_NORTHEAST 0x34 -#define MB_IMPASSABLE_NORTHWEST 0x35 -#define MB_IMPASSABLE_SOUTHEAST 0x36 -#define MB_IMPASSABLE_SOUTHWEST 0x37 -#define MB_JUMP_EAST 0x38 -#define MB_JUMP_WEST 0x39 -#define MB_JUMP_NORTH 0x3A -#define MB_JUMP_SOUTH 0x3B -#define MB_JUMP_SOUTHEAST 0x3E -#define MB_JUMP_SOUTHWEST 0x3F -#define MB_WALK_EAST 0x40 -#define MB_WALK_WEST 0x41 -#define MB_WALK_NORTH 0x42 -#define MB_WALK_SOUTH 0x43 -#define MB_SLIDE_EAST 0x44 -#define MB_SLIDE_WEST 0x45 -#define MB_SLIDE_NORTH 0x46 -#define MB_SLIDE_SOUTH 0x47 -#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 -#define MB_EASTWARD_CURRENT 0x50 -#define MB_WESTWARD_CURRENT 0x51 -#define MB_NORTHWARD_CURRENT 0x52 -#define MB_SOUTHWARD_CURRENT 0x53 -#define MB_NON_ANIMATED_DOOR 0x60 -#define MB_LADDER 0x61 -#define MB_EAST_ARROW_WARP 0x62 -#define MB_WEST_ARROW_WARP 0x63 -#define MB_NORTH_ARROW_WARP 0x64 -#define MB_SOUTH_ARROW_WARP 0x65 -#define MB_CRACKED_FLOOR_HOLE 0x66 -#define MB_AQUA_HIDEOUT_WARP 0x67 -#define MB_LAVARIDGE_GYM_1F_WARP 0x68 -#define MB_ANIMATED_DOOR 0x69 -#define MB_UP_ESCALATOR 0x6A -#define MB_DOWN_ESCALATOR 0x6B -#define MB_WATER_DOOR 0x6C -#define MB_WATER_SOUTH_ARROW_WARP 0x6D -#define MB_DEEP_SOUTH_WARP 0x6E -#define MB_WARP_OR_BRIDGE 0x70 -#define MB_ROUTE120_NORTH_BRIDGE_1 0x72 -#define MB_ROUTE120_NORTH_BRIDGE_2 0x73 -#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 -#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75 -#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 -#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 -#define MB_FORTREE_BRIDGE 0x78 -#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A -#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B -#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C -#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D -#define MB_ROUTE110_BRIDGE 0x7F -#define MB_COUNTER 0x80 -#define MB_PC 0x83 -#define MB_84 0x84 -#define MB_REGION_MAP 0x85 -#define MB_TELEVISION 0x86 -#define MB_POKEBLOCK_FEEDER 0x87 -#define MB_SLOT_MACHINE 0x89 -#define MB_ROULETTE 0x8A -#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B -#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C -#define MB_8D 0x8D -#define MB_8E 0x8E -#define MB_QUESTIONNAIRE 0x8F -#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90 -#define MB_91 0x91 -#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92 -#define MB_93 0x93 -#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94 -#define MB_95 0x95 -#define MB_SECRET_BASE_SPOT_TREE_1 0x96 -#define MB_97 0x97 -#define MB_SECRET_BASE_SPOT_SHRUB 0x98 -#define MB_99 0x99 -#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A -#define MB_9B 0x9B -#define MB_SECRET_BASE_SPOT_TREE_2 0x9C -#define MB_9D 0x9D -#define MB_BERRY_TREE_SOIL 0xA0 -#define MB_SECRET_BASE_PC 0xB0 -#define MB_B1 0xB1 -#define MB_B2 0xB2 -#define MB_B3 0xB3 -#define MB_B4 0xB4 -#define MB_B5 0xB5 -#define MB_B6 0xB6 -#define MB_B7 0xB7 -#define MB_B8 0xB8 -#define MB_B9 0xB9 -#define MB_BA 0xBA -#define MB_BB 0xBB -#define MB_BC 0xBC -#define MB_BD 0xBD -#define MB_BE 0xBE -#define MB_BF 0xBF -#define MB_BED 0xC0 -#define MB_C1 0xC1 -#define MB_C2 0xC2 -#define MB_C3 0xC3 -#define MB_C4 0xC4 -#define MB_C5 0xC5 -#define MB_C6 0xC6 -#define MB_C7 0xC7 -#define MB_C8 0xC8 -#define MB_C9 0xC9 -#define MB_CA 0xCA -#define MB_CB 0xCB -#define MB_CC 0xCC -#define MB_CD 0xCD -#define MB_CE 0xCE -#define MB_CF 0xCF -#define MB_MUDDY_SLOPE 0xD0 -#define MB_BUMPY_SLOPE 0xD1 -#define MB_CRACKED_FLOOR 0xD2 -#define MB_ISOLATED_VERTICAL_RAIL 0xD3 -#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4 -#define MB_VERTICAL_RAIL 0xD5 -#define MB_HORIZONTAL_RAIL 0xD6 -#define MB_PICTURE_BOOK_SHELF 0xE0 -#define MB_BOOKSHELF 0xE1 -#define MB_POKEMON_CENTER_BOOKSHELF 0xE2 -#define MB_VASE 0xE3 -#define MB_TRASH_CAN 0xE4 -#define MB_SHOP_SHELF 0xE5 -#define MB_BLUEPRINT 0xE6 - -#endif // GUARD_METATILE_BEHAVIORS diff --git a/include/learn_move.h b/include/move_tutor_menu.h index fca236ec9..9ca8f72de 100644 --- a/include/learn_move.h +++ b/include/move_tutor_menu.h @@ -1,6 +1,8 @@  #ifndef GUARD_LEARN_MOVE_H  #define GUARD_LEARN_MOVE_H -void TeachMoveTutorMove(void); +#define MAX_MOVE_TUTOR_MOVES 20 + +void DisplayMoveTutorMenu(void);  #endif // GUARD_LEARN_MOVE_H diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index ab23a8d00..b86a2eed4 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -4,5 +4,9 @@  u32 RunMysteryEventScript(u8 *);  void SetMysteryEventScriptStatus(u32 val);  u16 GetRecordMixingGift(void); +#if DEBUG +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2); +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2); +#endif // DEBUG  #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/naming_screen.h b/include/naming_screen.h index d136417ba..53a56cf28 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -18,14 +18,12 @@ enum  struct NamingScreenTemplate  { -    u8 unk0; +    u8 copyExistingString;      u8 maxChars; -    u8 unk2; -    u8 unk3; -    u8 unk4;  //mode? -    u8 unk5; -    u8 unk6; -    u8 unk7; +    u8 iconFunction; +    u8 addGenderIcon; +    u8 initialPage; +    u8 filler[3];      const u8 *title;  }; @@ -33,24 +31,24 @@ struct NamingScreenData  {   /*0x00*/ u8 state;   /*0x01*/ u8 templateNum; - /*0x02*/ u16 unk2; + /*0x02*/ u16 nameLeftOffset;   /*0x04*/ u16 bg1vOffset;   /*0x06*/ u16 bg2vOffset; - /*0x08*/ u16 unk8; - /*0x0A*/ u16 unkA; - /*0x0C*/ u8 unkC; - /*0x0D*/ u8 unkD; + /*0x08*/ u16 bg1Priority; + /*0x0A*/ u16 bg2Priority; + /*0x0C*/ u8 bgToReveal; + /*0x0D*/ u8 bgToHide;   /*0x0E*/ u8 currentPage;   /*0x0F*/ u8 cursorSpriteId; - /*0x10*/ u8 unk10; + /*0x10*/ u8 pageIndicatorSpriteId;   /*0x11*/ u8 textBuffer[0x10];   /*0x21*/ u8 filler21[0x13]; -            const struct NamingScreenTemplate *template; + /*0x34*/ const struct NamingScreenTemplate *template;   /*0x38*/ u8 *destBuffer; - /*0x3C*/ u16 unk3C;  //savedKeyRepeatStartDelay - /*0x3E*/ u16 unk3E; - /*0x40*/ u16 unk40; - /*0x42*/ u32 unk42; + /*0x3C*/ u16 keyRepeatStartDelayCopy; + /*0x3E*/ u16 speciesOrPlayerGender; + /*0x40*/ u16 monGender; + /*0x42*/ u32 monPersonality;   /*0x46*/ MainCallback returnCallback;  }; @@ -80,6 +78,6 @@ enum      INPUT_STATE_ENABLED,  }; -void DoNamingScreen(u8 r0, u8 *r1, u16 r2, u16 r3, u32 s0, MainCallback s4); +void DoNamingScreen(u8, u8*, u16, u16, u32, MainCallback);  #endif diff --git a/include/new_game.h b/include/new_game.h index c90606b5a..e50fc2c80 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -14,5 +14,6 @@ void WarpToTruck(void);  void ClearSav2(void);  void sub_8052E4C(void);  void NewGameInitData(void); +void debug_sub_8057508(bool32 arg0);  #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index dc393cc63..f7571ee0f 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -3,17 +3,17 @@  #include "sprite.h" -struct UnkPlayerStruct +struct InitialPlayerAvatarState  { -    u8 player_field_0; -    u8 player_field_1; +    u8 transitionFlags; +    u8 direction;  }; -struct LinkPlayerMapObject +struct LinkPlayerEventObject  {      u8 active;      u8 linkPlayerId; -    u8 mapObjId; +    u8 eventObjId;      u8 mode;  }; @@ -22,7 +22,7 @@ struct UCoords32      u32 x, y;  }; -extern const struct UCoords32 gUnknown_0821664C[]; +extern const struct UCoords32 gDirectionToVectors[];  extern void (*gFieldCallback)(void);  extern u8 gFieldLinkPlayerCount;  extern u8 gUnknown_03004860; @@ -32,26 +32,22 @@ void Overworld_ResetStateAfterFly(void);  void Overworld_ResetStateAfterTeleport(void);  void Overworld_ResetStateAfterDigEscRope(void);  void Overworld_ResetStateAfterWhiteOut(void); -// sub_805308C  void ResetGameStats(void);  void IncrementGameStat(u8 index);  u32 GetGameStat(u8 index);  void SetGameStat(u8, u32); -// LoadMapObjTemplatesFromHeader -// LoadSaveblockMapObjScripts -void Overworld_SetMapObjTemplateCoords(u8, s16, s16); -void Overworld_SetMapObjTemplateMovementType(u8, u8); +// LoadEventObjTemplatesFromHeader +// LoadSaveblockEventObjScripts +void Overworld_SetEventObjTemplateCoords(u8, s16, s16); +void Overworld_SetEventObjTemplateMovementType(u8, u8);  // mapdata_load_assets_to_gpu_and_full_redraw -// get_mapdata_header  // ApplyCurrentWarp  // SetWarpData  // warp_data_is_not_neg_1  struct MapHeader * const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); -struct MapHeader * const warp1_get_mapheader(void); -// set_current_map_header_from_sav1_save_old_name +struct MapHeader * const GetDestinationWarpMapHeader(void);  // LoadSaveblockMapHeader -// sub_80533CC -void warp_in(void); +void WarpIntoMap(void);  void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);  void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);  void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); @@ -63,26 +59,22 @@ void Overworld_SetHealLocationWarp(u8);  void sub_80535C4(s16 a1, s16 a2);  void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);  void sub_8053678(void); -void sub_8053690(s8, s8, s8, s8, s8); +void SetFixedDiveWarp(s8, s8, s8, s8, s8);  // warp1_set_to_warp2 -void sub_80536E4(s8, s8, s8, s8, s8); -void sub_8053720(s16, s16); +void SetFixedHoleWarp(s8, s8, s8, s8, s8); +void SetFixedHoleWarpAsDestination(s16, s16);  // sub_8053778  // unref_sub_8053790  void sub_80537CC(u8);  void gpu_sync_bg_hide();  // GetMapConnection -// sub_8053850 -bool8 sub_80538B0(u16 x, u16 y); -bool8 sub_80538D0(u16 x, u16 y); +bool8 SetDiveWarpEmerge(u16 x, u16 y); +bool8 SetDiveWarpDive(u16 x, u16 y);  void sub_80538F0(u8 mapGroup, u8 mapNum);  // sub_8053994 -void player_avatar_init_params_reset(void); -void walkrun_find_lowest_active_bit_in_bitfield(void); -// sub_8053AA8 -u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); -u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); -u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); +void ResetInitialPlayerAvatarState(void); +void StoreInitialPlayerAvatarState(void); +u16 GetCenterScreenMetatileBehavior(void);  bool32 Overworld_IsBikingAllowed(void);  void SetDefaultFlashLevel(void);  void Overworld_SetFlashLevel(s32 a1); @@ -101,8 +93,8 @@ void sub_8053F0C(void);  void Overworld_ChangeMusicToDefault(void);  void Overworld_ChangeMusicTo(u16);  // GetMapMusicFadeoutSpeed -void sub_8053FF8(void); -bool8 sub_8054034(void); +void TryFadeOutOldMapMusic(void); +bool8 BGMusicStopped(void);  void Overworld_FadeOutMapMusic(void);  // PlayAmbientCry  void UpdateAmbientCry(s16 *, u16 *); @@ -110,7 +102,7 @@ void ChooseAmbientCrySpecies(void);  u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);  // GetMapTypeByWarpData  u8 Overworld_GetMapTypeOfSaveblockLocation(void); -u8 get_map_type_from_warp0(void); +u8 GetLastUsedWarpMapType(void);  bool8 is_map_type_1_2_3_5_or_6(u8 a1);  bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 a1);  u8 Overworld_MapTypeIsIndoors(u8); @@ -126,19 +118,17 @@ void CB2_OverworldBasic(void);  void c2_overworld(void);  // set_callback1  // sub_80543DC -// sub_80543E8  void CB2_NewGame(void);  void CB2_WhiteOut(void);  void CB2_LoadMap(void);  void CB2_LoadMap2(void);  void sub_8054534(void);  void sub_8054588(void); -void c2_80567AC(void);  void c2_exit_to_overworld_2_switch(void);  void c2_exit_to_overworld_2_local(void);  void c2_exit_to_overworld_2_link(void);  // sub_805465C -void sub_805469C(void); +void c2_exit_to_overworld_1_sub_8080DEC(void);  // sub_80546B8  void c2_exit_to_overworld_1_continue_scripts_restart_music(void);  void sub_80546F0(void); @@ -147,15 +137,12 @@ void CB2_ContinueSavedGame(void);  void FieldClearVBlankHBlankCallbacks(void);  void SetFieldVBlankCallback(void);  void VBlankCB_Field(void); -// sub_8054814 -bool32 sub_805483C(u8 *);  bool32 sub_805493C(u8 *, u32);  bool32 sub_8054A4C(u8 *);  bool32 sub_8054A9C(u8 *a1);  void do_load_map_stuff_loop(u8 *a1);  void sub_8054BA8(void);  void sub_8054C2C(void); -void sub_8054C54(void);  void sub_8054D4C(u32 a1);  void sub_8054D90(void);  void mli4_mapscripts_and_other(void); @@ -209,11 +196,11 @@ bool32 sub_8055870(void);  u32 sub_80558AC(void);  u32 sub_8055910(void);  u32 sub_8055940(void); -// ZeroLinkPlayerMapObject -void strange_npc_table_clear(void); -// ZeroMapObject -void SpawnLinkPlayerMapObject(u8, s16, s16, u8); -void InitLinkPlayerMapObjectPos(struct MapObject *, s16, s16); +// ClearLinkPlayerEventObject +void ClearLinkPlayerEventObjects(void); +// ZeroEventObject +void SpawnLinkPlayerEventObject(u8, s16, s16, u8); +void InitLinkPlayerEventObjectPos(struct EventObject *, s16, s16);  // unref_sub_8055A6C  // unref_sub_8055A9C  u8 sub_8055AE8(u8); @@ -238,5 +225,6 @@ void SpriteCB_LinkPlayer(struct Sprite *);  void sub_805465C(void);  void CB2_InitTestMenu(void); +void debug_sub_8058C00(void);  #endif // GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index 193773d24..d4e33cce5 100644 --- a/include/palette.h +++ b/include/palette.h @@ -6,6 +6,8 @@  #define gPaletteFade_delay            (gPaletteFade.multipurpose2) // normal and hardware fade  #define gPaletteFade_submode          (gPaletteFade.multipurpose2) // fast fade +#define FADE_COLOR_WHITE (RGB(31, 31, 31) | 0x8000) +  enum  {      FAST_FADE_IN_FROM_WHITE, @@ -48,7 +50,6 @@ u8 UpdatePaletteFade(void);  void ResetPaletteFade(void);  void ReadPlttIntoBuffers(void);  bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16);  void unref_sub_8073D84(u8, u32 *);  void ResetPaletteStructByUid(u16);  void ResetPaletteStruct(u8); diff --git a/include/party_menu.h b/include/party_menu.h index 3998054da..e687f48c4 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -109,7 +109,7 @@ bool8 InitPartyMenu(void);  bool8 IsLinkDoubleBattle(void);  u8 DrawPartyMonBackground(u8);  void sub_806B908(void); -void sub_806BC3C(u8, u8); +void DrawMonDescriptorStatus(u8, u8);  void sub_806BCE8(void);  u8 sub_806BD58(u8, u8);  u8 sub_806BD58(u8, u8); @@ -192,7 +192,7 @@ void GetMedicineItemEffectMessage(u16);  bool8 ExecuteTableBasedItemEffect__(u8, u16, u8);  void UseMedicine(u8, u16, TaskFunc);  bool8 IsBlueYellowRedFlute(u16); -void sub_8070048(u8, u16, TaskFunc); +void DoSacredAshItemEffect(u8, u16, TaskFunc);  void sub_8070088(u8);  void sub_80701DC(u8 taskId);  void DoPPRecoveryItemEffect(u8, u16, TaskFunc); diff --git a/include/pokeblock.h b/include/pokeblock.h index a606a32ad..f674666ff 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -42,7 +42,7 @@ s16 PokeblockGetGain(u8, const struct Pokeblock *);  u8 sub_810CB68(u8, u8*);  void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest);  void CB2_PreparePokeblockFeedScene(void); -bool8 sub_810CA34(const struct Pokeblock *); +bool8 GivePokeblock(const struct Pokeblock *);  #include "main.h" diff --git a/include/pokedex.h b/include/pokedex.h index 73877bead..f051b4afe 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -25,4 +25,27 @@ u16 GetHoennPokedexCount(u8);  bool8 CompletedHoennPokedex(void);  bool16 CompletedNationalPokedex(void); +extern bool8 gUnknown_03005CE8; + +struct PokedexEntry +{ +    /*0x00*/ u8 categoryName[12]; +    /*0x0C*/ u16 height; //in decimeters +    /*0x0E*/ u16 weight; //in hectograms +    /*0x10*/ const u8 *descriptionPage1; +    /*0x14*/ const u8 *descriptionPage2; +    /*0x18*/ u16 unused; +    /*0x1A*/ u16 pokemonScale; +    /*0x1C*/ u16 pokemonOffset; +    /*0x1E*/ u16 trainerScale; +    /*0x20*/ u16 trainerOffset; +};  /*size = 0x24*/ + +extern const struct PokedexEntry gPokedexEntries[]; + +u16 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum); +u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum); + +void sub_8091738(u16, u16, u16); +  #endif // GUARD_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 169045c0c..783263aad 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -118,6 +118,25 @@  #define TYPE_DRAGON   0x10  #define TYPE_DARK     0x11 +#define FRIENDSHIP_EVENT_GROW_LEVEL           0x0 +#define FRIENDSHIP_EVENT_VITAMIN              0x1 // unused +#define FRIENDSHIP_EVENT_BATTLE_ITEM          0x2 // unused +#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 STATUS_PRIMARY_NONE      0x0 +#define STATUS_PRIMARY_POISON    0x1 +#define STATUS_PRIMARY_PARALYSIS 0x2 +#define STATUS_PRIMARY_SLEEP     0x3 +#define STATUS_PRIMARY_FREEZE    0x4 +#define STATUS_PRIMARY_BURN      0x5 +#define STATUS_PRIMARY_POKERUS   0x6 +#define STATUS_PRIMARY_FAINTED   0x7 +  #define PARTY_SIZE 6  #define MAX_TOTAL_EVS 510  #define NUM_STATS 6 @@ -312,6 +331,8 @@ struct UnknownPokemonStruct      /*0x2B*/u8 friendship;  }; +#define BATTLE_STATS_NO 8 +  struct BattlePokemon  {      /*0x00*/ u16 species; @@ -329,7 +350,7 @@ struct BattlePokemon      /*0x17*/ u32 spDefenseIV:5;      /*0x17*/ u32 isEgg:1;      /*0x17*/ u32 altAbility:1; -    /*0x18*/ s8 statStages[8]; +    /*0x18*/ s8 statStages[BATTLE_STATS_NO];      /*0x20*/ u8 ability;      /*0x21*/ u8 type1;      /*0x22*/ u8 type2; @@ -420,12 +441,6 @@ struct BattleMove      u8 flags;  }; -#define FLAG_MAKES_CONTACT       0x1 -#define FLAG_PROTECT_AFFECTED    0x2 -#define FLAG_MAGICCOAT_AFFECTED  0x4 -#define FLAG_SNATCH_AFFECTED     0x8 -#define FLAG_KINGSROCK_AFFECTED  0x20 -  struct PokemonStorage  {      /*0x0000*/ u8 currentBox; @@ -601,7 +616,7 @@ void AdjustFriendship(struct Pokemon *, u8);  u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);  void UpdatePartyPokerusTime(u16);  u32 CanMonLearnTMHM(struct Pokemon *, u8); -u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); +u8 GetMoveTutorMoves(struct Pokemon *mon, u16 *moves);  u8 sub_8040574(struct Pokemon *party);  void ClearBattleMonForms(void);  void sub_80408BC(); @@ -630,5 +645,10 @@ struct Sprite *sub_80F7920(u16, u16, const u16 *);  void BoxMonRestorePP(struct BoxPokemon *);  bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); + +#if DEBUG +void Nakamura_NakaGenderTest_RecalcStats(struct Pokemon *); +#endif // DEBUG  #endif // GUARD_POKEMON_H diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index 57a313d89..099c3a3bc 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -34,18 +34,19 @@ enum  };  extern u8 gLastFieldPokeMenuOpened; -extern void (*gUnknown_03005CE4)(void); +extern void (*gPostMenuFieldCallback)(void);  void HandleDefaultPartyMenu(u8 taskID);  void sub_808B5B4(u32 taskID);  void sub_8089A70(void);  void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order);  void DoPokemonMenu_Switch(u8 taskID); -void FieldCallback_Teleport(void); +void FieldCallback_PrepareFadeInFromMenu(void);  void sub_808AD58(void);  void sub_808B020(void);  void sub_808B0C0(u8 taskID);  void sub_808B508(u8);  void sub_808B564(void); +void debug_sub_80986AC(void);  #endif // GUARD_POKEMON_MENU_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 5319b7a2d..9c8fbdc13 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -298,5 +298,8 @@ void sub_809CFF0(void);  void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);  void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);  void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height); +void ShowPokemonStorageSystem(void); + +void debug_sub_80A433C(struct Pokemon *pokemon, void (*func)(void));  #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 945e810a3..f1dbe0089 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -61,7 +61,7 @@ struct PokemonSummaryScreenStruct  void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u8);  void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);  u8 sub_809FA30(void); -u8 pokemon_ailments_get_primary(u32); +u8 GetPrimaryStatus(u32);  u8 GetMonStatusAndPokerus();  u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8);  u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level); diff --git a/include/region_map.h b/include/region_map.h index e7a357fe2..4c10d84cb 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -1,6 +1,13 @@  #ifndef GUARD_REGION_MAP_H  #define GUARD_REGION_MAP_H +struct RegionMapLocation +{ +    u8 x, y; +    u8 width, height; +    const u8 *regionMapSectionId; +}; +  struct RegionMap  {      u8 mapSectionName[20]; @@ -51,7 +58,7 @@ struct RegionMap      /*0x080*/ u8 filler80[0x100];      /*0x180*/ u8 cursorSmallImage[0x100];      /*0x280*/ u8 cursorLargeImage[0x600]; -}; +}; // size: 0x880  void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);  void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed); @@ -61,13 +68,17 @@ u8 sub_80FAB60(void);  void sub_80FAEC4(void);  u8 sub_80FAFC0(void);  void UpdateRegionMapVideoRegs(void); -void sub_80FB2A4(s16, s16); -u16 sub_80FBA04(u16 mapSectionId); +void RegionMapDefaultZoomOffsetPlayerSprite(s16, s16); +u16 GetOverworldMapFromUnderwaterMap(u16 mapSectionId);  void CreateRegionMapCursor(u16, u16);  void CreateRegionMapPlayerIcon(u16, u16);  const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length);  const u8 *CopyMapName(u8 *dest, u16 b);  const u8 *CopyLocationName(u8 *dest, u16 b);  void CB2_InitFlyRegionMap(void); +void debug_sub_8110F28(void); +u16 GetRegionMapSectionAt_(u16 x, u16 y); + +extern const struct RegionMapLocation gRegionMapLocations[];  #endif // GUARD_REGION_MAP_H diff --git a/include/region_map_sections.h b/include/region_map_sections.h deleted file mode 100644 index a3bd60b59..000000000 --- a/include/region_map_sections.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef GUARD_REGIONMAPSEC_H -#define GUARD_REGIONMAPSEC_H - -enum -{ -    MAPSEC_LittlerootTown, // 0x00 -    MAPSEC_OldaleTown,     // 0x01 -    MAPSEC_DewfordTown,    // 0x02 -    MAPSEC_LavaridgeTown,  // 0x03 -    MAPSEC_FallarborTown,  // 0x04 -    MAPSEC_VerdanturfTown, // 0x05 -    MAPSEC_PacifidlogTown, // 0x06 -    MAPSEC_PetalburgCity,  // 0x07 -    MAPSEC_SlateportCity,  // 0x08 -    MAPSEC_MauvilleCity,   // 0x09 -    MAPSEC_RustboroCity,   // 0x0A -    MAPSEC_FortreeCity,    // 0x0B -    MAPSEC_LilycoveCity,   // 0x0C -    MAPSEC_MossdeepCity,   // 0x0D -    MAPSEC_SootopolisCity, // 0x0E -    MAPSEC_EverGrandeCity, // 0x0F -    MAPSEC_Route101,       // 0x10 -    MAPSEC_Route102,       // 0x11 -    MAPSEC_Route103,       // 0x12 -    MAPSEC_Route104,       // 0x13 -    MAPSEC_Route105,       // 0x14 -    MAPSEC_Route106,       // 0x15 -    MAPSEC_Route107,       // 0x16 -    MAPSEC_Route108,       // 0x17 -    MAPSEC_Route109,       // 0x18 -    MAPSEC_Route110,       // 0x19 -    MAPSEC_Route111,       // 0x1A -    MAPSEC_Route112,       // 0x1B -    MAPSEC_Route113,       // 0x1C -    MAPSEC_Route114,       // 0x1D -    MAPSEC_Route115,       // 0x1E -    MAPSEC_Route116,       // 0x1F -    MAPSEC_Route117,       // 0x20 -    MAPSEC_Route118,       // 0x21 -    MAPSEC_Route119,       // 0x22 -    MAPSEC_Route120,       // 0x23 -    MAPSEC_Route121,       // 0x24 -    MAPSEC_Route122,       // 0x25 -    MAPSEC_Route123,       // 0x26 -    MAPSEC_Route124,       // 0x27 -    MAPSEC_Route125,       // 0x28 -    MAPSEC_Route126,       // 0x29 -    MAPSEC_Route127,       // 0x2A -    MAPSEC_Route128,       // 0x2B -    MAPSEC_Route129,       // 0x2C -    MAPSEC_Route130,       // 0x2D -    MAPSEC_Route131,       // 0x2E -    MAPSEC_Route132,       // 0x2F -    MAPSEC_Route133,       // 0x30 -    MAPSEC_Route134,       // 0x31 -    MAPSEC_MtChimney = 0x38,      // 0x38 -    MAPSEC_Nothing = 0x58,        // 0x58 -}; - -#endif // GUARD_REGIONMAPSEC_H diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h index 2de95534a..88abd4945 100644 --- a/include/reset_rtc_screen.h +++ b/include/reset_rtc_screen.h @@ -3,5 +3,7 @@  void CB2_InitResetRtcScreen(void);  void debug_sub_806F8F8(void); +void debug_sub_806F9E4(u8 taskId); +void debug_sub_806F99C(void);  #endif // GUARD_RESET_RTC_SCREEN_H diff --git a/include/roamer.h b/include/roamer.h index 86908bd00..18cb0b4e4 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -10,4 +10,11 @@ u8 TryStartRoamerEncounter(void);  void UpdateRoamerHPStatus(struct Pokemon *mon);  void SetRoamerInactive(void); -#endif +#if DEBUG +void Debug_CreateRoamer(void); +void Debug_GetRoamerLocation(u8 *); +#endif // DEBUG + +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum); + +#endif // GUARD_ROAMER_H diff --git a/include/rom6.h b/include/rom6.h index 8c3691624..105eac19a 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -1,9 +1,10 @@  #ifndef GUARD_ROM6_H  #define GUARD_ROM6_H -extern struct MapPosition gUnknown_0203923C; +extern struct MapPosition gPlayerFacingPosition; -bool8 npc_before_player_of_type(u8); +bool8 SetLastTalkedObjectInFrontOfPlayer(u8);  u8 oei_task_add(void); +void debug_sub_8120968(void);  #endif diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index 1910b7cb2..3942397eb 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -10,24 +10,30 @@ struct Struct_sub_8078914 {      u8 field_8;  }; -u8 GetBankPosition(u8, u8); +struct TransformStatus +{ +    u16 unknown; +    u16 species; +}; + +u8 GetBattlerSpriteCoord(u8, u8);  u8 sub_8077E44(u8 slot, u16 species, u8 a3); -u8 GetAnimBankSpriteId(u8 bank); +u8 GetAnimBattlerSpriteId(u8 bank);  void StoreSpriteCallbackInData(struct Sprite *sprite, void(*callback)(struct Sprite *));  void sub_8078314(struct Sprite *sprite);  void TranslateSpriteOverDuration(struct Sprite *sprite);  void TranslateMonBGUntil(struct Sprite *sprite);  void TranslateMonBGSubPixelUntil(struct Sprite *sprite); -u8 GetBankSide(u8); -u8 GetBankSide(u8); -u8 GetBankSide(u8 side); -u8 GetBankSide(u8 slot); -u8 GetBankSide(u8); -u8 GetBankIdentity(u8); -u8 GetBankIdentity(u8 slot); -u8 GetBankByIdentity(u8); -u8 GetBankByIdentity(u8); -u8 GetBankByIdentity(u8 state); +u8 GetBattlerSide(u8); +u8 GetBattlerSide(u8); +u8 GetBattlerSide(u8 side); +u8 GetBattlerSide(u8 slot); +u8 GetBattlerSide(u8); +u8 GetBattlerPosition(u8); +u8 GetBattlerPosition(u8 slot); +u8 GetBattlerAtPosition(u8); +u8 GetBattlerAtPosition(u8); +u8 GetBattlerAtPosition(u8 state);  bool8 IsBankSpritePresent(u8);  bool8 IsDoubleBattle();  u8 IsDoubleBattle(void); @@ -58,7 +64,7 @@ void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a  u8 sub_8079C74(struct Task *task);  void sub_8079E24();  u8 sub_8079E90(u8 slot); -u8 GetBankIdentity_permutated(u8 slot); +u8 GetBattlerPosition_permutated(u8 slot);  void sub_807A784(u8 taskId);  void sub_807A850(struct Task *task, u8 taskId);  void sub_807A8D4(struct Sprite *sprite); @@ -106,5 +112,8 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);  void sub_80789D4(bool8 a1);  void sub_8079AB8(u8 sprite, u8 sprite2);  u8 sub_807A4A0(int bank, u8 sprite, int species); +void sub_80794A8(struct Sprite *sprite); +void sub_807A9BC(struct Sprite *sprite); +void sub_8078954(struct Struct_sub_8078914*, u8);  #endif // GUARD_ROM_8077ABC_H diff --git a/include/safari_zone.h b/include/safari_zone.h index 0bee08a95..dd9ca8088 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -2,6 +2,7 @@  #define GUARD_SAFARI_ZONE_H  extern u8 gNumSafariBalls; +extern u16 gSafariZoneStepCounter;  bool32 GetSafariZoneFlag(void);  void SetSafariZoneFlag(void); @@ -18,6 +19,6 @@ void SafariZoneGetPokeblockNameInFeeder(void);  struct Pokeblock *unref_sub_80C8418(void);  struct Pokeblock *SafariZoneGetActivePokeblock(void);  void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); -bool8 unref_sub_80C853C(void); +bool32 debug_sub_80C853C(void);  #endif // GUARD_SAFARI_ZONE_H diff --git a/include/save.h b/include/save.h index 13e07d06a..371bf2c85 100644 --- a/include/save.h +++ b/include/save.h @@ -34,5 +34,6 @@ u8 sub_8125E04(void);  u8 sub_8125E2C(void);  bool8 sub_8125E6C(void);  u8 Save_LoadGameData(u8 a1); +void sub_813B79C(void);  #endif // GUARD_SAVE_H diff --git a/include/secret_base.h b/include/secret_base.h index a3fa22c05..4748c83d7 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -5,13 +5,13 @@  #define MAX_SECRET_BASES 20  void ResetSecretBases(void); -void sub_80BB5E4(void); -void sub_80BB63C(void); -void sub_80BB800(void); +void SetCurrentSecretBaseVar(void); +void CheckPlayerHasSecretBase(void); +void SetOpenedSecretBaseMetatile(void);  void sub_80BB970(struct MapEvents *events);  u8 sub_80BBB24(void);  void sub_80BBCCC(u8 flagIn); -void sub_80BBFD8(struct MapPosition *, struct MapEvents *); +void SetCurrentSecretBaseFromPosition(struct MapPosition *, struct MapEvents *);  void sub_80BC038(struct MapPosition *, struct MapEvents *);  u8 sub_80BC050();  u8 *GetSecretBaseMapName(u8 *dest); @@ -20,5 +20,9 @@ u8 sub_80BCCA4(u8 secretBaseIndex);  const u8 *GetSecretBaseTrainerLoseText(void);  void sub_80BCF1C(u8 taskId);  void sub_80BD674(void *playerRecords, u32 size, u8 c); +#if DEBUG +void unref_sub_80BCD7C(u8 secretBaseIndex); +u8 *sub_80BC190(u8 *dest, u8 arg1); +#endif  #endif // GUARD_SECRET_BASE_H diff --git a/include/shop.h b/include/shop.h index 347d46d3c..4de58eaf2 100644 --- a/include/shop.h +++ b/include/shop.h @@ -11,7 +11,7 @@ enum  // shop view window NPC info enum  enum  { -    MAP_OBJ_ID, +    EVENT_OBJ_ID,      X_COORD,      Y_COORD,      ANIM_NUM diff --git a/include/sound.h b/include/sound.h index 283b2b1f9..d883fd9c7 100644 --- a/include/sound.h +++ b/include/sound.h @@ -1,6 +1,8 @@  #ifndef GUARD_SOUND_H  #define GUARD_SOUND_H +extern bool8 gDisableMusic; +  void InitMapMusic(void);  void MapMusicMain(void);  void ResetMapMusic(void); diff --git a/include/sprite.h b/include/sprite.h index 3ad418356..9a5deb3c4 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -100,12 +100,19 @@ struct AffineAnimJumpCmd      u16 target;  }; +struct AffineAnimEndCmdAlt +{ +    s16 type; +    u16 val; +}; +  union AffineAnimCmd  {      s16 type;      struct AffineAnimFrameCmd frame;      struct AffineAnimLoopCmd loop;      struct AffineAnimJumpCmd jump; +    struct AffineAnimEndCmdAlt end; // unused in code  };  #define AFFINEANIMCMDTYPE_LOOP 0x7FFD @@ -120,6 +127,8 @@ union AffineAnimCmd      {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}  #define AFFINEANIMCMD_END \      {.type = AFFINEANIMCMDTYPE_END} +#define AFFINEANIMCMD_END_ALT(_val) \ +    {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}  struct AffineAnimState  { diff --git a/include/start_menu.h b/include/start_menu.h index 5e513b9dc..df4efda6d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -9,5 +9,11 @@ void sub_80712B4(u8 taskId);  void sub_8071310(void);  void ScrSpecial_DoSaveDialog(void);  void sub_8071B28(void); +void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); +bool8 debug_sub_8075C30(void); + +#if DEBUG +extern u32 gUnknown_Debug_03004BD0; +#endif // DEBUG  #endif // GUARD_STARTER_CHOOSE_H diff --git a/include/strings.h b/include/strings.h index 91c5c5344..0232b03f4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -150,7 +150,7 @@ extern const u8 OtherText_CheckTag[];  extern const u8 OtherText_Confirm[];  extern const u8 gOtherText_Walk[]; -extern const u8 gUnknownText_Exit[]; +extern const u8 gOtherText_Exit[];  extern const u8 gOtherText_CancelNoTerminator[];  extern const u8 gOtherText_CancelWithTerminator[]; @@ -165,6 +165,7 @@ extern const u8 gOtherText_None[];  extern const u8 gOtherText_ThreeQuestions2[];  extern const u8 gOtherText_FiveQuestions[]; +extern const u8 gOtherText_Slash[];  extern const u8 gOtherText_OneDash[];  extern const u8 gOtherText_TwoDashes[]; @@ -250,6 +251,7 @@ extern const u8 gContestStatsText_Dry[];  extern const u8 gContestStatsText_Sweet[];  extern const u8 gContestStatsText_Bitter[];  extern const u8 gContestStatsText_Sour[]; +extern const u8 gContestStatsText_Tasty[];  extern const u8 gContestStatsText_StowCase[];  extern const u8 gContestStatsText_ThrowAwayPrompt[]; diff --git a/include/strings2.h b/include/strings2.h index 8052c6c4a..50197ccde 100644 --- a/include/strings2.h +++ b/include/strings2.h @@ -186,7 +186,7 @@ extern const u8 gEggNickname[];  extern const u8 gOtherText_HatchedFromEgg[];  extern const u8 gOtherText_NickHatchPrompt[]; -// learn_move +// move_tutor_menu  extern const u8 OtherText_Battle[];  extern const u8 OtherText_Contest[]; @@ -194,7 +194,7 @@ extern const u8 OtherText_Contest[];  extern const u8 OtherText_Type[];  extern const u8 OtherText_PP[]; -// learn_move +// move_tutor_menu  extern const u8 OtherText_Power[];  extern const u8 OtherText_Accuracy[];  extern const u8 OtherText_Appeal[]; diff --git a/include/text.h b/include/text.h index 71afd1d00..ce63a2542 100644 --- a/include/text.h +++ b/include/text.h @@ -143,7 +143,7 @@ extern const struct WindowTemplate gWindowTemplate_81E6C74;  extern const struct WindowTemplate gWindowTemplate_81E6C90;  extern const struct WindowTemplate gWindowTemplate_81E6CAC;  extern const struct WindowTemplate gWindowTemplate_81E6CC8; -extern const struct WindowTemplate gWindowTemplate_81E6CE4; +extern const struct WindowTemplate gMenuTextWindowTemplate;  extern const struct WindowTemplate gWindowTemplate_81E6D00;  extern const struct WindowTemplate gWindowTemplate_81E6D1C;  extern const struct WindowTemplate gWindowTemplate_81E6D38; @@ -192,7 +192,7 @@ extern const struct WindowTemplate gWindowTemplate_81E71D0;  extern const struct WindowTemplate gWindowTemplate_81E71EC;  extern const struct WindowTemplate gWindowTemplate_81E7208;  extern const struct WindowTemplate gWindowTemplate_81E7224; -extern const struct WindowTemplate gWindowTemplate_81E7240; +extern const struct WindowTemplate gMenuTextWindowTemplate;  extern const struct WindowTemplate gWindowTemplate_81E725C;  extern const struct WindowTemplate gWindowTemplate_81E7278;  extern const struct WindowTemplate gWindowTemplate_81E7294; diff --git a/include/trainer.h b/include/trainer.h index e8f2776d2..96143245a 100644 --- a/include/trainer.h +++ b/include/trainer.h @@ -16,6 +16,14 @@  #define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12  #define TRAINER_ENCOUNTER_MUSIC_RICH        13 // Rich Boys and Gentlemen +#define F_TRAINER_FEMALE 1 << 7 + +// All trainer parties specify the IV, level, and species for each Pokémon in +// the  party. Some trainer parties also specify held items and custom moves +// for each Pokémon. +#define F_TRAINER_PARTY_CUSTOM_MOVESET 1 << 0 +#define F_TRAINER_PARTY_HELD_ITEM 1 << 1 +  enum {      FACILITY_CLASS_AQUA_LEADER,      FACILITY_CLASS_TEAM_AQUA_M, diff --git a/include/trainer_see.h b/include/trainer_see.h index e36df981b..d67117743 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -5,7 +5,7 @@  #include "task.h"  bool8 CheckTrainers(void); -void sub_8084794(struct MapObject *var); +void sub_8084794(struct EventObject *var);  void ScrSpecial_EndTrainerApproach(void);  #endif // GUARD_TRAINER_SEE_H diff --git a/include/tv.h b/include/tv.h index 3b4dda745..a7064f8fd 100644 --- a/include/tv.h +++ b/include/tv.h @@ -109,5 +109,7 @@ void sub_80C045C();  void sub_80BF088(u8, s32);  void sub_80BFD20(void);  void PutPokemonTodayCaughtOnAir(void); +u8 GetTVChannelByShowType(u8); +void sub_80BEC40(void);  #endif // GUARD_TV_H diff --git a/include/util.h b/include/util.h index 676c3bd9b..02c503f75 100644 --- a/include/util.h +++ b/include/util.h @@ -9,7 +9,7 @@ extern const u32 gBitTable[];  u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));  void StoreWordInTwoHalfwords(u16 *, u32);  void LoadWordFromTwoHalfwords(u16 *, u32 *); -u16 CalcCRC16(u8 *data, int length); +u16 CalcCRC16(const u8 *data, int length);  void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);  void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); diff --git a/include/wild_encounter.h b/include/wild_encounter.h index c9d7c3fa1..1b8b8dfc7 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -35,5 +35,11 @@ void FishingWildEncounter(u8 rod);  u16 GetLocalWildMon(bool8 *isWaterMon);  u16 GetLocalWaterMon(void);  bool8 UpdateRepelCounter(void); +#if DEBUG +u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0); +void FeebasSeedRng(u16 seed); +u16 FeebasRandom(void); +extern u8 gWildEncountersDisabled; +#endif // DEBUG  #endif // GUARD_WILD_ENCOUNTER_H | 
