ported battle_controller_opponent from pokeem and corrected lots of stuff
This commit is contained in:
+18
-25
@@ -2,8 +2,6 @@
|
||||
#define GUARD_BATTLE_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// should they be included here or included individually by every file?
|
||||
#include "constants/battle.h"
|
||||
#include "battle_util.h"
|
||||
#include "battle_script_commands.h"
|
||||
@@ -19,8 +17,6 @@
|
||||
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
|
||||
@@ -209,10 +205,10 @@ struct TrainerMonItemCustomMoves
|
||||
|
||||
union TrainerMonPtr
|
||||
{
|
||||
struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
|
||||
struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
|
||||
struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
|
||||
struct TrainerMonItemCustomMoves* ItemCustomMoves;
|
||||
struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
|
||||
struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
|
||||
struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
|
||||
struct TrainerMonItemCustomMoves *ItemCustomMoves;
|
||||
};
|
||||
|
||||
struct Trainer
|
||||
@@ -278,7 +274,7 @@ struct DisableStruct
|
||||
/*0x1A*/ u8 unk1A[2];
|
||||
};
|
||||
|
||||
extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT];
|
||||
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
|
||||
|
||||
struct ProtectStruct
|
||||
{
|
||||
@@ -318,7 +314,7 @@ struct ProtectStruct
|
||||
/* field_E */ u16 fieldE;
|
||||
};
|
||||
|
||||
extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT];
|
||||
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
|
||||
|
||||
struct SpecialStatus
|
||||
{
|
||||
@@ -340,7 +336,7 @@ struct SpecialStatus
|
||||
u8 field13;
|
||||
};
|
||||
|
||||
extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT];
|
||||
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
|
||||
|
||||
struct SideTimer
|
||||
{
|
||||
@@ -463,7 +459,7 @@ struct BattleResources
|
||||
struct BattleScriptsStack *AI_ScriptsStack;
|
||||
};
|
||||
|
||||
extern struct BattleResources* gBattleResources;
|
||||
extern struct BattleResources *gBattleResources;
|
||||
|
||||
#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack)
|
||||
#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack)
|
||||
@@ -546,15 +542,12 @@ struct BattleStruct
|
||||
u8 field_8C;
|
||||
u8 field_8D;
|
||||
u8 stringMoveType;
|
||||
u8 expGetterBank;
|
||||
u8 expGetterBattlerId;
|
||||
u8 field_90;
|
||||
u8 field_91;
|
||||
u8 field_92;
|
||||
u8 field_93;
|
||||
u8 wallyBattleState;
|
||||
u8 wallyMovesState;
|
||||
u8 wallyWaitFrames;
|
||||
u8 wallyMoveFrames;
|
||||
u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT];
|
||||
u8 field_96;
|
||||
u8 field_97;
|
||||
u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way
|
||||
u16 hpOnSwitchout[2];
|
||||
u8 abilityPreventingSwitchout;
|
||||
@@ -569,7 +562,6 @@ struct BattleStruct
|
||||
u8 field_B5;
|
||||
u8 field_B6;
|
||||
u8 atkCancellerTracker;
|
||||
// void (*savedCallback)(void);
|
||||
u16 usedHeldItems[MAX_BATTLERS_COUNT];
|
||||
u8 chosenItem[4]; // why is this an u8?
|
||||
u8 AI_itemType[2];
|
||||
@@ -859,8 +851,7 @@ struct BattleHealthboxInfo
|
||||
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_x1E : 5;
|
||||
u8 field_1_x40 : 1;
|
||||
u8 field_1_x80 : 1;
|
||||
u8 healthboxBounceSpriteId;
|
||||
@@ -879,7 +870,7 @@ struct BattleBarInfo
|
||||
{
|
||||
u8 healthboxSpriteId;
|
||||
s32 maxValue;
|
||||
s32 currentValue;
|
||||
s32 oldValue;
|
||||
s32 receivedValue;
|
||||
s32 currValue;
|
||||
};
|
||||
@@ -930,11 +921,11 @@ extern u16 gBattle_WIN0H;
|
||||
extern u16 gBattle_WIN0V;
|
||||
extern u16 gBattle_WIN1H;
|
||||
extern u16 gBattle_WIN1V;
|
||||
extern struct BattleSpritesGfx* gMonSpritesGfx;
|
||||
extern struct BattleSpritesGfx *gMonSpritesGfx;
|
||||
extern u8 gBattleOutcome;
|
||||
extern u16 gLastUsedItem;
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern struct MonSpritesGfx* gMonSpritesGfxPtr;
|
||||
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
|
||||
extern u16 gTrainerBattleOpponent_A;
|
||||
extern u16 gMoveToLearn;
|
||||
extern u16 gBattleMovePower;
|
||||
@@ -991,5 +982,7 @@ extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
|
||||
extern u8 gCurrentActionFuncId;
|
||||
extern u8 gCurrMovePos;
|
||||
extern u8 gChosenMovePos;
|
||||
extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT];
|
||||
extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
|
||||
|
||||
#endif // GUARD_BATTLE_H
|
||||
|
||||
+1
-1
@@ -10,7 +10,6 @@ void CB2_QuitRecordedBattle(void);
|
||||
void sub_8038528(struct Sprite* sprite);
|
||||
void sub_8038A04(void); // unused
|
||||
void VBlankCB_Battle(void);
|
||||
void nullsub_17(void);
|
||||
void sub_8038B74(struct Sprite *sprite);
|
||||
void sub_8038D64(void);
|
||||
u32 sub_80391E0(u8 arrayId, u8 caseId);
|
||||
@@ -48,6 +47,7 @@ void sub_800FD9C(void);
|
||||
void sub_80120C4(struct Sprite *);
|
||||
void sub_8012100(struct Sprite *);
|
||||
void nullsub_12(void);
|
||||
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
|
||||
|
||||
extern const u8 gStatusConditionString_PoisonJpn[8];
|
||||
extern const u8 gStatusConditionString_SleepJpn[8];
|
||||
|
||||
@@ -3,13 +3,19 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// return values for BattleAI_ChooseMoveOrAction
|
||||
// 0 - 3 are move idx
|
||||
#define AI_CHOICE_FLEE 4
|
||||
#define AI_CHOICE_WATCH 5
|
||||
|
||||
void BattleAI_HandleItemUseBeforeAISetup(void);
|
||||
void BattleAI_SetupAIData(u8 defaultScoreMoves);
|
||||
void BattleAI_SetupAIData(void);
|
||||
u8 BattleAI_ChooseMoveOrAction(void);
|
||||
void ClearBankMoveHistory(u8 bank);
|
||||
void RecordAbilityBattle(u8 bank, u8 abilityId);
|
||||
void ClearBankAbilityHistory(u8 bank);
|
||||
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
|
||||
void ClearBankItemEffectHistory(u8 bank);
|
||||
u8 BattleAI_GetAIActionToUse(void);
|
||||
|
||||
#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
|
||||
|
||||
@@ -96,6 +96,9 @@ void sub_80A6B90(struct BattleAnimBgData *, u32 arg1);
|
||||
u8 sub_80A82E4(u8 bank);
|
||||
bool8 AnimateBallThrow(struct Sprite *sprite);
|
||||
|
||||
// battle_anim_special
|
||||
void sub_80F1720(u8 battler, struct Pokemon *mon);
|
||||
|
||||
enum
|
||||
{
|
||||
BATTLER_COORD_X,
|
||||
@@ -125,7 +128,7 @@ bool8 IsDoubleBattle(void);
|
||||
u8 sub_80A6D94(void);
|
||||
u8 sub_80A8364(u8);
|
||||
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
|
||||
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
|
||||
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteDefault_Y(u8 bank);
|
||||
u8 sub_80A82E4(u8 bank);
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 bank);
|
||||
@@ -150,6 +153,7 @@ bool8 IsContest(void);
|
||||
void sub_80759DC(u8 spriteId);
|
||||
bool8 IsBattlerSpritePresent(u8 battlerId);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId);
|
||||
void StartAnimLinearTranslation(struct Sprite *sprite);
|
||||
|
||||
// battle_anim_mon_movement.c
|
||||
void AnimTask_ShakeMon(u8 taskId);
|
||||
|
||||
@@ -174,6 +174,7 @@ enum
|
||||
CONTROLLER_CMDS_COUNT
|
||||
};
|
||||
|
||||
extern struct UnusedControllerStruct gUnknown_2022870;
|
||||
|
||||
// general functions
|
||||
void HandleLinkBattleSetup(void);
|
||||
@@ -243,6 +244,7 @@ void SetControllerToRecordedPlayer(void);
|
||||
|
||||
// opponent controller
|
||||
void SetControllerToOpponent(void);
|
||||
void OpponentBufferExecCompleted(void);
|
||||
|
||||
// player partner controller
|
||||
void SetControllerToPlayerPartner(void);
|
||||
@@ -255,6 +257,11 @@ void SetControllerToPokedude(void);
|
||||
|
||||
// oak controller
|
||||
void SetControllerToOakOrOldman(void);
|
||||
bool8 sub_80EB2E0(u8);
|
||||
void sub_80EB2F4(u8);
|
||||
void sub_80E8570(void);
|
||||
void sub_80E85C0(void);
|
||||
void sub_80E8598(void);
|
||||
|
||||
// link opponent
|
||||
void SetControllerToLinkOpponent(void);
|
||||
|
||||
@@ -61,6 +61,7 @@ enum
|
||||
HEALTHBOX_SAFARI_BALLS_TEXT
|
||||
};
|
||||
|
||||
void Task_HidePartyStatusSummary(u8 taskId);
|
||||
u8 CreateBattlerHealthboxSprites(u8 bank);
|
||||
u8 CreateSafariPlayerHealthboxSprites(void);
|
||||
void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue);
|
||||
@@ -80,5 +81,6 @@ u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
|
||||
u8 GetHPBarLevel(s16 hp, s16 maxhp);
|
||||
void sub_80496C0(u8 spriteId, struct Pokemon *mon);
|
||||
void sub_804981C(u8 spriteId, u8);
|
||||
s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
|
||||
|
||||
#endif // GUARD_BATTLE_INTERFACE_H
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
u16 sub_8164FCC(u8, u8);
|
||||
void sub_80E7524(u32 *);
|
||||
void ValidateEReaderTrainer(void);
|
||||
u8 GetBattleTowerTrainerFrontSpriteId(void);
|
||||
u8 GetEreaderTrainerFrontSpriteId(void);
|
||||
|
||||
#endif //GUARD_BATTLE_TOWER_H
|
||||
|
||||
+5
-5
@@ -50,7 +50,7 @@
|
||||
#define MON_DATA_SPATK_IV 43
|
||||
#define MON_DATA_SPDEF_IV 44
|
||||
#define MON_DATA_IS_EGG 45
|
||||
#define MON_DATA_ALT_ABILITY 46
|
||||
#define MON_DATA_ABILITY_NUM 46
|
||||
#define MON_DATA_TOUGH 47
|
||||
#define MON_DATA_SHEEN 48
|
||||
#define MON_DATA_OT_GENDER 49
|
||||
@@ -244,7 +244,7 @@ struct PokemonSubstruct3
|
||||
/* 0x05 */ u32 spAttackIV:5;
|
||||
/* 0x06 */ u32 spDefenseIV:5;
|
||||
/* 0x07 */ u32 isEgg:1;
|
||||
/* 0x07 */ u32 altAbility:1;
|
||||
/* 0x07 */ u32 abilityNum:1;
|
||||
|
||||
/* 0x08 */ u32 coolRibbon:3;
|
||||
/* 0x08 */ u32 beautyRibbon:3;
|
||||
@@ -342,7 +342,7 @@ struct BattleTowerPokemon
|
||||
u32 spAttackIV:5;
|
||||
u32 spDefenseIV:5;
|
||||
u32 gap:1;
|
||||
u32 altAbility:1;
|
||||
u32 abilityNum:1;
|
||||
/*0x1C*/ u32 personality;
|
||||
/*0x20*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x2B*/ u8 friendship;
|
||||
@@ -366,7 +366,7 @@ struct BattlePokemon
|
||||
/*0x16*/ u32 spAttackIV:5;
|
||||
/*0x17*/ u32 spDefenseIV:5;
|
||||
/*0x17*/ u32 isEgg:1;
|
||||
/*0x17*/ u32 altAbility:1;
|
||||
/*0x17*/ u32 abilityNum:1;
|
||||
/*0x18*/ s8 statStages[BATTLE_STATS_NO];
|
||||
/*0x20*/ u8 ability;
|
||||
/*0x21*/ u8 type1;
|
||||
@@ -598,7 +598,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon);
|
||||
u8 CalculatePlayerPartyCount(void);
|
||||
u8 CalculateEnemyPartyCount(void);
|
||||
u8 GetMonsStateToDoubles(void);
|
||||
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
|
||||
u8 GetAbilityBySpecies(u16 species, bool8 abilityNum);
|
||||
u8 GetMonAbility(struct Pokemon *mon);
|
||||
u8 GetSecretBaseTrainerPicIndex(void);
|
||||
u8 GetSecretBaseTrainerNameIndex(void);
|
||||
|
||||
@@ -4,5 +4,6 @@
|
||||
void PrintTrainerTowerRecords(void);
|
||||
void InitTrainerTowerBattleStruct(void);
|
||||
void FreeTrainerTowerBattleStruct(void);
|
||||
u8 GetTrainerTowerTrainerFrontSpriteId(void);
|
||||
|
||||
#endif //GUARD_TRAINER_TOWER_H
|
||||
|
||||
Reference in New Issue
Block a user