summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lvcards.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lvcards.cpp')
-rw-r--r--src/mame/drivers/lvcards.cpp702
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 )