summaryrefslogtreecommitdiff
path: root/asm/emerald.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2015-11-24 12:35:16 -0800
committerYamaArashi <shadow962@live.com>2015-11-24 12:35:16 -0800
commit3565d5ea5bc7036334e3a70710b039237c9e7151 (patch)
tree9c3abd9630029eeaf9029652bea53efec676f6b6 /asm/emerald.s
parente417efb82005e599581542494fae3b8b1d2132e7 (diff)
split out string utility code
Diffstat (limited to 'asm/emerald.s')
-rw-r--r--asm/emerald.s1391
1 files changed, 1 insertions, 1390 deletions
diff --git a/asm/emerald.s b/asm/emerald.s
index b218d186c..a987c77e9 100644
--- a/asm/emerald.s
+++ b/asm/emerald.s
@@ -21,1396 +21,7 @@ Start:
.include "asm/window.s"
.include "asm/text_renderer.s"
.include "asm/gpu_obj.s"
-
- thumb_func_start CopyString_Limit10
-; u8 *CopyString_Limit10(u8 *dest, u8 *src)
-CopyString_Limit10: ; 8008B10
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0xA
- movs r3, 0
-@08008B18:
- adds r2, r4, r3
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne @08008B2C
- adds r0, r2, 0
- b @08008B3C
-@08008B2C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r5
- bcc @08008B18
- adds r0, r4, r3
- movs r1, 0xFF
- strb r1, [r0]
-@08008B3C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CopyString_Limit10
-
- thumb_func_start GetStringEnd_Limit7
-; u8 *GetStringEnd_Limit7(u8 *s)
-GetStringEnd_Limit7: ; 8008B44
- push {r4,lr}
- adds r3, r0, 0
- movs r4, 0xA
- movs r2, 0
-@08008B4C:
- adds r1, r3, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne @08008B58
- adds r0, r1, 0
- b @08008B68
-@08008B58:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc @08008B4C
- adds r0, r3, r2
- movs r1, 0xFF
- strb r1, [r0]
-@08008B68:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetStringEnd_Limit7
-
- thumb_func_start CopyString_Limit7
-; u8 *CopyString_Limit7(u8 *dest, u8 *src)
-CopyString_Limit7: ; 8008B70
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0x7
- movs r3, 0
-@08008B78:
- adds r2, r4, r3
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne @08008B8C
- adds r0, r2, 0
- b @08008B98
-@08008B8C:
- adds r3, 0x1
- cmp r3, r5
- blt @08008B78
- adds r0, r4, r3
- movs r1, 0xFF
- strb r1, [r0]
-@08008B98:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CopyString_Limit7
-
- thumb_func_start CopyString
-; u8 *CopyString(u8 *dest, u8 *src)
-CopyString: ; 8008BA0
- push {lr}
- adds r3, r0, 0
- b @08008BAC
-@08008BA6:
- strb r2, [r3]
- adds r3, 0x1
- adds r1, 0x1
-@08008BAC:
- ldrb r2, [r1]
- adds r0, r2, 0
- cmp r0, 0xFF
- bne @08008BA6
- movs r0, 0xFF
- strb r0, [r3]
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end CopyString
-
- thumb_func_start AppendString
-; u8 *AppendString(u8 *dest, u8 *src)
-AppendString: ; 8008BC0
- push {lr}
- adds r2, r0, 0
- b @08008BC8
-@08008BC6:
- adds r2, 0x1
-@08008BC8:
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne @08008BC6
- adds r0, r2, 0
- bl CopyString
- pop {r1}
- bx r1
- thumb_func_end AppendString
-
- thumb_func_start CopyString_LimitN
-; u8 *CopyString_LimitN(u8 *dest, u8 *src, u8 n)
-CopyString_LimitN: ; 8008BD8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r5, r2, 24
- movs r3, 0
- adds r0, r5, 0
- cmp r3, r0
- bcs @08008BFE
- adds r2, r0, 0
-@08008BEC:
- adds r1, r4, r3
- adds r0, r6, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r2
- bcc @08008BEC
-@08008BFE:
- adds r0, r4, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CopyString_LimitN
-
- thumb_func_start AppendString_LimitN
-; u8 *AppendString_LimitN(u8 *dest, u8 *src, u8 n)
-AppendString_LimitN: ; 8008C08
- push {lr}
- adds r3, r0, 0
- lsls r2, 24
- lsrs r2, 24
- b @08008C14
-@08008C12:
- adds r3, 0x1
-@08008C14:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne @08008C12
- adds r0, r3, 0
- bl CopyString_LimitN
- pop {r1}
- bx r1
- thumb_func_end AppendString_LimitN
-
- thumb_func_start GetStringLength
-; u16 GetStringLength(u8 *s)
-GetStringLength: ; 8008C24
- push {lr}
- adds r2, r0, 0
- movs r1, 0
- ldrb r0, [r2]
- cmp r0, 0xFF
- beq @08008C3E
-@08008C30:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne @08008C30
-@08008C3E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end GetStringLength
-
- thumb_func_start CompareString
-; u8 CompareString(u8 *s1, u8 *s2)
-CompareString: ; 8008C44
- push {lr}
- adds r2, r0, 0
- b @08008C56
-@08008C4A:
- cmp r0, 0xFF
- bne @08008C52
- movs r0, 0
- b @08008C64
-@08008C52:
- adds r2, 0x1
- adds r1, 0x1
-@08008C56:
- ldrb r0, [r2]
- ldrb r3, [r1]
- cmp r0, r3
- beq @08008C4A
- ldrb r0, [r2]
- ldrb r1, [r1]
- subs r0, r1
-@08008C64:
- pop {r1}
- bx r1
- thumb_func_end CompareString
-
- thumb_func_start StringCompare_LimitN
-; u8 StringCompare_LimitN(u8 *s1, u8 *s2, u32 n)
-StringCompare_LimitN: ; 8008C68
- push {r4,lr}
- adds r3, r0, 0
- b @08008C80
-@08008C6E:
- cmp r0, 0xFF
- beq @08008C7C
- adds r3, 0x1
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne @08008C80
-@08008C7C:
- movs r0, 0
- b @08008C8E
-@08008C80:
- ldrb r0, [r3]
- ldrb r4, [r1]
- cmp r0, r4
- beq @08008C6E
- ldrb r0, [r3]
- ldrb r1, [r1]
- subs r0, r1
-@08008C8E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end StringCompare_LimitN
-
- thumb_func_start IsStringLengthLessThanN
-; BOOL IsStringLengthLessThanN(u8 *s, s32 n)
-IsStringLengthLessThanN: ; 8008C94
- push {lr}
- adds r3, r0, 0
- movs r2, 0
- cmp r2, r1
- bge @08008CB8
-@08008C9E:
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq @08008CAE
- cmp r0, 0xFF
- beq @08008CAE
- movs r0, 0x1
- b @08008CBA
-@08008CAE:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r1
- blt @08008C9E
-@08008CB8:
- movs r0, 0
-@08008CBA:
- pop {r1}
- bx r1
- thumb_func_end IsStringLengthLessThanN
-
- thumb_func_start ConvertIntToDecimalString
-; u8 *ConvertIntToDecimalString(u8 *dest, s32 value, u8 mode, u8 numDigits)
-ConvertIntToDecimalString: ; 8008CC0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r3, 24
- ldr r0, =gPowersOfTen
- lsrs r3, 22
- subs r3, 0x4
- adds r3, r0
- ldr r0, [r3]
- movs r7, 0
- cmp r2, 0x1
- bne @08008CDE
- movs r7, 0x2
-@08008CDE:
- cmp r2, 0x2
- bne @08008CE4
- movs r7, 0x1
-@08008CE4:
- adds r5, r0, 0
- cmp r5, 0
- ble @08008D60
- ldr r0, =gDigits
- mov r8, r0
-@08008CEE:
- adds r0, r6, 0
- adds r1, r5, 0
- bl __divsi3
- lsls r0, 16
- lsrs r2, r0, 16
- adds r3, r2, 0
- adds r0, r5, 0
- muls r0, r2
- subs r1, r6, r0
- cmp r7, 0x1
- bne @08008D26
- adds r3, r4, 0
- adds r4, 0x1
- cmp r2, 0x9
- bhi @08008D20
- mov r6, r8
- adds r0, r2, r6
- ldrb r0, [r0]
- b @08008D22
- .align 2, 0
- .pool
-@08008D20:
- movs r0, 0xAC
-@08008D22:
- strb r0, [r3]
- b @08008D50
-@08008D26:
- cmp r2, 0
- bne @08008D2E
- cmp r5, 0x1
- bne @08008D46
-@08008D2E:
- movs r7, 0x1
- adds r2, r4, 0
- adds r4, 0x1
- cmp r3, 0x9
- bhi @08008D40
- mov r6, r8
- adds r0, r3, r6
- ldrb r0, [r0]
- b @08008D42
-@08008D40:
- movs r0, 0xAC
-@08008D42:
- strb r0, [r2]
- b @08008D50
-@08008D46:
- cmp r7, 0x2
- bne @08008D50
- movs r0, 0x77
- strb r0, [r4]
- adds r4, 0x1
-@08008D50:
- adds r6, r1, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- cmp r5, 0
- bgt @08008CEE
-@08008D60:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ConvertIntToDecimalString
-
- thumb_func_start ConvertUnsignedIntToDecimalString
-; u8 *ConvertUnsignedIntToDecimalString(u8 *dest, u32 value, u8 mode, u8 numDigits)
-ConvertUnsignedIntToDecimalString: ; 8008D70
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r3, 24
- ldr r0, =gPowersOfTen
- lsrs r3, 22
- subs r3, 0x4
- adds r3, r0
- ldr r0, [r3]
- movs r7, 0
- cmp r2, 0x1
- bne @08008D8E
- movs r7, 0x2
-@08008D8E:
- cmp r2, 0x2
- bne @08008D94
- movs r7, 0x1
-@08008D94:
- adds r5, r0, 0
- cmp r5, 0
- ble @08008E10
- ldr r0, =gDigits
- mov r8, r0
-@08008D9E:
- adds r0, r6, 0
- adds r1, r5, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r2, r0, 16
- adds r3, r2, 0
- adds r0, r5, 0
- muls r0, r2
- subs r1, r6, r0
- cmp r7, 0x1
- bne @08008DD6
- adds r3, r4, 0
- adds r4, 0x1
- cmp r2, 0x9
- bhi @08008DD0
- mov r6, r8
- adds r0, r2, r6
- ldrb r0, [r0]
- b @08008DD2
- .align 2, 0
- .pool
-@08008DD0:
- movs r0, 0xAC
-@08008DD2:
- strb r0, [r3]
- b @08008E00
-@08008DD6:
- cmp r2, 0
- bne @08008DDE
- cmp r5, 0x1
- bne @08008DF6
-@08008DDE:
- movs r7, 0x1
- adds r2, r4, 0
- adds r4, 0x1
- cmp r3, 0x9
- bhi @08008DF0
- mov r6, r8
- adds r0, r3, r6
- ldrb r0, [r0]
- b @08008DF2
-@08008DF0:
- movs r0, 0xAC
-@08008DF2:
- strb r0, [r2]
- b @08008E00
-@08008DF6:
- cmp r7, 0x2
- bne @08008E00
- movs r0, 0x77
- strb r0, [r4]
- adds r4, 0x1
-@08008E00:
- adds r6, r1, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- cmp r5, 0
- bgt @08008D9E
-@08008E10:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ConvertUnsignedIntToDecimalString
-
- thumb_func_start ConvertIntToHexString
-; u8 *ConvertIntToHexString(u8 *dest, s32 value, u8 mode, u8 numDigits)
-ConvertIntToHexString: ; 8008E20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r6, r0, 0
- mov r8, r1
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- movs r0, 0x1
- cmp r1, r3
- bcs @08008E46
-@08008E3A:
- lsls r1, 4
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcc @08008E3A
-@08008E46:
- movs r3, 0
- cmp r2, 0x1
- bne @08008E4E
- movs r3, 0x2
-@08008E4E:
- cmp r2, 0x2
- bne @08008E54
- movs r3, 0x1
-@08008E54:
- adds r5, r1, 0
- cmp r5, 0
- ble @08008ECA
- ldr r0, =gDigits
- mov r9, r0
-@08008E5E:
- mov r0, r8
- adds r1, r5, 0
- str r3, [sp]
- bl __divsi3
- adds r4, r0, 0
- adds r7, r4, 0
- mov r0, r8
- adds r1, r5, 0
- bl __modsi3
- adds r1, r0, 0
- ldr r3, [sp]
- cmp r3, 0x1
- bne @08008E90
- adds r2, r6, 0
- adds r6, 0x1
- cmp r4, 0xF
- bhi @08008EAA
- mov r7, r9
- adds r0, r4, r7
- ldrb r0, [r0]
- b @08008EAC
- .align 2, 0
- .pool
-@08008E90:
- cmp r4, 0
- bne @08008E98
- cmp r5, 0x1
- bne @08008EB0
-@08008E98:
- movs r3, 0x1
- adds r2, r6, 0
- adds r6, 0x1
- cmp r7, 0xF
- bhi @08008EAA
- mov r4, r9
- adds r0, r7, r4
- ldrb r0, [r0]
- b @08008EAC
-@08008EAA:
- movs r0, 0xAC
-@08008EAC:
- strb r0, [r2]
- b @08008EBA
-@08008EB0:
- cmp r3, 0x2
- bne @08008EBA
- movs r0, 0x77
- strb r0, [r6]
- adds r6, 0x1
-@08008EBA:
- mov r8, r1
- adds r0, r5, 0
- cmp r5, 0
- bge @08008EC4
- adds r0, 0xF
-@08008EC4:
- asrs r5, r0, 4
- cmp r5, 0
- bgt @08008E5E
-@08008ECA:
- movs r0, 0xFF
- strb r0, [r6]
- adds r0, r6, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ConvertIntToHexString
-
- thumb_func_start ExpandStringRefs
-; u8 *ExpandStringRefs(u8 *dest, u8 *src)
-ExpandStringRefs: ; 8008EE0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
-@08008EE6:
- ldrb r2, [r5]
- adds r5, 0x1
- adds r0, r2, 0
- subs r0, 0xFA
- cmp r0, 0x5
- bhi @08008FBA
- lsls r0, 2
- ldr r1, =@08008F00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
- .pool
- .align 2, 0
-@08008F00:
- .4byte @08008FBA
- .4byte @08008FBA
- .4byte @08008F2C
- .4byte @08008F18
- .4byte @08008FBA
- .4byte @08008FC0
-@08008F18:
- ldrb r0, [r5]
- adds r5, 0x1
- bl GetExpandedStringRef
- adds r1, r0, 0
- adds r0, r4, 0
- bl ExpandStringRefs
- adds r4, r0, 0
- b @08008EE6
-@08008F2C:
- strb r2, [r4]
- adds r4, 0x1
- ldrb r2, [r5]
- adds r5, 0x1
- strb r2, [r4]
- adds r4, 0x1
- subs r0, r2, 0x4
- cmp r0, 0x14
- bhi @08008FB0
- lsls r0, 2
- ldr r1, =@08008F4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
- .pool
- .align 2, 0
-@08008F4C:
- .4byte @08008FA0
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008EE6
- .4byte @08008FB0
- .4byte @08008EE6
- .4byte @08008FB0
- .4byte @08008FA8
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008EE6
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008FB0
- .4byte @08008EE6
- .4byte @08008EE6
- .4byte @08008EE6
- .4byte @08008EE6
-@08008FA0:
- ldrb r0, [r5]
- strb r0, [r4]
- adds r5, 0x1
- adds r4, 0x1
-@08008FA8:
- ldrb r0, [r5]
- strb r0, [r4]
- adds r5, 0x1
- adds r4, 0x1
-@08008FB0:
- ldrb r0, [r5]
- strb r0, [r4]
- adds r5, 0x1
- adds r4, 0x1
- b @08008EE6
-@08008FBA:
- strb r2, [r4]
- adds r4, 0x1
- b @08008EE6
-@08008FC0:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ExpandStringRefs
-
- thumb_func_start sub_8008FCC
-; u8 *sub_8008FCC(u8 *dest, u8 *src)
-sub_8008FCC: ; 8008FCC
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, =gUnknown_082EC80C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, =gUnknown_082EC810
- adds r0, r4, 0
- movs r2, 0x5
- bl memcpy
- adds r0, r5, 0
- mov r1, sp
-@08008FEE:
- bl CopyString
- adds r5, r0, 0
-@08008FF4:
- ldrb r0, [r6]
- adds r6, 0x1
- cmp r0, 0xFE
- beq @0800900C
- cmp r0, 0xFF
- bne @08009012
- b @0800901E
- .align 2, 0
- .pool
-@0800900C:
- adds r0, r5, 0
- adds r1, r4, 0
- b @08008FEE
-@08009012:
- strb r0, [r5]
- adds r5, 0x1
- adds r0, 0x40
- strb r0, [r5]
- adds r5, 0x1
- b @08008FF4
-@0800901E:
- strb r0, [r5]
- adds r0, r5, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8008FCC
-
- thumb_func_start StringRef_GetPossiblyUnusedStringVar
-; u8 *StringRef_GetPossiblyUnusedStringVar()
-StringRef_GetPossiblyUnusedStringVar: ; 800902C
- ldr r0, =0x020223ac
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetPossiblyUnusedStringVar
-
- thumb_func_start StringRef_GetPlayerName
-; u8 *StringRef_GetPlayerName()
-StringRef_GetPlayerName: ; 8009034
- ldr r0, =0x03005d90
- ldr r0, [r0]
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetPlayerName
-
- thumb_func_start StringRef_GetStringVar1
-; u8 *StringRef_GetStringVar1()
-StringRef_GetStringVar1: ; 8009040
- ldr r0, =0x02021cc4
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetStringVar1
-
- thumb_func_start StringRef_GetStringVar2
-; u8 *StringRef_GetStringVar2()
-StringRef_GetStringVar2: ; 8009048
- ldr r0, =0x02021dc4
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetStringVar2
-
- thumb_func_start StringRef_GetStringVar3
-; u8 *StringRef_GetStringVar3()
-StringRef_GetStringVar3: ; 8009050
- ldr r0, =0x02021ec4
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetStringVar3
-
- thumb_func_start StringRef_GetDummiedOutGenderDependentString
-; u8 *StringRef_GetDummiedOutGenderDependentString()
-StringRef_GetDummiedOutGenderDependentString: ; 8009058
- push {lr}
- ldr r0, =0x03005d90
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq @08009070
- ldr r0, =gUnknown_085E821A
- b @08009072
- .align 2, 0
- .pool
-@08009070:
- ldr r0, =gUnknown_085E8219
-@08009072:
- pop {r1}
- bx r1
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetDummiedOutGenderDependentString
-
- thumb_func_start StringRef_GetRivalName
-; u8 *StringRef_GetRivalName()
-StringRef_GetRivalName: ; 800907C
- push {lr}
- ldr r0, =0x03005d90
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq @08009094
- ldr r0, =gUnknown_085E8258
- b @08009096
- .align 2, 0
- .pool
-@08009094:
- ldr r0, =gUnknown_085E8260
-@08009096:
- pop {r1}
- bx r1
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetRivalName
-
- thumb_func_start StringRef_GetEmeraldString
-; u8 *StringRef_GetEmeraldString()
-StringRef_GetEmeraldString: ; 80090A0
- ldr r0, =gUnknown_085E8229
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetEmeraldString
-
- thumb_func_start StringRef_GetAquaString
-; u8 *StringRef_GetAquaString()
-StringRef_GetAquaString: ; 80090A8
- ldr r0, =gUnknown_085E8231
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetAquaString
-
- thumb_func_start StringRef_GetMagmaString
-; u8 *StringRef_GetMagmaString()
-StringRef_GetMagmaString: ; 80090B0
- ldr r0, =gUnknown_085E8236
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetMagmaString
-
- thumb_func_start StringRef_GetArchieString
-; u8 *StringRef_GetArchieString()
-StringRef_GetArchieString: ; 80090B8
- ldr r0, =gUnknown_085E823C
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetArchieString
-
- thumb_func_start StringRef_GetMaxieString
-; u8 *StringRef_GetMaxieString()
-StringRef_GetMaxieString: ; 80090C0
- ldr r0, =gUnknown_085E8243
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetMaxieString
-
- thumb_func_start StringRef_GetKyogreString
-; u8 *StringRef_GetKyogreString()
-StringRef_GetKyogreString: ; 80090C8
- ldr r0, =gUnknown_085E8249
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetKyogreString
-
- thumb_func_start StringRef_GetGroudonString
-; u8 *StringRef_GetGroudonString()
-StringRef_GetGroudonString: ; 80090D0
- ldr r0, =gUnknown_085E8250
- bx lr
- .align 2, 0
- .pool
- thumb_func_end StringRef_GetGroudonString
-
- thumb_func_start GetExpandedStringRef
-; u8 *GetExpandedStringRef(u8 code)
-GetExpandedStringRef: ; 80090D8
- push {lr}
- cmp r0, 0xD
- bhi @080090F0
- ldr r1, =gStringRefFunctionTable
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- b @080090F2
- .align 2, 0
- .pool
-@080090F0:
- ldr r0, =gUnknown_085E8218
-@080090F2:
- pop {r1}
- bx r1
- .align 2, 0
- .pool
- thumb_func_end GetExpandedStringRef
-
- thumb_func_start RepeatChar
-; u8 *RepeatChar(u8 *dest, u8 c, u16 n)
-RepeatChar: ; 80090FC
- push {lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0
- cmp r0, r2
- bcs @0800911C
-@0800910E:
- strb r1, [r3]
- adds r3, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r2
- bcc @0800910E
-@0800911C:
- movs r0, 0xFF
- strb r0, [r3]
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end RepeatChar
-
- thumb_func_start CopyStringPadded
-; u8 *CopyStringPadded(u8 *dest, u8 *src, u8 c, u16 n)
-CopyStringPadded: ; 8009128
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r3, 16
- b @08009148
-@08009138:
- strb r1, [r4]
- adds r5, 0x1
- adds r4, 0x1
- cmp r3, 0
- beq @08009148
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-@08009148:
- ldrb r1, [r5]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne @08009138
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, =0x0000ffff
- cmp r3, r0
- beq @0800916C
- adds r1, r0, 0
-@0800915E:
- strb r2, [r4]
- adds r4, 0x1
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- bne @0800915E
-@0800916C:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
- .pool
- thumb_func_end CopyStringPadded
-
- thumb_func_start RepeatStringTerminator
-; u8 *RepeatStringTerminator(u8 *dest, u16 n)
-RepeatStringTerminator: ; 800917C
- push {lr}
- lsls r2, r1, 16
- lsrs r2, 16
- movs r1, 0xFF
- bl RepeatChar
- pop {r1}
- bx r1
- thumb_func_end RepeatStringTerminator
-
- thumb_func_start StringCopy_LimitN_Multibyte
-; u8 *StringCopy_LimitN_Multibyte(u8 *dest, u8 *src, u32 n)
-StringCopy_LimitN_Multibyte: ; 800918C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- subs r2, 0x1
- movs r5, 0x1
- negs r5, r5
- b @080091B2
-@0800919A:
- strb r0, [r4]
- adds r3, 0x1
- adds r4, 0x1
- subs r0, r3, 0x1
- ldrb r0, [r0]
- cmp r0, 0xF9
- bne @080091B0
- ldrb r0, [r3]
- strb r0, [r4]
- adds r3, 0x1
- adds r4, 0x1
-@080091B0:
- subs r2, 0x1
-@080091B2:
- cmp r2, r5
- beq @080091BE
- ldrb r0, [r3]
- adds r1, r0, 0
- cmp r1, 0xFF
- bne @0800919A
-@080091BE:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end StringCopy_LimitN_Multibyte
-
- thumb_func_start GetStringLength_Multibyte
-; u32 GetStringLength_Multibyte(u8 *s)
-GetStringLength_Multibyte: ; 80091CC
- push {lr}
- adds r2, r0, 0
- movs r3, 0
- b @080091DE
-@080091D4:
- cmp r1, 0xF9
- bne @080091DA
- adds r2, 0x1
-@080091DA:
- adds r2, 0x1
- adds r3, 0x1
-@080091DE:
- ldrb r1, [r2]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne @080091D4
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end GetStringLength_Multibyte
-
- thumb_func_start WriteColorChangeControlCode
-; u8 *WriteColorChangeControlCode(u8 *dest, u8 colorType, u8 color)
-WriteColorChangeControlCode: ; 80091EC
- push {lr}
- adds r3, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xFC
- strb r0, [r3]
- adds r3, 0x1
- cmp r1, 0x1
- beq @0800920E
- cmp r1, 0x1
- bcc @08009208
- cmp r1, 0x2
- beq @08009214
- b @08009218
-@08009208:
- movs r0, 0x1
- strb r0, [r3]
- b @08009216
-@0800920E:
- movs r0, 0x3
- strb r0, [r3]
- b @08009216
-@08009214:
- strb r1, [r3]
-@08009216:
- adds r3, 0x1
-@08009218:
- strb r2, [r3]
- adds r3, 0x1
- movs r0, 0xFF
- strb r0, [r3]
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end WriteColorChangeControlCode
-
- thumb_func_start sub_8009228
-; BOOL sub_8009228(u8 *s)
-sub_8009228: ; 8009228
- push {lr}
- adds r2, r0, 0
- b @0800923E
-@0800922E:
- adds r0, r1, 0
- cmp r0, 0xA0
- bhi @0800923C
- cmp r0, 0
- beq @0800923C
- movs r0, 0x1
- b @08009248
-@0800923C:
- adds r2, 0x1
-@0800923E:
- ldrb r1, [r2]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne @0800922E
- movs r0, 0
-@08009248:
- pop {r1}
- bx r1
- thumb_func_end sub_8009228
-
- thumb_func_start sub_800924C
-; BOOL sub_800924C(u8 *s, u32 n)
-sub_800924C: ; 800924C
- push {r4,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- movs r1, 0
- b @08009268
-@08009256:
- adds r0, r2, 0
- cmp r0, 0xA0
- bhi @08009264
- cmp r0, 0
- beq @08009264
- movs r0, 0x1
- b @08009276
-@08009264:
- adds r3, 0x1
- adds r1, 0x1
-@08009268:
- ldrb r2, [r3]
- adds r0, r2, 0
- cmp r0, 0xFF
- beq @08009274
- cmp r1, r4
- blt @08009256
-@08009274:
- movs r0, 0
-@08009276:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_800924C
-
- thumb_func_start GetExtendedControlCodeLength
-; u8 GetExtendedControlCodeLength(u8 command)
-GetExtendedControlCodeLength: ; 800927C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0
- cmp r1, 0x18
- bhi @0800928E
- ldr r0, =gExtendedControlCodeLengths
- adds r0, r1, r0
- ldrb r0, [r0]
-@0800928E:
- pop {r1}
- bx r1
- .align 2, 0
- .pool
- thumb_func_end GetExtendedControlCodeLength
-
- thumb_func_start SkipExtendedControlCode
-; u8 *SkipExtendedControlCode(u8 *s)
-SkipExtendedControlCode: ; 8009298
- push {r4,lr}
- adds r4, r0, 0
- b @080092AC
-@0800929E:
- adds r4, 0x1
- ldrb r0, [r4]
- bl GetExtendedControlCodeLength
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0
-@080092AC:
- ldrb r0, [r4]
- cmp r0, 0xFC
- beq @0800929E
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SkipExtendedControlCode
-
- thumb_func_start CompareStringWithoutExtendedControlCodes
-; u8 CompareStringWithoutExtendedControlCodes(u8 *s1, u8 *s2)
-CompareStringWithoutExtendedControlCodes: ; 80092BC
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r6, 0
- b @080092DE
-@080092C6:
- cmp r1, r0
- bcs @080092D4
- movs r6, 0x1
- negs r6, r6
- cmp r0, 0xFF
- bne @080092D4
- movs r6, 0x1
-@080092D4:
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq @080092FE
- adds r4, 0x1
- adds r5, 0x1
-@080092DE:
- adds r0, r4, 0
- bl SkipExtendedControlCode
- adds r4, r0, 0
- adds r0, r5, 0
- bl SkipExtendedControlCode
- adds r5, r0, 0
- ldrb r1, [r4]
- ldrb r0, [r5]
- cmp r1, r0
- bls @080092C6
- movs r6, 0x1
- cmp r1, 0xFF
- bne @080092FE
- subs r6, 0x2
-@080092FE:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CompareStringWithoutExtendedControlCodes
-
- thumb_func_start StopMusicWhileStringIsPrinted
-; void StopMusicWhileStringIsPrinted(u8 *s, BOOL stopMusic)
-StopMusicWhileStringIsPrinted: ; 8009308
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- bne @08009368
- bl StripExtendedControlCodes
- adds r0, r4, 0
- bl GetStringLength
- lsls r0, 24
- lsrs r2, r0, 24
- adds r1, r2, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- adds r1, r4, r1
- movs r0, 0xFC
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r4, r3
- movs r0, 0x16
- strb r0, [r3]
- adds r0, r2, 0x1
- lsls r0, 24
- adds r2, r4, r2
- movs r1, 0xFF
- strb r1, [r2]
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- b @0800935A
-@08009350:
- adds r1, r2, r4
- ldrb r0, [r1]
- strb r0, [r1, 0x2]
- subs r0, r2, 0x1
- lsls r0, 24
-@0800935A:
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne @08009350
- movs r0, 0xFC
- strb r0, [r4]
- movs r0, 0x15
- strb r0, [r4, 0x1]
-@08009368:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end StopMusicWhileStringIsPrinted
-
- thumb_func_start StripExtendedControlCodes
-; void StripExtendedControlCodes(u8 *s)
-StripExtendedControlCodes: ; 8009370
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- movs r6, 0
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq @080093C0
-@0800937E:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, 0xFC
- bne @080093A0
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, r4
- ldrb r0, [r0]
- bl GetExtendedControlCodeLength
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- b @080093B8
-@080093A0:
- adds r2, r6, 0
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r2, r5, r2
- adds r1, r4, 0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r1, r5, r1
- ldrb r0, [r1]
- strb r0, [r2]
-@080093B8:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne @0800937E
-@080093C0:
- adds r1, r5, r6
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end StripExtendedControlCodes
+ .include "asm/string_util.s"
thumb_func_start sub_80093CC
sub_80093CC: ; 80093CC