Merge branch 'upcoming' into dynamax

This commit is contained in:
Eduardo Quezada D'Ottone 2023-10-18 19:37:09 -03:00 committed by GitHub
commit d153947aa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 3008 additions and 2475 deletions

View File

@ -10,6 +10,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
env:
GAME_VERSION: EMERALD
GAME_REVISION: 0
@ -27,7 +28,7 @@ jobs:
repository: pret/agbcc
- name: Install binutils
run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev
run: sudo apt install -y build-essential libpng-dev libelf-dev
# build-essential, git, and libpng-dev are already installed
# gcc-arm-none-eabi is only needed for the modern build
# as an alternative to dkP

1
.gitignore vendored
View File

@ -39,3 +39,4 @@ prefabs.json
*.diff
*.sym
*.js
src/data/map_group_count.h

View File

@ -377,6 +377,9 @@ u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset)
u16 tileOffset;
u8 cursor;
if (bg > 3)
return -1;
if (GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE) == 0)
{
tileOffset = (sGpuBgConfigs2[bg].baseTile + destOffset) * 0x20;

View File

@ -54,7 +54,7 @@ void AnimSetCenterToCornerVecX(struct Sprite *sprite);
void BeginBattleIntroDummy(void);
void BeginBattleIntro(void);
void SwitchInClearSetData(u32 battler);
void FaintClearSetData(u32 battler);
const u8* FaintClearSetData(u32 battler);
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(u32 battler);
void SwitchPartyOrder(u32 battlerId);

View File

@ -121,7 +121,7 @@ void PressurePPLoseOnUsingImprison(u8 attacker);
bool32 IsBattlerMarkedForControllerExec(u32 battler);
void MarkBattlerForControllerExec(u32 battler);
void MarkBattlerReceivedLinkData(u32 battler);
void CancelMultiTurnMoves(u32 battler);
const u8* CancelMultiTurnMoves(u32 battler);
bool32 WasUnableToUseMove(u32 battler);
void PrepareStringBattle(u16 stringId, u32 battler);
void ResetSentPokesToOpponentValue(void);

View File

@ -13,7 +13,7 @@ int CountTrailingZeroBits(u32 value);
u16 CalcCRC16(const u8 *data, s32 length);
u16 CalcCRC16WithTable(const u8 *data, u32 length);
u32 CalcByteArraySum(const u8 *data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);
void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output);

View File

@ -281,7 +281,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
u16 species;
int spriteId, newSpriteId;
u16 var0;
u16 bg1Cnt;
u32 bg1Cnt;
struct BattleAnimBgData animBgData;
var0 = 0;
@ -350,7 +350,7 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId)
{
struct BattleAnimBgData animBgData;
struct Sprite *sprite;
u16 bg1Cnt;
u32 bg1Cnt;
gTasks[taskId].data[10] += 4;
gBattle_BG1_Y -= 4;
@ -814,7 +814,7 @@ void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 b
{
u16 species;
u8 spriteId, spriteId2;
u16 bg1Cnt;
u32 bg1Cnt;
struct BattleAnimBgData animBgData;
u8 battler2;
@ -919,7 +919,7 @@ static void UpdateMonScrollingBgMask(u8 taskId)
| WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
if (!IsContest())
{
u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
u32 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
((vBgCnt *)&bg1Cnt)->charBaseBlock = 0;
SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
}

View File

@ -6016,7 +6016,7 @@ static void DecideRoundWinners(u8 roundId)
gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId);
}
// Frontier Brain always wins, check tournamentId2.
else if (DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF)
else if (tournamentId2 != 0xFF && DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF)
{
DOME_TRAINERS[tournamentId1].isEliminated = TRUE;
DOME_TRAINERS[tournamentId1].eliminatedAt = roundId;

View File

@ -11,8 +11,6 @@
#include "trig.h"
#include "constants/trainers.h"
static EWRAM_DATA u16 sBgCnt = 0;
extern const u8 gBattleAnimBgCntSet[];
extern const u8 gBattleAnimBgCntGet[];
@ -40,39 +38,39 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
{
if (bgId < 4)
{
sBgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]);
u32 bgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]);
switch (attributeId)
{
case BG_ANIM_SCREEN_SIZE:
((struct BgCnt *)&sBgCnt)->screenSize = value;
((struct BgCnt *)&bgCnt)->screenSize = value;
break;
case BG_ANIM_AREA_OVERFLOW_MODE:
((struct BgCnt *)&sBgCnt)->areaOverflowMode = value;
((struct BgCnt *)&bgCnt)->areaOverflowMode = value;
break;
case BG_ANIM_MOSAIC:
((struct BgCnt *)&sBgCnt)->mosaic = value;
((struct BgCnt *)&bgCnt)->mosaic = value;
break;
case BG_ANIM_CHAR_BASE_BLOCK:
((struct BgCnt *)&sBgCnt)->charBaseBlock = value;
((struct BgCnt *)&bgCnt)->charBaseBlock = value;
break;
case BG_ANIM_PRIORITY:
((struct BgCnt *)&sBgCnt)->priority = value;
((struct BgCnt *)&bgCnt)->priority = value;
break;
case BG_ANIM_PALETTES_MODE:
((struct BgCnt *)&sBgCnt)->palettes = value;
((struct BgCnt *)&bgCnt)->palettes = value;
break;
case BG_ANIM_SCREEN_BASE_BLOCK:
((struct BgCnt *)&sBgCnt)->screenBaseBlock = value;
((struct BgCnt *)&bgCnt)->screenBaseBlock = value;
break;
}
SetGpuReg(gBattleAnimBgCntSet[bgId], sBgCnt);
SetGpuReg(gBattleAnimBgCntSet[bgId], bgCnt);
}
}
int GetAnimBgAttribute(u8 bgId, u8 attributeId)
{
u16 bgCnt;
u32 bgCnt;
if (bgId < 4)
{

View File

@ -3226,9 +3226,10 @@ void SwitchInClearSetData(u32 battler)
Ai_UpdateSwitchInData(battler);
}
void FaintClearSetData(u32 battler)
const u8* FaintClearSetData(u32 battler)
{
s32 i;
const u8 *result = NULL;
for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE;
@ -3362,7 +3363,7 @@ void FaintClearSetData(u32 battler)
{
gBattleMons[otherSkyDropper].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2);
gBattlerAttacker = otherSkyDropper;
gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 2;
result = BattleScript_ThrashConfuses;
}
}
}
@ -3372,6 +3373,7 @@ void FaintClearSetData(u32 battler)
gBattleStruct->zmove.active = FALSE;
gBattleStruct->zmove.toBeUsed[battler] = MOVE_NONE;
gBattleStruct->zmove.effect = EFFECT_HIT;
return result;
}
static void DoBattleIntro(void)

View File

@ -2803,6 +2803,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) // status change
{
const u8 *cancelMultiTurnMovesResult = NULL;
switch (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect])
{
case STATUS1_SLEEP:
@ -2822,7 +2823,9 @@ void SetMoveEffect(bool32 primary, u32 certain)
if (!CanSleep(gEffectBattler))
break;
CancelMultiTurnMoves(gEffectBattler);
cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler);
if (cancelMultiTurnMovesResult)
gBattlescriptCurrInstr = cancelMultiTurnMovesResult;
statusChanged = TRUE;
break;
case STATUS1_POISON:
@ -2904,7 +2907,9 @@ void SetMoveEffect(bool32 primary, u32 certain)
if (!CanBeFrozen(gEffectBattler))
break;
CancelMultiTurnMoves(gEffectBattler);
cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler);
if (cancelMultiTurnMovesResult)
gBattlescriptCurrInstr = cancelMultiTurnMovesResult;
statusChanged = TRUE;
break;
case STATUS1_PARALYSIS:
@ -3828,7 +3833,7 @@ static void Cmd_cleareffectsonfaint(void)
if (gBattleControllerExecFlags == 0)
{
u32 battler = GetBattlerForBattleScript(cmd->battler);
const u8 *clearDataResult = NULL;
if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[battler].hp == 0)
{
gBattleMons[battler].status1 = 0;
@ -3836,8 +3841,11 @@ static void Cmd_cleareffectsonfaint(void)
MarkBattlerForControllerExec(battler);
}
FaintClearSetData(battler); // Effects like attractions, trapping, etc.
gBattlescriptCurrInstr = cmd->nextInstr;
clearDataResult = FaintClearSetData(battler); // Effects like attractions, trapping, etc.
if (clearDataResult)
gBattlescriptCurrInstr = clearDataResult;
else
gBattlescriptCurrInstr = cmd->nextInstr;
}
}
@ -8765,7 +8773,13 @@ static void Cmd_various(void)
case VARIOUS_CANCEL_MULTI_TURN_MOVES:
{
VARIOUS_ARGS();
CancelMultiTurnMoves(battler);
const u8 *result;
result = CancelMultiTurnMoves(battler);
if (result)
{
gBattlescriptCurrInstr = result;
return;
}
break;
}
case VARIOUS_SET_MAGIC_COAT_TARGET:
@ -13799,7 +13813,7 @@ u16 GetNaturePowerMove(void)
return MOVE_ENERGY_BALL;
else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN)
return MOVE_PSYCHIC;
else if (sNaturePowerMoves == MOVE_NONE)
else if (sNaturePowerMoves[gBattleTerrain] == MOVE_NONE)
return MOVE_TRI_ATTACK;
return sNaturePowerMoves[gBattleTerrain];
}

View File

@ -1341,8 +1341,9 @@ void MarkBattlerReceivedLinkData(u32 battler)
gBattleControllerExecFlags &= ~((1 << 28) << battler);
}
void CancelMultiTurnMoves(u32 battler)
const u8* CancelMultiTurnMoves(u32 battler)
{
const u8 *result = NULL;
gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE);
gBattleMons[battler].status2 &= ~(STATUS2_UPROAR);
@ -1397,14 +1398,14 @@ void CancelMultiTurnMoves(u32 battler)
else if (gBattlescriptCurrInstr[0] == 0x76 && gBattlescriptCurrInstr[2] == 0)
{
gBattlerAttacker = otherSkyDropper;
gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 3;
result = BattleScript_ThrashConfuses;
}
// If this CancelMultiTurnMoves is occuring due to receiving Sleep/Freeze status
else if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT)
{
gBattlerAttacker = otherSkyDropper;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 1;
result = BattleScript_ThrashConfuses;
}
}
}
@ -1419,6 +1420,7 @@ void CancelMultiTurnMoves(u32 battler)
gDisableStructs[battler].rolloutTimer = 0;
gDisableStructs[battler].furyCutterCounter = 0;
return result;
}
bool32 WasUnableToUseMove(u32 battler)

View File

@ -1409,8 +1409,8 @@ static void Task_RaiseCurtainAtStart(u8 taskId)
break;
case 3:
{
u16 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT);
u16 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT);
u32 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT);
u32 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT);
((struct BgCnt *)&bg0Cnt)->priority = 0;
((struct BgCnt *)&bg2Cnt)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt);
@ -2630,8 +2630,8 @@ static void Task_UpdateContestantBoxOrder(u8 taskId)
static void Task_TryStartNextRoundOfAppeals(u8 taskId)
{
vu16 sp0 = GetGpuReg(REG_OFFSET_BG0CNT);
vu16 sp2 = GetGpuReg(REG_OFFSET_BG2CNT);
vu32 sp0 = GetGpuReg(REG_OFFSET_BG0CNT);
vu32 sp2 = GetGpuReg(REG_OFFSET_BG2CNT);
((vBgCnt *)&sp0)->priority = 0;
((vBgCnt *)&sp2)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, sp0);
@ -5055,7 +5055,7 @@ bool8 IsContestantAllowedToCombo(u8 contestant)
static void SetBgForCurtainDrop(void)
{
s32 i;
u16 bg0Cnt, bg1Cnt, bg2Cnt;
u32 bg0Cnt, bg1Cnt, bg2Cnt;
bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
((vBgCnt *)&bg1Cnt)->priority = 0;
@ -5093,7 +5093,7 @@ static void SetBgForCurtainDrop(void)
static void UpdateContestantBoxOrder(void)
{
s32 i;
u16 bg1Cnt;
u32 bg1Cnt;
RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 1);
CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);

File diff suppressed because it is too large Load Diff

View File

@ -2201,6 +2201,8 @@ void ShowFrontierManiacMessage(void)
else
winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN];
break;
default:
return;
}
for (i = 0; i < FRONTIER_MANIAC_MESSAGE_COUNT - 1 && sFrontierManiacStreakThresholds[facility][i] < winStreak; i++);

View File

@ -47,9 +47,9 @@ static bool8 LightenSpritePaletteInFog(u8);
static void BuildColorMaps(void);
static void UpdateWeatherColorMap(void);
static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex);
static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor);
static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor);
static void ApplyFogBlend(u8 blendCoeff, u16 blendColor);
static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor);
static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor);
static void ApplyFogBlend(u8 blendCoeff, u32 blendColor);
static bool8 FadeInScreen_RainShowShade(void);
static bool8 FadeInScreen_Drought(void);
static bool8 FadeInScreen_FogHorizontal(void);
@ -544,7 +544,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex)
}
}
static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor)
static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor)
{
u16 palOffset;
u16 curPalIndex;
@ -595,7 +595,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap
}
}
static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor)
static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor)
{
struct RGBColor color;
u8 rBlend;
@ -650,7 +650,7 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 b
}
}
static void ApplyFogBlend(u8 blendCoeff, u16 blendColor)
static void ApplyFogBlend(u8 blendCoeff, u32 blendColor)
{
struct RGBColor color;
u8 rBlend;

View File

@ -1409,7 +1409,7 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize,
struct RfuSlotStatusUNI *slotStatus_UNI;
struct RfuSlotStatusNI *slotStatus_NI;
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
if (gRfuLinkStatus->parentChild > MODE_PARENT)
return ERR_MODE_NOT_CONNECTED;
if (!(bmSendSlot & 0xF))
return ERR_SLOT_NO;

File diff suppressed because it is too large Load Diff

View File

@ -366,6 +366,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE,
[SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER,
[SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL,
// Gen 2
[SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE,
[SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE,
@ -466,6 +468,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN,
// Gen 3
[SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE,
@ -490,103 +494,101 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE,
[SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE,
[SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_SURSKIT] = BACK_ANIM_H_SPRING,
[SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE,
[SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE,
[SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH,
[SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE,
[SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED,
[SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_FEEBAS] = BACK_ANIM_H_SPRING,
[SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED,
[SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE,
[SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE,
[SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SEALEO] = BACK_ANIM_V_SHAKE,
[SPECIES_WALREIN] = BACK_ANIM_V_SHAKE,
[SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE,
[SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_MAWILE] = BACK_ANIM_V_SHAKE,
[SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE,
[SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE,
[SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE,
[SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_SLAKING] = BACK_ANIM_H_SHAKE,
[SPECIES_GULPIN] = BACK_ANIM_V_STRETCH,
[SPECIES_SWALOT] = BACK_ANIM_V_STRETCH,
[SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE,
[SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE,
[SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER,
[SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE,
[SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE,
[SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH,
[SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE,
[SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MAWILE] = BACK_ANIM_V_SHAKE,
[SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_LAIRON] = BACK_ANIM_V_SHAKE,
[SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_CASTFORM_SUNNY] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_CASTFORM_RAINY] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_CASTFORM_SNOWY] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE,
[SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_GULPIN] = BACK_ANIM_V_STRETCH,
[SPECIES_SWALOT] = BACK_ANIM_V_STRETCH,
[SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED,
[SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE,
[SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE,
[SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE,
[SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH,
[SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH,
[SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE,
[SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_LILEEP] = BACK_ANIM_H_STRETCH,
[SPECIES_CRADILY] = BACK_ANIM_V_STRETCH,
[SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE,
[SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_FEEBAS] = BACK_ANIM_H_SPRING,
[SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE,
[SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE,
[SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE,
[SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE,
[SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE,
[SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SEALEO] = BACK_ANIM_V_SHAKE,
[SPECIES_WALREIN] = BACK_ANIM_V_SHAKE,
[SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE,
[SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED,
[SPECIES_BAGON] = BACK_ANIM_V_SHAKE,
[SPECIES_SHELGON] = BACK_ANIM_V_SHAKE,
[SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE,
@ -596,16 +598,15 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE,
[SPECIES_REGICE] = BACK_ANIM_V_SHAKE,
[SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE,
[SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE,
[SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE,
[SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER,
[SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE,
[SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE,
[SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC,
// Gen 4
// Gen 4
[SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE,
[SPECIES_GROTLE] = BACK_ANIM_H_SLIDE,
[SPECIES_TORTERRA] = BACK_ANIM_SHAKE_GLOW_GREEN,
@ -713,43 +714,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_ARCEUS] = BACK_ANIM_GROW,
//Gen 4 Forms
[SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER,
[SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_DEOXYS_SPEED] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE,
[SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE,
[SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE,
[SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE,
[SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING,
[SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE,
[SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER,
[SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER,
// Gen 5
[SPECIES_VICTINI] = BACK_ANIM_H_SHAKE,
[SPECIES_SNIVY] = BACK_ANIM_H_SLIDE,
@ -907,29 +872,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
//Gen 5 Forms
[SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE,
[SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE,
[SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE,
[SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE,
[SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW,
[SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER,
[SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
//Gen 6
// Gen 6
[SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE,
[SPECIES_QUILLADIN] = BACK_ANIM_GROW,
[SPECIES_CHESNAUGHT] = BACK_ANIM_V_SHAKE_LOW,
@ -1002,8 +946,259 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
[SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED,
//Gen 6 Forms
// Gen 7 todo: assign
[SPECIES_ROWLET] = BACK_ANIM_H_VIBRATE,
[SPECIES_DARTRIX] = BACK_ANIM_H_VIBRATE,
[SPECIES_DECIDUEYE] = BACK_ANIM_H_VIBRATE,
[SPECIES_LITTEN] = BACK_ANIM_H_VIBRATE,
[SPECIES_TORRACAT] = BACK_ANIM_H_VIBRATE,
[SPECIES_INCINEROAR] = BACK_ANIM_H_VIBRATE,
[SPECIES_POPPLIO] = BACK_ANIM_H_VIBRATE,
[SPECIES_BRIONNE] = BACK_ANIM_H_VIBRATE,
[SPECIES_PRIMARINA] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKIPEK] = BACK_ANIM_H_VIBRATE,
[SPECIES_TRUMBEAK] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOUCANNON] = BACK_ANIM_H_VIBRATE,
[SPECIES_YUNGOOS] = BACK_ANIM_H_VIBRATE,
[SPECIES_GUMSHOOS] = BACK_ANIM_H_VIBRATE,
[SPECIES_GRUBBIN] = BACK_ANIM_H_VIBRATE,
[SPECIES_CHARJABUG] = BACK_ANIM_H_VIBRATE,
[SPECIES_VIKAVOLT] = BACK_ANIM_H_VIBRATE,
[SPECIES_CRABRAWLER] = BACK_ANIM_H_VIBRATE,
[SPECIES_CRABOMINABLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_ORICORIO] = BACK_ANIM_H_VIBRATE,
[SPECIES_CUTIEFLY] = BACK_ANIM_H_VIBRATE,
[SPECIES_RIBOMBEE] = BACK_ANIM_H_VIBRATE,
[SPECIES_ROCKRUFF] = BACK_ANIM_H_VIBRATE,
[SPECIES_LYCANROC] = BACK_ANIM_H_VIBRATE,
[SPECIES_WISHIWASHI] = BACK_ANIM_H_VIBRATE,
[SPECIES_MAREANIE] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOXAPEX] = BACK_ANIM_H_VIBRATE,
[SPECIES_MUDBRAY] = BACK_ANIM_H_VIBRATE,
[SPECIES_MUDSDALE] = BACK_ANIM_H_VIBRATE,
[SPECIES_DEWPIDER] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARAQUANID] = BACK_ANIM_H_VIBRATE,
[SPECIES_FOMANTIS] = BACK_ANIM_H_VIBRATE,
[SPECIES_LURANTIS] = BACK_ANIM_H_VIBRATE,
[SPECIES_MORELULL] = BACK_ANIM_H_VIBRATE,
[SPECIES_SHIINOTIC] = BACK_ANIM_H_VIBRATE,
[SPECIES_SALANDIT] = BACK_ANIM_H_VIBRATE,
[SPECIES_SALAZZLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_STUFFUL] = BACK_ANIM_H_VIBRATE,
[SPECIES_BEWEAR] = BACK_ANIM_H_VIBRATE,
[SPECIES_BOUNSWEET] = BACK_ANIM_H_VIBRATE,
[SPECIES_STEENEE] = BACK_ANIM_H_VIBRATE,
[SPECIES_TSAREENA] = BACK_ANIM_H_VIBRATE,
[SPECIES_COMFEY] = BACK_ANIM_H_VIBRATE,
[SPECIES_ORANGURU] = BACK_ANIM_H_VIBRATE,
[SPECIES_PASSIMIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_WIMPOD] = BACK_ANIM_H_VIBRATE,
[SPECIES_GOLISOPOD] = BACK_ANIM_H_VIBRATE,
[SPECIES_SANDYGAST] = BACK_ANIM_H_VIBRATE,
[SPECIES_PALOSSAND] = BACK_ANIM_H_VIBRATE,
[SPECIES_PYUKUMUKU] = BACK_ANIM_H_VIBRATE,
[SPECIES_TYPE_NULL] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR] = BACK_ANIM_H_VIBRATE,
[SPECIES_KOMALA] = BACK_ANIM_H_VIBRATE,
[SPECIES_TURTONATOR] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOGEDEMARU] = BACK_ANIM_H_VIBRATE,
[SPECIES_MIMIKYU] = BACK_ANIM_H_VIBRATE,
[SPECIES_BRUXISH] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRAMPA] = BACK_ANIM_H_VIBRATE,
[SPECIES_DHELMISE] = BACK_ANIM_H_VIBRATE,
[SPECIES_JANGMO_O] = BACK_ANIM_H_VIBRATE,
[SPECIES_HAKAMO_O] = BACK_ANIM_H_VIBRATE,
[SPECIES_KOMMO_O] = BACK_ANIM_H_VIBRATE,
[SPECIES_TAPU_KOKO] = BACK_ANIM_H_VIBRATE,
[SPECIES_TAPU_LELE] = BACK_ANIM_H_VIBRATE,
[SPECIES_TAPU_BULU] = BACK_ANIM_H_VIBRATE,
[SPECIES_TAPU_FINI] = BACK_ANIM_H_VIBRATE,
[SPECIES_COSMOG] = BACK_ANIM_H_VIBRATE,
[SPECIES_COSMOEM] = BACK_ANIM_H_VIBRATE,
[SPECIES_SOLGALEO] = BACK_ANIM_H_VIBRATE,
[SPECIES_LUNALA] = BACK_ANIM_H_VIBRATE,
[SPECIES_NIHILEGO] = BACK_ANIM_H_VIBRATE,
[SPECIES_BUZZWOLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_PHEROMOSA] = BACK_ANIM_H_VIBRATE,
[SPECIES_XURKITREE] = BACK_ANIM_H_VIBRATE,
[SPECIES_CELESTEELA] = BACK_ANIM_H_VIBRATE,
[SPECIES_KARTANA] = BACK_ANIM_H_VIBRATE,
[SPECIES_GUZZLORD] = BACK_ANIM_H_VIBRATE,
[SPECIES_NECROZMA] = BACK_ANIM_H_VIBRATE,
[SPECIES_MAGEARNA] = BACK_ANIM_H_VIBRATE,
[SPECIES_MARSHADOW] = BACK_ANIM_H_VIBRATE,
[SPECIES_POIPOLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_NAGANADEL] = BACK_ANIM_H_VIBRATE,
[SPECIES_STAKATAKA] = BACK_ANIM_H_VIBRATE,
[SPECIES_BLACEPHALON] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZERAORA] = BACK_ANIM_H_VIBRATE,
[SPECIES_MELTAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MELMETAL] = BACK_ANIM_H_VIBRATE,
// Gen 8 todo: assign
[SPECIES_GROOKEY] = BACK_ANIM_H_VIBRATE,
[SPECIES_THWACKEY] = BACK_ANIM_H_VIBRATE,
[SPECIES_RILLABOOM] = BACK_ANIM_H_VIBRATE,
[SPECIES_SCORBUNNY] = BACK_ANIM_H_VIBRATE,
[SPECIES_RABOOT] = BACK_ANIM_H_VIBRATE,
[SPECIES_CINDERACE] = BACK_ANIM_H_VIBRATE,
[SPECIES_SOBBLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRIZZILE] = BACK_ANIM_H_VIBRATE,
[SPECIES_INTELEON] = BACK_ANIM_H_VIBRATE,
[SPECIES_SKWOVET] = BACK_ANIM_H_VIBRATE,
[SPECIES_GREEDENT] = BACK_ANIM_H_VIBRATE,
[SPECIES_ROOKIDEE] = BACK_ANIM_H_VIBRATE,
[SPECIES_CORVISQUIRE] = BACK_ANIM_H_VIBRATE,
[SPECIES_CORVIKNIGHT] = BACK_ANIM_H_VIBRATE,
[SPECIES_BLIPBUG] = BACK_ANIM_H_VIBRATE,
[SPECIES_DOTTLER] = BACK_ANIM_H_VIBRATE,
[SPECIES_ORBEETLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_NICKIT] = BACK_ANIM_H_VIBRATE,
[SPECIES_THIEVUL] = BACK_ANIM_H_VIBRATE,
[SPECIES_GOSSIFLEUR] = BACK_ANIM_H_VIBRATE,
[SPECIES_ELDEGOSS] = BACK_ANIM_H_VIBRATE,
[SPECIES_WOOLOO] = BACK_ANIM_H_VIBRATE,
[SPECIES_DUBWOOL] = BACK_ANIM_H_VIBRATE,
[SPECIES_CHEWTLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_DREDNAW] = BACK_ANIM_H_VIBRATE,
[SPECIES_YAMPER] = BACK_ANIM_H_VIBRATE,
[SPECIES_BOLTUND] = BACK_ANIM_H_VIBRATE,
[SPECIES_ROLYCOLY] = BACK_ANIM_H_VIBRATE,
[SPECIES_CARKOL] = BACK_ANIM_H_VIBRATE,
[SPECIES_COALOSSAL] = BACK_ANIM_H_VIBRATE,
[SPECIES_APPLIN] = BACK_ANIM_H_VIBRATE,
[SPECIES_FLAPPLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_APPLETUN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILICOBRA] = BACK_ANIM_H_VIBRATE,
[SPECIES_SANDACONDA] = BACK_ANIM_H_VIBRATE,
[SPECIES_CRAMORANT] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARROKUDA] = BACK_ANIM_H_VIBRATE,
[SPECIES_BARRASKEWDA] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOXEL] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOXTRICITY] = BACK_ANIM_H_VIBRATE,
[SPECIES_SIZZLIPEDE] = BACK_ANIM_H_VIBRATE,
[SPECIES_CENTISKORCH] = BACK_ANIM_H_VIBRATE,
[SPECIES_CLOBBOPUS] = BACK_ANIM_H_VIBRATE,
[SPECIES_GRAPPLOCT] = BACK_ANIM_H_VIBRATE,
[SPECIES_SINISTEA] = BACK_ANIM_H_VIBRATE,
[SPECIES_POLTEAGEIST] = BACK_ANIM_H_VIBRATE,
[SPECIES_HATENNA] = BACK_ANIM_H_VIBRATE,
[SPECIES_HATTREM] = BACK_ANIM_H_VIBRATE,
[SPECIES_HATTERENE] = BACK_ANIM_H_VIBRATE,
[SPECIES_IMPIDIMP] = BACK_ANIM_H_VIBRATE,
[SPECIES_MORGREM] = BACK_ANIM_H_VIBRATE,
[SPECIES_GRIMMSNARL] = BACK_ANIM_H_VIBRATE,
[SPECIES_OBSTAGOON] = BACK_ANIM_H_VIBRATE,
[SPECIES_PERRSERKER] = BACK_ANIM_H_VIBRATE,
[SPECIES_CURSOLA] = BACK_ANIM_H_VIBRATE,
[SPECIES_SIRFETCHD] = BACK_ANIM_H_VIBRATE,
[SPECIES_MR_RIME] = BACK_ANIM_H_VIBRATE,
[SPECIES_RUNERIGUS] = BACK_ANIM_H_VIBRATE,
[SPECIES_MILCERY] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE] = BACK_ANIM_H_VIBRATE,
[SPECIES_FALINKS] = BACK_ANIM_H_VIBRATE,
[SPECIES_PINCURCHIN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SNOM] = BACK_ANIM_H_VIBRATE,
[SPECIES_FROSMOTH] = BACK_ANIM_H_VIBRATE,
[SPECIES_STONJOURNER] = BACK_ANIM_H_VIBRATE,
[SPECIES_EISCUE] = BACK_ANIM_H_VIBRATE,
[SPECIES_INDEEDEE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MORPEKO] = BACK_ANIM_H_VIBRATE,
[SPECIES_CUFANT] = BACK_ANIM_H_VIBRATE,
[SPECIES_COPPERAJAH] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRACOZOLT] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARCTOZOLT] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRACOVISH] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARCTOVISH] = BACK_ANIM_H_VIBRATE,
[SPECIES_DURALUDON] = BACK_ANIM_H_VIBRATE,
[SPECIES_DREEPY] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRAKLOAK] = BACK_ANIM_H_VIBRATE,
[SPECIES_DRAGAPULT] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZACIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZAMAZENTA] = BACK_ANIM_H_VIBRATE,
[SPECIES_ETERNATUS] = BACK_ANIM_H_VIBRATE,
[SPECIES_KUBFU] = BACK_ANIM_H_VIBRATE,
[SPECIES_URSHIFU] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZARUDE] = BACK_ANIM_H_VIBRATE,
[SPECIES_REGIELEKI] = BACK_ANIM_H_VIBRATE,
[SPECIES_REGIDRAGO] = BACK_ANIM_H_VIBRATE,
[SPECIES_GLASTRIER] = BACK_ANIM_H_VIBRATE,
[SPECIES_SPECTRIER] = BACK_ANIM_H_VIBRATE,
[SPECIES_CALYREX] = BACK_ANIM_H_VIBRATE,
[SPECIES_WYRDEER] = BACK_ANIM_H_VIBRATE,
[SPECIES_KLEAVOR] = BACK_ANIM_H_VIBRATE,
[SPECIES_URSALUNA] = BACK_ANIM_H_VIBRATE,
[SPECIES_BASCULEGION] = BACK_ANIM_H_VIBRATE,
[SPECIES_SNEASLER] = BACK_ANIM_H_VIBRATE,
[SPECIES_OVERQWIL] = BACK_ANIM_H_VIBRATE,
[SPECIES_ENAMORUS] = BACK_ANIM_H_VIBRATE,
// Gen 3 Forms
[SPECIES_CASTFORM_SUNNY] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_CASTFORM_RAINY] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_CASTFORM_SNOWY] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_DEOXYS_ATTACK] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_DEOXYS_SPEED] = BACK_ANIM_TRIANGLE_DOWN,
// Gen 4 Forms
[SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE,
[SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE,
[SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE,
[SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE,
[SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING,
[SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE,
[SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW,
[SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE,
[SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER,
[SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER,
[SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER,
//Gen 5 Forms
[SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_BASCULIN_WHITE_STRIPED] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE,
[SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE,
[SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE,
[SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE,
[SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE,
[SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE,
[SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW,
[SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER,
[SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED,
[SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER,
[SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN,
[SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
[SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
//Gen 6 Forms
[SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH,
[SPECIES_VIVILLON_POLAR] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
@ -1061,8 +1256,137 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW,
//Gen 6 Megas (Thanks Furret/CyanSMP64!)
// Gen 7 Forms todo: assign
[SPECIES_ORICORIO_POM_POM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ORICORIO_PAU] = BACK_ANIM_H_VIBRATE,
[SPECIES_ORICORIO_SENSU] = BACK_ANIM_H_VIBRATE,
[SPECIES_ROCKRUFF_OWN_TEMPO] = BACK_ANIM_H_VIBRATE,
[SPECIES_LYCANROC_MIDNIGHT] = BACK_ANIM_H_VIBRATE,
[SPECIES_LYCANROC_DUSK] = BACK_ANIM_H_VIBRATE,
[SPECIES_WISHIWASHI_SCHOOL] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_FIGHTING] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_FLYING] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_POISON] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_GROUND] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_ROCK] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_BUG] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_GHOST] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_STEEL] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_FIRE] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_WATER] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_GRASS] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_ELECTRIC] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_PSYCHIC] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_ICE] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_DRAGON] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_DARK] = BACK_ANIM_H_VIBRATE,
[SPECIES_SILVALLY_FAIRY] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_ORANGE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_YELLOW] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_GREEN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_BLUE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_INDIGO] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_METEOR_VIOLET] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_RED] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_ORANGE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_YELLOW] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_GREEN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_BLUE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_INDIGO] = BACK_ANIM_H_VIBRATE,
[SPECIES_MINIOR_CORE_VIOLET] = BACK_ANIM_H_VIBRATE,
[SPECIES_MIMIKYU_BUSTED] = BACK_ANIM_H_VIBRATE,
[SPECIES_NECROZMA_DUSK_MANE] = BACK_ANIM_H_VIBRATE,
[SPECIES_NECROZMA_DAWN_WINGS] = BACK_ANIM_H_VIBRATE,
[SPECIES_NECROZMA_ULTRA] = BACK_ANIM_H_VIBRATE,
[SPECIES_MAGEARNA_ORIGINAL_COLOR] = BACK_ANIM_H_VIBRATE,
// Gen 8 Forms todo: assign
[SPECIES_CRAMORANT_GULPING] = BACK_ANIM_H_VIBRATE,
[SPECIES_CRAMORANT_GORGING] = BACK_ANIM_H_VIBRATE,
[SPECIES_TOXTRICITY_LOW_KEY] = BACK_ANIM_H_VIBRATE,
[SPECIES_SINISTEA_ANTIQUE] = BACK_ANIM_H_VIBRATE,
[SPECIES_POLTEAGEIST_ANTIQUE] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_RUBY_CREAM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_MATCHA_CREAM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_MINT_CREAM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_LEMON_CREAM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_SALTED_CREAM] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_RUBY_SWIRL] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_CARAMEL_SWIRL] = BACK_ANIM_H_VIBRATE,
[SPECIES_ALCREMIE_RAINBOW_SWIRL] = BACK_ANIM_H_VIBRATE,
[SPECIES_EISCUE_NOICE_FACE] = BACK_ANIM_H_VIBRATE,
[SPECIES_INDEEDEE_FEMALE] = BACK_ANIM_H_VIBRATE,
[SPECIES_MORPEKO_HANGRY] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZACIAN_CROWNED_SWORD] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZAMAZENTA_CROWNED_SHIELD] = BACK_ANIM_H_VIBRATE,
[SPECIES_ETERNATUS_ETERNAMAX] = BACK_ANIM_H_VIBRATE,
[SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZARUDE_DADA] = BACK_ANIM_H_VIBRATE,
[SPECIES_CALYREX_ICE_RIDER] = BACK_ANIM_H_VIBRATE,
[SPECIES_CALYREX_SHADOW_RIDER] = BACK_ANIM_H_VIBRATE,
[SPECIES_BASCULEGION_FEMALE] = BACK_ANIM_H_VIBRATE,
// Alolan Forms
[SPECIES_RATTATA_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_RATICATE_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_RAICHU_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SANDSHREW_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SANDSLASH_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_VULPIX_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_NINETALES_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_DIGLETT_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_DUGTRIO_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MEOWTH_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_PERSIAN_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_GEODUDE_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_GRAVELER_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_GOLEM_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_GRIMER_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MUK_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_EXEGGUTOR_ALOLAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MAROWAK_ALOLAN] = BACK_ANIM_H_VIBRATE,
// Galarian Forms
[SPECIES_MEOWTH_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_PONYTA_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_RAPIDASH_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SLOWPOKE_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SLOWBRO_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_FARFETCHD_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_WEEZING_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MR_MIME_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARTICUNO_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZAPDOS_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_MOLTRES_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SLOWKING_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_CORSOLA_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZIGZAGOON_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_LINOONE_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_DARUMAKA_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_DARMANITAN_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_YAMASK_GALARIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_STUNFISK_GALARIAN] = BACK_ANIM_H_VIBRATE,
// Hisuian Forms
[SPECIES_GROWLITHE_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ARCANINE_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_VOLTORB_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ELECTRODE_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_TYPHLOSION_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_QWILFISH_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SNEASEL_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SAMUROTT_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_LILLIGANT_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZORUA_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_ZOROARK_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_BRAVIARY_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_SLIGGOO_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_GOODRA_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_AVALUGG_HISUIAN] = BACK_ANIM_H_VIBRATE,
[SPECIES_DECIDUEYE_HISUIAN] = BACK_ANIM_H_VIBRATE,
// Mega/Primal Forms (Thanks Furret/CyanSMP64!)
[SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_CHARIZARD_MEGA_Y] = BACK_ANIM_SHAKE_GLOW_RED,
@ -1111,7 +1435,23 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] =
[SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN,
[SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE,
[SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED,
// Other Forms
[SPECIES_PIKACHU_COSPLAY] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_ROCK_STAR] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_BELLE] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_POP_STAR] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_PH_D] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_LIBRE] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_ORIGINAL_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_HOENN_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_SINNOH_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_UNOVA_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_KALOS_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_ALOLA_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_PARTNER_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PIKACHU_WORLD_CAP] = BACK_ANIM_H_VIBRATE,
[SPECIES_PICHU_SPIKY_EARED] = BACK_ANIM_H_VIBRATE,
};
// Equivalent to struct YellowFlashData, but doesn't match as a struct

View File

@ -107,22 +107,22 @@ static bool8 IsAddingPokeNewsDisallowed(u8);
static void ClearPokeNewsBySlot(u8);
static void TranslateRubyShows(TVShow *);
static void TranslateJapaneseEmeraldShows(TVShow *);
static void SetMixedTVShows(TVShow *, TVShow *, TVShow *, TVShow *);
static void SetMixedTVShows(TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT]);
static void DeleteExcessMixedShows(void);
static void DeactivateShowsWithUnseenSpecies(void);
static void DeactivateGameCompleteShowsIfNotUnlocked(void);
static s8 FindInactiveShowInArray(TVShow *);
static bool8 TryMixTVShow(TVShow *[], TVShow *[], u8);
static bool8 TryMixTVShow(TVShow *[TV_SHOWS_COUNT], TVShow *[TV_SHOWS_COUNT], u8);
static bool8 TryMixNormalTVShow(TVShow *, TVShow *, u8);
static bool8 TryMixRecordMixTVShow(TVShow *, TVShow *, u8);
static bool8 TryMixOutbreakTVShow(TVShow *, TVShow *, u8);
static void DeactivateShow(u8 showIdx);
static void DeactivateShowIfNotSeenSpecies(u16, u8);
static void SetMixedPokeNews(PokeNews *, PokeNews *, PokeNews *, PokeNews *);
static void SetMixedPokeNews(PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT]);
static void ClearInvalidPokeNews(void);
static void ClearPokeNewsIfGameNotComplete(void);
static s8 GetPokeNewsSlotIfActive(PokeNews *, u8);
static void InitTryMixPokeNewsShow(PokeNews *[], PokeNews *[]);
static void InitTryMixPokeNewsShow(PokeNews *[POKE_NEWS_COUNT], PokeNews *[POKE_NEWS_COUNT]);
static bool8 TryMixPokeNewsShow(PokeNews *, PokeNews *, s8);
static void TVShowDone(void);
static void InterviewAfter_FanClubLetter(void);

View File

@ -261,7 +261,7 @@ u32 CalcByteArraySum(const u8 *data, u32 length)
return sum;
}
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor)
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor)
{
u16 i;
for (i = 0; i < numEntries; i++)