mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-28 02:55:03 +00:00
second: work on animation
This commit is contained in:
parent
8c4fd13ca3
commit
ae595b8117
@ -13,14 +13,16 @@ all: second.dsk
|
||||
# $(DOS33) -y second.dsk SAVE A HELLO
|
||||
# $(DOS33) -y second.dsk BSAVE -a 0x6000 ZW
|
||||
|
||||
second.dsk: QBOOT QLOAD SECOND MUSIC
|
||||
second.dsk: QBOOT QLOAD SECOND MUSIC \
|
||||
./part18_3d/THREED
|
||||
cp $(EMPTY_DISK) second.dsk
|
||||
$(DOS33_RAW) second.dsk 0 0 QBOOT 0 1
|
||||
$(DOS33_RAW) second.dsk 0 2 QBOOT 1 1
|
||||
$(DOS33_RAW) second.dsk 0 4 QBOOT 2 1
|
||||
$(DOS33_RAW) second.dsk 1 0 QLOAD 0 0
|
||||
$(DOS33_RAW) second.dsk 3 0 MUSIC 0 0
|
||||
$(DOS33_RAW) second.dsk 5 0 SECOND 0 0
|
||||
# $(DOS33_RAW) second.dsk 5 0 SECOND 0 0
|
||||
$(DOS33_RAW) second.dsk 5 0 ./part18_3d/THREED 0 0
|
||||
|
||||
####
|
||||
|
||||
|
39
demos/second/part18_3d/3d.inc
Normal file
39
demos/second/part18_3d/3d.inc
Normal file
@ -0,0 +1,39 @@
|
||||
;
|
||||
;
|
||||
; optional color, x1,y1 x2,y2
|
||||
;
|
||||
; HLIN x1,x2 at y1
|
||||
; VLIN y1,y2 at X1
|
||||
; PLOT x1,y1
|
||||
; BOX x1,y1 to x2,y2
|
||||
; CLEAR -
|
||||
|
||||
num_scenes=2
|
||||
|
||||
frame15:
|
||||
.byte SET_COLOR | BLACK
|
||||
.byte CLEAR
|
||||
.byte SET_COLOR | WHITE
|
||||
.byte BOX, 4, 6, 35,41
|
||||
.byte END
|
||||
frame16:
|
||||
.byte SET_COLOR | BLACK
|
||||
.byte CLEAR
|
||||
.byte SET_COLOR | WHITE
|
||||
.byte BOX, 4, 6, 27,41
|
||||
.byte SET_COLOR | BROWN
|
||||
.byte BOX, 28, 6, 35,34
|
||||
.byte SET_COLOR | GREY1
|
||||
.byte BOX, 28, 19, 33, 21
|
||||
.byte BOX, 28, 35, 35, 38
|
||||
.byte HLIN, 28, 31, 18
|
||||
.byte HLIN, 28, 30, 34
|
||||
.byte HLIN, 33, 35, 39
|
||||
.byte SET_COLOR | RED
|
||||
.byte HLIN, 28, 32, 21
|
||||
.byte SET_COLOR | LIGHT_BLUE
|
||||
.byte HLIN, 28, 33, 22
|
||||
.byte HLIN, 28, 30, 23
|
||||
.byte END
|
||||
|
||||
|
22
demos/second/part18_3d/Makefile
Normal file
22
demos/second/part18_3d/Makefile
Normal file
@ -0,0 +1,22 @@
|
||||
include ../../../Makefile.inc
|
||||
|
||||
DOS33 = ../../../utils/dos33fs-utils/dos33
|
||||
DOS33_RAW = ../../../utils/dos33fs-utils/dos33_raw
|
||||
EMPTY_DISK = ../../../empty_disk/empty.dsk
|
||||
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
|
||||
LINKER_SCRIPTS = ../../../linker_scripts/
|
||||
|
||||
all: THREED
|
||||
|
||||
####
|
||||
|
||||
THREED: threed.o
|
||||
ld65 -o THREED threed.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
|
||||
|
||||
threed.o: threed.s draw_boxes.s 3d.inc
|
||||
ca65 -o threed.o threed.s -l threed.lst
|
||||
|
||||
####
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o *.lst HELLO THREED
|
199
demos/second/part18_3d/draw_boxes.s
Normal file
199
demos/second/part18_3d/draw_boxes.s
Normal file
@ -0,0 +1,199 @@
|
||||
;
|
||||
;
|
||||
; optional color, x1,y1 x2,y2
|
||||
;
|
||||
; HLIN x1,x2 at y1
|
||||
; VLIN y1,y2 at X1
|
||||
; PLOT x1,y1
|
||||
; BOX x1,y1 to x2,y2
|
||||
; CLEAR -
|
||||
|
||||
; data in INL/INH
|
||||
|
||||
SET_COLOR = $80
|
||||
END = $00
|
||||
CLEAR = $01
|
||||
BOX = $02
|
||||
HLIN = $03
|
||||
VLIN = $04
|
||||
|
||||
BLACK = $00
|
||||
RED = $01
|
||||
DARK_BLUE = $02
|
||||
MAGENTA = $03
|
||||
GREEN = $04
|
||||
GREY1 = $05
|
||||
MEDIUM_BLUE = $06
|
||||
LIGHT_BLUE = $07
|
||||
BROWN = $08
|
||||
ORANGE = $09
|
||||
GREY2 = $0A
|
||||
PINK = $0B
|
||||
LIGHT_GREEN = $0C
|
||||
YELLOW = $0D
|
||||
AQUA = $0E
|
||||
WHITE = $0f
|
||||
|
||||
|
||||
|
||||
draw_scene:
|
||||
|
||||
ldy #0
|
||||
|
||||
lda (INL),Y
|
||||
bmi set_color
|
||||
beq done_scene
|
||||
|
||||
; use jump table for rest
|
||||
and #$7f
|
||||
tax
|
||||
dex ; types start at 1
|
||||
lda draw_table_h,X
|
||||
pha
|
||||
lda draw_table_l,X
|
||||
pha
|
||||
rts ; jump to it
|
||||
|
||||
done_scene:
|
||||
inc INL
|
||||
bne really_done_scene
|
||||
inc INH
|
||||
really_done_scene:
|
||||
rts
|
||||
|
||||
set_color:
|
||||
; make top and bottom byte the same
|
||||
|
||||
and #$f
|
||||
sta COLOR
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
adc COLOR
|
||||
sta COLOR
|
||||
|
||||
lda #1 ; we were one byte long
|
||||
bne update_pointer
|
||||
|
||||
|
||||
; adds A to input pointer and continues
|
||||
update_pointer:
|
||||
clc
|
||||
adc INL
|
||||
sta INL
|
||||
lda #0
|
||||
adc INH
|
||||
sta INH
|
||||
jmp draw_scene
|
||||
|
||||
|
||||
|
||||
draw_table_l:
|
||||
.byte <(clear_screen-1),<(draw_box-1),<(draw_hlin-1),<(draw_vlin-1)
|
||||
draw_table_h:
|
||||
.byte >(clear_screen-1),>(draw_box-1),>(draw_hlin-1),>(draw_vlin-1)
|
||||
|
||||
|
||||
;=================================
|
||||
;=================================
|
||||
; clear screen
|
||||
;=================================
|
||||
;=================================
|
||||
clear_screen:
|
||||
jsr clear_fullgr
|
||||
lda #1
|
||||
jmp update_pointer
|
||||
|
||||
;=================================
|
||||
;=================================
|
||||
; draw box
|
||||
;=================================
|
||||
;=================================
|
||||
draw_box:
|
||||
iny
|
||||
lda (INL),Y
|
||||
sta X1
|
||||
iny
|
||||
lda (INL),Y
|
||||
sta Y1
|
||||
iny
|
||||
lda (INL),Y
|
||||
sta X2
|
||||
iny
|
||||
lda (INL),Y
|
||||
sta Y2
|
||||
|
||||
lda Y2
|
||||
lsr
|
||||
sta draw_box_yend_smc+1
|
||||
|
||||
lda Y1
|
||||
lsr
|
||||
tay
|
||||
|
||||
draw_box_yloop:
|
||||
lda gr_offsets_l,Y
|
||||
sta draw_box_xloop_smc+1
|
||||
|
||||
lda gr_offsets_h,Y
|
||||
clc
|
||||
adc DRAW_PAGE
|
||||
sta draw_box_xloop_smc+2
|
||||
|
||||
lda COLOR
|
||||
ldx X2
|
||||
draw_box_xloop:
|
||||
draw_box_xloop_smc:
|
||||
sta $400,X
|
||||
dex
|
||||
cpx X1
|
||||
bcs draw_box_xloop ; bge
|
||||
|
||||
iny
|
||||
draw_box_yend_smc:
|
||||
cpy #0
|
||||
bne draw_box_yloop
|
||||
|
||||
; done
|
||||
|
||||
lda #5
|
||||
jmp update_pointer
|
||||
|
||||
|
||||
;=================================
|
||||
;=================================
|
||||
; draw hlin
|
||||
;=================================
|
||||
;=================================
|
||||
draw_hlin:
|
||||
; done
|
||||
|
||||
lda #4
|
||||
jmp update_pointer
|
||||
|
||||
;=================================
|
||||
;=================================
|
||||
; draw vlin
|
||||
;=================================
|
||||
;=================================
|
||||
draw_vlin:
|
||||
; done
|
||||
|
||||
lda #4
|
||||
jmp update_pointer
|
||||
|
||||
|
||||
|
||||
.include "gr_fast_clear.s"
|
||||
|
||||
gr_offsets_l:
|
||||
.byte <$400,<$480,<$500,<$580,<$600,<$680,<$700,<$780
|
||||
.byte <$428,<$4a8,<$528,<$5a8,<$628,<$6a8,<$728,<$7a8
|
||||
.byte <$450,<$4d0,<$550,<$5d0,<$650,<$6d0,<$750,<$7d0
|
||||
|
||||
gr_offsets_h:
|
||||
.byte >$400,>$480,>$500,>$580,>$600,>$680,>$700,>$780
|
||||
.byte >$428,>$4a8,>$528,>$5a8,>$628,>$6a8,>$728,>$7a8
|
||||
.byte >$450,>$4d0,>$550,>$5d0,>$650,>$6d0,>$750,>$7d0
|
||||
|
42
demos/second/part18_3d/gr_fast_clear.s
Normal file
42
demos/second/part18_3d/gr_fast_clear.s
Normal file
@ -0,0 +1,42 @@
|
||||
;=========================================================
|
||||
; clear_all
|
||||
;=========================================================
|
||||
; clear 48 rows
|
||||
|
||||
clear_fullgr:
|
||||
clc ; 2
|
||||
lda DRAW_PAGE ; 3
|
||||
|
||||
adc #4 ; 2
|
||||
sta __caf+2 ; 3
|
||||
sta __caf+5 ; 3
|
||||
adc #1 ; 2
|
||||
sta __caf+8 ; 3
|
||||
sta __caf+11 ; 3
|
||||
adc #1 ; 2
|
||||
sta __caf2+2 ; 3
|
||||
sta __caf2+5 ; 3
|
||||
adc #1 ; 2
|
||||
sta __caf2+8 ; 3
|
||||
sta __caf2+11 ; 3
|
||||
|
||||
|
||||
ldy #120 ; 2
|
||||
clear_all_color:
|
||||
lda COLOR ; 2
|
||||
clear_all_fast_loop:
|
||||
__caf:
|
||||
sta $400,Y ; 5
|
||||
sta $480,Y ; 5
|
||||
sta $500,Y ; 5
|
||||
sta $580,Y ; 5
|
||||
__caf2:
|
||||
sta $600,Y ; 5
|
||||
sta $680,Y ; 5
|
||||
sta $700,Y ; 5
|
||||
sta $780,Y ; 5
|
||||
|
||||
dey ; 2
|
||||
bpl clear_all_fast_loop ; 2nt/3
|
||||
|
||||
rts ; 6
|
64
demos/second/part18_3d/threed.s
Normal file
64
demos/second/part18_3d/threed.s
Normal file
@ -0,0 +1,64 @@
|
||||
; Not actually 3D at all
|
||||
; is really a lo-res shape plotter that can play movie-like things
|
||||
|
||||
; o/~ We went to Threed to see the Queen o/~
|
||||
|
||||
;
|
||||
; by deater (Vince Weaver) <vince@deater.net>
|
||||
|
||||
.include "../zp.inc"
|
||||
.include "../hardware.inc"
|
||||
.include "../qload.inc"
|
||||
;.include "music.inc"
|
||||
|
||||
threed_start:
|
||||
|
||||
;=======================
|
||||
; wait for keypress
|
||||
;=======================
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
; lda #25
|
||||
; jsr wait_a_bit
|
||||
|
||||
|
||||
|
||||
;===================
|
||||
; Load graphics
|
||||
;===================
|
||||
load_loop:
|
||||
bit SET_GR
|
||||
bit LORES
|
||||
bit FULLGR
|
||||
bit PAGE0
|
||||
|
||||
lda #0
|
||||
sta DRAW_PAGE
|
||||
|
||||
|
||||
forever:
|
||||
|
||||
lda #num_scenes
|
||||
sta SCENE_COUNT
|
||||
|
||||
lda #<frame15
|
||||
sta INL
|
||||
lda #>frame15
|
||||
sta INH
|
||||
|
||||
scene_loop:
|
||||
jsr draw_scene
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
dec SCENE_COUNT
|
||||
bne scene_loop
|
||||
|
||||
jmp forever
|
||||
|
||||
.include "../wait_keypress.s"
|
||||
|
||||
.include "draw_boxes.s"
|
||||
.include "3d.inc"
|
||||
|
@ -160,19 +160,19 @@ error_string:
|
||||
.endif
|
||||
|
||||
which_disk_array:
|
||||
.byte 1,1,1,1 ; ZW, MUSIC, ?, ?
|
||||
.byte 1,1,1,1 ; SECOND, MUSIC, ?, ?
|
||||
|
||||
load_address_array:
|
||||
.byte $60,$D0,$90,$90 ; ZW, MUSIC, ?, ?
|
||||
.byte $60,$D0,$90,$90 ; SECOND, MUSIC, ?, ?
|
||||
|
||||
track_array:
|
||||
.byte 5, 3, 9,12 ; ZW, MUSIC, ?, ?
|
||||
.byte 5, 3, 9,12 ; SECOND, MUSIC, ?, ?
|
||||
|
||||
sector_array:
|
||||
.byte 0, 0, 0, 0 ; ZW, MUSIC, ?, ?
|
||||
.byte 0, 0, 0, 0 ; SECOND, MUSIC, ?, ?
|
||||
|
||||
length_array:
|
||||
.byte 84, 32, 48, 48 ; ZW, MUSIC, ?, ?
|
||||
.byte 84, 32, 48, 48 ; SECOND, MUSIC, ?, ?
|
||||
|
||||
.include "lc_detect.s"
|
||||
.include "wait.s"
|
||||
|
@ -148,6 +148,13 @@ HGR_COLOR = $E4
|
||||
;NAMEH = $EA
|
||||
;NAMEX = $EB
|
||||
;CHAR = $EC
|
||||
|
||||
X1 = $E8
|
||||
X2 = $E9
|
||||
Y1 = $EA
|
||||
Y2 = $EB
|
||||
SCENE_COUNT = $EC
|
||||
|
||||
STATE = $ED
|
||||
OFFSET = $EF
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user