69 lines
1.3 KiB
ArmAsm
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" |