mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
-latch8: De-MCFG, nw
This commit is contained in:
parent
7bc9740ca7
commit
43cba38b7e
@ -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
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user