diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-25 17:44:25 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-25 17:44:25 -0400 |
commit | d3057e7ae686750f561a6b23552a072f53dd8f63 (patch) | |
tree | 435ee775183c8620530ada7c30c447b3ba7f284e | |
parent | 6cebd1f85311b1aa7321eb141521686d21bd091c (diff) |
through HandleLoadWonderCardOrNews
-rw-r--r-- | asm/link_rfu_3.s | 2 | ||||
-rw-r--r-- | asm/mystery_gift_menu.s | 403 | ||||
-rw-r--r-- | data/data_83FECCC.s | 4 | ||||
-rw-r--r-- | data/mystery_gift_menu.s | 22 | ||||
-rw-r--r-- | data/specials.inc | 2 | ||||
-rw-r--r-- | include/mevent.h | 11 | ||||
-rw-r--r-- | src/menews_jisan.c | 2 | ||||
-rw-r--r-- | src/mevent.c | 24 | ||||
-rw-r--r-- | src/mevent_8145654.c | 8 | ||||
-rw-r--r-- | src/mevent_server.c | 4 | ||||
-rw-r--r-- | src/mystery_gift_menu.c | 211 | ||||
-rw-r--r-- | src/script.c | 4 |
12 files changed, 258 insertions, 439 deletions
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index b112e2ac3..f78d77079 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -4169,7 +4169,7 @@ _08117C12: adds r1, 0x14 ldr r3, _08117C38 @ =gStringVar4 movs r2, 0 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r4, r0, 24 cmp r4, 0 diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s index 1a86b6797..7a2fc20b1 100644 --- a/asm/mystery_gift_menu.s +++ b/asm/mystery_gift_menu.s @@ -5,389 +5,6 @@ .text - thumb_func_start sub_81427A0 -sub_81427A0: @ 81427A0 - push {r4-r6,lr} - sub sp, 0x1C - adds r5, r0, 0 - adds r4, r1, 0 - adds r1, r3, 0 - lsls r2, 24 - lsrs r6, r2, 24 - ldrb r0, [r5] - cmp r0, 0x1 - beq _08142834 - cmp r0, 0x1 - bgt _081427BE - cmp r0, 0 - beq _081427CA - b _081428E6 -_081427BE: - cmp r0, 0x2 - beq _0814288C - cmp r0, 0xFF - bne _081427C8 - b _081428C2 -_081427C8: - b _081428E6 -_081427CA: - ldr r0, _081427D8 @ =gStringVar4 - bl StringExpandPlaceholders - cmp r6, 0 - bne _081427E0 - ldr r0, _081427DC @ =gUnknown_8466D90 - b _081427E2 - .align 2, 0 -_081427D8: .4byte gStringVar4 -_081427DC: .4byte gUnknown_8466D90 -_081427E0: - ldr r0, _08142828 @ =gUnknown_8466D98 -_081427E2: - bl AddWindow - strh r0, [r4] - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r4] - movs r2, 0 - str r2, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - ldr r1, _0814282C @ =sMG_Ereader_TextColor_2 - str r1, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08142830 @ =gStringVar4 - str r1, [sp, 0x10] - movs r1, 0x2 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - ldrb r0, [r4] - movs r1, 0x1 - movs r2, 0xF - bl DrawTextBorderOuter - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - bl PutWindowTilemap - b _0814287E - .align 2, 0 -_08142828: .4byte gUnknown_8466D98 -_0814282C: .4byte sMG_Ereader_TextColor_2 -_08142830: .4byte gStringVar4 -_08142834: - ldr r0, _08142850 @ =gUnknown_8466DB0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x14] - str r1, [sp, 0x18] - cmp r6, 0 - bne _08142858 - ldr r0, _08142854 @ =0xff00ffff - ldr r1, [sp, 0x14] - ands r1, r0 - movs r0, 0x90 - lsls r0, 12 - b _08142862 - .align 2, 0 -_08142850: .4byte gUnknown_8466DB0 -_08142854: .4byte 0xff00ffff -_08142858: - ldr r0, _08142888 @ =0xff00ffff - ldr r1, [sp, 0x14] - ands r1, r0 - movs r0, 0xF0 - lsls r0, 12 -_08142862: - orrs r1, r0 - str r1, [sp, 0x14] - movs r0, 0xA - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - add r0, sp, 0x14 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl sub_810FF60 -_0814287E: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _081428E6 - .align 2, 0 -_08142888: .4byte 0xff00ffff -_0814288C: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r6, r0, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x2 - bhi _081428E6 - movs r0, 0 - strb r0, [r5] - ldrb r0, [r4] - bl rbox_fill_rectangle - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r4] - bl RemoveWindow - adds r0, r6, 0 - b _081428EA -_081428C2: - movs r0, 0 - strb r0, [r5] - ldrb r0, [r4] - bl rbox_fill_rectangle - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0x1 - negs r0, r0 - b _081428EA -_081428E6: - movs r0, 0x2 - negs r0, r0 -_081428EA: - add sp, 0x1C - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81427A0 - - thumb_func_start sub_81428F4 -sub_81428F4: @ 81428F4 - push {r4-r6,lr} - sub sp, 0x14 - adds r6, r0, 0 - adds r5, r1, 0 - ldrb r0, [r6] - cmp r0, 0x1 - beq _08142994 - cmp r0, 0x1 - bgt _0814290C - cmp r0, 0 - beq _08142914 - b _08142A38 -_0814290C: - cmp r0, 0xFF - bne _08142912 - b _08142A14 -_08142912: - b _08142A38 -_08142914: - cmp r2, 0 - bne _0814292C - ldr r0, _08142924 @ =gStringVar4 - ldr r1, _08142928 @ =gUnknown_841EA86 - bl StringExpandPlaceholders - b _08142934 - .align 2, 0 -_08142924: .4byte gStringVar4 -_08142928: .4byte gUnknown_841EA86 -_0814292C: - ldr r0, _08142984 @ =gStringVar4 - ldr r1, _08142988 @ =gUnknown_841EAB7 - bl StringExpandPlaceholders -_08142934: - ldr r0, _0814298C @ =gUnknown_8466DA0 - bl AddWindow - strh r0, [r5] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r5] - movs r2, 0 - str r2, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - ldr r1, _08142990 @ =sMG_Ereader_TextColor_2 - str r1, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08142984 @ =gStringVar4 - str r1, [sp, 0x10] - movs r1, 0x2 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - ldrb r0, [r5] - movs r1, 0x1 - movs r2, 0xF - bl DrawTextBorderOuter - ldrb r0, [r5] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r5] - bl PutWindowTilemap - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _08142A38 - .align 2, 0 -_08142984: .4byte gStringVar4 -_08142988: .4byte gUnknown_841EAB7 -_0814298C: .4byte gUnknown_8466DA0 -_08142990: .4byte sMG_Ereader_TextColor_2 -_08142994: - cmp r3, 0 - beq _081429BC - cmp r2, 0 - bne _081429AC - ldr r0, _081429A4 @ =gUnknown_8466DC0 - ldr r1, _081429A8 @ =gUnknown_8466E90 - b _081429D4 - .align 2, 0 -_081429A4: .4byte gUnknown_8466DC0 -_081429A8: .4byte gUnknown_8466E90 -_081429AC: - ldr r0, _081429B4 @ =gUnknown_8466DC8 - ldr r1, _081429B8 @ =gUnknown_8466EC0 - b _081429D4 - .align 2, 0 -_081429B4: .4byte gUnknown_8466DC8 -_081429B8: .4byte gUnknown_8466EC0 -_081429BC: - cmp r2, 0 - bne _081429D0 - ldr r0, _081429C8 @ =gUnknown_8466DB8 - ldr r1, _081429CC @ =gUnknown_8466E78 - b _081429D4 - .align 2, 0 -_081429C8: .4byte gUnknown_8466DB8 -_081429CC: .4byte gUnknown_8466E78 -_081429D0: - ldr r0, _08142A0C @ =gUnknown_8466DC0 - ldr r1, _08142A10 @ =gUnknown_8466EA8 -_081429D4: - movs r2, 0xE0 - str r2, [sp] - movs r2, 0x1 - movs r3, 0xA - bl DoMysteryGiftListMenu - adds r4, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08142A38 - movs r0, 0 - strb r0, [r6] - ldrb r0, [r5] - bl rbox_fill_rectangle - ldrb r0, [r5] - bl ClearWindowTilemap - ldrb r0, [r5] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r5] - bl RemoveWindow - adds r0, r4, 0 - b _08142A3C - .align 2, 0 -_08142A0C: .4byte gUnknown_8466DC0 -_08142A10: .4byte gUnknown_8466EA8 -_08142A14: - movs r0, 0 - strb r0, [r6] - ldrb r0, [r5] - bl rbox_fill_rectangle - ldrb r0, [r5] - bl ClearWindowTilemap - ldrb r0, [r5] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r5] - bl RemoveWindow - movs r0, 0x2 - negs r0, r0 - b _08142A3C -_08142A38: - movs r0, 0x1 - negs r0, r0 -_08142A3C: - add sp, 0x14 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81428F4 - - thumb_func_start sub_8142A44 -sub_8142A44: @ 8142A44 - push {lr} - cmp r0, 0 - beq _08142A50 - bl sub_8143E1C - b _08142A54 -_08142A50: - bl sub_8143FC8 -_08142A54: - pop {r1} - bx r1 - thumb_func_end sub_8142A44 - - thumb_func_start sub_8142A58 -sub_8142A58: @ 8142A58 - push {r4,r5,lr} - adds r5, r0, 0 - ldrb r0, [r5] - cmp r0, 0 - beq _08142A68 - cmp r0, 0x1 - beq _08142A90 - b _08142AAC -_08142A68: - cmp r1, 0 - bne _08142A80 - bl sav1_get_mevent_buffer_1 - adds r4, r0, 0 - bl sav1_get_mevent_buffer_2 - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_8145654 - b _08142A88 -_08142A80: - bl sub_8143D58 - bl sub_8146288 -_08142A88: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08142AAC -_08142A90: - cmp r1, 0 - bne _08142A9E - bl sub_814571C -_08142A98: - cmp r0, 0 - bne _08142AA4 - b _08142AAC -_08142A9E: - bl sub_8146318 - b _08142A98 -_08142AA4: - movs r0, 0 - strb r0, [r5] - movs r0, 0x1 - b _08142AAE -_08142AAC: - movs r0, 0 -_08142AAE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8142A58 - thumb_func_start sub_8142AB4 sub_8142AB4: @ 8142AB4 push {lr} @@ -444,7 +61,7 @@ _08142B0C: ldr r3, _08142B1C @ =gUnknown_841EC99 _08142B0E: movs r2, 0x1 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r0, 24 pop {r1} @@ -1012,11 +629,11 @@ _08142F6A: _08142F8A: movs r0, 0 strb r0, [r5, 0xC] - bl sub_8143FC8 + bl ValidateReceivedWonderNews b _08142F9A _08142F94: strb r1, [r5, 0xC] - bl sub_8143E1C + bl ValidateReceivedWonderCard _08142F9A: cmp r0, 0x1 bne _08142FA0 @@ -1107,7 +724,7 @@ _08143036: _08143042: bl ClearTextWindow ldrb r0, [r5, 0xC] - bl sub_8142A44 + bl ValidateCardOrNews cmp r0, 0 beq _08143052 b _081434C4 @@ -1259,7 +876,7 @@ _08143174: adds r0, r4, 0 adds r1, r5, 0 movs r2, 0 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r1, r0, 24 cmp r1, 0x1 @@ -1286,7 +903,7 @@ _081431B0: ldr r3, _081431D8 @ =gUnknown_841E7F2 adds r1, r5, 0 movs r2, 0 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r1, r0, 24 cmp r1, 0x1 @@ -1310,7 +927,7 @@ _081431E0: ldr r3, _08143204 @ =gUnknown_841E823 adds r1, r5, 0 movs r2, 0 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r1, r0, 24 cmp r1, 0x1 @@ -1430,7 +1047,7 @@ _081432CC: adds r0, r5, 0 adds r0, 0x9 ldrb r1, [r5, 0xC] - bl sub_8142A58 + bl HandleLoadWonderCardOrNews cmp r0, 0 bne _081432DC b _081435C6 @@ -1507,7 +1124,7 @@ _0814335A: adds r1, r5, 0 movs r3, 0x1 _08143364: - bl sub_81428F4 + bl HandleMysteryGiftListMenu adds r1, r0, 0 cmp r1, 0x1 beq _08143386 @@ -1571,7 +1188,7 @@ _081433D2: ldr r3, _081433F8 @ =gUnknown_841ECF9 adds r1, r5, 0 movs r2, 0x1 - bl sub_81427A0 + bl mevent_message_print_and_prompt_yes_no lsls r0, 24 asrs r1, r0, 24 cmp r1, 0x1 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 8fb1d4533..dae35f9b3 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -2516,10 +2516,10 @@ gUnknown_841EA3F:: @ 841EA3F gUnknown_841EA6F:: @ 841EA6F .incbin "baserom.gba", 0x41EA6F, 0x17 -gUnknown_841EA86:: @ 841EA86 +gText_WhatToDoWithCards:: @ 841EA86 .incbin "baserom.gba", 0x41EA86, 0x31 -gUnknown_841EAB7:: @ 841EAB7 +gText_WhatToDoWithNews:: @ 841EAB7 .incbin "baserom.gba", 0x41EAB7, 0x30 gUnknown_841EAE7:: @ 841EAE7 diff --git a/data/mystery_gift_menu.s b/data/mystery_gift_menu.s index 0b7046eb1..7f891e2e5 100644 --- a/data/mystery_gift_menu.s +++ b/data/mystery_gift_menu.s @@ -2,28 +2,28 @@ .align 2 -gUnknown_8466D90:: @ 8466D90 +sWindowTemplate_PromptYesOrNo_Width28:: @ 8466D90 .incbin "baserom.gba", 0x466D90, 0x8 -gUnknown_8466D98:: @ 8466D98 +sWindowTemplate_PromptYesOrNo_Width20:: @ 8466D98 .incbin "baserom.gba", 0x466D98, 0x8 -gUnknown_8466DA0:: @ 8466DA0 +sMysteryGiftMenuWindowTemplate:: @ 8466DA0 .incbin "baserom.gba", 0x466DA0, 0x8 sWindowTemplate_ThreeOptions:: @ 8466DA8 .incbin "baserom.gba", 0x466DA8, 0x8 -gUnknown_8466DB0:: @ 8466DB0 +sWindowTemplate_YesNoBox:: @ 8466DB0 .incbin "baserom.gba", 0x466DB0, 0x8 -gUnknown_8466DB8:: @ 8466DB8 +sWindowTemplate_7by8:: @ 8466DB8 .incbin "baserom.gba", 0x466DB8, 0x8 -gUnknown_8466DC0:: @ 8466DC0 +sWindowTemplate_7by6:: @ 8466DC0 .incbin "baserom.gba", 0x466DC0, 0x8 -gUnknown_8466DC8:: @ 8466DC8 +sWindowTemplate_7by4:: @ 8466DC8 .incbin "baserom.gba", 0x466DC8, 0x8 sListMenuItems_CardsOrNews:: @ 8466DD0 @@ -35,16 +35,16 @@ sListMenuItems_WirelessOrFriend:: @ 8466DE8 sListMenuTemplate_ThreeOptions:: @ 8466E00 .incbin "baserom.gba", 0x466E00, 0x78 -gUnknown_8466E78:: @ 8466E78 +sListMenu_ReceiveSendToss:: @ 8466E78 .incbin "baserom.gba", 0x466E78, 0x18 -gUnknown_8466E90:: @ 8466E90 +sListMenu_ReceiveToss:: @ 8466E90 .incbin "baserom.gba", 0x466E90, 0x18 -gUnknown_8466EA8:: @ 8466EA8 +sListMenu_ReceiveSend:: @ 8466EA8 .incbin "baserom.gba", 0x466EA8, 0x18 -gUnknown_8466EC0:: @ 8466EC0 +sListMenu_Receive:: @ 8466EC0 .incbin "baserom.gba", 0x466EC0, 0x28 sMG_Ereader_TextColor_1:: @ 8466EE8 diff --git a/data/specials.inc b/data/specials.inc index f3c71d1bd..cb39cae1e 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -393,7 +393,7 @@ gSpecials:: @ 815FD60 def_special sub_812B220 def_special sub_812B234 def_special sub_812B248 - def_special sub_8143FC8 + def_special ValidateReceivedWonderNews def_special sub_810B810 def_special sub_811999C def_special sp182_move_string diff --git a/include/mevent.h b/include/mevent.h index d940b212c..7f5206359 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -33,12 +33,13 @@ struct MEvent_Str_2 u8 fill_00[0x40]; }; -struct MEventBuffer_3120_Sub * sub_8143D58(void); -struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void); +struct MEventBuffer_3120_Sub * GetSavedWonderNews(void); +struct MEventBuffer_32E0_Sub * GetSavedWonderCard(void); struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void); struct MysteryEventStruct * sub_8143D94(void); bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src); -bool32 sub_8143E1C(void); +bool32 ValidateReceivedWonderCard(void); +bool32 ValidateReceivedWonderNews(void); bool32 sub_8143EF4(const u8 * src); bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data); void sub_814410C(struct MEventBuffer_32E0_Sub * buffer); @@ -49,5 +50,9 @@ u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused); bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1); u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command); +bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6); +bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0); +s32 FadeToWonderCardMenu(void); +s32 FadeToWonderNewsMenu(void); #endif //GUARD_MEVENT_H diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 530762990..c6413b7b2 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -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); diff --git a/src/mevent.c b/src/mevent.c index 9ea4714ee..9d110616f 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -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; diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 7d5cc8897..e17eda2c4 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -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; diff --git a/src/mevent_server.c b/src/mevent_server.c index 5e384ae0b..1443e7007 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -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); diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index b0d00035c..f7bf7a207 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -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; +} diff --git a/src/script.c b/src/script.c index d7246752c..c9e2d2c9d 100644 --- a/src/script.c +++ b/src/script.c @@ -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; |