Merge branch 'master' of github.com:pret/pokeemerald

This commit is contained in:
Diegoisawesome
2018-07-24 21:18:36 -07:00
1092 changed files with 39655 additions and 38981 deletions

View File

@@ -4,6 +4,7 @@
// should they be included here or included individually by every file?
#include "constants/battle.h"
#include "battle_main.h"
#include "battle_message.h"
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_ai_switch_items.h"
@@ -15,12 +16,6 @@
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
#define TRAINER_OPPONENT_800 0x800
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
// Battle Actions
// These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0
@@ -33,7 +28,7 @@
#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_WALLY_THROW 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
@@ -111,10 +106,10 @@ struct TrainerMonItemCustomMoves
union TrainerMonPtr
{
struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
struct TrainerMonItemCustomMoves *ItemCustomMoves;
const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
const struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
const struct TrainerMonItemCustomMoves *ItemCustomMoves;
};
struct Trainer
@@ -150,29 +145,29 @@ struct DisableStruct
/*0x08*/ u8 protectUses;
/*0x09*/ u8 stockpileCounter;
/*0x0A*/ u8 substituteHP;
/*0x0B*/ u8 disableTimer1 : 4;
/*0x0B*/ u8 disableTimer2 : 4;
/*0x0B*/ u8 disableTimer1:4;
/*0x0B*/ u8 disableTimer2:4;
/*0x0C*/ u8 encoredMovePos;
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer1 : 4;
/*0x0E*/ u8 encoreTimer2 : 4;
/*0x0F*/ u8 perishSongTimer1 : 4;
/*0x0F*/ u8 perishSongTimer2 : 4;
/*0x0E*/ u8 encoreTimer1:4;
/*0x0E*/ u8 encoreTimer2:4;
/*0x0F*/ u8 perishSongTimer1:4;
/*0x0F*/ u8 perishSongTimer2:4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutCounter1 : 4;
/*0x11*/ u8 rolloutCounter2 : 4;
/*0x12*/ u8 chargeTimer1 : 4;
/*0x12*/ u8 chargeTimer2 : 4;
/*0x11*/ u8 rolloutCounter1:4;
/*0x11*/ u8 rolloutCounter2:4;
/*0x12*/ u8 chargeTimer1:4;
/*0x12*/ u8 chargeTimer2:4;
/*0x13*/ u8 tauntTimer1:4;
/*0x13*/ u8 tauntTimer2:4;
/*0x14*/ u8 battlerPreventingEscape;
/*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
/*0x18*/ u8 truantUnknownBit : 1;
/*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 unk18_b : 4;
/*0x18*/ u8 truantCounter:1;
/*0x18*/ u8 truantUnknownBit:1;
/*0x18*/ u8 unk18_a_2:2;
/*0x18*/ u8 unk18_b:4;
/*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
};
@@ -182,7 +177,7 @@ struct ProtectStruct
/* field_0 */
u32 protected:1;
u32 endured:1;
u32 onlyStruggle:1;
u32 noValidMoves:1;
u32 helpingHand:1;
u32 bounceMove:1;
u32 stealMove:1;
@@ -201,12 +196,12 @@ struct ProtectStruct
u32 flag2Unknown:1; // 0x2
u32 flinchImmobility:1; // 0x4
u32 notFirstStrike:1; // 0x8
u32 flag_x10 : 1; // 0x10
u32 flag_x20 : 1; // 0x20
u32 flag_x40 : 1; // 0x40
u32 flag_x80 : 1; // 0x80
u32 flag_x10:1; // 0x10
u32 flag_x20:1; // 0x20
u32 flag_x40:1; // 0x40
u32 flag_x80:1; // 0x80
/* field_3 */
u32 field3 : 8;
u32 field3:8;
/* field_4 */ u32 physicalDmg;
/* field_8 */ u32 specialDmg;
@@ -217,14 +212,14 @@ struct ProtectStruct
struct SpecialStatus
{
u8 statLowered : 1; // 0x1
u8 lightningRodRedirected : 1; // 0x2
u8 restoredBankSprite: 1; // 0x4
u8 intimidatedPoke : 1; // 0x8
u8 traced : 1; // 0x10
u8 flag20 : 1;
u8 flag40 : 1;
u8 focusBanded : 1;
u8 statLowered:1; // 0x1
u8 lightningRodRedirected:1; // 0x2
u8 restoredBattlerSprite: 1; // 0x4
u8 intimidatedMon:1; // 0x8
u8 traced:1; // 0x10
u8 flag20:1;
u8 flag40:1;
u8 focusBanded:1;
u8 field1[3];
s32 dmg;
s32 physicalDmg;
@@ -336,20 +331,20 @@ struct BattleResults
u8 unk5_0:1; // 0x5
u8 usedMasterBall:1; // 0x5
u8 caughtMonBall:4; // 0x5
u8 unk5_6:1; // 0x5
u8 shinyWildMon:1; // 0x5
u8 unk5_7:1; // 0x5
u16 playerMon1Species; // 0x6
u8 playerMon1Name[11]; // 0x8
u8 playerMon1Name[POKEMON_NAME_LENGTH + 1]; // 0x8
u8 battleTurnCounter; // 0x13
u8 playerMon2Name[11]; // 0x14
u8 field_1F; // 0x1F
u8 playerMon2Name[POKEMON_NAME_LENGTH + 1]; // 0x14
u8 pokeblockThrows; // 0x1F
u16 lastOpponentSpecies; // 0x20
u16 lastUsedMovePlayer; // 0x22
u16 lastUsedMoveOpponent; // 0x24
u16 playerMon2Species; // 0x26
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
u8 filler34[2]; // 0x34
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; // 0x2A
u8 filler35[1]; // 0x35
u8 catchAttempts[11]; // 0x36
};
@@ -428,7 +423,7 @@ struct BattleTv_Mon
struct BattleTv
{
struct BattleTv_Mon mon[2][6]; // [side][partyId]
struct BattleTv_Mon mon[2][PARTY_SIZE]; // [side][partyId]
struct BattleTv_Position pos[2][2]; // [side][flank]
struct BattleTv_Side side[2]; // [side]
};
@@ -461,7 +456,7 @@ struct BattleStruct
u8 field_46;
u8 field_47;
u8 focusPunchBattlerId;
u8 field_49;
u8 battlerPreventingSwitchout;
u8 moneyMultiplier;
u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
@@ -478,10 +473,10 @@ struct BattleStruct
u8 runTries;
u8 caughtMonNick[11];
u8 field_78;
u8 field_79;
u8 field_7A;
u8 field_7B;
u8 field_7C;
u8 safariGoNearCounter;
u8 safariPkblThrowCounter;
u8 safariEscapeFactor;
u8 safariCatchFactor;
u8 field_7D;
u8 field_7E;
u8 formToChangeInto;
@@ -514,7 +509,7 @@ struct BattleStruct
u8 field_A7;
u16 hpOnSwitchout[2];
u32 savedBattleTypeFlags;
u8 field_B0;
u8 abilityPreventingSwitchout;
u8 hpScale;
u8 synchronizeMoveEffect;
bool8 anyMonHasTransformed;
@@ -525,7 +520,7 @@ struct BattleStruct
u8 AI_itemFlags[2];
u16 choicedMove[MAX_BATTLERS_COUNT];
u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBank;
u8 intimidateBattler;
u8 switchInItemsCounter;
u8 field_DA;
u8 turnSideTracker;
@@ -560,8 +555,8 @@ struct BattleStruct
typeArg = gBattleMoves[move].type; \
}
#define IS_MOVE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_MOVE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
@@ -606,34 +601,22 @@ struct BattleScripting
u8 reshowMainState;
u8 reshowHelperState;
u8 field_23;
u8 field_24;
u8 windowsType; // 0 - normal, 1 - battle arena
u8 multiplayerId;
};
enum
{
BACK_PIC_BRENDAN,
BACK_PIC_MAY,
BACK_PIC_RED,
BACK_PIC_LEAF,
BACK_PIC_RS_BRENDAN,
BACK_PIC_RS_MAY,
BACK_PIC_WALLY,
BACK_PIC_STEVEN
};
// rom_80A5C6C
u8 GetBattlerSide(u8 battler);
u8 GetBattlerPosition(u8 bank);
u8 GetBattlerAtPosition(u8 bank);
u8 GetBattlerPosition(u8 battler);
u8 GetBattlerAtPosition(u8 battler);
struct BattleSpriteInfo
{
u16 invisible : 1; // 0x1
u16 lowHpSong : 1; // 0x2
u16 behindSubstitute : 1; // 0x4
u16 flag_x8 : 1; // 0x8
u16 hpNumbersNoBars : 1; // 0x10
u16 invisible:1; // 0x1
u16 lowHpSong:1; // 0x2
u16 behindSubstitute:1; // 0x4
u16 flag_x8:1; // 0x8
u16 hpNumbersNoBars:1; // 0x10
u16 transformSpecies;
};
@@ -647,12 +630,12 @@ struct BattleAnimationInfo
u8 field_6;
u8 field_7;
u8 ballThrowCaseId;
u8 field_9_x1 : 1;
u8 field_9_x2 : 1;
u8 field_9_x1C : 3;
u8 field_9_x20 : 1;
u8 field_9_x40 : 1;
u8 field_9_x80 : 1;
u8 field_9_x1:1;
u8 field_9_x2:1;
u8 field_9_x1C:3;
u8 field_9_x20:1;
u8 field_9_x40:1;
u8 field_9_x80:1;
u8 field_A;
u8 field_B;
u8 field_C;
@@ -663,21 +646,21 @@ struct BattleAnimationInfo
struct BattleHealthboxInfo
{
u8 flag_x1 : 1;
u8 flag_x2 : 1;
u8 flag_x4 : 1;
u8 ballAnimActive : 1; // 0x8
u8 statusAnimActive : 1; // x10
u8 animFromTableActive : 1; // x20
u8 specialAnimActive : 1; //x40
u8 flag_x80 : 1;
u8 field_1_x1 : 1;
u8 field_1_x1E : 4;
u8 field_1_x20 : 1;
u8 field_1_x40 : 1;
u8 field_1_x80 : 1;
u8 field_2;
u8 field_3;
u8 partyStatusSummaryShown:1;
u8 healthboxIsBouncing:1;
u8 battlerIsBouncing:1;
u8 ballAnimActive:1; // 0x8
u8 statusAnimActive:1; // x10
u8 animFromTableActive:1; // x20
u8 specialAnimActive:1; // x40
u8 flag_x80:1;
u8 field_1_x1:1;
u8 field_1_x1E:4;
u8 field_1_x20:1;
u8 field_1_x40:1;
u8 field_1_x80:1;
u8 healthboxBounceSpriteId;
u8 battlerBounceSpriteId;
u8 animationState;
u8 field_5;
u8 field_6;
@@ -692,9 +675,9 @@ struct BattleBarInfo
{
u8 healthboxSpriteId;
s32 maxValue;
s32 currentValue;
s32 oldValue;
s32 receivedValue;
s32 field_10;
s32 currValue;
};
struct BattleSpriteData
@@ -719,7 +702,11 @@ struct MonSpritesGfx
void *field_17C;
};
// all battle variables are declared in battle_main.c
// All battle variables are declared in battle_main.c
extern u8 gDisplayedStringBattle[300];
extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
extern u32 gBattleTypeFlags;
extern u8 gBattleTerrain;
extern u32 gUnknown_02022FF4;
@@ -733,7 +720,7 @@ extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gCurrentTurnActionNumber;
extern u8 gCurrentActionFuncId;
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];

View File

@@ -1,13 +1,18 @@
#ifndef GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
#define GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
// return values for BattleAI_ChooseMoveOrAction
// 0 - 3 are move idx
#define AI_CHOICE_FLEE 4
#define AI_CHOICE_WATCH 5
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
u8 BattleAI_ChooseMoveOrAction(void);
void ClearBattlerMoveHistory(u8 bank);
void RecordAbilityBattle(u8 bank, u8 abilityId);
void ClearBattlerAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void ClearBankItemEffectHistory(u8 bank);
void ClearBattlerMoveHistory(u8 battlerId);
void RecordAbilityBattle(u8 battlerId, u8 abilityId);
void ClearBattlerAbilityHistory(u8 battlerId);
void RecordItemEffectBattle(u8 battlerId, u8 itemEffect);
void ClearBattlerItemEffectHistory(u8 battlerId);
#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H

View File

@@ -1,13 +1,13 @@
#ifndef GUARD_BATTLE_BG_H
#define GUARD_BATTLE_BG_H
void sub_8035658(void);
void BattleInitBgsAndWindows(void);
void sub_80356D0(void);
void ApplyPlayerChosenFrameToBattleMenu(void);
void LoadBattleMenuWindowGfx(void);
void DrawMainBattleBackground(void);
void LoadBattleTextboxAndBackground(void);
void sub_8035D74(u8 taskId);
void LoadBattleEntryBackground(void);
void DrawBattleEntryBackground(void);
bool8 LoadChosenBattleElement(u8 caseId);
#endif // GUARD_BATTLE_BG_H

View File

@@ -65,6 +65,8 @@ enum
REQUEST_TOUGH_RIBBON_BATTLE,
};
// Special arguments for Battle Controller functions.
#define RESET_ACTION_MOVE_SELECTION 0
#define RESET_ACTION_SELECTION 1
#define RESET_MOVE_SELECTION 2
@@ -76,14 +78,15 @@ enum
#define BALL_3_SHAKES_SUCCESS 4
#define BALL_TRAINER_BLOCK 5
#define RET_VALUE_LEVELLED_UP 11
#define INSTANT_HP_BAR_DROP 32767
// Special return values in gBattleBufferB from Battle Controller functions.
#define RET_VALUE_LEVELED_UP 11
struct UnusedControllerStruct
{
u8 field_0 : 7;
u8 flag_x80 : 1;
u8 field_0:7;
u8 flag_x80:1;
};
struct HpAndStatus
@@ -160,8 +163,8 @@ enum
CONTROLLER_INTROSLIDE,
CONTROLLER_INTROTRAINERBALLTHROW,
CONTROLLER_DRAWPARTYSTATUSSUMMARY,
CONTROLLER_49,
CONTROLLER_50,
CONTROLLER_HIDEPARTYSTATUSSUMMARY,
CONTROLLER_ENDBOUNCE,
CONTROLLER_SPRITEINVISIBILITY,
CONTROLLER_BATTLEANIMATION,
CONTROLLER_LINKSTANDBYMSG,
@@ -230,13 +233,13 @@ void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
void BtlController_EmitCmd49(u8 bufferId);
void BtlController_EmitCmd50(u8 bufferId);
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome);
// player controller
void SetControllerToPlayer(void);

View File

@@ -35,7 +35,7 @@ void ClearBehindSubstituteBit(u8 battlerId);
void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
void BattleStopLowHpSound(void);
u8 GetMonHPBarLevel(struct Pokemon *mon);
void sub_805EAE8(void);
void HandleBattleLowHpMusicChange(void);
void sub_805EB9C(u8 affineMode);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
@@ -45,6 +45,6 @@ void sub_805EF14(void);
void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
bool32 ShouldPlayNormalMonCry(struct Pokemon *mon);
#endif // GUARD_BATTLE_GFX_SFX_UTIL

View File

@@ -29,12 +29,18 @@ enum
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702
#define TAG_HEALTHBAR_PLAYER1_TILE 0xD704
#define TAG_HEALTHBAR_OPPONENT1_TILE 0xD705
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707
#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
#define TAG_HEALTHBOX_PAL 0xD6FF
#define TAG_HEALTHBAR_PAL 0xD704
#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
@@ -66,9 +72,9 @@ void InitBattlerHealthboxCoords(u8 bank);
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
void SwapHpBarsWithHpText(void);
u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
void sub_8073C30(u8 taskId);
void Task_HidePartyStatusSummary(u8 taskId);
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
s32 MoveBattleBar(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
u8 GetHPBarLevel(s16 hp, s16 maxhp);

View File

@@ -25,6 +25,10 @@ struct TrainerMoney
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
// defines for the 'DoBounceEffect' function
#define BOUNCE_MON 0x0
#define BOUNCE_HEALTHBOX 0x1
void CB2_InitBattle(void);
void BattleMainCB2(void);
void CB2_QuitRecordedBattle(void);
@@ -38,15 +42,15 @@ u32 sub_80391E0(u8 arrayId, u8 caseId);
u32 sub_80397C4(u32 setId, u32 tableId);
void oac_poke_opponent(struct Sprite *sprite);
void SpriteCallbackDummy_2(struct Sprite *sprite);
void sub_8039934(struct Sprite *sprite);
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
void sub_8039AD8(struct Sprite *sprite);
void sub_8039B2C(struct Sprite *sprite);
void sub_8039B58(struct Sprite *sprite);
void sub_8039BB4(struct Sprite *sprite);
void sub_80105DC(struct Sprite *sprite);
void sub_8039C00(struct Sprite *sprite);
void dp11b_obj_instanciate(u8 battlerId, u8 b, s8 c, s8 d);
void dp11b_obj_free(u8 battlerId, bool8 b);
void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d);
void EndBounceEffect(u8 battlerId, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
@@ -80,6 +84,6 @@ extern const u8 gStatusConditionString_IceJpn[8];
extern const u8 gStatusConditionString_ConfusionJpn[8];
extern const u8 gStatusConditionString_LoveJpn[8];
extern const u8 * const gStatusConditionStringsTable[7][2];
extern const u8 *const gStatusConditionStringsTable[7][2];
#endif // GUARD_BATTLE_MAIN_H

View File

@@ -1,8 +1,9 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
// for 0xFD
#define TEXT_BUFF_ARRAY_COUNT 16
// for 0xFD
#define B_TXT_BUFF1 0x0
#define B_TXT_BUFF2 0x1
#define B_TXT_COPY_VAR_1 0x2
@@ -194,7 +195,7 @@
textVar[4] = B_BUFF_EOS; \
}
struct StringInfoBattle
struct BattleMsgData
{
u16 currentMove;
u16 originallyUsedMove;
@@ -203,25 +204,20 @@ struct StringInfoBattle
u8 scrActive;
u8 unk1605E;
u8 hpScale;
u8 StringBank;
u8 itemEffectBattler;
u8 moveType;
u8 abilities[4];
u8 textBuffs[3][0x10];
u8 abilities[MAX_BATTLERS_COUNT];
u8 textBuffs[3][TEXT_BUFF_ARRAY_COUNT];
};
void BufferStringBattle(u16 stringID);
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src);
u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
void BattleHandleAddTextPrinter(const u8* text, u8 arg1);
void BattlePutTextOnWindow(const u8* text, u8 arg1);
void SetPpNumbersPaletteInMoveSelection(void);
u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
#define TEXT_BUFF_ARRAY_COUNT 16
extern u8 gDisplayedStringBattle[300];
extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
extern struct BattleMsgData *gBattleMsgDataPtr;
extern const u8* const gBattleStringsTable[];
extern const u8* const gStatNamesTable[];
@@ -252,6 +248,13 @@ extern const u8 gText_BattleSwitchWhich4[];
extern const u8 gText_BattleSwitchWhich5[];
extern const u8 gText_SafariBalls[];
extern const u8 gText_SafariBallLeft[];
extern const u8 gText_Sleep[];
extern const u8 gText_Poison[];
extern const u8 gText_Burn[];
extern const u8 gText_Paralysis[];
extern const u8 gText_Ice[];
extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
extern const u8 gText_SpaceAndSpace[];
extern const u8 gText_CommaSpace[];
extern const u8 gText_Space2[];

View File

@@ -8,41 +8,36 @@
#define MOVE_LIMITATION_TAUNT (1 << 4)
#define MOVE_LIMITATION_IMPRISION (1 << 5)
#define ABILITYEFFECT_ON_SWITCHIN 0x0
#define ABILITYEFFECT_ENDTURN 0x1
#define ABILITYEFFECT_MOVES_BLOCK 0x2
#define ABILITYEFFECT_ABSORBING 0x3
#define ABILITYEFFECT_CONTACT 0x4
#define ABILITYEFFECT_IMMUNITY 0x5
#define ABILITYEFFECT_FORECAST 0x6
#define ABILITYEFFECT_SYNCHRONIZE 0x7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
#define ABILITYEFFECT_INTIMIDATE1 0x9
#define ABILITYEFFECT_INTIMIDATE2 0xA
#define ABILITYEFFECT_TRACE 0xB
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
#define ABILITYEFFECT_FIELD_SPORT 0xE
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
#define ABILITYEFFECT_ON_SWITCHIN 0x0
#define ABILITYEFFECT_ENDTURN 0x1
#define ABILITYEFFECT_MOVES_BLOCK 0x2
#define ABILITYEFFECT_ABSORBING 0x3
#define ABILITYEFFECT_CONTACT 0x4
#define ABILITYEFFECT_IMMUNITY 0x5
#define ABILITYEFFECT_FORECAST 0x6
#define ABILITYEFFECT_SYNCHRONIZE 0x7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
#define ABILITYEFFECT_INTIMIDATE1 0x9
#define ABILITYEFFECT_INTIMIDATE2 0xA
#define ABILITYEFFECT_TRACE 0xB
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD
#define ABILITYEFFECT_FIELD_SPORT 0xE
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
#define ITEMEFFECT_ON_SWITCH_IN 0x0
#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 WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_GET_SCRIPTING_BANK 10
#define BS_GET_PLAYER1 11
#define BS_GET_OPPONENT1 12
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
#define WEATHER_HAS_EFFECT ((!ABILITY_ON_FIELD(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD(ABILITY_AIR_LOCK)))
#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
@@ -70,7 +65,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void);
bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
bool8 sub_80423F4(u8 battlerId, u8 r1, u8 r2);
bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2);
u8 CastformDataTypeChange(u8 battlerId);
u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u8 ability, u8 special, u16 moveArg);
void BattleScriptExecute(const u8* BS_ptr);

View File

@@ -9,5 +9,7 @@
void sub_80B37D4(TaskFunc taskFunc);
u8 sub_80B3050(void);
void sub_80B360C(void);
bool32 sub_80B2AF4(u16 *arg0, u16 *arg1);
#endif //GUARD_CABLE_CLUB_H

View File

@@ -80,4 +80,6 @@
#define ABILITY_CACOPHONY 76
#define ABILITY_AIR_LOCK 77
#define ABILITIES_COUNT 78
#endif // GUARD_CONSTANTS_ABILITIES_H

View File

@@ -130,7 +130,7 @@
#define STATUS2_TORMENT 0x80000000
// Seems like per-battler statuses. Not quite sure how to categorize these
#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED_BATTLER 0x3
#define STATUS3_LEECHSEED 0x4
#define STATUS3_ALWAYS_HITS 0x18 // two bits
#define STATUS3_PERISH_SONG 0x20
@@ -159,7 +159,7 @@
#define HITMARKER_NO_ATTACKSTRING 0x00000200
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
#define HITMARKER_NO_PPDEDUCT 0x00000800
#define HITMARKER_PURSUIT_TRAP 0x00001000
#define HITMARKER_SWAP_ATTACKER_TARGET 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
#define HITMARKER_RUN 0x00008000

View File

@@ -0,0 +1,13 @@
#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_H
#define GUARD_CONSTANTS_BATTLE_FRONTIER_H
// Battle Frontier facility ids.
#define FRONTIER_FACILITY_TOWER 0
#define FRONTIER_FACILITY_DOME 1
#define FRONTIER_FACILITY_PALACE 2
#define FRONTIER_FACILITY_ARENA 3
#define FRONTIER_FACILITY_FACTORY 4
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H

View File

@@ -37,7 +37,7 @@
#define BS_ATTACKER 1
#define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3
#define BS_BANK_0 7
#define BS_BATTLER_0 7
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability

View File

@@ -0,0 +1,13 @@
#ifndef GUARD_CONSTANTS_BG_EVENT_H
#define GUARD_CONSTANTS_BG_EVENT_H
#define BG_EVENT_PLAYER_FACING_ANY 0
#define BG_EVENT_PLAYER_FACING_NORTH 1
#define BG_EVENT_PLAYER_FACING_SOUTH 2
#define BG_EVENT_PLAYER_FACING_EAST 3
#define BG_EVENT_PLAYER_FACING_WEST 4
#define BG_EVENT_HIDDEN_ITEM 7
#define BG_EVENT_SECRET_BASE 8
#endif // GUARD_CONSTANTS_BG_EVENT_H

View File

@@ -0,0 +1,245 @@
#ifndef GUARD_CONSTANTS_EVENTOBJMV_H
#define GUARD_CONSTANTS_EVENTOBJMV_H
#define MOVEMENT_TYPE_NONE 0x0
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
#define MOVEMENT_TYPE_WANDER_AROUND 0x2
#define MOVEMENT_TYPE_WANDER_UP_AND_DOWN 0x3
#define MOVEMENT_TYPE_WANDER_DOWN_AND_UP 0x4
#define MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT 0x5
#define MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT 0x6
#define MOVEMENT_TYPE_FACE_UP 0x7
#define MOVEMENT_TYPE_FACE_DOWN 0x8
#define MOVEMENT_TYPE_FACE_LEFT 0x9
#define MOVEMENT_TYPE_FACE_RIGHT 0xA
#define MOVEMENT_TYPE_PLAYER 0xB
#define MOVEMENT_TYPE_BERRY_TREE_GROWTH 0xC
#define MOVEMENT_TYPE_FACE_DOWN_AND_UP 0xD
#define MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT 0xE
#define MOVEMENT_TYPE_FACE_UP_AND_LEFT 0xF
#define MOVEMENT_TYPE_FACE_UP_AND_RIGHT 0x10
#define MOVEMENT_TYPE_FACE_DOWN_AND_LEFT 0x11
#define MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT 0x12
#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT 0x13
#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT 0x14
#define MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT 0x15
#define MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT 0x16
#define MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE 0x17
#define MOVEMENT_TYPE_ROTATE_CLOCKWISE 0x18
#define MOVEMENT_TYPE_WALK_UP_AND_DOWN 0x19
#define MOVEMENT_TYPE_WALK_DOWN_AND_UP 0x1A
#define MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT 0x1B
#define MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT 0x1C
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN 0x1D
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP 0x1E
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT 0x1F
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT 0x20
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN 0x21
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP 0x22
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT 0x23
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT 0x24
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT 0x25
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT 0x26
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN 0x27
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP 0x28
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT 0x29
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT 0x2A
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN 0x2B
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP 0x2C
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT 0x2D
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT 0x2E
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP 0x2F
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN 0x30
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT 0x31
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT 0x32
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN 0x33
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP 0x34
#define MOVEMENT_TYPE_COPY_PLAYER 0x35
#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE 0x36
#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE 0x37
#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE 0x38
#define MOVEMENT_TYPE_TREE_DISGUISE 0x39
#define MOVEMENT_TYPE_MOUNTAIN_DISGUISE 0x3A
#define MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS 0x3B
#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS 0x3C
#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS 0x3D
#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS 0x3E
#define MOVEMENT_TYPE_HIDDEN 0x3F
#define MOVEMENT_TYPE_WALK_IN_PLACE_DOWN 0x40
#define MOVEMENT_TYPE_WALK_IN_PLACE_UP 0x41
#define MOVEMENT_TYPE_WALK_IN_PLACE_LEFT 0x42
#define MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT 0x43
#define MOVEMENT_TYPE_JOG_IN_PLACE_DOWN 0x44
#define MOVEMENT_TYPE_JOG_IN_PLACE_UP 0x45
#define MOVEMENT_TYPE_JOG_IN_PLACE_LEFT 0x46
#define MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT 0x47
#define MOVEMENT_TYPE_RUN_IN_PLACE_DOWN 0x48
#define MOVEMENT_TYPE_RUN_IN_PLACE_UP 0x49
#define MOVEMENT_TYPE_RUN_IN_PLACE_LEFT 0x4A
#define MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT 0x4B
#define MOVEMENT_TYPE_INVISIBLE 0x4C
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN 0x4D
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x4E
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50
#define MOVEMENT_ACTION_FACE_DOWN 0x0
#define MOVEMENT_ACTION_FACE_UP 0x1
#define MOVEMENT_ACTION_FACE_LEFT 0x2
#define MOVEMENT_ACTION_FACE_RIGHT 0x3
#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0x4
#define MOVEMENT_ACTION_WALK_SLOW_UP 0x5
#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0x6
#define MOVEMENT_ACTION_WALK_SLOW_RIGHT 0x7
#define MOVEMENT_ACTION_WALK_NORMAL_DOWN 0x8
#define MOVEMENT_ACTION_WALK_NORMAL_UP 0x9
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT 0xA
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT 0xB
#define MOVEMENT_ACTION_JUMP_2_DOWN 0xC
#define MOVEMENT_ACTION_JUMP_2_UP 0xD
#define MOVEMENT_ACTION_JUMP_2_LEFT 0xE
#define MOVEMENT_ACTION_JUMP_2_RIGHT 0xF
#define MOVEMENT_ACTION_DELAY_1 0x10
#define MOVEMENT_ACTION_DELAY_2 0x11
#define MOVEMENT_ACTION_DELAY_4 0x12
#define MOVEMENT_ACTION_DELAY_8 0x13
#define MOVEMENT_ACTION_DELAY_16 0x14
#define MOVEMENT_ACTION_WALK_FAST_DOWN 0x15
#define MOVEMENT_ACTION_WALK_FAST_UP 0x16
#define MOVEMENT_ACTION_WALK_FAST_LEFT 0x17
#define MOVEMENT_ACTION_WALK_FAST_RIGHT 0x18
#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN 0x19
#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP 0x1A
#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT 0x1B
#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT 0x1C
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN 0x1D
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP 0x1E
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT 0x1F
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT 0x20
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN 0x21
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP 0x22
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT 0x23
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT 0x24
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN 0x25
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x26
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x27
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x28
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x29
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x2A
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x2B
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x2C
#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x2D
#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x2E
#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x2F
#define MOVEMENT_ACTION_WALK_FASTEST_RIGHT 0x30
#define MOVEMENT_ACTION_SLIDE_DOWN 0x31
#define MOVEMENT_ACTION_SLIDE_UP 0x32
#define MOVEMENT_ACTION_SLIDE_LEFT 0x33
#define MOVEMENT_ACTION_SLIDE_RIGHT 0x34
#define MOVEMENT_ACTION_PLAYER_RUN_DOWN 0x35
#define MOVEMENT_ACTION_PLAYER_RUN_UP 0x36
#define MOVEMENT_ACTION_PLAYER_RUN_LEFT 0x37
#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT 0x38
#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION 0x39
#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN 0x3A
#define MOVEMENT_ACTION_JUMP_SPECIAL_UP 0x3B
#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT 0x3C
#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT 0x3D
#define MOVEMENT_ACTION_FACE_PLAYER 0x3E
#define MOVEMENT_ACTION_FACE_AWAY_PLAYER 0x3F
#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION 0x40
#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION 0x41
#define MOVEMENT_ACTION_JUMP_DOWN 0x42
#define MOVEMENT_ACTION_JUMP_UP 0x43
#define MOVEMENT_ACTION_JUMP_LEFT 0x44
#define MOVEMENT_ACTION_JUMP_RIGHT 0x45
#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN 0x46
#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP 0x47
#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT 0x48
#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT 0x49
#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP 0x4A
#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN 0x4B
#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT 0x4C
#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT 0x4D
#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION 0x4E
#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN 0x4F
#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT 0x50
#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT 0x51
#define MOVEMENT_ACTION_DISABLE_ANIMATION 0x52
#define MOVEMENT_ACTION_RESTORE_ANIMATION 0x53
#define MOVEMENT_ACTION_SET_INVISIBLE 0x54
#define MOVEMENT_ACTION_SET_VISIBLE 0x55
#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK 0x56
#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK 0x57
#define MOVEMENT_ACTION_EMOTE_HEART 0x58
#define MOVEMENT_ACTION_REVEAL_TRAINER 0x59
#define MOVEMENT_ACTION_ROCK_SMASH_BREAK 0x5A
#define MOVEMENT_ACTION_CUT_TREE 0x5B
#define MOVEMENT_ACTION_SET_FIXED_PRIORITY 0x5C
#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D
#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E
#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F
#define MOVEMENT_ACTION_UNKNOWN1 0x60
#define MOVEMENT_ACTION_UNKNOWN2 0x61
#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62
#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP 0x65
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT 0x66
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT 0x67
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN 0x68
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP 0x69
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT 0x6A
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT 0x6B
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN 0x6C
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP 0x6D
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT 0x6E
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT 0x6F
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN 0x70
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP 0x71
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT 0x72
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT 0x73
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN 0x74
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP 0x75
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT 0x76
#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT 0x77
#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN 0x78
#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP 0x79
#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT 0x7A
#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT 0x7B
#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN 0x7C
#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP 0x7D
#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT 0x7E
#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT 0x7F
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN 0x80
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP 0x81
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT 0x82
#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT 0x83
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN 0x84
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x85
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x86
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x87
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x88
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x89
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x8A
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x8B
#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT 0x8C
#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT 0x8D
#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT 0x8E
#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT 0x8F
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT 0x90
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
#define MOVEMENT_ACTION_LEVITATE 0x98
#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
#define MOVEMENT_ACTION_FIGURE_8 0x9B
#define MOVEMENT_ACTION_FLY_UP 0x9C
#define MOVEMENT_ACTION_FLY_DOWN 0x9D
#endif // GUARD_CONSTANTS_EVENTOBJMV_H

View File

@@ -462,8 +462,8 @@
#define ITEM_MAGMA_EMBLEM 375
#define ITEM_OLD_SEA_MAP 376
#define ITEM_LAST_ID 376
#define ITEM_FIELD_ARROW ITEM_LAST_ID + 1
#define ITEMS_COUNT 377
#define ITEM_FIELD_ARROW ITEMS_COUNT
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY

25
include/constants/map_types.h Executable file
View File

@@ -0,0 +1,25 @@
#ifndef GUARD_CONSTANTS_MAP_TYPES_H
#define GUARD_CONSTANTS_MAP_TYPES_H
#define MAP_TYPE_0 0
#define MAP_TYPE_TOWN 1
#define MAP_TYPE_CITY 2
#define MAP_TYPE_ROUTE 3
#define MAP_TYPE_UNDERGROUND 4
#define MAP_TYPE_UNDERWATER 5
#define MAP_TYPE_6 6
#define MAP_TYPE_7 7
#define MAP_TYPE_INDOOR 8
#define MAP_TYPE_SECRET_BASE 9
#define MAP_BATTLE_SCENE_NORMAL 0
#define MAP_BATTLE_SCENE_GYM 1
#define MAP_BATTLE_SCENE_MAGMA 2
#define MAP_BATTLE_SCENE_AQUA 3
#define MAP_BATTLE_SCENE_SIDNEY 4
#define MAP_BATTLE_SCENE_PHOEBE 5
#define MAP_BATTLE_SCENE_GLACIA 6
#define MAP_BATTLE_SCENE_DRAKE 7
#define MAP_BATTLE_SCENE_FRONTIER 8
#endif // GUARD_CONSTANTS_MAP_TYPES_H

View File

@@ -357,6 +357,6 @@
#define MOVE_DOOM_DESIRE 353
#define MOVE_PSYCHO_BOOST 354
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
#define MOVES_COUNT 355
#endif // GUARD_CONSTANTS_MOVES_H

File diff suppressed because it is too large Load Diff

110
include/constants/secret_bases.h Executable file
View File

@@ -0,0 +1,110 @@
#ifndef GUARD_CONSTANTS_SECRET_BASES_H
#define GUARD_CONSTANTS_SECRET_BASES_H
// Each secret base location is assigned an identifier value.
// The secret base's map is determined by (id / 10). The ones
// digit is used to differentiate secret bases using the same map.
// Therefore, each secret base map can be used by up to 10 different
// secret bases in the game. These ids are 1-based, but there is no
// apparent reason for that.
#define SECRET_BASE_RED_CAVE1_1 1
#define SECRET_BASE_RED_CAVE1_2 2
#define SECRET_BASE_RED_CAVE1_3 3
#define SECRET_BASE_RED_CAVE2_1 11
#define SECRET_BASE_RED_CAVE2_2 12
#define SECRET_BASE_RED_CAVE2_3 13
#define SECRET_BASE_RED_CAVE3_1 21
#define SECRET_BASE_RED_CAVE3_2 22
#define SECRET_BASE_RED_CAVE3_3 23
#define SECRET_BASE_RED_CAVE4_1 31
#define SECRET_BASE_RED_CAVE4_2 32
#define SECRET_BASE_RED_CAVE4_3 33
#define SECRET_BASE_BROWN_CAVE1_1 41
#define SECRET_BASE_BROWN_CAVE1_2 42
#define SECRET_BASE_BROWN_CAVE1_3 43
#define SECRET_BASE_BROWN_CAVE2_1 51
#define SECRET_BASE_BROWN_CAVE2_2 52
#define SECRET_BASE_BROWN_CAVE2_3 53
#define SECRET_BASE_BROWN_CAVE3_1 61
#define SECRET_BASE_BROWN_CAVE3_2 62
#define SECRET_BASE_BROWN_CAVE3_3 63
#define SECRET_BASE_BROWN_CAVE4_1 71
#define SECRET_BASE_BROWN_CAVE4_2 72
#define SECRET_BASE_BROWN_CAVE4_3 73
#define SECRET_BASE_BLUE_CAVE1_1 81
#define SECRET_BASE_BLUE_CAVE1_2 82
#define SECRET_BASE_BLUE_CAVE1_3 83
#define SECRET_BASE_BLUE_CAVE2_1 91
#define SECRET_BASE_BLUE_CAVE2_2 92
#define SECRET_BASE_BLUE_CAVE2_3 93
#define SECRET_BASE_BLUE_CAVE3_1 101
#define SECRET_BASE_BLUE_CAVE3_2 102
#define SECRET_BASE_BLUE_CAVE3_3 103
#define SECRET_BASE_BLUE_CAVE4_1 111
#define SECRET_BASE_BLUE_CAVE4_2 112
#define SECRET_BASE_BLUE_CAVE4_3 113
#define SECRET_BASE_YELLOW_CAVE1_1 121
#define SECRET_BASE_YELLOW_CAVE1_2 122
#define SECRET_BASE_YELLOW_CAVE1_3 123
#define SECRET_BASE_YELLOW_CAVE2_1 131
#define SECRET_BASE_YELLOW_CAVE2_2 132
#define SECRET_BASE_YELLOW_CAVE2_3 133
#define SECRET_BASE_YELLOW_CAVE3_1 141
#define SECRET_BASE_YELLOW_CAVE3_2 142
#define SECRET_BASE_YELLOW_CAVE3_3 143
#define SECRET_BASE_YELLOW_CAVE4_1 151
#define SECRET_BASE_YELLOW_CAVE4_2 152
#define SECRET_BASE_YELLOW_CAVE4_3 153
#define SECRET_BASE_TREE1_1 161
#define SECRET_BASE_TREE1_2 162
#define SECRET_BASE_TREE1_3 163
#define SECRET_BASE_TREE1_4 164
#define SECRET_BASE_TREE2_1 171
#define SECRET_BASE_TREE2_2 172
#define SECRET_BASE_TREE2_3 173
#define SECRET_BASE_TREE2_4 174
#define SECRET_BASE_TREE3_1 181
#define SECRET_BASE_TREE3_2 182
#define SECRET_BASE_TREE3_3 183
#define SECRET_BASE_TREE4_1 191
#define SECRET_BASE_TREE4_2 192
#define SECRET_BASE_TREE4_3 193
#define SECRET_BASE_SHRUB1_1 201
#define SECRET_BASE_SHRUB1_2 202
#define SECRET_BASE_SHRUB1_3 203
#define SECRET_BASE_SHRUB1_4 204
#define SECRET_BASE_SHRUB2_1 211
#define SECRET_BASE_SHRUB2_2 212
#define SECRET_BASE_SHRUB2_3 213
#define SECRET_BASE_SHRUB3_1 221
#define SECRET_BASE_SHRUB3_2 222
#define SECRET_BASE_SHRUB3_3 223
#define SECRET_BASE_SHRUB4_1 231
#define SECRET_BASE_SHRUB4_2 232
#define SECRET_BASE_SHRUB4_3 233
#endif // GUARD_CONSTANTS_SECRET_BASES_H

View File

@@ -1,863 +1,14 @@
#ifndef GUARD_TRAINERS_H
#define GUARD_TRAINERS_H
#define TRAINER_NONE 0
#define TRAINER_SAWYER_1 1
#define TRAINER_GRUNT_1 2
#define TRAINER_GRUNT_2 3
#define TRAINER_GRUNT_3 4
#define TRAINER_GRUNT_4 5
#define TRAINER_GRUNT_5 6
#define TRAINER_GRUNT_6 7
#define TRAINER_GRUNT_7 8
#define TRAINER_GABRIELLE_1 9
#define TRAINER_GRUNT_8 10
#define TRAINER_MARCEL 11
#define TRAINER_ALBERTO 12
#define TRAINER_ED 13
#define TRAINER_GRUNT_9 14
#define TRAINER_DECLAN 15
#define TRAINER_GRUNT_10 16
#define TRAINER_GRUNT_11 17
#define TRAINER_GRUNT_12 18
#define TRAINER_GRUNT_13 19
#define TRAINER_GRUNT_14 20
#define TRAINER_GRUNT_15 21
#define TRAINER_GRUNT_16 22
#define TRAINER_GRUNT_17 23
#define TRAINER_GRUNT_18 24
#define TRAINER_GRUNT_19 25
#define TRAINER_GRUNT_20 26
#define TRAINER_GRUNT_21 27
#define TRAINER_GRUNT_22 28
#define TRAINER_FREDRICK 29
#define TRAINER_MATT 30
#define TRAINER_ZANDER 31
#define TRAINER_SHELLY_1 32
#define TRAINER_SHELLY_2 33
#define TRAINER_ARCHIE 34
#define TRAINER_LEAH 35
#define TRAINER_DAISY 36
#define TRAINER_ROSE_1 37
#define TRAINER_FELIX 38
#define TRAINER_VIOLET 39
#define TRAINER_ROSE_2 40
#define TRAINER_ROSE_3 41
#define TRAINER_ROSE_4 42
#define TRAINER_ROSE_5 43
#define TRAINER_DUSTY_1 44
#define TRAINER_CHIP 45
#define TRAINER_FOSTER 46
#define TRAINER_DUSTY_2 47
#define TRAINER_DUSTY_3 48
#define TRAINER_DUSTY_4 49
#define TRAINER_DUSTY_5 50
#define TRAINER_GABBY_AND_TY_1 51
#define TRAINER_GABBY_AND_TY_2 52
#define TRAINER_GABBY_AND_TY_3 53
#define TRAINER_GABBY_AND_TY_4 54
#define TRAINER_GABBY_AND_TY_5 55
#define TRAINER_GABBY_AND_TY_6 56
#define TRAINER_LOLA_1 57
#define TRAINER_AUSTINA 58
#define TRAINER_GWEN 59
#define TRAINER_LOLA_2 60
#define TRAINER_LOLA_3 61
#define TRAINER_LOLA_4 62
#define TRAINER_LOLA_5 63
#define TRAINER_RICKY_1 64
#define TRAINER_SIMON 65
#define TRAINER_CHARLIE 66
#define TRAINER_RICKY_2 67
#define TRAINER_RICKY_3 68
#define TRAINER_RICKY_4 69
#define TRAINER_RICKY_5 70
#define TRAINER_RANDALL 71
#define TRAINER_PARKER 72
#define TRAINER_GEORGE 73
#define TRAINER_BERKE 74
#define TRAINER_BRAXTON 75
#define TRAINER_VINCENT 76
#define TRAINER_LEROY 77
#define TRAINER_WILTON_1 78
#define TRAINER_EDGAR 79
#define TRAINER_ALBERT 80
#define TRAINER_SAMUEL 81
#define TRAINER_VITO 82
#define TRAINER_OWEN 83
#define TRAINER_WILTON_2 84
#define TRAINER_WILTON_3 85
#define TRAINER_WILTON_4 86
#define TRAINER_WILTON_5 87
#define TRAINER_WARREN 88
#define TRAINER_MARY 89
#define TRAINER_ALEXIA 90
#define TRAINER_JODY 91
#define TRAINER_WENDY 92
#define TRAINER_KEIRA 93
#define TRAINER_BROOKE_1 94
#define TRAINER_JENNIFER 95
#define TRAINER_HOPE 96
#define TRAINER_SHANNON 97
#define TRAINER_MICHELLE 98
#define TRAINER_CAROLINE 99
#define TRAINER_JULIE 100
#define TRAINER_BROOKE_2 101
#define TRAINER_BROOKE_3 102
#define TRAINER_BROOKE_4 103
#define TRAINER_BROOKE_5 104
#define TRAINER_PATRICIA 105
#define TRAINER_KINDRA 106
#define TRAINER_TAMMY 107
#define TRAINER_VALERIE_1 108
#define TRAINER_TASHA 109
#define TRAINER_VALERIE_2 110
#define TRAINER_VALERIE_3 111
#define TRAINER_VALERIE_4 112
#define TRAINER_VALERIE_5 113
#define TRAINER_CINDY_1 114
#define TRAINER_DAPHNE 115
#define TRAINER_GRUNT_23 116
#define TRAINER_CINDY_2 117
#define TRAINER_BRIANNA 118
#define TRAINER_NAOMI 119
#define TRAINER_CINDY_3 120
#define TRAINER_CINDY_4 121
#define TRAINER_CINDY_5 122
#define TRAINER_CINDY_6 123
#define TRAINER_MELISSA 124
#define TRAINER_SHEILA 125
#define TRAINER_SHIRLEY 126
#define TRAINER_JESSICA_1 127
#define TRAINER_CONNIE 128
#define TRAINER_BRIDGET 129
#define TRAINER_OLIVIA 130
#define TRAINER_TIFFANY 131
#define TRAINER_JESSICA_2 132
#define TRAINER_JESSICA_3 133
#define TRAINER_JESSICA_4 134
#define TRAINER_JESSICA_5 135
#define TRAINER_WINSTON_1 136
#define TRAINER_MOLLIE 137
#define TRAINER_GARRET 138
#define TRAINER_WINSTON_2 139
#define TRAINER_WINSTON_3 140
#define TRAINER_WINSTON_4 141
#define TRAINER_WINSTON_5 142
#define TRAINER_STEVE_1 143
#define TRAINER_THALIA_1 144
#define TRAINER_MARK 145
#define TRAINER_GRUNT_24 146
#define TRAINER_STEVE_2 147
#define TRAINER_STEVE_3 148
#define TRAINER_STEVE_4 149
#define TRAINER_STEVE_5 150
#define TRAINER_LUIS 151
#define TRAINER_DOMINIK 152
#define TRAINER_DOUGLAS 153
#define TRAINER_DARRIN 154
#define TRAINER_TONY_1 155
#define TRAINER_JEROME 156
#define TRAINER_MATTHEW 157
#define TRAINER_DAVID 158
#define TRAINER_SPENCER 159
#define TRAINER_ROLAND 160
#define TRAINER_NOLEN 161
#define TRAINER_STAN 162
#define TRAINER_BARRY 163
#define TRAINER_DEAN 164
#define TRAINER_RODNEY 165
#define TRAINER_RICHARD 166
#define TRAINER_HERMAN 167
#define TRAINER_SANTIAGO 168
#define TRAINER_GILBERT 169
#define TRAINER_FRANKLIN 170
#define TRAINER_KEVIN 171
#define TRAINER_JACK 172
#define TRAINER_DUDLEY 173
#define TRAINER_CHAD 174
#define TRAINER_TONY_2 175
#define TRAINER_TONY_3 176
#define TRAINER_TONY_4 177
#define TRAINER_TONY_5 178
#define TRAINER_TAKAO 179
#define TRAINER_HITOSHI 180
#define TRAINER_KIYO 181
#define TRAINER_KOICHI 182
#define TRAINER_NOB_1 183
#define TRAINER_NOB_2 184
#define TRAINER_NOB_3 185
#define TRAINER_NOB_4 186
#define TRAINER_NOB_5 187
#define TRAINER_YUJI 188
#define TRAINER_DAISUKE 189
#define TRAINER_ATSUSHI 190
#define TRAINER_KIRK 191
#define TRAINER_GRUNT_25 192
#define TRAINER_GRUNT_26 193
#define TRAINER_SHAWN 194
#define TRAINER_FERNANDO_1 195
#define TRAINER_DALTON_1 196
#define TRAINER_DALTON_2 197
#define TRAINER_DALTON_3 198
#define TRAINER_DALTON_4 199
#define TRAINER_DALTON_5 200
#define TRAINER_COLE 201
#define TRAINER_JEFF 202
#define TRAINER_AXLE 203
#define TRAINER_JACE 204
#define TRAINER_KEEGAN 205
#define TRAINER_BERNIE_1 206
#define TRAINER_BERNIE_2 207
#define TRAINER_BERNIE_3 208
#define TRAINER_BERNIE_4 209
#define TRAINER_BERNIE_5 210
#define TRAINER_DREW 211
#define TRAINER_BEAU 212
#define TRAINER_LARRY 213
#define TRAINER_SHANE 214
#define TRAINER_JUSTIN 215
#define TRAINER_ETHAN_1 216
#define TRAINER_AUTUMN 217
#define TRAINER_TRAVIS 218
#define TRAINER_ETHAN_2 219
#define TRAINER_ETHAN_3 220
#define TRAINER_ETHAN_4 221
#define TRAINER_ETHAN_5 222
#define TRAINER_BRENT 223
#define TRAINER_DONALD 224
#define TRAINER_TAYLOR 225
#define TRAINER_JEFFREY_1 226
#define TRAINER_DEREK 227
#define TRAINER_JEFFREY_2 228
#define TRAINER_JEFFREY_3 229
#define TRAINER_JEFFREY_4 230
#define TRAINER_JEFFREY_5 231
#define TRAINER_EDWARD 232
#define TRAINER_PRESTON 233
#define TRAINER_VIRGIL 234
#define TRAINER_BLAKE 235
#define TRAINER_WILLIAM 236
#define TRAINER_JOSHUA 237
#define TRAINER_CAMERON_1 238
#define TRAINER_CAMERON_2 239
#define TRAINER_CAMERON_3 240
#define TRAINER_CAMERON_4 241
#define TRAINER_CAMERON_5 242
#define TRAINER_JACLYN 243
#define TRAINER_HANNAH 244
#define TRAINER_SAMANTHA 245
#define TRAINER_MAURA 246
#define TRAINER_KAYLA 247
#define TRAINER_ALEXIS 248
#define TRAINER_JACKI_1 249
#define TRAINER_JACKI_2 250
#define TRAINER_JACKI_3 251
#define TRAINER_JACKI_4 252
#define TRAINER_JACKI_5 253
#define TRAINER_WALTER_1 254
#define TRAINER_MICAH 255
#define TRAINER_THOMAS 256
#define TRAINER_WALTER_2 257
#define TRAINER_WALTER_3 258
#define TRAINER_WALTER_4 259
#define TRAINER_WALTER_5 260
#define TRAINER_SIDNEY 261
#define TRAINER_PHOEBE 262
#define TRAINER_GLACIA 263
#define TRAINER_DRAKE 264
#define TRAINER_ROXANNE_1 265
#define TRAINER_BRAWLY_1 266
#define TRAINER_WATTSON_1 267
#define TRAINER_FLANNERY_1 268
#define TRAINER_NORMAN_1 269
#define TRAINER_WINONA_1 270
#define TRAINER_TATE_AND_LIZA_1 271
#define TRAINER_JUAN_1 272
#define TRAINER_JERRY_1 273
#define TRAINER_TED 274
#define TRAINER_PAUL 275
#define TRAINER_JERRY_2 276
#define TRAINER_JERRY_3 277
#define TRAINER_JERRY_4 278
#define TRAINER_JERRY_5 279
#define TRAINER_KAREN_1 280
#define TRAINER_GEORGIA 281
#define TRAINER_KAREN_2 282
#define TRAINER_KAREN_3 283
#define TRAINER_KAREN_4 284
#define TRAINER_KAREN_5 285
#define TRAINER_KATE_AND_JOY 286
#define TRAINER_ANNA_AND_MEG_1 287
#define TRAINER_ANNA_AND_MEG_2 288
#define TRAINER_ANNA_AND_MEG_3 289
#define TRAINER_ANNA_AND_MEG_4 290
#define TRAINER_ANNA_AND_MEG_5 291
#define TRAINER_VICTOR 292
#define TRAINER_MIGUEL_1 293
#define TRAINER_COLTON 294
#define TRAINER_MIGUEL_2 295
#define TRAINER_MIGUEL_3 296
#define TRAINER_MIGUEL_4 297
#define TRAINER_MIGUEL_5 298
#define TRAINER_VICTORIA 299
#define TRAINER_VANESSA 300
#define TRAINER_BETHANY 301
#define TRAINER_ISABEL_1 302
#define TRAINER_ISABEL_2 303
#define TRAINER_ISABEL_3 304
#define TRAINER_ISABEL_4 305
#define TRAINER_ISABEL_5 306
#define TRAINER_TIMOTHY_1 307
#define TRAINER_TIMOTHY_2 308
#define TRAINER_TIMOTHY_3 309
#define TRAINER_TIMOTHY_4 310
#define TRAINER_TIMOTHY_5 311
#define TRAINER_VICKY 312
#define TRAINER_SHELBY_1 313
#define TRAINER_SHELBY_2 314
#define TRAINER_SHELBY_3 315
#define TRAINER_SHELBY_4 316
#define TRAINER_SHELBY_5 317
#define TRAINER_CALVIN_1 318
#define TRAINER_BILLY 319
#define TRAINER_JOSH 320
#define TRAINER_TOMMY 321
#define TRAINER_JOEY 322
#define TRAINER_BEN 323
#define TRAINER_QUINCY 324
#define TRAINER_KATELYNN 325
#define TRAINER_JAYLEN 326
#define TRAINER_DILLON 327
#define TRAINER_CALVIN_2 328
#define TRAINER_CALVIN_3 329
#define TRAINER_CALVIN_4 330
#define TRAINER_CALVIN_5 331
#define TRAINER_EDDIE 332
#define TRAINER_ALLEN 333
#define TRAINER_TIMMY 334
#define TRAINER_WALLACE 335
#define TRAINER_ANDREW 336
#define TRAINER_IVAN 337
#define TRAINER_CLAUDE 338
#define TRAINER_ELLIOT_1 339
#define TRAINER_NED 340
#define TRAINER_DALE 341
#define TRAINER_NOLAN 342
#define TRAINER_BARNY 343
#define TRAINER_WADE 344
#define TRAINER_CARTER 345
#define TRAINER_ELLIOT_2 346
#define TRAINER_ELLIOT_3 347
#define TRAINER_ELLIOT_4 348
#define TRAINER_ELLIOT_5 349
#define TRAINER_RONALD 350
#define TRAINER_JACOB 351
#define TRAINER_ANTHONY 352
#define TRAINER_BENJAMIN_1 353
#define TRAINER_BENJAMIN_2 354
#define TRAINER_BENJAMIN_3 355
#define TRAINER_BENJAMIN_4 356
#define TRAINER_BENJAMIN_5 357
#define TRAINER_ABIGAIL_1 358
#define TRAINER_JASMINE 359
#define TRAINER_ABIGAIL_2 360
#define TRAINER_ABIGAIL_3 361
#define TRAINER_ABIGAIL_4 362
#define TRAINER_ABIGAIL_5 363
#define TRAINER_DYLAN_1 364
#define TRAINER_DYLAN_2 365
#define TRAINER_DYLAN_3 366
#define TRAINER_DYLAN_4 367
#define TRAINER_DYLAN_5 368
#define TRAINER_MARIA_1 369
#define TRAINER_MARIA_2 370
#define TRAINER_MARIA_3 371
#define TRAINER_MARIA_4 372
#define TRAINER_MARIA_5 373
#define TRAINER_CAMDEN 374
#define TRAINER_DEMETRIUS 375
#define TRAINER_ISAIAH_1 376
#define TRAINER_PABLO_1 377
#define TRAINER_CHASE 378
#define TRAINER_ISAIAH_2 379
#define TRAINER_ISAIAH_3 380
#define TRAINER_ISAIAH_4 381
#define TRAINER_ISAIAH_5 382
#define TRAINER_ISOBEL 383
#define TRAINER_DONNY 384
#define TRAINER_TALIA 385
#define TRAINER_KATELYN_1 386
#define TRAINER_ALLISON 387
#define TRAINER_KATELYN_2 388
#define TRAINER_KATELYN_3 389
#define TRAINER_KATELYN_4 390
#define TRAINER_KATELYN_5 391
#define TRAINER_NICOLAS_1 392
#define TRAINER_NICOLAS_2 393
#define TRAINER_NICOLAS_3 394
#define TRAINER_NICOLAS_4 395
#define TRAINER_NICOLAS_5 396
#define TRAINER_AARON 397
#define TRAINER_PERRY 398
#define TRAINER_HUGH 399
#define TRAINER_PHIL 400
#define TRAINER_JARED 401
#define TRAINER_HUMBERTO 402
#define TRAINER_PRESLEY 403
#define TRAINER_EDWARDO 404
#define TRAINER_COLIN 405
#define TRAINER_ROBERT_1 406
#define TRAINER_BENNY 407
#define TRAINER_CHESTER 408
#define TRAINER_ROBERT_2 409
#define TRAINER_ROBERT_3 410
#define TRAINER_ROBERT_4 411
#define TRAINER_ROBERT_5 412
#define TRAINER_ALEX 413
#define TRAINER_BECK 414
#define TRAINER_YASU 415
#define TRAINER_TAKASHI 416
#define TRAINER_DIANNE 417
#define TRAINER_JANI 418
#define TRAINER_LAO_1 419
#define TRAINER_LUNG 420
#define TRAINER_LAO_2 421
#define TRAINER_LAO_3 422
#define TRAINER_LAO_4 423
#define TRAINER_LAO_5 424
#define TRAINER_JOCELYN 425
#define TRAINER_LAURA 426
#define TRAINER_CYNDY_1 427
#define TRAINER_CORA 428
#define TRAINER_PAULA 429
#define TRAINER_CYNDY_2 430
#define TRAINER_CYNDY_3 431
#define TRAINER_CYNDY_4 432
#define TRAINER_CYNDY_5 433
#define TRAINER_MADELINE_1 434
#define TRAINER_CLARISSA 435
#define TRAINER_ANGELICA 436
#define TRAINER_MADELINE_2 437
#define TRAINER_MADELINE_3 438
#define TRAINER_MADELINE_4 439
#define TRAINER_MADELINE_5 440
#define TRAINER_BEVERLY 441
#define TRAINER_IMANI 442
#define TRAINER_KYLA 443
#define TRAINER_DENISE 444
#define TRAINER_BETH 445
#define TRAINER_TARA 446
#define TRAINER_MISSY 447
#define TRAINER_ALICE 448
#define TRAINER_JENNY_1 449
#define TRAINER_GRACE 450
#define TRAINER_TANYA 451
#define TRAINER_SHARON 452
#define TRAINER_NIKKI 453
#define TRAINER_BRENDA 454
#define TRAINER_KATIE 455
#define TRAINER_SUSIE 456
#define TRAINER_KARA 457
#define TRAINER_DANA 458
#define TRAINER_SIENNA 459
#define TRAINER_DEBRA 460
#define TRAINER_LINDA 461
#define TRAINER_KAYLEE 462
#define TRAINER_LAUREL 463
#define TRAINER_CARLEE 464
#define TRAINER_JENNY_2 465
#define TRAINER_JENNY_3 466
#define TRAINER_JENNY_4 467
#define TRAINER_JENNY_5 468
#define TRAINER_HEIDI 469
#define TRAINER_BECKY 470
#define TRAINER_CAROL 471
#define TRAINER_NANCY 472
#define TRAINER_MARTHA 473
#define TRAINER_DIANA_1 474
#define TRAINER_CEDRIC 475
#define TRAINER_IRENE 476
#define TRAINER_DIANA_2 477
#define TRAINER_DIANA_3 478
#define TRAINER_DIANA_4 479
#define TRAINER_DIANA_5 480
#define TRAINER_AMY_AND_LIV_1 481
#define TRAINER_AMY_AND_LIV_2 482
#define TRAINER_GINA_AND_MIA_1 483
#define TRAINER_MIU_AND_YUKI 484
#define TRAINER_AMY_AND_LIV_3 485
#define TRAINER_GINA_AND_MIA_2 486
#define TRAINER_AMY_AND_LIV_4 487
#define TRAINER_AMY_AND_LIV_5 488
#define TRAINER_AMY_AND_LIV_6 489
#define TRAINER_HUEY 490
#define TRAINER_EDMOND 491
#define TRAINER_ERNEST_1 492
#define TRAINER_DWAYNE 493
#define TRAINER_PHILLIP 494
#define TRAINER_LEONARD 495
#define TRAINER_DUNCAN 496
#define TRAINER_ERNEST_2 497
#define TRAINER_ERNEST_3 498
#define TRAINER_ERNEST_4 499
#define TRAINER_ERNEST_5 500
#define TRAINER_ELI 501
#define TRAINER_ANNIKA 502
#define TRAINER_JAZMYN 503
#define TRAINER_JONAS 504
#define TRAINER_KAYLEY 505
#define TRAINER_AURON 506
#define TRAINER_KELVIN 507
#define TRAINER_MARLEY 508
#define TRAINER_REYNA 509
#define TRAINER_HUDSON 510
#define TRAINER_CONOR 511
#define TRAINER_EDWIN_1 512
#define TRAINER_HECTOR 513
#define TRAINER_TABITHA_1 514
#define TRAINER_EDWIN_2 515
#define TRAINER_EDWIN_3 516
#define TRAINER_EDWIN_4 517
#define TRAINER_EDWIN_5 518
#define TRAINER_WALLY_1 519
#define TRAINER_BRENDAN_1 520
#define TRAINER_BRENDAN_2 521
#define TRAINER_BRENDAN_3 522
#define TRAINER_BRENDAN_4 523
#define TRAINER_BRENDAN_5 524
#define TRAINER_BRENDAN_6 525
#define TRAINER_BRENDAN_7 526
#define TRAINER_BRENDAN_8 527
#define TRAINER_BRENDAN_9 528
#define TRAINER_MAY_1 529
#define TRAINER_MAY_2 530
#define TRAINER_MAY_3 531
#define TRAINER_MAY_4 532
#define TRAINER_MAY_5 533
#define TRAINER_MAY_6 534
#define TRAINER_MAY_7 535
#define TRAINER_MAY_8 536
#define TRAINER_MAY_9 537
#define TRAINER_ISAAC_1 538
#define TRAINER_DAVIS 539
#define TRAINER_MITCHELL 540
#define TRAINER_ISAAC_2 541
#define TRAINER_ISAAC_3 542
#define TRAINER_ISAAC_4 543
#define TRAINER_ISAAC_5 544
#define TRAINER_LYDIA_1 545
#define TRAINER_HALLE 546
#define TRAINER_GARRISON 547
#define TRAINER_LYDIA_2 548
#define TRAINER_LYDIA_3 549
#define TRAINER_LYDIA_4 550
#define TRAINER_LYDIA_5 551
#define TRAINER_JACKSON_1 552
#define TRAINER_LORENZO 553
#define TRAINER_SEBASTIAN 554
#define TRAINER_JACKSON_2 555
#define TRAINER_JACKSON_3 556
#define TRAINER_JACKSON_4 557
#define TRAINER_JACKSON_5 558
#define TRAINER_CATHERINE_1 559
#define TRAINER_JENNA 560
#define TRAINER_SOPHIA 561
#define TRAINER_CATHERINE_2 562
#define TRAINER_CATHERINE_3 563
#define TRAINER_CATHERINE_4 564
#define TRAINER_CATHERINE_5 565
#define TRAINER_JULIO 566
#define TRAINER_GRUNT_27 567
#define TRAINER_GRUNT_28 568
#define TRAINER_GRUNT_29 569
#define TRAINER_GRUNT_30 570
#define TRAINER_MARC 571
#define TRAINER_BRENDEN 572
#define TRAINER_LILITH 573
#define TRAINER_CRISTIAN 574
#define TRAINER_SYLVIA 575
#define TRAINER_LEONARDO 576
#define TRAINER_ATHENA 577
#define TRAINER_HARRISON 578
#define TRAINER_GRUNT_31 579
#define TRAINER_CLARENCE 580
#define TRAINER_TERRY 581
#define TRAINER_NATE 582
#define TRAINER_KATHLEEN 583
#define TRAINER_CLIFFORD 584
#define TRAINER_NICHOLAS 585
#define TRAINER_GRUNT_32 586
#define TRAINER_GRUNT_33 587
#define TRAINER_GRUNT_34 588
#define TRAINER_GRUNT_35 589
#define TRAINER_GRUNT_36 590
#define TRAINER_MACEY 591
#define TRAINER_BRENDAN_10 592
#define TRAINER_BRENDAN_11 593
#define TRAINER_PAXTON 594
#define TRAINER_ISABELLA 595
#define TRAINER_GRUNT_37 596
#define TRAINER_TABITHA_2 597
#define TRAINER_JONATHAN 598
#define TRAINER_BRENDAN_12 599
#define TRAINER_MAY_10 600
#define TRAINER_MAXIE_1 601
#define TRAINER_MAXIE_2 602
#define TRAINER_TIANA 603
#define TRAINER_HALEY_1 604
#define TRAINER_JANICE 605
#define TRAINER_VIVI 606
#define TRAINER_HALEY_2 607
#define TRAINER_HALEY_3 608
#define TRAINER_HALEY_4 609
#define TRAINER_HALEY_5 610
#define TRAINER_SALLY 611
#define TRAINER_ROBIN 612
#define TRAINER_ANDREA 613
#define TRAINER_CRISSY 614
#define TRAINER_RICK 615
#define TRAINER_LYLE 616
#define TRAINER_JOSE 617
#define TRAINER_DOUG 618
#define TRAINER_GREG 619
#define TRAINER_KENT 620
#define TRAINER_JAMES_1 621
#define TRAINER_JAMES_2 622
#define TRAINER_JAMES_3 623
#define TRAINER_JAMES_4 624
#define TRAINER_JAMES_5 625
#define TRAINER_BRICE 626
#define TRAINER_TRENT_1 627
#define TRAINER_LENNY 628
#define TRAINER_LUCAS_1 629
#define TRAINER_ALAN 630
#define TRAINER_CLARK 631
#define TRAINER_ERIC 632
#define TRAINER_LUCAS_2 633
#define TRAINER_MIKE_1 634
#define TRAINER_MIKE_2 635
#define TRAINER_TRENT_2 636
#define TRAINER_TRENT_3 637
#define TRAINER_TRENT_4 638
#define TRAINER_TRENT_5 639
#define TRAINER_DEZ_AND_LUKE 640
#define TRAINER_LEA_AND_JED 641
#define TRAINER_KIRA_AND_DAN_1 642
#define TRAINER_KIRA_AND_DAN_2 643
#define TRAINER_KIRA_AND_DAN_3 644
#define TRAINER_KIRA_AND_DAN_4 645
#define TRAINER_KIRA_AND_DAN_5 646
#define TRAINER_JOHANNA 647
#define TRAINER_GERALD 648
#define TRAINER_VIVIAN 649
#define TRAINER_DANIELLE 650
#define TRAINER_HIDEO 651
#define TRAINER_KEIGO 652
#define TRAINER_RILEY 653
#define TRAINER_FLINT 654
#define TRAINER_ASHLEY 655
#define TRAINER_WALLY_2 656
#define TRAINER_WALLY_3 657
#define TRAINER_WALLY_4 658
#define TRAINER_WALLY_5 659
#define TRAINER_WALLY_6 660
#define TRAINER_BRENDAN_13 661
#define TRAINER_BRENDAN_14 662
#define TRAINER_BRENDAN_15 663
#define TRAINER_MAY_11 664
#define TRAINER_MAY_12 665
#define TRAINER_MAY_13 666
#define TRAINER_JONAH 667
#define TRAINER_HENRY 668
#define TRAINER_ROGER 669
#define TRAINER_ALEXA 670
#define TRAINER_RUBEN 671
#define TRAINER_KOJI_1 672
#define TRAINER_WAYNE 673
#define TRAINER_AIDAN 674
#define TRAINER_REED 675
#define TRAINER_TISHA 676
#define TRAINER_TORI_AND_TIA 677
#define TRAINER_KIM_AND_IRIS 678
#define TRAINER_TYRA_AND_IVY 679
#define TRAINER_MEL_AND_PAUL 680
#define TRAINER_JOHN_AND_JAY_1 681
#define TRAINER_JOHN_AND_JAY_2 682
#define TRAINER_JOHN_AND_JAY_3 683
#define TRAINER_JOHN_AND_JAY_4 684
#define TRAINER_JOHN_AND_JAY_5 685
#define TRAINER_RELI_AND_IAN 686
#define TRAINER_LILA_AND_ROY_1 687
#define TRAINER_LILA_AND_ROY_2 688
#define TRAINER_LILA_AND_ROY_3 689
#define TRAINER_LILA_AND_ROY_4 690
#define TRAINER_LILA_AND_ROY_5 691
#define TRAINER_LISA_AND_RAY 692
#define TRAINER_CHRIS 693
#define TRAINER_DAWSON 694
#define TRAINER_SARAH 695
#define TRAINER_DARIAN 696
#define TRAINER_HAILEY 697
#define TRAINER_CHANDLER 698
#define TRAINER_KALEB 699
#define TRAINER_JOSEPH 700
#define TRAINER_ALYSSA 701
#define TRAINER_MARCOS 702
#define TRAINER_RHETT 703
#define TRAINER_TYRON 704
#define TRAINER_CELINA 705
#define TRAINER_BIANCA 706
#define TRAINER_HAYDEN 707
#define TRAINER_SOPHIE 708
#define TRAINER_COBY 709
#define TRAINER_LAWRENCE 710
#define TRAINER_WYATT 711
#define TRAINER_ANGELINA 712
#define TRAINER_KAI 713
#define TRAINER_CHARLOTTE 714
#define TRAINER_DEANDRE 715
#define TRAINER_GRUNT_38 716
#define TRAINER_GRUNT_39 717
#define TRAINER_GRUNT_40 718
#define TRAINER_GRUNT_41 719
#define TRAINER_GRUNT_42 720
#define TRAINER_GRUNT_43 721
#define TRAINER_GRUNT_44 722
#define TRAINER_GRUNT_45 723
#define TRAINER_GRUNT_46 724
#define TRAINER_GRUNT_47 725
#define TRAINER_GRUNT_48 726
#define TRAINER_GRUNT_49 727
#define TRAINER_GRUNT_50 728
#define TRAINER_GRUNT_51 729
#define TRAINER_GRUNT_52 730
#define TRAINER_GRUNT_53 731
#define TRAINER_TABITHA_3 732
#define TRAINER_DARCY 733
#define TRAINER_MAXIE_3 734
#define TRAINER_PETE 735
#define TRAINER_ISABELLE 736
#define TRAINER_ANDRES_1 737
#define TRAINER_JOSUE 738
#define TRAINER_CAMRON 739
#define TRAINER_CORY_1 740
#define TRAINER_CAROLINA 741
#define TRAINER_ELIJAH 742
#define TRAINER_CELIA 743
#define TRAINER_BRYAN 744
#define TRAINER_BRANDEN 745
#define TRAINER_BRYANT 746
#define TRAINER_SHAYLA 747
#define TRAINER_KYRA 748
#define TRAINER_JAIDEN 749
#define TRAINER_ALIX 750
#define TRAINER_HELENE 751
#define TRAINER_MARLENE 752
#define TRAINER_DEVAN 753
#define TRAINER_JOHNSON 754
#define TRAINER_MELINA 755
#define TRAINER_BRANDI 756
#define TRAINER_AISHA 757
#define TRAINER_MAKAYLA 758
#define TRAINER_FABIAN 759
#define TRAINER_DAYTON 760
#define TRAINER_RACHEL 761
#define TRAINER_LEONEL 762
#define TRAINER_CALLIE 763
#define TRAINER_CALE 764
#define TRAINER_MYLES 765
#define TRAINER_PAT 766
#define TRAINER_CRISTIN_1 767
#define TRAINER_MAY_14 768
#define TRAINER_MAY_15 769
#define TRAINER_ROXANNE_2 770
#define TRAINER_ROXANNE_3 771
#define TRAINER_ROXANNE_4 772
#define TRAINER_ROXANNE_5 773
#define TRAINER_BRAWLY_2 774
#define TRAINER_BRAWLY_3 775
#define TRAINER_BRAWLY_4 776
#define TRAINER_BRAWLY_5 777
#define TRAINER_WATTSON_2 778
#define TRAINER_WATTSON_3 779
#define TRAINER_WATTSON_4 780
#define TRAINER_WATTSON_5 781
#define TRAINER_FLANNERY_2 782
#define TRAINER_FLANNERY_3 783
#define TRAINER_FLANNERY_4 784
#define TRAINER_FLANNERY_5 785
#define TRAINER_NORMAN_2 786
#define TRAINER_NORMAN_3 787
#define TRAINER_NORMAN_4 788
#define TRAINER_NORMAN_5 789
#define TRAINER_WINONA_2 790
#define TRAINER_WINONA_3 791
#define TRAINER_WINONA_4 792
#define TRAINER_WINONA_5 793
#define TRAINER_TATE_AND_LIZA_2 794
#define TRAINER_TATE_AND_LIZA_3 795
#define TRAINER_TATE_AND_LIZA_4 796
#define TRAINER_TATE_AND_LIZA_5 797
#define TRAINER_JUAN_2 798
#define TRAINER_JUAN_3 799
#define TRAINER_JUAN_4 800
#define TRAINER_JUAN_5 801
#define TRAINER_ANGELO 802
#define TRAINER_DARIUS 803
#define TRAINER_STEVEN 804
#define TRAINER_ANABEL 805
#define TRAINER_TUCKER 806
#define TRAINER_SPENSER 807
#define TRAINER_GRETA 808
#define TRAINER_NOLAND 809
#define TRAINER_LUCY 810
#define TRAINER_BRANDON 811
#define TRAINER_ANDRES_2 812
#define TRAINER_ANDRES_3 813
#define TRAINER_ANDRES_4 814
#define TRAINER_ANDRES_5 815
#define TRAINER_CORY_2 816
#define TRAINER_CORY_3 817
#define TRAINER_CORY_4 818
#define TRAINER_CORY_5 819
#define TRAINER_PABLO_2 820
#define TRAINER_PABLO_3 821
#define TRAINER_PABLO_4 822
#define TRAINER_PABLO_5 823
#define TRAINER_KOJI_2 824
#define TRAINER_KOJI_3 825
#define TRAINER_KOJI_4 826
#define TRAINER_KOJI_5 827
#define TRAINER_CRISTIN_2 828
#define TRAINER_CRISTIN_3 829
#define TRAINER_CRISTIN_4 830
#define TRAINER_CRISTIN_5 831
#define TRAINER_FERNANDO_2 832
#define TRAINER_FERNANDO_3 833
#define TRAINER_FERNANDO_4 834
#define TRAINER_FERNANDO_5 835
#define TRAINER_SAWYER_2 836
#define TRAINER_SAWYER_3 837
#define TRAINER_SAWYER_4 838
#define TRAINER_SAWYER_5 839
#define TRAINER_GABRIELLE_2 840
#define TRAINER_GABRIELLE_3 841
#define TRAINER_GABRIELLE_4 842
#define TRAINER_GABRIELLE_5 843
#define TRAINER_THALIA_2 844
#define TRAINER_THALIA_3 845
#define TRAINER_THALIA_4 846
#define TRAINER_THALIA_5 847
#define TRAINER_MARIELA 848
#define TRAINER_ALVARO 849
#define TRAINER_EVERETT 850
#define TRAINER_RED 851
#define TRAINER_LEAF 852
#define TRAINER_BRENDAN_16 853
#define TRAINER_MAY_16 854
#include "constants/opponents.h"
#define NO_OF_TRAINERS 854
// Special Trainer Ids.
#define TRAINER_FRONTIER_BRAIN 1022
#define TRAINER_SECRET_BASE 1024
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_OPPONENT_C00 3072
#define TRAINER_STEVEN_PARTNER 3075
#define TRAINER_PIC_HIKER 0
#define TRAINER_PIC_AQUA_GRUNT_M 1
@@ -953,6 +104,15 @@
#define TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN 91
#define TRAINER_PIC_RUBY_SAPPHIRE_MAY 92
#define TRAINER_BACK_PIC_BRENDAN 0
#define TRAINER_BACK_PIC_MAY 1
#define TRAINER_BACK_PIC_RED 2
#define TRAINER_BACK_PIC_LEAF 3
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN 4
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY 5
#define TRAINER_BACK_PIC_WALLY 6
#define TRAINER_BACK_PIC_STEVEN 7
#define FACILITY_CLASS_HIKER 0x0
#define FACILITY_CLASS_TEAM_AQUA_1 0x1
#define FACILITY_CLASS_PKMN_BREEDER_1 0x2

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DATA_BATTLE_MOVES
#define GUARD_DATA_BATTLE_MOVES
const struct BattleMove gBattleMoves[LAST_MOVE_INDEX + 1] =
const struct BattleMove gBattleMoves[MOVES_COUNT] =
{
{ // MOVE_NONE
.effect = EFFECT_HIT,

View File

@@ -80,7 +80,7 @@ static const u8 gShellArmorAbilityDescription[] = _("Blocks critical hits.");
static const u8 gCacophonyAbilityDescription[] = _("Avoids sound-based moves.");
static const u8 gAirLockAbilityDescription[] = _("Negates weather effects.");
const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1] =
const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
{
_("-------"),
_("STENCH"),
@@ -162,7 +162,7 @@ const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1] =
_("AIR LOCK"),
};
const u8 *const gAbilityDescriptionPointers[] =
const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] =
{
gNoneAbilityDescription,
gStenchAbilityDescription,

View File

@@ -4,253 +4,6 @@
#define NUM_OBJECT_GRAPHICS_INFO 239
#define SPRITE_VAR 240
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,
MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN,
MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP,
MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT,
MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT,
};
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_UNKNOWN1,
MOVEMENT_ACTION_UNKNOWN2,
MOVEMENT_ACTION_WALK_DOWN_START_AFFINE,
MOVEMENT_ACTION_WALK_DOWN_AFFINE,
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,
MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT,
MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT,
MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT,
MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT,
MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT,
MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT,
MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT,
MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT,
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_WALK_LEFT_AFFINE,
MOVEMENT_ACTION_WALK_RIGHT_AFFINE,
MOVEMENT_ACTION_LEVITATE,
MOVEMENT_ACTION_STOP_LEVITATE,
MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP,
MOVEMENT_ACTION_FIGURE_8,
MOVEMENT_ACTION_FLY_UP,
MOVEMENT_ACTION_FLY_DOWN,
};
enum SpinnerRunnerFollowPatterns
{
RUNFOLLOW_ANY,

View File

@@ -37,5 +37,6 @@ bool8 sub_8068894(void);
bool8 sub_8068A64(struct MapPosition *, u16);
u8 sub_8068F18(void);
bool8 dive_warp(struct MapPosition *position, u16 b);
void sub_809D2BC(void);
#endif // GUARD_FIELDCONTROLAVATAR_H

View File

@@ -14,5 +14,6 @@ void UpdateWeatherPerDay(u16 days);
void sub_80AC3D0(void);
void sub_80AC3E4(void);
void PreservePaletteInWeather(u8);
void sub_80AF128(void);
#endif //GUARD_FIELD_SCREEN_H

View File

@@ -582,6 +582,7 @@
#define BLDCNT_TGT1_BG3 (1 << 3)
#define BLDCNT_TGT1_OBJ (1 << 4)
#define BLDCNT_TGT1_BD (1 << 5)
#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD)
// Bits 6-7 select the special effect
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
@@ -594,6 +595,7 @@
#define BLDCNT_TGT2_BG3 (1 << 11)
#define BLDCNT_TGT2_OBJ (1 << 12)
#define BLDCNT_TGT2_BD (1 << 13)
#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
// BLDALPHA
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))

View File

@@ -13,35 +13,6 @@ enum
CONNECTION_EMERGE
};
// map types
enum
{
MAP_TYPE_0,
MAP_TYPE_TOWN,
MAP_TYPE_CITY,
MAP_TYPE_ROUTE,
MAP_TYPE_UNDERGROUND,
MAP_TYPE_UNDERWATER,
MAP_TYPE_6,
MAP_TYPE_7,
MAP_TYPE_INDOOR,
MAP_TYPE_SECRET_BASE
};
// map battle scenes
enum
{
MAP_BATTLE_SCENE_NORMAL, // 0
MAP_BATTLE_SCENE_GYM, // 1
MAP_BATTLE_SCENE_MAGMA, // 2
MAP_BATTLE_SCENE_AQUA, // 3
MAP_BATTLE_SCENE_SIDNEY, // 4
MAP_BATTLE_SCENE_PHOEBE, // 5
MAP_BATTLE_SCENE_GLACIA, // 6
MAP_BATTLE_SCENE_DRAKE, // 7
MAP_BATTLE_SCENE_FRONTIER, // 8
};
typedef void (*TilesetCB)(void);
struct Tileset

View File

@@ -35,12 +35,18 @@
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
// Converts a number to Q24.8 fixed-point format
#define Q_24_8(n) ((s32)((n) * 256))
// Converts a Q8.8 fixed-point format number to a regular integer
#define Q_8_8_TO_INT(n) ((int)((n) / 256))
// Converts a Q4.12 fixed-point format number to a regular integer
#define Q_4_12_TO_INT(n) ((int)((n) / 4096))
// Converts a Q24.8 fixed-point format number to a regular integer
#define Q_24_8_TO_INT(n) ((int)((n) >> 8))
#define PARTY_SIZE 6
#define POKEMON_SLOTS_NUMBER 412

View File

@@ -47,7 +47,7 @@ enum
RFU_UNK3A,
RFU_UNK3B,
RFU_UNK3C,
RFU_STOP_MODE, //3D
RFU_STOP_MODE, // 3D
};
struct RfuPacket8
@@ -67,7 +67,7 @@ union RfuPacket
struct RfuPacket8 rfuPacket8;
};
struct __attribute__((packed)) UnkLinkRfuStruct_02022B14
struct UnkLinkRfuStruct_02022B14Substruct
{
u16 unk_00_0:4;
u16 unk_00_4:1;
@@ -79,9 +79,14 @@ struct __attribute__((packed)) UnkLinkRfuStruct_02022B14
u16 unk_01_2:4;
u16 unk_01_6:2;
u8 playerTrainerId[2];
};
struct __attribute__((packed)) UnkLinkRfuStruct_02022B14
{
struct UnkLinkRfuStruct_02022B14Substruct unk_00;
u8 unk_04[4];
u16 unk_08_0:10;
u16 unk_09_2:6;
u16 species:10;
u16 type:6;
u8 unk_0a_0:7;
u8 unk_0a_7:1;
u8 playerGender:1;
@@ -200,8 +205,6 @@ extern struct RfuUnk1* gUnknown_03007870[4];
extern void* sub_82E53F4;
extern void rfu_STC_clearAPIVariables(void);
struct UnkLinkRfuStruct_02022B14;
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
void rfu_REQ_stopMode(void);
void rfu_waitREQComplete(void);

View File

@@ -122,7 +122,7 @@ struct LinkPlayer
/* 0x08 */ u8 name[11];
/* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
/* 0x18 */ u16 lp_field_18; // battle bank in battles
/* 0x18 */ u16 id; // battler id in battles
/* 0x1A */ u16 language;
};

View File

@@ -232,5 +232,37 @@ void sub_8011068(u8 a0);
void sub_8011170(u32 a0);
void sub_8011A64(u8 a0, u16 a1);
u8 sub_801048C(bool32 a0);
void sub_800DF90(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2);
void sub_8010F84(u8 a0, u32 a1, u32 a2);
void sub_8011C10(u32 a0);
bool32 sub_8012240(void);
void sub_800EF38(void);
bool32 sub_80105EC(void);
bool32 sub_801064C(u16 a0, const u8 *a1);
void sub_8010688(u8 a0, u16 a1, const u8 *a2);
u32 sub_8010714(u16 a0, const u8 *a1);
void sub_8011DC0(const u8 *a0, u16 a1);
bool8 sub_800EF1C(void);
bool32 sub_800EF58(bool32 a0);
void sub_800E084(void);
void sub_801103C(void);
void sub_8011C5C(void);
void sub_80106D4(void);
void sub_800E3A8(void);
void sub_800ED10(void);
void sub_800ED28(void);
void sub_8011090(u8 a0, u32 a1, u32 a2);
void sub_8011FC8(u8 *a0, u16 a1);
void sub_8010FA0(bool32 a0, bool32 a1);
void sub_8010F60(void);
void sub_8010FCC(u32 a0, u32 a1, u32 a2);
void sub_8011C84(void);
void sub_8012188(const u8 *a0, struct UnkLinkRfuStruct_02022B14 *arg1, u8 arg2);
bool32 sub_8011B90(void);
void sub_800FE50(u16 *a0);
bool32 sub_800E540(u16 id, u8 *name);
void sub_8011DE0(u32 arg0);
u8 sub_801100C(int a0);
void sub_800EF7C(void);
#endif //GUARD_LINK_RFU_H

View File

@@ -1,6 +1,8 @@
#ifndef GUARD_PARTY_MENU_H
#define GUARD_PARTY_MENU_H
#include "task.h"
enum
{
AILMENT_NONE,
@@ -11,6 +13,16 @@ enum
AILMENT_BRN
};
enum
{
PARTY_CHOOSE_MON,
PARTY_MUST_CHOOSE_MON,
PARTY_CANT_SWITCH,
PARTY_USE_ITEM_ON,
PARTY_ABILITY_PREVENTS,
PARTY_GIVE_ITEM,
};
struct Struct203CEC8
{
u8 filler[0x9];
@@ -38,5 +50,9 @@ void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
void sub_81B1B5C(void *a, u8 b);
u8 sub_81B1BD4();
void sub_81B8448();
void sub_81B8518(u8 unused);
u8 sub_81B1360(void);
void sub_81B8904(u8 arg0, void (*callback)(void));
void OpenPartyMenuInBattle(u8 caseId);
#endif // GUARD_PARTY_MENU_H

View File

@@ -438,7 +438,7 @@ extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
extern struct SpriteTemplate gUnknown_0202499C;
extern struct SpriteTemplate gMultiuseSpriteTemplate;
extern struct PokemonStorage* gPokemonStoragePtr;
extern const struct BattleMove gBattleMoves[];
@@ -505,9 +505,9 @@ u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
void sub_806A068(u16 species, u8 battlerPosition);
void sub_806A12C(u16 trainerSpriteId, u8 battlerPosition);
void sub_806A1C0(u16 arg0, u8 battlerPosition);
void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition);
// These are full type signatures for GetMonData() and GetBoxMonData(),
// but they are not used since some code erroneously omits the third arg.
@@ -556,7 +556,7 @@ void sub_806D544(u16 species, u32 personality, u8 *dest);
void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
bool8 sub_806D7EC(void);
bool16 sub_806D82C(u8 id);
bool16 GetLinkTrainerFlankId(u8 id);
s32 GetBattlerMultiplayerId(u16 a1);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
@@ -593,7 +593,7 @@ bool8 IsTradedMon(struct Pokemon *mon);
bool8 IsOtherTrainer(u32 otId, u8 *otName);
void MonRestorePP(struct Pokemon *mon);
void BoxMonRestorePP(struct BoxPokemon *boxMon);
void sub_806E994(void);
void SetMonPreventsSwitchingString(void);
void SetWildMonHeldItem(void);
bool8 IsMonShiny(struct Pokemon *mon);
bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);

View File

@@ -16,7 +16,7 @@ void sub_81851A8(u8 *arg0);
bool32 CanCopyRecordedBattleSaveData(void);
u32 MoveRecordedBattleToSaveData(void);
void PlayRecordedBattle(void (*CB2_After)(void));
u8 sub_8185EA0(void);
u8 GetRecordedBattleFrontierFacility(void);
u8 sub_8185EAC(void);
void RecordedBattle_SaveParties(void);
u8 GetActiveBattlerLinkPlayerGender(void);

View File

@@ -2,7 +2,17 @@
#define GUARD_TEXT_H
#define CHAR_SPACE 0x00
#define CHAR_PLUS 0x2E
#define CHAR_0 0xA1
#define CHAR_1 0xA2
#define CHAR_2 0xA3
#define CHAR_3 0xA4
#define CHAR_4 0xA5
#define CHAR_5 0xA6
#define CHAR_6 0xA7
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE

View File

@@ -12,11 +12,11 @@ struct TilesPal
extern const u8 gTextWindowFrame1_Gfx[];
extern const u16 gTextWindowFrame1_Pal[];
const struct TilesPal* GetWindowFrameTilesPal(u8 id);
void copy_textbox_border_tile_patterns_to_vram(u8 windowId, u16 destOffset, u8 palOffset);
const struct TilesPal *GetWindowFrameTilesPal(u8 id);
void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset);
void box_border_load_tiles_and_pal(u8 windowId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset);
void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);

View File

@@ -7,6 +7,8 @@
// Exported ROM declarations
int sub_807A728(void);
s32 sub_807A728(void);
void sub_80773AC(void);
void sub_807AE50(void);
#endif //GUARD_TRADE_H

View File

@@ -32,4 +32,8 @@ struct TrainerCard
extern struct TrainerCard gTrainerCards[4];
void sub_80C3120(struct TrainerCard *arg0, u16 *arg1, u8 gameVersion);
void sub_80C4E74(u8 arg0, void (*callback)(void));
void sub_80C30A4(u16 *arg0);
#endif // GUARD_TRAINER_CARD_H