summaryrefslogtreecommitdiff
path: root/asm/walda_phrase.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/walda_phrase.s')
-rwxr-xr-xasm/walda_phrase.s543
1 files changed, 543 insertions, 0 deletions
diff --git a/asm/walda_phrase.s b/asm/walda_phrase.s
new file mode 100755
index 000000000..2f1f7da60
--- /dev/null
+++ b/asm/walda_phrase.s
@@ -0,0 +1,543 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start walda_maybe
+walda_maybe: @ 81D99E4
+ push {r4,lr}
+ sub sp, 0x8
+ ldr r4, =gStringVar2
+ bl sub_80D2548
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl StringCopy
+ movs r0, 0
+ str r0, [sp]
+ ldr r0, =sub_81D9A1C
+ str r0, [sp, 0x4]
+ movs r0, 0x4
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0
+ bl do_choose_name_or_words_screen
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end walda_maybe
+
+ thumb_func_start sub_81D9A1C
+sub_81D9A1C: @ 81D9A1C
+ push {r4,r5,lr}
+ ldr r4, =gSpecialVar_0x8004
+ ldr r5, =gStringVar2
+ adds r0, r5, 0
+ bl sub_81D9A98
+ strh r0, [r4]
+ ldrh r0, [r4]
+ cmp r0, 0x1
+ beq _081D9A68
+ cmp r0, 0x1
+ bgt _081D9A44
+ cmp r0, 0
+ beq _081D9A62
+ b _081D9A68
+ .pool
+_081D9A44:
+ cmp r0, 0x2
+ bne _081D9A68
+ bl sub_80D2578
+ cmp r0, 0
+ beq _081D9A5C
+ ldr r0, =gUnknown_085EE49A
+ bl sub_80D255C
+ b _081D9A68
+ .pool
+_081D9A5C:
+ movs r0, 0x1
+ strh r0, [r4]
+ b _081D9A68
+_081D9A62:
+ adds r0, r5, 0
+ bl sub_80D255C
+_081D9A68:
+ ldr r4, =gStringVar1
+ bl sub_80D2548
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl StringCopy
+ ldr r1, =gUnknown_03005DAC
+ ldr r0, =sub_80AF168
+ str r0, [r1]
+ ldr r0, =c2_exit_to_overworld_2_switch
+ bl SetMainCallback2
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D9A1C
+
+ thumb_func_start sub_81D9A98
+sub_81D9A98: @ 81D9A98
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrb r0, [r4]
+ cmp r0, 0xFF
+ bne _081D9AA6
+ movs r0, 0x2
+ b _081D9ABC
+_081D9AA6:
+ bl sub_80D2548
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl StringCompare
+ cmp r0, 0
+ beq _081D9ABA
+ movs r0, 0
+ b _081D9ABC
+_081D9ABA:
+ movs r0, 0x1
+_081D9ABC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D9A98
+
+ thumb_func_start sub_81D9AC4
+sub_81D9AC4: @ 81D9AC4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ ldr r0, =gSaveBlock2Ptr
+ ldr r0, [r0]
+ adds r0, 0xA
+ bl ReadUnalignedWord
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldr r0, =gScriptResult
+ mov r8, r0
+ bl sub_80D2548
+ mov r7, sp
+ adds r7, 0xA
+ add r6, sp, 0xC
+ mov r5, sp
+ adds r5, 0xD
+ str r4, [sp]
+ str r0, [sp, 0x4]
+ add r0, sp, 0x8
+ adds r1, r7, 0
+ adds r2, r6, 0
+ adds r3, r5, 0
+ bl sub_81D9B68
+ mov r1, r8
+ strh r0, [r1]
+ lsls r0, 16
+ cmp r0, 0
+ beq _081D9B1E
+ ldrb r0, [r5]
+ bl sub_80D24BC
+ ldrb r0, [r6]
+ bl sub_80D24F0
+ add r0, sp, 0x8
+ ldrh r0, [r0]
+ ldrh r1, [r7]
+ bl sub_80D2524
+_081D9B1E:
+ mov r1, r8
+ ldrh r0, [r1]
+ bl sub_80D2480
+ mov r1, r8
+ ldrb r0, [r1]
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81D9AC4
+
+ thumb_func_start sub_81D9B40
+sub_81D9B40: @ 81D9B40
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r1, 0
+ ldr r3, =gUnknown_0862AD14
+_081D9B4A:
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, r2
+ bne _081D9B5C
+ lsls r0, r1, 24
+ lsrs r0, 24
+ b _081D9B64
+ .pool
+_081D9B5C:
+ adds r1, 0x1
+ cmp r1, 0x1F
+ bls _081D9B4A
+ movs r0, 0x20
+_081D9B64:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D9B40
+
+ thumb_func_start sub_81D9B68
+sub_81D9B68: @ 81D9B68
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ mov r10, r0
+ str r1, [sp, 0x20]
+ str r2, [sp, 0x24]
+ str r3, [sp, 0x28]
+ ldr r0, [sp, 0x4C]
+ ldr r5, [sp, 0x50]
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ adds r0, r5, 0
+ bl StringLength
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xF
+ bne _081D9C7E
+ movs r4, 0
+ add r7, sp, 0x10
+_081D9B98:
+ adds r0, r5, r4
+ ldrb r0, [r0]
+ bl sub_81D9B40
+ adds r1, r7, r4
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x20
+ beq _081D9C7E
+ adds r4, 0x1
+ cmp r4, 0xE
+ ble _081D9B98
+ movs r6, 0x3
+ movs r5, 0
+ movs r0, 0x5
+ mov r8, r0
+ movs r4, 0xD
+_081D9BBC:
+ mov r1, r8
+ str r1, [sp]
+ add r0, sp, 0x4
+ adds r1, r7, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_81D9D5C
+ adds r6, 0x8
+ adds r5, 0x5
+ subs r4, 0x1
+ cmp r4, 0
+ bge _081D9BBC
+ movs r0, 0x2
+ str r0, [sp]
+ add r0, sp, 0x4
+ adds r1, r7, 0
+ movs r2, 0x46
+ movs r3, 0x73
+ bl sub_81D9D5C
+ add r0, sp, 0x4
+ movs r1, 0
+ movs r2, 0x3
+ bl sub_81D9DAC
+ adds r4, r0, 0
+ adds r0, r7, 0
+ movs r1, 0x75
+ movs r2, 0x3
+ bl sub_81D9DAC
+ cmp r4, r0
+ bne _081D9C7E
+ add r0, sp, 0x4
+ movs r1, 0x9
+ movs r2, 0x15
+ bl sub_81D9C90
+ add r0, sp, 0x4
+ ldrb r0, [r0, 0x8]
+ movs r2, 0xF
+ ands r2, r0
+ add r0, sp, 0x4
+ movs r1, 0x8
+ bl sub_81D9C90
+ add r0, sp, 0x4
+ ldrb r2, [r0, 0x8]
+ lsrs r2, 4
+ movs r1, 0x8
+ bl sub_81D9CDC
+ add r0, sp, 0x4
+ ldrb r2, [r0, 0x6]
+ adds r1, r0, 0
+ ldrb r0, [r0]
+ ldrb r1, [r1, 0x2]
+ eors r0, r1
+ add r1, sp, 0x4
+ ldrb r4, [r1, 0x4]
+ eors r0, r4
+ mov r3, r9
+ lsrs r1, r3, 8
+ eors r0, r1
+ cmp r2, r0
+ bne _081D9C7E
+ add r0, sp, 0x4
+ ldrb r3, [r0, 0x7]
+ adds r2, r0, 0
+ ldrb r1, [r0, 0x1]
+ ldrb r0, [r2, 0x3]
+ eors r1, r0
+ adds r0, r2, 0
+ ldrb r2, [r0, 0x5]
+ eors r1, r2
+ movs r0, 0xFF
+ mov r5, r9
+ ands r0, r5
+ eors r1, r0
+ cmp r3, r1
+ bne _081D9C7E
+ add r0, sp, 0x4
+ ldrh r0, [r0]
+ mov r1, r10
+ strh r0, [r1]
+ mov r0, sp
+ adds r0, 0x6
+ ldrh r0, [r0]
+ ldr r3, [sp, 0x20]
+ strh r0, [r3]
+ ldr r5, [sp, 0x24]
+ strb r4, [r5]
+ ldr r0, [sp, 0x28]
+ strb r2, [r0]
+ movs r0, 0x1
+ b _081D9C80
+_081D9C7E:
+ movs r0, 0
+_081D9C80:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D9B68
+
+ thumb_func_start sub_81D9C90
+sub_81D9C90: @ 81D9C90
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ mov r12, r1
+ subs r3, r2, 0x1
+ cmp r2, 0
+ beq _081D9CD6
+_081D9C9C:
+ ldrb r1, [r7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 31
+ mov r2, r12
+ subs r2, 0x1
+ subs r5, r3, 0x1
+ cmp r2, 0
+ blt _081D9CCC
+ movs r6, 0x80
+ adds r3, r2, r7
+_081D9CB4:
+ ldrb r1, [r3]
+ adds r0, r6, 0
+ ands r0, r1
+ lsls r0, 24
+ lsls r1, 1
+ orrs r4, r1
+ strb r4, [r3]
+ lsrs r4, r0, 31
+ subs r3, 0x1
+ subs r2, 0x1
+ cmp r2, 0
+ bge _081D9CB4
+_081D9CCC:
+ adds r3, r5, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r3, r0
+ bne _081D9C9C
+_081D9CD6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D9C90
+
+ thumb_func_start sub_81D9CDC
+sub_81D9CDC: @ 81D9CDC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r3, r2, 24
+ lsls r0, r3, 4
+ orrs r3, r0
+ lsls r0, r3, 24
+ lsrs r3, r0, 24
+ movs r4, 0
+ cmp r4, r5
+ bcs _081D9D04
+_081D9CF4:
+ adds r2, r6, r4
+ ldrb r1, [r2]
+ adds r0, r3, 0
+ eors r0, r1
+ strb r0, [r2]
+ adds r4, 0x1
+ cmp r4, r5
+ bcc _081D9CF4
+_081D9D04:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D9CDC
+
+ thumb_func_start sub_81D9D0C
+sub_81D9D0C: @ 81D9D0C
+ push {lr}
+ lsrs r3, r1, 3
+ movs r2, 0x7
+ ands r2, r1
+ movs r1, 0x80
+ asrs r1, r2
+ adds r0, r3
+ ldrb r0, [r0]
+ ands r0, r1
+ cmp r0, 0
+ beq _081D9D24
+ movs r0, 0x1
+_081D9D24:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D9D0C
+
+ thumb_func_start sub_81D9D28
+sub_81D9D28: @ 81D9D28
+ lsrs r3, r1, 3
+ movs r2, 0x7
+ ands r2, r1
+ movs r1, 0x80
+ asrs r1, r2
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r3
+ ldrb r2, [r0]
+ orrs r1, r2
+ strb r1, [r0]
+ bx lr
+ thumb_func_end sub_81D9D28
+
+ thumb_func_start sub_81D9D40
+sub_81D9D40: @ 81D9D40
+ lsrs r3, r1, 3
+ movs r2, 0x7
+ ands r2, r1
+ movs r1, 0x80
+ asrs r1, r2
+ mvns r1, r1
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r3
+ ldrb r2, [r0]
+ ands r1, r2
+ strb r1, [r0]
+ bx lr
+ thumb_func_end sub_81D9D40
+
+ thumb_func_start sub_81D9D5C
+sub_81D9D5C: @ 81D9D5C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r6, r0, 0
+ mov r9, r1
+ adds r1, r2, 0
+ mov r8, r3
+ ldr r7, [sp, 0x1C]
+ movs r5, 0
+ cmp r5, r7
+ bcs _081D9DA0
+ adds r4, r1, 0
+_081D9D76:
+ mov r0, r8
+ adds r1, r0, r5
+ mov r0, r9
+ bl sub_81D9D0C
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D9D90
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_81D9D28
+ b _081D9D98
+_081D9D90:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_81D9D40
+_081D9D98:
+ adds r4, 0x1
+ adds r5, 0x1
+ cmp r5, r7
+ bcc _081D9D76
+_081D9DA0:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D9D5C
+
+ thumb_func_start sub_81D9DAC
+sub_81D9DAC: @ 81D9DAC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r8, r0
+ adds r7, r1, 0
+ adds r6, r2, 0
+ movs r4, 0
+ movs r5, 0
+ cmp r4, r6
+ bcs _081D9DD6
+_081D9DC0:
+ lsls r4, 1
+ adds r1, r7, r5
+ mov r0, r8
+ bl sub_81D9D0C
+ lsls r0, 24
+ lsrs r0, 24
+ orrs r4, r0
+ adds r5, 0x1
+ cmp r5, r6
+ bcc _081D9DC0
+_081D9DD6:
+ adds r0, r4, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D9DAC
+
+ .align 2, 0 @ Don't pad with nop.