From 626121ef29b47e66db9632854de66bd41beadf88 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 25 Jan 2024 00:19:13 -0500 Subject: [PATCH] trogdor: scroll in cottage also move things around as we hit the 16k limit --- demos/trogdor/Makefile | 13 +++++++++ demos/trogdor/qload.s | 6 ++++ demos/trogdor/trogdor.s | 49 ++++++++++++++++++++++++++------- demos/trogdor/vertical_scroll.s | 36 ++++++++++++++++-------- 4 files changed, 82 insertions(+), 22 deletions(-) diff --git a/demos/trogdor/Makefile b/demos/trogdor/Makefile index 49e20d7f..a2f1ddf1 100644 --- a/demos/trogdor/Makefile +++ b/demos/trogdor/Makefile @@ -37,6 +37,12 @@ QLOAD: qload.o ld65 -o QLOAD qload.o -C $(LINKER_SCRIPTS)/apple2_1200.inc qload.o: zp.inc hardware.inc music.inc qload.s \ + hgr_sprite_big_mask.s \ + horiz_scroll_simple.s \ + horiz_scroll_skip.s \ + hgr_copy_magnify.s \ + vertical_scroll.s \ + hgr_copy_part.s \ gr_offsets.s \ wait.s wait_a_bit.s \ lc_detect.s \ @@ -92,6 +98,13 @@ qload.inc: generate_common QLOAD ./generate_common -a 0x1200 -s hgr_clear_screen qload.lst >> qload.inc ./generate_common -a 0x1200 -s hgr_copy_fast qload.lst >> qload.inc ./generate_common -a 0x1200 -s hgr_page_flip qload.lst >> qload.inc + ./generate_common -a 0x1200 -s hgr_copy_part qload.lst >> qload.inc + ./generate_common -a 0x1200 -s hgr_draw_sprite_big_mask qload.lst >> qload.inc + ./generate_common -a 0x1200 -s horiz_pan qload.lst >> qload.inc + ./generate_common -a 0x1200 -s hgr_vertical_scroll_right qload.lst >> qload.inc + ./generate_common -a 0x1200 -s hgr_vertical_scroll_left qload.lst >> qload.inc + ./generate_common -a 0x1200 -s horiz_pan_skip qload.lst >> qload.inc + ./generate_common -a 0x1200 -s hgr_copy_magnify qload.lst >> qload.inc #### diff --git a/demos/trogdor/qload.s b/demos/trogdor/qload.s index 276e5069..9b9494e3 100644 --- a/demos/trogdor/qload.s +++ b/demos/trogdor/qload.s @@ -211,6 +211,12 @@ hposn_low = $1e00 hposn_high = $1f00 .include "hgr_table.s" + .include "hgr_sprite_big_mask.s" + .include "horiz_scroll_simple.s" + .include "horiz_scroll_skip.s" + .include "hgr_copy_magnify.s" + .include "vertical_scroll.s" + .include "hgr_copy_part.s" qload_end: diff --git a/demos/trogdor/trogdor.s b/demos/trogdor/trogdor.s index af24d1d1..b6a936ad 100644 --- a/demos/trogdor/trogdor.s +++ b/demos/trogdor/trogdor.s @@ -280,13 +280,13 @@ left_flame_animate2: scroll_in_loop: - jsr hgr_vertical_scroll + jsr hgr_vertical_scroll_left lda COUNT clc adc #8 - cmp #192 + cmp #200 bne scroll_in_loop lda #10 @@ -537,6 +537,35 @@ up_down_animate: ; white screen ; scroll up cottage, takes roughly 90 frames (3s) + ldy #$7f + jsr hgr_clear_screen + jsr hgr_page_flip + + lda #trog04_graphics + sta zx_src_h+1 + lda #$60 + jsr zx02_full_decomp + + lda #0 + sta COUNT + +scroll_in_loop2: + + jsr hgr_vertical_scroll_right + + lda COUNT + clc + adc #8 + + cmp #200 + bne scroll_in_loop2 + + lda #10 + jsr wait_ticks + + ;====================================== ; draw SCENE 13 ;====================================== @@ -598,15 +627,15 @@ trog04_graphics: .include "irq_wait.s" -hposn_low = $1e00 -hposn_high = $1f00 +;hposn_low = $1e00 +;hposn_high = $1f00 -.include "hgr_sprite_big_mask.s" -.include "horiz_scroll_simple.s" -.include "horiz_scroll_skip.s" -.include "hgr_copy_magnify.s" -.include "vertical_scroll.s" -.include "hgr_copy_part.s" +;.include "hgr_sprite_big_mask.s" +;.include "horiz_scroll_simple.s" +;.include "horiz_scroll_skip.s" +;.include "hgr_copy_magnify.s" +;.include "vertical_scroll.s" +;.include "hgr_copy_part.s" ;=============================== ; draw_flame_small diff --git a/demos/trogdor/vertical_scroll.s b/demos/trogdor/vertical_scroll.s index f662e56f..46eee936 100644 --- a/demos/trogdor/vertical_scroll.s +++ b/demos/trogdor/vertical_scroll.s @@ -1,20 +1,31 @@ ;======================================= - ; scrolls to PAGE1 - ; relies on going off the edge... + ; hgr_vertical scroll ;======================================= + ; scrolls from $6000 to page1 + ; jumps increments of 8 for speed + ;======================================= + ; offset line in $6000 to copy in from in COUNT + +hgr_vertical_scroll_left: + lda #0 + beq hgr_vertical_scroll_common +hgr_vertical_scroll_right: + lda #20 +hgr_vertical_scroll_common: + sta vscroll_offset_smc+1 hgr_vertical_scroll: - ldx #0 + ldx #0 ; start at top outer_vscroll_loop: - lda hposn_low,X - sta OUTL + lda hposn_low,X ; get page1 address + sta OUTL ; set as output lda hposn_high,X sta OUTH - txa - clc + txa ; get address of X+8 + clc ; and set as input adc #8 tay lda hposn_low,y @@ -22,7 +33,7 @@ outer_vscroll_loop: lda hposn_high,Y sta INH - ldy #29 + ldy #29 ; only scroll from 9..29 inner_vscroll_loop: lda (INL),Y sta (OUTL),Y @@ -41,12 +52,12 @@ inner_vscroll_loop: ; for now from 0..19 hgr_vertical_scroll2: - ldx #184 + ldx #184 ; start 8 from bottom outer_vscroll_loop2: lda hposn_low,X clc - adc #10 + adc #10 ; copy to middle of screen sta OUTL lda hposn_high,X @@ -54,6 +65,9 @@ outer_vscroll_loop2: ldy COUNT lda hposn_low,Y + clc +vscroll_offset_smc: + adc #$0 sta INL lda hposn_high,Y clc @@ -73,7 +87,5 @@ inner_vscroll_loop2: cpx #192 bne outer_vscroll_loop2 - - rts