diff options
author | 2024-11-20 11:25:12 +0100 | |
---|---|---|
committer | 2024-11-20 11:25:19 +0100 | |
commit | 4dd1a69bba6efd499cb44de3267c1a1736aa12bb (patch) | |
tree | f9252d20071a8abf3ea18eda0eb2fd061af6ea5f /src/devices/bus | |
parent | b6c977b29bb5b4ebcb7d3ced5203459fd52c4e67 (diff) |
isa/sb16.cpp: fix incorrect OPL3 range, add quick mixer placeholder so that it returns irq/dma settings
Diffstat (limited to 'src/devices/bus')
-rw-r--r-- | src/devices/bus/isa/sb16.cpp | 20 | ||||
-rw-r--r-- | src/devices/bus/isa/sb16.h | 2 | ||||
-rw-r--r-- | src/devices/bus/isa/sblaster.cpp | 2 |
3 files changed, 22 insertions, 2 deletions
diff --git a/src/devices/bus/isa/sb16.cpp b/src/devices/bus/isa/sb16.cpp index 333703f2cfc..2cfc035baad 100644 --- a/src/devices/bus/isa/sb16.cpp +++ b/src/devices/bus/isa/sb16.cpp @@ -406,6 +406,24 @@ void sb16_lle_device::sb16_io(address_map &map) void sb16_lle_device::host_io(address_map &map) { + // TODO: move to own mixer core + map(0x4, 0x4).lrw8( + NAME([this] (offs_t offset) { + return m_mixer_index; + }), + NAME([this] (offs_t offset, u8 data) { + m_mixer_index = data; + }) + ); + map(0x5, 0x5).lr8( + NAME([this] (offs_t offset) { + if (m_mixer_index == 0x80) + return 0x12; + if (m_mixer_index == 0x81) + return 0x22; + return 0; + }) + ); map(0x6, 0x7).w(FUNC(sb16_lle_device::dsp_reset_w)); map(0xa, 0xb).r(FUNC(sb16_lle_device::host_data_r)); map(0xc, 0xd).rw(FUNC(sb16_lle_device::dsp_wbuf_status_r), FUNC(sb16_lle_device::host_cmd_w)); @@ -712,7 +730,7 @@ void sb16_lle_device::device_start() m_isa->install_device(0x0200, 0x0207, read8smo_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8smo_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); m_isa->install_device(0x0220, 0x022f, *this, &sb16_lle_device::host_io); m_isa->install_device(0x0330, 0x0331, read8sm_delegate(*this, FUNC(sb16_lle_device::mpu401_r)), write8sm_delegate(*this, FUNC(sb16_lle_device::mpu401_w))); - m_isa->install_device(0x0388, 0x0389, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0388, 0x038b, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); m_isa->install_device(0x0220, 0x0223, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); m_isa->install_device(0x0228, 0x0229, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); m_isa->set_dma_channel(1, this, false); diff --git a/src/devices/bus/isa/sb16.h b/src/devices/bus/isa/sb16.h index 9ca0cbeced0..8f9553d2f8c 100644 --- a/src/devices/bus/isa/sb16.h +++ b/src/devices/bus/isa/sb16.h @@ -112,6 +112,8 @@ private: bool m_dma8_done, m_dma16_done; emu_timer *m_timer; + + u8 m_mixer_index; }; // device type definition diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp index c073dd6fe07..0f73dc7ec9f 100644 --- a/src/devices/bus/isa/sblaster.cpp +++ b/src/devices/bus/isa/sblaster.cpp @@ -1303,11 +1303,11 @@ void sb16_device::device_start() { ymf262_device &ymf262 = *subdevice<ymf262_device>("ymf262"); m_isa->install_device(0x0200, 0x0207, read8smo_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8smo_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0224, 0x0225, read8sm_delegate(*this, FUNC(sb16_device::mixer_r)), write8sm_delegate(*this, FUNC(sb16_device::mixer_w))); m_isa->install_device(0x0226, 0x0227, read8sm_delegate(*this, FUNC(sb_device::dsp_reset_r)), write8sm_delegate(*this, FUNC(sb_device::dsp_reset_w))); m_isa->install_device(0x022a, 0x022b, read8sm_delegate(*this, FUNC(sb_device::dsp_data_r)), write8sm_delegate(*this, FUNC(sb_device::dsp_data_w))); m_isa->install_device(0x022c, 0x022d, read8sm_delegate(*this, FUNC(sb_device::dsp_wbuf_status_r)), write8sm_delegate(*this, FUNC(sb_device::dsp_cmd_w))); m_isa->install_device(0x022e, 0x022f, read8sm_delegate(*this, FUNC(sb_device::dsp_rbuf_status_r)), write8sm_delegate(*this, FUNC(sb_device::dsp_rbuf_status_w))); - m_isa->install_device(0x0224, 0x0225, read8sm_delegate(*this, FUNC(sb16_device::mixer_r)), write8sm_delegate(*this, FUNC(sb16_device::mixer_w))); m_isa->install_device(0x0330, 0x0331, read8sm_delegate(*this, FUNC(sb16_device::mpu401_r)), write8sm_delegate(*this, FUNC(sb16_device::mpu401_w))); m_isa->install_device(0x0388, 0x038b, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); m_isa->install_device(0x0220, 0x0223, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); |