From 1cc6f7aebe104a8406bfc15f18c6f2e9196771a5 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Mon, 7 Mar 2016 20:26:44 +1100 Subject: [PATCH] First attempt at HAM mode --- 012.ham_mode/Makefile | 10 ++++++++ 012.ham_mode/README.md | 8 +++++++ 012.ham_mode/bin/ham_mode.adf | Bin 0 -> 901120 bytes 012.ham_mode/constants.i | 10 ++++++++ 012.ham_mode/ham_mode.s | 42 +++++++++++++++++++++++++++++++++ 012.ham_mode/init.s | 43 ++++++++++++++++++++++++++++++++++ 012.ham_mode/utils.s | 23 ++++++++++++++++++ include/bplconbits.i | 3 +++ 8 files changed, 139 insertions(+) create mode 100644 012.ham_mode/Makefile create mode 100644 012.ham_mode/README.md create mode 100644 012.ham_mode/bin/ham_mode.adf create mode 100644 012.ham_mode/constants.i create mode 100644 012.ham_mode/ham_mode.s create mode 100644 012.ham_mode/init.s create mode 100644 012.ham_mode/utils.s create mode 100644 include/bplconbits.i diff --git a/012.ham_mode/Makefile b/012.ham_mode/Makefile new file mode 100644 index 0000000..11b2089 --- /dev/null +++ b/012.ham_mode/Makefile @@ -0,0 +1,10 @@ +MODULE=ham_mode.s +FLOPPY=bin/ham_mode.adf +IMAGEDATA=out/image-palette.s out/image-ham.bin +IMAGEFILE=../assets/gigi.png +EXTRA=$(IMAGEDATA) $(BOB_IMAGEDATA) init.s utils.s constants.i Makefile + +include ../shared/base.mk + +$(IMAGEDATA): $(IMAGECON) $(IMAGEFILE) Makefile + $(IMAGECON) --input $(IMAGEFILE) --output out/image --ham --output-bitplanes --output-palette-asm diff --git a/012.ham_mode/README.md b/012.ham_mode/README.md new file mode 100644 index 0000000..eabfa40 --- /dev/null +++ b/012.ham_mode/README.md @@ -0,0 +1,8 @@ +Hold and Modify Mode +==================== + +I added basic supprt to [imagecon](../tools/imagecon) to output HAM mode data. The algorithm used is pretty simple so the quality of the HAM display could definately be improved. + +[Download disk image](bin/ham_mode.adf?raw=true) + + diff --git a/012.ham_mode/bin/ham_mode.adf b/012.ham_mode/bin/ham_mode.adf new file mode 100644 index 0000000000000000000000000000000000000000..93d6ed9e9235e083db18149e2bee51f7e306dd1f GIT binary patch literal 901120 zcmeF3hg%a{*SFV95(q^IMWv_=hzi!&yBUg#9TgiEuy^6u3o;W##g2-K6|BeJ6%{qH zcg2pP2HOEESScy{TYD1E^StkW@LkutHJSFCwe~%`@7W=|M{nrlb9*y@EWS$_*aK8g z0Qe3NSiKtr(S12U-R=i1E$BXmz{UyS09ELj?vK0w^?(2V?+N_h6Zrr433Mw1Lop0h z4h1+nbY`q6qJUW1CfE~L+crTUumR8SXq!-13(N8Q0;IN0fEKU{zjGk1ZNfNU0Qavm zO6l7%tek1pzMNs>6#))SLx7D4!Ed{;4-gdDx#xBAIiwu^sTTpFx;~_|O_-;LwOtJY z={}8mLq%82T- za(~<=sn6Oq#BH+rtg;tw7pTv&D%_^1&)RRm?PB#=mtDABsy^$SjN9evvyQ`Yo2ovm zp!!vKe+q8XP(Kp4Yte2W+@`C~x@O^agZiw)UfgcN?K<3UL3?@D_`n;iDf9934}RX^ z=Oca!@$(fwpYekgEEMDCH-3Hs5JD`>u~Y!jg@^91NuOr9E4!vF+t4M4KLHMU4}(C>l+Xca@Ly~XLKK%T5VyZ2q~ z&=T}p^ie!Vgt_$&33!?E%ApH38zo3przZjghD|U0pYw*DXXAwD}3ei*EiXxtAf9JVX=h$1Z;PyK{ z2}U&P>lEsb_XgJHJQ*$bW1R@-cd?DvRLK~&A)Dk^3cl9%L=6G`8een1M0i;*j{0S? zR3Mj~wuWT8qB2O;@7#Xe(A>i|ib`fve^9W-TxpOy3?>4)V)Fp8fFmyEtG( z^wCA0DxPJVj~87nh1)+8%VkX8Zj#RU`OZIlO?ZB-Q}gZqA@VNwvdw0LI;NPZD11b> zn7&6P4!K8wx2OU|gJSRk2oO00;dDrfyoiguHk~TeYvA^gdmq$p@DKQ;bVI-LwM!#G ztNgKs_6BBeoJh?QSG`H}`p{!4;A9qi%d2%| zo&9s{s%T>(uB;rJ>}B_g_nN76CBu;yG-PCh9>hRzAoG9qdnQ=gcUdv!&KGaJlI8dr z?^9gKxa!Dp5qu0?B%RT+=@;0EO!J4v4ek)&SMtlEJFi_=3~Pvu_c(CKBWH#?>T!GH zGR2p3pkyG#j>j`r-g@_JI(REv`t>8*NICUEin~u&>i48N6~rY|ke7woYsO2lGg_LJ zZ0_BWIC~f!*Cy17p?;m0WFYSWD{p}c#J4ETUh>Is?diqzl_lP;Q?G>Q%Y=ughhk2? zv^fN`EEzethg5tCsr@Uz#S6`<6V-cH$XjXFbE3nL4yb!Tc}qnfT^Fh|lJsWpF{Pl( zxs03~aAq}FS5#m#EKtwJ%O3}kCd}v?KDdRzP%A#}GT#+EZfv}pZMsoo-PD_oxUF

A=R6LT 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 z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK ofB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%;FN2)kOcegFUf literal 0 HcmV?d00001 diff --git a/012.ham_mode/constants.i b/012.ham_mode/constants.i new file mode 100644 index 0000000..4b1a596 --- /dev/null +++ b/012.ham_mode/constants.i @@ -0,0 +1,10 @@ +LVL3_INT_VECTOR equ $6c +SCREEN_WIDTH equ 320 +SCREEN_HEIGHT equ 256 +SCREEN_WIDTH_BYTES equ (SCREEN_WIDTH/8) +SCREEN_BIT_DEPTH equ 6 +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 diff --git a/012.ham_mode/ham_mode.s b/012.ham_mode/ham_mode.s new file mode 100644 index 0000000..03e98ae --- /dev/null +++ b/012.ham_mode/ham_mode.s @@ -0,0 +1,42 @@ + include "../include/registers.i" + include "hardware/dmabits.i" + include "hardware/intbits.i" + + include "constants.i" + +entry: + lea CUSTOM,a6 + bsr init + bsr.s installColorPalette + +.mainLoop: + bsr waitVerticalBlank + bra .mainLoop + + include "init.s" + include "utils.s" + +installColorPalette: + include "out/image-palette.s" + rts + +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.w BPL6PTL,0 + dc.w BPL6PTH,0 + + dc.l $fffffffe + +bitplanes: + incbin "out/image-ham.bin" + ;; incbin "out/image.bin" \ No newline at end of file diff --git a/012.ham_mode/init.s b/012.ham_mode/init.s new file mode 100644 index 0000000..64f8614 --- /dev/null +++ b/012.ham_mode/init.s @@ -0,0 +1,43 @@ + include "../include/bplconbits.i" + ;; custom chip base globally in a6 +init: + movem.l d0-a6,-(sp) + move #$7ff,DMACON(a6) ; disable all dma + move #$7fff,INTENA(a6) ; disable all interrupts + + ;; set up default palette + bsr.s installColorPalette + + ;; 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)|COLOR_ON|HOMOD,BPLCON0(a6) + move.w #(SCREEN_BIT_DEPTH<<12)|COLOR_ON|HOMOD,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_VERTB|INTF_INTEN),INTENA(a6) + movem.l (sp)+,d0-a6 + rts \ No newline at end of file diff --git a/012.ham_mode/utils.s b/012.ham_mode/utils.s new file mode 100644 index 0000000..bdde568 --- /dev/null +++ b/012.ham_mode/utils.s @@ -0,0 +1,23 @@ +waitVerticalBlank: + movem.l d0-a6,-(sp) +.loop move.l $dff004,d0 + and.l #$1ff00,d0 + cmp.l #303<<8,d0 + bne.b .loop + movem.l (sp)+,d0-a6 + rts + + + +waitRaster: ;wait for rasterline d0.w. Modifies d0-d2/a0. + movem.l d0-a6,-(sp) + 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 + movem.l (sp)+,d0-a6 + rts \ No newline at end of file diff --git a/include/bplconbits.i b/include/bplconbits.i new file mode 100644 index 0000000..0b7bb5e --- /dev/null +++ b/include/bplconbits.i @@ -0,0 +1,3 @@ +COLOR_ON equ $200 +LACE equ $004 +HOMOD equ $800 \ No newline at end of file