summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2009-07-13 21:37:09 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2009-07-13 21:37:09 +0000
commitba36cda75e4d6d4cd4a9cdda8711af32d05a0f03 (patch)
tree98e6ca7542e49100bc201f5488b58ad6b1d07758
parentf026a7e02a9599304fce2e22071d3467c70e1a9b (diff)
New games marked as GAME_NOT_WORKING
------------------------------------ Cobra Command (Data East LD) [Angelo Salese] Road Blaster (Data East LD) [Angelo Salese]
-rw-r--r--.gitattributes1
-rw-r--r--src/mame/drivers/deco_ld.c474
-rw-r--r--src/mame/mame.mak1
-rw-r--r--src/mame/mamedriv.c4
4 files changed, 480 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
index 561d78c5cf6..de5605757ab 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1450,6 +1450,7 @@ src/mame/drivers/dec0.c svneol=native#text/plain
src/mame/drivers/dec8.c svneol=native#text/plain
src/mame/drivers/deco156.c svneol=native#text/plain
src/mame/drivers/deco32.c svneol=native#text/plain
+src/mame/drivers/deco_ld.c svneol=native#text/plain
src/mame/drivers/deco_mlc.c svneol=native#text/plain
src/mame/drivers/decocass.c svneol=native#text/plain
src/mame/drivers/deniam.c svneol=native#text/plain
diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c
new file mode 100644
index 00000000000..921d7e0fa1e
--- /dev/null
+++ b/src/mame/drivers/deco_ld.c
@@ -0,0 +1,474 @@
+/***************************************************************************
+
+Bega's Battle (c) 1983 Data East Corporation
+
+preliminary driver by Angelo Salese
+
+TODO:
+- laserdisc hook-ups;
+- video emulation is bare bones;
+- i/os
+
+***************************************************************************/
+
+#include "driver.h"
+#include "cpu/m6502/m6502.h"
+#include "sound/ay8910.h"
+#include "machine/laserdsc.h"
+
+static UINT8 vram_bank;
+static const device_config *laserdisc;
+static UINT8 laserdisc_data;
+
+static VIDEO_UPDATE( rblaster )
+{
+ const gfx_element *gfx = screen->machine->gfx[0];
+ int count = 0x0000;
+
+ int y,x;
+
+ for (y=0;y<32;y++)
+ {
+ for (x=0;x<32;x++)
+ {
+ int tile = videoram[count];
+ int colour = (vram_bank & 0x7);
+ drawgfx_opaque(bitmap,cliprect,gfx,tile,colour,0,0,x*8,y*8);
+
+ count++;
+ }
+ }
+
+ return 0;
+}
+
+#if 0
+static WRITE8_HANDLER( rblaster_sound_w )
+{
+ soundlatch_w(space,0,data);
+ cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
+}
+#endif
+
+static WRITE8_HANDLER( rblaster_vram_bank_w )
+{
+ vram_bank = data;
+}
+
+static READ8_HANDLER( laserdisc_r )
+{
+ UINT8 result = laserdisc_data_r(laserdisc);
+ mame_printf_debug("laserdisc_r = %02X\n", result);
+ return result;
+}
+
+
+static WRITE8_HANDLER( laserdisc_w )
+{
+ laserdisc_data = data;
+}
+
+static READ8_HANDLER( test_r )
+{
+ return mame_rand(space->machine);
+}
+
+static ADDRESS_MAP_START( cobra_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x0fff) AM_RAM
+ AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN1")
+ AM_RANGE(0x1001, 0x1001) AM_READ(test_r)//_PORT("IN2")
+ AM_RANGE(0x1002, 0x1002) AM_READ(test_r)//_PORT("IN3")
+ AM_RANGE(0x1003, 0x1003) AM_READ(test_r)//AM_READ_PORT("IN0")
+// AM_RANGE(0x1004, 0x1004) AM_READ(test_r)//_PORT("IN4")
+// AM_RANGE(0x1005, 0x1005) AM_READ(test_r)//_PORT("IN5")
+ AM_RANGE(0x1004, 0x1004) AM_WRITE(rblaster_vram_bank_w) //might be 1001
+ AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command
+ AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data
+ AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE(&paletteram)
+ AM_RANGE(0x2000, 0x2fff) AM_RAM
+ AM_RANGE(0x3000, 0x37ff) AM_RAM //vram attr?
+ AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE(&videoram)
+ AM_RANGE(0x4000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( rblaster_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x0fff) AM_RAM
+// AM_RANGE(0x1000, 0x1007) AM_NOP
+ AM_RANGE(0x1001, 0x1001) AM_WRITENOP //???
+ AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN0")
+ AM_RANGE(0x1003, 0x1003) AM_WRITE(rblaster_vram_bank_w) //might be 1001
+ AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command
+ AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data
+ AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE(&paletteram)
+ AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&videoram)
+ AM_RANGE(0x3000, 0x3fff) AM_RAM
+ AM_RANGE(0xc000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+/* sound arrangement is pratically identical to Zero Target. */
+static int nmimask;
+
+//static WRITE8_HANDLER( nmimask_w ) { nmimask = data & 0x80; }
+
+static INTERRUPT_GEN ( sound_interrupt ) { if (!nmimask) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); }
+
+
+static ADDRESS_MAP_START( rblaster_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x01ff) AM_RAM
+ AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_data_w)
+ AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_address_w)
+ AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_data_w)
+ AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_address_w)
+ AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
+ AM_RANGE(0xe000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+static INPUT_PORTS_START( cobra )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("IN3")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("IN4")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("IN5")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( rblaster )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x00, "SYSA" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static const gfx_layout charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,3),
+ 3,
+ { RGN_FRAC(2,3),RGN_FRAC(1,3),RGN_FRAC(0,3) },
+ { 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
+ 8*8
+};
+
+static GFXDECODE_START( rblaster )
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 )
+GFXDECODE_END
+
+static MACHINE_START( rblaster )
+{
+ laserdisc = devtag_get_device(machine, "laserdisc");
+}
+
+static MACHINE_DRIVER_START( rblaster )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD("maincpu",M6502,8000000/2)
+ MDRV_CPU_PROGRAM_MAP(rblaster_map)
+// MDRV_CPU_VBLANK_INT("screen",irq0_line_hold)
+ MDRV_CPU_VBLANK_INT("screen",nmi_line_pulse)
+
+ MDRV_CPU_ADD("audiocpu",M6502,8000000/2)
+ MDRV_CPU_PROGRAM_MAP(rblaster_sound_map)
+// MDRV_CPU_VBLANK_INT("screen",irq0_line_hold) //test
+ MDRV_CPU_PERIODIC_INT(sound_interrupt, 640)
+
+ MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound") //Sony LDP-1000A, is it truly compatible with the Pioneer?
+ MDRV_LASERDISC_OVERLAY(rblaster, 256, 256, BITMAP_FORMAT_INDEXED16)
+
+ /* video hardware */
+ MDRV_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MDRV_GFXDECODE(rblaster)
+ MDRV_PALETTE_LENGTH(512)
+ MDRV_MACHINE_START(rblaster)
+
+ /* sound hardware */
+ MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MDRV_SOUND_ADD("ay1", AY8910, 1500000)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+
+ MDRV_SOUND_ADD("ay2", AY8910, 1500000)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+
+ MDRV_SOUND_ADD("ldsound", LASERDISC, 0)
+ MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_DRIVER_END
+
+static MACHINE_DRIVER_START( cobra )
+ MDRV_IMPORT_FROM( rblaster )
+ MDRV_CPU_MODIFY("maincpu")
+ MDRV_CPU_PROGRAM_MAP(cobra_map)
+
+ MDRV_DEVICE_REMOVE("audiocpu")
+MACHINE_DRIVER_END
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( rblaster )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "01.bin", 0xc000, 0x2000, CRC(e4733c49) SHA1(357f46a80273f8a365d16cddf5e2caaeeacaf4ad) )
+ ROM_LOAD( "00.bin", 0xe000, 0x2000, CRC(084d6ae2) SHA1(f49eb2d53bad5af88a12535ba628c9decce690ff) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "02.bin", 0xe000, 0x2000, CRC(6c20335d) SHA1(b28e80f112553af8e3fba9ebbfc10d1f56396ac1) )
+
+ ROM_REGION( 0xc000, "gfx1", 0 )
+ ROM_LOAD( "03.bin", 0x0000, 0x2000, CRC(d1ff5ffb) SHA1(29df207e225e3b0477d5566d256198310d6ae526) )
+ ROM_LOAD( "06.bin", 0x2000, 0x2000, CRC(d1ff5ffb) SHA1(29df207e225e3b0477d5566d256198310d6ae526) )
+ ROM_LOAD( "04.bin", 0x4000, 0x2000, CRC(da2c84d9) SHA1(3452b0e2a45fa771e226c3a3668afbf3ceb0ec11) )
+ ROM_LOAD( "07.bin", 0x6000, 0x2000, CRC(da2c84d9) SHA1(3452b0e2a45fa771e226c3a3668afbf3ceb0ec11) )
+ ROM_LOAD( "05.bin", 0x8000, 0x2000, CRC(4608b516) SHA1(44af4be84a0b807ea0813ce86376a4b6fd927e5a) )
+ ROM_LOAD( "08.bin", 0xa000, 0x2000, CRC(4608b516) SHA1(44af4be84a0b807ea0813ce86376a4b6fd927e5a) )
+
+ DISK_REGION( "laserdisc" )
+ DISK_IMAGE_READONLY( "rblaster", 0, NO_DUMP )
+ROM_END
+
+ROM_START( cobra )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "au03-2", 0x8000, 0x2000, CRC(8f0a8fba) SHA1(8e11d2bd665a5ca6b3bb11aa2b707458c1534327) )
+ ROM_LOAD( "au02-2", 0xa000, 0x2000, CRC(7db11acf) SHA1(1eebae0741f5735bc8966f3c31a9c07dac2e3916) )
+ ROM_LOAD( "au01-2", 0xc000, 0x2000, CRC(523dd8f6) SHA1(47bd4c9b2272e9a710e6e97f2505075df68101ed) )
+ ROM_LOAD( "au00-2", 0xe000, 0x2000, CRC(6c0f1f16) SHA1(ed05d3eaa24e84b1dfb4e1eb5f69b23e4a1494ba) )
+ ROM_COPY( "maincpu", 0x8000, 0x4000, 0x4000 )
+
+ ROM_REGION( 0xc000, "gfx1", 0 )
+ ROM_LOAD( "au0a", 0x0000, 0x2000, CRC(6aaedcf3) SHA1(52dc913eecf8a159784d500217cffd7a6d8eb45c) )
+ ROM_LOAD( "au0b", 0x4000, 0x2000, CRC(92247877) SHA1(f9bb0c20212ab13caabfb5beb9b6afc807bc9555) )
+ ROM_LOAD( "au0c", 0x8000, 0x2000, CRC(d00a2762) SHA1(84d4329b39b9fd30682b7efa5cb2744934c5ee5c) )
+
+ ROM_LOAD( "au07", 0x2000, 0x2000, CRC(d4bf12a5) SHA1(e172f69ae02ac2670b70af0cfcf3887dd99c2761) )
+ ROM_LOAD( "au08", 0x6000, 0x2000, CRC(63158274) SHA1(c728e8ba0a11ea67cf508877ad74a3aab9ef26fc) )
+ ROM_LOAD( "au09", 0xa000, 0x2000, CRC(74e93394) SHA1(7a1470cf2008b1bef8d950939b758707297b3655) )
+
+ DISK_REGION( "laserdisc" )
+ DISK_IMAGE_READONLY( "cobra", 0, NO_DUMP )
+ROM_END
+
+// Bega's Battle
+GAME( 1984, cobra, 0, cobra, cobra, 0, ROT0, "Data East", "Cobra Command (Data East LD)", GAME_NOT_WORKING )
+// Thunder Storm (Cobra Command Japanese version)
+GAME( 1985, rblaster, 0, rblaster, rblaster, 0, ROT0, "Data East", "Road Blaster (Data East LD)", GAME_NOT_WORKING )
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 515c6004cbb..5492720e24d 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -556,6 +556,7 @@ $(MAMEOBJ)/dataeast.a: \
$(DRIVERS)/dblewing.o \
$(DRIVERS)/dec0.o $(MACHINE)/dec0.o $(VIDEO)/dec0.o \
$(DRIVERS)/dec8.o $(VIDEO)/dec8.o \
+ $(DRIVERS)/deco_ld.o \
$(DRIVERS)/deco_mlc.o $(VIDEO)/deco_mlc.o \
$(DRIVERS)/deco156.o $(MACHINE)/deco156.o \
$(DRIVERS)/deco32.o $(VIDEO)/deco32.o \
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index e7f1d939b32..bdf78887330 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -4721,6 +4721,10 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
/* UX8 1985.01 Tokyo Mie Shinryoujo Part 2 */
/* UX9 1985.05 Geinoujin Shikaku Shiken */
+ /* Data East LD games */
+ DRIVER( cobra ) /* (c) 1984 */
+ DRIVER( rblaster ) /* (c) 1985 */
+
/* other Data East games */
DRIVER( madalien ) /* (c) 1980 */
DRIVER( madalina ) /* (c) 1980 */