mirror of
https://github.com/holub/mame
synced 2025-07-02 00:29:37 +03:00
Minor cleanups and notes
This commit is contained in:
parent
cba86c8114
commit
2e60e72069
@ -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);
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user