summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
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
commit12fc6b7720daed1c91827a2999f04e3b9eab06ba (patch)
tree3b2db3c0aaf27bee764f53249db9f227347c63b3 /src/mame
parentc04720297c6aa3e6164336b251ec1df2736985b0 (diff)
fourx4: split off to a separate driver.
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/arcade.flt1
-rw-r--r--src/mame/drivers/atari_4x4.cpp120
-rw-r--r--src/mame/drivers/atari_s2.cpp49
-rw-r--r--src/mame/mame.lst4
4 files changed, 124 insertions, 50 deletions
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 //