-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPULSESFX.prj
More file actions
307 lines (286 loc) · 3.58 KB
/
PULSESFX.prj
File metadata and controls
307 lines (286 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
'PULSESFX
'B0-BF CHIP SFX VARIANTS
'USING OLD STYLE SONIX VOLSEQ/ORNAMENTS
'16*16 FOR ORNAMENTS 256 8000
'8*8 FOR VOLSEQS 64 8100
'PARAMS(4)*32 EFFECTS 128 8140
' 448
'CHB OFFSET 7
'CHANNEL B 1
'VOLSEQ NUM 3
'VOLSEQ TEMPO 4
'REPEAT 1
'ORNAMENT 4
'ORNAMENT TEMPO 4
'ORIGINAL NOTE 8
'B0 TEMP
'B1 SAMPLE OFFSET
'B2 REPEAT FLAG
'B3 ORNAMENT OFFSET
'B4 ORNAMENT OFFSET REF
'B5 SAMPLE TEMPO
'B6 SAMPLE TEMPO REF
'B7 ORNAMENT TEMPO
'B8 ORNAMENT TEMPO REF
'B9 ORIGINAL NOTE
'BA CHB OFFSET
'BB TEMP
'BC TEMP
'BD-BE ORIGINAL PITCH
'BF KEY REGISTER
'A0 NIBBLE AND END FLAG
'A1 SAMPLE LENGTH HI
'A2 SLOW IRQ COUNTER
'A3 Y STORE
'A4 A STORE
'BFE0 SFX (+80 IF CAPTURED)
'Samples are as follows
'frenchfirst2.wav
'Big Bat
'Extra Life
'Eat Pulse
'Slow Pulse
'frenchf.wav
'Level
'Game-Over
'Bonus
'Score
'Barrier
'Speedup
'Invincible
'Paused
'Resume
:AY_REGISTER
[020304050607090A0E]
&SAMPLE_IRQ
STA A4
&SIRQ_01 LDA BF00
BIT A0
BMI &SIRQ_02
BVC 04
LSR
LSR
LSR
LSR
AND #0F
STA 030F
LDA #40
STA A0
BVC &SIRQ_02
INC &SIRQ_01+1
BNE &SIRQ_02
INC &SIRQ_01+2
&SIRQ_04 DEC A1
BNE &SIRQ_02
LDA #80
STA A0
&SIRQ_02 DEC A2
BNE &SIRQ_03
LDA #$50
STA A2
STY A3
JSR &CHIPSFX_IRQ
LDY A3
&SIRQ_03 LDA 0304
LDA A4
RTI 'AVERAGE 73 CYCLES
&INIT_SMP AND #0F 'STORE SAMPLE ADDRESS
TAY
LDA :SAMPLE_LO,Y
STA &SIRQ_01+1
LDA :SAMPLE_HI,Y
STA &SIRQ_01+2
LDA #00 'NIBBLE LOW, CONTINUE
STA A0
LDA #80 'EFX CAPTURED
STA BFE0
RTS
CHIPSFX_IRQ 'CHECK FOR NEW EFFECT
LDA BFE0
BMI &CSI_01
CMP #20
BCS &INIT_SMP
ASL
ASL
TAY
LDA #80
STA BFE0
LDA 9140,Y
AND #07
ASL
ASL
ASL
STA B1
LDA 9140,Y
AND #08
STA B2
LDA 9140,Y
AND #F0
STA B3
STA B4
LDA 9141,Y
AND #0F
STA B5
STA B6
LDA 9141,Y
LSR
LSR
LSR
LSR
STA B7
STA B8
LDA 9142,Y
AND #7F
STA B9
JSR &CALC_PITCH
AND #0F
STA BD
LDA BC
STA BE
LDA 9142,Y
AND #80
BEQ
LDA #02
EOR #02
ORA #%01111001
STA BFE6
LDA 9143,Y
LSR
STA BA
&CSI_01 DEC B5 'PROCESS VOLSEQ
BPL &CSI_04
LDA B6
STA B5
LDY B1
LDA 9100,Y
BEQ &CSI_04
AND #0F
STA BFE7
LDA 9100,Y
AND #F0
LSR
LSR
LSR
STA BFE5
BEQ &CSI_02
LDA BFE6
AND #%11001111
STA BFE6
JMP &CSI_03
&CSI_02 LDA BFE6
ORA #%00110000
STA BFE6
&CSI_03 INY
STY B1
&CSI_04 DEC B7 'PROCESS ORNAMENT
BPL &CSI_07
LDA B8
STA B7
LDY B3
LDA 9000,Y
BNE &CSI_05
LDA B2
BEQ &CSI_07
LDY B4
STY B3
CLC
LDA 9000,Y
BEQ &CSI_07
&CSI_05 BMI &CSI_06 'PITCH OFFSET
ADC B9
JSR &CALC_PITCH 'Y=HI A=LO
STA BFE3
STY BFE4
CLC
ADC BA
STA BFE1
BCC 01
INY
STY BFE2
LDY B3
JMP &CSI_07
&CSI_06 ADC BD
STA BFE3
LDA BFE4
ADC #00
AND #0F
STA BFE4
LDA BFE3
ADC BA
STA BFE1
LDA BFE4
ADC #00
AND #0F
STA BFE2
&CSI_07 INY
STY B3
&SEND_AY LDY #07 'SEND AY REGISTER
&SAY_01 LDA #FF
STA 030C
LDA :AY_REGISTER,Y
STA 030F
LDA #DD
STA 030C
LDA BFE1,Y
STA 030F
LDA #FD
STA 030C
DEY
BPL &SAY_01
STY 030C 'CHECK ON KEY READ
DEC ;KEY_DELAY
BNE &SAY_03
LDA #0E 'READ THE KEYBOARD
STA 030F
LDA #00
STA BF
LDA #FD
STA 030C
LDA #10
STA ;KEY_DELAY
LDY #04
&SAY_02 LDA :KEY_COL,Y
STA 030F
LDA :KEY_ROW,Y
STA 0300
LDA 0300
AND #08
BNE &SAY_04
DEY
BPL &SAY_02
JMP &SAY_05
&SAY_04 LDA :KEY_BIT,Y 'REGISTER THE KEY
STA BF
&SAY_05 LDA #FF
STA 030C
&SAY_03 LDA #08 'RESET CHANNEL TO VOLA
STA 030F 'AND RESTORE SAMPLE WRITING
LDA #DD
STA 030C
LDA #08
STA 030F
LDA #FD
STA 030C
RTS
&CALC_PITCH
AND #7F
LDY #FF
SEC
&FNT_01 INY
SBC #0C
BCS &FNT_01
ADC #0C
STY BB
TAY
LDA :BASE_NOTE_LO,Y
STA BC
LDA :BASE_NOTE_HI,Y
LDY BB
BEQ &
&FNT_02 LSR
ROR BC
DEY
BNE &FNT_02
TAY
LDA BC
RTS