summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/badlandsbl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/badlandsbl.cpp')
-rw-r--r--src/mame/drivers/badlandsbl.cpp334
1 files changed, 0 insertions, 334 deletions
diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp
deleted file mode 100644
index e828b3abf54..00000000000
--- a/src/mame/drivers/badlandsbl.cpp
+++ /dev/null
@@ -1,334 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles, Angelo Salese
-/***************************************************************************************
-
- Badlands - Playmark Bootleg support
-
- TODO:
- - inputs looks weird, left/right change meaning as per what side the car is moving?
- - playfield color (changes bitplane on the fly?);
- - sprite-tilemap priority;
- - fix sound;
- - inputs (coins & accelerators);
- - any way to disable sprites in service mode?
-
-========================================================================================
-
- Year: 1989
- Producer: Playmark
-
- cpu: 68000
- sound cpu: Z80
- sound ics: YM2151 + 3012
-
- other ics: 28c16 2kx8 eeprom.Used to store bookeeping,settings etc. like original pcb.
-
- Osc: 20 Mhz, 28 Mhz
-
- ROMs:
-
- blb21, blb22, blb27, blb28 main program
- blb26 sound program
- blb29 to blb40 graphics
-
- All eproms are 27c512
-
- Note
-
- This romset comes from a bootleg pcb produced by Playmark.This pcb was been modified to use as control standard joysticks instead of steering wheels.Game differences are: Copyright string removed.
-
-***************************************************************************************/
-
-#include "emu.h"
-#include "includes/badlands.h"
-#include "emupal.h"
-
-uint32_t badlandsbl_state::screen_update_badlandsbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- // start drawing
- //m_mob->draw_async(cliprect);
-
- // draw the playfield
- m_playfield_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- // draw bootleg sprites chip
- // TODO: is this derived from something else?
- {
- gfx_element *gfx = m_gfxdecode->gfx(1);
-
- for(int count=0;count<(0x100-0x10)/2;count+=4)
- {
- if((m_spriteram[count+3] & 0xff) == 0xff)
- return 0;
-
- uint16 tile = m_spriteram[count];
- int y = (511 - 14) - (m_spriteram[count+1] & 0x1ff);
- int x = (m_spriteram[count+2] >> 7) - 7;
- int color = (m_spriteram[count+3] >> 8) & 7;
- int h = (m_spriteram[count+3] & 0xf) + 1;
-
- for(int yi=0;yi<h;yi++)
- gfx->transpen(bitmap,cliprect,tile+yi,color,0,0,x,y+yi*8,0);
- }
- }
-
- return 0;
-}
-
-
-uint16_t badlandsbl_state::badlandsb_unk_r()
-{
- return 0xffff;
-}
-
-// TODO: this prolly mimics audio_io_r/_w in original version
-uint8_t badlandsbl_state::bootleg_shared_r(offs_t offset)
-{
- return m_b_sharedram[offset];
-}
-
-void badlandsbl_state::bootleg_shared_w(offs_t offset, uint8_t data)
-{
- m_b_sharedram[offset] = data;
-}
-
-uint8_t badlandsbl_state::sound_response_r()
-{
- m_maincpu->set_input_line(2, CLEAR_LINE);
- return m_sound_response;
-}
-
-void badlandsbl_state::bootleg_map(address_map &map)
-{
- map(0x000000, 0x03ffff).rom();
-
- map(0x400000, 0x400005).rw(FUNC(badlandsbl_state::bootleg_shared_r), FUNC(badlandsbl_state::bootleg_shared_w));
- map(0x400006, 0x400006).r(FUNC(badlandsbl_state::sound_response_r));
- map(0x400008, 0x40000f).ram(); // breaks tilemap gfxs otherwise?
- map(0x400010, 0x4000ff).ram().share("spriteram");
-
- // sound comms?
- map(0xfc0000, 0xfc0001).r(FUNC(badlandsbl_state::badlandsb_unk_r)).nopw();
-
- map(0xfd0000, 0xfd1fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
- //map(0xfe0000, 0xfe1fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0xfe2000, 0xfe3fff).w(FUNC(badlandsbl_state::video_int_ack_w));
-
- map(0xfe0000, 0xfe0001).nopw();
- map(0xfe4000, 0xfe4001).portr("FE4000");
- map(0xfe4004, 0xfe4005).portr("P1");
- map(0xfe4006, 0xfe4007).portr("P2");
- map(0xfe4008, 0xfe4009).w(FUNC(badlandsbl_state::badlands_pf_bank_w));
- map(0xfe400c, 0xfe400d).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
-
- map(0xffc000, 0xffc3ff).rw("palette", FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
- map(0xffe000, 0xffefff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield");
-
- map(0xfff000, 0xffffff).ram();
-}
-
-void badlandsbl_state::bootleg_main_irq_w(uint8_t data)
-{
- m_maincpu->set_input_line(2, ASSERT_LINE);
- m_sound_response = data;
-}
-
-void badlandsbl_state::bootleg_audio_map(address_map &map)
-{
- map(0x0000, 0x1fff).rom().region("audiorom", 0);
- map(0x2000, 0x2005).ram().share("b_sharedram");
- map(0x2006, 0x3fff).ram();
- map(0x4000, 0xcfff).rom().region("audiorom", 0x4000);
- map(0xd400, 0xd400).w(FUNC(badlandsbl_state::bootleg_main_irq_w));
- map(0xd800, 0xd801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
- map(0xe000, 0xffff).noprw(); // either RAM mirror or left-over
-}
-
-
-static INPUT_PORTS_START( badlandsb )
- PORT_INCLUDE( badlands )
-
- PORT_START("P1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
- PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("P2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
- PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_MODIFY("FE6000")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("FE6002")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("AUDIO") /* audio port */
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
-
-INPUT_PORTS_END
-
-
-static const gfx_layout pflayout_bootleg =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
-// TODO: service mode and (most of) in-game uses this arrangement
-// { RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-static const gfx_layout badlands_molayout =
-{
- 16,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 },
- { 0*8, 8*8, 16*8, 24*8, 32*8, 40*8, 48*8, 56*8 },
- 64*8
-};
-
-static GFXDECODE_START( gfx_badlandsb )
- GFXDECODE_ENTRY( "gfx1", 0, pflayout_bootleg, 0, 8 )
- GFXDECODE_ENTRY( "gfx2", 0, badlands_molayout, 128, 8 )
-GFXDECODE_END
-
-
-void badlandsbl_state::machine_reset()
-{
-// m_pedal_value[0] = m_pedal_value[1] = 0x80;
-// scanline_timer_reset(*m_screen, 32);
-
-// memcpy(m_bank_base, &m_bank_source_data[0x0000], 0x1000);
-}
-
-TIMER_DEVICE_CALLBACK_MEMBER(badlandsbl_state::bootleg_sound_scanline)
-{
- int scanline = param;
-
- // 32V
- if ((scanline % 64) == 0 && scanline < 240)
- m_audiocpu->set_input_line(0, HOLD_LINE);
-}
-
-void badlandsbl_state::badlandsb(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/4); /* Divisor estimated */
- m_maincpu->set_addrmap(AS_PROGRAM, &badlandsbl_state::bootleg_map);
- m_maincpu->set_vblank_int("screen", FUNC(badlandsbl_state::irq1_line_hold)); //vblank_int)
-
- Z80(config, m_audiocpu, XTAL(20'000'000)/12); /* Divisor estimated */
- m_audiocpu->set_addrmap(AS_PROGRAM, &badlandsbl_state::bootleg_audio_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(badlandsbl_state::bootleg_sound_scanline), "screen", 0, 1);
-
-// config.m_perfect_cpu_quantum = subtag("maincpu");
-
- MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands)
-
- EEPROM_2816(config, "eeprom").lock_after_write(true);
-
- /* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_badlandsb);
- palette_device &palette(PALETTE(config, "palette"));
- palette.set_format(palette_device::IRGB_1555, 256);
- palette.set_membits(8);
-
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32).set_info_callback(FUNC(badlands_state::get_playfield_tile_info));
-
-// ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, badlands_state::s_mob_config);
-// m_mob->set_gfxdecode(m_gfxdecode);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- /* note: these parameters are from published specs, not derived */
- /* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(14.318181_MHz_XTAL/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(badlandsbl_state::screen_update_badlandsbl));
- m_screen->set_palette("palette");
-
- MCFG_VIDEO_START_OVERRIDE(badlands_state,badlands)
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- YM2151(config, "ymsnd", XTAL(20'000'000)/8).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30); /* Divisor estimated */
-}
-
-
-
-/* bootleg by Playmark, uses Joystick controls */
-ROM_START( badlandsb )
- /* bootleg 68k Program */
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */
- ROM_LOAD16_BYTE( "blb28.ic21", 0x00000, 0x10000, CRC(dffb025d) SHA1(f2c17607acbbeee7d5d3f3dd2e8dc768b755e991) )
- ROM_LOAD16_BYTE( "blb22.ic22", 0x00001, 0x10000, CRC(ca3015c4) SHA1(72e1451498143d920239487704f4b4a8a71410e0) )
- ROM_LOAD16_BYTE( "blb27.ic19", 0x20000, 0x10000, CRC(0e2e807f) SHA1(5b61de066dca12c44335aa68a13c821845657866) )
- ROM_LOAD16_BYTE( "blb21.ic20", 0x20001, 0x10000, CRC(99a20c2c) SHA1(9b0a5a5dafb8816e72330d302c60339b600b49a8) )
-
- /* Z80 on the bootleg! */
- ROM_REGION( 0x10000, "audiorom", 0 )
- ROM_LOAD( "blb26.ic27", 0x00000, 0x10000, CRC(59503ab4) SHA1(ea5686ee28f6125c1394d687cc35c6322c8f900c) )
-
- /* the 2nd half of 122,123,124 and 125 is identical to the first half and not used */
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "13.ic123", 0x000000, 0x10000, CRC(55fac198) SHA1(055938f38cb7fc02ecaf35446b2598f7808baa1c) ) // alt set replaced bad rom
- ROM_LOAD( "blb37.ic92", 0x008000, 0x10000, CRC(9188db9f) SHA1(8f7dc2c4c0dec9a80b6214a2efaa0de0858de84c) )
- ROM_LOAD( "blb38.ic125", 0x020000, 0x10000, CRC(4839dd54) SHA1(031efbc144e5e088be0f3576aa514c7c2b775f6d) )
- ROM_LOAD( "8.ic91", 0x028000, 0x10000, CRC(4d85a509) SHA1(f8f13fe16706d01f0ee87cd1188c3115d6cdbf46) ) // alt set replaced bad rom
- ROM_LOAD( "blb30.ic122", 0x040000, 0x10000, CRC(61a1bcec) SHA1(fd38bbf8f6c8d1e0e936740db757f9fa85753503) )
- ROM_LOAD( "blb35.ic90", 0x048000, 0x10000, CRC(649c17f0) SHA1(bed3b7fc2c0516fe309bb81b65d8925ecf3065e4) )
- ROM_LOAD( "blb32.ic124", 0x060000, 0x10000, CRC(a67c61ba) SHA1(d701eb7f4520b57be54a7113d39f81d52800ee7e) )
- ROM_LOAD( "blb29.ic88", 0x068000, 0x10000, CRC(a9f280e5) SHA1(daff021d14f17da8c4469270a1e50e5a01d05d49) )
-
- /* the 1st half of 67 & 68 are empty and not used */
- ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD16_BYTE( "blb33.ic67", 0x10001, 0x10000, CRC(aebf9938) SHA1(3778aacbde07e5a5d010e41ab62d5b0db8632ad8) )
- ROM_LOAD16_BYTE( "blb34.ic34", 0x00001, 0x10000, CRC(3eac30a5) SHA1(deefc668185bf30ad3eeba73853f97ce12b85293) )
- ROM_LOAD16_BYTE( "blb39.ic68", 0x10000, 0x10000, CRC(f398f2d7) SHA1(1eef64680101888425490eb4d5b86072e59753cf) )
- ROM_LOAD16_BYTE( "blb40.ic35", 0x00000, 0x10000, CRC(b47679ee) SHA1(0bd7d40dad214c54021c2014efbd374a7e4c7a3f) )
-ROM_END
-
-
-ROM_START( badlandsb2 )
- /* bootleg 68k Program */
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 4*64k for 68000 code */
- ROM_LOAD16_BYTE( "5.ic21", 0x00000, 0x10000, CRC(dffb025d) SHA1(f2c17607acbbeee7d5d3f3dd2e8dc768b755e991) )
- ROM_LOAD16_BYTE( "2.ic22", 0x00001, 0x10000, CRC(ca3015c4) SHA1(72e1451498143d920239487704f4b4a8a71410e0) )
- ROM_LOAD16_BYTE( "4.ic19", 0x20000, 0x10000, CRC(0e2e807f) SHA1(5b61de066dca12c44335aa68a13c821845657866) )
- ROM_LOAD16_BYTE( "1.ic20", 0x20001, 0x10000, CRC(99a20c2c) SHA1(9b0a5a5dafb8816e72330d302c60339b600b49a8) )
-
- /* Z80 on the bootleg! */
- ROM_REGION( 0x10000, "audiorom", 0 )
- ROM_LOAD( "3.ic27", 0x00000, 0x10000, CRC(08850eb5) SHA1(be169e8ccee275b72bcfca66cd126cc27af7a1d6) ) // only rom that differs from badlandsb
-
- /* the 2nd half of 122,123,124 and 125 is identical to the first half and not used */
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "13.ic123", 0x000000, 0x10000, CRC(55fac198) SHA1(055938f38cb7fc02ecaf35446b2598f7808baa1c) )
- ROM_LOAD( "14.ic92", 0x008000, 0x10000, CRC(9188db9f) SHA1(8f7dc2c4c0dec9a80b6214a2efaa0de0858de84c) )
- ROM_LOAD( "15.ic125", 0x020000, 0x10000, CRC(4839dd54) SHA1(031efbc144e5e088be0f3576aa514c7c2b775f6d) )
- ROM_LOAD( "8.ic91", 0x028000, 0x10000, CRC(4d85a509) SHA1(f8f13fe16706d01f0ee87cd1188c3115d6cdbf46) )
- ROM_LOAD( "7.ic122", 0x040000, 0x10000, CRC(61a1bcec) SHA1(fd38bbf8f6c8d1e0e936740db757f9fa85753503) )
- ROM_LOAD( "12.ic90", 0x048000, 0x10000, CRC(649c17f0) SHA1(bed3b7fc2c0516fe309bb81b65d8925ecf3065e4) )
- ROM_LOAD( "9.ic124", 0x060000, 0x10000, CRC(a67c61ba) SHA1(d701eb7f4520b57be54a7113d39f81d52800ee7e) )
- ROM_LOAD( "6.ic88", 0x068000, 0x10000, CRC(a9f280e5) SHA1(daff021d14f17da8c4469270a1e50e5a01d05d49) )
-
- /* the 1st half of 67 & 68 are empty and not used */
- ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD16_BYTE( "10.ic67", 0x10001, 0x10000, CRC(aebf9938) SHA1(3778aacbde07e5a5d010e41ab62d5b0db8632ad8) )
- ROM_LOAD16_BYTE( "11.ic34", 0x00001, 0x10000, CRC(3eac30a5) SHA1(deefc668185bf30ad3eeba73853f97ce12b85293) )
- ROM_LOAD16_BYTE( "16.ic68", 0x10000, 0x10000, CRC(f398f2d7) SHA1(1eef64680101888425490eb4d5b86072e59753cf) )
- ROM_LOAD16_BYTE( "17.ic35", 0x00000, 0x10000, CRC(b47679ee) SHA1(0bd7d40dad214c54021c2014efbd374a7e4c7a3f) )
-ROM_END
-
-
-
-GAME( 1989, badlandsb, badlands, badlandsb, badlandsb, badlandsbl_state, empty_init, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg)", MACHINE_NOT_WORKING )
-GAME( 1989, badlandsb2, badlands, badlandsb, badlandsb, badlandsbl_state, empty_init, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg, alternate)", MACHINE_NOT_WORKING )