Document earthquake script func partially

This commit is contained in:
Fexty12573 2025-07-23 17:21:26 +02:00
parent ff3c2e5fc1
commit 67ee46c85f
17 changed files with 494 additions and 500 deletions

View File

@ -64,6 +64,11 @@
#define BATTLE_ANIM_ATTACKER_PARTNER (1 << 2) //< Attacker's partner
#define BATTLE_ANIM_DEFENDER (1 << 3) //< Defender
#define BATTLE_ANIM_DEFENDER_PARTNER (1 << 4) //< Defender's partner
#define BATTLE_ANIM_NOT_ATTACKER (1 << 5) //< All battlers except attacker
#define BATTLE_ANIM_ALL_BATTLERS (1 << 6) //< All battlers
#define BATTLE_ANIM_ATTACKER_SIDE (BATTLE_ANIM_ATTACKER | BATTLE_ANIM_ATTACKER_PARTNER) //< Attacker and its partner
#define BATTLE_ANIM_DEFENDER_SIDE (BATTLE_ANIM_DEFENDER | BATTLE_ANIM_DEFENDER_PARTNER) //< Defender and its partner
#define BATTLE_ANIM_BOTH_SIDES (BATTLE_ANIM_ATTACKER_SIDE | BATTLE_ANIM_DEFENDER_SIDE) //< Both sides of the battle
#define BATTLE_ANIM_MON_SPRITE_0 0
#define BATTLE_ANIM_MON_SPRITE_1 1

View File

@ -212,12 +212,4 @@ static inline void inline_0202D558(u32 param0, RTCDate *param1)
param1->week = inline_0202D558_sub4(param0);
}
static inline BOOL inline_ov12_02235998(int param0, int param1)
{
if ((param0 & param1) == param1) {
return 1;
}
return 0;
}
#endif // POKEPLATINUM_INLINES_H

View File

@ -23,6 +23,11 @@ typedef struct Vec2F32 {
f32 y;
} Vec2F32;
typedef struct Point2D {
s16 x;
s16 y;
} Point2D;
fx32 CalcSineDegrees(u16 degrees);
fx32 CalcCosineDegrees(u16 degrees);
fx32 CalcSineDegrees_Wraparound(u16 degrees);

View File

@ -16,7 +16,7 @@ void BattleAnimScriptFunc_Flash(BattleAnimSystem *param0);
void BattleAnimScriptFunc_Splash(BattleAnimSystem *param0);
void ov12_0222C0C0(BattleAnimSystem *param0);
void BattleAnimScriptFunc_Minimize(BattleAnimSystem *param0);
void ov12_0222C5FC(BattleAnimSystem *param0);
void BattleAnimScriptFunc_Earthquake(BattleAnimSystem *param0);
void ov12_0222C6D4(BattleAnimSystem *param0);
void ov12_0222C8F8(BattleAnimSystem *param0);
void ov12_0222CA2C(BattleAnimSystem *param0);

View File

@ -6,9 +6,8 @@
#include "generated/battle_script_battlers.h"
#include "overlay012/battle_anim_system.h"
#include "overlay012/struct_ov12_02235350.h"
#include "overlay012/struct_ov12_02235998.h"
#include "math_util.h"
#include "pokemon_sprite.h"
#include "sprite.h"
@ -29,13 +28,21 @@ typedef struct UnkStruct_ov12_0223595C {
PaletteData *paletteData;
} UnkStruct_ov12_0223595C;
typedef struct BattleAnimSpriteInfo {
Point2D basePos;
Point2D pos;
PokemonSprite *monSprite;
ManagedSprite *hwSprite;
int battler;
} BattleAnimSpriteInfo;
int BattleAnimUtil_GetBattlerType(BattleAnimSystem *param0, int param1);
enum Battler BattleAnimUtil_GetBattlerSide(BattleAnimSystem *param0, int param1);
int BattleAnimUtil_GetBattlerOfType(BattleAnimSystem *param0, int param1);
int BattleAnimUtil_GetAlliedBattlerType(BattleAnimSystem *param0, int param1);
int BattleAnimUtil_GetAlliedBattler(BattleAnimSystem *param0, int param1);
int BattleAnimUtil_GetOpposingBattlerType(int param0);
void ov12_02235350(int param0, int param1, UnkStruct_ov12_02235350 *param2);
void ov12_022353AC(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235350 *param2);
void ov12_02235350(int param0, int param1, Point2D *param2);
void ov12_022353AC(BattleAnimSystem *param0, int param1, Point2D *param2);
void ov12_02235448(int param0, VecFx32 *param1, int param2, int param3);
void ov12_02235458(int param0, VecFx32 *param1, int param2, int param3);
void ov12_02235468(int param0, VecFx32 *param1, int param2, int param3);
@ -67,12 +74,21 @@ void BattleAnimUtil_SetSpriteBgBlending(BattleAnimSystem *param0, int param1, in
void BattleAnimUtil_SetSpriteBlending(BattleAnimSystem *param0, int param1, int param2, int param3);
void BattleAnimUtil_SetEffectBaseBgBlending(BattleAnimSystem *param0, int param1, int param2);
void ov12_02235838(BattleAnimSystem *param0, int param1, BOOL param2);
void ov12_02235918(PokemonSprite *param0, UnkStruct_ov12_02235350 *param1);
void ov12_02235950(ManagedSprite *param0, UnkStruct_ov12_02235350 *param1);
void BattleAnimUtil_GetMonSpritePos(PokemonSprite *param0, Point2D *param1);
void BattleAnimUtil_GetSpritePos(ManagedSprite *param0, Point2D *param1);
void ov12_0223595C(BattleAnimSystem *param0, UnkStruct_ov12_0223595C *param1);
void ov12_02235998(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235998 *param2, int *param3);
void ov12_02235D74(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235998 *param2, int *param3);
void BattleAnimUtil_GetBattlerSprites(BattleAnimSystem *param0, int param1, BattleAnimSpriteInfo *param2, int *param3);
void ov12_02235D74(BattleAnimSystem *param0, int param1, BattleAnimSpriteInfo *param2, int *param3);
void *BattleAnimUtil_Alloc(BattleAnimSystem *param0, int param1);
void ov12_02235E80(void *param0);
static inline BOOL BattleAnimUtil_IsMaskSet(int value, int mask)
{
if ((value & mask) == mask) {
return TRUE;
}
return FALSE;
}
#endif // POKEPLATINUM_OV12_02235254_H

View File

@ -1,9 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV12_02235350_H
#define POKEPLATINUM_STRUCT_OV12_02235350_H
typedef struct {
s16 unk_00;
s16 unk_02;
} UnkStruct_ov12_02235350;
#endif // POKEPLATINUM_STRUCT_OV12_02235350_H

View File

@ -1,17 +1,16 @@
#ifndef POKEPLATINUM_STRUCT_OV12_02235998_H
#define POKEPLATINUM_STRUCT_OV12_02235998_H
#include "overlay012/struct_ov12_02235350.h"
#include "math_util.h"
#include "pokemon_sprite.h"
#include "sprite.h"
typedef struct {
UnkStruct_ov12_02235350 unk_00;
UnkStruct_ov12_02235350 unk_04;
PokemonSprite *unk_08;
ManagedSprite *unk_0C;
int unk_10;
} UnkStruct_ov12_02235998;
typedef struct BattleAnimSpriteInfo {
Point2D basePos;
Point2D pos;
PokemonSprite *monSprite;
ManagedSprite *hwSprite;
int battler;
} BattleAnimSpriteInfo;
#endif // POKEPLATINUM_STRUCT_OV12_02235998_H

View File

@ -1634,10 +1634,10 @@ static int BattleAnimSystem_GetBattlerOfType(BattleAnimSystem *system, enum Batt
result = system->context->defender;
break;
case BATTLER_TYPE_ATTACKER_PARTNER:
result = BattleAnimUtil_GetAlliedBattlerType(system, system->context->attacker);
result = BattleAnimUtil_GetAlliedBattler(system, system->context->attacker);
break;
case BATTLER_TYPE_DEFENDER_PARTNER:
result = BattleAnimUtil_GetAlliedBattlerType(system, system->context->defender);
result = BattleAnimUtil_GetAlliedBattler(system, system->context->defender);
break;
case BATTLER_TYPE_PLAYER_SLOT_1: {

View File

@ -607,7 +607,7 @@ static void ov12_02224E74(SPLEmitter *param0, UnkStruct_ov12_02225640 *param1)
for (v1 = 0; v1 < v0; v1++) {
v2 = ov12_022255EC(v1);
if (inline_ov12_02235998(param1->unk_0C[4], v2) == 0) {
if (BattleAnimUtil_IsMaskSet(param1->unk_0C[4], v2) == 0) {
continue;
}

View File

@ -14,6 +14,7 @@
#include "buffer_manager.h"
#include "heap.h"
#include "inlines.h"
#include "math_util.h"
#include "palette.h"
#include "pltt_transfer.h"
#include "pokemon_sprite.h"
@ -24,11 +25,6 @@
#define MAX_CYCLES_PER_SHAKE 4
typedef struct BattleAnimPosition {
s16 x;
s16 y;
} BattleAnimPosition;
typedef struct UnkStruct_ov12_022267D4_t {
BOOL unk_00;
SysTask *unk_04;
@ -47,7 +43,7 @@ typedef struct UnkStruct_ov12_022267D4_t {
static void ov12_022268DC(u16 *param0, u16 param1);
static const BattleAnimPosition sBattleAnimBattlerPositions[][6] = {
static const Point2D sBattleAnimBattlerPositions[][6] = {
// Single Battle
{
[BATTLER_TYPE_SOLO_PLAYER] = { 64, 112 },

View File

@ -41,7 +41,7 @@ static const BattleAnimScriptFunc sBattleAnimScriptFuncs[] = {
ov12_0222C0C0,
BattleAnimScriptFunc_Minimize,
BattleAnimScriptFunc_FaintAttack,
ov12_0222C5FC,
BattleAnimScriptFunc_Earthquake,
ov12_02231E7C,
ov12_0222C6D4,
ov12_0222C8F8,

View File

@ -11,8 +11,7 @@
#include "overlay012/ov12_02235254.h"
#include "overlay012/struct_ov12_022267D4_decl.h"
#include "overlay012/struct_ov12_0222C7E0_sub1.h"
#include "overlay012/struct_ov12_02235350.h"
#include "overlay012/struct_ov12_02235998.h"
#include "math_util.h"
#include "bg_window.h"
#include "graphics.h"
@ -32,7 +31,7 @@ typedef struct {
int unk_00;
UnkStruct_ov12_0223595C unk_04;
UnkStruct_ov12_0222C7E0_sub1 unk_20;
UnkStruct_ov12_02235998 unk_2C[4];
BattleAnimSpriteInfo unk_2C[4];
XYTransformContext unk_7C;
} UnkStruct_ov12_02226BA0;
@ -50,7 +49,7 @@ typedef struct {
u16 unk_18;
UnkStruct_ov12_0223595C unk_1C;
UnkStruct_ov12_0222C7E0_sub1 unk_38;
UnkStruct_ov12_02235998 unk_44[4];
BattleAnimSpriteInfo unk_44[4];
XYTransformContext unk_94;
} UnkStruct_ov12_02226D38;
@ -156,7 +155,7 @@ typedef struct {
int unk_00;
int unk_04;
int unk_08;
UnkStruct_ov12_02235998 unk_0C;
BattleAnimSpriteInfo unk_0C;
UnkStruct_ov12_0223595C unk_20;
BattleAnimSystem *unk_3C;
} UnkStruct_ov12_02228268;
@ -175,7 +174,7 @@ typedef struct {
u16 unk_18;
UnkStruct_ov12_0223595C unk_1C;
UnkStruct_ov12_0222C7E0_sub1 unk_38;
UnkStruct_ov12_02235998 unk_44[4];
BattleAnimSpriteInfo unk_44[4];
XYTransformContext unk_94;
} UnkStruct_ov12_02227064;
@ -184,7 +183,7 @@ typedef struct {
int unk_04;
int unk_08;
s16 unk_0C;
UnkStruct_ov12_02235998 unk_10;
BattleAnimSpriteInfo unk_10;
UnkStruct_ov12_0223595C unk_24;
XYTransformContext unk_40;
BattleAnimSystem *unk_64;
@ -194,7 +193,7 @@ typedef struct {
int unk_00;
int unk_04;
int unk_08;
UnkStruct_ov12_02235998 unk_0C;
BattleAnimSpriteInfo unk_0C;
UnkStruct_ov12_0223595C unk_20;
XYTransformContext unk_3C;
BattleAnimSystem *unk_60;
@ -243,7 +242,7 @@ typedef struct {
int unk_00;
int unk_04;
int unk_08;
UnkStruct_ov12_02235998 unk_0C;
BattleAnimSpriteInfo unk_0C;
UnkStruct_ov12_0223595C unk_20;
XYTransformContext unk_3C;
BattleAnimSystem *unk_60;
@ -253,27 +252,27 @@ typedef struct {
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
XYTransformContext unk_30;
} UnkStruct_ov12_02228DB8;
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
XYTransformContext unk_30;
UnkStruct_ov12_02235350 unk_54;
UnkStruct_ov12_02235350 unk_58;
Point2D unk_54;
Point2D unk_58;
} UnkStruct_ov12_02228E78;
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
UnkStruct_ov12_022267D4 *unk_30;
} UnkStruct_ov12_02229184;
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
int unk_30;
int unk_34;
int unk_38;
@ -292,7 +291,7 @@ typedef struct {
s16 unk_1C;
int unk_20;
int unk_24;
UnkStruct_ov12_02235998 unk_28;
BattleAnimSpriteInfo unk_28;
int unk_3C;
int unk_40;
int unk_44;
@ -317,8 +316,8 @@ typedef struct {
BgConfig *unk_28;
BattleAnimSystem *unk_2C;
SpriteManager *unk_30;
UnkStruct_ov12_02235998 unk_34[4];
UnkStruct_ov12_02235998 unk_84[4];
BattleAnimSpriteInfo unk_34[4];
BattleAnimSpriteInfo unk_84[4];
XYTransformContext unk_D4;
} UnkStruct_ov12_02229738;
@ -336,7 +335,7 @@ typedef struct {
s16 unk_04;
s16 unk_06;
int unk_08;
UnkStruct_ov12_02235350 unk_0C;
Point2D unk_0C;
int unk_10;
int unk_14;
int unk_18;
@ -349,7 +348,7 @@ typedef struct {
ParticleSystem *unk_34;
SPLEmitter *unk_38;
UnkStruct_ov12_0223595C unk_3C;
UnkStruct_ov12_02235998 unk_58[4];
BattleAnimSpriteInfo unk_58[4];
XYTransformContext unk_A8[2];
ValueLerpContext unk_F0;
} UnkStruct_ov12_02229980;
@ -451,29 +450,29 @@ static void ov12_02226BA0(SysTask *param0, void *param1)
if (ShakeContext_Update(&v1->unk_7C) == 0) {
v1->unk_04.unk_00++;
} else {
if (inline_ov12_02235998(v1->unk_20.unk_08, 0x100) == 1) {
if (BattleAnimUtil_IsMaskSet(v1->unk_20.unk_08, 0x100) == 1) {
for (v0 = 0; v0 < v1->unk_00; v0++) {
if (v1->unk_2C[v0].unk_08 == NULL) {
if (v1->unk_2C[v0].monSprite == NULL) {
continue;
}
PokemonSprite_SetAttribute(v1->unk_2C[v0].unk_08, MON_SPRITE_X_CENTER, v1->unk_2C[v0].unk_04.unk_00 + v1->unk_7C.x);
PokemonSprite_SetAttribute(v1->unk_2C[v0].unk_08, MON_SPRITE_Y_CENTER, v1->unk_2C[v0].unk_04.unk_02 + v1->unk_7C.y);
PokemonSprite_SetAttribute(v1->unk_2C[v0].monSprite, MON_SPRITE_X_CENTER, v1->unk_2C[v0].pos.x + v1->unk_7C.x);
PokemonSprite_SetAttribute(v1->unk_2C[v0].monSprite, MON_SPRITE_Y_CENTER, v1->unk_2C[v0].pos.y + v1->unk_7C.y);
}
} else if (inline_ov12_02235998(v1->unk_20.unk_08, 0x200) == 1) {
} else if (BattleAnimUtil_IsMaskSet(v1->unk_20.unk_08, 0x200) == 1) {
for (v0 = 0; v0 < v1->unk_00; v0++) {
if (v1->unk_2C[v0].unk_0C == NULL) {
if (v1->unk_2C[v0].hwSprite == NULL) {
continue;
}
ManagedSprite_SetPositionXY(v1->unk_2C[v0].unk_0C, v1->unk_2C[v0].unk_04.unk_00 + v1->unk_7C.x, v1->unk_2C[v0].unk_04.unk_02 + v1->unk_7C.y);
ManagedSprite_TickFrame(v1->unk_2C[v0].unk_0C);
ManagedSprite_SetPositionXY(v1->unk_2C[v0].hwSprite, v1->unk_2C[v0].pos.x + v1->unk_7C.x, v1->unk_2C[v0].pos.y + v1->unk_7C.y);
ManagedSprite_TickFrame(v1->unk_2C[v0].hwSprite);
}
SpriteSystem_DrawSprites(v1->unk_04.pokemonSpriteManager);
}
if (inline_ov12_02235998(v1->unk_20.unk_08, 0x400) == 1) {
if (BattleAnimUtil_IsMaskSet(v1->unk_20.unk_08, 0x400) == 1) {
Bg_SetOffset(v1->unk_04.bgConfig, 3, 0, v1->unk_7C.x);
}
}
@ -498,9 +497,9 @@ void ov12_02226CB0(BattleAnimSystem *param0)
v0->unk_20.unk_06 = BattleAnimSystem_GetScriptVar(param0, 3);
v0->unk_20.unk_08 = BattleAnimSystem_GetScriptVar(param0, 4);
if (inline_ov12_02235998(v0->unk_20.unk_08, 0x100) == 1) {
ov12_02235998(param0, v0->unk_20.unk_08, &(v0->unk_2C[0]), &v0->unk_00);
} else if (inline_ov12_02235998(v0->unk_20.unk_08, 0x200) == 1) {
if (BattleAnimUtil_IsMaskSet(v0->unk_20.unk_08, 0x100) == 1) {
BattleAnimUtil_GetBattlerSprites(param0, v0->unk_20.unk_08, &(v0->unk_2C[0]), &v0->unk_00);
} else if (BattleAnimUtil_IsMaskSet(v0->unk_20.unk_08, 0x200) == 1) {
ov12_02235D74(param0, v0->unk_20.unk_08, &(v0->unk_2C[0]), &v0->unk_00);
}
@ -922,14 +921,14 @@ void BattleAnimScriptFunc_Submission(BattleAnimSystem *system)
ctx->rev.data[XY_PARAM_REV_RADIUS_X] *= -1;
break;
case BATTLE_ANIM_ATTACKER_PARTNER:
ctx->sprite = BattleAnimSystem_GetBattlerSprite(ctx->battleAnimSys, BattleAnimUtil_GetAlliedBattlerType(ctx->battleAnimSys, BattleAnimSystem_GetAttacker(ctx->battleAnimSys)));
ctx->sprite = BattleAnimSystem_GetBattlerSprite(ctx->battleAnimSys, BattleAnimUtil_GetAlliedBattler(ctx->battleAnimSys, BattleAnimSystem_GetAttacker(ctx->battleAnimSys)));
ctx->rev.data[XY_PARAM_REV_RADIUS_X] *= -1;
break;
case BATTLE_ANIM_DEFENDER:
ctx->sprite = BattleAnimSystem_GetBattlerSprite(ctx->battleAnimSys, BattleAnimSystem_GetDefender(system));
break;
case BATTLE_ANIM_DEFENDER_PARTNER:
ctx->sprite = BattleAnimSystem_GetBattlerSprite(ctx->battleAnimSys, BattleAnimUtil_GetAlliedBattlerType(ctx->battleAnimSys, BattleAnimSystem_GetDefender(ctx->battleAnimSys)));
ctx->sprite = BattleAnimSystem_GetBattlerSprite(ctx->battleAnimSys, BattleAnimUtil_GetAlliedBattler(ctx->battleAnimSys, BattleAnimSystem_GetDefender(ctx->battleAnimSys)));
break;
default:
GF_ASSERT(FALSE);
@ -1146,7 +1145,7 @@ void ov12_0222797C(BattleAnimSystem *param0)
break;
case 0x4:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v0->unk_04 = BattleAnimSystem_GetBattlerSprite(v0->unk_00, BattleAnimUtil_GetAlliedBattlerType(v0->unk_00, BattleAnimSystem_GetAttacker(v0->unk_00)));
v0->unk_04 = BattleAnimSystem_GetBattlerSprite(v0->unk_00, BattleAnimUtil_GetAlliedBattler(v0->unk_00, BattleAnimSystem_GetAttacker(v0->unk_00)));
}
break;
case 0x8:
@ -1154,7 +1153,7 @@ void ov12_0222797C(BattleAnimSystem *param0)
break;
case 0x10:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v0->unk_04 = BattleAnimSystem_GetBattlerSprite(v0->unk_00, BattleAnimUtil_GetAlliedBattlerType(v0->unk_00, BattleAnimSystem_GetDefender(v0->unk_00)));
v0->unk_04 = BattleAnimSystem_GetBattlerSprite(v0->unk_00, BattleAnimUtil_GetAlliedBattler(v0->unk_00, BattleAnimSystem_GetDefender(v0->unk_00)));
}
break;
case (0x2 | 0x800): {
@ -1432,7 +1431,7 @@ static void ov12_02227DE0(SysTask *param0, void *param1)
void ov12_02227F30(BattleAnimSystem *param0)
{
UnkStruct_ov12_02227DE0 *v0;
UnkStruct_ov12_02235998 v1[4];
BattleAnimSpriteInfo v1[4];
SysTask *v2;
int v3;
int v4;
@ -1444,14 +1443,14 @@ void ov12_02227F30(BattleAnimSystem *param0)
case 0x2 | 0x100:
case 0x4 | 0x100:
v0->unk_0A = BattleAnimSystem_GetBattlerSpriteHeight(v0->unk_00, BattleAnimSystem_GetAttacker(v0->unk_00));
ov12_02235998(v0->unk_00, BattleAnimSystem_GetScriptVar(param0, 0), v1, &v3);
v0->unk_0C = v1[0].unk_08;
BattleAnimUtil_GetBattlerSprites(v0->unk_00, BattleAnimSystem_GetScriptVar(param0, 0), v1, &v3);
v0->unk_0C = v1[0].monSprite;
break;
case 0x8 | 0x100:
case 0x10 | 0x100:
v0->unk_0A = BattleAnimSystem_GetBattlerSpriteHeight(v0->unk_00, BattleAnimSystem_GetDefender(v0->unk_00));
ov12_02235998(v0->unk_00, BattleAnimSystem_GetScriptVar(param0, 0), v1, &v3);
v0->unk_0C = v1[0].unk_08;
BattleAnimUtil_GetBattlerSprites(v0->unk_00, BattleAnimSystem_GetScriptVar(param0, 0), v1, &v3);
v0->unk_0C = v1[0].monSprite;
break;
case (0x2 | 0x800): {
int v5;
@ -1606,19 +1605,19 @@ void ov12_02228168(BattleAnimSystem *param0)
void ov12_02228214(BattleAnimSystem *param0)
{
UnkStruct_ov12_02235998 v0;
BattleAnimSpriteInfo v0;
int v1;
int v2;
int v3 = BattleAnimSystem_GetScriptVar(param0, 1);
ov12_02235998(param0, BattleAnimSystem_GetScriptVar(param0, 0), &v0, &v1);
BattleAnimUtil_GetBattlerSprites(param0, BattleAnimSystem_GetScriptVar(param0, 0), &v0, &v1);
for (v2 = 0; v2 < v1; v2++) {
if ((BattleAnimSystem_IsBattlerSemiInvulnerable(param0, v0.unk_10) == 1) && (v3 == 0)) {
if ((BattleAnimSystem_IsBattlerSemiInvulnerable(param0, v0.battler) == 1) && (v3 == 0)) {
continue;
}
PokemonSprite_SetAttribute(v0.unk_08, MON_SPRITE_HIDE, v3);
PokemonSprite_SetAttribute(v0.monSprite, MON_SPRITE_HIDE, v3);
}
}
@ -1628,14 +1627,14 @@ static void ov12_02228268(SysTask *param0, void *param1)
if (v0->unk_04 >= v0->unk_08) {
if (v0->unk_00 == 0) {
PokemonSprite_SetAttribute(v0->unk_0C.unk_08, MON_SPRITE_HIDE, 0);
PokemonSprite_SetAttribute(v0->unk_0C.monSprite, MON_SPRITE_HIDE, 0);
Heap_Free(v0);
BattleAnimSystem_EndAnimTask(v0->unk_3C, param0);
} else {
int v1;
v1 = PokemonSprite_GetAttribute(v0->unk_0C.unk_08, MON_SPRITE_HIDE);
PokemonSprite_SetAttribute(v0->unk_0C.unk_08, MON_SPRITE_HIDE, v1 ^ 1);
v1 = PokemonSprite_GetAttribute(v0->unk_0C.monSprite, MON_SPRITE_HIDE);
PokemonSprite_SetAttribute(v0->unk_0C.monSprite, MON_SPRITE_HIDE, v1 ^ 1);
v0->unk_00--;
v0->unk_04 = 0;
}
@ -1653,7 +1652,7 @@ void ov12_022282BC(BattleAnimSystem *param0)
v0->unk_08 = BattleAnimSystem_GetScriptVar(param0, 1);
ov12_0223595C(param0, &v0->unk_20);
v0->unk_0C.unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetAttacker(param0));
v0->unk_0C.monSprite = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetAttacker(param0));
BattleAnimSystem_StartAnimTask(v0->unk_3C, ov12_02228268, v0);
}
@ -1663,7 +1662,7 @@ static void ov12_0222830C(SysTask *param0, void *param1)
switch (v0->unk_24.unk_00) {
case 0:
PosLerpContext_Init(&v0->unk_40, v0->unk_10.unk_04.unk_00, v0->unk_10.unk_04.unk_00 + v0->unk_0C, v0->unk_10.unk_04.unk_02, v0->unk_10.unk_04.unk_02, v0->unk_08);
PosLerpContext_Init(&v0->unk_40, v0->unk_10.pos.x, v0->unk_10.pos.x + v0->unk_0C, v0->unk_10.pos.y, v0->unk_10.pos.y, v0->unk_08);
v0->unk_24.unk_00++;
break;
case 1:
@ -1671,7 +1670,7 @@ static void ov12_0222830C(SysTask *param0, void *param1)
v0->unk_24.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_10.unk_08, MON_SPRITE_X_CENTER, v0->unk_40.x);
PokemonSprite_SetAttribute(v0->unk_10.monSprite, MON_SPRITE_X_CENTER, v0->unk_40.x);
break;
default:
BattleAnimSystem_EndAnimTask(v0->unk_64, param0);
@ -1700,7 +1699,7 @@ void ov12_02228394(BattleAnimSystem *param0)
break;
case 0x4 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
}
break;
case 0x8 | 0x100:
@ -1708,7 +1707,7 @@ void ov12_02228394(BattleAnimSystem *param0)
break;
case 0x10 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
}
break;
default:
@ -1722,9 +1721,9 @@ void ov12_02228394(BattleAnimSystem *param0)
}
ov12_0223595C(param0, &v3->unk_24);
v3->unk_10.unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v2);
v3->unk_10.monSprite = BattleAnimSystem_GetBattlerSprite(param0, v2);
ov12_02235918(v3->unk_10.unk_08, &v3->unk_10.unk_04);
BattleAnimUtil_GetMonSpritePos(v3->unk_10.monSprite, &v3->unk_10.pos);
v0 = BattleAnimUtil_GetTransformDirection(param0, v2);
if (v0 > 0) {
@ -1742,19 +1741,19 @@ static void ov12_02228488(SysTask *param0, void *param1)
switch (v0->unk_20.unk_00) {
case 0:
if (v0->unk_0C.unk_08 == NULL) {
if (v0->unk_0C.monSprite == NULL) {
v0->unk_20.unk_00 = 0xff;
break;
}
PosLerpContext_Init(&v0->unk_3C, v0->unk_0C.unk_04.unk_00, v0->unk_0C.unk_04.unk_00 + v0->unk_64, v0->unk_0C.unk_04.unk_02, v0->unk_0C.unk_04.unk_02, v0->unk_08);
PosLerpContext_Init(&v0->unk_3C, v0->unk_0C.pos.x, v0->unk_0C.pos.x + v0->unk_64, v0->unk_0C.pos.y, v0->unk_0C.pos.y, v0->unk_08);
v0->unk_20.unk_00++;
case 1:
if (PosLerpContext_Update(&v0->unk_3C) == 0) {
v0->unk_20.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_0C.unk_08, MON_SPRITE_X_CENTER, v0->unk_3C.x);
PokemonSprite_SetAttribute(v0->unk_0C.monSprite, MON_SPRITE_X_CENTER, v0->unk_3C.x);
break;
default:
BattleAnimSystem_EndAnimTask(v0->unk_60, param0);
@ -1784,7 +1783,7 @@ void ov12_02228520(BattleAnimSystem *param0)
break;
case 0x4 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
}
break;
case 0x8 | 0x100:
@ -1792,7 +1791,7 @@ void ov12_02228520(BattleAnimSystem *param0)
break;
case 0x10 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
}
break;
default:
@ -1805,8 +1804,8 @@ void ov12_02228520(BattleAnimSystem *param0)
return;
}
v3->unk_0C.unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v2);
ov12_02235918(v3->unk_0C.unk_08, &v3->unk_0C.unk_04);
v3->unk_0C.monSprite = BattleAnimSystem_GetBattlerSprite(param0, v2);
BattleAnimUtil_GetMonSpritePos(v3->unk_0C.monSprite, &v3->unk_0C.pos);
v0 = BattleAnimUtil_GetTransformDirection(param0, v2);
if (v0 > 0) {
@ -2066,15 +2065,15 @@ static void ov12_02228BD0(SysTask *param0, void *param1)
switch (v0->unk_20.unk_00) {
case 0:
PosLerpContext_Init(&v0->unk_3C, v0->unk_0C.unk_04.unk_00, v0->unk_0C.unk_04.unk_00 + v0->unk_64, v0->unk_0C.unk_04.unk_02, v0->unk_0C.unk_04.unk_02 + v0->unk_66, v0->unk_08);
PosLerpContext_Init(&v0->unk_3C, v0->unk_0C.pos.x, v0->unk_0C.pos.x + v0->unk_64, v0->unk_0C.pos.y, v0->unk_0C.pos.y + v0->unk_66, v0->unk_08);
v0->unk_20.unk_00++;
case 1:
if (PosLerpContext_Update(&v0->unk_3C) == 0) {
v0->unk_20.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_0C.unk_08, MON_SPRITE_X_CENTER, v0->unk_3C.x);
PokemonSprite_SetAttribute(v0->unk_0C.unk_08, MON_SPRITE_Y_CENTER, v0->unk_3C.y);
PokemonSprite_SetAttribute(v0->unk_0C.monSprite, MON_SPRITE_X_CENTER, v0->unk_3C.x);
PokemonSprite_SetAttribute(v0->unk_0C.monSprite, MON_SPRITE_Y_CENTER, v0->unk_3C.y);
break;
default:
BattleAnimSystem_EndAnimTask(v0->unk_60, param0);
@ -2105,7 +2104,7 @@ void ov12_02228C6C(BattleAnimSystem *param0)
break;
case 0x4 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
}
break;
case 0x8 | 0x100:
@ -2113,7 +2112,7 @@ void ov12_02228C6C(BattleAnimSystem *param0)
break;
case 0x10 | 0x100:
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
}
break;
default:
@ -2126,14 +2125,14 @@ void ov12_02228C6C(BattleAnimSystem *param0)
return;
}
v3->unk_0C.unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v2);
v3->unk_0C.monSprite = BattleAnimSystem_GetBattlerSprite(param0, v2);
if (v3->unk_0C.unk_08 == NULL) {
if (v3->unk_0C.monSprite == NULL) {
Heap_Free(v3);
return;
}
ov12_02235918(v3->unk_0C.unk_08, &v3->unk_0C.unk_04);
BattleAnimUtil_GetMonSpritePos(v3->unk_0C.monSprite, &v3->unk_0C.pos);
v0 = BattleAnimUtil_GetTransformDirection(param0, v2);
if (v0 > 0) {
@ -2161,11 +2160,11 @@ static void ov12_02228DB8(SysTask *param0, void *param1)
int v0;
UnkStruct_ov12_02228DB8 *v1 = (UnkStruct_ov12_02228DB8 *)param1;
v0 = RevolutionContext_UpdateAndApplyToMon(&v1->unk_30, v1->unk_1C.unk_04.unk_00, v1->unk_1C.unk_04.unk_02, v1->unk_1C.unk_08);
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.unk_08, MON_SPRITE_X_CENTER, v1->unk_1C.unk_04.unk_00);
PokemonSprite_SetAttribute(v1->unk_1C.unk_08, MON_SPRITE_Y_CENTER, v1->unk_1C.unk_04.unk_02 + ((-8 * FX32_ONE) >> FX32_SHIFT));
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);
}
@ -2177,9 +2176,9 @@ void ov12_02228E00(BattleAnimSystem *param0)
UnkStruct_ov12_02228DB8 *v1 = BattleAnimUtil_Alloc(param0, sizeof(UnkStruct_ov12_02228DB8));
ov12_0223595C(param0, &v1->unk_00);
ov12_02235998(param0, BattleAnimSystem_GetScriptVar(param0, 0), &(v1->unk_1C), &v0);
BattleAnimUtil_GetBattlerSprites(param0, BattleAnimSystem_GetScriptVar(param0, 0), &(v1->unk_1C), &v0);
v1->unk_1C.unk_04.unk_02 -= (-8 * FX32_ONE) >> FX32_SHIFT;
v1->unk_1C.pos.y -= (-8 * FX32_ONE) >> FX32_SHIFT;
RevolutionContext_InitOvalRevolutions(&v1->unk_30, BattleAnimSystem_GetScriptVar(param0, 1), BattleAnimSystem_GetScriptVar(param0, 2));
@ -2201,8 +2200,8 @@ static void ov12_02228E78(SysTask *param0, void *param1)
v0->unk_00.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_X_CENTER, v0->unk_30.x);
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER, v0->unk_30.y);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_X_CENTER, v0->unk_30.x);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER, v0->unk_30.y);
break;
default:
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
@ -2213,7 +2212,7 @@ static void ov12_02228E78(SysTask *param0, void *param1)
void ov12_02228EC0(BattleAnimSystem *param0)
{
UnkStruct_ov12_02235350 v0;
Point2D v0;
int v1;
int v2;
int v3;
@ -2230,13 +2229,13 @@ void ov12_02228EC0(BattleAnimSystem *param0)
v2 = BattleAnimSystem_GetAttacker(param0);
break;
case 0x4:
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
break;
case 0x8:
v2 = BattleAnimSystem_GetDefender(param0);
break;
case 0x10:
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
break;
default:
GF_ASSERT(0);
@ -2244,24 +2243,24 @@ void ov12_02228EC0(BattleAnimSystem *param0)
}
ov12_022353AC(param0, v2, &v5->unk_54);
ov12_02235998(param0, v1, &(v5->unk_1C), &v3);
BattleAnimUtil_GetBattlerSprites(param0, v1, &(v5->unk_1C), &v3);
v5->unk_58.unk_00 = 0;
v5->unk_58.unk_02 = 0;
v5->unk_58.x = 0;
v5->unk_58.y = 0;
if (BattleAnimUtil_GetBattlerSide(v5->unk_00.battleAnimSystem, v2) == 0x3) {
v5->unk_58.unk_00 = (0 - 80);
v5->unk_58.x = (0 - 80);
} else {
v5->unk_58.unk_00 = (256 + 80);
v5->unk_58.x = (256 + 80);
}
PosLerpContext_Init(&v5->unk_30, v5->unk_1C.unk_04.unk_00, v5->unk_58.unk_00, v5->unk_1C.unk_04.unk_02, v5->unk_1C.unk_04.unk_02, v4);
PosLerpContext_Init(&v5->unk_30, v5->unk_1C.pos.x, v5->unk_58.x, v5->unk_1C.pos.y, v5->unk_1C.pos.y, v4);
BattleAnimSystem_StartAnimTask(v5->unk_00.battleAnimSystem, ov12_02228E78, v5);
}
void ov12_02228FB4(BattleAnimSystem *param0)
{
UnkStruct_ov12_02235350 v0;
Point2D v0;
int v1;
int v2;
int v3;
@ -2280,13 +2279,13 @@ void ov12_02228FB4(BattleAnimSystem *param0)
v2 = BattleAnimSystem_GetAttacker(param0);
break;
case 0x4:
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
break;
case 0x8:
v2 = BattleAnimSystem_GetDefender(param0);
break;
case 0x10:
v2 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v2 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
break;
default:
GF_ASSERT(0);
@ -2294,24 +2293,24 @@ void ov12_02228FB4(BattleAnimSystem *param0)
}
ov12_022353AC(param0, v2, &v6->unk_54);
ov12_02235998(param0, v5, &(v6->unk_1C), &v3);
BattleAnimUtil_GetBattlerSprites(param0, v5, &(v6->unk_1C), &v3);
v6->unk_58.unk_00 = 0;
v6->unk_58.unk_02 = 0;
v6->unk_58.x = 0;
v6->unk_58.y = 0;
if (BattleAnimUtil_GetBattlerSide(v6->unk_00.battleAnimSystem, v2) == 0x3) {
v6->unk_58.unk_00 = (0 - 80);
v6->unk_58.x = (0 - 80);
} else {
v6->unk_58.unk_00 = (256 + 80);
v6->unk_58.x = (256 + 80);
}
if (v1 == 0) {
PosLerpContext_Init(&v6->unk_30, v6->unk_1C.unk_04.unk_00, v6->unk_58.unk_00, v6->unk_1C.unk_04.unk_02, v6->unk_1C.unk_04.unk_02, v4);
PosLerpContext_Init(&v6->unk_30, v6->unk_1C.pos.x, v6->unk_58.x, v6->unk_1C.pos.y, v6->unk_1C.pos.y, v4);
} else {
s16 v7;
v7 = BattleAnimUtil_GetBattlerPos(param0, v2, 0);
PosLerpContext_Init(&v6->unk_30, v6->unk_58.unk_00, v7, v6->unk_1C.unk_04.unk_02, v6->unk_1C.unk_04.unk_02, v4);
PosLerpContext_Init(&v6->unk_30, v6->unk_58.x, v7, v6->unk_1C.pos.y, v6->unk_1C.pos.y, v4);
}
BattleAnimSystem_StartAnimTask(v6->unk_00.battleAnimSystem, ov12_02228E78, v6);
@ -2322,8 +2321,8 @@ void ov12_022290DC(BattleAnimSystem *param0)
int v0;
int v1;
int v2;
UnkStruct_ov12_02235350 v3;
UnkStruct_ov12_02235998 v4;
Point2D v3;
BattleAnimSpriteInfo v4;
v0 = BattleAnimSystem_GetScriptVar(param0, 0);
@ -2332,13 +2331,13 @@ void ov12_022290DC(BattleAnimSystem *param0)
v1 = BattleAnimSystem_GetAttacker(param0);
break;
case 0x4:
v1 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v1 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
break;
case 0x8:
v1 = BattleAnimSystem_GetDefender(param0);
break;
case 0x10:
v1 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v1 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
break;
default:
GF_ASSERT(0);
@ -2346,13 +2345,13 @@ void ov12_022290DC(BattleAnimSystem *param0)
}
ov12_022353AC(param0, v1, &v3);
ov12_02235998(param0, v0, &v4, &v2);
BattleAnimUtil_GetBattlerSprites(param0, v0, &v4, &v2);
{
s16 v5 = BattleAnimSystem_GetBattlerSpriteHeight(param0, v1);
PokemonSprite_SetAttribute(v4.unk_08, MON_SPRITE_X_CENTER, v3.unk_00);
PokemonSprite_SetAttribute(v4.unk_08, MON_SPRITE_Y_CENTER, v3.unk_02 + v5);
PokemonSprite_SetAttribute(v4.monSprite, MON_SPRITE_X_CENTER, v3.x);
PokemonSprite_SetAttribute(v4.monSprite, MON_SPRITE_Y_CENTER, v3.y + v5);
}
}
@ -2385,7 +2384,7 @@ void ov12_022291AC(BattleAnimSystem *param0)
ov12_02235D74(param0, v3, &(v1->unk_1C), &v0);
v2 = PlttTransfer_GetPlttOffset(Sprite_GetPaletteProxy(v1->unk_1C.unk_0C->sprite), NNS_G2D_VRAM_TYPE_2DMAIN);
v2 = PlttTransfer_GetPlttOffset(Sprite_GetPaletteProxy(v1->unk_1C.hwSprite->sprite), NNS_G2D_VRAM_TYPE_2DMAIN);
v1->unk_30 = ov12_02226870(v1->unk_00.paletteData, BattleAnimSystem_GetHeapID(param0), 2, v2 * 16, 16, v4, v5, v6, v7, v8, 1100);
}
@ -2422,14 +2421,14 @@ static void ov12_02229278(SysTask *param0, void *param1)
}
}
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_DRAW_HEIGHT, v0->unk_54);
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER, v0->unk_50);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_DRAW_HEIGHT, v0->unk_54);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER, v0->unk_50);
v0->unk_50 -= v0->unk_42;
v0->unk_54 += v0->unk_42;
} break;
default:
ov12_02226B84(v0->unk_1C.unk_08);
ov12_02226B84(v0->unk_1C.monSprite);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
Heap_Free(v0);
break;
@ -2447,20 +2446,20 @@ void ov12_02229304(BattleAnimSystem *param0)
int v2;
int v3;
ov12_02235998(param0, v1, &(v0->unk_1C), &v2);
BattleAnimUtil_GetBattlerSprites(param0, v1, &(v0->unk_1C), &v2);
switch (v1) {
case 0x2:
v3 = BattleAnimSystem_GetAttacker(param0);
break;
case 0x4:
v3 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v3 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
break;
case 0x8:
v3 = BattleAnimSystem_GetDefender(param0);
break;
case 0x10:
v3 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v3 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
break;
default:
GF_ASSERT(0);
@ -2470,14 +2469,14 @@ void ov12_02229304(BattleAnimSystem *param0)
v0->unk_48 = BattleAnimSystem_GetScriptVar(param0, 1);
if (v0->unk_48 == 0) {
v0->unk_50 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER);
v0->unk_54 = 80 - PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_DRAW_HEIGHT);
v0->unk_50 = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER);
v0->unk_54 = 80 - PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_DRAW_HEIGHT);
v0->unk_40 = BattleAnimSystem_GetScriptVar(param0, 2);
v0->unk_42 = BattleAnimSystem_GetScriptVar(param0, 3);
v0->unk_42 *= -1;
} else {
v0->unk_50 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER);
v0->unk_54 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_DRAW_HEIGHT);
v0->unk_50 = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER);
v0->unk_54 = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_DRAW_HEIGHT);
v0->unk_40 = BattleAnimSystem_GetScriptVar(param0, 2);
v0->unk_42 = BattleAnimSystem_GetScriptVar(param0, 3);
}
@ -2489,7 +2488,7 @@ void ov12_02229304(BattleAnimSystem *param0)
v0->unk_44 = BattleAnimSystem_GetScriptVar(param0, 4);
v0->unk_4C = 0;
PokemonSprite_SetPartialDraw(v0->unk_1C.unk_08, v0->unk_30, v0->unk_34, v0->unk_38, v0->unk_3C);
PokemonSprite_SetPartialDraw(v0->unk_1C.monSprite, v0->unk_30, v0->unk_34, v0->unk_38, v0->unk_3C);
}
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_02229278, v0);
@ -2504,13 +2503,13 @@ static int ov12_02229454(BattleAnimSystem *param0, int param1)
v0 = BattleAnimSystem_GetAttacker(param0);
break;
case 0x4:
v0 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
v0 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetAttacker(param0));
break;
case 0x8:
v0 = BattleAnimSystem_GetDefender(param0);
break;
case 0x10:
v0 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
v0 = BattleAnimUtil_GetAlliedBattler(param0, BattleAnimSystem_GetDefender(param0));
break;
default:
GF_ASSERT(0);
@ -2532,7 +2531,7 @@ static void ov12_022294AC(SysTask *param0, void *param1)
v0->unk_24 = 0;
v0->unk_44 += v0->unk_1C;
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER, v0->unk_44);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER, v0->unk_44);
v0->unk_3C -= v0->unk_1C;
if (v0->unk_3C > v0->unk_40) {
@ -2540,13 +2539,13 @@ static void ov12_022294AC(SysTask *param0, void *param1)
v0->unk_00.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_DRAW_HEIGHT, v0->unk_3C);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_DRAW_HEIGHT, v0->unk_3C);
break;
case 1:
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_PARTIAL_DRAW, 0);
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER, v0->unk_48);
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_DRAW_HEIGHT, v0->unk_40);
ov12_02226B84(v0->unk_28.unk_08);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_PARTIAL_DRAW, 0);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER, v0->unk_48);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_DRAW_HEIGHT, v0->unk_40);
ov12_02226B84(v0->unk_28.monSprite);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
Heap_Free(v0);
break;
@ -2565,7 +2564,7 @@ static void ov12_02229538(SysTask *param0, void *param1)
v0->unk_24 = 0;
v0->unk_44 += v0->unk_1C;
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER, v0->unk_44);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER, v0->unk_44);
v0->unk_3C -= v0->unk_1C;
if (v0->unk_3C < 0) {
@ -2573,13 +2572,13 @@ static void ov12_02229538(SysTask *param0, void *param1)
v0->unk_00.unk_00++;
}
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_DRAW_HEIGHT, v0->unk_3C);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_DRAW_HEIGHT, v0->unk_3C);
break;
case 1:
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_PARTIAL_DRAW, 0);
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER, v0->unk_48);
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_DRAW_HEIGHT, v0->unk_40);
ov12_02226B84(v0->unk_28.unk_08);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_PARTIAL_DRAW, 0);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER, v0->unk_48);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_DRAW_HEIGHT, v0->unk_40);
ov12_02226B84(v0->unk_28.monSprite);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
Heap_Free(v0);
break;
@ -2605,11 +2604,11 @@ static void ov12_022295C4(SysTask *param0, void *param1)
v0->unk_00.unk_00++;
}
PokemonSprite_SetPartialDraw(v0->unk_28.unk_08, 0, v0->unk_3C, 80, v0->unk_40);
PokemonSprite_SetPartialDraw(v0->unk_28.monSprite, 0, v0->unk_3C, 80, v0->unk_40);
break;
case 1:
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_PARTIAL_DRAW, 0);
ov12_02226B84(v0->unk_28.unk_08);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_PARTIAL_DRAW, 0);
ov12_02226B84(v0->unk_28.monSprite);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
Heap_Free(v0);
break;
@ -2632,7 +2631,7 @@ void ov12_02229638(BattleAnimSystem *param0)
int v2 = BattleAnimSystem_GetScriptVar(param0, 0);
int v3;
ov12_02235998(param0, v2, &(v0->unk_28), &v3);
BattleAnimUtil_GetBattlerSprites(param0, v2, &(v0->unk_28), &v3);
v1 = ov12_02229454(param0, v2);
}
@ -2641,26 +2640,26 @@ void ov12_02229638(BattleAnimSystem *param0)
v0->unk_3C = 80 - v0->unk_3C;
v0->unk_40 = 0;
PokemonSprite_SetPartialDraw(v0->unk_28.unk_08, 0, v0->unk_3C, 80, v0->unk_40);
PokemonSprite_SetPartialDraw(v0->unk_28.monSprite, 0, v0->unk_3C, 80, v0->unk_40);
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_022295C4, v0);
return;
}
v0->unk_44 = PokemonSprite_GetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER);
v0->unk_44 = PokemonSprite_GetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER);
v0->unk_48 = v0->unk_44;
v0->unk_3C = BattleAnimSystem_GetBattlerSpriteHeight(param0, v1);
v0->unk_3C = 80 - v0->unk_3C;
v0->unk_40 = v0->unk_3C;
if (v0->unk_1C > 0) {
PokemonSprite_SetPartialDraw(v0->unk_28.unk_08, 0, 0, 80, v0->unk_3C);
PokemonSprite_SetPartialDraw(v0->unk_28.monSprite, 0, 0, 80, v0->unk_3C);
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_02229538, v0);
} else {
v0->unk_3C = 0;
v0->unk_44 += v0->unk_40;
PokemonSprite_SetAttribute(v0->unk_28.unk_08, MON_SPRITE_Y_CENTER, v0->unk_44);
PokemonSprite_SetPartialDraw(v0->unk_28.unk_08, 0, 0, 80, v0->unk_3C);
PokemonSprite_SetAttribute(v0->unk_28.monSprite, MON_SPRITE_Y_CENTER, v0->unk_44);
PokemonSprite_SetPartialDraw(v0->unk_28.monSprite, 0, 0, 80, v0->unk_3C);
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_022294AC, v0);
}
}
@ -2803,8 +2802,8 @@ void ov12_02229908(BattleAnimSystem *param0)
static void ov12_02229980(BattleAnimSystem *param0, UnkStruct_ov12_02229980 *param1)
{
param1->unk_00 = BattleAnimSystem_GetScriptVar(param0, 0);
param1->unk_0C.unk_00 = BattleAnimSystem_GetScriptVar(param0, 1);
param1->unk_0C.unk_02 = BattleAnimSystem_GetScriptVar(param0, 2);
param1->unk_0C.x = BattleAnimSystem_GetScriptVar(param0, 1);
param1->unk_0C.y = BattleAnimSystem_GetScriptVar(param0, 2);
param1->unk_04 = BattleAnimSystem_GetScriptVar(param0, 3);
param1->unk_06 = BattleAnimSystem_GetScriptVar(param0, 4);
param1->unk_08 = BattleAnimSystem_GetScriptVar(param0, 5);
@ -2915,7 +2914,7 @@ void ov12_02229B28(BattleAnimSystem *param0)
ov12_02235508(param0, v3->unk_14, &v1);
ov12_02235508(param0, v3->unk_18, &v2);
PosLerpContext_Init(&v3->unk_A8[0], v1.x / 172, (v2.x / 172) + (v3->unk_0C.unk_00 * v0), v1.y / 172, (v2.y / 172) + (v3->unk_0C.unk_02 * v0), v3->unk_06);
PosLerpContext_Init(&v3->unk_A8[0], v1.x / 172, (v2.x / 172) + (v3->unk_0C.x * v0), v1.y / 172, (v2.y / 172) + (v3->unk_0C.y * v0), v3->unk_06);
if (v0 > 0) {
ValueLerpContext_Init(&v3->unk_F0, ((20 * 0xffff) / 360) * v0, ((130 * 0xffff) / 360) * v0, 10);
@ -3051,7 +3050,7 @@ void ov12_02229E54(BattleAnimSystem *param0)
ov12_02235508(param0, v3->unk_14, &v1);
ov12_02235508(param0, v3->unk_18, &v2);
ov12_02225C98(&v3->unk_A8[0], &v3->unk_A8[1], v1.x / 172, (v2.x / 172) + (v3->unk_0C.unk_00 * v0), v1.y / 172, (v2.y / 172) + (v3->unk_0C.unk_02 * v0), v3->unk_06, v3->unk_08 * -FX32_ONE);
ov12_02225C98(&v3->unk_A8[0], &v3->unk_A8[1], v1.x / 172, (v2.x / 172) + (v3->unk_0C.x * v0), v1.y / 172, (v2.y / 172) + (v3->unk_0C.y * v0), v3->unk_06, v3->unk_08 * -FX32_ONE);
if (v0 > 0) {
ValueLerpContext_Init(&v3->unk_F0, ((20 * 0xffff) / 360) * v0, ((130 * 0xffff) / 360) * v0, 10);

View File

@ -4,6 +4,7 @@
#include <string.h>
#include "constants/battle.h"
#include "constants/battle/battle_anim.h"
#include "constants/graphics.h"
#include "overlay012/battle_anim_system.h"
@ -11,8 +12,6 @@
#include "overlay012/ov12_02235254.h"
#include "overlay012/struct_ov12_022267D4_decl.h"
#include "overlay012/struct_ov12_0222C7E0_sub1.h"
#include "overlay012/struct_ov12_02235350.h"
#include "overlay012/struct_ov12_02235998.h"
#include "battle_script_battlers.h"
#include "bg_window.h"
@ -351,26 +350,29 @@ enum MinimizeState {
#define MINIMIZE_SHRINK_FRAMES 5
#define MINIMIZE_SHRINK_CYCLES 3
typedef struct {
u8 unk_00;
// -------------------------------------------------------------------
// Earthquake
// -------------------------------------------------------------------
typedef struct EarthquakeContext {
u8 state;
u8 unk_01;
u8 unk_02;
u8 unk_03;
int unk_04;
BgConfig *unk_08;
BattleAnimSystem *unk_0C;
SpriteManager *unk_10;
UnkStruct_ov12_02235998 unk_14[4];
UnkStruct_ov12_02235998 unk_64[4];
int spriteCount;
BgConfig *bgConfig;
BattleAnimSystem *battleAnimSys;
SpriteManager *pokemonSpriteManager;
BattleAnimSpriteInfo sprites[4];
BattleAnimSpriteInfo unk_64[4];
XYTransformContext unk_B4;
} UnkStruct_ov12_0222C4A8;
} EarthquakeContext;
typedef struct {
u8 unk_00;
u8 unk_01;
u8 unk_02;
u8 unk_03;
UnkStruct_ov12_02235350 unk_04;
Point2D unk_04;
BgConfig *unk_08;
BattleAnimSystem *unk_0C;
SpriteManager *unk_10;
@ -396,7 +398,7 @@ typedef struct {
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_0222C7E0_sub1 unk_1C;
UnkStruct_ov12_02235350 unk_28[4];
Point2D unk_28[4];
PokemonSprite *unk_38[4];
int unk_48;
XYTransformContext unk_4C;
@ -405,7 +407,7 @@ typedef struct {
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_0222C7E0_sub1 unk_1C;
UnkStruct_ov12_02235350 unk_28[2];
Point2D unk_28[2];
PokemonSprite *unk_30[2];
ManagedSprite *unk_38[2];
XYTransformContext unk_40[2];
@ -415,11 +417,11 @@ typedef struct {
int unk_00;
int unk_04;
int unk_08;
UnkStruct_ov12_02235350 unk_0C;
Point2D unk_0C;
UnkStruct_ov12_0223595C unk_10;
UnkStruct_ov12_0222C7E0_sub1 unk_2C;
ManagedSprite *unk_38;
UnkStruct_ov12_02235998 unk_3C[4];
BattleAnimSpriteInfo unk_3C[4];
XYTransformContext unk_8C[2];
ValueLerpContext unk_D4;
} UnkStruct_ov12_0222CBFC;
@ -435,12 +437,12 @@ typedef struct {
u8 unk_10;
u8 unk_11;
s16 unk_12;
UnkStruct_ov12_02235350 unk_14;
Point2D unk_14;
UnkStruct_ov12_0223595C unk_18;
UnkStruct_ov12_0222C7E0_sub1 unk_34;
ManagedSprite *unk_40;
ManagedSprite *unk_44[2];
UnkStruct_ov12_02235998 unk_4C[4];
BattleAnimSpriteInfo unk_4C[4];
XYTransformContext unk_9C;
ValueLerpContext unk_C0;
} UnkStruct_ov12_0222CDF0;
@ -594,7 +596,7 @@ void ov12_0222AE68(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
v1->unk_14[0] = param3;
{
UnkStruct_ov12_02235350 v3;
Point2D v3;
int v4 = BattleAnimUtil_GetBattlerSide(param0, BattleAnimSystem_GetDefender(param0));
if (v4 == 0x3) {
@ -605,10 +607,10 @@ void ov12_0222AE68(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
for (v0 = 1; v0 < BattleAnimSystem_GetScriptVar(v1->unk_08, 0); v0++) {
v1->unk_14[v0] = SpriteSystem_NewSprite(v1->unk_0C, v1->unk_10, &v2);
ManagedSprite_SetPositionXY(v1->unk_14[v0], v3.unk_00, v3.unk_02);
ManagedSprite_SetPositionXY(v1->unk_14[v0], v3.x, v3.y);
}
ManagedSprite_SetPositionXY(v1->unk_14[0], v3.unk_00, v3.unk_02);
ManagedSprite_SetPositionXY(v1->unk_14[0], v3.x, v3.y);
}
for (v0 = 0; v0 < BattleAnimSystem_GetScriptVar(v1->unk_08, 0); v0++) {
@ -1734,101 +1736,96 @@ static const s16 Unk_ov12_0223A0EE[] = {
0x0
};
static void ov12_0222C4A8(SysTask *param0, void *param1)
static void BattleAnimTask_Earthquake(SysTask *task, void *param)
{
int v0;
UnkStruct_ov12_0222C4A8 *v1 = (UnkStruct_ov12_0222C4A8 *)param1;
EarthquakeContext *ctx = param;
switch (v1->unk_00) {
switch (ctx->state) {
case 0:
PaletteData_StartFade(BattleAnimSystem_GetPaletteData(v1->unk_0C), 0x1, BattleAnimSystem_GetBaseBgPalettes(v1->unk_0C), 1, 0, 10, 0x0);
v1->unk_00++;
PaletteData_StartFade(
BattleAnimSystem_GetPaletteData(ctx->battleAnimSys),
PLTTBUF_MAIN_BG_F,
BattleAnimSystem_GetBaseBgPalettes(ctx->battleAnimSys),
1,
0,
10,
0x0);
ctx->state++;
break;
case 1:
if (PaletteData_GetSelectedBuffersMask(BattleAnimSystem_GetPaletteData(v1->unk_0C)) != 0) {
if (PaletteData_GetSelectedBuffersMask(BattleAnimSystem_GetPaletteData(ctx->battleAnimSys)) != 0) {
break;
}
v1->unk_00++;
ctx->state++;
case 2:
ShakeContext_Init(&v1->unk_B4, Unk_ov12_0223A0EE[v1->unk_01], 0, 0, 5);
ShakeContext_Init(&ctx->unk_B4, Unk_ov12_0223A0EE[ctx->unk_01], 0, 0, 5);
if (v1->unk_02 == 0) {
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(v1->unk_0C), 0, 0xFF, 10, 0x0);
if (ctx->unk_02 == 0) {
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(ctx->battleAnimSys), 0, 0xFF, 10, 0x0);
} else {
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(v1->unk_0C), 0, 0xFF, 10, 0x7FFF);
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(ctx->battleAnimSys), 0, 0xFF, 10, 0x7FFF);
}
v1->unk_03 = 3;
v1->unk_02 ^= 1;
v1->unk_01++;
v1->unk_00++;
ctx->unk_03 = 3;
ctx->unk_02 ^= 1;
ctx->unk_01++;
ctx->state++;
case 3:
if (ShakeContext_Update(&v1->unk_B4) == 0) {
if (v1->unk_01 >= (NELEMS(Unk_ov12_0223A0EE))) {
v1->unk_00++;
if (ShakeContext_Update(&ctx->unk_B4) == 0) {
if (ctx->unk_01 >= (NELEMS(Unk_ov12_0223A0EE))) {
ctx->state++;
} else {
v1->unk_00--;
ctx->state--;
}
}
if (v1->unk_03 > 0) {
v1->unk_03--;
if (ctx->unk_03 > 0) {
ctx->unk_03--;
if (v1->unk_03 == 0) {
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(v1->unk_0C), 0, 0xFF, 0, 0);
if (ctx->unk_03 == 0) {
PaletteData_BlendMulti(BattleAnimSystem_GetPaletteData(ctx->battleAnimSys), 0, 0xFF, 0, 0);
}
}
for (v0 = 0; v0 < 4; v0++) {
if (v1->unk_14[v0].unk_08 == NULL) {
for (int i = 0; i < 4; i++) {
if (ctx->sprites[i].monSprite == NULL) {
continue;
}
PokemonSprite_SetAttribute(v1->unk_14[v0].unk_08, MON_SPRITE_X_CENTER, v1->unk_14[v0].unk_00.unk_00 + v1->unk_B4.x);
PokemonSprite_SetAttribute(ctx->sprites[i].monSprite, MON_SPRITE_X_CENTER, ctx->sprites[i].basePos.x + ctx->unk_B4.x);
}
Bg_SetOffset(v1->unk_08, BG_LAYER_MAIN_3, 0, v1->unk_B4.x);
Bg_SetOffset(ctx->bgConfig, BG_LAYER_MAIN_3, 0, ctx->unk_B4.x);
break;
default:
BattleAnimSystem_EndAnimTask(v1->unk_0C, param0);
Heap_Free(v1);
BattleAnimSystem_EndAnimTask(ctx->battleAnimSys, task);
Heap_Free(ctx);
break;
}
}
void ov12_0222C5FC(BattleAnimSystem *param0)
void BattleAnimScriptFunc_Earthquake(BattleAnimSystem *system)
{
int v0;
UnkStruct_ov12_0222C4A8 *v1 = BattleAnimUtil_Alloc(param0, sizeof(UnkStruct_ov12_0222C4A8));
EarthquakeContext *ctx = BattleAnimUtil_Alloc(system, sizeof(EarthquakeContext));
v1->unk_00 = 0;
v1->unk_01 = 0;
v1->unk_0C = param0;
v1->unk_10 = BattleAnimSystem_GetPokemonSpriteManager(v1->unk_0C);
v1->unk_08 = BattleAnimSystem_GetBgConfig(v1->unk_0C);
ctx->state = 0;
ctx->unk_01 = 0;
ctx->battleAnimSys = system;
ctx->pokemonSpriteManager = BattleAnimSystem_GetPokemonSpriteManager(ctx->battleAnimSys);
ctx->bgConfig = BattleAnimSystem_GetBgConfig(ctx->battleAnimSys);
{
int v2;
int v3;
int sprites = BattleAnimSystem_IsDoubleBattle(ctx->battleAnimSys) == TRUE
? BATTLE_ANIM_ALL_BATTLERS
: (BATTLE_ANIM_ATTACKER | BATTLE_ANIM_DEFENDER);
BattleAnimUtil_GetBattlerSprites(system, sprites, &ctx->sprites[0], &ctx->spriteCount);
if (BattleAnimSystem_IsDoubleBattle(v1->unk_0C) == 1) {
v2 = 0x40;
v3 = (0x2 | 0x4 | 0x8 | 0x10);
} else {
v2 = (0x2 | 0x8);
v3 = (0x2 | 0x4);
}
ov12_02235998(param0, v2, &(v1->unk_14[0]), &v1->unk_04);
for (int i = 0; i < ctx->spriteCount; i++) {
ctx->sprites[i].basePos.x = PokemonSprite_GetAttribute(ctx->sprites[i].monSprite, MON_SPRITE_X_CENTER);
ctx->sprites[i].basePos.y = PokemonSprite_GetAttribute(ctx->sprites[i].monSprite, MON_SPRITE_Y_CENTER);
}
for (v0 = 0; v0 < v1->unk_04; v0++) {
v1->unk_14[v0].unk_00.unk_00 = PokemonSprite_GetAttribute(v1->unk_14[v0].unk_08, MON_SPRITE_X_CENTER);
v1->unk_14[v0].unk_00.unk_02 = PokemonSprite_GetAttribute(v1->unk_14[v0].unk_08, MON_SPRITE_Y_CENTER);
}
BattleAnimSystem_StartAnimTask(v1->unk_0C, ov12_0222C4A8, v1);
BattleAnimSystem_StartAnimTask(ctx->battleAnimSys, BattleAnimTask_Earthquake, ctx);
}
static void ov12_0222C678(SysTask *param0, void *param1)
@ -1876,14 +1873,14 @@ void ov12_0222C6D4(BattleAnimSystem *param0)
}
v0->unk_14 = BattleAnimSystem_GetBattlerSprite(v0->unk_0C, v1);
ov12_02235918(v0->unk_14, &v0->unk_04);
v0->unk_04.unk_02 -= PokemonSprite_GetAttribute(v0->unk_14, MON_SPRITE_SHADOW_HEIGHT);
BattleAnimUtil_GetMonSpritePos(v0->unk_14, &v0->unk_04);
v0->unk_04.y -= PokemonSprite_GetAttribute(v0->unk_14, MON_SPRITE_SHADOW_HEIGHT);
{
int v2 = BattleAnimUtil_GetTransformDirection(v0->unk_0C, v1);
int v3 = ov12_0222598C(v0->unk_0C, v1);
PosLerpContext_Init(&v0->unk_40, v0->unk_04.unk_00, v0->unk_04.unk_00 + (-20 * v2), v0->unk_04.unk_02, v0->unk_04.unk_02 + ((+20) * v3), 20);
PosLerpContext_Init(&v0->unk_40, v0->unk_04.x, v0->unk_04.x + (-20 * v2), v0->unk_04.y, v0->unk_04.y + ((+20) * v3), 20);
}
BattleAnimUtil_SetSpriteBlending(v0->unk_0C, (1 << BattleAnimSystem_GetBgID(param0, 2)) | GX_BLEND_PLANEMASK_BD | (1 << BattleAnimSystem_GetBgID(param0, 1)) | GX_WND_PLANEMASK_BG0, 0xffffffff, 0xffffffff);
@ -1956,11 +1953,11 @@ static void ov12_0222C884(SysTask *param0, void *param1)
v0->unk_00.unk_00++;
break;
case 1: {
UnkStruct_ov12_02235350 v1;
Point2D v1;
ov12_02235918(v0->unk_28[1], &v1);
BattleAnimUtil_GetMonSpritePos(v0->unk_28[1], &v1);
if (ov12_0222619C(&v0->unk_38, v1.unk_00, v1.unk_02, v0->unk_28[1]) == 0) {
if (ov12_0222619C(&v0->unk_38, v1.x, v1.y, v0->unk_28[1]) == 0) {
v0->unk_00.unk_00++;
}
} break;
@ -2018,7 +2015,7 @@ static void ov12_0222C994(SysTask *param0, void *param1)
continue;
}
PokemonSprite_SetAttribute(v1->unk_38[v0], MON_SPRITE_X_CENTER, v1->unk_28[v0].unk_00 + v1->unk_4C.x);
PokemonSprite_SetAttribute(v1->unk_38[v0], MON_SPRITE_X_CENTER, v1->unk_28[v0].x + v1->unk_4C.x);
}
Bg_SetOffset(v1->unk_00.bgConfig, 3, 0, v1->unk_4C.x);
@ -2074,7 +2071,7 @@ void ov12_0222CA2C(BattleAnimSystem *param0)
continue;
}
ov12_02235918(v0->unk_38[v1], &v0->unk_28[v1]);
BattleAnimUtil_GetMonSpritePos(v0->unk_38[v1], &v0->unk_28[v1]);
}
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_0222C994, v0);
@ -2095,8 +2092,8 @@ static void ov12_0222CACC(SysTask *param0, void *param1)
if (ShakeContext_Update(&v1->unk_40[0]) == 0) {
v1->unk_00.unk_00++;
} else {
ManagedSprite_SetPositionXY(v1->unk_38[0], +v1->unk_28[1].unk_00 + v1->unk_40[0].x, v1->unk_28[1].unk_02 + v1->unk_40[0].y);
ManagedSprite_SetPositionXY(v1->unk_38[1], -v1->unk_28[1].unk_00 + v1->unk_40[0].x, v1->unk_28[1].unk_02 + v1->unk_40[0].y);
ManagedSprite_SetPositionXY(v1->unk_38[0], +v1->unk_28[1].x + v1->unk_40[0].x, v1->unk_28[1].y + v1->unk_40[0].y);
ManagedSprite_SetPositionXY(v1->unk_38[1], -v1->unk_28[1].x + v1->unk_40[0].x, v1->unk_28[1].y + v1->unk_40[0].y);
ManagedSprite_TickFrame(v1->unk_38[0]);
ManagedSprite_TickFrame(v1->unk_38[1]);
}
@ -2122,8 +2119,8 @@ void ov12_0222CB90(BattleAnimSystem *param0)
v0->unk_30[0] = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem));
v0->unk_30[1] = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetDefender(v0->unk_00.battleAnimSystem));
ov12_02235918(v0->unk_30[0], &v0->unk_28[0]);
ov12_02235918(v0->unk_30[1], &v0->unk_28[1]);
BattleAnimUtil_GetMonSpritePos(v0->unk_30[0], &v0->unk_28[0]);
BattleAnimUtil_GetMonSpritePos(v0->unk_30[1], &v0->unk_28[1]);
BattleAnimSystem_StartAnimTask(v0->unk_00.battleAnimSystem, ov12_0222CACC, v0);
}
@ -2155,8 +2152,8 @@ void ov12_0222CC54(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
UnkStruct_ov12_0222CBFC *v2 = BattleAnimUtil_Alloc(param0, sizeof(UnkStruct_ov12_0222CBFC));
ov12_0223595C(param0, &v2->unk_10);
v2->unk_0C.unk_00 = BattleAnimSystem_GetScriptVar(param0, 0);
v2->unk_0C.unk_02 = BattleAnimSystem_GetScriptVar(param0, 1);
v2->unk_0C.x = BattleAnimSystem_GetScriptVar(param0, 0);
v2->unk_0C.y = BattleAnimSystem_GetScriptVar(param0, 1);
v2->unk_04 = BattleAnimSystem_GetScriptVar(param0, 2);
v2->unk_08 = BattleAnimSystem_GetScriptVar(param0, 3);
@ -2165,12 +2162,12 @@ void ov12_0222CC54(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
ManagedSprite_SetAffineOverwriteMode(v2->unk_38, AFFINE_OVERWRITE_MODE_DOUBLE);
v2->unk_3C[0].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetAttacker(param0));
v2->unk_3C[1].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetDefender(param0));
v2->unk_3C[0].monSprite = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetAttacker(param0));
v2->unk_3C[1].monSprite = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetDefender(param0));
ov12_02235918(v2->unk_3C[0].unk_08, &v2->unk_3C[0].unk_04);
ov12_02235918(v2->unk_3C[1].unk_08, &v2->unk_3C[1].unk_04);
ov12_02225C98(&v2->unk_8C[0], &v2->unk_8C[1], v2->unk_3C[0].unk_04.unk_00, v2->unk_3C[1].unk_04.unk_00 + (v2->unk_0C.unk_00 * v1), v2->unk_3C[0].unk_04.unk_02, v2->unk_3C[1].unk_04.unk_02 + (v2->unk_0C.unk_02 * v1), v2->unk_04, v2->unk_08 * FX32_ONE);
BattleAnimUtil_GetMonSpritePos(v2->unk_3C[0].monSprite, &v2->unk_3C[0].pos);
BattleAnimUtil_GetMonSpritePos(v2->unk_3C[1].monSprite, &v2->unk_3C[1].pos);
ov12_02225C98(&v2->unk_8C[0], &v2->unk_8C[1], v2->unk_3C[0].pos.x, v2->unk_3C[1].pos.x + (v2->unk_0C.x * v1), v2->unk_3C[0].pos.y, v2->unk_3C[1].pos.y + (v2->unk_0C.y * v1), v2->unk_04, v2->unk_08 * FX32_ONE);
if ((BattleAnimSystem_GetBattlerType(param0, BattleAnimSystem_GetAttacker(param0)) == 4) && (BattleAnimSystem_GetBattlerType(param0, BattleAnimSystem_GetDefender(param0)) == 2)) {
v1 *= -1;
@ -2212,8 +2209,8 @@ static void ov12_0222CDF0(SysTask *param0, void *param1)
BattleAnimUtil_ConvertRelativeToAffineScale(&v0->unk_9C, &v1, &v2);
ManagedSprite_SetAffineScale(v0->unk_40, v1, v2);
v3 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.unk_02, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.unk_00, v0->unk_14.unk_02 + v3);
v3 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.y, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.x, v0->unk_14.y + v3);
if (v0->unk_0C < v0->unk_10) {
v0->unk_0C++;
@ -2240,8 +2237,8 @@ static void ov12_0222CDF0(SysTask *param0, void *param1)
BattleAnimUtil_ConvertRelativeToAffineScale(&v0->unk_9C, &v4, &v5);
ManagedSprite_SetAffineScale(v0->unk_40, v4, v5);
v6 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.unk_02, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.unk_00, v0->unk_14.unk_02 + v6);
v6 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.y, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.x, v0->unk_14.y + v6);
if (v0->unk_0C > v0->unk_0E) {
v0->unk_0C--;
@ -2298,8 +2295,8 @@ void ov12_0222CFA0(BattleAnimSystem *param0)
v0->unk_40 = v0->unk_44[0];
ManagedSprite_SetDrawFlag(v0->unk_44[1], 0);
ManagedSprite_SetAnim(v0->unk_40, 0);
v0->unk_14.unk_00 = 255 - 76;
v0->unk_14.unk_02 = 120;
v0->unk_14.x = 255 - 76;
v0->unk_14.y = 120;
ManagedSprite_SetExplicitPriority(v0->unk_40, BattleAnimSystem_GetPokemonSpritePriority(param0) + 1);
v0->unk_12 = -1;
} else {
@ -2307,21 +2304,21 @@ void ov12_0222CFA0(BattleAnimSystem *param0)
v0->unk_40 = v0->unk_44[1];
ManagedSprite_SetDrawFlag(v0->unk_44[0], 0);
ManagedSprite_SetAnim(v0->unk_40, 1);
v0->unk_14.unk_00 = 144;
v0->unk_14.unk_02 = 64;
v0->unk_14.x = 144;
v0->unk_14.y = 64;
} else {
v0->unk_40 = v0->unk_44[0];
ManagedSprite_SetDrawFlag(v0->unk_44[1], 0);
ManagedSprite_SetAnim(v0->unk_40, 0);
v0->unk_14.unk_00 = 76;
v0->unk_14.unk_02 = 120;
v0->unk_14.x = 76;
v0->unk_14.y = 120;
ManagedSprite_SetExplicitPriority(v0->unk_40, BattleAnimSystem_GetPokemonSpritePriority(param0) + 1);
}
v0->unk_12 = +1;
}
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.unk_00, v0->unk_14.unk_02);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.x, v0->unk_14.y);
ManagedSprite_SetAffineOverwriteMode(v0->unk_40, AFFINE_OVERWRITE_MODE_DOUBLE);
ManagedSprite_SetExplicitOamMode(v0->unk_40, GX_OAM_MODE_XLU);
@ -2335,8 +2332,8 @@ void ov12_0222CFA0(BattleAnimSystem *param0)
BattleAnimUtil_ConvertRelativeToAffineScale(&v0->unk_9C, &v1, &v2);
ManagedSprite_SetAffineScale(v0->unk_40, v1, v2);
v3 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.unk_02, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.unk_00, v0->unk_14.unk_02 + v3);
v3 = BattleAnimUtil_GetGroundAnchoredScaleOffset(v0->unk_14.y, 16, v0->unk_9C.data[4]);
ManagedSprite_SetPositionXY(v0->unk_40, v0->unk_14.x, v0->unk_14.y + v3);
}
BattleAnimSystem_StartAnimTask(v0->unk_18.battleAnimSystem, ov12_0222CDF0, v0);

View File

@ -7,7 +7,7 @@
#include "overlay012/ov12_02225864.h"
#include "overlay012/ov12_02235254.h"
#include "overlay012/struct_ov12_022267D4_decl.h"
#include "overlay012/struct_ov12_02235350.h"
#include "math_util.h"
#include "bg_window.h"
#include "heap.h"
@ -241,7 +241,7 @@ void ov12_0222D7C0(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
BattleAnimSystem_StartAnimTaskEx(param0, ov12_0222D6B0, v1, 1100);
}
static const UnkStruct_ov12_02235350 Unk_ov12_0223A162[] = {
static const Point2D Unk_ov12_0223A162[] = {
{ 0x50, 0x32 },
{ 0xB4, 0x32 },
{ 0x50, 0x64 },
@ -250,7 +250,7 @@ static const UnkStruct_ov12_02235350 Unk_ov12_0223A162[] = {
{ 0xB4, 0x4B }
};
static const UnkStruct_ov12_02235350 Unk_ov12_0223A17A[][2] = {
static const Point2D Unk_ov12_0223A17A[][2] = {
{
{ 0x78, 0x50 },
{ 0x88, 0x50 },
@ -325,10 +325,10 @@ static void ov12_0222D934(SysTask *param0, void *param1)
s16 v3, v4;
ManagedSprite_GetPositionXY(v2->unk_34, &v3, &v4);
PosLerpContext_Init(&v2->unk_3C, v3, Unk_ov12_0223A17A[v2->unk_30][0].unk_00, v4, Unk_ov12_0223A17A[v2->unk_30][0].unk_02, Unk_ov12_0223A140[v2->unk_30]);
PosLerpContext_Init(&v2->unk_3C, v3, Unk_ov12_0223A17A[v2->unk_30][0].x, v4, Unk_ov12_0223A17A[v2->unk_30][0].y, Unk_ov12_0223A140[v2->unk_30]);
ManagedSprite_GetPositionXY(v2->unk_38, &v3, &v4);
PosLerpContext_Init(&v2->unk_60, v3, Unk_ov12_0223A17A[v2->unk_30][1].unk_00, v4, Unk_ov12_0223A17A[v2->unk_30][1].unk_02, Unk_ov12_0223A140[v2->unk_30]);
PosLerpContext_Init(&v2->unk_60, v3, Unk_ov12_0223A17A[v2->unk_30][1].x, v4, Unk_ov12_0223A17A[v2->unk_30][1].y, Unk_ov12_0223A140[v2->unk_30]);
}
v2->unk_30++;
v2->unk_00++;
@ -442,7 +442,7 @@ void ov12_0222DB60(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
for (v0 = 0; v0 < v1->unk_08; v0++) {
ManagedSprite_SetAnimateFlag(v1->unk_18[v0], 1);
ManagedSprite_SetPositionXY(v1->unk_18[v0], Unk_ov12_0223A162[v0].unk_00, Unk_ov12_0223A162[v0].unk_02);
ManagedSprite_SetPositionXY(v1->unk_18[v0], Unk_ov12_0223A162[v0].x, Unk_ov12_0223A162[v0].y);
ManagedSprite_SetExplicitOamMode(v1->unk_18[v0], GX_OAM_MODE_XLU);
}
@ -454,7 +454,7 @@ void ov12_0222DB60(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
BattleAnimSystem_StartAnimTaskEx(param0, ov12_0222D934, v1, 1100);
}
static const UnkStruct_ov12_02235350 Unk_ov12_0223A14A[] = {
static const Point2D Unk_ov12_0223A14A[] = {
{ 0x0, 0x0 },
{ 0x80, 0x0 },
{ 0x100, 0x0 },
@ -517,13 +517,13 @@ static void ov12_0222DC98(SysTask *param0, void *param1)
}
break;
case 6: {
UnkStruct_ov12_02235350 v1;
Point2D v1;
int v2;
v2 = 10 + (LCRNG_Next() % 10);
ManagedSprite_GetPositionXY(v0->unk_10, &v1.unk_00, &v1.unk_02);
PosLerpContext_Init(&v0->unk_14, v1.unk_00, Unk_ov12_0223A14A[v0->unk_0F].unk_00, v1.unk_02, Unk_ov12_0223A14A[v0->unk_0F].unk_02, v2);
ManagedSprite_GetPositionXY(v0->unk_10, &v1.x, &v1.y);
PosLerpContext_Init(&v0->unk_14, v1.x, Unk_ov12_0223A14A[v0->unk_0F].x, v1.y, Unk_ov12_0223A14A[v0->unk_0F].y, v2);
v0->unk_0C++;
} break;
case 7: {
@ -835,7 +835,7 @@ void ov12_0222E2F8(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
ManagedSprite_SetFlipMode(v0->unk_28[1], 1);
{
UnkStruct_ov12_02235350 v3;
Point2D v3;
}
ManagedSprite_OffsetPositionXY(v0->unk_28[0], -32, 0);

View File

@ -6,7 +6,6 @@
#include "overlay012/battle_anim_system.h"
#include "overlay012/ov12_02225864.h"
#include "overlay012/ov12_02235254.h"
#include "overlay012/struct_ov12_02235998.h"
#include "pokemon_sprite.h"
#include "sprite_system.h"
@ -14,8 +13,8 @@
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
UnkStruct_ov12_02235998 unk_30[2];
BattleAnimSpriteInfo unk_1C;
BattleAnimSpriteInfo unk_30[2];
s16 unk_58;
s16 unk_5A;
s16 unk_5C;
@ -29,9 +28,9 @@ static void ov12_0222E784(SysTask *param0, void *param1)
switch (v0->unk_00.unk_00) {
case 0:
if (ScaleLerpContext_UpdateXY(&v0->unk_60) == 0) {
ManagedSprite_SetDrawFlag(v0->unk_1C.unk_0C, 0);
ManagedSprite_SetDrawFlag(v0->unk_30[0].unk_0C, 0);
ManagedSprite_SetDrawFlag(v0->unk_30[0].unk_0C, 0);
ManagedSprite_SetDrawFlag(v0->unk_1C.hwSprite, 0);
ManagedSprite_SetDrawFlag(v0->unk_30[0].hwSprite, 0);
ManagedSprite_SetDrawFlag(v0->unk_30[0].hwSprite, 0);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
ov12_02235E80(v0);
@ -44,17 +43,17 @@ static void ov12_0222E784(SysTask *param0, void *param1)
f32 v1, v2;
BattleAnimUtil_ConvertRelativeToAffineScale(&v0->unk_60, &v1, &v2);
ManagedSprite_SetAffineScale(v0->unk_1C.unk_0C, v1, v2);
BattleAnimUtil_SetSpriteAnchoredPosition(v0->unk_1C.unk_0C, v0->unk_58, v0->unk_5A, v0->unk_60.data[4], 0);
ManagedSprite_SetAffineScale(v0->unk_1C.hwSprite, v1, v2);
BattleAnimUtil_SetSpriteAnchoredPosition(v0->unk_1C.hwSprite, v0->unk_58, v0->unk_5A, v0->unk_60.data[4], 0);
}
break;
default:
return;
}
ManagedSprite_TickFrame(v0->unk_1C.unk_0C);
ManagedSprite_TickFrame(v0->unk_30[0].unk_0C);
ManagedSprite_TickFrame(v0->unk_30[1].unk_0C);
ManagedSprite_TickFrame(v0->unk_1C.hwSprite);
ManagedSprite_TickFrame(v0->unk_30[0].hwSprite);
ManagedSprite_TickFrame(v0->unk_30[1].hwSprite);
SpriteSystem_DrawSprites(v0->unk_00.pokemonSpriteManager);
}
@ -64,18 +63,18 @@ void ov12_0222E810(BattleAnimSystem *param0)
ov12_0223595C(param0, &v0->unk_00);
v0->unk_1C.unk_08 = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetDefender(v0->unk_00.battleAnimSystem));
v0->unk_58 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER);
v0->unk_1C.monSprite = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetDefender(v0->unk_00.battleAnimSystem));
v0->unk_58 = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER);
v0->unk_5C = v0->unk_58;
v0->unk_5A = BattleAnimSystem_GetBattlerSpriteHeight(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetDefender(v0->unk_00.battleAnimSystem));
v0->unk_1C.unk_0C = BattleAnimSystem_GetPokemonSprite(param0, 0);
v0->unk_30[0].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, 1);
v0->unk_30[1].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, 2);
v0->unk_1C.hwSprite = BattleAnimSystem_GetPokemonSprite(param0, 0);
v0->unk_30[0].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, 1);
v0->unk_30[1].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, 2);
ManagedSprite_SetAffineOverwriteMode(v0->unk_1C.unk_0C, AFFINE_OVERWRITE_MODE_DOUBLE);
ManagedSprite_SetExplicitPriority(v0->unk_1C.unk_0C, BattleAnimSystem_GetPokemonSpritePriority(param0));
ManagedSprite_SetExplicitPriority(v0->unk_30[0].unk_0C, BattleAnimSystem_GetPokemonSpritePriority(param0));
ManagedSprite_SetExplicitPriority(v0->unk_30[1].unk_0C, BattleAnimSystem_GetPokemonSpritePriority(param0));
ManagedSprite_SetAffineOverwriteMode(v0->unk_1C.hwSprite, AFFINE_OVERWRITE_MODE_DOUBLE);
ManagedSprite_SetExplicitPriority(v0->unk_1C.hwSprite, BattleAnimSystem_GetPokemonSpritePriority(param0));
ManagedSprite_SetExplicitPriority(v0->unk_30[0].hwSprite, BattleAnimSystem_GetPokemonSpritePriority(param0));
ManagedSprite_SetExplicitPriority(v0->unk_30[1].hwSprite, BattleAnimSystem_GetPokemonSpritePriority(param0));
{
int v1;
@ -83,13 +82,13 @@ void ov12_0222E810(BattleAnimSystem *param0)
v1 = BattleAnimSystem_GetBattlerType(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetDefender(v0->unk_00.battleAnimSystem));
if ((v1 == 3) || (v1 == 4)) {
ManagedSprite_SetPriority(v0->unk_1C.unk_0C, 30);
ManagedSprite_SetPriority(v0->unk_30[0].unk_0C, 50);
ManagedSprite_SetPriority(v0->unk_30[1].unk_0C, 70);
ManagedSprite_SetPriority(v0->unk_1C.hwSprite, 30);
ManagedSprite_SetPriority(v0->unk_30[0].hwSprite, 50);
ManagedSprite_SetPriority(v0->unk_30[1].hwSprite, 70);
} else {
ManagedSprite_SetPriority(v0->unk_1C.unk_0C, 60);
ManagedSprite_SetPriority(v0->unk_30[0].unk_0C, 70);
ManagedSprite_SetPriority(v0->unk_30[1].unk_0C, 50);
ManagedSprite_SetPriority(v0->unk_1C.hwSprite, 60);
ManagedSprite_SetPriority(v0->unk_30[0].hwSprite, 70);
ManagedSprite_SetPriority(v0->unk_30[1].hwSprite, 50);
}
}

View File

@ -9,8 +9,7 @@
#include "overlay012/ov12_02235254.h"
#include "overlay012/ov12_022380BC.h"
#include "overlay012/struct_ov12_022267D4_decl.h"
#include "overlay012/struct_ov12_02235350.h"
#include "overlay012/struct_ov12_02235998.h"
#include "math_util.h"
#include "overlay012/struct_ov12_022380DC.h"
#include "bg_window.h"
@ -25,7 +24,7 @@
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
ManagedSprite *unk_30;
XYTransformContext unk_34;
XYTransformContext unk_58;
@ -59,11 +58,11 @@ typedef struct {
typedef struct {
UnkStruct_ov12_0223595C unk_00;
UnkStruct_ov12_02235998 unk_1C;
BattleAnimSpriteInfo unk_1C;
XYTransformContext unk_30;
s16 unk_54;
int unk_58;
UnkStruct_ov12_02235350 unk_5C[2];
Point2D unk_5C[2];
int unk_64;
int unk_68;
int unk_6C[3];
@ -81,7 +80,7 @@ typedef struct {
int unk_18;
PokemonSprite *unk_1C;
UnkStruct_ov12_0223595C unk_20;
UnkStruct_ov12_02235998 unk_3C;
BattleAnimSpriteInfo unk_3C;
} UnkStruct_ov12_0222F464;
static void ov12_0222E91C(SysTask *param0, void *param1)
@ -91,13 +90,13 @@ static void ov12_0222E91C(SysTask *param0, void *param1)
switch (v0->unk_00.unk_00) {
case 0:
if (v0->unk_A0 == 0) {
PosLerpContext_Init(&v0->unk_34, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_02, v0->unk_1C.unk_04.unk_02, 3);
PosLerpContext_Init(&v0->unk_58, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, 6);
PosLerpContext_Init(&v0->unk_7C, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, 8);
PosLerpContext_Init(&v0->unk_34, v0->unk_1C.pos.x, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.y, v0->unk_1C.pos.y, 3);
PosLerpContext_Init(&v0->unk_58, v0->unk_1C.pos.x, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.y + v0->unk_A4, v0->unk_1C.pos.y + v0->unk_A4, 6);
PosLerpContext_Init(&v0->unk_7C, v0->unk_1C.pos.x, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.y + v0->unk_A4, v0->unk_1C.pos.y + v0->unk_A4, 8);
} else {
PosLerpContext_Init(&v0->unk_34, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_02, v0->unk_1C.unk_04.unk_02, 3);
PosLerpContext_Init(&v0->unk_58, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, 6);
PosLerpContext_Init(&v0->unk_7C, v0->unk_1C.unk_04.unk_00 + 48, v0->unk_1C.unk_04.unk_00, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, v0->unk_1C.unk_04.unk_02 + v0->unk_A4, 9);
PosLerpContext_Init(&v0->unk_34, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.x, v0->unk_1C.pos.y, v0->unk_1C.pos.y, 3);
PosLerpContext_Init(&v0->unk_58, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.x, v0->unk_1C.pos.y + v0->unk_A4, v0->unk_1C.pos.y + v0->unk_A4, 6);
PosLerpContext_Init(&v0->unk_7C, v0->unk_1C.pos.x + 48, v0->unk_1C.pos.x, v0->unk_1C.pos.y + v0->unk_A4, v0->unk_1C.pos.y + v0->unk_A4, 9);
}
v0->unk_A0++;
@ -106,11 +105,11 @@ static void ov12_0222E91C(SysTask *param0, void *param1)
case 1: {
int v1 = 0;
if (ov12_02225C50(&v0->unk_58, v0->unk_1C.unk_0C) == 0) {
if (ov12_02225C50(&v0->unk_58, v0->unk_1C.hwSprite) == 0) {
v1++;
}
if (ov12_02225C74(&v0->unk_34, v0->unk_1C.unk_08) == 0) {
if (ov12_02225C74(&v0->unk_34, v0->unk_1C.monSprite) == 0) {
v1++;
}
@ -133,7 +132,7 @@ static void ov12_0222E91C(SysTask *param0, void *param1)
return;
}
ManagedSprite_TickFrame(v0->unk_1C.unk_0C);
ManagedSprite_TickFrame(v0->unk_1C.hwSprite);
SpriteSystem_DrawSprites(v0->unk_00.pokemonSpriteManager);
}
@ -150,12 +149,12 @@ void ov12_0222EAA0(BattleAnimSystem *param0)
BattleAnimUtil_SetSpriteBgBlending(v0->unk_00.battleAnimSystem, 0xffffffff, 0xffffffff);
G2_ChangeBlendAlpha(v0->unk_A2, v0->unk_A3);
v0->unk_1C.unk_08 = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem));
v0->unk_1C.unk_04.unk_00 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_X_CENTER);
v0->unk_1C.unk_04.unk_02 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER);
v0->unk_1C.unk_0C = BattleAnimSystem_GetPokemonSprite(v0->unk_00.battleAnimSystem, 0);
v0->unk_1C.monSprite = BattleAnimSystem_GetBattlerSprite(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem));
v0->unk_1C.pos.x = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_X_CENTER);
v0->unk_1C.pos.y = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER);
v0->unk_1C.hwSprite = BattleAnimSystem_GetPokemonSprite(v0->unk_00.battleAnimSystem, 0);
v0->unk_30 = BattleAnimSystem_GetPokemonSprite(v0->unk_00.battleAnimSystem, 1);
v0->unk_A4 = -PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_SHADOW_HEIGHT);
v0->unk_A4 = -PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_SHADOW_HEIGHT);
{
ManagedSprite *v1;
@ -163,7 +162,7 @@ void ov12_0222EAA0(BattleAnimSystem *param0)
int v3 = BattleAnimSystem_GetBattlerSpritePaletteIndex(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem));
int v4 = BattleAnimSystem_GetBattlerSpriteNarcID(v0->unk_00.battleAnimSystem, BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem));
v1 = v0->unk_1C.unk_0C;
v1 = v0->unk_1C.hwSprite;
ManagedSprite_SetExplicitPriority(v1, BattleAnimSystem_GetPokemonSpritePriority(v0->unk_00.battleAnimSystem) + 1);
v2 = PlttTransfer_GetPlttOffset(Sprite_GetPaletteProxy(v1->sprite), NNS_G2D_VRAM_TYPE_2DMAIN);
@ -427,14 +426,14 @@ void ov12_0222EFB0(BattleAnimSystem *param0)
u8 v8;
u8 v9;
PokemonSprite *v10;
UnkStruct_ov12_02235350 v11;
UnkStruct_ov12_02235350 v12;
Point2D v11;
Point2D v12;
v8 = BattleAnimSystem_GetAttacker(v0->unk_00.battleAnimSystem);
v9 = BattleAnimUtil_GetBattlerType(v0->unk_00.battleAnimSystem, v8);
ov12_02235350(v9, BattleAnimSystem_IsContest(v0->unk_00.battleAnimSystem), &v11);
ManagedSprite_GetPositionXY(v0->unk_1C[0], &v12.unk_00, &v12.unk_02);
ManagedSprite_GetPositionXY(v0->unk_1C[0], &v12.x, &v12.y);
{
int v13;
@ -453,7 +452,7 @@ void ov12_0222EFB0(BattleAnimSystem *param0)
v7 = LoadPokemonSpriteYOffset(BattleAnimSystem_GetBattlerSpecies(v0->unk_00.battleAnimSystem, v8), BattleAnimSystem_GetBattlerGender(v0->unk_00.battleAnimSystem, v8), v13, BattleAnimSystem_GetBattlerForm(v0->unk_00.battleAnimSystem, v8), BattleAnimSystem_GetBattlerPersonality(v0->unk_00.battleAnimSystem, v8));
}
ManagedSprite_SetPositionXY(v0->unk_1C[0], v12.unk_00, v11.unk_02 + v7);
ManagedSprite_SetPositionXY(v0->unk_1C[0], v12.x, v11.y + v7);
}
ManagedSprite_SetDrawFlag(v0->unk_1C[0], 1);
@ -478,9 +477,9 @@ static void ov12_0222F208(SysTask *param0, void *param1)
switch (v0->unk_00.unk_00) {
case 0:
PosLerpContext_Init(&v0->unk_30, v0->unk_1C.unk_04.unk_00, v0->unk_6C[v0->unk_68], v0->unk_78[v0->unk_68], v0->unk_78[v0->unk_68], 15);
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Z_CENTER, v0->unk_84[v0->unk_68]);
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_SHADOW_SHOULD_FOLLOW_Y, 1);
PosLerpContext_Init(&v0->unk_30, v0->unk_1C.pos.x, v0->unk_6C[v0->unk_68], v0->unk_78[v0->unk_68], v0->unk_78[v0->unk_68], 15);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Z_CENTER, v0->unk_84[v0->unk_68]);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_SHADOW_SHOULD_FOLLOW_Y, 1);
v0->unk_00.unk_00++;
case 1:
if (PosLerpContext_Update(&v0->unk_30) == 0) {
@ -506,14 +505,14 @@ static void ov12_0222F208(SysTask *param0, void *param1)
v0->unk_00.unk_00 = 0;
}
v0->unk_1C.unk_04.unk_00 = PokemonSprite_GetAttribute(v0->unk_1C.unk_08, MON_SPRITE_X_CENTER);
v0->unk_1C.pos.x = PokemonSprite_GetAttribute(v0->unk_1C.monSprite, MON_SPRITE_X_CENTER);
}
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_X_CENTER, v0->unk_30.x);
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_Y_CENTER, v0->unk_30.y);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_X_CENTER, v0->unk_30.x);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_Y_CENTER, v0->unk_30.y);
break;
default:
PokemonSprite_SetAttribute(v0->unk_1C.unk_08, MON_SPRITE_SHADOW_SHOULD_FOLLOW_Y, 0);
PokemonSprite_SetAttribute(v0->unk_1C.monSprite, MON_SPRITE_SHADOW_SHOULD_FOLLOW_Y, 0);
BattleAnimSystem_EndAnimTask(v0->unk_00.battleAnimSystem, param0);
Heap_Free(v0);
break;
@ -554,31 +553,31 @@ void ov12_0222F2F8(BattleAnimSystem *param0)
{
int v5;
ov12_02235998(param0, BattleAnimSystem_GetScriptVar(param0, 0), &(v1->unk_1C), &v5);
BattleAnimUtil_GetBattlerSprites(param0, BattleAnimSystem_GetScriptVar(param0, 0), &(v1->unk_1C), &v5);
}
v0 = PokemonSprite_GetAttribute(v1->unk_1C.unk_08, MON_SPRITE_Y_CENTER) - v1->unk_5C[0].unk_02;
v0 = PokemonSprite_GetAttribute(v1->unk_1C.monSprite, MON_SPRITE_Y_CENTER) - v1->unk_5C[0].y;
if (v1->unk_54 > 0) {
v1->unk_6C[0] = 255 + 80;
v1->unk_6C[1] = 0 - 80;
v1->unk_6C[2] = v1->unk_5C[0].unk_00;
v1->unk_78[0] = v1->unk_5C[0].unk_02 + v0;
v1->unk_78[1] = v1->unk_5C[1].unk_02 + v0;
v1->unk_78[2] = v1->unk_5C[0].unk_02 + v0;
v1->unk_6C[2] = v1->unk_5C[0].x;
v1->unk_78[0] = v1->unk_5C[0].y + v0;
v1->unk_78[1] = v1->unk_5C[1].y + v0;
v1->unk_78[2] = v1->unk_5C[0].y + v0;
v1->unk_84[0] = 0 + 10;
v1->unk_84[1] = -0x280 - 10;
v1->unk_84[2] = PokemonSprite_GetAttribute(v1->unk_1C.unk_08, MON_SPRITE_Z_CENTER);
v1->unk_84[2] = PokemonSprite_GetAttribute(v1->unk_1C.monSprite, MON_SPRITE_Z_CENTER);
} else {
v1->unk_6C[0] = 0 - 80;
v1->unk_6C[1] = 255 + 80;
v1->unk_6C[2] = v1->unk_5C[0].unk_00;
v1->unk_78[0] = v1->unk_5C[0].unk_02 + v0;
v1->unk_78[1] = v1->unk_5C[1].unk_02 + v0;
v1->unk_78[2] = v1->unk_5C[0].unk_02 + v0;
v1->unk_6C[2] = v1->unk_5C[0].x;
v1->unk_78[0] = v1->unk_5C[0].y + v0;
v1->unk_78[1] = v1->unk_5C[1].y + v0;
v1->unk_78[2] = v1->unk_5C[0].y + v0;
v1->unk_84[0] = -0x280 - 10;
v1->unk_84[1] = 0 + 10;
v1->unk_84[2] = PokemonSprite_GetAttribute(v1->unk_1C.unk_08, MON_SPRITE_Z_CENTER);
v1->unk_84[2] = PokemonSprite_GetAttribute(v1->unk_1C.monSprite, MON_SPRITE_Z_CENTER);
}
BattleAnimSystem_StartAnimTask(v1->unk_00.battleAnimSystem, ov12_0222F208, v1);

View File

@ -2,11 +2,11 @@
#include <nitro.h>
#include <string.h>
#include "constants/battle/battle_anim.h"
#include "overlay012/battle_anim_system.h"
#include "overlay012/ov12_02235254.h"
#include "overlay012/struct_ov12_02235350.h"
#include "overlay012/struct_ov12_02235998.h"
#include "math_util.h"
#include "heap.h"
#include "inlines.h"
@ -72,7 +72,7 @@ int BattleAnimUtil_GetBattlerOfType(BattleAnimSystem *system, int type)
return 0;
}
int BattleAnimUtil_GetAlliedBattlerType(BattleAnimSystem *system, int battler)
int BattleAnimUtil_GetAlliedBattler(BattleAnimSystem *system, int battler)
{
int type = BattleAnimSystem_GetBattlerType(system, battler);
if (type == BATTLER_TYPE_SOLO_PLAYER || type == BATTLER_TYPE_SOLO_ENEMY) {
@ -132,9 +132,9 @@ int BattleAnimUtil_GetOpposingBattlerType(int battlerType)
return BATTLER_TYPE_SOLO_PLAYER;
}
void ov12_02235350(int param0, int param1, UnkStruct_ov12_02235350 *param2)
void ov12_02235350(int param0, int param1, Point2D *param2)
{
const UnkStruct_ov12_02235350 v0[] = {
const Point2D v0[] = {
{ 0x40, 0x70 },
{ 0xC0, 0x30 },
{ 0x28, 0x70 },
@ -142,7 +142,7 @@ void ov12_02235350(int param0, int param1, UnkStruct_ov12_02235350 *param2)
{ 0x50, 0x78 },
{ 0xB0, 0x2A }
};
const UnkStruct_ov12_02235350 v1[] = {
const Point2D v1[] = {
{ 0xD8, 0x70 },
{ 0x50, 0x2A },
{ 0xD8, 0x70 },
@ -159,7 +159,7 @@ void ov12_02235350(int param0, int param1, UnkStruct_ov12_02235350 *param2)
*param2 = v0[param0];
}
void ov12_022353AC(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235350 *param2)
void ov12_022353AC(BattleAnimSystem *param0, int param1, Point2D *param2)
{
int v0 = BattleAnimUtil_GetBattlerType(param0, param1);
int v1 = BattleAnimSystem_IsContest(param0);
@ -685,25 +685,25 @@ void ov12_02235838(BattleAnimSystem *param0, int param1, BOOL param2)
G2_SetWndOutsidePlane((1 << BattleAnimSystem_GetBgID(param0, 0)) | (1 << BattleAnimSystem_GetBgID(param0, 1)) | GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_OBJ, 1);
}
void ov12_02235918(PokemonSprite *param0, UnkStruct_ov12_02235350 *param1)
void BattleAnimUtil_GetMonSpritePos(PokemonSprite *sprite, Point2D *pos)
{
if (param0 == NULL) {
param1->unk_00 = 0;
param1->unk_02 = 0;
if (sprite == NULL) {
pos->x = 0;
pos->y = 0;
return;
} else if (PokemonSprite_IsActive(param0) == 0) {
param1->unk_00 = 0;
param1->unk_02 = 0;
} else if (PokemonSprite_IsActive(sprite) == FALSE) {
pos->x = 0;
pos->y = 0;
return;
}
param1->unk_00 = PokemonSprite_GetAttribute(param0, MON_SPRITE_X_CENTER);
param1->unk_02 = PokemonSprite_GetAttribute(param0, MON_SPRITE_Y_CENTER);
pos->x = PokemonSprite_GetAttribute(sprite, MON_SPRITE_X_CENTER);
pos->y = PokemonSprite_GetAttribute(sprite, MON_SPRITE_Y_CENTER);
}
void ov12_02235950(ManagedSprite *param0, UnkStruct_ov12_02235350 *param1)
void BattleAnimUtil_GetSpritePos(ManagedSprite *sprite, Point2D *pos)
{
ManagedSprite_GetPositionXY(param0, &(param1->unk_00), &(param1->unk_02));
ManagedSprite_GetPositionXY(sprite, &pos->x, &pos->y);
}
void ov12_0223595C(BattleAnimSystem *system, UnkStruct_ov12_0223595C *param1)
@ -720,172 +720,168 @@ void ov12_0223595C(BattleAnimSystem *system, UnkStruct_ov12_0223595C *param1)
param1->paletteData = BattleAnimSystem_GetPaletteData(system);
}
void ov12_02235998(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235998 *param2, int *param3)
void BattleAnimUtil_GetBattlerSprites(BattleAnimSystem *system, int targets, BattleAnimSpriteInfo *sprites, int *count)
{
*param3 = 0;
*count = 0;
if (inline_ov12_02235998(param1, 0x40) == 1) {
int v0 = BattleAnimSystem_GetAttacker(param0);
int v1;
int v2;
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_ALL_BATTLERS) == TRUE) {
int attacker = BattleAnimSystem_GetAttacker(system);
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v0);
// Add the attacker sprite
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, attacker);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v0;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = attacker;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
v1 = BattleAnimUtil_GetAlliedBattlerType(param0, v0);
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v1);
// Add the attacker's ally's sprite
int battler = BattleAnimUtil_GetAlliedBattler(system, attacker);
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v1;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
v2 = BattleAnimSystem_GetBattlerType(param0, v0);
v2 = BattleAnimUtil_GetOpposingBattlerType(v2);
v1 = BattleAnimUtil_GetBattlerOfType(param0, v2);
// Add the opposing battler's sprite
int type = BattleAnimSystem_GetBattlerType(system, attacker);
type = BattleAnimUtil_GetOpposingBattlerType(type);
battler = BattleAnimUtil_GetBattlerOfType(system, type);
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v1);
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v1;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
v1 = BattleAnimUtil_GetAlliedBattlerType(param0, v1);
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v1);
// Add the opposing battler's ally's sprite
battler = BattleAnimUtil_GetAlliedBattler(system, battler);
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v1;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
return;
}
if (inline_ov12_02235998(param1, 0x20) == 1) {
int v3 = BattleAnimSystem_GetAttacker(param0);
int v4;
int v5;
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_NOT_ATTACKER) == TRUE) {
int attacker = BattleAnimSystem_GetAttacker(system);
v4 = BattleAnimUtil_GetAlliedBattlerType(param0, v3);
// Add the attacker's ally's sprite
int battler = BattleAnimUtil_GetAlliedBattler(system, attacker);
if (battler != attacker) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (v4 != v3) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v4);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v4;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
v5 = BattleAnimSystem_GetBattlerType(param0, v3);
v5 = BattleAnimUtil_GetOpposingBattlerType(v5);
v4 = BattleAnimUtil_GetBattlerOfType(param0, v5);
// Add the opposing battler's sprite
int type = BattleAnimSystem_GetBattlerType(system, attacker);
type = BattleAnimUtil_GetOpposingBattlerType(type);
battler = BattleAnimUtil_GetBattlerOfType(system, type);
if (battler != attacker) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (v4 != v3) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v4);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v4;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
v4 = BattleAnimUtil_GetAlliedBattlerType(param0, v4);
// Add the opposing battler's ally's sprite
battler = BattleAnimUtil_GetAlliedBattler(system, battler);
if (battler != attacker) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, battler);
if (v4 != v3) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, v4);
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = v4;
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = battler;
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
return;
}
if (inline_ov12_02235998(param1, 0x2) == 1) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetAttacker(param0));
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = BattleAnimSystem_GetAttacker(param0);
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_ATTACKER) == TRUE) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, BattleAnimSystem_GetAttacker(system));
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = BattleAnimSystem_GetAttacker(system);
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
if (inline_ov12_02235998(param1, 0x4) == 1) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0)));
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetAttacker(param0));
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (BattleAnimSystem_IsDoubleBattle(system) == TRUE) {
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_ATTACKER_PARTNER) == TRUE) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, BattleAnimUtil_GetAlliedBattler(system, BattleAnimSystem_GetAttacker(system)));
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = BattleAnimUtil_GetAlliedBattler(system, BattleAnimSystem_GetAttacker(system));
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
}
if (inline_ov12_02235998(param1, 0x8) == 1) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimSystem_GetDefender(param0));
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = BattleAnimSystem_GetDefender(param0);
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_DEFENDER) == TRUE) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, BattleAnimSystem_GetDefender(system));
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = BattleAnimSystem_GetDefender(system);
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
if (BattleAnimSystem_IsDoubleBattle(param0) == 1) {
if (inline_ov12_02235998(param1, 0x10) == 1) {
param2[*param3].unk_08 = BattleAnimSystem_GetBattlerSprite(param0, BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0)));
if (param2[*param3].unk_08 != NULL) {
param2[*param3].unk_10 = BattleAnimUtil_GetAlliedBattlerType(param0, BattleAnimSystem_GetDefender(param0));
ov12_02235918(param2[*param3].unk_08, &param2[*param3].unk_04);
(*param3)++;
if (BattleAnimSystem_IsDoubleBattle(system) == TRUE) {
if (BattleAnimUtil_IsMaskSet(targets, BATTLE_ANIM_DEFENDER_PARTNER) == TRUE) {
sprites[*count].monSprite = BattleAnimSystem_GetBattlerSprite(system, BattleAnimUtil_GetAlliedBattler(system, BattleAnimSystem_GetDefender(system)));
if (sprites[*count].monSprite != NULL) {
sprites[*count].battler = BattleAnimUtil_GetAlliedBattler(system, BattleAnimSystem_GetDefender(system));
BattleAnimUtil_GetMonSpritePos(sprites[*count].monSprite, &sprites[*count].pos);
(*count)++;
}
}
}
}
void ov12_02235D74(BattleAnimSystem *param0, int param1, UnkStruct_ov12_02235998 *param2, int *param3)
void ov12_02235D74(BattleAnimSystem *param0, int param1, BattleAnimSpriteInfo *param2, int *param3)
{
*param3 = 0;
if (inline_ov12_02235998(param1, 0x2) == 1) {
param2[*param3].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, *param3);
ov12_02235950(param2[*param3].unk_0C, &param2[*param3].unk_04);
if (BattleAnimUtil_IsMaskSet(param1, 0x2) == 1) {
param2[*param3].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, *param3);
BattleAnimUtil_GetSpritePos(param2[*param3].hwSprite, &param2[*param3].pos);
(*param3)++;
}
if (inline_ov12_02235998(param1, 0x4) == 1) {
param2[*param3].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, *param3);
ov12_02235950(param2[*param3].unk_0C, &param2[*param3].unk_04);
if (BattleAnimUtil_IsMaskSet(param1, 0x4) == 1) {
param2[*param3].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, *param3);
BattleAnimUtil_GetSpritePos(param2[*param3].hwSprite, &param2[*param3].pos);
(*param3)++;
}
if (inline_ov12_02235998(param1, 0x8) == 1) {
param2[*param3].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, *param3);
ov12_02235950(param2[*param3].unk_0C, &param2[*param3].unk_04);
if (BattleAnimUtil_IsMaskSet(param1, 0x8) == 1) {
param2[*param3].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, *param3);
BattleAnimUtil_GetSpritePos(param2[*param3].hwSprite, &param2[*param3].pos);
(*param3)++;
}
if (inline_ov12_02235998(param1, 0x10) == 1) {
param2[*param3].unk_0C = BattleAnimSystem_GetPokemonSprite(param0, *param3);
ov12_02235950(param2[*param3].unk_0C, &param2[*param3].unk_04);
if (BattleAnimUtil_IsMaskSet(param1, 0x10) == 1) {
param2[*param3].hwSprite = BattleAnimSystem_GetPokemonSprite(param0, *param3);
BattleAnimUtil_GetSpritePos(param2[*param3].hwSprite, &param2[*param3].pos);
(*param3)++;
}
}