Minor cleanups and notes

This commit is contained in:
Robbbert 2014-08-10 09:47:31 +00:00
parent cba86c8114
commit 2e60e72069
7 changed files with 96 additions and 110 deletions

View File

@ -1,8 +1,8 @@
/***********************************************************************************
Flicker Pinball
Prototype create by Nutting Associates for Bally.
PINBALL
Flicker was originally an EM machine, and Bally asked Nutting Associates
to create a solid-state prototype.
Seems to be the first ever microprocessor-controlled pinball machine.
@ -25,22 +25,17 @@ class flicker_state : public genpin_class
{
public:
flicker_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
DECLARE_WRITE8_MEMBER(port00_w);
DECLARE_WRITE8_MEMBER(port01_w);
DECLARE_WRITE8_MEMBER(port10_w);
DECLARE_READ8_MEMBER(port02_r);
protected:
// devices
required_device<i4004_cpu_device> m_maincpu;
private:
UINT8 m_out_data;
required_device<i4004_cpu_device> m_maincpu;
};
@ -192,7 +187,7 @@ sound to produce. We need to change this to just one pulse per actual sound. */
break;
case 0x07:
case 0x08:
m_samples->start(0, 5);
m_samples->start(5, 5);
break;
case 0x09:
m_samples->start(0, 6);

View File

@ -13,11 +13,19 @@ games at the start of ball 1.
All the Z80 "maincpu" code is copied from gp_1.c
Any bug fixes need to be applied both here and there.
Sound boards: (each game has its own custom sounds)
-------------------------------------------------------------------------------
Old Coney Island 3x SN76477
Sharpshooter 3x SN76477
Super Nova 4x SN76477
Andromeda/Cyclopes 6808/6802/6810 + 6821 + 1 rom + ZN428
Lady Sharpshooter 6808/6802/6810 + 2x6821 + 2xROM + 6840 + discrete
(no schematics for the others)
ToDo:
- The earlier sets have a sound board with 3x SN76477 and lots of discrete circuitry (not emulated)
- The later sets (with sound roms) have a sound board with a MC6808 and 6821PIA (not emulated)
- Each machine has its own set of inputs (not emulated)
- Sound
- Inputs vary per machine
- Mechanical
******************************************************************************************/
@ -202,7 +210,7 @@ static INPUT_PORTS_START( gp_1 )
PORT_DIPSETTING( 0x80, DEF_STR( On ))
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "Max number of credits")
PORT_DIPNAME( 0x07, 0x02, "Max number of credits")
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x01, "10")
PORT_DIPSETTING( 0x02, "15")
@ -211,7 +219,7 @@ static INPUT_PORTS_START( gp_1 )
PORT_DIPSETTING( 0x05, "30")
PORT_DIPSETTING( 0x06, "35")
PORT_DIPSETTING( 0x07, "40")
PORT_DIPNAME( 0x08, 0x08, "Balls")
PORT_DIPNAME( 0x08, 0x00, "Balls")
PORT_DIPSETTING( 0x00, "3")
PORT_DIPSETTING( 0x08, "5")
PORT_DIPNAME( 0x10, 0x10, "Award")

View File

@ -1,6 +1,6 @@
/************************************************************************************
Pinball
PINBALL
Rowamet : Heavy Metal
PinMAME used as reference (couldn't find a manual)
@ -10,6 +10,7 @@ ToDO:
- Outputs
- Fix display
- Doesn't boot properly
- Bad sound rom
*************************************************************************************/
@ -22,10 +23,10 @@ class rowamet_state : public driver_device
{
public:
rowamet_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_cpu2(*this, "cpu2"),
m_p_ram(*this, "ram")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cpu2(*this, "cpu2")
, m_p_ram(*this, "ram")
{ }
DECLARE_READ8_MEMBER(sound_r);
@ -34,25 +35,19 @@ public:
DECLARE_READ8_MEMBER(io_r);
DECLARE_WRITE8_MEMBER(io_w);
TIMER_DEVICE_CALLBACK_MEMBER(rowamet_timer);
protected:
// devices
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_cpu2;
required_shared_ptr<UINT8> m_p_ram;
// driver_device overrides
virtual void machine_reset();
private:
UINT8 m_out_offs;
UINT8 m_sndcmd;
UINT8 m_io[16];
virtual void machine_reset();
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_cpu2;
required_shared_ptr<UINT8> m_p_ram;
};
static ADDRESS_MAP_START( rowamet_map, AS_PROGRAM, 8, rowamet_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x2800, 0x2808) AM_READ(switch_r)
AM_RANGE(0x4000, 0x407f) AM_RAM
AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram")
@ -61,7 +56,7 @@ static ADDRESS_MAP_START( rowamet_map, AS_PROGRAM, 8, rowamet_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( rowamet_sub_map, AS_PROGRAM, 8, rowamet_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x2000)
AM_RANGE(0x1000, 0x17ff) AM_RAM
ADDRESS_MAP_END
@ -82,7 +77,10 @@ READ8_MEMBER( rowamet_state::sound_r )
READ8_MEMBER( rowamet_state::switch_r )
{
return 0;
if (offset==6)
return 0x3f; // gets stuck in a loop without this
else
return 0;
}
WRITE8_MEMBER( rowamet_state::mute_w )
@ -112,6 +110,11 @@ WRITE8_MEMBER( rowamet_state::io_w )
void rowamet_state::machine_reset()
{
UINT8 i;
m_out_offs = 0;
m_sndcmd = 0;
for (i = 0; i < 16; i++)
m_io[i] = 0;
}
TIMER_DEVICE_CALLBACK_MEMBER(rowamet_state::rowamet_timer)
@ -150,13 +153,12 @@ MACHINE_CONFIG_END
/ Heavy Metal (????)
/-------------------------------------------------------------------*/
ROM_START(heavymtl)
ROM_REGION(0x10000, "maincpu", 0)
ROM_REGION(0x3000, "roms", 0)
ROM_LOAD("hvymtl_c.bin", 0x0000, 0x1000, CRC(8f36d3da) SHA1(beec79c5d794ede96d95105bad7466b67762606d))
ROM_LOAD("hvymtl_b.bin", 0x1000, 0x1000, CRC(357f1252) SHA1(ddc55ded0dc1c8632c31d809bfadfb45ae248cfd))
ROM_REGION(0x10000, "cpu2", 0)
ROM_LOAD("hvymtl_s.bin", 0x0000, 0x1000, CRC(c525e6cb) SHA1(144e06fbbdd1f3e45ccca8bace6b04f876b1312c))
ROM_FILL(0, 1, 0) // remove erronous FF
ROM_LOAD("hvymtl_s.bin", 0x2000, 0x1000, BAD_DUMP CRC(c525e6cb) SHA1(144e06fbbdd1f3e45ccca8bace6b04f876b1312c))
ROM_FILL(0x2000, 1, 0xaf) // bad byte
ROM_FILL(0x2551, 1, 0xdd) // another bad byte
ROM_END
/*-------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
/***********************************************************************************
Pinball
PINBALL
Williams System 3
Typical of Williams hardware: Motorola 8-bit CPUs, and lots of PIAs.
@ -16,7 +16,7 @@
the real board.
ToDo:
- Add 10k chime when added to samples.
- Mechanical
************************************************************************************/
@ -33,15 +33,15 @@ class s3_state : public genpin_class
{
public:
s3_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_dac(*this, "dac"),
m_pia22(*this, "pia22"),
m_pia24(*this, "pia24"),
m_pia28(*this, "pia28"),
m_pia30(*this, "pia30"),
m_pias(*this, "pias")
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_audiocpu(*this, "audiocpu")
, m_dac(*this, "dac")
, m_pia22(*this, "pia22")
, m_pia24(*this, "pia24")
, m_pia28(*this, "pia28")
, m_pia30(*this, "pia30")
, m_pias(*this, "pias")
{ }
DECLARE_READ8_MEMBER(dac_r);
@ -71,17 +71,6 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
DECLARE_MACHINE_RESET(s3);
DECLARE_MACHINE_RESET(s3a);
protected:
// devices
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
optional_device<dac_device> m_dac;
required_device<pia6821_device> m_pia22;
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia30;
optional_device<pia6821_device> m_pias;
private:
UINT8 m_t_c;
UINT8 m_sound_data;
@ -90,6 +79,14 @@ private:
bool m_cb1;
bool m_data_ok;
bool m_chimes;
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
optional_device<dac_device> m_dac;
required_device<pia6821_device> m_pia22;
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia30;
optional_device<pia6821_device> m_pias;
};
static ADDRESS_MAP_START( s3_main_map, AS_PROGRAM, 8, s3_state )
@ -273,7 +270,7 @@ INPUT_CHANGED_MEMBER( s3_state::audio_nmi )
WRITE8_MEMBER( s3_state::sol0_w )
{
if (BIT(data, 4))
m_samples->start(2, 5); // outhole
m_samples->start(5, 5); // outhole
}
WRITE8_MEMBER( s3_state::sol1_w )
@ -289,9 +286,8 @@ WRITE8_MEMBER( s3_state::sol1_w )
if (BIT(data, 2))
m_samples->start(3, 3); // 1000 chime
// we don't have a 10k chime in samples yet
//if (BIT(data, 3))
//m_samples->start(1, x); // 10k chime
if (BIT(data, 3))
m_samples->start(4, 4); // 10k chime
}
else
{

View File

@ -1,11 +1,12 @@
/**********************************************************************************
Pinball
PINBALL
Technoplay "2-2C 8008 LS" (68000 CPU)
Schematic and PinMAME used as references
ToDo:
- Once game starts, nothing responds
- Once you press the credit button, nothing responds (game requires 4 balls)
- Sliding display is too fast to read (much better if cpu xtal changed to 4MHz)
- No sound due to missing roms
***********************************************************************************/
@ -15,14 +16,13 @@ ToDo:
#include "cpu/m68000/m68000.h"
#include "techno.lh"
#define TECHNO_MAINCLK 8e6
class techno_state : public driver_device
{
public:
techno_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
DECLARE_READ16_MEMBER(key_r);
@ -36,20 +36,14 @@ public:
DECLARE_WRITE16_MEMBER(sol1_w);
DECLARE_WRITE16_MEMBER(sol2_w);
DECLARE_WRITE16_MEMBER(sound_w);
UINT16 m_digit;
UINT8 m_vector;
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset();
INTERRUPT_GEN_MEMBER(techno_intgen);
private:
bool m_digwait;
UINT8 m_keyrow;
public:
INTERRUPT_GEN_MEMBER(techno_intgen);
UINT16 m_digit;
UINT8 m_vector;
virtual void machine_reset();
required_device<cpu_device> m_maincpu;
};
@ -249,11 +243,11 @@ void techno_state::machine_reset()
static MACHINE_CONFIG_START( techno, techno_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, TECHNO_MAINCLK)
MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz)
MCFG_CPU_PROGRAM_MAP(techno_map)
MCFG_CPU_PERIODIC_INT_DRIVER(techno_state, techno_intgen, TECHNO_MAINCLK/256) // 31250Hz
MCFG_CPU_PERIODIC_INT_DRIVER(techno_state, techno_intgen, XTAL_8MHz/256) // 31250Hz
MCFG_NVRAM_ADD_0FILL("nvram")
//MCFG_CPU_ADD("cpu2", TMS7000, 4000000)
//MCFG_CPU_ADD("cpu2", TMS7000, XTAL_4MHz)
//MCFG_CPU_PROGRAM_MAP(techno_sub_map)
/* Video */
@ -261,12 +255,12 @@ static MACHINE_CONFIG_START( techno, techno_state )
MACHINE_CONFIG_END
ROM_START(xforce)
ROM_REGION(0x1000000, "maincpu", 0)
ROM_LOAD16_BYTE("ic15", 0x000001, 0x8000, CRC(fb8d2853) SHA1(0b0004abfe32edfd3ac15d66f90695d264c97eba))
ROM_LOAD16_BYTE("ic17", 0x000000, 0x8000, CRC(122ef649) SHA1(0b425f81869bc359841377a91c39f44395502bff))
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD16_BYTE("ic15", 0x0001, 0x8000, CRC(fb8d2853) SHA1(0b0004abfe32edfd3ac15d66f90695d264c97eba))
ROM_LOAD16_BYTE("ic17", 0x0000, 0x8000, CRC(122ef649) SHA1(0b425f81869bc359841377a91c39f44395502bff))
//ROM_REGION(0x20000), "cpu2", 0)
// 5 x 27256 roms are undumped
ROM_END
GAME(1987, xforce, 0, techno, techno, driver_device, 0, ROT0, "Tecnoplay", "X Force", GAME_MECHANICAL | GAME_NO_SOUND | GAME_IMPERFECT_KEYBOARD)
GAME(1987, xforce, 0, techno, techno, driver_device, 0, ROT0, "Tecnoplay", "X Force", GAME_IS_SKELETON_MECHANICAL)

View File

@ -37,10 +37,10 @@ class wico_state : public genpin_class
{
public:
wico_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag),
m_ccpu(*this, "ccpu"),
m_hcpu(*this, "hcpu"),
m_shared_ram(*this, "sharedram")
: genpin_class(mconfig, type, tag)
, m_ccpu(*this, "ccpu")
, m_hcpu(*this, "hcpu")
, m_shared_ram(*this, "sharedram")
{ }
DECLARE_READ8_MEMBER(lampst_r);
@ -54,21 +54,16 @@ public:
DECLARE_READ8_MEMBER(gentmrcl_r);
TIMER_DEVICE_CALLBACK_MEMBER(irq_housekeeping);
TIMER_DEVICE_CALLBACK_MEMBER(firq_housekeeping);
protected:
// devices
required_device<cpu_device> m_ccpu;
required_device<cpu_device> m_hcpu;
required_shared_ptr<UINT8> m_shared_ram;
// driver_device overrides
virtual void machine_reset();
private:
bool m_zcen;
bool m_gten;
bool m_disp_on;
bool m_diag_on;
UINT8 m_firqtimer;
virtual void machine_reset();
required_device<cpu_device> m_ccpu;
required_device<cpu_device> m_hcpu;
required_shared_ptr<UINT8> m_shared_ram;
};
// housekeeping cpu

View File

@ -26,21 +26,17 @@ class zac_proto_state : public driver_device
{
public:
zac_proto_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
{ }
DECLARE_WRITE8_MEMBER(out0_w);
DECLARE_WRITE8_MEMBER(out1_w);
DECLARE_WRITE8_MEMBER(digit_w);
DECLARE_WRITE8_MEMBER(sound_w);
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
private:
virtual void machine_reset();
required_device<cpu_device> m_maincpu;
};