summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/sound/tms5110r.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/emu/sound/tms5110r.c b/src/emu/sound/tms5110r.c
index 75713c86613..7f0e758ca7d 100644
--- a/src/emu/sound/tms5110r.c
+++ b/src/emu/sound/tms5110r.c
@@ -68,14 +68,9 @@ struct tms5100_coeffs
/*
The TMS5100NL was decapped and imaged by digshadow in April, 2013.
-The LPC table is not yet verified from the decap (it comes from US Patent
-4,209,836 and several others, and have been verified using derivative
-analysis to show which values were bad (due to poor quality images or badly
-typed copies of the tables in the patents, depending on which patent you look
-at) which were then corrected by figuring out what the tiny remaining marks on
-the photocopied version of the coefficient sheet COULD have been which would
-make the derivatives play nice.
-The chirp table from the decap is verified to match the patent and decap.
+The LPC table is verified to match the decap.
+ It also matches the intended contents of US Patent 4,209,836 and several others.
+The chirp table is verified to match the decap, and also matches the patents.
The TMS5100 (development name: TMC0280) and the Speak and spell's "CD2801" chip
are believed to be the same silicon. The 5100 may be the 'A' die revision of
the CD2801 based on die markings.
@@ -88,45 +83,46 @@ static const struct tms5100_coeffs pat4209836_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- /* E */
- { 0, 0, 1, 1, 2, 3, 5, 7, 10, 15, 21, 30, 43, 61, 86, 511 }, /* last value is actually 0 in ROM, but 511 is stop sentinel */
- /* P note: value #20 may be 95; value #29 may be 140 */
+ /* E */
+ { 0, 0, 1, 1, 2, 3, 5, 7,
+ 10, 15, 21, 30, 43, 61, 86, COEFF_ENERGY_SENTINEL }, // last rom value is actually really 0, but the tms5110.c code still requires the sentinel value to function correctly, until it is properly updated or merged with tms5220.c
+ /* P */
{ 0, 41, 43, 45, 47, 49, 51, 53,
55, 58, 60, 63, 66, 70, 73, 76,
79, 83, 87, 90, 94, 99, 103, 107,
- 112, 118, 123, 129, 134, 141, 147, 153 },
+ 112, 118, 123, 129, 134, 140, 147, 153 },
{
/* K1 */
{ -501, -497, -493, -488, -480, -471, -460, -446,
-427, -405, -378, -344, -305, -259, -206, -148,
-86, -21, 45, 110, 171, 227, 277, 320,
- 357, 388, 413, 434, 451, 464, 474, 482 },
+ 357, 388, 413, 434, 451, 464, 474, 498 },
/* K2 */
{ -349, -328, -305, -280, -252, -223, -192, -158,
-124, -88, -51, -14, 23, 60, 97, 133,
167, 199, 230, 259, 286, 310, 333, 354,
- 372, 389, 404, 417, 429, 439, 449, 490 },
+ 372, 389, 404, 417, 429, 439, 449, 506 },
/* K3 */
{ -397, -365, -327, -282, -229, -170, -104, -36,
35, 104, 169, 228, 281, 326, 364, 396 },
/* K4 */
- { -373, -334, -293, -245, -191, -131, -67, -1,
+ { -369, -334, -293, -245, -191, -131, -67, -1,
64, 128, 188, 243, 291, 332, 367, 397 },
/* K5 */
{ -319, -286, -250, -211, -168, -122, -74, -25,
- 24, 73, 121, 167, 210, 249, 285, 319 },
+ 24, 73, 121, 167, 210, 249, 285, 318 },
/* K6 */
{ -290, -252, -209, -163, -114, -62, -9, 44,
- 97, 147, 194, 239, 278, 313, 344, 371 },
+ 97, 147, 194, 238, 278, 313, 344, 371 },
/* K7 */
{ -291, -256, -216, -174, -128, -80, -31, 19,
69, 117, 163, 206, 246, 283, 316, 345 },
/* K8 */
- { -219, -133, -38, 59, 152, 235, 305, 361 },
+ { -218, -133, -38, 59, 152, 235, 305, 361 },
/* K9 */
- { -225, -157, -82, -3, 76, 151, 220, 280 },
+ { -226, -157, -82, -3, 76, 151, 220, 280 },
/* K10 */
- { -179, -122, -61, 1, 63, 123, 179, 231 },
+ { -179, -122, -61, 1, 62, 123, 179, 231 },
},
/* Chirp table */
{ 0, 42, -44, 50, -78, 18, 37, 20,