mirror of
https://github.com/pret/pokeemerald.git
synced 2026-08-24 19:15:33 -05:00
Fix UB in battle_anim_ground (#2273)
Some checks failed
CI / build (push) Has been cancelled
Some checks failed
CI / build (push) Has been cancelled
gBattleAnimArgs is 8 elements, not 15. Co-authored-by: AZero13 <83477269+SiliconA-Z@users.noreply.github.com>
This commit is contained in:
@@ -3318,8 +3318,14 @@ Move_MILK_DRINK:
|
||||
Move_MAGNITUDE:
|
||||
createvisualtask AnimTask_IsPowerOver99, 2
|
||||
waitforvisualfinish
|
||||
.ifdef UBFIX
|
||||
jumpreteq FALSE, MagnitudeRegular
|
||||
jumpreteq TRUE, MagnitudeIntense
|
||||
.else
|
||||
jumpargeq 15, FALSE, MagnitudeRegular
|
||||
jumpargeq 15, TRUE, MagnitudeIntense
|
||||
.endif
|
||||
|
||||
MagnitudeEnd:
|
||||
end
|
||||
MagnitudeRegular:
|
||||
|
||||
@@ -415,7 +415,7 @@ static void AnimTask_DigSetVisibleUnderground(u8 taskId)
|
||||
|
||||
static void AnimTask_DigRiseUpFromHole(u8 taskId)
|
||||
{
|
||||
u8 var0;
|
||||
u8 y;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
@@ -428,9 +428,9 @@ static void AnimTask_DigRiseUpFromHole(u8 taskId)
|
||||
else
|
||||
task->data[12] = gBattle_BG2_X;
|
||||
|
||||
var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[14] = var0 - 32;
|
||||
task->data[15] = var0 + 32;
|
||||
y = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[14] = y - 32;
|
||||
task->data[15] = y + 32;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -503,7 +503,7 @@ static void SetDigScanlineEffect(u8 useBG1, s16 y, s16 endY)
|
||||
// arg 5: duration
|
||||
void AnimDirtPlumeParticle(struct Sprite *sprite)
|
||||
{
|
||||
s8 battler;
|
||||
u16 battler; // Should be u8.
|
||||
s16 xOffset;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
@@ -542,7 +542,7 @@ static void AnimDirtPlumeParticle_Step(struct Sprite *sprite)
|
||||
// arg 2: duration
|
||||
static void AnimDigDirtMound(struct Sprite *sprite)
|
||||
{
|
||||
s8 battler;
|
||||
u8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battler = gBattleAnimAttacker;
|
||||
@@ -708,7 +708,7 @@ static void AnimTask_ShakeBattlers(u8 taskId)
|
||||
static void SetBattlersXOffsetForShake(struct Task *task)
|
||||
{
|
||||
u16 i;
|
||||
u16 xOffset;
|
||||
s16 xOffset;
|
||||
|
||||
if ((task->tTimer & 1) == 0)
|
||||
xOffset = (task->tHorizOffset / 2) + (task->tHorizOffset & 1);
|
||||
@@ -733,7 +733,11 @@ static void SetBattlersXOffsetForShake(struct Task *task)
|
||||
|
||||
void AnimTask_IsPowerOver99(u8 taskId)
|
||||
{
|
||||
#ifdef UBFIX
|
||||
gBattleAnimArgs[7] = gAnimMovePower > 99;
|
||||
#else
|
||||
gBattleAnimArgs[15] = gAnimMovePower > 99;
|
||||
#endif
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user