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 PINBALL
Flicker was originally an EM machine, and Bally asked Nutting Associates
Prototype create by Nutting Associates for Bally. to create a solid-state prototype.
Seems to be the first ever microprocessor-controlled pinball machine. Seems to be the first ever microprocessor-controlled pinball machine.
@ -25,22 +25,17 @@ class flicker_state : public genpin_class
{ {
public: public:
flicker_state(const machine_config &mconfig, device_type type, const char *tag) flicker_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag), : genpin_class(mconfig, type, tag)
m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
{ } { }
DECLARE_WRITE8_MEMBER(port00_w); DECLARE_WRITE8_MEMBER(port00_w);
DECLARE_WRITE8_MEMBER(port01_w); DECLARE_WRITE8_MEMBER(port01_w);
DECLARE_WRITE8_MEMBER(port10_w); DECLARE_WRITE8_MEMBER(port10_w);
DECLARE_READ8_MEMBER(port02_r); DECLARE_READ8_MEMBER(port02_r);
protected:
// devices
required_device<i4004_cpu_device> m_maincpu;
private: private:
UINT8 m_out_data; 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; break;
case 0x07: case 0x07:
case 0x08: case 0x08:
m_samples->start(0, 5); m_samples->start(5, 5);
break; break;
case 0x09: case 0x09:
m_samples->start(0, 6); 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 All the Z80 "maincpu" code is copied from gp_1.c
Any bug fixes need to be applied both here and there. 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: ToDo:
- The earlier sets have a sound board with 3x SN76477 and lots of discrete circuitry (not emulated) - Sound
- The later sets (with sound roms) have a sound board with a MC6808 and 6821PIA (not emulated) - Inputs vary per machine
- Each machine has its own set of inputs (not emulated) - Mechanical
******************************************************************************************/ ******************************************************************************************/
@ -202,7 +210,7 @@ static INPUT_PORTS_START( gp_1 )
PORT_DIPSETTING( 0x80, DEF_STR( On )) PORT_DIPSETTING( 0x80, DEF_STR( On ))
PORT_START("DSW3") 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( 0x00, "5" )
PORT_DIPSETTING( 0x01, "10") PORT_DIPSETTING( 0x01, "10")
PORT_DIPSETTING( 0x02, "15") PORT_DIPSETTING( 0x02, "15")
@ -211,7 +219,7 @@ static INPUT_PORTS_START( gp_1 )
PORT_DIPSETTING( 0x05, "30") PORT_DIPSETTING( 0x05, "30")
PORT_DIPSETTING( 0x06, "35") PORT_DIPSETTING( 0x06, "35")
PORT_DIPSETTING( 0x07, "40") PORT_DIPSETTING( 0x07, "40")
PORT_DIPNAME( 0x08, 0x08, "Balls") PORT_DIPNAME( 0x08, 0x00, "Balls")
PORT_DIPSETTING( 0x00, "3") PORT_DIPSETTING( 0x00, "3")
PORT_DIPSETTING( 0x08, "5") PORT_DIPSETTING( 0x08, "5")
PORT_DIPNAME( 0x10, 0x10, "Award") PORT_DIPNAME( 0x10, 0x10, "Award")

View File

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

View File

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

View File

@ -1,11 +1,12 @@
/********************************************************************************** /**********************************************************************************
Pinball PINBALL
Technoplay "2-2C 8008 LS" (68000 CPU) Technoplay "2-2C 8008 LS" (68000 CPU)
Schematic and PinMAME used as references Schematic and PinMAME used as references
ToDo: 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 - No sound due to missing roms
***********************************************************************************/ ***********************************************************************************/
@ -15,14 +16,13 @@ ToDo:
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "techno.lh" #include "techno.lh"
#define TECHNO_MAINCLK 8e6
class techno_state : public driver_device class techno_state : public driver_device
{ {
public: public:
techno_state(const machine_config &mconfig, device_type type, const char *tag) techno_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
{ } { }
DECLARE_READ16_MEMBER(key_r); DECLARE_READ16_MEMBER(key_r);
@ -36,20 +36,14 @@ public:
DECLARE_WRITE16_MEMBER(sol1_w); DECLARE_WRITE16_MEMBER(sol1_w);
DECLARE_WRITE16_MEMBER(sol2_w); DECLARE_WRITE16_MEMBER(sol2_w);
DECLARE_WRITE16_MEMBER(sound_w); DECLARE_WRITE16_MEMBER(sound_w);
UINT16 m_digit; INTERRUPT_GEN_MEMBER(techno_intgen);
UINT8 m_vector;
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset();
private: private:
bool m_digwait; bool m_digwait;
UINT8 m_keyrow; UINT8 m_keyrow;
public: UINT16 m_digit;
INTERRUPT_GEN_MEMBER(techno_intgen); 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 ) static MACHINE_CONFIG_START( techno, techno_state )
/* basic machine hardware */ /* 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_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_NVRAM_ADD_0FILL("nvram")
//MCFG_CPU_ADD("cpu2", TMS7000, 4000000) //MCFG_CPU_ADD("cpu2", TMS7000, XTAL_4MHz)
//MCFG_CPU_PROGRAM_MAP(techno_sub_map) //MCFG_CPU_PROGRAM_MAP(techno_sub_map)
/* Video */ /* Video */
@ -261,12 +255,12 @@ static MACHINE_CONFIG_START( techno, techno_state )
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START(xforce) ROM_START(xforce)
ROM_REGION(0x1000000, "maincpu", 0) ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD16_BYTE("ic15", 0x000001, 0x8000, CRC(fb8d2853) SHA1(0b0004abfe32edfd3ac15d66f90695d264c97eba)) ROM_LOAD16_BYTE("ic15", 0x0001, 0x8000, CRC(fb8d2853) SHA1(0b0004abfe32edfd3ac15d66f90695d264c97eba))
ROM_LOAD16_BYTE("ic17", 0x000000, 0x8000, CRC(122ef649) SHA1(0b425f81869bc359841377a91c39f44395502bff)) ROM_LOAD16_BYTE("ic17", 0x0000, 0x8000, CRC(122ef649) SHA1(0b425f81869bc359841377a91c39f44395502bff))
//ROM_REGION(0x20000), "cpu2", 0) //ROM_REGION(0x20000), "cpu2", 0)
// 5 x 27256 roms are undumped // 5 x 27256 roms are undumped
ROM_END 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: public:
wico_state(const machine_config &mconfig, device_type type, const char *tag) wico_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag), : genpin_class(mconfig, type, tag)
m_ccpu(*this, "ccpu"), , m_ccpu(*this, "ccpu")
m_hcpu(*this, "hcpu"), , m_hcpu(*this, "hcpu")
m_shared_ram(*this, "sharedram") , m_shared_ram(*this, "sharedram")
{ } { }
DECLARE_READ8_MEMBER(lampst_r); DECLARE_READ8_MEMBER(lampst_r);
@ -54,21 +54,16 @@ public:
DECLARE_READ8_MEMBER(gentmrcl_r); DECLARE_READ8_MEMBER(gentmrcl_r);
TIMER_DEVICE_CALLBACK_MEMBER(irq_housekeeping); TIMER_DEVICE_CALLBACK_MEMBER(irq_housekeeping);
TIMER_DEVICE_CALLBACK_MEMBER(firq_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: private:
bool m_zcen; bool m_zcen;
bool m_gten; bool m_gten;
bool m_disp_on; bool m_disp_on;
bool m_diag_on; bool m_diag_on;
UINT8 m_firqtimer; 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 // housekeeping cpu

View File

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