Commit 9c1db06

Nick committed on
More WIP on sound driver
commit 9c1db0627e5b694ba9cfa493dcefcbf2088585e4 parent 806bea4
3 changed files +194−105
Deleted3ify.py +0−8
@@ -1,8 +0,0 @@
1 orig = open('meaty.raw', 'rb').read()
2 newf = open('meaty2.raw', 'wb')
3
4 for byte in orig:
5 new = int((byte/255)*15)
6 newf.write(bytes([new]))
7
8 newf.close()
Modifieddriver.z80 +65−31
@@ -63,21 +63,23 @@ ENDR
63 63
64 ; Interrupt addresses 64 ; Interrupt addresses
65 SECTION "Vblank interrupt", ROM0[$0040] 65 SECTION "Vblank interrupt", ROM0[$0040]
66 jp _dosound 66 ; jp _dosound
67 reti 67 reti
68 68
69 SECTION "LCD controller status interrupt", ROM0[$0048] 69 SECTION "LCD controller status interrupt", ROM0[$0048]
70 jp _dosound
70 reti 71 reti
71 72
72 SECTION "Timer overflow interrupt", ROM0[$0050] 73 SECTION "Timer overflow interrupt", ROM0[$0050]
73 jp _dosound 74 ; jp _dosound
74 reti 75 reti
75 76
76 SECTION "Serial transfer completion interrupt", ROM0[$0058] 77 SECTION "Serial transfer completion interrupt", ROM0[$0058]
77 reti 78 reti
78 79
79 SECTION "P10-P13 signal low edge interrupt", ROM0[$0060] 80 SECTION "P10-P13 signal low edge interrupt", ROM0[$0060]
80 jp _dosound 81 ; jp _dosound
82 reti
81 83
82 ; Reserved stack space 84 ; Reserved stack space
83 SECTION "Stack", WRAM0[$d000 - STACK_SIZE] 85 SECTION "Stack", WRAM0[$d000 - STACK_SIZE]
@@ -101,16 +103,28 @@ DS 1
101 DB "NF" 103 DB "NF"
102 104
103 SECTION "Song Data", ROM0 105 SECTION "Song Data", ROM0
104 order_cnt: db 8 106 ;; order_cnt is the number of orders times 2
105 order1: dw unreal, lunawaves, lunawaves, unreal 107 order_cnt: db 2
106 order2: dw lunawaves, unreal, unreal, lunawaves 108 order1: dw unreal;, lunawaves, lunawaves, unreal
107 order3: dw unreal, lunawaves, lunawaves, unreal 109 order2: dw empty, unreal, unreal, lunawaves
108 order4: dw unreal, lunawaves, lunawaves, unreal 110 order3: dw empty, lunawaves, lunawaves, unreal
111 order4: dw empty, lunawaves, lunawaves, unreal
109 112
110 lunawaves: 113 lunawaves:
111 include "lunawaves.inc" 114 include "lunawaves.inc"
112 unreal: 115 unreal:
113 include "unreal.inc" 116 include "unreal.inc"
117 empty:
118 rept 64
119 db 90, 0, 0
120 endr
121 drums:
122 rept 16
123 db 44, 0, 0
124 db 90, 0, 0
125 db 90, 0, 0
126 db 90, 0, 0
127 endr
114 128
115 SECTION "Playback variables", WRAM0 129 SECTION "Playback variables", WRAM0
116 pattern1: dw 130 pattern1: dw
@@ -158,7 +172,7 @@ _init:
158 ld bc, `00000001 172 ld bc, `00000001
159 call _paint_tile 173 call _paint_tile
160 174
161 ;; Load some wave data into _AUD3WAVERAM 175 ;; Load some wave data (or code) into _AUD3WAVERAM
162 ld hl, $150 ;; note_table 176 ld hl, $150 ;; note_table
163 _addr = _AUD3WAVERAM 177 _addr = _AUD3WAVERAM
164 REPT 16 178 REPT 16
@@ -192,7 +206,14 @@ _addr = _addr + 1
192 ld a, TACF_START | TACF_4KHZ 206 ld a, TACF_START | TACF_4KHZ
193 ld [rTAC], a 207 ld [rTAC], a
194 208
195 ld a, IEF_VBLANK ; IEF_HILO | IEF_TIMER 209 ;; Enable the HBlank interrupt on scanline 0
210 ld a, [rSTAT]
211 or a, STATF_LYC
212 ld [rSTAT], a
213 ld a, 0
214 ld [rLYC], a
215
216 ld a, IEF_VBLANK | IEF_LCDC ; IEF_HILO | IEF_TIMER
196 ld [rIE], a 217 ld [rIE], a
197 ei 218 ei
198 219
@@ -226,6 +247,10 @@ _lookup_note:
226 247
227 ;; Stores note value in H and L 248 ;; Stores note value in H and L
228 ld a, [row] 249 ld a, [row]
250 ld h, a
251 ;; Multiply by 3 for the note value
252 add h
253 add h
229 254
230 ld h, 0 255 ld h, 0
231 ld l, a 256 ld l, a
@@ -235,7 +260,7 @@ _lookup_note:
235 cp LAST_NOTE 260 cp LAST_NOTE
236 jp c, .note_exists 261 jp c, .note_exists
237 262
238 ;; Pop the return pointer off the stack and get the one the caller pushed 263 ;; Pop the return pointer off the stack and get the one the caller pushed if it's a nonexistent note
239 pop hl 264 pop hl
240 ld hl, 0 265 ld hl, 0
241 ret 266 ret
@@ -259,9 +284,12 @@ _playnote1:
259 284
260 ;; Play a note on channel 1 (square wave) 285 ;; Play a note on channel 1 (square wave)
261 286
287 ; ld a, %01111001
288 ; ld [rAUD1SWEEP], a
289
262 ld a, %11111111 ; $10 290 ld a, %11111111 ; $10
263 ldh [rAUD1LEN], a 291 ldh [rAUD1LEN], a
264 ld a, %00110000 292 ld a, %11110000
265 ldh [rAUD1ENV], a 293 ldh [rAUD1ENV], a
266 294
267 ld a, l 295 ld a, l
@@ -307,9 +335,9 @@ _playnote4:
307 335
308 ;; Play a "note" on channel 4 (noise) 336 ;; Play a "note" on channel 4 (noise)
309 337
310 ld a, 1 338 ld a, %00011111
311 ld [rAUD4LEN], a 339 ld [rAUD4LEN], a
312 ld a, %11110111 340 ld a, %11110001
313 ldh [rAUD4ENV], a 341 ldh [rAUD4ENV], a
314 ld a, l; %01000100 342 ld a, l; %01000100
315 ldh [rAUD4POLY], a 343 ldh [rAUD4POLY], a
@@ -327,7 +355,6 @@ ENDM
327 355
328 _dosound: 356 _dosound:
329 ld a, [tick] 357 ld a, [tick]
330 ld c, a
331 cp 0 358 cp 0
332 jp nz, _process_tick 359 jp nz, _process_tick
333 360
@@ -342,31 +369,38 @@ _dosound:
342 push hl 369 push hl
343 loadShort pattern1, d, e 370 loadShort pattern1, d, e
344 call _lookup_note 371 call _lookup_note
372 pop de
345 call _playnote1 373 call _playnote1
346 374
347 _after_note1: 375 _after_note1:
348 ; ld hl, _after_note2 376 ld hl, _after_note2
349 ; push hl 377 push hl
350 ; loadShort pattern2, d, e 378 loadShort pattern2, d, e
351 ; call _lookup_note 379 call _lookup_note
352 ; call _playnote2 380 pop de
381 call _playnote2
353 382
354 _after_note2: 383 _after_note2:
355 ; ld hl, _after_note3 384 ld hl, _after_note3
356 ; push hl 385 push hl
357 ; loadShort pattern3, d, e 386 loadShort pattern3, d, e
358 ; call _lookup_note 387 call _lookup_note
359 ; call _playnote3 388 pop de
389 call _playnote3
360 390
361 _after_note3: 391 _after_note3:
362 ; ld hl, _process_tick 392 ld hl, _process_tick
363 ; push hl 393 push hl
364 ; loadShort pattern4, d, e 394 loadShort pattern4, d, e
365 ; call _lookup_note 395 call _lookup_note
366 ; call _playnote4 396 pop de
397 call _playnote4
367 398
368 _process_tick: 399 _process_tick:
369 ld a, c 400 ;; Process effect commands
401
402
403 ld a, [tick]
370 inc a 404 inc a
371 405
372 cp TICKS 406 cp TICKS
Modifiedunreal.inc +129−66
@@ -1,73 +1,136 @@
1 note: MACRO ;; (note, instr, effect) 1 dn: MACRO ;; (note, instr, effect)
2 db \1 2 db \1
3 db ((\2 << 4) | (\3 >> 8)) 3 db ((\2 << 4) | (\3 >> 8))
4 db LOW(\3) 4 db LOW(\3)
5 ENDM 5 ENDM
6 6
7 ; ;; unreal superhero 7 ; ;; unreal superhero
8 note F4, 01, $A01 8 dn F6, 11, $000
9 dn G#6,00, $332
10 dn C7, 00, $300
11 dn F7, 00, $300
12 dn G#7,00, $300
13 dn F7, 00, $300
14 dn C7, 00, $300
15 dn G#6,00, $300
16 dn F6, 00, $300
17 dn G#6,00, $300
18 dn C7, 00, $300
19 dn F7, 00, $300
20 dn G#7,00, $300
21 dn F7, 00, $300
22 dn C7, 00, $300
23 dn G#6,00, $300
24 dn F6, 00, $300
25 dn C7, 00, $300
26 dn D#7,00, $300
27 dn G#7,00, $300
28 dn C8, 00, $300
29 dn G#7,00, $300
30 dn D#7,00, $300
31 dn C7, 00, $300
32 dn G#6,00, $300
33 dn C7, 00, $300
34 dn D#7,00, $300
35 dn G#7,00, $300
36 dn C8, 00, $300
37 dn G#7,00, $300
38 dn D#7,00, $300
39 dn C7, 00, $300
40 dn A#6,00, $300
41 dn D7, 00, $300
42 dn F7, 00, $300
43 dn A#7,00, $300
44 dn D8, 00, $300
45 dn A#7,00, $300
46 dn F7, 00, $300
47 dn D7, 00, $300
48 dn A#6,00, $300
49 dn D7, 00, $300
50 dn F7, 00, $300
51 dn A#7,00, $300
52 dn D8, 00, $300
53 dn A#7,00, $300
54 dn F7, 00, $300
55 dn D7, 00, $300
56 dn F6, 00, $300
57 dn C7, 00, $300
58 dn F7, 00, $300
59 dn C8, 00, $300
60 dn F8, 00, $300
61 dn C8, 00, $300
62 dn F7, 00, $300
63 dn C7, 00, $300
64 dn F6, 00, $300
65 dn C7, 00, $300
66 dn F7, 00, $300
67 dn C8, 00, $300
68 dn F8, 00, $300
69 dn C8, 00, $300
70 dn F7, 00, $300
71 dn C7, 00, $300
9 72
10 db F4 73 ; db F4
11 db G#4 74 ; db G#4
12 db C5 75 ; db C5
13 db F5 76 ; db F5
14 db G#5 77 ; db G#5
15 db F5 78 ; db F5
16 db C5 79 ; db C5
17 db G#4 80 ; db G#4
18 db F4 81 ; db F4
19 db G#4 82 ; db G#4
20 db C5 83 ; db C5
21 db F5 84 ; db F5
22 db G#5 85 ; db G#5
23 db F5 86 ; db F5
24 db C5 87 ; db C5
25 db G#4 88 ; db G#4
26 db F4 89 ; db F4
27 db C5 90 ; db C5
28 db D#5 91 ; db D#5
29 db G#5 92 ; db G#5
30 db C6 93 ; db C6
31 db G#5 94 ; db G#5
32 db D#5 95 ; db D#5
33 db C5 96 ; db C5
34 db G#4 97 ; db G#4
35 db C5 98 ; db C5
36 db D#5 99 ; db D#5
37 db G#5 100 ; db G#5
38 db C6 101 ; db C6
39 db G#5 102 ; db G#5
40 db D#5 103 ; db D#5
41 db C5 104 ; db C5
42 db A#4 105 ; db A#4
43 db D5 106 ; db D5
44 db F5 107 ; db F5
45 db A#5 108 ; db A#5
46 db D6 109 ; db D6
47 db A#5 110 ; db A#5
48 db F5 111 ; db F5
49 db D5 112 ; db D5
50 db A#4 113 ; db A#4
51 db D5 114 ; db D5
52 db F5 115 ; db F5
53 db A#5 116 ; db A#5
54 db D6 117 ; db D6
55 db A#5 118 ; db A#5
56 db F5 119 ; db F5
57 db D5 120 ; db D5
58 db F4 121 ; db F4
59 db C5 122 ; db C5
60 db F5 123 ; db F5
61 db C6 124 ; db C6
62 db F6 125 ; db F6
63 db C6 126 ; db C6
64 db F5 127 ; db F5
65 db C5 128 ; db C5
66 db F4 129 ; db F4
67 db C5 130 ; db C5
68 db F5 131 ; db F5
69 db C6 132 ; db C6
70 db F6 133 ; db F6
71 db C6 134 ; db C6
72 db F5 135 ; db F5
73 db C5 136 ; db C5