From 5da42485ee742b5b1984c6c387a606dcf60f2806 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Fri, 4 Mar 2016 11:12:30 +1100 Subject: [PATCH] First attempt at masked blit --- 007.masked_blit/Makefile | 22 ++++ 007.masked_blit/README.md | 54 ++++++++++ 007.masked_blit/bin/mask_blit.adf | Bin 0 -> 901120 bytes 007.masked_blit/masked_blit.s | 163 ++++++++++++++++++++++++++++++ assets/emoji.png | Bin 0 -> 4252 bytes 5 files changed, 239 insertions(+) create mode 100644 007.masked_blit/Makefile create mode 100644 007.masked_blit/README.md create mode 100644 007.masked_blit/bin/mask_blit.adf create mode 100644 007.masked_blit/masked_blit.s create mode 100644 assets/emoji.png diff --git a/007.masked_blit/Makefile b/007.masked_blit/Makefile new file mode 100644 index 0000000..13c4e2e --- /dev/null +++ b/007.masked_blit/Makefile @@ -0,0 +1,22 @@ +MODULE=masked_blit.s +FLOPPY=bin/mask_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 ../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/007.masked_blit/README.md b/007.masked_blit/README.md new file mode 100644 index 0000000..2836c20 --- /dev/null +++ b/007.masked_blit/README.md @@ -0,0 +1,54 @@ +perform a masked blit +===================== + +Extending [006.simple_blit](../006.simple_blit), we now add a mask to the blit. + +Using the "cookie-cut" blitter logic funtion we set up the blitter to use all four DMA channels. + +[From the hardware manual](http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node011D.html): +> To draw the car, we might use the A DMA channel to fetch the car mask, +> the B DMA channel to fetch the actual car data, the C DMA channel to +> fetch the background, and the D DMA channel to write out the new image. + + ``` +A = mask +B = blitter object (sprite) +C = background +D = destination (background) +``` + +Now we calculate the [logic function min term](http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node011C.html: + +blitter logic function minterm truth table +------------------------------------------ +We fill in the desired logic values in the D column. In this case D is set if: + * The mask bit is set and the bob bit is set + * The mask bit is not set and the background bit is set + +|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| + +Then we read D column from bottom up to give us the logic function minterm: + ``` +11001010 = $ca +``` + +This is then ready to be used in the [BLTCON0](http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node001A.html) register setup. + +[imagecon](../tools/imagecon) generates the interleaved mask bitplanes for the A channel. + +We then blit the sprite to the background and notice it now has a shape! + +[Download disk image](bin/mask_blit.adf?raw=true) + +Screenshot: + +![Screenshot](screenshot.png?raw=true) diff --git a/007.masked_blit/bin/mask_blit.adf b/007.masked_blit/bin/mask_blit.adf new file mode 100644 index 0000000000000000000000000000000000000000..2359ac6cf03cae3e2adf1c6545e82ef254512746 GIT binary patch literal 901120 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 F6W!3dZJ86(d*rkA8=s!?P;dU?dtb`w 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