From c844297c3bef95eae4a315d9e19e496bba8e8afb Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 30 May 2023 00:36:16 -0400 Subject: [PATCH] sb: work on vert scroll --- games/sb/Makefile | 5 +- games/sb/README | 17 ++++++ games/sb/graphics/Makefile | 10 ++++ games/sb/graphics/videlectrix_top.png | Bin 0 -> 9603 bytes games/sb/hgr_tables.s | 8 +-- games/sb/hgr_vscroll.s | 76 ++++++++++++++++++++++++++ games/sb/title.s | 64 +++++++++++++++++----- games/sb/zp.inc | 30 ++++------ 8 files changed, 173 insertions(+), 37 deletions(-) create mode 100644 games/sb/graphics/videlectrix_top.png create mode 100644 games/sb/hgr_vscroll.s diff --git a/games/sb/Makefile b/games/sb/Makefile index 68266bbe..dd70aa6c 100644 --- a/games/sb/Makefile +++ b/games/sb/Makefile @@ -77,7 +77,10 @@ TITLE: title.o ld65 -o TITLE title.o -C $(LINKER_SCRIPTS)/apple2_6000.inc title.o: title.s zx02_optim.s \ - zp.inc hardware.inc + zp.inc hardware.inc \ + hgr_vscroll.s \ + graphics/czmg4ap_title.hgr.zx02 \ + graphics/videlectrix_top.hgr.zx02 ca65 -o title.o title.s -l title.lst diff --git a/games/sb/README b/games/sb/README index 7b937948..86c2db4e 100644 --- a/games/sb/README +++ b/games/sb/README @@ -1,2 +1,19 @@ FN: animation based on Strong Bad E-mail #152 "ISP" It's a long download of a "break-dancing" rat + + + + +MEMORY_MAP: + 0000-00ff = zero page + 0100-01ff = stack + 0200-0369 = disk variables + 036A-03ff = vectors and such + 0400-07ff = text/gr page1 + 0800-0bff = text/gr page2 + 0c00-0fff = ???? + 1000-11ff = disk load code + 1200-1fff = QLOAD + 2000-3FFF = hgr page1 + 4000-5fff = hgr page2 + 6000-bfff = program space diff --git a/games/sb/graphics/Makefile b/games/sb/graphics/Makefile index fe164d6b..b1b40fda 100644 --- a/games/sb/graphics/Makefile +++ b/games/sb/graphics/Makefile @@ -11,6 +11,7 @@ PNG2SPRITES = ../../../utils/gr-utils/png2sprites all: strongbad_sample.hgr.zx02 \ czmg4ap_title.hgr.zx02 \ + videlectrix_top.hgr.zx02 \ a2_duckpond_title.gr.zx02 \ a2_duckpond.gr.zx02 \ a2_duckpond_twilight.gr.zx02 \ @@ -98,6 +99,15 @@ czmg4ap_title.hgr.zx02: czmg4ap_title.hgr czmg4ap_title.hgr: czmg4ap_title.png $(PNG_TO_HGR) czmg4ap_title.png > czmg4ap_title.hgr +#### + +videlectrix_top.hgr.zx02: videlectrix_top.hgr + $(ZX02) videlectrix_top.hgr videlectrix_top.hgr.zx02 + +videlectrix_top.hgr: videlectrix_top.png + $(PNG_TO_HGR) videlectrix_top.png > videlectrix_top.hgr + + #### diff --git a/games/sb/graphics/videlectrix_top.png b/games/sb/graphics/videlectrix_top.png new file mode 100644 index 0000000000000000000000000000000000000000..673673a2344607ce37d3a8de3003fa68d27d1da3 GIT binary patch literal 9603 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 Iwqw|T0cKwR*Z=?k literal 0 HcmV?d00001 diff --git a/games/sb/hgr_tables.s b/games/sb/hgr_tables.s index 7de885dc..1988db6f 100644 --- a/games/sb/hgr_tables.s +++ b/games/sb/hgr_tables.s @@ -1,7 +1,7 @@ -div7_table = $1000 -mod7_table = $1100 -hposn_high = $1200 -hposn_low = $1300 +div7_table = $9C00 +mod7_table = $9D00 +hposn_high = $9E00 +hposn_low = $9F00 diff --git a/games/sb/hgr_vscroll.s b/games/sb/hgr_vscroll.s new file mode 100644 index 00000000..2935b65d --- /dev/null +++ b/games/sb/hgr_vscroll.s @@ -0,0 +1,76 @@ + ;================================ + ; HGR vscroll + ;================================ + ; image to scroll in is in $A000 + +hgr_vscroll: + + ldx #191 + stx SCROLL ; SCROLL = 0 + +vscroll_loop: + + ; for x=0 to 192-SCROLL + ; write 40 bytes of 00 + + ldx #0 +vscroll_inner: + lda hposn_high,X + sta OUTH + lda hposn_low,X + sta OUTL + + ldy #39 + lda #0 +vscroll_line: + sta (OUTL),Y + dey + bpl vscroll_line + + inx + cpx SCROLL + bne vscroll_inner + + ;==================== + ; draw bottom part + + lda #0 + sta SCROLL_OFFSET +vscroll_bottom: + stx XSAVE + + ldx SCROLL_OFFSET + lda hposn_high,X + clc + adc #$80 ; ora instead? + sta INH + lda hposn_low,X + sta INL + + inc SCROLL_OFFSET + + ldx XSAVE + + lda hposn_high,X + sta OUTH + lda hposn_low,X + sta OUTL + + ldy #39 +vscroll_bottom_line: + lda (INL),Y + sta (OUTL),Y + dey + bpl vscroll_bottom_line + + inx + cpx #192 + bne vscroll_bottom + + ;===================== + ; scroll whole screen + + dec SCROLL + bne vscroll_loop + + rts diff --git a/games/sb/title.s b/games/sb/title.s index 802a41ee..477f76c1 100644 --- a/games/sb/title.s +++ b/games/sb/title.s @@ -19,26 +19,59 @@ hires_start: bit SET_GR bit PAGE1 + ;==================== + ; set up tables + ;==================== + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables ;=================== - ; Load graphics ;=================== -load_loop: + ; scroll the logo + ;=================== + ;=================== +scroll_logo: - ;============================= - - - ;========================== - ; Load Image - ;=========================== - -load_image: + ;=================== + ; decomress to $a000 ; size in ldsizeh:ldsizel (f1/f0) - lda #comp_data + lda #>vid_top + sta ZX0_src+1 + + + lda #$A0 + + jsr full_decomp + + ;====================== + ; scroll up vertically + ;====================== + + jsr hgr_vscroll + + + ;=================== + ; Do Title Screen + ;=================== +load_loop: + + ;========================== + ; Load Title Image + ;=========================== + +load_title_image: + + ; size in ldsizeh:ldsizel (f1/f0) + + lda #title_data sta ZX0_src+1 @@ -74,7 +107,10 @@ done: rts .include "zx02_optim.s" + .include "hgr_tables.s" + .include "hgr_vscroll.s" - -comp_data: +title_data: .incbin "graphics/czmg4ap_title.hgr.zx02" +vid_top: + .incbin "graphics/videlectrix_top.hgr.zx02" diff --git a/games/sb/zp.inc b/games/sb/zp.inc index dbf7581c..6565f3a1 100644 --- a/games/sb/zp.inc +++ b/games/sb/zp.inc @@ -34,26 +34,20 @@ COLOR = $30 ; overlap applesoft 67-6a,6f,70,af,b0,ca-cd,d8 -; DOS33: Confirmed kills $68 - -RWTSL = $60 -RWTSH = $61 -DOSBUFL = $62 -DOSBUFH = $63 -FILEML = $64 -FILEMH = $65 - - FRAME = $60 FRAMEH = $61 -WAITING = $62 -LETTERL = $63 -LETTERH = $64 -LETTERX = $65 -LETTERY = $66 -LETTERD = $67 -LETTER = $68 -BLARGH = $69 +SCROLL = $62 +XSAVE = $63 +SCROLL_OFFSET = $64 + +;WAITING = $62 +;LETTERL = $63 +;LETTERH = $64 +;LETTERX = $65 +;LETTERY = $66 +;LETTERD = $67 +;LETTER = $68 +;BLARGH = $69 ;FACTOR_I = $66 ;FACTOR_F = $67