From 380c8143b17cdd864c116dcdf06b995b6da720c8 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Fri, 4 Mar 2016 13:03:35 +1100 Subject: [PATCH] Shifted blit take 1 --- 008.shift_blit/Makefile | 22 ++++ 008.shift_blit/README.md | 26 +++++ 008.shift_blit/bin/shift_blit.adf | Bin 0 -> 901120 bytes 008.shift_blit/screenshot.png | Bin 0 -> 31793 bytes 008.shift_blit/shift_blit.s | 166 ++++++++++++++++++++++++++++++ 5 files changed, 214 insertions(+) create mode 100644 008.shift_blit/Makefile create mode 100644 008.shift_blit/README.md create mode 100644 008.shift_blit/bin/shift_blit.adf create mode 100644 008.shift_blit/screenshot.png create mode 100644 008.shift_blit/shift_blit.s diff --git a/008.shift_blit/Makefile b/008.shift_blit/Makefile new file mode 100644 index 0000000..6a3777b --- /dev/null +++ b/008.shift_blit/Makefile @@ -0,0 +1,22 @@ +MODULE=shift_blit.s +FLOPPY=bin/shift_blit.adf +IMAGEDATA=out/image-palette.s out/image.bin +IMAGEFILE=../assets/mission-beach.png +BOB_BASE=out/emoji +BOB_IMAGEDATA=$(BOB_BASE).bin $(BOB_BASE)-mask.bin +BOB_IMAGEFILE=../assets/emoji.png +EXTRA=$(IMAGEDATA) $(BOB_IMAGEDATA) +SHARED_PALETTE_BASE=out/shared-palette +SHARED_PALETTE=$(SHARED_PALETTE_BASE).pal + +include ../shared/base.mk + +$(SHARED_PALETTE): $(IMAGEFILE) $(BOB_IMAGEFILE) + $(IMAGECON) --input $(IMAGEFILE),$(BOB_IMAGEFILE) --output $(SHARED_PALETTE_BASE) --colors 32 --quantize --output-palette + +$(IMAGEDATA): $(IMAGECON) $(IMAGEFILE) $(SHARED_PALETTE) + $(IMAGECON) --input $(IMAGEFILE) --output out/image --output-bitplanes --output-palette-asm --use-palette $(SHARED_PALETTE) + +$(BOB_IMAGEDATA): $(IMAGECON) $(BOB_IMAGEFILE) $(SHARED_PALETTE) + $(IMAGECON) --input $(BOB_IMAGEFILE) --output $(BOB_BASE) --output-bitplanes --use-palette $(SHARED_PALETTE) + $(IMAGECON) --input $(BOB_IMAGEFILE) --output $(BOB_BASE) --output-mask --quantize diff --git a/008.shift_blit/README.md b/008.shift_blit/README.md new file mode 100644 index 0000000..3c5a17c --- /dev/null +++ b/008.shift_blit/README.md @@ -0,0 +1,26 @@ +perform a shifted blit +====================== + +Extending [007.masked_blit](../007.masked_blit), we now add the capability to blit to non word aligned columns. + +The blitter can only address word aligned screen positions. This makes drawing something on a non word aligned boundary slightly more complex. + +So the algorithm for drawing to non word aligned boundaries is as follows: + 1. The destination address is the word aligned address to the left of the desired position. + 2. Command the blitter to blit an extra word to the right of our blitter object. + 3. We mask the trailing word of each line to prevent the extra word from being blit. + 4. We shift the data by the difference in bits between the desired column and the word aligned column from (1). + 5. We make the line modulos #-2 so blitter object data is correctly fetched. + + + +[Download disk image](bin/shift_blit.adf?raw=true) + +Screenshot: + +![Screenshot](screenshot.png?raw=true) + +Masked blit screenshot for reference: + +![Screenshot](../007.masked_blit/screenshot.png?raw=true) + diff --git a/008.shift_blit/bin/shift_blit.adf b/008.shift_blit/bin/shift_blit.adf new file mode 100644 index 0000000000000000000000000000000000000000..cacf0a79a50d0f76b77bc14a39ebeb9dbb971048 GIT binary patch literal 901120 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

_){4^YZ~ynZL|Zki8}L-`DO{F|i!+P( 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 sT8 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 literal 0 HcmV?d00001 diff --git a/008.shift_blit/shift_blit.s b/008.shift_blit/shift_blit.s new file mode 100644 index 0000000..efd2933 --- /dev/null +++ b/008.shift_blit/shift_blit.s @@ -0,0 +1,166 @@ + include "../include/registers.i" + include "hardware/dmabits.i" + include "hardware/intbits.i" + +LVL3_INT_VECTOR equ $6c +SCREEN_WIDTH equ 320 +SCREEN_HEIGHT equ 256 +SCREEN_WIDTH_BYTES equ (SCREEN_WIDTH/8) +SCREEN_BIT_DEPTH equ 5 +SCREEN_RES equ 8 ; 8=lo resolution, 4=hi resolution +RASTER_X_START equ $81 ; hard coded coordinates from hardware manual +RASTER_Y_START equ $2c +RASTER_X_STOP equ RASTER_X_START+SCREEN_WIDTH +RASTER_Y_STOP equ RASTER_Y_START+SCREEN_HEIGHT + +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 +BOB_XPOS equ 16 +BOB_YPOS equ 16 +BOB_XPOS_BYTES equ (BOB_XPOS)/8 + + +entry: + ;; custom chip base globally in a6 + lea CUSTOM,a6 + + move #$7ff,DMACON(a6) ; disable all dma + move #$7fff,INTENA(a6) ; disable all interrupts + + include "out/image-palette.s" + if 0 + ;; reset color registers to white to prevent startup flicker + move.l #32,d0 + lea COLOR00(a6),a0 +.loop: + move.w #$FFF,(a0) + addq #2,a0 + dbra d0,.loop + endif + + ;; set up playfield + move.w #(RASTER_Y_START<<8)|RASTER_X_START,DIWSTRT(a6) + move.w #((RASTER_Y_STOP-256)<<8)|(RASTER_X_STOP-256),DIWSTOP(a6) + + move.w #(RASTER_X_START/2-SCREEN_RES),DDFSTRT(a6) + move.w #(RASTER_X_START/2-SCREEN_RES)+(8*((SCREEN_WIDTH/16)-1)),DDFSTOP(a6) + + move.w #(SCREEN_BIT_DEPTH<<12)|$200,BPLCON0(a6) + move.w #SCREEN_WIDTH_BYTES*SCREEN_BIT_DEPTH-SCREEN_WIDTH_BYTES,BPL1MOD(a6) + move.w #SCREEN_WIDTH_BYTES*SCREEN_BIT_DEPTH-SCREEN_WIDTH_BYTES,BPL2MOD(a6) + + ;; poke bitplane pointers + lea bitplanes(pc),a1 + lea copper(pc),a2 + moveq #SCREEN_BIT_DEPTH-1,d0 +.bitplaneloop: + move.l a1,d1 + move.w d1,2(a2) + swap d1 + move.w d1,6(a2) + lea SCREEN_WIDTH_BYTES(a1),a1 ; bit plane data is interleaved + addq #8,a2 + dbra d0,.bitplaneloop + + ;; install copper list, then enable dma and selected interrupts + lea copper(pc),a0 + move.l a0,COP1LC(a6) + 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) + + bsr.s doblit + +.mainLoop: + move.w #$02a,d0 ;wait for EOFrame + bsr.s waitRaster + bra.s .mainLoop + +waitRaster: ;wait for rasterline d0.w. Modifies d0-d2/a0. + move.l #$1ff00,d2 + lsl.l #8,d0 + and.l d2,d0 + lea $dff004,a0 +.wr: move.l (a0),d1 + and.l d2,d1 + cmp.l d1,d0 + bne.s .wr + rts + +blitWait: + tst DMACONR(a6) ;for compatibility +.waitblit: + btst #6,DMACONR(a6) + bne.s .waitblit + rts + +;; BLTCON? configuration +;; 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) +;; - - - - +;; 0 0 0 0 +;; 0 0 1 1 +;; 0 1 0 0 +;; 0 1 1 1 +;; 1 0 0 0 +;; 1 0 1 0 +;; 1 1 0 1 +;; 1 1 1 1 +;; read D column from bottom up = 11001010 = $ca +;; this is used in the LF? bits +BLIT_LF_MINTERM equ $ca +BLIT_A_SOURCE_SHIFT equ 8 ; number of pixels from BOB_XPOS to move the bob right +BLIT_B_SOURCE_SHIFT equ 8 ; number of pixels from BOB_XPOS to move the bob right +BLIT_DEST equ $100 +BLIT_SRCC equ $200 +BLIT_SRCB equ $400 +BLIT_SRCA equ $800 +BLIT_ASHIFTSHIFT equ 12 ;Bit index of ASH? bits +BLIT_BLTCON1 equ BLIT_B_SOURCE_SHIFT<