trogdor: loading dragonman

This commit is contained in:
Vince Weaver 2024-01-21 22:40:00 -05:00
parent 10316bbfad
commit c0bd03bab7
9 changed files with 133 additions and 38 deletions

View File

@ -176,7 +176,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
horiz_scroll_skip.s vertical_scroll.s hgr_copy_part.s
ca65 -o trogdor.o trogdor.s -l trogdor.lst

View File

@ -154,3 +154,9 @@ Space:
$D000 - $E2FF = MUSIC ($12DF in size) 4831
$E300 - $F9FF = FLAMES ($1650 in size) 5712
$FA00 - $FEFF = COUNTRYSIDE ($498 in side) 1176
dragonman:
original man=1973 dragonman=1982 = 3955 bytes
combined = 3669 bytes
optimize so bases same: = 3191 bytes

View File

@ -7,6 +7,7 @@ HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite
all: \
actual00_trog_cottage.hgr.zx02 \
actual01_dragonman.hgr.zx02 \
trog00_trogdor.hgr.zx02 \
trog01_countryside.hgr.zx02 \
trog02_countryside.hgr.zx02 \
@ -59,6 +60,15 @@ actual00_trog_cottage.hgr.zx02: actual00_trog_cottage.hgr
actual00_trog_cottage.hgr: actual00_trog_cottage.png
$(PNG_TO_HGR) actual00_trog_cottage.png > actual00_trog_cottage.hgr
####
actual01_dragonman.hgr.zx02: actual01_dragonman.hgr
$(ZX02) actual01_dragonman.hgr actual01_dragonman.hgr.zx02
actual01_dragonman.hgr: actual01_dragonman.png
$(PNG_TO_HGR) actual01_dragonman.png > actual01_dragonman.hgr
####
trog00_trogdor.hgr.zx02: trog00_trogdor.hgr

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,47 @@
;=========================================================
; hgr copy from page in A to current DRAW_PAGE
;=========================================================
; from source, assume $6000
; from COPY_X1,Y1 to WIDTH, Y2
; copy to DRAW_PAGE
; SPRITE_X,SPRITE_Y
hgr_copy_part:
hgr_copy_outer_loop:
ldy COPY_Y1
lda hposn_low,Y
clc
adc COPY_X1
sta INL
lda hposn_high,Y
clc
adc #$40 ; force $6000
sta INH
ldy SPRITE_Y
lda hposn_low,Y
clc
adc SPRITE_X
sta OUTL
lda hposn_high,Y
clc
adc DRAW_PAGE
sta OUTH
ldy COPY_WIDTH
hgr_copy_inner_loop:
lda (INL),Y
sta (OUTL),Y
dey
bpl hgr_copy_inner_loop
inc COPY_Y1
inc SPRITE_Y
lda COPY_Y1
cmp COPY_Y2
bne hgr_copy_outer_loop
rts ; 6

View File

@ -3,8 +3,11 @@
;======================================
; screens to pan in $2000/$4000 to left
; A is times to scroll
horiz_pan:
sta pan_count_smc+1
pan_loop:
@ -80,6 +83,7 @@ pil_smc4:
inc COUNT
lda COUNT
pan_count_smc:
cmp #39
bne pan_outer_outer_loop

View File

@ -11,18 +11,18 @@
horiz_pan_skip:
pan_loop:
pan_skip_loop:
; how many times to scroll
lda #0
sta COUNT
pan_outer_outer_loop:
pan_skip_outer_outer_loop:
ldx #191
pan_outer_loop:
pan_skip_outer_loop:
txa
pha
@ -75,7 +75,7 @@ pan_outer_loop:
; inner loop, from 0-36
ldy #0
pan_inner_loop:
pan_skip_inner_loop:
; load in+1, store to in
@ -92,7 +92,7 @@ pil_out_smc2:
iny ; 2
cpy #36 ; 2
bne pan_inner_loop ; 2/3
bne pan_skip_inner_loop ; 2/3
; for right edge, scroll in from PAGE2
@ -118,7 +118,7 @@ pil_out_smc5:
dex
dex
cpx #$ff
bne pan_outer_loop
bne pan_skip_outer_loop
inc COUNT
inc COUNT
@ -128,6 +128,6 @@ pil_out_smc5:
lda COUNT
cmp #36
bne pan_outer_outer_loop
bne pan_skip_outer_outer_loop
rts

View File

@ -309,14 +309,20 @@ scroll_in_loop:
lda #$20
jsr zx02_full_decomp
; decompress second part to $4000
lda #<$FA00
sta zx_src_l+1
lda #>$FA00
sta zx_src_h+1
lda #$40
jsr zx02_full_decomp
; pan 9 times
; FIXME: update timing
lda #9
sta ANIMATE_COUNT
countryside_pan_loop:
jsr horiz_pan_skip
dec ANIMATE_COUNT
bne countryside_pan_loop
jsr horiz_pan
;======================================
; draw SCENE 5
@ -340,19 +346,42 @@ countryside_pan_loop:
;=======================================
;======================================
; man
lda #<trog03_graphics
sta zx_src_l+1
lda #>trog03_graphics
sta zx_src_h+1
lda #$60
jsr zx02_full_decomp
ldy #$7f
jsr hgr_clear_screen
; FIXME: make a "copy left" routine
lda #0
sta COPY_X1
sta COPY_Y1
sta SPRITE_Y
lda #10
sta SPRITE_X
lda #20
sta COPY_WIDTH
lda #191
sta COPY_Y2
jsr hgr_copy_part
jsr hgr_page_flip
lda #42
jsr wait_ticks
jsr wait_until_keypress
; second
; lda #<trog03_graphics
; sta zx_src_l+1
; lda #>trog03_graphics
; sta zx_src_h+1
; lda #$20
; jsr zx02_full_decomp
finished:
jmp finished
@ -383,8 +412,8 @@ trog00_graphics:
trog01_graphics:
.incbin "graphics/trog01_countryside.hgr.zx02"
;trog03_graphics:
;.incbin "graphics/trog03_man.hgr.zx02"
trog03_graphics:
.incbin "graphics/actual01_dragonman.hgr.zx02"
.include "wait_keypress.s"
.include "irq_wait.s"
@ -394,9 +423,11 @@ hposn_low = $1e00
hposn_high = $1f00
.include "hgr_sprite_big_mask.s"
.include "horiz_scroll_simple.s"
.include "horiz_scroll_skip.s"
.include "hgr_copy_magnify.s"
.include "vertical_scroll.s"
.include "hgr_copy_part.s"
;===============================
; draw_flame_small

View File

@ -116,17 +116,14 @@ SECOND_COUNTDOWN= $E1
COUNT = $E2
XSAVE = $E3
TEMPY = $E4
XPOS = $E5 ; gr_plot
YPOS = $E6 ; gr_plot
COLOR_MASK = $E7 ; gr_plot
;FRAMEL = $E8
;FRAMEH = $E9
FRAME = $E8
SECONDS = $E9
FRAME = $E5
SECONDS = $E6
COPY_X1 = $E7
COPY_Y1 = $E8
COPY_WIDTH = $E9
COPY_Y2 = $EA
BTC_L = $EA ; audio
BTC_H = $EB ; audio
MASKL = $EC ; gr_putsprite_mask
MASKL = $EC
MASKH = $ED