summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-01-20 14:46:01 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-01-20 14:46:01 -0500
commitac5bfcf1ce9c0f1dfe240dca3aeb0f3fcaa83280 (patch)
treed5fc9e8f137d06ff17c7beb4f22744c318d19b4f
parent8d5af5332934f47f022907d2acb2e71d96b04449 (diff)
through sub_8117A0C
-rw-r--r--asm/cable_club.s28
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/overworld.s46
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/union_room.s2066
-rw-r--r--include/berry_crush.h6
-rw-r--r--include/cable_club.h1
-rw-r--r--include/dodrio_berry_picking.h6
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/link.h1
-rw-r--r--include/link_rfu.h8
-rw-r--r--include/mevent.h3
-rw-r--r--include/mystery_gift_menu.h3
-rw-r--r--include/overworld.h3
-rw-r--r--include/pokemon_jump.h1
-rw-r--r--include/save_location.h1
-rw-r--r--include/union_room.h2
-rw-r--r--include/union_room_chat.h1
-rw-r--r--include/union_room_player_avatar.h6
-rw-r--r--src/credits.c4
-rw-r--r--src/field_fadetransition.c22
-rw-r--r--src/item_use.c10
-rw-r--r--src/mevent.c4
-rw-r--r--src/player_pc.c8
-rw-r--r--src/quest_log.c4
-rw-r--r--src/scrcmd.c4
-rw-r--r--src/shop.c4
-rw-r--r--src/start_menu.c4
-rw-r--r--src/union_room.c767
-rw-r--r--sym_common.txt4
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