diff --git a/graphics/dhgr/Makefile b/graphics/dhgr/Makefile index 15ebb017..d1b1a17f 100644 --- a/graphics/dhgr/Makefile +++ b/graphics/dhgr/Makefile @@ -2,17 +2,20 @@ include ../../Makefile.inc DOS33 = ../../utils/dos33fs-utils/dos33 TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft +B2D = ../../utils/bmp2dhr/b2d +LZSA = ~/research/lzsa/lzsa/lzsa all: dhgr.dsk -dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS +dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS DHR_LOAD cp empty.dsk dhgr.dsk - $(DOS33) -y plasma.dsk SAVE A HELLO + $(DOS33) -y dhgr.dsk SAVE A HELLO $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER2 $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER3 $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 RASTER4 + $(DOS33) -y dhgr.dsk BSAVE -a 0x1000 DHR_LOAD $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 BITS $(DOS33) -y dhgr.dsk BSAVE -a 0x0300 LOTS @@ -21,6 +24,20 @@ dhgr.dsk: HELLO RASTER RASTER2 RASTER3 RASTER4 BITS LOTS HELLO: hello.bas $(TOKENIZE) < hello.bas > HELLO + +### + +C64.AUX.lzsa: C64.AUX + $(LZSA) -r -f2 C64.AUX C64.AUX.lzsa + +C64.BIN.lzsa: C64.BIN + $(LZSA) -r -f2 C64.BIN C64.BIN.lzsa + +### + +C64.AUX: c64.bmp + $(B2D) c64.bmp A + ### RASTER: raster.o @@ -55,6 +72,15 @@ RASTER4: raster4.o raster4.o: raster4.s ca65 -o raster4.o raster4.s -l raster4.lst +### + +DHR_LOAD: dhr_load.o + ld65 -o DHR_LOAD dhr_load.o -C ../../linker_scripts/apple2_1000.inc + +dhr_load.o: dhr_load.s C64.AUX.lzsa C64.BIN.lzsa + ca65 -o dhr_load.o dhr_load.s -l dhr_load.lst + + ### diff --git a/graphics/hgr/snowflake/Makefile b/graphics/hgr/snowflake/Makefile index f9ce78a2..ccc14484 100644 --- a/graphics/hgr/snowflake/Makefile +++ b/graphics/hgr/snowflake/Makefile @@ -1,39 +1,21 @@ -include ../../Makefile.inc +include ../../../Makefile.inc -DOS33 = ../../utils/dos33fs-utils/dos33 -TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft +DOS33 = ../../../utils/dos33fs-utils/dos33 +TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft +LINKER_SCRIPTS = ../../../linker_scripts -all: hgr.dsk +all: snowflake.dsk -hgr.dsk: SNOW SNOW2 SNOW3 STARS FASTAR - cp empty.dsk hgr.dsk - $(DOS33) -y hgr.dsk BSAVE -a 0x0300 SNOW - $(DOS33) -y hgr.dsk BSAVE -a 0x0300 SNOW2 - $(DOS33) -y hgr.dsk BSAVE -a 0x0367 SNOW3 - $(DOS33) -y hgr.dsk BSAVE -a 0x0300 STARS - $(DOS33) -y hgr.dsk BSAVE -a 0x0C00 FASTAR - -### - -FASTAR: fastar.o - ld65 -o FASTAR fastar.o -C ../../linker_scripts/apple2_c00.inc - -fastar.o: fastar.s - ca65 -o fastar.o fastar.s -l fastar.lst - - -### - -STARS: stars.o - ld65 -o STARS stars.o -C ../../linker_scripts/apple2_300.inc - -stars.o: stars.s - ca65 -o stars.o stars.s -l stars.lst +snowflake.dsk: SNOW SNOW2 SNOW3 + cp empty.dsk snowflake.dsk + $(DOS33) -y snowflake.dsk BSAVE -a 0x0300 SNOW + $(DOS33) -y snowflake.dsk BSAVE -a 0x0300 SNOW2 + $(DOS33) -y snowflake.dsk BSAVE -a 0x0367 SNOW3 ### SNOW: snow.o - ld65 -o SNOW snow.o -C ../../linker_scripts/apple2_300.inc + ld65 -o SNOW snow.o -C $(LINKER_SCRIPTS)/apple2_300.inc snow.o: snow.s ca65 -o snow.o snow.s -l snow.lst @@ -41,7 +23,7 @@ snow.o: snow.s ### SNOW2: snow2.o - ld65 -o SNOW2 snow2.o -C ../../linker_scripts/apple2_300.inc + ld65 -o SNOW2 snow2.o -C $(LINKER_SCRIPTS)/apple2_300.inc snow2.o: snow2.s ca65 -o snow2.o snow2.s -l snow2.lst @@ -58,4 +40,4 @@ snow3.o: snow3.s ### clean: - rm -f *~ *.o *.lst SNOW SNOW2 SNOW3 STARS + rm -f *~ *.o *.lst SNOW SNOW2 SNOW3 diff --git a/graphics/hgr/snowflake/fastar.s b/graphics/hgr/snowflake/fastar.s deleted file mode 100644 index 673f29fb..00000000 --- a/graphics/hgr/snowflake/fastar.s +++ /dev/null @@ -1,257 +0,0 @@ -DRAW_PAGE = $E6 -ZL = $06 -ZH = $07 -SEEDLO = $4E -SEEDHI = $4F - -NUM1 = $F0 -NUM1L = $F1 -NUM2 = $F2 -NUM2L = $F3 -RESULT = $F4 -RESULT2 = $F5 -RESULT3 = $F6 -RESULT4 = $F7 -XL = $F8 -XH = $F9 -YL = $FA -YH = $FB -MINUS = $FC -Z = $FD - -HGR2 = $F3D8 -HPLOT0 = $F457 ; plot (Y,X), (A) -HGLIN = $F53A ; plot to (A,X), (Y) -HCLEAR0 = $F3F2 ; clear current hgr page to blackh -HCOLOR = $F6F0 ; color in X (must be 0..7) - - - lda #$ff - sta XH - - ldx #0 - - jmp check_bounds -populate_loop: - ; Z = XXYY YYYY -; C=Z*.125 -; A=A+(A-64)*C -; B=B+(B-64)*C - - - - ; X is in NUM1 for this - - lda #0 - sta MINUS - - sec - lda XH - sbc #64 - bpl no_minus -set_minus: - inc MINUS - - sec - lda #0 - sbc XL - sta NUM1 - lda #0 - sbc XH - sta NUM1+1 - jmp do_mult - -no_minus: - sta NUM1+1 - lda XL - sta NUM1 - -do_mult: - lda #0 - sta NUM2+1 - lda Z - sta NUM2 - - txa - pha - - jsr mult16 - - pla - tax - - ; result has result but due to our fixed point - ; we want to shift the whole thing left by 2 - ; then grab RESULT+2 as high and RESULT+1 as low - - rol RESULT+1 - rol RESULT+2 - ror RESULT+1 - lda RESULT+2 - - lda RESULT+1 ; low - sta NUM1 - lda RESULT+2 ; hight - sta NUM1+1 - - ; add to X; subtract if minus - lda MINUS - beq not_minus - - sec - lda #00 - sbc NUM1 - sta NUM1 - lda #00 - sbc NUM1+1 - sta NUM1+1 - -not_minus: - clc - lda XL - adc NUM1 - sta XL - lda XH - adc NUM1+1 - sta XH - - ; Z=Z+.125 - - clc - lda Z - adc #$8 - sta Z - - - ; check to see if out of bounds -check_bounds: - lda XH - bmi redo_point - lda YH - bpl all_good - -redo_point: - ; store a break in the lines - lda #0 - sta $1000,X - sta $1100,X - sta Z ; needed? - inx - - jsr rand16 - sta XH - jsr rand16 - sta YH - -all_good: - - - ; write out - - lda XH - sta $1000,X - lda YH - sta $1100,X - - inx - beq done_pop - jmp populate_loop -done_pop: - ;========================= - ;========================= - ;========================= - - jsr HGR2 - ldx #3 - jsr HCOLOR - - ldx #0 -star_loop: - txa - and #$1 - beq page2 -page1: ; draw page1, show page2 - bit $C055 - lda #$20 - bne adjust_page -page2: - bit $C054 - lda #$40 -adjust_page: - sta DRAW_PAGE - - ; clear background - jsr HCLEAR0 - - txa - pha - - lda $1100,X ; ycoord - beq skip_draw - pha - ldy $1000,X ; xcoord - tya - tax - ldy #0 - pla - - jsr HPLOT0 ; plot (Y,X), (A) - -skip_draw: - - pla - tax - - inx - jmp star_loop - - - ; make sure seed isn't 0000 -rand16: - ; batari rand16 - lda SEEDHI - lsr - rol SEEDLO - bcc noeor - eor #$B4 -noeor: - sta SEEDHI - eor SEEDLO - - ; we only want 127 bits - and #$7f - - rts - - - ;===================== - ;===================== - ; 16x16 -> 32 multiply - ;===================== - ;===================== - ; destroys NUM2 -mult16: - lda #0 ; Initialize RESULT to 0 - sta RESULT+2 - ldx #16 ; There are 16 bits in NUM2 -L1: - lsr NUM2+1 ; top part of 16 bit shift right - ror NUM2 - bcc L2 ; 0 or 1? - tay ; If 1, add NUM1 (hi byte of RESULT is in A) - clc - lda NUM1 - adc RESULT+2 - sta RESULT+2 - tya - adc NUM1+1 -L2: - ror ; "Stairstep" shift - ror RESULT+2 - ror RESULT+1 - ror RESULT - dex - bne L1 - sta RESULT+3 - - rts diff --git a/graphics/hgr/snowflake/stars.s b/graphics/hgr/snowflake/stars.s deleted file mode 100644 index df202606..00000000 --- a/graphics/hgr/snowflake/stars.s +++ /dev/null @@ -1,49 +0,0 @@ -GBASL = $26 -GBASH = $27 -HGRPAGE = $E6 - -PAGE0 = $C054 -PAGE1 = $C055 - -HGR = $F3E2 -HGR2 = $F3D8 -HCLR = $F3F2 -HPOSN = $F411 -WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us - -stars: - jsr HGR - jsr HGR2 -; lda #0 -; sta ybase - lda #$20 - sta HGRPAGE - -move_stars: - lda HGRPAGE - cmp #$20 - beq show_page1 -show_page2: - bit PAGE1 - lsr HGRPAGE - bne doit - -show_page1: - bit PAGE0 - asl HGRPAGE - -doit: - jsr HCLR - - ; FORI=1TO10 - ; A=X(I) - ; B=Y(I) - ; C=Z(I)*.1 - ; X(I)=A+(A-140)*C - ; Y(I)=B+(B-96)*C - ; Z(I)=Z(I)+.1 - ; IFX(I)<0ORX(I)>279ORY(I)<0ORY(I)>191THENX(I)=RND(1)*280:Y(I)=RND(1)*192:Z(I)=0:GOTO7 - ;HPLOTA,BTOX(I),Y(I) - ;NEXTI - - jmp move_stars