summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-12 10:15:31 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-12 10:15:31 -0500
commitcce4c9e92bfe7e10be3a0cf4940299e84701dba0 (patch)
tree514282760474bf038fb734f87e4f84ac3fb0df12 /src/battle
parent3b8f6133865af6ede3628f3df8dd71648b43b3bc (diff)
parent6a2e39eb97db47b542eea76c1e45df37184a0705 (diff)
Merge branch 'master' into pokemon_storage_system
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/anim/bug.c302
-rwxr-xr-xsrc/battle/anim/dark.c138
-rwxr-xr-xsrc/battle/anim/dragon.c275
-rwxr-xr-xsrc/battle/anim/draw.c36
-rw-r--r--src/battle/anim/poison.c140
-rw-r--r--src/battle/anim/wisp_fire.c196
-rw-r--r--src/battle/battle_2.c64
-rw-r--r--src/battle/battle_4.c24
-rw-r--r--src/battle/battle_controller_linkopponent.c2
-rw-r--r--src/battle/battle_controller_linkpartner.c2
-rw-r--r--src/battle/battle_controller_opponent.c2
-rw-r--r--src/battle/battle_controller_player.c70
-rw-r--r--src/battle/battle_controller_safari.c16
-rw-r--r--src/battle/battle_controller_wally.c18
-rw-r--r--src/battle/battle_party_menu.c8
-rw-r--r--src/battle/battle_records.c34
-rw-r--r--src/battle/battle_transition.c172
-rw-r--r--src/battle/reshow_battle_screen.c16
18 files changed, 1283 insertions, 232 deletions
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
new file mode 100644
index 000000000..dbc0f75a5
--- /dev/null
+++ b/src/battle/anim/bug.c
@@ -0,0 +1,302 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "contest.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+// #include "util.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+static void sub_80DCA38(struct Sprite *sprite);
+static void sub_80DCAEC(struct Sprite *sprite);
+static void sub_80DCB5C(struct Sprite *sprite);
+static void sub_80DCBB4(struct Sprite *sprite);
+void sub_80DCD78(struct Sprite *sprite);
+
+// used in Move_MEGAHORN
+void sub_80DC824(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in Move_LEECH_LIFE
+void sub_80DC8F4(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in 2 moves:
+// Move_STRING_SHOT, Move_SPIDER_WEB
+void sub_80DC9A0(struct Sprite *sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[2] /= 2;
+
+ sub_80787B0(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+
+ if (!gBattleAnimArgs[4])
+ {
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ }
+ else
+ {
+ sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sub_8078BD4(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DCA38;
+}
+
+static void sub_80DCA38(struct Sprite *sprite)
+{
+ if (sub_8078B5C(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
+}
+
+// used in Move_STRING_SHOT
+void sub_80DCA70(struct Sprite *sprite)
+{
+ sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ if (GetBankSide(gAnimBankAttacker))
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ if (!GetBankSide(gAnimBankTarget))
+ sprite->pos1.y += 8;
+
+ sprite->callback = sub_80DCAEC;
+}
+
+static void sub_80DCAEC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// used in Move_SPIDER_WEB
+void sub_80DCB38(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 16;
+
+ sprite->data[0] = 16;
+ sprite->callback = sub_80DCB5C;
+}
+
+static void sub_80DCB5C(struct Sprite *sprite)
+{
+ if (sprite->data[2] < 20)
+ {
+ sprite->data[2]++;
+ }
+ else if (sprite->data[1]++ & 1)
+ {
+ sprite->data[0]--;
+ REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8);
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80DCBB4;
+ }
+ }
+}
+
+static void sub_80DCBB4(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+}
+
+// used in 3 moves:
+// Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON
+void sub_80DCBCC(struct Sprite *sprite)
+{
+ s16 lVarX, lVarY;
+ u16 rot;
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ else
+ {
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ }
+
+ if (!IsContest())
+ {
+ if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ {
+ if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1)
+ {
+ s16 temp1, temp2;
+
+ temp1 = gBattleAnimArgs[2];
+ gBattleAnimArgs[2] = -temp1;
+
+ temp2 = gBattleAnimArgs[0];
+ gBattleAnimArgs[0] = -temp2;
+ }
+ }
+ }
+
+ sub_80787B0(sprite, 1);
+
+ lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ rot = sub_80790F0(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot += 0xC000;
+ sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = lVarX;
+ sprite->data[4] = lVarY;
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in 2 moves:
+// Move_PIN_MISSILE, Move_ICICLE_SPEAR
+void sub_80DCCFC(struct Sprite *sprite)
+{
+ sub_80787B0(sprite, 1);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80DCD78;
+ sprite->invisible = TRUE;
+}
+
+void sub_80DCD78(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+
+ if (sub_8078718(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ s16 tempData[8];
+ u16 *data = sprite->data;
+ u16 x1 = sprite->pos1.x;
+ s16 x2 = sprite->pos2.x;
+ u16 y1 = sprite->pos1.y;
+ s16 y2 = sprite->pos2.y;
+ int i;
+
+ for (i = 0; i < 8; i++)
+ tempData[i] = data[i];
+
+ x2 += x1;
+ y2 += y1;
+
+ if (!sub_8078718(sprite))
+ {
+ u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2,
+ sprite->pos1.y + sprite->pos2.y - y2);
+ rot += 0xC000;
+ sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
+
+ for (i = 0; i < 8; i++)
+ data[i] = tempData[i];
+ }
+ }
+}
+
+void sub_80DCE40(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18;
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18;
+ }
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+}
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
new file mode 100755
index 000000000..8ceb00298
--- /dev/null
+++ b/src/battle/anim/dark.c
@@ -0,0 +1,138 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "scanline_effect.h"
+
+void sub_80DFE90(struct Sprite *sprite);
+
+void sub_80DFC9C(u8 taskId);
+void sub_80DFD58(u8 taskId);
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gObjectBankIDs[];
+
+// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
+
+void sub_80DFC24(u8 taskId)
+{
+ int bank;
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ bank = gAnimBankAttacker;
+ gTasks[taskId].data[1] = 16;
+ REG_BLDALPHA = 16;
+ if (GetBankIdentity_permutated(bank) == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+ gTasks[taskId].func = sub_80DFC9C;
+}
+
+void sub_80DFC9C(u8 taskId)
+{
+ u8 r2 = gTasks[taskId].data[1] >> 8;
+ u8 r1 = gTasks[taskId].data[1];
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ r2++;
+ r1--;
+ gTasks[taskId].data[1] = (r2 << 8) | r1;
+ REG_BLDALPHA = (r2 << 8) | r1;
+ gTasks[taskId].data[2] = 0;
+ if (r2 == 16)
+ {
+ gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[2]++;
+}
+
+void sub_80DFD24(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = 0x1000;
+ gTasks[taskId].func = sub_80DFD58;
+ REG_BLDALPHA = 0x1000;
+}
+
+void sub_80DFD58(u8 taskId)
+{
+ u8 r1 = gTasks[taskId].data[1] >> 8;
+ u8 r5 = gTasks[taskId].data[1];
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ r1--;
+ r5++;
+ gTasks[taskId].data[1] = (r1 << 8) | r5;
+ REG_BLDALPHA = (r1 << 8) | r5;
+ gTasks[taskId].data[2] = 0;
+ if (r1 == 0)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[2]++;
+}
+
+// unlike the above is only used in Feint Attack
+
+void sub_80DFDC0(u8 taskId)
+{
+ REG_BLDALPHA = 0x1000;
+ if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+ DestroyAnimVisualTask(taskId);
+}
+
+// unused sprite template's callback
+
+void sub_80DFE14(struct Sprite *sprite)
+{
+ sprite->data[1] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->data[3] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[0] = 0x7E;
+ sub_8078A5C(sprite);
+ sprite->data[3] = -sprite->data[1];
+ sprite->data[4] = -sprite->data[2];
+ sprite->data[6] = 0xFFD8;
+ sprite->callback = sub_80DFE90;
+ sub_80DFE90(sprite);
+}
+
+void sub_80DFE90(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ if (sprite->data[7] == 0)
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->data[0]--;
+ }
+ sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
+ sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
+ if (sprite->data[5] > 0x7F)
+ {
+ sprite->data[5] = 0;
+ sprite->data[6] += 20;
+ sprite->data[7]++;
+ }
+ if (--sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
new file mode 100755
index 000000000..bf39e01c0
--- /dev/null
+++ b/src/battle/anim/dragon.c
@@ -0,0 +1,275 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "scanline_effect.h"
+
+void sub_80DF81C(struct Sprite *sprite);
+void sub_80DFBD8(struct Sprite *sprite);
+
+void sub_80DF9F4(u8 taskId);
+
+void sub_80DFAB0(struct Task *task);
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gBankAttacker;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG2_X;
+extern u16 gUnknown_03000730[];
+extern u8 gObjectBankIDs[];
+
+// Outrage
+
+void sub_80DF5A0(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+ }
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->invisible = 1;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078504;
+}
+
+// part of Dragon Breath
+
+void sub_80DF63C(struct Sprite *sprite)
+{
+ sub_8078650(sprite);
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] -= gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ StartSpriteAnim(sprite, 1);
+ }
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
+
+// Dragon Rage
+
+void sub_80DF6F0(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ }
+ sub_807867C(sprite, gBattleAnimArgs[1]);
+ sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
+
+// Dragon Breath init
+
+void sub_80DF760(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker))
+ StartSpriteAffineAnim(sprite, 1);
+ sub_80DF63C(sprite);
+}
+
+//next 2 tasks might be Dragon Dance orbs?
+
+void sub_80DF78C(struct Sprite *sprite)
+{
+ u16 r5;
+ u16 r0;
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ sprite->data[6] = gBattleAnimArgs[0];
+ r5 = sub_807A100(gBankAttacker, 0);
+ r0 = sub_807A100(gBankAttacker, 1);
+ if (r5 > r0)
+ sprite->data[7] = r5 / 2;
+ else
+ sprite->data[7] = r0 / 2;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->callback = sub_80DF81C;
+}
+
+void sub_80DF81C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 0x3C)
+ {
+ sprite->data[3] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
+ sprite->data[7] = 0x96;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 20)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+// Dragon Dance scanline eff
+
+void sub_80DF924(u8 taskId)
+{
+ struct ScanlineEffectParams sp;
+ struct Task *task = &gTasks[taskId];
+ u16 i;
+ u8 r1;
+ if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ {
+ sp.dmaDest = &REG_BG1HOFS;
+ task->data[2] = gBattle_BG1_X;
+ }
+ else
+ {
+ sp.dmaDest = &REG_BG2HOFS;
+ task->data[2] = gBattle_BG2_X;
+ }
+ sp.dmaControl = 0xA2600001;
+ sp.initState = 1;
+ sp.unused9 = 0;
+ r1 = sub_8077FC0(gAnimBankAttacker);
+ task->data[3] = r1 - 32;
+ task->data[4] = r1 + 32;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ for(i = task->data[3];i <= task->data[4];i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ }
+ ScanlineEffect_SetParams(sp);
+ task->func = sub_80DF9F4;
+}
+
+void sub_80DF9F4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (++task->data[6] == 3)
+ task->data[0]++;
+ }
+ sub_80DFAB0(task);
+ break;
+ case 1:
+ if (++task->data[1] > 0x3C)
+ task->data[0]++;
+ sub_80DFAB0(task);
+ break;
+ case 2:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (--task->data[6] == 0)
+ task->data[0]++;
+ }
+ sub_80DFAB0(task);
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DFAB0(struct Task *task)
+{
+ u16 r3 = task->data[5];
+ u16 i;
+ for (i = task->data[3]; i <= task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2];
+ r3 = (r3 + 8) & 0xFF;
+ }
+ task->data[5] = (task->data[5] + 9) & 0xFF;
+}
+
+// Overheat
+
+void sub_80DFB28(struct Sprite *sprite)
+{
+ int r6 = (gBattleAnimArgs[2] * 3) / 5;
+ int i;
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[4];
+ sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
+ sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
+ sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
+ sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DFBD8;
+ for (i = 0; i <= 6; i++)
+ gUnknown_03000730[i] = sprite->data[i];
+}
+
+void sub_80DFBD8(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->data[5] += sprite->data[2];
+ sprite->pos2.x = sprite->data[4] / 10;
+ sprite->pos2.y = sprite->data[5] / 10;
+ if (++sprite->data[0] > sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index 3adb62e06..f9e505bf2 100755
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -3,7 +3,7 @@
#include "trig.h"
#include "battle_anim.h"
#include "sound.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
@@ -21,7 +21,8 @@ static void sub_80D0E8C(struct Sprite* sprite);
void sub_80D0C88(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- struct UnknownTaskStruct sp;
+ struct ScanlineEffectParams params;
+
s16 i;
task->data[0] = sub_8077FC0(gAnimBankTarget) + 32;
task->data[1] = 4;
@@ -30,30 +31,31 @@ void sub_80D0C88(u8 taskId)
task->data[4] = 0;
task->data[5] = 0;
task->data[15] = sub_807A100(gAnimBankTarget, 0);
+
if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
{
task->data[6] = gBattle_BG1_X;
- sp.dest = (u16 *)REG_ADDR_BG1HOFS;
+ params.dmaDest = (u16 *)REG_ADDR_BG1HOFS;
}
else
{
task->data[6] = gBattle_BG2_X;
- sp.dest = (u16 *)REG_ADDR_BG2HOFS;
+ params.dmaDest = (u16 *)REG_ADDR_BG2HOFS;
}
for (i = task->data[0] - 0x40; i <= task->data[0];i++)
{
if (i >= 0)
{
- gUnknown_03004DE0[0][i] = task->data[6] + 0xF0;
- gUnknown_03004DE0[1][i] = task->data[6] + 0xF0;
+ gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0;
+ gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0;
}
}
- sp.control = 0xa2600001;
- sp.unk8 = 1;
- sp.unk9 = 0;
- sub_80895F8(sp);
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
task->func = sub_80D0D68;
}
@@ -91,13 +93,13 @@ void sub_80D0D68(u8 taskId)
if (task->data[5] >= 0)
{
- gUnknown_03004DE0[0][task->data[5]] = task->data[6];
- gUnknown_03004DE0[1][task->data[5]] = task->data[6];
+ gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6];
+ gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6];
}
if (++task->data[3] >= task->data[15])
{
- gUnknown_03004DC0.unk15 = 3;
+ gScanlineEffect.unk15 = 3;
DestroyAnimVisualTask(taskId);
}
}
@@ -178,7 +180,7 @@ _080D0DE0:\n\
ldrsh r0, [r3, r1]\n\
cmp r0, 0\n\
blt _080D0E04\n\
- ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\
+ ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\
lsls r0, 1\n\
adds r0, r2\n\
ldrh r1, [r3, 0x14]\n\
@@ -202,7 +204,7 @@ _080D0E04:\n\
ldrsh r1, [r3, r2]\n\
cmp r0, r1\n\
blt _080D0E22\n\
- ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\
+ ldr r1, _080D0E2C @ =gScanlineEffect\n\
movs r0, 0x3\n\
strb r0, [r1, 0x15]\n\
adds r0, r4, 0\n\
@@ -212,8 +214,8 @@ _080D0E22:\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
-_080D0E28: .4byte gUnknown_03004DE0\n\
-_080D0E2C: .4byte gUnknown_03004DC0\n\
+_080D0E28: .4byte gScanlineEffectRegBuffers\n\
+_080D0E2C: .4byte gScanlineEffect\n\
.syntax divided\n");
}
#endif
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
new file mode 100644
index 000000000..f31c441fb
--- /dev/null
+++ b/src/battle/anim/poison.c
@@ -0,0 +1,140 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80D9DD4(struct Sprite *sprite);
+void sub_80D9E78(struct Sprite *sprite);
+void sub_80D9EE8(struct Sprite *sprite);
+void sub_80D9FF0(struct Sprite *sprite);
+
+void sub_80D9D70(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ sub_80787B0(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[5] = -30;
+
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80D9DD4;
+}
+
+void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
+{
+ if (sub_8078718(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9DF0(struct Sprite *sprite)
+{
+ s16 l1, l2;
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ sub_80787B0(sprite, 1);
+ sub_807A3FC(gAnimBankTarget, 1, &l1, &l2);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = l1 + gBattleAnimArgs[4];
+ sprite->data[4] = l2 + gBattleAnimArgs[5];
+ sprite->data[5] = -30;
+
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80D9E78;
+}
+
+void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
+{
+ if (sub_8078718(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9E94(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
+
+ sub_8078A5C(sprite);
+
+ sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
+ sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
+
+ sprite->callback = sub_80D9EE8;
+}
+
+void sub_80D9EE8(struct Sprite *sprite)
+{
+ sub_8078394(sprite);
+
+ sprite->data[1] -= sprite->data[5];
+ sprite->data[2] -= sprite->data[6];
+
+ if (!sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9F14(struct Sprite *sprite)
+{
+ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + sprite->data[0];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D9F88(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[2])
+ {
+ sub_8078764(sprite, TRUE);
+ }
+ else
+ {
+ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->callback = sub_80D9FF0;
+}
+
+void sub_80D9FF0(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->data[1] += 0x30;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+} \ No newline at end of file
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
new file mode 100644
index 000000000..348ce6426
--- /dev/null
+++ b/src/battle/anim/wisp_fire.c
@@ -0,0 +1,196 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "main.h"
+#include "rom_8077ABC.h"
+#include "task.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankTarget;
+extern u8 gAnimBankAttacker;
+
+extern u8 gObjectBankIDs[];
+extern s8 gUnknown_083D9794[16];
+extern s8 gUnknown_083D97A4[16];
+
+void sub_80D5E4C(u8 taskId);
+
+void sub_80D5CC0(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[0] += 1;
+ }
+
+ sprite->data[3] += 0xC0 * 2;
+ sprite->data[4] += 0xA0;
+
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8);
+
+ sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
+
+ if (gMain.inBattle)
+ {
+ if (sprite->data[1] < 64 || sprite->data[1] > 195)
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget);
+ else
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1;
+ }
+ else
+ {
+ if (sprite->data[1] < 64 || sprite->data[1] > 195)
+ sprite->subpriority = 0x1D;
+ else
+ sprite->subpriority = 0x1F;
+ }
+
+ if (++sprite->data[2] > 0x14)
+ sprite->invisible ^= 1;
+
+ if (sprite->data[2] == 0x1E)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D5DDC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[12] = !GetBankSide(gAnimBankAttacker) ? 1 : -1;
+ task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1;
+ task->data[14] = GetAnimBankSpriteId(1);
+ task->data[15] = GetAnimBankSpriteId(3);
+
+ task->func = sub_80D5E4C;
+}
+
+void sub_80D5E4C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] += task->data[12] * 2;
+ if (++task->data[1] >= 2)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 16)
+ {
+ task->data[9] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (++task->data[1] >= 5)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 96)
+ {
+ task->data[9] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[10] -= task->data[12] * 2;
+
+ if (++task->data[1] >= 2)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 16)
+ {
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = 0;
+ }
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80D6080(u8 taskId)
+{
+ struct Struct_sub_8078914 unk;
+ sub_8078914(&unk);
+ BlendPalette(unk.field_8 << 4, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80D60B4(u8 taskId)
+{
+ s8 unk;
+ u8 spriteId;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = gBattleAnimArgs[3];
+ }
+ gTasks[taskId].data[0]++;
+
+ spriteId = gObjectBankIDs[gAnimBankTarget];
+
+ if (!gTasks[taskId].data[4])
+ unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10];
+ else
+ unk = gUnknown_083D97A4[gTasks[taskId].data[0] % 10];
+
+ if (gTasks[taskId].data[3] == 1)
+ gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk;
+ else
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * unk;
+
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+} \ No newline at end of file
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index ae84e5585..990535b4e 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -34,7 +34,7 @@
#include "trainer.h"
#include "trig.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
#include "constants/battle_move_effects.h"
#include "constants/items.h"
@@ -108,9 +108,9 @@ extern u16 gUnknown_02024DE8;
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern struct Window gUnknown_030041D0;
extern u16 gBattle_WIN1H;
extern struct Window gUnknown_03004210;
@@ -219,22 +219,22 @@ void InitBattle(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 80; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
- gUnknown_03004DE0[1][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0xF0;
}
for (i = 80; i < 160; i++)
{
asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
- gUnknown_03004DE0[0][i] = 0xFF10;
- gUnknown_03004DE0[1][i] = 0xFF10;
+ gScanlineEffectRegBuffers[0][i] = 0xFF10;
+ gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
- sub_80895F8(gUnknown_081F9674);
- SetUpWindowConfig(&gWindowConfig_81E6C58);
+ //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ ScanlineEffect_SetParams(gUnknown_081F9674);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
@@ -242,12 +242,12 @@ void InitBattle(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
gBattleTerrain = BattleSetup_GetTerrain();
- InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
- InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
- InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
+ Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
sub_800DAB8();
ResetSpriteData();
@@ -553,7 +553,7 @@ void sub_800F02C(void)
gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]);
- StripExtCtrlCodes(nickname);
+ Text_StripExtCtrlCodes(nickname);
gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE);
if (gUnknown_02023A00[i].language != 1)
PadNameString(nickname, 0);
@@ -898,7 +898,7 @@ void BattleMainCB2(void)
{
AnimateSprites();
BuildOamBuffer();
- sub_800374C(&gUnknown_03004210);
+ Text_UpdateWindowInBattle(&gUnknown_03004210);
UpdatePaletteFade();
RunTasks();
}
@@ -1064,8 +1064,8 @@ void sub_800FCFC(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
REG_WIN0H = gBattle_WIN0H;
REG_WIN0V = gBattle_WIN0V;
REG_WIN1H = gBattle_WIN1H;
@@ -1073,7 +1073,7 @@ void sub_800FCFC(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void nullsub_36(struct Sprite *sprite)
@@ -1197,20 +1197,20 @@ void c2_8011A1C(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 80; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
- gUnknown_03004DE0[1][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0xF0;
}
for (i = 80; i < 160; i++)
{
asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
- gUnknown_03004DE0[0][i] = 0xFF10;
- gUnknown_03004DE0[1][i] = 0xFF10;
+ gScanlineEffectRegBuffers[0][i] = 0xFF10;
+ gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- SetUpWindowConfig(&gWindowConfig_81E6C58);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
@@ -1218,12 +1218,12 @@ void c2_8011A1C(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
- InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
- InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
- InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
+ Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
LoadCompressedPalette(gUnknown_08D004E0, 0, 64);
sub_800D74C();
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 5a20a8324..ae8f94130 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -93,7 +93,7 @@ extern u16 gChosenMove; //last used move in battle
extern u8 gBankInMenu;
extern u8 gActionForBanks[4];
extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one
extern u8 gCurrentTurnActionNumber;
extern u16 gTrappingMoves[];
@@ -136,7 +136,7 @@ u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
void IncrementGameStat(u8 index);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight);
-u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
void DestroyMenuCursor(void);
void sub_802BC6C(void);
u8 sub_809FA30(void);
@@ -155,7 +155,7 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void);
u8 CalculatePlayerPartyCount(void);
u16 Sqrt(u32 num);
u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display
-void sub_814A880(u8 a1, u8 a2);
+void MenuCursor_SetPos814A880(u8 a1, u8 a2);
u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags);
bool8 IsLinkDoubleBattle(void);
void sub_8094B6C(u8 bank, u8 partyID, u8 r2);
@@ -10767,9 +10767,9 @@ void atk59_handlelearnnewmove(void)
void sub_8023A80(void)
{
sub_802BBD4(0x18, 8, 0x1D, 0xD, 0);
- InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
+ Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
}
void sub_8023AD8(void)
@@ -11714,9 +11714,9 @@ _08024AC4:\n\
str r0, [sp]\n\
adds r0, r4, 0\n\
movs r3, 0xC\n\
- bl InitWindow\n\
+ bl Text_InitWindow\n\
adds r0, r4, 0\n\
- bl sub_8002F44\n\
+ bl Text_PrintWindow8002F44\n\
ldr r1, _08024AEC @ =gSharedMem\n\
ldr r2, _08024AF0 @ =0x0001609c\n\
adds r1, r2\n\
@@ -11835,9 +11835,9 @@ _08024BC0:\n\
str r0, [sp]\n\
adds r0, r4, 0\n\
movs r3, 0xC\n\
- bl InitWindow\n\
+ bl Text_InitWindow\n\
adds r0, r4, 0\n\
- bl sub_8002F44\n\
+ bl Text_PrintWindow8002F44\n\
ldr r1, _08024BFC @ =gSharedMem\n\
ldr r0, _08024C00 @ =0x0001609c\n\
adds r1, r0\n\
@@ -17229,7 +17229,7 @@ static void atkF2_displaydexinfo(void)
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
REG_BG3CNT = 0x5a0b;
- gUnknown_030041B0 = 0x100;
+ gBattle_BG3_X = 0x100;
BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0);
gBattleCommunication[0]++;
}
@@ -17333,7 +17333,7 @@ _0802BC68: .4byte 0x00001025\n\
void sub_802BC6C(void)
{
- sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be?
+ MenuCursor_SetPos814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be?
}
void nullsub_6(void)
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 54181bc21..69306b725 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -1413,7 +1413,7 @@ void LinkOpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_8037C2C;
}
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index 2c78d4a82..c86c337d9 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -1358,7 +1358,7 @@ void LinkPartnerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_811DFA0;
}
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index ab7b6944b..622e3e9f9 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -1407,7 +1407,7 @@ void OpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_80331D0;
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index f992e3e51..a5f833b6c 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -67,9 +67,9 @@ extern u8 gUnknown_02024E68[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gAnimMoveTurn;
extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG0_X;
@@ -744,9 +744,9 @@ void sub_802C68C(void)
else
gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1;
sub_802E3B4(gUnknown_03004344, 27);
- FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
- sub_8002F44(&gUnknown_03004210);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
gBattleBankFunc[gActiveBank] = sub_802CA60;
}
}
@@ -853,9 +853,9 @@ void sub_802CA60(void)
gBattleBankFunc[gActiveBank] = sub_802C68C;
gMoveSelectionCursor[gActiveBank] = gUnknown_03004344;
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
- sub_8002F44(&gUnknown_03004210);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
sub_802E220();
sub_802E2D4();
}
@@ -866,9 +866,9 @@ void sub_802CA60(void)
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format);
gBattleBankFunc[gActiveBank] = sub_802C68C;
- FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
- sub_8002F44(&gUnknown_03004210);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
sub_802E220();
sub_802E2D4();
}
@@ -1557,13 +1557,13 @@ void sub_802E12C(s32 a, const u8 *b)
StringCopy(gDisplayedStringBattle, b);
StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]);
- InitWindow(
+ Text_InitWindow(
&gUnknown_03004210,
gDisplayedStringBattle,
0x300 + a * 20,
(a & 1) ? 11 : 1,
(a < 2) ? 0x37 : 0x39);
- sub_8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
void sub_802E1B0(void)
@@ -1572,7 +1572,7 @@ void sub_802E1B0(void)
s32 i;
gUnknown_03004348 = 0;
- FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A);
for (i = 0; i < 4; i++)
{
nullsub_7(i);
@@ -1601,8 +1601,8 @@ void sub_802E220(void)
str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2);
*str++ = CHAR_SLASH;
ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
- sub_8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
}
@@ -1613,8 +1613,8 @@ void sub_802E2D4(void)
{
if (gBattleBufferA[gActiveBank][2] == 1)
{
- FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37);
}
else
{
@@ -1623,10 +1623,10 @@ void sub_802E2D4(void)
str = StringCopy(str, BattleText_Format);
StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]);
- FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
}
- sub_8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
const u8 gUnknown_081FAE89[][2] =
@@ -1652,7 +1652,7 @@ const u8 gUnknown_081FAE91[][2] =
void sub_802E3B4(u8 a, int unused)
{
sub_814A958(0x48);
- sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]);
+ MenuCursor_SetPos814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]);
}
void nullsub_7(u8 a)
@@ -1662,7 +1662,7 @@ void nullsub_7(u8 a)
void sub_802E3E4(u8 a, int unused)
{
sub_814A958(0x2A);
- sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]);
+ MenuCursor_SetPos814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]);
}
void nullsub_8(u8 a)
@@ -1697,7 +1697,7 @@ void b_link_standby_message(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15);
}
}
@@ -2562,7 +2562,7 @@ void PlayerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
gBattleBankFunc[gActiveBank] = sub_802DF18;
}
@@ -2580,14 +2580,14 @@ void PlayerHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
+ Text_FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ Text_FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
gBattleBankFunc[gActiveBank] = sub_802C098;
- InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+ Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0);
for (r4 = 0; r4 < 4; r4++)
nullsub_8(r4);
@@ -2595,8 +2595,8 @@ void PlayerHandlecmd18(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
StrCpyDecodeToDisplayedStringBattle(BattleText_OtherMenu);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
void PlayerHandlecmd19()
@@ -2605,7 +2605,7 @@ void PlayerHandlecmd19()
void PlayerHandlecmd20(void)
{
- sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
+ MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
sub_80304A8();
gBattleBankFunc[gActiveBank] = sub_802C68C;
}
@@ -2619,8 +2619,8 @@ void sub_80304A8(void)
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
if (gBattleBufferA[gActiveBank][2] != 1)
{
- InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55);
- sub_8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
sub_802E220();
sub_802E2D4();
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 0a629ba4d..a4b610752 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -453,7 +453,7 @@ void SafariHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_812B694;
}
@@ -472,13 +472,13 @@ void SafariHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
gUnknown_03004210.paletteNum = 0;
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
- InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+ Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0);
for (i = 0; i < 4; i++)
nullsub_8(i);
@@ -486,8 +486,8 @@ void SafariHandlecmd18(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
void SafariHandlecmd19(void)
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index bd2b4a45b..6266d955c 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -1246,7 +1246,7 @@ void WallyHandlePrintString(void)
if (*ptr == 2)
DestroyMenuCursor();
BufferStringBattle(*ptr);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
gBattleBankFunc[gActiveBank] = sub_8137454;
}
@@ -1265,22 +1265,22 @@ void WallyHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
gUnknown_03004210.paletteNum = 0;
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
gBattleBankFunc[gActiveBank] = sub_81372BC;
- InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
+ Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
for (i = 0; i < 4; i++)
nullsub_8(i);
sub_802E3E4(0, 0);
StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu);
#ifdef ENGLISH
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
#else
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35);
+ Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35);
#endif
- sub_8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
}
void WallyHandlecmd19(void)
diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c
index 7bce00d82..68a97c536 100644
--- a/src/battle/battle_party_menu.c
+++ b/src/battle/battle_party_menu.c
@@ -583,13 +583,13 @@ static void Task_HandlePopupMenuInput(u8 taskId)
if (gMain.newAndRepeatedKeys & DPAD_UP)
{
PlaySE(SE_SELECT);
- MoveMenuCursor(-1);
+ Menu_MoveCursor(-1);
return;
}
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
PlaySE(SE_SELECT);
- MoveMenuCursor(1);
+ Menu_MoveCursor(1);
return;
}
if (gMain.newKeys & A_BUTTON)
@@ -598,7 +598,7 @@ static void Task_HandlePopupMenuInput(u8 taskId)
func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4],
sBattlePartyPopupMenus,
sBattlePartyMenuActions,
- GetMenuCursorPos());
+ Menu_GetCursorPos());
func(taskId);
return;
}
@@ -723,7 +723,7 @@ static void Task_BattlePartyMenuShift(u8 taskId)
static void Task_BattlePartyMenuCancel(u8 taskId)
{
- HandleDestroyMenuCursors();
+ Menu_DestroyCursor();
ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus);
gTasks[taskId].data[4] = gTasks[taskId].data[5];
PrintPartyMenuPromptText(0, 0);
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 97740e3da..4979760d7 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -202,7 +202,7 @@ static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4);
ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4);
- MenuPrint(gOtherText_WinRecord, 3, 3);
+ Menu_PrintText(gOtherText_WinRecord, 3, 3);
}
static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
@@ -217,39 +217,39 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
buffer[4] = 0x11;
buffer[5] = 1;
StringCopy(buffer + 6, gOtherText_SevenDashes);
- MenuPrint(buffer, 3, y);
+ Menu_PrintText(buffer, 3, y);
StringCopy(buffer + 6, gOtherText_FourDashes);
- MenuPrint(buffer, 11, y);
- MenuPrint(buffer, 17, y);
- MenuPrint(buffer, 23, y);
+ Menu_PrintText(buffer, 11, y);
+ Menu_PrintText(buffer, 17, y);
+ Menu_PrintText(buffer, 23, y);
}
else
{
StringFillWithTerminator(gStringVar1, 8);
StringCopyN(gStringVar1, record->name, 7);
- MenuPrint(gStringVar1, 3, y);
+ Menu_PrintText(gStringVar1, 3, y);
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
gStringVar1[2] = 6;
ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4);
- MenuPrint(gStringVar1, 11, y);
+ Menu_PrintText(gStringVar1, 11, y);
ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4);
- MenuPrint(gStringVar1, 17, y);
+ Menu_PrintText(gStringVar1, 17, y);
ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4);
- MenuPrint(gStringVar1, 23, y);
+ Menu_PrintText(gStringVar1, 23, y);
}
}
void ShowLinkBattleRecords(void) {
s32 i;
- MenuDrawTextWindow(1, 0, 28, 18);
+ Menu_DrawStdWindowFrame(1, 0, 28, 18);
sub_8072BD8(gOtherText_BattleResults, 0, 1, 240);
PrintLinkBattleWinsLossesDraws(gSaveBlock1.linkBattleRecords);
#if ENGLISH
- MenuPrint(gOtherText_WinLoseDraw, 12, 6);
+ Menu_PrintText(gOtherText_WinLoseDraw, 12, 6);
#elif GERMAN
- MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1);
+ Menu_PrintTextPixelCoords(gOtherText_WinLoseDraw, 88, 48, 1);
#endif
for (i = 0; i < 5; i++)
@@ -285,11 +285,11 @@ static bool32 sub_8110494(u8 level)
static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top)
{
- MenuPrint(str, left, top);
+ Menu_PrintText(str, left, top);
if (streak > 9999)
streak = 9999;
sub_8072C14(gStringVar1, streak, 24, 1);
- MenuPrint(gOtherText_WinStreak, left + 7, top);
+ Menu_PrintText(gOtherText_WinStreak, left + 7, top);
}
static void PrintRecordWinStreak(u8 level, u8 left, u8 top)
@@ -320,10 +320,10 @@ static void PrintLastWinStreak(u8 level, u8 left, u8 top)
void ShowBattleTowerRecords(void)
{
u16 i;
- MenuDrawTextWindow(3, 1, 27, 17);
+ Menu_DrawStdWindowFrame(3, 1, 27, 17);
sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8);
- MenuPrint(gOtherText_Lv50, 5, 6);
- MenuPrint(gOtherText_Lv100, 5, 12);
+ Menu_PrintText(gOtherText_Lv50, 5, 6);
+ Menu_PrintText(gOtherText_Lv100, 5, 12);
for (i = 5; i < 26; i++)
{
sub_8071F60(CHAR_HYPHEN, i, 10);
diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c
index 985f43945..f7cdc0694 100644
--- a/src/battle/battle_transition.c
+++ b/src/battle/battle_transition.c
@@ -13,12 +13,10 @@
#include "trainer.h"
#include "field_camera.h"
#include "ewram.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
void sub_807DE10(void);
-void dp12_8087EA4(void);
-
-extern u16 gUnknown_03005560[];
+void ScanlineEffect_Clear(void);
extern const struct OamData gFieldOamData_32x32;
@@ -672,9 +670,9 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task)
u16 savedIME;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
- sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl);
SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl);
@@ -695,7 +693,7 @@ static bool8 Phase2_Transition_Swirl_Func2(struct Task* task)
task->data[1] += 4;
task->data[2] += 8;
- sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
if (!gPaletteFade.active)
{
@@ -711,12 +709,12 @@ static void VBlankCB_Phase2_Transition_Swirl(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Swirl(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1HOFS = var;
REG_BG2HOFS = var;
REG_BG3HOFS = var;
@@ -732,10 +730,10 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
u16 savedIME;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
- memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140);
+ memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140);
SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle);
SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle);
@@ -764,7 +762,7 @@ static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task)
for (i = 0; i < 160; i++, r4 += 4224)
{
u16 var = r4 / 256;
- gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
}
if (!gPaletteFade.active)
@@ -778,12 +776,12 @@ static void VBlankCB_Phase2_Transition_Shuffle(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Shuffle(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1VOFS = var;
REG_BG2VOFS = var;
REG_BG3VOFS = var;
@@ -800,7 +798,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
u16 *dst1, *dst2;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
task->data[1] = 16;
task->data[2] = 0;
@@ -815,7 +813,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = 240;
+ gScanlineEffectRegBuffers[1][i] = 240;
}
SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball);
@@ -844,7 +842,7 @@ static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task)
dst1[i * 32 + j] = *BigPokeballMap | 0xF000;
}
}
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5], 160);
task->tState++;
return TRUE;
@@ -864,7 +862,7 @@ static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
TRANSITION_STRUCT.VBlank_DMA++;
return FALSE;
@@ -884,7 +882,7 @@ static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
TRANSITION_STRUCT.VBlank_DMA++;
return FALSE;
@@ -896,7 +894,7 @@ static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
if (task->data[5] <= 0)
{
@@ -921,7 +919,7 @@ static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task)
if (task->data[1] < 0)
task->data[1] = 0;
}
- sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]);
+ sub_811D764(gScanlineEffectRegBuffers[0], 120, 80, task->data[1]);
if (task->data[1] == 0)
{
DmaStop(0);
@@ -943,7 +941,7 @@ static void Transition_BigPokeball_Vblank(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
@@ -954,13 +952,13 @@ static void Transition_BigPokeball_Vblank(void)
static void VBlankCB0_Phase2_Transition_BigPokeball(void)
{
Transition_BigPokeball_Vblank();
- DmaSet(0, gUnknown_03005560, &REG_BG0HOFS, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BG0HOFS, 0xA2400001);
}
static void VBlankCB1_Phase2_Transition_BigPokeball(void)
{
Transition_BigPokeball_Vblank();
- DmaSet(0, gUnknown_03005560, &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_PokeballsTrail(u8 taskID)
@@ -1078,7 +1076,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 0;
TRANSITION_STRUCT.WINOUT = 63;
@@ -1087,7 +1085,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = 0xF3F4;
+ gScanlineEffectRegBuffers[1][i] = 0xF3F4;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade);
@@ -1104,7 +1102,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task)
sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
TRANSITION_STRUCT.data[4] += 16;
@@ -1132,7 +1130,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1;
if (TRANSITION_STRUCT.data[5] >= 80)
r1 = TRANSITION_STRUCT.data[2], r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
if (var != 0)
break;
var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
@@ -1148,7 +1146,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
{
while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ gScanlineEffectRegBuffers[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
}
}
@@ -1163,7 +1161,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task)
sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
TRANSITION_STRUCT.data[4] -= 16;
@@ -1188,10 +1186,10 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
while (1)
{
- r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
+ r1 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
if (TRANSITION_STRUCT.data[5] <= 80)
r2 = 120, r1 = TRANSITION_STRUCT.data[2];
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
r3 = 0;
if (var != 0)
break;
@@ -1208,7 +1206,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
{
while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
}
}
@@ -1228,7 +1226,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task)
r2 = 120, r3 = TRANSITION_STRUCT.data[2];
if (TRANSITION_STRUCT.data[2] >= 120)
r2 = 0, r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
@@ -1253,12 +1251,12 @@ static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- REG_WIN0H = gUnknown_03004DE0[1][0];
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_Ripple(u8 taskID)
@@ -1271,11 +1269,11 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = TRANSITION_STRUCT.field_16;
+ gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_16;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple);
@@ -1308,7 +1306,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task)
// todo: fix the asm
s16 var = r4 >> 8;
asm("");
- gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
asm("");
}
@@ -1329,12 +1327,12 @@ static void VBlankCB_Phase2_Transition_Ripple(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Ripple(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1VOFS = var;
REG_BG2VOFS = var;
REG_BG3VOFS = var;
@@ -1350,7 +1348,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 63;
TRANSITION_STRUCT.WINOUT = 0;
@@ -1359,7 +1357,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 242;
+ gScanlineEffectRegBuffers[1][i] = 242;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Wave);
@@ -1375,7 +1373,7 @@ static bool8 Phase2_Transition_Wave_Func2(struct Task* task)
bool8 nextFunc;
TRANSITION_STRUCT.VBlank_DMA = 0;
- toStore = gUnknown_03004DE0[0];
+ toStore = gScanlineEffectRegBuffers[0];
r5 = task->data[2];
task->data[2] += 16;
task->data[1] += 8;
@@ -1411,11 +1409,11 @@ static void VBlankCB_Phase2_Transition_Wave(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
#define tMugshotOpponentID data[13]
@@ -1462,7 +1460,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
Mugshots_CreateOpponentPlayerSprites(task);
task->data[1] = 0;
@@ -1474,7 +1472,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 0xF0F1;
+ gScanlineEffectRegBuffers[1][i] = 0xF0F1;
}
SetVBlankCallback(VBlankCB0_Phase2_Mugshots);
@@ -1519,7 +1517,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- toStore = gUnknown_03004DE0[0];
+ toStore = gScanlineEffectRegBuffers[0];
r5 = task->data[1];
task->data[1] += 0x10;
@@ -1565,7 +1563,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++)
+ for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++)
{
*toStore = 0xF0;
}
@@ -1608,8 +1606,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
SetVBlankCallback(NULL);
DmaStop(0);
- memset(gUnknown_03004DE0[0], 0, 0x140);
- memset(gUnknown_03004DE0[1], 0, 0x140);
+ memset(gScanlineEffectRegBuffers[0], 0, 0x140);
+ memset(gScanlineEffectRegBuffers[1], 0, 0x140);
REG_WIN0H = 0xF0;
REG_BLDY = 0;
task->tState++;
@@ -1642,15 +1640,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task)
{
s16 index1 = 0x50 - i;
s16 index2 = 0x50 + i;
- if (gUnknown_03004DE0[0][index1] <= 15)
+ if (gScanlineEffectRegBuffers[0][index1] <= 15)
{
r6 = TRUE;
- gUnknown_03004DE0[0][index1]++;
+ gScanlineEffectRegBuffers[0][index1]++;
}
- if (gUnknown_03004DE0[0][index2] <= 15)
+ if (gScanlineEffectRegBuffers[0][index2] <= 15)
{
r6 = TRUE;
- gUnknown_03004DE0[0][index2]++;
+ gScanlineEffectRegBuffers[0][index2]++;
}
}
}
@@ -1678,7 +1676,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
task->data[3]++;
- memset(gUnknown_03004DE0[0], task->data[3], 0x140);
+ memset(gScanlineEffectRegBuffers[0], task->data[3], 0x140);
if (task->data[3] > 15)
task->tState++;
@@ -1699,12 +1697,12 @@ static void VBlankCB0_Phase2_Mugshots(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_BG0VOFS = TRANSITION_STRUCT.field_1C;
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void VBlankCB1_Phase2_Mugshots(void)
@@ -1712,9 +1710,9 @@ static void VBlankCB1_Phase2_Mugshots(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
- DmaSet(0, gUnknown_03004DE0[1], &REG_BLDY, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BLDY, 0xA2400001);
}
static void HBlankCB_Phase2_Mugshots(void)
@@ -1846,7 +1844,7 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
task->data[2] = 256;
task->data[3] = 1;
@@ -1856,8 +1854,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14;
- gUnknown_03004DE0[1][160 + i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_14;
+ gScanlineEffectRegBuffers[1][160 + i] = 0xF0;
}
REG_IE |= INTR_FLAG_HBLANK;
@@ -1886,8 +1884,8 @@ static bool8 Phase2_Transition_Slice_Func2(struct Task* task)
for (i = 0; i < 160; i++)
{
- u16* storeLoc1 = &gUnknown_03004DE0[0][i];
- u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160];
+ u16* storeLoc1 = &gScanlineEffectRegBuffers[0][i];
+ u16* storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160];
if (1 & i)
{
*storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1];
@@ -1923,13 +1921,13 @@ static void VBlankCB_Phase2_Transition_Slice(void)
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
- DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_WIN0H, 0xA2400001);
}
static void HBlankCB_Phase2_Transition_Slice(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1HOFS = var;
REG_BG2HOFS = var;
REG_BG3HOFS = var;
@@ -1945,7 +1943,7 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.BLDCNT = 0xBF;
TRANSITION_STRUCT.BLDY = 0;
@@ -1955,8 +1953,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 0;
- gUnknown_03004DE0[1][i + 160] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0;
+ gScanlineEffectRegBuffers[1][i + 160] = 0xF0;
}
REG_IE |= INTR_FLAG_HBLANK;
@@ -2038,8 +2036,8 @@ static void VBlankCB0_Phase2_Transition_WhiteFade(void)
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.field_6;
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
- DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_WIN0H, 0xA2400001);
}
static void VBlankCB1_Phase2_Transition_WhiteFade(void)
@@ -2055,7 +2053,7 @@ static void VBlankCB1_Phase2_Transition_WhiteFade(void)
static void HBlankCB_Phase2_Transition_WhiteFade(void)
{
- REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT];
}
static void sub_811CFD0(struct Sprite* sprite)
@@ -2069,8 +2067,8 @@ static void sub_811CFD0(struct Sprite* sprite)
else
{
u16 i;
- u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y];
- u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160];
+ u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y];
+ u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160];
for (i = 0; i < 20; i++)
{
ptr1[i] = sprite->data[0] >> 8;
@@ -2160,7 +2158,7 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 0x3F;
TRANSITION_STRUCT.WINOUT = 0;
@@ -2168,10 +2166,10 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
}
- CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0);
+ CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0);
SetVBlankCallback(VBlankCB_Phase2_Transition_Shards);
task->tState++;
@@ -2200,8 +2198,8 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
for (i = 0, nextFunc = FALSE; i < 16; i++)
{
- s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8;
- s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF;
+ s16 r3 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] >> 8;
+ s16 r4 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF;
if (task->data[2] == 0)
{
if (r3 < TRANSITION_STRUCT.data[2])
@@ -2216,7 +2214,7 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
if (r4 <= r3)
r4 = r3;
}
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
if (nextFunc)
{
task->tState++;
@@ -2263,12 +2261,12 @@ static void VBlankCB_Phase2_Transition_Shards(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- REG_WIN0H = gUnknown_03004DE0[1][0];
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index 6a6d7a137..a78cb20df 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -3,7 +3,7 @@
#include "battle_anim.h"
#include "palette.h"
#include "main.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "text.h"
#include "rom_8077ABC.h"
#include "data2.h"
@@ -15,9 +15,9 @@ extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_BG0_Y;
extern u8 gReservedSpritePaletteCount;
extern u8 gActionSelectionCursor[4];
@@ -77,18 +77,18 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
switch (gReshowState)
{
case 0:
- dp12_8087EA4();
- SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ScanlineEffect_Clear();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
- InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
break;
case 1:
{