Commit 0c59726

Nick committed on
Even more WIP instruments
commit 0c59726fec15421b449c398c261c578128981bb7 parent 2ada4ce
4 changed files +250−230
Modifieddriver.z80 +58−37
@@ -94,7 +94,7 @@ SECTION "Vblank interrupt", ROM0[$0040]
94 reti 94 reti
95 95
96 SECTION "LCD controller status interrupt", ROM0[$0048] 96 SECTION "LCD controller status interrupt", ROM0[$0048]
97 jp _dosound 97 call _dosound
98 reti 98 reti
99 99
100 SECTION "Timer overflow interrupt", ROM0[$0050] 100 SECTION "Timer overflow interrupt", ROM0[$0050]
@@ -136,10 +136,10 @@ ENDM
136 SECTION "Song Data", ROM0 136 SECTION "Song Data", ROM0
137 ;; order_cnt is the number of orders times 2 137 ;; order_cnt is the number of orders times 2
138 order_cnt: db 2 138 order_cnt: db 2
139 order1: dw unreal, unreal, unreal 139 order1: dw empty, unreal, unreal
140 order2: dw empty, unreal_arps, unreal_arps 140 order2: dw unreal_arps, empty, unreal_arps
141 order3: dw empty 141 order3: dw empty, unreal_arps
142 order4: dw drums 142 order4: dw empty, empty
143 143
144 lunawaves: 144 lunawaves:
145 include "lunawaves.inc" 145 include "lunawaves.inc"
@@ -161,6 +161,10 @@ rept 16
161 dn 90, 0, 0 161 dn 90, 0, 0
162 dn 90, 0, 0 162 dn 90, 0, 0
163 dn 90, 0, 0 163 dn 90, 0, 0
164 dn 90, 0, 0
165 dn 90, 0, 0
166 dn 90, 0, 0
167 dn 90, 0, 0
164 endr 168 endr
165 walkup: 169 walkup:
166 _ASDF = C3 170 _ASDF = C3
@@ -256,16 +260,16 @@ square_instrument:
256 ;; Format for channel 3: 260 ;; Format for channel 3:
257 261
258 voice_instrument: 262 voice_instrument:
259 .length: db 263 .length: db 0
260 .volume: db 264 .volume: db %00100000
261 .wave: db 265 .wave: db 0
262 .unused: db 266 .unused: db 0
263 267
264 ;; Format for channel 4: 268 ;; Format for channel 4:
265 269
266 noise_instrument: 270 noise_instrument:
267 .length: db 0 271 .length: db 0
268 .envelope: db %11110001 272 .envelope: db %10100001
269 .step_and_ratio: db 0 273 .step_and_ratio: db 0
270 .unused: db 274 .unused: db
271 275
@@ -277,6 +281,8 @@ pattern4: dw
277 281
278 ticks_per_row: db 282 ticks_per_row: db
279 current_order: dw 283 current_order: dw
284 next_order: dw
285 row_break: db
280 286
281 ;; TODO: Find some way to get rid of this thing. 287 ;; TODO: Find some way to get rid of this thing.
282 temp_note_value: dw 288 temp_note_value: dw
@@ -438,7 +444,7 @@ load_pattern: MACRO
438 add hl, de 444 add hl, de
439 445
440 ld a, [hl+] 446 ld a, [hl+]
441 ld [\2], a 447 ld [\2], a
442 ld a, [hl+] 448 ld a, [hl+]
443 ld [\2+1], a 449 ld [\2+1], a
444 ENDM 450 ENDM
@@ -901,16 +907,12 @@ fx_pos_jump:
901 907
902 ;; free registers: A, D, E, H, L 908 ;; free registers: A, D, E, H, L
903 909
904 pop hl ;; remove return address 910 ld a, 1
905 pop hl ;; remove the AF pushed 911 ld [row_break], a
906
907 ;; when we return from here, it will be as if we returned from the main
908 ;; _dosound function
909
910 ld a, c 912 ld a, c
911 add a ;; double it, as orders are words 913 ld [next_order], a
912 914
913 jp _update_current_order 915 ret
914 916
915 fx_pattern_break: 917 fx_pattern_break:
916 ;; B: channel 918 ;; B: channel
@@ -918,20 +920,10 @@ fx_pattern_break:
918 920
919 ;; free registers: A, D, E, H, L 921 ;; free registers: A, D, E, H, L
920 922
921 pop hl ;; remove return address 923 ld a, c
922 pop hl ;; remove the AF pushed 924 ld [row_break], a
923
924 ;; when we return from here, it will be as if we returned from the main
925 ;; _dosound function
926
927 ld b, c
928
929 call _neworder
930
931 ld a, b
932 ld [row], a
933 925
934 reti 926 ret
935 927
936 ;; TODO: Fix this 928 ;; TODO: Fix this
937 fx_note_cut: 929 fx_note_cut:
@@ -1473,18 +1465,46 @@ process_tick:
1473 jp z, _newrow 1465 jp z, _newrow
1474 1466
1475 ld [tick], a 1467 ld [tick], a
1476 reti 1468 ret
1477 1469
1478 _newrow: 1470 _newrow:
1479 ;; Reset tick to 0 1471 ;; Reset tick to 0
1480 xor a ; ld a, 0 1472 xor a ; ld a, 0
1481 ld [tick], a 1473 ld [tick], a
1482 1474
1475 ;; Check if we need to perform a row break or pattern break
1476 ld a, [row_break]
1477 cp 0
1478 jr z, .no_break
1479
1480 ;; These are offset by one so we can check to see if they've
1481 ;; been modified
1482 dec a
1483 ld b, a
1484
1485 ld a, [next_order]
1486 cp 0
1487
1488 push af
1489 ld a, 0
1490 ld [next_order], a
1491 ld [row_break], a
1492 pop af
1493
1494 jr z, _neworder
1495
1496 dec a
1497 jr _update_current_order
1498
1499 .no_break:
1483 ;; Increment row. 1500 ;; Increment row.
1484 ld a, [row] 1501 ld a, [row]
1485 inc a 1502 inc a
1503 ld b, a
1486 cp PATTERN_LENGTH 1504 cp PATTERN_LENGTH
1487 jr nz, _noreset 1505 jr nz, _noreset
1506
1507 ld b, 0
1488 _neworder: 1508 _neworder:
1489 ;; Increment order and change loaded patterns 1509 ;; Increment order and change loaded patterns
1490 ld a, [order_cnt] 1510 ld a, [order_cnt]
@@ -1495,16 +1515,17 @@ _neworder:
1495 jr nz, _update_current_order 1515 jr nz, _update_current_order
1496 xor a ; ld a, 0 1516 xor a ; ld a, 0
1497 _update_current_order: 1517 _update_current_order:
1518 ;; Call with:
1519 ;; A: The order to load
1520 ;; B: The row for the order to start on
1498 ld [current_order], a 1521 ld [current_order], a
1499 ld c, a 1522 ld c, a
1500
1501 call _refresh_patterns 1523 call _refresh_patterns
1502 1524
1503 xor a ; ld a, 0
1504
1505 _noreset: 1525 _noreset:
1526 ld a, b
1506 ld [row], a 1527 ld [row], a
1507 reti 1528 ret
1508 1529
1509 _halt: 1530 _halt:
1510 ; Do nothing, forever 1531 ; Do nothing, forever
Modifiedlunawaves.inc +64−65
@@ -1,65 +1,64 @@
1 ;; lunawaves at sunset 1 dn A#5, 00, 00
2 db A#5 2 dn A#4, 00, 00
3 db A#4 3 dn F5 , 00, 00
4 db F5 4 dn A#5, 00, 00
5 db A#5 5 dn G#5, 00, 00
6 db G#5 6 dn A#4, 00, 00
7 db A#4 7 dn F5 , 00, 00
8 db F5 8 dn G#5, 00, 00
9 db G#5 9 dn G5 , 00, 00
10 db G5 10 dn A#4, 00, 00
11 db A#4 11 dn D#5, 00, 00
12 db D#5 12 dn G5 , 00, 00
13 db G5 13 dn G#5, 00, 00
14 db G#5 14 dn A#4, 00, 00
15 db A#4 15 dn F5 , 00, 00
16 db F5 16 dn G#5, 00, 00
17 db G#5 17 dn A#5, 00, 00
18 db A#5 18 dn A#4, 00, 00
19 db A#4 19 dn F5 , 00, 00
20 db F5 20 dn A#5, 00, 00
21 db A#5 21 dn G#5, 00, 00
22 db G#5 22 dn A#4, 00, 00
23 db A#4 23 dn F5 , 00, 00
24 db F5 24 dn G#5, 00, 00
25 db G#5 25 dn G5 , 00, 00
26 db G5 26 dn A#4, 00, 00
27 db A#4 27 dn D#5, 00, 00
28 db D#5 28 dn G5 , 00, 00
29 db G5 29 dn G#5, 00, 00
30 db G#5 30 dn A#4, 00, 00
31 db A#4 31 dn F5 , 00, 00
32 db F5 32 dn G#5, 00, 00
33 db G#5 33 dn A#5, 00, 00
34 db A#5 34 dn A#4, 00, 00
35 db A#4 35 dn F5 , 00, 00
36 db F5 36 dn A#5, 00, 00
37 db A#5 37 dn G#5, 00, 00
38 db G#5 38 dn A#4, 00, 00
39 db A#4 39 dn F5 , 00, 00
40 db F5 40 dn G#5, 00, 00
41 db G#5 41 dn G5 , 00, 00
42 db G5 42 dn A#4, 00, 00
43 db A#4 43 dn D#5, 00, 00
44 db D#5 44 dn G5 , 00, 00
45 db G5 45 dn G#5, 00, 00
46 db G#5 46 dn A#4, 00, 00
47 db A#4 47 dn F5 , 00, 00
48 db F5 48 dn G#5, 00, 00
49 db G#5 49 dn A#5, 00, 00
50 db A#5 50 dn A#4, 00, 00
51 db A#4 51 dn F5 , 00, 00
52 db F5 52 dn A#5, 00, 00
53 db A#5 53 dn G#5, 00, 00
54 db G#5 54 dn A#4, 00, 00
55 db A#4 55 dn F5 , 00, 00
56 db F5 56 dn G#5, 00, 00
57 db G#5 57 dn G5 , 00, 00
58 db G5 58 dn A#4, 00, 00
59 db A#4 59 dn D#5, 00, 00
60 db D#5 60 dn G5 , 00, 00
61 db G5 61 dn G#5, 00, 00
62 db G#5 62 dn A#4, 00, 00
63 db A#4 63 dn F5 , 00, 00
64 db F5 64 dn G#5, 00, 00
65 db G#5
Modifiedtfau_bass.inc +64−64
@@ -1,64 +1,64 @@
1 dn E3, 0, $F04 1 dn E3, 1, $F03
2 dn 90, 0, 0 2 dn 90, 1, 0
3 dn 90, 0, 0 3 dn 90, 1, 0
4 dn 90, 0, 0 4 dn 90, 1, 0
5 dn 90, 0, 0 5 dn 90, 1, 0
6 dn E3, 0, $C20 6 dn E3, 1, $C20
7 dn E4, 0, 0 7 dn E4, 1, 0
8 dn E4, 0, $C20 8 dn E4, 1, $C20
9 dn 90, 0, 0 9 dn 90, 1, 0
10 dn 90, 0, 0 10 dn 90, 1, 0
11 dn 90, 0, 0 11 dn 90, 1, 0
12 dn 90, 0, 0 12 dn 90, 1, 0
13 dn A3, 0, 0 13 dn A3, 1, 0
14 dn A3, 0, $C20 14 dn A3, 1, $C20
15 dn A3, 0, $C05 15 dn 90, 1, 0
16 dn A3, 0, $C00 16 dn 90, 1, 0
17 dn A#3, 0, 0 17 dn A#3,1, 0
18 dn B3, 0, $30A 18 dn B3, 1, $30A
19 dn 90, 0, $30A 19 dn 90, 1, $30A
20 dn 90, 0, 0 20 dn 90, 1, 0
21 dn 90, 0, 0 21 dn 90, 1, 0
22 dn B3, 0, $C20 22 dn B3, 1, $C20
23 dn D4, 0, 0 23 dn D4, 1, 0
24 dn D4, 0, $C20 24 dn D4, 1, $C20
25 dn 90, 0, 0 25 dn 90, 1, 0
26 dn 90, 0, 0 26 dn 90, 1, 0
27 dn D4, 0, 0 27 dn D4, 1, 0
28 dn D4, 0, $C20 28 dn D4, 1, $C20
29 dn F#3, 0, $C80 29 dn F#3,1, $C80
30 dn 90, 0, 0 30 dn 90, 1, 0
31 dn 90, 0, 0 31 dn 90, 1, 0
32 dn 90, 0, 0 32 dn 90, 1, 0
33 dn G3, 0, 0 33 dn G3, 1, 0
34 dn 90, 0, 0 34 dn 90, 1, 0
35 dn 90, 0, 0 35 dn 90, 1, 0
36 dn 90, 0, 0 36 dn 90, 1, 0
37 dn 90, 0, 0 37 dn 90, 1, 0
38 dn F#3, 0, $C20 38 dn F#3,1, $C20
39 dn G4, 0, 0 39 dn G4, 1, 0
40 dn G4, 0, $C20 40 dn G4, 1, $C20
41 dn 90, 0, 0 41 dn 90, 1, 0
42 dn 90, 0, 0 42 dn 90, 1, 0
43 dn 90, 0, 0 43 dn 90, 1, 0
44 dn 90, 0, 0 44 dn 90, 1, 0
45 dn A3, 0, 0 45 dn A3, 1, 0
46 dn A3, 0, $C20 46 dn A3, 1, $C20
47 dn A#3, 0, $C80 47 dn A#3,1, $C80
48 dn A#3, 0, $C20 48 dn A#3,1, $C20
49 dn A#3, 0, $101 49 dn A#3,1, $101
50 dn B3, 0, $30A 50 dn B3, 1, $30A
51 dn 90, 0, $30A 51 dn 90, 1, $30A
52 dn 90, 0, 0 52 dn 90, 1, 0
53 dn D4, 0, 0 53 dn D4, 1, 0
54 dn D4, 0, $C20 54 dn D4, 1, $C20
55 dn 90, 0, 0 55 dn 90, 1, 0
56 dn 90, 0, 0 56 dn 90, 1, 0
57 dn 90, 0, 0 57 dn 90, 1, 0
58 dn 90, 0, 0 58 dn 90, 1, 0
59 dn A3, 0, 0 59 dn A3, 1, 0
60 dn A3, 0, $C20 60 dn A3, 1, $C20
61 dn B3, 0, 0 61 dn B3, 1, 0
62 dn 90, 0, 0 62 dn 90, 1, 0
63 dn 90, 0, 0 63 dn 90, 1, 0
64 dn 90, 0, 0 64 dn 90, 1, $D01
Modifiedunreal_arps.inc +64−64
@@ -1,64 +1,64 @@
1 dn F5, 11, $037 1 dn F5, 1, $037
2 dn F5, 11, $037 2 dn F5, 1, $037
3 dn F5, 11, $037 3 dn F5, 1, $037
4 dn F5, 11, $037 4 dn F5, 1, $037
5 dn F5, 11, $037 5 dn F5, 1, $037
6 dn F5, 11, $037 6 dn F5, 1, $037
7 dn F5, 11, $037 7 dn F5, 1, $037
8 dn F5, 11, $037 8 dn F5, 1, $037
9 dn F5, 11, $037 9 dn F5, 1, $037
10 dn F5, 11, $037 10 dn F5, 1, $037
11 dn F5, 11, $037 11 dn F5, 1, $037
12 dn F5, 11, $037 12 dn F5, 1, $037
13 dn F5, 11, $037 13 dn F5, 1, $037
14 dn F5, 11, $037 14 dn F5, 1, $037
15 dn F5, 11, $037 15 dn F5, 1, $037
16 dn F5, 11, $037 16 dn F5, 1, $037
17 dn G#5, 11, $047 17 dn G#5, 1, $047
18 dn G#5, 11, $047 18 dn G#5, 1, $047
19 dn G#5, 11, $047 19 dn G#5, 1, $047
20 dn G#5, 11, $047 20 dn G#5, 1, $047
21 dn G#5, 11, $047 21 dn G#5, 1, $047
22 dn G#5, 11, $047 22 dn G#5, 1, $047
23 dn G#5, 11, $047 23 dn G#5, 1, $047
24 dn G#5, 11, $047 24 dn G#5, 1, $047
25 dn G#5, 11, $047 25 dn G#5, 1, $047
26 dn G#5, 11, $047 26 dn G#5, 1, $047
27 dn G#5, 11, $047 27 dn G#5, 1, $047
28 dn G#5, 11, $047 28 dn G#5, 1, $047
29 dn G#5, 11, $047 29 dn G#5, 1, $047
30 dn G#5, 11, $047 30 dn G#5, 1, $047
31 dn G#5, 11, $047 31 dn G#5, 1, $047
32 dn G#5, 11, $047 32 dn G#5, 1, $047
33 dn A#5, 11, $047 33 dn A#5, 1, $047
34 dn A#5, 11, $047 34 dn A#5, 1, $047
35 dn A#5, 11, $047 35 dn A#5, 1, $047
36 dn A#5, 11, $047 36 dn A#5, 1, $047
37 dn A#5, 11, $047 37 dn A#5, 1, $047
38 dn A#5, 11, $047 38 dn A#5, 1, $047
39 dn A#5, 11, $047 39 dn A#5, 1, $047
40 dn A#5, 11, $047 40 dn A#5, 1, $047
41 dn A#5, 11, $047 41 dn A#5, 1, $047
42 dn A#5, 11, $047 42 dn A#5, 1, $047
43 dn A#5, 11, $047 43 dn A#5, 1, $047
44 dn A#5, 11, $047 44 dn A#5, 1, $047
45 dn A#5, 11, $047 45 dn A#5, 1, $047
46 dn A#5, 11, $047 46 dn A#5, 1, $047
47 dn A#5, 11, $047 47 dn A#5, 1, $047
48 dn A#5, 11, $047 48 dn A#5, 1, $047
49 dn C6, 11, $047 49 dn C6, 1, $047
50 dn C6, 11, $047 50 dn C6, 1, $047
51 dn C6, 11, $047 51 dn C6, 1, $047
52 dn C6, 11, $047 52 dn C6, 1, $047
53 dn C6, 11, $047 53 dn C6, 1, $047
54 dn C6, 11, $047 54 dn C6, 1, $047
55 dn C6, 11, $047 55 dn C6, 1, $047
56 dn C6, 11, $047 56 dn C6, 1, $047
57 dn C6, 11, $047 57 dn C6, 1, $047
58 dn C6, 11, $047 58 dn C6, 1, $047
59 dn C6, 11, $047 59 dn C6, 1, $047
60 dn C6, 11, $047 60 dn C6, 1, $047
61 dn C6, 11, $047 61 dn C6, 1, $047
62 dn C6, 11, $047 62 dn C6, 1, $047
63 dn C6, 11, $047 63 dn C6, 1, $047
64 dn C6, 11, $047 64 dn C6, 1, $047