diff options
Diffstat (limited to 'src/mame/drivers/poolshrk.cpp')
-rw-r--r-- | src/mame/drivers/poolshrk.cpp | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp deleted file mode 100644 index 0a7fb1bdcb6..00000000000 --- a/src/mame/drivers/poolshrk.cpp +++ /dev/null @@ -1,263 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Stefan Jokisch -/*************************************************************************** - -Atari Poolshark Driver - -***************************************************************************/ - -#include "emu.h" -#include "includes/poolshrk.h" - -#include "cpu/m6800/m6800.h" -#include "sound/discrete.h" - -#include "screen.h" -#include "speaker.h" - - - -void poolshrk_state::init_poolshrk() -{ - uint8_t* pSprite = memregion("gfx1")->base(); - uint8_t* pOffset = memregion("proms")->base(); - - /* re-arrange sprite data using the PROM */ - - for (int i = 0; i < 16; i++) - { - for (int j = 0; j < 16; j++) - { - uint16_t v = - (pSprite[0] << 0xC) | - (pSprite[1] << 0x8) | - (pSprite[2] << 0x4) | - (pSprite[3] << 0x0); - - v >>= pOffset[j]; - - pSprite[0] = (v >> 0xC) & 15; - pSprite[1] = (v >> 0x8) & 15; - pSprite[2] = (v >> 0x4) & 15; - pSprite[3] = (v >> 0x0) & 15; - - pSprite += 4; - } - } - - save_item(NAME(m_da_latch)); -} - - -WRITE8_MEMBER(poolshrk_state::da_latch_w) -{ - m_da_latch = data & 15; -} - - -WRITE8_MEMBER(poolshrk_state::led_w) -{ - if (offset & 2) - m_leds[0] = BIT(offset, 0); - if (offset & 4) - m_leds[1] = BIT(offset, 0); -} - - -WRITE8_MEMBER(poolshrk_state::watchdog_w) -{ - if ((offset & 3) == 3) - { - m_watchdog->watchdog_reset(); - } -} - - -READ8_MEMBER(poolshrk_state::input_r) -{ - static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" }; - uint8_t val = ioport(portnames[offset & 3])->read(); - - int x = ioport((offset & 1) ? "AN1" : "AN0")->read(); - int y = ioport((offset & 1) ? "AN3" : "AN2")->read(); - - if (x >= m_da_latch) val |= 8; - if (y >= m_da_latch) val |= 4; - - if ((offset & 3) == 3) - { - m_watchdog->watchdog_reset(); - } - - return val; -} - - -READ8_MEMBER(poolshrk_state::irq_reset_r) -{ - m_maincpu->set_input_line(0, CLEAR_LINE); - - return 0; -} - - -void poolshrk_state::poolshrk_cpu_map(address_map &map) -{ - map.global_mask(0x7fff); - map(0x0000, 0x00ff).mirror(0x2300).ram(); - map(0x0400, 0x07ff).mirror(0x2000).writeonly().share("playfield_ram"); - map(0x0800, 0x080f).mirror(0x23f0).writeonly().share("hpos_ram"); - map(0x0c00, 0x0c0f).mirror(0x23f0).writeonly().share("vpos_ram"); - map(0x1000, 0x13ff).mirror(0x2000).rw(FUNC(poolshrk_state::input_r), FUNC(poolshrk_state::watchdog_w)); - map(0x1400, 0x17ff).mirror(0x2000).w(FUNC(poolshrk_state::scratch_sound_w)); - map(0x1800, 0x1bff).mirror(0x2000).w(FUNC(poolshrk_state::score_sound_w)); - map(0x1c00, 0x1fff).mirror(0x2000).w(FUNC(poolshrk_state::click_sound_w)); - map(0x4000, 0x4000).noprw(); /* diagnostic ROM location */ - map(0x6000, 0x63ff).w(FUNC(poolshrk_state::da_latch_w)); - map(0x6400, 0x67ff).w(FUNC(poolshrk_state::bump_sound_w)); - map(0x6800, 0x6bff).r(FUNC(poolshrk_state::irq_reset_r)); - map(0x6c00, 0x6fff).w(FUNC(poolshrk_state::led_w)); - map(0x7000, 0x7fff).rom(); -} - - -static INPUT_PORTS_START( poolshrk ) - PORT_START("IN0") - PORT_BIT( 0x0C, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN1") - PORT_BIT( 0x0C, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_DIPNAME( 0x80, 0x00, "Extended Play" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off )) - PORT_DIPSETTING( 0x00, DEF_STR( On )) - - PORT_START("IN2") - PORT_DIPNAME( 0x03, 0x02, "Racks Per Game" ) - PORT_DIPSETTING( 0x03, "2" ) - PORT_DIPSETTING( 0x02, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_BIT( 0x0C, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN3") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage )) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C )) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C )) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C )) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C )) - PORT_BIT( 0x0C, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) - - PORT_START("AN0") - PORT_BIT( 15, 8, IPT_AD_STICK_X ) PORT_MINMAX(0,15) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_PLAYER(1) - - PORT_START("AN1") - PORT_BIT( 15, 8, IPT_AD_STICK_X ) PORT_MINMAX(0,15) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_PLAYER(2) - - PORT_START("AN2") - PORT_BIT( 15, 8, IPT_AD_STICK_Y ) PORT_MINMAX(0,15) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_REVERSE PORT_PLAYER(1) - - PORT_START("AN3") - PORT_BIT( 15, 8, IPT_AD_STICK_Y ) PORT_MINMAX(0,15) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_REVERSE PORT_PLAYER(2) - -INPUT_PORTS_END - - -static const gfx_layout poolshrk_sprite_layout = -{ - 16, 16, /* width, height */ - 16, /* total */ - 1, /* planes */ - { 0 }, /* plane offsets */ - { - 0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, - 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F - }, - { - 0x000, 0x020, 0x040, 0x060, 0x080, 0x0A0, 0x0C0, 0x0E0, - 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0 - }, - 0x200 /* increment */ -}; - - -static const gfx_layout poolshrk_tile_layout = -{ - 8, 8, /* width, height */ - 64, /* total */ - 1, /* planes */ - { 0 }, /* plane offsets */ - { - 7, 6, 5, 4, 3, 2, 1, 0 - }, - { - 0x000, 0x200, 0x400, 0x600, 0x800, 0xA00, 0xC00, 0xE00 - }, - 0x8 /* increment */ -}; - - -static GFXDECODE_START( gfx_poolshrk ) - GFXDECODE_ENTRY( "gfx1", 0, poolshrk_sprite_layout, 0, 2 ) - GFXDECODE_ENTRY( "gfx2", 0, poolshrk_tile_layout, 0, 1 ) -GFXDECODE_END - - -void poolshrk_state::poolshrk_palette(palette_device &palette) const -{ - palette.set_pen_color(0, rgb_t(0x7f, 0x7f, 0x7f)); - palette.set_pen_color(1, rgb_t(0xff, 0xff, 0xff)); - palette.set_pen_color(2, rgb_t(0x7f, 0x7f, 0x7f)); - palette.set_pen_color(3, rgb_t(0x00, 0x00, 0x00)); -} - - -void poolshrk_state::poolshrk(machine_config &config) -{ - /* basic machine hardware */ - M6800(config, m_maincpu, 11055000 / 8); /* ? */ - m_maincpu->set_addrmap(AS_PROGRAM, &poolshrk_state::poolshrk_cpu_map); - m_maincpu->set_vblank_int("screen", FUNC(poolshrk_state::irq0_line_assert)); - - WATCHDOG_TIMER(config, m_watchdog); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_size(256, 256); - screen.set_visarea(1, 255, 24, 255); - screen.set_screen_update(FUNC(poolshrk_state::screen_update)); - screen.set_palette(m_palette); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_poolshrk); - PALETTE(config, m_palette, FUNC(poolshrk_state::poolshrk_palette), 4); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - DISCRETE(config, m_discrete, poolshrk_discrete).add_route(ALL_OUTPUTS, "mono", 1.0); -} - - -ROM_START( poolshrk ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "7329.k1", 0x7000, 0x800, CRC(88152245) SHA1(c7c5e43ea488a197e92a1dc2231578f8ed86c98d) ) - ROM_LOAD( "7330.l1", 0x7800, 0x800, CRC(fb41d3e9) SHA1(c17994179362da13acfcd36a28f45e328428c031) ) - - ROM_REGION( 0x400, "gfx1", 0 ) /* sprites */ - ROM_LOAD( "7325.j5", 0x0000, 0x200, CRC(fae87eed) SHA1(8891d0ea60f72f826d71dc6b064a2ba81b298914) ) - ROM_LOAD( "7326.h5", 0x0200, 0x200, CRC(05ec9762) SHA1(6119c4529334c98a0a42ca13a98a8661fc594d80) ) - - ROM_REGION( 0x200, "gfx2", 0 ) /* tiles */ - ROM_LOAD( "7328.n6", 0x0000, 0x200, CRC(64bcbf3a) SHA1(a4e3ce6b4734234359e3ef784a771e40580c2a2a) ) - - ROM_REGION( 0x20, "proms", 0 ) /* line offsets */ - ROM_LOAD( "7327.k6", 0x0000, 0x020, CRC(f74cef5b) SHA1(f470bf5b193dae4b44e89bc4c4476cf8d98e7cfd) ) -ROM_END - - -GAME( 1977, poolshrk, 0, poolshrk, poolshrk, poolshrk_state, init_poolshrk, 0, "Atari", "Poolshark", MACHINE_SUPPORTS_SAVE ) |