mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-05 02:40:56 +01:00
Some nonmatchings
This commit is contained in:
parent
5bc640da9b
commit
518f9c0638
508
src/ice.c
508
src/ice.c
@ -47,7 +47,7 @@ void AnimIceBallParticle(struct Sprite *);
|
|||||||
void AnimTask_Haze2(u8);
|
void AnimTask_Haze2(u8);
|
||||||
void AnimTask_OverlayFogTiles(u8);
|
void AnimTask_OverlayFogTiles(u8);
|
||||||
void AnimTask_Hail2(u8);
|
void AnimTask_Hail2(u8);
|
||||||
bool8 GenerateHailParticle(u8, u8, u8, u8);
|
bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
|
||||||
|
|
||||||
const union AnimCmd gUnknown_08595A48[] =
|
const union AnimCmd gUnknown_08595A48[] =
|
||||||
{
|
{
|
||||||
@ -522,37 +522,33 @@ const struct SpriteTemplate gUnknown_08595DFC =
|
|||||||
.callback = InitIceBallParticle,
|
.callback = InitIceBallParticle,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// probably unused
|
// probably unused
|
||||||
#ifdef NONMATCHING
|
|
||||||
static void sub_810B6C4(struct Sprite *sprite)
|
static void sub_810B6C4(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 targetX, targetY, attackerX, attackerY;
|
s16 targetX, targetY, attackerX, attackerY;
|
||||||
s16 i;
|
|
||||||
|
|
||||||
sprite->oam.tileNum += 7;
|
sprite->oam.tileNum += 7;
|
||||||
targetX = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
targetY = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||||
attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->data[0] = gBattleAnimArgs[4];
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
sprite->data[1] = gBattleAnimArgs[0] + attackerX;
|
sprite->data[1] = gBattleAnimArgs[0] + attackerX;
|
||||||
sprite->data[2] = gBattleAnimArgs[2] + targetX;
|
sprite->data[2] = gBattleAnimArgs[2] + targetX;
|
||||||
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
|
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
|
||||||
sprite->data[4] = gBattleAnimArgs[3] + targetY;
|
sprite->data[4] = gBattleAnimArgs[3] + targetY;
|
||||||
sub_80A64EC(sprite);
|
sub_80A64EC(sprite);
|
||||||
while ((targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192))
|
|
||||||
{
|
for (;(targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192);
|
||||||
targetX += sprite->data[1];
|
targetX += sprite->data[1], targetY += sprite->data[2])
|
||||||
targetY += sprite->data[2];
|
;
|
||||||
}
|
|
||||||
sprite->data[1] = -sprite->data[1];
|
sprite->data[1] = -sprite->data[1];
|
||||||
sprite->data[2] = -sprite->data[2];
|
sprite->data[2] = -sprite->data[2];
|
||||||
while ((attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192))
|
for (;(attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192);
|
||||||
{
|
attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||||
attackerX += sprite->data[1];
|
;
|
||||||
attackerY += sprite->data[2];
|
|
||||||
}
|
|
||||||
sprite->pos1.x = attackerX;
|
sprite->pos1.x = attackerX;
|
||||||
sprite->pos1.y = attackerY;
|
sprite->pos1.y = attackerY;
|
||||||
sprite->data[0] = gBattleAnimArgs[4];
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
@ -565,195 +561,6 @@ static void sub_810B6C4(struct Sprite *sprite)
|
|||||||
sprite->data[4] = gBattleAnimArgs[6];
|
sprite->data[4] = gBattleAnimArgs[6];
|
||||||
sprite->callback = sub_810B848;
|
sprite->callback = sub_810B848;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
static void sub_810B6C4(struct Sprite *sprite)
|
|
||||||
{
|
|
||||||
asm_unified("push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
sub sp, 0x4\n\
|
|
||||||
adds r5, r0, 0\n\
|
|
||||||
ldrh r2, [r5, 0x4]\n\
|
|
||||||
lsls r1, r2, 22\n\
|
|
||||||
lsrs r1, 22\n\
|
|
||||||
adds r1, 0x7\n\
|
|
||||||
ldr r3, =0x000003ff\n\
|
|
||||||
adds r0, r3, 0\n\
|
|
||||||
ands r1, r0\n\
|
|
||||||
ldr r0, =0xfffffc00\n\
|
|
||||||
ands r0, r2\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
strh r0, [r5, 0x4]\n\
|
|
||||||
ldr r4, =gBattleAnimTarget\n\
|
|
||||||
ldrb r0, [r4]\n\
|
|
||||||
movs r1, 0x2\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r0, 24\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
ldrb r0, [r4]\n\
|
|
||||||
movs r1, 0x3\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r0, 24\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
ldr r4, =gBattleAnimAttacker\n\
|
|
||||||
ldrb r0, [r4]\n\
|
|
||||||
movs r1, 0x2\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r3, r0, 24\n\
|
|
||||||
ldrb r0, [r4]\n\
|
|
||||||
movs r1, 0x3\n\
|
|
||||||
str r3, [sp]\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r6, r0, 24\n\
|
|
||||||
ldr r1, =gBattleAnimArgs\n\
|
|
||||||
ldrh r0, [r1, 0x8]\n\
|
|
||||||
strh r0, [r5, 0x2E]\n\
|
|
||||||
ldrh r0, [r1]\n\
|
|
||||||
ldr r3, [sp]\n\
|
|
||||||
adds r0, r3\n\
|
|
||||||
strh r0, [r5, 0x30]\n\
|
|
||||||
ldrh r0, [r1, 0x4]\n\
|
|
||||||
mov r4, r9\n\
|
|
||||||
adds r0, r4, r0\n\
|
|
||||||
strh r0, [r5, 0x32]\n\
|
|
||||||
ldrh r0, [r1, 0x2]\n\
|
|
||||||
adds r0, r6\n\
|
|
||||||
strh r0, [r5, 0x34]\n\
|
|
||||||
ldrh r0, [r1, 0x6]\n\
|
|
||||||
mov r7, r8\n\
|
|
||||||
adds r0, r7, r0\n\
|
|
||||||
strh r0, [r5, 0x36]\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
bl sub_80A64EC\n\
|
|
||||||
adds r4, 0x20\n\
|
|
||||||
movs r0, 0x98\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
mov r12, r0\n\
|
|
||||||
ldr r3, [sp]\n\
|
|
||||||
cmp r4, r12\n\
|
|
||||||
bhi _0810B79E\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
adds r0, 0x20\n\
|
|
||||||
ldrh r1, [r5, 0x30]\n\
|
|
||||||
ldrh r2, [r5, 0x32]\n\
|
|
||||||
cmp r0, 0xE0\n\
|
|
||||||
bhi _0810B79E\n\
|
|
||||||
adds r4, r1, 0\n\
|
|
||||||
mov r10, r12\n\
|
|
||||||
_0810B76A:\n\
|
|
||||||
mov r7, r9\n\
|
|
||||||
lsls r1, r7, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
adds r1, r4\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
mov r7, r8\n\
|
|
||||||
lsls r0, r7, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
lsrs r0, r1, 16\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
movs r7, 0x80\n\
|
|
||||||
lsls r7, 14\n\
|
|
||||||
adds r1, r7\n\
|
|
||||||
lsrs r1, 16\n\
|
|
||||||
cmp r1, r10\n\
|
|
||||||
bhi _0810B79E\n\
|
|
||||||
mov r1, r8\n\
|
|
||||||
lsls r0, r1, 16\n\
|
|
||||||
adds r0, r7\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
cmp r0, 0xE0\n\
|
|
||||||
bls _0810B76A\n\
|
|
||||||
_0810B79E:\n\
|
|
||||||
ldrh r0, [r5, 0x30]\n\
|
|
||||||
negs r7, r0\n\
|
|
||||||
strh r7, [r5, 0x30]\n\
|
|
||||||
ldrh r0, [r5, 0x32]\n\
|
|
||||||
negs r4, r0\n\
|
|
||||||
strh r4, [r5, 0x32]\n\
|
|
||||||
lsls r0, r3, 16\n\
|
|
||||||
movs r1, 0x80\n\
|
|
||||||
lsls r1, 14\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
movs r2, 0x98\n\
|
|
||||||
lsls r2, 1\n\
|
|
||||||
mov r12, r2\n\
|
|
||||||
ldr r1, =gBattleAnimArgs\n\
|
|
||||||
mov r10, r1\n\
|
|
||||||
cmp r0, r12\n\
|
|
||||||
bhi _0810B80A\n\
|
|
||||||
lsls r1, r6, 16\n\
|
|
||||||
movs r2, 0x80\n\
|
|
||||||
lsls r2, 14\n\
|
|
||||||
adds r0, r1, r2\n\
|
|
||||||
b _0810B802\n\
|
|
||||||
.pool\n\
|
|
||||||
_0810B7E0:\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
adds r1, r7\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
asrs r0, r2, 16\n\
|
|
||||||
adds r0, r4\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r6, r0, 16\n\
|
|
||||||
lsrs r3, r1, 16\n\
|
|
||||||
movs r0, 0x80\n\
|
|
||||||
lsls r0, 14\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
lsrs r1, 16\n\
|
|
||||||
cmp r1, r12\n\
|
|
||||||
bhi _0810B80A\n\
|
|
||||||
lsls r1, r6, 16\n\
|
|
||||||
adds r0, r1, r0\n\
|
|
||||||
_0810B802:\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
adds r2, r1, 0\n\
|
|
||||||
cmp r0, 0xE0\n\
|
|
||||||
bls _0810B7E0\n\
|
|
||||||
_0810B80A:\n\
|
|
||||||
strh r3, [r5, 0x20]\n\
|
|
||||||
strh r6, [r5, 0x22]\n\
|
|
||||||
mov r1, r10\n\
|
|
||||||
ldrh r0, [r1, 0x8]\n\
|
|
||||||
strh r0, [r5, 0x2E]\n\
|
|
||||||
strh r3, [r5, 0x30]\n\
|
|
||||||
mov r2, r9\n\
|
|
||||||
strh r2, [r5, 0x32]\n\
|
|
||||||
strh r6, [r5, 0x34]\n\
|
|
||||||
mov r3, r8\n\
|
|
||||||
strh r3, [r5, 0x36]\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
bl sub_80A64EC\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
ldrh r0, [r7, 0xA]\n\
|
|
||||||
strh r0, [r5, 0x34]\n\
|
|
||||||
ldrh r0, [r7, 0xC]\n\
|
|
||||||
strh r0, [r5, 0x36]\n\
|
|
||||||
ldr r0, =sub_810B848\n\
|
|
||||||
str r0, [r5, 0x1C]\n\
|
|
||||||
add sp, 0x4\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void sub_810B848(struct Sprite *sprite)
|
void sub_810B848(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
@ -797,14 +604,14 @@ void AnimIcePunchSwirlingParticle(struct Sprite *sprite)
|
|||||||
void AnimIceBeamParticle(struct Sprite *sprite)
|
void AnimIceBeamParticle(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
|
|
||||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
sprite->data[2] -= gBattleAnimArgs[2];
|
sprite->data[2] -= gBattleAnimArgs[2];
|
||||||
else
|
else
|
||||||
sprite->data[2] += gBattleAnimArgs[2];
|
sprite->data[2] += gBattleAnimArgs[2];
|
||||||
|
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
sprite->data[0] = gBattleAnimArgs[4];
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||||
sprite->callback = StartAnimLinearTranslation;
|
sprite->callback = StartAnimLinearTranslation;
|
||||||
@ -863,8 +670,8 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
|||||||
|
|
||||||
if (!gBattleAnimArgs[5])
|
if (!gBattleAnimArgs[5])
|
||||||
{
|
{
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -983,8 +790,8 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
|||||||
|
|
||||||
if (!gBattleAnimArgs[7])
|
if (!gBattleAnimArgs[7])
|
||||||
{
|
{
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1274,8 +1081,8 @@ void AnimTask_Haze2(u8 taskId)
|
|||||||
// arg 5: ??? unknown (seems to vibrate target mon somehow)
|
// arg 5: ??? unknown (seems to vibrate target mon somehow)
|
||||||
void AnimThrowMistBall(struct Sprite *sprite)
|
void AnimThrowMistBall(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1380,7 +1187,7 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
sprite->data[0] = gBattleAnimArgs[0];
|
sprite->data[0] = gBattleAnimArgs[0];
|
||||||
|
|
||||||
if (GetBattlerSpriteCoord(gBattleAnimAttacker, 2) < GetBattlerSpriteCoord(gBattleAnimTarget, 2))
|
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
|
||||||
sprite->data[7] = 0x8000;
|
sprite->data[7] = 0x8000;
|
||||||
|
|
||||||
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
|
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
|
||||||
@ -1394,22 +1201,22 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
|||||||
sprite->data[6] = 1;
|
sprite->data[6] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
if (gBattleAnimArgs[7])
|
if (gBattleAnimArgs[7])
|
||||||
{
|
{
|
||||||
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3];
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[3];
|
||||||
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
|
||||||
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3];
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[3];
|
||||||
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
|
||||||
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1441,7 +1248,7 @@ void MovePoisonGasCloud(struct Sprite *sprite)
|
|||||||
if (sprite->data[0] <= 0)
|
if (sprite->data[0] <= 0)
|
||||||
{
|
{
|
||||||
sprite->data[0] = 80;
|
sprite->data[0] = 80;
|
||||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||||
sprite->data[1] = sprite->pos1.x;
|
sprite->data[1] = sprite->pos1.x;
|
||||||
sprite->data[2] = sprite->pos1.x;
|
sprite->data[2] = sprite->pos1.x;
|
||||||
sprite->pos1.y += sprite->pos2.y;
|
sprite->pos1.y += sprite->pos2.y;
|
||||||
@ -1575,238 +1382,63 @@ void AnimTask_Hail2(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c)
|
||||||
bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
|
|
||||||
{
|
{
|
||||||
bool8 possibleBool = FALSE;
|
u8 id;
|
||||||
// s8 unk = gUnknown_08595CB4[a].unk3;
|
|
||||||
const struct HailStruct *hailData = &gUnknown_08595CB4[a];
|
|
||||||
s8 unk = hailData->unk3;
|
|
||||||
u8 battler;
|
|
||||||
s16 battlerX, battlerY;
|
s16 battlerX, battlerY;
|
||||||
u8 spriteId;
|
|
||||||
// struct Sprite *sprite;
|
|
||||||
s16 spriteX;
|
s16 spriteX;
|
||||||
|
bool8 possibleBool = FALSE;
|
||||||
|
s8 unk = gUnknown_08595CB4[hailStructId].unk3;
|
||||||
|
|
||||||
if (unk != 2)
|
if (unk != 2)
|
||||||
{
|
{
|
||||||
battler = GetBattlerAtPosition(hailData->unk2);
|
id = GetBattlerAtPosition(gUnknown_08595CB4[hailStructId].unk2);
|
||||||
if (IsBattlerSpriteVisible(battler))
|
if (IsBattlerSpriteVisible(id))
|
||||||
{
|
{
|
||||||
possibleBool = TRUE;
|
possibleBool = TRUE;
|
||||||
battlerX = GetBattlerSpriteCoord(battler, 2);
|
battlerX = GetBattlerSpriteCoord(id, BATTLER_COORD_X_2);
|
||||||
battlerY = GetBattlerSpriteCoord(battler, 3);
|
battlerY = GetBattlerSpriteCoord(id, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
switch (unk)
|
switch (unk)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
battlerX -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
|
battlerX -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
|
||||||
battlerY -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
battlerY -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
battlerX += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
|
battlerX += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
|
||||||
battlerY += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
battlerY += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
battlerX = (gUnknown_08595CB4[hailStructId].unk0);
|
||||||
|
battlerY = (gUnknown_08595CB4[hailStructId].unk1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
battlerX = (hailData->unk0);
|
battlerX = (gUnknown_08595CB4[hailStructId].unk0);
|
||||||
battlerY = (hailData->unk1);
|
battlerY = (gUnknown_08595CB4[hailStructId].unk1);
|
||||||
}
|
}
|
||||||
spriteX = battlerX - ((battlerY + 8) / 2);
|
spriteX = battlerX - ((battlerY + 8) / 2);
|
||||||
spriteId = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
|
id = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
|
||||||
if (spriteId == MAX_SPRITES)
|
if (id == MAX_SPRITES)
|
||||||
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
// sprite = &gSprites[spriteId];
|
}
|
||||||
StartSpriteAffineAnim(&gSprites[spriteId], b);
|
else
|
||||||
gSprites[spriteId].data[0] = possibleBool;
|
{
|
||||||
gSprites[spriteId].data[3] = battlerX;
|
StartSpriteAffineAnim(&gSprites[id], affineAnimNum);
|
||||||
gSprites[spriteId].data[4] = battlerY;
|
gSprites[id].data[0] = possibleBool;
|
||||||
gSprites[spriteId].data[5] = b;
|
gSprites[id].data[3] = battlerX;
|
||||||
gSprites[spriteId].data[6] = taskId;
|
gSprites[id].data[4] = battlerY;
|
||||||
gSprites[spriteId].data[7] = c;
|
gSprites[id].data[5] = affineAnimNum;
|
||||||
return TRUE;
|
gSprites[id].data[6] = taskId;
|
||||||
|
gSprites[id].data[7] = c;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
|
|
||||||
{
|
|
||||||
asm_unified("push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
sub sp, 0x8\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsls r1, 24\n\
|
|
||||||
lsrs r1, 24\n\
|
|
||||||
mov r9, r1\n\
|
|
||||||
lsls r2, 24\n\
|
|
||||||
lsrs r2, 24\n\
|
|
||||||
str r2, [sp]\n\
|
|
||||||
lsls r3, 24\n\
|
|
||||||
lsrs r3, 24\n\
|
|
||||||
mov r10, r3\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
str r1, [sp, 0x4]\n\
|
|
||||||
ldr r1, =gUnknown_08595CB4\n\
|
|
||||||
lsrs r0, 22\n\
|
|
||||||
adds r4, r0, r1\n\
|
|
||||||
ldrb r0, [r4, 0x3]\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
asrs r0, 28\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
cmp r0, 0x2\n\
|
|
||||||
beq _0810CAD0\n\
|
|
||||||
ldrh r0, [r4, 0x2]\n\
|
|
||||||
lsls r0, 20\n\
|
|
||||||
lsrs r0, 24\n\
|
|
||||||
bl GetBattlerAtPosition\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r5, r0, 24\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
bl IsBattlerSpriteVisible\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
beq _0810CAD0\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
str r0, [sp, 0x4]\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0x2\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r7, r0, 24\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0x3\n\
|
|
||||||
bl GetBattlerSpriteCoord\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r6, r0, 24\n\
|
|
||||||
mov r1, r8\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
beq _0810CA60\n\
|
|
||||||
cmp r1, 0x1\n\
|
|
||||||
beq _0810CA96\n\
|
|
||||||
b _0810CAE2\n\
|
|
||||||
.pool\n\
|
|
||||||
_0810CA60:\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0x1\n\
|
|
||||||
bl GetBattlerSpriteCoordAttr\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
movs r1, 0x6\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
lsls r1, r7, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
subs r1, r0\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r7, r1, 16\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
bl GetBattlerSpriteCoordAttr\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
movs r1, 0x6\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
lsls r1, r6, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
subs r1, r0\n\
|
|
||||||
b _0810CACA\n\
|
|
||||||
_0810CA96:\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0x1\n\
|
|
||||||
bl GetBattlerSpriteCoordAttr\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
movs r1, 0x6\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
lsls r1, r7, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r7, r1, 16\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
bl GetBattlerSpriteCoordAttr\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
movs r1, 0x6\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
lsls r1, r6, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
_0810CACA:\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r6, r1, 16\n\
|
|
||||||
b _0810CAE2\n\
|
|
||||||
_0810CAD0:\n\
|
|
||||||
ldrh r0, [r4]\n\
|
|
||||||
lsls r0, 22\n\
|
|
||||||
asrs r0, 6\n\
|
|
||||||
lsrs r7, r0, 16\n\
|
|
||||||
ldr r0, [r4]\n\
|
|
||||||
lsls r0, 12\n\
|
|
||||||
asrs r0, 22\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r6, r0, 16\n\
|
|
||||||
_0810CAE2:\n\
|
|
||||||
lsls r0, r6, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
adds r0, 0x8\n\
|
|
||||||
lsrs r1, r0, 31\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
asrs r0, 1\n\
|
|
||||||
lsls r1, r7, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
subs r1, r0\n\
|
|
||||||
ldr r0, =gUnknown_08595D2C\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
movs r2, 0x8\n\
|
|
||||||
negs r2, r2\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
bl CreateSprite\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r5, r0, 24\n\
|
|
||||||
cmp r5, 0x40\n\
|
|
||||||
beq _0810CB44\n\
|
|
||||||
lsls r4, r5, 4\n\
|
|
||||||
adds r4, r5\n\
|
|
||||||
lsls r4, 2\n\
|
|
||||||
ldr r0, =gSprites\n\
|
|
||||||
adds r4, r0\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
mov r1, r9\n\
|
|
||||||
bl StartSpriteAffineAnim\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
ldrh r0, [r0, 0x4]\n\
|
|
||||||
strh r0, [r4, 0x2E]\n\
|
|
||||||
strh r7, [r4, 0x34]\n\
|
|
||||||
strh r6, [r4, 0x36]\n\
|
|
||||||
mov r1, r9\n\
|
|
||||||
strh r1, [r4, 0x38]\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
ldrh r0, [r0]\n\
|
|
||||||
strh r0, [r4, 0x3A]\n\
|
|
||||||
mov r1, r10\n\
|
|
||||||
strh r1, [r4, 0x3C]\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
b _0810CB46\n\
|
|
||||||
.pool\n\
|
|
||||||
_0810CB44:\n\
|
|
||||||
movs r0, 0\n\
|
|
||||||
_0810CB46:\n\
|
|
||||||
add sp, 0x8\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r1}\n\
|
|
||||||
bx r1\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void AnimHailBegin(struct Sprite *sprite)
|
void AnimHailBegin(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
@ -1874,8 +1506,8 @@ void InitIceBallAnim(struct Sprite *sprite)
|
|||||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||||
|
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
sprite->data[5] = gBattleAnimArgs[5];
|
sprite->data[5] = gBattleAnimArgs[5];
|
||||||
|
|
||||||
InitAnimArcTranslation(sprite);
|
InitAnimArcTranslation(sprite);
|
||||||
|
@ -205,7 +205,7 @@ void blockset_load_palette_to_gpu(u8);
|
|||||||
void sub_80C01CC(struct Sprite *sprite);
|
void sub_80C01CC(struct Sprite *sprite);
|
||||||
void sub_80C020C(u32, u32, u32, u32);
|
void sub_80C020C(u32, u32, u32, u32);
|
||||||
void sub_80C0354(u16, u8, u8);
|
void sub_80C0354(u16, u8, u8);
|
||||||
void sub_80C0460(u16, u8, u8);
|
void sub_80C0460(u16 weight, u8 left, u8 top);
|
||||||
void sub_80C09B0(u16);
|
void sub_80C09B0(u16);
|
||||||
u8 sub_80C0B44(u8, u16, u8, u8);
|
u8 sub_80C0B44(u8, u16, u8, u8);
|
||||||
void sub_80C0D30(u8, u16);
|
void sub_80C0D30(u8, u16);
|
||||||
@ -3926,9 +3926,6 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
|
|||||||
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
|
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHAR_PRIME (0xB4)
|
|
||||||
#define CHAR_DOUBLE_PRIME (0xB2)
|
|
||||||
|
|
||||||
void sub_80C0354(u16 height, u8 left, u8 top)
|
void sub_80C0354(u16 height, u8 left, u8 top)
|
||||||
{
|
{
|
||||||
u8 buffer[16];
|
u8 buffer[16];
|
||||||
@ -3954,10 +3951,10 @@ void sub_80C0354(u16 height, u8 left, u8 top)
|
|||||||
buffer[i++] = feet / 10 + CHAR_0;
|
buffer[i++] = feet / 10 + CHAR_0;
|
||||||
buffer[i++] = (feet % 10) + CHAR_0;
|
buffer[i++] = (feet % 10) + CHAR_0;
|
||||||
}
|
}
|
||||||
buffer[i++] = CHAR_PRIME;
|
buffer[i++] = CHAR_SGL_QUOT_RIGHT;
|
||||||
buffer[i++] = (inches / 10) + CHAR_0;
|
buffer[i++] = (inches / 10) + CHAR_0;
|
||||||
buffer[i++] = (inches % 10) + CHAR_0;
|
buffer[i++] = (inches % 10) + CHAR_0;
|
||||||
buffer[i++] = CHAR_DOUBLE_PRIME;
|
buffer[i++] = CHAR_DBL_QUOT_RIGHT;
|
||||||
buffer[i++] = EOS;
|
buffer[i++] = EOS;
|
||||||
sub_80BE8DC(buffer, left, top);
|
sub_80BE8DC(buffer, left, top);
|
||||||
}
|
}
|
||||||
@ -3968,12 +3965,11 @@ void sub_80C0354(u16 height, u8 left, u8 top)
|
|||||||
void sub_80C0460(u16 weight, u8 left, u8 top)
|
void sub_80C0460(u16 weight, u8 left, u8 top)
|
||||||
{
|
{
|
||||||
u8 buffer[16];
|
u8 buffer[16];
|
||||||
u32 lbs;
|
|
||||||
u8 i = 0;
|
|
||||||
bool8 output;
|
bool8 output;
|
||||||
|
u8 i = 0;
|
||||||
|
u32 lbs = (weight * 100000) / 4536;
|
||||||
|
|
||||||
lbs = (weight * 100000) / 4536;
|
if (lbs % 10u >= 5)
|
||||||
if (lbs % 10 >= 5)
|
|
||||||
lbs += 10;
|
lbs += 10;
|
||||||
output = FALSE;
|
output = FALSE;
|
||||||
|
|
||||||
@ -3988,9 +3984,9 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
lbs = (lbs % 100000);
|
lbs %= 100000;
|
||||||
buffer[i] = (lbs / 10000) + CHAR_0;
|
buffer[i] = (lbs / 10000) + CHAR_0;
|
||||||
if (buffer[i] == CHAR_0 && output == FALSE)
|
if (buffer[i] == CHAR_0 && !output)
|
||||||
{
|
{
|
||||||
buffer[i++] = 0x77;
|
buffer[i++] = 0x77;
|
||||||
}
|
}
|
||||||
@ -4000,9 +3996,9 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
lbs = (lbs % 10000);
|
lbs %= 10000;
|
||||||
buffer[i] = (lbs / 1000) + CHAR_0;
|
buffer[i] = (lbs / 1000) + CHAR_0;
|
||||||
if (buffer[i] == CHAR_0 && output == FALSE)
|
if (buffer[i] == CHAR_0 && !output)
|
||||||
{
|
{
|
||||||
buffer[i++] = 0x77;
|
buffer[i++] = 0x77;
|
||||||
}
|
}
|
||||||
@ -4010,9 +4006,10 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
|
|||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
lbs = (lbs % 1000);
|
|
||||||
|
lbs %= 1000;
|
||||||
buffer[i++] = (lbs / 100) + CHAR_0;
|
buffer[i++] = (lbs / 100) + CHAR_0;
|
||||||
lbs = (lbs % 100);
|
lbs %= 100;
|
||||||
buffer[i++] = CHAR_PERIOD;
|
buffer[i++] = CHAR_PERIOD;
|
||||||
buffer[i++] = (lbs / 10) + CHAR_0;
|
buffer[i++] = (lbs / 10) + CHAR_0;
|
||||||
buffer[i++] = CHAR_SPACE;
|
buffer[i++] = CHAR_SPACE;
|
||||||
|
@ -451,11 +451,9 @@ void sub_802AA94(struct PokemonJump1 *arg0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
void sub_802AB20(void)
|
void sub_802AB20(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i, index;
|
||||||
s16 index;
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||||
{
|
{
|
||||||
@ -465,61 +463,6 @@ void sub_802AB20(void)
|
|||||||
|
|
||||||
gUnknown_02022CFC->unk83AC = &gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6];
|
gUnknown_02022CFC->unk83AC = &gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6];
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
void sub_802AB20(void)
|
|
||||||
{
|
|
||||||
asm_unified("\n\
|
|
||||||
push {r4-r7,lr}\n\
|
|
||||||
mov r7, r8\n\
|
|
||||||
push {r7}\n\
|
|
||||||
ldr r7, =gUnknown_02022CFC\n\
|
|
||||||
movs r6, 0\n\
|
|
||||||
movs r5, 0\n\
|
|
||||||
ldr r0, =gPkmnJumpSpecies\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
movs r4, 0x4\n\
|
|
||||||
_0802AB32:\n\
|
|
||||||
ldr r0, [r7]\n\
|
|
||||||
adds r0, r5\n\
|
|
||||||
ldr r1, =0x000082a8\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldrh r0, [r0]\n\
|
|
||||||
bl sub_802AC00\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
ldr r1, [r7]\n\
|
|
||||||
adds r1, r6\n\
|
|
||||||
asrs r0, 14\n\
|
|
||||||
add r0, r8\n\
|
|
||||||
ldrh r0, [r0, 0x2]\n\
|
|
||||||
ldr r2, =0x000082f0\n\
|
|
||||||
adds r1, r2\n\
|
|
||||||
strh r0, [r1]\n\
|
|
||||||
adds r6, 0x28\n\
|
|
||||||
adds r5, 0xC\n\
|
|
||||||
subs r4, 0x1\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _0802AB32\n\
|
|
||||||
ldr r0, =gUnknown_02022CFC\n\
|
|
||||||
ldr r1, [r0]\n\
|
|
||||||
ldr r0, =0x000083ac\n\
|
|
||||||
adds r3, r1, r0\n\
|
|
||||||
ldrb r2, [r1, 0x6]\n\
|
|
||||||
lsls r0, r2, 2\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
ldr r2, =0x000082e4\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
str r1, [r3]\n\
|
|
||||||
pop {r3}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool");
|
|
||||||
}
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
static void sub_802AB98(void)
|
static void sub_802AB98(void)
|
||||||
{
|
{
|
||||||
|
610
src/roulette.c
610
src/roulette.c
@ -902,7 +902,7 @@ static void sub_8140470(void)
|
|||||||
{
|
{
|
||||||
sub_815168C(&gUnknown_0203AB88->varB8, i, &gUnknown_085B6388[i]);
|
sub_815168C(&gUnknown_0203AB88->varB8, i, &gUnknown_085B6388[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < PARTY_SIZE; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
|
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
|
||||||
@ -953,7 +953,7 @@ static void sub_81405CC(void)
|
|||||||
case 4:
|
case 4:
|
||||||
if (free_temp_tile_data_buffers_if_possible())
|
if (free_temp_tile_data_buffers_if_possible())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sub_8140470();
|
sub_8140470();
|
||||||
CopyToBgTilemapBuffer(2, gUnknown_085B5FA0, 0, 0);
|
CopyToBgTilemapBuffer(2, gUnknown_085B5FA0, 0, 0);
|
||||||
break;
|
break;
|
||||||
@ -1379,8 +1379,6 @@ static u8 sub_814118C(u16 r0, u16 r1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// r7/r8 swap
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
static void sub_8141344(u8 taskId)
|
static void sub_8141344(u8 taskId)
|
||||||
{
|
{
|
||||||
u8 randf;
|
u8 randf;
|
||||||
@ -1412,8 +1410,7 @@ static void sub_8141344(u8 taskId)
|
|||||||
|
|
||||||
g = S16TOPOSFLOAT(g) / 5.0f;
|
g = S16TOPOSFLOAT(g) / 5.0f;
|
||||||
gUnknown_0203AB88->var82 = g * 3;
|
gUnknown_0203AB88->var82 = g * 3;
|
||||||
gUnknown_0203AB88->var84 = g;
|
gUnknown_0203AB88->var86 = gUnknown_0203AB88->var84 = g;
|
||||||
gUnknown_0203AB88->var86 = g;
|
|
||||||
|
|
||||||
gUnknown_0203AB88->var88 = S16TOPOSFLOAT(angles[(rand & 1) + r5]);
|
gUnknown_0203AB88->var88 = S16TOPOSFLOAT(angles[(rand & 1) + r5]);
|
||||||
gUnknown_0203AB88->var8C = S16TOPOSFLOAT(gUnknown_085B6348[gUnknown_0203AB88->var04_0].var18);
|
gUnknown_0203AB88->var8C = S16TOPOSFLOAT(gUnknown_085B6348[gUnknown_0203AB88->var04_0].var18);
|
||||||
@ -1424,260 +1421,6 @@ static void sub_8141344(u8 taskId)
|
|||||||
gUnknown_0203AB88->varA0 = 36.0f;
|
gUnknown_0203AB88->varA0 = 36.0f;
|
||||||
gTasks[taskId].func = sub_814155C;
|
gTasks[taskId].func = sub_814155C;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static const u16 gUnknown_085B6422[4] = {0, 180, 90, 270};
|
|
||||||
NAKED
|
|
||||||
static void sub_8141344(u8 taskId)
|
|
||||||
{
|
|
||||||
asm_unified(" push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
sub sp, 0x8\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r0, 24\n\
|
|
||||||
mov r10, r0\n\
|
|
||||||
movs r4, 0\n\
|
|
||||||
ldr r1, =gUnknown_085B6422\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
movs r2, 0x8\n\
|
|
||||||
bl memcpy\n\
|
|
||||||
bl Random\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r7, r0, 16\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
movs r1, 0x64\n\
|
|
||||||
bl __umodsi3\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r6, r0, 16\n\
|
|
||||||
ldr r3, =gUnknown_0203AB88\n\
|
|
||||||
ldr r0, [r3]\n\
|
|
||||||
ldr r2, =gTasks\n\
|
|
||||||
mov r5, r10\n\
|
|
||||||
lsls r1, r5, 2\n\
|
|
||||||
add r1, r10\n\
|
|
||||||
lsls r1, 3\n\
|
|
||||||
adds r1, r2\n\
|
|
||||||
ldrh r2, [r1, 0x14]\n\
|
|
||||||
adds r0, 0x7C\n\
|
|
||||||
strb r2, [r0]\n\
|
|
||||||
ldr r0, [r3]\n\
|
|
||||||
adds r2, r0, 0\n\
|
|
||||||
adds r2, 0x7F\n\
|
|
||||||
strb r4, [r2]\n\
|
|
||||||
subs r2, 0x1\n\
|
|
||||||
strb r4, [r2]\n\
|
|
||||||
adds r0, 0x7D\n\
|
|
||||||
strb r4, [r0]\n\
|
|
||||||
ldrh r0, [r1, 0x18]\n\
|
|
||||||
adds r1, r7, 0\n\
|
|
||||||
bl sub_814118C\n\
|
|
||||||
adds r4, r0, 0\n\
|
|
||||||
lsls r4, 24\n\
|
|
||||||
lsrs r1, r4, 24\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
bl __modsi3\n\
|
|
||||||
lsrs r4, 25\n\
|
|
||||||
subs r0, r4\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r4, r0, 24\n\
|
|
||||||
ldr r0, =gLocalTime\n\
|
|
||||||
ldrb r0, [r0, 0x2]\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
asrs r0, 24\n\
|
|
||||||
movs r5, 0x1\n\
|
|
||||||
cmp r0, 0xC\n\
|
|
||||||
bgt _081413C8\n\
|
|
||||||
movs r5, 0\n\
|
|
||||||
_081413C8:\n\
|
|
||||||
cmp r6, 0x4F\n\
|
|
||||||
bhi _081413E0\n\
|
|
||||||
lsls r0, r5, 25\n\
|
|
||||||
b _081413EA\n\
|
|
||||||
.pool\n\
|
|
||||||
_081413E0:\n\
|
|
||||||
lsls r1, r5, 24\n\
|
|
||||||
asrs r1, 24\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
subs r0, r1\n\
|
|
||||||
lsls r0, 25\n\
|
|
||||||
_081413EA:\n\
|
|
||||||
lsrs r5, r0, 24\n\
|
|
||||||
ldr r0, _08141530 @ =gUnknown_0203AB88\n\
|
|
||||||
ldr r6, [r0]\n\
|
|
||||||
ldrb r0, [r6, 0x4]\n\
|
|
||||||
lsls r0, 30\n\
|
|
||||||
lsrs r0, 25\n\
|
|
||||||
ldr r1, _08141534 @ =gUnknown_085B6348\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
lsls r4, 24\n\
|
|
||||||
asrs r4, 24\n\
|
|
||||||
ldrh r0, [r0, 0x1A]\n\
|
|
||||||
adds r4, r0\n\
|
|
||||||
adds r0, r6, 0\n\
|
|
||||||
adds r0, 0x80\n\
|
|
||||||
strh r4, [r0]\n\
|
|
||||||
lsls r4, 16\n\
|
|
||||||
asrs r4, 16\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _0814141C\n\
|
|
||||||
ldr r1, _08141538 @ =0x47800000\n\
|
|
||||||
bl __addsf3\n\
|
|
||||||
_0814141C:\n\
|
|
||||||
ldr r1, _0814153C @ =0x40A00000\n\
|
|
||||||
bl __divsf3\n\
|
|
||||||
bl __fixunssfsi\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r4, r0, 16\n\
|
|
||||||
lsls r0, r4, 1\n\
|
|
||||||
adds r0, r4\n\
|
|
||||||
movs r2, 0x82\n\
|
|
||||||
adds r2, r6\n\
|
|
||||||
mov r8, r2\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
adds r0, r6, 0\n\
|
|
||||||
adds r0, 0x84\n\
|
|
||||||
strh r4, [r0]\n\
|
|
||||||
adds r0, 0x2\n\
|
|
||||||
strh r4, [r0]\n\
|
|
||||||
movs r0, 0x88\n\
|
|
||||||
adds r0, r6\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
ands r0, r7\n\
|
|
||||||
lsls r1, r5, 24\n\
|
|
||||||
asrs r1, 24\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
add r0, sp\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
ldrsh r4, [r0, r1]\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _08141468\n\
|
|
||||||
ldr r1, _08141538 @ =0x47800000\n\
|
|
||||||
bl __addsf3\n\
|
|
||||||
_08141468:\n\
|
|
||||||
mov r2, r9\n\
|
|
||||||
str r0, [r2]\n\
|
|
||||||
adds r7, r6, 0\n\
|
|
||||||
adds r7, 0x8C\n\
|
|
||||||
ldrb r0, [r6, 0x4]\n\
|
|
||||||
lsls r0, 30\n\
|
|
||||||
lsrs r0, 25\n\
|
|
||||||
ldr r5, _08141534 @ =gUnknown_085B6348\n\
|
|
||||||
adds r0, r5\n\
|
|
||||||
movs r1, 0x18\n\
|
|
||||||
ldrsh r4, [r0, r1]\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
adds r5, r0, 0\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _08141492\n\
|
|
||||||
ldr r1, _08141538 @ =0x47800000\n\
|
|
||||||
bl __addsf3\n\
|
|
||||||
adds r5, r0, 0\n\
|
|
||||||
_08141492:\n\
|
|
||||||
str r5, [r7]\n\
|
|
||||||
adds r7, r6, 0\n\
|
|
||||||
adds r7, 0x90\n\
|
|
||||||
ldr r1, _08141540 @ =0x3F000000\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
bl __mulsf3\n\
|
|
||||||
adds r1, r5, 0\n\
|
|
||||||
bl __subsf3\n\
|
|
||||||
adds r5, r0, 0\n\
|
|
||||||
mov r2, r8\n\
|
|
||||||
movs r0, 0\n\
|
|
||||||
ldrsh r4, [r2, r0]\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
adds r2, r0, 0\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _081414C2\n\
|
|
||||||
ldr r1, _08141538 @ =0x47800000\n\
|
|
||||||
bl __addsf3\n\
|
|
||||||
adds r2, r0, 0\n\
|
|
||||||
_081414C2:\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
adds r1, r2, 0\n\
|
|
||||||
bl __divsf3\n\
|
|
||||||
str r0, [r7]\n\
|
|
||||||
adds r1, r6, 0\n\
|
|
||||||
adds r1, 0x94\n\
|
|
||||||
ldr r0, _08141544 @ =0x42880000\n\
|
|
||||||
str r0, [r1]\n\
|
|
||||||
adds r1, 0x8\n\
|
|
||||||
ldr r0, _08141548 @ =0x00000000\n\
|
|
||||||
str r0, [r1]\n\
|
|
||||||
adds r5, r6, 0\n\
|
|
||||||
adds r5, 0x98\n\
|
|
||||||
mov r1, r8\n\
|
|
||||||
movs r2, 0\n\
|
|
||||||
ldrsh r4, [r1, r2]\n\
|
|
||||||
adds r0, r4, 0\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
adds r2, r0, 0\n\
|
|
||||||
cmp r4, 0\n\
|
|
||||||
bge _081414F8\n\
|
|
||||||
ldr r1, _08141538 @ =0x47800000\n\
|
|
||||||
bl __addsf3\n\
|
|
||||||
adds r2, r0, 0\n\
|
|
||||||
_081414F8:\n\
|
|
||||||
ldr r0, _0814154C @ =0x41000000\n\
|
|
||||||
adds r1, r2, 0\n\
|
|
||||||
bl __divsf3\n\
|
|
||||||
bl __negsf2\n\
|
|
||||||
str r0, [r5]\n\
|
|
||||||
adds r1, r6, 0\n\
|
|
||||||
adds r1, 0xA0\n\
|
|
||||||
ldr r0, _08141550 @ =0x42100000\n\
|
|
||||||
str r0, [r1]\n\
|
|
||||||
ldr r1, _08141554 @ =gTasks\n\
|
|
||||||
mov r5, r10\n\
|
|
||||||
lsls r0, r5, 2\n\
|
|
||||||
add r0, r10\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldr r1, _08141558 @ =sub_814155C\n\
|
|
||||||
str r1, [r0]\n\
|
|
||||||
add sp, 0x8\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.align 2, 0\n\
|
|
||||||
_08141530:\n\
|
|
||||||
.4byte gUnknown_0203AB88\n\
|
|
||||||
_08141534:\n\
|
|
||||||
.4byte gUnknown_085B6348\n\
|
|
||||||
_08141538:\n\
|
|
||||||
.4byte 0x47800000\n\
|
|
||||||
_0814153C:\n\
|
|
||||||
.4byte 0x40A00000\n\
|
|
||||||
_08141540:\n\
|
|
||||||
.4byte 0x3F000000\n\
|
|
||||||
_08141544:\n\
|
|
||||||
.4byte 0x42880000\n\
|
|
||||||
_08141548:\n\
|
|
||||||
.4byte 0x00000000\n\
|
|
||||||
_0814154C:\n\
|
|
||||||
.4byte 0x41000000\n\
|
|
||||||
_08141550:\n\
|
|
||||||
.4byte 0x42100000\n\
|
|
||||||
_08141554:\n\
|
|
||||||
.4byte gTasks\n\
|
|
||||||
_08141558:\n\
|
|
||||||
.4byte sub_814155C");
|
|
||||||
}
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
static void sub_814155C(u8 taskId)
|
static void sub_814155C(u8 taskId)
|
||||||
{
|
{
|
||||||
@ -4345,17 +4088,17 @@ static void sub_81448B8(struct Sprite *sprite)
|
|||||||
gUnknown_0203AB88->var38 = sprite;
|
gUnknown_0203AB88->var38 = sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
static void sub_8144A24(struct Sprite *sprite)
|
static void sub_8144A24(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
u8 z;
|
u8 z;
|
||||||
u16 o;
|
u16 o;
|
||||||
u8 h = 0; // r10 (sp+0xc)
|
u8 h = 0;
|
||||||
u8 j = 5; // r9 (r9)
|
u8 j = 5;
|
||||||
u8 p = 0; // sp+0xc (sp+0x10)
|
u8 p = 0;
|
||||||
u8 i;
|
u8 i = 0;
|
||||||
u8 s[10] = {}; // sp+0 (sp+0)
|
u8 val;
|
||||||
u16 t = Random(); // sp+0x10 (r10)
|
u8 s[10] = {};
|
||||||
|
u16 rand = Random();
|
||||||
|
|
||||||
gUnknown_0203AB88->var7D = 1;
|
gUnknown_0203AB88->var7D = 1;
|
||||||
gUnknown_0203AB88->var03_5 = TRUE;
|
gUnknown_0203AB88->var03_5 = TRUE;
|
||||||
@ -4364,13 +4107,14 @@ static void sub_8144A24(struct Sprite *sprite)
|
|||||||
gUnknown_0203AB88->var88 = sprite->data[3];
|
gUnknown_0203AB88->var88 = sprite->data[3];
|
||||||
gUnknown_0203AB88->var98 = 0.0f;
|
gUnknown_0203AB88->var98 = 0.0f;
|
||||||
gUnknown_0203AB88->var8C = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var1C;
|
gUnknown_0203AB88->var8C = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var1C;
|
||||||
|
|
||||||
o = (gUnknown_0203AB88->var04_0 * 30 + 33) + (0x1 - gUnknown_0203AB88->var03_0) * 15;
|
o = (gUnknown_0203AB88->var04_0 * 30 + 33) + (0x1 - gUnknown_0203AB88->var03_0) * 15;
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if (o < sprite->data[3] && sprite->data[3] <= o + 90)
|
if (o < sprite->data[3] && sprite->data[3] <= o + 90)
|
||||||
{
|
{
|
||||||
sprite->data[0] = i / 2;
|
sprite->data[0] = i / 2;
|
||||||
gUnknown_0203AB88->var03_0 = i & 1;
|
gUnknown_0203AB88->var03_0 = i % 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == 3)
|
if (i == 3)
|
||||||
@ -4381,354 +4125,52 @@ static void sub_8144A24(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
o += 90;
|
o += 90;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gUnknown_0203AB88->var03_0)
|
if (gUnknown_0203AB88->var03_0)
|
||||||
{
|
{
|
||||||
if (sprite->data[0])
|
if (sprite->data[0])
|
||||||
{
|
|
||||||
PlayCry1(SPECIES_TAILLOW, -63);
|
PlayCry1(SPECIES_TAILLOW, -63);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
PlayCry1(SPECIES_TAILLOW, 63);
|
PlayCry1(SPECIES_TAILLOW, 63);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PlayCry1(SPECIES_SHROOMISH, -63);
|
PlayCry1(SPECIES_SHROOMISH, -63);
|
||||||
}
|
}
|
||||||
i = 2;
|
|
||||||
|
val = 2;
|
||||||
z = (gUnknown_0203AB88->var7F + 2) % 12;
|
z = (gUnknown_0203AB88->var7F + 2) % 12;
|
||||||
|
|
||||||
if (gUnknown_0203AB88->var03_0 == 1 && gUnknown_0203AB88->var04_0 == 1)
|
if (gUnknown_0203AB88->var03_0 == 1 && gUnknown_0203AB88->var04_0 == 1)
|
||||||
j += 6;
|
j += 6;
|
||||||
else
|
else
|
||||||
j += i;
|
j += val;
|
||||||
for (; i < j; i++)
|
|
||||||
|
for (i = val; i < j; i++)
|
||||||
{
|
{
|
||||||
if (!(gUnknown_0203AB88->var08 & gUnknown_085B62E4[z].var04))
|
if (!(gUnknown_0203AB88->var08 & gUnknown_085B62E4[z].var04))
|
||||||
{
|
{
|
||||||
s[h++] = i;
|
s[h++] = i;
|
||||||
if (!p && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var00))
|
if (p == 0 && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var0C))
|
||||||
{
|
|
||||||
p = i;
|
p = i;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
z = (z + 1) % 0xC;
|
z = (z + 1) % 0xC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((gUnknown_0203AB88->var03_0 + 1) & gUnknown_0203AB88->var02)
|
if ((gUnknown_0203AB88->var03_0 + 1) & gUnknown_0203AB88->var02)
|
||||||
{
|
{
|
||||||
if (p && (t & 0xFF) < 0xc0)
|
if (p && (rand & 0xFF) < 0xc0)
|
||||||
{
|
|
||||||
sprite->data[7] = p;
|
sprite->data[7] = p;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
sprite->data[7] = s[rand % h];
|
||||||
sprite->data[7] = s[t % h];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprite->data[7] = s[t % h];
|
sprite->data[7] = s[rand % h];
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite->callback = sub_8144168;
|
sprite->callback = sub_8144168;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
static void sub_8144A24(struct Sprite *sprite)
|
|
||||||
{
|
|
||||||
asm_unified("push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
sub sp, 0x14\n\
|
|
||||||
adds r7, r0, 0\n\
|
|
||||||
movs r0, 0\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
movs r1, 0x5\n\
|
|
||||||
mov r8, r1\n\
|
|
||||||
str r0, [sp, 0xC]\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
movs r1, 0\n\
|
|
||||||
movs r2, 0xA\n\
|
|
||||||
bl memset\n\
|
|
||||||
bl Random\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r0, 16\n\
|
|
||||||
str r0, [sp, 0x10]\n\
|
|
||||||
ldr r3, _08144B10 @ =gUnknown_0203AB88\n\
|
|
||||||
ldr r0, [r3]\n\
|
|
||||||
adds r0, 0x7D\n\
|
|
||||||
movs r5, 0x1\n\
|
|
||||||
strb r5, [r0]\n\
|
|
||||||
ldr r2, [r3]\n\
|
|
||||||
ldrb r0, [r2, 0x3]\n\
|
|
||||||
movs r1, 0x20\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
strb r0, [r2, 0x3]\n\
|
|
||||||
ldr r2, [r3]\n\
|
|
||||||
ldrb r1, [r2, 0x3]\n\
|
|
||||||
movs r0, 0x41\n\
|
|
||||||
negs r0, r0\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
strb r0, [r2, 0x3]\n\
|
|
||||||
ldr r0, [r3]\n\
|
|
||||||
adds r0, 0x7E\n\
|
|
||||||
movs r1, 0xFF\n\
|
|
||||||
strb r1, [r0]\n\
|
|
||||||
ldr r6, [r3]\n\
|
|
||||||
adds r4, r6, 0\n\
|
|
||||||
adds r4, 0x88\n\
|
|
||||||
movs r1, 0x34\n\
|
|
||||||
ldrsh r0, [r7, r1]\n\
|
|
||||||
bl __floatsisf\n\
|
|
||||||
str r0, [r4]\n\
|
|
||||||
adds r1, r6, 0\n\
|
|
||||||
adds r1, 0x98\n\
|
|
||||||
ldr r0, _08144B14 @ =0x00000000\n\
|
|
||||||
str r0, [r1]\n\
|
|
||||||
adds r2, r6, 0\n\
|
|
||||||
adds r2, 0x8C\n\
|
|
||||||
ldr r1, _08144B18 @ =gUnknown_085B6348\n\
|
|
||||||
ldrb r0, [r6, 0x4]\n\
|
|
||||||
lsls r0, 30\n\
|
|
||||||
lsrs r0, 25\n\
|
|
||||||
adds r1, 0x1C\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldr r0, [r0]\n\
|
|
||||||
str r0, [r2]\n\
|
|
||||||
ldrb r0, [r6, 0x4]\n\
|
|
||||||
lsls r0, 30\n\
|
|
||||||
lsrs r0, 30\n\
|
|
||||||
lsls r1, r0, 4\n\
|
|
||||||
subs r1, r0\n\
|
|
||||||
lsls r1, 1\n\
|
|
||||||
adds r1, 0x21\n\
|
|
||||||
ldrb r0, [r6, 0x3]\n\
|
|
||||||
lsls r0, 27\n\
|
|
||||||
lsrs r0, 27\n\
|
|
||||||
subs r5, r0\n\
|
|
||||||
lsls r0, r5, 4\n\
|
|
||||||
subs r0, r5\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r1, 16\n\
|
|
||||||
mov r5, r9\n\
|
|
||||||
movs r0, 0x34\n\
|
|
||||||
ldrsh r2, [r7, r0]\n\
|
|
||||||
_08144ACA:\n\
|
|
||||||
cmp r1, r2\n\
|
|
||||||
bge _08144AD6\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
adds r0, 0x5A\n\
|
|
||||||
cmp r2, r0\n\
|
|
||||||
ble _08144B38\n\
|
|
||||||
_08144AD6:\n\
|
|
||||||
cmp r5, 0x3\n\
|
|
||||||
beq _08144B1C\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
adds r0, 0x5A\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
lsrs r1, r0, 16\n\
|
|
||||||
adds r0, r5, 0x1\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r5, r0, 24\n\
|
|
||||||
cmp r5, 0x3\n\
|
|
||||||
bls _08144ACA\n\
|
|
||||||
_08144AEC:\n\
|
|
||||||
ldr r0, _08144B10 @ =gUnknown_0203AB88\n\
|
|
||||||
ldr r0, [r0]\n\
|
|
||||||
ldrb r1, [r0, 0x3]\n\
|
|
||||||
movs r0, 0x1F\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
beq _08144B64\n\
|
|
||||||
movs r1, 0x2E\n\
|
|
||||||
ldrsh r0, [r7, r1]\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
beq _08144B58\n\
|
|
||||||
movs r0, 0x98\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
movs r1, 0x3F\n\
|
|
||||||
negs r1, r1\n\
|
|
||||||
bl PlayCry1\n\
|
|
||||||
b _08144B70\n\
|
|
||||||
.align 2, 0\n\
|
|
||||||
_08144B10:\n\
|
|
||||||
.4byte gUnknown_0203AB88\n\
|
|
||||||
_08144B14:\n\
|
|
||||||
.4byte 0x00000000\n\
|
|
||||||
_08144B18:\n\
|
|
||||||
.4byte gUnknown_085B6348\n\
|
|
||||||
_08144B1C:\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
strh r0, [r7, 0x2E]\n\
|
|
||||||
ldr r0, =gUnknown_0203AB88\n\
|
|
||||||
ldr r2, [r0]\n\
|
|
||||||
ldrb r1, [r2, 0x3]\n\
|
|
||||||
movs r0, 0x20\n\
|
|
||||||
negs r0, r0\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
movs r1, 0x1\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
strb r0, [r2, 0x3]\n\
|
|
||||||
b _08144AEC\n\
|
|
||||||
.pool\n\
|
|
||||||
_08144B38:\n\
|
|
||||||
lsrs r0, r5, 1\n\
|
|
||||||
strh r0, [r7, 0x2E]\n\
|
|
||||||
ldr r0, =gUnknown_0203AB88\n\
|
|
||||||
ldr r3, [r0]\n\
|
|
||||||
movs r1, 0x1\n\
|
|
||||||
ands r1, r5\n\
|
|
||||||
ldrb r2, [r3, 0x3]\n\
|
|
||||||
movs r0, 0x20\n\
|
|
||||||
negs r0, r0\n\
|
|
||||||
ands r0, r2\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
strb r0, [r3, 0x3]\n\
|
|
||||||
b _08144AEC\n\
|
|
||||||
.pool\n\
|
|
||||||
_08144B58:\n\
|
|
||||||
movs r0, 0x98\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
movs r1, 0x3F\n\
|
|
||||||
bl PlayCry1\n\
|
|
||||||
b _08144B70\n\
|
|
||||||
_08144B64:\n\
|
|
||||||
movs r0, 0x99\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
movs r1, 0x3F\n\
|
|
||||||
negs r1, r1\n\
|
|
||||||
bl PlayCry1\n\
|
|
||||||
_08144B70:\n\
|
|
||||||
movs r0, 0x2\n\
|
|
||||||
mov r10, r0\n\
|
|
||||||
ldr r4, =gUnknown_0203AB88\n\
|
|
||||||
ldr r5, [r4]\n\
|
|
||||||
adds r0, r5, 0\n\
|
|
||||||
adds r0, 0x7F\n\
|
|
||||||
ldrb r0, [r0]\n\
|
|
||||||
adds r0, 0x2\n\
|
|
||||||
movs r1, 0xC\n\
|
|
||||||
bl __modsi3\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r6, r0, 24\n\
|
|
||||||
ldrb r1, [r5, 0x3]\n\
|
|
||||||
movs r0, 0x1F\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
cmp r0, 0x1\n\
|
|
||||||
bne _08144BA8\n\
|
|
||||||
ldrb r1, [r5, 0x4]\n\
|
|
||||||
movs r0, 0x3\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
cmp r0, 0x1\n\
|
|
||||||
bne _08144BA8\n\
|
|
||||||
mov r0, r8\n\
|
|
||||||
adds r0, 0x6\n\
|
|
||||||
b _08144BAC\n\
|
|
||||||
.pool\n\
|
|
||||||
_08144BA8:\n\
|
|
||||||
mov r0, r8\n\
|
|
||||||
add r0, r10\n\
|
|
||||||
_08144BAC:\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r0, 24\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
mov r5, r10\n\
|
|
||||||
cmp r5, r8\n\
|
|
||||||
bcs _08144C18\n\
|
|
||||||
ldr r1, =gUnknown_085B6154+0xC\n\
|
|
||||||
mov r10, r1\n\
|
|
||||||
_08144BBC:\n\
|
|
||||||
ldr r3, [r4]\n\
|
|
||||||
lsls r0, r6, 3\n\
|
|
||||||
ldr r1, =gUnknown_085B62E4+0x4\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldr r1, [r3, 0x8]\n\
|
|
||||||
ldr r2, [r0]\n\
|
|
||||||
ands r1, r2\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
bne _08144C02\n\
|
|
||||||
mov r0, r9\n\
|
|
||||||
adds r1, r0, 0x1\n\
|
|
||||||
lsls r1, 24\n\
|
|
||||||
lsrs r1, 24\n\
|
|
||||||
mov r9, r1\n\
|
|
||||||
add r0, sp\n\
|
|
||||||
strb r5, [r0]\n\
|
|
||||||
ldr r0, [sp, 0xC]\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
bne _08144C02\n\
|
|
||||||
ldrb r1, [r3, 0x1A]\n\
|
|
||||||
lsls r1, 28\n\
|
|
||||||
lsrs r1, 28\n\
|
|
||||||
adds r0, r3, 0\n\
|
|
||||||
adds r0, 0x1B\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldrb r1, [r0]\n\
|
|
||||||
lsls r0, r1, 2\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
lsls r0, 2\n\
|
|
||||||
add r0, r10\n\
|
|
||||||
ldr r0, [r0]\n\
|
|
||||||
ands r2, r0\n\
|
|
||||||
cmp r2, 0\n\
|
|
||||||
beq _08144C02\n\
|
|
||||||
str r5, [sp, 0xC]\n\
|
|
||||||
_08144C02:\n\
|
|
||||||
adds r0, r6, 0x1\n\
|
|
||||||
movs r1, 0xC\n\
|
|
||||||
bl __modsi3\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r6, r0, 24\n\
|
|
||||||
adds r0, r5, 0x1\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r5, r0, 24\n\
|
|
||||||
cmp r5, r8\n\
|
|
||||||
bcc _08144BBC\n\
|
|
||||||
_08144C18:\n\
|
|
||||||
ldr r0, [r4]\n\
|
|
||||||
ldrb r1, [r0, 0x3]\n\
|
|
||||||
lsls r1, 27\n\
|
|
||||||
lsrs r1, 27\n\
|
|
||||||
adds r1, 0x1\n\
|
|
||||||
ldrb r0, [r0, 0x2]\n\
|
|
||||||
ands r1, r0\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
beq _08144C48\n\
|
|
||||||
ldr r1, [sp, 0xC]\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
beq _08144C48\n\
|
|
||||||
movs r0, 0xFF\n\
|
|
||||||
ldr r1, [sp, 0x10]\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
cmp r0, 0xBF\n\
|
|
||||||
bhi _08144C48\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
ldrh r0, [r0, 0xC]\n\
|
|
||||||
b _08144C54\n\
|
|
||||||
.pool\n\
|
|
||||||
_08144C48:\n\
|
|
||||||
ldr r0, [sp, 0x10]\n\
|
|
||||||
mov r1, r9\n\
|
|
||||||
bl __modsi3\n\
|
|
||||||
add r0, sp\n\
|
|
||||||
ldrb r0, [r0]\n\
|
|
||||||
_08144C54:\n\
|
|
||||||
strh r0, [r7, 0x3C]\n\
|
|
||||||
ldr r1, =sub_8144168\n\
|
|
||||||
str r1, [r7, 0x1C]\n\
|
|
||||||
add sp, 0x14\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool");
|
|
||||||
}
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
static const u16 gUnknown_085B7B1A[] = {
|
static const u16 gUnknown_085B7B1A[] = {
|
||||||
0x907,
|
0x907,
|
||||||
@ -4955,7 +4397,7 @@ static void sub_81450D8(struct Sprite *sprite)
|
|||||||
static void sub_8145218(struct Sprite *sprite)
|
static void sub_8145218(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s8 t[2] = {-1, 1};
|
s8 t[2] = {-1, 1};
|
||||||
|
|
||||||
if (sprite->data[1]-- >= 0)
|
if (sprite->data[1]-- >= 0)
|
||||||
{
|
{
|
||||||
sprite->pos1.x += t[gUnknown_0203AB88->var38->data[0]] * 2;
|
sprite->pos1.x += t[gUnknown_0203AB88->var38->data[0]] * 2;
|
||||||
|
850
src/water.c
850
src/water.c
@ -1405,479 +1405,71 @@ void sub_8107CC4(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
void sub_8107D58(u8 taskId)
|
void sub_8107D58(u8 taskId)
|
||||||
{
|
{
|
||||||
s16 i;
|
s16 i;
|
||||||
struct ScanlineEffectParams params;
|
struct ScanlineEffectParams params;
|
||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
// u16 *scanlineBuffer;
|
|
||||||
|
|
||||||
switch (task->data[0])
|
switch (task->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
for (i = 0; i < task->data[4]; i++)
|
for (i = 0; i < task->data[4]; i++)
|
||||||
{
|
gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
|
||||||
/* scanlineBuffer = &gScanlineEffectRegBuffers[0][i];
|
for (i = task->data[4]; i < task->data[5]; i++)
|
||||||
*(u16 *)(&gScanlineEffect) = task->data[2];
|
gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[1];
|
||||||
*scanlineBuffer = task->data[2] & -1; */
|
for (i = task->data[5]; i < 160; i++)
|
||||||
gScanlineEffectRegBuffers[1][i] = task->data[2];
|
gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
|
||||||
gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
|
|
||||||
}
|
if (task->data[4] == 0)
|
||||||
for (i = task->data[4]; i < task->data[5]; i++)
|
gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[1];
|
||||||
{
|
else
|
||||||
gScanlineEffectRegBuffers[1][i] = task->data[1];
|
gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
|
||||||
gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[1] & 0xFFFF));
|
|
||||||
}
|
params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
|
||||||
for (i = task->data[5]; i < 160; i++)
|
params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
|
||||||
{
|
params.initState = 1;
|
||||||
gScanlineEffectRegBuffers[1][i] = task->data[2];
|
params.unused9 = 0;
|
||||||
gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
|
ScanlineEffect_SetParams(params);
|
||||||
}
|
task->data[0]++;
|
||||||
if (task->data[4] == 0)
|
break;
|
||||||
{
|
case 1:
|
||||||
gScanlineEffectRegBuffers[1][i] = task->data[1];
|
if (task->data[3] == 0)
|
||||||
gScanlineEffectRegBuffers[0][i] = task->data[1];
|
{
|
||||||
}
|
if (--task->data[4] <= 0)
|
||||||
else
|
|
||||||
{
|
|
||||||
gScanlineEffectRegBuffers[1][i] = task->data[2];
|
|
||||||
gScanlineEffectRegBuffers[0][i] = task->data[2];
|
|
||||||
}
|
|
||||||
params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
|
|
||||||
params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
|
|
||||||
params.initState = 1;
|
|
||||||
params.unused9 = 0;
|
|
||||||
ScanlineEffect_SetParams(params);
|
|
||||||
task->data[0]++;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (task->data[3] == 0)
|
|
||||||
{
|
|
||||||
if (--task->data[4] <= 0)
|
|
||||||
{
|
|
||||||
task->data[4] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (++task->data[5] > 111)
|
|
||||||
{
|
{
|
||||||
|
task->data[4] = 0;
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
}
|
}
|
||||||
for (i = 0; i < task->data[4]; i++)
|
}
|
||||||
{
|
else if (++task->data[5] > 111)
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
{
|
||||||
}
|
task->data[0]++;
|
||||||
for (i = task->data[4]; i < task->data[5]; i++)
|
}
|
||||||
{
|
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
|
for (i = 0; i < task->data[4]; i++)
|
||||||
}
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
||||||
for (i = task->data[5]; i < 160; i++)
|
for (i = task->data[4]; i < task->data[5]; i++)
|
||||||
{
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
for (i = task->data[5]; i < 160; i++)
|
||||||
}
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
for (i = 0; i < task->data[4]; i++)
|
for (i = 0; i < task->data[4]; i++)
|
||||||
{
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
for (i = task->data[4]; i < task->data[5]; i++)
|
||||||
}
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
|
||||||
for (i = task->data[4]; i < task->data[5]; i++)
|
for (i = task->data[5]; i < 160; i++)
|
||||||
{
|
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
|
|
||||||
}
|
if (task->data[15] == -1)
|
||||||
for (i = task->data[5]; i < 160; i++)
|
{
|
||||||
{
|
ScanlineEffect_Stop();
|
||||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
if (task->data[15] == -1)
|
break;
|
||||||
{
|
|
||||||
ScanlineEffect_Stop();
|
|
||||||
DestroyTask(taskId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
void sub_8107D58(u8 taskId)
|
|
||||||
{
|
|
||||||
asm_unified("push {r4-r7,lr}\n\
|
|
||||||
sub sp, 0xC\n\
|
|
||||||
lsls r0, 24\n\
|
|
||||||
lsrs r7, r0, 24\n\
|
|
||||||
lsls r0, r7, 2\n\
|
|
||||||
adds r0, r7\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
ldr r1, =gTasks\n\
|
|
||||||
adds r4, r0, r1\n\
|
|
||||||
movs r1, 0x8\n\
|
|
||||||
ldrsh r0, [r4, r1]\n\
|
|
||||||
cmp r0, 0x1\n\
|
|
||||||
bne _08107D74\n\
|
|
||||||
b _08107EAC\n\
|
|
||||||
_08107D74:\n\
|
|
||||||
cmp r0, 0x1\n\
|
|
||||||
bgt _08107D84\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
beq _08107D8C\n\
|
|
||||||
b _08108022\n\
|
|
||||||
.pool\n\
|
|
||||||
_08107D84:\n\
|
|
||||||
cmp r0, 0x2\n\
|
|
||||||
bne _08107D8A\n\
|
|
||||||
b _08107F78\n\
|
|
||||||
_08107D8A:\n\
|
|
||||||
b _08108022\n\
|
|
||||||
_08107D8C:\n\
|
|
||||||
movs r3, 0\n\
|
|
||||||
movs r2, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r2]\n\
|
|
||||||
ldr r1, =gScanlineEffectRegBuffers\n\
|
|
||||||
mov r12, r1\n\
|
|
||||||
cmp r3, r0\n\
|
|
||||||
bge _08107DCA\n\
|
|
||||||
mov r7, r12\n\
|
|
||||||
movs r5, 0xF0\n\
|
|
||||||
lsls r5, 3\n\
|
|
||||||
add r5, r12\n\
|
|
||||||
ldr r6, =0x0000ffff\n\
|
|
||||||
_08107DA4:\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r2, 16\n\
|
|
||||||
lsls r1, r2, 1\n\
|
|
||||||
adds r3, r1, r7\n\
|
|
||||||
adds r1, r5\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r1]\n\
|
|
||||||
ldrh r1, [r4, 0xC]\n\
|
|
||||||
adds r0, r6, 0\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
strh r0, [r3]\n\
|
|
||||||
adds r2, 0x1\n\
|
|
||||||
lsls r2, 16\n\
|
|
||||||
lsrs r3, r2, 16\n\
|
|
||||||
asrs r2, 16\n\
|
|
||||||
movs r1, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r1]\n\
|
|
||||||
cmp r2, r0\n\
|
|
||||||
blt _08107DA4\n\
|
|
||||||
_08107DCA:\n\
|
|
||||||
ldrh r3, [r4, 0x10]\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
bge _08107E04\n\
|
|
||||||
ldr r5, =gScanlineEffectRegBuffers\n\
|
|
||||||
movs r0, 0xF0\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
adds r6, r5, r0\n\
|
|
||||||
ldr r7, =0x0000ffff\n\
|
|
||||||
_08107DE2:\n\
|
|
||||||
asrs r2, 16\n\
|
|
||||||
lsls r1, r2, 1\n\
|
|
||||||
adds r3, r1, r5\n\
|
|
||||||
adds r1, r6\n\
|
|
||||||
ldrh r0, [r4, 0xA]\n\
|
|
||||||
strh r0, [r1]\n\
|
|
||||||
ldrh r1, [r4, 0xA]\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
strh r0, [r3]\n\
|
|
||||||
adds r2, 0x1\n\
|
|
||||||
lsls r2, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
blt _08107DE2\n\
|
|
||||||
_08107E04:\n\
|
|
||||||
ldrh r3, [r4, 0x12]\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r0, r2, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
bgt _08107E3A\n\
|
|
||||||
ldr r5, =gScanlineEffectRegBuffers\n\
|
|
||||||
movs r0, 0xF0\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
adds r6, r5, r0\n\
|
|
||||||
ldr r7, =0x0000ffff\n\
|
|
||||||
_08107E18:\n\
|
|
||||||
asrs r2, 16\n\
|
|
||||||
lsls r1, r2, 1\n\
|
|
||||||
adds r3, r1, r5\n\
|
|
||||||
adds r1, r6\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r1]\n\
|
|
||||||
ldrh r1, [r4, 0xC]\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
ands r0, r1\n\
|
|
||||||
strh r0, [r3]\n\
|
|
||||||
adds r2, 0x1\n\
|
|
||||||
lsls r2, 16\n\
|
|
||||||
lsrs r3, r2, 16\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r0, r2, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
ble _08107E18\n\
|
|
||||||
_08107E3A:\n\
|
|
||||||
movs r1, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r1]\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
bne _08107E64\n\
|
|
||||||
lsls r0, r3, 16\n\
|
|
||||||
asrs r0, 15\n\
|
|
||||||
mov r3, r12\n\
|
|
||||||
adds r2, r0, r3\n\
|
|
||||||
movs r1, 0xF0\n\
|
|
||||||
lsls r1, 3\n\
|
|
||||||
add r1, r12\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldrh r1, [r4, 0xA]\n\
|
|
||||||
strh r1, [r0]\n\
|
|
||||||
ldrh r0, [r4, 0xA]\n\
|
|
||||||
b _08107E7A\n\
|
|
||||||
.pool\n\
|
|
||||||
_08107E64:\n\
|
|
||||||
lsls r0, r3, 16\n\
|
|
||||||
asrs r0, 15\n\
|
|
||||||
mov r1, r12\n\
|
|
||||||
adds r2, r0, r1\n\
|
|
||||||
movs r1, 0xF0\n\
|
|
||||||
lsls r1, 3\n\
|
|
||||||
add r1, r12\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
ldrh r1, [r4, 0xC]\n\
|
|
||||||
strh r1, [r0]\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
_08107E7A:\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
ldr r0, =0x04000052\n\
|
|
||||||
str r0, [sp]\n\
|
|
||||||
ldr r0, =0xa2600001\n\
|
|
||||||
str r0, [sp, 0x4]\n\
|
|
||||||
mov r1, sp\n\
|
|
||||||
movs r2, 0\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
strb r0, [r1, 0x8]\n\
|
|
||||||
mov r0, sp\n\
|
|
||||||
strb r2, [r0, 0x9]\n\
|
|
||||||
ldr r0, [sp]\n\
|
|
||||||
ldr r1, [sp, 0x4]\n\
|
|
||||||
ldr r2, [sp, 0x8]\n\
|
|
||||||
bl ScanlineEffect_SetParams\n\
|
|
||||||
ldrh r0, [r4, 0x8]\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
strh r0, [r4, 0x8]\n\
|
|
||||||
b _08108022\n\
|
|
||||||
.pool\n\
|
|
||||||
_08107EAC:\n\
|
|
||||||
movs r2, 0xE\n\
|
|
||||||
ldrsh r1, [r4, r2]\n\
|
|
||||||
cmp r1, 0\n\
|
|
||||||
bne _08107EC4\n\
|
|
||||||
ldrh r0, [r4, 0x10]\n\
|
|
||||||
subs r0, 0x1\n\
|
|
||||||
strh r0, [r4, 0x10]\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
cmp r0, 0\n\
|
|
||||||
bgt _08107ED8\n\
|
|
||||||
strh r1, [r4, 0x10]\n\
|
|
||||||
b _08107ED2\n\
|
|
||||||
_08107EC4:\n\
|
|
||||||
ldrh r0, [r4, 0x12]\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
strh r0, [r4, 0x12]\n\
|
|
||||||
lsls r0, 16\n\
|
|
||||||
asrs r0, 16\n\
|
|
||||||
cmp r0, 0x6F\n\
|
|
||||||
ble _08107ED8\n\
|
|
||||||
_08107ED2:\n\
|
|
||||||
ldrh r0, [r4, 0x8]\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
strh r0, [r4, 0x8]\n\
|
|
||||||
_08107ED8:\n\
|
|
||||||
movs r3, 0\n\
|
|
||||||
movs r1, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r1]\n\
|
|
||||||
cmp r3, r0\n\
|
|
||||||
bge _08107F0C\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107EE6:\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
lsls r3, r1, 1\n\
|
|
||||||
ldrb r2, [r5, 0x14]\n\
|
|
||||||
lsls r0, r2, 4\n\
|
|
||||||
subs r0, r2\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r3, r0\n\
|
|
||||||
adds r3, r6\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r3]\n\
|
|
||||||
adds r1, 0x1\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r3, r1, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
movs r2, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r2]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
blt _08107EE6\n\
|
|
||||||
_08107F0C:\n\
|
|
||||||
ldrh r3, [r4, 0x10]\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
bge _08107F40\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107F1E:\n\
|
|
||||||
asrs r3, r2, 16\n\
|
|
||||||
lsls r2, r3, 1\n\
|
|
||||||
ldrb r1, [r5, 0x14]\n\
|
|
||||||
lsls r0, r1, 4\n\
|
|
||||||
subs r0, r1\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r2, r0\n\
|
|
||||||
adds r2, r6\n\
|
|
||||||
ldrh r0, [r4, 0xA]\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
adds r3, 0x1\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
blt _08107F1E\n\
|
|
||||||
_08107F40:\n\
|
|
||||||
ldrh r3, [r4, 0x12]\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r0, r1, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
bgt _08108022\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107F4E:\n\
|
|
||||||
asrs r3, r1, 16\n\
|
|
||||||
lsls r2, r3, 1\n\
|
|
||||||
ldrb r1, [r5, 0x14]\n\
|
|
||||||
lsls r0, r1, 4\n\
|
|
||||||
subs r0, r1\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r2, r0\n\
|
|
||||||
adds r2, r6\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
adds r3, 0x1\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r0, r1, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
ble _08107F4E\n\
|
|
||||||
b _08108022\n\
|
|
||||||
.pool\n\
|
|
||||||
_08107F78:\n\
|
|
||||||
movs r3, 0\n\
|
|
||||||
movs r1, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r1]\n\
|
|
||||||
cmp r3, r0\n\
|
|
||||||
bge _08107FAC\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107F86:\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
lsls r3, r1, 1\n\
|
|
||||||
ldrb r2, [r5, 0x14]\n\
|
|
||||||
lsls r0, r2, 4\n\
|
|
||||||
subs r0, r2\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r3, r0\n\
|
|
||||||
adds r3, r6\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r3]\n\
|
|
||||||
adds r1, 0x1\n\
|
|
||||||
lsls r1, 16\n\
|
|
||||||
lsrs r3, r1, 16\n\
|
|
||||||
asrs r1, 16\n\
|
|
||||||
movs r2, 0x10\n\
|
|
||||||
ldrsh r0, [r4, r2]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
blt _08107F86\n\
|
|
||||||
_08107FAC:\n\
|
|
||||||
ldrh r3, [r4, 0x10]\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
bge _08107FE0\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107FBE:\n\
|
|
||||||
asrs r3, r2, 16\n\
|
|
||||||
lsls r2, r3, 1\n\
|
|
||||||
ldrb r1, [r5, 0x14]\n\
|
|
||||||
lsls r0, r1, 4\n\
|
|
||||||
subs r0, r1\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r2, r0\n\
|
|
||||||
adds r2, r6\n\
|
|
||||||
ldrh r0, [r4, 0xA]\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
adds r3, 0x1\n\
|
|
||||||
lsls r2, r3, 16\n\
|
|
||||||
asrs r1, r2, 16\n\
|
|
||||||
movs r3, 0x12\n\
|
|
||||||
ldrsh r0, [r4, r3]\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
blt _08107FBE\n\
|
|
||||||
_08107FE0:\n\
|
|
||||||
ldrh r3, [r4, 0x12]\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r0, r1, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
bgt _0810800C\n\
|
|
||||||
ldr r6, =gScanlineEffectRegBuffers\n\
|
|
||||||
ldr r5, =gScanlineEffect\n\
|
|
||||||
_08107FEE:\n\
|
|
||||||
asrs r3, r1, 16\n\
|
|
||||||
lsls r2, r3, 1\n\
|
|
||||||
ldrb r1, [r5, 0x14]\n\
|
|
||||||
lsls r0, r1, 4\n\
|
|
||||||
subs r0, r1\n\
|
|
||||||
lsls r0, 7\n\
|
|
||||||
adds r2, r0\n\
|
|
||||||
adds r2, r6\n\
|
|
||||||
ldrh r0, [r4, 0xC]\n\
|
|
||||||
strh r0, [r2]\n\
|
|
||||||
adds r3, 0x1\n\
|
|
||||||
lsls r1, r3, 16\n\
|
|
||||||
asrs r0, r1, 16\n\
|
|
||||||
cmp r0, 0x9F\n\
|
|
||||||
ble _08107FEE\n\
|
|
||||||
_0810800C:\n\
|
|
||||||
movs r0, 0x26\n\
|
|
||||||
ldrsh r1, [r4, r0]\n\
|
|
||||||
movs r0, 0x1\n\
|
|
||||||
negs r0, r0\n\
|
|
||||||
cmp r1, r0\n\
|
|
||||||
bne _08108022\n\
|
|
||||||
bl ScanlineEffect_Stop\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
bl DestroyTask\n\
|
|
||||||
_08108022:\n\
|
|
||||||
add sp, 0xC\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void sub_8108034(struct Sprite *sprite)
|
void sub_8108034(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
@ -1925,82 +1517,82 @@ void sub_8108140(u8 taskId)
|
|||||||
|
|
||||||
switch (task->data[0])
|
switch (task->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sub_80A805C(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
|
sub_80A805C(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
|
||||||
|
task->data[0]++;
|
||||||
|
case 1:
|
||||||
|
if (++task->data[3] > 1)
|
||||||
|
{
|
||||||
|
task->data[3] = 0;
|
||||||
|
if (++task->data[4] & 1)
|
||||||
|
{
|
||||||
|
gSprites[task->data[15]].pos2.x = 3;
|
||||||
|
gSprites[task->data[15]].pos1.y++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[task->data[15]].pos2.x = -3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sub_80A80C8(task) == 0)
|
||||||
|
{
|
||||||
|
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||||
|
gSprites[task->data[15]].pos2.x = 0;
|
||||||
|
task->data[3] = 0;
|
||||||
|
task->data[4] = 0;
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
case 1:
|
}
|
||||||
if (++task->data[3] > 1)
|
break;
|
||||||
{
|
case 2:
|
||||||
task->data[3] = 0;
|
if (++task->data[3] > 4)
|
||||||
if (++task->data[4] & 1)
|
{
|
||||||
{
|
sub_80A805C(task, task->data[15], 224, 0x200, 384, 224, 8);
|
||||||
gSprites[task->data[15]].pos2.x = 3;
|
task->data[3] = 0;
|
||||||
gSprites[task->data[15]].pos1.y++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gSprites[task->data[15]].pos2.x = -3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sub_80A80C8(task) == 0)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
|
||||||
gSprites[task->data[15]].pos2.x = 0;
|
|
||||||
task->data[3] = 0;
|
|
||||||
task->data[4] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (++task->data[3] > 4)
|
|
||||||
{
|
|
||||||
sub_80A805C(task, task->data[15], 224, 0x200, 384, 224, 8);
|
|
||||||
task->data[3] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (sub_80A80C8(task) == 0)
|
|
||||||
{
|
|
||||||
task->data[3] = 0;
|
|
||||||
task->data[4] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
sub_8108408(task, taskId);
|
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
case 5:
|
}
|
||||||
if (++task->data[3] > 1)
|
break;
|
||||||
|
case 3:
|
||||||
|
if (sub_80A80C8(task) == 0)
|
||||||
|
{
|
||||||
|
task->data[3] = 0;
|
||||||
|
task->data[4] = 0;
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_8108408(task, taskId);
|
||||||
|
task->data[0]++;
|
||||||
|
case 5:
|
||||||
|
if (++task->data[3] > 1)
|
||||||
|
{
|
||||||
|
task->data[3] = 0;
|
||||||
|
if (++task->data[4] & 1)
|
||||||
|
gSprites[task->data[15]].pos2.y += 2;
|
||||||
|
else
|
||||||
|
gSprites[task->data[15]].pos2.y -= 2;
|
||||||
|
if (task->data[4] == 10)
|
||||||
{
|
{
|
||||||
|
sub_80A805C(task, task->data[15], 384, 224, 0x100, 0x100, 8);
|
||||||
task->data[3] = 0;
|
task->data[3] = 0;
|
||||||
if (++task->data[4] & 1)
|
|
||||||
gSprites[task->data[15]].pos2.y += 2;
|
|
||||||
else
|
|
||||||
gSprites[task->data[15]].pos2.y -= 2;
|
|
||||||
if (task->data[4] == 10)
|
|
||||||
{
|
|
||||||
sub_80A805C(task, task->data[15], 384, 224, 0x100, 0x100, 8);
|
|
||||||
task->data[3] = 0;
|
|
||||||
task->data[4] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
gSprites[task->data[15]].pos1.y--;
|
|
||||||
if (sub_80A80C8(task) == 0)
|
|
||||||
{
|
|
||||||
ResetSpriteRotScale(task->data[15]);
|
|
||||||
gSprites[task->data[15]].pos1.y = task->data[5];
|
|
||||||
task->data[4] = 0;
|
task->data[4] = 0;
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case 7:
|
break;
|
||||||
if (task->data[2] == 0)
|
case 6:
|
||||||
DestroyAnimVisualTask(taskId);
|
gSprites[task->data[15]].pos1.y--;
|
||||||
break;
|
if (sub_80A80C8(task) == 0)
|
||||||
|
{
|
||||||
|
ResetSpriteRotScale(task->data[15]);
|
||||||
|
gSprites[task->data[15]].pos1.y = task->data[5];
|
||||||
|
task->data[4] = 0;
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (task->data[2] == 0)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2073,21 +1665,21 @@ void sub_810851C(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sprite->data[4] += (sprite->data[1] % 6) * 3;
|
sprite->data[4] += (sprite->data[1] % 6) * 3;
|
||||||
sprite->data[5] += (sprite->data[1] % 3) * 3;
|
sprite->data[5] += (sprite->data[1] % 3) * 3;
|
||||||
sprite->data[0]++;
|
sprite->data[0]++;
|
||||||
case 1:
|
case 1:
|
||||||
sprite->data[2] += sprite->data[4];
|
sprite->data[2] += sprite->data[4];
|
||||||
sprite->data[3] += sprite->data[5];
|
sprite->data[3] += sprite->data[5];
|
||||||
sprite->pos1.x = sprite->data[2] >> 4;
|
sprite->pos1.x = sprite->data[2] >> 4;
|
||||||
sprite->pos1.y = sprite->data[3] >> 4;
|
sprite->pos1.y = sprite->data[3] >> 4;
|
||||||
if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||||
{
|
{
|
||||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2119,39 +1711,39 @@ void sub_810862C(u8 taskId)
|
|||||||
|
|
||||||
switch (task->data[0])
|
switch (task->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (++task->data[2] > 2)
|
if (++task->data[2] > 2)
|
||||||
|
{
|
||||||
|
task->data[2] = 0;
|
||||||
|
sub_810871C(task, taskId);
|
||||||
|
}
|
||||||
|
if (task->data[10] != 0 && task->data[13] == 0)
|
||||||
|
{
|
||||||
|
gBattleAnimArgs[0] = 1;
|
||||||
|
gBattleAnimArgs[1] = 0;
|
||||||
|
gBattleAnimArgs[2] = 12;
|
||||||
|
taskId2 = CreateTask(sub_81152DC, 80);
|
||||||
|
if (taskId2 != 0xFF)
|
||||||
{
|
{
|
||||||
task->data[2] = 0;
|
gTasks[taskId2].func(taskId2);
|
||||||
sub_810871C(task, taskId);
|
gAnimVisualTaskCount++;
|
||||||
}
|
}
|
||||||
if (task->data[10] != 0 && task->data[13] == 0)
|
gBattleAnimArgs[0] = 3;
|
||||||
|
taskId2 = CreateTask(sub_81152DC, 80);
|
||||||
|
if (taskId2 != 0xFF)
|
||||||
{
|
{
|
||||||
gBattleAnimArgs[0] = 1;
|
gTasks[taskId2].func(taskId2);
|
||||||
gBattleAnimArgs[1] = 0;
|
gAnimVisualTaskCount++;
|
||||||
gBattleAnimArgs[2] = 12;
|
|
||||||
taskId2 = CreateTask(sub_81152DC, 80);
|
|
||||||
if (taskId2 != 0xFF)
|
|
||||||
{
|
|
||||||
gTasks[taskId2].func(taskId2);
|
|
||||||
gAnimVisualTaskCount++;
|
|
||||||
}
|
|
||||||
gBattleAnimArgs[0] = 3;
|
|
||||||
taskId2 = CreateTask(sub_81152DC, 80);
|
|
||||||
if (taskId2 != 0xFF)
|
|
||||||
{
|
|
||||||
gTasks[taskId2].func(taskId2);
|
|
||||||
gAnimVisualTaskCount++;
|
|
||||||
}
|
|
||||||
task->data[13] = 1;
|
|
||||||
}
|
}
|
||||||
if (task->data[11] >= task->data[12])
|
task->data[13] = 1;
|
||||||
task->data[0]++;
|
}
|
||||||
break;
|
if (task->data[11] >= task->data[12])
|
||||||
case 1:
|
task->data[0]++;
|
||||||
if (task->data[9] == 0)
|
break;
|
||||||
DestroyAnimVisualTask(taskId);
|
case 1:
|
||||||
break;
|
if (task->data[9] == 0)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2232,66 +1824,66 @@ void sub_8108978(u8 taskId)
|
|||||||
|
|
||||||
switch (task->data[0])
|
switch (task->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sub_8108AC0(task);
|
sub_8108AC0(task);
|
||||||
if (task->data[10] != 0)
|
if (task->data[10] != 0)
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sub_8108AC0(task);
|
sub_8108AC0(task);
|
||||||
if (++task->data[1] > 16)
|
if (++task->data[1] > 16)
|
||||||
|
{
|
||||||
|
task->data[1] = 0;
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sub_8108AC0(task);
|
||||||
|
task->data[5] += task->data[7] * 6;
|
||||||
|
if (!(task->data[5] >= -16 && task->data[5] <= 256))
|
||||||
|
{
|
||||||
|
if (++task->data[12] > 2)
|
||||||
|
{
|
||||||
|
task->data[13] = 1;
|
||||||
|
task->data[0] = 6;
|
||||||
|
task->data[1] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
task->data[1] = 0;
|
task->data[1] = 0;
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case 2:
|
break;
|
||||||
sub_8108AC0(task);
|
case 3:
|
||||||
task->data[5] += task->data[7] * 6;
|
sub_8108AC0(task);
|
||||||
if (!(task->data[5] >= -16 && task->data[5] <= 256))
|
task->data[6] -= task->data[7] * 2;
|
||||||
{
|
if (++task->data[1] > 7)
|
||||||
if (++task->data[12] > 2)
|
task->data[0]++;
|
||||||
{
|
break;
|
||||||
task->data[13] = 1;
|
case 4:
|
||||||
task->data[0] = 6;
|
sub_8108AC0(task);
|
||||||
task->data[1] = 0;
|
task->data[5] -= task->data[7] * 6;
|
||||||
}
|
if (!(task->data[5] >= -16 && task->data[5] <= 256))
|
||||||
else
|
{
|
||||||
{
|
task->data[12]++;
|
||||||
task->data[1] = 0;
|
task->data[1] = 0;
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case 5:
|
||||||
case 3:
|
sub_8108AC0(task);
|
||||||
sub_8108AC0(task);
|
task->data[6] -= task->data[7] * 2;
|
||||||
task->data[6] -= task->data[7] * 2;
|
if (++task->data[1] > 7)
|
||||||
if (++task->data[1] > 7)
|
task->data[0] = 2;
|
||||||
task->data[0]++;
|
break;
|
||||||
break;
|
case 6:
|
||||||
case 4:
|
if (task->data[8] == 0)
|
||||||
sub_8108AC0(task);
|
task->data[0]++;
|
||||||
task->data[5] -= task->data[7] * 6;
|
break;
|
||||||
if (!(task->data[5] >= -16 && task->data[5] <= 256))
|
default:
|
||||||
{
|
DestroyAnimVisualTask(taskId);
|
||||||
task->data[12]++;
|
break;
|
||||||
task->data[1] = 0;
|
|
||||||
task->data[0]++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
sub_8108AC0(task);
|
|
||||||
task->data[6] -= task->data[7] * 2;
|
|
||||||
if (++task->data[1] > 7)
|
|
||||||
task->data[0] = 2;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
if (task->data[8] == 0)
|
|
||||||
task->data[0]++;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DestroyAnimVisualTask(taskId);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user