summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-04-26 12:50:51 -0400
committerGitHub <noreply@github.com>2019-04-26 12:50:51 -0400
commita1e8de5098b9bc3a978240e893a494f1a25248d8 (patch)
tree1381887937def8daa4cc9e9cc477a59e9ff74390
parent1a4867a4bf4427c45af7545adcabae58ee19eb6e (diff)
parent274151836b44d960ab357d861a4d79602a8722d5 (diff)
Merge pull request #53 from PikalaxALT/mystery_gift_menu
Mystery gift menu
-rw-r--r--asm/bag.s2
-rw-r--r--asm/battle_2.s2
-rw-r--r--asm/cable_club.s6
-rw-r--r--asm/evolution_scene.s2
-rw-r--r--asm/intro.s4
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/link.s18
-rw-r--r--asm/link_rfu.s2
-rw-r--r--asm/link_rfu_2.s20
-rw-r--r--asm/link_rfu_3.s80
-rw-r--r--asm/link_rfu_4.s2316
-rw-r--r--asm/list_menu.s8
-rw-r--r--asm/main_menu.s8
-rw-r--r--asm/map_name_popup.s2
-rw-r--r--asm/mystery_gift_menu.s410
-rw-r--r--asm/overworld.s2
-rw-r--r--asm/pokedex_screen.s8
-rw-r--r--asm/pokemon_special_anim.s4
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/slot_machine.s2
-rw-r--r--asm/start_menu.s2
-rw-r--r--asm/text_window.s6
-rw-r--r--asm/title_screen.s6
-rw-r--r--asm/trade.s20
-rw-r--r--asm/union_room_chat.s6
-rw-r--r--asm/unk_8147AA8.s12
-rw-r--r--asm/unk_814D5C8.s2
-rw-r--r--asm/unk_81507FC.s2
-rw-r--r--data/data_83FECCC.s140
-rw-r--r--data/link_rfu_4.s54
-rw-r--r--data/mystery_gift_menu.s14
-rw-r--r--data/specials.inc4
-rw-r--r--graphics/interface/unk_textbox_border.pngbin0 -> 141 bytes
-rw-r--r--include/link.h2
-rw-r--r--include/link_rfu.h12
-rw-r--r--include/list_menu.h2
-rw-r--r--include/menews_jisan.h2
-rw-r--r--include/mevent.h23
-rw-r--r--include/mevent_server.h18
-rw-r--r--include/mystery_gift_menu.h6
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--include/text_window.h3
-rw-r--r--include/title_screen.h6
-rw-r--r--ld_script.txt6
-rw-r--r--src/menews_jisan.c4
-rw-r--r--src/mevent.c86
-rw-r--r--src/mevent_8145654.c28
-rw-r--r--src/mevent_server.c92
-rw-r--r--src/mystery_gift_menu.c1756
-rw-r--r--src/script.c4
-rw-r--r--sym_ewram.txt7
51 files changed, 2121 insertions, 3105 deletions
diff --git a/asm/bag.s b/asm/bag.s
index aeac17e69..702de4e4a 100644
--- a/asm/bag.s
+++ b/asm/bag.s
@@ -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
new file mode 100644
index 000000000..6cc6a64ac
--- /dev/null
+++ b/graphics/interface/unk_textbox_border.png
Binary files differ
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"