diff options
Diffstat (limited to 'src/mame/drivers/lvcards.c')
-rw-r--r-- | src/mame/drivers/lvcards.c | 589 |
1 files changed, 589 insertions, 0 deletions
diff --git a/src/mame/drivers/lvcards.c b/src/mame/drivers/lvcards.c new file mode 100644 index 00000000000..ca9d5358ecb --- /dev/null +++ b/src/mame/drivers/lvcards.c @@ -0,0 +1,589 @@ +/*************************************************************************** +Lovely 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 Cards also runs on this hardware, but is not a gambling game. + +Any fixes for this driver should be forwarded to the AGEMAME forum at (http://www.mameworld.info), +or to MAME, if they affect Lovely Cards. + +--- + +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? +- CPU speed/ YM2149 frequencies +- Input ports need to be cleaned up +- NVRAM does not work for lvcards? +- AGEMAME marks lvpoker/ponttekh as GAME_SUPPORTS_SAVE, needs checking. + +***************************************************************************/ + +#include "driver.h" +#include "sound/ay8910.h" + +extern WRITE8_HANDLER( lvcards_videoram_w ); +extern WRITE8_HANDLER( lvcards_colorram_w ); + +extern PALETTE_INIT( lvcards ); +extern PALETTE_INIT( ponttehk ); +extern VIDEO_START( lvcards ); +extern VIDEO_UPDATE( lvcards ); + +static UINT8 payout; +static UINT8 pulse; +static UINT8 result; + +static MACHINE_START( lvpoker ) +{ + state_save_register_global(payout); + state_save_register_global(pulse); + state_save_register_global(result); +} + +static MACHINE_RESET( lvpoker ) +{ +payout = 0; +pulse = 0; +result = 0; +} + +static WRITE8_HANDLER(control_port_2_w) +{ + switch (data) + { + case 0x60: + payout = 1; + break; + case 0xc0: + payout = 1; + break; + default: + payout = 0; + break; + } +} + +static WRITE8_HANDLER(control_port_2a_w) +{ + switch (data) + { + case 0x60: + payout = 1; + break; + case 0x80: + payout = 1; + break; + default: + payout = 0; + break; + } +} + +static READ8_HANDLER( payout_r ) +{ + result = readinputport(2); + + if (payout) + { + if ( pulse < 3 ) + { + result = result | 0x40; + pulse++; + } + else + { + pulse = 0; + } + } + return result; +} + +static ADDRESS_MAP_START( ponttehk_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x5fff) AM_ROM + AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) + AM_RANGE(0x8000, 0x83ff) AM_RAM AM_WRITE(lvcards_videoram_w) AM_BASE(&videoram) + AM_RANGE(0x8400, 0x87ff) AM_RAM AM_WRITE(lvcards_colorram_w) AM_BASE(&colorram) + AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) + AM_RANGE(0xa001, 0xa001) AM_READ(input_port_1_r) AM_WRITENOP // lamps + AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2a_w)//AM_WRITENOP // ??? +ADDRESS_MAP_END + +static ADDRESS_MAP_START( lvcards_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x5fff) AM_ROM + AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) + AM_RANGE(0x9000, 0x93ff) AM_RAM AM_WRITE(lvcards_videoram_w) AM_BASE(&videoram) + AM_RANGE(0x9400, 0x97ff) AM_RAM AM_WRITE(lvcards_colorram_w) AM_BASE(&colorram) + AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) + AM_RANGE(0xa001, 0xa001) AM_READ(input_port_1_r) AM_WRITENOP + AM_RANGE(0xa002, 0xa002) AM_READ(input_port_2_r) AM_WRITENOP + AM_RANGE(0xc000, 0xdfff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( lvcards_io_map, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) + AM_RANGE(0x00, 0x00) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w) + AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_control_port_0_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( lvpoker_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x5fff) AM_ROM + AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) + AM_RANGE(0x9000, 0x93ff) AM_RAM AM_WRITE(lvcards_videoram_w) AM_BASE(&videoram) + AM_RANGE(0x9400, 0x97ff) AM_RAM AM_WRITE(lvcards_colorram_w) AM_BASE(&colorram) + AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) + AM_RANGE(0xa001, 0xa001) AM_READ(input_port_1_r) AM_WRITENOP // lamps + AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2_w) + AM_RANGE(0xc000, 0xdfff) AM_ROM +ADDRESS_MAP_END + +static INPUT_PORTS_START( lvcards ) + PORT_START_TAG("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Analyzer") PORT_CODE(KEYCODE_0) + 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_OTHER ) PORT_NAME("Red") PORT_CODE(KEYCODE_N) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Black") PORT_CODE(KEYCODE_M) + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 1") PORT_CODE(KEYCODE_Z) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 2") PORT_CODE(KEYCODE_X) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 3") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 4") PORT_CODE(KEYCODE_V) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hold 5") PORT_CODE(KEYCODE_B) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Deal / Double") PORT_CODE(KEYCODE_LALT) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Bet") PORT_CODE(KEYCODE_LCONTROL) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Cancel / Take Score") PORT_CODE(KEYCODE_SPACE) + 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_TAG("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_TAG("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_TAG("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_OTHER ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Memory Reset") + 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_BUTTON1 ) PORT_NAME("Red") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Black") + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_Z) PORT_NAME("Hold 1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_X) PORT_NAME("Hold 2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_C) PORT_NAME("Hold 3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_V) PORT_NAME("Hold 4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_CODE(KEYCODE_B) PORT_NAME("Hold 5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Deal/Double") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2) PORT_NAME("Bet") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Remove Credit as coins") PORT_CODE(KEYCODE_A) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) // Token Drop + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SPACE) 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_SPECIAL ) // Overflow + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) // Token Out + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL) + + PORT_START_TAG("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_TAG("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_TAG("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_TAG("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_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL )// 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_SPECIAL ) // 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_SPECIAL )//Motor On? + + PORT_START_TAG("DSW1") + 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( 0x38, 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_TAG("DSW2") + 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( lvcards ) + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 16 ) +GFXDECODE_END + +/* Sound Interfaces */ + +static struct AY8910interface lcay8910_interface = +{ + input_port_3_r, //DSW0 + input_port_4_r //DSW1 +}; + + +static MACHINE_DRIVER_START( lvcards ) + // basic machine hardware + MDRV_CPU_ADD_TAG("main",Z80, 18432000/6) // 3.072 MHz ? + + MDRV_CPU_PROGRAM_MAP(lvcards_map, 0) + MDRV_CPU_IO_MAP(lvcards_io_map, 0) + MDRV_CPU_VBLANK_INT(irq0_line_hold, 1) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) + + // video hardware + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(8*0, 32*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(lvcards) + MDRV_PALETTE_LENGTH(256) + + MDRV_PALETTE_INIT(lvcards) + MDRV_VIDEO_START(lvcards) + MDRV_VIDEO_UPDATE(lvcards) + + // sound hardware + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(AY8910, 18432000/12) + MDRV_SOUND_CONFIG(lcay8910_interface) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_DRIVER_END + +static MACHINE_DRIVER_START( lvpoker ) + MDRV_IMPORT_FROM( lvcards ) + + // basic machine hardware + MDRV_NVRAM_HANDLER(generic_1fill) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(lvpoker_map,0) + MDRV_MACHINE_START(lvpoker) + MDRV_MACHINE_RESET(lvpoker) +MACHINE_DRIVER_END + +static MACHINE_DRIVER_START( ponttehk ) + MDRV_IMPORT_FROM( lvcards ) + + // basic machine hardware + MDRV_NVRAM_HANDLER(generic_1fill) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(ponttehk_map,0) + MDRV_MACHINE_RESET(lvpoker) + + // video hardware + MDRV_PALETTE_INIT(ponttehk) +MACHINE_DRIVER_END + +ROM_START( lvpoker ) + ROM_REGION( 0x10000, REGION_CPU1, 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, REGION_GFX1, ROMREGION_DISPOSE ) + 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, REGION_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, REGION_CPU1, 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, REGION_GFX1, ROMREGION_DISPOSE ) + 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, REGION_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( ponttehk ) + ROM_REGION( 0x10000, REGION_CPU1, 0 ) + ROM_LOAD( "ponttehk.001", 0x0000, 0x4000, CRC(1f8c1b38) SHA1(3776ddd695741223bd9ad41f74187bff31f2cd3b) ) + ROM_LOAD( "ponttehk.002", 0x4000, 0x2000, CRC(befb4f48) SHA1(8ca146c8b52afab5deb6f0ff52bdbb2b1ff3ded7) ) + + ROM_REGION( 0x8000, REGION_GFX1, ROMREGION_DISPOSE ) + 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, REGION_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 + +GAME( 1985, lvcards, 0, lvcards, lvcards, 0, ROT0, "Tehkan", "Lovely Cards", 0 ) +GAME( 1985, lvpoker, lvcards, lvpoker, lvpoker, 0, ROT0, "Tehkan", "Lovely Poker [BET]", 0 ) +GAME( 1985, ponttehk, 0, ponttehk, ponttehk, 0, ROT0, "Tehkan", "Pontoon (Tehkan)", 0 ) |