Files
Pokemon-Firered/asm/cable_club.s
T
2020-02-29 14:30:01 -05:00

1505 lines
28 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8080F78
sub_8080F78: @ 8080F78
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _08080FAC @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08080FA6
ldr r0, _08080FB0 @ =gTasks
lsls r4, r5, 2
adds r4, r5
lsls r4, 3
adds r4, r0
ldrh r0, [r4, 0x12]
bl sub_80807E8
bl EnableBothScriptContexts
ldrb r0, [r4, 0x12]
bl RemoveWindow
adds r0, r5, 0
bl DestroyTask
_08080FA6:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08080FAC: .4byte gReceivedRemoteLinkPlayers
_08080FB0: .4byte gTasks
thumb_func_end sub_8080F78
thumb_func_start sub_8080FB4
sub_8080FB4: @ 8080FB4
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r1, _08080FE8 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
ldr r1, _08080FEC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x12]
bl sub_80807E8
bl HideFieldMessageBox
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08080FE8: .4byte gSpecialVar_Result
_08080FEC: .4byte gTasks
thumb_func_end sub_8080FB4
thumb_func_start sub_8080FF0
sub_8080FF0: @ 8080FF0
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r1, _08081024 @ =gSpecialVar_Result
movs r0, 0x6
strh r0, [r1]
ldr r1, _08081028 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x12]
bl sub_80807E8
bl HideFieldMessageBox
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081024: .4byte gSpecialVar_Result
_08081028: .4byte gTasks
thumb_func_end sub_8080FF0
thumb_func_start sub_808102C
sub_808102C: @ 808102C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _08081050 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r2, r1, r2
ldrh r0, [r2, 0x10]
adds r0, 0x1
strh r0, [r2, 0x10]
lsls r0, 16
movs r1, 0x96
lsls r1, 18
cmp r0, r1
bgt _08081054
movs r0, 0
b _0808105A
.align 2, 0
_08081050: .4byte gTasks
_08081054:
ldr r0, _08081060 @ =sub_8080FF0
str r0, [r2]
movs r0, 0x1
_0808105A:
pop {r1}
bx r1
.align 2, 0
_08081060: .4byte sub_8080FF0
thumb_func_end sub_808102C
thumb_func_start TryBattleLinkup
TryBattleLinkup: @ 8081064
push {r4,lr}
movs r3, 0x2
movs r2, 0x2
ldr r0, _0808107C @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _08081098
cmp r0, 0x2
bgt _08081080
cmp r0, 0x1
beq _08081086
b _080810B4
.align 2, 0
_0808107C: .4byte gSpecialVar_0x8004
_08081080:
cmp r0, 0x5
beq _080810A8
b _080810B4
_08081086:
movs r3, 0x2
ldr r1, _08081090 @ =gLinkType
ldr r4, _08081094 @ =0x00002233
b _080810B0
.align 2, 0
_08081090: .4byte gLinkType
_08081094: .4byte 0x00002233
_08081098:
movs r3, 0x2
ldr r1, _080810A0 @ =gLinkType
ldr r4, _080810A4 @ =0x00002244
b _080810B0
.align 2, 0
_080810A0: .4byte gLinkType
_080810A4: .4byte 0x00002244
_080810A8:
movs r3, 0x4
movs r2, 0x4
ldr r1, _080810C4 @ =gLinkType
ldr r4, _080810C8 @ =0x00002255
_080810B0:
adds r0, r4, 0
strh r0, [r1]
_080810B4:
adds r0, r3, 0
adds r1, r2, 0
bl sub_8080748
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080810C4: .4byte gLinkType
_080810C8: .4byte 0x00002255
thumb_func_end TryBattleLinkup
thumb_func_start TryTradeLinkup
TryTradeLinkup: @ 80810CC
push {lr}
ldr r1, _080810E8 @ =gLinkType
ldr r2, _080810EC @ =0x00001133
adds r0, r2, 0
strh r0, [r1]
ldr r1, _080810F0 @ =gBattleTypeFlags
movs r0, 0
str r0, [r1]
movs r0, 0x2
movs r1, 0x2
bl sub_8080748
pop {r0}
bx r0
.align 2, 0
_080810E8: .4byte gLinkType
_080810EC: .4byte 0x00001133
_080810F0: .4byte gBattleTypeFlags
thumb_func_end TryTradeLinkup
thumb_func_start sub_80810F4
sub_80810F4: @ 80810F4
push {lr}
ldr r1, _08081118 @ =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
ldr r1, _0808111C @ =gLinkType
ldr r2, _08081120 @ =0x00003311
adds r0, r2, 0
strh r0, [r1]
ldr r1, _08081124 @ =gBattleTypeFlags
movs r0, 0
str r0, [r1]
movs r0, 0x2
movs r1, 0x4
bl sub_8080748
pop {r0}
bx r0
.align 2, 0
_08081118: .4byte gSpecialVar_Result
_0808111C: .4byte gLinkType
_08081120: .4byte 0x00003311
_08081124: .4byte gBattleTypeFlags
thumb_func_end sub_80810F4
thumb_func_start sub_8081128
sub_8081128: @ 8081128
push {lr}
ldr r1, _08081144 @ =gLinkType
ldr r2, _08081148 @ =0x00006601
adds r0, r2, 0
strh r0, [r1]
ldr r1, _0808114C @ =gBattleTypeFlags
movs r0, 0
str r0, [r1]
movs r0, 0x4
movs r1, 0x4
bl sub_8080748
pop {r0}
bx r0
.align 2, 0
_08081144: .4byte gLinkType
_08081148: .4byte 0x00006601
_0808114C: .4byte gBattleTypeFlags
thumb_func_end sub_8081128
thumb_func_start sub_8081150
sub_8081150: @ 8081150
push {lr}
ldr r0, _08081164 @ =sub_80811FC
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
beq _08081168
movs r0, 0xFF
b _080811EC
.align 2, 0
_08081164: .4byte sub_80811FC
_08081168:
ldr r0, _0808117C @ =gSpecialVar_0x8004
ldrh r0, [r0]
subs r0, 0x1
cmp r0, 0x4
bhi _080811E0
lsls r0, 2
ldr r1, _08081180 @ =_08081184
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0808117C: .4byte gSpecialVar_0x8004
_08081180: .4byte _08081184
.align 2, 0
_08081184:
.4byte _08081198
.4byte _080811A8
.4byte _080811C8
.4byte _080811D8
.4byte _080811B8
_08081198:
ldr r1, _080811A0 @ =gLinkType
ldr r2, _080811A4 @ =0x00002233
b _080811DC
.align 2, 0
_080811A0: .4byte gLinkType
_080811A4: .4byte 0x00002233
_080811A8:
ldr r1, _080811B0 @ =gLinkType
ldr r2, _080811B4 @ =0x00002244
b _080811DC
.align 2, 0
_080811B0: .4byte gLinkType
_080811B4: .4byte 0x00002244
_080811B8:
ldr r1, _080811C0 @ =gLinkType
ldr r2, _080811C4 @ =0x00002255
b _080811DC
.align 2, 0
_080811C0: .4byte gLinkType
_080811C4: .4byte 0x00002255
_080811C8:
ldr r1, _080811D0 @ =gLinkType
ldr r2, _080811D4 @ =0x00001111
b _080811DC
.align 2, 0
_080811D0: .4byte gLinkType
_080811D4: .4byte 0x00001111
_080811D8:
ldr r1, _080811F0 @ =gLinkType
ldr r2, _080811F4 @ =0x00003322
_080811DC:
adds r0, r2, 0
strh r0, [r1]
_080811E0:
ldr r0, _080811F8 @ =sub_80811FC
movs r1, 0x50
bl CreateTask
lsls r0, 24
lsrs r0, 24
_080811EC:
pop {r1}
bx r1
.align 2, 0
_080811F0: .4byte gLinkType
_080811F4: .4byte 0x00003322
_080811F8: .4byte sub_80811FC
thumb_func_end sub_8081150
thumb_func_start sub_80811FC
sub_80811FC: @ 80811FC
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08081228 @ =gTasks+0x8
adds r4, r1, r0
movs r3, 0
ldrsh r2, [r4, r3]
cmp r2, 0
bne _08081230
bl OpenLink
bl ResetLinkPlayers
ldr r0, _0808122C @ =sub_8081A90
movs r1, 0x50
bl CreateTask
b _0808123C
.align 2, 0
_08081228: .4byte gTasks+0x8
_0808122C: .4byte sub_8081A90
_08081230:
cmp r2, 0x9
ble _0808123C
subs r0, 0x8
adds r0, r1, r0
ldr r1, _08081248 @ =sub_808124C
str r1, [r0]
_0808123C:
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081248: .4byte sub_808124C
thumb_func_end sub_80811FC
thumb_func_start sub_808124C
sub_808124C: @ 808124C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
bl GetLinkPlayerCount_2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bls _08081292
bl IsLinkMaster
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08081284
ldr r0, _0808127C @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldr r0, _08081280 @ =sub_80812A0
b _08081290
.align 2, 0
_0808127C: .4byte gTasks
_08081280: .4byte sub_80812A0
_08081284:
ldr r0, _08081298 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _0808129C @ =sub_80812D8
_08081290:
str r0, [r1]
_08081292:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08081298: .4byte gTasks
_0808129C: .4byte sub_80812D8
thumb_func_end sub_808124C
thumb_func_start sub_80812A0
sub_80812A0: @ 80812A0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
bl GetSavedPlayerCount
adds r4, r0, 0
bl GetLinkPlayerCount_2
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _080812CA
bl CheckShouldAdvanceLinkState
ldr r0, _080812D0 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _080812D4 @ =sub_80812D8
str r0, [r1]
_080812CA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080812D0: .4byte gTasks
_080812D4: .4byte sub_80812D8
thumb_func_end sub_80812A0
thumb_func_start sub_80812D8
sub_80812D8: @ 80812D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _08081308 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _08081300
bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08081300
bl sub_800A9A4
bl sub_8009FE8
adds r0, r4, 0
bl DestroyTask
_08081300:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081308: .4byte gReceivedRemoteLinkPlayers
thumb_func_end sub_80812D8
thumb_func_start sub_808130C
sub_808130C: @ 808130C
push {lr}
bl Field_AskSaveTheGame
pop {r0}
bx r0
thumb_func_end sub_808130C
thumb_func_start sub_8081318
sub_8081318: @ 8081318
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _0808133C @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x5
bls _08081332
b _0808143A
_08081332:
lsls r0, 2
ldr r1, _08081340 @ =_08081344
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0808133C: .4byte gTasks
_08081340: .4byte _08081344
.align 2, 0
_08081344:
.4byte _0808135C
.4byte _0808137C
.4byte _0808138C
.4byte _0808139C
.4byte _080813A2
.4byte _080813B8
_0808135C:
movs r0, 0x1
movs r1, 0
bl FadeScreen
ldr r1, _08081374 @ =gLinkType
ldr r2, _08081378 @ =0x00002211
adds r0, r2, 0
strh r0, [r1]
bl ClearLinkCallback_2
b _080813AA
.align 2, 0
_08081374: .4byte gLinkType
_08081378: .4byte 0x00002211
_0808137C:
ldr r0, _08081388 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
b _080813A6
.align 2, 0
_08081388: .4byte gPaletteFade
_0808138C:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
ble _0808143A
b _080813AA
_0808139C:
bl Link_TryStartSend5FFF
b _080813AA
_080813A2:
ldr r0, _080813B4 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
_080813A6:
cmp r0, 0
bne _0808143A
_080813AA:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _0808143A
.align 2, 0
_080813B4: .4byte gReceivedRemoteLinkPlayers
_080813B8:
ldr r0, _080813CC @ =gLinkPlayers
ldr r0, [r0, 0x4]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080813D4
ldr r0, _080813D0 @ =0x00000109
bl PlayMapChosenOrBattleBGM
b _080813DC
.align 2, 0
_080813CC: .4byte gLinkPlayers
_080813D0: .4byte 0x00000109
_080813D4:
movs r0, 0x85
lsls r0, 1
bl PlayMapChosenOrBattleBGM
_080813DC:
ldr r0, _080813F0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _08081404
cmp r0, 0x2
bgt _080813F4
cmp r0, 0x1
beq _080813FA
b _0808141A
.align 2, 0
_080813F0: .4byte gSpecialVar_0x8004
_080813F4:
cmp r0, 0x5
beq _08081410
b _0808141A
_080813FA:
ldr r1, _08081400 @ =gBattleTypeFlags
movs r0, 0xA
b _08081418
.align 2, 0
_08081400: .4byte gBattleTypeFlags
_08081404:
ldr r1, _0808140C @ =gBattleTypeFlags
movs r0, 0xB
b _08081418
.align 2, 0
_0808140C: .4byte gBattleTypeFlags
_08081410:
bl ReducePlayerPartyToThree
ldr r1, _08081440 @ =gBattleTypeFlags
movs r0, 0x4B
_08081418:
str r0, [r1]
_0808141A:
bl CleanupOverworldWindowsAndTilemaps
ldr r1, _08081444 @ =gTrainerBattleOpponent_A
movs r2, 0x80
lsls r2, 4
adds r0, r2, 0
strh r0, [r1]
ldr r0, _08081448 @ =CB2_InitBattle
bl SetMainCallback2
ldr r1, _0808144C @ =gMain
ldr r0, _08081450 @ =sub_8081668
str r0, [r1, 0x8]
adds r0, r5, 0
bl DestroyTask
_0808143A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08081440: .4byte gBattleTypeFlags
_08081444: .4byte gTrainerBattleOpponent_A
_08081448: .4byte CB2_InitBattle
_0808144C: .4byte gMain
_08081450: .4byte sub_8081668
thumb_func_end sub_8081318
thumb_func_start sub_8081454
sub_8081454: @ 8081454
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _08081478 @ =gTasks+0x8
adds r6, r0, r1
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x7
bls _0808146E
b _0808160A
_0808146E:
lsls r0, 2
ldr r1, _0808147C @ =_08081480
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08081478: .4byte gTasks+0x8
_0808147C: .4byte _08081480
.align 2, 0
_08081480:
.4byte _080814A0
.4byte _080814C4
.4byte _080814DC
.4byte _080814F0
.4byte _0808154C
.4byte _08081560
.4byte _0808156A
.4byte _0808157A
_080814A0:
movs r0, 0x1
movs r1, 0
bl FadeScreen
ldr r0, _080814BC @ =gLinkType
ldr r2, _080814C0 @ =0x00002211
adds r1, r2, 0
strh r1, [r0]
bl ClearLinkCallback_2
movs r0, 0x1
strh r0, [r6]
b _0808160A
.align 2, 0
_080814BC: .4byte gLinkType
_080814C0: .4byte 0x00002211
_080814C4:
ldr r0, _080814D8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080814D2
b _0808160A
_080814D2:
movs r0, 0x2
strh r0, [r6]
b _0808160A
.align 2, 0
_080814D8: .4byte gPaletteFade
_080814DC:
ldr r1, _080814EC @ =gLocalLinkPlayer
movs r0, 0
movs r2, 0x1C
bl SendBlock
movs r0, 0x3
strh r0, [r6]
b _0808160A
.align 2, 0
_080814EC: .4byte gLocalLinkPlayer
_080814F0:
bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A8D4
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _08081504
b _0808160A
_08081504:
movs r4, 0
ldr r5, _0808150C @ =gLinkPlayers
b _08081536
.align 2, 0
_0808150C: .4byte gLinkPlayers
_08081510:
lsls r1, r4, 8
ldr r2, _08081548 @ =gBlockRecvBuffer
adds r0, r5, 0
adds r1, r2
ldm r1!, {r2,r3,r7}
stm r0!, {r2,r3,r7}
ldm r1!, {r2,r3,r7}
stm r0!, {r2,r3,r7}
ldr r1, [r1]
str r1, [r0]
adds r0, r5, 0
bl IntlConvertLinkPlayerName
lsls r0, r4, 24
lsrs r0, 24
bl ResetBlockReceivedFlag
adds r5, 0x1C
adds r4, 0x1
_08081536:
bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
blt _08081510
movs r0, 0x4
strh r0, [r6]
b _0808160A
.align 2, 0
_08081548: .4byte gBlockRecvBuffer
_0808154C:
ldrh r0, [r6, 0x2]
adds r0, 0x1
strh r0, [r6, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0x14
ble _0808160A
movs r0, 0x5
strh r0, [r6]
b _0808160A
_08081560:
bl PrepareSendLinkCmd2FFE_or_RfuCmd6600
movs r0, 0x6
strh r0, [r6]
b _0808160A
_0808156A:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0808160A
movs r0, 0x7
strh r0, [r6]
b _0808160A
_0808157A:
ldr r0, _08081590 @ =gLinkPlayers
ldr r0, [r0, 0x4]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08081598
ldr r0, _08081594 @ =0x00000109
bl PlayMapChosenOrBattleBGM
b _080815A0
.align 2, 0
_08081590: .4byte gLinkPlayers
_08081594: .4byte 0x00000109
_08081598:
movs r0, 0x85
lsls r0, 1
bl PlayMapChosenOrBattleBGM
_080815A0:
ldr r0, _080815B8 @ =gLinkPlayers
ldr r1, _080815BC @ =0x00002211
str r1, [r0, 0x14]
ldr r0, _080815C0 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x2
beq _080815D4
cmp r0, 0x2
bgt _080815C4
cmp r0, 0x1
beq _080815CA
b _080815EA
.align 2, 0
_080815B8: .4byte gLinkPlayers
_080815BC: .4byte 0x00002211
_080815C0: .4byte gSpecialVar_0x8004
_080815C4:
cmp r0, 0x5
beq _080815E0
b _080815EA
_080815CA:
ldr r1, _080815D0 @ =gBattleTypeFlags
movs r0, 0xA
b _080815E8
.align 2, 0
_080815D0: .4byte gBattleTypeFlags
_080815D4:
ldr r1, _080815DC @ =gBattleTypeFlags
movs r0, 0xB
b _080815E8
.align 2, 0
_080815DC: .4byte gBattleTypeFlags
_080815E0:
bl ReducePlayerPartyToThree
ldr r1, _08081610 @ =gBattleTypeFlags
movs r0, 0x4B
_080815E8:
str r0, [r1]
_080815EA:
bl CleanupOverworldWindowsAndTilemaps
ldr r1, _08081614 @ =gTrainerBattleOpponent_A
movs r3, 0x80
lsls r3, 4
adds r0, r3, 0
strh r0, [r1]
ldr r0, _08081618 @ =CB2_InitBattle
bl SetMainCallback2
ldr r1, _0808161C @ =gMain
ldr r0, _08081620 @ =sub_8081668
str r0, [r1, 0x8]
adds r0, r4, 0
bl DestroyTask
_0808160A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08081610: .4byte gBattleTypeFlags
_08081614: .4byte gTrainerBattleOpponent_A
_08081618: .4byte CB2_InitBattle
_0808161C: .4byte gMain
_08081620: .4byte sub_8081668
thumb_func_end sub_8081454
thumb_func_start sub_8081624
sub_8081624: @ 8081624
push {r4,lr}
ldr r0, _0808163C @ =gMain
movs r1, 0x87
lsls r1, 3
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, 0
beq _08081640
cmp r0, 0x1
beq _0808164C
b _0808165C
.align 2, 0
_0808163C: .4byte gMain
_08081640:
bl Link_TryStartSend5FFF
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _0808165C
_0808164C:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0808165C
ldr r0, _08081664 @ =CB2_ReturnToField
bl SetMainCallback2
_0808165C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081664: .4byte CB2_ReturnToField
thumb_func_end sub_8081624
thumb_func_start sub_8081668
sub_8081668: @ 8081668
push {r4,r5,lr}
ldr r2, _080816B0 @ =gBattleTypeFlags
ldr r0, [r2]
ldr r1, _080816B4 @ =0x0000ffdf
ands r0, r1
str r0, [r2]
bl sub_8055DB8
bl LoadPlayerParty
bl SavePlayerBag
bl Special_UpdateTrainerFansAfterLinkBattle
ldr r0, _080816B8 @ =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x5
beq _0808170A
ldr r0, _080816BC @ =gLocalLinkPlayerId
ldrb r0, [r0]
movs r5, 0x1
eors r0, r5
bl TryRecordLinkBattleOutcome
ldr r0, _080816C0 @ =gWirelessCommType
ldrb r0, [r0]
cmp r0, 0
beq _0808170A
ldr r0, _080816C4 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x1 @ B_OUTCOME_WON
beq _080816C8
cmp r0, 0x2 @ B_OUTCOME_LOST
beq _080816EC
b _0808170A
.align 2, 0
_080816B0: .4byte gBattleTypeFlags
_080816B4: .4byte 0x0000ffdf
_080816B8: .4byte gSpecialVar_0x8004
_080816BC: .4byte gLocalLinkPlayerId
_080816C0: .4byte gWirelessCommType
_080816C4: .4byte gBattleOutcome
_080816C8:
@ MEvent_RecordIdOfWonderCardSenderByEventType(0, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
ldr r4, _080816E8 @ =gLinkPlayers
bl GetMultiplayerId
eors r0, r5
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r4, 0x4
adds r1, r4
ldr r1, [r1]
movs r0, 0
bl MEvent_RecordIdOfWonderCardSenderByEventType
b _0808170A
.align 2, 0
_080816E8: .4byte gLinkPlayers
_080816EC:
@ MEvent_RecordIdOfWonderCardSenderByEventType(1, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
ldr r4, _08081718 @ =gLinkPlayers
bl GetMultiplayerId
eors r0, r5
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r4, 0x4
adds r1, r4
ldr r1, [r1]
movs r0, 0x1
bl MEvent_RecordIdOfWonderCardSenderByEventType
_0808170A:
bl InUnionRoom
cmp r0, 0x1
bne _08081724
ldr r1, _0808171C @ =gMain
ldr r0, _08081720 @ =sub_8081624
b _08081728
.align 2, 0
_08081718: .4byte gLinkPlayers
_0808171C: .4byte gMain
_08081720: .4byte sub_8081624
_08081724:
ldr r1, _08081738 @ =gMain
ldr r0, _0808173C @ =c2_8056854
_08081728:
str r0, [r1, 0x8]
ldr r0, _08081740 @ =CB2_SetUpSaveAfterLinkBattle
bl SetMainCallback2
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08081738: .4byte gMain
_0808173C: .4byte c2_8056854
_08081740: .4byte CB2_SetUpSaveAfterLinkBattle
thumb_func_end sub_8081668
thumb_func_start CleanupLinkRoomState
CleanupLinkRoomState: @ 8081744
push {lr}
ldr r0, _0808176C @ =gSpecialVar_0x8004
ldrh r1, [r0]
subs r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bls _08081758
cmp r1, 0x5
bne _08081760
_08081758:
bl LoadPlayerParty
bl SavePlayerBag
_08081760:
movs r0, 0x7F
bl copy_saved_warp2_bank_and_enter_x_to_warp1
pop {r0}
bx r0
.align 2, 0
_0808176C: .4byte gSpecialVar_0x8004
thumb_func_end CleanupLinkRoomState
thumb_func_start sub_8081770
sub_8081770: @ 8081770
push {lr}
bl sub_8057F5C
pop {r0}
bx r0
thumb_func_end sub_8081770
thumb_func_start sub_808177C
sub_808177C: @ 808177C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080817A0 @ =gTasks
adds r5, r0, r1
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080817C0
cmp r0, 0x1
bgt _080817A4
cmp r0, 0
beq _080817AE
b _08081820
.align 2, 0
_080817A0: .4byte gTasks
_080817A4:
cmp r0, 0x2
beq _080817E0
cmp r0, 0x3
beq _0808180C
b _08081820
_080817AE:
ldr r0, _080817BC @ =CableClub_Text_PleaseWaitBCancel
bl ShowFieldMessage
movs r0, 0x1
strh r0, [r5, 0x8]
b _08081820
.align 2, 0
_080817BC: .4byte CableClub_Text_PleaseWaitBCancel
_080817C0:
bl IsFieldMessageBoxHidden
lsls r0, 24
cmp r0, 0
beq _08081820
bl sub_8057F34
ldr r0, _080817DC @ =gSpecialVar_0x8005
ldrb r0, [r0]
bl SetLocalLinkPlayerId
movs r0, 0x2
strh r0, [r5, 0x8]
b _08081820
.align 2, 0
_080817DC: .4byte gSpecialVar_0x8005
_080817E0:
bl sub_8057EC0
cmp r0, 0x1
beq _080817F2
cmp r0, 0x1
bcc _08081820
cmp r0, 0x2
beq _08081806
b _08081820
_080817F2:
bl HideFieldMessageBox
movs r0, 0
strh r0, [r5, 0x8]
bl sub_8057F70
adds r0, r4, 0
bl SwitchTaskToFollowupFunc
b _08081820
_08081806:
movs r0, 0x3
strh r0, [r5, 0x8]
b _08081820
_0808180C:
bl sub_8057F48
movs r0, 0x1
bl sub_80F771C
adds r0, r4, 0
bl DestroyTask
bl EnableBothScriptContexts
_08081820:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_808177C
thumb_func_start sub_8081828
sub_8081828: @ 8081828
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _0808184C @ =sub_808177C
adds r0, r4, 0
movs r1, 0x50
bl CreateTask
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
adds r2, r5, 0
bl SetTaskFuncWithFollowupFunc
bl ScriptContext1_Stop
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0808184C: .4byte sub_808177C
thumb_func_end sub_8081828
thumb_func_start sub_8081850
sub_8081850: @ 8081850
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _08081874 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _08081894
cmp r0, 0x1
bgt _08081878
cmp r0, 0
beq _08081882
b _080818D8
.align 2, 0
_08081874: .4byte gTasks
_08081878:
cmp r0, 0x2
beq _080818A8
cmp r0, 0x3
beq _080818C4
b _080818D8
_08081882:
bl ScriptContext2_Enable
movs r0, 0x1
movs r1, 0
bl FadeScreen
bl ClearLinkCallback_2
b _080818B8
_08081894:
ldr r0, _080818A4 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080818D8
b _080818B8
.align 2, 0
_080818A4: .4byte gPaletteFade
_080818A8:
ldr r1, _080818C0 @ =gSelectedTradeMonPositions
movs r0, 0
strb r0, [r1]
strb r0, [r1, 0x1]
bl m4aMPlayAllStop
bl Link_TryStartSend5FFF
_080818B8:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080818D8
.align 2, 0
_080818C0: .4byte gSelectedTradeMonPositions
_080818C4:
ldr r0, _080818E0 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080818D8
ldr r0, _080818E4 @ =CB2_ReturnFromLinkTrade
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
_080818D8:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080818E0: .4byte gReceivedRemoteLinkPlayers
_080818E4: .4byte CB2_ReturnFromLinkTrade
thumb_func_end sub_8081850
thumb_func_start sub_80818E8
sub_80818E8: @ 80818E8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _0808190C @ =gTasks+0x8
adds r4, r0, r1
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _0808192C
cmp r0, 0x1
bgt _08081910
cmp r0, 0
beq _0808191A
b _08081970
.align 2, 0
_0808190C: .4byte gTasks+0x8
_08081910:
cmp r0, 0x2
beq _08081940
cmp r0, 0x3
beq _0808195C
b _08081970
_0808191A:
bl ScriptContext2_Enable
movs r0, 0x1
movs r1, 0
bl FadeScreen
bl Rfu_set_zero
b _08081950
_0808192C:
ldr r0, _0808193C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08081970
b _08081950
.align 2, 0
_0808193C: .4byte gPaletteFade
_08081940:
ldr r1, _08081958 @ =gSelectedTradeMonPositions
movs r0, 0
strb r0, [r1]
strb r0, [r1, 0x1]
bl m4aMPlayAllStop
bl PrepareSendLinkCmd2FFE_or_RfuCmd6600
_08081950:
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
b _08081970
.align 2, 0
_08081958: .4byte gSelectedTradeMonPositions
_0808195C:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _08081970
bl UnionRoom_CreateTask_CallBC2ReturnFromLinkTrade
adds r0, r5, 0
bl DestroyTask
_08081970:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80818E8
thumb_func_start EnterTradeSeat
EnterTradeSeat: @ 8081978
push {lr}
ldr r0, _0808198C @ =gWirelessCommType
ldrb r0, [r0]
cmp r0, 0
beq _08081994
ldr r0, _08081990 @ =sub_80818E8
bl sub_8081828
b _0808199A
.align 2, 0
_0808198C: .4byte gWirelessCommType
_08081990: .4byte sub_80818E8
_08081994:
ldr r0, _080819A0 @ =sub_8081850
bl sub_8081828
_0808199A:
pop {r0}
bx r0
.align 2, 0
_080819A0: .4byte sub_8081850
thumb_func_end EnterTradeSeat
thumb_func_start sub_80819A4
sub_80819A4: @ 80819A4
push {lr}
ldr r0, _080819B4 @ =sub_8081850
movs r1, 0x50
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080819B4: .4byte sub_8081850
thumb_func_end sub_80819A4
thumb_func_start sub_80819B8
sub_80819B8: @ 80819B8
push {lr}
bl sub_80819A4
bl ScriptContext1_Stop
pop {r0}
bx r0
thumb_func_end sub_80819B8
thumb_func_start EnterColosseumPlayerSpot
EnterColosseumPlayerSpot: @ 80819C8
push {lr}
ldr r1, _080819E4 @ =gLinkType
ldr r2, _080819E8 @ =0x00002211
adds r0, r2, 0
strh r0, [r1]
ldr r0, _080819EC @ =gWirelessCommType
ldrb r0, [r0]
cmp r0, 0
beq _080819F4
ldr r0, _080819F0 @ =sub_8081454
bl sub_8081828
b _080819FA
.align 2, 0
_080819E4: .4byte gLinkType
_080819E8: .4byte 0x00002211
_080819EC: .4byte gWirelessCommType
_080819F0: .4byte sub_8081454
_080819F4:
ldr r0, _08081A00 @ =sub_8081318
bl sub_8081828
_080819FA:
pop {r0}
bx r0
.align 2, 0
_08081A00: .4byte sub_8081318
thumb_func_end EnterColosseumPlayerSpot
thumb_func_start sub_8081A04
sub_8081A04: @ 8081A04
push {lr}
ldr r0, _08081A18 @ =sub_808177C
movs r1, 0x50
bl CreateTask
bl ScriptContext1_Stop
pop {r0}
bx r0
.align 2, 0
_08081A18: .4byte sub_808177C
thumb_func_end sub_8081A04
thumb_func_start Script_ShowLinkTrainerCard
Script_ShowLinkTrainerCard: @ 8081A1C
push {lr}
ldr r0, _08081A2C @ =gSpecialVar_0x8006
ldrb r0, [r0]
ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl ShowTrainerCardInLink
pop {r0}
bx r0
.align 2, 0
_08081A2C: .4byte gSpecialVar_0x8006
_08081A30: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end Script_ShowLinkTrainerCard
thumb_func_start sub_8081A34
sub_8081A34: @ 8081A34
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08081A74 @ =gSpecialVar_0x8006
strh r4, [r0]
ldr r0, _08081A78 @ =gStringVar1
lsls r1, r4, 3
subs r1, r4
lsls r1, 2
ldr r2, _08081A7C @ =gLinkPlayers + 8
adds r1, r2
bl StringCopy
adds r0, r4, 0
bl GetTrainerCardStars
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08081A88
ldr r0, _08081A80 @ =gStringVar2
ldr r2, _08081A84 @ =gUnknown_83C6AB8
subs r1, 0x1
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl StringCopy
movs r0, 0x1
b _08081A8A
.align 2, 0
_08081A74: .4byte gSpecialVar_0x8006
_08081A78: .4byte gStringVar1
_08081A7C: .4byte gLinkPlayers + 8
_08081A80: .4byte gStringVar2
_08081A84: .4byte gUnknown_83C6AB8
_08081A88:
movs r0, 0
_08081A8A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8081A34
thumb_func_start sub_8081A90
sub_8081A90: @ 8081A90
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _08081AD8 @ =gTasks
adds r0, r1
ldrh r1, [r0, 0x8]
adds r1, 0x1
strh r1, [r0, 0x8]
lsls r1, 16
movs r0, 0x96
lsls r0, 17
cmp r1, r0
ble _08081AC2
bl CloseLink
ldr r0, _08081ADC @ =CB2_LinkError
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
_08081AC2:
ldr r0, _08081AE0 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08081AD0
adds r0, r5, 0
bl DestroyTask
_08081AD0:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08081AD8: .4byte gTasks
_08081ADC: .4byte CB2_LinkError
_08081AE0: .4byte gReceivedRemoteLinkPlayers
thumb_func_end sub_8081A90
thumb_func_start sub_8081AE4
sub_8081AE4: @ 8081AE4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _08081B04 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08081AFC
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
_08081AFC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081B04: .4byte gReceivedRemoteLinkPlayers
thumb_func_end sub_8081AE4
thumb_func_start sub_8081B08
sub_8081B08: @ 8081B08
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl Link_TryStartSend5FFF
ldr r1, _08081B28 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _08081B2C @ =sub_8081AE4
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08081B28: .4byte gTasks
_08081B2C: .4byte sub_8081AE4
thumb_func_end sub_8081B08
.align 2, 0 @ Don't pad with nop.