diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-03 22:01:06 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-03 22:01:06 -0500 |
commit | 8b5d6fe5d915053d6e052ba3279c8d1a98fd1509 (patch) | |
tree | f3aa29e5a5cf2159d93ba35ec9efc25220b96d52 /src | |
parent | d5bc329de73f2ef9b4ba84d71d784b9f949f2169 (diff) |
CreateWirelessStatusIndicatorSprite
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_2.c | 6 | ||||
-rw-r--r-- | src/berry_blender.c | 4 | ||||
-rw-r--r-- | src/evolution_scene.c | 2 | ||||
-rw-r--r-- | src/link_rfu.c | 97 | ||||
-rw-r--r-- | src/reshow_battle_screen.c | 2 |
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; |