gint/src/render-fx/bopti-asm-mono-scsp.s

61 lines
882 B
ArmAsm

.global _bopti_asm_mono_scsp
.global _bopti_asm_mono_alpha_scsp
# REGISTER ALLOCATION:
# r0: layer
# r1: -
# r2: (temp)
# r3: vram longword
# --
# r4: vram pointer
# r5: layer pointer
# r6: mask
# r7: -(x&31)
_bopti_asm_mono_scsp:
# Read layer longword and shift it
mov.l @r5, r0
shld r7, r0
# Clear the target VRAM and unwanted image data
mov.l @r4, r3
and r6, r0
not r6, r6
and r6, r3
# Blit and return
or r0, r3
rts
mov.l r3, @r4
# REGISTER ALLOCATION:
# r0: AND layer
# r1: OR layer
# r2: (temp)
# r3: vram longword
# --
# r4: vram pointer
# r5: layer pointer
# r6: mask
# r7: -(x&31)
_bopti_asm_mono_alpha_scsp:
# Read layer longwords and shift them
mov.l @r5, r0
mov.l @(4,r5), r1
shld r7, r0
shld r7, r1
# Apply masks to clear layer data
and r6, r0
and r6, r1
# Blit to VRAM
mov.l @r4, r3
not r0, r0
and r0, r3
or r1, r3
rts
mov.l r3, @r4