From 3f2b5a229d10ce272fe132bf3cada1c72f4040c3 Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Thu, 13 Aug 2015 13:54:20 -0400 Subject: [PATCH] minor cleanups to tms5220 so savestate and member variables are in the same order, and add a missing savestate entry (nw) --- src/emu/sound/tms5220.c | 11 +++++++---- src/emu/sound/tms5220.h | 18 +++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/emu/sound/tms5220.c b/src/emu/sound/tms5220.c index d71344a01e8..c948640972a 100644 --- a/src/emu/sound/tms5220.c +++ b/src/emu/sound/tms5220.c @@ -353,6 +353,8 @@ void tms5220_device::set_variant(int variant) void tms5220_device::register_for_save_states() { + save_item(NAME(m_variant)); + save_item(NAME(m_fifo)); save_item(NAME(m_fifo_head)); save_item(NAME(m_fifo_tail)); @@ -796,6 +798,7 @@ void tms5220_device::process(INT16 *buffer, unsigned int size) #endif /* if the new frame is a stop frame, set an interrupt and set talk status to 0 */ + /** TODO: investigate this later! **/ if (NEW_FRAME_STOP_FLAG == 1) { m_talk_status = m_speak_external = 0; @@ -1264,7 +1267,7 @@ void tms5220_device::process_command(unsigned char cmd) void tms5220_device::parse_frame() { - int indx, i, rep_flag; + int i, rep_flag; // We actually don't care how many bits are left in the fifo here; the frame subpart will be processed normally, and any bits extracted 'past the end' of the fifo will be read as zeroes; the fifo being emptied will set the /BE latch which will halt speech exactly as if a stop frame had been encountered (instead of whatever partial frame was read); the same exact circuitry is used for both on the real chip, see us patent 4335277 sheet 16, gates 232a (decode stop frame) and 232b (decode /BE plus DDIS (decode disable) which is active during speak external). @@ -1272,12 +1275,12 @@ void tms5220_device::parse_frame() has a 2 bit rate preceding it, grab two bits here and store them as the rate; */ if ((TMS5220_HAS_RATE_CONTROL) && (m_c_variant_rate & 0x04)) { - indx = extract_bits(2); + i = extract_bits(2); #ifdef DEBUG_PARSE_FRAME_DUMP - printbits(indx,2); + printbits(i,2); fprintf(stderr," "); #endif - m_IP = reload_table[indx]; + m_IP = reload_table[i]; } else // non-5220C and 5220C in fixed rate mode m_IP = reload_table[m_c_variant_rate&0x3]; diff --git a/src/emu/sound/tms5220.h b/src/emu/sound/tms5220.h index 7150ce5457b..177f82bdecf 100644 --- a/src/emu/sound/tms5220.h +++ b/src/emu/sound/tms5220.h @@ -172,6 +172,15 @@ private: UINT8 m_data_register; /* data register, used by read command */ UINT8 m_RDB_flag; /* whether we should read data register or status register */ + /* 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 10 bit + resolution of the output data. + TODO: add a way to set/reset this other than the FORCE_DIGITAL define + */ + UINT8 m_digital_select; + /* io_ready: page 3 of the datasheet specifies that READY will be asserted until * data is available or processed by the system. */ @@ -185,15 +194,6 @@ private: UINT8 m_read_latch; UINT8 m_write_latch; - /* 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 10 bit - resolution of the output data. - TODO: add a way to set/reset this other than the FORCE_DIGITAL define - */ - UINT8 m_digital_select; - sound_stream *m_stream; int m_clock; emu_timer *m_timer_io_ready;