mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-26 00:26:19 -05:00
4865 lines
89 KiB
ArmAsm
4865 lines
89 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main_02051098.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start sub_02051098
|
|
sub_02051098: ; 0x02051098
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r2, #0x10
|
|
bl CopyBitsFrom
|
|
mov r0, r5
|
|
add r1, r4, #2
|
|
mov r2, #0x10
|
|
bl CopyBitsFrom
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02051098
|
|
|
|
arm_func_start sub_020510C0
|
|
sub_020510C0: ; 0x020510C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r2, #0x10
|
|
bl CopyBitsTo
|
|
mov r0, r5
|
|
add r1, r4, #2
|
|
mov r2, #0x10
|
|
bl CopyBitsTo
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_020510C0
|
|
|
|
arm_func_start sub_020510E8
|
|
sub_020510E8: ; 0x020510E8
|
|
ldr r3, _02051128 ; =_020AFF88
|
|
mov ip, #1
|
|
str r0, [r3]
|
|
ldr r0, _0205112C ; =0x6C078965
|
|
b _02051114
|
|
_020510FC:
|
|
add r1, r3, ip, lsl #2
|
|
ldr r1, [r1, #-4]
|
|
eor r1, r1, r1, lsr #30
|
|
mla r2, r1, r0, ip
|
|
str r2, [r3, ip, lsl #2]
|
|
add ip, ip, #1
|
|
_02051114:
|
|
cmp ip, #0x270
|
|
blt _020510FC
|
|
ldr r0, _02051130 ; =_020AFF7C
|
|
str ip, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02051128: .word _020AFF88
|
|
_0205112C: .word 0x6C078965
|
|
_02051130: .word _020AFF7C
|
|
arm_func_end sub_020510E8
|
|
|
|
arm_func_start sub_02051134
|
|
sub_02051134: ; 0x02051134
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _0205126C ; =_020AFF7C
|
|
ldr r1, [r0]
|
|
cmp r1, #0x270
|
|
blt _02051230
|
|
ldr r0, _02051270 ; =0x00000271
|
|
cmp r1, r0
|
|
bne _0205115C
|
|
add r0, r0, #0x1300
|
|
bl sub_020510E8
|
|
_0205115C:
|
|
ldr ip, _02051274 ; =_020AFF88
|
|
ldr r2, _02051278 ; =_020AFF80
|
|
mov r0, #0
|
|
_02051168:
|
|
add r3, ip, r0, lsl #2
|
|
ldr r4, [ip, r0, lsl #2]
|
|
ldr r1, [r3, #4]
|
|
and r4, r4, #0x80000000
|
|
bic r1, r1, #0x80000000
|
|
orr r4, r4, r1
|
|
and r1, r4, #1
|
|
ldr r3, [r3, #0x634]
|
|
ldr r1, [r2, r1, lsl #2]
|
|
eor r3, r3, r4, lsr #1
|
|
eor r1, r3, r1
|
|
str r1, [ip, r0, lsl #2]
|
|
add r0, r0, #1
|
|
cmp r0, #0xe3
|
|
blt _02051168
|
|
ldr r4, _02051274 ; =_020AFF88
|
|
ldr r3, _02051278 ; =_020AFF80
|
|
ldr r1, _0205127C ; =0x0000026F
|
|
b _020511E8
|
|
_020511B4:
|
|
add ip, r4, r0, lsl #2
|
|
ldr lr, [r4, r0, lsl #2]
|
|
ldr r2, [ip, #4]
|
|
and lr, lr, #0x80000000
|
|
bic r2, r2, #0x80000000
|
|
orr lr, lr, r2
|
|
and r2, lr, #1
|
|
ldr ip, [ip, #-0x38c]
|
|
ldr r2, [r3, r2, lsl #2]
|
|
eor ip, ip, lr, lsr #1
|
|
eor r2, ip, r2
|
|
str r2, [r4, r0, lsl #2]
|
|
add r0, r0, #1
|
|
_020511E8:
|
|
cmp r0, r1
|
|
blt _020511B4
|
|
ldr r1, _02051274 ; =_020AFF88
|
|
ldr r0, _02051278 ; =_020AFF80
|
|
ldr r3, [r1, #0x9bc]
|
|
ldr r2, [r1]
|
|
and r3, r3, #0x80000000
|
|
bic r2, r2, #0x80000000
|
|
orr ip, r3, r2
|
|
and r2, ip, #1
|
|
ldr r3, [r1, #0x630]
|
|
ldr r0, [r0, r2, lsl #2]
|
|
eor r2, r3, ip, lsr #1
|
|
eor r2, r2, r0
|
|
ldr r0, _0205126C ; =_020AFF7C
|
|
str r2, [r1, #0x9bc]
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
_02051230:
|
|
ldr r1, _0205126C ; =_020AFF7C
|
|
ldr r2, _02051274 ; =_020AFF88
|
|
ldr r3, [r1]
|
|
ldr r0, _02051280 ; =0x9D2C5680
|
|
ldr r2, [r2, r3, lsl #2]
|
|
add ip, r3, #1
|
|
eor r3, r2, r2, lsr #11
|
|
and r2, r0, r3, lsl #7
|
|
ldr r0, _02051284 ; =0xEFC60000
|
|
eor r2, r3, r2
|
|
and r0, r0, r2, lsl #15
|
|
eor r0, r2, r0
|
|
str ip, [r1]
|
|
eor r0, r0, r0, lsr #18
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0205126C: .word _020AFF7C
|
|
_02051270: .word 0x00000271
|
|
_02051274: .word _020AFF88
|
|
_02051278: .word _020AFF80
|
|
_0205127C: .word 0x0000026F
|
|
_02051280: .word 0x9D2C5680
|
|
_02051284: .word 0xEFC60000
|
|
arm_func_end sub_02051134
|
|
|
|
arm_func_start DungeonGoesUp
|
|
DungeonGoesUp: ; 0x02051288
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020512AC ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020512AC: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end DungeonGoesUp
|
|
|
|
arm_func_start GetTurnLimit
|
|
GetTurnLimit: ; 0x020512B0
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020512C4 ; =_020A0C6C
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_020512C4: .word _020A0C6C
|
|
arm_func_end GetTurnLimit
|
|
|
|
arm_func_start DoesNotSaveWhenEntering
|
|
DoesNotSaveWhenEntering: ; 0x020512C8
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020512EC ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x80
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020512EC: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end DoesNotSaveWhenEntering
|
|
|
|
arm_func_start TreasureBoxDropsEnabled
|
|
TreasureBoxDropsEnabled: ; 0x020512F0
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051314 ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x400
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02051314: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end TreasureBoxDropsEnabled
|
|
|
|
arm_func_start IsLevelResetDungeon
|
|
IsLevelResetDungeon: ; 0x02051318
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _0205133C ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x10
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0205133C: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsLevelResetDungeon
|
|
|
|
arm_func_start GetMaxItemsAllowed
|
|
GetMaxItemsAllowed: ; 0x02051340
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051354 ; =_020A0C69
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02051354: .word _020A0C69
|
|
arm_func_end GetMaxItemsAllowed
|
|
|
|
arm_func_start IsMoneyAllowed
|
|
IsMoneyAllowed: ; 0x02051358
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _0205137C ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x20
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0205137C: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsMoneyAllowed
|
|
|
|
arm_func_start GetMaxRescueAttempts
|
|
GetMaxRescueAttempts: ; 0x02051380
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051394 ; =_020A0C68
|
|
ldrsb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02051394: .word _020A0C68
|
|
arm_func_end GetMaxRescueAttempts
|
|
|
|
arm_func_start IsRecruitingAllowed
|
|
IsRecruitingAllowed: ; 0x02051398
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020513BC ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020513BC: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsRecruitingAllowed
|
|
|
|
arm_func_start GetLeaderChangeFlag
|
|
GetLeaderChangeFlag: ; 0x020513C0
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020513E4 ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x40
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020513E4: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end GetLeaderChangeFlag
|
|
|
|
arm_func_start GetRandomMovementChance
|
|
GetRandomMovementChance: ; 0x020513E8
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _020513FC ; =_020A0C6E
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_020513FC: .word _020A0C6E
|
|
arm_func_end GetRandomMovementChance
|
|
|
|
arm_func_start CanEnemyEvolve
|
|
CanEnemyEvolve: ; 0x02051400
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051424 ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #2
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02051424: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end CanEnemyEvolve
|
|
|
|
arm_func_start GetMaxMembersAllowed
|
|
GetMaxMembersAllowed: ; 0x02051428
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _0205143C ; =_020A0C6A
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0205143C: .word _020A0C6A
|
|
arm_func_end GetMaxMembersAllowed
|
|
|
|
arm_func_start IsIqEnabled
|
|
IsIqEnabled: ; 0x02051440
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051464 ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x100
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02051464: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsIqEnabled
|
|
|
|
arm_func_start IsTrapInvisibleWhenAttacking
|
|
IsTrapInvisibleWhenAttacking: ; 0x02051468
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _0205148C ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #0x200
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0205148C: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsTrapInvisibleWhenAttacking
|
|
|
|
arm_func_start JoinedAtRangeCheck
|
|
JoinedAtRangeCheck: ; 0x02051490
|
|
cmp r0, #0xd9
|
|
blo _020514A4
|
|
cmp r0, #0xe4
|
|
movlo r0, #1
|
|
blo _020514A8
|
|
_020514A4:
|
|
mov r0, #0
|
|
_020514A8:
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end JoinedAtRangeCheck
|
|
|
|
arm_func_start IsDojoDungeon
|
|
IsDojoDungeon: ; 0x020514B0
|
|
cmp r0, #0xb4
|
|
blo _020514C4
|
|
cmp r0, #0xd3
|
|
movls r0, #1
|
|
bxls lr
|
|
_020514C4:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end IsDojoDungeon
|
|
|
|
arm_func_start IsFutureDungeon
|
|
IsFutureDungeon: ; 0x020514CC
|
|
cmp r0, #0x1b
|
|
blo _020514E0
|
|
cmp r0, #0x21
|
|
movls r0, #1
|
|
bxls lr
|
|
_020514E0:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end IsFutureDungeon
|
|
|
|
arm_func_start IsSpecialEpisodeDungeon
|
|
IsSpecialEpisodeDungeon: ; 0x020514E8
|
|
cmp r0, #0x7b
|
|
blo _020514FC
|
|
cmp r0, #0xa4
|
|
movls r0, #1
|
|
bxls lr
|
|
_020514FC:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end IsSpecialEpisodeDungeon
|
|
|
|
arm_func_start RetrieveFromItemList1
|
|
RetrieveFromItemList1: ; 0x02051504
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
ldr r0, _02051564 ; =0x0000270F
|
|
mov r6, r1
|
|
bl RandIntSafe
|
|
mov r4, r0
|
|
ldr r0, _02051564 ; =0x0000270F
|
|
bl RandIntSafe
|
|
mov r5, r0
|
|
ldrb r0, [r7]
|
|
cmp r0, #0xb4
|
|
cmphs r0, #0xd3
|
|
movhs r0, #0x55
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
|
|
bl GetNbFloorsPlusOne
|
|
ldrb r1, [r7, #1]
|
|
cmp r1, r0
|
|
movhs r0, #0x55
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r0, r6
|
|
mov r1, r4
|
|
mov r2, r5
|
|
bl GetItemIdFromList
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02051564: .word 0x0000270F
|
|
arm_func_end RetrieveFromItemList1
|
|
|
|
arm_func_start IsForbiddenFloor
|
|
IsForbiddenFloor: ; 0x02051568
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
bl DungeonFloorToGroupFloor
|
|
ldrb ip, [sp]
|
|
ldrb lr, [sp, #1]
|
|
ldr r1, _020515C0 ; =MISSION_FLOORS_FORBIDDEN
|
|
mov r3, #0
|
|
_02051588:
|
|
ldrb r0, [r1, r3, lsl #1]
|
|
mov r2, r3, lsl #1
|
|
cmp r0, #0x64
|
|
beq _020515B8
|
|
cmp ip, r0
|
|
addeq r0, r1, r2
|
|
ldreqb r0, [r0, #1]
|
|
cmpeq lr, r0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, pc}
|
|
add r3, r3, #1
|
|
b _02051588
|
|
_020515B8:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020515C0: .word MISSION_FLOORS_FORBIDDEN
|
|
arm_func_end IsForbiddenFloor
|
|
|
|
arm_func_start sub_020515C4
|
|
sub_020515C4: ; 0x020515C4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r2, #8
|
|
bl CopyBitsTo
|
|
mov r0, r5
|
|
add r1, r4, #1
|
|
mov r2, #8
|
|
bl CopyBitsTo
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_020515C4
|
|
|
|
arm_func_start Copy16BitsFrom
|
|
Copy16BitsFrom: ; 0x020515EC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r3, #0
|
|
strb r3, [r4]
|
|
mov r5, r0
|
|
mov r2, #8
|
|
strb r3, [r4, #1]
|
|
bl CopyBitsFrom
|
|
mov r0, r5
|
|
add r1, r4, #1
|
|
mov r2, #8
|
|
bl CopyBitsFrom
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end Copy16BitsFrom
|
|
|
|
arm_func_start sub_02051620
|
|
sub_02051620: ; 0x02051620
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r2, #7
|
|
bl CopyBitsTo
|
|
mov r0, r5
|
|
add r1, r4, #1
|
|
mov r2, #7
|
|
bl CopyBitsTo
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02051620
|
|
|
|
arm_func_start sub_02051648
|
|
sub_02051648: ; 0x02051648
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r3, #0
|
|
strb r3, [r4]
|
|
mov r5, r0
|
|
mov r2, #7
|
|
strb r3, [r4, #1]
|
|
bl CopyBitsFrom
|
|
mov r0, r5
|
|
add r1, r4, #1
|
|
mov r2, #7
|
|
bl CopyBitsFrom
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02051648
|
|
|
|
arm_func_start RetrieveFromItemList2
|
|
RetrieveFromItemList2: ; 0x0205167C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
ldr r0, _020516D8 ; =0x0000270F
|
|
mov r6, r1
|
|
bl RandIntSafe
|
|
mov r5, r0
|
|
ldr r0, _020516D8 ; =0x0000270F
|
|
bl RandIntSafe
|
|
mov r4, r0
|
|
ldrb r0, [r7]
|
|
cmp r0, #0xb4
|
|
movhs r0, #0x55
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
|
|
bl GetNbFloorsPlusOne
|
|
ldrb r1, [r7, #1]
|
|
cmp r1, r0
|
|
movhs r0, #0x55
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl GetItemIdFromList
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_020516D8: .word 0x0000270F
|
|
arm_func_end RetrieveFromItemList2
|
|
|
|
arm_func_start IsInvalidForMission
|
|
IsInvalidForMission: ; 0x020516DC
|
|
cmp r0, #0xb4
|
|
movhs r0, #1
|
|
bxhs lr
|
|
mov r2, #0
|
|
ldr r1, _02051718 ; =_020A1864
|
|
b _02051704
|
|
_020516F4:
|
|
cmp r3, r0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add r2, r2, #1
|
|
_02051704:
|
|
ldrb r3, [r1, r2]
|
|
cmp r3, #0xb4
|
|
bne _020516F4
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02051718: .word _020A1864
|
|
arm_func_end IsInvalidForMission
|
|
|
|
arm_func_start IsExpEnabledInDungeon
|
|
IsExpEnabledInDungeon: ; 0x0205171C
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02051740 ; =DUNGEON_RESTRICTIONS
|
|
ldr r0, [r0, r1]
|
|
tst r0, #4
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02051740: .word DUNGEON_RESTRICTIONS
|
|
arm_func_end IsExpEnabledInDungeon
|
|
|
|
arm_func_start IsSkyExclusiveDungeon
|
|
IsSkyExclusiveDungeon: ; 0x02051744
|
|
cmp r0, #0x67
|
|
blo _02051758
|
|
cmp r0, #0xb0
|
|
movls r0, #1
|
|
bxls lr
|
|
_02051758:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end IsSkyExclusiveDungeon
|
|
|
|
arm_func_start JoinedAtRangeCheck2
|
|
JoinedAtRangeCheck2: ; 0x02051760
|
|
cmp r0, #0xd7
|
|
beq _02051778
|
|
cmp r0, #0xec
|
|
blo _02051780
|
|
cmp r0, #0xf0
|
|
bhi _02051780
|
|
_02051778:
|
|
mov r0, #1
|
|
bx lr
|
|
_02051780:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end JoinedAtRangeCheck2
|
|
|
|
arm_func_start sub_02051788
|
|
sub_02051788: ; 0x02051788
|
|
ldr r1, _02051794 ; =_020A20B1
|
|
ldrb r0, [r1, r0, lsl #1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02051794: .word _020A20B1
|
|
arm_func_end sub_02051788
|
|
|
|
arm_func_start sub_02051798
|
|
sub_02051798: ; 0x02051798
|
|
mov ip, #0
|
|
ldr r2, _020517D0 ; =ARM9_UNKNOWN_TABLE__NA_20A20B0
|
|
b _020517C0
|
|
_020517A4:
|
|
add r1, r2, ip, lsl #1
|
|
ldrb r1, [r1, #1]
|
|
mov r3, ip, lsl #1
|
|
cmp r0, r1
|
|
ldreqb r0, [r2, r3]
|
|
bxeq lr
|
|
add ip, ip, #1
|
|
_020517C0:
|
|
cmp ip, #0x100
|
|
blt _020517A4
|
|
mov r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020517D0: .word ARM9_UNKNOWN_TABLE__NA_20A20B0
|
|
arm_func_end sub_02051798
|
|
|
|
arm_func_start GetBagCapacity
|
|
GetBagCapacity: ; 0x020517D4
|
|
ldr r1, _020517E0 ; =BAG_CAPACITY_TABLE
|
|
ldr r0, [r1, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020517E0: .word BAG_CAPACITY_TABLE
|
|
arm_func_end GetBagCapacity
|
|
|
|
arm_func_start GetBagCapacitySpecialEpisode
|
|
GetBagCapacitySpecialEpisode: ; 0x020517E4
|
|
ldr r1, _020517F0 ; =BAG_CAPACITY_TABLE_SPECIAL_EPISODES
|
|
ldr r0, [r1, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020517F0: .word BAG_CAPACITY_TABLE_SPECIAL_EPISODES
|
|
arm_func_end GetBagCapacitySpecialEpisode
|
|
|
|
arm_func_start GetRankUpEntry
|
|
GetRankUpEntry: ; 0x020517F4
|
|
ldr r1, _02051800 ; =RANK_UP_TABLE
|
|
add r0, r1, r0, lsl #4
|
|
bx lr
|
|
.align 2, 0
|
|
_02051800: .word RANK_UP_TABLE
|
|
arm_func_end GetRankUpEntry
|
|
|
|
arm_func_start sub_02051804
|
|
sub_02051804: ; 0x02051804
|
|
stmdb sp!, {r4, lr}
|
|
add ip, r0, #0x100
|
|
ldrsh r4, [ip, #0x40]
|
|
mov ip, #0x14
|
|
ldr lr, [sp, #8]
|
|
smlabb r4, r4, ip, r0
|
|
cmp lr, #1
|
|
moveq r1, #0
|
|
stmeqia r4, {r1, r2}
|
|
streq r1, [r4, #8]
|
|
strne r3, [r4]
|
|
strne r2, [r4, #4]
|
|
strne r1, [r4, #8]
|
|
ldrneh r1, [sp, #0xc]
|
|
str lr, [r4, #0xc]
|
|
add r0, r0, #0x100
|
|
str r1, [r4, #0x10]
|
|
ldrsh r1, [r0, #0x40]
|
|
add r1, r1, #1
|
|
strh r1, [r0, #0x40]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02051804
|
|
|
|
arm_func_start sub_02051858
|
|
sub_02051858: ; 0x02051858
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r0, #0x1c
|
|
mov r1, #0
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl MemAlloc
|
|
str r0, [r7, #8]
|
|
str r6, [r7, #0xc]
|
|
mov r0, #1
|
|
strb r0, [r7, #0x16]
|
|
str r5, [r7]
|
|
str r4, [r7, #4]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end sub_02051858
|
|
|
|
arm_func_start sub_02051894
|
|
sub_02051894: ; 0x02051894
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldrb r0, [r4, #0x16]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, [r4, #8]
|
|
bl MemFree
|
|
mov r0, #0
|
|
strb r0, [r4, #0x16]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02051894
|
|
|
|
arm_func_start sub_020518BC
|
|
sub_020518BC: ; 0x020518BC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
cmp r2, #0
|
|
mov r0, #0
|
|
bne _02051934
|
|
cmp r1, #1
|
|
bne _02051904
|
|
ldr r1, _020519B0 ; =0x06018000
|
|
ldr r2, _020519B4 ; =0x0400001C
|
|
str r1, [r4, #0x10]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #8]
|
|
sub r3, r1, #0x9000
|
|
mov r1, #1
|
|
bl sub_0200B2C4
|
|
mov r0, #1
|
|
b _02051990
|
|
_02051904:
|
|
cmp r1, #0
|
|
bne _02051990
|
|
ldr r1, _020519B8 ; =0x06010000
|
|
ldr r2, _020519BC ; =0x04000018
|
|
str r1, [r4, #0x10]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #8]
|
|
sub r3, r1, #0x2000
|
|
mov r1, #1
|
|
bl sub_0200B2C4
|
|
mov r0, #1
|
|
b _02051990
|
|
_02051934:
|
|
cmp r1, #1
|
|
bne _02051964
|
|
ldr r1, _020519C0 ; =0x06218000
|
|
ldr r2, _020519C4 ; =0x0400101C
|
|
str r1, [r4, #0x10]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #8]
|
|
sub r3, r1, #0x9000
|
|
mov r1, #1
|
|
bl sub_0200B2C4
|
|
mov r0, #1
|
|
b _02051990
|
|
_02051964:
|
|
cmp r1, #0
|
|
bne _02051990
|
|
ldr r1, _020519C8 ; =0x06210000
|
|
ldr r2, _020519CC ; =0x04001018
|
|
str r1, [r4, #0x10]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #8]
|
|
sub r3, r1, #0x2000
|
|
mov r1, #1
|
|
bl sub_0200B2C4
|
|
mov r0, #1
|
|
_02051990:
|
|
cmp r0, #0
|
|
beq _020519A8
|
|
ldr r0, [r4, #8]
|
|
bl sub_0200B3D4
|
|
ldr r0, [r4, #8]
|
|
bl sub_0200B330
|
|
_020519A8:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_020519B0: .word 0x06018000
|
|
_020519B4: .word 0x0400001C
|
|
_020519B8: .word 0x06010000
|
|
_020519BC: .word 0x04000018
|
|
_020519C0: .word 0x06218000
|
|
_020519C4: .word 0x0400101C
|
|
_020519C8: .word 0x06210000
|
|
_020519CC: .word 0x04001018
|
|
arm_func_end sub_020518BC
|
|
|
|
arm_func_start sub_020519D0
|
|
sub_020519D0: ; 0x020519D0
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x21c
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _02051B3C ; =_020B09B0
|
|
mov r1, #0x21c
|
|
str r0, [r2]
|
|
bl MemZero
|
|
mov r1, #0
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
str r1, [sp]
|
|
ldr r0, [r0]
|
|
mov r2, #0x100
|
|
add r0, r0, #0x1a4
|
|
mov r3, #0x5000000
|
|
bl sub_0200A124
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r3, #0x100
|
|
str r2, [sp]
|
|
add r0, r1, #0x1cc
|
|
add r1, r1, #0x1a4
|
|
bl sub_0200A478
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #0x100
|
|
ldr r0, [r0]
|
|
ldr r3, _02051B40 ; =0x05000400
|
|
add r0, r0, #0x1b8
|
|
bl sub_0200A124
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r3, #0x100
|
|
str r2, [sp]
|
|
add r0, r1, #0x1f4
|
|
add r1, r1, #0x1b8
|
|
bl sub_0200A478
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #0
|
|
ldr r0, [r0]
|
|
mov r3, r2
|
|
add r1, r0, #0x1cc
|
|
bl sub_02051858
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
mov r3, #0
|
|
add r0, r1, #0x18
|
|
add r1, r1, #0x1cc
|
|
bl sub_02051858
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r2, r1
|
|
bl sub_020518BC
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x18
|
|
bl sub_020518BC
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x30
|
|
add r1, r1, #0x1f4
|
|
mov r2, #0
|
|
mov r3, #1
|
|
bl sub_02051858
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
mov r3, r2
|
|
add r0, r1, #0x48
|
|
add r1, r1, #0x1f4
|
|
bl sub_02051858
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
add r0, r0, #0x30
|
|
bl sub_020518BC
|
|
ldr r0, _02051B3C ; =_020B09B0
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, r1
|
|
add r0, r0, #0x48
|
|
bl sub_020518BC
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051B3C: .word _020B09B0
|
|
_02051B40: .word 0x05000400
|
|
arm_func_end sub_020519D0
|
|
|
|
arm_func_start sub_02051B44
|
|
sub_02051B44: ; 0x02051B44
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
bl sub_02051894
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x18
|
|
bl sub_02051894
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
bl sub_0200B314
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x20]
|
|
bl sub_0200B314
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x30
|
|
bl sub_02051894
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x48
|
|
bl sub_02051894
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x38]
|
|
bl sub_0200B314
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x50]
|
|
bl sub_0200B314
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1cc
|
|
bl sub_0200A4C4
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1f4
|
|
bl sub_0200A4C4
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1a4
|
|
bl sub_0200A158
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1b8
|
|
bl sub_0200A158
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _02051C20 ; =_020B09B0
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051C20: .word _020B09B0
|
|
arm_func_end sub_02051B44
|
|
|
|
arm_func_start sub_02051C24
|
|
sub_02051C24: ; 0x02051C24
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, #8
|
|
bl sub_0200302C
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
bl sub_0200B340
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x38]
|
|
bl sub_0200B340
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x20]
|
|
bl sub_0200B340
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x50]
|
|
bl sub_0200B340
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1cc
|
|
bl sub_0200A510
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1f4
|
|
bl sub_0200A510
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1a4
|
|
bl sub_0200A184
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1b8
|
|
bl sub_0200A184
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
mov r6, #0
|
|
ldr r0, [r0]
|
|
mov r8, r6
|
|
add r4, r0, #0x60
|
|
add r0, r4, #0x100
|
|
ldrsh r5, [r0, #0x40]
|
|
mov r7, #0x14
|
|
b _02051D3C
|
|
_02051CE4:
|
|
smlabb r2, r6, r7, r4
|
|
ldr r0, [r2, #4]
|
|
cmp r0, #0
|
|
beq _02051D20
|
|
ldr r1, [r2, #0xc]
|
|
cmp r1, #0
|
|
bne _02051D10
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r2]
|
|
bl ArrayCopy32
|
|
b _02051D30
|
|
_02051D10:
|
|
cmp r1, #1
|
|
bne _02051D30
|
|
bl MemFree
|
|
b _02051D30
|
|
_02051D20:
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r2]
|
|
mov r0, r8
|
|
bl ArrayFill32
|
|
_02051D30:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, asr #0x10
|
|
_02051D3C:
|
|
cmp r6, r5
|
|
blt _02051CE4
|
|
ldr r0, _02051D64 ; =_020B09B0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r0, #8
|
|
add r1, r1, #0x100
|
|
strh r2, [r1, #0xa0]
|
|
bl sub_020030FC
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02051D64: .word _020B09B0
|
|
arm_func_end sub_02051C24
|
|
|
|
arm_func_start sub_02051D68
|
|
sub_02051D68: ; 0x02051D68
|
|
ldr r2, _02051D84 ; =_020B09B0
|
|
mov r1, #0x28
|
|
ldr r2, [r2]
|
|
ldr ip, _02051D88 ; =sub_0200A504
|
|
add r2, r2, #0x1cc
|
|
mla r0, r1, r0, r2
|
|
bx ip
|
|
.align 2, 0
|
|
_02051D84: .word _020B09B0
|
|
_02051D88: .word sub_0200A504
|
|
arm_func_end sub_02051D68
|
|
|
|
arm_func_start sub_02051D8C
|
|
sub_02051D8C: ; 0x02051D8C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr ip, _02051DCC ; =_020B09B0
|
|
str r1, [sp, #4]
|
|
ldr ip, [ip]
|
|
ldr lr, [sp, #0x10]
|
|
mov r1, #0x30
|
|
mla ip, lr, r1, ip
|
|
mov r1, #0x18
|
|
mla r1, r3, r1, ip
|
|
str r0, [sp]
|
|
ldr r0, [r1, #8]
|
|
add r1, sp, #0
|
|
bl sub_0200B3FC
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051DCC: .word _020B09B0
|
|
arm_func_end sub_02051D8C
|
|
|
|
arm_func_start sub_02051DD0
|
|
sub_02051DD0: ; 0x02051DD0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _02051DF8 ; =_020B09B0
|
|
mov r2, #0x30
|
|
ldr ip, [r3]
|
|
mov r3, #0x18
|
|
mla r2, r1, r2, ip
|
|
mla r1, r0, r3, r2
|
|
ldr r0, [r1, #8]
|
|
bl sub_0200B3D4
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051DF8: .word _020B09B0
|
|
arm_func_end sub_02051DD0
|
|
|
|
arm_func_start sub_02051DFC
|
|
sub_02051DFC: ; 0x02051DFC
|
|
ldr r3, _02051E1C ; =_020B09B0
|
|
mov r2, #0x30
|
|
ldr ip, [r3]
|
|
mov r3, #0x18
|
|
mla r2, r1, r2, ip
|
|
mla r1, r0, r3, r2
|
|
ldr r0, [r1, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02051E1C: .word _020B09B0
|
|
arm_func_end sub_02051DFC
|
|
|
|
arm_func_start sub_02051E20
|
|
sub_02051E20: ; 0x02051E20
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr ip, _02051E5C ; =_020B09B0
|
|
str r1, [sp, #4]
|
|
ldr ip, [ip]
|
|
mov r1, #0x30
|
|
mla ip, r3, r1, ip
|
|
mov r1, #0x18
|
|
mla r1, r2, r1, ip
|
|
str r0, [sp]
|
|
ldr r0, [r1, #8]
|
|
add r1, sp, #0
|
|
bl sub_0200B3C0
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051E5C: .word _020B09B0
|
|
arm_func_end sub_02051E20
|
|
|
|
arm_func_start sub_02051E60
|
|
sub_02051E60: ; 0x02051E60
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _02051E88 ; =_020B09B0
|
|
mov r2, #0x30
|
|
ldr ip, [r3]
|
|
mov r3, #0x18
|
|
mla r2, r1, r2, ip
|
|
mla r1, r0, r3, r2
|
|
ldr r0, [r1, #8]
|
|
bl sub_0200B330
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051E88: .word _020B09B0
|
|
arm_func_end sub_02051E60
|
|
|
|
arm_func_start GetBgRegionArea
|
|
GetBgRegionArea: ; 0x02051E8C
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, _02051EB4 ; =_020B09B0
|
|
mov r3, #0x30
|
|
ldr lr, [ip]
|
|
mov ip, #0x18
|
|
mla r3, r2, r3, lr
|
|
mla r2, r1, ip, r3
|
|
ldr r1, [r2, #0x10]
|
|
add r0, r1, r0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051EB4: .word _020B09B0
|
|
arm_func_end GetBgRegionArea
|
|
|
|
arm_func_start sub_02051EB8
|
|
sub_02051EB8: ; 0x02051EB8
|
|
ldr r2, _02051ED0 ; =_020B09B0
|
|
mov r1, #0x14
|
|
ldr r2, [r2]
|
|
add r2, r2, #0x1a4
|
|
mla r0, r1, r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_02051ED0: .word _020B09B0
|
|
arm_func_end sub_02051EB8
|
|
|
|
arm_func_start sub_02051ED4
|
|
sub_02051ED4: ; 0x02051ED4
|
|
ldr r2, _02051EEC ; =_020B09B0
|
|
mov r1, #0x28
|
|
ldr r2, [r2]
|
|
add r2, r2, #0x1cc
|
|
mla r0, r1, r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_02051EEC: .word _020B09B0
|
|
arm_func_end sub_02051ED4
|
|
|
|
arm_func_start sub_02051EF0
|
|
sub_02051EF0: ; 0x02051EF0
|
|
stmdb sp!, {r3, lr}
|
|
cmp r3, #0
|
|
beq _02051F4C
|
|
ldrb lr, [r0]
|
|
mov ip, #0xff
|
|
ldrb lr, [r3, lr, lsl #2]
|
|
mul lr, r2, lr
|
|
mov lr, lr, lsr #8
|
|
strb lr, [sp]
|
|
ldrb lr, [r0, #1]
|
|
add lr, r3, lr, lsl #2
|
|
ldrb lr, [lr, #1]
|
|
mul lr, r2, lr
|
|
mov lr, lr, lsr #8
|
|
strb lr, [sp, #1]
|
|
ldrb r0, [r0, #2]
|
|
add r0, r3, r0, lsl #2
|
|
ldrb r0, [r0, #2]
|
|
mul r0, r2, r0
|
|
mov r0, r0, lsr #8
|
|
strb r0, [sp, #2]
|
|
strb ip, [sp, #3]
|
|
b _02051F84
|
|
_02051F4C:
|
|
ldrb ip, [r0]
|
|
mov r3, #0xff
|
|
mul lr, ip, r2
|
|
mov ip, lr, lsr #8
|
|
strb ip, [sp]
|
|
ldrb ip, [r0, #1]
|
|
mul lr, ip, r2
|
|
mov ip, lr, lsr #8
|
|
strb ip, [sp, #1]
|
|
ldrb r0, [r0, #2]
|
|
mul r2, r0, r2
|
|
mov r0, r2, lsr #8
|
|
strb r0, [sp, #2]
|
|
strb r3, [sp, #3]
|
|
_02051F84:
|
|
ldr r0, _02051FB0 ; =_020B09B0
|
|
mov r1, r1, lsl #0x10
|
|
ldr r0, [r0]
|
|
ldr r2, [sp, #8]
|
|
add r3, r0, #0x1cc
|
|
mov r0, #0x28
|
|
mla r0, r2, r0, r3
|
|
add r2, sp, #0
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A590
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051FB0: .word _020B09B0
|
|
arm_func_end sub_02051EF0
|
|
|
|
arm_func_start sub_02051FB4
|
|
sub_02051FB4: ; 0x02051FB4
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
str r3, [sp]
|
|
mov r3, #0
|
|
str r3, [sp, #4]
|
|
ldr ip, _02051FEC ; =_020B09B0
|
|
mov r3, r2
|
|
mov r2, r1
|
|
ldr ip, [ip]
|
|
mov r1, r0
|
|
add r0, ip, #0x60
|
|
bl sub_02051804
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02051FEC: .word _020B09B0
|
|
arm_func_end sub_02051FB4
|
|
|
|
arm_func_start sub_02051FF0
|
|
sub_02051FF0: ; 0x02051FF0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
mov r3, r0
|
|
mov r5, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl LoadFileFromRom
|
|
ldr r0, [sp]
|
|
bl GetAtSize
|
|
mov r4, r0
|
|
cmp r4, #0
|
|
ldrle r0, [sp]
|
|
strle r0, [r5]
|
|
ldrle r4, [sp, #4]
|
|
ble _02052054
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
mov r1, r4
|
|
ldr r2, [sp]
|
|
mov r4, r0
|
|
bl DecompressAtNormalVeneer
|
|
str r4, [r5]
|
|
add r0, sp, #0
|
|
ldr r4, [r4, #0xc]
|
|
bl UnloadFile
|
|
_02052054:
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02051FF0
|
|
|
|
arm_func_start sub_02052060
|
|
sub_02052060: ; 0x02052060
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x2c
|
|
ldr r4, _020522E4 ; =_020B09B0
|
|
mov sl, r1
|
|
ldr r7, [sp, #0x54]
|
|
ldr r4, [r4]
|
|
mov r1, #0x30
|
|
mla r4, r7, r1, r4
|
|
ldr fp, [sp, #0x50]
|
|
mov r1, #0x18
|
|
mla r4, fp, r1, r4
|
|
mov sb, r2
|
|
add r1, sp, #0x28
|
|
mov r2, #0xf
|
|
mov r8, r3
|
|
ldr r5, [r4, #0x10]
|
|
bl sub_02051FF0
|
|
mov r3, r0
|
|
ldr r4, [sp, #0x28]
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, _020522E4 ; =_020B09B0
|
|
ldr r2, [r4, #8]
|
|
ldr r0, [r0]
|
|
add r1, r5, sl
|
|
add r2, r4, r2
|
|
add r0, r0, #0x60
|
|
bl sub_02051804
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
ldr r0, _020522E4 ; =_020B09B0
|
|
str r1, [sp, #4]
|
|
ldr r0, [r0]
|
|
mov r2, r4
|
|
mov r3, r1
|
|
add r0, r0, #0x60
|
|
bl sub_02051804
|
|
ldr r1, [sp, #0x28]
|
|
rsb r0, sb, #0x20
|
|
mov r0, r0, lsl #0x10
|
|
ldr r1, [r1, #0x10]
|
|
str r0, [sp, #0x18]
|
|
add r0, r4, r1
|
|
str r0, [sp, #0xc]
|
|
mov r5, #0
|
|
b _020521CC
|
|
_02052120:
|
|
mov r6, #0
|
|
mov r0, r6
|
|
str r0, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, sb, lsl #0x10
|
|
add r0, r0, sb, lsl #6
|
|
str r0, [sp, #0x10]
|
|
mov r0, r1, asr #0x10
|
|
str r0, [sp, #0x14]
|
|
_02052144:
|
|
ldr r0, [sp, #0x10]
|
|
mov r1, r6, lsl #1
|
|
ldrh r1, [r1, r0]
|
|
ldr r2, _020522E8 ; =0x00000FFF
|
|
mov r0, r6, lsl #0x10
|
|
and r2, r1, r2
|
|
mov r2, r2, lsl #0x10
|
|
mov r1, r1, lsl #4
|
|
mov r2, r2, lsr #0x10
|
|
add r1, r8, r1, lsr #16
|
|
add r2, r2, sl, lsr #5
|
|
mov r1, r1, lsl #0x1c
|
|
mov r2, r2, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
orr r1, r1, r2, lsr #16
|
|
mov r1, r1, lsl #0x10
|
|
mov r2, r1, lsr #0x10
|
|
ldr r1, [sp, #0x14]
|
|
mov r0, r0, asr #0x10
|
|
str r7, [sp]
|
|
mov r3, fp
|
|
bl sub_02051D8C
|
|
ldr r0, [sp, #8]
|
|
add r6, r6, #1
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #8]
|
|
cmp r0, #0x20
|
|
blo _02052144
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, lsr #0x10
|
|
add sb, sb, #1
|
|
_020521CC:
|
|
ldr r0, [sp, #0x18]
|
|
cmp r5, r0, lsr #16
|
|
blo _02052120
|
|
mov r0, fp
|
|
mov r1, r7
|
|
bl sub_02051E60
|
|
ldr r0, [sp, #0x28]
|
|
ldr r3, _020522EC ; =ARM9_UNKNOWN_PTR__NA_20A2C84
|
|
ldr r0, [r0]
|
|
add r2, sp, #0x1c
|
|
add r5, r4, r0
|
|
mov r4, #0
|
|
mov r1, #4
|
|
_02052200:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _02052200
|
|
mov r0, #0x28
|
|
mul r6, r7, r0
|
|
b _020522B0
|
|
_0205221C:
|
|
add r3, sp, #0x1c
|
|
add r2, sp, #0x20
|
|
mov r1, #4
|
|
_02052228:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _02052228
|
|
ldrb r0, [r5]
|
|
add r3, sp, #0x20
|
|
add r2, sp, #0x24
|
|
strb r0, [sp, #0x20]
|
|
ldrb r0, [r5, #1]
|
|
mov r1, #4
|
|
strb r0, [sp, #0x21]
|
|
ldrb r0, [r5, #2]
|
|
strb r0, [sp, #0x22]
|
|
ldrb r0, [r5, #3]
|
|
strb r0, [sp, #0x23]
|
|
_02052264:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _02052264
|
|
add r0, r4, r8, lsl #4
|
|
cmp r0, #0x100
|
|
bge _020522C8
|
|
ldr r1, _020522E4 ; =_020B09B0
|
|
mov r0, r0, lsl #0x10
|
|
ldr r1, [r1]
|
|
mov r0, r0, asr #0x10
|
|
add r3, r1, #0x1cc
|
|
mov r1, r0, lsl #0x10
|
|
add r2, sp, #0x24
|
|
add r0, r3, r6
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A590
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
_020522B0:
|
|
ldr r0, [sp, #0x28]
|
|
ldr r1, [r0, #4]
|
|
mov r0, r1, asr #1
|
|
add r0, r1, r0, lsr #30
|
|
cmp r4, r0, asr #2
|
|
blt _0205221C
|
|
_020522C8:
|
|
ldr r0, _020522E4 ; =_020B09B0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1cc
|
|
add r0, r0, r6
|
|
bl sub_0200A504
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_020522E4: .word _020B09B0
|
|
_020522E8: .word 0x00000FFF
|
|
_020522EC: .word ARM9_UNKNOWN_PTR__NA_20A2C84
|
|
arm_func_end sub_02052060
|
|
|
|
arm_func_start sub_020522F0
|
|
sub_020522F0: ; 0x020522F0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
bl sub_02051FF0
|
|
str r0, [r4, #8]
|
|
ldr r1, [r4]
|
|
ldr r0, [r1, #8]
|
|
add r0, r1, r0
|
|
str r0, [r4, #4]
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, #0x10]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [r4]
|
|
ldr r0, [r0]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x10]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020522F0
|
|
|
|
arm_func_start sub_02052334
|
|
sub_02052334: ; 0x02052334
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02052334
|
|
|
|
arm_func_start LoadMonsterMd
|
|
LoadMonsterMd: ; 0x02052358
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02052388 ; =_020B09C0
|
|
ldr r1, _0205238C ; =_020A31B8
|
|
mov r2, #0
|
|
bl LoadFileFromRom
|
|
bl LoadM2nAndN2m
|
|
ldr r0, _02052390 ; =_020B09B4
|
|
ldr r1, [r0, #0xc]
|
|
#ifdef EUROPE
|
|
str r1, [r0, #8]
|
|
#else
|
|
str r1, [r0, #4]
|
|
#endif
|
|
add r1, r1, #8
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052388: .word _020B09C0
|
|
_0205238C: .word _020A31B8
|
|
_02052390: .word _020B09B4
|
|
arm_func_end LoadMonsterMd
|
|
|
|
arm_func_start GetNameRaw
|
|
GetNameRaw: ; 0x02052394
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x21
|
|
add r0, r0, #0x2200
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x590
|
|
add r0, r0, #0x1000
|
|
#else
|
|
add r0, r1, #0x1f
|
|
add r0, r0, #0x2200
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r1, r0
|
|
mov r0, r4
|
|
mov r2, #0x14
|
|
bl strncpy
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end GetNameRaw
|
|
|
|
arm_func_start GetName
|
|
GetName: ; 0x020523D0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, r1
|
|
mov r1, #0x258
|
|
mov r4, r2
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x21
|
|
add r0, r0, #0x2200
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x590
|
|
add r0, r0, #0x1000
|
|
#else
|
|
add r0, r1, #0x1f
|
|
add r0, r0, #0x2200
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r3, r0
|
|
mov r0, r5
|
|
mov r2, r4
|
|
ldr r1, _02052414 ; =_020A31D4
|
|
bl SprintfStatic__02052418
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02052414: .word _020A31D4
|
|
arm_func_end GetName
|
|
|
|
arm_func_start SprintfStatic__02052418
|
|
SprintfStatic__02052418: ; 0x02052418
|
|
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__02052418
|
|
|
|
arm_func_start GetNameWithGender
|
|
GetNameWithGender: ; 0x02052440
|
|
#ifdef JAPAN
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
#else
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
#endif
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
mov r1, #0x258
|
|
mov r4, r2
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x21
|
|
add r0, r0, #0x2200
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x590
|
|
add r0, r0, #0x1000
|
|
#else
|
|
add r0, r1, #0x1f
|
|
add r0, r0, #0x2200
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
ldr r2, _020524F4 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
mov r3, r0
|
|
smlabb r0, r5, r1, r2
|
|
ldrb r0, [r0, #0x12]
|
|
cmp r0, #3
|
|
cmpne r5, #0x1d
|
|
cmpne r5, #0x20
|
|
bne _020524B0
|
|
ldr r1, _020524F8 ; =_020A31D4
|
|
mov r0, r6
|
|
mov r2, r4
|
|
bl SprintfStatic__02052418
|
|
#ifdef JAPAN
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
#else
|
|
b _020524EC
|
|
#endif
|
|
_020524B0:
|
|
cmp r0, #2
|
|
bne _020524D4
|
|
ldr r1, _020524FC ; =_020A31E4
|
|
#ifdef JAPAN
|
|
mov r0, r6
|
|
mov r2, r4
|
|
bl SprintfStatic__02052418
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_020524D4:
|
|
ldr r1, _02052838_JP ; =_020A45C8_JP
|
|
mov r0, r6
|
|
mov r2, r4
|
|
bl SprintfStatic__02052418
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
#else
|
|
mov r5, #0xbe
|
|
mov r0, r6
|
|
mov r2, r4
|
|
str r5, [sp]
|
|
bl SprintfStatic__02052418
|
|
b _020524EC
|
|
_020524D4:
|
|
ldr r1, _020524FC ; =_020A31E4
|
|
mov r5, #0xbd
|
|
mov r0, r6
|
|
mov r2, r4
|
|
str r5, [sp]
|
|
bl SprintfStatic__02052418
|
|
_020524EC:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
#endif
|
|
.align 2, 0
|
|
_020524F4: .word _020B09B4
|
|
_020524F8: .word _020A31D4
|
|
_020524FC: .word _020A31E4
|
|
#ifdef JAPAN
|
|
_02052838_JP: .word _020A45C8_JP
|
|
#endif
|
|
arm_func_end GetNameWithGender
|
|
|
|
arm_func_start GetSpeciesString
|
|
GetSpeciesString: ; 0x02052500
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl GetBaseForm
|
|
cmp r0, #0xc9
|
|
bne _02052684
|
|
cmp r4, #0xca
|
|
moveq r4, #1
|
|
beq _02052660
|
|
cmp r4, #0xcb
|
|
moveq r4, #2
|
|
beq _02052660
|
|
cmp r4, #0xcc
|
|
moveq r4, #3
|
|
beq _02052660
|
|
cmp r4, #0xcd
|
|
moveq r4, #4
|
|
beq _02052660
|
|
cmp r4, #0xce
|
|
moveq r4, #5
|
|
beq _02052660
|
|
cmp r4, #0xcf
|
|
moveq r4, #6
|
|
beq _02052660
|
|
cmp r4, #0xd0
|
|
moveq r4, #7
|
|
beq _02052660
|
|
cmp r4, #0xd1
|
|
moveq r4, #8
|
|
beq _02052660
|
|
cmp r4, #0xd2
|
|
moveq r4, #9
|
|
beq _02052660
|
|
cmp r4, #0xd3
|
|
moveq r4, #0xa
|
|
beq _02052660
|
|
cmp r4, #0xd4
|
|
moveq r4, #0xb
|
|
beq _02052660
|
|
cmp r4, #0xd5
|
|
moveq r4, #0xc
|
|
beq _02052660
|
|
cmp r4, #0xd6
|
|
moveq r4, #0xd
|
|
beq _02052660
|
|
cmp r4, #0xd7
|
|
moveq r4, #0xe
|
|
beq _02052660
|
|
cmp r4, #0xd8
|
|
moveq r4, #0xf
|
|
beq _02052660
|
|
cmp r4, #0xd9
|
|
moveq r4, #0x10
|
|
beq _02052660
|
|
cmp r4, #0xda
|
|
moveq r4, #0x11
|
|
beq _02052660
|
|
cmp r4, #0xdb
|
|
moveq r4, #0x12
|
|
beq _02052660
|
|
cmp r4, #0xdc
|
|
moveq r4, #0x13
|
|
beq _02052660
|
|
cmp r4, #0xdd
|
|
moveq r4, #0x14
|
|
beq _02052660
|
|
cmp r4, #0xde
|
|
moveq r4, #0x15
|
|
beq _02052660
|
|
cmp r4, #0xdf
|
|
moveq r4, #0x16
|
|
beq _02052660
|
|
cmp r4, #0xe0
|
|
moveq r4, #0x17
|
|
beq _02052660
|
|
cmp r4, #0xe1
|
|
moveq r4, #0x18
|
|
beq _02052660
|
|
cmp r4, #0xe2
|
|
moveq r4, #0x19
|
|
beq _02052660
|
|
cmp r4, #0xe3
|
|
moveq r4, #0x1a
|
|
beq _02052660
|
|
cmp r4, #0xe4
|
|
moveq r4, #0x1b
|
|
movne r4, #0
|
|
_02052660:
|
|
ldr r0, _020526B8 ; =0x000022E8
|
|
bl StringFromId
|
|
ldr r1, _020526BC ; =UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
|
mov r2, r0
|
|
ldr r3, [r1, r4, lsl #2]
|
|
ldr r1, _020526C0 ; =_020A31F4
|
|
mov r0, r5
|
|
bl SprintfStatic__02052418
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02052684:
|
|
mov r0, r4
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x21
|
|
add r0, r0, #0x2200
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x590
|
|
add r0, r0, #0x1000
|
|
#else
|
|
add r0, r1, #0x1f
|
|
add r0, r0, #0x2200
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r2, r0
|
|
ldr r1, _020526C4 ; =_020A31FC
|
|
mov r0, r5
|
|
bl SprintfStatic__02052418
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#if defined(EUROPE)
|
|
_020526B8: .word 0x000022EA
|
|
#elif defined(JAPAN)
|
|
_020526B8: .word 0x00001659
|
|
#else
|
|
_020526B8: .word 0x000022E8
|
|
#endif
|
|
_020526BC: .word UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
|
_020526C0: .word _020A31F4
|
|
_020526C4: .word _020A31FC
|
|
arm_func_end GetSpeciesString
|
|
|
|
arm_func_start GetNameString
|
|
GetNameString: ; 0x020526C8
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x21
|
|
add r0, r0, #0x2200
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x590
|
|
add r0, r0, #0x1000
|
|
#else
|
|
add r0, r1, #0x1f
|
|
add r0, r0, #0x2200
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end GetNameString
|
|
|
|
arm_func_start GetSpriteIndex__020526EC
|
|
GetSpriteIndex__020526EC: ; 0x020526EC
|
|
ldr r2, _02052704 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x10]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052704: .word _020B09B4
|
|
arm_func_end GetSpriteIndex__020526EC
|
|
|
|
arm_func_start GetSpriteIndex__02052708
|
|
GetSpriteIndex__02052708: ; 0x02052708
|
|
ldr r2, _02052720 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x10]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052720: .word _020B09B4
|
|
arm_func_end GetSpriteIndex__02052708
|
|
|
|
arm_func_start GetSpriteIndex__02052724
|
|
GetSpriteIndex__02052724: ; 0x02052724
|
|
ldr r2, _0205273C ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x10]
|
|
bx lr
|
|
.align 2, 0
|
|
_0205273C: .word _020B09B4
|
|
arm_func_end GetSpriteIndex__02052724
|
|
|
|
arm_func_start GetDexNumber
|
|
GetDexNumber: ; 0x02052740
|
|
ldr r2, _02052758 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052758: .word _020B09B4
|
|
arm_func_end GetDexNumber
|
|
|
|
arm_func_start GetCategoryString
|
|
GetCategoryString: ; 0x0205275C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl AllocateTemp1024ByteBufferFromPool
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
#if defined(EUROPE)
|
|
add r0, r1, #0x79
|
|
add r0, r0, #0x2400
|
|
#elif defined(JAPAN)
|
|
add r0, r1, #0x1a40
|
|
#else
|
|
add r0, r1, #0x77
|
|
add r0, r0, #0x2400
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r2, r0
|
|
ldr r1, _020527A4 ; =_020A3200
|
|
mov r0, r4
|
|
bl SprintfStatic__02052418
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020527A4: .word _020A3200
|
|
arm_func_end GetCategoryString
|
|
|
|
arm_func_start GetMonsterGender
|
|
GetMonsterGender: ; 0x020527A8
|
|
ldr r2, _020527C0 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x12]
|
|
bx lr
|
|
.align 2, 0
|
|
_020527C0: .word _020B09B4
|
|
arm_func_end GetMonsterGender
|
|
|
|
arm_func_start GetBodySize
|
|
GetBodySize: ; 0x020527C4
|
|
ldr r2, _020527DC ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x13]
|
|
bx lr
|
|
.align 2, 0
|
|
_020527DC: .word _020B09B4
|
|
arm_func_end GetBodySize
|
|
|
|
arm_func_start GetSpriteSize
|
|
GetSpriteSize: ; 0x020527E0
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
mov r0, r1, lsl #0x10
|
|
ldr r2, _02052818 ; =MONSTER_SPRITE_DATA
|
|
mov r0, r0, asr #0x10
|
|
ldrb r0, [r2, r0, lsl #1]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
cmp r0, #6
|
|
movls r0, #6
|
|
ldrhib r0, [r2, r1, lsl #1]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052818: .word MONSTER_SPRITE_DATA
|
|
arm_func_end GetSpriteSize
|
|
|
|
arm_func_start GetSpriteFileSize
|
|
GetSpriteFileSize: ; 0x0205281C
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
ldr r0, _02052838 ; =_020A2D09
|
|
ldrb r0, [r0, r1, lsl #1]
|
|
mov r0, r0, lsl #9
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02052838: .word _020A2D09
|
|
arm_func_end GetSpriteFileSize
|
|
|
|
arm_func_start GetShadowSize
|
|
GetShadowSize: ; 0x0205283C
|
|
ldr r2, _02052854 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x2e]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052854: .word _020B09B4
|
|
arm_func_end GetShadowSize
|
|
|
|
arm_func_start GetSpeedStatus
|
|
GetSpeedStatus: ; 0x02052858
|
|
ldr r2, _02052870 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #6]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052870: .word _020B09B4
|
|
arm_func_end GetSpeedStatus
|
|
|
|
arm_func_start GetMobilityType
|
|
GetMobilityType: ; 0x02052874
|
|
ldr r2, _0205288C ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x16]
|
|
bx lr
|
|
.align 2, 0
|
|
_0205288C: .word _020B09B4
|
|
arm_func_end GetMobilityType
|
|
|
|
arm_func_start GetRegenSpeed
|
|
GetRegenSpeed: ; 0x02052890
|
|
ldr r2, _020528B0 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x30]
|
|
mov r0, r0, lsl #1
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020528B0: .word _020B09B4
|
|
arm_func_end GetRegenSpeed
|
|
|
|
arm_func_start GetCanMoveFlag
|
|
GetCanMoveFlag: ; 0x020528B4
|
|
ldr r2, _020528DC ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x1a]
|
|
tst r0, #0x10
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020528DC: .word _020B09B4
|
|
arm_func_end GetCanMoveFlag
|
|
|
|
arm_func_start GetChanceAsleep
|
|
GetChanceAsleep: ; 0x020528E0
|
|
ldr r2, _020528F8 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x2f]
|
|
bx lr
|
|
.align 2, 0
|
|
_020528F8: .word _020B09B4
|
|
arm_func_end GetChanceAsleep
|
|
|
|
arm_func_start GetWeightMultiplier
|
|
GetWeightMultiplier: ; 0x020528FC
|
|
ldr r2, _02052914 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x28]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052914: .word _020B09B4
|
|
arm_func_end GetWeightMultiplier
|
|
|
|
arm_func_start GetSize
|
|
GetSize: ; 0x02052918
|
|
ldr r2, _02052930 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x2a]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052930: .word _020B09B4
|
|
arm_func_end GetSize
|
|
|
|
arm_func_start GetBaseHp
|
|
GetBaseHp: ; 0x02052934
|
|
ldr r2, _0205294C ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrh r0, [r0, #0x20]
|
|
bx lr
|
|
.align 2, 0
|
|
_0205294C: .word _020B09B4
|
|
arm_func_end GetBaseHp
|
|
|
|
arm_func_start CanThrowItems
|
|
CanThrowItems: ; 0x02052950
|
|
ldr r2, _02052978 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x1a]
|
|
tst r0, #0x20
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02052978: .word _020B09B4
|
|
arm_func_end CanThrowItems
|
|
|
|
arm_func_start CanEvolve
|
|
CanEvolve: ; 0x0205297C
|
|
ldr r2, _020529A4 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x1a]
|
|
tst r0, #0x40
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020529A4: .word _020B09B4
|
|
arm_func_end CanEvolve
|
|
|
|
arm_func_start GetMonsterPreEvolution
|
|
GetMonsterPreEvolution: ; 0x020529A8
|
|
ldr r2, _020529C0 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_020529C0: .word _020B09B4
|
|
arm_func_end GetMonsterPreEvolution
|
|
|
|
arm_func_start GetBaseOffensiveStat
|
|
GetBaseOffensiveStat: ; 0x020529C4
|
|
ldr r3, _020529E0 ; =_020B09B4
|
|
mov r2, #0x44
|
|
ldr r3, [r3]
|
|
smlabb r0, r0, r2, r3
|
|
add r0, r0, r1
|
|
ldrb r0, [r0, #0x24]
|
|
bx lr
|
|
.align 2, 0
|
|
_020529E0: .word _020B09B4
|
|
arm_func_end GetBaseOffensiveStat
|
|
|
|
arm_func_start GetBaseDefensiveStat
|
|
GetBaseDefensiveStat: ; 0x020529E4
|
|
ldr r3, _02052A00 ; =_020B09B4
|
|
mov r2, #0x44
|
|
ldr r3, [r3]
|
|
smlabb r0, r0, r2, r3
|
|
add r0, r0, r1
|
|
ldrb r0, [r0, #0x26]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052A00: .word _020B09B4
|
|
arm_func_end GetBaseDefensiveStat
|
|
|
|
arm_func_start GetType
|
|
GetType: ; 0x02052A04
|
|
ldr r3, _02052A20 ; =_020B09B4
|
|
mov r2, #0x44
|
|
ldr r3, [r3]
|
|
smlabb r0, r0, r2, r3
|
|
add r0, r0, r1
|
|
ldrb r0, [r0, #0x14]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052A20: .word _020B09B4
|
|
arm_func_end GetType
|
|
|
|
arm_func_start GetAbility
|
|
GetAbility: ; 0x02052A24
|
|
ldr r3, _02052A40 ; =_020B09B4
|
|
mov r2, #0x44
|
|
ldr r3, [r3]
|
|
smlabb r0, r0, r2, r3
|
|
add r0, r0, r1
|
|
ldrb r0, [r0, #0x18]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052A40: .word _020B09B4
|
|
arm_func_end GetAbility
|
|
|
|
arm_func_start GetRecruitRate2
|
|
GetRecruitRate2: ; 0x02052A44
|
|
ldr r2, _02052A5C ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #0x22]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052A5C: .word _020B09B4
|
|
arm_func_end GetRecruitRate2
|
|
|
|
arm_func_start GetRecruitRate1
|
|
GetRecruitRate1: ; 0x02052A60
|
|
ldr r2, _02052A78 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #0x1e]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052A78: .word _020B09B4
|
|
arm_func_end GetRecruitRate1
|
|
|
|
arm_func_start GetExp
|
|
GetExp: ; 0x02052A7C
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _02052AAC ; =_020B09B4
|
|
sub r3, r1, #1
|
|
ldr r2, [r2]
|
|
mov r1, #0x44
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r4, [r0, #0x1c]
|
|
mov r1, #0xa
|
|
mul r0, r4, r3
|
|
bl _s32_div_f
|
|
add r0, r4, r0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02052AAC: .word _020B09B4
|
|
arm_func_end GetExp
|
|
|
|
arm_func_start GetEvoParameters
|
|
GetEvoParameters: ; 0x02052AB0
|
|
ldr r3, _02052ADC ; =_020B09B4
|
|
mov r2, #0x44
|
|
ldr ip, [r3]
|
|
mov r3, #4
|
|
smlabb r1, r1, r2, ip
|
|
add r2, r1, #8
|
|
_02052AC8:
|
|
ldrh r1, [r2], #2
|
|
subs r3, r3, #1
|
|
strh r1, [r0], #2
|
|
bne _02052AC8
|
|
bx lr
|
|
.align 2, 0
|
|
_02052ADC: .word _020B09B4
|
|
arm_func_end GetEvoParameters
|
|
|
|
arm_func_start GetTreasureBoxChances
|
|
GetTreasureBoxChances: ; 0x02052AE0
|
|
stmdb sp!, {r4, lr}
|
|
mov r2, #0x44
|
|
smulbb r4, r0, r2
|
|
ldr r2, _02052B24 ; =_020B09B4
|
|
mov lr, #0
|
|
_02052AF4:
|
|
ldr r3, [r2]
|
|
add r0, lr, #1
|
|
add r3, r4, r3
|
|
add r3, r3, lr, lsl #1
|
|
ldrsh r3, [r3, #0x3c]
|
|
mov r0, r0, lsl #0x10
|
|
mov ip, lr, lsl #1
|
|
mov lr, r0, asr #0x10
|
|
strh r3, [r1, ip]
|
|
cmp lr, #4
|
|
blt _02052AF4
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02052B24: .word _020B09B4
|
|
arm_func_end GetTreasureBoxChances
|
|
|
|
arm_func_start GetIqGroup
|
|
GetIqGroup: ; 0x02052B28
|
|
ldr r2, _02052B40 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x17]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052B40: .word _020B09B4
|
|
arm_func_end GetIqGroup
|
|
|
|
arm_func_start GetSpawnThreshold
|
|
GetSpawnThreshold: ; 0x02052B44
|
|
ldr r2, _02052B5C ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrb r0, [r0, #0x31]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052B5C: .word _020B09B4
|
|
arm_func_end GetSpawnThreshold
|
|
|
|
arm_func_start NeedsItemToSpawn
|
|
NeedsItemToSpawn: ; 0x02052B60
|
|
ldr r2, _02052B88 ; =_020B09B4
|
|
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 _020B09B4
|
|
arm_func_end NeedsItemToSpawn
|
|
|
|
arm_func_start GetExclusiveItem
|
|
GetExclusiveItem: ; 0x02052B8C
|
|
ldr r2, _02052BB4 ; =_020B09B4
|
|
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 _020B09B4
|
|
arm_func_end GetExclusiveItem
|
|
|
|
arm_func_start GetFamilyIndex
|
|
GetFamilyIndex: ; 0x02052BB8
|
|
ldr r2, _02052BD0 ; =_020B09B4
|
|
mov r1, #0x44
|
|
ldr r2, [r2]
|
|
smlabb r0, r0, r1, r2
|
|
ldrsh r0, [r0, #0x32]
|
|
bx lr
|
|
.align 2, 0
|
|
_02052BD0: .word _020B09B4
|
|
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
|
|
|
|
arm_func_start IsUnown
|
|
IsUnown: ; 0x02054A88
|
|
cmp r0, #0xc9
|
|
blt _02054A9C
|
|
cmp r0, #0xe4
|
|
movle r0, #1
|
|
bxle lr
|
|
_02054A9C:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end IsUnown
|
|
|
|
arm_func_start IsShaymin
|
|
IsShaymin: ; 0x02054AA4
|
|
ldr r1, _02054AD0 ; =0xFFFFFDEA
|
|
add r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #1
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02054AD0: .word 0xFFFFFDEA
|
|
arm_func_end IsShaymin
|
|
|
|
arm_func_start IsCastform
|
|
IsCastform: ; 0x02054AD4
|
|
ldr r2, _02054B24 ; =0x0000017B
|
|
cmp r0, r2
|
|
cmpne r0, #0x17c
|
|
addne r1, r2, #2
|
|
cmpne r0, r1
|
|
addne r1, r2, #3
|
|
cmpne r0, r1
|
|
beq _02054B14
|
|
ldr r1, _02054B28 ; =0xFFFFFC2D
|
|
add r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #3
|
|
bhi _02054B1C
|
|
_02054B14:
|
|
mov r0, #1
|
|
bx lr
|
|
_02054B1C:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02054B24: .word 0x0000017B
|
|
_02054B28: .word 0xFFFFFC2D
|
|
arm_func_end IsCastform
|
|
|
|
arm_func_start IsCherrim
|
|
IsCherrim: ; 0x02054B2C
|
|
cmp r0, #0x1cc
|
|
ldrne r1, _02054B6C ; =0x000001CD
|
|
cmpne r0, r1
|
|
beq _02054B5C
|
|
ldr r1, _02054B70 ; =0xFFFFFBDC
|
|
add r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #1
|
|
bhi _02054B64
|
|
_02054B5C:
|
|
mov r0, #1
|
|
bx lr
|
|
_02054B64:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02054B6C: .word 0x000001CD
|
|
_02054B70: .word 0xFFFFFBDC
|
|
arm_func_end IsCherrim
|
|
|
|
; https://decomp.me/scratch/IvDKt
|
|
arm_func_start IsDeoxys
|
|
IsDeoxys: ; 0x02054B74
|
|
ldr r1, _02054BA0 ; =0xFFFFFE5E
|
|
add r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #3
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02054BA0: .word 0xFFFFFE5E
|
|
arm_func_end IsDeoxys
|