summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-01-20 17:08:24 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-01-20 17:08:24 -0500
commit1fd20be8e10d9b810095186903acf9a405ce97c4 (patch)
treee36f9426a8667cef4218245dbf60d97bef3f4f30
parenta083f0f57f684eba3bb0f9ae3aeb09edb41f2fc2 (diff)
sub_81186E0
-rw-r--r--asm/union_room.s2071
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/link_rfu.h7
-rw-r--r--include/party_menu.h2
-rw-r--r--include/union_room.h60
-rw-r--r--include/union_room_player_avatar.h7
-rw-r--r--src/party_menu.c2
-rw-r--r--src/union_room.c862
-rw-r--r--sym_ewram.txt2
9 files changed, 911 insertions, 2104 deletions
diff --git a/asm/union_room.s b/asm/union_room.s
index ba13397da..faeafe565 100644
--- a/asm/union_room.s
+++ b/asm/union_room.s
@@ -5,2033 +5,6 @@
.text
- 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}
@@ -3091,8 +1064,8 @@ _0811A0F2:
bx r1
thumb_func_end sub_811A0E0
- thumb_func_start sub_811A0F8
-sub_811A0F8: @ 811A0F8
+ thumb_func_start PrintOnTextbox
+PrintOnTextbox: @ 811A0F8
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -3133,7 +1106,7 @@ _0811A144:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_811A0F8
+ thumb_func_end PrintOnTextbox
thumb_func_start sub_811A14C
sub_811A14C: @ 811A14C
@@ -5045,7 +3018,7 @@ _0811AFC4: .4byte gUnknown_8457CF8
_0811AFC8:
adds r0, r6, 0
adds r0, 0x58
- ldr r4, _0811AFF0 @ =gUnknown_203B06C
+ ldr r4, _0811AFF0 @ =sUnionRoomTrade
ldrh r1, [r4, 0xC]
movs r2, 0
movs r3, 0x3
@@ -5061,7 +3034,7 @@ _0811AFC8:
movs r4, 0
b _0811AFFA
.align 2, 0
-_0811AFF0: .4byte gUnknown_203B06C
+_0811AFF0: .4byte sUnionRoomTrade
_0811AFF4: .4byte gSpeciesNames
_0811AFF8:
adds r4, 0x1
@@ -5196,8 +3169,8 @@ _0811B0E4:
_0811B0EC: .4byte gSaveBlock1Ptr
thumb_func_end InUnionRoom
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
+ thumb_func_start HasAtLeastTwoMonsOfLevel30OrLower
+HasAtLeastTwoMonsOfLevel30OrLower: @ 811B0F0
push {r4-r6,lr}
movs r6, 0
movs r5, 0
@@ -5244,10 +3217,10 @@ _0811B142:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_811B0F0
+ thumb_func_end HasAtLeastTwoMonsOfLevel30OrLower
- thumb_func_start sub_811B148
-sub_811B148: @ 811B148
+ thumb_func_start ResetUnionRoomTrade
+ResetUnionRoomTrade: @ 811B148
movs r1, 0
strh r1, [r0]
strh r1, [r0, 0x2]
@@ -5258,21 +3231,21 @@ sub_811B148: @ 811B148
strh r1, [r0, 0x10]
str r1, [r0, 0x14]
bx lr
- thumb_func_end sub_811B148
+ thumb_func_end ResetUnionRoomTrade
thumb_func_start Script_ResetUnionRoomTrade
Script_ResetUnionRoomTrade: @ 811B15C
push {lr}
- ldr r0, _0811B168 @ =gUnknown_203B06C
- bl sub_811B148
+ ldr r0, _0811B168 @ =sUnionRoomTrade
+ bl ResetUnionRoomTrade
pop {r0}
bx r0
.align 2, 0
-_0811B168: .4byte gUnknown_203B06C
+_0811B168: .4byte sUnionRoomTrade
thumb_func_end Script_ResetUnionRoomTrade
- thumb_func_start sub_811B16C
-sub_811B16C: @ 811B16C
+ thumb_func_start RegisterTradeMonAndGetIsEgg
+RegisterTradeMonAndGetIsEgg: @ 811B16C
push {r4,r5,lr}
adds r5, r1, 0
movs r1, 0x64
@@ -5307,10 +3280,10 @@ _0811B1AE:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_811B16C
+ thumb_func_end RegisterTradeMonAndGetIsEgg
- thumb_func_start sub_811B1B4
-sub_811B1B4: @ 811B1B4
+ thumb_func_start RegisterTradeMon
+RegisterTradeMon: @ 811B1B4
push {r4,r5,lr}
adds r5, r1, 0
movs r1, 0x64
@@ -5335,7 +3308,7 @@ sub_811B1B4: @ 811B1B4
bx r0
.align 2, 0
_0811B1E8: .4byte gPlayerParty
- thumb_func_end sub_811B1B4
+ thumb_func_end RegisterTradeMon
thumb_func_start sub_811B1EC
sub_811B1EC: @ 811B1EC
@@ -5410,7 +3383,7 @@ sub_811B258: @ 811B258
strb r0, [r1]
cmp r4, 0
beq _0811B288
- ldr r2, _0811B294 @ =gUnknown_203B06C
+ ldr r2, _0811B294 @ =sUnionRoomTrade
ldrh r0, [r2, 0x2]
ldrh r1, [r2, 0xA]
ldrh r2, [r2, 0xC]
@@ -5425,7 +3398,7 @@ _0811B288:
bx r0
.align 2, 0
_0811B290: .4byte gUnknown_203B058
-_0811B294: .4byte gUnknown_203B06C
+_0811B294: .4byte sUnionRoomTrade
thumb_func_end sub_811B258
thumb_func_start sub_811B298
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/link_rfu.h b/include/link_rfu.h
index 35e5d46ff..3869ba000 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -316,6 +316,13 @@ 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 sub_80FD338(u16 id, u8 *name);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
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/union_room.h b/include/union_room.h
index b485d2035..fa3ead8dc 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -95,36 +95,36 @@ struct UnkStruct_8019BA8
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[180];
+ /* 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[0x84 - 0x58];
+ /* 0x084 */ u16 field_98;
+ /* 0x086 */ u16 field_9A[3];
+ /* 0x08C */ struct UnkStruct_8019BA8 field_A0[8];
+ /* 0x08C */ u8 field_C0[12][15];
+ /* 0x08C */ u8 field_174[48];
+ /* 0x08C */ u8 field_1A4[200];
};
union UnkUnion_Main
diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h
index 12b7773e7..68d64736d 100644
--- a/include/union_room_player_avatar.h
+++ b/include/union_room_player_avatar.h
@@ -2,5 +2,12 @@
#define GUARD_UNION_ROOM_PLAYER_AVATAR_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);
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
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/union_room.c b/src/union_room.c
index ac1f081fb..babacd299 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -3,10 +3,12 @@
#include "battle.h"
#include "berry_crush.h"
#include "cable_club.h"
+#include "data.h"
#include "decompress.h"
#include "dodrio_berry_picking.h"
#include "event_data.h"
#include "field_control_avatar.h"
+#include "field_fadetransition.h"
#include "field_weather.h"
#include "link.h"
#include "link_rfu.h"
@@ -22,6 +24,7 @@
#include "save_location.h"
#include "script.h"
#include "script_pokemon_util.h"
+#include "start_menu.h"
#include "task.h"
#include "trade.h"
#include "trade_scene.h"
@@ -33,11 +36,12 @@
#include "constants/maps.h"
#include "constants/cable_club.h"
#include "constants/field_weather.h"
+#include "constants/species.h"
EWRAM_DATA union UnkUnion_Main gUnknown_203B05C = {};
EWRAM_DATA u8 gUnknown_203B058 = 0;
EWRAM_DATA u8 gUnknown_203B059 = 0;
-EWRAM_DATA struct UnionRoomTrade gUnknown_203B06C = {};
+EWRAM_DATA struct UnionRoomTrade sUnionRoomTrade = {};
IWRAM_DATA struct UnkStruct_Leader * gUnknown_3002024;
IWRAM_DATA struct UnkStruct_Group * gUnknown_3002028;
@@ -60,11 +64,20 @@ void sub_8117F20(u8 taskId);
void sub_81182DC(u8 taskId);
void sub_81186E0(u8 taskId);
u16 ReadAsU16(const u8 *data);
+void sub_8119904(struct UnkStruct_URoom * uRoom);
+bool32 sub_8119944(struct UnkStruct_URoom * uRoom);
+u8 sub_8119B94(void);
+u8 sub_8119E84(struct UnkStruct_Main4 *arg0, struct UnkStruct_Main4 *arg1, u32 arg2);
bool32 sub_8119FB0(struct GFtgtGname *arg0, s16 arg1);
u8 sub_811A054(struct UnkStruct_Main4 *arg0, u32 arg1);
u8 sub_811A084(struct UnkStruct_Main4 *arg0, u32 arg1);
-bool8 sub_811A0F8(u8 *textState, const u8 *str);
+void sub_811A0B4(const u8 * str);
+void sub_811A0E0(void);
+bool8 PrintOnTextbox(u8 *textState, const u8 *str);
s8 sub_811A14C(u8 *dest, bool32 arg1);
+s32 sub_811A218(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate);
+s32 sub_811A2EC(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate, struct UnkStruct_Main0 *arg6);
+void sub_811A3F8(void);
void sub_811A41C(void);
void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_811A5E4(struct UnkStruct_x20 *arg0, u8 count);
@@ -74,8 +87,27 @@ u32 sub_811A748(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
u8 sub_811A798(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2);
void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
-void sub_811B148(struct UnionRoomTrade *trade);
+bool32 sub_811A9B8(void);
+u32 sub_811A9FC(u32 a0);
+u32 sub_811AA24(struct UnkStruct_x20 * unkX20);
+s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender);
+u32 sub_811ADC4(s16 a0, struct UnkStruct_Main0 * a1);
+s32 sub_811ADD0(u32 type, u32 species);
+void sub_811AE68(u8 *dst, s32 arg1, u32 playerGender);
+void sub_811AECC(u8 *dst, u8 arg1);
+bool32 sub_811B0A4(struct UnkStruct_URoom *arg0);
+bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
+void ResetUnionRoomTrade(struct UnionRoomTrade *trade);
+bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade *trade);
+void RegisterTradeMon(u32 monId, struct UnionRoomTrade *trade);
u32 sub_811B1EC(struct UnionRoomTrade *trade, u8 mpId);
+void sub_811B258(bool32 a0);
+void sub_811B298(void);
+u8 sub_811B2A8(s32 a0);
+u8 sub_811B2D8(struct UnkStruct_URoom *arg0);
+void sub_811B31C(u8 *dest, struct UnkStruct_URoom *uRoom, bool8 gender);
+u8 sub_811B754(struct UnkStruct_8019BA8 * ptr);
+void sub_811BA78(void);
extern const u8 *const gUnknown_8456C74[];
extern const struct WindowTemplate gUnknown_8456CD0;
@@ -86,6 +118,14 @@ extern const struct ListMenuTemplate gUnknown_8456D34;
extern const struct WindowTemplate gUnknown_8456D4C;
extern const struct WindowTemplate gUnknown_8456D54;
extern const struct ListMenuTemplate gUnknown_8456DDC;
+extern const struct WindowTemplate gUnknown_8456DF4;
+extern const struct ListMenuTemplate gUnknown_8456E1C;
+extern const struct WindowTemplate gUnknown_8456E34;
+extern const struct ListMenuTemplate gUnknown_8456E54;
+extern const struct WindowTemplate gUnknown_8456E6C;
+extern const struct ListMenuTemplate gUnknown_8456F04;
+extern const struct WindowTemplate gUnknown_8456F24;
+extern const struct ListMenuTemplate gUnknown_8456F7C;
extern const struct UnkStruct_Shared gUnknown_8457034;
extern const u8 *const gUnknown_8457094[13];
extern const u8 gUnknown_84570C8[];
@@ -114,8 +154,36 @@ 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_8457E28[];
extern const u8 gUnknown_8457E44[];
+extern const u8 gUnknown_8457E60[];
+extern const u8 gUnknown_8457F90[];
+extern const u8 *const gUnknown_84580F4[][4];
+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 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_8458FC8[];
extern const u8 gUnknown_8458FE4[];
extern const u8 gUnknown_84591DC[];
@@ -271,7 +339,7 @@ void sub_8115A68(u8 taskId)
data->state = 5;
break;
case 5:
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
data->state = 6;
break;
case 6:
@@ -308,7 +376,7 @@ void sub_8115A68(u8 taskId)
break;
case 10:
id = ((gUnknown_203B058 & 0xF) == 2) ? 1 : 0;
- if (sub_811A0F8(&data->textState, gUnknown_845767C[id]))
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
{
data->field_13 = sub_81165E8(data->field_0);
RedrawListMenu(data->listTaskId);
@@ -317,13 +385,13 @@ void sub_8115A68(u8 taskId)
break;
case 29:
id = ((gUnknown_203B059 & 0xF) == 2) ? 0 : 1;
- if (sub_811A0F8(&data->textState, gUnknown_845767C[id]))
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
{
data->state = 21;
}
break;
case 7:
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
{
data->state = 11;
}
@@ -397,7 +465,7 @@ void sub_8115A68(u8 taskId)
}
break;
case 13:
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
data->state = 14;
break;
case 14:
@@ -405,7 +473,7 @@ void sub_8115A68(u8 taskId)
data->state = 17;
break;
case 15:
- if (sub_811A0F8(&data->textState, gUnknown_8457514))
+ if (PrintOnTextbox(&data->textState, gUnknown_8457514))
data->state = 16;
break;
case 16:
@@ -424,7 +492,7 @@ void sub_8115A68(u8 taskId)
}
break;
case 19:
- if (sub_811A0F8(&data->textState, gUnknown_8457530))
+ if (PrintOnTextbox(&data->textState, gUnknown_8457530))
data->state = 20;
break;
case 20:
@@ -463,7 +531,7 @@ void sub_8115A68(u8 taskId)
}
break;
case 30:
- if (sub_811A0F8(&data->textState, gUnknown_8457610))
+ if (PrintOnTextbox(&data->textState, gUnknown_8457610))
data->state = 23;
break;
case 21:
@@ -754,7 +822,7 @@ void sub_8116738(u8 taskId)
data->state = 1;
break;
case 1:
- if (sub_811A0F8(&data->textState, gUnknown_84591B8[gSpecialVar_0x8004]))
+ if (PrintOnTextbox(&data->textState, gUnknown_84591B8[gSpecialVar_0x8004]))
data->state = 2;
break;
case 2:
@@ -833,7 +901,7 @@ void sub_8116738(u8 taskId)
break;
case 5:
sub_811631C(gStringVar4, gUnknown_203B058);
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
{
sub_8018404(gStringVar1, data->field_0->arr[data->field_F]);
data->state = 6;
@@ -867,7 +935,7 @@ void sub_8116738(u8 taskId)
break;
case 5:
sub_81163B0(gStringVar4, gUnknown_203B058);
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
{
sub_80FB9E4(7, 0);
StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
@@ -877,7 +945,7 @@ void sub_8116738(u8 taskId)
case 7:
if (data->field_15 > 0xF0)
{
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
{
sub_80FB9E4(12, 0);
data->field_15 = 0;
@@ -894,7 +962,7 @@ void sub_8116738(u8 taskId)
data->state = 7;
break;
case 7:
- if (sub_811A0F8(&data->textState, gUnknown_845771C))
+ if (PrintOnTextbox(&data->textState, gUnknown_845771C))
data->state = 8;
break;
case 8:
@@ -941,7 +1009,7 @@ void sub_8116738(u8 taskId)
break;
case 13:
DestroyWirelessStatusIndicatorSprite();
- if (sub_811A0F8(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
{
gSpecialVar_Result = 6;
data->state = 23;
@@ -954,14 +1022,14 @@ void sub_8116738(u8 taskId)
break;
case 15:
DestroyWirelessStatusIndicatorSprite();
- if (sub_811A0F8(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
{
gSpecialVar_Result = 8;
data->state = 23;
}
break;
case 19:
- if (sub_811A0F8(&data->textState, gStringVar4))
+ if (PrintOnTextbox(&data->textState, gStringVar4))
{
gSpecialVar_Result = 8;
data->state = 23;
@@ -1191,7 +1259,7 @@ u8 sub_8117118(void)
void sub_8117130(u8 taskId)
{
- u32 monId = sub_811B1EC(&gUnknown_203B06C, GetMultiplayerId());
+ u32 monId = sub_811B1EC(&sUnionRoomTrade, GetMultiplayerId());
switch (gTasks[taskId].data[0])
{
@@ -1222,7 +1290,7 @@ void sub_8117130(u8 taskId)
gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE;
gMain.savedCallback = CB2_ReturnToField;
SetMainCallback2(CB2_InitTradeAnim_LinkTrade);
- sub_811B148(&gUnknown_203B06C);
+ ResetUnionRoomTrade(&sUnionRoomTrade);
DestroyTask(taskId);
}
break;
@@ -1954,7 +2022,7 @@ void sub_81182DC(u8 taskId)
}
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
data->state = 6;
data->field_14 = 0;
@@ -2097,3 +2165,753 @@ void sub_81186C8(struct UnkStruct_URoom *data)
{
memcpy(data->field_0, &gDecompressionBuffer[0x3F00], sizeof(*data->field_0));
}
+
+void sub_81186E0(u8 taskId)
+{
+ u32 id = 0;
+ s32 var5 = 0;
+ s32 playerGender = 0;
+ struct UnkStruct_URoom * data = gUnknown_203B05C.uRoom;
+ s16 *taskData = gTasks[taskId].data;
+
+ switch (data->state)
+ {
+ case 0:
+ data->field_4 = AllocZeroed(0x70);
+ data->field_C = AllocZeroed(0x70);
+ data->field_0 = AllocZeroed(0x100);
+ data->field_8 = AllocZeroed(0x20);
+ sub_811A5E4(data->field_0->arr, 8);
+ gUnknown_203B058 = 0x40;
+ data->field_20 = sub_8119E84(data->field_C, data->field_4, 9);
+ sub_811B754(data->field_A0);
+ sub_811BB68();
+ data->state = 1;
+ break;
+ case 1:
+ sub_811BAAC(data->spriteIds, taskData[0]);
+ if (++taskData[0] == 8)
+ data->state = 2;
+ break;
+ case 2:
+ sub_80FAF58(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, 4);
+ sub_811A650(data->field_C, 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 = sub_811ADC4(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.field_0, 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 = sub_811ADC4(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 = sub_811ADC4(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 = sub_811ADC4(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 = sub_811ADC4(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 = sub_80FD338(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.field_0, gUnknown_203B058);
+ data->field_12 = taskData[1];
+ data->state = 20;
+ taskData[3] = 0;
+ break;
+ case 1:
+ case -1:
+ playerGender = sub_811ADC4(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 = sub_811ADC4(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 = sub_811ADC4(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 = sub_80FD338(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(gUnknown_203B05C.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.field_0.type, data->field_0->arr[var5].unk.field_0.species))
+ {
+ case 0:
+ sub_8018404_2(gStringVar1, data->field_0->arr[var5]);
+ sub_8118664(49, gUnknown_8458E70);
+ taskData[1] = var5;
+ break;
+ case 1:
+ sub_8018404_2(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.field_0.type]);
+ sub_8118664(46, gUnknown_8458ED0);
+ break;
+ case 2:
+ sub_8018404_2(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.field_0.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.field_0.unk_00, sizeof(gUnknown_203B064));
+ gUnionRoomRequestedMonType = data->field_0->arr[taskData[1]].unk.field_0.type;
+ gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].unk.field_0.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.field_0, 0x44);
+ sub_8018404_2(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;
+ }
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9ceae4842..ce1609643 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -373,7 +373,7 @@ gUnionRoomOfferedSpecies: @ 203B068
gUnionRoomRequestedMonType: @ 203B06A
.space 0x2
-gUnknown_203B06C: @ 203B06C
+sUnionRoomTrade: @ 203B06C
.space 0x18
gUnknown_203B084: @ 203B084