ootw: c2: dome scroll works

This commit is contained in:
Vince Weaver 2019-07-12 12:52:39 -04:00
parent cb5dd337a3
commit 5adbc70886
4 changed files with 70 additions and 4 deletions

View File

@ -52,7 +52,7 @@ OOTW_C2: ootw_c2.o
ld65 -o OOTW_C2 ootw_c2.o -C ../linker_scripts/apple2_1700.inc
ootw_c2.o: ootw_c2.s \
gr_copy.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
gr_putsprite.s gr_putsprite_flipped.s gr_putsprite_crop.s \
keyboard.s gr_run_sequence.s physicist.s \
ootw_graphics/sprites/sprites_physicist.inc \

59
ootw/gr_copy_offset.s Normal file
View File

@ -0,0 +1,59 @@
;=========================================================
; gr_copy_at_offset, 40x48 version
;=========================================================
; copy $1000 + line offset to $c00
; offset is in Y
gr_copy_to_offset:
lda #0
sta TEMPY
gr_copy_offset_outer_loop:
; calculate source
lda gr_offsets_h,Y
clc
adc #$c
sta gr_copy_offset_smc_src+2
lda gr_offsets_l,Y
sta gr_copy_offset_smc_src+1
tya
pha
; calculate destination
lda TEMPY
tay
lda gr_offsets_h,Y
clc
adc #$8
sta gr_copy_offset_smc_dst+2
lda gr_offsets_l,Y
sta gr_copy_offset_smc_dst+1
ldx #0
gr_copy_offset_line_loop:
gr_copy_offset_smc_src:
lda $1000,X
gr_copy_offset_smc_dst:
sta $c00,X
inx
cpx #40
bne gr_copy_offset_line_loop
inc TEMPY
pla
tay
iny
cpy #24
bne gr_copy_offset_outer_loop
rts ; 6

View File

@ -129,6 +129,7 @@ end_message:
.include "gr_unrle.s"
.include "gr_fast_clear.s"
.include "gr_copy.s"
.include "gr_copy_offset.s"
.include "gr_putsprite.s"
.include "gr_putsprite_flipped.s"
.include "gr_putsprite_crop.s"

View File

@ -354,16 +354,22 @@ elevator_load_background:
lda ELEVATOR_OFFSET
cmp #24
bcs elevator_bg_no_dome
bcs elevator_bg_no_dome ; bge
; dome, dome on the range
; load background
lda #>(dome_rle)
sta GBASH
lda #<(dome_rle)
sta GBASL
lda #$c ; load to page $c00
lda #$10 ; load to page $1000
jsr load_rle_gr
lda ELEVATOR_OFFSET
tay
jsr gr_copy_to_offset
rts
elevator_bg_no_dome: