diff options
-rw-r--r-- | asm/battle_2.s | 2 | ||||
-rw-r--r-- | asm/cable_club.s | 6 | ||||
-rw-r--r-- | asm/evolution_scene.s | 2 | ||||
-rw-r--r-- | asm/link.s | 18 | ||||
-rw-r--r-- | asm/link_rfu_2.s | 16 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 42 | ||||
-rw-r--r-- | asm/mystery_gift_menu.s | 1143 | ||||
-rw-r--r-- | asm/overworld.s | 2 | ||||
-rw-r--r-- | asm/trade.s | 16 | ||||
-rw-r--r-- | asm/unk_814D5C8.s | 2 | ||||
-rw-r--r-- | data/data_83FECCC.s | 40 | ||||
-rw-r--r-- | data/specials.inc | 2 | ||||
-rw-r--r-- | include/link.h | 2 | ||||
-rw-r--r-- | include/link_rfu.h | 6 | ||||
-rw-r--r-- | include/menews_jisan.h | 2 | ||||
-rw-r--r-- | include/mevent.h | 6 | ||||
-rw-r--r-- | include/mevent_server.h | 18 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/menews_jisan.c | 2 | ||||
-rw-r--r-- | src/mevent.c | 24 | ||||
-rw-r--r-- | src/mevent_8145654.c | 6 | ||||
-rw-r--r-- | src/mevent_server.c | 88 | ||||
-rw-r--r-- | src/mystery_gift_menu.c | 712 |
23 files changed, 869 insertions, 1289 deletions
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/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_2.s b/asm/link_rfu_2.s index bad221798..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 @@ -5193,7 +5193,7 @@ _080FADF8: ldrb r0, [r7] movs r0, 0x2 strb r0, [r7] - bl sub_80098B8 + bl CloseLink b _080FAE62 .align 2, 0 _080FAE10: .4byte gUnknown_3005450 @@ -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 f78d77079..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] @@ -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 @@ -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 @@ -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 @@ -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] @@ -4871,12 +4871,12 @@ _08118222: 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 AddTextPrinterToWindow1 _08118252: @@ -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 @@ -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] @@ -5284,7 +5284,7 @@ _081185C2: bl MG_PrintTextOnWindow1AndWaitButton cmp r0, 0 beq _08118604 - bl sub_80FCE44 + bl DestroyWirelessStatusIndicatorSprite adds r0, r4, 0 bl DestroyTask bl sub_80F8DC0 diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s deleted file mode 100644 index 092289daa..000000000 --- a/asm/mystery_gift_menu.s +++ /dev/null @@ -1,1143 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - 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 AddTextPrinterToWindow1 -_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 ClearTextWindow - 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 @ =gText_CommunicationError - 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 gText_CommunicationError -_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 @ =gText_NothingSentOver - b _08142E12 - .align 2, 0 -_08142DB4: .4byte gText_NothingSentOver -_08142DB8: - ldr r1, _08142DBC @ =gText_RecordUploadedViaWireless - b _08142E12 - .align 2, 0 -_08142DBC: .4byte gText_RecordUploadedViaWireless -_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 @ =gText_NoMoreRoomForStamps - b _08142E12 - .align 2, 0 -_08142DF8: .4byte gText_NoMoreRoomForStamps -_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 MG_PrintTextOnWindow1AndWaitButton - 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 MysteryGift_HandleThreeOptionMenu - 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 ValidateReceivedWonderCard - b _08142F9A -_08142F94: - strb r1, [r5, 0xC] - bl ValidateReceivedWonderNews -_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 MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - bne _08142FD0 - b _081435C6 -_08142FD0: - movs r0, 0x3 - strb r0, [r5, 0x8] - movs r0, 0 - movs r1, 0x1 - bl PrintMysteryGiftOrEReaderTopMenu - 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 AddTextPrinterToWindow1 - b _08142FFE - .align 2, 0 -_08142FF4: .4byte gUnknown_841E717 -_08142FF8: - ldr r0, _08143004 @ =gUnknown_841E741 - bl AddTextPrinterToWindow1 -_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 MysteryGift_HandleThreeOptionMenu - 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 ClearTextWindow - movs r1, 0 - movs r0, 0x5 - strb r0, [r5, 0x8] - strb r1, [r5, 0xD] - b _081435C6 -_08143036: - bl ClearTextWindow - movs r0, 0x5 - strb r0, [r5, 0x8] - strb r4, [r5, 0xD] - b _081435C6 -_08143042: - bl ClearTextWindow - ldrb r0, [r5, 0xC] - bl ValidateCardOrNews - 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 ClearScreenInBg0 - 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 ClearScreenInBg0 - b _08143464 - .align 2, 0 -_081430E8: .4byte gSpecialVar_Result -_081430EC: - ldr r0, _081430F8 @ =gUnknown_841E794 - bl AddTextPrinterToWindow1 - 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 mevent_message_print_and_prompt_yes_no - 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 MG_PrintTextOnWindow1AndWaitButton - 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 mevent_message_print_and_prompt_yes_no - 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 mevent_message_print_and_prompt_yes_no - 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 PrintStringAndWait2Seconds - 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 MG_PrintTextOnWindow1AndWaitButton -_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 HandleLoadWonderCardOrNews - 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 HandleMysteryGiftListMenu - 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 mevent_message_prompt_discard - 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 mevent_message_print_and_prompt_yes_no - 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 TearDownCardOrNews_ReturnToTopMenu - cmp r0, 0 - bne _08143416 - b _081435C6 -_08143416: - ldrb r0, [r5, 0xC] - bl DestroyNewsOrCard - 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 TearDownCardOrNews_ReturnToTopMenu - 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 TearDownCardOrNews_ReturnToTopMenu - 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 TearDownCardOrNews_ReturnToTopMenu - 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 ClearScreenInBg0 - 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 ClearScreenInBg0 -_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 AddTextPrinterToWindow1 - 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 AddTextPrinterToWindow1 - 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 @ =gText_CommunicationError - bl MG_PrintTextOnWindow1AndWaitButton -_08143596: - cmp r0, 0 - beq _081435C6 -_0814359A: - movs r0, 0 - strb r0, [r5, 0x8] -_0814359E: - movs r1, 0 - bl PrintMysteryGiftOrEReaderTopMenu - b _081435C6 - .align 2, 0 -_081435A8: .4byte gText_CommunicationError -_081435AC: - bl sub_80098B8 - bl sub_812B484 - ldr r0, [r5, 0x10] - bl Free - adds r0, r4, 0 - bl DestroyTask - ldr r0, _081435D0 @ =MainCB_FreeAllBuffersAndReturnToInitTitleScreen - bl SetMainCallback2 -_081435C6: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081435D0: .4byte MainCB_FreeAllBuffersAndReturnToInitTitleScreen - 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/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/trade.s b/asm/trade.s index 1e947870a..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 @@ -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 @@ -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/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/data/data_83FECCC.s b/data/data_83FECCC.s index 32e49ea60..211e435ef 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -2446,22 +2446,22 @@ gText_ReadNewsThatArrived:: @ 841E669 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 gText_CommunicationError:: @ 841E7BC @@ -2470,10 +2470,10 @@ gText_CommunicationError:: @ 841E7BC 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 gText_WonderCardReceivedFrom:: @ 841E866 @@ -2524,37 +2524,37 @@ gText_WhatToDoWithCards:: @ 841EA86 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 gText_IfThrowAwayCardEventWontHappen:: @ 841EC99 @@ -2563,7 +2563,7 @@ gText_IfThrowAwayCardEventWontHappen:: @ 841EC99 gText_OkayToDiscardNews:: @ 841ECD3 .incbin "baserom.gba", 0x41ECD3, 0x26 -gUnknown_841ECF9:: @ 841ECF9 +gText_HaventReceivedGiftOkayToDiscard:: @ 841ECF9 .incbin "baserom.gba", 0x41ECF9, 0x36 gText_DataWillBeSaved:: @ 841ED2F diff --git a/data/specials.inc b/data/specials.inc index 6af1938e7..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 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 9ce6f04bb..d076efae6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -5,5 +5,11 @@ void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(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/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 5c3bfe86d..b9b17d8c0 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -60,5 +60,11 @@ 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/ld_script.txt b/ld_script.txt index fb24a9060..88c2c59bc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -242,7 +242,6 @@ SECTIONS { asm/slot_machine.o(.text); src/roamer.o(.text); src/mystery_gift_menu.o(.text); - asm/mystery_gift_menu.o(.text); src/mevent.o(.text); src/mevent_server_helpers.o(.text); src/mevent_server.o(.text); diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 8231e770c..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(); diff --git a/src/mevent.c b/src/mevent.c index d234a6fef..4d625987e 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -294,7 +294,7 @@ void sub_8143910(u8 taskId) case 3: if (!sub_814374C()) { - sub_80098B8(); + CloseLink(); data->t08 = 4; } else @@ -325,26 +325,26 @@ 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); } @@ -396,16 +396,16 @@ void sub_8143910(u8 taskId) 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()) @@ -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) @@ -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) @@ -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)) diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 9436ef672..af3024bff 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -671,7 +671,7 @@ s32 FadeOutFromWonderNews(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 1443e7007..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) diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 046ea2529..0cbfb4be5 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -19,12 +19,18 @@ #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[]; @@ -69,6 +75,26 @@ 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"); @@ -1042,3 +1068,689 @@ const u8 * mevent_message(u32 * flag_p, u8 cardOrNews, u8 cardOrNewsSource, u32 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; +} |