diff options
author | 2016-02-23 22:25:09 +0000 | |
---|---|---|
committer | 2016-02-23 22:25:09 +0000 | |
commit | eb3600df1185beebcbeb0eba295fb500d9acc2fc (patch) | |
tree | 7a26ad82ea3c7f28533845b501a86a7c4d32d630 /src | |
parent | fe2e403d77e88b50f81ba58850f6b28f225dad87 (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.lst | 2 | ||||
-rw-r--r-- | src/mame/drivers/system16.cpp | 116 | ||||
-rw-r--r-- | src/mame/includes/system16.h | 4 | ||||
-rw-r--r-- | src/mame/video/sega16sp.h | 20 |
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 ); |