rewind2: more work on scrolling

This commit is contained in:
Vince Weaver 2025-03-26 17:18:57 -04:00
parent 9afacfa703
commit c728eee55d
7 changed files with 138 additions and 15 deletions

View File

@ -133,6 +133,9 @@ music.inc: generate_common MUSIC
./generate_common -a 0xd000 -s zx_src_l music.lst >> music.inc
./generate_common -a 0xd000 -s hgr_vertical_scroll_main music.lst >> music.inc
./generate_common -a 0xd000 -s hgr_vertical_scroll_aux music.lst >> music.inc
./generate_common -a 0xd000 -s slow_copy_main music.lst >> music.inc
./generate_common -a 0xd000 -s slow_copy_aux music.lst >> music.inc
####
@ -142,6 +145,7 @@ MUSIC: music.o
music.o: music.s zp.inc \
aux_memcopy.s copy_400.s \
zx02_optim.s vertical_scroll_down.s \
slow_copy.s \
music/Qjeta_TakeOnMe.pt3 \
pt3_lib_core.s \
pt3_lib_mockingboard_detect.s \

View File

@ -14,7 +14,6 @@ headphones:
;=================================
; Scrolling Headphones
;=================================
; TODO: scroll them in?
bit SET_GR
bit HIRES
@ -29,7 +28,10 @@ headphones:
sta DRAW_PAGE ; draw to page2
;=======================
; load graphic to page2
; load graphic to $A000
lda #$80
sta DRAW_PAGE
lda #<headphone_bin
sta zx_src_l+1
@ -43,9 +45,49 @@ headphones:
sta zx_src_h+1
jsr zx02_full_decomp_aux
lda #$20
sta DRAW_PAGE
;=================================
; copy graphic to off-screen page
ldx #0
ldy #128
lda #64
jsr slow_copy_main
ldx #0
ldy #128
lda #64
jsr slow_copy_aux
jsr wait_vblank
jsr hgr_page_flip
;========================
; copy graphic to page 2
ldx #0 ; line in PAGE1/PAGE2 to output to
ldy #128 ; lines to copy
lda #63 ; line to start in $A000
jsr slow_copy_main
ldx #0
ldy #128
lda #63
jsr slow_copy_aux
jsr wait_vblank
jsr hgr_page_flip
.if 0
; jsr wait_vblank
; jsr hgr_page_flip
;========================
; load graphic to page 1
@ -63,7 +105,7 @@ headphones:
jsr wait_vblank
jsr hgr_page_flip
.endif
;==================
; scroll a bit
@ -74,8 +116,19 @@ scroll_loop:
; scroll
jsr hgr_vertical_scroll_main
ldx #0
ldy #2
ldx SCROLL_COUNT
jsr slow_copy_main
jsr hgr_vertical_scroll_aux
ldx #0
ldy #2
ldx SCROLL_COUNT
jsr slow_copy_aux
jsr wait_vblank
jsr hgr_page_flip

View File

@ -85,14 +85,14 @@ btpl2:
; go 16 beyond, which allows our text scrolling routine
ldx #16
extra_table_loop:
lda hposn_low,X
sta hposn_low+192,X
lda hposn_high,X
eor #$60
sta hposn_high+192,X
dex
bpl extra_table_loop
; ldx #16
;extra_table_loop:
; lda hposn_low,X
; sta hposn_low+192,X
; lda hposn_high,X
; eor #$60
; sta hposn_high+192,X
; dex
; bpl extra_table_loop
rts

View File

@ -5,13 +5,14 @@
.include "hardware.inc"
.include "zp.inc"
;.include "qload.inc"
;.include "common_defines.inc"
.include "common_defines.inc"
memcpy_routines:
.include "aux_memcopy.s"
.include "copy_400.s"
.include "zx02_optim.s"
.include "vertical_scroll_down.s"
.include "slow_copy.s"
music_lib:

59
demos/rewind2/slow_copy.s Normal file
View File

@ -0,0 +1,59 @@
; copy from $A000+start : $A000+end to $2000/$4000
; X=start
; Y=len
; A=offset
slow_copy_aux:
sta WRAUX
sta RDAUX
slow_copy_main:
slow_copy:
sty LENGTH
sta OFFSET
slow_copy_outer_loop:
stx INDEX
txa
clc
adc OFFSET
tax
lda hposn_low,X ; copy src
sta slow_copy_smc1+1
lda hposn_high,X
clc
adc #$80 ; to $A0
sta slow_copy_smc1+2
ldx INDEX ; restore index
lda hposn_low,X ; copy dest
sta slow_copy_smc2+1
lda hposn_high,X
clc
adc DRAW_PAGE
sta slow_copy_smc2+2
ldy #39
slow_copy_loop:
slow_copy_smc1:
lda $A000,Y
slow_copy_smc2:
sta $2000,Y
dey
bpl slow_copy_loop
inx
dec LENGTH
bne slow_copy_outer_loop
bit RDMAIN
bit WRMAIN
rts

View File

@ -23,8 +23,6 @@ rewind2_start:
lda APPLEII_MODEL
sta message_type_offset
jsr hgr_make_tables
; init vars
lda #0
@ -122,6 +120,11 @@ dont_enable_mc:
skip_all_checks:
jsr hgr_make_tables
;====================================
;====================================
; Clear DHGR PAGE1

View File

@ -165,6 +165,9 @@ ODD = $FB
; headphones
SCROLL_COUNT = $F0
INDEX = $F1
OFFSET = $F2
LENGTH = $F3
; dancing
DANCE_COUNT = $F0