From 150c9b71937ed11667326dd5b20406573b7a1dbc Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Mon, 24 Jun 2013 10:57:12 +0000 Subject: [PATCH] de_3: hooked up enough stuff so that games will boot. Implemented DMD Type 2 device and hooked that up to those games that use it. --- .gitattributes | 2 + src/mame/drivers/de_3.c | 652 ++++++++++++++++++++++++++++++++------ src/mame/mame.mak | 1 + src/mame/video/decodmd2.c | 215 +++++++++++++ src/mame/video/decodmd2.h | 69 ++++ 5 files changed, 834 insertions(+), 105 deletions(-) create mode 100644 src/mame/video/decodmd2.c create mode 100644 src/mame/video/decodmd2.h diff --git a/.gitattributes b/.gitattributes index dd98c79dd89..f9fd772c170 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5378,6 +5378,8 @@ src/mame/video/deco_mlc.c svneol=native#text/plain src/mame/video/decocass.c svneol=native#text/plain src/mame/video/decocomn.c svneol=native#text/plain src/mame/video/decocomn.h svneol=native#text/plain +src/mame/video/decodmd2.c svneol=native#text/plain +src/mame/video/decodmd2.h svneol=native#text/plain src/mame/video/decospr.c svneol=native#text/plain src/mame/video/decospr.h svneol=native#text/plain src/mame/video/deniam.c svneol=native#text/plain diff --git a/src/mame/drivers/de_3.c b/src/mame/drivers/de_3.c index 7d34c1e5b07..079c7cbe657 100644 --- a/src/mame/drivers/de_3.c +++ b/src/mame/drivers/de_3.c @@ -5,7 +5,10 @@ #include "emu.h" #include "cpu/m6800/m6800.h" +#include "cpu/m6809/m6809.h" +#include "machine/6821pia.h" #include "audio/decobsmt.h" +#include "video/decodmd2.h" #include "machine/genpin.h" #include "machine/nvram.h" @@ -29,25 +32,81 @@ public: de_3_state(const machine_config &mconfig, device_type type, const char *tag) : genpin_class(mconfig, type, tag), m_maincpu(*this, "maincpu"), -// m_pia21(*this, "pia21"), -// m_pia24(*this, "pia24"), -// m_pia28(*this, "pia28"), -// m_pia2c(*this, "pia2c"), -// m_pia30(*this, "pia30"), -// m_pia34(*this, "pia34"), - m_audiocpu(*this, "audiocpu"), + m_pia21(*this, "pia21"), + m_pia24(*this, "pia24"), + m_pia28(*this, "pia28"), + m_pia2c(*this, "pia2c"), + m_pia30(*this, "pia30"), + m_pia34(*this, "pia34"), + m_dmdtype2(*this, "decodmd"), m_decobsmt(*this, "decobsmt") { } // devices required_device m_maincpu; - required_device m_audiocpu; + required_device m_pia21; + required_device m_pia24; + required_device m_pia28; + required_device m_pia2c; + required_device m_pia30; + required_device m_pia34; + optional_device m_dmdtype2; + + // driver_device overrides + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + static const device_timer_id TIMER_IRQ = 0; + + DECLARE_WRITE8_MEMBER(pia34_pa_w); + DECLARE_READ8_MEMBER(switch_r); + DECLARE_WRITE8_MEMBER(switch_w); + DECLARE_WRITE8_MEMBER(pia2c_pa_w); + DECLARE_READ8_MEMBER(pia2c_pb_r); + DECLARE_WRITE8_MEMBER(pia2c_pb_w); + DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4 + DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2 + DECLARE_READ8_MEMBER(pia28_w7_r); + DECLARE_WRITE8_MEMBER(dig0_w); + DECLARE_WRITE8_MEMBER(dig1_w); + DECLARE_WRITE8_MEMBER(lamp0_w); + DECLARE_WRITE8_MEMBER(lamp1_w) { }; + //DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w); + //DECLARE_WRITE_LINE_MEMBER(msm5205_irq_w); + DECLARE_WRITE_LINE_MEMBER(pia_irq); + DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15 + DECLARE_WRITE8_MEMBER(sol3_w); + DECLARE_WRITE8_MEMBER(sound_w); + DECLARE_WRITE8_MEMBER(dac_w) { }; + DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w); + DECLARE_INPUT_CHANGED_MEMBER(main_nmi); + DECLARE_INPUT_CHANGED_MEMBER(audio_nmi); + DECLARE_READ8_MEMBER(dmd_status_r); + +// DECLARE_READ8_MEMBER(sound_latch_r); +// DECLARE_WRITE8_MEMBER(sample_bank_w); + required_device m_decobsmt; +// required_device m_msm5205; +// required_memory_bank m_sample_bank; +// UINT8 m_sample_data; +// bool m_more_data; + bool m_nmi_enable; +// bool m_is_alpha3; protected: // driver_device overrides virtual void machine_reset(); +private: + UINT32 m_segment1; + UINT32 m_segment2; + UINT8 m_strobe; + UINT8 m_kbdrow; + UINT8 m_diag; + bool m_ca1; + emu_timer* m_irq_timer; + bool m_irq_active; + UINT8 m_sound_data; + public: DECLARE_DRIVER_INIT(de_3); }; @@ -55,29 +114,406 @@ public: static ADDRESS_MAP_START( de_3_map, AS_PROGRAM, 8, de_3_state ) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") -// AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids -// AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids -// AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps -// AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display -// AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display -// AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs -// AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget + AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids + AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids + AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps + AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display + AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display + AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs + AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( de_3_audio_map, AS_PROGRAM, 8, de_3_state ) - AM_RANGE(0x0000, 0xffff) AM_NOP -ADDRESS_MAP_END - static INPUT_PORTS_START( de_3 ) + PORT_START("INP0") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("INP1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) + + PORT_START("INP2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) + + PORT_START("INP4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) + + PORT_START("INP8") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) + + PORT_START("INP10") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN) + + PORT_START("INP20") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O) + + PORT_START("INP40") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT) + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("INP80") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DIAGS") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, de_3_state, audio_nmi, 1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, de_3_state, main_nmi, 1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) PORT_TOGGLE + PORT_CONFNAME( 0x10, 0x10, "Language" ) + PORT_CONFSETTING( 0x00, "German" ) + PORT_CONFSETTING( 0x10, "English" ) INPUT_PORTS_END +WRITE_LINE_MEMBER(de_3_state::pia_irq) +{ + if(state == CLEAR_LINE) + { + // restart IRQ timer + m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); + m_irq_active = false; + } + else + { + // disable IRQ timer while other IRQs are being handled + // (counter is reset every 32 cycles while a PIA IRQ is handled) + m_irq_timer->adjust(attotime::zero); + m_irq_active = true; + } +} + +INPUT_CHANGED_MEMBER( de_3_state::main_nmi ) +{ + // Diagnostic button sends a pulse to NMI pin + if (newval==CLEAR_LINE) + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); +} + +INPUT_CHANGED_MEMBER( de_3_state::audio_nmi ) +{ + // Not on DECO board? + // Diagnostic button sends a pulse to NMI pin +// if (newval==CLEAR_LINE) +// if(m_audiocpu) +// m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); +} + +void de_3_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch(id) + { + case TIMER_IRQ: + if(param == 1) + { + m_maincpu->set_input_line(M6800_IRQ_LINE,ASSERT_LINE); + m_irq_timer->adjust(attotime::from_ticks(32,E_CLOCK),0); + m_irq_active = true; + m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance + m_pia28->cb1_w(BIT(ioport("DIAGS")->read(), 3)); // Up/Down + } + else + { + m_maincpu->set_input_line(M6800_IRQ_LINE,CLEAR_LINE); + m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); + m_irq_active = false; + m_pia28->ca1_w(1); + m_pia28->cb1_w(1); + } + break; + } +} + + +static const pia6821_interface pia21_intf = +{ + DEVCB_NULL, /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_LINE_GND, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_DRIVER_MEMBER(de_3_state, sol2_w), /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, dac_w), /* port B out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia21_ca2_w), /* line CA2 out */ + DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia21_cb2_w), /* line CB2 out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +// 6821 PIA at 0x2000 +WRITE8_MEMBER( de_3_state::sol3_w ) +{ +} + +WRITE8_MEMBER( de_3_state::sound_w ) +{ + m_sound_data = data; + m_decobsmt->bsmt_comms_w(space,offset,m_sound_data); +} + +WRITE_LINE_MEMBER( de_3_state::pia21_ca2_w ) +{ +// sound ns + m_ca1 = state; +} + +// 6821 PIA at 0x2400 +WRITE8_MEMBER( de_3_state::lamp0_w ) +{ + m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE); +} + +static const pia6821_interface pia24_intf = +{ + DEVCB_NULL, /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_LINE_GND, /* line CA1 in */ + DEVCB_LINE_GND, /* line CB1 in */ + DEVCB_LINE_VCC, /* line CA2 in */ + DEVCB_LINE_VCC, /* line CB2 in */ + DEVCB_DRIVER_MEMBER(de_3_state, lamp0_w), /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, lamp1_w), /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia24_cb2_w), /* line CB2 out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +// 6821 PIA at 0x2800 +WRITE8_MEMBER( de_3_state::dig0_w ) +{ +// static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447 +// data &= 0x7f; +// m_strobe = data & 15; +// m_diag = (data & 0x70) >> 4; +// output_set_digit_value(60, patterns[data>>4]); // diag digit +// m_segment1 = 0; +// m_segment2 = 0; +} + +WRITE8_MEMBER( de_3_state::dig1_w ) +{ +// m_segment2 |= data; +// m_segment2 |= 0x30000; +// if ((m_segment2 & 0x70000) == 0x30000) +// { +// if(m_is_alpha3) // Alphanumeric type 2 uses 7 segment LEDs on the bottom row, type 3 uses 14 segment LEDs +// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); +// else +// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0)); +// m_segment2 |= 0x40000; +// } +} + +READ8_MEMBER( de_3_state::pia28_w7_r ) +{ + UINT8 ret = 0x80; + + ret |= m_strobe; + ret |= m_diag << 4; + + if(BIT(ioport("DIAGS")->read(), 4)) // W7 Jumper + ret &= ~0x80; + + return ret; +} + +static const pia6821_interface pia28_intf = +{ + DEVCB_DRIVER_MEMBER(de_3_state, pia28_w7_r), /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_DRIVER_MEMBER(de_3_state, dig0_w), /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, dig1_w), /* port B out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia28_ca2_w), /* line CA2 out */ // comma 3+4 + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia28_cb2_w), /* line CB2 out */ // comma 1+2 + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +// 6821 PIA at 0x2c00 +WRITE8_MEMBER( de_3_state::pia2c_pa_w ) +{ + /* DMD data */ + if(m_dmdtype2) + { + m_dmdtype2->data_w(space,offset,data); + logerror("DMD: Data write %02x\n", data); + } +// m_segment1 |= (data<<8); +// m_segment1 |= 0x10000; +// if ((m_segment1 & 0x70000) == 0x30000) +// { +// output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); +// m_segment1 |= 0x40000; +// } +} + +READ8_MEMBER( de_3_state::pia2c_pb_r ) +{ + if(m_dmdtype2) + return m_dmdtype2->busy_r(space,offset); + return 0xff; +} + +WRITE8_MEMBER( de_3_state::pia2c_pb_w ) +{ + /* DMD ctrl */ + if(m_dmdtype2) + { + m_dmdtype2->ctrl_w(space,offset,data); + logerror("DMD: Control write %02x\n", data); + } + +// m_segment1 |= data; +// m_segment1 |= 0x20000; +// if ((m_segment1 & 0x70000) == 0x30000) +// { +// output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); +// m_segment1 |= 0x40000; +// } +} + +static const pia6821_interface pia2c_intf = +{ + DEVCB_NULL, /* port A in */ + DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pb_r), /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pa_w), /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, pia2c_pb_w), /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, /* line CB2 out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +// 6821 PIA at 0x3000 +READ8_MEMBER( de_3_state::switch_r ) +{ + char kbdrow[8]; + sprintf(kbdrow,"INP%X",m_kbdrow); + return ~ioport(kbdrow)->read(); +} + +WRITE8_MEMBER( de_3_state::switch_w ) +{ + m_kbdrow = data; +} + +static const pia6821_interface pia30_intf = +{ + DEVCB_DRIVER_MEMBER(de_3_state, switch_r), /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_LINE_GND, /* line CA1 in */ + DEVCB_LINE_GND, /* line CB1 in */ + DEVCB_LINE_VCC, /* line CA2 in */ + DEVCB_LINE_VCC, /* line CB2 in */ + DEVCB_NULL, /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, switch_w), /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia30_cb2_w), /* line CB2 out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +// 6821 PIA at 0x3400 +WRITE8_MEMBER( de_3_state::pia34_pa_w ) +{ + // Not connected? +// m_segment2 |= (data<<8); +// m_segment2 |= 0x10000; +// if ((m_segment2 & 0x70000) == 0x30000) +// { +// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); +// m_segment2 |= 0x40000; +// } +} + +READ8_MEMBER( de_3_state::dmd_status_r ) +{ + if(m_dmdtype2) + { + return m_dmdtype2->status_r(space,offset); + } + return 0; +} + +static const pia6821_interface pia34_intf = +{ + DEVCB_DRIVER_MEMBER(de_3_state, dmd_status_r), /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_DRIVER_MEMBER(de_3_state, pia34_pa_w), /* port A out */ + DEVCB_DRIVER_MEMBER(de_3_state, sound_w), /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(de_2_state, pia34_cb2_w), /* line CB2 out */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq), /* IRQA */ + DEVCB_DRIVER_LINE_MEMBER(de_3_state, pia_irq) /* IRQB */ +}; + +static const decodmd_intf decodmd_interface = +{ + ":gfx3" // region containing DMD ROM data +}; + void de_3_state::machine_reset() { } DRIVER_INIT_MEMBER(de_3_state,de_3) { + m_irq_timer = timer_alloc(TIMER_IRQ); + m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); + m_irq_active = false; } static MACHINE_CONFIG_START( de_3, de_3_state ) @@ -88,24 +524,30 @@ static MACHINE_CONFIG_START( de_3, de_3_state ) MCFG_FRAGMENT_ADD( genpin_audio ) /* Devices */ -// MCFG_PIA6821_ADD("pia21", pia21_intf) -// MCFG_PIA6821_ADD("pia24", pia24_intf) -// MCFG_PIA6821_ADD("pia28", pia28_intf) -// MCFG_PIA6821_ADD("pia2c", pia2c_intf) -// MCFG_PIA6821_ADD("pia30", pia30_intf) -// MCFG_PIA6821_ADD("pia34", pia34_intf) + MCFG_PIA6821_ADD("pia21", pia21_intf) + MCFG_PIA6821_ADD("pia24", pia24_intf) + MCFG_PIA6821_ADD("pia28", pia28_intf) + MCFG_PIA6821_ADD("pia2c", pia2c_intf) + MCFG_PIA6821_ADD("pia30", pia30_intf) + MCFG_PIA6821_ADD("pia34", pia34_intf) MCFG_NVRAM_ADD_1FILL("nvram") - /* sound hardware */ - MCFG_CPU_ADD("audiocpu", M6809E, 8000000) - MCFG_CPU_PROGRAM_MAP(de_3_audio_map) - MCFG_DECOBSMT_ADD(DECOBSMT_TAG) - // TODO: DMD video controller (68B09E+DMD display) +// MCFG_SPEAKER_STANDARD_MONO("bg") +// MCFG_YM2151_ADD("ym2151", 3580000) +// MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w)) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) +// MCFG_SOUND_ADD("msm5205", MSM5205, 384000) +// MCFG_SOUND_CONFIG(msm5205_intf) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( de_3_dmd2, de_3 ) + MCFG_DECODMD_TYPE2_ADD("decodmd",decodmd_interface) +MACHINE_CONFIG_END + /*------------------------------------------------------------- / Adventures of Rocky and Bullwinkle and Friends - CPU Rev 3b /DMD Type 2 512K Rom - 64K CPU Rom /------------------------------------------------------------*/ @@ -115,7 +557,7 @@ ROM_START(rab_320) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("rbdspa.300", 0x00000, 0x80000, CRC(a5dc2f72) SHA1(60bbb4914ff56ad48c86c3550e094a3d9d70c700)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220)) @@ -128,7 +570,7 @@ ROM_START(rab_130) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("rbdspa.130", 0x00000, 0x80000, CRC(b6e2176e) SHA1(9ccbb30dc0f386fcf5e5255c9f80c720e601565f)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220)) @@ -141,7 +583,7 @@ ROM_START(rab_103) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("rabdspsp.103", 0x00000, 0x80000, CRC(02624948) SHA1(069ef69d6ce193d73954935b378230c05b83b8fc)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("rab.u7", 0x0000, 0x10000, CRC(b232e630) SHA1(880fffc395d7c24bdea4e7e8000afba7ea71c094)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("rab.u17", 0x000000, 0x80000, CRC(7f2b53b8) SHA1(fd4f4ed1ed343069ffc534fe4b20026fe7403220)) @@ -158,7 +600,7 @@ ROM_START(aar_101) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("asdspu12.bin", 0x00000, 0x40000, CRC(5dd81be6) SHA1(20e5ec19550e3795670c5ee4e8e92fae0499fdb8)) ROM_LOAD("asdspu14.bin", 0x40000, 0x40000, CRC(3f2204ca) SHA1(69523d6c5555d391ab24912f4c4c78aa09a400c1)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("assndu7.bin", 0x0000, 0x10000, CRC(f0414a0d) SHA1(b1f940be05426a39f4e5ea0802fd03a7ce055ebc)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("assndu17.bin", 0x000000, 0x80000, CRC(e151b1fe) SHA1(d7d97499d93885a4f7ebd7bb302731bc5bc456ff)) @@ -176,7 +618,7 @@ ROM_START(btmn_103) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("batdsp.102", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015)) @@ -191,7 +633,7 @@ ROM_START(btmn_101) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("batdsp.102", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015)) @@ -206,7 +648,7 @@ ROM_START(btmn_g13) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("bat_dspg.104", 0x00000, 0x20000, CRC(1581819f) SHA1(88facfad2e74dd44b71fd19df685a4c2378d26de)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015)) @@ -221,7 +663,7 @@ ROM_START(btmn_106) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("batdsp.106", 0x00000, 0x20000, CRC(4c4120e7) SHA1(ba7d78c933f6709b3db4efcca5e7bb9099074550)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("batman.u7", 0x8000, 0x8000, CRC(b2e88bf5) SHA1(28f814ea73f8eefd1bb5499a599e67a6850c92c0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("batman.u17", 0x000000, 0x40000, CRC(b84914dd) SHA1(333d88033428705cbd0a40d70d938c0021bb0015)) @@ -240,7 +682,7 @@ ROM_START(ckpt_a17) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("chkpntds.512", 0x00000, 0x10000, CRC(14d9c6d6) SHA1(5470a4ebe7bc4a056f75aa1fffe3a4e3e24457c6)) ROM_RELOAD(0x10000, 0x10000) - ROM_REGION(0x10000, "audiocpu", 0) + ROM_REGION(0x10000, "soundcpu", 0) ROM_LOAD("chkpntf7.rom", 0x8000, 0x8000, CRC(e6f6d716) SHA1(a034eb94acb174f7dbe192a55cfd00715ca85a75)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("chkpntf6.rom", 0x00000, 0x20000, CRC(2d08043e) SHA1(476c9945354e733bfc9a854760ca8cfa3bc62294)) @@ -256,7 +698,7 @@ ROM_START(gnr_300) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("gnrdispa.300", 0x00000, 0x80000, CRC(4abf29e3) SHA1(595328e0f92a6e1972d71c56505a5dd07a373ef5)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("gnru7.snd", 0x0000, 0x10000, CRC(3b9de915) SHA1(a901a1f37bf5433c819393c4355f9d13164b32ce)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("gnru17.snd", 0x000000, 0x80000, CRC(3d3219d6) SHA1(ac4a6d3eff0cdd02b8c79dddcb8fec2e22faa9b9)) @@ -275,7 +717,7 @@ ROM_START(hook_408) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c)) @@ -289,7 +731,7 @@ ROM_START(hook_401) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c)) @@ -303,7 +745,7 @@ ROM_START(hook_404) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("hokdspa.401", 0x00000, 0x20000, CRC(59a07eb5) SHA1(d1ca41ce417f1772fe4da1eb37077f924b66ad36)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("hooksnd.u7", 0x8000, 0x8000, CRC(642f45b3) SHA1(a4b2084f32e52a596547384906281d04424332fc)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("hook-voi.u17", 0x000000, 0x40000, CRC(6ea9fcd2) SHA1(bffc66df542e06dedddaa403b5513446d9d6fc8c)) @@ -319,7 +761,7 @@ ROM_START(jupk_513) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("jpdspa.510", 0x00000, 0x80000, CRC(9ca61e3c) SHA1(38ae472f38e6fc33671e9a276313208e5ccd8640)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309)) @@ -332,7 +774,7 @@ ROM_START(jupk_501) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("jpdspa.501", 0x00000, 0x80000, CRC(04a87d42) SHA1(e13df9a63ec77ec6f97b681ed99216ef3f3af691)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309)) @@ -345,7 +787,7 @@ ROM_START(jupk_g51) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("jpdspg.501", 0x00000, 0x80000, CRC(3b524bfe) SHA1(ea6ae6f8fc8379f311fd7ef456f0d6711c4e35c5)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("jpu7.dat", 0x0000, 0x10000, CRC(f3afcf13) SHA1(64e12f9d42c00ae08a4584b2ebea475566b90c13)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("jpu17.dat", 0x000000, 0x80000, CRC(38135a23) SHA1(7c284c17783269824a3d3e83c4cd8ead27133309)) @@ -361,7 +803,7 @@ ROM_START(lah_112) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lahdispa.106", 0x00000, 0x80000, CRC(ca6cfec5) SHA1(5e2081387d76bed17c14120cd347d6aaf435276b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe)) @@ -374,7 +816,7 @@ ROM_START(lah_l104) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lahdispl.102", 0x00000, 0x80000, CRC(3482c349) SHA1(8f03ba28132ea5159d3193b3adb7b4a6a43046c6)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe)) @@ -387,7 +829,7 @@ ROM_START(lah_l108) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lahdispl.104", 0x00000, 0x80000, CRC(6b1e51a7) SHA1(ad17507b63f2da8aa0651401ccb8d449c15aa46c)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe)) @@ -400,7 +842,7 @@ ROM_START(lah_110) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lahdispa.106", 0x00000, 0x80000, CRC(ca6cfec5) SHA1(5e2081387d76bed17c14120cd347d6aaf435276b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lahsnd.u7", 0x0000, 0x10000, CRC(0279c45b) SHA1(14daf6b711d1936352209e90240f51812ebe76e0)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lahsnd.u17", 0x000000, 0x80000, CRC(d0c15fa6) SHA1(5dcd13b578fa53c82353cda5aa774ca216c5ddfe)) @@ -417,7 +859,7 @@ ROM_START(lw3_208) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lw3drom1.a26", 0x00000, 0x40000, CRC(44a4cf81) SHA1(c7f3e3d5fbe930650e48423c8ba0ac484ce0640c)) ROM_LOAD("lw3drom0.a26", 0x40000, 0x40000, CRC(22932ed5) SHA1(395aa376cd8562de7956a6e34b8747e7cf81f935)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf)) @@ -431,7 +873,7 @@ ROM_START(lw3_207) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lw3drom1.a26", 0x00000, 0x40000, CRC(44a4cf81) SHA1(c7f3e3d5fbe930650e48423c8ba0ac484ce0640c)) ROM_LOAD("lw3drom0.a26", 0x40000, 0x40000, CRC(22932ed5) SHA1(395aa376cd8562de7956a6e34b8747e7cf81f935)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf)) @@ -445,7 +887,7 @@ ROM_START(lw3_205) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lw3dsp1.205", 0x00000, 0x40000, CRC(9dfeffb4) SHA1(f62f2a884da68b4dbfe7da071058dc8cd1766c36)) ROM_LOAD("lw3dsp0.205", 0x40000, 0x40000, CRC(bd8156f1) SHA1(b18214af1b79cca79bdc634c175c3bf7d0052843)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf)) @@ -459,7 +901,7 @@ ROM_START(lw3_200) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("lw3dsp1.204", 0x00000, 0x40000, CRC(1ba79363) SHA1(46d489a1190533c73370acd8a48cef60d12f87ce)) ROM_LOAD("lw3dsp0.204", 0x40000, 0x40000, CRC(c74d3cf2) SHA1(076ee9b2e3cad0b8058ac0c70f5ffe7e29f3eff5)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("lw3u7.dat", 0x8000, 0x8000, CRC(ba845ac3) SHA1(bb50413ace1885870cb3817edae478904b0eefb8)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("lw3u17.dat", 0x000000, 0x40000, CRC(e34cf2fc) SHA1(417c83ded6637f891c8bb42b32d6898c90a0e5cf)) @@ -476,7 +918,7 @@ ROM_START(trek_201) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("trekdspa.109", 0x00000, 0x20000, CRC(a7e7d44d) SHA1(d26126310b8b316ca161d4202645de8fb6359822)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34)) @@ -490,7 +932,7 @@ ROM_START(trek_200) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("trekdspa.109", 0x00000, 0x20000, CRC(a7e7d44d) SHA1(d26126310b8b316ca161d4202645de8fb6359822)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34)) @@ -504,7 +946,7 @@ ROM_START(trek_120) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("trekdsp.106", 0x00000, 0x20000, CRC(dc3bf312) SHA1(3262d6604d1dcd1dc738bc3f919a3319b783fd73)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34)) @@ -518,7 +960,7 @@ ROM_START(trek_110) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("trekdsp.106", 0x00000, 0x20000, CRC(dc3bf312) SHA1(3262d6604d1dcd1dc738bc3f919a3319b783fd73)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34)) @@ -532,7 +974,7 @@ ROM_START(trek_11a) ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("trekadsp.bin", 0x00000, 0x20000, CRC(54681627) SHA1(4251fa0568d2e869b44358471a3d4a4e88443954)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("trek.u7", 0x8000, 0x8000, CRC(f137abbb) SHA1(11731170ed4f04dd8af05d8f79ad727b0e0104d7)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("trek.u17", 0x000000, 0x40000, CRC(531545da) SHA1(905f34173db0e04eaf5236191186ea209b8a0a34)) @@ -548,7 +990,7 @@ ROM_START(stwr_103) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1)) @@ -561,7 +1003,7 @@ ROM_START(stwr_g11) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("swdsp_g.102", 0x00000, 0x80000, CRC(afdfbfc4) SHA1(1c3cd90b9cd4f88ee2b556abef863a0ae9a10056)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1)) @@ -575,7 +1017,7 @@ ROM_START(stwr_a14) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("swrom1.a14", 0x00000, 0x40000, CRC(4d577828) SHA1(8b1f302621fe2ee13a067b9c97e3dc33f4519cea)) ROM_LOAD("swrom0.a14", 0x40000, 0x40000, CRC(104e5a6b) SHA1(b6a9e32f8aec078665faf2ba9ba4f9f51f68cea8)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1)) @@ -588,7 +1030,7 @@ ROM_START(stwr_102) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1)) @@ -601,7 +1043,7 @@ ROM_START(stwr_e12) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("sw4mrom.a15", 0x00000, 0x80000, CRC(00c87952) SHA1(cd2f491f03fcb3e3ceff7ee7f678aa1957a5d14b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1)) @@ -617,7 +1059,7 @@ ROM_START(tftc_303) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tftcdspa.301", 0x00000, 0x80000, CRC(3888d06f) SHA1(3d276df436a76c6e9bed6629114204dacd88245b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17)) @@ -629,7 +1071,7 @@ ROM_START(tftc_302) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tftcdspa.301", 0x00000, 0x80000, CRC(3888d06f) SHA1(3d276df436a76c6e9bed6629114204dacd88245b)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17)) @@ -641,7 +1083,7 @@ ROM_START(tftc_300) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tftcdspa.300", 0x00000, 0x80000, CRC(bf5c812b) SHA1(c10390b6cad0ad457fb83241c7ee1d6b109cf5be)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17)) @@ -654,7 +1096,7 @@ ROM_START(tftc_200) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tftcdot.a20", 0x00000, 0x80000, CRC(16b3968a) SHA1(6ce91774fc60187e4b0d8874a14ef64e2805eb3f)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17)) @@ -667,7 +1109,7 @@ ROM_START(tftc_104) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tftcdspl.103", 0x00000, 0x80000, CRC(98f3b13e) SHA1(909c373b1a27b5aeebad2535ae4fb9bba71e9b5c)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("sndu7.dat", 0x0000, 0x10000, CRC(7963740e) SHA1(fc1f150dcbab8af865a8ea624dfdcc03301f05e6)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("sndu17.dat", 0x000000, 0x80000, CRC(5c5d009a) SHA1(57d0307ea682eca5a57957e4f61fd92bb7f40e17)) @@ -686,7 +1128,7 @@ ROM_START(tmnt_104) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("tmntdsp.104", 0x00000, 0x10000, CRC(545686b7) SHA1(713df7820d024db3406f5e171f62a53e34474f70)) ROM_RELOAD(0x10000, 0x10000) - ROM_REGION(0x10000, "audiocpu", 0) + ROM_REGION(0x10000, "soundcpu", 0) ROM_LOAD("tmntf7.rom", 0x8000, 0x8000, CRC(59ba0153) SHA1(e7b02a656c67a0d866020a60ee90e30bef77f67f)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("tmntf6.rom", 0x00000, 0x20000, CRC(5668d45a) SHA1(65766cb47791ec0a2243015d487f1156a2819fe6)) @@ -702,7 +1144,7 @@ ROM_START(tmnt_103) ROM_REGION(0x20000, "gfx3", 0) ROM_LOAD("tmntdsp.104", 0x00000, 0x10000, CRC(545686b7) SHA1(713df7820d024db3406f5e171f62a53e34474f70)) ROM_RELOAD(0x10000, 0x10000) - ROM_REGION(0x10000, "audiocpu", 0) + ROM_REGION(0x10000, "soundcpu", 0) ROM_LOAD("tmntf7.rom", 0x8000, 0x8000, CRC(59ba0153) SHA1(e7b02a656c67a0d866020a60ee90e30bef77f67f)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("tmntf6.rom", 0x00000, 0x20000, CRC(5668d45a) SHA1(65766cb47791ec0a2243015d487f1156a2819fe6)) @@ -718,7 +1160,7 @@ ROM_START(tomy_400) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tommydva.400", 0x00000, 0x80000, CRC(9e640d09) SHA1(d921fadeb728cf929c6bae2e79bd4d140192a4d2)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("tommysnd.u7", 0x0000, 0x10000, CRC(ab0b4626) SHA1(31237b4f5e866710506f1336e3ca2dbd6a89385a)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("tommysnd.u17", 0x000000, 0x80000, CRC(11bb2aa7) SHA1(57b4867c109996861f45ead1ceedb7153aff852e)) @@ -733,7 +1175,7 @@ ROM_START(tomy_h30) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("tommydva.300", 0x00000, 0x80000, CRC(1f2d0896) SHA1(50c617e30bb843c69a6ca8afeeb751c886f5e6bd)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("tommysnd.u7", 0x0000, 0x10000, CRC(ab0b4626) SHA1(31237b4f5e866710506f1336e3ca2dbd6a89385a)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("tommysnd.u17", 0x000000, 0x80000, CRC(11bb2aa7) SHA1(57b4867c109996861f45ead1ceedb7153aff852e)) @@ -751,7 +1193,7 @@ ROM_START(wwfr_106) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("wwfdispa.102", 0x00000, 0x80000, CRC(4b629a4f) SHA1(c301d0c785f7bc4d3c23cbda76ff955c742eaeef)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("wfsndu7.512", 0x0000, 0x10000, CRC(eb01745c) SHA1(7222e39c52ed298b737aadaa5b57d2068d39287e)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("wfsndu17.400", 0x000000, 0x80000, CRC(7d9c2ca8) SHA1(5d84559455fe7e27634b28bcab81d54f2676390e)) @@ -764,7 +1206,7 @@ ROM_START(wwfr_103) ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_REGION(0x80000, "gfx3", 0) ROM_LOAD("wfdisp0.400", 0x00000, 0x80000, CRC(e190b90f) SHA1(a0e73ce0b241a81e935e6790e04ea5e1fccf3742)) - ROM_REGION(0x010000, "audiocpu", 0) + ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("wfsndu7.512", 0x0000, 0x10000, CRC(eb01745c) SHA1(7222e39c52ed298b737aadaa5b57d2068d39287e)) ROM_REGION(0x1000000, "bsmt", 0) ROM_LOAD("wfsndu17.400", 0x000000, 0x80000, CRC(7d9c2ca8) SHA1(5d84559455fe7e27634b28bcab81d54f2676390e)) @@ -773,48 +1215,48 @@ ROM_START(wwfr_103) ROM_END -GAME(1983, rab_320, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (3.20)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, rab_130, rab_320, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.30)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, rab_103, rab_320, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, aar_101, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Aaron Spelling (1.01)", GAME_IS_SKELETON_MECHANICAL) +GAME(1983, rab_320, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (3.20)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, rab_130, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.30)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, rab_103, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, aar_101, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Aaron Spelling (1.01)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, btmn_103, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, btmn_101, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.01)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, btmn_g13, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03 Germany)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, btmn_106, btmn_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.06)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, ckpt_a17, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Checkpoint (1.7)", GAME_IS_SKELETON_MECHANICAL) -GAME(1994, gnr_300, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Guns N Roses (3.00)", GAME_IS_SKELETON_MECHANICAL) +GAME(1994, gnr_300, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Guns N Roses (3.00)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, hook_408, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.08)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, hook_401, hook_408, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.01)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, hook_404, hook_408, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.04)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, jupk_513, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.13)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, jupk_501, jupk_513, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, jupk_g51, jupk_513, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01 Germany)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, lah_112, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.12)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, lah_l104, lah_112, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, lah_l108, lah_112, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.08 Spain)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, lah_110, lah_112, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.10)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, lw3_208, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.08)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, lw3_207, lw3_208, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.07 Canada)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, lw3_205, lw3_208, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.05)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, lw3_200, lw3_208, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.00)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, jupk_513, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.13)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, jupk_501, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, jupk_g51, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01 Germany)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, lah_112, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.12)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, lah_l104, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, lah_l108, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.08 Spain)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, lah_110, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.10)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, lw3_208, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.08)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, lw3_207, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.07 Canada)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, lw3_205, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.05)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, lw3_200, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.00)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, trek_201, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.01)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, trek_200, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.00)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, trek_120, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.20)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, trek_110, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10)", GAME_IS_SKELETON_MECHANICAL) GAME(1992, trek_11a, trek_201, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, stwr_103, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.03)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, stwr_g11, stwr_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.01 Germany)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, stwr_a14, stwr_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, stwr_102, stwr_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02)", GAME_IS_SKELETON_MECHANICAL) -GAME(1992, stwr_e12, stwr_103, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02 England)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, tftc_303, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.03)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, tftc_302, tftc_303, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.02 Dutch)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, tftc_300, tftc_303, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.00)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, tftc_200, tftc_303, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", GAME_IS_SKELETON_MECHANICAL) -GAME(1993, tftc_104, tftc_303, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, stwr_103, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.03)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, stwr_g11, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.01 Germany)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, stwr_a14, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, stwr_102, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02)", GAME_IS_SKELETON_MECHANICAL) +GAME(1992, stwr_e12, stwr_103, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02 England)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, tftc_303, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.03)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, tftc_302, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.02 Dutch)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, tftc_300, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.00)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, tftc_200, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", GAME_IS_SKELETON_MECHANICAL) +GAME(1993, tftc_104, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, tmnt_104, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", GAME_IS_SKELETON_MECHANICAL) GAME(1991, tmnt_103, tmnt_104, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", GAME_IS_SKELETON_MECHANICAL) -GAME(1994, tomy_400, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", GAME_IS_SKELETON_MECHANICAL) -GAME(1994, tomy_h30, tomy_400, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00 Holland)", GAME_IS_SKELETON_MECHANICAL) -GAME(1994, wwfr_106, 0, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.06)", GAME_IS_SKELETON_MECHANICAL) -GAME(1994, wwfr_103, wwfr_106, de_3, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.03)", GAME_IS_SKELETON_MECHANICAL) +GAME(1994, tomy_400, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", GAME_IS_SKELETON_MECHANICAL) +GAME(1994, tomy_h30, tomy_400, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00 Holland)", GAME_IS_SKELETON_MECHANICAL) +GAME(1994, wwfr_106, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.06)", GAME_IS_SKELETON_MECHANICAL) +GAME(1994, wwfr_103, wwfr_106, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.03)", GAME_IS_SKELETON_MECHANICAL) diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 90cd4a50be3..c0ca8c8c5db 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1892,6 +1892,7 @@ $(MAMEOBJ)/pinball.a: \ $(DRIVERS)/capcom.o \ $(DRIVERS)/de_2.o \ $(DRIVERS)/de_3.o \ + $(VIDEO)/decodmd2.o \ $(DRIVERS)/de_3b.o \ $(DRIVERS)/flicker.o \ $(DRIVERS)/g627.o \ diff --git a/src/mame/video/decodmd2.c b/src/mame/video/decodmd2.c new file mode 100644 index 00000000000..7bbfadf00d0 --- /dev/null +++ b/src/mame/video/decodmd2.c @@ -0,0 +1,215 @@ +/* + * Data East Pinball Dot Matrix Display + * + * Type 2: 128x32 + * 68B09E @ 8MHz + * 68B45 CRTC + */ + +#include "decodmd2.h" +#include "rendlay.h" + +const device_type DECODMD2 = &device_creator; + +WRITE8_MEMBER( decodmd_type2_device::bank_w ) +{ + m_rombank1->set_entry(data & 0x1f); +} + +WRITE8_MEMBER( decodmd_type2_device::crtc_address_w ) +{ + m_mc6845->address_w(space,offset,data); + m_crtc_index = data; +} + +READ8_MEMBER( decodmd_type2_device::crtc_status_r ) +{ + return m_mc6845->register_r(space,offset); +} + +WRITE8_MEMBER( decodmd_type2_device::crtc_register_w ) +{ + m_mc6845->register_w(space,offset,data); + m_crtc_reg[m_crtc_index] = data; +} + +READ8_MEMBER( decodmd_type2_device::latch_r ) +{ + // clear IRQ? + m_cpu->set_input_line(M6809_IRQ_LINE,CLEAR_LINE); + m_busy = false; + return m_command; +} + +WRITE8_MEMBER( decodmd_type2_device::data_w ) +{ + // set IRQ? + m_latch = data; +} + +READ8_MEMBER( decodmd_type2_device::busy_r ) +{ + UINT8 ret = 0x00; + + ret = (m_status & 0x03) << 3; + + if(m_busy) + return 0x80 | ret; + else + return 0x00 | ret; +} + + +WRITE8_MEMBER( decodmd_type2_device::ctrl_w ) +{ + if(!(m_ctrl & 0x01) && (data & 0x01)) + { + m_cpu->set_input_line(M6809_IRQ_LINE,ASSERT_LINE); + m_busy = true; + m_command = m_latch; + } + if((m_ctrl & 0x02) && !(data & 0x02)) + { + m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); + m_rombank1->set_entry(0); + logerror("DMD2: Reset\n"); + } + m_ctrl = data; +} + +READ8_MEMBER( decodmd_type2_device::status_r ) +{ + return m_status; +} + +WRITE8_MEMBER( decodmd_type2_device::status_w ) +{ + m_status = data & 0x0f; +} + +TIMER_DEVICE_CALLBACK_MEMBER(decodmd_type2_device::dmd_firq) +{ + m_cpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE); +} + +MC6845_INTERFACE( decodmd2_6845_intf ) +{ + NULL, /* screen name */ + false, /* show border area */ + 16, /* number of pixels per video memory address */ + NULL, /* begin_update */ + NULL, /* update_row */ + NULL, /* end_update */ + DEVCB_NULL, /* on_de_changed */ + DEVCB_NULL, /* on_cur_changed */ + DEVCB_NULL, /* on_hsync_changed */ + DEVCB_NULL, /* on_vsync_changed */ + NULL +}; + +static ADDRESS_MAP_START( decodmd2_map, AS_PROGRAM, 8, decodmd_type2_device ) + AM_RANGE(0x0000, 0x2fff) AM_RAMBANK("dmdram") + AM_RANGE(0x3000, 0x3000) AM_READWRITE(crtc_status_r,crtc_address_w) + AM_RANGE(0x3001, 0x3001) AM_WRITE(crtc_register_w) + AM_RANGE(0x3002, 0x3002) AM_WRITE(bank_w) + AM_RANGE(0x3003, 0x3003) AM_READ(latch_r) + AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("dmdbank1") AM_WRITE(status_w) + AM_RANGE(0x8000, 0xffff) AM_ROMBANK("dmdbank2") // last 32k of ROM +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( decodmd2 ) + /* basic machine hardware */ + MCFG_CPU_ADD("dmdcpu", M6809E, XTAL_8MHz) + MCFG_CPU_PROGRAM_MAP(decodmd2_map) + + MCFG_QUANTUM_TIME(attotime::from_hz(60)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("firq_timer",decodmd_type2_device,dmd_firq,attotime::from_hz(60)) + + MCFG_MC6845_ADD("dmd6845",MC6845,XTAL_8MHz / 8,decodmd2_6845_intf) // TODO: confirm clock speed + + MCFG_DEFAULT_LAYOUT(layout_lcd) + + MCFG_SCREEN_ADD("dmd",RASTER) + MCFG_SCREEN_SIZE(128, 32) + MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 32-1) + MCFG_SCREEN_UPDATE_DRIVER(decodmd_type2_device, screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("12K") + +MACHINE_CONFIG_END + +machine_config_constructor decodmd_type2_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( decodmd2 ); +} + +decodmd_type2_device::decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, DECODMD2, "Data East Pinball Dot Matrix Display Type 2", tag, owner, clock, "decodmd2", __FILE__), + m_cpu(*this,"dmdcpu"), + m_mc6845(*this,"dmd6845"), + m_rombank1(*this,"dmdbank1"), + m_rombank2(*this,"dmdbank2"), + m_rambank(*this,"dmdram"), + m_ram(*this,RAM_TAG) +{} + +void decodmd_type2_device::device_start() +{ +} + +void decodmd_type2_device::device_reset() +{ + UINT8* ROM; + UINT8* RAM = m_ram->pointer(); + m_rom = memregion(m_romregion); + + memset(RAM,0,0x3000); + + ROM = m_rom->base(); + m_rombank1->configure_entries(0, 32, &ROM[0x0000], 0x4000); + m_rombank2->configure_entry(0, &ROM[0x78000]); + m_rambank->configure_entry(0, &RAM[0]); + m_rombank1->set_entry(0); + m_rombank2->set_entry(0); + m_rambank->set_entry(0); + m_busy = false; +} + +void decodmd_type2_device::device_config_complete() +{ + // inherit a copy of the static data + const decodmd_intf *intf = reinterpret_cast(static_config()); + if (intf != NULL) + *static_cast(this) = *intf; + + // or initialize to defaults if none provided + else + { + m_romregion = NULL; + } +} + +UINT32 decodmd_type2_device::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ) +{ + UINT16 addr = (START_ADDRESS & 0xfc00) | ((START_ADDRESS & 0x1ff) << 2); + UINT8* RAM = m_ram->pointer(); + UINT8 x,y,dot,intensity; + + for(y=0;y> (7-dot) & 0x01) | ((RAM[addr+0x200] >> (7-dot) & 0x01) << 1); + bitmap.pix32(y,x+dot) = MAKE_RGB(0x3f*intensity,0x2a*intensity,0x00); + } + addr++; + } + } + + return 0; +} diff --git a/src/mame/video/decodmd2.h b/src/mame/video/decodmd2.h new file mode 100644 index 00000000000..39c294bae12 --- /dev/null +++ b/src/mame/video/decodmd2.h @@ -0,0 +1,69 @@ +/* + * Data East Pinball DMD Type 2 Display + */ + +#ifndef DECODMD_H_ +#define DECODMD_H_ + +#include "emu.h" +#include "cpu/m6809/m6809.h" +#include "video/mc6845.h" +#include "machine/ram.h" + +#define MCFG_DECODMD_TYPE2_ADD(_tag, _intrf) \ + MCFG_DEVICE_ADD(_tag, DECODMD2, 0) \ + MCFG_DEVICE_CONFIG(_intrf) + +#define START_ADDRESS (((m_crtc_reg[0x0c]<<8) & 0x3f00) | (m_crtc_reg[0x0d] & 0xff)) + +struct decodmd_intf +{ + const char* m_romregion; // region containing display ROM +}; + +class decodmd_type2_device : public device_t, + public decodmd_intf +{ +public: + decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + required_device m_cpu; + required_device m_mc6845; + required_memory_bank m_rombank1; + required_memory_bank m_rombank2; + required_memory_bank m_rambank; + required_device m_ram; + memory_region* m_rom; + + UINT32 screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ); + + DECLARE_WRITE8_MEMBER(bank_w); + DECLARE_WRITE8_MEMBER(crtc_address_w); + DECLARE_WRITE8_MEMBER(crtc_register_w); + DECLARE_READ8_MEMBER(crtc_status_r); + DECLARE_READ8_MEMBER(latch_r); + DECLARE_WRITE8_MEMBER(data_w); + DECLARE_READ8_MEMBER(busy_r); + DECLARE_WRITE8_MEMBER(ctrl_w); + DECLARE_READ8_MEMBER(status_r); + DECLARE_WRITE8_MEMBER(status_w); + TIMER_DEVICE_CALLBACK_MEMBER(dmd_firq); + +protected: + virtual machine_config_constructor device_mconfig_additions() const; + virtual void device_start(); + virtual void device_reset(); + virtual void device_config_complete(); + +private: + UINT8 m_crtc_index; + UINT8 m_crtc_reg[0x100]; + UINT8 m_latch; + UINT8 m_status; + UINT8 m_ctrl; + UINT8 m_busy; + UINT8 m_command; +}; + +extern const device_type DECODMD2; + +#endif /* DECODMD_H_ */