From 2e60e7206955f557aa2c7628f7a0f868fb553daf Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 10 Aug 2014 09:47:31 +0000 Subject: [PATCH] Minor cleanups and notes --- src/mame/drivers/flicker.c | 19 ++++++-------- src/mame/drivers/gp_2.c | 18 ++++++++++---- src/mame/drivers/rowamet.c | 48 +++++++++++++++++++----------------- src/mame/drivers/s3.c | 48 +++++++++++++++++------------------- src/mame/drivers/techno.c | 40 +++++++++++++----------------- src/mame/drivers/wico.c | 21 ++++++---------- src/mame/drivers/zac_proto.c | 12 +++------ 7 files changed, 96 insertions(+), 110 deletions(-) diff --git a/src/mame/drivers/flicker.c b/src/mame/drivers/flicker.c index a7f0d2d25bf..0a6dbc0dae0 100644 --- a/src/mame/drivers/flicker.c +++ b/src/mame/drivers/flicker.c @@ -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 m_maincpu; - private: UINT8 m_out_data; + required_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); diff --git a/src/mame/drivers/gp_2.c b/src/mame/drivers/gp_2.c index 782813e6131..37f35e1b81f 100644 --- a/src/mame/drivers/gp_2.c +++ b/src/mame/drivers/gp_2.c @@ -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") diff --git a/src/mame/drivers/rowamet.c b/src/mame/drivers/rowamet.c index dc94c72d9e9..4bfacfb6a4c 100644 --- a/src/mame/drivers/rowamet.c +++ b/src/mame/drivers/rowamet.c @@ -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 m_maincpu; - required_device m_cpu2; - required_shared_ptr 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 m_maincpu; + required_device m_cpu2; + required_shared_ptr 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 /*------------------------------------------------------------------- diff --git a/src/mame/drivers/s3.c b/src/mame/drivers/s3.c index 955ebe22502..6301528c8f2 100644 --- a/src/mame/drivers/s3.c +++ b/src/mame/drivers/s3.c @@ -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 m_maincpu; - optional_device m_audiocpu; - optional_device m_dac; - required_device m_pia22; - required_device m_pia24; - required_device m_pia28; - required_device m_pia30; - optional_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 m_maincpu; + optional_device m_audiocpu; + optional_device m_dac; + required_device m_pia22; + required_device m_pia24; + required_device m_pia28; + required_device m_pia30; + optional_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 { diff --git a/src/mame/drivers/techno.c b/src/mame/drivers/techno.c index 1cfb99a8c3d..745b808db71 100644 --- a/src/mame/drivers/techno.c +++ b/src/mame/drivers/techno.c @@ -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 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 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) diff --git a/src/mame/drivers/wico.c b/src/mame/drivers/wico.c index 1b9a8108b72..01ccbb40dde 100644 --- a/src/mame/drivers/wico.c +++ b/src/mame/drivers/wico.c @@ -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 m_ccpu; - required_device m_hcpu; - required_shared_ptr 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 m_ccpu; + required_device m_hcpu; + required_shared_ptr m_shared_ram; }; // housekeeping cpu diff --git a/src/mame/drivers/zac_proto.c b/src/mame/drivers/zac_proto.c index cdff804a4bd..f90577e4d12 100644 --- a/src/mame/drivers/zac_proto.c +++ b/src/mame/drivers/zac_proto.c @@ -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 m_maincpu; - - // driver_device overrides +private: virtual void machine_reset(); + required_device m_maincpu; };