From 5e4a4ef4fd499c220a59ada174c962af74218f6a Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 16 Jan 2024 18:20:14 +0100 Subject: - irem/travrusa.cpp: consolidated driver into single file - midway/midyunit: dumped PLS153s for Narc [Domenico Cervini] --- src/mame/irem/travrusa.cpp | 562 +++++++++++++++++++++++++++++++++++-------- src/mame/irem/travrusa.h | 60 ----- src/mame/irem/travrusa_v.cpp | 325 ------------------------- src/mame/midway/midyunit.cpp | 42 ++++ src/mame/pinball/s11b.cpp | 19 ++ 5 files changed, 527 insertions(+), 481 deletions(-) delete mode 100644 src/mame/irem/travrusa.h delete mode 100644 src/mame/irem/travrusa_v.cpp diff --git a/src/mame/irem/travrusa.cpp b/src/mame/irem/travrusa.cpp index 5656a8488b4..18cf5ee7ddf 100644 --- a/src/mame/irem/travrusa.cpp +++ b/src/mame/irem/travrusa.cpp @@ -1,6 +1,7 @@ // license:BSD-3-Clause -// copyright-holders:Lee Taylor -// thanks-to:John Clegg,Tomasz Slanina +// copyright-holders: Lee Taylor +// thanks-to: John Clegg, Tomasz Slanina + /**************************************************************************** Traverse USA / Zippy Race (c) 1983 Irem @@ -16,7 +17,7 @@ Notes: tunnels. I hacked it just by making the two needed colors opaque. They don't seem to be used anywhere else. Even if it looks like a hack, it might really be how the hardware works - see also notes regarding Kung Fu Master - at the beginning of m62.c. + at the beginning of m62.cpp. - shtrider has some weird colors (pink cars, green "Seibu" truck, 'no' on hiscore table) but there's no reason to think there's something wrong with the driver. @@ -40,46 +41,418 @@ PCB layout: -------------------------------------------------- C - connector P - proms - E - connector for big black epoxy block + E - connector for big black epoxy block D - dips - * - empty rom socket + * - empty ROM socket x - 40 pin chip, surface scratched (6803) -Epoxy block contains main cpu (Z80) -and 2764 eprom (swapped D3/D4 and D5/D6 data lines) +Epoxy block contains main CPU (Z80) +and 2764 EPROM (swapped D3/D4 and D5/D6 data lines) ****************************************************************************/ #include "emu.h" -#include "travrusa.h" + #include "irem.h" #include "cpu/z80/z80.h" + +#include "emupal.h" #include "screen.h" +#include "tilemap.h" + + +namespace { + +class travrusa_state : public driver_device +{ +public: + travrusa_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_videoram(*this, "videoram"), + m_spriteram(*this, "spriteram"), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_dsw2(*this, "DSW2") + { } + + void shtrider(machine_config &config); + void travrusa(machine_config &config); + void shtriderb(machine_config &config); + + void init_shtridra(); + void init_motorace(); + void init_shtridrb(); + +protected: + virtual void machine_reset() override; + virtual void video_start() override; + +private: + required_shared_ptr m_videoram; + required_shared_ptr m_spriteram; + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + + required_ioport m_dsw2; + + tilemap_t *m_bg_tilemap = nullptr; + uint8_t m_scrollx[2]{}; + + void videoram_w(offs_t offset, uint8_t data); + void scroll_x_low_w(uint8_t data); + void scroll_x_high_w(uint8_t data); + void flipscreen_w(uint8_t data); + uint8_t shtriderb_port11_r(); + TILE_GET_INFO_MEMBER(get_tile_info); + void travrusa_palette(palette_device &palette) const; + void shtrider_palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void set_scroll(); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map); + void shtriderb_io_map(address_map &map); +}; + + +// video + +/*************************************************************************** + + Convert the color PROMs into a more useable format. + + Traverse USA has one 256x8 character palette PROM (some versions have two + 256x4), one 32x8 sprite palette PROM, and one 256x4 sprite color lookup + table PROM. + + I don't know for sure how the palette PROMs are connected to the RGB + output, but it's probably something like this; note that RED and BLUE + are swapped wrt the usual configuration. + + bit 7 -- 220 ohm resistor -- RED + -- 470 ohm resistor -- RED + -- 220 ohm resistor -- GREEN + -- 470 ohm resistor -- GREEN + -- 1 kohm resistor -- GREEN + -- 220 ohm resistor -- BLUE + -- 470 ohm resistor -- BLUE + bit 0 -- 1 kohm resistor -- BLUE + +***************************************************************************/ + +void travrusa_state::travrusa_palette(palette_device &palette) const +{ + const uint8_t *color_prom = memregion("proms")->base(); + + // create a lookup table for the palette + for (int i = 0; i < 0x80; i++) + { + int bit0, bit1, bit2; + + // red component + bit0 = 0; + bit1 = BIT(color_prom[i], 6); + bit2 = BIT(color_prom[i], 7); + int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // green component + bit0 = BIT(color_prom[i], 3); + bit1 = BIT(color_prom[i], 4); + bit2 = BIT(color_prom[i], 5); + int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // blue component + bit0 = BIT(color_prom[i], 0); + bit1 = BIT(color_prom[i], 1); + bit2 = BIT(color_prom[i], 2); + int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + for (int i = 0x80; i < 0x90; i++) + { + int bit0, bit1, bit2; + + // red component + bit0 = 0; + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 6); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 7); + int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // green component + bit0 = BIT(color_prom[(i - 0x80) + 0x200], 3); + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 4); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 5); + int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // blue component + bit0 = BIT(color_prom[(i - 0x80) + 0x200], 0); + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 1); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 2); + int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + // color_prom now points to the beginning of the lookup table + color_prom += 0x220; + + // characters + for (int i = 0; i < 0x80; i++) + palette.set_pen_indirect(i, i); + + // sprites + for (int i = 0x80; i < 0x100; i++) + { + uint8_t const ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80; + palette.set_pen_indirect(i, ctabentry); + } +} + +void travrusa_state::shtrider_palette(palette_device &palette) const +{ + const uint8_t *color_prom = memregion("proms")->base(); + + // create a lookup table for the palette + for (int i = 0; i < 0x80; i++) + { + int bit0, bit1, bit2; + + // red component + bit0 = 0; + bit1 = BIT(color_prom[i + 0x000], 2); + bit2 = BIT(color_prom[i + 0x000], 3); + int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // green component + bit0 = BIT(color_prom[i + 0x100], 3); + bit1 = BIT(color_prom[i + 0x000], 0); + bit2 = BIT(color_prom[i + 0x000], 1); + int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // blue component + bit0 = BIT(color_prom[i + 0x100], 0); + bit1 = BIT(color_prom[i + 0x100], 1); + bit2 = BIT(color_prom[i + 0x100], 2); + int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + for (int i = 0x80; i < 0x90; i++) + { + int bit0, bit1, bit2; + + // red component + bit0 = 0; + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 6); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 7); + int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // green component + bit0 = BIT(color_prom[(i - 0x80) + 0x200], 3); + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 4); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 5); + int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + // blue component + bit0 = BIT(color_prom[(i - 0x80) + 0x200], 0); + bit1 = BIT(color_prom[(i - 0x80) + 0x200], 1); + bit2 = BIT(color_prom[(i - 0x80) + 0x200], 2); + int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + // color_prom now points to the beginning of the lookup table + color_prom += 0x220; + + // characters + for (int i = 0; i < 0x80; i++) + palette.set_pen_indirect(i, i); + + // sprites + for (int i = 0x80; i < 0x100; i++) + { + uint8_t const ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80; + palette.set_pen_indirect(i, ctabentry); + } +} + + + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +TILE_GET_INFO_MEMBER(travrusa_state::get_tile_info) +{ + uint8_t const attr = m_videoram[2 * tile_index + 1]; + int const flags = TILE_FLIPXY((attr & 0x30) >> 4); + + tileinfo.group = ((attr & 0x0f) == 0x0f) ? 1 : 0; // tunnels + + tileinfo.set(0, + m_videoram[2 * tile_index] + ((attr & 0xc0) << 2), + attr & 0x0f, + flags); +} + + + +/*************************************************************************** + Start the video hardware emulation. -void travrusa_state::main_map(address_map &map) +***************************************************************************/ + +void travrusa_state::video_start() +{ + save_item(NAME(m_scrollx)); + + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(travrusa_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + + m_bg_tilemap->set_transmask(0, 0xff, 0x00); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x3f, 0xc0); // split type 1 has pens 6 and 7 opaque - tunnels + + m_bg_tilemap->set_scroll_rows(4); +} + + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +void travrusa_state::videoram_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset / 2); +} + + +void travrusa_state::set_scroll() +{ + for (int i = 0; i <= 2; i++) + m_bg_tilemap->set_scrollx(i, m_scrollx[0] + 256 * m_scrollx[1]); + + m_bg_tilemap->set_scrollx(3, 0); +} + +void travrusa_state::scroll_x_low_w(uint8_t data) +{ + m_scrollx[0] = data; + set_scroll(); +} + +void travrusa_state::scroll_x_high_w(uint8_t data) +{ + m_scrollx[1] = data; + set_scroll(); +} + + +void travrusa_state::flipscreen_w(uint8_t data) +{ + // screen flip is handled both by software and hardware + data ^= ~m_dsw2->read() & 1; + + flip_screen_set(data & 1); + + machine().bookkeeping().coin_counter_w(0, data & 0x02); + machine().bookkeeping().coin_counter_w(1, data & 0x20); +} + + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +void travrusa_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + const rectangle spritevisiblearea(1*8, 31*8-1, 0*8, 24*8-1); + const rectangle spritevisibleareaflip(1*8, 31*8-1, 8*8, 32*8-1); + rectangle clip = cliprect; + if (flip_screen()) + clip &= spritevisibleareaflip; + else + clip &= spritevisiblearea; + + + for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4) + { + int sx = ((m_spriteram[offs + 3] + 8) & 0xff) - 8; + int sy = 240 - m_spriteram[offs]; + int const code = m_spriteram[offs + 2]; + int const attr = m_spriteram[offs + 1]; + int flipx = attr & 0x40; + int flipy = attr & 0x80; + + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + m_gfxdecode->gfx(1)->transpen(bitmap, clip, + code, + attr & 0x0f, + flipx, flipy, + sx, sy, 0); + } +} + + +uint32_t travrusa_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); + draw_sprites(bitmap, cliprect); + m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); + return 0; +} + + +// machine + +void travrusa_state::program_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0x8fff).ram().w(FUNC(travrusa_state::travrusa_videoram_w)).share("videoram"); - map(0x9000, 0x9000).w(FUNC(travrusa_state::travrusa_scroll_x_low_w)); - map(0xa000, 0xa000).w(FUNC(travrusa_state::travrusa_scroll_x_high_w)); - map(0xc800, 0xc9ff).writeonly().share("spriteram"); - map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w)); - map(0xd001, 0xd001).w(FUNC(travrusa_state::travrusa_flipscreen_w)); /* + coin counters - not written by shtrider */ - map(0xd000, 0xd000).portr("SYSTEM"); /* IN0 */ - map(0xd001, 0xd001).portr("P1"); /* IN1 */ - map(0xd002, 0xd002).portr("P2"); /* IN2 */ - map(0xd003, 0xd003).portr("DSW1"); /* DSW1 */ - map(0xd004, 0xd004).portr("DSW2"); /* DSW2 */ + map(0x8000, 0x8fff).ram().w(FUNC(travrusa_state::videoram_w)).share(m_videoram); + map(0x9000, 0x9000).w(FUNC(travrusa_state::scroll_x_low_w)); + map(0xa000, 0xa000).w(FUNC(travrusa_state::scroll_x_high_w)); + map(0xc800, 0xc9ff).writeonly().share(m_spriteram); + map(0xd000, 0xd000).portr("SYSTEM").w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).portr("P1").w(FUNC(travrusa_state::flipscreen_w)); // + coin counters - not written by shtrider + map(0xd002, 0xd002).portr("P2"); + map(0xd003, 0xd003).portr("DSW1"); + map(0xd004, 0xd004).portr("DSW2"); map(0xe000, 0xefff).ram(); } +void travrusa_state::shtriderb_io_map(address_map &map) +{ + map(0x0011, 0x0011).mirror(0xff00).r(FUNC(travrusa_state::shtriderb_port11_r)); +} + static INPUT_PORTS_START( travrusa ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - /* coin input must be active for 19 frames to be consistently recognized */ + // coin input must be active for 19 frames to be consistently recognized PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(19) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -167,7 +540,7 @@ static INPUT_PORTS_START( travrusa ) PORT_DIPNAME( 0x08, 0x08, "Speed Type" ) PORT_DIPLOCATION("DSW2:4") PORT_DIPSETTING( 0x08, "M/H" ) //mph ? PORT_DIPSETTING( 0x00, "Km/H" ) - /* In stop mode, press 2 to stop and 1 to restart */ + // In stop mode, press 2 to stop and 1 to restart PORT_DIPNAME( 0x10, 0x10, "Stop Mode (Cheat)") PORT_DIPLOCATION("DSW2:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -180,7 +553,7 @@ static INPUT_PORTS_START( travrusa ) PORT_SERVICE_DIPLOC( 0x80, 0x80, "DSW2:8") INPUT_PORTS_END -/* same as travrusa, no "Title" switch */ +// same as travrusa, no "Title" switch static INPUT_PORTS_START( motorace ) PORT_INCLUDE( travrusa ) @@ -278,13 +651,13 @@ static const gfx_layout shtrider_spritelayout = }; static GFXDECODE_START( gfx_travrusa ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*8, 16 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x3_planar, 0, 16 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 16*8, 16 ) GFXDECODE_END static GFXDECODE_START( gfx_shtrider ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, shtrider_spritelayout, 16*8, 16 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x3_planar, 0, 16 ) + GFXDECODE_ENTRY( "sprites", 0, shtrider_spritelayout, 16*8, 16 ) GFXDECODE_END void travrusa_state::machine_reset() @@ -295,14 +668,14 @@ void travrusa_state::machine_reset() void travrusa_state::travrusa(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80(config, m_maincpu, 18.432_MHz_XTAL / 6); - m_maincpu->set_addrmap(AS_PROGRAM, &travrusa_state::main_map); + m_maincpu->set_addrmap(AS_PROGRAM, &travrusa_state::program_map); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(18.432_MHz_XTAL / 3, 384, 8, 248, 282, 0, 256); // verified from schematics; accurate frequency, measured on a Moon Patrol board, is 56.75Hz - screen.set_screen_update(FUNC(travrusa_state::screen_update_travrusa)); + screen.set_screen_update(FUNC(travrusa_state::screen_update)); screen.set_palette(m_palette); // Race start countdown in shtrider needs multiple interrupts per frame to sync, mustache.cpp has the same, and is also a Seibu game screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -310,8 +683,7 @@ void travrusa_state::travrusa(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_travrusa); PALETTE(config, m_palette, FUNC(travrusa_state::travrusa_palette), 16*8+16*8, 128+16); - /* sound hardware */ - //m52_sound_c_audio(config); + // sound hardware IREM_M52_SOUNDC_AUDIO(config, "irem_audio", 0); } @@ -319,7 +691,7 @@ void travrusa_state::shtrider(machine_config &config) { travrusa(config); - /* video hardware */ + // video hardware m_gfxdecode->set_info(gfx_shtrider); m_palette->set_init(FUNC(travrusa_state::shtrider_palette)); } @@ -328,7 +700,9 @@ void travrusa_state::shtriderb(machine_config &config) { travrusa(config); - /* video hardware */ + m_maincpu->set_addrmap(AS_IO, &travrusa_state::shtriderb_io_map); + + // video hardware m_gfxdecode->set_info(gfx_shtrider); } @@ -349,23 +723,23 @@ ROM_START( travrusa ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "mr10.1a", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "zippyrac.001", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "zr1-8.n3", 0x0000, 0x2000, CRC(3e2c7a6b) SHA1(abc9eeb656ab6ed5f14e10fc988f75f21ccf037a) ) ROM_LOAD( "zr1-9.l3", 0x2000, 0x2000, CRC(13be6a14) SHA1(47861910fe4c46cd72634cf7d834be2da2a0a4f9) ) ROM_LOAD( "zr1-10.k3", 0x4000, 0x2000, CRC(6fcc9fdb) SHA1(88f878b9ebf07c5a16f8cb742016cac971ed3f10) ) ROM_REGION( 0x0320, "proms", 0 ) - ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */ - ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */ - ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */ + ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) // character palette - last $100 are unused + ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) // sprite palette + ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) // sprite lookup table ROM_END - /* Bootleg - "American Top" printed on title - (c) 1983 I.P. - Zippy Race graphic logo is blanked out - Main ROM0-ROM3 test NG */ + // Bootleg - "American Top" printed on title - (c) 1983 I.P. - Zippy Race graphic logo is blanked out - Main ROM0-ROM3 test NG ROM_START( travrusab ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "at4.m3", 0x0000, 0x2000, CRC(704ce6e4) SHA1(77385d853e3d5085c6ab155417e2b42212aff6fc) ) @@ -376,20 +750,20 @@ ROM_START( travrusab ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "11.a1", 0x7000, 0x1000, CRC(d2c0bc33) SHA1(3a52ae514daf985d297416301dac0ac6cbe671d7) ) - ROM_REGION( 0x06000, "gfx1", 0 ) - ROM_LOAD( "zippyrac.001", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) /* at1.e3 */ - ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) /* at2.c3 */ - ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) /* at3.a3 */ + ROM_REGION( 0x06000, "tiles", 0 ) + ROM_LOAD( "zippyrac.001", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) // at1.e3 + ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) // at2.c3 + ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) // at3.a3 - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "8.n3", 0x0000, 0x2000, CRC(00c0f46b) SHA1(5fccc188af653785f3fc0f9d36dbbbab472f6fdc) ) ROM_LOAD( "9.m3", 0x2000, 0x2000, CRC(73ade73b) SHA1(4da012d71e7c1f46407343cc8d4fbe0397b7db71) ) ROM_LOAD( "10.k3", 0x4000, 0x2000, CRC(fcfeaa69) SHA1(a958caf70d2dc4a80298a395cb48db210e6ca16b) ) ROM_REGION( 0x0320, "proms", 0 ) - ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */ - ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */ - ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */ + ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) // character palette - last $100 are unused + ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) // sprite palette + ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) // sprite lookup table ROM_END ROM_START( travrusab2 ) // all ROMs match travrusa but the ones where differently stated @@ -402,12 +776,12 @@ ROM_START( travrusab2 ) // all ROMs match travrusa but the ones where differentl ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "4.1a1", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "1.1e3", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) ROM_LOAD( "2.1c3", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) ROM_LOAD( "3.1a3", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "8.3n3", 0x0000, 0x2000, CRC(3e2c7a6b) SHA1(abc9eeb656ab6ed5f14e10fc988f75f21ccf037a) ) ROM_LOAD( "9.3m3", 0x2000, 0x2000, CRC(13be6a14) SHA1(47861910fe4c46cd72634cf7d834be2da2a0a4f9) ) ROM_LOAD( "10.3k3", 0x4000, 0x2000, CRC(6fcc9fdb) SHA1(88f878b9ebf07c5a16f8cb742016cac971ed3f10) ) @@ -420,7 +794,7 @@ ROM_END ROM_START( motorace ) ROM_REGION( 0x12000, "maincpu", 0 ) - ROM_LOAD( "mr.cpu", 0x0000, 0x2000, CRC(89030b0c) SHA1(dec4209385bbccff4a3c0d93d6507110ef841331) ) /* encrypted */ + ROM_LOAD( "mr.cpu", 0x0000, 0x2000, CRC(89030b0c) SHA1(dec4209385bbccff4a3c0d93d6507110ef841331) ) // encrypted ROM_LOAD( "mr1.3l", 0x2000, 0x2000, CRC(0904ed58) SHA1(2776e031cb58f99103bc35299bffd7612d954608) ) ROM_LOAD( "mr2.3k", 0x4000, 0x2000, CRC(8a2374ec) SHA1(7159731f5ef2485e3c822e3e8e51e9583dd1c6bc) ) ROM_LOAD( "mr3.3j", 0x6000, 0x2000, CRC(2f04c341) SHA1(ae990d9d4abdd7d6ef9d21aa62125fe2e0067623) ) @@ -428,20 +802,20 @@ ROM_START( motorace ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "mr10.1a", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "mr7.3e", 0x0000, 0x2000, CRC(492a60be) SHA1(9a3d6407b834eb7c3e3c8bb292ff124550a2787c) ) ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "mr4.3n", 0x0000, 0x2000, CRC(5cf1a0d6) SHA1(ef0883e71ee1e9c38cf3f444d9d8e79a08076b78) ) ROM_LOAD( "mr5.3m", 0x2000, 0x2000, CRC(f75f2aad) SHA1(e4a8a3da56cbc04f0c9041afac182d1bfceb1d0d) ) ROM_LOAD( "mr6.3k", 0x4000, 0x2000, CRC(518889a0) SHA1(70b417104ce86132cb5542813c1e0509b2260756) ) ROM_REGION( 0x0320, "proms", 0 ) - ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */ - ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */ - ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */ + ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) // character palette - last $100 are unused + ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) // sprite palette + ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) // sprite lookup table ROM_END /* @@ -450,7 +824,7 @@ Moto Tour is a Tecfri licensed version of Traverse USA/Zippy Race from Irem This version doesn't have the MSM5202 but still has the sounds produced by the 5202 with a lower quality, I guess it converts the sound data to analog in some way, also this version is unprotected, doesn't have the epoxy block. -Unfortunately the eprom's labels have disappeared, so I name it similar to Traverse USA but with the letters mt (Moto Tour) +Unfortunately the EPROMs' labels have disappeared, so I name it similar to Traverse USA but with the letters mt (Moto Tour) Rom Info @@ -462,7 +836,7 @@ mt1-3.a3 / mt1-4.m3 \ mt1-5.l3 == -mt1-6.k3 == Main cpu. Different from the other sets +mt1-6.k3 == Main CPU. Different from the other sets mt1-7.j3 / @@ -471,7 +845,7 @@ mt1-9.m3 -- Sprites. Apparently all different from the other sets mt1-10.k3 / mm6349.k2 \ -prom1.f1 -- color proms, identical to other versions +prom1.f1 -- color PROMs, identical to other versions prom2.h2 / Ricky2001 @@ -488,24 +862,24 @@ ROM_START( mototour ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "snd.a1", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) ) // == mr10.1a - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "mt1-1.e3", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) // == zippyrac.001 ROM_LOAD( "mt1-2.c3", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) // == mr8.3c ROM_LOAD( "mt1-3.a3", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) // == mr9.3a - ROM_REGION( 0x06000, "gfx2", 0 ) - ROM_LOAD( "mt1-8..n3", 0x0000, 0x2000, CRC(600a57f5) SHA1(86c2b2efb9392b7eca44510587d2459388c40435) ) - ROM_LOAD( "mt1-9..m3", 0x2000, 0x2000, CRC(6f9f2a4e) SHA1(8ebdd69895a4dd5de7fe84505359cccaa0aca6f8) ) - ROM_LOAD( "mt1-10..k3", 0x4000, 0x2000, CRC(d958def5) SHA1(198adf7e87804bd018b8cfa8bbc68623255698a2) ) + ROM_REGION( 0x06000, "sprites", 0 ) + ROM_LOAD( "mt1-8.n3", 0x0000, 0x2000, CRC(600a57f5) SHA1(86c2b2efb9392b7eca44510587d2459388c40435) ) + ROM_LOAD( "mt1-9.m3", 0x2000, 0x2000, CRC(6f9f2a4e) SHA1(8ebdd69895a4dd5de7fe84505359cccaa0aca6f8) ) + ROM_LOAD( "mt1-10.k3", 0x4000, 0x2000, CRC(d958def5) SHA1(198adf7e87804bd018b8cfa8bbc68623255698a2) ) ROM_REGION( 0x0320, "proms", 0 ) - ROM_LOAD( "mmi6349.k2", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */ // == mmi6349.ij - ROM_LOAD( "prom1.f1", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */ // == tbp18s.2 - ROM_LOAD( "prom2.h2", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */ // == tbp24s10.3 + ROM_LOAD( "mmi6349.k2", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) // character palette - last $100 are unused // == mmi6349.ij + ROM_LOAD( "prom1.f1", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) // sprite palette // == tbp18s.2 + ROM_LOAD( "prom2.h2", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) // sprite lookup table // == tbp24s10.3 ROM_END -/* it's probably a bootleg of the original Seibu version with the roms decrypted (no epoxy block) */ +// it's probably a bootleg of the original Seibu version with the ROMs decrypted (no epoxy block) ROM_START( shtrider ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sr01a.bin", 0x0000, 0x2000, CRC(de76d537) SHA1(5ad90571c451b0d7b7a569556cfe075ead00fa2b) ) @@ -516,12 +890,12 @@ ROM_START( shtrider ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "sr11a.bin", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "sr05a.bin", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) ) ROM_LOAD( "sr06a.bin", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) ) ROM_LOAD( "sr07a.bin", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "sr08a.bin", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) ) ROM_LOAD( "sr09a.bin", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b) ) ROM_LOAD( "sr10b.bin", 0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) ) @@ -535,7 +909,7 @@ ROM_END ROM_START( shtridera ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(eb51315c) SHA1(0101c008b6731cd8ec796fee645113e2be79bd08) ) /* was inside epoxy block with cpu, encrypted */ + ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(eb51315c) SHA1(0101c008b6731cd8ec796fee645113e2be79bd08) ) // was inside epoxy block with CPU, encrypted ROM_LOAD( "2.bin", 0x2000, 0x2000, CRC(97675d19) SHA1(774ce4d370fcbbd8a4109df023bf21db92d2e839) ) ROM_LOAD( "3.bin", 0x4000, 0x2000, CRC(78d051cd) SHA1(e1dc2dcfc4af35bdd5245d23977e8640d81a43f1) ) ROM_LOAD( "4.bin", 0x6000, 0x2000, CRC(02b96eaa) SHA1(ba4d61cf57142192684c45dd22720234d3521241) ) @@ -543,12 +917,12 @@ ROM_START( shtridera ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "11.bin", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "5.bin", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) ) ROM_LOAD( "6.bin", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) ) ROM_LOAD( "7.bin", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) ) ROM_LOAD( "9.bin", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b) ) ROM_LOAD( "10.bin", 0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) ) @@ -570,12 +944,12 @@ ROM_START( shtriderb ) ROM_REGION( 0x8000, "irem_audio:iremsound", 0 ) ROM_LOAD( "sr11.7.a1", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) ) - ROM_REGION( 0x06000, "gfx1", 0 ) + ROM_REGION( 0x06000, "tiles", 0 ) ROM_LOAD( "sr5.f3", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) ) ROM_LOAD( "sr6.c3", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) ) ROM_LOAD( "sr7.a3", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) ) - ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_REGION( 0x06000, "sprites", 0 ) ROM_LOAD( "sr8.17.n3", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) ) ROM_LOAD( "sr9.18.m3", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b)) ROM_LOAD( "sr10.19.k3",0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) ) @@ -592,11 +966,11 @@ void travrusa_state::init_motorace() uint8_t buffer[0x2000]; memcpy(&buffer[0], rom, 0x2000); - /* The first CPU ROM has the address and data lines scrambled */ + // The first CPU ROM has the address and data lines scrambled for (int A = 0; A < 0x2000; A++) { - int j = bitswap<16>(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11); - rom[j] = bitswap<8>(buffer[A],2,7,4,1,6,3,0,5); + int j = bitswap<16>(A, 15, 14, 13, 9, 7, 5, 3, 1, 12, 10, 8, 6, 4, 2, 0, 11); + rom[j] = bitswap<8>(buffer[A], 2, 7, 4, 1, 6, 3, 0, 5); } } @@ -604,31 +978,27 @@ void travrusa_state::init_shtridra() { uint8_t *rom = memregion("maincpu")->base(); - /* D3/D4 and D5/D6 swapped */ + // D3/D4 and D5/D6 swapped for (int A = 0; A < 0x2000; A++) - rom[A] = bitswap<8>(rom[A],7,5,6,3,4,2,1,0); + rom[A] = bitswap<8>(rom[A],7 ,5, 6, 3, 4, 2, 1, 0); } -uint8_t travrusa_state::shtridrb_port11_r() +uint8_t travrusa_state::shtriderb_port11_r() { - printf("shtridrb_port11_r %04x\n", m_maincpu->pc()); + logerror("shtriderb_port11_r %04x\n", m_maincpu->pc()); // reads, masks with 0xa8, checks for 0x88, resets game if not happy with value? return 0x88; } - -void travrusa_state::init_shtridrb() -{ - m_maincpu->space(AS_IO).install_read_handler(0x11, 0x11, 0, 0xff00, 0, read8smo_delegate(*this, FUNC(travrusa_state::shtridrb_port11_r))); -} +} // anonymous namespace -GAME( 1983, travrusa, 0, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem", "Traverse USA / Zippy Race", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, travrusab, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg (I.P.)", "Traverse USA (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, travrusab2, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg", "Traverse USA (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // still shows both Irem and Tecfri -GAME( 1983, mototour, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem (Tecfri license)", "MotoTour / Zippy Race (Tecfri license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, motorace, travrusa, travrusa, motorace, travrusa_state, init_motorace, ROT270, "Irem (Williams license)", "MotoRace USA", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, travrusa, 0, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem", "Traverse USA / Zippy Race", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, travrusab, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg (I.P.)", "Traverse USA (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, travrusab2, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg", "Traverse USA (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // still shows both Irem and Tecfri +GAME( 1983, mototour, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem (Tecfri license)", "MotoTour / Zippy Race (Tecfri license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, motorace, travrusa, travrusa, motorace, travrusa_state, init_motorace, ROT270, "Irem (Williams license)", "MotoRace USA", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shtrider, 0, shtrider, shtrider, travrusa_state, empty_init, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", MACHINE_SUPPORTS_SAVE ) // possible bootleg -GAME( 1984, shtridera, shtrider, shtrider, shtrider, travrusa_state, init_shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shtriderb, shtrider, shtriderb,shtrider, travrusa_state, init_shtridrb, ROT270|ORIENTATION_FLIP_X, "bootleg", "Shot Rider (bootleg)", MACHINE_SUPPORTS_SAVE ) // resets when you attempt to start a game? +GAME( 1985, shtrider, 0, shtrider, shtrider, travrusa_state, empty_init, ROT270 | ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", MACHINE_SUPPORTS_SAVE ) // possible bootleg +GAME( 1984, shtridera, shtrider, shtrider, shtrider, travrusa_state, init_shtridra, ROT270 | ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, shtriderb, shtrider, shtriderb, shtrider, travrusa_state, empty_init, ROT270 | ORIENTATION_FLIP_X, "bootleg", "Shot Rider (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/irem/travrusa.h b/src/mame/irem/travrusa.h deleted file mode 100644 index 44e3d591bb9..00000000000 --- a/src/mame/irem/travrusa.h +++ /dev/null @@ -1,60 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Lee Taylor -// thanks-to:John Clegg,Tomasz Slanina -#ifndef MAME_IREM_TRAVRUSA_H -#define MAME_IREM_TRAVRUSA_H - -#pragma once - -#include "emupal.h" -#include "tilemap.h" - -class travrusa_state : public driver_device -{ -public: - travrusa_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_spriteram(*this, "spriteram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") - { } - - void shtrider(machine_config &config); - void travrusa(machine_config &config); - void shtriderb(machine_config &config); - - void init_shtridra(); - void init_motorace(); - void init_shtridrb(); - -private: - /* memory pointers */ - required_shared_ptr m_videoram; - required_shared_ptr m_spriteram; - - /* video-related */ - tilemap_t* m_bg_tilemap = nullptr; - int m_scrollx[2]{}; - void travrusa_videoram_w(offs_t offset, uint8_t data); - void travrusa_scroll_x_low_w(uint8_t data); - void travrusa_scroll_x_high_w(uint8_t data); - void travrusa_flipscreen_w(uint8_t data); - uint8_t shtridrb_port11_r(); - TILE_GET_INFO_MEMBER(get_tile_info); - virtual void machine_reset() override; - virtual void video_start() override; - void travrusa_palette(palette_device &palette) const; - void shtrider_palette(palette_device &palette) const; - uint32_t screen_update_travrusa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void set_scroll(); - void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; - - void main_map(address_map &map); -}; - -#endif // MAME_IREM_TRAVRUSA_H diff --git a/src/mame/irem/travrusa_v.cpp b/src/mame/irem/travrusa_v.cpp deleted file mode 100644 index e6555d05331..00000000000 --- a/src/mame/irem/travrusa_v.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Lee Taylor -// thanks-to:John Clegg,Tomasz Slanina -/*************************************************************************** - - video.c - - Traverse USA - -L Taylor -J Clegg - - Functions to emulate the video hardware of the machine. - -***************************************************************************/ - -#include "emu.h" -#include "travrusa.h" - -/*************************************************************************** - - Convert the color PROMs into a more useable format. - - Traverse USA has one 256x8 character palette PROM (some versions have two - 256x4), one 32x8 sprite palette PROM, and one 256x4 sprite color lookup - table PROM. - - I don't know for sure how the palette PROMs are connected to the RGB - output, but it's probably something like this; note that RED and BLUE - are swapped wrt the usual configuration. - - bit 7 -- 220 ohm resistor -- RED - -- 470 ohm resistor -- RED - -- 220 ohm resistor -- GREEN - -- 470 ohm resistor -- GREEN - -- 1 kohm resistor -- GREEN - -- 220 ohm resistor -- BLUE - -- 470 ohm resistor -- BLUE - bit 0 -- 1 kohm resistor -- BLUE - -***************************************************************************/ - -void travrusa_state::travrusa_palette(palette_device &palette) const -{ - const uint8_t *color_prom = memregion("proms")->base(); - - // create a lookup table for the palette - for (int i = 0; i < 0x80; i++) - { - int bit0, bit1, bit2; - - // red component - bit0 = 0; - bit1 = BIT(color_prom[i], 6); - bit2 = BIT(color_prom[i], 7); - int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // green component - bit0 = BIT(color_prom[i], 3); - bit1 = BIT(color_prom[i], 4); - bit2 = BIT(color_prom[i], 5); - int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // blue component - bit0 = BIT(color_prom[i], 0); - bit1 = BIT(color_prom[i], 1); - bit2 = BIT(color_prom[i], 2); - int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - for (int i = 0x80; i < 0x90; i++) - { - int bit0, bit1, bit2; - - // red component - bit0 = 0; - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 6); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 7); - int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // green component - bit0 = BIT(color_prom[(i - 0x80) + 0x200], 3); - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 4); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 5); - int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // blue component - bit0 = BIT(color_prom[(i - 0x80) + 0x200], 0); - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 1); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 2); - int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - // color_prom now points to the beginning of the lookup table - color_prom += 0x220; - - // characters - for (int i = 0; i < 0x80; i++) - palette.set_pen_indirect(i, i); - - // sprites - for (int i = 0x80; i < 0x100; i++) - { - uint8_t const ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80; - palette.set_pen_indirect(i, ctabentry); - } -} - -void travrusa_state::shtrider_palette(palette_device &palette) const -{ - const uint8_t *color_prom = memregion("proms")->base(); - - // create a lookup table for the palette - for (int i = 0; i < 0x80; i++) - { - int bit0, bit1, bit2; - - // red component - bit0 = 0; - bit1 = BIT(color_prom[i + 0x000], 2); - bit2 = BIT(color_prom[i + 0x000], 3); - int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // green component - bit0 = BIT(color_prom[i + 0x100], 3); - bit1 = BIT(color_prom[i + 0x000], 0); - bit2 = BIT(color_prom[i + 0x000], 1); - int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // blue component - bit0 = BIT(color_prom[i + 0x100], 0); - bit1 = BIT(color_prom[i + 0x100], 1); - bit2 = BIT(color_prom[i + 0x100], 2); - int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - for (int i = 0x80; i < 0x90; i++) - { - int bit0, bit1, bit2; - - // red component - bit0 = 0; - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 6); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 7); - int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // green component - bit0 = BIT(color_prom[(i - 0x80) + 0x200], 3); - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 4); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 5); - int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - // blue component - bit0 = BIT(color_prom[(i - 0x80) + 0x200], 0); - bit1 = BIT(color_prom[(i - 0x80) + 0x200], 1); - bit2 = BIT(color_prom[(i - 0x80) + 0x200], 2); - int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - // color_prom now points to the beginning of the lookup table - color_prom += 0x220; - - // characters - for (int i = 0; i < 0x80; i++) - palette.set_pen_indirect(i, i); - - // sprites - for (int i = 0x80; i < 0x100; i++) - { - uint8_t const ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80; - palette.set_pen_indirect(i, ctabentry); - } -} - - - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILE_GET_INFO_MEMBER(travrusa_state::get_tile_info) -{ - uint8_t attr = m_videoram[2 * tile_index + 1]; - int flags = TILE_FLIPXY((attr & 0x30) >> 4); - - tileinfo.group = ((attr & 0x0f) == 0x0f) ? 1 : 0; /* tunnels */ - - tileinfo.set(0, - m_videoram[2 * tile_index] + ((attr & 0xc0) << 2), - attr & 0x0f, - flags); -} - - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -void travrusa_state::video_start() -{ - save_item(NAME(m_scrollx)); - - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(travrusa_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - - m_bg_tilemap->set_transmask(0, 0xff, 0x00); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x3f, 0xc0); /* split type 1 has pens 6 and 7 opaque - tunnels */ - - m_bg_tilemap->set_scroll_rows(4); -} - - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -void travrusa_state::travrusa_videoram_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset / 2); -} - - -void travrusa_state::set_scroll( ) -{ - int i; - - for (i = 0; i <= 2; i++) - m_bg_tilemap->set_scrollx(i, m_scrollx[0] + 256 * m_scrollx[1]); - - m_bg_tilemap->set_scrollx(3, 0); -} - -void travrusa_state::travrusa_scroll_x_low_w(uint8_t data) -{ - m_scrollx[0] = data; - set_scroll(); -} - -void travrusa_state::travrusa_scroll_x_high_w(uint8_t data) -{ - m_scrollx[1] = data; - set_scroll(); -} - - -void travrusa_state::travrusa_flipscreen_w(uint8_t data) -{ - /* screen flip is handled both by software and hardware */ - data ^= ~ioport("DSW2")->read() & 1; - - flip_screen_set(data & 1); - - machine().bookkeeping().coin_counter_w(0, data & 0x02); - machine().bookkeeping().coin_counter_w(1, data & 0x20); -} - - - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -void travrusa_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) -{ - int offs; - const rectangle spritevisiblearea(1*8, 31*8-1, 0*8, 24*8-1); - const rectangle spritevisibleareaflip(1*8, 31*8-1, 8*8, 32*8-1); - rectangle clip = cliprect; - if (flip_screen()) - clip &= spritevisibleareaflip; - else - clip &= spritevisiblearea; - - - for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4) - { - int sx = ((m_spriteram[offs + 3] + 8) & 0xff) - 8; - int sy = 240 - m_spriteram[offs]; - int code = m_spriteram[offs + 2]; - int attr = m_spriteram[offs + 1]; - int flipx = attr & 0x40; - int flipy = attr & 0x80; - - if (flip_screen()) - { - sx = 240 - sx; - sy = 240 - sy; - flipx = !flipx; - flipy = !flipy; - } - - m_gfxdecode->gfx(1)->transpen(bitmap,clip, - code, - attr & 0x0f, - flipx, flipy, - sx, sy, 0); - } -} - - -uint32_t travrusa_state::screen_update_travrusa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); - draw_sprites(bitmap,cliprect); - m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); - return 0; -} diff --git a/src/mame/midway/midyunit.cpp b/src/mame/midway/midyunit.cpp index bbc3f002a58..66fb7254164 100644 --- a/src/mame/midway/midyunit.cpp +++ b/src/mame/midway/midyunit.cpp @@ -1394,6 +1394,13 @@ ROM_START( narc ) ROM_LOAD( "rev2_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(4d33bbec) SHA1(05a3bd66ff91c824e841ca3943585f6aa383c5c2) ) ROM_LOAD( "rev2_narc_image_rom_u26.u26", 0x6e0000, 0x10000, CRC(cb19f784) SHA1(1e4d85603c940e247fdc45f0366dfb484285e588) ) // U25 socket not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END @@ -1500,6 +1507,13 @@ ROM_START( narc6 ) ROM_LOAD( "rev2_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(4d33bbec) SHA1(05a3bd66ff91c824e841ca3943585f6aa383c5c2) ) ROM_LOAD( "rev2_narc_image_rom_u26.u26", 0x6e0000, 0x10000, CRC(cb19f784) SHA1(1e4d85603c940e247fdc45f0366dfb484285e588) ) // U25 socket not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END @@ -1606,6 +1620,13 @@ ROM_START( narc4 ) ROM_LOAD( "rev2_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(4d33bbec) SHA1(05a3bd66ff91c824e841ca3943585f6aa383c5c2) ) ROM_LOAD( "rev2_narc_image_rom_u26.u26", 0x6e0000, 0x10000, CRC(cb19f784) SHA1(1e4d85603c940e247fdc45f0366dfb484285e588) ) // U25 socket not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END @@ -1712,6 +1733,13 @@ ROM_START( narc3 ) ROM_LOAD( "rev2_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(4d33bbec) SHA1(05a3bd66ff91c824e841ca3943585f6aa383c5c2) ) ROM_LOAD( "rev2_narc_image_rom_u26.u26", 0x6e0000, 0x10000, CRC(cb19f784) SHA1(1e4d85603c940e247fdc45f0366dfb484285e588) ) // U25 socket not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END @@ -1818,6 +1846,13 @@ ROM_START( narc2 ) ROM_LOAD( "rev2_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(4d33bbec) SHA1(05a3bd66ff91c824e841ca3943585f6aa383c5c2) ) ROM_LOAD( "rev2_narc_image_rom_u26.u26", 0x6e0000, 0x10000, CRC(cb19f784) SHA1(1e4d85603c940e247fdc45f0366dfb484285e588) ) // U25 socket not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END @@ -1909,6 +1944,13 @@ ROM_START( narc1 ) ROM_LOAD( "rev1_narc_image_rom_u28.u28", 0x6c0000, 0x10000, CRC(3012cd6e) SHA1(670ade7b46b3232a0d3c5fea2ab25f8af7664a4e) ) ROM_LOAD( "rev1_narc_image_rom_u27.u27", 0x6d0000, 0x10000, CRC(e631fe7d) SHA1(e952418f23939e169dd8aa666ad3564e810c9554) ) // U26 & U25 sockets not populated + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "a-5346-3036-1_narc_pls153.u28", 0x000, 0x0eb, CRC(4db36615) SHA1(781d13af2735ad3da0c7594487e7f4e19b5f459f) ) + ROM_LOAD( "a-5346-3036-2_narc_pls153.u78", 0x100, 0x0eb, CRC(4b151863) SHA1(0740c5fba978b9bb68a50472b57c0801c7591d6f) ) + ROM_LOAD( "a-5346-3036-3_narc_pls153.u79", 0x200, 0x0eb, CRC(35bd6ed8) SHA1(98b4ad4f61d2f2013815fa79c3428a2d610c8a6f) ) + ROM_LOAD( "a-5346-3036-4_narc_pls153.u80", 0x300, 0x0eb, CRC(9c10e4cf) SHA1(77d0a6a6e19e2f5b17e9356459215e5452247be3) ) + ROM_LOAD( "a-5346-3036-5_narc_pls153.u83", 0x400, 0x0eb, CRC(3a2f21b2) SHA1(bafc45b8b0e83d044bc4963abbdbbf4b6da1694b) ) ROM_END diff --git a/src/mame/pinball/s11b.cpp b/src/mame/pinball/s11b.cpp index 9a541061aca..b92135f44ee 100644 --- a/src/mame/pinball/s11b.cpp +++ b/src/mame/pinball/s11b.cpp @@ -635,6 +635,24 @@ ROM_START(bguns_p1) ROM_RELOAD(0x38000,0x8000) ROM_END +ROM_START(bguns_p1a) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD("bigguns_u26_rom-2_lgx.bin", 0x4000, 0x4000, CRC(d75ca79d) SHA1(6d185cda4c62bf1cae0448c89b4f93a90aed855c)) + ROM_LOAD("bigguns_u27_rom-1_lgx.bin", 0x8000, 0x8000, CRC(2fba9a0d) SHA1(16629a5f009865825207378118a147e3135c51cf)) + ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("guns_u21.l1", 0x8000, 0x8000, CRC(35c6bfe4) SHA1(83dbd10311add75f56046de58d315f8a87389703)) + ROM_LOAD("guns_u22.l1", 0x0000, 0x8000, CRC(091a5cb8) SHA1(db77314241eb6ed7f4385f99312a49b7caad1283)) + ROM_REGION(0x80000, "bg:cpu", ROMREGION_ERASEFF) + ROM_LOAD("gund_u4.l1", 0x00000, 0x8000, CRC(d4a430a3) SHA1(5b44e3f313cc7cb75f51c239013d46e5eb986f9d)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("guns_u19.l1", 0x20000, 0x8000, CRC(ec1a6c23) SHA1(45bb4f78b89de9e690b5f9741d17f97766e702d6)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) +ROM_END + /*------------------------------ / Black Knight 2000 6/89 (#563) /------------------------------*/ @@ -1621,6 +1639,7 @@ GAME(1987, bguns_l8, 0, s11b, s11b, s11b_state, init_s11bnn, R GAME(1987, bguns_l7, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (L-7)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) GAME(1987, bguns_la, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (L-A)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) GAME(1987, bguns_p1, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (P-1)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME(1987, bguns_p1a, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (P-1, alternate set)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) GAME(1989, bk2k_l4, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (L-4)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) GAME(1989, bk2k_lg1, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (LG-1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) GAME(1989, bk2k_lg3, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (LG-3)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) -- cgit v1.2.3