From 6e321e13e2c155fa79185a6366a7846cd904f808 Mon Sep 17 00:00:00 2001 From: Land0fChocolate <52083703+Land0fChocolate@users.noreply.github.com> Date: Sat, 27 Jun 2026 21:37:34 +0100 Subject: [PATCH] Document src/battle_anim stuff (#1212) --- asm/macros/btlanimcmd.inc | 32 +- include/battle_anim/battle_anim_helpers.h | 28 +- include/battle_anim/battle_anim_system.h | 60 +- include/battle_anim/battle_anim_util.h | 4 +- include/battle_anim/battle_particle_util.h | 8 +- include/battle_anim/script_func_examples.h | 2 +- include/data/scripts/btlanimcmd.h | 14 +- res/moves/bide/anim.s | 2 +- res/moves/bounce/anim.s | 2 +- res/moves/brick_break/anim.s | 4 +- res/moves/covet/anim.s | 2 +- res/moves/curse/anim.s | 2 +- res/moves/dig/anim.s | 2 +- res/moves/dive/anim.s | 2 +- res/moves/doom_desire/anim.s | 2 +- res/moves/fly/anim.s | 2 +- res/moves/focus_punch/anim.s | 2 +- res/moves/future_sight/anim.s | 2 +- res/moves/healing_wish/anim.s | 2 +- res/moves/lunar_dance/anim.s | 2 +- res/moves/present/anim.s | 2 +- res/moves/razor_wind/anim.s | 2 +- res/moves/shadow_force/anim.s | 2 +- res/moves/skull_bash/anim.s | 2 +- res/moves/sky_attack/anim.s | 2 +- res/moves/snatch/anim.s | 2 +- res/moves/solar_beam/anim.s | 2 +- res/moves/thief/anim.s | 2 +- res/moves/u_turn/anim.s | 2 +- src/battle/battle_display.c | 18 +- src/battle_anim/battle_anim_helpers.c | 115 ++- src/battle_anim/battle_anim_system.c | 778 ++++++++++----------- src/battle_anim/battle_anim_util.c | 19 +- src/battle_anim/battle_particle_util.c | 19 +- src/battle_anim/emitter_callbacks.c | 11 +- src/battle_anim/ov12_02235E94.c | 18 +- src/battle_anim/script_func_examples.c | 96 ++- src/battle_anim/script_func_tables.c | 2 +- src/battle_anim/script_funcs_0.c | 22 +- src/battle_anim/script_funcs_1.c | 2 +- src/battle_anim/script_funcs_2.c | 14 +- src/battle_anim/script_funcs_3.c | 2 +- src/battle_anim/script_funcs_stat_change.c | 116 +-- 43 files changed, 690 insertions(+), 736 deletions(-) diff --git a/asm/macros/btlanimcmd.inc b/asm/macros/btlanimcmd.inc index 93a52aa48d..8bde86f836 100644 --- a/asm/macros/btlanimcmd.inc +++ b/asm/macros/btlanimcmd.inc @@ -83,16 +83,22 @@ .long \value .endm - .macro BtlAnimCmd_013 arg0:req, arg1:req - .long BTLANIMCMD_013 - .long (\arg0 - .) / 4 - .long (\arg1 - .) / 4 + // Jumps to one of two addresses based on the parity of the secondary effect chance roll + // addrEven: Address to jump to if the secondary effect chance roll is even + // addrOdd: Address to jump to if the secondary effect chance roll is odd + .macro JumpIfEffectChanceOdd addrEven:req, addrOdd:req + .long BTLANIMCMD_JUMPIFEFFECTCHANCEODD + .long (\addrEven - .) / 4 + .long (\addrOdd - .) / 4 .endm - .macro BtlAnimCmd_014 arg0:req, arg1:req - .long BTLANIMCMD_014 - .long \arg0 - .long \arg1 + // Jumps by the specified word offset if the secondary effect chance equals the specified value + // effectChance: Effect chance value to compare against the move's effect chance + // offset: Number of words to advance the script pointer by if the effect chance matches + .macro JumpIfEffectChance effectChance:req, offset:req + .long BTLANIMCMD_JUMPIFEFFECTCHANCE + .long \effectChance + .long \offset .endm // Jumps to the specified address @@ -288,7 +294,7 @@ .endm .macro BtlAnimCmd_033 addr:req - .long BTLANIMCMD_033 + .long BTLANIMCMD_JUMPIFUNK_01 .long \addr .endm @@ -550,12 +556,12 @@ .endm .macro BtlAnimCmd_068 arg0:req - .long BTLANIMCMD_068 + .long BTLANIMCMD_STARTBATTLERSLIDEIN .long \arg0 .endm .macro BtlAnimCmd_069 arg0:req - .long BTLANIMCMD_069 + .long BTLANIMCMD_STARTBATTLERSLIDEOUT .long \arg0 .endm @@ -711,14 +717,14 @@ .endm .macro BtlAnimCmd_082 arg0:req, arg1:req, arg2:req - .long BTLANIMCMD_082 + .long BTLANIMCMD_STARTPOKEMONSPRITEDRAWTASK .long \arg0 .long \arg1 .long \arg2 .endm .macro BtlAnimCmd_083 arg0:req - .long BTLANIMCMD_083 + .long BTLANIMCMD_STOPPOKEMONSPRITEDRAWTASK .long \arg0 .endm diff --git a/include/battle_anim/battle_anim_helpers.h b/include/battle_anim/battle_anim_helpers.h index a4d6098f10..aca9497550 100644 --- a/include/battle_anim/battle_anim_helpers.h +++ b/include/battle_anim/battle_anim_helpers.h @@ -77,7 +77,7 @@ enum BattleAnimAnchorType { BATTLE_ANIM_ANCHOR_TOP, }; -typedef struct AngleLerpContext { +typedef struct ValueLerpContext { s32 value; s32 data[4]; } ValueLerpContext; @@ -165,7 +165,7 @@ u8 BattleAnimUtil_GetSpritePalette(ManagedSprite *sprite); int BattleAnimUtil_GetTransformDirectionX(BattleAnimSystem *system, int battler); int BattleAnimUtil_GetTransformDirectionY(BattleAnimSystem *system, int battler); fx32 BattleAnimMath_GetStepSize(fx32 start, fx32 end, u32 steps); -u32 ov12_022259AC(fx32 param0, fx32 param1, fx32 param2); +u32 BattleAnimMath_CalcStepCount(fx32 start, fx32 end, fx32 stepSize); void XYTransformContext_ApplyPosOffsetToSprite(XYTransformContext *ctx, ManagedSprite *sprite, s16 cx, s16 cy); void ScaleLerpContext_ApplyToSprite(XYTransformContext *ctx, ManagedSprite *sprite); void XYTransformContext_ApplyPosOffsetToMon(XYTransformContext *ctx, PokemonSprite *sprite, s16 cx, s16 cy); @@ -173,7 +173,7 @@ void XYTransformContext_ApplyPosOffsetToMon(XYTransformContext *ctx, PokemonSpri #define PosLerpContext_Apply XYTransformContext_ApplyPosOffsetToMon void ScaleLerpContext_ApplyToMon(XYTransformContext *ctx, PokemonSprite *sprite); void RevolutionContext_Init(XYTransformContext *ctx, u16 sx, u16 ex, u16 sy, u16 ey, fx32 rx, fx32 ry, int steps); -void ov12_02225A8C(XYTransformContext *ctx, u16 param1, u16 param2, u16 param3, u16 param4, fx32 param5, fx32 param6, u16 param7); +void RevolutionContext_InitWithStepSize(XYTransformContext *ctx, u16 sx, u16 ex, u16 sy, u16 ey, fx32 rx, fx32 ry, u16 stepSize); BOOL RevolutionContext_Update(XYTransformContext *ctx); BOOL RevolutionContext_UpdateAndApplyToSprite(XYTransformContext *ctx, s16 cx, s16 cy, ManagedSprite *sprite); BOOL RevolutionContext_UpdateAndApplyToMon(XYTransformContext *ctx, s16 cx, s16 cy, PokemonSprite *sprite); @@ -181,15 +181,15 @@ void PosLerpContext_Init(XYTransformContext *ctx, s16 sx, s16 ex, s16 sy, s16 ey BOOL PosLerpContext_Update(XYTransformContext *ctx); BOOL PosLerpContext_UpdateAndApplyToSprite(XYTransformContext *ctx, ManagedSprite *sprite); BOOL PosLerpContext_UpdateAndApplyToMon(XYTransformContext *ctx, PokemonSprite *sprite); -void XYTransformContext_InitParabolic(XYTransformContext *linear, XYTransformContext *revs, s16 sx, s16 ex, s16 sy, s16 ey, u16 frames, fx32 r); +void XYTransformContext_InitParabolic(XYTransformContext *linear, XYTransformContext *revs, s16 sx, s16 ex, s16 sy, s16 ey, u16 frames, fx32 arcRadius); BOOL XYTransformContext_UpdateParabolic(XYTransformContext *ctx, XYTransformContext *revs); -BOOL ov12_02225D2C(XYTransformContext *ctx, XYTransformContext *revs, ManagedSprite *sprite); +BOOL XYTransformContext_UpdateParabolicAndApplyToSprite(XYTransformContext *ctx, XYTransformContext *revs, ManagedSprite *sprite); void ValueLerpContext_Init(ValueLerpContext *ctx, s32 start, s32 end, u32 steps); void ValueLerpContext_InitFX32(ValueLerpContext *ctx, s16 start, s16 end, u32 steps); // Uses FX32 internally BOOL ValueLerpContext_Update(ValueLerpContext *ctx); BOOL ValueLerpContext_UpdateFX32(ValueLerpContext *ctx); -void AngleLerpContext_InitCos(ValueLerpContext *ctx, u16 start, u16 end, fx32 r, u32 steps); -BOOL AngleLerpContext_UpdateCos(ValueLerpContext *ctx); +void ValueLerpContext_InitCos(ValueLerpContext *ctx, u16 start, u16 end, fx32 amplitude, u32 steps); +BOOL ValueLerpContext_UpdateCos(ValueLerpContext *ctx); void ScaleLerpContext_Init(XYTransformContext *ctx, s16 startScale, s16 refScale, s16 endScale, u32 steps); BOOL ScaleLerpContext_Update(XYTransformContext *ctx); void ScaleLerpContext_InitXY(XYTransformContext *ctx, s16 sx, s16 ex, s16 sy, s16 ey, s16 ref, u32 steps); @@ -207,7 +207,7 @@ BOOL ShakeContext_UpdateAndApplyToMon(XYTransformContext *ctx, s16 cx, s16 cy, P void Afterimage_Init(AfterimageContext *ctx, XYTransformContext *transformCtx, XYTransformFunc transformFunc, s16 x, s16 y, u16 delay, u8 count, u8 mode, ManagedSprite *sprite0, ManagedSprite *sprite1, ManagedSprite *sprite2, ManagedSprite *sprite3); BOOL Afterimage_Update(AfterimageContext *ctx); void RevolutionContext_InitOvalRevolutions(XYTransformContext *ctx, int revs, int stepsPerRev); -void AlphaFadeContext_Init(AlphaFadeContext *ctx, s16 sev1, s16 eev1, s16 sev2, s16 eev2, int steps); +void AlphaFadeContext_Init(AlphaFadeContext *ctx, s16 startEv1, s16 endEv1, s16 startEv2, s16 endEv2, int steps); BOOL AlphaFadeContext_IsDone(const AlphaFadeContext *ctx); CustomBgScrollContext *CustomBgScrollContext_New(u32 offsetReg, u32 initValue, enum HeapID heapID); void CustomBgScrollContext_Free(CustomBgScrollContext *ctx); @@ -219,14 +219,14 @@ void *BgScrollContext_GetWriteBuffer(const BgScrollContext *ctx); void BgScrollContext_Stop(BgScrollContext *ctx); u32 BattleAnimUtil_MakeBgOffsetValue(u16 x, u16 y); u32 BattleAnimUtil_GetHOffsetRegisterForBg(int bgID); -void ov12_02226728(s16 param0, s16 param1, s16 param2, s16 param3, s16 *param4, s16 *param5); -void ov12_02226744(s16 param0, s16 param1, s16 param2, s16 param3, fx32 *param4); -void ov12_0222676C(s16 param0, s16 param1, s16 param2, s16 param3, u16 *param4); -BOOL ov12_022267A8(int *param0, int param1, s32 param2); +void BattleAnimMath_CalcMidpoint(s16 x0, s16 y0, s16 x1, s16 y1, s16 *outMidX, s16 *outMidY); +void BattleAnimMath_CalcDistance(s16 x0, s16 y0, s16 x1, s16 y1, fx32 *outDist); +void BattleAnimMath_CalcAngle(s16 x0, s16 y0, s16 x1, s16 y1, u16 *outAngle); +BOOL BattleAnimMath_StepToward(int *value, int target, s32 step); BOOL PaletteFadeContext_IsActive(PaletteFadeContext *ctx); void PaletteFadeContext_Free(PaletteFadeContext *ctx); PaletteFadeContext *PaletteFadeContext_New(PaletteData *paletteData, enum HeapID heapID, enum PaletteBufferID bufferID, u16 index, u16 count, s8 stepFrames, s8 step, u8 startFrac, u8 endFrac, u16 color, int priority); -void BattleAnimUtil_MakeBgPalsGrayscale(BattleAnimSystem *ctx); -void BattleAnimUtil_ReturnBgPalsToNormal(BattleAnimSystem *ctx); +void BattleAnimUtil_MakeBgPalsGrayscale(BattleAnimSystem *system); +void BattleAnimUtil_ReturnBgPalsToNormal(BattleAnimSystem *system); #endif // POKEPLATINUM_BATTLE_ANIM_HELPERS_H diff --git a/include/battle_anim/battle_anim_system.h b/include/battle_anim/battle_anim_system.h index efe01abfb7..c38f617469 100644 --- a/include/battle_anim/battle_anim_system.h +++ b/include/battle_anim/battle_anim_system.h @@ -58,8 +58,8 @@ enum BattleAnimMoveInfoType { BATTLE_ANIM_MOVE_INFO_POWER, BATTLE_ANIM_MOVE_INFO_FRIENDSHIP, BATTLE_ANIM_MOVE_INFO_FIELD_CONDITIONS, - // BATTLE_ANIM_MOVE_INFO_??? = 4, - BATTLE_ANIM_MOVE_INFO_TERRAIN = 5, + BATTLE_ANIM_MOVE_INFO_EFFECT_CHANCE, + BATTLE_ANIM_MOVE_INFO_TERRAIN, BATTLE_ANIM_MOVE_INFO_COUNT }; @@ -86,7 +86,7 @@ enum BattleAnimTrackingTask { // Holds context information for the current move animation typedef struct BattleAnimContext { - u8 unk_00; + u8 command; u8 unk_01; // Current Move info @@ -95,7 +95,7 @@ typedef struct BattleAnimContext { u16 power; u16 friendship; // Friendship of the attacker u32 fieldConditions; // Field conditions at the time of the move - u16 unk_10; + u16 effectChance; u16 terrain; // Terrain at the time of the move u16 attacker; @@ -131,25 +131,25 @@ typedef struct BattleAnimScriptLoop { BOOL isActive; } BattleAnimScriptLoop; -typedef struct { +typedef struct PokemonSpriteDrawContext { struct BattleAnimSystem *battleAnimSys; SpriteManager *spriteManager; ManagedSprite *sprite; BOOL active; -} UnkStruct_ov12_02221810; +} PokemonSpriteDrawContext; -typedef struct { - s16 unk_00; - s16 unk_02; - s16 unk_04; - s16 unk_06; - int unk_08; -} UnkStruct_ov12_022224F8_sub1; +typedef struct BgWaveStrip { + s16 startScanline; + s16 endScanline; + s16 scrollSpeed; + s16 scrollAccum; + int baseOffset; +} BgWaveStrip; -typedef struct { - UnkStruct_ov12_022224F8_sub1 unk_00[16]; - struct CustomBgScrollContext *unk_C0; -} UnkStruct_ov12_022224F8; +typedef struct WaveAnimContext { + BgWaveStrip strips[16]; + struct CustomBgScrollContext *bgScrollCtx; +} WaveAnimContext; typedef struct BattleBgAnim { BgConfig *bgConfig; @@ -161,7 +161,7 @@ typedef struct BattleBgAnim { int unusedBg; BOOL unused; BOOL cancel; - UnkStruct_ov12_022224F8 *unk_1C; + WaveAnimContext *waveAnimCtx; } BattleBgAnim; typedef struct PokemonSpriteTrackingTask { @@ -192,10 +192,10 @@ typedef struct BattleAnimSystem { u32 *scriptPtr; u32 *callStack[BATTLE_ANIM_SCRIPT_MAX_CALL_STACK_DEPTH]; BattleAnimScriptLoop loopStack[BATTLE_ANIM_SCRIPT_MAX_NESTED_LOOPS]; - UnkStruct_ov12_02221810 unk_48[2]; + PokemonSpriteDrawContext pokemonSpriteDrawContexts[2]; u8 cameraProjections[MAX_PARTICLE_SYSTEMS]; // Projection setting for each particle system. See enum CameraProjection u8 particleSystemCameraFlip[MAX_PARTICLE_SYSTEMS]; // Whether to flip the camera (Y axis) for each particle system - s8 unk_88; + s8 unused_88; u8 scriptDelay; u16 activeAnimTasks; u16 activeSoundTasks; @@ -214,8 +214,8 @@ typedef struct BattleAnimSystem { BgTrackingTask *bgTrackingTask; u8 bgSwitchState; u8 soundEffectWaitTimer; - u8 unk_17A; - u8 unk_17B; + u8 endDelayFrames; + u8 unused_17B; BattleBgAnim *bgAnim; BattleBackgroundReference battleBgRefs; int baseBgPalettes; @@ -230,7 +230,7 @@ void BattleAnimSystem_SetIsContest(BattleAnimSystem *system, BOOL isContest); BOOL BattleAnimSystem_IsContest(BattleAnimSystem *system); enum HeapID BattleAnimSystem_GetHeapID(BattleAnimSystem *system); BOOL BattleAnimSystem_Delete(BattleAnimSystem *system); -BOOL BattleAnimSystem_StartMove(BattleAnimSystem *system, MoveAnimation *param1, u16 move, BattleAnimBattlerContext *param3); +BOOL BattleAnimSystem_StartMove(BattleAnimSystem *system, MoveAnimation *moveAnim, u16 move, BattleAnimBattlerContext *battlerContext); BOOL BattleAnimSystem_ExecuteScript(BattleAnimSystem *system); BOOL BattleAnimSystem_IsMoveActive(BattleAnimSystem *system); BOOL BattleAnimSystem_FreeScriptData(BattleAnimSystem *system); @@ -254,14 +254,14 @@ SpriteManager *BattleAnimSystem_GetPrimarySpriteManager(BattleAnimSystem *system SpriteSystem *BattleAnimSystem_GetSpriteSystem(BattleAnimSystem *system); void BattleAnimSystem_SetDefaultAlphaBlending(void); int BattleAnimSystem_GetMoveInfo(BattleAnimSystem *system, enum BattleAnimMoveInfoType type); -void ov12_02220590(BattleAnimSystem *system, BattlerSpriteContext *battlerSpriteCtx, int param2); +void BattlerSpriteContext_InitFromSystem(BattleAnimSystem *system, BattlerSpriteContext *battlerSpriteCtx, int animParticipantMode); void BattleAnimSystem_CancelTrackingTask(BattleAnimSystem *system, enum BattleAnimTrackingTask task); void BattleAnimSystem_CancelBgAnim(BattleAnimSystem *system); int BattleAnimSystem_GetBaseBgPalettes(BattleAnimSystem *system); void BattleAnimSystem_LoadBaseBg(BattleAnimSystem *system, enum BgLayer bgLayer); void BattleAnimSystem_UnloadBaseBg(BattleAnimSystem *system, enum BgLayer bgLayer); BattleAnimScriptCmd BattleAnimSystem_GetScriptCmd(u32 id); -int ov12_02223178(BattleAnimContext *param0); +int BattleAnimContext_GetUnk_01(BattleAnimContext *param0); s8 BattleAnimSound_CorrectPanDirection(BattleAnimSystem *system, s8 pan); s8 BattleAnimSound_CorrectStepDirection(s8 start, s8 end, s8 step); BOOL BattleAnimSystem_GetExtraParams(BattleAnimSystem *system, int params[], int count); @@ -286,10 +286,10 @@ void BattleAnimSystem_LoadBattleBgTiles(BattleAnimSystem *system, enum BgLayer l void BattleAnimSystem_LoadBattleBgPaletteBuffer(BattleAnimSystem *system); BOOL BattleAnimSystem_ShouldBattlerSpriteBeFlipped(BattleAnimSystem *system, int battlerRole); int BattleAnimSystem_GetBgNarcMemberIndex(int bgID, enum BgNarcMemberType type); -BattleMonOBJData *ov12_022234F8(BattleSystem *battleSys, enum HeapID heapID, int param2); -BattleMonOBJData *ov12_02223764(BattleSystem *battleSys, enum HeapID heapID); -void ov12_02223770(BattleMonOBJData *btlMonObjData); -void ov12_022237A4(BattleMonOBJData *btlMonObjData, int param1); -int ov12_022237D8(BattleMonOBJData *btlMonObjData); +BattleMonOBJData *BattleMonOBJData_New(BattleSystem *battleSys, enum HeapID heapID, int battlerIdx); +BattleMonOBJData *BattleMonOBJData_NewAll(BattleSystem *battleSys, enum HeapID heapID); +void BattleMonOBJData_Free(BattleMonOBJData *btlMonObjData); +void BattleMonOBJData_FreeForBattler(BattleMonOBJData *btlMonObjData, int unused); +int BattleMonOBJData_GetBattlerType(BattleMonOBJData *btlMonObjData); #endif // POKEPLATINUM_BATTLE_ANIM_SYSTEM_H diff --git a/include/battle_anim/battle_anim_util.h b/include/battle_anim/battle_anim_util.h index b27e1f5a7e..f6286fce73 100644 --- a/include/battle_anim/battle_anim_util.h +++ b/include/battle_anim/battle_anim_util.h @@ -24,7 +24,7 @@ typedef struct BattleAnimScriptFuncCommon { u8 state; u8 counter1; // General purpose counters u8 counter2; - u8 unk_03; + u8 unused_03; BattleAnimSystem *battleAnimSys; SpriteSystem *spriteSystem; SpriteManager *pokemonSpriteManager; @@ -73,7 +73,7 @@ void BattleAnimUtil_GetBattlerWorldPos_DragonPulse(BattleAnimSystem *system, int void BattleAnimUtil_GetBattlerWorldPos_CameraLookAt(BattleAnimSystem *system, int battler, VecFx32 *pos); void BattleAnimUtil_GetBattlerWorldPos_HydroPump(BattleAnimSystem *system, int battler, VecFx32 *pos); void BattleAnimUtil_GetParticleViewportTopPosition(VecFx32 *pos); -void ov12_02235758(int param0, VecFx32 *param1, int param2, int param3); +void BattleAnimUtil_GetBattlerTypeWorldPos(int battlerType, VecFx32 *pos, BOOL isContest, enum CameraProjection projection); void BattleAnimUtil_GetUpVectorForBattler(int param0, VecFx32 *param1); void BattleAnimUtil_SetSpriteBgBlending(BattleAnimSystem *system, int spriteAlpha, int bgAlpha); void BattleAnimUtil_SetSpriteBlending(BattleAnimSystem *system, int planes, int spriteAlpha, int otherAlpha); diff --git a/include/battle_anim/battle_particle_util.h b/include/battle_anim/battle_particle_util.h index 66b3dba6ee..098eed4b13 100644 --- a/include/battle_anim/battle_particle_util.h +++ b/include/battle_anim/battle_particle_util.h @@ -6,9 +6,9 @@ ParticleSystem *BattleParticleUtil_CreateParticleSystem(enum HeapID heapID, int narcMemberIndex, BOOL uploadResImmediately); ParticleSystem *BattleParticleUtil_CreateParticleSystemEx(enum HeapID heapID, enum NarcID narcID, int memberIndex, BOOL uploadResImmediately); -void *BattleParticleUtil_ReadMemberFromNARC(NARC *param0, int param1, enum HeapID heapID); -ParticleSystem *ov12_0222384C(NARC *param0, enum HeapID heapID, int param2, BOOL param3); -SPLEmitter *BattleParticleUtil_CreateEmitter(ParticleSystem *param0, int param1, int param2, void *param3); -void BattleParticleUtil_FreeParticleSystem(ParticleSystem *param0); +void *BattleParticleUtil_ReadMemberFromNARC(NARC *narc, int memberIdx, enum HeapID heapID); +ParticleSystem *BattleParticleUtil_CreateParticleSystemFromOpenNarc(NARC *narc, enum HeapID heapID, int memberIdx, BOOL uploadImmediately); +SPLEmitter *BattleParticleUtil_CreateEmitter(ParticleSystem *ps, int resourceID, int callbackID, void *battleAnimSystemPtr); +void BattleParticleUtil_FreeParticleSystem(ParticleSystem *ps); #endif // POKEPLATINUM_BATTLE_PARTICLE_UTIL_H diff --git a/include/battle_anim/script_func_examples.h b/include/battle_anim/script_func_examples.h index 3b634344ef..1e8c9e931e 100644 --- a/include/battle_anim/script_func_examples.h +++ b/include/battle_anim/script_func_examples.h @@ -9,6 +9,6 @@ void BattleAnimScriptFunc_Nop(BattleAnimSystem *system); void BattleAnimScriptFunc_AnimExample(BattleAnimSystem *system); void BattleAnimScriptFunc_SoundExample(BattleAnimSystem *system); void BattleAnimScriptFunc_GenericExample(BattleAnimSystem *system); -void ov12_02226B1C(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager *param2, ManagedSprite *param3); +void BattleAnimScriptFunc_SpriteExample(BattleAnimSystem *system, SpriteSystem *spriteSys, SpriteManager *spriteManager, ManagedSprite *managedSprite); #endif // POKEPLATINUM_SCRIPT_FUNC_EXAMPLES_H diff --git a/include/data/scripts/btlanimcmd.h b/include/data/scripts/btlanimcmd.h index 05b6c21268..77fa11b645 100644 --- a/include/data/scripts/btlanimcmd.h +++ b/include/data/scripts/btlanimcmd.h @@ -18,8 +18,8 @@ ScriptCommand(BTLANIMCMD_SETDEFAULTALPHABLENDING, BattleAnimScriptCmd_ ScriptCommand(BTLANIMCMD_CALL, BattleAnimScriptCmd_Call) ScriptCommand(BTLANIMCMD_RETURN, BattleAnimScriptCmd_Return) ScriptCommand(BTLANIMCMD_SETVAR, BattleAnimScriptCmd_SetVar) -ScriptCommand(BTLANIMCMD_013, BattleAnimScriptCmd_013) -ScriptCommand(BTLANIMCMD_014, BattleAnimScriptCmd_014) +ScriptCommand(BTLANIMCMD_JUMPIFEFFECTCHANCEODD, BattleAnimScriptCmd_JumpIfEffectChanceOdd) +ScriptCommand(BTLANIMCMD_JUMPIFEFFECTCHANCE, BattleAnimScriptCmd_JumpIfEffectChance) ScriptCommand(BTLANIMCMD_JUMP, BattleAnimScriptCmd_Jump) ScriptCommand(BTLANIMCMD_SWITCHBG, BattleAnimScriptCmd_SwitchBg) ScriptCommand(BTLANIMCMD_SETBGSWITCHVAR, BattleAnimScriptCmd_SetBgSwitchVar) @@ -38,7 +38,7 @@ ScriptCommand(BTLANIMCMD_WAITFORSOUNDEFFECTS, BattleAnimScriptCmd_ ScriptCommand(BTLANIMCMD_JUMPIFEQUAL, BattleAnimScriptCmd_JumpIfEqual) ScriptCommand(BTLANIMCMD_LOADPOKEMONSPRITEINTOBG, BattleAnimScriptCmd_LoadPokemonSpriteIntoBg) ScriptCommand(BTLANIMCMD_REMOVEPOKEMONSPRITEFROMBG, BattleAnimScriptCmd_RemovePokemonSpriteFromBg) -ScriptCommand(BTLANIMCMD_033, BattleAnimScriptCmd_033) +ScriptCommand(BTLANIMCMD_JUMPIFUNK_01, BattleAnimScriptCmd_JumpIfUnk_01) ScriptCommand(BTLANIMCMD_SWITCHBGEX, BattleAnimScriptCmd_SwitchBgEx) ScriptCommand(BTLANIMCMD_PLAYMOVINGSOUNDEFFECTNOCORRECTION, BattleAnimScriptCmd_PlayMovingSoundEffectNoCorrection) ScriptCommand(BTLANIMCMD_PLAYMOVINGSOUNDEFFECTATKDEF2, BattleAnimScriptCmd_PlayMovingSoundEffectAtkDef2) @@ -73,8 +73,8 @@ ScriptCommand(BTLANIMCMD_JUMPIFBATTLERSIDE, BattleAnimScriptCmd_ ScriptCommand(BTLANIMCMD_PLAYPOKEMONCRY, BattleAnimScriptCmd_PlayPokemonCry) ScriptCommand(BTLANIMCMD_WAITFORPOKEMONCRIES, BattleAnimScriptCmd_WaitForPokemonCries) ScriptCommand(BTLANIMCMD_RESETVARS, BattleAnimScriptCmd_ResetVars) -ScriptCommand(BTLANIMCMD_068, BattleAnimScriptCmd_068) -ScriptCommand(BTLANIMCMD_069, BattleAnimScriptCmd_069) +ScriptCommand(BTLANIMCMD_STARTBATTLERSLIDEIN, BattleAnimScriptCmd_StartBattlerSlideIn) +ScriptCommand(BTLANIMCMD_STARTBATTLERSLIDEOUT, BattleAnimScriptCmd_StartBattlerSlideOut) ScriptCommand(BTLANIMCMD_JUMPIFWEATHER, BattleAnimScriptCmd_JumpIfWeather) ScriptCommand(BTLANIMCMD_JUMPIFCONTEST, BattleAnimScriptCmd_JumpIfContest) ScriptCommand(BTLANIMCMD_JUMPIFFRIENDLYFIRE, BattleAnimScriptCmd_JumpIfFriendlyFire) @@ -87,8 +87,8 @@ ScriptCommand(BTLANIMCMD_ADDSPRITEWITHFUNC, BattleAnimScriptCmd_ ScriptCommand(BTLANIMCMD_ADDSPRITE, BattleAnimScriptCmd_AddSprite) ScriptCommand(BTLANIMCMD_FREESPRITEMANAGER, BattleAnimScriptCmd_FreeSpriteManager) ScriptCommand(BTLANIMCMD_SETPOKEMONSPRITEVISIBLE, BattleAnimScriptCmd_SetPokemonSpriteVisible) -ScriptCommand(BTLANIMCMD_082, BattleAnimScriptCmd_082) -ScriptCommand(BTLANIMCMD_083, BattleAnimScriptCmd_083) +ScriptCommand(BTLANIMCMD_STARTPOKEMONSPRITEDRAWTASK, BattleAnimScriptCmd_StartPokemonSpriteDrawTask) +ScriptCommand(BTLANIMCMD_STOPPOKEMONSPRITEDRAWTASK, BattleAnimScriptCmd_StopPokemonSpriteDrawTask) ScriptCommand(BTLANIMCMD_WAITFORLRX, BattleAnimScriptCmd_WaitForLRX) // clang-format on diff --git a/res/moves/bide/anim.s b/res/moves/bide/anim.s index a67d179dd5..8fd8208602 100644 --- a/res/moves/bide/anim.s +++ b/res/moves/bide/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/bounce/anim.s b/res/moves/bounce/anim.s index 16982a798d..e8266f9c7c 100644 --- a/res/moves/bounce/anim.s +++ b/res/moves/bounce/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, bounce_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/brick_break/anim.s b/res/moves/brick_break/anim.s index d96116451a..c2f1b57aaa 100644 --- a/res/moves/brick_break/anim.s +++ b/res/moves/brick_break/anim.s @@ -8,7 +8,7 @@ L_0: End L_1: - BtlAnimCmd_013 L_3, L_4 + JumpIfEffectChanceOdd L_3, L_4 End L_3: @@ -35,7 +35,7 @@ L_4: End L_2: - BtlAnimCmd_013 L_5, L_6 + JumpIfEffectChanceOdd L_5, L_6 End L_5: diff --git a/res/moves/covet/anim.s b/res/moves/covet/anim.s index ff38b084fc..37fac81488 100644 --- a/res/moves/covet/anim.s +++ b/res/moves/covet/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/curse/anim.s b/res/moves/curse/anim.s index 0cab8dc966..b8832c451e 100644 --- a/res/moves/curse/anim.s +++ b/res/moves/curse/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/dig/anim.s b/res/moves/dig/anim.s index e616ca20db..5339d20fc0 100644 --- a/res/moves/dig/anim.s +++ b/res/moves/dig/anim.s @@ -3,7 +3,7 @@ L_0: LoadParticleResource 0, dig_spa LoadParticleResource 1, pound_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/dive/anim.s b/res/moves/dive/anim.s index 14abd29cab..0cdd0e97a4 100644 --- a/res/moves/dive/anim.s +++ b/res/moves/dive/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, dive_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 WaitForAllEmitters UnloadParticleSystem 0 End diff --git a/res/moves/doom_desire/anim.s b/res/moves/doom_desire/anim.s index 3207ba1195..af14df7a8e 100644 --- a/res/moves/doom_desire/anim.s +++ b/res/moves/doom_desire/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/fly/anim.s b/res/moves/fly/anim.s index d31e04d7e7..9dcbad7653 100644 --- a/res/moves/fly/anim.s +++ b/res/moves/fly/anim.s @@ -3,7 +3,7 @@ L_0: LoadParticleResource 0, fly_spa LoadParticleResource 1, bounce_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/focus_punch/anim.s b/res/moves/focus_punch/anim.s index 069f438a21..2a3d016647 100644 --- a/res/moves/focus_punch/anim.s +++ b/res/moves/focus_punch/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/future_sight/anim.s b/res/moves/future_sight/anim.s index b7ffca8f54..1b9fc9e393 100644 --- a/res/moves/future_sight/anim.s +++ b/res/moves/future_sight/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 WaitForAllEmitters UnloadParticleSystem 0 End diff --git a/res/moves/healing_wish/anim.s b/res/moves/healing_wish/anim.s index 8190cb35ac..c6c03410ba 100644 --- a/res/moves/healing_wish/anim.s +++ b/res/moves/healing_wish/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, healing_wish_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/lunar_dance/anim.s b/res/moves/lunar_dance/anim.s index 6818adea03..714c9ff49d 100644 --- a/res/moves/lunar_dance/anim.s +++ b/res/moves/lunar_dance/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/present/anim.s b/res/moves/present/anim.s index b9fb8ff955..5af8fce8b3 100644 --- a/res/moves/present/anim.s +++ b/res/moves/present/anim.s @@ -6,7 +6,7 @@ L_0: Func_MoveEmitterA2BParabolic 0, 0, 0, 0, 19, 64 PlayMovingSoundEffectAtkDef SEQ_SE_DP_W039, BATTLE_SOUND_PAN_LEFT, BATTLE_SOUND_PAN_RIGHT, 4, 2 Delay 20 - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/razor_wind/anim.s b/res/moves/razor_wind/anim.s index 31bec101ed..9db64a2807 100644 --- a/res/moves/razor_wind/anim.s +++ b/res/moves/razor_wind/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/shadow_force/anim.s b/res/moves/shadow_force/anim.s index a3914e5deb..04ec6ad41c 100644 --- a/res/moves/shadow_force/anim.s +++ b/res/moves/shadow_force/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, shadow_force_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/skull_bash/anim.s b/res/moves/skull_bash/anim.s index 110f5a15bb..7fc5f4f3c5 100644 --- a/res/moves/skull_bash/anim.s +++ b/res/moves/skull_bash/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, skull_bash_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/sky_attack/anim.s b/res/moves/sky_attack/anim.s index bef13a8f84..a97c75e73f 100644 --- a/res/moves/sky_attack/anim.s +++ b/res/moves/sky_attack/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/snatch/anim.s b/res/moves/snatch/anim.s index f016559777..06c8119f01 100644 --- a/res/moves/snatch/anim.s +++ b/res/moves/snatch/anim.s @@ -1,7 +1,7 @@ #include "macros/btlanimcmd.inc" L_0: - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/solar_beam/anim.s b/res/moves/solar_beam/anim.s index 8023cf2b20..d148d721c7 100644 --- a/res/moves/solar_beam/anim.s +++ b/res/moves/solar_beam/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, solar_beam_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/thief/anim.s b/res/moves/thief/anim.s index 066f73b09d..6b06e1ba49 100644 --- a/res/moves/thief/anim.s +++ b/res/moves/thief/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, thief_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/res/moves/u_turn/anim.s b/res/moves/u_turn/anim.s index e135fbd8a1..eefeca706d 100644 --- a/res/moves/u_turn/anim.s +++ b/res/moves/u_turn/anim.s @@ -2,7 +2,7 @@ L_0: LoadParticleResource 0, u_turn_spa - BtlAnimCmd_013 L_1, L_2 + JumpIfEffectChanceOdd L_1, L_2 End L_1: diff --git a/src/battle/battle_display.c b/src/battle/battle_display.c index f33cf15082..8a73abcf53 100644 --- a/src/battle/battle_display.c +++ b/src/battle/battle_display.c @@ -1984,13 +1984,13 @@ static void Task_ShowEncounter(SysTask *task, void *data) if (BattleSystem_GetBattleType(monShowData->battleSys) & BATTLE_TYPE_2vs2) { if ((BattleSystem_GetBattleStatusMask(monShowData->battleSys) & BATTLE_STATUS_RECORDED) == FALSE && monShowData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) { - monShowData->btlMonObjData = ov12_02223764(monShowData->battleSys, HEAP_ID_BATTLE); + monShowData->btlMonObjData = BattleMonOBJData_NewAll(monShowData->battleSys, HEAP_ID_BATTLE); } } else if ((BattleSystem_GetBattleStatusMask(monShowData->battleSys) & BATTLE_STATUS_RECORDED) == FALSE) { if (BattleSystem_IsInitialized(monShowData->battleSys) == TRUE && monShowData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) { - monShowData->btlMonObjData = ov12_02223764(monShowData->battleSys, HEAP_ID_BATTLE); + monShowData->btlMonObjData = BattleMonOBJData_NewAll(monShowData->battleSys, HEAP_ID_BATTLE); } else if (monShowData->battlerType == BATTLER_TYPE_SOLO_PLAYER) { - monShowData->btlMonObjData = ov12_02223764(monShowData->battleSys, HEAP_ID_BATTLE); + monShowData->btlMonObjData = BattleMonOBJData_NewAll(monShowData->battleSys, HEAP_ID_BATTLE); } } @@ -2061,7 +2061,7 @@ static void Task_ShowEncounter(SysTask *task, void *data) } if (monShowData->btlMonObjData) { - ov12_02223770(monShowData->btlMonObjData); + BattleMonOBJData_Free(monShowData->btlMonObjData); monShowData->btlMonObjData = NULL; } @@ -2269,7 +2269,7 @@ static void Task_ShowPokemon(SysTask *task, void *data) PokemonSprite_SetAttribute(monShowData->battlerData->monSprite, MON_SPRITE_SHADOW_SHOULD_FOLLOW_Y, FALSE); PokemonSprite_SetAttribute(monShowData->battlerData->monSprite, MON_SPRITE_HIDE, TRUE); monShowData->btlMonObjData = NULL; - monShowData->btlMonObjData = ov12_02223764(monShowData->battleSys, HEAP_ID_BATTLE); + monShowData->btlMonObjData = BattleMonOBJData_NewAll(monShowData->battleSys, HEAP_ID_BATTLE); monShowData->state++; break; case 1: @@ -2294,7 +2294,7 @@ static void Task_ShowPokemon(SysTask *task, void *data) if (ov12_02237810(monShowData->ballRotation) == 1) { if (monShowData->btlMonObjData) { - ov12_02223770(monShowData->btlMonObjData); + BattleMonOBJData_Free(monShowData->btlMonObjData); } PokemonSprite_StartFade(monShowData->battlerData->monSprite, 16, 16, 0, sFadeColors[monShowData->capturedBall]); @@ -5595,7 +5595,7 @@ static void Task_SpriteToOAM(SysTask *task, void *data) switch (spriteToOAMData->state) { case 0: GF_ASSERT(spriteToOAMData->battlerData->btlMonObjData == NULL); - spriteToOAMData->battlerData->btlMonObjData = ov12_022234F8(spriteToOAMData->battleSys, HEAP_ID_BATTLE, spriteToOAMData->battler); + spriteToOAMData->battlerData->btlMonObjData = BattleMonOBJData_New(spriteToOAMData->battleSys, HEAP_ID_BATTLE, spriteToOAMData->battler); spriteToOAMData->state++; break; default: @@ -5612,14 +5612,14 @@ static void Task_OAMToSprite(SysTask *task, void *data) GF_ASSERT(oamToSpriteData->battlerData->btlMonObjData != NULL); - if (ov12_022237D8(oamToSpriteData->battlerData->btlMonObjData) == 3) { + if (BattleMonOBJData_GetBattlerType(oamToSpriteData->battlerData->btlMonObjData) == 3) { if (oamToSpriteData->delay < 5) { oamToSpriteData->delay++; return; } } - ov12_022237A4(oamToSpriteData->battlerData->btlMonObjData, oamToSpriteData->battler); + BattleMonOBJData_FreeForBattler(oamToSpriteData->battlerData->btlMonObjData, oamToSpriteData->battler); oamToSpriteData->battlerData->btlMonObjData = NULL; BattleController_EmitClearCommand(oamToSpriteData->battleSys, oamToSpriteData->battler, oamToSpriteData->command); diff --git a/src/battle_anim/battle_anim_helpers.c b/src/battle_anim/battle_anim_helpers.c index bfeda4e0d4..6f986d4e07 100644 --- a/src/battle_anim/battle_anim_helpers.c +++ b/src/battle_anim/battle_anim_helpers.c @@ -28,7 +28,7 @@ #define MAX_CYCLES_PER_SHAKE 4 -static void BattleAnimUtil_ConvertColorsToGrayscale(u16 *param0, u16 param1); +static void BattleAnimUtil_ConvertColorsToGrayscale(u16 *colors, u16 colorCount); static const Point2D sBattleAnimBattlerPositions[][6] = { // Single Battle @@ -146,22 +146,18 @@ fx32 BattleAnimMath_GetStepSize(fx32 start, fx32 end, u32 steps) return FX_Div(end - start, steps << FX32_SHIFT); } -u32 ov12_022259AC(fx32 param0, fx32 param1, fx32 param2) +u32 BattleAnimMath_CalcStepCount(fx32 start, fx32 end, fx32 stepSize) { - fx32 v0; - fx32 v1; + fx32 div = FX_Div(end - start, stepSize); + fx32 modf = FX_Modf(div, &div); - v0 = FX_Div(param1 - param0, param2); - - v1 = FX_Modf(v0, &v0); - - if (v1) { - v0 += FX32_ONE; + if (modf) { + div += FX32_ONE; } - v0 = MATH_ABS(v0); + div = MATH_ABS(div); - return v0 >> FX32_SHIFT; + return div >> FX32_SHIFT; } void XYTransformContext_ApplyPosOffsetToSprite(XYTransformContext *ctx, ManagedSprite *sprite, s16 cx, s16 cy) @@ -199,25 +195,23 @@ void RevolutionContext_Init(XYTransformContext *ctx, u16 sx, u16 ex, u16 sy, u16 ctx->data[XY_PARAM_REV_STEP_SIZE_Y] = (ey - sy) / steps; } -void ov12_02225A8C(XYTransformContext *param0, u16 param1, u16 param2, u16 param3, u16 param4, fx32 param5, fx32 param6, u16 param7) +void RevolutionContext_InitWithStepSize(XYTransformContext *ctx, u16 sx, u16 ex, u16 sy, u16 ey, fx32 rx, fx32 ry, u16 stepSize) { - s16 v0; + GF_ASSERT(ctx); - GF_ASSERT(param0); - - if (param1 > param2) { - param7 = -param7; + if (sx > ex) { + stepSize = -stepSize; } - v0 = param7; + s16 stepSizeSigned = stepSize; - param0->data[0] = ov12_022259AC(param1 * FX32_ONE, param2 * FX32_ONE, v0 * FX32_ONE); - param0->data[1] = param1; - param0->data[2] = param5; - param0->data[3] = param3; - param0->data[4] = param6; - param0->data[5] = v0; - param0->data[6] = (param4 - param3) / param0->data[0]; + ctx->data[XY_PARAM_REV_STEPS] = BattleAnimMath_CalcStepCount(sx * FX32_ONE, ex * FX32_ONE, stepSizeSigned * FX32_ONE); + ctx->data[XY_PARAM_REV_CUR_X] = sx; + ctx->data[XY_PARAM_REV_RADIUS_X] = rx; + ctx->data[XY_PARAM_REV_CUR_Y] = sy; + ctx->data[XY_PARAM_REV_RADIUS_Y] = ry; + ctx->data[XY_PARAM_REV_STEP_SIZE_X] = stepSizeSigned; + ctx->data[XY_PARAM_REV_STEP_SIZE_Y] = (ey - sy) / ctx->data[0]; } BOOL RevolutionContext_Update(XYTransformContext *ctx) @@ -312,12 +306,12 @@ BOOL PosLerpContext_UpdateAndApplyToMon(XYTransformContext *ctx, PokemonSprite * return FALSE; } -void XYTransformContext_InitParabolic(XYTransformContext *linear, XYTransformContext *revs, s16 sx, s16 ex, s16 sy, s16 ey, u16 frames, fx32 r) +void XYTransformContext_InitParabolic(XYTransformContext *linear, XYTransformContext *revs, s16 sx, s16 ex, s16 sy, s16 ey, u16 frames, fx32 arcRadius) { PosLerpContext_Init(linear, sx, ex, sy, ey, frames); revs->x = 0; revs->y = 0; - RevolutionContext_Init(revs, 0, 0, DEG_TO_IDX(90), DEG_TO_IDX(270), 0, r, frames); + RevolutionContext_Init(revs, 0, 0, DEG_TO_IDX(90), DEG_TO_IDX(270), 0, arcRadius, frames); } BOOL XYTransformContext_UpdateParabolic(XYTransformContext *linear, XYTransformContext *revs) @@ -338,10 +332,10 @@ BOOL XYTransformContext_UpdateParabolic(XYTransformContext *linear, XYTransformC return TRUE; } -BOOL ov12_02225D2C(XYTransformContext *param0, XYTransformContext *param1, ManagedSprite *param2) +BOOL XYTransformContext_UpdateParabolicAndApplyToSprite(XYTransformContext *linear, XYTransformContext *revs, ManagedSprite *managedSprite) { - if (XYTransformContext_UpdateParabolic(param0, param1)) { - XYTransformContext_ApplyPosOffsetToSprite(param0, param2, 0, 0); + if (XYTransformContext_UpdateParabolic(linear, revs)) { + XYTransformContext_ApplyPosOffsetToSprite(linear, managedSprite, 0, 0); return 1; } @@ -396,7 +390,7 @@ BOOL ValueLerpContext_UpdateFX32(ValueLerpContext *ctx) return FALSE; } -void AngleLerpContext_InitCos(ValueLerpContext *ctx, u16 start, u16 end, fx32 amplitude, u32 steps) +void ValueLerpContext_InitCos(ValueLerpContext *ctx, u16 start, u16 end, fx32 amplitude, u32 steps) { ctx->data[VALUE_PARAM_COS_STEPS] = steps; ctx->data[VALUE_PARAM_COS_CUR_ANGLE] = start; @@ -404,7 +398,7 @@ void AngleLerpContext_InitCos(ValueLerpContext *ctx, u16 start, u16 end, fx32 am ctx->data[VALUE_PARAM_COS_STEP_SIZE] = (end - start) / steps; } -BOOL AngleLerpContext_UpdateCos(ValueLerpContext *ctx) +BOOL ValueLerpContext_UpdateCos(ValueLerpContext *ctx) { GF_ASSERT(ctx); @@ -764,9 +758,9 @@ static void AlphaFadeContext_Update(SysTask *task, void *param) } } -void AlphaFadeContext_Init(AlphaFadeContext *ctx, s16 sev1, s16 eev1, s16 sev2, s16 eev2, int steps) +void AlphaFadeContext_Init(AlphaFadeContext *ctx, s16 startEv1, s16 endEv1, s16 startEv2, s16 endEv2, int steps) { - PosLerpContext_Init(&ctx->lerp, sev1, eev1, sev2, eev2, steps); + PosLerpContext_Init(&ctx->lerp, startEv1, endEv1, startEv2, endEv2, steps); ctx->done = FALSE; SysTask_Start(AlphaFadeContext_Update, ctx, 0); @@ -973,51 +967,50 @@ u32 BattleAnimUtil_GetHOffsetRegisterForBg(int bgID) } } -void ov12_02226728(s16 param0, s16 param1, s16 param2, s16 param3, s16 *param4, s16 *param5) +void BattleAnimMath_CalcMidpoint(s16 x0, s16 y0, s16 x1, s16 y1, s16 *outMidX, s16 *outMidY) { - *param4 = (param0 + param2) / 2; - *param5 = (param1 + param3) / 2; + *outMidX = (x0 + x1) / 2; + *outMidY = (y0 + y1) / 2; } -void ov12_02226744(s16 param0, s16 param1, s16 param2, s16 param3, fx32 *param4) +void BattleAnimMath_CalcDistance(s16 x0, s16 y0, s16 x1, s16 y1, fx32 *outDist) { - s16 v0 = (param0 - param2); - s16 v1 = (param1 - param3) * -1; + s16 distX = (x0 - x1); + s16 distY = (y0 - y1) * -1; - *param4 = FX_Sqrt(((v1 * v1) + (v0 * v0)) * FX32_ONE); + *outDist = FX_Sqrt(((distY * distY) + (distX * distX)) * FX32_ONE); } -void ov12_0222676C(s16 param0, s16 param1, s16 param2, s16 param3, u16 *param4) +void BattleAnimMath_CalcAngle(s16 x0, s16 y0, s16 x1, s16 y1, u16 *outAngle) { - s16 v0 = (param0 - param2); - s16 v1 = (param1 - param3) * -1; - s16 v2; + s16 distX = (x0 - x1); + s16 distY = (y0 - y1) * -1; - *param4 = FX_Atan2Idx(v1 * FX32_ONE, v0 * FX32_ONE); + *outAngle = FX_Atan2Idx(distY * FX32_ONE, distX * FX32_ONE); - if ((*param4 > 0) && (v1 < 0)) { - *param4 = (*param4 - ((180 * 0xffff) / 360)) * 0xffff; - } else if ((*param4 < 0) && (v1 > 0)) { - *param4 += +((180 * 0xffff) / 360); + if ((*outAngle > 0) && (distY < 0)) { + *outAngle = (*outAngle - ((180 * 0xffff) / 360)) * 0xffff; + } else if ((*outAngle < 0) && (distY > 0)) { + *outAngle += ((180 * 0xffff) / 360); } } -BOOL ov12_022267A8(int *param0, int param1, s32 param2) +BOOL BattleAnimMath_StepToward(int *value, int target, s32 step) { - if (param2 < 0) { - if (*param0 + param2 > param1) { - *param0 += param2; + if (step < 0) { + if (*value + step > target) { + *value += step; return 0; } else { - *param0 = param1; + *value = target; return 1; } } else { - if (*param0 + param2 < param1) { - *param0 += param2; + if (*value + step < target) { + *value += step; return 0; } else { - *param0 = param1; + *value = target; return 1; } } @@ -1101,9 +1094,9 @@ PaletteFadeContext *PaletteFadeContext_New(PaletteData *paletteData, enum HeapID return ctx; } -static void BattleAnimUtil_ConvertColorsToGrayscale(u16 *colors, u16 param1) +static void BattleAnimUtil_ConvertColorsToGrayscale(u16 *colors, u16 colorCount) { - for (int i = 0; i < param1; i++) { + for (int i = 0; i < colorCount; i++) { int r = GX_RGB_R(*colors); int g = GX_RGB_G(*colors); int b = GX_RGB_B(*colors); diff --git a/src/battle_anim/battle_anim_system.c b/src/battle_anim/battle_anim_system.c index 908afa1556..8b255de0b2 100644 --- a/src/battle_anim/battle_anim_system.c +++ b/src/battle_anim/battle_anim_system.c @@ -99,12 +99,12 @@ enum BattleAnimParticleResource { }; typedef struct BattleBgSwitch { - int unk_00; - u8 unk_04; + int unread_00; + u8 unused_04; u8 state; - u8 unk_06; - u8 unk_07; - u8 unk_08; + u8 unused_06; + u8 unused_07; + u8 unused_08; u8 blendCoeffA; u8 blendCoeffB; u8 targetBlendCoeffA; @@ -115,8 +115,8 @@ typedef struct BattleBgSwitch { int flags; int scriptVars[BATTLE_ANIM_SCRIPT_VAR_COUNT]; u16 bgMoveAnimActive : 1; - u16 unk_44_1 : 1; - u16 unk_44_2 : 14; + u16 bgWaveAnimActive : 1; + u16 unused_44_2 : 14; BattleAnimSystem *battleAnimSystem; } BattleBgSwitch; @@ -125,148 +125,148 @@ enum BattleAnimTaskKind { MOVE_EFFECT_TASK_KIND_SOUND, }; -static void ov12_022224F8(SysTask *param0, void *param1); -static void BattleAnimScript_WaitForDelay(BattleAnimSystem *param0); -static void BattleAnimScript_Execute(BattleAnimSystem *param0); +static void BattleBgAnim_WaveTask(SysTask *task, void *param); +static void BattleAnimScript_WaitForDelay(BattleAnimSystem *system); +static void BattleAnimScript_Execute(BattleAnimSystem *system); // See enum BattleAnimTaskKind for 'kind' -static SysTask *BattleAnimSystem_StartTask(u8 kind, BattleAnimSystem *param1, SysTaskFunc param2, void *param3, u32 param4); -static void BattleAnimSystem_EndTask(u8 param0, BattleAnimSystem *param1, SysTask *param2); +static SysTask *BattleAnimSystem_StartTask(u8 kind, BattleAnimSystem *system, SysTaskFunc func, void *param, u32 priority); +static void BattleAnimSystem_EndTask(u8 kind, BattleAnimSystem *system, SysTask *task); -static BattleAnimSoundContext *BattleAnimSystem_CreateSoundContext(BattleAnimSystem *param0); -static void BattleAnimSystem_StartSoundTaskInternal(BattleAnimSystem *param0, BattleAnimSoundContext *param1); -static void BattleAnimSound_Task(SysTask *param0, void *param1); -static BOOL BattleAnimSoundFunc_None(BattleAnimSoundContext *param0); -static BOOL BattleAnimSoundFunc_Pan(BattleAnimSoundContext *param0); -static BOOL BattleAnimSoundFunc_Pan2(BattleAnimSoundContext *param0); -static BOOL BattleAnimSoundFunc_Pan3(BattleAnimSoundContext *param0); -static BOOL BattleAnimSoundFunc_Repeat(BattleAnimSoundContext *param0); -static BOOL BattleAnimSoundFunc_Delay(BattleAnimSoundContext *param0); -static void BattleAnimScriptCmd_Delay(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForAnimTasks(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_BeginLoop(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_EndLoop(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_End(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlaySoundEffect(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop0(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop1(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetBG0BG1AlphaBlending(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetDefaultAlphaBlending(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Call(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Return(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetVar(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_ResetVars(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_068(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_069(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_013(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_014(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Jump(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SwitchBg(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetBgSwitchVar(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_RestoreBg(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForPartialBgSwitch(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForBgSwitch(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetBg(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayPannedSoundEffect(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PanSoundEffects(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayMovingSoundEffectAtkDef(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayLoopedSoundEffect(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayDelayedSoundEffect(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop2(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop3(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForSoundEffects(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_JumpIfEqual(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadPokemonSpriteIntoBg(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_InitPokemonSpriteManager(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadPokemonSpriteDummyResources(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_AddPokemonSprite(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_FreePokemonSpriteManager(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_RemovePokemonSprite(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CancelTrackingTask(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetCameraProjection(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetCameraFlip(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_RemovePokemonSpriteFromBg(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_033(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SwitchBgEx(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayMovingSoundEffectNoCorrection(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayMovingSoundEffectAtkDef2(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop4(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop5(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop6(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop7(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop8(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop9(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop10(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_StopSoundEffect(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_JumpIfBattlerSide(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_JumpIfWeather(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_JumpIfContest(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_JumpIfFriendlyFire(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_PlayPokemonCry(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForPokemonCries(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CallFunc(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CreateEmitter(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CreateEmitterEx(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CreateEmitterForMove(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_CreateEmitterForFriendlyFire(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForAllEmitters(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadParticleSystem(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadDebugParticleSystem(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_UnloadParticleSystem(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetExtraParams(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_Nop11(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_InitSpriteManager(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadCharResObj(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadPlttRes(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadCellResObj(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_LoadAnimResObj(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_AddSpriteWithFunc(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_AddSprite(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_FreeSpriteManager(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_SetPokemonSpriteVisible(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_082(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_083(BattleAnimSystem *param0); -static void BattleAnimScriptCmd_WaitForLRX(BattleAnimSystem *param0); -static int BattleAnimSystem_GetBattlerWithRole(BattleAnimSystem *param0, int param1); -static BOOL BattleBgSwitch_ShouldBeReversed(BattleBgSwitch *param0, BattleAnimSystem *param1, int param2); -static void BattleBgSwitch_SetBg(BattleBgSwitch *param0, BattleAnimSystem *param1, enum BgLayer param2, int param3); -static BOOL BattleBgSwitch_IsFlagSet(int param0, int param1); -static void BattleBgSwitch_ApplyFlags(BattleBgSwitch *param0); -static BOOL BattleBgSwitch_Blend(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgSwitch_Fade(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgSwitch_FlagsOnly(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgRestore_Blend(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgRestore_Fade(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgRestore_FlagsOnly(SysTask *param0, BattleBgSwitch *param1); -static BOOL BattleBgSwitch_AnimNone(BattleBgSwitch *param0); -static BOOL BattleBgSwitch_AnimMoveStart(BattleBgSwitch *param0); -static BOOL BattleBgSwitch_AnimStop(BattleBgSwitch *param0); -static BOOL BattleBgSwitch_AnimCancel(BattleBgSwitch *param0); -static BOOL ov12_0222240C(BattleBgSwitch *param0); -static BOOL ov12_022224E4(BattleBgSwitch *param0); +static BattleAnimSoundContext *BattleAnimSystem_CreateSoundContext(BattleAnimSystem *system); +static void BattleAnimSystem_StartSoundTaskInternal(BattleAnimSystem *system, BattleAnimSoundContext *ctx); +static void BattleAnimSound_Task(SysTask *task, void *param); +static BOOL BattleAnimSoundFunc_None(BattleAnimSoundContext *ctx); +static BOOL BattleAnimSoundFunc_Pan(BattleAnimSoundContext *ctx); +static BOOL BattleAnimSoundFunc_Pan2(BattleAnimSoundContext *ctx); +static BOOL BattleAnimSoundFunc_Pan3(BattleAnimSoundContext *ctx); +static BOOL BattleAnimSoundFunc_Repeat(BattleAnimSoundContext *ctx); +static BOOL BattleAnimSoundFunc_Delay(BattleAnimSoundContext *ctx); +static void BattleAnimScriptCmd_Delay(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForAnimTasks(BattleAnimSystem *system); +static void BattleAnimScriptCmd_BeginLoop(BattleAnimSystem *system); +static void BattleAnimScriptCmd_EndLoop(BattleAnimSystem *system); +static void BattleAnimScriptCmd_End(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlaySoundEffect(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Nop0(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop1(BattleAnimSystem *); +static void BattleAnimScriptCmd_SetBG0BG1AlphaBlending(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetDefaultAlphaBlending(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Call(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Return(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetVar(BattleAnimSystem *system); +static void BattleAnimScriptCmd_ResetVars(BattleAnimSystem *system); +static void BattleAnimScriptCmd_StartBattlerSlideIn(BattleAnimSystem *system); +static void BattleAnimScriptCmd_StartBattlerSlideOut(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfEffectChanceOdd(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfEffectChance(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Jump(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SwitchBg(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetBgSwitchVar(BattleAnimSystem *system); +static void BattleAnimScriptCmd_RestoreBg(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForPartialBgSwitch(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForBgSwitch(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetBg(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayPannedSoundEffect(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PanSoundEffects(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayMovingSoundEffectAtkDef(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayLoopedSoundEffect(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayDelayedSoundEffect(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Nop2(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop3(BattleAnimSystem *); +static void BattleAnimScriptCmd_WaitForSoundEffects(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfEqual(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadPokemonSpriteIntoBg(BattleAnimSystem *system); +static void BattleAnimScriptCmd_InitPokemonSpriteManager(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadPokemonSpriteDummyResources(BattleAnimSystem *system); +static void BattleAnimScriptCmd_AddPokemonSprite(BattleAnimSystem *system); +static void BattleAnimScriptCmd_FreePokemonSpriteManager(BattleAnimSystem *system); +static void BattleAnimScriptCmd_RemovePokemonSprite(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CancelTrackingTask(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetCameraProjection(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetCameraFlip(BattleAnimSystem *system); +static void BattleAnimScriptCmd_RemovePokemonSpriteFromBg(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfUnk_01(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SwitchBgEx(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayMovingSoundEffectNoCorrection(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayMovingSoundEffectAtkDef2(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Nop4(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop5(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop6(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop7(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop8(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop9(BattleAnimSystem *); +static void BattleAnimScriptCmd_Nop10(BattleAnimSystem *); +static void BattleAnimScriptCmd_StopSoundEffect(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfBattlerSide(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfWeather(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfContest(BattleAnimSystem *system); +static void BattleAnimScriptCmd_JumpIfFriendlyFire(BattleAnimSystem *system); +static void BattleAnimScriptCmd_PlayPokemonCry(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForPokemonCries(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CallFunc(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CreateEmitter(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CreateEmitterEx(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CreateEmitterForMove(BattleAnimSystem *system); +static void BattleAnimScriptCmd_CreateEmitterForFriendlyFire(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForAllEmitters(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadParticleSystem(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadDebugParticleSystem(BattleAnimSystem *system); +static void BattleAnimScriptCmd_UnloadParticleSystem(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetExtraParams(BattleAnimSystem *system); +static void BattleAnimScriptCmd_Nop11(BattleAnimSystem *); +static void BattleAnimScriptCmd_InitSpriteManager(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadCharResObj(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadPlttRes(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadCellResObj(BattleAnimSystem *system); +static void BattleAnimScriptCmd_LoadAnimResObj(BattleAnimSystem *system); +static void BattleAnimScriptCmd_AddSpriteWithFunc(BattleAnimSystem *system); +static void BattleAnimScriptCmd_AddSprite(BattleAnimSystem *system); +static void BattleAnimScriptCmd_FreeSpriteManager(BattleAnimSystem *system); +static void BattleAnimScriptCmd_SetPokemonSpriteVisible(BattleAnimSystem *system); +static void BattleAnimScriptCmd_StartPokemonSpriteDrawTask(BattleAnimSystem *system); +static void BattleAnimScriptCmd_StopPokemonSpriteDrawTask(BattleAnimSystem *system); +static void BattleAnimScriptCmd_WaitForLRX(BattleAnimSystem *system); +static int BattleAnimSystem_GetBattlerWithRole(BattleAnimSystem *system, int role); +static BOOL BattleBgSwitch_ShouldBeReversed(BattleBgSwitch *bgSwitch, BattleAnimSystem *system, int var); +static void BattleBgSwitch_SetBg(BattleBgSwitch *bgSwitch, BattleAnimSystem *system, enum BgLayer bgLayer, int bgID); +static BOOL BattleBgSwitch_IsFlagSet(int flags, int flag); +static void BattleBgSwitch_ApplyFlags(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_Blend(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_Fade(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_FlagsOnly(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgRestore_Blend(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgRestore_Fade(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgRestore_FlagsOnly(SysTask *task, BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimNone(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimMoveStart(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimStop(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimCancel(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimStartWave(BattleBgSwitch *bgSwitch); +static BOOL BattleBgSwitch_AnimRegisterWave(BattleBgSwitch *bgSwitch); static inline void BattleAnimScript_Next(BattleAnimSystem *system); static inline void BattleAnimScript_JumpTo(BattleAnimSystem *system, u32 *dst); static inline void BattleAnimScript_JumpBy(BattleAnimSystem *system, u32 offset); -static inline int BattleAnimScript_ReadWord(u32 *param0); +static inline int BattleAnimScript_ReadWord(u32 *scriptPtr); -static const s16 Unk_ov12_02238660[] = { - 0x20, - 0x1C, - 0x18, - 0x14, - 0x10, - 0xC, - 0x8, - 0x4, - 0x4, - 0x8, - 0xC, - 0x10, - 0x14, - 0x18, - 0x1C, - 0x20 +static const s16 sBgWaveScrollSpeeds[] = { + 32, + 28, + 24, + 20, + 16, + 12, + 8, + 4, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32 }; static void BattleAnimScript_WaitForDelay(BattleAnimSystem *system) @@ -426,14 +426,14 @@ BOOL BattleAnimSystem_StartMove(BattleAnimSystem *system, MoveAnimation *moveAni system->loopStack[i].maxIterations = 0; } - system->context->unk_00 = moveAnim->command; + system->context->command = moveAnim->command; system->context->unk_01 = moveAnim->unk_01; system->context->move = moveAnim->move; system->context->damage = moveAnim->damage; system->context->power = moveAnim->power; system->context->friendship = moveAnim->friendship; system->context->fieldConditions = moveAnim->fieldConditions; - system->context->unk_10 = moveAnim->effectChance; + system->context->effectChance = moveAnim->effectChance; system->context->terrain = moveAnim->terrain; system->context->attacker = moveAnim->attacker; system->context->defender = moveAnim->defender; @@ -884,8 +884,8 @@ int BattleAnimSystem_GetMoveInfo(BattleAnimSystem *system, enum BattleAnimMoveIn return system->context->friendship; case BATTLE_ANIM_MOVE_INFO_FIELD_CONDITIONS: return system->context->fieldConditions; - case 4: - return system->context->unk_10; + case BATTLE_ANIM_MOVE_INFO_EFFECT_CHANCE: + return system->context->effectChance; case BATTLE_ANIM_MOVE_INFO_TERRAIN: return system->context->terrain; default: @@ -893,7 +893,7 @@ int BattleAnimSystem_GetMoveInfo(BattleAnimSystem *system, enum BattleAnimMoveIn } } -void ov12_02220590(BattleAnimSystem *system, BattlerSpriteContext *battlerSpriteCtx, int param2) +void BattlerSpriteContext_InitFromSystem(BattleAnimSystem *system, BattlerSpriteContext *battlerSpriteCtx, int animParticipantMode) { for (int battler = BATTLER_PLAYER_1; battler < MAX_BATTLERS; battler++) { battlerSpriteCtx->pokemonSpriteData[battler] = system->context->pokemonSpriteData[battler]; @@ -906,7 +906,7 @@ void ov12_02220590(BattleAnimSystem *system, BattlerSpriteContext *battlerSprite battlerSpriteCtx->types[battler] = system->context->battlerTypes[battler]; } - switch (param2) { + switch (animParticipantMode) { case 0: battlerSpriteCtx->targetBattler = system->context->attacker; battlerSpriteCtx->sourceBattler = system->context->defender; @@ -929,37 +929,37 @@ void ov12_02220590(BattleAnimSystem *system, BattlerSpriteContext *battlerSprite } } -static void BattleAnimScriptCmd_068(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_StartBattlerSlideIn(BattleAnimSystem *system) { - int v0; + int animParticipantMode; BattlerSpriteContext battlerSpriteCtx; - param0->scriptPtr += 1; - v0 = (u32)BattleAnimScript_ReadWord(param0->scriptPtr); - param0->scriptPtr += 1; + BattleAnimScript_Next(system); + animParticipantMode = (u32)BattleAnimScript_ReadWord(system->scriptPtr); + BattleAnimScript_Next(system); - ov12_02220590(param0, &battlerSpriteCtx, v0); + BattlerSpriteContext_InitFromSystem(system, &battlerSpriteCtx, animParticipantMode); - if (v0 == 2) { - ov12_02238390(&battlerSpriteCtx, param0->heapID); - } else if (v0 == 3) { - ov12_022380CC(&battlerSpriteCtx, param0->heapID); + if (animParticipantMode == 2) { + ov12_02238390(&battlerSpriteCtx, system->heapID); + } else if (animParticipantMode == 3) { + ov12_022380CC(&battlerSpriteCtx, system->heapID); } else { - ov12_022380BC(&battlerSpriteCtx, param0->heapID); + ov12_022380BC(&battlerSpriteCtx, system->heapID); } } -static void BattleAnimScriptCmd_069(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_StartBattlerSlideOut(BattleAnimSystem *system) { - int v0; + int animParticipantMode; BattlerSpriteContext battlerSpriteCtx; - param0->scriptPtr += 1; - v0 = (u32)BattleAnimScript_ReadWord(param0->scriptPtr); - param0->scriptPtr += 1; + BattleAnimScript_Next(system); + animParticipantMode = (u32)BattleAnimScript_ReadWord(system->scriptPtr); + BattleAnimScript_Next(system); - ov12_02220590(param0, &battlerSpriteCtx, v0); - ov12_022382BC(&battlerSpriteCtx, param0->heapID); + BattlerSpriteContext_InitFromSystem(system, &battlerSpriteCtx, animParticipantMode); + ov12_022382BC(&battlerSpriteCtx, system->heapID); } static void BattleAnimScriptCmd_BeginLoop(BattleAnimSystem *system) @@ -1007,9 +1007,9 @@ static void BattleAnimScriptCmd_End(BattleAnimSystem *system) int i; int totalEmitters = 0; - if (system->unk_17A < 1) { + if (system->endDelayFrames < 1) { system->scriptDelay = 1; - system->unk_17A++; + system->endDelayFrames++; return; } @@ -1039,7 +1039,7 @@ static void BattleAnimScriptCmd_End(BattleAnimSystem *system) } system->soundEffectWaitTimer = 0; - system->unk_17A = 0; + system->endDelayFrames = 0; for (i = 0; i < BATTLE_ANIM_SCRIPT_MAX_CALL_STACK_DEPTH; i++) { system->callStack[i] = NULL; @@ -1390,14 +1390,14 @@ static void BattleAnimScriptCmd_JumpIfEqual(BattleAnimSystem *system) } } -static void BattleAnimScriptCmd_033(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_JumpIfUnk_01(BattleAnimSystem *system) { - param0->scriptPtr += 1; + BattleAnimScript_Next(system); - if (ov12_02223178(param0->context)) { - param0->scriptPtr = (u32 *)BattleAnimScript_ReadWord(param0->scriptPtr); + if (BattleAnimContext_GetUnk_01(system->context)) { + BattleAnimScript_JumpTo(system, (u32 *)BattleAnimScript_ReadWord(system->scriptPtr)); } else { - param0->scriptPtr += 1; + BattleAnimScript_Next(system); } } @@ -1427,17 +1427,15 @@ static void BattleAnimScriptCmd_CallFunc(BattleAnimSystem *system) func(system); } -static void BattleAnimScriptCmd_013(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_JumpIfEffectChanceOdd(BattleAnimSystem *system) { - int v0; + BattleAnimScript_Next(system); - param0->scriptPtr += 1; - - if (param0->context->unk_10 & 1) { - param0->scriptPtr += 1; + if (system->context->effectChance & 1) { + BattleAnimScript_Next(system); } - param0->scriptPtr += (u32)BattleAnimScript_ReadWord(param0->scriptPtr); + BattleAnimScript_JumpBy(system, (u32)BattleAnimScript_ReadWord(system->scriptPtr)); } static void BattleAnimScriptCmd_JumpIfBattlerSide(BattleAnimSystem *system) @@ -1515,19 +1513,16 @@ static void BattleAnimScriptCmd_JumpIfFriendlyFire(BattleAnimSystem *system) } } -static void BattleAnimScriptCmd_014(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_JumpIfEffectChance(BattleAnimSystem *system) { - int v0; + BattleAnimScript_Next(system); + int effectChance = BattleAnimScript_ReadWord(system->scriptPtr); + BattleAnimScript_Next(system); - param0->scriptPtr += 1; - - v0 = BattleAnimScript_ReadWord(param0->scriptPtr); - param0->scriptPtr += 1; - - if (v0 == param0->context->unk_10) { - param0->scriptPtr += (u32)BattleAnimScript_ReadWord(param0->scriptPtr); + if (effectChance == system->context->effectChance) { + system->scriptPtr += (u32)BattleAnimScript_ReadWord(system->scriptPtr); } else { - param0->scriptPtr += 1; + BattleAnimScript_Next(system); } } @@ -1680,12 +1675,12 @@ void BattleAnimSystem_CancelTrackingTask(BattleAnimSystem *system, enum BattleAn } } -static void BattleAnimScriptCmd_Nop0(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_Nop0(BattleAnimSystem *) { return; } -static void BattleAnimScriptCmd_Nop1(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_Nop1(BattleAnimSystem *) { return; } @@ -1983,43 +1978,39 @@ static void BattleAnimScriptCmd_RemovePokemonSprite(BattleAnimSystem *system) system->pokemonSprites[spriteID] = NULL; } -static void ov12_02221810(SysTask *param0, void *param1) +static void BattleAnimPokemonSprite_DrawTask(SysTask *task, void *param) { - UnkStruct_ov12_02221810 *v0 = param1; + PokemonSpriteDrawContext *ctx = param; - if (v0->active == FALSE) { - SysTask_Done(param0); + if (ctx->active == FALSE) { + SysTask_Done(task); return; } - if (v0->battleAnimSys->pokemonSpriteManager != NULL) { - SpriteSystem_DrawSprites(v0->spriteManager); + if (ctx->battleAnimSys->pokemonSpriteManager != NULL) { + SpriteSystem_DrawSprites(ctx->spriteManager); } } -static void BattleAnimScriptCmd_082(BattleAnimSystem *system) +static void BattleAnimScriptCmd_StartPokemonSpriteDrawTask(BattleAnimSystem *system) { - int role; - int v1; - int spriteID; - BattleAnimScript_Next(system); - role = BattleAnimScript_ReadWord(system->scriptPtr); + int role = BattleAnimScript_ReadWord(system->scriptPtr); BattleAnimScript_Next(system); - v1 = BattleAnimScript_ReadWord(system->scriptPtr); + int slotIdx = BattleAnimScript_ReadWord(system->scriptPtr); BattleAnimScript_Next(system); - spriteID = BattleAnimScript_ReadWord(system->scriptPtr); + int spriteID = BattleAnimScript_ReadWord(system->scriptPtr); BattleAnimScript_Next(system); - system->unk_48[v1].battleAnimSys = system; - system->unk_48[v1].spriteManager = system->pokemonSpriteManager; - system->unk_48[v1].sprite = system->pokemonSprites[spriteID]; - system->unk_48[v1].active = TRUE; + system->pokemonSpriteDrawContexts[slotIdx].battleAnimSys = system; + system->pokemonSpriteDrawContexts[slotIdx].spriteManager = system->pokemonSpriteManager; + system->pokemonSpriteDrawContexts[slotIdx].sprite = system->pokemonSprites[spriteID]; + system->pokemonSpriteDrawContexts[slotIdx].active = TRUE; - ManagedSprite_SetDrawFlag(system->unk_48[v1].sprite, FALSE); + ManagedSprite_SetDrawFlag(system->pokemonSpriteDrawContexts[slotIdx].sprite, FALSE); if (BattleAnimSystem_IsDoubleBattle(system) == TRUE) { int attackerType, defenderType; @@ -2028,90 +2019,86 @@ static void BattleAnimScriptCmd_082(BattleAnimSystem *system) defenderType = BattleAnimUtil_GetBattlerType(system, BattleAnimSystem_GetDefender(system)); { - int v5; - int v6; - PokemonSprite *v7; + BOOL isHidden; - v6 = BattleAnimSystem_GetBattlerWithRole(system, role); - v7 = BattleAnimSystem_GetBattlerSprite(system, v6); + int battler = BattleAnimSystem_GetBattlerWithRole(system, role); + PokemonSprite *battlerSprite = BattleAnimSystem_GetBattlerSprite(system, battler); - if (v7 != NULL) { - v5 = PokemonSprite_GetAttribute(v7, MON_SPRITE_HIDE); + if (battlerSprite != NULL) { + isHidden = PokemonSprite_GetAttribute(battlerSprite, MON_SPRITE_HIDE); } else { - v5 = 0; + isHidden = FALSE; } - if (v5 == 1) { - ManagedSprite_SetDrawFlag(system->unk_48[v1].sprite, 0); + if (isHidden == TRUE) { + ManagedSprite_SetDrawFlag(system->pokemonSpriteDrawContexts[slotIdx].sprite, FALSE); } else { - ManagedSprite_SetDrawFlag(system->unk_48[v1].sprite, 1); + ManagedSprite_SetDrawFlag(system->pokemonSpriteDrawContexts[slotIdx].sprite, TRUE); } } switch (role) { case BATTLER_ROLE_ATTACKER: if ((attackerType == 3) || (attackerType == 4)) { - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); } else { - ManagedSprite_SetDrawFlag(system->unk_48[v1].sprite, 0); - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetDrawFlag(system->pokemonSpriteDrawContexts[slotIdx].sprite, FALSE); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); } break; case BATTLER_ROLE_ATTACKER_PARTNER: if ((attackerType == 5) || (attackerType == 2)) { - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); } else { - ManagedSprite_SetDrawFlag(system->unk_48[v1].sprite, 0); - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetDrawFlag(system->pokemonSpriteDrawContexts[slotIdx].sprite, FALSE); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); } break; case BATTLER_ROLE_DEFENDER: switch (defenderType) { case 2: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); break; case 3: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); break; case 4: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); break; case 5: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); break; } break; case BATTLER_ROLE_DEFENDER_PARTNER: switch (defenderType) { case 2: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); break; case 3: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); break; case 4: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 255); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 255); break; case 5: - ManagedSprite_SetPriority(system->unk_48[v1].sprite, 1); + ManagedSprite_SetPriority(system->pokemonSpriteDrawContexts[slotIdx].sprite, 1); break; } break; } - SysTask_Start(ov12_02221810, &system->unk_48[v1], 0x1000); + SysTask_Start(BattleAnimPokemonSprite_DrawTask, &system->pokemonSpriteDrawContexts[slotIdx], 0x1000); } } -static void BattleAnimScriptCmd_083(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_StopPokemonSpriteDrawTask(BattleAnimSystem *system) { - int v0; + BattleAnimScript_Next(system); - param0->scriptPtr += 1; - - v0 = BattleAnimScript_ReadWord(param0->scriptPtr); - param0->scriptPtr += 1; - param0->unk_48[v0].active = 0; + int slotIdx = BattleAnimScript_ReadWord(system->scriptPtr); + BattleAnimScript_Next(system); + system->pokemonSpriteDrawContexts[slotIdx].active = 0; } static void BattleAnimScriptCmd_CancelTrackingTask(BattleAnimSystem *system) @@ -2173,8 +2160,8 @@ static BOOL (*const sBattleBgAnimFuncs[])(BattleBgSwitch *) = { BattleBgSwitch_AnimStop, BattleBgSwitch_AnimCancel, BattleBgSwitch_AnimNone, - ov12_0222240C, - ov12_022224E4 + BattleBgSwitch_AnimStartWave, + BattleBgSwitch_AnimRegisterWave }; static BOOL BattleBgSwitch_ShouldBeReversed(BattleBgSwitch *bgSwitch, BattleAnimSystem *system, int var) @@ -2283,7 +2270,7 @@ static BattleBgSwitch *BattleAnimSystem_CreateBgSwitch(BattleAnimSystem *system) memset(bgSwitch, 0, sizeof(BattleBgSwitch)); - bgSwitch->unk_00 = 0; + bgSwitch->unread_00 = 0; bgSwitch->state = 0; bgSwitch->battleAnimSystem = system; @@ -2448,7 +2435,7 @@ static BOOL BattleBgRestore_Blend(SysTask *task, BattleBgSwitch *bgSwitch) BattleAnimSystem_CancelBgAnim(bgSwitch->battleAnimSystem); } - if (bgSwitch->unk_44_1 == 1) { + if (bgSwitch->bgWaveAnimActive == TRUE) { BattleAnimSystem_CancelBgAnim(bgSwitch->battleAnimSystem); } @@ -2573,7 +2560,7 @@ static BOOL BattleBgRestore_Fade(SysTask *task, BattleBgSwitch *bgSwitch) BattleAnimSystem_CancelBgAnim(bgSwitch->battleAnimSystem); } - if (bgSwitch->unk_44_1 == 1) { + if (bgSwitch->bgWaveAnimActive == TRUE) { BattleAnimSystem_CancelBgAnim(bgSwitch->battleAnimSystem); } @@ -2642,7 +2629,7 @@ static BOOL BattleBgRestore_FlagsOnly(SysTask *task, BattleBgSwitch *bgSwitch) static void BattleBgAnimTask_Move(SysTask *task, void *param) { - BattleBgAnim *bgAnim = (BattleBgAnim *)param; + BattleBgAnim *bgAnim = param; if (bgAnim->cancel == TRUE) { Heap_Free(bgAnim); @@ -2713,81 +2700,70 @@ static BOOL BattleBgSwitch_AnimMoveStart(BattleBgSwitch *bgSwitch) return FALSE; } -static BOOL ov12_0222240C(BattleBgSwitch *param0) +static BOOL BattleBgSwitch_AnimStartWave(BattleBgSwitch *bgSwitch) { - int v0, v1; - BattleAnimSystem *system; - BattleBgAnim *v3; + BattleAnimSystem *system = bgSwitch->battleAnimSystem; + BattleBgAnim *battleBgAnim = Heap_Alloc(bgSwitch->battleAnimSystem->heapID, sizeof(BattleBgAnim)); - system = param0->battleAnimSystem; - v3 = Heap_Alloc(param0->battleAnimSystem->heapID, sizeof(BattleBgAnim)); + battleBgAnim->waveAnimCtx = Heap_Alloc(system->heapID, sizeof(WaveAnimContext)); + system->bgAnim = battleBgAnim; - v3->unk_1C = Heap_Alloc(system->heapID, sizeof(UnkStruct_ov12_022224F8)); - system->bgAnim = v3; + bgSwitch->bgWaveAnimActive = TRUE; - param0->unk_44_1 = 1; - - v3->cancel = 0; - v3->unk_1C->unk_C0 = CustomBgScrollContext_New( + battleBgAnim->cancel = FALSE; + battleBgAnim->waveAnimCtx->bgScrollCtx = CustomBgScrollContext_New( BattleAnimUtil_GetHOffsetRegisterForBg(BattleAnimSystem_GetBgID(system, BATTLE_ANIM_BG_EFFECT)), BattleAnimUtil_MakeBgOffsetValue(0, 0), system->heapID); - for (v0 = 0; v0 < ((192 - 64) / 8); v0++) { - v3->unk_1C->unk_00[v0].unk_00 = (v0 * 8); - v3->unk_1C->unk_00[v0].unk_02 = (v3->unk_1C->unk_00[v0].unk_00 + 8); - v3->unk_1C->unk_00[v0].unk_04 = Unk_ov12_02238660[v0]; - v3->unk_1C->unk_00[v0].unk_06 = 0; - v3->unk_1C->unk_00[v0].unk_08 = BattleAnimUtil_MakeBgOffsetValue(0, 0); + for (int i = 0; i < ((192 - 64) / 8); i++) { + battleBgAnim->waveAnimCtx->strips[i].startScanline = (i * 8); + battleBgAnim->waveAnimCtx->strips[i].endScanline = (battleBgAnim->waveAnimCtx->strips[i].startScanline + 8); + battleBgAnim->waveAnimCtx->strips[i].scrollSpeed = sBgWaveScrollSpeeds[i]; + battleBgAnim->waveAnimCtx->strips[i].scrollAccum = 0; + battleBgAnim->waveAnimCtx->strips[i].baseOffset = BattleAnimUtil_MakeBgOffsetValue(0, 0); - if (BattleBgSwitch_ShouldBeReversed(param0, param0->battleAnimSystem, 6) == 1) { - v3->unk_1C->unk_00[v0].unk_04 *= -1; + if (BattleBgSwitch_ShouldBeReversed(bgSwitch, bgSwitch->battleAnimSystem, BATTLE_ANIM_VAR_BG_ANIM_MODE) == TRUE) { + battleBgAnim->waveAnimCtx->strips[i].scrollSpeed *= -1; } } - SysTask_Start(ov12_022224F8, v3, 0x1000); + SysTask_Start(BattleBgAnim_WaveTask, battleBgAnim, 0x1000); return 0; } -static BOOL ov12_022224E4(BattleBgSwitch *param0) +static BOOL BattleBgSwitch_AnimRegisterWave(BattleBgSwitch *bgSwitch) { - BattleAnimSystem *v0; - BattleBgAnim *v1; - - v0 = param0->battleAnimSystem; - v1 = param0->battleAnimSystem->bgAnim; - - param0->unk_44_1 = 1; - return 0; + bgSwitch->bgWaveAnimActive = TRUE; + return FALSE; } -static void ov12_022224F8(SysTask *param0, void *param1) +static void BattleBgAnim_WaveTask(SysTask *task, void *param) { - int v0, v1; - u32 *v2; - UnkStruct_ov12_022224F8 *v3 = (UnkStruct_ov12_022224F8 *)(((BattleBgAnim *)param1)->unk_1C); - BattleBgAnim *v4 = (BattleBgAnim *)param1; + int stripIdx, scanline; + WaveAnimContext *waveCtx = ((BattleBgAnim *)param)->waveAnimCtx; + BattleBgAnim *bgAnim = param; - if (v4->cancel == 1) { - CustomBgScrollContext_Free(v4->unk_1C->unk_C0); - Heap_Free(v4->unk_1C); - Heap_Free(v4); - SysTask_Done(param0); + if (bgAnim->cancel == 1) { + CustomBgScrollContext_Free(bgAnim->waveAnimCtx->bgScrollCtx); + Heap_Free(bgAnim->waveAnimCtx); + Heap_Free(bgAnim); + SysTask_Done(task); return; } - v2 = CustomBgScrollContext_GetWriteBuffer(v3->unk_C0); + u32 *buffer = CustomBgScrollContext_GetWriteBuffer(waveCtx->bgScrollCtx); - for (v0 = 0; v0 < ((192 - 64) / 8); v0++) { - v3->unk_00[v0].unk_06 += v3->unk_00[v0].unk_04; + for (stripIdx = 0; stripIdx < ((192 - 64) / 8); stripIdx++) { + waveCtx->strips[stripIdx].scrollAccum += waveCtx->strips[stripIdx].scrollSpeed; - for (v1 = v3->unk_00[v0].unk_00; v1 < v3->unk_00[v0].unk_02; v1++) { - s16 v5, v6; + for (scanline = waveCtx->strips[stripIdx].startScanline; scanline < waveCtx->strips[stripIdx].endScanline; scanline++) { + s16 baseX, baseY; - v5 = v3->unk_00[v0].unk_08 & 0xffff; - v6 = v3->unk_00[v0].unk_08 >> 16; + baseX = waveCtx->strips[stripIdx].baseOffset & 0xffff; + baseY = waveCtx->strips[stripIdx].baseOffset >> 16; - v2[v1] = BattleAnimUtil_MakeBgOffsetValue(v5 + v3->unk_00[v0].unk_06, v6); + buffer[scanline] = BattleAnimUtil_MakeBgOffsetValue(baseX + waveCtx->strips[stripIdx].scrollAccum, baseY); } } } @@ -3222,7 +3198,7 @@ static void BattleAnimScriptCmd_PlayDelayedSoundEffect(BattleAnimSystem *system) BattleAnimSystem_StartSoundTaskInternal(system, ctx); } -static void BattleAnimScriptCmd_Nop3(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_Nop3(BattleAnimSystem *) { (void)0; } @@ -3269,7 +3245,7 @@ static void BattleAnimScriptCmd_SetDefaultAlphaBlending(BattleAnimSystem *system BattleAnimSystem_SetDefaultAlphaBlending(); } -static void BattleAnimScriptCmd_Nop2(BattleAnimSystem *param0) +static void BattleAnimScriptCmd_Nop2(BattleAnimSystem *) { return; } @@ -3558,9 +3534,9 @@ BattleAnimScriptCmd BattleAnimSystem_GetScriptCmd(u32 id) return sBattleAnimScriptCmdTable[id]; } -int ov12_02223178(BattleAnimContext *param0) +int BattleAnimContext_GetUnk_01(BattleAnimContext *ctx) { - return param0->unk_01; + return ctx->unk_01; } s8 BattleAnimSound_CorrectPanDirection(BattleAnimSystem *system, s8 pan) @@ -3842,22 +3818,22 @@ int BattleAnimSystem_GetBgNarcMemberIndex(int bgID, enum BgNarcMemberType type) return sBgNarcIndices[bgID][type]; } -BattleMonOBJData *ov12_022234F8(BattleSystem *battleSys, enum HeapID heapID, int param2) +BattleMonOBJData *BattleMonOBJData_New(BattleSystem *battleSys, enum HeapID heapID, int battlerIdx) { - int v0; - int v1[] = { 0, 0, 20, 10, 10, 20 }; + int i; + int sPriorityByBattlerType[] = { 0, 0, 20, 10, 10, 20 }; BattleMonOBJData *btlMonObjData = Heap_Alloc(heapID, sizeof(BattleMonOBJData)); btlMonObjData->heapID = heapID; - btlMonObjData->battlerIdx = param2; + btlMonObjData->battlerIdx = battlerIdx; btlMonObjData->spriteContext.spriteSys = BattleSystem_GetSpriteSystem(battleSys); btlMonObjData->spriteContext.spriteMan = BattleSystem_GetSpriteManager(battleSys); btlMonObjData->spriteContext.plttData = BattleSystem_GetPaletteData(battleSys); { - for (v0 = 0; v0 < 4; v0++) { - btlMonObjData->managedSprites[v0] = NULL; - btlMonObjData->pokemonSpriteDataArray[v0] = BattleSystem_GetPokemonSpriteDataByIndex(battleSys, v0); + for (i = 0; i < 4; i++) { + btlMonObjData->managedSprites[i] = NULL; + btlMonObjData->pokemonSpriteDataArray[i] = BattleSystem_GetPokemonSpriteDataByIndex(battleSys, i); } BattleSystem_SetBattlerTypes(battleSys, &(btlMonObjData->battlerTypes[0])); @@ -3865,123 +3841,123 @@ BattleMonOBJData *ov12_022234F8(BattleSystem *battleSys, enum HeapID heapID, int } { - int v3[6]; - NARC *v4; + int spriteResIDs[6]; + NARC *spriteNarc; - v4 = NARC_ctor(NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, heapID); + spriteNarc = NARC_ctor(NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, heapID); - for (v0 = 0; v0 < 4; v0++) { - if ((v0 != btlMonObjData->battlerIdx) && (btlMonObjData->battlerIdx != 0xFF)) { + for (i = 0; i < 4; i++) { + if ((i != btlMonObjData->battlerIdx) && (btlMonObjData->battlerIdx != 0xFF)) { continue; } - if (btlMonObjData->pokemonSprites[v0] == NULL) { + if (btlMonObjData->pokemonSprites[i] == NULL) { continue; } - v3[0] = 55555 + v0 + ((btlMonObjData->battlerIdx) * 5000); - v3[1] = 55555 + v0 + ((btlMonObjData->battlerIdx) * 5000); - v3[2] = 55555 + v0 + ((btlMonObjData->battlerIdx) * 5000); - v3[3] = 55555 + v0 + ((btlMonObjData->battlerIdx) * 5000); - v3[4] = 0; - v3[5] = 0; + spriteResIDs[0] = 55555 + i + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[1] = 55555 + i + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[2] = 55555 + i + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[3] = 55555 + i + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[4] = 0; + spriteResIDs[5] = 0; - SpriteSystem_LoadCharResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, v4, 76, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, v3[SPRITE_RESOURCE_CHAR]); - SpriteSystem_LoadPaletteBufferFromOpenNarc(btlMonObjData->spriteContext.plttData, 2, btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, v4, 75, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 1, v3[SPRITE_RESOURCE_PLTT]); - SpriteSystem_LoadCellResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, v4, 77, FALSE, v3[SPRITE_RESOURCE_CELL]); - SpriteSystem_LoadAnimResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, v4, 78, FALSE, v3[SPRITE_RESOURCE_ANIM]); + SpriteSystem_LoadCharResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, spriteNarc, 76, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, spriteResIDs[SPRITE_RESOURCE_CHAR]); + SpriteSystem_LoadPaletteBufferFromOpenNarc(btlMonObjData->spriteContext.plttData, 2, btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, spriteNarc, 75, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 1, spriteResIDs[SPRITE_RESOURCE_PLTT]); + SpriteSystem_LoadCellResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, spriteNarc, 77, FALSE, spriteResIDs[SPRITE_RESOURCE_CELL]); + SpriteSystem_LoadAnimResObjFromOpenNarc(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, spriteNarc, 78, FALSE, spriteResIDs[SPRITE_RESOURCE_ANIM]); } - NARC_dtor(v4); + NARC_dtor(spriteNarc); } { - int v5; - int v6; - int v7; - void *v8; - int v9[6]; - ManagedSprite *v10; + int battler; + int narcID; + int paletteIdx; + void *tiles; + int spriteResIDs[6]; + ManagedSprite *managedSprite; - for (v5 = 0; v5 < 4; v5++) { - if ((v5 != btlMonObjData->battlerIdx) && (btlMonObjData->battlerIdx != 0xFF)) { + for (battler = 0; battler < 4; battler++) { + if ((battler != btlMonObjData->battlerIdx) && (btlMonObjData->battlerIdx != 0xFF)) { continue; } - btlMonObjData->resourceIDs[v5] = 55555 + v5 + ((btlMonObjData->battlerIdx) * 5000); + btlMonObjData->resourceIDs[battler] = 55555 + battler + ((btlMonObjData->battlerIdx) * 5000); - v9[0] = 55555 + v5 + ((btlMonObjData->battlerIdx) * 5000); - v9[1] = 55555 + v5 + ((btlMonObjData->battlerIdx) * 5000); - v9[2] = 55555 + v5 + ((btlMonObjData->battlerIdx) * 5000); - v9[3] = 55555 + v5 + ((btlMonObjData->battlerIdx) * 5000); - v9[4] = 0; - v9[5] = 0; + spriteResIDs[0] = 55555 + battler + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[1] = 55555 + battler + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[2] = 55555 + battler + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[3] = 55555 + battler + ((btlMonObjData->battlerIdx) * 5000); + spriteResIDs[4] = 0; + spriteResIDs[5] = 0; - v6 = btlMonObjData->pokemonSpriteDataArray[v5]->narcID; - v7 = btlMonObjData->pokemonSpriteDataArray[v5]->palette; - v8 = btlMonObjData->pokemonSpriteDataArray[v5]->tiles; + narcID = btlMonObjData->pokemonSpriteDataArray[battler]->narcID; + paletteIdx = btlMonObjData->pokemonSpriteDataArray[battler]->palette; + tiles = btlMonObjData->pokemonSpriteDataArray[battler]->tiles; { - int v11; - SpriteTemplate v12; - PokemonSprite *v13; - s16 v14, v15; + int resourceIdx; + SpriteTemplate spriteTemplate; + PokemonSprite *pokemonSprite; + s16 centerX, centerY; - v13 = btlMonObjData->pokemonSprites[v5]; + pokemonSprite = btlMonObjData->pokemonSprites[battler]; - if (v13 != NULL) { - v14 = PokemonSprite_GetAttribute(v13, MON_SPRITE_X_CENTER); - v15 = PokemonSprite_GetAttribute(v13, MON_SPRITE_Y_CENTER); - v15 -= PokemonSprite_GetAttribute(v13, MON_SPRITE_SHADOW_HEIGHT); + if (pokemonSprite != NULL) { + centerX = PokemonSprite_GetAttribute(pokemonSprite, MON_SPRITE_X_CENTER); + centerY = PokemonSprite_GetAttribute(pokemonSprite, MON_SPRITE_Y_CENTER); + centerY -= PokemonSprite_GetAttribute(pokemonSprite, MON_SPRITE_SHADOW_HEIGHT); } else { continue; } - v12.x = v14; - v12.y = v15; - v12.z = 0; - v12.animIdx = 0; - v12.priority = v1[btlMonObjData->battlerTypes[v5]]; - v12.plttIdx = 0; - v12.vramType = NNS_G2D_VRAM_TYPE_2DMAIN; - v12.bgPriority = 1; - v12.vramTransfer = FALSE; + spriteTemplate.x = centerX; + spriteTemplate.y = centerY; + spriteTemplate.z = 0; + spriteTemplate.animIdx = 0; + spriteTemplate.priority = sPriorityByBattlerType[btlMonObjData->battlerTypes[battler]]; + spriteTemplate.plttIdx = 0; + spriteTemplate.vramType = NNS_G2D_VRAM_TYPE_2DMAIN; + spriteTemplate.bgPriority = 1; + spriteTemplate.vramTransfer = FALSE; - for (v11 = 0; v11 < 6; v11++) { - v12.resources[v11] = v9[v11]; + for (resourceIdx = 0; resourceIdx < 6; resourceIdx++) { + spriteTemplate.resources[resourceIdx] = spriteResIDs[resourceIdx]; } - v10 = SpriteSystem_NewSprite(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, &v12); - ManagedSprite_TickFrame(v10); - btlMonObjData->managedSprites[v5] = v10; + managedSprite = SpriteSystem_NewSprite(btlMonObjData->spriteContext.spriteSys, btlMonObjData->spriteContext.spriteMan, &spriteTemplate); + ManagedSprite_TickFrame(managedSprite); + btlMonObjData->managedSprites[battler] = managedSprite; - if (v13 == NULL) { - ManagedSprite_SetDrawFlag(v10, 0); - } else if (PokemonSprite_IsActive(v13) == 0) { - ManagedSprite_SetDrawFlag(v10, 0); + if (pokemonSprite == NULL) { + ManagedSprite_SetDrawFlag(managedSprite, 0); + } else if (PokemonSprite_IsActive(pokemonSprite) == 0) { + ManagedSprite_SetDrawFlag(managedSprite, 0); } else { - int v16 = PokemonSprite_GetAttribute(v13, MON_SPRITE_HIDE); + int isHidden = PokemonSprite_GetAttribute(pokemonSprite, MON_SPRITE_HIDE); - if (v16 == 1) { - ManagedSprite_SetDrawFlag(v10, 0); + if (isHidden == 1) { + ManagedSprite_SetDrawFlag(managedSprite, 0); } } - if (v13 != NULL) { - NNSG2dImageProxy *v17; + if (pokemonSprite != NULL) { + NNSG2dImageProxy *imageProxy; - v17 = Sprite_GetImageProxy(v10->sprite); - VramTransfer_Request(NNS_GFD_DST_2D_OBJ_CHAR_MAIN, v17->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN], v8, 10 * 10 * ((8 / 2) * 8)); + imageProxy = Sprite_GetImageProxy(managedSprite->sprite); + VramTransfer_Request(NNS_GFD_DST_2D_OBJ_CHAR_MAIN, imageProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN], tiles, 10 * 10 * ((8 / 2) * 8)); } - if (v13 != NULL) { - NNSG2dImagePaletteProxy *v18; - int v19; + if (pokemonSprite != NULL) { + NNSG2dImagePaletteProxy *paletteProxy; + int paletteOffset; - v18 = Sprite_GetPaletteProxy(v10->sprite); - v19 = PlttTransfer_GetPlttOffset(v18, NNS_G2D_VRAM_TYPE_2DMAIN); + paletteProxy = Sprite_GetPaletteProxy(managedSprite->sprite); + paletteOffset = PlttTransfer_GetPlttOffset(paletteProxy, NNS_G2D_VRAM_TYPE_2DMAIN); - PaletteData_LoadBufferFromFileStart(btlMonObjData->spriteContext.plttData, v6, v7, btlMonObjData->heapID, 2, 0x20, v19 * 16); + PaletteData_LoadBufferFromFileStart(btlMonObjData->spriteContext.plttData, narcID, paletteIdx, btlMonObjData->heapID, 2, 0x20, paletteOffset * 16); } } } @@ -3990,46 +3966,42 @@ BattleMonOBJData *ov12_022234F8(BattleSystem *battleSys, enum HeapID heapID, int return btlMonObjData; } -BattleMonOBJData *ov12_02223764(BattleSystem *battleSys, enum HeapID heapID) +BattleMonOBJData *BattleMonOBJData_NewAll(BattleSystem *battleSys, enum HeapID heapID) { - return ov12_022234F8(battleSys, heapID, 0xFF); + return BattleMonOBJData_New(battleSys, heapID, 0xFF); } -void ov12_02223770(BattleMonOBJData *btlMonObjData) +void BattleMonOBJData_Free(BattleMonOBJData *btlMonObjData) { - int v0; - - for (v0 = 0; v0 < 4; v0++) { - if (btlMonObjData->managedSprites[v0] == NULL) { + for (int i = 0; i < 4; i++) { + if (btlMonObjData->managedSprites[i] == NULL) { continue; } - SpriteManager_UnloadCharObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[v0]); - SpriteManager_UnloadPlttObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[v0]); - Sprite_DeleteAndFreeResources(btlMonObjData->managedSprites[v0]); + SpriteManager_UnloadCharObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[i]); + SpriteManager_UnloadPlttObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[i]); + Sprite_DeleteAndFreeResources(btlMonObjData->managedSprites[i]); } Heap_Free(btlMonObjData); } -void ov12_022237A4(BattleMonOBJData *btlMonObjData, int param1) +void BattleMonOBJData_FreeForBattler(BattleMonOBJData *btlMonObjData, int unused) { - int v0; - - for (v0 = 0; v0 < 4; v0++) { - if (btlMonObjData->managedSprites[v0] == NULL) { + for (int i = 0; i < 4; i++) { + if (btlMonObjData->managedSprites[i] == NULL) { continue; } - SpriteManager_UnloadCharObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[v0]); - SpriteManager_UnloadPlttObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[v0]); - Sprite_DeleteAndFreeResources(btlMonObjData->managedSprites[v0]); + SpriteManager_UnloadCharObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[i]); + SpriteManager_UnloadPlttObjById(btlMonObjData->spriteContext.spriteMan, btlMonObjData->resourceIDs[i]); + Sprite_DeleteAndFreeResources(btlMonObjData->managedSprites[i]); } Heap_Free(btlMonObjData); } -int ov12_022237D8(BattleMonOBJData *btlMonObjData) +int BattleMonOBJData_GetBattlerType(BattleMonOBJData *btlMonObjData) { GF_ASSERT(btlMonObjData != NULL); return btlMonObjData->battlerTypes[btlMonObjData->battlerIdx]; diff --git a/src/battle_anim/battle_anim_util.c b/src/battle_anim/battle_anim_util.c index ee714383e3..382ed722fc 100644 --- a/src/battle_anim/battle_anim_util.c +++ b/src/battle_anim/battle_anim_util.c @@ -35,14 +35,9 @@ enum WorldPosType { WORLD_POS_TYPE_COUNT, }; -void ov17_022413D8(void); -void include_unk_ov12_0223A218(VecFx32 *dummy); +void include_sParticleCameraEye(VecFx32 *dummy); -static const VecFx32 Unk_ov12_0223A218 = { - 0x1700, - 0x4D00, - -0x1000 -}; +static const VecFx32 sParticleCameraEye = VEC_FX32(1.4375, 4.8125, -1.0); static const VecFx32 sUnitDown = { 0x0, @@ -50,9 +45,9 @@ static const VecFx32 sUnitDown = { 0x0 }; -void include_unk_ov12_0223A218(VecFx32 *dummy) +void include_sParticleCameraEye(VecFx32 *dummy) { - *dummy = Unk_ov12_0223A218; + *dummy = sParticleCameraEye; } int BattleAnimUtil_GetBattlerType(BattleAnimSystem *system, int battler) @@ -566,9 +561,9 @@ void BattleAnimUtil_GetParticleViewportTopPosition(VecFx32 *pos) pos->z = 0; } -void ov12_02235758(int param0, VecFx32 *param1, int param2, int param3) +void BattleAnimUtil_GetBattlerTypeWorldPos(int battlerType, VecFx32 *pos, BOOL isContest, enum CameraProjection projection) { - BattleAnimUtil_GetBattlerTypeWorldPos_Normal(param0, param1, param2, param3); + BattleAnimUtil_GetBattlerTypeWorldPos_Normal(battlerType, pos, isContest, projection); } // Gets the "up" vector for a given battler to apply to a particle system camera. @@ -686,7 +681,7 @@ void BattleAnimSystem_GetCommonData(BattleAnimSystem *system, BattleAnimScriptFu common->state = 0; common->counter1 = 0; common->counter2 = 0; - common->unk_03 = 0; + common->unused_03 = 0; common->battleAnimSys = system; common->spriteSystem = BattleAnimSystem_GetSpriteSystem(system); common->pokemonSpriteManager = BattleAnimSystem_GetPokemonSpriteManager(system); diff --git a/src/battle_anim/battle_particle_util.c b/src/battle_anim/battle_particle_util.c index ca5bedb8a7..d1808bfc85 100644 --- a/src/battle_anim/battle_particle_util.c +++ b/src/battle_anim/battle_particle_util.c @@ -67,26 +67,23 @@ void *BattleParticleUtil_ReadMemberFromNARC(NARC *narc, int memberIdx, enum Heap return NARC_AllocAndReadWholeMember(narc, memberIdx, heapID); } -ParticleSystem *ov12_0222384C(NARC *param0, enum HeapID heapID, int param2, int param3) +ParticleSystem *BattleParticleUtil_CreateParticleSystemFromOpenNarc(NARC *narc, enum HeapID heapID, int memberIdx, BOOL uploadImmediately) { - ParticleSystem *v0; - void *v1; + ParticleSystem *particleSys = ov11_0221F888(heapID); - v0 = ov11_0221F888(heapID); - - if (v0 == NULL) { + if (particleSys == NULL) { return NULL; } - v1 = BattleParticleUtil_ReadMemberFromNARC(param0, param2, heapID); - ParticleSystem_SetResource(v0, v1, (1 << 1) | (1 << 3), param3); + void *resource = BattleParticleUtil_ReadMemberFromNARC(narc, memberIdx, heapID); + ParticleSystem_SetResource(particleSys, resource, VRAM_AUTO_RELEASE_TEXTURE_LNK | VRAM_AUTO_RELEASE_PALETTE_LNK, uploadImmediately); - return v0; + return particleSys; } -SPLEmitter *BattleParticleUtil_CreateEmitter(ParticleSystem *ps, int resourceID, int callbackID, void *param) +SPLEmitter *BattleParticleUtil_CreateEmitter(ParticleSystem *ps, int resourceID, int callbackID, void *battleAnimSystemPtr) { - return ParticleSystem_CreateEmitterWithCallback(ps, resourceID, sEmitterCallbackTable[callbackID], param); + return ParticleSystem_CreateEmitterWithCallback(ps, resourceID, sEmitterCallbackTable[callbackID], battleAnimSystemPtr); } void BattleParticleUtil_FreeParticleSystem(ParticleSystem *ps) diff --git a/src/battle_anim/emitter_callbacks.c b/src/battle_anim/emitter_callbacks.c index bd30f23948..5eaa58afb6 100644 --- a/src/battle_anim/emitter_callbacks.c +++ b/src/battle_anim/emitter_callbacks.c @@ -13,19 +13,16 @@ #include "battle_script_battlers.h" #include "camera.h" +#include "fx_util.h" #include "math_util.h" #include "particle_system.h" #include "spl.h" -static s8 BattleParticleUtil_GetSignFromBattler(BattleAnimSystem *param0, int param1, int param2); +static s8 BattleParticleUtil_GetSignFromBattler(BattleAnimSystem *system, int startBattler, int endBattler); -static const VecFx32 Unk_ov12_0223A218 = { - 0x1700, - 0x4D00, - -0x1000 -}; +static const VecFx32 sParticleCameraEye = VEC_FX32(1.4375, 4.8125, -1.0); -static const VecFx32 Unk_ov12_0223A224 = { +static const VecFx32 sParticleCameraUp = { 0x0, -FX32_ONE, 0x0 diff --git a/src/battle_anim/ov12_02235E94.c b/src/battle_anim/ov12_02235E94.c index 82ee7069b9..727baa9092 100644 --- a/src/battle_anim/ov12_02235E94.c +++ b/src/battle_anim/ov12_02235E94.c @@ -420,7 +420,7 @@ static void ov12_022360A0(SysTask *param0, void *ballCapSealEffPtr) ballCapSealEff->seals[ballCapSealEff->sealCount] = v5; GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL); - ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = ov12_0222384C(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); + ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = BattleParticleUtil_CreateParticleSystemFromOpenNarc(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); if (ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL) { GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] != NULL); @@ -454,7 +454,7 @@ static void ov12_022360A0(SysTask *param0, void *ballCapSealEffPtr) ballCapSealEff->seals[ballCapSealEff->sealCount] = v5; GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL); - ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = ov12_0222384C(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); + ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = BattleParticleUtil_CreateParticleSystemFromOpenNarc(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); if (ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL) { GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] != NULL); @@ -488,7 +488,7 @@ static void ov12_022360A0(SysTask *param0, void *ballCapSealEffPtr) ballCapSealEff->seals[ballCapSealEff->sealCount] = v5; GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL); - ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = ov12_0222384C(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); + ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = BattleParticleUtil_CreateParticleSystemFromOpenNarc(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); if (ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL) { GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] != NULL); @@ -522,7 +522,7 @@ static void ov12_022360A0(SysTask *param0, void *ballCapSealEffPtr) ballCapSealEff->seals[ballCapSealEff->sealCount] = v5; GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL); - ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = ov12_0222384C(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); + ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] = BattleParticleUtil_CreateParticleSystemFromOpenNarc(ballCapSealEff->particleNarc, ballCapSealEff->heapID, v3, 0); if (ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] == NULL) { GF_ASSERT(ballCapSealEff->sealParticleSystems[ballCapSealEff->sealCount] != NULL); @@ -690,7 +690,7 @@ static void ov12_0223646C(BallCapsuleSealEffect *ballCapSealEff, SPLEmitterCallb static void ov12_02236520(int param0, VecFx32 *param1) { - ov12_02235758(param0, param1, 0, 1); + BattleAnimUtil_GetBattlerTypeWorldPos(param0, param1, 0, 1); { int v0; @@ -1107,7 +1107,7 @@ static BOOL ov12_02236918(BallRotation *param0) ManagedSprite_GetPositionXY(param0->unk_30, &v0.unk_00, &v0.unk_02); - param0->unk_D8 = ov12_02223764(param0->unk_90.battleSys, param0->unk_90.heapID); + param0->unk_D8 = BattleMonOBJData_NewAll(param0->unk_90.battleSys, param0->unk_90.heapID); param0->unk_D0 = ov12_02236690(&v0); } param0->unk_08++; @@ -1122,7 +1122,7 @@ static BOOL ov12_02236918(BallRotation *param0) } break; case 2: ov12_022366F0(param0->unk_D0); - ov12_02223770(param0->unk_D8); + BattleMonOBJData_Free(param0->unk_D8); param0->unk_08++; break; case 3: { @@ -1636,7 +1636,7 @@ static BOOL ov12_02236F24(BallRotation *param0) } } - if (ov12_02225D2C(¶m0->unk_48[0], ¶m0->unk_48[1], param0->unk_30) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(¶m0->unk_48[0], ¶m0->unk_48[1], param0->unk_30) == 0) { ov12_02237E24(param0, 0); param0->unk_08++; } @@ -1747,7 +1747,7 @@ static BOOL ov12_022371E4(BallRotation *param0) } } - if (ov12_02225D2C(¶m0->unk_48[0], ¶m0->unk_48[1], param0->unk_30) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(¶m0->unk_48[0], ¶m0->unk_48[1], param0->unk_30) == 0) { ov12_02237E24(param0, 0); param0->unk_08++; } diff --git a/src/battle_anim/script_func_examples.c b/src/battle_anim/script_func_examples.c index 4ad132e53f..3665514e2e 100644 --- a/src/battle_anim/script_func_examples.c +++ b/src/battle_anim/script_func_examples.c @@ -14,30 +14,30 @@ #define TASK_STATE_RUNNING 0 #define TASK_STATE_DONE 1 -typedef struct { +typedef struct AnimExampleContext { u8 state; BattleAnimSystem *system; } AnimExampleContext; -typedef struct { +typedef struct SoundExampleContext { u8 state; BattleAnimSystem *system; } SoundExampleContext; -typedef struct { +typedef struct GenericExampleContext { u8 state; BattleAnimSystem *system; } GenericExampleContext; -typedef struct { - u8 unk_00; - BattleAnimSystem *unk_04; - SpriteSystem *unk_08; - SpriteManager *unk_0C; - ManagedSprite *unk_10; - ManagedSprite *unk_14[100]; - Sprite *unk_1A4[10]; -} UnkStruct_ov12_02226AAC; +typedef struct SpriteExampleContext { + u8 state; + BattleAnimSystem *battleAnimSys; + SpriteSystem *spriteSys; + SpriteManager *spriteManager; + ManagedSprite *managedSprite; + ManagedSprite *managedSprites[100]; + Sprite *sprites[10]; +} SpriteExampleContext; void BattleAnimScriptFunc_Nop(BattleAnimSystem *system) { @@ -94,7 +94,7 @@ void BattleAnimScriptFunc_SoundExample(BattleAnimSystem *system) BattleAnimSystem_StartSoundTask(ctx->system, BattleAnimTask_SoundExample, ctx, 0x1000); } -static void BattleAnimtTask_GenericExample(SysTask *task, void *param) +static void BattleAnimTask_GenericExample(SysTask *task, void *param) { GenericExampleContext *ctx = param; @@ -116,60 +116,54 @@ void BattleAnimScriptFunc_GenericExample(BattleAnimSystem *system) ctx->state = TASK_STATE_RUNNING; ctx->system = system; - SysTask_Start(BattleAnimtTask_GenericExample, ctx, 0x1000); + SysTask_Start(BattleAnimTask_GenericExample, ctx, 0x1000); } -static void ov12_02226AAC(SysTask *param0, void *param1) +static void BattleAnimTask_SpriteExample(SysTask *task, void *param) { - UnkStruct_ov12_02226AAC *v0 = (UnkStruct_ov12_02226AAC *)param1; + SpriteExampleContext *ctx = param; - switch (v0->unk_00) { - case 0: - Sprite_TickFrame(v0->unk_14[0]->sprite); - Sprite_TickFrame(v0->unk_14[1]->sprite); - Sprite_TickFrame(v0->unk_14[2]->sprite); + switch (ctx->state) { + case TASK_STATE_RUNNING: + Sprite_TickFrame(ctx->managedSprites[0]->sprite); + Sprite_TickFrame(ctx->managedSprites[1]->sprite); + Sprite_TickFrame(ctx->managedSprites[2]->sprite); - Sprite_OffsetPositionXY(v0->unk_14[0]->sprite, 1, 0); - Sprite_OffsetPositionXY(v0->unk_14[1]->sprite, -1, 0); - Sprite_OffsetPositionXY(v0->unk_14[2]->sprite, 1, 1); + Sprite_OffsetPositionXY(ctx->managedSprites[0]->sprite, 1, 0); + Sprite_OffsetPositionXY(ctx->managedSprites[1]->sprite, -1, 0); + Sprite_OffsetPositionXY(ctx->managedSprites[2]->sprite, 1, 1); - SpriteSystem_DrawSprites(v0->unk_0C); + SpriteSystem_DrawSprites(ctx->spriteManager); break; - case 1: { - BattleAnimSystem *v1 = v0->unk_04; + case TASK_STATE_DONE: + BattleAnimSystem *battleAnimSys = ctx->battleAnimSys; - Sprite_DeleteAndFreeResources(v0->unk_10); - Heap_Free(v0); - BattleAnimSystem_EndAnimTask(v1, param0); - } break; + Sprite_DeleteAndFreeResources(ctx->managedSprite); + Heap_Free(ctx); + BattleAnimSystem_EndAnimTask(battleAnimSys, task); + break; } } -void ov12_02226B1C(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager *param2, ManagedSprite *param3) +void BattleAnimScriptFunc_SpriteExample(BattleAnimSystem *system, SpriteSystem *spriteSys, SpriteManager *spriteManager, ManagedSprite *managedSprite) { - UnkStruct_ov12_02226AAC *v0; - SpriteTemplate v1; + SpriteExampleContext *ctx = Heap_Alloc(HEAP_ID_BATTLE, sizeof(SpriteExampleContext)); + SpriteTemplate spriteTemplate; - v0 = Heap_Alloc(HEAP_ID_BATTLE, sizeof(UnkStruct_ov12_02226AAC)); + GF_ASSERT(ctx != NULL); - GF_ASSERT(v0 != NULL); + ctx->state = 0; + ctx->spriteSys = spriteSys; + ctx->spriteManager = spriteManager; + ctx->managedSprite = managedSprite; + ctx->battleAnimSys = system; - v0->unk_00 = 0; - v0->unk_08 = param1; - v0->unk_0C = param2; - v0->unk_10 = param3; - v0->unk_04 = param0; + spriteTemplate = BattleAnimSystem_GetLastSpriteTemplate(system); + ctx->managedSprites[0] = managedSprite; - v1 = BattleAnimSystem_GetLastSpriteTemplate(param0); - v0->unk_14[0] = param3; - - { - int v2; - - for (v2 = 1; v2 < 3; v2++) { - v0->unk_14[v2] = SpriteSystem_NewSprite(v0->unk_08, v0->unk_0C, &v1); - } + for (int i = 1; i < 3; i++) { + ctx->managedSprites[i] = SpriteSystem_NewSprite(ctx->spriteSys, ctx->spriteManager, &spriteTemplate); } - BattleAnimSystem_StartAnimTaskEx(param0, ov12_02226AAC, v0, 0x1000); + BattleAnimSystem_StartAnimTaskEx(system, BattleAnimTask_SpriteExample, ctx, 0x1000); } diff --git a/src/battle_anim/script_func_tables.c b/src/battle_anim/script_func_tables.c index c07f8c95be..0cd6f00551 100644 --- a/src/battle_anim/script_func_tables.c +++ b/src/battle_anim/script_func_tables.c @@ -104,7 +104,7 @@ static const BattleAnimScriptFunc sBattleAnimScriptFuncs[] = { }; static const BattleAnimScriptSpriteFunc sBattleAnimScriptSpriteFuncs[] = { - ov12_02226B1C, + BattleAnimScriptFunc_SpriteExample, ov12_0222AE68, ov12_0222FE30, ov12_0222D56C, diff --git a/src/battle_anim/script_funcs_0.c b/src/battle_anim/script_funcs_0.c index bd4d984093..a50199b94b 100644 --- a/src/battle_anim/script_funcs_0.c +++ b/src/battle_anim/script_funcs_0.c @@ -2327,7 +2327,7 @@ static void ov12_0222CBFC(SysTask *param0, void *param1) int v0; UnkStruct_ov12_0222CBFC *v1 = (UnkStruct_ov12_0222CBFC *)param1; - if (ov12_02225D2C(&v1->unk_8C[0], &v1->unk_8C[1], v1->unk_38) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v1->unk_8C[0], &v1->unk_8C[1], v1->unk_38) == 0) { Sprite_DeleteAndFreeResources(v1->unk_38); BattleAnimSystem_EndAnimTask(v1->unk_10.battleAnimSys, param0); BattleAnimUtil_Free(v1); @@ -2382,7 +2382,7 @@ void ov12_0222CC54(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager } ManagedSprite_SetAffineZRotation(v2->unk_38, v2->unk_D4.value); - ov12_02225D2C(&v2->unk_8C[0], &v2->unk_8C[1], v2->unk_38); + XYTransformContext_UpdateParabolicAndApplyToSprite(&v2->unk_8C[0], &v2->unk_8C[1], v2->unk_38); ManagedSprite_TickFrame(v2->unk_38); BattleAnimSystem_StartAnimTask(v2->unk_10.battleAnimSys, ov12_0222CBFC, v2); @@ -2619,8 +2619,8 @@ static void ov12_0222D128(SysTask *param0, void *param1) } v1->unk_01++; - ov12_022267A8(&v1->unk_04, 16, +16); - ov12_022267A8(&v1->unk_08, 0, -16); + BattleAnimMath_StepToward(&v1->unk_04, 16, +16); + BattleAnimMath_StepToward(&v1->unk_08, 0, -16); G2_ChangeBlendAlpha(v1->unk_04, v1->unk_08); @@ -2645,9 +2645,9 @@ static void ov12_0222D128(SysTask *param0, void *param1) ManagedSprite_GetPositionXY(v1->unk_30[0].unk_00, &v7, &v8); ManagedSprite_GetPositionXY(v1->unk_30[1].unk_00, &v9, &v10); - ov12_02226728(v7, v8, v9, v10, &v1->unk_C8, &v1->unk_CA); - ov12_02226744(v7, v8, v1->unk_C8, v1->unk_CA, &v1->unk_2C); - ov12_0222676C(v7, v8, v1->unk_C8, v1->unk_CA, &v1->unk_28); + BattleAnimMath_CalcMidpoint(v7, v8, v9, v10, &v1->unk_C8, &v1->unk_CA); + BattleAnimMath_CalcDistance(v7, v8, v1->unk_C8, v1->unk_CA, &v1->unk_2C); + BattleAnimMath_CalcAngle(v7, v8, v1->unk_C8, v1->unk_CA, &v1->unk_28); v1->unk_2C = (40 * FX32_ONE); } @@ -2676,11 +2676,11 @@ static void ov12_0222D128(SysTask *param0, void *param1) case 7: { u8 v16 = 0; - if (ov12_02225D2C(&v1->unk_30[0].unk_04[0], &v1->unk_30[0].unk_04[1], v1->unk_30[0].unk_00) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v1->unk_30[0].unk_04[0], &v1->unk_30[0].unk_04[1], v1->unk_30[0].unk_00) == 0) { v16++; } - if (ov12_02225D2C(&v1->unk_30[1].unk_04[0], &v1->unk_30[1].unk_04[1], v1->unk_30[1].unk_00) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v1->unk_30[1].unk_04[0], &v1->unk_30[1].unk_04[1], v1->unk_30[1].unk_00) == 0) { v16++; } @@ -2695,11 +2695,11 @@ static void ov12_0222D128(SysTask *param0, void *param1) case 8: { int v17 = 0; - if (ov12_022267A8(&v1->unk_04, 0, -2) == 1) { + if (BattleAnimMath_StepToward(&v1->unk_04, 0, -2) == 1) { v17++; } - if (ov12_022267A8(&v1->unk_08, 16, +2) == 1) { + if (BattleAnimMath_StepToward(&v1->unk_08, 16, +2) == 1) { v17++; } diff --git a/src/battle_anim/script_funcs_1.c b/src/battle_anim/script_funcs_1.c index de4628b25a..8491ff04a6 100644 --- a/src/battle_anim/script_funcs_1.c +++ b/src/battle_anim/script_funcs_1.c @@ -646,7 +646,7 @@ static void BattleAnimTask_Snatch(SysTask *task, void *param) BattlerSpriteContext battlerSpriteCtx; if (ctx->doRev == FALSE) { - ov12_02220590(ctx->common.battleAnimSys, &battlerSpriteCtx, 3); + BattlerSpriteContext_InitFromSystem(ctx->common.battleAnimSys, &battlerSpriteCtx, 3); if (ctx->iteration == 2) { ov12_022382BC(&battlerSpriteCtx, BattleAnimSystem_GetHeapID(ctx->common.battleAnimSys)); diff --git a/src/battle_anim/script_funcs_2.c b/src/battle_anim/script_funcs_2.c index 8ea4ff90f3..6efad8efa0 100644 --- a/src/battle_anim/script_funcs_2.c +++ b/src/battle_anim/script_funcs_2.c @@ -1115,16 +1115,16 @@ static BOOL ov12_0222FB84(UnkStruct_ov12_0222FAFC *param0) case 0: case 1: if (RevolutionContext_Update(¶m0->unk_04)) { - AngleLerpContext_UpdateCos(¶m0->unk_28); + ValueLerpContext_UpdateCos(¶m0->unk_28); param0->unk_04.data[5] = param0->unk_3C + param0->unk_28.value; ManagedSprite_SetPositionXY(param0->unk_00, param0->unk_3E + param0->unk_04.x, param0->unk_40 + param0->unk_04.y); } else { if (param0->unk_44 < 1) { if (param0->unk_44 == 0) { - ov12_02225A8C(¶m0->unk_04, param0->unk_04.data[1], (180 * 0xffff) / 360, param0->unk_04.data[1], (180 * 0xffff) / 360, param0->unk_04.data[2], param0->unk_04.data[4], (10 * 0xffff) / 360); + RevolutionContext_InitWithStepSize(¶m0->unk_04, param0->unk_04.data[1], (180 * 0xffff) / 360, param0->unk_04.data[1], (180 * 0xffff) / 360, param0->unk_04.data[2], param0->unk_04.data[4], (10 * 0xffff) / 360); } - AngleLerpContext_InitCos(¶m0->unk_28, (0 * 0xffff) / 360, (360 * 0xffff) / 360, -1 * FX32_ONE, param0->unk_04.data[0]); + ValueLerpContext_InitCos(¶m0->unk_28, (0 * 0xffff) / 360, (360 * 0xffff) / 360, -1 * FX32_ONE, param0->unk_04.data[0]); } param0->unk_44++; @@ -1246,8 +1246,8 @@ void ov12_0222FE30(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager v0->unk_0C.unk_00 = param3; v0->unk_0C.unk_44 = 0; - ov12_02225A8C(&v0->unk_0C.unk_04, (90 * 0xffff) / 360, (270 * 0xffff) / 360, (90 * 0xffff) / 360, (270 * 0xffff) / 360, v4, -8 * FX32_ONE, (10 * 0xffff) / 360); - AngleLerpContext_InitCos(&v0->unk_0C.unk_28, (0 * 0xffff) / 360, (360 * 0xffff) / 360, -1 * FX32_ONE, v0->unk_0C.unk_04.data[0]); + RevolutionContext_InitWithStepSize(&v0->unk_0C.unk_04, (90 * 0xffff) / 360, (270 * 0xffff) / 360, (90 * 0xffff) / 360, (270 * 0xffff) / 360, v4, -8 * FX32_ONE, (10 * 0xffff) / 360); + ValueLerpContext_InitCos(&v0->unk_0C.unk_28, (0 * 0xffff) / 360, (360 * 0xffff) / 360, -1 * FX32_ONE, v0->unk_0C.unk_04.data[0]); v0->unk_0C.unk_3C = v0->unk_0C.unk_04.data[5]; v0->unk_0C.unk_48 = 1; @@ -2207,13 +2207,13 @@ static void ov12_022310D4(SysTask *param0, void *param1) return; case 2: - if (ov12_02225D2C(&v0->unk_4C, &v0->unk_70, v0->unk_48) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v0->unk_4C, &v0->unk_70, v0->unk_48) == 0) { XYTransformContext_InitParabolic(&v0->unk_4C, &v0->unk_70, v0->unk_44, v0->unk_14, v0->unk_46, v0->unk_16, 10, -(32 * FX32_ONE)); v0->unk_0C++; } break; case 3: - if (ov12_02225D2C(&v0->unk_4C, &v0->unk_70, v0->unk_48) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v0->unk_4C, &v0->unk_70, v0->unk_48) == 0) { ManagedSprite_SetDrawFlag(v0->unk_48, 0); v0->unk_0C++; } diff --git a/src/battle_anim/script_funcs_3.c b/src/battle_anim/script_funcs_3.c index efe851e4f8..e614c646a4 100644 --- a/src/battle_anim/script_funcs_3.c +++ b/src/battle_anim/script_funcs_3.c @@ -3806,7 +3806,7 @@ static void ov12_0222A4A0(SysTask *param0, void *param1) v0->unk_00.state++; break; case 1: - if (ov12_02225D2C(&v0->unk_24[0], &v0->unk_24[1], v0->unk_1C) == 0) { + if (XYTransformContext_UpdateParabolicAndApplyToSprite(&v0->unk_24[0], &v0->unk_24[1], v0->unk_1C) == 0) { v0->unk_00.state++; } break; diff --git a/src/battle_anim/script_funcs_stat_change.c b/src/battle_anim/script_funcs_stat_change.c index 47465d37a6..0b9055f622 100644 --- a/src/battle_anim/script_funcs_stat_change.c +++ b/src/battle_anim/script_funcs_stat_change.c @@ -20,7 +20,7 @@ // ------------------------------------------------------------------- // Stat Change // ------------------------------------------------------------------- -typedef struct StatChangeParam { +typedef struct StatChangeConfig { enum NarcID narcID; int memberTableIndex; int mode; @@ -30,10 +30,10 @@ typedef struct StatChangeParam { s16 offsetY; u16 overlayAlpha; u16 otherAlpha; -} StatChangeParam; +} StatChangeConfig; typedef struct StatChangeContext { - StatChangeParam param; + StatChangeConfig config; BattleAnimScriptFuncCommon common; ManagedSprite *attackerSprite; ManagedSprite *attackerSprite2; @@ -74,16 +74,16 @@ static const int sStatChangeNarcMemberTable[][STAT_CHANGE_MEMBER_COUNT] = { { 0x3A, 0x121, 0x3B, 0x3B } }; -static void StatChangeParam_SetStepSize(StatChangeParam *param, s16 stepX, s16 stepY) +static void StatChangeConfig_SetStepSize(StatChangeConfig *config, s16 stepX, s16 stepY) { - param->stepX = stepX; - param->stepY = stepY; + config->stepX = stepX; + config->stepY = stepY; } -static void StatChangeParam_SetInitAlpha(StatChangeParam *param, u16 overlayAlpha, u16 otherAlpha) +static void StatChangeConfig_SetInitAlpha(StatChangeConfig *config, u16 overlayAlpha, u16 otherAlpha) { - param->overlayAlpha = overlayAlpha; - param->otherAlpha = otherAlpha; + config->overlayAlpha = overlayAlpha; + config->otherAlpha = otherAlpha; } static void StatChangeContext_LoadBg(StatChangeContext *ctx, enum BgLayer bgLayer) @@ -93,8 +93,8 @@ static void StatChangeContext_LoadBg(StatChangeContext *ctx, enum BgLayer bgLaye Bg_SetPriority(bgLayer, bgPriority); Graphics_LoadTilesToBgLayer( - ctx->param.narcID, - sStatChangeNarcMemberTable[ctx->param.memberTableIndex][STAT_CHANGE_MEMBER_TILES], + ctx->config.narcID, + sStatChangeNarcMemberTable[ctx->config.memberTableIndex][STAT_CHANGE_MEMBER_TILES], ctx->common.bgConfig, bgLayer, 0, @@ -103,16 +103,16 @@ static void StatChangeContext_LoadBg(StatChangeContext *ctx, enum BgLayer bgLaye heapID); PaletteData_LoadBufferFromFileStart( ctx->common.paletteData, - ctx->param.narcID, - sStatChangeNarcMemberTable[ctx->param.memberTableIndex][STAT_CHANGE_MEMBER_PALETTE], + ctx->config.narcID, + sStatChangeNarcMemberTable[ctx->config.memberTableIndex][STAT_CHANGE_MEMBER_PALETTE], heapID, PLTTBUF_MAIN_BG, PALETTE_SIZE_BYTES, PLTT_DEST(BATTLE_BG_PALETTE_MON_SPRITE)); Bg_ClearTilemap(ctx->common.bgConfig, bgLayer); Graphics_LoadTilemapToBgLayer( - ctx->param.narcID, - sStatChangeNarcMemberTable[ctx->param.memberTableIndex][STAT_CHANGE_MEMBER_TILEMAP], + ctx->config.narcID, + sStatChangeNarcMemberTable[ctx->config.memberTableIndex][STAT_CHANGE_MEMBER_TILEMAP], ctx->common.bgConfig, bgLayer, 0, @@ -134,8 +134,8 @@ static void BattleAnimTask_StatChange(SysTask *task, void *param) G2_SetBlendAlpha( BATTLE_BG_BLENDMASK_BASE, GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | BATTLE_BG_BLENDMASK_3D | BATTLE_BG_BLENDMASK_EFFECT, - ctx->param.overlayAlpha, - ctx->param.otherAlpha); + ctx->config.overlayAlpha, + ctx->config.otherAlpha); ctx->common.state++; break; case STAT_CHANGE_STATE_SCROLL: @@ -146,15 +146,15 @@ static void BattleAnimTask_StatChange(SysTask *task, void *param) } break; case STAT_CHANGE_STATE_FADE_OUT: - if (ctx->param.overlayAlpha > STAT_CHANGE_OVERLAY_TARGET_ALPHA) { - ctx->param.overlayAlpha--; + if (ctx->config.overlayAlpha > STAT_CHANGE_OVERLAY_TARGET_ALPHA) { + ctx->config.overlayAlpha--; } - if (ctx->param.otherAlpha < STAT_CHANGE_OTHER_TARGET_ALPHA) { - ctx->param.otherAlpha++; + if (ctx->config.otherAlpha < STAT_CHANGE_OTHER_TARGET_ALPHA) { + ctx->config.otherAlpha++; } - if (ctx->param.overlayAlpha == STAT_CHANGE_OVERLAY_TARGET_ALPHA && ctx->param.otherAlpha == STAT_CHANGE_OTHER_TARGET_ALPHA) { + if (ctx->config.overlayAlpha == STAT_CHANGE_OVERLAY_TARGET_ALPHA && ctx->config.otherAlpha == STAT_CHANGE_OTHER_TARGET_ALPHA) { Bg_ClearTilemap(ctx->common.bgConfig, BATTLE_BG_BASE); ManagedSprite_SetDrawFlag(ctx->attackerSprite, FALSE); ManagedSprite_SetDrawFlag(ctx->attackerSprite2, FALSE); @@ -162,7 +162,7 @@ static void BattleAnimTask_StatChange(SysTask *task, void *param) ctx->common.state++; } - G2_ChangeBlendAlpha(ctx->param.overlayAlpha, ctx->param.otherAlpha); + G2_ChangeBlendAlpha(ctx->config.overlayAlpha, ctx->config.otherAlpha); break; default: G2_SetWndOutsidePlane(BATTLE_BG_WNDMASK_ALL | GX_WND_PLANEMASK_OBJ, FALSE); @@ -176,11 +176,11 @@ static void BattleAnimTask_StatChange(SysTask *task, void *param) return; } - ctx->param.offsetX += ctx->param.stepX; - ctx->param.offsetY += ctx->param.stepY; + ctx->config.offsetX += ctx->config.stepX; + ctx->config.offsetY += ctx->config.stepY; - Bg_SetOffset(ctx->common.bgConfig, BATTLE_BG_BASE, BG_OFFSET_UPDATE_SET_X, ctx->param.offsetX); - Bg_SetOffset(ctx->common.bgConfig, BATTLE_BG_BASE, BG_OFFSET_UPDATE_SET_Y, ctx->param.offsetY); + Bg_SetOffset(ctx->common.bgConfig, BATTLE_BG_BASE, BG_OFFSET_UPDATE_SET_X, ctx->config.offsetX); + Bg_SetOffset(ctx->common.bgConfig, BATTLE_BG_BASE, BG_OFFSET_UPDATE_SET_Y, ctx->config.offsetY); ManagedSprite_TickFrame(ctx->attackerSprite); ManagedSprite_TickFrame(ctx->attackerSprite2); @@ -188,19 +188,19 @@ static void BattleAnimTask_StatChange(SysTask *task, void *param) SpriteSystem_DrawSprites(ctx->common.pokemonSpriteManager); } -static void StatChangeParam_Init(BattleAnimSystem *system, StatChangeParam *param) +static void StatChangeConfig_Init(BattleAnimSystem *system, StatChangeConfig *config) { - param->narcID = NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_BG; - param->memberTableIndex = BattleAnimSystem_GetScriptVar(system, STAT_CHANGE_VAR_MEMBER_TABLE_INDEX); - param->mode = BattleAnimSystem_GetScriptVar(system, STAT_CHANGE_VAR_MODE); + config->narcID = NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_BG; + config->memberTableIndex = BattleAnimSystem_GetScriptVar(system, STAT_CHANGE_VAR_MEMBER_TABLE_INDEX); + config->mode = BattleAnimSystem_GetScriptVar(system, STAT_CHANGE_VAR_MODE); } -static void BattleAnimScriptFunc_StatChangeCommon(BattleAnimSystem *system, StatChangeParam *param) +static void BattleAnimScriptFunc_StatChangeCommon(BattleAnimSystem *system, StatChangeConfig *config) { StatChangeContext *ctx = BattleAnimUtil_Alloc(system, sizeof(StatChangeContext)); BattleAnimSystem_GetCommonData(system, &ctx->common); - ctx->param = *param; + ctx->config = *config; ctx->attackerSprite = BattleAnimSystem_GetPokemonSprite(ctx->common.battleAnimSys, BATTLE_ANIM_MON_SPRITE_0); ctx->attackerSprite2 = BattleAnimSystem_GetPokemonSprite(ctx->common.battleAnimSys, BATTLE_ANIM_MON_SPRITE_1); ctx->attackerPartnerSprite = BattleAnimSystem_GetPokemonSprite(ctx->common.battleAnimSys, BATTLE_ANIM_MON_SPRITE_2); @@ -212,7 +212,7 @@ static void BattleAnimScriptFunc_StatChangeCommon(BattleAnimSystem *system, Stat ManagedSprite_SetExplicitPriority(ctx->attackerSprite2, bgPriority); int battler; - if (ctx->param.mode == STAT_CHANGE_MODE_ATTACKER) { + if (ctx->config.mode == STAT_CHANGE_MODE_ATTACKER) { battler = BattleAnimSystem_GetAttacker(system); } else { battler = BattleAnimSystem_GetDefender(system); @@ -228,13 +228,13 @@ static void BattleAnimScriptFunc_StatChangeCommon(BattleAnimSystem *system, Stat if (battlerType == BATTLER_TYPE_SOLO_PLAYER || battlerType == BATTLER_TYPE_SOLO_ENEMY) { ManagedSprite_SetDrawFlag(ctx->attackerPartnerSprite, FALSE); } else if (battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_2 || battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_1) { - if (ctx->param.mode == STAT_CHANGE_MODE_ATTACKER) { + if (ctx->config.mode == STAT_CHANGE_MODE_ATTACKER) { ManagedSprite_SetExplicitPriority(ctx->attackerPartnerSprite, bgPriority + 1); } else { ManagedSprite_SetExplicitPriority(ctx->attackerPartnerSprite, bgPriority + 1); } } else { // BATTLER_TYPE_PLAYER_SIDE_SLOT_1 || BATTLER_TYPE_ENEMY_SIDE_SLOT_2 - if (ctx->param.mode == STAT_CHANGE_MODE_ATTACKER) { + if (ctx->config.mode == STAT_CHANGE_MODE_ATTACKER) { ManagedSprite_SetExplicitPriority(ctx->attackerPartnerSprite, bgPriority - 1); } else { ManagedSprite_SetExplicitPriority(ctx->attackerPartnerSprite, bgPriority - 1); @@ -248,48 +248,48 @@ static void BattleAnimScriptFunc_StatChangeCommon(BattleAnimSystem *system, Stat ManagedSprite_SetExplicitOamMode(ctx->attackerSprite2, GX_OAM_MODE_OBJWND); - ctx->param.offsetX = 0; - ctx->param.offsetY = 0; + ctx->config.offsetX = 0; + ctx->config.offsetY = 0; BattleAnimSystem_StartAnimTask(ctx->common.battleAnimSys, BattleAnimTask_StatChange, ctx); } void BattleAnimScriptFunc_StatChangeUp(BattleAnimSystem *system) { - StatChangeParam param; + StatChangeConfig config; - StatChangeParam_Init(system, ¶m); - StatChangeParam_SetStepSize(¶m, STAT_CHANGE_STEP_X, +STAT_CHANGE_STEP_Y); - StatChangeParam_SetInitAlpha(¶m, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); - BattleAnimScriptFunc_StatChangeCommon(system, ¶m); + StatChangeConfig_Init(system, &config); + StatChangeConfig_SetStepSize(&config, STAT_CHANGE_STEP_X, +STAT_CHANGE_STEP_Y); + StatChangeConfig_SetInitAlpha(&config, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); + BattleAnimScriptFunc_StatChangeCommon(system, &config); } void BattleAnimScriptFunc_StatChangeDown(BattleAnimSystem *system) { - StatChangeParam param; + StatChangeConfig config; - StatChangeParam_Init(system, ¶m); - StatChangeParam_SetStepSize(¶m, STAT_CHANGE_STEP_X, -STAT_CHANGE_STEP_Y); - StatChangeParam_SetInitAlpha(¶m, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); - BattleAnimScriptFunc_StatChangeCommon(system, ¶m); + StatChangeConfig_Init(system, &config); + StatChangeConfig_SetStepSize(&config, STAT_CHANGE_STEP_X, -STAT_CHANGE_STEP_Y); + StatChangeConfig_SetInitAlpha(&config, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); + BattleAnimScriptFunc_StatChangeCommon(system, &config); } void BattleAnimScriptFunc_StatChangeHeal(BattleAnimSystem *system) { - StatChangeParam param; + StatChangeConfig config; - StatChangeParam_Init(system, ¶m); - StatChangeParam_SetStepSize(¶m, STAT_CHANGE_STEP_X, +STAT_CHANGE_STEP_Y); - StatChangeParam_SetInitAlpha(¶m, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); - BattleAnimScriptFunc_StatChangeCommon(system, ¶m); + StatChangeConfig_Init(system, &config); + StatChangeConfig_SetStepSize(&config, STAT_CHANGE_STEP_X, +STAT_CHANGE_STEP_Y); + StatChangeConfig_SetInitAlpha(&config, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); + BattleAnimScriptFunc_StatChangeCommon(system, &config); } void BattleAnimScriptFunc_StatChangeMetal(BattleAnimSystem *system) { - StatChangeParam param; + StatChangeConfig config; - StatChangeParam_Init(system, ¶m); - StatChangeParam_SetStepSize(¶m, STAT_CHANGE_STEP_X, -2 * STAT_CHANGE_STEP_Y); - StatChangeParam_SetInitAlpha(¶m, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); - BattleAnimScriptFunc_StatChangeCommon(system, ¶m); + StatChangeConfig_Init(system, &config); + StatChangeConfig_SetStepSize(&config, STAT_CHANGE_STEP_X, -2 * STAT_CHANGE_STEP_Y); + StatChangeConfig_SetInitAlpha(&config, STAT_CHANGE_OVERLAY_START_ALPHA, STAT_CHANGE_OTHER_START_ALPHA); + BattleAnimScriptFunc_StatChangeCommon(system, &config); }