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 00000000..673673a2 Binary files /dev/null and b/games/sb/graphics/videlectrix_top.png differ 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