diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-10-17 02:09:31 -0400 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2021-10-17 02:09:31 -0400 |
commit | 3cd27acbea87007fdb041035919c5b8a1b4bafcc (patch) | |
tree | bbc15d542f684e22b08c4cc2f45579cee08c3afc /src | |
parent | 5f9069628d193b61b7601dc016509b91024ffa1b (diff) |
Document wonder news
Diffstat (limited to 'src')
-rw-r--r-- | src/mevent_news.c | 176 | ||||
-rw-r--r-- | src/mystery_gift.c | 6 |
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 |