diff options
39 files changed, 474 insertions, 458 deletions
diff --git a/common_syms/battle_anim_special.txt b/common_syms/battle_anim_special.txt index 7e68496a0..5e2e8b3ff 100644 --- a/common_syms/battle_anim_special.txt +++ b/common_syms/battle_anim_special.txt @@ -1,3 +1,3 @@ -sUnknown_3005424 -sUnknown_3005428 -sUnknown_300542C +gMonShrinkDuration +gMonShrinkDelta +gMonShrinkDistance diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 8884e9853..b285a148a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -10557,7 +10557,7 @@ General_SubstituteAppear:: @ 81D5C04 end General_BaitThrow:: @ 81D5C0C - createvisualtask sub_80F1C8C, 2, 0 + createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 createvisualtask AnimTask_LoadBaitGfx, 2, delay 0 waitplaysewithpan SE_M_JUMP_KICK, 192, 22 @@ -10898,7 +10898,7 @@ General_WishHeal:: @ 81D6250 end General_MonScared:: @ 81D628A - createvisualtask sub_80F1C8C, 2, 1 + createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish loadspritegfx ANIM_TAG_SWEAT_BEAD createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 10, 26336 @@ -10915,7 +10915,7 @@ General_MonScared:: @ 81D628A end General_GhostGetOut:: @ 81D6301 - createvisualtask sub_80F1C8C, 2, 1 + createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish fadetobg 2 waitbgfadeout @@ -10950,7 +10950,7 @@ General_SilphScoped:: @ 81D637B end General_SafariRockThrow:: @ 81D6394 - createvisualtask sub_80F1C8C, 2, 0 + createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 waitforvisualfinish loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT @@ -10970,14 +10970,14 @@ General_SafariRockThrow:: @ 81D6394 end General_SafariReaction:: @ 81D63DC - createvisualtask sub_80F1CE4, 2, + createvisualtask AnimTask_SafariGetReaction, 2, waitforvisualfinish - jumpargeq 7, 0, gUnknown_81D63FD - jumpargeq 7, 1, gUnknown_81D6425 - jumpargeq 7, 2, gUnknown_81D644E + jumpargeq 7, 0, SafariReaction_WatchingCarefully + jumpargeq 7, 1, SafariReaction_Angry + jumpargeq 7, 2, SafariReaction_Eating end -gUnknown_81D63FD:: @ 81D63FD +SafariReaction_WatchingCarefully:: @ 81D63FD playsewithpan SE_M_TAKE_DOWN, 63 createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 96, 0, 2 waitforvisualfinish @@ -10985,7 +10985,7 @@ gUnknown_81D63FD:: @ 81D63FD createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, -96, 0, 2 end -gUnknown_81D6425:: @ 81D6425 +SafariReaction_Angry:: @ 81D6425 loadspritegfx ANIM_TAG_ANGER createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20 playsewithpan SE_M_SWAGGER2, 63 @@ -10995,7 +10995,7 @@ gUnknown_81D6425:: @ 81D6425 playsewithpan SE_M_SWAGGER2, 63 end -gUnknown_81D644E:: @ 81D644E +SafariReaction_Eating:: @ 81D644E playsewithpan SE_M_TAKE_DOWN, 63 createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2 waitforvisualfinish diff --git a/include/battle_anim.h b/include/battle_anim.h index 866ca663e..05cba4e34 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -36,6 +36,15 @@ struct BattleAnimBackground #define ANIM_ARGS_COUNT 8 +// Linear Translation +#define sTransl_Speed data[0] +#define sTransl_Duration data[0] // for Fast +#define sTransl_InitX data[1] +#define sTransl_DestX data[2] +#define sTransl_InitY data[3] +#define sTransl_DestY data[4] +#define sTransl_ArcAmpl data[5] + extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; @@ -129,7 +138,7 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; void MoveBattlerSpriteToBG(u8 battlerId, u8); -void sub_8073128(u8); +void ResetBattleAnimBg(u8); void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -306,12 +315,12 @@ void AnimKnockOffStrike(struct Sprite *); void AnimRecycle(struct Sprite *); // battle_anim_special.c -void sub_80F1720(u8 battler, struct Pokemon *mon); +void TryShinyAnimation(u8 battler, struct Pokemon *mon); u8 ItemIdToBallId(u16 itemId); -u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); +u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -void sub_80EEFC8(u8 *, u8 *, u8 battlerId); -void sub_80EF0E0(u8 batterId); +void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId); +void DoFreeHealthboxPalsForLevelUp(u8 batterId); enum { @@ -382,7 +391,7 @@ u8 GetBattlerPosition(u8 battlerId); u8 GetBattlerAtPosition(u8 position); bool8 IsBattlerSpritePresent(u8 battlerId); bool8 IsDoubleBattle(void); -void sub_80752A0(struct BattleAnimBgData *animBgData); +void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData); void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1); void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused); void sub_8075358(u32 bgId); @@ -397,7 +406,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); void sub_80755B8(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); -void sub_807563C(struct Sprite *sprite); +void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); void sub_8075678(struct Sprite *sprite); void sub_80756A4(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); diff --git a/include/battle_main.h b/include/battle_main.h index fe585f0e6..424fb25b1 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -80,8 +80,8 @@ void sub_8012100(struct Sprite *sprite); void sub_8012110(struct Sprite *sprite); void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); void EndBounceEffect(u8 battler, u8 which); -void sub_8012354(struct Sprite *sprite); -void sub_801236C(struct Sprite *sprite); +void SpriteCB_PlayerThrowInit(struct Sprite *sprite); +void UpdatePlayerPosInThrowAnim(struct Sprite *sprite); void nullsub_12(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); diff --git a/include/gba/defines.h b/include/gba/defines.h index 28f804dff..ce276862c 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -16,8 +16,10 @@ #if MODERN #define NOINLINE __attribute__((noinline)) +#define HERE __attribute__((no_reorder)) #else #define NOINLINE +#define HERE #endif #define ALIGNED(n) __attribute__((aligned(n))) @@ -92,7 +94,15 @@ #define RGB_CYAN RGB(0, 31, 31) #define RGB_WHITEALPHA (RGB_WHITE | 0x8000) +// Some functions are strictly inline asm #define NAKED __attribute__((naked)) + +// Silence IDE warnings +#if __GNUC__ >= 4 +#define USED __attribute__((used)) +#else +#define USED +#endif #define UNUSED __attribute__((unused)) #endif // GUARD_GBA_DEFINES diff --git a/include/global.h b/include/global.h index fba89427c..04adc82cb 100644 --- a/include/global.h +++ b/include/global.h @@ -31,9 +31,7 @@ #define __(x) (x) #endif // __APPLE__ -#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) -// GF's lingo -#define NELEMS ARRAY_COUNT +#define NELEMS(array) (sizeof(array) / sizeof((array)[0])) #define SWAP(a, b, temp) \ { \ @@ -293,7 +291,7 @@ struct SaveBlock2 /*0xB10*/ struct BerryPickingResults berryPick; /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; -}; +}; // size: 0xF24 extern struct SaveBlock2 *gSaveBlock2Ptr; @@ -826,7 +824,7 @@ struct SaveBlock1 /*0x3D24*/ u8 filler3D24[0x10]; /*0x3D34*/ u32 towerChallengeId; /*0x3D38*/ struct TrainerTower trainerTower[NUM_TOWER_CHALLENGE_TYPES]; -}; +}; // size: 0x3D68 struct MapPosition { diff --git a/include/load_save.h b/include/load_save.h index 23c1429ed..95de991a8 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -6,6 +6,7 @@ extern bool32 gFlashMemoryPresent; extern struct SaveBlock1 gSaveBlock1; extern struct SaveBlock2 gSaveBlock2; +extern struct PokemonStorage gPokemonStorage; void ClearSav2(void); void ClearSav1(void); diff --git a/src/battle_anim.c b/src/battle_anim.c index 41f44a42c..f9b620025 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -2259,7 +2259,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2) RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, DMA3_32BIT); RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, DMA3_32BIT); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); CpuFill16(toBG_2, animBg.bgTiles, 0x1000); CpuFill16(toBG_2, animBg.bgTilemap, 0x800); @@ -2326,10 +2326,10 @@ void sub_80730C0(u16 a, u16 *b, s32 c, u8 d) } } -void sub_8073128(bool8 to_BG2) +void ResetBattleAnimBg(bool8 to_BG2) { struct BattleAnimBgData animBg; - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); if (!to_BG2) { @@ -2353,7 +2353,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) spriteId = gTasks[taskId].data[0]; palIndex = gTasks[taskId].data[6]; - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x); y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y); @@ -2429,13 +2429,13 @@ static void sub_807331C(u8 taskId) if (sMonAnimTaskIdArray[0] != 0xFF) { - sub_8073128(toBG_2); + ResetBattleAnimBg(toBG_2); DestroyTask(sMonAnimTaskIdArray[0]); sMonAnimTaskIdArray[0] = 0xFF; } if (gTasks[taskId].data[0] > 1) { - sub_8073128(toBG_2 ^ 1); + ResetBattleAnimBg(toBG_2 ^ 1); DestroyTask(sMonAnimTaskIdArray[1]); sMonAnimTaskIdArray[1] = 0xFF; } @@ -2541,10 +2541,10 @@ static void sub_8073558(u8 taskId) toBG_2 = TRUE; if (IsBattlerSpriteVisible(battlerId)) - sub_8073128(toBG_2); + ResetBattleAnimBg(toBG_2); if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK)) - sub_8073128(toBG_2 ^ 1); + ResetBattleAnimBg(toBG_2 ^ 1); DestroyTask(taskId); } @@ -3303,9 +3303,9 @@ static void ScriptCmd_doublebattle_2D(void) gSprites[spriteId].oam.priority = 3; if (priority == 1) - sub_8073128(FALSE); + ResetBattleAnimBg(FALSE); else - sub_8073128(TRUE); + ResetBattleAnimBg(TRUE); } } } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index ac4e9db30..9d9bc8b2e 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3232,7 +3232,7 @@ void AnimTask_HeartsBackground(u8 taskId) gBattle_BG1_Y = 0; SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBg_AttractTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBg_AttractGfx, animBg.tilesOffset); LoadCompressedPalette(gBattleAnimBg_AttractPal, animBg.paletteId * 16, 32); @@ -3282,7 +3282,7 @@ static void HeartsBackground_Step(u8 taskId) } break; case 3: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(animBg.bgId); gTasks[taskId].data[12]++; break; @@ -3313,7 +3313,7 @@ void AnimTask_ScaryFace(u8 taskId) gBattle_BG1_Y = 0; SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); if (IsContest()) LZDecompressVram(gBattleAnimBgTilemap_ScaryFaceContest, animBg.bgTilemap); @@ -3370,7 +3370,7 @@ static void ScaryFace_Step(u8 taskId) } break; case 3: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(1); sub_8075358(2); gTasks[taskId].data[12]++; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index c259755df..b08783528 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -2287,7 +2287,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32); @@ -2348,7 +2348,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } break; case 4: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(animBg.bgId); if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); @@ -2467,7 +2467,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32); @@ -2540,7 +2540,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) gTasks[taskId].data[0] = 1; break; case 5: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(animBg.bgId); if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index ee5d4017d..d624b36fe 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -695,10 +695,10 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset) void InitAnimArcTranslation(struct Sprite *sprite) { - sprite->data[1] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_InitY = sprite->pos1.y; InitAnimLinearTranslation(sprite); - sprite->data[6] = 0x8000 / sprite->data[0]; + sprite->data[6] = 0x8000 / sprite->sTransl_Speed; sprite->data[7] = 0; } @@ -707,7 +707,7 @@ bool8 TranslateAnimHorizontalArc(struct Sprite *sprite) if (AnimTranslateLinear(sprite)) return TRUE; sprite->data[7] += sprite->data[6]; - sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); + sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->sTransl_ArcAmpl); return FALSE; } @@ -716,7 +716,7 @@ bool8 TranslateAnimVerticalArc(struct Sprite *sprite) if (AnimTranslateLinear(sprite)) return TRUE; sprite->data[7] += sprite->data[6]; - sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); + sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->sTransl_ArcAmpl); return FALSE; } @@ -801,7 +801,7 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } -void sub_80752A0(struct BattleAnimBgData *animBgData) +void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData) { animBgData->bgTiles = gUnknown_2022BB8; animBgData->bgTilemap = (u16 *)gUnknown_2022BBC; @@ -815,7 +815,7 @@ void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1) { if (arg1 == 1) { - sub_80752A0(animBgData); + GetBattleAnimBg1Data(animBgData); } else { @@ -919,15 +919,15 @@ void InitSpriteDataForLinearTranslation(struct Sprite *sprite) void InitAnimLinearTranslation(struct Sprite *sprite) { - s32 x = sprite->data[2] - sprite->data[1]; - s32 y = sprite->data[4] - sprite->data[3]; + s32 x = sprite->sTransl_DestX - sprite->sTransl_InitX; + s32 y = sprite->sTransl_DestY - sprite->sTransl_InitY; bool8 movingLeft = x < 0; bool8 movingUp = y < 0; u16 xDelta = abs(x) << 8; u16 yDelta = abs(y) << 8; - xDelta = xDelta / sprite->data[0]; - yDelta = yDelta / sprite->data[0]; + xDelta = xDelta / sprite->sTransl_Speed; + yDelta = yDelta / sprite->sTransl_Speed; if (movingLeft) xDelta |= 1; @@ -947,17 +947,17 @@ void InitAnimLinearTranslation(struct Sprite *sprite) void StartAnimLinearTranslation(struct Sprite *sprite) { - sprite->data[1] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_InitY = sprite->pos1.y; InitAnimLinearTranslation(sprite); - sprite->callback = sub_807563C; + sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; sprite->callback(sprite); } void sub_80755B8(struct Sprite *sprite) { - sprite->data[1] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_InitY = sprite->pos1.y; InitAnimLinearTranslation(sprite); sprite->callback = sub_8075658; sprite->callback(sprite); @@ -990,7 +990,7 @@ bool8 AnimTranslateLinear(struct Sprite *sprite) return FALSE; } -void sub_807563C(struct Sprite *sprite) +void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -998,39 +998,39 @@ void sub_807563C(struct Sprite *sprite) static void sub_8075658(struct Sprite *sprite) { - sub_801236C(sprite); + UpdatePlayerPosInThrowAnim(sprite); if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); } void sub_8075678(struct Sprite *sprite) { - s32 v1 = abs(sprite->data[2] - sprite->data[1]) << 8; + s32 v1 = abs(sprite->sTransl_DestX - sprite->sTransl_InitX) << 8; - sprite->data[0] = v1 / sprite->data[0]; + sprite->sTransl_Speed = v1 / sprite->sTransl_Duration; InitAnimLinearTranslation(sprite); } void sub_80756A4(struct Sprite *sprite) { - sprite->data[1] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_InitY = sprite->pos1.y; sub_8075678(sprite); - sprite->callback = sub_807563C; + sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; sprite->callback(sprite); } static void InitAnimFastLinearTranslation(struct Sprite *sprite) { - s32 xDiff = sprite->data[2] - sprite->data[1]; - s32 yDiff = sprite->data[4] - sprite->data[3]; + s32 xDiff = sprite->sTransl_DestX - sprite->sTransl_InitX; + s32 yDiff = sprite->sTransl_DestY - sprite->sTransl_InitY; bool8 xSign = xDiff < 0; bool8 ySign = yDiff < 0; u16 x2 = abs(xDiff) << 4; u16 y2 = abs(yDiff) << 4; - x2 /= sprite->data[0]; - y2 /= sprite->data[0]; + x2 /= sprite->sTransl_Duration; + y2 /= sprite->sTransl_Duration; if (xSign) x2 |= 1; else @@ -1047,8 +1047,8 @@ static void InitAnimFastLinearTranslation(struct Sprite *sprite) void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite) { - sprite->data[1] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_InitY = sprite->pos1.y; InitAnimFastLinearTranslation(sprite); sprite->callback = sub_80757E8; sprite->callback(sprite); diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index a919b0371..82d85034e 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -15,7 +15,6 @@ #include "constants/items.h" #include "constants/moves.h" #include "constants/songs.h" -#include "constants/pokemon.h" // Defines #define TAG_PARTICLES_POKEBALL 55020 @@ -31,58 +30,61 @@ #define TAG_PARTICLES_LUXURYBALL 55030 #define TAG_PARTICLES_PREMIERBALL 55031 +#define TAG_HEALTHBOX_PALS_1 55049 +#define TAG_HEALTHBOX_PALS_2 55050 + #define HIHALF(n) (((n) & 0xFFFF0000) >> 16) #define LOHALF(n) ((n) & 0xFFFF) // RAM -int sUnknown_3005424; -u16 sUnknown_3005428; -u16 sUnknown_300542C; +UNUSED u32 gMonShrinkDuration; +UNUSED u16 gMonShrinkDelta; +UNUSED u16 gMonShrinkDistance; // Function Declarations -static void sub_80EEDF4(u8); -static void sub_80EF1CC(u8); -static void sub_80EF698(u8); -static void sub_80EF8C0(struct Sprite *); -static void sub_80EF7EC(u8); -static void sub_80EF864(u8); -static void sub_80EF8F0(struct Sprite *); -static void sub_80F0478(struct Sprite *); -static void sub_80EF9B4(struct Sprite *); -static void sub_80EFA0C(struct Sprite *); -static void sub_80EFB58(struct Sprite *); -static void sub_80EFB9C(struct Sprite *); -static void sub_80EFF80(struct Sprite *); -static void sub_80EFCA0(struct Sprite *); -static void sub_80EFCEC(struct Sprite *); -static void sub_80EFFA4(struct Sprite *); -static void sub_80F02B0(struct Sprite *); -static void sub_80EFFC4(struct Sprite *); -static void sub_80F01B8(struct Sprite *); -static void sub_80F00A4(struct Sprite *); -static void sub_80F018C(struct Sprite *); -static void sub_80F05B4(u8); -static void sub_80F0278(struct Sprite *); -static void sub_80F0378(struct Sprite *); -static void sub_80F04B4(struct Sprite *); +static void AnimTask_UnusedLevelUpHealthBox_Step(u8); +static void AnimTask_FlashHealthboxOnLevelUp_Step(u8); +static void AnimTask_ThrowBall_WaitAnimObjComplete(u8); +static void SpriteCB_ThrowBall_Init(struct Sprite *); +static void AnimTask_ThrowBallSpecial_PlaySfx(u8); +static void AnimTask_ThrowBallSpecial_ResetPlayerSprite(u8); +static void SpriteCB_ThrowBall_ArcFlight(struct Sprite *); +static void TrainerBallBlock(struct Sprite *); +static void SpriteCB_ThrowBall_TenFrameDelay(struct Sprite *); +static void SpriteCB_ThrowBall_ShrinkMon(struct Sprite *); +static void SpriteCB_ThrowBall_InitialFall(struct Sprite *); +static void SpriteCB_ThrowBall_Bounce(struct Sprite *); +static void SpriteCB_ThrowBall_DelayThenBreakOut(struct Sprite *); +static void SpriteCB_ThrowBall_InitShake(struct Sprite *); +static void SpriteCB_ThrowBall_DoShake(struct Sprite *); +static void SpriteCB_ThrowBall_InitClick(struct Sprite *); +static void SpriteCB_ThrowBall_BeginBreakOut(struct Sprite *); +static void SpriteCB_ThrowBall_DoClick(struct Sprite *); +static void CreateStarsWhenBallClicks(struct Sprite *); +static void SpriteCB_ThrowBall_FinishClick(struct Sprite *); +static void BattleAnimObj_SignalEnd(struct Sprite *); +static void LoadBallParticleGfx(u8); +static void SpriteCB_BallCaptureSuccessStar(struct Sprite *); +static void SpriteCB_ThrowBall_RunBreakOut(struct Sprite *); +static void TrainerBallBlock2(struct Sprite *); static void GhostBallDodge(struct Sprite *sprite); -static void sub_80F0574(struct Sprite *sprite); +static void GhostBallDodge2(struct Sprite *sprite); static void PokeBallOpenParticleAnimation_Step1(struct Sprite *); static void PokeBallOpenParticleAnimation_Step2(struct Sprite *); static void DestroyBallOpenAnimationParticle(struct Sprite *); static void FanOutBallOpenParticles_Step1(struct Sprite *); static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *); static void PremierBallOpenParticleAnimation_Step1(struct Sprite *); -static void sub_80F12E0(u8); -static void sub_80F1370(u8); -static void sub_80F13C0(u8); -static void sub_80F181C(u8); -static void sub_80F1A2C(struct Sprite *); -static void sub_80F1A80(struct Sprite *); -static void sub_80F19E0(u8); -static void sub_80F1BCC(struct Sprite *); -static void sub_80F1C04(struct Sprite *); -static void sub_80F1C30(struct Sprite *); +static void Task_FadeMon_ToBallColor(u8); +static void Task_FadeMon_ToNormal(u8); +static void Task_FadeMon_ToNormal_Step(u8); +static void AnimTask_ShinySparkles(u8); +static void SpriteCB_ShinySparkles_1(struct Sprite *); +static void SpriteCB_ShinySparkles_2(struct Sprite *); +static void AnimTask_ShinySparkles_WaitSparkles(u8); +static void SpriteCB_SafariBaitOrRock_WaitPlayerThrow(struct Sprite *); +static void SpriteCB_SafariBaitOrRock_ArcFlight(struct Sprite *); +static void SpriteCB_SafariBaitOrRock_Finish(struct Sprite *); static void PokeBallOpenParticleAnimation(u8); static void GreatBallOpenParticleAnimation(u8); static void SafariBallOpenParticleAnimation(u8); @@ -92,65 +94,65 @@ static void DiveBallOpenParticleAnimation(u8); static void RepeatBallOpenParticleAnimation(u8); static void TimerBallOpenParticleAnimation(u8); static void PremierBallOpenParticleAnimation(u8); -static void sub_80F1B3C(struct Sprite *); +static void SpriteCB_SafariBaitOrRock_Init(struct Sprite *); // Data -struct BallCaptureSuccessStarData +struct CaptureStar { s8 xOffset; s8 yOffset; - s8 unk2; + s8 amplitude; }; -static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] = +static const struct CaptureStar sCaptureStar[] = { { .xOffset = 10, .yOffset = 2, - .unk2 = -3, + .amplitude = -3, }, { .xOffset = 15, .yOffset = 0, - .unk2 = -4, + .amplitude = -4, }, { .xOffset = -10, .yOffset = 2, - .unk2 = -4, + .amplitude = -4, }, }; const struct CompressedSpriteSheet gBallParticleSpritesheets[] = { - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL}, - {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL}, + [BALL_POKE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL}, + [BALL_GREAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL}, + [BALL_SAFARI] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL}, + [BALL_ULTRA] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL}, + [BALL_MASTER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL}, + [BALL_NET] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL}, + [BALL_DIVE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL}, + [BALL_NEST] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL}, + [BALL_REPEAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL}, + [BALL_TIMER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL}, + [BALL_LUXURY] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL}, + [BALL_PREMIER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL}, }; const struct CompressedSpritePalette gBallParticlePalettes[] = { - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL}, - {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL}, + [BALL_POKE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL}, + [BALL_GREAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL}, + [BALL_SAFARI] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL}, + [BALL_ULTRA] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL}, + [BALL_MASTER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL}, + [BALL_NET] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL}, + [BALL_DIVE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL}, + [BALL_NEST] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL}, + [BALL_REPEAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL}, + [BALL_TIMER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL}, + [BALL_LUXURY] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL}, + [BALL_PREMIER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL}, }; static const union AnimCmd sAnim_RegularBall[] = @@ -207,39 +209,39 @@ static const union AnimCmd *const sAnims_BallParticles[] = static const u8 sBallParticleAnimNums[] = { - [BALL_POKE] = 0, - [BALL_GREAT] = 0, - [BALL_SAFARI] = 0, - [BALL_ULTRA] = 5, - [BALL_MASTER] = 1, - [BALL_NET] = 2, - [BALL_DIVE] = 2, - [BALL_NEST] = 3, - [BALL_REPEAT] = 5, - [BALL_TIMER] = 5, - [BALL_LUXURY] = 4, + [BALL_POKE] = 0, + [BALL_GREAT] = 0, + [BALL_SAFARI] = 0, + [BALL_ULTRA] = 5, + [BALL_MASTER] = 1, + [BALL_NET] = 2, + [BALL_DIVE] = 2, + [BALL_NEST] = 3, + [BALL_REPEAT] = 5, + [BALL_TIMER] = 5, + [BALL_LUXURY] = 4, [BALL_PREMIER] = 4, }; static const TaskFunc sBallParticleAnimationFuncs[] = { - PokeBallOpenParticleAnimation, - GreatBallOpenParticleAnimation, - SafariBallOpenParticleAnimation, - UltraBallOpenParticleAnimation, - MasterBallOpenParticleAnimation, - SafariBallOpenParticleAnimation, - DiveBallOpenParticleAnimation, - UltraBallOpenParticleAnimation, - RepeatBallOpenParticleAnimation, - TimerBallOpenParticleAnimation, - GreatBallOpenParticleAnimation, - PremierBallOpenParticleAnimation, + [BALL_POKE] = PokeBallOpenParticleAnimation, + [BALL_GREAT] = GreatBallOpenParticleAnimation, + [BALL_SAFARI] = SafariBallOpenParticleAnimation, + [BALL_ULTRA] = UltraBallOpenParticleAnimation, + [BALL_MASTER] = MasterBallOpenParticleAnimation, + [BALL_NET] = SafariBallOpenParticleAnimation, + [BALL_DIVE] = DiveBallOpenParticleAnimation, + [BALL_NEST] = UltraBallOpenParticleAnimation, + [BALL_REPEAT] = RepeatBallOpenParticleAnimation, + [BALL_TIMER] = TimerBallOpenParticleAnimation, + [BALL_LUXURY] = GreatBallOpenParticleAnimation, + [BALL_PREMIER] = PremierBallOpenParticleAnimation, }; static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = { - { + [BALL_POKE] = { .tileTag = TAG_PARTICLES_POKEBALL, .paletteTag = TAG_PARTICLES_POKEBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -248,7 +250,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_GREAT] = { .tileTag = TAG_PARTICLES_GREATBALL, .paletteTag = TAG_PARTICLES_GREATBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -257,7 +259,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_SAFARI] = { .tileTag = TAG_PARTICLES_SAFARIBALL, .paletteTag = TAG_PARTICLES_SAFARIBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -266,7 +268,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_ULTRA] = { .tileTag = TAG_PARTICLES_ULTRABALL, .paletteTag = TAG_PARTICLES_ULTRABALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -275,7 +277,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_MASTER] = { .tileTag = TAG_PARTICLES_MASTERBALL, .paletteTag = TAG_PARTICLES_MASTERBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -284,7 +286,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_NET] = { .tileTag = TAG_PARTICLES_NETBALL, .paletteTag = TAG_PARTICLES_NETBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -293,7 +295,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_DIVE] = { .tileTag = TAG_PARTICLES_DIVEBALL, .paletteTag = TAG_PARTICLES_DIVEBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -302,7 +304,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_NEST] = { .tileTag = TAG_PARTICLES_NESTBALL, .paletteTag = TAG_PARTICLES_NESTBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -311,7 +313,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_REPEAT] = { .tileTag = TAG_PARTICLES_REPEATBALL, .paletteTag = TAG_PARTICLES_REPEATBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -320,7 +322,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_TIMER] = { .tileTag = TAG_PARTICLES_TIMERBALL, .paletteTag = TAG_PARTICLES_TIMERBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -329,7 +331,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_LUXURY] = { .tileTag = TAG_PARTICLES_LUXURYBALL, .paletteTag = TAG_PARTICLES_LUXURYBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -338,7 +340,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }, - { + [BALL_PREMIER] = { .tileTag = TAG_PARTICLES_PREMIERBALL, .paletteTag = TAG_PARTICLES_PREMIERBALL, .oam = &gOamData_AffineOff_ObjNormal_8x8, @@ -351,17 +353,17 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = static const u16 sBallOpenFadeColors[] = { - [BALL_POKE] = RGB(31, 22, 30), - [BALL_GREAT] = RGB(16, 23, 30), - [BALL_SAFARI] = RGB(23, 30, 20), - [BALL_ULTRA] = RGB(31, 31, 15), - [BALL_MASTER] = RGB(23, 20, 28), - [BALL_NET] = RGB(21, 31, 25), - [BALL_DIVE] = RGB(12, 25, 30), - [BALL_NEST] = RGB(30, 27, 10), - [BALL_REPEAT] = RGB(31, 24, 16), - [BALL_TIMER] = RGB(29, 30, 30), - [BALL_LUXURY] = RGB(31, 17, 10), + [BALL_POKE] = RGB(31, 22, 30), + [BALL_GREAT] = RGB(16, 23, 30), + [BALL_SAFARI] = RGB(23, 30, 20), + [BALL_ULTRA] = RGB(31, 31, 15), + [BALL_MASTER] = RGB(23, 20, 28), + [BALL_NET] = RGB(21, 31, 25), + [BALL_DIVE] = RGB(12, 25, 30), + [BALL_NEST] = RGB(30, 27, 10), + [BALL_REPEAT] = RGB(31, 24, 16), + [BALL_TIMER] = RGB(29, 30, 30), + [BALL_LUXURY] = RGB(31, 17, 10), [BALL_PREMIER] = RGB(31, 9, 10), // Unused @@ -375,7 +377,7 @@ static const u16 sBallOpenFadeColors[] = RGB(4, 0, 0), }; -const struct SpriteTemplate gSafariBaitSpriteTemplate = +USED const struct SpriteTemplate gSafariBaitSpriteTemplate = { .tileTag = ANIM_TAG_SAFARI_BAIT, .paletteTag = ANIM_TAG_SAFARI_BAIT, @@ -383,35 +385,35 @@ const struct SpriteTemplate gSafariBaitSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80F1B3C, + .callback = SpriteCB_SafariBaitOrRock_Init, }; -static const union AnimCmd sUnknown_840C204[] = +static const union AnimCmd sSpriteAnim_SafariRock_0[] = { ANIMCMD_FRAME(64, 1), ANIMCMD_END, }; -static const union AnimCmd *const sSpriteAnimTable_840C20C[] = +static const union AnimCmd *const sSpriteAnimTable_SafariRock[] = { - sUnknown_840C204, + sSpriteAnim_SafariRock_0, }; -const struct SpriteTemplate gSafariRockTemplate = +USED const struct SpriteTemplate gSafariRockTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_840C20C, + .anims = sSpriteAnimTable_SafariRock, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80F1B3C, + .callback = SpriteCB_SafariBaitOrRock_Init, }; // Functions -void sub_80EEC0C(u8 taskId) +UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId) { - struct BattleAnimBgData unknownStruct; + struct BattleAnimBgData animBgData; u8 healthBoxSpriteId; u8 battler; u8 spriteId1, spriteId2, spriteId3, spriteId4; @@ -442,19 +444,19 @@ void sub_80EEC0C(u8 taskId) gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW; gSprites[spriteId3].callback = SpriteCallbackDummy; gSprites[spriteId4].callback = SpriteCallbackDummy; - sub_80752A0(&unknownStruct); - AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_D2EC24_Tilemap); - AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_D2EC24_Gfx, unknownStruct.tilesOffset); - LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32); + GetBattleAnimBg1Data(&animBgData); + AnimLoadCompressedBgTilemap(animBgData.bgId, gUnknown_D2EC24_Tilemap); + AnimLoadCompressedBgGfx(animBgData.bgId, gUnknown_D2EC24_Gfx, animBgData.tilesOffset); + LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32); gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32; gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32; gTasks[taskId].data[1] = 640; gTasks[taskId].data[0] = spriteId3; gTasks[taskId].data[2] = spriteId4; - gTasks[taskId].func = sub_80EEDF4; + gTasks[taskId].func = AnimTask_UnusedLevelUpHealthBox_Step; } -static void sub_80EEDF4(u8 taskId) +static void AnimTask_UnusedLevelUpHealthBox_Step(u8 taskId) { u8 spriteId1, spriteId2; u8 battler; @@ -488,7 +490,7 @@ static void sub_80EEDF4(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); if (gTasks[taskId].data[12] == 0) { - sub_8073128(0); + ResetBattleAnimBg(0); gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); @@ -514,7 +516,7 @@ static void sub_80EEDF4(u8 taskId) } } -void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler) +void DoLoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battler) { u8 healthBoxSpriteId; u8 spriteId1, spriteId2; @@ -523,8 +525,8 @@ void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler) healthBoxSpriteId = gHealthboxSpriteIds[battler]; spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; spriteId2 = gSprites[healthBoxSpriteId].data[5]; - *paletteId1 = AllocSpritePalette(0xD709); - *paletteId2 = AllocSpritePalette(0xD70A); + *paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1); + *paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2); offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20); @@ -534,15 +536,15 @@ void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler) gSprites[spriteId2].oam.paletteNum = *paletteId2; } -void AnimTask_LoadHealthboxPalsForLevelUp(u8 taskId) +USED void AnimTask_LoadHealthboxPalsForLevelUp(u8 taskId) { u8 paletteId1, paletteId2; - sub_80EEFC8(&paletteId1, &paletteId2, gBattleAnimAttacker); + DoLoadHealthboxPalsForLevelUp(&paletteId1, &paletteId2, gBattleAnimAttacker); DestroyAnimVisualTask(taskId); } -void sub_80EF0E0(u8 battler) +void DoFreeHealthboxPalsForLevelUp(u8 battler) { u8 healthBoxSpriteId; u8 spriteId1, spriteId2; @@ -551,29 +553,29 @@ void sub_80EF0E0(u8 battler) healthBoxSpriteId = gHealthboxSpriteIds[battler]; spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; spriteId2 = gSprites[healthBoxSpriteId].data[5]; - FreeSpritePaletteByTag(0xD709); - FreeSpritePaletteByTag(0xD70A); - paletteId1 = IndexOfSpritePaletteTag(0xD6FF); - paletteId2 = IndexOfSpritePaletteTag(0xD704); + FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1); + FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2); + paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL); + paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL); gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; gSprites[spriteId1].oam.paletteNum = paletteId1; gSprites[spriteId2].oam.paletteNum = paletteId2; } -void AnimTask_FreeHealthboxPalsForLevelUp(u8 taskId) +USED void AnimTask_FreeHealthboxPalsForLevelUp(u8 taskId) { - sub_80EF0E0(gBattleAnimAttacker); + DoFreeHealthboxPalsForLevelUp(gBattleAnimAttacker); DestroyAnimVisualTask(taskId); } -void AnimTask_FlashHealthboxOnLevelUp(u8 taskId) +USED void AnimTask_FlashHealthboxOnLevelUp(u8 taskId) { gTasks[taskId].data[10] = gBattleAnimArgs[0]; gTasks[taskId].data[11] = gBattleAnimArgs[1]; - gTasks[taskId].func = sub_80EF1CC; + gTasks[taskId].func = AnimTask_FlashHealthboxOnLevelUp_Step; } -static void sub_80EF1CC(u8 taskId) +static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId) { u8 paletteNum; int paletteOffset, colorOffset; @@ -582,7 +584,7 @@ static void sub_80EF1CC(u8 taskId) if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) { gTasks[taskId].data[0] = 0; - paletteNum = IndexOfSpritePaletteTag(0xD709); + paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1); colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; switch (gTasks[taskId].data[1]) { @@ -610,7 +612,7 @@ static void sub_80EF1CC(u8 taskId) } } -void AnimTask_SwitchOutShrinkMon(u8 taskId) +USED void AnimTask_SwitchOutShrinkMon(u8 taskId) { u8 spriteId; @@ -637,7 +639,7 @@ void AnimTask_SwitchOutShrinkMon(u8 taskId) } } -void AnimTask_SwitchOutBallEffect(u8 taskId) +USED void AnimTask_SwitchOutBallEffect(u8 taskId) { u8 spriteId; u16 ball; @@ -672,7 +674,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) } } -void AnimTask_LoadBallGfx(u8 taskId) +USED void AnimTask_LoadBallGfx(u8 taskId) { u8 ballId = ItemIdToBallId(gLastUsedItem); @@ -680,7 +682,7 @@ void AnimTask_LoadBallGfx(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_FreeBallGfx(u8 taskId) +USED void AnimTask_FreeBallGfx(u8 taskId) { u8 ballId = ItemIdToBallId(gLastUsedItem); @@ -688,7 +690,7 @@ void AnimTask_FreeBallGfx(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_IsBallBlockedByTrainerOrDodged(u8 taskId) +USED void AnimTask_IsBallBlockedByTrainerOrDodged(u8 taskId) { switch (gBattleSpritesDataPtr->animationData->ballThrowCaseId) { @@ -738,7 +740,7 @@ u8 ItemIdToBallId(u16 ballItem) } } -void AnimTask_ThrowBall(u8 taskId) +USED void AnimTask_ThrowBall(u8 taskId) { u8 ballId; u8 spriteId; @@ -748,13 +750,13 @@ void AnimTask_ThrowBall(u8 taskId) gSprites[spriteId].data[0] = 34; gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; - gSprites[spriteId].callback = sub_80EF8C0; + gSprites[spriteId].callback = SpriteCB_ThrowBall_Init; gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = sub_80EF698; + gTasks[taskId].func = AnimTask_ThrowBall_WaitAnimObjComplete; } -static void sub_80EF698(u8 taskId) +static void AnimTask_ThrowBall_WaitAnimObjComplete(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; @@ -762,7 +764,7 @@ static void sub_80EF698(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_ThrowBallSpecial(u8 taskId) +USED void AnimTask_ThrowBallSpecial(u8 taskId) { int x, y; u8 ballId; @@ -789,23 +791,23 @@ void AnimTask_ThrowBallSpecial(u8 taskId) gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; gSprites[spriteId].callback = SpriteCallbackDummy; - gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8012354; + gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = SpriteCB_PlayerThrowInit; gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = sub_80EF7EC; + gTasks[taskId].func = AnimTask_ThrowBallSpecial_PlaySfx; } -static void sub_80EF7EC(u8 taskId) +static void AnimTask_ThrowBallSpecial_PlaySfx(u8 taskId) { if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1) { PlaySE12WithPanning(SE_BALL_THROW, 0); - gSprites[gTasks[taskId].data[0]].callback = sub_80EF8C0; - CreateTask(sub_80EF864, 10); - gTasks[taskId].func = sub_80EF698; + gSprites[gTasks[taskId].data[0]].callback = SpriteCB_ThrowBall_Init; + CreateTask(AnimTask_ThrowBallSpecial_ResetPlayerSprite, 10); + gTasks[taskId].func = AnimTask_ThrowBall_WaitAnimObjComplete; } } -static void sub_80EF864(u8 taskId) +static void AnimTask_ThrowBallSpecial_ResetPlayerSprite(u8 taskId) { if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded) { @@ -814,21 +816,21 @@ static void sub_80EF864(u8 taskId) } } -static void sub_80EF8C0(struct Sprite *sprite) +static void SpriteCB_ThrowBall_Init(struct Sprite *sprite) { - u16 temp = sprite->data[1]; - u16 temp2 = sprite->data[2]; + u16 destX = sprite->data[1]; + u16 destY = sprite->data[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = temp; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = temp2; - sprite->data[5] = -40; + sprite->sTransl_InitX = sprite->pos1.x; + sprite->sTransl_DestX = destX; + sprite->sTransl_InitY = sprite->pos1.y; + sprite->sTransl_DestY = destY; + sprite->sTransl_ArcAmpl = -40; InitAnimArcTranslation(sprite); - sprite->callback = sub_80EF8F0; + sprite->callback = SpriteCB_ThrowBall_ArcFlight; } -static void sub_80EF8F0(struct Sprite *sprite) +static void SpriteCB_ThrowBall_ArcFlight(struct Sprite *sprite) { int i; u8 ballId; @@ -837,7 +839,7 @@ static void sub_80EF8F0(struct Sprite *sprite) { if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) { - sprite->callback = sub_80F0478; + sprite->callback = TrainerBallBlock; } else if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_GHOST_DODGE) { @@ -855,7 +857,7 @@ static void sub_80EF8F0(struct Sprite *sprite) sprite->data[i] = 0; sprite->data[5] = 0; - sprite->callback = sub_80EF9B4; + sprite->callback = SpriteCB_ThrowBall_TenFrameDelay; ballId = ItemIdToBallId(gLastUsedItem); switch (ballId) @@ -869,17 +871,17 @@ static void sub_80EF8F0(struct Sprite *sprite) } } -static void sub_80EF9B4(struct Sprite *sprite) +static void SpriteCB_ThrowBall_TenFrameDelay(struct Sprite *sprite) { if (++sprite->data[5] == 10) { sprite->data[5] = CreateTask(TaskDummy, 50); - sprite->callback = sub_80EFA0C; + sprite->callback = SpriteCB_ThrowBall_ShrinkMon; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0; } } -static void sub_80EFA0C(struct Sprite *sprite) +static void SpriteCB_ThrowBall_ShrinkMon(struct Sprite *sprite) { u8 spriteId; u8 taskId; @@ -894,10 +896,10 @@ static void sub_80EFA0C(struct Sprite *sprite) case 0: PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[10] = 256; - sUnknown_3005424 = 28; - sUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); - sUnknown_3005428 = (u32)(sUnknown_300542C * 256) / 28; - gTasks[taskId].data[2] = sUnknown_3005428; + gMonShrinkDuration = 28; + gMonShrinkDistance = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); + gMonShrinkDelta = (gMonShrinkDistance * 256) / gMonShrinkDuration; + gTasks[taskId].data[2] = gMonShrinkDelta; gTasks[taskId].data[0]++; break; case 1: @@ -919,13 +921,13 @@ static void sub_80EFA0C(struct Sprite *sprite) DestroyTask(taskId); StartSpriteAnim(sprite, 2); sprite->data[5] = 0; - sprite->callback = sub_80EFB58; + sprite->callback = SpriteCB_ThrowBall_InitialFall; } break; } } -static void sub_80EFB58(struct Sprite *sprite) +static void SpriteCB_ThrowBall_InitialFall(struct Sprite *sprite) { int angle; @@ -937,11 +939,11 @@ static void sub_80EFB58(struct Sprite *sprite) angle = 0; sprite->pos1.y += Cos(angle, 40); sprite->pos2.y = -Cos(angle, sprite->data[4]); - sprite->callback = sub_80EFB9C; + sprite->callback = SpriteCB_ThrowBall_Bounce; } } -static void sub_80EFB9C(struct Sprite *sprite) +static void SpriteCB_ThrowBall_Bounce(struct Sprite *sprite) { bool8 lastBounce; int bounceCount; @@ -998,18 +1000,18 @@ static void sub_80EFB9C(struct Sprite *sprite) if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES) { sprite->data[5] = 0; - sprite->callback = sub_80EFF80; + sprite->callback = SpriteCB_ThrowBall_DelayThenBreakOut; } else { - sprite->callback = sub_80EFCA0; + sprite->callback = SpriteCB_ThrowBall_InitShake; sprite->data[4] = 1; sprite->data[5] = 0; } } } -static void sub_80EFCA0(struct Sprite *sprite) +static void SpriteCB_ThrowBall_InitShake(struct Sprite *sprite) { if (++sprite->data[3] == 31) { @@ -1017,12 +1019,12 @@ static void sub_80EFCA0(struct Sprite *sprite) sprite->affineAnimPaused = TRUE; StartSpriteAffineAnim(sprite, 1); gBattleSpritesDataPtr->animationData->field_C = 0; - sprite->callback = sub_80EFCEC; + sprite->callback = SpriteCB_ThrowBall_DoShake; PlaySE(SE_BALL); } } -static void sub_80EFCEC(struct Sprite *sprite) +static void SpriteCB_ThrowBall_DoShake(struct Sprite *sprite) { s8 state; u16 var0; @@ -1132,13 +1134,13 @@ static void sub_80EFCEC(struct Sprite *sprite) if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId) { sprite->affineAnimPaused = TRUE; - sprite->callback = sub_80EFF80; + sprite->callback = SpriteCB_ThrowBall_DelayThenBreakOut; } else { if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3) { - sprite->callback = sub_80EFFA4; + sprite->callback = SpriteCB_ThrowBall_InitClick; sprite->affineAnimPaused = TRUE; } else @@ -1166,25 +1168,25 @@ static void sub_80EFCEC(struct Sprite *sprite) } } -static void sub_80EFF80(struct Sprite *sprite) +static void SpriteCB_ThrowBall_DelayThenBreakOut(struct Sprite *sprite) { if (++sprite->data[5] == 31) { sprite->data[5] = 0; - sprite->callback = sub_80F02B0; + sprite->callback = SpriteCB_ThrowBall_BeginBreakOut; } } -static void sub_80EFFA4(struct Sprite *sprite) +static void SpriteCB_ThrowBall_InitClick(struct Sprite *sprite) { sprite->animPaused = TRUE; - sprite->callback = sub_80EFFC4; + sprite->callback = SpriteCB_ThrowBall_DoClick; sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = 0; } -static void sub_80EFFC4(struct Sprite *sprite) +static void SpriteCB_ThrowBall_DoClick(struct Sprite *sprite) { u8 *battler = &gBattleAnimTarget; @@ -1193,7 +1195,7 @@ static void sub_80EFFC4(struct Sprite *sprite) { PlaySE(SE_BALL_CLICK); BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB_BLACK); - sub_80F01B8(sprite); + CreateStarsWhenBallClicks(sprite); } else if (sprite->data[4] == 60) { @@ -1211,11 +1213,11 @@ static void sub_80EFFC4(struct Sprite *sprite) FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum); DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]); sprite->data[0] = 0; - sprite->callback = sub_80F00A4; + sprite->callback = SpriteCB_ThrowBall_FinishClick; } } -static void sub_80F00A4(struct Sprite *sprite) +static void SpriteCB_ThrowBall_FinishClick(struct Sprite *sprite) { u8 paletteIndex; @@ -1251,13 +1253,13 @@ static void sub_80F00A4(struct Sprite *sprite) SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); sprite->data[0] = 0; - sprite->callback = sub_80F018C; + sprite->callback = BattleAnimObj_SignalEnd; } break; } } -static void sub_80F018C(struct Sprite *sprite) +static void BattleAnimObj_SignalEnd(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -1270,7 +1272,7 @@ static void sub_80F018C(struct Sprite *sprite) } } -static void sub_80F01B8(struct Sprite *sprite) +static void CreateStarsWhenBallClicks(struct Sprite *sprite) { u32 i; u8 subpriority; @@ -1285,37 +1287,37 @@ static void sub_80F01B8(struct Sprite *sprite) sprite->subpriority = 1; } - sub_80F05B4(4); + LoadBallParticleGfx(BALL_MASTER); for (i = 0; i < 3; i++) { - u8 spriteId = CreateSprite(&sBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority); + u8 spriteId = CreateSprite(&sBallParticlesSpriteTemplates[BALL_MASTER], sprite->pos1.x, sprite->pos1.y, subpriority); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 24; - gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset; - gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset; - gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2; + gSprites[spriteId].sTransl_Speed = 24; + gSprites[spriteId].sTransl_DestX = sprite->pos1.x + sCaptureStar[i].xOffset; + gSprites[spriteId].sTransl_DestY = sprite->pos1.y + sCaptureStar[i].yOffset; + gSprites[spriteId].sTransl_ArcAmpl = sCaptureStar[i].amplitude; InitAnimArcTranslation(&gSprites[spriteId]); - gSprites[spriteId].callback = sub_80F0278; - StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[4]); + gSprites[spriteId].callback = SpriteCB_BallCaptureSuccessStar; + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[BALL_MASTER]); } } } -static void sub_80F0278(struct Sprite *sprite) +static void SpriteCB_BallCaptureSuccessStar(struct Sprite *sprite) { sprite->invisible = !sprite->invisible; if (TranslateAnimHorizontalArc(sprite)) DestroySprite(sprite); } -static void sub_80F02B0(struct Sprite *sprite) +static void SpriteCB_ThrowBall_BeginBreakOut(struct Sprite *sprite) { u8 ballId; StartSpriteAnim(sprite, 1); StartSpriteAffineAnim(sprite, 0); - sprite->callback = sub_80F0378; + sprite->callback = SpriteCB_ThrowBall_RunBreakOut; ballId = ItemIdToBallId(gLastUsedItem); switch (ballId) { @@ -1331,7 +1333,7 @@ static void sub_80F02B0(struct Sprite *sprite) gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000; } -static void sub_80F0378(struct Sprite *sprite) +static void SpriteCB_ThrowBall_RunBreakOut(struct Sprite *sprite) { bool32 next = FALSE; @@ -1354,13 +1356,13 @@ static void sub_80F0378(struct Sprite *sprite) gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2; sprite->data[0] = 0; - sprite->callback = sub_80F018C; + sprite->callback = BattleAnimObj_SignalEnd; gDoingBattleAnim = FALSE; UpdateOamPriorityInAllHealthboxes(1); } } -static void sub_80F0478(struct Sprite *sprite) +static void TrainerBallBlock(struct Sprite *sprite) { int i; @@ -1370,10 +1372,10 @@ static void sub_80F0478(struct Sprite *sprite) for (i = 0; i < 6; i++) sprite->data[i] = 0; - sprite->callback = sub_80F04B4; + sprite->callback = TrainerBallBlock2; } -static void sub_80F04B4(struct Sprite *sprite) +static void TrainerBallBlock2(struct Sprite *sprite) { s16 var0 = sprite->data[0] + 0x800; s16 var1 = sprite->data[1] + 0x680; @@ -1386,7 +1388,7 @@ static void sub_80F04B4(struct Sprite *sprite) || sprite->pos1.x + sprite->pos2.x < -8) { sprite->data[0] = 0; - sprite->callback = sub_80F018C; + sprite->callback = BattleAnimObj_SignalEnd; gDoingBattleAnim = FALSE; UpdateOamPriorityInAllHealthboxes(1); } @@ -1405,10 +1407,10 @@ static void GhostBallDodge(struct Sprite *sprite) sprite->data[5] = 0x20; InitAnimArcTranslation(sprite); TranslateAnimVerticalArc(sprite); - sprite->callback = sub_80F0574; + sprite->callback = GhostBallDodge2; } -static void sub_80F0574(struct Sprite *sprite) +static void GhostBallDodge2(struct Sprite *sprite) { if (!TranslateAnimVerticalArc(sprite)) { @@ -1417,15 +1419,13 @@ static void sub_80F0574(struct Sprite *sprite) } sprite->data[0] = 0; - sprite->callback = sub_80F018C; + sprite->callback = BattleAnimObj_SignalEnd; gDoingBattleAnim = FALSE; UpdateOamPriorityInAllHealthboxes(1); } -static void sub_80F05B4(u8 ballId) +static void LoadBallParticleGfx(u8 ballId) { - u8 taskId; - if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF) { LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]); @@ -1437,7 +1437,7 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) { u8 taskId; - sub_80F05B4(ballId); + LoadBallParticleGfx(ballId); taskId = CreateTask(sBallParticleAnimationFuncs[ballId], 5); gTasks[taskId].data[1] = x; gTasks[taskId].data[2] = y; @@ -1448,7 +1448,7 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) return taskId; } -void sub_80F0674(void) +static void IncrementBattleParticleCounter(void) { if (gMain.inBattle) gBattleSpritesDataPtr->animationData->field_A++; @@ -1473,7 +1473,7 @@ static void PokeBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1532,7 +1532,7 @@ static void TimerBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1566,7 +1566,7 @@ static void DiveBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1601,7 +1601,7 @@ static void SafariBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1636,7 +1636,7 @@ static void UltraBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1677,7 +1677,7 @@ static void GreatBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1727,7 +1727,7 @@ static void RepeatBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1771,7 +1771,7 @@ static void MasterBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1815,7 +1815,7 @@ static void PremierBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_80F0674(); + IncrementBattleParticleCounter(); StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1875,7 +1875,7 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 { u8 taskId; - taskId = CreateTask(sub_80F12E0, 5); + taskId = CreateTask(Task_FadeMon_ToBallColor, 5); gTasks[taskId].data[15] = ballId; gTasks[taskId].data[3] = battler; gTasks[taskId].data[10] = selectedPalettes; @@ -1891,14 +1891,14 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 BlendPalette(battler * 16 + 0x100, 16, 16, sBallOpenFadeColors[ballId]); gTasks[taskId].data[0] = 16; gTasks[taskId].data[1] = -1; - gTasks[taskId].func = sub_80F1370; + gTasks[taskId].func = Task_FadeMon_ToNormal; } BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB_WHITE); return taskId; } -static void sub_80F12E0(u8 taskId) +static void Task_FadeMon_ToBallColor(u8 taskId) { u8 ballId = gTasks[taskId].data[15]; @@ -1916,17 +1916,17 @@ static void sub_80F12E0(u8 taskId) } } -static void sub_80F1370(u8 taskId) +static void Task_FadeMon_ToNormal(u8 taskId) { if (!gPaletteFade.active) { u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE); - gTasks[taskId].func = sub_80F13C0; + gTasks[taskId].func = Task_FadeMon_ToNormal_Step; } } -static void sub_80F13C0(u8 taskId) +static void Task_FadeMon_ToNormal_Step(u8 taskId) { u8 ballId = gTasks[taskId].data[15]; @@ -2046,7 +2046,7 @@ void AnimTask_TargetToEffectBattler(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80F1720(u8 battler, struct Pokemon *mon) +void TryShinyAnimation(u8 battler, struct Pokemon *mon) { bool32 isShiny; u32 otId, personality; @@ -2072,8 +2072,8 @@ void sub_80F1720(u8 battler, struct Pokemon *mon) LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); } - taskId1 = CreateTask(sub_80F181C, 10); - taskId2 = CreateTask(sub_80F181C, 10); + taskId1 = CreateTask(AnimTask_ShinySparkles, 10); + taskId2 = CreateTask(AnimTask_ShinySparkles, 10); gTasks[taskId1].data[0] = battler; gTasks[taskId2].data[0] = battler; gTasks[taskId1].data[1] = 0; @@ -2085,7 +2085,7 @@ void sub_80F1720(u8 battler, struct Pokemon *mon) gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; } -static void sub_80F181C(u8 taskId) +static void AnimTask_ShinySparkles(u8 taskId) { u8 battler; u8 x, y; @@ -2128,11 +2128,11 @@ static void sub_80F181C(u8 taskId) if (gTasks[taskId].data[1] == FALSE) { - gSprites[spriteId].callback = sub_80F1A2C; + gSprites[spriteId].callback = SpriteCB_ShinySparkles_1; } else { - gSprites[spriteId].callback = sub_80F1A80; + gSprites[spriteId].callback = SpriteCB_ShinySparkles_2; gSprites[spriteId].pos2.x = -32; gSprites[spriteId].pos2.y = 32; gSprites[spriteId].invisible = TRUE; @@ -2153,10 +2153,10 @@ static void sub_80F181C(u8 taskId) gTasks[taskId].data[12]++; if (gTasks[taskId].data[11] == 5) - gTasks[taskId].func = sub_80F19E0; + gTasks[taskId].func = AnimTask_ShinySparkles_WaitSparkles; } -static void sub_80F19E0(u8 taskId) +static void AnimTask_ShinySparkles_WaitSparkles(u8 taskId) { u8 battler; @@ -2172,7 +2172,7 @@ static void sub_80F19E0(u8 taskId) } } -static void sub_80F1A2C(struct Sprite *sprite) +static void SpriteCB_ShinySparkles_1(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[1], 24); sprite->pos2.y = Cos(sprite->data[1], 24); @@ -2185,7 +2185,7 @@ static void sub_80F1A2C(struct Sprite *sprite) } } -static void sub_80F1A80(struct Sprite *sprite) +static void SpriteCB_ShinySparkles_2(struct Sprite *sprite) { if (sprite->data[1] < 4) { @@ -2207,7 +2207,7 @@ static void sub_80F1A80(struct Sprite *sprite) void AnimTask_LoadBaitGfx(u8 taskId) { - u8 paletteIndex; + UNUSED u8 paletteIndex; LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]); LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]); @@ -2222,35 +2222,35 @@ void AnimTask_FreeBaitGfx(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_80F1B3C(struct Sprite *sprite) +static void SpriteCB_SafariBaitOrRock_Init(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 0); - sprite->data[0] = 30; - sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3]; - sprite->data[5] = -32; + sprite->sTransl_Speed = 30; + sprite->sTransl_DestX = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->sTransl_DestY = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3]; + sprite->sTransl_ArcAmpl = -32; InitAnimArcTranslation(sprite); - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8012354; - sprite->callback = sub_80F1BCC; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = SpriteCB_PlayerThrowInit; + sprite->callback = SpriteCB_SafariBaitOrRock_WaitPlayerThrow; } -static void sub_80F1BCC(struct Sprite *sprite) +static void SpriteCB_SafariBaitOrRock_WaitPlayerThrow(struct Sprite *sprite) { if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1) - sprite->callback = sub_80F1C04; + sprite->callback = SpriteCB_SafariBaitOrRock_ArcFlight; } -static void sub_80F1C04(struct Sprite *sprite) +static void SpriteCB_SafariBaitOrRock_ArcFlight(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { sprite->data[0] = 0; sprite->invisible = TRUE; - sprite->callback = sub_80F1C30; + sprite->callback = SpriteCB_SafariBaitOrRock_Finish; } } -static void sub_80F1C30(struct Sprite *sprite) +static void SpriteCB_SafariBaitOrRock_Finish(struct Sprite *sprite) { if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded) { @@ -2262,7 +2262,7 @@ static void sub_80F1C30(struct Sprite *sprite) } } -void sub_80F1C8C(u8 taskId) +USED void AnimTask_SafariOrGhost_DecideAnimSides(u8 taskId) { switch (gBattleAnimArgs[0]) { @@ -2279,7 +2279,7 @@ void sub_80F1C8C(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80F1CE4(u8 taskId) +USED void AnimTask_SafariGetReaction(u8 taskId) { if (gBattleCommunication[MULTISTRING_CHOOSER] > 2) gBattleAnimArgs[7] = 0; @@ -2289,7 +2289,7 @@ void sub_80F1CE4(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_GetTrappedMoveAnimId(u8 taskId) +USED void AnimTask_GetTrappedMoveAnimId(u8 taskId) { if (gBattleSpritesDataPtr->animationData->animArg == MOVE_FIRE_SPIN) gBattleAnimArgs[0] = TRAP_ANIM_FIRE_SPIN; @@ -2305,7 +2305,7 @@ void AnimTask_GetTrappedMoveAnimId(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_GetBattlersFromArg(u8 taskId) +USED void AnimTask_GetBattlersFromArg(u8 taskId) { gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg; gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index e8042df92..82ef6da92 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -331,7 +331,7 @@ void AnimTask_SetUpCurseBackground(u8 taskId) species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species); - sub_80752A0(&animBgData); + GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap); if (IsContest()) sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0); @@ -358,7 +358,7 @@ static void sub_80BAF38(u8 taskId) gBattle_BG1_Y += 64; if (++gTasks[taskId].data[11] == 4) { - sub_8073128(0); + ResetBattleAnimBg(0); gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR @@ -377,7 +377,7 @@ static void sub_80BAF38(u8 taskId) sprite = &gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)]; // unused sprite = &gSprites[gTasks[taskId].data[0]]; DestroySprite(sprite); - sub_80752A0(&animBgData); + GetBattleAnimBg1Data(&animBgData); sub_8075358(animBgData.bgId); if (gTasks[taskId].data[6] == 1) ++gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority; @@ -452,7 +452,7 @@ static void sub_80BB2A0(u8 taskId) battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; newSpriteId = sub_8076E34(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); } - sub_80752A0(&animBgData); + GetBattleAnimBg1Data(&animBgData); if (sAnimStatsChangeData->data[0] == 0) AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask1_Tilemap); else @@ -548,7 +548,7 @@ static void sub_80BB4B8(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); if (gTasks[taskId].data[12] == 0) { - sub_8073128(0); + ResetBattleAnimBg(0); ++gTasks[taskId].data[15]; } } @@ -755,7 +755,7 @@ void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, spriteId = sub_8076E34(battler1, gBattlerSpriteIds[battler1], species); if (arg4) newSpriteId = sub_8076E34(battler2, gBattlerSpriteIds[battler2], species); - sub_80752A0(&animBgData); + GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); if (IsContest()) sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0); @@ -805,7 +805,7 @@ static void sub_80BBC2C(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); if (gTasks[taskId].data[12] == 0) { - sub_8073128(0); + ResetBattleAnimBg(0); gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index f3966e832..6902dbaa4 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -244,9 +244,9 @@ static void sub_803A9CC(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80) - sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == 3) { if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 1) @@ -282,7 +282,7 @@ static void sub_803AC14(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) { @@ -392,7 +392,7 @@ static void sub_803AFFC(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 2d95a756f..519332f3d 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -349,7 +349,7 @@ static void sub_80D4944(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index d6833942a..43b6c7c16 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -401,10 +401,10 @@ static void sub_80E7B4C(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) @@ -628,7 +628,7 @@ static void sub_80E835C(void) case 0: if (!gPaletteFade.active) { - sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + DoLoadHealthboxPalsForLevelUp(&gBattleStruct->field_95, &gBattleStruct->field_97, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); BeginNormalPaletteFade(0xFFFFFF7E, 4, 0, @@ -703,7 +703,7 @@ static void sub_80E835C(void) case 8: if (!gPaletteFade.active) { - sub_80EF0E0(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + DoFreeHealthboxPalsForLevelUp(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); sub_80EB524(); gBattleStruct->field_94 = 0; OakOldManBufferExecCompleted(); @@ -806,7 +806,7 @@ static void sub_80E8704(void) case 0: if (!gPaletteFade.active) { - sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, gActiveBattler); + DoLoadHealthboxPalsForLevelUp(&gBattleStruct->field_95, &gBattleStruct->field_97, gActiveBattler); BeginNormalPaletteFade(0xFFFFFF7E, 4, 0, diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 29cde44df..1d7e42b88 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -242,9 +242,9 @@ static void sub_8035C30(void) static void sub_8035DF0(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) @@ -276,7 +276,7 @@ static void sub_8035FE8(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) { @@ -397,7 +397,7 @@ static void sub_8036334(void) static void sub_8036408(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index db51f6e05..67ac89899 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -912,9 +912,9 @@ static void sub_802FA58(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80) - sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); @@ -965,7 +965,7 @@ static void sub_802FD18(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) { @@ -1235,7 +1235,7 @@ static void sub_80303A8(u8 taskId) } break; case 5: - sub_8073128(v6); + ResetBattleAnimBg(v6); ++data[15]; break; case 4: diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index e6af71b6c..e799809bd 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -598,7 +598,7 @@ static void sub_8156184(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) { @@ -656,7 +656,7 @@ static void sub_81563A8(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) { @@ -750,10 +750,10 @@ static void sub_8156624(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) @@ -2518,7 +2518,7 @@ static void sub_8159D04(void) case 0: if (!gPaletteFade.active) { - sub_80EEFC8(&gBattleStruct->field_95, + DoLoadHealthboxPalsForLevelUp(&gBattleStruct->field_95, &gBattleStruct->field_94, GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)); BeginNormalPaletteFade(0xFFFFFF7F, 4, 0, 8, RGB_BLACK); @@ -2576,7 +2576,7 @@ static void sub_8159D04(void) BattleStopLowHpSound(); PlayBGM(MUS_VICTORY_WILD); } - sub_80EF0E0(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)); + DoFreeHealthboxPalsForLevelUp(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)); sub_80EB524(); sub_8159B78(); } diff --git a/src/battle_main.c b/src/battle_main.c index df1324f83..2787330a8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -83,7 +83,7 @@ static void sub_8012060(struct Sprite *sprite); static void oac_poke_ally_(struct Sprite *sprite); static void SpriteCallbackDummy3(struct Sprite *sprite); static void SpriteCB_BounceEffect(struct Sprite *sprite); -static void sub_8012398(struct Sprite *sprite); +static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite); static void BattleStartClearSetData(void); static void BattleIntroGetMonsData(void); static void TurnValuesCleanUp(bool8 var0); @@ -301,7 +301,7 @@ static const union AffineAnimCmd *const gUnknown_824F044[] = gUnknown_824F02C, }; -static const s8 gUnknown_824F048[] = { -32, -16, -16, -32, -32, 0, 0, 0 }; +static const s8 sPlayerThrowXTranslation[] = { -32, -16, -16, -32, -32, 0, 0, 0 }; // format: attacking type, defending type, damage multiplier // the multiplier is a (decimal) fixed-point number: @@ -2153,21 +2153,21 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite) sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF; } -void sub_8012354(struct Sprite *sprite) +void SpriteCB_PlayerThrowInit(struct Sprite *sprite) { StartSpriteAnim(sprite, 1); - sprite->callback = sub_8012398; + sprite->callback = SpriteCB_PlayerThrowUpdate; } -void sub_801236C(struct Sprite *sprite) +void UpdatePlayerPosInThrowAnim(struct Sprite *sprite) { if (sprite->animDelayCounter == 0) - sprite->centerToCornerVecX = gUnknown_824F048[sprite->animCmdIndex]; + sprite->centerToCornerVecX = sPlayerThrowXTranslation[sprite->animCmdIndex]; } -static void sub_8012398(struct Sprite *sprite) +static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite) { - sub_801236C(sprite); + UpdatePlayerPosInThrowAnim(sprite); if (sprite->animEnded) sprite->callback = SpriteCallbackDummy3; } diff --git a/src/dark.c b/src/dark.c index 86523f2f1..d9c2900ba 100644 --- a/src/dark.c +++ b/src/dark.c @@ -409,7 +409,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); if (task->data[3] == 1) { - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); FillPalette(0, animBg.paletteId * 16, 32); @@ -540,7 +540,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) case 1: if (task->data[3] == 1) { - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; FillPalette(0, animBg.paletteId * 16, 32); } @@ -742,9 +742,9 @@ void sub_80B8664(u8 taskId) { bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE; - sub_8073128(toBG2); + ResetBattleAnimBg(toBG2); if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) - sub_8073128(toBG2 ^ 1); + ResetBattleAnimBg(toBG2 ^ 1); DestroyAnimVisualTask(taskId); } @@ -800,7 +800,7 @@ void AnimTask_MetallicShine(u8 taskId) species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32); @@ -839,7 +839,7 @@ static void sub_80B8920(u8 taskId) if (gTasks[taskId].data[1] == 0) SetGreyscaleOrOriginalPalette(paletteNum, 1); DestroySprite(&gSprites[gTasks[taskId].data[0]]); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(animBg.bgId); if (gTasks[taskId].data[6] == 1) gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++; diff --git a/src/daycare.c b/src/daycare.c index 14c41355b..bbd0d89a6 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -790,7 +790,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) u8 i; u8 selectedIvs[INHERITED_IV_COUNT]; u8 availableIVs[NUM_STATS]; - u8 whichParent[ARRAY_COUNT(selectedIvs)]; + u8 whichParent[NELEMS(selectedIvs)]; u8 iv; // Initialize a list of IV indices. @@ -800,7 +800,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) } // Select the 3 IVs that will be inherited. - for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) + for (i = 0; i < NELEMS(selectedIvs); i++) { // Randomly pick an IV from the available list and stop from being chosen again. selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; @@ -808,13 +808,13 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) } // Determine which parent each of the selected IVs should inherit from. - for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) + for (i = 0; i < NELEMS(selectedIvs); i++) { whichParent[i] = Random() % DAYCARE_MON_COUNT; } // Set each of inherited IVs on the egg mon. - for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) + for (i = 0; i < NELEMS(selectedIvs); i++) { switch (selectedIvs[i]) { @@ -858,7 +858,7 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) numEggMoves = 0; eggMoveIdx = 0; species = GetMonData(pokemon, MON_DATA_SPECIES); - for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++) + for (i = 0; i < NELEMS(gEggMoves) - 1; i++) { if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) { @@ -1787,7 +1787,7 @@ static void CB2_EggHatch_0(void) ResetTempTileDataBuffers(); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch)); + InitBgsFromTemplates(0, sBgTemplates_EggHatch, NELEMS(sBgTemplates_EggHatch)); ChangeBgX(1, 0, 0); ChangeBgY(1, 0, 0); diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index d2ddd30be..df6b3ff4b 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -1567,7 +1567,7 @@ static void sub_8155EA0(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(FALSE); - InitBgsFromTemplates(0, sUnknown_847565C, ARRAY_COUNT(sUnknown_847565C)); + InitBgsFromTemplates(0, sUnknown_847565C, NELEMS(sUnknown_847565C)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); diff --git a/src/easy_chat.c b/src/easy_chat.c index bf617a854..4360dc72e 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -704,7 +704,7 @@ static bool8 UnlockedECMonOrMove(u16 wordIndex, u8 groupId) static bool32 EC_IsDeoxys(u16 species) { u32 i; - for (i = 0; i < ARRAY_COUNT(sDeoxysValue); i++) + for (i = 0; i < NELEMS(sDeoxysValue); i++) { if (sDeoxysValue[i] == species) return TRUE; diff --git a/src/fame_checker.c b/src/fame_checker.c index 48e5cf00a..ea6e63be9 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -450,7 +450,7 @@ static void MainCB2_LoadFameChecker(void) sBg1TilemapBuffer = AllocZeroed(0x1000); sBg2TilemapBuffer = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sUIBgTemplates, ARRAY_COUNT(sUIBgTemplates)); + InitBgsFromTemplates(0, sUIBgTemplates, NELEMS(sUIBgTemplates)); SetBgTilemapBuffer(3, sBg3TilemapBuffer); SetBgTilemapBuffer(2, sBg2TilemapBuffer); SetBgTilemapBuffer(1, sBg1TilemapBuffer); diff --git a/src/fighting.c b/src/fighting.c index ab477cd43..9bbb09d87 100644 --- a/src/fighting.c +++ b/src/fighting.c @@ -788,7 +788,7 @@ static void sub_80B111C(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = sub_807563C; + sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; } } @@ -874,7 +874,7 @@ static void AnimSuperpowerFireball(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(battler, 3); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = sub_807563C; + sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; } static void sub_80B13D4(struct Sprite *sprite) diff --git a/src/fire.c b/src/fire.c index 7833620d4..54b7948f3 100644 --- a/src/fire.c +++ b/src/fire.c @@ -1160,7 +1160,7 @@ void AnimTask_BlendBackground(u8 taskId) { struct BattleAnimBgData animBg; - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); BlendPalette(animBg.paletteId * 16, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); DestroyAnimVisualTask(taskId); } @@ -941,7 +941,7 @@ void AnimTask_Haze1(u8 taskId) gBattle_BG1_Y = 0; SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap); LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32); @@ -992,7 +992,7 @@ static void AnimTask_Haze2(u8 taskId) } break; case 3: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(1); sub_8075358(2); ++gTasks[taskId].data[12]; @@ -1039,7 +1039,7 @@ void AnimTask_LoadMistTiles(u8 taskId) gBattle_BG1_Y = 0; SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap); LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32); @@ -1087,7 +1087,7 @@ static void AnimTask_OverlayFogTiles(u8 taskId) } break; case 3: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(1); sub_8075358(2); ++gTasks[taskId].data[12]; diff --git a/src/load_save.c b/src/load_save.c index f17d31f37..a825061f5 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -23,14 +23,14 @@ struct LoadedSaveData }; // EWRAM DATA -EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {0}; -EWRAM_DATA u8 gSaveBlock2_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; +EWRAM_DATA HERE struct SaveBlock2 gSaveBlock2 = {0}; +EWRAM_DATA HERE u8 gSaveBlock2_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; -EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {0}; -EWRAM_DATA u8 gSaveBlock1_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; +EWRAM_DATA HERE struct SaveBlock1 gSaveBlock1 = {0}; +EWRAM_DATA HERE u8 gSaveBlock1_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; -EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; -EWRAM_DATA u8 gSaveBlock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; +EWRAM_DATA HERE struct PokemonStorage gPokemonStorage = {0}; +EWRAM_DATA HERE u8 gSaveBlock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; EWRAM_DATA u32 gLastEncryptionKey = 0; @@ -70,7 +70,7 @@ void SetSaveBlocksPointers(void) struct SaveBlock1** sav1_LocalVar = &gSaveBlock1Ptr; void *oldSave = (void *)gSaveBlock1Ptr; - offset = (Random()) & (SAVEBLOCK_MOVE_RANGE - 4); + offset = (Random()) & ((SAVEBLOCK_MOVE_RANGE - 1) & ~3); gSaveBlock2Ptr = (void*)(&gSaveBlock2) + offset; *sav1_LocalVar = (void*)(&gSaveBlock1) + offset; diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 33f31515d..cfc05fe46 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -375,7 +375,7 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader) ScanlineEffect_Stop(); ResetBgsAndClearDma3BusyFlags(1); - InitBgsFromTemplates(0, sBGTemplates, ARRAY_COUNT(sBGTemplates)); + InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 03b9c6744..c09fbf6ed 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2339,7 +2339,7 @@ static void sub_8136BC4(void) SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sUnknown_8463EFC, ARRAY_COUNT(sUnknown_8463EFC)); + InitBgsFromTemplates(0, sUnknown_8463EFC, NELEMS(sUnknown_8463EFC)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -3902,20 +3902,20 @@ static void sub_8139768(struct Sprite * sprite) { case 0: sprite->pos1.y += sUnknown_8463FBE[sUnknown_203B170->unk00++]; - v0 = ARRAY_COUNT(sUnknown_8463FBE); + v0 = NELEMS(sUnknown_8463FBE); break; case 1: sprite->pos1.y += sUnknown_8463FC1[sUnknown_203B170->unk00++]; - v0 = ARRAY_COUNT(sUnknown_8463FC1); + v0 = NELEMS(sUnknown_8463FC1); break; case 2: sprite->pos1.y += sUnknown_8463FC6[sUnknown_203B170->unk00++]; - v0 = ARRAY_COUNT(sUnknown_8463FC6); + v0 = NELEMS(sUnknown_8463FC6); break; case 3: default: sprite->pos1.y += sUnknown_8463FCD[sUnknown_203B170->unk00++]; - v0 = ARRAY_COUNT(sUnknown_8463FCD); + v0 = NELEMS(sUnknown_8463FCD); break; } @@ -3941,7 +3941,7 @@ static void sub_8139868(struct Sprite * sprite) if (sUnknown_203B170->unk04++ >= 120) { sprite->pos1.x += sUnknown_8463FD4[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FD4)) + if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FD4)) { sUnknown_203B170->unk00 = 0; sUnknown_203B170->unk04 = 0; @@ -3953,7 +3953,7 @@ static void sub_8139868(struct Sprite * sprite) if (sUnknown_203B170->unk04++ >= 90) { sprite->pos1.x += sUnknown_8463FDF[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FDF)) + if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FDF)) { sUnknown_203B170->unk00 = 0; sUnknown_203B170->unk04 = 0; @@ -3965,7 +3965,7 @@ static void sub_8139868(struct Sprite * sprite) if (sUnknown_203B170->unk04++ >= 60) { sprite->pos1.x += sUnknown_8463FEA[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FEA)) + if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FEA)) { sUnknown_203B170->unk00 = 0; sUnknown_203B170->unk04 = 0; diff --git a/src/psychic.c b/src/psychic.c index 32e4dce46..9a072ad5c 100644 --- a/src/psychic.c +++ b/src/psychic.c @@ -523,10 +523,10 @@ static void sub_80B3168(struct Sprite *sprite) bool8 toBG2 = (rank ^ var0) != 0; if (IsBattlerSpriteVisible(battler)) - sub_8073128(toBG2); + ResetBattleAnimBg(toBG2); battler = battlerCopy ^ 2; if (IsBattlerSpriteVisible(battler)) - sub_8073128(toBG2 ^ var0); + ResetBattleAnimBg(toBG2 ^ var0); } sprite->callback = DestroyAnimSprite; } diff --git a/src/quest_log_player.c b/src/quest_log_player.c index 715061963..da1c2b76e 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -35,7 +35,7 @@ static void (*const gUnknown_8471EDC[])(void) = { void sub_8150454(u8 a0) { - if (a0 < ARRAY_COUNT(gUnknown_8471EDC)) + if (a0 < NELEMS(gUnknown_8471EDC)) gUnknown_8471EDC[a0](); } diff --git a/src/roamer.c b/src/roamer.c index 074ac22cf..6367e9d43 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -94,7 +94,7 @@ void CreateInitialRoamerMon(void) saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART); saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH); sRoamerLocation[MAP_GRP] = 3; - sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0]; + sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0]; } void InitRoamer(void) @@ -125,7 +125,7 @@ void RoamerMoveToOtherLocationSet(void) while (1) { - mapNum = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0]; + mapNum = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0]; if (sRoamerLocation[MAP_NUM] != mapNum) { sRoamerLocation[MAP_NUM] = mapNum; @@ -150,7 +150,7 @@ void RoamerMove(void) if (!roamer->active) return; - while (locSet < (ARRAY_COUNT(sRoamerLocations) - 1)) + while (locSet < (NELEMS(sRoamerLocations) - 1)) { if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) { diff --git a/src/rock.c b/src/rock.c index 922b2ad6a..4243e5102 100644 --- a/src/rock.c +++ b/src/rock.c @@ -407,7 +407,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId) gBattle_BG1_Y = 0; SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap); AnimLoadCompressedBgGfx(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet, animBg.tilesOffset); LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32); @@ -464,7 +464,7 @@ static void sub_80B490C(u8 taskId) } break; case 3: - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); sub_8075358(animBg.bgId); ++gTasks[taskId].data[12]; break; diff --git a/src/save.c b/src/save.c index d5993182c..bd8cdbc29 100644 --- a/src/save.c +++ b/src/save.c @@ -45,26 +45,24 @@ min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ } \ -// TODO: use gSaveblock2, gSaveblock1, gPokemonStorage instead of structs -// Will be done when load_save is decompiled. const struct SaveSectionOffsets gSaveSectionOffsets[] = { - SAVEBLOCK_CHUNK(struct SaveBlock2, 0), - - SAVEBLOCK_CHUNK(struct SaveBlock1, 0), - SAVEBLOCK_CHUNK(struct SaveBlock1, 1), - SAVEBLOCK_CHUNK(struct SaveBlock1, 2), - SAVEBLOCK_CHUNK(struct SaveBlock1, 3), - - SAVEBLOCK_CHUNK(struct PokemonStorage, 0), - SAVEBLOCK_CHUNK(struct PokemonStorage, 1), - SAVEBLOCK_CHUNK(struct PokemonStorage, 2), - SAVEBLOCK_CHUNK(struct PokemonStorage, 3), - SAVEBLOCK_CHUNK(struct PokemonStorage, 4), - SAVEBLOCK_CHUNK(struct PokemonStorage, 5), - SAVEBLOCK_CHUNK(struct PokemonStorage, 6), - SAVEBLOCK_CHUNK(struct PokemonStorage, 7), - SAVEBLOCK_CHUNK(struct PokemonStorage, 8) + SAVEBLOCK_CHUNK(gSaveBlock2, 0), + + SAVEBLOCK_CHUNK(gSaveBlock1, 0), + SAVEBLOCK_CHUNK(gSaveBlock1, 1), + SAVEBLOCK_CHUNK(gSaveBlock1, 2), + SAVEBLOCK_CHUNK(gSaveBlock1, 3), + + SAVEBLOCK_CHUNK(gPokemonStorage, 0), + SAVEBLOCK_CHUNK(gPokemonStorage, 1), + SAVEBLOCK_CHUNK(gPokemonStorage, 2), + SAVEBLOCK_CHUNK(gPokemonStorage, 3), + SAVEBLOCK_CHUNK(gPokemonStorage, 4), + SAVEBLOCK_CHUNK(gPokemonStorage, 5), + SAVEBLOCK_CHUNK(gPokemonStorage, 6), + SAVEBLOCK_CHUNK(gPokemonStorage, 7), + SAVEBLOCK_CHUNK(gPokemonStorage, 8) }; // Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?) diff --git a/src/string_util.c b/src/string_util.c index 17507b0e8..f059ac43d 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -487,7 +487,7 @@ u8 *GetExpandedPlaceholder(u32 id) [PLACEHOLDER_ID_KYOGRE] = ExpandPlaceholder_Kyogre, }; - if (id >= ARRAY_COUNT(funcs)) + if (id >= NELEMS(funcs)) return gExpandedPlaceholder_Empty; else return funcs[id](); @@ -627,7 +627,7 @@ u8 GetExtCtrlCodeLength(u8 code) }; u8 length = 0; - if (code < ARRAY_COUNT(lengths)) + if (code < NELEMS(lengths)) length = lengths[code]; return length; } diff --git a/src/trainer_card.c b/src/trainer_card.c index e42385243..483c91126 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1472,7 +1472,7 @@ static bool8 SetTrainerCardBgsAndPals(void) switch (sTrainerCardDataPtr->bgPalLoadState) { case 0: - LoadBgTiles(3, sTrainerCardDataPtr->badgeTiles, ARRAY_COUNT(sTrainerCardDataPtr->badgeTiles), 0); + LoadBgTiles(3, sTrainerCardDataPtr->badgeTiles, NELEMS(sTrainerCardDataPtr->badgeTiles), 0); break; case 1: LoadBgTiles(0, sTrainerCardDataPtr->cardTiles, 0x1800, 0); diff --git a/src/water.c b/src/water.c index f8dd29bd0..9fbfd4d9a 100644 --- a/src/water.c +++ b/src/water.c @@ -812,7 +812,7 @@ void AnimTask_CreateSurfWave(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1); - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); if (!IsContest()) { SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); @@ -889,7 +889,7 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId) *BGptrX += gTasks[taskId].data[0]; *BGptrY += gTasks[taskId].data[1]; - sub_80752A0(&animBg); + GetBattleAnimBg1Data(&animBg); gTasks[taskId].data[2] += gTasks[taskId].data[1]; if (++gTasks[taskId].data[5] == 4) { |