From 7ae8aed8ab1c4e34260693ae359d609ef1e685c1 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 28 May 2023 23:43:19 +0200 Subject: New systems marked not working ------------------------------ Finger Bowl [hap, Sean Riddle] --- src/mame/handheld/hh_hmcs40.cpp | 4 +- src/mame/handheld/hh_tms1k.cpp | 136 +++++++++++++++++++++++++++++++++++++++- src/mame/layout/fingbowl.lay | 22 +++++++ src/mame/mame.lst | 115 ++++++++++++++++----------------- 4 files changed, 216 insertions(+), 61 deletions(-) create mode 100644 src/mame/layout/fingbowl.lay diff --git a/src/mame/handheld/hh_hmcs40.cpp b/src/mame/handheld/hh_hmcs40.cpp index b986d5f91bd..2471f0d2cba 100644 --- a/src/mame/handheld/hh_hmcs40.cpp +++ b/src/mame/handheld/hh_hmcs40.cpp @@ -3361,7 +3361,7 @@ protected: void plate_w(offs_t offset, u8 data); void grid_w(u16 data); - DECLARE_WRITE_LINE_MEMBER(speaker_w); + void speaker_w(int state); void cop_irq_w(u8 data); u8 cop_latch_r(); u8 cop_ack_r(); @@ -3433,7 +3433,7 @@ void eturtles_state::update_int() // handlers: COP side -WRITE_LINE_MEMBER(eturtles_state::speaker_w) +void eturtles_state::speaker_w(int state) { // SK: speaker out m_speaker->level_w(!state); diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index b4908a5a788..d9f0edafe12 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -58,6 +58,7 @@ TODO: - tithermos temperature sensor comparator (right now just the digital clock works) - is alphie(patent) the same as the final version? - is starwbcp the same as MP3438? (starwbc is MP3438A) +- fingbowl internal artwork ================================================================================ @@ -111,6 +112,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP1228 TMS1100 1980, Entex Musical Marvin (6014) @MP1231 TMS1100 1984, Tandy 3 in 1 Sports Arena (model 60-2178) *MP1272 TMS1100 1981, Tandy Computerized Arcade (assumed same as CD7282, not confirmed) + @MP1288 TMS1100 1981, Tiger Finger Bowl @MP1296 TMS1100 1982, Entex Black Knight Pinball (6081) @MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control @MP1312 TMS1100 1981, Gakken FX-Micom R-165/Radio Shack Science Fair Microcomputer Trainer @@ -288,6 +290,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "esoccer.lh" #include "f2pbball.lh" #include "f3in1.lh" +#include "fingbowl.lh" // clickable #include "fxmcr165.lh" // clickable #include "gjackpot.lh" #include "gpoker.lh" @@ -396,7 +399,7 @@ protected: u8 read_inputs(int columns); u8 read_rotated_inputs(int columns, u8 rowmask = 0xf); - virtual DECLARE_WRITE_LINE_MEMBER(auto_power_off); + virtual void auto_power_off(int state); virtual void power_off(); virtual void set_power(bool state); void switch_change(int sel, u32 mask, bool next); @@ -481,7 +484,7 @@ INPUT_CHANGED_MEMBER(hh_tms1k_state::power_button) set_power((bool)param); } -WRITE_LINE_MEMBER(hh_tms1k_state::auto_power_off) +void hh_tms1k_state::auto_power_off(int state) { // devices with a TMS0980 can auto power-off if (state) @@ -15222,6 +15225,134 @@ ROM_END +/******************************************************************************* + + Tiger Finger Bowl (model 7-545) + * TMS1100 MP1288 (no decap) + * 3 7seg LEDs, 1-bit sound + + It's a track & field board game, played by sliding or tapping your finger. + 5 hurdles were included, though they're not essential. + +*******************************************************************************/ + +class fingbowl_state : public hh_tms1k_state +{ +public: + fingbowl_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void fingbowl(machine_config &config); + +private: + void update_display(); + void write_r(u32 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void fingbowl_state::update_display() +{ + m_display->matrix(m_r, m_o); +} + +void fingbowl_state::write_r(u32 data) +{ + // R8: speaker out + m_speaker->level_w(BIT(data, 8)); + + // R4-R7: input mux + m_inp_mux = data >> 4 & 0xf; + + // R0-R2: digit select + m_r = data; + update_display(); +} + +void fingbowl_state::write_o(u16 data) +{ + // O0-O6: led data + m_o = data; + update_display(); +} + +u8 fingbowl_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(4); +} + +// inputs + +static INPUT_PORTS_START( fingbowl ) + PORT_START("IN.0") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + + PORT_START("IN.1") // R5 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON8 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) + + PORT_START("IN.2") // R6 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON12 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON11 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON10 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON9 ) + + PORT_START("IN.3") // R7 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON16 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON15 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON14 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON13 ) +INPUT_PORTS_END + +// config + +void fingbowl_state::fingbowl(machine_config &config) +{ + // basic machine hardware + TMS1100(config, m_maincpu, 250000); // approximation - RC osc. R=68K, C=47pF + m_maincpu->read_k().set(FUNC(fingbowl_state::read_k)); + m_maincpu->write_r().set(FUNC(fingbowl_state::write_r)); + m_maincpu->write_o().set(FUNC(fingbowl_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(3, 7); + m_display->set_segmask(7, 0x7f); + config.set_default_layout(layout_fingbowl); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( fingbowl ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1288", 0x0000, 0x0800, CRC(8eb489ad) SHA1(65efe9fb25f6a5e0a1319558388d84053e003e93) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 365, "maincpu:opla", ROMREGION_ERASE00 ) + ROM_LOAD( "tms1100_fingbowl_output.pla", 0, 365, NO_DUMP ) + + ROM_REGION16_LE( 0x40, "maincpu:opla_b", ROMREGION_ERASE00 ) // verified, electronic dump, 2nd half unused + ROM_LOAD16_BYTE( "tms1100_fingbowl_output.bin", 0, 0x20, CRC(b84a8afb) SHA1(777c06c1ebb7884a268385b0f9d6d064400ff757) ) +ROM_END + + + + + /******************************************************************************* Tiger 7 in 1 Sports Stadium (model 7-555) @@ -16750,6 +16881,7 @@ SYST( 1980, dxfootb, 0, 0, dxfootb, dxfootb, dxfootb_state, SYST( 1979, copycat, 0, 0, copycat, copycat, copycat_state, empty_init, "Tiger Electronics", "Copy Cat (model 7-520)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) SYST( 1989, copycata, copycat, 0, copycata, copycata, copycata_state, empty_init, "Tiger Electronics", "Copy Cat (model 7-522)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) SYST( 1981, ditto, 0, 0, ditto, ditto, ditto_state, empty_init, "Tiger Electronics", "Ditto", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +SYST( 1981, fingbowl, 0, 0, fingbowl, fingbowl, fingbowl_state, empty_init, "Tiger Electronics", "Finger Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NOT_WORKING ) // *** SYST( 1982, t7in1ss, 0, 0, t7in1ss, t7in1ss, t7in1ss_state, empty_init, "Tiger Electronics", "7 in 1 Sports Stadium", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1979, tmvolleyb, 0, 0, tmvolleyb, tmvolleyb, tmvolleyb_state, empty_init, "Tomy", "Volleyball (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/layout/fingbowl.lay b/src/mame/layout/fingbowl.lay new file mode 100644 index 00000000000..9e0534e8855 --- /dev/null +++ b/src/mame/layout/fingbowl.lay @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ecbfb248d44..d7821c26b55 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -18858,75 +18858,75 @@ nummunch // VTech nupogodi // Elektronika okhota // Elektronika rkosmosa // Elektronika -taddams // Tiger -taltbeast // Tiger -tapollo13 // Tiger +taddams // Tiger Electronics +taltbeast // Tiger Electronics +tapollo13 // Tiger Electronics taynyoke // Elektronika -tbatfor // Tiger -tbatman // Tiger -tbatmana // Tiger -tbtoads // Tiger -tbttf // Tiger -tddragon // Tiger -tddragon3 // Tiger -tdennis // Tiger -tdummies // Tiger -tflash // Tiger -tgaiden // Tiger -tgaiden3 // Tiger -tgargnf // Tiger -tgaunt // Tiger -tgoldeye // Tiger -tgoldnaxe // Tiger -thalone // Tiger -thalone2 // Tiger -thook // Tiger +tbatfor // Tiger Electronics +tbatman // Tiger Electronics +tbatmana // Tiger Electronics +tbtoads // Tiger Electronics +tbttf // Tiger Electronics +tddragon // Tiger Electronics +tddragon3 // Tiger Electronics +tdennis // Tiger Electronics +tdummies // Tiger Electronics +tflash // Tiger Electronics +tgaiden // Tiger Electronics +tgaiden3 // Tiger Electronics +tgargnf // Tiger Electronics +tgaunt // Tiger Electronics +tgoldeye // Tiger Electronics +tgoldnaxe // Tiger Electronics +thalone // Tiger Electronics +thalone2 // Tiger Electronics +thook // Tiger Electronics tigarden // Tronica -tinday // Tiger -tjdredd // Tiger -tjpark // Tiger -tkarnov // Tiger -tkazaam // Tiger -tmchammer // Tiger -tmegaman3 // Tiger -tmkombat // Tiger -tnmarebc // Tiger -topaliens // Tiger -trobhood // Tiger -trobocop2 // Tiger -trobocop3 // Tiger -trockteer // Tiger +tinday // Tiger Electronics +tjdredd // Tiger Electronics +tjpark // Tiger Electronics +tkarnov // Tiger Electronics +tkazaam // Tiger Electronics +tmchammer // Tiger Electronics +tmegaman3 // Tiger Electronics +tmkombat // Tiger Electronics +tnmarebc // Tiger Electronics +topaliens // Tiger Electronics +trobhood // Tiger Electronics +trobocop2 // Tiger Electronics +trobocop3 // Tiger Electronics +trockteer // Tiger Electronics trsgkeep // Tronica trshutvoy // Tronica trspacmis // Tronica trspider // Tronica trsrescue // Tronica trthuball // Tronica -tsddragon // Tiger -tsf2010 // Tiger -tsfight2 // Tiger -tshadow // Tiger -tsharr2 // Tiger -tsimquest // Tiger -tsjam // Tiger -tskelwarr // Tiger -tsonic // Tiger -tsonic2 // Tiger -tspidman // Tiger -tstrider // Tiger -tsuperman // Tiger -tswampt // Tiger -ttransf2 // Tiger -tvindictr // Tiger -twworld // Tiger -txmen // Tiger -txmenpx // Tiger +tsddragon // Tiger Electronics +tsf2010 // Tiger Electronics +tsfight2 // Tiger Electronics +tshadow // Tiger Electronics +tsharr2 // Tiger Electronics +tsimquest // Tiger Electronics +tsjam // Tiger Electronics +tskelwarr // Tiger Electronics +tsonic // Tiger Electronics +tsonic2 // Tiger Electronics +tspidman // Tiger Electronics +tstrider // Tiger Electronics +tsuperman // Tiger Electronics +tswampt // Tiger Electronics +ttransf2 // Tiger Electronics +tvindictr // Tiger Electronics +twworld // Tiger Electronics +txmen // Tiger Electronics +txmenpx // Tiger Electronics vespovar // Elektronika vfutbol // Elektronika @source:handheld/hh_smc1k.cpp -tkkongq // Tiger -tlluke2 // Tiger +tkkongq // Tiger Electronics +tlluke2 // Tiger Electronics @source:handheld/hh_tms1k.cpp alphie // Playskool @@ -18968,6 +18968,7 @@ esbattle // Entex esoccer // Entex f2pbball // Fonas f3in1 // Fonas +fingbowl // Tiger Electronics fxmcr165 // Gakken ginv // Gakken ginv1000 // Gakken -- cgit v1.2.3