-latch8: De-MCFG, nw

This commit is contained in:
mooglyguy 2018-09-06 15:18:33 +02:00
parent 7bc9740ca7
commit 43cba38b7e
3 changed files with 46 additions and 116 deletions

View File

@ -18,11 +18,6 @@
#include "sound/discrete.h"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
class latch8_device : public device_t
{
public:
@ -73,13 +68,19 @@ public:
DECLARE_WRITE8_MEMBER( bit6_w );
DECLARE_WRITE8_MEMBER( bit7_w );
/* Bit mask specifying bits to be masked *out* */
void set_maskout(uint32_t maskout) { m_maskout = maskout; }
/* Bit mask specifying bits to be inverted */
void set_xorvalue(uint32_t xorvalue) { m_xorvalue = xorvalue; }
/* Bit mask specifying bits not needing cpu synchronization. */
void set_nosync(uint32_t nosync) { m_nosync = nosync; }
template <unsigned N, class Object> devcb_base &set_write_cb(Object &&cb) { return m_write_cb[N].set_callback(std::forward<Object>(cb)); }
template <unsigned N, class Object> devcb_base &set_read_cb(Object &&cb) { return m_read_cb[N].set_callback(std::forward<Object>(cb)); }
/* Write bit to discrete node */
template <unsigned N> auto write_cb() { return m_write_cb[N].bind(); }
/* Upon read, replace bits by reading from another device handler */
template <unsigned N> auto read_cb() { return m_read_cb[N].bind(); }
protected:
@ -109,75 +110,4 @@ private:
DECLARE_DEVICE_TYPE(LATCH8, latch8_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
/* add device */
#define MCFG_LATCH8_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, LATCH8, 0)
/* Bit mask specifying bits to be masked *out* */
#define MCFG_LATCH8_MASKOUT(_maskout) \
downcast<latch8_device &>(*device).set_maskout(_maskout);
/* Bit mask specifying bits to be inverted */
#define MCFG_LATCH8_INVERT(_xor) \
downcast<latch8_device &>(*device).set_xorvalue(_xor);
/* Bit mask specifying bits not needing cpu synchronization. */
#define MCFG_LATCH8_NOSYNC(_nosync) \
downcast<latch8_device &>(*device).set_nosync(_nosync);
/* Write bit to discrete node */
#define MCFG_LATCH8_WRITE_0(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_1(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_2(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_3(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_4(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_5(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_6(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_7(_devcb) \
downcast<latch8_device &>(*device).set_write_cb<7>(DEVCB_##_devcb);
/* Upon read, replace bits by reading from another device handler */
#define MCFG_LATCH8_READ_0(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<0>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_1(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<1>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_2(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<2>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_3(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<3>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_4(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<4>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_5(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<5>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_6(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<6>(DEVCB_##_devcb);
#define MCFG_LATCH8_READ_7(_devcb) \
downcast<latch8_device &>(*device).set_read_cb<7>(DEVCB_##_devcb);
#endif // MAME_MACHINE_LATCH8_H

View File

@ -1315,16 +1315,16 @@ void dkong_state::dkong3_sound2_map(address_map &map)
MACHINE_CONFIG_START(dkong_state::dkong2b_audio)
/* sound latches */
MCFG_LATCH8_ADD("ls175.3d") /* sound cmd latch */
MCFG_LATCH8_MASKOUT(0xf0)
MCFG_LATCH8_INVERT(0x0F)
LATCH8(config, m_ls175_3d); /* sound cmd latch */
m_ls175_3d->set_maskout(0xf0);
m_ls175_3d->set_xorvalue(0x0f);
MCFG_LATCH8_ADD("ls259.6h")
MCFG_LATCH8_WRITE_0(WRITELINE("discrete", discrete_device, write_line<DS_SOUND0_INP>))
MCFG_LATCH8_WRITE_1(WRITELINE("discrete", discrete_device, write_line<DS_SOUND1_INP>))
MCFG_LATCH8_WRITE_2(WRITELINE("discrete", discrete_device, write_line<DS_SOUND2_INP>))
MCFG_LATCH8_WRITE_6(WRITELINE("discrete", discrete_device, write_line<DS_SOUND6_INP>))
MCFG_LATCH8_WRITE_7(WRITELINE("discrete", discrete_device, write_line<DS_SOUND7_INP>))
LATCH8(config, m_dev_6h);
m_dev_6h->write_cb<0>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND0_INP>));
m_dev_6h->write_cb<1>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND1_INP>));
m_dev_6h->write_cb<2>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND2_INP>));
m_dev_6h->write_cb<6>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND6_INP>));
m_dev_6h->write_cb<7>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND7_INP>));
/* If P2.Bit7 -> is apparently an external signal decay or other output control
* If P2.Bit6 -> activates the external compressed sample ROM (not radarscp1)
@ -1333,10 +1333,10 @@ MACHINE_CONFIG_START(dkong_state::dkong2b_audio)
* P2.Bit2-0 -> select the 256 byte bank for external ROM
*/
MCFG_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */
MCFG_LATCH8_INVERT( 0x20 ) /* signal is inverted */
MCFG_LATCH8_READ_5(READLINE("ls259.6h", latch8_device, bit3_r))
MCFG_LATCH8_WRITE_7(WRITELINE("discrete", discrete_device, write_line<DS_DISCHARGE_INV>))
LATCH8(config, m_dev_vp2); /* virtual latch for port B */
m_dev_vp2->set_xorvalue(0x20); /* signal is inverted */
m_dev_vp2->read_cb<5>().set(m_dev_6h, FUNC(latch8_device::bit3_r));
m_dev_vp2->write_cb<7>().set("discrete", FUNC(discrete_device::write_line<DS_DISCHARGE_INV>));
MCFG_DEVICE_ADD("soundcpu", MB8884, I8035_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(dkong_sound_map)
@ -1372,10 +1372,10 @@ MACHINE_CONFIG_START(dkong_state::radarscp1_audio)
MCFG_MCS48_PORT_P2_IN_CB(CONSTANT(0))
/* virtual_p2 is not read -see memory map-, all bits are output bits */
MCFG_LATCH8_ADD( "virtual_p1" ) /* virtual latch for port A */
MCFG_LATCH8_INVERT( 0x80 ) /* signal is inverted */
MCFG_LATCH8_READ_7(READLINE("ls259.6h", latch8_device, bit3_r))
MCFG_LATCH8_READ_6(READ8("tms", m58817_device, status_r))
latch8_device &vp1(LATCH8(config, "virtual_p1")); /* virtual latch for port A */
vp1.set_xorvalue(0x80); /* signal is inverted */
vp1.read_cb<7>().set(m_dev_6h, FUNC(latch8_device::bit3_r));
vp1.read_cb<6>().set("tms", FUNC(m58817_device::status_r));
/* tms memory controller */
MCFG_DEVICE_ADD("m58819", M58819, 0)
@ -1392,26 +1392,25 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dkong_state::dkongjr_audio)
/* sound latches */
MCFG_LATCH8_ADD("ls174.3d")
MCFG_LATCH8_MASKOUT(0xE0)
LATCH8(config, "ls174.3d").set_maskout(0xe0);
MCFG_LATCH8_ADD( "ls259.6h")
MCFG_LATCH8_WRITE_0(WRITELINE("discrete", discrete_device, write_line<DS_SOUND0_INP>))
MCFG_LATCH8_WRITE_1(WRITELINE("discrete", discrete_device, write_line<DS_SOUND1_INP>))
MCFG_LATCH8_WRITE_2(WRITELINE("discrete", discrete_device, write_line<DS_SOUND2_INP>))
MCFG_LATCH8_WRITE_7(WRITELINE("discrete", discrete_device, write_line<DS_SOUND7_INP>))
LATCH8(config, m_dev_6h);
m_dev_6h->write_cb<0>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND0_INP>));
m_dev_6h->write_cb<1>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND1_INP>));
m_dev_6h->write_cb<2>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND2_INP>));
m_dev_6h->write_cb<7>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND7_INP>));
MCFG_LATCH8_ADD( "ls259.5h")
MCFG_LATCH8_WRITE_1(WRITELINE("discrete", discrete_device, write_line<DS_SOUND9_INP>))
latch8_device &dev_5h(LATCH8(config, "ls259.5h"));
dev_5h.write_cb<1>().set("discrete", FUNC(discrete_device::write_line<DS_SOUND9_INP>));
MCFG_LATCH8_ADD( "ls259.4h")
latch8_device &dev_4h(LATCH8(config, "ls259.4h"));
MCFG_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */
MCFG_LATCH8_INVERT( 0x70 ) /* all signals are inverted */
MCFG_LATCH8_READ_6(READLINE("ls259.4h", latch8_device, bit1_r))
MCFG_LATCH8_READ_5(READLINE("ls259.6h", latch8_device, bit3_r))
MCFG_LATCH8_READ_4(READLINE("ls259.6h", latch8_device, bit6_r))
MCFG_LATCH8_WRITE_7(WRITELINE("discrete", discrete_device, write_line<DS_DISCHARGE_INV>))
LATCH8(config, m_dev_vp2); /* virtual latch for port B */
m_dev_vp2->set_xorvalue(0x70); /* all signals are inverted */
m_dev_vp2->read_cb<6>().set(dev_4h, FUNC(latch8_device::bit1_r));
m_dev_vp2->read_cb<5>().set(m_dev_6h, FUNC(latch8_device::bit3_r));
m_dev_vp2->read_cb<4>().set(m_dev_6h, FUNC(latch8_device::bit6_r));
m_dev_vp2->write_cb<7>().set("discrete", FUNC(discrete_device::write_line<DS_DISCHARGE_INV>));
MCFG_DEVICE_ADD("soundcpu", MB8884, I8035_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(dkong_sound_map)
@ -1437,9 +1436,9 @@ MACHINE_CONFIG_START(dkong_state::dkong3_audio)
MCFG_DEVICE_PROGRAM_MAP(dkong3_sound2_map)
/* sound latches */
MCFG_LATCH8_ADD( "latch1")
MCFG_LATCH8_ADD( "latch2")
MCFG_LATCH8_ADD( "latch3")
LATCH8(config, "latch1");
LATCH8(config, "latch2");
LATCH8(config, "latch3");
SPEAKER(config, "mono").front_center();
MACHINE_CONFIG_END

View File

@ -628,9 +628,10 @@ MACHINE_CONFIG_START(dbox_state::dbox)
/* LED Matrix Display */
MCFG_SDA5708_ADD("display")
config.set_default_layout(layout_sda5708);
/* IP16 74256 8 bit latch */
MCFG_LATCH8_ADD("hct259.ip16")
MCFG_LATCH8_WRITE_4(WRITELINE("display", sda5708_device, reset_w))
LATCH8(config, m_ip16_74259);
m_ip16_74259->write_cb<4>().set("display", FUNC(sda5708_device::reset_w));
MACHINE_CONFIG_END
void dbox_state::init_dbox()