... | ... |
@@ -7,7 +7,6 @@ |
7 | 7 |
%MOD { DUP2 DIV MUL SUB } |
8 | 8 |
%TRACK { ,track.ch1 #00 ~track.active #0020 MUL2 ADD2 } |
9 | 9 |
%SOUND { STH #00 =Audio.value STHr #00 =Audio.delay } |
10 |
-%SOUND2 { =Audio.value =Audio.delay } |
|
11 | 10 |
%SOUND_FINISH { #00 =Audio.finish } |
12 | 11 |
|
13 | 12 |
( variables ) |
... | ... |
@@ -30,19 +29,21 @@ |
30 | 29 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 } |
31 | 30 |
|0110 ;Console { pad 8 char 1 byte 1 short 2 } |
32 | 31 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 } |
33 |
-|0130 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 } |
|
34 |
-|0140 ;Controller { buttons 1 } |
|
35 |
-|0150 ;Keys { key 1 } |
|
32 |
+|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 } |
|
33 |
+|0140 ;Controller { vector 2 button 1 } |
|
34 |
+|0150 ;Keys { vector 2 key 1 } |
|
36 | 35 |
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 } |
37 | 36 |
|0170 ;File { pad 8 name 2 length 2 load 2 save 2 } |
38 | 37 |
|0180 ;Audio { wave 2 envelope 2 pad 4 volume 1 pitch 1 play 1 value 2 delay 2 finish 1 } |
39 | 38 |
|
40 | 39 |
( vectors ) |
41 | 40 |
|
42 |
-|0200 @RESET |
|
41 |
+|0200 |
|
43 | 42 |
|
44 | 43 |
( theme ) #e0fa =System.r #30fa =System.g #30fa =System.b |
45 |
- ( vectors ) ,FRAME =Screen.vector |
|
44 |
+ ( vectors ) ,on-screen =Screen.vector |
|
45 |
+ ( vectors ) ,on-mouse =Mouse.vector |
|
46 |
+ ( vectors ) ,on-key =Keys.vector |
|
46 | 47 |
|
47 | 48 |
~Screen.width #0002 DIV2 DUP2 #0080 SUB2 =trkframe.x1 |
48 | 49 |
#0080 ADD2 =trkframe.x2 |
... | ... |
@@ -61,19 +62,25 @@ |
61 | 62 |
#10 =adsr.ch2a #50 =adsr.ch2d #90 =adsr.ch2s #d0 =adsr.ch2r #88 =volume.ch2 |
62 | 63 |
#20 =adsr.ch3a #60 =adsr.ch3d #a0 =adsr.ch3s #e0 =adsr.ch3r #88 =volume.ch3 |
63 | 64 |
|
65 |
+ ~volume.ch3 =Audio.volume |
|
66 |
+ |
|
64 | 67 |
,draw-timeline JSR2 |
65 | 68 |
,draw-controls JSR2 |
66 | 69 |
,draw-channels JSR2 |
67 | 70 |
|
68 | 71 |
BRK |
69 | 72 |
|
70 |
-@FRAME |
|
73 |
+@on-screen ( -> ) |
|
71 | 74 |
|
72 |
- ,draw-cursor JSR2 |
|
73 | 75 |
,move-head JSR2 |
74 | 76 |
~head.pos #08 MOD #00 NEQ ^$skip JNZ |
75 | 77 |
,bang JSR2 |
76 | 78 |
$skip |
79 |
+ |
|
80 |
+BRK |
|
81 |
+ |
|
82 |
+@on-mouse ( -> ) |
|
83 |
+ |
|
77 | 84 |
~Mouse.state #00 EQU ,$click-end JNZ2 |
78 | 85 |
~Mouse.x ~trkframe.x1 GTH2 ~Mouse.x ~trkframe.x2 LTH2 #0101 EQU2 |
79 | 86 |
~Mouse.y ~trkframe.y1 GTH2 ~Mouse.y ~trkframe.y2 LTH2 #0101 EQU2 |
... | ... |
@@ -86,8 +93,41 @@ BRK |
86 | 93 |
#0101 EQU2 ,touch-ctl JNZ2 |
87 | 94 |
$click-end |
88 | 95 |
|
96 |
+ ,draw-cursor JSR2 |
|
97 |
+ |
|
89 | 98 |
BRK |
90 | 99 |
|
100 |
+@on-key ( -> ) |
|
101 |
+ |
|
102 |
+ ~Keys.key |
|
103 |
+ DUP #61 NEQ ^$no-c JNZ |
|
104 |
+ ,notes PEK2 ,play JSR2 $no-c |
|
105 |
+ DUP #73 NEQ ^$no-d JNZ |
|
106 |
+ ,notes #0001 ADD2 PEK2 ,play JSR2 $no-d |
|
107 |
+ DUP #64 NEQ ^$no-e JNZ |
|
108 |
+ ,notes #0002 ADD2 PEK2 ,play JSR2 $no-e |
|
109 |
+ DUP #66 NEQ ^$no-f JNZ |
|
110 |
+ ,notes #0003 ADD2 PEK2 ,play JSR2 $no-f |
|
111 |
+ DUP #67 NEQ ^$no-g JNZ |
|
112 |
+ ,notes #0004 ADD2 PEK2 ,play JSR2 $no-g |
|
113 |
+ DUP #68 NEQ ^$no-a JNZ |
|
114 |
+ ,notes #0005 ADD2 PEK2 ,play JSR2 $no-a |
|
115 |
+ DUP #6a NEQ ^$no-b JNZ |
|
116 |
+ ,notes #0006 ADD2 PEK2 ,play JSR2 $no-b |
|
117 |
+ DUP #6b NEQ ^$no-c2 JNZ |
|
118 |
+ ,notes #0007 ADD2 PEK2 ,play JSR2 $no-c2 |
|
119 |
+ POP |
|
120 |
+ |
|
121 |
+BRK |
|
122 |
+ |
|
123 |
+@play ( pitch -- ) |
|
124 |
+ |
|
125 |
+ =Audio.pitch |
|
126 |
+ ,triangle-wave =Audio.wave |
|
127 |
+ ~track.active =Audio.play |
|
128 |
+ |
|
129 |
+RTN |
|
130 |
+ |
|
91 | 131 |
@touch-trk ( -- ) |
92 | 132 |
|
93 | 133 |
,clear-notes JSR2 |