This commit is contained in:
alpine9000
2016-03-04 16:15:25 +11:00
parent e70e4f2b33
commit dc1e8fa297
5 changed files with 23 additions and 20 deletions
+8 -6
View File
@@ -5,7 +5,8 @@
include "constants.i"
entry:
include "init.s"
lea CUSTOM,a6
bsr init
moveq #32,d0 ; starting x position for the blitter object
moveq #32,d1 ; starting y position for the blitter object
@@ -17,20 +18,21 @@ entry:
bsr.s blitObject64 ; blit 64 pixel object (x=d0,y=d1,background=a0,object=a1,mask=a2)
addq #1,d0 ; move the blitter object one pixel to the left
addq #1,d1 ; move the blitter object one pixel down
cmp.l #SCREEN_WIDTH-BOB_WIDTH,d0 ; check if we need to wrap the x
cmp.l #SCREEN_WIDTH-BLIT_BOB_WIDTH64,d0 ; check if we need to wrap the x
bne.s .skip
moveq #0,d0 ; wrap x back to zero
moveq #0,d0 ; wrap x back to zero
.skip:
cmp.l #SCREEN_HEIGHT-BOB_HEIGHT,d1 ; check if we need to wrap the y
cmp.l #SCREEN_HEIGHT-BLIT_BOB_HEIGHT64,d1 ; check if we need to wrap the y
bne.s .skip2
moveq #0,d1 ; wrap y back to the top
moveq #0,d1 ; wrap y back to the top
.skip2:
bra.s .mainLoop
include "utils.s"
include "blit.s"
include "init.s"
copper:
;; bitplane pointers must be first else poking addresses will be incorrect
Binary file not shown.
+9 -9
View File
@@ -1,5 +1,5 @@
;; BLTCON? configuration
;; http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node011C.html
;; http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node011C.html
;; blitter logic function minterm truth table
;; fill in D column for desired function
;; A(mask) B(bob) C(bg) D(dest)
@@ -22,10 +22,10 @@ BLIT_SRCB equ $400
BLIT_SRCA equ $800
BLIT_ASHIFTSHIFT equ 12 ;Bit index of ASH? bits
BOB_WIDTH equ 64+16 ; Must blit extra word to allow shifting
BOB_HEIGHT equ 64
BOB_WIDTH_BYTES equ BOB_WIDTH/8
BOB_WIDTH_WORDS equ BOB_WIDTH/16
BLIT_BOB_WIDTH64 equ 64+16 ; Must blit extra word to allow shifting
BLIT_BOB_HEIGHT64 equ 64
BLIT_BOB_WIDTH64_BYTES equ BLIT_BOB_WIDTH64/8
BLIT_BOB_WIDTH64_WORDS equ BLIT_BOB_WIDTH64/16
blitWait:
tst DMACONR(a6) ;for compatibility
@@ -34,7 +34,7 @@ blitWait:
bne.s .waitblit
rts
;; blitobject
;; blitobject64
;; d0 - xpos
;; d1 - ypos
;; a0 - display
@@ -67,8 +67,8 @@ blitObject64:
move.w #$0000,BLTALWM(a6) ; mask out last word
move.w #-2,BLTAMOD(a6) ; negative 2 byte modulo to account for extra blitted word
move.w #-2,BLTBMOD(a6) ; negative 2 byte modulo to account for extra blitted word
move.w #SCREEN_WIDTH_BYTES-BOB_WIDTH_BYTES,BLTCMOD(a6) ;C modulo
move.w #SCREEN_WIDTH_BYTES-BOB_WIDTH_BYTES,BLTDMOD(a6) ;D modulo
move.w #SCREEN_WIDTH_BYTES-BLIT_BOB_WIDTH64_BYTES,BLTCMOD(a6) ;C modulo
move.w #SCREEN_WIDTH_BYTES-BLIT_BOB_WIDTH64_BYTES,BLTDMOD(a6) ;D modulo
move.l a2,BLTAPTH(a6) ; mask bitplane
move.l a1,BLTBPTH(a6) ; bob bitplane
@@ -80,6 +80,6 @@ blitObject64:
move.l d2,BLTCPTH(a6) ;background top left corner
move.l d2,BLTDPTH(a6) ;destination top left corner
move.w #(BOB_HEIGHT*SCREEN_BIT_DEPTH)<<6|(BOB_WIDTH_WORDS),BLTSIZE(a6) ;rectangle size, starts blit
move.w #(BLIT_BOB_HEIGHT64*SCREEN_BIT_DEPTH)<<6|(BLIT_BOB_WIDTH64_WORDS),BLTSIZE(a6) ;rectangle size, starts blit
movem.l (sp)+,d0-a6
rts
+4 -4
View File
@@ -1,6 +1,6 @@
;; custom chip base globally in a6
lea CUSTOM,a6
init:
movem.l d0-a6,-(sp)
move #$7ff,DMACON(a6) ; disable all dma
move #$7fff,INTENA(a6) ; disable all interrupts
@@ -36,5 +36,5 @@
move.w COPJMP1(a6),d0
move.w #(DMAF_BLITTER|DMAF_SETCLR!DMAF_COPPER!DMAF_RASTER!DMAF_MASTER),DMACON(a6)
move.w #(INTF_SETCLR|INTF_INTEN|INTF_EXTER),INTENA(a6)
movem.l (sp)+,d0-a6
rts
+2 -1
View File
@@ -8,7 +8,8 @@ SUBDIRS=tools/makeadf \
005.copper_vert\
006.simple_blit\
007.masked_blit\
008.shift_blit
008.shift_blit\
009.anim_blit
.PHONY: subdirs $(SUBDIRS)