diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-16 23:54:22 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-16 23:54:22 -0800 |
commit | 670fef77ac4d9116d5fdc28c0da40622919a062b (patch) | |
tree | 61c0e925f059404473826ac775305ba5e2706ab1 /asm/util.s |
first commit
Diffstat (limited to 'asm/util.s')
-rw-r--r-- | asm/util.s | 500 |
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. |