diff options
Diffstat (limited to 'src/mame/drivers/hh_tms1k.cpp')
-rw-r--r-- | src/mame/drivers/hh_tms1k.cpp | 2764 |
1 files changed, 1401 insertions, 1363 deletions
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 710ae7de841..3a650e9cd06 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -69,7 +69,7 @@ *MP3232 TMS1000 1979, Fonas 2-Player Baseball (no "MP" on chip label) @MP3300 TMS1000 1979, Milton Bradley Simon (Rev F) @MP3301A TMS1000 1979, Milton Bradley Big Trak - *MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball + @MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball @MP3321A TMS1000 1979, Coleco Head to Head: Electronic Hockey *MP3352 TMS1200 1979, Tiger Sub Wars (model 7-490) @M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?) @@ -143,7 +143,6 @@ - finish bshipb SN76477 sound - improve elecbowl driver - is alphie(patent) the same as the final version? - - h2hhockey R9 timing is wrong: passing seems too slow, and in-game clock too fast ***************************************************************************/ @@ -199,6 +198,7 @@ #include "gjackpot.lh" #include "gpoker.lh" #include "h2hbaseb.lh" +#include "h2hbaskb.lh" #include "h2hboxing.lh" #include "h2hfootb.lh" #include "h2hhockey.lh" @@ -211,6 +211,7 @@ #include "merlin.lh" // clickable #include "mmerlin.lh" // clickable #include "monkeysee.lh" +#include "phpball.lh" #include "quizwizc.lh" #include "raisedvl.lh" #include "simon.lh" // clickable @@ -227,9 +228,9 @@ #include "tcfballa.lh" #include "timaze.lh" #include "xl25.lh" // clickable -#include "zodiac.lh" +#include "zodiac.lh" // clickable -#include "hh_tms1k_test.lh" // common test-layout - use external artwork +//#include "hh_tms1k_test.lh" // common test-layout - use external artwork // machine_start/reset @@ -393,6 +394,23 @@ u8 hh_tms1k_state::read_rotated_inputs(int columns, u8 rowmask) return ret; } +void hh_tms1k_state::switch_change(int sel, u32 mask, bool next) +{ + // config switches (for direct control) + ioport_field *inp = m_inp_matrix[sel]->field(mask); + + if (next && inp->has_next_setting()) + inp->select_next_setting(); + else if (!next && inp->has_previous_setting()) + inp->select_previous_setting(); +} + +INPUT_CHANGED_MEMBER(hh_tms1k_state::reset_button) +{ + // when an input is directly wired to MCU INIT pin + m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); +} + INPUT_CHANGED_MEMBER(hh_tms1k_state::power_button) { m_power_on = (bool)(uintptr_t)param; @@ -416,10 +434,12 @@ void hh_tms1k_state::power_off() /*************************************************************************** - Minidrivers (subclass, I/O, Inputs, Machine Config) + Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs) ***************************************************************************/ +namespace { + /*************************************************************************** A-One LSI Match Number @@ -440,8 +460,8 @@ void hh_tms1k_state::power_off() class matchnum_state : public hh_tms1k_state { public: - matchnum_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + matchnum_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -547,6 +567,18 @@ void matchnum_state::matchnum(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( matchnum ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0163", 0x0000, 0x0400, CRC(37507600) SHA1(b1d4d8ea563e97ef378b42c44cb3ea4eb6abe0d2) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_matchnum_output.pla", 0, 365, CRC(da29670c) SHA1(bcec28bf25dc8c81d08851ad8a3f4e89f413017a) ) +ROM_END + @@ -569,8 +601,8 @@ void matchnum_state::matchnum(machine_config &config) class arrball_state : public hh_tms1k_state { public: - arrball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + arrball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -647,6 +679,18 @@ void arrball_state::arrball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( arrball ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0166", 0x0000, 0x0400, CRC(a78694db) SHA1(362aa6e356288e8df7da610246bd01fe72985d57) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_arrball_output.pla", 0, 365, CRC(ffc206fb) SHA1(339be3f066fb2f075211c554e81260b49cd83d15) ) +ROM_END + @@ -677,8 +721,8 @@ void arrball_state::arrball(machine_config &config) class mathmagi_state : public hh_tms1k_state { public: - mathmagi_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + mathmagi_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -772,41 +816,13 @@ static INPUT_PORTS_START( mathmagi ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -// output PLA is not decapped +// output PLA is not decapped, this was made by hand static const u16 mathmagi_output_pla[0x20] = { - lA+lB+lC+lD+lE+lF, // 0 - lB+lC, // 1 - lA+lB+lG+lE+lD, // 2 - lA+lB+lG+lC+lD, // 3 - lF+lB+lG+lC, // 4 - lA+lF+lG+lC+lD, // 5 - lA+lF+lG+lC+lD+lE, // 6 - lA+lB+lC, // 7 - lA+lB+lC+lD+lE+lF+lG, // 8 - lA+lB+lG+lF+lC+lD, // 9 - lA+lB+lG+lE, // question mark - lE+lG, // r - lD, // underscore? - lA+lF+lG+lE+lD, // E - lG, // - - 0, // empty - 0, // empty - lG, // lamp 4 or MATH - - lD, // lamp 3 - lF+lE+lD+lC+lG, // b - lB, // lamp 2 - lB+lG, // MATH + - lB+lC, // MATH mul - lF+lG+lB+lC+lD, // y - lA, // lamp 1 - lA+lG, // MATH div - lA+lD, // EQUALS - 0, // ? - 0, // ? - lE+lD+lC+lG, // o - 0, // ? - lA+lF+lE+lD+lC // G + 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, // 0, 1, 2, 3, 4, 5, 6, 7 + 0x7f, 0x6f, 0x53, 0x50, 0x08, 0x79, 0x40, 0x00, // 8, 9, questionmark, r, underscore?, E, -(negative), empty + 0x00, 0x40, 0x08, 0x7c, 0x02, 0x42, 0x06, 0x6e, // empty, led4/-, led3, b, led2, +, ×, y + 0x01, 0x41, 0x09, 0, 0, 0x5c, 0, 0x3d // led1, ÷, =, ?, ?, o, ?, G }; void mathmagi_state::mathmagi(machine_config &config) @@ -824,6 +840,18 @@ void mathmagi_state::mathmagi(machine_config &config) /* no sound! */ } +// roms + +ROM_START( mathmagi ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_mathmagi_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -849,8 +877,8 @@ void mathmagi_state::mathmagi(machine_config &config) class bcheetah_state : public hh_tms1k_state { public: - bcheetah_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + bcheetah_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -928,6 +956,18 @@ void bcheetah_state::bcheetah(machine_config &config) /* no sound! */ } +// roms + +ROM_START( bcheetah ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0915", 0x0000, 0x0400, CRC(2968c81e) SHA1(d1e6691952600e88ccf626cb3d683419a1e8468c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_bcheetah_output.pla", 0, 365, CRC(cc6d1ecd) SHA1(b0635a841d8850c36c1f414abe0571b81884b972) ) +ROM_END + @@ -947,8 +987,8 @@ void bcheetah_state::bcheetah(machine_config &config) class amaztron_state : public hh_tms1k_state { public: - amaztron_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + amaztron_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1059,6 +1099,18 @@ void amaztron_state::amaztron(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( amaztron ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3405", 0x0000, 0x0800, CRC(9cbc0009) SHA1(17772681271b59280687492f37fa0859998f041d) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_amaztron_output.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) ) +ROM_END + @@ -1077,8 +1129,8 @@ void amaztron_state::amaztron(machine_config &config) class zodiac_state : public hh_tms1k_state { public: - zodiac_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + zodiac_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1113,7 +1165,7 @@ WRITE16_MEMBER(zodiac_state::write_r) WRITE16_MEMBER(zodiac_state::write_o) { // O0-O7: digit segment/led data - m_o = data; + m_o = bitswap<8>(data,0,7,6,5,4,3,2,1); prepare_display(); } @@ -1172,7 +1224,7 @@ static INPUT_PORTS_START( zodiac ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") PORT_CHAR(13) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8) PORT_START("IN.5") // R8 PORT_CONFNAME( 0x03, 0x01, "Mode") @@ -1182,41 +1234,11 @@ static INPUT_PORTS_START( zodiac ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -// output PLA is not decapped +// output PLA is not decapped, dumped electronically static const u16 zodiac_output_pla[0x20] = { - 0x80, // empty/led 1/7 - lC, // i/led 2/8 - lE+lG, // r/led 3/9 - lC+lE+lG, // n - lF, // seg F/led 4/10 - 0, // ? - 0, // ? - lC+lE+lF+lG, // h - lB, // seg B/led 5/11 - lD, // seg D/led 6/12 - 0, // ? - 0, // ? - 0, // ? - 0, // ? - lA+lB+lE+lF+lG, // P - 0, // ? - lA+lB+lC+lD+lE+lF, // 0 - lB+lC, // 1 - lA+lB+lD+lE+lG, // 2 - lA+lB+lC+lD+lG, // 3 - lB+lC+lF+lG, // 4 - lA+lC+lD+lF+lG, // 5 - lA+lC+lD+lE+lF+lG, // 6 - lA+lB+lC, // 7 - lA+lB+lC+lD+lE+lF+lG, // 8 - lA+lB+lC+lD+lF+lG, // 9 - lA+lB+lC+lE+lF+lG, // A - lB+lC+lD+lE+lG, // d - lA+lD+lE+lF+lG, // E - lB+lC+lD+lE, // J - lD+lE+lF, // L - lB+lC+lD+lE+lF // U + 0x01, 0x08, 0xa0, 0xa8, 0x40, 0x48, 0xe0, 0xe8, 0x06, 0x10, 0xa6, 0xb0, 0x46, 0x50, 0xe6, 0xf0, + 0x7e, 0x0c, 0xb6, 0x9e, 0xcc, 0xda, 0xfa, 0x0e, 0xfe, 0xce, 0xee, 0xbc, 0xf2, 0x3c, 0x70, 0x7c }; void zodiac_state::zodiac(machine_config &config) @@ -1237,6 +1259,18 @@ void zodiac_state::zodiac(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( zodiac ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3435", 0x0000, 0x0800, CRC(ecdc3160) SHA1(a7e82d66314a039fcffeddf99919d9f9ad42d61d) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_zodiac_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -1256,8 +1290,8 @@ void zodiac_state::zodiac(machine_config &config) class cqback_state : public hh_tms1k_state { public: - cqback_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cqback_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1352,6 +1386,18 @@ void cqback_state::cqback(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( cqback ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3415.u4", 0x0000, 0x0800, CRC(65ebdabf) SHA1(9b5cf5adaf9132ced87f611ae8c3148b9b62ba89) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_cqback_output.pla", 0, 365, CRC(c6dcbfd0) SHA1(593b6b7de981a28d1b4a33336b39df92d02ed4f4) ) +ROM_END + @@ -1374,8 +1420,8 @@ void cqback_state::cqback(machine_config &config) class h2hfootb_state : public hh_tms1k_state { public: - h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1470,51 +1516,81 @@ void h2hfootb_state::h2hfootb(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( h2hfootb ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3460.u3", 0x0000, 0x0800, CRC(3a4e53a8) SHA1(5052e706f992c6c4bada1fa7769589eec3df6471) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_h2hfootb_output.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) ) +ROM_END + /*************************************************************************** + Coleco Head to Head: Electronic Basketball (model 2150) + * TMS1000NLL MP3320A (die label 1000E MP3320A) + * 2-digit 7seg LED display, LED grid display, 1-bit sound + Coleco Head to Head: Electronic Hockey (model 2160) * TMS1000NLL E MP3321A (die label 1000E MP3321A) - * 2-digit 7seg LED display, LED grid display, 1-bit sound + * same PCB/hardware as above Unlike the COP420 version(see hh_cop400.cpp driver), each game has its own MCU. ***************************************************************************/ -class h2hhockey_state : public hh_tms1k_state +class h2hbaskb_state : public hh_tms1k_state { public: - h2hhockey_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + h2hbaskb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_cap_empty_timer(*this, "cap_empty") { } required_device<timer_device> m_cap_empty_timer; TIMER_DEVICE_CALLBACK_MEMBER(cap_empty_callback); - bool m_cap; + bool m_cap_state; + attotime m_cap_charge; void prepare_display(); DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); + void h2hbaskb(machine_config &config); void h2hhockey(machine_config &config); protected: virtual void machine_start() override; }; +void h2hbaskb_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill/register for savestates + m_cap_state = false; + m_cap_charge = attotime::zero; + + save_item(NAME(m_cap_state)); + save_item(NAME(m_cap_charge)); +} + // handlers -TIMER_DEVICE_CALLBACK_MEMBER(h2hhockey_state::cap_empty_callback) +TIMER_DEVICE_CALLBACK_MEMBER(h2hbaskb_state::cap_empty_callback) { if (~m_r & 0x200) - m_cap = false; + m_cap_state = false; } -void h2hhockey_state::prepare_display() +void h2hbaskb_state::prepare_display() { // R6,R7 are commons for R0-R5 u16 sel = 0; @@ -1525,7 +1601,7 @@ void h2hhockey_state::prepare_display() display_matrix(7, 6+6, m_o, sel); } -WRITE16_MEMBER(h2hhockey_state::write_r) +WRITE16_MEMBER(h2hbaskb_state::write_r) { // R0-R3: input mux m_inp_mux = (data & 0xf); @@ -1534,32 +1610,46 @@ WRITE16_MEMBER(h2hhockey_state::write_r) m_speaker->level_w(data >> 8 & 1); // R9: K8 and 15uF cap to V- (used as timer) - if (data & 0x200) - m_cap = true; - else if (m_r & 0x200) // falling edge - m_cap_empty_timer->adjust(attotime::from_msec(28)); // not accurate + // rising edge, remember the time + if (data & ~m_r & 0x200) + { + m_cap_state = true; + m_cap_charge = machine().time(); + } + // falling edge, determine how long K8 should stay up + if (~data & m_r & 0x200) + { + const attotime full = attotime::from_usec(1300); // approx. charge time + const int factor = 27; // approx. factor for charge/discharge to logic 0 + + attotime charge = machine().time() - m_cap_charge; + if (charge > full) + charge = full; + + m_cap_empty_timer->adjust(charge * factor); + } // R0-R7: led select m_r = data; prepare_display(); } -WRITE16_MEMBER(h2hhockey_state::write_o) +WRITE16_MEMBER(h2hbaskb_state::write_o) { // O1-O7: led data m_o = data >> 1 & 0x7f; prepare_display(); } -READ8_MEMBER(h2hhockey_state::read_k) +READ8_MEMBER(h2hbaskb_state::read_k) { // K1-K4: multiplexed inputs, K8: R9 and capacitor - return (read_inputs(4) & 7) | (m_cap ? 8 : 0); + return (read_inputs(4) & 7) | (m_cap_state ? 8 : 0); } // config -static INPUT_PORTS_START( h2hhockey ) +static INPUT_PORTS_START( h2hbaskb ) PORT_START("IN.0") // R0 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Pass CW") // clockwise PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("P1 Pass CCW") // counter-clockwise @@ -1580,32 +1670,31 @@ static INPUT_PORTS_START( h2hhockey ) PORT_CONFSETTING( 0x04, "2" ) PORT_START("IN.3") // R3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Left") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -void h2hhockey_state::machine_start() -{ - hh_tms1k_state::machine_start(); +static INPUT_PORTS_START( h2hhockey ) + PORT_INCLUDE( h2hbaskb ) - // zerofill/register for savestates - m_cap = false; - save_item(NAME(m_cap)); -} + PORT_MODIFY("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Left") +INPUT_PORTS_END -void h2hhockey_state::h2hhockey(machine_config &config) +void h2hbaskb_state::h2hbaskb(machine_config &config) { /* basic machine hardware */ TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=43K, C=100pF - m_maincpu->k().set(FUNC(h2hhockey_state::read_k)); - m_maincpu->r().set(FUNC(h2hhockey_state::write_r)); - m_maincpu->o().set(FUNC(h2hhockey_state::write_o)); + m_maincpu->k().set(FUNC(h2hbaskb_state::read_k)); + m_maincpu->r().set(FUNC(h2hbaskb_state::write_r)); + m_maincpu->o().set(FUNC(h2hbaskb_state::write_o)); - TIMER(config, "cap_empty").configure_generic(FUNC(h2hhockey_state::cap_empty_callback)); + TIMER(config, "cap_empty").configure_generic(FUNC(h2hbaskb_state::cap_empty_callback)); TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); - config.set_default_layout(layout_h2hhockey); + config.set_default_layout(layout_h2hbaskb); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1613,6 +1702,34 @@ void h2hhockey_state::h2hhockey(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +void h2hbaskb_state::h2hhockey(machine_config &config) +{ + h2hbaskb(config); + config.set_default_layout(layout_h2hhockey); +} + +// roms + +ROM_START( h2hbaskb ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3320a", 0x0000, 0x0400, CRC(39a63f43) SHA1(14a765e42a39f8d3a465c990e09dd651e595a1c5) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_h2hbaskb_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) ) +ROM_END + +ROM_START( h2hhockey ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3321a", 0x0000, 0x0400, CRC(e974e604) SHA1(ed740c98ce96ad70ee5237eccae1f54a75ad8100) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_h2hhockey_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) ) +ROM_END + @@ -1633,8 +1750,8 @@ void h2hhockey_state::h2hhockey(machine_config &config) class h2hbaseb_state : public hh_tms1k_state { public: - h2hbaseb_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + h2hbaseb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1643,15 +1760,28 @@ public: DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void h2hbaseb(machine_config &config); protected: virtual void machine_reset() override; }; +void h2hbaseb_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void h2hbaseb_state::set_clock() +{ + // MCU clock is from an RC circuit with C=47pF, and R value is depending on + // skill switch: R=51K(1) or 43K(2) + m_maincpu->set_unscaled_clock((m_inp_matrix[5]->read() & 1) ? 400000 : 350000); +} + void h2hbaseb_state::prepare_display() { set_display_segmask(0x1ff, 0x7f); @@ -1717,24 +1847,6 @@ static INPUT_PORTS_START( h2hbaseb ) PORT_CONFSETTING( 0x01, "2" ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(h2hbaseb_state::skill_switch) -{ - set_clock(); -} - -void h2hbaseb_state::set_clock() -{ - // MCU clock is from an RC circuit with C=47pF, and R value is depending on - // skill switch: R=51K(1) or 43K(2) - m_maincpu->set_unscaled_clock((m_inp_matrix[5]->read() & 1) ? 400000 : 350000); -} - -void h2hbaseb_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} - void h2hbaseb_state::h2hbaseb(machine_config &config) { /* basic machine hardware */ @@ -1752,6 +1864,18 @@ void h2hbaseb_state::h2hbaseb(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( h2hbaseb ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) ) +ROM_END + @@ -1769,8 +1893,8 @@ void h2hbaseb_state::h2hbaseb(machine_config &config) class h2hboxing_state : public hh_tms1k_state { public: - h2hboxing_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + h2hboxing_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -1864,6 +1988,18 @@ void h2hboxing_state::h2hboxing(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( h2hboxing ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "m34018", 0x0000, 0x0800, CRC(e26a11a3) SHA1(aa2735088d709fa8d9188c4fb7982a53e3a8c1bc) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_h2hboxing_output.pla", 0, 365, CRC(ffb0e63d) SHA1(31ee3f779270a23f05f9ad508283d2569ef069f1) ) +ROM_END + @@ -1896,8 +2032,8 @@ void h2hboxing_state::h2hboxing(machine_config &config) class quizwizc_state : public hh_tms1k_state { public: - quizwizc_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + quizwizc_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_pinout(0) { } @@ -1914,6 +2050,14 @@ protected: virtual void machine_start() override; }; +void quizwizc_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // register for savestates + save_item(NAME(m_pinout)); +} + // handlers DEVICE_IMAGE_LOAD_MEMBER(quizwizc_state, cartridge) @@ -2010,14 +2154,6 @@ static INPUT_PORTS_START( quizwizc ) PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -void quizwizc_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // register for savestates - save_item(NAME(m_pinout)); -} - void quizwizc_state::quizwizc(machine_config &config) { /* basic machine hardware */ @@ -2041,6 +2177,18 @@ void quizwizc_state::quizwizc(machine_config &config) SOFTWARE_LIST(config, "cart_list").set_original("quizwiz"); } +// roms + +ROM_START( quizwizc ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "m32001", 0x0000, 0x0400, CRC(053657eb) SHA1(38c84f7416f79aa679f434a3d35df54cd9aa528a) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_quizwizc_output.pla", 0, 365, CRC(475b7053) SHA1(8f61bf736eb41d7029a6b165cc0a184ba0a70a2a) ) +ROM_END + @@ -2073,8 +2221,8 @@ void quizwizc_state::quizwizc(machine_config &config) class tc4_state : public hh_tms1k_state { public: - tc4_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + tc4_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_pinout(0) { } @@ -2091,6 +2239,14 @@ protected: virtual void machine_start() override; }; +void tc4_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // register for savestates + save_item(NAME(m_pinout)); +} + // handlers DEVICE_IMAGE_LOAD_MEMBER(tc4_state, cartridge) @@ -2186,14 +2342,6 @@ static INPUT_PORTS_START( tc4 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 D/K Button") INPUT_PORTS_END -void tc4_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // register for savestates - save_item(NAME(m_pinout)); -} - void tc4_state::tc4(machine_config &config) { /* basic machine hardware */ @@ -2218,6 +2366,18 @@ void tc4_state::tc4(machine_config &config) SOFTWARE_LIST(config, "cart_list").set_original("tc4"); } +// roms + +ROM_START( tc4 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_tc4_output.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) ) +ROM_END + @@ -2241,8 +2401,8 @@ void tc4_state::tc4(machine_config &config) class cnbaskb_state : public hh_tms1k_state { public: - cnbaskb_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cnbaskb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -2327,6 +2487,18 @@ void cnbaskb_state::cnbaskb(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( cnbaskb ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0907", 0x0000, 0x0400, CRC(35f84f0f) SHA1(744ca60bb853a2785184042e747530a9e02488f8) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_cnbaskb_output.pla", 0, 365, CRC(b4e28956) SHA1(8356112da71b351420a88d7e394e7d03e429368c) ) +ROM_END + @@ -2352,8 +2524,8 @@ void cnbaskb_state::cnbaskb(machine_config &config) class cmsport_state : public hh_tms1k_state { public: - cmsport_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cmsport_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -2440,6 +2612,18 @@ void cmsport_state::cmsport(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( cmsport ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0168.u1", 0x0000, 0x0400, CRC(0712a268) SHA1(bd4e23e5c17b28c52e7e769e44773cc9c8839bed) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_cmsport_output.pla", 0, 365, CRC(7defa140) SHA1(477e3cb55e79938d6acaa911e410f6dcb974c218) ) +ROM_END + @@ -2467,8 +2651,8 @@ void cmsport_state::cmsport(machine_config &config) class cnfball_state : public hh_tms1k_state { public: - cnfball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cnfball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -2567,6 +2751,18 @@ void cnfball_state::cnfball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( cnfball ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0170", 0x0000, 0x0400, CRC(50e8a44f) SHA1(fea6ae03c4ef329d825f8688e6854df15023d47e) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_cnfball_output.pla", 0, 365, CRC(0af52f64) SHA1(b4cf450e4d895eddb67448aa69e4f18a5a84e033) ) +ROM_END + @@ -2588,8 +2784,8 @@ void cnfball_state::cnfball(machine_config &config) class cnfball2_state : public hh_tms1k_state { public: - cnfball2_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cnfball2_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -2670,7 +2866,7 @@ static const u16 cnfball2_output_pla[0x20] = // first half was dumped electronically 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, 0x01, 0x08, 0x02, 0x04, 0x00, - // rest is unknown + // rest is unused, game only outputs with status bit clear 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -2693,6 +2889,18 @@ void cnfball2_state::cnfball2(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( cnfball2 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1181", 0x0000, 0x0800, CRC(4553a840) SHA1(2e1132c9bc51641f77ba7f2430b5a3b2766b3a3d) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_cnfball2_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -2716,16 +2924,14 @@ void cnfball2_state::cnfball2(machine_config &config) class eleciq_state : public hh_tms1k_state { public: - eleciq_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + eleciq_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); - - DECLARE_INPUT_CHANGED_MEMBER(reset_button); void eleciq(machine_config &config); }; @@ -2808,15 +3014,9 @@ static INPUT_PORTS_START( eleciq ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("RESET") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, eleciq_state, reset_button, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, reset_button, nullptr) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(eleciq_state::reset_button) -{ - // reset button is directly wired to TMS1000 INIT pin - m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); -} - void eleciq_state::eleciq(machine_config &config) { /* basic machine hardware */ @@ -2834,6 +3034,18 @@ void eleciq_state::eleciq(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( eleciq ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0908", 0x0000, 0x0400, CRC(db59b82c) SHA1(c9a6bcba208969560495ad9f8775f53de16a69c3) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_eleciq_output.pla", 0, 365, CRC(b8e04232) SHA1(22eed6d9b1fb1e5c9974ea3df16cda71a39aad57) ) +ROM_END + @@ -2853,8 +3065,8 @@ void eleciq_state::eleciq(machine_config &config) class esoccer_state : public hh_tms1k_state { public: - esoccer_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + esoccer_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -2939,6 +3151,18 @@ void esoccer_state::esoccer(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( esoccer ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0158.ic1", 0x0000, 0x0400, CRC(ae4581ea) SHA1(5f6881f8247094abf8cffb17f6e6586e94cff38c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_esoccer_output.pla", 0, 365, CRC(c6eeabbd) SHA1(99d07902126b5a1c1abf43340f30d3390da5fa92) ) +ROM_END + @@ -2977,8 +3201,8 @@ void esoccer_state::esoccer(machine_config &config) class ebball_state : public hh_tms1k_state { public: - ebball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ebball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3073,6 +3297,18 @@ void ebball_state::ebball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ebball ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0914", 0x0000, 0x0400, CRC(3c6fb05b) SHA1(b2fe4b3ca72d6b4c9bfa84d67f64afdc215e7178) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_ebball_output.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) ) +ROM_END + @@ -3107,8 +3343,8 @@ void ebball_state::ebball(machine_config &config) class ebball2_state : public hh_tms1k_state { public: - ebball2_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ebball2_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3196,6 +3432,18 @@ void ebball2_state::ebball2(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ebball2 ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0923", 0x0000, 0x0400, CRC(077acfe2) SHA1(a294ce7614b2cdb01c754a7a50d60d807e3f0939) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_ebball2_output.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) ) +ROM_END + @@ -3235,8 +3483,8 @@ void ebball2_state::ebball2(machine_config &config) class ebball3_state : public hh_tms1k_state { public: - ebball3_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ebball3_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3245,15 +3493,29 @@ public: DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void ebball3(machine_config &config); protected: virtual void machine_reset() override; }; +void ebball3_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void ebball3_state::set_clock() +{ + // MCU clock is from an RC circuit(R=47K, C=33pF) oscillating by default at ~340kHz, + // but on PRO, the difficulty switch adds an extra 150K resistor to Vdd to speed + // it up to around ~440kHz. + m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 440000 : 340000); +} + void ebball3_state::prepare_display() { // update current state @@ -3340,25 +3602,6 @@ static INPUT_PORTS_START( ebball3 ) PORT_CONFSETTING( 0x01, "Professional" ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(ebball3_state::skill_switch) -{ - set_clock(); -} - -void ebball3_state::set_clock() -{ - // MCU clock is from an RC circuit(R=47K, C=33pF) oscillating by default at ~340kHz, - // but on PRO, the difficulty switch adds an extra 150K resistor to Vdd to speed - // it up to around ~440kHz. - m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 440000 : 340000); -} - -void ebball3_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} - void ebball3_state::ebball3(machine_config &config) { /* basic machine hardware */ @@ -3376,6 +3619,18 @@ void ebball3_state::ebball3(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ebball3 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "6007_mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_ebball3_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) ) +ROM_END + @@ -3406,8 +3661,8 @@ void ebball3_state::ebball3(machine_config &config) class esbattle_state : public hh_tms1k_state { public: - esbattle_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + esbattle_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3487,6 +3742,18 @@ void esbattle_state::esbattle(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( esbattle ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "en-6004_mp0920", 0x0000, 0x0400, CRC(7460c179) SHA1(be855054b4a98b05b34fd931d5c247c5c0f9b036) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_esbattle_output.pla", 0, 365, CRC(861b45a2) SHA1(a5a9dc9bef8adb761845ad548058b55e970517d3) ) +ROM_END + @@ -3506,8 +3773,8 @@ void esbattle_state::esbattle(machine_config &config) class einvader_state : public hh_tms1k_state { public: - einvader_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + einvader_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3515,15 +3782,29 @@ public: DECLARE_WRITE16_MEMBER(write_o); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void einvader(machine_config &config); protected: virtual void machine_reset() override; }; +void einvader_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void einvader_state::set_clock() +{ + // MCU clock is from an RC circuit(R=47K, C=56pF) oscillating by default at ~320kHz, + // but on PRO, the difficulty switch adds an extra 180K resistor to Vdd to speed + // it up to around ~400kHz. + m_maincpu->set_unscaled_clock((m_inp_matrix[0]->read() & 8) ? 400000 : 320000); +} + void einvader_state::prepare_display() { // R7-R9 are 7segs @@ -3560,25 +3841,6 @@ static INPUT_PORTS_START( einvader ) PORT_CONFSETTING( 0x08, "Professional" ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(einvader_state::skill_switch) -{ - set_clock(); -} - -void einvader_state::set_clock() -{ - // MCU clock is from an RC circuit(R=47K, C=56pF) oscillating by default at ~320kHz, - // but on PRO, the difficulty switch adds an extra 180K resistor to Vdd to speed - // it up to around ~400kHz. - m_maincpu->set_unscaled_clock((m_inp_matrix[0]->read() & 8) ? 400000 : 320000); -} - -void einvader_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} - void einvader_state::einvader(machine_config &config) { /* basic machine hardware */ @@ -3592,7 +3854,8 @@ void einvader_state::einvader(machine_config &config) screen.set_svg_region("svg"); screen.set_refresh_hz(50); screen.set_size(939, 1080); - screen.set_visarea(0, 939-1, 0, 1080-1); + screen.set_visarea_full(); + TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_einvader); @@ -3602,6 +3865,21 @@ void einvader_state::einvader(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( einvader ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1211", 0x0000, 0x0800, CRC(b6efbe8e) SHA1(d7d54921dab22bb0c2956c896a5d5b56b6f64969) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_einvader_output.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) ) + + ROM_REGION( 44398, "svg", 0) + ROM_LOAD( "einvader.svg", 0, 44398, CRC(48de88fd) SHA1(56a2b9c997a447277b45902ab542eda54e7d5a2f) ) +ROM_END + @@ -3617,8 +3895,8 @@ void einvader_state::einvader(machine_config &config) class efootb4_state : public hh_tms1k_state { public: - efootb4_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + efootb4_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3717,6 +3995,18 @@ void efootb4_state::efootb4(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( efootb4 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "6009_mp7551", 0x0000, 0x1000, CRC(54fa7244) SHA1(4d16bd825c4a2db76ca8a263c373ade15c20e270) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_efootb4_output.pla", 0, 557, CRC(5c87c753) SHA1(bde9d4aa1e57a718affd969475c0a1edcf60f444) ) +ROM_END + @@ -3744,8 +4034,8 @@ void efootb4_state::efootb4(machine_config &config) class ebaskb2_state : public hh_tms1k_state { public: - ebaskb2_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ebaskb2_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3838,6 +4128,18 @@ void ebaskb2_state::ebaskb2(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ebaskb2 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "6010_mp1218", 0x0000, 0x0800, CRC(0089ede8) SHA1(c8a79d5aca7e37b637a4d152150acba9f41aad96) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_ebaskb2_output.pla", 0, 365, CRC(c18103ae) SHA1(5a9bb8e1d95a9f6919b05ff9471fa0a8014b8b81) ) +ROM_END + @@ -3868,8 +4170,8 @@ void ebaskb2_state::ebaskb2(machine_config &config) class raisedvl_state : public hh_tms1k_state { public: - raisedvl_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + raisedvl_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -3878,15 +4180,32 @@ public: DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void raisedvl(machine_config &config); protected: virtual void machine_reset() override; }; +void raisedvl_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void raisedvl_state::set_clock() +{ + // MCU clock is from an RC circuit with C=47pF, R=47K by default. Skills + // 2 and 3 add a 150K resistor in parallel, and skill 4 adds a 100K one. + // 0: R=47K -> ~350kHz + // 2,3: R=35K8 -> ~425kHz (combined) + // 4: R=32K -> ~465kHz (combined) + u8 inp = m_inp_matrix[1]->read(); + m_maincpu->set_unscaled_clock((inp & 0x20) ? 465000 : ((inp & 0x10) ? 425000 : 350000)); +} + void raisedvl_state::prepare_display() { // R0-R2 are 7segs @@ -3938,28 +4257,6 @@ static INPUT_PORTS_START( raisedvl ) PORT_CONFSETTING( 0x21, "4" ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(raisedvl_state::skill_switch) -{ - set_clock(); -} - -void raisedvl_state::set_clock() -{ - // MCU clock is from an RC circuit with C=47pF, R=47K by default. Skills - // 2 and 3 add a 150K resistor in parallel, and skill 4 adds a 100K one. - // 0: R=47K -> ~350kHz - // 2,3: R=35K8 -> ~425kHz (combined) - // 4: R=32K -> ~465kHz (combined) - u8 inp = m_inp_matrix[1]->read(); - m_maincpu->set_unscaled_clock((inp & 0x20) ? 465000 : ((inp & 0x10) ? 425000 : 350000)); -} - -void raisedvl_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} - void raisedvl_state::raisedvl(machine_config &config) { /* basic machine hardware */ @@ -3977,6 +4274,18 @@ void raisedvl_state::raisedvl(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( raisedvl ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1221", 0x0000, 0x0800, CRC(782791cc) SHA1(214249406fcaf44efc6350022bd534e59ec69c88) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_raisedvl_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) ) +ROM_END + @@ -4010,16 +4319,14 @@ void raisedvl_state::raisedvl(machine_config &config) class f2pbball_state : public hh_tms1k_state { public: - f2pbball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + f2pbball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); - - DECLARE_INPUT_CHANGED_MEMBER(reset_button); void f2pbball(machine_config &config); }; @@ -4082,15 +4389,9 @@ static INPUT_PORTS_START( f2pbball ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL PORT_NAME("P2 Fast") PORT_START("RESET") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, f2pbball_state, reset_button, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, reset_button, nullptr) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(f2pbball_state::reset_button) -{ - // reset button is directly wired to TMS1000 INIT pin - m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); -} - void f2pbball_state::f2pbball(machine_config &config) { /* basic machine hardware */ @@ -4108,6 +4409,18 @@ void f2pbball_state::f2pbball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( f2pbball ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0154", 0x0000, 0x0400, CRC(c5b45ace) SHA1(b2de32e83ab447b22d6828f0081843f364040b01) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_f2pbball_output.pla", 0, 365, CRC(30c2f28f) SHA1(db969b22475f37f083c3594f5e4f5759048377b8) ) +ROM_END + @@ -4127,8 +4440,8 @@ void f2pbball_state::f2pbball(machine_config &config) class f3in1_state : public hh_tms1k_state { public: - f3in1_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + f3in1_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -4137,15 +4450,27 @@ public: DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void f3in1(machine_config &config); protected: virtual void machine_reset() override; }; +void f3in1_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void f3in1_state::set_clock() +{ + // MCU clock is from an RC circuit where C=47pF, R=39K(PROF) or 56K(REG) + m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 400000 : 300000); +} + void f3in1_state::prepare_display() { // R6-R9 are 7segs @@ -4211,23 +4536,6 @@ static INPUT_PORTS_START( f3in1 ) PORT_CONFSETTING( 0x01, "Professional" ) // PROF INPUT_PORTS_END -INPUT_CHANGED_MEMBER(f3in1_state::skill_switch) -{ - set_clock(); -} - -void f3in1_state::set_clock() -{ - // MCU clock is from an RC circuit where C=47pF, R=39K(PROF) or 56K(REG) - m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 400000 : 300000); -} - -void f3in1_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} - void f3in1_state::f3in1(machine_config &config) { /* basic machine hardware */ @@ -4245,6 +4553,18 @@ void f3in1_state::f3in1(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( f3in1 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) ) +ROM_END + @@ -4265,8 +4585,8 @@ void f3in1_state::f3in1(machine_config &config) class gpoker_state : public hh_tms1k_state { public: - gpoker_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + gpoker_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_beeper(*this, "beeper") { } @@ -4282,6 +4602,12 @@ protected: virtual void machine_reset() override; }; +void gpoker_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + m_beeper->set_state(0); +} + // handlers void gpoker_state::prepare_display() @@ -4347,7 +4673,7 @@ static INPUT_PORTS_START( gpoker ) PORT_START("IN.3") // R3 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_D) PORT_NAME("9/Deal") // DL, shares pad with 9 + PORT_BIT( 0x02, 0x02, IPT_CUSTOM ) PORT_CONDITION("FAKE", 0x03, NOTEQUALS, 0x00) // 9/DL PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear Entry") // CE @@ -4365,13 +4691,11 @@ static INPUT_PORTS_START( gpoker ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Total") // T PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Bet") // BT -INPUT_PORTS_END -void gpoker_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - m_beeper->set_state(0); -} + PORT_START("FAKE") // 9/DL are electronically the same button + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Deal") // DL +INPUT_PORTS_END void gpoker_state::gpoker(machine_config &config) { @@ -4390,6 +4714,18 @@ void gpoker_state::gpoker(machine_config &config) m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( gpoker ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_gpoker_output.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) ) +ROM_END + @@ -4410,8 +4746,8 @@ void gpoker_state::gpoker(machine_config &config) class gjackpot_state : public gpoker_state { public: - gjackpot_state(const machine_config &mconfig, device_type type, const char *tag) - : gpoker_state(mconfig, type, tag) + gjackpot_state(const machine_config &mconfig, device_type type, const char *tag) : + gpoker_state(mconfig, type, tag) { } virtual DECLARE_WRITE16_MEMBER(write_r) override; @@ -4440,7 +4776,7 @@ WRITE16_MEMBER(gjackpot_state::write_r) DB] SP] [1] [2] [3] [DS] [DR] BT] HT] - [10/1] [T] [MD [CH [AC] + [10/0] [T] [MD [CH [AC] GO] ST] */ @@ -4503,6 +4839,18 @@ void gjackpot_state::gjackpot(machine_config &config) m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( gjackpot ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mpf553", 0x0000, 0x1000, CRC(f45fd008) SHA1(8d5d6407a8a031a833ceedfb931f5c9d2725ecd0) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_gjackpot_output.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) ) +ROM_END + @@ -4524,8 +4872,8 @@ void gjackpot_state::gjackpot(machine_config &config) class ginv1000_state : public hh_tms1k_state { public: - ginv1000_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ginv1000_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -4604,7 +4952,8 @@ void ginv1000_state::ginv1000(machine_config &config) screen.set_svg_region("svg"); screen.set_refresh_hz(50); screen.set_size(226, 1080); - screen.set_visarea(0, 226-1, 0, 1080-1); + screen.set_visarea_full(); + TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); /* sound hardware */ @@ -4613,6 +4962,21 @@ void ginv1000_state::ginv1000(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ginv1000 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp2139", 0x0000, 0x0800, CRC(036eab37) SHA1(0795878ad89296f7a6a0314c6e4db23c1cc3673e) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_ginv1000_output.pla", 0, 365, CRC(b0a5dc41) SHA1(d94746ec48661998173e7f60ccc7c96e56b3484e) ) + + ROM_REGION( 226185, "svg", 0) + ROM_LOAD( "ginv1000.svg", 0, 226185, CRC(1e1bafd1) SHA1(15868ef0c9dadbf537fed0e2d846451ba99fab7b) ) +ROM_END + @@ -4634,8 +4998,8 @@ void ginv1000_state::ginv1000(machine_config &config) class ginv2000_state : public hh_tms1k_state { public: - ginv2000_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + ginv2000_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_expander(*this, "expander") { } @@ -4652,6 +5016,12 @@ protected: virtual void machine_reset() override; }; +void ginv2000_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + m_expander->write_ms(1); // Vss +} + // handlers void ginv2000_state::prepare_display() @@ -4715,12 +5085,6 @@ static INPUT_PORTS_START( ginv2000 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) INPUT_PORTS_END -void ginv2000_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - m_expander->write_ms(1); // Vss -} - void ginv2000_state::ginv2000(machine_config &config) { /* basic machine hardware */ @@ -4740,7 +5104,8 @@ void ginv2000_state::ginv2000(machine_config &config) screen.set_svg_region("svg"); screen.set_refresh_hz(50); screen.set_size(364, 1080); - screen.set_visarea(0, 364-1, 0, 1080-1); + screen.set_visarea_full(); + TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); /* sound hardware */ @@ -4749,6 +5114,21 @@ void ginv2000_state::ginv2000(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ginv2000 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) ) + + ROM_REGION( 374443, "svg", 0) + ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) ) +ROM_END + @@ -4774,8 +5154,8 @@ void ginv2000_state::ginv2000(machine_config &config) class fxmcr165_state : public hh_tms1k_state { public: - fxmcr165_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + fxmcr165_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -4887,6 +5267,18 @@ void fxmcr165_state::fxmcr165(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( fxmcr165 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_fxmcr165_output.pla", 0, 365, CRC(ce656866) SHA1(40e1614f5afcc7572fda596e1be453d54e95af0c) ) +ROM_END + @@ -4909,8 +5301,8 @@ void fxmcr165_state::fxmcr165(machine_config &config) class elecdet_state : public hh_tms1k_state { public: - elecdet_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + elecdet_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -4989,11 +5381,11 @@ static INPUT_PORTS_START( elecdet ) // note: even though power buttons are on the matrix, they are not CPU-controlled PORT_START("IN.4") // Vss! - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("End Turn") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false) INPUT_PORTS_END static const s16 elecdet_speaker_levels[4] = { 0, 0x3fff, 0x3fff, 0x7fff }; @@ -5017,6 +5409,22 @@ void elecdet_state::elecdet(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( elecdet ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp6100a", 0x0000, 0x1000, CRC(9522fb2d) SHA1(240bdb44b7d67d3b13ebf75851635ac4b4ca2bfd) ) + + ROM_REGION( 1246, "maincpu:ipla", 0 ) + ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) + ROM_REGION( 1982, "maincpu:mpla", 0 ) + ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) + ROM_REGION( 352, "maincpu:opla", 0 ) + ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) ) + ROM_REGION( 157, "maincpu:spla", 0 ) + ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) +ROM_END + @@ -5036,8 +5444,8 @@ void elecdet_state::elecdet(machine_config &config) class starwbc_state : public hh_tms1k_state { public: - starwbc_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + starwbc_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -5143,6 +5551,28 @@ void starwbc_state::starwbc(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( starwbc ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3438a", 0x0000, 0x0800, CRC(c12b7069) SHA1(d1f39c69a543c128023ba11cc6228bacdfab04de) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) ) +ROM_END + +ROM_START( starwbcp ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "us4270755", 0x0000, 0x0800, BAD_DUMP CRC(fb3332f2) SHA1(a79ac81e239983cd699b7cfcc55f89b203b2c9ec) ) // from patent US4270755, may have errors + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) ) +ROM_END + @@ -5161,8 +5591,8 @@ void starwbc_state::starwbc(machine_config &config) class astro_state : public hh_tms1k_state { public: - astro_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + astro_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -5267,6 +5697,18 @@ void astro_state::astro(machine_config &config) /* no sound! */ } +// roms + +ROM_START( astro ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp1133", 0x0000, 0x1000, CRC(bc21109c) SHA1(05a433cce587d5c0c2d28b5fda5f0853ea6726bf) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_astro_output.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) ) +ROM_END + @@ -5300,8 +5742,8 @@ void astro_state::astro(machine_config &config) class elecbowl_state : public hh_tms1k_state { public: - elecbowl_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + elecbowl_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -5399,23 +5841,13 @@ static INPUT_PORTS_START( elecbowl ) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) // 2 players sw? INPUT_PORTS_END -// output PLA is not decapped +// output PLA is not decapped, this was made by hand static const u16 elecbowl_output_pla[0x20] = { - lA+lB+lC+lD+lE+lF, // 0 - lB+lC, // 1 - lA+lB+lG+lE+lD, // 2 - lA+lB+lG+lC+lD, // 3 - lF+lB+lG+lC, // 4 - lA+lF+lG+lC+lD, // 5 - lA+lF+lG+lC+lD+lE, // 6 - lA+lB+lC, // 7 - lA+lB+lC+lD+lE+lF+lG, // 8 - lA+lB+lG+lF+lC+lD, // 9 - - 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0,1,2,3,4,5,6,7, // lamp muxes select - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f + 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // 0-9 + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, // ? + 0, 1, 2, 3, 4, 5, 6, 7, // lamp muxes select + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f // ? }; void elecbowl_state::elecbowl(machine_config &config) @@ -5436,6 +5868,18 @@ void elecbowl_state::elecbowl(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( elecbowl ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -5460,8 +5904,8 @@ void elecbowl_state::elecbowl(machine_config &config) class horseran_state : public hh_tms1k_state { public: - horseran_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + horseran_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_lcd(*this, "lcd") { } @@ -5498,9 +5942,9 @@ WRITE16_MEMBER(horseran_state::write_r) // R0: HLCD0569 clock // R1: HLCD0569 data in // R2: HLCD0569 _CS - m_lcd->write_cs(data >> 2 & 1); - m_lcd->write_data(data >> 1 & 1); - m_lcd->write_clock(data & 1); + m_lcd->cs_w(data >> 2 & 1); + m_lcd->data_w(data >> 1 & 1); + m_lcd->clock_w(data & 1); // R3-R10: input mux m_inp_mux = data >> 3 & 0xff; @@ -5591,6 +6035,18 @@ void horseran_state::horseran(machine_config &config) /* no sound! */ } +// roms + +ROM_START( horseran ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3491", 0x0000, 0x0800, CRC(a0081671) SHA1(a5a07b502c69d429e5bcd1d313e86b6ee057cda6) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) // unused + ROM_LOAD( "tms1100_horseran_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) ) +ROM_END + @@ -5609,8 +6065,8 @@ void horseran_state::horseran(machine_config &config) class mdndclab_state : public hh_tms1k_state { public: - mdndclab_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + mdndclab_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -5771,6 +6227,18 @@ void mdndclab_state::mdndclab(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( mdndclab ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_mdndclab_output.pla", 0, 365, CRC(592b40ba) SHA1(63a2531278a665ace54c541101e052eb84413511) ) +ROM_END + @@ -5796,8 +6264,8 @@ void mdndclab_state::mdndclab(machine_config &config) class comp4_state : public hh_tms1k_state { public: - comp4_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + comp4_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -5872,6 +6340,22 @@ void comp4_state::comp4(machine_config &config) /* no sound! */ } +// roms + +ROM_START( comp4 ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) ) + + ROM_REGION( 782, "maincpu:ipla", 0 ) + ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) ) + ROM_REGION( 860, "maincpu:mpla", 0 ) + ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) ) + ROM_REGION( 352, "maincpu:opla", 0 ) + ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) ) + ROM_REGION( 157, "maincpu:spla", 0 ) + ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) ) +ROM_END + @@ -5900,8 +6384,8 @@ void comp4_state::comp4(machine_config &config) class bship_state : public hh_tms1k_state { public: - bship_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + bship_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -6023,6 +6507,18 @@ void bship_state::bship(machine_config &config) // TODO } +// roms + +ROM_START( bship ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3201", 0x0000, 0x0400, CRC(bf6104a6) SHA1(8d28b43a2aa39dcbbe71f669cdafc518715812c9) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_bship_output.pla", 0, 365, CRC(ea0570b0) SHA1(6eb803b40717486d7b24939985f245327ac8a7e9) ) +ROM_END + @@ -6042,8 +6538,8 @@ void bship_state::bship(machine_config &config) class bshipb_state : public hh_tms1k_state { public: - bshipb_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + bshipb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_sn(*this, "sn76477") { } @@ -6141,6 +6637,18 @@ void bshipb_state::bshipb(machine_config &config) m_sn->add_route(ALL_OUTPUTS, "mono", 0.35); } +// roms + +ROM_START( bshipb ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3208", 0x0000, 0x0400, CRC(982fa720) SHA1(1c6dbbe7b9e55d62a510225a88cd2de55fe9b181) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_bshipb_output.pla", 0, 365, BAD_DUMP CRC(74a9a244) SHA1(479c1f1e37cf8f75352e10226b20322906bee813) ) // part of decap photo was obscured +ROM_END + @@ -6164,8 +6672,8 @@ void bshipb_state::bshipb(machine_config &config) class simon_state : public hh_tms1k_state { public: - simon_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + simon_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -6227,6 +6735,12 @@ static INPUT_PORTS_START( simon ) PORT_CONFSETTING( 0x04, "2" ) PORT_CONFSETTING( 0x08, "3" ) PORT_CONFSETTING( 0x01, "4" ) + + PORT_START("SWITCH") // fake + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<0>, 0x07) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<0>, 0x07) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f) INPUT_PORTS_END void simon_state::simon(machine_config &config) @@ -6245,6 +6759,28 @@ void simon_state::simon(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( simon ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) + ROM_REGION( 365, "maincpu:opla", 0 ) // unused + ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) +ROM_END + +ROM_START( simonf ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3300", 0x0000, 0x0400, CRC(b9fcf93a) SHA1(45960e4242a08495f2a99fc5d44728eabd93cd9f) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) + ROM_REGION( 365, "maincpu:opla", 0 ) // unused + ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) +ROM_END + @@ -6263,23 +6799,39 @@ void simon_state::simon(machine_config &config) class ssimon_state : public hh_tms1k_state { public: - ssimon_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ssimon_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(speed_switch); + DECLARE_INPUT_CHANGED_MEMBER(speed_switch) { set_clock(); } void ssimon(machine_config &config); protected: virtual void machine_reset() override; }; +void ssimon_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); +} + // handlers +void ssimon_state::set_clock() +{ + // MCU clock is from an RC circuit with C=100pF, R=x depending on speed switch: + // 0 Simple: R=51K -> ~200kHz + // 1 Normal: R=37K -> ~275kHz + // 2 Super: R=22K -> ~400kHz + u8 inp = m_inp_matrix[6]->read(); + m_maincpu->set_unscaled_clock((inp & 2) ? 400000 : ((inp & 1) ? 275000 : 200000)); +} + WRITE16_MEMBER(ssimon_state::write_r) { // R0-R3,R9,R10: input mux @@ -6347,28 +6899,15 @@ static INPUT_PORTS_START( ssimon ) PORT_CONFSETTING( 0x00, "Simple" ) PORT_CONFSETTING( 0x01, "Normal" ) PORT_CONFSETTING( 0x02, "Super" ) -INPUT_PORTS_END -INPUT_CHANGED_MEMBER(ssimon_state::speed_switch) -{ - set_clock(); -} - -void ssimon_state::set_clock() -{ - // MCU clock is from an RC circuit with C=100pF, R=x depending on speed switch: - // 0 Simple: R=51K -> ~200kHz - // 1 Normal: R=37K -> ~275kHz - // 2 Super: R=22K -> ~400kHz - u8 inp = m_inp_matrix[6]->read(); - m_maincpu->set_unscaled_clock((inp & 2) ? 400000 : ((inp & 1) ? 275000 : 200000)); -} - -void ssimon_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); -} + PORT_START("SWITCH") // fake + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<0>, 0x0f) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<0>, 0x0f) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<4>, 0x0f) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<4>, 0x0f) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<6>, 0x03) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<6>, 0x03) +INPUT_PORTS_END void ssimon_state::ssimon(machine_config &config) { @@ -6386,6 +6925,18 @@ void ssimon_state::ssimon(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ssimon ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3476", 0x0000, 0x0800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) // unused + ROM_LOAD( "tms1100_ssimon_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) ) +ROM_END + @@ -6410,8 +6961,8 @@ void ssimon_state::ssimon(machine_config &config) class bigtrak_state : public hh_tms1k_state { public: - bigtrak_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + bigtrak_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -6427,6 +6978,15 @@ protected: virtual void machine_start() override; }; +void bigtrak_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill/register for savestates + m_gearbox_pos = 0; + save_item(NAME(m_gearbox_pos)); +} + // handlers TIMER_DEVICE_CALLBACK_MEMBER(bigtrak_state::gearbox_sim_tick) @@ -6539,15 +7099,6 @@ static INPUT_PORTS_START( bigtrak ) PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -void bigtrak_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // zerofill/register for savestates - m_gearbox_pos = 0; - save_item(NAME(m_gearbox_pos)); -} - static const s16 bigtrak_speaker_levels[8] = { 0, 0x7fff/3, 0x7fff/3, 0x7fff/3*2, 0x7fff/3, 0x7fff/3*2, 0x7fff/3*2, 0x7fff }; void bigtrak_state::bigtrak(machine_config &config) @@ -6569,6 +7120,18 @@ void bigtrak_state::bigtrak(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( bigtrak ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) ) +ROM_END + @@ -6595,8 +7158,8 @@ void bigtrak_state::bigtrak(machine_config &config) class mbdtower_state : public hh_tms1k_state { public: - mbdtower_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + mbdtower_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -6619,6 +7182,25 @@ protected: virtual void machine_start() override; }; +void mbdtower_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill + m_motor_pos = 0; + m_motor_pos_prev = -1; + m_motor_decay = 0; + m_motor_on = false; + m_sensor_blind = false; + + // register for savestates + save_item(NAME(m_motor_pos)); + /* save_item(NAME(m_motor_pos_prev)); */ // don't save! + save_item(NAME(m_motor_decay)); + save_item(NAME(m_motor_on)); + save_item(NAME(m_sensor_blind)); +} + // handlers TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick) @@ -6764,25 +7346,6 @@ static INPUT_PORTS_START( mbdtower ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Tomb/Ruin") INPUT_PORTS_END -void mbdtower_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // zerofill - m_motor_pos = 0; - m_motor_pos_prev = -1; - m_motor_decay = 0; - m_motor_on = false; - m_sensor_blind = false; - - // register for savestates - save_item(NAME(m_motor_pos)); - /* save_item(NAME(m_motor_pos_prev)); */ // don't save! - save_item(NAME(m_motor_decay)); - save_item(NAME(m_motor_on)); - save_item(NAME(m_sensor_blind)); -} - void mbdtower_state::mbdtower(machine_config &config) { /* basic machine hardware */ @@ -6801,6 +7364,18 @@ void mbdtower_state::mbdtower(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( mbdtower ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) ) +ROM_END + @@ -6819,8 +7394,8 @@ void mbdtower_state::mbdtower(machine_config &config) class arcmania_state : public hh_tms1k_state { public: - arcmania_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + arcmania_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -6886,9 +7461,9 @@ static INPUT_PORTS_START( arcmania ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.2") // O6 (also O5 to power) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Orange Button 1") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Orange Button 2") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Orange Button 3") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Orange Button 1") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Orange Button 2") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Orange Button 3") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -6912,6 +7487,18 @@ void arcmania_state::arcmania(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( arcmania ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "m34078a", 0x0000, 0x0800, CRC(90ea0087) SHA1(9780c9c1ba89300b1bbe72c47e5fec68d8bb6a77) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_arcmania_output.pla", 0, 365, CRC(a1517b15) SHA1(72eedd7fd41de9c9102219f325fe8668a7c02663) ) +ROM_END + @@ -6931,8 +7518,8 @@ void arcmania_state::arcmania(machine_config &config) class cnsector_state : public hh_tms1k_state { public: - cnsector_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + cnsector_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -7027,6 +7614,22 @@ void cnsector_state::cnsector(machine_config &config) /* no sound! */ } +// roms + +ROM_START( cnsector ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) ) + + ROM_REGION( 782, "maincpu:ipla", 0 ) + ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) ) + ROM_REGION( 860, "maincpu:mpla", 0 ) + ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) ) + ROM_REGION( 352, "maincpu:opla", 0 ) + ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) ) + ROM_REGION( 157, "maincpu:spla", 0 ) + ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) ) +ROM_END + @@ -7056,8 +7659,8 @@ void cnsector_state::cnsector(machine_config &config) class merlin_state : public hh_tms1k_state { public: - merlin_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + merlin_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } virtual DECLARE_WRITE16_MEMBER(write_r); @@ -7145,6 +7748,18 @@ void merlin_state::merlin(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( merlin ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3404", 0x0000, 0x0800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_merlin_output.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) ) +ROM_END + @@ -7174,8 +7789,8 @@ void merlin_state::merlin(machine_config &config) class mmerlin_state : public merlin_state { public: - mmerlin_state(const machine_config &mconfig, device_type type, const char *tag) - : merlin_state(mconfig, type, tag) + mmerlin_state(const machine_config &mconfig, device_type type, const char *tag) : + merlin_state(mconfig, type, tag) { } void mmerlin(machine_config &config); @@ -7210,6 +7825,18 @@ void mmerlin_state::mmerlin(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( mmerlin ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7351", 0x0000, 0x1000, CRC(0f7a4c83) SHA1(242c1278ddfe92c28fd7cd87300e48e7a4827831) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_mmerlin_output.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) ) +ROM_END + @@ -7230,8 +7857,8 @@ void mmerlin_state::mmerlin(machine_config &config) class stopthief_state : public hh_tms1k_state { public: - stopthief_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + stopthief_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -7299,11 +7926,11 @@ static INPUT_PORTS_START( stopthief ) // note: even though power buttons are on the matrix, they are not CPU-controlled PORT_START("IN.2") // Vss! - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Tip") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Arrest") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Clue") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false) INPUT_PORTS_END static const s16 stopthief_speaker_levels[7] = { 0, 0x7fff/6, 0x7fff/5, 0x7fff/4, 0x7fff/3, 0x7fff/2, 0x7fff }; @@ -7327,6 +7954,36 @@ void stopthief_state::stopthief(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( stopthief ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(b9c9d64a) SHA1(481f8653064c142fe5d9314b750bcd73797b92b2) ) + + ROM_REGION( 1246, "maincpu:ipla", 0 ) + ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) + ROM_REGION( 1982, "maincpu:mpla", 0 ) + ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) + ROM_REGION( 352, "maincpu:opla", 0 ) + ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) ) + ROM_REGION( 157, "maincpu:spla", 0 ) + ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) +ROM_END + +ROM_START( stopthiefp ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums) + + ROM_REGION( 1246, "maincpu:ipla", 0 ) + ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) + ROM_REGION( 1982, "maincpu:mpla", 0 ) + ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) + ROM_REGION( 352, "maincpu:opla", 0 ) + ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) ) + ROM_REGION( 157, "maincpu:spla", 0 ) + ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) +ROM_END + @@ -7350,8 +8007,8 @@ void stopthief_state::stopthief(machine_config &config) class bankshot_state : public hh_tms1k_state { public: - bankshot_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + bankshot_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -7439,6 +8096,18 @@ void bankshot_state::bankshot(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( bankshot ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_bankshot_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) ) +ROM_END + @@ -7478,8 +8147,8 @@ void bankshot_state::bankshot(machine_config &config) class splitsec_state : public hh_tms1k_state { public: - splitsec_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + splitsec_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -7556,6 +8225,18 @@ void splitsec_state::splitsec(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( splitsec ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_splitsec_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) ) +ROM_END + @@ -7574,8 +8255,8 @@ void splitsec_state::splitsec(machine_config &config) class lostreas_state : public hh_tms1k_state { public: - lostreas_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + lostreas_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -7675,6 +8356,18 @@ void lostreas_state::lostreas(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( lostreas ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "m34038", 0x0000, 0x0800, CRC(4c996f63) SHA1(ebbaa8b2f909f4300887aa2dbdb7185eedc75d3f) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_lostreas_output.pla", 0, 365, CRC(c62d850f) SHA1(d25974e6901eb10c52cdda12e6d4a13e26745e6f) ) +ROM_END + @@ -7701,12 +8394,10 @@ void lostreas_state::lostreas(machine_config &config) class alphie_state : public hh_tms1k_state { public: - alphie_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + alphie_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } - TIMER_DEVICE_CALLBACK_MEMBER(show_arm_position); - DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); @@ -7715,13 +8406,6 @@ public: // handlers -TIMER_DEVICE_CALLBACK_MEMBER(alphie_state::show_arm_position) -{ - // arm position 1(up) to 5(down) - output().set_value("q_pos", 32 - count_leading_zeros(m_inp_matrix[1]->read())); - output().set_value("a_pos", 32 - count_leading_zeros(m_inp_matrix[2]->read())); -} - WRITE16_MEMBER(alphie_state::write_r) { // R1-R5, input mux (using d5 for Vss) @@ -7751,17 +8435,25 @@ READ8_MEMBER(alphie_state::read_k) // config -static const ioport_value alphie_armpos_table[5] = { 0x01, 0x02, 0x04, 0x08, 0x10 }; - static INPUT_PORTS_START( alphie ) PORT_START("IN.0") // K1 - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) PORT_START("IN.1") // K2 - PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_PLAYER(2) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Question Arm") + PORT_CONFNAME( 0x1f, 0x01, "Question" ) + PORT_CONFSETTING( 0x01, "1" ) + PORT_CONFSETTING( 0x02, "2" ) + PORT_CONFSETTING( 0x04, "3" ) + PORT_CONFSETTING( 0x08, "4" ) + PORT_CONFSETTING( 0x10, "5" ) PORT_START("IN.2") // K4 - PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Answer Arm") + PORT_CONFNAME( 0x1f, 0x01, "Answer" ) + PORT_CONFSETTING( 0x01, "1" ) + PORT_CONFSETTING( 0x02, "2" ) + PORT_CONFSETTING( 0x04, "3" ) + PORT_CONFSETTING( 0x08, "4" ) + PORT_CONFSETTING( 0x10, "5" ) PORT_START("IN.3") // K8 PORT_CONFNAME( 0x0f, 0x01, "Activity" ) @@ -7769,6 +8461,14 @@ static INPUT_PORTS_START( alphie ) PORT_CONFSETTING( 0x02, "Lunar Landing" ) PORT_CONFSETTING( 0x04, "Robot Land" ) PORT_CONFSETTING( 0x08, "Tunes" ) + + PORT_START("SWITCH") // fake + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<1>, 0x1f) PORT_NAME("Question Arm Up") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<1>, 0x1f) PORT_NAME("Question Arm Down") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<2>, 0x1f) PORT_NAME("Answer Arm Up") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<2>, 0x1f) PORT_NAME("Answer Arm Down") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f) PORT_NAME("Activity Selector Left") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f) PORT_NAME("Activity Selector Right") INPUT_PORTS_END // output PLA is guessed @@ -7787,7 +8487,6 @@ void alphie_state::alphie(machine_config &config) m_maincpu->r().set(FUNC(alphie_state::write_r)); m_maincpu->o().set(FUNC(alphie_state::write_o)); - TIMER(config, "arm_position").configure_periodic(FUNC(alphie_state::show_arm_position), attotime::from_msec(50)); TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_alphie); @@ -7797,6 +8496,18 @@ void alphie_state::alphie(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( alphie ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "us4280809", 0x0000, 0x0400, CRC(f8f14013) SHA1(bf31b929fcbcb189bbe4623104e1da0a639b5954) ) // from patent US4280809, should be good + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent description + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_alphie_output.pla", 0, 365, NO_DUMP ) // " +ROM_END + @@ -7816,8 +8527,8 @@ void alphie_state::alphie(machine_config &config) class tcfball_state : public hh_tms1k_state { public: - tcfball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + tcfball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -7906,6 +8617,18 @@ void tcfball_state::tcfball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( tcfball ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_tcfball_output.pla", 0, 365, CRC(26b2996e) SHA1(df0e706c552bf74123aa65e71b0c9b4d33cddb2b) ) +ROM_END + @@ -7928,8 +8651,8 @@ void tcfball_state::tcfball(machine_config &config) class tcfballa_state : public tcfball_state { public: - tcfballa_state(const machine_config &mconfig, device_type type, const char *tag) - : tcfball_state(mconfig, type, tag) + tcfballa_state(const machine_config &mconfig, device_type type, const char *tag) : + tcfball_state(mconfig, type, tag) { } void tcfballa(machine_config &config); @@ -7972,6 +8695,18 @@ void tcfballa_state::tcfballa(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( tcfballa ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1183", 0x0000, 0x0800, CRC(2a4db1d5) SHA1(5df15d1115bb425578ad522d607a582dd478f35c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_tcfballa_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -8006,8 +8741,8 @@ void tcfballa_state::tcfballa(machine_config &config) class tandy12_state : public hh_tms1k_state { public: - tandy12_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + tandy12_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -8105,7 +8840,7 @@ static INPUT_PORTS_START( tandy12 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Button 5") INPUT_PORTS_END -// output PLA is not decapped +// output PLA is not decapped, this was made by hand static const u16 tandy12_output_pla[0x20] = { // these are certain @@ -8136,6 +8871,18 @@ void tandy12_state::tandy12(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( tandy12 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_tandy12_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -8159,8 +8906,8 @@ void tandy12_state::tandy12(machine_config &config) class monkeysee_state : public hh_tms1k_state { public: - monkeysee_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + monkeysee_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -8244,6 +8991,18 @@ void monkeysee_state::monkeysee(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( monkeysee ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0271", 0x0000, 0x0400, CRC(acab0f05) SHA1(226f7688caf4a94a88241d3b61ddc4254e4a918c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_monkeysee_micro.pla", 0, 867, CRC(368d878f) SHA1(956e700a04f453c1610cfdb974fce898ba4cf01f) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_monkeysee_output.pla", 0, 365, CRC(8a010e89) SHA1(3ffbabc5d6c9b34cc06d290817d15b2be42d8b17) ) +ROM_END + @@ -8264,8 +9023,8 @@ void monkeysee_state::monkeysee(machine_config &config) class speechp_state : public hh_tms1k_state { public: - speechp_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + speechp_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_speech(*this, "speech") { } @@ -8393,6 +9152,21 @@ void speechp_state::speechp(machine_config &config) m_speech->add_route(ALL_OUTPUTS, "mono", 0.75); } +// roms + +ROM_START( speechp ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "tms1007nl", 0x0000, 0x0400, CRC(c2669d5c) SHA1(7943d6f39508a9a82bc21e4fe34a5b9f86e3add2) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_speechp_output.pla", 0, 365, CRC(e1b4197f) SHA1(258f4276a9f15c9bfbfa58df2f7202aed1542fdc) ) + + ROM_REGION( 0x0800, "speech", 0 ) + ROM_LOAD("s14007-a", 0x0000, 0x0800, CRC(543b46d4) SHA1(99daf7fe3354c378b4bd883840c9bbd22b22ebe7) ) +ROM_END + @@ -8417,8 +9191,8 @@ void speechp_state::speechp(machine_config &config) class timaze_state : public hh_tms1k_state { public: - timaze_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + timaze_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -8472,6 +9246,18 @@ void timaze_state::timaze(machine_config &config) /* no sound! */ } +// roms + +ROM_START( timaze ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "gb2040172a", 0x0000, 0x0400, CRC(0bab4dc6) SHA1(c9d40649fbb27a8b7cf7460d66c7e217b63376f0) ) // from patent GB2040172A, verified with source code + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent, use default one + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_timaze_output.pla", 0, 365, BAD_DUMP CRC(f0f36970) SHA1(a6ad1f5e804ac98e5e1a1d07466b3db3a8d6c256) ) // described in patent, but unsure about pin order +ROM_END + @@ -8493,8 +9279,8 @@ void timaze_state::timaze(machine_config &config) class copycat_state : public hh_tms1k_state { public: - copycat_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + copycat_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -8578,6 +9364,18 @@ void copycat_state::copycat(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( copycat ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0919", 0x0000, 0x0400, CRC(92a21299) SHA1(16daadb8dbf53aaab8a71833017b4a578d035d6d) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_copycat_output.pla", 0, 365, CRC(b1d0c96d) SHA1(ac1a003eab3f69e09e9050cb24ea17211e0523fe) ) +ROM_END + @@ -8603,8 +9401,8 @@ void copycat_state::copycat(machine_config &config) class copycatm2_state : public hh_tms1k_state { public: - copycatm2_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + copycatm2_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -8654,6 +9452,18 @@ void copycatm2_state::copycatm2(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( copycatm2 ) + ROM_REGION( 0x0200, "maincpu", 0 ) + ROM_LOAD( "mp3005n", 0x0000, 0x0200, CRC(a87649cb) SHA1(14ef7967a80578885f0b905772c3bb417b5b3255) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_copycatm2_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_copycatm2_output.pla", 0, 365, CRC(d1999aaf) SHA1(0c27789b349e491d5230f9c75c4741e621f5a14e) ) +ROM_END + @@ -8674,8 +9484,8 @@ void copycatm2_state::copycatm2(machine_config &config) class ditto_state : public hh_tms1k_state { public: - ditto_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ditto_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } DECLARE_WRITE16_MEMBER(write_r); @@ -8725,6 +9535,18 @@ void ditto_state::ditto(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ditto ) + ROM_REGION( 0x0200, "maincpu", 0 ) + ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) ) +ROM_END + @@ -8748,8 +9570,8 @@ void ditto_state::ditto(machine_config &config) class ss7in1_state : public hh_tms1k_state { public: - ss7in1_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ss7in1_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -8840,6 +9662,18 @@ void ss7in1_state::ss7in1(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( 7in1ss ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) ) +ROM_END + @@ -8882,8 +9716,8 @@ void ss7in1_state::ss7in1(machine_config &config) class tbreakup_state : public hh_tms1k_state { public: - tbreakup_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag), + tbreakup_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), m_expander(*this, "expander") { } @@ -8897,7 +9731,7 @@ public: DECLARE_READ8_MEMBER(read_k); void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void tbreakup(machine_config &config); protected: @@ -8905,8 +9739,30 @@ protected: virtual void machine_start() override; }; +void tbreakup_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill/register for savestates + memset(m_exp_port, 0, sizeof(m_exp_port)); + save_item(NAME(m_exp_port)); +} + +void tbreakup_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + set_clock(); + m_expander->write_ms(1); // Vss +} + // handlers +void tbreakup_state::set_clock() +{ + // MCU clock is from an analog circuit with resistor of 73K, PRO2 adds 100K + m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 500000 : 325000); +} + void tbreakup_state::prepare_display() { // 7seg leds from R0,R1 and O0-O6 @@ -8989,33 +9845,6 @@ static INPUT_PORTS_START( tbreakup ) PORT_CONFSETTING( 0x01, "Pro 2" ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(tbreakup_state::skill_switch) -{ - set_clock(); -} - -void tbreakup_state::set_clock() -{ - // MCU clock is from an analog circuit with resistor of 73K, PRO2 adds 100K - m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 500000 : 325000); -} - -void tbreakup_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - set_clock(); - m_expander->write_ms(1); // Vss -} - -void tbreakup_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // zerofill/register for savestates - memset(m_exp_port, 0, sizeof(m_exp_port)); - save_item(NAME(m_exp_port)); -} - void tbreakup_state::tbreakup(machine_config &config) { /* basic machine hardware */ @@ -9042,6 +9871,18 @@ void tbreakup_state::tbreakup(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( tbreakup ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_tbreakup_output.pla", 0, 365, CRC(a1ea035e) SHA1(fcf0b57ed90b41441a8974223a697f530daac0ab) ) +ROM_END + @@ -9078,8 +9919,8 @@ void tbreakup_state::tbreakup(machine_config &config) class phpball_state : public hh_tms1k_state { public: - phpball_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + phpball_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -9087,7 +9928,7 @@ public: DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); - DECLARE_INPUT_CHANGED_MEMBER(flipper_button); + DECLARE_INPUT_CHANGED_MEMBER(flipper_button) { prepare_display(); } void phpball(machine_config &config); }; @@ -9144,11 +9985,6 @@ static INPUT_PORTS_START( phpball ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Left Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, phpball_state, flipper_button, nullptr) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(phpball_state::flipper_button) -{ - prepare_display(); -} - void phpball_state::phpball(machine_config &config) { /* basic machine hardware */ @@ -9158,7 +9994,7 @@ void phpball_state::phpball(machine_config &config) m_maincpu->o().set(FUNC(phpball_state::write_o)); TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1)); - config.set_default_layout(layout_hh_tms1k_test); + config.set_default_layout(layout_phpball); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -9166,6 +10002,18 @@ void phpball_state::phpball(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( phpball ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1180", 0x0000, 0x0800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_phpball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) ) +ROM_END + @@ -9186,8 +10034,8 @@ void phpball_state::phpball(machine_config &config) class ssports4_state : public hh_tms1k_state { public: - ssports4_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + ssports4_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void prepare_display(); @@ -9302,6 +10150,18 @@ void ssports4_state::ssports4(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } +// roms + +ROM_START( ssports4 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1219", 0x0000, 0x0800, CRC(865c06d6) SHA1(12a625a13bdb57b82b35c42b175d38756a1e2e04) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_ssports4_output.pla", 0, 365, NO_DUMP ) +ROM_END + @@ -9320,12 +10180,12 @@ void ssports4_state::ssports4(machine_config &config) class xl25_state : public hh_tms1k_state { public: - xl25_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) + xl25_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) { } void update_halt(); - DECLARE_INPUT_CHANGED_MEMBER(k4_button); + DECLARE_INPUT_CHANGED_MEMBER(k4_button) { update_halt(); } void prepare_display(); DECLARE_WRITE16_MEMBER(write_r); @@ -9337,13 +10197,19 @@ protected: virtual void machine_reset() override; }; +void xl25_state::machine_reset() +{ + hh_tms1k_state::machine_reset(); + update_halt(); +} + // handlers void xl25_state::update_halt() { // O5+K4 go to HALT pin (used when pressing store/recall button) bool halt = !((m_o & 0x20) || (read_k(machine().dummy_space(), 0) & 4)); - m_maincpu->set_input_line(TMS1XXX_INPUT_LINE_HALT, halt ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_HALT, halt ? ASSERT_LINE : CLEAR_LINE); } void xl25_state::prepare_display() @@ -9443,17 +10309,6 @@ static INPUT_PORTS_START( xl25 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(xl25_state::k4_button) -{ - update_halt(); -} - -void xl25_state::machine_reset() -{ - hh_tms1k_state::machine_reset(); - update_halt(); -} - void xl25_state::xl25(machine_config &config) { /* basic machine hardware */ @@ -9471,833 +10326,7 @@ void xl25_state::xl25(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); } - - - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( matchnum ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0163", 0x0000, 0x0400, CRC(37507600) SHA1(b1d4d8ea563e97ef378b42c44cb3ea4eb6abe0d2) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_matchnum_output.pla", 0, 365, CRC(da29670c) SHA1(bcec28bf25dc8c81d08851ad8a3f4e89f413017a) ) -ROM_END - - -ROM_START( arrball ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0166", 0x0000, 0x0400, CRC(a78694db) SHA1(362aa6e356288e8df7da610246bd01fe72985d57) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_arrball_output.pla", 0, 365, CRC(ffc206fb) SHA1(339be3f066fb2f075211c554e81260b49cd83d15) ) -ROM_END - - -ROM_START( mathmagi ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_mathmagi_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( bcheetah ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0915", 0x0000, 0x0400, CRC(2968c81e) SHA1(d1e6691952600e88ccf626cb3d683419a1e8468c) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_bcheetah_output.pla", 0, 365, CRC(cc6d1ecd) SHA1(b0635a841d8850c36c1f414abe0571b81884b972) ) -ROM_END - - -ROM_START( amaztron ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3405", 0x0000, 0x0800, CRC(9cbc0009) SHA1(17772681271b59280687492f37fa0859998f041d) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_amaztron_output.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) ) -ROM_END - - -ROM_START( zodiac ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3435", 0x0000, 0x0800, CRC(ecdc3160) SHA1(a7e82d66314a039fcffeddf99919d9f9ad42d61d) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_zodiac_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( cqback ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3415.u4", 0x0000, 0x0800, CRC(65ebdabf) SHA1(9b5cf5adaf9132ced87f611ae8c3148b9b62ba89) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_cqback_output.pla", 0, 365, CRC(c6dcbfd0) SHA1(593b6b7de981a28d1b4a33336b39df92d02ed4f4) ) -ROM_END - - -ROM_START( h2hfootb ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3460.u3", 0x0000, 0x0800, CRC(3a4e53a8) SHA1(5052e706f992c6c4bada1fa7769589eec3df6471) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_h2hfootb_output.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) ) -ROM_END - - -ROM_START( h2hhockey ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp3321a", 0x0000, 0x0400, CRC(e974e604) SHA1(ed740c98ce96ad70ee5237eccae1f54a75ad8100) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_h2hhockey_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) ) -ROM_END - - -ROM_START( h2hbaseb ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) ) -ROM_END - - -ROM_START( h2hboxing ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "m34018", 0x0000, 0x0800, CRC(e26a11a3) SHA1(aa2735088d709fa8d9188c4fb7982a53e3a8c1bc) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_h2hboxing_output.pla", 0, 365, CRC(ffb0e63d) SHA1(31ee3f779270a23f05f9ad508283d2569ef069f1) ) -ROM_END - - -ROM_START( quizwizc ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "m32001", 0x0000, 0x0400, CRC(053657eb) SHA1(38c84f7416f79aa679f434a3d35df54cd9aa528a) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_quizwizc_output.pla", 0, 365, CRC(475b7053) SHA1(8f61bf736eb41d7029a6b165cc0a184ba0a70a2a) ) -ROM_END - - -ROM_START( tc4 ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_tc4_output.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) ) -ROM_END - - -ROM_START( cnbaskb ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0907", 0x0000, 0x0400, CRC(35f84f0f) SHA1(744ca60bb853a2785184042e747530a9e02488f8) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_cnbaskb_output.pla", 0, 365, CRC(b4e28956) SHA1(8356112da71b351420a88d7e394e7d03e429368c) ) -ROM_END - - -ROM_START( cmsport ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0168.u1", 0x0000, 0x0400, CRC(0712a268) SHA1(bd4e23e5c17b28c52e7e769e44773cc9c8839bed) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_cmsport_output.pla", 0, 365, CRC(7defa140) SHA1(477e3cb55e79938d6acaa911e410f6dcb974c218) ) -ROM_END - - -ROM_START( cnfball ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0170", 0x0000, 0x0400, CRC(50e8a44f) SHA1(fea6ae03c4ef329d825f8688e6854df15023d47e) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_cnfball_output.pla", 0, 365, CRC(0af52f64) SHA1(b4cf450e4d895eddb67448aa69e4f18a5a84e033) ) -ROM_END - - -ROM_START( cnfball2 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1181", 0x0000, 0x0800, CRC(4553a840) SHA1(2e1132c9bc51641f77ba7f2430b5a3b2766b3a3d) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_cnfball2_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( eleciq ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0908", 0x0000, 0x0400, CRC(db59b82c) SHA1(c9a6bcba208969560495ad9f8775f53de16a69c3) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_eleciq_output.pla", 0, 365, CRC(b8e04232) SHA1(22eed6d9b1fb1e5c9974ea3df16cda71a39aad57) ) -ROM_END - - -ROM_START( esoccer ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0158.ic1", 0x0000, 0x0400, CRC(ae4581ea) SHA1(5f6881f8247094abf8cffb17f6e6586e94cff38c) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_esoccer_output.pla", 0, 365, CRC(c6eeabbd) SHA1(99d07902126b5a1c1abf43340f30d3390da5fa92) ) -ROM_END - - -ROM_START( ebball ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0914", 0x0000, 0x0400, CRC(3c6fb05b) SHA1(b2fe4b3ca72d6b4c9bfa84d67f64afdc215e7178) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_ebball_output.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) ) -ROM_END - - -ROM_START( ebball2 ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0923", 0x0000, 0x0400, CRC(077acfe2) SHA1(a294ce7614b2cdb01c754a7a50d60d807e3f0939) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_ebball2_output.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) ) -ROM_END - - -ROM_START( ebball3 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "6007_mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_ebball3_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) ) -ROM_END - - -ROM_START( esbattle ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "en-6004_mp0920", 0x0000, 0x0400, CRC(7460c179) SHA1(be855054b4a98b05b34fd931d5c247c5c0f9b036) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_esbattle_output.pla", 0, 365, CRC(861b45a2) SHA1(a5a9dc9bef8adb761845ad548058b55e970517d3) ) -ROM_END - - -ROM_START( einvader ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1211", 0x0000, 0x0800, CRC(b6efbe8e) SHA1(d7d54921dab22bb0c2956c896a5d5b56b6f64969) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_einvader_output.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) ) - - ROM_REGION( 44398, "svg", 0) - ROM_LOAD( "einvader.svg", 0, 44398, CRC(48de88fd) SHA1(56a2b9c997a447277b45902ab542eda54e7d5a2f) ) -ROM_END - - -ROM_START( efootb4 ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "6009_mp7551", 0x0000, 0x1000, CRC(54fa7244) SHA1(4d16bd825c4a2db76ca8a263c373ade15c20e270) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_efootb4_output.pla", 0, 557, CRC(5c87c753) SHA1(bde9d4aa1e57a718affd969475c0a1edcf60f444) ) -ROM_END - - -ROM_START( ebaskb2 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "6010_mp1218", 0x0000, 0x0800, CRC(0089ede8) SHA1(c8a79d5aca7e37b637a4d152150acba9f41aad96) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_ebaskb2_output.pla", 0, 365, CRC(c18103ae) SHA1(5a9bb8e1d95a9f6919b05ff9471fa0a8014b8b81) ) -ROM_END - - -ROM_START( raisedvl ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1221", 0x0000, 0x0800, CRC(782791cc) SHA1(214249406fcaf44efc6350022bd534e59ec69c88) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_raisedvl_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) ) -ROM_END - - -ROM_START( f2pbball ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0154", 0x0000, 0x0400, CRC(c5b45ace) SHA1(b2de32e83ab447b22d6828f0081843f364040b01) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_f2pbball_output.pla", 0, 365, CRC(30c2f28f) SHA1(db969b22475f37f083c3594f5e4f5759048377b8) ) -ROM_END - - -ROM_START( f3in1 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) ) -ROM_END - - -ROM_START( gpoker ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_gpoker_output.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) ) -ROM_END - - -ROM_START( gjackpot ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mpf553", 0x0000, 0x1000, CRC(f45fd008) SHA1(8d5d6407a8a031a833ceedfb931f5c9d2725ecd0) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_gjackpot_output.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) ) -ROM_END - - -ROM_START( ginv1000 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp2139", 0x0000, 0x0800, CRC(036eab37) SHA1(0795878ad89296f7a6a0314c6e4db23c1cc3673e) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_ginv1000_output.pla", 0, 365, CRC(b0a5dc41) SHA1(d94746ec48661998173e7f60ccc7c96e56b3484e) ) - - ROM_REGION( 226185, "svg", 0) - ROM_LOAD( "ginv1000.svg", 0, 226185, CRC(1e1bafd1) SHA1(15868ef0c9dadbf537fed0e2d846451ba99fab7b) ) -ROM_END - - -ROM_START( ginv2000 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) ) - - ROM_REGION( 374443, "svg", 0) - ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) ) -ROM_END - - -ROM_START( fxmcr165 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_fxmcr165_output.pla", 0, 365, CRC(ce656866) SHA1(40e1614f5afcc7572fda596e1be453d54e95af0c) ) -ROM_END - - -ROM_START( elecdet ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp6100a", 0x0000, 0x1000, CRC(9522fb2d) SHA1(240bdb44b7d67d3b13ebf75851635ac4b4ca2bfd) ) - - ROM_REGION( 1246, "maincpu:ipla", 0 ) - ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) - ROM_REGION( 1982, "maincpu:mpla", 0 ) - ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) - ROM_REGION( 352, "maincpu:opla", 0 ) - ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) ) - ROM_REGION( 157, "maincpu:spla", 0 ) - ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) -ROM_END - - -ROM_START( starwbc ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3438a", 0x0000, 0x0800, CRC(c12b7069) SHA1(d1f39c69a543c128023ba11cc6228bacdfab04de) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) ) -ROM_END - -ROM_START( starwbcp ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "us4270755", 0x0000, 0x0800, BAD_DUMP CRC(fb3332f2) SHA1(a79ac81e239983cd699b7cfcc55f89b203b2c9ec) ) // from patent US4270755, may have errors - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) ) -ROM_END - - -ROM_START( astro ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp1133", 0x0000, 0x1000, CRC(bc21109c) SHA1(05a433cce587d5c0c2d28b5fda5f0853ea6726bf) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_astro_output.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) ) -ROM_END - - -ROM_START( elecbowl ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( horseran ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3491", 0x0000, 0x0800, CRC(a0081671) SHA1(a5a07b502c69d429e5bcd1d313e86b6ee057cda6) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) // unused - ROM_LOAD( "tms1100_horseran_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) ) -ROM_END - - -ROM_START( mdndclab ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_mdndclab_output.pla", 0, 365, CRC(592b40ba) SHA1(63a2531278a665ace54c541101e052eb84413511) ) -ROM_END - - -ROM_START( comp4 ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) ) - - ROM_REGION( 782, "maincpu:ipla", 0 ) - ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) ) - ROM_REGION( 860, "maincpu:mpla", 0 ) - ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) ) - ROM_REGION( 352, "maincpu:opla", 0 ) - ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) ) - ROM_REGION( 157, "maincpu:spla", 0 ) - ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) ) -ROM_END - - -ROM_START( bship ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp3201", 0x0000, 0x0400, CRC(bf6104a6) SHA1(8d28b43a2aa39dcbbe71f669cdafc518715812c9) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_bship_output.pla", 0, 365, CRC(ea0570b0) SHA1(6eb803b40717486d7b24939985f245327ac8a7e9) ) -ROM_END - -ROM_START( bshipb ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp3208", 0x0000, 0x0400, CRC(982fa720) SHA1(1c6dbbe7b9e55d62a510225a88cd2de55fe9b181) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_bshipb_output.pla", 0, 365, BAD_DUMP CRC(74a9a244) SHA1(479c1f1e37cf8f75352e10226b20322906bee813) ) // part of decap photo was obscured -ROM_END - - -ROM_START( simon ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) - ROM_REGION( 365, "maincpu:opla", 0 ) // unused - ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) -ROM_END - -ROM_START( simonf ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp3300", 0x0000, 0x0400, CRC(b9fcf93a) SHA1(45960e4242a08495f2a99fc5d44728eabd93cd9f) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) - ROM_REGION( 365, "maincpu:opla", 0 ) // unused - ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) -ROM_END - - -ROM_START( ssimon ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3476", 0x0000, 0x0800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) // unused - ROM_LOAD( "tms1100_ssimon_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) ) -ROM_END - - -ROM_START( bigtrak ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) ) -ROM_END - - -ROM_START( mbdtower ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) ) -ROM_END - - -ROM_START( arcmania ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "m34078a", 0x0000, 0x0800, CRC(90ea0087) SHA1(9780c9c1ba89300b1bbe72c47e5fec68d8bb6a77) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_arcmania_output.pla", 0, 365, CRC(a1517b15) SHA1(72eedd7fd41de9c9102219f325fe8668a7c02663) ) -ROM_END - - -ROM_START( cnsector ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) ) - - ROM_REGION( 782, "maincpu:ipla", 0 ) - ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) ) - ROM_REGION( 860, "maincpu:mpla", 0 ) - ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) ) - ROM_REGION( 352, "maincpu:opla", 0 ) - ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) ) - ROM_REGION( 157, "maincpu:spla", 0 ) - ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) ) -ROM_END - - -ROM_START( merlin ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3404", 0x0000, 0x0800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_merlin_output.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) ) -ROM_END - - -ROM_START( mmerlin ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7351", 0x0000, 0x1000, CRC(0f7a4c83) SHA1(242c1278ddfe92c28fd7cd87300e48e7a4827831) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_mmerlin_output.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) ) -ROM_END - - -ROM_START( stopthief ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(b9c9d64a) SHA1(481f8653064c142fe5d9314b750bcd73797b92b2) ) - - ROM_REGION( 1246, "maincpu:ipla", 0 ) - ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) - ROM_REGION( 1982, "maincpu:mpla", 0 ) - ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) - ROM_REGION( 352, "maincpu:opla", 0 ) - ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) ) - ROM_REGION( 157, "maincpu:spla", 0 ) - ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) -ROM_END - -ROM_START( stopthiefp ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums) - - ROM_REGION( 1246, "maincpu:ipla", 0 ) - ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) - ROM_REGION( 1982, "maincpu:mpla", 0 ) - ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) - ROM_REGION( 352, "maincpu:opla", 0 ) - ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) ) - ROM_REGION( 157, "maincpu:spla", 0 ) - ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) -ROM_END - - -ROM_START( bankshot ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_bankshot_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) ) -ROM_END - - -ROM_START( splitsec ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_splitsec_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) ) -ROM_END - - -ROM_START( lostreas ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "m34038", 0x0000, 0x0800, CRC(4c996f63) SHA1(ebbaa8b2f909f4300887aa2dbdb7185eedc75d3f) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_lostreas_output.pla", 0, 365, CRC(c62d850f) SHA1(d25974e6901eb10c52cdda12e6d4a13e26745e6f) ) -ROM_END - - -ROM_START( alphie ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "us4280809", 0x0000, 0x0400, CRC(f8f14013) SHA1(bf31b929fcbcb189bbe4623104e1da0a639b5954) ) // from patent US4280809, should be good - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent description - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_alphie_output.pla", 0, 365, NO_DUMP ) // " -ROM_END - - -ROM_START( tcfball ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_tcfball_output.pla", 0, 365, CRC(26b2996e) SHA1(df0e706c552bf74123aa65e71b0c9b4d33cddb2b) ) -ROM_END - -ROM_START( tcfballa ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1183", 0x0000, 0x0800, CRC(2a4db1d5) SHA1(5df15d1115bb425578ad522d607a582dd478f35c) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_tcfballa_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( tandy12 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_tandy12_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -ROM_START( monkeysee ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0271", 0x0000, 0x0400, CRC(acab0f05) SHA1(226f7688caf4a94a88241d3b61ddc4254e4a918c) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_monkeysee_micro.pla", 0, 867, CRC(368d878f) SHA1(956e700a04f453c1610cfdb974fce898ba4cf01f) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_monkeysee_output.pla", 0, 365, CRC(8a010e89) SHA1(3ffbabc5d6c9b34cc06d290817d15b2be42d8b17) ) -ROM_END - - -ROM_START( speechp ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "tms1007nl", 0x0000, 0x0400, CRC(c2669d5c) SHA1(7943d6f39508a9a82bc21e4fe34a5b9f86e3add2) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_speechp_output.pla", 0, 365, CRC(e1b4197f) SHA1(258f4276a9f15c9bfbfa58df2f7202aed1542fdc) ) - - ROM_REGION( 0x0800, "speech", 0 ) - ROM_LOAD("s14007-a", 0x0000, 0x0800, CRC(543b46d4) SHA1(99daf7fe3354c378b4bd883840c9bbd22b22ebe7) ) -ROM_END - - -ROM_START( timaze ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "gb2040172a", 0x0000, 0x0400, CRC(0bab4dc6) SHA1(c9d40649fbb27a8b7cf7460d66c7e217b63376f0) ) // from patent GB2040172A, verified with source code - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent, use default one - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_timaze_output.pla", 0, 365, BAD_DUMP CRC(f0f36970) SHA1(a6ad1f5e804ac98e5e1a1d07466b3db3a8d6c256) ) // described in patent, but unsure about pin order -ROM_END - - -ROM_START( copycat ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp0919", 0x0000, 0x0400, CRC(92a21299) SHA1(16daadb8dbf53aaab8a71833017b4a578d035d6d) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_copycat_output.pla", 0, 365, CRC(b1d0c96d) SHA1(ac1a003eab3f69e09e9050cb24ea17211e0523fe) ) -ROM_END - -ROM_START( copycatm2 ) - ROM_REGION( 0x0200, "maincpu", 0 ) - ROM_LOAD( "mp3005n", 0x0000, 0x0200, CRC(a87649cb) SHA1(14ef7967a80578885f0b905772c3bb417b5b3255) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_copycatm2_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_copycatm2_output.pla", 0, 365, CRC(d1999aaf) SHA1(0c27789b349e491d5230f9c75c4741e621f5a14e) ) -ROM_END - - -ROM_START( ditto ) - ROM_REGION( 0x0200, "maincpu", 0 ) - ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) ) -ROM_END - - -ROM_START( 7in1ss ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) ) -ROM_END - - -ROM_START( tbreakup ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1000_tbreakup_output.pla", 0, 365, CRC(a1ea035e) SHA1(fcf0b57ed90b41441a8974223a697f530daac0ab) ) -ROM_END - - -ROM_START( phpball ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1180", 0x0000, 0x0800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_phpball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) ) -ROM_END - - -ROM_START( ssports4 ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp1219", 0x0000, 0x0800, CRC(865c06d6) SHA1(12a625a13bdb57b82b35c42b175d38756a1e2e04) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_ssports4_output.pla", 0, 365, NO_DUMP ) -ROM_END - +// roms ROM_START( xl25 ) ROM_REGION( 0x0400, "maincpu", 0 ) @@ -10311,6 +10340,14 @@ ROM_END +} // anonymous namespace + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + // YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS CONS( 1979, matchnum, 0, 0, matchnum, matchnum, matchnum_state, empty_init, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, arrball, 0, 0, arrball, arrball, arrball_state, empty_init, "A-One LSI", "Arrange Ball", MACHINE_SUPPORTS_SAVE ) @@ -10320,10 +10357,11 @@ COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, emp CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, empty_init, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // *** CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, empty_init, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // *** -COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE ) +COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, empty_init, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE ) CONS( 1979, h2hfootb, 0, 0, h2hfootb, h2hfootb, h2hfootb_state, empty_init, "Coleco", "Head to Head: Electronic Football", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, h2hhockey, 0, 0, h2hhockey, h2hhockey, h2hhockey_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (TMS1000 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, h2hbaskb_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (TMS1000 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, h2hhockey, 0, 0, h2hhockey, h2hhockey, h2hbaskb_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (TMS1000 version)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, h2hbaseb_state, empty_init, "Coleco", "Head to Head: Electronic Baseball", MACHINE_SUPPORTS_SAVE ) CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, h2hboxing_state, empty_init, "Coleco", "Head to Head: Electronic Boxing", MACHINE_SUPPORTS_SAVE ) CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, quizwizc_state, empty_init, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // *** |