Files
Pokemon-Firered/asm/overworld.s
T
2020-03-28 18:00:52 -04:00

2383 lines
42 KiB
ArmAsm

.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.