summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/hh_tms1k.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/hh_tms1k.c')
-rw-r--r--src/mess/drivers/hh_tms1k.c70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c
index 83d83023ef0..5d78b892de5 100644
--- a/src/mess/drivers/hh_tms1k.c
+++ b/src/mess/drivers/hh_tms1k.c
@@ -5,7 +5,7 @@
This driver is a collection of simple dedicated handheld and tabletop
toys based around the TMS1000 MCU series. Anything more complex or clearly
part of a series is (or will be) in its own driver.
-
+
Let's use this driver for a list of known devices and their serials,
excluding TI's own products (see for example ticalc1x.c, tispeak.c)
@@ -53,7 +53,7 @@
@MP7334 TMS1400 1981, Coleco Total Control 4
inconsistent:
-
+
@CD7282SL TMS1100 1981, Tandy/RadioShack Tandy-12 (serial is similar to TI Speak & Spell series?)
(* denotes not yet emulated by MESS, @ denotes it's in this driver)
@@ -102,7 +102,7 @@ void hh_tms1k_state::machine_start()
memset(m_display_cache, ~0, sizeof(m_display_cache));
memset(m_display_decay, 0, sizeof(m_display_decay));
memset(m_display_segmask, 0, sizeof(m_display_segmask));
-
+
m_o = 0;
m_r = 0;
m_inp_mux = 0;
@@ -190,7 +190,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hh_tms1k_state::display_decay_tick)
for (int x = 0; x < m_display_maxx; x++)
if (m_display_decay[y][x] != 0)
m_display_decay[y][x]--;
-
+
display_update();
}
@@ -203,7 +203,7 @@ void hh_tms1k_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety
UINT32 mask = (1 << maxx) - 1;
for (int y = 0; y < maxy; y++)
m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
-
+
display_update();
}
@@ -293,7 +293,7 @@ WRITE16_MEMBER(hh_tms1k_state::mathmagi_write_r)
{
// R3,R5-R7,R9,R10: input mux
m_inp_mux = (data >> 3 & 1) | (data >> 4 & 0xe) | (data >> 5 & 0x30);
-
+
// +others:
m_r = data;
mathmagi_display();
@@ -442,10 +442,10 @@ void hh_tms1k_state::amaztron_display()
m_display_segmask[y] = 0x7f;
m_display_state[y] = (m_r >> (y + 8) & 1) ? m_o : 0;
}
-
+
// R6,R7: lamps (-> lamp20,21)
m_display_state[2] = m_r >> 6 & 3;
-
+
display_update();
}
@@ -453,7 +453,7 @@ WRITE16_MEMBER(hh_tms1k_state::amaztron_write_r)
{
// R0-R5: input mux
m_inp_mux = data & 0x3f;
-
+
// R10: speaker out
m_speaker->level_w(data >> 10 & 1);
@@ -582,12 +582,12 @@ MACHINE_CONFIG_END
void hh_tms1k_state::tc4_display()
{
m_display_wait = 50;
-
+
// R5,7,8,9 are 7segs
for (int y = 0; y < 10; y++)
if (y >= 5 && y <= 9 && y != 6)
m_display_segmask[y] = 0x7f;
-
+
// update current state (note: R6 as extra column!)
display_matrix(9, 10, (m_o | (m_r << 2 & 0x100)), m_r);
}
@@ -600,7 +600,7 @@ WRITE16_MEMBER(hh_tms1k_state::tc4_write_r)
// R0-R5: input mux
// R9: to cartridge slot
m_inp_mux = data & 0x23f;
-
+
// R6: led column 8
// +other columns
m_r = data;
@@ -699,13 +699,13 @@ MACHINE_CONFIG_END
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.
@@ -730,7 +730,7 @@ void hh_tms1k_state::ebball_display()
{
// R8 is a 7seg
m_display_segmask[8] = 0x7f;
-
+
display_matrix(7, 9, ~m_o, m_r);
}
@@ -738,10 +738,10 @@ WRITE16_MEMBER(hh_tms1k_state::ebball_write_r)
{
// R1-R5: input mux
m_inp_mux = data >> 1 & 0x1f;
-
+
// R9: speaker out
m_speaker->level_w(data >> 9 & 1);
-
+
// R0-R8: led columns
m_r = data;
ebball_display();
@@ -821,15 +821,15 @@ MACHINE_CONFIG_END
Entex Electronic Baseball 2
* boards are labeled: ZENY
* TMS1000 MCU, MP0923 (die labeled MP0923)
-
+
The Japanese version was published by Gakken, black casing instead of white.
-
+
The sequel to Entex Baseball, this version keeps up with score and innings.
As its predecessor, the pitcher controls are on a separate joypad.
lamp translation table: led zz from game PCB = MESS lampyx:
-
+
00 = - 10 = lamp94 20 = lamp74 30 = lamp50
01 = lamp53 11 = lamp93 21 = lamp75 31 = lamp51
02 = lamp7 12 = lamp92 22 = lamp80 32 = lamp52
@@ -848,7 +848,7 @@ void hh_tms1k_state::ebball2_display()
// the first 3 are 7segs
for (int y = 0; y < 3; y++)
m_display_segmask[y] = 0x7f;
-
+
display_matrix(8, 10, ~m_o, m_r ^ 0x7f);
}
@@ -856,10 +856,10 @@ WRITE16_MEMBER(hh_tms1k_state::ebball2_write_r)
{
// R3-R6: input mux
m_inp_mux = data >> 3 & 0xf;
-
+
// R10: speaker out
m_speaker->level_w(data >> 10 & 1);
-
+
// R0-R9: led columns
m_r = data;
ebball2_display();
@@ -932,14 +932,14 @@ MACHINE_CONFIG_END
* boards are labeled: ZENY
* TMS1100NLL 6007 MP1204 (die labeled MP1204)
* 2*SN75492N LED display driver
-
+
This is another improvement over Entex Baseball, where gameplay is a bit more
varied. Like the others, the pitcher controls are on a separate joypad.
lamp translation table: led zz from game PCB = MESS lampyx:
note: unlabeled panel leds are listed here as Sz, Bz, Oz, Iz, z left-to-right
-
+
00 = - 10 = lamp75 20 = lamp72
01 = lamp60 11 = lamp65 21 = lamp84
02 = lamp61 12 = lamp55 22 = lamp85
@@ -969,12 +969,12 @@ void hh_tms1k_state::ebball3_display()
// R0,R1 are normal 7segs
m_display_segmask[0] = m_display_segmask[1] = 0x7f;
-
+
// R4,R7 contain segments(only F and B) for the two other digits
m_display_state[10] = (m_display_state[4] & 0x20) | (m_display_state[7] & 0x02);
m_display_state[11] = ((m_display_state[4] & 0x10) | (m_display_state[7] & 0x01)) << 1;
m_display_segmask[10] = m_display_segmask[11] = 0x22;
-
+
display_update();
}
@@ -982,10 +982,10 @@ WRITE16_MEMBER(hh_tms1k_state::ebball3_write_r)
{
// R0-R2: input mux
m_inp_mux = data & 7;
-
+
// R10: speaker out
m_speaker->level_w(data >> 10 & 1);
-
+
// R0-R9: led columns
m_r = data;
ebball3_display();
@@ -1118,7 +1118,7 @@ WRITE16_MEMBER(hh_tms1k_state::elecdet_write_o)
{
// O0,O1,O4,O6: input mux
m_inp_mux = (data & 3) | (data >> 2 & 4) | (data >> 3 & 8);
-
+
// O0-O6: led segments A-G
// O7: speaker out
m_o = data;
@@ -1218,7 +1218,7 @@ void hh_tms1k_state::starwbc_display()
{
// R6,R8 are 7segs
m_display_segmask[6] = m_display_segmask[8] = 0x7f;
-
+
display_matrix(8, 10, m_o, m_r);
}
@@ -1569,7 +1569,7 @@ WRITE16_MEMBER(hh_tms1k_state::cnsector_write_r)
// R6-R9: direction leds (-> lamp60-63)
m_display_state[6] = data >> 6 & 0xf;
-
+
display_update();
}
@@ -1577,7 +1577,7 @@ WRITE16_MEMBER(hh_tms1k_state::cnsector_write_o)
{
// O0-O4: input mux
m_inp_mux = data & 0x1f;
-
+
// O0-O7: digit segments
m_o = data;
}
@@ -1646,7 +1646,7 @@ MACHINE_CONFIG_END
Parker Bros Merlin handheld game, by Bob Doyle
* TMS1100NLL MP3404A-N2
* red LEDs and 1-bit sound
-
+
Also published in Japan by Tomy as "Dr. Smith", white case instead of red.
The one with dark-blue case is the rare sequel Master Merlin. More sequels
followed too, but on other hardware.
@@ -1780,7 +1780,7 @@ WRITE16_MEMBER(hh_tms1k_state::stopthief_write_o)
{
// O0,O6: input mux
m_inp_mux = (data & 1) | (data >> 5 & 2);
-
+
// O3: speaker out
// O0-O2,O4-O7: led segments A-G
m_o = data;