summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author David Haywood <mamehaze@users.noreply.github.com>2016-02-23 22:25:09 +0000
committer David Haywood <mamehaze@users.noreply.github.com>2016-02-23 22:25:09 +0000
commiteb3600df1185beebcbeb0eba295fb500d9acc2fc (patch)
tree7a26ad82ea3c7f28533845b501a86a7c4d32d630 /src
parentfe2e403d77e88b50f81ba58850f6b28f225dad87 (diff)
new clones
D. D. Crew (bootleg) [Porchy, Caius, The Dumping Union] (NOT WORKING) like most actual-era System 18 bootlegs this is a mess of modified hardware, eg. no VDP, completely different tilemap systems, sound systems and such.
Diffstat (limited to 'src')
-rw-r--r--src/mame/arcade.lst2
-rw-r--r--src/mame/drivers/system16.cpp116
-rw-r--r--src/mame/includes/system16.h4
-rw-r--r--src/mame/video/sega16sp.h20
4 files changed, 136 insertions, 6 deletions
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 644ecebcd33..afaf5558a94 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -4897,7 +4897,7 @@ astormb2 // BOOTLEG
shdancbl // BOOTLEG
shdancbla // BOOTLEG
mwalkbl // BOOTLEG
-
+ddcrewbl
// Outrun Hardware
// 1986.11 Outrun (US)
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 2c36cdd09af..8786ad6d8ca 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -1349,6 +1349,43 @@ static ADDRESS_MAP_START( astormbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xffc000, 0xffffff) AM_RAM
ADDRESS_MAP_END
+READ16_MEMBER(segas1x_bootleg_state::ddcrew_c41006_r)
+{
+ return 0xffff;//rand();
+}
+
+// todo: this
+static ADDRESS_MAP_START( ddcrewbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x200000, 0x27ffff) AM_ROM
+
+ AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
+ AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
+ AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
+// AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("COINAGE")
+// AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW1")
+
+// AM_RANGE(0xa0000e, 0xa0000f) AM_WRITE(sys18_tilebank_w)
+// AM_RANGE(0xa01000, 0xa01001) AM_READ_PORT("SERVICE")
+// AM_RANGE(0xa01002, 0xa01003) AM_READ_PORT("P1")
+// AM_RANGE(0xa01004, 0xa01005) AM_READ_PORT("P2")
+// AM_RANGE(0xa01006, 0xa01007) AM_READ_PORT("P3")
+
+ AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+
+ AM_RANGE(0xC00000, 0xC00001) AM_WRITENOP
+
+ AM_RANGE(0xC40000, 0xC40001) AM_READ(ddcrew_c41006_r)
+ AM_RANGE(0xC40002, 0xC40003) AM_READ(ddcrew_c41006_r)
+
+
+ AM_RANGE(0xC41000, 0xC41001) AM_READ(ddcrew_c41006_r)
+ AM_RANGE(0xC41006, 0xC41007) AM_READ(ddcrew_c41006_r)
+
+ AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w)
+ AM_RANGE(0xffc000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
/*************************************
*
* Input ports
@@ -2434,6 +2471,34 @@ static MACHINE_CONFIG_DERIVED( shdancbla, system18 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( ddcrewbl, segas1x_bootleg_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 10000000)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
+ MCFG_CPU_PROGRAM_MAP(ddcrewbl_map)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", sys16)
+ MCFG_PALETTE_ADD("palette", (2048+2048)*SHADOW_COLORS_MULTIPLIER)
+
+ MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
+
+ MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites")
+ MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-107)
+
+MACHINE_CONFIG_END
+
+
/*************************************
*
* ROM definition(s)
@@ -3477,6 +3542,48 @@ ROM_START( shdancbla )
ROM_LOAD( "10.bin", 0x10000, 0x10000, CRC(d47a1610) SHA1(96d22068321de3c285a41d28342ab97d1dfa09da) )
ROM_LOAD( "9.bin", 0x20000, 0x10000, CRC(430faf5e) SHA1(dfe34a757937d7a971911fcefd14dfd7f5942b02) )
ROM_END
+
+// seems derived from the D. D. Crew (World, 4 Players) / FD1094 317-0187 version, old bootleg from the period the game was released
+ROM_START( ddcrewbl )
+ ROM_REGION( 0x400000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "11.bin", 0x000000, 0x20000, CRC(c670c8a6) SHA1(eeda32aa9f75b8917e39484f579441a6020c29f4) )
+ ROM_LOAD16_BYTE( "15.bin", 0x000001, 0x20000, CRC(7f3baab1) SHA1(390310765137cffc2a1119f1839195134439e929) )
+ ROM_LOAD16_BYTE( "12.bin", 0x040000, 0x20000, CRC(f8d3fedc) SHA1(3a3151c9a05db3f8c736f57d90f2dd3e5ea708dd) )
+ ROM_LOAD16_BYTE( "16.bin", 0x040001, 0x20000, CRC(9662afd7) SHA1(688a0b1b5a83b1cfb2ea2f08f4ca15d8a8be08d4) )
+ ROM_LOAD16_BYTE( "13.bin", 0x200000, 0x20000, CRC(0033fe50) SHA1(3f29db7ddcfb5b6d6dfdd500d6541ac6018974ca) )
+ ROM_LOAD16_BYTE( "17.bin", 0x200001, 0x20000, CRC(bbb43241) SHA1(7a2955c59c39e9e214f15a842d3bc94d7a1095f3) )
+ ROM_LOAD16_BYTE( "14.bin", 0x240000, 0x20000, CRC(8780712e) SHA1(05ab2f7b108e0ae139237665da14f33132fb555e) )
+ ROM_LOAD16_BYTE( "18.bin", 0x240001, 0x20000, CRC(94b69d68) SHA1(e49ac664f4a5576737db9b9a7eee34b8c5fcd333))
+
+ ROM_REGION( 0xc0000, "gfx1", 0 ) // tiles (same as original)
+ ROM_LOAD( "fac-03.bin", 0x00000, 0x40000, CRC(2228cd88) SHA1(5774bb6a401c3da05c5f3c9d3996b20bb3713cb2) )
+ ROM_LOAD( "fac-02.bin", 0x40000, 0x40000, CRC(edba8e10) SHA1(25a2833ead4ca363802ddc2eb97c40976502921a) )
+ ROM_LOAD( "fac-01.bin", 0x80000, 0x40000, CRC(e8ecc305) SHA1(a26d0c5c7826cd315f8b2c27e5a503a2a7b535c4) )
+
+ ROM_REGION16_BE( 0x800000, "sprites", 0 ) // sprites (same as original)
+ ROM_LOAD16_BYTE( "fac-10.bin", 0x000001, 0x80000, CRC(4fda6a4b) SHA1(a9e582e494ab967e8f3ccf4d5844bb8ef889928c) )
+ ROM_LOAD16_BYTE( "fac-11.bin", 0x000000, 0x80000, CRC(3cbf1f2a) SHA1(80b6b006936740087786acd538e28aca85fa6894) )
+ ROM_LOAD16_BYTE( "fac-08.bin", 0x200001, 0x80000, CRC(e9c74876) SHA1(aff9d071e77f01c6937188bf67be38fa898343e6) )
+ ROM_LOAD16_BYTE( "fac-09.bin", 0x200000, 0x80000, CRC(59022c31) SHA1(5e1409fe0f29284dc6a3ffacf69b761aae09f132) )
+ ROM_LOAD16_BYTE( "fac-06.bin", 0x400001, 0x80000, CRC(720d9858) SHA1(8ebcb8b3e9555ca48b28908d47dcbbd654398b6f) )
+ ROM_LOAD16_BYTE( "fac-07.bin", 0x400000, 0x80000, CRC(7775fdd4) SHA1(a03cac039b400b651a4bf2167a8f2338f488ce26) )
+ ROM_LOAD16_BYTE( "fac-04.bin", 0x600001, 0x80000, CRC(846c4265) SHA1(58d0c213d085fb4dee18b7aefb05087d9d522950) )
+ ROM_LOAD16_BYTE( "fac-05.bin", 0x600000, 0x80000, CRC(0e76c797) SHA1(9a44dc948e84e5acac36e80105c2349ee78e6cfa) )
+
+ ROM_REGION( 0x80000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "fac-12.bin", 0x00000, 0x80000, CRC(2e7dade2) SHA1(4133138990ed10f56e299399f034f86ffd9cbd47) )
+
+ ROM_REGION( 0x100000, "proms", 0 )
+ ROM_LOAD( "82s123.bin", 0x000, 0x020, CRC(58bcf8bd) SHA1(e4d3d179b08c0f3424a6bec0f15058fb1b56f8d8) )
+ ROM_LOAD( "82s129.bin", 0x000, 0x100, CRC(00b5c4c4) SHA1(acab51ad861b25edf310b9b903a7fc486daaee4b) )
+
+ ROM_REGION( 0x100000, "gals", 0 )
+ ROM_LOAD( "gal16v8-1.bin", 0x000, 0x117, CRC(64892ee8) SHA1(c7ea077aead5934d95d61f82bdf705dc0cb0e8e4) )
+ ROM_LOAD( "gal16v8-2.bin", 0x000, 0x117, CRC(22133a8f) SHA1(0b5bc074cfe88c0631df63e0c0a733c660d73af0) )
+ROM_END
+
+
+
/*************************************
*
* Driver initialization
@@ -3630,6 +3737,13 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,fpointbl)
m_fore_yscroll = 2;
}
+DRIVER_INIT_MEMBER(segas1x_bootleg_state,ddcrewbl)
+{
+ DRIVER_INIT_CALL(common);
+ m_spritebank_type = 0;
+}
+
+
WRITE16_MEMBER(segas1x_bootleg_state::altbeastbl_gfx_w)
{
switch (offset) {
@@ -3801,3 +3915,5 @@ GAME( 1990, astormb2, astorm, astormbl, astormbl, segas1x_bootleg_state
GAME( 1990, mwalkbl, mwalk, mwalkbl, mwalkbl, segas1x_bootleg_state, mwalkbl, ROT0, "bootleg", "Michael Jackson's Moonwalker (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1989, shdancbl, shdancer, shdancbl, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1989, shdancbla, shdancer, shdancbla, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 1990, ddcrewbl, ddcrew, ddcrewbl, astormbl, segas1x_bootleg_state, ddcrewbl, ROT0, "bootleg", "D. D. Crew (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
diff --git a/src/mame/includes/system16.h b/src/mame/includes/system16.h
index 5173524b89e..18d4324a9a2 100644
--- a/src/mame/includes/system16.h
+++ b/src/mame/includes/system16.h
@@ -1,8 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria, Phil Stroffolino, Mirko Buffoni
-// later, this might be merged with segas1x_state in segas16.h
-
#include "video/sega16sp.h"
#include "machine/segaic16.h"
#include "sound/msm5205.h"
@@ -131,6 +129,7 @@ public:
DECLARE_READ16_MEMBER(passht4b_io1_r);
DECLARE_READ16_MEMBER(passht4b_io2_r);
DECLARE_READ16_MEMBER(passht4b_io3_r);
+ DECLARE_READ16_MEMBER(ddcrew_c41006_r);
DECLARE_WRITE16_MEMBER(sys16_tilebank_w);
DECLARE_WRITE8_MEMBER(tturfbl_msm5205_data_w);
DECLARE_READ8_MEMBER(tturfbl_soundbank_r);
@@ -186,6 +185,7 @@ public:
DECLARE_DRIVER_INIT(shinobl);
DECLARE_DRIVER_INIT(tturfbl);
DECLARE_DRIVER_INIT(goldnaxeb1);
+ DECLARE_DRIVER_INIT(ddcrewbl);
DECLARE_DRIVER_INIT(common);
TILEMAP_MAPPER_MEMBER(sys16_bg_map);
TILEMAP_MAPPER_MEMBER(sys16_text_map);
diff --git a/src/mame/video/sega16sp.h b/src/mame/video/sega16sp.h
index f3b462f788a..e09a69e71d0 100644
--- a/src/mame/video/sega16sp.h
+++ b/src/mame/video/sega16sp.h
@@ -40,16 +40,16 @@
bootleg_sys16a_sprite_device::static_set_remap(*device, _0,_1,_2,_3,_4,_5,_6,_7);
#define MCFG_BOOTLEG_SYS16A_SPRITES_XORIGIN(_xorigin) \
- bootleg_sys16a_sprite_device::static_set_xorigin(*device, _xorigin);
+ bootleg_sys16a_sprite_device::set_local_originx(*device, _xorigin);
#define MCFG_BOOTLEG_SYS16A_SPRITES_YORIGIN(_yorigin) \
- bootleg_sys16a_sprite_device::static_set_yorigin(*device, _yorigin);
+ bootleg_sys16a_sprite_device::set_local_originy(*device, _yorigin);
#define MCFG_BOOTLEG_SYS16B_SPRITES_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, SEGA_SYS16B_SPRITES, 0)
#define MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(_xorigin) \
- bootleg_sys16a_sprite_device::static_set_xorigin(*device, _xorigin);
+ sega_sys16b_sprite_device::set_local_originx(*device, _xorigin);
@@ -86,6 +86,20 @@ public:
set_origin(x, y);
}
+ void set_local_originx_(int x) { m_xoffs_flipped = m_xoffs = x; set_origin(x, m_yoffs); }
+ void set_local_originy_(int y) { m_yoffs_flipped = m_yoffs = y; set_origin(m_xoffs, y); }
+
+ static void set_local_originx(device_t &device, int x)
+ {
+ sega_16bit_sprite_device &dev = downcast<sega_16bit_sprite_device &>(device);
+ dev.set_local_originx_(x);
+ };
+
+ static void set_local_originy(device_t &device, int y)
+ {
+ sega_16bit_sprite_device &dev = downcast<sega_16bit_sprite_device &>(device);
+ dev.set_local_originy_(y);
+ };
// write trigger memory handler
DECLARE_WRITE16_MEMBER( draw_write );