diff options
Diffstat (limited to 'src/mame/drivers/lvcards.cpp')
-rw-r--r-- | src/mame/drivers/lvcards.cpp | 702 |
1 files changed, 0 insertions, 702 deletions
diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp deleted file mode 100644 index 1ef5e5f099c..00000000000 --- a/src/mame/drivers/lvcards.cpp +++ /dev/null @@ -1,702 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Zsolt Vasvari, Curt Coder -/*************************************************************************** -Lovely Cards/Poker/Pontoon driver, updated by El Condor from work by Uki and -Zsolt Vasvari respectively. -Later cleaned up by Curt Coder and Scott Yellig. ---- - -Lovely Poker by Uki/El Condor -Enter switch test mode by pressing the Deal key twice when the -crosshatch pattern comes up. - -After you get into Check Mode (F2), press the Deal key to switch pages. - -Memory Mapped: - -0000-5fff R ROM -6000-67ff RW Battery Backed RAM -9000-93ff RW Video RAM -9400-97ff RW Color RAM - Bits 0-3 - color - Bits 4-5 - character bank - Bit 6 - flip x - Bit 7 - Is it used? -a000 R Input Port 0 -a001 R Input Port 1 -a002 R Input Port 2 -a001 W Control Port 0 -a002 W Control Port 1 - -I/O Ports: -00 RW YM2149 Data Port - Port A - DSW #1 - Port B - DSW #2 -01 W YM2149 Control Port - ---- - -Pontoon Memory Map (preliminary) - -Pontoon driver by Zsolt Vasvari -Enter switch test mode by pressing the Hit key twice when the -crosshatch pattern comes up -After you get into Check Mode (F2), press the Hit key to switch pages. - -Memory Mapped: - -0000-5fff R ROM -6000-67ff RW Battery Backed RAM -8000-83ff RW Video RAM -8400-87ff RW Color RAM - Bits 0-3 - color - Bits 4-5 - character bank - Bit 6 - flip x - Bit 7 - Is it used? -a000 R Input Port 0 -a001 R Input Port 1 -a002 R Input Port 2 -a001 W Control Port 0 -a002 W Control Port 1 - -I/O Ports: -00 RW YM2149 Data Port - Port A - DSW #1 - Port B - DSW #2 -01 W YM2149 Control Port - -TODO: - -- What do the control ports do? Payout? -- Input ports need to be cleaned up -- NVRAM does not work for lvcards? In lvcardsa it works - -***************************************************************************/ - -#include "emu.h" -#include "includes/lvcards.h" - -#include "cpu/z80/z80.h" -#include "machine/nvram.h" -#include "sound/ay8910.h" -#include "screen.h" -#include "speaker.h" - - -void lvpoker_state::machine_start() -{ - lvcards_state::machine_start(); - - save_item(NAME(m_payout)); - save_item(NAME(m_pulse)); - save_item(NAME(m_result)); -} - -void lvpoker_state::machine_reset() -{ - lvcards_state::machine_reset(); - - m_payout = 0; - m_pulse = 0; - m_result = 0; -} - -WRITE8_MEMBER(lvpoker_state::control_port_2_w) -{ - switch (data) - { - case 0x60: - m_payout = 1; - break; - case 0xc0: - m_payout = 1; - break; - default: - m_payout = 0; - break; - } -} - -WRITE8_MEMBER(lvpoker_state::control_port_2a_w) -{ - switch (data) - { - case 0x60: - m_payout = 1; - break; - case 0x80: - m_payout = 1; - break; - default: - m_payout = 0; - break; - } -} - -READ8_MEMBER(lvpoker_state::payout_r) -{ - m_result = ioport("IN2")->read(); - - if (m_payout) - { - if (m_pulse < 3) - { - m_result = m_result | 0x40; - m_pulse++; - } - else - { - m_pulse = 0; - } - } - return m_result; -} - -void lvpoker_state::ponttehk_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0x6000, 0x67ff).ram().share("nvram"); - map(0x8000, 0x83ff).ram().w(FUNC(lvpoker_state::videoram_w)).share("videoram"); - map(0x8400, 0x87ff).ram().w(FUNC(lvpoker_state::colorram_w)).share("colorram"); - map(0xa000, 0xa000).portr("IN0"); - map(0xa001, 0xa001).portr("IN1").nopw(); // lamps - map(0xa002, 0xa002).r(FUNC(lvpoker_state::payout_r)).w(FUNC(lvpoker_state::control_port_2a_w));//.nopw(); // ??? -} - -void lvcards_state::lvcards_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0x6000, 0x67ff).ram().share("nvram"); - map(0x9000, 0x93ff).ram().w(FUNC(lvcards_state::videoram_w)).share("videoram"); - map(0x9400, 0x97ff).ram().w(FUNC(lvcards_state::colorram_w)).share("colorram"); - map(0xa000, 0xa000).portr("IN0"); - map(0xa001, 0xa001).portr("IN1").nopw(); - map(0xa002, 0xa002).portr("IN2").nopw(); - map(0xc000, 0xdfff).rom(); -} - -void lvcards_state::lvcards_io_map(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x00).r("aysnd", FUNC(ay8910_device::data_r)); - map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w)); -} - -void lvcards_state::lvcardsa_decrypted_opcodes_map(address_map &map) -{ - map(0x0000, 0x5fff).rom().share("decrypted_opcodes"); - map(0xc000, 0xdfff).rom().region("maincpu", 0xc000); -} - -void lvpoker_state::lvpoker_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0x6000, 0x67ff).ram().share("nvram"); - map(0x9000, 0x93ff).ram().w(FUNC(lvpoker_state::videoram_w)).share("videoram"); - map(0x9400, 0x97ff).ram().w(FUNC(lvpoker_state::colorram_w)).share("colorram"); - map(0xa000, 0xa000).portr("IN0"); - map(0xa001, 0xa001).portr("IN1").nopw(); // lamps - map(0xa002, 0xa002).r(FUNC(lvpoker_state::payout_r)).w(FUNC(lvpoker_state::control_port_2_w)); - map(0xc000, 0xdfff).rom(); -} - -static INPUT_PORTS_START( lvcards ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Analyzer") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Red") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black") - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Double") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Take Score") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(3) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Reset?" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x07, 0x07, "1 COIN =" ) - PORT_DIPSETTING( 0x06, "5$" ) - PORT_DIPSETTING( 0x05, "10$" ) - PORT_DIPSETTING( 0x04, "15$" ) - PORT_DIPSETTING( 0x03, "20$" ) - PORT_DIPSETTING( 0x07, "25$" ) - PORT_DIPSETTING( 0x02, "50$" ) - PORT_DIPSETTING( 0x01, "75$" ) - PORT_DIPSETTING( 0x00, "100$" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( lvpoker ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Analyzer") PORT_TOGGLE - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CODE(KEYCODE_MINUS) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Clear Stats") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Hopper Reset") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Red") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black") - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Double") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Remove Credit as coins") - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) // Token Drop - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Take Score") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(3) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(3) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(3) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // Overflow - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) // Token Out - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM) - - PORT_START("DSW0") - PORT_DIPNAME( 0x07, 0x07, "Winning Percentage" ) - PORT_DIPSETTING( 0x06, "70%" ) - PORT_DIPSETTING( 0x05, "74%" ) - PORT_DIPSETTING( 0x04, "78%" ) - PORT_DIPSETTING( 0x03, "82%" ) - PORT_DIPSETTING( 0x02, "86%" ) - PORT_DIPSETTING( 0x07, "90%" ) - PORT_DIPSETTING( 0x01, "94%" ) - PORT_DIPSETTING( 0x00, "98%" ) - PORT_DIPNAME( 0x08, 0x08, "Max. Payout Adjustment") - PORT_DIPSETTING( 0x08, "Free") - PORT_DIPSETTING( 0x00, "2000") - PORT_DIPNAME( 0x10, 0x10, "Bonus Game Difficulty") - PORT_DIPSETTING( 0x10, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x60, 0x20, "Payment Method" ) - PORT_DIPSETTING( 0x00, "Credit In/Coin Out") - PORT_DIPSETTING( 0x20, "Credit In/Credit Out") - PORT_DIPSETTING( 0x40, "Coin In/Coin Out") - //PORT_DIPSETTING( 0x60, "Credit In/Coin Out") Again, clearly no Coin in, Credit out - PORT_DIPNAME( 0x80, 0x80, "Memory Reset Switch" ) - PORT_DIPSETTING( 0x80, "Disabled" ) - PORT_DIPSETTING( 0x00, "Enabled" ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x07, 0x06, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x38, 0x30, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x28, DEF_STR( 2C_2C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x38, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x18, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) - PORT_DIPNAME( 0x40, 0x40, "Coin C (Service Switch)" ) - PORT_DIPSETTING( 0x40, "1 Push/1 Credit" ) - PORT_DIPSETTING( 0x00, "1 Push/10 Credits" ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( ponttehk ) - PORT_START("IN0") - PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset All") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Clear Stats") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) PORT_NAME("Call Attendant") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Hopper Reset") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Bonus Game") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Stand") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Hit") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Use Credit") PORT_CODE(KEYCODE_L) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Remove Credit as coins") PORT_CODE(KEYCODE_A) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM )// Token Drop - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(3) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(3) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(3) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // Overflow optometric switch - reversed logic - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_3) PORT_NAME("Coinout Sensor") //Token Out - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM )//Motor On? - - PORT_START("DSW0") - PORT_DIPNAME( 0x07, 0x07, "Winning Percentage" ) - PORT_DIPSETTING( 0x06, "70%" ) - PORT_DIPSETTING( 0x05, "74%" ) - PORT_DIPSETTING( 0x04, "78%" ) - PORT_DIPSETTING( 0x03, "82%" ) - PORT_DIPSETTING( 0x02, "86%" ) - PORT_DIPSETTING( 0x07, "90%" ) - PORT_DIPSETTING( 0x01, "94%" ) - PORT_DIPSETTING( 0x00, "98%" ) - PORT_BIT( 0x18, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_DIPNAME( 0x60, 0x20, "Payment Method" ) - PORT_DIPSETTING( 0x00, "Credit In/Coin Out" ) - PORT_DIPSETTING( 0x20, "Coin In/Coin Out" ) - PORT_DIPSETTING( 0x40, "Credit In/Credit Out" ) - //PORT_DIPSETTING( 0x60, "Credit In/Coin Out" ) Again, clearly no Coin in, Credit out - PORT_DIPNAME( 0x80, 0x80, "Reset All Switch" ) - PORT_DIPSETTING( 0x80, "Disabled" ) - PORT_DIPSETTING( 0x00, "Enabled" ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x07, 0x06, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x38, 0x30, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x28, DEF_STR( 2C_2C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x38, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x18, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) - PORT_DIPNAME( 0x40, 0x40, "Coin C (Service Switch)" ) - PORT_DIPSETTING( 0x40, "1 Push/1 Credit" ) - PORT_DIPSETTING( 0x00, "1 Push/10 Credits" ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) -INPUT_PORTS_END - - -static const gfx_layout charlayout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,1), /* 2048 characters */ - 4, /* 4 bits per pixel */ - {0,1,2,3}, - {4,0,12,8,20,16,28,24}, - {32*0, 32*1, 32*2, 32*3, 32*4, 32*5, 32*6, 32*7}, - 32*8 -}; - -/* Graphics Decode Information */ - -static GFXDECODE_START( gfx_lvcards ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) -GFXDECODE_END - -/* Sound Interfaces */ - -void lvcards_state::lvcards(machine_config &config) -{ - // basic machine hardware - Z80(config, m_maincpu, 18432000/4); // unknown frequency, assume same as tehkanwc.cpp - m_maincpu->set_addrmap(AS_PROGRAM, &lvcards_state::lvcards_map); - m_maincpu->set_addrmap(AS_IO, &lvcards_state::lvcards_io_map); - m_maincpu->set_vblank_int("screen", FUNC(lvcards_state::irq0_line_hold)); - - // video hardware - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); - screen.set_size(32*8, 32*8); - screen.set_visarea(8*0, 32*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(lvcards_state::screen_update_lvcards)); - screen.set_palette("palette"); - - GFXDECODE(config, m_gfxdecode, "palette", gfx_lvcards); - PALETTE(config, "palette", FUNC(lvcards_state::lvcards_palette), 256); - - // sound hardware - SPEAKER(config, "mono").front_center(); - - ay8910_device &aysnd(AY8910(config, "aysnd", 18432000/12)); // unknown frequency, assume same as tehkanwc.cpp - aysnd.port_a_read_callback().set_ioport("DSW0"); - aysnd.port_b_read_callback().set_ioport("DSW1"); - aysnd.add_route(ALL_OUTPUTS, "mono", 0.25); -} - -void lvcards_state::lvcardsa(machine_config &config) -{ - lvcards(config); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - m_maincpu->set_addrmap(AS_OPCODES, &lvpoker_state::lvcardsa_decrypted_opcodes_map); -} - -void lvpoker_state::lvpoker(machine_config &config) -{ - lvcards(config); - - // basic machine hardware - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - m_maincpu->set_addrmap(AS_PROGRAM, &lvpoker_state::lvpoker_map); -} - -void lvpoker_state::ponttehk(machine_config &config) -{ - lvcards(config); - - // basic machine hardware - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - m_maincpu->set_addrmap(AS_PROGRAM, &lvpoker_state::ponttehk_map); - - // video hardware - PALETTE(config.replace(), "palette", palette_device::RGB_444_PROMS, "proms", 256); -} - -ROM_START( lvpoker ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "lp1.bin", 0x0000, 0x4000, CRC(ecfefa91) SHA1(7f6e0f30a2c4299797a8066419bf247b2900e312) ) - ROM_LOAD( "lp2.bin", 0x4000, 0x2000, CRC(06d5484f) SHA1(326756a03eaeefc944428c7e011fcdc128aa415a) ) - ROM_LOAD( "lp3.bin", 0xc000, 0x2000, CRC(05e17de8) SHA1(76b38e414f225789de8af9ca0556008e17285ffe) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "lp4.bin", 0x0000, 0x2000, CRC(04fd2a6b) SHA1(33fb42f54646dc91f5aca1c55cfc932fa04f5d77) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "lp5.bin", 0x2000, 0x2000, CRC(9b5b531c) SHA1(1ce700361ea39a15c9c62fc0fa61df0cda62a340) ) - ROM_CONTINUE( 0xa000, 0x2000 ) - ROM_LOAD( "lc6.bin", 0x4000, 0x2000, CRC(2991a6ec) SHA1(b2c32550884b7b708db48bb7f0854bbad504417d) ) - ROM_RELOAD( 0xc000, 0x2000 ) - ROM_LOAD( "lp7.bin", 0x6000, 0x2000, CRC(217e9cfb) SHA1(3e7d76db5195c599c2bf186ae6616b29bc0fd337) ) - ROM_RELOAD( 0xe000, 0x2000 ) - - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "3.7c", 0x0000, 0x0100, CRC(0c2ead4a) SHA1(e8e29e21366622c9bf3ee5e807c83b5cd7da8e3e) ) - ROM_LOAD( "2.7b", 0x0100, 0x0100, CRC(f4bc51e2) SHA1(38293c1117d6f3076081b6f2da3f42819558b04f) ) - ROM_LOAD( "1.7a", 0x0200, 0x0100, CRC(e40f2363) SHA1(cea598b6ed037dd3b4306c2ca3b0b4d5197d42a4) ) -ROM_END - -ROM_START( lvcards ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "lc1.bin", 0x0000, 0x4000, CRC(0c5fbf05) SHA1(bf996bdccfc5748cee91d004f2b1da10bcd8e329) ) - ROM_LOAD( "lc2.bin", 0x4000, 0x2000, CRC(deb54548) SHA1(a245898635c5cd3c26989c2bba89bb71edacd906) ) - ROM_LOAD( "lc3.bin", 0xc000, 0x2000, CRC(45c2bea9) SHA1(3a33501824769656aa87649c3fd0a8b8a4d83f3c) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "lc4.bin", 0x0000, 0x2000, CRC(dd705389) SHA1(271c11c2bd9affd976d65e318fd9fb01dbdde040) ) - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "lc5.bin", 0x2000, 0x2000, CRC(ddd1e3e5) SHA1(b7e8ccaab318b61b91eae4eee9e04606f9717037) ) - ROM_CONTINUE( 0xa000, 0x2000 ) - ROM_LOAD( "lc6.bin", 0x4000, 0x2000, CRC(2991a6ec) SHA1(b2c32550884b7b708db48bb7f0854bbad504417d) ) - ROM_RELOAD( 0xc000, 0x2000 ) - ROM_LOAD( "lc7.bin", 0x6000, 0x2000, CRC(f1b84c56) SHA1(6834139400bf8aa8db17f65bfdcbdcb2433d5fdc) ) - ROM_RELOAD( 0xe000, 0x2000 ) - - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "3.7c", 0x0000, 0x0100, CRC(0c2ead4a) SHA1(e8e29e21366622c9bf3ee5e807c83b5cd7da8e3e) ) - ROM_LOAD( "2.7b", 0x0100, 0x0100, CRC(f4bc51e2) SHA1(38293c1117d6f3076081b6f2da3f42819558b04f) ) - ROM_LOAD( "1.7a", 0x0200, 0x0100, CRC(e40f2363) SHA1(cea598b6ed037dd3b4306c2ca3b0b4d5197d42a4) ) -ROM_END - -/* ->romcmp -d lvcards.zip lvcardsa.zip -10 and 10 files -3.7c FIXED BITS (0000xxxx) -2.7b FIXED BITS (0000xxxx) -1.7a FIXED BITS (0000xxxx) - 7052.a7 FIXED BITS (0000xxxx) - 7052.b7 FIXED BITS (0000xxxx) - 7052.c7 FIXED BITS (0000xxxx) -lc4.bin 4.f4 IDENTICAL -lc6.bin 6.c4 IDENTICAL -lc7.bin 7.a4 IDENTICAL -lc5.bin [1/2] 5.d4 [1/2] IDENTICAL -3.7c [1/2] 7052.c7 [1/2] IDENTICAL -2.7b [1/2] 7052.b7 [1/2] IDENTICAL -1.7a [1/2] 7052.a7 [1/2] IDENTICAL -lc3.bin [2/2] 3.h4 [2/2] IDENTICAL -lc3.bin [1/2] 3.h4 [1/2] 99.975586% -lc5.bin [2/2] 5.d4 [2/2] 99.963379% -3.7c [2/2] 7052.c7 [2/2] 96.875000% -1.7a [2/2] 7052.a7 [2/2] 94.531250% -2.7b [2/2] 7052.b7 [2/2] 93.750000% -lc2.bin [even 1/2] 2.k4 [even 1/2] 15.966797% -lc1.bin [1/4] 1.l4 [1/4] 10.009766% -lc1.bin [3/4] 1.l4 [3/4] 9.814453% -lc2.bin [odd 1/2] 2.k4 [even 2/2] 0.781250% -lc2.bin [odd 2/2] 2.k4 [odd 1/2] 0.488281% -lc1.bin [2/4] 1.l4 [4/4] 0.317383% -lc1.bin [4/4] 1.l4 [2/4] 0.317383% -lc2.bin [even 2/2] 2.k4 [odd 2/2] 0.146484% -*/ -ROM_START( lvcardsa ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1.l4", 0x0000, 0x4000, CRC(81a25f70) SHA1(ce8917674b3374e5e138420f062d9b7aba3f6e11) ) - ROM_LOAD( "2.k4", 0x4000, 0x2000, CRC(d1c72fc2) SHA1(496606e129046d253d716254ef4e58a93ca10aa0) ) - ROM_LOAD( "3.h4", 0xc000, 0x2000, CRC(45cb4b4f) SHA1(6eb5725c048efe729246c730d6576b19ee24eab7) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "4.f4", 0x0000, 0x2000, CRC(dd705389) SHA1(271c11c2bd9affd976d65e318fd9fb01dbdde040) ) // identical - ROM_CONTINUE( 0x8000, 0x2000 ) - ROM_LOAD( "5.d4", 0x2000, 0x2000, CRC(60841508) SHA1(1da57c57ae01b8c93c32e6ffe7efd0852296eaf0) ) // 1st half: identical. 2nd half: 99.963379% - ROM_CONTINUE( 0xa000, 0x2000 ) - ROM_LOAD( "6.c4", 0x4000, 0x2000, CRC(2991a6ec) SHA1(b2c32550884b7b708db48bb7f0854bbad504417d) ) // identical - ROM_RELOAD( 0xc000, 0x2000 ) - ROM_LOAD( "7.a4", 0x6000, 0x2000, CRC(f1b84c56) SHA1(6834139400bf8aa8db17f65bfdcbdcb2433d5fdc) ) // identical - ROM_RELOAD( 0xe000, 0x2000 ) - - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "7052.c7", 0x0000, 0x0100, CRC(c8ddd9d8) SHA1(511a575b9a0c66819754146f72eab075bbc0a06e) ) - ROM_LOAD( "7052.b7", 0x0100, 0x0100, CRC(a7f37cb0) SHA1(236145e93af244a50ed66b9875ed019b1dde9027) ) - ROM_LOAD( "7052.a7", 0x0200, 0x0100, CRC(dcb970fd) SHA1(ce88f5f49dbcf187ac9344235b035f742c820336) ) -ROM_END - -ROM_START( ponttehk ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "ponttehk.001", 0x0000, 0x4000, CRC(1f8c1b38) SHA1(3776ddd695741223bd9ad41f74187bff31f2cd3b) ) - ROM_LOAD( "ponttehk.002", 0x4000, 0x2000, CRC(befb4f48) SHA1(8ca146c8b52afab5deb6f0ff52bdbb2b1ff3ded7) ) - - ROM_REGION( 0x8000, "gfx1", 0 ) - ROM_LOAD( "ponttehk.003", 0x0000, 0x2000, CRC(a6a91b3d) SHA1(d180eabe67efd3fd1205570b661a74acf7ed93b3) ) - ROM_LOAD( "ponttehk.004", 0x2000, 0x2000, CRC(976ed924) SHA1(4d305694b3e157411068baf3052e3aac7d0b32d5) ) - ROM_LOAD( "ponttehk.005", 0x4000, 0x2000, CRC(2b8e8ca7) SHA1(dd86d3b4fd1627bdaa0603ffd2f1bc2953bc51f8) ) - ROM_LOAD( "ponttehk.006", 0x6000, 0x2000, CRC(6bc23965) SHA1(b73a584fc5b2dd9436bbb8bc1620f5a51d351aa8) ) - - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "pon24s10.003", 0x0000, 0x0100, CRC(4623b7f3) SHA1(55948753dec09d0a476b90ca75e7e092ce0f68ee) ) /* red component */ - ROM_LOAD( "pon24s10.002", 0x0100, 0x0100, CRC(117e1b67) SHA1(b753137878fe5cd650722cf526cd4929821240a8) ) /* green component */ - ROM_LOAD( "pon24s10.001", 0x0200, 0x0100, CRC(c64ecee8) SHA1(80c9ec21e135235f7f2d41ce7900cf3904123823) ) /* blue component */ -ROM_END - -void lvcards_state::init_lvcardsa() -{ - uint8_t *ROM = memregion("maincpu")->base(); - - for (int i = 0; i < 0x6000; i++) - { - uint8_t x = ROM[i]; - - switch (i & 0x1111) - { - case 0x0000: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x0001: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0010: x = bitswap<8>(x ^ 0x28, 5, 6, 3, 4, 7, 2, 1, 0); break; - case 0x0011: x = bitswap<8>(x ^ 0xa8, 7, 6, 5, 4, 3, 2, 1, 0); break; // xor ok, no swap? - case 0x0100: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0101: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0110: x = bitswap<8>(x ^ 0x28, 5, 6, 3, 4, 7, 2, 1, 0); break; - case 0x0111: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x1000: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x1001: x = bitswap<8>(x ^ 0x28, 5, 6, 7, 4, 3, 2, 1, 0); break; - case 0x1010: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1011: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1100: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1101: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x1110: x = bitswap<8>(x ^ 0x28, 5, 6, 7, 4, 3, 2, 1, 0); break; - case 0x1111: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - } - - m_decrypted_opcodes[i] = x; - } - - for (int A = 0; A < 0x6000; A++) - { - uint8_t x = ROM[A]; - - switch(A & 0x1111) - { - case 0x0000: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0001: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0010: x = bitswap<8>(x ^ 0x28, 5, 6, 3, 4, 7, 2, 1, 0); break; - case 0x0011: x = bitswap<8>(x ^ 0xa8, 7, 6, 5, 4, 3, 2, 1, 0); break; // xor ok, no swap? - case 0x0100: x = bitswap<8>(x ^ 0xa8, 3, 6, 7, 4, 5, 2, 1, 0); break; - case 0x0101: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x0110: x = bitswap<8>(x ^ 0x28, 5, 6, 3, 4, 7, 2, 1, 0); break; - case 0x0111: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x1000: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1001: x = bitswap<8>(x ^ 0x28, 5, 6, 7, 4, 3, 2, 1, 0); break; - case 0x1010: x = bitswap<8>(x ^ 0x28, 5, 6, 7, 4, 3, 2, 1, 0); break; - case 0x1011: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1100: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - case 0x1101: x = bitswap<8>(x ^ 0x28, 5, 6, 7, 4, 3, 2, 1, 0); break; - case 0x1110: x = bitswap<8>(x ^ 0xa8, 3, 6, 5, 4, 7, 2, 1, 0); break; - case 0x1111: x = bitswap<8>(x ^ 0xa8, 7, 6, 3, 4, 5, 2, 1, 0); break; - } - - ROM[A] = x; - } -} - -GAME( 1985, lvcards, 0, lvcards, lvcards, lvcards_state, empty_init, ROT0, "Tehkan", "Lovely Cards", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, lvcardsa, lvcards, lvcardsa, lvcards, lvcards_state, init_lvcardsa, ROT0, "Tehkan", "Lovely Cards (encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, lvpoker, lvcards, lvpoker, lvpoker, lvpoker_state, empty_init, ROT0, "Tehkan", "Lovely Poker [BET]", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ponttehk, 0, ponttehk, ponttehk, lvpoker_state, empty_init, ROT0, "Tehkan", "Pontoon (Tehkan)", MACHINE_SUPPORTS_SAVE ) |