Merge pull request #548 from AsparagusEduardo/pokefirered_pokeemeraldSync4
pokeemerald sync No. 4
This commit is contained in:
+2
-17
@@ -29,11 +29,6 @@
|
|||||||
(!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
|
(!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
|
||||||
&& !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
|
&& !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
|
||||||
|
|
||||||
#define TRAINER_OPPONENT_3FE 0x3FE
|
|
||||||
#define TRAINER_UNION_ROOM 0xC00
|
|
||||||
#define TRAINER_LINK_OPPONENT 0x800
|
|
||||||
#define SECRET_BASE_OPPONENT 0x400
|
|
||||||
|
|
||||||
// Battle Actions
|
// Battle Actions
|
||||||
// These determine what each battler will do in a turn
|
// These determine what each battler will do in a turn
|
||||||
#define B_ACTION_USE_MOVE 0
|
#define B_ACTION_USE_MOVE 0
|
||||||
@@ -521,16 +516,6 @@ struct BattleScripting
|
|||||||
u8 field_23;
|
u8 field_23;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
BACK_PIC_RED,
|
|
||||||
BACK_PIC_LEAF,
|
|
||||||
BACK_PIC_RS_BRENDAN,
|
|
||||||
BACK_PIC_RS_MAY,
|
|
||||||
BACK_PIC_POKEDUDE,
|
|
||||||
BACK_PIC_OLDMAN
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BattleSpriteInfo
|
struct BattleSpriteInfo
|
||||||
{
|
{
|
||||||
/*0x0*/ u16 invisible : 1; // 0x1
|
/*0x0*/ u16 invisible : 1; // 0x1
|
||||||
@@ -685,8 +670,8 @@ extern u8 *gBattleAnimBgTileBuffer;
|
|||||||
extern u8 *gBattleAnimBgTilemapBuffer;
|
extern u8 *gBattleAnimBgTilemapBuffer;
|
||||||
extern void (*gBattleMainFunc)(void);
|
extern void (*gBattleMainFunc)(void);
|
||||||
extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
|
extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
|
||||||
extern u32 gUnknown_2022B54;
|
extern u32 gUnusedFirstBattleVar1;
|
||||||
extern u8 gUnknown_2023DDC;
|
extern u8 gUnusedFirstBattleVar2;
|
||||||
extern u8 gBattlerAttacker;
|
extern u8 gBattlerAttacker;
|
||||||
extern u8 gEffectBattler;
|
extern u8 gEffectBattler;
|
||||||
extern u8 gMultiHitCounter;
|
extern u8 gMultiHitCounter;
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ enum {
|
|||||||
|
|
||||||
struct UnusedControllerStruct
|
struct UnusedControllerStruct
|
||||||
{
|
{
|
||||||
u8 field_0 : 7;
|
u8 unk:7;
|
||||||
u8 flag_x80 : 1;
|
u8 flag:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HpAndStatus
|
struct HpAndStatus
|
||||||
@@ -174,14 +174,14 @@ enum
|
|||||||
CONTROLLER_CHOSENMONRETURNVALUE,
|
CONTROLLER_CHOSENMONRETURNVALUE,
|
||||||
CONTROLLER_ONERETURNVALUE,
|
CONTROLLER_ONERETURNVALUE,
|
||||||
CONTROLLER_ONERETURNVALUE_DUPLICATE,
|
CONTROLLER_ONERETURNVALUE_DUPLICATE,
|
||||||
CONTROLLER_37,
|
CONTROLLER_CLEARUNKVAR,
|
||||||
CONTROLLER_38,
|
CONTROLLER_SETUNKVAR,
|
||||||
CONTROLLER_39,
|
CONTROLLER_CLEARUNKFLAG,
|
||||||
CONTROLLER_40,
|
CONTROLLER_TOGGLEUNKFLAG,
|
||||||
CONTROLLER_HITANIMATION,
|
CONTROLLER_HITANIMATION,
|
||||||
CONTROLLER_42,
|
CONTROLLER_CANTSWITCH,
|
||||||
CONTROLLER_EFFECTIVENESSSOUND,
|
CONTROLLER_PLAYSE,
|
||||||
CONTROLLER_PLAYFANFAREORBGM,
|
CONTROLLER_PLAYFANFARE,
|
||||||
CONTROLLER_FAINTINGCRY,
|
CONTROLLER_FAINTINGCRY,
|
||||||
CONTROLLER_INTROSLIDE,
|
CONTROLLER_INTROSLIDE,
|
||||||
CONTROLLER_INTROTRAINERBALLTHROW,
|
CONTROLLER_INTROTRAINERBALLTHROW,
|
||||||
@@ -198,12 +198,12 @@ enum
|
|||||||
CONTROLLER_CMDS_COUNT
|
CONTROLLER_CMDS_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct UnusedControllerStruct gUnknown_2022870;
|
extern struct UnusedControllerStruct gUnusedControllerStruct;
|
||||||
|
|
||||||
// general functions
|
// general functions
|
||||||
void HandleLinkBattleSetup(void);
|
void HandleLinkBattleSetup(void);
|
||||||
void SetUpBattleVars(void);
|
void SetUpBattleVars(void);
|
||||||
void InitBtlControllers(void);
|
void InitBattleControllers(void);
|
||||||
void TryReceiveLinkBattleData(void);
|
void TryReceiveLinkBattleData(void);
|
||||||
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
|
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@ void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
|
|||||||
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr);
|
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr);
|
||||||
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
|
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
|
||||||
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
|
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
|
||||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
|
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId);
|
||||||
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
|
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
|
||||||
void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1);
|
void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1);
|
||||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4);
|
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4);
|
||||||
@@ -251,7 +251,7 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
|
|||||||
void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome);
|
void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome);
|
||||||
|
|
||||||
// player controller
|
// player controller
|
||||||
void PlayerDummy(void);
|
void BattleControllerDummy(void);
|
||||||
void SetControllerToPlayer(void);
|
void SetControllerToPlayer(void);
|
||||||
void PlayerHandleGetRawMonData(void);
|
void PlayerHandleGetRawMonData(void);
|
||||||
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite);
|
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
|
|||||||
void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId);
|
void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId);
|
||||||
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
|
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
|
||||||
void DecompressTrainerBackPalette(u16 a1, u8 a2);
|
void DecompressTrainerBackPalette(u16 a1, u8 a2);
|
||||||
void BattleGfxSfxDummy3(u8 a1);
|
void BattleGfxSfxDummy3(u8 gender);
|
||||||
void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId);
|
void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId);
|
||||||
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
|
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
|
||||||
void LoadBattleBarGfx(u8 arg0);
|
void LoadBattleBarGfx(u8 arg0);
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude);
|
|||||||
void EndBounceEffect(u8 battler, u8 which);
|
void EndBounceEffect(u8 battler, u8 which);
|
||||||
void SpriteCB_PlayerThrowInit(struct Sprite *sprite);
|
void SpriteCB_PlayerThrowInit(struct Sprite *sprite);
|
||||||
void UpdatePlayerPosInThrowAnim(struct Sprite *sprite);
|
void UpdatePlayerPosInThrowAnim(struct Sprite *sprite);
|
||||||
void BattleDummy(void);
|
void BeginBattleIntroDummy(void);
|
||||||
void BeginBattleIntro(void);
|
void BeginBattleIntro(void);
|
||||||
void SwitchInClearSetData(void);
|
void SwitchInClearSetData(void);
|
||||||
void FaintClearSetData(void);
|
void FaintClearSetData(void);
|
||||||
|
|||||||
@@ -167,8 +167,18 @@
|
|||||||
#define TRAINER_PIC_LADY 146
|
#define TRAINER_PIC_LADY 146
|
||||||
#define TRAINER_PIC_PAINTER 147
|
#define TRAINER_PIC_PAINTER 147
|
||||||
|
|
||||||
// Leftover from R/S
|
// The player back pics are assumed to alternate according to the gender values (MALE/FEMALE)
|
||||||
#define TRAINER_SECRET_BASE 1024
|
#define TRAINER_BACK_PIC_RED 0
|
||||||
|
#define TRAINER_BACK_PIC_LEAF 1
|
||||||
|
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN 2
|
||||||
|
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY 3
|
||||||
|
#define TRAINER_BACK_PIC_POKEDUDE 4
|
||||||
|
#define TRAINER_BACK_PIC_OLD_MAN 5
|
||||||
|
|
||||||
|
// Special Trainer Ids.
|
||||||
|
#define TRAINER_UNION_ROOM 0xC00
|
||||||
|
#define TRAINER_LINK_OPPONENT 0x800
|
||||||
|
#define TRAINER_SECRET_BASE 0x400
|
||||||
|
|
||||||
#define TRAINER_CLASS_NONE 0
|
#define TRAINER_CLASS_NONE 0
|
||||||
#define TRAINER_CLASS_PKMN_TRAINER_UNUSED 1
|
#define TRAINER_CLASS_PKMN_TRAINER_UNUSED 1
|
||||||
|
|||||||
+1
-1
@@ -234,7 +234,7 @@ bool8 IsLinkPlayerDataExchangeComplete(void);
|
|||||||
u32 GetLinkPlayerTrainerId(u8);
|
u32 GetLinkPlayerTrainerId(u8);
|
||||||
void ResetLinkPlayers(void);
|
void ResetLinkPlayers(void);
|
||||||
u8 GetMultiplayerId(void);
|
u8 GetMultiplayerId(void);
|
||||||
u8 bitmask_all_link_players_but_self(void);
|
u8 BitmaskAllOtherLinkPlayers(void);
|
||||||
bool8 SendBlock(u8, const void *, u16);
|
bool8 SendBlock(u8, const void *, u16);
|
||||||
u8 GetBlockReceivedStatus(void);
|
u8 GetBlockReceivedStatus(void);
|
||||||
void ResetBlockReceivedFlags(void);
|
void ResetBlockReceivedFlags(void);
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
|
|||||||
|
|
||||||
// Items are allowed to use in ONLY trainer battles.
|
// Items are allowed to use in ONLY trainer battles.
|
||||||
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||||
&& (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT)
|
&& (gTrainerBattleOpponent_A != TRAINER_SECRET_BASE)
|
||||||
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_LINK))
|
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_LINK))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -339,7 +339,7 @@ void BattleAI_SetupAIData(void)
|
|||||||
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_ROAMING;
|
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_ROAMING;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT))
|
else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != TRAINER_SECRET_BASE))
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_WILD_SCRIPTED)
|
if (gBattleTypeFlags & BATTLE_TYPE_WILD_SCRIPTED)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3861,8 +3861,8 @@ static void AnimAirCutterSlice(struct Sprite* sprite)
|
|||||||
b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||||
if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
|
if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
|
||||||
{
|
{
|
||||||
a = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0) + a) / 2;
|
a = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), BATTLER_COORD_X) + a) / 2;
|
||||||
b = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1) + b) / 2;
|
b = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), BATTLER_COORD_Y) + b) / 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
|
|||||||
@@ -661,8 +661,8 @@ static void AnimElectricity(struct Sprite *sprite)
|
|||||||
// The vertical falling thunder bolt used in Thunder Wave/Shock/Bolt
|
// The vertical falling thunder bolt used in Thunder Wave/Shock/Bolt
|
||||||
void AnimTask_ElectricBolt(u8 taskId)
|
void AnimTask_ElectricBolt(u8 taskId)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
|
gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0];
|
||||||
gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
|
gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1];
|
||||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
gTasks[taskId].func = AnimTask_ElectricBolt_Step;
|
gTasks[taskId].func = AnimTask_ElectricBolt_Step;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -640,9 +640,9 @@ static void AnimFireRing_Step1(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
sprite->data[0] = 0x19;
|
sprite->data[0] = 0x19;
|
||||||
sprite->data[1] = sprite->x;
|
sprite->data[1] = sprite->x;
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[3] = sprite->y;
|
sprite->data[3] = sprite->y;
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
InitAnimLinearTranslation(sprite);
|
InitAnimLinearTranslation(sprite);
|
||||||
sprite->callback = AnimFireRing_Step2;
|
sprite->callback = AnimFireRing_Step2;
|
||||||
}
|
}
|
||||||
@@ -654,8 +654,8 @@ static void AnimFireRing_Step2(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
sprite->data[0] = 0;
|
sprite->data[0] = 0;
|
||||||
|
|
||||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->x2 = sprite->y2 = 0;
|
sprite->x2 = sprite->y2 = 0;
|
||||||
sprite->callback = AnimFireRing_Step3;
|
sprite->callback = AnimFireRing_Step3;
|
||||||
sprite->callback(sprite);
|
sprite->callback(sprite);
|
||||||
@@ -1092,9 +1092,9 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
|
|||||||
sprite->x2 = sprite->y2 = 0;
|
sprite->x2 = sprite->y2 = 0;
|
||||||
sprite->data[0] = 256;
|
sprite->data[0] = 256;
|
||||||
sprite->data[1] = sprite->x;
|
sprite->data[1] = sprite->x;
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[3] = sprite->y;
|
sprite->data[3] = sprite->y;
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
InitAnimLinearTranslationWithSpeed(sprite);
|
InitAnimLinearTranslationWithSpeed(sprite);
|
||||||
sprite->callback = AnimWillOWispOrb_Step;
|
sprite->callback = AnimWillOWispOrb_Step;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -537,7 +537,7 @@ void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
|
|||||||
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
|
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
|
||||||
{
|
{
|
||||||
FreeOamMatrix(sprite->oam.matrixNum);
|
FreeOamMatrix(sprite->oam.matrixNum);
|
||||||
sprite->oam.affineMode = 0;
|
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||||
}
|
}
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
--gAnimVisualTaskCount;
|
--gAnimVisualTaskCount;
|
||||||
@@ -884,8 +884,8 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
|
|||||||
static void AnimUnusedBubbleThrow(struct Sprite *sprite)
|
static void AnimUnusedBubbleThrow(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
||||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1032,8 +1032,8 @@ void AnimTask_DrillPeckHitSplats(u8 taskId)
|
|||||||
gBattleAnimArgs[2] = 1;
|
gBattleAnimArgs[2] = 1;
|
||||||
gBattleAnimArgs[3] = 3;
|
gBattleAnimArgs[3] = 3;
|
||||||
CreateSpriteAndAnimate(&gFlashingHitSplatSpriteTemplate,
|
CreateSpriteAndAnimate(&gFlashingHitSplatSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(gBattleAnimTarget, 2),
|
GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteCoord(gBattleAnimTarget, 3),
|
GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET),
|
||||||
3);
|
3);
|
||||||
}
|
}
|
||||||
gTasks[taskId].data[0] += 8;
|
gTasks[taskId].data[0] += 8;
|
||||||
|
|||||||
@@ -190,8 +190,8 @@ static void AnimSludgeProjectile(struct Sprite *sprite)
|
|||||||
StartSpriteAnim(sprite, 2);
|
StartSpriteAnim(sprite, 2);
|
||||||
InitSpritePosToAnimAttacker(sprite, 1);
|
InitSpritePosToAnimAttacker(sprite, 1);
|
||||||
sprite->data[0] = gBattleAnimArgs[2];
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->data[5] = -30;
|
sprite->data[5] = -30;
|
||||||
InitAnimArcTranslation(sprite);
|
InitAnimArcTranslation(sprite);
|
||||||
sprite->callback = AnimSludgeProjectile_Step;
|
sprite->callback = AnimSludgeProjectile_Step;
|
||||||
|
|||||||
@@ -601,8 +601,8 @@ static void AnimQuestionMark(struct Sprite *sprite)
|
|||||||
|
|
||||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||||
x = -x;
|
x = -x;
|
||||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
|
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + x;
|
||||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
|
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + y;
|
||||||
if (sprite->y < 16)
|
if (sprite->y < 16)
|
||||||
sprite->y = 16;
|
sprite->y = 16;
|
||||||
StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1);
|
StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1);
|
||||||
|
|||||||
@@ -2080,7 +2080,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AnimTask_ShinySparkles(u8 taskId)
|
static void AnimTask_ShinySparkles(u8 taskId)
|
||||||
@@ -2163,7 +2163,7 @@ static void AnimTask_ShinySparkles_WaitSparkles(u8 taskId)
|
|||||||
if (gTasks[taskId].data[1] == TRUE)
|
if (gTasks[taskId].data[1] == TRUE)
|
||||||
{
|
{
|
||||||
battler = gTasks[taskId].data[0];
|
battler = gTasks[taskId].data[0];
|
||||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "battle.h"
|
||||||
|
#include "battle_anim.h"
|
||||||
|
#include "battle_controllers.h"
|
||||||
|
#include "battle_interface.h"
|
||||||
|
#include "battle_message.h"
|
||||||
#include "gflib.h"
|
#include "gflib.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
@@ -6,11 +11,6 @@
|
|||||||
#include "pokeball.h"
|
#include "pokeball.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "battle.h"
|
|
||||||
#include "battle_anim.h"
|
|
||||||
#include "battle_controllers.h"
|
|
||||||
#include "battle_interface.h"
|
|
||||||
#include "battle_message.h"
|
|
||||||
#include "constants/battle_anim.h"
|
#include "constants/battle_anim.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
#include "constants/sound.h"
|
#include "constants/sound.h"
|
||||||
@@ -53,12 +53,12 @@ static void LinkOpponentHandleTwoReturnValues(void);
|
|||||||
static void LinkOpponentHandleChosenMonReturnValue(void);
|
static void LinkOpponentHandleChosenMonReturnValue(void);
|
||||||
static void LinkOpponentHandleOneReturnValue(void);
|
static void LinkOpponentHandleOneReturnValue(void);
|
||||||
static void LinkOpponentHandleOneReturnValue_Duplicate(void);
|
static void LinkOpponentHandleOneReturnValue_Duplicate(void);
|
||||||
static void LinkOpponentHandleCmd37(void);
|
static void LinkOpponentHandleClearUnkVar(void);
|
||||||
static void LinkOpponentHandleCmd38(void);
|
static void LinkOpponentHandleSetUnkVar(void);
|
||||||
static void LinkOpponentHandleCmd39(void);
|
static void LinkOpponentHandleClearUnkFlag(void);
|
||||||
static void LinkOpponentHandleCmd40(void);
|
static void LinkOpponentHandleToggleUnkFlag(void);
|
||||||
static void LinkOpponentHandleHitAnimation(void);
|
static void LinkOpponentHandleHitAnimation(void);
|
||||||
static void LinkOpponentHandleCmd42(void);
|
static void LinkOpponentHandleCantSwitch(void);
|
||||||
static void LinkOpponentHandlePlaySE(void);
|
static void LinkOpponentHandlePlaySE(void);
|
||||||
static void LinkOpponentHandlePlayFanfare(void);
|
static void LinkOpponentHandlePlayFanfare(void);
|
||||||
static void LinkOpponentHandleFaintingCry(void);
|
static void LinkOpponentHandleFaintingCry(void);
|
||||||
@@ -71,83 +71,82 @@ static void LinkOpponentHandleSpriteInvisibility(void);
|
|||||||
static void LinkOpponentHandleBattleAnimation(void);
|
static void LinkOpponentHandleBattleAnimation(void);
|
||||||
static void LinkOpponentHandleLinkStandbyMsg(void);
|
static void LinkOpponentHandleLinkStandbyMsg(void);
|
||||||
static void LinkOpponentHandleResetActionMoveSelection(void);
|
static void LinkOpponentHandleResetActionMoveSelection(void);
|
||||||
static void LinkOpponentHandleCmd55(void);
|
static void LinkOpponentHandleEndLinkBattle(void);
|
||||||
static void LinkOpponentCmdEnd(void);
|
static void LinkOpponentCmdEnd(void);
|
||||||
|
|
||||||
static void LinkOpponentBufferRunCommand(void);
|
static void LinkOpponentBufferRunCommand(void);
|
||||||
static void LinkOpponentBufferExecCompleted(void);
|
static void LinkOpponentBufferExecCompleted(void);
|
||||||
|
static void SwitchIn_HandleSoundAndEnd(void);
|
||||||
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
|
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
|
||||||
static void SetLinkOpponentMonData(u8 monId);
|
static void SetLinkOpponentMonData(u8 monId);
|
||||||
|
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
|
||||||
static void DoSwitchOutAnimation(void);
|
static void DoSwitchOutAnimation(void);
|
||||||
static void LinkOpponentDoMoveAnimation(void);
|
static void LinkOpponentDoMoveAnimation(void);
|
||||||
static void SwitchIn_HandleSoundAndEnd(void);
|
|
||||||
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
|
|
||||||
static void Task_StartSendOutAnim(u8 taskId);
|
static void Task_StartSendOutAnim(u8 taskId);
|
||||||
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
|
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
|
||||||
static void EndDrawPartyStatusSummary(void);
|
static void EndDrawPartyStatusSummary(void);
|
||||||
|
|
||||||
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
LinkOpponentHandleGetMonData,
|
[CONTROLLER_GETMONDATA] = LinkOpponentHandleGetMonData,
|
||||||
LinkOpponentHandleGetRawMonData,
|
[CONTROLLER_GETRAWMONDATA] = LinkOpponentHandleGetRawMonData,
|
||||||
LinkOpponentHandleSetMonData,
|
[CONTROLLER_SETMONDATA] = LinkOpponentHandleSetMonData,
|
||||||
LinkOpponentHandleSetRawMonData,
|
[CONTROLLER_SETRAWMONDATA] = LinkOpponentHandleSetRawMonData,
|
||||||
LinkOpponentHandleLoadMonSprite,
|
[CONTROLLER_LOADMONSPRITE] = LinkOpponentHandleLoadMonSprite,
|
||||||
LinkOpponentHandleSwitchInAnim,
|
[CONTROLLER_SWITCHINANIM] = LinkOpponentHandleSwitchInAnim,
|
||||||
LinkOpponentHandleReturnMonToBall,
|
[CONTROLLER_RETURNMONTOBALL] = LinkOpponentHandleReturnMonToBall,
|
||||||
LinkOpponentHandleDrawTrainerPic,
|
[CONTROLLER_DRAWTRAINERPIC] = LinkOpponentHandleDrawTrainerPic,
|
||||||
LinkOpponentHandleTrainerSlide,
|
[CONTROLLER_TRAINERSLIDE] = LinkOpponentHandleTrainerSlide,
|
||||||
LinkOpponentHandleTrainerSlideBack,
|
[CONTROLLER_TRAINERSLIDEBACK] = LinkOpponentHandleTrainerSlideBack,
|
||||||
LinkOpponentHandleFaintAnimation,
|
[CONTROLLER_FAINTANIMATION] = LinkOpponentHandleFaintAnimation,
|
||||||
LinkOpponentHandlePaletteFade,
|
[CONTROLLER_PALETTEFADE] = LinkOpponentHandlePaletteFade,
|
||||||
LinkOpponentHandleSuccessBallThrowAnim,
|
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkOpponentHandleSuccessBallThrowAnim,
|
||||||
LinkOpponentHandleBallThrowAnim,
|
[CONTROLLER_BALLTHROWANIM] = LinkOpponentHandleBallThrowAnim,
|
||||||
LinkOpponentHandlePause,
|
[CONTROLLER_PAUSE] = LinkOpponentHandlePause,
|
||||||
LinkOpponentHandleMoveAnimation,
|
[CONTROLLER_MOVEANIMATION] = LinkOpponentHandleMoveAnimation,
|
||||||
LinkOpponentHandlePrintString,
|
[CONTROLLER_PRINTSTRING] = LinkOpponentHandlePrintString,
|
||||||
LinkOpponentHandlePrintSelectionString,
|
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkOpponentHandlePrintSelectionString,
|
||||||
LinkOpponentHandleChooseAction,
|
[CONTROLLER_CHOOSEACTION] = LinkOpponentHandleChooseAction,
|
||||||
LinkOpponentHandleUnknownYesNoBox,
|
[CONTROLLER_UNKNOWNYESNOBOX] = LinkOpponentHandleUnknownYesNoBox,
|
||||||
LinkOpponentHandleChooseMove,
|
[CONTROLLER_CHOOSEMOVE] = LinkOpponentHandleChooseMove,
|
||||||
LinkOpponentHandleChooseItem,
|
[CONTROLLER_OPENBAG] = LinkOpponentHandleChooseItem,
|
||||||
LinkOpponentHandleChoosePokemon,
|
[CONTROLLER_CHOOSEPOKEMON] = LinkOpponentHandleChoosePokemon,
|
||||||
LinkOpponentHandleCmd23,
|
[CONTROLLER_23] = LinkOpponentHandleCmd23,
|
||||||
LinkOpponentHandleHealthBarUpdate,
|
[CONTROLLER_HEALTHBARUPDATE] = LinkOpponentHandleHealthBarUpdate,
|
||||||
LinkOpponentHandleExpUpdate,
|
[CONTROLLER_EXPUPDATE] = LinkOpponentHandleExpUpdate,
|
||||||
LinkOpponentHandleStatusIconUpdate,
|
[CONTROLLER_STATUSICONUPDATE] = LinkOpponentHandleStatusIconUpdate,
|
||||||
LinkOpponentHandleStatusAnimation,
|
[CONTROLLER_STATUSANIMATION] = LinkOpponentHandleStatusAnimation,
|
||||||
LinkOpponentHandleStatusXor,
|
[CONTROLLER_STATUSXOR] = LinkOpponentHandleStatusXor,
|
||||||
LinkOpponentHandleDataTransfer,
|
[CONTROLLER_DATATRANSFER] = LinkOpponentHandleDataTransfer,
|
||||||
LinkOpponentHandleDMA3Transfer,
|
[CONTROLLER_DMA3TRANSFER] = LinkOpponentHandleDMA3Transfer,
|
||||||
LinkOpponentHandlePlayBGM,
|
[CONTROLLER_PLAYBGM] = LinkOpponentHandlePlayBGM,
|
||||||
LinkOpponentHandleCmd32,
|
[CONTROLLER_32] = LinkOpponentHandleCmd32,
|
||||||
LinkOpponentHandleTwoReturnValues,
|
[CONTROLLER_TWORETURNVALUES] = LinkOpponentHandleTwoReturnValues,
|
||||||
LinkOpponentHandleChosenMonReturnValue,
|
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkOpponentHandleChosenMonReturnValue,
|
||||||
LinkOpponentHandleOneReturnValue,
|
[CONTROLLER_ONERETURNVALUE] = LinkOpponentHandleOneReturnValue,
|
||||||
LinkOpponentHandleOneReturnValue_Duplicate,
|
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkOpponentHandleOneReturnValue_Duplicate,
|
||||||
LinkOpponentHandleCmd37,
|
[CONTROLLER_CLEARUNKVAR] = LinkOpponentHandleClearUnkVar,
|
||||||
LinkOpponentHandleCmd38,
|
[CONTROLLER_SETUNKVAR] = LinkOpponentHandleSetUnkVar,
|
||||||
LinkOpponentHandleCmd39,
|
[CONTROLLER_CLEARUNKFLAG] = LinkOpponentHandleClearUnkFlag,
|
||||||
LinkOpponentHandleCmd40,
|
[CONTROLLER_TOGGLEUNKFLAG] = LinkOpponentHandleToggleUnkFlag,
|
||||||
LinkOpponentHandleHitAnimation,
|
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
|
||||||
LinkOpponentHandleCmd42,
|
[CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
|
||||||
LinkOpponentHandlePlaySE,
|
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
|
||||||
LinkOpponentHandlePlayFanfare,
|
[CONTROLLER_PLAYFANFARE] = LinkOpponentHandlePlayFanfare,
|
||||||
LinkOpponentHandleFaintingCry,
|
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
|
||||||
LinkOpponentHandleIntroSlide,
|
[CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
|
||||||
LinkOpponentHandleIntroTrainerBallThrow,
|
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
|
||||||
LinkOpponentHandleDrawPartyStatusSummary,
|
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkOpponentHandleDrawPartyStatusSummary,
|
||||||
LinkOpponentHandleHidePartyStatusSummary,
|
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkOpponentHandleHidePartyStatusSummary,
|
||||||
LinkOpponentHandleEndBounceEffect,
|
[CONTROLLER_ENDBOUNCE] = LinkOpponentHandleEndBounceEffect,
|
||||||
LinkOpponentHandleSpriteInvisibility,
|
[CONTROLLER_SPRITEINVISIBILITY] = LinkOpponentHandleSpriteInvisibility,
|
||||||
LinkOpponentHandleBattleAnimation,
|
[CONTROLLER_BATTLEANIMATION] = LinkOpponentHandleBattleAnimation,
|
||||||
LinkOpponentHandleLinkStandbyMsg,
|
[CONTROLLER_LINKSTANDBYMSG] = LinkOpponentHandleLinkStandbyMsg,
|
||||||
LinkOpponentHandleResetActionMoveSelection,
|
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkOpponentHandleResetActionMoveSelection,
|
||||||
LinkOpponentHandleCmd55,
|
[CONTROLLER_ENDLINKBATTLE] = LinkOpponentHandleEndLinkBattle,
|
||||||
LinkOpponentCmdEnd
|
[CONTROLLER_TERMINATOR_NOP] = LinkOpponentCmdEnd
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void LinkOpponentDummy(void)
|
static void LinkOpponentDummy(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -161,7 +160,7 @@ static void LinkOpponentBufferRunCommand(void)
|
|||||||
{
|
{
|
||||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||||
{
|
{
|
||||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkOpponentBufferCommands))
|
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
|
||||||
sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||||
else
|
else
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
@@ -188,7 +187,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
|||||||
|
|
||||||
static void Intro_DelayAndEnd(void)
|
static void Intro_DelayAndEnd(void)
|
||||||
{
|
{
|
||||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
@@ -197,31 +196,34 @@ static void Intro_DelayAndEnd(void)
|
|||||||
|
|
||||||
static void Intro_WaitForShinyAnimAndHealthbox(void)
|
static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||||
{
|
{
|
||||||
bool8 var = FALSE;
|
bool32 healthboxAnimDone = FALSE;
|
||||||
|
|
||||||
if (!IsDoubleBattle() || ((IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))))
|
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||||
{
|
{
|
||||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||||
var = TRUE;
|
healthboxAnimDone = TRUE;
|
||||||
}
|
}
|
||||||
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == gSprites[gHealthboxSpriteIds[gActiveBattler]].callback)
|
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == gSprites[gHealthboxSpriteIds[gActiveBattler]].callback)
|
||||||
{
|
{
|
||||||
var = TRUE;
|
healthboxAnimDone = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsCryPlayingOrClearCrySongs())
|
if (IsCryPlayingOrClearCrySongs())
|
||||||
var = FALSE;
|
healthboxAnimDone = FALSE;
|
||||||
if (var)
|
|
||||||
|
if (healthboxAnimDone)
|
||||||
{
|
{
|
||||||
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
|
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
|
||||||
{
|
{
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||||
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||||
return;
|
return;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
}
|
}
|
||||||
@@ -287,8 +289,8 @@ static void TryShinyAnimAfterMonAnim(void)
|
|||||||
}
|
}
|
||||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
@@ -301,6 +303,7 @@ static void CompleteOnHealthbarDone(void)
|
|||||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||||
|
|
||||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||||
|
|
||||||
if (hpValue != -1)
|
if (hpValue != -1)
|
||||||
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
||||||
else
|
else
|
||||||
@@ -330,7 +333,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
|||||||
|
|
||||||
static void CompleteOnInactiveTextPrinter(void)
|
static void CompleteOnInactiveTextPrinter(void)
|
||||||
{
|
{
|
||||||
if (!IsTextPrinterActive(0))
|
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -347,9 +350,9 @@ static void DoHitAnimBlinkSpriteEffect(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(gSprites[spriteId].data[1] % 4))
|
if ((gSprites[spriteId].data[1] % 4) == 0)
|
||||||
gSprites[spriteId].invisible ^= 1;
|
gSprites[spriteId].invisible ^= 1;
|
||||||
++gSprites[spriteId].data[1];
|
gSprites[spriteId].data[1]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,6 +362,7 @@ static void SwitchIn_ShowSubstitute(void)
|
|||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
|
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -376,11 +380,14 @@ static void SwitchIn_ShowHealthbox(void)
|
|||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
|
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
|
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||||
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
|
||||||
StartHealthboxSlideIn(gActiveBattler);
|
StartHealthboxSlideIn(gActiveBattler);
|
||||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||||
@@ -392,11 +399,13 @@ static void SwitchIn_ShowHealthbox(void)
|
|||||||
static void SwitchIn_TryShinyAnim(void)
|
static void SwitchIn_TryShinyAnim(void)
|
||||||
{
|
{
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
||||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
||||||
|
{
|
||||||
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
|
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||||
|
}
|
||||||
|
|
||||||
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||||
{
|
{
|
||||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
||||||
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||||
@@ -439,21 +448,21 @@ static void LinkOpponentHandleGetMonData(void)
|
|||||||
u8 monToCheck;
|
u8 monToCheck;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
if (!gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||||
{
|
{
|
||||||
size += CopyLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
size += CopyLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||||
for (i = 0; i < PARTY_SIZE; ++i)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
if (monToCheck & 1)
|
if (monToCheck & 1)
|
||||||
size += CopyLinkOpponentMonData(i, monData + size);
|
size += CopyLinkOpponentMonData(i, monData + size);
|
||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -472,7 +481,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
|||||||
case REQUEST_ALL_BATTLE:
|
case REQUEST_ALL_BATTLE:
|
||||||
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
|
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
|
||||||
battleMon.item = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM);
|
battleMon.item = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM);
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
{
|
{
|
||||||
battleMon.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
battleMon.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
||||||
battleMon.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
battleMon.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||||
@@ -503,7 +512,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
|||||||
StringCopy_Nickname(battleMon.nickname, nickname);
|
StringCopy_Nickname(battleMon.nickname, nickname);
|
||||||
GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
||||||
src = (u8 *)&battleMon;
|
src = (u8 *)&battleMon;
|
||||||
for (size = 0; size < sizeof(battleMon); ++size)
|
for (size = 0; size < sizeof(battleMon); size++)
|
||||||
dst[size] = src[size];
|
dst[size] = src[size];
|
||||||
break;
|
break;
|
||||||
case REQUEST_SPECIES_BATTLE:
|
case REQUEST_SPECIES_BATTLE:
|
||||||
@@ -519,14 +528,14 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
|||||||
size = 2;
|
size = 2;
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVES_PP_BATTLE:
|
case REQUEST_MOVES_PP_BATTLE:
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
{
|
{
|
||||||
moveData.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
moveData.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
||||||
moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||||
}
|
}
|
||||||
moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
||||||
src = (u8 *)(&moveData);
|
src = (u8 *)(&moveData);
|
||||||
for (size = 0; size < sizeof(moveData); ++size)
|
for (size = 0; size < sizeof(moveData); size++)
|
||||||
dst[size] = src[size];
|
dst[size] = src[size];
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVE1_BATTLE:
|
case REQUEST_MOVE1_BATTLE:
|
||||||
@@ -539,10 +548,10 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
|||||||
size = 2;
|
size = 2;
|
||||||
break;
|
break;
|
||||||
case REQUEST_PP_DATA_BATTLE:
|
case REQUEST_PP_DATA_BATTLE:
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||||
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
||||||
++size;
|
size++;
|
||||||
break;
|
break;
|
||||||
case REQUEST_PPMOVE1_BATTLE:
|
case REQUEST_PPMOVE1_BATTLE:
|
||||||
case REQUEST_PPMOVE2_BATTLE:
|
case REQUEST_PPMOVE2_BATTLE:
|
||||||
@@ -772,14 +781,14 @@ static void LinkOpponentHandleSetMonData(void)
|
|||||||
u8 monToCheck;
|
u8 monToCheck;
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
if (!gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||||
{
|
{
|
||||||
SetLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
|
SetLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||||
for (i = 0; i < PARTY_SIZE; ++i)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
if (monToCheck & 1)
|
if (monToCheck & 1)
|
||||||
SetLinkOpponentMonData(i);
|
SetLinkOpponentMonData(i);
|
||||||
@@ -803,7 +812,7 @@ static void SetLinkOpponentMonData(u8 monId)
|
|||||||
|
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
||||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||||
{
|
{
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
||||||
@@ -842,7 +851,7 @@ static void SetLinkOpponentMonData(u8 monId)
|
|||||||
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVES_PP_BATTLE:
|
case REQUEST_MOVES_PP_BATTLE:
|
||||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||||
{
|
{
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
||||||
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
||||||
@@ -1010,8 +1019,9 @@ static void LinkOpponentHandleSetRawMonData(void)
|
|||||||
u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||||
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
||||||
|
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1021,15 +1031,19 @@ static void LinkOpponentHandleLoadMonSprite(void)
|
|||||||
|
|
||||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||||
|
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
|
||||||
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||||
|
|
||||||
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
|
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1051,22 +1065,27 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
|||||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
|
|
||||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
||||||
|
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
||||||
|
|
||||||
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
|
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleReturnMonToBall(void)
|
static void LinkOpponentHandleReturnMonToBall(void)
|
||||||
{
|
{
|
||||||
if (!gBattleBufferA[gActiveBattler][1])
|
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||||
@@ -1102,6 +1121,8 @@ static void DoSwitchOutAnimation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define sSpeedX data[0]
|
||||||
|
|
||||||
static void LinkOpponentHandleDrawTrainerPic(void)
|
static void LinkOpponentHandleDrawTrainerPic(void)
|
||||||
{
|
{
|
||||||
s16 xPos;
|
s16 xPos;
|
||||||
@@ -1109,10 +1130,11 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
|||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||||
{
|
{
|
||||||
if (GetBattlerPosition(gActiveBattler) & BIT_FLANK) // second mon
|
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
|
||||||
xPos = 152;
|
xPos = 152;
|
||||||
else // first mon
|
else // first mon
|
||||||
xPos = 200;
|
xPos = 200;
|
||||||
|
|
||||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||||
@@ -1162,13 +1184,14 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
|||||||
xPos,
|
xPos,
|
||||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1177,6 +1200,8 @@ static void LinkOpponentHandleTrainerSlide(void)
|
|||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef sSpeedX
|
||||||
|
|
||||||
static void LinkOpponentHandleTrainerSlideBack(void)
|
static void LinkOpponentHandleTrainerSlideBack(void)
|
||||||
{
|
{
|
||||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||||
@@ -1194,7 +1219,7 @@ static void LinkOpponentHandleFaintAnimation(void)
|
|||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1262,7 +1287,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
@@ -1272,7 +1297,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(0);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
DoMoveAnim(move);
|
DoMoveAnim(move);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
}
|
}
|
||||||
@@ -1281,7 +1306,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
|||||||
gAnimScriptCallback();
|
gAnimScriptCallback();
|
||||||
if (!gAnimScriptActive)
|
if (!gAnimScriptActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(1);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||||
{
|
{
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
@@ -1358,6 +1383,7 @@ static void LinkOpponentHandleHealthBarUpdate(void)
|
|||||||
|
|
||||||
LoadBattleBarGfx(0);
|
LoadBattleBarGfx(0);
|
||||||
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||||
|
|
||||||
if (hpVal != INSTANT_HP_BAR_DROP)
|
if (hpVal != INSTANT_HP_BAR_DROP)
|
||||||
{
|
{
|
||||||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||||
@@ -1371,6 +1397,7 @@ static void LinkOpponentHandleHealthBarUpdate(void)
|
|||||||
|
|
||||||
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1447,27 +1474,27 @@ static void LinkOpponentHandleOneReturnValue_Duplicate(void)
|
|||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd37(void)
|
static void LinkOpponentHandleClearUnkVar(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = 0;
|
gUnusedControllerStruct.unk = 0;
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd38(void)
|
static void LinkOpponentHandleSetUnkVar(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd39(void)
|
static void LinkOpponentHandleClearUnkFlag(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 = 0;
|
gUnusedControllerStruct.flag = 0;
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd40(void)
|
static void LinkOpponentHandleToggleUnkFlag(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 ^= 1;
|
gUnusedControllerStruct.flag ^= 1;
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1486,7 +1513,7 @@ static void LinkOpponentHandleHitAnimation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd42(void)
|
static void LinkOpponentHandleCantSwitch(void)
|
||||||
{
|
{
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
@@ -1499,6 +1526,7 @@ static void LinkOpponentHandlePlaySE(void)
|
|||||||
pan = SOUND_PAN_ATTACKER;
|
pan = SOUND_PAN_ATTACKER;
|
||||||
else
|
else
|
||||||
pan = SOUND_PAN_TARGET;
|
pan = SOUND_PAN_TARGET;
|
||||||
|
|
||||||
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
@@ -1526,18 +1554,23 @@ static void LinkOpponentHandleIntroSlide(void)
|
|||||||
|
|
||||||
static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
||||||
{
|
{
|
||||||
u8 paletteNum, taskId;
|
u8 taskId;
|
||||||
|
|
||||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||||
|
|
||||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
||||||
|
|
||||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||||
gTasks[taskId].data[0] = gActiveBattler;
|
gTasks[taskId].data[0] = gActiveBattler;
|
||||||
|
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||||
|
|
||||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDummy;
|
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDummy;
|
||||||
}
|
}
|
||||||
@@ -1576,19 +1609,19 @@ static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
|
|||||||
|
|
||||||
static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
||||||
{
|
{
|
||||||
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||||
|
|
||||||
if (gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
||||||
{
|
{
|
||||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1596,17 +1629,20 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
|||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||||
if (gBattleBufferA[gActiveBattler][2])
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D;
|
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void EndDrawPartyStatusSummary(void)
|
static void EndDrawPartyStatusSummary(void)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
@@ -1659,12 +1695,13 @@ static void LinkOpponentHandleResetActionMoveSelection(void)
|
|||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandleCmd55(void)
|
static void LinkOpponentHandleEndLinkBattle(void)
|
||||||
{
|
{
|
||||||
if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
|
if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
|
||||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||||
else
|
else
|
||||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
||||||
|
|
||||||
FadeOutMapMusic(5);
|
FadeOutMapMusic(5);
|
||||||
BeginFastPaletteFade(3);
|
BeginFastPaletteFade(3);
|
||||||
LinkOpponentBufferExecCompleted();
|
LinkOpponentBufferExecCompleted();
|
||||||
|
|||||||
@@ -51,12 +51,12 @@ static void LinkPartnerHandleTwoReturnValues(void);
|
|||||||
static void LinkPartnerHandleChosenMonReturnValue(void);
|
static void LinkPartnerHandleChosenMonReturnValue(void);
|
||||||
static void LinkPartnerHandleOneReturnValue(void);
|
static void LinkPartnerHandleOneReturnValue(void);
|
||||||
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
|
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
|
||||||
static void LinkPartnerHandleCmd37(void);
|
static void LinkPartnerHandleClearUnkVar(void);
|
||||||
static void LinkPartnerHandleCmd38(void);
|
static void LinkPartnerHandleSetUnkVar(void);
|
||||||
static void LinkPartnerHandleCmd39(void);
|
static void LinkPartnerHandleClearUnkFlag(void);
|
||||||
static void LinkPartnerHandleCmd40(void);
|
static void LinkPartnerHandleToggleUnkFlag(void);
|
||||||
static void LinkPartnerHandleHitAnimation(void);
|
static void LinkPartnerHandleHitAnimation(void);
|
||||||
static void LinkPartnerHandleCmd42(void);
|
static void LinkPartnerHandleCantSwitch(void);
|
||||||
static void LinkPartnerHandlePlaySE(void);
|
static void LinkPartnerHandlePlaySE(void);
|
||||||
static void LinkPartnerHandlePlayFanfare(void);
|
static void LinkPartnerHandlePlayFanfare(void);
|
||||||
static void LinkPartnerHandleFaintingCry(void);
|
static void LinkPartnerHandleFaintingCry(void);
|
||||||
@@ -69,7 +69,7 @@ static void LinkPartnerHandleSpriteInvisibility(void);
|
|||||||
static void LinkPartnerHandleBattleAnimation(void);
|
static void LinkPartnerHandleBattleAnimation(void);
|
||||||
static void LinkPartnerHandleLinkStandbyMsg(void);
|
static void LinkPartnerHandleLinkStandbyMsg(void);
|
||||||
static void LinkPartnerHandleResetActionMoveSelection(void);
|
static void LinkPartnerHandleResetActionMoveSelection(void);
|
||||||
static void LinkPartnerHandleCmd55(void);
|
static void LinkPartnerHandleEndLinkBattle(void);
|
||||||
static void LinkPartnerCmdEnd(void);
|
static void LinkPartnerCmdEnd(void);
|
||||||
|
|
||||||
static void LinkPartnerBufferRunCommand(void);
|
static void LinkPartnerBufferRunCommand(void);
|
||||||
@@ -85,63 +85,63 @@ static void EndDrawPartyStatusSummary(void);
|
|||||||
|
|
||||||
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
LinkPartnerHandleGetMonData,
|
[CONTROLLER_GETMONDATA] = LinkPartnerHandleGetMonData,
|
||||||
LinkPartnerHandleGetRawMonData,
|
[CONTROLLER_GETRAWMONDATA] = LinkPartnerHandleGetRawMonData,
|
||||||
LinkPartnerHandleSetMonData,
|
[CONTROLLER_SETMONDATA] = LinkPartnerHandleSetMonData,
|
||||||
LinkPartnerHandleSetRawMonData,
|
[CONTROLLER_SETRAWMONDATA] = LinkPartnerHandleSetRawMonData,
|
||||||
LinkPartnerHandleLoadMonSprite,
|
[CONTROLLER_LOADMONSPRITE] = LinkPartnerHandleLoadMonSprite,
|
||||||
LinkPartnerHandleSwitchInAnim,
|
[CONTROLLER_SWITCHINANIM] = LinkPartnerHandleSwitchInAnim,
|
||||||
LinkPartnerHandleReturnMonToBall,
|
[CONTROLLER_RETURNMONTOBALL] = LinkPartnerHandleReturnMonToBall,
|
||||||
LinkPartnerHandleDrawTrainerPic,
|
[CONTROLLER_DRAWTRAINERPIC] = LinkPartnerHandleDrawTrainerPic,
|
||||||
LinkPartnerHandleTrainerSlide,
|
[CONTROLLER_TRAINERSLIDE] = LinkPartnerHandleTrainerSlide,
|
||||||
LinkPartnerHandleTrainerSlideBack,
|
[CONTROLLER_TRAINERSLIDEBACK] = LinkPartnerHandleTrainerSlideBack,
|
||||||
LinkPartnerHandleFaintAnimation,
|
[CONTROLLER_FAINTANIMATION] = LinkPartnerHandleFaintAnimation,
|
||||||
LinkPartnerHandlePaletteFade,
|
[CONTROLLER_PALETTEFADE] = LinkPartnerHandlePaletteFade,
|
||||||
LinkPartnerHandleSuccessBallThrowAnim,
|
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkPartnerHandleSuccessBallThrowAnim,
|
||||||
LinkPartnerHandleBallThrowAnim,
|
[CONTROLLER_BALLTHROWANIM] = LinkPartnerHandleBallThrowAnim,
|
||||||
LinkPartnerHandlePause,
|
[CONTROLLER_PAUSE] = LinkPartnerHandlePause,
|
||||||
LinkPartnerHandleMoveAnimation,
|
[CONTROLLER_MOVEANIMATION] = LinkPartnerHandleMoveAnimation,
|
||||||
LinkPartnerHandlePrintString,
|
[CONTROLLER_PRINTSTRING] = LinkPartnerHandlePrintString,
|
||||||
LinkPartnerHandlePrintSelectionString,
|
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkPartnerHandlePrintSelectionString,
|
||||||
LinkPartnerHandleChooseAction,
|
[CONTROLLER_CHOOSEACTION] = LinkPartnerHandleChooseAction,
|
||||||
LinkPartnerHandleUnknownYesNoBox,
|
[CONTROLLER_UNKNOWNYESNOBOX] = LinkPartnerHandleUnknownYesNoBox,
|
||||||
LinkPartnerHandleChooseMove,
|
[CONTROLLER_CHOOSEMOVE] = LinkPartnerHandleChooseMove,
|
||||||
LinkPartnerHandleChooseItem,
|
[CONTROLLER_OPENBAG] = LinkPartnerHandleChooseItem,
|
||||||
LinkPartnerHandleChoosePokemon,
|
[CONTROLLER_CHOOSEPOKEMON] = LinkPartnerHandleChoosePokemon,
|
||||||
LinkPartnerHandleCmd23,
|
[CONTROLLER_23] = LinkPartnerHandleCmd23,
|
||||||
LinkPartnerHandleHealthBarUpdate,
|
[CONTROLLER_HEALTHBARUPDATE] = LinkPartnerHandleHealthBarUpdate,
|
||||||
LinkPartnerHandleExpUpdate,
|
[CONTROLLER_EXPUPDATE] = LinkPartnerHandleExpUpdate,
|
||||||
LinkPartnerHandleStatusIconUpdate,
|
[CONTROLLER_STATUSICONUPDATE] = LinkPartnerHandleStatusIconUpdate,
|
||||||
LinkPartnerHandleStatusAnimation,
|
[CONTROLLER_STATUSANIMATION] = LinkPartnerHandleStatusAnimation,
|
||||||
LinkPartnerHandleStatusXor,
|
[CONTROLLER_STATUSXOR] = LinkPartnerHandleStatusXor,
|
||||||
LinkPartnerHandleDataTransfer,
|
[CONTROLLER_DATATRANSFER] = LinkPartnerHandleDataTransfer,
|
||||||
LinkPartnerHandleDMA3Transfer,
|
[CONTROLLER_DMA3TRANSFER] = LinkPartnerHandleDMA3Transfer,
|
||||||
LinkPartnerHandlePlayBGM,
|
[CONTROLLER_PLAYBGM] = LinkPartnerHandlePlayBGM,
|
||||||
LinkPartnerHandleCmd32,
|
[CONTROLLER_32] = LinkPartnerHandleCmd32,
|
||||||
LinkPartnerHandleTwoReturnValues,
|
[CONTROLLER_TWORETURNVALUES] = LinkPartnerHandleTwoReturnValues,
|
||||||
LinkPartnerHandleChosenMonReturnValue,
|
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkPartnerHandleChosenMonReturnValue,
|
||||||
LinkPartnerHandleOneReturnValue,
|
[CONTROLLER_ONERETURNVALUE] = LinkPartnerHandleOneReturnValue,
|
||||||
LinkPartnerHandleOneReturnValue_Duplicate,
|
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkPartnerHandleOneReturnValue_Duplicate,
|
||||||
LinkPartnerHandleCmd37,
|
[CONTROLLER_CLEARUNKVAR] = LinkPartnerHandleClearUnkVar,
|
||||||
LinkPartnerHandleCmd38,
|
[CONTROLLER_SETUNKVAR] = LinkPartnerHandleSetUnkVar,
|
||||||
LinkPartnerHandleCmd39,
|
[CONTROLLER_CLEARUNKFLAG] = LinkPartnerHandleClearUnkFlag,
|
||||||
LinkPartnerHandleCmd40,
|
[CONTROLLER_TOGGLEUNKFLAG] = LinkPartnerHandleToggleUnkFlag,
|
||||||
LinkPartnerHandleHitAnimation,
|
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
|
||||||
LinkPartnerHandleCmd42,
|
[CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
|
||||||
LinkPartnerHandlePlaySE,
|
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
|
||||||
LinkPartnerHandlePlayFanfare,
|
[CONTROLLER_PLAYFANFARE] = LinkPartnerHandlePlayFanfare,
|
||||||
LinkPartnerHandleFaintingCry,
|
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
|
||||||
LinkPartnerHandleIntroSlide,
|
[CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
|
||||||
LinkPartnerHandleIntroTrainerBallThrow,
|
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
|
||||||
LinkPartnerHandleDrawPartyStatusSummary,
|
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkPartnerHandleDrawPartyStatusSummary,
|
||||||
LinkPartnerHandleHidePartyStatusSummary,
|
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkPartnerHandleHidePartyStatusSummary,
|
||||||
LinkPartnerHandleEndBounceEffect,
|
[CONTROLLER_ENDBOUNCE] = LinkPartnerHandleEndBounceEffect,
|
||||||
LinkPartnerHandleSpriteInvisibility,
|
[CONTROLLER_SPRITEINVISIBILITY] = LinkPartnerHandleSpriteInvisibility,
|
||||||
LinkPartnerHandleBattleAnimation,
|
[CONTROLLER_BATTLEANIMATION] = LinkPartnerHandleBattleAnimation,
|
||||||
LinkPartnerHandleLinkStandbyMsg,
|
[CONTROLLER_LINKSTANDBYMSG] = LinkPartnerHandleLinkStandbyMsg,
|
||||||
LinkPartnerHandleResetActionMoveSelection,
|
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkPartnerHandleResetActionMoveSelection,
|
||||||
LinkPartnerHandleCmd55,
|
[CONTROLLER_ENDLINKBATTLE] = LinkPartnerHandleEndLinkBattle,
|
||||||
LinkPartnerCmdEnd
|
[CONTROLLER_TERMINATOR_NOP] = LinkPartnerCmdEnd
|
||||||
};
|
};
|
||||||
|
|
||||||
static void LinkPartnerDummy(void)
|
static void LinkPartnerDummy(void)
|
||||||
@@ -157,7 +157,7 @@ static void LinkPartnerBufferRunCommand(void)
|
|||||||
{
|
{
|
||||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||||
{
|
{
|
||||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkPartnerBufferCommands))
|
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
|
||||||
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||||
else
|
else
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
@@ -174,7 +174,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
|||||||
{
|
{
|
||||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||||
{
|
{
|
||||||
BattleGfxSfxDummy3(0);
|
BattleGfxSfxDummy3(MALE);
|
||||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
@@ -183,7 +183,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
|||||||
|
|
||||||
static void Intro_DelayAndEnd(void)
|
static void Intro_DelayAndEnd(void)
|
||||||
{
|
{
|
||||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
@@ -192,21 +192,23 @@ static void Intro_DelayAndEnd(void)
|
|||||||
|
|
||||||
static void Intro_WaitForHealthbox(void)
|
static void Intro_WaitForHealthbox(void)
|
||||||
{
|
{
|
||||||
bool32 var = FALSE;
|
bool32 finished = FALSE;
|
||||||
|
|
||||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||||
{
|
{
|
||||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||||
var = TRUE;
|
finished = TRUE;
|
||||||
}
|
}
|
||||||
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
|
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
|
||||||
{
|
{
|
||||||
var = TRUE;
|
finished = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsCryPlayingOrClearCrySongs())
|
if (IsCryPlayingOrClearCrySongs())
|
||||||
var = FALSE;
|
finished = FALSE;
|
||||||
if (var)
|
|
||||||
|
if (finished)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
|
gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
|
||||||
@@ -216,29 +218,33 @@ static void Intro_WaitForHealthbox(void)
|
|||||||
static void Intro_ShowHealthbox(void)
|
static void Intro_ShowHealthbox(void)
|
||||||
{
|
{
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
||||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
|
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
|
||||||
|
&& ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
|
||||||
{
|
{
|
||||||
if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||||
|
|
||||||
|
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
|
||||||
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
|
||||||
{
|
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
|
||||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
|
|
||||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
|
|
||||||
HEALTHBOX_ALL);
|
|
||||||
StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
|
|
||||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
|
|
||||||
}
|
|
||||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
|
|
||||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
|
|
||||||
HEALTHBOX_ALL);
|
HEALTHBOX_ALL);
|
||||||
StartHealthboxSlideIn(gActiveBattler);
|
|
||||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
|
||||||
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
|
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
||||||
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
|
||||||
|
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||||
|
HEALTHBOX_ALL);
|
||||||
|
StartHealthboxSlideIn(gActiveBattler);
|
||||||
|
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||||
|
|
||||||
|
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
|
||||||
|
|
||||||
|
gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,6 +259,7 @@ static void CompleteOnHealthbarDone(void)
|
|||||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||||
|
|
||||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||||
|
|
||||||
if (hpValue != -1)
|
if (hpValue != -1)
|
||||||
{
|
{
|
||||||
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
||||||
@@ -288,7 +295,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
|||||||
|
|
||||||
static void CompleteOnInactiveTextPrinter(void)
|
static void CompleteOnInactiveTextPrinter(void)
|
||||||
{
|
{
|
||||||
if (!IsTextPrinterActive(0))
|
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,9 +312,9 @@ static void DoHitAnimBlinkSpriteEffect(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(gSprites[spriteId].data[1] % 4))
|
if ((gSprites[spriteId].data[1] % 4) == 0)
|
||||||
gSprites[spriteId].invisible ^= 1;
|
gSprites[spriteId].invisible ^= 1;
|
||||||
++gSprites[spriteId].data[1];
|
gSprites[spriteId].data[1]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,6 +324,7 @@ static void SwitchIn_ShowSubstitute(void)
|
|||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
|
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -324,17 +332,21 @@ static void SwitchIn_ShowSubstitute(void)
|
|||||||
static void SwitchIn_WaitAndEnd(void)
|
static void SwitchIn_WaitAndEnd(void)
|
||||||
{
|
{
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
|
{
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SwitchIn_ShowHealthbox(void)
|
static void SwitchIn_ShowHealthbox(void)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
|
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
|
|
||||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||||
@@ -349,8 +361,11 @@ static void SwitchIn_ShowHealthbox(void)
|
|||||||
static void SwitchIn_TryShinyAnim(void)
|
static void SwitchIn_TryShinyAnim(void)
|
||||||
{
|
{
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
||||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||||
|
{
|
||||||
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
|
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||||
|
}
|
||||||
|
|
||||||
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||||
{
|
{
|
||||||
@@ -394,21 +409,21 @@ static void LinkPartnerHandleGetMonData(void)
|
|||||||
u8 monToCheck;
|
u8 monToCheck;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
if (!gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||||
{
|
{
|
||||||
size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||||
for (i = 0; i < PARTY_SIZE; ++i)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
if (monToCheck & 1)
|
if (monToCheck & 1)
|
||||||
size += CopyLinkPartnerMonData(i, monData + size);
|
size += CopyLinkPartnerMonData(i, monData + size);
|
||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,7 +442,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
|||||||
case REQUEST_ALL_BATTLE:
|
case REQUEST_ALL_BATTLE:
|
||||||
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
|
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
|
||||||
battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM);
|
battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM);
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
{
|
{
|
||||||
battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
||||||
battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||||
@@ -458,7 +473,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
|||||||
StringCopy_Nickname(battleMon.nickname, nickname);
|
StringCopy_Nickname(battleMon.nickname, nickname);
|
||||||
GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
||||||
src = (u8 *)&battleMon;
|
src = (u8 *)&battleMon;
|
||||||
for (size = 0; size < sizeof(battleMon); ++size)
|
for (size = 0; size < sizeof(battleMon); size++)
|
||||||
dst[size] = src[size];
|
dst[size] = src[size];
|
||||||
break;
|
break;
|
||||||
case REQUEST_SPECIES_BATTLE:
|
case REQUEST_SPECIES_BATTLE:
|
||||||
@@ -474,14 +489,14 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
|||||||
size = 2;
|
size = 2;
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVES_PP_BATTLE:
|
case REQUEST_MOVES_PP_BATTLE:
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
{
|
{
|
||||||
moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
||||||
moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||||
}
|
}
|
||||||
moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
||||||
src = (u8 *)(&moveData);
|
src = (u8 *)(&moveData);
|
||||||
for (size = 0; size < sizeof(moveData); ++size)
|
for (size = 0; size < sizeof(moveData); size++)
|
||||||
dst[size] = src[size];
|
dst[size] = src[size];
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVE1_BATTLE:
|
case REQUEST_MOVE1_BATTLE:
|
||||||
@@ -494,10 +509,10 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
|||||||
size = 2;
|
size = 2;
|
||||||
break;
|
break;
|
||||||
case REQUEST_PP_DATA_BATTLE:
|
case REQUEST_PP_DATA_BATTLE:
|
||||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||||
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||||
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
||||||
++size;
|
size++;
|
||||||
break;
|
break;
|
||||||
case REQUEST_PPMOVE1_BATTLE:
|
case REQUEST_PPMOVE1_BATTLE:
|
||||||
case REQUEST_PPMOVE2_BATTLE:
|
case REQUEST_PPMOVE2_BATTLE:
|
||||||
@@ -714,6 +729,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
|||||||
size = 1;
|
size = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -727,14 +743,14 @@ static void LinkPartnerHandleSetMonData(void)
|
|||||||
u8 monToCheck;
|
u8 monToCheck;
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
if (!gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||||
{
|
{
|
||||||
SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
|
SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||||
for (i = 0; i < PARTY_SIZE; ++i)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
if (monToCheck & 1)
|
if (monToCheck & 1)
|
||||||
SetLinkPartnerMonData(i);
|
SetLinkPartnerMonData(i);
|
||||||
@@ -758,7 +774,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
|||||||
|
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
||||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||||
{
|
{
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
||||||
@@ -797,7 +813,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
|||||||
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
||||||
break;
|
break;
|
||||||
case REQUEST_MOVES_PP_BATTLE:
|
case REQUEST_MOVES_PP_BATTLE:
|
||||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||||
{
|
{
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
||||||
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
||||||
@@ -958,6 +974,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
|||||||
SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
|
SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -966,8 +983,9 @@ static void LinkPartnerHandleSetRawMonData(void)
|
|||||||
u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||||
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
||||||
|
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -978,11 +996,12 @@ static void LinkPartnerHandleLoadMonSprite(void)
|
|||||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||||
|
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||||
@@ -1007,23 +1026,29 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
|||||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
|
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
|
|
||||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
||||||
|
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
||||||
|
|
||||||
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
|
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleReturnMonToBall(void)
|
static void LinkPartnerHandleReturnMonToBall(void)
|
||||||
{
|
{
|
||||||
if (!gBattleBufferA[gActiveBattler][1])
|
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||||
@@ -1044,6 +1069,7 @@ static void DoSwitchOutAnimation(void)
|
|||||||
case 0:
|
case 0:
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
@@ -1057,6 +1083,8 @@ static void DoSwitchOutAnimation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define sSpeedX data[0]
|
||||||
|
|
||||||
static void LinkPartnerHandleDrawTrainerPic(void)
|
static void LinkPartnerHandleDrawTrainerPic(void)
|
||||||
{
|
{
|
||||||
s16 xPos;
|
s16 xPos;
|
||||||
@@ -1066,22 +1094,32 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
|||||||
xPos = 90;
|
xPos = 90;
|
||||||
else // First mon, on the left.
|
else // First mon, on the left.
|
||||||
xPos = 32;
|
xPos = 32;
|
||||||
|
|
||||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
{
|
||||||
|
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
{
|
||||||
|
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||||
|
}
|
||||||
|
|
||||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef sSpeedX
|
||||||
|
|
||||||
static void LinkPartnerHandleTrainerSlide(void)
|
static void LinkPartnerHandleTrainerSlide(void)
|
||||||
{
|
{
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
@@ -1098,13 +1136,16 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
|||||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define sSpeedX data[1]
|
||||||
|
#define sSpeedY data[2]
|
||||||
|
|
||||||
static void LinkPartnerHandleFaintAnimation(void)
|
static void LinkPartnerHandleFaintAnimation(void)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1113,14 +1154,17 @@ static void LinkPartnerHandleFaintAnimation(void)
|
|||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
|
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 0;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedY = 5;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
|
gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef sSpeedX
|
||||||
|
#undef sSpeedY
|
||||||
|
|
||||||
static void LinkPartnerHandlePaletteFade(void)
|
static void LinkPartnerHandlePaletteFade(void)
|
||||||
{
|
{
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
@@ -1175,7 +1219,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
@@ -1185,7 +1229,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(0);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
DoMoveAnim(move);
|
DoMoveAnim(move);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
}
|
}
|
||||||
@@ -1194,7 +1238,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
|||||||
gAnimScriptCallback();
|
gAnimScriptCallback();
|
||||||
if (!gAnimScriptActive)
|
if (!gAnimScriptActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(1);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||||
{
|
{
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
@@ -1271,6 +1315,7 @@ static void LinkPartnerHandleHealthBarUpdate(void)
|
|||||||
|
|
||||||
LoadBattleBarGfx(0);
|
LoadBattleBarGfx(0);
|
||||||
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||||
|
|
||||||
if (hpVal != INSTANT_HP_BAR_DROP)
|
if (hpVal != INSTANT_HP_BAR_DROP)
|
||||||
{
|
{
|
||||||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||||
@@ -1284,6 +1329,7 @@ static void LinkPartnerHandleHealthBarUpdate(void)
|
|||||||
|
|
||||||
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1360,27 +1406,27 @@ static void LinkPartnerHandleOneReturnValue_Duplicate(void)
|
|||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd37(void)
|
static void LinkPartnerHandleClearUnkVar(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = 0;
|
gUnusedControllerStruct.unk = 0;
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd38(void)
|
static void LinkPartnerHandleSetUnkVar(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd39(void)
|
static void LinkPartnerHandleClearUnkFlag(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 = 0;
|
gUnusedControllerStruct.flag = 0;
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd40(void)
|
static void LinkPartnerHandleToggleUnkFlag(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 ^= 1;
|
gUnusedControllerStruct.flag ^= 1;
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1399,7 +1445,7 @@ static void LinkPartnerHandleHitAnimation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd42(void)
|
static void LinkPartnerHandleCantSwitch(void)
|
||||||
{
|
{
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
@@ -1412,6 +1458,7 @@ static void LinkPartnerHandlePlaySE(void)
|
|||||||
pan = SOUND_PAN_ATTACKER;
|
pan = SOUND_PAN_ATTACKER;
|
||||||
else
|
else
|
||||||
pan = SOUND_PAN_TARGET;
|
pan = SOUND_PAN_TARGET;
|
||||||
|
|
||||||
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
@@ -1444,26 +1491,38 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
|||||||
u32 trainerPicId;
|
u32 trainerPicId;
|
||||||
|
|
||||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||||
|
|
||||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||||
|
|
||||||
paletteNum = AllocSpritePalette(0xD6F9);
|
paletteNum = AllocSpritePalette(0xD6F9);
|
||||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
{
|
||||||
|
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
{
|
||||||
|
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||||
|
}
|
||||||
|
|
||||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
|
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
|
||||||
|
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||||
|
|
||||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||||
gTasks[taskId].data[0] = gActiveBattler;
|
gTasks[taskId].data[0] = gActiveBattler;
|
||||||
|
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||||
|
|
||||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDummy;
|
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDummy;
|
||||||
}
|
}
|
||||||
@@ -1472,7 +1531,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
|||||||
{
|
{
|
||||||
if (gTasks[taskId].data[1] < 24)
|
if (gTasks[taskId].data[1] < 24)
|
||||||
{
|
{
|
||||||
++gTasks[taskId].data[1];
|
gTasks[taskId].data[1]++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1502,7 +1561,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
|||||||
|
|
||||||
static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||||
{
|
{
|
||||||
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
@@ -1512,7 +1571,7 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
|||||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||||
|
|
||||||
if (gBattleBufferA[gActiveBattler][2]) // Skip delay on battle start
|
if (gBattleBufferA[gActiveBattler][2] != 0) // Skip delay on battle start
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
|
||||||
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
||||||
@@ -1574,7 +1633,7 @@ static void LinkPartnerHandleResetActionMoveSelection(void)
|
|||||||
LinkPartnerBufferExecCompleted();
|
LinkPartnerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandleCmd55(void)
|
static void LinkPartnerHandleEndLinkBattle(void)
|
||||||
{
|
{
|
||||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||||
FadeOutMapMusic(5);
|
FadeOutMapMusic(5);
|
||||||
|
|||||||
@@ -441,10 +441,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
|||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||||
@@ -986,7 +986,7 @@ static void OakOldManHandleGetMonData(void)
|
|||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
OakOldManBufferExecCompleted();
|
OakOldManBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1574,24 +1574,24 @@ static void OakOldManHandleDrawTrainerPic(void)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
}
|
}
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||||
@@ -1601,20 +1601,20 @@ static void OakOldManHandleTrainerSlide(void)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
}
|
}
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
@@ -2086,14 +2086,14 @@ static void OakOldManHandleIntroTrainerBallThrow(void)
|
|||||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||||
paletteNum = AllocSpritePalette(0xD6F8);
|
paletteNum = AllocSpritePalette(0xD6F8);
|
||||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
|
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||||
gTasks[taskId].data[0] = gActiveBattler;
|
gTasks[taskId].data[0] = gActiveBattler;
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2113,7 +2113,7 @@ static void StartSendOutAnim(u8 battlerId)
|
|||||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
|||||||
|
|
||||||
static void Intro_DelayAndEnd(void)
|
static void Intro_DelayAndEnd(void)
|
||||||
{
|
{
|
||||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
@@ -225,10 +225,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
|||||||
var = FALSE;
|
var = FALSE;
|
||||||
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||||
@@ -281,8 +281,8 @@ static void TryShinyAnimAfterMonAnim(void)
|
|||||||
}
|
}
|
||||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
@@ -382,8 +382,8 @@ static void SwitchIn_ShowHealthbox(void)
|
|||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||||
@@ -447,7 +447,7 @@ static void OpponentHandleGetMonData(void)
|
|||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,7 +765,7 @@ static void OpponentHandleGetRawMonData(void)
|
|||||||
|
|
||||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||||
dst[i] = src[i];
|
dst[i] = src[i];
|
||||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1026,8 +1026,8 @@ static void OpponentHandleLoadMonSprite(void)
|
|||||||
{
|
{
|
||||||
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||||
y = GetGhostSpriteDefault_Y(gActiveBattler);
|
y = GetGhostSpriteDefault_Y(gActiveBattler);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = TRUE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1036,10 +1036,10 @@ static void OpponentHandleLoadMonSprite(void)
|
|||||||
}
|
}
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||||
y,
|
y,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
@@ -1068,7 +1068,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
|||||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||||
@@ -1122,7 +1122,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
|||||||
{
|
{
|
||||||
u32 trainerPicId;
|
u32 trainerPicId;
|
||||||
|
|
||||||
if (gTrainerBattleOpponent_A == 0x400)
|
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||||
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
||||||
@@ -1138,7 +1138,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
|||||||
176,
|
176,
|
||||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||||
@@ -1152,7 +1152,7 @@ static void OpponentHandleTrainerSlide(void)
|
|||||||
{
|
{
|
||||||
u32 trainerPicId;
|
u32 trainerPicId;
|
||||||
|
|
||||||
if (gTrainerBattleOpponent_A == 0x400)
|
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||||
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
||||||
@@ -1274,7 +1274,7 @@ static void OpponentDoMoveAnimation(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(0);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
DoMoveAnim(move);
|
DoMoveAnim(move);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
}
|
}
|
||||||
@@ -1283,7 +1283,7 @@ static void OpponentDoMoveAnimation(void)
|
|||||||
gAnimScriptCallback();
|
gAnimScriptCallback();
|
||||||
if (!gAnimScriptActive)
|
if (!gAnimScriptActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(1);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||||
{
|
{
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
@@ -1548,25 +1548,25 @@ static void OpponentHandleOneReturnValue_Duplicate(void)
|
|||||||
|
|
||||||
static void OpponentHandleCmd37(void)
|
static void OpponentHandleCmd37(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = 0;
|
gUnusedControllerStruct.unk = 0;
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OpponentHandleCmd38(void)
|
static void OpponentHandleCmd38(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OpponentHandleCmd39(void)
|
static void OpponentHandleCmd39(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 = 0;
|
gUnusedControllerStruct.flag = 0;
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OpponentHandleCmd40(void)
|
static void OpponentHandleCmd40(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 ^= 1;
|
gUnusedControllerStruct.flag ^= 1;
|
||||||
OpponentBufferExecCompleted();
|
OpponentBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1682,7 +1682,7 @@ static void OpponentHandleDrawPartyStatusSummary(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||||
if (gBattleBufferA[gActiveBattler][2])
|
if (gBattleBufferA[gActiveBattler][2])
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ static const u8 sTargetIdentities[] = { B_POSITION_PLAYER_LEFT, B_POSITION_PLAYE
|
|||||||
// not used
|
// not used
|
||||||
static const u8 gUnknown_8250984[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
static const u8 gUnknown_8250984[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
||||||
|
|
||||||
void PlayerDummy(void)
|
void BattleControllerDummy(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -863,7 +863,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
|||||||
|
|
||||||
static void Intro_DelayAndEnd(void)
|
static void Intro_DelayAndEnd(void)
|
||||||
{
|
{
|
||||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
@@ -890,10 +890,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
|||||||
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||||
@@ -941,8 +941,8 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
|||||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
@@ -1505,7 +1505,7 @@ static void PlayerHandleGetMonData(void)
|
|||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1824,7 +1824,7 @@ void PlayerHandleGetRawMonData(void)
|
|||||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||||
dst[i] = src[i];
|
dst[i] = src[i];
|
||||||
|
|
||||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2105,7 +2105,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
|||||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||||
@@ -2176,13 +2176,13 @@ static void PlayerHandleDrawTrainerPic(void)
|
|||||||
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
||||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE
|
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE
|
||||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD)
|
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD)
|
||||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RS_BRENDAN;
|
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||||
else
|
else
|
||||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
|
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trainerPicId = gSaveBlock2Ptr->playerGender + BACK_PIC_RED;
|
trainerPicId = gSaveBlock2Ptr->playerGender;
|
||||||
}
|
}
|
||||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||||
@@ -2191,7 +2191,7 @@ static void PlayerHandleDrawTrainerPic(void)
|
|||||||
(8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||||
@@ -2339,7 +2339,7 @@ static void PlayerDoMoveAnimation(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(0);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
DoMoveAnim(move);
|
DoMoveAnim(move);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
}
|
}
|
||||||
@@ -2348,7 +2348,7 @@ static void PlayerDoMoveAnimation(void)
|
|||||||
gAnimScriptCallback();
|
gAnimScriptCallback();
|
||||||
if (!gAnimScriptActive)
|
if (!gAnimScriptActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(1);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||||
{
|
{
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
@@ -2523,7 +2523,7 @@ static void PlayerHandleExpUpdate(void)
|
|||||||
gTasks[taskId].tExpTask_monId = monId;
|
gTasks[taskId].tExpTask_monId = monId;
|
||||||
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
|
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
|
||||||
gTasks[taskId].tExpTask_battler = gActiveBattler;
|
gTasks[taskId].tExpTask_battler = gActiveBattler;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2626,25 +2626,25 @@ static void PlayerHandleOneReturnValue_Duplicate(void)
|
|||||||
|
|
||||||
static void PlayerHandleCmd37(void)
|
static void PlayerHandleCmd37(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = 0;
|
gUnusedControllerStruct.unk = 0;
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayerHandleCmd38(void)
|
static void PlayerHandleCmd38(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayerHandleCmd39(void)
|
static void PlayerHandleCmd39(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 = 0;
|
gUnusedControllerStruct.flag = 0;
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayerHandleCmd40(void)
|
static void PlayerHandleCmd40(void)
|
||||||
{
|
{
|
||||||
gUnknown_2022870.flag_x80 ^= 1;
|
gUnusedControllerStruct.flag ^= 1;
|
||||||
PlayerBufferExecCompleted();
|
PlayerBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2720,7 +2720,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
|
|||||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
|
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
|
||||||
@@ -2774,7 +2774,7 @@ static void PlayerHandleDrawPartyStatusSummary(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||||
|
|||||||
@@ -238,8 +238,8 @@ static void CompleteOnBattlerSpritePosX_0(void)
|
|||||||
}
|
}
|
||||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
PokedudeBufferExecCompleted();
|
PokedudeBufferExecCompleted();
|
||||||
@@ -278,8 +278,8 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
|||||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
@@ -422,10 +422,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
|||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||||
{
|
{
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||||
@@ -729,7 +729,7 @@ static void PokedudeHandleGetMonData(void)
|
|||||||
monToCheck >>= 1;
|
monToCheck >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BtlController_EmitDataTransfer(1, size, monData);
|
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||||
PokedudeBufferExecCompleted();
|
PokedudeBufferExecCompleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1306,10 +1306,10 @@ static void PokedudeHandleLoadMonSprite(void)
|
|||||||
y = GetBattlerSpriteDefault_Y(gActiveBattler);
|
y = GetBattlerSpriteDefault_Y(gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||||
y,
|
y,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
@@ -1350,13 +1350,13 @@ static void PokedudeHandleDrawTrainerPic(void)
|
|||||||
{
|
{
|
||||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
@@ -1370,7 +1370,7 @@ static void PokedudeHandleDrawTrainerPic(void)
|
|||||||
176,
|
176,
|
||||||
(8 - gTrainerFrontPicCoords[tranerPicid].size) * 4 + 40,
|
(8 - gTrainerFrontPicCoords[tranerPicid].size) * 4 + 40,
|
||||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[tranerPicid].tag);
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[tranerPicid].tag);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||||
@@ -1383,11 +1383,11 @@ static void PokedudeHandleDrawTrainerPic(void)
|
|||||||
|
|
||||||
static void PokedudeHandleTrainerSlide(void)
|
static void PokedudeHandleTrainerSlide(void)
|
||||||
{
|
{
|
||||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
80,
|
80,
|
||||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
||||||
@@ -1496,7 +1496,7 @@ static void PokedudeDoMoveAnimation(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(0);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
DoMoveAnim(move);
|
DoMoveAnim(move);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
}
|
}
|
||||||
@@ -1505,7 +1505,7 @@ static void PokedudeDoMoveAnimation(void)
|
|||||||
gAnimScriptCallback();
|
gAnimScriptCallback();
|
||||||
if (!gAnimScriptActive)
|
if (!gAnimScriptActive)
|
||||||
{
|
{
|
||||||
SetBattlerSpriteAffineMode(1);
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
||||||
@@ -1858,7 +1858,7 @@ static void PokedudeHandleIntroTrainerBallThrow(void)
|
|||||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||||
paletteNum = AllocSpritePalette(0xD6F8);
|
paletteNum = AllocSpritePalette(0xD6F8);
|
||||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_POKEDUDE].data, 0x100 + paletteNum * 16, 32);
|
LoadCompressedPalette(gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_POKEDUDE].data, 0x100 + paletteNum * 16, 32);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||||
gTasks[taskId].data[0] = gActiveBattler;
|
gTasks[taskId].data[0] = gActiveBattler;
|
||||||
@@ -1878,7 +1878,7 @@ static void StartSendOutAnim(u8 battlerId)
|
|||||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||||
GetBattlerSpriteCoord(battlerId, 2),
|
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||||
GetBattlerSpriteDefault_Y(battlerId),
|
GetBattlerSpriteDefault_Y(battlerId),
|
||||||
GetBattlerSpriteSubpriority(battlerId));
|
GetBattlerSpriteSubpriority(battlerId));
|
||||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ static void SafariHandleDrawTrainerPic(void)
|
|||||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||||
30);
|
30);
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||||
|
|||||||
+159
-117
@@ -1,25 +1,22 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "battle.h"
|
#include "battle.h"
|
||||||
#include "battle_main.h"
|
|
||||||
#include "battle_ai_script_commands.h"
|
#include "battle_ai_script_commands.h"
|
||||||
#include "battle_anim.h"
|
#include "battle_anim.h"
|
||||||
#include "battle_util.h"
|
|
||||||
#include "battle_controllers.h"
|
#include "battle_controllers.h"
|
||||||
#include "battle_message.h"
|
#include "battle_message.h"
|
||||||
|
#include "cable_club.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
#include "link_rfu.h"
|
#include "link_rfu.h"
|
||||||
#include "cable_club.h"
|
|
||||||
#include "party_menu.h"
|
#include "party_menu.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "constants/abilities.h"
|
#include "constants/abilities.h"
|
||||||
#include "constants/battle.h"
|
|
||||||
|
|
||||||
static EWRAM_DATA u8 sLinkSendTaskId = 0;
|
static EWRAM_DATA u8 sLinkSendTaskId = 0;
|
||||||
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
||||||
static EWRAM_DATA u8 gUnknown_202286E = 0;
|
static EWRAM_DATA u8 sUnused = 0; // Debug? Never read
|
||||||
EWRAM_DATA struct UnusedControllerStruct gUnknown_2022870 = {0};
|
EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read
|
||||||
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {0};
|
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
|
||||||
|
|
||||||
static void CreateTasksForSendRecvLinkBuffers(void);
|
static void CreateTasksForSendRecvLinkBuffers(void);
|
||||||
static void InitLinkBtlControllers(void);
|
static void InitLinkBtlControllers(void);
|
||||||
@@ -45,24 +42,28 @@ void SetUpBattleVars(void)
|
|||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
gBattleMainFunc = BattleDummy;
|
gBattleMainFunc = BeginBattleIntroDummy;
|
||||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
|
||||||
|
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||||
{
|
{
|
||||||
gBattlerControllerFuncs[i] = PlayerDummy;
|
gBattlerControllerFuncs[i] = BattleControllerDummy;
|
||||||
gBattlerPositions[i] = 0xFF;
|
gBattlerPositions[i] = 0xFF;
|
||||||
gActionSelectionCursor[i] = 0;
|
gActionSelectionCursor[i] = 0;
|
||||||
gMoveSelectionCursor[i] = 0;
|
gMoveSelectionCursor[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleLinkBattleSetup();
|
HandleLinkBattleSetup();
|
||||||
gBattleControllerExecFlags = 0;
|
gBattleControllerExecFlags = 0;
|
||||||
ClearBattleAnimationVars();
|
ClearBattleAnimationVars();
|
||||||
ClearBattleMonForms();
|
ClearBattleMonForms();
|
||||||
BattleAI_HandleItemUseBeforeAISetup();
|
BattleAI_HandleItemUseBeforeAISetup();
|
||||||
gUnknown_2022B54 = 0;
|
|
||||||
gUnknown_2023DDC = 0;
|
// Below are never read
|
||||||
|
gUnusedFirstBattleVar1 = 0;
|
||||||
|
gUnusedFirstBattleVar2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitBtlControllers(void)
|
void InitBattleControllers(void)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
@@ -70,10 +71,14 @@ void InitBtlControllers(void)
|
|||||||
InitLinkBtlControllers();
|
InitLinkBtlControllers();
|
||||||
else
|
else
|
||||||
InitSinglePlayerBtlControllers();
|
InitSinglePlayerBtlControllers();
|
||||||
|
|
||||||
SetBattlePartyIds();
|
SetBattlePartyIds();
|
||||||
|
|
||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||||
for (i = 0; i < gBattlersCount; ++i)
|
{
|
||||||
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
BufferBattlePartyCurrentOrderBySide(i, 0);
|
BufferBattlePartyCurrentOrderBySide(i, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void InitSinglePlayerBtlControllers(void)
|
static void InitSinglePlayerBtlControllers(void)
|
||||||
@@ -143,55 +148,71 @@ static void InitLinkBtlControllers(void)
|
|||||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||||
{
|
{
|
||||||
gBattleMainFunc = BeginBattleIntro;
|
gBattleMainFunc = BeginBattleIntro;
|
||||||
|
|
||||||
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
||||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||||
|
|
||||||
gBattlersCount = 2;
|
gBattlersCount = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
||||||
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
||||||
|
|
||||||
gBattlersCount = 2;
|
gBattlersCount = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||||
{
|
{
|
||||||
gBattleMainFunc = BeginBattleIntro;
|
gBattleMainFunc = BeginBattleIntro;
|
||||||
|
|
||||||
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
||||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[2] = SetControllerToPlayer;
|
gBattlerControllerFuncs[2] = SetControllerToPlayer;
|
||||||
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
|
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
|
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
|
||||||
|
|
||||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
||||||
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[3] = SetControllerToPlayer;
|
gBattlerControllerFuncs[3] = SetControllerToPlayer;
|
||||||
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
|
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
|
||||||
|
|
||||||
gBattlerControllerFuncs[2] = SetControllerToLinkOpponent;
|
gBattlerControllerFuncs[2] = SetControllerToLinkOpponent;
|
||||||
gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
|
gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
|
||||||
|
|
||||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
multiplayerId = GetMultiplayerId();
|
multiplayerId = GetMultiplayerId();
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||||
gBattleMainFunc = BeginBattleIntro;
|
gBattleMainFunc = BeginBattleIntro;
|
||||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
|
||||||
|
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||||
{
|
{
|
||||||
switch (gLinkPlayers[i].id)
|
switch (gLinkPlayers[i].id)
|
||||||
{
|
{
|
||||||
@@ -204,6 +225,7 @@ static void InitLinkBtlControllers(void)
|
|||||||
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
|
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == multiplayerId)
|
if (i == multiplayerId)
|
||||||
{
|
{
|
||||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToPlayer;
|
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToPlayer;
|
||||||
@@ -223,7 +245,8 @@ static void InitLinkBtlControllers(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1)) || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
|
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1))
|
||||||
|
|| ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
|
||||||
{
|
{
|
||||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToLinkPartner;
|
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToLinkPartner;
|
||||||
switch (gLinkPlayers[i].id)
|
switch (gLinkPlayers[i].id)
|
||||||
@@ -259,6 +282,7 @@ static void InitLinkBtlControllers(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,7 +293,7 @@ static void SetBattlePartyIds(void)
|
|||||||
|
|
||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||||
{
|
{
|
||||||
for (i = 0; i < gBattlersCount; ++i)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
{
|
{
|
||||||
for (j = 0; j < PARTY_SIZE; ++j)
|
for (j = 0; j < PARTY_SIZE; ++j)
|
||||||
{
|
{
|
||||||
@@ -342,12 +366,12 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
|
|||||||
{
|
{
|
||||||
switch (bufferId)
|
switch (bufferId)
|
||||||
{
|
{
|
||||||
case 0:
|
case BUFFER_A:
|
||||||
for (i = 0; i < size; ++data, ++i)
|
for (i = 0; i < size; data++, i++)
|
||||||
gBattleBufferA[gActiveBattler][i] = *data;
|
gBattleBufferA[gActiveBattler][i] = *data;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case BUFFER_B:
|
||||||
for (i = 0; i < size; ++data, ++i)
|
for (i = 0; i < size; data++, i++)
|
||||||
gBattleBufferB[gActiveBattler][i] = *data;
|
gBattleBufferB[gActiveBattler][i] = *data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -362,12 +386,14 @@ static void CreateTasksForSendRecvLinkBuffers(void)
|
|||||||
gTasks[sLinkSendTaskId].data[13] = 0;
|
gTasks[sLinkSendTaskId].data[13] = 0;
|
||||||
gTasks[sLinkSendTaskId].data[14] = 0;
|
gTasks[sLinkSendTaskId].data[14] = 0;
|
||||||
gTasks[sLinkSendTaskId].data[15] = 0;
|
gTasks[sLinkSendTaskId].data[15] = 0;
|
||||||
|
|
||||||
sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
|
sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
|
||||||
gTasks[sLinkReceiveTaskId].data[12] = 0;
|
gTasks[sLinkReceiveTaskId].data[12] = 0;
|
||||||
gTasks[sLinkReceiveTaskId].data[13] = 0;
|
gTasks[sLinkReceiveTaskId].data[13] = 0;
|
||||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||||
gTasks[sLinkReceiveTaskId].data[15] = 0;
|
gTasks[sLinkReceiveTaskId].data[15] = 0;
|
||||||
gUnknown_202286E = 0;
|
|
||||||
|
sUnused = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -380,12 +406,13 @@ enum
|
|||||||
LINK_BUFF_SIZE_HI,
|
LINK_BUFF_SIZE_HI,
|
||||||
LINK_BUFF_ABSENT_BATTLER_FLAGS,
|
LINK_BUFF_ABSENT_BATTLER_FLAGS,
|
||||||
LINK_BUFF_EFFECT_BATTLER,
|
LINK_BUFF_EFFECT_BATTLER,
|
||||||
LINK_BUFF_DATA
|
LINK_BUFF_DATA,
|
||||||
};
|
};
|
||||||
|
|
||||||
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
||||||
{
|
{
|
||||||
s32 alignedSize, i;
|
s32 alignedSize;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
alignedSize = size - size % 4 + 4;
|
alignedSize = size - size % 4 + 4;
|
||||||
if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
|
if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
|
||||||
@@ -401,8 +428,10 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
|||||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
|
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
|
||||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
|
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
|
||||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
|
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
|
||||||
for (i = 0; i < size; ++i)
|
|
||||||
|
for (i = 0; i < size; i++)
|
||||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i];
|
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i];
|
||||||
|
|
||||||
gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA;
|
gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,12 +444,13 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
gTasks[taskId].data[10] = 100;
|
gTasks[taskId].data[10] = 100;
|
||||||
++gTasks[taskId].data[11];
|
gTasks[taskId].data[11]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!--gTasks[taskId].data[10])
|
gTasks[taskId].data[10]--;
|
||||||
|
if (gTasks[taskId].data[10] == 0)
|
||||||
{
|
{
|
||||||
++gTasks[taskId].data[11];
|
gTasks[taskId].data[11]++;
|
||||||
if (gReceivedRemoteLinkPlayers)
|
if (gReceivedRemoteLinkPlayers)
|
||||||
gTasks[taskId].data[11] = 3;
|
gTasks[taskId].data[11] = 3;
|
||||||
}
|
}
|
||||||
@@ -432,18 +462,18 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
|||||||
if (IsLinkMaster())
|
if (IsLinkMaster())
|
||||||
{
|
{
|
||||||
CheckShouldAdvanceLinkState();
|
CheckShouldAdvanceLinkState();
|
||||||
++gTasks[taskId].data[11];
|
gTasks[taskId].data[11]++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++gTasks[taskId].data[11];
|
gTasks[taskId].data[11]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
|
if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
|
||||||
{
|
{
|
||||||
if (!gTasks[taskId].data[13])
|
if (gTasks[taskId].data[13] == 0)
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
|
if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
|
||||||
&& gTasks[taskId].data[15] == gTasks[taskId].data[12])
|
&& gTasks[taskId].data[15] == gTasks[taskId].data[12])
|
||||||
@@ -452,12 +482,12 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
|||||||
gTasks[taskId].data[15] = 0;
|
gTasks[taskId].data[15] = 0;
|
||||||
}
|
}
|
||||||
blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA;
|
blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA;
|
||||||
SendBlock(bitmask_all_link_players_but_self(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
|
SendBlock(BitmaskAllOtherLinkPlayers(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
|
||||||
++gTasks[taskId].data[11];
|
gTasks[taskId].data[11]++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
--gTasks[taskId].data[13];
|
gTasks[taskId].data[13]--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -472,7 +502,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (!--gTasks[taskId].data[13])
|
if (--gTasks[taskId].data[13] == 0)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[13] = 5;
|
gTasks[taskId].data[13] = 5;
|
||||||
gTasks[taskId].data[11] = 3;
|
gTasks[taskId].data[11] = 3;
|
||||||
@@ -487,10 +517,10 @@ void TryReceiveLinkBattleData(void)
|
|||||||
s32 j;
|
s32 j;
|
||||||
u8 *recvBuffer;
|
u8 *recvBuffer;
|
||||||
|
|
||||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE) && (gLinkPlayers[0].linkType == 0x2211))
|
if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE) && (gLinkPlayers[0].linkType == 0x2211))
|
||||||
{
|
{
|
||||||
LinkRfu_DestroyIdleTask();
|
LinkRfu_DestroyIdleTask();
|
||||||
for (i = 0; i < GetLinkPlayerCount(); ++i)
|
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||||
{
|
{
|
||||||
if (GetBlockReceivedStatus() & gBitTable[i])
|
if (GetBlockReceivedStatus() & gBitTable[i])
|
||||||
{
|
{
|
||||||
@@ -498,18 +528,21 @@ void TryReceiveLinkBattleData(void)
|
|||||||
recvBuffer = (u8 *)gBlockRecvBuffer[i];
|
recvBuffer = (u8 *)gBlockRecvBuffer[i];
|
||||||
{
|
{
|
||||||
u8 *dest, *src;
|
u8 *dest, *src;
|
||||||
u16 r6 = gBlockRecvBuffer[i][2];
|
u16 dataSize = gBlockRecvBuffer[i][2];
|
||||||
|
|
||||||
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
|
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + dataSize > 0x1000)
|
||||||
{
|
{
|
||||||
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
|
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
|
||||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
|
dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
|
||||||
src = recvBuffer;
|
src = recvBuffer;
|
||||||
for (j = 0; j < r6 + 8; ++j)
|
|
||||||
|
for (j = 0; j < dataSize + 8; j++)
|
||||||
dest[j] = src[j];
|
dest[j] = src[j];
|
||||||
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
|
|
||||||
|
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + dataSize + 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -532,13 +565,16 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
|
|||||||
}
|
}
|
||||||
battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER];
|
battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER];
|
||||||
blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
|
blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
|
||||||
|
|
||||||
switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
|
switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (gBattleControllerExecFlags & gBitTable[battlerId])
|
if (gBattleControllerExecFlags & gBitTable[battlerId])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
|
memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
|
||||||
MarkBattlerReceivedLinkData(battlerId);
|
MarkBattlerReceivedLinkData(battlerId);
|
||||||
|
|
||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
|
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
|
||||||
{
|
{
|
||||||
gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER];
|
gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER];
|
||||||
@@ -555,6 +591,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
|
|||||||
gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (var * 4));
|
gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (var * 4));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
|
gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -568,7 +605,7 @@ void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
|
static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
|
sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
|
||||||
@@ -585,12 +622,12 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b
|
|||||||
sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA;
|
sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA;
|
||||||
sBattleBuffersTransferData[1] = requestId;
|
sBattleBuffersTransferData[1] = requestId;
|
||||||
sBattleBuffersTransferData[2] = monToCheck;
|
sBattleBuffersTransferData[2] = monToCheck;
|
||||||
for (i = 0; i < bytes; ++i)
|
for (i = 0; i < bytes; i++)
|
||||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
|
static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
@@ -598,7 +635,7 @@ static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, voi
|
|||||||
sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA;
|
sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA;
|
||||||
sBattleBuffersTransferData[1] = monId;
|
sBattleBuffersTransferData[1] = monId;
|
||||||
sBattleBuffersTransferData[2] = bytes;
|
sBattleBuffersTransferData[2] = bytes;
|
||||||
for (i = 0; i < bytes; ++i)
|
for (i = 0; i < bytes; i++)
|
||||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3);
|
||||||
}
|
}
|
||||||
@@ -664,7 +701,7 @@ void BtlController_EmitFaintAnimation(u8 bufferId)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitPaletteFade(u8 bufferId)
|
static void BtlController_EmitPaletteFade(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
|
sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
|
||||||
@@ -674,7 +711,7 @@ static void BtlController_EmitPaletteFade(u8 bufferId)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
|
static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
|
sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
|
||||||
@@ -691,14 +728,14 @@ void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
|
static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_PAUSE;
|
sBattleBuffersTransferData[0] = CONTROLLER_PAUSE;
|
||||||
sBattleBuffersTransferData[1] = toWait;
|
sBattleBuffersTransferData[1] = toWait;
|
||||||
for (i = 0; i < toWait * 3; ++i)
|
for (i = 0; i < toWait * 3; i++)
|
||||||
sBattleBuffersTransferData[2 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[2 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
|
||||||
}
|
}
|
||||||
@@ -742,6 +779,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
|||||||
sBattleBuffersTransferData[1] = gBattleOutcome;
|
sBattleBuffersTransferData[1] = gBattleOutcome;
|
||||||
sBattleBuffersTransferData[2] = stringID;
|
sBattleBuffersTransferData[2] = stringID;
|
||||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||||
|
|
||||||
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
||||||
stringInfo->currentMove = gCurrentMove;
|
stringInfo->currentMove = gCurrentMove;
|
||||||
stringInfo->originallyUsedMove = gChosenMove;
|
stringInfo->originallyUsedMove = gChosenMove;
|
||||||
@@ -752,9 +790,10 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
|||||||
stringInfo->hpScale = gBattleStruct->hpScale;
|
stringInfo->hpScale = gBattleStruct->hpScale;
|
||||||
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
|
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
|
||||||
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
|
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
|
||||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
|
||||||
|
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||||
stringInfo->abilities[i] = gBattleMons[i].ability;
|
stringInfo->abilities[i] = gBattleMons[i].ability;
|
||||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i)
|
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
|
||||||
{
|
{
|
||||||
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
||||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||||
@@ -772,6 +811,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
|||||||
sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
|
sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
|
||||||
sBattleBuffersTransferData[2] = stringID;
|
sBattleBuffersTransferData[2] = stringID;
|
||||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||||
|
|
||||||
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
||||||
stringInfo->currentMove = gCurrentMove;
|
stringInfo->currentMove = gCurrentMove;
|
||||||
stringInfo->originallyUsedMove = gChosenMove;
|
stringInfo->originallyUsedMove = gChosenMove;
|
||||||
@@ -779,9 +819,10 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
|||||||
stringInfo->lastAbility = gLastUsedAbility;
|
stringInfo->lastAbility = gLastUsedAbility;
|
||||||
stringInfo->scrActive = gBattleScripting.battler;
|
stringInfo->scrActive = gBattleScripting.battler;
|
||||||
stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
|
stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
|
||||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
|
||||||
|
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||||
stringInfo->abilities[i] = gBattleMons[i].ability;
|
stringInfo->abilities[i] = gBattleMons[i].ability;
|
||||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i)
|
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
|
||||||
{
|
{
|
||||||
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
||||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||||
@@ -790,16 +831,17 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
|
// itemId only relevant for B_ACTION_USE_ITEM
|
||||||
|
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
|
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
|
||||||
sBattleBuffersTransferData[1] = arg1;
|
sBattleBuffersTransferData[1] = action;
|
||||||
sBattleBuffersTransferData[2] = arg2;
|
sBattleBuffersTransferData[2] = itemId;
|
||||||
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
|
sBattleBuffersTransferData[3] = (itemId & 0xFF00) >> 8;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitUnknownYesNoBox(u8 bufferId, u32 arg1) // TODO: Does the function name make sense for pokefirered?
|
static void BtlController_EmitUnknownYesNoBox(u8 bufferId, u32 arg1) // TODO: Does the function name make sense for pokefirered?
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
|
sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
|
||||||
@@ -815,35 +857,35 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN
|
|||||||
sBattleBuffersTransferData[1] = isDoubleBattle;
|
sBattleBuffersTransferData[1] = isDoubleBattle;
|
||||||
sBattleBuffersTransferData[2] = NoPpNumber;
|
sBattleBuffersTransferData[2] = NoPpNumber;
|
||||||
sBattleBuffersTransferData[3] = 0;
|
sBattleBuffersTransferData[3] = 0;
|
||||||
for (i = 0; i < sizeof(*movePpData); ++i)
|
for (i = 0; i < sizeof(*movePpData); i++)
|
||||||
sBattleBuffersTransferData[4 + i] = *((u8 *)(movePpData) + i);
|
sBattleBuffersTransferData[4 + i] = *((u8 *)(movePpData) + i);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
|
void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG;
|
sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG;
|
||||||
for (i = 0; i < 3; ++i)
|
for (i = 0; i < PARTY_SIZE / 2; i++)
|
||||||
sBattleBuffersTransferData[1 + i] = arg1[i];
|
sBattleBuffersTransferData[1 + i] = battlePartyOrder[i];
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4)
|
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
|
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
|
||||||
sBattleBuffersTransferData[1] = caseId;
|
sBattleBuffersTransferData[1] = caseId;
|
||||||
sBattleBuffersTransferData[2] = arg2;
|
sBattleBuffersTransferData[2] = slotId;
|
||||||
sBattleBuffersTransferData[3] = abilityId;
|
sBattleBuffersTransferData[3] = abilityId;
|
||||||
for (i = 0; i < 3; ++i)
|
for (i = 0; i < 3; i++)
|
||||||
sBattleBuffersTransferData[4 + i] = arg4[i];
|
sBattleBuffersTransferData[4 + i] = data[i];
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd23(u8 bufferId)
|
static void BtlController_EmitCmd23(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_23;
|
sBattleBuffersTransferData[0] = CONTROLLER_23;
|
||||||
@@ -896,7 +938,7 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
|
|||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitStatusXor(u8 bufferId, u8 b)
|
static void BtlController_EmitStatusXor(u8 bufferId, u8 b)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
|
sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
|
||||||
@@ -912,12 +954,12 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data)
|
|||||||
sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER;
|
sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER;
|
||||||
sBattleBuffersTransferData[2] = size;
|
sBattleBuffersTransferData[2] = size;
|
||||||
sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8;
|
sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8;
|
||||||
for (i = 0; i < size; ++i)
|
for (i = 0; i < size; i++)
|
||||||
sBattleBuffersTransferData[4 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[4 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
|
static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
@@ -929,7 +971,7 @@ static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, voi
|
|||||||
sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24;
|
sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24;
|
||||||
sBattleBuffersTransferData[5] = size;
|
sBattleBuffersTransferData[5] = size;
|
||||||
sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8;
|
sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8;
|
||||||
for (i = 0; i < size; ++i)
|
for (i = 0; i < size; i++)
|
||||||
sBattleBuffersTransferData[7 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[7 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
|
||||||
}
|
}
|
||||||
@@ -945,12 +987,12 @@ static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
|
|||||||
|
|
||||||
// Nonsense loop using songId as a size
|
// Nonsense loop using songId as a size
|
||||||
// Would go out of bounds for any song id after SE_DEOXYS_MOVE (253)
|
// Would go out of bounds for any song id after SE_DEOXYS_MOVE (253)
|
||||||
for (i = 0; i < songId; ++i)
|
for (i = 0; i < songId; i++)
|
||||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
|
static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
@@ -958,84 +1000,84 @@ static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
|
|||||||
sBattleBuffersTransferData[0] = CONTROLLER_32;
|
sBattleBuffersTransferData[0] = CONTROLLER_32;
|
||||||
sBattleBuffersTransferData[1] = size;
|
sBattleBuffersTransferData[1] = size;
|
||||||
sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8;
|
sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8;
|
||||||
for (i = 0; i < size; ++i)
|
for (i = 0; i < size; i++)
|
||||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
|
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
|
sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
|
||||||
sBattleBuffersTransferData[1] = arg1;
|
sBattleBuffersTransferData[1] = ret8;
|
||||||
sBattleBuffersTransferData[2] = arg2;
|
sBattleBuffersTransferData[2] = ret16;
|
||||||
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
|
sBattleBuffersTransferData[3] = (ret16 & 0xFF00) >> 8;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
|
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
|
sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
|
||||||
sBattleBuffersTransferData[1] = b;
|
sBattleBuffersTransferData[1] = partyId;
|
||||||
for (i = 0; i < 3; ++i)
|
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
|
||||||
sBattleBuffersTransferData[2 + i] = c[i];
|
sBattleBuffersTransferData[2 + i] = battlePartyOrder[i];
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1)
|
void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
|
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
|
||||||
sBattleBuffersTransferData[1] = arg1;
|
sBattleBuffersTransferData[1] = ret;
|
||||||
sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8;
|
sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8;
|
||||||
sBattleBuffersTransferData[3] = 0;
|
sBattleBuffersTransferData[3] = 0;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
|
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
|
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
|
||||||
sBattleBuffersTransferData[1] = b;
|
sBattleBuffersTransferData[1] = ret;
|
||||||
sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
|
sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8;
|
||||||
sBattleBuffersTransferData[3] = 0;
|
sBattleBuffersTransferData[3] = 0;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd37(u8 bufferId)
|
static void BtlController_EmitClearUnkVar(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_37;
|
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKVAR;
|
||||||
sBattleBuffersTransferData[1] = CONTROLLER_37;
|
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKVAR;
|
||||||
sBattleBuffersTransferData[2] = CONTROLLER_37;
|
sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKVAR;
|
||||||
sBattleBuffersTransferData[3] = CONTROLLER_37;
|
sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKVAR;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd38(u8 bufferId, u8 b)
|
static void BtlController_EmitSetUnkVar(u8 bufferId, u8 b)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_38;
|
sBattleBuffersTransferData[0] = CONTROLLER_SETUNKVAR;
|
||||||
sBattleBuffersTransferData[1] = b;
|
sBattleBuffersTransferData[1] = b;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd39(u8 bufferId)
|
static void BtlController_EmitClearUnkFlag(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_39;
|
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKFLAG;
|
||||||
sBattleBuffersTransferData[1] = CONTROLLER_39;
|
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKFLAG;
|
||||||
sBattleBuffersTransferData[2] = CONTROLLER_39;
|
sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKFLAG;
|
||||||
sBattleBuffersTransferData[3] = CONTROLLER_39;
|
sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKFLAG;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void BtlController_EmitCmd40(u8 bufferId)
|
static void BtlController_EmitToggleUnkFlag(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_40;
|
sBattleBuffersTransferData[0] = CONTROLLER_TOGGLEUNKFLAG;
|
||||||
sBattleBuffersTransferData[1] = CONTROLLER_40;
|
sBattleBuffersTransferData[1] = CONTROLLER_TOGGLEUNKFLAG;
|
||||||
sBattleBuffersTransferData[2] = CONTROLLER_40;
|
sBattleBuffersTransferData[2] = CONTROLLER_TOGGLEUNKFLAG;
|
||||||
sBattleBuffersTransferData[3] = CONTROLLER_40;
|
sBattleBuffersTransferData[3] = CONTROLLER_TOGGLEUNKFLAG;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1050,16 +1092,16 @@ void BtlController_EmitHitAnimation(u8 bufferId)
|
|||||||
|
|
||||||
void BtlController_EmitCantSwitch(u8 bufferId)
|
void BtlController_EmitCantSwitch(u8 bufferId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_42;
|
sBattleBuffersTransferData[0] = CONTROLLER_CANTSWITCH;
|
||||||
sBattleBuffersTransferData[1] = CONTROLLER_42;
|
sBattleBuffersTransferData[1] = CONTROLLER_CANTSWITCH;
|
||||||
sBattleBuffersTransferData[2] = CONTROLLER_42;
|
sBattleBuffersTransferData[2] = CONTROLLER_CANTSWITCH;
|
||||||
sBattleBuffersTransferData[3] = CONTROLLER_42;
|
sBattleBuffersTransferData[3] = CONTROLLER_CANTSWITCH;
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
|
sBattleBuffersTransferData[0] = CONTROLLER_PLAYSE;
|
||||||
sBattleBuffersTransferData[1] = songId;
|
sBattleBuffersTransferData[1] = songId;
|
||||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||||
sBattleBuffersTransferData[3] = 0;
|
sBattleBuffersTransferData[3] = 0;
|
||||||
@@ -1068,7 +1110,7 @@ void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
|||||||
|
|
||||||
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
|
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
|
||||||
{
|
{
|
||||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
|
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFARE;
|
||||||
sBattleBuffersTransferData[1] = songId;
|
sBattleBuffersTransferData[1] = songId;
|
||||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||||
sBattleBuffersTransferData[3] = 0;
|
sBattleBuffersTransferData[3] = 0;
|
||||||
@@ -1108,7 +1150,7 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
|
|||||||
sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
|
sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
|
||||||
sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
|
sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
|
||||||
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
||||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i)
|
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
|
||||||
sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus));
|
sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus));
|
||||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4);
|
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -452,7 +452,7 @@ void DecompressTrainerBackPalette(u16 index, u8 palette)
|
|||||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20);
|
LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleGfxSfxDummy3(u8 a1)
|
void BattleGfxSfxDummy3(u8 gender)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -894,12 +894,12 @@ void LoadAndCreateEnemyShadowSprites(void)
|
|||||||
|
|
||||||
LoadCompressedSpriteSheetUsingHeap(&gSpriteSheet_EnemyShadow);
|
LoadCompressedSpriteSheetUsingHeap(&gSpriteSheet_EnemyShadow);
|
||||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
|
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X), GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 29, 0xC8);
|
||||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
||||||
if (IsDoubleBattle())
|
if (IsDoubleBattle())
|
||||||
{
|
{
|
||||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
|
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X), GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 29, 0xC8);
|
||||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-13
@@ -132,7 +132,7 @@ EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0};
|
|||||||
static EWRAM_DATA u32 sFlickerArray[25] = {0};
|
static EWRAM_DATA u32 sFlickerArray[25] = {0};
|
||||||
EWRAM_DATA u32 gBattleTypeFlags = 0;
|
EWRAM_DATA u32 gBattleTypeFlags = 0;
|
||||||
EWRAM_DATA u8 gBattleTerrain = 0;
|
EWRAM_DATA u8 gBattleTerrain = 0;
|
||||||
EWRAM_DATA u32 gUnknown_2022B54 = 0;
|
EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0;
|
||||||
EWRAM_DATA struct MultiBattlePokemonTx gMultiPartnerParty[3] = {0};
|
EWRAM_DATA struct MultiBattlePokemonTx gMultiPartnerParty[3] = {0};
|
||||||
EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
|
EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
|
||||||
EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL;
|
EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL;
|
||||||
@@ -184,7 +184,7 @@ EWRAM_DATA u8 gMoveResultFlags = 0;
|
|||||||
EWRAM_DATA u32 gHitMarker = 0;
|
EWRAM_DATA u32 gHitMarker = 0;
|
||||||
static EWRAM_DATA u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
|
static EWRAM_DATA u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
|
EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gUnknown_2023DDC = 0;
|
EWRAM_DATA u8 gUnusedFirstBattleVar2 = 0;
|
||||||
EWRAM_DATA u16 gSideStatuses[2] = {0};
|
EWRAM_DATA u16 gSideStatuses[2] = {0};
|
||||||
EWRAM_DATA struct SideTimer gSideTimers[2] = {0};
|
EWRAM_DATA struct SideTimer gSideTimers[2] = {0};
|
||||||
EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0};
|
EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0};
|
||||||
@@ -973,7 +973,7 @@ static void CB2_HandleStartBattle(void)
|
|||||||
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
||||||
BufferPartyVsScreenHealth_AtStart();
|
BufferPartyVsScreenHealth_AtStart();
|
||||||
SetPlayerBerryDataInBattleStruct();
|
SetPlayerBerryDataInBattleStruct();
|
||||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
SendBlock(BitmaskAllOtherLinkPlayers(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||||
gBattleCommunication[MULTIUSE_STATE] = 2;
|
gBattleCommunication[MULTIUSE_STATE] = 2;
|
||||||
}
|
}
|
||||||
if (gWirelessCommType != 0)
|
if (gWirelessCommType != 0)
|
||||||
@@ -1008,7 +1008,7 @@ static void CB2_HandleStartBattle(void)
|
|||||||
case 3:
|
case 3:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1023,7 +1023,7 @@ static void CB2_HandleStartBattle(void)
|
|||||||
case 7:
|
case 7:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
|
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1038,7 +1038,7 @@ static void CB2_HandleStartBattle(void)
|
|||||||
case 11:
|
case 11:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
|
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1057,7 +1057,7 @@ static void CB2_HandleStartBattle(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
InitBtlControllers();
|
InitBattleControllers();
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
||||||
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
||||||
@@ -1140,7 +1140,7 @@ static void CB2_PreInitMultiBattle(void)
|
|||||||
if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished())
|
if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
PrepareOwnMultiPartnerBuffer();
|
PrepareOwnMultiPartnerBuffer();
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons));
|
SendBlock(BitmaskAllOtherLinkPlayers(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons));
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1229,7 +1229,7 @@ static void CB2_HandleStartMultiBattle(void)
|
|||||||
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
||||||
BufferPartyVsScreenHealth_AtStart();
|
BufferPartyVsScreenHealth_AtStart();
|
||||||
SetPlayerBerryDataInBattleStruct();
|
SetPlayerBerryDataInBattleStruct();
|
||||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
SendBlock(BitmaskAllOtherLinkPlayers(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
if (gWirelessCommType)
|
if (gWirelessCommType)
|
||||||
@@ -1280,7 +1280,7 @@ static void CB2_HandleStartMultiBattle(void)
|
|||||||
case 3:
|
case 3:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, sizeof(struct Pokemon) * 2);
|
SendBlock(BitmaskAllOtherLinkPlayers(), gDecompressionBuffer, sizeof(struct Pokemon) * 2);
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1343,7 +1343,7 @@ static void CB2_HandleStartMultiBattle(void)
|
|||||||
case 7:
|
case 7:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon));
|
SendBlock(BitmaskAllOtherLinkPlayers(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon));
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1416,7 +1416,7 @@ static void CB2_HandleStartMultiBattle(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
InitBtlControllers();
|
InitBattleControllers();
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
||||||
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
||||||
@@ -2183,8 +2183,9 @@ static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite)
|
|||||||
sprite->callback = SpriteCB_Idle;
|
sprite->callback = SpriteCB_Idle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleDummy(void)
|
void BeginBattleIntroDummy(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BeginBattleIntro(void)
|
void BeginBattleIntro(void)
|
||||||
|
|||||||
@@ -2040,7 +2040,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
|||||||
toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]];
|
toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]];
|
||||||
break;
|
break;
|
||||||
case B_TXT_TRAINER1_CLASS: // trainer class name
|
case B_TXT_TRAINER1_CLASS: // trainer class name
|
||||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||||
toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
|
toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
|
||||||
else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM)
|
else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM)
|
||||||
toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()];
|
toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()];
|
||||||
@@ -2054,7 +2054,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
|||||||
toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass];
|
toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass];
|
||||||
break;
|
break;
|
||||||
case B_TXT_TRAINER1_NAME: // trainer1 name
|
case B_TXT_TRAINER1_NAME: // trainer1 name
|
||||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||||
{
|
{
|
||||||
for (i = 0; i < (s32)NELEMS(gBattleResources->secretBase->trainerName); i++)
|
for (i = 0; i < (s32)NELEMS(gBattleResources->secretBase->trainerName); i++)
|
||||||
text[i] = gBattleResources->secretBase->trainerName[i];
|
text[i] = gBattleResources->secretBase->trainerName[i];
|
||||||
|
|||||||
@@ -673,7 +673,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
|
|||||||
static const struct OamData sOamData_MonIconOnLvlUpBanner =
|
static const struct OamData sOamData_MonIconOnLvlUpBanner =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
|
|||||||
@@ -478,7 +478,7 @@ static const struct SpriteTemplate sSpriteTemplate_SlidingPokeball =
|
|||||||
static const struct OamData sOamData_Unused =
|
static const struct OamData sOamData_Unused =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -1076,7 +1076,7 @@ bool8 FldEff_Pokeball(void)
|
|||||||
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_SlidingPokeball, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
|
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_SlidingPokeball, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
|
||||||
|
|
||||||
gSprites[spriteId].oam.priority = 0;
|
gSprites[spriteId].oam.priority = 0;
|
||||||
gSprites[spriteId].oam.affineMode = 1;
|
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||||
gSprites[spriteId].data[0] = gFieldEffectArguments[2];
|
gSprites[spriteId].data[0] = gFieldEffectArguments[2];
|
||||||
gSprites[spriteId].data[1] = gFieldEffectArguments[3];
|
gSprites[spriteId].data[1] = gFieldEffectArguments[3];
|
||||||
gSprites[spriteId].data[2] = -1;
|
gSprites[spriteId].data[2] = -1;
|
||||||
|
|||||||
@@ -1002,10 +1002,13 @@ void Task_WaitForLinkPlayerConnection(u8 taskId)
|
|||||||
SetMainCallback2(CB2_LinkError);
|
SetMainCallback2(CB2_LinkError);
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gReceivedRemoteLinkPlayers)
|
if (gReceivedRemoteLinkPlayers)
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef tTimer
|
||||||
|
|
||||||
static void Task_WaitExitToScript(u8 taskId)
|
static void Task_WaitExitToScript(u8 taskId)
|
||||||
{
|
{
|
||||||
if (!gReceivedRemoteLinkPlayers)
|
if (!gReceivedRemoteLinkPlayers)
|
||||||
|
|||||||
@@ -709,7 +709,7 @@ static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.
|
|||||||
static const struct OamData sOamData_HeldItem =
|
static const struct OamData sOamData_HeldItem =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -765,7 +765,7 @@ static const struct SpriteTemplate sSpriteTemplate_HeldItem =
|
|||||||
static const struct OamData sOamData_MenuPokeball =
|
static const struct OamData sOamData_MenuPokeball =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -822,7 +822,7 @@ static const struct SpriteTemplate sSpriteTemplate_MenuPokeball =
|
|||||||
static const struct OamData sOamData_MenuPokeballSmall =
|
static const struct OamData sOamData_MenuPokeballSmall =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -903,7 +903,7 @@ static const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall =
|
|||||||
static const struct OamData sOamData_StatusCondition =
|
static const struct OamData sOamData_StatusCondition =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
const struct MonCoords gTrainerBackPicCoords[] = {
|
const struct MonCoords gTrainerBackPicCoords[] = {
|
||||||
{.size = 8, .y_offset = 5},
|
[TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5},
|
||||||
{.size = 8, .y_offset = 5},
|
[TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5},
|
||||||
{.size = 8, .y_offset = 4},
|
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4},
|
||||||
{.size = 8, .y_offset = 4},
|
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4},
|
||||||
{.size = 8, .y_offset = 4},
|
[TRAINER_BACK_PIC_POKEDUDE] = {.size = 8, .y_offset = 4},
|
||||||
{.size = 8, .y_offset = 4}
|
[TRAINER_BACK_PIC_OLD_MAN] = {.size = 8, .y_offset = 4}
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
|
const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
|
||||||
|
|||||||
+2
-2
@@ -141,7 +141,7 @@ static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
|
|||||||
static const struct OamData sOamData_EggHatch =
|
static const struct OamData sOamData_EggHatch =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -221,7 +221,7 @@ static const struct SpriteTemplate sSpriteTemplate_EggHatch =
|
|||||||
static const struct OamData sOamData_EggShard =
|
static const struct OamData sOamData_EggShard =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
|
|||||||
+1
-1
@@ -982,7 +982,7 @@ u8 GetMultiplayerId(void)
|
|||||||
return SIO_MULTI_CNT->id;
|
return SIO_MULTI_CNT->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 bitmask_all_link_players_but_self(void)
|
u8 BitmaskAllOtherLinkPlayers(void)
|
||||||
{
|
{
|
||||||
u8 mpId;
|
u8 mpId;
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ static const struct ScrollIndicatorTemplate sScrollIndicatorTemplates[] =
|
|||||||
static const struct OamData sOamData_ScrollArrowIndicator =
|
static const struct OamData sOamData_ScrollArrowIndicator =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -222,7 +222,7 @@ static const struct Subsprite sSubsprite_RedOutline8 =
|
|||||||
static const struct OamData sOamData_RedArrowCursor =
|
static const struct OamData sOamData_RedArrowCursor =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
|
|||||||
@@ -3103,14 +3103,14 @@ u8 DexScreen_DrawMonAreaPage(void)
|
|||||||
{
|
{
|
||||||
sPokedexScreenData->windowIds[14] = CreateMonPicSprite_HandleDeoxys(species, SHINY_ODDS, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF);
|
sPokedexScreenData->windowIds[14] = CreateMonPicSprite_HandleDeoxys(species, SHINY_ODDS, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF);
|
||||||
gSprites[sPokedexScreenData->windowIds[14]].oam.paletteNum = 2;
|
gSprites[sPokedexScreenData->windowIds[14]].oam.paletteNum = 2;
|
||||||
gSprites[sPokedexScreenData->windowIds[14]].oam.affineMode = 1;
|
gSprites[sPokedexScreenData->windowIds[14]].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||||
gSprites[sPokedexScreenData->windowIds[14]].oam.matrixNum = 2;
|
gSprites[sPokedexScreenData->windowIds[14]].oam.matrixNum = 2;
|
||||||
gSprites[sPokedexScreenData->windowIds[14]].oam.priority = 1;
|
gSprites[sPokedexScreenData->windowIds[14]].oam.priority = 1;
|
||||||
gSprites[sPokedexScreenData->windowIds[14]].y2 = gPokedexEntries[speciesId].pokemonOffset;
|
gSprites[sPokedexScreenData->windowIds[14]].y2 = gPokedexEntries[speciesId].pokemonOffset;
|
||||||
SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale);
|
SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale);
|
||||||
sPokedexScreenData->windowIds[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 80, 104, 0, 0xFFFF);
|
sPokedexScreenData->windowIds[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 80, 104, 0, 0xFFFF);
|
||||||
gSprites[sPokedexScreenData->windowIds[15]].oam.paletteNum = 2;
|
gSprites[sPokedexScreenData->windowIds[15]].oam.paletteNum = 2;
|
||||||
gSprites[sPokedexScreenData->windowIds[15]].oam.affineMode = 1;
|
gSprites[sPokedexScreenData->windowIds[15]].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||||
gSprites[sPokedexScreenData->windowIds[15]].oam.matrixNum = 1;
|
gSprites[sPokedexScreenData->windowIds[15]].oam.matrixNum = 1;
|
||||||
gSprites[sPokedexScreenData->windowIds[15]].oam.priority = 1;
|
gSprites[sPokedexScreenData->windowIds[15]].oam.priority = 1;
|
||||||
gSprites[sPokedexScreenData->windowIds[15]].y2 = gPokedexEntries[speciesId].trainerOffset;
|
gSprites[sPokedexScreenData->windowIds[15]].y2 = gPokedexEntries[speciesId].trainerOffset;
|
||||||
|
|||||||
+10
-10
@@ -1506,9 +1506,9 @@ const struct SpriteTemplate gSpriteTemplates_Battlers[] =
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
static const struct SpriteTemplate sTrainerBackSpriteTemplates[] =
|
||||||
{
|
{
|
||||||
{
|
[TRAINER_BACK_PIC_RED] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1517,7 +1517,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
|||||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||||
.callback = SpriteCB_AllyMon,
|
.callback = SpriteCB_AllyMon,
|
||||||
},
|
},
|
||||||
{
|
[TRAINER_BACK_PIC_LEAF] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1526,7 +1526,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
|||||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||||
.callback = SpriteCB_AllyMon,
|
.callback = SpriteCB_AllyMon,
|
||||||
},
|
},
|
||||||
{
|
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1535,7 +1535,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
|||||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||||
.callback = SpriteCB_AllyMon,
|
.callback = SpriteCB_AllyMon,
|
||||||
},
|
},
|
||||||
{
|
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1544,7 +1544,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
|||||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||||
.callback = SpriteCB_AllyMon,
|
.callback = SpriteCB_AllyMon,
|
||||||
},
|
},
|
||||||
{
|
[TRAINER_BACK_PIC_POKEDUDE] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1553,7 +1553,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
|||||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||||
.callback = SpriteCB_AllyMon,
|
.callback = SpriteCB_AllyMon,
|
||||||
},
|
},
|
||||||
{
|
[TRAINER_BACK_PIC_OLD_MAN] = {
|
||||||
.tileTag = TAG_NONE,
|
.tileTag = TAG_NONE,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &gOamData_BattlerPlayer,
|
.oam = &gOamData_BattlerPlayer,
|
||||||
@@ -1665,7 +1665,7 @@ const u16 gLinkPlayerFacilityClasses[] =
|
|||||||
static const struct OamData sOakSpeechNidoranFDummyOamData =
|
static const struct OamData sOakSpeechNidoranFDummyOamData =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
.objMode = 0,
|
.objMode = 0,
|
||||||
.mosaic = FALSE,
|
.mosaic = FALSE,
|
||||||
.bpp = 0,
|
.bpp = 0,
|
||||||
@@ -2755,7 +2755,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
|
|||||||
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
|
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
|
||||||
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
|
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
|
||||||
{
|
{
|
||||||
gMultiuseSpriteTemplate = gSpriteTemplates_TrainerBackpics[trainerSpriteId];
|
gMultiuseSpriteTemplate = sTrainerBackSpriteTemplates[trainerSpriteId];
|
||||||
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
|
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3796,7 +3796,7 @@ static void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
gBattleTypeFlags = 8;
|
gBattleTypeFlags = 8;
|
||||||
gTrainerBattleOpponent_A = SECRET_BASE_OPPONENT;
|
gTrainerBattleOpponent_A = TRAINER_SECRET_BASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 GetSecretBaseTrainerPicIndex(void)
|
u8 GetSecretBaseTrainerPicIndex(void)
|
||||||
|
|||||||
+1
-1
@@ -709,7 +709,7 @@ static void Task_StaticCountdown_Run(u8 taskId)
|
|||||||
u16 packet[RFU_PACKET_SIZE];
|
u16 packet[RFU_PACKET_SIZE];
|
||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
|
|
||||||
if (gReceivedRemoteLinkPlayers != 0)
|
if (gReceivedRemoteLinkPlayers)
|
||||||
{
|
{
|
||||||
// Read link timer
|
// Read link timer
|
||||||
if (gRecvCmds[0][1] == LINKCMD_COUNTDOWN)
|
if (gRecvCmds[0][1] == LINKCMD_COUNTDOWN)
|
||||||
|
|||||||
@@ -202,9 +202,9 @@ static bool8 LoadBattlerSpriteGfx(u8 battler)
|
|||||||
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
|
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
|
||||||
}
|
}
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
|
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
|
||||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, battler);
|
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, battler);
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
|
else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
|
||||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, battler);
|
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, battler);
|
||||||
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
|
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
|
||||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
|
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
|
||||||
else
|
else
|
||||||
@@ -231,7 +231,7 @@ static void CreateBattlerSprite(u8 battler)
|
|||||||
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
|
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
|
||||||
return;
|
return;
|
||||||
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
|
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
|
||||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
|
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
||||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
||||||
@@ -265,7 +265,7 @@ static void CreateBattlerSprite(u8 battler)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
|
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
|
||||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
|
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
||||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
||||||
|
|||||||
+5
-5
@@ -1682,7 +1682,7 @@ static void CommunicatePlayerSelectedMonForTrade(void)
|
|||||||
{
|
{
|
||||||
sTradeMenuResourcesPtr->linkData[0] = 0xAABB;
|
sTradeMenuResourcesPtr->linkData[0] = 0xAABB;
|
||||||
sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
|
sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeMenuResourcesPtr->linkData, 20);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1741,7 +1741,7 @@ static void TradeMenuCB_0(void)
|
|||||||
{
|
{
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 10; i++)
|
||||||
sTradeMenuResourcesPtr->linkData[i] = i;
|
sTradeMenuResourcesPtr->linkData[i] = i;
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeMenuResourcesPtr->linkData, 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1854,7 +1854,7 @@ static void CommunicateWhetherMonCanBeTraded(void)
|
|||||||
sTradeMenuResourcesPtr->linkData[0] = 0xBBBB;
|
sTradeMenuResourcesPtr->linkData[0] = 0xBBBB;
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeMenuResourcesPtr->linkData, 20);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@@ -1880,7 +1880,7 @@ static void TradeMenuCB_3(void)
|
|||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
sTradeMenuResourcesPtr->linkData[0] = 0xBBCC;
|
sTradeMenuResourcesPtr->linkData[0] = 0xBBCC;
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeMenuResourcesPtr->linkData, 20);
|
||||||
}
|
}
|
||||||
sTradeMenuResourcesPtr->tradeMenuCBnum = 100;
|
sTradeMenuResourcesPtr->tradeMenuCBnum = 100;
|
||||||
PutWindowTilemap(17);
|
PutWindowTilemap(17);
|
||||||
@@ -2400,7 +2400,7 @@ static void RunScheduledLinkTasks(void)
|
|||||||
switch (sTradeMenuResourcesPtr->cron[i].kind)
|
switch (sTradeMenuResourcesPtr->cron[i].kind)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeMenuResourcesPtr->linkData, 20);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY);
|
PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY);
|
||||||
|
|||||||
+4
-4
@@ -1093,7 +1093,7 @@ static void HandleLinkDataSend(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeData->linkData, 20);
|
||||||
sTradeData->scheduleLinkTransfer++;
|
sTradeData->scheduleLinkTransfer++;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
@@ -1465,7 +1465,7 @@ static bool8 DoTradeAnim_Cable(void)
|
|||||||
if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
|
if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
|
||||||
{
|
{
|
||||||
gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt;
|
gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt;
|
||||||
gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3;
|
gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
|
||||||
CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3);
|
CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3);
|
||||||
StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
|
StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
|
||||||
}
|
}
|
||||||
@@ -1968,7 +1968,7 @@ static bool8 DoTradeAnim_Wireless(void)
|
|||||||
if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
|
if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
|
||||||
{
|
{
|
||||||
gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt;
|
gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt;
|
||||||
gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3;
|
gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
|
||||||
CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3);
|
CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3);
|
||||||
StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
|
StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
|
||||||
}
|
}
|
||||||
@@ -2526,7 +2526,7 @@ static void CB2_WaitAndAckTradeComplete(void)
|
|||||||
if (mpId == 0 && sTradeData->tradeStatus1 == 1 && sTradeData->tradeStatus2 == 1)
|
if (mpId == 0 && sTradeData->tradeStatus1 == 1 && sTradeData->tradeStatus2 == 1)
|
||||||
{
|
{
|
||||||
sTradeData->linkData[0] = 0xDCBA;
|
sTradeData->linkData[0] = 0xDCBA;
|
||||||
SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20);
|
SendBlock(BitmaskAllOtherLinkPlayers(), sTradeData->linkData, 20);
|
||||||
sTradeData->tradeStatus1 = 2;
|
sTradeData->tradeStatus1 = 2;
|
||||||
sTradeData->tradeStatus2 = 2;
|
sTradeData->tradeStatus2 = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user