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.

This commit is contained in:
mahlemiut 2013-06-24 10:57:12 +00:00
parent 0155e9f64d
commit 150c9b7193
5 changed files with 834 additions and 105 deletions

2
.gitattributes vendored
View File

@ -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

View File

@ -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<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<pia6821_device> m_pia21;
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia2c;
required_device<pia6821_device> m_pia30;
required_device<pia6821_device> m_pia34;
optional_device<decodmd_type2_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<decobsmt_device> m_decobsmt;
// required_device<msm5205_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)

View File

@ -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 \

215
src/mame/video/decodmd2.c Normal file
View File

@ -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<decodmd_type2_device>;
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<const decodmd_intf *>(static_config());
if (intf != NULL)
*static_cast<decodmd_intf *>(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<bitmap.height();y++)
{
for(x=0;x<bitmap.width();x+=8)
{
for(dot=0;dot<8;dot++)
{
intensity = (RAM[addr] >> (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;
}

69
src/mame/video/decodmd2.h Normal file
View File

@ -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<cpu_device> m_cpu;
required_device<mc6845_device> m_mc6845;
required_memory_bank m_rombank1;
required_memory_bank m_rombank2;
required_memory_bank m_rambank;
required_device<ram_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_ */