Match electric c

This commit is contained in:
DizzyEggg 2018-12-22 18:52:05 +01:00
parent 72532c9eee
commit 8fcb3f71c7

View file

@ -462,7 +462,7 @@ static void sub_810A1A8(struct Sprite *sprite)
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
sprite->callback = sub_810A1F8;
}
@ -479,7 +479,7 @@ static void sub_810A214(struct Sprite *sprite)
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
sprite->callback = sub_810A258;
}
@ -493,7 +493,7 @@ static void sub_810A274(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x -= gBattleAnimArgs[0];
@ -615,7 +615,7 @@ static void sub_810A5BC(struct Sprite *sprite)
{
if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
sprite->data[3] = gBattleAnimArgs[0];
@ -686,17 +686,16 @@ void sub_810A7DC(u8 taskId)
gTasks[taskId].func = sub_810A834;
}
#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.(ported from ruby)
static void sub_810A834(u8 taskId)
{
u16 r8;
u16 r2;
s16 r12;
s16 r2;
u8 spriteId = 0;
u8 r7 = 0;
u8 sp = gTasks[taskId].data[2];
s16 r4 = gTasks[taskId].data[0];
s16 r6 = gTasks[taskId].data[1];
s16 x = gTasks[taskId].data[0];
s16 y = gTasks[taskId].data[1];
if (!gTasks[taskId].data[2])
{
@ -714,27 +713,31 @@ static void sub_810A834(u8 taskId)
switch (gTasks[taskId].data[10])
{
case 0:
r8 += r2 * 0;
spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 1), 2);
r12 *= 1;
spriteId = CreateSprite(&gUnknown_08595828, x, y + r12, 2);
r7++;
break;
case 2:
r12 *= 2;
r8 += r2;
spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 2), 2);
spriteId = CreateSprite(&gUnknown_08595828, x, y + r12, 2);
r7++;
break;
case 4:
r12 *= 3;
r8 += r2 * 2;
spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 3), 2);
spriteId = CreateSprite(&gUnknown_08595828, x, y + r12, 2);
r7++;
break;
case 6:
r12 *= 4;
r8 += r2 * 3;
spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 4), 2);
spriteId = CreateSprite(&gUnknown_08595828, x, y + r12, 2);
r7++;
break;
case 8:
spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 5), 2);
r12 *= 5;
spriteId = CreateSprite(&gUnknown_08595828, x, y + r12, 2);
r7++;
break;
case 10:
@ -751,211 +754,6 @@ static void sub_810A834(u8 taskId)
gTasks[taskId].data[10]++;
}
#else
NAKED
static void sub_810A834(u8 taskId)
{
asm_unified("\n\
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\
lsls r0, 24\n\
lsrs r0, 24\n\
mov r9, r0\n\
movs r5, 0\n\
movs r7, 0\n\
ldr r1, =gTasks\n\
lsls r0, 2\n\
add r0, r9\n\
lsls r0, 3\n\
adds r0, r1\n\
ldrb r2, [r0, 0xC]\n\
str r2, [sp]\n\
ldrh r4, [r0, 0x8]\n\
ldrh r6, [r0, 0xA]\n\
movs r3, 0xC\n\
ldrsh r0, [r0, r3]\n\
mov r10, r1\n\
cmp r0, 0\n\
bne _0810A878\n\
movs r0, 0\n\
mov r8, r0\n\
movs r2, 0x1\n\
movs r1, 0x10\n\
mov r12, r1\n\
b _0810A882\n\
.pool\n\
_0810A878:\n\
movs r2, 0x10\n\
mov r12, r2\n\
movs r3, 0x8\n\
mov r8, r3\n\
movs r2, 0x4\n\
_0810A882:\n\
mov r0, r9\n\
lsls r1, r0, 2\n\
adds r0, r1, r0\n\
lsls r0, 3\n\
add r0, r10\n\
movs r3, 0x1C\n\
ldrsh r0, [r0, r3]\n\
mov r10, r1\n\
cmp r0, 0xA\n\
bhi _0810A978\n\
lsls r0, 2\n\
ldr r1, =_0810A8A4\n\
adds r0, r1\n\
ldr r0, [r0]\n\
mov pc, r0\n\
.pool\n\
.align 2, 0\n\
_0810A8A4:\n\
.4byte _0810A8D0\n\
.4byte _0810A978\n\
.4byte _0810A8E4\n\
.4byte _0810A978\n\
.4byte _0810A904\n\
.4byte _0810A978\n\
.4byte _0810A91A\n\
.4byte _0810A978\n\
.4byte _0810A93C\n\
.4byte _0810A978\n\
.4byte _0810A970\n\
_0810A8D0:\n\
ldr r0, =gUnknown_08595828\n\
lsls r1, r4, 16\n\
asrs r1, 16\n\
lsls r2, r6, 16\n\
asrs r2, 16\n\
mov r4, r12\n\
lsls r3, r4, 16\n\
b _0810A952\n\
.pool\n\
_0810A8E4:\n\
mov r0, r12\n\
lsls r3, r0, 17\n\
mov r1, r8\n\
adds r0, r1, r2\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
ldr r0, =gUnknown_08595828\n\
lsls r1, r4, 16\n\
asrs r1, 16\n\
lsls r2, r6, 16\n\
asrs r2, 16\n\
b _0810A952\n\
.pool\n\
_0810A904:\n\
mov r3, r12\n\
lsls r0, r3, 16\n\
asrs r0, 16\n\
lsls r3, r0, 1\n\
adds r3, r0\n\
lsls r0, r2, 1\n\
add r0, r8\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
b _0810A946\n\
_0810A91A:\n\
mov r0, r12\n\
lsls r3, r0, 18\n\
lsls r0, r2, 1\n\
adds r0, r2\n\
add r0, r8\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
ldr r0, =gUnknown_08595828\n\
lsls r1, r4, 16\n\
asrs r1, 16\n\
lsls r2, r6, 16\n\
asrs r2, 16\n\
b _0810A952\n\
.pool\n\
_0810A93C:\n\
mov r1, r12\n\
lsls r0, r1, 16\n\
asrs r0, 16\n\
lsls r3, r0, 2\n\
adds r3, r0\n\
_0810A946:\n\
ldr r0, =gUnknown_08595828\n\
lsls r1, r4, 16\n\
asrs r1, 16\n\
lsls r2, r6, 16\n\
asrs r2, 16\n\
lsls r3, 16\n\
_0810A952:\n\
asrs r3, 16\n\
adds r2, r3\n\
lsls r2, 16\n\
asrs r2, 16\n\
movs r3, 0x2\n\
bl CreateSprite\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
adds r0, r7, 0x1\n\
lsls r0, 24\n\
lsrs r7, r0, 24\n\
b _0810A978\n\
.pool\n\
_0810A970:\n\
mov r0, r9\n\
bl DestroyAnimVisualTask\n\
b _0810A9BC\n\
_0810A978:\n\
cmp r7, 0\n\
beq _0810A9AC\n\
ldr r4, =gSprites\n\
lsls r3, r5, 4\n\
adds r3, r5\n\
lsls r3, 2\n\
adds r0, r3, r4\n\
ldrh r5, [r0, 0x4]\n\
lsls r2, r5, 22\n\
lsrs r2, 22\n\
add r2, r8\n\
ldr r6, =0x000003ff\n\
adds r1, r6, 0\n\
ands r2, r1\n\
ldr r1, =0xfffffc00\n\
ands r1, r5\n\
orrs r1, r2\n\
strh r1, [r0, 0x4]\n\
mov r1, sp\n\
ldrh r1, [r1]\n\
strh r1, [r0, 0x2E]\n\
adds r4, 0x1C\n\
adds r3, r4\n\
ldr r1, [r3]\n\
bl _call_via_r1\n\
_0810A9AC:\n\
ldr r0, =gTasks\n\
mov r1, r10\n\
add r1, r9\n\
lsls r1, 3\n\
adds r1, r0\n\
ldrh r0, [r1, 0x1C]\n\
adds r0, 0x1\n\
strh r0, [r1, 0x1C]\n\
_0810A9BC:\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
static void sub_810A9DC(struct Sprite *sprite)
{
@ -1002,7 +800,7 @@ void sub_810AAFC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
if (!gBattleAnimArgs[0])
if (!gBattleAnimArgs[0])
{
task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@ -1188,7 +986,7 @@ void sub_810AE5C(u8 taskId)
}
else
task->data[0]++;
}
break;
case 2:
@ -1334,6 +1132,7 @@ static void sub_810B23C(struct Sprite *sprite)
case 1:
if (sprite->affineAnimEnded)
DestroySpriteAndMatrix(sprite);
break;
}
}