mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-20 17:29:28 +00:00
Merge branch 'master' of github.com:deater/dos33fsprogs
This commit is contained in:
commit
d67d8391c3
|
@ -123,7 +123,7 @@ music.o: music.s zp.inc \
|
||||||
XMAS: xmas.o
|
XMAS: xmas.o
|
||||||
ld65 -o XMAS xmas.o -C $(LINKER_SCRIPTS)/apple2_8000.inc
|
ld65 -o XMAS xmas.o -C $(LINKER_SCRIPTS)/apple2_8000.inc
|
||||||
|
|
||||||
xmas.o: xmas.s \
|
xmas.o: xmas.s plasma_tree.s fireplace.s \
|
||||||
zp.inc hardware.inc qload.inc \
|
zp.inc hardware.inc qload.inc \
|
||||||
graphics/tree01.gr.zx02
|
graphics/tree01.gr.zx02
|
||||||
ca65 -o xmas.o xmas.s -l xmas.lst
|
ca65 -o xmas.o xmas.s -l xmas.lst
|
||||||
|
|
706
demos/xmas_2023/fireplace.s
Normal file
706
demos/xmas_2023/fireplace.s
Normal file
|
@ -0,0 +1,706 @@
|
||||||
|
fireplace:
|
||||||
|
|
||||||
|
lda #<fireplace_data
|
||||||
|
sta INL
|
||||||
|
lda #>fireplace_data
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jsr draw_scene
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
fireplace_data:
|
||||||
|
|
||||||
|
.byte SET_COLOR | YELLOW
|
||||||
|
.byte BOX, 0,39,0,29 ; wall
|
||||||
|
.byte SET_COLOR | BROWN
|
||||||
|
.byte BOX,0,39,30,39 ; monitor back
|
||||||
|
.byte BOX,1,9,0,20 ; window
|
||||||
|
.byte SET_COLOR | BLACK
|
||||||
|
.byte BOX,2,8,0,9 ; upper
|
||||||
|
.byte SET_COLOR | WHITE
|
||||||
|
.byte BOX,2,8,12,18 ; bottom snow
|
||||||
|
.byte SET_COLOR | RED
|
||||||
|
.byte 27,39,12,30 ; fireplace
|
||||||
|
.byte SET_COLOR | BLACK
|
||||||
|
.byte 30,39,17,30 ; hearth
|
||||||
|
.byte SET_COLOR | BROWN
|
||||||
|
.byte 32,38,27,29 ; wood
|
||||||
|
.byte SET_COLOR | WHITE
|
||||||
|
.byte 26,39,10,11 ; mantle
|
||||||
|
.byte SET_COLOR | GREEN
|
||||||
|
.byte 15,17,0,39 ; tree center
|
||||||
|
.byte 13,19,5,39 ; tree middle
|
||||||
|
.byte 12,20,15,39 ; tree wider
|
||||||
|
.byte 10,22,23,39 ; tree wide
|
||||||
|
.byte SET_COLOR | LIGHT_BLUE
|
||||||
|
.byte 13,16,11,12 ; garland top
|
||||||
|
.byte 17,19,13,14 ; garland top
|
||||||
|
.byte 12,15,23,24 ; garland middle
|
||||||
|
.byte 16,19,25,26 ; garland middle
|
||||||
|
.byte 20,22,27,28 ; garland middle
|
||||||
|
.byte 10,14,36,37 ; garland bottom
|
||||||
|
.byte 15,18,38,39 ; garland bottom
|
||||||
|
.byte SET_COLOR | WHITE
|
||||||
|
.byte 14,15,7,9 ; ball1
|
||||||
|
.byte 18,19,17,19 ; ball2
|
||||||
|
.byte 11,12,31,33 ; ball3
|
||||||
|
.byte 20,21,34,36 ; ball4
|
||||||
|
.byte SET_COLOR | YELLOW
|
||||||
|
.byte 34,36,22,26 ; fire
|
||||||
|
.byte SET_COLOR | ORANGE
|
||||||
|
.byte 35,35,24,26 ; fire
|
||||||
|
.byte SET_COLOR | BLACK
|
||||||
|
.byte 34,35,22,22 ; flicker
|
||||||
|
.byte SET_COLOR | YELLOW
|
||||||
|
.byte BOX,34,35,22,22 ; flicker
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; draw box scene
|
||||||
|
;==========================
|
||||||
|
; data in INL/INH
|
||||||
|
|
||||||
|
SET_COLOR = $C0 ; special case, color 0..15 in bottom nybble
|
||||||
|
|
||||||
|
END = $80 ; 0 :
|
||||||
|
CLEAR = $81 ; 0 : clear screen to black (0)
|
||||||
|
BOX = $82 ; 4 : x1,y1 to x2,y2
|
||||||
|
HLIN = $83 ; 3 : x1,x2 at y1
|
||||||
|
VLIN = $84 ; 3 : at x1 from y1 to y2
|
||||||
|
PLOT = $85 ; 2 : x1,y1
|
||||||
|
HLIN_ADD= $86 ; 2 : x1,x2 at prev_y1+1
|
||||||
|
HLIN_ADD_LSAME= $87 ; 1 : prev_x1,x2 at prev_y1+1
|
||||||
|
HLIN_ADD_RSAME= $88 ; 1 : x1,prev_x2 at prev_y1+1
|
||||||
|
BOX_ADD= $89 ; 3 : x1,prev_y1+1, x2, y2
|
||||||
|
BOX_ADD_LSAME= $8A ; 2 : prev_x1,prev_y1+1, x2, y2
|
||||||
|
BOX_ADD_RSAME= $8B ; 2 : x1,prev_y1+1, prev_x2, y2
|
||||||
|
VLIN_ADD= $8C ; 2 : at prev_x1+1 from y1 to y2
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
; top bit not set, command
|
||||||
|
; top bit set, repeat last command
|
||||||
|
|
||||||
|
|
||||||
|
; ??xx xxxx
|
||||||
|
|
||||||
|
; 00 = co-ord
|
||||||
|
; 10 = new command
|
||||||
|
; 11 = new-color
|
||||||
|
|
||||||
|
|
||||||
|
draw_scene:
|
||||||
|
|
||||||
|
lda #0 ; always clear to black
|
||||||
|
; sta COLOR
|
||||||
|
sta clear_all_color+1
|
||||||
|
jsr clear_all
|
||||||
|
|
||||||
|
draw_scene_loop:
|
||||||
|
ldy #0
|
||||||
|
lda (INL),Y ; load next byte
|
||||||
|
|
||||||
|
bpl repeat_last ; if top bit 0, repeat last
|
||||||
|
; command
|
||||||
|
|
||||||
|
asl ; clear top bit
|
||||||
|
bmi set_color ; if negative, color
|
||||||
|
lsr ; shift back down
|
||||||
|
|
||||||
|
sta LAST_TYPE ; store last type
|
||||||
|
|
||||||
|
jsr inc_inl ; 16 bit increment
|
||||||
|
|
||||||
|
repeat_last:
|
||||||
|
lda LAST_TYPE
|
||||||
|
|
||||||
|
beq done_scene ; if 0, END
|
||||||
|
|
||||||
|
|
||||||
|
; use jump table for rest
|
||||||
|
and #$3f
|
||||||
|
tax
|
||||||
|
dex ; types start at 1
|
||||||
|
lda draw_table_h,X
|
||||||
|
sta table_jsr_smc+2
|
||||||
|
; pha
|
||||||
|
lda draw_table_l,X
|
||||||
|
; pha
|
||||||
|
sta table_jsr_smc+1
|
||||||
|
|
||||||
|
table_jsr_smc:
|
||||||
|
jsr $FFFF
|
||||||
|
|
||||||
|
;========================================
|
||||||
|
; adds A to input pointer and continues
|
||||||
|
update_pointer:
|
||||||
|
ldx LAST_TYPE
|
||||||
|
lda bytes_used,X
|
||||||
|
|
||||||
|
update_pointer_already_in_a:
|
||||||
|
clc
|
||||||
|
adc INL
|
||||||
|
sta INL
|
||||||
|
lda #0
|
||||||
|
adc INH
|
||||||
|
sta INH
|
||||||
|
bcc draw_scene_loop ; bra (would only be set if wrap $FFFF)
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; done scene
|
||||||
|
;============================
|
||||||
|
; return
|
||||||
|
done_scene:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; set color
|
||||||
|
;============================
|
||||||
|
; color is A*2h
|
||||||
|
|
||||||
|
set_color:
|
||||||
|
; make top and bottom byte the same
|
||||||
|
|
||||||
|
lsr ; shift back down
|
||||||
|
and #$f
|
||||||
|
sta COLOR
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
adc COLOR
|
||||||
|
sta COLOR
|
||||||
|
|
||||||
|
; special case as we are encoded differently from
|
||||||
|
; the actions
|
||||||
|
|
||||||
|
lda #1 ; we were one byte long
|
||||||
|
bne update_pointer_already_in_a ; bra
|
||||||
|
|
||||||
|
bytes_used:
|
||||||
|
.byte 0,0,4,3 ; END, CLEAR, BOX, HLIN
|
||||||
|
.byte 3,2,2,1 ; VLIN, PLOT, HLIN_ADD, HLIN_ADD_LSAME
|
||||||
|
.byte 1,3,2,2 ; HLIN_ADD_RSAME, BOX_ADD, BOX_ADD_LSAME
|
||||||
|
.byte 2,2 ; BOX_ADD_RSAME, VLIN_ADD
|
||||||
|
|
||||||
|
draw_table_l:
|
||||||
|
.byte <(clear_screen),<(draw_box),<(draw_hlin),<(draw_vlin)
|
||||||
|
.byte <(draw_plot)
|
||||||
|
.byte <(draw_hlin_add),<(draw_hlin_add_lsame),<(draw_hlin_add_rsame)
|
||||||
|
.byte <(draw_box_add),<(draw_box_add_lsame),<(draw_box_add_rsame)
|
||||||
|
.byte <(draw_vlin_add)
|
||||||
|
draw_table_h:
|
||||||
|
.byte >(clear_screen),>(draw_box),>(draw_hlin),>(draw_vlin)
|
||||||
|
.byte >(draw_plot)
|
||||||
|
.byte >(draw_hlin_add),>(draw_hlin_add_lsame),>(draw_hlin_add_rsame)
|
||||||
|
.byte >(draw_box_add),>(draw_box_add_lsame),>(draw_box_add_rsame)
|
||||||
|
.byte >(draw_vlin_add)
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; clear screen
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
clear_screen:
|
||||||
|
lda COLOR
|
||||||
|
sta clear_all_color+1
|
||||||
|
jmp clear_all ; tail call
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw box
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
|
||||||
|
; blurgh. Cases
|
||||||
|
; Y1=EVEN, Y2=ODD -> loop Y1/2 to Y2/2, inclusive
|
||||||
|
; Y1=ODD, Y2=ODD -> HLIN, loop (Y1/2)+1 to Y2/2 inclusive
|
||||||
|
; Y1=EVEN, Y2=EVEN-> loop Y1/2 to (Y2/2)-1, HLIN
|
||||||
|
; Y1=ODD, Y2=EVEN -> HLIN, loop (Y1/2)+1 to (Y2/2)-1, HLIN
|
||||||
|
; 2/3 case, 1 to 1
|
||||||
|
; 3/5 case, (>1) 2 to 2
|
||||||
|
; 2/4 case, 1 to 1 (<2)
|
||||||
|
; 3/4 case, 2 to 1 (!)
|
||||||
|
; 3/6 case, 2 to 2
|
||||||
|
draw_box:
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y1
|
||||||
|
iny
|
||||||
|
|
||||||
|
draw_box_common_x2:
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X2
|
||||||
|
|
||||||
|
;==================================
|
||||||
|
; draw box common
|
||||||
|
;==================================
|
||||||
|
|
||||||
|
draw_box_common:
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y2 ; keep even though not necessary
|
||||||
|
|
||||||
|
lsr
|
||||||
|
; if even, go to one less
|
||||||
|
; else, fine
|
||||||
|
bcs odd_bottom_draw_box
|
||||||
|
even_bottom_draw_box:
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
|
||||||
|
odd_bottom_draw_box:
|
||||||
|
|
||||||
|
sta draw_box_yend_smc+1
|
||||||
|
|
||||||
|
; see if we start at multiple of two
|
||||||
|
|
||||||
|
lda Y1
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
bcc even_draw_box_start
|
||||||
|
|
||||||
|
; we're odd, need to call HLIN
|
||||||
|
|
||||||
|
jsr hlin_mask_odd
|
||||||
|
iny
|
||||||
|
|
||||||
|
|
||||||
|
even_draw_box_start:
|
||||||
|
|
||||||
|
draw_box_yloop:
|
||||||
|
|
||||||
|
draw_box_yend_smc:
|
||||||
|
cpy #0
|
||||||
|
bcc bbbb
|
||||||
|
beq bbbb
|
||||||
|
jmp done_draw_box_yloop ; bge
|
||||||
|
|
||||||
|
bbbb:
|
||||||
|
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
|
||||||
|
|
||||||
|
jmp draw_box_yloop
|
||||||
|
|
||||||
|
done_draw_box_yloop:
|
||||||
|
; done
|
||||||
|
|
||||||
|
; if Y2 was even we need to fixup and draw one more line
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
lsr
|
||||||
|
bcs definitely_odd_bottom
|
||||||
|
|
||||||
|
jsr hlin_mask_even
|
||||||
|
|
||||||
|
definitely_odd_bottom:
|
||||||
|
; done
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw hlin
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
draw_hlin:
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta X2
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
|
||||||
|
sta Y1 ; needed for HLIN_ADD
|
||||||
|
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; hlin common code
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; X1, X2 set up
|
||||||
|
; Y-coord is in A
|
||||||
|
; Y is A/2
|
||||||
|
|
||||||
|
hlin_common:
|
||||||
|
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
bcc hlin_mask_even
|
||||||
|
|
||||||
|
hlin_mask_odd:
|
||||||
|
lda #$0F
|
||||||
|
.byte $2C ; bit trick
|
||||||
|
hlin_mask_even:
|
||||||
|
lda #$F0
|
||||||
|
sta MASK
|
||||||
|
eor #$FF
|
||||||
|
and COLOR
|
||||||
|
sta COLOR2
|
||||||
|
|
||||||
|
lda gr_offsets_l,Y
|
||||||
|
sta draw_hlin_l_xloop_smc+1
|
||||||
|
sta draw_hlin_s_xloop_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets_h,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta draw_hlin_l_xloop_smc+2
|
||||||
|
sta draw_hlin_s_xloop_smc+2
|
||||||
|
|
||||||
|
ldx X2
|
||||||
|
draw_hlin_xloop:
|
||||||
|
draw_hlin_l_xloop_smc:
|
||||||
|
lda $400,X
|
||||||
|
and MASK
|
||||||
|
ora COLOR2
|
||||||
|
draw_hlin_s_xloop_smc:
|
||||||
|
sta $400,X
|
||||||
|
dex
|
||||||
|
cpx X1
|
||||||
|
bpl draw_hlin_xloop ; bge
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw hlin add
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y1
|
||||||
|
draw_hlin_add:
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
iny
|
||||||
|
|
||||||
|
draw_hlin_add_lsame:
|
||||||
|
lda (INL),Y
|
||||||
|
sta X2
|
||||||
|
|
||||||
|
hlin_inc_y1:
|
||||||
|
inc Y1
|
||||||
|
lda Y1
|
||||||
|
|
||||||
|
jmp hlin_common
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw hlin add_lsame
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y1
|
||||||
|
; use old left value
|
||||||
|
;draw_hlin_add_lsame:
|
||||||
|
|
||||||
|
; lda (INL),Y
|
||||||
|
; sta X2
|
||||||
|
|
||||||
|
; jmp hlin_inc_y1
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw hlin add_rsame
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y1
|
||||||
|
; use old right value
|
||||||
|
draw_hlin_add_rsame:
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
|
||||||
|
jmp hlin_inc_y1
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw box add
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y2, put into Y1
|
||||||
|
draw_box_add:
|
||||||
|
lda Y2
|
||||||
|
sta Y1
|
||||||
|
inc Y1
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
iny
|
||||||
|
|
||||||
|
jmp draw_box_common_x2
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw box add_lsame
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y2, store in Y1
|
||||||
|
; use old X1 value
|
||||||
|
draw_box_add_lsame:
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
sta Y1
|
||||||
|
inc Y1
|
||||||
|
|
||||||
|
jmp draw_box_common_x2
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw box add_rsame
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; increment Y2, put in Y1
|
||||||
|
; use old right value X2
|
||||||
|
draw_box_add_rsame:
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
sta Y1
|
||||||
|
inc Y1
|
||||||
|
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
|
||||||
|
jmp draw_box_common
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw vlin add
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
draw_vlin_add:
|
||||||
|
inc X1 ; X1 is prev_X1+1
|
||||||
|
|
||||||
|
bne draw_vlin_skip_x1 ; bra
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw vlin
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
draw_vlin:
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
iny
|
||||||
|
draw_vlin_skip_x1:
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y1
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y2
|
||||||
|
|
||||||
|
;================================
|
||||||
|
draw_vlin_common:
|
||||||
|
lda Y2
|
||||||
|
lsr
|
||||||
|
; if even, go to one less
|
||||||
|
; else, fine
|
||||||
|
bcs odd_bottom_vlin
|
||||||
|
even_bottom_vlin:
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
|
||||||
|
odd_bottom_vlin:
|
||||||
|
|
||||||
|
sta vlin_yend_smc+1
|
||||||
|
|
||||||
|
; handle top
|
||||||
|
; see if we start at multiple of two
|
||||||
|
|
||||||
|
lda Y1
|
||||||
|
lsr
|
||||||
|
tay ; needed! Sets Y for vlin_yloop
|
||||||
|
bcc even_vlin_start
|
||||||
|
|
||||||
|
odd_vlin_start:
|
||||||
|
; we're odd, need to call PLOT
|
||||||
|
lda Y1
|
||||||
|
jsr plot_common
|
||||||
|
|
||||||
|
iny ; update Y for vlin_yloop
|
||||||
|
|
||||||
|
|
||||||
|
even_vlin_start:
|
||||||
|
|
||||||
|
vlin_yloop:
|
||||||
|
vlin_yend_smc:
|
||||||
|
cpy #0
|
||||||
|
bcc cccc
|
||||||
|
beq cccc
|
||||||
|
jmp done_vlin_yloop ;
|
||||||
|
|
||||||
|
cccc:
|
||||||
|
|
||||||
|
lda gr_offsets_l,Y
|
||||||
|
sta vlin_xloop_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets_h,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta vlin_xloop_smc+2
|
||||||
|
|
||||||
|
lda COLOR
|
||||||
|
ldx X1
|
||||||
|
|
||||||
|
vlin_xloop_smc:
|
||||||
|
sta $400,X
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
jmp vlin_yloop
|
||||||
|
|
||||||
|
; done
|
||||||
|
done_vlin_yloop:
|
||||||
|
|
||||||
|
; if Y2 was even we need to fixup and draw one more line
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
lsr
|
||||||
|
bcs definitely_odd_vlin
|
||||||
|
|
||||||
|
lda Y2
|
||||||
|
jmp plot_common ; plot_mask_even (tail call)
|
||||||
|
|
||||||
|
definitely_odd_vlin:
|
||||||
|
; done
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
; draw plot
|
||||||
|
;=================================
|
||||||
|
;=================================
|
||||||
|
draw_plot:
|
||||||
|
lda (INL),Y
|
||||||
|
sta X1
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (INL),Y
|
||||||
|
sta Y1 ; needed for HLIN_ADD
|
||||||
|
|
||||||
|
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; plot common code
|
||||||
|
;===================================
|
||||||
|
;===================================
|
||||||
|
; X-coord in X1
|
||||||
|
; Y-coord in A
|
||||||
|
; Y is Y-coord/2 at end
|
||||||
|
plot_common:
|
||||||
|
|
||||||
|
lsr ; need Y-coord/2 because 2 rows per byte
|
||||||
|
tay
|
||||||
|
bcc plot_mask_even
|
||||||
|
plot_mask_odd:
|
||||||
|
lda #$0F
|
||||||
|
.byte $2C ; bit trick
|
||||||
|
plot_mask_even:
|
||||||
|
lda #$F0
|
||||||
|
sta MASK
|
||||||
|
eor #$FF
|
||||||
|
and COLOR
|
||||||
|
sta COLOR2
|
||||||
|
|
||||||
|
lda gr_offsets_l,Y
|
||||||
|
sta plot_l_smc+1
|
||||||
|
sta plot_s_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets_h,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta plot_l_smc+2
|
||||||
|
sta plot_s_smc+2
|
||||||
|
|
||||||
|
ldx X1
|
||||||
|
plot_l_smc:
|
||||||
|
lda $400,X
|
||||||
|
and MASK
|
||||||
|
ora COLOR2
|
||||||
|
plot_s_smc:
|
||||||
|
sta $400,X
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; 16-bit increment of INL
|
||||||
|
; inline this?
|
||||||
|
inc_inl:
|
||||||
|
inc INL
|
||||||
|
bne done_inc_inl
|
||||||
|
inc INH
|
||||||
|
done_inc_inl:
|
||||||
|
rts
|
||||||
|
|
||||||
|
;.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
|
||||||
|
|
526
demos/xmas_2023/plasma_tree.s
Normal file
526
demos/xmas_2023/plasma_tree.s
Normal file
|
@ -0,0 +1,526 @@
|
||||||
|
; PLASMA TREE
|
||||||
|
|
||||||
|
; based on original PLASMAGORIA code by French Touch
|
||||||
|
|
||||||
|
; =============================================================================
|
||||||
|
; ROUTINE MAIN
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
plasma_tree:
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta DRAW_PAGE
|
||||||
|
sta clear_all_color+1
|
||||||
|
|
||||||
|
lda #$04
|
||||||
|
sta DRAW_PAGE
|
||||||
|
jsr clear_all
|
||||||
|
|
||||||
|
|
||||||
|
bit PAGE2 ; set page 2
|
||||||
|
; bit SET_TEXT ; set text
|
||||||
|
bit LORES ; set lo-res
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta FRAME
|
||||||
|
|
||||||
|
; load image offscreen $6000
|
||||||
|
|
||||||
|
lda #<mask1_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask1_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$60
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $6400
|
||||||
|
|
||||||
|
lda #<mask2_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask2_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$64
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $6800
|
||||||
|
|
||||||
|
lda #<mask3_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask3_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$68
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $6C00
|
||||||
|
|
||||||
|
lda #<mask4_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask4_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$6C
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $7000
|
||||||
|
|
||||||
|
lda #<mask5_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask5_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$70
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $7400
|
||||||
|
|
||||||
|
lda #<mask6_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask6_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$74
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $7800
|
||||||
|
|
||||||
|
lda #<mask7_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask7_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$78
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
; load image offscreen $7C00
|
||||||
|
|
||||||
|
lda #<mask8_data
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>mask8_data
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$7C
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; remap the masks
|
||||||
|
; $00->$00
|
||||||
|
; $11->$40
|
||||||
|
; $22->$80
|
||||||
|
; $44->$C0
|
||||||
|
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
sty OUTL
|
||||||
|
lda #$60
|
||||||
|
sta OUTH
|
||||||
|
remap_mask:
|
||||||
|
lda (OUTL),Y
|
||||||
|
and #$7
|
||||||
|
tax
|
||||||
|
lda remap_table,X
|
||||||
|
sta (OUTL),Y
|
||||||
|
dey
|
||||||
|
bne remap_mask
|
||||||
|
|
||||||
|
inc OUTH
|
||||||
|
lda OUTH
|
||||||
|
cmp #$80
|
||||||
|
bne remap_mask
|
||||||
|
|
||||||
|
|
||||||
|
step3:
|
||||||
|
|
||||||
|
; init
|
||||||
|
|
||||||
|
lda #02
|
||||||
|
sta COMPT2
|
||||||
|
sta PARAM1
|
||||||
|
sta PARAM2
|
||||||
|
sta PARAM3
|
||||||
|
sta PARAM4
|
||||||
|
|
||||||
|
bp3:
|
||||||
|
jsr precalc ; pre-calc
|
||||||
|
jsr display_normal ; display normal
|
||||||
|
jsr VBLANK
|
||||||
|
|
||||||
|
lda #60
|
||||||
|
jsr wait_for_pattern
|
||||||
|
bcc keep_making_plasma
|
||||||
|
|
||||||
|
jmp done_plasmacube
|
||||||
|
|
||||||
|
|
||||||
|
keep_making_plasma:
|
||||||
|
|
||||||
|
|
||||||
|
inc COMPT1
|
||||||
|
bne bp3
|
||||||
|
dec COMPT2
|
||||||
|
bne bp3
|
||||||
|
|
||||||
|
jmp step3
|
||||||
|
|
||||||
|
|
||||||
|
; ============================================================================
|
||||||
|
; Precalculate some values
|
||||||
|
; ROUTINES PRE CALCUL
|
||||||
|
; ============================================================================
|
||||||
|
precalc:
|
||||||
|
lda PARAM1 ; self modify various parts
|
||||||
|
sta pc_off1+1
|
||||||
|
lda PARAM2
|
||||||
|
sta pc_off2+1
|
||||||
|
lda PARAM3
|
||||||
|
sta pc_off3+1
|
||||||
|
lda PARAM4
|
||||||
|
sta pc_off4+1
|
||||||
|
|
||||||
|
; Table1(X) = sin1(PARAM1+X)+sin2(PARAM1+X)
|
||||||
|
; Table2(X) = sin3(PARAM3+X)+sin1(PARAM4+X)
|
||||||
|
|
||||||
|
ldx #$28 ; 40
|
||||||
|
pc_b1:
|
||||||
|
pc_off1:
|
||||||
|
lda sin1
|
||||||
|
pc_off2:
|
||||||
|
adc sin2
|
||||||
|
sta Table1,X
|
||||||
|
pc_off3:
|
||||||
|
lda sin3
|
||||||
|
pc_off4:
|
||||||
|
adc sin1
|
||||||
|
sta Table2,X
|
||||||
|
|
||||||
|
inc pc_off1+1
|
||||||
|
inc pc_off2+1
|
||||||
|
inc pc_off3+1
|
||||||
|
inc pc_off4+1
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl pc_b1
|
||||||
|
|
||||||
|
inc PARAM1
|
||||||
|
inc PARAM1
|
||||||
|
dec PARAM2
|
||||||
|
inc PARAM3
|
||||||
|
dec PARAM4
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
; ============================================================================
|
||||||
|
; Display Routines
|
||||||
|
; ROUTINES AFFICHAGES
|
||||||
|
; ============================================================================
|
||||||
|
|
||||||
|
; Display "Normal"
|
||||||
|
; AFFICHAGE "NORMAL"
|
||||||
|
|
||||||
|
display_normal:
|
||||||
|
bit SET_GR ; gfx (lores) why needed?
|
||||||
|
|
||||||
|
ldx #23 ; lines 0-23 lignes 0-23
|
||||||
|
|
||||||
|
display_line_loop:
|
||||||
|
lda gr_lookup_low,X ; setup pointers for line
|
||||||
|
sta GRLINE
|
||||||
|
lda gr_lookup_high,X
|
||||||
|
sta GRLINE+1
|
||||||
|
|
||||||
|
lda gr_lookup_low,X ; setup pointers for mask
|
||||||
|
sta INL
|
||||||
|
lda gr_lookup_high,X
|
||||||
|
clc
|
||||||
|
mask_src_smc:
|
||||||
|
adc #($70-$8)
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
|
||||||
|
ldy #39 ; col 0-39
|
||||||
|
|
||||||
|
lda Table2,X ; setup base sine value for row
|
||||||
|
sta display_row_sin_smc+1
|
||||||
|
display_col_loop:
|
||||||
|
lda Table1,Y ; load in column sine value
|
||||||
|
display_row_sin_smc:
|
||||||
|
adc #00 ; add in row value
|
||||||
|
|
||||||
|
and #$3f
|
||||||
|
ora (INL),Y
|
||||||
|
|
||||||
|
sta display_lookup_smc+1 ; patch in low byte of lookup
|
||||||
|
display_lookup_smc:
|
||||||
|
lda lores_colors_rgb ; attention: must be aligned
|
||||||
|
|
||||||
|
sta (GRLINE),Y
|
||||||
|
dey
|
||||||
|
bpl display_col_loop
|
||||||
|
dex
|
||||||
|
bpl display_line_loop
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
VBLANK:
|
||||||
|
inc FRAME
|
||||||
|
|
||||||
|
lda FRAME
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
and #$f
|
||||||
|
tax
|
||||||
|
lda mask_src_table,X
|
||||||
|
sta mask_src_smc+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
done_plasmacube:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;.align 256
|
||||||
|
|
||||||
|
gr_lookup_low:
|
||||||
|
.byte $00,$80,$00,$80,$00,$80,$00,$80
|
||||||
|
.byte $28,$A8,$28,$A8,$28,$A8,$28,$A8
|
||||||
|
.byte $50,$D0,$50,$D0,$50,$D0,$50,$D0
|
||||||
|
|
||||||
|
gr_lookup_high:
|
||||||
|
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
||||||
|
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
||||||
|
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.align 256
|
||||||
|
|
||||||
|
|
||||||
|
; This appears to be roughly 47+32*sin(x)+16*sin(2x)
|
||||||
|
sin1: ; 256
|
||||||
|
.byte $2E,$30,$32,$34,$35,$36,$38,$3A,$3C,$3C,$3E,$40,$41,$42,$44,$45,$47,$47,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$53,$53,$54,$54
|
||||||
|
.byte $55,$55,$56,$57,$57,$58,$58,$57,$58,$58,$58,$58,$58,$58,$58,$58,$58,$57,$57,$57,$56,$56,$55,$54,$55,$54,$53,$52,$52,$51,$50,$4F
|
||||||
|
.byte $4E,$4E,$4D,$4C,$4B,$4B,$4A,$49,$48,$47,$46,$45,$45,$44,$42,$42,$41,$41,$3F,$3F,$3D,$3D,$3C,$3B,$3B,$39,$39,$39,$38,$38,$37,$36
|
||||||
|
.byte $36,$35,$35,$34,$34,$33,$32,$32,$32,$31,$31,$31,$30,$31,$30,$30,$30,$30,$2F,$2F,$30,$2F,$2F,$2F,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F
|
||||||
|
.byte $2E,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F,$2E,$2F,$2F,$2E,$2E,$2F,$2E,$2E,$2D,$2E,$2D,$2D,$2D,$2C,$2C,$2C,$2B,$2B,$2B,$2A,$2A,$29,$28
|
||||||
|
.byte $28,$27,$27,$26,$26,$25,$25,$23,$23,$22,$21,$21,$20,$1F,$1F,$1D,$1D,$1C,$1B,$1A,$19,$19,$17,$16,$16,$15,$14,$13,$13,$12,$11,$10
|
||||||
|
.byte $0F,$0F,$0E,$0D,$0C,$0C,$0B,$0A,$09,$09,$08,$08,$08,$07,$06,$07,$06,$06,$06,$06,$05,$06,$05,$05,$06,$05,$06,$06,$07,$07,$08,$08
|
||||||
|
.byte $09,$09,$0A,$0B,$0B,$0C,$0C,$0D,$0F,$0F,$10,$12,$12,$14,$15,$16,$17,$19,$1A,$1B,$1D,$1E,$20,$21,$22,$24,$26,$27,$28,$2A,$2C,$2E
|
||||||
|
|
||||||
|
; This appears to be roughly 47+32*sin(4x)+16*sin(3x)
|
||||||
|
sin2: ; 256
|
||||||
|
.byte $2E,$33,$38,$3C,$40,$43,$47,$4B,$4E,$51,$54,$56,$59,$5A,$5C,$5D,$5D,$5E,$5E,$5D,$5C,$5A,$59,$57,$55,$53,$4F,$4C,$49,$46,$42,$3E
|
||||||
|
.byte $3A,$36,$32,$2E,$2A,$26,$23,$1F,$1C,$18,$15,$12,$10,$0E,$0C,$0A,$09,$08,$07,$07,$07,$07,$09,$0A,$0B,$0D,$0F,$11,$13,$16,$19,$1C
|
||||||
|
.byte $1F,$22,$26,$29,$2C,$2F,$32,$36,$38,$3B,$3E,$3F,$42,$44,$46,$47,$48,$49,$4B,$4B,$4B,$4A,$4A,$49,$49,$48,$46,$44,$43,$41,$3F,$3C
|
||||||
|
.byte $3A,$38,$35,$33,$30,$2E,$2C,$2A,$28,$26,$24,$22,$21,$20,$1F,$1F,$1E,$1E,$1D,$1D,$1E,$1E,$1F,$20,$21,$22,$24,$25,$27,$29,$2B,$2D
|
||||||
|
.byte $2E,$30,$33,$35,$37,$38,$3A,$3C,$3D,$3E,$3F,$3F,$40,$40,$41,$40,$40,$3F,$3F,$3E,$3D,$3B,$3A,$38,$36,$34,$31,$2F,$2D,$2B,$29,$25
|
||||||
|
.byte $23,$21,$1F,$1D,$1B,$19,$18,$16,$15,$14,$14,$13,$13,$13,$13,$14,$16,$17,$18,$1A,$1C,$1D,$20,$23,$26,$28,$2C,$2E,$32,$35,$38,$3B
|
||||||
|
.byte $3E,$41,$45,$48,$4B,$4C,$4F,$51,$53,$54,$55,$55,$57,$57,$57,$56,$55,$53,$52,$50,$4E,$4B,$49,$45,$42,$3F,$3B,$37,$34,$30,$2C,$27
|
||||||
|
.byte $23,$1F,$1C,$18,$14,$11,$0E,$0B,$09,$07,$05,$03,$02,$01,$00,$00,$01,$01,$02,$03,$05,$07,$0A,$0D,$10,$13,$17,$1A,$1E,$22,$26,$2A
|
||||||
|
|
||||||
|
; This appears to be roughly 38+24*sin(3x)+16*sin(8x)
|
||||||
|
sin3: ; 256
|
||||||
|
.byte $26,$2C,$31,$35,$39,$3D,$40,$42,$44,$45,$45,$46,$45,$43,$42,$40,$3C,$3A,$38,$36,$33,$31,$30,$2F,$2F,$2E,$2F,$2F,$30,$33,$33,$36
|
||||||
|
.byte $37,$3A,$3C,$3C,$3E,$3E,$3D,$3D,$3B,$39,$36,$34,$30,$2B,$28,$23,$1D,$19,$14,$11,$0C,$09,$07,$04,$03,$03,$03,$03,$04,$07,$09,$0C
|
||||||
|
.byte $0F,$13,$16,$18,$1B,$1E,$20,$22,$22,$23,$24,$24,$23,$22,$21,$20,$1D,$1C,$1B,$1A,$19,$19,$19,$1A,$1C,$1E,$20,$23,$27,$2B,$2F,$33
|
||||||
|
.byte $37,$3D,$40,$44,$47,$4A,$4C,$4D,$4E,$4E,$4D,$4C,$4A,$47,$45,$41,$3C,$39,$35,$32,$2E,$2B,$28,$26,$25,$23,$23,$22,$22,$24,$24,$25
|
||||||
|
.byte $26,$29,$2A,$2A,$2B,$2C,$2B,$2B,$29,$28,$25,$23,$20,$1C,$19,$15,$10,$0D,$09,$07,$04,$02,$01,$00,$00,$00,$02,$03,$06,$0A,$0D,$11
|
||||||
|
.byte $15,$1B,$1F,$23,$27,$2B,$2D,$30,$32,$33,$34,$35,$35,$33,$33,$32,$30,$2E,$2D,$2C,$2B,$2A,$2A,$2A,$2B,$2C,$2E,$30,$32,$36,$38,$3B
|
||||||
|
.byte $3E,$42,$45,$47,$49,$4B,$4B,$4B,$4A,$49,$47,$45,$42,$3D,$3A,$35,$30,$2B,$26,$22,$1E,$1A,$17,$14,$13,$11,$10,$10,$10,$12,$12,$14
|
||||||
|
.byte $15,$18,$1A,$1B,$1D,$1E,$1F,$1F,$1F,$1F,$1E,$1D,$1B,$18,$16,$14,$10,$0E,$0C,$0B,$09,$08,$08,$09,$0A,$0C,$0E,$11,$14,$19,$1D,$22
|
||||||
|
|
||||||
|
|
||||||
|
; Lookup table for colors
|
||||||
|
; Note the sine tables point roughly to the middle and go to the edges
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lores_colors_rgb: ; 256
|
||||||
|
|
||||||
|
; black
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
|
||||||
|
|
||||||
|
; red gradient
|
||||||
|
; $00, $11, $33, $BB, $FF, $BB, $33, $11
|
||||||
|
|
||||||
|
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
||||||
|
.byte $11,$11,$33,$33,$33,$33,$33,$33
|
||||||
|
.byte $33,$33,$33,$33,$bb,$bb,$bb,$bb
|
||||||
|
.byte $bb,$bb,$bb,$bb,$bb,$bb,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||||
|
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
||||||
|
.byte $bb,$bb,$33,$33,$33,$33,$33,$33
|
||||||
|
.byte $33,$33,$33,$33,$11,$11,$11,$11
|
||||||
|
|
||||||
|
; red
|
||||||
|
.if 0
|
||||||
|
.byte $11,$11,$11,$11,$11,$33,$33,$33
|
||||||
|
.byte $33,$33,$bb,$bb,$bb,$bb,$bb,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$bb,$bb,$bb
|
||||||
|
.byte $bb,$bb,$33,$33,$33,$33,$33,$11
|
||||||
|
.byte $11,$11,$11,$11,$33,$33,$33,$33
|
||||||
|
.byte $bb,$bb,$bb,$bb,$bb,$ff,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$bb,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$33,$33,$11,$11
|
||||||
|
.endif
|
||||||
|
|
||||||
|
; $00, $22, $66, $77, $FF, $77, $66, $22
|
||||||
|
|
||||||
|
; 22 66 77 ff 77 66
|
||||||
|
|
||||||
|
; blue
|
||||||
|
|
||||||
|
|
||||||
|
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
||||||
|
.byte $22,$22,$22,$66,$66,$66,$66,$66
|
||||||
|
.byte $66,$66,$66,$66,$66,$66,$77,$77
|
||||||
|
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
||||||
|
.byte $77,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$77,$77,$77,$77
|
||||||
|
.byte $77,$77,$77,$77,$77,$77,$77,$66
|
||||||
|
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
||||||
|
|
||||||
|
|
||||||
|
.if 0
|
||||||
|
.byte $22,$22,$22,$22,$22,$66,$66,$66
|
||||||
|
.byte $66,$66,$77,$77,$77,$77,$77,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$77,$77,$77
|
||||||
|
.byte $77,$77,$66,$66,$66,$66,$66,$22
|
||||||
|
.byte $22,$22,$22,$22,$66,$66,$66,$66
|
||||||
|
.byte $77,$77,$77,$77,$77,$ff,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$77,$77,$77,$77,$77
|
||||||
|
.byte $66,$66,$66,$66,$66,$66,$22,$22
|
||||||
|
.endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; $00, $44, $CC, $DD, $FF, $DD, $CC, $44
|
||||||
|
|
||||||
|
; green
|
||||||
|
.byte $44,$44,$44,$44,$44,$cc,$cc,$cc
|
||||||
|
.byte $cc,$cc,$dd,$dd,$dd,$dd,$dd,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$dd,$dd,$dd
|
||||||
|
.byte $dd,$dd,$cc,$cc,$cc,$cc,$cc,$44
|
||||||
|
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
||||||
|
.byte $dd,$dd,$dd,$dd,$dd,$ff,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$dd,$dd,$dd,$dd,$dd
|
||||||
|
.byte $cc,$cc,$cc,$cc,$cc,$cc,$44,$44
|
||||||
|
.if 0
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
||||||
|
.byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC
|
||||||
|
.byte $DD,$DD,$DD,$DD,$DD,$DD,$DD,$DD
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||||
|
.byte $DD,$DD,$DD,$DD,$DD,$DD,$DD,$DD
|
||||||
|
.byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC
|
||||||
|
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
||||||
|
.endif
|
||||||
|
|
||||||
|
; This table has relatively fine color bands
|
||||||
|
.if 0
|
||||||
|
lores_colors_fine: ; 256
|
||||||
|
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
||||||
|
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
||||||
|
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
||||||
|
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
||||||
|
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
||||||
|
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
||||||
|
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
||||||
|
|
||||||
|
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
||||||
|
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
||||||
|
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
||||||
|
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
||||||
|
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
||||||
|
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
||||||
|
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
||||||
|
|
||||||
|
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
||||||
|
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
||||||
|
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
||||||
|
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
||||||
|
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
||||||
|
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
||||||
|
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
||||||
|
|
||||||
|
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
||||||
|
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
||||||
|
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
||||||
|
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
||||||
|
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
||||||
|
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
||||||
|
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
||||||
|
.else
|
||||||
|
; This table has relatively wide color bands
|
||||||
|
lores_colors_wide: ; 256
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byte $88,$88,$88,$88,$88,$88,$88,$88
|
||||||
|
.byte $88,$88,$88,$88,$88,$88,$88,$88
|
||||||
|
.byte $55,$55,$55,$55,$55,$55,$55,$55
|
||||||
|
.byte $55,$55,$55,$55,$55,$55,$55,$55
|
||||||
|
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
||||||
|
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||||
|
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||||
|
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
||||||
|
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
||||||
|
.byte $33,$33,$33,$33,$33,$33,$33,$33
|
||||||
|
.byte $33,$33,$33,$33,$33,$33,$33,$33
|
||||||
|
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
||||||
|
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
||||||
|
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
||||||
|
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
||||||
|
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
||||||
|
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
||||||
|
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
||||||
|
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
||||||
|
.byte $cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc
|
||||||
|
.byte $cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc
|
||||||
|
.byte $ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee
|
||||||
|
.byte $ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee
|
||||||
|
.byte $dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd
|
||||||
|
.byte $dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd
|
||||||
|
.byte $99,$99,$99,$99,$99,$99,$99,$99
|
||||||
|
.byte $99,$99,$99,$99,$99,$99,$99,$99
|
||||||
|
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
||||||
|
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
||||||
|
.endif
|
||||||
|
|
||||||
|
Table1 = $5000
|
||||||
|
Table2 = $5000+64
|
||||||
|
|
||||||
|
remap_table:
|
||||||
|
.byte $00,$40,$80,$00,$C0
|
||||||
|
|
||||||
|
mask_src_table:
|
||||||
|
.byte $60-8,$64-8,$68-8,$6C-8,$70-8,$74-8,$78-8,$7C-8
|
||||||
|
.byte $7C-8,$78-8,$74-8,$70-8,$6C-8,$68-8,$64-8,$60-8
|
||||||
|
|
||||||
|
|
||||||
|
mask1_data:
|
||||||
|
.incbin "graphics/tree01.gr.zx02"
|
||||||
|
mask2_data:
|
||||||
|
.incbin "graphics/tree03.gr.zx02"
|
||||||
|
mask3_data:
|
||||||
|
.incbin "graphics/tree05.gr.zx02"
|
||||||
|
mask4_data:
|
||||||
|
.incbin "graphics/tree07.gr.zx02"
|
||||||
|
mask5_data:
|
||||||
|
.incbin "graphics/tree09.gr.zx02"
|
||||||
|
mask6_data:
|
||||||
|
.incbin "graphics/tree11.gr.zx02"
|
||||||
|
mask7_data:
|
||||||
|
.incbin "graphics/tree13.gr.zx02"
|
||||||
|
mask8_data:
|
||||||
|
.incbin "graphics/tree15.gr.zx02"
|
|
@ -1,19 +1,16 @@
|
||||||
; XMAS
|
; XMAS 2023
|
||||||
|
|
||||||
; PLASMAGORIA
|
|
||||||
|
|
||||||
; based on original code by French Touch
|
|
||||||
|
|
||||||
.include "hardware.inc"
|
.include "hardware.inc"
|
||||||
.include "zp.inc"
|
.include "zp.inc"
|
||||||
.include "qload.inc"
|
.include "qload.inc"
|
||||||
.include "music.inc"
|
.include "music.inc"
|
||||||
|
|
||||||
; =============================================================================
|
|
||||||
; ROUTINE MAIN
|
|
||||||
; =============================================================================
|
|
||||||
|
|
||||||
plasma_main:
|
xmas_main:
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; init
|
||||||
|
;======================================
|
||||||
|
|
||||||
lda #$00
|
lda #$00
|
||||||
sta DRAW_PAGE
|
sta DRAW_PAGE
|
||||||
|
@ -23,513 +20,25 @@ plasma_main:
|
||||||
sta DRAW_PAGE
|
sta DRAW_PAGE
|
||||||
jsr clear_all
|
jsr clear_all
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; draw opening scene
|
||||||
|
;======================================
|
||||||
|
|
||||||
bit PAGE2 ; set page 2
|
jsr fireplace
|
||||||
; bit SET_TEXT ; set text
|
|
||||||
bit LORES ; set lo-res
|
|
||||||
|
|
||||||
lda #0
|
;======================================
|
||||||
sta FRAME
|
; plasma tree
|
||||||
|
;======================================
|
||||||
|
|
||||||
; load image offscreen $6000
|
jsr plasma_tree
|
||||||
|
|
||||||
lda #<mask1_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask1_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$60
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $6400
|
finished:
|
||||||
|
jmp finished
|
||||||
|
|
||||||
lda #<mask2_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask2_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$64
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $6800
|
|
||||||
|
|
||||||
lda #<mask3_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask3_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$68
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $6C00
|
|
||||||
|
|
||||||
lda #<mask4_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask4_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$6C
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $7000
|
|
||||||
|
|
||||||
lda #<mask5_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask5_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$70
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $7400
|
|
||||||
|
|
||||||
lda #<mask6_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask6_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$74
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $7800
|
|
||||||
|
|
||||||
lda #<mask7_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask7_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$78
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
; load image offscreen $7C00
|
|
||||||
|
|
||||||
lda #<mask8_data
|
|
||||||
sta zx_src_l+1
|
|
||||||
lda #>mask8_data
|
|
||||||
sta zx_src_h+1
|
|
||||||
lda #$7C
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; remap the masks
|
|
||||||
; $00->$00
|
|
||||||
; $11->$40
|
|
||||||
; $22->$80
|
|
||||||
; $44->$C0
|
|
||||||
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
sty OUTL
|
|
||||||
lda #$60
|
|
||||||
sta OUTH
|
|
||||||
remap_mask:
|
|
||||||
lda (OUTL),Y
|
|
||||||
and #$7
|
|
||||||
tax
|
|
||||||
lda remap_table,X
|
|
||||||
sta (OUTL),Y
|
|
||||||
dey
|
|
||||||
bne remap_mask
|
|
||||||
|
|
||||||
inc OUTH
|
|
||||||
lda OUTH
|
|
||||||
cmp #$80
|
|
||||||
bne remap_mask
|
|
||||||
|
|
||||||
|
|
||||||
step3:
|
|
||||||
|
|
||||||
; init
|
|
||||||
|
|
||||||
lda #02
|
|
||||||
sta COMPT2
|
|
||||||
sta PARAM1
|
|
||||||
sta PARAM2
|
|
||||||
sta PARAM3
|
|
||||||
sta PARAM4
|
|
||||||
|
|
||||||
bp3:
|
|
||||||
jsr precalc ; pre-calc
|
|
||||||
jsr display_normal ; display normal
|
|
||||||
jsr VBLANK
|
|
||||||
|
|
||||||
lda #60
|
|
||||||
jsr wait_for_pattern
|
|
||||||
bcc keep_making_plasma
|
|
||||||
|
|
||||||
jmp done_plasmacube
|
|
||||||
|
|
||||||
|
|
||||||
keep_making_plasma:
|
|
||||||
|
|
||||||
|
|
||||||
inc COMPT1
|
|
||||||
bne bp3
|
|
||||||
dec COMPT2
|
|
||||||
bne bp3
|
|
||||||
|
|
||||||
jmp step3
|
|
||||||
|
|
||||||
|
|
||||||
; ============================================================================
|
|
||||||
; Precalculate some values
|
|
||||||
; ROUTINES PRE CALCUL
|
|
||||||
; ============================================================================
|
|
||||||
precalc:
|
|
||||||
lda PARAM1 ; self modify various parts
|
|
||||||
sta pc_off1+1
|
|
||||||
lda PARAM2
|
|
||||||
sta pc_off2+1
|
|
||||||
lda PARAM3
|
|
||||||
sta pc_off3+1
|
|
||||||
lda PARAM4
|
|
||||||
sta pc_off4+1
|
|
||||||
|
|
||||||
; Table1(X) = sin1(PARAM1+X)+sin2(PARAM1+X)
|
|
||||||
; Table2(X) = sin3(PARAM3+X)+sin1(PARAM4+X)
|
|
||||||
|
|
||||||
ldx #$28 ; 40
|
|
||||||
pc_b1:
|
|
||||||
pc_off1:
|
|
||||||
lda sin1
|
|
||||||
pc_off2:
|
|
||||||
adc sin2
|
|
||||||
sta Table1,X
|
|
||||||
pc_off3:
|
|
||||||
lda sin3
|
|
||||||
pc_off4:
|
|
||||||
adc sin1
|
|
||||||
sta Table2,X
|
|
||||||
|
|
||||||
inc pc_off1+1
|
|
||||||
inc pc_off2+1
|
|
||||||
inc pc_off3+1
|
|
||||||
inc pc_off4+1
|
|
||||||
|
|
||||||
dex
|
|
||||||
bpl pc_b1
|
|
||||||
|
|
||||||
inc PARAM1
|
|
||||||
inc PARAM1
|
|
||||||
dec PARAM2
|
|
||||||
inc PARAM3
|
|
||||||
dec PARAM4
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
; ============================================================================
|
|
||||||
; Display Routines
|
|
||||||
; ROUTINES AFFICHAGES
|
|
||||||
; ============================================================================
|
|
||||||
|
|
||||||
; Display "Normal"
|
|
||||||
; AFFICHAGE "NORMAL"
|
|
||||||
|
|
||||||
display_normal:
|
|
||||||
bit SET_GR ; gfx (lores) why needed?
|
|
||||||
|
|
||||||
ldx #23 ; lines 0-23 lignes 0-23
|
|
||||||
|
|
||||||
display_line_loop:
|
|
||||||
lda gr_lookup_low,X ; setup pointers for line
|
|
||||||
sta GRLINE
|
|
||||||
lda gr_lookup_high,X
|
|
||||||
sta GRLINE+1
|
|
||||||
|
|
||||||
lda gr_lookup_low,X ; setup pointers for mask
|
|
||||||
sta INL
|
|
||||||
lda gr_lookup_high,X
|
|
||||||
clc
|
|
||||||
mask_src_smc:
|
|
||||||
adc #($70-$8)
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
|
|
||||||
ldy #39 ; col 0-39
|
|
||||||
|
|
||||||
lda Table2,X ; setup base sine value for row
|
|
||||||
sta display_row_sin_smc+1
|
|
||||||
display_col_loop:
|
|
||||||
lda Table1,Y ; load in column sine value
|
|
||||||
display_row_sin_smc:
|
|
||||||
adc #00 ; add in row value
|
|
||||||
|
|
||||||
and #$3f
|
|
||||||
ora (INL),Y
|
|
||||||
|
|
||||||
sta display_lookup_smc+1 ; patch in low byte of lookup
|
|
||||||
display_lookup_smc:
|
|
||||||
lda lores_colors_rgb ; attention: must be aligned
|
|
||||||
|
|
||||||
sta (GRLINE),Y
|
|
||||||
dey
|
|
||||||
bpl display_col_loop
|
|
||||||
dex
|
|
||||||
bpl display_line_loop
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
VBLANK:
|
|
||||||
inc FRAME
|
|
||||||
|
|
||||||
lda FRAME
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
and #$f
|
|
||||||
tax
|
|
||||||
lda mask_src_table,X
|
|
||||||
sta mask_src_smc+1
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
done_plasmacube:
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
;.align 256
|
|
||||||
|
|
||||||
gr_lookup_low:
|
|
||||||
.byte $00,$80,$00,$80,$00,$80,$00,$80
|
|
||||||
.byte $28,$A8,$28,$A8,$28,$A8,$28,$A8
|
|
||||||
.byte $50,$D0,$50,$D0,$50,$D0,$50,$D0
|
|
||||||
|
|
||||||
gr_lookup_high:
|
|
||||||
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
|
||||||
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
|
||||||
.byte $08,$08,$09,$09,$0A,$0A,$0B,$0B
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.align 256
|
|
||||||
|
|
||||||
|
|
||||||
; This appears to be roughly 47+32*sin(x)+16*sin(2x)
|
|
||||||
sin1: ; 256
|
|
||||||
.byte $2E,$30,$32,$34,$35,$36,$38,$3A,$3C,$3C,$3E,$40,$41,$42,$44,$45,$47,$47,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$53,$53,$54,$54
|
|
||||||
.byte $55,$55,$56,$57,$57,$58,$58,$57,$58,$58,$58,$58,$58,$58,$58,$58,$58,$57,$57,$57,$56,$56,$55,$54,$55,$54,$53,$52,$52,$51,$50,$4F
|
|
||||||
.byte $4E,$4E,$4D,$4C,$4B,$4B,$4A,$49,$48,$47,$46,$45,$45,$44,$42,$42,$41,$41,$3F,$3F,$3D,$3D,$3C,$3B,$3B,$39,$39,$39,$38,$38,$37,$36
|
|
||||||
.byte $36,$35,$35,$34,$34,$33,$32,$32,$32,$31,$31,$31,$30,$31,$30,$30,$30,$30,$2F,$2F,$30,$2F,$2F,$2F,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F
|
|
||||||
.byte $2E,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F,$2E,$2F,$2F,$2E,$2E,$2F,$2E,$2E,$2D,$2E,$2D,$2D,$2D,$2C,$2C,$2C,$2B,$2B,$2B,$2A,$2A,$29,$28
|
|
||||||
.byte $28,$27,$27,$26,$26,$25,$25,$23,$23,$22,$21,$21,$20,$1F,$1F,$1D,$1D,$1C,$1B,$1A,$19,$19,$17,$16,$16,$15,$14,$13,$13,$12,$11,$10
|
|
||||||
.byte $0F,$0F,$0E,$0D,$0C,$0C,$0B,$0A,$09,$09,$08,$08,$08,$07,$06,$07,$06,$06,$06,$06,$05,$06,$05,$05,$06,$05,$06,$06,$07,$07,$08,$08
|
|
||||||
.byte $09,$09,$0A,$0B,$0B,$0C,$0C,$0D,$0F,$0F,$10,$12,$12,$14,$15,$16,$17,$19,$1A,$1B,$1D,$1E,$20,$21,$22,$24,$26,$27,$28,$2A,$2C,$2E
|
|
||||||
|
|
||||||
; This appears to be roughly 47+32*sin(4x)+16*sin(3x)
|
|
||||||
sin2: ; 256
|
|
||||||
.byte $2E,$33,$38,$3C,$40,$43,$47,$4B,$4E,$51,$54,$56,$59,$5A,$5C,$5D,$5D,$5E,$5E,$5D,$5C,$5A,$59,$57,$55,$53,$4F,$4C,$49,$46,$42,$3E
|
|
||||||
.byte $3A,$36,$32,$2E,$2A,$26,$23,$1F,$1C,$18,$15,$12,$10,$0E,$0C,$0A,$09,$08,$07,$07,$07,$07,$09,$0A,$0B,$0D,$0F,$11,$13,$16,$19,$1C
|
|
||||||
.byte $1F,$22,$26,$29,$2C,$2F,$32,$36,$38,$3B,$3E,$3F,$42,$44,$46,$47,$48,$49,$4B,$4B,$4B,$4A,$4A,$49,$49,$48,$46,$44,$43,$41,$3F,$3C
|
|
||||||
.byte $3A,$38,$35,$33,$30,$2E,$2C,$2A,$28,$26,$24,$22,$21,$20,$1F,$1F,$1E,$1E,$1D,$1D,$1E,$1E,$1F,$20,$21,$22,$24,$25,$27,$29,$2B,$2D
|
|
||||||
.byte $2E,$30,$33,$35,$37,$38,$3A,$3C,$3D,$3E,$3F,$3F,$40,$40,$41,$40,$40,$3F,$3F,$3E,$3D,$3B,$3A,$38,$36,$34,$31,$2F,$2D,$2B,$29,$25
|
|
||||||
.byte $23,$21,$1F,$1D,$1B,$19,$18,$16,$15,$14,$14,$13,$13,$13,$13,$14,$16,$17,$18,$1A,$1C,$1D,$20,$23,$26,$28,$2C,$2E,$32,$35,$38,$3B
|
|
||||||
.byte $3E,$41,$45,$48,$4B,$4C,$4F,$51,$53,$54,$55,$55,$57,$57,$57,$56,$55,$53,$52,$50,$4E,$4B,$49,$45,$42,$3F,$3B,$37,$34,$30,$2C,$27
|
|
||||||
.byte $23,$1F,$1C,$18,$14,$11,$0E,$0B,$09,$07,$05,$03,$02,$01,$00,$00,$01,$01,$02,$03,$05,$07,$0A,$0D,$10,$13,$17,$1A,$1E,$22,$26,$2A
|
|
||||||
|
|
||||||
; This appears to be roughly 38+24*sin(3x)+16*sin(8x)
|
|
||||||
sin3: ; 256
|
|
||||||
.byte $26,$2C,$31,$35,$39,$3D,$40,$42,$44,$45,$45,$46,$45,$43,$42,$40,$3C,$3A,$38,$36,$33,$31,$30,$2F,$2F,$2E,$2F,$2F,$30,$33,$33,$36
|
|
||||||
.byte $37,$3A,$3C,$3C,$3E,$3E,$3D,$3D,$3B,$39,$36,$34,$30,$2B,$28,$23,$1D,$19,$14,$11,$0C,$09,$07,$04,$03,$03,$03,$03,$04,$07,$09,$0C
|
|
||||||
.byte $0F,$13,$16,$18,$1B,$1E,$20,$22,$22,$23,$24,$24,$23,$22,$21,$20,$1D,$1C,$1B,$1A,$19,$19,$19,$1A,$1C,$1E,$20,$23,$27,$2B,$2F,$33
|
|
||||||
.byte $37,$3D,$40,$44,$47,$4A,$4C,$4D,$4E,$4E,$4D,$4C,$4A,$47,$45,$41,$3C,$39,$35,$32,$2E,$2B,$28,$26,$25,$23,$23,$22,$22,$24,$24,$25
|
|
||||||
.byte $26,$29,$2A,$2A,$2B,$2C,$2B,$2B,$29,$28,$25,$23,$20,$1C,$19,$15,$10,$0D,$09,$07,$04,$02,$01,$00,$00,$00,$02,$03,$06,$0A,$0D,$11
|
|
||||||
.byte $15,$1B,$1F,$23,$27,$2B,$2D,$30,$32,$33,$34,$35,$35,$33,$33,$32,$30,$2E,$2D,$2C,$2B,$2A,$2A,$2A,$2B,$2C,$2E,$30,$32,$36,$38,$3B
|
|
||||||
.byte $3E,$42,$45,$47,$49,$4B,$4B,$4B,$4A,$49,$47,$45,$42,$3D,$3A,$35,$30,$2B,$26,$22,$1E,$1A,$17,$14,$13,$11,$10,$10,$10,$12,$12,$14
|
|
||||||
.byte $15,$18,$1A,$1B,$1D,$1E,$1F,$1F,$1F,$1F,$1E,$1D,$1B,$18,$16,$14,$10,$0E,$0C,$0B,$09,$08,$08,$09,$0A,$0C,$0E,$11,$14,$19,$1D,$22
|
|
||||||
|
|
||||||
|
|
||||||
; Lookup table for colors
|
|
||||||
; Note the sine tables point roughly to the middle and go to the edges
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lores_colors_rgb: ; 256
|
|
||||||
|
|
||||||
; black
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
|
|
||||||
|
|
||||||
; red gradient
|
|
||||||
; $00, $11, $33, $BB, $FF, $BB, $33, $11
|
|
||||||
|
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
|
||||||
.byte $11,$11,$33,$33,$33,$33,$33,$33
|
|
||||||
.byte $33,$33,$33,$33,$bb,$bb,$bb,$bb
|
|
||||||
.byte $bb,$bb,$bb,$bb,$bb,$bb,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
|
||||||
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
|
||||||
.byte $bb,$bb,$33,$33,$33,$33,$33,$33
|
|
||||||
.byte $33,$33,$33,$33,$11,$11,$11,$11
|
|
||||||
|
|
||||||
; red
|
|
||||||
.if 0
|
|
||||||
.byte $11,$11,$11,$11,$11,$33,$33,$33
|
|
||||||
.byte $33,$33,$bb,$bb,$bb,$bb,$bb,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$bb,$bb,$bb
|
|
||||||
.byte $bb,$bb,$33,$33,$33,$33,$33,$11
|
|
||||||
.byte $11,$11,$11,$11,$33,$33,$33,$33
|
|
||||||
.byte $bb,$bb,$bb,$bb,$bb,$ff,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$bb,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$33,$33,$11,$11
|
|
||||||
.endif
|
|
||||||
|
|
||||||
; $00, $22, $66, $77, $FF, $77, $66, $22
|
|
||||||
|
|
||||||
; 22 66 77 ff 77 66
|
|
||||||
|
|
||||||
; blue
|
|
||||||
|
|
||||||
|
|
||||||
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
|
||||||
.byte $22,$22,$22,$66,$66,$66,$66,$66
|
|
||||||
.byte $66,$66,$66,$66,$66,$66,$77,$77
|
|
||||||
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
|
||||||
.byte $77,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$77,$77,$77,$77
|
|
||||||
.byte $77,$77,$77,$77,$77,$77,$77,$66
|
|
||||||
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
|
||||||
|
|
||||||
|
|
||||||
.if 0
|
|
||||||
.byte $22,$22,$22,$22,$22,$66,$66,$66
|
|
||||||
.byte $66,$66,$77,$77,$77,$77,$77,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$77,$77,$77
|
|
||||||
.byte $77,$77,$66,$66,$66,$66,$66,$22
|
|
||||||
.byte $22,$22,$22,$22,$66,$66,$66,$66
|
|
||||||
.byte $77,$77,$77,$77,$77,$ff,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$77,$77,$77,$77,$77
|
|
||||||
.byte $66,$66,$66,$66,$66,$66,$22,$22
|
|
||||||
.endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; $00, $44, $CC, $DD, $FF, $DD, $CC, $44
|
|
||||||
|
|
||||||
; green
|
|
||||||
.byte $44,$44,$44,$44,$44,$cc,$cc,$cc
|
|
||||||
.byte $cc,$cc,$dd,$dd,$dd,$dd,$dd,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$dd,$dd,$dd
|
|
||||||
.byte $dd,$dd,$cc,$cc,$cc,$cc,$cc,$44
|
|
||||||
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
|
||||||
.byte $dd,$dd,$dd,$dd,$dd,$ff,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$dd,$dd,$dd,$dd,$dd
|
|
||||||
.byte $cc,$cc,$cc,$cc,$cc,$cc,$44,$44
|
|
||||||
.if 0
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
|
||||||
.byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC
|
|
||||||
.byte $DD,$DD,$DD,$DD,$DD,$DD,$DD,$DD
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
|
||||||
.byte $DD,$DD,$DD,$DD,$DD,$DD,$DD,$DD
|
|
||||||
.byte $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC
|
|
||||||
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
|
||||||
.endif
|
|
||||||
|
|
||||||
; This table has relatively fine color bands
|
|
||||||
.if 0
|
|
||||||
lores_colors_fine: ; 256
|
|
||||||
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
|
||||||
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
|
||||||
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
|
||||||
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
|
||||||
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
|
||||||
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
|
||||||
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
|
||||||
|
|
||||||
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
|
||||||
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
|
||||||
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
|
||||||
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
|
||||||
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
|
||||||
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
|
||||||
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
|
||||||
|
|
||||||
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
|
||||||
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
|
||||||
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
|
||||||
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
|
||||||
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
|
||||||
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
|
||||||
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
|
||||||
|
|
||||||
.byte $00,$00,$00,$00,$88,$88,$88,$88
|
|
||||||
.byte $55,$55,$55,$55,$99,$99,$99,$99
|
|
||||||
.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$22,$22,$22,$22
|
|
||||||
.byte $66,$66,$66,$66,$77,$77,$77,$77
|
|
||||||
.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc
|
|
||||||
.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd
|
|
||||||
.byte $99,$99,$99,$99,$11,$11,$11,$11
|
|
||||||
.else
|
|
||||||
; This table has relatively wide color bands
|
|
||||||
lores_colors_wide: ; 256
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
.byte $88,$88,$88,$88,$88,$88,$88,$88
|
|
||||||
.byte $88,$88,$88,$88,$88,$88,$88,$88
|
|
||||||
.byte $55,$55,$55,$55,$55,$55,$55,$55
|
|
||||||
.byte $55,$55,$55,$55,$55,$55,$55,$55
|
|
||||||
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
|
||||||
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
|
||||||
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
|
||||||
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
|
||||||
.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb
|
|
||||||
.byte $33,$33,$33,$33,$33,$33,$33,$33
|
|
||||||
.byte $33,$33,$33,$33,$33,$33,$33,$33
|
|
||||||
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
|
||||||
.byte $22,$22,$22,$22,$22,$22,$22,$22
|
|
||||||
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
|
||||||
.byte $66,$66,$66,$66,$66,$66,$66,$66
|
|
||||||
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
|
||||||
.byte $77,$77,$77,$77,$77,$77,$77,$77
|
|
||||||
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
|
||||||
.byte $44,$44,$44,$44,$44,$44,$44,$44
|
|
||||||
.byte $cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc
|
|
||||||
.byte $cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc
|
|
||||||
.byte $ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee
|
|
||||||
.byte $ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee
|
|
||||||
.byte $dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd
|
|
||||||
.byte $dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd
|
|
||||||
.byte $99,$99,$99,$99,$99,$99,$99,$99
|
|
||||||
.byte $99,$99,$99,$99,$99,$99,$99,$99
|
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
|
||||||
.endif
|
|
||||||
|
|
||||||
Table1 = $5000
|
|
||||||
Table2 = $5000+64
|
|
||||||
|
|
||||||
remap_table:
|
|
||||||
.byte $00,$40,$80,$00,$C0
|
|
||||||
|
|
||||||
mask_src_table:
|
|
||||||
.byte $60-8,$64-8,$68-8,$6C-8,$70-8,$74-8,$78-8,$7C-8
|
|
||||||
.byte $7C-8,$78-8,$74-8,$70-8,$6C-8,$68-8,$64-8,$60-8
|
|
||||||
|
|
||||||
.include "wait_keypress.s"
|
.include "wait_keypress.s"
|
||||||
.include "irq_wait.s"
|
.include "irq_wait.s"
|
||||||
|
|
||||||
mask1_data:
|
.include "plasma_tree.s"
|
||||||
.incbin "graphics/tree01.gr.zx02"
|
.include "fireplace.s"
|
||||||
mask2_data:
|
|
||||||
.incbin "graphics/tree03.gr.zx02"
|
|
||||||
mask3_data:
|
|
||||||
.incbin "graphics/tree05.gr.zx02"
|
|
||||||
mask4_data:
|
|
||||||
.incbin "graphics/tree07.gr.zx02"
|
|
||||||
mask5_data:
|
|
||||||
.incbin "graphics/tree09.gr.zx02"
|
|
||||||
mask6_data:
|
|
||||||
.incbin "graphics/tree11.gr.zx02"
|
|
||||||
mask7_data:
|
|
||||||
.incbin "graphics/tree13.gr.zx02"
|
|
||||||
mask8_data:
|
|
||||||
.incbin "graphics/tree15.gr.zx02"
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ SDL_LIBS= `sdl-config --libs`
|
||||||
SDL_INCLUDE= `sdl-config --cflags`
|
SDL_INCLUDE= `sdl-config --cflags`
|
||||||
|
|
||||||
all: generate_sines \
|
all: generate_sines \
|
||||||
twist_6502
|
twist_6502 twist_dump
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
@ -24,9 +24,17 @@ twist_6502: twist_6502.o ../gr-sim.a
|
||||||
twist_6502.o: twist_6502.c
|
twist_6502.o: twist_6502.c
|
||||||
$(CC) $(CFLAGS) $(SDL_INCLUDE) -c twist_6502.c
|
$(CC) $(CFLAGS) $(SDL_INCLUDE) -c twist_6502.c
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
twist_dump: twist_dump.o ../gr-sim.a
|
||||||
|
$(CC) -o twist_dump twist_dump.o ../gr-sim.a $(LFLAGS) $(SDL_LIBS)
|
||||||
|
|
||||||
|
twist_dump.o: twist_dump.c
|
||||||
|
$(CC) $(CFLAGS) $(SDL_INCLUDE) -c twist_dump.c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *~ *.o dots dots_dump dots_play dots_minimal dots_6502 dots_play2
|
rm -f *~ *.o twist_6502 twist_dump
|
||||||
|
|
114
utils/gr-sim/twister/twist_dump.c
Normal file
114
utils/gr-sim/twister/twist_dump.c
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
//#include "../gr-sim.h"
|
||||||
|
//#include "../tfv_zp.h"
|
||||||
|
|
||||||
|
unsigned char ram[40][48];
|
||||||
|
|
||||||
|
|
||||||
|
int hlin(int color,int x1, int x2, int y) {
|
||||||
|
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for(j=x1;j<x2;j++) ram[j][y]=color;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc,char **argv) {
|
||||||
|
|
||||||
|
int xx,yy,temp;
|
||||||
|
int total_bytes=0;
|
||||||
|
int y,j,color,old,run;
|
||||||
|
double pi=3.14,f,e,m,n,s,t,q,r;
|
||||||
|
double a[64*48],b[64*48];
|
||||||
|
|
||||||
|
// grsim_init();
|
||||||
|
|
||||||
|
// gr();
|
||||||
|
|
||||||
|
j=0;
|
||||||
|
for(e=0;e<pi*2.0;e+=0.1) {
|
||||||
|
m=15.0+cos(e)*12.0;
|
||||||
|
n=pi-sin(e)*pi;
|
||||||
|
for(y=0;y<48;y++) {
|
||||||
|
f=(double)y*0.5/m-n;
|
||||||
|
a[j]=8.0*cos(f);
|
||||||
|
b[j]=8.0*sin(f);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// clear_screens();
|
||||||
|
// soft_switch(MIXCLR);
|
||||||
|
|
||||||
|
// ram[DRAW_PAGE]=0;
|
||||||
|
|
||||||
|
// while(1) {
|
||||||
|
j=0;
|
||||||
|
for(e=0;e<63;e++) {
|
||||||
|
for(y=0;y<48;y++) {
|
||||||
|
s=20-a[j];
|
||||||
|
t=20-b[j];
|
||||||
|
q=20+a[j];
|
||||||
|
r=20+b[j];
|
||||||
|
|
||||||
|
/* re-draw background */
|
||||||
|
color=0;
|
||||||
|
hlin(color,12,27,y);
|
||||||
|
|
||||||
|
color=1;
|
||||||
|
m=s; n=t;
|
||||||
|
if (q<r) { m=q; n=r;}
|
||||||
|
hlin(color,m,n,y);
|
||||||
|
|
||||||
|
color=2;
|
||||||
|
if (r<s) { t=r; q=s;}
|
||||||
|
hlin(color,t,q,y);
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
}
|
||||||
|
// grsim_update();
|
||||||
|
|
||||||
|
printf("; Frame %d\n",(int)e);
|
||||||
|
for(yy=0;yy<24;yy++) {
|
||||||
|
old=0xff; run=0;
|
||||||
|
printf(".byte ");
|
||||||
|
for(xx=12;xx<27;xx++) {
|
||||||
|
temp=(ram[xx][(yy*2)+1]<<4)+
|
||||||
|
(ram[xx][(yy*2)]);
|
||||||
|
if (temp!=old) {
|
||||||
|
if (xx!=12) printf(",");
|
||||||
|
printf("$%02X",temp);
|
||||||
|
total_bytes++;
|
||||||
|
old=temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* approximate 50Hz sleep */
|
||||||
|
// usleep(20000);
|
||||||
|
// usleep(40000);
|
||||||
|
|
||||||
|
// ch=grsim_input();
|
||||||
|
// if (ch==27) {
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("; Total bytes = %d\n",total_bytes);
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user