add command system, add V and I commands
This commit is contained in:
parent
a6e6364a7e
commit
fd5afe422a
37
engine.tal
37
engine.tal
|
@ -1,5 +1,10 @@
|
||||||
( TODO
|
( TODO
|
||||||
commmands )
|
* 0x03 (A) - set attack to argument 1-0f
|
||||||
|
* 0x04 (D) - set decay to argument 1-0f
|
||||||
|
* 0x05 (S) - set sustain to argument 1-0f
|
||||||
|
* 0x06 (R) - set release to argument 1-0f
|
||||||
|
* 0x07 (T) - set song speed to argument 1-0f
|
||||||
|
* 0x08 (L) - set sample loop 00: off, otherwise: on )
|
||||||
|
|
||||||
@k-tick
|
@k-tick
|
||||||
&run
|
&run
|
||||||
|
@ -16,7 +21,7 @@ commmands )
|
||||||
( don't play if song pos is ffff aka song is stopped or over )
|
( don't play if song pos is ffff aka song is stopped or over )
|
||||||
#ffff EQU2 ;&no-play JCN2 ( songpos* )
|
#ffff EQU2 ;&no-play JCN2 ( songpos* )
|
||||||
#0005 ADD2 .kalama/module LDZ2 ADD2 ( songposinmod* )
|
#0005 ADD2 .kalama/module LDZ2 ADD2 ( songposinmod* )
|
||||||
DUP2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #00 ;k-play-line/run JSR2
|
DUP2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #00 ;k-play-line/run JSR2
|
||||||
DUP2 #0001 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #01 ;k-play-line/run JSR2
|
DUP2 #0001 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #01 ;k-play-line/run JSR2
|
||||||
DUP2 #0002 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #02 ;k-play-line/run JSR2
|
DUP2 #0002 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #02 ;k-play-line/run JSR2
|
||||||
#0003 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #03 ;k-play-line/run JSR2
|
#0003 ADD2 LDA ;k-get-pattern/run JSR2 ;&lineaddr LDA2 ADD2 #03 ;k-play-line/run JSR2
|
||||||
|
@ -91,9 +96,10 @@ RTN
|
||||||
&chan $1
|
&chan $1
|
||||||
&run
|
&run
|
||||||
,&chan STR
|
,&chan STR
|
||||||
|
DUP2 #0001 ADD2 LDA2 ,&chan LDR ;k-run-command/run JSR2
|
||||||
LDA DUP
|
LDA DUP
|
||||||
#00 EQU ,&rest JCN
|
#00 EQU ,&rest JCN
|
||||||
.kalama/loopflags LDZ ,&chan LDR #01 SWP SFT AND
|
.kalama/loopflags LDZ ,&chan LDR #10 MUL #01 SWP SFT AND
|
||||||
#00 NEQ ,&noloop JCN
|
#00 NEQ ,&noloop JCN
|
||||||
#80 ORA
|
#80 ORA
|
||||||
&noloop
|
&noloop
|
||||||
|
@ -103,6 +109,19 @@ LDA DUP
|
||||||
POP
|
POP
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@k-run-command ( c arg channel )
|
||||||
|
&chan $1
|
||||||
|
&run
|
||||||
|
,&chan STR
|
||||||
|
SWP ( get command )
|
||||||
|
DUP #01 EQU ,&vol JCN ( set instrument )
|
||||||
|
DUP #02 EQU ,&instr JCN ( set instrument )
|
||||||
|
POP2 RTN
|
||||||
|
&vol POP ,&chan LDR #10 MUL .Audio0/volume ADD DEO
|
||||||
|
RTN
|
||||||
|
&instr POP ,&chan LDR ;k-load-instrument JSR2
|
||||||
|
RTN
|
||||||
|
|
||||||
( loads instrument with number into specified audio channel, 0-indexed )
|
( loads instrument with number into specified audio channel, 0-indexed )
|
||||||
@k-load-instrument ( number channel -- )
|
@k-load-instrument ( number channel -- )
|
||||||
&run
|
&run
|
||||||
|
@ -113,16 +132,16 @@ RTN
|
||||||
#0002 ADD2 ( move to volume value )
|
#0002 ADD2 ( move to volume value )
|
||||||
DUP2 LDA STHrk .Audio0/volume ADD DEO ( copy volume value )
|
DUP2 LDA STHrk .Audio0/volume ADD DEO ( copy volume value )
|
||||||
#0001 ADD2 DUP2 ( move to flags value )
|
#0001 ADD2 DUP2 ( move to flags value )
|
||||||
LDA #07 SFT ( MSB is set for looping sample, turn it into 0/1 )
|
|
||||||
|
LDA #07 SFT ( MSB is set for looping sample, turn it into 0/1 )
|
||||||
DUP ( set or clear loop bit )
|
( set or clear loop bit )
|
||||||
#00 EQU ,&clear JCN
|
#00 EQU ,&clear JCN
|
||||||
STHrk SFT .kalama/loopflags LDZ ORA .kalama/loopflags STZ ( set bit on )
|
#01 STHrk SFT .kalama/loopflags LDZ ORA .kalama/loopflags STZ ( set bit on )
|
||||||
,&end JMP
|
,&end JMP
|
||||||
&clear
|
&clear
|
||||||
STHrk SFT #ff EOR .kalama/loopflags LDZ AND .kalama/loopflags STZ ( set bit off )
|
#01 STHrk SFT #ff EOR .kalama/loopflags LDZ AND .kalama/loopflags STZ ( set bit off )
|
||||||
&end
|
&end
|
||||||
|
|
||||||
#0001 ADD2 LDA2k STHrk .Audio0/adsr ADD DEO2 ( copy ADSR value )
|
#0001 ADD2 LDA2k STHrk .Audio0/adsr ADD DEO2 ( copy ADSR value )
|
||||||
|
|
||||||
#0002 ADD2 STHrk .Audio0/addr ADD DEO2
|
#0002 ADD2 STHrk .Audio0/addr ADD DEO2
|
||||||
|
|
|
@ -65,6 +65,7 @@ More soon probably
|
||||||
* 0x06 (R) - set release to argument (1-0f)
|
* 0x06 (R) - set release to argument (1-0f)
|
||||||
* 0x07 (T) - set song speed to argument (1-0f)
|
* 0x07 (T) - set song speed to argument (1-0f)
|
||||||
* 0x08 (L) - set sample loop ( 00: off, otherwise: on )
|
* 0x08 (L) - set sample loop ( 00: off, otherwise: on )
|
||||||
|
|
||||||
## Instruments
|
## Instruments
|
||||||
|
|
||||||
Instruments contain a sample and some default parameters for that sample. Everything is in the same format expected by the audio device.
|
Instruments contain a sample and some default parameters for that sample. Everything is in the same format expected by the audio device.
|
||||||
|
|
40
player.tal
40
player.tal
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
( a blank file )
|
( a blank file )
|
||||||
|
|
||||||
%DEBUG { ;print-hex/byte JSR2 #0a18 DEO }
|
%DEBUG { ;print-hex/byte JSR2 #0a18 DEO }
|
||||||
|
@ -43,9 +42,6 @@
|
||||||
#0f25 .System/b DEO2
|
#0f25 .System/b DEO2
|
||||||
|
|
||||||
;module ;k-init-module JSR2
|
;module ;k-init-module JSR2
|
||||||
|
|
||||||
#00 #00 ;k-load-instrument JSR2
|
|
||||||
#01 #01 ;k-load-instrument JSR2
|
|
||||||
|
|
||||||
;on-frame/run .Screen/vector DEO2
|
;on-frame/run .Screen/vector DEO2
|
||||||
BRK
|
BRK
|
||||||
|
@ -98,13 +94,13 @@ ff 02 ff ff ( song table, 2 rows )
|
||||||
@DEBUG-patterns
|
@DEBUG-patterns
|
||||||
( pattern 00 )
|
( pattern 00 )
|
||||||
54 02 00 ( C-3 I00 )
|
54 02 00 ( C-3 I00 )
|
||||||
52 00 00
|
52 01 80
|
||||||
54 00 00
|
54 01 08
|
||||||
4f 00 00
|
4f 01 80
|
||||||
4b 00 00
|
4b 01 08
|
||||||
4f 00 00
|
4f 01 22
|
||||||
48 00 00
|
48 01 cc
|
||||||
ff 00 00
|
ff 01 88
|
||||||
54 02 00
|
54 02 00
|
||||||
52 00 00
|
52 00 00
|
||||||
54 00 00
|
54 00 00
|
||||||
|
@ -114,34 +110,34 @@ ff 00 00
|
||||||
48 00 00
|
48 00 00
|
||||||
ff 00 00
|
ff 00 00
|
||||||
( pattern 01 )
|
( pattern 01 )
|
||||||
54 00 00
|
54 02 01
|
||||||
56 02 00 ( C-3 I00 )
|
56 00 00
|
||||||
57 00 00
|
57 00 00
|
||||||
56 00 00
|
56 00 00
|
||||||
57 00 00
|
57 00 00
|
||||||
54 00 00
|
54 00 00
|
||||||
56 00 00
|
56 02 00
|
||||||
54 00 00
|
54 00 00
|
||||||
56 00 00
|
56 00 00
|
||||||
52 00 00
|
52 00 00
|
||||||
54 00 00
|
54 02 01
|
||||||
52 00 00
|
52 00 00
|
||||||
54 00 00
|
54 00 00
|
||||||
50 00 00
|
50 00 00
|
||||||
54 00 00
|
54 02 00
|
||||||
ff 00 00
|
ff 00 00
|
||||||
( pattern 02 )
|
( pattern 02 )
|
||||||
|
3c 02 01
|
||||||
|
00 01 f0
|
||||||
3c 00 00
|
3c 00 00
|
||||||
00 00 00
|
00 00 00
|
||||||
3c 00 00
|
3c 01 0f
|
||||||
00 00 00
|
00 00 00
|
||||||
3c 00 00
|
3c 01 ff
|
||||||
00 00 00
|
00 00 00
|
||||||
3c 00 00
|
3c 01 44
|
||||||
00 00 00
|
00 00 00
|
||||||
3c 00 00
|
3c 01 ff
|
||||||
00 00 00
|
|
||||||
3c 00 00
|
|
||||||
00 00 00
|
00 00 00
|
||||||
3c 00 00
|
3c 00 00
|
||||||
00 00 00
|
00 00 00
|
||||||
|
|
Reference in New Issue