From 7d3be991078033ae8d6321b06681e9d926f6ae67 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 7 Mar 2023 00:28:45 -0500 Subject: [PATCH] sb: more ill-advised nonsense --- games/sb/Makefile | 15 +++- games/sb/duck_pond.s | 93 ++++++++++++++++++++++++ games/sb/graphics/Makefile | 24 +++++- games/sb/graphics/a2_duckpond.png | Bin 0 -> 9175 bytes games/sb/graphics/a2_duckpond_title.png | Bin 0 -> 11744 bytes games/sb/hello.bas | 2 +- games/sb/sb.s | 11 ++- games/sb/zx02_optim.s | 32 ++++++-- 8 files changed, 161 insertions(+), 16 deletions(-) create mode 100644 games/sb/duck_pond.s create mode 100644 games/sb/graphics/a2_duckpond.png create mode 100644 games/sb/graphics/a2_duckpond_title.png diff --git a/games/sb/Makefile b/games/sb/Makefile index 5cf7b1bd..29f3ab8b 100644 --- a/games/sb/Makefile +++ b/games/sb/Makefile @@ -11,10 +11,11 @@ all: sb.dsk #### -sb.dsk: HELLO SB +sb.dsk: HELLO SB DUCK_POND cp $(EMPTY_DISK) sb.dsk $(DOS33) -y sb.dsk SAVE A HELLO $(DOS33) -y sb.dsk BSAVE -a 0x0c00 SB + $(DOS33) -y sb.dsk BSAVE -a 0x1000 DUCK_POND #### @@ -27,10 +28,20 @@ sb.o: sb.s zx02_optim.s \ #### +DUCK_POND: duck_pond.o + ld65 -o DUCK_POND duck_pond.o -C $(LINKER_SCRIPTS)/apple2_1000.inc + +duck_pond.o: duck_pond.s zx02_optim.s \ + zp.inc hardware.inc + ca65 -o duck_pond.o duck_pond.s -l duck_pond.lst + + +#### + HELLO: hello.bas $(TOKENIZE) < hello.bas > HELLO #### clean: - rm -f *.lst *.o SB *~ + rm -f *.lst *.o SB DUCK_POND *~ diff --git a/games/sb/duck_pond.s b/games/sb/duck_pond.s new file mode 100644 index 00000000..67c92075 --- /dev/null +++ b/games/sb/duck_pond.s @@ -0,0 +1,93 @@ +; gr duck pond +; +; by deater (Vince Weaver) + + +; todo +; videlectrix/ f to feed message +; F feeds +; A anvil (what happens when land on duck) +; Y drain pond +; ESC exit +; S spawn new duck +; N night (twilight?) +; J jump in pond + +; how show score? + +.include "zp.inc" +.include "hardware.inc" + + +duck_pond: + + ;=================== + ; set graphics mode + ;=================== + jsr HOME + + bit LORES + bit FULLGR + bit SET_GR + bit PAGE0 + + + ;=================== + ; Load graphics + ;=================== +load_loop: + + ;============================= + + + ;========================== + ; Load Image + ;=========================== + +load_image: + + lda #title_data + sta ZX0_src+1 + + lda #$4 + + jsr full_decomp + + +wait_until_keypress: + lda KEYPRESS ; 4 + bpl wait_until_keypress ; 3 + bit KEYRESET ; clear the keyboard buffer + +which_ok: + + lda #main_data + sta ZX0_src+1 + + lda #$4 + + jsr full_decomp + + +wait_until_keypress2: + lda KEYPRESS ; 4 + bpl wait_until_keypress2 ; 3 + bit KEYRESET ; clear the keyboard buffer + + jmp load_loop + + + + + .include "zx02_optim.s" + + +title_data: + .incbin "graphics/a2_duckpond_title.gr.zx02" + +main_data: + .incbin "graphics/a2_duckpond.gr.zx02" diff --git a/games/sb/graphics/Makefile b/games/sb/graphics/Makefile index 972ad3ea..d32aa174 100644 --- a/games/sb/graphics/Makefile +++ b/games/sb/graphics/Makefile @@ -1,13 +1,15 @@ include ../../../Makefile.inc -ZX02 = ~/research/6502_compression/zx02.git/build/zx02 +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr LINKER_SCRIPTS = ../../../linker_scripts DOS33 = ../../../utils/dos33fs-utils/dos33 EMPTY_DISK = ../../../empty_disk/empty.dsk TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft +PNG2GR = ../../../utils/gr-utils/png2gr -all: strongbad_sample.hgr.zx02 +all: strongbad_sample.hgr.zx02 \ + a2_duckpond_title.gr.zx02 a2_duckpond.gr.zx02 #### @@ -17,6 +19,24 @@ strongbad_sample.hgr.zx02: strongbad_sample.hgr strongbad_sample.hgr: strongbad_sample.png $(PNG_TO_HGR) strongbad_sample.png > strongbad_sample.hgr +#### + +a2_duckpond_title.gr.zx02: a2_duckpond_title.gr + $(ZX02) a2_duckpond_title.gr a2_duckpond_title.gr.zx02 + +a2_duckpond_title.gr: a2_duckpond_title.png + $(PNG2GR) a2_duckpond_title.png a2_duckpond_title.gr + +#### + +a2_duckpond.gr.zx02: a2_duckpond.gr + $(ZX02) a2_duckpond.gr a2_duckpond.gr.zx02 + +a2_duckpond.gr: a2_duckpond.png + $(PNG2GR) a2_duckpond.png a2_duckpond.gr + + + #### clean: diff --git a/games/sb/graphics/a2_duckpond.png b/games/sb/graphics/a2_duckpond.png new file mode 100644 index 0000000000000000000000000000000000000000..37bb38fa45154c43cc6edb8be5c9755a7a38193b GIT binary patch literal 9175 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 Q(F~v@r!HG8ZS4Jj00@eU>;M1& literal 0 HcmV?d00001 diff --git a/games/sb/hello.bas b/games/sb/hello.bas index 1e8b79a2..3617fbce 100644 --- a/games/sb/hello.bas +++ b/games/sb/hello.bas @@ -1,2 +1,2 @@ 5 HOME - 105 PRINT CHR$ (4)"BRUN SB" + 105 PRINT CHR$ (4)"CATALOG" diff --git a/games/sb/sb.s b/games/sb/sb.s index 4ad72ede..40e95ab3 100644 --- a/games/sb/sb.s +++ b/games/sb/sb.s @@ -36,13 +36,18 @@ load_image: ; size in ldsizeh:ldsizel (f1/f0) -; comp_data = $a000 - out_addr = $2000 + lda #comp_data + sta ZX0_src+1 + + + lda #$20 jsr full_decomp - rts +; rts diff --git a/games/sb/zx02_optim.s b/games/sb/zx02_optim.s index 5f6121f2..1ef24174 100644 --- a/games/sb/zx02_optim.s +++ b/games/sb/zx02_optim.s @@ -20,20 +20,36 @@ bitr = ZP+6 pntr = ZP+7 ; Initial values for offset, source, destination and bitr -zx0_ini_block: - .byte $00, $00, comp_data, out_addr, $80 +;zx0_ini_block: +; .byte $00, $00 +;comp_data: +; .byte $0, $0 +;out_addr: +; .byte $0, $0 +; .byte $80 ;-------------------------------------------------- ; Decompress ZX0 data (6502 optimized format) + ; destination page in A full_decomp: - ; Get initialization block - ldy #7 + sta ZX0_dst+1 -copy_init: lda zx0_ini_block-1, y - sta offset-1, y - dey - bne copy_init + lda #0 + sta ZX0_dst + sta offset + sta offset+1 + + lda #$80 + sta bitr + + ; Get initialization block +; ldy #7 + +;copy_init: lda zx0_ini_block-1, y + ; sta offset-1, y + ; dey + ; bne copy_init ; Decode literal: Ccopy next N bytes from compressed file ; Elias(length) byte[1] byte[2] ... byte[N]