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 |