diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-04-26 12:50:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-26 12:50:51 -0400 |
commit | a1e8de5098b9bc3a978240e893a494f1a25248d8 (patch) | |
tree | 1381887937def8daa4cc9e9cc477a59e9ff74390 | |
parent | 1a4867a4bf4427c45af7545adcabae58ee19eb6e (diff) | |
parent | 274151836b44d960ab357d861a4d79602a8722d5 (diff) |
Merge pull request #53 from PikalaxALT/mystery_gift_menu
Mystery gift menu
51 files changed, 2121 insertions, 3105 deletions
@@ -423,7 +423,7 @@ sub_810BB74: @ 810BB74 lsrs r0, 24 movs r1, 0x64 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter pop {r0} bx r0 thumb_func_end sub_810BB74 diff --git a/asm/battle_2.s b/asm/battle_2.s index ec9fa32a3..e1dd268aa 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -1645,7 +1645,7 @@ _08010B2A: ldrb r0, [r0] cmp r0, 0 beq _08010B64 - bl sub_80FA4F8 + bl IsNoOneConnected lsls r0, 24 cmp r0, 0 beq _08010B82 diff --git a/asm/cable_club.s b/asm/cable_club.s index a403aa659..c7d8a86a6 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -765,7 +765,7 @@ _08080D3C: cmp r2, 0x9 bne _08080D54 _08080D44: - bl sub_80098B8 + bl CloseLink bl HideFieldMessageBox ldr r0, _08080D50 @ =sub_8080F78 b _08080D72 @@ -860,7 +860,7 @@ _08080DF6: cmp r0, 0x9 bne _08080E20 _08080DFE: - bl sub_80098B8 + bl CloseLink _08080E02: bl HideFieldMessageBox ldr r0, _08080E18 @ =gTasks @@ -2459,7 +2459,7 @@ sub_8081A90: @ 8081A90 lsls r0, 17 cmp r1, r0 ble _08081AC2 - bl sub_80098B8 + bl CloseLink ldr r0, _08081ADC @ =c2_800ACD4 bl SetMainCallback2 adds r0, r4, 0 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index c02eef927..f66a066ae 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -3691,7 +3691,7 @@ _080CFDBA: ldrb r0, [r0] cmp r0, 0 beq _080CFDC6 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite _080CFDC6: movs r0, 0x3 bl GetBgTilemapBuffer diff --git a/asm/intro.s b/asm/intro.s index 309b636c8..909fee72e 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -2742,14 +2742,14 @@ _080EDC0C: bl DisableInterrupts movs r0, 0 bl SetHBlankCallback - ldr r0, _080EDC3C @ =sub_8078914 + ldr r0, _080EDC3C @ =CB2_InitTitleScreen bl SetMainCallback2 _080EDC34: pop {r4} pop {r0} bx r0 .align 2, 0 -_080EDC3C: .4byte sub_8078914 +_080EDC3C: .4byte CB2_InitTitleScreen thumb_func_end sub_80EDBE8 thumb_func_start sub_80EDC40 diff --git a/asm/learn_move.s b/asm/learn_move.s index db41257a2..3db64a899 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -1016,7 +1016,7 @@ _080E4EF4: lsrs r0, 24 movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter adds r4, 0x1 cmp r4, 0x7 ble _080E4EF4 diff --git a/asm/link.s b/asm/link.s index 7130ce69d..4dd79efe1 100644 --- a/asm/link.s +++ b/asm/link.s @@ -29,7 +29,7 @@ _08009498: cmp r0, r1 beq _080094C4 bl sub_800B210 - bl sub_80098B8 + bl CloseLink bl RestoreSerialTimer3IntrHandlers movs r0, 0 b _080094CE @@ -507,8 +507,8 @@ _080098B0: .4byte gUnknown_3003F30 _080098B4: .4byte gUnknown_3003F2C thumb_func_end sub_8009804 - thumb_func_start sub_80098B8 -sub_80098B8: @ 80098B8 + thumb_func_start CloseLink +CloseLink: @ 80098B8 push {r4,lr} ldr r0, _080098DC @ =gReceivedRemoteLinkPlayers movs r4, 0 @@ -529,7 +529,7 @@ _080098CC: _080098DC: .4byte gReceivedRemoteLinkPlayers _080098E0: .4byte gWirelessCommType _080098E4: .4byte gLinkOpen - thumb_func_end sub_80098B8 + thumb_func_end CloseLink thumb_func_start TestBlockTransfer TestBlockTransfer: @ 80098E8 @@ -1596,7 +1596,7 @@ _0800A100: bne _0800A112 ldr r0, _0800A11C @ =gUnknown_3003EAC strb r4, [r0] - bl sub_80098B8 + bl CloseLink _0800A112: movs r6, 0 ldr r4, _0800A120 @ =gLinkPlayers @@ -2122,7 +2122,7 @@ sub_800A4BC: @ 800A4BC ldrb r0, [r0] cmp r0, 0x1 bne _0800A4D4 - bl sub_80FA4F8 + bl IsNoOneConnected lsls r0, 24 lsrs r0, 24 b _0800A4E2 @@ -2833,7 +2833,7 @@ _0800A9E6: ldr r1, _0800AA1C @ =gUnknown_3003EAC movs r0, 0x1 strb r0, [r1] - bl sub_80098B8 + bl CloseLink ldr r0, _0800AA20 @ =c2_800ACD4 bl SetMainCallback2 _0800A9F6: @@ -3045,7 +3045,7 @@ _0800AB5C: ldr r0, _0800AB90 @ =gLinkVSyncDisabled movs r4, 0x1 strb r4, [r0] - bl sub_80098B8 + bl CloseLink ldr r1, _0800AB94 @ =gUnknown_3003F80 movs r0, 0 str r0, [r1] @@ -3198,7 +3198,7 @@ _0800AC8E: ldr r1, _0800ACB8 @ =gUnknown_3003EAC movs r0, 0x1 strb r0, [r1] - bl sub_80098B8 + bl CloseLink _0800AC98: pop {r0} bx r0 diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 1fa1aab8f..3638e9e0a 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -7855,7 +7855,7 @@ sub_8100E34: @ 8100E34 movs r0, 0x1 movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl sub_8100E7C movs r0, 0x1 diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index d36eeca20..e15838946 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -4012,8 +4012,8 @@ sub_80FA4EC: @ 80FA4EC _080FA4F4: .4byte gUnknown_3005450 thumb_func_end sub_80FA4EC - thumb_func_start sub_80FA4F8 -sub_80FA4F8: @ 80FA4F8 + thumb_func_start IsNoOneConnected +IsNoOneConnected: @ 80FA4F8 push {lr} movs r1, 0 ldr r0, _080FA50C @ =gUnknown_3005450 @@ -4027,7 +4027,7 @@ _080FA506: bx r1 .align 2, 0 _080FA50C: .4byte gUnknown_3005450 - thumb_func_end sub_80FA4F8 + thumb_func_end IsNoOneConnected thumb_func_start sub_80FA510 sub_80FA510: @ 80FA510 @@ -5152,7 +5152,7 @@ sub_80FAD98: @ 80FAD98 bne _080FAE30 ldr r6, _080FAE18 @ =gMain ldr r1, [r6, 0x4] - ldr r0, _080FAE1C @ =sub_814208C + ldr r0, _080FAE1C @ =c2_mystery_gift_e_reader_run cmp r1, r0 bne _080FADC0 ldr r1, _080FAE20 @ =gWirelessCommType @@ -5193,13 +5193,13 @@ _080FADF8: ldrb r0, [r7] movs r0, 0x2 strb r0, [r7] - bl sub_80098B8 + bl CloseLink b _080FAE62 .align 2, 0 _080FAE10: .4byte gUnknown_3005450 _080FAE14: .4byte gUnknown_3005E10 _080FAE18: .4byte gMain -_080FAE1C: .4byte sub_814208C +_080FAE1C: .4byte c2_mystery_gift_e_reader_run _080FAE20: .4byte gWirelessCommType _080FAE24: .4byte c2_800ACD4 _080FAE28: .4byte 0x0000069e @@ -9466,8 +9466,8 @@ _080FCE3C: .4byte 0x00001234 _080FCE40: .4byte gUnknown_843F274 thumb_func_end sub_80FCD74 - thumb_func_start sub_80FCE44 -sub_80FCE44: @ 80FCE44 + thumb_func_start DestroyWirelessStatusIndicatorSprite +DestroyWirelessStatusIndicatorSprite: @ 80FCE44 push {r4,lr} ldr r4, _080FCE90 @ =gSprites ldr r3, _080FCE94 @ =gUnknown_203ACE4 @@ -9512,7 +9512,7 @@ _080FCE98: .4byte 0x00001234 _080FCE9C: .4byte gMain _080FCEA0: .4byte gDummyOamData _080FCEA4: .4byte 0x070003e8 - thumb_func_end sub_80FCE44 + thumb_func_end DestroyWirelessStatusIndicatorSprite thumb_func_start sub_80FCEA8 sub_80FCEA8: @ 80FCEA8 @@ -9830,7 +9830,7 @@ _080FD072: lsrs r0, 24 cmp r0, 0x1 bne _080FD106 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite _080FD106: pop {r3} mov r8, r3 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 776b94c41..7e3718d18 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -1071,7 +1071,7 @@ _0811615C: .align 2, 0 _08116164: .4byte gUnknown_8457610 _08116168: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite bl sub_80F8DC0 adds r0, r5, 0 bl sub_81161E4 @@ -2347,7 +2347,7 @@ _08116C10: strb r0, [r6, 0x8] b _08116D06 _08116C68: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite adds r5, r6, 0 adds r5, 0x9 ldr r4, _08116C90 @ =gUnknown_8457754 @@ -2368,14 +2368,14 @@ _08116C68: _08116C90: .4byte gUnknown_8457754 _08116C94: .4byte gSpecialVar_Result _08116C98: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite ldr r0, _08116CA4 @ =gSpecialVar_Result movs r1, 0x5 b _08116CDC .align 2, 0 _08116CA4: .4byte gSpecialVar_Result _08116CA8: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite adds r5, r6, 0 adds r5, 0x9 ldr r4, _08116CC4 @ =gUnknown_8457754 @@ -3911,8 +3911,8 @@ _081179C4: .4byte sub_81175BC _081179C8: .4byte gTasks thumb_func_end sub_81179A4 - thumb_func_start sub_81179CC -sub_81179CC: @ 81179CC + thumb_func_start MEvent_CreateTask_Leader +MEvent_CreateTask_Leader: @ 81179CC push {r4,lr} adds r4, r0, 0 ldr r0, _081179FC @ =sub_8117A0C @@ -3941,7 +3941,7 @@ _081179FC: .4byte sub_8117A0C _08117A00: .4byte gUnknown_203B05C _08117A04: .4byte gTasks+0x8 _08117A08: .4byte gSpecialVar_Result - thumb_func_end sub_81179CC + thumb_func_end MEvent_CreateTask_Leader thumb_func_start sub_8117A0C sub_8117A0C: @ 8117A0C @@ -4056,7 +4056,7 @@ _08117AB8: ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] - bl sub_81435D4 + bl GetMysteryGiftBaseBlock lsls r0, 16 ldr r2, _08117B70 @ =0x0000ffff ldr r1, [sp, 0x4] @@ -4067,7 +4067,7 @@ _08117AB8: bl AddWindow strb r0, [r5, 0xF] ldrb r0, [r5, 0xF] - bl sub_814240C + bl MG_DrawTextBorder ldr r0, _08117B74 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08117B78 @ =gUnknown_8456D34 @@ -4113,7 +4113,7 @@ _08117BA4: .4byte gUnknown_203B058 _08117BA8: .4byte gStringVar4 _08117BAC: ldr r0, _08117BB8 @ =gStringVar4 - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0x4 strb r0, [r5, 0xC] b _08117ECA @@ -4134,7 +4134,7 @@ _08117BBC: _08117BD4: movs r0, 0xD strb r0, [r5, 0xC] - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite b _08117ECA .align 2, 0 _08117BE0: .4byte gMain @@ -4142,7 +4142,7 @@ _08117BE4: adds r0, r5, 0 adds r0, 0xD ldr r1, _08117C08 @ =gUnknown_84577F8 - bl mevent_0814257C + bl MG_PrintTextOnWindow1AndWaitButton cmp r0, 0 bne _08117BF4 b _08117ECA @@ -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 @@ -4346,7 +4346,7 @@ _08117D88: b _08117ECA _08117D94: ldr r0, _08117DA0 @ =gStringVar4 - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0xA strb r0, [r5, 0xC] b _08117ECA @@ -4393,7 +4393,7 @@ _08117DE8: strb r0, [r5, 0xC] b _08117ECA _08117DEE: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite bl sub_80F8DC0 ldrb r0, [r5, 0x12] movs r1, 0 @@ -4416,7 +4416,7 @@ _08117E26: adds r0, r5, 0 adds r0, 0xD ldr r1, _08117E44 @ =gUnknown_84571B8 - bl mevent_0814257C + bl MG_PrintTextOnWindow1AndWaitButton cmp r0, 0 beq _08117ECA adds r0, r4, 0 @@ -4490,8 +4490,8 @@ _08117ECA: bx r0 thumb_func_end sub_8117A0C - thumb_func_start sub_8117ED4 -sub_8117ED4: @ 8117ED4 + thumb_func_start MEvent_CreateTask_CardOrNewsWithFriend +MEvent_CreateTask_CardOrNewsWithFriend: @ 8117ED4 push {r4,lr} adds r4, r0, 0 ldr r0, _08117F0C @ =sub_8117F20 @@ -4524,7 +4524,7 @@ _08117F10: .4byte gUnknown_203B05C _08117F14: .4byte gTasks+0x8 _08117F18: .4byte gUnknown_3002028 _08117F1C: .4byte gSpecialVar_Result - thumb_func_end sub_8117ED4 + thumb_func_end MEvent_CreateTask_CardOrNewsWithFriend thumb_func_start sub_8117F20 sub_8117F20: @ 8117F20 @@ -4585,7 +4585,7 @@ _08117F7C: b _08118288 _08117FB0: ldr r0, _08117FBC @ =gUnknown_8458FE4 - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0x2 strb r0, [r5, 0x8] b _08118288 @@ -4609,7 +4609,7 @@ _08117FC0: ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] - bl sub_81435D4 + bl GetMysteryGiftBaseBlock lsls r0, 16 ldr r2, _08118060 @ =0x0000ffff ldr r1, [sp, 0x4] @@ -4623,7 +4623,7 @@ _08117FC0: bl AddWindow strb r0, [r5, 0xD] ldrb r0, [r5, 0xB] - bl sub_814240C + bl MG_DrawTextBorder ldr r0, _08118068 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _0811806C @ =gUnknown_8456DDC @@ -4638,7 +4638,7 @@ _08117FC0: bl ListMenuInit strb r0, [r5, 0xE] ldrb r0, [r5, 0xD] - bl sub_814240C + bl MG_DrawTextBorder ldrb r0, [r5, 0xD] movs r1, 0x11 bl FillWindowPixelBuffer @@ -4766,7 +4766,7 @@ _08118146: _0811814C: .4byte gMain _08118150: ldr r0, _08118184 @ =gUnknown_8459238 - bl sub_8142504 + bl AddTextPrinterToWindow1 ldr r4, _08118188 @ =gStringVar1 ldrb r0, [r5, 0xF] lsls r0, 5 @@ -4831,7 +4831,7 @@ _081181D0: b _08118288 _081181D6: ldr r0, _081181E8 @ =gUnknown_84576AC - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0 movs r1, 0 bl sub_80FB9E4 @@ -4868,17 +4868,17 @@ _08118222: adds r0, r4 ldr r1, [r0] adds r0, r5, 0 - bl mevent_0814257C + bl MG_PrintTextOnWindow1AndWaitButton cmp r0, 0 beq _08118288 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite b _08118252 .align 2, 0 _08118244: .4byte gUnknown_8457838 _08118248: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite ldr r0, _08118264 @ =gUnknown_84571B8 - bl sub_8142504 + bl AddTextPrinterToWindow1 _08118252: adds r0, r6, 0 bl DestroyTask @@ -4910,8 +4910,8 @@ _08118288: bx r0 thumb_func_end sub_8117F20 - thumb_func_start sub_8118290 -sub_8118290: @ 8118290 + thumb_func_start MEvent_CreateTask_CardOrNewsOverWireless +MEvent_CreateTask_CardOrNewsOverWireless: @ 8118290 push {r4,lr} adds r4, r0, 0 ldr r0, _081182C8 @ =sub_81182DC @@ -4944,7 +4944,7 @@ _081182CC: .4byte gUnknown_203B05C _081182D0: .4byte gTasks+0x8 _081182D4: .4byte gUnknown_3002028 _081182D8: .4byte gSpecialVar_Result - thumb_func_end sub_8118290 + thumb_func_end MEvent_CreateTask_CardOrNewsOverWireless thumb_func_start sub_81182DC sub_81182DC: @ 81182DC @@ -5004,7 +5004,7 @@ _08118340: b _08118604 _0811836E: ldr r0, _0811837C @ =gUnknown_84591DC - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0x2 strb r0, [r5, 0x8] b _08118604 @@ -5030,7 +5030,7 @@ _08118380: ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] - bl sub_81435D4 + bl GetMysteryGiftBaseBlock lsls r0, 16 ldr r2, _081183FC @ =0x0000ffff ldr r1, [sp, 0x4] @@ -5041,7 +5041,7 @@ _08118380: bl AddWindow strb r0, [r5, 0xB] ldrb r0, [r5, 0xB] - bl sub_814240C + bl MG_DrawTextBorder ldr r0, _08118400 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08118404 @ =gUnknown_8456DDC @@ -5163,7 +5163,7 @@ _081184BC: _081184C4: .4byte gMain _081184C8: ldr r0, _081184FC @ =gUnknown_845928C - bl sub_8142504 + bl AddTextPrinterToWindow1 ldr r4, _08118500 @ =gStringVar1 ldrb r0, [r5, 0xF] lsls r0, 5 @@ -5228,7 +5228,7 @@ _08118548: b _08118604 _0811854E: ldr r0, _08118560 @ =gUnknown_845777C - bl sub_8142504 + bl AddTextPrinterToWindow1 movs r0, 0 movs r1, 0 bl sub_80FB9E4 @@ -5281,10 +5281,10 @@ _081185B4: adds r1, r2 ldr r1, [r1] _081185C2: - bl mevent_0814257C + bl MG_PrintTextOnWindow1AndWaitButton cmp r0, 0 beq _08118604 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite adds r0, r4, 0 bl DestroyTask bl sub_80F8DC0 @@ -12797,7 +12797,7 @@ _0811C168: movs r0, 0 movs r1, 0x1 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter str r5, [sp] movs r0, 0 adds r1, r6, 0 diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s deleted file mode 100644 index dd9c498a4..000000000 --- a/asm/link_rfu_4.s +++ /dev/null @@ -1,2316 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_814240C -sub_814240C: @ 814240C - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - movs r2, 0xF - bl sub_8150048 - pop {r0} - bx r0 - thumb_func_end sub_814240C - - thumb_func_start sub_8142420 -sub_8142420: @ 8142420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r8, r0 - movs r0, 0x20 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x3 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r4, 0x1 - movs r1, 0x11 - mov r10, r1 -_0814244E: - movs r7, 0 - mov r0, r8 - adds r0, 0x2 - movs r1, 0x1 - add r1, r8 - mov r9, r1 - lsls r5, r0, 24 - movs r6, 0 -_0814245E: - mov r1, r8 - ands r1, r4 - adds r0, r7, 0 - ands r0, r4 - cmp r1, r0 - beq _08142480 - lsrs r2, r6, 24 - str r4, [sp] - str r4, [sp, 0x4] - mov r0, r10 - str r0, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x1 - lsrs r3, r5, 24 - bl FillBgTilemapBufferRect - b _08142494 -_08142480: - lsrs r2, r6, 24 - str r4, [sp] - str r4, [sp, 0x4] - mov r1, r10 - str r1, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x2 - lsrs r3, r5, 24 - bl FillBgTilemapBufferRect -_08142494: - movs r0, 0x80 - lsls r0, 17 - adds r6, r0 - adds r7, 0x1 - cmp r7, 0x1F - ble _0814245E - mov r8, r9 - mov r1, r8 - cmp r1, 0x11 - ble _0814244E - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8142420 - - thumb_func_start sub_81424B8 -sub_81424B8: @ 81424B8 - push {lr} - sub sp, 0xC - cmp r0, 0 - beq _081424C6 - cmp r0, 0x1 - beq _081424DE - b _081424F6 -_081424C6: - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - b _081424F6 -_081424DE: - movs r0, 0x20 - str r0, [sp] - movs r0, 0x1E - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect -_081424F6: - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_81424B8 - - thumb_func_start sub_8142504 -sub_8142504: @ 8142504 - push {r4,lr} - sub sp, 0x14 - adds r1, r0, 0 - ldr r4, _08142558 @ =gStringVar4 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r1, 0 - str r1, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - ldr r0, _0814255C @ =gUnknown_8466EF0 - str r0, [sp, 0x8] - str r1, [sp, 0xC] - str r4, [sp, 0x10] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0xF - bl sub_8150048 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08142558: .4byte gStringVar4 -_0814255C: .4byte gUnknown_8466EF0 - thumb_func_end sub_8142504 - - thumb_func_start sub_8142560 -sub_8142560: @ 8142560 - push {lr} - movs r0, 0x1 - bl rbox_fill_rectangle - movs r0, 0x1 - bl ClearWindowTilemap - movs r0, 0x1 - movs r1, 0x1 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_8142560 - - thumb_func_start mevent_0814257C -mevent_0814257C: @ 814257C - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r0, r1, 0 - ldrb r2, [r4] - cmp r2, 0x1 - beq _081425A4 - cmp r2, 0x1 - bgt _08142594 - cmp r2, 0 - beq _0814259E - b _08142604 -_08142594: - cmp r2, 0x2 - beq _081425D8 - cmp r2, 0xFF - beq _08142600 - b _08142604 -_0814259E: - bl sub_8142504 - b _081425C8 -_081425A4: - movs r0, 0 - str r0, [sp] - ldr r0, _081425D0 @ =gUnknown_203F3B0 - str r0, [sp, 0x4] - adds r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0xD0 - movs r2, 0x14 - movs r3, 0x1 - bl DrawDownArrow - ldr r0, _081425D4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08142604 -_081425C8: - ldrb r0, [r4] - adds r0, 0x1 - b _08142602 - .align 2, 0 -_081425D0: .4byte gUnknown_203F3B0 -_081425D4: .4byte gMain -_081425D8: - movs r0, 0x1 - str r0, [sp] - ldr r0, _081425FC @ =gUnknown_203F3B0 - str r0, [sp, 0x4] - adds r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0xD0 - movs r2, 0x14 - movs r3, 0x1 - bl DrawDownArrow - movs r0, 0 - strb r0, [r4] - bl sub_8142560 - movs r0, 0x1 - b _08142606 - .align 2, 0 -_081425FC: .4byte gUnknown_203F3B0 -_08142600: - movs r0, 0x2 -_08142602: - strb r0, [r4] -_08142604: - movs r0, 0 -_08142606: - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - thumb_func_end mevent_0814257C - - thumb_func_start sub_8142610 -sub_8142610: @ 8142610 - push {lr} - sub sp, 0xC - movs r0, 0 - str r0, [sp] - ldr r0, _08142634 @ =gUnknown_203F3B0 - str r0, [sp, 0x4] - adds r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0xD0 - movs r2, 0x14 - movs r3, 0x1 - bl DrawDownArrow - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08142634: .4byte gUnknown_203F3B0 - thumb_func_end sub_8142610 - - thumb_func_start sub_8142638 -sub_8142638: @ 8142638 - push {lr} - sub sp, 0xC - movs r0, 0x1 - str r0, [sp] - ldr r0, _0814265C @ =gUnknown_203F3B0 - str r0, [sp, 0x4] - adds r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0xD0 - movs r2, 0x14 - movs r3, 0x1 - bl DrawDownArrow - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0814265C: .4byte gUnknown_203F3B0 - thumb_func_end sub_8142638 - - thumb_func_start sub_8142660 -sub_8142660: @ 8142660 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08142670 - cmp r0, 0x1 - beq _0814268C - b _08142698 -_08142670: - bl sub_8142610 - ldr r0, _08142688 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08142698 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08142698 - .align 2, 0 -_08142688: .4byte gMain -_0814268C: - bl sub_8142638 - movs r0, 0 - strb r0, [r4] - movs r0, 0x1 - b _0814269A -_08142698: - movs r0, 0 -_0814269A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8142660 - - thumb_func_start sub_81426A0 -sub_81426A0: @ 81426A0 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - bne _081426B0 - adds r0, r1, 0 - bl sub_8142504 -_081426B0: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - bhi _081426C2 - movs r0, 0 - b _081426CC -_081426C2: - movs r0, 0 - strb r0, [r4] - bl sub_8142560 - movs r0, 0x1 -_081426CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81426A0 - - thumb_func_start sub_81426D4 -sub_81426D4: @ 81426D4 - push {r4-r7,lr} - sub sp, 0x24 - lsls r2, 24 - add r1, sp, 0x4 - ldr r0, _081426F8 @ =gUnknown_8466E00 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, _081426FC @ =gUnknown_8466DA8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - cmp r2, 0 - bne _08142704 - ldr r0, _08142700 @ =gUnknown_8466DD0 - b _08142706 - .align 2, 0 -_081426F8: .4byte gUnknown_8466E00 -_081426FC: .4byte gUnknown_8466DA8 -_08142700: .4byte gUnknown_8466DD0 -_08142704: - ldr r0, _08142794 @ =gUnknown_8466DE8 -_08142706: - str r0, [sp, 0x4] - movs r6, 0 - movs r4, 0 - add r0, sp, 0x4 - add r7, sp, 0x1C - ldrh r0, [r0, 0xC] - cmp r6, r0 - bcs _0814273A - add r5, sp, 0x4 -_08142718: - ldr r1, [sp, 0x4] - lsls r0, r4, 3 - adds r0, r1 - ldr r1, [r0] - ldrb r2, [r5, 0x16] - lsls r2, 29 - lsrs r2, 29 - movs r0, 0x2 - bl GetStringWidth - cmp r0, r6 - bls _08142732 - adds r6, r0, 0 -_08142732: - adds r4, 0x1 - ldrh r0, [r5, 0xC] - cmp r4, r0 - bcc _08142718 -_0814273A: - adds r2, r6, 0 - adds r2, 0x9 - lsrs r2, 3 - adds r2, 0x2 - movs r0, 0x2 - negs r0, r0 - ands r2, r0 - lsls r3, r2, 24 - ldr r0, _08142798 @ =0x00ffffff - ldr r1, [sp, 0x1C] - ands r1, r0 - orrs r1, r3 - movs r0, 0x1E - subs r0, r2 - lsls r0, 23 - lsrs r0, 16 - ldr r2, _0814279C @ =0xffff00ff - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x1C] - movs r0, 0xE0 - str r0, [sp] - adds r0, r7, 0 - add r1, sp, 0x4 - movs r2, 0x1 - movs r3, 0xA - bl DoMysteryGiftListMenu - adds r4, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0814278A - movs r0, 0x2 - bl ClearWindowTilemap - movs r0, 0x2 - movs r1, 0x1 - bl CopyWindowToVram -_0814278A: - adds r0, r4, 0 - add sp, 0x24 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08142794: .4byte gUnknown_8466DE8 -_08142798: .4byte 0x00ffffff -_0814279C: .4byte 0xffff00ff - thumb_func_end sub_81426D4 - - 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 @ =gUnknown_8466EF0 - 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 sub_8150048 - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - bl PutWindowTilemap - b _0814287E - .align 2, 0 -_08142828: .4byte gUnknown_8466D98 -_0814282C: .4byte gUnknown_8466EF0 -_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 @ =gUnknown_8466EF0 - 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 sub_8150048 - 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 gUnknown_8466EF0 -_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} - cmp r0, 0 - bne _08142AC0 - bl sub_8143F38 - b _08142AC4 -_08142AC0: - bl sub_8143DBC -_08142AC4: - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8142AB4 - - thumb_func_start sub_8142ACC -sub_8142ACC: @ 8142ACC - push {lr} - cmp r0, 0 - bne _08142AE2 - adds r0, r1, 0 - bl sub_814593C - cmp r0, 0 - beq _08142AEC - bl sub_81456F0 - b _08142AF4 -_08142AE2: - adds r0, r1, 0 - bl sub_8146604 - cmp r0, 0 - bne _08142AF0 -_08142AEC: - movs r0, 0 - b _08142AF6 -_08142AF0: - bl sub_81462EC -_08142AF4: - movs r0, 0x1 -_08142AF6: - pop {r1} - bx r1 - thumb_func_end sub_8142ACC - - thumb_func_start sub_8142AFC -sub_8142AFC: @ 8142AFC - push {lr} - cmp r2, 0 - beq _08142B0C - ldr r3, _08142B08 @ =gUnknown_841ECD3 - b _08142B0E - .align 2, 0 -_08142B08: .4byte gUnknown_841ECD3 -_08142B0C: - ldr r3, _08142B1C @ =gUnknown_841EC99 -_08142B0E: - movs r2, 0x1 - bl sub_81427A0 - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08142B1C: .4byte gUnknown_841EC99 - thumb_func_end sub_8142AFC - - thumb_func_start mevent_message_was_thrown_away -mevent_message_was_thrown_away: @ 8142B20 - push {lr} - cmp r1, 0 - beq _08142B30 - ldr r1, _08142B2C @ =gUnknown_841ED9C - b _08142B32 - .align 2, 0 -_08142B2C: .4byte gUnknown_841ED9C -_08142B30: - ldr r1, _08142B3C @ =gUnknown_841ED7B -_08142B32: - bl mevent_0814257C - pop {r1} - bx r1 - .align 2, 0 -_08142B3C: .4byte gUnknown_841ED7B - thumb_func_end mevent_message_was_thrown_away - - thumb_func_start mevent_save_game -mevent_save_game: @ 8142B40 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0x4 - bhi _08142BB0 - lsls r0, 2 - ldr r1, _08142B54 @ =_08142B58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08142B54: .4byte _08142B58 - .align 2, 0 -_08142B58: - .4byte _08142B6C - .4byte _08142B78 - .4byte _08142B80 - .4byte _08142B8C - .4byte _08142BA4 -_08142B6C: - ldr r0, _08142B74 @ =gUnknown_841ED2F - bl sub_8142504 - b _08142B98 - .align 2, 0 -_08142B74: .4byte gUnknown_841ED2F -_08142B78: - movs r0, 0 - bl TrySavingData - b _08142B98 -_08142B80: - ldr r0, _08142B88 @ =gUnknown_841ED50 - bl sub_8142504 - b _08142B98 - .align 2, 0 -_08142B88: .4byte gUnknown_841ED50 -_08142B8C: - ldr r0, _08142BA0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08142BB0 -_08142B98: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08142BB0 - .align 2, 0 -_08142BA0: .4byte gMain -_08142BA4: - movs r0, 0 - strb r0, [r4] - bl sub_8142560 - movs r0, 0x1 - b _08142BB2 -_08142BB0: - movs r0, 0 -_08142BB2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end mevent_save_game - - thumb_func_start mevent_message -mevent_message: @ 8142BB8 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r2, 0 - str r2, [r4] - cmp r3, 0xE - bls _08142BCE - b _08142CE0 -_08142BCE: - lsls r0, r3, 2 - ldr r1, _08142BD8 @ =_08142BDC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08142BD8: .4byte _08142BDC - .align 2, 0 -_08142BDC: - .4byte _08142C18 - .4byte _08142C24 - .4byte _08142C30 - .4byte _08142C48 - .4byte _08142C60 - .4byte _08142C6C - .4byte _08142C78 - .4byte _08142C84 - .4byte _08142C90 - .4byte _08142C9C - .4byte _08142CA8 - .4byte _08142CC0 - .4byte _08142CCC - .4byte _08142CD8 - .4byte _08142CDC -_08142C18: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C20 @ =gUnknown_841EA6F - b _08142CE0 - .align 2, 0 -_08142C20: .4byte gUnknown_841EA6F -_08142C24: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C2C @ =gUnknown_841E9D3 - b _08142CE0 - .align 2, 0 -_08142C2C: .4byte gUnknown_841E9D3 -_08142C30: - movs r0, 0x1 - str r0, [r4] - ldr r2, _08142C40 @ =gUnknown_841E866 - cmp r5, 0 - bne _08142CE0 - ldr r2, _08142C44 @ =gUnknown_841E8BD - b _08142CE0 - .align 2, 0 -_08142C40: .4byte gUnknown_841E866 -_08142C44: .4byte gUnknown_841E8BD -_08142C48: - movs r0, 0x1 - str r0, [r4] - ldr r2, _08142C58 @ =gUnknown_841E88F - cmp r5, 0 - bne _08142CE0 - ldr r2, _08142C5C @ =gUnknown_841E8E2 - b _08142CE0 - .align 2, 0 -_08142C58: .4byte gUnknown_841E88F -_08142C5C: .4byte gUnknown_841E8E2 -_08142C60: - movs r0, 0x1 - str r0, [r4] - ldr r2, _08142C68 @ =gUnknown_841E90C - b _08142CE0 - .align 2, 0 -_08142C68: .4byte gUnknown_841E90C -_08142C6C: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C74 @ =gUnknown_841E946 - b _08142CE0 - .align 2, 0 -_08142C74: .4byte gUnknown_841E946 -_08142C78: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C80 @ =gUnknown_841E98F - b _08142CE0 - .align 2, 0 -_08142C80: .4byte gUnknown_841E98F -_08142C84: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C8C @ =gUnknown_841E968 - b _08142CE0 - .align 2, 0 -_08142C8C: .4byte gUnknown_841E968 -_08142C90: - movs r0, 0 - str r0, [r4] - ldr r2, _08142C98 @ =gUnknown_841E9AB - b _08142CE0 - .align 2, 0 -_08142C98: .4byte gUnknown_841E9AB -_08142C9C: - movs r0, 0 - str r0, [r4] - ldr r2, _08142CA4 @ =gUnknown_841E7D1 - b _08142CE0 - .align 2, 0 -_08142CA4: .4byte gUnknown_841E7D1 -_08142CA8: - movs r0, 0 - str r0, [r4] - ldr r2, _08142CB8 @ =gUnknown_841EA3F - cmp r6, 0 - bne _08142CE0 - ldr r2, _08142CBC @ =gUnknown_841EA0D - b _08142CE0 - .align 2, 0 -_08142CB8: .4byte gUnknown_841EA3F -_08142CBC: .4byte gUnknown_841EA0D -_08142CC0: - movs r0, 0 - str r0, [r4] - ldr r2, _08142CC8 @ =gUnknown_841E7BC - b _08142CE0 - .align 2, 0 -_08142CC8: .4byte gUnknown_841E7BC -_08142CCC: - movs r0, 0x1 - str r0, [r4] - ldr r2, _08142CD4 @ =gUnknown_841E92B - b _08142CE0 - .align 2, 0 -_08142CD4: .4byte gUnknown_841E92B -_08142CD8: - movs r0, 0x1 - b _08142CDE -_08142CDC: - movs r0, 0 -_08142CDE: - str r0, [r4] -_08142CE0: - adds r0, r2, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end mevent_message - - thumb_func_start mevent_08142CE8 -mevent_08142CE8: @ 8142CE8 - push {r4-r6,lr} - adds r6, r0, 0 - adds r0, r1, 0 - adds r5, r2, 0 - ldrb r4, [r6] - cmp r4, 0x1 - beq _08142D1A - cmp r4, 0x1 - bgt _08142D00 - cmp r4, 0 - beq _08142D06 - b _08142D46 -_08142D00: - cmp r4, 0x2 - beq _08142D30 - b _08142D46 -_08142D06: - cmp r0, 0 - beq _08142D0E - bl sub_8142504 -_08142D0E: - movs r0, 0x81 - lsls r0, 1 - bl PlayFanfare - strh r4, [r5] - b _08142D28 -_08142D1A: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xF0 - bls _08142D46 -_08142D28: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _08142D46 -_08142D30: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08142D46 - movs r0, 0 - strb r0, [r6] - bl sub_8142560 - movs r0, 0x1 - b _08142D48 -_08142D46: - movs r0, 0 -_08142D48: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end mevent_08142CE8 - - thumb_func_start mevent_message_stamp_card_etc_send_status -mevent_message_stamp_card_etc_send_status: @ 8142D50 - push {r4,lr} - adds r3, r0, 0 - ldr r1, _08142D6C @ =gUnknown_841E7BC - movs r0, 0 - str r0, [r3] - adds r4, r1, 0 - cmp r2, 0xE - bhi _08142E12 - lsls r0, r2, 2 - ldr r1, _08142D70 @ =_08142D74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08142D6C: .4byte gUnknown_841E7BC -_08142D70: .4byte _08142D74 - .align 2, 0 -_08142D74: - .4byte _08142DB0 - .4byte _08142DB8 - .4byte _08142DC0 - .4byte _08142DC8 - .4byte _08142DD4 - .4byte _08142DDC - .4byte _08142DE4 - .4byte _08142DEC - .4byte _08142DF4 - .4byte _08142DFC - .4byte _08142E10 - .4byte _08142E04 - .4byte _08142E08 - .4byte _08142E08 - .4byte _08142E10 -_08142DB0: - ldr r1, _08142DB4 @ =gUnknown_841EA6F - b _08142E12 - .align 2, 0 -_08142DB4: .4byte gUnknown_841EA6F -_08142DB8: - ldr r1, _08142DBC @ =gUnknown_841E9D3 - b _08142E12 - .align 2, 0 -_08142DBC: .4byte gUnknown_841E9D3 -_08142DC0: - ldr r1, _08142DC4 @ =gUnknown_841EB20 - b _08142DCA - .align 2, 0 -_08142DC4: .4byte gUnknown_841EB20 -_08142DC8: - ldr r1, _08142DD0 @ =gUnknown_841EB46 -_08142DCA: - movs r0, 0x1 - str r0, [r3] - b _08142E12 - .align 2, 0 -_08142DD0: .4byte gUnknown_841EB46 -_08142DD4: - ldr r1, _08142DD8 @ =gUnknown_841EB71 - b _08142E12 - .align 2, 0 -_08142DD8: .4byte gUnknown_841EB71 -_08142DDC: - ldr r1, _08142DE0 @ =gUnknown_841EBAA - b _08142E12 - .align 2, 0 -_08142DE0: .4byte gUnknown_841EBAA -_08142DE4: - ldr r1, _08142DE8 @ =gUnknown_841EC12 - b _08142E12 - .align 2, 0 -_08142DE8: .4byte gUnknown_841EC12 -_08142DEC: - ldr r1, _08142DF0 @ =gUnknown_841EBDE - b _08142E12 - .align 2, 0 -_08142DF0: .4byte gUnknown_841EBDE -_08142DF4: - ldr r1, _08142DF8 @ =gUnknown_841E9AB - b _08142E12 - .align 2, 0 -_08142DF8: .4byte gUnknown_841E9AB -_08142DFC: - ldr r1, _08142E00 @ =gUnknown_841EC40 - b _08142E12 - .align 2, 0 -_08142E00: .4byte gUnknown_841EC40 -_08142E04: - adds r1, r4, 0 - b _08142E12 -_08142E08: - ldr r1, _08142E0C @ =gUnknown_841EB8E - b _08142E12 - .align 2, 0 -_08142E0C: .4byte gUnknown_841EB8E -_08142E10: - ldr r1, _08142E1C @ =gUnknown_841EC6A -_08142E12: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08142E1C: .4byte gUnknown_841EC6A - thumb_func_end mevent_message_stamp_card_etc_send_status - - thumb_func_start sub_8142E20 -sub_8142E20: @ 8142E20 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, sp - bl mevent_message_stamp_card_etc_send_status - adds r1, r0, 0 - ldr r0, [sp] - cmp r0, 0 - bne _08142E46 - adds r0, r4, 0 - bl mevent_0814257C - b _08142E4E -_08142E46: - adds r0, r4, 0 - adds r2, r5, 0 - bl mevent_08142CE8 -_08142E4E: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8142E20 - - thumb_func_start task_add_00_mystery_gift -task_add_00_mystery_gift: @ 8142E58 - push {r4,lr} - ldr r0, _08142E98 @ =sub_8142EA0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _08142E9C @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - strb r0, [r4, 0x8] - strb r0, [r4, 0x9] - strb r0, [r4, 0xA] - strb r0, [r4, 0xB] - strb r0, [r4, 0xC] - strb r0, [r4, 0xD] - movs r1, 0 - strh r0, [r4] - strh r0, [r4, 0x2] - strh r0, [r4, 0x4] - strh r0, [r4, 0x6] - strb r1, [r4, 0xE] - movs r0, 0x40 - bl AllocZeroed - str r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08142E98: .4byte sub_8142EA0 -_08142E9C: .4byte gTasks+0x8 - thumb_func_end task_add_00_mystery_gift - - thumb_func_start sub_8142EA0 -sub_8142EA0: @ 8142EA0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08142EC4 @ =gTasks+0x8 - adds r5, r0, r1 - ldrb r0, [r5, 0x8] - cmp r0, 0x25 - bls _08142EBA - b _081435C6 -_08142EBA: - lsls r0, 2 - ldr r1, _08142EC8 @ =_08142ECC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08142EC4: .4byte gTasks+0x8 -_08142EC8: .4byte _08142ECC - .align 2, 0 -_08142ECC: - .4byte _08142F64 - .4byte _08142F6A - .4byte _08142FAC - .4byte _08142FE4 - .4byte _08143008 - .4byte _08143058 - .4byte _081430B8 - .4byte _081430EC - .4byte _081430FC - .4byte _08143174 - .4byte _08143198 - .4byte _081431B0 - .4byte _081431E0 - .4byte _0814321C - .4byte _08143232 - .4byte _08143264 - .4byte _0814358C - .4byte _081432C2 - .4byte _081432CC - .4byte _081435C6 - .4byte _081432DE - .4byte _0814332C - .4byte _081433A2 - .4byte _081433D2 - .4byte _08143408 - .4byte _08143422 - .4byte _08143436 - .4byte _08143442 - .4byte _08143456 - .4byte _0814346A - .4byte _0814349C - .4byte _081434D0 - .4byte _08143514 - .4byte _08143528 - .4byte _08143544 - .4byte _08143558 - .4byte _0814358C - .4byte _081435AC -_08142F64: - movs r0, 0x1 - strb r0, [r5, 0x8] - b _081435C6 -_08142F6A: - adds r0, r5, 0 - adds r0, 0x9 - adds r1, r5, 0 - movs r2, 0 - bl sub_81426D4 - adds r1, r0, 0 - cmp r1, 0x1 - beq _08142F94 - cmp r1, 0x1 - bcc _08142F8A - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08142FA6 - b _081435C6 -_08142F8A: - movs r0, 0 - strb r0, [r5, 0xC] - bl sub_8143FC8 - b _08142F9A -_08142F94: - strb r1, [r5, 0xC] - bl sub_8143E1C -_08142F9A: - cmp r0, 0x1 - bne _08142FA0 - b _081434C4 -_08142FA0: - movs r0, 0x2 - strb r0, [r5, 0x8] - b _081435C6 -_08142FA6: - movs r0, 0x25 - strb r0, [r5, 0x8] - b _081435C6 -_08142FAC: - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _08142FC0 - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _08142FBC @ =gUnknown_841E6A1 - b _08142FC6 - .align 2, 0 -_08142FBC: .4byte gUnknown_841E6A1 -_08142FC0: - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _08142FE0 @ =gUnknown_841E6DC -_08142FC6: - bl mevent_0814257C - cmp r0, 0 - bne _08142FD0 - b _081435C6 -_08142FD0: - movs r0, 0x3 - strb r0, [r5, 0x8] - movs r0, 0 - movs r1, 0x1 - bl sub_8142344 - b _081435C6 - .align 2, 0 -_08142FE0: .4byte gUnknown_841E6DC -_08142FE4: - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _08142FF8 - ldr r0, _08142FF4 @ =gUnknown_841E717 - bl sub_8142504 - b _08142FFE - .align 2, 0 -_08142FF4: .4byte gUnknown_841E717 -_08142FF8: - ldr r0, _08143004 @ =gUnknown_841E741 - bl sub_8142504 -_08142FFE: - movs r0, 0x4 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_08143004: .4byte gUnknown_841E741 -_08143008: - adds r0, r5, 0 - adds r0, 0x9 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_81426D4 - adds r4, r0, 0 - cmp r4, 0x1 - beq _08143036 - cmp r4, 0x1 - bcc _08143028 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _08143042 - b _081435C6 -_08143028: - bl sub_8142560 - movs r1, 0 - movs r0, 0x5 - strb r0, [r5, 0x8] - strb r1, [r5, 0xD] - b _081435C6 -_08143036: - bl sub_8142560 - movs r0, 0x5 - strb r0, [r5, 0x8] - strb r4, [r5, 0xD] - b _081435C6 -_08143042: - bl sub_8142560 - ldrb r0, [r5, 0xC] - bl sub_8142A44 - cmp r0, 0 - beq _08143052 - b _081434C4 -_08143052: - strb r0, [r5, 0x8] - movs r0, 0 - b _0814359E -_08143058: - ldr r0, _08143074 @ =gStringVar1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, _08143078 @ =gStringVar2 - strb r1, [r0] - ldr r0, _0814307C @ =gStringVar3 - strb r1, [r0] - ldrb r0, [r5, 0xC] - cmp r0, 0 - beq _08143080 - cmp r0, 0x1 - beq _0814309A - b _081430B2 - .align 2, 0 -_08143074: .4byte gStringVar1 -_08143078: .4byte gStringVar2 -_0814307C: .4byte gStringVar3 -_08143080: - ldrb r0, [r5, 0xD] - cmp r0, 0x1 - bne _0814308E - movs r0, 0x15 - bl sub_8117ED4 - b _081430B2 -_0814308E: - cmp r0, 0 - bne _081430B2 - movs r0, 0x15 - bl sub_8118290 - b _081430B2 -_0814309A: - ldrb r0, [r5, 0xD] - cmp r0, 0x1 - bne _081430A8 - movs r0, 0x16 - bl sub_8117ED4 - b _081430B2 -_081430A8: - cmp r0, 0 - bne _081430B2 - movs r0, 0x16 - bl sub_8118290 -_081430B2: - movs r0, 0x6 - strb r0, [r5, 0x8] - b _081435C6 -_081430B8: - ldr r0, _081430D0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081430D4 - movs r0, 0x1 - bl sub_81424B8 - movs r0, 0x7 - strb r0, [r5, 0x8] - bl mevent_srv_ish_do_init - b _081435C6 - .align 2, 0 -_081430D0: .4byte gReceivedRemoteLinkPlayers -_081430D4: - ldr r0, _081430E8 @ =gSpecialVar_Result - ldrh r0, [r0] - cmp r0, 0x5 - beq _081430DE - b _081435C6 -_081430DE: - movs r0, 0x1 - bl sub_81424B8 - b _08143464 - .align 2, 0 -_081430E8: .4byte gSpecialVar_Result -_081430EC: - ldr r0, _081430F8 @ =gUnknown_841E794 - bl sub_8142504 - movs r0, 0x8 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_081430F8: .4byte gUnknown_841E794 -_081430FC: - adds r0, r5, 0 - bl mevent_srv_ish_do_exec - subs r0, 0x2 - cmp r0, 0x4 - bls _0814310A - b _081435C6 -_0814310A: - lsls r0, 2 - ldr r1, _08143114 @ =_08143118 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08143114: .4byte _08143118 - .align 2, 0 -_08143118: - .4byte _08143156 - .4byte _08143150 - .4byte _0814315C - .4byte _0814313A - .4byte _0814312C -_0814312C: - bl task_add_05_task_del_08FA224_when_no_RfuFunc - ldrh r0, [r5] - strb r0, [r5, 0xE] - movs r0, 0xD - strb r0, [r5, 0x8] - b _081435C6 -_0814313A: - ldr r4, [r5, 0x10] - bl mevent_srv_ish_get_buffer - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x40 - bl memcpy - bl mevent_srv_ish_inc_flag - b _081435C6 -_08143150: - movs r0, 0xA - strb r0, [r5, 0x8] - b _081435C6 -_08143156: - movs r0, 0x9 - strb r0, [r5, 0x8] - b _081435C6 -_0814315C: - movs r0, 0xB - strb r0, [r5, 0x8] - ldr r0, _0814316C @ =gStringVar1 - ldr r1, _08143170 @ =gLinkPlayers + 8 - bl StringCopy - b _081435C6 - .align 2, 0 -_0814316C: .4byte gStringVar1 -_08143170: .4byte gLinkPlayers + 8 -_08143174: - adds r4, r5, 0 - adds r4, 0x9 - bl mevent_srv_ish_get_buffer - adds r3, r0, 0 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_81427A0 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0x1 - beq _0814320C - cmp r1, 0x1 - bcs _081431FA - movs r0, 0 - b _0814320E -_08143198: - adds r4, r5, 0 - adds r4, 0x9 - bl mevent_srv_ish_get_buffer - adds r1, r0, 0 - adds r0, r4, 0 - bl mevent_0814257C - cmp r0, 0 - bne _081431AE - b _081435C6 -_081431AE: - b _08143212 -_081431B0: - adds r0, r5, 0 - adds r0, 0x9 - ldr r3, _081431D8 @ =gUnknown_841E7F2 - adds r1, r5, 0 - movs r2, 0 - bl sub_81427A0 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0x1 - beq _0814320C - cmp r1, 0x1 - bcs _081431FA - bl sub_8144144 - cmp r0, 0x1 - bne _081431DC - movs r0, 0xC - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_081431D8: .4byte gUnknown_841E7F2 -_081431DC: - movs r0, 0 - b _0814320E -_081431E0: - adds r0, r5, 0 - adds r0, 0x9 - ldr r3, _08143204 @ =gUnknown_841E823 - adds r1, r5, 0 - movs r2, 0 - bl sub_81427A0 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0x1 - beq _0814320C - cmp r1, 0x1 - bcc _08143208 -_081431FA: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0814320C - b _081435C6 - .align 2, 0 -_08143204: .4byte gUnknown_841E823 -_08143208: - movs r0, 0 - b _0814320E -_0814320C: - movs r0, 0x1 -_0814320E: - bl mevent_srv_ish_set_param -_08143212: - bl mevent_srv_ish_inc_flag - movs r0, 0x7 - strb r0, [r5, 0x8] - b _081435C6 -_0814321C: - bl sub_80FA4F8 - lsls r0, 24 - cmp r0, 0 - bne _08143228 - b _081435C6 -_08143228: - bl sub_80FCE44 - movs r0, 0xE - strb r0, [r5, 0x8] - b _081435C6 -_08143232: - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _08143258 @ =gUnknown_841E7A3 - bl sub_81426A0 - cmp r0, 0 - bne _08143242 - b _081435C6 -_08143242: - ldrb r0, [r5, 0xD] - cmp r0, 0x1 - bne _08143250 - ldr r0, _0814325C @ =gStringVar1 - ldr r1, _08143260 @ =gLinkPlayers + 8 - bl StringCopy -_08143250: - movs r0, 0xF - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_08143258: .4byte gUnknown_841E7A3 -_0814325C: .4byte gStringVar1 -_08143260: .4byte gLinkPlayers + 8 -_08143264: - ldrb r1, [r5, 0xC] - ldrb r2, [r5, 0xD] - ldrb r3, [r5, 0xE] - mov r0, sp - bl mevent_message - adds r1, r0, 0 - cmp r1, 0 - bne _08143278 - ldr r1, [r5, 0x10] -_08143278: - ldr r0, [sp] - cmp r0, 0 - beq _0814328A - adds r0, r5, 0 - adds r0, 0x9 - adds r2, r5, 0 - bl mevent_08142CE8 - b _08143292 -_0814328A: - adds r0, r5, 0 - adds r0, 0x9 - bl mevent_0814257C -_08143292: - adds r1, r0, 0 - cmp r1, 0 - bne _0814329A - b _081435C6 -_0814329A: - ldrb r0, [r5, 0xE] - cmp r0, 0x3 - bne _081432B4 - ldrb r0, [r5, 0xD] - cmp r0, 0x1 - bne _081432AE - movs r0, 0x1 - bl sub_8146C30 - b _081432B4 -_081432AE: - movs r0, 0x2 - bl sub_8146C30 -_081432B4: - ldr r0, [sp] - cmp r0, 0 - beq _081432BC - b _0814357C -_081432BC: - strb r0, [r5, 0x8] - movs r0, 0 - b _0814359E -_081432C2: - adds r0, r5, 0 - adds r0, 0x9 - bl mevent_save_game - b _08143596 -_081432CC: - adds r0, r5, 0 - adds r0, 0x9 - ldrb r1, [r5, 0xC] - bl sub_8142A58 - cmp r0, 0 - bne _081432DC - b _081435C6 -_081432DC: - b _0814339C -_081432DE: - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _08143308 - ldr r2, _08143304 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081432F4 - movs r0, 0x15 - strb r0, [r5, 0x8] -_081432F4: - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08143300 - b _081435C6 -_08143300: - b _08143326 - .align 2, 0 -_08143304: .4byte gMain -_08143308: - ldr r0, _0814331C @ =gMain - ldrh r0, [r0, 0x2E] - bl sub_8146884 - cmp r0, 0 - beq _08143320 - cmp r0, 0x1 - beq _08143326 - b _081435C6 - .align 2, 0 -_0814331C: .4byte gMain -_08143320: - bl sub_81467EC - b _08143402 -_08143326: - movs r0, 0x1B - strb r0, [r5, 0x8] - b _081435C6 -_0814332C: - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _08143346 - bl sub_8144054 - cmp r0, 0 - beq _0814335A - adds r0, r5, 0 - adds r0, 0x9 - ldrb r2, [r5, 0xC] - adds r1, r5, 0 - movs r3, 0 - b _08143364 -_08143346: - bl sub_8143E78 - cmp r0, 0 - beq _0814335A - adds r0, r5, 0 - adds r0, 0x9 - ldrb r2, [r5, 0xC] - adds r1, r5, 0 - movs r3, 0 - b _08143364 -_0814335A: - adds r0, r5, 0 - adds r0, 0x9 - ldrb r2, [r5, 0xC] - adds r1, r5, 0 - movs r3, 0x1 -_08143364: - bl sub_81428F4 - adds r1, r0, 0 - cmp r1, 0x1 - beq _08143386 - cmp r1, 0x1 - bcc _08143380 - cmp r1, 0x2 - beq _0814338C - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08143392 - b _081435C6 -_08143380: - movs r0, 0x1C - strb r0, [r5, 0x8] - b _081435C6 -_08143386: - movs r0, 0x1D - strb r0, [r5, 0x8] - b _081435C6 -_0814338C: - movs r0, 0x16 - strb r0, [r5, 0x8] - b _081435C6 -_08143392: - ldrb r0, [r5, 0xC] - cmp r0, 0x1 - bne _0814339C - bl sub_8146834 -_0814339C: - movs r0, 0x14 - strb r0, [r5, 0x8] - b _081435C6 -_081433A2: - adds r0, r5, 0 - adds r0, 0x9 - ldrb r2, [r5, 0xC] - adds r1, r5, 0 - bl sub_8142AFC - adds r1, r0, 0 - cmp r1, 0 - beq _081433BE - cmp r1, 0 - ble _081433EC - cmp r1, 0x1 - beq _08143402 - b _081435C6 -_081433BE: - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _081433FC - bl sub_8144144 - cmp r0, 0x1 - bne _081433FC - movs r0, 0x17 - strb r0, [r5, 0x8] - b _081435C6 -_081433D2: - adds r0, r5, 0 - adds r0, 0x9 - ldr r3, _081433F8 @ =gUnknown_841ECF9 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_81427A0 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0x1 - beq _08143402 - cmp r1, 0x1 - bcc _081433FC -_081433EC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08143402 - b _081435C6 - .align 2, 0 -_081433F8: .4byte gUnknown_841ECF9 -_081433FC: - movs r0, 0x18 - strb r0, [r5, 0x8] - b _081435C6 -_08143402: - movs r0, 0x15 - strb r0, [r5, 0x8] - b _081435C6 -_08143408: - ldrb r0, [r5, 0xC] - movs r1, 0x1 - bl sub_8142ACC - cmp r0, 0 - bne _08143416 - b _081435C6 -_08143416: - ldrb r0, [r5, 0xC] - bl sub_8142AB4 - movs r0, 0x19 - strb r0, [r5, 0x8] - b _081435C6 -_08143422: - adds r0, r5, 0 - adds r0, 0x9 - bl mevent_save_game - cmp r0, 0 - bne _08143430 - b _081435C6 -_08143430: - movs r0, 0x1A - strb r0, [r5, 0x8] - b _081435C6 -_08143436: - adds r0, r5, 0 - adds r0, 0x9 - ldrb r1, [r5, 0xC] - bl mevent_message_was_thrown_away - b _08143596 -_08143442: - ldrb r0, [r5, 0xC] - movs r1, 0 - bl sub_8142ACC - cmp r0, 0 - bne _08143450 - b _081435C6 -_08143450: - movs r0, 0 - strb r0, [r5, 0x8] - b _081435C6 -_08143456: - ldrb r0, [r5, 0xC] - movs r1, 0x1 - bl sub_8142ACC - cmp r0, 0 - bne _08143464 - b _081435C6 -_08143464: - movs r0, 0x3 - strb r0, [r5, 0x8] - b _081435C6 -_0814346A: - ldrb r0, [r5, 0xC] - movs r1, 0x1 - bl sub_8142ACC - cmp r0, 0 - bne _08143478 - b _081435C6 -_08143478: - ldrb r0, [r5, 0xC] - cmp r0, 0 - beq _08143484 - cmp r0, 0x1 - beq _0814348C - b _08143492 -_08143484: - movs r0, 0x15 - bl sub_81179CC - b _08143492 -_0814348C: - movs r0, 0x16 - bl sub_81179CC -_08143492: - movs r0, 0x1 - strb r0, [r5, 0xD] - movs r0, 0x1E - strb r0, [r5, 0x8] - b _081435C6 -_0814349C: - ldr r0, _081434B0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081434B4 - movs r0, 0x1 - bl sub_81424B8 - movs r0, 0x1F - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_081434B0: .4byte gReceivedRemoteLinkPlayers -_081434B4: - ldr r0, _081434CC @ =gSpecialVar_Result - ldrh r0, [r0] - cmp r0, 0x5 - beq _081434BE - b _081435C6 -_081434BE: - movs r0, 0x1 - bl sub_81424B8 -_081434C4: - movs r0, 0x12 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_081434CC: .4byte gSpecialVar_Result -_081434D0: - ldr r0, _081434F0 @ =gStringVar1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, _081434F4 @ =gStringVar2 - strb r1, [r0] - ldr r0, _081434F8 @ =gStringVar3 - strb r1, [r0] - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _08143500 - ldr r0, _081434FC @ =gUnknown_841EAE7 - bl sub_8142504 - bl mevent_srv_common_do_init_2 - b _0814350A - .align 2, 0 -_081434F0: .4byte gStringVar1 -_081434F4: .4byte gStringVar2 -_081434F8: .4byte gStringVar3 -_081434FC: .4byte gUnknown_841EAE7 -_08143500: - ldr r0, _08143510 @ =gUnknown_841EB01 - bl sub_8142504 - bl mevent_srv_common_do_init_1 -_0814350A: - movs r0, 0x20 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_08143510: .4byte gUnknown_841EB01 -_08143514: - adds r0, r5, 0 - bl mevent_srv_init_do_exec - cmp r0, 0x3 - bne _081435C6 - ldrh r0, [r5] - strb r0, [r5, 0xE] - movs r0, 0x21 - strb r0, [r5, 0x8] - b _081435C6 -_08143528: - bl task_add_05_task_del_08FA224_when_no_RfuFunc - ldr r0, _0814353C @ =gStringVar1 - ldr r1, _08143540 @ =gLinkPlayers + 0x24 - bl StringCopy - movs r0, 0x22 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_0814353C: .4byte gStringVar1 -_08143540: .4byte gLinkPlayers + 0x24 -_08143544: - bl sub_80FA4F8 - lsls r0, 24 - cmp r0, 0 - beq _081435C6 - bl sub_80FCE44 - movs r0, 0x23 - strb r0, [r5, 0x8] - b _081435C6 -_08143558: - adds r0, r5, 0 - adds r0, 0x9 - ldrb r2, [r5, 0xD] - ldrb r3, [r5, 0xE] - adds r1, r5, 0 - bl sub_8142E20 - cmp r0, 0 - beq _081435C6 - ldr r0, [r5, 0xC] - ldr r1, _08143584 @ =0x00ffff00 - ands r0, r1 - ldr r1, _08143588 @ =0x00030100 - cmp r0, r1 - bne _0814359A - movs r0, 0x3 - bl sub_8146C30 -_0814357C: - movs r0, 0x11 - strb r0, [r5, 0x8] - b _081435C6 - .align 2, 0 -_08143584: .4byte 0x00ffff00 -_08143588: .4byte 0x00030100 -_0814358C: - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _081435A8 @ =gUnknown_841E7BC - bl mevent_0814257C -_08143596: - cmp r0, 0 - beq _081435C6 -_0814359A: - movs r0, 0 - strb r0, [r5, 0x8] -_0814359E: - movs r1, 0 - bl sub_8142344 - b _081435C6 - .align 2, 0 -_081435A8: .4byte gUnknown_841E7BC -_081435AC: - bl sub_80098B8 - bl sub_812B484 - ldr r0, [r5, 0x10] - bl Free - adds r0, r4, 0 - bl DestroyTask - ldr r0, _081435D0 @ =sub_81422FC - bl SetMainCallback2 -_081435C6: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081435D0: .4byte sub_81422FC - thumb_func_end sub_8142EA0 - - thumb_func_start sub_81435D4 -sub_81435D4: @ 81435D4 - ldr r0, _081435D8 @ =0x0000019b - bx lr - .align 2, 0 -_081435D8: .4byte 0x0000019b - thumb_func_end sub_81435D4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/list_menu.s b/asm/list_menu.s index 3119d53bd..4615e249b 100644 --- a/asm/list_menu.s +++ b/asm/list_menu.s @@ -60,7 +60,7 @@ _08106F24: lsls r2, 24 lsrs r2, 24 ldr r1, [sp, 0x4] - bl sub_8150048 + bl DrawTextBorderOuter _08106F34: ldr r0, _08106F64 @ =gMultiuseListMenuTemplate adds r2, r0, 0 @@ -1635,8 +1635,8 @@ sub_8107A9C: @ 8107A9C _08107AE8: .4byte gUnknown_3005E60 thumb_func_end sub_8107A9C - thumb_func_start sub_8107AEC -sub_8107AEC: @ 8107AEC + thumb_func_start ListMenuDefaultCursorMoveFunc +ListMenuDefaultCursorMoveFunc: @ 8107AEC push {lr} lsls r1, 24 cmp r1, 0 @@ -1646,7 +1646,7 @@ sub_8107AEC: @ 8107AEC _08107AFA: pop {r0} bx r0 - thumb_func_end sub_8107AEC + thumb_func_end ListMenuDefaultCursorMoveFunc thumb_func_start sub_8107B00 sub_8107B00: @ 8107B00 diff --git a/asm/main_menu.s b/asm/main_menu.s index b170db136..d7bf1e406 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -1005,7 +1005,7 @@ _0800CB64: .4byte gPlttBufferUnfaded _0800CB68: .4byte gPlttBufferFaded _0800CB6C: .4byte gUnknown_2031DE0 _0800CB70: - ldr r0, _0800CB8C @ =sub_81422AC + ldr r0, _0800CB8C @ =c2_mystery_gift bl SetMainCallback2 bl sub_812B478 bl FreeAllWindowBuffers @@ -1017,7 +1017,7 @@ _0800CB84: pop {r0} bx r0 .align 2, 0 -_0800CB8C: .4byte sub_81422AC +_0800CB8C: .4byte c2_mystery_gift thumb_func_end sub_800CA94 thumb_func_start sub_800CB90 @@ -1141,7 +1141,7 @@ sub_800CC68: @ 800CC68 ands r0, r1 cmp r0, 0 bne _0800CC86 - ldr r0, _0800CC90 @ =sub_8078914 + ldr r0, _0800CC90 @ =CB2_InitTitleScreen bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -1151,7 +1151,7 @@ _0800CC86: bx r0 .align 2, 0 _0800CC8C: .4byte gPaletteFade -_0800CC90: .4byte sub_8078914 +_0800CC90: .4byte CB2_InitTitleScreen thumb_func_end sub_800CC68 thumb_func_start sub_800CC94 diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s index b7e20c4bf..8df50601a 100644 --- a/asm/map_name_popup.s +++ b/asm/map_name_popup.s @@ -360,7 +360,7 @@ _080983C6: adds r0, r4, 0 adds r1, r6, 0 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter adds r0, r4, 0 bl PutWindowTilemap adds r0, r5, 0 diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s deleted file mode 100644 index d6be6db09..000000000 --- a/asm/mystery_gift_menu.s +++ /dev/null @@ -1,410 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8142078 -sub_8142078: @ 8142078 - push {lr} - bl ProcessSpriteCopyRequests - bl LoadOam - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8142078 - - thumb_func_start sub_814208C -sub_814208C: @ 814208C - push {lr} - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - pop {r0} - bx r0 - thumb_func_end sub_814208C - - thumb_func_start sub_81420A4 -sub_81420A4: @ 81420A4 - push {r4-r7,lr} - sub sp, 0xC - adds r7, r0, 0 - ldr r0, _081420C4 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r6, r0, r1 - ldrb r5, [r6] - cmp r5, 0x1 - bne _081420BA - b _081421EC -_081420BA: - cmp r5, 0x1 - bgt _081420C8 - cmp r5, 0 - beq _081420D6 - b _081422A0 - .align 2, 0 -_081420C4: .4byte gMain -_081420C8: - cmp r5, 0x2 - bne _081420CE - b _08142254 -_081420CE: - cmp r5, 0x3 - bne _081420D4 - b _08142274 -_081420D4: - b _081422A0 -_081420D6: - movs r0, 0 - bl SetVBlankCallback - bl ResetPaletteFade - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - movs r0, 0x1 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _081421E0 @ =gUnknown_8466D60 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x3 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x2 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - movs r0, 0 - movs r1, 0xA - movs r2, 0xE0 - bl sub_814FE40 - movs r0, 0 - movs r1, 0x1 - movs r2, 0xF0 - bl sub_814FDA0 - ldr r1, _081421E4 @ =gUnknown_8466D30 - movs r2, 0x80 - lsls r2, 1 - str r5, [sp] - movs r0, 0x3 - movs r3, 0 - bl sub_80F696C - ldr r0, _081421E8 @ =gUnknown_8466D70 - bl InitWindows - bl DeactivateAllTextPrinters - movs r1, 0xC0 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - b _0814226C - .align 2, 0 -_081421E0: .4byte gUnknown_8466D60 -_081421E4: .4byte gUnknown_8466D30 -_081421E8: .4byte gUnknown_8466D70 -_081421EC: - ldr r0, _08142250 @ =gUnknown_8466D10 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - movs r4, 0x20 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x11 - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - bl sub_8142420 - lsls r0, r7, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8142344 - b _0814226C - .align 2, 0 -_08142250: .4byte gUnknown_8466D10 -_08142254: - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram -_0814226C: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _081422A0 -_08142274: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldr r0, _08142298 @ =0x00000149 - bl PlayBGM - ldr r0, _0814229C @ =sub_8142078 - bl SetVBlankCallback - movs r0, 0xC5 - bl EnableInterrupts - movs r0, 0x1 - b _081422A2 - .align 2, 0 -_08142298: .4byte 0x00000149 -_0814229C: .4byte sub_8142078 -_081422A0: - movs r0, 0 -_081422A2: - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81420A4 - - thumb_func_start sub_81422AC -sub_81422AC: @ 81422AC - push {lr} - movs r0, 0 - bl sub_81420A4 - cmp r0, 0 - beq _081422C8 - ldr r0, _081422CC @ =sub_814208C - bl SetMainCallback2 - ldr r1, _081422D0 @ =gUnknown_203F3B8 - movs r0, 0 - strb r0, [r1] - bl task_add_00_mystery_gift -_081422C8: - pop {r0} - bx r0 - .align 2, 0 -_081422CC: .4byte sub_814208C -_081422D0: .4byte gUnknown_203F3B8 - thumb_func_end sub_81422AC - - thumb_func_start sub_81422D4 -sub_81422D4: @ 81422D4 - push {lr} - movs r0, 0x1 - bl sub_81420A4 - cmp r0, 0 - beq _081422F0 - ldr r0, _081422F4 @ =sub_814208C - bl SetMainCallback2 - ldr r1, _081422F8 @ =gUnknown_203F3B8 - movs r0, 0x1 - strb r0, [r1] - bl sub_81438A0 -_081422F0: - pop {r0} - bx r0 - .align 2, 0 -_081422F4: .4byte sub_814208C -_081422F8: .4byte gUnknown_203F3B8 - thumb_func_end sub_81422D4 - - thumb_func_start sub_81422FC -sub_81422FC: @ 81422FC - push {lr} - ldr r1, _0814233C @ =gUnknown_203F3B8 - movs r0, 0 - strb r0, [r1] - bl FreeAllWindowBuffers - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x2 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - ldr r0, _08142340 @ =sub_8078914 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0814233C: .4byte gUnknown_203F3B8 -_08142340: .4byte sub_8078914 - thumb_func_end sub_81422FC - - thumb_func_start sub_8142344 -sub_8142344: @ 8142344 - push {r4-r6,lr} - sub sp, 0x14 - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - cmp r5, 0 - bne _081423B4 - ldr r6, _081423A4 @ =gUnknown_841EDCA - cmp r4, 0x1 - bne _08142362 - ldr r6, _081423A8 @ =gUnknown_8415F51 -_08142362: - str r5, [sp] - str r5, [sp, 0x4] - ldr r4, _081423AC @ =gUnknown_8466EE8 - str r4, [sp, 0x8] - str r5, [sp, 0xC] - ldr r0, _081423B0 @ =gUnknown_841EDBD - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - movs r0, 0 - adds r1, r6, 0 - movs r2, 0 - bl GetStringWidth - movs r2, 0xDE - subs r2, r0 - lsls r2, 24 - lsrs r2, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - str r6, [sp, 0x10] - movs r0, 0 - movs r1, 0 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - b _081423E8 - .align 2, 0 -_081423A4: .4byte gUnknown_841EDCA -_081423A8: .4byte gUnknown_8415F51 -_081423AC: .4byte gUnknown_8466EE8 -_081423B0: .4byte gUnknown_841EDBD -_081423B4: - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - ldr r5, _08142400 @ =gUnknown_8466EE8 - str r5, [sp, 0x8] - str r4, [sp, 0xC] - ldr r0, _08142404 @ =gUnknown_841DE50 - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x2 - bl AddTextPrinterParametrized2 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r4, [sp, 0xC] - ldr r0, _08142408 @ =gUnknown_841DE51 - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0 - movs r2, 0x78 - movs r3, 0x2 - bl AddTextPrinterParametrized2 -_081423E8: - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl PutWindowTilemap - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08142400: .4byte gUnknown_8466EE8 -_08142404: .4byte gUnknown_841DE50 -_08142408: .4byte gUnknown_841DE51 - thumb_func_end sub_8142344 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 0efea9307..d191a9009 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3890,7 +3890,7 @@ sub_80569BC: @ 80569BC lsrs r0, 24 cmp r0, 0x1 bne _080569CE - bl sub_80098B8 + bl CloseLink _080569CE: ldr r0, _080569E4 @ =gWirelessCommType ldrb r0, [r0] diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 68b30e43b..1d0be1b23 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -1545,7 +1545,7 @@ sub_810317C: @ 810317C movs r0, 0x1 movs r1, 0xFF bl FillWindowPixelBuffer - ldr r0, _08103234 @ =gUnknown_8415F51 + ldr r0, _08103234 @ =gText_PickOKExit bl sub_8104C2C movs r0, 0 movs r1, 0x2 @@ -1562,7 +1562,7 @@ _08103224: .4byte gUnknown_845216C _08103228: .4byte gUnknown_203ACF0 _0810322C: .4byte gUnknown_8452174 _08103230: .4byte gUnknown_8415F3D -_08103234: .4byte gUnknown_8415F51 +_08103234: .4byte gText_PickOKExit thumb_func_end sub_810317C thumb_func_start sub_8103238 @@ -1874,7 +1874,7 @@ sub_810345C: @ 810345C movs r0, 0x1 movs r1, 0xFF bl FillWindowPixelBuffer - ldr r0, _08103514 @ =gUnknown_8415F51 + ldr r0, _08103514 @ =gText_PickOKExit bl sub_8104C2C movs r0, 0 movs r1, 0x2 @@ -1891,7 +1891,7 @@ _08103504: .4byte gUnknown_845216C _08103508: .4byte gUnknown_203ACF0 _0810350C: .4byte gUnknown_8452174 _08103510: .4byte gUnknown_8415F4A -_08103514: .4byte gUnknown_8415F51 +_08103514: .4byte gText_PickOKExit thumb_func_end sub_810345C thumb_func_start sub_8103518 diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index 33f64b00b..20ed51bda 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -1688,7 +1688,7 @@ sub_811D2A8: @ 811D2A8 movs r0, 0 movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 movs r1, 0x3 bl CopyWindowToVram @@ -2285,7 +2285,7 @@ sub_811D764: @ 811D764 movs r0, 0x1 movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0x2 str r0, [sp] movs r0, 0x3 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 826e2f9e4..8b8407ce0 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -8311,7 +8311,7 @@ _0808FC7C: movs r0, 0x1 movs r1, 0x2 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0x1 bl PutWindowTilemap movs r0, 0x1 diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 48cb65638..8d4b0cd9e 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -4215,7 +4215,7 @@ sub_81417E4: @ 81417E4 movs r0, 0 movs r1, 0x1 movs r2, 0xF - bl sub_8150048 + bl DrawTextBorderOuter movs r1, 0x2 str r1, [sp] movs r0, 0xFF diff --git a/asm/start_menu.s b/asm/start_menu.s index 65a1e4402..e73315789 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1912,7 +1912,7 @@ _0806FC14: movs r0, 0 movs r1, 0x8 movs r2, 0xF - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl PutWindowTilemap movs r0, 0 diff --git a/asm/text_window.s b/asm/text_window.s index df5c80739..02a6efcfe 100644 --- a/asm/text_window.s +++ b/asm/text_window.s @@ -440,8 +440,8 @@ sub_815001C: @ 815001C _08150044: .4byte gSaveBlock2Ptr thumb_func_end sub_815001C - thumb_func_start sub_8150048 -sub_8150048: @ 8150048 + thumb_func_start DrawTextBorderOuter +DrawTextBorderOuter: @ 8150048 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -625,7 +625,7 @@ sub_8150048: @ 8150048 pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8150048 + thumb_func_end DrawTextBorderOuter thumb_func_start sub_81501D0 sub_81501D0: @ 81501D0 diff --git a/asm/title_screen.s b/asm/title_screen.s index c8261c1d3..a60bc959c 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8078914 -sub_8078914: @ 8078914 + thumb_func_start CB2_InitTitleScreen +CB2_InitTitleScreen: @ 8078914 push {r4-r6,lr} sub sp, 0xC ldr r0, _08078930 @ =gMain @@ -230,7 +230,7 @@ _08078B26: bx r0 .align 2, 0 _08078B30: .4byte gMain - thumb_func_end sub_8078914 + thumb_func_end CB2_InitTitleScreen thumb_func_start sub_8078B34 sub_8078B34: @ 8078B34 diff --git a/asm/trade.s b/asm/trade.s index ea2221aa1..70ca6a736 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -422,7 +422,7 @@ _0804C9B0: ldrb r0, [r0] cmp r0, 0 beq _0804C9E8 - bl sub_80FA4F8 + bl IsNoOneConnected lsls r0, 24 cmp r0, 0 bne _0804C9C4 @@ -1832,7 +1832,7 @@ sub_804D5A4: @ 804D5A4 ldrb r0, [r0] cmp r0, 0 beq _0804D5FC - bl sub_80FA4F8 + bl IsNoOneConnected lsls r0, 24 cmp r0, 0 beq _0804D620 @@ -1845,7 +1845,7 @@ sub_804D5A4: @ 804D5A4 bl Free movs r0, 0 str r0, [r5] - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite ldr r0, _0804D5F8 @ =sub_8050138 bl SetMainCallback2 b _0804D620 @@ -3369,7 +3369,7 @@ _0804E208: movs r0, 0x1 movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0x1 movs r1, 0x11 bl FillWindowPixelBuffer @@ -4296,7 +4296,7 @@ sub_804E944: @ 804E944 ldr r0, [r0] bl Free bl FreeAllWindowBuffers - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite ldr r0, _0804E984 @ =c2_8056854 bl SetMainCallback2 b _0804E9AA @@ -5876,7 +5876,7 @@ sub_804F5BC: @ 804F5BC movs r0, 0 movs r1, 0x14 movs r2, 0xC - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl PutWindowTilemap movs r0, 0 @@ -7178,7 +7178,7 @@ _0804FF7A: lsls r0, 1 cmp r1, r0 bls _0804FFAC - bl sub_80098B8 + bl CloseLink ldr r0, _0804FFC0 @ =c2_800ACD4 bl SetMainCallback2 ldr r1, [r4] @@ -7432,7 +7432,7 @@ _08050194: ldr r2, _08050230 @ =0x00001144 adds r0, r2, 0 strh r0, [r1] - bl sub_80098B8 + bl CloseLink _080501A8: ldr r4, _08050234 @ =gUnknown_2031DAC movs r0, 0x88 @@ -14745,7 +14745,7 @@ _0805434C: ldr r0, _08054378 @ =sub_804C718 cmp r1, r0 bne _08054384 - bl sub_80FA4F8 + bl IsNoOneConnected lsls r0, 24 cmp r0, 0 beq _08054396 @@ -14819,7 +14819,7 @@ sub_80543C4: @ 80543C4 ldrb r0, [r0] cmp r0, 0 beq _08054412 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite _08054412: ldr r0, _0805443C @ =gMain ldr r0, [r0, 0x8] diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index fcf0ceb19..6826bdb77 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -4288,7 +4288,7 @@ sub_812A424: @ 812A424 ldrb r0, [r0, 0x18] movs r1, 0x1 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter ldr r0, [r6] ldrb r0, [r0, 0x18] movs r1, 0xE @@ -4524,7 +4524,7 @@ _0812A6B0: adds r0, r5, 0 movs r1, 0xA movs r2, 0x2 - bl sub_8150048 + bl DrawTextBorderOuter ldrb r3, [r4, 0x5] ldrb r0, [r4, 0x6] str r0, [sp] @@ -4980,7 +4980,7 @@ sub_812AA10: @ 812AA10 movs r0, 0x3 movs r1, 0x1 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter ldr r0, _0812AA60 @ =gUnknown_845ABEC str r0, [sp] movs r0, 0x3 diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s index 36b8940ab..c0451378c 100644 --- a/asm/unk_8147AA8.s +++ b/asm/unk_8147AA8.s @@ -5179,7 +5179,7 @@ _0814A124: ldrb r0, [r0, 0x12] movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0x17 movs r1, 0x7 movs r2, 0 @@ -5265,7 +5265,7 @@ _0814A1D0: ldrb r0, [r0, 0x12] movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl CopyBgTilemapBufferToVram _0814A1F4: @@ -5386,7 +5386,7 @@ _0814A2C0: ldrb r0, [r0, 0x12] movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl CopyBgTilemapBufferToVram _0814A2E4: @@ -5468,7 +5468,7 @@ _0814A364: ldrb r0, [r0, 0x12] movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl CopyBgTilemapBufferToVram _0814A388: @@ -5839,7 +5839,7 @@ _0814A652: ldrb r0, [r0, 0x12] movs r1, 0x1 movs r2, 0xE - bl sub_8150048 + bl DrawTextBorderOuter movs r0, 0 bl CopyBgTilemapBufferToVram ldr r1, [r4] @@ -7934,7 +7934,7 @@ sub_814B5C4: @ 814B5C4 adds r0, r4, 0 adds r1, r5, 0 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter adds r0, r4, 0 movs r1, 0x11 bl FillWindowPixelBuffer diff --git a/asm/unk_814D5C8.s b/asm/unk_814D5C8.s index 422d34f07..23968f655 100644 --- a/asm/unk_814D5C8.s +++ b/asm/unk_814D5C8.s @@ -424,7 +424,7 @@ _0814D962: bl ClearGpuRegBits b _0814D9BA _0814D9A2: - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite adds r0, r5, 0 bl sub_814EF10 bl sub_815C9F4 diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s index 324a6b48c..19b2b2c43 100644 --- a/asm/unk_81507FC.s +++ b/asm/unk_81507FC.s @@ -6478,7 +6478,7 @@ sub_81538D0: @ 81538D0 adds r0, r7, 0 adds r1, r4, 0 movs r2, 0xD - bl sub_8150048 + bl DrawTextBorderOuter adds r0, r7, 0 movs r1, 0x11 bl FillWindowPixelBuffer diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 8fb1d4533..211e435ef 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -644,7 +644,7 @@ gUnknown_8415F3D:: @ 8415F3D gUnknown_8415F4A:: @ 8415F4A .incbin "baserom.gba", 0x415F4A, 0x7 -gUnknown_8415F51:: @ 8415F51 +gText_PickOKExit:: @ 8415F51 .incbin "baserom.gba", 0x415F51, 0x15 gUnknown_8415F66:: @ 8415F66 @@ -2252,10 +2252,10 @@ gUnknown_841D18D:: @ 841D18D gUnknown_841D198:: @ 841D198 .incbin "baserom.gba", 0x41D198, 0xCB8 -gUnknown_841DE50:: @ 841DE50 +gJPText_MysteryGift:: @ 841DE50 .string "$" -gUnknown_841DE51:: @ 841DE51 +gJPText_DecideStop:: @ 841DE51 .string "$" gUnknown_841DE52:: @ 841DE52 @@ -2432,155 +2432,181 @@ gFameCheckerBillName:: @ 841E5F3 gFameCheckerMrFujiName:: @ 841E5F8 .string "FUJI$" -gUnknown_841E5FD:: @ 841E5FD - .string "A variety of events will be imported\nover Wireless Communication.$" +gText_VarietyOfEventsImportedWireless:: @ 841E5FD + .string "A variety of events will be imported\n" + .string "over Wireless Communication.$" -gUnknown_841E63F:: @ 841E63F - .string "Read the WONDER CARDS in your\npossession.$" +gText_WonderCardsInPossession:: @ 841E63F + .string "Read the WONDER CARDS in your\n" + .string "possession.$" -gUnknown_841E669:: @ 841E669 +gText_ReadNewsThatArrived:: @ 841E669 .string "Read the NEWS that arrived.$" -gUnknown_841E685:: @ 841E685 +gText_ReturnToTitle:: @ 841E685 .string "Return to the title screen.$" -gUnknown_841E6A1:: @ 841E6A1 +gText_DontHaveCardNewOneInput:: @ 841E6A1 .incbin "baserom.gba", 0x41E6A1, 0x3B -gUnknown_841E6DC:: @ 841E6DC +gText_DontHaveNewsNewOneInput:: @ 841E6DC .incbin "baserom.gba", 0x41E6DC, 0x3B -gUnknown_841E717:: @ 841E717 +gText_WhereShouldCardBeAccessed:: @ 841E717 .incbin "baserom.gba", 0x41E717, 0x2A -gUnknown_841E741:: @ 841E741 +gText_WhereShouldNewsBeAccessed:: @ 841E741 .incbin "baserom.gba", 0x41E741, 0x53 -gUnknown_841E794:: @ 841E794 +gText_Communicating:: @ 841E794 .incbin "baserom.gba", 0x41E794, 0xF -gUnknown_841E7A3:: @ 841E7A3 +gText_CommunicationCompleted:: @ 841E7A3 .incbin "baserom.gba", 0x41E7A3, 0x19 -gUnknown_841E7BC:: @ 841E7BC +gText_CommunicationError:: @ 841E7BC .incbin "baserom.gba", 0x41E7BC, 0x15 -gUnknown_841E7D1:: @ 841E7D1 +gText_CommunicationCanceled:: @ 841E7D1 .incbin "baserom.gba", 0x41E7D1, 0x21 -gUnknown_841E7F2:: @ 841E7F2 +gText_ThrowAwayWonderCard:: @ 841E7F2 .incbin "baserom.gba", 0x41E7F2, 0x31 -gUnknown_841E823:: @ 841E823 +gText_HaventReceivedCardsGift:: @ 841E823 .incbin "baserom.gba", 0x41E823, 0x43 -gUnknown_841E866:: @ 841E866 +gText_WonderCardReceivedFrom:: @ 841E866 .incbin "baserom.gba", 0x41E866, 0x29 -gUnknown_841E88F:: @ 841E88F +gText_WonderNewsReceivedFrom:: @ 841E88F .incbin "baserom.gba", 0x41E88F, 0x2E -gUnknown_841E8BD:: @ 841E8BD +gText_WonderCardReceived:: @ 841E8BD .incbin "baserom.gba", 0x41E8BD, 0x25 -gUnknown_841E8E2:: @ 841E8E2 +gText_WonderNewsReceived:: @ 841E8E2 .incbin "baserom.gba", 0x41E8E2, 0x2A -gUnknown_841E90C:: @ 841E90C +gText_NewStampReceived:: @ 841E90C .incbin "baserom.gba", 0x41E90C, 0x1F -gUnknown_841E92B:: @ 841E92B +gText_NewTrainerReceived:: @ 841E92B .incbin "baserom.gba", 0x41E92B, 0x1B -gUnknown_841E946:: @ 841E946 +gText_AlreadyHadCard:: @ 841E946 .incbin "baserom.gba", 0x41E946, 0x22 -gUnknown_841E968:: @ 841E968 +gText_AlreadyHadNews:: @ 841E968 .incbin "baserom.gba", 0x41E968, 0x27 -gUnknown_841E98F:: @ 841E98F +gText_AlreadyHadStamp:: @ 841E98F .incbin "baserom.gba", 0x41E98F, 0x1C -gUnknown_841E9AB:: @ 841E9AB +gText_NoMoreRoomForStamps:: @ 841E9AB .incbin "baserom.gba", 0x41E9AB, 0x28 -gUnknown_841E9D3:: @ 841E9D3 +gText_RecordUploadedViaWireless:: @ 841E9D3 .incbin "baserom.gba", 0x41E9D3, 0x3A -gUnknown_841EA0D:: @ 841EA0D +gText_CantAcceptCardFromTrainer:: @ 841EA0D .incbin "baserom.gba", 0x41EA0D, 0x32 -gUnknown_841EA3F:: @ 841EA3F +gText_CantAcceptNewsFromTrainer:: @ 841EA3F .incbin "baserom.gba", 0x41EA3F, 0x30 -gUnknown_841EA6F:: @ 841EA6F +gText_NothingSentOver:: @ 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 +gText_SendingWonderCard:: @ 841EAE7 .incbin "baserom.gba", 0x41EAE7, 0x1A -gUnknown_841EB01:: @ 841EB01 +gText_SendingWonderNews:: @ 841EB01 .incbin "baserom.gba", 0x41EB01, 0x1F -gUnknown_841EB20:: @ 841EB20 +gText_WonderCardSentTo:: @ 841EB20 .incbin "baserom.gba", 0x41EB20, 0x26 -gUnknown_841EB46:: @ 841EB46 +gText_WonderNewsSentTo:: @ 841EB46 .incbin "baserom.gba", 0x41EB46, 0x2B -gUnknown_841EB71:: @ 841EB71 +gText_StampSentTo:: @ 841EB71 .incbin "baserom.gba", 0x41EB71, 0x1D -gUnknown_841EB8E:: @ 841EB8E +gText_GiftSentTo:: @ 841EB8E .incbin "baserom.gba", 0x41EB8E, 0x1C -gUnknown_841EBAA:: @ 841EBAA +gText_OtherTrainerHasCard:: @ 841EBAA .incbin "baserom.gba", 0x41EBAA, 0x34 -gUnknown_841EBDE:: @ 841EBDE +gText_OtherTrainerHasNews:: @ 841EBDE .incbin "baserom.gba", 0x41EBDE, 0x34 -gUnknown_841EC12:: @ 841EC12 +gText_OtherTrainerHasStamp:: @ 841EC12 .incbin "baserom.gba", 0x41EC12, 0x2E -gUnknown_841EC40:: @ 841EC40 +gText_OtherTrainerCanceled:: @ 841EC40 .incbin "baserom.gba", 0x41EC40, 0x2A -gUnknown_841EC6A:: @ 841EC6A +gText_CantSendGiftToTrainer:: @ 841EC6A .incbin "baserom.gba", 0x41EC6A, 0x2F -gUnknown_841EC99:: @ 841EC99 +gText_IfThrowAwayCardEventWontHappen:: @ 841EC99 .incbin "baserom.gba", 0x41EC99, 0x3A -gUnknown_841ECD3:: @ 841ECD3 +gText_OkayToDiscardNews:: @ 841ECD3 .incbin "baserom.gba", 0x41ECD3, 0x26 -gUnknown_841ECF9:: @ 841ECF9 +gText_HaventReceivedGiftOkayToDiscard:: @ 841ECF9 .incbin "baserom.gba", 0x41ECF9, 0x36 -gUnknown_841ED2F:: @ 841ED2F +gText_DataWillBeSaved:: @ 841ED2F .incbin "baserom.gba", 0x41ED2F, 0x21 -gUnknown_841ED50:: @ 841ED50 +gText_SaveCompletedPressA:: @ 841ED50 .incbin "baserom.gba", 0x41ED50, 0x2B -gUnknown_841ED7B:: @ 841ED7B +gText_WonderCardThrownAway:: @ 841ED7B .incbin "baserom.gba", 0x41ED7B, 0x21 -gUnknown_841ED9C:: @ 841ED9C +gText_WonderNewsThrownAway:: @ 841ED9C .incbin "baserom.gba", 0x41ED9C, 0x21 -gUnknown_841EDBD:: @ 841EDBD - .incbin "baserom.gba", 0x41EDBD, 0xD +gText_MysteryGift:: @ 841EDBD + .string "MYSTERY GIFT$" -gUnknown_841EDCA:: @ 841EDCA - .incbin "baserom.gba", 0x41EDCA, 0x61 +gText_PickOKCancel:: @ 841EDCA + .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}EXIT$" + +gText_WonderCards:: + .string "WONDER CARDS$" + +gText_WonderNews:: + .string "WONDER NEWS$" + +gText_WirelessCommunication:: + .string "WIRELESS COMMUNICATION$" + +gText_Friend2:: + .string "FRIEND$" + +gText_Exit3:: + .string "EXIT$" + +gText_Receive:: + .string "RECEIVE$" + +gText_Send:: + .string "SEND$" + +gText_Toss:: + .string "TOSS$" gUnknown_841EE2B:: @ 841EE2B .incbin "baserom.gba", 0x41EE2B, 0x17 diff --git a/data/link_rfu_4.s b/data/link_rfu_4.s deleted file mode 100644 index 20f235a80..000000000 --- a/data/link_rfu_4.s +++ /dev/null @@ -1,54 +0,0 @@ - .section .rodata - - .align 2 - -gUnknown_8466D90:: @ 8466D90 - .incbin "baserom.gba", 0x466D90, 0x8 - -gUnknown_8466D98:: @ 8466D98 - .incbin "baserom.gba", 0x466D98, 0x8 - -gUnknown_8466DA0:: @ 8466DA0 - .incbin "baserom.gba", 0x466DA0, 0x8 - -gUnknown_8466DA8:: @ 8466DA8 - .incbin "baserom.gba", 0x466DA8, 0x8 - -gUnknown_8466DB0:: @ 8466DB0 - .incbin "baserom.gba", 0x466DB0, 0x8 - -gUnknown_8466DB8:: @ 8466DB8 - .incbin "baserom.gba", 0x466DB8, 0x8 - -gUnknown_8466DC0:: @ 8466DC0 - .incbin "baserom.gba", 0x466DC0, 0x8 - -gUnknown_8466DC8:: @ 8466DC8 - .incbin "baserom.gba", 0x466DC8, 0x8 - -gUnknown_8466DD0:: @ 8466DD0 - .incbin "baserom.gba", 0x466DD0, 0x18 - -gUnknown_8466DE8:: @ 8466DE8 - .incbin "baserom.gba", 0x466DE8, 0x18 - -gUnknown_8466E00:: @ 8466E00 - .incbin "baserom.gba", 0x466E00, 0x78 - -gUnknown_8466E78:: @ 8466E78 - .incbin "baserom.gba", 0x466E78, 0x18 - -gUnknown_8466E90:: @ 8466E90 - .incbin "baserom.gba", 0x466E90, 0x18 - -gUnknown_8466EA8:: @ 8466EA8 - .incbin "baserom.gba", 0x466EA8, 0x18 - -gUnknown_8466EC0:: @ 8466EC0 - .incbin "baserom.gba", 0x466EC0, 0x28 - -gUnknown_8466EE8:: @ 8466EE8 - .incbin "baserom.gba", 0x466EE8, 0x8 - -gUnknown_8466EF0:: @ 8466EF0 - .incbin "baserom.gba", 0x466EF0, 0x10 diff --git a/data/mystery_gift_menu.s b/data/mystery_gift_menu.s deleted file mode 100644 index 9caee4467..000000000 --- a/data/mystery_gift_menu.s +++ /dev/null @@ -1,14 +0,0 @@ - .section .rodata - .align 2 - -gUnknown_8466D10:: @ 8466D10 - .incbin "baserom.gba", 0x466D10, 0x20 - -gUnknown_8466D30:: @ 8466D30 - .incbin "baserom.gba", 0x466D30, 0x30 - -gUnknown_8466D60:: @ 8466D60 - .incbin "baserom.gba", 0x466D60, 0x10 - -gUnknown_8466D70:: @ 8466D70 - .incbin "baserom.gba", 0x466D70, 0x20 diff --git a/data/specials.inc b/data/specials.inc index f3c71d1bd..a610fcd6f 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -40,7 +40,7 @@ gSpecials:: @ 815FD60 def_special sub_8081064 def_special sub_80810CC def_special sub_80810F4 - def_special sub_80098B8 + def_special CloseLink def_special sub_80819C8 def_special sub_8081978 def_special sub_80819B8 @@ -393,7 +393,7 @@ gSpecials:: @ 815FD60 def_special sub_812B220 def_special sub_812B234 def_special sub_812B248 - def_special sub_8143FC8 + def_special ValidateReceivedWonderCard def_special sub_810B810 def_special sub_811999C def_special sp182_move_string diff --git a/graphics/interface/unk_textbox_border.png b/graphics/interface/unk_textbox_border.png Binary files differnew file mode 100644 index 000000000..6cc6a64ac --- /dev/null +++ b/graphics/interface/unk_textbox_border.png diff --git a/include/link.h b/include/link.h index 93ad9dfe1..a875149aa 100644 --- a/include/link.h +++ b/include/link.h @@ -204,7 +204,7 @@ bool8 sub_800AA48(void); void sub_800A5BC(void); void sub_800AA80(u8); void sub_80098D8(void); -void sub_80098B8(void); +void CloseLink(void); bool8 sub_800A4BC(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 6e54fcc6c..d076efae6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -1,9 +1,15 @@ #ifndef GUARD_LINK_RFU_H #define GUARD_LINK_RFU_H -void sub_8142504(const u8 *str); -bool32 mevent_0814257C(u8 * cmdPtr, const u8 * src); +void AddTextPrinterToWindow1(const u8 *str); +bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); -void sub_8142420(void); +void MG_DrawCheckerboardPattern(void); +void task_add_05_task_del_08FA224_when_no_RfuFunc(void); +bool8 IsNoOneConnected(void); +void DestroyWirelessStatusIndicatorSprite(void); +void MEvent_CreateTask_CardOrNewsWithFriend(u8); +void MEvent_CreateTask_CardOrNewsOverWireless(u8); +void MEvent_CreateTask_Leader(u8); #endif //GUARD_LINK_RFU_H diff --git a/include/list_menu.h b/include/list_menu.h index 3fd54d0d1..8ff65da0b 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -59,5 +59,7 @@ void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); void DestroyListMenu(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); void sub_8107D38(u8, u8); +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); +void ListMenuDefaultCursorMoveFunc(s32, u8, struct ListMenu *); #endif //GUARD_LIST_MENU_H diff --git a/include/menews_jisan.h b/include/menews_jisan.h index 4db5a7be2..ca09d4347 100644 --- a/include/menews_jisan.h +++ b/include/menews_jisan.h @@ -3,7 +3,7 @@ #include "global.h" -void sub_8146C30(u32 a0); +void GenerateRandomNews(u32 a0); void sub_8146C88(void); void sub_8146CA4(void); diff --git a/include/mevent.h b/include/mevent.h index d940b212c..b9b17d8c0 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 ValidateReceivedWonderNews(void); +bool32 ValidateReceivedWonderCard(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,21 @@ 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); +void DestroyWonderCard(void); +void DestroyWonderNews(void); +void DestroyWonderCardResources(void); +void DestroyWonderNewsResources(void); +s32 FadeOutFromWonderCard(bool32 flag); +s32 FadeOutFromWonderNews(bool32 flag); +bool32 CheckReceivedGiftFromWonderCard(void); +void MENews_AddScrollIndicatorArrowPair(void); +void MENews_RemoveScrollIndicatorArrowPair(void); +bool32 WonderNews_Test_Unk_02(void); +bool32 WonderCard_Test_Unk_08_6(void); +u32 MENews_GetInput(u16 input); #endif //GUARD_MEVENT_H diff --git a/include/mevent_server.h b/include/mevent_server.h index e593b5dbd..10ee96401 100644 --- a/include/mevent_server.h +++ b/include/mevent_server.h @@ -37,7 +37,7 @@ struct mevent_cmd_ish u32 parameter; }; -struct mevent_srv_ish +struct mevent_client { u32 unk_00; u32 param; @@ -83,13 +83,13 @@ void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recv void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size); void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest); -void mevent_srv_ish_do_init(void); -u32 mevent_srv_ish_do_exec(u16 * a0); -void mevent_srv_ish_inc_flag(void); -void * mevent_srv_ish_get_buffer(void); -void mevent_srv_ish_set_param(u32 a0); -void mevent_srv_common_do_init_1(void); -void mevent_srv_common_do_init_2(void); -u32 mevent_srv_init_do_exec(u16 * a0); +void mevent_client_do_init(void); +u32 mevent_client_do_exec(u16 * a0); +void mevent_client_inc_flag(void); +void * mevent_client_get_buffer(void); +void mevent_client_set_param(u32 a0); +void mevent_srv_init_wnews(void); +void mevent_srv_new_wcard(void); +u32 mevent_srv_common_do_exec(u16 * a0); #endif //GUARD_MEVENT_SERVER_H diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h index 24bf85a13..c7b047f56 100644 --- a/include/mystery_gift_menu.h +++ b/include/mystery_gift_menu.h @@ -1,9 +1,9 @@ #ifndef GUARD_MYSTERY_GIFT_MENU_H #define GUARD_MYSTERY_GIFT_MENU_H -extern bool8 gUnknown_203F3B8; +extern bool8 gGiftIsFromEReader; -void sub_81422FC(void); -void sub_8142344(bool8, bool32); +void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void); +void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32); #endif //GUARD_MYSTERY_GIFT_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index b17326667..fc9c1b9dc 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -30,5 +30,6 @@ void Menu_LoadStdPalAt(u16); void * malloc_and_decompress(const void * src, u32 * size); u16 sub_80F796C(void); void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); +void sub_80F696C(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/text_window.h b/include/text_window.h index 8a4113c62..9fbc90799 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -23,5 +23,8 @@ void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset); void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette); void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette); void sub_815001C(u8 windowId, u16 tileStart, u8 palette); +void sub_814FE40(u8 windowId, u16 tileStart, u8 palette); +void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette); +void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette); #endif // GUARD_TEXT_WINDOW_H diff --git a/include/title_screen.h b/include/title_screen.h new file mode 100644 index 000000000..8e7a6a275 --- /dev/null +++ b/include/title_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TITLE_SCREEN_H +#define GUARD_TITLE_SCREEN_H + +void CB2_InitTitleScreen(void); + +#endif //GUARD_TITLE_SCREEN_H diff --git a/ld_script.txt b/ld_script.txt index 283c711f7..88c2c59bc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -241,8 +241,7 @@ SECTIONS { asm/buy_menu_helpers.o(.text); asm/slot_machine.o(.text); src/roamer.o(.text); - asm/mystery_gift_menu.o(.text); - asm/link_rfu_4.o(.text); + src/mystery_gift_menu.o(.text); src/mevent.o(.text); src/mevent_server_helpers.o(.text); src/mevent_server.o(.text); @@ -409,8 +408,7 @@ SECTIONS { data/buy_menu_helpers.o(.rodata); data/slot_machine.o(.rodata); src/roamer.o(.rodata); - data/mystery_gift_menu.o(.rodata); - data/link_rfu_4.o(.rodata); + src/mystery_gift_menu.o(.rodata); src/mevent.o(.rodata); src/mevent_server_helpers.o(.rodata); src/mevent_server.o(.rodata); diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 530762990..0d406e66a 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -10,7 +10,7 @@ static u32 sub_8146E0C(struct MysteryEventStruct *); static void sub_8146DA0(struct MysteryEventStruct *); static void sub_8146D94(struct MysteryEventStruct *); -void sub_8146C30(u32 a0) +void GenerateRandomNews(u32 a0) { struct MysteryEventStruct *r5 = sub_8143D94(); @@ -59,7 +59,7 @@ u16 sub_8146CE8(void) struct MysteryEventStruct *r4 = sub_8143D94(); u16 r5; - if (!sub_806E2BC() || !sub_8143E1C()) + if (!sub_806E2BC() || !ValidateReceivedWonderNews()) return 0; r5 = sub_8146E0C(r4); diff --git a/src/mevent.c b/src/mevent.c index a62286f21..4d625987e 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -240,7 +240,7 @@ u32 sub_8143770(u8 * r4, u16 * r5) return 0; } -void sub_81438A0(void) +void task_add_00_ereader(void) { u8 taskId = CreateTask(sub_8143910, 0); struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; @@ -279,7 +279,7 @@ void sub_8143910(u8 taskId) switch (data->t08) { case 0: - if (mevent_0814257C(&data->t09, gUnknown_841DE52)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE52)) data->t08 = 1; break; case 1: @@ -294,16 +294,16 @@ void sub_8143910(u8 taskId) case 3: if (!sub_814374C()) { - sub_80098B8(); + CloseLink(); data->t08 = 4; } else data->t08 = 13; break; case 4: - if (mevent_0814257C(&data->t09, gUnknown_841DE53)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE53)) { - sub_8142504(gUnknown_841DE54); + AddTextPrinterToWindow1(gUnknown_841DE54); sub_81438E8(&data->t00); data->t08 = 5; } @@ -325,36 +325,36 @@ void sub_8143910(u8 taskId) if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_80098B8(); + CloseLink(); sub_81438E8(&data->t00); data->t08 = 23; } else if (GetLinkPlayerCount_2() > 1) { sub_81438E8(&data->t00); - sub_80098B8(); + CloseLink(); data->t08 = 7; } else if (sub_81436EC()) { PlaySE(SE_SELECT); - sub_80098B8(); + CloseLink(); sub_81438E8(&data->t00); data->t08 = 8; } else if (sub_81438F0(&data->t00, 10)) { - sub_80098B8(); + CloseLink(); sub_81436BC(); sub_81438E8(&data->t00); } break; case 7: - if (mevent_0814257C(&data->t09, gUnknown_841DE7C)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7C)) data->t08 = 4; break; case 8: - sub_8142504(gUnknown_841DE95); + AddTextPrinterToWindow1(gUnknown_841DE95); sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start); data->t08 = 9; break; @@ -370,7 +370,7 @@ void sub_8143910(u8 taskId) else if (data->t0E == 1) { sub_81438E8(&data->t00); - sub_8142504(gUnknown_841DE9B); + AddTextPrinterToWindow1(gUnknown_841DE9B); data->t08 = 11; } else @@ -382,7 +382,7 @@ void sub_8143910(u8 taskId) break; case 12: sub_81436BC(); - sub_8142504(gUnknown_841DE98); + AddTextPrinterToWindow1(gUnknown_841DE98); data->t08 = 13; break; case 13: @@ -391,21 +391,21 @@ void sub_8143910(u8 taskId) case 0: break; case 2: - sub_8142504(gUnknown_841DE95); + AddTextPrinterToWindow1(gUnknown_841DE95); data->t08 = 14; break; case 1: PlaySE(SE_SELECT); - sub_80098B8(); + CloseLink(); data->t08 = 23; break; case 5: - sub_80098B8(); + CloseLink(); data->t08 = 21; break; case 3: case 4: - sub_80098B8(); + CloseLink(); data->t08 = 20; break; } @@ -413,7 +413,7 @@ void sub_8143910(u8 taskId) case 14: if (HasLinkErrorOccurred()) { - sub_80098B8(); + CloseLink(); data->t08 = 20; } else if (GetBlockReceivedStatus()) @@ -439,7 +439,7 @@ void sub_8143910(u8 taskId) case 17: if (sub_815D794(gDecompressionBuffer)) { - sub_8142504(gUnknown_841DE99); + AddTextPrinterToWindow1(gUnknown_841DE99); sub_81438E8(&data->t00); data->t08 = 18; } @@ -449,7 +449,7 @@ void sub_8143910(u8 taskId) case 18: if (sub_81438F0(&data->t00, 120)) { - sub_8142504(gUnknown_841DE9A); + AddTextPrinterToWindow1(gUnknown_841DE9A); PlayFanfare(258); data->t08 = 19; } @@ -459,26 +459,26 @@ void sub_8143910(u8 taskId) data->t08 = 26; break; case 23: - if (mevent_0814257C(&data->t09, gUnknown_841DE7D)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7D)) data->t08 = 26; break; case 20: - if (mevent_0814257C(&data->t09, gUnknown_841DE96)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE96)) data->t08 = 0; break; case 21: - if (mevent_0814257C(&data->t09, gUnknown_841DE97)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE97)) data->t08 = 0; break; case 22: - if (mevent_0814257C(&data->t09, gUnknown_841DE9C)) + if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE9C)) data->t08 = 0; break; case 26: sub_812B484(); Free(data->t10); DestroyTask(taskId); - SetMainCallback2(sub_81422FC); + SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen); break; } } @@ -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; } @@ -515,7 +515,7 @@ u16 * sub_8143DA8(void) return gSaveBlock1Ptr->unk_3120.unk_338; } -void sub_8143DBC(void) +void DestroyWonderNews(void) { sub_8143E9C(); } @@ -530,7 +530,7 @@ bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src) return TRUE; } -bool32 sub_8143E1C(void) +bool32 ValidateReceivedWonderNews(void) { if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) return FALSE; @@ -546,7 +546,7 @@ bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data) return TRUE; } -bool32 sub_8143E78(void) +bool32 WonderNews_Test_Unk_02(void) { const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data; if (data->unk_02 == 0) @@ -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 (!ValidateReceivedWonderNews()) return FALSE; for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++) { @@ -580,7 +580,7 @@ bool32 sub_8143EF4(const u8 * src) return TRUE; } -void sub_8143F38(void) +void DestroyWonderCard(void) { sub_814407C(); sub_81440B4(); @@ -597,7 +597,7 @@ bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) struct MEventBuffer_32E0_Sub * r1; if (!sub_8144018(data)) return FALSE; - sub_8143F38(); + DestroyWonderCard(); memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub)); gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data; @@ -606,7 +606,7 @@ bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) return TRUE; } -bool32 sub_8143FC8(void) +bool32 ValidateReceivedWonderCard(void) { if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub))) return FALSE; @@ -632,7 +632,7 @@ bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data) return TRUE; } -bool32 sub_8144054(void) +bool32 WonderCard_Test_Unk_08_6(void) { const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; if (data->unk_08_6 == 0) @@ -654,7 +654,7 @@ void sub_81440B4(void) u16 sub_81440E8(void) { - if (sub_8143FC8()) + if (ValidateReceivedWonderCard()) return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00; return 0; } @@ -672,7 +672,7 @@ bool32 sub_8144124(u16 a0) return FALSE; } -bool32 sub_8144144(void) +bool32 CheckReceivedGiftFromWonderCard(void) { u16 value = sub_81440E8(); if (!sub_8144124(value)) @@ -721,7 +721,7 @@ bool32 sub_81441F0(const u16 * data) s32 sub_8144218(void) { struct MEventBuffer_32E0_Sub * data; - if (!sub_8143FC8()) + if (!ValidateReceivedWonderCard()) 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 (ValidateReceivedWonderCard()) { - 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 (!ValidateReceivedWonderCard()) 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 65f515d1b..af3024bff 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; @@ -145,7 +145,7 @@ bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_S return TRUE; } -void sub_81456F0(void) +void DestroyWonderCardResources(void) { if (gUnknown_203F3C8 != NULL) { @@ -155,7 +155,7 @@ void sub_81456F0(void) } } -s32 sub_814571C(void) +s32 FadeToWonderCardMenu(void) { if (gUnknown_203F3C8 == NULL) return -1; @@ -219,7 +219,7 @@ s32 sub_814571C(void) return 0; } -s32 sub_814593C(bool32 flag) +s32 FadeOutFromWonderCard(bool32 flag) { if (gUnknown_203F3C8 == NULL) return -1; @@ -252,7 +252,7 @@ s32 sub_814593C(bool32 flag) FreeMonIconPalettes(); break; case 5: - sub_8142344(gUnknown_203F3B8, flag); + PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag); break; case 6: CopyBgTilemapBufferToVram(0); @@ -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; @@ -523,7 +523,7 @@ bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) return TRUE; } -void sub_81462EC(void) +void DestroyWonderNewsResources(void) { if (gUnknown_203F3CC != NULL) { @@ -533,7 +533,7 @@ void sub_81462EC(void) } } -s32 sub_8146318(void) +s32 FadeToWonderNewsMenu(void) { if (gUnknown_203F3CC == NULL) return -1; @@ -608,7 +608,7 @@ s32 sub_8146318(void) return 0; } -s32 sub_8146604(bool32 flag) +s32 FadeOutFromWonderNews(bool32 flag) { if (gUnknown_203F3CC == NULL) return -1; @@ -653,10 +653,10 @@ s32 sub_8146604(bool32 flag) } break; case 5: - sub_8142344(gUnknown_203F3B8, flag); + PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag); break; case 6: - sub_8142420(); + MG_DrawCheckerboardPattern(); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(3); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); @@ -671,7 +671,7 @@ s32 sub_8146604(bool32 flag) return 0; } -void sub_81467EC(void) +void MENews_RemoveScrollIndicatorArrowPair(void) { if (!gUnknown_203F3CC->unk_01C0_0 && gUnknown_203F3CC->unk_01C1 != 0xFF) { @@ -682,7 +682,7 @@ void sub_81467EC(void) } -void sub_8146834(void) +void MENews_AddScrollIndicatorArrowPair(void) { if (gUnknown_203F3CC->unk_01C0_0) { @@ -691,7 +691,7 @@ void sub_8146834(void) } } -u8 sub_8146884(u16 input) +u32 MENews_GetInput(u16 input) { if (gUnknown_203F3CC->unk_01C2_0) { diff --git a/src/mevent_server.c b/src/mevent_server.c index 5e384ae0b..1c2dc4ced 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -11,12 +11,12 @@ #include "mevent.h" #include "mevent_server.h" -EWRAM_DATA struct mevent_srv_ish * s_mevent_srv_ish_ptr = NULL; +EWRAM_DATA struct mevent_client * s_mevent_client_ptr = NULL; EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL; -static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); -static u32 mevent_srv_ish_exec(struct mevent_srv_ish *); -static void mevent_srv_ish_free_resources(struct mevent_srv_ish *); +static void mevent_client_init(struct mevent_client *, u32, u32); +static u32 mevent_client_exec(struct mevent_client *); +static void mevent_client_free_resources(struct mevent_client *); static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); static void mevent_srv_free_resources(struct mevent_srv_common *); static u32 mevent_srv_exec_common(struct mevent_srv_common *); @@ -25,44 +25,44 @@ extern const u8 gUnknown_84687E0[]; extern const struct mevent_cmd gUnknown_8468B6C[]; extern const struct mevent_cmd gUnknown_8468BCC[]; -void mevent_srv_ish_do_init(void) +void mevent_client_do_init(void) { - s_mevent_srv_ish_ptr = AllocZeroed(sizeof(struct mevent_srv_ish)); - mevent_srv_ish_init(s_mevent_srv_ish_ptr, 1, 0); + s_mevent_client_ptr = AllocZeroed(sizeof(struct mevent_client)); + mevent_client_init(s_mevent_client_ptr, 1, 0); } -u32 mevent_srv_ish_do_exec(u16 * a0) +u32 mevent_client_do_exec(u16 * a0) { u32 result; - if (s_mevent_srv_ish_ptr == NULL) + if (s_mevent_client_ptr == NULL) return 6; - result = mevent_srv_ish_exec(s_mevent_srv_ish_ptr); + result = mevent_client_exec(s_mevent_client_ptr); if (result == 6) { - *a0 = s_mevent_srv_ish_ptr->param; - mevent_srv_ish_free_resources(s_mevent_srv_ish_ptr); - Free(s_mevent_srv_ish_ptr); - s_mevent_srv_ish_ptr = NULL; + *a0 = s_mevent_client_ptr->param; + mevent_client_free_resources(s_mevent_client_ptr); + Free(s_mevent_client_ptr); + s_mevent_client_ptr = NULL; } return result; } -void mevent_srv_ish_inc_flag(void) +void mevent_client_inc_flag(void) { - s_mevent_srv_ish_ptr->flag++; + s_mevent_client_ptr->flag++; } -void * mevent_srv_ish_get_buffer(void) +void * mevent_client_get_buffer(void) { - return s_mevent_srv_ish_ptr->buffer; + return s_mevent_client_ptr->buffer; } -void mevent_srv_ish_set_param(u32 a0) +void mevent_client_set_param(u32 a0) { - s_mevent_srv_ish_ptr->param = a0; + s_mevent_client_ptr->param = a0; } -static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 sendPlayerNo, u32 recvPlayerNo) +static void mevent_client_init(struct mevent_client * svr, u32 sendPlayerNo, u32 recvPlayerNo) { svr->unk_00 = 0; svr->mainseqno = 0; @@ -74,7 +74,7 @@ static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 sendPlayerNo, u mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo); } -static void mevent_srv_ish_free_resources(struct mevent_srv_ish * svr) +static void mevent_client_free_resources(struct mevent_client * svr) { Free(svr->sendBuffer); Free(svr->recvBuffer); @@ -82,20 +82,20 @@ static void mevent_srv_ish_free_resources(struct mevent_srv_ish * svr) Free(svr->buffer); } -static void mevent_srv_ish_jmp_buffer(struct mevent_srv_ish * svr) +static void mevent_client_jmp_buffer(struct mevent_client * svr) { memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); svr->cmdidx = 0; } -static void mevent_srv_ish_send_word(struct mevent_srv_ish * svr, u32 ident, u32 word) +static void mevent_client_send_word(struct mevent_client * svr, u32 ident, u32 word) { CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE); *(u32 *)svr->sendBuffer = word; mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32)); } -static u32 ish_mainseq_0(struct mevent_srv_ish * svr) +static u32 ish_mainseq_0(struct mevent_client * svr) { // init memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); @@ -105,13 +105,13 @@ static u32 ish_mainseq_0(struct mevent_srv_ish * svr) return 0; } -static u32 ish_mainseq_1(struct mevent_srv_ish * svr) +static u32 ish_mainseq_1(struct mevent_client * svr) { // done return 6; } -static u32 ish_mainseq_2(struct mevent_srv_ish * svr) +static u32 ish_mainseq_2(struct mevent_client * svr) { // do recv if (mevent_srv_sub_recv(&svr->manager)) @@ -122,7 +122,7 @@ static u32 ish_mainseq_2(struct mevent_srv_ish * svr) return 1; } -static u32 ish_mainseq_3(struct mevent_srv_ish * svr) +static u32 ish_mainseq_3(struct mevent_client * svr) { // do send if (mevent_srv_sub_send(&svr->manager)) @@ -133,7 +133,7 @@ static u32 ish_mainseq_3(struct mevent_srv_ish * svr) return 1; } -static u32 ish_mainseq_4(struct mevent_srv_ish * svr) +static u32 ish_mainseq_4(struct mevent_client * svr) { // process command struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx]; @@ -162,20 +162,20 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) svr->flag = 0; break; case 19: - mevent_srv_ish_send_word(svr, 0x12, GetGameStat(cmd->parameter)); + mevent_client_send_word(svr, 0x12, GetGameStat(cmd->parameter)); svr->mainseqno = 3; svr->flag = 0; break; case 6: if (svr->param == 0) - mevent_srv_ish_jmp_buffer(svr); + mevent_client_jmp_buffer(svr); break; case 7: if (svr->param == 1) - mevent_srv_ish_jmp_buffer(svr); + mevent_client_jmp_buffer(svr); break; case 4: - mevent_srv_ish_jmp_buffer(svr); + mevent_client_jmp_buffer(svr); break; case 5: memcpy(svr->buffer, svr->recvBuffer, 0x40); @@ -201,7 +201,7 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC)); break; case 14: - mevent_srv_ish_send_word(svr, 0x13, svr->param); + mevent_client_send_word(svr, 0x13, svr->param); break; case 10: sub_8143F68(svr->recvBuffer); @@ -210,10 +210,10 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) if (!sub_8143EF4(svr->recvBuffer)) { sub_8143DC8(svr->recvBuffer); - mevent_srv_ish_send_word(svr, 0x13, 0); + mevent_client_send_word(svr, 0x13, 0); } else - mevent_srv_ish_send_word(svr, 0x13, 1); + mevent_client_send_word(svr, 0x13, 1); break; case 15: svr->mainseqno = 6; @@ -239,7 +239,7 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) return 1; } -static u32 ish_mainseq_5(struct mevent_srv_ish * svr) +static u32 ish_mainseq_5(struct mevent_client * svr) { // wait flag if (svr->flag) @@ -250,7 +250,7 @@ static u32 ish_mainseq_5(struct mevent_srv_ish * svr) return 1; } -static u32 ish_mainseq_6(struct mevent_srv_ish * svr) +static u32 ish_mainseq_6(struct mevent_client * svr) { // ??? switch (svr->flag) @@ -270,7 +270,7 @@ static u32 ish_mainseq_6(struct mevent_srv_ish * svr) return 1; } -static u32 ish_mainseq_7(struct mevent_srv_ish * svr) +static u32 ish_mainseq_7(struct mevent_client * svr) { // exec arbitrary code u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; @@ -282,9 +282,9 @@ static u32 ish_mainseq_7(struct mevent_srv_ish * svr) return 1; } -static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) +static u32 mevent_client_exec(struct mevent_client * svr) { - u32 (*funcs[])(struct mevent_srv_ish *) = { + u32 (*funcs[])(struct mevent_client *) = { ish_mainseq_0, ish_mainseq_1, ish_mainseq_2, @@ -297,19 +297,19 @@ static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) return funcs[svr->mainseqno](svr); } -void mevent_srv_common_do_init_1(void) +void mevent_srv_init_wnews(void) { s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468B6C, 0, 1); } -void mevent_srv_common_do_init_2(void) +void mevent_srv_new_wcard(void) { s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468BCC, 0, 1); } -u32 mevent_srv_init_do_exec(u16 * a0) +u32 mevent_srv_common_do_exec(u16 * a0) { u32 result; if (s_mevent_srv_common_ptr == NULL) @@ -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 new file mode 100644 index 000000000..0cbfb4be5 --- /dev/null +++ b/src/mystery_gift_menu.c @@ -0,0 +1,1756 @@ +#include "global.h" +#include "palette.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "bg.h" +#include "task.h" +#include "scanline_effect.h" +#include "malloc.h" +#include "text.h" +#include "window.h" +#include "text_window.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "sound.h" +#include "mystery_gift_menu.h" +#include "title_screen.h" +#include "list_menu.h" +#include "link_rfu.h" +#include "string_util.h" +#include "mevent.h" +#include "save.h" +#include "link.h" +#include "event_data.h" +#include "mevent_server.h" +#include "menews_jisan.h" +#include "help_system.h" +#include "constants/songs.h" + +EWRAM_DATA u8 sDownArrowCounterAndYCoordIdx[8] = {}; +EWRAM_DATA bool8 gGiftIsFromEReader = FALSE; + +void task_add_00_mystery_gift(void); +void task00_mystery_gift(u8 taskId); +void task_add_00_ereader(void); + +extern const u8 gText_PickOKExit[]; +extern const u8 gText_PickOKCancel[]; +extern const u8 gText_MysteryGift[]; +extern const u8 gJPText_MysteryGift[]; +extern const u8 gJPText_DecideStop[]; +extern const u8 gText_WhatToDoWithCards[]; +extern const u8 gText_WhatToDoWithNews[]; +extern const u8 gText_OkayToDiscardNews[]; +extern const u8 gText_IfThrowAwayCardEventWontHappen[]; +extern const u8 gText_WonderCardThrownAway[]; +extern const u8 gText_WonderNewsThrownAway[]; +extern const u8 gText_DataWillBeSaved[]; +extern const u8 gText_SaveCompletedPressA[]; +extern const u8 gText_WonderCards[]; +extern const u8 gText_WonderNews[]; +extern const u8 gText_Exit3[]; +extern const u8 gText_WirelessCommunication[]; +extern const u8 gText_Friend2[]; +extern const u8 gFameCheckerText_Cancel[]; +extern const u8 gText_Receive[]; +extern const u8 gText_Send[]; +extern const u8 gText_Toss[]; +extern const u8 gText_VarietyOfEventsImportedWireless[]; +extern const u8 gText_WonderCardsInPossession[]; +extern const u8 gText_ReadNewsThatArrived[]; +extern const u8 gText_ReturnToTitle[]; +extern const u8 gText_NothingSentOver[]; +extern const u8 gText_RecordUploadedViaWireless[]; +extern const u8 gText_WonderCardReceived[]; +extern const u8 gText_WonderCardReceivedFrom[]; +extern const u8 gText_WonderNewsReceived[]; +extern const u8 gText_WonderNewsReceivedFrom[]; +extern const u8 gText_NewStampReceived[]; +extern const u8 gText_AlreadyHadCard[]; +extern const u8 gText_AlreadyHadStamp[]; +extern const u8 gText_AlreadyHadNews[]; +extern const u8 gText_NoMoreRoomForStamps[]; +extern const u8 gText_CommunicationCanceled[]; +extern const u8 gText_CantAcceptCardFromTrainer[]; +extern const u8 gText_CantAcceptNewsFromTrainer[]; +extern const u8 gText_CommunicationError[]; +extern const u8 gText_NewTrainerReceived[]; +extern const u8 gText_WonderCardSentTo[]; +extern const u8 gText_WonderNewsSentTo[]; +extern const u8 gText_StampSentTo[]; +extern const u8 gText_OtherTrainerHasCard[]; +extern const u8 gText_OtherTrainerHasStamp[]; +extern const u8 gText_OtherTrainerHasNews[]; +extern const u8 gText_OtherTrainerCanceled[]; +extern const u8 gText_GiftSentTo[]; +extern const u8 gText_CantSendGiftToTrainer[]; +extern const u8 gText_DontHaveCardNewOneInput[]; +extern const u8 gText_DontHaveNewsNewOneInput[]; +extern const u8 gText_WhereShouldCardBeAccessed[]; +extern const u8 gText_WhereShouldNewsBeAccessed[]; +extern const u8 gText_Communicating[]; +extern const u8 gText_ThrowAwayWonderCard[]; +extern const u8 gText_HaventReceivedCardsGift[]; +extern const u8 gText_CommunicationCompleted[]; +extern const u8 gText_HaventReceivedGiftOkayToDiscard[]; +extern const u8 gText_SendingWonderCard[]; +extern const u8 gText_SendingWonderNews[]; + +const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal"); +const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz"); + +struct MysteryGiftTaskData +{ + u16 curPromptWindowId; + u16 unk2; + u16 unk4; + u16 unk6; + u8 state; + u8 textState; + u8 unkA; + u8 unkB; + u8 IsCardOrNews; + u8 source; + u8 prevPromptWindowId; + u8 * buffer; +}; + +const struct BgTemplate sBGTemplates[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 14, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 13, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 12, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +const struct WindowTemplate sMainWindows[] = { + { + .priority = 0x00, + .tilemapLeft = 0x00, + .tilemapTop = 0x00, + .width = 0x1e, + .height = 0x02, + .paletteNum = 0x0f, + .baseBlock = 0x0013 + }, { + .priority = 0x00, + .tilemapLeft = 0x01, + .tilemapTop = 0x0f, + .width = 0x1c, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x004f + }, { + .priority = 0x00, + .tilemapLeft = 0x00, + .tilemapTop = 0x0f, + .width = 0x1e, + .height = 0x05, + .paletteNum = 0x0d, + .baseBlock = 0x004f + }, { + 0xFF + } +}; + +const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28 = { + .priority = 0x00, + .tilemapLeft = 0x01, + .tilemapTop = 0x0f, + .width = 0x1c, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x00e5 +}; + +const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20 = { + .priority = 0x00, + .tilemapLeft = 0x01, + .tilemapTop = 0x0f, + .width = 0x14, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x00e5 +}; + +const struct WindowTemplate sMysteryGiftMenuWindowTemplate = { + .priority = 0x00, + .tilemapLeft = 0x01, + .tilemapTop = 0x0f, + .width = 0x13, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x00e5 +}; + +const struct WindowTemplate sWindowTemplate_ThreeOptions = { + .priority = 0x00, + .tilemapLeft = 0x08, + .tilemapTop = 0x05, + .width = 0x0e, + .height = 0x05, + .paletteNum = 0x0e, + .baseBlock = 0x0155 +}; + +const struct WindowTemplate sWindowTemplate_YesNoBox = { + .priority = 0x00, + .tilemapLeft = 0x17, + .tilemapTop = 0x0f, + .width = 0x06, + .height = 0x04, + .paletteNum = 0x0e, + .baseBlock = 0x0155 +}; + +const struct WindowTemplate sWindowTemplate_7by8 = { + .priority = 0x00, + .tilemapLeft = 0x16, + .tilemapTop = 0x0c, + .width = 0x07, + .height = 0x07, + .paletteNum = 0x0e, + .baseBlock = 0x0155 +}; + +const struct WindowTemplate sWindowTemplate_7by6 = { + .priority = 0x00, + .tilemapLeft = 0x16, + .tilemapTop = 0x0e, + .width = 0x07, + .height = 0x05, + .paletteNum = 0x0e, + .baseBlock = 0x0155 +}; + +const struct WindowTemplate sWindowTemplate_7by4 = { + .priority = 0x00, + .tilemapLeft = 0x16, + .tilemapTop = 0x0f, + .width = 0x07, + .height = 0x04, + .paletteNum = 0x0e, + .baseBlock = 0x0155 +}; + +const struct ListMenuItem sListMenuItems_CardsOrNews[] = { + { gText_WonderCards, 0 }, + { gText_WonderNews, 1 }, + { gText_Exit3, -2 } +}; + +const struct ListMenuItem sListMenuItems_WirelessOrFriend[] = { + { gText_WirelessCommunication, 0 }, + { gText_Friend2, 1 }, + { gFameCheckerText_Cancel, -2 } +}; + +const struct ListMenuTemplate sListMenuTemplate_ThreeOptions = { + .items = NULL, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 3, + .maxShowed = 3, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = 0, + .fontId = 2, + .cursorKind = 0 +}; + +const struct ListMenuItem sListMenuItems_ReceiveSendToss[] = { + { gText_Receive, 0 }, + { gText_Send, 1 }, + { gText_Toss, 2 }, + { gFameCheckerText_Cancel, -2 } +}; + +const struct ListMenuItem sListMenuItems_ReceiveToss[] = { + { gText_Receive, 0 }, + { gText_Toss, 2 }, + { gFameCheckerText_Cancel, -2 } +}; + +const struct ListMenuItem sListMenuItems_ReceiveSend[] = { + { gText_Receive, 0 }, + { gText_Send, 1 }, + { gFameCheckerText_Cancel, -2 } +}; + +const struct ListMenuItem sListMenuItems_Receive[] = { + { gText_Receive, 0 }, + { gFameCheckerText_Cancel, -2 } +}; + +const struct ListMenuTemplate sListMenu_ReceiveSendToss = { + .items = sListMenuItems_ReceiveSendToss, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 4, + .maxShowed = 4, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 2, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = 0, + .fontId = 2, + .cursorKind = 0 +}; + +const struct ListMenuTemplate sListMenu_ReceiveToss = { + .items = sListMenuItems_ReceiveToss, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 3, + .maxShowed = 3, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = 0, + .fontId = 2, + .cursorKind = 0 +}; + +const struct ListMenuTemplate sListMenu_ReceiveSend = { + .items = sListMenuItems_ReceiveSend, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 3, + .maxShowed = 3, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = 0, + .fontId = 2, + .cursorKind = 0 +}; + +const struct ListMenuTemplate sListMenu_Receive = { + .items = sListMenuItems_Receive, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 2, + .maxShowed = 2, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 2, + .scrollMultiple = 0, + .fontId = 2, + .cursorKind = 0 +}; + +const u8 *const Unref_08366ED8[] = { + gText_VarietyOfEventsImportedWireless, + gText_WonderCardsInPossession, + gText_ReadNewsThatArrived, + gText_ReturnToTitle +}; + +ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_1 = { 0, 1, 2 }; +ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_1_Copy = { 0, 1, 2 }; +ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_2 = { 1, 2, 3 }; + +const u8 gUnknown_8466EF3[] = _("テスト"); +const u8 gUnknown_8466EF7[] = _("むげんのチケット"); + +void vblankcb_mystery_gift_e_reader_run(void) +{ + ProcessSpriteCopyRequests(); + LoadOam(); + TransferPlttBuffer(); +} + +void c2_mystery_gift_e_reader_run(void) +{ + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); +} + +bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + ResetPaletteFade(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); + ResetBgsAndClearDma3BusyFlags(1); + + InitBgsFromTemplates(0, sBGTemplates, ARRAY_COUNT(sBGTemplates)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + + SetBgTilemapBuffer(3, Alloc(0x800)); + SetBgTilemapBuffer(2, Alloc(0x800)); + SetBgTilemapBuffer(1, Alloc(0x800)); + SetBgTilemapBuffer(0, Alloc(0x800)); + + sub_814FE40(0, 10, 0xE0); + sub_814FDA0(0, 1, 0xF0); + sub_80F696C(3, gUnkTextboxBorderGfx, 0x100, 0, 0); + InitWindows(sMainWindows); + DeactivateAllTextPrinters(); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + gMain.state++; + break; + case 1: + LoadPalette(gUnkTextboxBorderPal, 0, 0x20); + LoadPalette(stdpal_get(2), 0xd0, 0x20); + FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); + MG_DrawCheckerboardPattern(); + PrintMysteryGiftOrEReaderTopMenu(mg_or_ereader, 0); + gMain.state++; + break; + case 2: + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + gMain.state++; + break; + case 3: + ShowBg(0); + ShowBg(3); + PlayBGM(BGM_FRLG_MYSTERY_GIFT); + SetVBlankCallback(vblankcb_mystery_gift_e_reader_run); + EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); + return TRUE; + } + + return FALSE; +} + +void c2_mystery_gift(void) +{ + if (HandleMysteryGiftOrEReaderSetup(0)) + { + SetMainCallback2(c2_mystery_gift_e_reader_run); + gGiftIsFromEReader = FALSE; + task_add_00_mystery_gift(); + } +} + +void c2_ereader(void) +{ + if (HandleMysteryGiftOrEReaderSetup(1)) + { + SetMainCallback2(c2_mystery_gift_e_reader_run); + gGiftIsFromEReader = TRUE; + task_add_00_ereader(); + } +} + +void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void) +{ + gGiftIsFromEReader = FALSE; + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(0)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(2)); + Free(GetBgTilemapBuffer(3)); + SetMainCallback2(CB2_InitTitleScreen); +} + +void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCancel) +{ + const u8 * src; + s32 width; + FillWindowPixelBuffer(0, 0x00); + if (!mg_or_ereader) + { + src = usePickOkCancel == TRUE ? gText_PickOKExit : gText_PickOKCancel; + AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gText_MysteryGift); + width = 222 - GetStringWidth(0, src, 0); + AddTextPrinterParametrized2(0, 0, width, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, src); + } + else + { + AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift); + AddTextPrinterParametrized2(0, 0, 0x78, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_DecideStop); + } + CopyWindowToVram(0, 2); + PutWindowTilemap(0); +} + +void MG_DrawTextBorder(u8 windowId) +{ + DrawTextBorderOuter(windowId, 0x01, 0xF); +} + +void MG_DrawCheckerboardPattern(void) +{ + s32 i = 0, j; + + FillBgTilemapBufferRect(3, 0x003, 0, 0, 32, 2, 0x11); + + for (i = 0; i < 18; i++) + { + for (j = 0; j < 32; j++) + { + if ((i & 1) != (j & 1)) + { + FillBgTilemapBufferRect(3, 1, j, i + 2, 1, 1, 0x11); + } + else + { + FillBgTilemapBufferRect(3, 2, j, i + 2, 1, 1, 0x11); + } + } + } +} + +void ClearScreenInBg0(bool32 ignoreTopTwoRows) +{ + switch (ignoreTopTwoRows) + { + case 0: + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11); + break; + case 1: + FillBgTilemapBufferRect(0, 0, 0, 2, 32, 30, 0x11); + break; + } + CopyBgTilemapBufferToVram(0); +} + +void AddTextPrinterToWindow1(const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + FillWindowPixelBuffer(1, 0x11); + AddTextPrinterParametrized2(1, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4); + DrawTextBorderOuter(1, 0x001, 0xF); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + +void ClearTextWindow(void) +{ + rbox_fill_rectangle(1); + ClearWindowTilemap(1); + CopyWindowToVram(1, 1); +} + +bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str) +{ + switch (*textState) + { + case 0: + AddTextPrinterToWindow1(str); + goto inc; + case 1: + DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]); + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + inc: + (*textState)++; + } + break; + case 2: + DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]); + *textState = 0; + ClearTextWindow(); + return TRUE; + case 0xFF: + *textState = 2; + break; + } + return FALSE; +} + +void HideDownArrow(void) +{ + DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]); +} + +void ShowDownArrow(void) +{ + DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]); +} + +bool32 unref_HideDownArrowAndWaitButton(u8 * textState) +{ + switch (*textState) + { + case 0: + HideDownArrow(); + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + (*textState)++; + } + break; + case 1: + ShowDownArrow(); + *textState = 0; + return TRUE; + } + return FALSE; +} + +bool32 PrintStringAndWait2Seconds(u8 * counter, const u8 * str) +{ + if (*counter == 0) + { + AddTextPrinterToWindow1(str); + } + if (++(*counter) > 120) + { + *counter = 0; + ClearTextWindow(); + return TRUE; + } + else + { + return FALSE; + } +} + +u32 MysteryGift_HandleThreeOptionMenu(u8 * unused0, u16 * unused1, u8 whichMenu) +{ + struct ListMenuTemplate listMenuTemplate = sListMenuTemplate_ThreeOptions; + struct WindowTemplate windowTemplate = sWindowTemplate_ThreeOptions; + u32 width; + s32 finalWidth; + s32 response; + u32 i; + + if (whichMenu == 0) + { + listMenuTemplate.items = sListMenuItems_CardsOrNews; + } + else + { + listMenuTemplate.items = sListMenuItems_WirelessOrFriend; + } + width = 0; + for (i = 0; i < listMenuTemplate.totalItems; i++) + { + u32 curWidth = GetStringWidth(2, listMenuTemplate.items[i].unk_00, listMenuTemplate.lettersSpacing); + if (curWidth > width) + width = curWidth; + } + finalWidth = (((width + 9) / 8) + 2) & ~1; + windowTemplate.width = finalWidth; + windowTemplate.tilemapLeft = (30 - finalWidth) / 2; + response = DoMysteryGiftListMenu(&windowTemplate, &listMenuTemplate, 1, 0x00A, 0xE0); + if (response != -1) + { + ClearWindowTilemap(2); + CopyWindowToVram(2, 1); + } + 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 ValidateReceivedWonderCard(); + } + else + { + return ValidateReceivedWonderNews(); + } +} + +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; +} + +bool32 DestroyNewsOrCard(bool32 cardOrNews) +{ + if (cardOrNews == 0) + { + DestroyWonderCard(); + } + else + { + DestroyWonderNews(); + } + return TRUE; +} + +bool32 TearDownCardOrNews_ReturnToTopMenu(bool32 cardOrNews, bool32 arg1) +{ + if (cardOrNews == 0) + { + if (FadeOutFromWonderCard(arg1) != 0) + { + DestroyWonderCardResources(); + return TRUE; + } + else + { + return FALSE; + } + } + else + { + if (FadeOutFromWonderNews(arg1) != 0) + { + DestroyWonderNewsResources(); + return TRUE; + } + else + { + return FALSE; + } + } +} + +s32 mevent_message_prompt_discard(u8 * textState, u16 * windowId, bool32 cardOrNews) +{ + if (cardOrNews == 0) + { + return mevent_message_print_and_prompt_yes_no(textState, windowId, TRUE, gText_IfThrowAwayCardEventWontHappen); + } + else + { + return mevent_message_print_and_prompt_yes_no(textState, windowId, TRUE, gText_OkayToDiscardNews); + } +} + +bool32 mevent_message_was_thrown_away(u8 * textState, bool32 cardOrNews) +{ + if (cardOrNews == 0) + { + return MG_PrintTextOnWindow1AndWaitButton(textState, gText_WonderCardThrownAway); + } + else + { + return MG_PrintTextOnWindow1AndWaitButton(textState, gText_WonderNewsThrownAway); + } +} + +bool32 mevent_save_game(u8 * state) +{ + switch (*state) + { + case 0: + AddTextPrinterToWindow1(gText_DataWillBeSaved); + (*state)++; + break; + case 1: + TrySavingData(0); + (*state)++; + break; + case 2: + AddTextPrinterToWindow1(gText_SaveCompletedPressA); + (*state)++; + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + (*state)++; + } + break; + case 4: + *state = 0; + ClearTextWindow(); + return TRUE; + } + + return FALSE; +} + +const u8 * mevent_message(u32 * flag_p, u8 cardOrNews, u8 cardOrNewsSource, u32 msgId) +{ + const u8 * msg = NULL; + *flag_p = 0; + + switch (msgId) + { + case 0: + *flag_p = 0; + msg = gText_NothingSentOver; + break; + case 1: + *flag_p = 0; + msg = gText_RecordUploadedViaWireless; + break; + case 2: + *flag_p = 1; + msg = cardOrNewsSource == 0 ? gText_WonderCardReceived : gText_WonderCardReceivedFrom; + break; + case 3: + *flag_p = 1; + msg = cardOrNewsSource == 0 ? gText_WonderNewsReceived : gText_WonderNewsReceivedFrom; + break; + case 4: + *flag_p = 1; + msg = gText_NewStampReceived; + break; + case 5: + *flag_p = 0; + msg = gText_AlreadyHadCard; + break; + case 6: + *flag_p = 0; + msg = gText_AlreadyHadStamp; + break; + case 7: + *flag_p = 0; + msg = gText_AlreadyHadNews; + break; + case 8: + *flag_p = 0; + msg = gText_NoMoreRoomForStamps; + break; + case 9: + *flag_p = 0; + msg = gText_CommunicationCanceled; + break; + case 10: + *flag_p = 0; + msg = cardOrNews == 0 ? gText_CantAcceptCardFromTrainer : gText_CantAcceptNewsFromTrainer; + break; + case 11: + *flag_p = 0; + msg = gText_CommunicationError; + break; + case 12: + *flag_p = 1; + msg = gText_NewTrainerReceived; + break; + case 13: + *flag_p = 1; + break; + case 14: + *flag_p = 0; + break; + } + + return msg; +} + +bool32 PrintMGSuccessMessage(u8 * state, const u8 * arg1, u16 * arg2) +{ + switch (*state) + { + case 0: + if (arg1 != NULL) + { + AddTextPrinterToWindow1(arg1); + } + PlayFanfare(MUS_FANFA4); + *arg2 = 0; + (*state)++; + break; + case 1: + if (++(*arg2) > 0xF0) + { + (*state)++; + } + break; + case 2: + if (IsFanfareTaskInactive()) + { + *state = 0; + ClearTextWindow(); + return TRUE; + } + break; + } + return FALSE; +} + +const u8 * mevent_message_stamp_card_etc_send_status(u32 * a0, u8 unused, u32 msgId) +{ + const u8 * result = gText_CommunicationError; + *a0 = 0; + switch (msgId) + { + case 0: + result = gText_NothingSentOver; + break; + case 1: + result = gText_RecordUploadedViaWireless; + break; + case 2: + result = gText_WonderCardSentTo; + *a0 = 1; + break; + case 3: + result = gText_WonderNewsSentTo; + *a0 = 1; + break; + case 4: + result = gText_StampSentTo; + break; + case 5: + result = gText_OtherTrainerHasCard; + break; + case 6: + result = gText_OtherTrainerHasStamp; + break; + case 7: + result = gText_OtherTrainerHasNews; + break; + case 8: + result = gText_NoMoreRoomForStamps; + break; + case 9: + result = gText_OtherTrainerCanceled; + break; + case 10: + result = gText_CantSendGiftToTrainer; + break; + case 11: + result = gText_CommunicationError; + break; + case 12: + result = gText_GiftSentTo; + break; + case 13: + result = gText_GiftSentTo; + break; + case 14: + result = gText_CantSendGiftToTrainer; + break; + } + return result; +} + +bool32 PrintMGSendStatus(u8 * state, u16 * arg1, u8 arg2, u32 msgId) +{ + u32 flag; + const u8 * str = mevent_message_stamp_card_etc_send_status(&flag, arg2, msgId); + if (flag) + { + return PrintMGSuccessMessage(state, str, arg1); + } + else + { + return MG_PrintTextOnWindow1AndWaitButton(state, str); + } +} + +void task_add_00_mystery_gift(void) +{ + u8 taskId = CreateTask(task00_mystery_gift, 0); + struct MysteryGiftTaskData * data = (void *)gTasks[taskId].data; + data->state = 0; + data->textState = 0; + data->unkA = 0; + data->unkB = 0; + data->IsCardOrNews = 0; + data->source = 0; + data->curPromptWindowId = 0; + data->unk2 = 0; + data->unk4 = 0; + data->unk6 = 0; + data->prevPromptWindowId = 0; + data->buffer = AllocZeroed(0x40); +} + +void task00_mystery_gift(u8 taskId) +{ + struct MysteryGiftTaskData * data = (void *)gTasks[taskId].data; + u32 sp0; + const u8 * r1; + + switch (data->state) + { + case 0: + data->state = 1; + break; + case 1: + switch (MysteryGift_HandleThreeOptionMenu(&data->textState, &data->curPromptWindowId, FALSE)) + { + case 0: + data->IsCardOrNews = 0; + if (ValidateReceivedWonderCard() == TRUE) + { + data->state = 18; + } + else + { + data->state = 2; + } + break; + case 1: + data->IsCardOrNews = 1; + if (ValidateReceivedWonderNews() == TRUE) + { + data->state = 18; + } + else + { + data->state = 2; + } + break; + case -2u: + data->state = 37; + break; + } + break; + case 2: + { + if (data->IsCardOrNews == 0) + { + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_DontHaveCardNewOneInput)) + { + data->state = 3; + PrintMysteryGiftOrEReaderTopMenu(0, 1); + } + } + else + { + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_DontHaveNewsNewOneInput)) + { + data->state = 3; + PrintMysteryGiftOrEReaderTopMenu(0, 1); + } + } + break; + } + case 3: + if (data->IsCardOrNews == 0) + { + AddTextPrinterToWindow1(gText_WhereShouldCardBeAccessed); + } + else + { + AddTextPrinterToWindow1(gText_WhereShouldNewsBeAccessed); + } + data->state = 4; + break; + case 4: + switch (MysteryGift_HandleThreeOptionMenu(&data->textState, &data->curPromptWindowId, TRUE)) + { + case 0: + ClearTextWindow(); + data->state = 5; + data->source = 0; + break; + case 1: + ClearTextWindow(); + data->state = 5; + data->source = 1; + break; + case -2u: + ClearTextWindow(); + if (ValidateCardOrNews(data->IsCardOrNews)) + { + data->state = 18; + } + else + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + break; + } + break; + case 5: + { + register u8 eos asm("r1"); + gStringVar1[0] = (eos = EOS); + gStringVar2[0] = eos; + gStringVar3[0] = eos; + } + switch (data->IsCardOrNews) + { + case 0: + if (data->source == 1) + { + MEvent_CreateTask_CardOrNewsWithFriend(0x15); + } + else if (data->source == 0) + { + MEvent_CreateTask_CardOrNewsOverWireless(0x15); + } + break; + case 1: + if (data->source == 1) + { + MEvent_CreateTask_CardOrNewsWithFriend(0x16); + } + else if (data->source == 0) + { + MEvent_CreateTask_CardOrNewsOverWireless(0x16); + } + break; + } + data->state = 6; + break; + case 6: + if (gReceivedRemoteLinkPlayers != 0) + { + ClearScreenInBg0(TRUE); + data->state = 7; + mevent_client_do_init(); + } + else if (gSpecialVar_Result == 5) + { + ClearScreenInBg0(TRUE); + data->state = 3; + } + break; + case 7: + AddTextPrinterToWindow1(gText_Communicating); + data->state = 8; + break; + case 8: + switch (mevent_client_do_exec(&data->curPromptWindowId)) + { + case 6: + task_add_05_task_del_08FA224_when_no_RfuFunc(); + data->prevPromptWindowId = data->curPromptWindowId; + data->state = 13; + break; + case 5: + memcpy(data->buffer, mevent_client_get_buffer(), 0x40); + mevent_client_inc_flag(); + break; + case 3: + data->state = 10; + break; + case 2: + data->state = 9; + break; + case 4: + data->state = 11; + StringCopy(gStringVar1, gLinkPlayers[0].name); + break; + } + break; + case 9: + switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, mevent_client_get_buffer())) + { + case 0: + mevent_client_set_param(0); + mevent_client_inc_flag(); + data->state = 7; + break; + case 1: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + case -1u: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + } + break; + case 10: + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, mevent_client_get_buffer())) + { + mevent_client_inc_flag(); + data->state = 7; + } + break; + case 11: + switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, gText_ThrowAwayWonderCard)) + { + case 0: + if (CheckReceivedGiftFromWonderCard() == TRUE) + { + data->state = 12; + } + else + { + mevent_client_set_param(0); + mevent_client_inc_flag(); + data->state = 7; + } + break; + case 1: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + case -1u: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + } + break; + case 12: + switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, gText_HaventReceivedCardsGift)) + { + case 0: + mevent_client_set_param(0); + mevent_client_inc_flag(); + data->state = 7; + break; + case 1: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + case -1u: + mevent_client_set_param(1); + mevent_client_inc_flag(); + data->state = 7; + break; + } + break; + case 13: + if (IsNoOneConnected()) + { + DestroyWirelessStatusIndicatorSprite(); + data->state = 14; + } + break; + case 14: + if (PrintStringAndWait2Seconds(&data->textState, gText_CommunicationCompleted)) + { + if (data->source == 1) + { + StringCopy(gStringVar1, gLinkPlayers[0].name); + } + data->state = 15; + } + break; + case 15: + { + register bool32 flag asm("r1"); + r1 = mevent_message(&sp0, data->IsCardOrNews, data->source, data->prevPromptWindowId); + if (r1 == NULL) + { + r1 = data->buffer; + } + if (sp0) + { + flag = PrintMGSuccessMessage(&data->textState, r1, &data->curPromptWindowId); + } + else + { + flag = MG_PrintTextOnWindow1AndWaitButton(&data->textState, r1); + } + if (flag) + { + if (data->prevPromptWindowId == 3) + { + if (data->source == 1) + { + GenerateRandomNews(1); + } + else + { + GenerateRandomNews(2); + } + } + if (sp0 == 0) + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + else + { + data->state = 17; + } + } + break; + } + case 16: + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_CommunicationError)) + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + break; + case 17: + if (mevent_save_game(&data->textState)) + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + break; + case 18: + if (HandleLoadWonderCardOrNews(&data->textState, data->IsCardOrNews)) + { + data->state = 20; + } + break; + case 20: + if (data->IsCardOrNews == 0) + { + if (JOY_NEW(A_BUTTON)) + { + data->state = 21; + } + if (JOY_NEW(B_BUTTON)) + { + data->state = 27; + } + } + else + { + switch (MENews_GetInput(gMain.newKeys)) + { + case 0: + MENews_RemoveScrollIndicatorArrowPair(); + data->state = 21; + break; + case 1: + data->state = 27; + break; + } + } + break; + case 21: + { + u32 result; + if (data->IsCardOrNews == 0) + { + if (WonderCard_Test_Unk_08_6()) + { + result = HandleMysteryGiftListMenu(&data->textState, &data->curPromptWindowId, data->IsCardOrNews, FALSE); + } + else + { + result = HandleMysteryGiftListMenu(&data->textState, &data->curPromptWindowId, data->IsCardOrNews, TRUE); + } + } + else + { + if (WonderNews_Test_Unk_02()) + { + result = HandleMysteryGiftListMenu(&data->textState, &data->curPromptWindowId, data->IsCardOrNews, FALSE); + } + else + { + result = HandleMysteryGiftListMenu(&data->textState, &data->curPromptWindowId, data->IsCardOrNews, TRUE); + } + } + switch (result) + { + case 0: + data->state = 28; + break; + case 1: + data->state = 29; + break; + case 2: + data->state = 22; + break; + case -2u: + if (data->IsCardOrNews == 1) + { + MENews_AddScrollIndicatorArrowPair(); + } + data->state = 20; + break; + } + break; + } + case 22: + switch (mevent_message_prompt_discard(&data->textState, &data->curPromptWindowId, data->IsCardOrNews)) + { + case 0: + if (data->IsCardOrNews == 0 && CheckReceivedGiftFromWonderCard() == TRUE) + { + data->state = 23; + } + else + { + data->state = 24; + } + break; + case 1: + data->state = 21; + break; + case -1: + data->state = 21; + break; + } + break; + case 23: + switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, TRUE, gText_HaventReceivedGiftOkayToDiscard)) + { + case 0: + data->state = 24; + break; + case 1: + data->state = 21; + break; + case -1u: + data->state = 21; + break; + } + break; + case 24: + if (TearDownCardOrNews_ReturnToTopMenu(data->IsCardOrNews, 1)) + { + DestroyNewsOrCard(data->IsCardOrNews); + data->state = 25; + } + break; + case 25: + if (mevent_save_game(&data->textState)) + { + data->state = 26; + } + break; + case 26: + if (mevent_message_was_thrown_away(&data->textState, data->IsCardOrNews)) + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + break; + case 27: + if (TearDownCardOrNews_ReturnToTopMenu(data->IsCardOrNews, 0)) + { + data->state = 0; + } + break; + case 28: + if (TearDownCardOrNews_ReturnToTopMenu(data->IsCardOrNews, 1)) + { + data->state = 3; + } + break; + case 29: + if (TearDownCardOrNews_ReturnToTopMenu(data->IsCardOrNews, 1)) + { + switch (data->IsCardOrNews) + { + case 0: + MEvent_CreateTask_Leader(21); + break; + case 1: + MEvent_CreateTask_Leader(22); + break; + } + data->source = 1; + data->state = 30; + } + break; + case 30: + if (gReceivedRemoteLinkPlayers != 0) + { + ClearScreenInBg0(1); + data->state = 31; + } + else if (gSpecialVar_Result == 5) + { + ClearScreenInBg0(1); + data->state = 18; + } + break; + case 31: + { + register u8 eos asm("r1"); + gStringVar1[0] = (eos = EOS); + gStringVar2[0] = eos; + gStringVar3[0] = eos; + } + if (data->IsCardOrNews == 0) + { + AddTextPrinterToWindow1(gText_SendingWonderCard); + mevent_srv_new_wcard(); + } + else + { + AddTextPrinterToWindow1(gText_SendingWonderNews); + mevent_srv_init_wnews(); + } + data->state = 32; + break; + case 32: + if (mevent_srv_common_do_exec(&data->curPromptWindowId) == 3) + { + data->prevPromptWindowId = data->curPromptWindowId; + data->state = 33; + } + break; + case 33: + task_add_05_task_del_08FA224_when_no_RfuFunc(); + StringCopy(gStringVar1, gLinkPlayers[1].name); + data->state = 34; + break; + case 34: + if (IsNoOneConnected()) + { + DestroyWirelessStatusIndicatorSprite(); + data->state = 35; + } + break; + case 35: + if (PrintMGSendStatus(&data->textState, &data->curPromptWindowId, data->source, data->prevPromptWindowId)) + { + if (data->source == 1 && data->prevPromptWindowId == 3) + { + GenerateRandomNews(3); + data->state = 17; + } + else + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + } + break; + case 36: + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_CommunicationError)) + { + data->state = 0; + PrintMysteryGiftOrEReaderTopMenu(0, 0); + } + break; + case 37: + CloseLink(); + sub_812B484(); + Free(data->buffer); + DestroyTask(taskId); + SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen); + break; + } +} + +u16 GetMysteryGiftBaseBlock(void) +{ + return 0x19B; +} diff --git a/src/script.c b/src/script.c index d7246752c..608dc6ba0 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 ValidateReceivedWonderCard(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 (!ValidateReceivedWonderCard()) return NULL; if (scriptData->magic != RAM_SCRIPT_MAGIC) return NULL; diff --git a/sym_ewram.txt b/sym_ewram.txt index 258f3d849..016de3ab7 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1615,12 +1615,7 @@ sLocationHistory: @ 203F3A8 sRoamerLocation: @ 203F3AE .space 0x2 -gUnknown_203F3B0: @ 203F3B0 - .space 0x8 - -gUnknown_203F3B8: @ 203F3B8 - .space 0x4 - + .include "src/mystery_gift_menu.o" .include "src/mevent.o" .include "src/mevent_server_helpers.o" .include "src/mevent_server.o" |