fakematching task00_mystery_gift

This commit is contained in:
PikalaxALT
2019-03-31 15:50:25 -04:00
committed by huderlem
parent 90fb329b70
commit 0a8427c8ef
9 changed files with 607 additions and 875 deletions

View File

@@ -724,7 +724,7 @@ void sub_801CC80(void)
}
}
u8 sub_801CCD0(u16 input)
u32 sub_801CCD0(u16 input)
{
if (gUnknown_02022C78->unk_01C2_0)
{

View File

@@ -24,6 +24,12 @@
#include "mevent.h"
#include "mevent_801BAAC.h"
#include "save.h"
#include "link.h"
#include "mevent_server_ish.h"
#include "event_data.h"
#include "link_rfu.h"
#include "mevent_news.h"
#include "mevent_server.h"
void bgid_upload_textbox_1(u8 bgId);
void task_add_00_mystery_gift(void);
@@ -34,11 +40,6 @@ EWRAM_DATA u8 gUnknown_02022C58[2] = {};
const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal");
const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz");
struct MysteryGiftExtraData
{
u8 filler_00[0x40];
};
struct MysteryGiftTaskData
{
u16 unk0;
@@ -52,7 +53,7 @@ struct MysteryGiftTaskData
u8 unkC;
u8 unkD;
u8 unkE;
struct MysteryGiftExtraData * unk10;
u8 * unk10;
};
const struct BgTemplate gUnknown_082F0598[] = {
@@ -623,7 +624,7 @@ bool32 sub_8018A1C(u8 * counter, const u8 * str)
}
}
s32 sub_8018A50(u8 * unused0, u8 * unused1, bool8 r2)
u32 sub_8018A50(u8 * unused0, u16 * unused1, bool8 r2)
{
struct ListMenuTemplate listMenuTemplate = gUnknown_082F0638;
struct WindowTemplate windowTemplate = gUnknown_082F05E0;
@@ -661,7 +662,7 @@ s32 sub_8018A50(u8 * unused0, u8 * unused1, bool8 r2)
return r4;
}
s32 sub_8018B08(u8 * textState, u16 * windowId, bool8 r6, const u8 * str)
s8 sub_8018B08(u8 * textState, u16 * windowId, bool8 r6, const u8 * str)
{
struct WindowTemplate windowTemplate;
s8 input;
@@ -886,7 +887,7 @@ bool32 sub_8018E20(bool32 arg0, bool32 arg1)
}
}
s8 sub_8018E50(u8 * textState, u16 * windowId, bool32 r2)
s32 sub_8018E50(u8 * textState, u16 * windowId, bool32 r2)
{
if (r2 == 0)
{
@@ -1128,5 +1129,564 @@ void task_add_00_mystery_gift(void)
data->unk4 = 0;
data->unk6 = 0;
data->unkE = 0;
data->unk10 = AllocZeroed(sizeof(*data->unk10));
data->unk10 = AllocZeroed(0x40);
}
void task00_mystery_gift(u8 taskId)
{
struct MysteryGiftTaskData * data = (void *)gTasks[taskId].data;
u32 sp0;
const u8 * r1;
switch (data->unk8)
{
case 0:
data->unk8 = 1;
break;
case 1:
switch (sub_8018A50(&data->unk9, &data->unk0, FALSE))
{
case 0:
data->unkC = 0;
if (sub_801B27C() == TRUE)
{
data->unk8 = 18;
}
else
{
data->unk8 = 2;
}
break;
case 1:
data->unkC = 1;
if (sub_801B0CC() == TRUE)
{
data->unk8 = 18;
}
else
{
data->unk8 = 2;
}
break;
case -2u:
data->unk8 = 37;
break;
}
break;
case 2:
{
if (data->unkC == 0)
{
if (mevent_0814257C(&data->unk9, gText_DontHaveCardNewOneInput))
{
data->unk8 = 3;
sub_80186EC(0, 1);
}
}
else
{
if (mevent_0814257C(&data->unk9, gText_DontHaveNewsNewOneInput))
{
data->unk8 = 3;
sub_80186EC(0, 1);
}
}
break;
}
case 3:
if (data->unkC == 0)
{
sub_8018884(gText_WhereShouldCardBeAccessed);
}
else
{
sub_8018884(gText_WhereShouldNewsBeAccessed);
}
data->unk8 = 4;
break;
case 4:
switch (sub_8018A50(&data->unk9, &data->unk0, TRUE))
{
case 0:
sub_80188DC();
data->unk8 = 5;
data->unkD = 0;
break;
case 1:
sub_80188DC();
data->unk8 = 5;
data->unkD = 1;
break;
case -2u:
sub_80188DC();
if (sub_8018D98(data->unkC))
{
data->unk8 = 18;
}
else
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
break;
}
break;
case 5:
{
register u8 eos asm("r1");
gStringVar1[0] = (eos = EOS);
gStringVar2[0] = eos;
gStringVar3[0] = eos;
}
switch (data->unkC)
{
case 0:
if (data->unkD == 1)
{
sub_8014EFC(0x15);
}
else if (data->unkD == 0)
{
sub_80152A8(0x15);
}
break;
case 1:
if (data->unkD == 1)
{
sub_8014EFC(0x16);
}
else if (data->unkD == 0)
{
sub_80152A8(0x16);
}
break;
}
data->unk8 = 6;
break;
case 6:
if (gReceivedRemoteLinkPlayers != 0)
{
sub_8018838(TRUE);
data->unk8 = 7;
sub_801D484(data->unkC);
}
else if (gSpecialVar_Result == 5)
{
sub_8018838(TRUE);
data->unk8 = 3;
}
break;
case 7:
sub_8018884(gText_Communicating);
data->unk8 = 8;
break;
case 8:
switch (sub_801D4A8(&data->unk0))
{
case 6:
task_add_05_task_del_08FA224_when_no_RfuFunc();
data->unkE = data->unk0;
data->unk8 = 13;
break;
case 5:
memcpy(data->unk10, sub_801D4F4(), 0x40);
sub_801D4E4();
break;
case 3:
data->unk8 = 10;
break;
case 2:
data->unk8 = 9;
break;
case 4:
data->unk8 = 11;
StringCopy(gStringVar1, gLinkPlayers[0].name);
break;
}
break;
case 9:
switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, sub_801D4F4()))
{
case 0:
sub_801D500(0);
sub_801D4E4();
data->unk8 = 7;
break;
case 1:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
case -1u:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
}
break;
case 10:
if (mevent_0814257C(&data->unk9, sub_801D4F4()))
{
sub_801D4E4();
data->unk8 = 7;
}
break;
case 11:
switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, gText_ThrowAwayWonderCard))
{
case 0:
if (sub_801B3F8() == TRUE)
{
data->unk8 = 12;
}
else
{
sub_801D500(0);
sub_801D4E4();
data->unk8 = 7;
}
break;
case 1:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
case -1u:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
}
break;
case 12:
switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, gText_HaventReceivedCardsGift))
{
case 0:
sub_801D500(0);
sub_801D4E4();
data->unk8 = 7;
break;
case 1:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
case -1u:
sub_801D500(1);
sub_801D4E4();
data->unk8 = 7;
break;
}
break;
case 13:
if (gReceivedRemoteLinkPlayers == 0)
{
sub_800E084();
data->unk8 = 14;
}
break;
case 14:
if (sub_8018A1C(&data->unk9, gText_CommunicationCompleted))
{
if (data->unkD == 1)
{
StringCopy(gStringVar1, gLinkPlayers[0].name);
}
data->unk8 = 15;
}
break;
case 15:
{
register bool32 flag asm("r1");
r1 = mevent_message(&sp0, data->unkC, data->unkD, data->unkE);
if (r1 == NULL)
{
r1 = data->unk10;
}
if (sp0)
{
flag = mevent_08142CE8(&data->unk9, r1, &data->unk0);
}
else
{
flag = mevent_0814257C(&data->unk9, r1);
}
if (flag)
{
if (data->unkE == 3)
{
if (data->unkD == 1)
{
sub_801DB68(1);
}
else
{
sub_801DB68(2);
}
}
if (sp0 == 0)
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
else
{
data->unk8 = 17;
}
}
break;
}
case 16:
if (mevent_0814257C(&data->unk9, gText_CommunicationError))
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
break;
case 17:
if (mevent_save_game(&data->unk9))
{
data->unk8 = 18;
}
break;
case 18:
if (sub_8018DAC(&data->unk9, data->unkC))
{
data->unk8 = 20;
}
break;
case 20:
if (data->unkC == 0)
{
if (({gMain.newKeys & A_BUTTON;}))
{
data->unk8 = 21;
}
if (({gMain.newKeys & B_BUTTON;}))
{
data->unk8 = 27;
}
}
else
{
switch (sub_801CCD0(gMain.newKeys))
{
case 0:
sub_801CC38();
data->unk8 = 21;
break;
case 1:
data->unk8 = 27;
break;
}
}
break;
case 21:
{
u32 result;
if (data->unkC == 0)
{
if (sub_801B308())
{
result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, FALSE);
}
else
{
result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, TRUE);
}
}
else
{
if (sub_801B128())
{
result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, FALSE);
}
else
{
result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, TRUE);
}
}
switch (result)
{
case 0:
data->unk8 = 28;
break;
case 1:
data->unk8 = 29;
break;
case 2:
data->unk8 = 22;
break;
case -2u:
if (data->unkC == 1)
{
sub_801CC80();
}
data->unk8 = 20;
break;
}
break;
}
case 22:
switch (sub_8018E50(&data->unk9, &data->unk0, data->unkC))
{
case 0:
if (data->unkC == 0 && sub_801B3F8() == TRUE)
{
data->unk8 = 23;
}
else
{
data->unk8 = 24;
}
break;
case 1:
data->unk8 = 21;
break;
case -1:
data->unk8 = 21;
break;
}
break;
case 23:
switch ((u32)sub_8018B08(&data->unk9, &data->unk0, TRUE, gText_HaventReceivedGiftOkayToDiscard))
{
case 0:
data->unk8 = 24;
break;
case 1:
data->unk8 = 21;
break;
case -1u:
data->unk8 = 21;
break;
}
break;
case 24:
if (sub_8018E20(data->unkC, 1))
{
sub_8018E08(data->unkC);
data->unk8 = 25;
}
break;
case 25:
if (mevent_save_game(&data->unk9))
{
data->unk8 = 26;
}
break;
case 26:
if (mevent_message_was_thrown_away(&data->unk9, data->unkC))
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
break;
case 27:
if (sub_8018E20(data->unkC, 0))
{
data->unk8 = 0;
}
break;
case 28:
if (sub_8018E20(data->unkC, 1))
{
data->unk8 = 3;
}
break;
case 29:
if (sub_8018E20(data->unkC, 1))
{
switch (data->unkC)
{
case 0:
sub_8014A00(21);
break;
case 1:
sub_8014A00(22);
break;
}
data->unkD = 1;
data->unk8 = 30;
}
break;
case 30:
if (gReceivedRemoteLinkPlayers != 0)
{
sub_8018838(1);
data->unk8 = 31;
}
else if (gSpecialVar_Result == 5)
{
sub_8018838(1);
data->unk8 = 18;
}
break;
case 31:
{
register u8 eos asm("r1");
gStringVar1[0] = (eos = EOS);
gStringVar2[0] = eos;
gStringVar3[0] = eos;
}
if (data->unkC == 0)
{
sub_8018884(gText_SendingWonderCard);
mevent_srv_new_wcard();
}
else
{
sub_8018884(gText_SendingWonderNews);
mevent_srv_init_wnews();
}
data->unk8 = 32;
break;
case 32:
if (sub_801D0C4(&data->unk0) == 3)
{
data->unkE = data->unk0;
data->unk8 = 33;
}
break;
case 33:
task_add_05_task_del_08FA224_when_no_RfuFunc();
StringCopy(gStringVar1, gLinkPlayers[1].name);
data->unk8 = 34;
break;
case 34:
if (gReceivedRemoteLinkPlayers == 0)
{
sub_800E084();
data->unk8 = 35;
}
break;
case 35:
if (sub_8019174(&data->unk9, &data->unk0, data->unkD, data->unkE))
{
if (data->unkD == 1 && data->unkE == 3)
{
sub_801DB68(3);
data->unk8 = 17;
}
else
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
}
break;
case 36:
if (mevent_0814257C(&data->unk9, gText_CommunicationError))
{
data->unk8 = 0;
sub_80186EC(0, 0);
}
break;
case 37:
CloseLink();
Free(data->unk10);
DestroyTask(taskId);
SetMainCallback2(sub_80186A4);
break;
}
}