// license:BSD-3-Clause // copyright-holders:Robbbert /******************************************************************************* PINBALL JVH : Escape, and Movie Masters ********************************************************************************/ #include "emu.h" #include "cpu/tms9900/tms9980a.h" #include "cpu/m6800/m6800.h" #include "machine/6522via.h" //#include "machine/74259.h" //#include "sound/ay8910.h" class jvh_state : public driver_device { public: jvh_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu") { } void jvh2(machine_config &config); void jvh(machine_config &config); void escape_io(address_map &map); void jvh_map(address_map &map); void jvh_sub_map(address_map &map); void movmastr_io(address_map &map); protected: // devices required_device m_maincpu; // driver_device overrides virtual void machine_reset() override; public: DECLARE_DRIVER_INIT(jvh); }; void jvh_state::jvh_map(address_map &map) { map(0x0000, 0x3bff).rom(); map(0x3c00, 0x3cff).ram(); } void jvh_state::escape_io(address_map &map) { //AM_RANGE(0x01, 0x02) AM_READ(sw1_r) //AM_RANGE(0x03, 0x05) AM_READ(dip_r) //AM_RANGE(0x06, 0x07) AM_READ(sw6_r) //AM_RANGE(0x10, 0x15) AM_WRITE(snd_w) //AM_RANGE(0x16, 0x16) AM_WRITE(latch_w) //AM_RANGE(0x17, 0x19) AM_WRITE(out1a_w) //AM_RANGE(0x1a, 0x1a) AM_WRITE(enable_w) //AM_RANGE(0x1b, 0x1f) AM_WRITE(out1b_w) //AM_RANGE(0x20, 0x27) AM_WRITE(out2a_w) //AM_RANGE(0x28, 0x2f) AM_WRITE(out2b_w) //AM_RANGE(0x30, 0x37) AM_WRITE(out3a_w) //AM_RANGE(0x3e, 0x3e) AM_WRITE(irq_enable) //AM_RANGE(0x3f, 0x3f) AM_WRITE(zc_enable) //AM_RANGE(0x40, 0x47) AM_WRITE(digit_w) //AM_RANGE(0x48, 0x4b) AM_WRITE(bcd_w) //AM_RANGE(0x4c, 0x50) AM_WRITE(panel_w) //AM_RANGE(0x51, 0x55) AM_WRITE(col_w) //AM_RANGE(0x58, 0x5f) AM_WRITE(out5b_w) //AM_RANGE(0x60, 0x67) AM_WRITE(out6a_w) //AM_RANGE(0x68, 0x6f) AM_WRITE(out6b_w) //AM_RANGE(0x70, 0x74) AM_WRITE(out7a_w) //AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w) } void jvh_state::movmastr_io(address_map &map) { //AM_RANGE(0x01, 0x02) AM_READ(sw1_r) //AM_RANGE(0x03, 0x05) AM_READ(dip_r) //AM_RANGE(0x08, 0x09) AM_READ(sw6_r) //AM_RANGE(0x00, 0x07) AM_WRITE(out0a2_w) //AM_RANGE(0x08, 0x0f) AM_WRITE(out0b2_w) //AM_RANGE(0x10, 0x17) AM_WRITE(out1a2_w) //AM_RANGE(0x18, 0x1f) AM_WRITE(out1b2_w) //AM_RANGE(0x20, 0x27) AM_WRITE(out2a2_w) //AM_RANGE(0x28, 0x2f) AM_WRITE(out2b2_w) //AM_RANGE(0x30, 0x30) AM_WRITE(out3a2_w) //AM_RANGE(0x31, 0x36) AM_WRITE(snd_w) //AM_RANGE(0x37, 0x37) AM_WRITE(latch_w) //AM_RANGE(0x3e, 0x3e) AM_WRITE(irq_enable) //AM_RANGE(0x3f, 0x3f) AM_WRITE(zc_enable) //AM_RANGE(0x40, 0x47) AM_WRITE(out4a2_w) //AM_RANGE(0x48, 0x4a) AM_WRITE(out4b2_w) //AM_RANGE(0x4b, 0x4b) AM_WRITE(enable_w) //AM_RANGE(0x4c, 0x4f) AM_WRITE(out4c2_w) //AM_RANGE(0x50, 0x55) AM_WRITE(col_w) //AM_RANGE(0x57, 0x5a) AM_WRITE(bcd_w) //AM_RANGE(0x5b, 0x5f) AM_WRITE(panel_w) //AM_RANGE(0x60, 0x67) AM_WRITE(digit_w) //AM_RANGE(0x68, 0x6f) AM_WRITE(out6b2_w) //AM_RANGE(0x70, 0x74) AM_WRITE(out7a2_w) //AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w) } void jvh_state::jvh_sub_map(address_map &map) { map(0x0000, 0x007f).ram(); map(0x0080, 0x008f).rw("via", FUNC(via6522_device::read), FUNC(via6522_device::write)); map(0xc000, 0xdfff).mirror(0x2000).rom(); } static INPUT_PORTS_START( jvh ) INPUT_PORTS_END void jvh_state::machine_reset() { } DRIVER_INIT_MEMBER(jvh_state,jvh) { } MACHINE_CONFIG_START(jvh_state::jvh) // CPU TMS9980A; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, escape_io) MCFG_CPU_ADD("soundcpu", M6802, XTAL(4'000'000)) MCFG_CPU_PROGRAM_MAP(jvh_sub_map) MCFG_DEVICE_ADD("via", VIA6522, XTAL(4'000'000) / 4) // MC6802 E clock MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("soundcpu", M6802_IRQ_LINE)) MACHINE_CONFIG_END MACHINE_CONFIG_START(jvh_state::jvh2) // CPU TMS9980At; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, movmastr_io) MCFG_CPU_ADD("soundcpu", M6802, XTAL(4'000'000)) MCFG_CPU_PROGRAM_MAP(jvh_sub_map) MCFG_DEVICE_ADD("via", VIA6522, XTAL(4'000'000) / 4) MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("soundcpu", M6802_IRQ_LINE)) MACHINE_CONFIG_END /*------------------------------------------------------------------- / Escape /-------------------------------------------------------------------*/ ROM_START(escape) ROM_REGION(0x4000, "maincpu", 0) 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_LOAD("snd.bin", 0xc000, 0x2000, CRC(2477bbe2) SHA1(f636952822153f43e9d09f8211edde1057249203)) ROM_END /*------------------------------------------------------------------- / Movie Masters /-------------------------------------------------------------------*/ ROM_START(movmastr) ROM_REGION(0x4000, "maincpu", 0) 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_LOAD("snd.bin", 0xc000, 0x2000, NO_DUMP) ROM_END GAME(1987, escape, 0, jvh, jvh, jvh_state, jvh, ROT0, "Jac Van Ham (Royal)", "Escape", MACHINE_IS_SKELETON_MECHANICAL) GAME(19??, movmastr, 0, jvh2, jvh, jvh_state, jvh, ROT0, "Jac Van Ham (Royal)", "Movie Masters", MACHINE_IS_SKELETON_MECHANICAL)