From d9a7c47e2fb158521ae2eae0a8e006a8e50af35c Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 23 Apr 2022 09:54:38 +0200 Subject: New clones marked as NOT_WORKING -------------------------------- Bad Lands (Modular System) [Eduardo Anay, ClawGrip] --- scripts/target/mame/arcade.lua | 1 + src/mame/arcade.flt | 1 + src/mame/drivers/badlands_ms.cpp | 200 +++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + 4 files changed, 205 insertions(+) create mode 100644 src/mame/drivers/badlands_ms.cpp diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 17752d1fc30..1b0fac67d74 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -1187,6 +1187,7 @@ files { MAME_DIR .. "src/mame/includes/badlands.h", MAME_DIR .. "src/mame/machine/badlands.cpp", MAME_DIR .. "src/mame/video/badlands.cpp", + MAME_DIR .. "src/mame/drivers/badlands_ms.cpp", MAME_DIR .. "src/mame/drivers/badlandsbl.cpp", MAME_DIR .. "src/mame/drivers/bartop52.cpp", MAME_DIR .. "src/mame/drivers/batman.cpp", diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index d59dd081daa..ab79f10c2e0 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -96,6 +96,7 @@ avt.cpp aztarac.cpp backfire.cpp badlands.cpp +badlands_ms.cpp badlandsbl.cpp bagman.cpp bailey.cpp diff --git a/src/mame/drivers/badlands_ms.cpp b/src/mame/drivers/badlands_ms.cpp new file mode 100644 index 00000000000..73ae5dfe64e --- /dev/null +++ b/src/mame/drivers/badlands_ms.cpp @@ -0,0 +1,200 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* + Bad Lands(Modular System) + + As with most of the 'Modular System' setups, the hardware is heavily modified from the original + and consists of a multi-board stack in a cage, hence different driver. + + This set was assembled from a stack of loose PCBs, so for this game the Modular System cage contains + at least 5 main boards and 1 sub board, but there are almost surely more (MOD 21/1? Something else?). + + MOD-6/1 - MC68000P10, 4 ROMs, RAMs, 20 MHz XTAL. + MOD 1/4 - Sound board (Z8400BB1, 2 x YM2203C). 2 8-dips banks + small sub board with OKI M5205. + MOD 51/1 - Sprite board, has logic + 4 empty ROM sockets. Sprite ROMs are actually on the below board. + MODULAR SYSTEM 2 MOD 5/1 - red sprite ROM board, 12 sprite ROMs populated (maximum 24 ROMs) + MOD 4/3 - Tilemap board, has logic + 4 tilemap ROMs, long thin sub-board (C0477 SOLD) with no chips, just routing along one edge. + + TODO: + - everything, + - derive from badlands_state (badlands.cpp) or badlandsbl_state (badlandsbl.cpp) once all the common points and differences are verified. +*/ + + +#include "emu.h" + +#include "cpu/m68000/m68000.h" +#include "cpu/z80/z80.h" +#include "machine/gen_latch.h" +#include "sound/msm5205.h" +#include "sound/ymopn.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class badlands_ms_state : public driver_device +{ +public: + badlands_ms_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_screen(*this, "screen") + { } + + void badlandsm(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + required_device m_maincpu; + required_device m_screen; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void main_map(address_map &map); +}; + + +uint32_t badlands_ms_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + +void badlands_ms_state::machine_start() +{ +} + + +void badlands_ms_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfff000, 0xffffff).ram(); +} + + +static INPUT_PORTS_START( badlandsm ) + PORT_START("DSW") + PORT_DIPUNKNOWN_DIPLOC(0x0001, 0x0001, "SW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0002, "SW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x0004, 0x0004, "SW1:3") + PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0008, "SW1:4") + PORT_DIPUNKNOWN_DIPLOC(0x0010, 0x0010, "SW1:5") + PORT_DIPUNKNOWN_DIPLOC(0x0020, 0x0020, "SW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x0040, 0x0040, "SW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x0080, 0x0080, "SW1:8") + PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0100, "SW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0200, "SW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0400, "SW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0800, "SW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x1000, "SW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x2000, "SW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x4000, "SW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x8000, "SW2:8") +INPUT_PORTS_END + + +static const gfx_layout tiles_layout = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { 0,8,16,24 }, + { 0,1,2,3,4,5,6,7, 512,513,514,515,516,517,518,519 }, + { STEP16(0,32) }, + 16 * 16 * 4 +}; + +static GFXDECODE_START( gfx_badlandsm ) // TODO: needs adjusting, especially sprites + GFXDECODE_ENTRY( "tiles", 0, tiles_layout, 0, 8 ) + GFXDECODE_ENTRY( "sprites", 0, tiles_layout, 128, 8 ) +GFXDECODE_END + + +void badlands_ms_state::badlandsm(machine_config &config) +{ + // basic machine hardware + M68000(config, m_maincpu, 20_MHz_XTAL / 2); // divisor unknown + m_maincpu->set_addrmap(AS_PROGRAM, &badlands_ms_state::main_map); + + Z80(config, "audiocpu", 20_MHz_XTAL / 5).set_disable(); // divisor unknown + + // video hardware + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); // all wrong + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0, 256-1, 0, 256-32-1); + m_screen->set_screen_update(FUNC(badlands_ms_state::screen_update)); + m_screen->set_palette("palette"); + + PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 256).set_membits(8); + + GFXDECODE(config, "gfxdecode", "palette", gfx_badlandsm); + + // sound hardware + SPEAKER(config, "mono").front_center(); + + GENERIC_LATCH_8(config, "soundlatch"); + + YM2203(config, "ym1", 20_MHz_XTAL / 5).add_route(ALL_OUTPUTS, "mono", 0.15); // divisor unknown + + YM2203(config, "ym2", 20_MHz_XTAL / 5).add_route(ALL_OUTPUTS, "mono", 0.15); // divisor unknown + + MSM5205(config, "msm", 20_MHz_XTAL / 5).add_route(ALL_OUTPUTS, "mono", 0.15); // divisor unknown +} + +ROM_START( badlandsm ) + ROM_REGION( 0x100000, "maincpu", 0 ) // on MOD 6/1 board, very similar to badlandsb + ROM_LOAD16_BYTE( "mod-6-1_cpu_ba_603a.ic17", 0x00000, 0x10000, CRC(ee03753e) SHA1(42b3f214aa889cb62096016cc214ea7f5dde5e93) ) + ROM_LOAD16_BYTE( "mod-6-1_cpu_ba_606a.ic8", 0x00001, 0x10000, CRC(f22364a2) SHA1(d077bdcad3c0d301007e3fa539039b4a40bbc399) ) + ROM_LOAD16_BYTE( "mod-6-1_cpu_ba_602.ic20", 0x20000, 0x10000, CRC(0e2e807f) SHA1(5b61de066dca12c44335aa68a13c821845657866) ) + ROM_LOAD16_BYTE( "mod-6-1_cpu_ba_605.ic11", 0x20001, 0x10000, CRC(99a20c2c) SHA1(9b0a5a5dafb8816e72330d302c60339b600b49a8) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) // on MOD 1/4 board + ROM_LOAD( "mod-1-4_sound_ba_401.ic12", 0x00000, 0x10000, CRC(6cddace7) SHA1(f53c3d6fdec22bc2d39814d482db76aa0fc18af7) ) + + ROM_REGION( 0x80000, "tiles", ROMREGION_INVERT ) // on MOD 4/2 board, different format from original and other bootlegs + ROM_LOAD32_BYTE( "mod-4-3_ba_401.ic17", 0x00003, 0x20000, CRC(a943e878) SHA1(4330c5599c23818044ccba82331abe31b1d8216a) ) + ROM_LOAD32_BYTE( "mod-4-3_ba_402.ic16", 0x00002, 0x20000, CRC(cbf9f01d) SHA1(390aaed71b247099320118d8b8d59ec10f65a11c) ) + ROM_LOAD32_BYTE( "mod-4-3_ba_403.ic15", 0x00001, 0x20000, CRC(b27dc32a) SHA1(8e56a0a17d505e3a65a5d2c2c6314f21a4630485) ) + ROM_LOAD32_BYTE( "mod-4-3_ba_404.ic14", 0x00000, 0x20000, CRC(263f474f) SHA1(86b6762bcc28117e65cb201c9bc5a12c3f350e46) ) + + ROM_REGION( 0xc0000, "sprites", ROMREGION_ERASEFF | ROMREGION_INVERT ) // on MODULAR SYSTEM 2 MOD 5/1 board, different format from original and other bootlegs. TODO: verify ROM loading + ROM_LOAD32_BYTE( "mod-5-1_ba_503.ic3", 0x00003, 0x10000, CRC(4f3c9a22) SHA1(6ee806aaf663540902a372c04592d2e3030934aa) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_512.ic12", 0x00002, 0x10000, CRC(352f2167) SHA1(dd4aea8450e42b6f70801bbb1091df63bffbe463) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_518.ic18", 0x00001, 0x10000, CRC(834aa5ef) SHA1(0761110de2a27453fc654970f8a7540fcd2c2615) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_524.ic24", 0x00000, 0x10000, CRC(5d7f2231) SHA1(685ab5214c800ef49a6da1cdea5a672a03c281b3) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_504.ic4", 0x40003, 0x10000, CRC(690fc050) SHA1(5d77b674ff3fa5701d8fe0f4d4aa4d6821d4da7c) ) + ROM_LOAD32_BYTE( "mod-5-1_ba_513.ic13", 0x40002, 0x10000, CRC(d239ac97) SHA1(4809760dc4c3c3b830402450bd24ccc161bf01f1) ) + ROM_LOAD32_BYTE( "mod-5-1_ba_519.ic19", 0x40001, 0x10000, CRC(bf2cc0f9) SHA1(9175eeac707c04795e1198e8d3a4aac8e64f74d1) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_525.ic25", 0x40000, 0x10000, CRC(26d53fc5) SHA1(f0eebbe31fb887ce7c91f5268af2af373ecc88c2) ) // xxxxxxxxxxxx1xxx = 0x00 + ROM_LOAD32_BYTE( "mod-5-1_ba_505.ic5", 0x80003, 0x10000, CRC(a5f91533) SHA1(add36c54a6caec431434b138180d7ca38411d84e) ) + ROM_LOAD32_BYTE( "mod-5-1_ba_514.ic14", 0x80002, 0x10000, CRC(5d3e52e8) SHA1(f8bbc9067058af6ee5ca2ac79c5deba6fd6a366b) ) + ROM_LOAD32_BYTE( "mod-5-1_ba_520.ic20", 0x80001, 0x10000, CRC(f4e132ae) SHA1(c34b4a3b204035e2f4d5209aee48673f758f3ceb) ) + ROM_LOAD32_BYTE( "mod-5-1_ba_526.ic26", 0x80000, 0x10000, CRC(243a6bc8) SHA1(7f3e6031824c28f37afafc80fc9757bb5f80e660) ) + + ROM_REGION( 0x120, "proms", 0 ) // PROMs (function unknown) + ROM_LOAD( "mod-1-4_sound_105_82s123.ic20", 0x000, 0x020, CRC(14d72781) SHA1(372dc021d8aaf4aa6fd46e69a3d8f1c68113426f) ) + ROM_LOAD( "mod-51-1_502_82s129a.ic10", 0x020, 0x100, CRC(15085e44) SHA1(646e7100fcb112594023cf02be036bd3d42cc13c) ) + + ROM_REGION( 0x1000, "plds", ROMREGION_ERASEFF ) + ROM_LOAD( "mod-6-1_cpu_644_gal16v8.ic13", 0x000, 0x117, NO_DUMP ) + ROM_LOAD( "mod-6-1_cpu_643_gal16v8.ic7", 0x000, 0x117, CRC(d05b2c26) SHA1(51b718554bfba96a3c9e7b3a000fc80679044cb3) ) + ROM_LOAD( "mod-4-3_403_gal16v8.ic29", 0x000, 0x117, CRC(c136de93) SHA1(116f6d3b456d20621ab07a005c1421f57569915c) ) + ROM_LOAD( "mod-51-1_50503_pal16r6.ic46", 0x000, 0x104, CRC(07eb86d2) SHA1(482eb325df5bc60353bac85412cf45429cd03c6d) ) + ROM_LOAD( "mod-5-1_5143_gal16v8.ic9", 0x000, 0x117, CRC(2d9cf890) SHA1(b8e3bdfe8543a8729e0397166780036b074f4bc5) ) + ROM_LOAD( "mod-5-1_5242_gal16v8.ic8", 0x000, 0x117, NO_DUMP ) +ROM_END + +} // anonymous namespace + + +GAME( 199?, badlandsm, badlands, badlandsm, badlandsm, badlands_ms_state, empty_init, ROT0, "bootleg (Gaelco / Ervisa)", "Bad Lands (Modular System)", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5ccfe19316a..dd78f159835 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -3279,6 +3279,9 @@ backfirea // MBZ (c) 1995 @source:badlands.cpp badlands // 136074 (c) 1989 +@source:badlands_ms.cpp +badlandsm + @source:badlandsbl.cpp badlandsb // bootleg badlandsb2 // bootleg set 2 -- cgit v1.2.3