diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c index ace913e369e..fd131e803b5 100644 --- a/src/mame/drivers/spoker.c +++ b/src/mame/drivers/spoker.c @@ -249,31 +249,56 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8 ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE( fg_color_w ) AM_BASE_MEMBER( spoker_state,m_fg_color_ram ) ADDRESS_MAP_END +static WRITE8_HANDLER( super8_outputb_w ) +{ + spoker_state *state = space->machine().driver_data(); + + if(((state->m_out[1] & 0x80) == 0) && data & 0x80) + cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); + + state->m_video_enable = data & 2; + + state->m_out[1] = data; +} + static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8 ) - AM_RANGE( 0x2000, 0x23ff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE_GENERIC( paletteram ) - AM_RANGE( 0x2800, 0x2bff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE_GENERIC( paletteram2 ) +// AM_RANGE( 0x1000, 0x1fff ) AM_WRITENOP + + AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE_GENERIC( paletteram ) + AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE_GENERIC( paletteram2 ) AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE( bg_tile_w ) AM_BASE_MEMBER( spoker_state,m_bg_tile_ram ) + AM_RANGE( 0x4000, 0x4000 ) AM_READ_PORT( "DSW1" ) + AM_RANGE( 0x4001, 0x4001 ) AM_READ_PORT( "DSW2" ) + AM_RANGE( 0x4002, 0x4002 ) AM_READ_PORT( "DSW3" ) + AM_RANGE( 0x4003, 0x4003 ) AM_READ_PORT( "DSW4" ) + AM_RANGE( 0x4004, 0x4004 ) AM_READ_PORT( "DSW5" ) + +// AM_RANGE( 0x4000, 0x40ff ) AM_WRITENOP + AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE( fg_tile_w ) AM_BASE_MEMBER( spoker_state,m_fg_tile_ram ) /* TODO: ppi #1 */ - AM_RANGE( 0x6480, 0x6480 ) AM_WRITE( spoker_nmi_and_coins_w ) - AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" ) - AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" ) + //AM_RANGE( 0x6480, 0x6480 ) AM_WRITE( spoker_nmi_and_coins_w ) + //AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" ) + //AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" ) /* TODO: ppi #2 */ - AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" ) - AM_RANGE( 0x6491, 0x6491 ) AM_WRITE( spoker_video_and_leds_w ) - AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( spoker_leds_w ) + //AM_RANGE( 0x6491, 0x6491) AM_READ_PORT("IN0") + //AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" ) + //AM_RANGE( 0x6491, 0x6491 ) AM_WRITE( spoker_video_and_leds_w ) + //AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( spoker_leds_w ) - AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) + //AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ymsnd", ym2413_w ) AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write) - AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE( spoker_magic_r, spoker_magic_w ) // DSW1-5 + //AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE( spoker_magic_r, spoker_magic_w ) // DSW1-5 + + AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(super8_outputb_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE( fg_color_w ) AM_BASE_MEMBER( spoker_state,m_fg_color_ram ) ADDRESS_MAP_END @@ -355,6 +380,174 @@ static INPUT_PORTS_START( spoker ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( 3super8 ) + PORT_START("DSW1") + PORT_DIPUNKNOWN( 0x01, 0x01 ) + PORT_DIPUNKNOWN( 0x02, 0x02 ) + PORT_DIPUNKNOWN( 0x04, 0x04 ) + PORT_DIPUNKNOWN( 0x08, 0x08 ) + PORT_DIPUNKNOWN( 0x10, 0x10 ) + PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) + + PORT_START("DSW2") + PORT_DIPUNKNOWN( 0x01, 0x01 ) + PORT_DIPUNKNOWN( 0x02, 0x02 ) + PORT_DIPUNKNOWN( 0x04, 0x04 ) + PORT_DIPUNKNOWN( 0x08, 0x08 ) + PORT_DIPUNKNOWN( 0x10, 0x10 ) + PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) + + PORT_START("DSW3") + PORT_DIPUNKNOWN( 0x01, 0x01 ) + PORT_DIPUNKNOWN( 0x02, 0x02 ) + PORT_DIPUNKNOWN( 0x04, 0x04 ) + PORT_DIPUNKNOWN( 0x08, 0x08 ) + PORT_DIPUNKNOWN( 0x10, 0x10 ) + PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) + + PORT_START("DSW4") + PORT_DIPUNKNOWN( 0xff, 0xff ) + + PORT_START("DSW5") + PORT_DIPUNKNOWN( 0xff, 0xff ) + + PORT_START("IN0") + PORT_DIPNAME( 0x01, 0x01, "IN0" ) + 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, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, "IN1" ) + 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, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN2") + PORT_DIPNAME( 0x01, 0x01, "IN2" ) + 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, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN3") + PORT_DIPNAME( 0x01, 0x01, "IN3" ) + 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, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN4") + PORT_DIPNAME( 0x01, 0x01, "IN4" ) + 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, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + /*************************************************************************** Graphics Layout ***************************************************************************/ @@ -475,7 +668,7 @@ static MACHINE_CONFIG_DERIVED( 3super8, spoker ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(spoker_map) MCFG_CPU_IO_MAP(3super8_portmap) - MCFG_CPU_VBLANK_INT("screen",nmi_line_pulse) + MCFG_CPU_VBLANK_INT("screen",nmi_line_assert) MCFG_GFXDECODE(3super8) @@ -578,7 +771,7 @@ ROM_START( 3super8 ) ROM_FILL( 0x40000 ,0x20000, 0x00 ) ROM_FILL( 0x80000 ,0x20000, 0x00 ) - ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASEFF ) + ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASE00 ) ROM_REGION( 0xc0000, "rep_gfx", 0 ) //not real, taken from spk116it ROM_LOAD( "4.bin", 0x00000, 0x40000, BAD_DUMP CRC(ec2c6ac3) SHA1(e0a38da26202d2b9a481060fe5b88a38e284201e) ) @@ -626,6 +819,6 @@ static DRIVER_INIT( 3super8 ) } } -GAME( 1993?, spk116it, 0, spoker, spoker, spk116it, ROT0, "IGS", "Super Poker (v116IT)", 0 ) -GAME( 1993?, spk115it, spk116it, spoker, spoker, spk116it, ROT0, "IGS", "Super Poker (v115IT)", 0 ) -GAME( 1993?, 3super8, spk116it, 3super8,spoker, 3super8, ROT0, "", "3 Super 8 (Italy)", GAME_NOT_WORKING ) +GAME( 1993?, spk116it, 0, spoker, spoker, spk116it, ROT0, "IGS", "Super Poker (v116IT)", 0 ) +GAME( 1993?, spk115it, spk116it, spoker, spoker, spk116it, ROT0, "IGS", "Super Poker (v115IT)", 0 ) +GAME( 1993?, 3super8, spk116it, 3super8,3super8, 3super8, ROT0, "", "3 Super 8 (Italy)", GAME_NOT_WORKING )