summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2024-11-20 11:25:12 +0100
committer angelosa <lordkale4@gmail.com>2024-11-20 11:25:19 +0100
commit4dd1a69bba6efd499cb44de3267c1a1736aa12bb (patch)
treef9252d20071a8abf3ea18eda0eb2fd061af6ea5f /src/devices/bus
parentb6c977b29bb5b4ebcb7d3ced5203459fd52c4e67 (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.cpp20
-rw-r--r--src/devices/bus/isa/sb16.h2
-rw-r--r--src/devices/bus/isa/sblaster.cpp2
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)));