through sub_8116738

This commit is contained in:
PikalaxALT 2020-01-20 12:14:55 -05:00
parent bc0fbb5d6e
commit 8d5af53329
3 changed files with 275 additions and 677 deletions

View File

@ -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}

View File

@ -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[];

View File

@ -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;
}
}