mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
Decomped sub_02051FF0
Decomped by @CacaBueno64
This commit is contained in:
parent
01360bcddd
commit
0ce65f77f1
|
|
@ -1,28 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
.public _020A31B8
|
|
||||||
.public _020A31D4
|
|
||||||
.public _020A31E4
|
|
||||||
.public _020A31F4
|
|
||||||
.public _020A31FC
|
|
||||||
.public _020A45C8_JP
|
|
||||||
.public _020B09B0
|
|
||||||
.public _020B09C0
|
|
||||||
.public _s32_div_f
|
|
||||||
.public ARM9_UNKNOWN_PTR__NA_20A2C84
|
|
||||||
.public ArrayCopy32
|
.public ArrayCopy32
|
||||||
.public ArrayFill32
|
.public ArrayFill32
|
||||||
.public DecompressAtNormalVeneer
|
|
||||||
.public GetAtSize
|
|
||||||
.public GetBaseForm
|
|
||||||
.public LoadFileFromRom
|
|
||||||
.public LoadM2nAndN2m
|
|
||||||
.public MemAlloc
|
.public MemAlloc
|
||||||
.public MemFree
|
.public MemFree
|
||||||
.public MemZero
|
.public MemZero
|
||||||
.public MONSTER_DATA_TABLE_PTR
|
|
||||||
.public RANK_UP_TABLE
|
.public RANK_UP_TABLE
|
||||||
.public StringFromId
|
.public _020B09B0
|
||||||
.public strncpy
|
|
||||||
.public sub_0200302C
|
.public sub_0200302C
|
||||||
.public sub_020030FC
|
.public sub_020030FC
|
||||||
.public sub_0200A124
|
.public sub_0200A124
|
||||||
|
|
@ -40,6 +23,3 @@
|
||||||
.public sub_0200B3C0
|
.public sub_0200B3C0
|
||||||
.public sub_0200B3D4
|
.public sub_0200B3D4
|
||||||
.public sub_0200B3FC
|
.public sub_0200B3FC
|
||||||
.public UnloadFile
|
|
||||||
.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
|
||||||
.public vsprintf
|
|
||||||
|
|
|
||||||
26
asm/include/main_02052060.inc
Normal file
26
asm/include/main_02052060.inc
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#pragma once
|
||||||
|
.public ARM9_UNKNOWN_PTR__NA_20A2C84
|
||||||
|
.public GetBaseForm
|
||||||
|
.public LoadFileFromRom
|
||||||
|
.public LoadM2nAndN2m
|
||||||
|
.public MONSTER_DATA_TABLE_PTR
|
||||||
|
.public MemFree
|
||||||
|
.public StringFromId
|
||||||
|
.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
||||||
|
.public _020A31B8
|
||||||
|
.public _020A31D4
|
||||||
|
.public _020A31E4
|
||||||
|
.public _020A31F4
|
||||||
|
.public _020A31FC
|
||||||
|
.public _020A45C8_JP
|
||||||
|
.public _020B09B0
|
||||||
|
.public _020B09C0
|
||||||
|
.public _s32_div_f
|
||||||
|
.public strncpy
|
||||||
|
.public sub_0200A504
|
||||||
|
.public sub_0200A590
|
||||||
|
.public sub_02051804
|
||||||
|
.public sub_02051D8C
|
||||||
|
.public sub_02051E60
|
||||||
|
.public sub_02051FF0
|
||||||
|
.public vsprintf
|
||||||
|
|
@ -617,588 +617,3 @@ sub_02051FB4: ; 0x02051FB4
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_02051FEC: .word _020B09B0
|
_02051FEC: .word _020B09B0
|
||||||
arm_func_end sub_02051FB4
|
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 ; =MONSTER_DATA_TABLE_PTR
|
|
||||||
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 MONSTER_DATA_TABLE_PTR
|
|
||||||
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 ; =MONSTER_DATA_TABLE_PTR
|
|
||||||
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 MONSTER_DATA_TABLE_PTR
|
|
||||||
_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
|
|
||||||
|
|
|
||||||
556
asm/main_02052060.s
Normal file
556
asm/main_02052060.s
Normal file
|
|
@ -0,0 +1,556 @@
|
||||||
|
.include "asm/macros.inc"
|
||||||
|
.include "main_02052060.inc"
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
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 ; =MONSTER_DATA_TABLE_PTR
|
||||||
|
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 MONSTER_DATA_TABLE_PTR
|
||||||
|
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 ; =MONSTER_DATA_TABLE_PTR
|
||||||
|
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 MONSTER_DATA_TABLE_PTR
|
||||||
|
_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
|
||||||
6
include/main_02051FF0.h
Normal file
6
include/main_02051FF0.h
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef PMDSKY_MAIN_02051FF0_H
|
||||||
|
#define PMDSKY_MAIN_02051FF0_H
|
||||||
|
|
||||||
|
s32 sub_02051FF0(u32 fileId, void **outPtr, s32 param2);
|
||||||
|
|
||||||
|
#endif //PMDSKY_MAIN_02051FF0_H
|
||||||
2
main.lsf
2
main.lsf
|
|
@ -110,6 +110,8 @@ Static main
|
||||||
Object asm/main_rodata_020A20B1.o
|
Object asm/main_rodata_020A20B1.o
|
||||||
Object src/main_020517D4.o
|
Object src/main_020517D4.o
|
||||||
Object asm/main_020517F4.o
|
Object asm/main_020517F4.o
|
||||||
|
Object src/main_02051FF0.o
|
||||||
|
Object asm/main_02052060.o
|
||||||
Object src/main_020526EC.o
|
Object src/main_020526EC.o
|
||||||
Object src/get_category_string.o
|
Object src/get_category_string.o
|
||||||
Object src/main_020527A8.o
|
Object src/main_020527A8.o
|
||||||
|
|
|
||||||
30
src/main_02051FF0.c
Normal file
30
src/main_02051FF0.c
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
#include "main_02051FF0.h"
|
||||||
|
#include "main_02008BD4.h"
|
||||||
|
|
||||||
|
extern void LoadFileFromRom(struct iovec *handle, u32 fileId, s32 param2);
|
||||||
|
extern s32 GetAtSize(void *data);
|
||||||
|
extern void *MemAlloc(u32 size, u32 heapId);
|
||||||
|
extern void DecompressAtNormalVeneer(void *dest, u32 size, void *src);
|
||||||
|
|
||||||
|
s32 sub_02051FF0(u32 fileId, void **outPtr, s32 param2)
|
||||||
|
{
|
||||||
|
struct iovec handle;
|
||||||
|
|
||||||
|
LoadFileFromRom(&handle, fileId, param2);
|
||||||
|
|
||||||
|
s32 size = GetAtSize(handle.iov_base);
|
||||||
|
|
||||||
|
if (size <= 0) {
|
||||||
|
*outPtr = handle.iov_base;
|
||||||
|
size = handle.iov_len;
|
||||||
|
} else {
|
||||||
|
void *dest = MemAlloc((u32)size, 0);
|
||||||
|
|
||||||
|
DecompressAtNormalVeneer(dest, (u32)size, handle.iov_base);
|
||||||
|
*outPtr = dest;
|
||||||
|
size = ((s32 *)dest)[3];
|
||||||
|
UnloadFile(&handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user