diff options
author | Robbbert <Robbbert@users.noreply.github.com> | 2021-11-28 15:08:16 +1100 |
---|---|---|
committer | Robbbert <Robbbert@users.noreply.github.com> | 2021-11-28 15:08:16 +1100 |
commit | 12fc6b7720daed1c91827a2999f04e3b9eab06ba (patch) | |
tree | 3b2db3c0aaf27bee764f53249db9f227347c63b3 | |
parent | c04720297c6aa3e6164336b251ec1df2736985b0 (diff) |
fourx4: split off to a separate driver.
-rw-r--r-- | scripts/target/mame/arcade.lua | 1 | ||||
-rw-r--r-- | src/mame/arcade.flt | 1 | ||||
-rw-r--r-- | src/mame/drivers/atari_4x4.cpp | 120 | ||||
-rw-r--r-- | src/mame/drivers/atari_s2.cpp | 49 | ||||
-rw-r--r-- | src/mame/mame.lst | 4 |
5 files changed, 125 insertions, 50 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 7e0ed0356ac..941bdf2b24e 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -4638,6 +4638,7 @@ createMAMEProjects(_target, _subtarget, "pinball") files { MAME_DIR .. "src/mame/drivers/allied.cpp", MAME_DIR .. "src/mame/drivers/alvg.cpp", + MAME_DIR .. "src/mame/drivers/atari_4x4.cpp", MAME_DIR .. "src/mame/drivers/atari_s1.cpp", MAME_DIR .. "src/mame/drivers/atari_s2.cpp", MAME_DIR .. "src/mame/drivers/barni.cpp", diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index d8b2b9a1426..3aabf00ee91 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -83,6 +83,7 @@ atarisy1.cpp atarisy2.cpp atarisy4.cpp atarittl.cpp +atari_4x4.cpp atari_s1.cpp atari_s2.cpp atetris.cpp diff --git a/src/mame/drivers/atari_4x4.cpp b/src/mame/drivers/atari_4x4.cpp new file mode 100644 index 00000000000..5428c7814e6 --- /dev/null +++ b/src/mame/drivers/atari_4x4.cpp @@ -0,0 +1,120 @@ +// license:BSD-3-Clause +// copyright-holders:Robbbert +/**************************************************************************************** + +PINBALL +Atari 4X4 + +Unlike all the other Atari pinballs, this one seems to use a 6502. +There's no manuals or full schematics. + +The game has 8 captive balls in 2 banks of 4, and they can be released by hitting a + target (one per ball). Therefore, most of the time you're playing multiball. + +Status: +- Skeleton + +ToDo: +- Everything +- The audio prom is the same one used in Atari System 2, so the sound card should be the + same. + + +*****************************************************************************************/ + +#include "emu.h" +#include "machine/genpin.h" +#include "cpu/m6502/m6502.h" +//#include "machine/timer.h" +//#include "sound/dac.h" +//#include "speaker.h" +//#include "atari_s2.lh" + +namespace { + +class atari_4x4_state : public genpin_class +{ +public: + atari_4x4_state(const machine_config &mconfig, device_type type, const char *tag) + : genpin_class(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_digits(*this, "digit%u", 0U) + , m_io_outputs(*this, "out%d", 0U) + { } + + void fourx4(machine_config &config); + +private: + virtual void machine_reset() override; + virtual void machine_start() override; + void mem_map(address_map &map); + required_device<m6502_device> m_maincpu; + output_finder<68> m_digits; // don't know how many + output_finder<80> m_io_outputs; // ?? solenoids + ?? lamps +}; + +void atari_4x4_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x17ff).ram(); + map(0x2000, 0x27ff).ram(); + map(0x3000, 0x37ff).ram(); + map(0x8000, 0xffff).rom().region("maincpu", 0); +} + +static INPUT_PORTS_START( atari_4x4 ) +INPUT_PORTS_END + +void atari_4x4_state::machine_start() +{ + genpin_class::machine_start(); + + m_digits.resolve(); + m_io_outputs.resolve(); + + //save_item(NAME(m_segment)); +} + +void atari_4x4_state::machine_reset() +{ + genpin_class::machine_reset(); + for (u8 i = 0; i < m_io_outputs.size(); i++) + m_io_outputs[i] = 0; +} + + +void atari_4x4_state::fourx4(machine_config &config) +{ + /* basic machine hardware */ + M6502(config, m_maincpu, 1'000'000); // guess + m_maincpu->set_addrmap(AS_PROGRAM, &atari_4x4_state::mem_map); + + /* Video */ + //config.set_default_layout(layout_fourx4); + + /* Sound */ + genpin_audio(config); + //SPEAKER(config, "speaker").front_center(); + //DAC_4BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r23-r26 (68k,33k,18k,8.2k) + //DAC_3BIT_BINARY_WEIGHTED(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r18-r20 (100k,47k,100k) + //TIMER(config, "timer_s").configure_periodic(FUNC(atari_s2_state::timer_s), attotime::from_hz(150000)); +} + +/*------------------------------------------------------------------- +/ 4x4 (10/1982) +/-------------------------------------------------------------------*/ +ROM_START(fourx4) + ROM_REGION(0x8000, "maincpu", 0) + ROM_LOAD("8000ce65.bin", 0x0000, 0x2000, CRC(27341155) SHA1(c0da1fbf64f93ab163b2ea6bfbfc7b778cea819f)) + ROM_LOAD("a0004c37.bin", 0x2000, 0x2000, CRC(6f93102f) SHA1(d6520987ed5805b0e6b5da5653fc7cb063e86dda)) + ROM_LOAD("c000a70c.bin", 0x4000, 0x2000, CRC(c31ca8d3) SHA1(53f20eff0084771dc61d19db7ddae52e4423e75e)) + ROM_RELOAD(0x6000, 0x2000) + + ROM_REGION(0x0200, "proms", 0) + ROM_LOAD("20967-01.j3", 0x0000, 0x0200, CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b)) +ROM_END + +} // Anonymous namespace + +GAME( 1982, fourx4, 0, fourx4, atari_4x4, atari_4x4_state, empty_init, ROT0, "Atari", "4x4", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp index f59218e8ad7..5c12d0849bb 100644 --- a/src/mame/drivers/atari_s2.cpp +++ b/src/mame/drivers/atari_s2.cpp @@ -14,7 +14,6 @@ Status: - Superman, Hercules, Roadrunner are playable. ToDo: -- 4x4 not emulated yet, it's totally different hardware. - noise generator sounds like a loud barrrr instead of noise, fortunately it isn't used. - roadrunr: test button not working, sets off an alarm instead. Slam Tilt? @@ -24,7 +23,6 @@ ToDo: #include "emu.h" #include "machine/genpin.h" -#include "cpu/m6502/m6502.h" #include "cpu/m6800/m6800.h" #include "machine/timer.h" #include "machine/watchdog.h" @@ -51,7 +49,6 @@ public: void atari_s2(machine_config &config); void atari_s3(machine_config &config); - void fourx4(machine_config &config); protected: virtual void machine_reset() override; @@ -70,7 +67,6 @@ private: void atari_s2_map(address_map &map); void atari_s3_map(address_map &map); - void fourx4_map(address_map &map); bool m_timer_sb = 0; u8 m_timer_s[5]{}; @@ -127,16 +123,6 @@ void atari_s2_state::atari_s3_map(address_map &map) map(0x200b, 0x200b).mirror(0x07F4).portr("DSW7"); } -void atari_s2_state::fourx4_map(address_map &map) -{ - map.unmap_value_high(); - map(0x0000, 0x07ff).ram(); - map(0x1000, 0x17ff).ram(); - map(0x2000, 0x27ff).ram(); - map(0x3000, 0x37ff).ram(); - map(0x8000, 0xffff).rom().region("maincpu", 0); -} - static INPUT_PORTS_START( atari_s2 ) PORT_START("DSW0") PORT_DIPNAME( 0x07, 0x05, "Max Credits" ) @@ -553,26 +539,6 @@ void atari_s2_state::atari_s3(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &atari_s2_state::atari_s3_map); } -void atari_s2_state::fourx4(machine_config &config) -{ - /* basic machine hardware */ - M6502(config, m_maincpu, 1'000'000); // guess - m_maincpu->set_addrmap(AS_PROGRAM, &atari_s2_state::fourx4_map); - - /* Sound */ - genpin_audio(config); - SPEAKER(config, "speaker").front_center(); - - DAC_4BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r23-r26 (68k,33k,18k,8.2k) - DAC_3BIT_BINARY_WEIGHTED(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r18-r20 (100k,47k,100k) - - /* Video */ - config.set_default_layout(layout_atari_s2); - -// TIMER(config, "irq").configure_periodic(FUNC(atari_s2_state::irq), attotime::from_hz(XTAL(4'000'000) / 8192)); -// TIMER(config, "timer_s").configure_periodic(FUNC(atari_s2_state::timer_s), attotime::from_hz(150000)); -} - /*------------------------------------------------------------------- / Superman (03/1979) @@ -613,24 +579,9 @@ ROM_START(roadrunr) ROM_LOAD("20967-01.j3", 0x0000, 0x0200, BAD_DUMP CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b)) // PinMAME note: unknown so far if using the 20967-01 is correct for Road Runner, but sounds good ROM_END -/*------------------------------------------------------------------- -/ 4x4 (10/1982) -/-------------------------------------------------------------------*/ -ROM_START(fourx4) - ROM_REGION(0x8000, "maincpu", 0) - ROM_LOAD("8000ce65.bin", 0x0000, 0x2000, CRC(27341155) SHA1(c0da1fbf64f93ab163b2ea6bfbfc7b778cea819f)) - ROM_LOAD("a0004c37.bin", 0x2000, 0x2000, CRC(6f93102f) SHA1(d6520987ed5805b0e6b5da5653fc7cb063e86dda)) - ROM_LOAD("c000a70c.bin", 0x4000, 0x2000, CRC(c31ca8d3) SHA1(53f20eff0084771dc61d19db7ddae52e4423e75e)) - ROM_RELOAD(0x6000, 0x2000) - - ROM_REGION(0x0200, "proms", 0) - ROM_LOAD("20967-01.j3", 0x0000, 0x0200, CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b)) // labelled as 82s130.bin which is the old name -ROM_END - } // Anonymous namespace GAME( 1979, supermap, 0, atari_s2, atari_s2, atari_s2_state, empty_init, ROT0, "Atari", "Superman (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1979, hercules, 0, atari_s2, hercules, atari_s2_state, empty_init, ROT0, "Atari", "Hercules", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1979, roadrunr, 0, atari_s3, atari_s2, atari_s2_state, empty_init, ROT0, "Atari", "Road Runner", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1982, fourx4, 0, fourx4, atari_s2, atari_s2_state, empty_init, ROT0, "Atari", "4x4", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f3711e9b5f8..017634a947f 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2888,6 +2888,9 @@ via4386vio // Via 4386 VIO / Highscreen universal board (48 zi4dvs // Zida 4DVS motherboard (486) zito4dps // ZIDA Tomato board 4DPS (486) +@source:atari_4x4.cpp +fourx4 // + @source:atari_s1.cpp aavenger // atarians // @@ -2897,7 +2900,6 @@ spcrider // time2000 // @source:atari_s2.cpp -fourx4 // hercules // roadrunr // supermap // |