diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-01-20 14:46:01 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-01-20 14:46:01 -0500 |
commit | ac5bfcf1ce9c0f1dfe240dca3aeb0f3fcaa83280 (patch) | |
tree | d5fc9e8f137d06ff17c7beb4f22744c318d19b4f | |
parent | 8d5af5332934f47f022907d2acb2e71d96b04449 (diff) |
through sub_8117A0C
-rw-r--r-- | asm/cable_club.s | 28 | ||||
-rw-r--r-- | asm/field_weather.s | 6 | ||||
-rw-r--r-- | asm/overworld.s | 46 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | asm/union_room.s | 2066 | ||||
-rw-r--r-- | include/berry_crush.h | 6 | ||||
-rw-r--r-- | include/cable_club.h | 1 | ||||
-rw-r--r-- | include/dodrio_berry_picking.h | 6 | ||||
-rw-r--r-- | include/field_control_avatar.h | 1 | ||||
-rw-r--r-- | include/field_weather.h | 2 | ||||
-rw-r--r-- | include/link.h | 1 | ||||
-rw-r--r-- | include/link_rfu.h | 8 | ||||
-rw-r--r-- | include/mevent.h | 3 | ||||
-rw-r--r-- | include/mystery_gift_menu.h | 3 | ||||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/pokemon_jump.h | 1 | ||||
-rw-r--r-- | include/save_location.h | 1 | ||||
-rw-r--r-- | include/union_room.h | 2 | ||||
-rw-r--r-- | include/union_room_chat.h | 1 | ||||
-rw-r--r-- | include/union_room_player_avatar.h | 6 | ||||
-rw-r--r-- | src/credits.c | 4 | ||||
-rw-r--r-- | src/field_fadetransition.c | 22 | ||||
-rw-r--r-- | src/item_use.c | 10 | ||||
-rw-r--r-- | src/mevent.c | 4 | ||||
-rw-r--r-- | src/player_pc.c | 8 | ||||
-rw-r--r-- | src/quest_log.c | 4 | ||||
-rw-r--r-- | src/scrcmd.c | 4 | ||||
-rw-r--r-- | src/shop.c | 4 | ||||
-rw-r--r-- | src/start_menu.c | 4 | ||||
-rw-r--r-- | src/union_room.c | 767 | ||||
-rw-r--r-- | sym_common.txt | 4 |
31 files changed, 878 insertions, 2150 deletions
diff --git a/asm/cable_club.s b/asm/cable_club.s index 2aa355ab4..27a3d93f4 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -773,10 +773,10 @@ _08080D44: _08080D50: .4byte sub_8080F78 _08080D54: bl GetLinkPlayerCount_2 - ldr r4, _08080D7C @ =gUnknown_3005030 + ldr r4, _08080D7C @ =gFieldLinkPlayerCount strb r0, [r4] bl GetMultiplayerId - ldr r1, _08080D80 @ =gUnknown_300502C + ldr r1, _08080D80 @ =gLocalLinkPlayerId strb r0, [r1] ldrb r0, [r4] bl sub_800A900 @@ -790,8 +790,8 @@ _08080D74: pop {r0} bx r0 .align 2, 0 -_08080D7C: .4byte gUnknown_3005030 -_08080D80: .4byte gUnknown_300502C +_08080D7C: .4byte gFieldLinkPlayerCount +_08080D80: .4byte gLocalLinkPlayerId _08080D84: .4byte gBlockSendBuffer _08080D88: .4byte sub_8080E6C thumb_func_end sub_8080CDC @@ -876,10 +876,10 @@ _08080E18: .4byte gTasks _08080E1C: .4byte sub_8080F78 _08080E20: bl GetLinkPlayerCount_2 - ldr r4, _08080E58 @ =gUnknown_3005030 + ldr r4, _08080E58 @ =gFieldLinkPlayerCount strb r0, [r4] bl GetMultiplayerId - ldr r1, _08080E5C @ =gUnknown_300502C + ldr r1, _08080E5C @ =gLocalLinkPlayerId strb r0, [r1] ldrb r0, [r4] bl sub_800A900 @@ -899,8 +899,8 @@ _08080E50: pop {r0} bx r0 .align 2, 0 -_08080E58: .4byte gUnknown_3005030 -_08080E5C: .4byte gUnknown_300502C +_08080E58: .4byte gFieldLinkPlayerCount +_08080E5C: .4byte gLocalLinkPlayerId _08080E60: .4byte gBlockSendBuffer _08080E64: .4byte gTasks _08080E68: .4byte sub_8080E6C @@ -1536,7 +1536,7 @@ _08081344: _0808135C: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r1, _08081374 @ =gLinkType ldr r2, _08081378 @ =0x00002211 adds r0, r2, 0 @@ -1693,7 +1693,7 @@ _08081480: _080814A0: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, _080814BC @ =gLinkType ldr r2, _080814C0 @ =0x00002211 adds r1, r2, 0 @@ -1931,7 +1931,7 @@ sub_8081668: @ 8081668 ldrh r0, [r0] cmp r0, 0x5 beq _0808170A - ldr r0, _080816BC @ =gUnknown_300502C + ldr r0, _080816BC @ =gLocalLinkPlayerId ldrb r0, [r0] movs r5, 0x1 eors r0, r5 @@ -1951,7 +1951,7 @@ sub_8081668: @ 8081668 _080816B0: .4byte gBattleTypeFlags _080816B4: .4byte 0x0000ffdf _080816B8: .4byte gSpecialVar_0x8004 -_080816BC: .4byte gUnknown_300502C +_080816BC: .4byte gLocalLinkPlayerId _080816C0: .4byte gWirelessCommType _080816C4: .4byte gBattleOutcome _080816C8: @@ -2179,7 +2179,7 @@ _08081882: bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen bl ClearLinkCallback_2 b _080818B8 _08081894: @@ -2255,7 +2255,7 @@ _0808191A: bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen bl Rfu_set_zero b _08081950 _0808192C: diff --git a/asm/field_weather.s b/asm/field_weather.s index ece13573f..7960543a6 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1584,8 +1584,8 @@ _0807A810: .4byte 0x000006c6 _0807A814: .4byte 0x000006c2 thumb_func_end sub_807A7C4 - thumb_func_start fade_screen -fade_screen: @ 807A818 + thumb_func_start FadeScreen +FadeScreen: @ 807A818 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 @@ -1735,7 +1735,7 @@ _0807A934: .4byte gUnknown_2037F34 _0807A938: .4byte 0x000006c6 _0807A93C: .4byte 0x000006ca _0807A940: .4byte 0x000006cb - thumb_func_end fade_screen + thumb_func_end FadeScreen thumb_func_start FieldWeather_StartFadingOutCreditsMap FieldWeather_StartFadingOutCreditsMap: @ 807A944 diff --git a/asm/overworld.s b/asm/overworld.s index 0b2e99ebf..92ffbd038 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -4757,7 +4757,7 @@ _0805713C: .4byte gPlayerAvatar thumb_func_start sub_8057140 sub_8057140: @ 8057140 push {lr} - ldr r0, _08057158 @ =gUnknown_300502C + ldr r0, _08057158 @ =gLocalLinkPlayerId ldrb r0, [r0] bl sub_8058504 lsls r0, 24 @@ -4766,13 +4766,13 @@ sub_8057140: @ 8057140 pop {r0} bx r0 .align 2, 0 -_08057158: .4byte gUnknown_300502C +_08057158: .4byte gLocalLinkPlayerId thumb_func_end sub_8057140 thumb_func_start sub_805715C sub_805715C: @ 805715C push {lr} - ldr r0, _08057174 @ =gUnknown_300502C + ldr r0, _08057174 @ =gLocalLinkPlayerId ldrb r0, [r0] bl sub_8058504 lsls r0, 24 @@ -4781,7 +4781,7 @@ sub_805715C: @ 805715C pop {r0} bx r0 .align 2, 0 -_08057174: .4byte gUnknown_300502C +_08057174: .4byte gLocalLinkPlayerId thumb_func_end sub_805715C thumb_func_start sub_8057178 @@ -4794,7 +4794,7 @@ sub_8057178: @ 8057178 adds r1, r4, 0 bl GetCameraFocusCoords mov r2, sp - ldr r0, _080571A4 @ =gUnknown_300502C + ldr r0, _080571A4 @ =gLocalLinkPlayerId ldrb r1, [r0] ldrh r0, [r2] adds r0, r1 @@ -4807,7 +4807,7 @@ sub_8057178: @ 8057178 pop {r0} bx r0 .align 2, 0 -_080571A4: .4byte gUnknown_300502C +_080571A4: .4byte gLocalLinkPlayerId thumb_func_end sub_8057178 thumb_func_start sub_80571A8 @@ -4823,13 +4823,13 @@ sub_80571A8: @ 80571A8 bl GetCameraFocusCoords mov r3, sp mov r2, sp - ldr r0, _08057224 @ =gUnknown_300502C + ldr r0, _08057224 @ =gLocalLinkPlayerId ldrb r1, [r0] ldrh r0, [r2] subs r0, r1 strh r0, [r3] movs r6, 0 - ldr r0, _08057228 @ =gUnknown_3005030 + ldr r0, _08057228 @ =gFieldLinkPlayerCount mov r8, r4 ldrb r0, [r0] cmp r6, r0 @@ -4859,7 +4859,7 @@ _080571D8: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 - ldr r0, _08057228 @ =gUnknown_3005030 + ldr r0, _08057228 @ =gFieldLinkPlayerCount ldrb r0, [r0] cmp r6, r0 bcc _080571D8 @@ -4872,8 +4872,8 @@ _08057212: pop {r0} bx r0 .align 2, 0 -_08057224: .4byte gUnknown_300502C -_08057228: .4byte gUnknown_3005030 +_08057224: .4byte gLocalLinkPlayerId +_08057228: .4byte gFieldLinkPlayerCount _0805722C: .4byte gLinkPlayers thumb_func_end sub_80571A8 @@ -4881,7 +4881,7 @@ _0805722C: .4byte gLinkPlayers sub_8057230: @ 8057230 push {r4,r5,lr} movs r4, 0 - ldr r0, _08057264 @ =gUnknown_3005030 + ldr r0, _08057264 @ =gFieldLinkPlayerCount ldrb r0, [r0] cmp r4, r0 bcs _0805725E @@ -4898,7 +4898,7 @@ _0805723E: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 - ldr r0, _08057264 @ =gUnknown_3005030 + ldr r0, _08057264 @ =gFieldLinkPlayerCount ldrb r0, [r0] cmp r4, r0 bcc _0805723E @@ -4907,7 +4907,7 @@ _0805725E: pop {r0} bx r0 .align 2, 0 -_08057264: .4byte gUnknown_3005030 +_08057264: .4byte gFieldLinkPlayerCount _08057268: .4byte gLinkPlayers thumb_func_end sub_8057230 @@ -5647,7 +5647,7 @@ c1_link_related: @ 8057884 cmp r0, 0 bne _080578C0 _0805789E: - ldr r0, _080578CC @ =gUnknown_300502C + ldr r0, _080578CC @ =gLocalLinkPlayerId ldrb r4, [r0] ldr r0, _080578D0 @ =gLinkPartnersHeldKeys adds r1, r4, 0 @@ -5666,7 +5666,7 @@ _080578C0: bx r0 .align 2, 0 _080578C8: .4byte gWirelessCommType -_080578CC: .4byte gUnknown_300502C +_080578CC: .4byte gLocalLinkPlayerId _080578D0: .4byte gLinkPartnersHeldKeys _080578D4: .4byte gUnknown_3000E84 thumb_func_end c1_link_related @@ -5753,7 +5753,7 @@ sub_8057954: @ 8057954 push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 - ldr r0, _08057974 @ =gUnknown_3005030 + ldr r0, _08057974 @ =gFieldLinkPlayerCount ldrb r2, [r0] movs r1, 0 cmp r1, r2 @@ -5767,7 +5767,7 @@ _08057966: movs r0, 0 b _08057984 .align 2, 0 -_08057974: .4byte gUnknown_3005030 +_08057974: .4byte gFieldLinkPlayerCount _08057978: .4byte gUnknown_3000E80 _0805797C: adds r1, 0x1 @@ -5786,7 +5786,7 @@ sub_805798C: @ 805798C push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 - ldr r0, _080579AC @ =gUnknown_3005030 + ldr r0, _080579AC @ =gFieldLinkPlayerCount ldrb r2, [r0] movs r1, 0 cmp r1, r2 @@ -5800,7 +5800,7 @@ _0805799E: movs r0, 0x1 b _080579BC .align 2, 0 -_080579AC: .4byte gUnknown_3005030 +_080579AC: .4byte gFieldLinkPlayerCount _080579B0: .4byte gUnknown_3000E80 _080579B4: adds r1, 0x1 @@ -6499,7 +6499,7 @@ sub_8057EC0: @ 8057EC0 cmp r2, r1 bne _08057EE6 ldr r1, _08057F08 @ =gUnknown_3000E80 - ldr r0, _08057F0C @ =gUnknown_300502C + ldr r0, _08057F0C @ =gLocalLinkPlayerId ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -6511,7 +6511,7 @@ _08057EE6: cmp r1, r0 bne _08057F14 ldr r1, _08057F08 @ =gUnknown_3000E80 - ldr r0, _08057F0C @ =gUnknown_300502C + ldr r0, _08057F0C @ =gLocalLinkPlayerId ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -6524,7 +6524,7 @@ _08057EFC: _08057F00: .4byte gUnknown_3000E84 _08057F04: .4byte sub_8057E1C _08057F08: .4byte gUnknown_3000E80 -_08057F0C: .4byte gUnknown_300502C +_08057F0C: .4byte gLocalLinkPlayerId _08057F10: .4byte sub_8057E10 _08057F14: movs r0, 0x82 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index fc7fc398d..115c9567b 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1619,7 +1619,7 @@ _0808C594: .4byte gUnknown_8418690 _0808C598: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen movs r0, 0x4 strh r0, [r5, 0x8] b _0808C69C diff --git a/asm/union_room.s b/asm/union_room.s index 6e32c7afd..5f1ff772a 100644 --- a/asm/union_room.s +++ b/asm/union_room.s @@ -5,2072 +5,6 @@ .text - thumb_func_start sub_8116D10 -sub_8116D10: @ 8116D10 - push {lr} - lsls r1, 5 - ldr r0, [r0] - adds r3, r0, r1 - ldr r0, _08116D44 @ =gUnknown_203B058 - ldrb r0, [r0] - cmp r0, 0x4 - bne _08116D56 - ldrb r0, [r3, 0x1] - movs r1, 0x3C - ands r1, r0 - cmp r1, 0x10 - beq _08116D56 - cmp r1, 0x14 - beq _08116D56 - ldr r0, _08116D48 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x9] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08116D4C - movs r0, 0x1 - b _08116D5C - .align 2, 0 -_08116D44: .4byte gUnknown_203B058 -_08116D48: .4byte gSaveBlock2Ptr -_08116D4C: - ldrb r1, [r3] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08116D5A -_08116D56: - movs r0, 0 - b _08116D5C -_08116D5A: - movs r0, 0x2 -_08116D5C: - pop {r1} - bx r1 - thumb_func_end sub_8116D10 - - thumb_func_start sub_8116D60 -sub_8116D60: @ 8116D60 - push {r4,r5,lr} - adds r4, r0, 0 - strb r1, [r4, 0xF] - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldrb r0, [r4, 0xE] - bl RedrawListMenu - ldr r5, _08116DD4 @ =gStringVar1 - ldrb r0, [r4, 0xF] - lsls r0, 5 - ldr r1, [r4] - adds r1, r0 - adds r1, 0x10 - adds r0, r5, 0 - bl StringCopy7 - ldr r1, [r4] - ldrb r0, [r4, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r5, 0 - bl ConvertInternationalString - ldr r1, _08116DD8 @ =gUnknown_84570C8 - ldr r0, _08116DDC @ =gSpecialVar_0x8004 - ldrh r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - ldrb r1, [r4, 0xF] - lsls r1, 5 - ldr r0, [r4] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBF54 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08116DD4: .4byte gStringVar1 -_08116DD8: .4byte gUnknown_84570C8 -_08116DDC: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8116D60 - - thumb_func_start sub_8116DE0 -sub_8116DE0: @ 8116DE0 - push {lr} - ldr r0, _08116E0C @ =sub_8116E1C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08116E10 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _08116E14 @ =gTasks+0x8 - adds r1, r2 - str r1, [r3] - movs r2, 0 - strb r2, [r1, 0x8] - strb r2, [r1, 0x9] - ldr r2, _08116E18 @ =gUnknown_3002028 - str r1, [r2] - pop {r1} - bx r1 - .align 2, 0 -_08116E0C: .4byte sub_8116E1C -_08116E10: .4byte gUnknown_203B05C -_08116E14: .4byte gTasks+0x8 -_08116E18: .4byte gUnknown_3002028 - thumb_func_end sub_8116DE0 - - thumb_func_start sub_8116E1C -sub_8116E1C: @ 8116E1C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08116E38 @ =gUnknown_203B05C - ldr r4, [r0] - ldrb r0, [r4, 0x8] - cmp r0, 0xB - bhi _08116F20 - lsls r0, 2 - ldr r1, _08116E3C @ =_08116E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116E38: .4byte gUnknown_203B05C -_08116E3C: .4byte _08116E40 - .align 2, 0 -_08116E40: - .4byte _08116E70 - .4byte _08116F20 - .4byte _08116EA4 - .4byte _08116EC8 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116EF8 - .4byte _08116F16 -_08116E70: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBBD8 - movs r0, 0x1 - bl sub_80FB128 - movs r0, 0x70 - bl AllocZeroed - str r0, [r4, 0x4] - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - movs r0, 0x2 - strb r0, [r4, 0x8] - b _08116F20 -_08116EA4: - ldr r0, [r4, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r4] - movs r1, 0x10 - bl sub_811A5E4 - ldr r0, [r4, 0x4] - movs r1, 0xFF - bl sub_811A054 - movs r1, 0 - strb r0, [r4, 0x11] - strb r1, [r4, 0xF] - movs r0, 0x3 - strb r0, [r4, 0x8] - b _08116F20 -_08116EC8: - bl sub_8116FE4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08116EDA - movs r0, 0x2 - bl PlaySE -_08116EDA: - ldr r0, _08116EF4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0xFF - bne _08116F20 - movs r0, 0xA - strb r0, [r4, 0x8] - b _08116F20 - .align 2, 0 -_08116EF4: .4byte gTasks -_08116EF8: - ldrb r0, [r4, 0x11] - bl DestroyTask - ldr r0, [r4] - bl Free - ldr r0, [r4, 0x4] - bl Free - bl sub_80F8DC0 - ldrb r0, [r4, 0x8] - adds r0, 0x1 - strb r0, [r4, 0x8] - b _08116F20 -_08116F16: - bl sub_80F8DC0 - adds r0, r5, 0 - bl DestroyTask -_08116F20: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8116E1C - - thumb_func_start sub_8116F28 -sub_8116F28: @ 8116F28 - push {lr} - adds r2, r0, 0 - cmp r1, 0xFF - bne _08116F34 -_08116F30: - movs r0, 0x1 - b _08116F58 -_08116F34: - cmp r1, 0xD - bhi _08116F56 - ldr r0, _08116F44 @ =gUnknown_8457094 - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08116F50 - .align 2, 0 -_08116F44: .4byte gUnknown_8457094 -_08116F48: - ldrb r0, [r1] - cmp r0, r2 - beq _08116F30 - adds r1, 0x1 -_08116F50: - ldrb r0, [r1] - cmp r0, 0xFF - bne _08116F48 -_08116F56: - movs r0, 0 -_08116F58: - pop {r1} - bx r1 - thumb_func_end sub_8116F28 - - thumb_func_start sub_8116F5C -sub_8116F5C: @ 8116F5C - push {lr} - ldr r0, [r0] - lsls r1, 5 - adds r1, r0, r1 - ldrb r2, [r1, 0x1A] - lsls r0, r2, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08116F8E - ldrb r0, [r1, 0xA] - lsrs r0, 7 - cmp r0, 0 - beq _08116F7A - movs r0, 0x3 - b _08116F90 -_08116F7A: - lsls r0, r2, 29 - cmp r0, 0 - bge _08116F84 - movs r0, 0x1 - b _08116F90 -_08116F84: - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08116F8E - movs r0, 0x2 - b _08116F90 -_08116F8E: - movs r0, 0 -_08116F90: - pop {r1} - bx r1 - thumb_func_end sub_8116F5C - - thumb_func_start sub_8116F94 -sub_8116F94: @ 8116F94 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _08116FE0 @ =gUnknown_203B05C - ldr r0, [r0] - mov r8, r0 - bl sub_8116F5C - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 5 - mov r2, r8 - ldr r3, [r2] - adds r3, r1 - str r0, [sp] - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0x8 - adds r2, r6, 0 - bl sub_811A81C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08116FE0: .4byte gUnknown_203B05C - thumb_func_end sub_8116F94 - - thumb_func_start sub_8116FE4 -sub_8116FE4: @ 8116FE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _0811704C @ =gUnknown_203B05C - ldr r6, [r0] - movs r7, 0 - movs r3, 0 -_08116FF4: - ldr r0, [r6] - lsls r5, r3, 5 - adds r2, r0, r5 - ldrb r0, [r2, 0x1A] - lsls r0, 30 - mov r8, r5 - cmp r0, 0 - beq _081170C0 - ldr r1, [r6, 0x4] - adds r0, r2, 0 - str r3, [sp] - bl sub_811A748 - adds r4, r0, 0 - ldr r3, [sp] - cmp r4, 0xFF - beq _0811708E - ldr r0, [r6] - adds r2, r0, r5 - ldrb r1, [r2, 0x1A] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _0811706C - lsls r0, r4, 3 - subs r0, r4 - lsls r4, r0, 2 - ldr r1, [r6, 0x4] - adds r1, r4 - adds r0, r2, 0 - bl sub_811A6DC - ldr r3, [sp] - cmp r0, 0 - beq _08117050 - ldr r1, [r6] - ldr r0, [r6, 0x4] - adds r1, r5 - adds r0, r4 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - b _0811707A - .align 2, 0 -_0811704C: .4byte gUnknown_203B05C -_08117050: - ldr r0, [r6] - adds r1, r0, r5 - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08117084 - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r6] - adds r0, r5 - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08117084 - movs r7, 0x2 - b _08117084 -_0811706C: - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] -_0811707A: - ldr r0, [r6] - adds r0, r5 - movs r1, 0x40 - strb r1, [r0, 0x1B] - movs r7, 0x1 -_08117084: - ldr r0, [r6] - add r0, r8 - movs r1, 0 - strh r1, [r0, 0x18] - b _081170C0 -_0811708E: - ldr r0, [r6] - adds r1, r0, r5 - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x2 - beq _081170C0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - ldr r0, [r6] - adds r2, r0, r5 - ldrh r1, [r2, 0x18] - ldr r0, _081170FC @ =0x0000012b - cmp r1, r0 - bls _081170C0 - ldrb r0, [r2, 0x1A] - movs r7, 0x4 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1A] - movs r7, 0x2 -_081170C0: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _08116FF4 - movs r5, 0 - movs r4, 0x3 -_081170CE: - ldr r0, [r6] - ldr r1, [r6, 0x4] - adds r1, r5 - movs r2, 0x10 - bl sub_811A798 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _081170E4 - movs r7, 0x1 -_081170E4: - adds r5, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _081170CE - adds r0, r7, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081170FC: .4byte 0x0000012b - thumb_func_end sub_8116FE4 - - thumb_func_start sub_8117100 -sub_8117100: @ 8117100 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl CB2_ReturnFromLinkTrade - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8117100 - - thumb_func_start sub_8117118 -sub_8117118: @ 8117118 - push {lr} - ldr r0, _0811712C @ =sub_8117100 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0811712C: .4byte sub_8117100 - thumb_func_end sub_8117118 - - thumb_func_start sub_8117130 -sub_8117130: @ 8117130 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0811716C @ =gUnknown_203B06C - mov r8, r0 - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_811B1EC - adds r7, r0, 0 - ldr r1, _08117170 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0811719C - cmp r0, 0x1 - bgt _08117174 - cmp r0, 0 - beq _0811717E - b _0811725C - .align 2, 0 -_0811716C: .4byte gUnknown_203B06C -_08117170: .4byte gTasks -_08117174: - cmp r0, 0x2 - beq _081171D8 - cmp r0, 0x3 - beq _08117210 - b _0811725C -_0811717E: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08117198 @ =gPlayerParty - adds r1, r0 - movs r0, 0 - movs r2, 0x64 - bl SendBlock - b _0811725C - .align 2, 0 -_08117198: .4byte gPlayerParty -_0811719C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0811725C - bl GetMultiplayerId - adds r1, r0, 0 - ldr r0, _081171D0 @ =gEnemyParty - movs r2, 0x1 - eors r1, r2 - lsls r1, 24 - lsrs r1, 16 - ldr r2, _081171D4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x64 - bl memcpy - movs r0, 0x32 - bl IncrementGameStat - bl ResetBlockReceivedFlags - b _081171FA - .align 2, 0 -_081171D0: .4byte gEnemyParty -_081171D4: .4byte gBlockRecvBuffer -_081171D8: - ldr r4, _08117204 @ =gBlockSendBuffer - ldr r0, _08117208 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _0811720C @ =0x00002cd0 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xDC - bl memcpy - movs r0, 0 - adds r1, r4, 0 - movs r2, 0xDC - bl SendBlock - lsls r0, 24 - cmp r0, 0 - beq _0811725C -_081171FA: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0811725C - .align 2, 0 -_08117204: .4byte gBlockSendBuffer -_08117208: .4byte gSaveBlock1Ptr -_0811720C: .4byte 0x00002cd0 -_08117210: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0811725C - ldr r4, _08117268 @ =gLinkPartnerMail - bl GetMultiplayerId - adds r1, r0, 0 - movs r0, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 16 - ldr r0, _0811726C @ =gBlockRecvBuffer - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xD8 - bl memcpy - bl ResetBlockReceivedFlags - ldr r1, _08117270 @ =gSelectedTradeMonPositions - strb r7, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r1, _08117274 @ =gMain - ldr r0, _08117278 @ =CB2_ReturnToField - str r0, [r1, 0x8] - ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade - bl SetMainCallback2 - mov r0, r8 - bl sub_811B148 - adds r0, r6, 0 - bl DestroyTask -_0811725C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08117268: .4byte gLinkPartnerMail -_0811726C: .4byte gBlockRecvBuffer -_08117270: .4byte gSelectedTradeMonPositions -_08117274: .4byte gMain -_08117278: .4byte CB2_ReturnToField -_0811727C: .4byte CB2_InitTradeAnim_LinkTrade - thumb_func_end sub_8117130 - - thumb_func_start sub_8117280 -sub_8117280: @ 8117280 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _081172A4 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081172A8 - cmp r0, 0x1 - beq _081172C0 - b _0811734A - .align 2, 0 -_081172A4: .4byte gTasks -_081172A8: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _081172B8 - movs r0, 0x2 - bl sub_800A474 -_081172B8: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0811734A -_081172C0: - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_800A8D4 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _0811734A - movs r4, 0 - ldr r0, _081172E0 @ =gTrainerCards - adds r7, r0, 0 - adds r7, 0x38 - ldr r6, _081172E4 @ =gLinkPlayers - adds r5, r0, 0 - b _08117302 - .align 2, 0 -_081172E0: .4byte gTrainerCards -_081172E4: .4byte gLinkPlayers -_081172E8: - lsls r0, r4, 8 - ldr r1, _08117338 @ =gBlockRecvBuffer - adds r1, r0, r1 - adds r0, r5, 0 - movs r2, 0x60 - bl memcpy - ldrh r0, [r6] - strb r0, [r7] - adds r7, 0x60 - adds r6, 0x1C - adds r5, 0x60 - adds r4, 0x1 -_08117302: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _081172E8 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0811733C - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _08117338 @ =gBlockRecvBuffer - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x60 - ldrh r0, [r0] - bl sub_81446D0 - b _08117340 - .align 2, 0 -_08117338: .4byte gBlockRecvBuffer -_0811733C: - bl sub_81446C4 -_08117340: - bl ResetBlockReceivedFlags - mov r0, r8 - bl DestroyTask -_0811734A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8117280 - - thumb_func_start sub_8117354 -sub_8117354: @ 8117354 - push {r4,lr} - ldr r0, _0811736C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08117370 - cmp r0, 0x1 - beq _08117384 - b _081173A2 - .align 2, 0 -_0811736C: .4byte gMain -_08117370: - ldr r0, _08117380 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081173A2 - .align 2, 0 -_08117380: .4byte sub_8117280 -_08117384: - ldr r0, _081173B8 @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _081173A2 - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081173BC @ =CB2_ReturnToField - bl ShowTrainerCardInLink -_081173A2: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081173B8: .4byte sub_8117280 -_081173BC: .4byte CB2_ReturnToField - thumb_func_end sub_8117354 - - thumb_func_start sub_81173C0 -sub_81173C0: @ 81173C0 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r5, _0811742C @ =gLinkPlayers - ldr r0, _08117430 @ =0x00002211 - str r0, [r5, 0x14] - bl GetMultiplayerId - adds r4, r0, 0 - bl GetMultiplayerId - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - bl GetMultiplayerId - adds r4, r0, 0 - bl GetMultiplayerId - movs r2, 0x1 - eors r4, r2 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - adds r1, r5 - eors r0, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - ldr r1, _08117434 @ =gMain - ldr r0, _08117438 @ =sub_8081668 - str r0, [r1, 0x8] - ldr r0, _0811743C @ =gBattleTypeFlags - str r6, [r0] - bl PlayBattleBGM - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811742C: .4byte gLinkPlayers -_08117430: .4byte 0x00002211 -_08117434: .4byte gMain -_08117438: .4byte sub_8081668 -_0811743C: .4byte gBattleTypeFlags - thumb_func_end sub_81173C0 - - thumb_func_start sub_8117440 -sub_8117440: @ 8117440 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r3, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _081174AC @ =0x0000406f - adds r1, r3, 0 - bl VarSet - ldr r6, _081174B0 @ =gSaveBlock1Ptr - ldr r1, [r6] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - mov r8, r2 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - str r5, [sp] - adds r3, r4, 0 - bl SetWarpDestination - ldr r0, [r6] - movs r1, 0x4 - ldrsb r1, [r0, r1] - movs r2, 0x5 - ldrsb r2, [r0, r2] - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0 - mov r3, r8 - bl SetDynamicWarpWithCoords - bl WarpIntoMap - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081174AC: .4byte 0x0000406f -_081174B0: .4byte gSaveBlock1Ptr - thumb_func_end sub_8117440 - - thumb_func_start sub_81174B4 -sub_81174B4: @ 81174B4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - mov r8, r2 - adds r6, r3, 0 - ldr r1, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08117524 @ =gSpecialVar_0x8004 - strh r1, [r0] - ldr r0, _08117528 @ =0x0000406f - bl VarSet - bl GetLinkPlayerCount - ldr r1, _0811752C @ =gUnknown_3005030 - strb r0, [r1] - bl GetMultiplayerId - ldr r1, _08117530 @ =gUnknown_300502C - strb r0, [r1] - bl SetCableClubWarp - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - movs r2, 0x1 - negs r2, r2 - mov r0, r8 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - lsls r6, 24 - asrs r6, 24 - str r6, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - mov r3, r8 - bl SetWarpDestination - bl WarpIntoMap - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08117524: .4byte gSpecialVar_0x8004 -_08117528: .4byte 0x0000406f -_0811752C: .4byte gUnknown_3005030 -_08117530: .4byte gUnknown_300502C - thumb_func_end sub_81174B4 - - thumb_func_start sub_8117534 -sub_8117534: @ 8117534 - push {r4,lr} - ldr r0, _0811754C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08117550 - cmp r0, 0x1 - beq _08117564 - b _08117576 - .align 2, 0 -_0811754C: .4byte gMain -_08117550: - ldr r0, _08117560 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08117576 - .align 2, 0 -_08117560: .4byte sub_8117280 -_08117564: - ldr r0, _0811758C @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08117576 - ldr r0, _08117590 @ =sub_8056788 - bl SetMainCallback2 -_08117576: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811758C: .4byte sub_8117280 -_08117590: .4byte sub_8056788 - thumb_func_end sub_8117534 - - thumb_func_start sub_8117594 -sub_8117594: @ 8117594 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl TrainerCard_GenerateCardForLinkPlayer - cmp r5, 0 - beq _081175AE - bl sub_81440E8 - adds r1, r4, 0 - adds r1, 0x60 - strh r0, [r1] - b _081175B4 -_081175AE: - adds r0, r4, 0 - adds r0, 0x60 - strh r5, [r0] -_081175B4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8117594 - - thumb_func_start sub_81175BC -sub_81175BC: @ 81175BC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81446C4 - ldr r0, _081175DC @ =gUnknown_203B058 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xD - bhi _08117620 - lsls r0, 2 - ldr r1, _081175E0 @ =_081175E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081175DC: .4byte gUnknown_203B058 -_081175E0: .4byte _081175E4 - .align 2, 0 -_081175E4: - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _08117620 - .4byte _08117620 - .4byte _08117620 - .4byte _08117620 - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _08117620 - .4byte _0811761C - .4byte _0811761C -_0811761C: - bl RecordMixTrainerNames -_08117620: - ldr r0, _08117638 @ =gUnknown_203B058 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x50 - bls _0811762C - b _081178E0 -_0811762C: - lsls r0, 2 - ldr r1, _0811763C @ =_08117640 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08117638: .4byte gUnknown_203B058 -_0811763C: .4byte _08117640 - .align 2, 0 -_08117640: - .4byte _081177A0 - .4byte _081177C8 - .4byte _081177F0 - .4byte _08117818 - .4byte _08117854 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117878 - .4byte _08117890 - .4byte _081178B0 - .4byte _081178C8 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117784 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117844 - .4byte _08117854 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117878 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117784 -_08117784: - bl CleanupOverworldWindowsAndTilemaps - ldr r1, _08117798 @ =gMain - ldr r0, _0811779C @ =sub_811C1C8 - str r0, [r1, 0x8] - movs r0, 0x2 - bl InitChooseHalfPartyForBattle - b _081178E0 - .align 2, 0 -_08117798: .4byte gMain -_0811779C: .4byte sub_811C1C8 -_081177A0: - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _081177C4 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - b _0811782E - .align 2, 0 -_081177C4: .4byte gBlockSendBuffer -_081177C8: - bl CleanupOverworldWindowsAndTilemaps - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r0, _081177EC @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - b _0811782E - .align 2, 0 -_081177EC: .4byte gBlockSendBuffer -_081177F0: - bl CleanupOverworldWindowsAndTilemaps - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r0, _08117814 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - movs r0, 0x5 - str r0, [sp] - movs r0, 0 - movs r1, 0x3 - b _0811782C - .align 2, 0 -_08117814: .4byte gBlockSendBuffer -_08117818: - ldr r0, _0811783C @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - bl CleanupOverworldWindowsAndTilemaps - movs r0, 0x3 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 -_0811782C: - movs r2, 0x5 -_0811782E: - movs r3, 0x8 - bl sub_81174B4 - ldr r0, _08117840 @ =sub_8117534 - bl SetMainCallback2 - b _081178E0 - .align 2, 0 -_0811783C: .4byte gBlockSendBuffer -_08117840: .4byte sub_8117534 -_08117844: - ldr r0, _08117850 @ =sub_8117130 - movs r1, 0 - bl CreateTask - b _081178E0 - .align 2, 0 -_08117850: .4byte sub_8117130 -_08117854: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08117864 - bl sub_80F8CFC - b _08117872 -_08117864: - bl sub_80F8D14 - movs r0, 0x45 - movs r1, 0 - movs r2, 0x1 - bl sub_80FAF58 -_08117872: - bl sub_8128420 - b _081178E0 -_08117878: - ldr r0, _08117888 @ =gBlockSendBuffer - movs r1, 0 - bl sub_8117594 - ldr r0, _0811788C @ =sub_8117354 - bl SetMainCallback2 - b _081178E0 - .align 2, 0 -_08117888: .4byte gBlockSendBuffer -_0811788C: .4byte sub_8117354 -_08117890: - movs r0, 0x8 - movs r1, 0x5 - movs r2, 0x1 - bl sub_8117440 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081178AC @ =CB2_LoadMap - bl sub_8147AA8 - b _081178E0 - .align 2, 0 -_081178AC: .4byte CB2_LoadMap -_081178B0: - movs r0, 0x7 - movs r1, 0x9 - movs r2, 0x1 - bl sub_8117440 - ldr r0, _081178C4 @ =CB2_LoadMap - bl sub_814B754 - b _081178E0 - .align 2, 0 -_081178C4: .4byte CB2_LoadMap -_081178C8: - movs r0, 0x8 - movs r1, 0x5 - movs r2, 0x1 - bl sub_8117440 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081178F8 @ =CB2_LoadMap - bl sub_81507FC -_081178E0: - adds r0, r4, 0 - bl DestroyTask - ldr r1, _081178FC @ =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] - bl ScriptContext2_Disable - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081178F8: .4byte CB2_LoadMap -_081178FC: .4byte gSpecialVar_Result - thumb_func_end sub_81175BC - - thumb_func_start sub_8117900 -sub_8117900: @ 8117900 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08117924 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08117944 - cmp r0, 0x1 - bgt _08117928 - cmp r0, 0 - beq _08117932 - b _08117988 - .align 2, 0 -_08117924: .4byte gTasks+0x8 -_08117928: - cmp r0, 0x2 - beq _08117958 - cmp r0, 0x3 - beq _08117974 - b _08117988 -_08117932: - ldr r1, _08117940 @ =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] - bl EnableBothScriptContexts - b _08117968 - .align 2, 0 -_08117940: .4byte gSpecialVar_Result -_08117944: - bl ScriptContext1_IsScriptSetUp - lsls r0, 24 - cmp r0, 0 - bne _08117988 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - b _08117968 -_08117958: - ldr r0, _08117970 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08117988 - bl sub_800AB9C -_08117968: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _08117988 - .align 2, 0 -_08117970: .4byte gPaletteFade -_08117974: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08117988 - adds r0, r5, 0 - bl DestroyTask - bl sub_81179A4 -_08117988: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8117900 - - thumb_func_start sub_8117990 -sub_8117990: @ 8117990 - push {lr} - ldr r0, _081179A0 @ =sub_8117900 - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_081179A0: .4byte sub_8117900 - thumb_func_end sub_8117990 - - thumb_func_start sub_81179A4 -sub_81179A4: @ 81179A4 - push {lr} - ldr r0, _081179C4 @ =sub_81175BC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081179C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_081179C4: .4byte sub_81175BC -_081179C8: .4byte gTasks - thumb_func_end sub_81179A4 - - thumb_func_start MEvent_CreateTask_Leader -MEvent_CreateTask_Leader: @ 81179CC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _081179FC @ =sub_8117A0C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08117A00 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08117A04 @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - movs r2, 0 - strb r2, [r1, 0xC] - strb r2, [r1, 0xD] - strb r4, [r1, 0x18] - ldr r0, _08117A08 @ =gSpecialVar_Result - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081179FC: .4byte sub_8117A0C -_08117A00: .4byte gUnknown_203B05C -_08117A04: .4byte gTasks+0x8 -_08117A08: .4byte gSpecialVar_Result - thumb_func_end MEvent_CreateTask_Leader - - thumb_func_start sub_8117A0C -sub_8117A0C: @ 8117A0C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08117A2C @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0xC] - cmp r0, 0x11 - bls _08117A20 - b _08117ECA -_08117A20: - lsls r0, 2 - ldr r1, _08117A30 @ =_08117A34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08117A2C: .4byte gUnknown_203B05C -_08117A30: .4byte _08117A34 - .align 2, 0 -_08117A34: - .4byte _08117A7C - .4byte _08117AB8 - .4byte _08117B7C - .4byte _08117BAC - .4byte _08117BBC - .4byte _08117C0C - .4byte _08117BE4 - .4byte _08117C12 - .4byte _08117CB2 - .4byte _08117D94 - .4byte _08117DA4 - .4byte _08117DBA - .4byte _08117DD2 - .4byte _08117DEE - .4byte _08117E26 - .4byte _08117E4C - .4byte _08117E80 - .4byte _08117EBA -_08117A7C: - ldr r1, _08117AB0 @ =gUnknown_203B058 - ldrb r0, [r5, 0x18] - strb r0, [r1] - ldr r1, _08117AB4 @ =gUnknown_203B059 - movs r0, 0x2 - strb r0, [r1] - ldrb r0, [r5, 0x18] - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - movs r0, 0 - movs r1, 0 - bl sub_80FAF74 - bl sub_800B1F4 - bl OpenLink - movs r0, 0x2 - bl sub_80FBB8C - movs r0, 0x1 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117AB0: .4byte gUnknown_203B058 -_08117AB4: .4byte gUnknown_203B059 -_08117AB8: - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5, 0x8] - ldr r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r5] - movs r1, 0x5 - bl sub_811A5E4 - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x10 - bl LinkRfu3_SetGnameUnameFromStaticBuffers - ldr r1, [r5] - movs r3, 0 - movs r0, 0 - strh r0, [r1, 0x18] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - subs r0, 0x4 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1A] - ldr r0, [r5] - strb r3, [r0, 0x1B] - ldr r0, [r5, 0x4] - movs r1, 0xFF - bl sub_811A054 - strb r0, [r5, 0x17] - ldr r0, _08117B6C @ =gUnknown_8456CFC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - bl GetMysteryGiftBaseBlock - lsls r0, 16 - ldr r2, _08117B70 @ =0x0000ffff - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl AddWindow - strb r0, [r5, 0xF] - ldrb r0, [r5, 0xF] - bl MG_DrawTextBorder - ldr r0, _08117B74 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _08117B78 @ =gUnknown_8456D34 - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldrb r1, [r5, 0xF] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r5, 0x12] - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - strb r0, [r5, 0x13] - b _08117C02 - .align 2, 0 -_08117B6C: .4byte gUnknown_8456CFC -_08117B70: .4byte 0x0000ffff -_08117B74: .4byte gMultiuseListMenuTemplate -_08117B78: .4byte gUnknown_8456D34 -_08117B7C: - ldr r0, _08117B9C @ =gStringVar1 - ldr r2, _08117BA0 @ =gUnknown_8456C74 - ldr r4, _08117BA4 @ =gUnknown_203B058 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r0, _08117BA8 @ =gStringVar4 - ldrb r1, [r4] - bl sub_811599C - movs r0, 0x3 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117B9C: .4byte gStringVar1 -_08117BA0: .4byte gUnknown_8456C74 -_08117BA4: .4byte gUnknown_203B058 -_08117BA8: .4byte gStringVar4 -_08117BAC: - ldr r0, _08117BB8 @ =gStringVar4 - bl AddTextPrinterToWindow1 - movs r0, 0x4 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117BB8: .4byte gStringVar4 -_08117BBC: - adds r0, r5, 0 - movs r1, 0x5 - movs r2, 0x6 - bl sub_8116444 - ldr r0, _08117BE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08117BD4 - b _08117ECA -_08117BD4: - movs r0, 0xD - strb r0, [r5, 0xC] - bl DestroyWirelessStatusIndicatorSprite - b _08117ECA - .align 2, 0 -_08117BE0: .4byte gMain -_08117BE4: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08117C08 @ =gUnknown_84577F8 - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - bne _08117BF4 - b _08117ECA -_08117BF4: - ldr r0, [r5] - bl sub_81165E8 - strb r0, [r5, 0x13] - ldrb r0, [r5, 0x12] - bl RedrawListMenu -_08117C02: - movs r0, 0x2 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117C08: .4byte gUnknown_84577F8 -_08117C0C: - movs r0, 0x7 - strb r0, [r5, 0xC] - b _08117ECA -_08117C12: - adds r0, r5, 0 - adds r0, 0xD - adds r1, r5, 0 - adds r1, 0x14 - ldr r3, _08117C38 @ =gStringVar4 - movs r2, 0 - bl mevent_message_print_and_prompt_yes_no - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _08117C42 - cmp r4, 0 - bgt _08117C3C - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08117C84 - b _08117ECA - .align 2, 0 -_08117C38: .4byte gStringVar4 -_08117C3C: - cmp r4, 0x1 - beq _08117C84 - b _08117ECA -_08117C42: - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - strb r4, [r1, 0x1B] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - movs r0, 0x5 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x5 - b _08117CA8 -_08117C84: - movs r0, 0x6 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x6 -_08117CA8: - bl sub_80FA670 - movs r0, 0x8 - strb r0, [r5, 0xC] - b _08117ECA -_08117CB2: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r5, 0x13] - lsls r2, 5 - ldr r1, [r5] - adds r1, r2 - adds r1, 0x10 - bl sub_80FA6FC - adds r4, r0, 0 - cmp r4, 0x1 - bne _08117D82 - ldrb r0, [r5, 0x19] - cmp r0, 0x5 - bne _08117D3C - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - movs r0, 0 - strb r0, [r1, 0x1B] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - ldrb r0, [r5, 0x13] - adds r0, 0x1 - strb r0, [r5, 0x13] - ldr r4, _08117D30 @ =gStringVar1 - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r1, r0 - subs r1, 0x10 - adds r0, r4, 0 - bl StringCopy7 - ldr r1, [r5] - ldrb r0, [r5, 0x13] - subs r0, 0x1 - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08117D34 @ =gStringVar4 - ldr r1, _08117D38 @ =gUnknown_8457554 - bl StringExpandPlaceholders - movs r0, 0x9 - strb r0, [r5, 0xC] - bl sub_80F8F5C - b _08117D7C - .align 2, 0 -_08117D30: .4byte gStringVar1 -_08117D34: .4byte gStringVar4 -_08117D38: .4byte gUnknown_8457554 -_08117D3C: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBD4C - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - ldrb r2, [r1, 0x1A] - movs r0, 0x4 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1A] - ldr r0, [r5] - bl sub_81165E8 - ldrb r0, [r5, 0x12] - bl RedrawListMenu - movs r0, 0x2 - strb r0, [r5, 0xC] -_08117D7C: - movs r0, 0 - strb r0, [r5, 0x19] - b _08117ECA -_08117D82: - cmp r4, 0x2 - beq _08117D88 - b _08117ECA -_08117D88: - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - strb r4, [r5, 0xC] - b _08117ECA -_08117D94: - ldr r0, _08117DA0 @ =gStringVar4 - bl AddTextPrinterToWindow1 - movs r0, 0xA - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117DA0: .4byte gStringVar4 -_08117DA4: - ldrb r0, [r5, 0xE] - adds r0, 0x1 - strb r0, [r5, 0xE] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - bhi _08117DB4 - b _08117ECA -_08117DB4: - movs r0, 0xB - strb r0, [r5, 0xC] - b _08117ECA -_08117DBA: - adds r0, r5, 0 - movs r1, 0x5 - movs r2, 0x6 - bl sub_8116444 - lsls r0, 24 - cmp r0, 0 - beq _08117DCC - b _08117ECA -_08117DCC: - movs r0, 0xC - strb r0, [r5, 0xC] - b _08117ECA -_08117DD2: - bl sub_80F8F40 - lsls r0, 24 - cmp r0, 0 - beq _08117DE8 - movs r0, 0 - bl sub_80F8F7C - movs r0, 0xF - strb r0, [r5, 0xC] - b _08117ECA -_08117DE8: - movs r0, 0x6 - strb r0, [r5, 0xC] - b _08117ECA -_08117DEE: - bl DestroyWirelessStatusIndicatorSprite - bl sub_80F8DC0 - ldrb r0, [r5, 0x12] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xF] - bl RemoveWindow - ldrb r0, [r5, 0x17] - bl DestroyTask - ldr r0, [r5, 0x8] - bl Free - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - b _08117EB2 -_08117E26: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08117E44 @ =gUnknown_84571B8 - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - beq _08117ECA - adds r0, r4, 0 - bl DestroyTask - ldr r1, _08117E48 @ =gSpecialVar_Result - movs r0, 0x5 - strh r0, [r1] - b _08117ECA - .align 2, 0 -_08117E44: .4byte gUnknown_84571B8 -_08117E48: .4byte gSpecialVar_Result -_08117E4C: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08117E64 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08117E6A -_08117E64: - movs r0, 0xD - strb r0, [r5, 0xC] - b _08117ECA -_08117E6A: - ldr r0, _08117E7C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08117ECA - movs r0, 0x1 - bl sub_80FAFE0 - b _08117EB2 - .align 2, 0 -_08117E7C: .4byte gReceivedRemoteLinkPlayers -_08117E80: - ldrb r0, [r5, 0x12] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xF] - bl RemoveWindow - ldrb r0, [r5, 0x17] - bl DestroyTask - ldr r0, [r5, 0x8] - bl Free - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - bl sub_800AB9C -_08117EB2: - ldrb r0, [r5, 0xC] - adds r0, 0x1 - strb r0, [r5, 0xC] - b _08117ECA -_08117EBA: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08117ECA - adds r0, r4, 0 - bl DestroyTask -_08117ECA: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8117A0C - thumb_func_start MEvent_CreateTask_CardOrNewsWithFriend MEvent_CreateTask_CardOrNewsWithFriend: @ 8117ED4 push {r4,lr} diff --git a/include/berry_crush.h b/include/berry_crush.h new file mode 100644 index 000000000..2583aba61 --- /dev/null +++ b/include/berry_crush.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_CRUSH_H +#define GUARD_BERRY_CRUSH_H + +void sub_814B754(MainCallback callback); + +#endif //GUARD_BERRY_CRUSH_H diff --git a/include/cable_club.h b/include/cable_club.h index 5375c2210..c1dbab1a5 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -10,5 +10,6 @@ // Exported ROM declarations void sub_8081A90(u8 taskId); u8 sub_8081150(void); +void sub_8081668(void); #endif //GUARD_CABLE_CLUB_H diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h new file mode 100644 index 000000000..59736ba7a --- /dev/null +++ b/include/dodrio_berry_picking.h @@ -0,0 +1,6 @@ +#ifndef GUARD_DODRIO_BERRY_PICKING_H +#define GUARD_DODRIO_BERRY_PICKING_H + +void sub_81507FC(u16 species, MainCallback callback); + +#endif //GUARD_DODRIO_BERRY_PICKING_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index ecb622de5..57a2fab66 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -7,5 +7,6 @@ extern u32 gUnknown_3005078; void RestartWildEncounterImmunitySteps(void); void ClearPoisonStepCounter(void); +void SetCableClubWarp(void); #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_weather.h b/include/field_weather.h index 2709a7298..de2543edb 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -3,7 +3,7 @@ #include "global.h" -void fade_screen(u8, s8); +void FadeScreen(u8, s8); void SetSav1Weather(u32); u8 GetSav1Weather(void); diff --git a/include/link.h b/include/link.h index 4175ac97f..770a60f44 100644 --- a/include/link.h +++ b/include/link.h @@ -278,5 +278,6 @@ bool8 HandleLinkConnection(void); void sub_800B0B4(void); void sub_800B110(u32 who); void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); +u8 sub_800A8D4(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index a0db0a425..6f7e01678 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -235,7 +235,7 @@ bool8 IsLinkRfuTaskFinished(void); void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); -void MEvent_CreateTask_Leader(u8); +void MEvent_CreateTask_Leader(u32 arg0); void sub_80F9E2C(void * data); u8 sub_8116DE0(void); void sub_80FBB4C(void); @@ -309,6 +309,12 @@ void sub_80FBD4C(const u8 *ptr, u16 a1); void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname); void sub_80FBBD8(void); void sub_80FA6BC(void); +void sub_80FBF54(const u8 *src, u16 trainerId); +void sub_80FB008(u8 a0, u32 a1, u32 a2); +void RecordMixTrainerNames(void); +void sub_80F8CFC(); +void sub_80F8D14(); +void sub_80FAF74(bool32 a0, bool32 a1); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/include/mevent.h b/include/mevent.h index 81caeb42f..eb7cf77f3 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -70,5 +70,8 @@ void sub_8143D24(void); u16 sub_81445C0(u32 command); void sub_8144714(u32 a0, u32 a1); u16 *GetMEventProfileECWordsMaybe(void); +void sub_81446C4(void); +bool32 sub_81446D0(u16 a0); +u16 GetWonderCardFlagID(void); #endif //GUARD_MEVENT_H diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h index 32624d602..bd790b36e 100644 --- a/include/mystery_gift_menu.h +++ b/include/mystery_gift_menu.h @@ -7,5 +7,8 @@ void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void); void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32); void c2_mystery_gift(void); void c2_mystery_gift_e_reader_run(void); +s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str); +void MG_DrawTextBorder(u8 windowId); +u16 GetMysteryGiftBaseBlock(void); #endif //GUARD_MYSTERY_GIFT_MENU_H diff --git a/include/overworld.h b/include/overworld.h index c24b63cf9..a7031e56d 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,7 +62,8 @@ extern struct WarpData gUnknown_2031DB4; extern struct WarpData gUnknown_2031DBC; extern u8 gUnknown_2031DE0; -extern u8 gUnknown_300502C; +extern u8 gFieldLinkPlayerCount; +extern u8 gLocalLinkPlayerId; void IncrementGameStat(u8 index); diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 8623b223a..0e9094752 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -5,5 +5,6 @@ void ResetPokeJumpResults(void); bool32 IsSpeciesAllowedInPokemonJump(u16 species); +void sub_8147AA8(u16 species, MainCallback callback); #endif // GUARD_POKEMON_JUMP_H diff --git a/include/save_location.h b/include/save_location.h index fb71ab728..c8e362231 100644 --- a/include/save_location.h +++ b/include/save_location.h @@ -6,6 +6,7 @@ #define POKECENTER_SAVEWARP (1 << 1) #define LOBBY_SAVEWARP (1 << 2) #define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3) +#define CHAMPION_SAVEWARP (1 << 7) void TrySetMapSaveWarpStatus(void); bool32 IsCurMapPokeCenter(void); diff --git a/include/union_room.h b/include/union_room.h index d57683a8a..9221b6bf5 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -134,7 +134,7 @@ union UnkUnion_Main struct UnkStruct_URoom *uRoom; }; -struct TradeUnkStruct +struct UnionRoomTrade { u16 field_0; u16 type; diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 17e482525..66daac376 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -2,6 +2,7 @@ #define GUARD_UNION_ROOM_CHAT_H void sub_801DD98(void); +void sub_8128420(void); void copy_strings_to_sav1(void); #endif // GUARD_UNION_ROOM_CHAT_H diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h new file mode 100644 index 000000000..12b7773e7 --- /dev/null +++ b/include/union_room_player_avatar.h @@ -0,0 +1,6 @@ +#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H +#define GUARD_UNION_ROOM_PLAYER_AVATAR_H + +void sub_811C1C8(void); + +#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H diff --git a/src/credits.c b/src/credits.c index a0138e57a..ceb2028f9 100644 --- a/src/credits.c +++ b/src/credits.c @@ -920,7 +920,7 @@ static s32 RollCredits(void) case CREDITSSCRCMD_MON: sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS; sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; - fade_screen(1, 0); + FadeScreen(1, 0); break; case CREDITSSCRCMD_THEENDGFX: sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS; @@ -1342,7 +1342,7 @@ static s32 RollCredits(void) "\tstrb r0, [r2, 0x9]\n" "\tmovs r0, 0x1\n" "\tmovs r1, 0\n" - "\tbl fade_screen\n" + "\tbl FadeScreen\n" "\tb _080F3E94\n" "\t.align 2, 0\n" "_080F3E50: .4byte sCreditsMgr\n" diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index dbc5f23b5..0af5f462c 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -56,12 +56,12 @@ void pal_fill_for_maplights(void) { case 0: palette_bg_faded_fill_black(); - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_faded_fill_black(); break; case 1: palette_bg_faded_fill_white(); - fade_screen(2, 0); + FadeScreen(2, 0); palette_bg_faded_fill_white(); break; } @@ -73,12 +73,12 @@ static void sub_807DBAC(void) { case 0: palette_bg_faded_fill_black(); - fade_screen(0, 3); + FadeScreen(0, 3); palette_bg_faded_fill_black(); break; case 1: palette_bg_faded_fill_white(); - fade_screen(2, 3); + FadeScreen(2, 3); palette_bg_faded_fill_white(); break; } @@ -87,7 +87,7 @@ static void sub_807DBAC(void) void sub_807DC00(void) { palette_bg_faded_fill_black(); - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_faded_fill_black(); } @@ -95,16 +95,16 @@ void sub_807DC18(void) { const struct MapHeader *header = warp1_get_mapheader(); if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE)) - fade_screen(1, 0); + FadeScreen(1, 0); else { switch (sub_80C9D7C(GetCurrentMapType(), header->mapType)) { case 0: - fade_screen(1, 0); + FadeScreen(1, 0); break; case 1: - fade_screen(3, 0); + FadeScreen(3, 0); break; } } @@ -115,10 +115,10 @@ static void sub_807DC70(void) switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType)) { case 0: - fade_screen(1, 3); + FadeScreen(1, 3); break; case 1: - fade_screen(3, 3); + FadeScreen(3, 3); break; } } @@ -654,7 +654,7 @@ static void sub_807E678(u8 taskId) { case 0: ClearLinkCallback_2(); - fade_screen(1, 0); + FadeScreen(1, 0); sub_8055F88(); PlaySE(SE_KAIDAN); data[0]++; diff --git a/src/item_use.c b/src/item_use.c index fc5703a75..57771754a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -458,7 +458,7 @@ void FieldUseFunc_TmCase(u8 taskId) else { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_InitTMCaseFromField; } } @@ -489,7 +489,7 @@ void FieldUseFunc_BerryPouch(u8 taskId) else { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_InitBerryPouchFromField; } } @@ -532,7 +532,7 @@ void FieldUseFunc_TeachyTv(u8 taskId) else { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_InitTeachyTvFromField; } } @@ -662,7 +662,7 @@ void FieldUseFunc_TownMap(u8 taskId) else { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = sub_80A1CC0; } } @@ -694,7 +694,7 @@ void FieldUseFunc_FameChecker(u8 taskId) else { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = sub_80A1D68; } } diff --git a/src/mevent.c b/src/mevent.c index b22d02cbc..c8ce39e23 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -652,7 +652,7 @@ void BlankMEventBuffer2(void) gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0; } -u16 sub_81440E8(void) +u16 GetWonderCardFlagID(void) { if (ValidateReceivedWonderCard()) return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00; @@ -674,7 +674,7 @@ bool32 sub_8144124(u16 a0) bool32 CheckReceivedGiftFromWonderCard(void) { - u16 value = sub_81440E8(); + u16 value = GetWonderCardFlagID(); if (!sub_8144124(value)) return FALSE; if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE) diff --git a/src/player_pc.c b/src/player_pc.c index 63870c86a..928676844 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -331,7 +331,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId) static void Task_PlayerPcDepositItem(u8 taskId) { gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag; - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_ReturnToItemStorageSubmenu(u8 taskId) @@ -394,7 +394,7 @@ static void Task_WithdrawItemBeginFade(u8 taskId) { gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage; ItemPc_SetInitializedFlag(0); - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_PlayerPcCancel(u8 taskId) @@ -556,7 +556,7 @@ static void Task_MailSubmenuHandleInput(u8 taskId) static void Task_PlayerPcReadMail(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail; } @@ -663,7 +663,7 @@ static void Task_PlayerPcGiveMailToMon(u8 taskId) } else { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu; } } diff --git a/src/quest_log.c b/src/quest_log.c index 38b3733ea..0cda4eb77 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1049,7 +1049,7 @@ static void sub_811175C(u8 sceneNum, struct UnkStruct_203AE98 * a1) static void sub_81118F4(s8 a0) { - fade_screen(1, a0); + FadeScreen(1, a0); sQuestLogCB = QuestLog_AdvancePlayhead; } @@ -1309,7 +1309,7 @@ static void QuestLog_CloseTextWindow(void) static void QuestLog_SkipToEndOfPlayback(s8 a0) { - fade_screen(1, a0); + FadeScreen(1, a0); sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback; } diff --git a/src/scrcmd.c b/src/scrcmd.c index 51e7d2c35..c083546eb 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -630,7 +630,7 @@ static bool8 IsPaletteNotActive(void) bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { - fade_screen(ScriptReadByte(ctx), 0); + FadeScreen(ScriptReadByte(ctx), 0); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -640,7 +640,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) u8 mode = ScriptReadByte(ctx); u8 speed = ScriptReadByte(ctx); - fade_screen(mode, speed); + FadeScreen(mode, speed); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } diff --git a/src/shop.c b/src/shop.c index 865688928..97061f8c0 100644 --- a/src/shop.c +++ b/src/shop.c @@ -294,14 +294,14 @@ static void Task_ShopMenu(u8 taskId) static void Task_HandleShopMenuBuy(u8 taskId) { SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_GoToBuyOrSellMenu; } static void Task_HandleShopMenuSell(u8 taskId) { SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].func = Task_GoToBuyOrSellMenu; } diff --git a/src/start_menu.c b/src/start_menu.c index 59bfb8643..b159f0375 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -446,7 +446,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void) && sStartMenuCallback != StartMenuSafariZoneRetireCallback) { StopPokemonLeagueLightingEffectTask(); - fade_screen(1, 0); + FadeScreen(1, 0); } } @@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void) { PlayRainStoppingSoundEffect(); CleanupOverworldWindowsAndTilemaps(); - ShowTrainerCardInLink(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu); + ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu); return TRUE; } return FALSE; diff --git a/src/union_room.c b/src/union_room.c index 37c3e7c0a..6b6ef5b98 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1,23 +1,41 @@ #include "global.h" #include "gflib.h" +#include "battle.h" +#include "berry_crush.h" +#include "cable_club.h" +#include "dodrio_berry_picking.h" #include "event_data.h" +#include "field_control_avatar.h" +#include "field_weather.h" #include "link.h" #include "link_rfu.h" #include "list_menu.h" +#include "load_save.h" +#include "mevent.h" +#include "mystery_gift_menu.h" #include "new_menu_helpers.h" +#include "overworld.h" +#include "party_menu.h" +#include "pokemon_jump.h" +#include "save_location.h" #include "script.h" +#include "script_pokemon_util.h" #include "task.h" +#include "trade.h" +#include "trade_scene.h" +#include "trainer_card.h" #include "union_room.h" +#include "union_room_chat.h" +#include "union_room_player_avatar.h" #include "constants/songs.h" - -#define sub_8018404(dest, arg1) ({ \ - StringCopy7(dest, (arg1).unk.playerName); \ - ConvertInternationalString(dest, (arg1).unk.field_0.unk_00.unk_00_0); \ -}) +#include "constants/maps.h" +#include "constants/cable_club.h" +#include "constants/field_weather.h" EWRAM_DATA union UnkUnion_Main gUnknown_203B05C = {}; EWRAM_DATA u8 gUnknown_203B058 = 0; EWRAM_DATA u8 gUnknown_203B059 = 0; +EWRAM_DATA struct UnionRoomTrade gUnknown_203B06C = {}; IWRAM_DATA struct UnkStruct_Leader *gUnknown_3002024; IWRAM_DATA struct UnkStruct_Group *gUnknown_3002028; @@ -30,8 +48,11 @@ u8 sub_81165E8(struct UnkStruct_Main0 * a0); void sub_8116738(u8 taskId); u32 sub_8116D10(struct UnkStruct_Group * group, s32 id); void sub_8116D60(struct UnkStruct_Group * group, s32 id); +void sub_8116E1C(u8 taskId); u8 sub_8116FE4(void); void sub_8117990(void); +void sub_81179A4(void); +void sub_8117A0C(u8 taskId); u16 sub_8118658(const u8 *data); u8 sub_811A054(struct UnkStruct_Main4 *arg0, u32 arg1); bool8 sub_811A0F8(u8 *textState, const u8 *str); @@ -40,9 +61,13 @@ void sub_811A41C(void); void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); void sub_811A5E4(struct UnkStruct_x20 *arg0, u8 count); void sub_811A650(struct UnkStruct_Main4 *arg0, u8 count); +bool32 sub_811A6DC(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1); u32 sub_811A748(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1); u8 sub_811A798(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2); +void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id); void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id); +void sub_811B148(struct UnionRoomTrade *trade); +u32 sub_811B1EC(struct UnionRoomTrade *trade, u8 mpId); extern const u8 *const gUnknown_8456C74[]; extern const struct WindowTemplate gUnknown_8456CD0; @@ -54,8 +79,10 @@ extern const struct WindowTemplate gUnknown_8456D4C; extern const struct WindowTemplate gUnknown_8456D54; extern const struct ListMenuTemplate gUnknown_8456DDC; extern const struct UnkStruct_Shared gUnknown_8457034; +extern const u8 *const gUnknown_8457094[13]; extern const u8 gUnknown_84570C8[]; extern const u8 gUnknown_84571B4[]; +extern const u8 gUnknown_84571B8[]; extern const u8 gUnknown_8457234[]; extern const u8 gUnknown_8457264[]; extern const u8 *const gUnknown_845742C[][5]; @@ -74,6 +101,7 @@ extern const u8 gUnknown_84576C4[]; extern const u8 gUnknown_8457700[]; extern const u8 gUnknown_845771C[]; extern const u8 *const gUnknown_8457754[]; +extern const u8 gUnknown_84577F8[]; extern const u8 gUnknown_8457E28[]; extern const u8 gUnknown_8457E44[]; extern const u8 gUnknown_8458FC8[]; @@ -81,6 +109,18 @@ extern const u8 *const gUnknown_84591B8[]; extern const u8 gUnknown_8459238[]; extern const u8 gUnknown_8459250[]; +// These are functions in Emmerald but inlined in FireRed + +#define sub_8018404(dest, arg1) ({ \ + StringCopy7(dest, (arg1).unk.playerName); \ + ConvertInternationalString(dest, (arg1).unk.field_0.unk_00.unk_00_0); \ +}) + +#define CopyTrainerCardData(dest, src, _version) ({ \ + (dest) = *((struct TrainerCard *)(src)); \ + (dest).version = _version; \ +}) + void sub_811586C(u8 windowId, u8 arg1, u8 stringId) { FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); @@ -917,3 +957,720 @@ void sub_8116738(u8 taskId) break; } } + +u32 sub_8116D10(struct UnkStruct_Group *arg0, s32 id) +{ + struct UnkStruct_x20 *structPtr = &arg0->field_0->arr[id]; + + if (gUnknown_203B058 == 4 && structPtr->unk.field_0.unk_00.unk_01_2 != VERSION_FIRE_RED && structPtr->unk.field_0.unk_00.unk_01_2 != VERSION_LEAF_GREEN) + { + if (!(gSaveBlock2Ptr->specialSaveWarpFlags & CHAMPION_SAVEWARP)) + return 1; + else if (structPtr->unk.field_0.unk_00.isChampion) + return 0; + } + else + { + return 0; + } + + return 2; +} + +void sub_8116D60(struct UnkStruct_Group *data, s32 id) +{ + data->field_F = id; + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + RedrawListMenu(data->listTaskId); + sub_8018404(gStringVar1, data->field_0->arr[data->field_F]); + sub_80FB008(gUnknown_84570C8[gSpecialVar_0x8004], 0, 1); + sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, sub_8118658(data->field_0->arr[data->field_F].unk.field_0.unk_00.playerTrainerId)); +} + +u8 sub_8116DE0(void) +{ + u8 taskId; + struct UnkStruct_Group *dataPtr; + + taskId = CreateTask(sub_8116E1C, 0); + gUnknown_203B05C.group = dataPtr = (void*)(gTasks[taskId].data); + + dataPtr->state = 0; + dataPtr->textState = 0; + + gUnknown_3002028 = dataPtr; + + return taskId; +} + +void sub_8116E1C(u8 taskId) +{ + struct UnkStruct_Group *data = gUnknown_203B05C.group; + + switch (data->state) + { + case 0: + sub_80FAF58(0, 0, 0); + sub_800B1F4(); + OpenLink(); + sub_80FBBD8(); + sub_80FB128(TRUE); + data->field_4 = AllocZeroed(0x70); + data->field_0 = AllocZeroed(0x200); + data->state = 2; + break; + case 2: + sub_811A650(data->field_4, 4); + sub_811A5E4(data->field_0->arr, 16); + data->field_11 = sub_811A054(data->field_4, 0xFF); + data->field_F = 0; + data->state = 3; + break; + case 3: + if (sub_8116FE4() == 1) + PlaySE(SE_PC_LOGIN); + if (gTasks[taskId].data[15] == 0xFF) + data->state = 10; + break; + case 10: + DestroyTask(data->field_11); + Free(data->field_0); + Free(data->field_4); + sub_80F8DC0(); + data->state++; + break; + case 11: + sub_80F8DC0(); + DestroyTask(taskId); + break; + } +} + +bool32 sub_8116F28(u32 arg0, u32 id) +{ + if (id == 0xFF) + return TRUE; + + if (id <= NELEMS(gUnknown_8457094)) // UB: <= may access data outside the array + { + const u8 *bytes = gUnknown_8457094[id]; + + while ((*(bytes) != 0xFF)) + { + if ((*bytes) == arg0) + return TRUE; + bytes++; + } + } + + return FALSE; +} + +u8 sub_8116F5C(struct UnkStruct_Group *data, u32 id) +{ + if (data->field_0->arr[id].field_1A_0 == 1) + { + if (data->field_0->arr[id].unk.field_0.unk_0a_7) + return 3; + else if (data->field_0->arr[id].field_1A_1 != 0) + return 1; + else if (data->field_0->arr[id].field_1B != 0) + return 2; + } + + return 0; +} + +void sub_8116F94(u8 arg0, s32 id, u8 arg2) +{ + struct UnkStruct_Group *data = gUnknown_203B05C.group; + u8 var = sub_8116F5C(data, id); + + sub_811A81C(arg0, 8, arg2, &data->field_0->arr[id], var, id); +} + +u8 sub_8116FE4(void) +{ + struct UnkStruct_Group *data = gUnknown_203B05C.group; + u8 ret = 0; + u8 i; + s32 id; + + for (i = 0; i < 16; i++) + { + if (data->field_0->arr[i].field_1A_0 != 0) + { + id = sub_811A748(&data->field_0->arr[i], data->field_4->arr); + if (id != 0xFF) + { + if (data->field_0->arr[i].field_1A_0 == 1) + { + if (sub_811A6DC(&data->field_0->arr[i].unk, &data->field_4->arr[id].unk0)) + { + data->field_0->arr[i].unk = data->field_4->arr[id].unk0; + data->field_0->arr[i].field_1B = 0x40; + ret = 1; + } + else + { + if (data->field_0->arr[i].field_1B != 0) + { + data->field_0->arr[i].field_1B--; + if (data->field_0->arr[i].field_1B == 0) + ret = 2; + } + } + } + else + { + data->field_0->arr[i].field_1A_0 = 1; + data->field_0->arr[i].field_1B = 0x40; + ret = 1; + } + + data->field_0->arr[i].field_18 = 0; + } + else + { + if (data->field_0->arr[i].field_1A_0 != 2) + { + data->field_0->arr[i].field_18++; + if (data->field_0->arr[i].field_18 >= 300) + { + data->field_0->arr[i].field_1A_0 = 2; + ret = 2; + } + } + } + } + } + + for (id = 0; id < 4; id++) + { + if (sub_811A798(data->field_0->arr, &data->field_4->arr[id], 16) != 0xFF) + ret = 1; + } + + return ret; +} + +void sub_8117100(u8 taskId) +{ + CB2_ReturnFromLinkTrade(); + DestroyTask(taskId); +} + +u8 sub_8117118(void) +{ + u8 taskId = CreateTask(sub_8117100, 0); + + return taskId; +} + +void sub_8117130(u8 taskId) +{ + u32 monId = sub_811B1EC(&gUnknown_203B06C, GetMultiplayerId()); + + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[0]++; + SendBlock(0, &gPlayerParty[monId], sizeof(struct Pokemon)); + break; + case 1: + if (GetBlockReceivedStatus() == 3) + { + gEnemyParty[0] = *(struct Pokemon*)(gBlockRecvBuffer[GetMultiplayerId() ^ 1]); + IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES); + ResetBlockReceivedFlags(); + gTasks[taskId].data[0]++; + } + break; + case 2: + memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct MailStruct) * PARTY_SIZE + 4); + if (SendBlock(0, gBlockSendBuffer, sizeof(struct MailStruct) * PARTY_SIZE + 4)) + gTasks[taskId].data[0]++; + break; + case 3: + if (GetBlockReceivedStatus() == 3) + { + memcpy(gLinkPartnerMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct MailStruct) * PARTY_SIZE); + ResetBlockReceivedFlags(); + gSelectedTradeMonPositions[TRADE_PLAYER] = monId; + gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE; + gMain.savedCallback = CB2_ReturnToField; + SetMainCallback2(CB2_InitTradeAnim_LinkTrade); + sub_811B148(&gUnknown_203B06C); + DestroyTask(taskId); + } + break; + } +} + +void sub_8117280(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (GetMultiplayerId() == 0) + sub_800A474(2); + gTasks[taskId].data[0]++; + break; + case 1: + if (GetBlockReceivedStatus() == sub_800A8D4()) + { + s32 i; + u16 *recvBuff; + + for (i = 0; i < GetLinkPlayerCount(); i++) + { + recvBuff = gBlockRecvBuffer[i]; + CopyTrainerCardData(gTrainerCards[i], recvBuff, gLinkPlayers[i].version); + } + + if (GetLinkPlayerCount() == 2) + { + recvBuff = gBlockRecvBuffer[GetMultiplayerId() ^ 1]; + sub_81446D0(recvBuff[48]); + } + else + { + sub_81446C4(); + } + + ResetBlockReceivedFlags(); + DestroyTask(taskId); + } + break; + } +} + +void sub_8117354(void) +{ + switch (gMain.state) + { + case 0: + CreateTask(sub_8117280, 5); + gMain.state++; + break; + case 1: + if (!FuncIsActiveTask(sub_8117280)) + ShowTrainerCardInLink(GetMultiplayerId() ^ 1, CB2_ReturnToField); + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); +} + +void sub_81173C0(u16 battleFlags) +{ + HealPlayerParty(); + SavePlayerParty(); + LoadPlayerBag(); + gLinkPlayers[0].linkType = LINKTYPE_BATTLE; + gLinkPlayers[GetMultiplayerId()].id = GetMultiplayerId(); + gLinkPlayers[GetMultiplayerId() ^ 1].id = GetMultiplayerId() ^ 1; + gMain.savedCallback = sub_8081668; + gBattleTypeFlags = battleFlags; + PlayBattleBGM(); +} + +void sub_8117440(u16 linkService, u16 x, u16 y) +{ + VarSet(VAR_CABLE_CLUB_STATE, linkService); + SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); + SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); + WarpIntoMap(); +} + +void sub_81174B4(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService) +{ + gSpecialVar_0x8004 = linkService; + VarSet(VAR_CABLE_CLUB_STATE, linkService); + gFieldLinkPlayerCount = GetLinkPlayerCount(); + gLocalLinkPlayerId = GetMultiplayerId(); + SetCableClubWarp(); + SetWarpDestination(mapGroup, mapNum, -1, x, y); + WarpIntoMap(); +} + +void sub_8117534(void) +{ + switch (gMain.state) + { + case 0: + CreateTask(sub_8117280, 5); + gMain.state++; + break; + case 1: + if (!FuncIsActiveTask(sub_8117280)) + SetMainCallback2(sub_8056788); + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); +} + +void sub_8117594(void *arg0, bool32 arg1) +{ + TrainerCard_GenerateCardForLinkPlayer((struct TrainerCard *)arg0); + if (arg1) + *((u16 *)(arg0 + sizeof(struct TrainerCard))) = GetWonderCardFlagID(); + else + *((u16 *)(arg0 + sizeof(struct TrainerCard))) = 0; +} + +void sub_81175BC(u8 taskId) +{ + sub_81446C4(); + switch (gUnknown_203B058) + { + case 1 ... 4: + case 9 ... 11: + case 13: + case 14: + RecordMixTrainerNames(); + break; + } + + switch (gUnknown_203B058) + { + case 65: + case 81: + CleanupOverworldWindowsAndTilemaps(); + gMain.savedCallback = sub_811C1C8; + InitChooseHalfPartyForBattle(2); + break; + case 1: + CleanupOverworldWindowsAndTilemaps(); + sub_8117594(gBlockSendBuffer, TRUE); + HealPlayerParty(); + SavePlayerParty(); + LoadPlayerBag(); + sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE); + SetMainCallback2(sub_8117534); + break; + case 2: + CleanupOverworldWindowsAndTilemaps(); + HealPlayerParty(); + SavePlayerParty(); + LoadPlayerBag(); + sub_8117594(gBlockSendBuffer, TRUE); + sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE); + SetMainCallback2(sub_8117534); + break; + case 3: + CleanupOverworldWindowsAndTilemaps(); + HealPlayerParty(); + SavePlayerParty(); + LoadPlayerBag(); + sub_8117594(gBlockSendBuffer, TRUE); + sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE); + SetMainCallback2(sub_8117534); + break; + case 4: + sub_8117594(gBlockSendBuffer, TRUE); + CleanupOverworldWindowsAndTilemaps(); + sub_81174B4(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER); + SetMainCallback2(sub_8117534); + break; + case 68: + CreateTask(sub_8117130, 0); + break; + case 5: + case 69: + if (GetMultiplayerId() == 0) + { + sub_80F8CFC(); + } + else + { + sub_80F8D14(); + sub_80FAF58(69, 0, 1); + } + sub_8128420(); + break; + case 8: + case 72: + sub_8117594(gBlockSendBuffer, FALSE); + SetMainCallback2(sub_8117354); + break; + case 9: + sub_8117440(USING_MINIGAME, 5, 1); + sub_8147AA8(GetCursorSelectionMonId(), CB2_LoadMap); + break; + case 10: + sub_8117440(USING_BERRY_CRUSH, 9, 1); + sub_814B754(CB2_LoadMap); + break; + case 11: + sub_8117440(USING_MINIGAME, 5, 1); + sub_81507FC(GetCursorSelectionMonId(), CB2_LoadMap); + break; + } + + DestroyTask(taskId); + gSpecialVar_Result = 1; + ScriptContext2_Disable(); +} + +void sub_8117900(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 *sendBuff = (u16*)(gBlockSendBuffer); + + switch (data[0]) + { + case 0: + gSpecialVar_Result = 1; + EnableBothScriptContexts(); + data[0]++; + break; + case 1: + if (!ScriptContext1_IsScriptSetUp()) + { + FadeScreen(FADE_TO_BLACK, 0); + data[0]++; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_800AB9C(); + data[0]++; + } + break; + case 3: + if (IsLinkTaskFinished()) + { + DestroyTask(taskId); + sub_81179A4(); + } + break; + } +} + +void sub_8117990(void) +{ + CreateTask(sub_8117900, 0); +} + +void sub_81179A4(void) +{ + u8 taskId = CreateTask(sub_81175BC, 0); + gTasks[taskId].data[0] = 0; +} + +void MEvent_CreateTask_Leader(u32 arg0) +{ + u8 taskId; + struct UnkStruct_Leader *dataPtr; + + taskId = CreateTask(sub_8117A0C, 0); + gUnknown_203B05C.leader = dataPtr = (void*)(gTasks[taskId].data); + + dataPtr->state = 0; + dataPtr->textState = 0; + dataPtr->field_18 = arg0; + gSpecialVar_Result = 0; +} + +void sub_8117A0C(u8 taskId) +{ + struct UnkStruct_Leader *data = gUnknown_203B05C.leader; + struct WindowTemplate winTemplate; + s32 val; + + switch (data->state) + { + case 0: + gUnknown_203B058 = data->field_18; + gUnknown_203B059 = 2; + sub_80FAF58(data->field_18, 0, 0); + sub_80FAF74(FALSE, FALSE); + sub_800B1F4(); + OpenLink(); + sub_80FBB8C(2); + data->state = 1; + break; + case 1: + data->field_4 = AllocZeroed(0x70); + data->field_0 = AllocZeroed(0xA0); + data->field_8 = AllocZeroed(0xA0); + sub_811A650(data->field_4, 4); + sub_811A5E4(data->field_0->arr, 5); + LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.field_0, data->field_0->arr[0].unk.playerName); + data->field_0->arr[0].field_18 = 0; + data->field_0->arr[0].field_1A_0 = 1; + data->field_0->arr[0].field_1A_1 = 0; + data->field_0->arr[0].field_1B = 0; + data->field_17 = sub_811A054(data->field_4, 0xFF); + + winTemplate = gUnknown_8456CFC; + winTemplate.baseBlock = GetMysteryGiftBaseBlock(); + data->listWindowId = AddWindow(&winTemplate); + MG_DrawTextBorder(data->listWindowId); + gMultiuseListMenuTemplate = gUnknown_8456D34; + gMultiuseListMenuTemplate.windowId = data->listWindowId; + data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); + + CopyBgTilemapBufferToVram(0); + data->field_13 = 1; + data->state = 2; + break; + case 2: + StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]); + sub_811599C(gStringVar4, gUnknown_203B058); + data->state = 3; + break; + case 3: + AddTextPrinterToWindow1(gStringVar4); + data->state = 4; + break; + case 4: + sub_8116444(data, 5, 6); + if (gMain.newKeys & B_BUTTON) + { + data->state = 13; + DestroyWirelessStatusIndicatorSprite(); + } + break; + case 6: + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84577F8)) + { + data->field_13 = sub_81165E8(data->field_0); + RedrawListMenu(data->listTaskId); + data->state = 2; + } + break; + case 5: + data->state = 7; + break; + case 7: + switch (mevent_message_print_and_prompt_yes_no(&data->textState, (u16 *)&data->field_14, FALSE, gStringVar4)) + { + case 0: + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + data->field_0->arr[data->field_13].field_1B = 0; + RedrawListMenu(data->listTaskId); + data->field_19 = 5; + sub_80FA670(5, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName); + data->state = 8; + break; + case 1: + case -1: + data->field_19 = 6; + sub_80FA670(6, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName); + data->state = 8; + break; + } + break; + case 8: + val = sub_80FA6FC(sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName); + if (val == 1) + { + if (data->field_19 == 5) + { + data->field_0->arr[data->field_13].field_1B = 0; + RedrawListMenu(data->listTaskId); + data->field_13++; + sub_8018404(gStringVar1, data->field_0->arr[data->field_13 - 1]); + StringExpandPlaceholders(gStringVar4, gUnknown_8457554); + data->state = 9; + sub_80F8F5C(); + } + else + { + sub_80FBD4C(data->field_0->arr[data->field_13].unk.playerName, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId)); + data->field_0->arr[data->field_13].field_1A_0 = 0; + sub_81165E8(data->field_0); + RedrawListMenu(data->listTaskId); + data->state = 2; + } + + data->field_19 = 0; + } + else if (val == 2) + { + sub_80FB9E4(0, 0); + data->state = 2; + } + break; + case 9: + AddTextPrinterToWindow1(gStringVar4); + data->state = 10; + break; + case 10: + if (++data->field_E > 120) + data->state = 11; + break; + case 11: + if (!sub_8116444(data, 5, 6)) + data->state = 12; + break; + case 12: + if (sub_80F8F40()) + { + sub_80F8F7C(FALSE); + data->state = 15; + } + else + { + data->state = 6; + } + break; + case 13: + DestroyWirelessStatusIndicatorSprite(); + sub_80F8DC0(); + DestroyListMenuTask(data->listTaskId, 0, 0); + CopyBgTilemapBufferToVram(0); + RemoveWindow(data->listWindowId); + DestroyTask(data->field_17); + Free(data->field_8); + Free(data->field_0); + Free(data->field_4); + data->state++; + break; + case 14: + if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84571B8)) + { + DestroyTask(taskId); + gSpecialVar_Result = 5; + } + break; + case 15: + if (sub_80FB9F4() == 1 || sub_80FB9F4() == 2) + { + data->state = 13; + } + else if (gReceivedRemoteLinkPlayers != 0) + { + sub_80FAFE0(1); + data->state++; + } + break; + case 16: + DestroyListMenuTask(data->listTaskId, 0, 0); + CopyBgTilemapBufferToVram(0); + RemoveWindow(data->listWindowId); + DestroyTask(data->field_17); + Free(data->field_8); + Free(data->field_0); + Free(data->field_4); + sub_800AB9C(); + data->state++; + break; + case 17: + if (IsLinkTaskFinished()) + DestroyTask(taskId); + break; + } +} diff --git a/sym_common.txt b/sym_common.txt index 74e642bc2..d71df5ce2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -38,10 +38,10 @@ gFieldCallback2: @ 3005024 gHeldKeyCodeToSend: @ 3005028 .space 0x4 -gUnknown_300502C: @ 300502C +gLocalLinkPlayerId: @ 300502C .space 0x4 -gUnknown_3005030: @ 3005030 +gFieldLinkPlayerCount: @ 3005030 .space 0x10 .align 2 |