(MESS)New games added or promoted to working

-----------------
Coleco Galaxian [hap, Kevin Horton, Olivier Galibert]
Bambino Soccer [hap, Kevin Horton]
Bambino Safari [hap, Kevin Horton]
Epoch Invader From Space [hap, Kevin Horton]
Epoch Football [hap, Kevin Horton]
Epoch Galaxy II [hap, Kevin Horton]
Tomy Cosmic Combat [hap, Kevin Horton]
Gakken Heiankyo Alien [hap, Kevin Horton, Rik]
Gakken Dig Dug [hap, Kevin Horton, Rik]


Added as Not-working:
--------------------
Gakken Crazy Kong [hap, Kevin Horton, Rik]
This commit is contained in:
hap 2015-04-20 23:50:27 +02:00
parent 500a31ad57
commit c61b2d707d
5 changed files with 1233 additions and 85 deletions

View File

@ -10,20 +10,23 @@
serial device etc. serial device etc.
---------------------------------------------------------------- ----------------------------------------------------------------
@07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B) @07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B)
@08 HD38750A 1979, Bambino Basketball (ET-05) @08 HD38750A 1979, Bambino Dribble Away Basketball (ET-05)
@45 HD38750A 1981, VTech Invaders @45 HD38750A 1981, VTech Invaders
*58 HD38750A 1982, Ludotronic(Hanzawa) Grand Prix Turbo *58 HD38750A 1982, Ludotronic(Hanzawa) Grand Prix Turbo
*62 HD38750A 1982, Actronics(Hanzawa) Pack'n Maze *62 HD38750A 1982, Actronics(Hanzawa) Pack'n Maze
*04 HD38800A 1980, Gakken Heiankyo Alien @04 HD38800A 1980, Gakken Heiankyo Alien
@25 HD38800A 1981, Coleco Alien Attack @25 HD38800A 1981, Coleco Alien Attack
@27 HD38800A 1981, Bandai Packri Monster @27 HD38800A 1981, Bandai Packri Monster
*31 HD38800A 1981, Entex Select-a-Game cartridge: Space Invader 2 (have dump)
*41 HD38800A 1982, Gakken Puck Monster *41 HD38800A 1982, Gakken Puck Monster
*51 HD38800A 1981, Actronics(Hanzawa) Twinvader *51 HD38800A 1981, Actronics(Hanzawa) Twinvader
@70 HD38800A 1982, Coleco Galaxian @70 HD38800A 1982, Coleco Galaxian
@73 HD38800A 1982, Bandai(Mattel) Star Hawk @73 HD38800A 1982, Bandai(Mattel) Star Hawk
@77 HD38800A 1982, Bandai Frisky Tom @77 HD38800A 1982, Bandai Frisky Tom
@88 HD38800A 1984, Tomy Tron (THN-02)
@01 HD38800B 1982, Gakken Crazy Kong
@23 HD38800B 1982, Tomy Kingman (THF-01II) @23 HD38800B 1982, Tomy Kingman (THF-01II)
*24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man *24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man
*29 HD38800B 1984, Tomy Portable 6000 Bombman *29 HD38800B 1984, Tomy Portable 6000 Bombman
@ -41,11 +44,24 @@
@45 HD38820A 1982, Coleco Donkey Kong @45 HD38820A 1982, Coleco Donkey Kong
@49 HD38820A 1983, Bandai Zackman @49 HD38820A 1983, Bandai Zackman
@61 HD38820A 1983, Coleco Ms. Pac-Man @61 HD38820A 1983, Coleco Ms. Pac-Man
@69 HD38820A 1983, Gakken Dig Dug
@70 HD38820A 1983, Parker Brothers Q*Bert @70 HD38820A 1983, Parker Brothers Q*Bert
@88 HD38820A 1984, Tomy Tron (THN-02)
(* denotes not yet emulated by MESS, @ denotes it's in this driver) (* denotes not yet emulated by MESS, @ denotes it's in this driver)
TODO:
- cdkong discrete sound (simple volume decay, simulated for now)
- cgalaxn discrete sound (alien attacking sound effect)
- vinvader locks up at boot
- gckong random lockups (tap the jump button repeatedly): mcu stack overflow,
works ok if stack levels is increased, 38800 B rev. has more stack levels?
- epacman booting the game in demo mode, pacman should go straight to the
upper-left power pill: mcu cycle/interrupt timing related
- Though very uncommon when compared to games with LED/lamp display,
some games may manipulate VFD plate brightness by strobing it longer,
eg. cgalaxn when the player ship explodes.
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
@ -291,7 +307,7 @@ INPUT_CHANGED_MEMBER(hh_hmcs40_state::single_interrupt_line)
/*************************************************************************** /***************************************************************************
Bambino Basketball - Dribble Away (manufactured in Japan) Bambino Dribble Away Basketball (manufactured in Japan)
* PCBs are labeled Emix Corp. ET-05 * PCBs are labeled Emix Corp. ET-05
* Hitachi HD38750A08 MCU * Hitachi HD38750A08 MCU
* green VFD display Emix-106, with bezel overlay * green VFD display Emix-106, with bezel overlay
@ -501,14 +517,14 @@ static INPUT_PORTS_START( bmboxing )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // port D PORT_START("IN.4") // port D
PORT_CONFNAME( 0x01, 0x00, "Players" ) PORT_CONFNAME( 0x0001, 0x0000, "Players" )
PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x0000, "1" )
PORT_CONFSETTING( 0x01, "2" ) PORT_CONFSETTING( 0x0001, "2" )
PORT_CONFNAME( 0x02, 0x00, "Skill Level" ) PORT_CONFNAME( 0x0002, 0x0000, "Skill Level" )
PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x0000, "1" )
PORT_CONFSETTING( 0x02, "2" ) PORT_CONFSETTING( 0x0002, "2" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_START )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( bmboxing, bmboxing_state ) static MACHINE_CONFIG_START( bmboxing, bmboxing_state )
@ -722,7 +738,7 @@ WRITE16_MEMBER(packmon_state::grid_w)
READ16_MEMBER(packmon_state::input_r) READ16_MEMBER(packmon_state::input_r)
{ {
// D5: multiplexed inputs // D5: multiplexed inputs
return read_inputs(5); return read_inputs(5) & 0x20;
} }
@ -773,10 +789,10 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Bandai(Mattel) Star Hawk (manufactured in Japan) Bandai/Mattel Star Hawk (manufactured in Japan)
* PCBs are labeled Kaken, PT-317B * PCBs are labeled Kaken, PT-317B
* Hitachi HD38800A73 MCU * Hitachi HD38800A73 MCU
* cyan/red VFD display Futaba DM-41ZK, with partial color overlay * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel
Kaken was a subsidiary of Bandai. The original Japanese release is unknown, Kaken was a subsidiary of Bandai. The original Japanese release is unknown,
was it canceled and only released in the USA? was it canceled and only released in the USA?
@ -908,7 +924,7 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Bandai Zackman "The Pit, FL Exploration of Space" (manufactured in Japan) Bandai Zackman "The Pit, FL Exploration of Space" (manufactured in Japan)
* Hitachi HD38820A49 MCU * Hitachi QFP HD38820A49 MCU
* cyan/red/yellow VFD display Futaba DM-53Z 3E, with color overlay * cyan/red/yellow VFD display Futaba DM-53Z 3E, with color overlay
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
@ -1057,7 +1073,7 @@ WRITE8_MEMBER(alnattck_state::plate_w)
m_plate = (m_plate & ~(0xf << shift)) | (data << shift); m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display // update display
UINT32 plate = BITSWAP16(m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000); UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,16,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15);
display_matrix(20, 10, plate, m_grid); display_matrix(20, 10, plate, m_grid);
} }
@ -1079,14 +1095,14 @@ WRITE16_MEMBER(alnattck_state::grid_w)
READ16_MEMBER(alnattck_state::input_r) READ16_MEMBER(alnattck_state::input_r)
{ {
// D5: multiplexed inputs // D5: multiplexed inputs
return read_inputs(7); return read_inputs(7) & 0x20;
} }
// config // config
static INPUT_PORTS_START( alnattck ) static INPUT_PORTS_START( alnattck )
PORT_START("IN.0") // D5 D7 PORT_START("IN.0") // D7 line D5
PORT_CONFNAME( 0x20, 0x00, "Skill Level" ) PORT_CONFNAME( 0x20, 0x00, "Skill Level" )
PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x20, "2" ) PORT_CONFSETTING( 0x20, "2" )
@ -1104,10 +1120,10 @@ static INPUT_PORTS_START( alnattck )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_START("IN.5") // D12 line D5 PORT_START("IN.5") // D12 line D5
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Move") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Move")
PORT_START("IN.6") // D13 line D5 PORT_START("IN.6") // D13 line D5
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Fire") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Fire")
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( alnattck, alnattck_state ) static MACHINE_CONFIG_START( alnattck, alnattck_state )
@ -1140,7 +1156,7 @@ MACHINE_CONFIG_END
Coleco Donkey Kong (manufactured in Taiwan) Coleco Donkey Kong (manufactured in Taiwan)
* PCB label Coleco Rev C 75790 DK * PCB label Coleco Rev C 75790 DK
* Hitachi HD38820A45 MCU * Hitachi QFP HD38820A45 MCU
* cyan/red VFD display Futaba DM-47ZK 2K, with color overlay * cyan/red VFD display Futaba DM-47ZK 2K, with color overlay
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
@ -1213,15 +1229,15 @@ WRITE16_MEMBER(cdkong_state::grid_w)
// config // config
static INPUT_PORTS_START( cdkong ) static INPUT_PORTS_START( cdkong )
PORT_START("IN.0") // port D PORT_START("IN.0") // INT0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // INT0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END INPUT_PORTS_END
@ -1246,7 +1262,7 @@ static MACHINE_CONFIG_START( cdkong, cdkong_state )
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cdkong_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cdkong_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(cdkong_state, grid_w)) MCFG_HMCS40_WRITE_D_CB(WRITE16(cdkong_state, grid_w))
MCFG_HMCS40_READ_D_CB(IOPORT("IN.0")) MCFG_HMCS40_READ_D_CB(IOPORT("IN.1"))
MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY)) MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
@ -1289,9 +1305,11 @@ public:
{ } { }
void prepare_display(); void prepare_display();
DECLARE_WRITE16_MEMBER(plate_w);
DECLARE_WRITE8_MEMBER(grid_w); DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE16_MEMBER(plate_w);
DECLARE_READ8_MEMBER(input_r); DECLARE_READ8_MEMBER(input_r);
DECLARE_INPUT_CHANGED_MEMBER(player_switch);
}; };
// handlers // handlers
@ -1299,23 +1317,11 @@ public:
void cgalaxn_state::prepare_display() void cgalaxn_state::prepare_display()
{ {
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3); UINT16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3);
UINT16 plate = BITSWAP16(m_plate,15,14,5,4,3,2,1,0,7,11,12,9,8,10,6,13); UINT16 plate = BITSWAP16(m_plate,15,14,6,5,4,3,2,1,7,8,9,10,11,0,12,13);
display_matrix(14, 12, plate, grid); display_matrix(15, 12, plate, grid);
} }
WRITE8_MEMBER(cgalaxn_state::grid_w) WRITE8_MEMBER(cgalaxn_state::grid_w)
{
// D0: speaker out
m_speaker->level_w(data & 1);
// D1: speaker on?
// D2-D15: vfd matrix plate
m_plate = data >> 2 & 0x3fff;
prepare_display();
}
WRITE16_MEMBER(cgalaxn_state::plate_w)
{ {
// R10,R11: input mux // R10,R11: input mux
if (offset == HMCS40_PORT_R1X) if (offset == HMCS40_PORT_R1X)
@ -1327,6 +1333,18 @@ WRITE16_MEMBER(cgalaxn_state::plate_w)
prepare_display(); prepare_display();
} }
WRITE16_MEMBER(cgalaxn_state::plate_w)
{
// D0: speaker out
m_speaker->level_w(data & 1);
// D1: start alien attack whine sound effect (edge triggered)
// D2-D15: vfd matrix plate
m_plate = (m_plate & 0x4000) | (data >> 2 & 0x3fff);
prepare_display();
}
READ8_MEMBER(cgalaxn_state::input_r) READ8_MEMBER(cgalaxn_state::input_r)
{ {
// R0x: multiplexed inputs // R0x: multiplexed inputs
@ -1344,7 +1362,7 @@ static INPUT_PORTS_START( cgalaxn )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_START("IN.1") // R11 port R0x PORT_START("IN.1") // R11 port R0x
PORT_CONFNAME( 0x01, 0x01, "Players" ) PORT_CONFNAME( 0x01, 0x01, "Players" ) PORT_CHANGED_MEMBER(DEVICE_SELF, cgalaxn_state, player_switch, NULL)
PORT_CONFSETTING( 0x01, "1" ) PORT_CONFSETTING( 0x01, "1" )
PORT_CONFSETTING( 0x00, "2" ) PORT_CONFSETTING( 0x00, "2" )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -1356,6 +1374,13 @@ static INPUT_PORTS_START( cgalaxn )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END INPUT_PORTS_END
INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch)
{
// 2-player switch directly enables plate 14
m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000);
}
static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state ) static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state )
/* basic machine hardware */ /* basic machine hardware */
@ -1385,7 +1410,7 @@ MACHINE_CONFIG_END
Coleco Pac-Man (manufactured in Taiwan) Coleco Pac-Man (manufactured in Taiwan)
* PCB label Coleco 75690 * PCB label Coleco 75690
* Hitachi HD38820A28/29 MCU * Hitachi QFP HD38820A28/29 MCU
* cyan/red VFD display Futaba DM-34Z 2A, with color overlay * cyan/red VFD display Futaba DM-34Z 2A, with color overlay
known releases: known releases:
@ -1506,7 +1531,7 @@ MACHINE_CONFIG_END
Coleco Ms. Pac-Man (manufactured in Taiwan) Coleco Ms. Pac-Man (manufactured in Taiwan)
* PCB label Coleco 911171 * PCB label Coleco 911171
* Hitachi HD38820A61 MCU * Hitachi QFP HD38820A61 MCU
* cyan/red VFD display Futaba DM-60Z 3I, with color overlay * cyan/red VFD display Futaba DM-60Z 3I, with color overlay
Select game mode on start: Select game mode on start:
@ -1557,7 +1582,7 @@ WRITE16_MEMBER(cmspacmn_state::grid_w)
// D5-D15: vfd matrix grid // D5-D15: vfd matrix grid
m_grid = data >> 5 & 0x7ff; m_grid = data >> 5 & 0x7ff;
// D0,D1: plate 11+17,6+22 (update display there) // D0,D1: more plates (update display there)
plate_w(space, 6 + HMCS40_PORT_R1X, data & 3); plate_w(space, 6 + HMCS40_PORT_R1X, data & 3);
} }
@ -1621,7 +1646,8 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Entex Galaxian 2 (manufactured in Japan) Entex Galaxian 2 (manufactured in Japan)
* Hitachi HD38820A13 MCU * PCB labels ENTEX GALAXIAN PB-118/116/097 80-210137/135/114
* Hitachi QFP HD38820A13 MCU
* cyan/red/green VFD display Futaba DM-20 * cyan/red/green VFD display Futaba DM-20
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
@ -1688,7 +1714,7 @@ static INPUT_PORTS_START( egalaxn2 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // "
PORT_START("IN.1") // D2 port R0x PORT_START("IN.1") // D2 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // "
@ -1742,8 +1768,9 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Entex Pac Man 2 (manufactured in Japan) Entex Pac Man 2 (manufactured in Japan)
* Hitachi HD38820A23 MCU * PCB labels ENTEX PAC-MAN PB-093/094 80-210149/50/51
* cyan/red VFD display Futaba DM-28Z 1G * Hitachi QFP HD38820A23 MCU
* cyan/red VFD display Futaba DM-28Z 1G(cyan Pac-Man) or DM-28 1K(orange Pac-Man)
2 VFD revisions are known, the difference is Pac-Man's color: cyan or red. 2 VFD revisions are known, the difference is Pac-Man's color: cyan or red.
@ -1821,10 +1848,374 @@ MACHINE_CONFIG_END
/***************************************************************************
Gakken Heiankyo Alien (manufactured in Japan)
* Hitachi HD38800A04 MCU
* cyan/red VFD display Futaba DM-11Z 1H
known releases:
- Japan: Heiankyo Alien
- USA: Earth Invaders, published by CGL
NOTE!: MESS external artwork is recommended
***************************************************************************/
class ghalien_state : public hh_hmcs40_state
{
public:
ghalien_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
DECLARE_READ16_MEMBER(input_r);
};
// handlers
WRITE8_MEMBER(ghalien_state::plate_w)
{
// R0x-R3x(,D10-D13): vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,14,12,10,8,9,13,15,2,0,1,3,11,7,5,4,6,19,17,16,18);
display_matrix(20, 10, plate, grid);
}
WRITE16_MEMBER(ghalien_state::grid_w)
{
// D14: speaker out
m_speaker->level_w(data >> 14 & 1);
// D0-D6: input mux
m_inp_mux = data & 0x7f;
// D0-D9: vfd matrix grid
m_grid = data & 0x3ff;
// D10-D13: more plates (update display there)
plate_w(space, 4, data >> 10 & 0xf);
}
READ16_MEMBER(ghalien_state::input_r)
{
// D15: multiplexed inputs
return read_inputs(7) & 0x8000;
}
// config
static INPUT_PORTS_START( ghalien )
PORT_START("IN.0") // D0 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way
PORT_START("IN.1") // D1 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // "
PORT_START("IN.2") // D2 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // "
PORT_START("IN.3") // D3 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // "
PORT_START("IN.4") // D4 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Dig")
PORT_START("IN.5") // D5 line D15
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Bury")
PORT_START("IN.6") // D6 line D15
PORT_CONFNAME( 0x8000, 0x0000, DEF_STR( Difficulty ) )
PORT_CONFSETTING( 0x0000, "Amateur" )
PORT_CONFSETTING( 0x8000, "Professional" )
INPUT_PORTS_END
static MACHINE_CONFIG_START( ghalien, ghalien_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation
MCFG_HMCS40_WRITE_R_CB(0, WRITE8(ghalien_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(ghalien_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(ghalien_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(ghalien_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(ghalien_state, grid_w))
MCFG_HMCS40_READ_D_CB(READ16(ghalien_state, input_r))
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
/***************************************************************************
Gakken Crazy Kong (manufactured in Japan)
* PCB label ZENY 5603601
* Hitachi HD38800B01 MCU
* cyan/red/blue VFD display Futaba DM-54Z 2H, with bezel overlay
known releases:
- Japan: Crazy Kong
- USA: Super Kong, published by CGL
NOTE!: MESS external artwork is recommended
***************************************************************************/
class gckong_state : public hh_hmcs40_state
{
public:
gckong_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
DECLARE_INPUT_CHANGED_MEMBER(input_changed);
};
// handlers
WRITE8_MEMBER(gckong_state::plate_w)
{
// R0x-R3x(,D0,D1): vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0);
display_matrix(32, 11, plate, grid);
}
WRITE16_MEMBER(gckong_state::grid_w)
{
// D2: speaker out
m_speaker->level_w(data >> 2 & 1);
// D5-D8: input mux
UINT8 inp_mux = data >> 5 & 0xf;
if (inp_mux != m_inp_mux)
{
m_inp_mux = inp_mux;
update_int1();
}
// D5-D15: vfd matrix grid
m_grid = data >> 5 & 0x7ff;
// D0,D1: more plates (update display there)
plate_w(space, 4, data & 3);
}
void gckong_state::update_int1()
{
// INT1 on multiplexed inputs
set_interrupt(1, read_inputs(4));
}
// config
static INPUT_PORTS_START( gckong )
PORT_START("IN.0") // D5 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL)
PORT_START("IN.1") // D6 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL)
PORT_START("IN.2") // D7 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL)
PORT_START("IN.3") // D8 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL)
PORT_START("IN.4") // INT0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0010, 0x0000, "Skill Level" )
PORT_CONFSETTING( 0x0000, "A" )
PORT_CONFSETTING( 0x0010, "B" )
PORT_BIT( 0xffef, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(gckong_state::input_changed)
{
update_int1();
}
static MACHINE_CONFIG_START( gckong, gckong_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation
MCFG_HMCS40_WRITE_R_CB(0, WRITE8(gckong_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(gckong_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(gckong_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(gckong_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(gckong_state, grid_w))
MCFG_HMCS40_READ_D_CB(IOPORT("IN.5"))
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
/***************************************************************************
Gakken Dig Dug (manufactured in Japan)
* PCB label Gakken DIG-DAG KS-004283(A/B)
* Hitachi QFP HD38820A69 MCU
* cyan/red/green VFD display Futaba DM-69Z 3F, with color overlay
NOTE!: MESS external artwork is recommended
***************************************************************************/
class gdigdug_state : public hh_hmcs40_state
{
public:
gdigdug_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
DECLARE_INPUT_CHANGED_MEMBER(input_changed);
};
// handlers
WRITE8_MEMBER(gdigdug_state::plate_w)
{
// R0x-R6x(,D0-D3): vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
UINT32 plate = BITSWAP32(m_plate,30,31,0,1,2,3,4,5,6,7,20,21,22,27,26,25,28,29,24,23,15,14,13,12,8,9,10,11,19,18,17,16);
display_matrix(32, 9, plate, m_grid);
}
WRITE16_MEMBER(gdigdug_state::grid_w)
{
// D6: speaker out
m_speaker->level_w(data >> 6 & 1);
// D11-D15: input mux
UINT8 inp_mux = data >> 11 & 0x1f;
if (inp_mux != m_inp_mux)
{
m_inp_mux = inp_mux;
update_int1();
}
// D7-D15: vfd matrix grid
m_grid = data >> 7 & 0x1ff;
// D0-D3: more plates (update display there)
plate_w(space, 7, data & 0xf);
}
void gdigdug_state::update_int1()
{
// INT1 on multiplexed inputs
set_interrupt(1, read_inputs(5));
}
// config
static INPUT_PORTS_START( gdigdug )
PORT_START("IN.0") // D11 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.1") // D12 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.2") // D13 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.3") // D14 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.4") // D15 INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.5") // INT0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(gdigdug_state::input_changed)
{
update_int1();
}
static MACHINE_CONFIG_START( gdigdug, gdigdug_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
MCFG_HMCS40_WRITE_R_CB(0, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(4, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(gdigdug_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(gdigdug_state, grid_w))
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
/*************************************************************************** /***************************************************************************
Parker Brothers Q*Bert Parker Brothers Q*Bert
* Hitachi HD38820A70 MCU * PCB label 13662 REV-4
* Hitachi QFP HD38820A70 MCU
* cyan/red/green/darkgreen VFD display Itron CP5137 * cyan/red/green/darkgreen VFD display Itron CP5137
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
@ -2211,11 +2602,11 @@ static INPUT_PORTS_START( vinvader )
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // port D PORT_START("IN.1") // port D
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CONFNAME( 0x0002, 0x0000, "Skill Level")
PORT_CONFNAME( 0x08, 0x00, "Skill Level") PORT_CONFSETTING( 0x0000, "1" )
PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x0002, "2" )
PORT_CONFSETTING( 0x08, "2" ) PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x05, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0xfff5, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( vinvader, vinvader_state ) static MACHINE_CONFIG_START( vinvader, vinvader_state )
@ -2278,6 +2669,13 @@ ROM_START( packmon )
ROM_END ROM_END
ROM_START( msthawk )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( zackman ) ROM_START( zackman )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) ) ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
@ -2340,9 +2738,23 @@ ROM_START( epacman2 )
ROM_END ROM_END
ROM_START( msthawk ) ROM_START( ghalien )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) ) ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( gckong )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( gdigdug )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) )
ROM_CONTINUE( 0x1e80, 0x0100 ) ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END ROM_END
@ -2377,7 +2789,7 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Basketball - Dribble Away", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Dribble Away Basketball", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
@ -2387,7 +2799,7 @@ CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Banda
CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND ) CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND )
CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND )
CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
@ -2395,6 +2807,10 @@ CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Colec
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakken", "Heiankyo Alien (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )

View File

@ -9,6 +9,7 @@
serial device etc. serial device etc.
----------------------------------------------------------- -----------------------------------------------------------
@036 1655A 1979, Ideal Maniac @036 1655A 1979, Ideal Maniac
*061 1655A 1980, Lakeside Le Boom (have dump)
*110 1650A 1979, Tiger Rocket Pinball *110 1650A 1979, Tiger Rocket Pinball
*192 1650 19??, (a phone dialer, have dump) *192 1650 19??, (a phone dialer, have dump)
*255 1655 19??, (a talking clock, have dump) *255 1655 19??, (a talking clock, have dump)
@ -147,7 +148,7 @@ void hh_pic16_state::display_update()
int state = active_state[y] >> x & 1; int state = active_state[y] >> x & 1;
char buf1[0x10]; // lampyx char buf1[0x10]; // lampyx
char buf2[0x10]; // y.x char buf2[0x10]; // y.x
if (x == m_display_maxx) if (x == m_display_maxx)
{ {
// always-on if selected // always-on if selected

View File

@ -54,7 +54,7 @@
*MP7324 TMS1400? 1985, Coleco Talking Teacher *MP7324 TMS1400? 1985, Coleco Talking Teacher
MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c
@MP7334 TMS1400 1981, Coleco Total Control 4 @MP7334 TMS1400 1981, Coleco Total Control 4
*MP7573 ? 1981, Entex Select-a-Game cartridge: Football (? note: 40-pin, VFD-capable) *MP7573 ? 1981, Entex Select-a-Game cartridge: Football 4 (? note: 40-pin, VFD-capable)
inconsistent: inconsistent:

View File

@ -2,7 +2,19 @@
// copyright-holders:hap, Kevin Horton // copyright-holders:hap, Kevin Horton
/*************************************************************************** /***************************************************************************
NEC uCOM4 MCU tabletops/handhelds or other simple devices. NEC uCOM4 MCU tabletops/handhelds or other simple devices,
most of them are VFD electronic games/toys.
Commonly used VFD(vacuum fluorescent display) are by NEC or Futaba.
NEC FIP9AM20T (example, Epoch Astro Command)
grcss
FIP = fluorescent indicator panel
g = number of grids
A = revision of the VFD
M = custom display
20 = unique display part number
known chips: known chips:
@ -10,16 +22,19 @@
serial device etc. serial device etc.
---------------------------------------------------------------- ----------------------------------------------------------------
@017 uPD552C 1979, Bambino UFO Master-Blaster Station (ET-02) @017 uPD552C 1979, Bambino UFO Master-Blaster Station (ET-02)
@031 uPD553C 1979, Bambino Superstar Football (ET-03) @042 uPD552C 1980, Tomy Cosmic Combat (TN-??)
*042 uPD552C 1979, Tomy Space Attack @043 uPD552C 1979, Bambino Kick The Goal Soccer (ET-10)
*044 uPD552C 1979, Bambino Lucky Puck Ice Hockey (ET-08)
@048 uPD552C 1980, Tomy Tennis (TN-04) @048 uPD552C 1980, Tomy Tennis (TN-04)
@049 uPD552C 1981, Bambino Safari (ET-11)
@054 uPD552C 1980, Epoch Invader From Space
@031 uPD553C 1979, Bambino Superstar Football (ET-03)
@049 uPD553C 1979, Mego Mini-Vid Break Free @049 uPD553C 1979, Mego Mini-Vid Break Free
@055 uPD553C 1980, Bambino Laser Fight (ET-12) @055 uPD553C 1980, Bambino Space Laser Fight (ET-12)
*085 uPD650C 1980, Roland TR-808 @080 uPD553C 1980, Epoch Electronic Football
*102 uPD553C 1981, Bandai Block Out *102 uPD553C 1981, Bandai Block Out
*127 uPD650C 198? Sony OA-S1100 Typecorder (subcpu, have dump) @153 uPD553C 1981, Epoch Galaxy II
*128 uPD650C 1982, Roland TR-606
133 uPD650C 1982, Roland TB-303 -> tb303.c
@160 uPD553C 1982, Tomy Pac Man (TN-08) @160 uPD553C 1982, Tomy Pac Man (TN-08)
@170 uPD553C 1982, Bandai Crazy Climber @170 uPD553C 1982, Bandai Crazy Climber
@192 uPD553C 1982, Tomy Scramble (TN-10) @192 uPD553C 1982, Tomy Scramble (TN-10)
@ -28,6 +43,11 @@
@209 uPD553C 1982, Tomy Caveman (TN-12) @209 uPD553C 1982, Tomy Caveman (TN-12)
@258 uPD553C 1984, Tomy Alien Chase (TN-16) @258 uPD553C 1984, Tomy Alien Chase (TN-16)
*085 uPD650C 1980, Roland TR-808
*127 uPD650C 198? Sony OA-S1100 Typecorder (subcpu, have dump)
*128 uPD650C 1982, Roland TR-606
133 uPD650C 1982, Roland TB-303 -> tb303.c
(* denotes not yet emulated by MESS, @ denotes it's in this driver) (* denotes not yet emulated by MESS, @ denotes it's in this driver)
***************************************************************************/ ***************************************************************************/
@ -245,7 +265,7 @@ UINT8 hh_ucom4_state::read_inputs(int columns)
This is Bambino's first game, it is not known if ET-01 exists. Emix Corp. This is Bambino's first game, it is not known if ET-01 exists. Emix Corp.
wasn't initially a toy company, the first release was through Tomy. Emix wasn't initially a toy company, the first release was through Tomy. Emix
created the Bambino brand afterwards. The manual claims it to be the first created the Bambino brand afterwards. It is claimed to be the first
computerized VFD game (true, unless TI's Speak & Spell is considered a game?) computerized VFD game (true, unless TI's Speak & Spell is considered a game?)
known releases: known releases:
@ -357,7 +377,9 @@ MACHINE_CONFIG_END
Bambino Superstar Football (manufactured in Japan) Bambino Superstar Football (manufactured in Japan)
* PCB label Emix Corp. ET-03 * PCB label Emix Corp. ET-03
* NEC uCOM-43 MCU, labeled D553C 031 * NEC uCOM-43 MCU, labeled D553C 031
* cyan VFD display Emix-102 * cyan VFD display Emix-102, with bezel
The game was rereleased in 1982 as Classic Football, with an improved VFD.
Press the Kick button to start the game, an automatic sequence follows. Press the Kick button to start the game, an automatic sequence follows.
Then choose a formation(A,B,C) and either pass the ball, and/or start Then choose a formation(A,B,C) and either pass the ball, and/or start
@ -424,6 +446,17 @@ READ8_MEMBER(ssfball_state::input_b_r)
// config // config
/* physical button layout and labels is like this:
[A] [B] [C] [PASS] [KICK/
^FORMATION^ DISPLAY]
[^]
[<>]
(game lvl sw) [v]
1<---OFF--->2
*/
static INPUT_PORTS_START( ssfball ) static INPUT_PORTS_START( ssfball )
PORT_START("IN.0") // F3 port B3 PORT_START("IN.0") // F3 port B3
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -431,7 +464,7 @@ static INPUT_PORTS_START( ssfball )
PORT_START("IN.1") // G3 port B3 PORT_START("IN.1") // G3 port B3
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_CONFNAME( 0x08, 0x00, "Skill Level" ) PORT_CONFNAME( 0x08, 0x00, "Game Level" )
PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x08, "2" ) PORT_CONFSETTING( 0x08, "2" )
@ -439,12 +472,12 @@ static INPUT_PORTS_START( ssfball )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Kick/Display") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Kick/Display")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Formation C") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Formation C")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Formation B") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Formation B")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) // multiplexed, handled in ssfball_input_b_r PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) // multiplexed, handled in input_b_r
PORT_START("IN.3") // port A PORT_START("IN.3") // port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Left/Right") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Ball-carrier Left/Right") PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("Up") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Ball-carrier Up") PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Down") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Ball-carrier Down") PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pass") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pass")
INPUT_PORTS_END INPUT_PORTS_END
@ -481,12 +514,247 @@ MACHINE_CONFIG_END
/***************************************************************************
Bambino Kick The Goal Soccer
* PCB label Emix Corp. ET-10/08 (PCB is for 2 possible games)
* NEC uCOM-44 MCU, labeled D552C 043
* cyan VFD display Emix-105, with bezel overlay
Press the Display button twice to start the game. Action won't start until
player 1 presses one of the directional keys. In 2-player mode, player 2
controls the goalkeeper, defensive players are still controlled by the CPU.
NOTE!: MESS external artwork is recommended
***************************************************************************/
class bmsoccer_state : public hh_ucom4_state
{
public:
bmsoccer_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_READ8_MEMBER(input_a_r);
};
// handlers
void bmsoccer_state::prepare_display()
{
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,8,4,0,9,5,1,10,6,2);
display_matrix(16, 9, plate, m_grid);
}
WRITE8_MEMBER(bmsoccer_state::grid_w)
{
// C01: input mux
if (offset == NEC_UCOM4_PORTC)
m_inp_mux = data & 3;
// C,D(,E3): vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(bmsoccer_state::plate_w)
{
// G3: speaker out
if (offset == NEC_UCOM4_PORTG)
m_speaker->level_w(data >> 3 & 1);
// E012,F012,G012,H,I: vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// E3: grid 8
if (offset == NEC_UCOM4_PORTE)
grid_w(space, offset, data >> 3 & 1);
else
prepare_display();
}
READ8_MEMBER(bmsoccer_state::input_a_r)
{
// port A: multiplexed inputs
return read_inputs(2);
}
// config
static INPUT_PORTS_START( bmsoccer )
PORT_START("IN.0") // C0 port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Ball-carrier Right") PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Ball-carrier Down") PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Ball-carrier Left") PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Ball-carrier Up") PORT_16WAY // "
PORT_START("IN.1") // C1 port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_NAME("Goalkeeper Left") PORT_16WAY // " + note: swap buttons if viewed from the same angle as player 1
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_NAME("Goalkeeper Right") PORT_16WAY // "
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // port B
PORT_CONFNAME( 0x01, 0x00, "Skill Level" )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x01, "2" )
PORT_CONFNAME( 0x02, 0x00, "Players" )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Display/Banana Shoot")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Shoot")
INPUT_PORTS_END
static MACHINE_CONFIG_START( bmsoccer, bmsoccer_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation
MCFG_UCOM4_READ_A_CB(READ8(bmsoccer_state, input_a_r))
MCFG_UCOM4_READ_B_CB(IOPORT("IN.2"))
MCFG_UCOM4_WRITE_C_CB(WRITE8(bmsoccer_state, grid_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(bmsoccer_state, grid_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(bmsoccer_state, plate_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(bmsoccer_state, plate_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(bmsoccer_state, plate_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(bmsoccer_state, plate_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(bmsoccer_state, 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
/***************************************************************************
Bambino Safari (manufactured in Japan)
* PCB label Emix Corp. ET-11
* NEC uCOM-44 MCU, labeled EMIX D552C 049
* cyan VFD display Emix-108
NOTE!: MESS external artwork is recommended
***************************************************************************/
class bmsafari_state : public hh_ucom4_state
{
public:
bmsafari_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE8_MEMBER(speaker_w);
};
// handlers
void bmsafari_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
UINT16 plate = BITSWAP16(m_plate,15,14,13,12,11,7,10,2,9,5,8,4,0,1,6,3);
display_matrix(10, 9, plate, grid);
}
WRITE8_MEMBER(bmsafari_state::grid_w)
{
// C,D(,E3): vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(bmsafari_state::plate_w)
{
// E012,H,I: vfd matrix plate
int shift = (offset == NEC_UCOM4_PORTE) ? 8 : (offset - NEC_UCOM4_PORTH) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// E3: grid 0
if (offset == NEC_UCOM4_PORTE)
grid_w(space, offset, data >> 3 & 1);
else
prepare_display();
}
WRITE8_MEMBER(bmsafari_state::speaker_w)
{
// G0: speaker out
m_speaker->level_w(data & 1);
}
// config
static INPUT_PORTS_START( bmsafari )
PORT_START("IN.0") // port A
PORT_CONFNAME( 0x07, 0x04, "Skill Level" )
PORT_CONFSETTING( 0x04, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_CONFSETTING( 0x01, "3" )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_START("IN.1") // port B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // "
INPUT_PORTS_END
static MACHINE_CONFIG_START( bmsafari, bmsafari_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
MCFG_UCOM4_WRITE_C_CB(WRITE8(bmsafari_state, grid_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(bmsafari_state, grid_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(bmsafari_state, plate_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(bmsafari_state, speaker_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(bmsafari_state, plate_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(bmsafari_state, 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
/*************************************************************************** /***************************************************************************
Bambino Space Laser Fight (manufactured in Japan) Bambino Space Laser Fight (manufactured in Japan)
* PCB label Emix Corp. ET-12 * PCB label Emix Corp. ET-12
* NEC uCOM-43 MCU, labeled D553C 055 * NEC uCOM-43 MCU, labeled D553C 055
* cyan VFD display Emix-104, with color overlay (blue or green overlay, depending on region) * cyan VFD display Emix-104, with blue or green color overlay
This is basically a revamp of their earlier Boxing game (ET-06), case and
buttons are exactly the same.
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
@ -732,12 +1000,327 @@ MACHINE_CONFIG_END
/***************************************************************************
Epoch Invader From Space (manufactured in Japan)
* PCB labels 36010(A/B)
* NEC uCOM-44 MCU, labeled D552C 054
* cyan VFD display NEC FIP9AM18T tube no. 0D, with color overlay
known releases:
- USA: Invader From Space
- UK: Invader From Space, published by Grandstand
NOTE!: MESS external artwork is recommended
***************************************************************************/
class invspace_state : public hh_ucom4_state
{
public:
invspace_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void invspace_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,8,9,7,6,5,4,3,2,1,0);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,9,14,13,8,15,11,10,7,11,3,2,6,10,1,5,9,0,4,8);
display_matrix(19, 9, plate, grid);
}
WRITE8_MEMBER(invspace_state::grid_w)
{
// I0: speaker out
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data & 1);
// C,D,I1: vfd matrix grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(invspace_state::plate_w)
{
// E,F,G,H123: vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
// config
static INPUT_PORTS_START( invspace )
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_UNUSED )
PORT_START("IN.1") // port B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static MACHINE_CONFIG_START( invspace, invspace_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D552, XTAL_400kHz)
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
MCFG_UCOM4_WRITE_C_CB(WRITE8(invspace_state, grid_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(invspace_state, grid_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(invspace_state, plate_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(invspace_state, plate_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(invspace_state, plate_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(invspace_state, plate_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(invspace_state, grid_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 Electronic Football (manufactured in Japan)
* PCB labels 36020(A/B/C)
* NEC uCOM-43 MCU, labeled D553C 080
* cyan VFD display NEC FIP10AM15T tube no. 0F, with bezel overlay
known releases:
- USA: Electronic Football (aka Pro-Bowl Football)
- Japan: American Football
NOTE!: MESS external artwork is recommended
***************************************************************************/
class efball_state : public hh_ucom4_state
{
public:
efball_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void efball_state::prepare_display()
{
UINT16 plate = BITSWAP16(m_plate,15,14,13,12,11,4,3,0,2,1,6,10,9,5,8,7);
display_matrix(11, 10, plate, m_grid);
}
WRITE8_MEMBER(efball_state::grid_w)
{
// H2: speaker out
if (offset == NEC_UCOM4_PORTH)
m_speaker->level_w(data >> 2 & 1);
// F,G,H01: vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(efball_state::plate_w)
{
// D,E,I: vfd matrix plate
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTD) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
// config
static INPUT_PORTS_START( efball )
PORT_START("IN.0") // port A
PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) )
PORT_CONFSETTING( 0x00, "Amateur" )
PORT_CONFSETTING( 0x01, "Professional" )
PORT_CONFNAME( 0x02, 0x02, "Players" )
PORT_CONFSETTING( 0x02, "1" )
PORT_CONFSETTING( 0x00, "2" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Down Field")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Score/Time")
PORT_START("IN.1") // port B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pass")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Kick")
PORT_START("IN.2") // port C
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Return")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Left/Right") PORT_16WAY // "
INPUT_PORTS_END
static MACHINE_CONFIG_START( efball, efball_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_READ_C_CB(IOPORT("IN.2"))
MCFG_UCOM4_WRITE_D_CB(WRITE8(efball_state, plate_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(efball_state, plate_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(efball_state, grid_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(efball_state, grid_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(efball_state, grid_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(efball_state, 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 Galaxy II (manufactured in Japan)
* PCB labels 19096/96062
* NEC uCOM-43 MCU, labeled D553C 153
* cyan/red VFD display NEC FIP10xM20T, with color overlay. x = multiple VFD
revisions exist, with different graphics: rev B no. 1-8, rev. D no. 2-21.
known releases:
- USA: Galaxy II
- Japan: Astro Wars
- UK: Astro Wars, published by Grandstand
NOTE!: MESS external artwork is recommended
***************************************************************************/
class galaxy2_state : public hh_ucom4_state
{
public:
galaxy2_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void galaxy2_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
UINT16 plate = BITSWAP16(m_plate,15,3,2,6,1,5,4,0,11,10,7,12,14,13,8,9);
display_matrix(15, 10, plate, grid);
}
WRITE8_MEMBER(galaxy2_state::grid_w)
{
// E3: speaker out
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 3 & 1);
// C,D,E01: vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(galaxy2_state::plate_w)
{
// F,G,H,I: vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
// config
static INPUT_PORTS_START( galaxy2 )
PORT_START("IN.0") // port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // port B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static MACHINE_CONFIG_START( galaxy2, galaxy2_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(galaxy2_state, grid_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(galaxy2_state, grid_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(galaxy2_state, grid_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(galaxy2_state, plate_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(galaxy2_state, plate_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(galaxy2_state, plate_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(galaxy2_state, 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 Astro Command (manufactured in Japan) Epoch Astro Command (manufactured in Japan)
* PCB label 96111 * PCB labels 96111/96112
* NEC uCOM-43 MCU, labeled D553C 202 * NEC uCOM-43 MCU, labeled D553C 202
* cyan/red VFD display NEC FIP9AM20T no. 42-42, with color overlay (FIP=fluorescent indicator panel) * cyan/red VFD display NEC FIP9AM20T no. 42-42, with color overlay + bezel
known releases: known releases:
- Japan: Astro Command - Japan: Astro Command
@ -1043,6 +1626,103 @@ MACHINE_CONFIG_END
/***************************************************************************
Tomy(tronic) Cosmic Combat (manufactured in Japan)
* PCBs are labeled 2E1019-E01
* NEC uCOM-44 MCU, labeled D552C 042
* cyan VFD display NEC FIP32AM18Y tube no. 0E, with color overlay
known releases:
- USA: Cosmic Combat
- Japan: Space Attack
NOTE!: MESS external artwork is recommended
***************************************************************************/
class tccombat_state : public hh_ucom4_state
{
public:
tccombat_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void tccombat_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,3,2,1,0,7,6,5,4);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,11,15,3,10,14,2,9,13,1,0,12,8,15,1,5,0,3,7,2,6);
display_matrix(20, 9, plate, grid);
}
WRITE8_MEMBER(tccombat_state::grid_w)
{
// I1: speaker out
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 1 & 1);
// C,D,I0: vfd matrix grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE8_MEMBER(tccombat_state::plate_w)
{
// E,F123,G,H: vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
// config
static INPUT_PORTS_START( tccombat )
PORT_START("IN.0") // port A
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_CONFNAME( 0x02, 0x02, "Skill Level" )
PORT_CONFSETTING( 0x02, "1" )
PORT_CONFSETTING( 0x00, "2" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
INPUT_PORTS_END
static MACHINE_CONFIG_START( tccombat, tccombat_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
MCFG_UCOM4_WRITE_C_CB(WRITE8(tccombat_state, grid_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(tccombat_state, grid_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(tccombat_state, plate_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(tccombat_state, plate_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(tccombat_state, plate_w))
MCFG_UCOM4_WRITE_H_CB(WRITE8(tccombat_state, plate_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(tccombat_state, grid_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
/*************************************************************************** /***************************************************************************
Tomy(tronic) Tennis (manufactured in Japan) Tomy(tronic) Tennis (manufactured in Japan)
@ -1377,8 +2057,8 @@ static INPUT_PORTS_START( tmscramb )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_START("IN.1") // port B PORT_START("IN.1") // port B
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_2WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_2WAY
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
@ -1568,7 +2248,7 @@ WRITE8_MEMBER(alnchase_state::output_w)
READ8_MEMBER(alnchase_state::input_r) READ8_MEMBER(alnchase_state::input_r)
{ {
// A: buttons // A: multiplexed buttons
return read_inputs(2); return read_inputs(2);
} }
@ -1659,6 +2339,18 @@ ROM_START( ssfball )
ROM_END ROM_END
ROM_START( bmsoccer )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-043", 0x0000, 0x0400, CRC(10c2a4ea) SHA1(6ebca7d406e22ff7a8cd529579b55a700da487b4) )
ROM_END
ROM_START( bmsafari )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-049", 0x0000, 0x0400, CRC(82fa3cbe) SHA1(019e7ec784e977eba09997fc46af253054fb222c) )
ROM_END
ROM_START( splasfgt ) ROM_START( splasfgt )
ROM_REGION( 0x0800, "maincpu", 0 ) ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d553c-055", 0x0000, 0x0800, CRC(eb471fbd) SHA1(f06cfe567bf6f9ed4dcdc88acdcfad50cd370a02) ) ROM_LOAD( "d553c-055", 0x0000, 0x0800, CRC(eb471fbd) SHA1(f06cfe567bf6f9ed4dcdc88acdcfad50cd370a02) )
@ -1671,6 +2363,24 @@ ROM_START( bcclimbr )
ROM_END ROM_END
ROM_START( invspace )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) )
ROM_END
ROM_START( efball )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d553c-080", 0x0000, 0x0800, CRC(54c1027f) SHA1(6cc98074dae9361fa8c0ed6501b6a57ad325ccbd) )
ROM_END
ROM_START( galaxy2 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) )
ROM_END
ROM_START( astrocmd ) ROM_START( astrocmd )
ROM_REGION( 0x0800, "maincpu", 0 ) ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) ) ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) )
@ -1689,6 +2399,12 @@ ROM_START( mvbfree )
ROM_END ROM_END
ROM_START( tccombat )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-042", 0x0000, 0x0400, CRC(d7b5cfeb) SHA1(a267be8e43b7740758eb0881b655b1cc8aec43da) )
ROM_END
ROM_START( tmtennis ) ROM_START( tmtennis )
ROM_REGION( 0x0400, "maincpu", 0 ) ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) ) ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) )
@ -1723,15 +2439,21 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, driver_device, 0, "Bambino", "Kick The Goal Soccer", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, driver_device, 0, "Bambino", "Safari (Bambino)", 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( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II", 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 ) CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1980, tccombat, 0, 0, tccombat, tccombat, driver_device, 0, "Tomy", "Cosmic Combat", 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 ) CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )

View File

@ -2186,7 +2186,7 @@ bambball // Bambino
bmboxing // Bambino bmboxing // Bambino
bfriskyt // Bandai bfriskyt // Bandai
packmon // Bandai packmon // Bandai
msthawk // Bandai(Mattel) msthawk // Bandai/Mattel
zackman // Bandai zackman // Bandai
alnattck // Coleco alnattck // Coleco
cdkong // Coleco cdkong // Coleco
@ -2196,6 +2196,9 @@ cpacmanr1 // Coleco (rev 1)
cmspacmn // Coleco cmspacmn // Coleco
egalaxn2 // Entex egalaxn2 // Entex
epacman2 // Entex epacman2 // Entex
ghalien // Gakken
gckong // Gakken
gdigdug // Gakken
pbqbert // Parker Brothers pbqbert // Parker Brothers
mvbfree // Mego mvbfree // Mego
kingman // Tomy kingman // Tomy
@ -2231,10 +2234,16 @@ mbdtower // Milton Bradley
ufombs // Bambino ufombs // Bambino
ssfball // Bambino ssfball // Bambino
bmsoccer // Bambino
bmsafari // Bambino
splasfgt // Bambino splasfgt // Bambino
bcclimbr // Bandai bcclimbr // Bandai
invspace // Epoch
efball // Epoch
galaxy2 // Epoch
astrocmd // Epoch astrocmd // Epoch
edracula // Epoch edracula // Epoch
tccombat // Tomy
tmpacman // Tomy tmpacman // Tomy
tmtennis // Tomy tmtennis // Tomy
tmscramb // Tomy tmscramb // Tomy