summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-07-20 18:03:49 -0400
committerGitHub <noreply@github.com>2020-07-20 18:03:49 -0400
commit4dc2ba23f617f0b53a8f4d95e82a71580a808c91 (patch)
tree9522877c5990fcc3877e985f0d1c228a1c42593d /src/battle
parentc6b4319b682807d714f88857f16287770b483db8 (diff)
parentaeeff84462973b267e62031a945603d96afed716 (diff)
Merge branch 'master' into constants-mapdatasize
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/anim/shadow_minimize.c182
-rw-r--r--src/battle/anim/unused_9.c69
2 files changed, 31 insertions, 220 deletions
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c
index a4589f096..913e58bc4 100644
--- a/src/battle/anim/shadow_minimize.c
+++ b/src/battle/anim/shadow_minimize.c
@@ -8,14 +8,14 @@ extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
-static void sub_80D04E0(u8 taskId);
-void sub_80D0614(struct Task* task, u8 taskId);
-void sub_80D0704(struct Sprite* sprite);
+static void AnimTask_Minimize_Step(u8 taskId);
+void CreateMinimizeSprite(struct Task* task, u8 taskId);
+void ClonedMinimizeSprite_Step(struct Sprite* sprite);
// shadow_minimize (the minimizing-like shadow over the Pokemon effect.)
// Used in Minimize.
-void sub_80D0488(u8 taskId)
+void AnimTask_Minimize(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
@@ -28,17 +28,17 @@ void sub_80D0488(u8 taskId)
task->data[5] = 0;
task->data[6] = 0;
task->data[7] = GetBattlerSubpriority(gBattleAnimAttacker);
- task->func = sub_80D04E0;
+ task->func = AnimTask_Minimize_Step;
}
-void sub_80D04E0(u8 taskId)
+void AnimTask_Minimize_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
switch (task->data[1])
{
case 0:
if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6)
- sub_80D0614(task, taskId);
+ CreateMinimizeSprite(task, taskId);
task->data[2]++;
task->data[4] += 0x28;
obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
@@ -97,164 +97,40 @@ void sub_80D04E0(u8 taskId)
}
}
-#ifdef NONMATCHING
-void sub_80D0614(struct Task* task, u8 taskId)
+void CreateMinimizeSprite(struct Task* task, u8 taskId)
{
- s16 r8 = duplicate_obj_of_side_rel2move_in_transparent_mode(0);
- if (r8 >= 0)
+ s16 matrixNum; // u16 in Emerald
+ s16 spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(0);
+
+ if (spriteId >= 0)
{
- u8 r6 = AllocOamMatrix();
- if (r6 == 0xFF)
+ matrixNum = AllocOamMatrix();
+ if (matrixNum == 0xFF)
{
- obj_delete_but_dont_free_vram(&gSprites[r8]);
+ obj_delete_but_dont_free_vram(&gSprites[spriteId]);
+ return;
}
else
{
- gSprites[r8].oam.objMode = ST_OAM_OBJ_BLEND;
- gSprites[r8].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- gSprites[r8].affineAnimPaused = TRUE;
- r6 &= 0x1f;
-
- gSprites[r8].oam.matrixNum = r6; // need to inhibit optimizing out the mov r0, 0x3f / neg r0, r0
- // current code does subs r0, #94 (0x1f - 94 = 0xc1, !0x3f = 0xc1)
- gSprites[r8].subpriority = task->data[7] - task->data[3];
+ gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ gSprites[spriteId].affineAnimPaused = TRUE;
+ gSprites[spriteId].oam.matrixNum = matrixNum;
+ gSprites[spriteId].subpriority = task->data[7] - task->data[3];
task->data[3]++;
task->data[6]++;
- gSprites[r8].data[0] = 16;
- gSprites[r8].data[1] = taskId;
- gSprites[r8].data[2] = 6;
- gSprites[r8].callback = sub_80D0704;
- obj_id_set_rotscale(r8, task->data[4], task->data[4], 0);
- gSprites[r8].oam.affineMode = 1;
- CalcCenterToCornerVec(&gSprites[r8], gSprites[r8].oam.shape, gSprites[r8].oam.size, gSprites[r8].oam.affineMode);
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[1] = taskId;
+ gSprites[spriteId].data[2] = 6;
+ gSprites[spriteId].callback = ClonedMinimizeSprite_Step;
+ obj_id_set_rotscale(spriteId, task->data[4], task->data[4], 0);
+ gSprites[spriteId].oam.affineMode = 1;
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
}
}
}
-#else
-NAKED
-void sub_80D0614(struct Task* task, u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r7, r0, 0 @r7 is task\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r9, r1 @r9 is taskId\n\
- movs r0, 0\n\
- bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- cmp r4, 0\n\
- blt _080D06EE @jump to bottom\n\
- bl AllocOamMatrix\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0xFF\n\
- bne _080D0658\n\
- lsls r0, r4, 4\n\
- adds r0, r4\n\
- lsls r0, 2\n\
- ldr r1, _080D0654 @ =gSprites\n\
- adds r0, r1\n\
- bl obj_delete_but_dont_free_vram\n\
- b _080D06EE @ jump to bottom\n\
- .align 2, 0\n\
-_080D0654: .4byte gSprites\n\
-_080D0658:\n\
- ldr r5, _080D06FC @ =gSprites\n\
- lsls r3, r4, 4\n\
- adds r3, r4\n\
- lsls r3, 2\n\
- adds r4, r3, r5\n\
- ldrb r1, [r4, 0x1]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- movs r1, 0x3\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x1]\n\
- adds r2, r4, 0\n\
- adds r2, 0x2C\n\
- ldrb r0, [r2]\n\
- movs r1, 0x80\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1F\n\
- ands r6, r0\n\
- lsls r2, r6, 1\n\
- ldrb r1, [r4, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r1\n\
- orrs r0, r2\n\
- strb r0, [r4, 0x3]\n\
- ldrb r0, [r7, 0x16]\n\
- ldrb r1, [r7, 0xE]\n\
- subs r0, r1\n\
- adds r1, r4, 0\n\
- adds r1, 0x43\n\
- strb r0, [r1]\n\
- ldrh r0, [r7, 0xE]\n\
- adds r0, 0x1\n\
- strh r0, [r7, 0xE]\n\
- ldrh r0, [r7, 0x14]\n\
- adds r0, 0x1\n\
- strh r0, [r7, 0x14]\n\
- movs r0, 0x10\n\
- strh r0, [r4, 0x2E]\n\
- mov r0, r9\n\
- strh r0, [r4, 0x30]\n\
- movs r0, 0x6\n\
- strh r0, [r4, 0x32]\n\
- adds r5, 0x1C\n\
- adds r3, r5\n\
- ldr r0, _080D0700 @ =sub_80D0704\n\
- str r0, [r3]\n\
- mov r1, r8 @duplicate_obj_of_side_rel2move_in_transparent_mode(0)\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x10\n\
- ldrsh r2, [r7, r1]\n\
- adds r1, r2, 0\n\
- movs r3, 0\n\
- bl obj_id_set_rotscale\n\
- ldrb r0, [r4, 0x1]\n\
- movs r3, 0x4\n\
- negs r3, r3\n\
- ands r3, r0\n\
- movs r0, 0x1\n\
- orrs r3, r0\n\
- strb r3, [r4, 0x1]\n\
- lsrs r1, r3, 6\n\
- ldrb r2, [r4, 0x3]\n\
- lsrs r2, 6\n\
- lsls r3, 30\n\
- lsrs r3, 30\n\
- adds r0, r4, 0\n\
- bl CalcCenterToCornerVec\n\
-_080D06EE:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080D06FC: .4byte gSprites\n\
-_080D0700: .4byte sub_80D0704\n\
-.syntax divided\n");
-}
-#endif
-void sub_80D0704(struct Sprite* sprite)
+void ClonedMinimizeSprite_Step(struct Sprite* sprite)
{
if (--sprite->data[0] == 0)
{
diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c
index a9a42a695..23012fe8a 100644
--- a/src/battle/anim/unused_9.c
+++ b/src/battle/anim/unused_9.c
@@ -33,7 +33,6 @@ void sub_80CFDFC(struct Sprite* sprite)
sprite->callback = sub_80CFE2C;
}
-#ifdef NONMATCHING
static void sub_80CFE2C(struct Sprite* sprite)
{
u16 r7;
@@ -44,9 +43,9 @@ static void sub_80CFE2C(struct Sprite* sprite)
sprite->data[1] = 0;
r5 = sprite->data[0];
r7 = gPlttBufferFaded[r5 + 8];
- for (i = 0; i < 8; i++)
+ for (i = 8; i < 16; i++)
{
- gPlttBufferFaded[r5 + i + 8] = gPlttBufferFaded[r5 + i + 9];
+ gPlttBufferFaded[r5 + i] = gPlttBufferFaded[r5 + i + 1];
}
gPlttBufferFaded[r5 + 15] = r7;
@@ -54,67 +53,3 @@ static void sub_80CFE2C(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
}
-#else
-NAKED
-static void sub_80CFE2C(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x30]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x30]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x2\n\
- bne _080CFE90\n\
- movs r0, 0\n\
- strh r0, [r4, 0x30]\n\
- ldrh r5, [r4, 0x2E]\n\
- ldr r1, _080CFE98 @ =gPlttBufferFaded\n\
- adds r0, r5, 0\n\
- adds r0, 0x8\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r7, [r0]\n\
- adds r6, r1, 0 @puts gPlttBufferFaded in r6\n\
- adds r1, r5, 0\n\
- adds r1, 0x9\n\
- lsls r0, r5, 1\n\
- adds r0, r6 \n\
- adds r2, r0, 0\n\
- adds r2, 0x10\n\
- movs r3, 0x7\n\
- lsls r1, 1\n\
- adds r1, r6 \n\
-_080CFE64:\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- adds r1, 0x2\n\
- adds r2, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _080CFE64\n\
- adds r0, r5, 0\n\
- adds r0, 0xF\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- strh r7, [r0]\n\
- ldrh r0, [r4, 0x32]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x32]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x18\n\
- bne _080CFE90\n\
- adds r0, r4, 0\n\
- bl DestroyAnimSprite\n\
-_080CFE90:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CFE98: .4byte gPlttBufferFaded\n\
-.syntax divided\n");
-}
-#endif