mirror of
https://github.com/alpine9000/amiga_examples
synced 2025-12-08 14:59:01 +00:00
Clean up
This commit is contained in:
@@ -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.
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user