mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
Match sub_8159308
This commit is contained in:
parent
92851ba4e6
commit
2c432c314a
@ -62,7 +62,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
bool8 IsContest(void);
|
||||
s8 BattleAnimAdjustPanning(s8 pan);
|
||||
s8 BattleAnimAdjustPanning2(s8 pan);
|
||||
s16 KeepPanInRange(s16 a);
|
||||
s16 KeepPanInRange(s16 a, int oldPan);
|
||||
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
|
||||
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
|
||||
void sub_80A477C(bool8);
|
||||
|
@ -2936,7 +2936,7 @@ s8 BattleAnimAdjustPanning2(s8 pan)
|
||||
return pan;
|
||||
}
|
||||
|
||||
s16 KeepPanInRange(s16 panArg)
|
||||
s16 KeepPanInRange(s16 panArg, int oldPan)
|
||||
{
|
||||
s16 pan = panArg;
|
||||
|
||||
|
@ -53,7 +53,7 @@ static void sub_8158B98(u8 taskId)
|
||||
PlaySE12WithPanning(gTasks[taskId].data[0], pan);
|
||||
}
|
||||
pan += panIncrement;
|
||||
gTasks[taskId].data[2] = KeepPanInRange(pan);
|
||||
gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement);
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,9 +116,12 @@ static void sub_8158D08(u8 taskId)
|
||||
|
||||
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
|
||||
{
|
||||
u16 dPan, oldPan;
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11] += gTasks[taskId].data[3];
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11]);
|
||||
dPan = gTasks[taskId].data[3];
|
||||
oldPan = gTasks[taskId].data[11] ;
|
||||
gTasks[taskId].data[11] = dPan + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
}
|
||||
// task end
|
||||
@ -368,71 +371,21 @@ void sub_8159278(u8 taskId)
|
||||
sub_8159308(taskId);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8159308(u8 taskId)
|
||||
{
|
||||
s16 panIncrement = gTasks[taskId].data[3];
|
||||
u16 panIncrement = gTasks[taskId].data[3];
|
||||
|
||||
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
|
||||
{
|
||||
u16 oldPan;
|
||||
gTasks[taskId].data[10] = 0;
|
||||
|
||||
gTasks[taskId].data[11] += panIncrement;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11]);
|
||||
oldPan = gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11] = panIncrement + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
|
||||
gUnknown_02038440 = gTasks[taskId].data[11];
|
||||
if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_8159308(u8 taskId)
|
||||
{
|
||||
asm_unified(" push {r4,r5,lr}\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
adds r5, r0, 0\n\
|
||||
ldr r1, =gTasks\n\
|
||||
lsls r0, r5, 2\n\
|
||||
adds r0, r5\n\
|
||||
lsls r0, 3\n\
|
||||
adds r4, r0, r1\n\
|
||||
ldrh r2, [r4, 0xE]\n\
|
||||
ldrh r0, [r4, 0x1C]\n\
|
||||
adds r1, r0, 0x1\n\
|
||||
strh r1, [r4, 0x1C]\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r3, 0x12\n\
|
||||
ldrsh r1, [r4, r3]\n\
|
||||
cmp r0, r1\n\
|
||||
bne _08159342\n\
|
||||
movs r0, 0\n\
|
||||
strh r0, [r4, 0x1C]\n\
|
||||
ldrh r1, [r4, 0x1E]\n\
|
||||
adds r0, r2, r1\n\
|
||||
strh r0, [r4, 0x1E]\n\
|
||||
movs r2, 0x1E\n\
|
||||
ldrsh r0, [r4, r2]\n\
|
||||
bl KeepPanInRange\n\
|
||||
strh r0, [r4, 0x1E]\n\
|
||||
_08159342:\n\
|
||||
ldr r1, =gUnknown_02038440\n\
|
||||
ldrh r0, [r4, 0x1E]\n\
|
||||
strb r0, [r1]\n\
|
||||
movs r3, 0x1E\n\
|
||||
ldrsh r1, [r4, r3]\n\
|
||||
movs r2, 0xC\n\
|
||||
ldrsh r0, [r4, r2]\n\
|
||||
cmp r1, r0\n\
|
||||
bne _0815935A\n\
|
||||
adds r0, r5, 0\n\
|
||||
bl DestroyAnimVisualTask\n\
|
||||
_0815935A:\n\
|
||||
pop {r4,r5}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user