diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_controller_player_partner.c | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c new file mode 100644 index 000000000..009de472f --- /dev/null +++ b/src/battle_controller_player_partner.c @@ -0,0 +1,198 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "battle_message.h" +#include "battle_interface.h" +#include "battle_anim.h" +#include "pokemon.h" +#include "link.h" +#include "util.h" +#include "main.h" +#include "songs.h" +#include "sound.h" +#include "window.h" +#include "m4a.h" +#include "palette.h" +#include "task.h" +#include "text.h" +#include "bg.h" +#include "reshow_battle_screen.h" +#include "pokeball.h" + +extern u32 gBattleExecBuffer; +extern u8 gActiveBank; +extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; +extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT]; +extern u8 gNoOfAllBanks; +extern bool8 gDoingBattleAnim; +extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void); +extern void (*gPreBattleCallback1)(void); +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern struct SpriteTemplate gUnknown_0202499C; +extern u16 gScriptItemId; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; +extern u8 gBattleOutcome; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u8 gBankInMenu; +extern u16 gUnknown_020243FC; + +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; + +extern void sub_81358F4(void); + +// this file's functions +void PlayerPartnerHandleGetMonData(void); +void PlayerPartnerHandleGetRawMonData(void); +void PlayerPartnerHandleSetMonData(void); +void PlayerPartnerHandleSetRawMonData(void); +void PlayerPartnerHandleLoadMonSprite(void); +void PlayerPartnerHandleSwitchInAnim(void); +void PlayerPartnerHandleReturnMonToBall(void); +void PlayerPartnerHandleDrawTrainerPic(void); +void PlayerPartnerHandleTrainerSlide(void); +void PlayerPartnerHandleTrainerSlideBack(void); +void PlayerPartnerHandleFaintAnimation(void); +void PlayerPartnerHandlePaletteFade(void); +void PlayerPartnerHandleSuccessBallThrowAnim(void); +void PlayerPartnerHandleBallThrowAnim(void); +void PlayerPartnerHandlePause(void); +void PlayerPartnerHandleMoveAnimation(void); +void PlayerPartnerHandlePrintString(void); +void PlayerPartnerHandlePrintStringPlayerOnly(void); +void PlayerPartnerHandleChooseAction(void); +void PlayerPartnerHandleUnknownYesNoBox(void); +void PlayerPartnerHandleChooseMove(void); +void PlayerPartnerHandleChooseItem(void); +void PlayerPartnerHandleChoosePokemon(void); +void PlayerPartnerHandleCmd23(void); +void PlayerPartnerHandleHealthBarUpdate(void); +void PlayerPartnerHandleExpUpdate(void); +void PlayerPartnerHandleStatusIconUpdate(void); +void PlayerPartnerHandleStatusAnimation(void); +void PlayerPartnerHandleStatusXor(void); +void PlayerPartnerHandleDataTransfer(void); +void PlayerPartnerHandleDMA3Transfer(void); +void PlayerPartnerHandlePlayBGM(void); +void PlayerPartnerHandleCmd32(void); +void PlayerPartnerHandleTwoReturnValues(void); +void PlayerPartnerHandleChosenMonReturnValue(void); +void PlayerPartnerHandleOneReturnValue(void); +void PlayerPartnerHandleOneReturnValue_Duplicate(void); +void PlayerPartnerHandleCmd37(void); +void PlayerPartnerHandleCmd38(void); +void PlayerPartnerHandleCmd39(void); +void PlayerPartnerHandleCmd40(void); +void PlayerPartnerHandleHitAnimation(void); +void PlayerPartnerHandleCmd42(void); +void PlayerPartnerHandleEffectivenessSound(void); +void PlayerPartnerHandlePlayFanfareOrBGM(void); +void PlayerPartnerHandleFaintingCry(void); +void PlayerPartnerHandleIntroSlide(void); +void PlayerPartnerHandleIntroTrainerBallThrow(void); +void PlayerPartnerHandleDrawPartyStatusSummary(void); +void PlayerPartnerHandleCmd49(void); +void PlayerPartnerHandleCmd50(void); +void PlayerPartnerHandleSpriteInvisibility(void); +void PlayerPartnerHandleBattleAnimation(void); +void PlayerPartnerHandleLinkStandbyMsg(void); +void PlayerPartnerHandleResetActionMoveSelection(void); +void PlayerPartnerHandleCmd55(void); +void nullsub_128(void); + +void PlayerPartnerBufferRunCommand(void); +void PlayerPartnerBufferExecCompleted(void); + +void (*const gPlayerPartnerBufferCommands[CONTOLLER_CMDS_COUNT])(void) = +{ + PlayerPartnerHandleGetMonData, + PlayerPartnerHandleGetRawMonData, + PlayerPartnerHandleSetMonData, + PlayerPartnerHandleSetRawMonData, + PlayerPartnerHandleLoadMonSprite, + PlayerPartnerHandleSwitchInAnim, + PlayerPartnerHandleReturnMonToBall, + PlayerPartnerHandleDrawTrainerPic, + PlayerPartnerHandleTrainerSlide, + PlayerPartnerHandleTrainerSlideBack, + PlayerPartnerHandleFaintAnimation, + PlayerPartnerHandlePaletteFade, + PlayerPartnerHandleSuccessBallThrowAnim, + PlayerPartnerHandleBallThrowAnim, + PlayerPartnerHandlePause, + PlayerPartnerHandleMoveAnimation, + PlayerPartnerHandlePrintString, + PlayerPartnerHandlePrintStringPlayerOnly, + PlayerPartnerHandleChooseAction, + PlayerPartnerHandleUnknownYesNoBox, + PlayerPartnerHandleChooseMove, + PlayerPartnerHandleChooseItem, + PlayerPartnerHandleChoosePokemon, + PlayerPartnerHandleCmd23, + PlayerPartnerHandleHealthBarUpdate, + PlayerPartnerHandleExpUpdate, + PlayerPartnerHandleStatusIconUpdate, + PlayerPartnerHandleStatusAnimation, + PlayerPartnerHandleStatusXor, + PlayerPartnerHandleDataTransfer, + PlayerPartnerHandleDMA3Transfer, + PlayerPartnerHandlePlayBGM, + PlayerPartnerHandleCmd32, + PlayerPartnerHandleTwoReturnValues, + PlayerPartnerHandleChosenMonReturnValue, + PlayerPartnerHandleOneReturnValue, + PlayerPartnerHandleOneReturnValue_Duplicate, + PlayerPartnerHandleCmd37, + PlayerPartnerHandleCmd38, + PlayerPartnerHandleCmd39, + PlayerPartnerHandleCmd40, + PlayerPartnerHandleHitAnimation, + PlayerPartnerHandleCmd42, + PlayerPartnerHandleEffectivenessSound, + PlayerPartnerHandlePlayFanfareOrBGM, + PlayerPartnerHandleFaintingCry, + PlayerPartnerHandleIntroSlide, + PlayerPartnerHandleIntroTrainerBallThrow, + PlayerPartnerHandleDrawPartyStatusSummary, + PlayerPartnerHandleCmd49, + PlayerPartnerHandleCmd50, + PlayerPartnerHandleSpriteInvisibility, + PlayerPartnerHandleBattleAnimation, + PlayerPartnerHandleLinkStandbyMsg, + PlayerPartnerHandleResetActionMoveSelection, + PlayerPartnerHandleCmd55, + nullsub_128 +}; + +// unknown unused data +static const u8 gUnknown_08617254[] = +{ + 0x83, 0x4d, 0xf3, 0x5f, 0x6f, 0x4f, 0xeb, 0x3e, + 0x67, 0x2e, 0x10, 0x46, 0x8c, 0x3d, 0x28, 0x35, + 0xc5, 0x2c, 0x15, 0x7f, 0xb5, 0x56, 0x9d, 0x53, + 0x3b, 0x43, 0xda, 0x36, 0x79, 0x2a, 0x0e, 0x53, +}; + +void nullsub_77(void) +{ +} + +void SetBankFuncToPlayerPartnerBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = PlayerPartnerBufferRunCommand; +} + +void PlayerPartnerBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(gPlayerPartnerBufferCommands)) + gPlayerPartnerBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + PlayerPartnerBufferExecCompleted(); + } +} + |