mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-07-24 11:51:02 -05:00
94 lines
1.5 KiB
ArmAsm
94 lines
1.5 KiB
ArmAsm
.include "macros/function.inc"
|
|
.include "include/std_string.inc"
|
|
|
|
|
|
|
|
.text
|
|
|
|
|
|
arm_func_start STD_CopyLString
|
|
STD_CopyLString: ; 0x020D3354
|
|
stmfd sp!, {r4, lr}
|
|
sub ip, r2, #1
|
|
mov r4, r1
|
|
cmp ip, #0
|
|
mov lr, #0
|
|
ble _020D3390
|
|
_020D336C:
|
|
ldrsb r3, [r4]
|
|
strb r3, [r0, lr]
|
|
ldrsb r3, [r4]
|
|
cmp r3, #0
|
|
beq _020D3390
|
|
add lr, lr, #1
|
|
cmp lr, ip
|
|
add r4, r4, #1
|
|
blt _020D336C
|
|
_020D3390:
|
|
sub r3, r2, #1
|
|
cmp lr, r3
|
|
blt _020D33A8
|
|
cmp r2, #0
|
|
movne r2, #0
|
|
strneb r2, [r0, lr]
|
|
_020D33A8:
|
|
mov r0, r1
|
|
bl STD_GetStringLength
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end STD_CopyLString
|
|
|
|
arm_func_start STD_GetStringLength
|
|
STD_GetStringLength: ; 0x020D33B4
|
|
ldrsb r1, [r0]
|
|
mov r2, #0
|
|
cmp r1, #0
|
|
beq _020D33D4
|
|
_020D33C4:
|
|
add r2, r2, #1
|
|
ldrsb r1, [r0, r2]
|
|
cmp r1, #0
|
|
bne _020D33C4
|
|
_020D33D4:
|
|
mov r0, r2
|
|
bx lr
|
|
arm_func_end STD_GetStringLength
|
|
|
|
arm_func_start STD_CompareString
|
|
STD_CompareString: ; 0x020D33DC
|
|
b _020D33E8
|
|
_020D33E0:
|
|
add r0, r0, #1
|
|
add r1, r1, #1
|
|
_020D33E8:
|
|
ldrsb r3, [r1]
|
|
ldrsb r2, [r0]
|
|
cmp r2, r3
|
|
bne _020D3400
|
|
cmp r2, #0
|
|
bne _020D33E0
|
|
_020D3400:
|
|
sub r0, r2, r3
|
|
bx lr
|
|
arm_func_end STD_CompareString
|
|
|
|
arm_func_start STD_CompareNString
|
|
STD_CompareNString: ; 0x020D3408
|
|
stmfd sp!, {r3, lr}
|
|
cmp r2, #0
|
|
beq _020D3440
|
|
cmp r2, #0
|
|
mov lr, #0
|
|
ble _020D3440
|
|
_020D3420:
|
|
ldrb ip, [r0, lr]
|
|
ldrb r3, [r1, lr]
|
|
cmp ip, r3
|
|
subne r0, ip, r3
|
|
ldmneia sp!, {r3, pc}
|
|
add lr, lr, #1
|
|
cmp lr, r2
|
|
blt _020D3420
|
|
_020D3440:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end STD_CompareNString |