pmd-red/asm/input.s
2020-09-16 17:01:21 -05:00

184 lines
2.8 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start UpdateInput
UpdateInput:
push {r4-r6,lr}
ldr r4, =gUnknown_2025658
ldr r5, =gUnknown_2025648
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
.pool
_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, =gUnknown_2025648
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
.pool
_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, =gUnknown_2025668
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
.pool
_08004A0C:
ldr r1, =gUnknown_2025668
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
.pool
_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, =gUnknown_2025638
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, =gUnknown_202562C
ldrh r0, [r3]
ldr r1, =0x054a1c41
orrs r0, r1
ldr r1, [r2]
muls r0, r1
str r0, [r2]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
.pool
thumb_func_end UpdateInput
.align 2, 0 @ Don't pad with nop.