From 8b96fd4e3fbb18e3bf3f464e36e5c4cc82f7db17 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 28 Feb 2015 22:55:41 +0100 Subject: pff, managed to make an internal layout for ebball (MESS)New working game added ------------------- Entex Baseball [hap, Sean Riddle] --- src/mess/drivers/hh_tms1k.c | 48 ++++---- src/mess/drivers/hh_ucom4.c | 9 +- src/mess/layout/ebball.lay | 260 +++++++++++++++++++++++++++++--------------- 3 files changed, 209 insertions(+), 108 deletions(-) diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c index c1db452b97c..20abbe7714f 100644 --- a/src/mess/drivers/hh_tms1k.c +++ b/src/mess/drivers/hh_tms1k.c @@ -56,6 +56,7 @@ #include "amaztron.lh" #include "bankshot.lh" #include "cnsector.lh" +#include "ebball.lh" #include "elecdet.lh" #include "comp4.lh" #include "mathmagi.lh" @@ -67,9 +68,6 @@ #include "tandy12.lh" // clickable #include "tc4.lh" -// test-layouts - use external artwork -#include "ebball.lh" - class hh_tms1k_state : public driver_device { @@ -298,8 +296,9 @@ void hh_tms1k_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety m_display_maxy = maxy; // update current state + UINT32 mask = (1 << maxx) - 1; for (int y = 0; y < maxy; y++) - m_display_state[y] = (sety >> y & 1) ? setx : 0; + m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0; display_update(); } @@ -379,7 +378,7 @@ void hh_tms1k_state::mathmagi_display() for (int y = 0; y < 8; y++) { m_7seg_mask[y] = 0x7f; - m_display_state[y] = (m_r >> y & 1) ? ((m_o >> 1 & 0x7f) | (m_o << 7 & 0x80)) : 0; + m_display_state[y] = (m_r >> y & 1) ? (m_o >> 1) : 0; } // R8: custom math symbols digit @@ -802,10 +801,19 @@ MACHINE_CONFIG_END /*************************************************************************** - Entex Baseball + Entex Electronic Baseball (1) * TMS1000NLP MP0914 (die labeled MP0914A) + + This is a handheld LED baseball game. One player controls the batter, the CPU + or other player controls the pitcher. Pitcher throw buttons are on a 'joypad' + obtained from a compartment in the back. Player scores are supposed to be + written down manually, the game doesn't save scores or innings (this annoyance + was resolved in the sequel). For more information, refer to the official manual. + + The overlay graphic is known to have 2 versions: one where the field players + are denoted by words ("left", "center", "short", etc), and an alternate one + with little guys drawn next to the LEDs. - NOTE!: MESS external artwork is recommended lamp translation table: led LDzz from game PCB = MESS lampyx: @@ -827,7 +835,7 @@ void hh_tms1k_state::ebball_display() // R8 is a 7seg m_7seg_mask[8] = 0x7f; - display_matrix(7, 9, m_o, m_r); + display_matrix(7, 9, ~m_o, m_r); } READ8_MEMBER(hh_tms1k_state::ebball_read_k) @@ -859,36 +867,38 @@ WRITE16_MEMBER(hh_tms1k_state::ebball_write_o) static INPUT_PORTS_START( ebball ) PORT_START("IN.0") // R1 - 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( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Change Sides") + PORT_CONFNAME( 0x04, 0x04, "Pitcher" ) + PORT_CONFSETTING( 0x04, "Auto" ) + PORT_CONFSETTING( 0x00, "Manual" ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // R2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Fast Ball") PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.2") // R3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Knuckler") PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.3") // R4 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Curve") PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.4") // R5 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON7 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Slider") PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.5") // Vss! PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter") INPUT_PORTS_END static MACHINE_CONFIG_START( ebball, hh_tms1k_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", TMS1000, 350000) // RC osc. R=43K, C=47pf -> ~350kHz + MCFG_CPU_ADD("maincpu", TMS1000, 375000) // RC osc. R=43K, C=47pf -> ~375kHz MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball_read_k)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball_write_r)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball_write_o)) @@ -1549,7 +1559,7 @@ WRITE16_MEMBER(hh_tms1k_state::stopthief_write_r) m_display_maxx = 7; // R0-R2: select digit - UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7); + UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f; for (int y = 0; y < m_display_maxy; y++) { m_7seg_mask[y] = 0x7f; @@ -2284,7 +2294,7 @@ CONS( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electroni CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE ) CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE ) -CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Baseball (Entex)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) +CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Baseball (Entex)", GAME_SUPPORTS_SAVE ) CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) diff --git a/src/mess/drivers/hh_ucom4.c b/src/mess/drivers/hh_ucom4.c index e3790f19152..4215721dd52 100644 --- a/src/mess/drivers/hh_ucom4.c +++ b/src/mess/drivers/hh_ucom4.c @@ -6,8 +6,8 @@ - serial device etc ------------------------------------------- + serial device etc. +----------------------------------------------- @048 uPD552 1980, Tomy Tennis *085 uPD650 1980, Roland TR-808 102 uPD553 1981, Bandai Block Out @@ -186,8 +186,9 @@ void hh_ucom4_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety m_display_maxy = maxy; // update current state + UINT32 mask = (1 << maxx) - 1; for (int y = 0; y < maxy; y++) - m_display_state[y] = (sety >> y & 1) ? setx : 0; + m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0; display_update(); } @@ -435,6 +436,8 @@ static MACHINE_CONFIG_START( tmtennis, hh_ucom4_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END + + /*************************************************************************** Tomy(tronic) Pac-Man (manufactured in Japan) diff --git a/src/mess/layout/ebball.lay b/src/mess/layout/ebball.lay index 2cb4e1dc217..48bcb51853b 100644 --- a/src/mess/layout/ebball.lay +++ b/src/mess/layout/ebball.lay @@ -4,107 +4,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3