Document revolve battler script func

This commit is contained in:
Fexty12573
2025-08-05 14:41:17 +02:00
parent ae6c3ad4ba
commit 32e177df70
3 changed files with 35 additions and 29 deletions

View File

@@ -24,7 +24,7 @@ void BattleAnimScriptFunc_ShakeAndScaleAttacker(BattleAnimSystem *param0);
void ov12_02228A0C(BattleAnimSystem *param0);
void ov12_02228B40(BattleAnimSystem *param0);
void BattleAnimScriptFunc_MoveBattler(BattleAnimSystem *param0);
void ov12_02228E00(BattleAnimSystem *param0);
void BattleAnimScriptFunc_RevolveBattler(BattleAnimSystem *param0);
void ov12_02228EC0(BattleAnimSystem *param0);
void ov12_02228FB4(BattleAnimSystem *param0);
void ov12_022290DC(BattleAnimSystem *param0);

View File

@@ -77,7 +77,7 @@ static const BattleAnimScriptFunc sBattleAnimScriptFuncs[] = {
BattleAnimScriptFunc_MoveBattler,
BattleAnimScriptFunc_Mimic,
BattleAnimScriptFunc_ShadowPunch,
ov12_02228E00,
BattleAnimScriptFunc_RevolveBattler,
ov12_02228EC0,
ov12_022290DC,
ov12_022291AC,

View File

@@ -455,11 +455,18 @@ enum MoveBattlerState {
#define MOVE_BATTLER_VAR_OFFSET_Y 2
#define MOVE_BATTLER_VAR_TARGET 3
typedef struct {
BattleAnimScriptFuncCommon unk_00;
BattleAnimSpriteInfo unk_1C;
XYTransformContext unk_30;
} UnkStruct_ov12_02228DB8;
// -------------------------------------------------------------------
// Revolve Battler
// -------------------------------------------------------------------
typedef struct RevolveBattlerContext {
BattleAnimScriptFuncCommon common;
BattleAnimSpriteInfo spriteInfo;
XYTransformContext revs;
} RevolveBattlerContext;
#define REVOLVE_BATTLER_VAR_TARGET 0
#define REVOLVE_BATTLER_VAR_REVS 1
#define REVOLVE_BATTLER_VAR_FRAMES_PER_REV 2
typedef struct {
BattleAnimScriptFuncCommon unk_00;
@@ -2438,39 +2445,38 @@ void BattleAnimScriptFunc_MoveBattler(BattleAnimSystem *system)
BattleAnimTask_MoveBattler(task, ctx);
}
static void ov12_02228DB8(SysTask *param0, void *param1)
static void BattleAnimTask_RevolveBattler(SysTask *task, void *param)
{
int v0;
UnkStruct_ov12_02228DB8 *v1 = (UnkStruct_ov12_02228DB8 *)param1;
RevolveBattlerContext *ctx = param;
v0 = RevolutionContext_UpdateAndApplyToMon(&v1->unk_30, v1->unk_1C.pos.x, v1->unk_1C.pos.y, v1->unk_1C.monSprite);
if (v0 == 0) {
PokemonSprite_SetAttribute(v1->unk_1C.monSprite, MON_SPRITE_X_CENTER, v1->unk_1C.pos.x);
PokemonSprite_SetAttribute(v1->unk_1C.monSprite, MON_SPRITE_Y_CENTER, v1->unk_1C.pos.y + ((-8 * FX32_ONE) >> FX32_SHIFT));
BattleAnimSystem_EndAnimTask(v1->unk_00.battleAnimSystem, param0);
Heap_Free(v1);
BOOL ative = RevolutionContext_UpdateAndApplyToMon(&ctx->revs, ctx->spriteInfo.pos.x, ctx->spriteInfo.pos.y, ctx->spriteInfo.monSprite);
if (ative == FALSE) {
PokemonSprite_SetAttribute(ctx->spriteInfo.monSprite, MON_SPRITE_X_CENTER, ctx->spriteInfo.pos.x);
PokemonSprite_SetAttribute(ctx->spriteInfo.monSprite, MON_SPRITE_Y_CENTER, ctx->spriteInfo.pos.y + REVOLUTION_CONTEXT_OVAL_RADIUS_Y_INT);
BattleAnimSystem_EndAnimTask(ctx->common.battleAnimSystem, task);
Heap_Free(ctx);
}
}
void ov12_02228E00(BattleAnimSystem *param0)
void BattleAnimScriptFunc_RevolveBattler(BattleAnimSystem *system)
{
int v0;
UnkStruct_ov12_02228DB8 *v1 = BattleAnimUtil_Alloc(param0, sizeof(UnkStruct_ov12_02228DB8));
RevolveBattlerContext *ctx = BattleAnimUtil_Alloc(system, sizeof(RevolveBattlerContext));
BattleAnimSystem_GetCommonData(system, &ctx->common);
BattleAnimSystem_GetCommonData(param0, &v1->unk_00);
BattleAnimUtil_GetBattlerSprites(param0, BattleAnimSystem_GetScriptVar(param0, 0), &(v1->unk_1C), &v0);
int spriteCount;
BattleAnimUtil_GetBattlerSprites(system, BattleAnimSystem_GetScriptVar(system, REVOLVE_BATTLER_VAR_TARGET), &ctx->spriteInfo, &spriteCount);
v1->unk_1C.pos.y -= (-8 * FX32_ONE) >> FX32_SHIFT;
ctx->spriteInfo.pos.y -= REVOLUTION_CONTEXT_OVAL_RADIUS_Y_INT;
RevolutionContext_InitOvalRevolutions(&v1->unk_30, BattleAnimSystem_GetScriptVar(param0, 1), BattleAnimSystem_GetScriptVar(param0, 2));
RevolutionContext_InitOvalRevolutions(
&ctx->revs,
BattleAnimSystem_GetScriptVar(system, REVOLVE_BATTLER_VAR_REVS),
BattleAnimSystem_GetScriptVar(system, REVOLVE_BATTLER_VAR_FRAMES_PER_REV));
{
v1->unk_30.data[2] /= 2;
v1->unk_30.data[4] /= 2;
}
ctx->revs.data[XY_PARAM_REV_RADIUS_X] /= 2;
ctx->revs.data[XY_PARAM_REV_RADIUS_Y] /= 2;
BattleAnimSystem_StartAnimTask(v1->unk_00.battleAnimSystem, ov12_02228DB8, v1);
BattleAnimSystem_StartAnimTask(ctx->common.battleAnimSystem, BattleAnimTask_RevolveBattler, ctx);
}
static void ov12_02228E78(SysTask *param0, void *param1)