AmigaExamples/009.anim_blit/anim_blit.s

69 lines
1.3 KiB
ArmAsm

include "../include/registers.i"
include "hardware/dmabits.i"
include "hardware/intbits.i"
include "constants.i"
entry:
lea CUSTOM,a6
bsr init
lea bitplanes(pc),a0
lea emoji,a1
lea emojiMask,a2
.mainLoop:
bsr waitvbl
bsr moveBlitterObject
bra.s .mainLoop
include "blit.s"
include "init.s"
include "utils.s"
moveBlitterObject:
lea xpos(pc),a3
lea ypos(pc),a4
add.l #1,xpos ; move the blitter object one pixel to the right
add.l #1,ypos ; move the blitter object one pixel down
bsr blitObject64 ; blit 64 pixel object (x=d0,y=d1,background=a0,object=a1,mask=a2)
cmp.l #SCREEN_WIDTH-BLIT_BOB_WIDTH64+16,xpos ; check if we need to wrap the x
bne.s .skip
move.l #0,xpos ; wrap x back to 0
.skip:
cmp.l #SCREEN_HEIGHT-BLIT_BOB_HEIGHT64,ypos ; check if we need to wrap the y
bne.s .done
move.l #0,ypos ; wrap y back to 0
.done:
rts
installPalette:
include "out/image-palette.s"
rts
xpos: dc.l 0
ypos: dc.l 0
copper:
;; bitplane pointers must be first else poking addresses will be incorrect
dc.w BPL1PTL,0
dc.w BPL1PTH,0
dc.w BPL2PTL,0
dc.w BPL2PTH,0
dc.w BPL3PTL,0
dc.w BPL3PTH,0
dc.w BPL4PTL,0
dc.w BPL4PTH,0
dc.w BPL5PTL,0
dc.w BPL5PTH,0
dc.l $fffffffe
bitplanes:
incbin "out/image.bin"
emoji:
incbin "out/emoji.bin"
emojiMask:
incbin "out/emoji-mask.bin"