.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start CB1_UpdateLinkState CB1_UpdateLinkState: @ 8057884 push {r4,lr} ldr r0, _080578C8 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _0805789E bl IsRfuRecvQueueEmpty cmp r0, 0 beq _0805789E bl IsSendingKeysToLink cmp r0, 0 bne _080578C0 _0805789E: ldr r0, _080578CC @ =gLocalLinkPlayerId ldrb r4, [r0] ldr r0, _080578D0 @ =gLinkPartnersHeldKeys adds r1, r4, 0 bl sub_8057BE4 ldr r0, _080578D4 @ =gUnknown_3000E84 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 lsls r0, 16 lsrs r0, 16 bl sub_8057C4C bl ClearAllPlayerKeys _080578C0: pop {r4} pop {r0} bx r0 .align 2, 0 _080578C8: .4byte gWirelessCommType _080578CC: .4byte gLocalLinkPlayerId _080578D0: .4byte gLinkPartnersHeldKeys _080578D4: .4byte gUnknown_3000E84 thumb_func_end CB1_UpdateLinkState thumb_func_start ResetAllMultiplayerState ResetAllMultiplayerState: @ 80578D8 push {lr} bl sub_805793C ldr r0, _080578E8 @ =sub_8057D5C bl c1_link_related_func_set pop {r0} bx r0 .align 2, 0 _080578E8: .4byte sub_8057D5C thumb_func_end ResetAllMultiplayerState thumb_func_start ClearAllPlayerKeys ClearAllPlayerKeys: @ 80578EC push {lr} ldr r0, _080578F8 @ =gLinkPartnersHeldKeys bl sub_8057D48 pop {r0} bx r0 .align 2, 0 _080578F8: .4byte gLinkPartnersHeldKeys thumb_func_end ClearAllPlayerKeys thumb_func_start c1_link_related_func_set c1_link_related_func_set: @ 80578FC ldr r2, _08057908 @ =gUnknown_3000E89 movs r1, 0 strb r1, [r2] ldr r1, _0805790C @ =gUnknown_3000E84 str r0, [r1] bx lr .align 2, 0 _08057908: .4byte gUnknown_3000E89 _0805790C: .4byte gUnknown_3000E84 thumb_func_end c1_link_related_func_set thumb_func_start sub_8057910 sub_8057910: @ 8057910 push {lr} ldr r0, _08057934 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _0805792E ldr r1, _08057938 @ =gUnknown_3000E89 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, 0x3C bls _0805792E bl LinkRfu_FatalError _0805792E: pop {r0} bx r0 .align 2, 0 _08057934: .4byte gWirelessCommType _08057938: .4byte gUnknown_3000E89 thumb_func_end sub_8057910 thumb_func_start sub_805793C sub_805793C: @ 805793C push {lr} ldr r1, _08057950 @ =gUnknown_3000E80 movs r2, 0x80 adds r0, r1, 0x3 _08057944: strb r2, [r0] subs r0, 0x1 cmp r0, r1 bge _08057944 pop {r0} bx r0 .align 2, 0 _08057950: .4byte gUnknown_3000E80 thumb_func_end sub_805793C thumb_func_start sub_8057954 sub_8057954: @ 8057954 push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 ldr r0, _08057974 @ =gFieldLinkPlayerCount ldrb r2, [r0] movs r1, 0 cmp r1, r2 bge _08057982 ldr r4, _08057978 @ =gUnknown_3000E80 _08057966: adds r0, r1, r4 ldrb r0, [r0] cmp r0, r3 beq _0805797C movs r0, 0 b _08057984 .align 2, 0 _08057974: .4byte gFieldLinkPlayerCount _08057978: .4byte gUnknown_3000E80 _0805797C: adds r1, 0x1 cmp r1, r2 blt _08057966 _08057982: movs r0, 0x1 _08057984: pop {r4} pop {r1} bx r1 thumb_func_end sub_8057954 thumb_func_start sub_805798C sub_805798C: @ 805798C push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 ldr r0, _080579AC @ =gFieldLinkPlayerCount ldrb r2, [r0] movs r1, 0 cmp r1, r2 bge _080579BA ldr r4, _080579B0 @ =gUnknown_3000E80 _0805799E: adds r0, r1, r4 ldrb r0, [r0] cmp r0, r3 bne _080579B4 movs r0, 0x1 b _080579BC .align 2, 0 _080579AC: .4byte gFieldLinkPlayerCount _080579B0: .4byte gUnknown_3000E80 _080579B4: adds r1, 0x1 cmp r1, r2 blt _0805799E _080579BA: movs r0, 0 _080579BC: pop {r4} pop {r1} bx r1 thumb_func_end sub_805798C thumb_func_start sub_80579C4 sub_80579C4: @ 80579C4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r7, r0, 0 adds r6, r2, 0 mov r9, r3 lsls r1, 16 lsrs r1, 16 mov r8, r1 ldr r0, _08057A14 @ =gUnknown_3000E80 adds r5, r7, r0 ldrb r0, [r5] cmp r0, 0x80 beq _080579E4 b _08057B5E _080579E4: adds r0, r6, 0 bl sub_805801C adds r4, r0, 0 cmp r4, 0 beq _08057A1C bl sub_805812C mov r1, r9 strh r0, [r1] movs r0, 0x81 strb r0, [r5] ldrb r0, [r6, 0x1] cmp r0, 0 bne _08057A04 b _08057BD2 _08057A04: ldr r0, _08057A18 @ =sub_8057DA4 bl c1_link_related_func_set adds r0, r4, 0 bl sub_80581DC b _08057BD2 .align 2, 0 _08057A14: .4byte gUnknown_3000E80 _08057A18: .4byte sub_8057DA4 _08057A1C: movs r0, 0x83 bl sub_805798C cmp r0, 0x1 bne _08057A44 movs r0, 0x81 strb r0, [r5] ldrb r0, [r6, 0x1] cmp r0, 0 bne _08057A32 b _08057BD2 _08057A32: ldr r0, _08057A40 @ =sub_8057DA4 bl c1_link_related_func_set bl sub_8058230 b _08057BD2 .align 2, 0 _08057A40: .4byte sub_8057DA4 _08057A44: mov r0, r8 subs r0, 0x12 cmp r0, 0xA bls _08057A4E b _08057B5E _08057A4E: lsls r0, 2 ldr r1, _08057A58 @ =_08057A5C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08057A58: .4byte _08057A5C .align 2, 0 _08057A5C: .4byte _08057AB4 .4byte _08057B5E .4byte _08057B5E .4byte _08057B5E .4byte _08057B5E .4byte _08057B5E .4byte _08057A88 .4byte _08057AE0 .4byte _08057B5E .4byte _08057B10 .4byte _08057B3C _08057A88: adds r0, r6, 0 bl sub_8058004 cmp r0, 0 beq _08057B5E ldr r0, _08057AAC @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x81 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057B5E ldr r0, _08057AB0 @ =sub_8057DA4 bl c1_link_related_func_set bl sub_80581C8 b _08057B5E .align 2, 0 _08057AAC: .4byte gUnknown_3000E80 _08057AB0: .4byte sub_8057DA4 _08057AB4: adds r0, r6, 0 bl sub_8058034 cmp r0, 0x1 bne _08057B5E ldr r0, _08057AD8 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x81 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057B5E ldr r0, _08057ADC @ =sub_8057DA4 bl c1_link_related_func_set bl sub_80581F8 b _08057B5E .align 2, 0 _08057AD8: .4byte gUnknown_3000E80 _08057ADC: .4byte sub_8057DA4 _08057AE0: adds r0, r6, 0 bl sub_8058060 adds r4, r0, 0 cmp r4, 0 beq _08057B5E ldr r0, _08057B08 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x81 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057B5E ldr r0, _08057B0C @ =sub_8057DA4 bl c1_link_related_func_set adds r0, r4, 0 bl sub_8058214 b _08057B5E .align 2, 0 _08057B08: .4byte gUnknown_3000E80 _08057B0C: .4byte sub_8057DA4 _08057B10: adds r0, r6, 0 bl sub_8057FEC cmp r0, 0 beq _08057B5E ldr r0, _08057B34 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x81 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057B5E ldr r0, _08057B38 @ =sub_8057DC8 bl c1_link_related_func_set bl sub_80581BC b _08057B5E .align 2, 0 _08057B34: .4byte gUnknown_3000E80 _08057B38: .4byte sub_8057DC8 _08057B3C: adds r0, r6, 0 bl sub_8057FEC cmp r0, 0 beq _08057B5E ldr r0, _08057B70 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x81 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057B5E ldr r0, _08057B74 @ =sub_8057DEC bl c1_link_related_func_set bl sub_80581BC _08057B5E: mov r0, r8 cmp r0, 0x17 beq _08057B84 cmp r0, 0x17 bgt _08057B78 cmp r0, 0x16 beq _08057B94 b _08057BD2 .align 2, 0 _08057B70: .4byte gUnknown_3000E80 _08057B74: .4byte sub_8057DEC _08057B78: mov r1, r8 cmp r1, 0x1A beq _08057BA4 cmp r1, 0x1D beq _08057BC4 b _08057BD2 _08057B84: ldr r0, _08057B90 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x83 strb r1, [r0] b _08057BD2 .align 2, 0 _08057B90: .4byte gUnknown_3000E80 _08057B94: ldr r0, _08057BA0 @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x82 strb r1, [r0] b _08057BD2 .align 2, 0 _08057BA0: .4byte gUnknown_3000E80 _08057BA4: ldr r0, _08057BBC @ =gUnknown_3000E80 adds r0, r7, r0 movs r1, 0x80 strb r1, [r0] ldrb r0, [r6, 0x1] cmp r0, 0 beq _08057BD2 ldr r0, _08057BC0 @ =sub_8057D5C bl c1_link_related_func_set b _08057BD2 .align 2, 0 _08057BBC: .4byte gUnknown_3000E80 _08057BC0: .4byte sub_8057D5C _08057BC4: ldr r0, _08057BE0 @ =gUnknown_3000E80 adds r1, r7, r0 ldrb r0, [r1] cmp r0, 0x82 bne _08057BD2 movs r0, 0x81 strb r0, [r1] _08057BD2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08057BE0: .4byte gUnknown_3000E80 thumb_func_end sub_80579C4 thumb_func_start sub_8057BE4 sub_8057BE4: @ 8057BE4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x14 mov r8, r1 movs r6, 0 add r5, sp, 0x10 mov r9, r5 adds r7, r0, 0 _08057BF8: ldrb r4, [r7] movs r0, 0 strh r0, [r5] adds r0, r6, 0 mov r1, r8 mov r2, sp bl sub_8057F84 adds r0, r6, 0 adds r1, r4, 0 mov r2, sp adds r3, r5, 0 bl sub_80579C4 ldr r0, _08057C48 @ =gUnknown_3000E80 adds r0, r6, r0 ldrb r0, [r0] cmp r0, 0x80 bne _08057C28 adds r0, r4, 0 bl sub_8057D14 mov r1, r9 strh r0, [r1] _08057C28: lsls r0, r6, 24 lsrs r0, 24 ldrb r1, [r5] bl sub_8058618 adds r7, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _08057BF8 add sp, 0x14 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08057C48: .4byte gUnknown_3000E80 thumb_func_end sub_8057BE4 thumb_func_start sub_8057C4C sub_8057C4C: @ 8057C4C push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 ldr r1, _08057C64 @ =0xffef0000 adds r0, r1 lsrs r0, 16 cmp r0, 0xC bhi _08057C6C ldr r0, _08057C68 @ =gHeldKeyCodeToSend strh r4, [r0] b _08057C72 .align 2, 0 _08057C64: .4byte 0xffef0000 _08057C68: .4byte gHeldKeyCodeToSend _08057C6C: ldr r1, _08057CB0 @ =gHeldKeyCodeToSend movs r0, 0x11 strh r0, [r1] _08057C72: ldr r0, _08057CB4 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _08057CA8 bl sub_805833C cmp r0, 0x1 bls _08057CA8 bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _08057CA8 bl IsSendingKeysToLink cmp r0, 0x1 bne _08057CA8 cmp r4, 0x11 blt _08057CA8 cmp r4, 0x15 ble _08057CA2 cmp r4, 0x19 bgt _08057CA8 cmp r4, 0x18 blt _08057CA8 _08057CA2: ldr r1, _08057CB0 @ =gHeldKeyCodeToSend movs r0, 0 strh r0, [r1] _08057CA8: pop {r4} pop {r0} bx r0 .align 2, 0 _08057CB0: .4byte gHeldKeyCodeToSend _08057CB4: .4byte gWirelessCommType thumb_func_end sub_8057C4C thumb_func_start sub_8057CB8 sub_8057CB8: @ 8057CB8 push {lr} ldr r2, _08057CCC @ =gMain ldrh r1, [r2, 0x2C] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08057CD0 movs r0, 0x13 b _08057D10 .align 2, 0 _08057CCC: .4byte gMain _08057CD0: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08057CDC movs r0, 0x12 b _08057D10 _08057CDC: movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08057CE8 movs r0, 0x14 b _08057D10 _08057CE8: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08057CF4 movs r0, 0x15 b _08057D10 _08057CF4: ldrh r1, [r2, 0x2E] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08057D02 movs r0, 0x18 b _08057D10 _08057D02: movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08057D0E movs r0, 0x11 b _08057D10 _08057D0E: movs r0, 0x19 _08057D10: pop {r1} bx r1 thumb_func_end sub_8057CB8 thumb_func_start sub_8057D14 sub_8057D14: @ 8057D14 push {lr} lsls r0, 16 lsrs r0, 16 adds r1, r0, 0 cmp r0, 0x13 beq _08057D3A cmp r0, 0x13 bgt _08057D2A cmp r0, 0x12 beq _08057D3E b _08057D42 _08057D2A: cmp r1, 0x14 beq _08057D36 cmp r1, 0x15 bne _08057D42 movs r0, 0x4 b _08057D44 _08057D36: movs r0, 0x3 b _08057D44 _08057D3A: movs r0, 0x1 b _08057D44 _08057D3E: movs r0, 0x2 b _08057D44 _08057D42: movs r0, 0 _08057D44: pop {r1} bx r1 thumb_func_end sub_8057D14 thumb_func_start sub_8057D48 sub_8057D48: @ 8057D48 push {lr} movs r2, 0x11 adds r1, r0, 0x6 _08057D4E: strh r2, [r1] subs r1, 0x2 cmp r1, r0 bge _08057D4E pop {r0} bx r0 thumb_func_end sub_8057D48 thumb_func_start sub_8057D5C sub_8057D5C: @ 8057D5C push {r4,lr} adds r4, r0, 0 bl ScriptContext2_IsEnabled lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08057D70 movs r0, 0x11 b _08057D92 _08057D70: bl GetLinkRecvQueueLength cmp r0, 0x4 bls _08057D7C movs r0, 0x1B b _08057D92 _08057D7C: bl sub_805833C cmp r0, 0x4 bls _08057D88 movs r0, 0x1C b _08057D92 _08057D88: adds r0, r4, 0 bl sub_8057CB8 lsls r0, 16 lsrs r0, 16 _08057D92: pop {r4} pop {r1} bx r1 thumb_func_end sub_8057D5C thumb_func_start sub_8057D98 sub_8057D98: @ 8057D98 push {lr} bl sub_8057910 movs r0, 0x11 pop {r1} bx r1 thumb_func_end sub_8057D98 thumb_func_start sub_8057DA4 sub_8057DA4: @ 8057DA4 push {r4,lr} bl ScriptContext2_IsEnabled lsls r0, 24 lsrs r0, 24 movs r4, 0x11 cmp r0, 0x1 beq _08057DBC movs r4, 0x1A ldr r0, _08057DC4 @ =sub_8057D98 bl c1_link_related_func_set _08057DBC: adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08057DC4: .4byte sub_8057D98 thumb_func_end sub_8057DA4 thumb_func_start sub_8057DC8 sub_8057DC8: @ 8057DC8 push {r4,lr} bl GetLinkRecvQueueLength movs r4, 0x11 cmp r0, 0x2 bhi _08057DE0 movs r4, 0x1A bl ScriptContext2_Disable ldr r0, _08057DE8 @ =sub_8057D98 bl c1_link_related_func_set _08057DE0: adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08057DE8: .4byte sub_8057D98 thumb_func_end sub_8057DC8 thumb_func_start sub_8057DEC sub_8057DEC: @ 8057DEC push {r4,lr} bl sub_805833C movs r4, 0x11 cmp r0, 0x2 bhi _08057E04 movs r4, 0x1A bl ScriptContext2_Disable ldr r0, _08057E0C @ =sub_8057D98 bl c1_link_related_func_set _08057E04: adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08057E0C: .4byte sub_8057D98 thumb_func_end sub_8057DEC thumb_func_start sub_8057E10 sub_8057E10: @ 8057E10 push {lr} bl sub_8057910 movs r0, 0x11 pop {r1} bx r1 thumb_func_end sub_8057E10 thumb_func_start sub_8057E1C sub_8057E1C: @ 8057E1C push {lr} ldr r1, _08057E40 @ =gUnknown_3000E80 adds r0, r1 ldrb r0, [r0] cmp r0, 0x82 bne _08057E4C ldr r0, _08057E44 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08057E50 ldr r0, _08057E48 @ =sub_8057E10 bl c1_link_related_func_set movs r0, 0x1D b _08057E52 .align 2, 0 _08057E40: .4byte gUnknown_3000E80 _08057E44: .4byte gMain _08057E48: .4byte sub_8057E10 _08057E4C: bl sub_8057910 _08057E50: movs r0, 0x11 _08057E52: pop {r1} bx r1 thumb_func_end sub_8057E1C thumb_func_start sub_8057E58 sub_8057E58: @ 8057E58 push {lr} ldr r0, _08057E68 @ =sub_8057E1C bl c1_link_related_func_set movs r0, 0x16 pop {r1} bx r1 .align 2, 0 _08057E68: .4byte sub_8057E1C thumb_func_end sub_8057E58 thumb_func_start sub_8057E6C sub_8057E6C: @ 8057E6C movs r0, 0x11 bx lr thumb_func_end sub_8057E6C thumb_func_start sub_8057E70 sub_8057E70: @ 8057E70 push {lr} ldr r1, _08057E9C @ =gUnknown_3000E80 adds r0, r1 ldrb r0, [r0] cmp r0, 0x83 beq _08057E80 bl sub_8057910 _08057E80: movs r0, 0x83 bl sub_8057954 cmp r0, 0x1 bne _08057E96 ldr r0, _08057EA0 @ =CableClub_EventScript_DoLinkRoomExit bl ScriptContext1_SetupScript ldr r0, _08057EA4 @ =sub_8057E6C bl c1_link_related_func_set _08057E96: movs r0, 0x11 pop {r1} bx r1 .align 2, 0 _08057E9C: .4byte gUnknown_3000E80 _08057EA0: .4byte CableClub_EventScript_DoLinkRoomExit _08057EA4: .4byte sub_8057E6C thumb_func_end sub_8057E70 thumb_func_start sub_8057EA8 sub_8057EA8: @ 8057EA8 push {lr} ldr r0, _08057EB8 @ =sub_8057E70 bl c1_link_related_func_set movs r0, 0x17 pop {r1} bx r1 .align 2, 0 _08057EB8: .4byte sub_8057E70 thumb_func_end sub_8057EA8 thumb_func_start sub_8057EBC sub_8057EBC: @ 8057EBC movs r0, 0x11 bx lr thumb_func_end sub_8057EBC thumb_func_start sub_8057EC0 sub_8057EC0: @ 8057EC0 push {lr} movs r0, 0x83 bl sub_805798C cmp r0, 0x1 beq _08057EFC ldr r0, _08057F00 @ =gUnknown_3000E84 ldr r2, [r0] ldr r1, _08057F04 @ =sub_8057E1C adds r3, r0, 0 cmp r2, r1 bne _08057EE6 ldr r1, _08057F08 @ =gUnknown_3000E80 ldr r0, _08057F0C @ =gLocalLinkPlayerId ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] cmp r0, 0x82 bne _08057F1E _08057EE6: ldr r1, [r3] ldr r0, _08057F10 @ =sub_8057E10 cmp r1, r0 bne _08057F14 ldr r1, _08057F08 @ =gUnknown_3000E80 ldr r0, _08057F0C @ =gLocalLinkPlayerId ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] cmp r0, 0x81 bne _08057F14 _08057EFC: movs r0, 0x2 b _08057F24 .align 2, 0 _08057F00: .4byte gUnknown_3000E84 _08057F04: .4byte sub_8057E1C _08057F08: .4byte gUnknown_3000E80 _08057F0C: .4byte gLocalLinkPlayerId _08057F10: .4byte sub_8057E10 _08057F14: movs r0, 0x82 bl sub_8057954 cmp r0, 0 bne _08057F22 _08057F1E: movs r0, 0 b _08057F24 _08057F22: movs r0, 0x1 _08057F24: pop {r1} bx r1 thumb_func_end sub_8057EC0 thumb_func_start sub_8057F28 sub_8057F28: @ 8057F28 push {lr} movs r0, 0x83 bl sub_805798C pop {r1} bx r1 thumb_func_end sub_8057F28 thumb_func_start sub_8057F34 sub_8057F34: @ 8057F34 push {lr} ldr r0, _08057F44 @ =sub_8057E58 bl c1_link_related_func_set movs r0, 0 pop {r1} bx r1 .align 2, 0 _08057F44: .4byte sub_8057E58 thumb_func_end sub_8057F34 thumb_func_start sub_8057F48 sub_8057F48: @ 8057F48 push {lr} ldr r0, _08057F58 @ =sub_8057DA4 bl c1_link_related_func_set movs r0, 0 pop {r1} bx r1 .align 2, 0 _08057F58: .4byte sub_8057DA4 thumb_func_end sub_8057F48 thumb_func_start sub_8057F5C sub_8057F5C: @ 8057F5C push {lr} ldr r0, _08057F6C @ =sub_8057EA8 bl c1_link_related_func_set movs r0, 0 pop {r1} bx r1 .align 2, 0 _08057F6C: .4byte sub_8057EA8 thumb_func_end sub_8057F5C thumb_func_start sub_8057F70 sub_8057F70: @ 8057F70 push {lr} ldr r0, _08057F80 @ =sub_8057EBC bl c1_link_related_func_set movs r0, 0 pop {r1} bx r1 .align 2, 0 _08057F80: .4byte sub_8057EBC thumb_func_end sub_8057F70 thumb_func_start sub_8057F84 sub_8057F84: @ 8057F84 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 adds r6, r2, 0 strb r4, [r6] movs r0, 0 cmp r4, r1 bne _08057F96 movs r0, 0x1 _08057F96: strb r0, [r6, 0x1] ldr r1, _08057FE8 @ =gLinkPlayerObjectEvents lsls r0, r4, 2 adds r0, r1 ldrb r0, [r0, 0x3] strb r0, [r6, 0x2] lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl sub_805854C strb r0, [r6, 0x3] mov r5, sp adds r5, 0x2 adds r0, r4, 0 mov r1, sp adds r2, r5, 0 bl sub_8058524 mov r0, sp ldrh r0, [r0] strh r0, [r6, 0x4] ldrh r0, [r5] strh r0, [r6, 0x6] adds r0, r4, 0 bl sub_805856C strb r0, [r6, 0x8] mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r5, r2] bl MapGridGetMetatileBehaviorAt strh r0, [r6, 0xC] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08057FE8: .4byte gLinkPlayerObjectEvents thumb_func_end sub_8057F84 thumb_func_start sub_8057FEC sub_8057FEC: @ 8057FEC push {lr} ldrb r0, [r0, 0x2] cmp r0, 0x2 beq _08057FF8 cmp r0, 0 bne _08057FFC _08057FF8: movs r0, 0x1 b _08057FFE _08057FFC: movs r0, 0 _08057FFE: pop {r1} bx r1 thumb_func_end sub_8057FEC thumb_func_start sub_8058004 sub_8058004: @ 8058004 push {lr} ldrb r0, [r0, 0x2] cmp r0, 0x2 beq _08058010 cmp r0, 0 bne _08058014 _08058010: movs r0, 0x1 b _08058016 _08058014: movs r0, 0 _08058016: pop {r1} bx r1 thumb_func_end sub_8058004 thumb_func_start sub_805801C sub_805801C: @ 805801C push {lr} adds r1, r0, 0 ldrb r0, [r1, 0x2] cmp r0, 0x2 bne _0805802E adds r0, r1, 0x4 bl GetCoordEventScriptAtMapPosition b _08058030 _0805802E: movs r0, 0 _08058030: pop {r1} bx r1 thumb_func_end sub_805801C thumb_func_start sub_8058034 sub_8058034: @ 8058034 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4, 0x2] cmp r0, 0x2 beq _08058042 cmp r0, 0 bne _08058058 _08058042: ldrb r0, [r4, 0xC] bl MetatileBehavior_IsSouthArrowWarp lsls r0, 24 cmp r0, 0 beq _08058058 ldrb r0, [r4, 0x3] cmp r0, 0x1 bne _08058058 movs r0, 0x1 b _0805805A _08058058: movs r0, 0 _0805805A: pop {r4} pop {r1} bx r1 thumb_func_end sub_8058034 thumb_func_start sub_8058060 sub_8058060: @ 8058060 push {r4,lr} sub sp, 0x8 adds r4, r0, 0 ldrb r0, [r4, 0x2] cmp r0, 0 beq _08058074 cmp r0, 0x2 beq _08058074 movs r0, 0 b _08058122 _08058074: ldr r0, [r4, 0x4] ldr r1, [r4, 0x8] str r0, [sp] str r1, [sp, 0x4] ldr r3, _080580E4 @ =gDirectionToVectors ldrb r0, [r4, 0x3] lsls r0, 3 adds r0, r3 ldr r0, [r0] mov r1, sp ldrh r1, [r1] adds r0, r1 lsls r0, 16 lsrs r0, 16 ldr r1, _080580E8 @ =0xffff0000 ldr r2, [sp] ands r2, r1 orrs r2, r0 str r2, [sp] asrs r1, r2, 16 ldrb r0, [r4, 0x3] lsls r0, 3 adds r3, 0x4 adds r0, r3 ldr r0, [r0] adds r0, r1 lsls r0, 16 ldr r1, _080580EC @ =0x0000ffff ands r1, r2 orrs r1, r0 str r1, [sp] ldr r2, _080580F0 @ =0xffffff00 ldr r0, [sp, 0x4] ands r0, r2 str r0, [sp, 0x4] mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] asrs r1, 16 bl GetLinkPlayerIdAt lsls r0, 24 lsrs r1, r0, 24 adds r2, r1, 0 cmp r1, 0x4 beq _08058118 ldrb r0, [r4, 0x1] cmp r0, 0 beq _080580E0 ldr r0, _080580F4 @ =gUnknown_3000E80 adds r0, r1, r0 ldrb r0, [r0] cmp r0, 0x80 beq _080580FC _080580E0: ldr r0, _080580F8 @ =CableClub_EventScript_TooBusyToNotice b _08058122 .align 2, 0 _080580E4: .4byte gDirectionToVectors _080580E8: .4byte 0xffff0000 _080580EC: .4byte 0x0000ffff _080580F0: .4byte 0xffffff00 _080580F4: .4byte gUnknown_3000E80 _080580F8: .4byte CableClub_EventScript_TooBusyToNotice _080580FC: adds r0, r2, 0 bl GetSeeingLinkPlayerCardMsg cmp r0, 0 bne _08058110 ldr r0, _0805810C @ =CableClub_EventScript_ReadTrainerCard b _08058122 .align 2, 0 _0805810C: .4byte CableClub_EventScript_ReadTrainerCard _08058110: ldr r0, _08058114 @ =CableClub_EventScript_ReadTrainerCardColored b _08058122 .align 2, 0 _08058114: .4byte CableClub_EventScript_ReadTrainerCardColored _08058118: ldrb r1, [r4, 0xC] ldrb r2, [r4, 0x3] mov r0, sp bl GetInteractedLinkPlayerScript _08058122: add sp, 0x8 pop {r4} pop {r1} bx r1 thumb_func_end sub_8058060 thumb_func_start sub_805812C sub_805812C: @ 805812C push {lr} adds r1, r0, 0 ldr r0, _08058178 @ =BattleColosseum_4P_EventScript_PlayerSpot0 cmp r1, r0 beq _08058172 ldr r0, _0805817C @ =BattleColosseum_4P_EventScript_PlayerSpot1 cmp r1, r0 beq _080581B4 ldr r0, _08058180 @ =BattleColosseum_4P_EventScript_PlayerSpot2 cmp r1, r0 beq _08058172 ldr r0, _08058184 @ =BattleColosseum_4P_EventScript_PlayerSpot3 cmp r1, r0 beq _080581B4 ldr r0, _08058188 @ =RecordCenter_EventScript_Spot cmp r1, r0 beq _08058172 ldr r0, _0805818C @ =RecordCenter_EventScript_Spot cmp r1, r0 beq _080581B4 ldr r0, _08058190 @ =RecordCenter_EventScript_Spot cmp r1, r0 beq _08058172 ldr r0, _08058194 @ =RecordCenter_EventScript_Spot cmp r1, r0 beq _080581B4 ldr r0, _08058198 @ =BattleColosseum_2P_EventScript_PlayerSpot0 cmp r1, r0 beq _08058172 ldr r0, _0805819C @ =BattleColosseum_2P_EventScript_PlayerSpot1 cmp r1, r0 beq _080581B4 ldr r0, _080581A0 @ =TradeCenter_EventScript_Chair0 cmp r1, r0 bne _080581A4 _08058172: movs r0, 0xA b _080581B6 .align 2, 0 _08058178: .4byte BattleColosseum_4P_EventScript_PlayerSpot0 _0805817C: .4byte BattleColosseum_4P_EventScript_PlayerSpot1 _08058180: .4byte BattleColosseum_4P_EventScript_PlayerSpot2 _08058184: .4byte BattleColosseum_4P_EventScript_PlayerSpot3 _08058188: .4byte RecordCenter_EventScript_Spot _0805818C: .4byte RecordCenter_EventScript_Spot _08058190: .4byte RecordCenter_EventScript_Spot _08058194: .4byte RecordCenter_EventScript_Spot _08058198: .4byte BattleColosseum_2P_EventScript_PlayerSpot0 _0805819C: .4byte BattleColosseum_2P_EventScript_PlayerSpot1 _080581A0: .4byte TradeCenter_EventScript_Chair0 _080581A4: ldr r0, _080581B0 @ =TradeCenter_EventScript_Chair1 cmp r1, r0 beq _080581B4 movs r0, 0 b _080581B6 .align 2, 0 _080581B0: .4byte TradeCenter_EventScript_Chair1 _080581B4: movs r0, 0x9 _080581B6: pop {r1} bx r1 thumb_func_end sub_805812C thumb_func_start sub_80581BC sub_80581BC: @ 80581BC push {lr} bl ScriptContext2_Enable pop {r0} bx r0 thumb_func_end sub_80581BC thumb_func_start sub_80581C8 sub_80581C8: @ 80581C8 push {lr} movs r0, 0x6 bl PlaySE bl ShowStartMenu bl ScriptContext2_Enable pop {r0} bx r0 thumb_func_end sub_80581C8 thumb_func_start sub_80581DC sub_80581DC: @ 80581DC push {r4,lr} adds r4, r0, 0 movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl ScriptContext1_SetupScript bl ScriptContext2_Enable pop {r4} pop {r0} bx r0 thumb_func_end sub_80581DC thumb_func_start sub_80581F8 sub_80581F8: @ 80581F8 push {lr} movs r0, 0x6 bl PlaySE ldr r0, _08058210 @ =TradeCenter_ConfirmLeaveRoom bl ScriptContext1_SetupScript bl ScriptContext2_Enable pop {r0} bx r0 .align 2, 0 _08058210: .4byte TradeCenter_ConfirmLeaveRoom thumb_func_end sub_80581F8 thumb_func_start sub_8058214 sub_8058214: @ 8058214 push {r4,lr} adds r4, r0, 0 movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl ScriptContext1_SetupScript bl ScriptContext2_Enable pop {r4} pop {r0} bx r0 thumb_func_end sub_8058214 thumb_func_start sub_8058230 sub_8058230: @ 8058230 push {lr} ldr r0, _08058240 @ =TradeCenter_TerminateLink bl ScriptContext1_SetupScript bl ScriptContext2_Enable pop {r0} bx r0 .align 2, 0 _08058240: .4byte TradeCenter_TerminateLink thumb_func_end sub_8058230 thumb_func_start sub_8058244 sub_8058244: @ 8058244 push {lr} bl IsUpdateLinkStateCBActive cmp r0, 0 bne _08058252 movs r0, 0 b _0805826C _08058252: bl GetLinkRecvQueueLength cmp r0, 0x2 bls _08058264 ldr r1, _08058260 @ =gUnknown_3000E88 movs r0, 0x1 b _08058268 .align 2, 0 _08058260: .4byte gUnknown_3000E88 _08058264: ldr r1, _08058270 @ =gUnknown_3000E88 movs r0, 0 _08058268: strb r0, [r1] ldrb r0, [r1] _0805826C: pop {r1} bx r1 .align 2, 0 _08058270: .4byte gUnknown_3000E88 thumb_func_end sub_8058244 thumb_func_start sub_8058274 sub_8058274: @ 8058274 push {lr} bl GetLinkRecvQueueLength cmp r0, 0x1 bls _080582D8 bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _080582D8 bl IsSendingKeysToLink cmp r0, 0x1 bne _080582D8 ldr r0, _080582C4 @ =gUnknown_3000E84 ldr r1, [r0] ldr r0, _080582C8 @ =sub_8057DC8 cmp r1, r0 beq _080582C0 ldr r0, _080582CC @ =sub_8057DA4 cmp r1, r0 bne _080582D8 ldr r0, _080582D0 @ =gUnknown_3000E88 ldrb r2, [r0] movs r1, 0 strb r1, [r0] cmp r2, 0x1 beq _080582C0 ldr r2, _080582D4 @ =gPaletteFade ldrb r1, [r2, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080582D8 ldrb r1, [r2, 0xA] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080582D8 _080582C0: movs r0, 0x1 b _080582DA .align 2, 0 _080582C4: .4byte gUnknown_3000E84 _080582C8: .4byte sub_8057DC8 _080582CC: .4byte sub_8057DA4 _080582D0: .4byte gUnknown_3000E88 _080582D4: .4byte gPaletteFade _080582D8: movs r0, 0 _080582DA: pop {r1} bx r1 thumb_func_end sub_8058274 thumb_func_start sub_80582E0 sub_80582E0: @ 80582E0 push {lr} bl sub_805833C cmp r0, 0x1 bls _08058304 bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _08058304 bl IsSendingKeysToLink cmp r0, 0x1 bne _08058304 ldr r0, _08058308 @ =gUnknown_3000E84 ldr r1, [r0] ldr r0, _0805830C @ =sub_8057DEC cmp r1, r0 beq _08058310 _08058304: movs r0, 0 b _08058312 .align 2, 0 _08058308: .4byte gUnknown_3000E84 _0805830C: .4byte sub_8057DEC _08058310: movs r0, 0x1 _08058312: pop {r1} bx r1 thumb_func_end sub_80582E0 thumb_func_start sub_8058318 sub_8058318: @ 8058318 push {lr} ldr r0, _08058330 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _08058334 bl IsSendingKeysToLink cmp r0, 0 beq _08058334 movs r0, 0x1 b _08058336 .align 2, 0 _08058330: .4byte gWirelessCommType _08058334: movs r0, 0 _08058336: pop {r1} bx r1 thumb_func_end sub_8058318 thumb_func_start sub_805833C sub_805833C: @ 805833C push {lr} ldr r0, _08058350 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _0805835C ldr r0, _08058354 @ =gLink ldr r1, _08058358 @ =0x00000339 adds r0, r1 ldrb r0, [r0] b _08058364 .align 2, 0 _08058350: .4byte gWirelessCommType _08058354: .4byte gLink _08058358: .4byte 0x00000339 _0805835C: ldr r0, _08058368 @ =Rfu ldr r1, _0805836C @ =0x000008d2 adds r0, r1 ldrb r0, [r0] _08058364: pop {r1} bx r1 .align 2, 0 _08058368: .4byte Rfu _0805836C: .4byte 0x000008d2 thumb_func_end sub_805833C thumb_func_start ZeroLinkPlayerObjectEvent ZeroLinkPlayerObjectEvent: @ 8058370 movs r1, 0 str r1, [r0] bx lr thumb_func_end ZeroLinkPlayerObjectEvent thumb_func_start ClearLinkPlayerObjectEvents ClearLinkPlayerObjectEvents: @ 8058378 push {lr} ldr r0, _08058388 @ =gLinkPlayerObjectEvents movs r1, 0 movs r2, 0x10 bl memset pop {r0} bx r0 .align 2, 0 _08058388: .4byte gLinkPlayerObjectEvents thumb_func_end ClearLinkPlayerObjectEvents thumb_func_start ZeroObjectEvent ZeroObjectEvent: @ 805838C push {lr} movs r1, 0 movs r2, 0x24 bl memset pop {r0} bx r0 thumb_func_end ZeroObjectEvent thumb_func_start SpawnLinkPlayerObjectEvent SpawnLinkPlayerObjectEvent: @ 805839C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r9, r1 mov r10, r2 mov r8, r3 lsls r0, 24 lsrs r7, r0, 24 mov r0, r9 lsls r0, 16 lsrs r0, 16 mov r9, r0 mov r1, r10 lsls r1, 16 lsrs r1, 16 mov r10, r1 mov r2, r8 lsls r2, 24 lsrs r2, 24 mov r8, r2 bl GetFirstInactiveObjectEventId adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r4, r7, 2 ldr r0, _08058440 @ =gLinkPlayerObjectEvents adds r4, r0 lsls r5, r6, 3 adds r5, r6 lsls r5, 2 ldr r0, _08058444 @ =gObjectEvents adds r5, r0 adds r0, r4, 0 bl ZeroLinkPlayerObjectEvent adds r0, r5, 0 bl ZeroObjectEvent movs r2, 0 movs r1, 0x1 movs r0, 0x1 strb r0, [r4] strb r7, [r4, 0x1] strb r6, [r4, 0x2] strb r2, [r4, 0x3] ldrb r0, [r5] orrs r0, r1 mov r2, r8 ands r2, r1 lsls r2, 1 movs r1, 0x3 negs r1, r1 ands r0, r1 orrs r0, r2 strb r0, [r5] movs r0, 0x2 strb r0, [r5, 0x19] movs r0, 0x40 strb r0, [r5, 0x4] mov r0, r9 lsls r0, 16 asrs r0, 16 mov r9, r0 mov r1, r10 lsls r1, 16 asrs r1, 16 mov r10, r1 adds r0, r5, 0 mov r1, r9 mov r2, r10 bl InitLinkPlayerObjectEventPos pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08058440: .4byte gLinkPlayerObjectEvents _08058444: .4byte gObjectEvents thumb_func_end SpawnLinkPlayerObjectEvent thumb_func_start InitLinkPlayerObjectEventPos InitLinkPlayerObjectEventPos: @ 8058448 push {r4,lr} adds r4, r0, 0 adds r0, r1, 0 adds r1, r2, 0 lsls r0, 16 lsrs r0, 16 lsls r1, 16 lsrs r1, 16 strh r0, [r4, 0x10] strh r1, [r4, 0x12] strh r0, [r4, 0x14] strh r1, [r4, 0x16] lsls r0, 16 asrs r0, 16 lsls r1, 16 asrs r1, 16 adds r2, r4, 0 adds r2, 0xC adds r3, r4, 0 adds r3, 0xE bl SetSpritePosToMapCoords ldrh r0, [r4, 0xC] adds r0, 0x8 strh r0, [r4, 0xC] adds r0, r4, 0 bl ObjectEventUpdateZCoord pop {r4} pop {r0} bx r0 thumb_func_end InitLinkPlayerObjectEventPos thumb_func_start sub_8058488 sub_8058488: @ 8058488 push {lr} lsls r0, 24 lsls r1, 24 lsrs r2, r1, 24 ldr r1, _080584B0 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 beq _080584AA ldrb r0, [r1, 0x2] lsls r1, r0, 3 adds r1, r0 lsls r1, 2 ldr r0, _080584B4 @ =gObjectEvents adds r1, r0 strb r2, [r1, 0x19] _080584AA: pop {r0} bx r0 .align 2, 0 _080584B0: .4byte gLinkPlayerObjectEvents _080584B4: .4byte gObjectEvents thumb_func_end sub_8058488 thumb_func_start sub_80584B8 sub_80584B8: @ 80584B8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 22 ldr r1, _080584F8 @ =gLinkPlayerObjectEvents adds r5, r0, r1 ldrb r1, [r5, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _080584FC @ =gObjectEvents adds r4, r0, r1 ldrb r0, [r4, 0x4] cmp r0, 0x40 beq _080584E4 adds r1, r0, 0 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08058500 @ =gSprites adds r0, r1 bl DestroySprite _080584E4: movs r0, 0 strb r0, [r5] ldrb r1, [r4] subs r0, 0x2 ands r0, r1 strb r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080584F8: .4byte gLinkPlayerObjectEvents _080584FC: .4byte gObjectEvents _08058500: .4byte gSprites thumb_func_end sub_80584B8 thumb_func_start GetSpriteForLinkedPlayer GetSpriteForLinkedPlayer: @ 8058504 lsls r0, 24 ldr r1, _0805851C @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08058520 @ =gObjectEvents adds r0, r1 ldrb r0, [r0, 0x4] bx lr .align 2, 0 _0805851C: .4byte gLinkPlayerObjectEvents _08058520: .4byte gObjectEvents thumb_func_end GetSpriteForLinkedPlayer thumb_func_start sub_8058524 sub_8058524: @ 8058524 lsls r0, 24 ldr r3, _08058544 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r3 ldrb r3, [r0, 0x2] lsls r0, r3, 3 adds r0, r3 lsls r0, 2 ldr r3, _08058548 @ =gObjectEvents adds r0, r3 ldrh r3, [r0, 0x10] strh r3, [r1] ldrh r0, [r0, 0x12] strh r0, [r2] bx lr .align 2, 0 _08058544: .4byte gLinkPlayerObjectEvents _08058548: .4byte gObjectEvents thumb_func_end sub_8058524 thumb_func_start sub_805854C sub_805854C: @ 805854C lsls r0, 24 ldr r1, _08058564 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08058568 @ =gObjectEvents adds r0, r1 ldrb r0, [r0, 0x19] bx lr .align 2, 0 _08058564: .4byte gLinkPlayerObjectEvents _08058568: .4byte gObjectEvents thumb_func_end sub_805854C thumb_func_start sub_805856C sub_805856C: @ 805856C lsls r0, 24 ldr r1, _08058588 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _0805858C @ =gObjectEvents adds r0, r1 ldrb r0, [r0, 0xB] lsls r0, 28 lsrs r0, 28 bx lr .align 2, 0 _08058588: .4byte gLinkPlayerObjectEvents _0805858C: .4byte gObjectEvents thumb_func_end sub_805856C thumb_func_start sub_8058590 sub_8058590: @ 8058590 lsls r0, 24 ldr r1, _080585B0 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _080585B4 @ =gObjectEvents adds r0, r1 adds r0, 0x21 movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0x10 subs r0, r1 bx lr .align 2, 0 _080585B0: .4byte gLinkPlayerObjectEvents _080585B4: .4byte gObjectEvents thumb_func_end sub_8058590 thumb_func_start GetLinkPlayerIdAt GetLinkPlayerIdAt: @ 80585B8 push {r4-r6,lr} movs r2, 0 ldr r5, _080585FC @ =gLinkPlayerObjectEvents lsls r0, 16 asrs r4, r0, 16 lsls r1, 16 asrs r3, r1, 16 _080585C6: lsls r0, r2, 2 adds r1, r0, r5 ldrb r0, [r1] cmp r0, 0 beq _08058604 ldrb r0, [r1, 0x3] cmp r0, 0 beq _080585DA cmp r0, 0x2 bne _08058604 _080585DA: ldrb r1, [r1, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08058600 @ =gObjectEvents adds r1, r0, r1 movs r6, 0x10 ldrsh r0, [r1, r6] cmp r0, r4 bne _08058604 movs r6, 0x12 ldrsh r0, [r1, r6] cmp r0, r3 bne _08058604 adds r0, r2, 0 b _08058610 .align 2, 0 _080585FC: .4byte gLinkPlayerObjectEvents _08058600: .4byte gObjectEvents _08058604: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x3 bls _080585C6 movs r0, 0x4 _08058610: pop {r4-r6} pop {r1} bx r1 thumb_func_end GetLinkPlayerIdAt thumb_func_start sub_8058618 sub_8058618: @ 8058618 push {r4-r6,lr} lsls r0, 24 lsls r1, 24 lsrs r3, r1, 24 adds r2, r3, 0 lsrs r0, 22 ldr r1, _08058648 @ =gLinkPlayerObjectEvents adds r5, r0, r1 ldrb r1, [r5, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _0805864C @ =gObjectEvents adds r6, r0, r1 ldrb r0, [r5] cmp r0, 0 beq _08058674 cmp r3, 0xA bls _08058650 ldrb r0, [r6] movs r1, 0x4 orrs r0, r1 strb r0, [r6] b _08058674 .align 2, 0 _08058648: .4byte gLinkPlayerObjectEvents _0805864C: .4byte gObjectEvents _08058650: ldr r4, _0805867C @ =gUnknown_826D374 ldr r1, _08058680 @ =gUnknown_826D33C ldrb r0, [r5, 0x3] lsls r0, 2 adds r0, r1 ldr r3, [r0] adds r0, r5, 0 adds r1, r6, 0 bl _call_via_r3 lsls r0, 24 lsrs r0, 22 adds r0, r4 ldr r2, [r0] adds r0, r5, 0 adds r1, r6, 0 bl _call_via_r2 _08058674: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0805867C: .4byte gUnknown_826D374 _08058680: .4byte gUnknown_826D33C thumb_func_end sub_8058618 thumb_func_start sub_8058684 sub_8058684: @ 8058684 push {r4,lr} lsls r2, 24 lsrs r2, 24 ldr r4, _080586A0 @ =gUnknown_826D348 lsls r3, r2, 2 adds r3, r4 ldr r3, [r3] bl _call_via_r3 lsls r0, 24 lsrs r0, 24 pop {r4} pop {r1} bx r1 .align 2, 0 _080586A0: .4byte gUnknown_826D348 thumb_func_end sub_8058684 thumb_func_start sub_80586A4 sub_80586A4: @ 80586A4 movs r0, 0x1 bx lr thumb_func_end sub_80586A4 thumb_func_start sub_80586A8 sub_80586A8: @ 80586A8 push {r4,lr} lsls r2, 24 lsrs r2, 24 ldr r4, _080586C4 @ =gUnknown_826D348 lsls r3, r2, 2 adds r3, r4 ldr r3, [r3] bl _call_via_r3 lsls r0, 24 lsrs r0, 24 pop {r4} pop {r1} bx r1 .align 2, 0 _080586C4: .4byte gUnknown_826D348 thumb_func_end sub_80586A8 thumb_func_start sub_80586C8 sub_80586C8: @ 80586C8 movs r0, 0 bx lr thumb_func_end sub_80586C8 thumb_func_start sub_80586CC sub_80586CC: @ 80586CC push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 adds r5, r1, 0 lsls r0, r2, 24 lsrs r0, 24 ldrb r1, [r5, 0x19] bl npc_something3 strb r0, [r5, 0x19] ldrb r1, [r5, 0x19] mov r6, sp adds r6, 0x2 adds r0, r5, 0 mov r2, sp adds r3, r6, 0 bl ObjectEventMoveDestCoords ldrb r0, [r4, 0x2] ldrb r1, [r5, 0x19] mov r2, sp movs r3, 0 ldrsh r2, [r2, r3] movs r4, 0 ldrsh r3, [r6, r4] bl npc_080587EC lsls r0, 24 cmp r0, 0 bne _0805872A adds r1, r5, 0 adds r1, 0x21 movs r0, 0x10 strb r0, [r1] mov r0, sp movs r2, 0 ldrsh r1, [r0, r2] movs r3, 0 ldrsh r2, [r6, r3] adds r0, r5, 0 bl ShiftObjectEventCoords adds r0, r5, 0 bl ObjectEventUpdateZCoord movs r0, 0x1 b _0805872C _0805872A: movs r0, 0 _0805872C: add sp, 0x4 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80586CC thumb_func_start sub_8058734 sub_8058734: @ 8058734 push {r4,lr} adds r4, r1, 0 lsls r0, r2, 24 lsrs r0, 24 ldrb r1, [r4, 0x19] bl npc_something3 strb r0, [r4, 0x19] movs r0, 0 pop {r4} pop {r1} bx r1 thumb_func_end sub_8058734 thumb_func_start sub_805874C sub_805874C: @ 805874C movs r1, 0 strb r1, [r0, 0x3] bx lr thumb_func_end sub_805874C thumb_func_start sub_8058754 sub_8058754: @ 8058754 push {r4-r6,lr} adds r6, r0, 0 adds r4, r1, 0 adds r5, r4, 0 adds r5, 0x21 ldrb r0, [r5] subs r0, 0x1 strb r0, [r5] movs r0, 0x1 strb r0, [r6, 0x3] ldrb r0, [r4, 0x19] adds r1, 0xC adds r2, r4, 0 adds r2, 0xE bl MoveCoords ldrb r0, [r5] cmp r0, 0 bne _08058784 adds r0, r4, 0 bl ShiftStillObjectEventCoords movs r0, 0x2 strb r0, [r6, 0x3] _08058784: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_8058754 thumb_func_start npc_something3 npc_something3: @ 805878C push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r2, r1, 24 subs r0, 0x1 cmp r0, 0x9 bhi _080587E4 lsls r0, 2 ldr r1, _080587A8 @ =_080587AC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080587A8: .4byte _080587AC .align 2, 0 _080587AC: .4byte _080587D4 .4byte _080587D8 .4byte _080587DC .4byte _080587E0 .4byte _080587E4 .4byte _080587E4 .4byte _080587D4 .4byte _080587D8 .4byte _080587DC .4byte _080587E0 _080587D4: movs r0, 0x2 b _080587E6 _080587D8: movs r0, 0x1 b _080587E6 _080587DC: movs r0, 0x3 b _080587E6 _080587E0: movs r0, 0x4 b _080587E6 _080587E4: adds r0, r2, 0 _080587E6: pop {r1} bx r1 thumb_func_end npc_something3 thumb_func_start npc_080587EC npc_080587EC: @ 80587EC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r2, 16 lsrs r2, 16 mov r12, r2 lsls r3, 16 movs r4, 0 ldr r0, _08058850 @ =gObjectEvents mov r9, r0 lsrs r2, r3, 16 mov r10, r2 asrs r6, r3, 16 _08058810: mov r7, r12 lsls r3, r7, 16 mov r0, r10 lsls r5, r0, 16 cmp r4, r8 beq _08058854 lsls r0, r4, 3 adds r0, r4 lsls r0, 2 mov r2, r9 adds r1, r0, r2 movs r7, 0x10 ldrsh r0, [r1, r7] asrs r2, r3, 16 cmp r0, r2 bne _08058838 movs r7, 0x12 ldrsh r0, [r1, r7] cmp r0, r6 beq _0805884A _08058838: movs r7, 0x14 ldrsh r0, [r1, r7] cmp r0, r2 bne _08058854 movs r0, 0x16 ldrsh r1, [r1, r0] asrs r0, r5, 16 cmp r1, r0 bne _08058854 _0805884A: movs r0, 0x1 b _0805886A .align 2, 0 _08058850: .4byte gObjectEvents _08058854: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xF bls _08058810 asrs r0, r3, 16 asrs r1, r5, 16 bl MapGridIsImpassableAt lsls r0, 24 lsrs r0, 24 _0805886A: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end npc_080587EC thumb_func_start CreateLinkPlayerSprite CreateLinkPlayerSprite: @ 8058878 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 lsrs r3, r1, 24 lsls r2, r5, 2 ldr r0, _080588B4 @ =gLinkPlayerObjectEvents adds r2, r0 ldrb r1, [r2, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _080588B8 @ =gObjectEvents adds r4, r0, r1 ldrb r0, [r2] cmp r0, 0 beq _080588FC subs r0, r3, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _080588BC ldrb r1, [r4] lsls r1, 30 lsrs r1, 31 movs r0, 0 bl GetRivalAvatarGraphicsIdByStateIdAndGender b _080588C6 .align 2, 0 _080588B4: .4byte gLinkPlayerObjectEvents _080588B8: .4byte gObjectEvents _080588BC: ldrb r0, [r4] lsls r0, 30 lsrs r0, 31 bl GetHoennLinkPartnerGraphicsIdByGender _080588C6: lsls r0, 24 lsrs r0, 24 ldr r1, _08058904 @ =SpriteCB_LinkPlayer movs r2, 0 str r2, [sp] movs r3, 0 bl AddPseudoObjectEvent strb r0, [r4, 0x4] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08058908 @ =gSprites adds r0, r1 adds r3, r0, 0 adds r3, 0x3E ldrb r1, [r3] movs r2, 0x2 orrs r1, r2 strb r1, [r3] strh r5, [r0, 0x2E] ldrb r1, [r4] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r4] _080588FC: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08058904: .4byte SpriteCB_LinkPlayer _08058908: .4byte gSprites thumb_func_end CreateLinkPlayerSprite thumb_func_start SpriteCB_LinkPlayer SpriteCB_LinkPlayer: @ 805890C push {r4-r6,lr} adds r5, r0, 0 movs r0, 0x2E ldrsh r4, [r5, r0] lsls r4, 2 ldr r0, _08058970 @ =gLinkPlayerObjectEvents adds r4, r0 ldrb r1, [r4, 0x2] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08058974 @ =gObjectEvents adds r6, r0, r1 ldrh r0, [r6, 0xC] strh r0, [r5, 0x20] ldrh r0, [r6, 0xE] strh r0, [r5, 0x22] ldrb r0, [r6, 0xB] lsrs r0, 4 adds r1, r5, 0 movs r2, 0x1 bl SetObjectSubpriorityByZCoord ldrb r0, [r6, 0xB] lsrs r0, 4 bl ZCoordToPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 ldrb r2, [r5, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] ldrb r0, [r4, 0x3] cmp r0, 0 bne _08058978 ldrb r0, [r6, 0x19] bl GetFaceDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim b _0805898A .align 2, 0 _08058970: .4byte gLinkPlayerObjectEvents _08058974: .4byte gObjectEvents _08058978: ldrb r0, [r6, 0x19] bl GetMoveDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnimIfDifferent _0805898A: adds r0, r5, 0 movs r1, 0 bl UpdateObjectEventSpriteVisibility ldrb r0, [r6] lsls r0, 29 cmp r0, 0 bge _080589BC ldrh r0, [r5, 0x3C] movs r1, 0x4 ands r1, r0 lsls r1, 16 adds r3, r5, 0 adds r3, 0x3E lsrs r1, 18 lsls r1, 2 ldrb r2, [r3] movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] _080589BC: pop {r4-r6} pop {r0} bx r0 thumb_func_end SpriteCB_LinkPlayer .align 2, 0 @ Don't pad with nop.