summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/battle_intro.c499
-rw-r--r--src/battle/battle_controller_linkopponent.c4
-rw-r--r--src/battle/battle_controller_linkpartner.c4
-rw-r--r--src/battle/battle_controller_opponent.c4
-rw-r--r--src/battle/battle_controller_player.c4
-rw-r--r--src/battle/battle_controller_safari.c4
-rw-r--r--src/battle/battle_controller_wally.c4
-rw-r--r--src/engine/cable_club.c6
-rw-r--r--src/engine/save_menu_util.c6
-rw-r--r--src/engine/trainer_card.c555
-rw-r--r--src/field/item.c2
-rw-r--r--src/field/start_menu.c4
-rw-r--r--src/scene/evolution_scene.c3
13 files changed, 801 insertions, 298 deletions
diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c
new file mode 100644
index 000000000..01f823fa7
--- /dev/null
+++ b/src/battle/anim/battle_intro.c
@@ -0,0 +1,499 @@
+#include "global.h"
+#include "constants/battle_constants.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_anim_80CA710.h"
+#include "data2.h"
+#include "ewram.h"
+#include "main.h"
+#include "rom_8077ABC.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "trig.h"
+
+extern u16 gBattleTypeFlags;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_WIN0V;
+extern u16 gUnknown_02024DE8;
+extern u8 gBattleMonForms[];
+
+extern void sub_800FE20(struct Sprite *);
+
+static void BattleIntroTask_ScrollScenery(u8);
+static void BattleIntroTask_FadeScenery(u8);
+static void BattleIntroTask_ScrollAndFadeScenery(u8);
+static void BattleIntroTask_80E4C34(u8);
+
+static const TaskFunc sBattleIntroTaskFuncs[] =
+{
+ BattleIntroTask_ScrollScenery,
+ BattleIntroTask_ScrollScenery,
+ BattleIntroTask_FadeScenery,
+ BattleIntroTask_FadeScenery,
+ BattleIntroTask_FadeScenery,
+ BattleIntroTask_ScrollScenery,
+ BattleIntroTask_ScrollScenery,
+ BattleIntroTask_ScrollScenery,
+ BattleIntroTask_ScrollAndFadeScenery,
+ BattleIntroTask_ScrollAndFadeScenery,
+};
+
+#define tState data[0]
+#define tBgXOffset data[2]
+#define tFramesUntilBg1Slide data[3]
+
+void StartBattleIntroAnim(u8 a)
+{
+ u8 taskId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ taskId = CreateTask(BattleIntroTask_80E4C34, 0);
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY)
+ {
+ a = 3;
+ taskId = CreateTask(BattleIntroTask_FadeScenery, 0);
+ }
+ else
+ {
+ taskId = CreateTask(sBattleIntroTaskFuncs[a], 0);
+ }
+
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].tBgXOffset = 0;
+ gTasks[taskId].tFramesUntilBg1Slide = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+}
+
+static void EndBattleIntroTask(u8 taskId)
+{
+ DestroyTask(taskId);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+}
+
+static void BattleIntroTask_ScrollScenery(u8 taskId)
+{
+ s32 i;
+
+ gBattle_BG1_X += 6;
+
+ switch (gTasks[taskId].tState)
+ {
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].tBgXOffset = 16;
+ gTasks[taskId].tState++;
+ }
+ else
+ {
+ gTasks[taskId].tBgXOffset = 1;
+ gTasks[taskId].tState++;
+ }
+ break;
+ case 1:
+ gTasks[taskId].tBgXOffset--;
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gTasks[taskId].tState++;
+ REG_WININ = 0x3F;
+ }
+ break;
+ case 2:
+ // Open up the window
+ gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y
+ gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].tState++;
+ gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
+ gTasks[taskId].tFramesUntilBg1Slide = 32;
+ gUnknown_02024DE8 &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].tFramesUntilBg1Slide != 0)
+ {
+ gTasks[taskId].tFramesUntilBg1Slide--;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ if (gBattle_BG1_Y != 0xFFB0)
+ gBattle_BG1_Y -= 2;
+ }
+ else
+ {
+ if (gBattle_BG1_Y != 0xFFC8)
+ gBattle_BG1_Y -= 1;
+ }
+ }
+
+ if ((gBattle_WIN0V & 0xFF00) != 0)
+ gBattle_WIN0V -= 1020;
+
+ if (gTasks[taskId].tBgXOffset != 0)
+ gTasks[taskId].tBgXOffset -= 2;
+
+ // Slide in the top half of the BG from the left
+ for (i = 0; i < DISPLAY_HEIGHT / 2; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset;
+ // Slide in the bottom half of the BG from the right
+ for (; i < DISPLAY_HEIGHT; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset;
+
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].tState++;
+ CpuFill32(0, (void *)(VRAM + 0xE000), 0x800);
+ REG_BG1CNT = 0x9C00;
+ REG_BG2CNT = 0x5E00;
+ }
+ break;
+ case 4:
+ EndBattleIntroTask(taskId);
+ break;
+ }
+}
+
+static void BattleIntroTask_FadeScenery(u8 taskId)
+{
+ s32 i;
+
+ switch (gTasks[taskId].data[1])
+ {
+ case 2:
+ case 4:
+ gBattle_BG1_X += 8;
+ break;
+ case 3:
+ gBattle_BG1_X += 6;
+ break;
+ }
+
+ if (gTasks[taskId].data[1] == 4)
+ {
+ gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8;
+ if (gTasks[taskId].data[6] < 0xB4)
+ gTasks[taskId].data[6] += 4;
+ else
+ gTasks[taskId].data[6] += 6;
+ if (gTasks[taskId].data[6] == 0x168)
+ gTasks[taskId].data[6] = 0;
+ }
+
+ switch (gTasks[taskId].tState)
+ {
+ case 0:
+ gTasks[taskId].data[4] = 16;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].tBgXOffset = 16;
+ gTasks[taskId].tState++;
+ }
+ else
+ {
+ gTasks[taskId].tBgXOffset = 1;
+ gTasks[taskId].tState++;
+ }
+ break;
+ case 1:
+ gTasks[taskId].tBgXOffset--;
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gTasks[taskId].tState++;
+ REG_WININ = 0x3F;
+ }
+ break;
+ case 2:
+ // Open up window
+ gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y
+ gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].tState++;
+ gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
+ gTasks[taskId].tFramesUntilBg1Slide = 32;
+ gTasks[taskId].data[5] = 1;
+ gUnknown_02024DE8 &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].tFramesUntilBg1Slide != 0)
+ {
+ gTasks[taskId].tFramesUntilBg1Slide--;
+ if (gTasks[taskId].tFramesUntilBg1Slide == 0)
+ {
+ REG_BLDCNT = 0x1842;
+ REG_BLDALPHA = 0xF;
+ REG_BLDY = 0;
+ }
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 255;
+ gTasks[taskId].data[5] = 4;
+ }
+ }
+
+ if ((gBattle_WIN0V & 0xFF00) != 0)
+ gBattle_WIN0V -= 1020;
+
+ if (gTasks[taskId].tBgXOffset != 0)
+ gTasks[taskId].tBgXOffset -= 2;
+
+ // Slide in the top half of the BG from the left
+ for (i = 0; i < DISPLAY_HEIGHT / 2; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset;
+ // Slide in the bottom half of the BG from the right
+ for (; i < DISPLAY_HEIGHT; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset;
+
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].tState++;
+ CpuFill32(0, (void *)(VRAM + 0xE000), 0x800);
+ REG_BG1CNT = 0x9C00;
+ REG_BG2CNT = 0x5E00;
+ }
+ break;
+ case 4:
+ EndBattleIntroTask(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].tState != 4)
+ REG_BLDALPHA = gTasks[taskId].data[4];
+}
+
+static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId)
+{
+ s32 i;
+
+ gBattle_BG1_X += 8;
+
+ switch (gTasks[taskId].tState)
+ {
+ case 0:
+ REG_BLDCNT = 0x1842;
+ REG_BLDALPHA = 0x0808;
+ REG_BLDY = 0;
+ gTasks[taskId].data[4] = 0x0808;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].tBgXOffset = 16;
+ gTasks[taskId].tState++;
+ }
+ else
+ {
+ gTasks[taskId].tBgXOffset = 1;
+ gTasks[taskId].tState++;
+ }
+ break;
+ case 1:
+ gTasks[taskId].tBgXOffset--;
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gTasks[taskId].tState++;
+ REG_WININ = 0x3F;
+ }
+ break;
+ case 2:
+ // Open up window
+ gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y
+ gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].tState++;
+ gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
+ gTasks[taskId].tFramesUntilBg1Slide = 32;
+ gTasks[taskId].data[5] = 1;
+ gUnknown_02024DE8 &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].tFramesUntilBg1Slide != 0)
+ {
+ gTasks[taskId].tFramesUntilBg1Slide--;
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 255;
+ gTasks[taskId].data[5] = 6;
+ }
+ }
+
+ if ((gBattle_WIN0V & 0xFF00) != 0)
+ gBattle_WIN0V -= 1020;
+
+ if (gTasks[taskId].tBgXOffset != 0)
+ gTasks[taskId].tBgXOffset -= 2;
+
+ // Slide in the top half of the BG from the left
+ for (i = 0; i < DISPLAY_HEIGHT / 2; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset;
+ // Slide in the bottom half of the BG from the right
+ for (; i < DISPLAY_HEIGHT; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset;
+
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].tState++;
+ CpuFill32(0, (void *)(VRAM + 0xE000), 0x800);
+ REG_BG1CNT = 0x9C00;
+ REG_BG2CNT = 0x5E00;
+ }
+ break;
+ case 4:
+ EndBattleIntroTask(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].tState != 4)
+ REG_BLDALPHA = gTasks[taskId].data[4];
+}
+
+// Seems to only be used for link battles.
+static void BattleIntroTask_80E4C34(u8 taskId)
+{
+ s32 i;
+
+ if (gTasks[taskId].tState > 1 && gTasks[taskId].data[4] == 0)
+ {
+ if ((gBattle_BG1_X & 0x8000) || gBattle_BG1_X < 80) // hmm...
+ {
+ gBattle_BG1_X += 3;
+ gBattle_BG2_X -= 3;
+ }
+ else
+ {
+ CpuFill32(0, (void *)(VRAM + 0xE000), 0x800);
+ CpuFill32(0, (void *)(VRAM + 0xF000), 0x800);
+ gTasks[taskId].data[4] = 1;
+ }
+ }
+
+ switch (gTasks[taskId].tState)
+ {
+ case 0:
+ gTasks[taskId].tBgXOffset = 16;
+ gTasks[taskId].tState++;
+ break;
+ case 1:
+ gTasks[taskId].tBgXOffset--;
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gTasks[taskId].tState++;
+ gSprites[ewram1608A].oam.objMode = 2;
+ gSprites[ewram1608A].callback = sub_800FE20;
+ gSprites[ewram1608B].oam.objMode = 2;
+ gSprites[ewram1608B].callback = sub_800FE20;
+ REG_WININ = 0x3F;
+ REG_WINOUT = 0x3F06;
+ }
+ break;
+ case 2:
+ // Open up window
+ gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y
+ gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].tState++;
+ gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
+ gTasks[taskId].tFramesUntilBg1Slide = 32;
+ gUnknown_02024DE8 &= ~1;
+ }
+ break;
+ case 3:
+ if ((gBattle_WIN0V & 0xFF00) != 0)
+ gBattle_WIN0V -= 1020;
+
+ if (gTasks[taskId].tBgXOffset != 0)
+ gTasks[taskId].tBgXOffset -= 2;
+
+ // Slide in the top half of the BG from the left
+ for (i = 0; i < DISPLAY_HEIGHT / 2; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset;
+ // Slide in the bottom half of the BG from the right
+ for (; i < DISPLAY_HEIGHT; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset;
+
+ if (gTasks[taskId].tBgXOffset == 0)
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].tState++;
+ REG_BG1CNT = 0x9C00;
+ REG_BG2CNT = 0x5E00;
+ }
+ break;
+ case 4:
+ EndBattleIntroTask(taskId);
+ break;
+ }
+}
+
+void unref_sub_80E4EC8(u8 a, u8 b, u8 c, u8 d)
+{
+ sub_80E4EF8(a, b, c, d, 0x4000, 30, 1);
+}
+
+// draws some 8x8 tilemap
+void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g)
+{
+ u32 tileNum;
+ s32 x;
+ s32 y;
+ u8 bank = GetBankByIdentity(c);
+
+ DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800);
+ tileNum = e / 32 - g * 512;
+ for (y = top; y < top + 8; y++)
+ {
+ for (x = left; x < left + 8; x++)
+ {
+ *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12);
+ tileNum++;
+ }
+ }
+}
+
+void unref_sub_80E4FDC(u8 left, u8 top, u8 c, u8 form, u8 paletteNum, u16 f, u8 bgMap, u8 h)
+{
+ u32 tileNum;
+ s32 x;
+ s32 y;
+
+ DmaCopy16(3, gUnknown_081FAF4C[c] + form * 0x800, (void *)(VRAM + f), 0x800);
+ tileNum = f / 32 - h * 512;
+ for (y = top; y < top + 8; y++)
+ {
+ for (x = left; x < left + 8; x++)
+ {
+ *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12);
+ tileNum++;
+ }
+ }
+}
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 69306b725..40f50d7ff 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -93,7 +93,7 @@ extern void move_anim_start_t2_for_situation();
extern void dp01t_0F_4_move_anim(void);
extern void sub_8047858();
extern u8 GetBankSide(u8);
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void sub_803A3A8(struct Sprite *);
extern void sub_8044CA0(u8);
extern void nullsub_47(void);
@@ -1620,7 +1620,7 @@ void LinkOpponentHandleFaintingCry(void)
void LinkOpponentHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
LinkOpponentBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index c86c337d9..e39d98997 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -62,7 +62,7 @@ extern u8 move_anim_start_t3();
extern u8 IsBankSpritePresent();
extern void sub_8044CA0(u8);
extern void sub_8030E38(struct Sprite *);
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void sub_8047858();
extern void move_anim_start_t2_for_situation();
extern void load_gfxc_health_bar();
@@ -1565,7 +1565,7 @@ void LinkPartnerHandleFaintingCry(void)
void LinkPartnerHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
LinkPartnerBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 622e3e9f9..5947053b6 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -108,7 +108,7 @@ extern void move_anim_start_t2_for_situation();
extern void bx_blink_t7(void);
extern void sub_8047858();
extern u8 GetBankSide(u8);
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void sub_8044CA0(u8);
extern void nullsub_45(void);
extern void sub_8031B74();
@@ -1892,7 +1892,7 @@ void OpponentHandleFaintingCry(void)
void OpponentHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
OpponentBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index a5f833b6c..2bdf448db 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -98,7 +98,7 @@ extern void move_anim_start_t2_for_situation();
extern void bx_blink_t1(void);
extern void sub_8047858();
extern u8 GetBankSide(u8);
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
extern void sub_8078B34(struct Sprite *);
extern void StoreSpriteCallbackInData();
@@ -2875,7 +2875,7 @@ void PlayerHandleFaintingCry(void)
void PlayerHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
PlayerBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index a4b610752..0d193d68f 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -47,7 +47,7 @@ extern u8 sub_8079E90();
extern void sub_80313A0(struct Sprite *);
extern void sub_810BADC(void);
extern void sub_8045A5C();
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void sub_804777C();
extern void sub_8043DFC();
extern bool8 move_anim_start_t3();
@@ -641,7 +641,7 @@ void SafariHandleFaintingCry(void)
void SafariHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
SafariBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 6266d955c..4c0adab5e 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -85,7 +85,7 @@ extern void BufferStringBattle();
extern u8 GetBankSide(u8);
extern void sub_80304A8(void);
extern void sub_8047858();
-extern void sub_80E43C0();
+extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
extern void sub_8078B34(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
@@ -1470,7 +1470,7 @@ void WallyHandleFaintingCry(void)
void WallyHandleIntroSlide(void)
{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
WallyBufferExecCompleted();
}
diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c
index b12ee38ce..44d832e2b 100644
--- a/src/engine/cable_club.c
+++ b/src/engine/cable_club.c
@@ -374,7 +374,7 @@ void sub_80831F8(u8 taskId)
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gUnknown_03004860 = GetMultiplayerId();
sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *)gBlockSendBuffer);
+ TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer);
gTasks[taskId].func = sub_8083314;
}
}
@@ -395,7 +395,7 @@ static void sub_8083288(u8 taskId)
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gUnknown_03004860 = GetMultiplayerId();
sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *)gBlockSendBuffer);
+ TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer);
gTasks[taskId].func = sub_8083314;
sub_8007E9C(2);
}
@@ -874,7 +874,7 @@ void unref_sub_8083BB0(void)
void sub_8083BDC(void)
{
- sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music);
+ TrainerCard_ShowLinkCard(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music);
}
bool32 sub_8083BF4(u8 linkPlayerIndex)
diff --git a/src/engine/save_menu_util.c b/src/engine/save_menu_util.c
index 2c5eb6afe..ccf4d9f6f 100644
--- a/src/engine/save_menu_util.c
+++ b/src/engine/save_menu_util.c
@@ -125,9 +125,9 @@ u16 GetPokedexSeenCount()
return pokedexSeenCount;
}
-void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk)
+void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 colon)
{
- s16 colon = unk;
+ s16 _colon = colon;
playtime = ConvertIntToDecimalString(playtime, hours);
// playtime[0] is hours.
@@ -136,7 +136,7 @@ void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk)
playtime[0] = 0;
- if (colon)
+ if (_colon)
playtime[1] = 0xF0; // set middle character to ":"
else
playtime[1] = 0;
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index ab43ac716..9d09575c8 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -26,25 +26,25 @@ typedef void (*Callback)(void);
struct Struct2000000
{
- /*0x00*/ u8 var_0;
- /*0x01*/ bool8 var_1;
- /*0x02*/ u8 var_2;
- /*0x03*/ bool8 var_3;
+ /*0x00*/ u8 current_state;
+ /*0x01*/ bool8 isShowingLinkCard;
+ /*0x02*/ u8 starCount;
+ /*0x03*/ bool8 backSideShown;
/*0x04*/ u8 var_4;
- /*0x05*/ u8 var_5;
- /*0x06*/ u8 var_6;
- /*0x07*/ bool8 var_7;
- /*0x08*/ bool8 var_8;
- /*0x09*/ bool8 var_9;
- /*0x0A*/ bool8 var_a;
- /*0x0B*/ bool8 var_b;
- /*0x0C*/ bool8 var_c;
- /*0x0D*/ bool8 var_d;
- /*0x0E*/ u8 var_e[8];
+ /*0x05*/ bool8 showColon;
+ /*0x06*/ u8 frameCounter; /* Used to flash colon */
+ /*0x07*/ bool8 showPokedexCount;
+ /*0x08*/ bool8 showHallOfFame;
+ /*0x09*/ bool8 showLinkBattleStatus;
+ /*0x0A*/ bool8 showBattleTowerStatus;
+ /*0x0B*/ bool8 showContestRecord;
+ /*0x0C*/ bool8 showMixingRecord;
+ /*0x0D*/ bool8 showTradingRecord;
+ /*0x0E*/ bool8 ownedBadges[8];
/*0x16*/ u8 filler_16[10];
- /*0x20*/ u8 var_20[4][0x10];
+ /*0x20*/ u8 easyChatPhrase[4][0x10];
/*0x60*/ Callback *var_60;
- /*0x64*/ struct TrainerCard var_64;
+ /*0x64*/ struct TrainerCard displayedCard;
/*0x9C*/ u8 language; // 0x9C
};
@@ -57,44 +57,44 @@ extern const u16 gUnknown_083B5F0C[];
extern const u16 gBadgesPalette[];
extern const u16 gUnknown_083B5F4C[];
extern const u16 gUnknown_083B5F6C[];
-extern const u16 gUnknown_083B5F8C[][4];
+extern const u16 gTrainerCardBadgesMap[][4];
const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
// XXX: what is this?
u8 *const ewram_ = gSharedMem;
-bool8 sub_8093864(struct Task *);
-bool8 sub_80938A8(struct Task *);
-bool8 sub_80938CC(struct Task *);
-bool8 sub_8093918(struct Task *);
-bool8 sub_8093938(struct Task *);
-bool8 sub_8093954(struct Task *);
-bool8 sub_8093980(struct Task *);
-
-bool8 (*const gUnknown_083B5EBC[])(struct Task *) =
-{
- sub_8093864,
- sub_80938A8,
- sub_80938CC,
- sub_8093918,
- sub_8093938,
- sub_8093954,
- sub_8093980,
+bool8 TrainerCard_Init(struct Task *);
+bool8 TrainerCard_WaitForFadeInToFinish(struct Task *);
+bool8 TrainerCard_WaitForKeys(struct Task *);
+bool8 TrainerCard_StartFlipAntimation(struct Task *);
+bool8 TrainerCard_WaitForFlipToFinish(struct Task *);
+bool8 TrainerCard_FadeOut(struct Task *);
+bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *);
+
+bool8 (*const TrainerCard_StateMachine[])(struct Task *) =
+{
+ TrainerCard_Init,
+ TrainerCard_WaitForFadeInToFinish,
+ TrainerCard_WaitForKeys,
+ TrainerCard_StartFlipAntimation,
+ TrainerCard_WaitForFlipToFinish,
+ TrainerCard_FadeOut,
+ TrainerCard_WaitForFadeOutToFinishAndQuit,
};
-bool8 sub_8093AA0(struct Task *);
-bool8 sub_8093AF0(struct Task *);
-bool8 sub_8093C0C(struct Task *);
-bool8 sub_8093C38(struct Task *);
-bool8 sub_8093D50(struct Task *);
+bool8 TrainerCard_InitFlipAnimation(struct Task *);
+bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *);
+bool8 TrainerCard_SwitchToNewSide(struct Task *);
+bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *);
+bool8 TrainerCard_FinishFlipAnimation(struct Task *);
-bool8 (*const gUnknown_083B5ED8[])(struct Task *) =
+bool8 (*const TrainerCard_FlipAnimationStateMachine[])(struct Task *) =
{
- sub_8093AA0,
- sub_8093AF0,
- sub_8093C0C,
- sub_8093C38,
- sub_8093D50,
+ TrainerCard_InitFlipAnimation,
+ TrainerCard_ScaleDownFlipAnimation,
+ TrainerCard_SwitchToNewSide,
+ TrainerCard_ScaleUpFlipAnimation,
+ TrainerCard_FinishFlipAnimation,
};
// FIXME: Other signature than on save_menu_util.h
@@ -103,64 +103,64 @@ u16 GetPokedexSeenCount(void);
enum
{
- TD_0,
- TD_1,
+ TD_SHOWING_LINK_CARD,
+ TD_CARD_INDEX,
TD_CALLBACK,
};
static void sub_8093174(void);
static void sub_809323C(void);
static void sub_8093254(void);
-static void sub_80932AC(Callback callBack);
-static void sub_80932E4(u8 arg1, Callback callBack);
-void sub_8093324(void);
+static void TrainerCard_InitScreenForPlayer(Callback callBack);
+static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack);
+void TrainerCard_FillTrainerCardStruct(void);
static void nullsub_60(u8);
static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal);
-static u8 sub_80934F4(struct TrainerCard *);
+static u8 TrainerCard_GetStarCount(struct TrainerCard *);
static void sub_8093534(void);
static void sub_8093550(void);
static void sub_8093598(void);
static void sub_80935EC(void);
static void sub_8093610(void);
static void sub_8093688(void);
-void sub_80936D4(void);
+static void TrainerCard_FillFlags(void);
static void sub_80937A4(void);
static void sub_80937BC(void);
static void sub_80937D8(void);
static void sub_80937F0(void);
static void nullsub_15(void);
static void sub_8093800(void);
-static void sub_809380C();
-static void sub_809382C(u8 taskId);
-static void sub_80939A4(void);
-static void sub_80939C0(void);
-static void sub_80939DC(u8 taskId);
-static void sub_8093A28(void);
-static u8 sub_8093A48(void);
-static void sub_8093A68(u8 taskId);
-void sub_8093D7C(void);
-static void sub_8093DAC(void);
-static void sub_8093DC8(void);
-static void sub_8093DEC(void);
-static void sub_8093E04(void);
-static void sub_8093E28(void);
-void sub_8093EA0(void);
-static void sub_8093EF8(void);
+static void TrainerCard_CreateStateMachine(void);
+static void TrainerCard_RunStateMachine(u8 taskId);
+static void TrainerCard_CreatePrintPlayTimeTask(void);
+static void TrainerCard_DestoryPlayTimeTask(void);
+static void TrainerCard_Front_PrintPlayTime(u8 taskId);
+static void TrainerCard_CreateFlipAnimationTask(void);
+static u8 TrainerCard_HasFlipAnimationFinished(void);
+static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId);
+static void TrainerCard_FlipAnimationHBlankCallback(void);
+static void TrainerCard_DrawCard(void);
+static void TrainerCard_DrawCardFront(void);
+static void TrainerCard_DrawCardBack(void);
+static void TrainerCard_ResetOffsetRegisters(void);
+static void TrainerCard_CopyGraphics(void);
+static void TrainerCard_LoadPalettes(void);
+static void TrainerCard_LoadTrainerGraphics(void);
static void sub_8093F14(void);
static void sub_8093F48(void);
static void sub_8093F64(void);
-static void sub_8093F80(void);
-static void sub_8093FD0(void);
-static void sub_8094038(void);
-static void sub_80940E4(void);
-static void sub_8094110(void);
-static void sub_8094140(void);
-static void sub_8094188(void);
+static void TrainerCard_LoadTrainerTilemap(void);
+static void TrainerCard_DrawStars(void);
+static void TrainerCard_DisplayBadges(void);
+static void TrainerCard_ClearTrainerGraphics(void);
+static void TrainerCard_ClearPokedexLabel(void);
+static void TrainerCard_Front_PrintTexts(void);
+static void TrainerCard_Back_PrintTexts(void);
static void TrainerCard_Front_PrintTrainerID(void);
static void TrainerCard_Front_PrintMoney(void);
static void TrainerCard_Front_PrintPokedexCount(void);
-static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon);
-static void sub_809429C(void);
+static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon);
+static void TrainerCard_PrintEasyChatPhrase(void);
static void TrainerCard_Back_PrintName(void);
static void TrainerCard_Back_PrintHallOfFameTime_Label(void);
static void TrainerCard_Back_PrintHallOfFameTime(void);
@@ -176,16 +176,16 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void);
static void TrainerCard_Back_PrintPokemonTrades(void);
void unref_sub_8094588(u16 left, u16 top);
-void sub_8093110(Callback arg1)
+void TrainerCard_ShowPlayerCard(Callback arg1)
{
- sub_80932AC(arg1);
+ TrainerCard_InitScreenForPlayer(arg1);
SetMainCallback2(sub_8093174);
ewram0_2.language = GAME_LANGUAGE;
}
-void sub_8093130(u8 playerIndex, Callback arg2)
+void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
{
- sub_80932E4(playerIndex, arg2);
+ TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
@@ -249,49 +249,49 @@ static void sub_8093254(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- ewram0_2.var_6++;
- if (ewram0_2.var_6 >= 60)
+ ewram0_2.frameCounter++;
+ if (ewram0_2.frameCounter >= 60)
{
- ewram0_2.var_6 = 0;
- ewram0_2.var_5 ^= 1;
+ ewram0_2.frameCounter = 0;
+ ewram0_2.showColon ^= 1;
}
if (ewram0_2.var_4)
DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140);
}
-static void sub_80932AC(Callback callBack)
+static void TrainerCard_InitScreenForPlayer(Callback callBack)
{
u8 taskId = CreateTask(nullsub_60, 0xFF);
struct Task *task = &gTasks[taskId];
- task->data[TD_0] = FALSE;
+ task->data[TD_SHOWING_LINK_CARD] = FALSE;
StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack);
}
-static void sub_80932E4(u8 arg1, Callback callBack)
+static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack)
{
u8 taskId = CreateTask(nullsub_60, 0xFF);
struct Task *task = &gTasks[taskId];
- task->data[TD_0] = TRUE;
- task->data[TD_1] = arg1;
+ task->data[TD_SHOWING_LINK_CARD] = TRUE;
+ task->data[TD_CARD_INDEX] = arg1;
StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack);
}
-void sub_8093324(void)
+void TrainerCard_FillTrainerCardStruct(void)
{
u8 taskId = FindTaskIdByFunc(nullsub_60);
struct Task *task = &gTasks[taskId];
- ewram0_2.var_1 = task->data[TD_0];
+ ewram0_2.isShowingLinkCard = task->data[TD_SHOWING_LINK_CARD];
LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&ewram0_2.var_60);
- if (ewram0_2.var_1)
+ if (ewram0_2.isShowingLinkCard)
{
- ewram0_2.var_64 = gTrainerCards[task->data[TD_1]];
+ ewram0_2.displayedCard = gTrainerCards[task->data[TD_CARD_INDEX]];
}
else
{
- sub_8093390(&ewram0_2.var_64);
+ TrainerCard_GenerateCardForPlayer(&ewram0_2.displayedCard);
}
}
@@ -299,7 +299,7 @@ static void nullsub_60(u8 taskid)
{
}
-void sub_8093390(struct TrainerCard *trainerCard)
+void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard)
{
u32 playTime;
bool32 enteredHallOfFame;
@@ -370,7 +370,7 @@ void sub_8093390(struct TrainerCard *trainerCard)
trainerCard->playerName[i] = gSaveBlock2.playerName[i];
}
- trainerCard->stars = sub_80934F4(trainerCard);
+ trainerCard->stars = TrainerCard_GetStarCount(trainerCard);
}
u8 sub_80934C4(u8 id)
@@ -390,7 +390,7 @@ static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal)
return value;
}
-static u8 sub_80934F4(struct TrainerCard *trainerCard)
+static u8 TrainerCard_GetStarCount(struct TrainerCard *trainerCard)
{
u8 value = 0;
@@ -489,53 +489,53 @@ static void sub_8093688(void)
{
u8 i;
- sub_8093324();
- ewram0_2.var_0 = 0;
- ewram0_2.var_3 = 0;
+ TrainerCard_FillTrainerCardStruct();
+ ewram0_2.current_state = 0;
+ ewram0_2.backSideShown = FALSE;
ewram0_2.var_4 = FALSE;
- ewram0_2.var_2 = ewram0_2.var_64.stars;
- ewram0_2.var_5 = 0;
- ewram0_2.var_6 = 0;
+ ewram0_2.starCount = ewram0_2.displayedCard.stars;
+ ewram0_2.showColon = 0;
+ ewram0_2.frameCounter = 0;
for (i = 0; i < 4; i++)
- EasyChat_GetWordText(ewram0_2.var_20[i], ewram0_2.var_64.var_28[i]);
- sub_80936D4();
+ EasyChat_GetWordText(ewram0_2.easyChatPhrase[i], ewram0_2.displayedCard.var_28[i]);
+ TrainerCard_FillFlags();
}
-void sub_80936D4(void)
+static void TrainerCard_FillFlags(void)
{
- ewram0_2.var_7 = 0;
- ewram0_2.var_8 = 0;
- ewram0_2.var_9 = 0;
- ewram0_2.var_a = 0;
- ewram0_2.var_b = 0;
- ewram0_2.var_c = 0;
- ewram0_2.var_d = 0;
- memset(ewram0_2.var_e, 0, sizeof(ewram0_2.var_e));
+ ewram0_2.showPokedexCount = 0;
+ ewram0_2.showHallOfFame = 0;
+ ewram0_2.showLinkBattleStatus = 0;
+ ewram0_2.showBattleTowerStatus = 0;
+ ewram0_2.showContestRecord = 0;
+ ewram0_2.showMixingRecord = 0;
+ ewram0_2.showTradingRecord = 0;
+ memset(ewram0_2.ownedBadges, 0, sizeof(ewram0_2.ownedBadges));
- if (ewram0_2.var_64.hasPokedex)
- ewram0_2.var_7++;
+ if (ewram0_2.displayedCard.hasPokedex)
+ ewram0_2.showPokedexCount++;
- if (ewram0_2.var_64.firstHallOfFameA != 0
- || ewram0_2.var_64.firstHallOfFameB != 0
- || ewram0_2.var_64.firstHallOfFameC != 0)
- ewram0_2.var_8++;
+ if (ewram0_2.displayedCard.firstHallOfFameA != 0
+ || ewram0_2.displayedCard.firstHallOfFameB != 0
+ || ewram0_2.displayedCard.firstHallOfFameC != 0)
+ ewram0_2.showHallOfFame++;
- if (ewram0_2.var_64.linkBattleWins != 0 || ewram0_2.var_64.linkBattleLosses != 0)
- ewram0_2.var_9++;
+ if (ewram0_2.displayedCard.linkBattleWins != 0 || ewram0_2.displayedCard.linkBattleLosses != 0)
+ ewram0_2.showLinkBattleStatus++;
- if (ewram0_2.var_64.battleTowerWins != 0 || ewram0_2.var_64.battleTowerLosses != 0)
- ewram0_2.var_a++;
+ if (ewram0_2.displayedCard.battleTowerWins != 0 || ewram0_2.displayedCard.battleTowerLosses != 0)
+ ewram0_2.showBattleTowerStatus++;
- if (ewram0_2.var_64.contestsWithFriends != 0)
- ewram0_2.var_b++;
+ if (ewram0_2.displayedCard.contestsWithFriends != 0)
+ ewram0_2.showContestRecord++;
- if (ewram0_2.var_64.pokeblocksWithFriends != 0)
- ewram0_2.var_c++;
+ if (ewram0_2.displayedCard.pokeblocksWithFriends != 0)
+ ewram0_2.showMixingRecord++;
- if (ewram0_2.var_64.pokemonTrades != 0)
- ewram0_2.var_d++;
+ if (ewram0_2.displayedCard.pokemonTrades != 0)
+ ewram0_2.showTradingRecord++;
- if (!ewram0_2.var_1)
+ if (!ewram0_2.isShowingLinkCard)
{
u32 badgeFlag;
int i = 0;
@@ -544,7 +544,7 @@ void sub_80936D4(void)
while (1)
{
if (FlagGet(badgeFlag))
- ewram0_2.var_e[i]++;
+ ewram0_2.ownedBadges[i]++;
badgeFlag++;
i++;
if (badgeFlag > FLAG_BADGE08_GET)
@@ -571,15 +571,15 @@ void sub_80937BC()
static void sub_80937D8()
{
- sub_8093E04();
- sub_8093E28();
+ TrainerCard_ResetOffsetRegisters();
+ TrainerCard_CopyGraphics();
sub_8093F64();
- sub_8093DAC();
+ TrainerCard_DrawCard();
}
static void sub_80937F0()
{
- sub_8093EF8();
+ TrainerCard_LoadTrainerGraphics();
}
static void nullsub_15(void)
@@ -588,144 +588,147 @@ static void nullsub_15(void)
static void sub_8093800()
{
- sub_809380C();
+ TrainerCard_CreateStateMachine();
}
-static void sub_809380C()
+static void TrainerCard_CreateStateMachine(void)
{
u8 taskId;
- taskId = CreateTask(sub_809382C, 0);
- sub_809382C(taskId);
+ taskId = CreateTask(TrainerCard_RunStateMachine, 0);
+ TrainerCard_RunStateMachine(taskId);
}
-static void sub_809382C(u8 taskId)
+static void TrainerCard_RunStateMachine(u8 taskId)
{
- while (gUnknown_083B5EBC[ewram0_2.var_0](&gTasks[taskId]) != 0)
+ while (TrainerCard_StateMachine[ewram0_2.current_state](&gTasks[taskId]) != 0)
;
}
-bool8 sub_8093864(struct Task *task)
+bool8 TrainerCard_Init(struct Task *task)
{
- ewram0_2.var_5 = gSaveBlock2.playTimeSeconds & 1;
- ewram0_2.var_6 = gSaveBlock2.playTimeVBlanks;
- sub_80939A4();
+ ewram0_2.showColon = gSaveBlock2.playTimeSeconds & 1;
+ ewram0_2.frameCounter = gSaveBlock2.playTimeVBlanks;
+ TrainerCard_CreatePrintPlayTimeTask();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ewram0_2.var_0++;
+ ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
-bool8 sub_80938A8(struct Task *task)
+bool8 TrainerCard_WaitForFadeInToFinish(struct Task *task)
{
if (!gPaletteFade.active)
- ewram0_2.var_0++;
+ ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
-bool8 sub_80938CC(struct Task *task)
+bool8 TrainerCard_WaitForKeys(struct Task *task)
{
if (gMain.newKeys & B_BUTTON)
{
- ewram0_2.var_0 = 5;
+ ewram0_2.current_state = 5; /* Jump to fadeout state */
return TRUE;
}
else if (gMain.newKeys & A_BUTTON)
{
- if (ewram0_2.var_3 != 0)
+ /* It appears that it was previously possible to return the the front side
+ after viewing the back side. This was probably removed due to being
+ unintuitive. */
+ if (ewram0_2.backSideShown)
{
- ewram0_2.var_0 = 5;
+ ewram0_2.current_state = 5; /* Jump to fadeout state */
}
else
{
- ewram0_2.var_3 ^= 1;
- ewram0_2.var_0 = 3;
+ ewram0_2.backSideShown ^= 1; /* Switch to back side */
+ ewram0_2.current_state = 3; /* Jump to start flip animation state */
}
return TRUE;
}
return FALSE;
}
-bool8 sub_8093918(struct Task *task)
+bool8 TrainerCard_StartFlipAntimation(struct Task *task)
{
- sub_8093A28();
+ TrainerCard_CreateFlipAnimationTask();
PlaySE(SE_CARD);
- ewram0_2.var_0++;
+ ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
-bool8 sub_8093938(struct Task *task)
+bool8 TrainerCard_WaitForFlipToFinish(struct Task *task)
{
- if (sub_8093A48())
- ewram0_2.var_0 = 2;
+ if (TrainerCard_HasFlipAnimationFinished())
+ ewram0_2.current_state = 2; /* Return to wait for keys state */
return FALSE;
}
-bool8 sub_8093954(struct Task *task)
+bool8 TrainerCard_FadeOut(struct Task *task)
{
- sub_80939C0();
+ TrainerCard_DestoryPlayTimeTask();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- ewram0_2.var_0++;
+ ewram0_2.current_state++; /* Advance state machine */
return FALSE;
}
-bool8 sub_8093980(struct Task *task)
+bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *task)
{
if (!gPaletteFade.active)
SetMainCallback2((MainCallback)ewram0_2.var_60);
return FALSE;
}
-static void sub_80939A4(void)
+static void TrainerCard_CreatePrintPlayTimeTask(void)
{
- CreateTask(sub_80939DC, 0);
+ CreateTask(TrainerCard_Front_PrintPlayTime, 0);
BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values);
}
-static void sub_80939C0(void)
+static void TrainerCard_DestoryPlayTimeTask(void)
{
- u8 taskId = FindTaskIdByFunc(sub_80939DC);
+ u8 taskId = FindTaskIdByFunc(TrainerCard_Front_PrintPlayTime);
if (taskId != 0xFF)
DestroyTask(taskId);
}
-static void sub_80939DC(u8 taskId)
+static void TrainerCard_Front_PrintPlayTime(u8 taskId)
{
u8 buffer[32];
struct Task *task = &gTasks[taskId];
- if (ewram0_2.var_5 != task->data[TD_1])
+ if (ewram0_2.showColon != task->data[TD_CARD_INDEX])
{
- task->data[TD_1] = ewram0_2.var_5;
- task->data[TD_0] ^= TRUE;
+ task->data[TD_CARD_INDEX] = ewram0_2.showColon;
+ task->data[TD_SHOWING_LINK_CARD] ^= TRUE;
}
- TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]);
+ TrainerCard_Front_GetPlayTimeString(buffer, task->data[TD_SHOWING_LINK_CARD]);
Menu_PrintText(buffer, 10, 12);
}
-static void sub_8093A28(void)
+static void TrainerCard_CreateFlipAnimationTask(void)
{
u8 taskId;
- taskId = CreateTask(sub_8093A68, 0);
- sub_8093A68(taskId);
+ taskId = CreateTask(TrainerCard_RunFlipAnimationStateMachine, 0);
+ TrainerCard_RunFlipAnimationStateMachine(taskId);
}
-static u8 sub_8093A48(void)
+static u8 TrainerCard_HasFlipAnimationFinished(void)
{
- if (FindTaskIdByFunc(sub_8093A68) == 0xFF)
+ if (FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine) == 0xFF)
return TRUE;
else
return FALSE;
}
-static void sub_8093A68(u8 taskId)
+static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId)
{
- while (gUnknown_083B5ED8[gTasks[taskId].data[0]](&gTasks[taskId]) != 0)
+ while (TrainerCard_FlipAnimationStateMachine[gTasks[taskId].data[0]](&gTasks[taskId]) != 0)
;
}
-bool8 sub_8093AA0(struct Task *task)
+bool8 TrainerCard_InitFlipAnimation(struct Task *task)
{
u32 i;
@@ -733,14 +736,14 @@ bool8 sub_8093AA0(struct Task *task)
ScanlineEffect_Clear();
for (i = 0; i < 0xA0; i++)
gScanlineEffectRegBuffers[1][i] = -4;
- SetHBlankCallback(sub_8093D7C);
+ SetHBlankCallback(TrainerCard_FlipAnimationHBlankCallback);
ewram0_2.var_4 = TRUE;
task->data[0]++;
return FALSE;
}
/*
-bool8 sub_8093AF0(struct Task *task)
+bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
{
u32 r7;
u16 r9;
@@ -788,7 +791,7 @@ bool8 sub_8093AF0(struct Task *task)
*/
__attribute__((naked))
-bool8 sub_8093AF0(struct Task *task)
+bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -939,18 +942,20 @@ _08093C08: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093C0C(struct Task *task)
+bool8 TrainerCard_SwitchToNewSide(struct Task *task)
{
- sub_80939C0();
- sub_8093DAC();
- if (!ewram0_2.var_3)
- sub_80939A4();
+ TrainerCard_DestoryPlayTimeTask();
+ TrainerCard_DrawCard();
+ if (!ewram0_2.backSideShown) {
+ /* This code never runs because it is impossible to flip the back side back to the front side */
+ TrainerCard_CreatePrintPlayTimeTask();
+ }
task->data[0]++;
return TRUE;
}
__attribute__((naked))
-bool8 sub_8093C38(struct Task *task)
+bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1099,19 +1104,19 @@ _08093D4C: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093D50(struct Task *task)
+bool8 TrainerCard_FinishFlipAnimation(struct Task *task)
{
u8 taskId;
ewram0_2.var_4 = FALSE;
SetHBlankCallback(NULL);
- sub_8093E04();
- taskId = FindTaskIdByFunc(sub_8093A68);
+ TrainerCard_ResetOffsetRegisters();
+ taskId = FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine);
DestroyTask(taskId);
return FALSE;
}
-void sub_8093D7C(void)
+static void TrainerCard_FlipAnimationHBlankCallback(void)
{
u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF];
@@ -1120,34 +1125,34 @@ void sub_8093D7C(void)
REG_BG2VOFS = bgVOffset;
}
-static void sub_8093DAC(void)
+static void TrainerCard_DrawCard(void)
{
- if (ewram0_2.var_3)
- sub_8093DEC();
+ if (ewram0_2.backSideShown)
+ TrainerCard_DrawCardBack();
else
- sub_8093DC8();
+ TrainerCard_DrawCardFront();
}
-static void sub_8093DC8(void)
+static void TrainerCard_DrawCardFront(void)
{
Menu_EraseScreen();
- sub_80940E4();
+ TrainerCard_ClearTrainerGraphics();
sub_8093F14();
- sub_8093F80();
- sub_8093FD0();
- sub_8094038();
- sub_8094140();
+ TrainerCard_LoadTrainerTilemap();
+ TrainerCard_DrawStars();
+ TrainerCard_DisplayBadges();
+ TrainerCard_Front_PrintTexts();
}
-static void sub_8093DEC(void)
+static void TrainerCard_DrawCardBack(void)
{
Menu_EraseScreen();
- sub_80940E4();
+ TrainerCard_ClearTrainerGraphics();
sub_8093F48();
- sub_8094188();
+ TrainerCard_Back_PrintTexts();
}
-static void sub_8093E04(void)
+static void TrainerCard_ResetOffsetRegisters(void)
{
REG_BG0VOFS = -4;
REG_BG1HOFS = 0;
@@ -1156,13 +1161,13 @@ static void sub_8093E04(void)
REG_BG2VOFS = -4;
}
-static void sub_8093E28(void)
+static void TrainerCard_CopyGraphics(void)
{
const u8 *src;
u8 *dst;
u32 size;
- sub_8093EA0();
+ TrainerCard_LoadPalettes();
LoadPalette(gUnknown_083B5F6C, 0xE0, 32);
src = gMenuTrainerCard_Gfx;
dst = (void *)VRAM;
@@ -1187,34 +1192,34 @@ static void sub_8093E28(void)
}
}
-extern const u16 *const gUnknown_083B5EF8[];
+extern const u16 *const gTrainerCardPalettes[];
-void sub_8093EA0(void)
+static void TrainerCard_LoadPalettes(void)
{
- LoadPalette(gUnknown_083B5EF8[ewram0_2.var_2], 0, 48 * 2);
+ LoadPalette(gTrainerCardPalettes[ewram0_2.starCount], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
- if (ewram0_2.var_64.gender != MALE)
+ if (ewram0_2.displayedCard.gender != MALE)
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
}
-static void sub_8093EF8(void)
+static void TrainerCard_LoadTrainerGraphics(void)
{
- LoadTrainerGfx_TrainerCard(ewram0_2.var_64.gender, 80, (void *)(VRAM + 0x1880));
+ LoadTrainerGfx_TrainerCard(ewram0_2.displayedCard.gender, 80, (void *)(VRAM + 0x1880));
}
static void sub_8093F14(void)
{
const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0};
- CpuFastSet(arr[ewram0_2.var_1], (void *)(VRAM + 0x4800), 0x140);
+ CpuFastSet(arr[ewram0_2.isShowingLinkCard], (void *)(VRAM + 0x4800), 0x140);
}
// I don't really know where to put the data. It's in such a weird order.
const u8 gUnknown_083B5EF4[] = _(" : ");
-const u16 *const gUnknown_083B5EF8[] =
+const u16 *const gTrainerCardPalettes[] =
{
gMenuTrainerCard0Star_Pal,
gMenuTrainerCard1Star_Pal,
@@ -1227,7 +1232,7 @@ const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal
const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal");
const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal");
const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal");
-const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin");
+const u16 gTrainerCardBadgesMap[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin");
static void sub_8093F48(void)
{
@@ -1239,7 +1244,7 @@ static void sub_8093F64(void)
CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320);
}
-static void sub_8093F80(void)
+static void TrainerCard_LoadTrainerTilemap(void)
{
u16 r5 = 0xC4;
u16 *ptr = (u16 *)(VRAM + 0x4000);
@@ -1253,11 +1258,11 @@ static void sub_8093F80(void)
}
}
-static void sub_8093FD0(void)
+static void TrainerCard_DrawStars(void)
{
u16 *ptr = (u16 *)(VRAM + 0x4000);
s16 i = 15;
- s16 var = 15 + ewram0_2.var_2;
+ s16 var = 15 + ewram0_2.starCount;
while (i < var)
{
@@ -1271,9 +1276,9 @@ static void sub_8093FD0(void)
}
}
-static void sub_8094038(void)
+static void TrainerCard_DisplayBadges(void)
{
- if (ewram0_2.var_1 == 0)
+ if (!ewram0_2.isShowingLinkCard)
{
u16 *ptr = (u16 *)(VRAM + 0x4000);
s16 i;
@@ -1281,18 +1286,18 @@ static void sub_8094038(void)
for (i = 0, r2 = 4; i < 8; i++, r2 += 3)
{
- if (ewram0_2.var_e[i] != 0)
+ if (ewram0_2.ownedBadges[i] != 0)
{
- ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000;
- ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000;
- ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000;
- ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000;
+ ptr[15 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][0] | 0x3000;
+ ptr[15 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][1] | 0x3000;
+ ptr[16 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][2] | 0x3000;
+ ptr[16 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][3] | 0x3000;
}
}
}
}
-static void sub_80940E4(void)
+static void TrainerCard_ClearTrainerGraphics(void)
{
s16 i;
u16 *ptr;
@@ -1301,7 +1306,7 @@ static void sub_80940E4(void)
*ptr = 0;
}
-static void sub_8094110(void)
+static void TrainerCard_ClearPokedexLabel(void)
{
u16 *ptr = (u16 *)(VRAM + 0x4800);
u16 i;
@@ -1313,24 +1318,24 @@ static void sub_8094110(void)
}
}
-static void sub_8094140(void)
+static void TrainerCard_Front_PrintTexts(void)
{
u8 *buffer;
BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values);
buffer = gStringVar1;
- StringCopy(buffer, ewram0_2.var_64.playerName);
+ StringCopy(buffer, ewram0_2.displayedCard.playerName);
ConvertInternationalString(buffer, ewram0_2.language);
Menu_PrintText(buffer, 7, 5);
TrainerCard_Front_PrintTrainerID();
TrainerCard_Front_PrintMoney();
TrainerCard_Front_PrintPokedexCount();
- sub_809429C();
+ TrainerCard_PrintEasyChatPhrase();
}
-static void sub_8094188(void)
+static void TrainerCard_Back_PrintTexts(void)
{
BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values);
TrainerCard_Back_PrintName();
@@ -1354,31 +1359,31 @@ static void TrainerCard_Front_PrintTrainerID(void)
{
u8 buffer[8];
- ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
Menu_PrintText(buffer, 20, 2);
}
static void TrainerCard_Front_PrintMoney(void)
{
- sub_80B7AEC(ewram0_2.var_64.money, 16, 8);
+ sub_80B7AEC(ewram0_2.displayedCard.money, 16, 8);
}
static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (ewram0_2.var_7 == FALSE)
+ if (!ewram0_2.showPokedexCount)
{
- sub_8094110();
+ TrainerCard_ClearPokedexLabel();
}
else
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 16, 10);
}
}
-static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
+static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon)
{
u8 buffer[16];
u16 playTimeHours;
@@ -1386,33 +1391,33 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
- if (ewram0_2.var_1 != 0)
+ if (ewram0_2.isShowingLinkCard != 0)
{
- playTimeHours = ewram0_2.var_64.playTimeHours;
- playTimeMinutes = ewram0_2.var_64.playTimeMinutes;
+ playTimeHours = ewram0_2.displayedCard.playTimeHours;
+ playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes;
}
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
sub_8072C74(arg1, buffer, 48, 1);
}
-static void sub_809429C(void)
+static void TrainerCard_PrintEasyChatPhrase(void)
{
u8 *str;
- if (ewram0_2.var_1 != 0)
+ if (ewram0_2.isShowingLinkCard != 0)
{
str = gStringVar1;
- str = StringCopy(str, ewram0_2.var_20[0]);
+ str = StringCopy(str, ewram0_2.easyChatPhrase[0]);
str[0] = 00;
str++;
- str = StringCopy(str, ewram0_2.var_20[1]);
+ str = StringCopy(str, ewram0_2.easyChatPhrase[1]);
Menu_PrintText(gStringVar1, 2, 14);
str = gStringVar1;
- str = StringCopy(str, ewram0_2.var_20[2]);
+ str = StringCopy(str, ewram0_2.easyChatPhrase[2]);
str[0] = 00;
str++;
- str = StringCopy(str, ewram0_2.var_20[3]);
+ str = StringCopy(str, ewram0_2.easyChatPhrase[3]);
Menu_PrintText(gStringVar1, 2, 16);
}
}
@@ -1422,7 +1427,7 @@ static void TrainerCard_Back_PrintName(void)
u8 *str;
str = gStringVar1;
- StringCopy(str, ewram0_2.var_64.playerName);
+ StringCopy(str, ewram0_2.displayedCard.playerName);
ConvertInternationalString(str, ewram0_2.language);
#if ENGLISH
@@ -1436,7 +1441,7 @@ static void TrainerCard_Back_PrintName(void)
static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
{
- if (ewram0_2.var_8 != 0)
+ if (ewram0_2.showHallOfFame != 0)
Menu_PrintText(gOtherText_FirstHOF, 3, 5);
}
@@ -1444,21 +1449,21 @@ static void TrainerCard_Back_PrintHallOfFameTime(void)
{
u8 *str;
- if (ewram0_2.var_8 != 0)
+ if (ewram0_2.showHallOfFame != 0)
{
str = gStringVar1;
- str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
MenuPrint_RightAligned(gStringVar1, 28, 5);
}
}
static void TrainerCard_Back_PrintLinkBattlesLabel(void)
{
- if (ewram0_2.var_9 != 0)
+ if (ewram0_2.showLinkBattleStatus != 0)
Menu_PrintText(gOtherText_LinkCableBattles, 3, 7);
}
@@ -1466,19 +1471,19 @@ static void TrainerCard_Back_PrintLinkBattles(void)
{
u8 buffer[16];
- if (ewram0_2.var_9 != 0)
+ if (ewram0_2.showLinkBattleStatus != 0)
{
- ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleWins);
+ ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleWins);
MenuPrint_RightAligned(buffer, 22, 7);
- ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleLosses);
+ ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleLosses);
MenuPrint_RightAligned(buffer, 28, 7);
}
}
static void TrainerCard_Back_PrintBattleTower_Label(void)
{
- if (ewram0_2.var_a != 0)
+ if (ewram0_2.showBattleTowerStatus != 0)
Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15);
}
@@ -1486,19 +1491,19 @@ static void TrainerCard_Back_PrintBattleTower(void)
{
u8 buffer[16];
- if (ewram0_2.var_a != 0)
+ if (ewram0_2.showBattleTowerStatus != 0)
{
- sub_8072C44(buffer, ewram0_2.var_64.battleTowerWins, 24, 1);
+ sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1);
Menu_PrintTextPixelCoords(buffer, 112, 120, 0);
- sub_8072C44(buffer, ewram0_2.var_64.battleTowerLosses, 24, 1);
+ sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1);
Menu_PrintTextPixelCoords(buffer, 149, 120, 0);
}
}
static void TrainerCard_Back_PrintLinkContests_Label(void)
{
- if (ewram0_2.var_b != 0)
+ if (ewram0_2.showContestRecord != 0)
Menu_PrintText(gOtherText_ContestRecord, 3, 13);
}
@@ -1506,16 +1511,16 @@ static void TrainerCard_Back_PrintLinkContests(void)
{
u8 buffer[8];
- if (ewram0_2.var_b != 0)
+ if (ewram0_2.showContestRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 28, 13);
}
}
static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
{
- if (ewram0_2.var_c != 0)
+ if (ewram0_2.showMixingRecord != 0)
Menu_PrintText(gOtherText_MixingRecord, 3, 11);
}
@@ -1523,16 +1528,16 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void)
{
u8 buffer[8];
- if (ewram0_2.var_c != 0)
+ if (ewram0_2.showMixingRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 11);
}
}
static void TrainerCard_Back_PrintPokemonTrades_Label(void)
{
- if (ewram0_2.var_d != 0)
+ if (ewram0_2.showTradingRecord != 0)
Menu_PrintText(gOtherText_TradeRecord, 3, 9);
}
@@ -1540,9 +1545,9 @@ static void TrainerCard_Back_PrintPokemonTrades(void)
{
u8 buffer[8];
- if (ewram0_2.var_d != 0)
+ if (ewram0_2.showTradingRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 9);
}
}
diff --git a/src/field/item.c b/src/field/item.c
index 66d7d65df..6ff7a7cbe 100644
--- a/src/field/item.c
+++ b/src/field/item.c
@@ -571,7 +571,7 @@ void SwapRegisteredBike(void)
static u16 SanitizeItemId(u16 itemId)
{
- if (itemId > 0x15C)
+ if (itemId >= ARRAY_COUNT(gItems))
return 0;
else
return itemId;
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index d6881cb01..2f6f1e7dd 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -395,7 +395,7 @@ static u8 StartMenu_PlayerCallback(void)
if (!gPaletteFade.active)
{
PlayRainSoundEffect();
- sub_8093110(sub_805469C);
+ TrainerCard_ShowPlayerCard(sub_805469C);
return 1;
}
return 0;
@@ -443,7 +443,7 @@ static u8 StartMenu_PlayerLinkCallback(void)
if (!gPaletteFade.active)
{
PlayRainSoundEffect();
- sub_8093130(gUnknown_03004860, sub_805469C);
+ TrainerCard_ShowLinkCard(gUnknown_03004860, sub_805469C);
return 1;
}
return 0;
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index 53eb2f1e8..697806ee1 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -88,8 +88,7 @@ extern u8 gBattleCommunication[];
extern const u8 BattleText_StartEvo[];
extern const u8 BattleText_FinishEvo[];
extern const u8 BattleText_StopEvo[];
-extern void * const gUnknown_081FAF4C[];
-extern const u8* const gBattleStringsTable[];
+extern const u8 *const gBattleStringsTable[];
// this file's functions
static void Task_EvolutionScene(u8 taskID);