jvh.cpp: WIP (no time to finish this atm, committing what's done so far).

This commit is contained in:
Robbbert 2022-01-21 02:13:16 +11:00
parent 8b965ef95a
commit 9ac7673f4f

View File

@ -2,11 +2,25 @@
// copyright-holders:Robbbert
/*******************************************************************************
PINBALL
JVH : Escape, and Movie Masters
PINBALL
Jac Van Ham (Holland)
Games:
- Escape
- Formula 1
- Ice Mania
- Movie Masters (IMDB says this is a Bally conversion by IDI)
- Royal Flippers
Status:
- Skeletons
ToDo:
- Everything
********************************************************************************/
#include "emu.h"
#include "machine/genpin.h"
#include "cpu/tms9900/tms9980a.h"
#include "cpu/tms9900/tms9995.h"
#include "cpu/m6800/m6800.h"
@ -14,13 +28,18 @@
#include "machine/6522via.h"
//#include "machine/74259.h"
//#include "sound/ay8910.h"
//#include "jvh.lh"
class jvh_state : public driver_device
namespace {
class jvh_state : public genpin_class
{
public:
jvh_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_digits(*this, "digit%d", 0U)
, m_io_outputs(*this, "out%d", 0U)
{ }
void common(machine_config &config);
@ -28,23 +47,21 @@ public:
void jvh2(machine_config &config);
void jvh3(machine_config &config);
void init_jvh();
private:
void escape_io(address_map &map);
void jvh_map(address_map &map);
void jvh_sub_map(address_map &map);
void main_map(address_map &map);
void audio_map(address_map &map);
void movmastr_io(address_map &map);
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_start() override;
virtual void machine_reset() override;
output_finder<50> m_digits;
output_finder<80> m_io_outputs; // ?? solenoids + ?? lamps
};
void jvh_state::jvh_map(address_map &map)
void jvh_state::main_map(address_map &map)
{
map(0x0000, 0x3bff).rom();
map(0x3c00, 0x3cff).ram();
@ -105,7 +122,7 @@ void jvh_state::movmastr_io(address_map &map)
//map(0x75, 0x7f).w(FUNC(jvh_state::sol_w));
}
void jvh_state::jvh_sub_map(address_map &map)
void jvh_state::audio_map(address_map &map)
{
map(0x0080, 0x008f).m("via", FUNC(via6522_device::map));
map(0xc000, 0xdfff).mirror(0x2000).rom();
@ -114,25 +131,39 @@ void jvh_state::jvh_sub_map(address_map &map)
static INPUT_PORTS_START( jvh )
INPUT_PORTS_END
void jvh_state::machine_reset()
void jvh_state::machine_start()
{
genpin_class::machine_start();
m_io_outputs.resolve();
m_digits.resolve();
//save_item(NAME(m_t_c));
}
void jvh_state::init_jvh()
void jvh_state::machine_reset()
{
genpin_class::machine_reset();
for (u8 i = 0; i < m_io_outputs.size(); i++)
m_io_outputs[i] = 0;
}
void jvh_state::common(machine_config &config)
{
// CPU TMS9980A; no line connections
TMS9980A(config, m_maincpu, 10000000);
m_maincpu->set_addrmap(AS_PROGRAM, &jvh_state::jvh_map);
m_maincpu->set_addrmap(AS_PROGRAM, &jvh_state::main_map);
m6802_cpu_device &soundcpu(M6802(config, "soundcpu", XTAL(4'000'000)));
soundcpu.set_addrmap(AS_PROGRAM, &jvh_state::jvh_sub_map);
m6802_cpu_device &audiocpu(M6802(config, "audiocpu", XTAL(4'000'000)));
audiocpu.set_addrmap(AS_PROGRAM, &jvh_state::audio_map);
via6522_device &via(MOS6522(config, "via", XTAL(4'000'000) / 4)); // MC6802 E clock
via.irq_handler().set_inputline("soundcpu", M6802_IRQ_LINE);
via.irq_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
// Video
//config.set_default_layout(layout_jvh);
// Sound
genpin_audio(config);
}
void jvh_state::jvh(machine_config &config)
@ -151,11 +182,17 @@ void jvh_state::jvh3(machine_config &config)
{
TMS9995(config, m_maincpu, 12000000);
M6809(config, "soundcpu", 2000000);
M6809(config, "audiocpu", 2000000);
M6809(config, "soundcpu2", 2000000);
M6809(config, "audiocpu2", 2000000);
// YM2203, YM3812, DAC
// Video
//config.set_default_layout(layout_jvh);
// Sound
genpin_audio(config);
}
/*-------------------------------------------------------------------
@ -166,7 +203,7 @@ ROM_START(icemania)
ROM_LOAD("1c1_ic1.bin", 0x0000, 0x2000, CRC(eae16d52) SHA1(9151e0ccec938d268a157cea30b4a23b69e194b8))
ROM_LOAD("2b1_ic7.bin", 0x2000, 0x2000, CRC(7b5fc604) SHA1(22c1c1a030877df99c3db50e7dd41dffe6c21dec))
ROM_REGION(0x10000, "soundcpu", 0)
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("im_snd.bin", 0xc000, 0x2000, CRC(0d861f65) SHA1(6c17d1f674c95a4c877b42100ab6e0ae8213264b))
ROM_END
@ -178,7 +215,7 @@ ROM_START(escape)
ROM_LOAD("cpu_ic1.bin", 0x0000, 0x2000, CRC(fadb8f9a) SHA1(b7e7ea8e33847c14a3414f5e367e304f12c0bc00))
ROM_LOAD("cpu_ic7.bin", 0x2000, 0x2000, CRC(2f9402b4) SHA1(3d3bae7e4e5ad40e3c8019d55392defdffd21cc4))
ROM_REGION(0x10000, "soundcpu", 0)
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("snd.bin", 0xc000, 0x2000, CRC(2477bbe2) SHA1(f636952822153f43e9d09f8211edde1057249203))
ROM_END
@ -190,7 +227,7 @@ ROM_START(movmastr)
ROM_LOAD("mm_ic1.764", 0x0000, 0x2000, CRC(fb59920d) SHA1(05536c4c036a8d73516766e14f4449665b2ec180))
ROM_LOAD("mm_ic7.764", 0x2000, 0x2000, CRC(9b47af41) SHA1(ae795c22aa437d6c71312d93de8a87f43ee500fb))
ROM_REGION(0x10000, "soundcpu", 0)
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("snd.bin", 0xc000, 0x2000, NO_DUMP)
ROM_END
@ -201,15 +238,16 @@ ROM_START(formula1)
ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("f1_ic4.bin", 0x0000, 0x4000, CRC(6ca345da) SHA1(5532c5786d304744a69c7e892924edd03abe8209))
ROM_REGION(0x10000, "soundcpu", 0)
ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("f1_snd.bin", 0x8000, 0x8000, CRC(00562594) SHA1(3325ad4c0ec04457f4d5b78b9ac48218d6c7aef3))
ROM_REGION(0x10000, "soundcpu2", 0)
ROM_REGION(0x10000, "audiocpu2", 0)
ROM_LOAD("f1_samples.bin", 0x0000, 0x10000, CRC(ecb7ff04) SHA1(1c11c8ce62ec2f0a4f7dae3b1661baddb04ad55a))
ROM_END
} // Anonymous namespace
GAME( 1986, icemania, 0, jvh, jvh, jvh_state, init_jvh, ROT0, "Jac Van Ham (Royal)", "Ice Mania", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1987, escape, 0, jvh, jvh, jvh_state, init_jvh, ROT0, "Jac Van Ham (Royal)", "Escape", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 19??, movmastr, 0, jvh2, jvh, jvh_state, init_jvh, ROT0, "Jac Van Ham (Royal)", "Movie Masters", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1988, formula1, 0, jvh3, jvh, jvh_state, init_jvh, ROT0, "Jac Van Ham (Royal)", "Formula 1", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1986, icemania, 0, jvh, jvh, jvh_state, empty_init, ROT0, "Jac Van Ham (Royal)", "Ice Mania", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1987, escape, 0, jvh, jvh, jvh_state, empty_init, ROT0, "Jac Van Ham (Royal)", "Escape", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 19??, movmastr, 0, jvh2, jvh, jvh_state, empty_init, ROT0, "Jac Van Ham (Royal)", "Movie Masters", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1988, formula1, 0, jvh3, jvh, jvh_state, empty_init, ROT0, "Jac Van Ham (Royal)", "Formula 1", MACHINE_IS_SKELETON_MECHANICAL )