Previous 199869 Revisions Next

r40092 Friday 31st July, 2015 at 21:58:59 UTC by Wilbert Pol
wave.c: reduce tagmap lookups (nw)
[src/emu/sound]wave.c wave.h

trunk/src/emu/sound/wave.c
r248603r248604
1616****************************************************************************/
1717
1818#include "emu.h"
19#include "imagedev/cassette.h"
2019#include "wave.h"
2120
2221#define ALWAYS_PLAY_SOUND   0
r248603r248604
6059      machine().sound().stream_alloc(*this, 0, 2, machine().sample_rate());
6160   else
6261      machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate());
62   m_cass = machine().device<cassette_image_device>(m_cassette_tag);
6363}
6464
6565//-------------------------------------------------
r248603r248604
6868
6969void wave_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
7070{
71   cassette_image_device *cass = machine().device<cassette_image_device>(m_cassette_tag);
72   cassette_image *cassette;
7371   cassette_state state;
7472   double time_index;
7573   double duration;
r248603r248604
7775   stream_sample_t *right_buffer = NULL;
7876   int i;
7977
80   speaker_device_iterator spkiter(cass->machine().root_device());
78   speaker_device_iterator spkiter(m_cass->machine().root_device());
8179   int speakers = spkiter.count();
8280   if (speakers>1)
8381      right_buffer = outputs[1];
8482
85   state = cass->get_state();
83   state = m_cass->get_state();
8684
8785   state = (cassette_state)(state & (CASSETTE_MASK_UISTATE | CASSETTE_MASK_MOTOR | CASSETTE_MASK_SPEAKER));
8886
89   if (cass->exists() && (ALWAYS_PLAY_SOUND || (state == (CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED))))
87   if (m_cass->exists() && (ALWAYS_PLAY_SOUND || (state == (CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED))))
9088   {
91      cassette = cass->get_image();
92      time_index = cass->get_position();
93      duration = ((double) samples) / cass->machine().sample_rate();
89      cassette_image *cassette = m_cass->get_image();
90      time_index = m_cass->get_position();
91      duration = ((double) samples) / m_cass->machine().sample_rate();
9492
9593      cassette_get_samples(cassette, 0, time_index, duration, samples, 2, left_buffer, CASSETTE_WAVEFORM_16BIT);
9694      if (speakers > 1)
trunk/src/emu/sound/wave.h
r248603r248604
55#ifndef __WAVE_H__
66#define __WAVE_H__
77
8#include "imagedev/cassette.h"
89
10
911/*****************************************************************************
1012 *  CassetteWave interface
1113 *****************************************************************************/
r248603r248604
2830
2931private:
3032   const char *m_cassette_tag;
33   cassette_image_device *m_cass;
3134};
3235
3336extern const device_type WAVE;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team