ds: add book scene
This commit is contained in:
parent
86032b87c3
commit
be1bea3b61
|
@ -4,11 +4,12 @@ DOS33 = ../dos33fs-utils/dos33
|
|||
PNG2RLE = ../gr-utils/png2rle
|
||||
PNG2LZ4 = ../gr-utils/png2lz4
|
||||
PNG_TO_40x96 = ../gr-utils/png_to_40x96
|
||||
|
||||
PNG_TO_40x48D = ../gr-utils/png_to_40x48d
|
||||
B2D = ../bmp2dhr/b2d
|
||||
|
||||
all: demosplash.dsk
|
||||
|
||||
demosplash.dsk: HELLO DEMOSPLASH LOADER
|
||||
demosplash.dsk: HELLO DEMOSPLASH LOADER BOOK_HGR2C.BIN
|
||||
cp empty.dsk demosplash.dsk
|
||||
$(DOS33) -y demosplash.dsk SAVE A HELLO
|
||||
$(DOS33) -y demosplash.dsk BSAVE -a 0x1400 LOADER
|
||||
|
@ -34,7 +35,8 @@ demosplash.o: demosplash.s \
|
|||
starbase.s starbase_action.s \
|
||||
graphics/starbase/starbase.inc \
|
||||
graphics/sprites/alien.inc graphics/sprites/astronaut.inc \
|
||||
dya_space_demo.pt3 appleII_40_96.inc
|
||||
dya_space_demo.pt3 appleII_40_96.inc \
|
||||
book.s book_40_48d.inc
|
||||
ca65 -o demosplash.o demosplash.s -l demosplash.lst
|
||||
|
||||
#####
|
||||
|
@ -51,6 +53,22 @@ loader.o: loader.s
|
|||
appleII_40_96.inc: appleII_40_96.png
|
||||
$(PNG_TO_40x96) asm appleII_40_96.png appleII > appleII_40_96.inc
|
||||
|
||||
#####
|
||||
|
||||
|
||||
#ball.img.lz4: ball.img
|
||||
# lz4 -f -16 ball.img
|
||||
|
||||
#ball.img: BALLC.BIN
|
||||
# cp BALLC.BIN ball.img
|
||||
|
||||
BOOK_HGR2C.BIN: book_hgr2.bmp
|
||||
$(B2D) book_hgr2.bmp HGR -d
|
||||
|
||||
#####
|
||||
|
||||
book_40_48d.inc: book_40_48d.png
|
||||
$(PNG_TO_40x48D) asm book_40_48d.png book > book_40_48d.inc
|
||||
|
||||
#####
|
||||
|
||||
|
|
|
@ -0,0 +1,218 @@
|
|||
; Display a 40x48d lo-res image
|
||||
|
||||
; Uses the 40x48d page1/page2 every-1-scanline pageflip mode
|
||||
|
||||
; by deater (Vince Weaver) <vince@deater.net>
|
||||
|
||||
; Zero Page
|
||||
;FRAME = $60
|
||||
;BLARGH = $69
|
||||
;DRAW_PAGE = $EE
|
||||
;LASTKEY = $F1
|
||||
;PADDLE_STATUS = $F2
|
||||
;TEMP = $FA
|
||||
WHICH = $E3
|
||||
|
||||
|
||||
|
||||
book:
|
||||
lda #0
|
||||
sta WHICH
|
||||
|
||||
;===================
|
||||
; init screen
|
||||
jsr TEXT
|
||||
jsr HOME
|
||||
bit KEYRESET
|
||||
|
||||
;===================
|
||||
; init vars
|
||||
|
||||
lda #0
|
||||
sta DRAW_PAGE
|
||||
|
||||
;=============================
|
||||
; Load graphic page0
|
||||
|
||||
lda WHICH
|
||||
asl
|
||||
asl ; which*4
|
||||
tay
|
||||
|
||||
lda pictures,Y
|
||||
sta GBASL
|
||||
lda pictures+1,Y
|
||||
sta GBASH
|
||||
|
||||
lda #$c ; load image to $c00
|
||||
|
||||
jsr load_rle_gr
|
||||
|
||||
lda #4
|
||||
sta DRAW_PAGE
|
||||
|
||||
|
||||
|
||||
jsr gr_copy_to_current ; copy to page1
|
||||
|
||||
; GR part
|
||||
bit PAGE1
|
||||
bit LORES ; 4
|
||||
bit SET_GR ; 4
|
||||
bit FULLGR ; 4
|
||||
|
||||
jsr wait_until_keypressed
|
||||
|
||||
|
||||
;=============================
|
||||
; Load graphic page1
|
||||
|
||||
lda WHICH
|
||||
asl
|
||||
asl ; which*4
|
||||
tay
|
||||
|
||||
lda pictures+2,Y
|
||||
sta GBASL
|
||||
lda pictures+3,Y
|
||||
sta GBASH
|
||||
lda #$c ; load image to $c00
|
||||
jsr load_rle_gr
|
||||
|
||||
lda #0
|
||||
sta DRAW_PAGE
|
||||
|
||||
jsr gr_copy_to_current
|
||||
|
||||
; GR part
|
||||
bit PAGE0
|
||||
|
||||
jsr wait_until_keypressed
|
||||
|
||||
|
||||
;==============================
|
||||
; setup graphics for vapor lock
|
||||
;==============================
|
||||
|
||||
jsr vapor_lock
|
||||
|
||||
; vapor lock returns with us at beginning of hsync in line
|
||||
; 114 (7410 cycles), so with 5070 lines to go
|
||||
|
||||
; GR part
|
||||
bit LORES ; 4
|
||||
bit SET_GR ; 4
|
||||
bit FULLGR ; 4
|
||||
|
||||
jsr gr_copy_to_current ; 6+ 9292
|
||||
|
||||
; now we have 322 left
|
||||
|
||||
; 322 - 12 = 310
|
||||
; - 3 for jmp
|
||||
; 307
|
||||
|
||||
; Try X=9 Y=6 cycles=307
|
||||
|
||||
ldy #6 ; 2
|
||||
loopQ: ldx #9 ; 2
|
||||
loopR: dex ; 2
|
||||
bne loopR ; 2nt/3
|
||||
dey ; 2
|
||||
bne loopQ ; 2nt/3
|
||||
|
||||
jmp book_loop ; 3
|
||||
.align $100
|
||||
|
||||
|
||||
;================================================
|
||||
; Display Loop
|
||||
;================================================
|
||||
; each scan line 65 cycles
|
||||
; 1 cycle each byte (40cycles) + 25 for horizontal
|
||||
; Total of 12480 cycles to draw screen
|
||||
; Vertical blank = 4550 cycles (70 scan lines)
|
||||
; Total of 17030 cycles to get back to where was
|
||||
|
||||
; We want to alternate between page1 and page2 every 65 cycles
|
||||
; vblank = 4550 cycles to do scrolling
|
||||
|
||||
|
||||
; 2 + 48*( (4+2+25*(2+3)) + (4+2+23*(2+3)+4+5)) + 9)
|
||||
; 48*[(6+125)-1] + [(6+115+10)-1]
|
||||
|
||||
book_loop:
|
||||
|
||||
ldy #96 ; 2
|
||||
|
||||
book_outer_loop:
|
||||
|
||||
bit PAGE0 ; 4
|
||||
ldx #12 ; 65 cycles with PAGE0 ; 2
|
||||
book_page0_loop: ; delay 61+bit
|
||||
dex ; 2
|
||||
bne book_page0_loop ; 2/3
|
||||
|
||||
|
||||
; bit(4) -1(fallthrough) + loop*5 -1(fallthrouh)+4 extra = 61
|
||||
; 5L = 55
|
||||
|
||||
bit PAGE1 ; 4
|
||||
ldx #11 ; 65 cycles with PAGE1 ; 2
|
||||
;
|
||||
book_page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra)
|
||||
dex ; 2
|
||||
bne book_page1_loop ; 2/3
|
||||
|
||||
dey ; 2
|
||||
bne book_outer_loop ; 2/3
|
||||
|
||||
|
||||
|
||||
;======================================================
|
||||
; We have 4550 cycles in the vblank, use them wisely
|
||||
;======================================================
|
||||
; do_nothing should be 4550+1 -2-9 -7= 4533
|
||||
|
||||
jsr book_do_nothing ; 6
|
||||
|
||||
lda KEYPRESS ; 4
|
||||
bpl book_no_keypress ; 3
|
||||
rts
|
||||
book_no_keypress:
|
||||
|
||||
jmp book_loop ; 3
|
||||
|
||||
|
||||
|
||||
;=================================
|
||||
; do nothing
|
||||
;=================================
|
||||
; and take 4533-6 = 4527 cycles to do it
|
||||
book_do_nothing:
|
||||
|
||||
; Try X=4 Y=174 cycles=4525 R2
|
||||
|
||||
nop ; 2
|
||||
|
||||
ldy #174 ; 2
|
||||
bloop1:
|
||||
ldx #4 ; 2
|
||||
bloop2:
|
||||
dex ; 2
|
||||
bne bloop2 ; 2nt/3
|
||||
|
||||
dey ; 2
|
||||
bne bloop1 ; 2nt/3
|
||||
|
||||
|
||||
rts ; 6
|
||||
|
||||
|
||||
pictures:
|
||||
.word book_low,book_high
|
||||
|
||||
|
||||
.include "book_40_48d.inc"
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
After Width: | Height: | Size: 89 KiB |
|
@ -57,9 +57,15 @@ ending:
|
|||
|
||||
; start music
|
||||
|
||||
cli ; enable interrupts
|
||||
; cli ; enable interrupts
|
||||
|
||||
jsr starbase
|
||||
; jsr starbase
|
||||
|
||||
;===========================
|
||||
; book scene
|
||||
;===========================
|
||||
|
||||
jsr book
|
||||
|
||||
|
||||
; wait wait wait
|
||||
|
@ -97,6 +103,9 @@ wait_until_keypressed:
|
|||
; Starbase
|
||||
.include "starbase.s"
|
||||
|
||||
; book
|
||||
.include "book.s"
|
||||
|
||||
; Music player
|
||||
.include "pt3_lib_core.s"
|
||||
.include "pt3_lib_init.s"
|
||||
|
|
|
@ -11,7 +11,7 @@ all: gr_view
|
|||
###
|
||||
|
||||
gr_view: gr_view.o $(GR_SIM)
|
||||
$(CC) $(LFLAGS) $(SDL_LIBS) -o gr_view gr_view.o $(GR_SIM)
|
||||
$(CC) -o gr_view gr_view.o $(GR_SIM) $(LFLAGS) $(SDL_LIBS)
|
||||
|
||||
gr_view.o: gr_view.c
|
||||
$(CC) $(CFLAGS) -c gr_view.c
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
10 PRINT "INTERLACE V0.3"
|
||||
100 PRINT CHR$ (4)"BRUN RASTERBARS_SOUND"
|
||||
100 PRINT "BRUN RASTERBARS_SOUND"
|
||||
|
|
Loading…
Reference in New Issue