rz1: Hook up uPD934G

This commit is contained in:
Dirk Best 2018-03-17 09:26:34 +01:00
parent 3ffd6b839f
commit 97b3e3deeb

View File

@ -27,6 +27,8 @@
#include "screen.h"
#include "cpu/upd7810/upd7811.h"
#include "video/hd44780.h"
#include "sound/upd934g.h"
#include "speaker.h"
//**************************************************************************
@ -40,6 +42,8 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_hd44780(*this, "hd44780"),
m_pg{ {*this, "upd934g_c"}, {*this, "upd934g_b"} },
m_samples{ {*this, "samples_a"}, {*this, "samples_b"}},
m_keys(*this, "kc%u", 0), m_key_select(0),
m_port_b(0xff)
{ }
@ -55,6 +59,8 @@ protected:
private:
required_device<upd7811_device> m_maincpu;
required_device<hd44780_device> m_hd44780;
required_device<upd934g_device> m_pg[2];
required_memory_region m_samples[2];
required_ioport_array<8> m_keys;
void map(address_map &map);
@ -64,7 +70,9 @@ private:
DECLARE_READ8_MEMBER(port_c_r);
DECLARE_WRITE8_MEMBER(port_c_w);
DECLARE_READ8_MEMBER(upd934g_c_data_r);
DECLARE_WRITE8_MEMBER(upd934g_c_w);
DECLARE_READ8_MEMBER(upd934g_b_data_r);
DECLARE_WRITE8_MEMBER(upd934g_b_w);
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(leds_w);
@ -173,14 +181,35 @@ INPUT_PORTS_END
// MACHINE EMULATION
//**************************************************************************
READ8_MEMBER( rz1_state::upd934g_c_data_r )
{
if (offset < 0x8000)
return m_samples[1]->base()[offset];
else
{
if (offset < 0xc000)
return m_maincpu->space(AS_PROGRAM).read_byte(offset + 0x2000);
else
return 0;
}
}
READ8_MEMBER( rz1_state::upd934g_b_data_r )
{
if (offset < 0x8000)
return m_samples[0]->base()[offset];
else
return 0;
}
WRITE8_MEMBER( rz1_state::upd934g_c_w )
{
logerror("upd934g_c_w: %02x = %02x\n", offset >> 8, (data >> 2) & 0x0f);
m_pg[0]->write(space, offset >> 8, data);
}
WRITE8_MEMBER( rz1_state::upd934g_b_w )
{
logerror("upd934g_b_w: %02x = %02x\n", offset >> 8, (data >> 2) & 0x0f);
m_pg[1]->write(space, offset >> 8, data);
}
WRITE8_MEMBER( rz1_state::port_a_w )
@ -277,6 +306,14 @@ MACHINE_CONFIG_START( rz1_state::rz1 )
MCFG_HD44780_ADD("hd44780")
MCFG_HD44780_LCD_SIZE(1, 16)
MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("upd934g_c", UPD934G, 1333000)
MCFG_UPD934G_DATA_CB(READ8(rz1_state, upd934g_c_data_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MCFG_SOUND_ADD("upd934g_b", UPD934G, 1280000)
MCFG_UPD934G_DATA_CB(READ8(rz1_state, upd934g_b_data_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
@ -291,9 +328,11 @@ ROM_START( rz1 )
ROM_REGION(0x4000, "program", 0)
ROM_LOAD("program.bin", 0x0000, 0x4000, CRC(b44b2652) SHA1(b77f8daece9adb177b6ce1ef518fc3238b8c0a9c))
ROM_REGION(0x10000, "samples", 0)
ROM_REGION(0x8000, "samples_a", 0)
ROM_LOAD("sound_a.cm5", 0x0000, 0x8000, CRC(c643ff24) SHA1(e886314d22a9a5473bfa2cb237ecafcf0daedfc1)) // HN613256P
ROM_LOAD("sound_b.cm6", 0x8000, 0x8000, CRC(ee5b703e) SHA1(cbf2e92c68901f236678d704e9e695a5c84ff49e)) // HN613256P
ROM_REGION(0x8000, "samples_b", 0)
ROM_LOAD("sound_b.cm6", 0x0000, 0x8000, CRC(ee5b703e) SHA1(cbf2e92c68901f236678d704e9e695a5c84ff49e)) // HN613256P
ROM_END