Skip to content

Commit 6acbd93

Browse files
committed
Transition to AES or MVS pitch tables for NSS
Added dedicated pitch tables to generate the exact frequency specific in Furnace modules based on the YM2610 clock used by the hardware (either AES or MVS). Modify furtool to generate Delta-N values that are based on the clock used by Furnace modules (AES or MVS). By default, we stick to the AES tables but a future commit will transition to MVS by default and a provide a dedicated nullsound library for targeting AES clocks. The generated tables are included in this commit, so are the input scripts used to generate the tables.
1 parent ea3bce1 commit 6acbd93

19 files changed

Lines changed: 44938 additions & 109 deletions

nullsound/Makefile.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ all: nullsound.lib linkcheck.map
1919
-include ../Makefile.config
2020

2121
INCLUDE_FILES=helpers ports ym2610
22-
OBJS=entrypoint memory bios-commands adpcm ym2610 stream timer utils nss-fm nss-ssg nss-adpcm-a nss-adpcm-b fx-vibrato fx-slide fx-trigger fx-arpeggio fx-legato volume
22+
OBJS=entrypoint-aes memory bios-commands adpcm ym2610 stream timer utils nss-fm nss-ssg nss-adpcm-a nss-adpcm-b fx-vibrato fx-slide fx-trigger fx-arpeggio fx-legato volume
2323
LIB=nullsound.lib
2424

2525
VERSION=@version@
@@ -38,6 +38,9 @@ linkcheck.map: $(LIB)
3838
$(LIB): $(OBJS:%=%.rel)
3939
cat $^ > $@
4040

41+
entrypoint-aes.rel: entrypoint.s
42+
$(NGSDAS) -a -g -l -p -s -u -Iaes -o $@ $<
43+
4144
%.rel: %.s
4245
$(NGSDAS) -a -g -l -p -s -u -o $@ $<
4346

nullsound/aes/fm-tables.inc

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
;;; FM pitched note tables (AES) for nullsound, the ngdevkit sound driver
2+
;;; Generated with build-pitch-tables.py
3+
;;;
4+
5+
.macro .fm_fnum_deltas_data
6+
.dw 0x0000, 0x01f1, 0x03e3, 0x05d5, 0x07c7, 0x09b9, 0x0bac, 0x0d9e
7+
.dw 0x0f92, 0x1185, 0x1378, 0x156c, 0x1760, 0x1954, 0x1b49, 0x1d3d
8+
.dw 0x1f32, 0x2127, 0x231c, 0x2512, 0x2708, 0x28fe, 0x2af4, 0x2cea
9+
.dw 0x2ee1, 0x30d8, 0x32cf, 0x34c6, 0x36be, 0x38b6, 0x3aae, 0x3ca6
10+
.dw 0x3e9e, 0x4097, 0x4290, 0x4489, 0x4683, 0x487c, 0x4a76, 0x4c70
11+
.dw 0x4e6a, 0x5065, 0x5260, 0x545b, 0x5656, 0x5851, 0x5a4d, 0x5c49
12+
.dw 0x5e45, 0x6041, 0x623e, 0x643b, 0x6638, 0x6835, 0x6a33, 0x6c30
13+
.dw 0x6e2e, 0x702c, 0x722b, 0x742a, 0x7628, 0x7828, 0x7a27, 0x7c27
14+
.dw 0x7e26, 0x8026, 0x8227, 0x8427, 0x8628, 0x8829, 0x8a2a, 0x8c2c
15+
.dw 0x8e2d, 0x902f, 0x9231, 0x9434, 0x9636, 0x9839, 0x9a3c, 0x9c3f
16+
.dw 0x9e43, 0xa047, 0xa24b, 0xa44f, 0xa653, 0xa858, 0xaa5d, 0xac62
17+
.dw 0xae67, 0xb06d, 0xb273, 0xb479, 0xb67f, 0xb886, 0xba8d, 0xbc94
18+
.dw 0xbe9b, 0xc0a2, 0xc2aa, 0xc4b2, 0xc6ba, 0xc8c3, 0xcacb, 0xccd4
19+
.dw 0xcedd, 0xd0e7, 0xd2f0, 0xd4fa, 0xd704, 0xd90f, 0xdb19, 0xdd24
20+
.dw 0xdf2f, 0xe13a, 0xe346, 0xe551, 0xe75d, 0xe96a, 0xeb76, 0xed83
21+
.dw 0xef90, 0xf19d, 0xf3aa, 0xf5b8, 0xf7c6, 0xf9d4, 0xfbe2, 0xfdf1
22+
.endm
23+
24+
.macro .fm_fnums_data
25+
.db 0xf0, 0x52, 0x26 ; C-n
26+
.db 0x55, 0x9a, 0x28 ; C#n
27+
.db 0x68, 0x04, 0x2b ; D-n
28+
.db 0x3d, 0x93, 0x2d ; D#n
29+
.db 0x02, 0x49, 0x30 ; E-n
30+
.db 0x08, 0x28, 0x33 ; F-n
31+
.db 0xc3, 0x32, 0x36 ; F#n
32+
.db 0xcd, 0x6b, 0x39 ; G-n
33+
.db 0xe7, 0xd5, 0x3c ; G#n
34+
.db 0xf7, 0x73, 0x40 ; A-n
35+
.db 0x1b, 0x49, 0x44 ; A#n
36+
.db 0x98, 0x58, 0x48 ; B-n
37+
.endm
38+
39+
.macro .fm_dists_data
40+
.db 0x65, 0x47, 0x02 ; C-n
41+
.db 0x13, 0x6a, 0x02 ; C#n
42+
.db 0xd5, 0x8e, 0x02 ; D-n
43+
.db 0xc5, 0xb5, 0x02 ; D#n
44+
.db 0x06, 0xdf, 0x02 ; E-n
45+
.db 0xbb, 0x0a, 0x03 ; F-n
46+
.db 0x0a, 0x39, 0x03 ; F#n
47+
.db 0x1a, 0x6a, 0x03 ; G-n
48+
.db 0x10, 0x9e, 0x03 ; G#n
49+
.db 0x24, 0xd5, 0x03 ; A-n
50+
.db 0x7d, 0x0f, 0x04 ; A#n
51+
.db 0x4b, 0x4d, 0x04 ; B-n
52+
.endm

nullsound/aes/ssg-tables.inc

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
;;; SSG pitched note tables (AES) for nullsound, the ngdevkit sound driver
2+
;;; Generated with build-pitch-tables.py
3+
;;;
4+
5+
.macro .ssg_tune_deltas_data
6+
.dw 0x0000, 0x020e, 0x041d, 0x062b, 0x0839, 0x0a47, 0x0c55, 0x0e62
7+
.dw 0x106f, 0x127c, 0x1489, 0x1695, 0x18a2, 0x1aae, 0x1cb9, 0x1ec5
8+
.dw 0x20d0, 0x22db, 0x24e6, 0x26f0, 0x28fb, 0x2b05, 0x2d0f, 0x2f18
9+
.dw 0x3122, 0x332b, 0x3534, 0x373c, 0x3945, 0x3b4d, 0x3d55, 0x3f5d
10+
.dw 0x4164, 0x436b, 0x4572, 0x4779, 0x4980, 0x4b86, 0x4d8c, 0x4f92
11+
.dw 0x5198, 0x539d, 0x55a2, 0x57a7, 0x59ac, 0x5bb0, 0x5db4, 0x5fb8
12+
.dw 0x61bc, 0x63c0, 0x65c3, 0x67c6, 0x69c9, 0x6bcb, 0x6dce, 0x6fd0
13+
.dw 0x71d2, 0x73d3, 0x75d5, 0x77d6, 0x79d7, 0x7bd8, 0x7dd8, 0x7fd9
14+
.dw 0x81d9, 0x83d8, 0x85d8, 0x87d7, 0x89d7, 0x8bd5, 0x8dd4, 0x8fd3
15+
.dw 0x91d1, 0x93cf, 0x95cc, 0x97ca, 0x99c7, 0x9bc4, 0x9dc1, 0x9fbe
16+
.dw 0xa1ba, 0xa3b6, 0xa5b2, 0xa7ae, 0xa9a9, 0xaba4, 0xad9f, 0xaf9a
17+
.dw 0xb195, 0xb38f, 0xb589, 0xb783, 0xb97c, 0xbb76, 0xbd6f, 0xbf68
18+
.dw 0xc161, 0xc359, 0xc551, 0xc749, 0xc941, 0xcb39, 0xcd30, 0xcf27
19+
.dw 0xd11e, 0xd315, 0xd50b, 0xd701, 0xd8f7, 0xdaed, 0xdce3, 0xded8
20+
.dw 0xe0cd, 0xe2c2, 0xe4b6, 0xe6ab, 0xe89f, 0xea93, 0xec87, 0xee7a
21+
.dw 0xf06d, 0xf261, 0xf453, 0xf646, 0xf838, 0xfa2a, 0xfc1c, 0xfe0e
22+
.endm
23+
24+
.macro .ssg_dists_lsb_data
25+
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
26+
.dw 0x806e, 0xbe70, 0x0754, 0x5a80, 0xb75f, 0x1d66, 0x8c11, 0x02e4, 0x816a, 0x0735, 0x93db, 0x26fb, 0, 0, 0, 0
27+
.dw 0x806e, 0xbe70, 0x0754, 0x5a80, 0xb75f, 0x1d66, 0x8c11, 0x02e4, 0x816a, 0x0735, 0x93db, 0x26fb, 0, 0, 0, 0
28+
.dw 0xc037, 0x5f38, 0x03aa, 0xad40, 0x5bb0, 0x0eb3, 0xc608, 0x8172, 0x40b5, 0x039b, 0xc9f0, 0x937b, 0, 0, 0, 0
29+
.dw 0x601b, 0x2f9c, 0x01d5, 0xd6a0, 0xadd8, 0x875a, 0x6304, 0x40b9, 0x205a, 0x01ce, 0xe4f9, 0xc9bc, 0, 0, 0, 0
30+
.dw 0xb00e, 0x97ce, 0x80ea, 0x6b50, 0x56ec, 0x43ad, 0x3182, 0x205d, 0x102d, 0x00e7, 0xf27b, 0xe4df, 0, 0, 0, 0
31+
.dw 0xd807, 0xcbe7, 0xc075, 0xb5a8, 0xab76, 0xa1d7, 0x98c1, 0x902e, 0x8817, 0x8073, 0x793e, 0x726f, 0, 0, 0, 0
32+
.dw 0x6c04, 0x65f3, 0x603b, 0x5ad4, 0x55bb, 0x50eb, 0x4c61, 0x4817, 0x440b, 0x403a, 0x3c9f, 0x3937, 0, 0, 0, 0
33+
.dw 0x3602, 0x32fa, 0x301d, 0x2d6a, 0x2ade, 0x2875, 0x2631, 0x240b, 0x2206, 0x201d, 0x1e4f, 0x1c9c, 0, 0, 0, 0
34+
.endm
35+
36+
.macro .ssg_tunes_msb_data
37+
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
38+
.dw 0xf08f, 0xe30f, 0xd650, 0xca49, 0xbeef, 0xb437, 0xaa1a, 0xa08e, 0x978b, 0x8f09, 0x8702, 0x7f6e, 0, 0, 0, 0
39+
.dw 0xf08f, 0xe30f, 0xd650, 0xca49, 0xbeef, 0xb437, 0xaa1a, 0xa08e, 0x978b, 0x8f09, 0x8702, 0x7f6e, 0, 0, 0, 0
40+
.dw 0x7847, 0x7187, 0x6b28, 0x6524, 0x5f77, 0x5a1b, 0x550d, 0x5047, 0x4bc5, 0x4784, 0x4381, 0x3fb7, 0, 0, 0, 0
41+
.dw 0x3c23, 0x38c3, 0x3594, 0x3292, 0x2fbb, 0x2d0d, 0x2a86, 0x2823, 0x25e2, 0x23c2, 0x21c0, 0x1fdb, 0, 0, 0, 0
42+
.dw 0x1e11, 0x1c61, 0x1aca, 0x1949, 0x17dd, 0x1686, 0x1543, 0x1411, 0x12f1, 0x11e1, 0x10e0, 0x0fed, 0, 0, 0, 0
43+
.dw 0x0f08, 0x0e30, 0x0d65, 0x0ca4, 0x0bee, 0x0b43, 0x0aa1, 0x0a08, 0x0978, 0x08f0, 0x0870, 0x07f6, 0, 0, 0, 0
44+
.dw 0x0784, 0x0718, 0x06b2, 0x0652, 0x05f7, 0x05a1, 0x0550, 0x0504, 0x04bc, 0x0478, 0x0438, 0x03fb, 0, 0, 0, 0
45+
.dw 0x03c2, 0x038c, 0x0359, 0x0329, 0x02fb, 0x02d0, 0x02a8, 0x0282, 0x025e, 0x023c, 0x021c, 0x01fd, 0, 0, 0, 0
46+
.endm
47+
48+
.macro .ssg_tunes_lsb_data
49+
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
50+
.db 0xc2, 0x54, 0xe4, 0x90, 0x10, 0xb1, 0x4b, 0x3a, 0x56, 0xec, 0xb7, 0xdc, 0, 0, 0, 0
51+
.db 0xc2, 0x54, 0xe4, 0x90, 0x10, 0xb1, 0x4b, 0x3a, 0x56, 0xec, 0xb7, 0xdc, 0, 0, 0, 0
52+
.db 0xe1, 0xaa, 0x72, 0xc8, 0x88, 0xd8, 0x25, 0x1d, 0xab, 0xf6, 0x5b, 0x6b, 0, 0, 0, 0
53+
.db 0xf0, 0xd5, 0x39, 0x64, 0xc4, 0xec, 0x92, 0x8e, 0xd5, 0x7b, 0xad, 0xb4, 0, 0, 0, 0
54+
.db 0xf8, 0xea, 0x1c, 0x32, 0xe2, 0xf6, 0x49, 0xc7, 0x6a, 0x3d, 0x56, 0xdb, 0, 0, 0, 0
55+
.db 0xfc, 0xf5, 0x0e, 0x99, 0xf1, 0x7b, 0xa4, 0xe3, 0xb5, 0x9e, 0x2b, 0xed, 0, 0, 0, 0
56+
.db 0x7e, 0x7a, 0x87, 0x4c, 0x78, 0xbd, 0xd2, 0x71, 0x5a, 0x4f, 0x15, 0x76, 0, 0, 0, 0
57+
.db 0x3f, 0x3d, 0x43, 0x26, 0xbc, 0xde, 0x69, 0x38, 0x2d, 0x27, 0x0a, 0xbb, 0, 0, 0, 0
58+
.endm
59+
60+
.macro .ssg_dists_msb_data
61+
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
62+
.db 0x0d, 0x0c, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x07, 0x07, 0, 0, 0, 0
63+
.db 0x0d, 0x0c, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x07, 0x07, 0, 0, 0, 0
64+
.db 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0, 0, 0, 0
65+
.db 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0, 0, 0, 0
66+
.db 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0, 0, 0, 0
67+
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
68+
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
69+
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
70+
.endm

nullsound/buffers.s

Lines changed: 16 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
.module nullsound
2323

24+
.include "fm-tables.inc"
25+
.include "ssg-tables.inc"
26+
2427
.area CODE
2528

2629
.bndry 256
@@ -61,7 +64,7 @@ sine::
6164

6265
;;; Delta factor for all possible fractional semitones
6366
;;; ------
64-
;;; Internally nullsound works with decimal semitones (8:8 fixed point) to encode
67+
;;; Internally nullsound works with decimal semitones (8:7 fixed point) to encode
6568
;;; the tune shift of a note after FX (e.g. pitch, vibrato, slide...)
6669
;;; There are 128 possible fractional semitones between two integer semitones.
6770
;;;
@@ -82,41 +85,11 @@ sine::
8285

8386
;;; SSG tune delta for all 128 fractional semitones
8487
ssg_tune_deltas::
85-
.dw 0x0000, 0x020e, 0x041d, 0x062b, 0x0839, 0x0a47, 0x0c55, 0x0e62
86-
.dw 0x106f, 0x127c, 0x1489, 0x1695, 0x18a2, 0x1aae, 0x1cb9, 0x1ec5
87-
.dw 0x20d0, 0x22db, 0x24e6, 0x26f0, 0x28fb, 0x2b05, 0x2d0f, 0x2f18
88-
.dw 0x3122, 0x332b, 0x3534, 0x373c, 0x3945, 0x3b4d, 0x3d55, 0x3f5d
89-
.dw 0x4164, 0x436b, 0x4572, 0x4779, 0x4980, 0x4b86, 0x4d8c, 0x4f92
90-
.dw 0x5198, 0x539d, 0x55a2, 0x57a7, 0x59ac, 0x5bb0, 0x5db4, 0x5fb8
91-
.dw 0x61bc, 0x63c0, 0x65c3, 0x67c6, 0x69c9, 0x6bcb, 0x6dce, 0x6fd0
92-
.dw 0x71d2, 0x73d3, 0x75d5, 0x77d6, 0x79d7, 0x7bd8, 0x7dd8, 0x7fd9
93-
.dw 0x81d9, 0x83d8, 0x85d8, 0x87d7, 0x89d7, 0x8bd5, 0x8dd4, 0x8fd3
94-
.dw 0x91d1, 0x93cf, 0x95cc, 0x97ca, 0x99c7, 0x9bc4, 0x9dc1, 0x9fbe
95-
.dw 0xa1ba, 0xa3b6, 0xa5b2, 0xa7ae, 0xa9a9, 0xaba4, 0xad9f, 0xaf9a
96-
.dw 0xb195, 0xb38f, 0xb589, 0xb783, 0xb97c, 0xbb76, 0xbd6f, 0xbf68
97-
.dw 0xc161, 0xc359, 0xc551, 0xc749, 0xc941, 0xcb39, 0xcd30, 0xcf27
98-
.dw 0xd11e, 0xd315, 0xd50b, 0xd701, 0xd8f7, 0xdaed, 0xdce3, 0xded8
99-
.dw 0xe0cd, 0xe2c2, 0xe4b6, 0xe6ab, 0xe89f, 0xea93, 0xec87, 0xee7a
100-
.dw 0xf06d, 0xf261, 0xf453, 0xf646, 0xf838, 0xfa2a, 0xfc1c, 0xfe0e
88+
.ssg_tune_deltas_data
10189

10290
;;; FM F-num delta for all 128 fractional semitones
10391
fm_fnum_deltas::
104-
.dw 0x0000, 0x01f1, 0x03e3, 0x05d5, 0x07c7, 0x09b9, 0x0bac, 0x0d9e
105-
.dw 0x0f92, 0x1185, 0x1378, 0x156c, 0x1760, 0x1954, 0x1b49, 0x1d3d
106-
.dw 0x1f32, 0x2127, 0x231c, 0x2512, 0x2708, 0x28fe, 0x2af4, 0x2cea
107-
.dw 0x2ee1, 0x30d8, 0x32cf, 0x34c6, 0x36be, 0x38b6, 0x3aae, 0x3ca6
108-
.dw 0x3e9e, 0x4097, 0x4290, 0x4489, 0x4683, 0x487c, 0x4a76, 0x4c70
109-
.dw 0x4e6a, 0x5065, 0x5260, 0x545b, 0x5656, 0x5851, 0x5a4d, 0x5c49
110-
.dw 0x5e45, 0x6041, 0x623e, 0x643b, 0x6638, 0x6835, 0x6a33, 0x6c30
111-
.dw 0x6e2e, 0x702c, 0x722b, 0x742a, 0x7628, 0x7828, 0x7a27, 0x7c27
112-
.dw 0x7e26, 0x8026, 0x8227, 0x8427, 0x8628, 0x8829, 0x8a2a, 0x8c2c
113-
.dw 0x8e2d, 0x902f, 0x9231, 0x9434, 0x9636, 0x9839, 0x9a3c, 0x9c3f
114-
.dw 0x9e43, 0xa047, 0xa24b, 0xa44f, 0xa653, 0xa858, 0xaa5d, 0xac62
115-
.dw 0xae67, 0xb06d, 0xb273, 0xb479, 0xb67f, 0xb886, 0xba8d, 0xbc94
116-
.dw 0xbe9b, 0xc0a2, 0xc2aa, 0xc4b2, 0xc6ba, 0xc8c3, 0xcacb, 0xccd4
117-
.dw 0xcedd, 0xd0e7, 0xd2f0, 0xd4fa, 0xd704, 0xd90f, 0xdb19, 0xdd24
118-
.dw 0xdf2f, 0xe13a, 0xe346, 0xe551, 0xe75d, 0xe96a, 0xeb76, 0xed83
119-
.dw 0xef90, 0xf19d, 0xf3aa, 0xf5b8, 0xf7c6, 0xf9d4, 0xfbe2, 0xfdf1
92+
.fm_fnum_deltas_data
12093

12194

12295
;;; Semitone frequency table
@@ -132,48 +105,19 @@ fm_fnum_deltas::
132105
;;; SSG tune table for AES masterclock (8M=8055943)
133106
.bndry 256
134107
ssg_dists_lsb::
135-
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
136-
.dw 0x806e, 0xbe70, 0x0754, 0x5a80, 0xb75f, 0x1d66, 0x8c11, 0x02e4, 0x816a, 0x0735, 0x93db, 0x26fb, 0, 0, 0, 0
137-
.dw 0x806e, 0xbe70, 0x0754, 0x5a80, 0xb75f, 0x1d66, 0x8c11, 0x02e4, 0x816a, 0x0735, 0x93db, 0x26fb, 0, 0, 0, 0
138-
.dw 0xc037, 0x5f38, 0x03aa, 0xad40, 0x5bb0, 0x0eb3, 0xc608, 0x8172, 0x40b5, 0x039b, 0xc9f0, 0x937b, 0, 0, 0, 0
139-
.dw 0x601b, 0x2f9c, 0x01d5, 0xd6a0, 0xadd8, 0x875a, 0x6304, 0x40b9, 0x205a, 0x01ce, 0xe4f9, 0xc9bc, 0, 0, 0, 0
140-
.dw 0xb00e, 0x97ce, 0x80ea, 0x6b50, 0x56ec, 0x43ad, 0x3182, 0x205d, 0x102d, 0x00e7, 0xf27b, 0xe4df, 0, 0, 0, 0
141-
.dw 0xd807, 0xcbe7, 0xc075, 0xb5a8, 0xab76, 0xa1d7, 0x98c1, 0x902e, 0x8817, 0x8073, 0x793e, 0x726f, 0, 0, 0, 0
142-
.dw 0x6c04, 0x65f3, 0x603b, 0x5ad4, 0x55bb, 0x50eb, 0x4c61, 0x4817, 0x440b, 0x403a, 0x3c9f, 0x3937, 0, 0, 0, 0
143-
.dw 0x3602, 0x32fa, 0x301d, 0x2d6a, 0x2ade, 0x2875, 0x2631, 0x240b, 0x2206, 0x201d, 0x1e4f, 0x1c9c, 0, 0, 0, 0
108+
.ssg_dists_lsb_data
109+
144110
.bndry 256
145111
ssg_tunes_msb::
146-
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
147-
.dw 0xf097, 0xe317, 0xd658, 0xca51, 0xbef7, 0xb43f, 0xaa22, 0xa096, 0x9793, 0x8f11, 0x870a, 0x7f76, 0, 0, 0, 0
148-
.dw 0xf097, 0xe317, 0xd658, 0xca51, 0xbef7, 0xb43f, 0xaa22, 0xa096, 0x9793, 0x8f11, 0x870a, 0x7f76, 0, 0, 0, 0
149-
.dw 0x784f, 0x718f, 0x6b30, 0x652c, 0x5f7f, 0x5a23, 0x5515, 0x504f, 0x4bcd, 0x478c, 0x4389, 0x3fbf, 0, 0, 0, 0
150-
.dw 0x3c2b, 0x38cb, 0x359c, 0x329a, 0x2fc3, 0x2d15, 0x2a8e, 0x282b, 0x25ea, 0x23ca, 0x21c8, 0x1fe3, 0, 0, 0, 0
151-
.dw 0x1e19, 0x1c69, 0x1ad2, 0x1951, 0x17e5, 0x168e, 0x154b, 0x1419, 0x12f9, 0x11e9, 0x10e8, 0x0ff5, 0, 0, 0, 0
152-
.dw 0x0f10, 0x0e38, 0x0d6d, 0x0cac, 0x0bf6, 0x0b4b, 0x0aa9, 0x0a10, 0x0980, 0x08f8, 0x0878, 0x07fe, 0, 0, 0, 0
153-
.dw 0x078c, 0x0720, 0x06ba, 0x065a, 0x05ff, 0x05a9, 0x0558, 0x050c, 0x04c4, 0x0480, 0x0440, 0x0403, 0, 0, 0, 0
154-
.dw 0x03ca, 0x0394, 0x0361, 0x0331, 0x0303, 0x02d8, 0x02b0, 0x028a, 0x0266, 0x0244, 0x0224, 0x0205, 0, 0, 0, 0
112+
.ssg_dists_msb_data
113+
155114
.bndry 128
156115
ssg_tunes_lsb::
157-
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
158-
.db 0xc2, 0x54, 0xe4, 0x90, 0x10, 0xb1, 0x4b, 0x3a, 0x56, 0xec, 0xb7, 0xdc, 0, 0, 0, 0
159-
.db 0xc2, 0x54, 0xe4, 0x90, 0x10, 0xb1, 0x4b, 0x3a, 0x56, 0xec, 0xb7, 0xdc, 0, 0, 0, 0
160-
.db 0xe1, 0xaa, 0x72, 0xc8, 0x88, 0xd8, 0x25, 0x1d, 0xab, 0xf6, 0x5b, 0x6b, 0, 0, 0, 0
161-
.db 0xf0, 0xd5, 0x39, 0x64, 0xc4, 0xec, 0x92, 0x8e, 0xd5, 0x7b, 0xad, 0xb4, 0, 0, 0, 0
162-
.db 0xf8, 0xea, 0x1c, 0x32, 0xe2, 0xf6, 0x49, 0xc7, 0x6a, 0x3d, 0x56, 0xdb, 0, 0, 0, 0
163-
.db 0xfc, 0xf5, 0x0e, 0x99, 0xf1, 0x7b, 0xa4, 0xe3, 0xb5, 0x9e, 0x2b, 0xed, 0, 0, 0, 0
164-
.db 0x7e, 0x7a, 0x87, 0x4c, 0x78, 0xbd, 0xd2, 0x71, 0x5a, 0x4f, 0x15, 0x76, 0, 0, 0, 0
165-
.db 0x3f, 0x3d, 0x43, 0x26, 0xbc, 0xde, 0x69, 0x38, 0x2d, 0x27, 0x0a, 0xbb, 0, 0, 0, 0
116+
.ssg_tunes_lsb_data
117+
166118
.bndry 128
167119
ssg_dists_msb::
168-
;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
169-
.db 0x0d, 0x0c, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x07, 0x07, 0, 0, 0, 0
170-
.db 0x0d, 0x0c, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x07, 0x07, 0, 0, 0, 0
171-
.db 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0, 0, 0, 0
172-
.db 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0, 0, 0, 0
173-
.db 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0, 0, 0, 0
174-
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
175-
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
176-
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0
120+
.ssg_dists_lsb_data
177121

178122

179123
;;; F-num frequency table
@@ -194,29 +138,7 @@ ssg_dists_msb::
194138

195139
;;; FM F-num table for AES masterclock (8M=8055943)
196140
fm_fnums::
197-
.db 0xee, 0x56, 0x26 ; C-n
198-
.db 0x52, 0x9e, 0x28 ; C#n
199-
.db 0x7e, 0x08, 0x2b ; D-n
200-
.db 0x17, 0x97, 0x2d ; D#n
201-
.db 0x1d, 0x4d, 0x30 ; E-n
202-
.db 0xf8, 0x2b, 0x33 ; F-n
203-
.db 0x7c, 0x36, 0x36 ; F#n
204-
.db 0xd3, 0x6f, 0x39 ; G-n
205-
.db 0xe4, 0xd9, 0x3c ; G#n
206-
.db 0x20, 0x78, 0x40 ; A-n
207-
.db 0x0c, 0x4d, 0x44 ; A#n
208-
.db 0x01, 0x5d, 0x48 ; B-n
209-
.db 0xe7, 0xa9, 0x4c ; C-n+1
141+
.fm_fnums_data
142+
210143
fm_dists::
211-
.db 0x64, 0x47, 0x02 ; C-n
212-
.db 0x2c, 0x6a, 0x02 ; C#n
213-
.db 0x99, 0x8e, 0x02 ; D-n
214-
.db 0x06, 0xb6, 0x02 ; D#n
215-
.db 0xdb, 0xde, 0x02 ; E-n
216-
.db 0x84, 0x0a, 0x03 ; F-n
217-
.db 0x57, 0x39, 0x03 ; F#n
218-
.db 0x11, 0x6a, 0x03 ; G-n
219-
.db 0x3c, 0x9e, 0x03 ; G#n
220-
.db 0xec, 0xd4, 0x03 ; A-n
221-
.db 0xf5, 0x0f, 0x04 ; A#n
222-
.db 0xe6, 0x4c, 0x04 ; B-n
144+
.fm_dists_data

0 commit comments

Comments
 (0)