summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_2.c6
-rw-r--r--src/berry_blender.c4
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/link_rfu.c97
-rw-r--r--src/reshow_battle_screen.c2
5 files changed, 99 insertions, 12 deletions
diff --git a/src/battle_2.c b/src/battle_2.c
index c4713a88a..efef5355b 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -736,7 +736,7 @@ static void CB2_HandleStartBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 2;
}
if (gWirelessCommType)
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
}
else
@@ -938,7 +938,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
}
if (gWirelessCommType)
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
}
else
@@ -1325,7 +1325,7 @@ static void CB2_HandleStartMultiBattle(void)
gBattleCommunication[MULTIUSE_STATE]++;
}
if (gWirelessCommType)
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
}
else
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 604db9b46..11ae82011 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -956,7 +956,7 @@ static void sub_807FAC8(void)
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType)
{
sub_800E0E8();
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
SetVBlankCallback(VBlankCB0_BerryBlender);
sBerryBlenderData->mainState++;
@@ -1162,7 +1162,7 @@ static void sub_8080018(void)
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType)
{
sub_800E0E8();
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
sBerryBlenderData->mainState++;
break;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 03b9dec3f..9be016826 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -405,7 +405,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
if (gWirelessCommType)
{
sub_800E0E8();
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
BlendPalettes(-1,0x10, 0);
gMain.state++;
diff --git a/src/link_rfu.c b/src/link_rfu.c
index c1a3b1d09..68d42ec4a 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -20,7 +20,7 @@ ALIGNED(4) IWRAM_DATA u8 gUnknown_03000D78[8];
IWRAM_DATA u8 gUnknown_03000D80[16];
IWRAM_DATA u16 gUnknown_03000D90[8];
-EWRAM_DATA u8 gUnknown_02022B10 = 0;
+EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0;
EWRAM_DATA ALIGNED(4) struct UnkLinkRfuStruct_02022B14 gUnknown_02022B14 = {};
EWRAM_DATA ALIGNED(2) u8 gUnknown_02022B22[8] = {};
EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_02022B2C = {};
@@ -49,7 +49,7 @@ bool32 sub_8010454(u16 a0);
const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal");
const u8 gWirelessLinkIconPic[] = INCBIN_U8("graphics/interface/wireless_link_icon.4bpp.lz");
-const u8 gUnknown_082ED370[] = {
+const u8 sWireless_ASCIItoRSETable[] = {
0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
@@ -83,7 +83,7 @@ const u8 gUnknown_082ED370[] = {
0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
};
-const u8 gUnknown_082ED470[] = {
+const u8 sWireless_RSEtoASCIITable[] = {
0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c,
@@ -117,6 +117,67 @@ const u8 gUnknown_082ED470[] = {
0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
};
+const struct OamData sWirelessStatusIndicatorOamData = {
+ .size = 1
+};
+static const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
+ // 3 bars
+ ANIMCMD_FRAME( 4, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_JUMP(0)
+};
+static const union AnimCmd sWirelessStatusIndicatorAnim1[] = {
+ // 2 bars
+ ANIMCMD_FRAME( 4, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_JUMP(0)
+};
+static const union AnimCmd sWirelessStatusIndicatorAnim2[] = {
+ // 1 bar
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_JUMP(0)
+};
+static const union AnimCmd sWirelessStatusIndicatorAnim3[] = {
+ // searching
+ ANIMCMD_FRAME( 4, 10),
+ ANIMCMD_FRAME(20, 10),
+ ANIMCMD_JUMP(0)
+};
+static const union AnimCmd sWirelessStatusIndicatorAnim4[] = {
+ // error
+ ANIMCMD_FRAME(24, 10),
+ ANIMCMD_FRAME( 4, 10),
+ ANIMCMD_JUMP(0)
+};
+static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = {
+ sWirelessStatusIndicatorAnim0,
+ sWirelessStatusIndicatorAnim1,
+ sWirelessStatusIndicatorAnim2,
+ sWirelessStatusIndicatorAnim3,
+ sWirelessStatusIndicatorAnim4
+};
+const struct SpriteSheet sWirelessStatusIndicatorSpriteSheet = {
+ gWirelessLinkIconPic, 0x0380, 0xD431
+};
+const struct SpritePalette sWirelessStatusIndicatorSpritePalette = {
+ gWirelessLinkIconPalette, 0xD432
+};
+static const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = {
+ 0xD431,
+ 0xD432,
+ &sWirelessStatusIndicatorOamData,
+ sWirelessStatusIndicatorAnims,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
// .text
@@ -1810,7 +1871,7 @@ void PkmnStrToASCII(u8 *q1, const u8 *q2)
for (i = 0; q2[i] != EOS; i++)
{
- q1[i] = gUnknown_082ED470[q2[i]];
+ q1[i] = sWireless_RSEtoASCIITable[q2[i]];
}
q1[i] = 0;
}
@@ -1821,7 +1882,7 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
for (i = 0; q2[i] != 0; i++)
{
- q1[i] = gUnknown_082ED370[q2[i]];
+ q1[i] = sWireless_ASCIItoRSETable[q2[i]];
}
q1[i] = EOS;
}
@@ -2013,3 +2074,29 @@ void sub_800DF90(void *buff1, void *buff2)
memcpy(buff1, &gUnknown_02022B14, 13);
memcpy(buff2, gUnknown_02022B22, 8);
}
+
+void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
+{
+ u8 sprId;
+
+ if (x == 0 && y == 0)
+ {
+ x = 0xE7;
+ y = 0x08;
+ }
+ if (gUnknown_03007890->unk_00 == 1)
+ {
+ sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
+ gSprites[sprId].data7 = 0x1234;
+ gSprites[sprId].data6 = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[sprId].invisible = TRUE;
+ gWirelessStatusIndicatorSpriteId = sprId;
+ }
+ else
+ {
+ gWirelessStatusIndicatorSpriteId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
+ gSprites[gWirelessStatusIndicatorSpriteId].data7 = 0x1234;
+ gSprites[gWirelessStatusIndicatorSpriteId].data6 = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[gWirelessStatusIndicatorSpriteId].invisible = TRUE;
+ }
+}
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index de2dcf213..a2efbf1e5 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -180,7 +180,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
if (gWirelessCommType != 0 && gReceivedRemoteLinkPlayers != 0)
{
sub_800E0E8();
- sub_800DFB4(0, 0);
+ CreateWirelessStatusIndicatorSprite(0, 0);
}
}
break;