From a1ecbde6638092441d7c826e843dd449f65f8d28 Mon Sep 17 00:00:00 2001 From: Nihilazo Date: Fri, 21 Jan 2022 19:13:46 +0000 Subject: [PATCH] add sustain command --- engine.tal | 32 ++++++++++++++++++++------------ player.tal | 18 +++++++++--------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/engine.tal b/engine.tal index a221e5d..1849875 100644 --- a/engine.tal +++ b/engine.tal @@ -109,31 +109,39 @@ RTN @k-run-command ( c arg channel ) &chan $1 &run -,&chan STR +;&chan STA SWP ( get command ) -DUP #01 EQU ,&vol JCN ( set volume ) -DUP #02 EQU ,&instrument JCN ( set instrument ) -DUP #03 EQU ,&attack JCN ( set attack time ) -DUP #04 EQU ,&decay JCN ( set decay time ) -DUP #07 EQU ,&speed JCN ( set speed ) +DUP #01 EQU ;&vol JCN2 ( set volume ) +DUP #02 EQU ;&instrument JCN2 ( set instrument ) +DUP #03 EQU ;&attack JCN2 ( set attack time ) +DUP #04 EQU ;&decay JCN2 ( set decay time ) +DUP #05 EQU ;&sustain JCN2 ( set sustain time ) +DUP #07 EQU ;&speed JCN2 ( set speed ) POP2 RTN -&vol POP ,&chan LDR #10 MUL .Audio0/volume ADD DEO +&vol POP ;&chan LDA #10 MUL .Audio0/volume ADD DEO RTN -&instrument POP ,&chan LDR ;k-load-instrument JSR2 +&instrument POP ;&chan LDA ;k-load-instrument JSR2 RTN &attack POP #0f AND #40 SFT ( shift new value into appropriate position ) - ,&chan LDR #10 MUL .Audio0/adsr ADD DEI ( load current value ) + ;&chan LDA #10 MUL .Audio0/adsr ADD DEI ( load current value ) #0f AND ( take only decay nibble ) ADD ( add together new attack and old decay ) - ,&chan LDR #10 MUL .Audio0/adsr ADD DEO ( store ) + ;&chan LDA #10 MUL .Audio0/adsr ADD DEO ( store ) RTN &decay POP #0f AND - ,&chan LDR #10 MUL .Audio0/adsr ADD DEI ( load current value ) + ;&chan LDA #10 MUL .Audio0/adsr ADD DEI ( load current value ) #f0 AND ( take only attack nibble ) ADD ( add together new decay and old attack ) - ,&chan LDR #10 MUL .Audio0/adsr ADD DEO ( store ) + ;&chan LDA #10 MUL .Audio0/adsr ADD DEO ( store ) +RTN +&sustain POP + #0f AND #40 SFT ( shift new value into appropriate position ) + ;&chan LDA #10 MUL .Audio0/adsr #01 ADD ADD DEI ( load current value ) + #0f AND ( take only decay nibble ) + ADD ( add together new attack and old decay ) + ;&chan LDA #10 MUL .Audio0/adsr #01 ADD ADD DEO ( store ) RTN &speed POP #0f AND DUP DEBUG .kalama/speed STZ #00 .kalama/tick STZ diff --git a/player.tal b/player.tal index 9a3806f..90b69e8 100644 --- a/player.tal +++ b/player.tal @@ -94,13 +94,13 @@ ff 02 ff ff ( song table, 2 rows ) @DEBUG-patterns ( pattern 00 ) 54 02 00 ( C-3 I00 ) -52 00 00 +52 05 00 54 00 00 4f 00 00 4b 00 00 4f 00 00 48 00 00 -ff 04 08 +ff 05 0f 54 00 00 52 00 00 54 00 00 @@ -110,28 +110,28 @@ ff 04 08 48 00 00 ff 00 00 ( pattern 01 ) -54 03 00 +54 05 04 56 00 00 57 00 00 56 00 00 57 00 00 54 00 00 -56 04 04 +56 00 00 54 00 00 56 00 00 -52 00 00 -54 04 00 +52 05 00 +54 00 00 52 00 00 54 00 00 50 00 00 -54 00 00 +54 05 0f ff 00 00 ( pattern 02 ) 3c 02 01 00 00 00 -3c 04 04 +3c 00 00 00 00 00 -3c 03 00 +3c 00 00 00 00 00 3c 00 00 00 00 00