through HandleLoadWonderCardOrNews
This commit is contained in:
+1
-1
@@ -59,7 +59,7 @@ u16 sub_8146CE8(void)
|
||||
struct MysteryEventStruct *r4 = sub_8143D94();
|
||||
u16 r5;
|
||||
|
||||
if (!sub_806E2BC() || !sub_8143E1C())
|
||||
if (!sub_806E2BC() || !ValidateReceivedWonderCard())
|
||||
return 0;
|
||||
|
||||
r5 = sub_8146E0C(r4);
|
||||
|
||||
+12
-12
@@ -490,12 +490,12 @@ void sub_8143D24(void)
|
||||
sub_80BDE28();
|
||||
}
|
||||
|
||||
struct MEventBuffer_3120_Sub * sub_8143D58(void)
|
||||
struct MEventBuffer_3120_Sub * GetSavedWonderNews(void)
|
||||
{
|
||||
return &gSaveBlock1Ptr->unk_3120.buffer_000.data;
|
||||
}
|
||||
|
||||
struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void)
|
||||
struct MEventBuffer_32E0_Sub * GetSavedWonderCard(void)
|
||||
{
|
||||
return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
|
||||
}
|
||||
@@ -530,7 +530,7 @@ bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8143E1C(void)
|
||||
bool32 ValidateReceivedWonderCard(void)
|
||||
{
|
||||
if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc)
|
||||
return FALSE;
|
||||
@@ -556,7 +556,7 @@ bool32 sub_8143E78(void)
|
||||
|
||||
void sub_8143E9C(void)
|
||||
{
|
||||
CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data));
|
||||
CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data));
|
||||
gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0;
|
||||
}
|
||||
|
||||
@@ -570,7 +570,7 @@ bool32 sub_8143EF4(const u8 * src)
|
||||
{
|
||||
const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data;
|
||||
u32 i;
|
||||
if (!sub_8143E1C())
|
||||
if (!ValidateReceivedWonderCard())
|
||||
return FALSE;
|
||||
for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
|
||||
{
|
||||
@@ -606,7 +606,7 @@ bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8143FC8(void)
|
||||
bool32 ValidateReceivedWonderNews(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
|
||||
return FALSE;
|
||||
@@ -654,7 +654,7 @@ void sub_81440B4(void)
|
||||
|
||||
u16 sub_81440E8(void)
|
||||
{
|
||||
if (sub_8143FC8())
|
||||
if (ValidateReceivedWonderNews())
|
||||
return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00;
|
||||
return 0;
|
||||
}
|
||||
@@ -721,7 +721,7 @@ bool32 sub_81441F0(const u16 * data)
|
||||
s32 sub_8144218(void)
|
||||
{
|
||||
struct MEventBuffer_32E0_Sub * data;
|
||||
if (!sub_8143FC8())
|
||||
if (!ValidateReceivedWonderNews())
|
||||
return 0;
|
||||
data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
|
||||
if (data->unk_08_0 != 1)
|
||||
@@ -759,11 +759,11 @@ void sub_81442CC(struct MEventStruct_Unk1442CC * data)
|
||||
data->unk_08 = 1;
|
||||
data->unk_0C = 1;
|
||||
data->unk_10 = 1;
|
||||
if (sub_8143FC8())
|
||||
if (ValidateReceivedWonderNews())
|
||||
{
|
||||
data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
|
||||
data->unk_14 = GetSavedWonderCard()->unk_00;
|
||||
data->unk_20 = *sav1_get_mevent_buffer_2();
|
||||
data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
|
||||
data->unk_44 = GetSavedWonderCard()->unk_09;
|
||||
}
|
||||
else
|
||||
data->unk_14 = 0;
|
||||
@@ -945,7 +945,7 @@ bool32 sub_81446D0(u16 a0)
|
||||
gUnknown_203F3BC = FALSE;
|
||||
if (a0 == 0)
|
||||
return FALSE;
|
||||
if (!sub_8143FC8())
|
||||
if (!ValidateReceivedWonderNews())
|
||||
return FALSE;
|
||||
if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0)
|
||||
return FALSE;
|
||||
|
||||
@@ -126,7 +126,7 @@ const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = {
|
||||
{1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C}
|
||||
};
|
||||
|
||||
bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
|
||||
bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
|
||||
{
|
||||
if (r5 == NULL || r6 == NULL)
|
||||
return FALSE;
|
||||
@@ -155,7 +155,7 @@ void sub_81456F0(void)
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_814571C(void)
|
||||
s32 FadeToWonderCardMenu(void)
|
||||
{
|
||||
if (gUnknown_203F3C8 == NULL)
|
||||
return -1;
|
||||
@@ -508,7 +508,7 @@ const struct UnkStruct_8467FB8 gUnknown_8468720[] = {
|
||||
{1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0}
|
||||
};
|
||||
|
||||
bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0)
|
||||
bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0)
|
||||
{
|
||||
if (a0 == NULL)
|
||||
return FALSE;
|
||||
@@ -533,7 +533,7 @@ void sub_81462EC(void)
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_8146318(void)
|
||||
s32 FadeToWonderNewsMenu(void)
|
||||
{
|
||||
if (gUnknown_203F3CC == NULL)
|
||||
return -1;
|
||||
|
||||
+2
-2
@@ -526,12 +526,12 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
|
||||
break;
|
||||
case 26:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506);
|
||||
memcpy(svr->mevent_32e0, sav1_get_mevent_buffer_1(), 332);
|
||||
memcpy(svr->mevent_32e0, GetSavedWonderCard(), 332);
|
||||
sub_814410C(svr->mevent_32e0);
|
||||
break;
|
||||
case 27:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512);
|
||||
memcpy(svr->mevent_3120, sub_8143D58(), 444);
|
||||
memcpy(svr->mevent_3120, GetSavedWonderNews(), 444);
|
||||
break;
|
||||
case 28:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517);
|
||||
|
||||
+204
-7
@@ -17,15 +17,9 @@
|
||||
#include "list_menu.h"
|
||||
#include "link_rfu.h"
|
||||
#include "string_util.h"
|
||||
#include "mevent.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern const struct WindowTemplate sWindowTemplate_ThreeOptions;
|
||||
extern const struct ListMenuItem sListMenuItems_CardsOrNews[];
|
||||
extern const struct ListMenuItem sListMenuItems_WirelessOrFriend[];
|
||||
extern const struct ListMenuTemplate sListMenuTemplate_ThreeOptions;
|
||||
extern const struct TextColor sMG_Ereader_TextColor_1;
|
||||
extern const struct TextColor sMG_Ereader_TextColor_2;
|
||||
|
||||
EWRAM_DATA u8 sDownArrowCounterAndYCoordIdx[8] = {};
|
||||
EWRAM_DATA bool8 gGiftIsFromEReader = FALSE;
|
||||
|
||||
@@ -117,6 +111,24 @@ static const struct WindowTemplate sMainWindows[] = {
|
||||
}
|
||||
};
|
||||
|
||||
extern const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28;
|
||||
extern const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20;
|
||||
extern const struct WindowTemplate sMysteryGiftMenuWindowTemplate;
|
||||
extern const struct WindowTemplate sWindowTemplate_ThreeOptions;
|
||||
extern const struct WindowTemplate sWindowTemplate_YesNoBox;
|
||||
extern const struct WindowTemplate sWindowTemplate_7by8;
|
||||
extern const struct WindowTemplate sWindowTemplate_7by6;
|
||||
extern const struct WindowTemplate sWindowTemplate_7by4;
|
||||
extern const struct ListMenuItem sListMenuItems_CardsOrNews[];
|
||||
extern const struct ListMenuItem sListMenuItems_WirelessOrFriend[];
|
||||
extern const struct ListMenuTemplate sListMenuTemplate_ThreeOptions;
|
||||
extern const struct ListMenuTemplate sListMenu_ReceiveSendToss;
|
||||
extern const struct ListMenuTemplate sListMenu_ReceiveToss;
|
||||
extern const struct ListMenuTemplate sListMenu_ReceiveSend;
|
||||
extern const struct ListMenuTemplate sListMenu_Receive;
|
||||
extern const struct TextColor sMG_Ereader_TextColor_1;
|
||||
extern const struct TextColor sMG_Ereader_TextColor_2;
|
||||
|
||||
void vblankcb_mystery_gift_e_reader_run(void)
|
||||
{
|
||||
ProcessSpriteCopyRequests();
|
||||
@@ -236,6 +248,8 @@ extern const u8 gUnknown_841EDCA[];
|
||||
extern const u8 gUnknown_841EDBD[];
|
||||
extern const u8 gUnknown_841DE50[];
|
||||
extern const u8 gUnknown_841DE51[];
|
||||
extern const u8 gText_WhatToDoWithCards[];
|
||||
extern const u8 gText_WhatToDoWithNews[];
|
||||
|
||||
void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCancel)
|
||||
{
|
||||
@@ -426,5 +440,188 @@ u32 MysteryGift_HandleThreeOptionMenu(u8 * unused0, u16 * unused1, u8 whichMenu)
|
||||
return response;
|
||||
}
|
||||
|
||||
s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str)
|
||||
{
|
||||
struct WindowTemplate windowTemplate;
|
||||
s8 input;
|
||||
|
||||
switch (*textState)
|
||||
{
|
||||
case 0:
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
if (yesNoBoxPlacement == 0)
|
||||
{
|
||||
*windowId = AddWindow(&sWindowTemplate_PromptYesOrNo_Width28);
|
||||
}
|
||||
else
|
||||
{
|
||||
*windowId = AddWindow(&sWindowTemplate_PromptYesOrNo_Width20);
|
||||
}
|
||||
FillWindowPixelBuffer(*windowId, 0x11);
|
||||
AddTextPrinterParametrized2(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
|
||||
DrawTextBorderOuter(*windowId, 0x001, 0x0F);
|
||||
CopyWindowToVram(*windowId, 2);
|
||||
PutWindowTilemap(*windowId);
|
||||
(*textState)++;
|
||||
break;
|
||||
case 1:
|
||||
windowTemplate = sWindowTemplate_YesNoBox;
|
||||
if (yesNoBoxPlacement == 0)
|
||||
{
|
||||
windowTemplate.tilemapTop = 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
windowTemplate.tilemapTop = 15;
|
||||
}
|
||||
sub_810FF60(&windowTemplate, 2, 0, 2, 10, 14, 0);
|
||||
(*textState)++;
|
||||
break;
|
||||
case 2:
|
||||
input = ProcessMenuInputNoWrap_();
|
||||
if (input == -1 || input == 0 || input == 1)
|
||||
{
|
||||
*textState = 0;
|
||||
rbox_fill_rectangle(*windowId);
|
||||
ClearWindowTilemap(*windowId);
|
||||
CopyWindowToVram(*windowId, 1);
|
||||
RemoveWindow(*windowId);
|
||||
return input;
|
||||
}
|
||||
break;
|
||||
case 0xFF:
|
||||
*textState = 0;
|
||||
rbox_fill_rectangle(*windowId);
|
||||
ClearWindowTilemap(*windowId);
|
||||
CopyWindowToVram(*windowId, 1);
|
||||
RemoveWindow(*windowId);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return -2;
|
||||
}
|
||||
|
||||
s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss, bool32 cannotSend)
|
||||
{
|
||||
struct WindowTemplate windowTemplate;
|
||||
s32 input;
|
||||
|
||||
switch (*textState)
|
||||
{
|
||||
case 0:
|
||||
if (cannotToss == 0)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_WhatToDoWithCards);
|
||||
}
|
||||
else
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_WhatToDoWithNews);
|
||||
}
|
||||
*windowId = AddWindow(&sMysteryGiftMenuWindowTemplate);
|
||||
FillWindowPixelBuffer(*windowId, 0x11);
|
||||
AddTextPrinterParametrized2(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
|
||||
DrawTextBorderOuter(*windowId, 0x001, 0x0F);
|
||||
CopyWindowToVram(*windowId, 2);
|
||||
PutWindowTilemap(*windowId);
|
||||
(*textState)++;
|
||||
break;
|
||||
case 1:
|
||||
windowTemplate = sWindowTemplate_YesNoBox;
|
||||
if (cannotSend)
|
||||
{
|
||||
if (cannotToss == 0)
|
||||
{
|
||||
input = DoMysteryGiftListMenu(&sWindowTemplate_7by6, &sListMenu_ReceiveToss, 1, 0x00A, 0xE0);
|
||||
}
|
||||
else
|
||||
{
|
||||
input = DoMysteryGiftListMenu(&sWindowTemplate_7by4, &sListMenu_Receive, 1, 0x00A, 0xE0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cannotToss == 0)
|
||||
{
|
||||
input = DoMysteryGiftListMenu(&sWindowTemplate_7by8, &sListMenu_ReceiveSendToss, 1, 0x00A, 0xE0);
|
||||
}
|
||||
else
|
||||
{
|
||||
input = DoMysteryGiftListMenu(&sWindowTemplate_7by6, &sListMenu_ReceiveSend, 1, 0x00A, 0xE0);
|
||||
}
|
||||
}
|
||||
if (input != -1)
|
||||
{
|
||||
*textState = 0;
|
||||
rbox_fill_rectangle(*windowId);
|
||||
ClearWindowTilemap(*windowId);
|
||||
CopyWindowToVram(*windowId, 1);
|
||||
RemoveWindow(*windowId);
|
||||
return input;
|
||||
}
|
||||
break;
|
||||
case 0xFF:
|
||||
*textState = 0;
|
||||
rbox_fill_rectangle(*windowId);
|
||||
ClearWindowTilemap(*windowId);
|
||||
CopyWindowToVram(*windowId, 1);
|
||||
RemoveWindow(*windowId);
|
||||
return -2;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool32 ValidateCardOrNews(bool32 cardOrNews)
|
||||
{
|
||||
if (cardOrNews == 0)
|
||||
{
|
||||
return ValidateReceivedWonderNews();
|
||||
}
|
||||
else
|
||||
{
|
||||
return ValidateReceivedWonderCard();
|
||||
}
|
||||
}
|
||||
|
||||
bool32 HandleLoadWonderCardOrNews(u8 * state, bool32 cardOrNews)
|
||||
{
|
||||
s32 v0;
|
||||
|
||||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
if (cardOrNews == 0)
|
||||
{
|
||||
InitWonderCardResources(GetSavedWonderCard(), sav1_get_mevent_buffer_2());
|
||||
}
|
||||
else
|
||||
{
|
||||
InitWonderNewsResources(GetSavedWonderNews());
|
||||
}
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
if (cardOrNews == 0)
|
||||
{
|
||||
v0 = FadeToWonderCardMenu();
|
||||
check:
|
||||
if (v0 != 0)
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
v0 = FadeToWonderNewsMenu();
|
||||
goto check;
|
||||
}
|
||||
done:
|
||||
*state = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ extern u8 gUnknown_203ADFA;
|
||||
|
||||
extern void sub_80CBDE8(void); // field_specials
|
||||
extern u16 CalcCRC16WithTable(u8 *data, int length); // util
|
||||
extern bool32 sub_8143FC8(void); // mevent
|
||||
extern bool32 ValidateReceivedWonderNews(void); // mevent
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -525,7 +525,7 @@ bool32 sub_8069DFC(void)
|
||||
u8 *sub_8069E48(void)
|
||||
{
|
||||
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
|
||||
if (!sub_8143FC8())
|
||||
if (!ValidateReceivedWonderNews())
|
||||
return NULL;
|
||||
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user