From 7b13414386b37df4ec84378b73b66a8e8d55a69b Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 25 Apr 2023 22:55:26 -0400 Subject: [PATCH] vaporlock: try some of the double modes --- games/sb/graphics/Makefile | 10 + games/sb/graphics/czmg4ap_title.png | Bin 0 -> 18084 bytes games/sb/title.s | 69 ++++++ vaporlock/iie/Makefile | 11 +- vaporlock/iie/double.s | 333 ++++++++++++++++++++++++++++ 5 files changed, 422 insertions(+), 1 deletion(-) create mode 100644 games/sb/graphics/czmg4ap_title.png create mode 100644 games/sb/title.s create mode 100644 vaporlock/iie/double.s diff --git a/games/sb/graphics/Makefile b/games/sb/graphics/Makefile index a96acc69..fe164d6b 100644 --- a/games/sb/graphics/Makefile +++ b/games/sb/graphics/Makefile @@ -10,6 +10,7 @@ PNG2GR = ../../../utils/gr-utils/png2gr PNG2SPRITES = ../../../utils/gr-utils/png2sprites all: strongbad_sample.hgr.zx02 \ + czmg4ap_title.hgr.zx02 \ a2_duckpond_title.gr.zx02 \ a2_duckpond.gr.zx02 \ a2_duckpond_twilight.gr.zx02 \ @@ -91,6 +92,15 @@ strongbad_sample.hgr: strongbad_sample.png #### +czmg4ap_title.hgr.zx02: czmg4ap_title.hgr + $(ZX02) czmg4ap_title.hgr czmg4ap_title.hgr.zx02 + +czmg4ap_title.hgr: czmg4ap_title.png + $(PNG_TO_HGR) czmg4ap_title.png > czmg4ap_title.hgr + + +#### + a2_duckpond_title.gr.zx02: a2_duckpond_title.gr $(ZX02) a2_duckpond_title.gr a2_duckpond_title.gr.zx02 diff --git a/games/sb/graphics/czmg4ap_title.png b/games/sb/graphics/czmg4ap_title.png new file mode 100644 index 0000000000000000000000000000000000000000..e97cf4c027fbf05081fa06135933a8733937a810 GIT binary patch literal 18084 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 R^=%#?FRda~D`67+e*pVA_>}+v literal 0 HcmV?d00001 diff --git a/games/sb/title.s b/games/sb/title.s new file mode 100644 index 00000000..3610da80 --- /dev/null +++ b/games/sb/title.s @@ -0,0 +1,69 @@ +; Yet Another HR project +; +; by deater (Vince Weaver) + + +.include "zp.inc" +.include "hardware.inc" + + +hires_start: + + ;=================== + ; set graphics mode + ;=================== + jsr HOME + + bit HIRES + bit FULLGR + bit SET_GR + bit PAGE1 + + + ;=================== + ; Load graphics + ;=================== +load_loop: + + ;============================= + + + ;========================== + ; Load Image + ;=========================== + +load_image: + + ; size in ldsizeh:ldsizel (f1/f0) + + lda #comp_data + sta ZX0_src+1 + + + lda #$20 + + + jsr full_decomp + +; rts + + + +wait_until_keypress: + lda KEYPRESS ; 4 + bpl wait_until_keypress ; 3 + bit KEYRESET ; clear the keyboard buffer + +which_ok: + jmp load_loop + + + + + .include "zx02_optim.s" + + +comp_data: + .incbin "graphics/strongbad_sample.hgr.zx02" diff --git a/vaporlock/iie/Makefile b/vaporlock/iie/Makefile index cf4080f2..a370f0c3 100644 --- a/vaporlock/iie/Makefile +++ b/vaporlock/iie/Makefile @@ -7,10 +7,11 @@ EMPTYDISK = ../../empty_disk/empty.dsk all: split.dsk -split.dsk: HELLO SPLIT NOTWORK +split.dsk: HELLO SPLIT NOTWORK DOUBLE cp $(EMPTYDISK) split.dsk $(DOS33) -y split.dsk SAVE A HELLO $(DOS33) -y split.dsk BSAVE -a 0x384 SPLIT + $(DOS33) -y split.dsk BSAVE -a 0x1000 DOUBLE $(DOS33) -y split.dsk BSAVE -a 0x384 NOTWORK ### @@ -20,6 +21,14 @@ HELLO: hello.bas ### +DOUBLE: double.o + ld65 -o DOUBLE double.o -C $(LINKERSCRIPTS)/apple2_1000.inc + +double.o: double.s + ca65 -o double.o double.s -l double.lst + +### + SPLIT: split.o ld65 -o SPLIT split.o -C $(LINKERSCRIPTS)/apple2_384.inc diff --git a/vaporlock/iie/double.s b/vaporlock/iie/double.s new file mode 100644 index 00000000..2e70429c --- /dev/null +++ b/vaporlock/iie/double.s @@ -0,0 +1,333 @@ +; split screen? +; double modes + +; by Vince `deater` Weaver + +; zero page +GBASL = $26 +GBASH = $27 +V2 = $2D +MASK = $2E +COLOR = $30 +;CTEMP = $68 +YY = $69 + +HGRPAGE = $E6 +FRAME = $FC +SUM = $FD +YPOS = $FE +TCOLOR = $FF + +; soft-switches +EIGHTYSTORE = $C001 +CLR80COL = $C00C +SET80COL = $C00D + +SET_GR = $C050 +SET_TEXT= $C051 +FULLGR = $C052 +TEXTGR = $C053 +PAGE1 = $C054 +PAGE2 = $C055 +LORES = $C056 +HIRES = $C057 +CLRAN3 = $C05E +SETAN3 = $C05F +VBLANK = $C019 ; *not* RDVBL (VBL signal low) + +; ROM routines +SETCOL = $F864 ;; COLOR=A*17 +SETGR = $FB40 +VLINE = $F828 ;; VLINE A,$2D at Y +HGR = $F3E2 +HPOSN = $F411 +HPLOT0 = $F457 ; plot at (Y,X), (A) +HGLIN = $F53A ; line to (X,A),(Y) + + ;================================ + ; Clear screen and setup graphics + ;================================ +split: + + jsr SETGR ; set lo-res 40x40 mode + + + ; set 80-store mode + + sta EIGHTYSTORE ; PAGE2 selects AUX memory + bit PAGE1 + + ;=================== + ; draw lo-res lines + + ldx #39 +draw_lores_lines: + txa + tay + jsr SETCOL + + lda #47 + sta V2 + lda #0 + jsr VLINE ; VLINE A,$2D at Y + + dex + bpl draw_lores_lines + + ; copy to 800 + + ldy #0 +cp_loop: + lda $400,Y + sta $800,Y + + lda $500,Y + sta $900,Y + + lda $600,Y + sta $A00,Y + + lda $700,Y + sta $B00,Y + + iny + bne cp_loop + + bit PAGE1 + + ; copy to AUX + + bit PAGE2 ; $400 maps to AUX:$400 + + ldy #0 +cp2_loop: + lda $800,Y + eor #$FF + sta $400,Y + + lda $900,Y + eor #$FF + sta $500,Y + + lda $A00,Y + eor #$FF + sta $600,Y + + lda $B00,Y + eor #$FF + sta $700,Y + + iny + bne cp2_loop + + bit PAGE1 + + + ;=================== + ; draw hi-res lines + + jsr HGR + bit FULLGR ; make it 40x48 + + lda #$FF + sta $E4 ; HCOLOR + + ldx #0 + ldy #0 + lda #96 + jsr HPLOT0 ; plot at (Y,X), (A) + + ldx #0 + lda #140 + ldy #191 + jsr HGLIN ; line to (X,A),(Y) + + ldx #1 + lda #23 + ldy #96 + jsr HGLIN ; line to (X,A),(Y) + +; draw double-hires lines + + + + lda #$20 ; draw to page0 (MAIN?) + sta HGRPAGE + + lda #150 ; start at 150 + sta YPOS +color_loop: + lda YPOS + and #$f + sta TCOLOR + asl + asl + asl + asl + ora TCOLOR + sta TCOLOR ; update color + + lda YPOS + jsr draw_line_color + + inc YPOS + lda YPOS + cmp #192 + bne color_loop + + + ; wait for vblank on IIe + ; positive? during vblank + +wait_vblank_iie: + lda VBLANK + bmi wait_vblank_iie ; wait for positive (in vblank) +wait_vblank_done_iie: + lda VBLANK ; wait for negative (vlank done) + bpl wait_vblank_done_iie + + ; +split_loop: + ;=========================== + ; text mode first 6*4 (24) lines + ; each line 65 cycles (25 hblank+40 bytes) + + +; 3 LINES 80-COL AN3 + + sta SET80COL ; 4 + bit SET_TEXT ; 4 + + ; wait 6*4=24 lines + ; (24*65)-8 = 1560-8 = 1552 + + jsr delay_1552 + +; 3 LINES 40-COL AN3 + + sta CLR80COL ; 4 + bit SET_TEXT ; 4 + jsr delay_1552 + +; 3 LINES 40-col LORES AN3 + + lda LORES ; 4 + bit SET_GR ; 4 + jsr delay_1552 + +; 3 LINES 80-col DLORES AN3 + + sta SET80COL ; 4 + sta CLRAN3 ; 4 + jsr delay_1552 + +; 3 lines 40-col LORES + + sta CLR80COL ; 4 + sta SETAN3 ; 4 ; doublehiresoff + jsr delay_1552 + +; 3 lines HIRES + sta HIRES ; 4 + sta CLRAN3 ; 4 + jsr delay_1552 + +; 3 lines HIRES + sta HIRES ; 4 + sta SETAN3 ; 4 + jsr delay_1552 + +; 3 line Double-HIRES + + sta SET80COL ; 4 + sta CLRAN3 ; 4 + + jsr delay_1552 + + ; hi-res for last 96 lines + horizontal blank + ; vblank = 4550 cycles + + ; Try X=226 Y=4 cycles=4545 + + nop + + ldy #4 ; 2 +loop3: ldx #226 ; 2 +loop4: dex ; 2 + bne loop4 ; 2nt/3 + dey ; 2 + bne loop3 ; 2nt/3 + + jmp split_loop ; 3 + +.align $100 + + ; actually want 3112-12 (6 each for jsr/rts) + ; 3100 + ; Try X=6 Y=86 cycles=3097 +delay_3112: + + lda $0 ; 3-cycle nop + + ldy #86 ; 2 +loop1: ldx #6 ; 2 +loop2: dex ; 2 + bne loop2 ; 2nt/3 + dey ; 2 + bne loop1 ; 2nt/3 + + rts + + + + ; actually want 1552-12 (6 each for jsr/rts) + ; 1540 + ; Try X=15 Y=19 cycles=1540 +delay_1552: + + ldy #19 ; 2 +loop5: ldx #15 ; 2 +loop6: dex ; 2 + bne loop6 ; 2nt/3 + dey ; 2 + bne loop5 ; 2nt/3 + + rts + + + ;========================= + ; draw line of color in COLOR + ;========================= +draw_line_color: + ldx #0 + ldy #0 + jsr HPOSN + + ldy #0 +loop_it: + ; set page2 + sta $C055 + lda TCOLOR + sta (GBASL),Y + cmp #$80 + rol TCOLOR + + ; set page1 + sta $C054 + lda TCOLOR + sta (GBASL),Y + cmp #$80 + rol TCOLOR + iny + + cpy #40 + bne loop_it + + + rts + + + ; to run on bot, want this to be at $3F5 + ; so load at $384 + + jmp split