// license:BSD-3-Clause // copyright-holders:David Haywood /* JPM System 80 Hardware TMS9980A CPU + ??? AY8912? TMS9902 (is there a 9901 as well?) --- There are also older platforms also using the TMS CPU, we load some of those roms here too, but many should go into the SRU folder. System80 is based on the SRU platform, but with more outputs and finally a separate CPU and sound board setup to permit easy repair. */ #include "emu.h" #include "cpu/tms9900/tms9980a.h" #include "sound/ay8910.h" #include "machine/74259.h" #include "machine/tms9902.h" #include "speaker.h" #include "jpms80.lh" // MFME2MAME layouts: #include "j80bac.lh" #include "j80bounc.lh" #include "j80frogh.lh" #include "j80golds.lh" #include "j80hotln.lh" #include "j80myspn.lh" #include "j80nudg2.lh" #include "j80rr.lh" #include "j80supst.lh" #include "j80supbk.lh" #include "j80topsp.lh" #include "j80wsprt2.lh" class jpms80_state : public driver_device { public: jpms80_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_acc(*this, "acc") { } void jpms80(machine_config &config); void init_jpms80(); private: virtual void machine_reset() override; DECLARE_WRITE_LINE_MEMBER(int1_enable_w); DECLARE_WRITE_LINE_MEMBER(int2_enable_w); DECLARE_WRITE_LINE_MEMBER(watchdog_w); DECLARE_WRITE_LINE_MEMBER(io_enable_w); void jpms80_io_map(address_map &map); void jpms80_map(address_map &map); // devices required_device m_maincpu; required_device m_acc; }; WRITE_LINE_MEMBER(jpms80_state::int1_enable_w) { } WRITE_LINE_MEMBER(jpms80_state::int2_enable_w) { } WRITE_LINE_MEMBER(jpms80_state::watchdog_w) { } WRITE_LINE_MEMBER(jpms80_state::io_enable_w) { } void jpms80_state::jpms80_map(address_map &map) { map(0x0000, 0x2fff).rom().region("maincpu", 0); map(0x3000, 0x3fff).ram(); } void jpms80_state::jpms80_io_map(address_map &map) { map.global_mask(0x3ff); // map(0x0000, 0x001f) // I/O & Optic (in) map(0x0000, 0x000f).w("outlatch0", FUNC(ls259_device::write_d0)); map(0x0010, 0x001f).w("outlatch1", FUNC(ls259_device::write_d0)); map(0x0020, 0x002f).w("outlatch2", FUNC(ls259_device::write_d0)); map(0x0030, 0x003f).w("outlatch3", FUNC(ls259_device::write_d0)); map(0x0040, 0x004f).w("outlatch4", FUNC(ls259_device::write_d0)); map(0x0050, 0x005f).w("outlatch5", FUNC(ls259_device::write_d0)); map(0x0060, 0x006f).w("outlatch6", FUNC(ls259_device::write_d0)); map(0x0070, 0x007f).w("outlatch7", FUNC(ls259_device::write_d0)); map(0x0080, 0x008f).w("outlatch8", FUNC(ls259_device::write_d0)); map(0x0090, 0x009f).w("outlatch9", FUNC(ls259_device::write_d0)); map(0x00a0, 0x00af).w("outlatch10", FUNC(ls259_device::write_d0)); // map(0x0380, 0x03bf) // AY map(0x03c0, 0x03ff).rw(m_acc, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); // Lamps, Meters etc. can move around } static INPUT_PORTS_START( jpms80 ) INPUT_PORTS_END void jpms80_state::machine_reset() { } void jpms80_state::jpms80(machine_config &config) { // CPU TMS9980A, standard variant; no line connections TMS9980A(config, m_maincpu, 10_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &jpms80_state::jpms80_map); m_maincpu->set_addrmap(AS_IO, &jpms80_state::jpms80_io_map); SPEAKER(config, "mono").front_center(); LS259(config, "outlatch0"); // I/O IC5 LS259(config, "outlatch1"); // I/O IC6 LS259(config, "outlatch2"); // I/O IC7 LS259(config, "outlatch3"); // I/O IC8 LS259(config, "outlatch4"); // I/O IC9 LS259(config, "outlatch5"); // I/O IC10 LS259(config, "outlatch6"); // I/O IC11 LS259(config, "outlatch7"); // I/O IC12 LS259(config, "outlatch8"); // I/O IC13 LS259(config, "outlatch9"); // I/O IC14 ls259_device &outlatch10(LS259(config, "outlatch10")); // I/O IC15 outlatch10.q_out_cb<0>().set(FUNC(jpms80_state::int1_enable_w)); // 50 - INT1 enable (lv3) outlatch10.q_out_cb<1>().set(FUNC(jpms80_state::int2_enable_w)); // 51 - INT2 enable (lv4) outlatch10.q_out_cb<2>().set(FUNC(jpms80_state::watchdog_w)); // 52 - Watchdog outlatch10.q_out_cb<3>().set(FUNC(jpms80_state::io_enable_w)); // 53 - I/O Enable TMS9902(config, m_acc, 10_MHz_XTAL / 4); m_acc->int_cb().set_inputline(m_maincpu, INT_9980A_LEVEL3); AY8912(config, "aysnd", 10_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 1.0); } void jpms80_state::init_jpms80() { } ROM_START( j80bac ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "bankacoinp1.bin", 0x0000, 0x1000, CRC(7b82025b) SHA1(f698688c55f8c5dc891e470de8df2eb12f6b1ec5) ) ROM_LOAD( "bankacoinp2.bin", 0x1000, 0x1000, CRC(91d71fbe) SHA1(d0c45218b7568d5293f015334d7d1045bcb2fe03) ) ROM_LOAD( "bankacoinp3.bin", 0x2000, 0x1000, CRC(0c3b2954) SHA1(4342a2a047496caf8569d4519dd8daad47e634e3) ) ROM_END ROM_START( j80blbnk ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "blankity-bank-p1.bin", 0x0000, 0x1000, CRC(8b2aeca6) SHA1(207db63d5130cb7a8eb9be41d116432f7b7728b0) ) ROM_LOAD( "blankity-bank-p2.bin", 0x1000, 0x1000, CRC(561262da) SHA1(d1f3e7815c5ea3ba7c26ed3b95a16c802f6af50f) ) ROM_LOAD( "blankity-bank-p3.bin", 0x2000, 0x1000, CRC(39925035) SHA1(0af8c8f8074c4873581250474d59d715178cded4) ) ROM_END ROM_START( j80bounc ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "bouncer.p1", 0x0000, 0x1000, CRC(81de115b) SHA1(0890de1492859c58411fd130ecf721df7611247a) ) ROM_LOAD( "bouncer.p2", 0x1000, 0x1000, CRC(8507ea42) SHA1(e4838fe737c8a9964e0067be460e8bfc18b0a406) ) ROM_END ROM_START( j80frogh ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "froghop1.bin", 0x0000, 0x1000, CRC(606846f8) SHA1(8796fb647a41dad087b9eb3e24fa7071c933d1ec) ) ROM_LOAD( "froghop2.bin", 0x1000, 0x1000, CRC(b64ed5ad) SHA1(5697b0a16191ee3845f0f4077cf7b597f0b20024) ) ROM_LOAD( "froghop3.bin", 0x2000, 0x1000, CRC(f5b55c0e) SHA1(9fdef9f634f9b832a1bf6e3e3890a7fa328d20e3) ) ROM_END ROM_START( j80fruit ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "fruit_snappa_1-1.bin", 0x0000, 0x1000, CRC(f6eea72d) SHA1(ae994f9eb68aa6ea127586afb448cc8fbff0c314) ) ROM_LOAD( "fruit_snappa_1-2.bin", 0x1000, 0x1000, CRC(10eccac5) SHA1(3c9cc57a3b51fdae713c11a33677555be3f669bc) ) ROM_LOAD( "fruit_snappa_1-3.bin", 0x2000, 0x1000, CRC(6f938a9a) SHA1(edbf44ae7cb060420b6f952652f08271c4af35bd) ) ROM_REGION( 0x10000, "altrevs", 0 ) // from 'fruit chaser' set, other roms matched. ROM_LOAD( "fruit31.p1", 0x0000, 0x001000, CRC(406ff4c1) SHA1(10ef59e66debb15b22d25b66ed19f45a242e30ac) ) ROM_END ROM_START( j80golds ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "goldstep2-1.p1", 0x0000, 0x1000, CRC(bc1e0788) SHA1(5e01881bda22fc00b2d2ac2b80acc67caddea682) ) ROM_LOAD( "goldstep2-2.p2", 0x1000, 0x1000, CRC(6ea82bd9) SHA1(289c9a076b9e5039f09283d64ceb77dfd7ea79ea) ) ROM_END ROM_START( j80hotln ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "lines2_1.rom", 0x0000, 0x1000, CRC(f0ce5d7f) SHA1(be3f8ff3f83737a004d6a78cc61c3385307df1c3) ) ROM_LOAD( "lines2_2.rom", 0x1000, 0x1000, CRC(d5e69b49) SHA1(fcaa527875f81e03c5a5866d6d8b017450c50d9c) ) ROM_END ROM_START( j80myspn ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "ms1.bin", 0x0000, 0x1000, CRC(b247374e) SHA1(33399f39bba68eff13e05529174d17f5b1ca0f70) ) ROM_LOAD( "ms2.bin", 0x1000, 0x1000, CRC(721c35df) SHA1(05ea0cdc83823f268becc7b9dd99db61949ad229) ) ROM_END ROM_START( j80nudg2 ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "ndu.p1", 0x0000, 0x1000, CRC(4cfd3c6f) SHA1(06ad825343178a694585ee3b4ff8400caf15dd21) ) // aka ndudx5-1-5p.p1 (was in j2nuddud) ROM_END ROM_START( j80rr ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "jpmroadrunnerp1.bin", 0x0000, 0x1000, CRC(86f50997) SHA1(8bb266274d3ebeee942e5f878f7faae012712382) ) ROM_LOAD( "jpmroadrunnerp2.bin", 0x1000, 0x1000, CRC(aea12b9e) SHA1(6f6eb286c43a9bc04bfcab71713ce59da61cc063) ) ROM_LOAD( "jpmroadrunnerp3.bin", 0x2000, 0x1000, CRC(9b0b6fb9) SHA1(0282189e2945e4aa3a338930666d1eb34022894c) ) ROM_END ROM_START( j80rra ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "rr.p1", 0x0000, 0x1000, CRC(38cd5043) SHA1(f4b828ad2e761bba91336714357a18f10d79c22b) ) ROM_LOAD( "rr.p2", 0x1000, 0x1000, CRC(81dc46ec) SHA1(17c60590cf5628df6bd109213a3f671b1a6df14b) ) ROM_LOAD( "rr.p3", 0x2000, 0x1000, CRC(5e617600) SHA1(1a2a25f81818fc3abeceb74608b2ffd53fac2c6d) ) ROM_END ROM_START( j80supst ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "supasteppa2-1.p1", 0x0000, 0x1000, CRC(aac5b165) SHA1(5bf4acb85be227e1f4979fea4552fa5f64e9b7b2) ) ROM_LOAD( "supasteppa2-2.p2", 0x1000, 0x1000, CRC(3a93ea9e) SHA1(24e711a398d7f071fb904993ff0a974b4ac8b1d6) ) ROM_END ROM_START( j80supbk ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "sbank-4.1.bin", 0x0000, 0x1000, CRC(effd29fa) SHA1(1e20bc6130f5d49db3856c56c64746f3fa49bd9c) ) ROM_LOAD( "sbank-4.2.bin", 0x1000, 0x1000, CRC(6ca5cc1d) SHA1(77d9bb44e6837027b61286f30bcb2c1b0e6a53fb) ) ROM_LOAD( "sbank-4.3.bin", 0x2000, 0x1000, CRC(af08594d) SHA1(ebff60e63e99af102874f4b3f070d9bfd229ab89) ) ROM_END ROM_START( j80topsp ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "topsprint4-1.p1", 0x0000, 0x1000, CRC(91c4f494) SHA1(e4fd688a1fd23694c4fe8529d07ac248f262ad70) ) ROM_LOAD( "topsprint4-2.p2", 0x1000, 0x1000, CRC(e9ad3706) SHA1(bb6cb1a8ea740be017055e4fa621fabc8df77086) ) ROM_LOAD( "topsprint4-3.p3", 0x2000, 0x1000, CRC(d1abfb54) SHA1(33b11563c6e1ddfaa5527ad7a384fecd03c7de0a) ) ROM_END ROM_START( j80topup ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "topup3-1.bin", 0x0000, 0x1000, CRC(2feb37e8) SHA1(098671f81fa94b851a8fa41ee7bd3d1b762eb824) ) ROM_LOAD( "topup3-2.bin", 0x1000, 0x1000, CRC(1937e7c9) SHA1(a9ae5163e560642598ec9878276d8785c28eb035) ) ROM_LOAD( "topup3-3.bin", 0x2000, 0x1000, CRC(283d7dd2) SHA1(8246c80c85956a0a3b59d68700319a59b35a5326) ) ROM_END ROM_START( j80tumbl ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "tumble3-1.bin", 0x0000, 0x1000, CRC(2feb37e8) SHA1(098671f81fa94b851a8fa41ee7bd3d1b762eb824) ) ROM_LOAD( "tumble3-2.bin", 0x1000, 0x1000, CRC(1937e7c9) SHA1(a9ae5163e560642598ec9878276d8785c28eb035) ) ROM_LOAD( "tumble3-3.bin", 0x2000, 0x1000, CRC(23789c80) SHA1(6b6ac4e1dc66d5eb399437e87a9e7ee461bee086) ) ROM_END ROM_START( j80wsprt ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "winsprint4-1.bin", 0x0000, 0x1000, CRC(57259716) SHA1(76ac953f3edefd0fe540e931bd73f564ea49d0c5) ) ROM_LOAD( "winsprint4-2.bin", 0x1000, 0x1000, CRC(f097bde3) SHA1(22bccd74564fbc2df63ffed3972199d25059b881) ) ROM_LOAD( "winsprint4-3.bin", 0x2000, 0x1000, CRC(c7318871) SHA1(6534f06be122ed0c9665437485fb860547dd1d7f) ) ROM_END ROM_START( j80wsprt3 ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "winsprint3-1.bin", 0x0000, 0x1000, CRC(1af581c2) SHA1(5e04bf37551fc8fc7f477770635f8a573d659a2f) ) ROM_LOAD( "winsprint3-2.bin", 0x1000, 0x1000, CRC(f097bde3) SHA1(22bccd74564fbc2df63ffed3972199d25059b881) ) ROM_LOAD( "winsprint3-3.bin", 0x2000, 0x1000, CRC(73098120) SHA1(e353714350681c84f4d3d093dbf07f7e8c70e109) ) ROM_END ROM_START( j80wsprt2 ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "winsprint.p1", 0x0000, 0x1000, CRC(e440c7bb) SHA1(5ef85a93a6170115c750257ac6c755b18b3114a9) ) ROM_LOAD( "winsprint.p2", 0x1000, 0x1000, CRC(225674bf) SHA1(d8a15226ff4f7b16f7f1a8dff969585a6b4536fe) ) ROM_LOAD( "winsprint.p3", 0x2000, 0x1000, CRC(51d11f59) SHA1(756ba5f02c0733d082767cbdaa93105a7d3f31f3) ) ROM_END ROM_START( j80alad ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "al_p1.bin", 0x0000, 0x001000, CRC(41134b85) SHA1(8d48af9e3eae8dcc5888a3fa8ae9681ff6047dbb) ) ROM_LOAD( "al_p2.bin", 0x1000, 0x001000, CRC(934248eb) SHA1(2abb23907acf5036b63185afb164117f1d1bab0c) ) ROM_LOAD( "al_p3.bin", 0x2000, 0x001000, CRC(da2a56a3) SHA1(1b125be1bd4f0d63c68f370a2a7202f68ff11577) ) ROM_END ROM_START( j80fortr ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "fortunetrail1.1", 0x0000, 0x001000, CRC(1691b72f) SHA1(be0966c9560249f2529dd76421fe6646adaeeadb) ) ROM_LOAD( "fortunetrail1.2", 0x1000, 0x001000, CRC(02dfcfc4) SHA1(ae97b670a4d5b341ee150cabf3d264a02cd7a32c) ) ROM_END ROM_START( j80mster ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "masterspyp1.bin", 0x0000, 0x001000, CRC(7264e304) SHA1(cd50fd116226de2980f31728faa6723dca0ac061) ) ROM_LOAD( "masterspyp2.bin", 0x1000, 0x001000, CRC(e6349ee9) SHA1(207a4089e7128143eaeebe1dc082b742b5dfab96) ) ROM_LOAD( "masterspyp3.bin", 0x2000, 0x001000, CRC(83868a58) SHA1(3264dfa7994c62615da2418d1667cb3bd2e00435) ) ROM_END ROM_START( j80plsnd ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "plus_p1.bin", 0x0000, 0x000400, CRC(02721d4f) SHA1(ea5da3f08098a9d12c71d41d70f09aca6660d6c5) ) ROM_LOAD( "plus_p2.bin", 0x0400, 0x000400, CRC(f58b492f) SHA1(569805044fa64c1d0c3620f380b4a09152ce2964) ) ROM_LOAD( "plus_p3.bin", 0x0800, 0x000400, CRC(e9584323) SHA1(7b2101626920bed533b392d1064fde305c8c18e8) ) ROM_LOAD( "plus_p4.bin", 0x0c00, 0x000400, CRC(67f9d05f) SHA1(1c441c775f2126861858c65c7634773a86f4fcc5) ) ROM_LOAD( "plus_p5.bin", 0x1000, 0x000400, CRC(d111b2c6) SHA1(c0182a4b163e4dbb67f1c98251b93fa878bff2e2) ) ROM_END GAMEL( 198?, j80bac, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Bank A Coin (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80bac ) GAMEL( 198?, j80bounc, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Bouncer (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80bounc ) GAMEL( 198?, j80frogh, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Frog Hop (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80frogh ) GAME( 198?, j80fruit, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Fruit Snappa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) GAMEL( 198?, j80golds, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Golden Steppa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80golds ) GAMEL( 198?, j80hotln, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Hot Lines (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80hotln ) GAMEL( 198?, j80myspn, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Mystery Spin (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80myspn ) GAMEL( 198?, j80nudg2, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Nudge Double Up MkII (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80nudg2 ) GAMEL( 198?, j80rr, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Road Runner (JPM) (SYSTEM80, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80rr ) // was also in a set named 'Route 66' with identical roms, but text in ROM indicates name is Road Runner, maybe a reskin? GAMEL( 198?, j80rra, j80rr, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Road Runner (JPM) (SYSTEM80, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80rr ) GAMEL( 198?, j80supst, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Supa Steppa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80supst ) GAMEL( 198?, j80supbk, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Superbank (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80supbk ) GAMEL( 198?, j80topsp, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Top Sprint (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80topsp ) GAME( 198?, j80topup, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Top Up (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 198?, j80tumbl, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Tumble (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) GAMEL( 198?, j80wsprt, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Winsprint (JPM) (V4, 5x20p) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) GAMEL( 198?, j80wsprt3, j80wsprt, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Winsprint (JPM) (V3, 50p, 5 credits) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) GAMEL( 198?, j80wsprt2, j80wsprt, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Winsprint (JPM) (V2, 10x10p) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) GAME( 198?, j80blbnk, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "PCP", "Blankity Bank (PCP) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) // these look like they're probably SYSTEM80, not 100% sure tho GAME( 198?, j80alad, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Aladdin's Cave (PCP)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 198?, j80fortr, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Fortune Trail (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 198?, j80mster, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Masterspy (Pcp)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 198?, j80plsnd, 0, jpms80,jpms80, jpms80_state, init_jpms80, ROT0, "JPM", "Plus Nudge (JPM)", MACHINE_IS_SKELETON_MECHANICAL )