110 lines
2.8 KiB
Plaintext
110 lines
2.8 KiB
Plaintext
( dev/audio )
|
|
|
|
%MOD { DUP2 DIV MUL SUB }
|
|
|
|
@timer $1
|
|
@progress $1
|
|
|
|
( devices )
|
|
|
|
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
|
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
|
|
|30 @Audio [ &pad $8 &adsr $2 &len $2 &addr $2 &volume $1 &pitch $1 ]
|
|
|
|
|0100 ( -> )
|
|
|
|
( set color pallete )
|
|
#00ff .System/r DEO2
|
|
#0f0f .System/g DEO2
|
|
#0ff0 .System/b DEO2
|
|
|
|
;on-frame .Screen/vector DEO2 ( run on-frame every 1/60th of a second )
|
|
#ff .Audio/volume DEO ( set volume to max )
|
|
;saw .Audio/addr DEO2 ( set waveform to saw for audio engine )
|
|
;saw/end ;saw SUB2 #0002 SFT2 .Audio/len DEO2
|
|
#1202 .Audio/adsr DEO2 ( set envelope for audio engine )
|
|
|
|
BRK
|
|
|
|
@on-frame ( -> )
|
|
|
|
( incr ) .timer PEK #01 ADD .timer POK
|
|
( skip ) .timer PEK #10 EQU ,&play-note JNZ BRK &play-note
|
|
|
|
( get note )
|
|
;melody #00 .progress PEK ADD2 GET
|
|
|
|
( play note )
|
|
DUP .Audio/pitch DEO
|
|
|
|
( erase last note )
|
|
#20 .Screen/color DEO
|
|
|
|
( draw note )
|
|
#00 SWP #0004 MUL2 #0100 SUB2 .Screen/y DEO2
|
|
#00 .progress PEK #0008 MUL2 .Screen/x DEO2
|
|
;dot .Screen/addr DEO2
|
|
#21 .Screen/color DEO
|
|
|
|
( incr ) .progress PEK #01 ADD #20 MOD .progress POK
|
|
|
|
#00 .timer POK
|
|
|
|
BRK
|
|
|
|
@silence ( -> )
|
|
|
|
BRK
|
|
|
|
( defines a sawtooth wave. )
|
|
|
|
@saw ( -> )
|
|
dfa0 df40 dee0 de80 de20 ddc0 dd60 dd00
|
|
dca0 dc40 dbe0 db80 db20 dac0 da60 da00
|
|
d9a0 d940 d8e0 d880 d820 d7c0 d760 d700
|
|
d6a0 d640 d5e0 d580 d520 d4c0 d460 d400
|
|
d3a0 d340 d2e0 d280 d220 d1c0 d160 d100
|
|
d0a0 d040 cfe0 cf80 cf20 cec0 ce60 ce00
|
|
cda0 cd40 cce0 cc80 cc20 cbc0 cb60 cb00
|
|
caa0 ca40 c9e0 c980 c920 c8c0 c860 c800
|
|
c7a0 c740 c6e0 c680 c620 c5c0 c560 c500
|
|
c4a0 c440 c3e0 c380 c320 c2c0 c260 c200
|
|
c1a0 c140 c0e0 c080 c020 bfc0 bf60 bf00
|
|
bea0 be40 bde0 bd80 bd20 bcc0 bc60 bc00
|
|
bba0 bb40 bae0 ba80 ba20 b9c0 b960 b900
|
|
b8a0 b840 b7e0 b780 b720 b6c0 b660 b600
|
|
b5a0 b540 b4e0 b480 b420 b3c0 b360 b300
|
|
b2a0 b240 b1e0 b180 b120 b0c0 b060 b000
|
|
afa0 af40 aee0 ae80 ae20 adc0 ad60 ad00
|
|
aca0 ac40 abe0 ab80 ab20 aac0 aa60 aa00
|
|
a9a0 a940 a8e0 a880 a820 a7c0 a760 a700
|
|
a6a0 a640 a5e0 a580 a520 a4c0 a460 a400
|
|
a3a0 a340 a2e0 a280 a220 a1c0 a160 a100
|
|
a0a0 a040 9fe0 9f80 9f20 9ec0 9e60 9e00
|
|
9da0 9d40 9ce0 9c80 9c20 9bc0 9b60 9b00
|
|
9aa0 9a40 99e0 9980 9920 98c0 9860 9800
|
|
97a0 9740 96e0 9680 9620 95c0 9560 9500
|
|
94a0 9440 93e0 9380 9320 92c0 9260 9200
|
|
91a0 9140 90e0 9080 9020 8fc0 8f60 8f00
|
|
8ea0 8e40 8de0 8d80 8d20 8cc0 8c60 8c00
|
|
8ba0 8b40 8ae0 8a80 8a20 89c0 8960 8900
|
|
88a0 8840 87e0 8780 8720 86c0 8660 8600
|
|
85a0 8540 84e0 8480 8420 83c0 8360 8300
|
|
82a0 8240 81e0 8180 8120 80c0 8060 8000
|
|
&end
|
|
|
|
BRK
|
|
|
|
( song data, #ff is used for a rest )
|
|
|
|
@melody [
|
|
54 52 54 4f 4b 4f 48 ff
|
|
54 52 54 4f 4b 4f 48 ff
|
|
54 56 57 56 57 54 56 54
|
|
56 52 54 52 54 50 54 ff
|
|
]
|
|
|
|
( dot sprite )
|
|
|
|
@dot [ 003c 7eff 7e3c 0000 ]
|