summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-10-17 02:09:31 -0400
committerGriffinR <griffin.g.richards@gmail.com>2021-10-17 02:09:31 -0400
commit3cd27acbea87007fdb041035919c5b8a1b4bafcc (patch)
treebbc15d542f684e22b08c4cc2f45579cee08c3afc /src
parent5f9069628d193b61b7601dc016509b91024ffa1b (diff)
Document wonder news
Diffstat (limited to 'src')
-rw-r--r--src/mevent_news.c176
-rw-r--r--src/mystery_gift.c6
2 files changed, 97 insertions, 85 deletions
diff --git a/src/mevent_news.c b/src/mevent_news.c
index 0fbb9452d..27b22566d 100644
--- a/src/mevent_news.c
+++ b/src/mevent_news.c
@@ -4,27 +4,43 @@
#include "event_data.h"
#include "mevent_news.h"
-static u32 sub_801DCAC(struct WonderNewsMetadata *);
-static void sub_801DD10(struct WonderNewsMetadata *);
-static u32 sub_801DD44(struct WonderNewsMetadata *);
-static void sub_801DCD8(struct WonderNewsMetadata *);
-static void sub_801DCCC(struct WonderNewsMetadata *);
-
-void GenerateRandomWonderNews(u32 a0)
+/*
+ Wonder News related functions.
+ Because this feature is largely unused, the names in here are
+ mostly nebulous and without a real indication of purpose.
+*/
+
+enum {
+ NEWS_VAL_INVALID,
+ NEWS_VAL_RECV_FRIEND,
+ NEWS_VAL_RECV_WIRELESS,
+ NEWS_VAL_NONE,
+ NEWS_VAL_SENT,
+ NEWS_VAL_SENT_MAX,
+ NEWS_VAL_GET_MAX,
+};
+
+static u32 GetNewsId(struct WonderNewsMetadata *);
+static void IncrementGetNewsCounter(struct WonderNewsMetadata *);
+static u32 GetNewsValByNewsType(struct WonderNewsMetadata *);
+static void IncrementSentNewsCounter(struct WonderNewsMetadata *);
+static void ResetSentNewsCounter(struct WonderNewsMetadata *);
+
+void GenerateRandomWonderNews(u32 newsType)
{
struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata();
- data->unk_0_0 = a0;
- switch (a0)
+ data->newsType = newsType;
+ switch (newsType)
{
- case 0:
+ case WONDER_NEWS_NONE:
break;
- case 1:
- case 2:
- data->unk_1 = (Random() % 15) + 16;
+ case WONDER_NEWS_RECV_FRIEND:
+ case WONDER_NEWS_RECV_WIRELESS:
+ data->rand = (Random() % 15) + 16;
break;
- case 3:
- data->unk_1 = (Random() % 15) + 1;
+ case WONDER_NEWS_SENT:
+ data->rand = (Random() % 15) + 1;
break;
}
}
@@ -33,116 +49,112 @@ void InitSavedWonderNews(void)
{
struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata();
- data->unk_0_0 = 0;
- data->unk_0_2 = 0;
- data->unk_0_5 = 0;
- data->unk_1 = 0;
- VarSet(VAR_0x402E, 0);
+ data->newsType = WONDER_NEWS_NONE;
+ data->sentCounter = 0;
+ data->getCounter = 0;
+ data->rand = 0;
+ VarSet(VAR_WONDER_NEWS_COUNTER, 0);
}
-void sub_801DBDC(void)
+// Unused
+static void TryIncrementWonderNewsVar(void)
{
- u16 *r4 = GetVarPointer(VAR_0x402E);
+ u16 *var = GetVarPointer(VAR_WONDER_NEWS_COUNTER);
struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata();
- struct WonderNewsMetadata r0 = *data;
- if ((u8)r0.unk_0_5 > 4 && ++(*r4) > 0x1f3)
+ if (data->getCounter > 4 && ++(*var) >= 500)
{
- data->unk_0_5 = 0;
- *r4 = 0;
+ data->getCounter = 0;
+ *var = 0;
}
}
// Unused
-u16 sub_801DC20(void)
+u16 RetrieveWonderNewsVal(void)
{
- u16 *r6 = &gSpecialVar_Result;
+ u16 *result = &gSpecialVar_Result;
struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata();
- u16 r5;
+ u16 newsVal;
+ // Checks if Mystery Event is enabled, not Mystery Gift?
if (!IsMysteryEventEnabled() || !ValidateSavedWonderNews())
return 0;
- r5 = sub_801DD44(data);
+ newsVal = GetNewsValByNewsType(data);
- switch (r5)
+ switch (newsVal)
{
- case 0:
- break;
- case 1:
- *r6 = sub_801DCAC(data);
+ case NEWS_VAL_RECV_FRIEND:
+ *result = GetNewsId(data);
break;
- case 2:
- *r6 = sub_801DCAC(data);
+ case NEWS_VAL_RECV_WIRELESS:
+ *result = GetNewsId(data);
break;
- case 3:
+ case NEWS_VAL_SENT:
+ *result = GetNewsId(data);
+ IncrementSentNewsCounter(data);
break;
- case 4:
- *r6 = sub_801DCAC(data);
- sub_801DCD8(data);
+ case NEWS_VAL_SENT_MAX:
+ *result = GetNewsId(data);
+ ResetSentNewsCounter(data);
break;
- case 5:
- *r6 = sub_801DCAC(data);
- sub_801DCCC(data);
- break;
- case 6:
+ case NEWS_VAL_INVALID:
+ case NEWS_VAL_NONE:
+ case NEWS_VAL_GET_MAX:
break;
}
- return r5;
+ return newsVal;
}
-static u32 sub_801DCAC(struct WonderNewsMetadata *data)
+static u32 GetNewsId(struct WonderNewsMetadata *data)
{
- u32 r4;
-
- data->unk_0_0 = 0;
- r4 = data->unk_1 + 0x84;
- data->unk_1 = 0;
- sub_801DD10(data);
- return r4;
+ u32 id;
+ data->newsType = WONDER_NEWS_NONE;
+ id = data->rand + 132;
+ data->rand = 0;
+ IncrementGetNewsCounter(data);
+ return id;
}
-static void sub_801DCCC(struct WonderNewsMetadata *data)
+static void ResetSentNewsCounter(struct WonderNewsMetadata *data)
{
- data->unk_0_2 = 0;
+ data->sentCounter = 0;
}
-static void sub_801DCD8(struct WonderNewsMetadata *data)
+static void IncrementSentNewsCounter(struct WonderNewsMetadata *data)
{
- data->unk_0_2++;
- if ((u8)data->unk_0_2 > 4)
- data->unk_0_2 = 4;
+ data->sentCounter++;
+ if (data->sentCounter > 4)
+ data->sentCounter = 4;
}
-static void sub_801DD10(struct WonderNewsMetadata *data)
+static void IncrementGetNewsCounter(struct WonderNewsMetadata *data)
{
- data->unk_0_5++;
- if ((u8)data->unk_0_5 > 5)
- data->unk_0_5 = 5;
+ data->getCounter++;
+ if (data->getCounter > 5)
+ data->getCounter = 5;
}
-static u32 sub_801DD44(struct WonderNewsMetadata *data)
+static u32 GetNewsValByNewsType(struct WonderNewsMetadata *data)
{
- struct WonderNewsMetadata r0;
- if ((u8)data->unk_0_5 == 5)
- return 6;
+ if (data->getCounter == 5)
+ return NEWS_VAL_GET_MAX;
- r0 = *data;
- switch (r0.unk_0_0)
+ switch (data->newsType)
{
- case 0:
- return 3;
- case 1:
- return 1;
- case 2:
- return 2;
- case 3:
- if ((u8)r0.unk_0_2 < 3)
- return 4;
- return 5;
+ case WONDER_NEWS_NONE:
+ return NEWS_VAL_NONE;
+ case WONDER_NEWS_RECV_FRIEND:
+ return NEWS_VAL_RECV_FRIEND;
+ case WONDER_NEWS_RECV_WIRELESS:
+ return NEWS_VAL_RECV_WIRELESS;
+ case WONDER_NEWS_SENT:
+ if (data->sentCounter < 3)
+ return NEWS_VAL_SENT;
+ return NEWS_VAL_SENT_MAX;
default:
AGB_ASSERT(0);
- return 0;
+ return NEWS_VAL_INVALID;
}
}
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index 35bf8e9ed..864ea9838 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -1371,9 +1371,9 @@ static void Task_MysteryGift(u8 taskId)
if (data->msgId == CLI_MSG_NEWS_RECEIVED)
{
if (data->sourceIsFriend == TRUE)
- GenerateRandomWonderNews(1);
+ GenerateRandomWonderNews(WONDER_NEWS_RECV_FRIEND);
else
- GenerateRandomWonderNews(2);
+ GenerateRandomWonderNews(WONDER_NEWS_RECV_WIRELESS);
}
if (!successMsg)
{
@@ -1580,7 +1580,7 @@ static void Task_MysteryGift(u8 taskId)
{
if (data->sourceIsFriend == TRUE && data->msgId == SVR_MSG_NEWS_SENT)
{
- GenerateRandomWonderNews(3);
+ GenerateRandomWonderNews(WONDER_NEWS_SENT);
data->state = MG_STATE_SAVE_LOAD_GIFT;
}
else