mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
rz1: Hook up uPD934G
This commit is contained in:
parent
3ffd6b839f
commit
97b3e3deeb
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user