summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2015-03-14 05:34:43 +0100
committer hap <happppp@users.noreply.github.com>2015-03-14 05:34:43 +0100
commite7ffb8a6b04ff317180ddc41dc9108a32465bf66 (patch)
tree42f5a8adb63d6e8b362de6949028ba9582bf9fa8
parentbf61c9a5e2a24c5d1a4765c5ad717bee907ef321 (diff)
added astrocmd and kingman (Astro Command probably works fine, i just haven't tested it yet)
-rw-r--r--src/mess/drivers/hh_hmcs40.c49
-rw-r--r--src/mess/drivers/hh_ucom4.c113
-rw-r--r--src/mess/mess.lst2
3 files changed, 158 insertions, 6 deletions
diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c
index 7f903114df6..58c1370a611 100644
--- a/src/mess/drivers/hh_hmcs40.c
+++ b/src/mess/drivers/hh_hmcs40.c
@@ -15,7 +15,7 @@
*62 HD38750A 1982, Actronics(Hanzawa) Pack'n Maze
*04 HD38800A 1980, Gakken Heiankyo Alien
- *23 HD38800A 198?, Tomy Kingman
+ @23 HD38800B 1982, Tomy Kingman (THF-01II)
*24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man
@25 HD38800A 1981, Coleco Alien Attack
@27 HD38800A 1981, Bandai Packri Monster (DM-21Z)
@@ -336,7 +336,7 @@ WRITE8_MEMBER(hh_hmcs40_state::alnattck_plate_w)
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- UINT32 plate = BITSWAP16((UINT16)m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000);
+ UINT32 plate = BITSWAP16(m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000);
display_matrix(20, 10, plate, m_grid);
}
@@ -624,6 +624,41 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tomy Kingman (manufactured in Japan)
+ * boards are labeled THF-01II 2E138E01/2E128E02
+ * Hitachi HD38800B23 MCU
+ * cyan/red/blue VFD display Futaba DM-65ZK 3A
+
+ NOTE!: MESS external artwork is recommended
+
+***************************************************************************/
+
+static INPUT_PORTS_START( kingman )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( kingman, hh_hmcs40_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
+
+// MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Tomy(tronic) Tron (manufactured in Japan)
* boards are labeled THN-02 2E114E07
* Hitachi HD38800A88 MCU
@@ -739,6 +774,13 @@ ROM_START( pbqbert )
ROM_END
+ROM_START( kingman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b23", 0x0000, 0x1000, CRC(f8dfe14f) SHA1(660610d92ae7e5f92bddf5a3bcc2296b2ec3946b) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
ROM_START( tmtron )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) )
@@ -763,4 +805,5 @@ CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
-CONS( 1982, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1984, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
diff --git a/src/mess/drivers/hh_ucom4.c b/src/mess/drivers/hh_ucom4.c
index 4f72e9e36f9..d420140d3bc 100644
--- a/src/mess/drivers/hh_ucom4.c
+++ b/src/mess/drivers/hh_ucom4.c
@@ -19,7 +19,7 @@
*128 uPD650C 1982, Roland TR-606
133 uPD650C 1982, Roland TB-303
@160 uPD553C 1982, Tomy Pac Man (TN-08)
- *202 uPD553C 1982, Epoch Astro Command
+ @202 uPD553C 1982, Epoch Astro Command
@206 uPD553C 1982, Epoch Dracula
@258 uPD553C 1984, Tomy Alien Chase (TN-16)
@@ -88,6 +88,10 @@ public:
DECLARE_WRITE8_MEMBER(splasfgt_grid_w);
DECLARE_WRITE8_MEMBER(splasfgt_plate_w);
+ void astrocmd_display();
+ DECLARE_WRITE8_MEMBER(astrocmd_grid_w);
+ DECLARE_WRITE8_MEMBER(astrocmd_plate_w);
+
DECLARE_WRITE8_MEMBER(edracula_grid_w);
DECLARE_WRITE8_MEMBER(edracula_plate_w);
@@ -476,6 +480,102 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Epoch Astro Command (manufactured in Japan)
+ * PCB label 96111
+ * NEC uCOM-43 MCU, labeled D553C 202
+ * cyan/red VFD display NEC FIP9AM20T NO.42, with color overlay
+
+ known releases:
+ - Japan: Astro Command
+ - USA: Astro Command, published by Tandy
+ - UK: Scramble, published by Grandstand
+
+ NOTE!: MESS external artwork is recommended
+
+***************************************************************************/
+
+void hh_ucom4_state::astrocmd_display()
+{
+ UINT32 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
+
+ display_matrix(17, 9, plate, grid);
+}
+
+WRITE8_MEMBER(hh_ucom4_state::astrocmd_grid_w)
+{
+ // C,D(,E3): vfd matrix grid
+ int shift = (offset - NEC_UCOM4_PORTC) * 4;
+ m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
+
+ astrocmd_display();
+}
+
+WRITE8_MEMBER(hh_ucom4_state::astrocmd_plate_w)
+{
+ // E01,F,G,H,I: vfd matrix plate
+ int shift = (offset - NEC_UCOM4_PORTE) * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+
+ if (offset == NEC_UCOM4_PORTE)
+ {
+ // E2: speaker out
+ m_speaker->level_w(data >> 2 & 1);
+
+ // E3: vfd matrix grid 8
+ astrocmd_grid_w(space, offset, data >> 3 & 1);
+ }
+ else
+ astrocmd_display();
+}
+
+
+static INPUT_PORTS_START( astrocmd )
+ PORT_START("IN.0") // port A
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+
+ PORT_START("IN.1") // port B
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( astrocmd, hh_ucom4_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
+ MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
+ MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
+ MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
+ MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
+ MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
+ MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
+ MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
+ MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
+ MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Epoch Dracula (manufactured in Japan)
* PCB label 96121
* NEC uCOM-43 MCU, labeled D553C 206
@@ -719,7 +819,7 @@ MACHINE_CONFIG_END
void hh_ucom4_state::tmpacman_display()
{
- UINT8 grid = BITSWAP8((UINT8)m_grid,0,1,2,3,4,5,6,7);
+ UINT32 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
display_matrix(19, 8, plate | 0x100, grid); // plate 8 (maze) is always on
@@ -929,9 +1029,15 @@ ROM_START( splasfgt )
ROM_END
+ROM_START( astrocmd )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) )
+ROM_END
+
+
ROM_START( edracula )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-206", 0x0000, 0x0800, CRC(b524857b) SHA1(c1c89ed5dd4bb1e6e98462dc8fa5af2aa48d8ede) )
+ ROM_LOAD( "d553c-206.s01", 0x0000, 0x0800, CRC(b524857b) SHA1(c1c89ed5dd4bb1e6e98462dc8fa5af2aa48d8ede) )
ROM_END
@@ -958,6 +1064,7 @@ ROM_END
CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
+CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
diff --git a/src/mess/mess.lst b/src/mess/mess.lst
index 4c788c05d81..47c23faba1f 100644
--- a/src/mess/mess.lst
+++ b/src/mess/mess.lst
@@ -2184,6 +2184,7 @@ cpacmanr1 //
egalaxn2 // Entex
epacman2 // Entex
pbqbert // Parker Brothers
+kingman // Tomy
tmtron // Tomy
maniac // Ideal
@@ -2208,6 +2209,7 @@ tandy12 // Tandy Radio Shack
ssfball // Bambino
splasfgt // Bambino
+astrocmd // Epoch
edracula // Epoch
tmpacman // Tomy
tmtennis // Tomy