From 9f17e366ddc55c1514bb3694971c55ee771f1656 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 2 Aug 2018 13:56:06 -0400 Subject: [PATCH] waterfall: add new demo --- waterfall/Makefile | 36 ++++ waterfall/gr_copy.s | 58 ++++++ waterfall/waterfall.dsk | Bin 0 -> 143360 bytes waterfall/waterfall.s | 328 ++++++++++++++++++++++++++++++++++ waterfall/waterfall_page1.png | Bin 0 -> 6528 bytes waterfall/waterfall_page2.png | Bin 0 -> 6408 bytes 6 files changed, 422 insertions(+) create mode 100644 waterfall/Makefile create mode 100644 waterfall/gr_copy.s create mode 100644 waterfall/waterfall.dsk create mode 100644 waterfall/waterfall.s create mode 100644 waterfall/waterfall_page1.png create mode 100644 waterfall/waterfall_page2.png diff --git a/waterfall/Makefile b/waterfall/Makefile new file mode 100644 index 00000000..39140c29 --- /dev/null +++ b/waterfall/Makefile @@ -0,0 +1,36 @@ +include ../Makefile.inc + +DOS33 = ../dos33fs-utils/dos33 +PNG_TO_RLE = ../gr-utils/png2rle + + +all: waterfall.dsk + +waterfall.dsk: WATERFALL + $(DOS33) -y waterfall.dsk BSAVE -a 0x1000 WATERFALL + + + +#### + +WATERFALL: waterfall.o + ld65 -o WATERFALL waterfall.o -C ../linker_scripts/apple2_1000.inc + +waterfall.o: waterfall.s gr_copy.s \ + waterfall_page1.inc waterfall_page2.inc + ca65 -o waterfall.o waterfall.s -l waterfall.lst + +#### + +waterfall_page1.inc: waterfall_page1.png + $(PNG_TO_RLE) asm ./waterfall_page1.png waterfall_page1 > waterfall_page1.inc + +waterfall_page2.inc: waterfall_page2.png + $(PNG_TO_RLE) asm ./waterfall_page2.png waterfall_page2 > waterfall_page2.inc + +##### + +clean: + rm -f *~ *.o *.lst *.inc WATERFALL + + diff --git a/waterfall/gr_copy.s b/waterfall/gr_copy.s new file mode 100644 index 00000000..acd83f6f --- /dev/null +++ b/waterfall/gr_copy.s @@ -0,0 +1,58 @@ + ;========================================================= + ; gr_copy_to_current, 40x48 version + ;========================================================= + ; copy 0xc00 to DRAW_PAGE + ; + ; 45 + 2 + 120*(8*9 + 5) -1 + 6 = 9292 + +gr_copy_to_current: + + lda DRAW_PAGE ; 3 + clc ; 2 + adc #$4 ; 2 + sta gr_copy_line+5 ; 4 + sta gr_copy_line+11 ; 4 + adc #$1 ; 2 + sta gr_copy_line+17 ; 4 + sta gr_copy_line+23 ; 4 + adc #$1 ; 2 + sta gr_copy_line+29 ; 4 + sta gr_copy_line+35 ; 4 + adc #$1 ; 2 + sta gr_copy_line+41 ; 4 + sta gr_copy_line+47 ; 4 + ;=========== + ; 45 + + ldy #119 ; for early ones, copy 120 bytes ; 2 + +gr_copy_line: + lda $C00,Y ; load a byte (self modified) ; 4 + sta $400,Y ; store a byte (self modified) ; 5 + + lda $C80,Y ; load a byte (self modified) ; 4 + sta $480,Y ; store a byte (self modified) ; 5 + + lda $D00,Y ; load a byte (self modified) ; 4 + sta $500,Y ; store a byte (self modified) ; 5 + + lda $D80,Y ; load a byte (self modified) ; 4 + sta $580,Y ; store a byte (self modified) ; 5 + + lda $E00,Y ; load a byte (self modified) ; 4 + sta $600,Y ; store a byte (self modified) ; 5 + + lda $E80,Y ; load a byte (self modified) ; 4 + sta $680,Y ; store a byte (self modified) ; 5 + + lda $F00,Y ; load a byte (self modified) ; 4 + sta $700,Y ; store a byte (self modified) ; 5 + + lda $F80,Y ; load a byte (self modified) ; 4 + sta $780,Y ; store a byte (self modified) ; 5 + + dey ; decrement pointer ; 2 + bpl gr_copy_line ; ; 2nt/3 + + rts ; 6 + diff --git a/waterfall/waterfall.dsk b/waterfall/waterfall.dsk new file mode 100644 index 0000000000000000000000000000000000000000..9edccbe1fed0bf385ad7931b024c7cf4be5799c0 GIT binary patch literal 143360 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 literal 0 HcmV?d00001 diff --git a/waterfall/waterfall.s b/waterfall/waterfall.s new file mode 100644 index 00000000..b5826f3b --- /dev/null +++ b/waterfall/waterfall.s @@ -0,0 +1,328 @@ +; Lo-res cycle-counting water transparency hack + +; by deater (Vince Weaver) + +; Zero Page +FRAMEBUFFER = $00 ; $00 - $0F +YPOS = $10 +YPOS_SIN = $11 +CH = $24 +CV = $25 +GBASL = $26 +GBASH = $27 +BASL = $28 +BASH = $29 +FRAME = $60 +BLARGH = $69 +DRAW_PAGE = $EE +LASTKEY = $F1 +PADDLE_STATUS = $F2 +TEMP = $FA + + +; Soft Switches +KEYPRESS= $C000 +KEYRESET= $C010 +SET_GR = $C050 ; Enable graphics +FULLGR = $C052 ; Full screen, no text +PAGE0 = $C054 ; Page0 +PAGE1 = $C055 ; Page1 +LORES = $C056 ; Enable LORES graphics +PADDLE_BUTTON0 = $C061 +PADDL0 = $C064 +PTRIG = $C070 + +; ROM routines + +TEXT = $FB36 ;; Set text mode +HOME = $FC58 ;; Clear the text screen +WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us + + +waterfall_demo: + + ;=================== + ; init screen + jsr TEXT + jsr HOME + bit KEYRESET + + ;=================== + ; init vars + + lda #0 + sta DRAW_PAGE + + ;============================= + ; Load graphic page0 + + lda #$0c + sta BASH + lda #$00 + sta BASL ; load image to $c00 + + lda #waterfall_page1 + sta GBASH + jsr load_rle_gr + + lda #4 + sta DRAW_PAGE + + jsr gr_copy_to_current ; copy to page1 + + ; GR part + bit PAGE1 + bit LORES ; 4 + bit SET_GR ; 4 + bit FULLGR ; 4 + + jsr wait_until_keypressed + + + ;============================= + ; Load graphic page1 + + lda #$0c + sta BASH + lda #$00 + sta BASL ; load image to $c00 + + lda #waterfall_page2 + sta GBASH + jsr load_rle_gr + + lda #0 + sta DRAW_PAGE + + jsr gr_copy_to_current + + ; GR part + bit PAGE0 + + jsr wait_until_keypressed + + + ;============================== + ; setup graphics for vapor lock + ;============================== + + ; Clear Page0 + lda #$0 + sta DRAW_PAGE + lda #$44 + jsr clear_gr + + ; Make screen half green + lda #$11 + ldy #24 + jsr clear_page_loop + + + ;===================================================== + ; attempt vapor lock + ; by reading the "floating bus" we can see most recently + ; written value of the display + ; we look for $55 (which is the grey line) + ;===================================================== + ; See: + ; Have an Apple Split by Bob Bishop + ; Softalk, October 1982 + + ; Challenges: each scan line scans 40 bytes. + ; The blanking happens at the *beginning* + ; So 65 bytes are scanned, starting at adress of the line - 25 + + ; the scan takes 8 cycles, look for 4 repeats of the value + ; to avoid false positive found if the horiz blanking is mirroring + ; the line (max 3 repeats in that case) + +vapor_lock_loop: ; first make sure we have all zeroes + LDA #$11 +zxloop: + LDX #$04 +wiloop: + CMP $C051 + BNE zxloop + DEX + BNE wiloop + + LDA #$44 ; now look for our border color (4 times) +zloop: + LDX #$04 +qloop: + CMP $C051 + BNE zloop + DEX + BNE qloop + + ; found first line of black after green, at up to line 26 on screen + ; so we want roughly 22 lines * 4 = 88*65 = 5720 + 4550 = 10270 + ; - 65 (for the scanline we missed) = 10205 - 12 = 10193 + + jsr gr_copy_to_current ; 6+ 9292 + ; 10193 - 9298 = 895 + ; Fudge factor (unknown) -30 = 865 + + ; GR part + bit LORES ; 4 + bit SET_GR ; 4 + bit FULLGR ; 4 + + ; Try X=88 Y=2 cycles=893 R2 + + nop + ldy #2 ; 2 +loopA: + ldx #88 ; 2 +loopB: + dex ; 2 + bne loopB ; 2nt/3 + + dey ; 2 + bne loopA ; 2nt/3 + + jmp display_loop +.align $100 + + + ;================================================ + ; Display Loop + ;================================================ + ; each scan line 65 cycles + ; 1 cycle each byte (40cycles) + 25 for horizontal + ; Total of 12480 cycles to draw screen + ; Vertical blank = 4550 cycles (70 scan lines) + ; Total of 17030 cycles to get back to where was + + ; We want to alternate between page1 and page2 every 65 cycles + ; vblank = 4550 cycles to do scrolling + + + ; 2 + 48*( (4+2+25*(2+3)) + (4+2+23*(2+3)+4+5)) + 9) + ; 48*[(6+125)-1] + [(6+115+10)-1] + +display_loop: + + ldy #96 ; 2 + +outer_loop: + + bit PAGE0 ; 4 + ldx #12 ; 65 cycles with PAGE0 ; 2 +page0_loop: ; delay 61+bit + dex ; 2 + bne page0_loop ; 2/3 + + + ; bit(4) -1(fallthrough) + loop*5 -1(fallthrouh)+4 extra = 61 + ; 5L = 55 + + bit PAGE1 ; 4 + ldx #11 ; 65 cycles with PAGE1 ; 2 + ; +page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra) + dex ; 2 + bne page1_loop ; 2/3 + + dey ; 2 + bne outer_loop ; 2/3 + + + + ;====================================================== + ; We have 4550 cycles in the vblank, use them wisely + ;====================================================== + ; do_nothing should be 4550+1 -2-9 -7= 4533 + + jsr do_nothing ; 6 + + lda KEYPRESS ; 4 + bpl no_keypress ; 3 + jmp run_forever +no_keypress: + + jmp display_loop ; 3 + + +run_forever: + jmp run_forever + + + ;================================= + ; do nothing + ;================================= + ; and take 4533-6 = 4527 cycles to do it +do_nothing: + + ; Try X=4 Y=174 cycles=4525 R2 + + nop ; 2 + + ldy #174 ; 2 +loop1: + ldx #4 ; 2 +loop2: + dex ; 2 + bne loop2 ; 2nt/3 + + dey ; 2 + bne loop1 ; 2nt/3 + + + rts ; 6 + + + + ;================================== + ; HLINE + ;================================== + + ; Color in A + ; Y has which line +hline: + pha ; 3 + ldx gr_offsets,y ; 4+ + stx hline_loop+1 ; 4 + lda gr_offsets+1,y ; 4+ + clc ; 2 + adc DRAW_PAGE ; 3 + sta hline_loop+2 ; 4 + pla ; 4 + ldx #39 ; 2 +hline_loop: + sta $5d0,X ; 38 ; 5 + dex ; 2 + bpl hline_loop ; 2nt/3 + rts ; 6 + + ;========================== + ; Clear gr screen + ;========================== + ; Color in A +clear_gr: + ldy #46 +clear_page_loop: + jsr hline + dey + dey + bpl clear_page_loop + rts + +gr_offsets: + .word $400,$480,$500,$580,$600,$680,$700,$780 + .word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8 + .word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0 + + +.include "../asm_routines/gr_unrle.s" +.include "../asm_routines/keypress.s" +.include "gr_copy.s" + + +.include "waterfall_page1.inc" +.include "waterfall_page2.inc" + diff --git a/waterfall/waterfall_page1.png b/waterfall/waterfall_page1.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e3e0501f5a40e72d53db00f45e831fff06370c GIT binary patch literal 6528 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 m7=qr9W+T$c?cV!wQU{;wzii`aij=wl0000 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 WaAnP^oZq?t0000