More sync with battle controllers
This commit is contained in:
@@ -521,16 +521,6 @@ struct BattleScripting
|
||||
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
|
||||
{
|
||||
/*0x0*/ u16 invisible : 1; // 0x1
|
||||
|
||||
@@ -181,7 +181,7 @@ enum
|
||||
CONTROLLER_HITANIMATION,
|
||||
CONTROLLER_CANTSWITCH,
|
||||
CONTROLLER_PLAYSE,
|
||||
CONTROLLER_PLAYFANFAREORBGM,
|
||||
CONTROLLER_PLAYFANFARE,
|
||||
CONTROLLER_FAINTINGCRY,
|
||||
CONTROLLER_INTROSLIDE,
|
||||
CONTROLLER_INTROTRAINERBALLTHROW,
|
||||
|
||||
@@ -15,7 +15,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
|
||||
void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId);
|
||||
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
|
||||
void DecompressTrainerBackPalette(u16 a1, u8 a2);
|
||||
void BattleGfxSfxDummy3(u8 a1);
|
||||
void BattleGfxSfxDummy3(u8 gender);
|
||||
void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId);
|
||||
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
|
||||
void LoadBattleBarGfx(u8 arg0);
|
||||
|
||||
@@ -167,6 +167,14 @@
|
||||
#define TRAINER_PIC_LADY 146
|
||||
#define TRAINER_PIC_PAINTER 147
|
||||
|
||||
// The player back pics are assumed to alternate according to the gender values (MALE/FEMALE)
|
||||
#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
|
||||
|
||||
// Leftover from R/S
|
||||
#define TRAINER_SECRET_BASE 1024
|
||||
|
||||
|
||||
@@ -2079,7 +2079,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon)
|
||||
}
|
||||
}
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
|
||||
static void AnimTask_ShinySparkles(u8 taskId)
|
||||
@@ -2162,7 +2162,7 @@ static void AnimTask_ShinySparkles_WaitSparkles(u8 taskId)
|
||||
if (gTasks[taskId].data[1] == TRUE)
|
||||
{
|
||||
battler = gTasks[taskId].data[0];
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
|
||||
DestroyTask(taskId);
|
||||
|
||||
@@ -88,63 +88,63 @@ static void EndDrawPartyStatusSummary(void);
|
||||
|
||||
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
{
|
||||
LinkOpponentHandleGetMonData,
|
||||
LinkOpponentHandleGetRawMonData,
|
||||
LinkOpponentHandleSetMonData,
|
||||
LinkOpponentHandleSetRawMonData,
|
||||
LinkOpponentHandleLoadMonSprite,
|
||||
LinkOpponentHandleSwitchInAnim,
|
||||
LinkOpponentHandleReturnMonToBall,
|
||||
LinkOpponentHandleDrawTrainerPic,
|
||||
LinkOpponentHandleTrainerSlide,
|
||||
LinkOpponentHandleTrainerSlideBack,
|
||||
LinkOpponentHandleFaintAnimation,
|
||||
LinkOpponentHandlePaletteFade,
|
||||
LinkOpponentHandleSuccessBallThrowAnim,
|
||||
LinkOpponentHandleBallThrowAnim,
|
||||
LinkOpponentHandlePause,
|
||||
LinkOpponentHandleMoveAnimation,
|
||||
LinkOpponentHandlePrintString,
|
||||
LinkOpponentHandlePrintSelectionString,
|
||||
LinkOpponentHandleChooseAction,
|
||||
LinkOpponentHandleUnknownYesNoBox,
|
||||
LinkOpponentHandleChooseMove,
|
||||
LinkOpponentHandleChooseItem,
|
||||
LinkOpponentHandleChoosePokemon,
|
||||
LinkOpponentHandleCmd23,
|
||||
LinkOpponentHandleHealthBarUpdate,
|
||||
LinkOpponentHandleExpUpdate,
|
||||
LinkOpponentHandleStatusIconUpdate,
|
||||
LinkOpponentHandleStatusAnimation,
|
||||
LinkOpponentHandleStatusXor,
|
||||
LinkOpponentHandleDataTransfer,
|
||||
LinkOpponentHandleDMA3Transfer,
|
||||
LinkOpponentHandlePlayBGM,
|
||||
LinkOpponentHandleCmd32,
|
||||
LinkOpponentHandleTwoReturnValues,
|
||||
LinkOpponentHandleChosenMonReturnValue,
|
||||
LinkOpponentHandleOneReturnValue,
|
||||
LinkOpponentHandleOneReturnValue_Duplicate,
|
||||
LinkOpponentHandleClearUnkVar,
|
||||
LinkOpponentHandleSetUnkVar,
|
||||
LinkOpponentHandleClearUnkFlag,
|
||||
LinkOpponentHandleToggleUnkFlag,
|
||||
LinkOpponentHandleHitAnimation,
|
||||
LinkOpponentHandleCantSwitch,
|
||||
LinkOpponentHandlePlaySE,
|
||||
LinkOpponentHandlePlayFanfare,
|
||||
LinkOpponentHandleFaintingCry,
|
||||
LinkOpponentHandleIntroSlide,
|
||||
LinkOpponentHandleIntroTrainerBallThrow,
|
||||
LinkOpponentHandleDrawPartyStatusSummary,
|
||||
LinkOpponentHandleHidePartyStatusSummary,
|
||||
LinkOpponentHandleEndBounceEffect,
|
||||
LinkOpponentHandleSpriteInvisibility,
|
||||
LinkOpponentHandleBattleAnimation,
|
||||
LinkOpponentHandleLinkStandbyMsg,
|
||||
LinkOpponentHandleResetActionMoveSelection,
|
||||
LinkOpponentHandleEndLinkBattle,
|
||||
LinkOpponentCmdEnd
|
||||
[CONTROLLER_GETMONDATA] = LinkOpponentHandleGetMonData,
|
||||
[CONTROLLER_GETRAWMONDATA] = LinkOpponentHandleGetRawMonData,
|
||||
[CONTROLLER_SETMONDATA] = LinkOpponentHandleSetMonData,
|
||||
[CONTROLLER_SETRAWMONDATA] = LinkOpponentHandleSetRawMonData,
|
||||
[CONTROLLER_LOADMONSPRITE] = LinkOpponentHandleLoadMonSprite,
|
||||
[CONTROLLER_SWITCHINANIM] = LinkOpponentHandleSwitchInAnim,
|
||||
[CONTROLLER_RETURNMONTOBALL] = LinkOpponentHandleReturnMonToBall,
|
||||
[CONTROLLER_DRAWTRAINERPIC] = LinkOpponentHandleDrawTrainerPic,
|
||||
[CONTROLLER_TRAINERSLIDE] = LinkOpponentHandleTrainerSlide,
|
||||
[CONTROLLER_TRAINERSLIDEBACK] = LinkOpponentHandleTrainerSlideBack,
|
||||
[CONTROLLER_FAINTANIMATION] = LinkOpponentHandleFaintAnimation,
|
||||
[CONTROLLER_PALETTEFADE] = LinkOpponentHandlePaletteFade,
|
||||
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkOpponentHandleSuccessBallThrowAnim,
|
||||
[CONTROLLER_BALLTHROWANIM] = LinkOpponentHandleBallThrowAnim,
|
||||
[CONTROLLER_PAUSE] = LinkOpponentHandlePause,
|
||||
[CONTROLLER_MOVEANIMATION] = LinkOpponentHandleMoveAnimation,
|
||||
[CONTROLLER_PRINTSTRING] = LinkOpponentHandlePrintString,
|
||||
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkOpponentHandlePrintSelectionString,
|
||||
[CONTROLLER_CHOOSEACTION] = LinkOpponentHandleChooseAction,
|
||||
[CONTROLLER_UNKNOWNYESNOBOX] = LinkOpponentHandleUnknownYesNoBox,
|
||||
[CONTROLLER_CHOOSEMOVE] = LinkOpponentHandleChooseMove,
|
||||
[CONTROLLER_OPENBAG] = LinkOpponentHandleChooseItem,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = LinkOpponentHandleChoosePokemon,
|
||||
[CONTROLLER_23] = LinkOpponentHandleCmd23,
|
||||
[CONTROLLER_HEALTHBARUPDATE] = LinkOpponentHandleHealthBarUpdate,
|
||||
[CONTROLLER_EXPUPDATE] = LinkOpponentHandleExpUpdate,
|
||||
[CONTROLLER_STATUSICONUPDATE] = LinkOpponentHandleStatusIconUpdate,
|
||||
[CONTROLLER_STATUSANIMATION] = LinkOpponentHandleStatusAnimation,
|
||||
[CONTROLLER_STATUSXOR] = LinkOpponentHandleStatusXor,
|
||||
[CONTROLLER_DATATRANSFER] = LinkOpponentHandleDataTransfer,
|
||||
[CONTROLLER_DMA3TRANSFER] = LinkOpponentHandleDMA3Transfer,
|
||||
[CONTROLLER_PLAYBGM] = LinkOpponentHandlePlayBGM,
|
||||
[CONTROLLER_32] = LinkOpponentHandleCmd32,
|
||||
[CONTROLLER_TWORETURNVALUES] = LinkOpponentHandleTwoReturnValues,
|
||||
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkOpponentHandleChosenMonReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE] = LinkOpponentHandleOneReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkOpponentHandleOneReturnValue_Duplicate,
|
||||
[CONTROLLER_CLEARUNKVAR] = LinkOpponentHandleClearUnkVar,
|
||||
[CONTROLLER_SETUNKVAR] = LinkOpponentHandleSetUnkVar,
|
||||
[CONTROLLER_CLEARUNKFLAG] = LinkOpponentHandleClearUnkFlag,
|
||||
[CONTROLLER_TOGGLEUNKFLAG] = LinkOpponentHandleToggleUnkFlag,
|
||||
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
|
||||
[CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
|
||||
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
|
||||
[CONTROLLER_PLAYFANFARE] = LinkOpponentHandlePlayFanfare,
|
||||
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
|
||||
[CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
|
||||
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
|
||||
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkOpponentHandleDrawPartyStatusSummary,
|
||||
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkOpponentHandleHidePartyStatusSummary,
|
||||
[CONTROLLER_ENDBOUNCE] = LinkOpponentHandleEndBounceEffect,
|
||||
[CONTROLLER_SPRITEINVISIBILITY] = LinkOpponentHandleSpriteInvisibility,
|
||||
[CONTROLLER_BATTLEANIMATION] = LinkOpponentHandleBattleAnimation,
|
||||
[CONTROLLER_LINKSTANDBYMSG] = LinkOpponentHandleLinkStandbyMsg,
|
||||
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkOpponentHandleResetActionMoveSelection,
|
||||
[CONTROLLER_ENDLINKBATTLE] = LinkOpponentHandleEndLinkBattle,
|
||||
[CONTROLLER_TERMINATOR_NOP] = LinkOpponentCmdEnd
|
||||
};
|
||||
|
||||
static void LinkOpponentDummy(void)
|
||||
@@ -187,7 +187,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -208,15 +208,18 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
{
|
||||
healthboxAnimDone = TRUE;
|
||||
}
|
||||
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
healthboxAnimDone = FALSE;
|
||||
|
||||
if (healthboxAnimDone)
|
||||
{
|
||||
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
return;
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
@@ -334,7 +337,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -382,7 +385,7 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
@@ -463,7 +466,7 @@ static void LinkOpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1032,15 +1035,19 @@ static void LinkOpponentHandleLoadMonSprite(void)
|
||||
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
|
||||
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
|
||||
}
|
||||
|
||||
@@ -1131,6 +1138,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
xPos = 152;
|
||||
else // first mon
|
||||
xPos = 200;
|
||||
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
@@ -1611,7 +1619,7 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
{
|
||||
|
||||
@@ -51,12 +51,12 @@ static void LinkPartnerHandleTwoReturnValues(void);
|
||||
static void LinkPartnerHandleChosenMonReturnValue(void);
|
||||
static void LinkPartnerHandleOneReturnValue(void);
|
||||
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
|
||||
static void LinkPartnerHandleCmd37(void);
|
||||
static void LinkPartnerHandleCmd38(void);
|
||||
static void LinkPartnerHandleCmd39(void);
|
||||
static void LinkPartnerHandleCmd40(void);
|
||||
static void LinkPartnerHandleClearUnkVar(void);
|
||||
static void LinkPartnerHandleSetUnkVar(void);
|
||||
static void LinkPartnerHandleClearUnkFlag(void);
|
||||
static void LinkPartnerHandleToggleUnkFlag(void);
|
||||
static void LinkPartnerHandleHitAnimation(void);
|
||||
static void LinkPartnerHandleCmd42(void);
|
||||
static void LinkPartnerHandleCantSwitch(void);
|
||||
static void LinkPartnerHandlePlaySE(void);
|
||||
static void LinkPartnerHandlePlayFanfare(void);
|
||||
static void LinkPartnerHandleFaintingCry(void);
|
||||
@@ -69,7 +69,7 @@ static void LinkPartnerHandleSpriteInvisibility(void);
|
||||
static void LinkPartnerHandleBattleAnimation(void);
|
||||
static void LinkPartnerHandleLinkStandbyMsg(void);
|
||||
static void LinkPartnerHandleResetActionMoveSelection(void);
|
||||
static void LinkPartnerHandleCmd55(void);
|
||||
static void LinkPartnerHandleEndLinkBattle(void);
|
||||
static void LinkPartnerCmdEnd(void);
|
||||
|
||||
static void LinkPartnerBufferRunCommand(void);
|
||||
@@ -85,63 +85,63 @@ static void EndDrawPartyStatusSummary(void);
|
||||
|
||||
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
{
|
||||
LinkPartnerHandleGetMonData,
|
||||
LinkPartnerHandleGetRawMonData,
|
||||
LinkPartnerHandleSetMonData,
|
||||
LinkPartnerHandleSetRawMonData,
|
||||
LinkPartnerHandleLoadMonSprite,
|
||||
LinkPartnerHandleSwitchInAnim,
|
||||
LinkPartnerHandleReturnMonToBall,
|
||||
LinkPartnerHandleDrawTrainerPic,
|
||||
LinkPartnerHandleTrainerSlide,
|
||||
LinkPartnerHandleTrainerSlideBack,
|
||||
LinkPartnerHandleFaintAnimation,
|
||||
LinkPartnerHandlePaletteFade,
|
||||
LinkPartnerHandleSuccessBallThrowAnim,
|
||||
LinkPartnerHandleBallThrowAnim,
|
||||
LinkPartnerHandlePause,
|
||||
LinkPartnerHandleMoveAnimation,
|
||||
LinkPartnerHandlePrintString,
|
||||
LinkPartnerHandlePrintSelectionString,
|
||||
LinkPartnerHandleChooseAction,
|
||||
LinkPartnerHandleUnknownYesNoBox,
|
||||
LinkPartnerHandleChooseMove,
|
||||
LinkPartnerHandleChooseItem,
|
||||
LinkPartnerHandleChoosePokemon,
|
||||
LinkPartnerHandleCmd23,
|
||||
LinkPartnerHandleHealthBarUpdate,
|
||||
LinkPartnerHandleExpUpdate,
|
||||
LinkPartnerHandleStatusIconUpdate,
|
||||
LinkPartnerHandleStatusAnimation,
|
||||
LinkPartnerHandleStatusXor,
|
||||
LinkPartnerHandleDataTransfer,
|
||||
LinkPartnerHandleDMA3Transfer,
|
||||
LinkPartnerHandlePlayBGM,
|
||||
LinkPartnerHandleCmd32,
|
||||
LinkPartnerHandleTwoReturnValues,
|
||||
LinkPartnerHandleChosenMonReturnValue,
|
||||
LinkPartnerHandleOneReturnValue,
|
||||
LinkPartnerHandleOneReturnValue_Duplicate,
|
||||
LinkPartnerHandleCmd37,
|
||||
LinkPartnerHandleCmd38,
|
||||
LinkPartnerHandleCmd39,
|
||||
LinkPartnerHandleCmd40,
|
||||
LinkPartnerHandleHitAnimation,
|
||||
LinkPartnerHandleCmd42,
|
||||
LinkPartnerHandlePlaySE,
|
||||
LinkPartnerHandlePlayFanfare,
|
||||
LinkPartnerHandleFaintingCry,
|
||||
LinkPartnerHandleIntroSlide,
|
||||
LinkPartnerHandleIntroTrainerBallThrow,
|
||||
LinkPartnerHandleDrawPartyStatusSummary,
|
||||
LinkPartnerHandleHidePartyStatusSummary,
|
||||
LinkPartnerHandleEndBounceEffect,
|
||||
LinkPartnerHandleSpriteInvisibility,
|
||||
LinkPartnerHandleBattleAnimation,
|
||||
LinkPartnerHandleLinkStandbyMsg,
|
||||
LinkPartnerHandleResetActionMoveSelection,
|
||||
LinkPartnerHandleCmd55,
|
||||
LinkPartnerCmdEnd
|
||||
[CONTROLLER_GETMONDATA] = LinkPartnerHandleGetMonData,
|
||||
[CONTROLLER_GETRAWMONDATA] = LinkPartnerHandleGetRawMonData,
|
||||
[CONTROLLER_SETMONDATA] = LinkPartnerHandleSetMonData,
|
||||
[CONTROLLER_SETRAWMONDATA] = LinkPartnerHandleSetRawMonData,
|
||||
[CONTROLLER_LOADMONSPRITE] = LinkPartnerHandleLoadMonSprite,
|
||||
[CONTROLLER_SWITCHINANIM] = LinkPartnerHandleSwitchInAnim,
|
||||
[CONTROLLER_RETURNMONTOBALL] = LinkPartnerHandleReturnMonToBall,
|
||||
[CONTROLLER_DRAWTRAINERPIC] = LinkPartnerHandleDrawTrainerPic,
|
||||
[CONTROLLER_TRAINERSLIDE] = LinkPartnerHandleTrainerSlide,
|
||||
[CONTROLLER_TRAINERSLIDEBACK] = LinkPartnerHandleTrainerSlideBack,
|
||||
[CONTROLLER_FAINTANIMATION] = LinkPartnerHandleFaintAnimation,
|
||||
[CONTROLLER_PALETTEFADE] = LinkPartnerHandlePaletteFade,
|
||||
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkPartnerHandleSuccessBallThrowAnim,
|
||||
[CONTROLLER_BALLTHROWANIM] = LinkPartnerHandleBallThrowAnim,
|
||||
[CONTROLLER_PAUSE] = LinkPartnerHandlePause,
|
||||
[CONTROLLER_MOVEANIMATION] = LinkPartnerHandleMoveAnimation,
|
||||
[CONTROLLER_PRINTSTRING] = LinkPartnerHandlePrintString,
|
||||
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkPartnerHandlePrintSelectionString,
|
||||
[CONTROLLER_CHOOSEACTION] = LinkPartnerHandleChooseAction,
|
||||
[CONTROLLER_UNKNOWNYESNOBOX] = LinkPartnerHandleUnknownYesNoBox,
|
||||
[CONTROLLER_CHOOSEMOVE] = LinkPartnerHandleChooseMove,
|
||||
[CONTROLLER_OPENBAG] = LinkPartnerHandleChooseItem,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = LinkPartnerHandleChoosePokemon,
|
||||
[CONTROLLER_23] = LinkPartnerHandleCmd23,
|
||||
[CONTROLLER_HEALTHBARUPDATE] = LinkPartnerHandleHealthBarUpdate,
|
||||
[CONTROLLER_EXPUPDATE] = LinkPartnerHandleExpUpdate,
|
||||
[CONTROLLER_STATUSICONUPDATE] = LinkPartnerHandleStatusIconUpdate,
|
||||
[CONTROLLER_STATUSANIMATION] = LinkPartnerHandleStatusAnimation,
|
||||
[CONTROLLER_STATUSXOR] = LinkPartnerHandleStatusXor,
|
||||
[CONTROLLER_DATATRANSFER] = LinkPartnerHandleDataTransfer,
|
||||
[CONTROLLER_DMA3TRANSFER] = LinkPartnerHandleDMA3Transfer,
|
||||
[CONTROLLER_PLAYBGM] = LinkPartnerHandlePlayBGM,
|
||||
[CONTROLLER_32] = LinkPartnerHandleCmd32,
|
||||
[CONTROLLER_TWORETURNVALUES] = LinkPartnerHandleTwoReturnValues,
|
||||
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkPartnerHandleChosenMonReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE] = LinkPartnerHandleOneReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkPartnerHandleOneReturnValue_Duplicate,
|
||||
[CONTROLLER_CLEARUNKVAR] = LinkPartnerHandleClearUnkVar,
|
||||
[CONTROLLER_SETUNKVAR] = LinkPartnerHandleSetUnkVar,
|
||||
[CONTROLLER_CLEARUNKFLAG] = LinkPartnerHandleClearUnkFlag,
|
||||
[CONTROLLER_TOGGLEUNKFLAG] = LinkPartnerHandleToggleUnkFlag,
|
||||
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
|
||||
[CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
|
||||
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
|
||||
[CONTROLLER_PLAYFANFARE] = LinkPartnerHandlePlayFanfare,
|
||||
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
|
||||
[CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
|
||||
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
|
||||
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkPartnerHandleDrawPartyStatusSummary,
|
||||
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkPartnerHandleHidePartyStatusSummary,
|
||||
[CONTROLLER_ENDBOUNCE] = LinkPartnerHandleEndBounceEffect,
|
||||
[CONTROLLER_SPRITEINVISIBILITY] = LinkPartnerHandleSpriteInvisibility,
|
||||
[CONTROLLER_BATTLEANIMATION] = LinkPartnerHandleBattleAnimation,
|
||||
[CONTROLLER_LINKSTANDBYMSG] = LinkPartnerHandleLinkStandbyMsg,
|
||||
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkPartnerHandleResetActionMoveSelection,
|
||||
[CONTROLLER_ENDLINKBATTLE] = LinkPartnerHandleEndLinkBattle,
|
||||
[CONTROLLER_TERMINATOR_NOP] = LinkPartnerCmdEnd
|
||||
};
|
||||
|
||||
static void LinkPartnerDummy(void)
|
||||
@@ -157,7 +157,7 @@ static void LinkPartnerBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkPartnerBufferCommands))
|
||||
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
|
||||
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
else
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -174,7 +174,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
BattleGfxSfxDummy3(0);
|
||||
BattleGfxSfxDummy3(MALE);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -183,7 +183,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -192,21 +192,23 @@ static void Intro_DelayAndEnd(void)
|
||||
|
||||
static void Intro_WaitForHealthbox(void)
|
||||
{
|
||||
bool32 var = FALSE;
|
||||
bool32 finished = FALSE;
|
||||
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||
{
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
var = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
var = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
var = FALSE;
|
||||
if (var)
|
||||
finished = FALSE;
|
||||
|
||||
if (finished)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
|
||||
gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
|
||||
@@ -216,29 +218,33 @@ static void Intro_WaitForHealthbox(void)
|
||||
static void Intro_ShowHealthbox(void)
|
||||
{
|
||||
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;
|
||||
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
{
|
||||
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]],
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
|
||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
|
||||
HEALTHBOX_ALL);
|
||||
StartHealthboxSlideIn(gActiveBattler);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
|
||||
|
||||
StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
|
||||
|
||||
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);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
if (hpValue != -1)
|
||||
{
|
||||
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
||||
@@ -288,7 +295,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -305,9 +312,9 @@ static void DoHitAnimBlinkSpriteEffect(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(gSprites[spriteId].data[1] % 4))
|
||||
if ((gSprites[spriteId].data[1] % 4) == 0)
|
||||
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)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
|
||||
}
|
||||
}
|
||||
@@ -324,7 +332,9 @@ static void SwitchIn_ShowSubstitute(void)
|
||||
static void SwitchIn_WaitAndEnd(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
static void SwitchIn_ShowHealthbox(void)
|
||||
@@ -332,9 +342,11 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
@@ -349,8 +361,11 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
static void SwitchIn_TryShinyAnim(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
{
|
||||
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||
}
|
||||
|
||||
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
{
|
||||
@@ -394,21 +409,21 @@ static void LinkPartnerHandleGetMonData(void)
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
size += CopyLinkPartnerMonData(i, monData + size);
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -427,7 +442,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
case REQUEST_ALL_BATTLE:
|
||||
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
|
||||
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.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);
|
||||
GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
||||
src = (u8 *)&battleMon;
|
||||
for (size = 0; size < sizeof(battleMon); ++size)
|
||||
for (size = 0; size < sizeof(battleMon); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_SPECIES_BATTLE:
|
||||
@@ -474,14 +489,14 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
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.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||
}
|
||||
moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
||||
src = (u8 *)(&moveData);
|
||||
for (size = 0; size < sizeof(moveData); ++size)
|
||||
for (size = 0; size < sizeof(moveData); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_MOVE1_BATTLE:
|
||||
@@ -494,10 +509,10 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
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_PP_BONUSES);
|
||||
++size;
|
||||
size++;
|
||||
break;
|
||||
case REQUEST_PPMOVE1_BATTLE:
|
||||
case REQUEST_PPMOVE2_BATTLE:
|
||||
@@ -714,6 +729,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -727,14 +743,14 @@ static void LinkPartnerHandleSetMonData(void)
|
||||
u8 monToCheck;
|
||||
u8 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
SetLinkPartnerMonData(i);
|
||||
@@ -758,7 +774,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
||||
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_PP1 + i, &battlePokemon->pp[i]);
|
||||
@@ -797,7 +813,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
||||
break;
|
||||
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_PP1 + i, &moveData->pp[i]);
|
||||
@@ -958,6 +974,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
|
||||
break;
|
||||
}
|
||||
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
}
|
||||
|
||||
@@ -966,8 +983,9 @@ static void LinkPartnerHandleSetRawMonData(void)
|
||||
u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
||||
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -978,6 +996,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
@@ -1007,23 +1026,29 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
||||
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleReturnMonToBall(void)
|
||||
{
|
||||
if (!gBattleBufferA[gActiveBattler][1])
|
||||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||
@@ -1044,6 +1069,7 @@ static void DoSwitchOutAnimation(void)
|
||||
case 0:
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
||||
break;
|
||||
case 1:
|
||||
@@ -1057,6 +1083,8 @@ static void DoSwitchOutAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define sSpeedX data[0]
|
||||
|
||||
static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
{
|
||||
s16 xPos;
|
||||
@@ -1066,22 +1094,32 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
xPos = 90;
|
||||
else // First mon, on the left.
|
||||
xPos = 32;
|
||||
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||
}
|
||||
|
||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
#undef sSpeedX
|
||||
|
||||
static void LinkPartnerHandleTrainerSlide(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -1098,13 +1136,16 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
}
|
||||
|
||||
#define sSpeedX data[1]
|
||||
#define sSpeedY data[2]
|
||||
|
||||
static void LinkPartnerHandleFaintAnimation(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1113,14 +1154,17 @@ static void LinkPartnerHandleFaintAnimation(void)
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedY = 5;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#undef sSpeedX
|
||||
#undef sSpeedY
|
||||
|
||||
static void LinkPartnerHandlePaletteFade(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -1175,7 +1219,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
||||
{
|
||||
case 0:
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
{
|
||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
@@ -1271,6 +1315,7 @@ static void LinkPartnerHandleHealthBarUpdate(void)
|
||||
|
||||
LoadBattleBarGfx(0);
|
||||
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||
|
||||
if (hpVal != INSTANT_HP_BAR_DROP)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
||||
}
|
||||
|
||||
@@ -1360,25 +1406,25 @@ static void LinkPartnerHandleOneReturnValue_Duplicate(void)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd37(void)
|
||||
static void LinkPartnerHandleClearUnkVar(void)
|
||||
{
|
||||
gUnusedControllerStruct.unk = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd38(void)
|
||||
static void LinkPartnerHandleSetUnkVar(void)
|
||||
{
|
||||
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd39(void)
|
||||
static void LinkPartnerHandleClearUnkFlag(void)
|
||||
{
|
||||
gUnusedControllerStruct.flag = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd40(void)
|
||||
static void LinkPartnerHandleToggleUnkFlag(void)
|
||||
{
|
||||
gUnusedControllerStruct.flag ^= 1;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -1399,7 +1445,7 @@ static void LinkPartnerHandleHitAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd42(void)
|
||||
static void LinkPartnerHandleCantSwitch(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1412,6 +1458,7 @@ static void LinkPartnerHandlePlaySE(void)
|
||||
pan = SOUND_PAN_ATTACKER;
|
||||
else
|
||||
pan = SOUND_PAN_TARGET;
|
||||
|
||||
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1444,26 +1491,38 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
u32 trainerPicId;
|
||||
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
|
||||
paletteNum = AllocSpritePalette(0xD6F9);
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||
}
|
||||
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDummy;
|
||||
}
|
||||
@@ -1472,7 +1531,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[1] < 24)
|
||||
{
|
||||
++gTasks[taskId].data[1];
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1502,7 +1561,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
||||
|
||||
static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1512,7 +1571,7 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
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;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
||||
@@ -1574,7 +1633,7 @@ static void LinkPartnerHandleResetActionMoveSelection(void)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd55(void)
|
||||
static void LinkPartnerHandleEndLinkBattle(void)
|
||||
{
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
FadeOutMapMusic(5);
|
||||
|
||||
@@ -443,9 +443,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
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);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
@@ -987,7 +987,7 @@ static void OakOldManHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
OakOldManBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1575,20 +1575,20 @@ static void OakOldManHandleDrawTrainerPic(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -1602,20 +1602,20 @@ static void OakOldManHandleTrainerSlide(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -2087,7 +2087,7 @@ static void OakOldManHandleIntroTrainerBallThrow(void)
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
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;
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
@@ -200,7 +200,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -226,9 +226,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
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);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
@@ -282,7 +282,7 @@ static void TryShinyAnimAfterMonAnim(void)
|
||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -383,7 +383,7 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
@@ -447,7 +447,7 @@ static void OpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -765,7 +765,7 @@ static void OpponentHandleGetRawMonData(void)
|
||||
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
dst[i] = src[i];
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1027,7 +1027,7 @@ static void OpponentHandleLoadMonSprite(void)
|
||||
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
y = GetGhostSpriteDefault_Y(gActiveBattler);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = TRUE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1682,7 +1682,7 @@ static void OpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||
if (gBattleBufferA[gActiveBattler][2])
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
||||
|
||||
@@ -863,7 +863,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
PlayerBufferExecCompleted();
|
||||
@@ -891,9 +891,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
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);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
@@ -942,7 +942,7 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
@@ -1505,7 +1505,7 @@ static void PlayerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1824,7 +1824,7 @@ void PlayerHandleGetRawMonData(void)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
dst[i] = src[i];
|
||||
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2176,13 +2176,13 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (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
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender;
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender + BACK_PIC_RED;
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender;
|
||||
}
|
||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
@@ -2774,7 +2774,7 @@ static void PlayerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
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]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
|
||||
@@ -240,7 +240,7 @@ static void CompleteOnBattlerSpritePosX_0(void)
|
||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
PokedudeBufferExecCompleted();
|
||||
@@ -280,7 +280,7 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
@@ -424,9 +424,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
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);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
@@ -730,7 +730,7 @@ static void PokedudeHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PokedudeBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1351,11 +1351,11 @@ static void PokedudeHandleDrawTrainerPic(void)
|
||||
{
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
@@ -1384,11 +1384,11 @@ static void PokedudeHandleDrawTrainerPic(void)
|
||||
|
||||
static void PokedudeHandleTrainerSlide(void)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
||||
@@ -1859,7 +1859,7 @@ static void PokedudeHandleIntroTrainerBallThrow(void)
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
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;
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
@@ -1117,7 +1117,7 @@ void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
||||
|
||||
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFARE;
|
||||
sBattleBuffersTransferData[1] = songId;
|
||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
|
||||
@@ -452,7 +452,7 @@ void DecompressTrainerBackPalette(u16 index, u8 palette)
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20);
|
||||
}
|
||||
|
||||
void BattleGfxSfxDummy3(u8 a1)
|
||||
void BattleGfxSfxDummy3(u8 gender)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
const struct MonCoords gTrainerBackPicCoords[] = {
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4}
|
||||
[TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5},
|
||||
[TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5},
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_POKEDUDE] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_OLD_MAN] = {.size = 8, .y_offset = 4}
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
|
||||
|
||||
+8
-8
@@ -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,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -1517,7 +1517,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||
.callback = SpriteCB_AllyMon,
|
||||
},
|
||||
{
|
||||
[TRAINER_BACK_PIC_LEAF] = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -1526,7 +1526,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||
.callback = SpriteCB_AllyMon,
|
||||
},
|
||||
{
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -1535,7 +1535,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||
.callback = SpriteCB_AllyMon,
|
||||
},
|
||||
{
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -1544,7 +1544,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||
.callback = SpriteCB_AllyMon,
|
||||
},
|
||||
{
|
||||
[TRAINER_BACK_PIC_POKEDUDE] = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -1553,7 +1553,7 @@ const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
|
||||
.affineAnims = gAffineAnims_BattleSpritePlayerSide,
|
||||
.callback = SpriteCB_AllyMon,
|
||||
},
|
||||
{
|
||||
[TRAINER_BACK_PIC_OLD_MAN] = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = 0,
|
||||
.oam = &gOamData_BattlerPlayer,
|
||||
@@ -2755,7 +2755,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
|
||||
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
|
||||
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
|
||||
{
|
||||
gMultiuseSpriteTemplate = gSpriteTemplates_TrainerBackpics[trainerSpriteId];
|
||||
gMultiuseSpriteTemplate = sTrainerBackSpriteTemplates[trainerSpriteId];
|
||||
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
|
||||
}
|
||||
else
|
||||
|
||||
@@ -202,9 +202,9 @@ static bool8 LoadBattlerSpriteGfx(u8 battler)
|
||||
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
|
||||
}
|
||||
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.
|
||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, battler);
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, battler);
|
||||
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user