new update-dev subroutine
This commit is contained in:
parent
98b81d45e4
commit
d70f6a93ff
BIN
roms/tracker.rom
BIN
roms/tracker.rom
Binary file not shown.
|
@ -7,7 +7,11 @@
|
|||
%dec-ptr-reg-nib { .ptr-register-nibbles LDZ #01 SUB #7f AND .ptr-register-nibbles STZ }
|
||||
%dec-ptr-reg-byt { .ptr-register-nibbles LDZ #02 SUB #7f AND .ptr-register-nibbles STZ }
|
||||
%PRINT-DIGIT { DUP #30 ADD .Console/write DEO }
|
||||
%PRINT-NL { #0a .Console/write DEO }
|
||||
%MOD { DIVk MUL SUB }
|
||||
%MOD2 { DIV2k MUL2 SUB2 }
|
||||
|
||||
%ADD-OFFSET { .devoffset LDZ ADD }
|
||||
|
||||
( devices )
|
||||
|
||||
|
@ -45,17 +49,14 @@
|
|||
|0000
|
||||
( )
|
||||
@ptr-register-nibbles $1
|
||||
@framecount0 $1
|
||||
@framecount1 $1
|
||||
@framecount2 $1
|
||||
@beat0 $1
|
||||
@beat1 $1
|
||||
@beat2 $1
|
||||
@framecount $2
|
||||
|
||||
|
||||
( temp variables )
|
||||
@die-color $1
|
||||
@high-nibble $1
|
||||
@low-nibble $1
|
||||
@devoffset $1
|
||||
|
||||
( registers )
|
||||
@registers
|
||||
|
@ -69,6 +70,12 @@
|
|||
&period $1 &pattern $1 &beatcount $1 &adsr $2 &volume $1 &sample $2
|
||||
&melody $8
|
||||
|
||||
@framecount0 $1
|
||||
@framecount1 $1
|
||||
@framecount2 $1
|
||||
@beat0 $1
|
||||
@beat1 $1
|
||||
@beat2 $1
|
||||
|
||||
|
||||
( program )
|
||||
|
@ -80,9 +87,11 @@
|
|||
#1c92 .System/g DEO2
|
||||
#1c47 .System/b DEO2
|
||||
|
||||
#1f .dev0/period STZ
|
||||
( #10 #08 DIV PRINT-DIGIT )
|
||||
|
||||
#10 .dev0/period STZ
|
||||
#ff .dev0/pattern STZ
|
||||
#70 .dev0/beatcount STZ
|
||||
#17 .dev0/beatcount STZ
|
||||
#1ff1 .dev0/adsr STZ2
|
||||
#aa .dev0/volume STZ
|
||||
#0100 .dev0/sample STZ2
|
||||
|
@ -99,7 +108,8 @@
|
|||
BRK
|
||||
|
||||
@on-frame ( -> )
|
||||
;update-dev0 JSR2
|
||||
#00 ;update-dev JSR2
|
||||
( ;update-dev0 JSR2 )
|
||||
|
||||
&draw-registers
|
||||
pos-x-dev0 pos-y-dev #00
|
||||
|
@ -120,9 +130,58 @@ BRK
|
|||
pos-x-dev2 col-sep ADD2 #0010 #28
|
||||
;draw-bytes JSR2
|
||||
|
||||
( inc framecount )
|
||||
.framecount LDZ #01 ADD .framecount STZ
|
||||
BRK
|
||||
|
||||
|
||||
@update-dev ( devnum -- )
|
||||
( transform devnum to offset )
|
||||
#10 MUL .devoffset STZ
|
||||
|
||||
.dev0/period ADD-OFFSET LDZ DUP ,&apply-period JCN
|
||||
&no-period
|
||||
POP
|
||||
&done
|
||||
RTN
|
||||
&apply-period
|
||||
.framecount LDZ SWP MOD ,&done JCN
|
||||
|
||||
&check-beatcount
|
||||
.dev0/beatcount ADD-OFFSET LDZ #0f AND DUP ,&apply-beatcount JCN
|
||||
&no-beatcount
|
||||
POP RTN
|
||||
&apply-beatcount
|
||||
.framecount LDZ .dev0/period ADD-OFFSET LDZ DIV ( get framecount/period )
|
||||
SWP MOD ( apply mod beatcount )
|
||||
|
||||
.dev0/beatcount ADD-OFFSET LDZ #04 SFT ( get beat offset )
|
||||
ADD #07 AND ( apply offset and mask beat )
|
||||
STHk ( stash + keep current beat ) ( PRINT-DIGIT )
|
||||
|
||||
( check pattern )
|
||||
.dev0/pattern ADD-OFFSET LDZ
|
||||
SWP SFT #01 AND ( shift pattern beat bits to the right, and mask bit )
|
||||
,&play-sound JCN
|
||||
&no-play
|
||||
#00 STH ( didn't play )
|
||||
,&draw-beat JMP
|
||||
|
||||
&play-sound
|
||||
#00 .dev0/sample ADD-OFFSET LDZ #30 AND #03 SFT ;samples ADD2 LDA2 ( get sample offset to play )
|
||||
.Audio0/addr ADD-OFFSET DEO2 ( set sample address )
|
||||
.dev0/sample ADD-OFFSET LDZ2 #0fff AND2 .Audio0/length ADD-OFFSET DEO2 ( set sample length )
|
||||
.dev0/volume ADD-OFFSET LDZ .Audio0/volume ADD-OFFSET DEO
|
||||
.dev0/adsr ADD-OFFSET LDZ2 .Audio0/adsr ADD-OFFSET DEO2
|
||||
.dev0/melody ADD-OFFSET STHkr ( get beat ) ADD LDZ .Audio0/pitch ADD-OFFSET DEO
|
||||
|
||||
#01 STH ( played )
|
||||
|
||||
&draw-beat
|
||||
( draw beat )
|
||||
pos-x-dev0 STHr ( get played ) STHr ( get beat ) SWP ;draw-beat JSR2
|
||||
RTN
|
||||
|
||||
@update-dev0 ( -- )
|
||||
#00 ,&played STR
|
||||
.framecount0 LDZ #01 ADD DUP .framecount0 STZ ( inc frame counter )
|
||||
|
|
Loading…
Reference in New Issue