mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-20 01:29:36 +00:00
trogdor: work on horiz scroll
This commit is contained in:
parent
81828eae07
commit
fcf5e39281
|
@ -165,7 +165,7 @@ trogdor.o: trogdor.s \
|
||||||
flames.inc \
|
flames.inc \
|
||||||
zp.inc hardware.inc qload.inc \
|
zp.inc hardware.inc qload.inc \
|
||||||
graphics/trog00_trogdor.hgr.zx02 \
|
graphics/trog00_trogdor.hgr.zx02 \
|
||||||
hgr_sprite_big_mask.s
|
hgr_sprite_big_mask.s horiz_scroll_simple.s hgr_copy_magnify.s
|
||||||
ca65 -o trogdor.o trogdor.s -l trogdor.lst
|
ca65 -o trogdor.o trogdor.s -l trogdor.lst
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ PNG2GR = ../../../utils/gr-utils/png2gr
|
||||||
HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite
|
HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite
|
||||||
|
|
||||||
all: \
|
all: \
|
||||||
|
actual00_trog_cottage.hgr.zx02 \
|
||||||
trog00_trogdor.hgr.zx02 \
|
trog00_trogdor.hgr.zx02 \
|
||||||
trog01_countryside.hgr.zx02 \
|
trog01_countryside.hgr.zx02 \
|
||||||
trog02_countryside.hgr.zx02 \
|
trog02_countryside.hgr.zx02 \
|
||||||
|
@ -50,6 +51,14 @@ a2_strongbad.hgr.zx02: a2_strongbad.hgr
|
||||||
a2_strongbad.hgr: a2_strongbad.png
|
a2_strongbad.hgr: a2_strongbad.png
|
||||||
$(PNG_TO_HGR) a2_strongbad.png > a2_strongbad.hgr
|
$(PNG_TO_HGR) a2_strongbad.png > a2_strongbad.hgr
|
||||||
|
|
||||||
|
|
||||||
|
####
|
||||||
|
|
||||||
|
actual00_trog_cottage.hgr.zx02: actual00_trog_cottage.hgr
|
||||||
|
$(ZX02) actual00_trog_cottage.hgr actual00_trog_cottage.hgr.zx02
|
||||||
|
|
||||||
|
actual00_trog_cottage.hgr: actual00_trog_cottage.png
|
||||||
|
$(PNG_TO_HGR) actual00_trog_cottage.png > actual00_trog_cottage.hgr
|
||||||
####
|
####
|
||||||
|
|
||||||
trog00_trogdor.hgr.zx02: trog00_trogdor.hgr
|
trog00_trogdor.hgr.zx02: trog00_trogdor.hgr
|
||||||
|
|
BIN
demos/trogdor/graphics/actual00_trog_cottage.png
Normal file
BIN
demos/trogdor/graphics/actual00_trog_cottage.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
49
demos/trogdor/hgr_copy_fast.s
Normal file
49
demos/trogdor/hgr_copy_fast.s
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
;=========================================================
|
||||||
|
; hgr copy from page in A to current DRAW_PAGE
|
||||||
|
;=========================================================
|
||||||
|
|
||||||
|
; would be faster if we unroll it, but much bigger
|
||||||
|
|
||||||
|
; old numbers
|
||||||
|
|
||||||
|
; 14+ ((14*256)+20)*32 + 5 = 115347 = 8.6fps
|
||||||
|
|
||||||
|
; theoretical unrolled, 30*6 bytes bigger (180 bytes?)
|
||||||
|
; 2 + ((9*32)+5)*256 + 5 = 75015 = 13.3 fps
|
||||||
|
|
||||||
|
hgr_copy_fast:
|
||||||
|
; copy from in A
|
||||||
|
|
||||||
|
sta hgr_copy_smc+2 ; 4
|
||||||
|
clc
|
||||||
|
adc #$20
|
||||||
|
sta hgr_copy_end_smc+1
|
||||||
|
|
||||||
|
ldx #0 ; 2
|
||||||
|
|
||||||
|
lda DRAW_PAGE
|
||||||
|
clc
|
||||||
|
adc #$20
|
||||||
|
sta hgr_copy_smc+5 ; 4
|
||||||
|
|
||||||
|
hgr_copy_column:
|
||||||
|
|
||||||
|
hgr_copy_smc:
|
||||||
|
lda $8000,X ; 4
|
||||||
|
sta $2000,X ; 5
|
||||||
|
|
||||||
|
dex ; 2
|
||||||
|
bne hgr_copy_column ; 2nt/3t
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
inc hgr_copy_smc+2 ; 6
|
||||||
|
inc hgr_copy_smc+5 ; 6
|
||||||
|
|
||||||
|
lda hgr_copy_smc+2 ; 4
|
||||||
|
hgr_copy_end_smc:
|
||||||
|
cmp #$C0 ; 2
|
||||||
|
bne hgr_copy_column ; 2/3
|
||||||
|
|
||||||
|
rts ; 6
|
||||||
|
|
56
demos/trogdor/hgr_copy_magnify.s
Normal file
56
demos/trogdor/hgr_copy_magnify.s
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
;=============================================================
|
||||||
|
; hgr copy from page in A to current DRAW_PAGE but magnify 2x
|
||||||
|
;=========================================================
|
||||||
|
|
||||||
|
; would be faster if we unroll it, but much bigger
|
||||||
|
|
||||||
|
; At first from left side of image, eventually arbitrary?
|
||||||
|
|
||||||
|
; destination in A?
|
||||||
|
|
||||||
|
hgr_copy_magnify:
|
||||||
|
|
||||||
|
; for (y=0;y<192;y++) {
|
||||||
|
; for(x=0;x<40;x+=2) {
|
||||||
|
; A=src[x];
|
||||||
|
; dest[x]=lookup1[A];
|
||||||
|
; dest[x+1]=lookup2[A];
|
||||||
|
; y++;
|
||||||
|
; dest[x]=lookup1[A];
|
||||||
|
; dest[x+1]=lookup2[A];
|
||||||
|
; }
|
||||||
|
; }
|
||||||
|
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
magnify_outer_loop:
|
||||||
|
lda hposn_low,X
|
||||||
|
sta OUTL
|
||||||
|
|
||||||
|
lda hposn_high,X
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta OUTH
|
||||||
|
|
||||||
|
|
||||||
|
lda hposn_low,X
|
||||||
|
sta INL
|
||||||
|
|
||||||
|
lda hposn_high,X
|
||||||
|
clc
|
||||||
|
adc #$40
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
magnify_inner_loop:
|
||||||
|
lda (INL),Y
|
||||||
|
sta (OUTL),Y
|
||||||
|
iny
|
||||||
|
cpy #40
|
||||||
|
bne magnify_inner_loop
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx #192
|
||||||
|
bne magnify_outer_loop
|
||||||
|
|
||||||
|
rts
|
66
demos/trogdor/horiz_scroll_simple.s
Normal file
66
demos/trogdor/horiz_scroll_simple.s
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
;==================================
|
||||||
|
; do very simple horizontal scroll
|
||||||
|
;==================================
|
||||||
|
; screens to pan in $2000/$4000 to left
|
||||||
|
|
||||||
|
|
||||||
|
horiz_pan:
|
||||||
|
|
||||||
|
pan_loop:
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta COUNT
|
||||||
|
|
||||||
|
pan_outer_outer_loop:
|
||||||
|
|
||||||
|
ldx #191
|
||||||
|
pan_outer_loop:
|
||||||
|
|
||||||
|
lda hposn_high,X
|
||||||
|
sta pil_smc1+2
|
||||||
|
sta pil_smc2+2
|
||||||
|
sta pil_smc4+2
|
||||||
|
eor #$60
|
||||||
|
sta pil_smc3+2
|
||||||
|
|
||||||
|
lda hposn_low,X
|
||||||
|
sta pil_smc2+1
|
||||||
|
sta pil_smc4+1
|
||||||
|
|
||||||
|
sta pil_smc1+1
|
||||||
|
inc pil_smc1+1
|
||||||
|
clc
|
||||||
|
adc COUNT
|
||||||
|
sta pil_smc3+1
|
||||||
|
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
pan_inner_loop:
|
||||||
|
|
||||||
|
pil_smc1:
|
||||||
|
lda $2000+1,Y
|
||||||
|
pil_smc2:
|
||||||
|
sta $2000,Y
|
||||||
|
|
||||||
|
iny
|
||||||
|
cpy #39
|
||||||
|
bne pan_inner_loop
|
||||||
|
|
||||||
|
pil_smc3:
|
||||||
|
lda $4000
|
||||||
|
pil_smc4:
|
||||||
|
sta $2000,Y
|
||||||
|
|
||||||
|
dex
|
||||||
|
cpx #$ff
|
||||||
|
bne pan_outer_loop
|
||||||
|
|
||||||
|
; jsr wait_until_keypress
|
||||||
|
|
||||||
|
inc COUNT
|
||||||
|
lda COUNT
|
||||||
|
cmp #39
|
||||||
|
|
||||||
|
bne pan_outer_outer_loop
|
||||||
|
|
||||||
|
rts
|
|
@ -16,8 +16,8 @@ trogdor_main:
|
||||||
|
|
||||||
lda #$0
|
lda #$0
|
||||||
sta DRAW_PAGE
|
sta DRAW_PAGE
|
||||||
; sta FRAME
|
|
||||||
; sta SECONDS
|
; clear PAGE1 to white
|
||||||
|
|
||||||
ldy #$7f
|
ldy #$7f
|
||||||
jsr hgr_clear_screen
|
jsr hgr_clear_screen
|
||||||
|
@ -29,6 +29,9 @@ trogdor_main:
|
||||||
bit FULLGR
|
bit FULLGR
|
||||||
bit PAGE1
|
bit PAGE1
|
||||||
|
|
||||||
|
lda #$20
|
||||||
|
sta DRAW_PAGE
|
||||||
|
|
||||||
;======================================
|
;======================================
|
||||||
; draw SCENE 1
|
; draw SCENE 1
|
||||||
;======================================
|
;======================================
|
||||||
|
@ -36,7 +39,7 @@ trogdor_main:
|
||||||
; scroll in zoomed in trogdor from right to left
|
; scroll in zoomed in trogdor from right to left
|
||||||
; for 60 frames (roughly 2s)
|
; for 60 frames (roughly 2s)
|
||||||
|
|
||||||
; decompress trogdor screen to offscreen $6000
|
; decompress trogdor to $6000
|
||||||
|
|
||||||
lda #<trog00_graphics
|
lda #<trog00_graphics
|
||||||
sta zx_src_l+1
|
sta zx_src_l+1
|
||||||
|
@ -45,16 +48,12 @@ trogdor_main:
|
||||||
lda #$60
|
lda #$60
|
||||||
jsr zx02_full_decomp
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; copy+magnify to PAGE2
|
||||||
|
|
||||||
lda #$60
|
lda #$60
|
||||||
jsr hgr_copy_fast
|
jsr hgr_copy_magnify
|
||||||
|
|
||||||
jsr wait_until_keypress
|
jsr horiz_pan
|
||||||
|
|
||||||
; TODO: can remove these?
|
|
||||||
|
|
||||||
; current, DRAW_PAGE=0, active page=1
|
|
||||||
lda #$20
|
|
||||||
sta DRAW_PAGE
|
|
||||||
|
|
||||||
; clear to white
|
; clear to white
|
||||||
ldy #$7f
|
ldy #$7f
|
||||||
|
@ -281,7 +280,7 @@ finished:
|
||||||
|
|
||||||
|
|
||||||
trog00_graphics:
|
trog00_graphics:
|
||||||
.incbin "graphics/trog00_trogdor.hgr.zx02"
|
.incbin "graphics/actual00_trog_cottage.hgr.zx02"
|
||||||
|
|
||||||
trog03_graphics:
|
trog03_graphics:
|
||||||
.incbin "graphics/trog03_man.hgr.zx02"
|
.incbin "graphics/trog03_man.hgr.zx02"
|
||||||
|
@ -294,9 +293,8 @@ hposn_low = $1e00
|
||||||
hposn_high = $1f00
|
hposn_high = $1f00
|
||||||
|
|
||||||
.include "hgr_sprite_big_mask.s"
|
.include "hgr_sprite_big_mask.s"
|
||||||
|
.include "horiz_scroll_simple.s"
|
||||||
;.include "graphics/flame_sprites.inc"
|
.include "hgr_copy_magnify.s"
|
||||||
|
|
||||||
|
|
||||||
;===============================
|
;===============================
|
||||||
; draw_flame_small
|
; draw_flame_small
|
||||||
|
|
Loading…
Reference in New Issue
Block a user