mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
fourx4: split off to a separate driver.
This commit is contained in:
parent
c04720297c
commit
12fc6b7720
@ -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",
|
||||
|
@ -83,6 +83,7 @@ atarisy1.cpp
|
||||
atarisy2.cpp
|
||||
atarisy4.cpp
|
||||
atarittl.cpp
|
||||
atari_4x4.cpp
|
||||
atari_s1.cpp
|
||||
atari_s2.cpp
|
||||
atetris.cpp
|
||||
|
120
src/mame/drivers/atari_4x4.cpp
Normal file
120
src/mame/drivers/atari_4x4.cpp
Normal file
@ -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 )
|
@ -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 )
|
||||
|
@ -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 //
|
||||
|
Loading…
Reference in New Issue
Block a user