summaryrefslogtreecommitdiff
path: root/asm/util.s
diff options
context:
space:
mode:
authorsceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
committersceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
commit670fef77ac4d9116d5fdc28c0da40622919a062b (patch)
tree61c0e925f059404473826ac775305ba5e2706ab1 /asm/util.s
first commit
Diffstat (limited to 'asm/util.s')
-rw-r--r--asm/util.s500
1 files changed, 500 insertions, 0 deletions
diff --git a/asm/util.s b/asm/util.s
new file mode 100644
index 000000000..846f767bb
--- /dev/null
+++ b/asm/util.s
@@ -0,0 +1,500 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8044EF8
+sub_8044EF8: @ 8044EF8
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r0, _08044F2C @ =gUnknown_825E4DC
+ movs r1, 0xF8
+ movs r2, 0xA8
+ movs r3, 0xE
+ bl sub_8006F8C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _08044F30 @ =gUnknown_202063C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r3, r2, r5
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r4, 0x4
+ orrs r1, r4
+ strb r1, [r3]
+ adds r5, 0x1C
+ adds r2, r5
+ str r6, [r2]
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08044F2C: .4byte gUnknown_825E4DC
+_08044F30: .4byte gUnknown_202063C
+ thumb_func_end sub_8044EF8
+
+ thumb_func_start sub_8044F34
+sub_8044F34: @ 8044F34
+ strh r1, [r0]
+ lsrs r1, 16
+ strh r1, [r0, 0x2]
+ bx lr
+ thumb_func_end sub_8044F34
+
+ thumb_func_start sub_8044F3C
+sub_8044F3C: @ 8044F3C
+ ldrh r2, [r0]
+ movs r3, 0x2
+ ldrsh r0, [r0, r3]
+ lsls r0, 16
+ orrs r2, r0
+ str r2, [r1]
+ bx lr
+ thumb_func_end sub_8044F3C
+
+ thumb_func_start sub_8044F4C
+sub_8044F4C: @ 8044F4C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r4, [sp, 0x18]
+ ldr r5, [sp, 0x1C]
+ ldr r6, [sp, 0x20]
+ ldr r7, [sp, 0x24]
+ mov r8, r7
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ strh r3, [r0, 0x8]
+ strh r4, [r0, 0xA]
+ strh r5, [r0, 0xC]
+ strh r6, [r0, 0xE]
+ mov r1, r8
+ strh r1, [r0, 0x10]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8044F4C
+
+ thumb_func_start sub_8044F78
+sub_8044F78: @ 8044F78
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x24
+ mov r8, r0
+ ldr r0, [sp, 0x38]
+ ldr r4, [sp, 0x3C]
+ ldr r5, [sp, 0x40]
+ ldr r6, [sp, 0x44]
+ lsls r6, 16
+ lsrs r6, 16
+ lsls r3, 16
+ asrs r3, 16
+ lsls r0, 16
+ asrs r0, 16
+ str r0, [sp]
+ lsls r4, 16
+ asrs r4, 16
+ str r4, [sp, 0x4]
+ lsls r5, 16
+ asrs r5, 16
+ str r5, [sp, 0x8]
+ str r6, [sp, 0xC]
+ add r0, sp, 0x10
+ bl sub_8044F4C
+ add r0, sp, 0x10
+ mov r1, r8
+ movs r2, 0x1
+ bl BgAffineSet
+ add sp, 0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8044F78
+
+ thumb_func_start sub_8044FC4
+sub_8044FC4: @ 8044FC4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ str r2, [sp, 0x20]
+ adds r4, r3, 0
+ ldr r7, [sp, 0x5C]
+ lsls r0, 24
+ lsls r1, 24
+ ldr r2, _0804504C @ =gUnknown_825E4F4
+ lsrs r1, 23
+ lsrs r0, 21
+ adds r1, r0
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ str r0, [sp, 0x24]
+ adds r1, r2
+ ldrb r1, [r1]
+ str r1, [sp, 0x28]
+ movs r1, 0
+ cmp r1, r0
+ bcc _08044FF8
+ b _0804517A
+_08044FF8:
+ movs r0, 0x20
+ ldr r2, [sp, 0x28]
+ subs r0, r2
+ lsls r0, 1
+ str r0, [sp, 0x2C]
+_08045002:
+ movs r2, 0
+ adds r1, 0x1
+ str r1, [sp, 0x34]
+ ldr r3, [sp, 0x28]
+ cmp r2, r3
+ bcc _08045010
+ b _08045168
+_08045010:
+ ldr r0, _08045050 @ =0x040000d4
+ mov r8, r0
+_08045014:
+ ldrh r1, [r4]
+ ldr r0, _08045054 @ =0x000003ff
+ ands r0, r1
+ lsls r0, 5
+ mov r12, r0
+ movs r0, 0xC0
+ lsls r0, 4
+ ands r0, r1
+ mov r3, sp
+ strh r1, [r3, 0x38]
+ cmp r0, 0
+ bne _0804505C
+ ldr r0, [sp, 0x20]
+ add r0, r12
+ mov r1, r8
+ str r0, [r1]
+ str r7, [r1, 0x4]
+ ldr r3, _08045058 @ =0x84000008
+ str r3, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r4, 0x2
+ str r4, [sp, 0x30]
+ adds r7, 0x20
+ mov r10, r7
+ adds r2, 0x1
+ mov r9, r2
+ b _08045156
+ .align 2, 0
+_0804504C: .4byte gUnknown_825E4F4
+_08045050: .4byte 0x040000d4
+_08045054: .4byte 0x000003ff
+_08045058: .4byte 0x84000008
+_0804505C:
+ movs r1, 0x80
+ lsls r1, 4
+ cmp r0, r1
+ bne _080450AC
+ movs r3, 0
+ adds r4, 0x2
+ str r4, [sp, 0x30]
+ movs r0, 0x20
+ adds r0, r7
+ mov r10, r0
+ adds r2, 0x1
+ mov r9, r2
+ ldr r4, _080450A4 @ =0x040000d4
+ ldr r6, _080450A8 @ =0x84000001
+ movs r5, 0x7
+_0804507A:
+ lsls r2, r3, 24
+ asrs r2, 24
+ subs r0, r5, r2
+ lsls r0, 2
+ add r0, r12
+ ldr r1, [sp, 0x20]
+ adds r0, r1, r0
+ lsls r1, r2, 2
+ adds r1, r7, r1
+ str r0, [r4]
+ str r1, [r4, 0x4]
+ str r6, [r4, 0x8]
+ ldr r0, [r4, 0x8]
+ adds r2, 0x1
+ lsls r2, 24
+ lsrs r3, r2, 24
+ asrs r2, 24
+ cmp r2, 0x7
+ ble _0804507A
+ b _08045156
+ .align 2, 0
+_080450A4: .4byte 0x040000d4
+_080450A8: .4byte 0x84000001
+_080450AC:
+ movs r3, 0
+ adds r4, 0x2
+ str r4, [sp, 0x30]
+ movs r0, 0x20
+ adds r0, r7
+ mov r10, r0
+ adds r2, 0x1
+ mov r9, r2
+_080450BC:
+ movs r2, 0
+ lsls r4, r3, 24
+ lsls r0, r4, 2
+ lsrs r0, 24
+ adds r6, r0, 0x3
+ mov r1, r12
+ adds r5, r1, r0
+_080450CA:
+ lsls r1, r2, 24
+ asrs r1, 24
+ subs r0, r6, r1
+ mov r2, sp
+ adds r3, r2, r0
+ adds r0, r5, r1
+ ldr r2, [sp, 0x20]
+ adds r0, r2, r0
+ ldrb r2, [r0]
+ movs r0, 0xF
+ ands r0, r2
+ lsls r0, 4
+ lsrs r2, 4
+ orrs r0, r2
+ strb r0, [r3]
+ adds r1, 0x1
+ lsls r1, 24
+ lsrs r2, r1, 24
+ asrs r1, 24
+ cmp r1, 0x3
+ ble _080450CA
+ movs r3, 0x80
+ lsls r3, 17
+ adds r0, r4, r3
+ lsrs r3, r0, 24
+ asrs r0, 24
+ cmp r0, 0x7
+ ble _080450BC
+ movs r0, 0x80
+ lsls r0, 4
+ mov r1, sp
+ ldrh r1, [r1, 0x38]
+ ands r0, r1
+ cmp r0, 0
+ beq _08045148
+ movs r3, 0
+ ldr r4, _08045140 @ =0x040000d4
+ ldr r6, _08045144 @ =0x84000001
+ movs r5, 0x7
+_08045118:
+ lsls r1, r3, 24
+ asrs r1, 24
+ subs r0, r5, r1
+ lsls r0, 2
+ mov r3, sp
+ adds r2, r3, r0
+ lsls r0, r1, 2
+ adds r0, r7, r0
+ str r2, [r4]
+ str r0, [r4, 0x4]
+ str r6, [r4, 0x8]
+ ldr r0, [r4, 0x8]
+ adds r1, 0x1
+ lsls r1, 24
+ lsrs r3, r1, 24
+ asrs r1, 24
+ cmp r1, 0x7
+ ble _08045118
+ b _08045156
+ .align 2, 0
+_08045140: .4byte 0x040000d4
+_08045144: .4byte 0x84000001
+_08045148:
+ mov r0, sp
+ mov r1, r8
+ str r0, [r1]
+ str r7, [r1, 0x4]
+ ldr r2, _0804518C @ =0x84000008
+ str r2, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+_08045156:
+ ldr r4, [sp, 0x30]
+ mov r7, r10
+ mov r3, r9
+ lsls r0, r3, 24
+ lsrs r2, r0, 24
+ ldr r0, [sp, 0x28]
+ cmp r2, r0
+ bcs _08045168
+ b _08045014
+_08045168:
+ ldr r1, [sp, 0x2C]
+ adds r4, r1
+ ldr r2, [sp, 0x34]
+ lsls r0, r2, 24
+ lsrs r1, r0, 24
+ ldr r3, [sp, 0x24]
+ cmp r1, r3
+ bcs _0804517A
+ b _08045002
+_0804517A:
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804518C: .4byte 0x84000008
+ thumb_func_end sub_8044FC4
+
+ thumb_func_start sub_8045190
+sub_8045190: @ 8045190
+ push {lr}
+ adds r2, r0, 0
+ movs r1, 0
+ movs r3, 0x1
+_08045198:
+ adds r0, r2, 0
+ ands r0, r3
+ cmp r0, 0
+ beq _080451A4
+ adds r0, r1, 0
+ b _080451B2
+_080451A4:
+ lsrs r2, 1
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x1F
+ bls _08045198
+ movs r0, 0
+_080451B2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8045190
+
+ thumb_func_start sub_80451B8
+sub_80451B8: @ 80451B8
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r4, r1, 0
+ ldr r2, _080451E8 @ =0x00001121
+ movs r3, 0
+ cmp r3, r4
+ bcs _08045204
+ movs r6, 0x1
+ ldr r0, _080451EC @ =0x00008408
+ adds r5, r0, 0
+_080451CC:
+ adds r0, r7, r3
+ ldrb r0, [r0]
+ eors r2, r0
+ movs r1, 0
+ adds r3, 0x1
+_080451D6:
+ adds r0, r2, 0
+ ands r0, r6
+ cmp r0, 0
+ beq _080451F0
+ lsrs r0, r2, 1
+ eors r0, r5
+ lsls r0, 16
+ lsrs r2, r0, 16
+ b _080451F2
+ .align 2, 0
+_080451E8: .4byte 0x00001121
+_080451EC: .4byte 0x00008408
+_080451F0:
+ lsrs r2, 1
+_080451F2:
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0x7
+ bls _080451D6
+ lsls r0, r3, 16
+ lsrs r3, r0, 16
+ cmp r3, r4
+ bcc _080451CC
+_08045204:
+ mvns r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80451B8
+
+ thumb_func_start sub_8045210
+sub_8045210: @ 8045210
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r2, _0804524C @ =0x00001121
+ movs r3, 0
+ cmp r3, r4
+ bcs _0804523E
+ ldr r6, _08045250 @ =gUnknown_825E50C
+_08045220:
+ lsrs r1, r2, 8
+ adds r0, r5, r3
+ ldrb r0, [r0]
+ eors r2, r0
+ lsls r0, r2, 24
+ lsrs r0, 23
+ adds r0, r6
+ ldrh r0, [r0]
+ adds r2, r0, 0
+ eors r2, r1
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, r4
+ bcc _08045220
+_0804523E:
+ mvns r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0804524C: .4byte 0x00001121
+_08045250: .4byte gUnknown_825E50C
+ thumb_func_end sub_8045210
+
+ thumb_func_start sub_8045254
+sub_8045254: @ 8045254
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r3, 0
+ movs r2, 0
+ cmp r3, r1
+ bcs _0804526C
+_08045260:
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ adds r3, r0
+ adds r2, 0x1
+ cmp r2, r1
+ bcc _08045260
+_0804526C:
+ adds r0, r3, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8045254
+
+ .align 2, 0 @ Don't pad with nop.