diff --git a/demos/lovebyte2023/ooze_32/Makefile b/demos/lovebyte2023/ooze_32/Makefile index e6dddc3e..75c6940b 100644 --- a/demos/lovebyte2023/ooze_32/Makefile +++ b/demos/lovebyte2023/ooze_32/Makefile @@ -9,7 +9,7 @@ all: ooze32.dsk ooze32.dsk: HELLO OOZE32 cp $(EMPTYDISK) ooze32.dsk $(DOS33) -y ooze32.dsk SAVE A HELLO - $(DOS33) -y ooze32.dsk BSAVE -a 0xE7 OOZE32 + $(DOS33) -y ooze32.dsk BSAVE -a 0xC00 OOZE32 ### @@ -35,7 +35,7 @@ HELLO: hello.bas ### OOZE32: ooze32.o - ld65 -o OOZE32 ooze32.o -C ./apple2_e7_zp.inc + ld65 -o OOZE32 ooze32.o -C ./apple2_c00.inc ooze32.o: ooze32.s ca65 -o ooze32.o ooze32.s -l ooze32.lst diff --git a/demos/lovebyte2023/weave_16/Makefile b/demos/lovebyte2023/weave_16/Makefile index 6cc3c8eb..df798806 100644 --- a/demos/lovebyte2023/weave_16/Makefile +++ b/demos/lovebyte2023/weave_16/Makefile @@ -4,25 +4,25 @@ DOS33 = ../../../utils/dos33fs-utils/dos33 TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft EMPTYDISK = ../../../empty_disk/empty.dsk -all: agony17.dsk +all: weave15.dsk -agony17.dsk: HELLO AGONY17 - cp $(EMPTYDISK) agony17.dsk - $(DOS33) -y agony17.dsk SAVE A HELLO - $(DOS33) -y agony17.dsk BSAVE -a 0xE7 AGONY17 +weave15.dsk: HELLO WEAVE15 + cp $(EMPTYDISK) weave15.dsk + $(DOS33) -y weave15.dsk SAVE A HELLO + $(DOS33) -y weave15.dsk BSAVE -a 0xE7 WEAVE15 ### -submit: agony17.zip +submit: weave15.zip -agony1732.zip: AGONY17 agony17.s file_id.diz agony17.dsk - mkdir -p lovebyte2023_agony17 - cp AGONY17 ./lovebyte2023_agony17 - cp agony17.s ./lovebyte2023_agony17 - cp file_id.diz ./lovebyte2023_agony17 - cp agony17.dsk ./lovebyte2023_agony17 - cp agony17_720p.mp4 ./lovebyte2023_agony17 - zip -r agony1732.zip lovebyte2023_agony17 +weave1532.zip: WEAVE15 weave15.s file_id.diz weave15.dsk + mkdir -p lovebyte2023_weave15 + cp WEAVE15 ./lovebyte2023_weave15 + cp weave15.s ./lovebyte2023_weave15 + cp file_id.diz ./lovebyte2023_weave15 + cp weave15.dsk ./lovebyte2023_weave15 + cp weave15_720p.mp4 ./lovebyte2023_weave15 + zip -r weave1532.zip lovebyte2023_weave15 #### @@ -34,13 +34,13 @@ HELLO: hello.bas ### -AGONY17: agony17.o - ld65 -o AGONY17 agony17.o -C ./apple2_e7_zp.inc +WEAVE15: weave15.o + ld65 -o WEAVE15 weave15.o -C ./apple2_e7_zp.inc -agony17.o: agony17.s - ca65 -o agony17.o agony17.s -l agony17.lst +weave15.o: weave15.s + ca65 -o weave15.o weave15.s -l weave15.lst #### clean: - rm -f *~ *.o *.lst HELLO AGONY17 *.zip + rm -f *~ *.o *.lst HELLO WEAVE15 *.zip diff --git a/graphics/hgr/shape_table/Makefile b/graphics/hgr/shape_table/Makefile index d22226aa..c22fada6 100644 --- a/graphics/hgr/shape_table/Makefile +++ b/graphics/hgr/shape_table/Makefile @@ -10,7 +10,8 @@ all: shape_table.dsk shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \ APPLE2 GEARS LINE32 PATTERN PATTERN_LOGO SQUARE_WAVE \ AGONY17 HERRING16 STRIPE17 COOL_WAVE TEETH32 TICK_TOCK \ - GEARS_TINY WEAVE15 COLUMNS16 CATS16 + GEARS_TINY WEAVE15 COLUMNS16 CATS16 TEST EGGS16 WAVY16 \ + MIRROR15 FIELD15 cp $(EMPTYDISK) shape_table.dsk $(DOS33) -y shape_table.dsk SAVE A HELLO $(DOS33) -y shape_table.dsk SAVE A GEARS.BAS @@ -31,6 +32,11 @@ shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \ $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 TICK_TOCK $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 COLUMNS16 $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 CATS16 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 TEST + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 EGGS16 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 WAVY16 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 MIRROR15 + $(DOS33) -y shape_table.dsk BSAVE -a 0xe7 FIELD15 ### @@ -106,6 +112,33 @@ CATS16: cats16.o cats16.o: cats16.s ca65 -o cats16.o cats16.s -l cats16.lst +### + +WAVY16: wavy16.o + ld65 -o WAVY16 wavy16.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +wavy16.o: wavy16.s + ca65 -o wavy16.o wavy16.s -l wavy16.lst + + +### + +EGGS16: eggs16.o + ld65 -o EGGS16 eggs16.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +eggs16.o: eggs16.s + ca65 -o eggs16.o eggs16.s -l eggs16.lst + + +### + +TEST: test.o + ld65 -o TEST test.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +test.o: test.s + ca65 -o test.o test.s -l test.lst + + ### @@ -151,6 +184,24 @@ WEAVE15: weave15.o weave15.o: weave15.s ca65 -o weave15.o weave15.s -l weave15.lst +### + +MIRROR15: mirror15.o + ld65 -o MIRROR15 mirror15.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +mirror15.o: mirror15.s + ca65 -o mirror15.o mirror15.s -l mirror15.lst + +### + +FIELD15: field15.o + ld65 -o FIELD15 field15.o -C $(LINKERSCRIPTS)/apple2_e7_zp.inc + +field15.o: field15.s + ca65 -o field15.o field15.s -l field15.lst + + + ### @@ -193,5 +244,5 @@ clean: rm -f *~ *.o *.lst HELLO GEAR.BAS GEARS PATTERN APPLE.BAS \ PATTERN_LOGO COOL_WAVE SQUARE_WAVE TEETH32 TICK_TOCK \ HERRING16 STRIPE17 AGONY17 LINE32 APPLE2 GEARS_TINY WEAVE15 \ - COLUMNS16 CATS16 + COLUMNS16 CATS16 TEST EGGS16 WAVY16 MIRROR15 FIELD15 diff --git a/graphics/hgr/shape_table/README b/graphics/hgr/shape_table/README index 0ba16a01..ff1a2f6f 100644 --- a/graphics/hgr/shape_table/README +++ b/graphics/hgr/shape_table/README @@ -1,25 +1,27 @@ some small shape table programs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It's hard to get below 17 bytes. Found a way to get 15 bytes in some cases if the address or rotation (mod64) are similar. -Some to investigate: - A=$02 Y=$E8 X=$0E (agony17) - A=$E2 Y=$E2 X=$E2 (agony2/weave15) - A=$02 Y=$E3 X=$01 (column TODO) - A=$02 Y=$DA X=$01 (????) +Various that are here: + E7=$20 A=$02 Y=$E8 X=$0E (agony17) LB23 maybe + E7=$20 A=$E2 Y=$E2 X=$E2 (weave15) LB23 + E7=$20 A=$02 Y=$E3 X=$01 (columns16) + E7=$20 A=$02 Y=$00 X=$21 (cats16) + E7=$?? A=$01 ----------- (herring16) + E7=$20 A=$01 Y=$E8 X=$0E (stripe17) + E7=$20 A=$02 Y=$DA X=$01 (eggs16) + E7=$20 A=$F3 Y=$F3 X=$F2 (wavy16) + + E7=$20 A=$F6 Y=$F6 X=$F6 (mirror15) + E7=$20 A=$F6 Y=$F6 X=$F5 (field16) LB23 maybe + + E7=$20 A=$05 Y=$F0 X=$00 (wave16) LB22 + E7=$20 A=$E7 Y=$E7 X=$E7 (diamond16) LB22 + TODO - A=$E7 Y=$E7 X=$E7 - A=$F3 Y=$F3 X=$F3 (some of these might need a dex) - A=$F6 Y=$F6 X=$F6 - - - - - - - mostly trying to get something interesting in 16 bytes for Lovebyte diff --git a/graphics/hgr/shape_table/cats16.s b/graphics/hgr/shape_table/cats16.s index 5ec9cb73..0963ffc6 100644 --- a/graphics/hgr/shape_table/cats16.s +++ b/graphics/hgr/shape_table/cats16.s @@ -1,10 +1,6 @@ -; 16B weird line pattern +; 16B eventually looks like cats - -; note this depends on GBASL/GBASH and other values set by HPOSN -; being vaguely reasonable at boot(?) could vary by system -; it also means some garbage on screen for first XDRAW but -; maybe that's OK as otherwise we are 18 bytes +; smalla artifact at start, can get rid of for 17B ; zero page locations HGR_SHAPE = $1A @@ -43,68 +39,40 @@ HGR = $F3E2 HPOSN = $F411 XDRAW0 = $F65D XDRAW1 = $F661 -RESTORE = $FF3F +HPLOT0 = $F457 -tiny_xdraw: +cats: -; .byte $0A ; scale at $E7 (also harmless asl) + ; $E7 is scale, so $20 (from jsr) jsr HGR2 ; Hi-res, full screen ; 3 ; Y=0, A=0 after this call -; lda #10 -; sta HGR_SCALE ; A and Y are 0 here. ; X is left behind by the boot process? - -; ldy #0 -; ldx #100 -; lda #100 - ; we really have to call this, otherwise it won't run ; on some real hardware - - ; getting GBASH between $40-$5F might actually be enough - - - jsr HPOSN ; set screen position to X= (y,x) Y=(a) + jsr HPLOT0 ; set screen position to X= (y,x) Y=(a) ; saves X,Y,A to zero page ; after Y= orig X/7 ; A and X are ?? tiny_loop: -; ldx #shape_table ; point to top byte of shape address + ; use the actual load to avoid artifact at beginning -; ldy #$e8 -; ldx #$0e - -; tay - ldy #$00 ; uses the text window + tay +; ldy #$00 ; uses the text window ldx #$21 - ; ROT in A - - ; this will be 0 2nd time through loop, arbitrary otherwise - lda #2 ; ROT=1 + lda #2 ; ROT=2 jsr XDRAW0 ; XDRAW 1 AT X,Y ; Both A and X are 0 at exit ; Z flag set on exit ; Y varies -; jsr $F666 ; rot in X, a=0 -; inx - -; inx ; X=1 -; txa ; A=1 -; tay ; Y=1 - beq tiny_loop ; bra -; be sure this is at address $0101, easy to set address -;shape_table: -; .byte $04,$00 diff --git a/graphics/hgr/shape_table/eggs16.s b/graphics/hgr/shape_table/eggs16.s new file mode 100644 index 00000000..8c8668ca --- /dev/null +++ b/graphics/hgr/shape_table/eggs16.s @@ -0,0 +1,53 @@ +; 16B sort eggs in the middle + +; to get rid of glitch can make it 17B + + +; zero page locations +GBASL = $26 +GBASH = $27 +HGR_SCALE = $E7 +HGR_COLLISIONS = $EA + +; ROM locations +HGR2 = $F3D8 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 +HPLOT0 = $F457 + +eggs17: + + ; we load at zero page $E7 which is HGR_SCALE + ; this means the scale is $20 (JSR) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; A and Y are 0 here. + ; X is left behind by the boot process? + + ; set GBASL/GBASH + ; we really have to call this, otherwise it won't run + ; on some real hardware depending on setup of zero page at boot + + jsr HPLOT0 + +; jsr HPOSN ; set screen position to X= (y,x) Y=(a) + ; saves X,Y,A to zero page + ; after Y= orig X/7 + ; A and X are ?? +tiny_loop: + + ldy #$da ; point to shape table value of $04,$00 +; ldx #$01 ; in ROM + inx ; saves byte but glitchy + + lda #2 ; ROT=2 + jsr XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + ; Z flag set on exit + ; Y varies + + beq tiny_loop ; bra + diff --git a/graphics/hgr/shape_table/field15.s b/graphics/hgr/shape_table/field15.s new file mode 100644 index 00000000..7a7c36f8 --- /dev/null +++ b/graphics/hgr/shape_table/field15.s @@ -0,0 +1,50 @@ +; 17B weird line pattern + +; Really wanted this to be 16B :( + +; zero page locations +GBASL = $26 +GBASH = $27 +HGR_SCALE = $E7 +HGR_COLLISIONS = $EA + +; ROM locations +HGR2 = $F3D8 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 +HPLOT0 = $F457 + +agony17: + + ; we load at zero page $E7 which is HGR_SCALE + ; this means the scale is $20 (JSR) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; A and Y are 0 here. + ; X is left behind by the boot process? + + ; set GBASL/GBASH + ; we really have to call this, otherwise it won't run + ; on some real hardware depending on setup of zero page at boot + + jsr HPLOT0 ; set screen position to X= (y,x) Y=(a) + ; saves X,Y,A to zero page + ; after Y= orig X/7 + ; A and X are ?? +tiny_loop: + + lda #$F6 ; ROT=$F6 + tay + tax + dex + + jsr XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + ; Z flag set on exit + ; Y varies + + beq tiny_loop ; bra + diff --git a/graphics/hgr/shape_table/mirror15.s b/graphics/hgr/shape_table/mirror15.s new file mode 100644 index 00000000..d459f65f --- /dev/null +++ b/graphics/hgr/shape_table/mirror15.s @@ -0,0 +1,46 @@ +; 15B weird line pattern + +; zero page locations +GBASL = $26 +GBASH = $27 +HGR_SCALE = $E7 +HGR_COLLISIONS = $EA + +; ROM locations +HGR2 = $F3D8 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 +HPLOT0 = $F457 + +mirror15: + + ; we load at zero page $E7 which is HGR_SCALE + ; this means the scale is $20 (JSR) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; A and Y are 0 here. + ; X is left behind by the boot process? + + ; set GBASL/GBASH + ; we really have to call this, otherwise it won't run + ; on some real hardware depending on setup of zero page at boot + + jsr HPOSN ; set screen position to X= (y,x) Y=(a) + ; saves X,Y,A to zero page + ; after Y= orig X/7 + ; A and X are ?? +tiny_loop: + lda #$F6 + tax + tay + + jsr XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + ; Z flag set on exit + ; Y varies + + beq tiny_loop ; bra + diff --git a/graphics/hgr/shape_table/stripe17.s b/graphics/hgr/shape_table/stripe17.s index 0ce486fb..10c93af7 100644 --- a/graphics/hgr/shape_table/stripe17.s +++ b/graphics/hgr/shape_table/stripe17.s @@ -1,35 +1,8 @@ -; 16B weird line pattern +; 17B sripe pattern ; zero page locations -HGR_SHAPE = $1A -HGR_SHAPE2 = $1B -HGR_BITS = $1C GBASL = $26 GBASH = $27 -A5H = $45 -XREG = $46 -YREG = $47 - ; C0-CF should be clear - ; D0-DF?? D0-D5 = HGR scratch? -HGR_DX = $D0 ; HGLIN -HGR_DX2 = $D1 ; HGLIN -HGR_DY = $D2 ; HGLIN -HGR_QUADRANT = $D3 -HGR_E = $D4 -HGR_E2 = $D5 -HGR_X = $E0 -HGR_X2 = $E1 -HGR_Y = $E2 -HGR_COLOR = $E4 -HGR_HORIZ = $E5 -HGR_SCALE = $E7 -HGR_SHAPE_TABLE = $E8 -HGR_SHAPE_TABLE2= $E9 -HGR_COLLISIONS = $EA -HGR_ROTATION = $F9 -FRAME = $FC -XPOS = $FD -YPOS = $FF ; ROM calls HGR2 = $F3D8 @@ -40,32 +13,22 @@ XDRAW1 = $F661 RESTORE = $FF3F -tiny_xdraw: - -; .byte $0A ; scale at $E7 (also harmless asl) +stripe17: jsr HGR2 ; Hi-res, full screen ; 3 ; Y=0, A=0 after this call -; lda #10 -; sta HGR_SCALE ; A and Y are 0 here. ; X is left behind by the boot process? -; ldy #0 -; ldx #100 -; lda #100 jsr HPOSN ; set screen position to X= (y,x) Y=(a) ; saves X,Y,A to zero page ; after Y= orig X/7 ; A and X are ?? tiny_loop: -; ldx #shape_table ; point to top byte of shape address - ldy #$e8 ldx #$0e @@ -78,15 +41,5 @@ tiny_loop: ; Z flag set on exit ; Y varies -; jsr $F666 ; rot in X, a=0 -; inx - -; inx ; X=1 -; txa ; A=1 -; tay ; Y=1 - beq tiny_loop ; bra -; be sure this is at address $0101, easy to set address -;shape_table: -; .byte $04,$00 diff --git a/graphics/hgr/shape_table/test.s b/graphics/hgr/shape_table/test.s new file mode 100644 index 00000000..33d01443 --- /dev/null +++ b/graphics/hgr/shape_table/test.s @@ -0,0 +1,50 @@ +; 17B weird line pattern + +; Really wanted this to be 16B :( + +; zero page locations +GBASL = $26 +GBASH = $27 +HGR_SCALE = $E7 +HGR_COLLISIONS = $EA + +; ROM locations +HGR2 = $F3D8 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 +HPLOT0 = $F457 + +agony17: + + ; we load at zero page $E7 which is HGR_SCALE + ; this means the scale is $20 (JSR) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; A and Y are 0 here. + ; X is left behind by the boot process? + + ; set GBASL/GBASH + ; we really have to call this, otherwise it won't run + ; on some real hardware depending on setup of zero page at boot + + jsr HPOSN ; set screen position to X= (y,x) Y=(a) + ; saves X,Y,A to zero page + ; after Y= orig X/7 + ; A and X are ?? +tiny_loop: + + ldy #$F6 ; point to shape table value of $04,$00 + ldx #$F5 ; in ROM + + + lda #$F6 ; ROT=2 + jsr XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + ; Z flag set on exit + ; Y varies + + beq tiny_loop ; bra + diff --git a/graphics/hgr/shape_table/wavy16.s b/graphics/hgr/shape_table/wavy16.s new file mode 100644 index 00000000..099a783f --- /dev/null +++ b/graphics/hgr/shape_table/wavy16.s @@ -0,0 +1,48 @@ +; 16B wavy pattern + +; zero page locations +GBASL = $26 +GBASH = $27 +HGR_SCALE = $E7 +HGR_COLLISIONS = $EA + +; ROM locations +HGR2 = $F3D8 +HPOSN = $F411 +XDRAW0 = $F65D +XDRAW1 = $F661 +HPLOT0 = $F457 + +wavy16: + + ; we load at zero page $E7 which is HGR_SCALE + ; this means the scale is $20 (JSR) + + jsr HGR2 ; Hi-res, full screen ; 3 + ; Y=0, A=0 after this call + + ; A and Y are 0 here. + ; X is left behind by the boot process? + + ; set GBASL/GBASH + ; we really have to call this, otherwise it won't run + ; on some real hardware depending on setup of zero page at boot + + jsr HPOSN ; set screen position to X= (y,x) Y=(a) + ; saves X,Y,A to zero page + ; after Y= orig X/7 + ; A and X are ?? +tiny_loop: + + lda #$F3 ; ROT=F3 (mod 64?) + tay + tax + dex + + jsr XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + ; Z flag set on exit + ; Y varies + + beq tiny_loop ; bra +