From ae3751c57b030d847108d926f7bb6dbeb45307a8 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Mon, 11 Dec 2017 20:56:51 -0800 Subject: split input.s --- asm/code_80047E8.s | 808 ----------------------------------------------------- asm/code_8004AA0.s | 422 ++++++++++++++++++++++++++++ asm/input.s | 394 ++++++++++++++++++++++++++ 3 files changed, 816 insertions(+), 808 deletions(-) delete mode 100644 asm/code_80047E8.s create mode 100644 asm/code_8004AA0.s create mode 100644 asm/input.s (limited to 'asm') diff --git a/asm/code_80047E8.s b/asm/code_80047E8.s deleted file mode 100644 index 407c747..0000000 --- a/asm/code_80047E8.s +++ /dev/null @@ -1,808 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start InitInput -InitInput: - ldr r0, _08004840 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r0, _08004844 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r1, _08004848 - ldr r0, _0800484C - str r0, [r1] - ldr r0, _08004850 - str r2, [r0, 0x20] - ldr r1, _08004854 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - ldr r0, _08004858 - strh r2, [r0] - strh r2, [r0, 0x2] - bx lr - .align 2, 0 -_08004840: .4byte gUnknown_20255F0 -_08004844: .4byte gUnknown_2025638 -_08004848: .4byte gUnknown_202562C -_0800484C: .4byte 0x004a14c1 -_08004850: .4byte gUnknown_2025600 -_08004854: .4byte 0x0000ffff -_08004858: .4byte gUnknown_2025668 - thumb_func_end InitInput - - thumb_func_start sub_800485C -sub_800485C: - push {r4,r5,lr} - ldr r2, _080048A8 - ldr r1, _080048AC - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r3, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r2, 0x2] - strh r0, [r2, 0x4] - strh r0, [r2, 0x6] - ldr r0, _080048B0 - ldr r1, _080048B4 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080048A8: .4byte gUnknown_2025638 -_080048AC: .4byte gUnknown_20255F0 -_080048B0: .4byte gUnknown_2025600 -_080048B4: .4byte 0x0000ffff - thumb_func_end sub_800485C - - thumb_func_start sub_80048B8 -sub_80048B8: - movs r0, 0 - bx lr - thumb_func_end sub_80048B8 - - thumb_func_start sub_80048BC -sub_80048BC: - movs r0, 0 - bx lr - thumb_func_end sub_80048BC - - thumb_func_start sub_80048C0 -sub_80048C0: - movs r0, 0 - bx lr - thumb_func_end sub_80048C0 - - thumb_func_start sub_80048C4 -sub_80048C4: - movs r0, 0 - bx lr - thumb_func_end sub_80048C4 - - thumb_func_start sub_80048C8 -sub_80048C8: - movs r0, 0 - bx lr - thumb_func_end sub_80048C8 - - thumb_func_start sub_80048CC -sub_80048CC: - movs r0, 0 - bx lr - thumb_func_end sub_80048CC - - thumb_func_start sub_80048D0 -sub_80048D0: - ldr r1, _080048E8 - movs r0, 0 - strh r0, [r1, 0x4] - ldr r1, _080048EC - str r0, [r1, 0xC] - strh r0, [r1, 0x8] - ldr r1, _080048F0 - ldr r0, _080048F4 - strh r0, [r1] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_080048E8: .4byte gUnknown_20255F0 -_080048EC: .4byte gUnknown_2025648 -_080048F0: .4byte gUnknown_2025668 -_080048F4: .4byte 0x000003e7 - thumb_func_end sub_80048D0 - - thumb_func_start sub_80048F8 -sub_80048F8: - ldr r0, _08004908 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _0800490C - strh r1, [r0, 0x2] - ldr r0, _08004910 - strh r1, [r0, 0x2] - bx lr - .align 2, 0 -_08004908: .4byte gUnknown_20255F0 -_0800490C: .4byte gUnknown_2025638 -_08004910: .4byte gUnknown_2025648 - thumb_func_end sub_80048F8 - - thumb_func_start sub_8004914 -sub_8004914: - ldr r0, _0800494C - movs r1, 0x5 - str r1, [r0, 0x20] - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x24] - ldr r1, _08004950 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r2, [r1] - adds r0, 0x29 - strb r2, [r0] - bx lr - .align 2, 0 -_0800494C: .4byte gUnknown_2025600 -_08004950: .4byte 0x0000ffff - thumb_func_end sub_8004914 - - thumb_func_start UpdateInput -UpdateInput: - push {r4-r6,lr} - ldr r4, _08004998 - ldr r5, _0800499C - adds r1, r4, 0 - adds r0, r5, 0 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - adds r0, r5, 0 - bl ReadKeyInput - ldrh r0, [r4] - ldrh r3, [r5] - eors r0, r3 - ands r0, r3 - strh r0, [r5, 0x2] - lsls r0, r3, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080049A8 - ldrh r1, [r5, 0x8] - movs r0, 0xF0 - adds r2, r0, 0 - ands r2, r3 - ands r0, r1 - cmp r0, r2 - bne _080049A0 - ldr r0, [r5, 0xC] - cmp r0, 0x31 - bgt _080049AC - adds r0, 0x1 - str r0, [r5, 0xC] - b _080049AC - .align 2, 0 -_08004998: .4byte gUnknown_2025658 -_0800499C: .4byte gUnknown_2025648 -_080049A0: - strh r2, [r5, 0x8] - movs r0, 0x1 - str r0, [r5, 0xC] - b _080049AC -_080049A8: - str r0, [r5, 0xC] - strh r0, [r5, 0x8] -_080049AC: - ldr r0, _080049C4 - ldr r2, [r0, 0xC] - adds r3, r0, 0 - cmp r2, 0x1 - bne _080049C8 - ldrh r0, [r3, 0x8] - movs r1, 0xF0 - ands r1, r0 - ldrh r0, [r3, 0x2] - orrs r1, r0 - strh r1, [r3, 0x4] - b _080049E0 - .align 2, 0 -_080049C4: .4byte gUnknown_2025648 -_080049C8: - cmp r2, 0x30 - bne _080049DC - movs r0, 0x2B - str r0, [r3, 0xC] - ldrh r1, [r3, 0x8] - movs r0, 0xF0 - ands r0, r1 - ldrh r1, [r3, 0x2] - orrs r0, r1 - b _080049DE -_080049DC: - movs r0, 0 -_080049DE: - strh r0, [r3, 0x4] -_080049E0: - movs r0, 0 - strh r0, [r3, 0x6] - ldrh r1, [r3] - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A0C - ldr r0, _08004A08 - ldrh r2, [r0] - movs r4, 0 - ldrsh r1, [r0, r4] - adds r4, r0, 0 - cmp r1, 0x63 - bgt _08004A20 - adds r0, r2, 0x1 - strh r0, [r4] - b _08004A20 - .align 2, 0 -_08004A08: .4byte gUnknown_2025668 -_08004A0C: - ldr r1, _08004A44 - ldrh r0, [r1] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - adds r4, r1, 0 - cmp r0, 0x9 - bhi _08004A1E - strh r5, [r3, 0x6] -_08004A1E: - strh r2, [r4] -_08004A20: - ldrh r1, [r3] - movs r5, 0x80 - lsls r5, 1 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A48 - ldrh r1, [r4, 0x2] - movs r6, 0x2 - ldrsh r0, [r4, r6] - cmp r0, 0x63 - bgt _08004A5E - adds r0, r1, 0x1 - strh r0, [r4, 0x2] - b _08004A5E - .align 2, 0 -_08004A44: .4byte gUnknown_2025668 -_08004A48: - ldrh r0, [r4, 0x2] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x9 - bhi _08004A5C - ldrh r1, [r3, 0x6] - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r3, 0x6] -_08004A5C: - strh r2, [r4, 0x2] -_08004A5E: - ldr r2, _08004A94 - ldrh r0, [r2] - ldrh r1, [r3] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r2, 0x2] - ldrh r1, [r3, 0x2] - orrs r0, r1 - strh r0, [r2, 0x2] - ldrh r0, [r2, 0x4] - ldrh r1, [r3, 0x4] - orrs r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r2, 0x6] - ldrh r1, [r3, 0x6] - orrs r0, r1 - strh r0, [r2, 0x6] - ldr r2, _08004A98 - ldrh r0, [r3] - ldr r1, _08004A9C - orrs r0, r1 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08004A94: .4byte gUnknown_2025638 -_08004A98: .4byte gUnknown_202562C -_08004A9C: .4byte 0x054a1c41 - thumb_func_end UpdateInput - - thumb_func_start nullsub_6 -nullsub_6: - bx lr - thumb_func_end nullsub_6 - - thumb_func_start sub_8004AA4 -sub_8004AA4: - push {r4,r5,lr} - adds r3, r0, 0 - ldr r4, [r1, 0x4] - cmp r2, 0 - ble _08004AE8 -_08004AAE: - ldm r4!, {r1} - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - beq _08004ADE - movs r0, 0x80 - lsls r0, 24 - str r0, [r3] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x6] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x4] - adds r0, r1, 0x4 - str r0, [r3, 0x8] - str r0, [r3, 0xC] - movs r5, 0 - ldrsh r0, [r1, r5] - lsls r0, 2 - adds r0, 0x4 - adds r0, r1, r0 - str r0, [r3, 0x10] - ldr r0, [r1, 0x4] - str r0, [r3, 0x14] - b _08004AE0 -_08004ADE: - str r0, [r3] -_08004AE0: - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bne _08004AAE -_08004AE8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8004AA4 - - thumb_func_start sub_8004AF0 -sub_8004AF0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004B6A - adds r5, r3, 0 -_08004B08: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004B60 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004B60 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004B4E - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004B42 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004B42: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004B4E: - cmp r1, 0 - beq _08004B60 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl SetBGPaletteBufferColorRGB -_08004B60: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B08 -_08004B6A: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004AF0 - - thumb_func_start sub_8004B78 -sub_8004B78: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004BF2 - adds r5, r3, 0 -_08004B90: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004BE8 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004BE8 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004BD6 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004BCA - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004BCA: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004BD6: - cmp r1, 0 - beq _08004BE8 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl nullsub_4 -_08004BE8: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B90 -_08004BF2: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004B78 - - thumb_func_start sub_8004C00 -sub_8004C00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r10, r3 - ldr r0, [sp, 0x28] - mov r8, r0 - movs r1, 0 - mov r9, r1 - cmp r9, r2 - bge _08004CDC - adds r6, r2, 0 -_08004C20: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004CD2 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004CD2 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004C64 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004C58 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004C58: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r2, 0x1 - mov r9, r2 -_08004C64: - mov r3, r8 - movs r5, 0 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x14] - adds r1, r0, r2 - movs r5, 0x2 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x15] - adds r3, r0, r2 - mov r5, r8 - movs r2, 0x4 - ldrsh r0, [r5, r2] - ldrb r2, [r4, 0x16] - adds r5, r0, r2 - cmp r1, 0xFF - ble _08004C86 - movs r1, 0xFF -_08004C86: - cmp r3, 0xFF - ble _08004C8C - movs r3, 0xFF -_08004C8C: - cmp r5, 0xFF - ble _08004C92 - movs r5, 0xFF -_08004C92: - cmp r1, 0 - bge _08004C98 - movs r1, 0 -_08004C98: - cmp r3, 0 - bge _08004C9E - movs r3, 0 -_08004C9E: - cmp r5, 0 - bge _08004CA4 - movs r5, 0 -_08004CA4: - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08004CF0 - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - lsls r2, r3, 24 - lsrs r2, 16 - ldr r1, _08004CF4 - ands r0, r1 - orrs r0, r2 - lsls r2, r5, 24 - lsrs r2, 8 - ldr r1, _08004CF8 - ands r0, r1 - orrs r0, r2 - str r0, [sp] - adds r0, r7, 0 - mov r1, sp - mov r2, r10 - ldr r3, [sp, 0x24] - bl SetBGPaletteBufferColorRGB -_08004CD2: - subs r6, 0x1 - adds r4, 0x18 - adds r7, 0x1 - cmp r6, 0 - bne _08004C20 -_08004CDC: - mov r0, r9 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08004CF0: .4byte 0xffffff00 -_08004CF4: .4byte 0xffff00ff -_08004CF8: .4byte 0xff00ffff - thumb_func_end sub_8004C00 - - thumb_func_start sub_8004CFC -sub_8004CFC: - push {lr} - cmp r1, 0 - ble _08004D0E - movs r2, 0 -_08004D04: - str r2, [r0] - adds r0, 0x18 - subs r1, 0x1 - cmp r1, 0 - bne _08004D04 -_08004D0E: - pop {r0} - bx r0 - thumb_func_end sub_8004CFC - - thumb_func_start sub_8004D14 -sub_8004D14: - push {r4,lr} - adds r2, r0, 0 - movs r3, 0 - cmp r3, r1 - bge _08004D36 - movs r4, 0x80 - lsls r4, 24 -_08004D22: - ldr r0, [r2] - ands r0, r4 - cmp r0, 0 - beq _08004D2E - movs r0, 0x1 - b _08004D38 -_08004D2E: - adds r2, 0x18 - adds r3, 0x1 - cmp r3, r1 - blt _08004D22 -_08004D36: - movs r0, 0 -_08004D38: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8004D14 - - thumb_func_start sub_8004D40 -sub_8004D40: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - movs r1, 0 - cmp r1, r4 - bge _08004D70 - movs r6, 0x80 - lsls r6, 24 - movs r5, 0x80 - lsls r5, 22 -_08004D54: - ldr r2, [r3] - adds r0, r2, 0 - ands r0, r6 - cmp r0, 0 - beq _08004D6A - ands r2, r5 - cmp r2, 0 - bne _08004D68 - movs r0, 0 - b _08004D72 -_08004D68: - adds r3, 0x18 -_08004D6A: - adds r1, 0x1 - cmp r1, r4 - blt _08004D54 -_08004D70: - movs r0, 0x1 -_08004D72: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8004D40 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_8004AA0.s b/asm/code_8004AA0.s new file mode 100644 index 0000000..44d52f6 --- /dev/null +++ b/asm/code_8004AA0.s @@ -0,0 +1,422 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_6 +nullsub_6: + bx lr + thumb_func_end nullsub_6 + + thumb_func_start sub_8004AA4 +sub_8004AA4: + push {r4,r5,lr} + adds r3, r0, 0 + ldr r4, [r1, 0x4] + cmp r2, 0 + ble _08004AE8 +_08004AAE: + ldm r4!, {r1} + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r0, 0 + beq _08004ADE + movs r0, 0x80 + lsls r0, 24 + str r0, [r3] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x6] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x4] + adds r0, r1, 0x4 + str r0, [r3, 0x8] + str r0, [r3, 0xC] + movs r5, 0 + ldrsh r0, [r1, r5] + lsls r0, 2 + adds r0, 0x4 + adds r0, r1, r0 + str r0, [r3, 0x10] + ldr r0, [r1, 0x4] + str r0, [r3, 0x14] + b _08004AE0 +_08004ADE: + str r0, [r3] +_08004AE0: + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bne _08004AAE +_08004AE8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8004AA4 + + thumb_func_start sub_8004AF0 +sub_8004AF0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004B6A + adds r5, r3, 0 +_08004B08: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004B60 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004B60 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004B4E + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004B42 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004B42: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004B4E: + cmp r1, 0 + beq _08004B60 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl SetBGPaletteBufferColorRGB +_08004B60: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B08 +_08004B6A: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004AF0 + + thumb_func_start sub_8004B78 +sub_8004B78: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004BF2 + adds r5, r3, 0 +_08004B90: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004BE8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004BE8 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004BD6 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004BCA + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004BCA: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004BD6: + cmp r1, 0 + beq _08004BE8 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl nullsub_4 +_08004BE8: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B90 +_08004BF2: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004B78 + + thumb_func_start sub_8004C00 +sub_8004C00: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r10, r3 + ldr r0, [sp, 0x28] + mov r8, r0 + movs r1, 0 + mov r9, r1 + cmp r9, r2 + bge _08004CDC + adds r6, r2, 0 +_08004C20: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004CD2 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004CD2 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004C64 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004C58 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004C58: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r2, 0x1 + mov r9, r2 +_08004C64: + mov r3, r8 + movs r5, 0 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x14] + adds r1, r0, r2 + movs r5, 0x2 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x15] + adds r3, r0, r2 + mov r5, r8 + movs r2, 0x4 + ldrsh r0, [r5, r2] + ldrb r2, [r4, 0x16] + adds r5, r0, r2 + cmp r1, 0xFF + ble _08004C86 + movs r1, 0xFF +_08004C86: + cmp r3, 0xFF + ble _08004C8C + movs r3, 0xFF +_08004C8C: + cmp r5, 0xFF + ble _08004C92 + movs r5, 0xFF +_08004C92: + cmp r1, 0 + bge _08004C98 + movs r1, 0 +_08004C98: + cmp r3, 0 + bge _08004C9E + movs r3, 0 +_08004C9E: + cmp r5, 0 + bge _08004CA4 + movs r5, 0 +_08004CA4: + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08004CF0 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + lsls r2, r3, 24 + lsrs r2, 16 + ldr r1, _08004CF4 + ands r0, r1 + orrs r0, r2 + lsls r2, r5, 24 + lsrs r2, 8 + ldr r1, _08004CF8 + ands r0, r1 + orrs r0, r2 + str r0, [sp] + adds r0, r7, 0 + mov r1, sp + mov r2, r10 + ldr r3, [sp, 0x24] + bl SetBGPaletteBufferColorRGB +_08004CD2: + subs r6, 0x1 + adds r4, 0x18 + adds r7, 0x1 + cmp r6, 0 + bne _08004C20 +_08004CDC: + mov r0, r9 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08004CF0: .4byte 0xffffff00 +_08004CF4: .4byte 0xffff00ff +_08004CF8: .4byte 0xff00ffff + thumb_func_end sub_8004C00 + + thumb_func_start sub_8004CFC +sub_8004CFC: + push {lr} + cmp r1, 0 + ble _08004D0E + movs r2, 0 +_08004D04: + str r2, [r0] + adds r0, 0x18 + subs r1, 0x1 + cmp r1, 0 + bne _08004D04 +_08004D0E: + pop {r0} + bx r0 + thumb_func_end sub_8004CFC + + thumb_func_start sub_8004D14 +sub_8004D14: + push {r4,lr} + adds r2, r0, 0 + movs r3, 0 + cmp r3, r1 + bge _08004D36 + movs r4, 0x80 + lsls r4, 24 +_08004D22: + ldr r0, [r2] + ands r0, r4 + cmp r0, 0 + beq _08004D2E + movs r0, 0x1 + b _08004D38 +_08004D2E: + adds r2, 0x18 + adds r3, 0x1 + cmp r3, r1 + blt _08004D22 +_08004D36: + movs r0, 0 +_08004D38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8004D14 + + thumb_func_start sub_8004D40 +sub_8004D40: + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + movs r1, 0 + cmp r1, r4 + bge _08004D70 + movs r6, 0x80 + lsls r6, 24 + movs r5, 0x80 + lsls r5, 22 +_08004D54: + ldr r2, [r3] + adds r0, r2, 0 + ands r0, r6 + cmp r0, 0 + beq _08004D6A + ands r2, r5 + cmp r2, 0 + bne _08004D68 + movs r0, 0 + b _08004D72 +_08004D68: + adds r3, 0x18 +_08004D6A: + adds r1, 0x1 + cmp r1, r4 + blt _08004D54 +_08004D70: + movs r0, 0x1 +_08004D72: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8004D40 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/input.s b/asm/input.s new file mode 100644 index 0000000..7516a30 --- /dev/null +++ b/asm/input.s @@ -0,0 +1,394 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start InitInput +InitInput: + ldr r0, _08004840 + movs r3, 0 + movs r2, 0 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r0, _08004844 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r1, _08004848 + ldr r0, _0800484C + str r0, [r1] + ldr r0, _08004850 + str r2, [r0, 0x20] + ldr r1, _08004854 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x1C] + strh r1, [r0, 0x1E] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + ldr r0, _08004858 + strh r2, [r0] + strh r2, [r0, 0x2] + bx lr + .align 2, 0 +_08004840: .4byte gUnknown_20255F0 +_08004844: .4byte gUnknown_2025638 +_08004848: .4byte gUnknown_202562C +_0800484C: .4byte 0x004a14c1 +_08004850: .4byte gUnknown_2025600 +_08004854: .4byte 0x0000ffff +_08004858: .4byte gUnknown_2025668 + thumb_func_end InitInput + + thumb_func_start sub_800485C +sub_800485C: + push {r4,r5,lr} + ldr r2, _080048A8 + ldr r1, _080048AC + adds r0, r2, 0 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + movs r3, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r2, 0x2] + strh r0, [r2, 0x4] + strh r0, [r2, 0x6] + ldr r0, _080048B0 + ldr r1, _080048B4 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080048A8: .4byte gUnknown_2025638 +_080048AC: .4byte gUnknown_20255F0 +_080048B0: .4byte gUnknown_2025600 +_080048B4: .4byte 0x0000ffff + thumb_func_end sub_800485C + + thumb_func_start sub_80048B8 +sub_80048B8: + movs r0, 0 + bx lr + thumb_func_end sub_80048B8 + + thumb_func_start sub_80048BC +sub_80048BC: + movs r0, 0 + bx lr + thumb_func_end sub_80048BC + + thumb_func_start sub_80048C0 +sub_80048C0: + movs r0, 0 + bx lr + thumb_func_end sub_80048C0 + + thumb_func_start sub_80048C4 +sub_80048C4: + movs r0, 0 + bx lr + thumb_func_end sub_80048C4 + + thumb_func_start sub_80048C8 +sub_80048C8: + movs r0, 0 + bx lr + thumb_func_end sub_80048C8 + + thumb_func_start sub_80048CC +sub_80048CC: + movs r0, 0 + bx lr + thumb_func_end sub_80048CC + + thumb_func_start sub_80048D0 +sub_80048D0: + ldr r1, _080048E8 + movs r0, 0 + strh r0, [r1, 0x4] + ldr r1, _080048EC + str r0, [r1, 0xC] + strh r0, [r1, 0x8] + ldr r1, _080048F0 + ldr r0, _080048F4 + strh r0, [r1] + strh r0, [r1, 0x2] + bx lr + .align 2, 0 +_080048E8: .4byte gUnknown_20255F0 +_080048EC: .4byte gUnknown_2025648 +_080048F0: .4byte gUnknown_2025668 +_080048F4: .4byte 0x000003e7 + thumb_func_end sub_80048D0 + + thumb_func_start sub_80048F8 +sub_80048F8: + ldr r0, _08004908 + movs r1, 0 + strh r1, [r0, 0x2] + ldr r0, _0800490C + strh r1, [r0, 0x2] + ldr r0, _08004910 + strh r1, [r0, 0x2] + bx lr + .align 2, 0 +_08004908: .4byte gUnknown_20255F0 +_0800490C: .4byte gUnknown_2025638 +_08004910: .4byte gUnknown_2025648 + thumb_func_end sub_80048F8 + + thumb_func_start sub_8004914 +sub_8004914: + ldr r0, _0800494C + movs r1, 0x5 + str r1, [r0, 0x20] + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x24] + ldr r1, _08004950 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r2, [r1] + adds r0, 0x29 + strb r2, [r0] + bx lr + .align 2, 0 +_0800494C: .4byte gUnknown_2025600 +_08004950: .4byte 0x0000ffff + thumb_func_end sub_8004914 + + thumb_func_start UpdateInput +UpdateInput: + push {r4-r6,lr} + ldr r4, _08004998 + ldr r5, _0800499C + adds r1, r4, 0 + adds r0, r5, 0 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + adds r0, r5, 0 + bl ReadKeyInput + ldrh r0, [r4] + ldrh r3, [r5] + eors r0, r3 + ands r0, r3 + strh r0, [r5, 0x2] + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080049A8 + ldrh r1, [r5, 0x8] + movs r0, 0xF0 + adds r2, r0, 0 + ands r2, r3 + ands r0, r1 + cmp r0, r2 + bne _080049A0 + ldr r0, [r5, 0xC] + cmp r0, 0x31 + bgt _080049AC + adds r0, 0x1 + str r0, [r5, 0xC] + b _080049AC + .align 2, 0 +_08004998: .4byte gUnknown_2025658 +_0800499C: .4byte gUnknown_2025648 +_080049A0: + strh r2, [r5, 0x8] + movs r0, 0x1 + str r0, [r5, 0xC] + b _080049AC +_080049A8: + str r0, [r5, 0xC] + strh r0, [r5, 0x8] +_080049AC: + ldr r0, _080049C4 + ldr r2, [r0, 0xC] + adds r3, r0, 0 + cmp r2, 0x1 + bne _080049C8 + ldrh r0, [r3, 0x8] + movs r1, 0xF0 + ands r1, r0 + ldrh r0, [r3, 0x2] + orrs r1, r0 + strh r1, [r3, 0x4] + b _080049E0 + .align 2, 0 +_080049C4: .4byte gUnknown_2025648 +_080049C8: + cmp r2, 0x30 + bne _080049DC + movs r0, 0x2B + str r0, [r3, 0xC] + ldrh r1, [r3, 0x8] + movs r0, 0xF0 + ands r0, r1 + ldrh r1, [r3, 0x2] + orrs r0, r1 + b _080049DE +_080049DC: + movs r0, 0 +_080049DE: + strh r0, [r3, 0x4] +_080049E0: + movs r0, 0 + strh r0, [r3, 0x6] + ldrh r1, [r3] + movs r5, 0x2 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A0C + ldr r0, _08004A08 + ldrh r2, [r0] + movs r4, 0 + ldrsh r1, [r0, r4] + adds r4, r0, 0 + cmp r1, 0x63 + bgt _08004A20 + adds r0, r2, 0x1 + strh r0, [r4] + b _08004A20 + .align 2, 0 +_08004A08: .4byte gUnknown_2025668 +_08004A0C: + ldr r1, _08004A44 + ldrh r0, [r1] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + adds r4, r1, 0 + cmp r0, 0x9 + bhi _08004A1E + strh r5, [r3, 0x6] +_08004A1E: + strh r2, [r4] +_08004A20: + ldrh r1, [r3] + movs r5, 0x80 + lsls r5, 1 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A48 + ldrh r1, [r4, 0x2] + movs r6, 0x2 + ldrsh r0, [r4, r6] + cmp r0, 0x63 + bgt _08004A5E + adds r0, r1, 0x1 + strh r0, [r4, 0x2] + b _08004A5E + .align 2, 0 +_08004A44: .4byte gUnknown_2025668 +_08004A48: + ldrh r0, [r4, 0x2] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x9 + bhi _08004A5C + ldrh r1, [r3, 0x6] + adds r0, r5, 0 + orrs r0, r1 + strh r0, [r3, 0x6] +_08004A5C: + strh r2, [r4, 0x2] +_08004A5E: + ldr r2, _08004A94 + ldrh r0, [r2] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r2, 0x2] + ldrh r1, [r3, 0x2] + orrs r0, r1 + strh r0, [r2, 0x2] + ldrh r0, [r2, 0x4] + ldrh r1, [r3, 0x4] + orrs r0, r1 + strh r0, [r2, 0x4] + ldrh r0, [r2, 0x6] + ldrh r1, [r3, 0x6] + orrs r0, r1 + strh r0, [r2, 0x6] + ldr r2, _08004A98 + ldrh r0, [r3] + ldr r1, _08004A9C + orrs r0, r1 + ldr r1, [r2] + muls r0, r1 + str r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08004A94: .4byte gUnknown_2025638 +_08004A98: .4byte gUnknown_202562C +_08004A9C: .4byte 0x054a1c41 + thumb_func_end UpdateInput + + .align 2, 0 @ Don't pad with nop. -- cgit v1.2.3