summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/cable_club.s28
-rw-r--r--asm/event_object_80688E4.s8
-rw-r--r--asm/event_object_movement.s8
-rw-r--r--asm/field_player_avatar.s6
-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/script_movement.s2
-rw-r--r--asm/union_room.s11147
-rw-r--r--asm/union_room_player_avatar.s2064
-rw-r--r--data/strings.s6
-rw-r--r--data/union_room.s1571
-rw-r--r--include/berry_crush.h6
-rw-r--r--include/cable_club.h1
-rw-r--r--include/constants/event_object_movement.h7
-rw-r--r--include/constants/pokemon.h120
-rw-r--r--include/dodrio_berry_picking.h6
-rw-r--r--include/event_object_80688E4.h5
-rw-r--r--include/event_object_8097404.h2
-rw-r--r--include/event_object_lock.h1
-rw-r--r--include/event_object_movement.h4
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/global.fieldmap.h6
-rw-r--r--include/link.h1
-rw-r--r--include/link_rfu.h38
-rw-r--r--include/mevent.h3
-rw-r--r--include/mevent_server.h1
-rw-r--r--include/mystery_gift_menu.h3
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokemon.h184
-rw-r--r--include/pokemon_jump.h1
-rw-r--r--include/rfu_union_tool.h17
-rw-r--r--include/save_location.h1
-rw-r--r--include/strings.h5
-rw-r--r--include/union_room.h109
-rw-r--r--include/union_room_chat.h1
-rw-r--r--include/union_room_message.h114
-rw-r--r--ld_script.txt10
-rw-r--r--src/credits.c4
-rw-r--r--src/event_object_lock.c2
-rw-r--r--src/field_fadetransition.c22
-rw-r--r--src/graphics.c0
-rw-r--r--src/item_use.c10
-rw-r--r--src/link_rfu_2.c4
-rw-r--r--src/link_rfu_3.c8
-rw-r--r--src/mevent.c4
-rw-r--r--src/party_menu.c2
-rw-r--r--src/player_pc.c8
-rw-r--r--src/pokemon.c50
-rw-r--r--src/quest_log.c4
-rw-r--r--src/rfu_union_tool.c663
-rw-r--r--src/scrcmd.c8
-rw-r--r--src/shop.c4
-rw-r--r--src/start_menu.c4
-rw-r--r--src/union_room.c4607
-rw-r--r--src/union_room_battle.c225
-rw-r--r--src/union_room_message.c543
-rw-r--r--src/vs_seeker.c2
-rw-r--r--src/wireless_communication_status_screen.c4
-rw-r--r--sym_bss.txt11
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt39
67 files changed, 6578 insertions, 15206 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/event_object_80688E4.s b/asm/event_object_80688E4.s
index 1482529fe..93309a80d 100644
--- a/asm/event_object_80688E4.s
+++ b/asm/event_object_80688E4.s
@@ -154,8 +154,8 @@ _080689EC: .4byte gObjectEvents
_080689F0: .4byte gPlayerAvatar
thumb_func_end FreezeObjectEventsExceptOne
- thumb_func_start npc_sync_anim_pause_bits
-npc_sync_anim_pause_bits: @ 80689F4
+ thumb_func_start UnfreezeObjectEvent
+UnfreezeObjectEvent: @ 80689F4
push {r4,r5,lr}
adds r5, r0, 0
ldrh r2, [r5]
@@ -207,7 +207,7 @@ _08068A4C:
.align 2, 0
_08068A54: .4byte 0x00000101
_08068A58: .4byte gSprites
- thumb_func_end npc_sync_anim_pause_bits
+ thumb_func_end UnfreezeObjectEvent
thumb_func_start UnfreezeObjectEvents
UnfreezeObjectEvents: @ 8068A5C
@@ -224,7 +224,7 @@ _08068A62:
cmp r0, 0
beq _08068A78
adds r0, r1, 0
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
_08068A78:
adds r0, r4, 0x1
lsls r0, 24
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s
index 66207007c..30af8949b 100644
--- a/asm/event_object_movement.s
+++ b/asm/event_object_movement.s
@@ -1427,8 +1427,8 @@ SpawnSpecialObjectEventParameterized: @ 805E830
_0805E894: .4byte 0xfff90000
thumb_func_end SpawnSpecialObjectEventParameterized
- thumb_func_start show_sprite
-show_sprite: @ 805E898
+ thumb_func_start TrySpawnObjectEvent
+TrySpawnObjectEvent: @ 805E898
push {r4-r7,lr}
sub sp, 0x8
lsls r0, 24
@@ -1468,7 +1468,7 @@ _0805E8E0:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end show_sprite
+ thumb_func_end TrySpawnObjectEvent
thumb_func_start sub_805E8E8
sub_805E8E8: @ 805E8E8
@@ -13157,7 +13157,7 @@ _08063CC8:
bl ObjectEventClearAnimIfSpecialAnimActive
_08063CCE:
adds r0, r4, 0
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
movs r3, 0
strb r5, [r4, 0x1C]
ldrb r0, [r4]
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index e4b28d6c6..a605f1439 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -2445,8 +2445,8 @@ _0805C560: .4byte gObjectEvents
_0805C564: .4byte gPlayerAvatar
thumb_func_end PlayerGetDestCoords
- thumb_func_start plaer_get_pos_including_state_based_drift
-plaer_get_pos_including_state_based_drift: @ 805C568
+ thumb_func_start player_get_pos_including_state_based_drift
+player_get_pos_including_state_based_drift: @ 805C568
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -2580,7 +2580,7 @@ _0805C6BC:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end plaer_get_pos_including_state_based_drift
+ thumb_func_end player_get_pos_including_state_based_drift
thumb_func_start GetPlayerFacingDirection
GetPlayerFacingDirection: @ 805C6C4
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/script_movement.s b/asm/script_movement.s
index 7a7adec6c..7b3a70a25 100644
--- a/asm/script_movement.s
+++ b/asm/script_movement.s
@@ -482,7 +482,7 @@ _0809777C:
lsls r0, 2
ldr r1, _080977A8 @ =gObjectEvents
adds r0, r1
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
_08097792:
adds r0, r5, 0x1
lsls r0, 24
diff --git a/asm/union_room.s b/asm/union_room.s
deleted file mode 100644
index cd549c173..000000000
--- a/asm/union_room.s
+++ /dev/null
@@ -1,11147 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811586C
-sub_811586C: @ 811586C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r5, r2, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- lsls r4, 8
- movs r0, 0x80
- lsls r0, 3
- cmp r4, r0
- beq _081158BC
- cmp r4, r0
- bgt _0811589E
- movs r0, 0x80
- lsls r0, 2
- cmp r4, r0
- beq _081158B0
- b _0811590E
-_0811589E:
- movs r0, 0x94
- lsls r0, 6
- cmp r4, r0
- beq _081158CC
- movs r0, 0xD4
- lsls r0, 6
- cmp r4, r0
- beq _081158F0
- b _0811590E
-_081158B0:
- ldr r1, _081158B8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- b _081158D4
- .align 2, 0
-_081158B8: .4byte gUnknown_845742C
-_081158BC:
- ldr r1, _081158C8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x14
- b _081158D4
- .align 2, 0
-_081158C8: .4byte gUnknown_845742C
-_081158CC:
- ldr r1, _081158EC @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x28
-_081158D4:
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- b _0811590E
- .align 2, 0
-_081158EC: .4byte gUnknown_845742C
-_081158F0:
- ldr r1, _08115920 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x3C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
-_0811590E:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115920: .4byte gUnknown_845742C
- thumb_func_end sub_811586C
-
- thumb_func_start sub_8115924
-sub_8115924: @ 8115924
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x20
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _08115994 @ =gSaveBlock2Ptr
- ldr r2, [r6]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- mov r8, r0
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- add r5, sp, 0x14
- ldr r1, _08115998 @ =gUnknown_84571B4
- adds r0, r5, 0
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xA
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- add r1, sp, 0x8
- bl StringAppend
- movs r0, 0x10
- str r0, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_811A444
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115994: .4byte gSaveBlock2Ptr
-_08115998: .4byte gUnknown_84571B4
- thumb_func_end sub_8115924
-
- thumb_func_start sub_811599C
-sub_811599C: @ 811599C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _08115A18
- lsls r0, 2
- ldr r1, _081159B4 @ =_081159B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081159B4: .4byte _081159B8
- .align 2, 0
-_081159B8:
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
-_08115A10:
- ldr r0, _08115A1C @ =gStringVar4
- ldr r1, _08115A20 @ =gUnknown_8457234
- bl StringExpandPlaceholders
-_08115A18:
- pop {r0}
- bx r0
- .align 2, 0
-_08115A1C: .4byte gStringVar4
-_08115A20: .4byte gUnknown_8457234
- thumb_func_end sub_811599C
-
- thumb_func_start TryBecomeLinkLeader
-TryBecomeLinkLeader: @ 8115A24
- push {lr}
- ldr r0, _08115A54 @ =sub_8115A68
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08115A58 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08115A5C @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08115A60 @ =gUnknown_3002024
- str r1, [r0]
- movs r0, 0
- strb r0, [r1, 0xC]
- strb r0, [r1, 0xD]
- ldr r1, _08115A64 @ =gSpecialVar_Result
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08115A54: .4byte sub_8115A68
-_08115A58: .4byte gUnknown_203B05C
-_08115A5C: .4byte gTasks+0x8
-_08115A60: .4byte gUnknown_3002024
-_08115A64: .4byte gSpecialVar_Result
- thumb_func_end TryBecomeLinkLeader
-
- thumb_func_start sub_8115A68
-sub_8115A68: @ 8115A68
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08115A88 @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0xC]
- cmp r0, 0x1E
- bls _08115A7C
- b _081161D8
-_08115A7C:
- lsls r0, 2
- ldr r1, _08115A8C @ =_08115A90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08115A88: .4byte gUnknown_203B05C
-_08115A8C: .4byte _08115A90
- .align 2, 0
-_08115A90:
- .4byte _08115B0C
- .4byte _081161D8
- .4byte _081161D8
- .4byte _08115B5C
- .4byte _08115C60
- .4byte _08115CE8
- .4byte _08115D04
- .4byte _08115E24
- .4byte _081161D8
- .4byte _08115D94
- .4byte _08115DAC
- .4byte _08115E40
- .4byte _08115EF4
- .4byte _0811600A
- .4byte _08116028
- .4byte _0811603A
- .4byte _08116058
- .4byte _08116112
- .4byte _08116128
- .4byte _081160A2
- .4byte _081160C0
- .4byte _08116168
- .4byte _08116194
- .4byte _08116168
- .4byte _0811617E
- .4byte _081161D8
- .4byte _081161AC
- .4byte _081161D8
- .4byte _081161D8
- .4byte _08115DEC
- .4byte _0811614C
-_08115B0C:
- ldr r3, _08115B4C @ =gUnknown_203B058
- ldr r2, _08115B50 @ =gUnknown_8456CD8
- ldr r1, _08115B54 @ =gSpecialVar_0x8004
- ldrh r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- strb r0, [r3]
- ldr r4, _08115B58 @ =gUnknown_203B059
- ldrh r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- lsrs r0, 8
- strb r0, [r4]
- ldrb r0, [r3]
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- bl sub_80FBB8C
- movs r0, 0x3
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115B4C: .4byte gUnknown_203B058
-_08115B50: .4byte gUnknown_8456CD8
-_08115B54: .4byte gSpecialVar_0x8004
-_08115B58: .4byte gUnknown_203B059
-_08115B5C:
- 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 sub_80FCD50
- 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, _08115C48 @ =gUnknown_8456CD0
- bl AddWindow
- strb r0, [r5, 0x10]
- ldr r0, _08115C4C @ =gUnknown_8456CFC
- bl AddWindow
- strb r0, [r5, 0xF]
- ldr r0, _08115C50 @ =gUnknown_8456D04
- bl AddWindow
- strb r0, [r5, 0x11]
- ldrb r0, [r5, 0x10]
- movs r1, 0x22
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x10]
- ldr r2, _08115C54 @ =gUnknown_845747C
- movs r1, 0x2
- str r1, [sp]
- movs r4, 0x4
- str r4, [sp, 0x4]
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- ldrb r0, [r5, 0x10]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r5, 0xF]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _08115C58 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08115C5C @ =gUnknown_8456D34
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r5, 0xF]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0x12]
- ldrb r0, [r5, 0x11]
- movs r1, 0
- bl DrawStdWindowFrame
- ldrb r0, [r5, 0x11]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x11]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- strb r0, [r5, 0x13]
- strb r4, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115C48: .4byte gUnknown_8456CD0
-_08115C4C: .4byte gUnknown_8456CFC
-_08115C50: .4byte gUnknown_8456D04
-_08115C54: .4byte gUnknown_845747C
-_08115C58: .4byte gMultiuseListMenuTemplate
-_08115C5C: .4byte gUnknown_8456D34
-_08115C60:
- ldr r0, _08115C98 @ =gStringVar1
- ldr r2, _08115C9C @ =gUnknown_8456C74
- ldr r4, _08115CA0 @ =gUnknown_203B058
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r0, _08115CA4 @ =gUnknown_203B059
- ldrb r2, [r0]
- lsrs r0, r2, 4
- cmp r0, 0
- beq _08115CC4
- ldrb r1, [r5, 0x13]
- subs r0, 0x1
- cmp r1, r0
- ble _08115CB0
- movs r0, 0xF
- ands r0, r2
- cmp r0, 0
- beq _08115CB0
- ldr r0, _08115CA8 @ =gStringVar4
- ldr r1, _08115CAC @ =gUnknown_8457264
- bl StringExpandPlaceholders
- b _08115CCC
- .align 2, 0
-_08115C98: .4byte gStringVar1
-_08115C9C: .4byte gUnknown_8456C74
-_08115CA0: .4byte gUnknown_203B058
-_08115CA4: .4byte gUnknown_203B059
-_08115CA8: .4byte gStringVar4
-_08115CAC: .4byte gUnknown_8457264
-_08115CB0:
- ldr r0, _08115CBC @ =gStringVar4
- ldr r1, _08115CC0 @ =gUnknown_8457234
- bl StringExpandPlaceholders
- b _08115CCC
- .align 2, 0
-_08115CBC: .4byte gStringVar4
-_08115CC0: .4byte gUnknown_8457234
-_08115CC4:
- ldr r0, _08115CE0 @ =gStringVar4
- ldrb r1, [r4]
- bl sub_811599C
-_08115CCC:
- ldrb r0, [r5, 0x11]
- ldr r1, _08115CE4 @ =gUnknown_203B059
- ldrb r1, [r1]
- ldrb r2, [r5, 0x13]
- bl sub_811586C
- movs r0, 0x5
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115CE0: .4byte gStringVar4
-_08115CE4: .4byte gUnknown_203B059
-_08115CE8:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08115D00 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115CFA
- b _081161D8
-_08115CFA:
- movs r0, 0x6
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115D00: .4byte gStringVar4
-_08115D04:
- adds r0, r5, 0
- movs r1, 0x7
- movs r2, 0xA
- bl sub_8116444
- ldr r0, _08115D24 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08115D40
- ldrb r0, [r5, 0x13]
- cmp r0, 0x1
- bne _08115D28
- movs r0, 0x17
- b _08115D3E
- .align 2, 0
-_08115D24: .4byte gMain
-_08115D28:
- ldr r0, _08115D38 @ =gUnknown_203B059
- ldrb r1, [r0]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08115D3C
- movs r0, 0x1E
- b _08115D3E
- .align 2, 0
-_08115D38: .4byte gUnknown_203B059
-_08115D3C:
- movs r0, 0x13
-_08115D3E:
- strb r0, [r5, 0xC]
-_08115D40:
- ldr r0, _08115D8C @ =gUnknown_203B059
- ldrb r2, [r0]
- lsrs r0, r2, 4
- cmp r0, 0
- beq _08115D76
- ldrb r1, [r5, 0x13]
- subs r0, 0x1
- cmp r1, r0
- ble _08115D76
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _08115D76
- bl sub_80FC1CC
- cmp r0, 0
- beq _08115D76
- ldr r0, _08115D90 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08115D76
- strb r4, [r5, 0xC]
- bl sub_80F8F5C
-_08115D76:
- ldrb r0, [r5, 0xC]
- cmp r0, 0x6
- beq _08115D7E
- b _081161D8
-_08115D7E:
- bl sub_80FA5D4
- cmp r0, 0
- bne _08115D88
- b _081161D8
-_08115D88:
- b _08115EEE
- .align 2, 0
-_08115D8C: .4byte gUnknown_203B059
-_08115D90: .4byte gMain
-_08115D94:
- bl sub_80FA5D4
- cmp r0, 0
- beq _08115D9E
- b _081161D8
-_08115D9E:
- movs r0, 0x6
- strb r0, [r5, 0xC]
- ldr r0, [r5]
- bl sub_81165E8
- strb r0, [r5, 0x13]
- b _081161D8
-_08115DAC:
- movs r3, 0
- ldr r0, _08115DE4 @ =gUnknown_203B058
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x2
- bne _08115DBC
- movs r3, 0x1
-_08115DBC:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r2, _08115DE8 @ =gUnknown_845767C
- lsls r1, r3, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115DD4
- b _081161D8
-_08115DD4:
- ldr r0, [r5]
- bl sub_81165E8
- strb r0, [r5, 0x13]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- b _0811610C
- .align 2, 0
-_08115DE4: .4byte gUnknown_203B058
-_08115DE8: .4byte gUnknown_845767C
-_08115DEC:
- ldr r0, _08115E1C @ =gUnknown_203B059
- ldrb r0, [r0]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x2
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r3, r0, 31
- adds r0, r5, 0
- adds r0, 0xD
- ldr r2, _08115E20 @ =gUnknown_845767C
- lsls r1, r3, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115E16
- b _081161D8
-_08115E16:
- movs r0, 0x15
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115E1C: .4byte gUnknown_203B059
-_08115E20: .4byte gUnknown_845767C
-_08115E24:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08115E3C @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115E36
- b _081161D8
-_08115E36:
- movs r0, 0xB
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115E3C: .4byte gStringVar4
-_08115E40:
- adds r4, r5, 0
- adds r4, 0xD
- 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_80FA634
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08115EC0
- cmp r1, r0
- bgt _08115E84
- subs r0, 0x2
- cmp r1, r0
- beq _08115EEE
- b _081161D8
-_08115E84:
- cmp r1, 0
- beq _08115E8E
- cmp r1, 0x1
- beq _08115EC0
- b _081161D8
-_08115E8E:
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- 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 _08115EE4
-_08115EC0:
- 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
-_08115EE4:
- bl sub_80FA670
- movs r0, 0xC
- strb r0, [r5, 0xC]
- b _081161D8
-_08115EEE:
- movs r0, 0x9
- strb r0, [r5, 0xC]
- b _081161D8
-_08115EF4:
- 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
- cmp r0, 0x1
- bne _08115FFA
- ldrb r0, [r5, 0x19]
- cmp r0, 0x5
- bne _08115FB4
- 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 r1, _08115F58 @ =gUnknown_203B059
- ldrb r1, [r1]
- movs r3, 0xF
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0
- ands r0, r1
- cmp r2, r0
- bne _08115FF0
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- bne _08115F54
- cmp r2, 0x4
- bne _08115F5C
-_08115F54:
- strb r3, [r5, 0xC]
- b _08115F90
- .align 2, 0
-_08115F58: .4byte gUnknown_203B059
-_08115F5C:
- ldr r4, _08115FA4 @ =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, _08115FA8 @ =gStringVar4
- ldr r1, _08115FAC @ =gUnknown_8457554
- bl StringExpandPlaceholders
- movs r0, 0xD
- strb r0, [r5, 0xC]
-_08115F90:
- bl sub_80F8F5C
- ldrb r0, [r5, 0x11]
- ldr r1, _08115FB0 @ =gUnknown_203B059
- ldrb r1, [r1]
- ldrb r2, [r5, 0x13]
- bl sub_811586C
- b _08115FF4
- .align 2, 0
-_08115FA4: .4byte gStringVar1
-_08115FA8: .4byte gStringVar4
-_08115FAC: .4byte gUnknown_8457554
-_08115FB0: .4byte gUnknown_203B059
-_08115FB4:
- 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
-_08115FF0:
- movs r0, 0x4
- strb r0, [r5, 0xC]
-_08115FF4:
- movs r0, 0
- strb r0, [r5, 0x19]
- b _081161D8
-_08115FFA:
- cmp r0, 0x2
- beq _08116000
- b _081161D8
-_08116000:
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _0811610C
-_0811600A:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116024 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811601C
- b _081161D8
-_0811601C:
- movs r0, 0xE
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116024: .4byte gStringVar4
-_08116028:
- ldrb r0, [r5, 0xE]
- adds r0, 0x1
- strb r0, [r5, 0xE]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- bhi _08116038
- b _081161D8
-_08116038:
- b _0811607E
-_0811603A:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116054 @ =gUnknown_8457514
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811604C
- b _081161D8
-_0811604C:
- movs r0, 0x10
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116054: .4byte gUnknown_8457514
-_08116058:
- adds r0, r5, 0
- adds r0, 0xD
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811607E
- cmp r1, 0
- bgt _08116078
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08116084
- b _081161D8
-_08116078:
- cmp r1, 0x1
- beq _08116084
- b _081161D8
-_0811607E:
- movs r0, 0x11
- strb r0, [r5, 0xC]
- b _081161D8
-_08116084:
- ldr r0, _08116098 @ =gUnknown_203B059
- ldrb r1, [r0]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _0811609C
- movs r0, 0x1E
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116098: .4byte gUnknown_203B059
-_0811609C:
- movs r0, 0x13
- strb r0, [r5, 0xC]
- b _081161D8
-_081160A2:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _081160BC @ =gUnknown_8457530
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081160B4
- b _081161D8
-_081160B4:
- movs r0, 0x14
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_081160BC: .4byte gUnknown_8457530
-_081160C0:
- adds r0, r5, 0
- adds r0, 0xD
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811615C
- cmp r1, 0
- bgt _081160E0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081160E4
- b _081161D8
-_081160E0:
- cmp r1, 0x1
- bne _081161D8
-_081160E4:
- ldr r0, _081160F8 @ =gUnknown_203B059
- ldrb r2, [r0]
- movs r0, 0xF0
- ands r0, r2
- cmp r0, 0
- beq _081160FC
- movs r0, 0xF
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_081160F8: .4byte gUnknown_203B059
-_081160FC:
- movs r3, 0xF
- ldrb r1, [r5, 0x13]
- adds r0, r3, 0
- ands r0, r2
- cmp r1, r0
- bne _0811610C
- strb r3, [r5, 0xC]
- b _081161D8
-_0811610C:
- movs r0, 0x4
- strb r0, [r5, 0xC]
- b _081161D8
-_08116112:
- adds r0, r5, 0
- movs r1, 0x7
- movs r2, 0x17
- bl sub_8116444
- lsls r0, 24
- cmp r0, 0
- bne _081161D8
- movs r0, 0x12
- strb r0, [r5, 0xC]
- b _081161D8
-_08116128:
- bl sub_80F8F40
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08116144
- movs r0, 0
- bl sub_80F8F7C
- cmp r0, 0
- beq _081161D8
- movs r0, 0x1A
- strb r0, [r5, 0xC]
- b _081161D8
-_08116144:
- movs r0, 0x1D
- strb r0, [r5, 0xC]
- strb r1, [r5, 0xD]
- b _081161D8
-_0811614C:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116164 @ =gUnknown_8457610
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081161D8
-_0811615C:
- movs r0, 0x17
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116164: .4byte gUnknown_8457610
-_08116168:
- bl DestroyWirelessStatusIndicatorSprite
- bl sub_80F8DC0
- adds r0, r5, 0
- bl sub_81161E4
- ldrb r0, [r5, 0xC]
- adds r0, 0x1
- strb r0, [r5, 0xC]
- b _081161D8
-_0811617E:
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _08116190 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _081161D8
- .align 2, 0
-_08116190: .4byte gSpecialVar_Result
-_08116194:
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _081161A8 @ =gSpecialVar_Result
- movs r0, 0x8
- strh r0, [r1]
- b _081161D8
- .align 2, 0
-_081161A8: .4byte gSpecialVar_Result
-_081161AC:
- bl sub_80FBA00
- cmp r0, 0
- beq _081161BA
- movs r0, 0x1D
- strb r0, [r5, 0xC]
- b _081161D8
-_081161BA:
- ldr r0, _081161E0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _081161D8
- movs r0, 0x1
- bl sub_80FAFE0
- bl sub_8117990
- adds r0, r5, 0
- bl sub_81161E4
- adds r0, r4, 0
- bl DestroyTask
-_081161D8:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081161E0: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8115A68
-
- thumb_func_start sub_81161E4
-sub_81161E4: @ 81161E4
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x11]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x11]
- movs r1, 0
- bl ClearStdWindowAndFrame
- ldrb r0, [r4, 0x12]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x10]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0xF]
- movs r1, 0
- bl ClearStdWindowAndFrame
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r4, 0x11]
- bl RemoveWindow
- ldrb r0, [r4, 0xF]
- bl RemoveWindow
- ldrb r0, [r4, 0x10]
- bl RemoveWindow
- ldrb r0, [r4, 0x17]
- bl DestroyTask
- ldr r0, [r4, 0x8]
- bl Free
- ldr r0, [r4]
- bl Free
- ldr r0, [r4, 0x4]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81161E4
-
- thumb_func_start sub_8116244
-sub_8116244: @ 8116244
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _081162D8
- lsls r0, 2
- ldr r1, _0811625C @ =_08116260
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811625C: .4byte _08116260
- .align 2, 0
-_08116260:
- .4byte _081162B8
- .4byte _081162B8
- .4byte _081162D0
- .4byte _081162B8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D0
- .4byte _081162D0
- .4byte _081162D0
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162C0
- .4byte _081162C0
-_081162B8:
- ldr r1, _081162BC @ =gUnknown_84574A0
- b _081162C2
- .align 2, 0
-_081162BC: .4byte gUnknown_84574A0
-_081162C0:
- ldr r1, _081162CC @ =gUnknown_84574C4
-_081162C2:
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _081162D8
- .align 2, 0
-_081162CC: .4byte gUnknown_84574C4
-_081162D0:
- ldr r1, _081162DC @ =gUnknown_84574EC
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_081162D8:
- pop {r0}
- bx r0
- .align 2, 0
-_081162DC: .4byte gUnknown_84574EC
- thumb_func_end sub_8116244
-
- thumb_func_start sub_81162E0
-sub_81162E0: @ 81162E0
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x44
- beq _08116300
- cmp r1, 0x44
- bgt _081162F6
- cmp r1, 0x41
- beq _08116300
- b _08116312
-_081162F6:
- cmp r2, 0x45
- beq _0811630C
- cmp r2, 0x48
- beq _0811630C
- b _08116312
-_08116300:
- ldr r1, _08116308 @ =gUnknown_8457E28
- bl StringExpandPlaceholders
- b _08116312
- .align 2, 0
-_08116308: .4byte gUnknown_8457E28
-_0811630C:
- ldr r1, _08116318 @ =gUnknown_8457E44
- bl StringExpandPlaceholders
-_08116312:
- pop {r0}
- bx r0
- .align 2, 0
-_08116318: .4byte gUnknown_8457E44
- thumb_func_end sub_81162E0
-
- thumb_func_start sub_811631C
-sub_811631C: @ 811631C
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _081163A8
- lsls r0, 2
- ldr r1, _08116334 @ =_08116338
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116334: .4byte _08116338
- .align 2, 0
-_08116338:
- .4byte _08116390
- .4byte _08116390
- .4byte _081163A0
- .4byte _08116390
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A0
- .4byte _081163A0
- .4byte _081163A0
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _08116390
- .4byte _08116390
-_08116390:
- ldr r1, _0811639C @ =gUnknown_8459238
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _081163A8
- .align 2, 0
-_0811639C: .4byte gUnknown_8459238
-_081163A0:
- ldr r1, _081163AC @ =gUnknown_8459250
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_081163A8:
- pop {r0}
- bx r0
- .align 2, 0
-_081163AC: .4byte gUnknown_8459250
- thumb_func_end sub_811631C
-
- thumb_func_start sub_81163B0
-sub_81163B0: @ 81163B0
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _0811643C
- lsls r0, 2
- ldr r1, _081163C8 @ =_081163CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081163C8: .4byte _081163CC
- .align 2, 0
-_081163CC:
- .4byte _08116424
- .4byte _08116424
- .4byte _08116434
- .4byte _08116424
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _08116434
- .4byte _08116434
- .4byte _08116434
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _08116424
- .4byte _08116424
-_08116424:
- ldr r1, _08116430 @ =gUnknown_84576AC
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _0811643C
- .align 2, 0
-_08116430: .4byte gUnknown_84576AC
-_08116434:
- ldr r1, _08116440 @ =gUnknown_84576C4
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_0811643C:
- pop {r0}
- bx r0
- .align 2, 0
-_08116440: .4byte gUnknown_84576C4
- thumb_func_end sub_81163B0
-
- thumb_func_start sub_8116444
-sub_8116444: @ 8116444
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [r5]
- bl sub_8116524
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08116460
- cmp r0, 0x2
- beq _081164AC
- b _081164C0
-_08116460:
- movs r0, 0x2
- bl PlaySE
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- ldr r4, _081164A0 @ =gStringVar2
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _081164A4 @ =gStringVar4
- ldr r1, _081164A8 @ =gUnknown_203B058
- ldrb r1, [r1]
- bl sub_8116244
- strb r6, [r5, 0xC]
- b _081164C0
- .align 2, 0
-_081164A0: .4byte gStringVar2
-_081164A4: .4byte gStringVar4
-_081164A8: .4byte gUnknown_203B058
-_081164AC:
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- strb r4, [r5, 0xC]
- movs r0, 0x1
- b _081164C2
-_081164C0:
- movs r0, 0
-_081164C2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8116444
-
- thumb_func_start sub_81164C8
-sub_81164C8: @ 81164C8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _081164F4 @ =gUnknown_203B05C
- ldr r3, [r0]
- movs r2, 0
- ldr r1, [r3]
- lsls r0, r4, 5
- adds r1, r0
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- beq _081164F8
- cmp r0, 0x2
- beq _08116502
- b _08116504
- .align 2, 0
-_081164F4: .4byte gUnknown_203B05C
-_081164F8:
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08116504
- movs r2, 0x2
- b _08116504
-_08116502:
- movs r2, 0x1
-_08116504:
- lsls r0, r4, 5
- ldr r3, [r3]
- adds r3, r0
- str r2, [sp]
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r6, 0
- bl sub_811A910
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81164C8
-
- thumb_func_start sub_8116524
-sub_8116524: @ 8116524
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, _0811657C @ =gUnknown_203B05C
- ldr r5, [r0]
- movs r0, 0
- mov r8, r0
- movs r3, 0x1
-_08116538:
- ldr r0, [r5]
- lsls r6, r3, 5
- adds r2, r0, r6
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- mov r9, r0
- cmp r0, 0x1
- bne _08116598
- ldr r1, [r5, 0x4]
- adds r0, r2, 0
- str r3, [sp]
- bl sub_811A748
- adds r4, r0, 0
- ldr r3, [sp]
- cmp r4, 0xFF
- beq _08116580
- ldr r1, [r5]
- ldr r0, [r5, 0x4]
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 2
- adds r1, r6
- adds r0, r2
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldr r0, [r5]
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x18]
- b _08116598
- .align 2, 0
-_0811657C: .4byte gUnknown_203B05C
-_08116580:
- ldr r2, [r5]
- adds r2, r6
- ldrb r1, [r2, 0x1A]
- movs r4, 0x4
- negs r4, r4
- adds r0, r4, 0
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- strb r1, [r2, 0x1A]
- movs r7, 0x2
- mov r8, r7
-_08116598:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x4
- bls _08116538
- movs r6, 0
- movs r4, 0x3
-_081165A6:
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- adds r1, r6
- movs r2, 0x5
- bl sub_811A798
- adds r6, 0x1C
- subs r4, 0x1
- ldr r0, [r5]
- cmp r4, 0
- bge _081165A6
- mov r1, r8
- cmp r1, 0x2
- beq _081165D8
- adds r1, r0, 0
- movs r4, 0x4
-_081165C6:
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _081165D0
- movs r2, 0x1
- mov r8, r2
-_081165D0:
- adds r1, 0x20
- subs r4, 0x1
- cmp r4, 0
- bge _081165C6
-_081165D8:
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8116524
-
- thumb_func_start sub_81165E8
-sub_81165E8: @ 81165E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _081166BC @ =gUnknown_203B05C
- ldr r4, [r0]
- movs r3, 0
-_081165F8:
- ldr r0, [r4, 0x8]
- lsls r2, r3, 5
- ldr r1, [r4]
- adds r0, r2
- adds r1, r2
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldm r1!, {r2,r5,r7}
- stm r0!, {r2,r5,r7}
- ldm r1!, {r6,r7}
- stm r0!, {r6,r7}
- adds r3, 0x1
- ldr r0, [r4, 0x8]
- ldr r1, [r4]
- cmp r3, 0x4
- ble _081165F8
- movs r5, 0
- mov r8, r1
- mov r9, r0
- movs r3, 0x4
-_08116620:
- mov r1, r9
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08116642
- lsls r0, r5, 5
- add r0, r8
- ldm r1!, {r2,r6,r7}
- stm r0!, {r2,r6,r7}
- ldm r1!, {r2,r6,r7}
- stm r0!, {r2,r6,r7}
- ldm r1!, {r2,r6}
- stm r0!, {r2,r6}
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08116642:
- movs r7, 0x20
- add r9, r7
- subs r3, 0x1
- cmp r3, 0
- bge _08116620
- mov r10, r5
- cmp r5, 0x4
- bhi _081166A4
- ldr r0, _081166C0 @ =gUnknown_8457034
- mov r9, r0
- movs r1, 0
- mov r12, r1
- movs r2, 0x4
- negs r2, r2
- mov r8, r2
-_08116660:
- ldr r1, [r4]
- lsls r3, r5, 5
- adds r1, r3
- mov r0, r9
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldr r0, [r4]
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x18]
- ldr r1, [r4]
- adds r1, r3
- ldrb r2, [r1, 0x1A]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r1, [r4]
- adds r1, r3
- ldrb r2, [r1, 0x1A]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r0, [r4]
- adds r0, r3
- mov r6, r12
- strb r6, [r0, 0x1B]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _08116660
-_081166A4:
- movs r3, 0
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _081166C4
- ldrb r0, [r1, 0x1B]
- cmp r0, 0x40
- bne _081166C4
- mov r10, r3
- b _081166E4
- .align 2, 0
-_081166BC: .4byte gUnknown_203B05C
-_081166C0: .4byte gUnknown_8457034
-_081166C4:
- adds r3, 0x1
- cmp r3, 0x4
- bgt _081166E4
- lsls r0, r3, 5
- adds r2, r1, r0
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _081166C4
- ldrb r0, [r2, 0x1B]
- cmp r0, 0x40
- bne _081166C4
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
-_081166E4:
- mov r0, r10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81165E8
-
- thumb_func_start TryJoinLinkGroup
-TryJoinLinkGroup: @ 81166F4
- push {lr}
- ldr r0, _08116724 @ =sub_8116738
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08116728 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0811672C @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08116730 @ =gUnknown_3002028
- str r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x8]
- strb r0, [r1, 0x9]
- ldr r1, _08116734 @ =gSpecialVar_Result
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08116724: .4byte sub_8116738
-_08116728: .4byte gUnknown_203B05C
-_0811672C: .4byte gTasks+0x8
-_08116730: .4byte gUnknown_3002028
-_08116734: .4byte gSpecialVar_Result
- thumb_func_end TryJoinLinkGroup
-
- thumb_func_start sub_8116738
-sub_8116738: @ 8116738
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08116758 @ =gUnknown_203B05C
- ldr r6, [r0]
- ldrb r0, [r6, 0x8]
- cmp r0, 0x17
- bls _0811674C
- b _08116D06
-_0811674C:
- lsls r0, 2
- ldr r1, _0811675C @ =_08116760
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116758: .4byte gUnknown_203B05C
-_0811675C: .4byte _08116760
- .align 2, 0
-_08116760:
- .4byte _081167C0
- .4byte _0811680C
- .4byte _08116838
- .4byte _08116904
- .4byte _08116D06
- .4byte _081169B4
- .4byte _08116A08
- .4byte _08116B94
- .4byte _08116BB0
- .4byte _08116BFE
- .4byte _08116C10
- .4byte _08116C98
- .4byte _08116C10
- .4byte _08116C68
- .4byte _08116C10
- .4byte _08116CA8
- .4byte _08116D06
- .4byte _08116D06
- .4byte _08116C10
- .4byte _08116CC8
- .4byte _08116C10
- .4byte _08116CFC
- .4byte _08116D06
- .4byte _08116CEC
-_081167C0:
- ldr r5, _08116800 @ =gUnknown_84570C8
- ldr r4, _08116804 @ =gSpecialVar_0x8004
- ldrh r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- ldr r1, _08116808 @ =gUnknown_203B058
- ldrh r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r6]
- movs r0, 0x1
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116800: .4byte gUnknown_84570C8
-_08116804: .4byte gSpecialVar_0x8004
-_08116808: .4byte gUnknown_203B058
-_0811680C:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r2, _08116830 @ =gUnknown_84591B8
- ldr r1, _08116834 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08116828
- b _08116D06
-_08116828:
- movs r0, 0x2
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116830: .4byte gUnknown_84591B8
-_08116834: .4byte gSpecialVar_0x8004
-_08116838:
- ldr r0, [r6, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r6]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r6, 0x4]
- ldr r1, _081168E8 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- bl sub_811A054
- movs r4, 0
- strb r0, [r6, 0x11]
- ldr r0, _081168EC @ =gUnknown_8456CD0
- bl AddWindow
- strb r0, [r6, 0xC]
- ldr r0, _081168F0 @ =gUnknown_8456D4C
- bl AddWindow
- strb r0, [r6, 0xB]
- ldr r0, _081168F4 @ =gUnknown_8456D54
- bl AddWindow
- strb r0, [r6, 0xD]
- ldrb r0, [r6, 0xC]
- movs r1, 0x22
- bl FillWindowPixelBuffer
- ldrb r0, [r6, 0xC]
- ldr r2, _081168F8 @ =gUnknown_8458FC8
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- ldrb r0, [r6, 0xC]
- bl PutWindowTilemap
- ldrb r0, [r6, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r6, 0xB]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _081168FC @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08116900 @ =gUnknown_8456DDC
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldrb r1, [r6, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r6, 0xE]
- ldrb r0, [r6, 0xD]
- movs r1, 0
- bl DrawStdWindowFrame
- ldrb r0, [r6, 0xD]
- bl PutWindowTilemap
- ldrb r0, [r6, 0xD]
- bl sub_8115924
- ldrb r0, [r6, 0xD]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- strb r4, [r6, 0xF]
- movs r0, 0x3
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_081168E8: .4byte gSpecialVar_0x8004
-_081168EC: .4byte gUnknown_8456CD0
-_081168F0: .4byte gUnknown_8456D4C
-_081168F4: .4byte gUnknown_8456D54
-_081168F8: .4byte gUnknown_8458FC8
-_081168FC: .4byte gMultiuseListMenuTemplate
-_08116900: .4byte gUnknown_8456DDC
-_08116904:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0811691E
- cmp r4, 0x1
- beq _08116916
- b _08116BF6
-_08116916:
- movs r0, 0x2
- bl PlaySE
- b _08116BF6
-_0811691E:
- ldrb r0, [r6, 0xE]
- bl ListMenu_ProcessInput
- adds r4, r0, 0
- ldr r0, _0811696C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811699C
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0811699C
- ldr r0, [r6]
- lsls r1, r4, 5
- adds r0, r1
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08116994
- lsrs r0, r1, 7
- cmp r0, 0
- bne _08116994
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8116D10
- adds r1, r0, 0
- cmp r1, 0
- bne _08116970
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8116D60
- movs r0, 0x5
- b _08116982
- .align 2, 0
-_0811696C: .4byte gMain
-_08116970:
- ldr r0, _0811698C @ =gStringVar4
- ldr r2, _08116990 @ =gUnknown_8457608
- subs r1, 0x1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x12
-_08116982:
- strb r0, [r6, 0x8]
- movs r0, 0x67
- bl PlaySE
- b _08116D06
- .align 2, 0
-_0811698C: .4byte gStringVar4
-_08116990: .4byte gUnknown_8457608
-_08116994:
- movs r0, 0x7
- bl PlaySE
- b _08116D06
-_0811699C:
- ldr r0, _081169B0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081169AA
- b _08116D06
-_081169AA:
- movs r0, 0xA
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_081169B0: .4byte gMain
-_081169B4:
- ldr r4, _081169FC @ =gStringVar4
- ldr r0, _08116A00 @ =gUnknown_203B058
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_811631C
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r4, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081169D2
- b _08116D06
-_081169D2:
- ldr r4, _08116A04 @ =gStringVar1
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r6]
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- b _08116C0A
- .align 2, 0
-_081169FC: .4byte gStringVar4
-_08116A00: .4byte gUnknown_203B058
-_08116A04: .4byte gStringVar1
-_08116A08:
- ldr r0, _08116A3C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08116AA4
- ldr r4, _08116A40 @ =gUnknown_203B058
- ldr r1, [r6]
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- ldrb r0, [r4]
- subs r0, 0x1
- cmp r0, 0x15
- bhi _08116AA4
- lsls r0, 2
- ldr r1, _08116A44 @ =_08116A48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116A3C: .4byte gReceivedRemoteLinkPlayers
-_08116A40: .4byte gUnknown_203B058
-_08116A44: .4byte _08116A48
- .align 2, 0
-_08116A48:
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
-_08116AA0:
- movs r0, 0x14
- strb r0, [r6, 0x8]
-_08116AA4:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _08116B70
- lsls r0, 2
- ldr r1, _08116ABC @ =_08116AC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116ABC: .4byte _08116AC0
- .align 2, 0
-_08116AC0:
- .4byte _08116AE4
- .4byte _08116AEA
- .4byte _08116B70
- .4byte _08116B70
- .4byte _08116AF0
- .4byte _08116AEA
- .4byte _08116B44
- .4byte _08116B70
- .4byte _08116AEA
-_08116AE4:
- movs r0, 0xC
- strb r0, [r6, 0x8]
- b _08116B70
-_08116AEA:
- movs r0, 0xE
- strb r0, [r6, 0x8]
- b _08116B70
-_08116AF0:
- ldr r4, _08116B30 @ =gStringVar4
- ldr r5, _08116B34 @ =gUnknown_203B058
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_81163B0
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r4, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116B70
- movs r0, 0x7
- movs r1, 0
- bl sub_80FB9E4
- ldr r0, _08116B38 @ =gStringVar1
- ldr r2, _08116B3C @ =gUnknown_8456C74
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r1, _08116B40 @ =gUnknown_8457700
- adds r0, r4, 0
- bl StringExpandPlaceholders
- b _08116B70
- .align 2, 0
-_08116B30: .4byte gStringVar4
-_08116B34: .4byte gUnknown_203B058
-_08116B38: .4byte gStringVar1
-_08116B3C: .4byte gUnknown_8456C74
-_08116B40: .4byte gUnknown_8457700
-_08116B44:
- ldrb r0, [r6, 0x15]
- cmp r0, 0xF0
- bls _08116B6C
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116B68 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116B70
- movs r0, 0xC
- movs r1, 0
- bl sub_80FB9E4
- movs r0, 0
- b _08116B6E
- .align 2, 0
-_08116B68: .4byte gStringVar4
-_08116B6C:
- adds r0, 0x1
-_08116B6E:
- strb r0, [r6, 0x15]
-_08116B70:
- bl sub_80FB9F4
- lsls r0, 24
- cmp r0, 0
- beq _08116B7C
- b _08116D06
-_08116B7C:
- ldr r0, _08116B90 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08116B8A
- b _08116D06
-_08116B8A:
- movs r0, 0x7
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116B90: .4byte gMain
-_08116B94:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116BAC @ =gUnknown_845771C
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08116BA6
- b _08116D06
-_08116BA6:
- movs r0, 0x8
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116BAC: .4byte gUnknown_845771C
-_08116BB0:
- adds r4, r6, 0
- adds r4, 0x9
- bl sub_80FB9F4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08116BEE
- cmp r1, r0
- bgt _08116BDC
- subs r0, 0x2
- cmp r1, r0
- beq _08116BF2
- b _08116D06
-_08116BDC:
- cmp r1, 0
- beq _08116BE6
- cmp r1, 0x1
- beq _08116BEE
- b _08116D06
-_08116BE6:
- bl sub_80FA6BC
- movs r0, 0x9
- b _08116BF4
-_08116BEE:
- movs r0, 0x5
- b _08116BF4
-_08116BF2:
- movs r0, 0x6
-_08116BF4:
- strb r0, [r6, 0x8]
-_08116BF6:
- ldrb r0, [r6, 0xE]
- bl RedrawListMenu
- b _08116D06
-_08116BFE:
- bl sub_80FB9F4
- lsls r0, 24
- cmp r0, 0
- bne _08116C0A
- b _08116D06
-_08116C0A:
- movs r0, 0x6
- strb r0, [r6, 0x8]
- b _08116D06
-_08116C10:
- ldrb r0, [r6, 0xD]
- bl ClearWindowTilemap
- ldrb r0, [r6, 0xD]
- movs r1, 0
- bl ClearStdWindowAndFrame
- ldrb r0, [r6, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r6, 0xC]
- bl ClearWindowTilemap
- ldrb r0, [r6, 0xB]
- movs r1, 0
- bl ClearStdWindowAndFrame
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r6, 0xD]
- bl RemoveWindow
- ldrb r0, [r6, 0xB]
- bl RemoveWindow
- ldrb r0, [r6, 0xC]
- bl RemoveWindow
- ldrb r0, [r6, 0x11]
- bl DestroyTask
- ldr r0, [r6]
- bl Free
- ldr r0, [r6, 0x4]
- bl Free
- ldrb r0, [r6, 0x8]
- adds r0, 0x1
- strb r0, [r6, 0x8]
- b _08116D06
-_08116C68:
- bl DestroyWirelessStatusIndicatorSprite
- adds r5, r6, 0
- adds r5, 0x9
- ldr r4, _08116C90 @ =gUnknown_8457754
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116D06
- ldr r0, _08116C94 @ =gSpecialVar_Result
- movs r1, 0x6
- b _08116CDC
- .align 2, 0
-_08116C90: .4byte gUnknown_8457754
-_08116C94: .4byte gSpecialVar_Result
-_08116C98:
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _08116CA4 @ =gSpecialVar_Result
- movs r1, 0x5
- b _08116CDC
- .align 2, 0
-_08116CA4: .4byte gSpecialVar_Result
-_08116CA8:
- bl DestroyWirelessStatusIndicatorSprite
- adds r5, r6, 0
- adds r5, 0x9
- ldr r4, _08116CC4 @ =gUnknown_8457754
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- b _08116CCE
- .align 2, 0
-_08116CC4: .4byte gUnknown_8457754
-_08116CC8:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116CE4 @ =gStringVar4
-_08116CCE:
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116D06
- ldr r0, _08116CE8 @ =gSpecialVar_Result
- movs r1, 0x8
-_08116CDC:
- strh r1, [r0]
- movs r0, 0x17
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116CE4: .4byte gStringVar4
-_08116CE8: .4byte gSpecialVar_Result
-_08116CEC:
- adds r0, r4, 0
- bl DestroyTask
- bl sub_811A41C
- bl sub_80F8DC0
- b _08116D06
-_08116CFC:
- bl sub_8117990
- adds r0, r4, 0
- bl DestroyTask
-_08116D06:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8116738
-
- 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 sub_80FCD50
- 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}
- adds r4, r0, 0
- ldr r0, _08117F0C @ =sub_8117F20
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08117F10 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08117F14 @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08117F18 @ =gUnknown_3002028
- str r1, [r0]
- movs r2, 0
- strb r2, [r1, 0x8]
- strb r2, [r1, 0x9]
- subs r4, 0x15
- strb r4, [r1, 0x12]
- ldr r0, _08117F1C @ =gSpecialVar_Result
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08117F0C: .4byte sub_8117F20
-_08117F10: .4byte gUnknown_203B05C
-_08117F14: .4byte gTasks+0x8
-_08117F18: .4byte gUnknown_3002028
-_08117F1C: .4byte gSpecialVar_Result
- thumb_func_end MEvent_CreateTask_CardOrNewsWithFriend
-
- thumb_func_start sub_8117F20
-sub_8117F20: @ 8117F20
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08117F40 @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x8]
- cmp r0, 0xC
- bls _08117F34
- b _08118288
-_08117F34:
- lsls r0, 2
- ldr r1, _08117F44 @ =_08117F48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08117F40: .4byte gUnknown_203B05C
-_08117F44: .4byte _08117F48
- .align 2, 0
-_08117F48:
- .4byte _08117F7C
- .4byte _08117FB0
- .4byte _08117FC0
- .4byte _08118070
- .4byte _08118150
- .4byte _0811818C
- .4byte _081181EC
- .4byte _08118248
- .4byte _081181EC
- .4byte _08118222
- .4byte _081181EC
- .4byte _0811826C
- .4byte _08118278
-_08117F7C:
- ldrb r0, [r5, 0x12]
- adds r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x8]
- b _08118288
-_08117FB0:
- ldr r0, _08117FBC @ =gUnknown_8458FE4
- bl AddTextPrinterToWindow1
- movs r0, 0x2
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08117FBC: .4byte gUnknown_8458FE4
-_08117FC0:
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r5, 0x4]
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- bl sub_811A054
- movs r4, 0
- strb r0, [r5, 0x11]
- ldr r0, _0811805C @ =gUnknown_8456D4C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl GetMysteryGiftBaseBlock
- lsls r0, 16
- ldr r2, _08118060 @ =0x0000ffff
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strb r0, [r5, 0xB]
- ldr r0, _08118064 @ =gUnknown_8456D54
- bl AddWindow
- strb r0, [r5, 0xD]
- ldrb r0, [r5, 0xB]
- bl MG_DrawTextBorder
- ldr r0, _08118068 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _0811806C @ =gUnknown_8456DDC
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r5, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0xE]
- ldrb r0, [r5, 0xD]
- bl MG_DrawTextBorder
- ldrb r0, [r5, 0xD]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0xD]
- bl PutWindowTilemap
- ldrb r0, [r5, 0xD]
- bl sub_8115924
- ldrb r0, [r5, 0xD]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- strb r4, [r5, 0xF]
- movs r0, 0x3
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_0811805C: .4byte gUnknown_8456D4C
-_08118060: .4byte 0x0000ffff
-_08118064: .4byte gUnknown_8456D54
-_08118068: .4byte gMultiuseListMenuTemplate
-_0811806C: .4byte gUnknown_8456DDC
-_08118070:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0811808E
- cmp r2, 0x1
- bne _08118086
- movs r0, 0x2
- bl PlaySE
-_08118086:
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- b _08118288
-_0811808E:
- ldrb r0, [r5, 0xE]
- bl ListMenu_ProcessInput
- adds r2, r0, 0
- ldr r0, _08118128 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08118138
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _08118138
- ldr r0, [r5]
- lsls r1, r2, 5
- adds r0, r1
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08118130
- lsrs r0, r1, 7
- cmp r0, 0
- bne _08118130
- strb r2, [r5, 0xF]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- ldr r4, _0811812C @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldrb r1, [r5, 0xF]
- 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_80FBF54
- movs r0, 0x67
- bl PlaySE
- movs r0, 0x4
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08118128: .4byte gMain
-_0811812C: .4byte gStringVar1
-_08118130:
- movs r0, 0x7
- bl PlaySE
- b _08118288
-_08118138:
- ldr r0, _0811814C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08118146
- b _08118288
-_08118146:
- movs r0, 0x6
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_0811814C: .4byte gMain
-_08118150:
- ldr r0, _08118184 @ =gUnknown_8459238
- bl AddTextPrinterToWindow1
- ldr r4, _08118188 @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- movs r0, 0x5
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08118184: .4byte gUnknown_8459238
-_08118188: .4byte gStringVar1
-_0811818C:
- ldr r0, _081181C4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _081181AA
- ldr r2, _081181C8 @ =gUnknown_203B058
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r2]
- movs r0, 0xA
- strb r0, [r5, 0x8]
-_081181AA:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _081181D6
- cmp r0, 0x5
- bgt _081181CC
- cmp r0, 0x2
- bgt _08118288
- cmp r0, 0x1
- blt _08118288
- b _081181D0
- .align 2, 0
-_081181C4: .4byte gReceivedRemoteLinkPlayers
-_081181C8: .4byte gUnknown_203B058
-_081181CC:
- cmp r0, 0x6
- bne _08118288
-_081181D0:
- movs r0, 0x8
- strb r0, [r5, 0x8]
- b _08118288
-_081181D6:
- ldr r0, _081181E8 @ =gUnknown_84576AC
- bl AddTextPrinterToWindow1
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _08118288
- .align 2, 0
-_081181E8: .4byte gUnknown_84576AC
-_081181EC:
- ldrb r0, [r5, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xD]
- bl RemoveWindow
- ldrb r0, [r5, 0xB]
- bl RemoveWindow
- ldrb r0, [r5, 0x11]
- bl DestroyTask
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- b _08118288
-_08118222:
- adds r5, 0x9
- ldr r4, _08118244 @ =gUnknown_8457838
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- beq _08118288
- bl DestroyWirelessStatusIndicatorSprite
- b _08118252
- .align 2, 0
-_08118244: .4byte gUnknown_8457838
-_08118248:
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _08118264 @ =gUnknown_84571B8
- bl AddTextPrinterToWindow1
-_08118252:
- adds r0, r6, 0
- bl DestroyTask
- bl sub_80F8DC0
- ldr r1, _08118268 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _08118288
- .align 2, 0
-_08118264: .4byte gUnknown_84571B8
-_08118268: .4byte gSpecialVar_Result
-_0811826C:
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- bl sub_800AB9C
- b _08118288
-_08118278:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08118288
- adds r0, r6, 0
- bl DestroyTask
-_08118288:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8117F20
-
- thumb_func_start MEvent_CreateTask_CardOrNewsOverWireless
-MEvent_CreateTask_CardOrNewsOverWireless: @ 8118290
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _081182C8 @ =sub_81182DC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081182CC @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081182D0 @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _081182D4 @ =gUnknown_3002028
- str r1, [r0]
- movs r2, 0
- strb r2, [r1, 0x8]
- strb r2, [r1, 0x9]
- subs r4, 0x15
- strb r4, [r1, 0x12]
- ldr r0, _081182D8 @ =gSpecialVar_Result
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081182C8: .4byte sub_81182DC
-_081182CC: .4byte gUnknown_203B05C
-_081182D0: .4byte gTasks+0x8
-_081182D4: .4byte gUnknown_3002028
-_081182D8: .4byte gSpecialVar_Result
- thumb_func_end MEvent_CreateTask_CardOrNewsOverWireless
-
- thumb_func_start sub_81182DC
-sub_81182DC: @ 81182DC
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081182FC @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x8]
- cmp r0, 0xE
- bls _081182F0
- b _08118604
-_081182F0:
- lsls r0, 2
- ldr r1, _08118300 @ =_08118304
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081182FC: .4byte gUnknown_203B05C
-_08118300: .4byte _08118304
- .align 2, 0
-_08118304:
- .4byte _08118340
- .4byte _0811836E
- .4byte _08118380
- .4byte _08118408
- .4byte _081184C8
- .4byte _08118504
- .4byte _08118564
- .4byte _081185A8
- .4byte _08118564
- .4byte _0811859A
- .4byte _08118564
- .4byte _081185B4
- .4byte _08118564
- .4byte _081185E8
- .4byte _081185F4
-_08118340:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x8]
- b _08118604
-_0811836E:
- ldr r0, _0811837C @ =gUnknown_84591DC
- bl AddTextPrinterToWindow1
- movs r0, 0x2
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_0811837C: .4byte gUnknown_84591DC
-_08118380:
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r5, 0x4]
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- bl sub_811A084
- strb r0, [r5, 0x11]
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _081183EC
- ldr r0, _081183F8 @ =gUnknown_8456D4C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl GetMysteryGiftBaseBlock
- lsls r0, 16
- ldr r2, _081183FC @ =0x0000ffff
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strb r0, [r5, 0xB]
- ldrb r0, [r5, 0xB]
- bl MG_DrawTextBorder
- ldr r0, _08118400 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08118404 @ =gUnknown_8456DDC
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldrb r1, [r5, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0xE]
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_081183EC:
- movs r0, 0
- strb r0, [r5, 0xF]
- movs r0, 0x3
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_081183F8: .4byte gUnknown_8456D4C
-_081183FC: .4byte 0x0000ffff
-_08118400: .4byte gMultiuseListMenuTemplate
-_08118404: .4byte gUnknown_8456DDC
-_08118408:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0811842E
- cmp r0, 0x1
- bne _0811841E
- movs r0, 0x2
- bl PlaySE
-_0811841E:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- bne _08118426
- b _08118604
-_08118426:
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- b _08118604
-_0811842E:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _0811843A
- ldrb r0, [r5, 0xE]
- bl ListMenu_ProcessInput
-_0811843A:
- ldrb r0, [r5, 0x14]
- cmp r0, 0x78
- bls _081184A8
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081184BC
- ldrb r1, [r2, 0xA]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081184BC
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- adds r0, r2, 0
- bl sub_8119FB0
- cmp r0, 0
- beq _0811849C
- strb r4, [r5, 0xF]
- strb r4, [r5, 0x14]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldr r0, [r5]
- 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
- movs r0, 0x67
- bl PlaySE
- movs r0, 0x4
- strb r0, [r5, 0x8]
- b _081184BC
-_0811849C:
- movs r0, 0x16
- bl PlaySE
- movs r0, 0xA
- strb r0, [r5, 0x8]
- b _081184BC
-_081184A8:
- ldr r0, _081184C4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081184BC
- movs r1, 0
- movs r0, 0x6
- strb r0, [r5, 0x8]
- strb r1, [r5, 0x14]
-_081184BC:
- ldrb r0, [r5, 0x14]
- adds r0, 0x1
- strb r0, [r5, 0x14]
- b _08118604
- .align 2, 0
-_081184C4: .4byte gMain
-_081184C8:
- ldr r0, _081184FC @ =gUnknown_845928C
- bl AddTextPrinterToWindow1
- ldr r4, _08118500 @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- movs r0, 0x5
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_081184FC: .4byte gUnknown_845928C
-_08118500: .4byte gStringVar1
-_08118504:
- ldr r0, _0811853C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08118522
- ldr r2, _08118540 @ =gUnknown_203B058
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r2]
- movs r0, 0xC
- strb r0, [r5, 0x8]
-_08118522:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _0811854E
- cmp r0, 0x5
- bgt _08118544
- cmp r0, 0x2
- bgt _08118604
- cmp r0, 0x1
- blt _08118604
- b _08118548
- .align 2, 0
-_0811853C: .4byte gReceivedRemoteLinkPlayers
-_08118540: .4byte gUnknown_203B058
-_08118544:
- cmp r0, 0x6
- bne _08118604
-_08118548:
- movs r0, 0x8
- strb r0, [r5, 0x8]
- b _08118604
-_0811854E:
- ldr r0, _08118560 @ =gUnknown_845777C
- bl AddTextPrinterToWindow1
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _08118604
- .align 2, 0
-_08118560: .4byte gUnknown_845777C
-_08118564:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _08118580
- ldrb r0, [r5, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xB]
- bl RemoveWindow
-_08118580:
- ldrb r0, [r5, 0x11]
- bl DestroyTask
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- b _08118604
-_0811859A:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r1, _081185A4 @ =gUnknown_84577BC
- b _081185C2
- .align 2, 0
-_081185A4: .4byte gUnknown_84577BC
-_081185A8:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r1, _081185B0 @ =gUnknown_84571E0
- b _081185C2
- .align 2, 0
-_081185B0: .4byte gUnknown_84571E0
-_081185B4:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r2, _081185E0 @ =gUnknown_845933C
- ldrb r1, [r5, 0x12]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
-_081185C2:
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- beq _08118604
- bl DestroyWirelessStatusIndicatorSprite
- adds r0, r4, 0
- bl DestroyTask
- bl sub_80F8DC0
- ldr r1, _081185E4 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _08118604
- .align 2, 0
-_081185E0: .4byte gUnknown_845933C
-_081185E4: .4byte gSpecialVar_Result
-_081185E8:
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- bl sub_800AB9C
- b _08118604
-_081185F4:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08118604
- adds r0, r4, 0
- bl DestroyTask
-_08118604:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81182DC
-
- thumb_func_start UnionRoomSpecial
-UnionRoomSpecial: @ 811860C
- push {r4,lr}
- bl ClearAndInitHostRFUtgtGname
- ldr r0, _08118648 @ =sub_81186E0
- movs r1, 0xA
- bl CreateTask
- ldr r4, _0811864C @ =gUnknown_203B05C
- movs r0, 0x96
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _08118650 @ =gUnknown_300202C
- str r0, [r1]
- movs r1, 0
- strb r1, [r0, 0x14]
- strb r1, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- ldr r0, _08118654 @ =gSpecialVar_Result
- strh r1, [r0]
- movs r0, 0xD0
- movs r1, 0x1
- bl sub_8107D38
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08118648: .4byte sub_81186E0
-_0811864C: .4byte gUnknown_203B05C
-_08118650: .4byte gUnknown_300202C
-_08118654: .4byte gSpecialVar_Result
- thumb_func_end UnionRoomSpecial
-
- thumb_func_start sub_8118658
-sub_8118658: @ 8118658
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- ldrb r0, [r0]
- orrs r0, r1
- bx lr
- thumb_func_end sub_8118658
-
- thumb_func_start sub_8118664
-sub_8118664: @ 8118664
- push {lr}
- adds r3, r1, 0
- ldr r1, _08118684 @ =gUnknown_203B05C
- ldr r2, [r1]
- movs r1, 0x8
- strb r1, [r2, 0x14]
- strb r0, [r2, 0x15]
- ldr r0, _08118688 @ =gStringVar4
- cmp r3, r0
- beq _0811867E
- adds r1, r3, 0
- bl StringExpandPlaceholders
-_0811867E:
- pop {r0}
- bx r0
- .align 2, 0
-_08118684: .4byte gUnknown_203B05C
-_08118688: .4byte gStringVar4
- thumb_func_end sub_8118664
-
- thumb_func_start sub_811868C
-sub_811868C: @ 811868C
- push {lr}
- adds r2, r0, 0
- ldr r0, _081186A8 @ =gUnknown_203B05C
- ldr r1, [r0]
- movs r0, 0x1A
- strb r0, [r1, 0x14]
- ldr r0, _081186AC @ =gStringVar4
- cmp r2, r0
- beq _081186A4
- adds r1, r2, 0
- bl StringExpandPlaceholders
-_081186A4:
- pop {r0}
- bx r0
- .align 2, 0
-_081186A8: .4byte gUnknown_203B05C
-_081186AC: .4byte gStringVar4
- thumb_func_end sub_811868C
-
- thumb_func_start sub_81186B0
-sub_81186B0: @ 81186B0
- push {lr}
- ldr r3, _081186C4 @ =gDecompressionBuffer + 0x3F00
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r3, 0
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_081186C4: .4byte gDecompressionBuffer + 0x3F00
- thumb_func_end sub_81186B0
-
- thumb_func_start sub_81186C8
-sub_81186C8: @ 81186C8
- push {lr}
- ldr r0, [r0]
- ldr r1, _081186DC @ =gDecompressionBuffer + 0x3F00
- movs r2, 0x80
- lsls r2, 1
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_081186DC: .4byte gDecompressionBuffer + 0x3F00
- thumb_func_end sub_81186C8
-
- thumb_func_start sub_81186E0
-sub_81186E0: @ 81186E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- ldr r0, _08118710 @ =gUnknown_203B05C
- ldr r6, [r0]
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08118714 @ =gTasks+0x8
- adds r7, r0, r1
- ldrb r0, [r6, 0x14]
- cmp r0, 0x38
- bls _08118706
- bl _081198DC
-_08118706:
- lsls r0, 2
- ldr r1, _08118718 @ =_0811871C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08118710: .4byte gUnknown_203B05C
-_08118714: .4byte gTasks+0x8
-_08118718: .4byte _0811871C
- .align 2, 0
-_0811871C:
- .4byte _08118800
- .4byte _08118858
- .4byte _0811887C
- .4byte _081188CC
- .4byte _081189AA
- .4byte _08118E60
- .4byte _08118C58
- .4byte _08118E60
- .4byte _081198C8
- .4byte _081191D4
- .4byte _081192E0
- .4byte _081190B0
- .4byte _081190CA
- .4byte _08119330
- .4byte _08119354
- .4byte _0811935C
- .4byte _0811936C
- .4byte _0811939A
- .4byte _081193AE
- .4byte _08118F36
- .4byte _08118FBC
- .4byte _08118FDA
- .4byte _0811904E
- .4byte _08118ADE
- .4byte _08118B04
- .4byte _08118B7C
- .4byte _0811989C
- .4byte _08118D50
- .4byte _08118D38
- .4byte _08118DD4
- .4byte _08118C2E
- .4byte _08118DAA
- .4byte _08118DA0
- .4byte _08119164
- .4byte _08119184
- .4byte _081191C4
- .4byte _081192E8
- .4byte _08119324
- .4byte _08118BF8
- .4byte _0811910C
- .4byte _08118E98
- .4byte _08118EC8
- .4byte _081193D8
- .4byte _08119468
- .4byte _081195B8
- .4byte _08119620
- .4byte _0811963C
- .4byte _08119484
- .4byte _08119644
- .4byte _08119784
- .4byte _081197B8
- .4byte _08119840
- .4byte _0811953C
- .4byte _081194F0
- .4byte _08119504
- .4byte _0811959C
- .4byte _081195EC
-_08118800:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0x4]
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0xC]
- movs r0, 0x80
- lsls r0, 1
- bl AllocZeroed
- str r0, [r6]
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r6, 0x8]
- ldr r0, [r6]
- movs r1, 0x8
- bl sub_811A5E4
- ldr r1, _08118854 @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
- ldr r0, [r6, 0xC]
- ldr r1, [r6, 0x4]
- movs r2, 0x9
- bl sub_8119E84
- adds r1, r6, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r0, r6, 0
- adds r0, 0x8C
- bl sub_811B754
- bl sub_811BB68
- movs r0, 0x1
- bl _081198DA
- .align 2, 0
-_08118854: .4byte gUnknown_203B058
-_08118858:
- adds r0, r6, 0
- adds r0, 0x21
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl sub_811BAAC
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- beq _08118876
- bl _081198DC
-_08118876:
- movs r0, 0x2
- bl _081198DA
-_0811887C:
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- ldr r2, _081188C4 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBC00
- ldr r0, [r6, 0x8]
- movs r1, 0x1
- bl sub_811A5E4
- ldr r0, [r6, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r6, 0xC]
- movs r1, 0x4
- bl sub_811A650
- ldr r1, _081188C8 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x3
- bl _081198DA
- .align 2, 0
-_081188C4: .4byte gUnknown_203B06C
-_081188C8: .4byte gSpecialVar_Result
-_081188CC:
- bl GetPartyMenuType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- beq _081188E4
- bl GetPartyMenuType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- bne _081189A4
-_081188E4:
- ldr r4, _08118900 @ =gUnknown_203B06C
- ldrh r0, [r4]
- cmp r0, 0
- beq _081189A4
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _08118904
- cmp r0, 0x2
- beq _08118954
- b _08118992
- .align 2, 0
-_08118900: .4byte gUnknown_203B06C
-_08118904:
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- cmp r5, 0x5
- bls _08118930
- adds r0, r4, 0
- bl sub_811B148
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811892C @ =gUnknown_8458D54
- bl sub_811868C
- b _08118992
- .align 2, 0
-_0811892C: .4byte gUnknown_8458D54
-_08118930:
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_811B16C
- cmp r0, 0
- bne _08118950
- ldr r1, _0811894C @ =gUnknown_8458CD4
- movs r0, 0x34
- bl sub_8118664
- b _08118992
- .align 2, 0
-_0811894C: .4byte gUnknown_8458CD4
-_08118950:
- movs r0, 0x37
- b _08118990
-_08118954:
- adds r0, r6, 0
- bl sub_81186C8
- ldrb r0, [r4, 0x8]
- strh r0, [r7, 0x2]
- cmp r5, 0x5
- bls _08118970
- ldr r0, _0811896C @ =gUnknown_8458D9C
- bl sub_811868C
- b _08118992
- .align 2, 0
-_0811896C: .4byte gUnknown_8458D9C
-_08118970:
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- ldr r1, _0811899C @ =gUnknown_203B058
- movs r0, 0x44
- strb r0, [r1]
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_811B1B4
- movs r0, 0x33
-_08118990:
- strb r0, [r6, 0x14]
-_08118992:
- ldr r1, _081189A0 @ =gUnknown_203B06C
- movs r0, 0
- strh r0, [r1]
- bl _081198DC
- .align 2, 0
-_0811899C: .4byte gUnknown_203B058
-_081189A0: .4byte gUnknown_203B06C
-_081189A4:
- movs r0, 0x4
- bl _081198DA
-_081189AA:
- ldr r4, _081189D8 @ =gSpecialVar_Result
- ldrh r0, [r4]
- cmp r0, 0
- beq _08118A0E
- cmp r0, 0x9
- bne _081189E4
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r0, 0x2
- bl PlaySE
- ldr r0, _081189DC @ =gStringVar1
- ldr r1, _081189E0 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r1, 0
- movs r0, 0x2A
- b _08118A06
- .align 2, 0
-_081189D8: .4byte gSpecialVar_Result
-_081189DC: .4byte gStringVar1
-_081189E0: .4byte gSaveBlock2Ptr
-_081189E4:
- cmp r0, 0xB
- bne _081189F8
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r1, 0
- movs r0, 0x17
- b _08118A06
-_081189F8:
- movs r0, 0
- strh r0, [r7]
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r7, 0x2]
- movs r1, 0
- movs r0, 0x18
-_08118A06:
- strb r0, [r6, 0x14]
- strh r1, [r4]
- bl _081198DC
-_08118A0E:
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08118A1E
- bl _081198DC
-_08118A1E:
- ldr r0, _08118A4C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08118A84
- ldr r0, [r6]
- adds r2, r7, 0x2
- adds r3, r6, 0
- adds r3, 0x21
- adds r1, r7, 0
- bl sub_811BF00
- cmp r0, 0
- beq _08118A50
- movs r0, 0x5
- bl PlaySE
- bl sub_811B298
- movs r0, 0x18
- bl _081198DA
- .align 2, 0
-_08118A4C: .4byte gMain
-_08118A50:
- bl sub_811A9B8
- cmp r0, 0
- beq _08118A84
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r0, 0x2
- bl PlaySE
- bl sub_811B298
- ldr r0, _08118A7C @ =gStringVar1
- ldr r1, _08118A80 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x2D
- bl _081198DA
- .align 2, 0
-_08118A7C: .4byte gStringVar1
-_08118A80: .4byte gSaveBlock2Ptr
-_08118A84:
- bl sub_8119B94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08118AA6
- cmp r0, 0x2
- bgt _08118A9A
- cmp r0, 0x1
- beq _08118AA0
- b _08118AD4
-_08118A9A:
- cmp r0, 0x4
- beq _08118AAE
- b _08118AD4
-_08118AA0:
- movs r0, 0x37
- bl PlaySE
-_08118AA6:
- adds r0, r6, 0
- bl sub_811BECC
- b _08118AD4
-_08118AAE:
- movs r0, 0xB
- strb r0, [r6, 0x14]
- bl sub_811B298
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- adds r0, r6, 0
- bl sub_811B2D8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x53
- movs r2, 0
- bl sub_80FB008
-_08118AD4:
- adds r0, r6, 0
- bl sub_811BEDC
- bl _081198DC
-_08118ADE:
- ldr r0, _08118B00 @ =Task_StartMenuHandleInput
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08118AEE
- bl _081198DC
-_08118AEE:
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FB008
- movs r0, 0x4
- bl _081198DA
- .align 2, 0
-_08118B00: .4byte Task_StartMenuHandleInput
-_08118B04:
- bl sub_811A0E0
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- ldr r0, [r6]
- ldrb r1, [r7]
- ldrb r2, [r7, 0x2]
- adds r3, r4, 0
- bl sub_811AA5C
- cmp r0, 0x1
- beq _08118B48
- cmp r0, 0x1
- bgt _08118B3A
- cmp r0, 0
- beq _08118B42
- bl _081198DC
-_08118B3A:
- cmp r0, 0x2
- beq _08118B6C
- bl _081198DC
-_08118B42:
- movs r0, 0x1A
- bl _081198DA
-_08118B48:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- ldr r2, _08118B68 @ =gUnknown_203B058
- ldrb r2, [r2]
- bl sub_80FC114
- strh r5, [r6, 0x12]
- movs r0, 0x19
- bl _081198DA
- .align 2, 0
-_08118B68: .4byte gUnknown_203B058
-_08118B6C:
- ldr r1, _08118B78 @ =gStringVar4
- movs r0, 0x13
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118B78: .4byte gStringVar4
-_08118B7C:
- bl sub_811A0E0
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- blt _08118BC2
- cmp r4, 0x2
- ble _08118B9E
- cmp r4, 0x4
- bne _08118BC2
- movs r0, 0x1
- bl sub_811B258
- strb r4, [r6, 0x14]
- b _08118BC2
-_08118B9E:
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _08118BB4
- ldr r0, _08118BB0 @ =gUnknown_8457F90
- bl sub_811868C
- b _08118BBC
- .align 2, 0
-_08118BB0: .4byte gUnknown_8457F90
-_08118BB4:
- ldr r1, _08118BE4 @ =gUnknown_8457F90
- movs r0, 0x1E
- bl sub_8118664
-_08118BBC:
- ldr r1, _08118BE8 @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
-_08118BC2:
- ldr r0, _08118BEC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118BCE
- bl _081198DC
-_08118BCE:
- ldr r0, _08118BF0 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- ldr r0, _08118BF4 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- movs r0, 0x26
- bl _081198DA
- .align 2, 0
-_08118BE4: .4byte gUnknown_8457F90
-_08118BE8: .4byte gUnknown_203B058
-_08118BEC: .4byte gReceivedRemoteLinkPlayers
-_08118BF0: .4byte gBlockSendBuffer
-_08118BF4: .4byte sub_8117280
-_08118BF8:
- ldr r0, _08118C1C @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08118C08
- bl _081198DC
-_08118C08:
- ldr r0, _08118C20 @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x44
- bne _08118C28
- ldr r1, _08118C24 @ =gUnknown_84578BC
- movs r0, 0x1F
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118C1C: .4byte sub_8117280
-_08118C20: .4byte gUnknown_203B058
-_08118C24: .4byte gUnknown_84578BC
-_08118C28:
- movs r0, 0x5
- bl _081198DA
-_08118C2E:
- ldr r0, _08118C54 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08118C3A
- bl _081198DC
-_08118C3A:
- movs r0, 0
- bl sub_811B258
- movs r2, 0
- ldrsh r0, [r7, r2]
- movs r3, 0x2
- ldrsh r1, [r7, r3]
- ldr r2, [r6]
- bl sub_811C028
- movs r0, 0x2
- bl _081198DA
- .align 2, 0
-_08118C54: .4byte gReceivedRemoteLinkPlayers
-_08118C58:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1B
- adds r2, r6, 0
- adds r2, 0x1C
- ldr r3, _08118C8C @ =gUnknown_8456DF4
- ldr r4, _08118C90 @ =gUnknown_8456E1C
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _08118C7C
- bl _081198DC
-_08118C7C:
- ldr r0, _08118C94 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118C98
- movs r0, 0x1C
- bl _081198DA
- .align 2, 0
-_08118C8C: .4byte gUnknown_8456DF4
-_08118C90: .4byte gUnknown_8456E1C
-_08118C94: .4byte gReceivedRemoteLinkPlayers
-_08118C98:
- adds r1, r6, 0
- adds r1, 0x84
- movs r0, 0
- strh r0, [r1]
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- ldr r1, [r6]
- bl sub_811ADC4
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _08118CB6
- cmp r5, 0x40
- bne _08118CE8
-_08118CB6:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x40
- strh r1, [r0]
- bl sub_80F9E2C
- ldr r0, _08118CDC @ =gStringVar4
- ldr r2, _08118CE0 @ =gUnknown_845842C
- ldr r1, _08118CE4 @ =gLinkPlayers
- ldrb r1, [r1, 0x13]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x20
- bl _081198DA
- .align 2, 0
-_08118CDC: .4byte gStringVar4
-_08118CE0: .4byte gUnknown_845842C
-_08118CE4: .4byte gLinkPlayers
-_08118CE8:
- ldr r0, _08118D10 @ =gUnknown_203B058
- strb r5, [r0]
- ldr r1, _08118D14 @ =gUnknown_203B059
- lsrs r0, r5, 8
- strb r0, [r1]
- lsls r0, r5, 24
- lsrs r0, 24
- cmp r0, 0x41
- bne _08118D1C
- bl sub_811B0F0
- cmp r0, 0
- bne _08118D1C
- ldr r1, _08118D18 @ =gUnknown_845847C
- movs r0, 0x5
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118D10: .4byte gUnknown_203B058
-_08118D14: .4byte gUnknown_203B059
-_08118D18: .4byte gUnknown_845847C
-_08118D1C:
- ldr r0, _08118D34 @ =gUnknown_203B058
- ldrb r0, [r0]
- movs r1, 0x40
- orrs r1, r0
- adds r0, r6, 0
- adds r0, 0x4C
- strh r1, [r0]
- bl sub_80F9E2C
- movs r0, 0x1B
- bl _081198DA
- .align 2, 0
-_08118D34: .4byte gUnknown_203B058
-_08118D38:
- ldr r0, _08118D48 @ =gStringVar4
- ldr r1, _08118D4C @ =gUnknown_8458434
- bl StringCopy
- movs r0, 0x24
- bl _081198DA
- .align 2, 0
-_08118D48: .4byte gStringVar4
-_08118D4C: .4byte gUnknown_8458434
-_08118D50:
- adds r0, r6, 0
- bl sub_811B0A4
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- adds r0, r6, 0
- adds r0, 0x4C
- ldrh r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- bl sub_811A9FC
- adds r5, r0, 0
- adds r0, r6, 0
- adds r0, 0x16
- ldr r3, _08118D9C @ =gUnknown_84580F4
- lsls r1, r5, 2
- lsls r2, r4, 4
- adds r1, r2
- adds r1, r3
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08118D90
- bl _081198DC
-_08118D90:
- movs r0, 0
- strh r0, [r7, 0x6]
- movs r0, 0x1D
- bl _081198DA
- .align 2, 0
-_08118D9C: .4byte gUnknown_84580F4
-_08118DA0:
- bl sub_800AAC0
- movs r0, 0x24
- bl _081198DA
-_08118DAA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x44
- strh r1, [r0]
- ldr r2, _08118DD0 @ =gUnknown_203B06C
- ldrh r1, [r2, 0xE]
- adds r3, r6, 0
- adds r3, 0x4E
- strh r1, [r3]
- ldrh r2, [r2, 0x10]
- adds r1, r6, 0
- adds r1, 0x50
- strh r2, [r1]
- bl sub_80F9E2C
- movs r0, 0x1D
- bl _081198DA
- .align 2, 0
-_08118DD0: .4byte gUnknown_203B06C
-_08118DD4:
- ldr r0, _08118DEC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118DF8
- ldr r0, _08118DF0 @ =gStringVar4
- ldr r1, _08118DF4 @ =gUnknown_8458434
- bl StringCopy
- movs r0, 0x1C
- bl _081198DA
- .align 2, 0
-_08118DEC: .4byte gReceivedRemoteLinkPlayers
-_08118DF0: .4byte gStringVar4
-_08118DF4: .4byte gUnknown_8458434
-_08118DF8:
- adds r0, r6, 0
- bl sub_811B0A4
- adds r0, r6, 0
- adds r0, 0x84
- ldrh r0, [r0]
- cmp r0, 0x51
- bne _08118E2E
- ldr r0, _08118E20 @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _08118E28
- ldr r0, _08118E24 @ =gStringVar4
- adds r1, r6, 0
- movs r2, 0
- bl sub_811B31C
- movs r0, 0x28
- bl _081198DA
- .align 2, 0
-_08118E20: .4byte gUnknown_203B058
-_08118E24: .4byte gStringVar4
-_08118E28:
- movs r0, 0xD
- bl _081198DA
-_08118E2E:
- cmp r0, 0x52
- beq _08118E36
- bl _081198DC
-_08118E36:
- movs r5, 0
- movs r0, 0x20
- strb r0, [r6, 0x14]
- ldr r0, _08118E54 @ =gStringVar4
- ldr r4, _08118E58 @ =gUnknown_203B058
- ldrb r2, [r4]
- movs r1, 0x40
- orrs r1, r2
- ldr r2, _08118E5C @ =gLinkPlayers
- ldrb r2, [r2, 0x13]
- bl sub_811AE68
- strb r5, [r4]
- bl _081198DC
- .align 2, 0
-_08118E54: .4byte gStringVar4
-_08118E58: .4byte gUnknown_203B058
-_08118E5C: .4byte gLinkPlayers
-_08118E60:
- movs r0, 0x2
- ldrsh r1, [r7, r0]
- lsls r1, 5
- ldr r0, [r6]
- adds r0, r1
- bl sub_811AA24
- adds r5, r0, 0
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- ldr r2, _08118E94 @ =gUnknown_8457B04
- lsls r0, r4, 2
- lsls r1, r5, 3
- adds r0, r1
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x6
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118E94: .4byte gUnknown_8457B04
-_08118E98:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08118EC4 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08118EAC
- bl _081198DC
-_08118EAC:
- movs r4, 0
- movs r0, 0x29
- strb r0, [r6, 0x14]
- bl sub_800AB9C
- adds r0, r6, 0
- adds r0, 0x84
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- bl _081198DC
- .align 2, 0
-_08118EC4: .4byte gStringVar4
-_08118EC8:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _08118ED6
- bl _081198DC
-_08118ED6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _08118F30
- ldr r5, _08118F20 @ =gStringVar1
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r4, _08118F24 @ =gLinkPlayers + 8
- adds r1, r4
- adds r0, r5, 0
- bl StringCopy
- ldrh r0, [r4, 0x18]
- adds r4, 0x1C
- adds r1, r4, 0
- bl sub_80FD338
- adds r5, r0, 0
- ldr r0, _08118F28 @ =gStringVar4
- ldr r2, _08118F2C @ =gUnknown_8457C20
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
- movs r0, 0x21
- bl _081198DA
- .align 2, 0
-_08118F20: .4byte gStringVar1
-_08118F24: .4byte gLinkPlayers + 8
-_08118F28: .4byte gStringVar4
-_08118F2C: .4byte gUnknown_8457C20
-_08118F30:
- movs r0, 0x7
- bl _081198DA
-_08118F36:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _08118F60
- cmp r5, 0
- bgt _08118F58
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _08118F9C
- bl _081198DC
-_08118F58:
- cmp r5, 0x1
- beq _08118F9C
- bl _081198DC
-_08118F60:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r4, _08118F98 @ =gUnknown_203B058
- movs r0, 0x45
- strb r0, [r4]
- movs r0, 0x45
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- ldrb r2, [r4]
- bl sub_80FC114
- ldrh r0, [r7, 0x2]
- strh r0, [r6, 0x12]
- movs r0, 0x14
- strb r0, [r6, 0x14]
- strh r5, [r7, 0x6]
- bl _081198DC
- .align 2, 0
-_08118F98: .4byte gUnknown_203B058
-_08118F9C:
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- ldr r1, _08118FB8 @ =gUnknown_8458548
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- bl sub_811868C
- bl _081198DC
- .align 2, 0
-_08118FB8: .4byte gUnknown_8458548
-_08118FBC:
- ldrh r0, [r7, 0x4]
- adds r0, 0x1
- strh r0, [r7, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- bgt _08118FCE
- bl _081198DC
-_08118FCE:
- movs r1, 0
- movs r0, 0x15
- strb r0, [r6, 0x14]
- strh r1, [r7, 0x4]
- bl _081198DC
-_08118FDA:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- beq _08119040
- cmp r4, 0x3
- ble _08118FF8
- cmp r4, 0x4
- bne _08119044
- movs r0, 0x1
- bl sub_811B258
- strb r4, [r6, 0x14]
- b _08119044
-_08118FF8:
- cmp r4, 0x1
- blt _08119044
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _0811902C
- ldr r0, _08119028 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811868C
- b _08119044
- .align 2, 0
-_08119028: .4byte gUnknown_84585E8
-_0811902C:
- ldr r0, _0811903C @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1E
- bl sub_8118664
- b _08119044
- .align 2, 0
-_0811903C: .4byte gUnknown_84585E8
-_08119040:
- movs r0, 0x16
- strb r0, [r6, 0x14]
-_08119044:
- ldrh r0, [r7, 0x6]
- adds r0, 0x1
- strh r0, [r7, 0x6]
- bl _081198DC
-_0811904E:
- bl sub_80FBA00
- cmp r0, 0
- beq _08119096
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _08119088
- ldr r0, _08119084 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811868C
- b _08119096
- .align 2, 0
-_08119084: .4byte gUnknown_84585E8
-_08119088:
- ldr r0, _081190A8 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1E
- bl sub_8118664
-_08119096:
- ldr r0, _081190AC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _081190A2
- bl _081198DC
-_081190A2:
- movs r0, 0x10
- bl _081198DA
- .align 2, 0
-_081190A8: .4byte gUnknown_84585E8
-_081190AC: .4byte gReceivedRemoteLinkPlayers
-_081190B0:
- movs r0, 0x42
- bl PlaySE
- bl sub_80F8FA0
- movs r0, 0
- movs r1, 0xC
- strb r1, [r6, 0x14]
- adds r1, r6, 0
- adds r1, 0x86
- strh r0, [r1]
- bl _081198DC
-_081190CA:
- bl sub_80FBA00
- cmp r0, 0
- beq _081190DE
- movs r0, 0
- bl sub_811B258
- movs r0, 0x2
- bl _081198DA
-_081190DE:
- ldr r0, _08119100 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _081190EA
- bl _081198DC
-_081190EA:
- ldr r0, _08119104 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- ldr r0, _08119108 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- movs r0, 0x27
- bl _081198DA
- .align 2, 0
-_08119100: .4byte gReceivedRemoteLinkPlayers
-_08119104: .4byte gBlockSendBuffer
-_08119108: .4byte sub_8117280
-_0811910C:
- adds r0, r6, 0
- bl sub_8119904
- ldr r0, _08119150 @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08119122
- bl _081198DC
-_08119122:
- movs r0, 0x21
- strb r0, [r6, 0x14]
- ldr r0, _08119154 @ =gStringVar1
- ldr r4, _08119158 @ =gLinkPlayers + 0x24
- adds r1, r4, 0
- bl StringCopy
- adds r0, r4, 0
- subs r0, 0x24
- ldrh r0, [r0, 0x20]
- adds r1, r4, 0
- bl sub_80FD338
- adds r5, r0, 0
- ldr r0, _0811915C @ =gStringVar4
- ldr r2, _08119160 @ =gUnknown_8457BCC
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
- b _081198DC
- .align 2, 0
-_08119150: .4byte sub_8117280
-_08119154: .4byte gStringVar1
-_08119158: .4byte gLinkPlayers + 0x24
-_0811915C: .4byte gStringVar4
-_08119160: .4byte gUnknown_8457BCC
-_08119164:
- adds r0, r6, 0
- bl sub_8119904
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119180 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811917C
- b _081198DC
-_0811917C:
- movs r0, 0x22
- b _081198DA
- .align 2, 0
-_08119180: .4byte gStringVar4
-_08119184:
- adds r0, r6, 0
- bl sub_8119904
- adds r0, r6, 0
- bl sub_8119944
- cmp r0, 0
- bne _08119196
- b _081198DC
-_08119196:
- ldr r0, _081191B8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081191A4
- b _081198DC
-_081191A4:
- movs r0, 0x1
- bl sub_80FBD6C
- ldr r0, _081191BC @ =gStringVar4
- ldr r1, _081191C0 @ =gUnknown_8457E60
- bl StringCopy
- movs r0, 0x24
- b _081198DA
- .align 2, 0
-_081191B8: .4byte gMain
-_081191BC: .4byte gStringVar4
-_081191C0: .4byte gUnknown_8457E60
-_081191C4:
- ldr r1, _081191D0 @ =gStringVar4
- movs r0, 0x9
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_081191D0: .4byte gStringVar4
-_081191D4:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081191FA
- cmp r1, 0
- bgt _081191F4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081192BA
- b _081198DC
-_081191F4:
- cmp r1, 0x1
- beq _081192BA
- b _081198DC
-_081191FA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x51
- strh r1, [r0]
- ldr r1, _08119228 @ =gUnknown_203B058
- ldrb r1, [r1]
- adds r5, r0, 0
- cmp r1, 0x45
- bne _0811922C
- movs r4, 0x40
- orrs r4, r1
- movs r0, 0x1
- bl sub_811B2A8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- movs r2, 0
- bl sub_80FB008
- b _0811924A
- .align 2, 0
-_08119228: .4byte gUnknown_203B058
-_0811922C:
- movs r0, 0x40
- adds r4, r1, 0
- orrs r4, r0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_811B2A8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_80FB008
-_0811924A:
- ldr r1, [r6, 0x8]
- movs r0, 0
- strb r0, [r1, 0x1B]
- strh r0, [r7, 0x6]
- ldr r0, _0811927C @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x41
- bne _08119292
- bl sub_811B0F0
- cmp r0, 0
- bne _08119288
- movs r0, 0x52
- strh r0, [r5]
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xA
- strb r0, [r6, 0x14]
- ldr r0, _08119280 @ =gStringVar4
- ldr r1, _08119284 @ =gUnknown_84584C0
- bl StringCopy
- b _081198DC
- .align 2, 0
-_0811927C: .4byte gUnknown_203B058
-_08119280: .4byte gStringVar4
-_08119284: .4byte gUnknown_84584C0
-_08119288:
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xD
- b _081198DA
-_08119292:
- cmp r0, 0x48
- bne _081192B0
- adds r0, r5, 0
- bl sub_80F9E2C
- ldr r0, _081192AC @ =gStringVar4
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_811B31C
- movs r0, 0x28
- b _081198DA
- .align 2, 0
-_081192AC: .4byte gStringVar4
-_081192B0:
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xD
- b _081198DA
-_081192BA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x52
- strh r1, [r0]
- bl sub_80F9E2C
- movs r0, 0xA
- strb r0, [r6, 0x14]
- ldr r0, _081192D8 @ =gStringVar4
- ldr r1, _081192DC @ =gUnknown_203B058
- ldrb r1, [r1]
- bl sub_81162E0
- b _081198DC
- .align 2, 0
-_081192D8: .4byte gStringVar4
-_081192DC: .4byte gUnknown_203B058
-_081192E0:
- bl sub_800AAC0
- movs r0, 0x24
- b _081198DA
-_081192E8:
- ldr r0, _08119318 @ =gReceivedRemoteLinkPlayers
- ldrb r4, [r0]
- cmp r4, 0
- beq _081192F2
- b _081198DC
-_081192F2:
- ldr r1, _0811931C @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
- ldr r1, _08119320 @ =gStringVar4
- movs r0, 0x25
- bl sub_8118664
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0
- movs r2, 0xC
- bl memset
- adds r0, r6, 0
- adds r0, 0x86
- strh r4, [r0]
- subs r0, 0x2
- strh r4, [r0]
- b _081198DC
- .align 2, 0
-_08119318: .4byte gReceivedRemoteLinkPlayers
-_0811931C: .4byte gUnknown_203B058
-_08119320: .4byte gStringVar4
-_08119324:
- movs r0, 0x2
- strb r0, [r6, 0x14]
- movs r0, 0
- bl sub_811B258
- b _081198DC
-_08119330:
- ldr r4, _0811934C @ =gStringVar4
- ldr r0, _08119350 @ =gUnknown_203B058
- ldrb r0, [r0]
- movs r1, 0x40
- orrs r1, r0
- adds r0, r4, 0
- bl sub_811AECC
- movs r0, 0xE
- adds r1, r4, 0
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_0811934C: .4byte gStringVar4
-_08119350: .4byte gUnknown_203B058
-_08119354:
- bl sub_800AB9C
- movs r0, 0xF
- b _081198DA
-_0811935C:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _08119368
- b _081198DC
-_08119368:
- movs r0, 0x10
- b _081198DA
-_0811936C:
- ldr r0, [r6, 0x8]
- bl Free
- ldr r0, [r6]
- bl Free
- ldr r0, [r6, 0xC]
- bl Free
- ldr r0, [r6, 0x4]
- bl Free
- adds r0, r6, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r6, 0
- adds r0, 0x21
- bl sub_811BB40
- movs r0, 0x11
- b _081198DA
-_0811939A:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x12
- b _081198DA
-_081193AE:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _081193BA
- b _081198DC
-_081193BA:
- bl sub_811BA78
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _081193D4 @ =gUnknown_203B05C
- ldr r0, [r0]
- bl Free
- bl sub_81179A4
- b _081198DC
- .align 2, 0
-_081193D4: .4byte gUnknown_203B05C
-_081193D8:
- bl sub_80F9800
- ldrh r1, [r0, 0x8]
- ldr r4, _081193EC @ =0x000003ff
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _081193F0
- movs r0, 0x2B
- b _081198DA
- .align 2, 0
-_081193EC: .4byte 0x000003ff
-_081193F0:
- bl sub_80F9800
- ldrh r1, [r0, 0x8]
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08119414
- ldr r0, _0811940C @ =gStringVar4
- ldr r1, _08119410 @ =gUnknown_8458DE8
- bl StringCopy
- b _0811944A
- .align 2, 0
-_0811940C: .4byte gStringVar4
-_08119410: .4byte gUnknown_8458DE8
-_08119414:
- ldr r4, _08119454 @ =gStringVar1
- bl sub_80F9800
- ldrh r0, [r0, 0x8]
- lsls r0, 22
- lsrs r0, 22
- movs r1, 0xB
- muls r1, r0
- ldr r0, _08119458 @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r4, _0811945C @ =gStringVar2
- bl sub_80F9800
- ldrb r1, [r0, 0xB]
- lsrs r1, 1
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _08119460 @ =gStringVar4
- ldr r1, _08119464 @ =gUnknown_8458DBC
- bl StringExpandPlaceholders
-_0811944A:
- ldr r1, _08119460 @ =gStringVar4
- movs r0, 0x2C
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_08119454: .4byte gStringVar1
-_08119458: .4byte gSpeciesNames
-_0811945C: .4byte gStringVar2
-_08119460: .4byte gStringVar4
-_08119464: .4byte gUnknown_8458DBC
-_08119468:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119480 @ =gUnknown_8458AB8
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811947A
- b _081198DC
-_0811947A:
- movs r0, 0x2F
- b _081198DA
- .align 2, 0
-_08119480: .4byte gUnknown_8458AB8
-_08119484:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x1E
- ldr r3, _081194BC @ =gUnknown_8456E34
- ldr r4, _081194C0 @ =gUnknown_8456E54
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _081194A6
- b _081198DC
-_081194A6:
- subs r0, 0x1
- cmp r5, r0
- beq _081194B0
- cmp r5, 0x3
- bne _081194C4
-_081194B0:
- movs r0, 0x4
- strb r0, [r6, 0x14]
- movs r0, 0x1
- bl sub_811B258
- b _081194E4
- .align 2, 0
-_081194BC: .4byte gUnknown_8456E34
-_081194C0: .4byte gUnknown_8456E54
-_081194C4:
- cmp r5, 0x1
- beq _081194CE
- cmp r5, 0x2
- beq _081194DC
- b _081194E4
-_081194CE:
- ldr r1, _081194D8 @ =gUnknown_8458D1C
- movs r0, 0x35
- bl sub_8118664
- b _081194E4
- .align 2, 0
-_081194D8: .4byte gUnknown_8458D1C
-_081194DC:
- ldr r1, _081194EC @ =gUnknown_8458B44
- movs r0, 0x2F
- bl sub_8118664
-_081194E4:
- bl DestroyHelpMessageWindow_
- b _081198DC
- .align 2, 0
-_081194EC: .4byte gUnknown_8458B44
-_081194F0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x36
- b _081198DA
-_08119504:
- ldr r0, _08119528 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08119512
- b _081198DC
-_08119512:
- ldr r1, _0811952C @ =gUnknown_203B06C
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, _08119530 @ =gFieldCallback
- ldr r0, _08119534 @ =sub_807DCE4
- str r0, [r1]
- ldr r1, _08119538 @ =CB2_ReturnToField
- movs r0, 0x8
- bl sub_81277F4
- b _081198DC
- .align 2, 0
-_08119528: .4byte gPaletteFade
-_0811952C: .4byte gUnknown_203B06C
-_08119530: .4byte gFieldCallback
-_08119534: .4byte sub_807DCE4
-_08119538: .4byte CB2_ReturnToField
-_0811953C:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x1E
- ldr r3, _08119580 @ =gUnknown_8456E6C
- ldr r4, _08119584 @ =gUnknown_8456F04
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _0811955E
- b _081198DC
-_0811955E:
- subs r0, 0x1
- cmp r5, r0
- beq _08119568
- cmp r5, 0x12
- bne _08119590
-_08119568:
- ldr r0, _08119588 @ =gUnknown_203B06C
- bl sub_811B148
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811958C @ =gUnknown_8458D54
- bl sub_811868C
- b _081198DC
- .align 2, 0
-_08119580: .4byte gUnknown_8456E6C
-_08119584: .4byte gUnknown_8456F04
-_08119588: .4byte gUnknown_203B06C
-_0811958C: .4byte gUnknown_8458D54
-_08119590:
- ldr r0, _08119598 @ =gUnknown_203B06C
- strh r5, [r0, 0x2]
- movs r0, 0x37
- b _081198DA
- .align 2, 0
-_08119598: .4byte gUnknown_203B06C
-_0811959C:
- ldr r2, _081195B0 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- ldr r0, _081195B4 @ =gUnknown_8458D78
- bl sub_811868C
- b _081198DC
- .align 2, 0
-_081195B0: .4byte gUnknown_203B06C
-_081195B4: .4byte gUnknown_8458D78
-_081195B8:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081195DE
- cmp r1, 0
- bgt _081195D8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081195E2
- b _081198DC
-_081195D8:
- cmp r1, 0x1
- beq _081195E2
- b _081198DC
-_081195DE:
- movs r0, 0x38
- b _081198DA
-_081195E2:
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
-_081195EC:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119618 @ =gUnknown_8458E10
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081195FE
- b _081198DC
-_081195FE:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811961C @ =gUnknown_203B06C
- bl sub_811B148
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_08119618: .4byte gUnknown_8458E10
-_0811961C: .4byte gUnknown_203B06C
-_08119620:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119638 @ =gUnknown_8458A98
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08119632
- b _081198DC
-_08119632:
- movs r0, 0x2E
- b _081198DA
- .align 2, 0
-_08119638: .4byte gUnknown_8458A98
-_0811963C:
- bl sub_811A3F8
- movs r0, 0x30
- b _081198DA
-_08119644:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x4A
- adds r3, r6, 0
- adds r3, 0x1E
- ldr r4, _08119688 @ =gUnknown_8456F24
- str r4, [sp]
- ldr r4, _0811968C @ =gUnknown_8456F7C
- str r4, [sp, 0x4]
- ldr r4, [r6]
- str r4, [sp, 0x8]
- bl sub_811A2EC
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _08119670
- b _081198DC
-_08119670:
- subs r0, 0x1
- cmp r5, r0
- beq _0811967A
- cmp r5, 0x8
- bne _08119690
-_0811967A:
- movs r0, 0x1
- bl sub_811B258
- bl DestroyHelpMessageWindow_
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_08119688: .4byte gUnknown_8456F24
-_0811968C: .4byte gUnknown_8456F7C
-_08119690:
- ldr r1, [r6]
- lsls r3, r5, 5
- mov r8, r3
- add r1, r8
- ldrb r0, [r1, 0x9]
- lsrs r0, 2
- ldrh r1, [r1, 0x8]
- lsls r1, 22
- lsrs r1, 22
- bl sub_811ADD0
- cmp r0, 0x1
- beq _081196EC
- cmp r0, 0x1
- bgt _081196B4
- cmp r0, 0
- beq _081196BA
- b _081198DC
-_081196B4:
- cmp r0, 0x2
- beq _08119734
- b _081198DC
-_081196BA:
- ldr r4, _081196E4 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r1, _081196E8 @ =gUnknown_8458E70
- movs r0, 0x31
- bl sub_8118664
- strh r5, [r7, 0x2]
- b _081198DC
- .align 2, 0
-_081196E4: .4byte gStringVar1
-_081196E8: .4byte gUnknown_8458E70
-_081196EC:
- ldr r4, _08119724 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119728 @ =gStringVar2
- ldr r1, [r6]
- add r1, r8
- ldrb r2, [r1, 0x9]
- lsrs r2, 2
- lsls r1, r2, 3
- subs r1, r2
- ldr r2, _0811972C @ =gTypeNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08119730 @ =gUnknown_8458ED0
- b _0811976A
- .align 2, 0
-_08119724: .4byte gStringVar1
-_08119728: .4byte gStringVar2
-_0811972C: .4byte gTypeNames
-_08119730: .4byte gUnknown_8458ED0
-_08119734:
- ldr r4, _08119774 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119778 @ =gStringVar2
- ldr r1, [r6]
- add r1, r8
- ldrb r2, [r1, 0x9]
- lsrs r2, 2
- lsls r1, r2, 3
- subs r1, r2
- ldr r2, _0811977C @ =gTypeNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08119780 @ =gUnknown_8458F04
-_0811976A:
- movs r0, 0x2E
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_08119774: .4byte gStringVar1
-_08119778: .4byte gStringVar2
-_0811977C: .4byte gTypeNames
-_08119780: .4byte gUnknown_8458F04
-_08119784:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081197AA
- cmp r1, 0
- bgt _081197A4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081197AE
- b _081198DC
-_081197A4:
- cmp r1, 0x1
- beq _081197AE
- b _081198DC
-_081197AA:
- movs r0, 0x32
- b _081198DA
-_081197AE:
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
-_081197B8:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119820 @ =gUnknown_8458D1C
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081197CA
- b _081198DC
-_081197CA:
- ldr r4, _08119824 @ =gUnknown_203B06C
- movs r0, 0x2
- strh r0, [r4]
- ldr r2, _08119828 @ =gUnknown_203B064
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- lsls r0, 5
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r2, _0811982C @ =gUnionRoomRequestedMonType
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0x9]
- lsrs r0, 2
- strb r0, [r2]
- ldr r2, _08119830 @ =gUnionRoomOfferedSpecies
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrh r0, [r1, 0x8]
- lsls r0, 22
- lsrs r0, 22
- strh r0, [r2]
- ldr r1, _08119834 @ =gFieldCallback
- ldr r0, _08119838 @ =sub_807DCE4
- str r0, [r1]
- ldr r1, _0811983C @ =CB2_ReturnToField
- movs r0, 0x9
- bl sub_81277F4
- adds r0, r6, 0
- bl sub_81186B0
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x8]
- b _081198DC
- .align 2, 0
-_08119820: .4byte gUnknown_8458D1C
-_08119824: .4byte gUnknown_203B06C
-_08119828: .4byte gUnknown_203B064
-_0811982C: .4byte gUnionRoomRequestedMonType
-_08119830: .4byte gUnionRoomOfferedSpecies
-_08119834: .4byte gFieldCallback
-_08119838: .4byte sub_807DCE4
-_0811983C: .4byte CB2_ReturnToField
-_08119840:
- ldr r1, _08119890 @ =gUnknown_203B058
- movs r0, 0x44
- strb r0, [r1]
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- movs r2, 0x44
- bl sub_80FC114
- ldr r4, _08119894 @ =gStringVar1
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119898 @ =gUnknown_8457A34
- ldr r0, [r0, 0x8]
- bl sub_811A0B4
- movs r0, 0x19
- b _081198DA
- .align 2, 0
-_08119890: .4byte gUnknown_203B058
-_08119894: .4byte gStringVar1
-_08119898: .4byte gUnknown_8457A34
-_0811989C:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _081198C4 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081198DC
- movs r0, 0x1
- bl sub_811B258
- movs r1, 0
- ldrsh r0, [r7, r1]
- movs r2, 0x2
- ldrsh r1, [r7, r2]
- ldr r2, [r6]
- bl sub_811C028
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_081198C4: .4byte gStringVar4
-_081198C8:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _081198E8 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081198DC
- ldrb r0, [r6, 0x15]
-_081198DA:
- strb r0, [r6, 0x14]
-_081198DC:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081198E8: .4byte gStringVar4
- thumb_func_end sub_81186E0
-
- thumb_func_start var_800D_set_xB
-var_800D_set_xB: @ 81198EC
- push {lr}
- bl InUnionRoom
- cmp r0, 0x1
- bne _081198FC
- ldr r1, _08119900 @ =gSpecialVar_Result
- movs r0, 0xB
- strh r0, [r1]
-_081198FC:
- pop {r0}
- bx r0
- .align 2, 0
-_08119900: .4byte gSpecialVar_Result
- thumb_func_end var_800D_set_xB
-
- thumb_func_start sub_8119904
-sub_8119904: @ 8119904
- push {r4,r5,lr}
- adds r2, r0, 0
- ldr r3, _08119940 @ =gRecvCmds
- ldrh r5, [r3, 0x12]
- adds r4, r5, 0
- cmp r4, 0
- beq _08119938
- ldrh r0, [r3, 0x10]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _08119938
- adds r0, r2, 0
- adds r0, 0x86
- strh r5, [r0]
- cmp r4, 0x44
- bne _08119938
- ldrh r1, [r3, 0x14]
- adds r0, 0x2
- strh r1, [r0]
- ldrh r1, [r3, 0x16]
- adds r0, 0x2
- strh r1, [r0]
-_08119938:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08119940: .4byte gRecvCmds
- thumb_func_end sub_8119904
-
- thumb_func_start sub_8119944
-sub_8119944: @ 8119944
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- adds r5, 0x86
- ldrh r0, [r5]
- cmp r0, 0
- beq _08119994
- ldr r0, _08119978 @ =gStringVar4
- ldr r1, _0811997C @ =gLinkPlayers
- adds r1, 0x2F
- ldrb r1, [r1]
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_811AF6C
- cmp r0, 0
- beq _08119994
- cmp r0, 0x1
- bne _08119984
- movs r0, 0x23
- strb r0, [r4, 0x14]
- ldr r1, _08119980 @ =gUnknown_203B058
- ldrh r0, [r5]
- strb r0, [r1]
- movs r0, 0
- b _08119996
- .align 2, 0
-_08119978: .4byte gStringVar4
-_0811997C: .4byte gLinkPlayers
-_08119980: .4byte gUnknown_203B058
-_08119984:
- cmp r0, 0x2
- bne _08119994
- movs r0, 0x24
- strb r0, [r4, 0x14]
- bl sub_800AAC0
- movs r0, 0
- b _08119996
-_08119994:
- movs r0, 0x1
-_08119996:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8119944
-
- thumb_func_start InitUnionRoom
-InitUnionRoom: @ 811999C
- push {r4-r6,lr}
- ldr r5, _081199E8 @ =gUnknown_203B04C
- movs r0, 0x1
- negs r0, r0
- adds r6, r0, 0
- movs r0, 0xFF
- strb r0, [r5]
- ldr r0, _081199EC @ =gQuestLogState
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081199E0
- ldr r0, _081199F0 @ =sub_81199FC
- movs r1, 0
- bl CreateTask
- ldr r4, _081199F4 @ =gUnknown_203B05C
- movs r0, 0x96
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _081199F8 @ =gUnknown_300202C
- str r0, [r1]
- movs r1, 0
- strb r1, [r0, 0x14]
- strb r1, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- ldrb r0, [r5]
- orrs r0, r6
- strb r0, [r5]
-_081199E0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081199E8: .4byte gUnknown_203B04C
-_081199EC: .4byte gQuestLogState
-_081199F0: .4byte sub_81199FC
-_081199F4: .4byte gUnknown_203B05C
-_081199F8: .4byte gUnknown_300202C
- thumb_func_end InitUnionRoom
-
- thumb_func_start sub_81199FC
-sub_81199FC: @ 81199FC
- push {r4-r6,lr}
- sub sp, 0x20
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08119A1C @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x14]
- cmp r0, 0x4
- bls _08119A10
- b _08119B5C
-_08119A10:
- lsls r0, 2
- ldr r1, _08119A20 @ =_08119A24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08119A1C: .4byte gUnknown_203B05C
-_08119A20: .4byte _08119A24
- .align 2, 0
-_08119A24:
- .4byte _08119A38
- .4byte _08119A3E
- .4byte _08119A60
- .4byte _08119AB0
- .4byte _08119B28
-_08119A38:
- movs r0, 0x1
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119A3E:
- movs r0, 0xC
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBC00
- movs r0, 0x1
- bl sub_80FB128
- movs r0, 0x2
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119A60:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0xC]
- movs r1, 0x4
- bl sub_811A650
- movs r0, 0x80
- lsls r0, 1
- bl AllocZeroed
- str r0, [r5]
- movs r1, 0x8
- bl sub_811A5E4
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r5, 0x8]
- movs r1, 0x1
- bl sub_811A5E4
- ldr r0, [r5, 0xC]
- ldr r1, [r5, 0x4]
- movs r2, 0xA
- bl sub_8119E84
- adds r1, r5, 0
- adds r1, 0x20
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119AB0:
- bl sub_8119B94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- blt _08119B5C
- cmp r0, 0x2
- bgt _08119B5C
- ldr r0, _08119B14 @ =gUnknown_203B04C
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08119B5C
- movs r6, 0
-_08119ACA:
- ldr r0, [r5]
- lsls r4, r6, 5
- adds r1, r0, r4
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08119B0A
- adds r1, 0x10
- mov r0, sp
- bl StringCopy
- ldr r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- mov r0, sp
- bl ConvertInternationalString
- ldr r0, [r5]
- adds r0, r4
- adds r0, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl sub_80FD338
- cmp r0, 0
- bne _08119B18
-_08119B0A:
- adds r6, 0x1
- cmp r6, 0x7
- ble _08119ACA
- b _08119B5C
- .align 2, 0
-_08119B14: .4byte gUnknown_203B04C
-_08119B18:
- ldr r0, _08119B24 @ =gUnknown_203B04C
- mov r1, sp
- bl StringCopy
- b _08119B5C
- .align 2, 0
-_08119B24: .4byte gUnknown_203B04C
-_08119B28:
- ldr r0, [r5, 0x8]
- bl Free
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0xC]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- adds r0, r5, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl DestroyTask
- ldr r0, _08119B64 @ =gUnknown_203B05C
- ldr r0, [r0]
- bl Free
- bl sub_80F8DC0
- adds r0, r4, 0
- bl DestroyTask
-_08119B5C:
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08119B64: .4byte gUnknown_203B05C
- thumb_func_end sub_81199FC
-
- thumb_func_start BufferUnionRoomPlayerName
-BufferUnionRoomPlayerName: @ 8119B68
- push {r4,lr}
- ldr r4, _08119B78 @ =gUnknown_203B04C
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _08119B7C
- movs r0, 0
- b _08119B8A
- .align 2, 0
-_08119B78: .4byte gUnknown_203B04C
-_08119B7C:
- ldr r0, _08119B90 @ =gStringVar1
- adds r1, r4, 0
- bl StringCopy
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0x1
-_08119B8A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08119B90: .4byte gStringVar1
- thumb_func_end BufferUnionRoomPlayerName
-
- thumb_func_start sub_8119B94
-sub_8119B94: @ 8119B94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08119BE8 @ =gUnknown_203B05C
- ldr r4, [r0]
- movs r7, 0
- movs r6, 0
- movs r5, 0
-_08119BA6:
- ldr r0, [r4, 0xC]
- adds r0, r5
- ldr r1, _08119BEC @ =gUnknown_8457034
- bl sub_811A694
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bne _08119BF0
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x8]
- adds r1, r5
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldr r1, [r4, 0x8]
- movs r0, 0
- strh r0, [r1, 0x18]
- ldr r2, [r4, 0x8]
- ldrb r1, [r2, 0x1A]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r2, 0x1A]
- ldr r0, [r4, 0x8]
- strb r3, [r0, 0x1B]
- movs r0, 0x4
- b _08119D24
- .align 2, 0
-_08119BE8: .4byte gUnknown_203B05C
-_08119BEC: .4byte gUnknown_8457034
-_08119BF0:
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _08119BA6
- movs r6, 0
- mov r9, r6
-_08119BFC:
- ldr r0, [r4]
- mov r1, r9
- lsls r5, r1, 5
- adds r2, r0, r5
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- mov r8, r5
- cmp r0, 0
- beq _08119CF0
- ldr r1, [r4, 0x4]
- adds r0, r2, 0
- bl sub_811A748
- adds r6, r0, 0
- cmp r6, 0xFF
- beq _08119C96
- ldr r0, [r4]
- adds r2, r0, r5
- ldrb r1, [r2, 0x1A]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08119C74
- lsls r0, r6, 3
- subs r0, r6
- lsls r6, r0, 2
- ldr r1, [r4, 0x4]
- adds r1, r6
- adds r0, r2, 0
- bl sub_811A6DC
- cmp r0, 0
- beq _08119C5A
- ldr r1, [r4]
- ldr r0, [r4, 0x4]
- adds r1, r5
- adds r0, r6
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x40
- strb r1, [r0, 0x1B]
- movs r7, 0x1
- b _08119C8C
-_08119C5A:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08119C8C
- subs r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0, 0x1B]
- cmp r0, 0
- bne _08119C8C
- b _08119C8A
-_08119C74:
- movs r3, 0x4
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1A]
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0
- strb r1, [r0, 0x1B]
-_08119C8A:
- movs r7, 0x2
-_08119C8C:
- ldr r0, [r4]
- add r0, r8
- movs r1, 0
- strh r1, [r0, 0x18]
- b _08119CF0
-_08119C96:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1A]
- lsls r2, r0, 30
- lsrs r0, r2, 30
- cmp r0, 0x2
- beq _08119CD0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- ldr r0, [r4]
- adds r2, r0, r5
- ldrh r1, [r2, 0x18]
- ldr r0, _08119CCC @ =0x00000257
- cmp r1, r0
- bls _08119CF0
- ldrb r0, [r2, 0x1A]
- movs r5, 0x4
- negs r5, r5
- adds r1, r5, 0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1A]
- movs r7, 0x2
- b _08119CF0
- .align 2, 0
-_08119CCC: .4byte 0x00000257
-_08119CD0:
- lsrs r0, r2, 30
- cmp r0, 0x2
- bne _08119CF0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- ldr r0, [r4]
- adds r2, r0, r5
- ldrh r1, [r2, 0x18]
- ldr r0, _08119D30 @ =0x00000383
- cmp r1, r0
- bls _08119CF0
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_811A5E4
-_08119CF0:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r0, 0x7
- bhi _08119D00
- b _08119BFC
-_08119D00:
- movs r5, 0
- movs r6, 0x3
-_08119D04:
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- adds r1, r5
- movs r2, 0x8
- bl sub_811A798
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08119D1A
- movs r7, 0x1
-_08119D1A:
- adds r5, 0x1C
- subs r6, 0x1
- cmp r6, 0
- bge _08119D04
- adds r0, r7, 0
-_08119D24:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08119D30: .4byte 0x00000383
- thumb_func_end sub_8119B94
-
- thumb_func_start sub_8119D34
-sub_8119D34: @ 8119D34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _08119E24 @ =gTasks+0x8
- adds r6, r0, r1
- movs r7, 0
- mov r0, sp
- adds r0, 0x10
- str r0, [sp, 0x18]
-_08119D58:
- lsls r2, r7, 24
- lsrs r2, 24
- mov r0, sp
- ldr r1, [sp, 0x18]
- bl sub_80FCC3C
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- ldrb r0, [r0, 0xA]
- lsls r0, 25
- lsrs r0, 25
- mov r2, r10
- lsls r1, r2, 2
- add r1, r10
- lsls r1, 3
- ldr r3, _08119E28 @ =gTasks
- adds r1, r3
- movs r5, 0x10
- ldrsh r1, [r1, r5]
- bl sub_8116F28
- cmp r0, 0
- bne _08119D94
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119D94:
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _08119DAC
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119DAC:
- cmp r4, 0
- bne _08119E30
- lsls r0, r7, 3
- mov r8, r0
- adds r1, r7, 0x1
- mov r9, r1
- cmp r7, 0
- ble _08119DEC
- movs r2, 0
- str r2, [sp, 0x1C]
- adds r4, r7, 0
-_08119DC2:
- ldr r0, [r6, 0x4]
- ldr r3, [sp, 0x1C]
- adds r0, r3
- mov r1, sp
- bl sub_811A694
- lsls r0, 24
- cmp r0, 0
- bne _08119DE0
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119DE0:
- ldr r5, [sp, 0x1C]
- adds r5, 0x1C
- str r5, [sp, 0x1C]
- subs r4, 0x1
- cmp r4, 0
- bne _08119DC2
-_08119DEC:
- ldr r1, [r6, 0x4]
- mov r0, r8
- subs r4, r0, r7
- lsls r4, 2
- adds r1, r4
- mov r0, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r6, 0x4]
- adds r0, r4
- ldr r1, _08119E2C @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6, 0x4]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- b _08119E68
- .align 2, 0
-_08119E24: .4byte gTasks+0x8
-_08119E28: .4byte gTasks
-_08119E2C: .4byte gUnknown_8457034
-_08119E30:
- ldr r1, [r6]
- lsls r4, r7, 3
- subs r4, r7
- lsls r4, 2
- adds r1, r4
- mov r0, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _08119E80 @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- adds r7, 0x1
- mov r9, r7
-_08119E68:
- mov r7, r9
- cmp r7, 0x3
- bgt _08119E70
- b _08119D58
-_08119E70:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119E80: .4byte gUnknown_8457034
- thumb_func_end sub_8119D34
-
- thumb_func_start sub_8119E84
-sub_8119E84: @ 8119E84
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, _08119EB0 @ =sub_8119D34
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _08119EB4 @ =gTasks+0x8
- adds r3, r1, r2
- str r4, [r3]
- str r5, [r3, 0x4]
- adds r2, r1
- strh r6, [r2, 0x8]
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08119EB0: .4byte sub_8119D34
-_08119EB4: .4byte gTasks+0x8
- thumb_func_end sub_8119E84
-
- thumb_func_start sub_8119EB8
-sub_8119EB8: @ 8119EB8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _08119FA4 @ =gTasks+0x8
- adds r6, r0, r1
- movs r3, 0
-_08119ED6:
- lsls r4, r3, 3
- subs r0, r4, r3
- lsls r5, r0, 2
- ldr r0, [r6]
- adds r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- lsls r2, r3, 24
- lsrs r2, 24
- str r3, [sp]
- bl sub_80FCC3C
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0, 0xA]
- lsls r0, 25
- lsrs r0, 25
- mov r2, r10
- lsls r1, r2, 2
- add r1, r10
- lsls r1, 3
- ldr r7, _08119FA8 @ =gTasks
- adds r1, r7
- movs r2, 0xC
- ldrsh r1, [r1, r2]
- bl sub_8116F28
- mov r8, r4
- ldr r3, [sp]
- cmp r0, 0
- bne _08119F22
- ldr r1, [r6]
- adds r1, r5
- ldr r0, _08119FAC @ =gUnknown_8457034
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
-_08119F22:
- adds r4, r3, 0x1
- mov r9, r4
- cmp r3, 0
- ble _08119F66
- str r5, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- adds r4, r3, 0
-_08119F32:
- ldr r1, [r6]
- ldr r7, [sp, 0x8]
- adds r0, r1, r7
- ldr r2, [sp, 0x4]
- adds r1, r2
- str r3, [sp]
- bl sub_811A694
- lsls r0, 24
- ldr r3, [sp]
- cmp r0, 0
- bne _08119F5A
- ldr r1, [r6]
- ldr r5, [sp, 0x4]
- adds r1, r5
- ldr r0, _08119FAC @ =gUnknown_8457034
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
-_08119F5A:
- ldr r7, [sp, 0x8]
- adds r7, 0x1C
- str r7, [sp, 0x8]
- subs r4, 0x1
- cmp r4, 0
- bne _08119F32
-_08119F66:
- mov r0, r8
- subs r4, r0, r3
- lsls r4, 2
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _08119FAC @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- mov r3, r9
- cmp r3, 0x3
- ble _08119ED6
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119FA4: .4byte gTasks+0x8
-_08119FA8: .4byte gTasks
-_08119FAC: .4byte gUnknown_8457034
- thumb_func_end sub_8119EB8
-
- thumb_func_start sub_8119FB0
-sub_8119FB0: @ 8119FB0
- push {lr}
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7
- bne _08119FC0
- ldrb r1, [r0]
- movs r0, 0x20
- b _08119FC8
-_08119FC0:
- cmp r1, 0x8
- bne _08119FD2
- ldrb r1, [r0]
- movs r0, 0x10
-_08119FC8:
- ands r0, r1
- cmp r0, 0
- beq _08119FD2
- movs r0, 0x1
- b _08119FD4
-_08119FD2:
- movs r0, 0
-_08119FD4:
- pop {r1}
- bx r1
- thumb_func_end sub_8119FB0
-
- thumb_func_start sub_8119FD8
-sub_8119FD8: @ 8119FD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0811A04C @ =gTasks+0x8
- adds r4, r1, r0
- movs r6, 0
- subs r0, 0x8
- movs r5, 0
- adds r1, r0
- mov r8, r1
-_08119FF6:
- ldr r0, [r4]
- adds r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- lsls r2, r6, 24
- lsrs r2, 24
- bl sub_80FCCF4
- lsls r0, 24
- cmp r0, 0
- beq _0811A01A
- ldr r0, [r4]
- adds r0, r5
- mov r2, r8
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- bl sub_8119FB0
-_0811A01A:
- ldr r0, [r4]
- adds r0, r5
- ldr r1, _0811A050 @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r4]
- adds r3, r5
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r7, 0x2
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _08119FF6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A04C: .4byte gTasks+0x8
-_0811A050: .4byte gUnknown_8457034
- thumb_func_end sub_8119FD8
-
- thumb_func_start sub_811A054
-sub_811A054: @ 811A054
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0811A07C @ =sub_8119EB8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r1, _0811A080 @ =gTasks+0x8
- adds r3, r2, r1
- str r4, [r3]
- adds r1, r2
- strh r5, [r1, 0x4]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A07C: .4byte sub_8119EB8
-_0811A080: .4byte gTasks+0x8
- thumb_func_end sub_811A054
-
- thumb_func_start sub_811A084
-sub_811A084: @ 811A084
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0811A0AC @ =sub_8119FD8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r1, _0811A0B0 @ =gTasks+0x8
- adds r3, r2, r1
- str r4, [r3]
- adds r1, r2
- strh r5, [r1, 0x4]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A0AC: .4byte sub_8119FD8
-_0811A0B0: .4byte gTasks+0x8
- thumb_func_end sub_811A084
-
- thumb_func_start sub_811A0B4
-sub_811A0B4: @ 811A0B4
- push {r4,lr}
- adds r4, r0, 0
- bl LoadStdWindowFrameGfx
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _0811A0DC @ =gStringVar4
- adds r1, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterWithCustomSpeedForMessage
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A0DC: .4byte gStringVar4
- thumb_func_end sub_811A0B4
-
- thumb_func_start sub_811A0E0
-sub_811A0E0: @ 811A0E0
- push {lr}
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- cmp r0, 0
- beq _0811A0F0
- movs r0, 0
- b _0811A0F2
-_0811A0F0:
- movs r0, 0x1
-_0811A0F2:
- pop {r1}
- bx r1
- thumb_func_end sub_811A0E0
-
- thumb_func_start sub_811A0F8
-sub_811A0F8: @ 811A0F8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811A10A
- cmp r0, 0x1
- beq _0811A130
- b _0811A142
-_0811A10A:
- bl LoadStdWindowFrameGfx
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _0811A12C @ =gStringVar4
- adds r1, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- bl AddTextPrinterForMessage
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0811A142
- .align 2, 0
-_0811A12C: .4byte gStringVar4
-_0811A130:
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0811A142
- strb r0, [r4]
- movs r0, 0x1
- b _0811A144
-_0811A142:
- movs r0, 0
-_0811A144:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811A0F8
-
- thumb_func_start sub_811A14C
-sub_811A14C: @ 811A14C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811A15E
- cmp r0, 0x1
- beq _0811A174
- b _0811A1A0
-_0811A15E:
- cmp r5, 0
- beq _0811A168
- movs r0, 0x3
- negs r0, r0
- b _0811A1A4
-_0811A168:
- bl DisplayYesNoMenuDefaultYes
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0811A1A0
-_0811A174:
- cmp r5, 0
- beq _0811A186
- bl DestroyYesNoMenu
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x3
- negs r0, r0
- b _0811A1A4
-_0811A186:
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x2
- bhi _0811A1A0
- strb r5, [r4]
- adds r0, r1, 0
- b _0811A1A4
-_0811A1A0:
- movs r0, 0x2
- negs r0, r0
-_0811A1A4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811A14C
-
- thumb_func_start sub_811A1AC
-sub_811A1AC: @ 811A1AC
- push {r4,lr}
- sub sp, 0x8
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl DrawStdWindowFrame
- adds r0, r4, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r2, _0811A1F8 @ =gUnknown_8459378
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A1F8: .4byte gUnknown_8459378
- thumb_func_end sub_811A1AC
-
- thumb_func_start sub_811A1FC
-sub_811A1FC: @ 811A1FC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- adds r0, r4, 0
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811A1FC
-
- thumb_func_start sub_811A218
-sub_811A218: @ 811A218
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- adds r5, r1, 0
- mov r9, r2
- adds r0, r3, 0
- ldrb r4, [r7]
- cmp r4, 0
- beq _0811A234
- cmp r4, 0x1
- beq _0811A274
- b _0811A2DA
-_0811A234:
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _0811A270 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp, 0x1C]
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldrb r1, [r5]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- mov r1, r9
- strb r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _0811A2DA
- .align 2, 0
-_0811A270: .4byte gMultiuseListMenuTemplate
-_0811A274:
- mov r3, r9
- ldrb r0, [r3]
- bl ListMenu_ProcessInput
- mov r8, r0
- ldr r0, _0811A2AC @ =gMain
- ldrh r1, [r0, 0x2E]
- ands r4, r1
- cmp r4, 0
- beq _0811A2B0
- mov r4, r9
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r5]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r5]
- bl RemoveWindow
- movs r0, 0
- strb r0, [r7]
- mov r0, r8
- b _0811A2DE
- .align 2, 0
-_0811A2AC: .4byte gMain
-_0811A2B0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811A2DA
- mov r6, r9
- ldrb r0, [r6]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r5]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r5]
- bl RemoveWindow
- strb r4, [r7]
- movs r0, 0x2
- negs r0, r0
- b _0811A2DE
-_0811A2DA:
- movs r0, 0x1
- negs r0, r0
-_0811A2DE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A218
-
- thumb_func_start sub_811A2EC
-sub_811A2EC: @ 811A2EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r7, r3, 0
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811A308
- cmp r0, 0x1
- beq _0811A358
- b _0811A3E6
-_0811A308:
- ldr r0, _0811A350 @ =gUnknown_8456F1C
- bl sub_811A1AC
- strb r0, [r7]
- ldr r0, [sp, 0x1C]
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _0811A354 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp, 0x20]
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r4]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0x1
- bl ListMenuInit
- strb r0, [r5]
- ldrb r0, [r4]
- movs r1, 0x1
- bl CopyWindowToVram
- mov r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811A3E6
- .align 2, 0
-_0811A350: .4byte gUnknown_8456F1C
-_0811A354: .4byte gMultiuseListMenuTemplate
-_0811A358:
- ldrb r0, [r5]
- bl ListMenu_ProcessInput
- adds r1, r0, 0
- ldr r0, _0811A3A8 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- beq _0811A3E6
- cmp r1, 0x8
- beq _0811A37E
- movs r0, 0x2
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0
- beq _0811A3AC
-_0811A37E:
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r4]
- bl RemoveWindow
- ldrb r0, [r7]
- bl sub_811A1FC
- movs r0, 0
- mov r3, r9
- strb r0, [r3]
- movs r0, 0x2
- negs r0, r0
- b _0811A3EA
- .align 2, 0
-_0811A3A8: .4byte gMain
-_0811A3AC:
- ldr r0, [sp, 0x24]
- bl sub_811AD7C
- adds r6, r0, 0
- cmp r6, 0
- blt _0811A3E0
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r4]
- bl RemoveWindow
- ldrb r0, [r7]
- bl sub_811A1FC
- mov r0, r8
- mov r7, r9
- strb r0, [r7]
- adds r0, r6, 0
- b _0811A3EA
-_0811A3E0:
- movs r0, 0x7
- bl PlaySE
-_0811A3E6:
- movs r0, 0x1
- negs r0, r0
-_0811A3EA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A2EC
-
- thumb_func_start sub_811A3F8
-sub_811A3F8: @ 811A3F8
- push {lr}
- sub sp, 0xC
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_811A3F8
-
- thumb_func_start sub_811A41C
-sub_811A41C: @ 811A41C
- push {lr}
- sub sp, 0xC
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- bl EnableBothScriptContexts
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_811A41C
-
- thumb_func_start sub_811A444
-sub_811A444: @ 811A444
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r5, [sp, 0x1C]
- ldr r4, [sp, 0x20]
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- str r2, [sp]
- mov r2, sp
- strb r0, [r2, 0x4]
- mov r0, sp
- strb r1, [r0, 0x5]
- strb r3, [r0, 0x6]
- strb r5, [r0, 0x7]
- strb r3, [r0, 0x8]
- strb r5, [r0, 0x9]
- ldrb r1, [r2, 0xC]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0xC]
- ldr r2, _0811A490 @ =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- cmp r4, 0x6
- bls _0811A486
- b _0811A5D2
-_0811A486:
- lsls r0, r4, 2
- ldr r1, _0811A494 @ =_0811A498
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811A490: .4byte gTextFlags
-_0811A494: .4byte _0811A498
- .align 2, 0
-_0811A498:
- .4byte _0811A4B4
- .4byte _0811A4E0
- .4byte _0811A50C
- .4byte _0811A538
- .4byte _0811A564
- .4byte _0811A590
- .4byte _0811A5A8
-_0811A4B4:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A4E0:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x50
- b _0811A5CE
-_0811A50C:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x60
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x70
- b _0811A5CE
-_0811A538:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A564:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A590:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r4, 0xF
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x70
- b _0811A5BE
-_0811A5A8:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r4, 0xF
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0xE0
-_0811A5BE:
- orrs r0, r1
- strb r0, [r2, 0xC]
- mov r1, sp
- ldrb r0, [r1, 0xD]
- orrs r0, r4
- strb r0, [r1, 0xD]
- ands r0, r3
- movs r1, 0x90
-_0811A5CE:
- orrs r0, r1
- strb r0, [r2, 0xD]
-_0811A5D2:
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811A444
-
- thumb_func_start sub_811A5E4
-sub_811A5E4: @ 811A5E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _0811A63C
- ldr r2, _0811A64C @ =gUnknown_8457034
- mov r8, r2
- movs r5, 0
- mov r9, r5
- movs r6, 0x4
- negs r6, r6
- mov r12, r6
- adds r2, r0, 0
- adds r2, 0x18
- adds r4, r0, 0
- movs r7, 0xFF
- mov r10, r7
- adds r3, r1, 0
-_0811A610:
- adds r1, r4, 0
- mov r0, r8
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- mov r0, r10
- strh r0, [r2]
- ldrb r1, [r2, 0x2]
- mov r0, r12
- ands r0, r1
- movs r1, 0x5
- negs r1, r1
- ands r0, r1
- strb r0, [r2, 0x2]
- mov r5, r9
- strb r5, [r2, 0x3]
- adds r2, 0x20
- adds r4, 0x20
- subs r3, 0x1
- cmp r3, 0
- bne _0811A610
-_0811A63C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A64C: .4byte gUnknown_8457034
- thumb_func_end sub_811A5E4
-
- thumb_func_start sub_811A650
-sub_811A650: @ 811A650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _0811A690 @ =gUnknown_8457034
- mov r12, r1
- movs r5, 0x2
- negs r5, r5
- mov r8, r5
- adds r2, r0, 0
- adds r2, 0x18
- adds r3, r0, 0
- movs r4, 0x3
-_0811A668:
- adds r1, r3, 0
- mov r0, r12
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldrb r1, [r2]
- mov r0, r8
- ands r0, r1
- strb r0, [r2]
- adds r2, 0x1C
- adds r3, 0x1C
- subs r4, 0x1
- cmp r4, 0
- bge _0811A668
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A690: .4byte gUnknown_8457034
- thumb_func_end sub_811A650
-
- thumb_func_start sub_811A694
-sub_811A694: @ 811A694
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r2, 0
- adds r4, r5, 0x2
- adds r3, r6, 0x2
-_0811A6A0:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0811A6C8
- adds r2, 0x1
- cmp r2, 0x1
- ble _0811A6A0
- movs r2, 0
- adds r4, r5, 0
- adds r4, 0x10
- adds r3, r6, 0
- adds r3, 0x10
-_0811A6BC:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0811A6CC
-_0811A6C8:
- movs r0, 0x1
- b _0811A6D4
-_0811A6CC:
- adds r2, 0x1
- cmp r2, 0x7
- ble _0811A6BC
- movs r0, 0
-_0811A6D4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A694
-
- thumb_func_start sub_811A6DC
-sub_811A6DC: @ 811A6DC
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldrb r3, [r5, 0xA]
- movs r0, 0x7F
- ldrb r2, [r6, 0xA]
- adds r1, r0, 0
- ands r1, r3
- ands r0, r2
- cmp r1, r0
- bne _0811A740
- movs r0, 0x80
- adds r1, r0, 0
- ands r1, r3
- ands r0, r2
- cmp r1, r0
- bne _0811A740
- movs r2, 0
- adds r4, r5, 0x4
- adds r3, r6, 0x4
-_0811A704:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0811A740
- adds r2, 0x1
- cmp r2, 0x3
- ble _0811A704
- ldrh r2, [r5, 0x8]
- ldr r0, _0811A73C @ =0x000003ff
- ldrh r3, [r6, 0x8]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _0811A740
- ldrb r2, [r5, 0x9]
- movs r0, 0xFC
- ldrb r3, [r6, 0x9]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _0811A740
- movs r0, 0
- b _0811A742
- .align 2, 0
-_0811A73C: .4byte 0x000003ff
-_0811A740:
- movs r0, 0x1
-_0811A742:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A6DC
-
- thumb_func_start sub_811A748
-sub_811A748: @ 811A748
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- movs r7, 0xFF
- movs r6, 0
- adds r4, r1, 0
- adds r4, 0x18
- adds r5, r1, 0
-_0811A75A:
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811A782
- mov r0, r8
- adds r1, r5, 0
- bl sub_811A694
- lsls r0, 24
- cmp r0, 0
- bne _0811A782
- lsls r0, r6, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- strb r0, [r4]
-_0811A782:
- adds r4, 0x1C
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _0811A75A
- adds r0, r7, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A748
-
- thumb_func_start sub_811A798
-sub_811A798: @ 811A798
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r3, r0, 0
- mov r8, r1
- lsls r2, 24
- lsrs r6, r2, 24
- ldrb r1, [r1, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811A80C
- movs r5, 0
- cmp r5, r6
- bge _0811A80C
- movs r0, 0x4
- negs r0, r0
- mov r9, r0
- movs r1, 0x2
- negs r1, r1
- mov r12, r1
- adds r2, r3, 0
- adds r2, 0x18
- adds r1, r3, 0
-_0811A7CA:
- ldrb r0, [r2, 0x2]
- movs r3, 0x3
- ands r3, r0
- cmp r3, 0
- bne _0811A802
- mov r0, r8
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- strh r3, [r2]
- ldrb r1, [r2, 0x2]
- mov r0, r9
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- movs r0, 0x40
- strb r0, [r2, 0x3]
- mov r0, r8
- ldrb r1, [r0, 0x18]
- mov r0, r12
- ands r0, r1
- mov r1, r8
- strb r0, [r1, 0x18]
- lsls r0, r5, 24
- lsrs r0, 24
- b _0811A80E
-_0811A802:
- adds r2, 0x20
- adds r1, 0x20
- adds r5, 0x1
- cmp r5, r6
- blt _0811A7CA
-_0811A80C:
- movs r0, 0xFF
-_0811A80E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A798
-
- thumb_func_start sub_811A81C
-sub_811A81C: @ 811A81C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- adds r4, r1, 0
- adds r5, r3, 0
- ldr r3, [sp, 0x50]
- ldr r1, [sp, 0x54]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0811A904 @ =gStringVar4
- mov r8, r0
- adds r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r1, _0811A908 @ =gUnknown_84571B0
- mov r0, r8
- bl StringAppend
- str r6, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0
- mov r2, r8
- adds r3, r4, 0
- bl sub_811A444
- adds r4, 0x12
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- ldrb r0, [r5, 0xA]
- lsls r0, 25
- lsrs r2, r0, 25
- ldrb r1, [r5, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0811A8F2
- movs r0, 0x40
- ands r2, r0
- cmp r2, 0
- bne _0811A8F2
- add r4, sp, 0x10
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- str r6, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x2
- adds r2, r4, 0
- mov r3, r9
- bl sub_811A444
- ldrb r1, [r5, 0x2]
- ldrb r0, [r5, 0x3]
- lsls r0, 8
- orrs r1, r0
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r1, _0811A90C @ =gUnknown_84571B4
- mov r0, r8
- bl StringCopy
- mov r0, r8
- add r1, sp, 0x8
- bl StringAppend
- mov r3, r9
- adds r3, 0x4D
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0
- mov r2, r8
- bl sub_811A444
-_0811A8F2:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A904: .4byte gStringVar4
-_0811A908: .4byte gUnknown_84571B0
-_0811A90C: .4byte gUnknown_84571B4
- thumb_func_end sub_811A81C
-
- thumb_func_start sub_811A910
-sub_811A910: @ 811A910
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x30
- adds r5, r3, 0
- ldr r3, [sp, 0x4C]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r7, r3, 24
- ldrb r1, [r5, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0811A9A2
- add r4, sp, 0x10
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- mov r0, r8
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r0, r9
- movs r1, 0x2
- adds r2, r4, 0
- adds r3, r6, 0
- bl sub_811A444
- ldrb r1, [r5, 0x2]
- ldrb r0, [r5, 0x3]
- lsls r0, 8
- orrs r1, r0
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r4, _0811A9B0 @ =gStringVar4
- ldr r1, _0811A9B4 @ =gUnknown_84571B4
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- add r1, sp, 0x8
- bl StringAppend
- adds r3, r6, 0
- adds r3, 0x47
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r0, r9
- movs r1, 0
- adds r2, r4, 0
- bl sub_811A444
-_0811A9A2:
- add sp, 0x30
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A9B0: .4byte gStringVar4
-_0811A9B4: .4byte gUnknown_84571B4
- thumb_func_end sub_811A910
-
- thumb_func_start sub_811A9B8
-sub_811A9B8: @ 811A9B8
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x9
- bne _0811A9F0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _0811A9F0
- ldr r0, _0811A9EC @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x2
- beq _0811A9E6
- cmp r0, 0
- bne _0811A9F0
-_0811A9E6:
- movs r0, 0x1
- b _0811A9F2
- .align 2, 0
-_0811A9EC: .4byte gPlayerAvatar
-_0811A9F0:
- movs r0, 0
-_0811A9F2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811A9B8
-
- thumb_func_start sub_811A9FC
-sub_811A9FC: @ 811A9FC
- push {lr}
- cmp r0, 0x4
- beq _0811AA14
- cmp r0, 0x4
- ble _0811AA1C
- cmp r0, 0x5
- beq _0811AA10
- cmp r0, 0x8
- beq _0811AA18
- b _0811AA1C
-_0811AA10:
- movs r0, 0x1
- b _0811AA1E
-_0811AA14:
- movs r0, 0x2
- b _0811AA1E
-_0811AA18:
- movs r0, 0x3
- b _0811AA1E
-_0811AA1C:
- movs r0, 0
-_0811AA1E:
- pop {r1}
- bx r1
- thumb_func_end sub_811A9FC
-
- thumb_func_start sub_811AA24
-sub_811AA24: @ 811AA24
- push {r4,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, sp
- bl StringCopy
- ldrb r1, [r4]
- lsls r1, 28
- lsrs r1, 28
- mov r0, sp
- bl ConvertInternationalString
- adds r4, 0x2
- adds r0, r4, 0
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl sub_80FD338
- add sp, 0x20
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AA24
-
- thumb_func_start sub_811AA5C
-sub_811AA5C: @ 811AA5C
- push {r4-r7,lr}
- adds r7, r3, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 19
- adds r5, r0, r2
- ldrb r1, [r5, 0xA]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AAE4
- cmp r6, 0
- bne _0811AAE4
- ldr r4, _0811AAC4 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- adds r0, r5, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl sub_80FD338
- adds r2, r0, 0
- ldrb r1, [r5, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- bne _0811AAD0
- ldr r0, _0811AAC8 @ =gStringVar4
- ldr r3, _0811AACC @ =gUnknown_8457F80
- lsls r1, r7, 2
- lsls r2, 3
- adds r1, r2
- adds r1, r3
- ldr r1, [r1]
- bl StringExpandPlaceholders
- movs r0, 0x2
- b _0811ABD2
- .align 2, 0
-_0811AAC4: .4byte gStringVar1
-_0811AAC8: .4byte gStringVar4
-_0811AACC: .4byte gUnknown_8457F80
-_0811AAD0:
- ldr r0, _0811AAE0 @ =gUnknown_8457A34
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811A0B4
- movs r0, 0x1
- b _0811ABD2
- .align 2, 0
-_0811AAE0: .4byte gUnknown_8457A34
-_0811AAE4:
- ldr r4, _0811AB24 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- cmp r6, 0
- beq _0811AB0A
- adds r0, r5, r6
- ldrb r0, [r0, 0x3]
- lsrs r7, r0, 3
- movs r0, 0x1
- ands r7, r0
-_0811AB0A:
- ldrb r0, [r5, 0xA]
- lsls r0, 25
- lsrs r0, 25
- movs r1, 0x3F
- ands r1, r0
- cmp r1, 0x4
- beq _0811AB58
- cmp r1, 0x4
- bgt _0811AB28
- cmp r1, 0x1
- beq _0811AB32
- b _0811ABC8
- .align 2, 0
-_0811AB24: .4byte gStringVar1
-_0811AB28:
- cmp r1, 0x5
- beq _0811AB78
- cmp r1, 0x8
- beq _0811AB9C
- b _0811ABC8
-_0811AB32:
- ldr r5, _0811AB50 @ =gStringVar4
- ldr r4, _0811AB54 @ =gUnknown_8458758
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 14
- lsls r0, r7, 4
- adds r1, r0
- adds r1, r4
- ldr r1, [r1]
- b _0811ABB6
- .align 2, 0
-_0811AB50: .4byte gStringVar4
-_0811AB54: .4byte gUnknown_8458758
-_0811AB58:
- ldr r5, _0811AB70 @ =gStringVar4
- ldr r4, _0811AB74 @ =gUnknown_8458A78
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- lsls r1, r7, 4
- b _0811ABB0
- .align 2, 0
-_0811AB70: .4byte gStringVar4
-_0811AB74: .4byte gUnknown_8458A78
-_0811AB78:
- ldr r5, _0811AB94 @ =gStringVar4
- ldr r4, _0811AB98 @ =gUnknown_84588BC
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 14
- lsls r0, r7, 4
- adds r1, r0
- adds r1, r4
- ldr r1, [r1]
- b _0811ABB6
- .align 2, 0
-_0811AB94: .4byte gStringVar4
-_0811AB98: .4byte gUnknown_84588BC
-_0811AB9C:
- ldr r5, _0811ABC0 @ =gStringVar4
- ldr r4, _0811ABC4 @ =gUnknown_84589AC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- lsls r1, r7, 3
-_0811ABB0:
- adds r0, r1
- adds r0, r4
- ldr r1, [r0]
-_0811ABB6:
- adds r0, r5, 0
- bl StringExpandPlaceholders
- b _0811ABD0
- .align 2, 0
-_0811ABC0: .4byte gStringVar4
-_0811ABC4: .4byte gUnknown_84589AC
-_0811ABC8:
- ldr r0, _0811ABD8 @ =gStringVar4
- ldr r1, _0811ABDC @ =gUnknown_8457F90
- bl StringExpandPlaceholders
-_0811ABD0:
- movs r0, 0
-_0811ABD2:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811ABD8: .4byte gStringVar4
-_0811ABDC: .4byte gUnknown_8457F90
- thumb_func_end sub_811AA5C
-
- thumb_func_start nullsub_92
-nullsub_92: @ 811ABE0
- bx lr
- thumb_func_end nullsub_92
-
- thumb_func_start sub_811ABE4
-sub_811ABE4: @ 811ABE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r4, [sp, 0x28]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r4, 24
- lsrs r4, 24
- ldrh r0, [r2, 0x8]
- lsls r0, 22
- lsrs r0, 22
- mov r8, r0
- ldrb r0, [r2, 0x9]
- lsrs r7, r0, 2
- ldrb r0, [r2, 0xB]
- lsrs r0, 1
- mov r9, r0
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r3, 0
- movs r3, 0x8
- bl sub_811A444
- movs r0, 0xCE
- lsls r0, 1
- cmp r8, r0
- bne _0811AC3C
- ldr r2, _0811AC38 @ =gUnknown_8458FBC
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0x44
- bl sub_811A444
- b _0811AC90
- .align 2, 0
-_0811AC38: .4byte gUnknown_8458FBC
-_0811AC3C:
- adds r1, r7, 0x1
- adds r0, r6, 0
- movs r2, 0x44
- adds r3, r5, 0
- bl BlitMoveInfoIcon
- movs r0, 0xB
- mov r2, r8
- muls r2, r0
- ldr r0, _0811ACA0 @ =gSpeciesNames
- adds r2, r0
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0x76
- bl sub_811A444
- add r0, sp, 0x8
- mov r1, r9
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x2
- add r1, sp, 0x8
- movs r2, 0
- bl GetStringWidth
- lsls r0, 16
- lsrs r0, 16
- movs r3, 0xDA
- subs r3, r0
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- add r2, sp, 0x8
- bl sub_811A444
-_0811AC90:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ACA0: .4byte gSpeciesNames
- thumb_func_end sub_811ABE4
-
- thumb_func_start sub_811ACA4
-sub_811ACA4: @ 811ACA4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r0, _0811ACF8 @ =gUnknown_203B05C
- ldr r6, [r0]
- movs r0, 0x3
- negs r0, r0
- cmp r4, r0
- bne _0811AD38
- ldr r0, _0811ACFC @ =gUnknown_8456F7C
- ldrb r0, [r0, 0x14]
- lsls r0, 28
- lsrs r0, 28
- cmp r8, r0
- bne _0811AD38
- bl sub_80F9800
- adds r2, r0, 0
- ldrh r1, [r2, 0x8]
- ldr r0, _0811AD00 @ =0x000003ff
- ands r0, r1
- cmp r0, 0
- beq _0811AD6C
- ldr r0, _0811AD04 @ =gSaveBlock2Ptr
- ldr r3, [r0]
- movs r0, 0x5
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- bl sub_811ABE4
- b _0811AD6C
- .align 2, 0
-_0811ACF8: .4byte gUnknown_203B05C
-_0811ACFC: .4byte gUnknown_8456F7C
-_0811AD00: .4byte 0x000003ff
-_0811AD04: .4byte gSaveBlock2Ptr
-_0811AD08:
- mov r0, r12
- adds r1, r0, r4
- adds r1, 0x10
- add r0, sp, 0x4
- bl StringCopy
- ldr r0, [r6]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- add r0, sp, 0x4
- bl ConvertInternationalString
- ldr r2, [r6]
- adds r2, r4
- movs r0, 0x6
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- add r3, sp, 0x4
- bl sub_811ABE4
- b _0811AD6C
-_0811AD38:
- movs r5, 0
- movs r1, 0
- ldr r0, [r6]
- mov r12, r0
- mov r2, r12
- adds r2, 0x8
- movs r3, 0
- adds r7, r4, 0x1
-_0811AD48:
- ldrb r0, [r2, 0x12]
- lsls r0, 30
- lsrs r0, 30
- adds r4, r3, 0
- cmp r0, 0x1
- bne _0811AD5E
- ldrh r0, [r2]
- lsls r0, 22
- cmp r0, 0
- beq _0811AD5E
- adds r5, 0x1
-_0811AD5E:
- cmp r5, r7
- beq _0811AD08
- adds r2, 0x20
- adds r3, 0x20
- adds r1, 0x1
- cmp r1, 0x7
- ble _0811AD48
-_0811AD6C:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811ACA4
-
- thumb_func_start sub_811AD7C
-sub_811AD7C: @ 811AD7C
- push {r4-r7,lr}
- movs r4, 0
- movs r3, 0
- movs r7, 0x3
- ldr r6, _0811ADAC @ =0x000003ff
- adds r2, r0, 0
- adds r2, 0x8
- adds r5, r1, 0x1
-_0811AD8C:
- ldrb r1, [r2, 0x12]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x1
- bne _0811ADA2
- ldrh r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0811ADA2
- adds r4, 0x1
-_0811ADA2:
- cmp r4, r5
- bne _0811ADB0
- adds r0, r3, 0
- b _0811ADBC
- .align 2, 0
-_0811ADAC: .4byte 0x000003ff
-_0811ADB0:
- adds r2, 0x20
- adds r3, 0x1
- cmp r3, 0x7
- ble _0811AD8C
- movs r0, 0x1
- negs r0, r0
-_0811ADBC:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811AD7C
-
- thumb_func_start sub_811ADC4
-sub_811ADC4: @ 811ADC4
- lsls r0, 5
- adds r0, r1
- ldrb r0, [r0, 0xB]
- lsls r0, 31
- lsrs r0, 31
- bx lr
- thumb_func_end sub_811ADC4
-
- thumb_func_start sub_811ADD0
-sub_811ADD0: @ 811ADD0
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _0811AE10
- movs r4, 0
- b _0811ADFA
-_0811ADE0:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0811AE08 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0811AE40
- adds r4, 0x1
-_0811ADFA:
- ldr r0, _0811AE0C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- blt _0811ADE0
- movs r0, 0x2
- b _0811AE5C
- .align 2, 0
-_0811AE08: .4byte gPlayerParty
-_0811AE0C: .4byte gPlayerPartyCount
-_0811AE10:
- movs r4, 0
- ldr r0, _0811AE44 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bge _0811AE5A
- ldr r6, _0811AE48 @ =gBaseStats
-_0811AE1C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0811AE4C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r6
- ldrb r0, [r1, 0x6]
- cmp r0, r5
- beq _0811AE40
- ldrb r0, [r1, 0x7]
- cmp r0, r5
- bne _0811AE50
-_0811AE40:
- movs r0, 0
- b _0811AE5C
- .align 2, 0
-_0811AE44: .4byte gPlayerPartyCount
-_0811AE48: .4byte gBaseStats
-_0811AE4C: .4byte gPlayerParty
-_0811AE50:
- adds r4, 0x1
- ldr r0, _0811AE64 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- blt _0811AE1C
-_0811AE5A:
- movs r0, 0x1
-_0811AE5C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AE64: .4byte gPlayerPartyCount
- thumb_func_end sub_811ADD0
-
- thumb_func_start sub_811AE68
-sub_811AE68: @ 811AE68
- push {lr}
- adds r3, r0, 0
- cmp r1, 0x44
- beq _0811AEA4
- cmp r1, 0x44
- bgt _0811AE7A
- cmp r1, 0x41
- beq _0811AE84
- b _0811AEC2
-_0811AE7A:
- cmp r1, 0x45
- beq _0811AE94
- cmp r1, 0x48
- beq _0811AEB4
- b _0811AEC2
-_0811AE84:
- ldr r0, _0811AE90 @ =gUnknown_8458314
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- b _0811AEA6
- .align 2, 0
-_0811AE90: .4byte gUnknown_8458314
-_0811AE94:
- ldr r0, _0811AEA0 @ =gUnknown_84585E8
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- b _0811AEA6
- .align 2, 0
-_0811AEA0: .4byte gUnknown_84585E8
-_0811AEA4:
- ldr r1, _0811AEB0 @ =gUnknown_8458F9C
-_0811AEA6:
- adds r0, r3, 0
- bl StringExpandPlaceholders
- b _0811AEC2
- .align 2, 0
-_0811AEB0: .4byte gUnknown_8458F9C
-_0811AEB4:
- ldr r0, _0811AEC8 @ =gUnknown_84583B4
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r3, 0
- bl StringExpandPlaceholders
-_0811AEC2:
- pop {r0}
- bx r0
- .align 2, 0
-_0811AEC8: .4byte gUnknown_84583B4
- thumb_func_end sub_811AE68
-
- thumb_func_start sub_811AECC
-sub_811AECC: @ 811AECC
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- adds r6, r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _0811AF00 @ =gLinkPlayers
- movs r0, 0x1
- adds r1, r3, 0
- eors r1, r0
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x13]
- cmp r4, 0x44
- beq _0811AF20
- cmp r4, 0x44
- bgt _0811AF04
- cmp r4, 0x41
- beq _0811AF0A
- b _0811AF60
- .align 2, 0
-_0811AF00: .4byte gLinkPlayers
-_0811AF04:
- cmp r6, 0x45
- beq _0811AF44
- b _0811AF60
-_0811AF0A:
- ldr r2, _0811AF1C @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- b _0811AF32
- .align 2, 0
-_0811AF1C: .4byte gUnknown_8458230
-_0811AF20:
- ldr r2, _0811AF40 @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- adds r2, 0x8
-_0811AF32:
- adds r1, r2
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
- b _0811AF60
- .align 2, 0
-_0811AF40: .4byte gUnknown_8458230
-_0811AF44:
- ldr r2, _0811AF68 @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- adds r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
-_0811AF60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF68: .4byte gUnknown_8458230
- thumb_func_end sub_811AECC
-
- thumb_func_start sub_811AF6C
-sub_811AF6C: @ 811AF6C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r2, 0
- adds r6, r3, 0
- movs r2, 0
- mov r8, r2
- ldrh r0, [r5]
- subs r0, 0x40
- cmp r0, 0x8
- bls _0811AF86
- b _0811B092
-_0811AF86:
- lsls r0, 2
- ldr r1, _0811AF90 @ =_0811AF94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811AF90: .4byte _0811AF94
- .align 2, 0
-_0811AF94:
- .4byte _0811B088
- .4byte _0811AFB8
- .4byte _0811B092
- .4byte _0811B092
- .4byte _0811AFC8
- .4byte _0811AFC0
- .4byte _0811B092
- .4byte _0811B092
- .4byte _0811B078
-_0811AFB8:
- ldr r1, _0811AFBC @ =gUnknown_8457CA4
- b _0811B07A
- .align 2, 0
-_0811AFBC: .4byte gUnknown_8457CA4
-_0811AFC0:
- ldr r1, _0811AFC4 @ =gUnknown_8457CF8
- b _0811B07A
- .align 2, 0
-_0811AFC4: .4byte gUnknown_8457CF8
-_0811AFC8:
- adds r0, r6, 0
- adds r0, 0x58
- ldr r4, _0811AFF0 @ =gUnknown_203B06C
- ldrh r1, [r4, 0xC]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- adds r0, 0x63
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _0811AFF4 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- movs r4, 0
- b _0811AFFA
- .align 2, 0
-_0811AFF0: .4byte gUnknown_203B06C
-_0811AFF4: .4byte gSpeciesNames
-_0811AFF8:
- adds r4, 0x1
-_0811AFFA:
- cmp r4, 0x3
- bgt _0811B030
- ldr r0, _0811B044 @ =gRfuLinkStatus
- ldr r0, [r0]
- lsls r1, r4, 5
- adds r0, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bne _0811AFF8
- ldrh r1, [r5, 0x4]
- adds r0, r6, 0
- adds r0, 0x6E
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldrh r1, [r5, 0x2]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _0811B048 @ =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0x79
- bl StringCopy
- ldrh r5, [r5, 0x2]
- mov r8, r5
-_0811B030:
- movs r0, 0xCE
- lsls r0, 1
- cmp r8, r0
- bne _0811B050
- ldr r1, _0811B04C @ =gUnknown_8457DB8
- adds r0, r7, 0
- bl StringCopy
- b _0811B080
- .align 2, 0
-_0811B044: .4byte gRfuLinkStatus
-_0811B048: .4byte gSpeciesNames
-_0811B04C: .4byte gUnknown_8457DB8
-_0811B050:
- movs r4, 0
- adds r5, r6, 0
- adds r5, 0x58
-_0811B056:
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- adds r5, 0xB
- adds r4, 0x1
- cmp r4, 0x3
- ble _0811B056
- ldr r1, _0811B074 @ =gUnknown_8457D44
- adds r0, r7, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- b _0811B080
- .align 2, 0
-_0811B074: .4byte gUnknown_8457D44
-_0811B078:
- ldr r1, _0811B084 @ =gUnknown_8457C48
-_0811B07A:
- adds r0, r7, 0
- bl StringExpandPlaceholders
-_0811B080:
- movs r2, 0x1
- b _0811B092
- .align 2, 0
-_0811B084: .4byte gUnknown_8457C48
-_0811B088:
- ldr r1, _0811B0A0 @ =gUnknown_8457E0C
- adds r0, r7, 0
- bl StringExpandPlaceholders
- movs r2, 0x2
-_0811B092:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B0A0: .4byte gUnknown_8457E0C
- thumb_func_end sub_811AF6C
-
- thumb_func_start sub_811B0A4
-sub_811B0A4: @ 811B0A4
- push {lr}
- adds r2, r0, 0
- ldr r0, _0811B0C4 @ =gRecvCmds
- ldrh r1, [r0, 0x2]
- cmp r1, 0
- beq _0811B0C8
- cmp r1, 0x51
- beq _0811B0B8
- cmp r1, 0x52
- bne _0811B0C8
-_0811B0B8:
- adds r0, r2, 0
- adds r0, 0x84
- strh r1, [r0]
- movs r0, 0x1
- b _0811B0CA
- .align 2, 0
-_0811B0C4: .4byte gRecvCmds
-_0811B0C8:
- movs r0, 0
-_0811B0CA:
- pop {r1}
- bx r1
- thumb_func_end sub_811B0A4
-
- thumb_func_start InUnionRoom
-InUnionRoom: @ 811B0D0
- push {lr}
- movs r2, 0
- ldr r0, _0811B0EC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0811B0E4
- movs r2, 0x1
-_0811B0E4:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811B0EC: .4byte gSaveBlock1Ptr
- thumb_func_end InUnionRoom
-
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- ldr r0, _0811B138 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r6, r0
- bge _0811B130
-_0811B0FE:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0811B13C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x1E
- bhi _0811B126
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0811B126
- adds r6, 0x1
-_0811B126:
- adds r5, 0x1
- ldr r0, _0811B138 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _0811B0FE
-_0811B130:
- cmp r6, 0x1
- bgt _0811B140
- movs r0, 0
- b _0811B142
- .align 2, 0
-_0811B138: .4byte gPlayerPartyCount
-_0811B13C: .4byte gPlayerParty
-_0811B140:
- movs r0, 0x1
-_0811B142:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811B0F0
-
- thumb_func_start sub_811B148
-sub_811B148: @ 811B148
- movs r1, 0
- strh r1, [r0]
- strh r1, [r0, 0x2]
- str r1, [r0, 0x4]
- strh r1, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r1, [r0, 0xE]
- strh r1, [r0, 0x10]
- str r1, [r0, 0x14]
- bx lr
- thumb_func_end sub_811B148
-
- thumb_func_start Script_ResetUnionRoomTrade
-Script_ResetUnionRoomTrade: @ 811B15C
- push {lr}
- ldr r0, _0811B168 @ =gUnknown_203B06C
- bl sub_811B148
- pop {r0}
- bx r0
- .align 2, 0
-_0811B168: .4byte gUnknown_203B06C
- thumb_func_end Script_ResetUnionRoomTrade
-
- thumb_func_start sub_811B16C
-sub_811B16C: @ 811B16C
- push {r4,r5,lr}
- adds r5, r1, 0
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _0811B1A8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- strh r0, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r5, 0x4]
- ldrh r1, [r5, 0xA]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0811B1AC
- movs r0, 0
- b _0811B1AE
- .align 2, 0
-_0811B1A8: .4byte gPlayerParty
-_0811B1AC:
- movs r0, 0x1
-_0811B1AE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B16C
-
- thumb_func_start sub_811B1B4
-sub_811B1B4: @ 811B1B4
- push {r4,r5,lr}
- adds r5, r1, 0
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _0811B1E8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r5, 0xE]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- strh r0, [r5, 0x10]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r5, 0x14]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B1E8: .4byte gPlayerParty
- thumb_func_end sub_811B1B4
-
- thumb_func_start sub_811B1EC
-sub_811B1EC: @ 811B1EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- movs r2, 0
- mov r8, r2
- cmp r1, 0
- bne _0811B20A
- ldrh r7, [r0, 0xA]
- ldr r6, [r0, 0x4]
- b _0811B20E
-_0811B202:
- lsls r0, r5, 16
- lsrs r0, 16
- mov r8, r0
- b _0811B242
-_0811B20A:
- ldrh r7, [r0, 0xE]
- ldr r6, [r0, 0x14]
-_0811B20E:
- movs r5, 0
- b _0811B23A
-_0811B212:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0811B250 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- cmp r0, r6
- bne _0811B238
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- beq _0811B202
-_0811B238:
- adds r5, 0x1
-_0811B23A:
- ldr r0, _0811B254 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _0811B212
-_0811B242:
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B250: .4byte gPlayerParty
-_0811B254: .4byte gPlayerPartyCount
- thumb_func_end sub_811B1EC
-
- thumb_func_start sub_811B258
-sub_811B258: @ 811B258
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811A3F8
- bl ScriptContext2_Disable
- bl sub_80696F0
- ldr r1, _0811B290 @ =gUnknown_203B058
- movs r0, 0
- strb r0, [r1]
- cmp r4, 0
- beq _0811B288
- ldr r2, _0811B294 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FB008
-_0811B288:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B290: .4byte gUnknown_203B058
-_0811B294: .4byte gUnknown_203B06C
- thumb_func_end sub_811B258
-
- thumb_func_start sub_811B298
-sub_811B298: @ 811B298
- push {lr}
- bl ScriptContext2_Enable
- bl ScriptFreezeObjectEvents
- pop {r0}
- bx r0
- thumb_func_end sub_811B298
-
- thumb_func_start sub_811B2A8
-sub_811B2A8: @ 811B2A8
- push {r4,lr}
- movs r4, 0x80
- ldr r3, _0811B2D4 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r1, r3
- ldrb r2, [r0, 0x13]
- lsls r2, 3
- orrs r2, r4
- adds r3, 0x4
- adds r1, r3
- ldr r0, [r1]
- movs r1, 0x7
- ands r0, r1
- orrs r0, r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B2D4: .4byte gLinkPlayers
- thumb_func_end sub_811B2A8
-
- thumb_func_start sub_811B2D8
-sub_811B2D8: @ 811B2D8
- push {r4,lr}
- movs r3, 0x80
- movs r2, 0
- ldr r4, [r0, 0xC]
-_0811B2E0:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r4, r0
- ldrb r0, [r1, 0x18]
- lsls r0, 31
- cmp r0, 0
- beq _0811B308
- ldrb r0, [r1, 0xB]
- lsls r0, 31
- lsrs r0, 31
- lsls r0, 3
- orrs r3, r0
- ldrb r1, [r1, 0x2]
- movs r0, 0x7
- ands r0, r1
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
- b _0811B312
-_0811B308:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _0811B2E0
-_0811B312:
- adds r0, r3, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B2D8
-
- thumb_func_start sub_811B31C
-sub_811B31C: @ 811B31C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 5
- ldr r0, _0811B4B0 @ =gTrainerCards
- adds r1, r0
- mov r8, r1
- bl DynamicPlaceholderTextUtil_Reset
- mov r6, r9
- adds r6, 0xAC
- bl sub_80447F0
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- muls r1, r0
- ldr r0, _0811B4B4 @ =gTrainerClassNames
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- movs r0, 0
- adds r1, r6, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r1, r8
- adds r1, 0x30
- movs r0, 0x1
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r4, 0xB0
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4B8 @ =gUnknown_84594B0
- mov r2, r8
- ldrb r0, [r2, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0x2
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r5, r9
- adds r5, 0xCA
- mov r0, r8
- ldrh r1, [r0, 0xC]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x3
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r2, 0xD9
- add r2, r9
- mov r10, r2
- mov r0, r8
- ldrh r1, [r0, 0x10]
- mov r0, r10
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r4, r9
- adds r4, 0xE8
- mov r2, r8
- ldrh r1, [r2, 0x12]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- mov r1, r10
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r0, 0x5
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r4, 0xC8
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4BC @ =gUnknown_84594C4
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldr r0, _0811B4C0 @ =gStringVar4
- adds r1, r4, 0
- bl StringCopy
- mov r0, r8
- ldrh r1, [r0, 0x14]
- ldr r4, _0811B4C4 @ =0x0000270f
- cmp r1, r4
- ble _0811B40A
- adds r1, r4, 0
-_0811B40A:
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r0, 0
- adds r1, r6, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r2, r8
- ldrh r1, [r2, 0x16]
- cmp r1, r4
- ble _0811B426
- adds r1, r4, 0
-_0811B426:
- mov r4, r9
- adds r4, 0xBB
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r0, 0x2
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r0, r8
- ldrh r1, [r0, 0x20]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- movs r0, 0x3
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r7, 0
- movs r6, 0x80
- lsls r6, 19
- mov r5, r8
- adds r5, 0x28
- mov r4, r10
-_0811B45E:
- ldrh r1, [r5]
- adds r0, r4, 0
- bl CopyEasyChatWord
- lsrs r0, r6, 24
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r2, 0x80
- lsls r2, 17
- adds r6, r2
- adds r5, 0x2
- adds r4, 0xF
- adds r7, 0x1
- cmp r7, 0x3
- ble _0811B45E
- movs r4, 0xC8
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4C8 @ =gUnknown_8459504
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldr r5, _0811B4C0 @ =gStringVar4
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r0, [sp]
- cmp r0, 0x1
- bne _0811B4D0
- ldr r1, _0811B4CC @ =gUnknown_8459588
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- b _0811B4F0
- .align 2, 0
-_0811B4B0: .4byte gTrainerCards
-_0811B4B4: .4byte gTrainerClassNames
-_0811B4B8: .4byte gUnknown_84594B0
-_0811B4BC: .4byte gUnknown_84594C4
-_0811B4C0: .4byte gStringVar4
-_0811B4C4: .4byte 0x0000270f
-_0811B4C8: .4byte gUnknown_8459504
-_0811B4CC: .4byte gUnknown_8459588
-_0811B4D0:
- ldr r2, [sp]
- cmp r2, 0
- bne _0811B4F0
- ldr r0, _0811B500 @ =gUnknown_8459580
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
-_0811B4F0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B500: .4byte gUnknown_8459580
- thumb_func_end sub_811B31C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/union_room_player_avatar.s b/asm/union_room_player_avatar.s
deleted file mode 100644
index 5c6786ae6..000000000
--- a/asm/union_room_player_avatar.s
+++ /dev/null
@@ -1,2064 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start is_walking_or_running
-is_walking_or_running: @ 811B504
- push {lr}
- ldr r0, _0811B518 @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x2
- beq _0811B512
- cmp r0, 0
- bne _0811B51C
-_0811B512:
- movs r0, 0x1
- b _0811B51E
- .align 2, 0
-_0811B518: .4byte gPlayerAvatar
-_0811B51C:
- movs r0, 0
-_0811B51E:
- pop {r1}
- bx r1
- thumb_func_end is_walking_or_running
-
- thumb_func_start sub_811B524
-sub_811B524: @ 811B524
- ldr r3, _0811B538 @ =gUnknown_84570D8
- movs r2, 0x7
- ands r2, r1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- adds r2, r1
- adds r2, r3
- ldrb r0, [r2]
- bx lr
- .align 2, 0
-_0811B538: .4byte gUnknown_84570D8
- thumb_func_end sub_811B524
-
- thumb_func_start sub_811B53C
-sub_811B53C: @ 811B53C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r4, _0811B584 @ =gUnknown_84570EC
- mov r8, r4
- lsls r0, 2
- adds r4, r0, r4
- movs r6, 0
- ldrsh r5, [r4, r6]
- ldr r6, _0811B588 @ =gUnknown_845710C
- lsls r1, 1
- adds r4, r1, r6
- ldrb r4, [r4]
- lsls r4, 24
- asrs r4, 24
- adds r5, r4
- adds r5, 0x7
- str r5, [r2]
- movs r2, 0x2
- add r8, r2
- add r0, r8
- movs r4, 0
- ldrsh r0, [r0, r4]
- adds r6, 0x1
- adds r1, r6
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r0, r1
- adds r0, 0x7
- str r0, [r3]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B584: .4byte gUnknown_84570EC
-_0811B588: .4byte gUnknown_845710C
- thumb_func_end sub_811B53C
-
- thumb_func_start sub_811B58C
-sub_811B58C: @ 811B58C
- push {r4-r7,lr}
- mov r12, r3
- ldr r7, _0811B5CC @ =gUnknown_84570EC
- lsls r5, r0, 2
- adds r0, r5, r7
- movs r4, 0
- ldrsh r3, [r0, r4]
- ldr r6, _0811B5D0 @ =gUnknown_845710C
- lsls r4, r1, 1
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r3, r0
- adds r3, 0x7
- cmp r3, r2
- bne _0811B5D4
- adds r0, r7, 0x2
- adds r0, r5, r0
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r0, r6, 0x1
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r0
- adds r1, 0x7
- cmp r1, r12
- bne _0811B5D4
- movs r0, 0x1
- b _0811B5D6
- .align 2, 0
-_0811B5CC: .4byte gUnknown_84570EC
-_0811B5D0: .4byte gUnknown_845710C
-_0811B5D4:
- movs r0, 0
-_0811B5D6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B58C
-
- thumb_func_start sub_811B5DC
-sub_811B5DC: @ 811B5DC
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_811B5DC
-
- thumb_func_start sub_811B5F0
-sub_811B5F0: @ 811B5F0
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_811B5F0
-
- thumb_func_start sub_811B600
-sub_811B600: @ 811B600
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end sub_811B600
-
- thumb_func_start sub_811B610
-sub_811B610: @ 811B610
- push {lr}
- ldr r2, _0811B628 @ =0x00004010
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0811B628: .4byte 0x00004010
- thumb_func_end sub_811B610
-
- thumb_func_start sub_811B62C
-sub_811B62C: @ 811B62C
- push {lr}
- ldr r1, _0811B644 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B648 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- pop {r0}
- bx r0
- .align 2, 0
-_0811B644: .4byte gUnknown_8457120
-_0811B648: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B62C
-
- thumb_func_start sub_811B64C
-sub_811B64C: @ 811B64C
- push {lr}
- ldr r1, _0811B664 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B668 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveObjectEventByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_0811B664: .4byte gUnknown_8457120
-_0811B668: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B64C
-
- thumb_func_start sub_811B66C
-sub_811B66C: @ 811B66C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- ldr r1, _0811B6B8 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B6BC @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B6C0 @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- ldrb r1, [r5]
- adds r0, r4, 0
- bl ObjectEventSetHeldMovement
- lsls r0, 24
- cmp r0, 0
- bne _0811B6C4
- movs r0, 0x1
- b _0811B6D2
- .align 2, 0
-_0811B6B8: .4byte gUnknown_8457120
-_0811B6BC: .4byte gSaveBlock1Ptr
-_0811B6C0: .4byte gObjectEvents
-_0811B6C4:
- ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B6E0 @ =0x00000183
- ldr r2, _0811B6E4 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811B6D0:
- movs r0, 0
-_0811B6D2:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B6DC: .4byte gUnknown_8457138
-_0811B6E0: .4byte 0x00000183
-_0811B6E4: .4byte gUnknown_8457174
- thumb_func_end sub_811B66C
-
- thumb_func_start sub_811B6E8
-sub_811B6E8: @ 811B6E8
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0811B724 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B728 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B748
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B72C @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- bne _0811B730
- movs r0, 0
- b _0811B74A
- .align 2, 0
-_0811B724: .4byte gUnknown_8457120
-_0811B728: .4byte gSaveBlock1Ptr
-_0811B72C: .4byte gObjectEvents
-_0811B730:
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _0811B742
- adds r0, r4, 0
- bl npc_sync_anim_pause_bits
- b _0811B748
-_0811B742:
- adds r0, r4, 0
- bl FreezeObjectEvent
-_0811B748:
- movs r0, 0x1
-_0811B74A:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B6E8
-
- thumb_func_start sub_811B754
-sub_811B754: @ 811B754
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811B798 @ =gUnknown_203B088
- movs r1, 0
- str r1, [r0]
- ldr r0, _0811B79C @ =gUnknown_203B084
- str r4, [r0]
- cmp r4, 0
- bne _0811B774
- ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- movs r1, 0xDD
- lsls r1, 1
- ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B774:
- movs r1, 0
- adds r0, r4, 0
- movs r2, 0x7
-_0811B77A:
- strb r1, [r0]
- strb r1, [r0, 0x1]
- strb r1, [r0, 0x2]
- strb r1, [r0, 0x3]
- adds r0, 0x4
- subs r2, 0x1
- cmp r2, 0
- bge _0811B77A
- bl sub_811BA18
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B798: .4byte gUnknown_203B088
-_0811B79C: .4byte gUnknown_203B084
-_0811B7A0: .4byte gUnknown_8457138
-_0811B7A4: .4byte gUnknown_8457178
- thumb_func_end sub_811B754
-
- thumb_func_start sub_811B7A8
-sub_811B7A8: @ 811B7A8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r0, 0
- ldrsb r0, [r5, r0]
- cmp r0, 0
- beq _0811B7BC
- cmp r0, 0x1
- beq _0811B7DC
- b _0811B7FA
-_0811B7BC:
- ldr r1, _0811B7D8 @ =gUnknown_845718D
- adds r0, r4, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B7FA
- adds r0, r4, 0
- bl sub_811B5F0
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0811B7FA
- .align 2, 0
-_0811B7D8: .4byte gUnknown_845718D
-_0811B7DC:
- adds r0, r4, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B7FA
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
- movs r0, 0
- strb r0, [r5]
- movs r0, 0x1
- b _0811B7FC
-_0811B7FA:
- movs r0, 0
-_0811B7FC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B7A8
-
- thumb_func_start sub_811B804
-sub_811B804: @ 811B804
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x2
- beq _0811B8A0
- cmp r0, 0x2
- bgt _0811B820
- cmp r0, 0
- beq _0811B826
- b _0811B8B2
-_0811B820:
- cmp r0, 0x3
- beq _0811B888
- b _0811B8B2
-_0811B826:
- bl is_walking_or_running
- cmp r0, 0
- beq _0811B8B2
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- mov r0, sp
- adds r1, r4, 0
- bl plaer_get_pos_including_state_based_drift
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- ldrb r1, [r7, 0x1]
- adds r0, r5, 0
- bl sub_811B610
- adds r0, r5, 0
- bl sub_811B62C
- adds r0, r5, 0
- bl sub_811B600
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0811B888:
- ldr r1, _0811B89C @ =gUnknown_845718F
- adds r0, r5, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B8B2
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0811B8B2
- .align 2, 0
-_0811B89C: .4byte gUnknown_845718F
-_0811B8A0:
- adds r0, r5, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B8B2
- movs r0, 0
- strb r0, [r6]
- movs r0, 0x1
- b _0811B8B4
-_0811B8B2:
- movs r0, 0
-_0811B8B4:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B804
-
- thumb_func_start sub_811B8BC
-sub_811B8BC: @ 811B8BC
- push {r4-r6,lr}
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r1, _0811B8F4 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B8DA
- ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B8FC @ =0x00000231
- ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B8DA:
- movs r0, 0x1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_811B524
- strb r0, [r4, 0x1]
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811B904
- movs r0, 0
- b _0811B906
- .align 2, 0
-_0811B8F4: .4byte gUnknown_203B084
-_0811B8F8: .4byte gUnknown_8457138
-_0811B8FC: .4byte 0x00000231
-_0811B900: .4byte gUnknown_8457178
-_0811B904:
- movs r0, 0x1
-_0811B906:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811B8BC
-
- thumb_func_start sub_811B90C
-sub_811B90C: @ 811B90C
- push {r4,lr}
- ldr r1, _0811B934 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B926
- ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B93C @ =0x00000241
- ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B926:
- movs r0, 0x2
- strb r0, [r4, 0x3]
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _0811B944
- movs r0, 0
- b _0811B946
- .align 2, 0
-_0811B934: .4byte gUnknown_203B084
-_0811B938: .4byte gUnknown_8457138
-_0811B93C: .4byte 0x00000241
-_0811B940: .4byte gUnknown_8457178
-_0811B944:
- movs r0, 0x1
-_0811B946:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B90C
-
- thumb_func_start sub_811B94C
-sub_811B94C: @ 811B94C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _0811B9AE
- cmp r1, 0x1
- bgt _0811B962
- cmp r1, 0
- beq _0811B96C
- b _0811B9CE
-_0811B962:
- cmp r1, 0x2
- beq _0811B978
- cmp r1, 0x3
- beq _0811B9BC
- b _0811B9CE
-_0811B96C:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0x2
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B978:
- adds r0, r5, 0
- movs r1, 0
- bl sub_811BBC8
- adds r1, r0, 0
- cmp r1, 0
- bne _0811B99E
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B99E
- strb r1, [r4]
- strb r1, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B64C
- adds r0, r5, 0
- bl sub_811B5F0
- b _0811B9CE
-_0811B99E:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B804
- cmp r0, 0x1
- bne _0811B9CE
- b _0811B9CC
-_0811B9AE:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B9CE
- movs r1, 0
- movs r0, 0x3
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B9BC:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B7A8
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0
-_0811B9CC:
- strb r0, [r4]
-_0811B9CE:
- movs r0, 0
- strb r0, [r4, 0x3]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811B94C
-
- thumb_func_start sub_811B9D8
-sub_811B9D8: @ 811B9D8
- push {r4,r5,lr}
- ldr r5, _0811BA08 @ =gUnknown_203B084
- ldr r0, [r5]
- cmp r0, 0
- bne _0811B9EE
- ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA10 @ =0x00000283
- ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B9EE:
- movs r4, 0
-_0811B9F0:
- lsls r0, r4, 2
- ldr r1, [r5]
- adds r1, r0
- adds r0, r4, 0
- bl sub_811B94C
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811B9F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA08: .4byte gUnknown_203B084
-_0811BA0C: .4byte gUnknown_8457138
-_0811BA10: .4byte 0x00000283
-_0811BA14: .4byte gUnknown_8457178
- thumb_func_end sub_811B9D8
-
- thumb_func_start sub_811BA18
-sub_811BA18: @ 811BA18
- push {r4,lr}
- ldr r4, _0811BA38 @ =sub_811B9D8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811BA3C
- adds r0, r4, 0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- b _0811BA4A
- .align 2, 0
-_0811BA38: .4byte sub_811B9D8
-_0811BA3C:
- ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA54 @ =0x0000028f
- ldr r2, _0811BA58 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0x10
-_0811BA4A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BA50: .4byte gUnknown_8457138
-_0811BA54: .4byte 0x0000028f
-_0811BA58: .4byte gUnknown_8457174
- thumb_func_end sub_811BA18
-
- thumb_func_start sub_811BA5C
-sub_811BA5C: @ 811BA5C
- push {lr}
- ldr r0, _0811BA74 @ =sub_811B9D8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _0811BA70
- bl DestroyTask
-_0811BA70:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA74: .4byte sub_811B9D8
- thumb_func_end sub_811BA5C
-
- thumb_func_start sub_811BA78
-sub_811BA78: @ 811BA78
- push {r4,lr}
- movs r4, 0
-_0811BA7C:
- adds r0, r4, 0
- bl sub_811B5DC
- cmp r0, 0
- bne _0811BA92
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
-_0811BA92:
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811BA7C
- ldr r1, _0811BAA8 @ =gUnknown_203B084
- movs r0, 0
- str r0, [r1]
- bl sub_811BA5C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BAA8: .4byte gUnknown_203B084
- thumb_func_end sub_811BA78
-
- thumb_func_start sub_811BAAC
-sub_811BAAC: @ 811BAAC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp, 0x8]
- mov r9, r1
- movs r7, 0
- mov r0, r9
- lsls r0, 2
- mov r8, r0
- ldr r0, _0811BB38 @ =gUnknown_84570EC
- mov r2, r8
- adds r1, r2, r0
- ldrh r1, [r1]
- mov r2, sp
- strh r1, [r2, 0xC]
- adds r0, 0x2
- add r0, r8
- ldrh r0, [r0]
- mov r10, r0
- ldr r6, _0811BB3C @ =gUnknown_845710C
-_0811BADA:
- mov r5, r8
- add r5, r9
- adds r5, r7
- adds r4, r5, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0
- ldrsb r2, [r6, r2]
- mov r0, sp
- ldrh r0, [r0, 0xC]
- adds r2, r0, r2
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x1
- ldrsb r3, [r6, r3]
- add r3, r10
- lsls r3, 16
- asrs r3, 16
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x19
- adds r1, r4, 0
- bl sprite_new
- ldr r1, [sp, 0x8]
- adds r5, r1, r5
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8069124
- adds r6, 0x2
- adds r7, 0x1
- cmp r7, 0x4
- ble _0811BADA
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB38: .4byte gUnknown_84570EC
-_0811BB3C: .4byte gUnknown_845710C
- thumb_func_end sub_811BAAC
-
- thumb_func_start sub_811BB40
-sub_811BB40: @ 811BB40
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- ldr r6, _0811BB64 @ =gSprites
-_0811BB48:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- adds r4, 0x1
- cmp r4, 0x27
- ble _0811BB48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB64: .4byte gSprites
- thumb_func_end sub_811BB40
-
- thumb_func_start sub_811BB68
-sub_811BB68: @ 811BB68
- push {r4-r7,lr}
- sub sp, 0x8
- movs r5, 0
- add r7, sp, 0x4
-_0811BB70:
- movs r4, 0
- adds r6, r5, 0x1
-_0811BB74:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BB74
- adds r5, r6, 0
- cmp r5, 0x7
- ble _0811BB70
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BB68
-
- thumb_func_start sub_811BBA0
-sub_811BBA0: @ 811BBA0
- push {lr}
- adds r1, r0, 0
- cmp r1, 0
- beq _0811BBB4
- ldr r0, _0811BBB0 @ =gUnknown_845711B
- adds r0, r1, r0
- ldrb r0, [r0]
- b _0811BBC4
- .align 2, 0
-_0811BBB0: .4byte gUnknown_845711B
-_0811BBB4:
- ldrb r1, [r2, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- beq _0811BBC2
- movs r0, 0x4
- b _0811BBC4
-_0811BBC2:
- movs r0, 0x1
-_0811BBC4:
- pop {r1}
- bx r1
- thumb_func_end sub_811BBA0
-
- thumb_func_start sub_811BBC8
-sub_811BBC8: @ 811BBC8
- push {lr}
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r2
- adds r0, r1
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- pop {r1}
- bx r1
- thumb_func_end sub_811BBC8
-
- thumb_func_start sub_811BBE0
-sub_811BBE0: @ 811BBE0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- mov r9, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r0, r5, 2
- adds r0, r5
- adds r7, r0, r6
- adds r0, r5, 0
- bl sub_811BBC8
- cmp r0, 0x1
- bne _0811BC1E
- adds r4, r7, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_8069124
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80691A4
-_0811BC1E:
- adds r0, r7, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- bl sub_8069094
- adds r0, r6, 0
- adds r1, r5, 0
- mov r2, r9
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_811C008
- add r3, sp, 0x4
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0x1
- bl sub_8059024
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BBE0
-
- thumb_func_start sub_811BC68
-sub_811BC68: @ 811BC68
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 2
- adds r0, r4
- adds r0, r5
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80691A4
- add r3, sp, 0x4
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BC68
-
- thumb_func_start sub_811BCA0
-sub_811BCA0: @ 811BCA0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r7, r0, 0
- mov r8, r1
- mov r6, sp
- adds r6, 0x2
- mov r0, sp
- adds r1, r6, 0
- bl PlayerGetDestCoords
- add r4, sp, 0x4
- mov r5, sp
- adds r5, 0x6
- adds r0, r4, 0
- adds r1, r5, 0
- bl plaer_get_pos_including_state_based_drift
- lsls r0, r7, 2
- adds r0, r7
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- mov r10, r6
- mov r9, r4
- adds r6, r5, 0
- cmp r0, 0x1
- bne _0811BD2C
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- movs r0, 0
- ldrsh r2, [r4, r0]
- movs r1, 0
- ldrsh r3, [r6, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- mov r2, r8
- ldrb r0, [r2, 0xB]
- lsls r0, 31
- lsrs r0, 31
- ldrb r1, [r2, 0x2]
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- movs r1, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD2C:
- movs r5, 0x1
- mov r4, r8
- adds r4, 0x4
-_0811BD32:
- ldrb r0, [r4]
- cmp r0, 0
- bne _0811BD42
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811BC68
- b _0811BD90
-_0811BD42:
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- mov r0, r9
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r6, r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- ldrb r2, [r4]
- lsrs r0, r2, 3
- movs r1, 0x1
- ands r0, r1
- movs r1, 0x7
- ands r1, r2
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- adds r1, r5, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD90:
- adds r4, 0x1
- adds r5, 0x1
- cmp r5, 0x4
- ble _0811BD32
-_0811BD98:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BCA0
-
- thumb_func_start sub_811BDA8
-sub_811BDA8: @ 811BDA8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r4, 0xA]
- lsls r0, 25
- lsrs r0, 25
- subs r0, 0x40
- cmp r0, 0x14
- bhi _0811BE4C
- lsls r0, 2
- ldr r1, _0811BDC4 @ =_0811BDC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811BDC4: .4byte _0811BDC8
- .align 2, 0
-_0811BDC8:
- .4byte _0811BE1C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE1C
-_0811BE1C:
- ldrb r1, [r4, 0xB]
- lsls r1, 31
- lsrs r1, 31
- ldrb r2, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B8BC
- movs r4, 0
-_0811BE2C:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- bls _0811BE2C
- b _0811BE58
-_0811BE3C:
- adds r0, r5, 0
- bl sub_811B90C
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BCA0
- b _0811BE58
-_0811BE4C:
- ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BE64 @ =0x000003d3
- ldr r2, _0811BE68 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811BE58:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BE60: .4byte gUnknown_8457138
-_0811BE64: .4byte 0x000003d3
-_0811BE68: .4byte gUnknown_8457174
- thumb_func_end sub_811BDA8
-
- thumb_func_start sub_811BE6C
-sub_811BE6C: @ 811BE6C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811B90C
- movs r4, 0
-_0811BE76:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BE76
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE6C
-
- thumb_func_start sub_811BE8C
-sub_811BE8C: @ 811BE8C
- push {r4,r5,lr}
- ldr r2, _0811BEAC @ =gUnknown_203B088
- movs r1, 0
- str r1, [r2]
- movs r5, 0
- ldr r4, [r0]
-_0811BE98:
- ldrb r0, [r4, 0x1A]
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x1
- bne _0811BEB0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BDA8
- b _0811BEBC
- .align 2, 0
-_0811BEAC: .4byte gUnknown_203B088
-_0811BEB0:
- cmp r1, 0x2
- bne _0811BEBC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BE6C
-_0811BEBC:
- adds r4, 0x20
- adds r5, 0x1
- cmp r5, 0x7
- ble _0811BE98
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE8C
-
- thumb_func_start sub_811BECC
-sub_811BECC: @ 811BECC
- ldr r1, _0811BED8 @ =gUnknown_203B088
- movs r0, 0x96
- lsls r0, 1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0811BED8: .4byte gUnknown_203B088
- thumb_func_end sub_811BECC
-
- thumb_func_start sub_811BEDC
-sub_811BEDC: @ 811BEDC
- push {lr}
- adds r2, r0, 0
- ldr r0, _0811BEFC @ =gUnknown_203B088
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- movs r0, 0x96
- lsls r0, 1
- cmp r1, r0
- bls _0811BEF6
- adds r0, r2, 0
- bl sub_811BE8C
-_0811BEF6:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BEFC: .4byte gUnknown_203B088
- thumb_func_end sub_811BEDC
-
- thumb_func_start sub_811BF00
-sub_811BF00: @ 811BF00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r5, r0, 0
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- bl is_walking_or_running
- cmp r0, 0
- bne _0811BF48
- b _0811BFEE
-_0811BF1C:
- ldr r4, _0811BF44 @ =gUnknown_8457116
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r2, [r0]
- adds r0, r6, 0
- ldr r1, [sp, 0xC]
- bl sub_811C008
- ldr r0, [sp, 0x4]
- strh r6, [r0]
- mov r1, sp
- ldrh r2, [r1, 0xC]
- ldr r1, [sp, 0x8]
- strh r2, [r1]
- movs r0, 0x1
- b _0811BFF0
- .align 2, 0
-_0811BF44: .4byte gUnknown_8457116
-_0811BF48:
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r0, _0811C000 @ =gUnknown_84570EC
- adds r7, r5, 0
- movs r1, 0
- mov r10, r1
- adds r2, r0, 0x2
- str r2, [sp, 0x10]
- str r0, [sp, 0x14]
-_0811BF66:
- movs r6, 0
- ldr r4, [sp, 0x14]
- movs r0, 0
- ldrsh r4, [r4, r0]
- mov r9, r4
- ldr r1, [sp, 0x10]
- mov r8, r1
- ldr r5, _0811C004 @ =gUnknown_845710C
-_0811BF76:
- mov r2, r10
- adds r3, r2, r6
- mov r0, sp
- movs r4, 0
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r5, r0]
- add r0, r9
- adds r0, 0x7
- cmp r1, r0
- bne _0811BFCA
- mov r1, sp
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- mov r4, r8
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r2, 0x1
- ldrsb r2, [r5, r2]
- adds r1, r2
- adds r1, 0x7
- cmp r0, r1
- bne _0811BFCA
- adds r0, r3, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_806916C
- cmp r0, 0
- bne _0811BFCA
- adds r0, r4, 0
- bl sub_8069294
- cmp r0, 0
- bne _0811BFCA
- ldrb r1, [r7, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- beq _0811BF1C
-_0811BFCA:
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _0811BF76
- adds r7, 0x20
- movs r4, 0x5
- add r10, r4
- ldr r0, [sp, 0x10]
- adds r0, 0x4
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- adds r1, 0x4
- str r1, [sp, 0x14]
- ldr r2, [sp, 0xC]
- adds r2, 0x1
- str r2, [sp, 0xC]
- cmp r2, 0x7
- ble _0811BF66
-_0811BFEE:
- movs r0, 0
-_0811BFF0:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C000: .4byte gUnknown_84570EC
-_0811C004: .4byte gUnknown_845710C
- thumb_func_end sub_811BF00
-
- thumb_func_start sub_811C008
-sub_811C008: @ 811C008
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- lsls r1, r2, 24
- lsrs r1, 24
- lsls r0, r3, 2
- adds r0, r3
- subs r0, 0x38
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_8069058
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811C008
-
- thumb_func_start sub_811C028
-sub_811C028: @ 811C028
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r3, r4, 5
- adds r3, r2
- adds r2, r3, 0
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811C008
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811C028
-
- thumb_func_start sub_811C04C
-sub_811C04C: @ 811C04C
- push {r4-r7,lr}
- movs r0, 0xA
- bl sub_81173C0
- movs r4, 0
- movs r7, 0x64
- ldr r6, _0811C0CC @ =gPlayerParty
- ldr r5, _0811C0D0 @ =gEnemyParty
-_0811C05C:
- ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
- adds r0, r4, r0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, r0, 0
- muls r1, r7
- adds r1, r6
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r5, 0x64
- adds r4, 0x1
- cmp r4, 0x1
- ble _0811C05C
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r0, 0xFA
- lsls r0, 1
- adds r5, r4, r0
-_0811C082:
- adds r0, r4, 0
- bl ZeroMonData
- adds r4, 0x64
- cmp r4, r5
- ble _0811C082
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r5, 0
- adds r6, r4, 0
- adds r6, 0x64
-_0811C096:
- ldr r1, _0811C0D0 @ =gEnemyParty
- adds r1, r5, r1
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r4, 0x64
- adds r5, 0x64
- cmp r4, r6
- ble _0811C096
- movs r0, 0x32
- bl IncrementGameStat
- bl CalculatePlayerPartyCount
- ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A
- movs r2, 0xC0
- lsls r2, 4
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _0811C0DC @ =CB2_InitBattle
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0CC: .4byte gPlayerParty
-_0811C0D0: .4byte gEnemyParty
-_0811C0D4: .4byte gSelectedOrderFromParty
-_0811C0D8: .4byte gTrainerBattleOpponent_A
-_0811C0DC: .4byte CB2_InitBattle
- thumb_func_end sub_811C04C
-
- thumb_func_start sub_811C0E0
-sub_811C0E0: @ 811C0E0
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x18
- adds r5, r0, 0
- mov r10, r1
- adds r6, r2, 0
- ldr r4, [sp, 0x34]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- mov r8, r0
- ldr r1, _0811C14C @ =gUnknown_84571A8
- mov r9, r1
- ldrb r0, [r1]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- str r3, [sp, 0x14]
- bl FillWindowPixelBuffer
- mov r0, r8
- str r0, [sp]
- str r0, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- mov r0, r10
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r6, 0
- ldr r3, [sp, 0x14]
- bl AddTextPrinterParameterized4
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C14C: .4byte gUnknown_84571A8
- thumb_func_end sub_811C0E0
-
- thumb_func_start sub_811C150
-sub_811C150: @ 811C150
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0811C168
- cmp r0, 0x1
- beq _0811C196
- b _0811C1AA
-_0811C168:
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD
- bl DrawTextBorderOuter
- str r5, [sp]
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x2
- bl sub_811C0E0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0811C1AA
-_0811C196:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0811C1AA
- strh r0, [r4]
- movs r0, 0x1
- b _0811C1AC
-_0811C1AA:
- movs r0, 0
-_0811C1AC:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811C150
-
- thumb_func_start sub_811C1B4
-sub_811C1B4: @ 811C1B4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_811C1B4
-
- thumb_func_start sub_811C1C8
-sub_811C1C8: @ 811C1C8
- push {r4,lr}
- sub sp, 0xC
- ldr r1, _0811C1E8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x33
- bls _0811C1DE
- b _0811C516
-_0811C1DE:
- lsls r0, 2
- ldr r1, _0811C1EC @ =_0811C1F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811C1E8: .4byte gMain
-_0811C1EC: .4byte _0811C1F0
- .align 2, 0
-_0811C1F0:
- .4byte _0811C2C0
- .4byte _0811C364
- .4byte _0811C38C
- .4byte _0811C3B0
- .4byte _0811C400
- .4byte _0811C516
- .4byte _0811C4E4
- .4byte _0811C4C0
- .4byte _0811C4E4
- .4byte _0811C500
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C48C
- .4byte _0811C4A8
-_0811C2C0:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r4, _0811C350 @ =gUnknown_203B08C
- movs r0, 0x4
- bl AllocZeroed
- str r0, [r4]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0811C354 @ =gUnknown_8457194
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- bl ResetTempTileDataBuffers
- ldr r0, _0811C358 @ =gUnknown_8457198
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- bne _0811C300
- b _0811C52A
-_0811C300:
- bl DeactivateAllTextPrinters
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- bl Menu_LoadStdPal
- ldr r0, _0811C35C @ =sub_811C1B4
- bl SetVBlankCallback
- ldr r1, _0811C360 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C350: .4byte gUnknown_203B08C
-_0811C354: .4byte gUnknown_8457194
-_0811C358: .4byte gUnknown_8457198
-_0811C35C: .4byte sub_811C1B4
-_0811C360: .4byte gMain
-_0811C364:
- ldr r0, _0811C380 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C384 @ =gUnknown_841E538
- movs r2, 0
- bl sub_811C150
- cmp r0, 0
- bne _0811C376
- b _0811C516
-_0811C376:
- ldr r1, _0811C388 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C380: .4byte gUnknown_203B08C
-_0811C384: .4byte gUnknown_841E538
-_0811C388: .4byte gMain
-_0811C38C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- ldr r1, _0811C3AC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C3AC: .4byte gMain
-_0811C3B0:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _0811C3BC
- b _0811C516
-_0811C3BC:
- ldr r4, _0811C3D8 @ =gBlockSendBuffer
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl memset
- ldr r0, _0811C3DC @ =gSelectedOrderFromParty
- ldrb r1, [r0]
- ldrb r0, [r0, 0x1]
- cmn r1, r0
- bne _0811C3E0
- movs r0, 0x52
- b _0811C3E2
- .align 2, 0
-_0811C3D8: .4byte gBlockSendBuffer
-_0811C3DC: .4byte gSelectedOrderFromParty
-_0811C3E0:
- movs r0, 0x51
-_0811C3E2:
- strb r0, [r4]
- ldr r1, _0811C3F8 @ =gBlockSendBuffer
- movs r0, 0
- movs r2, 0x20
- bl SendBlock
- ldr r1, _0811C3FC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C3F8: .4byte gBlockSendBuffer
-_0811C3FC: .4byte gMain
-_0811C400:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0811C40E
- b _0811C516
-_0811C40E:
- ldr r1, _0811C440 @ =gBlockRecvBuffer
- ldrh r0, [r1]
- cmp r0, 0x51
- bne _0811C448
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0x51
- bne _0811C448
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0811C444 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x32
- b _0811C47E
- .align 2, 0
-_0811C440: .4byte gBlockRecvBuffer
-_0811C444: .4byte gMain
-_0811C448:
- bl sub_800AAC0
- ldr r4, _0811C46C @ =gBlockRecvBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 16
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x52
- bne _0811C474
- ldr r0, _0811C470 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x6
- b _0811C47E
- .align 2, 0
-_0811C46C: .4byte gBlockRecvBuffer
-_0811C470: .4byte gMain
-_0811C474:
- ldr r0, _0811C488 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x8
-_0811C47E:
- strb r1, [r0]
- bl ResetBlockReceivedFlags
- b _0811C516
- .align 2, 0
-_0811C488: .4byte gMain
-_0811C48C:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _0811C516
- bl sub_800AB9C
- ldr r1, _0811C4A4 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C4A4: .4byte gMain
-_0811C4A8:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4BC @ =sub_811C04C
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4BC: .4byte sub_811C04C
-_0811C4C0:
- ldr r0, _0811C4D8 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C4DC @ =gUnknown_841E58D
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4E0 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4D8: .4byte gUnknown_203B08C
-_0811C4DC: .4byte gUnknown_841E58D
-_0811C4E0: .4byte CB2_ReturnToField
-_0811C4E4:
- ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0811C516
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
-_0811C4F2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811C516
- .align 2, 0
-_0811C4FC: .4byte gReceivedRemoteLinkPlayers
-_0811C500:
- ldr r0, _0811C534 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C538 @ =gUnknown_841E572
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C53C @ =CB2_ReturnToField
- bl SetMainCallback2
-_0811C516:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
-_0811C52A:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C534: .4byte gUnknown_203B08C
-_0811C538: .4byte gUnknown_841E572
-_0811C53C: .4byte CB2_ReturnToField
- thumb_func_end sub_811C1C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/strings.s b/data/strings.s
index d25e28e94..e77730429 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4598,14 +4598,14 @@ gText_WhichMoveShouldBeForgotten:: @ 841E50C
gUnknown_841E52D:: @ 0x841E52D
.string "----------$"
-gUnknown_841E538:: @ 841E538
+gText_CommStandbyAwaitingOtherPlayer:: @ 841E538
.string "Communication standby‥\n"
.string "Awaiting another player to choose.$"
-gUnknown_841E572:: @ 841E572
+gText_BattleWasRefused:: @ 841E572
.string "The battle was refused.{PAUSE 0x3C}$"
-gUnknown_841E58D:: @ 841E58D
+gText_RefusedBattle:: @ 841E58D
.string "Refused the battle.{PAUSE 0x3C}$"
gFameCheckerText_MainScreenUI:: @ 841E5A4
diff --git a/data/union_room.s b/data/union_room.s
deleted file mode 100644
index 9bcc4a193..000000000
--- a/data/union_room.s
+++ /dev/null
@@ -1,1571 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_8456C74:: @ 8456C74
- .word gUnknown_84571AC
- .word gUnknown_8459394
- .word gUnknown_84593A4
- .word gUnknown_84593B4
- .word gUnknown_84593C4
- .word gUnknown_84593D4
- .word gUnknown_84593E4
- .word gUnknown_84593F4
- .word gUnknown_84593DC
- .word gUnknown_8459400
- .word gUnknown_8459410
- .word gUnknown_845941C
- .word gUnknown_845942C
- .word gUnknown_8459434
- .word gUnknown_8459440
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84593E4
- .word gUnknown_84593F4
-
-gUnknown_8456CD0:: @ 8456CD0
- .byte 0x00, 0x00, 0x00, 0x1E, 0x02, 0x0F @ window template
- .2byte 0x0008
-
- @ pal table?
-gUnknown_8456CD8:: @ 8456CD8
- .2byte 0x0201, 0x0000
- .2byte 0x0202, 0x0000
- .2byte 0x0403, 0x0000
- .2byte 0x0204, 0x0000
- .2byte 0x2509, 0x0000
- .2byte 0x250A, 0x0000
- .2byte 0x350B, 0x0000
- .2byte 0x350D, 0x0000
- .2byte 0x350E, 0x0000
-
-gUnknown_8456CFC:: @ 8456CFC
- .byte 0x00, 0x01, 0x03, 0x0D, 0x0A, 0x0F @ window template
- .2byte 0x0044
-
-gUnknown_8456D04:: @ 8456D04
- .byte 0x00, 0x10, 0x03, 0x07, 0x04, 0x0F @ window template
- .2byte 0x00C6
-
-gUnknown_8456D0C:: @ 8456D0C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
-
-gUnknown_8456D34:: @ 8456D34
- .word gUnknown_8456D0C
- .word NULL
- .word sub_81164C8
- .2byte 0x0005
- .2byte 0x0005
- .byte 0x00, 0x00, 0x01, 0x00, 0x20, 0x31, 0x10, 0x42
-
-gUnknown_8456D4C:: @ 8456D4C
- .byte 0x00, 0x01, 0x03, 0x11, 0x0A, 0x0F @ window template
- .2byte 0x0044
-
-gUnknown_8456D54:: @ 8456D54
- .byte 0x00, 0x14, 0x03, 0x07, 0x04, 0x0F @ window template
- .2byte 0x00EE
-
-gUnknown_8456D5C:: @ 8456D5C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_84571AC, 8
- .word gUnknown_84571AC, 9
- .word gUnknown_84571AC, 10
- .word gUnknown_84571AC, 11
- .word gUnknown_84571AC, 12
- .word gUnknown_84571AC, 13
- .word gUnknown_84571AC, 14
- .word gUnknown_84571AC, 15
-
-gUnknown_8456DDC:: @ 8456DDC
- .word gUnknown_8456D5C
- .word ListMenuDefaultCursorMoveFunc
- .word sub_8116F94
- .2byte 0x0010
- .2byte 0x0005
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x50, 0x02
-
-gUnknown_8456DF4:: @ 8456DF4
- .byte 0x00, 0x14, 0x06, 0x08, 0x07, 0x0F @ window template?
- .2byte 0x0001
-
-gUnknown_8456DFC:: @ 8456DFC
- .word gUnknown_8459354, 0x00000208
- .word gUnknown_8459344, 0x00000241
- .word gUnknown_845934C, 0x00000245
- .word gUnknown_8459360, 0x00000040
-
-gUnknown_8456E1C:: @ 8456E1C
- .word gUnknown_8456DFC
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0004
- .2byte 0x0004
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02
-
-gUnknown_8456E34:: @ 8456E34
- .byte 0x00, 0x12, 0x08, 0x0B, 0x05, 0x0F @ window template
- .2byte 0x0001
-
-gUnknown_8456E3C:: @ 8456E3C
- .word gText_Register, 1
- .word gUnknown_8459370, 2
- .word gUnknown_8459360, 3
-
-gUnknown_8456E54:: @ 8456E54
- .word gUnknown_8456E3C
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0003
- .2byte 0x0003
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02
-
-gUnknown_8456E6C:: @ 8456E6C
- .byte 0x00, 0x14, 0x02, 0x09, 0x0B, 0x0F @ window template
- .2byte 0x0001
-
-gUnknown_8456E74:: @ 8456E74
- .word gTypeNames + 0x00, 0
- .word gTypeNames + 0x46, 10
- .word gTypeNames + 0x4D, 11
- .word gTypeNames + 0x5B, 13
- .word gTypeNames + 0x54, 12
- .word gTypeNames + 0x69, 15
- .word gTypeNames + 0x1C, 4
- .word gTypeNames + 0x23, 5
- .word gTypeNames + 0x0E, 2
- .word gTypeNames + 0x62, 14
- .word gTypeNames + 0x07, 1
- .word gTypeNames + 0x15, 3
- .word gTypeNames + 0x2A, 6
- .word gTypeNames + 0x31, 7
- .word gTypeNames + 0x70, 16
- .word gTypeNames + 0x38, 8
- .word gTypeNames + 0x77, 17
- .word gUnknown_8459360, 18
-
-gUnknown_8456F04:: @ 8456F04
- .word gUnknown_8456E74
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0012
- .2byte 0x0006
- .byte 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x01, 0x02
-
-gUnknown_8456F1C:: @ 8456F1C
- .byte 0x00, 0x01, 0x01, 0x1C, 0x02, 0x0D @ window template
- .2byte 0x0001
-
-gUnknown_8456F24:: @ 8456F24
- .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D @ window template
- .2byte 0x0039
-
-gUnknown_8456F2C:: @ 8456F2C
- .word gUnknown_84571AC, -3
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_8459368, 8
-
-gUnknown_8456F7C:: @ 8456F7C
- .word gUnknown_8456F2C
- .word ListMenuDefaultCursorMoveFunc
- .word sub_811ACA4
- .2byte 0x000A
- .2byte 0x0005
- .byte 0x00, 0x00, 0x0C, 0x00, 0xE2, 0xDF, 0x09, 0x02
-
- @ unused window template?
- .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D
- .2byte 0x0039
-
-gUnknown_8456F9C:: @ 8456F9C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_84571AC, 8
- .word gUnknown_84571AC, 9
- .word gUnknown_84571AC, 10
- .word gUnknown_84571AC, 11
- .word gUnknown_84571AC, 12
- .word gUnknown_84571AC, 13
- .word gUnknown_84571AC, 14
- .word gUnknown_84571AC, 15
-
-gUnknown_845701C:: @ 845701C
- .word gUnknown_8456F9C
- .word ListMenuDefaultCursorMoveFunc
- .word nullsub_92
- .2byte 0x0010
- .2byte 0x0004
- .byte 0x00, 0x00, 0x08, 0x01, 0x20, 0x31, 0x41, 0x02
-
-gUnknown_8457034:: @ 8457034
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- @ starts at gUnknown_082F0474 in pokeemerald, union link groups
-gUnknown_845704C:: @ 845704C
- .byte 0x01, 0xFF, 0x00, 0x00
-gUnknown_8457050:: @ 8457050
- .byte 0x02, 0xFF, 0x00, 0x00
-gUnknown_8457054:: @ 8457054
- .byte 0x03, 0xFF, 0x00, 0x00
-gUnknown_8457058:: @ 8457058
- .byte 0x04, 0xFF, 0x00, 0x00
-gUnknown_845705C:: @ 845705C
- .byte 0x09, 0xFF, 0x00, 0x00
-gUnknown_8457060:: @ 8457060
- .byte 0x0A, 0xFF, 0x00, 0x00
-gUnknown_8457064:: @ 8457064
- .byte 0x0B, 0xFF, 0x00, 0x00
-gUnknown_8457068:: @ 8457068
- .byte 0x15, 0xFF, 0x00, 0x00
-gUnknown_845706C:: @ 845706C
- .byte 0x16, 0xFF, 0x00, 0x00
-gUnknown_8457070:: @ 8457070
- .byte 0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF, 0x00, 0x00
-gUnknown_845707C:: @ 845707C
- .byte 0x0C, 0xFF, 0x00, 0x00
-gUnknown_8457080:: @ 8457080
- .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF, 0x00
-gUnknown_845708C:: @ 845708C
- .byte 0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF, 0x00, 0x00
-
-gUnknown_8457094:: @ 8457094
- .word gUnknown_845704C
- .word gUnknown_8457050
- .word gUnknown_8457054
- .word gUnknown_8457058
- .word gUnknown_845705C
- .word gUnknown_8457060
- .word gUnknown_8457064
- .word gUnknown_8457068
- .word gUnknown_845706C
- .word gUnknown_8457070
- .word gUnknown_845707C
- .word gUnknown_8457080
- .word gUnknown_845708C
-
-gUnknown_84570C8:: @ 84570C8
- .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00
-
-gUnknown_84570D8:: @ 84570D8
- .byte 0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A, 0x00, 0x00, 0x2A, 0x3A, 0x28, 0x16, 0x17, 0x18, 0x1C, 0x1D, 0x00, 0x00
-
-gUnknown_84570EC:: @ 84570EC
- .2byte 0x0004
- .2byte 0x0006
- .2byte 0x000D
- .2byte 0x0008
- .2byte 0x000A
- .2byte 0x0006
- .2byte 0x0001
- .2byte 0x0008
- .2byte 0x000D
- .2byte 0x0004
- .2byte 0x0007
- .2byte 0x0004
- .2byte 0x0001
- .2byte 0x0004
- .2byte 0x0007
- .2byte 0x0008
-
-gUnknown_845710C:: @ 845710C
- .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01
-
-gUnknown_8457116:: @ 8457116
- .byte 0x00, 0x02, 0x01, 0x04, 0x03
-
-gUnknown_845711B:: @ 845711B
- .byte 0x01, 0x03, 0x01, 0x04, 0x02
-
-gUnknown_8457120:: @ 8457120
- .byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00
-
- .align 2
-gUnknown_8457138:: @ 8457138
- abspath "rfu_union_tool.c"
-
- .align 2
-gUnknown_8457174:: @ 8457174
- .asciz "0"
-
- .align 2
-gUnknown_8457178:: @ 8457178
- .asciz "UnionObjWork != NULL"
-
-gUnknown_845718D:: @ 845718D
- .byte 0xA4, 0xFE
-
-gUnknown_845718F:: @ 845718F
- .byte 0xA5, 0xFE, 0x00, 0x00, 0x00
-
-gUnknown_8457194:: @ 8457194
- .2byte 0x01FC, 0x0000 @ BgTemplate
-
-gUnknown_8457198:: @ 8457198
- .byte 0x00, 0x02, 0x0F, 0x1A, 0x04, 0x0E @ window template
- .2byte 0x0014
-
- @ ???
- .byte -1, 0, 0, 0
- .byte 0, 0, 0, 0
-
-gUnknown_84571A8:: @ 84571A8
- .byte 0x01, 0x02, 0x03, 0x00
-
-gUnknown_84571AC:: @ 84571AC
- .string "$"
-
- .align 2
-gUnknown_84571B0:: @ 84571B0
- .string ":$"
-
- .align 2
-gUnknown_84571B4:: @ 84571B4
- .string "{EXTRA 7}$"
-
- .align 2
-gUnknown_84571B8:: @ 84571B8
- .string "Please start over from the beginning.$"
-
- .align 2
-gUnknown_84571E0:: @ 84571E0
- .string "The WIRELESS COMMUNICATION\n"
- .string "SYSTEM search has been canceled.$"
-
- .align 2
- .string "ともだちからの れんらくを\n" @ something about waiting for a friend to connect?
- .string "まっています$"
-
- .align 2
-gUnknown_8457234:: @ 8457234
- .string "{STR_VAR_1}! Awaiting\n"
- .string "communication from another player.$"
-
- .align 2
-gUnknown_8457264:: @ 8457264
- .string "{STR_VAR_1}! Awaiting link!\n"
- .string "Press START when everyone's ready.$"
-
- .align 2
-gJPText_SingleBattle::
- .string "シングルバトルを かいさいする$"
-
- .align 2
-gJPText_DoubleBattle::
- .string "ダブルバトルを かいさいする$"
-
- .align 2
-gJPText_MultiBattle::
- .string "マルチバトルを かいさいする$"
-
- .align 2
-gJPText_TradePokemon::
- .string "ポケモンこうかんを かいさいする$"
-
- .align 2
-gJPText_Chat::
- .string "チャットを かいさいする$"
-
- .align 2
-gJPText_DistWonderCard::
- .string "ふしぎなカードをくばる$"
-
- .align 2
-gJPText_DistWonderNews::
- .string "ふしぎなニュースをくばる$"
-
- .align 2
-unref_text_union_room_1::
- .string "ふしぎなできごとを かいさいする$"
-
- .align 2
-gJPText_HoldPokemonJump::
- .string "なわとびを かいさいする$"
-
- .align 2
-gJPText_HoldBerryCrush::
- .string "きのみマッシャーを かいさいする$"
-
- .align 2
-gJPText_HoldBerryPicking::
- .string "きのみどりを かいさいする$"
-
- .align 2
-gJPText_HoldSpinTrade::
- .string "ぐるぐるこうかんを かいさいする$"
-
- .align 2
-gJPText_HoldSpinShop::
- .string "ぐるぐるショップを かいさいする$"
-
- .align 2
-unref_text_ptrs_union_room_0::
- .word gJPText_SingleBattle
- .word gJPText_DoubleBattle
- .word gJPText_MultiBattle
- .word gJPText_TradePokemon
- .word gJPText_Chat
- .word gJPText_DistWonderCard
- .word gJPText_DistWonderNews
- .word gJPText_DistWonderCard
- .word gJPText_HoldPokemonJump
- .word gJPText_HoldBerryCrush
- .word gJPText_HoldBerryPicking
- .word gJPText_HoldBerryPicking
- .word gJPText_HoldSpinTrade
- .word gJPText_HoldSpinShop
-
-gText_1PlayerNeeded::
- .string "1 player\n"
- .string "needed.$"
-gText_2PlayersNeeded::
- .string "2 players\n"
- .string "needed.$"
-gText_3PlayersNeeded::
- .string "3 players\n"
- .string "needed.$"
-gText_4PlayersNeeded:: @ uhhhh this one is JP but not the others??? but its english in emerald???
- .string "あと4にん\n"
- .string "ひつよう$"
-gText_2PlayerMode::
- .string "2-PLAYER\n"
- .string "MODE$"
-gText_3PlayerMode::
- .string "3-PLAYER\n"
- .string "MODE$"
-gText_4PlayerMode::
- .string "4-PLAYER\n"
- .string "MODE$"
-gText_5PlayerMode::
- .string "5-PLAYER\n"
- .string "MODE$"
-
-gUnknown_845742C:: @ 845742C
- .word gText_1PlayerNeeded
- .word gText_2PlayerMode
- .word NULL
- .word NULL
- .word NULL
-
- .word gText_3PlayersNeeded
- .word gText_2PlayersNeeded
- .word gText_1PlayerNeeded
- .word gText_4PlayerMode
- .word NULL
-
- .word gText_1PlayerNeeded
- .word gText_2PlayerMode
- .word gText_3PlayerMode
- .word gText_4PlayerMode
- .word gText_5PlayerMode
-
- .word gText_2PlayersNeeded
- .word gText_1PlayerNeeded
- .word gText_3PlayerMode
- .word gText_4PlayerMode
- .word gText_5PlayerMode
-
- @ Huh? No 4 ptrs here from pokeemerald?
-
- .align 2
-gUnknown_845747C:: @ 845747C
- .string "{B_BUTTON}CANCEL$"
-
- .align 2
-unref_text_union_room_2::
- .string "ため\nさんかしゃ ぼしゅうちゅう です!$"
-
- .align 2
-gUnknown_84574A0:: @ 84574A0
- .string "{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?$"
-
- .align 2
-gUnknown_84574C4:: @ 84574C4
- .string "{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?$"
-
- .align 2
-gUnknown_84574EC:: @ 84574EC
- .string "{STR_VAR_2} contacted you.\nAdd to the members?$"
-
- .align 2
-gUnknown_8457514:: @ 8457514
- .string "{STR_VAR_1}!\nAre these members OK?$"
-
- .align 2
-gUnknown_8457530:: @ 8457530
- .string "Cancel {STR_VAR_1} MODE\nwith these members?$"
-
- .align 2
-gUnknown_8457554:: @ 8457554
- .string "An “OK” was sent\nto {STR_VAR_1}.$"
-
- .align 2
-gUnknown_845756C:: @ 845756C
- .string "The other TRAINER doesn't appear\nto be available now…\p$"
-
- .align 2
-gUnknown_84575A4:: @ 84575A4
- .string "You can't transmit with a TRAINER\nwho is too far away.\p$"
-
- .align 2
-gUnknown_84575DC:: @ 84575DC
- .string "The other TRAINER(S) is/are not\nready yet.\p$"
-
- .align 2
-gUnknown_8457608:: @ 8457608
- .word gUnknown_84575A4
- .word gUnknown_84575DC
-
- .align 2
-gUnknown_8457610:: @ 8457610
- .string "The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}$"
-
- .align 2
-gUnknown_8457644:: @ 8457644
- .string "There is a member who can no\nlonger remain available.\p$"
-
- .align 2
-gUnknown_845767C:: @ 845767C
- .word gUnknown_845756C
- .word gUnknown_8457644
-
- .align 2
-gUnknown_8457684:: @ 8457684
- .string "The other TRAINER appears\nunavailable…\p$"
-
- .align 2
-gUnknown_84576AC:: @ 84576AC
- .string "{STR_VAR_1} sent back an “OK”!$"
-
- .align 2
-gUnknown_84576C4:: @ 84576C4
- .string "{STR_VAR_1} OK'd your registration as\na member.$"
-
- .align 2
-gUnknown_84576EC:: @ 84576EC
- .string "{STR_VAR_1} replied, “No…”\p$"
-
- .align 2
-gUnknown_8457700:: @ 8457700
- .string "{STR_VAR_1}!\nAwaiting other members!$"
-
- .align 2
-gUnknown_845771C:: @ 845771C
- .string "Quit being a member?$"
-
- .align 2
-gUnknown_8457734:: @ 8457734
- .string "You stopped being a member.\p$"
-
- .align 2
-gUnknown_8457754:: @ 8457754
- .word NULL
- .word gUnknown_8457644
- .word gUnknown_8457684
- .word NULL
- .word NULL
- .word NULL
- .word gUnknown_84576EC
- .word NULL
- .word NULL
- .word gUnknown_8457734
-
- .align 2
-gUnknown_845777C:: @ 845777C
- .string "The WIRELESS COMMUNICATION\nSYSTEM link has been established.$"
-
- .align 2
-gUnknown_84577BC:: @ 84577BC
- .string "The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…$"
-
- .align 2
-gUnknown_84577F8:: @ 84577F8
- .string "The link with your friend has been\ndropped…$"
-
- .align 2
-gUnknown_8457824:: @ 8457824
- .string "{STR_VAR_1} replied, “No…”$"
-
- .align 2
-gUnknown_8457838:: @ 8457838
- .word NULL
- .word gUnknown_84577F8
- .word gUnknown_84577F8
- .word NULL
- .word NULL
- .word NULL
- .word gUnknown_8457824
- .word NULL
- .word NULL
- .word NULL
-
- .align 2
-gUnknown_8457860:: @ 8457860
- .string "Do you want the {STR_VAR_2}\nMODE?$"
-
- .align 2
-gUnknown_845787C:: @ 845787C
- .string "Do you want the {STR_VAR_2}\nMODE?$"
-
- .align 2
-gUnknown_8457898:: @ 8457898
- .word gUnknown_8457860
- .word gUnknown_845787C
-
- .align 2
-gUnknown_84578A0:: @ 84578A0
- .string "はなしかけています…\n" @ Communicating... please wait
- .string "しょうしょう おまちください$"
-
- .align 2
-gUnknown_84578BC:: @ 84578BC
- .string "Awaiting {STR_VAR_1}'s response about\nthe trade…$"
-
- .align 2
-gUnknown_84578E4:: @ 84578E4
- .string "Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_8457950:: @ 8457950
- .string "Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_84579BC:: @ 84579BC
- .string "Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_8457A34:: @ 8457A34
- .word gUnknown_84578E4
- .word gUnknown_8457950
- .word gUnknown_84579BC
-
- .align 2
-gUnknown_8457A40:: @ 8457A40
- .string "Hiya! Is there something that you\nwanted to do?$"
-
- .align 2
-gUnknown_8457A70:: @ 8457A70
- .string "Hello!\nWould you like to do something?$"
-
- .align 2
-gUnknown_8457A98:: @ 8457A98
- .string "{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?$"
-
- .align 2
-gUnknown_8457AD0:: @ 8457AD0
- .string "{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?$"
-
- .align 2
-gUnknown_8457B04:: @ 8457B04
- .word gUnknown_8457A40
- .word gUnknown_8457A70
- .word gUnknown_8457A98
- .word gUnknown_8457AD0
-
- .align 2
-gUnknown_8457B14:: @ 8457B14
- .string "Want to do something?$"
-
- .align 2
-gUnknown_8457B2C:: @ 8457B2C
- .string "Would you like to do something?$"
-
- .align 2
-gUnknown_8457B4C:: @ 8457B4C
- .string "{STR_VAR_1}: What would you like to\ndo now?$"
-
- .align 2
-gUnknown_8457B70:: @ 8457B70
- .string "{STR_VAR_1}‘また なにかする?$" @ Want to do anything else?
-
- .align 2
-gUnknown_8457B80:: @ 8457B80
- .word gUnknown_8457B14
- .word gUnknown_8457B2C
- .word gUnknown_8457B4C
- .word gUnknown_8457B4C
-
- .align 2
-gUnknown_8457B90:: @ 8457B90
- .string "Somebody has contacted you.{PAUSE 60}$"
-
- .align 2
-gUnknown_8457BA0:: @ 8457BA0
- .string "{STR_VAR_1} has contacted you.{PAUSE 60}$"
-
- .align 2
-gUnknown_8457BCC:: @ 8457BCC
- .word gUnknown_8457B90
- .word gUnknown_8457BA0
-
- .align 2
-gUnknown_8457BD4:: @ 8457BD4
- .string "Awaiting a response from\nthe other TRAINER…$"
-
- .align 2
-gUnknown_8457C00:: @ 8457C00
- .string "Awaiting a response from\n{STR_VAR_1}…$"
-
- .align 2
-gUnknown_8457C20:: @ 8457C20
- .word gUnknown_8457BD4
- .word gUnknown_8457C00
-
- .align 2
-gUnknown_8457C28:: @ 8457C28
- .string "あいての ていあんを まっています\n"
- .string "ビーボタンで キャンセル$"
-
- .align 2
-gUnknown_8457C48:: @ 8457C48
- .string "The other TRAINER showed\n"
- .string "you their TRAINER CARD.\p"
- .string "Would you like to show your\n"
- .string "TRAINER CARD?$"
-
- .align 2
-gUnknown_8457CA4:: @ 8457CA4
- .string "The other TRAINER challenges you\n"
- .string "to battle.\p"
- .string "Will you accept the battle\n"
- .string "challenge?$"
-
- .align 2
-gUnknown_8457CF8:: @ 8457CF8
- .string "The other TRAINER invites you\n"
- .string "to chat.\p"
- .string "Will you accept the chat\n"
- .string "invitation?$"
-
- .align 2
-gUnknown_8457D44:: @ 8457D44
- .string "There is an offer to trade your\n"
- .string "registered Lv. {DYNAMIC 0} {DYNAMIC 1}\p"
- .string "in exchange for a\n"
- .string "Lv. {DYNAMIC 2} {DYNAMIC 3}.\p"
- .string "Will you accept this trade\n"
- .string "offer?$"
-
- .align 2
-gUnknown_8457DB8:: @ 8457DB8
- .string "There is an offer to trade your\n"
- .string "registered EGG.\l"
- .string "Will you accept this trade offer?$"
-
- .align 2
-gUnknown_8457E0C:: @ 8457E0C
- .string "The chat has been dropped.\p$"
-
-gUnknown_8457E28:: @ 8457E28
- .string "You declined the offer.\p$"
-
- .align 2
-gUnknown_8457E44:: @ 8457E44
- .string "You declined the offer.\p$"
-
- .align 2
-gUnknown_8457E60:: @ 8457E60
- .string "The chat was ended.\p$"
- .align 2
-
-gUnknown_8457E78::
- .4byte gUnknown_8457C48
- .4byte gUnknown_8457CA4
- .4byte gUnknown_8457CF8
- .4byte gUnknown_8457D44
-
- .align 2
-gUnknown_8457E88::
- .string "Oh, hey! We're in a chat right now.\n"
- .string "Want to join us?$"
-
- .align 2
-gUnknown_8457EC0::
- .string "{STR_VAR_1}: Hey, {PLAYER}!\n"
- .string "We're having a chat right now.\l"
- .string "Want to join us?$"
-
- .align 2
-gUnknown_8457F00::
- .string "Oh, hi! We're having a chat now.\n"
- .string "Would you like to join us?$"
-
- .align 2
-gUnknown_8457F3C::
- .string "{STR_VAR_1}: Oh, hi, {PLAYER}!\n"
- .string "We're having a chat now.\l"
- .string "Would you like to join us?$"
-
- .align 2
-gUnknown_8457F80:: @ 8457F80
- .4byte gUnknown_8457E88
- .4byte gUnknown_8457F00
- .4byte gUnknown_8457EC0
- .4byte gUnknown_8457F3C
-
-gUnknown_8457F90:: @ 8457F90
- .string "……\n"
- .string "The TRAINER appears to be busy…\p$"
-
- .align 2
-gUnknown_8457FB4::
- .string "A battle, huh?\n"
- .string "All right, just give me some time.$"
-
- .align 2
-gUnknown_8457FE8::
- .string "You want to chat, huh?\n"
- .string "Sure, just wait a little.$"
-
- .align 2
-gUnknown_845801C::
- .string "Sure thing! As my “Greetings,”\n"
- .string "here's my TRAINER CARD.$"
-
- .align 2
-gUnknown_8458054::
- .string "A battle? Of course, but I need\n"
- .string "time to get ready.$"
-
- .align 2
-gUnknown_8458088::
- .string "Did you want to chat?\n"
- .string "Okay, but please wait a moment.$"
-
- .align 2
-gUnknown_84580C0::
- .string "As my introduction, I'll show you\n"
- .string "my TRAINER CARD.$"
-
- .align 2
-gUnknown_84580F4:: @ 84580F4
- .4byte gUnknown_8457FB4
- .4byte gUnknown_8457FE8
- .4byte 0
- .4byte gUnknown_845801C
- .4byte gUnknown_8458054
- .4byte gUnknown_8458088
- .4byte 0
- .4byte gUnknown_84580C0
-
- .align 2
- .string "チャットだね!\n" @ You want to chat, huh? Sure, just wait a little.
- .string "わかった ちょっと まってて!$"
-
- .align 2
-gUnknown_845812C::
- .string "Thanks for waiting!\n"
- .string "Let's get our battle started!{PAUSE 60}$"
-
- .align 2
-gUnknown_8458164::
- .string "All right!\n"
- .string "Let's chat!{PAUSE 60}$"
-
- .align 2
-gUnknown_8458180::
- .string "Sorry I made you wait!\n"
- .string "Let's get started!{PAUSE 60}$"
-
- .align 2
-gUnknown_84581B0::
- .string "Sorry I made you wait!\n"
- .string "Let's chat.{PAUSE 60}$"
-
- .align 2
-gUnknown_84581D8::
- .string "The trade will be started.{PAUSE 60}$"
-
- .align 2
-gUnknown_84581F8::
- .string "The battle will be started.{PAUSE 60}$"
-
- .align 2
-gUnknown_8458218::
- .string "Entering the chat…{PAUSE 60}$"
-
- .align 2
-gUnknown_8458230:: @ 8458230
- .4byte gUnknown_84581F8
- .4byte gUnknown_8458218
- .4byte gUnknown_84581D8
- .4byte gUnknown_84581F8
- .4byte gUnknown_8458218
- .4byte gUnknown_84581D8
- .4byte gUnknown_845812C
- .4byte gUnknown_8458164
- .4byte gUnknown_84581D8
- .4byte gUnknown_8458180
- .4byte gUnknown_84581B0
- .4byte gUnknown_84581D8
-
-gUnknown_8458260::
- .string "Sorry! My POKéMON don't seem to\n"
- .string "be feeling too well right now.\l"
- .string "Let me battle you another time.\p$"
-
-gUnknown_84582C0::
- .string "I'm terribly sorry, but my POKéMON\n"
- .string "aren't feeling well…\p"
- .string "Let's battle another time.\p$"
-
-gUnknown_8458314:: @ 8458314
- .4byte gUnknown_8458260
- .4byte gUnknown_84582C0
-
- .align 2
-gUnknown_845831C::
- .string "Huh? My TRAINER CARD…\n"
- .string "Where'd it go now?\l"
- .string "Sorry! I'll show you another time!\p$"
-
- .align 2
-gUnknown_845836C::
- .string "Oh? Now where did I put my\n"
- .string "TRAINER CARD?…\l"
- .string "Sorry! I'll show you later!\p$"
-
- .align 2
-gUnknown_84583B4:: @ 84583B4
- .4byte gUnknown_845831C
- .4byte gUnknown_845836C
-
- .align 2
-gUnknown_84583BC::
- .string "If you want to do something with\n"
- .string "me, just give me a shout!\p$"
- .align 2
-gUnknown_84583F8::
- .string "If you want to do something with\n"
- .string "me, don't be shy.\p$"
-
- .align 2
-gUnknown_845842C:: @ 845842C
- .4byte gUnknown_84583BC
- .4byte gUnknown_84583F8
-
-gUnknown_8458434:: @ 8458434
- .string "Whoops! Sorry, but I have to do\n"
- .string "something else.\l"
- .string "Another time, okay?\p$"
-
- .align 2
-gUnknown_845847C:: @ 845847C
- .string "If you want to battle, you need\n"
- .string "two POKéMON that are below\l"
- .string "Lv. 30.\p$"
-
-gUnknown_84584C0:: @ 84584C0
- .string "For a battle, you need two\n"
- .string "POKéMON that are below Lv. 30.\p$"
-
- .align 2
-gUnknown_84584FC::
- .string "Oh, all right.\n"
- .string "Come see me anytime, okay?\p$"
-
- .align 2
-gUnknown_8458528::
- .string "Oh…\n"
- .string "Please come by anytime.\p$"
-
- .align 2
-gUnknown_8458548:: @ 8458548
- .4byte gUnknown_84584FC
- .4byte gUnknown_8458528
-
- .align 2
-gUnknown_8458550::
- .string "Oh, sorry!\n"
- .string "I just can't right this instant.\l"
- .string "Let's chat another time.\p$"
-
- .align 2
-gUnknown_8458598::
- .string "Oh, I'm sorry.\n"
- .string "I have too much to do right now.\l"
- .string "Let's chat some other time.\p$"
-
- .align 2
-gUnknown_84585E8:: @ 84585E8
- .4byte gUnknown_8458550
- .4byte gUnknown_8458598
-
- .align 2
-gUnknown_84585F0::
- .string "Whoa!\n"
- .string "I can tell you're pretty tough!\p$"
-
- .align 2
-gUnknown_8458618::
- .string "You used that move?\n"
- .string "That's good strategy!\p$"
-
- .align 2
-gUnknown_8458644::
- .string "Way to go!\n"
- .string "That was an eye-opener!\p$"
-
- .align 2
-gUnknown_8458668::
- .string "Oh! How could you use that\n"
- .string "POKéMON in that situation?\p$"
-
- .align 2
-gUnknown_84586A0::
- .string "That POKéMON…\n"
- .string "It's been raised really well!\p$"
-
- .align 2
-gUnknown_84586D0::
- .string "That's it!\n"
- .string "This is the right move now!\p$"
-
- .align 2
-gUnknown_84586F8::
- .string "That's awesome!\n"
- .string "You can battle that way?\p$"
-
- .align 2
-gUnknown_8458724::
- .string "You have exquisite timing for\n"
- .string "switching POKéMON!\p$"
-
- .align 2
-gUnknown_8458758:: @ 8458758
- .4byte gUnknown_84585F0
- .4byte gUnknown_8458618
- .4byte gUnknown_8458644
- .4byte gUnknown_8458668
- .4byte gUnknown_84586A0
- .4byte gUnknown_84586D0
- .4byte gUnknown_84586F8
- .4byte gUnknown_8458724
-
- .align 2
-gUnknown_8458778::
- .string "Oh, I see!\n"
- .string "This is educational!\p$"
-
- .align 2
-gUnknown_845879C::
- .string "Don't say anything funny anymore!\n"
- .string "I'm sore from laughing!\p$"
-
- .align 2
-gUnknown_84587D8::
- .string "Oh?\n"
- .string "Something like that happened.\p$"
-
- .align 2
-gUnknown_84587FC::
- .string "Hmhm… What?\n"
- .string "So is this what you're saying?\p$"
-
- .align 2
-gUnknown_8458828::
- .string "Is that right?\n"
- .string "I didn't know that.\p$"
-
- .align 2
-gUnknown_845884C::
- .string "Ahaha!\n"
- .string "What is that about?\p$"
-
- .align 2
-gUnknown_8458868::
- .string "Yes, that's exactly it!\n"
- .string "That's what I meant.\p$"
-
- .align 2
-gUnknown_8458898::
- .string "In other words…\n"
- .string "Yes! That's right!\p$"
-
- .align 2
-gUnknown_84588BC:: @ 84588BC
- .4byte gUnknown_8458778
- .4byte gUnknown_845879C
- .4byte gUnknown_84587D8
- .4byte gUnknown_84587FC
- .4byte gUnknown_8458828
- .4byte gUnknown_845884C
- .4byte gUnknown_8458868
- .4byte gUnknown_8458898
-
- .align 2
-gUnknown_84588DC::
- .string "I'm just showing my TRAINER CARD\n"
- .string "as my way of greeting.\p$"
-
- .align 2
-gUnknown_8458918::
- .string "I hope I get to know you better!\p$"
-
- .align 2
-gUnknown_845893C::
- .string "We're showing each other our\n"
- .string "TRAINER CARDS to get acquainted.\p$"
-
- .align 2
-gUnknown_845897C::
- .string "Glad to meet you.\n"
- .string "Please don't be a stranger!\p$"
-
- .align 2
-gUnknown_84589AC:: @ 84589AC
- .4byte gUnknown_84588DC
- .4byte gUnknown_8458918
- .4byte gUnknown_845893C
- .4byte gUnknown_845897C
-
- .align 2
-gUnknown_84589BC::
- .string "Yeahah!\n"
- .string "I really wanted this POKéMON!\p$"
-
- .align 2
-gUnknown_84589E4::
- .string "Finally, a trade got me that\n"
- .string "POKéMON I'd wanted a long time.\p$"
-
- .align 2
-gUnknown_8458A24::
- .string "I'm trading POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458A44::
- .string "I finally got that POKéMON I\n"
- .string "wanted in a trade!\p$"
-
- .align 2
-gUnknown_8458A78:: @ 8458A78
- .4byte gUnknown_84589BC
- .4byte gUnknown_84589E4
- .4byte NULL
- .4byte NULL
- .4byte gUnknown_8458A24
- .4byte gUnknown_8458A44
- .4byte NULL
- .4byte NULL
-
-gUnknown_8458A98:: @ 8458A98
- .string "{STR_VAR_1} checked the\n"
- .string "TRADING BOARD.\p$"
-
- .align 2
-gUnknown_8458AB8:: @ 8458AB8
- .string "Welcome to the TRADING BOARD.\p"
- .string "You may register your POKéMON\n"
- .string "and offer it up for a trade.\p"
- .string "Would you like to register one of\n"
- .string "your POKéMON?$"
-
- .align 2
-gUnknown_8458B44:: @ 8458B44
- .string "This TRADING BOARD is used for\n"
- .string "offering a POKéMON for a trade.\p"
- .string "All you need to do is register a\n"
- .string "POKéMON for a trade.\p"
- .string "Another TRAINER may offer a party\n"
- .string "POKéMON in return for the trade.\p"
- .string "We hope you will register POKéMON\n"
- .string "and trade them with many, many\l"
- .string "other TRAINERS.\p"
- .string "Would you like to register one of\n"
- .string "your POKéMON?$"
-
- .align 2
- .string "こうかんけいじばん の とうろくが\n"
- .string "かんりょう しました\p"
- .string "ごりよう ありがとう\n"
- .string "ございました!\p$"
-
- .align 2
- .string "けいじばんに だれも ポケモンを\n"
- .string "とうろく していません\p\n$"
-
- .align 2
-gUnknown_8458CD4:: @ 8458CD4
- .string "Please choose the type of POKéMON\n"
- .string "that you would like in the trade.\n$"
-
- .align 2
-gUnknown_8458D1C:: @ 8458D1C
- .string "Which of your party POKéMON will\n"
- .string "you offer in trade?\p$"
-
- .align 2
-gUnknown_8458D54:: @ 8458D54
- .string "Registration has been canceled.\p$"
-
- .align 2
-gUnknown_8458D78:: @ 8458D78
- .string "Registration has been completed.\p$"
-
- .align 2
-gUnknown_8458D9C:: @ 8458D9C
- .string "The trade has been canceled.\p$"
-
- .align 2
-gUnknown_8458DBC:: @ 8458DBC
- .string "Cancel the registration of your\n"
- .string "Lv. {STR_VAR_2} {STR_VAR_1}?$"
-
- .align 2
-gUnknown_8458DE8:: @ 8458DE8
- .string "Cancel the registration of your\n"
- .string "EGG?$"
-
- .align 2
-gUnknown_8458E10:: @ 8458E10
- .string "The registration has been canceled.\p$"
-
- .align 2
- .string "こうかんを きぼうしているひとを\n"
- .string "ひょうじします$"
-
- .align 2
- .string "こうかん したい トレーナーを\n"
- .string "えらんで ください$"
-
- .align 2
-gUnknown_8458E70:: @ 8458E70
- .string "Would you like to ask {STR_VAR_1} to\n"
- .string "make a trade?$"
-
- .align 2
- .string "……\n"
- .string "あいての へんじを まっています$"
-
- .align 2
- .string "あなたが こうかんにだす\n"
- .string "ポケモンが とうろくされていません\p$"
-
- .align 2
-gUnknown_8458ED0:: @ 8458ED0
- .string "You don't have a {STR_VAR_2}-type\n"
- .string "POKéMON that {STR_VAR_1} wants.\p$"
-
- .align 2
-gUnknown_8458F04:: @ 8458F04
- .string "You don't have an EGG that\n"
- .string "{STR_VAR_1} wants.\p$"
-
- .align 2
-gUnknown_8458F2C:: @ 8458F2C
- .string "{STR_VAR_1} can't make a trade for\n"
- .string "your POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458F60:: @ 8458F60
- .string "You can't make a trade for\n"
- .string "{STR_VAR_1}'s POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458F94:: @ 8458F94
- .word gUnknown_8458F2C
- .word gUnknown_8458F60
-
-gUnknown_8458F9C:: @ 8458F9C
- .string "Your trade offer was rejected.\p$"
-
-gUnknown_8458FBC:: @ 8458FBC
- .string "EGG TRADE$"
-
- .align 2
-gUnknown_8458FC8:: @ 8458FC8
- .string "{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL$"
-
- .align 2
-gUnknown_8458FE4:: @ 8458FE4
- .string "Please choose a TRAINER.$"
-
- .align 2
-gUnknown_8459000::
- .string "Please choose a TRAINER for\n"
- .string "a SINGLE BATTLE.$"
-
- .align 2
-gUnknown_8459030::
- .string "Please choose a TRAINER for\n"
- .string "a DOUBLE BATTLE.$"
-
- .align 2
-gUnknown_8459060::
- .string "Please choose the LEADER\n"
- .string "for a MULTI BATTLE.$"
-
- .align 2
-gUnknown_8459090::
- .string "Please choose the TRAINER to\n"
- .string "trade with.$"
-
- .align 2
-gUnknown_84590BC::
- .string "Please choose the TRAINER who is\n"
- .string "sharing WONDER CARDS.$"
-
- .align 2
-gUnknown_84590F4::
- .string "Please choose the TRAINER who is\n"
- .string "sharing WONDER NEWS.$"
-
- .align 2
-gUnknown_845912C::
- .string "Jump with mini POKéMON!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_8459160::
- .string "BERRY CRUSH!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_8459188::
- .string "DODRIO BERRY-PICKING!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_84591B8:: @ 84591B8
- .4byte gUnknown_8459000
- .4byte gUnknown_8459030
- .4byte gUnknown_8459060
- .4byte gUnknown_8459090
- .4byte gUnknown_845912C
- .4byte gUnknown_8459160
- .4byte gUnknown_8459188
- .4byte gUnknown_84590BC
- .4byte gUnknown_84590F4
-
- .align 2
-gUnknown_84591DC:: @ 84591DC
- .string "Searching for a WIRELESS\n"
- .string "COMMUNICATION SYSTEM. Wait...$"
-
- .align 2
- .string "ダブルバトルでは 2ひき いじょうの\n"
- .string "ポケモンが ひつようです\p$"
-
- .align 2
-gUnknown_8459238:: @ 8459238
- .string "Awaiting {STR_VAR_1}'s response…$"
-
- .align 2
-gUnknown_8459250:: @ 8459250
- .string "{STR_VAR_1} has been asked to register\n"
- .string "you as a member. Please wait.$"
-
- .align 2
-gUnknown_845928C:: @ 845928C
- .string "Awaiting a response from the\n"
- .string "WIRELESS COMMUNICATION SYSTEM.$"
-
- .align 2
- .string "ほかの さんかしゃが そろうまで\n"
- .string "しょうしょう おまちください$"
-
- .align 2
-gUnknown_84592E8:: @ 84592E8
- .string "No CARDS appear to be shared \n"
- .string "right now.$"
-
- .align 2
-gUnknown_8459314:: @ 8459314
- .string "No NEWS appears to be shared\n"
- .string "right now.$"
-
-gUnknown_845933C:: @ 845933C
- .word gUnknown_84592E8
- .word gUnknown_8459314
-
- .align 2
-gUnknown_8459344:: @ 8459344
- .string "BATTLE$"
-
- .align 2
-gUnknown_845934C:: @ 845934C
- .string "CHAT$"
-
- .align 2
-gUnknown_8459354:: @ 8459354
- .string "GREETINGS$"
-
- .align 2
-gUnknown_8459360:: @ 8459360
- .string "EXIT$"
-
- .align 2
-gUnknown_8459368:: @ 8459368
- .string "EXIT$"
-
- .align 2
-gUnknown_8459370:: @ 8459370
- .string "INFO$"
-
- .align 2
-gUnknown_8459378:: @ 8459378
- .string "NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.$"
-
- .align 2
-gUnknown_8459394:: @ 8459394
- .string "SINGLE BATTLE$"
-
- .align 2
-gUnknown_84593A4:: @ 84593A4
- .string "DOUBLE BATTLE$"
-
- .align 2
-gUnknown_84593B4:: @ 84593B4
- .string "MULTI BATTLE$"
-
- .align 2
-gUnknown_84593C4:: @ 84593C4
- .string "POKéMON TRADES$"
-
- .align 2
-gUnknown_84593D4:: @ 84593D4
- .string "CHAT$"
-
- .align 2
-gUnknown_84593DC:: @ 84593DC
- .string "CARDS$"
-
- .align 2
-gUnknown_84593E4:: @ 84593E4
- .string "WONDER CARDS$"
-
- .align 2
-gUnknown_84593F4:: @ 84593F4
- .string "WONDER NEWS$"
-
- .align 2
-gUnknown_8459400:: @ 8459400
- .string "POKéMON JUMP$"
-
- .align 2
-gUnknown_8459410:: @ 8459410
- .string "BERRY CRUSH$"
-
- .align 2
-gUnknown_845941C:: @ 845941C
- .string "BERRY-PICKING$"
-
- .align 2
-gUnknown_845942C:: @ 845942C
- .string "SEARCH$"
-
- .align 2
-gUnknown_8459434:: @ 8459434
- .string "ぐるぐるこうかん$"
-
- .align 2
-gUnknown_8459440:: @ 8459440
- .string "アイテムトレード$"
-
- .align 2
-gUnknown_845944C:: @ 845944C
- .string "It's a NORMAL CARD.$"
-
- .align 2
-gUnknown_8459460:: @ 459460
- .string "It's a BRONZE CARD!$"
-
- .align 2
-gUnknown_8459474:: @ 8459474
- .string "It's a COPPER CARD!$"
-
- .align 2
-gUnknown_8459488:: @ 8459488
- .string "It's a SILVER CARD!$"
-
- .align 2
-gUnknown_845949C:: @ 845949C
- .string "It's a GOLD CARD!$"
-
- .align 2
-gUnknown_84594B0:: @ 84594B0
- .word gUnknown_845944C
- .word gUnknown_8459460
- .word gUnknown_8459474
- .word gUnknown_8459488
- .word gUnknown_845949C
-
- .align 2
-gUnknown_84594C4:: @ 84594C4
- .string "This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p$"
-
- .align 2
-gUnknown_8459504:: @ 8459504
- .string "BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p$"
-
- .align 2
-gUnknown_8459544:: @ 8459544
- .string "{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}$"
-
- .align 2
-gUnknown_8459564:: @ 8459564
- .string "{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}$"
-
- .align 2
-gUnknown_8459580:: @ 8459580
- .word gUnknown_8459544
- .word gUnknown_8459564
-
- .align 2
-gUnknown_8459588:: @ 8459588
- .string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$"
-
- @ why is this data here of all places?
-
- .align 2
-gUnknown_84595B0::
- .string "Canceled reading the Card.$"
-
- .align 2
-gUnknown_84595CC::
- .4byte 0x02, 0x15 @ RECEIVE ID(0x15)
- .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTER SOMETHING
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x0e @ RETURN 0x0e
-
-gMEventSrvScript_OtherTrainerCanceled:: @ 84595EC @ referenced in mevent/script_common.inc
- .4byte 0x12, 0x20, gUnknown_84595CC @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x14, 0x1b, gUnknown_84595B0 @ SEND_STR
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x09, NULL @ RETURN (other trainer canceled)
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/constants/event_object_movement.h b/include/constants/event_object_movement.h
index 6a4405b65..bf75a47cc 100644
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -1,6 +1,7 @@
#ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
#define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
+// FIXME: Different in FRLG
#define MOVEMENT_TYPE_NONE 0x0
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
#define MOVEMENT_TYPE_WANDER_AROUND 0x2
@@ -239,8 +240,10 @@
#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
#define MOVEMENT_ACTION_FIGURE_8 0x9B
-#define MOVEMENT_ACTION_FLY_UP 0x9C
-#define MOVEMENT_ACTION_FLY_DOWN 0x9D
+
+// These two are verified correct in FRLG
+#define MOVEMENT_ACTION_FLY_UP 0xA4
+#define MOVEMENT_ACTION_FLY_DOWN 0xA5
#define MOVEMENT_ACTION_STEP_END 0xFE
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index dfbba41d9..a8009f1ff 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -1,6 +1,97 @@
#ifndef GUARD_CONSTANTS_POKEMON_H
#define GUARD_CONSTANTS_POKEMON_H
+// For (Set|Get)(Box)?MonData
+#define MON_DATA_PERSONALITY 0
+#define MON_DATA_OT_ID 1
+#define MON_DATA_NICKNAME 2
+#define MON_DATA_LANGUAGE 3
+#define MON_DATA_SANITY_IS_BAD_EGG 4
+#define MON_DATA_SANITY_HAS_SPECIES 5
+#define MON_DATA_SANITY_IS_EGG 6
+#define MON_DATA_OT_NAME 7
+#define MON_DATA_MARKINGS 8
+#define MON_DATA_CHECKSUM 9
+#define MON_DATA_ENCRYPT_SEPARATOR 10
+#define MON_DATA_SPECIES 11
+#define MON_DATA_HELD_ITEM 12
+#define MON_DATA_MOVE1 13
+#define MON_DATA_MOVE2 14
+#define MON_DATA_MOVE3 15
+#define MON_DATA_MOVE4 16
+#define MON_DATA_PP1 17
+#define MON_DATA_PP2 18
+#define MON_DATA_PP3 19
+#define MON_DATA_PP4 20
+#define MON_DATA_PP_BONUSES 21
+#define MON_DATA_COOL 22
+#define MON_DATA_BEAUTY 23
+#define MON_DATA_CUTE 24
+#define MON_DATA_EXP 25
+#define MON_DATA_HP_EV 26
+#define MON_DATA_ATK_EV 27
+#define MON_DATA_DEF_EV 28
+#define MON_DATA_SPEED_EV 29
+#define MON_DATA_SPATK_EV 30
+#define MON_DATA_SPDEF_EV 31
+#define MON_DATA_FRIENDSHIP 32
+#define MON_DATA_SMART 33
+#define MON_DATA_POKERUS 34
+#define MON_DATA_MET_LOCATION 35
+#define MON_DATA_MET_LEVEL 36
+#define MON_DATA_MET_GAME 37
+#define MON_DATA_POKEBALL 38
+#define MON_DATA_HP_IV 39
+#define MON_DATA_ATK_IV 40
+#define MON_DATA_DEF_IV 41
+#define MON_DATA_SPEED_IV 42
+#define MON_DATA_SPATK_IV 43
+#define MON_DATA_SPDEF_IV 44
+#define MON_DATA_IS_EGG 45
+#define MON_DATA_ABILITY_NUM 46
+#define MON_DATA_TOUGH 47
+#define MON_DATA_SHEEN 48
+#define MON_DATA_OT_GENDER 49
+#define MON_DATA_COOL_RIBBON 50
+#define MON_DATA_BEAUTY_RIBBON 51
+#define MON_DATA_CUTE_RIBBON 52
+#define MON_DATA_SMART_RIBBON 53
+#define MON_DATA_TOUGH_RIBBON 54
+#define MON_DATA_STATUS 55
+#define MON_DATA_LEVEL 56
+#define MON_DATA_HP 57
+#define MON_DATA_MAX_HP 58
+#define MON_DATA_ATK 59
+#define MON_DATA_DEF 60
+#define MON_DATA_SPEED 61
+#define MON_DATA_SPATK 62
+#define MON_DATA_SPDEF 63
+#define MON_DATA_MAIL 64
+#define MON_DATA_SPECIES2 65
+#define MON_DATA_IVS 66
+#define MON_DATA_CHAMPION_RIBBON 67
+#define MON_DATA_WINNING_RIBBON 68
+#define MON_DATA_VICTORY_RIBBON 69
+#define MON_DATA_ARTIST_RIBBON 70
+#define MON_DATA_EFFORT_RIBBON 71
+#define MON_DATA_GIFT_RIBBON_1 72
+#define MON_DATA_GIFT_RIBBON_2 73
+#define MON_DATA_GIFT_RIBBON_3 74
+#define MON_DATA_GIFT_RIBBON_4 75
+#define MON_DATA_GIFT_RIBBON_5 76
+#define MON_DATA_GIFT_RIBBON_6 77
+#define MON_DATA_GIFT_RIBBON_7 78
+#define MON_DATA_FATEFUL_ENCOUNTER 79
+#define MON_DATA_OBEDIENCE 80
+#define MON_DATA_KNOWN_MOVES 81
+#define MON_DATA_RIBBON_COUNT 82
+#define MON_DATA_RIBBONS 83
+#define MON_DATA_ATK2 84
+#define MON_DATA_DEF2 85
+#define MON_DATA_SPEED2 86
+#define MON_DATA_SPATK2 87
+#define MON_DATA_SPDEF2 88
+
// Pokemon types
#define TYPE_NORMAL 0x00
#define TYPE_FIGHTING 0x01
@@ -93,4 +184,33 @@
#define PLAYER_HAS_ONE_MON 0x1
#define PLAYER_HAS_ONE_USABLE_MON 0x2
+#define MAX_LEVEL 100
+
+#define OT_ID_RANDOM_NO_SHINY 2
+#define OT_ID_PRESET 1
+#define OT_ID_PLAYER_ID 0
+
+#define MON_GIVEN_TO_PARTY 0x0
+#define MON_GIVEN_TO_PC 0x1
+#define MON_CANT_GIVE 0x2
+
+#define MON_MALE 0x00
+#define MON_FEMALE 0xFE
+#define MON_GENDERLESS 0xFF
+
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
+#define PARTY_SIZE 6
+#define MAX_TOTAL_EVS 510
+#define UNOWN_FORM_COUNT 28
+#define MAX_MON_LEVEL 100
+
#endif // GUARD_CONSTANTS_POKEMON_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/event_object_80688E4.h b/include/event_object_80688E4.h
index cee8ff707..36040e0a5 100644
--- a/include/event_object_80688E4.h
+++ b/include/event_object_80688E4.h
@@ -6,5 +6,10 @@
void FreezeObjectEvents(void);
void FreezeObjectEvent(struct ObjectEvent *);
void FreezeObjectEventsExceptOne(u8 objEventId);
+void sub_8069124(u8 a0, bool8 a1);
+u32 sub_806916C(u8 a0);
+void sub_80691A4(u8 a0, u8 a1);
+void sub_8069094(u8 a0, u8 a1);
+bool32 sub_8069294(u8 a0);
#endif // GUARD_EVENT_OBJECT_80688E4_H
diff --git a/include/event_object_8097404.h b/include/event_object_8097404.h
index 77781943e..23fce9576 100644
--- a/include/event_object_8097404.h
+++ b/include/event_object_8097404.h
@@ -14,7 +14,7 @@ extern void *gUnknown_020375B8;
// Exported ROM declarations
void sub_8097AC8(struct Sprite *);
-void npc_sync_anim_pause_bits(struct ObjectEvent *);
+void UnfreezeObjectEvent(struct ObjectEvent *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
u8 sub_8097F78(struct ObjectEvent *);
bool8 obj_npc_ministep(struct Sprite *sprite);
diff --git a/include/event_object_lock.h b/include/event_object_lock.h
index c5c32857b..5c65585b5 100644
--- a/include/event_object_lock.h
+++ b/include/event_object_lock.h
@@ -11,5 +11,6 @@ void sub_8098630(void);
bool8 sub_8098734(void);
void sub_80696C0(void);
bool8 walkrun_is_standing_still(void);
+void sub_80696F0(void);
#endif // GUARD_EVENT_OBJECT_LOCK_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index b81a61664..f2e7bd325 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -47,7 +47,7 @@ void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);
void SpawnObjectEventsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
-u8 show_sprite(u8, u8, u8);
+u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
@@ -82,7 +82,7 @@ bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
-void ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
+bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
void npc_coords_shift_still(struct ObjectEvent *);
void sub_805FE7C(struct ObjectEvent *, u8);
void SetTrainerMovementType(struct ObjectEvent *, u8);
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_fadetransition.h b/include/field_fadetransition.h
index 22849a37d..d27d0e54a 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -17,6 +17,8 @@ void FieldCallback_ReturnToEventScript2(void);
void sub_807DC00(void);
void FadeTransition_FadeInOnReturnToStartMenu(void);
+void sub_807DCE4(void);
+
bool32 sub_807E418(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index ec1a077be..a69ec6155 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -35,5 +35,6 @@ bool32 sub_805DAD0(void);
bool32 sub_805DC24(void);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerSurfingNorth(void);
+void player_get_pos_including_state_based_drift(s16 *x, s16 *y);
#endif //GUARD_FIELD_PLAYER_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/fieldmap.h b/include/fieldmap.h
index 1560a0841..91a45d8c5 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -31,5 +31,6 @@ void sub_8059948(u8 a0, u8 a1);
void save_serialize_map(void);
u32 sub_8058F1C(u32 original, u8 bit);
u32 sub_8058F48(s16 x, s16 y, u8 z);
+void sub_8059024(s32 x, s32 y, bool32 arg2);
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4402d5042..01cd992ec 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -275,9 +275,9 @@ enum
struct PlayerAvatar /* 0x202E858 */
{
/*0x00*/ u8 flags;
- /*0x01*/ u8 bike;
- /*0x02*/ u8 running2;
- /*0x03*/ u8 running1;
+ /*0x01*/ u8 unk1; // used to be bike, but it's not that in Emerald and probably isn't here either. maybe transition flags?
+ /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving.
+ /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning.
/*0x04*/ u8 spriteId;
/*0x05*/ u8 objectEventId;
/*0x06*/ u8 unk6;
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 bde20c555..790429870 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -233,9 +233,9 @@ void MG_DrawCheckerboardPattern(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
bool8 IsLinkRfuTaskFinished(void);
void DestroyWirelessStatusIndicatorSprite(void);
-void MEvent_CreateTask_CardOrNewsWithFriend(u8);
-void MEvent_CreateTask_CardOrNewsOverWireless(u8);
-void MEvent_CreateTask_Leader(u8);
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
+void MEvent_CreateTask_Leader(u32 arg0);
void sub_80F9E2C(void * data);
u8 sub_8116DE0(void);
void sub_80FBB4C(void);
@@ -288,13 +288,43 @@ bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);
void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
u8 sub_80FEA34(u8 a0, u16 a1);
void sub_80FDA30(u32 a0);
-void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
+void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3);
void LinkRfu_syncVBlank_(void);
s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));
void sub_80FEB3C(void);
void sub_80FAFE0(u8 a0);
bool32 sub_80FA44C(u32 a0);
bool8 sub_80FC1B0(void);
+bool8 sub_80F8F40(void);
+void sub_80F8F5C(void);
+bool32 sub_80FA5D4(void);
+bool32 sub_80FC1CC(void);
+bool32 sub_80F8F7C(bool32 a0);
+bool32 sub_80FA634(u16 a0, const u8 *a1);
+void sub_80FA670(u8 a0, u16 a1, const u8 *a2);
+u32 sub_80FA6FC(u16 a0, const u8 *a1);
+void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2);
+void sub_80FBB8C(u32 a0);
+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);
+void ClearAndInitHostRFUtgtGname(void);
+void sub_80F8FA0(void);
+void sub_80FAFA0(u32 type, u32 species, u32 level);
+bool32 sub_80FBB0C(void);
+void sub_80FBC00(void);
+void sub_80FBD6C(u32 a0);
+void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
+bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
+bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
+bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/mevent.h b/include/mevent.h
index 81caeb42f..85782f20a 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/mevent_server.h b/include/mevent_server.h
index b691e9e1f..1e9ef7bef 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -86,6 +86,7 @@ struct mevent_server_cmd
#define SRV_SEND_NEWS {.instr = 14}
#define SRV_BUFFER_SEND {.instr = 15}
#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
+#define SRV_SENDSTR(x, y) {.instr = 20, .flag = x, .parameter = (void *)y}
#define SRV_BUFFER_CARD {.instr = 26}
#define SRV_BUFFER_NEWS {.instr = 27}
#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
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/party_menu.h b/include/party_menu.h
index cc8889137..a1b85e059 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -68,7 +68,7 @@ void CB2_ChooseMonToGiveItem(void);
void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 a1);
void ClearSelectedPartyOrder(void);
-void sub_81277F4(u8 menuType, MainCallback callback);
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInTutorialBattle(u8 partyAction);
diff --git a/include/pokemon.h b/include/pokemon.h
index ae909018c..be0a35877 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -3,167 +3,7 @@
#include "global.h"
#include "sprite.h"
-
-#define MON_DATA_PERSONALITY 0
-#define MON_DATA_OT_ID 1
-#define MON_DATA_NICKNAME 2
-#define MON_DATA_LANGUAGE 3
-#define MON_DATA_SANITY_IS_BAD_EGG 4
-#define MON_DATA_SANITY_HAS_SPECIES 5
-#define MON_DATA_SANITY_IS_EGG 6
-#define MON_DATA_OT_NAME 7
-#define MON_DATA_MARKINGS 8
-#define MON_DATA_CHECKSUM 9
-#define MON_DATA_ENCRYPT_SEPARATOR 10
-#define MON_DATA_SPECIES 11
-#define MON_DATA_HELD_ITEM 12
-#define MON_DATA_MOVE1 13
-#define MON_DATA_MOVE2 14
-#define MON_DATA_MOVE3 15
-#define MON_DATA_MOVE4 16
-#define MON_DATA_PP1 17
-#define MON_DATA_PP2 18
-#define MON_DATA_PP3 19
-#define MON_DATA_PP4 20
-#define MON_DATA_PP_BONUSES 21
-#define MON_DATA_COOL 22
-#define MON_DATA_BEAUTY 23
-#define MON_DATA_CUTE 24
-#define MON_DATA_EXP 25
-#define MON_DATA_HP_EV 26
-#define MON_DATA_ATK_EV 27
-#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPEED_EV 29
-#define MON_DATA_SPATK_EV 30
-#define MON_DATA_SPDEF_EV 31
-#define MON_DATA_FRIENDSHIP 32
-#define MON_DATA_SMART 33
-#define MON_DATA_POKERUS 34
-#define MON_DATA_MET_LOCATION 35
-#define MON_DATA_MET_LEVEL 36
-#define MON_DATA_MET_GAME 37
-#define MON_DATA_POKEBALL 38
-#define MON_DATA_HP_IV 39
-#define MON_DATA_ATK_IV 40
-#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPEED_IV 42
-#define MON_DATA_SPATK_IV 43
-#define MON_DATA_SPDEF_IV 44
-#define MON_DATA_IS_EGG 45
-#define MON_DATA_ABILITY_NUM 46
-#define MON_DATA_TOUGH 47
-#define MON_DATA_SHEEN 48
-#define MON_DATA_OT_GENDER 49
-#define MON_DATA_COOL_RIBBON 50
-#define MON_DATA_BEAUTY_RIBBON 51
-#define MON_DATA_CUTE_RIBBON 52
-#define MON_DATA_SMART_RIBBON 53
-#define MON_DATA_TOUGH_RIBBON 54
-#define MON_DATA_STATUS 55
-#define MON_DATA_LEVEL 56
-#define MON_DATA_HP 57
-#define MON_DATA_MAX_HP 58
-#define MON_DATA_ATK 59
-#define MON_DATA_DEF 60
-#define MON_DATA_SPEED 61
-#define MON_DATA_SPATK 62
-#define MON_DATA_SPDEF 63
-#define MON_DATA_MAIL 64
-#define MON_DATA_SPECIES2 65
-#define MON_DATA_IVS 66
-#define MON_DATA_CHAMPION_RIBBON 67
-#define MON_DATA_WINNING_RIBBON 68
-#define MON_DATA_VICTORY_RIBBON 69
-#define MON_DATA_ARTIST_RIBBON 70
-#define MON_DATA_EFFORT_RIBBON 71
-#define MON_DATA_GIFT_RIBBON_1 72
-#define MON_DATA_GIFT_RIBBON_2 73
-#define MON_DATA_GIFT_RIBBON_3 74
-#define MON_DATA_GIFT_RIBBON_4 75
-#define MON_DATA_GIFT_RIBBON_5 76
-#define MON_DATA_GIFT_RIBBON_6 77
-#define MON_DATA_GIFT_RIBBON_7 78
-#define MON_DATA_FATEFUL_ENCOUNTER 79
-#define MON_DATA_OBEDIENCE 80
-#define MON_DATA_KNOWN_MOVES 81
-#define MON_DATA_RIBBON_COUNT 82
-#define MON_DATA_RIBBONS 83
-#define MON_DATA_ATK2 84
-#define MON_DATA_DEF2 85
-#define MON_DATA_SPEED2 86
-#define MON_DATA_SPATK2 87
-#define MON_DATA_SPDEF2 88
-
-#define MAX_LEVEL 100
-
-#define OT_ID_RANDOM_NO_SHINY 2
-#define OT_ID_PRESET 1
-#define OT_ID_PLAYER_ID 0
-
-#define MON_GIVEN_TO_PARTY 0x0
-#define MON_GIVEN_TO_PC 0x1
-#define MON_CANT_GIVE 0x2
-
-#define MON_MALE 0x00
-#define MON_FEMALE 0xFE
-#define MON_GENDERLESS 0xFF
-
-#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
-#define FRIENDSHIP_EVENT_VITAMIN 0x1
-#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
-#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
-#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
-#define FRIENDSHIP_EVENT_WALKING 0x5
-#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
-#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
-#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
-
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-
-#define NUMBER_OF_MON_TYPES 0x12
-
-#define PARTY_SIZE 6
-#define MAX_TOTAL_EVS 510
-#define NUM_STATS 6
-#define UNOWN_FORM_COUNT 28
-#define MAX_MON_LEVEL 100
-
-enum
-{
- EGG_GROUP_NONE,
- EGG_GROUP_MONSTER,
- EGG_GROUP_WATER_1,
- EGG_GROUP_BUG,
- EGG_GROUP_FLYING,
- EGG_GROUP_FIELD,
- EGG_GROUP_FAIRY,
- EGG_GROUP_GRASS,
- EGG_GROUP_HUMAN_LIKE,
- EGG_GROUP_WATER_3,
- EGG_GROUP_MINERAL,
- EGG_GROUP_AMORPHOUS,
- EGG_GROUP_WATER_2,
- EGG_GROUP_DITTO,
- EGG_GROUP_DRAGON,
- EGG_GROUP_UNDISCOVERED
-};
+#include "constants/pokemon.h"
struct PokemonSubstruct0
{
@@ -357,28 +197,6 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
-enum
-{
- STAT_STAGE_HP, // 0
- STAT_STAGE_ATK, // 1
- STAT_STAGE_DEF, // 2
- STAT_STAGE_SPEED, // 3
- STAT_STAGE_SPATK, // 4
- STAT_STAGE_SPDEF, // 5
- STAT_STAGE_ACC, // 6
- STAT_STAGE_EVASION, // 7
-};
-
-enum
-{
- STAT_HP, // 0
- STAT_ATK, // 1
- STAT_DEF, // 2
- STAT_SPD, // 3
- STAT_SPATK, // 4
- STAT_SPDEF, // 5
-};
-
struct BaseStats
{
/* 0x00 */ u8 baseHP;
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/rfu_union_tool.h b/include/rfu_union_tool.h
new file mode 100644
index 000000000..b8b5cd664
--- /dev/null
+++ b/include/rfu_union_tool.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
+#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
+
+#include "union_room.h"
+
+void sub_811C1C8(void);
+void sub_811BAAC(u8 *spriteIds, s32 arg1);
+void sub_811BB40(u8 *spriteIds);
+void sub_811BB68(void);
+void sub_811BECC(struct UnkStruct_URoom *arg0);
+void sub_811BEDC(struct UnkStruct_URoom *arg0);
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
+u8 ZeroUnionObjWork(struct UnionObj * ptr);
+void sub_811BA78(void);
+
+#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_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/strings.h b/include/strings.h
index 7e8a4fbb4..a57493a9b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1056,4 +1056,9 @@ extern const u8 gText_DepositHowManyStrVars1[];
extern const u8 gText_DepositedStrVar2StrVar1s[];
extern const u8 gText_NoRoomToStoreItems[];
+// union_room_battle
+extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
+extern const u8 gText_RefusedBattle[];
+extern const u8 gText_BattleWasRefused[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/union_room.h b/include/union_room.h
index d57683a8a..3cb8eb84a 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -2,11 +2,11 @@
#define GUARD_UNION_ROOM_H
#include "global.h"
-#include "librfu.h"
+#include "link_rfu.h"
struct UnkStruct_Shared
{
- struct GFtgtGname field_0;
+ struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];
};
@@ -28,26 +28,27 @@ struct UnkStruct_x20
u8 field_1F;
};
+// These arrays are dynamically allocated but must be
+// represented as structs to match.
+// Don't ask me why.
+
+// FIXME: Find a way around this.
+
struct UnkStruct_Main0
{
- struct UnkStruct_x20 arr[8];
+ struct UnkStruct_x20 arr[0];
};
struct UnkStruct_Main4
{
- struct UnkStruct_x1C arr[5];
-};
-
-struct UnkStruct_Main8
-{
- struct UnkStruct_x20 arr[5];
+ struct UnkStruct_x1C arr[0];
};
struct UnkStruct_Leader
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main8 *field_8;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
+ struct UnkStruct_Main0 * field_8;
u8 state;
u8 textState;
u8 field_E;
@@ -67,8 +68,8 @@ struct UnkStruct_Leader
struct UnkStruct_Group
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
u8 state;
u8 textState;
u8 field_A;
@@ -85,56 +86,56 @@ struct UnkStruct_Group
u8 field_15;
};
-struct UnkStruct_8019BA8
+struct UnionObj
{
- u8 field_0;
- u8 field_1;
- s8 field_2;
- u8 field_3;
+ u8 state;
+ u8 gfxId;
+ s8 animState;
+ u8 schedAnim;
};
struct UnkStruct_URoom
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main0 *field_8;
- struct UnkStruct_Main4 *field_C;
- u16 field_10;
- u16 field_12;
- u8 state;
- u8 stateAfterPrint;
- u8 textState;
- u8 field_17;
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 spriteIds[40];
- u8 field_49;
- u8 field_4A;
- u16 field_4C[6];
- u8 field_58[0x98 - 0x58];
- u16 field_98;
- u16 field_9A[3];
- struct UnkStruct_8019BA8 field_A0[8];
- u8 field_C0[12][15];
- u8 field_174[48];
- u8 field_1A4[200];
+ /* 0x000 */ struct UnkStruct_Main0 * field_0;
+ /* 0x004 */ struct UnkStruct_Main4 * field_4;
+ /* 0x008 */ struct UnkStruct_Main0 * field_8;
+ /* 0x00C */ struct UnkStruct_Main4 * field_C;
+ /* 0x010 */ u16 field_10;
+ /* 0x012 */ u16 field_12;
+ /* 0x014 */ u8 state;
+ /* 0x015 */ u8 stateAfterPrint;
+ /* 0x016 */ u8 textState;
+ /* 0x017 */ u8 field_17;
+ /* 0x018 */ u8 field_18;
+ /* 0x019 */ u8 field_19;
+ /* 0x01A */ u8 field_1A;
+ /* 0x01B */ u8 field_1B;
+ /* 0x01C */ u8 field_1C;
+ /* 0x01D */ u8 field_1D;
+ /* 0x01E */ u8 field_1E;
+ /* 0x01F */ u8 field_1F;
+ /* 0x020 */ u8 field_20;
+ /* 0x021 */ u8 spriteIds[40];
+ /* 0x049 */ u8 field_49;
+ /* 0x04A */ u8 field_4A;
+ /* 0x04C */ u16 field_4C[6];
+ /* 0x058 */ u8 field_58[4][11];
+ /* 0x084 */ u16 field_98;
+ /* 0x086 */ u16 field_9A[3];
+ /* 0x08C */ struct UnionObj unionObjs[8];
+ /* 0x0AC */ u8 trainerCardStrbufs[12][15];
+ /* 0x160 */ u8 field_174[48];
+ /* 0x190 */ u8 field_1A4[200];
};
union UnkUnion_Main
{
- struct UnkStruct_Leader *leader;
- struct UnkStruct_Group *group;
- struct UnkStruct_URoom *uRoom;
+ struct UnkStruct_Leader * leader;
+ struct UnkStruct_Group * group;
+ struct UnkStruct_URoom * uRoom;
};
-struct TradeUnkStruct
+struct UnionRoomTrade
{
u16 field_0;
u16 type;
@@ -153,4 +154,6 @@ extern struct GFtgtGnameSub gUnknown_203B064;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
+void sub_81173C0(u16 battleFlags);
+
#endif //GUARD_UNION_ROOM_H
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_message.h b/include/union_room_message.h
new file mode 100644
index 000000000..b7de673ba
--- /dev/null
+++ b/include/union_room_message.h
@@ -0,0 +1,114 @@
+#ifndef GUARD_UNION_ROOM_MESSAGE_H
+#define GUARD_UNION_ROOM_MESSAGE_H
+
+#include "global.h"
+
+extern const u8 gUnknown_84571AC[];
+extern const u8 gUnknown_84571B0[];
+extern const u8 gUnknown_84571B4[];
+extern const u8 gUnknown_84571B8[];
+extern const u8 gUnknown_84571E0[];
+extern const u8 gUnknown_8457234[];
+extern const u8 gUnknown_8457264[];
+extern const u8 *const gUnknown_845742C[][5];
+extern const u8 gUnknown_845747C[];
+extern const u8 gUnknown_84574A0[];
+extern const u8 gUnknown_84574C4[];
+extern const u8 gUnknown_84574EC[];
+extern const u8 gUnknown_8457514[];
+extern const u8 gUnknown_8457530[];
+extern const u8 gUnknown_8457554[];
+extern const u8 *const gUnknown_8457608[];
+extern const u8 gUnknown_8457610[];
+extern const u8 *const gUnknown_845767C[];
+extern const u8 gUnknown_84576AC[];
+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_845777C[];
+extern const u8 gUnknown_84577BC[];
+extern const u8 gUnknown_84577F8[];
+extern const u8 *const gUnknown_8457838[];
+extern const u8 gUnknown_84578BC[];
+extern const u8 *const gUnknown_8457A34[];
+extern const u8 *const gUnknown_8457B04[][2];
+extern const u8 *const gUnknown_8457BCC[];
+extern const u8 *const gUnknown_8457C20[];
+extern const u8 gUnknown_8457C48[];
+extern const u8 gUnknown_8457CA4[];
+extern const u8 gUnknown_8457CF8[];
+extern const u8 gUnknown_8457D44[];
+extern const u8 gUnknown_8457DB8[];
+extern const u8 gUnknown_8457E0C[];
+extern const u8 gUnknown_8457E28[];
+extern const u8 gUnknown_8457E44[];
+extern const u8 gUnknown_8457E60[];
+extern const u8 *const gUnknown_8457F80[][2];
+extern const u8 gUnknown_8457F90[];
+extern const u8 *const gUnknown_84580F4[][4];
+extern const u8 *const gUnknown_8458230[][2][3];
+extern const u8 *const gUnknown_8458314[];
+extern const u8 *const gUnknown_84583B4[];
+extern const u8 *const gUnknown_845842C[];
+extern const u8 gUnknown_8458434[];
+extern const u8 gUnknown_845847C[];
+extern const u8 gUnknown_84584C0[];
+extern const u8 *const gUnknown_8458548[];
+extern const u8 *const gUnknown_84585E8[];
+extern const u8 *const gUnknown_8458758[2][4];
+extern const u8 *const gUnknown_84588BC[2][4];
+extern const u8 *const gUnknown_84589AC[2][2];
+extern const u8 *const gUnknown_8458A78[2][4];
+extern const u8 gUnknown_8458A98[];
+extern const u8 gUnknown_8458AB8[];
+extern const u8 gUnknown_8458B44[];
+extern const u8 gUnknown_8458CD4[];
+extern const u8 gUnknown_8458D1C[];
+extern const u8 gUnknown_8458D54[];
+extern const u8 gUnknown_8458D78[];
+extern const u8 gUnknown_8458D9C[];
+extern const u8 gUnknown_8458DBC[];
+extern const u8 gUnknown_8458DE8[];
+extern const u8 gUnknown_8458E10[];
+extern const u8 gUnknown_8458E70[];
+extern const u8 gUnknown_8458ED0[];
+extern const u8 gUnknown_8458F04[];
+extern const u8 gUnknown_8458F9C[];
+extern const u8 gUnknown_8458FBC[];
+extern const u8 gUnknown_8458FC8[];
+extern const u8 gUnknown_8458FE4[];
+extern const u8 gUnknown_84591DC[];
+extern const u8 *const gUnknown_84591B8[];
+extern const u8 gUnknown_8459238[];
+extern const u8 gUnknown_8459250[];
+extern const u8 gUnknown_845928C[];
+extern const u8 *const gUnknown_845933C[];
+extern const u8 gUnknown_8459344[];
+extern const u8 gUnknown_845934C[];
+extern const u8 gUnknown_8459354[];
+extern const u8 gUnknown_8459360[];
+extern const u8 gUnknown_8459368[];
+extern const u8 gUnknown_8459370[];
+extern const u8 gUnknown_8459378[];
+extern const u8 gUnknown_8459394[];
+extern const u8 gUnknown_84593A4[];
+extern const u8 gUnknown_84593B4[];
+extern const u8 gUnknown_84593C4[];
+extern const u8 gUnknown_84593D4[];
+extern const u8 gUnknown_84593E4[];
+extern const u8 gUnknown_84593F4[];
+extern const u8 gUnknown_84593DC[];
+extern const u8 gUnknown_8459400[];
+extern const u8 gUnknown_8459410[];
+extern const u8 gUnknown_845941C[];
+extern const u8 gUnknown_845942C[];
+extern const u8 gUnknown_8459434[];
+extern const u8 gUnknown_8459440[];
+extern const u8 *const gUnknown_84594B0[];
+extern const u8 gUnknown_84594C4[];
+extern const u8 gUnknown_8459504[];
+extern const u8 *const gUnknown_8459580[];
+extern const u8 gUnknown_8459588[];
+
+#endif //GUARD_UNION_ROOM_MESSAGE_H
diff --git a/ld_script.txt b/ld_script.txt
index 016793dc9..f0792ad9d 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -241,8 +241,9 @@ SECTIONS {
src/mailbox_pc.o(.text);
src/menu.o(.text);
src/quest_log.o(.text);
- asm/union_room.o(.text);
- asm/union_room_player_avatar.o(.text);
+ src/union_room.o(.text);
+ src/rfu_union_tool.o(.text);
+ src/union_room_battle.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
asm/union_room_chat.o(.text);
@@ -527,7 +528,10 @@ SECTIONS {
data/decorations.o(.rodata);
src/menu.o(.rodata);
src/quest_log.o(.rodata);
- data/union_room.o(.rodata);
+ src/union_room.o(.rodata);
+ src/rfu_union_tool.o(.rodata);
+ src/union_room_battle.o(.rodata);
+ src/union_room_message.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
data/union_room_chat.o(.rodata);
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/event_object_lock.c b/src/event_object_lock.c
index ea4fa00b9..e91642aa2 100644
--- a/src/event_object_lock.c
+++ b/src/event_object_lock.c
@@ -9,7 +9,7 @@
bool8 walkrun_is_standing_still(void)
{
- if (gPlayerAvatar.running1 == 1)
+ if (gPlayerAvatar.tileTransitionState == 1)
return FALSE;
else
return TRUE;
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/graphics.c b/src/graphics.c
deleted file mode 100644
index e69de29bb..000000000
--- a/src/graphics.c
+++ /dev/null
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/link_rfu_2.c b/src/link_rfu_2.c
index 41fe72e20..17f604ee8 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -1917,7 +1917,7 @@ void ClearAndInitHostRFUtgtGname(void)
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, 0, 0);
}
-void sub_80FAF58(u8 a0, u32 a1, u32 a2)
+void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2)
{
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, a0, a2, a1);
}
@@ -1944,7 +1944,7 @@ void sub_80FAFE0(u8 a0)
void sub_80FB008(u8 a0, u32 a1, u32 a2)
{
if (a0)
- sub_80FAF58(a0, a1, a2);
+ SetHostRFUtgtGname(a0, a1, a2);
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index 87197f57f..31ea0830b 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -603,7 +603,7 @@ static u8 GetConnectedChildStrength(u8 maxFlags)
}
#endif
-void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
+void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3)
{
s32 i;
@@ -617,7 +617,7 @@ void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
r3 >>= 8;
}
data->playerGender = gSaveBlock2Ptr->playerGender;
- data->unk_0a_0 = r9;
+ data->unk_0a_0 = activity;
data->unk_0a_7 = r2;
data->unk_00.unk_00_0 = GAME_LANGUAGE;
data->unk_00.unk_01_2 = GAME_VERSION;
@@ -681,7 +681,7 @@ bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx)
return retVal;
}
-void sub_80FCD50(struct GFtgtGname *gname, u8 *uname)
+void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname)
{
memcpy(gname, &gHostRFUtgtGnameBuffer, RFU_GAME_NAME_LENGTH);
memcpy(uname, gHostRFUtgtUnameBuffer, RFU_USER_NAME_LENGTH);
@@ -929,7 +929,7 @@ void RecordMixTrainerNames(void)
}
}
-bool32 sub_80FD338(u16 id, u8 *name)
+bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name)
{
s32 i;
diff --git a/src/mevent.c b/src/mevent.c
index b22d02cbc..afad326b5 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/party_menu.c b/src/party_menu.c
index b6ec995ff..df0e70b37 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -5818,7 +5818,7 @@ static void Task_ContinueChoosingHalfParty(u8 taskId)
}
}
-void sub_81277F4(u8 menuType, MainCallback callback)
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback)
{
InitPartyMenu(menuType,
PARTY_LAYOUT_SINGLE,
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/pokemon.c b/src/pokemon.c
index 5b715133b..d1305861a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -3982,49 +3982,49 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
}
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
}
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
@@ -4496,25 +4496,25 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
retVal = FALSE;
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
retVal = FALSE;
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
retVal = FALSE;
break;
case 3:
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/rfu_union_tool.c b/src/rfu_union_tool.c
new file mode 100644
index 000000000..20b29de9b
--- /dev/null
+++ b/src/rfu_union_tool.c
@@ -0,0 +1,663 @@
+#include "global.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_object_80688E4.h"
+#include "event_object_8097404.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "rfu_union_tool.h"
+#include "script.h"
+#include "task.h"
+#include "constants/flags.h"
+#include "constants/event_object_movement.h"
+#include "constants/object_events.h"
+
+static EWRAM_DATA struct UnionObj * UnionObjWork = NULL;
+static EWRAM_DATA u32 sUnionObjRefreshTimer = 0;
+
+static u8 StartUnionObjAnimTask(void);
+static u32 sub_811BBC8(u32 playerIdx, u32 arg1);
+static void sub_811C008(s32 arg0, s32 arg1, u8 arg2);
+
+static const u8 sUnionObjectEventGfxIds[][10] = {
+ [MALE] = {
+ OBJECT_EVENT_GFX_COOLTRAINER_M,
+ OBJECT_EVENT_GFX_BLACKBELT,
+ OBJECT_EVENT_GFX_CAMPER,
+ OBJECT_EVENT_GFX_YOUNGSTER,
+ OBJECT_EVENT_GFX_BOY,
+ OBJECT_EVENT_GFX_BUG_CATCHER,
+ OBJECT_EVENT_GFX_MAN,
+ OBJECT_EVENT_GFX_ROCKER
+ },
+ [FEMALE] = {
+ OBJECT_EVENT_GFX_COOLTRAINER_F,
+ OBJECT_EVENT_GFX_CHANNELER,
+ OBJECT_EVENT_GFX_PICNICKER,
+ OBJECT_EVENT_GFX_LASS,
+ OBJECT_EVENT_GFX_WOMAN_1,
+ OBJECT_EVENT_GFX_BATTLE_GIRL,
+ OBJECT_EVENT_GFX_WOMAN_2,
+ OBJECT_EVENT_GFX_BEAUTY
+ }
+};
+
+static const s16 sUnionPartnerCoords[][2] = {
+ { 4, 6},
+ {13, 8},
+ {10, 6},
+ { 1, 8},
+ {13, 4},
+ { 7, 4},
+ { 1, 4},
+ { 7, 8}
+};
+
+static const s8 sFacingDirectionOffsets[][2] = {
+ [DIR_NONE] = { 0, 0},
+ [DIR_SOUTH] = { 1, 0},
+ [DIR_NORTH] = { 0, -1},
+ [DIR_WEST] = {-1, 0},
+ [DIR_EAST] = { 0, 1}
+};
+
+static const u8 sOppositeFacingDirection[] = {
+ [DIR_NONE] = DIR_NONE,
+ [DIR_SOUTH] = DIR_NORTH,
+ [DIR_NORTH] = DIR_SOUTH,
+ [DIR_WEST] = DIR_EAST,
+ [DIR_EAST] = DIR_WEST
+};
+
+static const u8 gUnknown_845711B[] = {
+ 1,
+ 3,
+ 1,
+ 4,
+ 2
+};
+
+static const u8 sUnionRoomLocalIds[] = {
+ 9,
+ 8,
+ 7,
+ 2,
+ 6,
+ 5,
+ 4,
+ 3
+};
+
+static const u16 sUnref_8457128[] = {
+ 0x63,
+ 0x64,
+ 0x65,
+ 0x66,
+ 0x67,
+ 0x68,
+ 0x69,
+ 0x6A
+};
+
+static bool32 is_walking_or_running(void)
+{
+ if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id)
+{
+ return sUnionObjectEventGfxIds[gender][id % 8];
+}
+
+static void GetUnionRoomPlayerFacingCoords(u32 id, u32 dirn, s32 * xp, s32 * yp)
+{
+ *xp = sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7;
+ *yp = sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7;
+}
+
+static bool32 sub_811B58C(u32 id, u32 dirn, s32 x, s32 y)
+{
+ if (sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7 != x)
+ {
+ return FALSE;
+ }
+ else if (sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7 != y)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static bool32 IsUnionRoomPlayerHidden(u32 player_idx)
+{
+ return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void HideUnionRoomPlayer(u32 player_idx)
+{
+ FlagSet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void ShowUnionRoomPlayer(u32 player_idx)
+{
+ FlagClear(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
+{
+ VarSet(VAR_OBJ_GFX_ID_0 + playerIdx, gfxId);
+}
+
+static void CreateUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ TrySpawnObjectEvent(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+}
+
+static void RemoveUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ RemoveObjectEventByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+}
+
+static bool32 SetUnionRoomPlayerEnterExitMovement(u32 playerIdx, const u8 * movement)
+{
+ u8 objectId;
+ struct ObjectEvent * object;
+ if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
+ {
+ return FALSE;
+ }
+ object = &gObjectEvents[objectId];
+ if (ObjectEventIsMovementOverridden(object))
+ {
+ return FALSE;
+ }
+ if (ObjectEventSetHeldMovement(object, *movement))
+ {
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 387);
+ return FALSE;
+ }
+ return TRUE;
+}
+static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ u8 objectId;
+ struct ObjectEvent * object;
+ if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
+ {
+ return TRUE;
+ }
+ object = &gObjectEvents[objectId];
+ if (!ObjectEventClearHeldMovementIfFinished(object))
+ {
+ return FALSE;
+ }
+ if (!ScriptContext2_IsEnabled())
+ {
+ UnfreezeObjectEvent(object);
+ }
+ else
+ {
+ FreezeObjectEvent(object);
+ }
+ return TRUE;
+}
+
+u8 ZeroUnionObjWork(struct UnionObj * ptr)
+{
+ s32 i;
+
+ sUnionObjRefreshTimer = 0;
+ UnionObjWork = ptr;
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 442)
+ for (i = 0; i < 8; i++)
+ {
+ ptr[i].state = 0;
+ ptr[i].gfxId = 0;
+ ptr[i].animState = 0;
+ ptr[i].schedAnim = 0;
+ }
+ return StartUnionObjAnimTask();
+}
+
+static const u8 sMovement_UnionPlayerExit[2] = {
+ MOVEMENT_ACTION_FLY_UP,
+ MOVEMENT_ACTION_STEP_END
+};
+
+static bool32 AnimateUnionRoomPlayerDespawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
+{
+ switch (*a0)
+ {
+ case 0:
+ if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerExit) == TRUE)
+ {
+ HideUnionRoomPlayer(playerIdx);
+ (*a0)++;
+ }
+ break;
+ case 1:
+ if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
+ {
+ RemoveUnionRoomPlayerObjectEvent(playerIdx);
+ HideUnionRoomPlayer(playerIdx);
+ *a0 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static const u8 sMovement_UnionPlayerEnter[2] = {
+ MOVEMENT_ACTION_FLY_DOWN,
+ MOVEMENT_ACTION_STEP_END
+};
+
+static bool32 AnimateUnionRoomPlayerSpawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
+{
+ s16 x, y;
+
+ switch (*a0)
+ {
+ case 0:
+ if (!is_walking_or_running())
+ {
+ break;
+ }
+ PlayerGetDestCoords(&x, &y);
+ if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
+ {
+ break;
+ }
+ player_get_pos_including_state_based_drift(&x, &y);
+ if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
+ {
+ break;
+ }
+ SetUnionRoomPlayerGfx(playerIdx, ptr->gfxId);
+ CreateUnionRoomPlayerObjectEvent(playerIdx);
+ ShowUnionRoomPlayer(playerIdx);
+ (*a0)++;
+ // fallthrough
+ case 3: // incorrect?
+ if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerEnter) == 1)
+ {
+ (*a0)++;
+ }
+ break;
+ case 2:
+ if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static bool32 sub_811B8BC(u32 playerIdx, u32 a1, u32 a2)
+{
+ struct UnionObj * ptr = &UnionObjWork[playerIdx];
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 561)
+ ptr->schedAnim = 1;
+ ptr->gfxId = GetUnionRoomPlayerGraphicsId(a1, a2);
+ if (ptr->state == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool32 sub_811B90C(u32 playerIdx)
+{
+ struct UnionObj * ptr = &UnionObjWork[playerIdx];
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 577)
+ ptr->schedAnim = 2;
+ if (ptr->state == 1)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
+{
+ switch (ptr->state)
+ {
+ case 0:
+ if (ptr->schedAnim == 1)
+ {
+ ptr->state = 2;
+ ptr->animState = 0;
+ }
+ else
+ {
+ break;
+ }
+ // fallthrough
+ case 2:
+ if (!sub_811BBC8(playerIdx, 0) && ptr->schedAnim == 2)
+ {
+ ptr->state = 0;
+ ptr->animState = 0;
+ RemoveUnionRoomPlayerObjectEvent(playerIdx);
+ HideUnionRoomPlayer(playerIdx);
+ }
+ else if (AnimateUnionRoomPlayerSpawn(&ptr->animState, playerIdx, ptr) == TRUE)
+ {
+ ptr->state = 1;
+ }
+ break;
+ case 1:
+ if (ptr->schedAnim == 2)
+ {
+ ptr->state = 3;
+ ptr->animState = 0;
+ }
+ else
+ {
+ break;
+ }
+ // fallthrough
+ case 3:
+ if (AnimateUnionRoomPlayerDespawn(&ptr->animState, playerIdx, ptr) == TRUE)
+ {
+ ptr->state = 0;
+ }
+ break;
+ }
+ ptr->schedAnim = 0;
+}
+
+static void Task_AnimateUnionObjs(u8 taskId)
+{
+ s32 i;
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 643)
+ for (i = 0; i < 8; i++)
+ {
+ AnimateUnionObj(i, &UnionObjWork[i]);
+ }
+}
+
+static u8 StartUnionObjAnimTask(void)
+{
+ if (FuncIsActiveTask(Task_AnimateUnionObjs) == TRUE)
+ {
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 655)
+ return NUM_TASKS;
+ }
+ else
+ {
+ return CreateTask(Task_AnimateUnionObjs, 5);
+ }
+}
+
+static void sub_811BA5C(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_AnimateUnionObjs);
+ if (taskId < NUM_TASKS)
+ {
+ DestroyTask(taskId);
+ }
+}
+
+void sub_811BA78(void)
+{
+ s32 i;
+ for (i = 0; i < 8; i++)
+ {
+ if (!IsUnionRoomPlayerHidden(i))
+ {
+ RemoveUnionRoomPlayerObjectEvent(i);
+ HideUnionRoomPlayer(i);
+ }
+ }
+ UnionObjWork = NULL;
+ sub_811BA5C();
+}
+
+void sub_811BAAC(u8 * sp8, s32 r9)
+{
+ s32 r7;
+
+ for (r7 = 0; r7 < 5; r7++)
+ {
+ s32 r5 = 5 * r9 + r7;
+ sp8[r5] = sprite_new(OBJECT_EVENT_GFX_MAN, r5 - 0x38, sUnionPartnerCoords[r9][0] + sFacingDirectionOffsets[r7][0], sUnionPartnerCoords[r9][1] + sFacingDirectionOffsets[r7][1], 3, 1);
+ sub_8069124(r5 - 0x38, TRUE);
+ }
+}
+
+void sub_811BB40(u8 * r5)
+{
+ s32 i;
+ for (i = 0; i < 40; i++)
+ {
+ DestroySprite(&gSprites[r5[i]]);
+ }
+}
+
+void sub_811BB68(void)
+{
+ s32 i, j, x, y;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ GetUnionRoomPlayerFacingCoords(i, j, &x, &y);
+ sub_8059024(x, y, 0);
+ }
+ }
+}
+
+static u8 sub_811BBA0(u32 r1, u32 unused, struct GFtgtGname * r2)
+{
+ if (r1 != 0)
+ {
+ return gUnknown_845711B[r1];
+ }
+ else if (r2->unk_0a_0 == 0x45)
+ {
+ return 1;
+ }
+ else
+ {
+ return 4;
+ }
+}
+
+static u32 sub_811BBC8(u32 a0, u32 a1)
+{
+ return sub_806916C(5 * a0 + a1 - 0x38);
+}
+
+static void sub_811BBE0(u32 r5, u32 r6, u8 r8, struct GFtgtGname * r9)
+{
+ s32 x, y;
+ s32 r7 = 5 * r5 + r6;
+ if (sub_811BBC8(r5, r6) == 1)
+ {
+ sub_8069124(r7 - 0x38, FALSE);
+ sub_80691A4(r7 - 0x38, 1);
+ }
+ sub_8069094(r7 - 0x38, r8);
+ sub_811C008(r6, r5, sub_811BBA0(r6, r5, r9));
+ GetUnionRoomPlayerFacingCoords(r5, r6, &x, &y);
+ sub_8059024(x, y, 1);
+}
+
+static void sub_811BC68(u32 a0, u32 a1)
+{
+ s32 x, y;
+ sub_80691A4(5 * a0 + a1 - 0x38, 2);
+ GetUnionRoomPlayerFacingCoords(a0, a1, &x, &y);
+ sub_8059024(x, y, 0);
+}
+
+static void sub_811BCA0(u32 r7, struct GFtgtGname * r8)
+{
+ s16 x, y, x2, y2;
+ s32 i;
+
+ PlayerGetDestCoords(&x, &y);
+ player_get_pos_including_state_based_drift(&x2, &y2);
+ if (sub_806916C(5 * r7 - 0x38) == 1)
+ {
+ if (sub_811B58C(r7, 0, x, y) == TRUE || sub_811B58C(r7, 0, x2, y2) == TRUE)
+ {
+ return;
+ }
+ sub_811BBE0(r7, 0, GetUnionRoomPlayerGraphicsId(r8->playerGender, r8->unk_00.playerTrainerId[0]), r8);
+ }
+ for (i = 1; i < 5; i++)
+ {
+ if (r8->unk_04[i - 1] == 0)
+ {
+ sub_811BC68(r7, i);
+ }
+ else if (sub_811B58C(r7, i, x, y) == FALSE && sub_811B58C(r7, i, x2, y2) == FALSE)
+ {
+ sub_811BBE0(r7, i, GetUnionRoomPlayerGraphicsId((r8->unk_04[i - 1] >> 3) & 1, r8->unk_04[i - 1] & 7), r8);
+ }
+ }
+}
+
+static void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
+{
+ u32 i;
+ switch (r4->unk_0a_0)
+ {
+ case 0x40:
+ case 0x54:
+ sub_811B8BC(r5, r4->playerGender, r4->unk_00.playerTrainerId[0]);
+ for (i = 0; i < 5; i++)
+ {
+ sub_811BC68(r5, i);
+ }
+ break;
+ case 0x41:
+ case 0x44:
+ case 0x45:
+ case 0x48:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ sub_811B90C(r5);
+ sub_811BCA0(r5, r4);
+ break;
+ default:
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
+ }
+}
+
+static void sub_811BE6C(u32 r5, struct GFtgtGname * unused)
+{
+ s32 i;
+ sub_811B90C(r5);
+ for (i = 0; i < 5; i++)
+ {
+ sub_811BC68(r5, i);
+ }
+}
+
+static void UpdateUnionRoomPlayerSprites(struct UnkStruct_URoom *r0)
+{
+ s32 i;
+ struct UnkStruct_x20 * r4;
+ sUnionObjRefreshTimer = 0;
+ for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
+ {
+ if (r4[i].field_1A_0 == 1)
+ {
+ sub_811BDA8(i, &r4[i].unk.gname);
+ }
+ else if (r4[i].field_1A_0 == 2)
+ {
+ sub_811BE6C(i, &r4[i].unk.gname);
+ }
+ }
+}
+
+void sub_811BECC(struct UnkStruct_URoom *unused)
+{
+ sUnionObjRefreshTimer = 300;
+}
+
+void sub_811BEDC(struct UnkStruct_URoom *r2)
+{
+ if (++sUnionObjRefreshTimer > 300)
+ {
+ UpdateUnionRoomPlayerSprites(r2);
+ }
+}
+
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
+{
+ s16 x, y;
+ s32 i, j;
+ struct UnkStruct_x20 * r4;
+ if (!is_walking_or_running())
+ {
+ return FALSE;
+ }
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ for (i = 0, r4 = arg0->arr; i < 8; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ s32 r3 = 5 * i + j;
+ if (x != sUnionPartnerCoords[i][0] + sFacingDirectionOffsets[j][0] + 7)
+ {
+ continue;
+ }
+ if (y != sUnionPartnerCoords[i][1] + sFacingDirectionOffsets[j][1] + 7)
+ {
+ continue;
+ }
+ if (sub_806916C(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (sub_8069294(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (r4[i].field_1A_0 != 1)
+ {
+ continue;
+ }
+ sub_811C008(j, i, sOppositeFacingDirection[GetPlayerFacingDirection()]);
+ *arg1 = j;
+ *arg2 = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
+{
+ sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
+}
+
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
+{
+ return sub_811C008(arg0, arg1, sub_811BBA0(arg0, arg1, &arg2->arr[arg1].unk.gname));
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 51e7d2c35..c2c422a0a 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;
}
@@ -1064,7 +1064,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
- show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TrySpawnObjectEvent(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
@@ -1074,7 +1074,7 @@ bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- show_sprite(objectId, mapNum, mapGroup);
+ TrySpawnObjectEvent(objectId, mapNum, mapGroup);
return FALSE;
}
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
new file mode 100644
index 000000000..4e3428cc6
--- /dev/null
+++ b/src/union_room.c
@@ -0,0 +1,4607 @@
+#include "global.h"
+#include "gflib.h"
+#include "battle.h"
+#include "berry_crush.h"
+#include "cable_club.h"
+#include "data.h"
+#include "decompress.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "event_object_lock.h"
+#include "field_control_avatar.h"
+#include "field_fadetransition.h"
+#include "field_player_avatar.h"
+#include "field_weather.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "list_menu.h"
+#include "load_save.h"
+#include "menu.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 "quest_log.h"
+#include "random.h"
+#include "save_location.h"
+#include "script.h"
+#include "script_pokemon_util.h"
+#include "start_menu.h"
+#include "strings.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 "rfu_union_tool.h"
+#include "union_room_message.h"
+#include "constants/songs.h"
+#include "constants/maps.h"
+#include "constants/cable_club.h"
+#include "constants/field_weather.h"
+#include "constants/species.h"
+
+static EWRAM_DATA u8 sUnionRoomPlayerName[12] = {};
+static EWRAM_DATA u8 gUnknown_203B058 = 0;
+static EWRAM_DATA u8 gUnknown_203B059 = 0;
+static EWRAM_DATA union UnkUnion_Main sUnionRoomMain = {};
+static EWRAM_DATA u32 sUnref_203B060 = 0;
+EWRAM_DATA struct GFtgtGnameSub gUnknown_203B064 = {};
+EWRAM_DATA u16 gUnionRoomOfferedSpecies = SPECIES_NONE;
+EWRAM_DATA u8 gUnionRoomRequestedMonType = TYPE_NORMAL;
+static EWRAM_DATA struct UnionRoomTrade sUnionRoomTrade = {};
+
+static struct UnkStruct_Leader * sLeader;
+static struct UnkStruct_Group * sGroup;
+static struct UnkStruct_URoom * sURoom;
+
+static void sub_8115A68(u8 taskId);
+static void sub_81161E4(struct UnkStruct_Leader * leader);
+static bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2);
+static void sub_81164C8(u8 windowId, s32 itemId, u8 y);
+static u8 sub_8116524(struct UnkStruct_Main0 * a0);
+static u8 sub_81165E8(struct UnkStruct_Main0 * a0);
+static void sub_8116738(u8 taskId);
+static u32 sub_8116D10(struct UnkStruct_Group * group, s32 id);
+static void sub_8116D60(struct UnkStruct_Group * group, s32 id);
+static void sub_8116E1C(u8 taskId);
+static void sub_8116F94(u8 windowId, s32 itemId, u8 y);
+static u8 sub_8116FE4(void);
+static void sub_8117990(void);
+static void sub_81179A4(void);
+static void sub_8117A0C(u8 taskId);
+static void sub_8117F20(u8 taskId);
+static void sub_81182DC(u8 taskId);
+static void sub_81186E0(u8 taskId);
+static u16 ReadAsU16(const u8 *data);
+static void sub_8119904(struct UnkStruct_URoom * uRoom);
+static bool32 sub_8119944(struct UnkStruct_URoom * uRoom);
+static void sub_81199FC(u8 taskId);
+static u8 sub_8119B94(void);
+static u8 sub_8119E84(struct UnkStruct_Main4 * arg0, struct UnkStruct_Main4 * arg1, u32 arg2);
+static bool32 sub_8119FB0(struct GFtgtGname * arg0, s16 arg1);
+static u8 sub_811A054(struct UnkStruct_Main4 * arg0, u32 arg1);
+static u8 sub_811A084(struct UnkStruct_Main4 * arg0, u32 arg1);
+static bool32 sub_811A0B4(const u8 * str);
+static bool32 sub_811A0E0(void);
+static bool8 PrintOnTextbox(u8 *textState, const u8 *str);
+static s8 sub_811A14C(u8 *dest, bool32 arg1);
+static s32 sub_811A218(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate);
+static s32 sub_811A2EC(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate, struct UnkStruct_Main0 * arg6);
+static void sub_811A3F8(void);
+static void sub_811A41C(void);
+static void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
+static void sub_811A5E4(struct UnkStruct_x20 * arg0, u8 count);
+static void sub_811A650(struct UnkStruct_x1C * arg0, u8 count);
+static bool8 sub_811A694(struct UnkStruct_Shared * arg0, const struct UnkStruct_Shared * arg1);
+static bool32 sub_811A6DC(struct UnkStruct_Shared * arg0, struct UnkStruct_Shared * arg1);
+static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1);
+static u8 sub_811A798(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1, u8 arg2);
+static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * arg3, u8 arg4, u8 id);
+static void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id);
+static bool32 sub_811A9B8(void);
+static u32 sub_811A9FC(s32 a0);
+static u32 sub_811AA24(struct UnkStruct_x20 * unkX20);
+static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender);
+static void nullsub_92(u8 windowId, s32 itemId, u8 y);
+static void sub_811ACA4(u8 windowId, s32 itemId, u8 y);
+static s32 sub_811AD7C(struct UnkStruct_x20 * arg, s32 arg1);
+static s32 GetUnionRoomPlayerGender(s32 a0, struct UnkStruct_Main0 * a1);
+static s32 sub_811ADD0(u32 type, u32 species);
+static void sub_811AE68(u8 *dst, s32 arg1, u32 playerGender);
+static void sub_811AECC(u8 *dst, u8 arg1);
+static s32 sub_811AF6C(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3);
+static bool32 sub_811B0A4(struct UnkStruct_URoom * arg0);
+static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
+static void ResetUnionRoomTrade(struct UnionRoomTrade * trade);
+static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade);
+static void RegisterTradeMon(u32 monId, struct UnionRoomTrade * trade);
+static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mpId);
+static void sub_811B258(bool32 a0);
+static void sub_811B298(void);
+static u8 sub_811B2A8(s32 a0);
+static u8 sub_811B2D8(struct UnkStruct_URoom * arg0);
+static void sub_811B31C(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 gender);
+
+#define _8456CD8(a, b) ((a) | ((b) << 8))
+
+static const u8 *const gUnknown_8456C74[] = {
+ gUnknown_84571AC,
+ gUnknown_8459394,
+ gUnknown_84593A4,
+ gUnknown_84593B4,
+ gUnknown_84593C4,
+ gUnknown_84593D4,
+ gUnknown_84593E4,
+ gUnknown_84593F4,
+ gUnknown_84593DC,
+ gUnknown_8459400,
+ gUnknown_8459410,
+ gUnknown_845941C,
+ gUnknown_845942C,
+ gUnknown_8459434,
+ gUnknown_8459440,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84593E4,
+ gUnknown_84593F4
+};
+
+static const struct WindowTemplate gUnknown_8456CD0 = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x008
+};
+
+static const u32 gUnknown_8456CD8[] = {
+ _8456CD8( 1, 2),
+ _8456CD8( 2, 2),
+ _8456CD8( 3, 4),
+ _8456CD8( 4, 2),
+ _8456CD8( 9, 37),
+ _8456CD8(10, 37),
+ _8456CD8(11, 53),
+ _8456CD8(13, 53),
+ _8456CD8(14, 53)
+};
+
+static const struct WindowTemplate gUnknown_8456CFC = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 13,
+ .height = 10,
+ .paletteNum = 15,
+ .baseBlock = 0x044
+};
+
+static const struct WindowTemplate gUnknown_8456D04 = {
+ .bg = 0,
+ .tilemapLeft = 16,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0C6
+};
+
+const struct ListMenuItem gUnknown_8456D0C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4}
+};
+
+static const struct ListMenuTemplate gUnknown_8456D34 = {
+ .items = gUnknown_8456D0C,
+ .moveCursorFunc = NULL,
+ .itemPrintFunc = sub_81164C8,
+ .totalItems = 5,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 1,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 2,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 1
+};
+
+static const struct WindowTemplate gUnknown_8456D4C = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 17,
+ .height = 10,
+ .paletteNum = 15,
+ .baseBlock = 0x044
+};
+
+static const struct WindowTemplate gUnknown_8456D54 = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0EE
+};
+
+static const struct ListMenuItem gUnknown_8456D5C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_84571AC, 8},
+ {gUnknown_84571AC, 9},
+ {gUnknown_84571AC, 10},
+ {gUnknown_84571AC, 11},
+ {gUnknown_84571AC, 12},
+ {gUnknown_84571AC, 13},
+ {gUnknown_84571AC, 14},
+ {gUnknown_84571AC, 15}
+};
+
+static const struct ListMenuTemplate gUnknown_8456DDC = {
+ .items = gUnknown_8456D5C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_8116F94,
+ .totalItems = 16,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 2,
+ .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456DF4 = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 6,
+ .width = 8,
+ .height = 7,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456DFC[] = {
+ {gUnknown_8459354, _8456CD8( 8, 2)},
+ {gUnknown_8459344, _8456CD8(65, 2)},
+ {gUnknown_845934C, _8456CD8(69, 2)},
+ {gUnknown_8459360, _8456CD8(64, 0)}
+};
+
+static const struct ListMenuTemplate gUnknown_8456E1C = {
+ .items = gUnknown_8456DFC,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 4,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456E34 = {
+ .bg = 0,
+ .tilemapLeft = 18,
+ .tilemapTop = 8,
+ .width = 11,
+ .height = 5,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456E3C[] = {
+ {gText_Register, 1},
+ {gUnknown_8459370, 2},
+ {gUnknown_8459360, 3}
+};
+
+static const struct ListMenuTemplate gUnknown_8456E54 = {
+ .items = gUnknown_8456E3C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456E6C = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 2,
+ .width = 9,
+ .height = 11,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456E74[] = {
+ {gTypeNames[TYPE_NORMAL], TYPE_NORMAL},
+ {gTypeNames[TYPE_FIRE], TYPE_FIRE},
+ {gTypeNames[TYPE_WATER], TYPE_WATER},
+ {gTypeNames[TYPE_ELECTRIC], TYPE_ELECTRIC},
+ {gTypeNames[TYPE_GRASS], TYPE_GRASS},
+ {gTypeNames[TYPE_ICE], TYPE_ICE},
+ {gTypeNames[TYPE_GROUND], TYPE_GROUND},
+ {gTypeNames[TYPE_ROCK], TYPE_ROCK},
+ {gTypeNames[TYPE_FLYING], TYPE_FLYING},
+ {gTypeNames[TYPE_PSYCHIC], TYPE_PSYCHIC},
+ {gTypeNames[TYPE_FIGHTING], TYPE_FIGHTING},
+ {gTypeNames[TYPE_POISON], TYPE_POISON},
+ {gTypeNames[TYPE_BUG], TYPE_BUG},
+ {gTypeNames[TYPE_GHOST], TYPE_GHOST},
+ {gTypeNames[TYPE_DRAGON], TYPE_DRAGON},
+ {gTypeNames[TYPE_STEEL], TYPE_STEEL},
+ {gTypeNames[TYPE_DARK], TYPE_DARK},
+ {gUnknown_8459360, NUMBER_OF_MON_TYPES}
+};
+
+static const struct ListMenuTemplate gUnknown_8456F04 = {
+ .items = gUnknown_8456E74,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = NUMBER_OF_MON_TYPES,
+ .maxShowed = 6,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 2,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456F1C = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x001
+};
+
+static const struct WindowTemplate gUnknown_8456F24 = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 10,
+ .paletteNum = 13,
+ .baseBlock = 0x039
+};
+
+static const struct ListMenuItem gUnknown_8456F2C[] = {
+ {gUnknown_84571AC, -3},
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_8459368, 8}
+};
+
+static const struct ListMenuTemplate gUnknown_8456F7C = {
+ .items = gUnknown_8456F2C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_811ACA4,
+ .totalItems = 10,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 12,
+ .cursor_X = 0,
+ .upText_Y = 2,
+ .cursorPal = 14,
+ .fillValue = 15,
+ .cursorShadowPal = 13,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 1,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456F94 = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 10,
+ .paletteNum = 13,
+ .baseBlock = 0x039
+};
+
+static const struct ListMenuItem gUnknown_8456F9C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_84571AC, 8},
+ {gUnknown_84571AC, 9},
+ {gUnknown_84571AC, 10},
+ {gUnknown_84571AC, 11},
+ {gUnknown_84571AC, 12},
+ {gUnknown_84571AC, 13},
+ {gUnknown_84571AC, 14},
+ {gUnknown_84571AC, 15}
+};
+
+static const struct ListMenuTemplate gUnknown_845701C = {
+ .items = gUnknown_8456F9C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = nullsub_92,
+ .totalItems = 16,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 1,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct UnkStruct_Shared gUnknown_8457034 = {};
+
+// starts at gUnknown_082F0474 in pokeemerald, union link groups
+
+ALIGNED(4) static const u8 gUnknown_845704C[] = {0x01, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457050[] = {0x02, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457054[] = {0x03, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457058[] = {0x04, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845705C[] = {0x09, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457060[] = {0x0A, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457064[] = {0x0B, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457068[] = {0x15, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845706C[] = {0x16, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457070[] = {0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845707C[] = {0x0C, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457080[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845708C[] = {0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF};
+
+static const u8 *const gUnknown_8457094[] = {
+ gUnknown_845704C,
+ gUnknown_8457050,
+ gUnknown_8457054,
+ gUnknown_8457058,
+ gUnknown_845705C,
+ gUnknown_8457060,
+ gUnknown_8457064,
+ gUnknown_8457068,
+ gUnknown_845706C,
+ gUnknown_8457070,
+ gUnknown_845707C,
+ gUnknown_8457080,
+ gUnknown_845708C
+};
+
+static const u8 gUnknown_84570C8[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00};
+
+#undef _8456CD8
+
+// These are functions in Emerald but inlined in FireRed
+
+#define IntlConvPartnerUname7(dest, arg1) ({ \
+ StringCopy7(dest, (arg1).unk.playerName); \
+ ConvertInternationalString(dest, (arg1).unk.gname.unk_00.unk_00_0); \
+})
+
+#define IntlConvPartnerUname(dest, arg1) ({ \
+ StringCopy(dest, (arg1).unk.playerName); \
+ ConvertInternationalString(dest, (arg1).unk.gname.unk_00.unk_00_0); \
+})
+
+#define CopyTrainerCardData(dest, src, _version) ({ \
+ (dest) = *((struct TrainerCard * )(src)); \
+ (dest).version = _version; \
+})
+
+#define GetStringRightAlignXOffset(_fontId, _string, _maxWidth) ({ \
+ u16 strWidth = GetStringWidth(_fontId, _string, 0); \
+ _maxWidth - strWidth; \
+})
+
+static void sub_811586C(u8 windowId, u8 arg1, u8 stringId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ switch (arg1 << 8)
+ {
+ case 0x200:
+ sub_811A444(windowId, 2, gUnknown_845742C[0][stringId - 1], 0, 2, 0);
+ break;
+ case 0x400:
+ sub_811A444(windowId, 2, gUnknown_845742C[1][stringId - 1], 0, 2, 0);
+ break;
+ case 0x2500:
+ sub_811A444(windowId, 2, gUnknown_845742C[2][stringId - 1], 0, 2, 0);
+ break;
+ case 0x3500:
+ sub_811A444(windowId, 2, gUnknown_845742C[3][stringId - 1], 0, 2, 0);
+ break;
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+static void sub_8115924(u8 windowId)
+{
+ u8 text[12];
+ u8 text2[12];
+
+ sub_811A444(windowId, 2, gSaveBlock2Ptr->playerName, 0, 2, 0);
+ StringCopy(text2, gUnknown_84571B4);
+ ConvertIntToDecimalStringN(text, ReadAsU16(gSaveBlock2Ptr->playerTrainerId), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringAppend(text2, text);
+ sub_811A444(windowId, 0, text2, 0, 0x10, 0);
+}
+
+static void sub_811599C(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1 ... 4:
+ case 9 ... 11:
+ case 21 ... 22:
+ // UB: argument *dst isn't used, instead it always prints to gStringVar4
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
+ break;
+ }
+}
+
+void TryBecomeLinkLeader(void)
+{
+ u8 taskId;
+ struct UnkStruct_Leader * dataPtr;
+
+ taskId = CreateTask(sub_8115A68, 0);
+ sUnionRoomMain.leader = dataPtr = (void*)(gTasks[taskId].data);
+ sLeader = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8115A68(u8 taskId)
+{
+ u32 id, val;
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+
+ switch (data->state)
+ {
+ case 0:
+ gUnknown_203B058 = gUnknown_8456CD8[gSpecialVar_0x8004];
+ gUnknown_203B059 = gUnknown_8456CD8[gSpecialVar_0x8004] >> 8;
+ SetHostRFUtgtGname(gUnknown_203B058, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBB8C(gUnknown_203B059 & 0xF);
+ data->state = 3;
+ break;
+ case 3:
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 5);
+ LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.gname, 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);
+ data->field_10 = AddWindow(&gUnknown_8456CD0);
+ data->listWindowId = AddWindow(&gUnknown_8456CFC);
+ data->field_11 = AddWindow(&gUnknown_8456D04);
+
+ FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2));
+ sub_811A444(data->field_10, 0, gUnknown_845747C, 8, 2, 4);
+ PutWindowTilemap(data->field_10);
+ CopyWindowToVram(data->field_10, 2);
+
+ DrawStdWindowFrame(data->listWindowId, FALSE);
+ gMultiuseListMenuTemplate = gUnknown_8456D34;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ DrawStdWindowFrame(data->field_11, FALSE);
+ PutWindowTilemap(data->field_11);
+ CopyWindowToVram(data->field_11, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_13 = 1;
+ data->state = 4;
+ break;
+ case 4:
+ StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
+ if ((gUnknown_203B059 >> 4) != 0)
+ {
+ if (data->field_13 > (gUnknown_203B059 >> 4) - 1 && (gUnknown_203B059 & 0xF) != 0)
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457264);
+ else
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
+ }
+ else
+ {
+ sub_811599C(gStringVar4, gUnknown_203B058);
+ }
+
+ sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
+ data->state = 5;
+ break;
+ case 5:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 6;
+ break;
+ case 6:
+ sub_8116444(data, 7, 10);
+ if (JOY_NEW(B_BUTTON))
+ {
+ if (data->field_13 == 1)
+ data->state = 23;
+ else if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 30;
+ else
+ data->state = 19;
+ }
+ if ((gUnknown_203B059 >> 4) != 0
+ && data->field_13 > (gUnknown_203B059 >> 4) - 1
+ && (gUnknown_203B059 & 0xF) != 0
+ && sub_80FC1CC()
+ && JOY_NEW(START_BUTTON))
+ {
+ data->state = 15;
+ sub_80F8F5C();
+ }
+ if (data->state == 6 && sub_80FA5D4())
+ {
+ data->state = 9;
+ }
+ break;
+ case 9:
+ if (!sub_80FA5D4())
+ {
+ data->state = 6;
+ data->field_13 = sub_81165E8(data->field_0);
+ }
+ break;
+ case 10:
+ id = ((gUnknown_203B058 & 0xF) == 2) ? 1 : 0;
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
+ {
+ data->field_13 = sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 4;
+ }
+ break;
+ case 29:
+ id = ((gUnknown_203B059 & 0xF) == 2) ? 0 : 1;
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
+ {
+ data->state = 21;
+ }
+ break;
+ case 7:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ data->state = 11;
+ }
+ break;
+ case 11:
+ switch (sub_811A14C(&data->textState, sub_80FA634(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName)))
+ {
+ case 0:
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ data->field_19 = 5;
+ sub_80FA670(5, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 12;
+ break;
+ case 1:
+ case -1:
+ data->field_19 = 6;
+ sub_80FA670(6, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 12;
+ break;
+ case -3:
+ data->state = 9;
+ break;
+ }
+ break;
+ case 12:
+ val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.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++;
+ if (data->field_13 == (gUnknown_203B059 & 0xF))
+ {
+ if ((gUnknown_203B059 & 0xF0) != 0 || data->field_13 == 4)
+ {
+ data->state = 15;
+ }
+ else
+ {
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_13 - 1]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
+ data->state = 13;
+ }
+
+ sub_80F8F5C();
+ sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
+ }
+ else
+ {
+ data->state = 4;
+ }
+ }
+ else
+ {
+ sub_80FBD4C(data->field_0->arr[data->field_13].unk.playerName, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId));
+ data->field_0->arr[data->field_13].field_1A_0 = 0;
+ sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 4;
+ }
+
+ data->field_19 = 0;
+ }
+ else if (val == 2)
+ {
+ sub_80FB9E4(0, 0);
+ data->state = 4;
+ }
+ break;
+ case 13:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 14;
+ break;
+ case 14:
+ if (++data->field_E > 120)
+ data->state = 17;
+ break;
+ case 15:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457514))
+ data->state = 16;
+ break;
+ case 16:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 17;
+ break;
+ case 1:
+ case -1:
+ if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 30;
+ else
+ data->state = 19;
+ break;
+ }
+ break;
+ case 19:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457530))
+ data->state = 20;
+ break;
+ case 20:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 23;
+ break;
+ case 1:
+ case -1:
+ if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 15;
+ else if (data->field_13 == (gUnknown_203B059 & 0xF))
+ data->state = 15;
+ else
+ data->state = 4;
+ break;
+ }
+ break;
+ case 17:
+ if (!sub_8116444(data, 7, 23))
+ data->state = 18;
+ break;
+ case 18:
+ if (sub_80F8F40())
+ {
+ if (sub_80F8F7C(FALSE))
+ {
+ data->state = 26;
+ }
+ }
+ else
+ {
+ data->state = 29;
+ data->textState = 0;
+ }
+ break;
+ case 30:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457610))
+ data->state = 23;
+ break;
+ case 21:
+ case 23:
+ DestroyWirelessStatusIndicatorSprite();
+ sub_80F8DC0();
+ sub_81161E4(data);
+ data->state++;
+ break;
+ case 24:
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ gSpecialVar_Result = 5;
+ break;
+ case 22:
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ gSpecialVar_Result = 8;
+ break;
+ case 26:
+ if (sub_80FBA00())
+ {
+ data->state = 29;
+ }
+ else
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_80FAFE0(1);
+ sub_8117990();
+ sub_81161E4(data);
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+static void sub_81161E4(struct UnkStruct_Leader * data)
+{
+ ClearWindowTilemap(data->field_11);
+ ClearStdWindowAndFrame(data->field_11, FALSE);
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ ClearWindowTilemap(data->field_10);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_11);
+ RemoveWindow(data->listWindowId);
+ RemoveWindow(data->field_10);
+ DestroyTask(data->field_17);
+
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_4);
+}
+
+static void sub_8116244(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ StringExpandPlaceholders(dst, gUnknown_84574A0);
+ break;
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_84574C4);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_84574EC);
+ break;
+ }
+}
+
+static void sub_81162E0(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 65:
+ case 68:
+ StringExpandPlaceholders(dst, gUnknown_8457E28);
+ break;
+ case 69:
+ case 72:
+ StringExpandPlaceholders(dst, gUnknown_8457E44);
+ break;
+ }
+}
+
+static void sub_811631C(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_8459238);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_8459250);
+ break;
+ }
+}
+
+static void sub_81163B0(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_84576AC);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_84576C4);
+ break;
+ }
+}
+
+static bool8 sub_8116444(struct UnkStruct_Leader * data, u32 arg1, u32 arg2)
+{
+ switch (sub_8116524(data->field_0))
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname7(gStringVar2, data->field_0->arr[data->field_13]);
+ sub_8116244(gStringVar4, gUnknown_203B058);
+ data->state = arg1;
+ break;
+ case 2:
+ sub_80FB9E4(0, 0);
+ RedrawListMenu(data->listTaskId);
+ data->state = arg2;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_81164C8(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 var = 0;
+
+ switch (data->field_0->arr[itemId].field_1A_0)
+ {
+ case 1:
+ if (data->field_0->arr[itemId].field_1B != 0)
+ var = 2;
+ break;
+ case 2:
+ var = 1;
+ break;
+ }
+
+ sub_811A910(windowId, 0, y, &data->field_0->arr[itemId], var, itemId);
+}
+
+static u8 sub_8116524(struct UnkStruct_Main0 * arg0)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 ret = 0;
+ u8 i;
+ s32 id;
+
+ for (i = 1; i < 5; i++)
+ {
+ u16 var = data->field_0->arr[i].field_1A_0;
+ if (var == 1)
+ {
+ id = sub_811A748(&data->field_0->arr[i], data->field_4->arr);
+ if (id != 0xFF)
+ {
+ data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
+ data->field_0->arr[i].field_18 = var;
+ }
+ else
+ {
+ data->field_0->arr[i].field_1A_0 = 2;
+ ret = 2;
+ }
+ }
+ }
+
+ for (id = 0; id < 4; id++)
+ sub_811A798(data->field_0->arr, &data->field_4->arr[id], 5);
+
+ if (ret != 2)
+ {
+ for (id = 0; id < 5; id++)
+ {
+ if (data->field_0->arr[id].field_1B != 0)
+ ret = 1;
+ }
+ }
+
+ return ret;
+}
+
+static u8 sub_81165E8(struct UnkStruct_Main0 * arg0)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 copiedCount;
+ s32 i;
+ u8 ret;
+
+ for (i = 0; i < 5; i++)
+ data->field_8->arr[i] = data->field_0->arr[i];
+
+ copiedCount = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (data->field_8->arr[i].field_1A_0 == 1)
+ {
+ data->field_0->arr[copiedCount] = data->field_8->arr[i];
+ copiedCount++;
+ }
+ }
+
+ ret = copiedCount;
+ for (; copiedCount < 5; copiedCount++)
+ {
+ data->field_0->arr[copiedCount].unk = gUnknown_8457034;
+ data->field_0->arr[copiedCount].field_18 = 0;
+ data->field_0->arr[copiedCount].field_1A_0 = 0;
+ data->field_0->arr[copiedCount].field_1A_1 = 0;
+ data->field_0->arr[copiedCount].field_1B = 0;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ if (data->field_0->arr[i].field_1A_0 != 1)
+ continue;
+ if (data->field_0->arr[i].field_1B != 0x40)
+ continue;
+
+ ret = i;
+ break;
+ }
+
+ return ret;
+}
+
+void TryJoinLinkGroup(void)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8116738, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8116738(u8 taskId)
+{
+ s32 id;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(gUnknown_84570C8[gSpecialVar_0x8004], 0, 0);
+ gUnknown_203B058 = gUnknown_84570C8[gSpecialVar_0x8004];
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ if (PrintOnTextbox(&data->textState, gUnknown_84591B8[gSpecialVar_0x8004]))
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, gSpecialVar_0x8004);
+ data->field_C = AddWindow(&gUnknown_8456CD0);
+ data->listWindowId = AddWindow(&gUnknown_8456D4C);
+ data->field_D = AddWindow(&gUnknown_8456D54);
+
+ FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2));
+ sub_811A444(data->field_C, 0, gUnknown_8458FC8, 8, 2, 4);
+ PutWindowTilemap(data->field_C);
+ CopyWindowToVram(data->field_C, 2);
+
+ DrawStdWindowFrame(data->listWindowId, FALSE);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ DrawStdWindowFrame(data->field_D, FALSE);
+ PutWindowTilemap(data->field_D);
+ sub_8115924(data->field_D);
+ CopyWindowToVram(data->field_D, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (JOY_NEW(A_BUTTON) && id != -1)
+ {
+ // this unused variable along with the assignment is needed to match
+ u32 unusedVar;
+ unusedVar = data->field_0->arr[id].unk.gname.unk_0a_0;
+
+ if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.gname.unk_0a_7)
+ {
+ u32 var = sub_8116D10(data, id);
+ if (var == 0)
+ {
+ sub_8116D60(data, id);
+ data->state = 5;
+ PlaySE(SE_PN_ON);
+ }
+ else
+ {
+ StringCopy(gStringVar4, gUnknown_8457608[var - 1]);
+ data->state = 18;
+ PlaySE(SE_PN_ON);
+ }
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 10;
+ }
+ break;
+ default:
+ RedrawListMenu(data->listTaskId);
+ break;
+ }
+ break;
+ case 5:
+ sub_811631C(gStringVar4, gUnknown_203B058);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 6;
+ }
+ break;
+ case 6:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ sub_80FB9E4(0, 0);
+ switch (gUnknown_203B058)
+ {
+ case 1 ... 5:
+ case 9 ... 11:
+ case 13 ... 14:
+ case 21 ... 22:
+ data->state = 20;
+ break;
+ }
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ data->state = 12;
+ break;
+ case 2:
+ case 6:
+ case 9:
+ data->state = 14;
+ break;
+ case 5:
+ sub_81163B0(gStringVar4, gUnknown_203B058);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_80FB9E4(7, 0);
+ StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457700);
+ }
+ break;
+ case 7:
+ if (data->field_15 > 0xF0)
+ {
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_80FB9E4(12, 0);
+ data->field_15 = 0;
+ }
+ }
+ else
+ {
+ data->field_15++;
+ }
+ break;
+ }
+
+ if (!sub_80FB9F4() && JOY_NEW(B_BUTTON))
+ data->state = 7;
+ break;
+ case 7:
+ if (PrintOnTextbox(&data->textState, gUnknown_845771C))
+ data->state = 8;
+ break;
+ case 8:
+ switch (sub_811A14C(&data->textState, sub_80FB9F4()))
+ {
+ case 0:
+ sub_80FA6BC();
+ data->state = 9;
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 1:
+ case -1:
+ data->state = 5;
+ RedrawListMenu(data->listTaskId);
+ break;
+ case -3:
+ data->state = 6;
+ RedrawListMenu(data->listTaskId);
+ break;
+ }
+ break;
+ case 9:
+ if (sub_80FB9F4())
+ data->state = 6;
+ break;
+ case 10:
+ case 12:
+ case 14:
+ case 18:
+ case 20:
+ ClearWindowTilemap(data->field_D);
+ ClearStdWindowAndFrame(data->field_D, FALSE);
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ ClearWindowTilemap(data->field_C);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_D);
+ RemoveWindow(data->listWindowId);
+ RemoveWindow(data->field_C);
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 13:
+ DestroyWirelessStatusIndicatorSprite();
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ {
+ gSpecialVar_Result = 6;
+ data->state = 23;
+ }
+ break;
+ case 11:
+ DestroyWirelessStatusIndicatorSprite();
+ gSpecialVar_Result = 5;
+ data->state = 23;
+ break;
+ case 15:
+ DestroyWirelessStatusIndicatorSprite();
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ {
+ gSpecialVar_Result = 8;
+ data->state = 23;
+ }
+ break;
+ case 19:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ gSpecialVar_Result = 8;
+ data->state = 23;
+ }
+ break;
+ case 23:
+ DestroyTask(taskId);
+ sub_811A41C();
+ sub_80F8DC0();
+ break;
+ case 21:
+ sub_8117990();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static u32 sub_8116D10(struct UnkStruct_Group * arg0, s32 id)
+{
+ struct UnkStruct_x20 * structPtr = &arg0->field_0->arr[id];
+
+ if (gUnknown_203B058 == 4 && structPtr->unk.gname.unk_00.unk_01_2 != VERSION_FIRE_RED && structPtr->unk.gname.unk_00.unk_01_2 != VERSION_LEAF_GREEN)
+ {
+ if (!(gSaveBlock2Ptr->specialSaveWarpFlags & CHAMPION_SAVEWARP))
+ return 1;
+ else if (structPtr->unk.gname.unk_00.isChampion)
+ return 0;
+ }
+ else
+ {
+ return 0;
+ }
+
+ return 2;
+}
+
+static void sub_8116D60(struct UnkStruct_Group * data, s32 id)
+{
+ data->field_F = id;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname7(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, ReadAsU16(data->field_0->arr[data->field_F].unk.gname.unk_00.playerTrainerId));
+}
+
+u8 sub_8116DE0(void)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8116E1C, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+
+ sGroup = dataPtr;
+
+ return taskId;
+}
+
+static void sub_8116E1C(u8 taskId)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(0, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ sub_80FB128(TRUE);
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 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;
+ }
+}
+
+static 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;
+}
+
+static 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.gname.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;
+}
+
+static void sub_8116F94(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+ u8 var = sub_8116F5C(data, itemId);
+
+ sub_811A81C(windowId, 8, y, &data->field_0->arr[itemId], var, itemId);
+}
+
+static u8 sub_8116FE4(void)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.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;
+}
+
+static void sub_8117100(u8 taskId)
+{
+ CB2_ReturnFromLinkTrade();
+ DestroyTask(taskId);
+}
+
+u8 sub_8117118(void)
+{
+ u8 taskId = CreateTask(sub_8117100, 0);
+
+ return taskId;
+}
+
+static void sub_8117130(u8 taskId)
+{
+ u32 monId = GetPartyPositionOfRegisteredMon(&sUnionRoomTrade, 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);
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static 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;
+ }
+}
+
+static 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();
+}
+
+static 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();
+}
+
+static 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();
+}
+
+static 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();
+}
+
+static 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;
+}
+
+static 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();
+ SetHostRFUtgtGname(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();
+}
+
+static 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;
+ }
+}
+
+static void sub_8117990(void)
+{
+ CreateTask(sub_8117900, 0);
+}
+
+static 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);
+ sUnionRoomMain.leader = dataPtr = (void*)(gTasks[taskId].data);
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_18 = arg0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8117A0C(u8 taskId)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ struct WindowTemplate winTemplate;
+ s32 val;
+
+ switch (data->state)
+ {
+ case 0:
+ gUnknown_203B058 = data->field_18;
+ gUnknown_203B059 = 2;
+ SetHostRFUtgtGname(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(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 5);
+ LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.gname, 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 (JOY_NEW(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, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.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, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 8;
+ break;
+ }
+ break;
+ case 8:
+ val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.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++;
+ IntlConvPartnerUname7(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, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.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;
+ }
+}
+
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8117F20, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_12 = arg0 - 21;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8117F20(u8 taskId)
+{
+ s32 id;
+ struct WindowTemplate winTemplate1, winTemplate2;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(data->field_12 + 21, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ AddTextPrinterToWindow1(gUnknown_8458FE4);
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, data->field_12 + 7);
+
+ winTemplate1 = gUnknown_8456D4C;
+ winTemplate1.baseBlock = GetMysteryGiftBaseBlock();
+ data->listWindowId = AddWindow(&winTemplate1);
+
+ data->field_D = AddWindow(&gUnknown_8456D54);
+
+ MG_DrawTextBorder(data->listWindowId);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ MG_DrawTextBorder(data->field_D);
+ FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1));
+ PutWindowTilemap(data->field_D);
+ sub_8115924(data->field_D);
+ CopyWindowToVram(data->field_D, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ default:
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (JOY_NEW(A_BUTTON) && id != -1)
+ {
+ // this unused variable along with the assignment is needed to match
+ u32 unusedVar;
+ unusedVar = data->field_0->arr[id].unk.gname.unk_0a_0;
+
+ if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.gname.unk_0a_7)
+ {
+ data->field_F = id;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.gname.unk_00.playerTrainerId));
+ PlaySE(SE_PN_ON);
+ data->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 6;
+ }
+ break;
+ }
+ break;
+ case 4:
+ AddTextPrinterToWindow1(gUnknown_8459238);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 5;
+ break;
+ case 5:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ data->state = 10;
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ case 2:
+ case 6:
+ data->state = 8;
+ break;
+ case 5:
+ AddTextPrinterToWindow1(gUnknown_84576AC);
+ sub_80FB9E4(0, 0);
+ break;
+ }
+ break;
+ case 6:
+ case 8:
+ case 10:
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_D);
+ RemoveWindow(data->listWindowId);
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 9:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_8457838[sub_80FB9F4()]))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 7:
+ DestroyWirelessStatusIndicatorSprite();
+ AddTextPrinterToWindow1(gUnknown_84571B8);
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ break;
+ case 11:
+ data->state++;
+ sub_800AB9C();
+ break;
+ case 12:
+ if (IsLinkTaskFinished())
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_81182DC, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_12 = arg0 - 21;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_81182DC(u8 taskId)
+{
+ s32 id;
+ struct WindowTemplate winTemplate;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(0, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ AddTextPrinterToWindow1(gUnknown_84591DC);
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A084(data->field_4, data->field_12 + 7);
+
+ if (data->field_13 != 0)
+ {
+ winTemplate = gUnknown_8456D4C;
+ winTemplate.baseBlock = GetMysteryGiftBaseBlock();
+ data->listWindowId = AddWindow(&winTemplate);
+
+ MG_DrawTextBorder(data->listWindowId);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ CopyBgTilemapBufferToVram(0);
+ }
+
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ default:
+ if (data->field_13 != 0)
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ if (data->field_13 != 0)
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (data->field_14 > 120)
+ {
+ if (data->field_0->arr[0].field_1A_0 == 1 && !data->field_0->arr[0].unk.gname.unk_0a_7)
+ {
+ if (sub_8119FB0(&data->field_0->arr[0].unk.gname, data->field_12 + 7))
+ {
+ data->field_F = 0;
+ data->field_14 = 0;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ sub_80FBF54(data->field_0->arr[0].unk.playerName, ReadAsU16(data->field_0->arr[0].unk.gname.unk_00.playerTrainerId));
+ PlaySE(SE_PN_ON);
+ data->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ data->state = 10;
+ }
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 6;
+ data->field_14 = 0;
+ }
+ data->field_14++;
+ break;
+ }
+ break;
+ case 4:
+ AddTextPrinterToWindow1(gUnknown_845928C);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 5;
+ break;
+ case 5:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ data->state = 12;
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ case 2:
+ case 6:
+ data->state = 8;
+ break;
+ case 5:
+ AddTextPrinterToWindow1(gUnknown_845777C);
+ sub_80FB9E4(0, 0);
+ break;
+ }
+ break;
+ case 6:
+ case 8:
+ case 10:
+ case 12:
+ if (data->field_13 != 0)
+ {
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->listWindowId);
+ }
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 9:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84577BC))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 7:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84571E0))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 11:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_845933C[data->field_12]))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 13:
+ data->state++;
+ sub_800AB9C();
+ break;
+ case 14:
+ if (IsLinkTaskFinished())
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void UnionRoomSpecial(void)
+{
+ struct UnkStruct_URoom * dataPtr;
+
+ ClearAndInitHostRFUtgtGname();
+ CreateTask(sub_81186E0, 10);
+
+ // dumb line needed to match
+ sUnionRoomMain.uRoom = sUnionRoomMain.uRoom;
+
+ dataPtr = AllocZeroed(sizeof(*sUnionRoomMain.uRoom));
+ sUnionRoomMain.uRoom = dataPtr;
+ sURoom = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_10 = 0;
+ dataPtr->field_12 = 0;
+
+ gSpecialVar_Result = 0;
+ sub_8107D38(0xD0, 1);
+}
+
+static u16 ReadAsU16(const u8 *ptr)
+{
+ return (ptr[1] << 8) | (ptr[0]);
+}
+
+static void sub_8118664(u32 nextState, const u8 *src)
+{
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+
+ data->state = 8;
+ data->stateAfterPrint = nextState;
+ if (src != gStringVar4)
+ StringExpandPlaceholders(gStringVar4, src);
+}
+
+static void sub_811868C(const u8 *src)
+{
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+
+ data->state = 26;
+ if (src != gStringVar4)
+ StringExpandPlaceholders(gStringVar4, src);
+}
+
+static void sub_81186B0(struct UnkStruct_URoom * data)
+{
+ memcpy(&gDecompressionBuffer[0x3F00], data->field_0, 8 * sizeof(struct UnkStruct_x20));
+}
+
+static void sub_81186C8(struct UnkStruct_URoom * data)
+{
+ memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20));
+}
+
+static void sub_81186E0(u8 taskId)
+{
+ u32 id = 0;
+ s32 var5 = 0;
+ s32 playerGender = MALE;
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+ s16 *taskData = gTasks[taskId].data;
+
+ switch (data->state)
+ {
+ case 0:
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_C = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
+ sub_811A5E4(data->field_0->arr, 8);
+ gUnknown_203B058 = 0x40;
+ data->field_20 = sub_8119E84(data->field_C, data->field_4, 9);
+ ZeroUnionObjWork(data->unionObjs);
+ sub_811BB68();
+ data->state = 1;
+ break;
+ case 1:
+ sub_811BAAC(data->spriteIds, taskData[0]);
+ if (++taskData[0] == 8)
+ data->state = 2;
+ break;
+ case 2:
+ SetHostRFUtgtGname(0x40, 0, 0);
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBC00();
+ sub_811A5E4(&data->field_8->arr[0], 1);
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A650(data->field_C->arr, 4);
+ gSpecialVar_Result = 0;
+ data->state = 3;
+ break;
+ case 3:
+ if ((GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_REGISTER
+ || GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_TRADE)
+ && sUnionRoomTrade.field_0 != 0)
+ {
+ id = GetCursorSelectionMonId();
+ switch (sUnionRoomTrade.field_0)
+ {
+ case 1:
+ sub_80FB008(0x54, 0, 1);
+ if (id >= PARTY_SIZE)
+ {
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_80FAFA0(0, 0, 0);
+ sub_811868C(gUnknown_8458D54);
+ }
+ else if (!RegisterTradeMonAndGetIsEgg(GetCursorSelectionMonId(), &sUnionRoomTrade))
+ {
+ sub_8118664(0x34, gUnknown_8458CD4);
+ }
+ else
+ {
+ data->state = 55;
+ }
+ break;
+ case 2:
+ sub_81186C8(data);
+ taskData[1] = sUnionRoomTrade.field_8;
+ if (id >= PARTY_SIZE)
+ {
+ sub_811868C(gUnknown_8458D9C);
+ }
+ else
+ {
+ sub_80FB008(0x54, 0, 1);
+ gUnknown_203B058 = 0x44;
+ RegisterTradeMon(GetCursorSelectionMonId(), &sUnionRoomTrade);
+ data->state = 51;
+ }
+ break;
+ }
+ sUnionRoomTrade.field_0 = 0;
+ }
+ else
+ {
+ data->state = 4;
+ }
+ break;
+ case 4:
+ if (gSpecialVar_Result != 0)
+ {
+ if (gSpecialVar_Result == 9)
+ {
+ sub_80FB008(0x54, 0, 1);
+ PlaySE(SE_PC_LOGIN);
+ StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
+ data->state = 42;
+ gSpecialVar_Result = 0;
+ }
+ else if (gSpecialVar_Result == 11)
+ {
+ sub_80FB008(0x54, 0, 1);
+ data->state = 23;
+ gSpecialVar_Result = 0;
+ }
+ else
+ {
+ taskData[0] = 0;
+ taskData[1] = gSpecialVar_Result - 1;
+ data->state = 24;
+ gSpecialVar_Result = 0;
+ }
+ }
+ else if (ScriptContext2_IsEnabled() != TRUE)
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (sub_811BF00(data->field_0, &taskData[0], &taskData[1], data->spriteIds))
+ {
+ PlaySE(SE_SELECT);
+ sub_811B298();
+ data->state = 24;
+ break;
+ }
+ else if (sub_811A9B8())
+ {
+ sub_80FB008(0x54, 0, 1);
+ PlaySE(SE_PC_LOGIN);
+ sub_811B298();
+ StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
+ data->state = 45;
+ break;
+ }
+ }
+
+ switch (sub_8119B94())
+ {
+ case 1:
+ PlaySE(SE_TOY_C);
+ case 2:
+ sub_811BECC(data);
+ break;
+ case 4:
+ data->state = 11;
+ sub_811B298();
+ sub_80FAFA0(0, 0, 0);
+ sub_80FB008(0x53, sub_811B2D8(data), 0);
+ break;
+ }
+ sub_811BEDC(data);
+ }
+ break;
+ case 23:
+ if (!FuncIsActiveTask(Task_StartMenuHandleInput))
+ {
+ sub_80FB008(0x40, 0, 0);
+ data->state = 4;
+ }
+ break;
+ case 24:
+ sub_811A0E0();
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ switch (sub_811AA5C(data->field_0, taskData[0], taskData[1], playerGender))
+ {
+ case 0:
+ data->state = 26;
+ break;
+ case 1:
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, gUnknown_203B058);
+ data->field_12 = id; // Should be just 0, but won't match any other way.
+ data->state = 25;
+ break;
+ case 2:
+ sub_8118664(0x13, gStringVar4);
+ break;
+ }
+ break;
+ case 25:
+ sub_811A0E0();
+ switch (sub_80FB9F4())
+ {
+ case 4:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ case 1:
+ case 2:
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_8457F90);
+ else
+ sub_8118664(30, gUnknown_8457F90);
+
+ gUnknown_203B058 = 0x40;
+ break;
+ }
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8117594(gBlockSendBuffer, TRUE);
+ CreateTask(sub_8117280, 5);
+ data->state = 38;
+ }
+ break;
+ case 38:
+ if (!FuncIsActiveTask(sub_8117280))
+ {
+ if (gUnknown_203B058 == 0x44)
+ sub_8118664(31, gUnknown_84578BC);
+ else
+ data->state = 5;
+ }
+ break;
+ case 30:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ sub_811B258(FALSE);
+ sub_811C028(taskData[0], taskData[1], data->field_0);
+ data->state = 2;
+ }
+ break;
+ case 5:
+ id = sub_811AA24(&data->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_8118664(6, gUnknown_8457B04[id][playerGender]);
+ break;
+ case 6:
+ var5 = sub_811A218(&data->textState, &data->field_1B, &data->field_1C, &gUnknown_8456DF4, &gUnknown_8456E1C);
+ if (var5 != -1)
+ {
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ data->state = 28;
+ }
+ else
+ {
+ data->field_98 = 0;
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ if (var5 == -2 || var5 == 0x40)
+ {
+ data->field_4C[0] = 0x40;
+ sub_80F9E2C(data->field_4C);
+ StringCopy(gStringVar4, gUnknown_845842C[gLinkPlayers[0].gender]);
+ data->state = 32;
+ }
+ else
+ {
+ gUnknown_203B058 = var5;
+ gUnknown_203B059 = (u32)(var5) >> 8;
+ if (gUnknown_203B058 == 0x41 && !HasAtLeastTwoMonsOfLevel30OrLower())
+ {
+ sub_8118664(5, gUnknown_845847C);
+ }
+ else
+ {
+ data->field_4C[0] = gUnknown_203B058 | 0x40;
+ sub_80F9E2C(data->field_4C);
+ data->state = 27;
+ }
+ }
+ }
+ }
+ break;
+ case 28:
+ StringCopy(gStringVar4, gUnknown_8458434);
+ data->state = 36;
+ break;
+ case 27:
+ sub_811B0A4(data);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ id = sub_811A9FC(data->field_4C[0] & 0x3F);
+ if (PrintOnTextbox(&data->textState, gUnknown_84580F4[playerGender][id]))
+ {
+ taskData[3] = 0;
+ data->state = 29;
+ }
+ break;
+ case 32:
+ sub_800AAC0();
+ data->state = 36;
+ break;
+ case 31:
+ data->field_4C[0] = 0x44;
+ data->field_4C[1] = sUnionRoomTrade.species;
+ data->field_4C[2] = sUnionRoomTrade.level;
+ sub_80F9E2C(data->field_4C);
+ data->state = 29;
+ break;
+ case 29:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ StringCopy(gStringVar4, gUnknown_8458434);
+ data->state = 28;
+ }
+ else
+ {
+ sub_811B0A4(data);
+ if (data->field_98 == 0x51)
+ {
+ if (gUnknown_203B058 == 8)
+ {
+ sub_811B31C(gStringVar4, data, FALSE);
+ data->state = 40;
+ }
+ else
+ {
+ data->state = 13;
+ }
+ }
+ else if (data->field_98 == 0x52)
+ {
+ data->state = 32;
+ sub_811AE68(gStringVar4, gUnknown_203B058 | 0x40, gLinkPlayers[0].gender);
+ gUnknown_203B058 = 0;
+ }
+ }
+ break;
+
+ case 7:
+ id = sub_811AA24(&data->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_8118664(6, gUnknown_8457B04[id][playerGender]);
+ break;
+ case 40:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ data->state = 41;
+ sub_800AB9C();
+ data->field_98 = 0;
+ data->field_9A[0] = 0;
+ }
+ break;
+ case 41:
+ if (IsLinkTaskFinished())
+ {
+ if (GetMultiplayerId() == 0)
+ {
+ StringCopy(gStringVar1, gLinkPlayers[GetMultiplayerId() ^ 1].name);
+ id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457C20[id]);
+ data->state = 33;
+ }
+ else
+ {
+ data->state = 7;
+ }
+ }
+ break;
+ case 19:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203B058 = 0x45;
+ sub_80FB008(0x45, 0, 1);
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, gUnknown_203B058);
+ data->field_12 = taskData[1];
+ data->state = 20;
+ taskData[3] = 0;
+ break;
+ case 1:
+ case -1:
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_811868C(gUnknown_8458548[playerGender]);
+ break;
+ }
+ break;
+ case 20:
+ if (++taskData[2] > 60)
+ {
+ data->state = 21;
+ taskData[2] = 0;
+ }
+ break;
+ case 21:
+ switch (sub_80FB9F4())
+ {
+ case 4:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ case 1:
+ case 2:
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_84585E8[playerGender]);
+ else
+ sub_8118664(30, gUnknown_84585E8[playerGender]);
+ break;
+ case 3:
+ data->state = 22;
+ break;
+ }
+ taskData[3]++;
+ break;
+ case 22:
+ if (sub_80FBA00())
+ {
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_84585E8[playerGender]);
+ else
+ sub_8118664(30, gUnknown_84585E8[playerGender]);
+ }
+ if (gReceivedRemoteLinkPlayers != 0)
+ data->state = 16;
+ break;
+ case 11:
+ PlaySE(SE_PINPON);
+ sub_80F8FA0();
+ data->state = 12;
+ data->field_9A[0] = 0;
+ break;
+ case 12:
+ if (sub_80FBA00())
+ {
+ sub_811B258(FALSE);
+ data->state = 2;
+ }
+ else if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8117594(gBlockSendBuffer, TRUE);
+ CreateTask(sub_8117280, 5);
+ data->state = 39;
+ }
+ break;
+ case 39:
+ sub_8119904(data);
+ if (!FuncIsActiveTask(sub_8117280))
+ {
+ data->state = 33;
+ StringCopy(gStringVar1, gLinkPlayers[1].name);
+ id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457BCC[id]);
+ }
+ break;
+ case 33:
+ sub_8119904(data);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 34;
+ break;
+ case 34:
+ sub_8119904(data);
+ if (sub_8119944(data) && JOY_NEW(B_BUTTON))
+ {
+ sub_80FBD6C(1);
+ StringCopy(gStringVar4, gUnknown_8457E60);
+ data->state = 36;
+ }
+ break;
+ case 35:
+ sub_8118664(9, gStringVar4);
+ break;
+ case 9:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->field_4C[0] = 0x51;
+ if (gUnknown_203B058 == 0x45)
+ sub_80FB008(gUnknown_203B058 | 0x40, sub_811B2A8(1), 0);
+ else
+ sub_80FB008(gUnknown_203B058 | 0x40, sub_811B2A8(1), 1);
+
+ data->field_8->arr[0].field_1B = 0;
+ taskData[3] = 0;
+ if (gUnknown_203B058 == 0x41)
+ {
+ if (!HasAtLeastTwoMonsOfLevel30OrLower())
+ {
+ data->field_4C[0] = 0x52;
+ sub_80F9E2C(data->field_4C);
+ data->state = 10;
+ StringCopy(gStringVar4, gUnknown_84584C0);
+ }
+ else
+ {
+ sub_80F9E2C(data->field_4C);
+ data->state = 13;
+ }
+ }
+ else if (gUnknown_203B058 == 0x48)
+ {
+ sub_80F9E2C(data->field_4C);
+ sub_811B31C(gStringVar4, data, 1);
+ data->state = 40;
+ }
+ else
+ {
+ sub_80F9E2C(data->field_4C);
+ data->state = 13;
+ }
+ break;
+ case 1:
+ case -1:
+ data->field_4C[0] = 0x52;
+ sub_80F9E2C(data->field_4C);
+ data->state = 10;
+ sub_81162E0(gStringVar4, gUnknown_203B058);
+ break;
+ }
+ break;
+ case 10:
+ sub_800AAC0();
+ data->state = 36;
+ break;
+ case 36:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gUnknown_203B058 = 0x40;
+ sub_8118664(0x25, gStringVar4);
+ memset(data->field_4C, 0, sizeof(data->field_4C));
+ data->field_9A[0] = 0;
+ data->field_98 = 0;
+ }
+ break;
+ case 37:
+ data->state = 2;
+ sub_811B258(FALSE);
+ break;
+ case 13:
+ sub_811AECC(gStringVar4, gUnknown_203B058 | 0x40);
+ sub_8118664(14, gStringVar4);
+ break;
+ case 14:
+ sub_800AB9C();
+ data->state = 15;
+ break;
+ case 15:
+ if (IsLinkTaskFinished())
+ data->state = 16;
+ break;
+ case 16:
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_C);
+ Free(data->field_4);
+ DestroyTask(data->field_20);
+ sub_811BB40(data->spriteIds);
+ data->state = 17;
+ break;
+ case 17:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ data->state = 18;
+ break;
+ case 18:
+ if (!UpdatePaletteFade())
+ {
+ sub_811BA78();
+ DestroyTask(taskId);
+ Free(sUnionRoomMain.uRoom);
+ sub_81179A4();
+ }
+ break;
+ case 42:
+ if (sub_80F9800()->species == SPECIES_NONE)
+ {
+ data->state = 43;
+ }
+ else
+ {
+ if (sub_80F9800()->species == SPECIES_EGG)
+ {
+ StringCopy(gStringVar4, gUnknown_8458DE8);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gSpeciesNames[sub_80F9800()->species]);
+ ConvertIntToDecimalStringN(gStringVar2, sub_80F9800()->level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458DBC);
+ }
+ sub_8118664(44, gStringVar4);
+ }
+ break;
+ case 43:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458AB8))
+ data->state = 47;
+ break;
+ case 47:
+ var5 = sub_811A218(&data->textState, &data->field_1D, &data->field_1E, &gUnknown_8456E34, &gUnknown_8456E54);
+ if (var5 != -1)
+ {
+ if (var5 == -2 || var5 == 3)
+ {
+ data->state = 4;
+ sub_811B258(TRUE);
+ }
+ else
+ {
+ switch (var5)
+ {
+ case 1: // REGISTER
+ sub_8118664(53, gUnknown_8458D1C);
+ break;
+ case 2: // INFO
+ sub_8118664(47, gUnknown_8458B44);
+ break;
+ }
+ }
+ DestroyHelpMessageWindow_();
+ }
+ break;
+ case 53:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ data->state = 54;
+ break;
+ case 54:
+ if (!gPaletteFade.active)
+ {
+ sUnionRoomTrade.field_0 = 1;
+ gFieldCallback = sub_807DCE4;
+ ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_REGISTER, CB2_ReturnToField);
+ }
+ break;
+ case 52:
+ var5 = sub_811A218(&data->textState, &data->field_1D, &data->field_1E, &gUnknown_8456E6C, &gUnknown_8456F04);
+ if (var5 != -1)
+ {
+ switch (var5)
+ {
+ case -2:
+ case 18:
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_80FAFA0(0, 0, 0);
+ sub_811868C(gUnknown_8458D54);
+ break;
+ default:
+ sUnionRoomTrade.type = var5;
+ data->state = 55;
+ break;
+ }
+ }
+ break;
+ case 55:
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_811868C(gUnknown_8458D78);
+ break;
+ case 44:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 56;
+ break;
+ case 1:
+ case -1:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ }
+ break;
+ case 56:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458E10))
+ {
+ sub_80FAFA0(0, 0, 0);
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_811B258(TRUE);
+ data->state = 4;
+ }
+ break;
+ case 45:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458A98))
+ data->state = 46;
+ break;
+ case 46:
+ sub_811A3F8();
+ data->state = 48;
+ break;
+ case 48:
+ var5 = sub_811A2EC(&data->textState, &data->field_1D, &data->field_4A, &data->field_1E, &gUnknown_8456F24, &gUnknown_8456F7C, data->field_0);
+ if (var5 != -1)
+ {
+ switch (var5)
+ {
+ case -2:
+ case 8:
+ sub_811B258(TRUE);
+ DestroyHelpMessageWindow_();
+ data->state = 4;
+ break;
+ default:
+ switch (sub_811ADD0(data->field_0->arr[var5].unk.gname.type, data->field_0->arr[var5].unk.gname.species))
+ {
+ case 0:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ sub_8118664(49, gUnknown_8458E70);
+ taskData[1] = var5;
+ break;
+ case 1:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.gname.type]);
+ sub_8118664(46, gUnknown_8458ED0);
+ break;
+ case 2:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.gname.type]);
+ sub_8118664(46, gUnknown_8458F04);
+ break;
+ }
+ break;
+ }
+ }
+ break;
+ case 49:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 50;
+ break;
+ case -1:
+ case 1:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ }
+ break;
+ case 50:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458D1C))
+ {
+ sUnionRoomTrade.field_0 = 2;
+ memcpy(&gUnknown_203B064, &data->field_0->arr[taskData[1]].unk.gname.unk_00, sizeof(gUnknown_203B064));
+ gUnionRoomRequestedMonType = data->field_0->arr[taskData[1]].unk.gname.type;
+ gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].unk.gname.species;
+ gFieldCallback = sub_807DCE4;
+ ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_TRADE, CB2_ReturnToField);
+ sub_81186B0(data);
+ sUnionRoomTrade.field_8 = taskData[1];
+ }
+ break;
+ case 51:
+ gUnknown_203B058 = 0x44;
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, 0x44);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[taskData[1]]);
+ sub_811A0B4(gUnknown_8457A34[2]);
+ data->state = 25;
+ break;
+ case 26:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_811B258(TRUE);
+ sub_811C028(taskData[0], taskData[1], data->field_0);
+ data->state = 4;
+ }
+ break;
+ case 8:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = data->stateAfterPrint;
+ break;
+ }
+}
+
+void var_800D_set_xB(void)
+{
+ if (InUnionRoom() == TRUE)
+ gSpecialVar_Result = 11;
+}
+
+static void sub_8119904(struct UnkStruct_URoom * arg0)
+{
+ if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == 0x2F00)
+ {
+ arg0->field_9A[0] = gRecvCmds[1][1];
+ if (gRecvCmds[1][1] == 0x44)
+ {
+ arg0->field_9A[1] = gRecvCmds[1][2];
+ arg0->field_9A[2] = gRecvCmds[1][3];
+ }
+ }
+}
+
+static bool32 sub_8119944(struct UnkStruct_URoom * arg0)
+{
+ if (arg0->field_9A[0] != 0)
+ {
+ s32 var = sub_811AF6C(gStringVar4, gLinkPlayers[1].gender, &arg0->field_9A[0], arg0);
+ if (var == 0)
+ {
+ return TRUE;
+ }
+ else if (var == 1)
+ {
+ arg0->state = 35;
+ gUnknown_203B058 = arg0->field_9A[0];
+ return FALSE;
+ }
+ else if (var == 2)
+ {
+ arg0->state = 36;
+ sub_800AAC0();
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void InitUnionRoom(void)
+{
+ struct UnkStruct_URoom * ptr;
+
+ sUnionRoomPlayerName[0] = EOS;
+ if (gQuestLogState == 2 || gQuestLogState == 3)
+ return;
+ CreateTask(sub_81199FC, 0);
+ sUnionRoomMain.uRoom = sUnionRoomMain.uRoom; // Needed to match.
+ sUnionRoomMain.uRoom = ptr = AllocZeroed(sizeof(struct UnkStruct_URoom));
+ sURoom = sUnionRoomMain.uRoom;
+ ptr->state = 0;
+ ptr->textState = 0;
+ ptr->field_10 = 0;
+ ptr->field_12 = 0;
+ sUnionRoomPlayerName[0] = EOS;
+}
+
+static void sub_81199FC(u8 taskId)
+{
+ s32 i;
+ u8 text[32];
+ struct UnkStruct_URoom * structPtr = sUnionRoomMain.uRoom;
+
+ switch (structPtr->state)
+ {
+ case 0:
+ structPtr->state = 1;
+ break;
+ case 1:
+ SetHostRFUtgtGname(0xC, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBC00();
+ sub_80FB128(1);
+ structPtr->state = 2;
+ break;
+ case 2:
+ structPtr->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ sub_811A650(structPtr->field_4->arr, 4);
+ structPtr->field_C = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ sub_811A650(structPtr->field_C->arr, 4);
+ structPtr->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
+ sub_811A5E4(structPtr->field_0->arr, 8);
+ structPtr->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
+ sub_811A5E4(&structPtr->field_8->arr[0], 1);
+ structPtr->field_20 = sub_8119E84(structPtr->field_C, structPtr->field_4, 10);
+ structPtr->state = 3;
+ break;
+ case 3:
+ switch (sub_8119B94())
+ {
+ case 1:
+ case 2:
+ if (sUnionRoomPlayerName[0] == EOS)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ {
+ if (structPtr->field_0->arr[i].field_1A_0 == 1)
+ {
+ IntlConvPartnerUname(text, structPtr->field_0->arr[i]);
+ if (PlayerHasMetTrainerBefore(ReadAsU16(structPtr->field_0->arr[i].unk.gname.unk_00.playerTrainerId), text))
+ {
+ StringCopy(sUnionRoomPlayerName, text);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 3:
+ break;
+ }
+ break;
+ case 4:
+ Free(structPtr->field_8);
+ Free(structPtr->field_0);
+ Free(structPtr->field_C);
+ Free(structPtr->field_4);
+ DestroyTask(structPtr->field_20);
+ Free(sUnionRoomMain.uRoom);
+ sub_80F8DC0();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool16 BufferUnionRoomPlayerName(void)
+{
+ if (sUnionRoomPlayerName[0] != EOS)
+ {
+ StringCopy(gStringVar1, sUnionRoomPlayerName);
+ sUnionRoomPlayerName[0] = EOS;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static u8 sub_8119B94(void)
+{
+ s32 i;
+ u8 j;
+ struct UnkStruct_URoom * structPtr = sUnionRoomMain.uRoom;
+ s32 r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_811A694(&structPtr->field_C->arr[i].unk0, &gUnknown_8457034) == TRUE)
+ {
+ structPtr->field_8->arr[0].unk = structPtr->field_C->arr[i].unk0;
+ structPtr->field_8->arr[0].field_18 = 0;
+ structPtr->field_8->arr[0].field_1A_0 = 1;
+ structPtr->field_8->arr[0].field_1B = 1;
+ return 4;
+ }
+ }
+ for (j = 0; j < 8; j++)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 != 0)
+ {
+ i = sub_811A748(&structPtr->field_0->arr[j], &structPtr->field_4->arr[0]);
+ if (i != 0xFF)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 == 1)
+ {
+ if (sub_811A6DC(&structPtr->field_0->arr[j].unk, &structPtr->field_4->arr[i].unk0))
+ {
+ structPtr->field_0->arr[j].unk = structPtr->field_4->arr[i].unk0;
+ structPtr->field_0->arr[j].field_1B = 0x40;
+ r7 = 1;
+ }
+ else if (structPtr->field_0->arr[j].field_1B != 0)
+ {
+ structPtr->field_0->arr[j].field_1B--;
+ if (structPtr->field_0->arr[j].field_1B == 0)
+ r7 = 2;
+ }
+ }
+ else
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 1;
+ structPtr->field_0->arr[j].field_1B = 0;
+ r7 = 2;
+ }
+ structPtr->field_0->arr[j].field_18 = 0;
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 != 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 600)
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 2;
+ r7 = 2;
+ }
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 == 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 900)
+ {
+ sub_811A5E4(&structPtr->field_0->arr[j], 1);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_811A798(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i], 8) != 0xFF)
+ r7 = 1;
+ }
+
+ return r7;
+}
+
+static void sub_8119D34(u8 taskId)
+{
+ s32 i, j;
+ struct UnkStruct_Shared sp0;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ bool8 r4;
+
+ for (i = 0; i < 4; i++)
+ {
+ r4 = sub_80FCC3C(&sp0.gname, sp0.playerName, i);
+ if (!sub_8116F28(sp0.gname.unk_0a_0, gTasks[taskId].data[4]))
+ {
+ sp0 = gUnknown_8457034;
+ }
+ if (sp0.gname.unk_00.unk_00_0 == 1)
+ {
+ sp0 = gUnknown_8457034;
+ }
+ if (!r4)
+ {
+ for (j = 0; j < i; j++)
+ {
+ if (!sub_811A694(&ptr[1]->arr[j].unk0, &sp0))
+ {
+ sp0 = gUnknown_8457034;
+ }
+ }
+ ptr[1]->arr[i].unk0 = sp0;
+ ptr[1]->arr[i].unk18 = sub_811A694(&ptr[1]->arr[i].unk0, &gUnknown_8457034);
+ }
+ else
+ {
+ ptr[0]->arr[i].unk0 = sp0;
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+ }
+}
+
+static u8 sub_8119E84(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2)
+{
+ u8 taskId = CreateTask(sub_8119D34, 0);
+ struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data;
+ data[0] = a0;
+ data[1] = a1;
+ gTasks[taskId].data[4] = a2;
+ return taskId;
+}
+
+static void sub_8119EB8(u8 taskId)
+{
+ s32 i, j;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ sub_80FCC3C(&ptr[0]->arr[i].unk0.gname, ptr[0]->arr[i].unk0.playerName, i);
+ if (!sub_8116F28(ptr[0]->arr[i].unk0.gname.unk_0a_0, gTasks[taskId].data[2]))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_8457034;
+ }
+ for (j = 0; j < i; j++)
+ {
+ if (!sub_811A694(&ptr[0]->arr[j].unk0, &ptr[0]->arr[i].unk0))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_8457034;
+ }
+ }
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+}
+
+static bool32 sub_8119FB0(struct GFtgtGname * arg0, s16 arg1)
+{
+ if (arg1 == 7)
+ {
+ if (!arg0->unk_00.unk_00_5)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else if (arg1 == 8)
+ {
+ if (!arg0->unk_00.unk_00_4)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_8119FD8(u8 taskId)
+{
+ s32 i;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_80FCCF4(&ptr[0]->arr[i].unk0.gname, ptr[0]->arr[i].unk0.playerName, i))
+ {
+ sub_8119FB0(&ptr[0]->arr[i].unk0.gname, gTasks[taskId].data[2]);
+ }
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+}
+
+static u8 sub_811A054(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8119EB8, 0);
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+static u8 sub_811A084(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8119FD8, 0);
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+static bool32 sub_811A0B4(const u8 *src)
+{
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, src);
+ AddTextPrinterWithCustomSpeedForMessage(FALSE, 1);
+ return FALSE;
+}
+
+static bool32 sub_811A0E0(void)
+{
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool8 PrintOnTextbox(u8 *textState, const u8 *str)
+{
+ switch (*textState)
+ {
+ case 0:
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, str);
+ AddTextPrinterForMessage(TRUE);
+ (*textState)++;
+ break;
+ case 1:
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ *textState = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static s8 sub_811A14C(u8 *arg0, bool32 arg1)
+{
+ s8 r1;
+
+ switch (*arg0)
+ {
+ case 0:
+ if (arg1)
+ {
+ return -3;
+ }
+ DisplayYesNoMenuDefaultYes();
+ (*arg0)++;
+ break;
+ case 1:
+ if (arg1)
+ {
+ DestroyYesNoMenu();
+ *arg0 = 0;
+ return -3;
+ }
+ r1 = Menu_ProcessInputNoWrapClearOnChoose();
+ if (r1 == -1 || r1 == 0 || r1 == 1)
+ {
+ *arg0 = 0;
+ return r1;
+ }
+ break;
+ }
+ return -2;
+}
+
+static u8 sub_811A1AC(const struct WindowTemplate * template)
+{
+ u8 windowId = AddWindow(template);
+ DrawStdWindowFrame(windowId, FALSE);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
+ sub_811A444(windowId, 0, gUnknown_8459378, 8, 1, 6);
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 2);
+ return windowId;
+}
+
+static void sub_811A1FC(u8 windowId)
+{
+ ClearStdWindowAndFrame(windowId, TRUE);
+ RemoveWindow(windowId);
+}
+
+static s32 sub_811A218(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate)
+{
+ s32 r1, r8;
+
+ switch (*arg0)
+ {
+ case 0:
+ *arg1 = AddWindow(winTemplate);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 1:
+ r8 = ListMenu_ProcessInput(*arg2);
+ if (JOY_NEW(A_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return r8;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return -2;
+ }
+ break;
+ }
+
+ return -1;
+}
+
+static s32 sub_811A2EC(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate, struct UnkStruct_Main0 * arg6)
+{
+ s32 input;
+ s32 r4;
+
+ switch (*arg0)
+ {
+ case 0:
+ *arg3 = sub_811A1AC(&gUnknown_8456F1C);
+ *arg1 = AddWindow(winTemplate);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 1);
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 1:
+ input = ListMenu_ProcessInput(*arg2);
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ if (input == 8 || JOY_NEW(B_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ sub_811A1FC(*arg3);
+ *arg0 = 0;
+ return -2;
+ }
+ else
+ {
+ r4 = sub_811AD7C(arg6->arr, input);
+ if (r4 >= 0)
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ sub_811A1FC(*arg3);
+ *arg0 = 0;
+ return r4;
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ }
+ break;
+ }
+
+ return -1;
+}
+
+static void sub_811A3F8(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_811A41C(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0);
+ CopyBgTilemapBufferToVram(0);
+ EnableBothScriptContexts();
+}
+
+static void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx)
+{
+ struct TextPrinterTemplate printerTemplate;
+
+ printerTemplate.currentChar = str;
+ printerTemplate.windowId = windowId;
+ printerTemplate.fontId = fontId;
+ printerTemplate.x = x;
+ printerTemplate.y = y;
+ printerTemplate.currentX = x;
+ printerTemplate.currentY = y;
+ printerTemplate.unk = 0;
+
+ gTextFlags.useAlternateDownArrow = FALSE;
+ switch (colorIdx)
+ {
+ case 0:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 2;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 1:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 4;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 5;
+ break;
+ case 2:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 6;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 7;
+ break;
+ case 3:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 1;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 4:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 1;
+ printerTemplate.bgColor = 2;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 5:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 7;
+ printerTemplate.bgColor = 15;
+ printerTemplate.shadowColor = 9;
+ break;
+ case 6:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 14;
+ printerTemplate.bgColor = 15;
+ printerTemplate.shadowColor = 9;
+ break;
+ }
+
+ AddTextPrinter(&printerTemplate, 0xFF, NULL);
+}
+
+static void sub_811A5E4(struct UnkStruct_x20 * arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ {
+ arg0[i].unk = gUnknown_8457034;
+ arg0[i].field_18 = 0xFF;
+ arg0[i].field_1A_0 = 0;
+ arg0[i].field_1A_1 = 0;
+ arg0[i].field_1B = 0;
+ }
+}
+
+static void sub_811A650(struct UnkStruct_x1C * arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ arg0[i].unk0 = gUnknown_8457034;
+ arg0[i].unk18 = 0;
+ }
+}
+
+static bool8 sub_811A694(struct UnkStruct_Shared * arg0, const struct UnkStruct_Shared * arg1)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (arg0->gname.unk_00.playerTrainerId[i] != arg1->gname.unk_00.playerTrainerId[i])
+ {
+ return TRUE;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg0->playerName[i] != arg1->playerName[i])
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_811A6DC(struct UnkStruct_Shared * arg0, struct UnkStruct_Shared * arg1)
+{
+ s32 i;
+
+ if (arg0->gname.unk_0a_0 != arg1->gname.unk_0a_0)
+ {
+ return TRUE;
+ }
+
+ if (arg0->gname.unk_0a_7 != arg1->gname.unk_0a_7)
+ {
+ return TRUE;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->gname.unk_04[i] != arg1->gname.unk_04[i])
+ {
+ return TRUE;
+ }
+ }
+
+ if (arg0->gname.species != arg1->gname.species)
+ {
+ return TRUE;
+ }
+
+ if (arg0->gname.type != arg1->gname.type)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1)
+{
+ u8 result = 0xFF;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg1[i].unk18 && !sub_811A694(&arg0->unk, &arg1[i].unk0))
+ {
+ result = i;
+ arg1[i].unk18 = FALSE;
+ }
+ }
+
+ return result;
+}
+
+static u8 sub_811A798(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1, u8 arg2)
+{
+ s32 i;
+
+ if (arg1->unk18)
+ {
+ for (i = 0; i < arg2; i++)
+ {
+ if (arg0[i].field_1A_0 == 0)
+ {
+ arg0[i].unk = arg1->unk0;
+ arg0[i].field_18 = 0;
+ arg0[i].field_1A_0 = 1;
+ arg0[i].field_1B = 64;
+ arg1->unk18 = FALSE;
+ return i;
+ }
+ }
+ }
+
+ return 0xFF;
+}
+
+static void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id)
+{
+ u8 r2;
+ u8 sp0[6];
+ u8 sp10[30];
+
+ ConvertIntToDecimalStringN(gStringVar4, id + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(gStringVar4, gUnknown_84571B0);
+ sub_811A444(arg0, 0, gStringVar4, arg1, arg2, 0);
+ arg1 += 18;
+ r2 = arg3->unk.gname.unk_0a_0;
+ if (arg3->field_1A_0 == 1 && !(r2 & 0x40))
+ {
+ IntlConvPartnerUname(sp10, *arg3);
+ sub_811A444(arg0, 2, sp10, arg1, arg2, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.gname.unk_00.playerTrainerId[0] | (arg3->unk.gname.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gUnknown_84571B4);
+ StringAppend(gStringVar4, sp0);
+ arg1 += 77;
+ sub_811A444(arg0, 0, gStringVar4, arg1, arg2, arg4);
+ }
+}
+
+static void sub_811A910(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * arg3, u8 arg4, u8 id)
+{
+ u8 sp0[6];
+ u8 sp10[30];
+
+ if (arg3->field_1A_0 == 1)
+ {
+ IntlConvPartnerUname(sp10, *arg3);
+ sub_811A444(windowId, 2, sp10, x, y, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.gname.unk_00.playerTrainerId[0] | (arg3->unk.gname.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gUnknown_84571B4);
+ StringAppend(gStringVar4, sp0);
+ x += 71;
+ sub_811A444(windowId, 0, gStringVar4, x, y, arg4);
+ }
+}
+
+static bool32 sub_811A9B8(void)
+{
+ s16 x, y;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (x != 9)
+ {
+ return FALSE;
+ }
+ if (y != 8)
+ {
+ return FALSE;
+ }
+ if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 sub_811A9FC(s32 arg0)
+{
+ switch (arg0)
+ {
+ case 5:
+ return 1;
+ case 4:
+ return 2;
+ case 8:
+ return 3;
+ case 3:
+ default:
+ return 0;
+ }
+}
+
+static u32 sub_811AA24(struct UnkStruct_x20 * arg0)
+{
+ u8 sp0[30];
+ IntlConvPartnerUname(sp0, *arg0);
+ return PlayerHasMetTrainerBefore(ReadAsU16(arg0->unk.gname.unk_00.playerTrainerId), sp0);
+}
+
+static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender)
+{
+ bool32 r2;
+
+ struct UnkStruct_x20 * r5 = &arg0->arr[arg2];
+
+ if (!r5->unk.gname.unk_0a_7 && arg1 == 0)
+ {
+ IntlConvPartnerUname(gStringVar1, *r5);
+ r2 = PlayerHasMetTrainerBefore(ReadAsU16(r5->unk.gname.unk_00.playerTrainerId), gStringVar1);
+ if (r5->unk.gname.unk_0a_0 == 0x45)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[r2][playerGender]);
+ return 2;
+ }
+ else
+ {
+ sub_811A0B4(gUnknown_8457A34[r2]);
+ return 1;
+ }
+ }
+ else
+ {
+ IntlConvPartnerUname(gStringVar1, *r5);
+ if (arg1 != 0)
+ {
+ playerGender = (r5->unk.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1;
+ }
+ switch (r5->unk.gname.unk_0a_0 & 0x3F)
+ {
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458758[playerGender][Random() % 4]);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458A78[playerGender][Random() % 2]);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gUnknown_84588BC[playerGender][Random() % 4]);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gUnknown_84589AC[playerGender][Random() % 2]);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457F90);
+ break;
+ }
+ return 0;
+ }
+}
+
+static void nullsub_92(u8 windowId, s32 itemId, u8 y)
+{
+
+}
+
+static void sub_811ABE4(u8 windowId, u8 y, struct GFtgtGname * gname, const u8 * uname, u8 colorIdx)
+{
+ u8 level_t[4];
+ u16 species = gname->species;
+ u8 type = gname->type;
+ u8 level = gname->level;
+
+ sub_811A444(windowId, 2, uname, 8, y, colorIdx);
+ if (species == SPECIES_EGG)
+ {
+ sub_811A444(windowId, 2, gUnknown_8458FBC, 0x44, y, colorIdx);
+ }
+ else
+ {
+ BlitMoveInfoIcon(windowId, type + 1, 0x44, y);
+ sub_811A444(windowId, 2, gSpeciesNames[species], 0x76, y, colorIdx);
+ ConvertIntToDecimalStringN(level_t, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ sub_811A444(windowId, 2, level_t, GetStringRightAlignXOffset(2, level_t, 218), y, colorIdx);
+ }
+}
+
+static void sub_811ACA4(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Leader * leader = sUnionRoomMain.leader;
+ struct GFtgtGname * rfu;
+ s32 i, j;
+ u8 uname[8];
+
+ if (itemId == -3 && y == gUnknown_8456F7C.upText_Y)
+ {
+ rfu = sub_80F9800();
+ if (rfu->species != SPECIES_NONE)
+ {
+ sub_811ABE4(windowId, y, rfu, gSaveBlock2Ptr->playerName, 5);
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (leader->field_0->arr[i].field_1A_0 == 1 && leader->field_0->arr[i].unk.gname.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == itemId + 1)
+ {
+ IntlConvPartnerUname(uname, leader->field_0->arr[i]);
+ sub_811ABE4(windowId, y, &leader->field_0->arr[i].unk.gname, uname, 6);
+ break;
+ }
+ }
+ }
+}
+
+static s32 sub_811AD7C(struct UnkStruct_x20 * arg, s32 arg1)
+{
+ s32 i;
+ s32 j = 0;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg[i].field_1A_0 == 1 && arg[i].unk.gname.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == arg1 + 1)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+static s32 GetUnionRoomPlayerGender(s32 arg1, struct UnkStruct_Main0 * arg0)
+{
+ return arg0->arr[arg1].unk.gname.playerGender;
+}
+
+static s32 sub_811ADD0(u32 type, u32 species)
+{
+ s32 i;
+
+ if (species == SPECIES_EGG)
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species == SPECIES_EGG)
+ {
+ return 0;
+ }
+ }
+ return 2;
+ }
+ else
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (gBaseStats[species].type1 == type || gBaseStats[species].type2 == type)
+ {
+ return 0;
+ }
+ }
+ return 1;
+ }
+}
+
+static void sub_811AE68(u8 *dst, s32 arg1, u32 playerGender)
+{
+ switch (arg1)
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_8458314[playerGender]);
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_84585E8[playerGender]);
+ break;
+ case 0x44:
+ StringExpandPlaceholders(dst, gUnknown_8458F9C);
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_84583B4[playerGender]);
+ break;
+ }
+}
+
+static void sub_811AECC(u8 *dst, u8 arg1)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 gender = gLinkPlayers[mpId ^ 1].gender;
+
+ switch (arg1)
+ {
+ case 0x41:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][0]);
+ break;
+ case 0x44:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][2]);
+ break;
+ case 0x45:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][1]);
+ break;
+ }
+}
+
+static s32 sub_811AF6C(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3)
+{
+ s32 result = 0;
+ u16 species = SPECIES_NONE;
+ s32 i;
+
+ switch (arg2[0])
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_8457CA4);
+ result = 1;
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_8457CF8);
+ result = 1;
+ break;
+ case 0x44:
+ ConvertIntToDecimalStringN(arg3->field_58[0], sUnionRoomTrade.playerLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58[1], gSpeciesNames[sUnionRoomTrade.playerSpecies]);
+ for (i = 0; i < 4; i++)
+ {
+ if (gRfuLinkStatus->partner[i].serialNo == 2)
+ {
+ ConvertIntToDecimalStringN(arg3->field_58[2], arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58[3], gSpeciesNames[arg2[1]]);
+ species = arg2[1];
+ break;
+ }
+ }
+ if (species == SPECIES_EGG)
+ {
+ StringCopy(dst, gUnknown_8457DB8);
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i, arg3->field_58[i]);
+ }
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(dst, gUnknown_8457D44);
+ }
+ result = 1;
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_8457C48);
+ result = 1;
+ break;
+ case 0x40:
+ StringExpandPlaceholders(dst, gUnknown_8457E0C);
+ result = 2;
+ break;
+ }
+
+ return result;
+}
+
+static bool32 sub_811B0A4(struct UnkStruct_URoom * arg0)
+{
+ if (gRecvCmds[0][1] != 0)
+ {
+ if (gRecvCmds[0][1] == 0x51)
+ {
+ arg0->field_98 = 0x51;
+ return TRUE;
+ }
+ else if (gRecvCmds[0][1] == 0x52)
+ {
+ arg0->field_98 = 0x52;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool32 InUnionRoom(void)
+{
+ return gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNION_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNION_ROOM)
+ ? TRUE : FALSE;
+}
+
+static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void)
+{
+ s32 i;
+ s32 count = 0;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ count++;
+ }
+ }
+
+ if (count > 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void ResetUnionRoomTrade(struct UnionRoomTrade * arg0)
+{
+ arg0->field_0 = 0;
+ arg0->type = 0;
+ arg0->playerPersonality = 0;
+ arg0->playerSpecies = 0;
+ arg0->playerLevel = 0;
+ arg0->species = 0;
+ arg0->level = 0;
+ arg0->personality = 0;
+}
+
+void Script_ResetUnionRoomTrade(void)
+{
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+}
+
+static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade)
+{
+ trade->playerSpecies = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ trade->playerLevel = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ trade->playerPersonality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+ if (trade->playerSpecies == SPECIES_EGG)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void RegisterTradeMon(u32 monId, struct UnionRoomTrade * trade)
+{
+ trade->species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ trade->level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ trade->personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+}
+
+static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 multiplayerId)
+{
+ u16 response = 0;
+ u16 species;
+ u32 personality;
+ u32 cur_personality;
+ u16 cur_species;
+ s32 i;
+
+ // player
+ if (multiplayerId == 0)
+ {
+ species = trade->playerSpecies;
+ personality = trade->playerPersonality;
+ }
+ // partner
+ else
+ {
+ species = trade->species;
+ personality = trade->personality;
+ }
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ cur_personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ if (cur_personality != personality)
+ {
+ continue;
+ }
+ cur_species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (cur_species != species)
+ {
+ continue;
+ }
+ response = i;
+ break;
+ }
+
+ return response;
+}
+
+static void sub_811B258(bool32 arg0)
+{
+ sub_811A3F8();
+ ScriptContext2_Disable();
+ sub_80696F0();
+ gUnknown_203B058 = 0;
+ if (arg0)
+ {
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_80FB008(0x40, 0, 0);
+ }
+}
+
+static void sub_811B298(void)
+{
+ ScriptContext2_Enable();
+ ScriptFreezeObjectEvents();
+}
+
+static u8 sub_811B2A8(s32 linkPlayer)
+{
+ u8 retval = 0x80;
+ retval |= gLinkPlayers[linkPlayer].gender << 3;
+ retval |= gLinkPlayers[linkPlayer].trainerId & 7;
+ return retval;
+}
+
+static u8 sub_811B2D8(struct UnkStruct_URoom * arg0)
+{
+ u8 retVal = 0x80;
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->field_C->arr[i].unk18)
+ {
+ retVal |= arg0->field_C->arr[i].unk0.gname.playerGender << 3;
+ retVal |= arg0->field_C->arr[i].unk0.gname.unk_00.playerTrainerId[0] & 7;
+ break;
+ }
+ }
+
+ return retVal;
+}
+
+static void sub_811B31C(u8 *unused, struct UnkStruct_URoom * arg1, bool8 arg2)
+{
+ struct TrainerCard * trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1];
+ s32 i;
+ s32 n;
+
+ DynamicPlaceholderTextUtil_Reset();
+
+ StringCopy(arg1->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
+
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
+
+ StringCopy(arg1->field_174, gUnknown_84594B0[trainerCard->stars]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_174);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, arg1->trainerCardStrbufs[3]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, arg1->trainerCardStrbufs[4]);
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_84594C4);
+ StringCopy(gStringVar4, arg1->field_1A4);
+
+ n = trainerCard->linkBattleWins;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
+
+ n = trainerCard->linkBattleLosses;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->trainerCardStrbufs[1]);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
+
+ for (i = 0; i < 4; i++)
+ {
+ CopyEasyChatWord(arg1->trainerCardStrbufs[i + 3], trainerCard->var_28[i]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, arg1->trainerCardStrbufs[i + 3]);
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459504);
+ StringAppend(gStringVar4, arg1->field_1A4);
+
+ if (arg2 == TRUE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459588);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+ else if (arg2 == FALSE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459580[trainerCard->gender]);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+}
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
new file mode 100644
index 000000000..b75cc086d
--- /dev/null
+++ b/src/union_room_battle.c
@@ -0,0 +1,225 @@
+#include "global.h"
+#include "bg.h"
+#include "battle.h"
+#include "gpu_regs.h"
+#include "link.h"
+#include "malloc.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "strings.h"
+#include "text_window.h"
+#include "union_room.h"
+#include "window.h"
+
+struct UnkStruct_203B08C
+{
+ s16 a0;
+};
+
+static EWRAM_DATA struct UnkStruct_203B08C * gUnknown_203B08C = NULL;
+
+static const struct BgTemplate gUnknown_8457194[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31
+ }
+};
+
+static const struct WindowTemplate gUnknown_8457198[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x014
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const u8 gUnknown_84571A8[] = {1, 2, 3};
+
+static void sub_811C04C(void)
+{
+ s32 i;
+ sub_81173C0(BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER);
+ for (i = 0; i < 2; i++)
+ {
+ gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1];
+ }
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ ZeroMonData(&gPlayerParty[i]);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ gPlayerParty[i] = gEnemyParty[i];
+ }
+ IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
+ CalculatePlayerPartyCount();
+ gTrainerBattleOpponent_A = TRAINER_OPPONENT_C00;
+ SetMainCallback2(CB2_InitBattle);
+}
+
+static void sub_811C0E0(u8 windowId, const u8 * str, u8 x, u8 y, s32 speed)
+{
+ s32 letterSpacing = 1;
+ s32 lineSpacing = 1;
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(gUnknown_84571A8[0]));
+ AddTextPrinterParameterized4(windowId, 3, x, y, letterSpacing, lineSpacing, gUnknown_84571A8, speed, str);
+}
+
+static bool32 sub_811C150(s16 * state, const u8 * str, s32 speed)
+{
+ switch (*state)
+ {
+ case 0:
+ DrawTextBorderOuter(0, 0x001, 0xD);
+ sub_811C0E0(0, str, 0, 2, speed);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsTextPrinterActive(0))
+ {
+ *state = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_811C1B4(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_811C1C8(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
+ gUnknown_203B08C = AllocZeroed(sizeof(struct UnkStruct_203B08C));
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8457194, 1);
+ ResetTempTileDataBuffers();
+ if (!InitWindows(gUnknown_8457198))
+ {
+ return;
+ }
+ DeactivateAllTextPrinters();
+ ClearWindowTilemap(0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
+ TextWindow_SetStdFrame0_WithPal(0, 1, 0xD0);
+ Menu_LoadStdPal();
+ SetVBlankCallback(sub_811C1B4);
+ gMain.state++;
+ break;
+ case 1:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_CommStandbyAwaitingOtherPlayer, 0))
+ {
+ gMain.state++;
+ }
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ ShowBg(0);
+ gMain.state++;
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ {
+ memset(gBlockSendBuffer, 0, 0x20);
+ if (gSelectedOrderFromParty[0] == -gSelectedOrderFromParty[1])
+ {
+ gBlockSendBuffer[0] = 0x52;
+ }
+ else
+ {
+ gBlockSendBuffer[0] = 0x51;
+ }
+ SendBlock(0, gBlockSendBuffer, 0x20);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ if (gBlockRecvBuffer[0][0] == 0x51 && gBlockRecvBuffer[1][0] == 0x51)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gMain.state = 50;
+ }
+ else
+ {
+ sub_800AAC0();
+ if (gBlockRecvBuffer[GetMultiplayerId()][0] == 0x52)
+ {
+ gMain.state = 6;
+ }
+ else
+ {
+ gMain.state = 8;
+ }
+ }
+ ResetBlockReceivedFlags();
+ }
+ break;
+ case 50:
+ if (!UpdatePaletteFade())
+ {
+ sub_800AB9C();
+ gMain.state++;
+ }
+ break;
+ case 51:
+ if (IsLinkTaskFinished())
+ {
+ SetMainCallback2(sub_811C04C);
+ }
+ break;
+ case 6:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gMain.state++;
+ }
+ break;
+ case 7:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_RefusedBattle, 1))
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ case 8:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gMain.state++;
+ }
+ break;
+ case 9:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_BattleWasRefused, 1))
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ }
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
diff --git a/src/union_room_message.c b/src/union_room_message.c
new file mode 100644
index 000000000..9ca5aa15b
--- /dev/null
+++ b/src/union_room_message.c
@@ -0,0 +1,543 @@
+#include "global.h"
+#include "union_room_message.h"
+#include "mevent_server.h"
+
+ALIGNED(4) const u8 gUnknown_84571AC[] = _("");
+ALIGNED(4) const u8 gUnknown_84571B0[] = _(":");
+ALIGNED(4) const u8 gUnknown_84571B4[] = _("{EXTRA 7}");
+ALIGNED(4) const u8 gUnknown_84571B8[] = _("Please start over from the beginning.");
+ALIGNED(4) const u8 gUnknown_84571E0[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled.");
+ALIGNED(4) const u8 gUnref_845721C[] = _("ともだちからの れんらくを\nまっています");
+ALIGNED(4) const u8 gUnknown_8457234[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player.");
+ALIGNED(4) const u8 gUnknown_8457264[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready.");
+
+ALIGNED(4) const u8 gJPText_SingleBattle[] = _("シングルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_MultiBattle[] = _("マルチバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_TradePokemon[] = _("ポケモンこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_Chat[] = _("チャットを かいさいする");
+ALIGNED(4) const u8 gJPText_DistWonderCard[] = _("ふしぎなカードをくばる");
+ALIGNED(4) const u8 gJPText_DistWonderNews[] = _("ふしぎなニュースをくばる");
+ALIGNED(4) const u8 unref_text_union_room_1[] = _("ふしぎなできごとを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldPokemonJump[] = _("なわとびを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryCrush[] = _("きのみマッシャーを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryPicking[] = _("きのみどりを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinTrade[] = _("ぐるぐるこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinShop[] = _("ぐるぐるショップを かいさいする");
+
+const u8 *const unref_text_ptrs_union_room_0[] = {
+ gJPText_SingleBattle,
+ gJPText_DoubleBattle,
+ gJPText_MultiBattle,
+ gJPText_TradePokemon,
+ gJPText_Chat,
+ gJPText_DistWonderCard,
+ gJPText_DistWonderNews,
+ gJPText_DistWonderCard,
+ gJPText_HoldPokemonJump,
+ gJPText_HoldBerryCrush,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldSpinTrade,
+ gJPText_HoldSpinShop
+};
+
+const u8 gText_1PlayerNeeded[] = _("1 player\nneeded.");
+const u8 gText_2PlayersNeeded[] = _("2 players\nneeded.");
+const u8 gText_3PlayersNeeded[] = _("3 players\nneeded.");
+const u8 gText_4PlayersNeeded[] = _("あと4にん\nひつよう");
+const u8 gText_2PlayerMode[] = _("2-PLAYER\nMODE");
+const u8 gText_3PlayerMode[] = _("3-PLAYER\nMODE");
+const u8 gText_4PlayerMode[] = _("4-PLAYER\nMODE");
+const u8 gText_5PlayerMode[] = _("5-PLAYER\nMODE");
+
+const u8 *const gUnknown_845742C[][5] = {
+ {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode
+ }, {
+ gText_3PlayersNeeded,
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_4PlayerMode
+ }, {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }, {
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_845747C[] = _("{B_BUTTON}CANCEL");
+ALIGNED(4) const u8 unref_text_union_room_2[] = _("ため\nさんかしゃ ぼしゅうちゅう です!");
+ALIGNED(4) const u8 gUnknown_84574A0[] = _("{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?");
+ALIGNED(4) const u8 gUnknown_84574C4[] = _("{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_84574EC[] = _("{STR_VAR_2} contacted you.\nAdd to the members?");
+ALIGNED(4) const u8 gUnknown_8457514[] = _("{STR_VAR_1}!\nAre these members OK?");
+ALIGNED(4) const u8 gUnknown_8457530[] = _("Cancel {STR_VAR_1} MODE\nwith these members?");
+ALIGNED(4) const u8 gUnknown_8457554[] = _("An “OK” was sent\nto {STR_VAR_1}.");
+
+ALIGNED(4) const u8 gUnknown_845756C[] = _("The other TRAINER doesn't appear\nto be available now…\p");
+ALIGNED(4) const u8 gUnknown_84575A4[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
+ALIGNED(4) const u8 gUnknown_84575DC[] = _("The other TRAINER(S) is/are not\nready yet.\p");
+
+const u8 *const gUnknown_8457608[] = {
+ gUnknown_84575A4,
+ gUnknown_84575DC
+};
+
+ALIGNED(4) const u8 gUnknown_8457610[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}");
+ALIGNED(4) const u8 gUnknown_8457644[] = _("There is a member who can no\nlonger remain available.\p");
+
+const u8 *const gUnknown_845767C[] = {
+ gUnknown_845756C,
+ gUnknown_8457644
+};
+
+ALIGNED(4) const u8 gUnknown_8457684[] = _("The other TRAINER appears\nunavailable…\p");
+ALIGNED(4) const u8 gUnknown_84576AC[] = _("{STR_VAR_1} sent back an “OK”!");
+ALIGNED(4) const u8 gUnknown_84576C4[] = _("{STR_VAR_1} OK'd your registration as\na member.");
+ALIGNED(4) const u8 gUnknown_84576EC[] = _("{STR_VAR_1} replied, “No…”\p");
+ALIGNED(4) const u8 gUnknown_8457700[] = _("{STR_VAR_1}!\nAwaiting other members!");
+ALIGNED(4) const u8 gUnknown_845771C[] = _("Quit being a member?");
+ALIGNED(4) const u8 gUnknown_8457734[] = _("You stopped being a member.\p");
+
+const u8 *const gUnknown_8457754[] = {
+ NULL,
+ gUnknown_8457644,
+ gUnknown_8457684,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_84576EC,
+ NULL,
+ NULL,
+ gUnknown_8457734
+};
+
+ALIGNED(4) const u8 gUnknown_845777C[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
+ALIGNED(4) const u8 gUnknown_84577BC[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…");
+ALIGNED(4) const u8 gUnknown_84577F8[] = _("The link with your friend has been\ndropped…");
+ALIGNED(4) const u8 gUnknown_8457824[] = _("{STR_VAR_1} replied, “No…”");
+
+const u8 *const gUnknown_8457838[] = {
+ NULL,
+ gUnknown_84577F8,
+ gUnknown_84577F8,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_8457824,
+ NULL,
+ NULL,
+ NULL
+};
+
+ALIGNED(4) const u8 gUnknown_8457860[] = _("Do you want the {STR_VAR_2}\nMODE?");
+ALIGNED(4) const u8 gUnknown_845787C[] = _("Do you want the {STR_VAR_2}\nMODE?");
+
+const u8 *const gUnknown_8457898[] = {
+ gUnknown_8457860,
+ gUnknown_845787C
+};
+
+ALIGNED(4) const u8 gUnknown_84578A0[] = _("はなしかけています…\nしょうしょう おまちください");
+ALIGNED(4) const u8 gUnknown_84578BC[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…");
+ALIGNED(4) const u8 gUnknown_84578E4[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_8457950[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_84579BC[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+
+const u8 *const gUnknown_8457A34[] = {
+ gUnknown_84578E4,
+ gUnknown_8457950,
+ gUnknown_84579BC
+};
+
+ALIGNED(4) const u8 gUnknown_8457A40[] = _("Hiya! Is there something that you\nwanted to do?");
+ALIGNED(4) const u8 gUnknown_8457A70[] = _("Hello!\nWould you like to do something?");
+ALIGNED(4) const u8 gUnknown_8457A98[] = _("{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?");
+ALIGNED(4) const u8 gUnknown_8457AD0[] = _("{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?");
+
+const u8 *const gUnknown_8457B04[][2] = {
+ {
+ gUnknown_8457A40,
+ gUnknown_8457A70
+ }, {
+ gUnknown_8457A98,
+ gUnknown_8457AD0
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8457B14[] = _("Want to do something?");
+ALIGNED(4) const u8 gUnknown_8457B2C[] = _("Would you like to do something?");
+ALIGNED(4) const u8 gUnknown_8457B4C[] = _("{STR_VAR_1}: What would you like to\ndo now?");
+ALIGNED(4) const u8 gUnknown_8457B70[] = _("{STR_VAR_1}‘また なにかする?");
+
+const u8 *const gUnknown_8457B80[] = {
+ gUnknown_8457B14,
+ gUnknown_8457B2C,
+ gUnknown_8457B4C,
+ gUnknown_8457B4C
+};
+
+ALIGNED(4) const u8 gUnknown_8457B90[] = _("Somebody has contacted you.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8457BA0[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}");
+
+const u8 *const gUnknown_8457BCC[] = {
+ gUnknown_8457B90,
+ gUnknown_8457BA0
+};
+
+ALIGNED(4) const u8 gUnknown_8457BD4[] = _("Awaiting a response from\nthe other TRAINER…");
+ALIGNED(4) const u8 gUnknown_8457C00[] = _("Awaiting a response from\n{STR_VAR_1}…");
+
+const u8 *const gUnknown_8457C20[] = {
+ gUnknown_8457BD4,
+ gUnknown_8457C00
+};
+
+ALIGNED(4) const u8 gUnknown_8457C28[] = _("あいての ていあんを まっています\nビーボタンで キャンセル");
+ALIGNED(4) const u8 gUnknown_8457C48[] = _("The other TRAINER showed\nyou their TRAINER CARD.\pWould you like to show your\nTRAINER CARD?");
+ALIGNED(4) const u8 gUnknown_8457CA4[] = _("The other TRAINER challenges you\nto battle.\pWill you accept the battle\nchallenge?");
+ALIGNED(4) const u8 gUnknown_8457CF8[] = _("The other TRAINER invites you\nto chat.\pWill you accept the chat\ninvitation?");
+ALIGNED(4) const u8 gUnknown_8457D44[] = _("There is an offer to trade your\nregistered Lv. {DYNAMIC 0} {DYNAMIC 1}\pin exchange for a\nLv. {DYNAMIC 2} {DYNAMIC 3}.\pWill you accept this trade\noffer?");
+ALIGNED(4) const u8 gUnknown_8457DB8[] = _("There is an offer to trade your\nregistered EGG.\lWill you accept this trade offer?");
+ALIGNED(4) const u8 gUnknown_8457E0C[] = _("The chat has been dropped.\p");
+ALIGNED(4) const u8 gUnknown_8457E28[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_8457E44[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_8457E60[] = _("The chat was ended.\p");
+
+const u8 *const gUnknown_8457E78[] = {
+ gUnknown_8457C48,
+ gUnknown_8457CA4,
+ gUnknown_8457CF8,
+ gUnknown_8457D44
+};
+
+ALIGNED(4) const u8 gUnknown_8457E88[] = _("Oh, hey! We're in a chat right now.\nWant to join us?");
+ALIGNED(4) const u8 gUnknown_8457EC0[] = _("{STR_VAR_1}: Hey, {PLAYER}!\nWe're having a chat right now.\lWant to join us?");
+ALIGNED(4) const u8 gUnknown_8457F00[] = _("Oh, hi! We're having a chat now.\nWould you like to join us?");
+ALIGNED(4) const u8 gUnknown_8457F3C[] = _("{STR_VAR_1}: Oh, hi, {PLAYER}!\nWe're having a chat now.\lWould you like to join us?");
+
+const u8 *const gUnknown_8457F80[][2] = {
+ {
+ gUnknown_8457E88,
+ gUnknown_8457F00
+ }, {
+ gUnknown_8457EC0,
+ gUnknown_8457F3C
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8457F90[] = _("……\nThe TRAINER appears to be busy…\p");
+ALIGNED(4) const u8 gUnknown_8457FB4[] = _("A battle, huh?\nAll right, just give me some time.");
+ALIGNED(4) const u8 gUnknown_8457FE8[] = _("You want to chat, huh?\nSure, just wait a little.");
+ALIGNED(4) const u8 gUnknown_845801C[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
+ALIGNED(4) const u8 gUnknown_8458054[] = _("A battle? Of course, but I need\ntime to get ready.");
+ALIGNED(4) const u8 gUnknown_8458088[] = _("Did you want to chat?\nOkay, but please wait a moment.");
+ALIGNED(4) const u8 gUnknown_84580C0[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
+
+const u8 *const gUnknown_84580F4[][4] = {
+ {
+ gUnknown_8457FB4,
+ gUnknown_8457FE8,
+ NULL,
+ gUnknown_845801C
+ }, {
+ gUnknown_8458054,
+ gUnknown_8458088,
+ NULL,
+ gUnknown_84580C0
+ }
+};
+
+ALIGNED(4) const u8 gUnref_8458104[] = _("チャットだね!\nわかった ちょっと まってて!");
+ALIGNED(4) const u8 gUnknown_845812C[] = _("Thanks for waiting!\nLet's get our battle started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458164[] = _("All right!\nLet's chat!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458180[] = _("Sorry I made you wait!\nLet's get started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581B0[] = _("Sorry I made you wait!\nLet's chat.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581D8[] = _("The trade will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581F8[] = _("The battle will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458218[] = _("Entering the chat…{PAUSE 60}");
+
+const u8 *const gUnknown_8458230[][2][3] = {
+ {
+ {
+ gUnknown_84581F8,
+ gUnknown_8458218,
+ gUnknown_84581D8
+ }, {
+ gUnknown_84581F8,
+ gUnknown_8458218,
+ gUnknown_84581D8
+ }
+ }, {
+ {
+ gUnknown_845812C,
+ gUnknown_8458164,
+ gUnknown_84581D8
+ }, {
+ gUnknown_8458180,
+ gUnknown_84581B0,
+ gUnknown_84581D8
+ }
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8458260[] = _("Sorry! My POKéMON don't seem to\nbe feeling too well right now.\lLet me battle you another time.\p");
+ALIGNED(4) const u8 gUnknown_84582C0[] = _("I'm terribly sorry, but my POKéMON\naren't feeling well…\pLet's battle another time.\p");
+
+const u8 *const gUnknown_8458314[] = {
+ gUnknown_8458260,
+ gUnknown_84582C0
+};
+
+ALIGNED(4) const u8 gUnknown_845831C[] = _("Huh? My TRAINER CARD…\nWhere'd it go now?\lSorry! I'll show you another time!\p");
+ALIGNED(4) const u8 gUnknown_845836C[] = _("Oh? Now where did I put my\nTRAINER CARD?…\lSorry! I'll show you later!\p");
+
+const u8 *const gUnknown_84583B4[] = {
+ gUnknown_845831C,
+ gUnknown_845836C
+};
+
+ALIGNED(4) const u8 gUnknown_84583BC[] = _("If you want to do something with\nme, just give me a shout!\p");
+ALIGNED(4) const u8 gUnknown_84583F8[] = _("If you want to do something with\nme, don't be shy.\p");
+
+const u8 *const gUnknown_845842C[] = {
+ gUnknown_84583BC,
+ gUnknown_84583F8
+};
+
+ALIGNED(4) const u8 gUnknown_8458434[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
+ALIGNED(4) const u8 gUnknown_845847C[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
+ALIGNED(4) const u8 gUnknown_84584C0[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
+ALIGNED(4) const u8 gUnknown_84584FC[] = _("Oh, all right.\nCome see me anytime, okay?\p");
+ALIGNED(4) const u8 gUnknown_8458528[] = _("Oh…\nPlease come by anytime.\p");
+
+const u8 *const gUnknown_8458548[] = {
+ gUnknown_84584FC,
+ gUnknown_8458528
+};
+
+ALIGNED(4) const u8 gUnknown_8458550[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
+ALIGNED(4) const u8 gUnknown_8458598[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
+
+const u8 *const gUnknown_84585E8[] = {
+ gUnknown_8458550,
+ gUnknown_8458598
+};
+
+ALIGNED(4) const u8 gUnknown_84585F0[] = _("Whoa!\nI can tell you're pretty tough!\p");
+ALIGNED(4) const u8 gUnknown_8458618[] = _("You used that move?\nThat's good strategy!\p");
+ALIGNED(4) const u8 gUnknown_8458644[] = _("Way to go!\nThat was an eye-opener!\p");
+ALIGNED(4) const u8 gUnknown_8458668[] = _("Oh! How could you use that\nPOKéMON in that situation?\p");
+ALIGNED(4) const u8 gUnknown_84586A0[] = _("That POKéMON…\nIt's been raised really well!\p");
+ALIGNED(4) const u8 gUnknown_84586D0[] = _("That's it!\nThis is the right move now!\p");
+ALIGNED(4) const u8 gUnknown_84586F8[] = _("That's awesome!\nYou can battle that way?\p");
+ALIGNED(4) const u8 gUnknown_8458724[] = _("You have exquisite timing for\nswitching POKéMON!\p");
+
+const u8 *const gUnknown_8458758[][4] = {
+ {
+ gUnknown_84585F0,
+ gUnknown_8458618,
+ gUnknown_8458644,
+ gUnknown_8458668
+ }, {
+ gUnknown_84586A0,
+ gUnknown_84586D0,
+ gUnknown_84586F8,
+ gUnknown_8458724
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8458778[] = _("Oh, I see!\nThis is educational!\p");
+ALIGNED(4) const u8 gUnknown_845879C[] = _("Don't say anything funny anymore!\nI'm sore from laughing!\p");
+ALIGNED(4) const u8 gUnknown_84587D8[] = _("Oh?\nSomething like that happened.\p");
+ALIGNED(4) const u8 gUnknown_84587FC[] = _("Hmhm… What?\nSo is this what you're saying?\p");
+ALIGNED(4) const u8 gUnknown_8458828[] = _("Is that right?\nI didn't know that.\p");
+ALIGNED(4) const u8 gUnknown_845884C[] = _("Ahaha!\nWhat is that about?\p");
+ALIGNED(4) const u8 gUnknown_8458868[] = _("Yes, that's exactly it!\nThat's what I meant.\p");
+ALIGNED(4) const u8 gUnknown_8458898[] = _("In other words…\nYes! That's right!\p");
+
+const u8 *const gUnknown_84588BC[][4] = {
+ {
+ gUnknown_8458778,
+ gUnknown_845879C,
+ gUnknown_84587D8,
+ gUnknown_84587FC
+ }, {
+ gUnknown_8458828,
+ gUnknown_845884C,
+ gUnknown_8458868,
+ gUnknown_8458898
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_84588DC[] = _("I'm just showing my TRAINER CARD\nas my way of greeting.\p");
+ALIGNED(4) const u8 gUnknown_8458918[] = _("I hope I get to know you better!\p");
+ALIGNED(4) const u8 gUnknown_845893C[] = _("We're showing each other our\nTRAINER CARDS to get acquainted.\p");
+ALIGNED(4) const u8 gUnknown_845897C[] = _("Glad to meet you.\nPlease don't be a stranger!\p");
+
+const u8 *const gUnknown_84589AC[][2] = {
+ {
+ gUnknown_84588DC,
+ gUnknown_8458918
+ }, {
+ gUnknown_845893C,
+ gUnknown_845897C
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_84589BC[] = _("Yeahah!\nI really wanted this POKéMON!\p");
+ALIGNED(4) const u8 gUnknown_84589E4[] = _("Finally, a trade got me that\nPOKéMON I'd wanted a long time.\p");
+ALIGNED(4) const u8 gUnknown_8458A24[] = _("I'm trading POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_8458A44[] = _("I finally got that POKéMON I\nwanted in a trade!\p");
+
+const u8 *const gUnknown_8458A78[][4] = {
+ {
+ gUnknown_84589BC,
+ gUnknown_84589E4
+ }, {
+ gUnknown_8458A24,
+ gUnknown_8458A44
+ }
+};
+
+const u8 gUnknown_8458A98[] = _("{STR_VAR_1} checked the\nTRADING BOARD.\p");
+ALIGNED(4) const u8 gUnknown_8458AB8[] = _("Welcome to the TRADING BOARD.\pYou may register your POKéMON\nand offer it up for a trade.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 gUnknown_8458B44[] = _("This TRADING BOARD is used for\noffering a POKéMON for a trade.\pAll you need to do is register a\nPOKéMON for a trade.\pAnother TRAINER may offer a party\nPOKéMON in return for the trade.\pWe hope you will register POKéMON\nand trade them with many, many\lother TRAINERS.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 gUnref_ThankYouForComing_JP[] = _("こうかんけいじばん の とうろくが\nかんりょう しました\pごりよう ありがとう\nございました!\p");
+ALIGNED(4) const u8 gUnref_NoOneRegisteredMon[] = _("けいじばんに だれも ポケモンを\nとうろく していません\p\n");
+ALIGNED(4) const u8 gUnknown_8458CD4[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
+ALIGNED(4) const u8 gUnknown_8458D1C[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
+ALIGNED(4) const u8 gUnknown_8458D54[] = _("Registration has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_8458D78[] = _("Registration has been completed.\p");
+ALIGNED(4) const u8 gUnknown_8458D9C[] = _("The trade has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_8458DBC[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_8458DE8[] = _("Cancel the registration of your\nEGG?");
+ALIGNED(4) const u8 gUnknown_8458E10[] = _("The registration has been canceled.\p");
+ALIGNED(4) const u8 gUnref_ShowPeopleWhoLikeYou_JP[] = _("こうかんを きぼうしているひとを\nひょうじします");
+ALIGNED(4) const u8 gUnref_PleaseChooseTrainerYouWant[] = _("こうかん したい トレーナーを\nえらんで ください");
+ALIGNED(4) const u8 gUnknown_8458E70[] = _("Would you like to ask {STR_VAR_1} to\nmake a trade?");
+ALIGNED(4) const u8 gUnref_ImWaitingForAnswer[] = _("……\nあいての へんじを まっています");
+ALIGNED(4) const u8 gUnref_MonSentOutIsNotRegistered[] = _("あなたが こうかんにだす\nポケモンが とうろくされていません\p");
+ALIGNED(4) const u8 gUnknown_8458ED0[] = _("You don't have a {STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_8458F04[] = _("You don't have an EGG that\n{STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_8458F2C[] = _("{STR_VAR_1} can't make a trade for\nyour POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_8458F60[] = _("You can't make a trade for\n{STR_VAR_1}'s POKéMON right now.\p");
+
+const u8 *const gUnknown_8458F94[] = {
+ gUnknown_8458F2C,
+ gUnknown_8458F60
+};
+
+ALIGNED(4) const u8 gUnknown_8458F9C[] = _("Your trade offer was rejected.\p");
+ALIGNED(4) const u8 gUnknown_8458FBC[] = _("EGG TRADE");
+ALIGNED(4) const u8 gUnknown_8458FC8[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gUnknown_8458FE4[] = _("Please choose a TRAINER.");
+ALIGNED(4) const u8 gUnknown_8459000[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459030[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459060[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459090[] = _("Please choose the TRAINER to\ntrade with.");
+ALIGNED(4) const u8 gUnknown_84590BC[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS.");
+ALIGNED(4) const u8 gUnknown_84590F4[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS.");
+ALIGNED(4) const u8 gUnknown_845912C[] = _("Jump with mini POKéMON!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_8459160[] = _("BERRY CRUSH!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_8459188[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
+
+const u8 *const gUnknown_84591B8[] = {
+ gUnknown_8459000,
+ gUnknown_8459030,
+ gUnknown_8459060,
+ gUnknown_8459090,
+ gUnknown_845912C,
+ gUnknown_8459160,
+ gUnknown_8459188,
+ gUnknown_84590BC,
+ gUnknown_84590F4
+};
+
+ALIGNED(4) const u8 gUnknown_84591DC[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
+ALIGNED(4) const u8 gUnref_NeedAtLeast2InDblBtl[] = _("ダブルバトルでは 2ひき いじょうの\nポケモンが ひつようです\p");
+ALIGNED(4) const u8 gUnknown_8459238[] = _("Awaiting {STR_VAR_1}'s response…");
+ALIGNED(4) const u8 gUnknown_8459250[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
+ALIGNED(4) const u8 gUnknown_845928C[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
+ALIGNED(4) const u8 gUnref_PlsWaitLittleWHile[] = _("ほかの さんかしゃが そろうまで\nしょうしょう おまちください");
+ALIGNED(4) const u8 gUnknown_84592E8[] = _("No CARDS appear to be shared \nright now.");
+ALIGNED(4) const u8 gUnknown_8459314[] = _("No NEWS appears to be shared\nright now.");
+
+const u8 *const gUnknown_845933C[] = {
+ gUnknown_84592E8,
+ gUnknown_8459314
+};
+
+ALIGNED(4) const u8 gUnknown_8459344[] = _("BATTLE");
+ALIGNED(4) const u8 gUnknown_845934C[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_8459354[] = _("GREETINGS");
+ALIGNED(4) const u8 gUnknown_8459360[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_8459368[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_8459370[] = _("INFO");
+ALIGNED(4) const u8 gUnknown_8459378[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.");
+ALIGNED(4) const u8 gUnknown_8459394[] = _("SINGLE BATTLE");
+ALIGNED(4) const u8 gUnknown_84593A4[] = _("DOUBLE BATTLE");
+ALIGNED(4) const u8 gUnknown_84593B4[] = _("MULTI BATTLE");
+ALIGNED(4) const u8 gUnknown_84593C4[] = _("POKéMON TRADES");
+ALIGNED(4) const u8 gUnknown_84593D4[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_84593DC[] = _("CARDS");
+ALIGNED(4) const u8 gUnknown_84593E4[] = _("WONDER CARDS");
+ALIGNED(4) const u8 gUnknown_84593F4[] = _("WONDER NEWS");
+ALIGNED(4) const u8 gUnknown_8459400[] = _("POKéMON JUMP");
+ALIGNED(4) const u8 gUnknown_8459410[] = _("BERRY CRUSH");
+ALIGNED(4) const u8 gUnknown_845941C[] = _("BERRY-PICKING");
+ALIGNED(4) const u8 gUnknown_845942C[] = _("SEARCH");
+ALIGNED(4) const u8 gUnknown_8459434[] = _("ぐるぐるこうかん");
+ALIGNED(4) const u8 gUnknown_8459440[] = _("アイテムトレード");
+ALIGNED(4) const u8 gUnknown_845944C[] = _("It's a NORMAL CARD.");
+ALIGNED(4) const u8 gUnknown_8459460[] = _("It's a BRONZE CARD!");
+ALIGNED(4) const u8 gUnknown_8459474[] = _("It's a COPPER CARD!");
+ALIGNED(4) const u8 gUnknown_8459488[] = _("It's a SILVER CARD!");
+ALIGNED(4) const u8 gUnknown_845949C[] = _("It's a GOLD CARD!");
+
+const u8 *const gUnknown_84594B0[] = {
+ gUnknown_845944C,
+ gUnknown_8459460,
+ gUnknown_8459474,
+ gUnknown_8459488,
+ gUnknown_845949C
+};
+
+ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
+ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
+ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");
+
+const u8 *const gUnknown_8459580[] = {
+ gUnknown_8459544,
+ gUnknown_8459564
+};
+
+ALIGNED(4) const u8 gUnknown_8459588[] = _("Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84595B0[] = _("Canceled reading the Card.");
+
+const struct mevent_client_cmd gUnknown_84595CC[] = {
+ CLI_RECEIVE(0x15),
+ CLI_RECVBUF,
+ CLI_SENDALL,
+ CLI_RETURN(0x0e)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[] = {
+ SRV_SEND(0x20, gUnknown_84595CC),
+ SRV_WAITSND,
+ SRV_SENDSTR(0x1b, gUnknown_84595B0),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x09)
+};
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index b88a7f15c..b35b6143e 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -1273,7 +1273,7 @@ static u8 GetRematchableTrainerLocalId(void)
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script)
{
- npc_sync_anim_pause_bits(&gObjectEvents[trainerInfo->objectEventId]);
+ UnfreezeObjectEvent(&gObjectEvents[trainerInfo->objectEventId]);
ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script);
}
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index 1c355c3ba..9be2823aa 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -364,7 +364,7 @@ void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx)
u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
{
- u32 r8 = unk20->unk.field_0.unk_0a_0;
+ u32 r8 = unk20->unk.gname.unk_0a_0;
s32 i, j, k;
for (i = 0; i < NELEMS(gUnknown_846FAC0); i++)
@@ -376,7 +376,7 @@ u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
k = 0;
for (j = 0; j < 4; j++)
{
- if (unk20->unk.field_0.unk_04[j] != 0) k++;
+ if (unk20->unk.gname.unk_04[j] != 0) k++;
}
k++;
arg1[gUnknown_846FAC0[i][1]] += k;
diff --git a/sym_bss.txt b/sym_bss.txt
index 16c5758fc..5651e3366 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -76,17 +76,10 @@ gUnknown_3000FE8: @ 3000FE8
.include "src/link_rfu_3.o"
.align 2
.include "src/quest_log.o"
-
.align 2
-gUnknown_3002024: @ 3002024
- .space 0x4
-
-gUnknown_3002028: @ 3002028
- .space 0x4
-
-gUnknown_300202C: @ 300202C
- .space 0x4
+ .include "src/union_room.o"
+ .align 2
gUnknown_3002030: @ 3002030
.space 0x8
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
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9ceae4842..3ab110c7b 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -350,41 +350,14 @@ gUnknown_203ACF0: @ 203ACF0
.include "src/menu.o"
.align 2
.include "src/quest_log.o"
-
.align 2
-gUnknown_203B04C: @ 203B04C
- .space 0xC
-
-gUnknown_203B058: @ 203B058
- .space 0x1
-
-gUnknown_203B059: @ 203B059
- .space 0x3
-
-gUnknown_203B05C: @ 203B05C
- .space 0x8
-
-gUnknown_203B064: @ 203B064
- .space 0x4
-
-gUnionRoomOfferedSpecies: @ 203B068
- .space 0x2
-
-gUnionRoomRequestedMonType: @ 203B06A
- .space 0x2
-
-gUnknown_203B06C: @ 203B06C
- .space 0x18
-
-gUnknown_203B084: @ 203B084
- .space 0x4
-
-gUnknown_203B088: @ 203B088
- .space 0x4
-
-gUnknown_203B08C: @ 203B08C
- .space 0x4
+ .include "src/union_room.o"
+ .align 2
+ .include "src/rfu_union_tool.o"
+ .align 2
+ .include "src/union_room_battle.o"
+ .align 2
gUnknown_203B090: @ 203B090
.space 0x4