Previous 199869 Revisions Next

r26479 Monday 2nd December, 2013 at 12:57:40 UTC by hap
added notes
[src/emu/sound]ymz770.c

trunk/src/emu/sound/ymz770.c
r26478r26479
55    Emulation by R. Belmont
66    AMM decode by Olivier Galibert
77
8-----
9TODO:
10- A lot of unimplemented features, even simple ones like panning,
11  these should be added once we find out any software that uses it.
12- Sequencer is very preliminary
13- What does channel ATBL mean?
14- Is YMZ774(and other variants) the same family as this chip?
15  What are the differences?
16
817***************************************************************************/
918
1019#include "emu.h"
r26478r26479
3948{
4049   // create the stream
4150   m_stream = machine().sound().stream_alloc(*this, 0, 2, 16000, this);
42   m_rom_base = device().machine().root_device().memregion(":ymz770")->base();
43   m_rom_limit = device().machine().root_device().memregion(":ymz770")->bytes() * 8;
51   m_rom_base = *region();
52   m_rom_limit = region()->bytes() * 8;
4453
4554   for (int i = 0; i < 8; i++)
4655   {
r26478r26479
119128      {
120129         if (m_channels[ch].is_seq_playing)
121130         {
122            if (m_channels[ch].seqdelay != 0)
131            if (m_channels[ch].seqdelay > 0)
123132            {
124133               m_channels[ch].seqdelay--;
125134            }
r26478r26479
155164         {
156165            if (m_channels[ch].output_remaining > 0)
157166            {
158               mix += (m_channels[ch].output_data[m_channels[ch].output_ptr++]*2*m_channels[ch].volume);
167               mix += (m_channels[ch].output_data[m_channels[ch].output_ptr++]*m_channels[ch].volume);
159168               m_channels[ch].output_remaining--;
160169            }
161170            else
r26478r26479
179188               if (m_channels[ch].is_playing)
180189               {
181190                  int sample_rate, channel_count;
182                  if (!m_channels[ch].decoder->decode_buffer(m_channels[ch].pptr,
183                                                m_rom_limit,
184                                                m_channels[ch].output_data,
185                                                m_channels[ch].output_remaining,
186                                                sample_rate,
187                                                channel_count))
191                  if (!m_channels[ch].decoder->decode_buffer(m_channels[ch].pptr, m_rom_limit, m_channels[ch].output_data, m_channels[ch].output_remaining, sample_rate, channel_count) || m_channels[ch].output_remaining == 0)
188192                  {
189193                     m_channels[ch].is_playing = !m_channels[ch].last_block; // detect infinite retry loop
190194                     m_channels[ch].last_block = true;
r26478r26479
195199                  m_channels[ch].output_remaining--;
196200                  m_channels[ch].output_ptr = 1;
197201
198                  mix += (m_channels[ch].output_data[0]*2*m_channels[ch].volume);
202                  mix += (m_channels[ch].output_data[0]*m_channels[ch].volume);
199203               }
200204            }
201205         }

Previous 199869 Revisions Next


© 1997-2024 The MAME Team