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 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_main music.lst >> music.inc
./generate_common -a 0xd000 -s hgr_vertical_scroll_aux 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 \ music.o: music.s zp.inc \
aux_memcopy.s copy_400.s \ aux_memcopy.s copy_400.s \
zx02_optim.s vertical_scroll_down.s \ zx02_optim.s vertical_scroll_down.s \
slow_copy.s \
music/Qjeta_TakeOnMe.pt3 \ music/Qjeta_TakeOnMe.pt3 \
pt3_lib_core.s \ pt3_lib_core.s \
pt3_lib_mockingboard_detect.s \ pt3_lib_mockingboard_detect.s \

View File

@@ -14,7 +14,6 @@ headphones:
;================================= ;=================================
; Scrolling Headphones ; Scrolling Headphones
;================================= ;=================================
; TODO: scroll them in?
bit SET_GR bit SET_GR
bit HIRES bit HIRES
@@ -29,7 +28,10 @@ headphones:
sta DRAW_PAGE ; draw to page2 sta DRAW_PAGE ; draw to page2
;======================= ;=======================
; load graphic to page2 ; load graphic to $A000
lda #$80
sta DRAW_PAGE
lda #<headphone_bin lda #<headphone_bin
sta zx_src_l+1 sta zx_src_l+1
@@ -43,9 +45,49 @@ headphones:
sta zx_src_h+1 sta zx_src_h+1
jsr zx02_full_decomp_aux 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 wait_vblank
jsr hgr_page_flip 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 ; load graphic to page 1
@@ -63,7 +105,7 @@ headphones:
jsr wait_vblank jsr wait_vblank
jsr hgr_page_flip jsr hgr_page_flip
.endif
;================== ;==================
; scroll a bit ; scroll a bit
@@ -74,8 +116,19 @@ scroll_loop:
; scroll ; scroll
jsr hgr_vertical_scroll_main jsr hgr_vertical_scroll_main
ldx #0
ldy #2
ldx SCROLL_COUNT
jsr slow_copy_main
jsr hgr_vertical_scroll_aux jsr hgr_vertical_scroll_aux
ldx #0
ldy #2
ldx SCROLL_COUNT
jsr slow_copy_aux
jsr wait_vblank jsr wait_vblank
jsr hgr_page_flip jsr hgr_page_flip

View File

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

View File

@@ -5,13 +5,14 @@
.include "hardware.inc" .include "hardware.inc"
.include "zp.inc" .include "zp.inc"
;.include "qload.inc" ;.include "qload.inc"
;.include "common_defines.inc" .include "common_defines.inc"
memcpy_routines: memcpy_routines:
.include "aux_memcopy.s" .include "aux_memcopy.s"
.include "copy_400.s" .include "copy_400.s"
.include "zx02_optim.s" .include "zx02_optim.s"
.include "vertical_scroll_down.s" .include "vertical_scroll_down.s"
.include "slow_copy.s"
music_lib: 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 lda APPLEII_MODEL
sta message_type_offset sta message_type_offset
jsr hgr_make_tables
; init vars ; init vars
lda #0 lda #0
@@ -122,6 +120,11 @@ dont_enable_mc:
skip_all_checks: skip_all_checks:
jsr hgr_make_tables
;==================================== ;====================================
;==================================== ;====================================
; Clear DHGR PAGE1 ; Clear DHGR PAGE1

View File

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