mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-25 15:42:34 -05:00
5167 lines
94 KiB
ArmAsm
5167 lines
94 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main_02054E4C.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start GendersEqual
|
|
GendersEqual: ; 0x02054E4C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
bl GetMonsterGender
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl GetMonsterGender
|
|
cmp r4, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end GendersEqual
|
|
|
|
arm_func_start GendersEqualNotGenderless
|
|
GendersEqualNotGenderless: ; 0x02054E78
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
bl GetMonsterGender
|
|
cmp r0, #3
|
|
beq _02054EC0
|
|
mov r0, r5
|
|
bl GetMonsterGender
|
|
cmp r0, #3
|
|
beq _02054EC0
|
|
mov r0, r4
|
|
bl GetMonsterGender
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl GetMonsterGender
|
|
cmp r4, r0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
_02054EC0:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end GendersEqualNotGenderless
|
|
|
|
arm_func_start GendersNotEqualNotGenderless
|
|
GendersNotEqualNotGenderless: ; 0x02054EC8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
bl GetMonsterGender
|
|
cmp r0, #3
|
|
beq _02054F10
|
|
mov r0, r5
|
|
bl GetMonsterGender
|
|
cmp r0, #3
|
|
beq _02054F10
|
|
mov r0, r4
|
|
bl GetMonsterGender
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl GetMonsterGender
|
|
cmp r4, r0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
_02054F10:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end GendersNotEqualNotGenderless
|
|
|
|
arm_func_start sub_02054F18
|
|
sub_02054F18: ; 0x02054F18
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
add r0, r0, #0xea
|
|
add r0, r0, #0xfd00
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #2
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end sub_02054F18
|
|
|
|
arm_func_start sub_02054F44
|
|
sub_02054F44: ; 0x02054F44
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x14
|
|
mov r5, r0
|
|
mov r4, r2
|
|
add r0, sp, #0
|
|
mov r2, #0xa
|
|
bl StrncpySimpleNoPadSafe
|
|
cmp r4, #0
|
|
bne _02054F7C
|
|
ldr r1, _02054F98 ; =_020A333C
|
|
add r2, sp, #0
|
|
mov r0, r5
|
|
bl SprintfStatic__02054A60
|
|
b _02054F90
|
|
_02054F7C:
|
|
ldr r1, _02054F9C ; =_020A3340
|
|
add r3, sp, #0
|
|
mov r0, r5
|
|
mov r2, r4
|
|
bl SprintfStatic__02054A60
|
|
_02054F90:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_02054F98: .word _020A333C
|
|
_02054F9C: .word _020A3340
|
|
arm_func_end sub_02054F44
|
|
|
|
arm_func_start sub_02054FA0
|
|
sub_02054FA0: ; 0x02054FA0
|
|
ldr ip, _02054FB4 ; =sub_02054F44
|
|
cmp r2, #0
|
|
movne r2, #0x59
|
|
moveq r2, #0x46
|
|
bx ip
|
|
.align 2, 0
|
|
_02054FB4: .word sub_02054F44
|
|
arm_func_end sub_02054FA0
|
|
|
|
arm_func_start sub_02054FB8
|
|
sub_02054FB8: ; 0x02054FB8
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldrsh r3, [r4]
|
|
mov r2, #1
|
|
add r0, sp, #0
|
|
str r3, [sp]
|
|
rsb r3, r2, #0x3e8
|
|
bl sub_02055088
|
|
ldr r1, [sp]
|
|
strh r1, [r4]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_02054FB8
|
|
|
|
arm_func_start sub_02054FEC
|
|
sub_02054FEC: ; 0x02054FEC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldrb r3, [r4]
|
|
add r0, sp, #0
|
|
mov r2, #1
|
|
str r3, [sp]
|
|
mov r3, #0xff
|
|
bl sub_02055088
|
|
ldr r1, [sp]
|
|
strb r1, [r4]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_02054FEC
|
|
|
|
arm_func_start sub_02055020
|
|
sub_02055020: ; 0x02055020
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldrb r3, [r4]
|
|
add r0, sp, #0
|
|
mov r2, #1
|
|
str r3, [sp]
|
|
mov r3, #0xff
|
|
bl sub_02055088
|
|
ldr r1, [sp]
|
|
strb r1, [r4]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_02055020
|
|
|
|
arm_func_start sub_02055054
|
|
sub_02055054: ; 0x02055054
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldrsh r3, [r4]
|
|
mov r2, #1
|
|
add r0, sp, #0
|
|
str r3, [sp]
|
|
rsb r3, r2, #0x3e8
|
|
bl sub_02055088
|
|
ldr r1, [sp]
|
|
strh r1, [r4]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_02055054
|
|
|
|
arm_func_start sub_02055088
|
|
sub_02055088: ; 0x02055088
|
|
cmp r1, #0
|
|
ble _020550B4
|
|
ldr r2, [r0]
|
|
cmp r2, r3
|
|
moveq r0, #0
|
|
bxeq lr
|
|
add r1, r2, r1
|
|
str r1, [r0]
|
|
cmp r1, r3
|
|
strgt r3, [r0]
|
|
b _020550D4
|
|
_020550B4:
|
|
ldr r3, [r0]
|
|
cmp r3, r2
|
|
moveq r0, #0
|
|
bxeq lr
|
|
add r1, r3, r1
|
|
str r1, [r0]
|
|
cmp r1, r2
|
|
strlt r2, [r0]
|
|
_020550D4:
|
|
mov r0, #1
|
|
bx lr
|
|
arm_func_end sub_02055088
|
|
|
|
arm_func_start sub_020550DC
|
|
sub_020550DC: ; 0x020550DC
|
|
bx lr
|
|
arm_func_end sub_020550DC
|
|
|
|
arm_func_start sub_020550E0
|
|
sub_020550E0: ; 0x020550E0
|
|
ldr r0, _0205510C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r3, #0
|
|
ldr r2, [r0]
|
|
ldr r0, _02055110 ; =0x0000022B
|
|
mov r1, r3
|
|
_020550F4:
|
|
add r3, r3, #1
|
|
cmp r3, r0
|
|
strb r1, [r2], #0x44
|
|
blt _020550F4
|
|
ldr ip, _02055114 ; =sub_0205523C
|
|
bx ip
|
|
.align 2, 0
|
|
_0205510C: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055110: .word 0x0000022B
|
|
_02055114: .word sub_0205523C
|
|
arm_func_end sub_020550E0
|
|
|
|
arm_func_start sub_02055118
|
|
sub_02055118: ; 0x02055118
|
|
ldr r0, _02055140 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
ldr ip, _02055144 ; =sub_0205523C
|
|
strb r2, [r1, #0x88]
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0xcc]
|
|
ldr r0, [r0]
|
|
strb r2, [r0, #0x110]
|
|
bx ip
|
|
.align 2, 0
|
|
_02055140: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055144: .word sub_0205523C
|
|
arm_func_end sub_02055118
|
|
|
|
arm_func_start IsMonsterOnTeam
|
|
IsMonsterOnTeam: ; 0x02055148
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov sb, r1
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
#ifdef JAPAN
|
|
mov r6, #1
|
|
bne _020554FC
|
|
#else
|
|
bne _020551C0
|
|
#endif
|
|
ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r8, #0
|
|
ldr r7, [r0]
|
|
mov r5, r8
|
|
#ifndef JAPAN
|
|
mov r6, #1
|
|
#endif
|
|
ldr r4, _02055234 ; =_020B0A4C
|
|
b _020551B8
|
|
_0205517C:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _020551B0
|
|
ldrsh r0, [r7, #4]
|
|
ldr r2, [r4, sb, lsl #2]
|
|
mov r1, sl
|
|
blx r2
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_020551B0:
|
|
add r8, r8, #1
|
|
add r7, r7, #0x44
|
|
_020551B8:
|
|
cmp r8, #2
|
|
blt _0205517C
|
|
#ifdef JAPAN
|
|
b _020551C0
|
|
_020554FC:
|
|
ldr r0, _02055230 ; =_020B0A48
|
|
mov r8, #2
|
|
ldr r0, [r0]
|
|
mov r5, #0
|
|
add r7, r0, #0x88
|
|
ldr r4, _02055234 ; =_020B0A4C
|
|
b _02055554
|
|
_02055518:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _0205554C
|
|
ldrsh r0, [r7, #4]
|
|
ldr r2, [r4, sb, lsl #2]
|
|
mov r1, sl
|
|
blx r2
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0205554C:
|
|
add r8, r8, #1
|
|
add r7, r7, #0x44
|
|
_02055554:
|
|
cmp r8, #5
|
|
blt _02055518
|
|
#endif
|
|
_020551C0:
|
|
ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r8, #5
|
|
ldr r0, [r0]
|
|
mov fp, #0
|
|
add r7, r0, #0x154
|
|
mov r6, #1
|
|
ldr r5, _02055234 ; =_020B0A4C
|
|
ldr r4, _02055238 ; =0x0000022B
|
|
b _02055220
|
|
_020551E4:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
beq _02055218
|
|
ldrsh r0, [r7, #4]
|
|
ldr r2, [r5, sb, lsl #2]
|
|
mov r1, sl
|
|
blx r2
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_02055218:
|
|
add r8, r8, #1
|
|
add r7, r7, #0x44
|
|
_02055220:
|
|
cmp r8, r4
|
|
blt _020551E4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02055230: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055234: .word _020B0A4C
|
|
_02055238: .word 0x0000022B
|
|
arm_func_end IsMonsterOnTeam
|
|
|
|
arm_func_start sub_0205523C
|
|
sub_0205523C: ; 0x0205523C
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x214
|
|
mov r1, #0
|
|
bl IsMonsterOnTeam
|
|
cmp r0, #0
|
|
ldrne r1, _02055268 ; =0x0000022B
|
|
ldrne r0, _0205526C ; =_022B5788
|
|
ldreq r1, _02055270 ; =0x0000022A
|
|
ldreq r0, _0205526C ; =_022B5788
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02055268: .word 0x0000022B
|
|
_0205526C: .word _022B5788
|
|
_02055270: .word 0x0000022A
|
|
arm_func_end sub_0205523C
|
|
|
|
arm_func_start GetNbRecruited
|
|
GetNbRecruited: ; 0x02055274
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _02055384 ; =0x00000906
|
|
mov r4, r0
|
|
bl MemZero
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
mov r3, #1
|
|
bne _020552E0
|
|
ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov lr, #0
|
|
ldr ip, [r0]
|
|
mov r2, lr
|
|
_020552A4:
|
|
ldrb r0, [ip]
|
|
add lr, lr, #1
|
|
tst r0, #1
|
|
movne r0, r3
|
|
moveq r0, r2
|
|
tst r0, #0xff
|
|
ldrnesh r0, [ip, #4]
|
|
add ip, ip, #0x44
|
|
movne r1, r0, lsl #1
|
|
ldrnesh r0, [r4, r1]
|
|
addne r0, r0, #1
|
|
strneh r0, [r4, r1]
|
|
cmp lr, #2
|
|
blt _020552A4
|
|
b _0205532C
|
|
_020552E0:
|
|
ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #2
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add ip, r0, #0x88
|
|
_020552F4:
|
|
ldrb r0, [ip]
|
|
add r5, r5, #1
|
|
tst r0, #1
|
|
movne r0, r3
|
|
moveq r0, r2
|
|
tst r0, #0xff
|
|
ldrnesh r0, [ip, #4]
|
|
add ip, ip, #0x44
|
|
movne r1, r0, lsl #1
|
|
ldrnesh r0, [r4, r1]
|
|
addne r0, r0, #1
|
|
strneh r0, [r4, r1]
|
|
cmp r5, #5
|
|
blt _020552F4
|
|
_0205532C:
|
|
ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #5
|
|
ldr r0, [r0]
|
|
mov r3, #0
|
|
add lr, r0, #0x154
|
|
ldr r0, _0205538C ; =0x0000022B
|
|
mov ip, #1
|
|
_02055348:
|
|
ldrb r1, [lr]
|
|
add r5, r5, #1
|
|
tst r1, #1
|
|
movne r1, ip
|
|
moveq r1, r3
|
|
tst r1, #0xff
|
|
ldrnesh r1, [lr, #4]
|
|
add lr, lr, #0x44
|
|
movne r2, r1, lsl #1
|
|
ldrnesh r1, [r4, r2]
|
|
addne r1, r1, #1
|
|
strneh r1, [r4, r2]
|
|
cmp r5, r0
|
|
blt _02055348
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02055384: .word 0x00000906
|
|
_02055388: .word TEAM_MEMBER_TABLE_PTR
|
|
_0205538C: .word 0x0000022B
|
|
arm_func_end GetNbRecruited
|
|
|
|
arm_func_start IsValidTeamMember
|
|
IsValidTeamMember: ; 0x02055390
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0205540C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mov r0, #0x44
|
|
smulbb r0, r4, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02055404
|
|
cmp r4, #5
|
|
bge _020553FC
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
bne _020553EC
|
|
cmp r4, #2
|
|
cmpne r4, #3
|
|
cmpne r4, #4
|
|
beq _020553FC
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_020553EC:
|
|
cmp r4, #0
|
|
cmpne r4, #1
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, pc}
|
|
_020553FC:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_02055404:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0205540C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end IsValidTeamMember
|
|
|
|
arm_func_start sub_02055410
|
|
sub_02055410: ; 0x02055410
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02055470 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mov r0, #0x44
|
|
smulbb r0, r4, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02055468
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
bne _0205545C
|
|
cmp r4, #2
|
|
bne _02055468
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0205545C:
|
|
cmp r4, #0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, pc}
|
|
_02055468:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02055470: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02055410
|
|
|
|
arm_func_start sub_02055474
|
|
sub_02055474: ; 0x02055474
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _020554D4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mov r0, #0x44
|
|
smulbb r0, r4, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020554CC
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
bne _020554C0
|
|
cmp r4, #3
|
|
bne _020554CC
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_020554C0:
|
|
cmp r4, #1
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, pc}
|
|
_020554CC:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020554D4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02055474
|
|
|
|
arm_func_start sub_020554D8
|
|
sub_020554D8: ; 0x020554D8
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02055524 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mov r0, #0x44
|
|
smulbb r0, r4, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0205551C
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
cmpeq r4, #4
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, pc}
|
|
_0205551C:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02055524: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020554D8
|
|
|
|
arm_func_start IsMainCharacter
|
|
IsMainCharacter: ; 0x02055528
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _020555A4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mov r0, #0x44
|
|
smulbb r0, r4, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0205559C
|
|
cmp r4, #5
|
|
bge _0205559C
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
bne _02055584
|
|
cmp r4, #2
|
|
cmpne r4, #3
|
|
cmpne r4, #4
|
|
beq _02055594
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_02055584:
|
|
cmp r4, #0
|
|
cmpne r4, #1
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, pc}
|
|
_02055594:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0205559C:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020555A4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end IsMainCharacter
|
|
|
|
arm_func_start GetTeamMember
|
|
GetTeamMember: ; 0x020555A8
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldr r2, _020555CC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_020555CC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetTeamMember
|
|
|
|
arm_func_start sub_020555D0
|
|
sub_020555D0: ; 0x020555D0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _02055648 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #0
|
|
ldr r2, [r2]
|
|
mov r6, #5
|
|
add r4, r2, #0x154
|
|
mov ip, r5
|
|
mov lr, #1
|
|
ldr r2, _0205564C ; =0x0000022B
|
|
b _02055638
|
|
_020555F8:
|
|
ldrb r3, [r4]
|
|
tst r3, #1
|
|
movne r3, lr
|
|
moveq r3, ip
|
|
tst r3, #0xff
|
|
beq _02055630
|
|
ldrsh r3, [r4, #4]
|
|
cmp r3, r0
|
|
bne _02055630
|
|
cmp r5, r1
|
|
moveq r0, r6, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r5, r5, #1
|
|
_02055630:
|
|
add r6, r6, #1
|
|
add r4, r4, #0x44
|
|
_02055638:
|
|
cmp r6, r2
|
|
blt _020555F8
|
|
mvn r0, #0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02055648: .word TEAM_MEMBER_TABLE_PTR
|
|
_0205564C: .word 0x0000022B
|
|
arm_func_end sub_020555D0
|
|
|
|
arm_func_start GetHeroMemberIdx
|
|
GetHeroMemberIdx: ; 0x02055650
|
|
ldr r0, _02055678 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #0
|
|
mvneq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02055678: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetHeroMemberIdx
|
|
|
|
arm_func_start GetPartnerMemberIdx
|
|
GetPartnerMemberIdx: ; 0x0205567C
|
|
ldr r0, _020556A4 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x44]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #1
|
|
mvneq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_020556A4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetPartnerMemberIdx
|
|
|
|
arm_func_start GetMainCharacter1MemberIdx
|
|
GetMainCharacter1MemberIdx: ; 0x020556A8
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
moveq r0, #2
|
|
ldr r2, _020556E8 ; =TEAM_MEMBER_TABLE_PTR
|
|
movne r0, #0
|
|
mov r1, #0x44
|
|
smulbb r1, r0, r1
|
|
ldr r2, [r2]
|
|
ldrb r1, [r2, r1]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
mvneq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020556E8: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter1MemberIdx
|
|
|
|
arm_func_start GetMainCharacter2MemberIdx
|
|
GetMainCharacter2MemberIdx: ; 0x020556EC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
moveq r0, #3
|
|
ldr r2, _0205572C ; =TEAM_MEMBER_TABLE_PTR
|
|
movne r0, #1
|
|
mov r1, #0x44
|
|
smulbb r1, r0, r1
|
|
ldr r2, [r2]
|
|
ldrb r1, [r2, r1]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
mvneq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0205572C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter2MemberIdx
|
|
|
|
arm_func_start GetMainCharacter3MemberIdx
|
|
GetMainCharacter3MemberIdx: ; 0x02055730
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, _0205576C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x110]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #4
|
|
mvneq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0205576C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter3MemberIdx
|
|
|
|
arm_func_start GetHero
|
|
GetHero: ; 0x02055770
|
|
ldr r0, _02055794 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02055794: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetHero
|
|
|
|
arm_func_start GetPartner
|
|
GetPartner: ; 0x02055798
|
|
ldr r0, _020557C0 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x44]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
addne r0, r1, #0x44
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_020557C0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetPartner
|
|
|
|
arm_func_start GetMainCharacter1
|
|
GetMainCharacter1: ; 0x020557C4
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
moveq r2, #2
|
|
ldr r1, _02055808 ; =TEAM_MEMBER_TABLE_PTR
|
|
movne r2, #0
|
|
mov r0, #0x44
|
|
smulbb r2, r2, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r2]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
addne r0, r1, r2
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02055808: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter1
|
|
|
|
arm_func_start GetMainCharacter2
|
|
GetMainCharacter2: ; 0x0205580C
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
moveq r2, #3
|
|
ldr r1, _02055850 ; =TEAM_MEMBER_TABLE_PTR
|
|
movne r2, #1
|
|
mov r0, #0x44
|
|
smulbb r2, r2, r0
|
|
ldr r1, [r1]
|
|
ldrb r0, [r1, r2]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
addne r0, r1, r2
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02055850: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter2
|
|
|
|
arm_func_start GetMainCharacter3
|
|
GetMainCharacter3: ; 0x02055854
|
|
stmdb sp!, {r3, lr}
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, _02055890 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x110]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
addne r0, r1, #0x110
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02055890: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetMainCharacter3
|
|
|
|
arm_func_start sub_02055894
|
|
sub_02055894: ; 0x02055894
|
|
ldr r1, _020558EC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r3, #0
|
|
ldr r2, [r1]
|
|
ldr r1, _020558F0 ; =0x0000022B
|
|
b _020558DC
|
|
_020558A8:
|
|
cmp r2, r0
|
|
bne _020558D4
|
|
ldrb r0, [r2]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020558E4
|
|
mov r0, r3, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bx lr
|
|
_020558D4:
|
|
add r3, r3, #1
|
|
add r2, r2, #0x44
|
|
_020558DC:
|
|
cmp r3, r1
|
|
blt _020558A8
|
|
_020558E4:
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_020558EC: .word TEAM_MEMBER_TABLE_PTR
|
|
_020558F0: .word 0x0000022B
|
|
arm_func_end sub_02055894
|
|
|
|
arm_func_start GetFirstMatchingMemberIdx
|
|
GetFirstMatchingMemberIdx: ; 0x020558F4
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0205595C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, #5
|
|
ldr r1, [r1]
|
|
mov r3, #0
|
|
add lr, r1, #0x154
|
|
mov ip, #1
|
|
ldr r1, _02055960 ; =0x0000022B
|
|
b _0205594C
|
|
_02055918:
|
|
ldrb r2, [lr]
|
|
tst r2, #1
|
|
movne r2, ip
|
|
moveq r2, r3
|
|
tst r2, #0xff
|
|
beq _02055944
|
|
ldrsh r2, [lr, #4]
|
|
cmp r2, r0
|
|
moveq r0, r4, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r4, pc}
|
|
_02055944:
|
|
add r4, r4, #1
|
|
add lr, lr, #0x44
|
|
_0205594C:
|
|
cmp r4, r1
|
|
blt _02055918
|
|
mvn r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0205595C: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055960: .word 0x0000022B
|
|
arm_func_end GetFirstMatchingMemberIdx
|
|
|
|
arm_func_start GetFirstEmptyMemberIdx
|
|
GetFirstEmptyMemberIdx: ; 0x02055964
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _020559CC ; =TEAM_MEMBER_TABLE_PTR
|
|
cmp r0, #0x214
|
|
ldr r0, [r1]
|
|
ldreq lr, _020559D0 ; =0x0000022B
|
|
add r3, r0, #0x154
|
|
ldrne r0, _020559D4 ; =_022B5788
|
|
mov ip, #5
|
|
ldrne lr, [r0]
|
|
mov r0, #0
|
|
mov r1, #1
|
|
b _020559BC
|
|
_02055994:
|
|
ldrb r2, [r3]
|
|
tst r2, #1
|
|
movne r2, r1
|
|
moveq r2, r0
|
|
tst r2, #0xff
|
|
moveq r0, ip, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r3, pc}
|
|
add ip, ip, #1
|
|
add r3, r3, #0x44
|
|
_020559BC:
|
|
cmp ip, lr
|
|
blt _02055994
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020559CC: .word TEAM_MEMBER_TABLE_PTR
|
|
_020559D0: .word 0x0000022B
|
|
_020559D4: .word _022B5788
|
|
arm_func_end GetFirstEmptyMemberIdx
|
|
|
|
arm_func_start sub_020559D8
|
|
sub_020559D8: ; 0x020559D8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r1, _02055B18 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, #0
|
|
ldr lr, [r1]
|
|
mov r8, r0
|
|
mov r2, r4
|
|
mov r3, #1
|
|
mvn r1, #0
|
|
_020559F8:
|
|
ldrb r0, [lr]
|
|
add lr, lr, #0x44
|
|
tst r0, #1
|
|
movne r0, r3
|
|
moveq r0, r2
|
|
tst r0, #0xff
|
|
mov r0, r4, lsl #1
|
|
strneh r4, [r8, r0]
|
|
add r4, r4, #1
|
|
streqh r1, [r8, r0]
|
|
cmp r4, #5
|
|
blt _020559F8
|
|
mov r2, #0
|
|
mov r3, #1
|
|
ldr r0, _02055B1C ; =0x0000022B
|
|
b _02055B0C
|
|
_02055A38:
|
|
ldrb r1, [lr]
|
|
tst r1, #1
|
|
movne r1, r3
|
|
moveq r1, r2
|
|
tst r1, #0xff
|
|
bne _02055AFC
|
|
mvn ip, #0
|
|
mov r0, r4, lsl #1
|
|
mov r7, lr
|
|
mov r6, r4
|
|
strh ip, [r8, r0]
|
|
add lr, lr, #0x44
|
|
add r4, r4, #1
|
|
add sb, ip, #0x22c
|
|
b _02055AD4
|
|
_02055A74:
|
|
ldrb r0, [lr]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02055AC4
|
|
mov r5, r7
|
|
mov fp, lr
|
|
add r7, r7, #0x44
|
|
mov sl, #4
|
|
_02055A9C:
|
|
ldmia fp!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs sl, sl, #1
|
|
bne _02055A9C
|
|
ldr r0, [fp]
|
|
str r0, [r5]
|
|
mov r0, r4, lsl #1
|
|
strh r6, [r8, r0]
|
|
add r6, r6, #1
|
|
b _02055ACC
|
|
_02055AC4:
|
|
mov r0, r4, lsl #1
|
|
strh ip, [r8, r0]
|
|
_02055ACC:
|
|
add r4, r4, #1
|
|
add lr, lr, #0x44
|
|
_02055AD4:
|
|
cmp r4, sb
|
|
blt _02055A74
|
|
mov r1, #0
|
|
ldr r0, _02055B1C ; =0x0000022B
|
|
b _02055AF0
|
|
_02055AE8:
|
|
strb r1, [r7], #0x44
|
|
add r6, r6, #1
|
|
_02055AF0:
|
|
cmp r6, r0
|
|
blt _02055AE8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_02055AFC:
|
|
mov r1, r4, lsl #1
|
|
strh r4, [r8, r1]
|
|
add r4, r4, #1
|
|
add lr, lr, #0x44
|
|
_02055B0C:
|
|
cmp r4, r0
|
|
blt _02055A38
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02055B18: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055B1C: .word 0x0000022B
|
|
arm_func_end sub_020559D8
|
|
|
|
arm_func_start sub_02055B20
|
|
sub_02055B20: ; 0x02055B20
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _02055B74 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x44
|
|
smulbb r4, r0, r1
|
|
cmp r0, #5
|
|
ldr r5, [r2]
|
|
movlt r0, #0
|
|
ldmltia sp!, {r3, r4, r5, pc}
|
|
ldrb r1, [r5, r4]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
bl sub_020564B0
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
streqb r0, [r5, r4]
|
|
moveq r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02055B74: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02055B20
|
|
|
|
arm_func_start sub_02055B78
|
|
sub_02055B78: ; 0x02055B78
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x58
|
|
ldr r4, _02055CC4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov lr, #1
|
|
mov r6, r1
|
|
mov r7, r0
|
|
mov ip, #0
|
|
ldr r4, [r4]
|
|
mov r1, #0x44
|
|
mov r0, r6
|
|
mov r5, r3
|
|
strb lr, [sp, #0x14]
|
|
strb r2, [sp, #0x16]
|
|
strb ip, [sp, #0x17]
|
|
strb lr, [sp, #0x15]
|
|
smlabb r4, r7, r1, r4
|
|
bl GetBaseHp
|
|
strh r0, [sp, #0x1e]
|
|
mov r0, r6
|
|
mov r1, #0
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [sp, #0x20]
|
|
mov r0, r6
|
|
mov r1, #1
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [sp, #0x21]
|
|
mov r0, r6
|
|
mov r1, #0
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [sp, #0x22]
|
|
mov r0, r6
|
|
mov r1, #1
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [sp, #0x23]
|
|
mov r0, #0
|
|
mov r2, #1
|
|
strb r0, [sp, #0x1a]
|
|
strb r0, [sp, #0x1b]
|
|
add r0, sp, #0x28
|
|
mov r1, r6
|
|
strh r2, [sp, #0x1c]
|
|
bl EnableAllLearnableIqSkills
|
|
mov r2, #0
|
|
add r0, sp, #0x36
|
|
mov r1, r6
|
|
strh r6, [sp, #0x18]
|
|
str r2, [sp, #0x24]
|
|
strb r2, [sp, #0x34]
|
|
bl sub_02053F10
|
|
cmp r5, #0
|
|
beq _02055C58
|
|
add r0, sp, #0x4e
|
|
mov r1, r5
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
b _02055C74
|
|
_02055C58:
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
bl GetNameRaw
|
|
add r0, sp, #0x4e
|
|
add r1, sp, #0
|
|
mov r2, #0xa
|
|
bl StrncpyName
|
|
_02055C74:
|
|
add r6, sp, #0x14
|
|
mov r5, #4
|
|
_02055C7C:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
subs r5, r5, #1
|
|
bne _02055C7C
|
|
ldr r0, [r6]
|
|
cmp r7, #0
|
|
str r0, [r4]
|
|
cmpne r7, #2
|
|
mov r0, r7
|
|
bne _02055CAC
|
|
bl TryAddMonsterToActiveTeam
|
|
b _02055CB0
|
|
_02055CAC:
|
|
bl sub_02056554
|
|
_02055CB0:
|
|
ldr r0, _02055CC8 ; =_020A3350
|
|
mov r1, r7
|
|
bl Debug_Print0
|
|
add sp, sp, #0x58
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02055CC4: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055CC8: .word _020A3350
|
|
arm_func_end sub_02055B78
|
|
|
|
arm_func_start sub_02055CCC
|
|
sub_02055CCC: ; 0x02055CCC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
ldrsh r0, [r5, #4]
|
|
bl GetFirstEmptyMemberIdx
|
|
mov r4, r0
|
|
mvn r0, #0
|
|
cmp r4, r0
|
|
beq _02055D38
|
|
ldr r1, _02055D40 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r0, #0x44
|
|
ldr r1, [r1]
|
|
mov r6, r5
|
|
smlabb lr, r4, r0, r1
|
|
mov ip, #4
|
|
_02055D04:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _02055D04
|
|
ldr r0, [r6]
|
|
str r0, [lr]
|
|
ldrsh r0, [r5, #4]
|
|
bl SetPokemonJoined
|
|
ldrsh r0, [r5, #4]
|
|
cmp r0, #0x214
|
|
ldreq r1, _02055D44 ; =0x0000022B
|
|
ldreq r0, _02055D48 ; =_022B5788
|
|
streq r1, [r0]
|
|
_02055D38:
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02055D40: .word TEAM_MEMBER_TABLE_PTR
|
|
_02055D44: .word 0x0000022B
|
|
_02055D48: .word _022B5788
|
|
arm_func_end sub_02055CCC
|
|
|
|
arm_func_start sub_02055D4C
|
|
sub_02055D4C: ; 0x02055D4C
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02055CCC
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r2, _02055D78 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02055D78: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02055D4C
|
|
|
|
arm_func_start sub_02055D7C
|
|
sub_02055D7C: ; 0x02055D7C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mvn r2, #0
|
|
mov r5, r1
|
|
cmp r0, r2
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldr r2, _02055DCC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
mov r4, r5
|
|
smlabb lr, r0, r1, r2
|
|
mov ip, #4
|
|
_02055DA8:
|
|
ldmia r4!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _02055DA8
|
|
ldr r0, [r4]
|
|
str r0, [lr]
|
|
ldrsh r0, [r5, #4]
|
|
bl SetPokemonJoined
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02055DCC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02055D7C
|
|
|
|
arm_func_start sub_02055DD0
|
|
sub_02055DD0: ; 0x02055DD0
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x4c
|
|
ldrb ip, [sp, #0x58]
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov lr, r2
|
|
str r3, [sp]
|
|
add r0, sp, #8
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r3, lr
|
|
str ip, [sp, #4]
|
|
bl sub_02052CF4
|
|
add r0, sp, #8
|
|
bl sub_02055D4C
|
|
add sp, sp, #0x4c
|
|
ldmia sp!, {r4, r5, pc}
|
|
arm_func_end sub_02055DD0
|
|
|
|
arm_func_start sub_02055E14
|
|
sub_02055E14: ; 0x02055E14
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r3, r1
|
|
ldrb r1, [r3]
|
|
mov r4, r0
|
|
add r0, r3, #0x14
|
|
and r1, r1, #1
|
|
strh r1, [r4]
|
|
ldrb r1, [r3, #1]
|
|
add r6, r4, #0x18
|
|
add r5, r3, #0x22
|
|
strb r1, [r4, #4]
|
|
ldrb r1, [r3, #2]
|
|
add lr, r4, #0x2a
|
|
mov ip, #0xc
|
|
strb r1, [r4, #5]
|
|
ldrb r1, [r3, #3]
|
|
strb r1, [r4, #6]
|
|
ldrsh r1, [r3, #4]
|
|
strh r1, [r4, #8]
|
|
ldrb r1, [r3, #6]
|
|
strb r1, [r4, #0xa]
|
|
ldrb r1, [r3, #7]
|
|
strb r1, [r4, #0xb]
|
|
ldrsh r1, [r3, #8]
|
|
strh r1, [r4, #0xc]
|
|
ldrsh r1, [r3, #0xa]
|
|
strh r1, [r4, #0xe]
|
|
ldrb r1, [r3, #0xc]
|
|
strb r1, [r4, #0x10]
|
|
ldrb r1, [r3, #0xd]
|
|
strb r1, [r4, #0x11]
|
|
ldrb r1, [r3, #0xe]
|
|
strb r1, [r4, #0x12]
|
|
ldrb r1, [r3, #0xf]
|
|
strb r1, [r4, #0x13]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
ldr r0, [r3, #0x10]
|
|
str r0, [r4, #0x14]
|
|
ldrb r0, [r3, #0x20]
|
|
strb r0, [r4, #0x24]
|
|
_02055EB8:
|
|
ldrh r0, [r5], #2
|
|
subs ip, ip, #1
|
|
strh r0, [lr], #2
|
|
bne _02055EB8
|
|
add r0, r4, #0x42
|
|
add r1, r3, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
mov r2, #0
|
|
mov r1, r2
|
|
_02055EE0:
|
|
add r0, r4, r2
|
|
add r2, r2, #1
|
|
strb r1, [r0, #2]
|
|
cmp r2, #2
|
|
blt _02055EE0
|
|
strb r1, [r4, #0x25]
|
|
strh r1, [r4, #0x26]
|
|
strh r1, [r4, #0x28]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02055E14
|
|
|
|
arm_func_start sub_02055F04
|
|
sub_02055F04: ; 0x02055F04
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r3, r1
|
|
ldrh r1, [r3]
|
|
mov ip, r0
|
|
add r0, r3, #0x18
|
|
and r1, r1, #1
|
|
strb r1, [ip]
|
|
ldrb r1, [r3, #4]
|
|
add r6, ip, #0x14
|
|
add r5, r3, #0x2a
|
|
strb r1, [ip, #1]
|
|
ldrb r1, [r3, #5]
|
|
add r4, ip, #0x22
|
|
mov lr, #0xc
|
|
strb r1, [ip, #2]
|
|
ldrb r1, [r3, #6]
|
|
strb r1, [ip, #3]
|
|
ldrsh r1, [r3, #8]
|
|
strh r1, [ip, #4]
|
|
ldrb r1, [r3, #0xa]
|
|
strb r1, [ip, #6]
|
|
ldrb r1, [r3, #0xb]
|
|
strb r1, [ip, #7]
|
|
ldrsh r1, [r3, #0xc]
|
|
strh r1, [ip, #8]
|
|
ldrsh r1, [r3, #0xe]
|
|
strh r1, [ip, #0xa]
|
|
ldrb r1, [r3, #0x10]
|
|
strb r1, [ip, #0xc]
|
|
ldrb r1, [r3, #0x11]
|
|
strb r1, [ip, #0xd]
|
|
ldrb r1, [r3, #0x12]
|
|
strb r1, [ip, #0xe]
|
|
ldrb r1, [r3, #0x13]
|
|
strb r1, [ip, #0xf]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
ldr r0, [r3, #0x14]
|
|
str r0, [ip, #0x10]
|
|
ldrb r0, [r3, #0x24]
|
|
strb r0, [ip, #0x20]
|
|
_02055FA8:
|
|
ldrh r0, [r5], #2
|
|
subs lr, lr, #1
|
|
strh r0, [r4], #2
|
|
bne _02055FA8
|
|
add r0, ip, #0x3a
|
|
add r1, r3, #0x42
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02055F04
|
|
|
|
arm_func_start sub_02055FCC
|
|
sub_02055FCC: ; 0x02055FCC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
beq _02056068
|
|
mov r0, r4
|
|
bl GetItemMoveId16
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl GetTeamMember
|
|
mov lr, #0
|
|
mov r3, lr
|
|
mov ip, #1
|
|
mov r2, #6
|
|
b _02056040
|
|
_0205600C:
|
|
smlabb r5, lr, r2, r0
|
|
ldrb r1, [r5, #0x22]
|
|
tst r1, #1
|
|
movne r1, ip
|
|
moveq r1, r3
|
|
tst r1, #0xff
|
|
beq _02056034
|
|
ldrh r1, [r5, #0x24]
|
|
cmp r4, r1
|
|
beq _02056048
|
|
_02056034:
|
|
add r1, lr, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov lr, r1, asr #0x10
|
|
_02056040:
|
|
cmp lr, #4
|
|
blt _0205600C
|
|
_02056048:
|
|
cmp lr, #4
|
|
blt _02056068
|
|
ldrsh r1, [r0, #4]
|
|
mov r0, r4
|
|
bl sub_02053D1C
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
_02056068:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02055FCC
|
|
|
|
arm_func_start IsMonsterNotNicknamed
|
|
IsMonsterNotNicknamed: ; 0x02056070
|
|
ldr ip, _02056080 ; =StrcmpMonsterName
|
|
ldrsh r1, [r0, #4]
|
|
add r0, r0, #0x3a
|
|
bx ip
|
|
.align 2, 0
|
|
_02056080: .word StrcmpMonsterName
|
|
arm_func_end IsMonsterNotNicknamed
|
|
|
|
arm_func_start sub_02056084
|
|
sub_02056084: ; 0x02056084
|
|
ldr ip, _02056090 ; =sub_02054F44
|
|
add r1, r1, #0x3a
|
|
bx ip
|
|
.align 2, 0
|
|
_02056090: .word sub_02054F44
|
|
arm_func_end sub_02056084
|
|
|
|
arm_func_start sub_02056094
|
|
sub_02056094: ; 0x02056094
|
|
ldr ip, _020560A0 ; =sub_02054FA0
|
|
add r1, r1, #0x3a
|
|
bx ip
|
|
.align 2, 0
|
|
_020560A0: .word sub_02054FA0
|
|
arm_func_end sub_02056094
|
|
|
|
arm_func_start sub_020560A4
|
|
sub_020560A4: ; 0x020560A4
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end sub_020560A4
|
|
|
|
arm_func_start sub_020560B8
|
|
sub_020560B8: ; 0x020560B8
|
|
ldr ip, _020560C4 ; =SetActiveTeam
|
|
mov r0, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_020560C4: .word SetActiveTeam
|
|
arm_func_end sub_020560B8
|
|
|
|
arm_func_start RemoveActiveMembersFromAllTeams
|
|
RemoveActiveMembersFromAllTeams: ; 0x020560C8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov lr, #0
|
|
ldr r7, _02056154 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, lr
|
|
mvn r0, #0
|
|
mov r2, lr
|
|
mov r4, #0x68
|
|
mov r6, #0x1a0
|
|
_020560E8:
|
|
mul ip, lr, r6
|
|
mov r3, r2
|
|
_020560F0:
|
|
ldr r5, [r7]
|
|
add r5, ip, r5
|
|
mla r5, r3, r4, r5
|
|
add r5, r5, #0x9000
|
|
strb r1, [r5, #0x36c]
|
|
ldr r5, [r7]
|
|
add r5, r5, lr, lsl #3
|
|
add r5, r5, r3, lsl #1
|
|
add r5, r5, #0x9800
|
|
add r3, r3, #1
|
|
strh r0, [r5, #0x56]
|
|
cmp r3, #4
|
|
blt _020560F0
|
|
ldr r3, [r7]
|
|
add r3, r3, lr, lsl #1
|
|
add r3, r3, #0x9800
|
|
strh r0, [r3, #0x50]
|
|
ldr r3, [r7]
|
|
add r3, r3, lr
|
|
add r3, r3, #0x9000
|
|
add lr, lr, #1
|
|
strb r1, [r3, #0x874]
|
|
cmp lr, #3
|
|
blt _020560E8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02056154: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end RemoveActiveMembersFromAllTeams
|
|
|
|
arm_func_start RemoveActiveMembersFromSpecialEpisodeTeam
|
|
RemoveActiveMembersFromSpecialEpisodeTeam: ; 0x02056158
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
ldr r3, _020561BC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r0, lr
|
|
mvn ip, #0
|
|
mov r1, #0x68
|
|
_02056170:
|
|
ldr r2, [r3]
|
|
mla r2, lr, r1, r2
|
|
add r2, r2, #0x9000
|
|
strb r0, [r2, #0x50c]
|
|
ldr r2, [r3]
|
|
add r2, r2, lr, lsl #1
|
|
add r2, r2, #0x9800
|
|
add lr, lr, #1
|
|
strh ip, [r2, #0x5e]
|
|
cmp lr, #4
|
|
blt _02056170
|
|
ldr r2, _020561BC ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x9800
|
|
strh ip, [r1, #0x52]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x9000
|
|
strb r0, [r1, #0x875]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020561BC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end RemoveActiveMembersFromSpecialEpisodeTeam
|
|
|
|
arm_func_start RemoveActiveMembersFromRescueTeam
|
|
RemoveActiveMembersFromRescueTeam: ; 0x020561C0
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
ldr r3, _02056224 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r0, lr
|
|
mvn ip, #0
|
|
mov r1, #0x68
|
|
_020561D8:
|
|
ldr r2, [r3]
|
|
mla r2, lr, r1, r2
|
|
add r2, r2, #0x9000
|
|
strb r0, [r2, #0x6ac]
|
|
ldr r2, [r3]
|
|
add r2, r2, lr, lsl #1
|
|
add r2, r2, #0x9800
|
|
add lr, lr, #1
|
|
strh ip, [r2, #0x66]
|
|
cmp lr, #4
|
|
blt _020561D8
|
|
ldr r2, _02056224 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x9800
|
|
strh ip, [r1, #0x54]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x9000
|
|
strb r0, [r1, #0x876]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02056224: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end RemoveActiveMembersFromRescueTeam
|
|
|
|
arm_func_start sub_02056228
|
|
sub_02056228: ; 0x02056228
|
|
ldr r1, _0205625C ; =0x000055AA
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
ldr r1, _02056260 ; =0x00005AA5
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
cmp r0, #0
|
|
movlt r0, #1
|
|
movge r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0205625C: .word 0x000055AA
|
|
_02056260: .word 0x00005AA5
|
|
arm_func_end sub_02056228
|
|
|
|
arm_func_start CheckTeamMemberIdx
|
|
CheckTeamMemberIdx: ; 0x02056264
|
|
ldr r1, _0205628C ; =0x000055AA
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
ldr r1, _02056290 ; =0x00005AA5
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0205628C: .word 0x000055AA
|
|
_02056290: .word 0x00005AA5
|
|
arm_func_end CheckTeamMemberIdx
|
|
|
|
arm_func_start IsMonsterIdInNormalRange
|
|
IsMonsterIdInNormalRange: ; 0x02056294
|
|
cmp r0, #0
|
|
blt _020562AC
|
|
ldr r1, _020562B4 ; =0x0000022B
|
|
cmp r0, r1
|
|
movlt r0, #1
|
|
bxlt lr
|
|
_020562AC:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_020562B4: .word 0x0000022B
|
|
arm_func_end IsMonsterIdInNormalRange
|
|
|
|
arm_func_start sub_020562B8
|
|
sub_020562B8: ; 0x020562B8
|
|
cmp r0, #0
|
|
movlt r0, #1
|
|
movge r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end sub_020562B8
|
|
|
|
arm_func_start SetActiveTeam
|
|
SetActiveTeam: ; 0x020562CC
|
|
ldr r3, _02056314 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, #0x1a0
|
|
ldr r1, [r3]
|
|
add r1, r1, #0x9000
|
|
strb r0, [r1, #0x877]
|
|
ldr ip, [r3]
|
|
add r1, ip, #0x36c
|
|
add r1, r1, #0x9000
|
|
mla r2, r0, r2, r1
|
|
add r1, ip, #0x9000
|
|
str r2, [r1, #0x84c]
|
|
ldr r2, [r3]
|
|
add r1, r2, #0x56
|
|
add r1, r1, #0x9800
|
|
add r1, r1, r0, lsl #3
|
|
add r0, r2, #0x9000
|
|
str r1, [r0, #0x870]
|
|
bx lr
|
|
.align 2, 0
|
|
_02056314: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end SetActiveTeam
|
|
|
|
arm_func_start sub_02056318
|
|
sub_02056318: ; 0x02056318
|
|
ldr r1, _02056338 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r2, [r1]
|
|
add r1, r2, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
add r1, r2, r1
|
|
add r1, r1, #0x9000
|
|
strb r0, [r1, #0x874]
|
|
bx lr
|
|
.align 2, 0
|
|
_02056338: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056318
|
|
|
|
arm_func_start sub_0205633C
|
|
sub_0205633C: ; 0x0205633C
|
|
ldr r0, _0205635C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
add r0, r1, r0
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x874]
|
|
bx lr
|
|
.align 2, 0
|
|
_0205635C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_0205633C
|
|
|
|
arm_func_start sub_02056360
|
|
sub_02056360: ; 0x02056360
|
|
ldr r0, _02056388 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r1, [r0, #0x874]
|
|
cmp r1, #0
|
|
ldreqb r0, [r0, #0x875]
|
|
cmpeq r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02056388: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056360
|
|
|
|
arm_func_start GetActiveTeamMember
|
|
GetActiveTeamMember: ; 0x0205638C
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldr r1, _020563B8 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, #0x68
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x9000
|
|
ldr r1, [r1, #0x84c]
|
|
smlabb r0, r0, r2, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_020563B8: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetActiveTeamMember
|
|
|
|
arm_func_start GetActiveRosterIndex
|
|
GetActiveRosterIndex: ; 0x020563BC
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _02056404
|
|
ldr r1, _0205640C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x9000
|
|
b _020563FC
|
|
_020563DC:
|
|
ldr r3, [r1, #0x870]
|
|
mov r2, ip, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
cmp r0, r2
|
|
moveq r0, ip, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
bxeq lr
|
|
add ip, ip, #1
|
|
_020563FC:
|
|
cmp ip, #4
|
|
blt _020563DC
|
|
_02056404:
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0205640C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetActiveRosterIndex
|
|
|
|
arm_func_start sub_02056410
|
|
sub_02056410: ; 0x02056410
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _02056454
|
|
ldr r1, _0205645C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x9000
|
|
b _0205644C
|
|
_02056430:
|
|
ldr r3, [r1, #0x870]
|
|
mov r2, ip, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
cmp r0, r2
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add ip, ip, #1
|
|
_0205644C:
|
|
cmp ip, #4
|
|
blt _02056430
|
|
_02056454:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0205645C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056410
|
|
|
|
arm_func_start sub_02056460
|
|
sub_02056460: ; 0x02056460
|
|
mvn r2, #0
|
|
cmp r0, r2
|
|
beq _020564A4
|
|
ldr r2, _020564AC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r3, #0
|
|
ldr r2, [r2]
|
|
add r2, r2, r1, lsl #3
|
|
b _0205649C
|
|
_02056480:
|
|
add r1, r2, r3, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r1, [r1, #0x56]
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add r3, r3, #1
|
|
_0205649C:
|
|
cmp r3, #4
|
|
blt _02056480
|
|
_020564A4:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_020564AC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056460
|
|
|
|
arm_func_start sub_020564B0
|
|
sub_020564B0: ; 0x020564B0
|
|
mvn r3, #0
|
|
cmp r0, r3
|
|
beq _020564F8
|
|
ldr r1, _02056500 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, [r1]
|
|
add r1, ip, #0x9000
|
|
ldrb r2, [r1, #0x877]
|
|
add r2, ip, r2, lsl #1
|
|
add r2, r2, #0x9800
|
|
ldrsh ip, [r2, #0x50]
|
|
cmp ip, r3
|
|
beq _020564F8
|
|
ldr r2, [r1, #0x870]
|
|
mov r1, ip, lsl #1
|
|
ldrsh r1, [r2, r1]
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
_020564F8:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02056500: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020564B0
|
|
|
|
arm_func_start sub_02056504
|
|
sub_02056504: ; 0x02056504
|
|
mvn r3, #0
|
|
cmp r0, r3
|
|
beq _02056548
|
|
ldr r2, _02056550 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, [r2]
|
|
add r2, ip, r1, lsl #1
|
|
add r2, r2, #0x9800
|
|
ldrsh r2, [r2, #0x50]
|
|
cmp r2, r3
|
|
beq _02056548
|
|
add r1, ip, r1, lsl #3
|
|
add r1, r1, r2, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r1, [r1, #0x56]
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
_02056548:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02056550: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056504
|
|
|
|
arm_func_start sub_02056554
|
|
sub_02056554: ; 0x02056554
|
|
stmdb sp!, {r4, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _020565E8
|
|
ldr r1, _020565F0 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, #0
|
|
ldr lr, [r1]
|
|
add r1, lr, #0x9000
|
|
b _02056598
|
|
_02056578:
|
|
ldr r3, [r1, #0x870]
|
|
mov r2, ip, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
cmp r0, r2
|
|
moveq r0, ip, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r4, pc}
|
|
add ip, ip, #1
|
|
_02056598:
|
|
cmp ip, #4
|
|
blt _02056578
|
|
mov r4, #0
|
|
add r1, lr, #0x9000
|
|
mvn r2, #0
|
|
b _020565E0
|
|
_020565B0:
|
|
ldr r3, [r1, #0x870]
|
|
mov ip, r4, lsl #1
|
|
ldrsh r3, [r3, ip]
|
|
cmp r3, r2
|
|
bne _020565DC
|
|
add r1, lr, #0x9000
|
|
ldr r2, [r1, #0x870]
|
|
mov r1, r4, lsl #0x10
|
|
strh r0, [r2, ip]
|
|
mov r0, r1, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
_020565DC:
|
|
add r4, r4, #1
|
|
_020565E0:
|
|
cmp r4, #4
|
|
blt _020565B0
|
|
_020565E8:
|
|
mvn r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020565F0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056554
|
|
|
|
arm_func_start sub_020565F4
|
|
sub_020565F4: ; 0x020565F4
|
|
stmdb sp!, {r4, lr}
|
|
mvn r2, #0
|
|
cmp r0, r2
|
|
beq _0205668C
|
|
ldr r2, _02056694 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, #0
|
|
ldr lr, [r2]
|
|
add r3, lr, r1, lsl #3
|
|
b _02056638
|
|
_02056618:
|
|
add r2, r3, ip, lsl #1
|
|
add r2, r2, #0x9800
|
|
ldrsh r2, [r2, #0x56]
|
|
cmp r0, r2
|
|
moveq r0, ip, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r4, pc}
|
|
add ip, ip, #1
|
|
_02056638:
|
|
cmp ip, #4
|
|
blt _02056618
|
|
mov r4, #0
|
|
add ip, lr, r1, lsl #3
|
|
mvn r3, #0
|
|
b _02056684
|
|
_02056650:
|
|
add r2, ip, r4, lsl #1
|
|
add r2, r2, #0x9800
|
|
ldrsh r2, [r2, #0x56]
|
|
cmp r2, r3
|
|
bne _02056680
|
|
add r1, lr, r1, lsl #3
|
|
add r1, r1, r4, lsl #1
|
|
add r1, r1, #0x9800
|
|
mov r2, r4, lsl #0x10
|
|
strh r0, [r1, #0x56]
|
|
mov r0, r2, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
_02056680:
|
|
add r4, r4, #1
|
|
_02056684:
|
|
cmp r4, #4
|
|
blt _02056650
|
|
_0205668C:
|
|
mvn r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02056694: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020565F4
|
|
|
|
arm_func_start sub_02056698
|
|
sub_02056698: ; 0x02056698
|
|
mvn r2, #0
|
|
cmp r1, r2
|
|
bxeq lr
|
|
ldr r2, _020566C0 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r3, r0, lsl #1
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x9000
|
|
ldr r0, [r0, #0x870]
|
|
strh r1, [r0, r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_020566C0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056698
|
|
|
|
arm_func_start sub_020566C4
|
|
sub_020566C4: ; 0x020566C4
|
|
stmdb sp!, {r3, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _02056748
|
|
ldr r2, _02056750 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0
|
|
ldr lr, [r2]
|
|
add r2, lr, #0x9000
|
|
b _02056740
|
|
_020566E8:
|
|
ldr r3, [r2, #0x870]
|
|
mov ip, r1, lsl #1
|
|
ldrsh r3, [r3, ip]
|
|
cmp r0, r3
|
|
bne _0205673C
|
|
add r0, lr, #0x9000
|
|
ldr r2, [r0, #0x870]
|
|
mvn r3, #0
|
|
ldr r0, _02056750 ; =TEAM_MEMBER_TABLE_PTR
|
|
strh r3, [r2, ip]
|
|
ldr r2, [r0]
|
|
add r0, r2, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
add r0, r2, r0, lsl #1
|
|
add r0, r0, #0x9800
|
|
ldrsh r2, [r0, #0x50]
|
|
cmp r1, r2
|
|
streqh r3, [r0, #0x50]
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r3, pc}
|
|
_0205673C:
|
|
add r1, r1, #1
|
|
_02056740:
|
|
cmp r1, #4
|
|
blt _020566E8
|
|
_02056748:
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02056750: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020566C4
|
|
|
|
arm_func_start TryAddMonsterToActiveTeam
|
|
TryAddMonsterToActiveTeam: ; 0x02056754
|
|
stmdb sp!, {r4, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _02056824
|
|
ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, #0
|
|
ldr lr, [r1]
|
|
add r1, lr, #0x9000
|
|
b _020567B8
|
|
_02056778:
|
|
ldr r3, [r1, #0x870]
|
|
mov r2, ip, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
cmp r0, r2
|
|
bne _020567B4
|
|
ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r0, ip, lsl #0x10
|
|
ldr r2, [r1]
|
|
mov r0, r0, asr #0x10
|
|
add r1, r2, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
add r1, r2, r1, lsl #1
|
|
add r1, r1, #0x9800
|
|
strh r0, [r1, #0x50]
|
|
ldmia sp!, {r4, pc}
|
|
_020567B4:
|
|
add ip, ip, #1
|
|
_020567B8:
|
|
cmp ip, #4
|
|
blt _02056778
|
|
mov r4, #0
|
|
add r1, lr, #0x9000
|
|
mvn r2, #0
|
|
b _0205681C
|
|
_020567D0:
|
|
ldr r3, [r1, #0x870]
|
|
mov ip, r4, lsl #1
|
|
ldrsh r3, [r3, ip]
|
|
cmp r3, r2
|
|
bne _02056818
|
|
add r1, lr, #0x9000
|
|
ldr r2, [r1, #0x870]
|
|
ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR
|
|
strh r0, [r2, ip]
|
|
ldr r2, [r1]
|
|
mov r0, r4, lsl #0x10
|
|
add r1, r2, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
mov r0, r0, asr #0x10
|
|
add r1, r2, r1, lsl #1
|
|
add r1, r1, #0x9800
|
|
strh r0, [r1, #0x50]
|
|
ldmia sp!, {r4, pc}
|
|
_02056818:
|
|
add r4, r4, #1
|
|
_0205681C:
|
|
cmp r4, #4
|
|
blt _020567D0
|
|
_02056824:
|
|
mvn r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0205682C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end TryAddMonsterToActiveTeam
|
|
|
|
arm_func_start sub_02056830
|
|
sub_02056830: ; 0x02056830
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, #0
|
|
mov r6, r7
|
|
mov r4, r7
|
|
mov r5, #1
|
|
_02056844:
|
|
mov r0, r6
|
|
bl GetActiveTeamMember
|
|
ldrb r0, [r0]
|
|
tst r0, #1
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, asr #0x10
|
|
addeq r7, r7, #1
|
|
cmp r6, #4
|
|
blt _02056844
|
|
mov r0, r7
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end sub_02056830
|
|
|
|
arm_func_start sub_02056880
|
|
sub_02056880: ; 0x02056880
|
|
ldr r0, _020568A0 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0x9800
|
|
ldrsh r0, [r0, #0x50]
|
|
bx lr
|
|
.align 2, 0
|
|
_020568A0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056880
|
|
|
|
arm_func_start sub_020568A4
|
|
sub_020568A4: ; 0x020568A4
|
|
ldr r1, _020568D8 ; =TEAM_MEMBER_TABLE_PTR
|
|
mvn r0, #0
|
|
ldr r3, [r1]
|
|
add r1, r3, #0x9000
|
|
ldrb r2, [r1, #0x877]
|
|
add r2, r3, r2, lsl #1
|
|
add r2, r2, #0x9800
|
|
ldrsh r2, [r2, #0x50]
|
|
cmp r2, r0
|
|
ldrne r1, [r1, #0x870]
|
|
movne r0, r2, lsl #1
|
|
ldrnesh r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_020568D8: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020568A4
|
|
|
|
arm_func_start sub_020568DC
|
|
sub_020568DC: ; 0x020568DC
|
|
ldr r1, _02056910 ; =TEAM_MEMBER_TABLE_PTR
|
|
mvn r3, #0
|
|
ldr r2, [r1]
|
|
add r1, r2, r0, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r1, [r1, #0x50]
|
|
cmp r1, r3
|
|
addne r0, r2, r0, lsl #3
|
|
addne r0, r0, r1, lsl #1
|
|
addne r0, r0, #0x9800
|
|
ldrnesh r3, [r0, #0x56]
|
|
mov r0, r3
|
|
bx lr
|
|
.align 2, 0
|
|
_02056910: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020568DC
|
|
|
|
arm_func_start sub_02056914
|
|
sub_02056914: ; 0x02056914
|
|
ldr r0, _0205695C ; =TEAM_MEMBER_TABLE_PTR
|
|
mvn r2, #0
|
|
ldr ip, [r0]
|
|
add r0, ip, #0x9000
|
|
ldrb r1, [r0, #0x877]
|
|
add r1, ip, r1, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r3, [r1, #0x50]
|
|
cmp r3, r2
|
|
ldrne r1, [r0, #0x870]
|
|
movne r0, r3, lsl #1
|
|
ldrnesh r1, [r1, r0]
|
|
cmpne r1, r2
|
|
moveq r0, #0
|
|
bxeq lr
|
|
mov r0, #0x44
|
|
smlabb r0, r1, r0, ip
|
|
bx lr
|
|
.align 2, 0
|
|
_0205695C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056914
|
|
|
|
arm_func_start RemoveActiveMembersFromMainTeam
|
|
RemoveActiveMembersFromMainTeam: ; 0x02056960
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r0, #0
|
|
ldr r2, _020569C8 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, r0
|
|
mvn ip, #0
|
|
mov r3, #1
|
|
_02056978:
|
|
ldr r1, [r2]
|
|
mov lr, r5, lsl #1
|
|
add r1, r1, #0x9000
|
|
ldr r4, [r1, #0x870]
|
|
add r5, r5, #1
|
|
ldrsh r1, [r4, lr]
|
|
cmp r1, ip
|
|
movne r0, r3
|
|
strneh ip, [r4, lr]
|
|
cmp r5, #4
|
|
blt _02056978
|
|
ldr r1, _020569C8 ; =TEAM_MEMBER_TABLE_PTR
|
|
mvn r2, #0
|
|
ldr r3, [r1]
|
|
add r1, r3, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
add r1, r3, r1, lsl #1
|
|
add r1, r1, #0x9800
|
|
strh r2, [r1, #0x50]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020569C8: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end RemoveActiveMembersFromMainTeam
|
|
|
|
arm_func_start SetTeamSetupHeroAndPartnerOnly
|
|
SetTeamSetupHeroAndPartnerOnly: ; 0x020569CC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bl GetMainCharacter1MemberIdx
|
|
mov r5, r0
|
|
bl GetMainCharacter2MemberIdx
|
|
mov r6, r0
|
|
bl GetMainCharacter3MemberIdx
|
|
#ifdef JAPAN
|
|
mov sl, #0
|
|
ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r7, r0
|
|
ldr r0, [r1]
|
|
mov fp, sl
|
|
add r0, r0, #0x9000
|
|
ldr sb, [r0, #0x84c]
|
|
#else
|
|
mov r8, #0
|
|
ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r7, r0
|
|
ldr r1, [r1]
|
|
mov sl, r8
|
|
add r0, r1, #0x9000
|
|
ldr sb, [r0, #0x84c]
|
|
mov fp, r8
|
|
#endif
|
|
mov r4, #1
|
|
_02056A08:
|
|
ldrb r0, [sb]
|
|
tst r0, #1
|
|
movne r0, r4
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
ldrnesh r0, [sb, #8]
|
|
cmpne r0, r5
|
|
cmpne r0, r6
|
|
cmpne r0, r7
|
|
beq _02056A40
|
|
mov r0, sl, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r8, #1
|
|
bl sub_02058138
|
|
_02056A40:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
add sb, sb, #0x68
|
|
blt _02056A08
|
|
bl RemoveActiveMembersFromMainTeam
|
|
mvn r0, #0
|
|
cmp r5, r0
|
|
beq _02056A68
|
|
mov r0, r5
|
|
bl TryAddMonsterToActiveTeam
|
|
_02056A68:
|
|
mvn r0, #0
|
|
cmp r6, r0
|
|
beq _02056A7C
|
|
mov r0, r6
|
|
bl sub_02056554
|
|
_02056A7C:
|
|
mvn r0, #0
|
|
cmp r7, r0
|
|
beq _02056A90
|
|
mov r0, r7
|
|
bl sub_02056554
|
|
_02056A90:
|
|
ldr r0, _02056AAC ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bl sub_02057464
|
|
mov r0, r8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02056AAC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end SetTeamSetupHeroAndPartnerOnly
|
|
|
|
arm_func_start SetTeamSetupHeroOnly
|
|
SetTeamSetupHeroOnly: ; 0x02056AB0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bl sub_020568A4
|
|
ldr r1, _02056B54 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r7, r0
|
|
#ifdef JAPAN
|
|
ldr r0, [r1]
|
|
mov sl, #0
|
|
add r0, r0, #0x9000
|
|
mov r6, #1
|
|
ldr sb, [r0, #0x84c]
|
|
mov r5, sl
|
|
#else
|
|
mov r8, #0
|
|
ldr r1, [r1]
|
|
mov r6, #1
|
|
add r0, r1, #0x9000
|
|
ldr sb, [r0, #0x84c]
|
|
mov sl, r8
|
|
mov r5, r8
|
|
#endif
|
|
mov r4, r6
|
|
_02056AE0:
|
|
ldrb r0, [sb]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
ldrnesh r0, [sb, #8]
|
|
cmpne r0, r7
|
|
beq _02056B10
|
|
mov r0, sl, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r8, r4
|
|
bl sub_02058138
|
|
_02056B10:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
add sb, sb, #0x68
|
|
blt _02056AE0
|
|
bl RemoveActiveMembersFromMainTeam
|
|
mvn r0, #0
|
|
cmp r7, r0
|
|
beq _02056B38
|
|
mov r0, r7
|
|
bl TryAddMonsterToActiveTeam
|
|
_02056B38:
|
|
ldr r0, _02056B54 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bl sub_02057464
|
|
mov r0, r8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02056B54: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end SetTeamSetupHeroOnly
|
|
|
|
arm_func_start sub_02056B58
|
|
sub_02056B58: ; 0x02056B58
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, [r2]
|
|
add r0, ip, #0x9000
|
|
ldrb r3, [r0, #0x877]
|
|
cmp r3, #2
|
|
ldmneia sp!, {r3, pc}
|
|
add r0, ip, #0x9800
|
|
ldrsh r1, [r0, #0x50]
|
|
add r0, ip, r3, lsl #1
|
|
add r0, r0, #0x9800
|
|
strh r1, [r0, #0x50]
|
|
mov lr, #0
|
|
_02056B8C:
|
|
ldr r1, [r2]
|
|
mov ip, lr, lsl #1
|
|
add r0, r1, lr, lsl #1
|
|
add r0, r0, #0x9800
|
|
add r1, r1, #0x9000
|
|
ldrsh r3, [r0, #0x56]
|
|
ldr r0, [r1, #0x870]
|
|
add lr, lr, #1
|
|
strh r3, [r0, ip]
|
|
cmp lr, #4
|
|
blt _02056B8C
|
|
ldr r0, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bl sub_02057464
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02056BD0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056B58
|
|
|
|
arm_func_start sub_02056BD4
|
|
sub_02056BD4: ; 0x02056BD4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
cmp r0, #2
|
|
ldmneia sp!, {r3, pc}
|
|
bl RemoveActiveMembersFromMainTeam
|
|
bl GetHeroMemberIdx
|
|
bl TryAddMonsterToActiveTeam
|
|
bl GetPartnerMemberIdx
|
|
bl sub_02056554
|
|
ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bl sub_02057464
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02056C1C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056BD4
|
|
|
|
arm_func_start GetPartyMembers
|
|
GetPartyMembers: ; 0x02056C20
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r0
|
|
bl sub_020568A4
|
|
mov r6, r0
|
|
bl GetMainCharacter1MemberIdx
|
|
mov r7, r0
|
|
bl GetMainCharacter2MemberIdx
|
|
mov r8, r0
|
|
bl GetMainCharacter3MemberIdx
|
|
mov sb, r0
|
|
cmp r5, #0
|
|
mvn r0, #0
|
|
addeq r5, sp, #0
|
|
cmp r6, r0
|
|
mov r4, #0
|
|
mvn r0, #0
|
|
strneh r6, [r5]
|
|
addne r4, r4, #1
|
|
cmp r7, r0
|
|
beq _02056C90
|
|
mov r0, r7
|
|
bl sub_02056410
|
|
cmp r0, #0
|
|
cmpne r7, r6
|
|
movne r0, r4, lsl #1
|
|
strneh r7, [r5, r0]
|
|
addne r4, r4, #1
|
|
_02056C90:
|
|
mvn r0, #0
|
|
cmp r8, r0
|
|
beq _02056CB8
|
|
mov r0, r8
|
|
bl sub_02056410
|
|
cmp r0, #0
|
|
cmpne r8, r6
|
|
movne r0, r4, lsl #1
|
|
strneh r8, [r5, r0]
|
|
addne r4, r4, #1
|
|
_02056CB8:
|
|
mvn r0, #0
|
|
cmp sb, r0
|
|
beq _02056CE0
|
|
mov r0, sb
|
|
bl sub_02056410
|
|
cmp r0, #0
|
|
cmpne sb, r6
|
|
movne r0, r4, lsl #1
|
|
strneh sb, [r5, r0]
|
|
addne r4, r4, #1
|
|
_02056CE0:
|
|
ldr r0, _02056D6C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r8, #0
|
|
ldr r0, [r0]
|
|
mov r6, r8
|
|
add r0, r0, #0x9000
|
|
ldr sb, [r0, #0x84c]
|
|
mov r7, #1
|
|
b _02056D58
|
|
_02056D00:
|
|
ldrb r0, [sb]
|
|
tst r0, #2
|
|
movne r0, r7
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _02056D50
|
|
ldrsh sl, [sb, #8]
|
|
mov r0, sl
|
|
bl sub_020564B0
|
|
cmp r0, #0
|
|
bne _02056D50
|
|
mov r0, sl
|
|
bl IsMainCharacter
|
|
cmp r0, #0
|
|
bne _02056D50
|
|
mov r0, r4, lsl #1
|
|
add r4, r4, #1
|
|
strh sl, [r5, r0]
|
|
cmp r4, #4
|
|
bge _02056D60
|
|
_02056D50:
|
|
add r8, r8, #1
|
|
add sb, sb, #0x68
|
|
_02056D58:
|
|
cmp r8, #4
|
|
blt _02056D00
|
|
_02056D60:
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02056D6C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end GetPartyMembers
|
|
|
|
arm_func_start sub_02056D70
|
|
sub_02056D70: ; 0x02056D70
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
movs sl, r0
|
|
ldr r0, _02056E00 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r6, #0
|
|
ldr r0, [r0]
|
|
mov sb, #0
|
|
add r0, r0, #0x9000
|
|
ldr r7, [r0, #0x84c]
|
|
addeq sl, sp, #0
|
|
mov r4, r6
|
|
mov r5, #1
|
|
_02056DA0:
|
|
ldrb r0, [r7]
|
|
tst r0, #2
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
beq _02056DE4
|
|
ldrsh r8, [r7, #8]
|
|
mov r0, r8
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _02056DE4
|
|
mov r0, r8
|
|
bl sub_020564B0
|
|
cmp r0, #0
|
|
moveq r0, sb, lsl #1
|
|
streqh r8, [sl, r0]
|
|
addeq sb, sb, #1
|
|
_02056DE4:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
add r7, r7, #0x68
|
|
blt _02056DA0
|
|
mov r0, sb
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02056E00: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056D70
|
|
|
|
arm_func_start sub_02056E04
|
|
sub_02056E04: ; 0x02056E04
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
movs sl, r0
|
|
ldr r0, _02056EB4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r6, #0
|
|
ldr r0, [r0]
|
|
mov sb, #0
|
|
add r0, r0, #0x9000
|
|
ldr r7, [r0, #0x84c]
|
|
addeq sl, sp, #0
|
|
mov r4, r6
|
|
mov r5, #1
|
|
_02056E34:
|
|
ldrb r0, [r7]
|
|
tst r0, #2
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
beq _02056E98
|
|
ldrsh r8, [r7, #8]
|
|
mov r0, r8
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _02056E98
|
|
mov r0, r8
|
|
bl sub_02055410
|
|
cmp r0, #0
|
|
bne _02056E98
|
|
mov r0, r8
|
|
bl sub_02055474
|
|
cmp r0, #0
|
|
bne _02056E98
|
|
mov r0, r8
|
|
bl sub_020554D8
|
|
cmp r0, #0
|
|
moveq r0, sb, lsl #1
|
|
streqh r8, [sl, r0]
|
|
addeq sb, sb, #1
|
|
_02056E98:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
add r7, r7, #0x68
|
|
blt _02056E34
|
|
mov r0, sb
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02056EB4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056E04
|
|
|
|
arm_func_start sub_02056EB8
|
|
sub_02056EB8: ; 0x02056EB8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
ldr r1, _02056F5C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #0
|
|
ldr r1, [r1]
|
|
mov r8, r0
|
|
add r0, r1, #0x9000
|
|
ldr r4, [r0, #0x84c]
|
|
mov r6, r5
|
|
mov r7, r5
|
|
mov sb, r5
|
|
mov sl, #1
|
|
_02056EE4:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, sl
|
|
moveq r0, sb
|
|
tst r0, #0xff
|
|
beq _02056F1C
|
|
ldrsh r0, [r4, #8]
|
|
bl sub_02056410
|
|
cmp r0, #0
|
|
beq _02056F1C
|
|
ldrsh r0, [r4, #0xc]
|
|
bl GetBodySize
|
|
add r6, r6, r0
|
|
add r5, r5, #1
|
|
_02056F1C:
|
|
add r7, r7, #1
|
|
cmp r7, #4
|
|
add r4, r4, #0x68
|
|
blt _02056EE4
|
|
cmp r5, #4
|
|
movge r0, #0
|
|
ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
cmp r8, #0
|
|
beq _02056F4C
|
|
mov r0, r8
|
|
bl GetBodySize
|
|
add r6, r6, r0
|
|
_02056F4C:
|
|
cmp r6, #6
|
|
movgt r0, #0
|
|
movle r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02056F5C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056EB8
|
|
|
|
arm_func_start sub_02056F60
|
|
sub_02056F60: ; 0x02056F60
|
|
stmdb sp!, {r3, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _02057000
|
|
ldr r1, _0205700C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r3, [r1]
|
|
add r1, r3, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
cmp r1, #0
|
|
bne _02056FB8
|
|
mov r2, #0
|
|
b _02056FAC
|
|
_02056F90:
|
|
add r1, r3, r2, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r1, [r1, #0x5e]
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
add r2, r2, #1
|
|
_02056FAC:
|
|
cmp r2, #4
|
|
blt _02056F90
|
|
b _02056FEC
|
|
_02056FB8:
|
|
cmp r1, #1
|
|
bne _02056FEC
|
|
mov r2, #0
|
|
b _02056FE4
|
|
_02056FC8:
|
|
add r1, r3, r2, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r1, [r1, #0x56]
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
add r2, r2, #1
|
|
_02056FE4:
|
|
cmp r2, #4
|
|
blt _02056FC8
|
|
_02056FEC:
|
|
mov r1, #0x44
|
|
smlabb r0, r0, r1, r3
|
|
ldrsh r0, [r0, #4]
|
|
bl sub_02056EB8
|
|
ldmia sp!, {r3, pc}
|
|
_02057000:
|
|
mov r0, #0
|
|
bl sub_02056EB8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0205700C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02056F60
|
|
|
|
arm_func_start sub_02057010
|
|
sub_02057010: ; 0x02057010
|
|
ldr r1, _02057028 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, _0205702C ; =sub_02057030
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x9000
|
|
ldrb r1, [r1, #0x877]
|
|
bx ip
|
|
.align 2, 0
|
|
_02057028: .word TEAM_MEMBER_TABLE_PTR
|
|
_0205702C: .word sub_02057030
|
|
arm_func_end sub_02057010
|
|
|
|
arm_func_start sub_02057030
|
|
sub_02057030: ; 0x02057030
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov sb, r1
|
|
mov sl, r0
|
|
mov r0, sb
|
|
bl sub_020568DC
|
|
mov r4, r0
|
|
cmp sl, #0
|
|
mvn r0, #0
|
|
addeq sl, sp, #0
|
|
mov r8, #0
|
|
cmp r4, r0
|
|
beq _0205707C
|
|
mov r0, r4
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
strneh r4, [sl]
|
|
addne r8, r8, #1
|
|
mvneq r4, #0
|
|
_0205707C:
|
|
mov r7, #0
|
|
mvn fp, #0
|
|
_02057084:
|
|
ldr r0, _0205717C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r2, [r0]
|
|
add r0, r2, sb, lsl #3
|
|
add r0, r0, r7, lsl #1
|
|
add r0, r0, #0x9800
|
|
ldrsh r5, [r0, #0x56]
|
|
cmp r5, fp
|
|
cmpne r4, r5
|
|
beq _020570F8
|
|
mov r1, #0x44
|
|
mov r0, r5
|
|
smlabb r6, r5, r1, r2
|
|
bl sub_02055410
|
|
cmp r0, #0
|
|
bne _020570EC
|
|
mov r0, r5
|
|
bl sub_02055474
|
|
cmp r0, #0
|
|
bne _020570EC
|
|
mov r0, r5
|
|
bl sub_020554D8
|
|
cmp r0, #0
|
|
bne _020570EC
|
|
ldrsh r0, [r6, #4]
|
|
cmp r0, #0x214
|
|
bne _020570F8
|
|
_020570EC:
|
|
mov r0, r8, lsl #1
|
|
strh r5, [sl, r0]
|
|
add r8, r8, #1
|
|
_020570F8:
|
|
add r7, r7, #1
|
|
cmp r7, #4
|
|
blt _02057084
|
|
mov r0, #0
|
|
ldr r3, _0205717C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
mvn r2, #0
|
|
_02057114:
|
|
ldr r1, [r3]
|
|
add r1, r1, sb, lsl #3
|
|
add r1, r1, r0, lsl #1
|
|
add r1, r1, #0x9800
|
|
ldrsh r6, [r1, #0x56]
|
|
cmp r6, r2
|
|
beq _02057164
|
|
mov r5, r4
|
|
b _0205714C
|
|
_02057138:
|
|
mov r1, r5, lsl #1
|
|
ldrsh r1, [sl, r1]
|
|
cmp r6, r1
|
|
beq _02057154
|
|
add r5, r5, #1
|
|
_0205714C:
|
|
cmp r5, r8
|
|
blt _02057138
|
|
_02057154:
|
|
cmp r5, r8
|
|
movge r1, r8, lsl #1
|
|
strgeh r6, [sl, r1]
|
|
addge r8, r8, #1
|
|
_02057164:
|
|
add r0, r0, #1
|
|
cmp r0, #4
|
|
blt _02057114
|
|
mov r0, r8
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0205717C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057030
|
|
|
|
arm_func_start sub_02057180
|
|
sub_02057180: ; 0x02057180
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x58
|
|
sub sp, sp, #0x400
|
|
add r0, sp, #0
|
|
bl sub_020559D8
|
|
mov r8, #0
|
|
ldr fp, _020572E0 ; =_020A3398
|
|
ldr r5, _020572E4 ; =TEAM_MEMBER_TABLE_PTR
|
|
add r6, sp, #0
|
|
mov r7, r8
|
|
mvn r4, #0
|
|
_020571AC:
|
|
mov sb, r7
|
|
_020571B0:
|
|
ldr r0, [r5]
|
|
add r0, r0, r8, lsl #3
|
|
add r0, r0, sb, lsl #1
|
|
add r0, r0, #0x9800
|
|
ldrsh sl, [r0, #0x56]
|
|
cmp sl, r4
|
|
beq _02057200
|
|
mov r0, sl, lsl #1
|
|
ldrsh r3, [r6, r0]
|
|
mov r0, fp
|
|
mov r1, r8
|
|
mov r2, sl
|
|
bl Debug_Print0
|
|
ldr r0, [r5]
|
|
mov r1, sl, lsl #1
|
|
add r0, r0, r8, lsl #3
|
|
add r0, r0, sb, lsl #1
|
|
ldrsh r1, [r6, r1]
|
|
add r0, r0, #0x9800
|
|
strh r1, [r0, #0x56]
|
|
_02057200:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
blt _020571B0
|
|
add r8, r8, #1
|
|
cmp r8, #3
|
|
blt _020571AC
|
|
mov sb, #0
|
|
_0205721C:
|
|
ldr r0, _020572E4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov sl, #0
|
|
ldr r0, [r0]
|
|
mov r1, #0x1a0
|
|
add r0, r0, #0x36c
|
|
add r0, r0, #0x9000
|
|
mla r8, sb, r1, r0
|
|
mov fp, #1
|
|
add r7, sp, #0
|
|
mov r5, sl
|
|
mov r6, sl
|
|
mvn r4, #0
|
|
_0205724C:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, fp
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020572B0
|
|
ldrsh r2, [r8, #8]
|
|
ldr r0, _020572E8 ; =_020A33B8
|
|
mov r1, sb
|
|
mov r3, r2, lsl #1
|
|
ldrsh r3, [r7, r3]
|
|
bl Debug_Print0
|
|
ldrsh r0, [r8, #8]
|
|
mov r1, r0, lsl #1
|
|
ldrsh r1, [r7, r1]
|
|
cmp r1, r4
|
|
streqb r6, [r8]
|
|
beq _020572B0
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
ldrnesh r0, [r8, #8]
|
|
movne r0, r0, lsl #1
|
|
ldrnesh r0, [r7, r0]
|
|
strneh r0, [r8, #8]
|
|
streqb r5, [r8]
|
|
_020572B0:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
add r8, r8, #0x68
|
|
blt _0205724C
|
|
and r0, sb, #0xff
|
|
bl sub_02057464
|
|
add sb, sb, #1
|
|
cmp sb, #3
|
|
blt _0205721C
|
|
add sp, sp, #0x58
|
|
add sp, sp, #0x400
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_020572E0: .word _020A3398
|
|
_020572E4: .word TEAM_MEMBER_TABLE_PTR
|
|
_020572E8: .word _020A33B8
|
|
arm_func_end sub_02057180
|
|
|
|
arm_func_start sub_020572EC
|
|
sub_020572EC: ; 0x020572EC
|
|
ldr r0, _02057304 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, _02057308 ; =sub_0205730C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bx ip
|
|
.align 2, 0
|
|
_02057304: .word TEAM_MEMBER_TABLE_PTR
|
|
_02057308: .word sub_0205730C
|
|
arm_func_end sub_020572EC
|
|
|
|
arm_func_start sub_0205730C
|
|
sub_0205730C: ; 0x0205730C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r1, _0205739C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
mov r8, #0
|
|
add r0, r0, #0x36c
|
|
mov r1, #0x1a0
|
|
add r0, r0, #0x9000
|
|
mla r7, r4, r1, r0
|
|
mov r5, r8
|
|
mov r6, #1
|
|
_02057338:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _02057388
|
|
ldrsh r0, [r7, #8]
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _02057388
|
|
ldrsh r0, [r7, #8]
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
beq _02057388
|
|
ldrsh r1, [r7, #8]
|
|
mov r2, r8, lsl #0x10
|
|
mov r0, r7
|
|
mov r3, r4
|
|
mov r2, r2, asr #0x10
|
|
bl sub_02053174
|
|
_02057388:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
add r7, r7, #0x68
|
|
blt _02057338
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_0205739C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_0205730C
|
|
|
|
arm_func_start sub_020573A0
|
|
sub_020573A0: ; 0x020573A0
|
|
ldr r0, _020573B8 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, _020573BC ; =sub_020573C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bx ip
|
|
.align 2, 0
|
|
_020573B8: .word TEAM_MEMBER_TABLE_PTR
|
|
_020573BC: .word sub_020573C0
|
|
arm_func_end sub_020573A0
|
|
|
|
arm_func_start sub_020573C0
|
|
sub_020573C0: ; 0x020573C0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _02057440 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, #0
|
|
ldr r1, [r1]
|
|
mov r2, #0x1a0
|
|
add r1, r1, #0x36c
|
|
add r1, r1, #0x9000
|
|
mla r7, r0, r2, r1
|
|
mov r5, r4
|
|
mov r6, #1
|
|
_020573E8:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _0205742C
|
|
ldrsh r0, [r7, #8]
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _0205742C
|
|
ldrsh r0, [r7, #8]
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
beq _0205742C
|
|
ldrsh r0, [r7, #8]
|
|
mov r1, r7
|
|
bl sub_0205349C
|
|
_0205742C:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
add r7, r7, #0x68
|
|
blt _020573E8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02057440: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020573C0
|
|
|
|
arm_func_start sub_02057444
|
|
sub_02057444: ; 0x02057444
|
|
ldr r0, _0205745C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, _02057460 ; =sub_02057464
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bx ip
|
|
.align 2, 0
|
|
_0205745C: .word TEAM_MEMBER_TABLE_PTR
|
|
_02057460: .word sub_02057464
|
|
arm_func_end sub_02057444
|
|
|
|
arm_func_start sub_02057464
|
|
sub_02057464: ; 0x02057464
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x8c
|
|
ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov sl, #0
|
|
ldr r2, [r1]
|
|
mov r5, r0
|
|
add r0, r2, r5, lsl #1
|
|
add r0, r0, #0x9800
|
|
ldrsh r1, [r0, #0x50]
|
|
mvn r4, #0
|
|
mov fp, sl
|
|
cmp r1, r4
|
|
addne r0, r2, r5, lsl #3
|
|
addne r0, r0, r1, lsl #1
|
|
addne r0, r0, #0x9800
|
|
ldrnesh r4, [r0, #0x56]
|
|
add r0, r2, #0x36c
|
|
add r1, r0, #0x9000
|
|
mov r0, #0x1a0
|
|
mla sb, r5, r0, r1
|
|
mov r6, #1
|
|
add r7, sp, #0x1c
|
|
mvn r8, #0
|
|
_020574C0:
|
|
ldrb r0, [sb]
|
|
mov r1, sl, lsl #1
|
|
strh r8, [r7, r1]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
beq _02057514
|
|
ldrsh r0, [sb, #8]
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _02057514
|
|
ldrsh r0, [sb, #8]
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
ldrnesh r1, [sb, #8]
|
|
movne r0, sl, lsl #1
|
|
strneh r1, [r7, r0]
|
|
bne _02057514
|
|
ldrsh r0, [sb, #8]
|
|
bl sub_020566C4
|
|
_02057514:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
add sb, sb, #0x68
|
|
blt _020574C0
|
|
add r0, sp, #0x14
|
|
mov r1, r5
|
|
bl sub_02057030
|
|
str r0, [sp, #0xc]
|
|
ldr r0, _020577B8 ; =_020A33D4
|
|
ldr r2, [sp, #0xc]
|
|
mov r1, r5
|
|
bl Debug_Print0
|
|
mov r0, #0x1a0
|
|
ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r7, #0
|
|
mul r2, r5, r0
|
|
ldr r1, [r1]
|
|
mov sl, r7
|
|
add r0, r1, #0x36c
|
|
add r0, r0, #0x9000
|
|
add r8, r0, r2
|
|
add r0, r1, r2
|
|
str r0, [sp, #8]
|
|
b _0205767C
|
|
_02057574:
|
|
add r0, sp, #0x14
|
|
mov r1, sl, lsl #1
|
|
ldrsh r0, [r0, r1]
|
|
mov sb, r8
|
|
mov r6, #0
|
|
str r0, [sp]
|
|
mov r0, r0
|
|
cmp r4, r0
|
|
moveq r0, sl, lsl #0x10
|
|
moveq r7, r0, asr #0x10
|
|
add r2, sp, #0x1c
|
|
b _020575C0
|
|
_020575A4:
|
|
mov r0, r6, lsl #1
|
|
ldrsh r1, [r2, r0]
|
|
ldr r0, [sp]
|
|
cmp r1, r0
|
|
beq _020575C8
|
|
add r6, r6, #1
|
|
add sb, sb, #0x68
|
|
_020575C0:
|
|
cmp r6, #4
|
|
blt _020575A4
|
|
_020575C8:
|
|
cmp r6, #4
|
|
bge _02057678
|
|
cmp sl, r6
|
|
beq _02057678
|
|
ldr r0, [sp, #8]
|
|
mov r1, #0x68
|
|
mla r0, sl, r1, r0
|
|
str r0, [sp, #4]
|
|
add r0, r0, #0x36c
|
|
add ip, sp, #0x24
|
|
add lr, r0, #0x9000
|
|
mov fp, #6
|
|
_020575F8:
|
|
subs fp, fp, #1
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
bne _020575F8
|
|
ldr r0, [sp, #4]
|
|
add r2, r0, #0x36c
|
|
ldmia lr, {r0, r1}
|
|
stmia ip, {r0, r1}
|
|
mov ip, sb
|
|
add fp, r2, #0x9000
|
|
mov lr, #6
|
|
_02057624:
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia fp!, {r0, r1, r2, r3}
|
|
subs lr, lr, #1
|
|
bne _02057624
|
|
ldmia ip, {r0, r1}
|
|
stmia fp, {r0, r1}
|
|
add fp, sp, #0x24
|
|
mov ip, #6
|
|
_02057644:
|
|
ldmia fp!, {r0, r1, r2, r3}
|
|
stmia sb!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _02057644
|
|
add r3, sp, #0x1c
|
|
mov ip, sl, lsl #1
|
|
ldrsh r2, [r3, ip]
|
|
mov r6, r6, lsl #1
|
|
ldmia fp, {r0, r1}
|
|
stmia sb, {r0, r1}
|
|
ldr r0, [sp]
|
|
strh r2, [r3, r6]
|
|
strh r0, [r3, ip]
|
|
_02057678:
|
|
add sl, sl, #1
|
|
_0205767C:
|
|
ldr r0, [sp, #0xc]
|
|
cmp sl, r0
|
|
blt _02057574
|
|
mov r1, #0
|
|
mov sl, r1
|
|
add r0, sp, #0x10
|
|
_02057694:
|
|
strb sl, [r0, r1]
|
|
add r1, r1, #1
|
|
cmp r1, #4
|
|
blt _02057694
|
|
add sb, sp, #0x14
|
|
add r6, sp, #0x1c
|
|
add r4, sp, #0x10
|
|
mov fp, #1
|
|
b _0205774C
|
|
_020576B8:
|
|
ldr r0, _020577B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r1, [r0]
|
|
mov r0, sl, lsl #1
|
|
add r1, r1, r5, lsl #3
|
|
add r1, r1, sl, lsl #1
|
|
ldrsh r3, [sb, r0]
|
|
add r1, r1, #0x9800
|
|
ldrsh r2, [r6, r0]
|
|
strh r3, [r1, #0x56]
|
|
ldrsh r1, [sb, r0]
|
|
cmp r2, r1
|
|
beq _020576FC
|
|
mov r0, r8
|
|
mov r2, sl, lsl #0x10
|
|
mov r2, r2, asr #0x10
|
|
bl sub_020530D4
|
|
b _02057724
|
|
_020576FC:
|
|
ldrb r0, [r8, #0x3e]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
addne r1, sl, #1
|
|
ldrneb r0, [r8, #0x3f]
|
|
andne r1, r1, #0xff
|
|
strneb r1, [r4, r0]
|
|
strneb r1, [r8, #0x3f]
|
|
_02057724:
|
|
strh sl, [r8, #0xa]
|
|
ldrb r0, [r8]
|
|
cmp r7, sl
|
|
add sl, sl, #1
|
|
orr r0, r0, #2
|
|
strb r0, [r8]
|
|
streqb fp, [r8, #1]
|
|
movne r0, #0
|
|
strneb r0, [r8, #1]
|
|
add r8, r8, #0x68
|
|
_0205774C:
|
|
ldr r0, [sp, #0xc]
|
|
cmp sl, r0
|
|
blt _020576B8
|
|
mvn r3, #0
|
|
mov r2, #0
|
|
ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
b _02057784
|
|
_02057768:
|
|
ldr r0, [r1]
|
|
add r0, r0, r5, lsl #3
|
|
add r0, r0, sl, lsl #1
|
|
add r0, r0, #0x9800
|
|
strh r3, [r0, #0x56]
|
|
strb r2, [r8], #0x68
|
|
add sl, sl, #1
|
|
_02057784:
|
|
cmp sl, #4
|
|
blt _02057768
|
|
ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
add r0, sp, #0x10
|
|
ldr r2, [r1]
|
|
mov r1, r5
|
|
add r2, r2, r5, lsl #1
|
|
add r2, r2, #0x9800
|
|
strh r7, [r2, #0x50]
|
|
bl sub_0200FA0C
|
|
add sp, sp, #0x8c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_020577B4: .word TEAM_MEMBER_TABLE_PTR
|
|
_020577B8: .word _020A33D4
|
|
arm_func_end sub_02057464
|
|
|
|
arm_func_start sub_020577BC
|
|
sub_020577BC: ; 0x020577BC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x4c
|
|
mov sl, r0
|
|
ldr r0, _02057A24 ; =_020A340C
|
|
bl Debug_Print0
|
|
cmp sl, #0xff
|
|
beq _02057904
|
|
mov r0, sl
|
|
bl IsLevelResetDungeon
|
|
cmp r0, #0
|
|
beq _020578E0
|
|
ldr r4, _02057A28 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, _02057A2C ; =_020A336C
|
|
ldr r3, [r4]
|
|
ldrb r2, [r0]
|
|
ldrb r1, [r0, #1]
|
|
add r0, r3, #0x9000
|
|
ldr r8, [r0, #0x84c]
|
|
strb r2, [sp, #4]
|
|
strb r1, [sp, #5]
|
|
mov sb, #0
|
|
and r7, r2, #0xff
|
|
and r6, r1, #0xff
|
|
add r5, sp, #0x1c
|
|
mov fp, #0x44
|
|
_02057820:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020578D0
|
|
strb r7, [sp, #6]
|
|
strb r6, [sp, #7]
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldrsh r1, [r8, #8]
|
|
ldr ip, [r4]
|
|
add r0, sp, #8
|
|
smlabb r1, r1, fp, ip
|
|
ldrsh r1, [r1, #4]
|
|
mov r2, #0
|
|
add r3, sp, #6
|
|
bl sub_02052E2C
|
|
ldrb r0, [sp, #9]
|
|
add r3, r8, #0x4c
|
|
strb r0, [r8, #2]
|
|
ldrsh r0, [sp, #0x10]
|
|
strh r0, [r8, #6]
|
|
ldrsh r0, [sp, #0x12]
|
|
strh r0, [r8, #0xe]
|
|
ldrsh r0, [sp, #0x12]
|
|
strh r0, [r8, #0x10]
|
|
ldrb r0, [sp, #0x14]
|
|
strb r0, [r8, #0x12]
|
|
ldrb r0, [sp, #0x15]
|
|
strb r0, [r8, #0x13]
|
|
ldrb r0, [sp, #0x16]
|
|
strb r0, [r8, #0x14]
|
|
ldrb r0, [sp, #0x17]
|
|
strb r0, [r8, #0x15]
|
|
ldr r0, [sp, #0x18]
|
|
str r0, [r8, #0x18]
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldrb r2, [sp, #0x28]
|
|
add r0, r8, #0x1c
|
|
add r1, sp, #0x2a
|
|
strb r2, [r8, #0x58]
|
|
bl GroundToDungeonMoveset
|
|
_020578D0:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
add r8, r8, #0x68
|
|
blt _02057820
|
|
_020578E0:
|
|
ldr r0, _02057A28 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, sb, lsl #1
|
|
ldr r1, [r0]
|
|
ldr r0, _02057A30 ; =_020A343C
|
|
add r1, r1, #0x9000
|
|
ldr r3, [r1, #0x870]
|
|
mov r1, sb
|
|
ldrsh r2, [r3, r2]
|
|
bl Debug_Print0
|
|
_02057904:
|
|
ldr r0, _02057A34 ; =_020A344C
|
|
bl Debug_Print0
|
|
mov r0, sl
|
|
bl GetMaxMembersAllowed
|
|
mov r8, #0
|
|
ldr r1, _02057A28 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r6, #1
|
|
ldr r1, [r1]
|
|
mov r7, r0
|
|
add r0, r1, #0x9000
|
|
ldr sl, [r0, #0x84c]
|
|
mov sb, r8
|
|
mov fp, sl
|
|
mov r5, r8
|
|
mov r3, r8
|
|
mov r4, r6
|
|
mov r0, r8
|
|
mov r1, r6
|
|
b _020579A4
|
|
_02057950:
|
|
ldrb r2, [fp]
|
|
tst r2, #1
|
|
movne ip, r6
|
|
moveq ip, r5
|
|
tst ip, #0xff
|
|
beq _0205799C
|
|
tst r2, #2
|
|
movne r2, r4
|
|
moveq r2, r3
|
|
tst r2, #0xff
|
|
beq _0205799C
|
|
ldrb r2, [fp, #1]
|
|
cmp r2, #0
|
|
movne r2, r1
|
|
moveq r2, r0
|
|
tst r2, #0xff
|
|
movne r0, sb, lsl #0x10
|
|
movne r8, r0, asr #0x10
|
|
bne _020579AC
|
|
_0205799C:
|
|
add sb, sb, #1
|
|
add fp, fp, #0x68
|
|
_020579A4:
|
|
cmp sb, #4
|
|
blt _02057950
|
|
_020579AC:
|
|
mov sb, #0
|
|
mov r6, #1
|
|
mov fp, sb
|
|
mov r5, r6
|
|
mov r4, sb
|
|
_020579C0:
|
|
ldrb r0, [sl]
|
|
tst r0, #1
|
|
movne r1, r5
|
|
moveq r1, fp
|
|
tst r1, #0xff
|
|
beq _02057A08
|
|
tst r0, #2
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
cmpne r8, sb
|
|
beq _02057A08
|
|
cmp r6, r7
|
|
addlt r6, r6, #1
|
|
blt _02057A08
|
|
strb r4, [sl]
|
|
ldrsh r0, [sl, #8]
|
|
bl sub_020566C4
|
|
_02057A08:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
add sl, sl, #0x68
|
|
blt _020579C0
|
|
bl sub_02058064
|
|
add sp, sp, #0x4c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02057A24: .word _020A340C
|
|
_02057A28: .word TEAM_MEMBER_TABLE_PTR
|
|
_02057A2C: .word _020A336C
|
|
_02057A30: .word _020A343C
|
|
_02057A34: .word _020A344C
|
|
arm_func_end sub_020577BC
|
|
|
|
arm_func_start sub_02057A38
|
|
sub_02057A38: ; 0x02057A38
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r6, r0
|
|
mvn r0, #0
|
|
cmp r6, r0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
bl sub_020568A4
|
|
ldr r1, _02057AC0 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, #0x68
|
|
ldr r1, [r1]
|
|
mov r4, r6, lsl #1
|
|
add r1, r1, #0x9000
|
|
ldr r5, [r1, #0x870]
|
|
ldr r3, [r1, #0x84c]
|
|
ldrsh r4, [r5, r4]
|
|
sub r1, r2, #0x69
|
|
mla r5, r6, r2, r3
|
|
mov r7, r0
|
|
cmp r4, r1
|
|
beq _02057AB4
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r6
|
|
bl sub_020530D4
|
|
strh r6, [r5, #0xa]
|
|
ldrb r0, [r5]
|
|
cmp r4, r7
|
|
orr r0, r0, #2
|
|
strb r0, [r5]
|
|
moveq r0, #1
|
|
streqb r0, [r5, #1]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_02057AB4:
|
|
mov r0, #0
|
|
strb r0, [r5]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02057AC0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057A38
|
|
|
|
arm_func_start sub_02057AC4
|
|
sub_02057AC4: ; 0x02057AC4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
_02057ACC:
|
|
mov r0, r4
|
|
bl sub_02057A38
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, asr #0x10
|
|
cmp r4, #4
|
|
blt _02057ACC
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02057AC4
|
|
|
|
arm_func_start sub_02057AEC
|
|
sub_02057AEC: ; 0x02057AEC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r4, r0
|
|
bl IsLevelResetDungeon
|
|
cmp r4, #0xff
|
|
moveq sl, #0
|
|
beq _02057B10
|
|
mov r0, r4
|
|
bl IsLevelResetDungeon
|
|
mov sl, r0
|
|
_02057B10:
|
|
bl GetGameMode
|
|
cmp r0, #5
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r7, r0, #0xff
|
|
bl sub_02057C40
|
|
bl RemoveActiveMembersFromMainTeam
|
|
mov sb, #0
|
|
ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r6, #1
|
|
ldr r0, [r0]
|
|
mov r5, sb
|
|
add r0, r0, #0x9000
|
|
ldr r8, [r0, #0x84c]
|
|
mov fp, sb
|
|
mov r4, r6
|
|
_02057B50:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _02057C14
|
|
ldrsh r0, [r8, #8]
|
|
bl CheckTeamMemberIdx
|
|
cmp r0, #0
|
|
bne _02057C14
|
|
ldrsh r0, [r8, #0xc]
|
|
bl GetBaseFormCastformCherrimDeoxys
|
|
strh r0, [r8, #0xc]
|
|
ldrsh r0, [r8, #8]
|
|
bl IsMonsterIdInNormalRange
|
|
cmp r0, #0
|
|
beq _02057C14
|
|
ldrb r0, [r8, #1]
|
|
cmp r0, #0
|
|
movne r0, r4
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
ldrsh r0, [r8, #8]
|
|
beq _02057BB8
|
|
bl TryAddMonsterToActiveTeam
|
|
b _02057BBC
|
|
_02057BB8:
|
|
bl sub_02056554
|
|
_02057BBC:
|
|
cmp sl, #0
|
|
beq _02057BE8
|
|
mov r0, sb, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl sub_02058138
|
|
mov r2, sb, lsl #0x10
|
|
ldrsh r1, [r8, #8]
|
|
mov r0, r8
|
|
mov r2, r2, asr #0x10
|
|
bl sub_020530D4
|
|
b _02057C14
|
|
_02057BE8:
|
|
cmp r7, #0
|
|
beq _02057C00
|
|
ldrsh r0, [r8, #8]
|
|
mov r1, r8
|
|
bl sub_0205349C
|
|
b _02057C14
|
|
_02057C00:
|
|
ldrsh r1, [r8, #8]
|
|
mov r2, sb, lsl #0x10
|
|
mov r0, r8
|
|
mov r2, r2, asr #0x10
|
|
bl sub_020530D4
|
|
_02057C14:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
add r8, r8, #0x68
|
|
blt _02057B50
|
|
ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldrb r0, [r0, #0x877]
|
|
bl sub_02057464
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02057C3C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057AEC
|
|
|
|
arm_func_start sub_02057C40
|
|
sub_02057C40: ; 0x02057C40
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r0, _02057CE4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov sb, #0
|
|
ldr r0, [r0]
|
|
mov r7, #1
|
|
add r0, r0, #0x9000
|
|
ldr r8, [r0, #0x84c]
|
|
mov r6, sb
|
|
mov r4, sb
|
|
mov r5, r7
|
|
_02057C68:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, r7
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _02057CC8
|
|
ldrb r0, [r8, #0x3e]
|
|
tst r0, #1
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
beq _02057CC8
|
|
ldrb r0, [r8, #0x3e]
|
|
bic r0, r0, #8
|
|
strb r0, [r8, #0x3e]
|
|
ldrsh r0, [r8, #0x42]
|
|
cmp r0, #0xb7
|
|
bne _02057CC8
|
|
add r0, r8, #0x3e
|
|
bl sub_0200D8AC
|
|
bl AddMoneyCarried
|
|
mov r0, sb, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl sub_02058138
|
|
_02057CC8:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
add r8, r8, #0x68
|
|
blt _02057C68
|
|
bl CleanStickyItemsInBag
|
|
bl RemovePokeItemsInBag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02057CE4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057C40
|
|
|
|
arm_func_start sub_02057CE8
|
|
sub_02057CE8: ; 0x02057CE8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, #0
|
|
mov r7, #1
|
|
mov r6, r8
|
|
mov r4, r8
|
|
mov r5, r7
|
|
_02057D00:
|
|
mov r0, r8
|
|
bl GetActiveTeamMember
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, r7
|
|
moveq r1, r6
|
|
tst r1, #0xff
|
|
beq _02057D40
|
|
ldrb r1, [r0, #0x3e]
|
|
tst r1, #1
|
|
movne r1, r5
|
|
moveq r1, r4
|
|
tst r1, #0xff
|
|
ldrneb r1, [r0, #0x3e]
|
|
bicne r1, r1, #8
|
|
strneb r1, [r0, #0x3e]
|
|
_02057D40:
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r8, r0, asr #0x10
|
|
cmp r8, #4
|
|
blt _02057D00
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_02057CE8
|
|
|
|
arm_func_start RefillTeam
|
|
RefillTeam: ; 0x02057D58
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r0, _02057DF8 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldr r4, [r0, #0x84c]
|
|
_02057D70:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02057DE4
|
|
ldrsh r1, [r4, #0x10]
|
|
mov r0, r4
|
|
strh r1, [r4, #0xe]
|
|
bl sub_02058810
|
|
mov r6, #0
|
|
add r7, r4, #0x1c
|
|
mov r8, r6
|
|
mov sb, #1
|
|
_02057DA8:
|
|
add r0, r4, r6, lsl #3
|
|
ldrb r0, [r0, #0x1c]
|
|
tst r0, #1
|
|
movne r0, sb
|
|
moveq r0, r8
|
|
tst r0, #0xff
|
|
beq _02057DD4
|
|
add r0, r7, r6, lsl #3
|
|
bl GetMaxPp
|
|
add r1, r4, r6, lsl #3
|
|
strb r0, [r1, #0x22]
|
|
_02057DD4:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
blt _02057DA8
|
|
strh r5, [r4, #0xa]
|
|
_02057DE4:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
add r4, r4, #0x68
|
|
blt _02057D70
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02057DF8: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end RefillTeam
|
|
|
|
#ifndef JAPAN
|
|
arm_func_start sub_02057DFC
|
|
sub_02057DFC: ; 0x02057DFC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _02057E8C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
mov ip, #1
|
|
add r1, r1, #0x9000
|
|
ldr r6, [r1, #0x84c]
|
|
mov r3, r0
|
|
mov r4, r0
|
|
mov r5, ip
|
|
mov lr, r0
|
|
_02057E28:
|
|
ldrb r1, [r6]
|
|
tst r1, #1
|
|
movne r1, r5
|
|
moveq r1, r4
|
|
tst r1, #0xff
|
|
beq _02057E78
|
|
mov r7, lr
|
|
_02057E44:
|
|
add r1, r6, r7, lsl #3
|
|
ldrb r1, [r1, #0x1c]
|
|
tst r1, #1
|
|
movne r1, ip
|
|
moveq r1, r3
|
|
tst r1, #0xff
|
|
addne r2, r6, r7, lsl #3
|
|
ldrneb r1, [r2, #0x1c]
|
|
add r7, r7, #1
|
|
andne r1, r1, #0xf
|
|
strneb r1, [r2, #0x1c]
|
|
cmp r7, #4
|
|
blt _02057E44
|
|
_02057E78:
|
|
add r0, r0, #1
|
|
cmp r0, #4
|
|
add r6, r6, #0x68
|
|
blt _02057E28
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02057E8C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057DFC
|
|
#endif
|
|
|
|
arm_func_start sub_02057E90
|
|
sub_02057E90: ; 0x02057E90
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r0, _02057EF0 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
mov r6, r4
|
|
add r0, r0, #0x9000
|
|
ldr r8, [r0, #0x84c]
|
|
mov r7, #1
|
|
mov r5, r4
|
|
_02057EB4:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, r7
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _02057EDC
|
|
ldrsh r0, [r8, #8]
|
|
bl CheckTeamMemberIdx
|
|
cmp r0, #0
|
|
strneb r5, [r8]
|
|
_02057EDC:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
add r8, r8, #0x68
|
|
blt _02057EB4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02057EF0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057E90
|
|
|
|
arm_func_start sub_02057EF4
|
|
sub_02057EF4: ; 0x02057EF4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r0, _02058060 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r8, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9000
|
|
ldr r7, [r0, #0x84c]
|
|
_02057F0C:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
bne _02057F38
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0205804C
|
|
_02057F38:
|
|
ldrsh sb, [r7, #8]
|
|
ldrsh r1, [r7, #0x10]
|
|
mov r0, r7
|
|
strh r1, [r7, #0xe]
|
|
bl sub_02058810
|
|
mov sl, #0
|
|
add r5, r7, #0x1c
|
|
mov fp, sl
|
|
mov r6, #1
|
|
mov r4, sl
|
|
_02057F60:
|
|
add r0, r7, sl, lsl #3
|
|
ldrb r0, [r0, #0x1c]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
beq _02057F90
|
|
add r0, r5, sl, lsl #3
|
|
bl GetMaxPp
|
|
add r1, r7, sl, lsl #3
|
|
strb r0, [r1, #0x22]
|
|
strh r4, [r1, #0x1e]
|
|
_02057F90:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
blt _02057F60
|
|
strh r8, [r7, #0xa]
|
|
ldrb r1, [r7]
|
|
mov r0, sb
|
|
bic r2, r1, #8
|
|
and r1, r2, #0xff
|
|
orr r1, r1, #1
|
|
strb r1, [r7]
|
|
bl CheckTeamMemberIdx
|
|
cmp r0, #0
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bne _02058048
|
|
bl sub_02056460
|
|
cmp r0, #0
|
|
beq _02057FE4
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bl sub_020565F4
|
|
_02057FE4:
|
|
mov r0, sb
|
|
mov r1, #2
|
|
bl sub_02056460
|
|
cmp r0, #0
|
|
beq _02058004
|
|
mov r0, sb
|
|
mov r1, #2
|
|
bl sub_020565F4
|
|
_02058004:
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bl sub_02056504
|
|
cmp r0, #0
|
|
beq _02058024
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bl sub_020565F4
|
|
_02058024:
|
|
mov r0, sb
|
|
mov r1, #2
|
|
bl sub_02056504
|
|
cmp r0, #0
|
|
beq _0205804C
|
|
mov r0, sb
|
|
mov r1, #2
|
|
bl sub_020565F4
|
|
b _0205804C
|
|
_02058048:
|
|
bl sub_020565F4
|
|
_0205804C:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
add r7, r7, #0x68
|
|
blt _02057F0C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02058060: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02057EF4
|
|
|
|
arm_func_start sub_02058064
|
|
sub_02058064: ; 0x02058064
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _020580C0 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
mov r5, r4
|
|
add r0, r0, #0x9000
|
|
ldr r7, [r0, #0x84c]
|
|
mov r6, #1
|
|
_02058084:
|
|
ldrb r0, [r7]
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _020580A4
|
|
add r0, r7, #0x5a
|
|
bl ShuffleHiddenPower
|
|
_020580A4:
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, asr #0x10
|
|
cmp r4, #4
|
|
add r7, r7, #0x68
|
|
blt _02058084
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_020580C0: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02058064
|
|
|
|
arm_func_start sub_020580C4
|
|
sub_020580C4: ; 0x020580C4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02058134 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r5, #0
|
|
ldr r1, [r1]
|
|
add r2, r5, #1
|
|
add r1, r1, #0x9000
|
|
ldr r4, [r1, #0x84c]
|
|
and r6, r2, #0xff
|
|
strb r5, [r0]
|
|
mov ip, r5
|
|
mov lr, #1
|
|
mov r3, r5
|
|
_020580F4:
|
|
ldrb r1, [r4]
|
|
add r4, r4, #0x68
|
|
tst r1, #1
|
|
movne r1, lr
|
|
moveq r1, ip
|
|
tst r1, #0xff
|
|
addeq r1, r0, r5
|
|
streqb r3, [r1, #1]
|
|
addne r1, r0, r5
|
|
addne r2, r6, #1
|
|
strneb r6, [r1, #1]
|
|
add r5, r5, #1
|
|
andne r6, r2, #0xff
|
|
cmp r5, #4
|
|
blt _020580F4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02058134: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020580C4
|
|
|
|
arm_func_start sub_02058138
|
|
sub_02058138: ; 0x02058138
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr r2, _020581EC ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x68
|
|
ldr r2, [r2]
|
|
smulbb r1, r0, r1
|
|
add r0, r2, #0x9000
|
|
ldr r2, [r0, #0x84c]
|
|
ldrb r0, [r2, r1]
|
|
add r3, r2, r1
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020581E0
|
|
ldrb r1, [r3, #0x3e]
|
|
tst r1, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
ldrneb r0, [r3, #0x3f]
|
|
cmpne r0, #0
|
|
beq _020581E0
|
|
tst r1, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _020581E0
|
|
ldrh r1, [r3, #0x3e]
|
|
add r0, r3, #0x3e
|
|
strh r1, [sp]
|
|
ldrh r2, [r3, #0x40]
|
|
ldrb r1, [sp]
|
|
strh r2, [sp, #2]
|
|
ldrh r2, [r3, #0x42]
|
|
bic r1, r1, #0x10
|
|
strh r2, [sp, #4]
|
|
strb r1, [sp]
|
|
bl ItemZInit
|
|
add r0, sp, #0
|
|
bl RemoveHolderForItemInBag
|
|
b _020581E4
|
|
_020581E0:
|
|
mov r0, #0
|
|
_020581E4:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020581EC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02058138
|
|
|
|
arm_func_start ClearItem
|
|
ClearItem: ; 0x020581F0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #8
|
|
ldr r2, _020582DC ; =TEAM_MEMBER_TABLE_PTR
|
|
cmp r0, #0
|
|
ldr r2, [r2]
|
|
add r2, r2, #0x9000
|
|
ldr r2, [r2, #0x84c]
|
|
beq _020582D0
|
|
mov r8, #0
|
|
mov r7, #1
|
|
mov r6, r8
|
|
mov r4, r8
|
|
mov r5, r7
|
|
mov r3, r8
|
|
mov ip, r7
|
|
b _020582C8
|
|
_02058230:
|
|
ldrb lr, [r2]
|
|
tst lr, #1
|
|
movne sb, r7
|
|
moveq sb, r6
|
|
tst sb, #0xff
|
|
beq _020582C0
|
|
ldrb sb, [r2, #0x3e]
|
|
tst sb, #1
|
|
movne lr, r5
|
|
moveq lr, r4
|
|
tst lr, #0xff
|
|
beq _020582C0
|
|
ldrb lr, [r2, #0x3f]
|
|
cmp lr, r0
|
|
bne _020582C0
|
|
cmp r1, #0
|
|
beq _02058288
|
|
tst sb, #8
|
|
movne sb, ip
|
|
moveq sb, r3
|
|
tst sb, #0xff
|
|
bne _020582C0
|
|
_02058288:
|
|
ldrh r1, [r2, #0x3e]
|
|
add r0, r2, #0x3e
|
|
strh r1, [sp]
|
|
ldrh r3, [r2, #0x40]
|
|
ldrb r1, [sp]
|
|
strh r3, [sp, #2]
|
|
ldrh r2, [r2, #0x42]
|
|
bic r1, r1, #0x10
|
|
strh r2, [sp, #4]
|
|
strb r1, [sp]
|
|
bl ItemZInit
|
|
add r0, sp, #0
|
|
bl RemoveHolderForItemInBag
|
|
b _020582D4
|
|
_020582C0:
|
|
add r8, r8, #1
|
|
add r2, r2, #0x68
|
|
_020582C8:
|
|
cmp r8, #4
|
|
blt _02058230
|
|
_020582D0:
|
|
mov r0, #0
|
|
_020582D4:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_020582DC: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end ClearItem
|
|
|
|
arm_func_start sub_020582E0
|
|
sub_020582E0: ; 0x020582E0
|
|
ldr ip, _020582EC ; =ClearItem
|
|
mov r1, #1
|
|
bx ip
|
|
.align 2, 0
|
|
_020582EC: .word ClearItem
|
|
arm_func_end sub_020582E0
|
|
|
|
arm_func_start sub_020582F0
|
|
sub_020582F0: ; 0x020582F0
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0xc
|
|
ldr r3, _0205845C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r2, #0x68
|
|
ldr r3, [r3]
|
|
smulbb r2, r0, r2
|
|
add r0, r3, #0x9000
|
|
ldr r3, [r0, #0x84c]
|
|
mov r5, r1
|
|
ldrb r0, [r3, r2]
|
|
add r4, r3, r2
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02058450
|
|
mov r0, r5
|
|
bl GetItemAtIdx
|
|
ldrb r2, [r4, #0x3e]
|
|
mov r1, r0
|
|
tst r2, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02058404
|
|
ldrb r0, [r4, #0x3f]
|
|
cmp r0, #0
|
|
bne _02058374
|
|
tst r2, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _02058448
|
|
_02058374:
|
|
ldrh r2, [r4, #0x3e]
|
|
add r0, sp, #6
|
|
strh r2, [sp, #6]
|
|
ldrh r3, [r4, #0x40]
|
|
ldrb r2, [sp, #6]
|
|
strh r3, [sp, #8]
|
|
ldrh ip, [r4, #0x42]
|
|
bic r3, r2, #0x10
|
|
strh ip, [sp, #0xa]
|
|
ldrh r2, [r1]
|
|
strh r2, [sp]
|
|
ldrh ip, [r1, #2]
|
|
ldrb r2, [sp]
|
|
strh ip, [sp, #2]
|
|
ldrh ip, [r1, #4]
|
|
bic r1, r2, #0x10
|
|
strh ip, [sp, #4]
|
|
ldrsh r2, [r4, #0xa]
|
|
add r2, r2, #1
|
|
strb r2, [sp, #1]
|
|
strb r1, [sp]
|
|
strb r3, [sp, #6]
|
|
bl RemoveHolderForItemInBag
|
|
ldrh r2, [sp]
|
|
add r1, sp, #0
|
|
mov r0, r5
|
|
strh r2, [r4, #0x3e]
|
|
ldrh r2, [sp, #2]
|
|
strh r2, [r4, #0x40]
|
|
ldrh r2, [sp, #4]
|
|
strh r2, [r4, #0x42]
|
|
ldrsh r2, [r4, #0xa]
|
|
add r2, r2, #1
|
|
and r2, r2, #0xff
|
|
bl SetHolderForItemInBag
|
|
b _02058448
|
|
_02058404:
|
|
ldrh r2, [r1]
|
|
mov r0, r5
|
|
strh r2, [r4, #0x3e]
|
|
ldrh r2, [r1, #2]
|
|
strh r2, [r4, #0x40]
|
|
ldrh r2, [r1, #4]
|
|
strh r2, [r4, #0x42]
|
|
ldrsh r2, [r4, #0xa]
|
|
add r2, r2, #1
|
|
strb r2, [r4, #0x3f]
|
|
ldrb r2, [r4, #0x3e]
|
|
bic r2, r2, #0x10
|
|
strb r2, [r4, #0x3e]
|
|
ldrsh r2, [r4, #0xa]
|
|
add r2, r2, #1
|
|
and r2, r2, #0xff
|
|
bl SetHolderForItemInBag
|
|
_02058448:
|
|
mov r0, #1
|
|
b _02058454
|
|
_02058450:
|
|
mov r0, #0
|
|
_02058454:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_0205845C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020582F0
|
|
|
|
arm_func_start sub_02058460
|
|
sub_02058460: ; 0x02058460
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r2, r0
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
ldr r0, _020584F4 ; =TEAM_MEMBER_TABLE_PTR
|
|
sub r1, r1, #1
|
|
mov ip, r1, lsl #0x10
|
|
ldr r1, [r0]
|
|
mov r0, #0
|
|
add r1, r1, #0x9000
|
|
mov r4, r0
|
|
mov r5, #1
|
|
mov r3, #0x68
|
|
b _020584E4
|
|
_0205849C:
|
|
smulbb r6, r0, r3
|
|
ldr r7, [r1, #0x84c]
|
|
ldrb lr, [r7, r6]
|
|
add r6, r7, r6
|
|
tst lr, #1
|
|
movne r7, r5
|
|
moveq r7, r4
|
|
tst r7, #0xff
|
|
beq _020584D8
|
|
ldrsh lr, [r6, #0xa]
|
|
cmp lr, ip, asr #16
|
|
bne _020584D8
|
|
mov r1, r2
|
|
bl sub_020582F0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_020584D8:
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
_020584E4:
|
|
cmp r0, #4
|
|
blt _0205849C
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_020584F4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02058460
|
|
|
|
arm_func_start sub_020584F8
|
|
sub_020584F8: ; 0x020584F8
|
|
bx lr
|
|
arm_func_end sub_020584F8
|
|
|
|
arm_func_start sub_020584FC
|
|
sub_020584FC: ; 0x020584FC
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl GetActiveTeamMember
|
|
mov r1, r0
|
|
ldrb r0, [r1, #1]
|
|
add r1, r1, #0x5e
|
|
cmp r0, #0
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
mov r0, r4
|
|
and r2, r2, #0xff
|
|
bl sub_02054FA0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020584FC
|
|
|
|
arm_func_start sub_02058534
|
|
sub_02058534: ; 0x02058534
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r2
|
|
mov r0, r1
|
|
bl GetActiveTeamMember
|
|
mov r1, r0
|
|
cmp r4, #0x44
|
|
bne _02058578
|
|
ldrb r0, [r1, #1]
|
|
add r1, r1, #0x5e
|
|
cmp r0, #0
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
mov r0, r5
|
|
and r2, r2, #0xff
|
|
bl sub_02054FA0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02058578:
|
|
mov r0, r5
|
|
mov r2, r4
|
|
add r1, r1, #0x5e
|
|
bl sub_02054F44
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02058534
|
|
|
|
arm_func_start sub_0205858C
|
|
sub_0205858C: ; 0x0205858C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl GetActiveTeamMember
|
|
mov r1, r0
|
|
mov r0, r4
|
|
add r1, r1, #0x5e
|
|
mov r2, #0xa
|
|
bl StrncpySimpleNoPadSafe
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0205858C
|
|
|
|
arm_func_start sub_020585B4
|
|
sub_020585B4: ; 0x020585B4
|
|
ldrb r2, [r1, #1]
|
|
ldr ip, _020585D4 ; =sub_02054FA0
|
|
add r1, r1, #0x5e
|
|
cmp r2, #0
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
and r2, r2, #0xff
|
|
bx ip
|
|
.align 2, 0
|
|
_020585D4: .word sub_02054FA0
|
|
arm_func_end sub_020585B4
|
|
|
|
arm_func_start ChangeGiratinaFormIfSkyDungeon
|
|
ChangeGiratinaFormIfSkyDungeon: ; 0x020585D8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
bl IsSkyExclusiveDungeon
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r8, #0
|
|
ldr r4, _02058640 ; =0x00000211
|
|
mov r6, r8
|
|
mov r7, #1
|
|
mov r5, #0x218
|
|
_020585FC:
|
|
mov r0, r8
|
|
bl GetActiveTeamMember
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, r7
|
|
moveq r1, r6
|
|
tst r1, #0xff
|
|
beq _02058628
|
|
ldrsh r1, [r0, #0xc]
|
|
cmp r1, r4
|
|
streqh r5, [r0, #0xc]
|
|
_02058628:
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r8, r0, asr #0x10
|
|
cmp r8, #4
|
|
blt _020585FC
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02058640: .word 0x00000211
|
|
arm_func_end ChangeGiratinaFormIfSkyDungeon
|
|
|
|
arm_func_start sub_02058644
|
|
sub_02058644: ; 0x02058644
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
_02058650:
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl RevertGiratinaAndShaymin
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, asr #0x10
|
|
cmp r4, #4
|
|
blt _02058650
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02058644
|
|
|
|
arm_func_start RevertGiratinaAndShaymin
|
|
RevertGiratinaAndShaymin: ; 0x02058674
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_02056228
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
mov r0, r5
|
|
bl GetActiveTeamMember
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
tst r4, #2
|
|
beq _020586C8
|
|
ldrsh r1, [r0, #0xc]
|
|
cmp r1, #0x218
|
|
ldreq r1, _020586E8 ; =0x00000211
|
|
streqh r1, [r0, #0xc]
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
_020586C8:
|
|
tst r4, #1
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldrsh r2, [r0, #0xc]
|
|
ldr r1, _020586EC ; =0x00000217
|
|
cmp r2, r1
|
|
subeq r1, r1, #1
|
|
streqh r1, [r0, #0xc]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020586E8: .word 0x00000211
|
|
_020586EC: .word 0x00000217
|
|
arm_func_end RevertGiratinaAndShaymin
|
|
|
|
arm_func_start sub_020586F0
|
|
sub_020586F0: ; 0x020586F0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
bl GetActiveTeamMember
|
|
mov r4, r0
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0205878C
|
|
mov r0, r5
|
|
bl GetItemMoveId16
|
|
mov ip, #0
|
|
mov r2, ip
|
|
mov r3, #1
|
|
b _02058768
|
|
_02058730:
|
|
add r1, r4, ip, lsl #3
|
|
ldrb r1, [r1, #0x1c]
|
|
tst r1, #1
|
|
movne r1, r3
|
|
moveq r1, r2
|
|
tst r1, #0xff
|
|
beq _0205875C
|
|
add r1, r4, ip, lsl #3
|
|
ldrh r1, [r1, #0x20]
|
|
cmp r0, r1
|
|
beq _02058770
|
|
_0205875C:
|
|
add r1, ip, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov ip, r1, asr #0x10
|
|
_02058768:
|
|
cmp ip, #4
|
|
blt _02058730
|
|
_02058770:
|
|
cmp ip, #4
|
|
blt _0205878C
|
|
ldrsh r1, [r4, #0xc]
|
|
bl sub_02053D1C
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
_0205878C:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_020586F0
|
|
|
|
arm_func_start sub_02058794
|
|
sub_02058794: ; 0x02058794
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_0204E584
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, r4
|
|
bl GetActiveTeamMember
|
|
mov r4, r0
|
|
ldrsh r0, [r4, #8]
|
|
bl GetTeamMember
|
|
mov r1, r4
|
|
bl sub_020534BC
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02058794
|
|
|
|
arm_func_start sub_020587C8
|
|
sub_020587C8: ; 0x020587C8
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02057E90
|
|
mvn r0, #0
|
|
bl sub_02058644
|
|
bl RefillTeam
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_020587C8
|
|
|
|
arm_func_start sub_020587E0
|
|
sub_020587E0: ; 0x020587E0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
#ifndef JAPAN
|
|
bl sub_02057DFC
|
|
#endif
|
|
bl sub_02057E90
|
|
mvn r0, #0
|
|
bl sub_02058644
|
|
bl RefillTeam
|
|
mov r0, r4
|
|
bl sub_02057AEC
|
|
mov r0, #0
|
|
bl sub_02056318
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020587E0
|
|
|
|
arm_func_start sub_02058810
|
|
sub_02058810: ; 0x02058810
|
|
mov r2, #0x64
|
|
strh r2, [r0, #0x48]
|
|
mov r1, #0
|
|
strh r2, [r0, #0x44]
|
|
strh r1, [r0, #0x4a]
|
|
strh r1, [r0, #0x46]
|
|
bx lr
|
|
arm_func_end sub_02058810
|
|
|
|
arm_func_start sub_0205882C
|
|
sub_0205882C: ; 0x0205882C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x30
|
|
ldr r1, _02058AA4 ; =0x000003E3
|
|
mov r4, r0
|
|
mov r3, #0
|
|
add r2, sp, #0x14
|
|
mov r0, #4
|
|
str r3, [sp, #0x1c]
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #0x14]
|
|
add r0, sp, #0x1c
|
|
bl HandleSir0Translation
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r1, #0
|
|
bl sub_02058ABC
|
|
mov r0, r4, lsl #0x10
|
|
ldr r5, [sp, #0x1c]
|
|
mov r0, r0, asr #0x10
|
|
mov r1, #0
|
|
bl sub_02058ABC
|
|
add r1, r5, #4
|
|
mov r2, #0x40
|
|
mov r3, #9
|
|
bl CopyAndInterleaveWrapper
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r1, #0
|
|
bl sub_02058ABC
|
|
add r1, r5, #0x24
|
|
mov r2, #0x80
|
|
mov r3, #9
|
|
bl CopyAndInterleaveWrapper
|
|
add r0, r4, #2
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r1, #0
|
|
bl sub_02058ABC
|
|
add r1, r5, #0x64
|
|
mov r2, #0x100
|
|
mov r3, #9
|
|
bl CopyAndInterleaveWrapper
|
|
add r0, sp, #0x14
|
|
bl UnloadFile
|
|
mov lr, #0
|
|
_020588E4:
|
|
ldr r3, _02058AA8 ; =_020A3468
|
|
ldr r5, _02058AAC ; =_022B578C
|
|
add r2, r3, lr, lsl #4
|
|
ldr r1, [r2, #8]
|
|
ldr r0, _02058AB0 ; =0x000003FF
|
|
add r1, r4, r1
|
|
add r7, r5, lr, lsl #4
|
|
mov sb, #0x400
|
|
ldr r3, [r3, lr, lsl #4]
|
|
and r8, r1, r0
|
|
ldr r2, [r2, #4]
|
|
mov r1, r3, lsl #0x1e
|
|
mov r5, #0
|
|
mov r0, r2, lsl #0x1e
|
|
rsb sb, sb, #0
|
|
mov r2, r5
|
|
mov r3, #1
|
|
_02058928:
|
|
mov ip, r5, lsl #3
|
|
ldrh sl, [r7, ip]
|
|
add r6, r7, r5, lsl #3
|
|
cmp r5, #1
|
|
bic sl, sl, #0x100
|
|
strh sl, [r7, ip]
|
|
ldrh sl, [r7, ip]
|
|
add r5, r5, #1
|
|
bic sl, sl, #0x200
|
|
strh sl, [r7, ip]
|
|
ldrh sl, [r6]
|
|
moveq ip, r3
|
|
movne ip, r2
|
|
bic sl, sl, #0xc00
|
|
strh sl, [r6]
|
|
ldrh sl, [r6]
|
|
mov ip, ip, lsl #0x1e
|
|
cmp r5, #2
|
|
orr sl, sl, ip, lsr #20
|
|
strh sl, [r6]
|
|
ldrh ip, [r6]
|
|
bic ip, ip, #0x1000
|
|
strh ip, [r6]
|
|
ldrh ip, [r6]
|
|
bic ip, ip, #0x2000
|
|
strh ip, [r6]
|
|
ldrh ip, [r6]
|
|
orr ip, ip, #0x2000
|
|
strh ip, [r6]
|
|
ldrh ip, [r6]
|
|
bic ip, ip, #0xc000
|
|
strh ip, [r6]
|
|
ldrh ip, [r6]
|
|
orr ip, ip, r1, lsr #16
|
|
strh ip, [r6]
|
|
ldrh ip, [r6, #2]
|
|
bic ip, ip, #0x3e00
|
|
strh ip, [r6, #2]
|
|
ldrh ip, [r6, #2]
|
|
bic ip, ip, #0xc000
|
|
strh ip, [r6, #2]
|
|
ldrh ip, [r6, #2]
|
|
orr ip, ip, r0, lsr #16
|
|
strh ip, [r6, #2]
|
|
ldrh ip, [r6, #4]
|
|
and ip, ip, sb
|
|
strh ip, [r6, #4]
|
|
ldrh ip, [r6, #4]
|
|
orr ip, ip, r8
|
|
strh ip, [r6, #4]
|
|
ldrh ip, [r6, #4]
|
|
bic ip, ip, #0xc00
|
|
strh ip, [r6, #4]
|
|
ldrh ip, [r6, #4]
|
|
orr ip, ip, #0xc00
|
|
strh ip, [r6, #4]
|
|
ldrh ip, [r6, #4]
|
|
bic ip, ip, #0xf000
|
|
strh ip, [r6, #4]
|
|
ldrh ip, [r6, #6]
|
|
bic ip, ip, #1
|
|
strh ip, [r6, #6]
|
|
ldrh ip, [r6, #6]
|
|
bic ip, ip, #2
|
|
strh ip, [r6, #6]
|
|
blt _02058928
|
|
add lr, lr, #1
|
|
cmp lr, #3
|
|
blt _020588E4
|
|
ldr r1, _02058AB4 ; =0x000003E5
|
|
add r2, sp, #0xc
|
|
mov r0, #4
|
|
mov r3, #0
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #0xc]
|
|
add r0, sp, #8
|
|
bl HandleSir0Translation
|
|
mov r0, #0x90
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r1, [sp, #8]
|
|
add r0, sp, #0x20
|
|
mov r2, #1
|
|
mov r3, #0x20
|
|
bl sub_0201F598
|
|
ldr r0, _02058AB8 ; =_020AFC4C
|
|
add r1, sp, #0x20
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
bl sub_0201B43C
|
|
add r0, sp, #0xc
|
|
bl UnloadFile
|
|
add sp, sp, #0x30
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02058AA4: .word 0x000003E3
|
|
_02058AA8: .word _020A3468
|
|
_02058AAC: .word _022B578C
|
|
_02058AB0: .word 0x000003FF
|
|
_02058AB4: .word 0x000003E5
|
|
_02058AB8: .word _020AFC4C
|
|
arm_func_end sub_0205882C
|
|
|
|
arm_func_start sub_02058ABC
|
|
sub_02058ABC: ; 0x02058ABC
|
|
ldr r3, _02058AF4 ; =_020AFC4C
|
|
mov r2, #0x70
|
|
ldr ip, [r3]
|
|
ldr r3, _02058AF8 ; =_020AFC28
|
|
mla r2, r1, r2, ip
|
|
ldrh r1, [r2, #0xc]
|
|
ldr ip, [r2, #0x64]
|
|
mov r2, r1, lsr #0x1f
|
|
rsb r1, r2, r1, lsl #30
|
|
add r1, r2, r1, ror #30
|
|
mov r1, r1, lsl #1
|
|
ldrsh r1, [r3, r1]
|
|
smlabb r0, r0, r1, ip
|
|
bx lr
|
|
.align 2, 0
|
|
_02058AF4: .word _020AFC4C
|
|
_02058AF8: .word _020AFC28
|
|
arm_func_end sub_02058ABC
|
|
|
|
arm_func_start sub_02058AFC
|
|
sub_02058AFC: ; 0x02058AFC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
cmp r0, #0x32
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
cmpne r0, #0x33
|
|
beq _02058B38
|
|
ldr r1, _02058C08 ; =0xFFFFFD76
|
|
add r1, r0, r1
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
cmp r1, #1
|
|
bhi _02058B40
|
|
_02058B38:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_02058B40:
|
|
bl GetShadowSize
|
|
ldrb r1, [sp, #0x24]
|
|
mov r7, #0x200
|
|
ldrsh lr, [r6]
|
|
cmp r1, #0
|
|
ldr r1, _02058C0C ; =_022B578C
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
add r1, r1, r0, lsl #4
|
|
add r1, r1, r2, lsl #3
|
|
ldr sb, _02058C10 ; =_020A3450
|
|
ldrh r8, [r1, #2]
|
|
ldrsh ip, [r5, #0x24]
|
|
ldrsh r3, [r6, #2]
|
|
ldrsh r2, [r5, #0x26]
|
|
rsb r7, r7, #0
|
|
and r5, r8, r7
|
|
strh r5, [r1, #2]
|
|
ldr r0, [sb, r0, lsl #2]
|
|
add r5, lr, ip
|
|
add r0, r5, r0
|
|
ldrh r5, [r1, #2]
|
|
and r0, r0, r7, lsr #23
|
|
add r2, r3, r2
|
|
orr r0, r5, r0
|
|
strh r0, [r1, #2]
|
|
sub r0, r2, #2
|
|
sub r2, r0, #2
|
|
mov r3, r2, lsl #0x14
|
|
ldrh r5, [r1, #6]
|
|
ldr r0, _02058C14 ; =0xFFFF000F
|
|
ldr r2, [sp, #0x20]
|
|
and r0, r5, r0
|
|
strh r0, [r1, #6]
|
|
ldrh r5, [r1, #6]
|
|
ldr r0, _02058C18 ; =_020AFC4C
|
|
orr r3, r5, r3, lsr #16
|
|
strh r3, [r1, #6]
|
|
ldrh r5, [r1, #4]
|
|
mov r3, r2, lsl #0x1e
|
|
ldr r0, [r0]
|
|
bic r2, r5, #0xc00
|
|
strh r2, [r1, #4]
|
|
ldrh r5, [r1, #4]
|
|
mov r2, r4
|
|
orr r3, r5, r3, lsr #20
|
|
strh r3, [r1, #4]
|
|
bl sub_0201B9F8
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02058C08: .word 0xFFFFFD76
|
|
_02058C0C: .word _022B578C
|
|
_02058C10: .word _020A3450
|
|
_02058C14: .word 0xFFFF000F
|
|
_02058C18: .word _020AFC4C
|
|
arm_func_end sub_02058AFC
|
|
|
|
arm_func_start GetIqSkillStringId
|
|
GetIqSkillStringId: ; 0x02058C1C
|
|
#if defined(EUROPE)
|
|
add r0, r0, #0xe7
|
|
add r0, r0, #0x2600
|
|
#elif defined(JAPAN)
|
|
add r0, r0, #0x13
|
|
add r0, r0, #0x3f00
|
|
#else
|
|
add r0, r0, #0xe5
|
|
add r0, r0, #0x2600
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
arm_func_end GetIqSkillStringId
|
|
|
|
arm_func_start sub_02058C30
|
|
sub_02058C30: ; 0x02058C30
|
|
ldr ip, _02058C38 ; =CopyTacticString
|
|
bx ip
|
|
.align 2, 0
|
|
_02058C38: .word CopyTacticString
|
|
arm_func_end sub_02058C30
|
|
|
|
arm_func_start DoesTacticFollowLeader
|
|
DoesTacticFollowLeader: ; 0x02058C3C
|
|
ldr r1, _02058C48 ; =_020A190C
|
|
ldrb r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02058C48: .word _020A190C
|
|
arm_func_end DoesTacticFollowLeader
|
|
|
|
arm_func_start GetUnlockedTactics
|
|
GetUnlockedTactics: ; 0x02058C4C
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
ldr r3, _02058C98 ; =TACTICS_UNLOCK_LEVEL_TABLE
|
|
mov ip, lr
|
|
_02058C5C:
|
|
mov r2, ip, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
cmp r2, r1
|
|
strleb ip, [r0, lr]
|
|
add ip, ip, #1
|
|
addle lr, lr, #1
|
|
cmp ip, #0xc
|
|
blt _02058C5C
|
|
mov r1, #0xb
|
|
b _02058C8C
|
|
_02058C84:
|
|
strb r1, [r0, lr]
|
|
add lr, lr, #1
|
|
_02058C8C:
|
|
cmp lr, #0xc
|
|
blt _02058C84
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02058C98: .word TACTICS_UNLOCK_LEVEL_TABLE
|
|
arm_func_end GetUnlockedTactics
|
|
|
|
arm_func_start GetUnlockedTacticFlags
|
|
GetUnlockedTacticFlags: ; 0x02058C9C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
ldr lr, _02058CD4 ; =TACTICS_UNLOCK_LEVEL_TABLE
|
|
mov r2, r4
|
|
mov r3, #1
|
|
_02058CB0:
|
|
mov ip, r4, lsl #1
|
|
ldrsh ip, [lr, ip]
|
|
cmp ip, r1
|
|
strleb r3, [r0, r4]
|
|
strgtb r2, [r0, r4]
|
|
add r4, r4, #1
|
|
cmp r4, #0xc
|
|
blt _02058CB0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE
|
|
arm_func_end GetUnlockedTacticFlags
|
|
|
|
arm_func_start CanLearnIqSkill
|
|
CanLearnIqSkill: ; 0x02058CD8
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldr r2, _02058D00 ; =IQ_SKILLS
|
|
ldr r1, [r2, r1, lsl #2]
|
|
cmp r1, r0
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02058D00: .word IQ_SKILLS
|
|
arm_func_end CanLearnIqSkill
|
|
|
|
arm_func_start GetLearnableIqSkills
|
|
GetLearnableIqSkills: ; 0x02058D04
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r6, #0
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r8, r2
|
|
mov r5, r6
|
|
ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS
|
|
mov fp, #0x19
|
|
b _02058D74
|
|
_02058D28:
|
|
mov r0, sb
|
|
bl GetIqGroup
|
|
mla r1, r0, fp, r4
|
|
and r0, r5, #0xff
|
|
ldrb r7, [r0, r1]
|
|
cmp r7, #0xff
|
|
beq _02058D7C
|
|
cmp r7, #0x18
|
|
bne _02058D58
|
|
mov r0, #3
|
|
bl GetPerformanceFlagWithChecks
|
|
b _02058D64
|
|
_02058D58:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl CanLearnIqSkill
|
|
_02058D64:
|
|
cmp r0, #0
|
|
strneb r7, [sl, r6]
|
|
addne r6, r6, #1
|
|
add r5, r5, #1
|
|
_02058D74:
|
|
cmp r5, #0x19
|
|
blt _02058D28
|
|
_02058D7C:
|
|
mov r1, r6
|
|
mov r0, #0
|
|
b _02058D90
|
|
_02058D88:
|
|
strb r0, [sl, r1]
|
|
add r1, r1, #1
|
|
_02058D90:
|
|
cmp r1, #0x45
|
|
blt _02058D88
|
|
mov r0, r6
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02058DA0: .word IQ_GROUP_SKILLS
|
|
arm_func_end GetLearnableIqSkills
|
|
|
|
arm_func_start DisableIqSkill
|
|
DisableIqSkill: ; 0x02058DA4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
bl IqSkillFlagTest
|
|
cmp r0, #0
|
|
beq _02058DE4
|
|
mov r0, r5, asr #4
|
|
add r0, r5, r0, lsr #27
|
|
mov r2, r0, asr #5
|
|
sub r0, r5, r2, lsl #5
|
|
mov r1, #1
|
|
mvn r0, r1, lsl r0
|
|
ldr r1, [r4, r2, lsl #2]
|
|
and r0, r1, r0
|
|
str r0, [r4, r2, lsl #2]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02058DE4:
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl EnableIqSkill
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end DisableIqSkill
|
|
|
|
arm_func_start EnableIqSkill
|
|
EnableIqSkill: ; 0x02058DF4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _02058E64 ; =IQ_SKILL_RESTRICTIONS
|
|
mov r3, r1, lsl #1
|
|
ldrsh ip, [r2, r3]
|
|
mov r3, #0
|
|
mov r4, #1
|
|
_02058E0C:
|
|
mov r5, r3, lsl #1
|
|
ldrsh r5, [r2, r5]
|
|
cmp ip, r5
|
|
bne _02058E3C
|
|
mov lr, r3, asr #4
|
|
add lr, r3, lr, lsr #27
|
|
mov r6, lr, asr #5
|
|
sub lr, r3, r6, lsl #5
|
|
mvn lr, r4, lsl lr
|
|
ldr r5, [r0, r6, lsl #2]
|
|
and r5, r5, lr
|
|
str r5, [r0, r6, lsl #2]
|
|
_02058E3C:
|
|
add r3, r3, #1
|
|
cmp r3, #0x45
|
|
blt _02058E0C
|
|
mov ip, r1, lsr #5
|
|
ldr r3, [r0, ip, lsl #2]
|
|
sub r1, r1, ip, lsl #5
|
|
mov r2, #1
|
|
orr r1, r3, r2, lsl r1
|
|
str r1, [r0, ip, lsl #2]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02058E64: .word IQ_SKILL_RESTRICTIONS
|
|
arm_func_end EnableIqSkill
|
|
|
|
arm_func_start GetSpeciesIqSkill
|
|
GetSpeciesIqSkill: ; 0x02058E68
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
bl GetIqGroup
|
|
ldr r2, _02058E88 ; =IQ_GROUP_SKILLS
|
|
mov r1, #0x19
|
|
mla r1, r0, r1, r2
|
|
ldrb r0, [r4, r1]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02058E88: .word IQ_GROUP_SKILLS
|
|
arm_func_end GetSpeciesIqSkill
|
|
|
|
arm_func_start DisableAllIqSkills
|
|
DisableAllIqSkills: ; 0x02058E8C
|
|
mov r3, #0
|
|
mov r2, r3
|
|
_02058E94:
|
|
add r1, r3, #1
|
|
mov r1, r1, lsl #0x10
|
|
str r2, [r0, r3, lsl #2]
|
|
mov r3, r1, asr #0x10
|
|
cmp r3, #3
|
|
blt _02058E94
|
|
bx lr
|
|
arm_func_end DisableAllIqSkills
|
|
|
|
arm_func_start EnableAllLearnableIqSkills
|
|
EnableAllLearnableIqSkills: ; 0x02058EB0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x48
|
|
mov r6, r0
|
|
add r0, sp, #0
|
|
bl GetLearnableIqSkills
|
|
mov r0, r6
|
|
bl DisableAllIqSkills
|
|
mov r5, #0
|
|
add r4, sp, #0
|
|
b _02058EF4
|
|
_02058ED8:
|
|
ldrb r0, [r4, r5]
|
|
cmp r0, #0
|
|
beq _02058EFC
|
|
ldrb r1, [r4, r5]
|
|
mov r0, r6
|
|
bl EnableIqSkill
|
|
add r5, r5, #1
|
|
_02058EF4:
|
|
cmp r5, #0x45
|
|
blt _02058ED8
|
|
_02058EFC:
|
|
add sp, sp, #0x48
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end EnableAllLearnableIqSkills
|