summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-01-20 12:14:55 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-01-20 12:14:55 -0500
commit8d5af5332934f47f022907d2acb2e71d96b04449 (patch)
treefcdc71de09f5f6efa1c87bfe180984cdf6ffdb37
parentbc0fbb5d6ec21a7aaeab5f0392038844d0d23b25 (diff)
through sub_8116738
-rw-r--r--asm/union_room.s677
-rw-r--r--include/link_rfu.h2
-rw-r--r--src/union_room.c273
3 files changed, 275 insertions, 677 deletions
diff --git a/asm/union_room.s b/asm/union_room.s
index 1cd5db1e2..6e32c7afd 100644
--- a/asm/union_room.s
+++ b/asm/union_room.s
@@ -5,683 +5,6 @@
.text
- 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}
diff --git a/include/link_rfu.h b/include/link_rfu.h
index fd77688f2..a0db0a425 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -307,6 +307,8 @@ void sub_80FAF58(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);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/src/union_room.c b/src/union_room.c
index 8874ea816..37c3e7c0a 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -20,17 +20,23 @@ EWRAM_DATA u8 gUnknown_203B058 = 0;
EWRAM_DATA u8 gUnknown_203B059 = 0;
IWRAM_DATA struct UnkStruct_Leader *gUnknown_3002024;
+IWRAM_DATA struct UnkStruct_Group *gUnknown_3002028;
void sub_8115A68(u8 taskId);
void sub_81161E4(struct UnkStruct_Leader * leader);
bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2);
u8 sub_8116524(struct UnkStruct_Main0 * a0);
u8 sub_81165E8(struct UnkStruct_Main0 * a0);
+void sub_8116738(u8 taskId);
+u32 sub_8116D10(struct UnkStruct_Group * group, s32 id);
+void sub_8116D60(struct UnkStruct_Group * group, s32 id);
+u8 sub_8116FE4(void);
void sub_8117990(void);
u16 sub_8118658(const u8 *data);
u8 sub_811A054(struct UnkStruct_Main4 *arg0, u32 arg1);
bool8 sub_811A0F8(u8 *textState, const u8 *str);
s8 sub_811A14C(u8 *dest, bool32 arg1);
+void sub_811A41C(void);
void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_811A5E4(struct UnkStruct_x20 *arg0, u8 count);
void sub_811A650(struct UnkStruct_Main4 *arg0, u8 count);
@@ -44,7 +50,11 @@ extern const u32 gUnknown_8456CD8[];
extern const struct WindowTemplate gUnknown_8456CFC;
extern const struct WindowTemplate gUnknown_8456D04;
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 UnkStruct_Shared gUnknown_8457034;
+extern const u8 gUnknown_84570C8[];
extern const u8 gUnknown_84571B4[];
extern const u8 gUnknown_8457234[];
extern const u8 gUnknown_8457264[];
@@ -56,12 +66,18 @@ 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_8457E28[];
extern const u8 gUnknown_8457E44[];
+extern const u8 gUnknown_8458FC8[];
+extern const u8 *const gUnknown_84591B8[];
extern const u8 gUnknown_8459238[];
extern const u8 gUnknown_8459250[];
@@ -644,3 +660,260 @@ u8 sub_81165E8(struct UnkStruct_Main0 *arg0)
return ret;
}
+
+void TryJoinLinkGroup(void)
+{
+ u8 taskId;
+ struct UnkStruct_Group *dataPtr;
+
+ taskId = CreateTask(sub_8116738, 0);
+ gUnknown_203B05C.group = dataPtr = (void*)(gTasks[taskId].data);
+ gUnknown_3002028 = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}
+
+void sub_8116738(u8 taskId)
+{
+ s32 id;
+ struct UnkStruct_Group *data = gUnknown_203B05C.group;
+
+ switch (data->state)
+ {
+ case 0:
+ sub_80FAF58(gUnknown_84570C8[gSpecialVar_0x8004], 0, 0);
+ gUnknown_203B058 = gUnknown_84570C8[gSpecialVar_0x8004];
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(0x70);
+ data->field_0 = AllocZeroed(0x200);
+ data->state = 1;
+ break;
+ case 1:
+ if (sub_811A0F8(&data->textState, gUnknown_84591B8[gSpecialVar_0x8004]))
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, 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 (gMain.newKeys & A_BUTTON && id != -1)
+ {
+ // this unused variable along with the assignment is needed to match
+ u32 unusedVar;
+ unusedVar = data->field_0->arr[id].unk.field_0.unk_0a_0;
+
+ if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.field_0.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 (gMain.newKeys & B_BUTTON)
+ {
+ data->state = 10;
+ }
+ break;
+ default:
+ RedrawListMenu(data->listTaskId);
+ break;
+ }
+ break;
+ case 5:
+ sub_811631C(gStringVar4, gUnknown_203B058);
+ if (sub_811A0F8(&data->textState, gStringVar4))
+ {
+ sub_8018404(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.field_0.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 (sub_811A0F8(&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 (sub_811A0F8(&data->textState, gStringVar4))
+ {
+ sub_80FB9E4(12, 0);
+ data->field_15 = 0;
+ }
+ }
+ else
+ {
+ data->field_15++;
+ }
+ break;
+ }
+
+ if (!sub_80FB9F4() && gMain.newKeys & B_BUTTON)
+ data->state = 7;
+ break;
+ case 7:
+ if (sub_811A0F8(&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 (sub_811A0F8(&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 (sub_811A0F8(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ {
+ gSpecialVar_Result = 8;
+ data->state = 23;
+ }
+ break;
+ case 19:
+ if (sub_811A0F8(&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;
+ }
+}