mirror of
https://github.com/irmen/prog8.git
synced 2025-02-23 22:29:04 +00:00
added cx16 sprites.move , movex and movey routines to move sprite by deltas
This commit is contained in:
parent
afe521b0c9
commit
b58a3ba1bb
@ -81,6 +81,33 @@ sprites {
|
||||
cx16.vpoke(1, sprite_reg+1, msb(ypos))
|
||||
}
|
||||
|
||||
sub move(ubyte spritenum, word dx, word dy) {
|
||||
; move a sprite based on its current position
|
||||
sprite_reg = VERA_SPRITEREGS + 2 + spritenum*$0008
|
||||
cx16.r1 = mkword(cx16.vpeek(1, sprite_reg+1), cx16.vpeek(1, sprite_reg)) as word + dx
|
||||
cx16.r2 = mkword(cx16.vpeek(1, sprite_reg+3), cx16.vpeek(1, sprite_reg+2)) as word + dy
|
||||
cx16.vpoke(1, sprite_reg, cx16.r1L)
|
||||
cx16.vpoke(1, sprite_reg+1, cx16.r1H)
|
||||
cx16.vpoke(1, sprite_reg+2, cx16.r2L)
|
||||
cx16.vpoke(1, sprite_reg+3, cx16.r2H)
|
||||
}
|
||||
|
||||
sub movex(ubyte spritenum, word dx) {
|
||||
; move a sprite horizontally based on its current position
|
||||
sprite_reg = VERA_SPRITEREGS + 2 + spritenum*$0008
|
||||
cx16.r1 = mkword(cx16.vpeek(1, sprite_reg+1), cx16.vpeek(1, sprite_reg)) as word + dx
|
||||
cx16.vpoke(1, sprite_reg, cx16.r1L)
|
||||
cx16.vpoke(1, sprite_reg+1, cx16.r1H)
|
||||
}
|
||||
|
||||
sub movey(ubyte spritenum, word dy) {
|
||||
; move a sprite vertically based on its current position
|
||||
sprite_reg = VERA_SPRITEREGS + 4 + spritenum*$0008
|
||||
cx16.r1 = mkword(cx16.vpeek(1, sprite_reg+1), cx16.vpeek(1, sprite_reg)) as word + dy
|
||||
cx16.vpoke(1, sprite_reg, cx16.r1L)
|
||||
cx16.vpoke(1, sprite_reg+1, cx16.r1H)
|
||||
}
|
||||
|
||||
sub getx(ubyte spritenum) -> word {
|
||||
sprite_reg = VERA_SPRITEREGS + 2 + spritenum*$0008
|
||||
return mkword(cx16.vpeek(1, sprite_reg+1), cx16.vpeek(1, sprite_reg)) as word
|
||||
|
@ -29,6 +29,9 @@ main {
|
||||
word ypos
|
||||
bool flippedx = false
|
||||
|
||||
sprites.pos(1, 0, 100)
|
||||
sprites.pos(2, 100, 300)
|
||||
|
||||
repeat {
|
||||
if flippedx
|
||||
xpos -= 2
|
||||
@ -49,6 +52,7 @@ main {
|
||||
txt.print(" ")
|
||||
|
||||
sys.waitvsync()
|
||||
; we set absolute sprite position, rather than the relative move() routines
|
||||
sprites.pos(1, xpos, ypos)
|
||||
sprites.pos(2, xpos, ypos+64)
|
||||
sprites.flipx(1, flippedx)
|
||||
|
Loading…
x
Reference in New Issue
Block a user