diff options
Diffstat (limited to 'src/mame/drivers/hh_tms1k.cpp')
-rw-r--r-- | src/mame/drivers/hh_tms1k.cpp | 1105 |
1 files changed, 670 insertions, 435 deletions
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 81968875a22..a9246a2a36d 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -31,7 +31,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP0168 TMS1000 1979, Conic Multisport/Tandy Sports Arena (model 60-2158) @MP0170 TMS1000 1979, Conic Football *MP0220 TMS1000 1980, Tomy Teacher - *MP0230 TMS1000 1980, Entex Blast It (6015) + @MP0230 TMS1000 1980, Entex Blast It (6015) @MP0271 TMS1000 1982, Radio Shack Monkey See @MP0907 TMS1000 1979, Conic Basketball (101-006) @MP0908 TMS1000 1979, Conic Electronic I.Q. @@ -211,6 +211,7 @@ TODO: #include "bankshot.lh" #include "bcheetah.lh" #include "bigtrak.lh" +#include "blastit.lh" #include "bship.lh" // clickable #include "cmsport.lh" #include "cnbaskb.lh" @@ -431,11 +432,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void matchnum(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void matchnum(machine_config &config); }; // handlers @@ -515,18 +518,18 @@ INPUT_PORTS_END void matchnum_state::matchnum(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(matchnum_state::read_k)); m_maincpu->r().set(FUNC(matchnum_state::write_r)); m_maincpu->o().set(FUNC(matchnum_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(4, 8); m_display->set_segmask(0xf, 0x7f); config.set_default_layout(layout_matchnum); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; @@ -572,11 +575,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void arrball(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void arrball(machine_config &config); }; // handlers @@ -626,19 +631,19 @@ INPUT_PORTS_END void arrball_state::arrball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(arrball_state::read_k)); m_maincpu->r().set(FUNC(arrball_state::write_r)); m_maincpu->o().set(FUNC(arrball_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(7, 7); m_display->set_segmask(0x10, 0x7f); m_display->set_segmask(0x20, 0x06); // left digit only segments B and C config.set_default_layout(layout_arrball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; @@ -692,11 +697,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void mathmagi(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void mathmagi(machine_config &config); }; // handlers @@ -793,19 +800,19 @@ static const u16 mathmagi_output_pla[0x20] = void mathmagi_state::mathmagi(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 175000); // approximation - RC osc. R=68K, C=82pF m_maincpu->set_output_pla(mathmagi_output_pla); m_maincpu->k().set(FUNC(mathmagi_state::read_k)); m_maincpu->r().set(FUNC(mathmagi_state::write_r)); m_maincpu->o().set(FUNC(mathmagi_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 7); m_display->set_segmask(0xff, 0x7f); config.set_default_layout(layout_mathmagi); - /* no sound! */ + // no sound! } // roms @@ -933,16 +940,15 @@ INPUT_PORTS_END void bcheetah_state::bcheetah(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 100000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(bcheetah_state::read_k)); m_maincpu->r().set(FUNC(bcheetah_state::write_r)); m_maincpu->o().set(FUNC(bcheetah_state::write_o)); - /* no visual feedback! */ config.set_default_layout(layout_bcheetah); - /* no sound! */ + // no sound! } // roms @@ -1099,18 +1105,18 @@ INPUT_PORTS_END void palmf31_state::palmf31(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1040(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(palmf31_state::read_k)); m_maincpu->o().set(FUNC(palmf31_state::write_o)); m_maincpu->r().set(FUNC(palmf31_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1ff, 0xff); config.set_default_layout(layout_palmf31); - /* no sound! */ + // no sound! } // roms @@ -1267,18 +1273,18 @@ INPUT_PORTS_END void palmmd8_state::palmmd8(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1070(config, m_maincpu, 250000); // approximation - RC osc. R=56K, C=68pf m_maincpu->k().set(FUNC(palmmd8_state::read_k)); m_maincpu->o().set(FUNC(palmmd8_state::write_o)); m_maincpu->r().set(FUNC(palmmd8_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(21, 8); m_display->set_segmask(0xfffff, 0xff); config.set_default_layout(layout_palmmd8); - /* no sound! */ + // no sound! } // roms @@ -1316,11 +1322,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void amaztron(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void amaztron(machine_config &config); }; // handlers @@ -1408,18 +1416,18 @@ INPUT_PORTS_END void amaztron_state::amaztron(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 300000); // approximation - RC osc. R=33K?, C=100pF m_maincpu->k().set(FUNC(amaztron_state::read_k)); m_maincpu->r().set(FUNC(amaztron_state::write_r)); m_maincpu->o().set(FUNC(amaztron_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(4, 7); m_display->set_segmask(0xc, 0x7f); config.set_default_layout(layout_amaztron); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -1459,11 +1467,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void zodiac(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void zodiac(machine_config &config); }; // handlers @@ -1561,18 +1571,18 @@ INPUT_PORTS_END void zodiac_state::zodiac(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 500000); // approximation - RC osc. R=18K, C=100pF m_maincpu->k().set(FUNC(zodiac_state::read_k)); m_maincpu->r().set(FUNC(zodiac_state::write_r)); m_maincpu->o().set(FUNC(zodiac_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0xff, 0x7f); config.set_default_layout(layout_zodiac); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -1616,11 +1626,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void cqback(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cqback(machine_config &config); }; // handlers @@ -1692,19 +1704,19 @@ INPUT_PORTS_END void cqback_state::cqback(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 310000); // approximation - RC osc. R=33K, C=100pF m_maincpu->k().set(FUNC(cqback_state::read_k)); m_maincpu->r().set(FUNC(cqback_state::write_r)); m_maincpu->o().set(FUNC(cqback_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 11); m_display->set_segmask(0x1ff, 0xff); m_display->set_bri_levels(0.003, 0.03); // offense leds are brighter config.set_default_layout(layout_cqback); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -1748,11 +1760,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void h2hfootb(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void h2hfootb(machine_config &config); }; // handlers @@ -1824,19 +1838,19 @@ INPUT_PORTS_END void h2hfootb_state::h2hfootb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 310000); // approximation - RC osc. R=39K, C=100pF m_maincpu->k().set(FUNC(h2hfootb_state::read_k)); m_maincpu->r().set(FUNC(h2hfootb_state::write_r)); m_maincpu->o().set(FUNC(h2hfootb_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 9); m_display->set_segmask(0x1ff, 0x7f); m_display->set_bri_levels(0.003, 0.03); // offense leds are brighter config.set_default_layout(layout_h2hfootb); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -1881,30 +1895,29 @@ public: m_cap_empty_timer(*this, "cap_empty") { } + void h2hbaskb(machine_config &config); + void h2hhockey(machine_config &config); + +protected: + virtual void machine_start() override; + +private: required_device<timer_device> m_cap_empty_timer; TIMER_DEVICE_CALLBACK_MEMBER(cap_empty_callback); - bool m_cap_state; - attotime m_cap_charge; + bool m_cap_state = false; + attotime m_cap_charge = attotime::zero; void update_display(); void write_r(u16 data); void write_o(u16 data); u8 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; - + // register for savestates save_item(NAME(m_cap_state)); save_item(NAME(m_cap_charge)); } @@ -2011,7 +2024,7 @@ INPUT_PORTS_END void h2hbaskb_state::h2hbaskb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=43K, C=100pF m_maincpu->k().set(FUNC(h2hbaskb_state::read_k)); m_maincpu->r().set(FUNC(h2hbaskb_state::write_r)); @@ -2019,12 +2032,12 @@ void h2hbaskb_state::h2hbaskb(machine_config &config) TIMER(config, "cap_empty").configure_generic(FUNC(h2hbaskb_state::cap_empty_callback)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(6+6, 7); m_display->set_segmask(0xc0, 0x7f); config.set_default_layout(layout_h2hbaskb); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -2082,17 +2095,19 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_display(); - void write_r(u16 data); - void write_o(u16 data); - u8 read_k(); + void h2hbaseb(machine_config &config); - void set_clock(); DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } - void h2hbaseb(machine_config &config); protected: virtual void machine_reset() override; + +private: + void set_clock(); + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); }; void h2hbaseb_state::machine_reset() @@ -2176,18 +2191,18 @@ INPUT_PORTS_END void h2hbaseb_state::h2hbaseb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1170(config, m_maincpu, 350000); // see set_clock m_maincpu->k().set(FUNC(h2hbaseb_state::read_k)); m_maincpu->r().set(FUNC(h2hbaseb_state::write_r)); m_maincpu->o().set(FUNC(h2hbaseb_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 9); m_display->set_segmask(0x1ff, 0x7f); config.set_default_layout(layout_h2hbaseb); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -2226,11 +2241,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void h2hboxing(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void h2hboxing(machine_config &config); }; // handlers @@ -2301,18 +2318,18 @@ INPUT_PORTS_END void h2hboxing_state::h2hboxing(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=39K, C=100pF m_maincpu->k().set(FUNC(h2hboxing_state::read_k)); m_maincpu->r().set(FUNC(h2hboxing_state::write_r)); m_maincpu->o().set(FUNC(h2hboxing_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 8); m_display->set_segmask(0x600, 0x7f); config.set_default_layout(layout_h2hboxing); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -2367,6 +2384,12 @@ public: m_pinout(0) { } + void quizwizc(machine_config &config); + +protected: + virtual void machine_start() override; + +private: DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); u16 m_pinout; // cartridge R pins @@ -2374,10 +2397,6 @@ public: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void quizwizc(machine_config &config); - -protected: - virtual void machine_start() override; }; void quizwizc_state::machine_start() @@ -2483,23 +2502,23 @@ INPUT_PORTS_END void quizwizc_state::quizwizc(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 300000); // approximation - RC osc. R=43K, C=100pF m_maincpu->k().set(FUNC(quizwizc_state::read_k)); m_maincpu->r().set(FUNC(quizwizc_state::write_r)); m_maincpu->o().set(FUNC(quizwizc_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10+1, 8); m_display->set_segmask(0x3c0, 0x7f); config.set_default_layout(layout_quizwizc); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); - /* cartridge */ + // cartridge generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "quizwiz_cart")); cartslot.set_must_be_loaded(true); cartslot.set_device_load(FUNC(quizwizc_state::cart_load)); @@ -2555,6 +2574,12 @@ public: m_pinout(0) { } + void tc4(machine_config &config); + +protected: + virtual void machine_start() override; + +private: DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); u8 m_pinout; // cartridge K pins @@ -2562,10 +2587,6 @@ public: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void tc4(machine_config &config); - -protected: - virtual void machine_start() override; }; void tc4_state::machine_start() @@ -2670,24 +2691,24 @@ INPUT_PORTS_END void tc4_state::tc4(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1400(config, m_maincpu, 450000); // approximation - RC osc. R=27.3K, C=100pF m_maincpu->k().set(FUNC(tc4_state::read_k)); m_maincpu->r().set(FUNC(tc4_state::write_r)); m_maincpu->o().set(FUNC(tc4_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 9); m_display->set_segmask(0x3a0, 0x7f); m_display->set_bri_levels(0.005, 0.05); // offense leds are brighter config.set_default_layout(layout_tc4); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); - /* cartridge */ + // cartridge generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "tc4_cart")); cartslot.set_must_be_loaded(true); // system won't power on without cartridge cartslot.set_device_load(FUNC(tc4_state::cart_load)); @@ -2734,11 +2755,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void cnbaskb(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cnbaskb(machine_config &config); }; // handlers @@ -2800,19 +2823,19 @@ INPUT_PORTS_END void cnbaskb_state::cnbaskb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=39K, C=47pF m_maincpu->k().set(FUNC(cnbaskb_state::read_k)); m_maincpu->r().set(FUNC(cnbaskb_state::write_r)); m_maincpu->o().set(FUNC(cnbaskb_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 7); m_display->set_segmask(0x180, 0x7f); m_display->set_bri_levels(0.01, 0.1); // player led is brighter config.set_default_layout(layout_cnbaskb); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -2859,11 +2882,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void cmsport(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cmsport(machine_config &config); }; // handlers @@ -2927,19 +2952,19 @@ INPUT_PORTS_END void cmsport_state::cmsport(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(cmsport_state::read_k)); m_maincpu->r().set(FUNC(cmsport_state::write_r)); m_maincpu->o().set(FUNC(cmsport_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x60, 0x7f); m_display->set_bri_levels(0.01, 0.1); // player led is brighter config.set_default_layout(layout_cmsport); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -2989,6 +3014,9 @@ public: m_ds8874(*this, "ds8874") { } + void cnfball(machine_config &config); + +private: required_device<ds8874_device> m_ds8874; void ds8874_output_w(u16 data); @@ -2996,7 +3024,6 @@ public: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cnfball(machine_config &config); }; // handlers @@ -3068,13 +3095,13 @@ INPUT_PORTS_END void cnfball_state::cnfball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=39K, C=47pF m_maincpu->k().set(FUNC(cnfball_state::read_k)); m_maincpu->r().set(FUNC(cnfball_state::write_r)); m_maincpu->o().set(FUNC(cnfball_state::write_o)); - /* video hardware */ + // video hardware DS8874(config, m_ds8874).write_output().set(FUNC(cnfball_state::ds8874_output_w)); PWM_DISPLAY(config, m_display).set_size(9, 8+3); m_display->set_segmask(0xc3, 0x7f); @@ -3082,7 +3109,7 @@ void cnfball_state::cnfball(machine_config &config) m_display->set_bri_levels(0.01, 0.1); // player led is brighter config.set_default_layout(layout_cnfball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; @@ -3129,11 +3156,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void cnfball2(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cnfball2(machine_config &config); }; // handlers @@ -3202,18 +3231,18 @@ INPUT_PORTS_END void cnfball2_state::cnfball2(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 325000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(cnfball2_state::read_k)); m_maincpu->r().set(FUNC(cnfball2_state::write_r)); m_maincpu->o().set(FUNC(cnfball2_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 11); m_display->set_segmask(0x1ff, 0xff); config.set_default_layout(layout_cnfball2); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3261,11 +3290,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void eleciq(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void eleciq(machine_config &config); }; // handlers @@ -3351,18 +3382,18 @@ INPUT_PORTS_END void eleciq_state::eleciq(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=47K, C=50pF m_maincpu->k().set(FUNC(eleciq_state::read_k)); m_maincpu->r().set(FUNC(eleciq_state::write_r)); m_maincpu->o().set(FUNC(eleciq_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 7); m_display->set_segmask(0x180, 0x7f); config.set_default_layout(layout_eleciq); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3403,10 +3434,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void qfire(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void qfire(machine_config &config); }; // handlers @@ -3465,18 +3498,18 @@ INPUT_PORTS_END void qfire_state::qfire(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=39K, C=47pF m_maincpu->k().set(FUNC(qfire_state::read_k)); m_maincpu->r().set(FUNC(qfire_state::write_r)); m_maincpu->o().set(FUNC(qfire_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(3, 7); m_display->set_segmask(3, 0x7f); config.set_default_layout(layout_qfire); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3517,11 +3550,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void esoccer(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void esoccer(machine_config &config); }; // handlers @@ -3583,19 +3618,19 @@ INPUT_PORTS_END void esoccer_state::esoccer(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=33pF m_maincpu->k().set(FUNC(esoccer_state::read_k)); m_maincpu->r().set(FUNC(esoccer_state::write_r)); m_maincpu->o().set(FUNC(esoccer_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 7); m_display->set_segmask(0x300, 0x7f); m_display->set_bri_levels(0.01, 0.1); // player led is brighter config.set_default_layout(layout_esoccer); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3655,11 +3690,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ebball(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void ebball(machine_config &config); }; // handlers @@ -3731,18 +3768,18 @@ INPUT_PORTS_END void ebball_state::ebball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=43K, C=47pF m_maincpu->k().set(FUNC(ebball_state::read_k)); m_maincpu->r().set(FUNC(ebball_state::write_r)); m_maincpu->o().set(FUNC(ebball_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 7); m_display->set_segmask(0x100, 0x7f); config.set_default_layout(layout_ebball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3798,11 +3835,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ebball2(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void ebball2(machine_config &config); }; // handlers @@ -3867,18 +3906,18 @@ INPUT_PORTS_END void ebball2_state::ebball2(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(ebball2_state::read_k)); m_maincpu->r().set(FUNC(ebball2_state::write_r)); m_maincpu->o().set(FUNC(ebball2_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(7, 0x7f); config.set_default_layout(layout_ebball2); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -3939,17 +3978,19 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_display(); - void write_r(u16 data); - void write_o(u16 data); - u8 read_k(); + void ebball3(machine_config &config); - void set_clock(); DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } - void ebball3(machine_config &config); protected: virtual void machine_reset() override; + +private: + void set_clock(); + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); }; void ebball3_state::machine_reset() @@ -4036,32 +4077,32 @@ static INPUT_PORTS_START( ebball3 ) PORT_START("IN.2") // R2 PORT_CONFNAME( 0x01, 0x01, DEF_STR( Players ) ) - PORT_CONFSETTING( 0x01, "1" ) // Auto - PORT_CONFSETTING( 0x00, "2" ) // Manual + PORT_CONFSETTING( 0x01, "1" ) // AUTO + PORT_CONFSETTING( 0x00, "2" ) // MAN PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Bunt") PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.3") // fake PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, ebball3_state, skill_switch, 0) - PORT_CONFSETTING( 0x00, "Amateur" ) - PORT_CONFSETTING( 0x01, "Professional" ) + PORT_CONFSETTING( 0x00, "1" ) // AM + PORT_CONFSETTING( 0x01, "2" ) // PRO INPUT_PORTS_END void ebball3_state::ebball3(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 340000); // see set_clock m_maincpu->k().set(FUNC(ebball3_state::read_k)); m_maincpu->r().set(FUNC(ebball3_state::write_r)); m_maincpu->o().set(FUNC(ebball3_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10+2, 7); m_display->set_segmask(3, 0x7f); m_display->set_segmask(0xc00, 0x22); config.set_default_layout(layout_ebball3); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4113,11 +4154,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void esbattle(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void esbattle(machine_config &config); }; // handlers @@ -4174,18 +4217,18 @@ INPUT_PORTS_END void esbattle_state::esbattle(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 425000); // approximation - RC osc. R=47K, C=33pF m_maincpu->k().set(FUNC(esbattle_state::read_k)); m_maincpu->r().set(FUNC(esbattle_state::write_r)); m_maincpu->o().set(FUNC(esbattle_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0x300, 0x7f); config.set_default_layout(layout_esbattle); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4209,6 +4252,112 @@ ROM_END /*************************************************************************** + Entex Blast It + * TMS1000 MP0230 (die label 1000B, MP0230) + * 3 7seg LEDs, 49 other LEDs (both under an overlay mask), 1-bit sound + +***************************************************************************/ + +class blastit_state : public hh_tms1k_state +{ +public: + blastit_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void blastit(machine_config &config); + +private: + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void blastit_state::update_display() +{ + m_display->matrix(m_r >> 1, m_o); +} + +void blastit_state::write_r(u16 data) +{ + // R3: input mux + m_inp_mux = data >> 3 & 1; + + // R0: speaker out + m_speaker->level_w(data & 1); + + // R1-R7: led select + // R8-R10: digit select + m_r = data; + update_display(); +} + +void blastit_state::write_o(u16 data) +{ + // O0-O6: led state + m_o = data; + update_display(); +} + +u8 blastit_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(1); +} + +// config + +static INPUT_PORTS_START( blastit ) + PORT_START("IN.0") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY + PORT_CONFNAME( 0x08, 0x08, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x08, "1" ) // AM + PORT_CONFSETTING( 0x00, "2" ) // PRO +INPUT_PORTS_END + +void blastit_state::blastit(machine_config &config) +{ + // basic machine hardware + TMS1000(config, m_maincpu, 425000); // approximation - RC osc. R=47K, C=33pF + m_maincpu->k().set(FUNC(blastit_state::read_k)); + m_maincpu->r().set(FUNC(blastit_state::write_r)); + m_maincpu->o().set(FUNC(blastit_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(10, 7); + m_display->set_segmask(0x380, 0x7f); + m_display->set_bri_levels(0.01, 0.115); // ball/paddle is slightly brighter + config.set_default_layout(layout_blastit); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( blastit ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0230", 0x0000, 0x0400, CRC(1eb5f473) SHA1(76cd8c0e04368aa2150d428018643e1d0b9adda0) ) + + 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_blastit_output.pla", 0, 365, CRC(fa8081df) SHA1(99706d5ad58a76d47446576fac18964e602171c8) ) +ROM_END + + + + + +/*************************************************************************** + Entex Space Invader * TMS1100 MP1211 (die label same) * 3 7seg LEDs, LED matrix and overlay mask, 1-bit sound @@ -4226,16 +4375,17 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_display(); - void write_r(u16 data); - void write_o(u16 data); - - void set_clock(); DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void einvader(machine_config &config); protected: virtual void machine_reset() override; + +private: + void set_clock(); + void update_display(); + void write_r(u16 data); + void write_o(u16 data); }; void einvader_state::machine_reset() @@ -4285,19 +4435,19 @@ static INPUT_PORTS_START( einvader ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_CONFNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, einvader_state, skill_switch, 0) - PORT_CONFSETTING( 0x00, "Amateur" ) - PORT_CONFSETTING( 0x08, "Professional" ) + PORT_CONFSETTING( 0x00, "1" ) // amateur + PORT_CONFSETTING( 0x08, "2" ) // professional INPUT_PORTS_END void einvader_state::einvader(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 320000); // see set_clock m_maincpu->k().set_ioport("IN.0"); m_maincpu->r().set(FUNC(einvader_state::write_r)); m_maincpu->o().set(FUNC(einvader_state::write_o)); - /* video hardware */ + // video hardware screen_device &mask(SCREEN(config, "mask", SCREEN_TYPE_SVG)); mask.set_refresh_hz(60); mask.set_size(945, 1080); @@ -4308,7 +4458,7 @@ void einvader_state::einvader(machine_config &config) m_display->set_bri_levels(0.01, 0.1); // ufo/player explosion is brighter config.set_default_layout(layout_einvader); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4350,11 +4500,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void efootb4(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void efootb4(machine_config &config); }; // handlers @@ -4422,21 +4574,21 @@ static INPUT_PORTS_START( efootb4 ) PORT_CONFSETTING( 0x01, "1" ) // Auto PORT_CONFSETTING( 0x00, "2" ) // Manual PORT_CONFNAME( 0x02, 0x00, DEF_STR( Difficulty ) ) - PORT_CONFSETTING( 0x00, "Amateur" ) - PORT_CONFSETTING( 0x02, "Professional" ) + PORT_CONFSETTING( 0x00, "1" ) // amateur + PORT_CONFSETTING( 0x02, "2" ) // professional PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Status") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END void efootb4_state::efootb4(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1670(config, m_maincpu, 400000); // approximation - RC osc. R=42K, C=47pF m_maincpu->k().set(FUNC(efootb4_state::read_k)); m_maincpu->r().set(FUNC(efootb4_state::write_r)); m_maincpu->o().set(FUNC(efootb4_state::write_o)); - /* video hardware */ + // video hardware screen_device &mask(SCREEN(config, "mask", SCREEN_TYPE_SVG)); mask.set_refresh_hz(60); mask.set_size(1920, 904); @@ -4446,7 +4598,7 @@ void efootb4_state::efootb4(machine_config &config) m_display->set_segmask(0xfc00, 0x7f); config.set_default_layout(layout_efootb4); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4498,11 +4650,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ebaskb2(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void ebaskb2(machine_config &config); }; // handlers @@ -4544,8 +4698,8 @@ u8 ebaskb2_state::read_k() static INPUT_PORTS_START( ebaskb2 ) PORT_START("IN.0") // R6 PORT_CONFNAME( 0x01, 0x01, DEF_STR( Difficulty ) ) - PORT_CONFSETTING( 0x01, "Amateur" ) - PORT_CONFSETTING( 0x00, "Professional" ) + PORT_CONFSETTING( 0x01, "1" ) // amateur + PORT_CONFSETTING( 0x00, "2" ) // professional PORT_CONFNAME( 0x02, 0x02, DEF_STR( Players ) ) PORT_CONFSETTING( 0x02, "1" ) // Auto PORT_CONFSETTING( 0x00, "2" ) // Manual @@ -4572,19 +4726,19 @@ INPUT_PORTS_END void ebaskb2_state::ebaskb2(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 360000); // approximation - RC osc. R=33K, C=82pF m_maincpu->k().set(FUNC(ebaskb2_state::read_k)); m_maincpu->r().set(FUNC(ebaskb2_state::write_r)); m_maincpu->o().set(FUNC(ebaskb2_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 7); m_display->set_segmask(0xf, 0x7f); m_display->set_bri_levels(0.01, 0.1); // ball carrier led is brighter config.set_default_layout(layout_ebaskb2); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4641,18 +4795,20 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_display(); - void write_r(u16 data); - void write_o(u16 data); - u8 read_k(); - - void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } void raisedvl(machine_config &config); void ebknight(machine_config &config); + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } + protected: virtual void machine_reset() override; + +private: + void set_clock(); + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); }; void raisedvl_state::machine_reset() @@ -4726,18 +4882,18 @@ INPUT_PORTS_END void raisedvl_state::raisedvl(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 350000); // see set_clock m_maincpu->k().set(FUNC(raisedvl_state::read_k)); m_maincpu->r().set(FUNC(raisedvl_state::write_r)); m_maincpu->o().set(FUNC(raisedvl_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 7); m_display->set_segmask(7, 0x7f); config.set_default_layout(layout_raisedvl); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4808,11 +4964,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void f2pbball(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void f2pbball(machine_config &config); }; // handlers @@ -4878,18 +5036,18 @@ INPUT_PORTS_END void f2pbball_state::f2pbball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=51K, C=39pF m_maincpu->k().set(FUNC(f2pbball_state::read_k)); m_maincpu->r().set(FUNC(f2pbball_state::write_r)); m_maincpu->o().set(FUNC(f2pbball_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1e0, 0x7f); config.set_default_layout(layout_f2pbball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -4930,17 +5088,19 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_display(); - void write_r(u16 data); - void write_o(u16 data); - u8 read_k(); + void f3in1(machine_config &config); - void set_clock(); DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } - void f3in1(machine_config &config); protected: virtual void machine_reset() override; + +private: + void set_clock(); + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); }; void f3in1_state::machine_reset() @@ -5017,25 +5177,25 @@ static INPUT_PORTS_START( f3in1 ) PORT_START("IN.4") // fake PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, f3in1_state, skill_switch, 0) - PORT_CONFSETTING( 0x00, "Regular" ) // REG - PORT_CONFSETTING( 0x01, "Professional" ) // PROF + PORT_CONFSETTING( 0x00, "1" ) // REG + PORT_CONFSETTING( 0x01, "2" ) // PROF INPUT_PORTS_END void f3in1_state::f3in1(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 300000); // see set_clock m_maincpu->k().set(FUNC(f3in1_state::read_k)); m_maincpu->r().set(FUNC(f3in1_state::write_r)); m_maincpu->o().set(FUNC(f3in1_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0x3c0, 0x7f); m_display->set_bri_levels(0.003, 0.05); // player led is brighter config.set_default_layout(layout_f3in1); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5078,16 +5238,17 @@ public: m_beeper(*this, "beeper") { } + void gpoker(machine_config &config); + +protected: + virtual void machine_reset() override; + required_device<beep_device> m_beeper; void update_display(); virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void gpoker(machine_config &config); - -protected: - virtual void machine_reset() override; }; void gpoker_state::machine_reset() @@ -5186,18 +5347,18 @@ INPUT_PORTS_END void gpoker_state::gpoker(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1370(config, m_maincpu, 375000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(gpoker_state::read_k)); m_maincpu->r().set(FUNC(gpoker_state::write_r)); m_maincpu->o().set(FUNC(gpoker_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 14); m_display->set_segmask(0x7ff, 0x20ff); // 7seg + bottom-right diagonal config.set_default_layout(layout_gpoker); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); BEEP(config, m_beeper, 2400); // astable multivibrator - C1 and C2 are 0.003uF, R1 and R4 are 1K, R2 and R3 are 100K m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5239,8 +5400,10 @@ public: gpoker_state(mconfig, type, tag) { } - virtual void write_r(u16 data) override; void gjackpot(machine_config &config); + +private: + virtual void write_r(u16 data) override; }; // handlers @@ -5315,11 +5478,11 @@ void gjackpot_state::gjackpot(machine_config &config) { gpoker(config); - /* basic machine hardware */ + // basic machine hardware TMS1670(config.replace(), m_maincpu, 375000); // approximation - RC osc. R=47K, C=47pF - m_maincpu->k().set(FUNC(gpoker_state::read_k)); + m_maincpu->k().set(FUNC(gjackpot_state::read_k)); m_maincpu->r().set(FUNC(gjackpot_state::write_r)); - m_maincpu->o().set(FUNC(gpoker_state::write_o)); + m_maincpu->o().set(FUNC(gjackpot_state::write_o)); config.set_default_layout(layout_gjackpot); } @@ -5365,11 +5528,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ginv(machine_config &config); + +private: void update_display(); virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void ginv(machine_config &config); }; // handlers @@ -5429,13 +5594,13 @@ INPUT_PORTS_END void ginv_state::ginv(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1370(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(ginv_state::read_k)); m_maincpu->r().set(FUNC(ginv_state::write_r)); m_maincpu->o().set(FUNC(ginv_state::write_o)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_refresh_hz(60); screen.set_size(236, 1080); @@ -5443,7 +5608,7 @@ void ginv_state::ginv(machine_config &config) PWM_DISPLAY(config, m_display).set_size(9, 12); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5489,11 +5654,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ginv1000(machine_config &config); + +private: void update_display(); virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void ginv1000(machine_config &config); }; // handlers @@ -5554,13 +5721,13 @@ INPUT_PORTS_END void ginv1000_state::ginv1000(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1370(config, m_maincpu, 350000); // approximation m_maincpu->k().set(FUNC(ginv1000_state::read_k)); m_maincpu->r().set(FUNC(ginv1000_state::write_r)); m_maincpu->o().set(FUNC(ginv1000_state::write_o)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_refresh_hz(60); screen.set_size(226, 1080); @@ -5568,7 +5735,7 @@ void ginv1000_state::ginv1000(machine_config &config) PWM_DISPLAY(config, m_display).set_size(10, 12); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5615,6 +5782,9 @@ public: m_expander(*this, "expander") { } + void ginv2000(machine_config &config); + +private: required_device<tms1024_device> m_expander; void expander_w(offs_t offset, u8 data); @@ -5622,7 +5792,6 @@ public: virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void ginv2000(machine_config &config); }; // handlers @@ -5690,7 +5859,7 @@ INPUT_PORTS_END void ginv2000_state::ginv2000(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1370(config, m_maincpu, 425000); // approximation - RC osc. R=36K, C=47pF m_maincpu->k().set(FUNC(ginv2000_state::read_k)); m_maincpu->r().set(FUNC(ginv2000_state::write_r)); @@ -5702,7 +5871,7 @@ void ginv2000_state::ginv2000(machine_config &config) m_expander->write_port6_callback().set(FUNC(ginv2000_state::expander_w)); m_expander->write_port7_callback().set(FUNC(ginv2000_state::expander_w)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_refresh_hz(60); screen.set_size(364, 1080); @@ -5710,7 +5879,7 @@ void ginv2000_state::ginv2000(machine_config &config) PWM_DISPLAY(config, m_display).set_size(10, 16); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5760,11 +5929,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void fxmcr165(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void fxmcr165(machine_config &config); }; // handlers @@ -5851,18 +6022,18 @@ INPUT_PORTS_END void fxmcr165_state::fxmcr165(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 400_kHz_XTAL); m_maincpu->k().set(FUNC(fxmcr165_state::read_k)); m_maincpu->r().set(FUNC(fxmcr165_state::write_r)); m_maincpu->o().set(FUNC(fxmcr165_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1+1, 7); m_display->set_segmask(1, 0x7f); config.set_default_layout(layout_fxmcr165); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -5906,10 +6077,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void elecdet(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void elecdet(machine_config &config); }; // handlers @@ -5990,19 +6163,19 @@ INPUT_PORTS_END void elecdet_state::elecdet(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0980(config, m_maincpu, 425000); // approximation m_maincpu->k().set(FUNC(elecdet_state::read_k)); m_maincpu->r().set(FUNC(elecdet_state::write_r)); m_maincpu->o().set(FUNC(elecdet_state::write_o)); - m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off)); + m_maincpu->power_off().set(FUNC(elecdet_state::auto_power_off)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(7, 7); m_display->set_segmask(0x7f, 0x7f); config.set_default_layout(layout_elecdet); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 0.5, 0.5, 1.0}; @@ -6049,11 +6222,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void starwbc(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void starwbc(machine_config &config); }; // handlers @@ -6136,18 +6311,18 @@ INPUT_PORTS_END void starwbc_state::starwbc(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=51K, C=47pF m_maincpu->k().set(FUNC(starwbc_state::read_k)); m_maincpu->r().set(FUNC(starwbc_state::write_r)); m_maincpu->o().set(FUNC(starwbc_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0x140, 0x7f); config.set_default_layout(layout_starwbc); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -6197,11 +6372,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void astro(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void astro(machine_config &config); }; // handlers @@ -6286,18 +6463,18 @@ INPUT_PORTS_END void astro_state::astro(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1470(config, m_maincpu, 450000); // approximation - RC osc. R=4.7K, C=33pF m_maincpu->k().set(FUNC(astro_state::read_k)); m_maincpu->r().set(FUNC(astro_state::write_r)); m_maincpu->o().set(FUNC(astro_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0x3ff, 0xff); config.set_default_layout(layout_astro); - /* no sound! */ + // no sound! } // roms @@ -6349,11 +6526,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void elecbowl(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void elecbowl(machine_config &config); }; // handlers @@ -6447,20 +6626,20 @@ static const u16 elecbowl_output_pla[0x20] = void elecbowl_state::elecbowl(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=33K, C=100pF m_maincpu->set_output_pla(elecbowl_output_pla); m_maincpu->k().set(FUNC(elecbowl_state::read_k)); m_maincpu->r().set(FUNC(elecbowl_state::write_r)); m_maincpu->o().set(FUNC(elecbowl_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(7, 8); m_display->set_segmask(0xf, 0x7f); m_display->set_segmask(0x10, 0x06); // 1 config.set_default_layout(layout_elecbowl); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -6505,12 +6684,14 @@ public: m_lcd(*this, "lcd") { } + void horseran(machine_config &config); + +private: required_device<hlcd0569_device> m_lcd; void lcd_output_w(offs_t offset, u32 data); void write_r(u16 data); u8 read_k(); - void horseran(machine_config &config); }; // handlers @@ -6613,12 +6794,12 @@ INPUT_PORTS_END void horseran_state::horseran(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 300000); // approximation - RC osc. R=56K, C=47pF m_maincpu->k().set(FUNC(horseran_state::read_k)); m_maincpu->r().set(FUNC(horseran_state::write_r)); - /* video hardware */ + // video hardware HLCD0569(config, m_lcd, 1100); // C=0.022uF m_lcd->write_cols().set(FUNC(horseran_state::lcd_output_w)); @@ -6626,7 +6807,7 @@ void horseran_state::horseran(machine_config &config) m_display->set_segmask(0x3f<<3, 0x7f); config.set_default_layout(layout_horseran); - /* no sound! */ + // no sound! } // roms @@ -6663,10 +6844,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void mdndclab(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void mdndclab(machine_config &config); }; // handlers @@ -6806,16 +6989,15 @@ INPUT_PORTS_END void mdndclab_state::mdndclab(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 475000); // approximation - RC osc. R=27K, C=100pF m_maincpu->k().set(FUNC(mdndclab_state::read_k)); m_maincpu->r().set(FUNC(mdndclab_state::write_r)); m_maincpu->o().set(FUNC(mdndclab_state::write_o)); - /* no visual feedback! */ config.set_default_layout(layout_mdndclab); // playing board - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -6862,10 +7044,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void comp4(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void comp4(machine_config &config); }; // handlers @@ -6921,17 +7105,17 @@ INPUT_PORTS_END void comp4_state::comp4(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0970(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(comp4_state::read_k)); m_maincpu->r().set(FUNC(comp4_state::write_r)); m_maincpu->o().set(FUNC(comp4_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 11); config.set_default_layout(layout_comp4); - /* no sound! */ + // no sound! } // roms @@ -6982,10 +7166,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void bship(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void bship(machine_config &config); }; // handlers @@ -7088,17 +7274,17 @@ INPUT_PORTS_END void bship_state::bship(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 200000); // approximation - RC osc. R=100K, C=47pF m_maincpu->k().set(FUNC(bship_state::read_k)); m_maincpu->r().set(FUNC(bship_state::write_r)); m_maincpu->o().set(FUNC(bship_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 1); config.set_default_layout(layout_bship); - /* sound hardware */ + // sound hardware // TODO } @@ -7138,12 +7324,14 @@ public: m_sn(*this, "sn76477") { } + void bshipb(machine_config &config); + +private: required_device<sn76477_device> m_sn; void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void bshipb(machine_config &config); }; // handlers @@ -7204,17 +7392,17 @@ u8 bshipb_state::read_k() void bshipb_state::bshipb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 200000); // approximation - RC osc. R=100K, C=47pF m_maincpu->k().set(FUNC(bshipb_state::read_k)); m_maincpu->r().set(FUNC(bshipb_state::write_r)); m_maincpu->o().set(FUNC(bshipb_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 1); config.set_default_layout(layout_bship); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SN76477(config, m_sn); m_sn->set_noise_params(RES_K(47), RES_K(100), CAP_P(47)); // R18, R17, C8 @@ -7272,9 +7460,11 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void simon(machine_config &config); + +private: void write_r(u16 data); u8 read_k(); - void simon(machine_config &config); }; // handlers @@ -7341,16 +7531,16 @@ INPUT_PORTS_END void simon_state::simon(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=33K, C=100pF m_maincpu->k().set(FUNC(simon_state::read_k)); m_maincpu->r().set(FUNC(simon_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 4); config.set_default_layout(layout_simon); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -7400,15 +7590,17 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void write_r(u16 data); - u8 read_k(); + void ssimon(machine_config &config); - void set_clock(); DECLARE_INPUT_CHANGED_MEMBER(speed_switch) { set_clock(); } - void ssimon(machine_config &config); protected: virtual void machine_reset() override; + +private: + void set_clock(); + void write_r(u16 data); + u8 read_k(); }; void ssimon_state::machine_reset() @@ -7508,16 +7700,16 @@ INPUT_PORTS_END void ssimon_state::ssimon(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 275000); // see set_clock m_maincpu->k().set(FUNC(ssimon_state::read_k)); m_maincpu->r().set(FUNC(ssimon_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 4); config.set_default_layout(layout_ssimon); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -7578,7 +7770,7 @@ private: void write_o(u16 data); u8 read_k(); - int m_gearbox_pos; + int m_gearbox_pos = 0; bool sensor_state() { return m_gearbox_pos < 0 && m_display->element_on(0, 0); } TIMER_DEVICE_CALLBACK_MEMBER(gearbox_sim_tick); @@ -7593,14 +7785,14 @@ void bigtrak_state::machine_start() { hh_tms1k_state::machine_start(); + // resolve handlers m_left_motor_forward.resolve(); m_left_motor_reverse.resolve(); m_right_motor_forward.resolve(); m_right_motor_reverse.resolve(); m_ext_out.resolve(); - // zerofill/register for savestates - m_gearbox_pos = 0; + // register for savestates save_item(NAME(m_gearbox_pos)); } @@ -7718,7 +7910,7 @@ INPUT_PORTS_END void bigtrak_state::bigtrak(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 200000); // approximation - RC osc. R=83K, C=100pF m_maincpu->k().set(FUNC(bigtrak_state::read_k)); m_maincpu->r().set(FUNC(bigtrak_state::write_r)); @@ -7726,11 +7918,11 @@ void bigtrak_state::bigtrak(machine_config &config) TIMER(config, "gearbox").configure_periodic(FUNC(bigtrak_state::gearbox_sim_tick), attotime::from_msec(1)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 2); config.set_default_layout(layout_bigtrak); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[8] = { 0.0, 1.0/3.0, 1.0/3.0, 2.0/3.0, 1.0/3.0, 2.0/3.0, 2.0/3.0, 1.0 }; @@ -7796,11 +7988,11 @@ private: output_finder<> m_card_pos_out; output_finder<> m_motor_on_out; - int m_motor_pos; - int m_motor_pos_prev; - int m_motor_decay; - bool m_motor_on; - bool m_sensor_blind; + int m_motor_pos = 0; + int m_motor_pos_prev = -1; + int m_motor_decay = 0; + bool m_motor_on = false; + bool m_sensor_blind = false; TIMER_DEVICE_CALLBACK_MEMBER(motor_sim_tick); @@ -7817,13 +8009,6 @@ void mbdtower_state::machine_start() m_card_pos_out.resolve(); m_motor_on_out.resolve(); - // 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! @@ -7972,7 +8157,7 @@ INPUT_PORTS_END void mbdtower_state::mbdtower(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1400(config, m_maincpu, 425000); // approximation - RC osc. R=43K, C=56pF m_maincpu->k().set(FUNC(mbdtower_state::read_k)); m_maincpu->r().set(FUNC(mbdtower_state::write_r)); @@ -7980,12 +8165,12 @@ void mbdtower_state::mbdtower(machine_config &config) TIMER(config, "tower_motor").configure_periodic(FUNC(mbdtower_state::motor_sim_tick), attotime::from_msec(3500/0x80)); // ~3.5sec for a full rotation - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(3, 7); m_display->set_segmask(6, 0x7f); config.set_default_layout(layout_mbdtower); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -8025,10 +8210,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void arcmania(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void arcmania(machine_config &config); }; // handlers @@ -8096,17 +8283,17 @@ INPUT_PORTS_END void arcmania_state::arcmania(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 250000); // approximation - RC osc. R=56K, C=100pF m_maincpu->k().set(FUNC(arcmania_state::read_k)); m_maincpu->r().set(FUNC(arcmania_state::write_r)); m_maincpu->o().set(FUNC(arcmania_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 9); config.set_default_layout(layout_arcmania); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[8] = { 0.0, 1.0/3.0, 1.0/3.0, 2.0/3.0, 1.0/3.0, 2.0/3.0, 2.0/3.0, 1.0 }; @@ -8149,10 +8336,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void cnsector(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void cnsector(machine_config &config); }; // handlers @@ -8228,18 +8417,18 @@ INPUT_PORTS_END void cnsector_state::cnsector(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0970(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(cnsector_state::read_k)); m_maincpu->r().set(FUNC(cnsector_state::write_r)); m_maincpu->o().set(FUNC(cnsector_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 8); m_display->set_segmask(0x3f, 0xff); config.set_default_layout(layout_cnsector); - /* no sound! */ + // no sound! } // roms @@ -8291,10 +8480,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void merlin(machine_config &config); + +protected: virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void merlin(machine_config &config); }; // handlers @@ -8358,17 +8549,17 @@ INPUT_PORTS_END void merlin_state::merlin(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=33K, C=100pF m_maincpu->k().set(FUNC(merlin_state::read_k)); m_maincpu->r().set(FUNC(merlin_state::write_r)); m_maincpu->o().set(FUNC(merlin_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 11); config.set_default_layout(layout_merlin); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[8] = { 0.0, 1.0/3.0, 1.0/3.0, 2.0/3.0, 1.0/3.0, 2.0/3.0, 2.0/3.0, 1.0 }; @@ -8439,7 +8630,7 @@ void mmerlin_state::mmerlin(machine_config &config) { merlin(config); - /* basic machine hardware */ + // basic machine hardware TMS1400(config.replace(), m_maincpu, 425000); // approximation - RC osc. R=30K, C=100pF m_maincpu->k().set(FUNC(mmerlin_state::read_k)); m_maincpu->r().set(FUNC(mmerlin_state::write_r)); @@ -8483,10 +8674,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void pbmastm(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void pbmastm(machine_config &config); }; // handlers @@ -8551,17 +8744,17 @@ INPUT_PORTS_END void pbmastm_state::pbmastm(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 300000); // approximation - RC osc. R=56K, C=47pF m_maincpu->k().set(FUNC(pbmastm_state::read_k)); m_maincpu->r().set(FUNC(pbmastm_state::write_r)); m_maincpu->o().set(FUNC(pbmastm_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 10); config.set_default_layout(layout_pbmastm); - /* no sound! */ + // no sound! } // roms @@ -8600,10 +8793,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void stopthief(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void stopthief(machine_config &config); }; // handlers @@ -8673,19 +8868,19 @@ INPUT_PORTS_END void stopthief_state::stopthief(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0980(config, m_maincpu, 425000); // approximation m_maincpu->k().set(FUNC(stopthief_state::read_k)); m_maincpu->r().set(FUNC(stopthief_state::write_r)); m_maincpu->o().set(FUNC(stopthief_state::write_o)); - m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off)); + m_maincpu->power_off().set(FUNC(stopthief_state::auto_power_off)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(3, 7); m_display->set_segmask(7, 0x7f); config.set_default_layout(layout_stopthief); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[7] = { 1.0/7.0, 1.0/6.0, 1.0/5.0, 1.0/4.0, 1.0/3.0, 1.0/2.0, 1.0 }; @@ -8753,11 +8948,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void bankshot(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void bankshot(machine_config &config); }; // handlers @@ -8823,18 +9020,18 @@ INPUT_PORTS_END void bankshot_state::bankshot(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1400(config, m_maincpu, 475000); // approximation - RC osc. R=24K, C=100pF m_maincpu->k().set(FUNC(bankshot_state::read_k)); m_maincpu->r().set(FUNC(bankshot_state::write_r)); m_maincpu->o().set(FUNC(bankshot_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 8); m_display->set_bri_levels(0.01, 0.08); // cue ball is brigher config.set_default_layout(layout_bankshot); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -8895,11 +9092,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void splitsec(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void splitsec(machine_config &config); }; // handlers @@ -8954,17 +9153,17 @@ INPUT_PORTS_END void splitsec_state::splitsec(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1400(config, m_maincpu, 475000); // approximation - RC osc. R=24K, C=100pF m_maincpu->k().set(FUNC(splitsec_state::read_k)); m_maincpu->r().set(FUNC(splitsec_state::write_r)); m_maincpu->o().set(FUNC(splitsec_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(8, 7); config.set_default_layout(layout_splitsec); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9004,10 +9203,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void lostreas(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void lostreas(machine_config &config); }; // handlers @@ -9079,17 +9280,17 @@ INPUT_PORTS_END void lostreas_state::lostreas(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 425000); // approximation - RC osc. R=39K, C=47pF m_maincpu->k().set(FUNC(lostreas_state::read_k)); m_maincpu->r().set(FUNC(lostreas_state::write_r)); m_maincpu->o().set(FUNC(lostreas_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 11); config.set_default_layout(layout_lostreas); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9142,10 +9343,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void alphie(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void alphie(machine_config &config); }; // handlers @@ -9224,18 +9427,18 @@ static const u16 alphie_output_pla[0x20] = void alphie_state::alphie(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 350000); // approximation m_maincpu->set_output_pla(alphie_output_pla); m_maincpu->k().set(FUNC(alphie_state::read_k)); m_maincpu->r().set(FUNC(alphie_state::write_r)); m_maincpu->o().set(FUNC(alphie_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 5); config.set_default_layout(layout_alphie); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9276,11 +9479,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void tcfball(machine_config &config); + +protected: void update_display(); virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void tcfball(machine_config &config); }; // handlers @@ -9345,20 +9550,20 @@ INPUT_PORTS_END void tcfball_state::tcfball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 375000); // approximation - RC osc. R=56K, C=24pF m_maincpu->k().set(FUNC(tcfball_state::read_k)); m_maincpu->r().set(FUNC(tcfball_state::write_r)); m_maincpu->o().set(FUNC(tcfball_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 8); m_display->set_segmask(0x77, 0x7f); m_display->set_segmask(0x08, 0xff); // R3 has DP m_display->set_bri_levels(0.003, 0.03); // offense leds are brighter config.set_default_layout(layout_tcfball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9421,7 +9626,7 @@ void tcfballa_state::tcfballa(machine_config &config) { tcfball(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_clock(375000); // approximation - RC osc. R=47K, C=50pF config.set_default_layout(layout_tcfballa); @@ -9480,11 +9685,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void tandy12(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void tandy12(machine_config &config); }; // handlers @@ -9590,18 +9797,18 @@ static const u16 tandy12_output_pla[0x20] = void tandy12_state::tandy12(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 400000); // approximation - RC osc. R=39K, C=47pF m_maincpu->set_output_pla(tandy12_output_pla); m_maincpu->k().set(FUNC(tandy12_state::read_k)); m_maincpu->r().set(FUNC(tandy12_state::write_r)); m_maincpu->o().set(FUNC(tandy12_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 13); config.set_default_layout(layout_tandy12); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9646,10 +9853,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void monkeysee(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void monkeysee(machine_config &config); }; // handlers @@ -9712,17 +9921,17 @@ INPUT_PORTS_END void monkeysee_state::monkeysee(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 250000); // approximation - RC osc. R=68K, C=47pF m_maincpu->k().set(FUNC(monkeysee_state::read_k)); m_maincpu->r().set(FUNC(monkeysee_state::write_r)); m_maincpu->o().set(FUNC(monkeysee_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 2); config.set_default_layout(layout_monkeysee); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -9765,13 +9974,15 @@ public: m_speech(*this, "speech") { } + void speechp(machine_config &config); + +private: required_device<s14001a_device> m_speech; void update_display(); virtual void write_r(u16 data); virtual void write_o(u16 data); virtual u8 read_k(); - void speechp(machine_config &config); }; // handlers @@ -9873,18 +10084,18 @@ INPUT_PORTS_END void speechp_state::speechp(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 400000); // approximation - RC osc. R=39K, C=47pF m_maincpu->k().set(FUNC(speechp_state::read_k)); m_maincpu->r().set(FUNC(speechp_state::write_r)); m_maincpu->o().set(FUNC(speechp_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1ff, 0xff); config.set_default_layout(layout_speechp); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); S14001A(config, m_speech, 25000); // approximation m_speech->add_route(ALL_OUTPUTS, "mono", 0.75); @@ -9928,11 +10139,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void tisr16(machine_config &config); + +private: void update_display(); void write_o(u16 data); void write_r(u16 data); u8 read_k(); - void tisr16(machine_config &config); }; // handlers @@ -10107,18 +10320,18 @@ INPUT_PORTS_END void tisr16_state::tisr16(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 300000); // approximation - RC osc. R=43K, C=68pf (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf, same freq) m_maincpu->k().set(FUNC(tisr16_state::read_k)); m_maincpu->o().set(FUNC(tisr16_state::write_o)); m_maincpu->r().set(FUNC(tisr16_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(12, 8); m_display->set_segmask(0xfff, 0xff); config.set_default_layout(layout_tisr16); - /* no sound! */ + // no sound! } // roms @@ -10270,26 +10483,26 @@ INPUT_PORTS_END void ti1250_state::ti1250(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0950(config, m_maincpu, 200000); // approximation - RC osc. R=68K, C=68pf m_maincpu->k().set(FUNC(ti1250_state::read_k)); m_maincpu->o().set(FUNC(ti1250_state::write_o)); m_maincpu->r().set(FUNC(ti1250_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0xff, 0xff); m_display->set_segmask(0x100, 0x40); // R8 only has segment G connected config.set_default_layout(layout_ti1250); - /* no sound! */ + // no sound! } void ti1250_state::ti1270(machine_config &config) { ti1250(config); - /* basic machine hardware */ + // basic machine hardware TMS0970(config.replace(), m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(ti1250_state::read_k)); m_maincpu->o().set(FUNC(ti1250_state::write_o)); @@ -10447,18 +10660,18 @@ INPUT_PORTS_END void ti25503_state::ti25503(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1040(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(ti25503_state::read_k)); m_maincpu->o().set(FUNC(ti25503_state::write_o)); m_maincpu->r().set(FUNC(ti25503_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1ff, 0xff); config.set_default_layout(layout_ti25503); - /* no sound! */ + // no sound! } // roms @@ -10599,18 +10812,18 @@ INPUT_PORTS_END void ti5100_state::ti5100(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1070(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(ti5100_state::read_k)); m_maincpu->o().set(FUNC(ti5100_state::write_o)); m_maincpu->r().set(FUNC(ti5100_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 9); m_display->set_segmask(0x7ff, 0xff); config.set_default_layout(layout_ti5100); - /* no sound! */ + // no sound! } // roms @@ -10869,20 +11082,20 @@ INPUT_PORTS_END void ti30_state::ti30(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0980(config, m_maincpu, 400000); // guessed m_maincpu->k().set(FUNC(ti30_state::read_k)); m_maincpu->o().set(FUNC(ti30_state::write_o)); m_maincpu->r().set(FUNC(ti30_state::write_r)); - m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off)); + m_maincpu->power_off().set(FUNC(ti30_state::auto_power_off)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1fe, 0xff); m_display->set_segmask(0x001, 0xe2); // 1st digit only has segments B,F,G,DP config.set_default_layout(layout_ti30); - /* no sound! */ + // no sound! } // roms @@ -11018,18 +11231,18 @@ INPUT_PORTS_END void ti1000_state::ti1000(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1990(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(ti1000_state::read_k)); m_maincpu->o().set(FUNC(ti1000_state::write_o)); m_maincpu->r().set(FUNC(ti1000_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(8, 8); m_display->set_segmask(0xff, 0xff); config.set_default_layout(layout_ti1270); - /* no sound! */ + // no sound! } // roms @@ -11069,6 +11282,7 @@ public: void wizatron(machine_config &config); +protected: virtual void write_o(u16 data); virtual void write_r(u16 data); virtual u8 read_k(); @@ -11135,19 +11349,19 @@ INPUT_PORTS_END void wizatron_state::wizatron(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0970(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(wizatron_state::read_k)); m_maincpu->o().set(FUNC(wizatron_state::write_o)); m_maincpu->r().set(FUNC(wizatron_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 7); m_display->set_segmask(0x1ff^8, 0x7f); m_display->set_segmask(8, 0x41); // equals sign config.set_default_layout(layout_wizatron); - /* no sound! */ + // no sound! } // roms @@ -11232,7 +11446,7 @@ void lilprof_state::lilprof(machine_config &config) { wizatron(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->k().set(FUNC(lilprof_state::read_k)); m_maincpu->o().set(FUNC(lilprof_state::write_o)); } @@ -11351,18 +11565,18 @@ INPUT_PORTS_END void lilprof78_state::lilprof78(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1990(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(lilprof78_state::read_k)); m_maincpu->o().set(FUNC(lilprof78_state::write_o)); m_maincpu->r().set(FUNC(lilprof78_state::write_r)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 7); m_display->set_segmask(0x1ff, 0x7f); config.set_default_layout(layout_wizatron); - /* no sound! */ + // no sound! } // roms @@ -11405,10 +11619,11 @@ public: m_ram(*this, "ram") { } - required_device<tmc0999_device> m_ram; - void ti1680(machine_config &config); +private: + required_device<tmc0999_device> m_ram; + virtual void update_display(); virtual void write_o(u16 data); virtual void write_r(u16 data); @@ -11496,21 +11711,21 @@ INPUT_PORTS_END void ti1680_state::ti1680(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1980(config, m_maincpu, 300000); // approximation m_maincpu->k().set(FUNC(ti1680_state::read_k)); m_maincpu->o().set(FUNC(ti1680_state::write_o)); m_maincpu->r().set(FUNC(ti1680_state::write_r)); - m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off)); + m_maincpu->power_off().set(FUNC(ti1680_state::auto_power_off)); TMC0999(config, m_ram); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 9); m_display->set_segmask(0x1fe, 0xff); config.set_default_layout(layout_ti1680); - /* no sound! */ + // no sound! } // roms @@ -11548,6 +11763,7 @@ public: void dataman(machine_config &config); +protected: virtual void update_display(); virtual void write_o(u16 data); virtual void write_r(u16 data); @@ -11627,19 +11843,19 @@ INPUT_PORTS_END void dataman_state::dataman(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1980(config, m_maincpu, 300000); // patent says 300kHz m_maincpu->k().set(FUNC(dataman_state::read_k)); m_maincpu->o().set(FUNC(dataman_state::write_o)); m_maincpu->r().set(FUNC(dataman_state::write_r)); - m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off)); + m_maincpu->power_off().set(FUNC(dataman_state::auto_power_off)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0x1ff, 0x7f); config.set_default_layout(layout_dataman); - /* no sound! */ + // no sound! } // roms @@ -11714,12 +11930,12 @@ void mathmarv_state::mathmarv(machine_config &config) { dataman(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->r().set(FUNC(mathmarv_state::write_r)); config.set_default_layout(layout_mathmarv); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } @@ -11766,10 +11982,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void timaze(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void timaze(machine_config &config); }; // handlers @@ -11804,18 +12022,18 @@ INPUT_PORTS_END void timaze_state::timaze(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 200000); // approximation - RC osc. R=80K, C=27pF m_maincpu->k().set(FUNC(timaze_state::read_k)); m_maincpu->r().set(FUNC(timaze_state::write_r)); m_maincpu->o().set(FUNC(timaze_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 8); m_display->set_segmask(1, 0x5c); config.set_default_layout(layout_timaze); - /* no sound! */ + // no sound! } // roms @@ -11854,13 +12072,14 @@ public: m_60hz(*this, "ac_line") { } - void write_r(u16 data); - void write_o(u16 data); - u8 read_k(); void tithermos(machine_config &config); private: required_device<clock_device> m_60hz; + + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); }; // handlers @@ -11959,7 +12178,7 @@ INPUT_PORTS_END void tithermos_state::tithermos(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS0970(config, m_maincpu, 250000); // approximation m_maincpu->k().set(FUNC(tithermos_state::read_k)); m_maincpu->r().set(FUNC(tithermos_state::write_r)); @@ -11967,12 +12186,12 @@ void tithermos_state::tithermos(machine_config &config) CLOCK(config, "ac_line", 60); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(4, 7); m_display->set_segmask(0xf, 0x7f); config.set_default_layout(layout_tithermos); - /* no sound! */ + // no sound! } // roms @@ -12016,10 +12235,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void subwars(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); - void subwars(machine_config &config); }; // handlers @@ -12059,18 +12280,18 @@ INPUT_PORTS_END void subwars_state::subwars(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1200(config, m_maincpu, 550000); // approximation - RC osc. R=24K, C=47pF m_maincpu->k().set_ioport("IN.0"); m_maincpu->r().set(FUNC(subwars_state::write_r)); m_maincpu->o().set(FUNC(subwars_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(13, 7); m_display->set_segmask(0xf, 0x7f); config.set_default_layout(layout_subwars); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -12113,10 +12334,12 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void copycat(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void copycat(machine_config &config); }; // handlers @@ -12176,17 +12399,17 @@ INPUT_PORTS_END void copycat_state::copycat(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000(config, m_maincpu, 320000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(copycat_state::read_k)); m_maincpu->r().set(FUNC(copycat_state::write_r)); m_maincpu->o().set(FUNC(copycat_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 4); config.set_default_layout(layout_copycat); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; @@ -12235,9 +12458,11 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void copycatm2(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); - void copycatm2(machine_config &config); }; // handlers @@ -12266,17 +12491,17 @@ INPUT_PORTS_END void copycatm2_state::copycatm2(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1730(config, m_maincpu, 275000); // approximation - RC osc. R=100K, C=47pF m_maincpu->k().set_ioport("IN.0"); m_maincpu->r().set(FUNC(copycatm2_state::write_r)); m_maincpu->o().set(FUNC(copycatm2_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 4); config.set_default_layout(layout_copycatm2); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0 }; @@ -12320,9 +12545,11 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ditto(machine_config &config); + +private: void write_r(u16 data); void write_o(u16 data); - void ditto(machine_config &config); }; // handlers @@ -12351,17 +12578,17 @@ INPUT_PORTS_END void ditto_state::ditto(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1700(config, m_maincpu, 275000); // approximation - RC osc. R=100K, C=47pF m_maincpu->k().set_ioport("IN.0"); m_maincpu->r().set(FUNC(ditto_state::write_r)); m_maincpu->o().set(FUNC(ditto_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(1, 4); config.set_default_layout(layout_ditto); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0 }; @@ -12408,11 +12635,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ss7in1(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void ss7in1(machine_config &config); }; // handlers @@ -12480,19 +12709,19 @@ INPUT_PORTS_END void ss7in1_state::ss7in1(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1400(config, m_maincpu, 450000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(ss7in1_state::read_k)); m_maincpu->r().set(FUNC(ss7in1_state::write_r)); m_maincpu->o().set(FUNC(ss7in1_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(9, 8); m_display->set_segmask(0xf, 0x7f); m_display->set_bri_levels(0.005, 0.05); // player led is brighter config.set_default_layout(layout_7in1ss); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -12557,30 +12786,29 @@ public: m_expander(*this, "expander") { } + void tbreakup(machine_config &config); + + DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } + +protected: + virtual void machine_reset() override; + virtual void machine_start() override; + +private: required_device<tms1025_device> m_expander; - u8 m_exp_port[7]; + u8 m_exp_port[7] = { }; void expander_w(offs_t offset, u8 data); + void set_clock(); void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - - void set_clock(); - DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); } - void tbreakup(machine_config &config); - -protected: - virtual void machine_reset() override; - 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)); } @@ -12674,7 +12902,7 @@ INPUT_PORTS_END void tbreakup_state::tbreakup(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1040(config, m_maincpu, 325000); // see set_clock m_maincpu->k().set(FUNC(tbreakup_state::read_k)); m_maincpu->r().set(FUNC(tbreakup_state::write_r)); @@ -12689,12 +12917,12 @@ void tbreakup_state::tbreakup(machine_config &config) m_expander->write_port6_callback().set(FUNC(tbreakup_state::expander_w)); m_expander->write_port7_callback().set(FUNC(tbreakup_state::expander_w)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(2+6+6, 8); m_display->set_segmask(3, 0x7f); config.set_default_layout(layout_tbreakup); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -12752,13 +12980,15 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void phpball(machine_config &config); + + DECLARE_INPUT_CHANGED_MEMBER(flipper_button) { update_display(); } + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - - DECLARE_INPUT_CHANGED_MEMBER(flipper_button) { update_display(); } - void phpball(machine_config &config); }; // handlers @@ -12814,18 +13044,18 @@ INPUT_PORTS_END void phpball_state::phpball(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 375000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(phpball_state::read_k)); m_maincpu->r().set(FUNC(phpball_state::write_r)); m_maincpu->o().set(FUNC(phpball_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(11, 7); m_display->set_segmask(7, 0x7f); config.set_default_layout(layout_phpball); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -12867,11 +13097,13 @@ public: hh_tms1k_state(mconfig, type, tag) { } + void ssports4(machine_config &config); + +private: void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void ssports4(machine_config &config); }; // handlers @@ -12954,19 +13186,19 @@ INPUT_PORTS_END void ssports4_state::ssports4(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1100(config, m_maincpu, 375000); // approximation - RC osc. R=47K, C=47pF m_maincpu->k().set(FUNC(ssports4_state::read_k)); m_maincpu->r().set(FUNC(ssports4_state::write_r)); m_maincpu->o().set(FUNC(ssports4_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 9); m_display->set_segmask(0x303, 0x7f); m_display->set_bri_levels(0.003, 0.03); // offense leds are brighter config.set_default_layout(layout_ssports4); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -13009,17 +13241,19 @@ public: hh_tms1k_state(mconfig, type, tag) { } - void update_halt(); + void xl25(machine_config &config); + DECLARE_INPUT_CHANGED_MEMBER(k4_button) { update_halt(); } +protected: + virtual void machine_reset() override; + +private: + void update_halt(); void update_display(); void write_r(u16 data); void write_o(u16 data); u8 read_k(); - void xl25(machine_config &config); - -protected: - virtual void machine_reset() override; }; void xl25_state::machine_reset() @@ -13136,17 +13370,17 @@ INPUT_PORTS_END void xl25_state::xl25(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware TMS1000C(config, m_maincpu, 300000); // approximation - RC osc. R=5.6K, C=47pF m_maincpu->k().set(FUNC(xl25_state::read_k)); m_maincpu->r().set(FUNC(xl25_state::write_r)); m_maincpu->o().set(FUNC(xl25_state::write_o)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(10, 3); config.set_default_layout(layout_xl25); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); @@ -13209,6 +13443,7 @@ CONS( 1979, ebball, 0, 0, ebball, ebball, ebball_state, emp CONS( 1979, ebball2, 0, 0, ebball2, ebball2, ebball2_state, empty_init, "Entex", "Electronic Baseball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, ebball3, 0, 0, ebball3, ebball3, ebball3_state, empty_init, "Entex", "Electronic Baseball 3 (Entex)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, esbattle, 0, 0, esbattle, esbattle, esbattle_state, empty_init, "Entex", "Space Battle (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, blastit, 0, 0, blastit, blastit, blastit_state, empty_init, "Entex", "Blast It", MACHINE_SUPPORTS_SAVE ) CONS( 1980, einvader, 0, 0, einvader, einvader, einvader_state, empty_init, "Entex", "Space Invader (Entex, TMS1100 version)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, efootb4_state, empty_init, "Entex", "Color Football 4 (Entex)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, ebaskb2_state, empty_init, "Entex", "Electronic Basketball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) |