diff options
Diffstat (limited to 'src/mame/machine/mega32x.cpp')
-rw-r--r-- | src/mame/machine/mega32x.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp index d1d65e80c3b..42e976beae6 100644 --- a/src/mame/machine/mega32x.cpp +++ b/src/mame/machine/mega32x.cpp @@ -225,6 +225,7 @@ DEFINE_DEVICE_TYPE(SEGA_32X_PAL, sega_32x_pal_device, "sega_32x_pal", "Sega 3 sega_32x_device::sega_32x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_palette_interface(mconfig, *this) + , device_sound_interface(mconfig, *this) , device_video_interface(mconfig, *this, false) , m_sh2_shared(*this, "sh2_shared") , m_main_cpu(*this, finder_base::DUMMY_TAG) @@ -233,6 +234,7 @@ sega_32x_device::sega_32x_device(const machine_config &mconfig, device_type type , m_ldac(*this, "ldac") , m_rdac(*this, "rdac") , m_scan_timer(*this, finder_base::DUMMY_TAG) + , m_stream(nullptr) { } @@ -827,6 +829,7 @@ TIMER_CALLBACK_MEMBER(sega_32x_device::handle_pwm_callback) { if (m_lch_size > 0) { + m_stream->update(); switch(m_pwm_ctrl & 3) { case 0: /*Speaker OFF*/ break; @@ -842,6 +845,7 @@ TIMER_CALLBACK_MEMBER(sega_32x_device::handle_pwm_callback) if (m_rch_size > 0) { + m_stream->update(); switch((m_pwm_ctrl & 0xc) >> 2) { case 0: /*Speaker OFF*/ break; @@ -935,6 +939,15 @@ WRITE16_MEMBER( sega_32x_device::m68k_pwm_w ) pwm_w(space,offset,data,mem_mask); } +void sega_32x_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +{ + for (int s = 0; s < samples; s++) + { + outputs[0][s] = inputs[0][s]; + outputs[1][s] = inputs[1][s]; + } +} + /**********************************************************************************************/ // 68k side a15180 // framebuffer control @@ -1706,8 +1719,8 @@ void sega_32x_ntsc_device::device_add_mconfig(machine_config &config) m_master_cpu->set_addrmap(AS_PROGRAM, &sega_32x_ntsc_device::sh2_main_map); m_slave_cpu->set_addrmap(AS_PROGRAM, &sega_32x_ntsc_device::sh2_slave_map); - DAC_12BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, ":lspeaker", 0.4); // unknown DAC - DAC_12BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, ":rspeaker", 0.4); // unknown DAC + DAC_12BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, *this, 0.4, 0); // unknown DAC + DAC_12BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, *this, 0.4, 1); // unknown DAC } void sega_32x_pal_device::device_add_mconfig(machine_config &config) @@ -1717,8 +1730,8 @@ void sega_32x_pal_device::device_add_mconfig(machine_config &config) m_master_cpu->set_addrmap(AS_PROGRAM, &sega_32x_pal_device::sh2_main_map); m_slave_cpu->set_addrmap(AS_PROGRAM, &sega_32x_pal_device::sh2_slave_map); - DAC_16BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, ":lspeaker", 0.4); // unknown DAC - DAC_16BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, ":rspeaker", 0.4); // unknown DAC + DAC_16BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, *this, 0.4, 0); // unknown DAC + DAC_16BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, *this, 0.4, 1); // unknown DAC } @@ -1733,6 +1746,7 @@ void sega_32x_device::device_start() set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b)); } + m_stream = stream_alloc(2, 2, 48000 * 4); m_32x_pwm_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sega_32x_device::handle_pwm_callback), this)); m_32x_dram0 = std::make_unique<uint16_t[]>(0x40000/2); |