summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/nss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/nss.cpp')
-rw-r--r--src/mame/drivers/nss.cpp42
1 files changed, 15 insertions, 27 deletions
diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp
index 342521c4536..e18a3675cea 100644
--- a/src/mame/drivers/nss.cpp
+++ b/src/mame/drivers/nss.cpp
@@ -353,12 +353,10 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
DECLARE_WRITE_LINE_MEMBER(nss_vblank_irq);
- DECLARE_READ8_MEMBER(spc_ram_100_r);
- DECLARE_WRITE8_MEMBER(spc_ram_100_w);
void bios_io_map(address_map &map);
void bios_map(address_map &map);
void snes_map(address_map &map);
- void spc_mem(address_map &map);
+ void spc_map(address_map &map);
};
@@ -374,25 +372,13 @@ uint32_t nss_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap,
void nss_state::snes_map(address_map &map)
{
map(0x000000, 0x7dffff).rw(FUNC(nss_state::snes_r_bank1), FUNC(nss_state::snes_w_bank1));
- map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
+ map(0x7e0000, 0x7fffff).ram().share("wram"); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
map(0x800000, 0xffffff).rw(FUNC(nss_state::snes_r_bank2), FUNC(nss_state::snes_w_bank2)); /* Mirror and ROM */
}
-READ8_MEMBER(nss_state::spc_ram_100_r)
+void nss_state::spc_map(address_map &map)
{
- return m_spc700->spc_ram_r(offset + 0x100);
-}
-
-WRITE8_MEMBER(nss_state::spc_ram_100_w)
-{
- m_spc700->spc_ram_w(offset + 0x100, data);
-}
-
-void nss_state::spc_mem(address_map &map)
-{
- map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */
- map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */
- map(0x0100, 0xffff).rw(FUNC(nss_state::spc_ram_100_r), FUNC(nss_state::spc_ram_100_w));
+ map(0x0000, 0xffff).ram().share("aram");
}
/* NSS specific */
@@ -577,7 +563,7 @@ WRITE8_MEMBER(nss_state::port_01_w)
---- ---x Maybe SNES CPU/PPU reset? (0=Reset, 1=Run)
*/
m_input_disabled = BIT(data, 7) ^ 1;
- m_spc700->set_volume((data & 0x20) ? 0.0 : 100.0);
+ m_s_dsp->set_volume((data & 0x20) ? 0.0 : 100.0);
m_cart_sel = (data & 0xc) >> 2;
@@ -587,7 +573,7 @@ WRITE8_MEMBER(nss_state::port_01_w)
m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
/* also reset the device */
if (!(data & 1))
- m_spc700->reset();
+ m_s_dsp->reset();
}
WRITE8_MEMBER(nss_state::port_02_w)
@@ -839,8 +825,10 @@ void nss_state::nss(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &nss_state::snes_map);
// runs at 24.576 MHz / 12 = 2.048 MHz
- SPC700(config, m_soundcpu, XTAL(24'576'000) / 12);
- m_soundcpu->set_addrmap(AS_PROGRAM, &nss_state::spc_mem);
+ S_SMP(config, m_soundcpu, XTAL(24'576'000) / 12);
+ m_soundcpu->set_addrmap(AS_DATA, &nss_state::spc_map);
+ m_soundcpu->dsp_io_read_callback().set(m_s_dsp, FUNC(s_dsp_device::dsp_io_r));
+ m_soundcpu->dsp_io_write_callback().set(m_s_dsp, FUNC(s_dsp_device::dsp_io_w));
config.set_perfect_quantum(m_maincpu);
@@ -857,9 +845,11 @@ void nss_state::nss(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SNES_SOUND(config, m_spc700, XTAL(24'576'000) / 12);
- m_spc700->add_route(0, "lspeaker", 1.00);
- m_spc700->add_route(1, "rspeaker", 1.00);
+
+ S_DSP(config, m_s_dsp, XTAL(24'576'000) / 12);
+ m_s_dsp->set_addrmap(0, &nss_state::spc_map);
+ m_s_dsp->add_route(0, "lspeaker", 1.00);
+ m_s_dsp->add_route(1, "rspeaker", 1.00);
/* video hardware */
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs */
@@ -892,8 +882,6 @@ void nss_state::nss(machine_config &config)
***************************************************************************/
#define NSS_BIOS \
- ROM_REGION(0x100, "sound_ipl", 0) /* IPL ROM */ \
- ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) ) \
ROM_REGION(0x8000, "bios", 0) /* Bios CPU */ \
ROM_SYSTEM_BIOS( 0, "single", "Nintendo Super System (Single Cart BIOS)" ) \
ROMX_LOAD("nss-ic14.02.ic14", 0x00000, 0x8000, CRC(e06cb58f) SHA1(62f507e91a2797919a78d627af53f029c7d81477), ROM_BIOS(0) ) /* bios */ \