From 92ba1a5b60dd0809f1a1897e90043ad5c28d1f1f Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 24 May 2023 00:40:46 +0200 Subject: [PATCH] New systems marked not working ------------------------------ Volleyball (Tomy) [hap, Sean Riddle] --- src/mame/handheld/hh_hmcs40.cpp | 2 +- src/mame/handheld/hh_mn1400.cpp | 15 ++-- src/mame/handheld/hh_sm510.cpp | 3 + src/mame/handheld/hh_tms1k.cpp | 154 ++++++++++++++++++++++++++++++-- src/mame/handheld/hh_ucom4.cpp | 10 +-- src/mame/mame.lst | 1 + src/mame/tangerine/oric.cpp | 6 +- 7 files changed, 170 insertions(+), 21 deletions(-) diff --git a/src/mame/handheld/hh_hmcs40.cpp b/src/mame/handheld/hh_hmcs40.cpp index 2748304fc0d..b986d5f91bd 100644 --- a/src/mame/handheld/hh_hmcs40.cpp +++ b/src/mame/handheld/hh_hmcs40.cpp @@ -4875,7 +4875,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Tron (manufactured in Japan) + Tomy Tron (manufactured in Japan) * PCB label: THN-02 2E114E07 * Hitachi HD38800A88 MCU * cyan/red/green VFD NEC FIP10AM24T no. 2-8 1 diff --git a/src/mame/handheld/hh_mn1400.cpp b/src/mame/handheld/hh_mn1400.cpp index be6d889c2e9..6817996df53 100644 --- a/src/mame/handheld/hh_mn1400.cpp +++ b/src/mame/handheld/hh_mn1400.cpp @@ -422,7 +422,8 @@ ROM_END * 2 7seg LEDs, 29 other LEDs, 1-bit sound Two versions are known: one with a black bezel and one with a brown bezel, - the internal hardware is the same. + the internal hardware is the same. The other 2 games in this series (Soccer, + Volleyball) use a TMS1000 MCU instead. *******************************************************************************/ @@ -489,14 +490,14 @@ u8 tmbaskb_state::read_b() static INPUT_PORTS_START( tmbaskb ) PORT_START("IN.0") // CO3 BI (left) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Offense P") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Offense S") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Defense") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Offense P") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Offense S") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Defense") PORT_START("IN.1") // CO5 BI (right) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Offense P") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Offense S") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Defense") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Offense P") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Offense S") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Defense") PORT_START("IN.2") // BI0 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Score") diff --git a/src/mame/handheld/hh_sm510.cpp b/src/mame/handheld/hh_sm510.cpp index 56da5a2379c..5560ba8bddb 100644 --- a/src/mame/handheld/hh_sm510.cpp +++ b/src/mame/handheld/hh_sm510.cpp @@ -5284,6 +5284,9 @@ ROM_END * Sharp SM511 under epoxy (die label KMS73B, 781) * lcd screen with custom segments, 1-bit sound + There's also a rare version from 1992 called "Bull's-Eye: Barbecue Sauce", + assumed to be a promotional item licensed to Heinz. + *******************************************************************************/ class kloneran_state : public hh_sm510_state diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index 1e9ee0d5734..7ce2aa4fdcb 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -54,6 +54,7 @@ TODO: "First Up" button after the alarm sound. - finish bshipb SN76477 sound (incomplete output PLA) - redo internal artwork for the baseball games (embedded SVG for diamond shapes) +- tmvolleyb internal artwork - improve elecbowl driver - tithermos temperature sensor comparator (right now just the digital clock works) - is alphie(patent) the same as the final version? @@ -75,7 +76,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm *MP0121 TMS1000 1979, Waddingtons Compute-A-Tune @MP0154 TMS1000 1979, Fonas 2 Player Baseball @MP0158 TMS1000 1979, Entex Soccer (6003) - *MP0159 TMS1000 1979, Tomy Volleyball + @MP0159 TMS1000 1979, Tomy Volleyball @MP0163 TMS1000 1979, A-One LSI Match Number/LJN Electronic Concentration @MP0166 TMS1000 1980, A-One Arrange Ball/LJN Computer Impulse/Tandy Zingo (model 60-2123) @MP0168 TMS1000 1979, Conic Multisport/Tandy Sports Arena (model 60-2158) @@ -349,7 +350,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "xl25.lh" // clickable #include "zodiac.lh" // clickable -//#include "hh_tms1k_test.lh" // common test-layout - use external artwork +#include "hh_tms1k_test.lh" // common test-layout - use external artwork namespace { @@ -15355,7 +15356,149 @@ ROM_END /******************************************************************************* - Tomy(tronics) Break Up (manufactured in Japan) + Tomy Volleyball + * TMS1000 MP0159 (die label: 1000B, MP0159) + * 2 7seg LEDs, 14 other LEDs, 1-bit sound + +*******************************************************************************/ + +class tmvolleyb_state : public hh_tms1k_state +{ +public: + tmvolleyb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void tmvolleyb(machine_config &config); + +private: + void update_display(); + void write_r(u32 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void tmvolleyb_state::update_display() +{ + // O7 also selects left digit + m_display->matrix((m_o >> 7 & 1) | (m_r >> 3 & 0xe), m_o); +} + +void tmvolleyb_state::write_r(u32 data) +{ + // R0-R3,R7-R9: input mux + m_inp_mux = (data & 0xf) | (data >> 3 & 0x70); + + // R4-R6: led select + m_r = data; + update_display(); + + // R10: speaker out + m_speaker->level_w(BIT(data, 10)); +} + +void tmvolleyb_state::write_o(u16 data) +{ + // O0-O7: digit segment/led data + m_o = data; + update_display(); +} + +u8 tmvolleyb_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(7); +} + +// inputs + +static INPUT_PORTS_START( tmvolleyb ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Score") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("P2 Serve") + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("P1 Serve") + + PORT_START("IN.4") // R7 + PORT_BIT( 0x01, 0x01, IPT_CUSTOM ) PORT_CONDITION("IN.7", 0x01, EQUALS, 0x01) // Game 2 + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.5") // R8 + PORT_BIT( 0x02, 0x02, IPT_CUSTOM ) PORT_CONDITION("IN.7", 0x01, EQUALS, 0x00) // Game 1 + PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.6") // R9 + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x08, 0x08, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x08, "1" ) + PORT_CONFSETTING( 0x00, "2" ) + + PORT_START("IN.7") // fake + PORT_CONFNAME( 0x01, 0x00, "Game" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x01, "2" ) +INPUT_PORTS_END + +// config + +void tmvolleyb_state::tmvolleyb(machine_config &config) +{ + // basic machine hardware + TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=47K, C=47pF + m_maincpu->read_k().set(FUNC(tmvolleyb_state::read_k)); + m_maincpu->write_r().set(FUNC(tmvolleyb_state::write_r)); + m_maincpu->write_o().set(FUNC(tmvolleyb_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(4, 8); + m_display->set_segmask(3, 0x7f); + config.set_default_layout(layout_hh_tms1k_test); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( tmvolleyb ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp0159_tomy_volley", 0x0000, 0x0400, CRC(0088b0cc) SHA1(90f222d6a3bef7b27709ef2816c15867921a8d4c) ) + + 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_tmvolleyb_output.pla", 0, 365, CRC(01af7efd) SHA1(d90656a7884b37c7fd49989f8d38dd376b74557b) ) +ROM_END + + + + + +/******************************************************************************* + + Tomy Break Up (manufactured in Japan) * PCB label: TOMY B.O. * TMS1040 MP2726 TOMY WIPE (die label: 1040B, MP2726A) * TMS1025N2LL I/O expander @@ -15506,8 +15649,8 @@ static INPUT_PORTS_START( tbreakup ) PORT_START("IN.3") // fake PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, tbreakup_state, skill_switch, 0) - PORT_CONFSETTING( 0x00, "Pro 1" ) - PORT_CONFSETTING( 0x01, "Pro 2" ) + PORT_CONFSETTING( 0x00, "1" ) // PRO 1 + PORT_CONFSETTING( 0x01, "2" ) // PRO 2 INPUT_PORTS_END // config @@ -16608,6 +16751,7 @@ SYST( 1989, copycata, copycat, 0, copycata, copycata, copycata_state, SYST( 1981, ditto, 0, 0, ditto, ditto, ditto_state, empty_init, "Tiger Electronics", "Ditto", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) 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_NOT_WORKING ) SYST( 1979, tbreakup, 0, 0, tbreakup, tbreakup, tbreakup_state, empty_init, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE ) SYST( 1980, phpball, 0, 0, phpball, phpball, phpball_state, empty_init, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) diff --git a/src/mame/handheld/hh_ucom4.cpp b/src/mame/handheld/hh_ucom4.cpp index f420cc371e5..20b7a497fa8 100644 --- a/src/mame/handheld/hh_ucom4.cpp +++ b/src/mame/handheld/hh_ucom4.cpp @@ -2549,7 +2549,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Cosmic Combat (manufactured in Japan) + Tomy Cosmic Combat (manufactured in Japan) * PCB label: 2E1019-E01 * NEC uCOM-44 MCU, label D552C 042 * cyan VFD NEC FIP32AM18Y tube no. 0E, with blue window @@ -2664,7 +2664,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Tennis (manufactured in Japan) + Tomy Tennis (manufactured in Japan) * PCB label: TOMY TN-04 TENNIS * NEC uCOM-44 MCU, label D552C 048 * cyan VFD NEC FIP11AM15T tube no. 0F, with overlay @@ -2838,7 +2838,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Pac-Man (manufactured in Japan) + Tomy Pac-Man (manufactured in Japan) * PCB label: TN-08 2E108E01 * NEC uCOM-43 MCU, label D553C 160 * cyan/red/green VFD NEC FIP8AM18T no. 2-21 @@ -2959,7 +2959,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Scramble (manufactured in Japan) + Tomy Scramble (manufactured in Japan) * PCB label: TN-10 2E114E01 * NEC uCOM-43 MCU, label D553C 192 * cyan/red/green VFD NEC FIP10CM20T no. 2-41 @@ -3075,7 +3075,7 @@ ROM_END /******************************************************************************* - Tomy(tronic) Caveman (manufactured in Japan) + Tomy Caveman (manufactured in Japan) * PCB label: TN-12 2E114E03 * NEC uCOM-43 MCU, label D553C 209 * cyan/red/green VFD NEC FIP8AM20T no. 2-42 diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b12be92b99b..1765b7176dd 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19042,6 +19042,7 @@ tiprog // Texas Instruments tisr16 // Texas Instruments tisr16ii // Texas Instruments tithermos // Texas Instruments +tmvolleyb // Tomy vclock3 // Tandy Corporation wizatron // Texas Instruments wtalker // Technasonic diff --git a/src/mame/tangerine/oric.cpp b/src/mame/tangerine/oric.cpp index c18ac1c3ba0..6571430576e 100644 --- a/src/mame/tangerine/oric.cpp +++ b/src/mame/tangerine/oric.cpp @@ -221,7 +221,7 @@ void telestrat_state::telestrat_mem(address_map &map) map(0x031c, 0x031f).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); map(0x0320, 0x032f).m(m_via2, FUNC(via6522_device::map)); - // Theorically, these are cartridges. There's no real point to + // Theoretically, these are cartridges. There's no real point to // making them configurable, when only 4 existed and there are 7 // slots. @@ -293,12 +293,12 @@ uint32_t oric_state::screen_update_oric(screen_device &screen, bitmap_rgb32 &bit uint32_t c_fgcol = fgcol; uint32_t c_bgcol = bgcol; - // inverse video + // inverse video if(ch & 0x80) { c_bgcol = c_bgcol ^ 0xffffff; c_fgcol = c_fgcol ^ 0xffffff; } - // blink + // blink if((lattr & LATTR_BLINK) && blink_state) c_fgcol = c_bgcol;