mirror of
https://github.com/holub/mame
synced 2025-07-08 19:31:59 +03:00
tms5220.c: minor comment updates, no whatsnew
This commit is contained in:
parent
a8c425d5ad
commit
b622dd4d6f
@ -17,7 +17,7 @@
|
||||
Massive rewrite and reorganization by Lord Nightmare
|
||||
Additional IP, PC, subcycle timing rewrite by Lord Nightmare
|
||||
|
||||
Much information regarding these lpc encoding comes from US patent 4,209,844
|
||||
Much information regarding the lpc encoding used here comes from US patent 4,209,844
|
||||
US patent 4,331,836 describes the complete 51xx chip
|
||||
US patent 4,335,277 describes the complete 52xx chip
|
||||
Special Thanks to Larry Brantingham for answering questions regarding the chip details
|
||||
@ -181,9 +181,6 @@ Interpolation is inhibited (i.e. interpolation at IP frames will not happen
|
||||
|
||||
***MAME Driver specific notes:***
|
||||
|
||||
Looping has the tms5220 hooked up directly to the cpu. However currently the
|
||||
tms9900 cpu core does not support a ready line.
|
||||
|
||||
Victory's initial audio selftest is pretty brutal to the FIFO: it sends a
|
||||
sequence of bytes to the FIFO and checks the status bits after each one; if
|
||||
even one bit is in the wrong state (i.e. speech starts one byte too early or
|
||||
@ -400,8 +397,8 @@ struct tms5220_state
|
||||
UINT8 subcycle; /* contains the current subcycle for a given PC: 0 is A' (only used on SPKSLOW mode on 51xx), 1 is A, 2 is B */
|
||||
UINT8 subc_reload; /* contains 1 for normal speech, 0 when SPKSLOW is active */
|
||||
UINT8 PC; /* current parameter counter (what param is being interpolated), ranges from 0 to 12 */
|
||||
/* TODO/NOTE: the current interpolation period, counts 1,2,3,4,5,6,7,0 for divide by 8,8,8,4,4,4,2,1 */
|
||||
UINT8 interp_period; /* the current interpolation period */
|
||||
/* TODO/NOTE: the current interpolation period, counts 1,2,3,4,5,6,7,0 for divide by 8,8,8,4,4,2,2,1 */
|
||||
UINT8 interp_period; /* the current interpolation period */
|
||||
UINT8 inhibit; /* If 1, interpolation is inhibited until the DIV1 period */
|
||||
UINT8 tms5220c_rate; /* only relevant for tms5220C's multi frame rate feature; is the actual 4 bit value written on a 0x2* or 0x0* command */
|
||||
UINT16 pitch_count; /* pitch counter; provides chirp rom address */
|
||||
@ -433,7 +430,7 @@ struct tms5220_state
|
||||
/* The TMS52xx has two different ways of providing output data: the
|
||||
analog speaker pin (which was usually used) and the Digital I/O pin.
|
||||
The internal DAC used to feed the analog pin is only 8 bits, and has the
|
||||
funny clipping/clamping logic, while the digital pin gives full 12? bit
|
||||
funny clipping/clamping logic, while the digital pin gives full 10 bit
|
||||
resolution of the output data.
|
||||
TODO: add a way to set/reset this other than the FORCE_DIGITAL define
|
||||
*/
|
||||
@ -479,7 +476,6 @@ static void tms5220_set_variant(tms5220_state *tms, int variant)
|
||||
break;
|
||||
case TMS5220_IS_5200:
|
||||
tms->coeff = &tms5200_coeff;
|
||||
//tms->coeff = &pat4335277_coeff;
|
||||
break;
|
||||
case TMS5220_IS_5220:
|
||||
tms->coeff = &tms5220_coeff;
|
||||
@ -942,7 +938,7 @@ static void tms5220_process(tms5220_state *tms, INT16 *buffer, unsigned int size
|
||||
Interpolation inhibit cases:
|
||||
* Old frame was voiced, new is unvoiced
|
||||
* Old frame was silence/zero energy, new has nonzero energy
|
||||
* Old frame was unvoiced, new is voiced
|
||||
* Old frame was unvoiced, new is voiced (note this is the case on the patent but may not be correct on the real final chip)
|
||||
*/
|
||||
if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && (NEW_FRAME_UNVOICED_FLAG == 1))
|
||||
|| ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0)) /* this line needs further investigation, starwars tie fighters may sound better without it */
|
||||
|
Loading…
Reference in New Issue
Block a user