#ifndef GUARD_BATTLE_CONTROLLERS_H #define GUARD_BATTLE_CONTROLLERS_H enum { REQUEST_ALL_BATTLE, REQUEST_SPECIES_BATTLE, REQUEST_HELDITEM_BATTLE, REQUEST_MOVES_PP_BATTLE, REQUEST_MOVE1_BATTLE, REQUEST_MOVE2_BATTLE, REQUEST_MOVE3_BATTLE, REQUEST_MOVE4_BATTLE, REQUEST_PP_DATA_BATTLE, REQUEST_PPMOVE1_BATTLE, REQUEST_PPMOVE2_BATTLE, REQUEST_PPMOVE3_BATTLE, REQUEST_PPMOVE4_BATTLE, REQUEST_UNUSED_13_BATTLE, REQUEST_UNUSED_14_BATTLE, REQUEST_UNUSED_15_BATTLE, REQUEST_UNUSED_16_BATTLE, REQUEST_OTID_BATTLE, REQUEST_EXP_BATTLE, REQUEST_HP_EV_BATTLE, REQUEST_ATK_EV_BATTLE, REQUEST_DEF_EV_BATTLE, REQUEST_SPEED_EV_BATTLE, REQUEST_SPATK_EV_BATTLE, REQUEST_SPDEF_EV_BATTLE, REQUEST_FRIENDSHIP_BATTLE, REQUEST_POKERUS_BATTLE, REQUEST_MET_LOCATION_BATTLE, REQUEST_MET_LEVEL_BATTLE, REQUEST_MET_GAME_BATTLE, REQUEST_POKEBALL_BATTLE, REQUEST_ALL_IVS_BATTLE, REQUEST_HP_IV_BATTLE, REQUEST_ATK_IV_BATTLE, REQUEST_DEF_IV_BATTLE, REQUEST_SPEED_IV_BATTLE, REQUEST_SPATK_IV_BATTLE, REQUEST_SPDEF_IV_BATTLE, REQUEST_PERSONALITY_BATTLE, REQUEST_CHECKSUM_BATTLE, REQUEST_STATUS_BATTLE, REQUEST_LEVEL_BATTLE, REQUEST_HP_BATTLE, REQUEST_MAX_HP_BATTLE, REQUEST_ATK_BATTLE, REQUEST_DEF_BATTLE, REQUEST_SPEED_BATTLE, REQUEST_SPATK_BATTLE, REQUEST_SPDEF_BATTLE, REQUEST_COOL_BATTLE, REQUEST_BEAUTY_BATTLE, REQUEST_CUTE_BATTLE, REQUEST_SMART_BATTLE, REQUEST_TOUGH_BATTLE, REQUEST_SHEEN_BATTLE, REQUEST_COOL_RIBBON_BATTLE, REQUEST_BEAUTY_RIBBON_BATTLE, REQUEST_CUTE_RIBBON_BATTLE, REQUEST_SMART_RIBBON_BATTLE, REQUEST_TOUGH_RIBBON_BATTLE, }; enum { // For commands sent from the core battle engine to a controller. B_COMM_TO_CONTROLLER, // gBattleBufferA // For replies sent from a controller to the core battle engine. B_COMM_TO_ENGINE, // gBattleBufferB // During local play, a controller must directly mark itself as // inactive when it's done processing, whether or not it sends // a reply. During multiplayer, it must NOT directly mark itself // as inactive, but instead send one of these, with the player's // multiplayer ID as data. B_COMM_CONTROLLER_IS_DONE }; enum { RESET_ACTION_MOVE_SELECTION, RESET_ACTION_SELECTION, RESET_MOVE_SELECTION, }; enum { BALL_NO_SHAKES, BALL_1_SHAKE, BALL_2_SHAKES, BALL_3_SHAKES_FAIL, BALL_3_SHAKES_SUCCESS, BALL_TRAINER_BLOCK, }; enum { LINK_STANDBY_MSG_STOP_BOUNCE, LINK_STANDBY_STOP_BOUNCE_ONLY, LINK_STANDBY_MSG_ONLY, }; #define INSTANT_HP_BAR_DROP 0x7FFF // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 struct HpAndStatus { u16 hp; u32 status; }; enum { CONTROLLER_GETMONDATA, CONTROLLER_GETRAWMONDATA, CONTROLLER_SETMONDATA, CONTROLLER_SETRAWMONDATA, CONTROLLER_LOADMONSPRITE, CONTROLLER_SWITCHINANIM, CONTROLLER_RETURNMONTOBALL, CONTROLLER_DRAWTRAINERPIC, CONTROLLER_TRAINERSLIDE, CONTROLLER_TRAINERSLIDEBACK, CONTROLLER_FAINTANIMATION, CONTROLLER_PALETTEFADE, CONTROLLER_SUCCESSBALLTHROWANIM, CONTROLLER_BALLTHROWANIM, CONTROLLER_PAUSE, CONTROLLER_MOVEANIMATION, CONTROLLER_PRINTSTRING, CONTROLLER_PRINTSTRINGPLAYERONLY, CONTROLLER_CHOOSEACTION, CONTROLLER_YESNOBOX, CONTROLLER_CHOOSEMOVE, CONTROLLER_OPENBAG, CONTROLLER_CHOOSEPOKEMON, CONTROLLER_23, CONTROLLER_HEALTHBARUPDATE, CONTROLLER_EXPUPDATE, CONTROLLER_STATUSICONUPDATE, CONTROLLER_STATUSANIMATION, CONTROLLER_STATUSXOR, CONTROLLER_DATATRANSFER, CONTROLLER_DMA3TRANSFER, CONTROLLER_PLAYBGM, CONTROLLER_32, CONTROLLER_TWORETURNVALUES, CONTROLLER_CHOSENMONRETURNVALUE, CONTROLLER_ONERETURNVALUE, CONTROLLER_ONERETURNVALUE_DUPLICATE, CONTROLLER_CLEARUNKVAR, CONTROLLER_SETUNKVAR, CONTROLLER_CLEARUNKFLAG, CONTROLLER_TOGGLEUNKFLAG, CONTROLLER_HITANIMATION, CONTROLLER_CANTSWITCH, CONTROLLER_PLAYSE, CONTROLLER_PLAYFANFAREORBGM, CONTROLLER_FAINTINGCRY, CONTROLLER_INTROSLIDE, CONTROLLER_INTROTRAINERBALLTHROW, CONTROLLER_DRAWPARTYSTATUSSUMMARY, CONTROLLER_HIDEPARTYSTATUSSUMMARY, CONTROLLER_ENDBOUNCE, CONTROLLER_SPRITEINVISIBILITY, CONTROLLER_BATTLEANIMATION, CONTROLLER_LINKSTANDBYMSG, CONTROLLER_RESETACTIONMOVESELECTION, CONTROLLER_ENDLINKBATTLE, /*new controllers should go here*/ CONTROLLER_TERMINATOR_NOP, CONTROLLER_CMDS_COUNT }; struct DisableStruct; // emitters void HandleLinkBattleSetup(void); void SetUpBattleVarsAndBirchPoochyena(); void sub_800B950(void); void InitLinkBtlControllers(void); void PrepareBufferDataTransferLink(u8 a, u16, u8 *c); void sub_800C35C(void); void BtlController_EmitGetMonData(u8 a, u8 b, u8 c); void BtlController_EmitGetRawMonData(u8 a, u8 b, u8 c); void BtlController_EmitLoadMonSprite(u8 a); void BtlController_EmitSwitchInAnim(u8, u8, u8); void BtlController_EmitReturnMonToBall(u8 a, u8 b); void BtlController_EmitDrawTrainerPic(u8 a); void BtlController_EmitTrainerSlide(u8 a); void BtlController_EmitTrainerSlideBack(u8 a); void BtlController_EmitFaintAnimation(u8 a); void BtlController_EmitPaletteFade(u8 a); void BtlController_EmitSuccessBallThrowAnim(u8 a); void BtlController_EmitBallThrowAnim(u8 a, u8 b); void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g); void BtlController_EmitPrintString(u8 a, u16 b); void BtlController_EmitPrintSelectionString(u8 a, u16 stringID); void BtlController_EmitChooseAction(u8 a, u8 b, u16 c); void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d); void BtlController_EmitChooseItem(u8 a, u8 *b); void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); void BtlController_EmitCmd23(u8 a); void BtlController_EmitHealthBarUpdate(u8 a, u16 b); void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c); void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c); void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c); void BtlController_EmitStatusXor(u8 a, u8 b); void BtlController_EmitDataTransfer(u8, u16, u8 *); void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c); void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c); void BtlController_EmitOneReturnValue(u8 a, u16 b); void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b); void BtlController_EmitCmd37(u8 a); void BtlController_EmitCmd38(u8 a, u8 b); void BtlController_EmitCmd39(u8 a); void BtlController_EmitCmd40(u8 a); void BtlController_EmitHitAnimation(u8 a); void BtlController_EmitCmd42(u8 a); void BtlController_EmitPlaySE(u8 a, u16 b); void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b); void BtlController_EmitFaintingCry(u8 a); void BtlController_EmitIntroSlide(u8 bufferId, u8 environmentId); void BtlController_EmitIntroTrainerBallThrow(u8 a); void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c); //0x30 void BtlController_EmitHidePartyStatusSummary(u8 a); void BtlController_EmitEndBounceEffect(u8 a); void BtlController_EmitSpriteInvisibility(u8 a, u8 b); void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c); void BtlController_EmitLinkStandbyMsg(u8 a, u8 b); void BtlController_EmitResetActionMoveSelection(u8 a, u8 b); void BtlController_EmitCmd55(u8 a, u8 b); // player controller void PlayerHandleGetRawMonData(void); #endif // GUARD_BATTLE_CONTROLLERS_H