add basic drawing rountines for things in tracker, a good start
This commit is contained in:
parent
2015a2e1bc
commit
0760f0d832
66
tracker.tal
66
tracker.tal
|
@ -20,6 +20,9 @@
|
|||
%DEBUG2 { ;print-hex JSR2 #0a18 DEO }
|
||||
%RTN { JMP2r }
|
||||
|
||||
%MOD { DIVk MUL SUB }
|
||||
%MOD2 { DIV2k MUL2 SUB2 }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1
|
||||
|
@ -60,13 +63,15 @@
|
|||
;module ;k-init-module/run JSR2
|
||||
|
||||
;screen-vector .Screen/vector DEO2
|
||||
( #01 ;draw-pattern JSR2 )
|
||||
BRK
|
||||
|
||||
@screen-vector ( -> )
|
||||
#0000 .Screen/x DEO2
|
||||
#0008 .Screen/y DEO2
|
||||
;draw-song JSR2
|
||||
#0008 .Screen/y DEO2
|
||||
#0080 .Screen/x DEO2
|
||||
#00 ;draw-pattern JSR2
|
||||
BRK
|
||||
|
||||
@draw-song
|
||||
|
@ -96,9 +101,66 @@ RTN
|
|||
&pos $2
|
||||
|
||||
@draw-pattern ( p )
|
||||
.Screen/x DEI2 ,&x STR2
|
||||
;k-get-pattern JSR2
|
||||
DEBUG2
|
||||
DUP2 #0030 ADD2 STH2 ( stash address of end of pattern )
|
||||
&loop ( addr )
|
||||
DUP2 ;draw-pattern-line JSR2 ( addr )
|
||||
#00 .Screen/auto DEO ( clear auto byte )
|
||||
.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
|
||||
,&x LDR2 .Screen/x DEO2
|
||||
#0003 ADD2 ( addr+3 ) DUP2 STH2rk ( addr+3 addr+3 end ) NEQ2 ,&loop JCN
|
||||
POP2 POP2r
|
||||
RTN
|
||||
&x $2
|
||||
|
||||
@draw-pattern-line ( addr )
|
||||
#01 .Screen/auto DEO
|
||||
DUP2 LDA #01 ;draw-note JSR2 ( draw note name )
|
||||
#00 .Screen/sprite DEO ( space )
|
||||
DUP2 #0001 ADD2 ( effect letter )
|
||||
LDA #00 SWP ;&effect-letters ADD2 LDA #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( draw effect letter )
|
||||
#01 .Screen/sprite DEO
|
||||
#0002 ADD2 LDA #01 ;draw-hex JSR2 ( draw effect argument )
|
||||
RTN
|
||||
&effect-letters '_ 'V 'I 'A 'D 'S 'R 'T
|
||||
|
||||
@draw-note ( n color -- )
|
||||
#01 .Screen/auto DEO
|
||||
STH ( stash color )
|
||||
DUP #ff EQU ;¬e-off JCN2
|
||||
DUP #00 EQU ;&blank JCN2
|
||||
|
||||
DUP #0c MOD ( note minus octave )
|
||||
#00 SWP #0002 MUL2
|
||||
;¬es ADD2 LDA2 SWP
|
||||
#20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( first note character )
|
||||
STHrk .Screen/sprite DEO
|
||||
#20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( second note character )
|
||||
STHrk .Screen/sprite DEO
|
||||
|
||||
#0c DIV #10 ADD #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( octave number )
|
||||
STHr .Screen/sprite DEO
|
||||
RTN
|
||||
¬e-off
|
||||
#5b #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( [ )
|
||||
STHrk .Screen/sprite DEO
|
||||
#00 .Screen/sprite DEO
|
||||
#5d #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( ] )
|
||||
STHr .Screen/sprite DEO
|
||||
POP
|
||||
RTN
|
||||
&blank
|
||||
#2d #20 SUB #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 ( - )
|
||||
STHr
|
||||
DUP .Screen/sprite DEO ( three times )
|
||||
DUP .Screen/sprite DEO
|
||||
.Screen/sprite DEO
|
||||
POP
|
||||
|
||||
RTN
|
||||
¬es "C- "C# "D- "D# "E- "F- "F# "G- "G# "A- "A# "B-
|
||||
|
||||
@draw-hex ( n color -- )
|
||||
#01 .Screen/auto DEO
|
||||
STH ( stash color )
|
||||
|
|
Reference in New Issue