mirror of
https://github.com/holub/mame
synced 2025-10-08 09:30:17 +03:00
zac_proto.c : used correct cpu, fixed inputs, added mechanical sounds. All 3 games are playable.
This commit is contained in:
parent
01b7edcfcd
commit
43113cff6f
@ -8,15 +8,15 @@
|
|||||||
These use the INS8060 (SC/MP) processor, and are Zaccaria's first
|
These use the INS8060 (SC/MP) processor, and are Zaccaria's first
|
||||||
digital machines.
|
digital machines.
|
||||||
|
|
||||||
The inputs work with 'strike' and 'skijump'.
|
After starting a game, press X, wait for the sound of the ball
|
||||||
The playboard inputs are unknown.
|
being ejected, then press Z. Now you can get a score.
|
||||||
|
|
||||||
|
The ball number is how many balls are left. 1 = last ball.
|
||||||
|
|
||||||
|
|
||||||
ToDo:
|
ToDo:
|
||||||
- Mirrors of ram and switches
|
- Mechanical
|
||||||
- battery backup of ram
|
- Sound board, no info available. Also knocker output not known.
|
||||||
- Inputs
|
|
||||||
- Outputs
|
|
||||||
- Sound
|
|
||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -24,11 +24,11 @@ ToDo:
|
|||||||
#include "cpu/scmp/scmp.h"
|
#include "cpu/scmp/scmp.h"
|
||||||
#include "zac_proto.lh"
|
#include "zac_proto.lh"
|
||||||
|
|
||||||
class zac_proto_state : public driver_device
|
class zac_proto_state : public genpin_class
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
zac_proto_state(const machine_config &mconfig, device_type type, const char *tag)
|
zac_proto_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: genpin_class(mconfig, type, tag)
|
||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -63,50 +63,43 @@ ADDRESS_MAP_END
|
|||||||
static INPUT_PORTS_START( zac_proto )
|
static INPUT_PORTS_START( zac_proto )
|
||||||
// playfield inputs
|
// playfield inputs
|
||||||
PORT_START("PL0")
|
PORT_START("PL0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_START )
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_START )
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_TILT)
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Z)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_COLON)
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_QUOTE)
|
||||||
PORT_START("PL1")
|
PORT_START("PL1")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Q)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_W)
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_E)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_R)
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Y)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_U)
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_I)
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_O)
|
||||||
PORT_START("PL2")
|
PORT_START("PL2")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_A)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_S)
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_D)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F)
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_G)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_H)
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_J)
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_K)
|
||||||
PORT_START("PL3")
|
PORT_START("PL3")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_L)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_C)
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_V)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_B)
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_N)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_M)
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_COMMA)
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_STOP)
|
||||||
PORT_START("PL4")
|
PORT_START("PL4")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
|
||||||
|
|
||||||
// dipswitches
|
// dipswitches
|
||||||
PORT_START("PL5")
|
PORT_START("PL5")
|
||||||
@ -191,9 +184,26 @@ static INPUT_PORTS_START( zac_proto )
|
|||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
// solenoids (not knocker)
|
||||||
WRITE8_MEMBER( zac_proto_state::out0_w )
|
WRITE8_MEMBER( zac_proto_state::out0_w )
|
||||||
{
|
{
|
||||||
// solenoids
|
UINT16 t = data | (offset << 8);
|
||||||
|
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
m_samples->start(0, 5); // outhole
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
m_samples->start(4, 7); // slings
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
case 16:
|
||||||
|
case 32:
|
||||||
|
m_samples->start(5, 0); // bumpers
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( zac_proto_state::out1_w )
|
WRITE8_MEMBER( zac_proto_state::out1_w )
|
||||||
@ -204,7 +214,7 @@ WRITE8_MEMBER( zac_proto_state::out1_w )
|
|||||||
// need to implement blanking of leading zeroes
|
// need to implement blanking of leading zeroes
|
||||||
WRITE8_MEMBER( zac_proto_state::digit_w )
|
WRITE8_MEMBER( zac_proto_state::digit_w )
|
||||||
{
|
{
|
||||||
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
|
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; // 9368 (outputs 0-9,A-F)
|
||||||
static const UINT8 decimals[10] = { 0, 0, 0x80, 0, 0, 0x80, 0, 0, 0, 0 };
|
static const UINT8 decimals[10] = { 0, 0, 0x80, 0, 0, 0x80, 0, 0, 0, 0 };
|
||||||
offset<<=1;
|
offset<<=1;
|
||||||
output_set_digit_value(offset, patterns[data&15] | decimals[offset]);
|
output_set_digit_value(offset, patterns[data&15] | decimals[offset]);
|
||||||
@ -214,6 +224,7 @@ WRITE8_MEMBER( zac_proto_state::digit_w )
|
|||||||
|
|
||||||
WRITE8_MEMBER( zac_proto_state::sound_w )
|
WRITE8_MEMBER( zac_proto_state::sound_w )
|
||||||
{
|
{
|
||||||
|
// to unknown sound board
|
||||||
}
|
}
|
||||||
|
|
||||||
void zac_proto_state::machine_reset()
|
void zac_proto_state::machine_reset()
|
||||||
@ -223,12 +234,15 @@ void zac_proto_state::machine_reset()
|
|||||||
|
|
||||||
static MACHINE_CONFIG_START( zac_proto, zac_proto_state )
|
static MACHINE_CONFIG_START( zac_proto, zac_proto_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", SCMP, 1000000)
|
MCFG_CPU_ADD("maincpu", INS8060, XTAL_4MHz / 2) // Using SC/MP II chip which has an internal /2 circuit.
|
||||||
MCFG_CPU_PROGRAM_MAP(zac_proto_map)
|
MCFG_CPU_PROGRAM_MAP(zac_proto_map)
|
||||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||||
|
|
||||||
/* Video */
|
/* Video */
|
||||||
MCFG_DEFAULT_LAYOUT(layout_zac_proto)
|
MCFG_DEFAULT_LAYOUT(layout_zac_proto)
|
||||||
|
|
||||||
|
/* Sound */
|
||||||
|
MCFG_FRAGMENT_ADD( genpin_audio )
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/*--------------------------------
|
/*--------------------------------
|
||||||
@ -264,6 +278,6 @@ ROM_START(spacecty)
|
|||||||
ROM_LOAD("zsc4.dat", 0x1400, 0x0400, CRC(69e0bb95) SHA1(d9a1d0159bf49445b0ece0f9d7806ed80657c2b2))
|
ROM_LOAD("zsc4.dat", 0x1400, 0x0400, CRC(69e0bb95) SHA1(d9a1d0159bf49445b0ece0f9d7806ed80657c2b2))
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
GAME(1978, skijump, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Ski Jump", GAME_IS_SKELETON_MECHANICAL)
|
GAME(1978, skijump, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Ski Jump", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
|
||||||
GAME(1979, spacecty, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Space City", GAME_IS_SKELETON_MECHANICAL)
|
GAME(1979, spacecty, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Space City", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
|
||||||
GAME(1978, strike, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Strike", GAME_IS_SKELETON_MECHANICAL)
|
GAME(1978, strike, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Strike", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
|
||||||
|
Loading…
Reference in New Issue
Block a user