mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
* name some engine globals (gSpriteTransform*) * move the whole sa1 directory to the root
492 lines
13 KiB
PHP
492 lines
13 KiB
PHP
.syntax unified
|
|
.text
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x40
|
|
str r0, [sp, #0x24] @ sp24 = s
|
|
adds r6, r1, #0 @ r6 = transform
|
|
ldr r1, [r0, #0xc]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bne _sa2_08004E30
|
|
b _sa2_080051D8
|
|
_sa2_08004E30:
|
|
mov sb, r1 @ sb = sprDims
|
|
add r2, sp, #0x20
|
|
ldr r1, [sp, #0x24]
|
|
ldr r0, [r1, #0x10]
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
strh r0, [r2] @ us->affineIndex = s->unk10 & SPRITE_FLAG_MASK_ROT_SCALE;
|
|
ldrh r4, [r2]
|
|
lsls r4, r4, #5
|
|
ldr r0, _sa2_08005128 @ =gOamBuffer + 0x6
|
|
adds r4, r4, r0 @ r4 = u16 *affine = &gOamBuffer[us->affineIndex * 4 + 3];
|
|
subs r2, #0x18
|
|
str r2, [sp, #0x28] @ sp28 = &us->qDirX
|
|
ldrh r0, [r6]
|
|
ldr r3, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r1, [r3]
|
|
adds r0, r0, r1
|
|
ldr r2, _sa2_08005130 @ =0x000003FF
|
|
ands r0, r2
|
|
movs r5, #0x80
|
|
lsls r5, r5, #1
|
|
adds r0, r0, r5
|
|
lsls r0, r0, #1
|
|
ldr r7, _sa2_08005134 @ =gSineTable
|
|
adds r0, r0, r7
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
ldr r1, [sp, #0x28]
|
|
strh r0, [r1] @ us.qDirX = COS_24_8((transform->rotation + gSpriteTransformRotation) & ONE_CYCLE);
|
|
movs r3, #0xa
|
|
add r3, sp
|
|
mov r8, r3 @ r8 = r3 = &us.qDirY
|
|
ldrh r0, [r6] @ r0 = transform->rotation
|
|
ldr r5, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r1, [r5]
|
|
adds r0, r0, r1
|
|
ands r0, r2
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r7
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
strh r0, [r3] @ us.qDirY = SIN_24_8((transform->rotation + gSpriteTransformRotation) & ONE_CYCLE);
|
|
add r7, sp, #0xc @ r7 = us->unkC[0]
|
|
movs r0, #2
|
|
ldrsh r1, [r6, r0] @ r1 = transform->width
|
|
ldr r2, _sa2_08005138 @ =gSpriteTransformScaleX
|
|
ldrh r0, [r2]
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r7] @ us->unkC[0] = ((transform->width * gSpriteTransformScaleX) >> 8)
|
|
movs r3, #0xe
|
|
add r3, sp
|
|
mov sl, r3
|
|
movs r5, #4
|
|
ldrsh r1, [r6, r5] @ r1 = transform->height
|
|
ldr r2, _sa2_0800513C @ =gSpriteTransformScaleY
|
|
ldrh r0, [r2]
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r3] @ us->unkC[1] = ((transform->height * gSpriteTransformScaleY) >> 8);
|
|
movs r5, #0x80
|
|
lsls r5, r5, #9
|
|
ldrh r1, [r7] @ r1 = us->unkC[0]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
adds r0, r5, #0
|
|
bl Div
|
|
ldr r3, [sp, #0x28]
|
|
ldrh r1, [r3]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r4]
|
|
ldrh r1, [r7]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
adds r0, r5, #0
|
|
bl Div
|
|
mov r2, r8 @ r2 = r8 = &us.qDirY
|
|
ldrh r1, [r2]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r4, #8]
|
|
mov r3, sl @ r3 = &us->unkC[1]
|
|
ldrh r1, [r3]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
adds r0, r5, #0
|
|
bl Div
|
|
mov r2, r8 @ r2 = r8 = &us.qDirY
|
|
ldrh r1, [r2]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
rsbs r1, r1, #0
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r4, #0x10]
|
|
mov r3, sl @ r3 = &us->unkC[1]
|
|
ldrh r1, [r3]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
adds r0, r5, #0
|
|
bl Div
|
|
ldr r5, [sp, #0x28]
|
|
ldrh r1, [r5]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r4, #0x18]
|
|
movs r1, #2
|
|
ldrsh r0, [r6, r1] @ r0 = transform->width
|
|
str r0, [sp, #0x2c]
|
|
cmp r0, #0
|
|
bge _sa2_08004F48
|
|
movs r2, #2
|
|
ldrsh r0, [r6, r2]
|
|
rsbs r0, r0, #0
|
|
ldr r3, _sa2_08005138 @ =gSpriteTransformScaleX
|
|
ldrh r1, [r3]
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r7] @ us->unkC[0] = I(-transform->width * gSpriteTransformScaleX);
|
|
_sa2_08004F48:
|
|
movs r4, #4
|
|
ldrsh r0, [r6, r4]
|
|
ldr r5, _sa2_0800513C @ =gSpriteTransformScaleY
|
|
ldrh r4, [r5]
|
|
ldrh r2, [r6, #4]
|
|
mov r1, sp
|
|
strh r2, [r1, #0x3c] @ sp3C = (u16)transform->height
|
|
cmp r0, #0
|
|
bge _sa2_08004F6A
|
|
movs r3, #4
|
|
ldrsh r0, [r6, r3]
|
|
rsbs r0, r0, #0
|
|
muls r0, r4, r0
|
|
asrs r0, r0, #8
|
|
mov r4, sl @ r4 = sl = &us->unkC[1]
|
|
strh r0, [r4]
|
|
ldrh r4, [r5] @ r4 = gSpriteTransformScaleY
|
|
_sa2_08004F6A:
|
|
mov r2, sp @ r2 = &us
|
|
ldr r5, [sp, #0x28]
|
|
ldrh r1, [r5] @ r1 = us->qDirX
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
ldrh r0, [r7]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r2] @ us.unk0[0] = I(us->unkC[0] * us->qDirX)
|
|
mov r0, sp
|
|
adds r0, #2
|
|
str r0, [sp, #0x30] @ sp30 = &us.unk0[1]
|
|
mov r2, r8 @ r2 = r8 = &us.qDirY
|
|
ldrh r1, [r2]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
rsbs r1, r1, #0 @ r1 = -us.qDirY
|
|
ldrh r0, [r7]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
ldr r3, [sp, #0x30]
|
|
strh r0, [r3] @ us.unk0[1] = I(-us.qDirY * us->unkC[0])
|
|
mov r5, sp
|
|
adds r5, #4
|
|
str r5, [sp, #0x34] @ sp34 = &us.unk0[2]
|
|
ldrh r1, [r2]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
mov r2, sl @ r2 = sl = &us->unkC[1]
|
|
ldrh r0, [r2]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r5] @ us.unk0[2] = I(+us.qDirY * us->unkC[1])
|
|
mov r3, sp
|
|
adds r3, #6
|
|
str r3, [sp, #0x38] @ sp38 = &us.unk0[3]
|
|
ldr r5, [sp, #0x28]
|
|
ldrh r1, [r5]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
ldrh r0, [r2]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r1, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r3] @ us.unk0[3] = I(+us.qDirX * us.unkC[1]);
|
|
add r0, sp, #0x18
|
|
mov r8, r0 @ r8 = &us.unk18[0][0]
|
|
ldr r1, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r0, [r1]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #1
|
|
ldr r3, _sa2_08005134 @ =gSineTable
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
ldr r5, _sa2_08005138 @ =gSpriteTransformScaleX
|
|
ldrh r1, [r5]
|
|
adds r2, r0, #0
|
|
muls r2, r1, r2
|
|
lsls r2, r2, #8
|
|
asrs r2, r2, #0x10 @ r2 = (COS_24_8(gSpriteTransformRotation) * gSpriteTransformScaleX)
|
|
ldrh r0, [r7]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
ldr r3, _sa2_08005140 @ =gSpriteTransformScaleUnknown
|
|
movs r5, #0
|
|
ldrsh r1, [r3, r5]
|
|
muls r0, r1, r0
|
|
lsls r0, r0, #8 @ r0 = Q(us.unkC[0] * gSpriteTransformScaleUnknown)
|
|
asrs r0, r0, #0x10 @ r0 = (Q(us.unkC[0] * gSpriteTransformScaleUnknown) >> 16)
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #8 @ r0 = I((COS_24_8(gSpriteTransformRotation) * gSpriteTransformScaleX) * (Q(us.unkC[0] * gSpriteTransformScaleUnknown) >> 16))
|
|
mov r1, r8
|
|
strh r0, [r1] @ us.unk18[0][0] = I(r2 * r0)
|
|
movs r2, #0x1a
|
|
add r2, sp
|
|
mov ip, r2 @ ip = us.unk18[0][1]
|
|
ldr r5, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #1
|
|
ldr r1, _sa2_08005134 @ =gSineTable
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
ldrsh r0, [r0, r2]
|
|
rsbs r0, r0, #0
|
|
asrs r0, r0, #6 @ r0 = (SIN(-gSpriteTransformRotation) >> 6)
|
|
ldr r5, _sa2_08005138 @ =gSpriteTransformScaleX
|
|
ldrh r1, [r5]
|
|
adds r2, r0, #0
|
|
muls r2, r1, r2
|
|
lsls r2, r2, #8
|
|
asrs r2, r2, #0x10
|
|
ldrh r0, [r7]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r7, #0
|
|
ldrsh r1, [r3, r7]
|
|
muls r0, r1, r0
|
|
lsls r0, r0, #8
|
|
asrs r0, r0, #0x10
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #8
|
|
mov r1, ip
|
|
strh r0, [r1] @ us.unk18[0][1] =
|
|
add r5, sp, #0x1c
|
|
ldr r2, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r0, [r2]
|
|
lsls r0, r0, #1
|
|
ldr r7, _sa2_08005134 @ =gSineTable
|
|
adds r0, r0, r7
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
adds r2, r0, #0 @ r2 = SIN_24_8(gSpriteTransformRotation)
|
|
muls r2, r4, r2 @ r2 *= gSpriteTransformScaleY
|
|
lsls r2, r2, #8 @ r2 = Q(+SIN_24_8(gSpriteTransformRotation) * gSpriteTransformScaleY)
|
|
asrs r2, r2, #0x10
|
|
mov r1, sl @ r1 = sl = &us->unkC[1]
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
muls r0, r1, r0
|
|
lsls r0, r0, #8
|
|
asrs r0, r0, #0x10
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r5] @ us.unk18[1][0] =
|
|
mov r4, sp
|
|
adds r4, #0x1e
|
|
ldr r7, _sa2_0800512C @ =gSpriteTransformRotation
|
|
ldrh r0, [r7]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r2, _sa2_08005134 @ =gSineTable
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
ldr r7, _sa2_0800513C @ =gSpriteTransformScaleY
|
|
ldrh r1, [r7]
|
|
adds r2, r0, #0
|
|
muls r2, r1, r2
|
|
lsls r2, r2, #8
|
|
asrs r2, r2, #0x10
|
|
mov r1, sl @ r1 = sl = &us->unkC[1]
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r7, #0
|
|
ldrsh r1, [r3, r7]
|
|
muls r0, r1, r0
|
|
lsls r0, r0, #8
|
|
asrs r0, r0, #0x10
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #8
|
|
strh r0, [r4] @ us.unk18[1][1] =
|
|
mov r1, r8 @ r1 = r8 = &us.unk18[0][0]
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r2, #6
|
|
ldrsh r1, [r6, r2] @ r1 = transform.x
|
|
muls r1, r0, r1 @ r1 = transform.x * us.unk18[0][0]
|
|
mov r3, ip
|
|
ldrh r0, [r3] @ r0 = us.unk18[0][1]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r7, #8
|
|
ldrsh r2, [r6, r7] @ r2 = transform.y
|
|
muls r0, r2, r0 @ r0 = transform.y * us.unk18[0][1]
|
|
adds r1, r1, r0 @ r1 = r1 + r0
|
|
ldr r0, _sa2_08005144 @ =gSpriteTransformX
|
|
movs r2, #0
|
|
ldrsh r0, [r0, r2]
|
|
lsls r0, r0, #8
|
|
adds r1, r1, r0 @ r1 += Q(gSpriteTransformX)
|
|
asrs r1, r1, #8 @ r1 = I(r1)
|
|
str r1, [sp, #0x10] @ us.posX = I(transform.x * us.unk18[0][0] + transform.y * us.unk18[0][1] + Q(gSpriteTransformX))
|
|
ldrh r0, [r5] @ r0 = us.unk18[1][0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r3, #6
|
|
ldrsh r1, [r6, r3]
|
|
muls r1, r0, r1 @ r1 = transform.x * us.unk18[1][0]
|
|
ldrh r0, [r4]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10 @ r0 = us.unk18[1][1]
|
|
movs r4, #8
|
|
ldrsh r2, [r6, r4] @ r2 = transform.y
|
|
muls r0, r2, r0 @ r0 = transform.y * us.unk18[1][1]
|
|
adds r1, r1, r0 @ r1 = r1 + r0
|
|
ldr r0, _sa2_08005148 @ =gSpriteTransformY
|
|
movs r5, #0
|
|
ldrsh r0, [r0, r5]
|
|
lsls r0, r0, #8
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #8
|
|
str r1, [sp, #0x14] @ us.posY = I(transform.x * us.unk18[1][0] + transform.y * us.unk18[1][1] + Q(gSpriteTransformX));
|
|
ldr r6, [sp, #0x30] @ r6 = &us.unk0[1]
|
|
ldr r7, [sp, #0x34] @ r7 = &us.unk0[2]
|
|
ldr r0, [sp, #0x38] @ r0 = &us.unk0[3]
|
|
mov r8, r0 @ r8 = r0
|
|
ldr r1, [sp, #0x2c] @ r1 = transform->width
|
|
cmp r1, #0
|
|
ble _sa2_0800514C
|
|
mov r2, sb @ r2 = sb = sprDims
|
|
ldrh r4, [r2, #8] @ r4 = offsetX
|
|
ldrh r2, [r2, #4] @ r2 = width
|
|
b _sa2_0800515A
|
|
.align 2, 0
|
|
_sa2_08005128: .4byte gOamBuffer + 0x6
|
|
_sa2_0800512C: .4byte gSpriteTransformRotation
|
|
_sa2_08005130: .4byte 0x000003FF
|
|
_sa2_08005134: .4byte gSineTable
|
|
_sa2_08005138: .4byte gSpriteTransformScaleX
|
|
_sa2_0800513C: .4byte gSpriteTransformScaleY
|
|
_sa2_08005140: .4byte gSpriteTransformScaleUnknown
|
|
_sa2_08005144: .4byte gSpriteTransformX
|
|
_sa2_08005148: .4byte gSpriteTransformY
|
|
_sa2_0800514C:
|
|
mov r3, sb @ r3 = sb = sprDims
|
|
ldrh r1, [r3, #4]
|
|
ldrh r0, [r3, #8]
|
|
subs r0, r1, r0
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10 @ r4 = offsetX
|
|
adds r2, r1, #0 @ r2 = width
|
|
_sa2_0800515A:
|
|
mov r5, sp
|
|
ldrh r5, [r5, #0x3c] @ r5 = (u16)transform->height
|
|
lsls r0, r5, #0x10
|
|
cmp r0, #0
|
|
ble _sa2_0800516C
|
|
mov r0, sb @ r0 = sb = sprDims
|
|
ldrh r3, [r0, #0xa] @ r3 = offsetY = sprDims->offsetY
|
|
ldrh r5, [r0, #6] @ r5 = height = sprDims->height
|
|
b _sa2_0800517A
|
|
_sa2_0800516C:
|
|
mov r3, sb @ r3 = sb = sprDims
|
|
ldrh r1, [r3, #6]
|
|
ldrh r0, [r3, #0xa]
|
|
subs r0, r1, r0
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10 @ r3 = offsetY = sprDims->height - sprDims->offsetY
|
|
adds r5, r1, #0 @ r5 = height = sprDims->height
|
|
_sa2_0800517A:
|
|
mov r0, sp @ r0 = sp = us
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10 @ r0 = us.unk0[0]
|
|
lsls r4, r4, #0x10
|
|
asrs r4, r4, #0x10 @ r4 = offsetX
|
|
lsrs r2, r2, #1 @ r2 = halfWidth = (width/2)
|
|
subs r4, r4, r2 @ r4 = offsetX -= halfWidth
|
|
adds r1, r0, #0
|
|
muls r1, r4, r1 @ r1 = (offsetX - halfWidth) * us.unk0[0]
|
|
ldrh r0, [r6] @ r0 = us.unk0[1]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
lsls r3, r3, #0x10
|
|
asrs r3, r3, #0x10
|
|
lsrs r5, r5, #1 @ r5 = halfHeight
|
|
subs r3, r3, r5 @ r3 = (offsetY - halfHeight)
|
|
muls r0, r3, r0 @ r0 = (offsetY - halfHeight) * us.unk0[1]
|
|
adds r1, r1, r0 @ r1 += r0
|
|
lsls r2, r2, #8
|
|
adds r1, r1, r2 @ r1 += Q(halfWidth)
|
|
asrs r1, r1, #8
|
|
ldr r0, [sp, #0x10]
|
|
subs r0, r0, r1
|
|
str r0, [sp, #0x10] @ us.posX -= I(r1)
|
|
ldrh r0, [r7] @ r0 = us.unk0[2]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
adds r1, r0, #0
|
|
muls r1, r4, r1 @ r1 = offsetX * us.unk0[2]
|
|
mov r4, r8
|
|
ldrh r0, [r4] @ r0 = us.unk0[3]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
muls r0, r3, r0 @ r0 = r3 * us.unk0[3]
|
|
adds r1, r1, r0 @ r1 += r0
|
|
lsls r5, r5, #8
|
|
adds r1, r1, r5 @ r1 += Q(halfHeight)
|
|
asrs r1, r1, #8
|
|
ldr r0, [sp, #0x14]
|
|
subs r0, r0, r1
|
|
str r0, [sp, #0x14] @ us.posY -= I(r1);
|
|
ldr r0, [sp, #0x10]
|
|
ldr r5, [sp, #0x24] @ r5 = sprite
|
|
strh r0, [r5, #0x16] @ sprite.x = us.posX
|
|
ldr r0, [sp, #0x14]
|
|
strh r0, [r5, #0x18] @ sprite.y = us.posY
|
|
_sa2_080051D8:
|
|
add sp, #0x40
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
.syntax divided
|