trogdor: add scroll down

This commit is contained in:
Vince Weaver 2024-01-27 01:34:23 -05:00
parent 8e82b8f44e
commit d8be4e48c7
3 changed files with 125 additions and 11 deletions

View File

@ -189,7 +189,7 @@ trogdor.o: trogdor.s \
zp.inc hardware.inc qload.inc \
graphics/trog00_trogdor.hgr.zx02 \
hgr_sprite_big_mask.s horiz_scroll_simple.s hgr_copy_magnify.s \
horiz_scroll_skip.s vertical_scroll.s hgr_copy_part.s
horiz_scroll_skip.s vertical_scroll_down.s hgr_copy_part.s
ca65 -o trogdor.o trogdor.s -l trogdor.lst

View File

@ -87,9 +87,6 @@ trog_no_music:
; left tall 1212 roughly 10 frames (1/2 s)
; left short 2 frames
;======================================
; left flame short 2 frames
; clear to white
ldy #$7f
jsr hgr_clear_screen
@ -100,10 +97,10 @@ trog_no_music:
jsr hgr_page_flip
lda #0
lda #0 ; blank bg
sta FLAME_BG
lda #8
lda #8 ; x-coords for two flames
sta FLAME_L
lda #24
sta FLAME_R
@ -137,9 +134,6 @@ trog_no_music:
jsr hgr_clear_screen
jsr hgr_page_flip
; lda #24 ; 192/8
; sta ANIMATE_COUNT
lda #0
sta COUNT
@ -222,10 +216,26 @@ scroll_in_loop:
lda #42
jsr wait_ticks
;=====================
; do flames
lda #1
sta FLAME_BG
jsr do_flames
;=====================
; done flames
ldy #$7f
jsr hgr_clear_screen
jsr hgr_copy_left
jsr hgr_page_flip
lda #30
jsr wait_ticks
;======================================
; dragon man
@ -274,10 +284,15 @@ scroll_in_loop:
jsr wait_ticks
;==========================
; dragon zoom
lda #$60
jsr hgr_copy_magnify
;===========================
; rapidly switch
lda #12
sta ANIMATE_COUNT
rapid_switch:
@ -289,6 +304,32 @@ rapid_switch:
dec ANIMATE_COUNT
bne rapid_switch
;===h========================
; scroll off screen
; switch to page1
ldy #$7f
jsr hgr_clear_screen
jsr hgr_copy_left
jsr hgr_page_flip
lda #0
sta COUNT
scroll_down_in_loop:
jsr hgr_vertical_scroll_down_left
lda COUNT
clc
adc #8
sta COUNT
cmp #200
bne scroll_down_in_loop
;=========================
; clear to white screen
ldy #$7f
@ -503,8 +544,8 @@ 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"
@ -513,6 +554,7 @@ trog04_graphics:
;.include "vertical_scroll.s"
;.include "hgr_copy_part.s"
.include "vertical_scroll_down.s"
.include "do_flames.s"
;=========================================

View File

@ -0,0 +1,72 @@
;=======================================
; hgr_vertical scroll_down
;=======================================
; scrolls from $6000 to page1
; jumps increments of 8 for speed
;=======================================
hgr_vertical_scroll_down_left:
; lda #0
; beq hgr_vertical_scroll_down_common
hgr_vertical_scroll_down_right:
; lda #20
hgr_vertical_scroll_down_common:
; sta vscroll_down_offset_smc+1
hgr_vertical_scroll_down:
ldx #183 ; start at bottom
outer_vscroll_down_loop:
lda hposn_low,X ; get page1 address
sta INL ; set as output
lda hposn_high,X
sta INH
txa ; get address of X+8
clc ; and set as output
adc #8
tay
lda hposn_low,y
sta OUTL
lda hposn_high,Y
sta OUTH
ldy #29 ; only scroll from 9..29
inner_vscroll_down_loop:
lda (INL),Y
sta (OUTL),Y
dey
cpy #9
bpl inner_vscroll_down_loop
dex
cpx #$FF
bne outer_vscroll_down_loop
;================================
; copy in off screen
; for now assume all white
ldx #7 ; start at top
outer_vscroll_down_loop2:
lda hposn_low,X
sta OUTL
lda hposn_high,X
sta OUTH
ldy #39
lda #$7f
inner_vscroll_down_loop2:
sta (OUTL),Y
dey
bpl inner_vscroll_down_loop2
dex
bpl outer_vscroll_down_loop2
rts