mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
2452 lines
43 KiB
ArmAsm
2452 lines
43 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main_02052B44.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start GetSpawnThreshold
|
|
GetSpawnThreshold: ; 0x02052B44
|
|
ldr r2, _02052B5C ; =MONSTER_DATA_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x31]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052B5C: .word MONSTER_DATA_TABLE_PTR
|
|
arm_func_end GetSpawnThreshold
|
|
|
|
arm_func_start NeedsItemToSpawn
|
|
NeedsItemToSpawn: ; 0x02052B60
|
|
ldr r2, _02052B88 ; =MONSTER_DATA_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x1a]
|
|
tst r0, #0x80
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02052B88: .word MONSTER_DATA_TABLE_PTR
|
|
arm_func_end NeedsItemToSpawn
|
|
|
|
arm_func_start GetExclusiveItem
|
|
GetExclusiveItem: ; 0x02052B8C
|
|
ldr r2, _02052BB4 ; =MONSTER_DATA_TABLE_PTR
|
|
mov r3, r1, lsr #0x1f
|
|
ldr ip, [r2]
|
|
mov r2, #0x44
|
|
rsb r1, r3, r1, lsl #30
|
|
smlabb r2, r0, r2, ip
|
|
add r0, r3, r1, ror #30
|
|
add r0, r2, r0, lsl #1
|
|
ldrsh r0, [r0, #0x34]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052BB4: .word MONSTER_DATA_TABLE_PTR
|
|
arm_func_end GetExclusiveItem
|
|
|
|
arm_func_start GetFamilyIndex
|
|
GetFamilyIndex: ; 0x02052BB8
|
|
ldr r2, _02052BD0 ; =MONSTER_DATA_TABLE_PTR
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #0x32]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052BD0: .word MONSTER_DATA_TABLE_PTR
|
|
arm_func_end GetFamilyIndex
|
|
|
|
arm_func_start LoadM2nAndN2m
|
|
LoadM2nAndN2m: ; 0x02052BD4
|
|
stmdb sp!, {r3, lr}
|
|
#ifdef EUROPE
|
|
sub sp, sp, #0x100
|
|
#endif
|
|
ldr r0, _02052C2C ; =_020B09C8
|
|
bl PointsToZero
|
|
cmp r0, #0
|
|
beq _02052C00
|
|
#ifdef EUROPE
|
|
bl GetLanguage
|
|
mov r2, r0
|
|
ldr r1, _02052FA8 ; =_020B12F4_EU
|
|
add r0, sp, #0
|
|
ldr r2, [r1, r2, lsl #2]
|
|
ldr r1, _02052FAC ; =_020A3210
|
|
bl SprintfStatic__02052418
|
|
#endif
|
|
ldr r0, _02052C2C ; =_020B09C8
|
|
bl ZInit8
|
|
ldr r0, _02052C2C ; =_020B09C8
|
|
#ifdef EUROPE
|
|
add r1, sp, #0
|
|
#else
|
|
ldr r1, _02052C30 ; =_020A3210
|
|
#endif
|
|
mov r2, #0
|
|
bl LoadFileFromRom
|
|
_02052C00:
|
|
ldr r0, _02052C34 ; =_020B09D0
|
|
bl PointsToZero
|
|
cmp r0, #0
|
|
#ifdef EUROPE
|
|
beq _02052F9C
|
|
bl GetLanguage
|
|
mov r2, r0
|
|
ldr r1, _02052FB4 ; =_020B1308_EU
|
|
add r0, sp, #0
|
|
ldr r2, [r1, r2, lsl #2]
|
|
ldr r1, _02052FAC ; =_020A3210
|
|
bl SprintfStatic__02052418
|
|
#else
|
|
ldmeqia sp!, {r3, pc}
|
|
#endif
|
|
ldr r0, _02052C34 ; =_020B09D0
|
|
bl ZInit8
|
|
ldr r0, _02052C34 ; =_020B09D0
|
|
#ifdef EUROPE
|
|
add r1, sp, #0
|
|
#else
|
|
ldr r1, _02052C38 ; =_020A322C
|
|
#endif
|
|
mov r2, #0
|
|
bl LoadFileFromRom
|
|
#ifdef EUROPE
|
|
_02052F9C:
|
|
add sp, sp, #0x100
|
|
#endif
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052C2C: .word _020B09C8
|
|
#ifdef EUROPE
|
|
_02052FA8: .word _020B12F4_EU
|
|
_02052FAC: .word _020A3210
|
|
#else
|
|
_02052C30: .word _020A3210
|
|
#endif
|
|
_02052C34: .word _020B09D0
|
|
#ifdef EUROPE
|
|
_02052FB4: .word _020B1308_EU
|
|
#else
|
|
_02052C38: .word _020A322C
|
|
#endif
|
|
arm_func_end LoadM2nAndN2m
|
|
|
|
arm_func_start sub_02052C3C
|
|
sub_02052C3C: ; 0x02052C3C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _02052C68 ; =TEAM_MEMBER_TABLE
|
|
ldr r0, _02052C6C ; =TEAM_MEMBER_TABLE_PTR
|
|
str r1, [r0]
|
|
bl LoadMonsterMd
|
|
ldr r0, _02052C70 ; =LEVEL_UP_DATA_MONSTER_ID
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
bl sub_020550DC
|
|
bl sub_020560B8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052C68: .word TEAM_MEMBER_TABLE
|
|
_02052C6C: .word TEAM_MEMBER_TABLE_PTR
|
|
_02052C70: .word LEVEL_UP_DATA_MONSTER_ID
|
|
arm_func_end sub_02052C3C
|
|
|
|
arm_func_start sub_02052C74
|
|
sub_02052C74: ; 0x02052C74
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_020550E0
|
|
bl RemoveActiveMembersFromAllTeams
|
|
ldr r2, _02052CD4 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov lr, #0
|
|
ldr r0, [r2]
|
|
mov r3, lr
|
|
add r0, r0, #0x9000
|
|
str lr, [r0, #0x878]
|
|
str lr, [r0, #0x87c]
|
|
mov r0, #0x44
|
|
_02052CA0:
|
|
mul ip, lr, r0
|
|
ldr r1, [r2]
|
|
add lr, lr, #1
|
|
add r1, r1, ip
|
|
add r1, r1, #0x9800
|
|
strh r3, [r1, #0x9c]
|
|
ldr r1, [r2]
|
|
cmp lr, #4
|
|
add r1, r1, ip
|
|
add r1, r1, #0x9000
|
|
strb r3, [r1, #0x898]
|
|
blt _02052CA0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052CD4: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02052C74
|
|
|
|
arm_func_start sub_02052CD8
|
|
sub_02052CD8: ; 0x02052CD8
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02055118
|
|
bl RemoveActiveMembersFromSpecialEpisodeTeam
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02052CD8
|
|
|
|
arm_func_start sub_02052CE8
|
|
sub_02052CE8: ; 0x02052CE8
|
|
ldr ip, _02052CF0 ; =RemoveActiveMembersFromRescueTeam
|
|
bx ip
|
|
.align 2, 0
|
|
_02052CF0: .word RemoveActiveMembersFromRescueTeam
|
|
arm_func_end sub_02052CE8
|
|
|
|
arm_func_start sub_02052CF4
|
|
sub_02052CF4: ; 0x02052CF4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x1c
|
|
mov r8, r0
|
|
mov r4, #1
|
|
mov r7, r1
|
|
strb r4, [r8]
|
|
mov r0, r7
|
|
strb r4, [r8, #1]
|
|
mov r6, r2
|
|
mov r5, r3
|
|
ldr r4, [sp, #0x38]
|
|
bl GetBaseHp
|
|
strh r0, [r8, #0xa]
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [r8, #0xc]
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [r8, #0xd]
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [r8, #0xe]
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [r8, #0xf]
|
|
strh r7, [r8, #4]
|
|
mov r3, #0
|
|
str r3, [r8, #0x10]
|
|
strb r3, [r8, #0x20]
|
|
mov r0, #1
|
|
strh r0, [r8, #8]
|
|
ldrb r2, [r5]
|
|
add r0, r8, #0x14
|
|
mov r1, r7
|
|
strb r2, [r8, #2]
|
|
ldrb r2, [r5, #1]
|
|
strb r2, [r8, #3]
|
|
strb r3, [r8, #6]
|
|
strb r3, [r8, #7]
|
|
ldrsh r2, [r8, #8]
|
|
bl EnableAllLearnableIqSkills
|
|
cmp r4, #0
|
|
beq _02052DDC
|
|
mov r3, #0
|
|
add r1, sp, #0
|
|
_02052DB8:
|
|
mov r2, r3, lsl #1
|
|
ldrh r0, [r4, r2]
|
|
add r3, r3, #1
|
|
cmp r3, #4
|
|
strh r0, [r1, r2]
|
|
blt _02052DB8
|
|
add r0, r8, #0x22
|
|
bl GetInfoGroundMoveset
|
|
b _02052DEC
|
|
_02052DDC:
|
|
ldrb r2, [sp, #0x3c]
|
|
mov r1, r7
|
|
add r0, r8, #0x22
|
|
bl sub_02053F10
|
|
_02052DEC:
|
|
cmp r6, #0
|
|
bne _02052E14
|
|
add r0, sp, #8
|
|
mov r1, r7
|
|
bl GetNameRaw
|
|
add r1, sp, #8
|
|
add r0, r8, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpyName
|
|
b _02052E24
|
|
_02052E14:
|
|
mov r1, r6
|
|
add r0, r8, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
_02052E24:
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_02052CF4
|
|
|
|
arm_func_start sub_02052E2C
|
|
sub_02052E2C: ; 0x02052E2C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr lr, [sp, #0x10]
|
|
mov ip, #0
|
|
str lr, [sp]
|
|
str ip, [sp, #4]
|
|
bl sub_02052CF4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02052E2C
|
|
|
|
arm_func_start GuestMonsterToGroundMonster
|
|
GuestMonsterToGroundMonster: ; 0x02052E50
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, #1
|
|
mov r4, r1
|
|
strb r0, [r5]
|
|
ldrsh r1, [r4, #0x12]
|
|
mov r2, #0
|
|
add r0, r5, #0x14
|
|
strb r1, [r5, #1]
|
|
ldrsh r1, [r4, #0x10]
|
|
strh r1, [r5, #0xa]
|
|
ldrsh r1, [r4, #0x16]
|
|
strb r1, [r5, #0xc]
|
|
ldrsh r1, [r4, #0x18]
|
|
strb r1, [r5, #0xd]
|
|
ldrsh r1, [r4, #0x1a]
|
|
strb r1, [r5, #0xe]
|
|
ldrsh r1, [r4, #0x1c]
|
|
strb r1, [r5, #0xf]
|
|
ldrsh r1, [r4, #4]
|
|
strh r1, [r5, #4]
|
|
ldr r1, [r4, #0x20]
|
|
str r1, [r5, #0x10]
|
|
strb r2, [r5, #0x20]
|
|
ldrsh r1, [r4, #0x14]
|
|
strh r1, [r5, #8]
|
|
ldrb r1, [r4, #6]
|
|
strb r1, [r5, #2]
|
|
ldrb r1, [r4, #7]
|
|
strb r1, [r5, #3]
|
|
strb r2, [r5, #6]
|
|
strb r2, [r5, #7]
|
|
ldrsh r1, [r5, #4]
|
|
ldrsh r2, [r5, #8]
|
|
bl EnableAllLearnableIqSkills
|
|
add r0, r5, #0x22
|
|
add r1, r4, #8
|
|
bl GetInfoGroundMoveset
|
|
ldr r1, [r4]
|
|
add r0, r5, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end GuestMonsterToGroundMonster
|
|
|
|
arm_func_start SetBaseStatsMovesGroundMonster
|
|
SetBaseStatsMovesGroundMonster: ; 0x02052EFC
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #1
|
|
strb r0, [r4, #1]
|
|
ldrsh r0, [r4, #4]
|
|
bl GetBaseHp
|
|
strh r0, [r4, #0xa]
|
|
ldrsh r0, [r4, #4]
|
|
mov r1, #0
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [r4, #0xc]
|
|
ldrsh r0, [r4, #4]
|
|
mov r1, #1
|
|
bl GetBaseOffensiveStat
|
|
strb r0, [r4, #0xd]
|
|
ldrsh r0, [r4, #4]
|
|
mov r1, #0
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [r4, #0xe]
|
|
ldrsh r0, [r4, #4]
|
|
mov r1, #1
|
|
bl GetBaseDefensiveStat
|
|
strb r0, [r4, #0xf]
|
|
mov r0, #0
|
|
str r0, [r4, #0x10]
|
|
strb r0, [r4, #0x20]
|
|
mov r2, #1
|
|
strh r2, [r4, #8]
|
|
ldrsh r1, [r4, #4]
|
|
add r0, r4, #0x14
|
|
bl EnableAllLearnableIqSkills
|
|
ldrsh r1, [r4, #4]
|
|
add r0, r4, #0x22
|
|
mov r2, #0
|
|
bl sub_02053F10
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end SetBaseStatsMovesGroundMonster
|
|
|
|
arm_func_start sub_02052F8C
|
|
sub_02052F8C: ; 0x02052F8C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr lr, [sp, #0x10]
|
|
mov ip, #1
|
|
str lr, [sp]
|
|
str ip, [sp, #4]
|
|
bl sub_02052CF4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02052F8C
|
|
|
|
arm_func_start StrcmpMonsterName
|
|
StrcmpMonsterName: ; 0x02052FB0
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0x14
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl GetNameString
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
#ifdef JAPAN
|
|
bl sub_02025304_JP
|
|
#else
|
|
bl StrcpyName
|
|
#endif
|
|
add r1, sp, #0
|
|
mov r0, r4
|
|
mov r2, #0xa
|
|
bl StrncmpSimple
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end StrcmpMonsterName
|
|
|
|
arm_func_start sub_02052FF8
|
|
sub_02052FF8: ; 0x02052FF8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _02053034 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r3, #0x44
|
|
ldr ip, [r2]
|
|
mov r2, #0xa
|
|
smlabb r0, r0, r3, ip
|
|
smlabb r1, r1, r3, ip
|
|
add r0, r0, #0x3a
|
|
add r1, r1, #0x3a
|
|
bl sub_01FF8F28
|
|
cmp r0, #0
|
|
movlt r0, #1
|
|
movge r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02053034: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02052FF8
|
|
|
|
arm_func_start sub_02053038
|
|
sub_02053038: ; 0x02053038
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x48
|
|
mov ip, r1
|
|
mov lr, r0
|
|
cmp ip, #0xd
|
|
blo _020530BC
|
|
ldr r6, _020530CC ; =_020A328C
|
|
add r5, sp, #0
|
|
mov r4, #4
|
|
_0205305C:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _0205305C
|
|
ldmia r6, {r0, r1}
|
|
stmia r5, {r0, r1}
|
|
mov r3, #0
|
|
add r1, sp, #0
|
|
b _020530AC
|
|
_02053080:
|
|
mov r2, r3, lsl #3
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, #0
|
|
beq _020530B4
|
|
cmp lr, r0
|
|
addeq r0, r1, r2
|
|
ldreq r0, [r0, #4]
|
|
cmpeq ip, r0
|
|
moveq r0, #1
|
|
beq _020530C4
|
|
add r3, r3, #1
|
|
_020530AC:
|
|
cmp r3, #0xa
|
|
blt _02053080
|
|
_020530B4:
|
|
mov r0, #0
|
|
b _020530C4
|
|
_020530BC:
|
|
ldr r0, _020530D0 ; =_020A327C
|
|
ldrb r0, [r0, ip]
|
|
_020530C4:
|
|
add sp, sp, #0x48
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_020530CC: .word _020A328C
|
|
_020530D0: .word _020A327C
|
|
arm_func_end sub_02053038
|
|
|
|
arm_func_start sub_020530D4
|
|
sub_020530D4: ; 0x020530D4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #8
|
|
mov r4, r0
|
|
ldrb r5, [r4]
|
|
mov r0, #0x44
|
|
ldr ip, _02053170 ; =TEAM_MEMBER_TABLE_PTR
|
|
tst r5, #1
|
|
smulbb r6, r1, r0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
mov r3, r2
|
|
ldr r7, [ip]
|
|
tst r0, #0xff
|
|
beq _02053158
|
|
ldrh r5, [r4, #0x3e]
|
|
ldrh lr, [r4, #0x40]
|
|
ldrh ip, [r4, #0x42]
|
|
mov r0, r4
|
|
mov r2, r1
|
|
strh r5, [sp]
|
|
add r1, r7, r6
|
|
strh lr, [sp, #2]
|
|
strh ip, [sp, #4]
|
|
ldrb r5, [r4]
|
|
bl sub_02053250
|
|
ldrh r2, [sp]
|
|
ldrh r1, [sp, #2]
|
|
ldrh r0, [sp, #4]
|
|
strh r2, [r4, #0x3e]
|
|
strh r1, [r4, #0x40]
|
|
strh r0, [r4, #0x42]
|
|
strb r5, [r4]
|
|
b _02053168
|
|
_02053158:
|
|
mov r0, r4
|
|
mov r2, r1
|
|
add r1, r7, r6
|
|
bl sub_02053250
|
|
_02053168:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02053170: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_020530D4
|
|
|
|
arm_func_start sub_02053174
|
|
sub_02053174: ; 0x02053174
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xc
|
|
mov r5, r0
|
|
ldrb r6, [r5]
|
|
mov r0, #0x44
|
|
ldr r4, _02053220 ; =TEAM_MEMBER_TABLE_PTR
|
|
tst r6, #1
|
|
smulbb r8, r1, r0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
mov ip, r2
|
|
ldr sb, [r4]
|
|
tst r0, #0xff
|
|
beq _02053200
|
|
ldrh r7, [r5, #0x3e]
|
|
ldrh r6, [r5, #0x40]
|
|
ldrh lr, [r5, #0x42]
|
|
ldrb r4, [r5]
|
|
mov r0, r5
|
|
mov r2, r1
|
|
str r3, [sp]
|
|
mov r3, ip
|
|
strh r7, [sp, #4]
|
|
add r1, sb, r8
|
|
strh r6, [sp, #6]
|
|
strh lr, [sp, #8]
|
|
bl sub_02053374
|
|
ldrh r2, [sp, #4]
|
|
ldrh r1, [sp, #6]
|
|
ldrh r0, [sp, #8]
|
|
strh r2, [r5, #0x3e]
|
|
strh r1, [r5, #0x40]
|
|
strh r0, [r5, #0x42]
|
|
strb r4, [r5]
|
|
b _02053218
|
|
_02053200:
|
|
str r3, [sp]
|
|
mov r0, r5
|
|
mov r2, r1
|
|
mov r3, ip
|
|
add r1, sb, r8
|
|
bl sub_02053374
|
|
_02053218:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02053220: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02053174
|
|
|
|
arm_func_start sub_02053224
|
|
sub_02053224: ; 0x02053224
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _0205324C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov ip, r1
|
|
ldr r3, [r3]
|
|
mov r1, #0x44
|
|
smlabb r1, ip, r1, r3
|
|
mov r3, r2
|
|
mov r2, ip
|
|
bl sub_02053250
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0205324C: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end sub_02053224
|
|
|
|
arm_func_start sub_02053250
|
|
sub_02053250: ; 0x02053250
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r1
|
|
ldrb r1, [r5]
|
|
mov r6, r0
|
|
add r0, r5, #0x14
|
|
strb r1, [r6]
|
|
ldrb r1, [r5, #1]
|
|
add r3, r6, #0x4c
|
|
mov r4, r2
|
|
strb r1, [r6, #2]
|
|
ldrsh r1, [r5, #8]
|
|
strh r1, [r6, #6]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r0, r6, #0x5a
|
|
bl ShuffleHiddenPower
|
|
ldrb r1, [r5, #2]
|
|
mov r0, r4
|
|
strb r1, [r6, #3]
|
|
ldrb r1, [r5, #3]
|
|
strb r1, [r6, #4]
|
|
bl sub_020564B0
|
|
strb r0, [r6, #1]
|
|
strh r4, [r6, #8]
|
|
ldrsh r0, [r5, #4]
|
|
mov r3, #0
|
|
strh r0, [r6, #0xc]
|
|
ldrb r0, [r5, #0x20]
|
|
strb r0, [r6, #0x58]
|
|
ldrsh r0, [r5, #0xa]
|
|
strh r0, [r6, #0x10]
|
|
strh r0, [r6, #0xe]
|
|
_020532D4:
|
|
add r2, r5, r3
|
|
ldrb r0, [r2, #0xc]
|
|
add r1, r6, r3
|
|
add r3, r3, #1
|
|
strb r0, [r1, #0x12]
|
|
ldrb r0, [r2, #0xe]
|
|
cmp r3, #2
|
|
strb r0, [r1, #0x14]
|
|
blt _020532D4
|
|
ldr r2, [r5, #0x10]
|
|
add r0, r6, #0x1c
|
|
add r1, r5, #0x22
|
|
str r2, [r6, #0x18]
|
|
bl GroundToDungeonMoveset
|
|
add r0, r6, #0x5e
|
|
add r1, r5, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
add r0, r6, #0x3e
|
|
bl ItemZInit
|
|
mov r0, #0x64
|
|
bl sub_02050FF8
|
|
strh r0, [sp, #4]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [sp, #6]
|
|
ldrh r2, [sp, #4]
|
|
ldrh r1, [sp, #6]
|
|
mov r0, #0x64
|
|
strh r2, [r6, #0x44]
|
|
strh r1, [r6, #0x46]
|
|
bl sub_02050FF8
|
|
strh r0, [sp]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [sp, #2]
|
|
ldrh r1, [sp]
|
|
ldrh r0, [sp, #2]
|
|
strh r1, [r6, #0x48]
|
|
strh r0, [r6, #0x4a]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02053250
|
|
|
|
arm_func_start sub_02053374
|
|
sub_02053374: ; 0x02053374
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r1
|
|
ldrb r1, [r5]
|
|
mov r6, r0
|
|
add r0, r5, #0x14
|
|
strb r1, [r6]
|
|
ldrb r1, [r5, #1]
|
|
add r3, r6, #0x4c
|
|
mov r4, r2
|
|
strb r1, [r6, #2]
|
|
ldrsh r1, [r5, #8]
|
|
strh r1, [r6, #6]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r0, r6, #0x5a
|
|
bl ShuffleHiddenPower
|
|
ldrb r2, [r5, #2]
|
|
ldrb r1, [sp, #0x18]
|
|
mov r0, r4
|
|
strb r2, [r6, #3]
|
|
ldrb r2, [r5, #3]
|
|
strb r2, [r6, #4]
|
|
bl sub_02056504
|
|
strb r0, [r6, #1]
|
|
strh r4, [r6, #8]
|
|
ldrsh r0, [r5, #4]
|
|
mov r3, #0
|
|
strh r0, [r6, #0xc]
|
|
ldrb r0, [r5, #0x20]
|
|
strb r0, [r6, #0x58]
|
|
ldrsh r0, [r5, #0xa]
|
|
strh r0, [r6, #0x10]
|
|
strh r0, [r6, #0xe]
|
|
_020533FC:
|
|
add r2, r5, r3
|
|
ldrb r0, [r2, #0xc]
|
|
add r1, r6, r3
|
|
add r3, r3, #1
|
|
strb r0, [r1, #0x12]
|
|
ldrb r0, [r2, #0xe]
|
|
cmp r3, #2
|
|
strb r0, [r1, #0x14]
|
|
blt _020533FC
|
|
ldr r2, [r5, #0x10]
|
|
add r0, r6, #0x1c
|
|
add r1, r5, #0x22
|
|
str r2, [r6, #0x18]
|
|
bl GroundToDungeonMoveset
|
|
add r0, r6, #0x5e
|
|
add r1, r5, #0x3a
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
add r0, r6, #0x3e
|
|
bl ItemZInit
|
|
mov r0, #0x64
|
|
bl sub_02050FF8
|
|
strh r0, [sp, #4]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [sp, #6]
|
|
ldrh r2, [sp, #4]
|
|
ldrh r1, [sp, #6]
|
|
mov r0, #0x64
|
|
strh r2, [r6, #0x44]
|
|
strh r1, [r6, #0x46]
|
|
bl sub_02050FF8
|
|
strh r0, [sp]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [sp, #2]
|
|
ldrh r1, [sp]
|
|
ldrh r0, [sp, #2]
|
|
strh r1, [r6, #0x48]
|
|
strh r0, [r6, #0x4a]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02053374
|
|
|
|
arm_func_start sub_0205349C
|
|
sub_0205349C: ; 0x0205349C
|
|
ldr r3, _020534B4 ; =TEAM_MEMBER_TABLE_PTR
|
|
ldr ip, _020534B8 ; =sub_020534BC
|
|
ldr r3, [r3]
|
|
mov r2, #0x44
|
|
smlabb r0, r0, r2, r3
|
|
bx ip
|
|
.align 2, 0
|
|
_020534B4: .word TEAM_MEMBER_TABLE_PTR
|
|
_020534B8: .word sub_020534BC
|
|
arm_func_end sub_0205349C
|
|
|
|
arm_func_start sub_020534BC
|
|
sub_020534BC: ; 0x020534BC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
ldrb r1, [r4]
|
|
mov r5, r0
|
|
add r0, r4, #0x4c
|
|
strb r1, [r5]
|
|
ldrb r1, [r4, #2]
|
|
add ip, r5, #0x14
|
|
mov r3, #0
|
|
strb r1, [r5, #1]
|
|
ldrsh r1, [r4, #6]
|
|
strh r1, [r5, #8]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldrb r0, [r4, #3]
|
|
strb r0, [r5, #2]
|
|
ldrb r0, [r4, #4]
|
|
strb r0, [r5, #3]
|
|
ldrsh r0, [r4, #0xc]
|
|
strh r0, [r5, #4]
|
|
ldrb r0, [r4, #0x58]
|
|
strb r0, [r5, #0x20]
|
|
ldrsh r0, [r4, #0x10]
|
|
strh r0, [r5, #0xa]
|
|
_0205351C:
|
|
add r2, r4, r3
|
|
ldrb r0, [r2, #0x12]
|
|
add r1, r5, r3
|
|
add r3, r3, #1
|
|
strb r0, [r1, #0xc]
|
|
ldrb r0, [r2, #0x14]
|
|
cmp r3, #2
|
|
strb r0, [r1, #0xe]
|
|
blt _0205351C
|
|
ldr r2, [r4, #0x18]
|
|
add r0, r5, #0x22
|
|
add r1, r4, #0x1c
|
|
str r2, [r5, #0x10]
|
|
bl DungeonToGroundMoveset
|
|
add r0, r5, #0x3a
|
|
add r1, r4, #0x5e
|
|
mov r2, #0xa
|
|
bl StrncpySimple
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_020534BC
|
|
|
|
arm_func_start sub_02053568
|
|
sub_02053568: ; 0x02053568
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r4, _0205361C ; =_020A3258
|
|
b _0205358C
|
|
_02053578:
|
|
ldrsh r1, [r5, #4]
|
|
bl DexNumbersEqual
|
|
cmp r0, #0
|
|
bne _02053598
|
|
add r4, r4, #4
|
|
_0205358C:
|
|
ldrsh r0, [r4]
|
|
cmp r0, #0
|
|
bne _02053578
|
|
_02053598:
|
|
ldrsh r0, [r4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
add r0, r5, #0x22
|
|
bl GetNbMoves
|
|
cmp r0, #4
|
|
bne _02053604
|
|
ldrsh r0, [r4]
|
|
cmp r0, #0x148
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
ldr r1, _02053620 ; =0x0000013B
|
|
add r0, r5, #0x22
|
|
bl GetMovesetIdx__02013CAC
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r1, #6
|
|
mul r2, r0, r1
|
|
add r3, r5, #0x22
|
|
mov r0, #0
|
|
strb r0, [r3, r2]
|
|
ldrh r1, [r4, #2]
|
|
add r0, r3, r2
|
|
bl GetInfoMoveGround
|
|
ldr r0, _02053624 ; =_020A32D4
|
|
bl Debug_Print0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02053604:
|
|
add r2, r5, #0x22
|
|
mov r1, #6
|
|
mla r0, r1, r0, r2
|
|
ldrh r1, [r4, #2]
|
|
bl GetInfoMoveGround
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0205361C: .word _020A3258
|
|
_02053620: .word 0x0000013B
|
|
_02053624: .word _020A32D4
|
|
arm_func_end sub_02053568
|
|
|
|
arm_func_start sub_02053628
|
|
sub_02053628: ; 0x02053628
|
|
b _0205364C
|
|
_0205362C:
|
|
ldrsh r2, [r0, #4]
|
|
cmp r3, r2
|
|
ldreqb r3, [r1, #2]
|
|
ldreqb r2, [r0, #2]
|
|
cmpeq r3, r2
|
|
addeq r0, r1, #4
|
|
bxeq lr
|
|
add r1, r1, #6
|
|
arm_func_end sub_02053628
|
|
_0205364C:
|
|
ldrsh r3, [r1]
|
|
cmp r3, #0
|
|
bne _0205362C
|
|
mov r0, #0
|
|
bx lr
|
|
|
|
arm_func_start sub_02053660
|
|
sub_02053660: ; 0x02053660
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
movs r4, r2
|
|
mov r5, r1
|
|
mov r6, r0
|
|
cmpne r5, #0
|
|
mvneq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r1, #0
|
|
mov sb, r1
|
|
add r0, sp, #0
|
|
_02053688:
|
|
strb sb, [r0, r1]
|
|
add r1, r1, #1
|
|
cmp r1, #4
|
|
blt _02053688
|
|
b _0205375C
|
|
_0205369C:
|
|
mov r1, r8
|
|
add r0, r6, #0x22
|
|
bl GetMovesetIdx__02013CAC
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
bne _02053758
|
|
add r0, r6, #0x22
|
|
bl GetNbMoves
|
|
mov r7, r0
|
|
cmp r7, #4
|
|
bne _02053738
|
|
mov r7, #0
|
|
mov sb, r7
|
|
add r1, sp, #0
|
|
_020536D4:
|
|
ldrb r0, [r1, sb]
|
|
add sb, sb, #1
|
|
cmp r0, #0
|
|
addeq r7, r7, #1
|
|
cmp sb, #4
|
|
blt _020536D4
|
|
cmp r7, #0
|
|
beq _02053774
|
|
bl Rand16Bit
|
|
mov r1, r7
|
|
bl _s32_div_f
|
|
mov r7, r1
|
|
mov r0, #6
|
|
mul ip, r7, r0
|
|
add r0, r6, #0x22
|
|
mov r1, r8
|
|
add r2, r6, ip
|
|
mov r3, #0
|
|
add r0, r0, ip
|
|
strb r3, [r2, #0x22]
|
|
bl GetInfoMoveGround
|
|
add r0, sp, #0
|
|
mov r1, #1
|
|
strb r1, [r0, r7]
|
|
b _02053758
|
|
_02053738:
|
|
add r1, r6, #0x22
|
|
mov r0, #6
|
|
mla r0, r7, r0, r1
|
|
mov r1, r8
|
|
bl GetInfoMoveGround
|
|
add r0, sp, #0
|
|
mov r1, #1
|
|
strb r1, [r0, r7]
|
|
_02053758:
|
|
add sb, sb, #1
|
|
_0205375C:
|
|
cmp sb, r4
|
|
bge _02053774
|
|
mov r0, sb, lsl #1
|
|
ldrh r8, [r5, r0]
|
|
cmp r8, #0
|
|
bne _0205369C
|
|
_02053774:
|
|
mov r0, #0
|
|
mov r3, r0
|
|
add r2, sp, #0
|
|
_02053780:
|
|
ldrb r1, [r2, r3]
|
|
add r3, r3, #1
|
|
cmp r1, #0
|
|
addne r0, r0, #1
|
|
cmp r3, #4
|
|
blt _02053780
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
arm_func_end sub_02053660
|
|
|
|
arm_func_start GetLvlUpEntry
|
|
GetLvlUpEntry: ; 0x0205379C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xc
|
|
mov r6, r1
|
|
mov r5, r0
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
mov r4, r2
|
|
bl _s32_div_f
|
|
ldr r0, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID
|
|
ldrsh r0, [r0]
|
|
cmp r0, r1
|
|
beq _02053820
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
sub r0, r1, #1
|
|
ldr r2, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID
|
|
mov r0, r0, lsl #0x10
|
|
strh r1, [r2]
|
|
mov r1, r0, lsr #0x10
|
|
add r2, sp, #4
|
|
mov r0, #5
|
|
mov r3, #0
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp]
|
|
ldr r0, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER
|
|
mov r1, #0
|
|
bl DecompressAtNormalVeneer
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
_02053820:
|
|
subs r4, r4, #1
|
|
ldr r1, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER
|
|
movmi r4, #0
|
|
mov r0, #0xc
|
|
mla r0, r4, r0, r1
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02053844: .word LEVEL_UP_DATA_MONSTER_ID
|
|
_02053848: .word LEVEL_UP_DATA_DECOMPRESS_BUFFER
|
|
arm_func_end GetLvlUpEntry
|
|
|
|
arm_func_start GetEncodedHalfword
|
|
GetEncodedHalfword: ; 0x0205384C
|
|
ldrb ip, [r0]
|
|
add r2, r0, #1
|
|
mov r0, r2
|
|
tst ip, #0x80
|
|
addne r0, r2, #1
|
|
ldrneb r2, [r2]
|
|
moveq r2, ip
|
|
moveq ip, #0
|
|
and r3, r2, #0x7f
|
|
mov r2, ip, lsl #0x19
|
|
orr r2, r3, r2, lsr #18
|
|
strh r2, [r1]
|
|
bx lr
|
|
arm_func_end GetEncodedHalfword
|
|
|
|
arm_func_start sub_02053880
|
|
sub_02053880: ; 0x02053880
|
|
cmp r0, #0xee
|
|
mov r3, #1
|
|
bne _0205389C
|
|
ldr r2, _020538F0 ; =_020A18C0
|
|
ldrsh r2, [r2]
|
|
cmp r1, r2
|
|
movlt r3, #0
|
|
_0205389C:
|
|
cmp r0, #0xef
|
|
bne _020538B4
|
|
ldr r2, _020538F4 ; =_020A189C
|
|
ldrsh r2, [r2]
|
|
cmp r1, r2
|
|
movlt r3, #0
|
|
_020538B4:
|
|
cmp r0, #0x110
|
|
bne _020538CC
|
|
ldr r2, _020538F8 ; =_020A1884
|
|
ldrsh r2, [r2]
|
|
cmp r1, r2
|
|
movlt r3, #0
|
|
_020538CC:
|
|
ldr r2, _020538FC ; =0x0000021A
|
|
cmp r0, r2
|
|
bne _020538E8
|
|
ldr r0, _02053900 ; =_020A1880
|
|
ldrsh r0, [r0]
|
|
cmp r1, r0
|
|
movlt r3, #0
|
|
_020538E8:
|
|
mov r0, r3
|
|
bx lr
|
|
.align 2, 0
|
|
_020538F0: .word _020A18C0
|
|
_020538F4: .word _020A189C
|
|
_020538F8: .word _020A1884
|
|
_020538FC: .word 0x0000021A
|
|
_02053900: .word _020A1880
|
|
arm_func_end sub_02053880
|
|
|
|
arm_func_start sub_02053904
|
|
sub_02053904: ; 0x02053904
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r4, _02053A08 ; =0x00000229
|
|
ldr r8, [sp, #0x28]
|
|
mov sl, r0
|
|
mov sb, r2
|
|
mov fp, r3
|
|
mov r6, #0
|
|
cmp r1, r4
|
|
moveq r0, r6
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r1, #0
|
|
moveq r0, r6
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r8, #0
|
|
beq _0205394C
|
|
ldrsh r5, [sp, #0x2c]
|
|
cmp r5, #0
|
|
bgt _02053950
|
|
_0205394C:
|
|
mov r5, #0
|
|
_02053950:
|
|
mov r0, r1
|
|
bl GetMovesetLevelUpPtr
|
|
mov r4, r0
|
|
b _020539F4
|
|
_02053960:
|
|
mov r0, r4
|
|
add r1, sp, #0
|
|
bl GetEncodedHalfword
|
|
ldrb r1, [r0]
|
|
add r4, r0, #1
|
|
cmp r1, sb
|
|
bgt _02053A00
|
|
bne _020539F4
|
|
ldrh r0, [sp]
|
|
mov r1, fp
|
|
mov r7, #1
|
|
bl sub_02053880
|
|
cmp r0, #0
|
|
moveq r7, #0
|
|
cmp r5, #0
|
|
ble _020539D8
|
|
mov r2, #0
|
|
ldrh r0, [sp]
|
|
b _020539C8
|
|
_020539AC:
|
|
mov r1, r2, lsl #1
|
|
ldrh r1, [r8, r1]
|
|
cmp r0, r1
|
|
beq _020539D0
|
|
add r1, r2, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r2, r1, asr #0x10
|
|
_020539C8:
|
|
cmp r2, r5
|
|
blt _020539AC
|
|
_020539D0:
|
|
cmp r2, r5
|
|
bne _020539F4
|
|
_020539D8:
|
|
cmp r7, #0
|
|
beq _020539F4
|
|
cmp r6, #0x10
|
|
ldrlth r1, [sp]
|
|
movlt r0, r6, lsl #1
|
|
addlt r6, r6, #1
|
|
strlth r1, [sl, r0]
|
|
_020539F4:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
bne _02053960
|
|
_02053A00:
|
|
mov r0, r6
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02053A08: .word 0x00000229
|
|
arm_func_end sub_02053904
|
|
|
|
arm_func_start sub_02053A0C
|
|
sub_02053A0C: ; 0x02053A0C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r6, r0
|
|
mov r0, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl FemaleToMaleForm
|
|
mov ip, #0
|
|
mov r1, r0
|
|
str ip, [sp]
|
|
mov r0, r6
|
|
mov r2, r5
|
|
mov r3, r4
|
|
str ip, [sp, #4]
|
|
bl sub_02053904
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02053A0C
|
|
|
|
arm_func_start sub_02053A50
|
|
sub_02053A50: ; 0x02053A50
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov r0, r3
|
|
ldr r7, [sp, #0x2c]
|
|
mov sb, r1
|
|
mov r8, r2
|
|
mov r5, #0
|
|
bl FemaleToMaleForm
|
|
mov r4, r0
|
|
bl sub_02053B38
|
|
cmp r0, #0
|
|
movne r0, r5
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r0, [sp, #0x28]
|
|
cmp r0, #1
|
|
bne _02053B30
|
|
mov r0, r4
|
|
bl GetMovesetEggPtr
|
|
mov r4, r0
|
|
mov fp, #1
|
|
b _02053B24
|
|
_02053AA4:
|
|
mov r0, r4
|
|
add r1, sp, #0
|
|
mov r6, fp
|
|
bl GetEncodedHalfword
|
|
mov r4, r0
|
|
ldrh r0, [sp]
|
|
mov r1, r7
|
|
bl sub_02053880
|
|
cmp r0, #0
|
|
moveq r6, #0
|
|
cmp r6, #0
|
|
beq _02053B24
|
|
mov r2, #0
|
|
mov r3, r2
|
|
ldrh r0, [sp]
|
|
b _02053B04
|
|
_02053AE4:
|
|
mov r1, r3, lsl #1
|
|
ldrh r1, [sb, r1]
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _02053B0C
|
|
add r1, r3, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r3, r1, asr #0x10
|
|
_02053B04:
|
|
cmp r3, r8
|
|
blt _02053AE4
|
|
_02053B0C:
|
|
cmp r2, #0
|
|
bne _02053B24
|
|
cmp r5, #0x10
|
|
movlt r1, r5, lsl #1
|
|
strlth r0, [sl, r1]
|
|
addlt r5, r5, #1
|
|
_02053B24:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
bne _02053AA4
|
|
_02053B30:
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_02053A50
|
|
|
|
arm_func_start sub_02053B38
|
|
sub_02053B38: ; 0x02053B38
|
|
cmp r0, #0
|
|
ble _02053B4C
|
|
ldr r1, _02053B5C ; =0x00000229
|
|
cmp r0, r1
|
|
blt _02053B54
|
|
_02053B4C:
|
|
mov r0, #1
|
|
bx lr
|
|
_02053B54:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02053B5C: .word 0x00000229
|
|
arm_func_end sub_02053B38
|
|
|
|
arm_func_start sub_02053B60
|
|
sub_02053B60: ; 0x02053B60
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x48
|
|
mov r8, r0
|
|
mov r0, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
bl FemaleToMaleForm
|
|
mov r4, r0
|
|
bl sub_02053B38
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
bne _02053C98
|
|
mov r0, r4
|
|
bl FemaleToMaleForm
|
|
mov r5, #0
|
|
mov r1, r0
|
|
str r5, [sp]
|
|
mov r0, r8
|
|
mov r2, r7
|
|
mov r3, r6
|
|
str r5, [sp, #4]
|
|
bl sub_02053904
|
|
mov r5, r0
|
|
cmp r5, #4
|
|
bge _02053C68
|
|
mov r3, #0
|
|
add r0, sp, #0x28
|
|
b _02053BE0
|
|
_02053BD0:
|
|
mov r2, r3, lsl #1
|
|
ldrh r1, [r8, r2]
|
|
add r3, r3, #1
|
|
strh r1, [r0, r2]
|
|
_02053BE0:
|
|
cmp r3, r5
|
|
blt _02053BD0
|
|
mov r2, r5, lsl #0x10
|
|
str r7, [sp]
|
|
add r0, sp, #8
|
|
add r1, sp, #0x28
|
|
mov r3, r4
|
|
mov r2, r2, asr #0x10
|
|
str r6, [sp, #4]
|
|
bl sub_02053A50
|
|
mov r6, r0
|
|
cmp r6, #0
|
|
ble _02053C68
|
|
add r4, sp, #8
|
|
b _02053C60
|
|
_02053C1C:
|
|
mov r0, r6
|
|
bl RandIntSafe
|
|
mov r1, r0, lsl #1
|
|
ldrh r2, [r4, r1]
|
|
mov r1, r5, lsl #1
|
|
add r3, r0, #1
|
|
strh r2, [r8, r1]
|
|
b _02053C50
|
|
_02053C3C:
|
|
mov r0, r3, lsl #1
|
|
ldrh r1, [r4, r0]
|
|
add r0, r4, r3, lsl #1
|
|
add r3, r3, #1
|
|
strh r1, [r0, #-2]
|
|
_02053C50:
|
|
cmp r3, r6
|
|
blt _02053C3C
|
|
sub r6, r6, #1
|
|
add r5, r5, #1
|
|
_02053C60:
|
|
cmp r5, #4
|
|
blt _02053C1C
|
|
_02053C68:
|
|
mov r0, r5, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
mov r2, #0
|
|
b _02053C8C
|
|
_02053C78:
|
|
add r0, r1, #1
|
|
mov r1, r1, lsl #1
|
|
mov r0, r0, lsl #0x10
|
|
strh r2, [r8, r1]
|
|
mov r1, r0, asr #0x10
|
|
_02053C8C:
|
|
cmp r1, #4
|
|
blt _02053C78
|
|
mov r0, r5
|
|
_02053C98:
|
|
add sp, sp, #0x48
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_02053B60
|
|
|
|
arm_func_start sub_02053CA0
|
|
sub_02053CA0: ; 0x02053CA0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
ldr lr, _02053D18 ; =FORBIDDEN_FORGOT_MOVE_LIST
|
|
b _02053CFC
|
|
_02053CB0:
|
|
cmp ip, r2
|
|
ldreqb ip, [lr, #2]
|
|
cmpeq r3, ip
|
|
bne _02053CF8
|
|
mov r2, #1
|
|
cmp r1, #1
|
|
suble r2, r1, #1
|
|
mov r4, #0
|
|
b _02053CDC
|
|
_02053CD4:
|
|
strh r1, [r0], #2
|
|
add r4, r4, #1
|
|
_02053CDC:
|
|
cmp r4, r2
|
|
bge _02053D08
|
|
add r1, lr, r4, lsl #1
|
|
ldrh r1, [r1, #4]
|
|
cmp r1, #0
|
|
bne _02053CD4
|
|
b _02053D08
|
|
_02053CF8:
|
|
add lr, lr, #6
|
|
_02053CFC:
|
|
ldrsh ip, [lr]
|
|
cmp ip, #0
|
|
bne _02053CB0
|
|
_02053D08:
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
mov r0, r4
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02053D18: .word FORBIDDEN_FORGOT_MOVE_LIST
|
|
arm_func_end sub_02053CA0
|
|
|
|
arm_func_start sub_02053D1C
|
|
sub_02053D1C: ; 0x02053D1C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r2, _02053DCC ; =0x00000229
|
|
mov r6, r1
|
|
mov r4, r0
|
|
cmp r6, r2
|
|
moveq r0, #0
|
|
beq _02053DC4
|
|
cmp r6, #0
|
|
moveq r0, #0
|
|
beq _02053DC4
|
|
cmp r4, #0x160
|
|
moveq r0, #0
|
|
beq _02053DC4
|
|
mov r0, r6
|
|
bl GetMovesetLevelUpPtr
|
|
add r5, sp, #2
|
|
b _02053D80
|
|
_02053D64:
|
|
mov r1, r5
|
|
bl GetEncodedHalfword
|
|
ldrh r1, [sp, #2]
|
|
add r0, r0, #1
|
|
cmp r4, r1
|
|
moveq r0, #1
|
|
beq _02053DC4
|
|
_02053D80:
|
|
ldrb r1, [r0]
|
|
cmp r1, #0
|
|
bne _02053D64
|
|
mov r0, r6
|
|
bl GetMovesetHmTmPtr
|
|
add r5, sp, #0
|
|
b _02053DB4
|
|
_02053D9C:
|
|
mov r1, r5
|
|
bl GetEncodedHalfword
|
|
ldrh r1, [sp]
|
|
cmp r1, r4
|
|
moveq r0, #1
|
|
beq _02053DC4
|
|
_02053DB4:
|
|
ldrb r1, [r0]
|
|
cmp r1, #0
|
|
bne _02053D9C
|
|
mov r0, #0
|
|
_02053DC4:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02053DCC: .word 0x00000229
|
|
arm_func_end sub_02053D1C
|
|
|
|
arm_func_start GetEvoFamily
|
|
GetEvoFamily: ; 0x02053DD0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #8
|
|
ldr r2, _02053E84 ; =_020A3248
|
|
ldrsh r3, [r0, #4]
|
|
ldr r4, [r2, #8]
|
|
ldr r2, [r2, #0xc]
|
|
mov r7, r1
|
|
strh r3, [r7]
|
|
ldrb r1, [r0, #1]
|
|
str r2, [sp, #4]
|
|
str r4, [sp]
|
|
strb r1, [r7, #2]
|
|
ldrb r5, [r0, #6]
|
|
mov r3, #0
|
|
ldrsh r2, [r0, #4]
|
|
cmp r5, #0
|
|
ldrneb r1, [r0, #7]
|
|
add r4, r3, #1
|
|
add r8, sp, #0
|
|
cmpne r1, #0
|
|
strne r1, [sp]
|
|
ldreqb r0, [r0, #7]
|
|
strne r5, [sp, #4]
|
|
streq r5, [sp]
|
|
streq r0, [sp, #4]
|
|
mov r5, #0
|
|
b _02053E70
|
|
_02053E3C:
|
|
ldr r6, [r8, r5, lsl #2]
|
|
cmp r6, #0
|
|
beq _02053E78
|
|
mov r0, r2
|
|
bl GetMonsterPreEvolution
|
|
movs r2, r0
|
|
beq _02053E78
|
|
mov r1, r4, lsl #2
|
|
add r0, r7, r4, lsl #2
|
|
strh r2, [r7, r1]
|
|
strb r6, [r0, #2]
|
|
add r4, r4, #1
|
|
add r5, r5, #1
|
|
_02053E70:
|
|
cmp r5, #2
|
|
blt _02053E3C
|
|
_02053E78:
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02053E84: .word _020A3248
|
|
arm_func_end GetEvoFamily
|
|
|
|
arm_func_start GetEvolutions
|
|
GetEvolutions: ; 0x02053E88
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r8, r2
|
|
mov fp, r3
|
|
mov r5, #0
|
|
mov r6, #1
|
|
_02053EA4:
|
|
mov r0, r6, lsl #0x10
|
|
mov r7, r0, asr #0x10
|
|
mov r0, r7
|
|
bl GetMonsterPreEvolution
|
|
cmp sl, r0
|
|
bne _02053EF4
|
|
cmp r8, #0
|
|
bne _02053EE0
|
|
mov r0, sl
|
|
bl GetSpriteSize
|
|
mov r4, r0
|
|
mov r0, r7
|
|
bl GetSpriteSize
|
|
cmp r4, r0
|
|
bne _02053EF4
|
|
_02053EE0:
|
|
cmp fp, #0
|
|
cmpeq r7, #0x140
|
|
movne r0, r5, lsl #1
|
|
strneh r7, [sb, r0]
|
|
addne r5, r5, #1
|
|
_02053EF4:
|
|
ldr r0, _02053F0C ; =0x00000483
|
|
add r6, r6, #1
|
|
cmp r6, r0
|
|
blt _02053EA4
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02053F0C: .word 0x00000483
|
|
arm_func_end GetEvolutions
|
|
|
|
arm_func_start sub_02053F10
|
|
sub_02053F10: ; 0x02053F10
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x28
|
|
mov r5, r0
|
|
cmp r2, #0
|
|
beq _02053F38
|
|
mov r2, #1
|
|
add r0, sp, #8
|
|
rsb r3, r2, #0x3e8
|
|
bl sub_02053B60
|
|
b _02053F60
|
|
_02053F38:
|
|
mov r0, r1
|
|
bl FemaleToMaleForm
|
|
mov r4, #0
|
|
mov r2, #1
|
|
mov r1, r0
|
|
str r4, [sp]
|
|
add r0, sp, #8
|
|
rsb r3, r2, #0x3e8
|
|
str r4, [sp, #4]
|
|
bl sub_02053904
|
|
_02053F60:
|
|
mov r8, r0
|
|
cmp r8, #0
|
|
moveq r0, #0x198
|
|
streqh r0, [sp, #8]
|
|
moveq r8, #1
|
|
mov r4, #0
|
|
add r7, sp, #8
|
|
mov r6, #6
|
|
b _02053F98
|
|
_02053F84:
|
|
mla r0, r4, r6, r5
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r7, r1]
|
|
bl GetInfoMoveGround
|
|
add r4, r4, #1
|
|
_02053F98:
|
|
cmp r4, r8
|
|
blt _02053F84
|
|
mov r2, #0
|
|
mov r0, #6
|
|
b _02053FB8
|
|
_02053FAC:
|
|
mul r1, r4, r0
|
|
strb r2, [r5, r1]
|
|
add r4, r4, #1
|
|
_02053FB8:
|
|
cmp r4, #4
|
|
blt _02053FAC
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_02053F10
|
|
|
|
arm_func_start ShuffleHiddenPower
|
|
ShuffleHiddenPower: ; 0x02053FC8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r0, #0xa
|
|
bl RandIntSafe
|
|
ldr r1, _02054020 ; =HIDDEN_POWER_BASE_POWER_TABLE
|
|
mov r5, #0
|
|
ldr r0, [r1, r0, lsl #2]
|
|
mov r4, #0x12
|
|
strh r0, [r6]
|
|
b _02054008
|
|
_02053FF0:
|
|
mov r0, r4
|
|
bl RandIntSafe
|
|
strb r0, [r6, #2]
|
|
tst r0, #0xff
|
|
bne _02054010
|
|
add r5, r5, #1
|
|
_02054008:
|
|
cmp r5, #0x64
|
|
blt _02053FF0
|
|
_02054010:
|
|
cmp r5, #0x64
|
|
moveq r0, #2
|
|
streqb r0, [r6, #2]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02054020: .word HIDDEN_POWER_BASE_POWER_TABLE
|
|
arm_func_end ShuffleHiddenPower
|
|
|
|
arm_func_start GetBaseForm
|
|
GetBaseForm: ; 0x02054024
|
|
cmp r0, #0x17c
|
|
ldreq r0, _02054244 ; =0x0000017B
|
|
bxeq lr
|
|
ldr r3, _02054248 ; =0x0000017D
|
|
cmp r0, r3
|
|
subeq r0, r3, #2
|
|
bxeq lr
|
|
add r1, r3, #1
|
|
cmp r0, r1
|
|
subeq r0, r3, #2
|
|
bxeq lr
|
|
cmp r0, #0x3d4
|
|
rsbeq r0, r3, #0x550
|
|
bxeq lr
|
|
add r1, r3, #0x258
|
|
cmp r0, r1
|
|
rsbeq r0, r3, #0x550
|
|
bxeq lr
|
|
ldr r2, _0205424C ; =0x000003D6
|
|
cmp r0, r2
|
|
subeq r0, r2, #3
|
|
bxeq lr
|
|
cmp r0, #0xca
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xcb
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xcc
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xcd
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xce
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xcf
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd0
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd1
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd2
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd3
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd4
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd5
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd6
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd7
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd8
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xd9
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xda
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xdb
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xdc
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xdd
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xde
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xdf
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xe0
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xe1
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xe2
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xe3
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
cmp r0, #0xe4
|
|
moveq r0, #0xc9
|
|
bxeq lr
|
|
add r1, r3, #0x26
|
|
cmp r0, r1
|
|
subeq r0, r2, #0x234
|
|
bxeq lr
|
|
cmp r0, #0x1a4
|
|
subeq r0, r2, #0x234
|
|
bxeq lr
|
|
add r1, r3, #0x28
|
|
cmp r0, r1
|
|
subeq r0, r2, #0x234
|
|
bxeq lr
|
|
cmp r0, #0x1cc
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r1, r3, #0x50
|
|
cmp r0, r1
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r1, r2, #0x4e
|
|
cmp r0, r1
|
|
moveq r0, r1
|
|
bxeq lr
|
|
add r1, r2, #0x4f
|
|
cmp r0, r1
|
|
addeq r0, r2, #0x4e
|
|
bxeq lr
|
|
add r1, r3, #0x9a
|
|
cmp r0, r1
|
|
subeq r0, r2, #0x1c0
|
|
bxeq lr
|
|
cmp r0, #0x218
|
|
addeq r0, r3, #0x94
|
|
bx lr
|
|
.align 2, 0
|
|
_02054244: .word 0x0000017B
|
|
_02054248: .word 0x0000017D
|
|
_0205424C: .word 0x000003D6
|
|
arm_func_end GetBaseForm
|
|
|
|
arm_func_start GetBaseFormBurmyWormadamShellosGastrodonCherrim
|
|
GetBaseFormBurmyWormadamShellosGastrodonCherrim: ; 0x02054250
|
|
ldr r2, _02054390 ; =0x000001BF
|
|
cmp r0, r2
|
|
moveq r0, r2
|
|
bxeq lr
|
|
cmp r0, #0x1c0
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r1, r2, #2
|
|
cmp r0, r1
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r1, r2, #0x258
|
|
cmp r0, r1
|
|
moveq r0, r2
|
|
bxeq lr
|
|
ldr r1, _02054394 ; =0x00000418
|
|
cmp r0, r1
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r3, r1, #1
|
|
cmp r0, r3
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r3, r2, #3
|
|
cmp r0, r3
|
|
moveq r0, r3
|
|
bxeq lr
|
|
add r3, r2, #4
|
|
cmp r0, r3
|
|
addeq r0, r2, #3
|
|
bxeq lr
|
|
cmp r0, #0x1c4
|
|
addeq r0, r2, #3
|
|
bxeq lr
|
|
add r3, r2, #0xf
|
|
cmp r0, r3
|
|
moveq r0, r3
|
|
bxeq lr
|
|
add r3, r2, #0x10
|
|
cmp r0, r3
|
|
addeq r0, r2, #0xf
|
|
bxeq lr
|
|
add r3, r1, #0xe
|
|
cmp r0, r3
|
|
addeq r0, r2, #0xf
|
|
bxeq lr
|
|
add r3, r1, #0xf
|
|
cmp r0, r3
|
|
addeq r0, r2, #0xf
|
|
bxeq lr
|
|
cmp r0, #0x1d0
|
|
moveq r0, #0x1d0
|
|
bxeq lr
|
|
add r3, r2, #0x12
|
|
cmp r0, r3
|
|
moveq r0, #0x1d0
|
|
bxeq lr
|
|
add r3, r1, #0x10
|
|
cmp r0, r3
|
|
moveq r0, #0x1d0
|
|
bxeq lr
|
|
add r3, r1, #0x11
|
|
cmp r0, r3
|
|
moveq r0, #0x1d0
|
|
bxeq lr
|
|
cmp r0, #0x1cc
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r2, r2, #0xe
|
|
cmp r0, r2
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r2, r1, #0xc
|
|
cmp r0, r2
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r2, r1, #0xd
|
|
cmp r0, r2
|
|
addeq r0, r1, #0xc
|
|
bx lr
|
|
.align 2, 0
|
|
_02054390: .word 0x000001BF
|
|
_02054394: .word 0x00000418
|
|
arm_func_end GetBaseFormBurmyWormadamShellosGastrodonCherrim
|
|
|
|
arm_func_start GetBaseFormCastformCherrimDeoxys
|
|
GetBaseFormCastformCherrimDeoxys: ; 0x02054398
|
|
cmp r0, #0x17c
|
|
ldreq r0, _02054458 ; =0x0000017B
|
|
bxeq lr
|
|
ldr r3, _0205445C ; =0x0000017D
|
|
cmp r0, r3
|
|
subeq r0, r3, #2
|
|
bxeq lr
|
|
add r1, r3, #1
|
|
cmp r0, r1
|
|
subeq r0, r3, #2
|
|
bxeq lr
|
|
cmp r0, #0x3d4
|
|
rsbeq r0, r3, #0x550
|
|
bxeq lr
|
|
add r1, r3, #0x258
|
|
cmp r0, r1
|
|
rsbeq r0, r3, #0x550
|
|
bxeq lr
|
|
ldr r2, _02054460 ; =0x000003D6
|
|
cmp r0, r2
|
|
subeq r0, r2, #3
|
|
bxeq lr
|
|
cmp r0, #0x1cc
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r1, r3, #0x50
|
|
cmp r0, r1
|
|
moveq r0, #0x1cc
|
|
bxeq lr
|
|
add r1, r2, #0x4e
|
|
cmp r0, r1
|
|
moveq r0, r1
|
|
bxeq lr
|
|
add r1, r2, #0x4f
|
|
cmp r0, r1
|
|
addeq r0, r2, #0x4e
|
|
bxeq lr
|
|
add r1, r3, #0x26
|
|
cmp r0, r1
|
|
subeq r0, r2, #0x234
|
|
bxeq lr
|
|
cmp r0, #0x1a4
|
|
subeq r0, r2, #0x234
|
|
bxeq lr
|
|
add r1, r3, #0x28
|
|
cmp r0, r1
|
|
subeq r0, r2, #0x234
|
|
bx lr
|
|
.align 2, 0
|
|
_02054458: .word 0x0000017B
|
|
_0205445C: .word 0x0000017D
|
|
_02054460: .word 0x000003D6
|
|
arm_func_end GetBaseFormCastformCherrimDeoxys
|
|
|
|
arm_func_start GetAllBaseForms
|
|
GetAllBaseForms: ; 0x02054464
|
|
stmdb sp!, {r3, lr}
|
|
bl GetBaseForm
|
|
bl GetBaseFormBurmyWormadamShellosGastrodonCherrim
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end GetAllBaseForms
|
|
|
|
arm_func_start GetDexNumberVeneer
|
|
GetDexNumberVeneer: ; 0x02054474
|
|
ldr ip, _0205447C ; =GetDexNumber
|
|
bx ip
|
|
.align 2, 0
|
|
_0205447C: .word GetDexNumber
|
|
arm_func_end GetDexNumberVeneer
|
|
|
|
arm_func_start GetMonsterIdFromSpawnEntry
|
|
GetMonsterIdFromSpawnEntry: ; 0x02054480
|
|
stmdb sp!, {r3, lr}
|
|
ldrsh r0, [r0, #6]
|
|
ldr r1, _0205449C ; =0x00000483
|
|
bl _s32_div_f
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0205449C: .word 0x00000483
|
|
arm_func_end GetMonsterIdFromSpawnEntry
|
|
|
|
arm_func_start SetMonsterId
|
|
SetMonsterId: ; 0x020544A0
|
|
strh r1, [r0, #6]
|
|
bx lr
|
|
arm_func_end SetMonsterId
|
|
|
|
arm_func_start SetMonsterLevelAndId
|
|
SetMonsterLevelAndId: ; 0x020544A8
|
|
mov r1, r1, lsl #9
|
|
strh r1, [r0]
|
|
strh r2, [r0, #6]
|
|
bx lr
|
|
arm_func_end SetMonsterLevelAndId
|
|
|
|
arm_func_start GetMonsterLevelFromSpawnEntry
|
|
GetMonsterLevelFromSpawnEntry: ; 0x020544B8
|
|
ldrh r0, [r0]
|
|
mov r0, r0, asr #9
|
|
and r0, r0, #0x7f
|
|
bx lr
|
|
arm_func_end GetMonsterLevelFromSpawnEntry
|
|
|
|
arm_func_start ApplyLevelUpBoostsToGroundMonster
|
|
ApplyLevelUpBoostsToGroundMonster: ; 0x020544C8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x4c
|
|
mov sl, r0
|
|
ldrb r0, [sl]
|
|
mov sb, r1
|
|
mov fp, r2
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _020546DC
|
|
ldrb r0, [sl, #1]
|
|
add r6, r0, #1
|
|
b _020546D4
|
|
_02054500:
|
|
mov r0, sl
|
|
bl sub_020546E8
|
|
ldrsh r0, [sl, #4]
|
|
bl FemaleToMaleForm
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
str r1, [sp, #4]
|
|
mov r1, r0
|
|
ldrb r2, [sl, #1]
|
|
ldr r3, _020546E4 ; =0x000003E7
|
|
add r0, sp, #0x2a
|
|
bl sub_02053904
|
|
str r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _020546D0
|
|
mov r8, #0
|
|
add r5, sl, #0x22
|
|
add r4, sp, #0xc
|
|
b _020546C4
|
|
_0205454C:
|
|
mov r1, #0
|
|
mov r3, r8, lsl #1
|
|
add r2, sp, #0x2a
|
|
mov r0, r1
|
|
ldrh r3, [r2, r3]
|
|
b _02054598
|
|
_02054564:
|
|
mov r2, #6
|
|
mla r7, r0, r2, sl
|
|
ldrb r2, [r7, #0x22]
|
|
tst r2, #1
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
tst r2, #0xff
|
|
beq _02054594
|
|
ldrh r2, [r7, #0x24]
|
|
cmp r2, r3
|
|
moveq r1, #1
|
|
beq _020545A0
|
|
_02054594:
|
|
add r0, r0, #1
|
|
_02054598:
|
|
cmp r0, #4
|
|
blt _02054564
|
|
_020545A0:
|
|
cmp r1, #0
|
|
bne _020546C0
|
|
mov r7, #0
|
|
b _020545F0
|
|
_020545B0:
|
|
mov r0, #6
|
|
mul r1, r7, r0
|
|
add r0, sl, r1
|
|
ldrb r0, [r0, #0x22]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _020545EC
|
|
add r0, r5, r1
|
|
mov r2, r8, lsl #1
|
|
add r1, sp, #0x2a
|
|
ldrh r1, [r1, r2]
|
|
bl GetInfoMoveGround
|
|
b _020545F8
|
|
_020545EC:
|
|
add r7, r7, #1
|
|
_020545F0:
|
|
cmp r7, #4
|
|
blt _020545B0
|
|
_020545F8:
|
|
cmp fp, #0
|
|
beq _020546C0
|
|
cmp r7, #4
|
|
bne _020546C0
|
|
mov r1, r8, lsl #1
|
|
add r0, sp, #0x2a
|
|
mov r7, #0
|
|
ldrh r1, [r0, r1]
|
|
mov r3, r7
|
|
_0205461C:
|
|
mov r0, #6
|
|
mul lr, r3, r0
|
|
add ip, sl, lr
|
|
ldrb r0, [ip, #0x22]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02054660
|
|
add r2, r4, lr
|
|
ldrh r0, [ip, #0x22]
|
|
add r7, r7, #1
|
|
strh r0, [r4, lr]
|
|
ldrh r0, [ip, #0x24]
|
|
strh r0, [r2, #2]
|
|
ldrh r0, [ip, #0x26]
|
|
strh r0, [r2, #4]
|
|
_02054660:
|
|
add r3, r3, #1
|
|
cmp r3, #4
|
|
blt _0205461C
|
|
mov r0, #6
|
|
mla r0, r3, r0, r4
|
|
bl GetInfoMoveGround
|
|
mov r0, r4
|
|
add r1, r7, #1
|
|
bl sub_02015090
|
|
mov r1, #0
|
|
b _020546B8
|
|
_0205468C:
|
|
mov r0, #6
|
|
mul r2, r1, r0
|
|
add r0, sl, r2
|
|
add r3, r4, r2
|
|
ldrh r2, [r4, r2]
|
|
add r1, r1, #1
|
|
strh r2, [r0, #0x22]
|
|
ldrh r2, [r3, #2]
|
|
strh r2, [r0, #0x24]
|
|
ldrh r2, [r3, #4]
|
|
strh r2, [r0, #0x26]
|
|
_020546B8:
|
|
cmp r1, r7
|
|
blt _0205468C
|
|
_020546C0:
|
|
add r8, r8, #1
|
|
_020546C4:
|
|
ldr r0, [sp, #8]
|
|
cmp r8, r0
|
|
blt _0205454C
|
|
_020546D0:
|
|
add r6, r6, #1
|
|
_020546D4:
|
|
cmp r6, sb
|
|
ble _02054500
|
|
_020546DC:
|
|
add sp, sp, #0x4c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_020546E4: .word 0x000003E7
|
|
arm_func_end ApplyLevelUpBoostsToGroundMonster
|
|
|
|
arm_func_start sub_020546E8
|
|
sub_020546E8: ; 0x020546E8
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xc
|
|
mov r4, r0
|
|
ldrb r2, [r4, #1]
|
|
ldrsh r1, [r4, #4]
|
|
add r0, sp, #0
|
|
add r2, r2, #1
|
|
bl GetLvlUpEntry
|
|
ldrb r1, [r4, #1]
|
|
add r0, r4, #0xa
|
|
add r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
ldr r1, [sp]
|
|
str r1, [r4, #0x10]
|
|
ldrh r1, [sp, #4]
|
|
bl sub_02054FB8
|
|
ldrb r1, [sp, #6]
|
|
add r0, r4, #0xc
|
|
bl sub_02054FEC
|
|
ldrb r1, [sp, #7]
|
|
add r0, r4, #0xd
|
|
bl sub_02054FEC
|
|
ldrb r1, [sp, #8]
|
|
add r0, r4, #0xe
|
|
bl sub_02055020
|
|
ldrb r1, [sp, #9]
|
|
add r0, r4, #0xf
|
|
bl sub_02055020
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_020546E8
|
|
|
|
arm_func_start GetMonsterGenderVeneer
|
|
GetMonsterGenderVeneer: ; 0x02054760
|
|
ldr ip, _02054768 ; =GetMonsterGender
|
|
bx ip
|
|
.align 2, 0
|
|
_02054768: .word GetMonsterGender
|
|
arm_func_end GetMonsterGenderVeneer
|
|
|
|
arm_func_start IsMonsterValid
|
|
IsMonsterValid: ; 0x0205476C
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #0
|
|
ble _02054798
|
|
ldr r1, _020547C0 ; =0x00000229
|
|
cmp r0, r1
|
|
blt _0205478C
|
|
cmp r0, #0x258
|
|
ble _02054798
|
|
_0205478C:
|
|
ldr r1, _020547C4 ; =0x00000481
|
|
cmp r0, r1
|
|
blt _020547A0
|
|
_02054798:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
_020547A0:
|
|
cmp r0, #0x258
|
|
blt _020547B8
|
|
bl GetMonsterGender
|
|
cmp r0, #2
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
_020547B8:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020547C0: .word 0x00000229
|
|
_020547C4: .word 0x00000481
|
|
arm_func_end IsMonsterValid
|
|
|
|
arm_func_start sub_020547C8
|
|
sub_020547C8: ; 0x020547C8
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
arm_func_end sub_020547C8
|
|
|
|
arm_func_start sub_020547D8
|
|
sub_020547D8: ; 0x020547D8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r4, #4]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020547D8
|
|
|
|
arm_func_start sub_02054804
|
|
sub_02054804: ; 0x02054804
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _02054820 ; =_020A3248
|
|
mov r1, #0
|
|
ldr r2, [r2, #4]
|
|
str r2, [sp]
|
|
blx r2
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02054820: .word _020A3248
|
|
arm_func_end sub_02054804
|
|
|
|
arm_func_start sub_02054824
|
|
sub_02054824: ; 0x02054824
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _02054840 ; =_020A3248
|
|
mov r1, #1
|
|
ldr r2, [r2]
|
|
str r2, [sp]
|
|
blx r2
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02054840: .word _020A3248
|
|
arm_func_end sub_02054824
|
|
|
|
arm_func_start sub_02054844
|
|
sub_02054844: ; 0x02054844
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xd0
|
|
mov r3, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r6, r3
|
|
add r2, sp, #0x80
|
|
_02054860:
|
|
add r0, r3, #1
|
|
mov r0, r0, lsl #0x10
|
|
str r6, [r2, r3, lsl #3]
|
|
add r1, r2, r3, lsl #3
|
|
mov r3, r0, asr #0x10
|
|
str r6, [r1, #4]
|
|
cmp r3, #0xa
|
|
blt _02054860
|
|
ldr fp, _02054A50 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r7, r6
|
|
add r5, sp, #0x80
|
|
mov r4, #1
|
|
_02054890:
|
|
mov r0, r7
|
|
bl IsValidTeamMember
|
|
cmp r0, #0
|
|
beq _0205493C
|
|
cmp r8, #0
|
|
beq _020548C4
|
|
ldr r1, [fp]
|
|
mov r0, #0x44
|
|
smlabb r0, r7, r0, r1
|
|
ldrsh r0, [r0, #4]
|
|
bl IsShaymin
|
|
cmp r0, #0
|
|
bne _0205493C
|
|
_020548C4:
|
|
ldr r2, [fp]
|
|
mov r0, #0x44
|
|
smlabb r0, r7, r0, r2
|
|
ldrsh r0, [r0, #4]
|
|
mov r1, #1
|
|
bl GetKeyM2NSwitch
|
|
mov r1, r0, asr #5
|
|
add r1, r0, r1, lsr #26
|
|
mov lr, r1, asr #6
|
|
mov r2, r0, lsr #0x1f
|
|
rsb r0, r2, r0, lsl #26
|
|
add r0, r2, r0, ror #26
|
|
mov r1, #0
|
|
add r2, r5, lr, lsl #3
|
|
mov r1, r1, lsl r0
|
|
rsb sl, r0, #0x20
|
|
orr r1, r1, r4, lsr sl
|
|
sub sl, r0, #0x20
|
|
ldr ip, [r5, lr, lsl #3]
|
|
ldr r3, [r2, #4]
|
|
orr r1, r1, r4, lsl sl
|
|
orr r1, r3, r1
|
|
orr r0, ip, r4, lsl r0
|
|
stmia r2, {r0, r1}
|
|
ldr r0, [r5, lr, lsl #3]
|
|
cmp r3, r1
|
|
cmpeq ip, r0
|
|
addne r0, r6, #1
|
|
movne r0, r0, lsl #0x10
|
|
movne r6, r0, asr #0x10
|
|
_0205493C:
|
|
add r0, r7, #1
|
|
mov r1, r0, lsl #0x10
|
|
ldr r0, _02054A54 ; =0x0000022B
|
|
mov r7, r1, asr #0x10
|
|
cmp r0, r1, asr #16
|
|
bgt _02054890
|
|
strh r6, [sb]
|
|
mov r0, r6, lsl #1
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
str r0, [sb, #4]
|
|
ldr r0, _02054A58 ; =_020A32F8
|
|
bl Debug_Print0
|
|
mov r8, #0
|
|
mov sl, r8
|
|
mov r7, #1
|
|
mov r5, r8
|
|
add fp, sp, #0x80
|
|
mov r4, r8
|
|
b _02054A40
|
|
_0205498C:
|
|
mov r1, sl, lsr #0x1f
|
|
rsb r0, r1, sl, lsl #26
|
|
add r2, r1, r0, ror #26
|
|
mov r0, sl, asr #5
|
|
add r0, sl, r0, lsr #26
|
|
mov r1, r0, asr #6
|
|
add r0, fp, r1, lsl #3
|
|
ldr r1, [fp, r1, lsl #3]
|
|
mov r3, r5, lsl r2
|
|
rsb ip, r2, #0x20
|
|
and r1, r1, r7, lsl r2
|
|
orr r3, r3, r7, lsr ip
|
|
sub r2, r2, #0x20
|
|
ldr r0, [r0, #4]
|
|
orr r3, r3, r7, lsl r2
|
|
and r2, r3, r0
|
|
mov r0, #0
|
|
cmp r2, r0
|
|
cmpeq r1, r4
|
|
beq _02054A34
|
|
mov r0, sl
|
|
mov r1, r7
|
|
bl GetKeyN2MSwitch
|
|
ldr r1, [sb, #4]
|
|
mov r2, r8, lsl #1
|
|
strh r0, [r1, r2]
|
|
ldr r1, [sb, #4]
|
|
add r0, sp, #0
|
|
ldrsh r1, [r1, r2]
|
|
bl GetNameRaw
|
|
ldr r3, [sb, #4]
|
|
mov r2, r8, lsl #1
|
|
ldrsh r2, [r3, r2]
|
|
ldr r0, _02054A5C ; =_020A3330
|
|
mov r1, r8
|
|
add r3, sp, #0
|
|
bl Debug_Print0
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r6, r0, asr #16
|
|
mov r8, r0, asr #0x10
|
|
ble _02054A48
|
|
_02054A34:
|
|
add r0, sl, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sl, r0, asr #0x10
|
|
_02054A40:
|
|
cmp sl, #0x280
|
|
blt _0205498C
|
|
_02054A48:
|
|
add sp, sp, #0xd0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02054A50: .word TEAM_MEMBER_TABLE_PTR
|
|
_02054A54: .word 0x0000022B
|
|
_02054A58: .word _020A32F8
|
|
_02054A5C: .word _020A3330
|
|
arm_func_end sub_02054844
|
|
|
|
arm_func_start SprintfStatic__02054A60
|
|
SprintfStatic__02054A60: ; 0x02054A60
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
add r2, sp, #0xc
|
|
bic r2, r2, #3
|
|
ldr r1, [sp, #0xc]
|
|
add r2, r2, #4
|
|
bl vsprintf
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end SprintfStatic__02054A60
|