mirror of
https://github.com/holub/mame
synced 2025-05-03 21:13:18 +03:00
unkitpkr: Improved the input system. Mapped the remaining inputs.
Hooked the AY8912 port and rerouted the dip switch there. All inputs from the test mode are working. Added technical notes about the hacked code. Flagged the game as IMPERFECT GRAPHICS due to the bookkeeping is not completely readable due to the graphics bank hack needed to show the ingame graphics properly. [Roberto Fresca] New working machines -------------------- unknown Italian poker game [caius, AJR, Ivan Vangelista, Roberto Fresca]
This commit is contained in:
parent
4e02207b54
commit
03bc3ea6a4
@ -197,11 +197,13 @@ uint32_t wallc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(wallc_state::wallc_coin_counter_w)
|
||||
{
|
||||
machine().bookkeeping().coin_counter_w(0, data & 2);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(wallc_state::unkitpkr_out0_w)
|
||||
{
|
||||
}
|
||||
@ -237,20 +239,20 @@ static ADDRESS_MAP_START( unkitpkr_map, AS_PROGRAM, 8, wallc_state )
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(videoram_w) AM_MIRROR(0xc00) AM_SHARE("videoram") /* 2114, 2114 */
|
||||
AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */
|
||||
|
||||
AM_RANGE(0xb000, 0xb000) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xb100, 0xb100) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0xb200, 0xb200) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0xb300, 0xb300) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0xb500, 0xb5ff) AM_READNOP // read by memory test routine left over from some other game
|
||||
AM_RANGE(0xb600, 0xb600) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0xb000, 0xb000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0xb100, 0xb100) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0xb200, 0xb200) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0xb300, 0xb300) AM_READ_PORT("IN3")
|
||||
AM_RANGE(0xb500, 0xb5ff) AM_READNOP // read by memory test routine. left over from some other game
|
||||
|
||||
AM_RANGE(0xb000, 0xb000) AM_WRITE(unkitpkr_out0_w)
|
||||
AM_RANGE(0xb100, 0xb100) AM_WRITE(unkitpkr_out1_w)
|
||||
AM_RANGE(0xb200, 0xb200) AM_WRITE(unkitpkr_out2_w)
|
||||
AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8912_device, address_w)
|
||||
AM_RANGE(0xb600, 0xb600) AM_DEVWRITE("aysnd", ay8912_device, data_w)
|
||||
AM_RANGE(0xb600, 0xb600) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) // Port A = DSW
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( wallc )
|
||||
PORT_START("SYSTEM") /* b200 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) //Right curve button; select current playfield in test mode
|
||||
@ -309,7 +311,7 @@ static INPUT_PORTS_START( wallc )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( unkitpkr )
|
||||
PORT_START("SYSTEM") /* b000 */
|
||||
PORT_START("IN0") /* b000 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -319,27 +321,27 @@ static INPUT_PORTS_START( unkitpkr )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN0") /* b100 */
|
||||
PORT_START("IN1") /* b100 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // coin clear?
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // coin out
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
|
||||
PORT_START("IN1") /* b200 */
|
||||
PORT_START("IN2") /* b200 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
|
||||
|
||||
PORT_START("IN2") /* b300 */
|
||||
PORT_START("IN3") /* b300 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL )
|
||||
@ -350,17 +352,17 @@ static INPUT_PORTS_START( unkitpkr )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
|
||||
|
||||
PORT_START("DSW") /* b600 */
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2") // ok
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2") // ok
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x03, "1 Coin/10 Credits" )
|
||||
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:3,4") // ok
|
||||
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:3,4") // ok
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0c, "1 Coin/10 Credits" )
|
||||
PORT_DIPNAME( 0x30, 0x00, "Coin C" ) PORT_DIPLOCATION("SW2:5,6") // ok
|
||||
PORT_DIPNAME( 0x30, 0x00, "Coin C" ) PORT_DIPLOCATION("SW2:5,6") // ok
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( 1C_5C ) )
|
||||
@ -369,6 +371,7 @@ static INPUT_PORTS_START( unkitpkr )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8, /* 8*8 characters */
|
||||
@ -384,6 +387,7 @@ static GFXDECODE_START( wallc )
|
||||
GFXDECODE_ENTRY( "gfx1", 0 , charlayout, 0, 4 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(wallc_state, wallc)
|
||||
{
|
||||
uint8_t c;
|
||||
@ -424,7 +428,6 @@ DRIVER_INIT_MEMBER(wallc_state, wallca)
|
||||
}
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( wallc )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, 12288000 / 4) /* 3.072 MHz ? */
|
||||
@ -450,13 +453,21 @@ static MACHINE_CONFIG_START( wallc )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( unkitpkr, wallc )
|
||||
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(unkitpkr_map)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(wallc_state, unkitpkr)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SOUND_MODIFY("aysnd")
|
||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW"))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
@ -506,7 +517,6 @@ ROM_START( brkblast )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
It use a epoxy brick like wallc
|
||||
@ -614,6 +624,37 @@ DRIVER_INIT_MEMBER(wallc_state, sidam)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Unknown Italian Poker
|
||||
Seems a brute hack of an unknown game.
|
||||
|
||||
The "conforme alla legge n." string is overwritting the hands table:
|
||||
|
||||
"CONFORME" = Royal Flush
|
||||
(blank line) = Straight Flush
|
||||
"ALLA LEGGE" = Four of a Kind
|
||||
(blank line) = Full House
|
||||
"N.904 DEL" = Flush
|
||||
(blank line) = Straight
|
||||
"17.12.1986" = Three of a Kind
|
||||
(blank line) = Double Pair
|
||||
"........." = Simple Pair
|
||||
|
||||
Also the code is hacked/patched to avoid some jumps:
|
||||
|
||||
00cb: ld a,(hl)
|
||||
00cc: cp c
|
||||
00cd: nop
|
||||
00ce: nop
|
||||
00cf: nop
|
||||
|
||||
00d2: ld a,(hl)
|
||||
00d3: cp c
|
||||
00d4: nop
|
||||
00d5: nop
|
||||
00d6: nop
|
||||
|
||||
*/
|
||||
ROM_START( unkitpkr )
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_LOAD( "1", 0x0000, 0x2000, CRC(82dacf83) SHA1(d2bd4664737aeb968e9e34da74c2654e556c8567) )
|
||||
@ -627,7 +668,7 @@ ROM_START( unkitpkr )
|
||||
ROM_CONTINUE( 0x2000, 0x1000 ) // first half is empty
|
||||
|
||||
ROM_REGION( 0x0020, "proms", 0 )
|
||||
ROM_LOAD( "74s288.c2", 0x0000, 0x0020, CRC(83e3e293) SHA1(a98c5e63b688de8d175adb6539e0cdc668f313fd) BAD_DUMP ) // from wallc; not dumped yet
|
||||
ROM_LOAD( "74s288.c2", 0x0000, 0x0020, CRC(83e3e293) SHA1(a98c5e63b688de8d175adb6539e0cdc668f313fd) ) // dumped; matches the wallc bp
|
||||
ROM_END
|
||||
|
||||
DRIVER_INIT_MEMBER(wallc_state, unkitpkr)
|
||||
@ -643,9 +684,11 @@ DRIVER_INIT_MEMBER(wallc_state, unkitpkr)
|
||||
}
|
||||
}
|
||||
|
||||
GAME( 1984, wallc, 0, wallc, wallc, wallc_state, wallc, ROT0, "Midcoin", "Wall Crash (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, wallca, wallc, wallc, wallc, wallc_state, wallca, ROT0, "Midcoin", "Wall Crash (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, brkblast, wallc, wallc, wallc, wallc_state, wallca, ROT0, "bootleg (Fadesa)", "Brick Blast (bootleg of Wall Crash)", MACHINE_SUPPORTS_SAVE ) // Spanish bootleg board, Fadesa stickers / text on various components
|
||||
|
||||
GAME( 1984, sidampkr, 0, wallc, wallc, wallc_state, sidam, ROT270, "Sidam", "unknown Sidam Poker", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 198?, unkitpkr, 0, unkitpkr, unkitpkr, wallc_state, unkitpkr, ROT0, "<unknown>", "unknown Italian poker game", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS
|
||||
GAME( 1984, wallc, 0, wallc, wallc, wallc_state, wallc, ROT0, "Midcoin", "Wall Crash (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, wallca, wallc, wallc, wallc, wallc_state, wallca, ROT0, "Midcoin", "Wall Crash (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, brkblast, wallc, wallc, wallc, wallc_state, wallca, ROT0, "bootleg (Fadesa)", "Brick Blast (bootleg of Wall Crash)", MACHINE_SUPPORTS_SAVE ) // Spanish bootleg board, Fadesa stickers / text on various components
|
||||
|
||||
GAME( 1984, sidampkr, 0, wallc, wallc, wallc_state, sidam, ROT270, "Sidam", "unknown Sidam Poker", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 198?, unkitpkr, 0, unkitpkr, unkitpkr, wallc_state, unkitpkr, ROT0, "<unknown>", "unknown Italian poker game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user