summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-04 14:16:45 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-04 14:16:45 -0500
commit4770fac9eb9696236fa998554a353f1f140a1ed4 (patch)
treec20f55d951f658360bac52d14f78427fc7e68d37 /src
parentd991f1b2c99d176dc411223c46ca621ca6b28ea2 (diff)
More mevent documentation
Diffstat (limited to 'src')
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_main.c2
-rw-r--r--src/event_data.c4
-rw-r--r--src/field_fadetransition.c2
-rw-r--r--src/field_specials.c10
-rw-r--r--src/link.c76
-rw-r--r--src/link_rfu_2.c40
-rw-r--r--src/mevent.c431
-rw-r--r--src/mevent_8145654.c793
-rw-r--r--src/mevent_client.c9
-rw-r--r--src/mevent_server.c4
-rw-r--r--src/mevent_show_card.c454
-rw-r--r--src/mevent_show_news.c357
-rw-r--r--src/mystery_gift_menu.c4
-rw-r--r--src/new_game.c2
-rw-r--r--src/script.c2
-rw-r--r--src/trade.c4
-rw-r--r--src/trade_scene.c2
-rw-r--r--src/trainer_card.c2
-rw-r--r--src/union_room.c287
-rw-r--r--src/union_room_battle.c2
-rw-r--r--src/union_room_chat.c6
22 files changed, 1262 insertions, 1233 deletions
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index cb9e04a50..a01c4990a 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -831,7 +831,7 @@ void sub_802F6A8(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gWirelessCommType == 0)
- sub_800AAC0();
+ Link_TryStartSend5FFF();
else
sub_800AB9C();
gBattlerControllerFuncs[gActiveBattler] = sub_802F610;
diff --git a/src/battle_main.c b/src/battle_main.c
index 76f373f8f..80a0cd588 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -1154,7 +1154,7 @@ static void CB2_PreInitMultiBattle(void)
if (gWirelessCommType)
sub_800AB9C();
else
- sub_800AAC0();
+ Link_TryStartSend5FFF();
}
break;
case 3:
diff --git a/src/event_data.c b/src/event_data.c
index 010a4414c..74d1cf608 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -118,7 +118,7 @@ bool32 IsMysteryGiftEnabled(void)
return FlagGet(FLAG_SYS_MYSTERY_GIFT_ENABLED);
}
-void sub_806E2D0(void)
+void ResetMysteryEventFlags(void)
{
FlagClear(FLAG_MYSTERY_EVENT_DONE);
FlagClear(FLAG_0x3D9);
@@ -138,7 +138,7 @@ void sub_806E2D0(void)
FlagClear(FLAG_0x3E7);
}
-void sub_806E370(void)
+void ResetMysteryEventVars(void)
{
VarSet(VAR_EVENT_PICHU_SLOT, 0);
VarSet(VAR_0x40B6, 0);
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 42fe26c91..282b1c8b5 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -662,7 +662,7 @@ static void sub_807E678(u8 taskId)
case 1:
if (!sub_807E40C() && BGMusicStopped())
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
data[0]++;
}
break;
diff --git a/src/field_specials.c b/src/field_specials.c
index bb320d42a..bd19a0477 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1920,15 +1920,15 @@ u16 Special_BattleCardAction(void)
switch (gSpecialVar_Result)
{
case 0:
- return sub_81445C0(3);
+ return MEvent_GetBattleCardCount(3);
case 1:
- return sub_81445C0(4);
+ return MEvent_GetBattleCardCount(4);
case 2:
- return sub_81445C0(0);
+ return MEvent_GetBattleCardCount(0);
case 3:
- return sub_81445C0(1);
+ return MEvent_GetBattleCardCount(1);
case 4:
- return sub_81445C0(2);
+ return MEvent_GetBattleCardCount(2);
default:
AGB_ASSERT_EX(0, ABSPATH("scr_tool.c"), 3873);
return 0;
diff --git a/src/link.c b/src/link.c
index 69ad29076..2f6d03372 100644
--- a/src/link.c
+++ b/src/link.c
@@ -82,11 +82,11 @@ u32 gFiller_3003EC0;
u16 gLinkHeldKeys;
u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
u32 gLinkStatus;
-bool8 gUnknown_3003F24;
+bool8 gLinkAllAcked5FFF;
bool8 gUnknown_3003F28;
-bool8 gUnknown_3003F2C[MAX_LINK_PLAYERS];
-bool8 gUnknown_3003F30[MAX_LINK_PLAYERS];
-u16 gUnknown_3003F34;
+bool8 gLinkCommand2FFEAck[MAX_LINK_PLAYERS];
+bool8 gLinkCommand5FFFAck[MAX_LINK_PLAYERS];
+u16 gLinkCmd5FFFparam;
u8 gSuppressLinkErrorMessage;
bool8 gWirelessCommType;
bool8 gSavedLinkPlayerCount;
@@ -123,8 +123,8 @@ EWRAM_DATA struct {
u8 lastSendQueueCount;
u8 unk_06;
} sLinkErrorBuffer = {};
-EWRAM_DATA u16 gUnknown_202285C = 0;
-EWRAM_DATA void *gUnknown_2022860 = NULL;
+static EWRAM_DATA u16 sStartSend5FFFfailures = 0;
+static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL;
static void InitLocalLinkPlayer(void);
static void sub_800978C(void);
@@ -142,8 +142,8 @@ static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size);
static void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2);
static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8 taskId);
-static void sub_800AB0C(void);
-static void sub_800AB38(void);
+static void LinkCB_BuildCommand5FFF(void);
+static void LinkCB_WaitAckCommand5FFF(void);
static void sub_800ABD4(void);
static void sub_800AC00(void);
static void CheckErrorStatus(void);
@@ -379,8 +379,8 @@ void OpenLink(void)
ResetBlockSend();
gUnknown_3000E4C = 0;
gUnknown_3003F28 = FALSE;
- gUnknown_3003F24 = FALSE;
- gUnknown_3003F34 = 0;
+ gLinkAllAcked5FFF = FALSE;
+ gLinkCmd5FFFparam = 0;
CreateTask(Task_TriggerHandshake, 2);
}
else
@@ -391,8 +391,8 @@ void OpenLink(void)
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
gRemoteLinkPlayersNotReceived[i] = TRUE;
- gUnknown_3003F30[i] = FALSE;
- gUnknown_3003F2C[i] = FALSE;
+ gLinkCommand5FFFAck[i] = FALSE;
+ gLinkCommand2FFEAck[i] = FALSE;
}
}
@@ -468,7 +468,7 @@ void LinkTestProcessKeyInput(void)
}
if (JOY_NEW(SELECT_BUTTON))
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
}
if (gLinkTestDebugValuesEnabled)
{
@@ -632,10 +632,10 @@ void ProcessRecvCmds(u8 unused)
}
break;
case LINKCMD_0x5FFF:
- gUnknown_3003F30[i] = TRUE;
+ gLinkCommand5FFFAck[i] = TRUE;
break;
case LINKCMD_0x2FFE:
- gUnknown_3003F2C[i] = TRUE;
+ gLinkCommand2FFEAck[i] = TRUE;
break;
case LINKCMD_0xAAAA:
sub_800A3CC();
@@ -701,7 +701,7 @@ void BuildSendCmd(u16 command)
break;
case LINKCMD_0x5FFF:
gSendCmd[0] = LINKCMD_0x5FFF;
- gSendCmd[1] = gUnknown_3003F34;
+ gSendCmd[1] = gLinkCmd5FFFparam;
break;
case LINKCMD_0x5566:
gSendCmd[0] = LINKCMD_0x5566;
@@ -1312,54 +1312,54 @@ u8 sub_800AA74(void)
return gUnknown_3000E50;
}
-void sub_800AA80(u16 a0)
+void Link_StartSend5FFFwithParam(u16 a0)
{
if (gWirelessCommType == 1)
{
- task_add_05_task_del_08FA224_when_no_RfuFunc();
+ Rfu_BeginBuildAndSendCommand5F();
}
else
{
if (gLinkCallback == NULL)
{
- gLinkCallback = sub_800AB0C;
- gUnknown_3003F24 = FALSE;
- gUnknown_3003F34 = a0;
+ gLinkCallback = LinkCB_BuildCommand5FFF;
+ gLinkAllAcked5FFF = FALSE;
+ gLinkCmd5FFFparam = a0;
}
}
}
-void sub_800AAC0(void)
+void Link_TryStartSend5FFF(void)
{
if (gWirelessCommType == 1)
{
- task_add_05_task_del_08FA224_when_no_RfuFunc();
+ Rfu_BeginBuildAndSendCommand5F();
}
else
{
if (gLinkCallback != NULL)
{
- gUnknown_202285C++;
+ sStartSend5FFFfailures++;
}
else
{
- gLinkCallback = sub_800AB0C;
- gUnknown_3003F24 = FALSE;
- gUnknown_3003F34 = 0;
+ gLinkCallback = LinkCB_BuildCommand5FFF;
+ gLinkAllAcked5FFF = FALSE;
+ gLinkCmd5FFFparam = 0;
}
}
}
-static void sub_800AB0C(void)
+static void LinkCB_BuildCommand5FFF(void)
{
if (gLastRecvQueueCount == 0)
{
BuildSendCmd(LINKCMD_0x5FFF);
- gLinkCallback = sub_800AB38;
+ gLinkCallback = LinkCB_WaitAckCommand5FFF;
}
}
-static void sub_800AB38(void)
+static void LinkCB_WaitAckCommand5FFF(void)
{
int i;
unsigned count;
@@ -1369,7 +1369,7 @@ static void sub_800AB38(void)
count = 0;
for (i = 0; i < linkPlayerCount; i++)
{
- if (gUnknown_3003F30[i])
+ if (gLinkCommand5FFFAck[i])
{
count++;
}
@@ -1380,7 +1380,7 @@ static void sub_800AB38(void)
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
- gUnknown_3003F24 = TRUE;
+ gLinkAllAcked5FFF = TRUE;
}
}
@@ -1396,7 +1396,7 @@ void sub_800AB9C(void)
{
gLinkCallback = sub_800ABD4;
}
- gUnknown_3003F24 = FALSE;
+ gLinkAllAcked5FFF = FALSE;
}
}
@@ -1417,7 +1417,7 @@ static void sub_800AC00(void)
linkPlayerCount = GetLinkPlayerCount();
for (i = 0; i < linkPlayerCount; i++)
{
- if (!gUnknown_3003F2C[i])
+ if (!gLinkCommand2FFEAck[i])
{
break;
}
@@ -1426,7 +1426,7 @@ static void sub_800AC00(void)
{
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- gUnknown_3003F2C[i] = FALSE;
+ gLinkCommand2FFEAck[i] = FALSE;
}
gLinkCallback = NULL;
}
@@ -1482,7 +1482,7 @@ void CB2_LinkError(void)
SetVBlankCallback(sub_800978C);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sLinkErrorBgTemplates, 2);
- gUnknown_2022860 = tilemapBuffer = malloc(0x800);
+ sLinkErrorBgTilemapBuffer = tilemapBuffer = malloc(0x800);
SetBgTilemapBuffer(1, tilemapBuffer);
if (InitWindows(sLinkErrorWindowTemplates))
{
@@ -1603,12 +1603,12 @@ static void CB2_PrintErrorMessage(void)
bool8 GetSioMultiSI(void)
{
- return (REG_SIOCNT & 0x04) != 0;
+ return (REG_SIOCNT & SIO_MULTI_SI) != 0;
}
static bool8 IsSioMultiMaster(void)
{
- return (REG_SIOCNT & 0x8) && !(REG_SIOCNT & 0x04);
+ return (REG_SIOCNT & SIO_MULTI_SD) && !(REG_SIOCNT & SIO_MULTI_SI);
}
bool8 IsLinkConnectionEstablished(void)
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index 132c7b0c5..ed1a11393 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -1027,7 +1027,7 @@ static void RfuHandleReceiveCommand(u8 unused)
Rfu_InitBlockSend(gUnknown_843EC64[gRecvCmds[i][1]].buffer, (u16)gUnknown_843EC64[gRecvCmds[i][1]].size);
break;
case RFU_COMMAND_0x5f00:
- Rfu.unk_e4[i] = 1;
+ Rfu.cmd5f00Ack[i] = 1;
break;
case RFU_COMMAND_0x6600:
if (Rfu.unk_100 == gRecvCmds[i][1])
@@ -1280,7 +1280,7 @@ bool8 sub_80FA0F8(u8 a0)
return TRUE;
}
-static void sub_80FA114(void)
+static void RfuFunc_End5F00_PowerDownRfu(void)
{
rfu_clearAllSlot();
rfu_LMAN_powerDownRFU();
@@ -1289,14 +1289,14 @@ static void sub_80FA114(void)
Rfu.RfuFunc = NULL;
}
-static void sub_80FA140(void)
+static void RfuFunc_End5F00_ParentDisconnect(void)
{
rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
- sub_80FA114();
+ RfuFunc_End5F00_PowerDownRfu();
}
-static void sub_80FA160(void)
+static void RfuFunc_End5F00(void)
{
if (Rfu.parent_child == MODE_CHILD)
{
@@ -1304,7 +1304,7 @@ static void sub_80FA160(void)
Rfu.unk_ce4 = 2;
}
else
- Rfu.RfuFunc = sub_80FA140;
+ Rfu.RfuFunc = RfuFunc_End5F00_ParentDisconnect;
}
void LinkRfu_FatalError(void)
@@ -1314,7 +1314,7 @@ void LinkRfu_FatalError(void)
Rfu.bm_DisconnectSlot = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
}
-static void sub_80FA1C4(void)
+static void RfuFunc_WaitAck5F00(void)
{
s32 i;
u8 playerCount = Rfu.playerCount;
@@ -1322,45 +1322,45 @@ static void sub_80FA1C4(void)
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- if (Rfu.unk_e4[i])
+ if (Rfu.cmd5f00Ack[i])
count++;
}
if (count == playerCount)
{
- gBattleTypeFlags &= (u16)~BATTLE_TYPE_20;
+ gBattleTypeFlags &= ~(BATTLE_TYPE_20 | 0xFFFF0000);
if (Rfu.parent_child == MODE_CHILD)
{
Rfu.errorState = 3;
- sub_80FA160();
+ RfuFunc_End5F00();
}
else
- Rfu.RfuFunc = sub_80FA160;
+ Rfu.RfuFunc = RfuFunc_End5F00;
}
}
-static void sub_80FA224(void)
+static void RfuFunc_BuildCommand5F00(void)
{
if (gSendCmd[0] == 0 && !Rfu.unk_ce8)
{
RfuPrepareSendBuffer(RFU_COMMAND_0x5f00);
- Rfu.RfuFunc = sub_80FA1C4;
+ Rfu.RfuFunc = RfuFunc_WaitAck5F00;
}
}
-static void sub_80FA25C(u8 taskId)
+static void Task_WaitRfuFuncAndSetBuildCmd5F00(u8 taskId)
{
if (Rfu.RfuFunc == NULL)
{
Rfu.unk_cd9 = 1;
- Rfu.RfuFunc = sub_80FA224;
+ Rfu.RfuFunc = RfuFunc_BuildCommand5F00;
DestroyTask(taskId);
}
}
-void task_add_05_task_del_08FA224_when_no_RfuFunc(void)
+void Rfu_BeginBuildAndSendCommand5F(void)
{
- if (!FuncIsActiveTask(sub_80FA25C))
- CreateTask(sub_80FA25C, 5);
+ if (!FuncIsActiveTask(Task_WaitRfuFuncAndSetBuildCmd5F00))
+ CreateTask(Task_WaitRfuFuncAndSetBuildCmd5F00, 5);
}
static void sub_80FA2B0(void)
@@ -1938,9 +1938,9 @@ void RfuUpdatePlayerGnameStateAndSend(u32 type, u32 species, u32 level)
gHostRFUtgtGnameBuffer.level = level;
}
-void sub_80FAFE0(u8 a0)
+void sub_80FAFE0(bool8 unk_0a_7)
{
- gHostRFUtgtGnameBuffer.unk_0a_7 = a0;
+ gHostRFUtgtGnameBuffer.unk_0a_7 = unk_0a_7;
rfu_REQ_configGameData(0, 0x0002, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
diff --git a/src/mevent.c b/src/mevent.c
index afad326b5..225ce30c5 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -21,77 +21,65 @@
#include "mystery_gift_menu.h"
#include "help_system.h"
#include "mevent.h"
+#include "strings.h"
struct MEventTaskData1
{
- u16 t00;
+ u16 stateAdvanceDelay;
u16 t02;
u16 t04;
u16 t06;
u8 state;
- u8 t09;
+ u8 textOrReceiveState;
u8 t0A;
u8 t0B;
u8 t0C;
u8 t0D;
- u8 t0E;
+ u8 initialSendResult;
struct MEvent_Str_2 *t10;
};
-void sub_8143910(u8 taskId);
-bool32 sub_8143E64(const struct MEWonderNewsData * src);
-void sub_8143E9C(void);
-void sub_8143ED0(void);
-bool32 sub_8144018(const struct MEWonderCardData * src);
-void BlankSavedWonderCard(void);
-void BlankMEventBuffer2(void);
-void sub_8144824(u32, u32, u32 *, s32);
-void sub_8144790(void);
-
-extern const u8 gUnknown_841DE52[];
-extern const u8 gUnknown_841DE53[];
-extern const u8 gUnknown_841DE54[];
-extern const u8 gUnknown_841DE7C[];
-extern const u8 gUnknown_841DE7D[];
-extern const u8 gUnknown_841DE95[];
-extern const u8 gUnknown_841DE96[];
-extern const u8 gUnknown_841DE97[];
-extern const u8 gUnknown_841DE98[];
-extern const u8 gUnknown_841DE99[];
-extern const u8 gUnknown_841DE9A[];
-extern const u8 gUnknown_841DE9B[];
-extern const u8 gUnknown_841DE9C[];
+static void Task_EReaderComm(u8 taskId);
+static bool32 IsReceivedWonderNewsHeaderValid(const struct MEWonderNewsData * src);
+static void BlankWonderNews(void);
+static void BlankMENewsJisan(void);
+static bool32 IsReceivedWonderCardHeaderValid(const struct MEWonderCardData * src);
+static void BlankSavedWonderCard(void);
+static void BlankMEventBuffer2(void);
+static void RecordIdOfWonderCardSender(u32 eventId, u32 trainerId, u32 *idsList, s32 count);
+static void BlankBuffer344(void);
+
extern const u8 gUnknownSerialData_Start[];
extern const u8 gUnknownSerialData_End[];
-const u16 gUnknown_8466F00[] = {
- 0x02a7,
- 0x02a8,
- 0x02a9,
- 0x02aa,
- 0x02ab,
- 0x02ac,
- 0x02ad,
- 0x02ae,
- 0x02af,
- 0x02b0,
- 0x02b1,
- 0x02b2,
- 0x02b3,
- 0x02b4,
- 0x02b5,
- 0x02b6,
- 0x02b7,
- 0x02b8,
- 0x02b9,
- 0x02ba
+static const u16 sGiftItemFlagIds[] = {
+ FLAG_GOT_AURORA_TICKET,
+ FLAG_GOT_MYSTIC_TICKET,
+ FLAG_0x2A9,
+ FLAG_0x2AA,
+ FLAG_0x2AB,
+ FLAG_0x2AC,
+ FLAG_0x2AD,
+ FLAG_0x2AE,
+ FLAG_0x2AF,
+ FLAG_0x2B0,
+ FLAG_0x2B1,
+ FLAG_0x2B2,
+ FLAG_0x2B3,
+ FLAG_0x2B4,
+ FLAG_0x2B5,
+ FLAG_0x2B6,
+ FLAG_0x2B7,
+ FLAG_0x2B8,
+ FLAG_0x2B9,
+ FLAG_0x2BA
};
-struct MEvent_Str_1 gUnknown_3005ED0;
+struct MEvent_Str_1 sMEventSendToEReaderManager;
-static EWRAM_DATA bool32 gUnknown_203F3BC = FALSE;
+static EWRAM_DATA bool32 sReceivedWonderCardIsValid = FALSE;
-void sub_81435DC(struct MEvent_Str_1 *mgr, size_t size, const void * data)
+void SendUnknownSerialData_Init(struct MEvent_Str_1 *mgr, size_t size, const void * data)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
@@ -106,7 +94,7 @@ void sub_81435DC(struct MEvent_Str_1 *mgr, size_t size, const void * data)
mgr->data = data;
}
-void sub_8143644(struct MEvent_Str_1 *unused)
+void SendUnknownSerialData_Teardown(struct MEvent_Str_1 *unused)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
@@ -116,7 +104,7 @@ void sub_8143644(struct MEvent_Str_1 *unused)
REG_IME = imeBak;
}
-u8 sub_8143674(struct MEvent_Str_1 *mgr)
+u8 SendUnknownSerialData_Run(struct MEvent_Str_1 *mgr)
{
u8 resp = 0;
mgr->status = EReaderHandleTransfer(1, mgr->size, mgr->data, 0);
@@ -161,32 +149,32 @@ static bool32 IsEReaderConnectionSane(void)
return FALSE;
}
-u32 sub_8143770(u8 * r4, u16 * r5)
+static u32 EReaderReceive(u8 * state_p, u16 * receiveDelay)
{
- if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred())
+ if ((*state_p == 3 || *state_p == 4 || *state_p == 5) && HasLinkErrorOccurred())
{
- *r4 = 0;
+ *state_p = 0;
return 3;
}
- switch (*r4)
+ switch (*state_p)
{
case 0:
if (IsLinkMaster() && GetLinkPlayerCount_2() > 1)
{
- *r4 = 1;
+ *state_p = 1;
;
}
else if (JOY_NEW(B_BUTTON))
{
- *r4 = 0;
+ *state_p = 0;
return 1;
}
break;
case 1:
- if (++(*r5) > 5)
+ if (++(*receiveDelay) > 5)
{
- *r5 = 0;
- *r4 = 2;
+ *receiveDelay = 0;
+ *state_p = 2;
}
break;
case 2:
@@ -194,19 +182,19 @@ u32 sub_8143770(u8 * r4, u16 * r5)
{
PlaySE(SE_PINPON);
CheckShouldAdvanceLinkState();
- *r5 = 0;
- *r4 = 3;
+ *receiveDelay = 0;
+ *state_p = 3;
}
else if (JOY_NEW(B_BUTTON))
{
- *r4 = 0;
+ *state_p = 0;
return 1;
}
break;
case 3:
- if (++(*r5) > 30)
+ if (++(*receiveDelay) > 30)
{
- *r4 = 0;
+ *state_p = 0;
return 5;
}
else if (IsLinkConnectionEstablished())
@@ -215,24 +203,24 @@ u32 sub_8143770(u8 * r4, u16 * r5)
{
if (IsLinkPlayerDataExchangeComplete())
{
- *r4 = 0;
+ *state_p = 0;
return 2;
}
else
- *r4 = 4;
+ *state_p = 4;
}
else
- *r4 = 3;
+ *state_p = 3;
}
break;
case 4:
- sub_800AA80(0);
- *r4 = 5;
+ Link_StartSend5FFFwithParam(0);
+ *state_p = 5;
break;
case 5:
if (!gReceivedRemoteLinkPlayers)
{
- *r4 = 0;
+ *state_p = 0;
return 4;
}
break;
@@ -242,19 +230,19 @@ u32 sub_8143770(u8 * r4, u16 * r5)
void task_add_00_ereader(void)
{
- u8 taskId = CreateTask(sub_8143910, 0);
+ u8 taskId = CreateTask(Task_EReaderComm, 0);
struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
data->state = 0;
- data->t09 = 0;
+ data->textOrReceiveState = 0;
data->t0A = 0;
data->t0B = 0;
data->t0C = 0;
data->t0D = 0;
- data->t00 = 0;
+ data->stateAdvanceDelay = 0;
data->t02 = 0;
data->t04 = 0;
data->t06 = 0;
- data->t0E = 0;
+ data->initialSendResult = 0;
data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2));
}
@@ -273,22 +261,22 @@ static bool32 AdvanceDelayTimerCheckTimeout(u16 * a0, u16 a1)
return FALSE;
}
-void sub_8143910(u8 taskId)
+static void Task_EReaderComm(u8 taskId)
{
struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
switch (data->state)
{
case 0:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE52))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_ReceiveMysteryGiftWithEReader))
data->state = 1;
break;
case 1:
ResetTTDataBuffer();
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
data->state = 2;
break;
case 2:
- if (AdvanceDelayTimerCheckTimeout(&data->t00, 10))
+ if (AdvanceDelayTimerCheckTimeout(&data->stateAdvanceDelay, 10))
data->state = 3;
break;
case 3:
@@ -301,22 +289,22 @@ void sub_8143910(u8 taskId)
data->state = 13;
break;
case 4:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE53))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_SelectConnectFromEReaderMenu))
{
- AddTextPrinterToWindow1(gUnknown_841DE54);
- ResetDelayTimer(&data->t00);
+ AddTextPrinterToWindow1(gJPText_SelectConnectWithGBA);
+ ResetDelayTimer(&data->stateAdvanceDelay);
data->state = 5;
}
break;
case 5:
- if (AdvanceDelayTimerCheckTimeout(&data->t00, 90))
+ if (AdvanceDelayTimerCheckTimeout(&data->stateAdvanceDelay, 90))
{
ResetTTDataBuffer();
data->state = 6;
}
else if (JOY_NEW(B_BUTTON))
{
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
PlaySE(SE_SELECT);
data->state = 23;
}
@@ -326,12 +314,12 @@ void sub_8143910(u8 taskId)
{
PlaySE(SE_SELECT);
CloseLink();
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
data->state = 23;
}
else if (GetLinkPlayerCount_2() > 1)
{
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
CloseLink();
data->state = 7;
}
@@ -339,72 +327,80 @@ void sub_8143910(u8 taskId)
{
PlaySE(SE_SELECT);
CloseLink();
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
data->state = 8;
}
- else if (AdvanceDelayTimerCheckTimeout(&data->t00, 10))
+ else if (AdvanceDelayTimerCheckTimeout(&data->stateAdvanceDelay, 10))
{
CloseLink();
ResetTTDataBuffer();
- ResetDelayTimer(&data->t00);
+ ResetDelayTimer(&data->stateAdvanceDelay);
}
break;
case 7:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7C))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_LinkIsIncorrect))
data->state = 4;
break;
case 8:
- AddTextPrinterToWindow1(gUnknown_841DE95);
- sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start);
+ AddTextPrinterToWindow1(gJPText_Connecting);
+ SendUnknownSerialData_Init(&sMEventSendToEReaderManager, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start);
data->state = 9;
break;
case 9:
- data->t0E = sub_8143674(&gUnknown_3005ED0);
- if (data->t0E != 0)
+ data->initialSendResult = SendUnknownSerialData_Run(&sMEventSendToEReaderManager);
+ if (data->initialSendResult != 0)
data->state = 10;
break;
case 10:
- sub_8143644(&gUnknown_3005ED0);
- if (data->t0E == 3)
+ SendUnknownSerialData_Teardown(&sMEventSendToEReaderManager);
+ if (data->initialSendResult == 3)
+ // Error
data->state = 20;
- else if (data->t0E == 1)
+ else if (data->initialSendResult == 1)
{
- ResetDelayTimer(&data->t00);
- AddTextPrinterToWindow1(gUnknown_841DE9B);
+ // OK
+ ResetDelayTimer(&data->stateAdvanceDelay);
+ AddTextPrinterToWindow1(gJPText_PleaseWaitAMoment);
data->state = 11;
}
else
+ // Try again
data->state = 0;
break;
case 11:
- if (AdvanceDelayTimerCheckTimeout(&data->t00, 840))
+ if (AdvanceDelayTimerCheckTimeout(&data->stateAdvanceDelay, 840))
data->state = 12;
break;
case 12:
ResetTTDataBuffer();
- AddTextPrinterToWindow1(gUnknown_841DE98);
+ AddTextPrinterToWindow1(gJPText_AllowEReaderToLoadCard);
data->state = 13;
break;
case 13:
- switch (sub_8143770(&data->t09, &data->t00))
+ switch (EReaderReceive(&data->textOrReceiveState, &data->stateAdvanceDelay))
{
case 0:
+ // Running
break;
case 2:
- AddTextPrinterToWindow1(gUnknown_841DE95);
+ // Done
+ AddTextPrinterToWindow1(gJPText_Connecting);
data->state = 14;
break;
case 1:
+ // Cancelled
PlaySE(SE_SELECT);
CloseLink();
data->state = 23;
break;
case 5:
+ // Error Try Again
CloseLink();
data->state = 21;
break;
case 3:
case 4:
+ // Error CheckLink
CloseLink();
data->state = 20;
break;
@@ -423,14 +419,14 @@ void sub_8143910(u8 taskId)
}
break;
case 15:
- data->t0E = ValidateTrainerTowerData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
- sub_800AA80(data->t0E);
+ data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
+ Link_StartSend5FFFwithParam(data->initialSendResult);
data->state = 16;
break;
case 16:
if (!gReceivedRemoteLinkPlayers)
{
- if (data->t0E == 1)
+ if (data->initialSendResult == 1)
data->state = 17;
else
data->state = 20;
@@ -439,39 +435,39 @@ void sub_8143910(u8 taskId)
case 17:
if (CEReaderTool_SaveTrainerTower((struct EReaderTrainerHillSet *)gDecompressionBuffer))
{
- AddTextPrinterToWindow1(gUnknown_841DE99);
- ResetDelayTimer(&data->t00);
+ AddTextPrinterToWindow1(gJPText_ConnectionComplete);
+ ResetDelayTimer(&data->stateAdvanceDelay);
data->state = 18;
}
else
data->state = 22;
break;
case 18:
- if (AdvanceDelayTimerCheckTimeout(&data->t00, 120))
+ if (AdvanceDelayTimerCheckTimeout(&data->stateAdvanceDelay, 120))
{
- AddTextPrinterToWindow1(gUnknown_841DE9A);
- PlayFanfare(258);
+ AddTextPrinterToWindow1(gJPText_NewTrainerHasComeToSevii);
+ PlayFanfare(MUS_FANFA4);
data->state = 19;
}
break;
case 19:
- if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON))
+ if (IsFanfareTaskInactive() && JOY_NEW(A_BUTTON | B_BUTTON))
data->state = 26;
break;
case 23:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7D))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_CardReadingHasBeenHalted))
data->state = 26;
break;
case 20:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE96))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_ConnectionErrorCheckLink))
data->state = 0;
break;
case 21:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE97))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_ConnectionErrorTryAgain))
data->state = 0;
break;
case 22:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE9C))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textOrReceiveState, gJPText_WriteErrorUnableToSaveData))
data->state = 0;
break;
case 26:
@@ -483,10 +479,10 @@ void sub_8143910(u8 taskId)
}
}
-void sub_8143D24(void)
+void InitMEventData(void)
{
CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers, sizeof(gSaveBlock1Ptr->mysteryEventBuffers));
- sub_8143ED0();
+ BlankMENewsJisan();
EC_ResetMEventProfileMaybe();
}
@@ -517,14 +513,14 @@ u16 * GetMEventProfileECWordsMaybe(void)
void DestroyWonderNews(void)
{
- sub_8143E9C();
+ BlankWonderNews();
}
-bool32 sub_8143DC8(const struct MEWonderNewsData * src)
+bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct MEWonderNewsData * src)
{
- if (!sub_8143E64(src))
+ if (!IsReceivedWonderNewsHeaderValid(src))
return FALSE;
- sub_8143E9C();
+ BlankWonderNews();
gSaveBlock1Ptr->mysteryEventBuffers.menews.data = *src;
gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData));
return TRUE;
@@ -534,14 +530,14 @@ bool32 ValidateReceivedWonderNews(void)
{
if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData)) != gSaveBlock1Ptr->mysteryEventBuffers.menews.crc)
return FALSE;
- if (!sub_8143E64(&gSaveBlock1Ptr->mysteryEventBuffers.menews.data))
+ if (!IsReceivedWonderNewsHeaderValid(&gSaveBlock1Ptr->mysteryEventBuffers.menews.data))
return FALSE;
return TRUE;
}
-bool32 sub_8143E64(const struct MEWonderNewsData * data)
+static bool32 IsReceivedWonderNewsHeaderValid(const struct MEWonderNewsData * data)
{
- if (data->unk_00 == 0)
+ if (data->newsId == 0)
return FALSE;
return TRUE;
}
@@ -549,24 +545,24 @@ bool32 sub_8143E64(const struct MEWonderNewsData * data)
bool32 WonderNews_Test_Unk_02(void)
{
const struct MEWonderNewsData * data = &gSaveBlock1Ptr->mysteryEventBuffers.menews.data;
- if (data->unk_02 == 0)
+ if (data->shareState == 0)
return FALSE;
return TRUE;
}
-void sub_8143E9C(void)
+static void BlankWonderNews(void)
{
CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->mysteryEventBuffers.menews.data));
gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = 0;
}
-void sub_8143ED0(void)
+static void BlankMENewsJisan(void)
{
CpuFill32(0, GetMENewsJisanStructPtr(), sizeof(struct MENewsJisanStruct));
MENewsJisanReset();
}
-bool32 sub_8143EF4(const u8 * src)
+bool32 MEvent_HaveAlreadyReceivedWonderNews(const u8 * src)
{
const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data;
u32 i;
@@ -584,22 +580,23 @@ void DestroyWonderCard(void)
{
BlankSavedWonderCard();
BlankMEventBuffer2();
- sub_8144790();
+ BlankBuffer344();
ClearRamScript();
- sub_806E2D0();
- sub_806E370();
+ ResetMysteryEventFlags();
+ ResetMysteryEventVars();
ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
}
-bool32 sub_8143F68(const struct MEWonderCardData * data)
+bool32 OverwriteSavedWonderCardWithReceivedCard(const struct MEWonderCardData * data)
{
struct MEventBuffer_3430_Sub * r2;
struct MEWonderCardData * r1;
- if (!sub_8144018(data))
+ if (!IsReceivedWonderCardHeaderValid(data))
return FALSE;
DestroyWonderCard();
memcpy(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, data, sizeof(struct MEWonderCardData));
gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData));
+ // Annoying hack to match
r2 = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
r1 = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
r2->unk_06 = r1->unk_02;
@@ -610,24 +607,24 @@ bool32 ValidateReceivedWonderCard(void)
{
if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData)))
return FALSE;
- if (!sub_8144018(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data))
+ if (!IsReceivedWonderCardHeaderValid(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data))
return FALSE;
- if (!sub_8069DFC())
+ if (!ValidateRamScript())
return FALSE;
return TRUE;
}
-bool32 sub_8144018(const struct MEWonderCardData * data)
+static bool32 IsReceivedWonderCardHeaderValid(const struct MEWonderCardData * data)
{
- if (data->unk_00 == 0)
+ if (data->cardId == 0)
return FALSE;
if (data->unk_08_0 > 2)
return FALSE;
- if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2))
+ if (!(data->shareState == 0 || data->shareState == 1 || data->shareState == 2))
return FALSE;
if (data->unk_08_2 > 7)
return FALSE;
- if (data->unk_09 > 7)
+ if (data->recvMonCapacity > 7)
return FALSE;
return TRUE;
}
@@ -635,18 +632,18 @@ bool32 sub_8144018(const struct MEWonderCardData * data)
bool32 WonderCard_Test_Unk_08_6(void)
{
const struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
- if (data->unk_08_6 == 0)
+ if (data->shareState == 0)
return FALSE;
return TRUE;
}
-void BlankSavedWonderCard(void)
+static void BlankSavedWonderCard(void)
{
CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData));
gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = 0;
}
-void BlankMEventBuffer2(void)
+static void BlankMEventBuffer2(void)
{
CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16));
gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0;
@@ -655,17 +652,17 @@ void BlankMEventBuffer2(void)
u16 GetWonderCardFlagId(void)
{
if (ValidateReceivedWonderCard())
- return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00;
+ return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.cardId;
return 0;
}
-void sub_814410C(struct MEWonderCardData * buffer)
+void MEvent_WonderCardResetUnk08_6(struct MEWonderCardData * buffer)
{
- if (buffer->unk_08_6 == 1)
- buffer->unk_08_6 = 0;
+ if (buffer->shareState == 1)
+ buffer->shareState = 0;
}
-bool32 sub_8144124(u16 a0)
+static bool32 IsCardIdInValidRange(u16 a0)
{
if (a0 >= 1000 && a0 < 1020)
return TRUE;
@@ -675,33 +672,33 @@ bool32 sub_8144124(u16 a0)
bool32 CheckReceivedGiftFromWonderCard(void)
{
u16 value = GetWonderCardFlagId();
- if (!sub_8144124(value))
+ if (!IsCardIdInValidRange(value))
return FALSE;
- if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
+ if (FlagGet(sGiftItemFlagIds[value - 1000]) == TRUE)
return FALSE;
return TRUE;
}
-s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size)
+static s32 CountReceivedDistributionMons(const struct MEventBuffer_3430_Sub * data, s32 size)
{
s32 r3 = 0;
s32 i;
for (i = 0; i < size; i++)
{
- if (data->unk_08[1][i] && data->unk_08[0][i])
+ if (data->distributedMons[1][i] && data->distributedMons[0][i])
r3++;
}
return r3;
}
-bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size)
+static bool32 HasPlayerAlreadyReceivedDistributedMon(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size)
{
s32 i;
for (i = 0; i < size; i++)
{
- if (data1->unk_08[1][i] == data2[1])
+ if (data1->distributedMons[1][i] == data2[1])
return TRUE;
- if (data1->unk_08[0][i] == data2[0])
+ if (data1->distributedMons[0][i] == data2[0])
return TRUE;
}
return FALSE;
@@ -718,7 +715,7 @@ static bool32 IsWonderCardSpeciesValid(const u16 * data)
return TRUE;
}
-s32 sub_8144218(void)
+static s32 ValidateCardAndCountMonsReceived(void)
{
struct MEWonderCardData * data;
if (!ValidateReceivedWonderCard())
@@ -726,24 +723,24 @@ s32 sub_8144218(void)
data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 != 1)
return 0;
- return sub_8144184(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data->unk_09);
+ return CountReceivedDistributionMons(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data->recvMonCapacity);
}
-bool32 sub_8144254(const u16 * data)
+bool32 MEvent_ReceiveDistributionMon(const u16 * data)
{
struct MEWonderCardData * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
- s32 size = buffer->unk_09;
+ s32 capacity = buffer->recvMonCapacity;
s32 i;
if (!IsWonderCardSpeciesValid(data))
return FALSE;
- if (sub_81441AC(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data, size))
+ if (HasPlayerAlreadyReceivedDistributedMon(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data, capacity))
return FALSE;
- for (i = 0; i < size; i++)
+ for (i = 0; i < capacity; i++)
{
- if (gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[0][i] == 0)
+ if (gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[1][i] == 0 && gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[0][i] == 0)
{
- gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[1][i] = data[1];
- gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[0][i] = data[0];
+ gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[1][i] = data[1];
+ gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[0][i] = data[0];
return TRUE;
}
}
@@ -771,9 +768,9 @@ void BuildMEventClientHeader(struct MEventClientHeaderStruct * data)
if (ValidateReceivedWonderCard())
{
// Populate fields
- data->id = GetSavedWonderCard()->unk_00;
+ data->id = GetSavedWonderCard()->cardId;
data->unk_20 = *sav1_get_mevent_buffer_2();
- data->unk_44 = GetSavedWonderCard()->unk_09;
+ data->maxDistributionMons = GetSavedWonderCard()->recvMonCapacity;
}
else
data->id = 0;
@@ -815,14 +812,14 @@ u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void
return 2;
}
-u32 sub_8144434(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused)
+u32 MEvent_CanPlayerReceiveDistributionMon(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused)
{
- s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
- if (r4 == 0)
+ s32 numSpaces = a1->maxDistributionMons - CountReceivedDistributionMons(&a1->unk_20, a1->maxDistributionMons);
+ if (numSpaces == 0)
return 1;
- if (sub_81441AC(&a1->unk_20, a0, a1->unk_44))
+ if (HasPlayerAlreadyReceivedDistributedMon(&a1->unk_20, a0, a1->maxDistributionMons))
return 3;
- if (r4 == 1)
+ if (numSpaces == 1)
return 4;
return 2;
}
@@ -838,9 +835,9 @@ bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1)
return TRUE;
}
-s32 sub_814449C(const struct MEventClientHeaderStruct * a0)
+static s32 GetNumReceivedDistributionMons(const struct MEventClientHeaderStruct * a0)
{
- return sub_8144184(&a0->unk_20, a0->unk_44);
+ return CountReceivedDistributionMons(&a0->unk_20, a0->maxDistributionMons);
}
u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command)
@@ -848,22 +845,23 @@ u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command)
switch (command)
{
case 0:
- return a0->unk_20.unk_00;
+ return a0->unk_20.linkWins;
case 1:
- return a0->unk_20.unk_02;
+ return a0->unk_20.linkLosses;
case 2:
- return a0->unk_20.unk_04;
+ return a0->unk_20.linkTrades;
case 3:
- return sub_814449C(a0);
+ return GetNumReceivedDistributionMons(a0);
case 4:
- return a0->unk_44;
+ return a0->maxDistributionMons;
default:
AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 825);
return 0;
}
}
-void sub_814451C(u32 command)
+// Increments an interaction count in the save block
+static void IncrementBattleCardCount(u32 command)
{
struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 2)
@@ -872,13 +870,13 @@ void sub_814451C(u32 command)
switch (command)
{
case 0:
- dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_00;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkWins;
break;
case 1:
- dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_02;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkLosses;
break;
case 2:
- dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_04;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkTrades;
break;
case 3:
break;
@@ -896,7 +894,7 @@ void sub_814451C(u32 command)
}
}
-u16 sub_81445C0(u32 command)
+u16 MEvent_GetBattleCardCount(u32 command)
{
switch (command)
{
@@ -906,7 +904,7 @@ u16 sub_81445C0(u32 command)
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
- return buffer->unk_00;
+ return buffer->linkWins;
}
break;
}
@@ -916,7 +914,7 @@ u16 sub_81445C0(u32 command)
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
- return buffer->unk_02;
+ return buffer->linkLosses;
}
break;
}
@@ -926,7 +924,7 @@ u16 sub_81445C0(u32 command)
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
- return buffer->unk_04;
+ return buffer->linkTrades;
}
break;
}
@@ -934,14 +932,14 @@ u16 sub_81445C0(u32 command)
{
struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 1)
- return sub_8144218();
+ return ValidateCardAndCountMonsReceived();
break;
}
case 4:
{
struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 1)
- return data->unk_09;
+ return data->recvMonCapacity;
break;
}
}
@@ -951,36 +949,36 @@ u16 sub_81445C0(u32 command)
void sub_81446C4(void)
{
- gUnknown_203F3BC = FALSE;
+ sReceivedWonderCardIsValid = FALSE;
}
-bool32 sub_81446D0(u16 a0)
+bool32 sub_81446D0(u16 cardId)
{
- gUnknown_203F3BC = FALSE;
- if (a0 == 0)
+ sReceivedWonderCardIsValid = FALSE;
+ if (cardId == 0)
return FALSE;
if (!ValidateReceivedWonderCard())
return FALSE;
- if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00 != a0)
+ if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.cardId != cardId)
return FALSE;
- gUnknown_203F3BC = TRUE;
+ sReceivedWonderCardIsValid = TRUE;
return TRUE;
}
-void sub_8144714(u32 a0, u32 a1)
+void sub_8144714(u32 eventId, u32 trainerId)
{
- if (gUnknown_203F3BC)
+ if (sReceivedWonderCardIsValid)
{
- switch (a0)
+ switch (eventId)
{
case 2:
- sub_8144824(2, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[1], 5);
+ RecordIdOfWonderCardSender(2, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[1], 5);
break;
case 0:
- sub_8144824(0, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
+ RecordIdOfWonderCardSender(0, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
break;
case 1:
- sub_8144824(1, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
+ RecordIdOfWonderCardSender(1, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
break;
default:
AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 988);
@@ -988,43 +986,48 @@ void sub_8144714(u32 a0, u32 a1)
}
}
-void sub_8144790(void)
+static void BlankBuffer344(void)
{
CpuFill32(0, gSaveBlock1Ptr->mysteryEventBuffers.unk_344, sizeof(gSaveBlock1Ptr->mysteryEventBuffers.unk_344));
}
-bool32 sub_81447BC(u32 a0, u32 * a1, s32 size)
+// Looks up trainerId in an array idsList with count elements.
+// If trainerId is found, rearranges idsList to put it in the front.
+// Otherwise, drops the last element of the list and inserts
+// trainerId at the front.
+// Returns TRUE in the latter case.
+static bool32 PlaceTrainerIdAtFrontOfList(u32 trainerId, u32 * idsList, s32 count)
{
s32 i;
s32 j;
- for (i = 0; i < size; i++)
+ for (i = 0; i < count; i++)
{
- if (a1[i] == a0)
+ if (idsList[i] == trainerId)
break;
}
- if (i == size)
+ if (i == count)
{
- for (j = size - 1; j > 0; j--)
+ for (j = count - 1; j > 0; j--)
{
- a1[j] = a1[j - 1];
+ idsList[j] = idsList[j - 1];
}
- a1[0] = a0;
+ idsList[0] = trainerId;
return TRUE;
}
else
{
for (j = i; j > 0; j--)
{
- a1[j] = a1[j - 1];
+ idsList[j] = idsList[j - 1];
}
- a1[0] = a0;
+ idsList[0] = trainerId;
return FALSE;
}
}
-void sub_8144824(u32 a0, u32 a1, u32 * a2, s32 a3)
+static void RecordIdOfWonderCardSender(u32 eventId, u32 trainerId, u32 * idsList, s32 count)
{
- if (sub_81447BC(a1, a2, a3))
- sub_814451C(a0);
+ if (PlaceTrainerIdAtFrontOfList(trainerId, idsList, count))
+ IncrementBattleCardCount(eventId);
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
deleted file mode 100644
index 3de09ab44..000000000
--- a/src/mevent_8145654.c
+++ /dev/null
@@ -1,793 +0,0 @@
-#include "global.h"
-#include "constants/species.h"
-#include "bg.h"
-#include "gpu_regs.h"
-#include "palette.h"
-#include "decompress.h"
-#include "malloc.h"
-#include "menu.h"
-#include "new_menu_helpers.h"
-#include "pokemon_icon.h"
-#include "mystery_gift_menu.h"
-#include "menu_indicators.h"
-#include "string_util.h"
-#include "link_rfu.h"
-#include "mevent.h"
-#include "battle_anim.h"
-
-struct UnkStruct_8467FB8
-{
- u8 textPal1:4;
- u8 textPal2:4;
- u8 textPal3:4;
- u8 textPal4:4;
- const u8 * tiles;
- const u8 * map;
- const u16 * pal;
-};
-
-struct UnkStruct_203F3C8_02DC
-{
- u8 unk_00;
- u8 unk_01[41];
- u8 unk_42[4];
-};
-
-struct UnkStruct_203F3C8
-{
- /*0000*/ struct MEWonderCardData unk_0000;
- /*014c*/ struct MEventBuffer_3430_Sub unk_014C;
- /*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
- /*0174*/ u8 unk_0174;
- /*0175*/ u8 unk_0175;
- /*0176*/ u16 unk_0176[3];
- /*017C*/ u8 unk_017C;
- /*017D*/ u8 unk_017D[7][2];
- /*018B*/ u8 unk_018B[41];
- /*01B4*/ u8 unk_01B4[41];
- /*01DD*/ u8 unk_01DD[7];
- /*01E4*/ u8 unk_01E4[4][41];
- /*0288*/ u8 unk_0288[41];
- /*02B1*/ u8 unk_02B1[41];
- /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8];
- /*045C*/ u8 buffer_045C[0x1000];
-};
-
-EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL;
-
-void sub_8145A98(void);
-void sub_8145D18(u8 whichWindow);
-void sub_8146060(void);
-void sub_81461D8(void);
-
-const u8 gUnknown_8467068[][3] = {
- {0, 2, 3},
- {0, 1, 2}
-};
-const u8 ALIGNED(4) gUnknown_8467070[3] = {7, 4, 7};
-const struct WindowTemplate gUnknown_8467074[] = {
- {0x01, 0x01, 0x01, 0x19, 0x04, 0x0f, 0x029c},
- {0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f, 0x01bc},
- {0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f, 0x0130}
-};
-
-const u16 gUnknown_846708C[] = INCBIN_U16("data/graphics/mevent/pal_46708C.gbapal");
-const u16 gUnknown_84670AC[] = INCBIN_U16("data/graphics/mevent/pal_4670AC.gbapal");
-const u16 gUnknown_84670CC[] = INCBIN_U16("data/graphics/mevent/pal_4670CC.gbapal");
-const u16 gUnknown_84670EC[] = INCBIN_U16("data/graphics/mevent/pal_4670EC.gbapal");
-const u16 gUnknown_846710C[] = INCBIN_U16("data/graphics/mevent/pal_46710C.gbapal");
-const u16 gUnknown_846712C[] = INCBIN_U16("data/graphics/mevent/pal_46712C.gbapal");
-const u16 gUnknown_846714C[] = INCBIN_U16("data/graphics/mevent/pal_46714C.gbapal");
-const u16 gUnknown_846716C[] = INCBIN_U16("data/graphics/mevent/pal_46716C.gbapal");
-const u8 gUnknown_846718C[] = INCBIN_U8("data/graphics/mevent/gfx_46718C.4bpp.lz");
-const u8 gUnknown_8467288[] = INCBIN_U8("data/graphics/mevent/tilemap_467288.bin.lz");
-const u8 gUnknown_846737C[] = INCBIN_U8("data/graphics/mevent/gfx_46737C.4bpp.lz");
-const u8 gUnknown_8467470[] = INCBIN_U8("data/graphics/mevent/tilemap_467470.bin.lz");
-const u8 gUnknown_8467558[] = INCBIN_U8("data/graphics/mevent/gfx_467558.4bpp.lz");
-const u8 gUnknown_846762C[] = INCBIN_U8("data/graphics/mevent/tilemap_46762C.bin.lz");
-const u8 gUnknown_8467700[] = INCBIN_U8("data/graphics/mevent/gfx_467700.4bpp.lz");
-const u8 gUnknown_8467934[] = INCBIN_U8("data/graphics/mevent/tilemap_467934.bin.lz");
-const u8 gUnknown_8467A7C[] = INCBIN_U8("data/graphics/mevent/gfx_467A7C.4bpp.lz");
-const u8 gUnknown_8467CAC[] = INCBIN_U8("data/graphics/mevent/tilemap_467CAC.bin.lz");
-const u16 gUnknown_8467DF4[] = INCBIN_U16("data/graphics/mevent/pal_467DF4.gbapal");
-const u16 gUnknown_8467E14[] = INCBIN_U16("data/graphics/mevent/pal_467E14.gbapal");
-const u16 gUnknown_8467E34[] = INCBIN_U16("data/graphics/mevent/pal_467E34.gbapal");
-const u16 gUnknown_8467E54[] = INCBIN_U16("data/graphics/mevent/pal_467E54.gbapal");
-const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapal");
-const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal");
-const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal");
-const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal");
-const u32 gUnknown_8467EF4[] = INCBIN_U32("data/graphics/mevent/gfx_467EF4.4bpp.lz");
-
-const struct CompressedSpriteSheet gUnknown_8467F58 = {
- gUnknown_8467EF4, 0x100, 0x8000
-};
-const struct SpritePalette gUnknown_8467F60[] = {
- {gUnknown_8467DF4, 0x8000},
- {gUnknown_8467E14, 0x8000},
- {gUnknown_8467E34, 0x8000},
- {gUnknown_8467E54, 0x8000},
- {gUnknown_8467E74, 0x8000},
- {gUnknown_8467E94, 0x8000},
- {gUnknown_8467EB4, 0x8000},
- {gUnknown_8467ED4, 0x8000}
-};
-const struct SpriteTemplate gUnknown_8467FA0 = {
- 0x8000, 0x8000, &gOamData_AffineOff_ObjNormal_32x16, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-};
-const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = {
- {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C},
- {1, 0, 0, 1, gUnknown_846737C, gUnknown_8467470, gUnknown_84670AC},
- {1, 0, 0, 2, gUnknown_8467558, gUnknown_846762C, gUnknown_84670CC},
- {1, 0, 0, 3, gUnknown_8467558, gUnknown_846762C, gUnknown_84670EC},
- {1, 0, 0, 4, gUnknown_8467558, gUnknown_846762C, gUnknown_846710C},
- {1, 0, 0, 5, gUnknown_8467558, gUnknown_846762C, gUnknown_846712C},
- {1, 0, 0, 6, gUnknown_8467700, gUnknown_8467934, gUnknown_846714C},
- {1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C}
-};
-
-bool32 InitWonderCardResources(struct MEWonderCardData * r5, struct MEventBuffer_3430_Sub * r6)
-{
- if (r5 == NULL || r6 == NULL)
- return FALSE;
- gUnknown_203F3C8 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
- if (gUnknown_203F3C8 == NULL)
- return FALSE;
- gUnknown_203F3C8->unk_0000 = *r5;
- gUnknown_203F3C8->unk_014C = *r6;
- if (gUnknown_203F3C8->unk_0000.unk_08_2 >= NELEMS(gUnknown_8467FB8))
- gUnknown_203F3C8->unk_0000.unk_08_2 = 0;
- if (gUnknown_203F3C8->unk_0000.unk_08_0 >= NELEMS(gUnknown_8467070))
- gUnknown_203F3C8->unk_0000.unk_08_0 = 0;
- if (gUnknown_203F3C8->unk_0000.unk_09 > NELEMS(gUnknown_203F3C8->unk_017D))
- gUnknown_203F3C8->unk_0000.unk_09 = 0;
- gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2];
- return TRUE;
-}
-
-void DestroyWonderCardResources(void)
-{
- if (gUnknown_203F3C8 != NULL)
- {
- *gUnknown_203F3C8 = (struct UnkStruct_203F3C8){};
- Free(gUnknown_203F3C8);
- gUnknown_203F3C8 = NULL;
- }
-}
-
-s32 FadeToWonderCardMenu(void)
-{
- if (gUnknown_203F3C8 == NULL)
- return -1;
- switch(gUnknown_203F3C8->unk_0174)
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- break;
- case 1:
- if (UpdatePaletteFade())
- return 0;
- break;
- case 2:
- FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(1);
- CopyBgTilemapBufferToVram(2);
- DecompressAndCopyTileDataToVram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
- gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]);
- gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]);
- gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]);
- break;
- case 3:
- if (FreeTempTileDataBuffersIfPossible())
- return 0;
- gPaletteFade.bufferTransferDisabled = TRUE;
- LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20);
- LZ77UnCompWram(gUnknown_203F3C8->unk_0170->map, gUnknown_203F3C8->buffer_045C);
- CopyRectToBgTilemapBufferRect(2, gUnknown_203F3C8->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
- CopyBgTilemapBufferToVram(2);
- break;
- case 4:
- sub_8145A98();
- break;
- case 5:
- sub_8145D18(0);
- sub_8145D18(1);
- sub_8145D18(2);
- CopyBgTilemapBufferToVram(1);
- break;
- case 6:
- LoadMonIconPalettes();
- break;
- case 7:
- ShowBg(1);
- ShowBg(2);
- gPaletteFade.bufferTransferDisabled = FALSE;
- sub_8146060();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- UpdatePaletteFade();
- break;
- default:
- if (UpdatePaletteFade())
- return 0;
- gUnknown_203F3C8->unk_0174 = 0;
- return 1;
- }
- ++gUnknown_203F3C8->unk_0174;
- return 0;
-}
-
-s32 FadeOutFromWonderCard(bool32 flag)
-{
- if (gUnknown_203F3C8 == NULL)
- return -1;
- switch (gUnknown_203F3C8->unk_0174)
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- break;
- case 1:
- if (UpdatePaletteFade())
- return 0;
- break;
- case 2:
- FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(1);
- CopyBgTilemapBufferToVram(2);
- break;
- case 3:
- HideBg(1);
- HideBg(2);
- RemoveWindow(gUnknown_203F3C8->unk_0176[2]);
- RemoveWindow(gUnknown_203F3C8->unk_0176[1]);
- RemoveWindow(gUnknown_203F3C8->unk_0176[0]);
- break;
- case 4:
- sub_81461D8();
- FreeMonIconPalettes();
- break;
- case 5:
- PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
- break;
- case 6:
- CopyBgTilemapBufferToVram(0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- break;
- default:
- if (UpdatePaletteFade())
- return 0;
- gUnknown_203F3C8->unk_0174 = 0;
- return 1;
- }
- ++gUnknown_203F3C8->unk_0174;
- return 0;
-}
-
-void sub_8145A98(void)
-{
- u16 i = 0;
- u16 r6;
- u16 sp0[3] = {0, 0, 0};
-
- memcpy(gUnknown_203F3C8->unk_018B, gUnknown_203F3C8->unk_0000.unk_0A, 40);
- gUnknown_203F3C8->unk_018B[40] = EOS;
- memcpy(gUnknown_203F3C8->unk_01B4, gUnknown_203F3C8->unk_0000.unk_32, 40);
- gUnknown_203F3C8->unk_01B4[40] = EOS;
- if (gUnknown_203F3C8->unk_0000.unk_04 > 999999)
- gUnknown_203F3C8->unk_0000.unk_04 = 999999;
- ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_01DD, gUnknown_203F3C8->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
- for (i = 0; i < 4; i++)
- {
- memcpy(gUnknown_203F3C8->unk_01E4[i], gUnknown_203F3C8->unk_0000.unk_5A[i], 40);
- gUnknown_203F3C8->unk_01E4[i][40] = EOS;
- }
- memcpy(gUnknown_203F3C8->unk_0288, gUnknown_203F3C8->unk_0000.unk_FA, 40);
- gUnknown_203F3C8->unk_0288[40] = EOS;
- switch (gUnknown_203F3C8->unk_0000.unk_08_0)
- {
- case 0:
- memcpy(gUnknown_203F3C8->unk_02B1, gUnknown_203F3C8->unk_0000.unk_122, 40);
- gUnknown_203F3C8->unk_02B1[40] = EOS;
- break;
- case 1:
- gUnknown_203F3C8->unk_02B1[00] = EOS;
- break;
- case 2:
- gUnknown_203F3C8->unk_02B1[00] = EOS;
- sp0[0] = gUnknown_203F3C8->unk_014C.unk_00 < 999 ? gUnknown_203F3C8->unk_014C.unk_00 : 999;
- sp0[1] = gUnknown_203F3C8->unk_014C.unk_02 < 999 ? gUnknown_203F3C8->unk_014C.unk_02 : 999;
- sp0[2] = gUnknown_203F3C8->unk_014C.unk_04 < 999 ? gUnknown_203F3C8->unk_014C.unk_04 : 999;
- for (i = 0; i < 8; i++)
- {
- memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4);
- memset(gUnknown_203F3C8->unk_02DC[i].unk_01, EOS, 41);
- }
- for (i = 0, r6 = 0; i < 40; i++)
- {
- if (gUnknown_203F3C8->unk_0000.unk_122[i] != 0xF7)
- {
- gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_01[r6] = gUnknown_203F3C8->unk_0000.unk_122[i];
- r6++;
- }
- else
- {
- u8 r3 = gUnknown_203F3C8->unk_0000.unk_122[i + 1];
- if (r3 > 2)
- {
- i += 2;
- }
- else
- {
- ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
- gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_00 = gUnknown_203F3C8->unk_0000.unk_122[i + 2];
- gUnknown_203F3C8->unk_0175++;
- if (gUnknown_203F3C8->unk_0175 > 7)
- break;
- r6 = 0;
- i += 2;
- }
- }
- }
- }
-}
-
-void sub_8145D18(u8 whichWindow)
-{
- s8 sp0C = 0;
- s32 windowId = gUnknown_203F3C8->unk_0176[whichWindow];
- PutWindowTilemap(windowId);
- FillWindowPixelBuffer(windowId, 0);
- switch (whichWindow)
- {
- case 0:
- {
- s32 x;
- AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B);
- x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2));
- if (x < 0)
- x = 0;
- AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4);
- if (gUnknown_203F3C8->unk_0000.unk_04 != 0)
- {
- AddTextPrinterParameterized3(windowId, 2, 166, 17, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD);
- }
- break;
- }
- case 1:
- for (; sp0C < 4; sp0C++)
- {
- AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]);
- }
- break;
- case 2:
- AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288);
- if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2)
- {
- AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1);
- }
- else
- {
- s32 x = 0;
- s32 y = gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0] + 16;
- s32 spacing = GetFontAttribute(3, 2);
- for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++)
- {
- AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01);
- if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS)
- {
- x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing);
- AddTextPrinterParameterized3(windowId, 2, x, y, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42);
- x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00;
- }
- }
- }
- break;
- }
- CopyWindowToVram(windowId, 3);
-}
-
-void sub_8146060(void)
-{
- u8 r7 = 0;
- gUnknown_203F3C8->unk_017C = 0xFF;
- if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE)
- {
- gUnknown_203F3C8->unk_017C = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
- gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2;
- }
- if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
- {
- LoadCompressedSpriteSheetUsingHeap(&gUnknown_8467F58);
- LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]);
- for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++)
- {
- gUnknown_203F3C8->unk_017D[r7][0] = 0xFF;
- gUnknown_203F3C8->unk_017D[r7][1] = 0xFF;
- gUnknown_203F3C8->unk_017D[r7][0] = CreateSprite(&gUnknown_8467FA0, 0xd8 - 32 * r7, 0x90, 8);
- if (gUnknown_203F3C8->unk_014C.unk_08[0][r7] != 0)
- {
- gUnknown_203F3C8->unk_017D[r7][1] = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
- gSprites[gUnknown_203F3C8->unk_017D[r7][1]].oam.priority = 2;
- }
- }
- }
-}
-
-void sub_81461D8(void)
-{
- u8 r6 = 0;
- if (gUnknown_203F3C8->unk_017C != 0xFF)
- DestroyMonIcon(&gSprites[gUnknown_203F3C8->unk_017C]);
- if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
- {
- for (; r6 < gUnknown_203F3C8->unk_0000.unk_09; r6++)
- {
- if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF)
- {
- DestroySprite(&gSprites[gUnknown_203F3C8->unk_017D[r6][0]]);
- // This might be a typo. Uncomment the next line, and comment the one that follows, to get the presumed intended behavior.
- // if (gUnknown_203F3C8->unk_017D[r6][1] != 0xFF)
- if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF)
- {
- DestroyMonIcon(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]);
- }
- }
- }
- FreeSpriteTilesByTag(0x8000);
- FreeSpritePaletteByTag(0x8000);
- }
-}
-
-struct UnkStruct_203F3CC
-{
- /*0000*/ struct MEWonderNewsData unk_0000;
- /*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC;
- /*01c0*/ u8 unk_01C0_0:1;
- u8 unk_01C0_1:7;
- /*01c1*/ u8 unk_01C1;
- /*01c2*/ u8 unk_01C2_0:1;
- u8 unk_01C2_1:7;
- /*01c3*/ u8 unk_01C3_0:1;
- u8 unk_01C3_1:7;
- /*01c4*/ u16 unk_01C4;
- /*01c6*/ u16 unk_01C6;
- /*01c8*/ u16 unk_01C8[2];
- /*01cc*/ u8 filler_01CC[2];
- /*01ce*/ u8 unk_01CE[41];
- /*01f7*/ u8 unk_01F7[10][41];
- /*0394*/ struct ScrollArrowsTemplate unk_0394;
- /*03a4*/ u8 buffer_03A4[0x1000];
-};
-
-EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL;
-
-void sub_8146980(void);
-void sub_8146A30(void);
-void sub_8146B58(void);
-
-const u8 gUnknown_8468038[][3] = {
- {0, 2, 3},
- {0, 1, 2}
-};
-const struct WindowTemplate gUnknown_8468040[] = {
- {0, 1, 0, 28, 3, 15, 0x000},
- {2, 1, 3, 28, 20, 15, 0x000}
-};
-const struct ScrollArrowsTemplate gUnknown_8468050 = {
- 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
- 0x0000, 0x0002, 0x1000, 0x1000, 0x0,
-};
-
-const u16 gUnknown_8468060[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal");
-const u16 gUnknown_8468080[] = INCBIN_U16("data/graphics/mevent/pal_468080.gbapal");
-const u16 gUnknown_84680A0[] = INCBIN_U16("data/graphics/mevent/pal_4680A0.gbapal");
-const u8 gUnknown_84680C0[] = INCBIN_U8("data/graphics/mevent/gfx_4680C0.4bpp.lz");
-const u8 gUnknown_8468140[] = INCBIN_U8("data/graphics/mevent/tilemap_468140.bin.lz");
-const u8 gUnknown_846821C[] = INCBIN_U8("data/graphics/mevent/gfx_46821C.4bpp.lz");
-const u8 gUnknown_846824C[] = INCBIN_U8("data/graphics/mevent/tilemap_46824C.bin.lz");
-const u8 gUnknown_846830C[] = INCBIN_U8("data/graphics/mevent/gfx_46830C.4bpp.lz");
-const u8 gUnknown_846837C[] = INCBIN_U8("data/graphics/mevent/tilemap_46837C.bin.lz");
-const u8 gUnknown_8468448[] = INCBIN_U8("data/graphics/mevent/gfx_468448.4bpp.lz");
-const u8 gUnknown_84684D8[] = INCBIN_U8("data/graphics/mevent/tilemap_4684D8.bin.lz");
-const u8 gUnknown_84685B4[] = INCBIN_U8("data/graphics/mevent/gfx_4685B4.4bpp.lz");
-const u8 gUnknown_8468644[] = INCBIN_U8("data/graphics/mevent/tilemap_468644.bin.lz");
-
-const struct UnkStruct_8467FB8 gUnknown_8468720[] = {
- {1, 0, 0, 0, gUnknown_84680C0, gUnknown_8468140, gUnknown_8468060},
- {1, 0, 0, 0, gUnknown_846821C, gUnknown_846824C, gUnknown_84670AC},
- {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670CC},
- {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670EC},
- {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846710C},
- {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846712C},
- {1, 0, 0, 0, gUnknown_8468448, gUnknown_84684D8, gUnknown_8468080},
- {1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0}
-};
-
-bool32 InitWonderNewsResources(const struct MEWonderNewsData * a0)
-{
- if (a0 == NULL)
- return FALSE;
- gUnknown_203F3CC = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
- if (gUnknown_203F3CC == NULL)
- return FALSE;
- gUnknown_203F3CC->unk_0000 = *a0;
- if (gUnknown_203F3CC->unk_0000.unk_03 >= NELEMS(gUnknown_8468720))
- gUnknown_203F3CC->unk_0000.unk_03 = 0;
- gUnknown_203F3CC->unk_01BC = &gUnknown_8468720[gUnknown_203F3CC->unk_0000.unk_03];
- gUnknown_203F3CC->unk_01C1 = 0xFF;
- return TRUE;
-}
-
-void DestroyWonderNewsResources(void)
-{
- if (gUnknown_203F3CC != NULL)
- {
- *gUnknown_203F3CC = (struct UnkStruct_203F3CC){};
- Free(gUnknown_203F3CC);
- gUnknown_203F3CC = NULL;
- }
-}
-
-s32 FadeToWonderNewsMenu(void)
-{
- if (gUnknown_203F3CC == NULL)
- return -1;
-
- switch (gUnknown_203F3CC->unk_01C0_1)
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- break;
- case 1:
- if (UpdatePaletteFade())
- return 0;
- ChangeBgY(0, 0, 0);
- ChangeBgY(1, 0, 0);
- ChangeBgY(2, 0, 0);
- ChangeBgY(3, 0, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
- SetGpuReg(REG_OFFSET_WIN0V, 0x1A98);
- SetGpuReg(REG_OFFSET_WININ, 0x1F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x1B);
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- break;
- case 2:
- FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20);
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(1);
- CopyBgTilemapBufferToVram(2);
- CopyBgTilemapBufferToVram(3);
- DecompressAndCopyTileDataToVram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
- gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]);
- gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]);
- break;
- case 3:
- if (FreeTempTileDataBuffersIfPossible())
- return 0;
- gPaletteFade.bufferTransferDisabled = TRUE;
- LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20);
- LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->map, gUnknown_203F3CC->buffer_03A4);
- CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
- CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
- CopyBgTilemapBufferToVram(1);
- CopyBgTilemapBufferToVram(3);
- break;
- case 4:
- sub_8146980();
- break;
- case 5:
- sub_8146A30();
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(2);
- break;
- case 6:
- ShowBg(1);
- ShowBg(2);
- ShowBg(3);
- gPaletteFade.bufferTransferDisabled = FALSE;
- gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- UpdatePaletteFade();
- break;
- default:
- if (UpdatePaletteFade())
- return 0;
- gUnknown_203F3CC->unk_01C0_1 = 0;
- return 1;
- }
-
- ++gUnknown_203F3CC->unk_01C0_1;
- return 0;
-}
-
-s32 FadeOutFromWonderNews(bool32 flag)
-{
- if (gUnknown_203F3CC == NULL)
- return -1;
- switch (gUnknown_203F3CC->unk_01C0_1)
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- break;
- case 1:
- if (UpdatePaletteFade())
- return 0;
- ChangeBgY(2, 0, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0);
- SetGpuReg(REG_OFFSET_WIN0V, 0);
- SetGpuReg(REG_OFFSET_WININ, 0);
- SetGpuReg(REG_OFFSET_WINOUT, 0);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- break;
- case 2:
- FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
- FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24);
- FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24);
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(1);
- CopyBgTilemapBufferToVram(2);
- CopyBgTilemapBufferToVram(3);
- break;
- case 3:
- HideBg(1);
- HideBg(2);
- RemoveWindow(gUnknown_203F3CC->unk_01C8[1]);
- RemoveWindow(gUnknown_203F3CC->unk_01C8[0]);
- break;
- case 4:
- ChangeBgY(2, 0, 0);
- ChangeBgY(3, 0, 0);
- if (gUnknown_203F3CC->unk_01C1 != 0xFF)
- {
- RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1);
- gUnknown_203F3CC->unk_01C1 = 0xFF;
- }
- break;
- case 5:
- PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
- break;
- case 6:
- MG_DrawCheckerboardPattern();
- CopyBgTilemapBufferToVram(0);
- CopyBgTilemapBufferToVram(3);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- break;
- default:
- if (UpdatePaletteFade())
- return 0;
- gUnknown_203F3CC->unk_01C0_1 = 0;
- return 1;
- }
- ++gUnknown_203F3CC->unk_01C0_1;
- return 0;
-}
-
-void MENews_RemoveScrollIndicatorArrowPair(void)
-{
- if (!gUnknown_203F3CC->unk_01C0_0 && gUnknown_203F3CC->unk_01C1 != 0xFF)
- {
- RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1);
- gUnknown_203F3CC->unk_01C1 = 0xFF;
- gUnknown_203F3CC->unk_01C0_0 = TRUE;
- }
-}
-
-
-void MENews_AddScrollIndicatorArrowPair(void)
-{
- if (gUnknown_203F3CC->unk_01C0_0)
- {
- gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6);
- gUnknown_203F3CC->unk_01C0_0 = FALSE;
- }
-}
-
-u32 MENews_GetInput(u16 input)
-{
- if (gUnknown_203F3CC->unk_01C2_0)
- {
- sub_8146B58();
- return 0xFF;
- }
- switch (input)
- {
- case A_BUTTON:
- return 0;
- case B_BUTTON:
- return 1;
- case DPAD_UP:
- if (gUnknown_203F3CC->unk_01C6 == 0)
- return 0xFF;
- if (gUnknown_203F3CC->unk_01C0_0)
- return 0xFF;
- gUnknown_203F3CC->unk_01C3_0 = FALSE;
- break;
- case DPAD_DOWN:
- if (gUnknown_203F3CC->unk_01C6 == gUnknown_203F3CC->unk_01C4)
- return 0xFF;
- if (gUnknown_203F3CC->unk_01C0_0)
- return 0xFF;
- gUnknown_203F3CC->unk_01C3_0 = TRUE;
- break;
- default:
- return 0xFF;
- }
- gUnknown_203F3CC->unk_01C2_0 = TRUE;
- gUnknown_203F3CC->unk_01C2_1 = 2;
- gUnknown_203F3CC->unk_01C3_1 = 0;
- if (gUnknown_203F3CC->unk_01C3_0 == FALSE)
- return 2;
- else
- return 3;
-}
-
-void sub_8146980(void)
-{
- u8 i = 0;
- memcpy(gUnknown_203F3CC->unk_01CE, gUnknown_203F3CC->unk_0000.unk_04, 40);
- gUnknown_203F3CC->unk_01CE[40] = EOS;
- for (; i < 10; ++i)
- {
- memcpy(gUnknown_203F3CC->unk_01F7[i], gUnknown_203F3CC->unk_0000.unk_2C[i], 40);
- gUnknown_203F3CC->unk_01F7[i][40] = EOS;
- if (i > 7 && gUnknown_203F3CC->unk_01F7[i][0] != EOS)
- ++gUnknown_203F3CC->unk_01C4;
- }
- gUnknown_203F3CC->unk_0394 = gUnknown_8468050;
- gUnknown_203F3CC->unk_0394.fullyDownThreshold = gUnknown_203F3CC->unk_01C4;
-}
-
-void sub_8146A30(void)
-{
- u8 i = 0;
- s32 x;
- PutWindowTilemap(gUnknown_203F3CC->unk_01C8[0]);
- PutWindowTilemap(gUnknown_203F3CC->unk_01C8[1]);
- FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[0], 0);
- FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[1], 0);
- x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2;
- if (x < 0)
- x = 0;
- AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE);
- for (; i < 10; ++i)
- {
- AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]);
- }
- CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3);
- CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3);
-}
-
-void sub_8146B58(void)
-{
- u16 r4 = gUnknown_203F3CC->unk_01C2_1;
- r4 <<= 8;
- if (gUnknown_203F3CC->unk_01C3_0)
- {
- ChangeBgY(2, r4, 1);
- ChangeBgY(3, r4, 1);
- }
- else
- {
- ChangeBgY(2, r4, 2);
- ChangeBgY(3, r4, 2);
- }
- gUnknown_203F3CC->unk_01C3_1 += gUnknown_203F3CC->unk_01C2_1;
- if (gUnknown_203F3CC->unk_01C3_1 > 15)
- {
- if (gUnknown_203F3CC->unk_01C3_0)
- ++gUnknown_203F3CC->unk_01C6;
- else
- --gUnknown_203F3CC->unk_01C6;
- gUnknown_203F3CC->unk_01C2_0 = FALSE;
- gUnknown_203F3CC->unk_01C3_1 = 0;
- }
-}
diff --git a/src/mevent_client.c b/src/mevent_client.c
index 4da0b4bc1..d7eff1ec6 100644
--- a/src/mevent_client.c
+++ b/src/mevent_client.c
@@ -195,15 +195,16 @@ static u32 client_mainseq_4(struct mevent_client * svr)
mevent_client_send_word(svr, 0x13, svr->param);
break;
case 10:
- sub_8143F68(svr->recvBuffer);
+ OverwriteSavedWonderCardWithReceivedCard(svr->recvBuffer);
break;
case 9:
- if (!sub_8143EF4(svr->recvBuffer))
+ if (!MEvent_HaveAlreadyReceivedWonderNews(svr->recvBuffer))
{
- sub_8143DC8(svr->recvBuffer);
+ OverwriteSavedWonderNewsWithReceivedNews(svr->recvBuffer);
mevent_client_send_word(svr, 0x13, 0);
}
else
+ // Other trainer already has news
mevent_client_send_word(svr, 0x13, 1);
break;
case 15:
@@ -211,7 +212,7 @@ static u32 client_mainseq_4(struct mevent_client * svr)
svr->flag = 0;
break;
case 16:
- sub_8144254(svr->recvBuffer);
+ MEvent_ReceiveDistributionMon(svr->recvBuffer);
break;
case 17:
MEventSetRamScript(svr->recvBuffer, 1000);
diff --git a/src/mevent_server.c b/src/mevent_server.c
index bebd69fe3..3b1762540 100644
--- a/src/mevent_server.c
+++ b/src/mevent_server.c
@@ -176,7 +176,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
case 9:
AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 408);
ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord);
- svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr);
+ svr->param = MEvent_CanPlayerReceiveDistributionMon(ptr, svr->mevent_unk1442cc, ptr);
break;
case 10:
AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 415);
@@ -247,7 +247,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
case 26:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 506);
memcpy(svr->card, GetSavedWonderCard(), 332);
- sub_814410C(svr->card);
+ MEvent_WonderCardResetUnk08_6(svr->card);
break;
case 27:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 512);
diff --git a/src/mevent_show_card.c b/src/mevent_show_card.c
new file mode 100644
index 000000000..d91b2c9c6
--- /dev/null
+++ b/src/mevent_show_card.c
@@ -0,0 +1,454 @@
+#include "global.h"
+#include "constants/species.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "decompress.h"
+#include "malloc.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "pokemon_icon.h"
+#include "mystery_gift_menu.h"
+#include "menu_indicators.h"
+#include "string_util.h"
+#include "link_rfu.h"
+#include "mevent.h"
+#include "battle_anim.h"
+
+struct MEventScreenMgr_02DC
+{
+ u8 nDigits;
+ u8 nameTxt[41];
+ u8 numberTxt[4];
+};
+
+struct MEventScreenMgr
+{
+ /*0000*/ struct MEWonderCardData wonderCard;
+ /*014c*/ struct MEventBuffer_3430_Sub buff3430Sub;
+ /*0170*/ const struct UnkStruct_8467FB8 * bgSpec;
+ /*0174*/ u8 state;
+ /*0175*/ u8 recordIdx;
+ /*0176*/ u16 windowIds[3];
+ /*017C*/ u8 monIconId;
+ /*017D*/ u8 cardIconAndShadowSprites[7][2];
+ /*018B*/ u8 title[41];
+ /*01B4*/ u8 subtitle[41];
+ /*01DD*/ u8 unk_01DD[7];
+ /*01E4*/ u8 mainMessageLines[4][41];
+ /*0288*/ u8 instructionsLine1[41];
+ /*02B1*/ u8 instructionsLine2[41];
+ /*02DC*/ struct MEventScreenMgr_02DC recordStrings[8];
+ /*045C*/ u8 buffer_045C[0x1000];
+};
+
+static EWRAM_DATA struct MEventScreenMgr * sMEventScreenData = NULL;
+
+void sub_8145A98(void);
+void sub_8145D18(u8 whichWindow);
+void sub_8146060(void);
+void sub_81461D8(void);
+
+const u8 gUnknown_8467068[][3] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const u8 ALIGNED(4) sTextYCoords[3] = {7, 4, 7};
+const struct WindowTemplate sWindowTemplates[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 25,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x29c},
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 28,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x1bc},
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 14,
+ .width = 28,
+ .height = 5,
+ .paletteNum = 15,
+ .baseBlock = 0x130}
+};
+
+const u16 gCard0Pal[] = INCBIN_U16("data/graphics/mevent/pal_46708C.gbapal");
+const u16 gCard1Pal[] = INCBIN_U16("data/graphics/mevent/pal_4670AC.gbapal");
+const u16 gCard2Pal[] = INCBIN_U16("data/graphics/mevent/pal_4670CC.gbapal");
+const u16 gCard3Pal[] = INCBIN_U16("data/graphics/mevent/pal_4670EC.gbapal");
+const u16 gCard4Pal[] = INCBIN_U16("data/graphics/mevent/pal_46710C.gbapal");
+const u16 gCard5Pal[] = INCBIN_U16("data/graphics/mevent/pal_46712C.gbapal");
+const u16 gCard6Pal[] = INCBIN_U16("data/graphics/mevent/pal_46714C.gbapal");
+const u16 gCard7Pal[] = INCBIN_U16("data/graphics/mevent/pal_46716C.gbapal");
+const u8 sCard0Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_46718C.4bpp.lz");
+const u8 sCard0Map[] = INCBIN_U8("data/graphics/mevent/tilemap_467288.bin.lz");
+const u8 sCard1Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_46737C.4bpp.lz");
+const u8 sCard1Map[] = INCBIN_U8("data/graphics/mevent/tilemap_467470.bin.lz");
+const u8 sCard2Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_467558.4bpp.lz");
+const u8 sCard2Map[] = INCBIN_U8("data/graphics/mevent/tilemap_46762C.bin.lz");
+const u8 sCard6Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_467700.4bpp.lz");
+const u8 sCard6Map[] = INCBIN_U8("data/graphics/mevent/tilemap_467934.bin.lz");
+const u8 sCard7Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_467A7C.4bpp.lz");
+const u8 sCard7Map[] = INCBIN_U8("data/graphics/mevent/tilemap_467CAC.bin.lz");
+const u16 gUnknown_8467DF4[] = INCBIN_U16("data/graphics/mevent/pal_467DF4.gbapal");
+const u16 gUnknown_8467E14[] = INCBIN_U16("data/graphics/mevent/pal_467E14.gbapal");
+const u16 gUnknown_8467E34[] = INCBIN_U16("data/graphics/mevent/pal_467E34.gbapal");
+const u16 gUnknown_8467E54[] = INCBIN_U16("data/graphics/mevent/pal_467E54.gbapal");
+const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapal");
+const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal");
+const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal");
+const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal");
+const u32 gUnknown_8467EF4[] = INCBIN_U32("data/graphics/mevent/gfx_467EF4.4bpp.lz");
+
+const struct CompressedSpriteSheet sShadowSpriteSheet = {
+ gUnknown_8467EF4, 0x100, 0x8000
+};
+const struct SpritePalette sShadowSpritePalettes[] = {
+ {gUnknown_8467DF4, 0x8000},
+ {gUnknown_8467E14, 0x8000},
+ {gUnknown_8467E34, 0x8000},
+ {gUnknown_8467E54, 0x8000},
+ {gUnknown_8467E74, 0x8000},
+ {gUnknown_8467E94, 0x8000},
+ {gUnknown_8467EB4, 0x8000},
+ {gUnknown_8467ED4, 0x8000}
+};
+const struct SpriteTemplate sShadowSpriteTemplate = {
+ 0x8000, 0x8000, &gOamData_AffineOff_ObjNormal_32x16, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+const struct UnkStruct_8467FB8 sCardGfxPtrs[8] = {
+ {1, 0, 0, 0, sCard0Gfx, sCard0Map, gCard0Pal},
+ {1, 0, 0, 1, sCard1Gfx, sCard1Map, gCard1Pal},
+ {1, 0, 0, 2, sCard2Gfx, sCard2Map, gCard2Pal},
+ {1, 0, 0, 3, sCard2Gfx, sCard2Map, gCard3Pal},
+ {1, 0, 0, 4, sCard2Gfx, sCard2Map, gCard4Pal},
+ {1, 0, 0, 5, sCard2Gfx, sCard2Map, gCard5Pal},
+ {1, 0, 0, 6, sCard6Gfx, sCard6Map, gCard6Pal},
+ {1, 0, 0, 7, sCard7Gfx, sCard7Map, gCard7Pal}
+};
+
+bool32 InitWonderCardResources(struct MEWonderCardData * card, struct MEventBuffer_3430_Sub * b3430sub)
+{
+ if (card == NULL || b3430sub == NULL)
+ return FALSE;
+ sMEventScreenData = AllocZeroed(sizeof(struct MEventScreenMgr));
+ if (sMEventScreenData == NULL)
+ return FALSE;
+ sMEventScreenData->wonderCard = *card;
+ sMEventScreenData->buff3430Sub = *b3430sub;
+ if (sMEventScreenData->wonderCard.unk_08_2 >= NELEMS(sCardGfxPtrs))
+ sMEventScreenData->wonderCard.unk_08_2 = 0;
+ if (sMEventScreenData->wonderCard.unk_08_0 >= NELEMS(sTextYCoords))
+ sMEventScreenData->wonderCard.unk_08_0 = 0;
+ if (sMEventScreenData->wonderCard.recvMonCapacity > NELEMS(sMEventScreenData->cardIconAndShadowSprites))
+ sMEventScreenData->wonderCard.recvMonCapacity = 0;
+ sMEventScreenData->bgSpec = &sCardGfxPtrs[sMEventScreenData->wonderCard.unk_08_2];
+ return TRUE;
+}
+
+void DestroyWonderCardResources(void)
+{
+ if (sMEventScreenData != NULL)
+ {
+ *sMEventScreenData = (struct MEventScreenMgr){};
+ Free(sMEventScreenData);
+ sMEventScreenData = NULL;
+ }
+}
+
+s32 FadeToWonderCardMenu(void)
+{
+ if (sMEventScreenData == NULL)
+ return -1;
+ switch(sMEventScreenData->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ DecompressAndCopyTileDataToVram(2, sMEventScreenData->bgSpec->tiles, 0, 0x008, 0);
+ sMEventScreenData->windowIds[0] = AddWindow(&sWindowTemplates[0]);
+ sMEventScreenData->windowIds[1] = AddWindow(&sWindowTemplates[1]);
+ sMEventScreenData->windowIds[2] = AddWindow(&sWindowTemplates[2]);
+ break;
+ case 3:
+ if (FreeTempTileDataBuffersIfPossible())
+ return 0;
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(sMEventScreenData->bgSpec->pal, 0x10, 0x20);
+ LZ77UnCompWram(sMEventScreenData->bgSpec->map, sMEventScreenData->buffer_045C);
+ CopyRectToBgTilemapBufferRect(2, sMEventScreenData->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 4:
+ sub_8145A98();
+ break;
+ case 5:
+ sub_8145D18(0);
+ sub_8145D18(1);
+ sub_8145D18(2);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 6:
+ LoadMonIconPalettes();
+ break;
+ case 7:
+ ShowBg(1);
+ ShowBg(2);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ sub_8146060();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ sMEventScreenData->state = 0;
+ return 1;
+ }
+ ++sMEventScreenData->state;
+ return 0;
+}
+
+s32 FadeOutFromWonderCard(bool32 flag)
+{
+ if (sMEventScreenData == NULL)
+ return -1;
+ switch (sMEventScreenData->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(sMEventScreenData->windowIds[2]);
+ RemoveWindow(sMEventScreenData->windowIds[1]);
+ RemoveWindow(sMEventScreenData->windowIds[0]);
+ break;
+ case 4:
+ sub_81461D8();
+ FreeMonIconPalettes();
+ break;
+ case 5:
+ PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
+ break;
+ case 6:
+ CopyBgTilemapBufferToVram(0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ sMEventScreenData->state = 0;
+ return 1;
+ }
+ ++sMEventScreenData->state;
+ return 0;
+}
+
+void sub_8145A98(void)
+{
+ u16 i = 0;
+ u16 r6;
+ u16 sp0[3] = {0, 0, 0};
+
+ memcpy(sMEventScreenData->title, sMEventScreenData->wonderCard.unk_0A, 40);
+ sMEventScreenData->title[40] = EOS;
+ memcpy(sMEventScreenData->subtitle, sMEventScreenData->wonderCard.unk_32, 40);
+ sMEventScreenData->subtitle[40] = EOS;
+ if (sMEventScreenData->wonderCard.unk_04 > 999999)
+ sMEventScreenData->wonderCard.unk_04 = 999999;
+ ConvertIntToDecimalStringN(sMEventScreenData->unk_01DD, sMEventScreenData->wonderCard.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
+ for (i = 0; i < 4; i++)
+ {
+ memcpy(sMEventScreenData->mainMessageLines[i], sMEventScreenData->wonderCard.unk_5A[i], 40);
+ sMEventScreenData->mainMessageLines[i][40] = EOS;
+ }
+ memcpy(sMEventScreenData->instructionsLine1, sMEventScreenData->wonderCard.unk_FA, 40);
+ sMEventScreenData->instructionsLine1[40] = EOS;
+ switch (sMEventScreenData->wonderCard.unk_08_0)
+ {
+ case 0:
+ memcpy(sMEventScreenData->instructionsLine2, sMEventScreenData->wonderCard.unk_122, 40);
+ sMEventScreenData->instructionsLine2[40] = EOS;
+ break;
+ case 1:
+ sMEventScreenData->instructionsLine2[00] = EOS;
+ break;
+ case 2:
+ sMEventScreenData->instructionsLine2[00] = EOS;
+ sp0[0] = sMEventScreenData->buff3430Sub.linkWins < 999 ? sMEventScreenData->buff3430Sub.linkWins : 999;
+ sp0[1] = sMEventScreenData->buff3430Sub.linkLosses < 999 ? sMEventScreenData->buff3430Sub.linkLosses : 999;
+ sp0[2] = sMEventScreenData->buff3430Sub.linkTrades < 999 ? sMEventScreenData->buff3430Sub.linkTrades : 999;
+ for (i = 0; i < 8; i++)
+ {
+ memset(sMEventScreenData->recordStrings[i].numberTxt, EOS, 4);
+ memset(sMEventScreenData->recordStrings[i].nameTxt, EOS, 41);
+ }
+ for (i = 0, r6 = 0; i < 40; i++)
+ {
+ if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_SPECIAL_F7)
+ {
+ sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nameTxt[r6] = sMEventScreenData->wonderCard.unk_122[i];
+ r6++;
+ }
+ else
+ {
+ u8 r3 = sMEventScreenData->wonderCard.unk_122[i + 1];
+ if (r3 > 2)
+ {
+ i += 2;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].numberTxt, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
+ sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nDigits = sMEventScreenData->wonderCard.unk_122[i + 2];
+ sMEventScreenData->recordIdx++;
+ if (sMEventScreenData->recordIdx > 7)
+ break;
+ r6 = 0;
+ i += 2;
+ }
+ }
+ }
+ }
+}
+
+void sub_8145D18(u8 whichWindow)
+{
+ s8 sp0C = 0;
+ s32 windowId = sMEventScreenData->windowIds[whichWindow];
+ PutWindowTilemap(windowId);
+ FillWindowPixelBuffer(windowId, 0);
+ switch (whichWindow)
+ {
+ case 0:
+ {
+ s32 x;
+ AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_8467068[sMEventScreenData->bgSpec->textPal1], 0, sMEventScreenData->title);
+ x = 160 - GetStringWidth(3, sMEventScreenData->subtitle, GetFontAttribute(3, 2));
+ if (x < 0)
+ x = 0;
+ AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_8467068[sMEventScreenData->bgSpec->textPal1], 0, sMEventScreenData->subtitle);
+ if (sMEventScreenData->wonderCard.unk_04 != 0)
+ {
+ AddTextPrinterParameterized3(windowId, 2, 166, 17, gUnknown_8467068[sMEventScreenData->bgSpec->textPal1], 0, sMEventScreenData->unk_01DD);
+ }
+ break;
+ }
+ case 1:
+ for (; sp0C < 4; sp0C++)
+ {
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_8467068[sMEventScreenData->bgSpec->textPal2], 0, sMEventScreenData->mainMessageLines[sp0C]);
+ }
+ break;
+ case 2:
+ AddTextPrinterParameterized3(windowId, 3, 0, sTextYCoords[sMEventScreenData->wonderCard.unk_08_0], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine1);
+ if (sMEventScreenData->wonderCard.unk_08_0 != 2)
+ {
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 + sTextYCoords[sMEventScreenData->wonderCard.unk_08_0], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine2);
+ }
+ else
+ {
+ s32 x = 0;
+ s32 y = sTextYCoords[sMEventScreenData->wonderCard.unk_08_0] + 16;
+ s32 spacing = GetFontAttribute(3, 2);
+ for (; sp0C < sMEventScreenData->recordIdx; sp0C++)
+ {
+ AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->recordStrings[sp0C].nameTxt);
+ if (sMEventScreenData->recordStrings[sp0C].numberTxt[0] != EOS)
+ {
+ x += GetStringWidth(3, sMEventScreenData->recordStrings[sp0C].nameTxt, spacing);
+ AddTextPrinterParameterized3(windowId, 2, x, y, gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->recordStrings[sp0C].numberTxt);
+ x += GetStringWidth(3, sMEventScreenData->recordStrings[sp0C].numberTxt, spacing) + sMEventScreenData->recordStrings[sp0C].nDigits;
+ }
+ }
+ }
+ break;
+ }
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8146060(void)
+{
+ u8 r7 = 0;
+ sMEventScreenData->monIconId = 0xFF;
+ if (sMEventScreenData->buff3430Sub.unk_06 != SPECIES_NONE)
+ {
+ sMEventScreenData->monIconId = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
+ gSprites[sMEventScreenData->monIconId].oam.priority = 2;
+ }
+ if (sMEventScreenData->wonderCard.recvMonCapacity != 0 && sMEventScreenData->wonderCard.unk_08_0 == 1)
+ {
+ LoadCompressedSpriteSheetUsingHeap(&sShadowSpriteSheet);
+ LoadSpritePalette(&sShadowSpritePalettes[sMEventScreenData->bgSpec->index]);
+ for (; r7 < sMEventScreenData->wonderCard.recvMonCapacity; r7++)
+ {
+ sMEventScreenData->cardIconAndShadowSprites[r7][0] = 0xFF;
+ sMEventScreenData->cardIconAndShadowSprites[r7][1] = 0xFF;
+ sMEventScreenData->cardIconAndShadowSprites[r7][0] = CreateSprite(&sShadowSpriteTemplate, 0xd8 - 32 * r7, 0x90, 8);
+ if (sMEventScreenData->buff3430Sub.distributedMons[0][r7] != 0)
+ {
+ sMEventScreenData->cardIconAndShadowSprites[r7][1] = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.distributedMons[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
+ gSprites[sMEventScreenData->cardIconAndShadowSprites[r7][1]].oam.priority = 2;
+ }
+ }
+ }
+}
+
+void sub_81461D8(void)
+{
+ u8 r6 = 0;
+ if (sMEventScreenData->monIconId != 0xFF)
+ DestroyMonIcon(&gSprites[sMEventScreenData->monIconId]);
+ if (sMEventScreenData->wonderCard.recvMonCapacity != 0 && sMEventScreenData->wonderCard.unk_08_0 == 1)
+ {
+ for (; r6 < sMEventScreenData->wonderCard.recvMonCapacity; r6++)
+ {
+ if (sMEventScreenData->cardIconAndShadowSprites[r6][0] != 0xFF)
+ {
+ DestroySprite(&gSprites[sMEventScreenData->cardIconAndShadowSprites[r6][0]]);
+ // This might be a typo. Uncomment the next line, and comment the one that follows, to get the presumed intended behavior.
+ // if (sMEventScreenData->cardIconAndShadowSprites[r6][1] != 0xFF)
+ if (sMEventScreenData->cardIconAndShadowSprites[r6][0] != 0xFF)
+ {
+ DestroyMonIcon(&gSprites[sMEventScreenData->cardIconAndShadowSprites[r6][1]]);
+ }
+ }
+ }
+ FreeSpriteTilesByTag(0x8000);
+ FreeSpritePaletteByTag(0x8000);
+ }
+}
diff --git a/src/mevent_show_news.c b/src/mevent_show_news.c
new file mode 100644
index 000000000..f5198ba4d
--- /dev/null
+++ b/src/mevent_show_news.c
@@ -0,0 +1,357 @@
+#include "global.h"
+#include "gflib.h"
+#include "menu_indicators.h"
+#include "new_menu_helpers.h"
+#include "mevent.h"
+#include "mystery_gift_menu.h"
+#include "menu.h"
+#include "link_rfu.h"
+
+struct UnkStruct_203F3CC
+{
+ /*0000*/ struct MEWonderNewsData wonderNews;
+ /*01bc*/ const struct UnkStruct_8467FB8 * bgSpec;
+ /*01c0*/ u8 verticalScrollDisabled:1;
+ u8 state:7;
+ /*01c1*/ u8 menuIndicatorsId;
+ /*01c2*/ u8 unk_01C2_0:1;
+ u8 unk_01C2_1:7;
+ /*01c3*/ u8 scrollDirection:1;
+ u8 unk_01C3_1:7;
+ /*01c4*/ u16 numMails;
+ /*01c6*/ u16 scrollOffset;
+ /*01c8*/ u16 windowIds[2];
+ /*01cc*/ u8 filler_01CC[2];
+ /*01ce*/ u8 title[41];
+ /*01f7*/ u8 messages[10][41];
+ /*0394*/ struct ScrollArrowsTemplate scrollArrowsTemplate;
+ /*03a4*/ u8 buffer_03A4[0x1000];
+};
+
+EWRAM_DATA struct UnkStruct_203F3CC * sWork = NULL;
+
+void sub_8146980(void);
+void sub_8146A30(void);
+void sub_8146B58(void);
+
+const u8 sTextPals[][3] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const struct WindowTemplate gUnknown_8468040[] = {
+ {0, 1, 0, 28, 3, 15, 0x000},
+ {2, 1, 3, 28, 20, 15, 0x000}
+};
+const struct ScrollArrowsTemplate sScrollArrowsTemplate = {
+ 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
+ 0x0000, 0x0002, 0x1000, 0x1000, 0x0,
+};
+
+const u16 sNews1Pal[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal");
+const u16 sNews6Pal[] = INCBIN_U16("data/graphics/mevent/pal_468080.gbapal");
+const u16 sNews7Pal[] = INCBIN_U16("data/graphics/mevent/pal_4680A0.gbapal");
+const u8 sNews0Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_4680C0.4bpp.lz");
+const u8 sNews0Map[] = INCBIN_U8("data/graphics/mevent/tilemap_468140.bin.lz");
+const u8 sNews1Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_46821C.4bpp.lz");
+const u8 sNews1Map[] = INCBIN_U8("data/graphics/mevent/tilemap_46824C.bin.lz");
+const u8 sNews2Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_46830C.4bpp.lz");
+const u8 sNews2Map[] = INCBIN_U8("data/graphics/mevent/tilemap_46837C.bin.lz");
+const u8 sNews6Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_468448.4bpp.lz");
+const u8 sNews6Map[] = INCBIN_U8("data/graphics/mevent/tilemap_4684D8.bin.lz");
+const u8 sNews7Gfx[] = INCBIN_U8("data/graphics/mevent/gfx_4685B4.4bpp.lz");
+const u8 sNews7Map[] = INCBIN_U8("data/graphics/mevent/tilemap_468644.bin.lz");
+
+const struct UnkStruct_8467FB8 sBgSpecs[] = {
+ {1, 0, 0, 0, sNews0Gfx, sNews0Map, sNews1Pal},
+ {1, 0, 0, 0, sNews1Gfx, sNews1Map, gCard1Pal},
+ {1, 0, 0, 0, sNews2Gfx, sNews2Map, gCard2Pal},
+ {1, 0, 0, 0, sNews2Gfx, sNews2Map, gCard3Pal},
+ {1, 0, 0, 0, sNews2Gfx, sNews2Map, gCard4Pal},
+ {1, 0, 0, 0, sNews2Gfx, sNews2Map, gCard5Pal},
+ {1, 0, 0, 0, sNews6Gfx, sNews6Map, sNews6Pal},
+ {1, 0, 0, 0, sNews7Gfx, sNews7Map, sNews7Pal}
+};
+
+bool32 InitWonderNewsResources(const struct MEWonderNewsData * news)
+{
+ if (news == NULL)
+ return FALSE;
+ sWork = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
+ if (sWork == NULL)
+ return FALSE;
+ sWork->wonderNews = *news;
+ if (sWork->wonderNews.unk_03 >= NELEMS(sBgSpecs))
+ sWork->wonderNews.unk_03 = 0;
+ sWork->bgSpec = &sBgSpecs[sWork->wonderNews.unk_03];
+ sWork->menuIndicatorsId = 0xFF;
+ return TRUE;
+}
+
+void DestroyWonderNewsResources(void)
+{
+ if (sWork != NULL)
+ {
+ *sWork = (struct UnkStruct_203F3CC){};
+ Free(sWork);
+ sWork = NULL;
+ }
+}
+
+s32 FadeToWonderNewsMenu(void)
+{
+ if (sWork == NULL)
+ return -1;
+
+ switch (sWork->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x1A98);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x1B);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ DecompressAndCopyTileDataToVram(3, sWork->bgSpec->tiles, 0, 8, 0);
+ sWork->windowIds[0] = AddWindow(&gUnknown_8468040[0]);
+ sWork->windowIds[1] = AddWindow(&gUnknown_8468040[1]);
+ break;
+ case 3:
+ if (FreeTempTileDataBuffersIfPossible())
+ return 0;
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(sWork->bgSpec->pal, 0x10, 0x20);
+ LZ77UnCompWram(sWork->bgSpec->map, sWork->buffer_03A4);
+ CopyRectToBgTilemapBufferRect(1, sWork->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
+ CopyRectToBgTilemapBufferRect(3, sWork->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 4:
+ sub_8146980();
+ break;
+ case 5:
+ sub_8146A30();
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 6:
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ sWork->menuIndicatorsId = AddScrollIndicatorArrowPair(&sWork->scrollArrowsTemplate, &sWork->scrollOffset);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ sWork->state = 0;
+ return 1;
+ }
+
+ ++sWork->state;
+ return 0;
+}
+
+s32 FadeOutFromWonderNews(bool32 flag)
+{
+ if (sWork == NULL)
+ return -1;
+ switch (sWork->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(2, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(sWork->windowIds[1]);
+ RemoveWindow(sWork->windowIds[0]);
+ break;
+ case 4:
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ if (sWork->menuIndicatorsId != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sWork->menuIndicatorsId);
+ sWork->menuIndicatorsId = 0xFF;
+ }
+ break;
+ case 5:
+ PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
+ break;
+ case 6:
+ MG_DrawCheckerboardPattern();
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ sWork->state = 0;
+ return 1;
+ }
+ ++sWork->state;
+ return 0;
+}
+
+void MENews_RemoveScrollIndicatorArrowPair(void)
+{
+ if (!sWork->verticalScrollDisabled && sWork->menuIndicatorsId != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sWork->menuIndicatorsId);
+ sWork->menuIndicatorsId = 0xFF;
+ sWork->verticalScrollDisabled = TRUE;
+ }
+}
+
+
+void MENews_AddScrollIndicatorArrowPair(void)
+{
+ if (sWork->verticalScrollDisabled)
+ {
+ sWork->menuIndicatorsId = AddScrollIndicatorArrowPair(&sWork->scrollArrowsTemplate, &sWork->scrollOffset);
+ sWork->verticalScrollDisabled = FALSE;
+ }
+}
+
+u32 MENews_GetInput(u16 input)
+{
+ if (sWork->unk_01C2_0)
+ {
+ sub_8146B58();
+ return 0xFF;
+ }
+ switch (input)
+ {
+ case A_BUTTON:
+ return 0;
+ case B_BUTTON:
+ return 1;
+ case DPAD_UP:
+ if (sWork->scrollOffset == 0)
+ return 0xFF;
+ if (sWork->verticalScrollDisabled)
+ return 0xFF;
+ sWork->scrollDirection = FALSE;
+ break;
+ case DPAD_DOWN:
+ if (sWork->scrollOffset == sWork->numMails)
+ return 0xFF;
+ if (sWork->verticalScrollDisabled)
+ return 0xFF;
+ sWork->scrollDirection = TRUE;
+ break;
+ default:
+ return 0xFF;
+ }
+ sWork->unk_01C2_0 = TRUE;
+ sWork->unk_01C2_1 = 2;
+ sWork->unk_01C3_1 = 0;
+ if (sWork->scrollDirection == FALSE)
+ return 2;
+ else
+ return 3;
+}
+
+void sub_8146980(void)
+{
+ u8 i = 0;
+ memcpy(sWork->title, sWork->wonderNews.unk_04, 40);
+ sWork->title[40] = EOS;
+ for (; i < 10; ++i)
+ {
+ memcpy(sWork->messages[i], sWork->wonderNews.unk_2C[i], 40);
+ sWork->messages[i][40] = EOS;
+ if (i > 7 && sWork->messages[i][0] != EOS)
+ ++sWork->numMails;
+ }
+ sWork->scrollArrowsTemplate = sScrollArrowsTemplate;
+ sWork->scrollArrowsTemplate.fullyDownThreshold = sWork->numMails;
+}
+
+void sub_8146A30(void)
+{
+ u8 i = 0;
+ s32 x;
+ PutWindowTilemap(sWork->windowIds[0]);
+ PutWindowTilemap(sWork->windowIds[1]);
+ FillWindowPixelBuffer(sWork->windowIds[0], 0);
+ FillWindowPixelBuffer(sWork->windowIds[1], 0);
+ x = (0xe0 - GetStringWidth(3, sWork->title, GetFontAttribute(3, 2))) / 2;
+ if (x < 0)
+ x = 0;
+ AddTextPrinterParameterized3(sWork->windowIds[0], 3, x, 6, sTextPals[sWork->bgSpec->textPal1], 0, sWork->title);
+ for (; i < 10; ++i)
+ {
+ AddTextPrinterParameterized3(sWork->windowIds[1], 3, 0, 16 * i + 2, sTextPals[sWork->bgSpec->textPal2], 0, sWork->messages[i]);
+ }
+ CopyWindowToVram(sWork->windowIds[0], 3);
+ CopyWindowToVram(sWork->windowIds[1], 3);
+}
+
+void sub_8146B58(void)
+{
+ u16 r4 = sWork->unk_01C2_1;
+ r4 <<= 8;
+ if (sWork->scrollDirection)
+ {
+ ChangeBgY(2, r4, 1);
+ ChangeBgY(3, r4, 1);
+ }
+ else
+ {
+ ChangeBgY(2, r4, 2);
+ ChangeBgY(3, r4, 2);
+ }
+ sWork->unk_01C3_1 += sWork->unk_01C2_1;
+ if (sWork->unk_01C3_1 > 15)
+ {
+ if (sWork->scrollDirection)
+ ++sWork->scrollOffset;
+ else
+ --sWork->scrollOffset;
+ sWork->unk_01C2_0 = FALSE;
+ sWork->unk_01C3_1 = 0;
+ }
+}
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 36a830bbf..cdfd62624 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -1279,7 +1279,7 @@ void task00_mystery_gift(u8 taskId)
switch (mevent_client_do_exec(&data->curPromptWindowId))
{
case 6: // done
- task_add_05_task_del_08FA224_when_no_RfuFunc();
+ Rfu_BeginBuildAndSendCommand5F();
data->prevPromptWindowId = data->curPromptWindowId;
data->state = 13;
break;
@@ -1645,7 +1645,7 @@ void task00_mystery_gift(u8 taskId)
}
break;
case 33:
- task_add_05_task_del_08FA224_when_no_RfuFunc();
+ Rfu_BeginBuildAndSendCommand5F();
StringCopy(gStringVar1, gLinkPlayers[1].name);
data->state = 34;
break;
diff --git a/src/new_game.c b/src/new_game.c
index 05fb9c83e..9aea0b3aa 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -145,7 +145,7 @@ void NewGameInitData(void)
ResetTrainerFanClub();
UnionRoomChat_InitializeRegisteredTexts();
ResetMiniGamesResults();
- sub_8143D24();
+ InitMEventData();
SetAllRenewableItemFlags();
WarpToPlayersRoom();
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
diff --git a/src/script.c b/src/script.c
index 0a4b69bac..ee4ffb7cf 100644
--- a/src/script.c
+++ b/src/script.c
@@ -506,7 +506,7 @@ u8 *GetRamScript(u8 objectId, u8 *script)
}
}
-bool32 sub_8069DFC(void)
+bool32 ValidateRamScript(void)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
diff --git a/src/trade.c b/src/trade.c
index b851d2093..e0f1c136d 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1213,7 +1213,7 @@ static void sub_804D548(void)
}
else
{
- sub_800AA80(32);
+ Link_StartSend5FFFwithParam(32);
sTradeMenuResourcesPtr->unk_6F = 13;
}
}
@@ -2008,7 +2008,7 @@ static void sub_804E908(void)
}
else
{
- sub_800AA80(12);
+ Link_StartSend5FFFwithParam(12);
}
sTradeMenuResourcesPtr->unk_6F = 12;
diff --git a/src/trade_scene.c b/src/trade_scene.c
index b420cb196..cbae2f6a3 100644
--- a/src/trade_scene.c
+++ b/src/trade_scene.c
@@ -2686,7 +2686,7 @@ static void sub_8053E8C(void)
}
else
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
}
gMain.state++;
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index e4778f5ed..f29c9c71c 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -590,7 +590,7 @@ static void Task_TrainerCard(u8 taskId)
}
break;
case 15:
- sub_800AAC0();
+ Link_TryStartSend5FFF();
DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 2, gText_WaitingTrainerFinishReading, 0, 1, TEXT_SPEED_FF, 0);
CopyWindowToVram(0, 3);
diff --git a/src/union_room.c b/src/union_room.c
index 844b06529..40a97b8c3 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -74,8 +74,8 @@ static void sub_8116D60(struct UnkStruct_Group * group, s32 id);
static void Task_ListenToWireless(u8 taskId);
static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 itemId, u8 y);
static u8 GetNewLeaderCandidate(void);
-static void sub_8117990(void);
-static void sub_81179A4(void);
+static void CreateTask_sub_8117900(void);
+static void CreateTask_sub_81175BC(void);
static void Task_MEvent_Leader(u8 taskId);
static void Task_CardOrNewsWithFriend(u8 taskId);
static void Task_CardOrNewsOverWireless(u8 taskId);
@@ -301,9 +301,9 @@ static const struct WindowTemplate sWindowTemplate_InviteToActivity = {
static const struct ListMenuItem sListMenuItems_InviteToActivity[] = {
{gUnknown_8459354, _8456CD8( ACTIVITY_CARD, 2)},
- {gUnknown_8459344, _8456CD8(ACTIVITY_BATTLE | 0x40, 2)},
- {gUnknown_845934C, _8456CD8(ACTIVITY_CHAT | 0x40, 2)},
- {gUnknown_8459360, _8456CD8(ACTIVITY_NONE | 0x40, 0)}
+ {gUnknown_8459344, _8456CD8(ACTIVITY_BATTLE | IN_UNION_ROOM, 2)},
+ {gUnknown_845934C, _8456CD8(ACTIVITY_CHAT | IN_UNION_ROOM, 2)},
+ {gUnknown_8459360, _8456CD8(ACTIVITY_NONE | IN_UNION_ROOM, 0)}
};
static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = {
@@ -570,15 +570,15 @@ ALIGNED(4) static const u8 gUnknown_845706C[] = {
};
ALIGNED(4) static const u8 gUnknown_8457070[] = {
- ACTIVITY_NONE | 0x40,
- ACTIVITY_BATTLE | 0x40,
- ACTIVITY_TRADE | 0x40,
- ACTIVITY_CHAT | 0x40,
- ACTIVITY_CARD | 0x40,
- ACTIVITY_ACCEPT | 0x40,
- ACTIVITY_DECLINE | 0x40,
- 0x13 | 0x40,
- 0x14 | 0x40,
+ ACTIVITY_NONE | IN_UNION_ROOM,
+ ACTIVITY_BATTLE | IN_UNION_ROOM,
+ ACTIVITY_TRADE | IN_UNION_ROOM,
+ ACTIVITY_CHAT | IN_UNION_ROOM,
+ ACTIVITY_CARD | IN_UNION_ROOM,
+ ACTIVITY_ACCEPT | IN_UNION_ROOM,
+ ACTIVITY_DECLINE | IN_UNION_ROOM,
+ 0x13 | IN_UNION_ROOM,
+ 0x14 | IN_UNION_ROOM,
0xFF
};
@@ -1023,8 +1023,8 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
{
if (gReceivedRemoteLinkPlayers != 0)
{
- sub_80FAFE0(1);
- sub_8117990();
+ sub_80FAFE0(TRUE);
+ CreateTask_sub_8117900();
sub_81161E4(data);
DestroyTask(taskId);
}
@@ -1512,7 +1512,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
LinkRfu_Shutdown();
break;
case 21:
- sub_8117990();
+ CreateTask_sub_8117900();
DestroyTask(taskId);
break;
}
@@ -1768,7 +1768,7 @@ static void sub_8117130(u8 taskId)
}
}
-static void sub_8117280(u8 taskId)
+static void Task_ExchangeCards(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -1792,7 +1792,7 @@ static void sub_8117280(u8 taskId)
if (GetLinkPlayerCount() == 2)
{
recvBuff = gBlockRecvBuffer[GetMultiplayerId() ^ 1];
- sub_81446D0(recvBuff[48]);
+ sub_81446D0(recvBuff[sizeof(struct TrainerCard) / 2]);
}
else
{
@@ -1806,16 +1806,16 @@ static void sub_8117280(u8 taskId)
}
}
-static void sub_8117354(void)
+static void CB2_ShowCard(void)
{
switch (gMain.state)
{
case 0:
- CreateTask(sub_8117280, 5);
+ CreateTask(Task_ExchangeCards, 5);
gMain.state++;
break;
case 1:
- if (!FuncIsActiveTask(sub_8117280))
+ if (!FuncIsActiveTask(Task_ExchangeCards))
ShowTrainerCardInLink(GetMultiplayerId() ^ 1, CB2_ReturnToField);
break;
}
@@ -1839,7 +1839,7 @@ void sub_81173C0(u16 battleFlags)
PlayBattleBGM();
}
-static void sub_8117440(u16 linkService, u16 x, u16 y)
+static void SetCableClubStateAndWarpCurrentMap(u16 linkService, u16 x, u16 y)
{
VarSet(VAR_CABLE_CLUB_STATE, linkService);
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
@@ -1847,7 +1847,7 @@ static void sub_8117440(u16 linkService, u16 x, u16 y)
WarpIntoMap();
}
-static void sub_81174B4(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService)
+static void SetCableClubStateAndWarpToNewMap(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService)
{
gSpecialVar_0x8004 = linkService;
VarSet(VAR_CABLE_CLUB_STATE, linkService);
@@ -1863,11 +1863,11 @@ static void sub_8117534(void)
switch (gMain.state)
{
case 0:
- CreateTask(sub_8117280, 5);
+ CreateTask(Task_ExchangeCards, 5);
gMain.state++;
break;
case 1:
- if (!FuncIsActiveTask(sub_8117280))
+ if (!FuncIsActiveTask(Task_ExchangeCards))
SetMainCallback2(sub_8056788);
break;
}
@@ -1878,74 +1878,79 @@ static void sub_8117534(void)
BuildOamBuffer();
}
-static void sub_8117594(void *arg0, bool32 arg1)
+static void CreateTrainerCardInBuffer(void *dest, bool32 setWonderCard)
{
- TrainerCard_GenerateCardForLinkPlayer((struct TrainerCard * )arg0);
- if (arg1)
- *((u16 *)(arg0 + sizeof(struct TrainerCard))) = GetWonderCardFlagId();
+ TrainerCard_GenerateCardForLinkPlayer((struct TrainerCard * )dest);
+ if (setWonderCard)
+ *((u16 *)(dest + sizeof(struct TrainerCard))) = GetWonderCardFlagId();
else
- *((u16 *)(arg0 + sizeof(struct TrainerCard))) = 0;
+ *((u16 *)(dest + sizeof(struct TrainerCard))) = 0;
}
-static void sub_81175BC(u8 taskId)
+static void Task_sub_81175BC(u8 taskId)
{
sub_81446C4();
switch (sPlayerCurrActivity)
{
- case 1 ... 4:
- case 9 ... 11:
- case 13:
- case 14:
+ case ACTIVITY_BATTLE:
+ case ACTIVITY_DBLBATTLE:
+ case ACTIVITY_MLTBATTLE:
+ case ACTIVITY_TRADE:
+ case ACTIVITY_PJUMP:
+ case ACTIVITY_BCRUSH:
+ case ACTIVITY_BPICK:
+ case ACTIVITY_SPINTRADE:
+ case ACTIVITY_ITEMTRADE:
RecordMixTrainerNames();
break;
}
switch (sPlayerCurrActivity)
{
- case 65:
- case 81:
+ case ACTIVITY_BATTLE | IN_UNION_ROOM:
+ case ACTIVITY_ACCEPT | IN_UNION_ROOM:
CleanupOverworldWindowsAndTilemaps();
gMain.savedCallback = CB2_UnionRoomBattle;
InitChooseHalfPartyForBattle(2);
break;
- case 1:
+ case ACTIVITY_BATTLE:
CleanupOverworldWindowsAndTilemaps();
- sub_8117594(gBlockSendBuffer, TRUE);
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
HealPlayerParty();
SavePlayerParty();
LoadPlayerBag();
- sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
+ SetCableClubStateAndWarpToNewMap(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
SetMainCallback2(sub_8117534);
break;
- case 2:
+ case ACTIVITY_DBLBATTLE:
CleanupOverworldWindowsAndTilemaps();
HealPlayerParty();
SavePlayerParty();
LoadPlayerBag();
- sub_8117594(gBlockSendBuffer, TRUE);
- sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
+ SetCableClubStateAndWarpToNewMap(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
SetMainCallback2(sub_8117534);
break;
- case 3:
+ case ACTIVITY_MLTBATTLE:
CleanupOverworldWindowsAndTilemaps();
HealPlayerParty();
SavePlayerParty();
LoadPlayerBag();
- sub_8117594(gBlockSendBuffer, TRUE);
- sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
+ SetCableClubStateAndWarpToNewMap(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
SetMainCallback2(sub_8117534);
break;
- case 4:
- sub_8117594(gBlockSendBuffer, TRUE);
+ case ACTIVITY_TRADE:
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
CleanupOverworldWindowsAndTilemaps();
- sub_81174B4(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
+ SetCableClubStateAndWarpToNewMap(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
SetMainCallback2(sub_8117534);
break;
- case 68:
+ case ACTIVITY_TRADE | IN_UNION_ROOM:
CreateTask(sub_8117130, 0);
break;
- case 5:
- case 69:
+ case ACTIVITY_CHAT:
+ case ACTIVITY_CHAT | IN_UNION_ROOM:
if (GetMultiplayerId() == 0)
{
sub_80F8CFC();
@@ -1953,26 +1958,26 @@ static void sub_81175BC(u8 taskId)
else
{
sub_80F8D14();
- SetHostRFUtgtGname(ACTIVITY_CHAT | 0x40, 0, 1);
+ SetHostRFUtgtGname(ACTIVITY_CHAT | IN_UNION_ROOM, 0, 1);
}
EnterUnionRoomChat();
break;
- case 8:
- case 72:
- sub_8117594(gBlockSendBuffer, FALSE);
- SetMainCallback2(sub_8117354);
+ case ACTIVITY_CARD:
+ case ACTIVITY_CARD | IN_UNION_ROOM:
+ CreateTrainerCardInBuffer(gBlockSendBuffer, FALSE);
+ SetMainCallback2(CB2_ShowCard);
break;
- case 9:
- sub_8117440(USING_MINIGAME, 5, 1);
- sub_8147AA8(GetCursorSelectionMonId(), CB2_LoadMap);
+ case ACTIVITY_PJUMP:
+ SetCableClubStateAndWarpCurrentMap(USING_MINIGAME, 5, 1);
+ StartPokemonJump(GetCursorSelectionMonId(), CB2_LoadMap);
break;
- case 10:
- sub_8117440(USING_BERRY_CRUSH, 9, 1);
- sub_814B754(CB2_LoadMap);
+ case ACTIVITY_BCRUSH:
+ SetCableClubStateAndWarpCurrentMap(USING_BERRY_CRUSH, 9, 1);
+ StartBerryCrush(CB2_LoadMap);
break;
- case 11:
- sub_8117440(USING_MINIGAME, 5, 1);
- sub_81507FC(GetCursorSelectionMonId(), CB2_LoadMap);
+ case ACTIVITY_BPICK:
+ SetCableClubStateAndWarpCurrentMap(USING_MINIGAME, 5, 1);
+ StartDodrioBerryPicking(GetCursorSelectionMonId(), CB2_LoadMap);
break;
}
@@ -1981,7 +1986,7 @@ static void sub_81175BC(u8 taskId)
ScriptContext2_Disable();
}
-static void sub_8117900(u8 taskId)
+static void Task_sub_8117900(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u16 *sendBuff = (u16*)(gBlockSendBuffer);
@@ -2011,20 +2016,20 @@ static void sub_8117900(u8 taskId)
if (IsLinkTaskFinished())
{
DestroyTask(taskId);
- sub_81179A4();
+ CreateTask_sub_81175BC();
}
break;
}
}
-static void sub_8117990(void)
+static void CreateTask_sub_8117900(void)
{
- CreateTask(sub_8117900, 0);
+ CreateTask(Task_sub_8117900, 0);
}
-static void sub_81179A4(void)
+static void CreateTask_sub_81175BC(void)
{
- u8 taskId = CreateTask(sub_81175BC, 0);
+ u8 taskId = CreateTask(Task_sub_81175BC, 0);
gTasks[taskId].data[0] = 0;
}
@@ -2103,6 +2108,7 @@ static void Task_MEvent_Leader(u8 taskId)
}
break;
case 6:
+ // The link with your friend has been dropped...
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84577F8))
{
data->playerCount = UnionRoomLeaderField0CompactionAndCount(data->field_0);
@@ -2200,6 +2206,7 @@ static void Task_MEvent_Leader(u8 taskId)
data->state++;
break;
case 14:
+ // Please start over from the beginning.
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84571B8))
{
DestroyTask(taskId);
@@ -2213,7 +2220,7 @@ static void Task_MEvent_Leader(u8 taskId)
}
else if (gReceivedRemoteLinkPlayers != 0)
{
- sub_80FAFE0(1);
+ sub_80FAFE0(TRUE);
data->state++;
}
break;
@@ -2653,7 +2660,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->field_0 = AllocZeroed(UROOM_MAX_GROUP_COUNT * sizeof(struct UnkStruct_x20));
data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
BlankUnkStruct_x20Array(data->field_0->arr, 8);
- sPlayerCurrActivity = 0x40;
+ sPlayerCurrActivity = IN_UNION_ROOM;
data->field_20 = sub_8119E84(data->field_C, data->field_4, 9);
ZeroUnionObjWork(data->unionObjs);
MakeGroupAssemblyAreasPassable();
@@ -2665,7 +2672,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->state = 2;
break;
case 2:
- SetHostRFUtgtGname(0x40, 0, 0);
+ SetHostRFUtgtGname(IN_UNION_ROOM, 0, 0);
RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
sub_800B1F4();
OpenLink();
@@ -2685,7 +2692,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
switch (sUnionRoomTrade.field_0)
{
case 1:
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
if (id >= PARTY_SIZE)
{
ResetUnionRoomTrade(&sUnionRoomTrade);
@@ -2710,8 +2717,8 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
else
{
- sub_80FB008(0x14 | 0x40, 0, 1);
- sPlayerCurrActivity = ACTIVITY_TRADE | 0x40;
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
+ sPlayerCurrActivity = ACTIVITY_TRADE | IN_UNION_ROOM;
RegisterTradeMon(GetCursorSelectionMonId(), &sUnionRoomTrade);
data->state = 51;
}
@@ -2729,7 +2736,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
{
if (gSpecialVar_Result == 9)
{
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
PlaySE(SE_PC_LOGIN);
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
data->state = 42;
@@ -2737,7 +2744,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
else if (gSpecialVar_Result == 11)
{
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
data->state = 23;
gSpecialVar_Result = 0;
}
@@ -2762,7 +2769,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
else if (PlayerIsTalkingToUnionRoomAide())
{
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
PlaySE(SE_PC_LOGIN);
sub_811B298();
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
@@ -2782,7 +2789,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->state = 11;
sub_811B298();
RfuUpdatePlayerGnameStateAndSend(0, 0, 0);
- sub_80FB008(0x13 | 0x40, sub_811B2D8(data), 0);
+ sub_80FB008(0x13 | IN_UNION_ROOM, sub_811B2D8(data), 0);
break;
}
HandleUnionRoomPlayerRefresh(data);
@@ -2791,14 +2798,14 @@ static void Task_ResumeUnionRoom(u8 taskId)
case 23:
if (!FuncIsActiveTask(Task_StartMenuHandleInput))
{
- sub_80FB008(0x40, 0, 0);
+ sub_80FB008(IN_UNION_ROOM, 0, 0);
data->state = 4;
}
break;
case 24:
UR_RunTextPrinters_CheckPrinter0Active();
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
switch (sub_811AA5C(data->field_0, taskData[0], taskData[1], playerGender))
{
case 0:
@@ -2829,21 +2836,21 @@ static void Task_ResumeUnionRoom(u8 taskId)
else
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_8457F90);
- sPlayerCurrActivity = 0x40;
+ sPlayerCurrActivity = IN_UNION_ROOM;
break;
}
if (gReceivedRemoteLinkPlayers != 0)
{
- sub_8117594(gBlockSendBuffer, TRUE);
- CreateTask(sub_8117280, 5);
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
+ CreateTask(Task_ExchangeCards, 5);
data->state = 38;
}
break;
case 38:
- if (!FuncIsActiveTask(sub_8117280))
+ if (!FuncIsActiveTask(Task_ExchangeCards))
{
- if (sPlayerCurrActivity == (ACTIVITY_TRADE | 0x40))
+ if (sPlayerCurrActivity == (ACTIVITY_TRADE | IN_UNION_ROOM))
UnionRoom_ScheduleFieldMessageWithFollowupState(31, gUnknown_84578BC);
else
data->state = 5;
@@ -2874,9 +2881,9 @@ static void Task_ResumeUnionRoom(u8 taskId)
{
data->partnerYesNoResponse = 0;
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- if (var5 == -2 || var5 == 0x40)
+ if (var5 == -2 || var5 == IN_UNION_ROOM)
{
- data->playerSendBuffer[0] = 0x40;
+ data->playerSendBuffer[0] = IN_UNION_ROOM;
sub_80F9E2C(data->playerSendBuffer);
StringCopy(gStringVar4, gUnknown_845842C[gLinkPlayers[0].gender]);
data->state = 32;
@@ -2885,13 +2892,13 @@ static void Task_ResumeUnionRoom(u8 taskId)
{
sPlayerCurrActivity = var5;
sPlayerActivityGroupSize = (u32)(var5) >> 8;
- if (sPlayerCurrActivity == (ACTIVITY_BATTLE | 0x40) && !HasAtLeastTwoMonsOfLevel30OrLower())
+ if (sPlayerCurrActivity == (ACTIVITY_BATTLE | IN_UNION_ROOM) && !HasAtLeastTwoMonsOfLevel30OrLower())
{
UnionRoom_ScheduleFieldMessageWithFollowupState(5, gUnknown_845847C);
}
else
{
- data->playerSendBuffer[0] = sPlayerCurrActivity | 0x40;
+ data->playerSendBuffer[0] = sPlayerCurrActivity | IN_UNION_ROOM;
sub_80F9E2C(data->playerSendBuffer);
data->state = 27;
}
@@ -2914,11 +2921,11 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
break;
case 32:
- sub_800AAC0();
+ Link_TryStartSend5FFF();
data->state = 36;
break;
case 31:
- data->playerSendBuffer[0] = ACTIVITY_TRADE | 0x40;
+ data->playerSendBuffer[0] = ACTIVITY_TRADE | IN_UNION_ROOM;
data->playerSendBuffer[1] = sUnionRoomTrade.species;
data->playerSendBuffer[2] = sUnionRoomTrade.level;
sub_80F9E2C(data->playerSendBuffer);
@@ -2933,7 +2940,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
else
{
PollPartnerYesNoResponse(data);
- if (data->partnerYesNoResponse == (ACTIVITY_ACCEPT | 0x40))
+ if (data->partnerYesNoResponse == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
{
if (sPlayerCurrActivity == ACTIVITY_CARD)
{
@@ -2945,10 +2952,10 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->state = 13;
}
}
- else if (data->partnerYesNoResponse == (ACTIVITY_DECLINE | 0x40))
+ else if (data->partnerYesNoResponse == (ACTIVITY_DECLINE | IN_UNION_ROOM))
{
data->state = 32;
- GetURoomActivityRejectMsg(gStringVar4, sPlayerCurrActivity | 0x40, gLinkPlayers[0].gender);
+ GetURoomActivityRejectMsg(gStringVar4, sPlayerCurrActivity | IN_UNION_ROOM, gLinkPlayers[0].gender);
sPlayerCurrActivity = 0;
}
}
@@ -2989,8 +2996,8 @@ static void Task_ResumeUnionRoom(u8 taskId)
{
case 0:
CopyBgTilemapBufferToVram(0);
- sPlayerCurrActivity = ACTIVITY_CHAT | 0x40;
- sub_80FB008(ACTIVITY_CHAT | 0x40, 0, 1);
+ sPlayerCurrActivity = ACTIVITY_CHAT | IN_UNION_ROOM;
+ sub_80FB008(ACTIVITY_CHAT | IN_UNION_ROOM, 0, 1);
sub_80FC114(data->field_0->arr[taskData[1]].gname_uname.uname, &data->field_0->arr[taskData[1]].gname_uname.gname, sPlayerCurrActivity);
data->field_12 = taskData[1];
data->state = 20;
@@ -3020,7 +3027,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
case 1:
case 2:
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
if (sub_80FBB0C() == TRUE)
sub_811868C(gUnknown_84585E8[playerGender]);
else
@@ -3036,7 +3043,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
if (RfuIsErrorStatus1or2())
{
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
- sub_80FB008(0x14 | 0x40, 0, 1);
+ sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1);
if (sub_80FBB0C() == TRUE)
sub_811868C(gUnknown_84585E8[playerGender]);
else
@@ -3059,14 +3066,14 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
else if (gReceivedRemoteLinkPlayers != 0)
{
- sub_8117594(gBlockSendBuffer, TRUE);
- CreateTask(sub_8117280, 5);
+ CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE);
+ CreateTask(Task_ExchangeCards, 5);
data->state = 39;
}
break;
case 39:
ReceiveUnionRoomActivityPacket(data);
- if (!FuncIsActiveTask(sub_8117280))
+ if (!FuncIsActiveTask(Task_ExchangeCards))
{
data->state = 33;
StringCopy(gStringVar1, gLinkPlayers[1].name);
@@ -3095,19 +3102,19 @@ static void Task_ResumeUnionRoom(u8 taskId)
switch (sub_811A14C(&data->textState, FALSE))
{
case 0:
- data->playerSendBuffer[0] = ACTIVITY_ACCEPT | 0x40;
- if (sPlayerCurrActivity == (ACTIVITY_CHAT | 0x40))
- sub_80FB008(sPlayerCurrActivity | 0x40, sub_811B2A8(1), 0);
+ data->playerSendBuffer[0] = ACTIVITY_ACCEPT | IN_UNION_ROOM;
+ if (sPlayerCurrActivity == (ACTIVITY_CHAT | IN_UNION_ROOM))
+ sub_80FB008(sPlayerCurrActivity | IN_UNION_ROOM, sub_811B2A8(1), 0);
else
- sub_80FB008(sPlayerCurrActivity | 0x40, sub_811B2A8(1), 1);
+ sub_80FB008(sPlayerCurrActivity | IN_UNION_ROOM, sub_811B2A8(1), 1);
data->field_8->arr[0].field_1B = 0;
taskData[3] = 0;
- if (sPlayerCurrActivity == (ACTIVITY_BATTLE | 0x40))
+ if (sPlayerCurrActivity == (ACTIVITY_BATTLE | IN_UNION_ROOM))
{
if (!HasAtLeastTwoMonsOfLevel30OrLower())
{
- data->playerSendBuffer[0] = ACTIVITY_DECLINE | 0x40;
+ data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
sub_80F9E2C(data->playerSendBuffer);
data->state = 10;
StringCopy(gStringVar4, gUnknown_84584C0);
@@ -3118,7 +3125,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->state = 13;
}
}
- else if (sPlayerCurrActivity == (ACTIVITY_CARD | 0x40))
+ else if (sPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM))
{
sub_80F9E2C(data->playerSendBuffer);
ViewURoomPartnerTrainerCard(gStringVar4, data, 1);
@@ -3132,7 +3139,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
break;
case 1:
case -1:
- data->playerSendBuffer[0] = ACTIVITY_DECLINE | 0x40;
+ data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM;
sub_80F9E2C(data->playerSendBuffer);
data->state = 10;
sub_81162E0(gStringVar4, sPlayerCurrActivity);
@@ -3140,13 +3147,13 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
break;
case 10:
- sub_800AAC0();
+ Link_TryStartSend5FFF();
data->state = 36;
break;
case 36:
if (gReceivedRemoteLinkPlayers == 0)
{
- sPlayerCurrActivity = 0x40;
+ sPlayerCurrActivity = IN_UNION_ROOM;
UnionRoom_ScheduleFieldMessageWithFollowupState(37, gStringVar4);
memset(data->playerSendBuffer, 0, sizeof(data->playerSendBuffer));
data->recvActivityRequest[0] = 0;
@@ -3158,7 +3165,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
sub_811B258(FALSE);
break;
case 13:
- GetURoomActivityStartMsg(gStringVar4, sPlayerCurrActivity | 0x40);
+ GetURoomActivityStartMsg(gStringVar4, sPlayerCurrActivity | IN_UNION_ROOM);
UnionRoom_ScheduleFieldMessageWithFollowupState(14, gStringVar4);
break;
case 14:
@@ -3188,7 +3195,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
DeleteUnionObjWorkAndStopTask();
DestroyTask(taskId);
Free(sUnionRoomMain.uRoom);
- sub_81179A4();
+ CreateTask_sub_81175BC();
}
break;
case 42:
@@ -3366,8 +3373,8 @@ static void Task_ResumeUnionRoom(u8 taskId)
}
break;
case 51:
- sPlayerCurrActivity = ACTIVITY_TRADE | 0x40;
- sub_80FC114(data->field_0->arr[taskData[1]].gname_uname.uname, &data->field_0->arr[taskData[1]].gname_uname.gname, ACTIVITY_TRADE | 0x40);
+ sPlayerCurrActivity = ACTIVITY_TRADE | IN_UNION_ROOM;
+ sub_80FC114(data->field_0->arr[taskData[1]].gname_uname.uname, &data->field_0->arr[taskData[1]].gname_uname.gname, ACTIVITY_TRADE | IN_UNION_ROOM);
IntlConvPartnerUname(gStringVar1, data->field_0->arr[taskData[1]]);
UR_PrintFieldMessage(gURText_PleaseWaitMsgs[2]);
data->state = 25;
@@ -3398,7 +3405,7 @@ static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * arg0)
if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == 0x2F00)
{
arg0->recvActivityRequest[0] = gRecvCmds[1][1];
- if (gRecvCmds[1][1] == (ACTIVITY_TRADE | 0x40))
+ if (gRecvCmds[1][1] == (ACTIVITY_TRADE | IN_UNION_ROOM))
{
arg0->recvActivityRequest[1] = gRecvCmds[1][2];
arg0->recvActivityRequest[2] = gRecvCmds[1][3];
@@ -3424,7 +3431,7 @@ static bool32 sub_8119944(struct UnkStruct_URoom * arg0)
else if (var == 2)
{
arg0->state = 36;
- sub_800AAC0();
+ Link_TryStartSend5FFF();
return FALSE;
}
}
@@ -4227,7 +4234,7 @@ static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 play
{
IntlConvPartnerUname(gStringVar1, *r5);
r2 = PlayerHasMetTrainerBefore(ReadAsU16(r5->gname_uname.gname.unk_00.playerTrainerId), gStringVar1);
- if (r5->gname_uname.gname.activity == (ACTIVITY_CHAT | 0x40))
+ if (r5->gname_uname.gname.activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
{
StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[r2][playerGender]);
return 2;
@@ -4391,16 +4398,16 @@ static void GetURoomActivityRejectMsg(u8 *dst, s32 activity, u32 playerGender)
{
switch (activity)
{
- case ACTIVITY_BATTLE | 0x40:
+ case ACTIVITY_BATTLE | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_8458314[playerGender]);
break;
- case ACTIVITY_CHAT | 0x40:
+ case ACTIVITY_CHAT | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_84585E8[playerGender]);
break;
- case ACTIVITY_TRADE | 0x40:
+ case ACTIVITY_TRADE | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_8458F9C);
break;
- case ACTIVITY_CARD | 0x40:
+ case ACTIVITY_CARD | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_84583B4[playerGender]);
break;
}
@@ -4413,13 +4420,13 @@ static void GetURoomActivityStartMsg(u8 *dst, u8 activity)
switch (activity)
{
- case ACTIVITY_BATTLE | 0x40:
+ case ACTIVITY_BATTLE | IN_UNION_ROOM:
StringCopy(dst, gUnknown_8458230[mpId][gender][0]);
break;
- case ACTIVITY_TRADE | 0x40:
+ case ACTIVITY_TRADE | IN_UNION_ROOM:
StringCopy(dst, gUnknown_8458230[mpId][gender][2]);
break;
- case ACTIVITY_CHAT | 0x40:
+ case ACTIVITY_CHAT | IN_UNION_ROOM:
StringCopy(dst, gUnknown_8458230[mpId][gender][1]);
break;
}
@@ -4433,15 +4440,15 @@ static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_
switch (activity_p[0])
{
- case ACTIVITY_BATTLE | 0x40:
+ case ACTIVITY_BATTLE | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_8457CA4);
result = 1;
break;
- case ACTIVITY_CHAT | 0x40:
+ case ACTIVITY_CHAT | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_8457CF8);
result = 1;
break;
- case ACTIVITY_TRADE | 0x40:
+ case ACTIVITY_TRADE | IN_UNION_ROOM:
ConvertIntToDecimalStringN(arg3->activityRequestStrbufs[0], sUnionRoomTrade.playerLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
StringCopy(arg3->activityRequestStrbufs[1], gSpeciesNames[sUnionRoomTrade.playerSpecies]);
for (i = 0; i < RFU_CHILD_MAX; i++)
@@ -4468,11 +4475,11 @@ static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_
}
result = 1;
break;
- case ACTIVITY_CARD | 0x40:
+ case ACTIVITY_CARD | IN_UNION_ROOM:
StringExpandPlaceholders(dst, gUnknown_8457C48);
result = 1;
break;
- case 0x40:
+ case IN_UNION_ROOM:
// Chat dropped
StringExpandPlaceholders(dst, gUnknown_8457E0C);
result = 2;
@@ -4486,14 +4493,14 @@ static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * arg0)
{
if (gRecvCmds[0][1] != 0)
{
- if (gRecvCmds[0][1] == (ACTIVITY_ACCEPT | 0x40))
+ if (gRecvCmds[0][1] == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
{
- arg0->partnerYesNoResponse = ACTIVITY_ACCEPT | 0x40;
+ arg0->partnerYesNoResponse = ACTIVITY_ACCEPT | IN_UNION_ROOM;
return TRUE;
}
- else if (gRecvCmds[0][1] == (ACTIVITY_DECLINE | 0x40))
+ else if (gRecvCmds[0][1] == (ACTIVITY_DECLINE | IN_UNION_ROOM))
{
- arg0->partnerYesNoResponse = ACTIVITY_DECLINE | 0x40;
+ arg0->partnerYesNoResponse = ACTIVITY_DECLINE | IN_UNION_ROOM;
return TRUE;
}
}
@@ -4612,7 +4619,7 @@ static void sub_811B258(bool32 arg0)
if (arg0)
{
RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
- sub_80FB008(0x40, 0, 0);
+ sub_80FB008(IN_UNION_ROOM, 0, 0);
}
}
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index 449260a5e..a2021e62e 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -167,7 +167,7 @@ void CB2_UnionRoomBattle(void)
}
else
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
if (gBlockRecvBuffer[GetMultiplayerId()][0] == (ACTIVITY_DECLINE | 0x40))
{
gMain.state = 6;
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index fb5860ef8..167da514a 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -587,7 +587,7 @@ static void ChatEntryRoutine_ExitChat(void)
case 5:
if (IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}
@@ -622,7 +622,7 @@ static void ChatEntryRoutine_Drop(void)
case 1:
if (!RunDisplaySubtask(0) && IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}
@@ -668,7 +668,7 @@ static void ChatEntryRoutine_Disbanded(void)
case 2:
if (RunDisplaySubtask(0) != TRUE && IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- sub_800AAC0();
+ Link_TryStartSend5FFF();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}