mirror of
https://github.com/holub/mame
synced 2025-06-21 11:46:49 +03:00
and an optimization
This commit is contained in:
parent
80cf988718
commit
bfbd892308
@ -633,14 +633,13 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int i, j;
|
||||
int op;
|
||||
INT32 *mixp;
|
||||
INT32 mix[48000*2];
|
||||
|
||||
memset(mix, 0, sizeof(mix[0])*samples*2);
|
||||
memset(m_mix_buffer, 0, sizeof(m_mix_buffer[0])*samples*2);
|
||||
|
||||
for (j = 0; j < 12; j++)
|
||||
{
|
||||
YMF271Group *slot_group = &m_groups[j];
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
|
||||
if (slot_group->pfm && slot_group->sync != 3)
|
||||
{
|
||||
@ -656,7 +655,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot2 = j + (1*12);
|
||||
int slot3 = j + (2*12);
|
||||
int slot4 = j + (3*12);
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
@ -843,7 +842,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot1 = j + ((op + 0) * 12);
|
||||
int slot2 = j + ((op + 2) * 12);
|
||||
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
for (i = 0; i < samples; i++)
|
||||
@ -895,7 +894,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot1 = j + (0*12);
|
||||
int slot2 = j + (1*12);
|
||||
int slot3 = j + (2*12);
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
@ -981,7 +980,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
}
|
||||
}
|
||||
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
update_pcm(j + (3*12), mixp, samples);
|
||||
break;
|
||||
}
|
||||
@ -997,7 +996,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
}
|
||||
}
|
||||
|
||||
mixp = &mix[0];
|
||||
mixp = m_mix_buffer;
|
||||
for (i = 0; i < samples; i++)
|
||||
{
|
||||
outputs[0][i] = (*mixp++)>>2;
|
||||
@ -1711,6 +1710,7 @@ void ymf271_device::device_start()
|
||||
init_state();
|
||||
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 2, clock()/384);
|
||||
m_mix_buffer = auto_alloc_array(machine(), INT32, 44100*2);
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
|
@ -65,7 +65,8 @@ private:
|
||||
UINT32 loopaddr;
|
||||
UINT32 endaddr;
|
||||
INT8 altloop;
|
||||
INT8 fs, srcnote, srcb;
|
||||
INT8 fs;
|
||||
INT8 srcnote, srcb;
|
||||
|
||||
INT64 step;
|
||||
INT64 stepptr;
|
||||
@ -138,6 +139,7 @@ private:
|
||||
|
||||
emu_timer *m_timA, *m_timB;
|
||||
sound_stream *m_stream;
|
||||
INT32 *m_mix_buffer;
|
||||
|
||||
devcb2_write_line m_irq_handler;
|
||||
devcb2_read8 m_ext_read_handler;
|
||||
|
@ -251,9 +251,8 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
|
||||
INT16 sample = 0;
|
||||
INT32 *mixp;
|
||||
INT32 vl, vr;
|
||||
INT32 mix[44100*2];
|
||||
|
||||
memset(mix, 0, sizeof(mix[0])*samples*2);
|
||||
memset(m_mix_buffer, 0, sizeof(m_mix_buffer[0])*samples*2);
|
||||
|
||||
for (i = 0; i < 24; i++)
|
||||
{
|
||||
@ -261,7 +260,7 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
|
||||
|
||||
if (slot->active)
|
||||
{
|
||||
mixp = mix;
|
||||
mixp = m_mix_buffer;
|
||||
|
||||
for (j = 0; j < samples; j++)
|
||||
{
|
||||
@ -320,7 +319,7 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
|
||||
}
|
||||
}
|
||||
|
||||
mixp = mix;
|
||||
mixp = m_mix_buffer;
|
||||
vl = m_mix_level[m_pcm_l];
|
||||
vr = m_mix_level[m_pcm_r];
|
||||
for (i = 0; i < samples; i++)
|
||||
@ -972,6 +971,7 @@ void ymf278b_device::device_start()
|
||||
}
|
||||
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 2, clock()/768);
|
||||
m_mix_buffer = auto_alloc_array(machine(), INT32, 44100*2);
|
||||
|
||||
// rate tables
|
||||
precompute_rate_tables();
|
||||
|
@ -125,6 +125,7 @@ private:
|
||||
int m_clock;
|
||||
|
||||
sound_stream * m_stream;
|
||||
INT32 *m_mix_buffer;
|
||||
devcb2_write_line m_irq_handler;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user