mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-13 07:03:40 +01:00
still going
This commit is contained in:
parent
e95b1156d2
commit
e50f4b4999
@ -6,947 +6,7 @@
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_8013B8C
|
||||
sub_8013B8C: @ 8013B8C
|
||||
push {lr}
|
||||
lsls r1, 5
|
||||
ldr r0, [r0]
|
||||
adds r3, r0, r1
|
||||
ldr r0, =gUnknown_02022C2C
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08013BCE
|
||||
ldrb r1, [r3, 0x1]
|
||||
movs r0, 0x3C
|
||||
ands r0, r1
|
||||
cmp r0, 0xC
|
||||
beq _08013BCE
|
||||
ldr r0, =gSaveBlock2Ptr
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x9]
|
||||
movs r2, 0x80
|
||||
adds r0, r2, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08013BC4
|
||||
movs r0, 0x1
|
||||
b _08013BD4
|
||||
.pool
|
||||
_08013BC4:
|
||||
ldrb r1, [r3]
|
||||
adds r0, r2, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08013BD2
|
||||
_08013BCE:
|
||||
movs r0, 0
|
||||
b _08013BD4
|
||||
_08013BD2:
|
||||
movs r0, 0x2
|
||||
_08013BD4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8013B8C
|
||||
|
||||
thumb_func_start sub_8013BD8
|
||||
sub_8013BD8: @ 8013BD8
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
strb r1, [r4, 0xF]
|
||||
bl sub_800E0E8
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl CreateWirelessStatusIndicatorSprite
|
||||
ldrb r0, [r4, 0xE]
|
||||
bl sub_81AE70C
|
||||
ldr r0, =gStringVar1
|
||||
ldrb r2, [r4, 0xF]
|
||||
lsls r2, 5
|
||||
ldr r1, [r4]
|
||||
adds r1, r2
|
||||
bl sub_8018404
|
||||
ldr r1, =gUnknown_082F0530
|
||||
ldr r0, =gSpecialVar_0x8004
|
||||
ldrh r0, [r0]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8011090
|
||||
ldrb r1, [r4, 0xF]
|
||||
lsls r1, 5
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
adds r4, r0, 0
|
||||
adds r4, 0x10
|
||||
adds r0, 0x2
|
||||
bl ReadAsU16
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_8011FC8
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8013BD8
|
||||
|
||||
thumb_func_start sub_8013C40
|
||||
sub_8013C40: @ 8013C40
|
||||
push {lr}
|
||||
ldr r0, =sub_8013C7C
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r3, =gUnknown_02022C30
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r2, =gTasks + 0x8
|
||||
adds r1, r2
|
||||
str r1, [r3]
|
||||
movs r2, 0
|
||||
strb r2, [r1, 0x8]
|
||||
strb r2, [r1, 0x9]
|
||||
ldr r2, =gUnknown_03000DA4
|
||||
str r1, [r2]
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_8013C40
|
||||
|
||||
thumb_func_start sub_8013C7C
|
||||
sub_8013C7C: @ 8013C7C
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r4, [r0]
|
||||
ldrb r0, [r4, 0x8]
|
||||
cmp r0, 0xB
|
||||
bhi _08013D80
|
||||
lsls r0, 2
|
||||
ldr r1, =_08013CA0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_08013CA0:
|
||||
.4byte _08013CD0
|
||||
.4byte _08013D80
|
||||
.4byte _08013D04
|
||||
.4byte _08013D28
|
||||
.4byte _08013D80
|
||||
.4byte _08013D80
|
||||
.4byte _08013D80
|
||||
.4byte _08013D80
|
||||
.4byte _08013D80
|
||||
.4byte _08013D80
|
||||
.4byte _08013D58
|
||||
.4byte _08013D76
|
||||
_08013CD0:
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_8010F84
|
||||
bl sub_800B488
|
||||
bl OpenLink
|
||||
bl sub_8011C5C
|
||||
movs r0, 0x1
|
||||
bl sub_80111B0
|
||||
movs r0, 0x70
|
||||
bl AllocZeroed
|
||||
str r0, [r4, 0x4]
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
bl AllocZeroed
|
||||
str r0, [r4]
|
||||
movs r0, 0x2
|
||||
strb r0, [r4, 0x8]
|
||||
b _08013D80
|
||||
_08013D04:
|
||||
ldr r0, [r4, 0x4]
|
||||
movs r1, 0x4
|
||||
bl sub_80175EC
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x10
|
||||
bl sub_8017580
|
||||
ldr r0, [r4, 0x4]
|
||||
movs r1, 0xFF
|
||||
bl sub_8016FC0
|
||||
movs r1, 0
|
||||
strb r0, [r4, 0x11]
|
||||
strb r1, [r4, 0xF]
|
||||
movs r0, 0x3
|
||||
strb r0, [r4, 0x8]
|
||||
b _08013D80
|
||||
_08013D28:
|
||||
bl sub_8013E44
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _08013D3A
|
||||
movs r0, 0x2
|
||||
bl PlaySE
|
||||
_08013D3A:
|
||||
ldr r0, =gTasks
|
||||
lsls r1, r5, 2
|
||||
adds r1, r5
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
movs r2, 0x26
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0xFF
|
||||
bne _08013D80
|
||||
movs r0, 0xA
|
||||
strb r0, [r4, 0x8]
|
||||
b _08013D80
|
||||
.pool
|
||||
_08013D58:
|
||||
ldrb r0, [r4, 0x11]
|
||||
bl DestroyTask
|
||||
ldr r0, [r4]
|
||||
bl Free
|
||||
ldr r0, [r4, 0x4]
|
||||
bl Free
|
||||
bl sub_800EDD4
|
||||
ldrb r0, [r4, 0x8]
|
||||
adds r0, 0x1
|
||||
strb r0, [r4, 0x8]
|
||||
b _08013D80
|
||||
_08013D76:
|
||||
bl sub_800EDD4
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
_08013D80:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013C7C
|
||||
|
||||
thumb_func_start sub_8013D88
|
||||
sub_8013D88: @ 8013D88
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
cmp r1, 0xFF
|
||||
bne _08013D94
|
||||
_08013D90:
|
||||
movs r0, 0x1
|
||||
b _08013DB8
|
||||
_08013D94:
|
||||
cmp r1, 0x16
|
||||
bhi _08013DB6
|
||||
ldr r0, =gUnknown_082F04D8
|
||||
lsls r1, 2
|
||||
adds r1, r0
|
||||
ldr r1, [r1]
|
||||
b _08013DB0
|
||||
.pool
|
||||
_08013DA8:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r2
|
||||
beq _08013D90
|
||||
adds r1, 0x1
|
||||
_08013DB0:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xFF
|
||||
bne _08013DA8
|
||||
_08013DB6:
|
||||
movs r0, 0
|
||||
_08013DB8:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8013D88
|
||||
|
||||
thumb_func_start sub_8013DBC
|
||||
sub_8013DBC: @ 8013DBC
|
||||
push {lr}
|
||||
ldr r0, [r0]
|
||||
lsls r1, 5
|
||||
adds r1, r0, r1
|
||||
ldrb r2, [r1, 0x1A]
|
||||
lsls r0, r2, 30
|
||||
lsrs r0, 30
|
||||
cmp r0, 0x1
|
||||
bne _08013DEE
|
||||
ldrb r0, [r1, 0xA]
|
||||
lsrs r0, 7
|
||||
cmp r0, 0
|
||||
beq _08013DDA
|
||||
movs r0, 0x3
|
||||
b _08013DF0
|
||||
_08013DDA:
|
||||
lsls r0, r2, 29
|
||||
cmp r0, 0
|
||||
bge _08013DE4
|
||||
movs r0, 0x1
|
||||
b _08013DF0
|
||||
_08013DE4:
|
||||
ldrb r0, [r1, 0x1B]
|
||||
cmp r0, 0
|
||||
beq _08013DEE
|
||||
movs r0, 0x2
|
||||
b _08013DF0
|
||||
_08013DEE:
|
||||
movs r0, 0
|
||||
_08013DF0:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8013DBC
|
||||
|
||||
thumb_func_start sub_8013DF4
|
||||
sub_8013DF4: @ 8013DF4
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x8
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r6, r2, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r6, 24
|
||||
lsrs r6, 24
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r0, [r0]
|
||||
mov r8, r0
|
||||
bl sub_8013DBC
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r4, 5
|
||||
mov r2, r8
|
||||
ldr r3, [r2]
|
||||
adds r3, r1
|
||||
str r0, [sp]
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
str r4, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x8
|
||||
adds r2, r6, 0
|
||||
bl sub_80177B8
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8013DF4
|
||||
|
||||
thumb_func_start sub_8013E44
|
||||
sub_8013E44: @ 8013E44
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x4
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r6, [r0]
|
||||
movs r7, 0
|
||||
movs r3, 0
|
||||
_08013E54:
|
||||
ldr r0, [r6]
|
||||
lsls r5, r3, 5
|
||||
adds r2, r0, r5
|
||||
ldrb r0, [r2, 0x1A]
|
||||
lsls r0, 30
|
||||
mov r8, r5
|
||||
cmp r0, 0
|
||||
beq _08013F20
|
||||
ldr r1, [r6, 0x4]
|
||||
adds r0, r2, 0
|
||||
str r3, [sp]
|
||||
bl sub_80176E4
|
||||
adds r4, r0, 0
|
||||
ldr r3, [sp]
|
||||
cmp r4, 0xFF
|
||||
beq _08013EEE
|
||||
ldr r0, [r6]
|
||||
adds r2, r0, r5
|
||||
ldrb r1, [r2, 0x1A]
|
||||
lsls r0, r1, 30
|
||||
lsrs r0, 30
|
||||
cmp r0, 0x1
|
||||
bne _08013ECC
|
||||
lsls r0, r4, 3
|
||||
subs r0, r4
|
||||
lsls r4, r0, 2
|
||||
ldr r1, [r6, 0x4]
|
||||
adds r1, r4
|
||||
adds r0, r2, 0
|
||||
bl sub_8017678
|
||||
ldr r3, [sp]
|
||||
cmp r0, 0
|
||||
beq _08013EB0
|
||||
ldr r1, [r6]
|
||||
ldr r0, [r6, 0x4]
|
||||
adds r1, r5
|
||||
adds r0, r4
|
||||
ldm r0!, {r2,r4,r7}
|
||||
stm r1!, {r2,r4,r7}
|
||||
ldm r0!, {r2,r4,r7}
|
||||
stm r1!, {r2,r4,r7}
|
||||
b _08013EDA
|
||||
.pool
|
||||
_08013EB0:
|
||||
ldr r0, [r6]
|
||||
adds r1, r0, r5
|
||||
ldrb r0, [r1, 0x1B]
|
||||
cmp r0, 0
|
||||
beq _08013EE4
|
||||
subs r0, 0x1
|
||||
strb r0, [r1, 0x1B]
|
||||
ldr r0, [r6]
|
||||
adds r0, r5
|
||||
ldrb r0, [r0, 0x1B]
|
||||
cmp r0, 0
|
||||
bne _08013EE4
|
||||
movs r7, 0x2
|
||||
b _08013EE4
|
||||
_08013ECC:
|
||||
movs r4, 0x4
|
||||
negs r4, r4
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
movs r1, 0x1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, 0x1A]
|
||||
_08013EDA:
|
||||
ldr r0, [r6]
|
||||
adds r0, r5
|
||||
movs r1, 0x40
|
||||
strb r1, [r0, 0x1B]
|
||||
movs r7, 0x1
|
||||
_08013EE4:
|
||||
ldr r0, [r6]
|
||||
add r0, r8
|
||||
movs r1, 0
|
||||
strh r1, [r0, 0x18]
|
||||
b _08013F20
|
||||
_08013EEE:
|
||||
ldr r0, [r6]
|
||||
adds r1, r0, r5
|
||||
ldrb r0, [r1, 0x1A]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
cmp r0, 0x2
|
||||
beq _08013F20
|
||||
ldrh r0, [r1, 0x18]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1, 0x18]
|
||||
ldr r0, [r6]
|
||||
adds r2, r0, r5
|
||||
ldrh r1, [r2, 0x18]
|
||||
ldr r0, =0x0000012b
|
||||
cmp r1, r0
|
||||
bls _08013F20
|
||||
ldrb r0, [r2, 0x1A]
|
||||
movs r7, 0x4
|
||||
negs r7, r7
|
||||
adds r1, r7, 0
|
||||
ands r0, r1
|
||||
movs r1, 0x2
|
||||
orrs r0, r1
|
||||
strb r0, [r2, 0x1A]
|
||||
movs r7, 0x2
|
||||
_08013F20:
|
||||
adds r0, r3, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
cmp r3, 0xF
|
||||
bls _08013E54
|
||||
movs r5, 0
|
||||
movs r4, 0x3
|
||||
_08013F2E:
|
||||
ldr r0, [r6]
|
||||
ldr r1, [r6, 0x4]
|
||||
adds r1, r5
|
||||
movs r2, 0x10
|
||||
bl sub_8017734
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0xFF
|
||||
beq _08013F44
|
||||
movs r7, 0x1
|
||||
_08013F44:
|
||||
adds r5, 0x1C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08013F2E
|
||||
adds r0, r7, 0
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_8013E44
|
||||
|
||||
thumb_func_start sub_8013F60
|
||||
sub_8013F60: @ 8013F60
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl sub_80773AC
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013F60
|
||||
|
||||
thumb_func_start sub_8013F78
|
||||
sub_8013F78: @ 8013F78
|
||||
push {lr}
|
||||
ldr r0, =sub_8013F60
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_8013F78
|
||||
|
||||
thumb_func_start sub_8013F90
|
||||
sub_8013F90: @ 8013F90
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r0, =gUnknown_02022C40
|
||||
mov r8, r0
|
||||
bl GetMultiplayerId
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r0, r8
|
||||
bl sub_8018120
|
||||
adds r7, r0, 0
|
||||
ldr r1, =gTasks
|
||||
lsls r0, r6, 2
|
||||
adds r0, r6
|
||||
lsls r0, 3
|
||||
adds r5, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x1
|
||||
beq _08013FFC
|
||||
cmp r0, 0x1
|
||||
bgt _08013FD4
|
||||
cmp r0, 0
|
||||
beq _08013FDE
|
||||
b _080140BC
|
||||
.pool
|
||||
_08013FD4:
|
||||
cmp r0, 0x2
|
||||
beq _08014038
|
||||
cmp r0, 0x3
|
||||
beq _08014070
|
||||
b _080140BC
|
||||
_08013FDE:
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x8]
|
||||
movs r0, 0x64
|
||||
adds r1, r7, 0
|
||||
muls r1, r0
|
||||
ldr r0, =gPlayerParty
|
||||
adds r1, r0
|
||||
movs r0, 0
|
||||
movs r2, 0x64
|
||||
bl SendBlock
|
||||
b _080140BC
|
||||
.pool
|
||||
_08013FFC:
|
||||
bl GetBlockReceivedStatus
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x3
|
||||
bne _080140BC
|
||||
bl GetMultiplayerId
|
||||
adds r1, r0, 0
|
||||
ldr r0, =gEnemyParty
|
||||
movs r2, 0x1
|
||||
eors r1, r2
|
||||
lsls r1, 24
|
||||
lsrs r1, 16
|
||||
ldr r2, =gBlockRecvBuffer
|
||||
adds r1, r2
|
||||
movs r2, 0x64
|
||||
bl memcpy
|
||||
movs r0, 0x32
|
||||
bl IncrementGameStat
|
||||
bl ResetBlockReceivedFlags
|
||||
b _0801405A
|
||||
.pool
|
||||
_08014038:
|
||||
ldr r4, =gBlockSendBuffer
|
||||
ldr r0, =gSaveBlock1Ptr
|
||||
ldr r1, [r0]
|
||||
ldr r0, =0x00002be0
|
||||
adds r1, r0
|
||||
adds r0, r4, 0
|
||||
movs r2, 0xDC
|
||||
bl memcpy
|
||||
movs r0, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0xDC
|
||||
bl SendBlock
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080140BC
|
||||
_0801405A:
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x8]
|
||||
b _080140BC
|
||||
.pool
|
||||
_08014070:
|
||||
bl GetBlockReceivedStatus
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x3
|
||||
bne _080140BC
|
||||
ldr r4, =gUnknown_020321C0
|
||||
bl GetMultiplayerId
|
||||
adds r1, r0, 0
|
||||
movs r0, 0x1
|
||||
eors r1, r0
|
||||
lsls r1, 24
|
||||
lsrs r1, 16
|
||||
ldr r0, =gBlockRecvBuffer
|
||||
adds r1, r0
|
||||
adds r0, r4, 0
|
||||
movs r2, 0xD8
|
||||
bl memcpy
|
||||
bl ResetBlockReceivedFlags
|
||||
ldr r1, =gUnknown_02032298
|
||||
strb r7, [r1]
|
||||
movs r0, 0x6
|
||||
strb r0, [r1, 0x1]
|
||||
ldr r1, =gMain
|
||||
ldr r0, =CB2_ReturnToField
|
||||
str r0, [r1, 0x8]
|
||||
ldr r0, =sub_807AE50
|
||||
bl SetMainCallback2
|
||||
mov r0, r8
|
||||
bl sub_801807C
|
||||
adds r0, r6, 0
|
||||
bl DestroyTask
|
||||
_080140BC:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8013F90
|
||||
|
||||
thumb_func_start sub_80140E0
|
||||
sub_80140E0: @ 80140E0
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r1, =gTasks
|
||||
lsls r0, r6, 2
|
||||
adds r0, r6
|
||||
lsls r0, 3
|
||||
adds r4, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
beq _08014104
|
||||
cmp r0, 0x1
|
||||
beq _0801411C
|
||||
b _0801419E
|
||||
.pool
|
||||
_08014104:
|
||||
bl GetMultiplayerId
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08014114
|
||||
movs r0, 0x2
|
||||
bl sub_800A4D8
|
||||
_08014114:
|
||||
ldrh r0, [r4, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x8]
|
||||
b _0801419E
|
||||
_0801411C:
|
||||
bl GetBlockReceivedStatus
|
||||
adds r4, r0, 0
|
||||
bl sub_800A9D8
|
||||
lsls r4, 24
|
||||
lsls r0, 24
|
||||
cmp r4, r0
|
||||
bne _0801419E
|
||||
movs r4, 0
|
||||
ldr r5, =gLinkPlayers
|
||||
b _08014152
|
||||
.pool
|
||||
_08014138:
|
||||
lsls r1, r4, 8
|
||||
ldr r0, =gBlockRecvBuffer
|
||||
adds r3, r1, r0
|
||||
movs r0, 0x64
|
||||
muls r0, r4
|
||||
ldr r1, =gTrainerCards
|
||||
adds r0, r1
|
||||
ldrb r2, [r5]
|
||||
adds r1, r3, 0
|
||||
bl sub_80C3120
|
||||
adds r5, 0x1C
|
||||
adds r4, 0x1
|
||||
_08014152:
|
||||
bl GetLinkPlayerCount
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r4, r0
|
||||
blt _08014138
|
||||
bl GetLinkPlayerCount
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
bne _08014190
|
||||
bl GetMultiplayerId
|
||||
movs r1, 0x1
|
||||
eors r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r0, 16
|
||||
ldr r1, =gBlockRecvBuffer
|
||||
adds r3, r0, r1
|
||||
adds r0, r3, 0
|
||||
adds r0, 0x60
|
||||
ldrh r0, [r0]
|
||||
bl sub_801B94C
|
||||
b _08014194
|
||||
.pool
|
||||
_08014190:
|
||||
bl sub_801B940
|
||||
_08014194:
|
||||
bl ResetBlockReceivedFlags
|
||||
adds r0, r6, 0
|
||||
bl DestroyTask
|
||||
_0801419E:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80140E0
|
||||
|
||||
thumb_func_start sub_80141A4
|
||||
sub_80141A4: @ 80141A4
|
||||
push {r4,lr}
|
||||
ldr r0, =gMain
|
||||
movs r1, 0x87
|
||||
lsls r1, 3
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080141C0
|
||||
cmp r0, 0x1
|
||||
beq _080141D4
|
||||
b _080141F2
|
||||
.pool
|
||||
_080141C0:
|
||||
ldr r0, =sub_80140E0
|
||||
movs r1, 0x5
|
||||
bl CreateTask
|
||||
ldrb r0, [r4]
|
||||
adds r0, 0x1
|
||||
strb r0, [r4]
|
||||
b _080141F2
|
||||
.pool
|
||||
_080141D4:
|
||||
ldr r0, =sub_80140E0
|
||||
bl FuncIsActiveTask
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080141F2
|
||||
bl GetMultiplayerId
|
||||
movs r1, 0x1
|
||||
eors r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, =CB2_ReturnToField
|
||||
bl sub_80C4E74
|
||||
_080141F2:
|
||||
bl RunTasks
|
||||
bl RunTextPrinters
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_80141A4
|
||||
|
||||
thumb_func_start sub_8014210
|
||||
sub_8014210: @ 8014210
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
lsls r6, 16
|
||||
lsrs r6, 16
|
||||
bl HealPlayerParty
|
||||
bl SavePlayerParty
|
||||
bl LoadPlayerBag
|
||||
ldr r5, =gLinkPlayers
|
||||
ldr r0, =0x00002211
|
||||
str r0, [r5, 0x14]
|
||||
bl GetMultiplayerId
|
||||
adds r4, r0, 0
|
||||
bl GetMultiplayerId
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r1, r4, 3
|
||||
subs r1, r4
|
||||
lsls r1, 2
|
||||
adds r1, r5
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r1, 0x18]
|
||||
bl GetMultiplayerId
|
||||
adds r4, r0, 0
|
||||
bl GetMultiplayerId
|
||||
movs r2, 0x1
|
||||
eors r4, r2
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r1, r4, 3
|
||||
subs r1, r4
|
||||
lsls r1, 2
|
||||
adds r1, r5
|
||||
eors r0, r2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r1, 0x18]
|
||||
ldr r1, =gMain
|
||||
ldr r0, =sub_80B360C
|
||||
str r0, [r1, 0x8]
|
||||
ldr r0, =gBattleTypeFlags
|
||||
str r6, [r0]
|
||||
bl PlayBattleBGM
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8014210
|
||||
|
||||
thumb_func_start sub_8014290
|
||||
sub_8014290: @ 8014290
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x8
|
||||
adds r3, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r5, r2, 0
|
||||
lsls r3, 16
|
||||
lsrs r3, 16
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
lsls r5, 16
|
||||
lsrs r5, 16
|
||||
ldr r0, =0x00004087
|
||||
adds r1, r3, 0
|
||||
bl VarSet
|
||||
ldr r6, =gSaveBlock1Ptr
|
||||
ldr r1, [r6]
|
||||
movs r0, 0x4
|
||||
ldrsb r0, [r1, r0]
|
||||
ldrb r1, [r1, 0x5]
|
||||
lsls r1, 24
|
||||
asrs r1, 24
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
mov r8, r2
|
||||
lsls r4, 24
|
||||
asrs r4, 24
|
||||
lsls r5, 24
|
||||
asrs r5, 24
|
||||
str r5, [sp]
|
||||
adds r3, r4, 0
|
||||
bl Overworld_SetWarpDestination
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x4
|
||||
ldrsb r1, [r0, r1]
|
||||
movs r2, 0x5
|
||||
ldrsb r2, [r0, r2]
|
||||
str r4, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
movs r0, 0
|
||||
mov r3, r8
|
||||
bl saved_warp2_set_2
|
||||
bl warp_in
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8014290
|
||||
|
||||
thumb_func_start sub_8014304
|
||||
sub_8014304: @ 8014304
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
mov r8, r2
|
||||
adds r6, r3, 0
|
||||
ldr r1, [sp, 0x18]
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
ldr r0, =gSpecialVar_0x8004
|
||||
strh r1, [r0]
|
||||
ldr r0, =0x00004087
|
||||
bl VarSet
|
||||
bl GetLinkPlayerCount
|
||||
ldr r1, =gFieldLinkPlayerCount
|
||||
strb r0, [r1]
|
||||
bl GetMultiplayerId
|
||||
ldr r1, =gUnknown_03005DB4
|
||||
strb r0, [r1]
|
||||
bl sub_809D2BC
|
||||
lsls r4, 24
|
||||
asrs r4, 24
|
||||
lsls r5, 24
|
||||
asrs r5, 24
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
mov r0, r8
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
mov r8, r0
|
||||
lsls r6, 24
|
||||
asrs r6, 24
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
mov r3, r8
|
||||
bl Overworld_SetWarpDestination
|
||||
bl warp_in
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8014304
|
||||
|
||||
thumb_func_start sub_8014384
|
||||
sub_8014384: @ 8014384
|
||||
|
@ -9,5 +9,6 @@
|
||||
|
||||
void sub_80B37D4(TaskFunc taskFunc);
|
||||
u8 sub_80B3050(void);
|
||||
void sub_80B360C(void);
|
||||
|
||||
#endif //GUARD_CABLE_CLUB_H
|
||||
|
@ -37,5 +37,6 @@ bool8 sub_8068894(void);
|
||||
bool8 sub_8068A64(struct MapPosition *, u16);
|
||||
u8 sub_8068F18(void);
|
||||
bool8 dive_warp(struct MapPosition *position, u16 b);
|
||||
void sub_809D2BC(void);
|
||||
|
||||
#endif // GUARD_FIELDCONTROLAVATAR_H
|
||||
|
@ -122,7 +122,7 @@ struct LinkPlayer
|
||||
/* 0x08 */ u8 name[11];
|
||||
/* 0x13 */ u8 gender;
|
||||
/* 0x14 */ u32 linkType;
|
||||
/* 0x18 */ u16 lp_field_18; // battle bank in battles
|
||||
/* 0x18 */ u16 lp_field_18; // battler id in battles
|
||||
/* 0x1A */ u16 language;
|
||||
};
|
||||
|
||||
|
@ -248,5 +248,7 @@ void sub_800E084(void);
|
||||
void sub_801103C(void);
|
||||
void sub_8011C5C(void);
|
||||
void sub_80106D4(void);
|
||||
void sub_8011090(u8 a0, u32 a1, u32 a2);
|
||||
void sub_8011FC8(u8 *a0, u16 a1);
|
||||
|
||||
#endif //GUARD_LINK_RFU_H
|
||||
|
@ -7,6 +7,8 @@
|
||||
|
||||
// Exported ROM declarations
|
||||
|
||||
int sub_807A728(void);
|
||||
s32 sub_807A728(void);
|
||||
void sub_80773AC(void);
|
||||
void sub_807AE50(void);
|
||||
|
||||
#endif //GUARD_TRADE_H
|
||||
|
@ -32,4 +32,7 @@ struct TrainerCard
|
||||
|
||||
extern struct TrainerCard gTrainerCards[4];
|
||||
|
||||
void sub_80C3120(struct TrainerCard *arg0, u16 *arg1, u8 gameVersion);
|
||||
void sub_80C4E74(u8 arg0, void (*callback)(void));
|
||||
|
||||
#endif // GUARD_TRAINER_CARD_H
|
||||
|
@ -14,6 +14,16 @@
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/game_stat.h"
|
||||
#include "trade.h"
|
||||
#include "trainer_card.h"
|
||||
#include "overworld.h"
|
||||
#include "battle.h"
|
||||
#include "load_save.h"
|
||||
#include "cable_club.h"
|
||||
#include "field_control_avatar.h"
|
||||
|
||||
extern void HealPlayerParty(void);
|
||||
|
||||
struct UnkStruct_Shared
|
||||
{
|
||||
@ -105,11 +115,30 @@ union UnkUnion_Main
|
||||
struct UnkStruct_Group *group;
|
||||
};
|
||||
|
||||
struct TradeUnkStruct
|
||||
{
|
||||
u16 field_0;
|
||||
u16 field_2;
|
||||
u32 field_4;
|
||||
u32 field_8;
|
||||
u16 field_A;
|
||||
u16 field_C;
|
||||
u16 field_E;
|
||||
u16 field_10;
|
||||
u16 field_12;
|
||||
u32 field_14;
|
||||
};
|
||||
|
||||
extern struct TradeUnkStruct gUnknown_02022C40;
|
||||
|
||||
extern union UnkUnion_Main gUnknown_02022C30;
|
||||
|
||||
extern u8 gUnknown_02022C2C;
|
||||
extern u8 gUnknown_02022C2D;
|
||||
|
||||
extern u8 gFieldLinkPlayerCount;
|
||||
extern u8 gUnknown_03005DB4;
|
||||
|
||||
// IWRAM vars
|
||||
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
|
||||
IWRAM_DATA struct UnkStruct_Group *gUnknown_03000DA4;
|
||||
@ -122,6 +151,7 @@ void sub_80173E0(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5)
|
||||
u16 ReadAsU16(const u8 *ptr);
|
||||
void sub_8012780(u8 taskId);
|
||||
void sub_80134E8(u8 taskId);
|
||||
void sub_8013C7C(u8 taskId);
|
||||
void sub_80175EC(struct UnkStruct_Main4 *arg0, u8 count);
|
||||
void sub_8017580(struct UnkStruct_Main0 *arg0, u8 count);
|
||||
u8 sub_8016FC0(struct UnkStruct_Main4 *arg0, u32 arg1);
|
||||
@ -135,11 +165,17 @@ void sub_80149C4(void);
|
||||
u8 sub_80132D4(struct UnkStruct_Main0 *arg0);
|
||||
void sub_80178A0(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
|
||||
u32 sub_80176E4(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
|
||||
void sub_8017734(struct UnkStruct_x20 *arg0, struct UnkStruct_Shared *arg1, u8 arg2);
|
||||
u8 sub_8017734(struct UnkStruct_x20 *arg0, struct UnkStruct_Shared *arg1, u8 arg2);
|
||||
u8 sub_8013E44(void);
|
||||
u32 sub_8013B8C(struct UnkStruct_Group *arg0, s32 id);
|
||||
void sub_8013BD8(struct UnkStruct_Group *arg0, s32 id);
|
||||
void sub_80173D4(void);
|
||||
void sub_80177B8(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
|
||||
bool32 sub_8017678(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
|
||||
u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId);
|
||||
void sub_801807C(struct TradeUnkStruct *arg0);
|
||||
void sub_801B940(void);
|
||||
void sub_801B94C(u16);
|
||||
|
||||
// const rom data
|
||||
extern const u8 *const gUnknown_082EDB60[][5];
|
||||
@ -914,7 +950,7 @@ void sub_80134E8(u8 taskId)
|
||||
id = ListMenuHandleInputGetItemId(data->listTaskId);
|
||||
if (gMain.newKeys & A_BUTTON && id != -1)
|
||||
{
|
||||
// this unused variable is needed to match
|
||||
// this unused variable along with the assignment is needed to match
|
||||
u32 unusedVar;
|
||||
unusedVar = data->field_0->arr[id].unk.field_0.unk_0a_0;
|
||||
|
||||
@ -1114,3 +1150,348 @@ void sub_80134E8(u8 taskId)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_8013B8C(struct UnkStruct_Group *arg0, s32 id)
|
||||
{
|
||||
struct UnkStruct_x20 *structPtr = &arg0->field_0->arr[id];
|
||||
|
||||
if (gUnknown_02022C2C == 4 && structPtr->unk.field_0.unk_01_2 != 3)
|
||||
{
|
||||
if (!(gSaveBlock2Ptr->specialSaveWarp & 0x80))
|
||||
return 1;
|
||||
else if (structPtr->unk.field_0.unk_00_7)
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
void sub_8013BD8(struct UnkStruct_Group *data, s32 id)
|
||||
{
|
||||
data->field_F = id;
|
||||
sub_800E0E8();
|
||||
CreateWirelessStatusIndicatorSprite(0, 0);
|
||||
sub_81AE70C(data->listTaskId);
|
||||
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
|
||||
sub_8011090(gUnknown_082F0530[gSpecialVar_0x8004], 0, 1);
|
||||
sub_8011FC8(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.field_0.playerTrainerId));
|
||||
}
|
||||
|
||||
u8 sub_8013C40(void)
|
||||
{
|
||||
u8 taskId;
|
||||
struct UnkStruct_Group *dataPtr;
|
||||
|
||||
taskId = CreateTask(sub_8013C7C, 0);
|
||||
gUnknown_02022C30.group = dataPtr = (void*)(gTasks[taskId].data);
|
||||
|
||||
dataPtr->state = 0;
|
||||
dataPtr->textState = 0;
|
||||
|
||||
gUnknown_03000DA4 = dataPtr;
|
||||
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_8013C7C(u8 taskId)
|
||||
{
|
||||
struct UnkStruct_Group *data = gUnknown_02022C30.group;
|
||||
|
||||
switch (data->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8010F84(0, 0, 0);
|
||||
sub_800B488();
|
||||
OpenLink();
|
||||
sub_8011C5C();
|
||||
sub_80111B0(TRUE);
|
||||
data->field_4 = AllocZeroed(0x70);
|
||||
data->field_0 = AllocZeroed(0x200);
|
||||
data->state = 2;
|
||||
break;
|
||||
case 2:
|
||||
sub_80175EC(data->field_4, 4);
|
||||
sub_8017580(data->field_0, 16);
|
||||
data->field_11 = sub_8016FC0(data->field_4, 0xFF);
|
||||
data->field_F = 0;
|
||||
data->state = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (sub_8013E44() == 1)
|
||||
PlaySE(SE_PC_LOGIN);
|
||||
if (gTasks[taskId].data[15] == 0xFF)
|
||||
data->state = 10;
|
||||
break;
|
||||
case 10:
|
||||
DestroyTask(data->field_11);
|
||||
Free(data->field_0);
|
||||
Free(data->field_4);
|
||||
sub_800EDD4();
|
||||
data->state++;
|
||||
break;
|
||||
case 11:
|
||||
sub_800EDD4();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
extern const u8 *const gUnknown_082F04D8[22];
|
||||
|
||||
bool32 sub_8013D88(u32 arg0, u32 id)
|
||||
{
|
||||
if (id == 0xFF)
|
||||
return TRUE;
|
||||
|
||||
if (id <= ARRAY_COUNT(gUnknown_082F04D8)) // UB: <= may access data outside the array
|
||||
{
|
||||
const u8 *bytes = gUnknown_082F04D8[id];
|
||||
|
||||
while ((*(bytes) != 0xFF))
|
||||
{
|
||||
if ((*bytes) == arg0)
|
||||
return TRUE;
|
||||
bytes++;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_8013DBC(struct UnkStruct_Group *data, u32 id)
|
||||
{
|
||||
if (data->field_0->arr[id].field_1A_0 == 1)
|
||||
{
|
||||
if (data->field_0->arr[id].unk.field_0.unk_0a_7 != 0)
|
||||
return 3;
|
||||
else if (data->field_0->arr[id].field_1A_1 != 0)
|
||||
return 1;
|
||||
else if (data->field_0->arr[id].field_1B != 0)
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_8013DF4(u8 arg0, u32 id, u8 arg2)
|
||||
{
|
||||
struct UnkStruct_Group *data = gUnknown_02022C30.group;
|
||||
u8 var = sub_8013DBC(data, id);
|
||||
|
||||
sub_80177B8(arg0, 8, arg2, &data->field_0->arr[id], var, id);
|
||||
}
|
||||
|
||||
u8 sub_8013E44(void)
|
||||
{
|
||||
struct UnkStruct_Group *data = gUnknown_02022C30.group;
|
||||
u8 ret = 0;
|
||||
u8 i;
|
||||
s32 id;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (data->field_0->arr[i].field_1A_0 != 0)
|
||||
{
|
||||
id = sub_80176E4(&data->field_0->arr[i], data->field_4->arr);
|
||||
if (id != 0xFF)
|
||||
{
|
||||
if (data->field_0->arr[i].field_1A_0 == 1)
|
||||
{
|
||||
if (sub_8017678(&data->field_0->arr[i], &data->field_4->arr[id]))
|
||||
{
|
||||
data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
|
||||
data->field_0->arr[i].field_1B = 0x40;
|
||||
ret = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (data->field_0->arr[i].field_1B != 0)
|
||||
{
|
||||
data->field_0->arr[i].field_1B--;
|
||||
if (data->field_0->arr[i].field_1B == 0)
|
||||
ret = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data->field_0->arr[i].field_1A_0 = 1;
|
||||
data->field_0->arr[i].field_1B = 0x40;
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
data->field_0->arr[i].field_18 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (data->field_0->arr[i].field_1A_0 != 2)
|
||||
{
|
||||
data->field_0->arr[i].field_18++;
|
||||
if (data->field_0->arr[i].field_18 >= 300)
|
||||
{
|
||||
data->field_0->arr[i].field_1A_0 = 2;
|
||||
ret = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (id = 0; id < 4; id++)
|
||||
{
|
||||
if (sub_8017734(data->field_0->arr, &data->field_4->arr[id].unk0, 16) != 0xFF)
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_8013F60(u8 taskId)
|
||||
{
|
||||
sub_80773AC();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 sub_8013F78(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_8013F60, 0);
|
||||
|
||||
return taskId;
|
||||
}
|
||||
|
||||
extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
|
||||
extern u8 gUnknown_02032298[2];
|
||||
|
||||
void sub_8013F90(u8 taskId)
|
||||
{
|
||||
u32 monId = sub_8018120(&gUnknown_02022C40, GetMultiplayerId());
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
gTasks[taskId].data[0]++;
|
||||
SendBlock(0, &gPlayerParty[monId], sizeof(struct Pokemon));
|
||||
break;
|
||||
case 1:
|
||||
if (GetBlockReceivedStatus() == 3)
|
||||
{
|
||||
gEnemyParty[0] = *(struct Pokemon*)(gBlockRecvBuffer[GetMultiplayerId() ^ 1]);
|
||||
IncrementGameStat(GAME_STAT_50);
|
||||
ResetBlockReceivedFlags();
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct MailStruct) * PARTY_SIZE + 4);
|
||||
if (SendBlock(0, gBlockSendBuffer, sizeof(struct MailStruct) * PARTY_SIZE + 4))
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
if (GetBlockReceivedStatus() == 3)
|
||||
{
|
||||
memcpy(gUnknown_020321C0, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct MailStruct) * PARTY_SIZE);
|
||||
ResetBlockReceivedFlags();
|
||||
gUnknown_02032298[0] = monId;
|
||||
gUnknown_02032298[1] = 6;
|
||||
gMain.savedCallback = CB2_ReturnToField;
|
||||
SetMainCallback2(sub_807AE50);
|
||||
sub_801807C(&gUnknown_02022C40);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80140E0(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (GetBlockReceivedStatus() == sub_800A9D8())
|
||||
{
|
||||
s32 i;
|
||||
u16 *recvBuff;
|
||||
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
recvBuff = gBlockRecvBuffer[i];
|
||||
sub_80C3120(&gTrainerCards[i], recvBuff, gLinkPlayers[i].version);
|
||||
}
|
||||
|
||||
if (GetLinkPlayerCount() == 2)
|
||||
{
|
||||
recvBuff = gBlockRecvBuffer[GetMultiplayerId() ^ 1];
|
||||
sub_801B94C(recvBuff[48]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_801B940();
|
||||
}
|
||||
|
||||
ResetBlockReceivedFlags();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80141A4(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
CreateTask(sub_80140E0, 5);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!FuncIsActiveTask(sub_80140E0))
|
||||
sub_80C4E74(GetMultiplayerId() ^ 1, CB2_ReturnToField);
|
||||
break;
|
||||
}
|
||||
|
||||
RunTasks();
|
||||
RunTextPrinters();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
}
|
||||
|
||||
void sub_8014210(u16 battleFlags)
|
||||
{
|
||||
HealPlayerParty();
|
||||
SavePlayerParty();
|
||||
LoadPlayerBag();
|
||||
gLinkPlayers[0].linkType = 0x2211;
|
||||
gLinkPlayers[GetMultiplayerId()].lp_field_18 = GetMultiplayerId();
|
||||
gLinkPlayers[GetMultiplayerId() ^ 1].lp_field_18 = GetMultiplayerId() ^ 1;
|
||||
gMain.savedCallback = sub_80B360C;
|
||||
gBattleTypeFlags = battleFlags;
|
||||
PlayBattleBGM();
|
||||
}
|
||||
|
||||
void sub_8014290(u16 arg0, u16 x, u16 y)
|
||||
{
|
||||
VarSet(VAR_0x4087, arg0);
|
||||
Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
saved_warp2_set_2(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
warp_in();
|
||||
}
|
||||
|
||||
void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4)
|
||||
{
|
||||
gSpecialVar_0x8004 = arg4;
|
||||
VarSet(VAR_0x4087, arg4);
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount();
|
||||
gUnknown_03005DB4 = GetMultiplayerId();
|
||||
sub_809D2BC();
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
|
||||
warp_in();
|
||||
}
|
||||
|
@ -13,7 +13,6 @@ extern const u8 gText_Peekaboo[];
|
||||
extern u8 *GetWaldaPhrasePtr(void);
|
||||
extern bool32 IsWaldaPhraseEmpty(void);
|
||||
extern void sub_80AF168(void);
|
||||
extern void CB2_ReturnToField(void);
|
||||
extern void SetWaldaPhrase(const u8 *src);
|
||||
extern void SetWaldaWallpaperPatternId(u8 patternId);
|
||||
extern void SetWaldaWallpaperIconId(u8 iconId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user