New working machine added

---------------
Select-A-Game: Baseball 4
Select-A-Game: Pinball

New NOT_WORKING machine added
--------------
Select-A-Game: Space Invader 2
This commit is contained in:
hap 2016-08-13 22:09:21 +02:00
parent bc5875df84
commit 5934df9a12
2 changed files with 172 additions and 3 deletions

View File

@ -19,9 +19,9 @@
@04 HD38800A 1980, Gakken Heiankyo Alien
@25 HD38800A 1981, Coleco Alien Attack
@27 HD38800A 1981, Bandai Packri Monster
*31 HD38800A 1981, Entex Select-a-Game cartridge: Space Invader 2 (have dump)
*37 HD38800A 1981, Entex Select-a-Game cartridge: Baseball 4 (have dump)
*38 HD38800A 1981, Entex Select-a-Game cartridge: Pinball (have dump)
@31 HD38800A 1981, Entex Select-a-Game cartridge: Space Invader 2
@37 HD38800A 1981, Entex Select-a-Game cartridge: Baseball 4
@38 HD38800A 1981, Entex Select-a-Game cartridge: Pinball
*41 HD38800A 1982, Gakken Puck Monster
*51 HD38800A 1981, Actronics(Hanzawa) Twinvader (larger white version)
@70 HD38800A 1982, Coleco Galaxian
@ -147,6 +147,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
void display_update();
void set_display_size(int maxx, int maxy);
void set_display_segmask(UINT32 digits, UINT32 mask);
void display_matrix(int maxx, int maxy, UINT64 setx, UINT32 sety, bool update = true);
protected:
@ -276,6 +277,17 @@ void hh_hmcs40_state::set_display_size(int maxx, int maxy)
m_display_maxy = maxy;
}
void hh_hmcs40_state::set_display_segmask(UINT32 digits, UINT32 mask)
{
// set a segment mask per selected digit, but leave unselected ones alone
for (int i = 0; i < 0x20; i++)
{
if (digits & 1)
m_display_segmask[i] = mask;
digits >>= 1;
}
}
void hh_hmcs40_state::display_matrix(int maxx, int maxy, UINT64 setx, UINT32 sety, bool update)
{
set_display_size(maxx, maxy);
@ -2503,6 +2515,136 @@ MACHINE_CONFIG_END
/***************************************************************************
Entex Select-A-Game (HMCS40 MCU cartridges)
* see gamelist for cartridge info
* cyan/red VFD display Futaba DM-16Z + cyan VFD 9-digit panel Futaba 9-ST-11A 1F
The console is the peripheral, the heart of the system is the cartridge.
Cartridges with a HMCS40 MCU are implemented in this driver.
MAME external artwork is recommended, needed for per-game VFD overlays.
***************************************************************************/
class sag_state : public hh_hmcs40_state
{
public:
sag_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
DECLARE_READ16_MEMBER(input_r);
};
// handlers
void sag_state::prepare_display()
{
// grid 0-7 are the 'pixels'
for (int y = 0; y < 8; y++)
m_display_state[y] = (m_grid >> y & 1) ? m_plate : 0;
// grid 8-11 are 7segs
set_display_segmask(0xf00, 0x7f);
UINT8 seg = BITSWAP8(m_plate,3,4,5,6,7,8,9,10);
for (int y = 8; y < 12; y++)
m_display_state[y] = (m_grid >> y & 1) ? seg : 0;
set_display_size(14, 12);
display_update();
}
WRITE8_MEMBER(sag_state::plate_w)
{
// R0x-R3x: vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE16_MEMBER(sag_state::grid_w)
{
// D0: speaker out
m_speaker->level_w(data & 1);
// D2-D7: input mux
m_inp_mux = data >> 2 & 0x3f;
// D1-D12: vfd matrix grid
m_grid = data >> 1 & 0xfff;
prepare_display();
}
READ16_MEMBER(sag_state::input_r)
{
// D13-D15: multiplexed inputs
return read_inputs(6) << 13;
}
// config
static INPUT_PORTS_START( sag )
PORT_START("IN.0") // D2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY PORT_NAME("P1 Button 1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Button 3")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // D3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Button 2")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Button 4")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // D4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY PORT_NAME("P1 Button 3")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Button 1")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // D5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("P1 Button 4")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Button 2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // D6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button 5")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Button 5")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button 7")
PORT_START("IN.5") // D7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button 6")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Button 6")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Button 7")
INPUT_PORTS_END
static MACHINE_CONFIG_START( sag, sag_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38800, 450000) // approximation
MCFG_HMCS40_WRITE_R_CB(0, WRITE8(sag_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(sag_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(sag_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(sag_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(sag_state, grid_w))
MCFG_HMCS40_READ_D_CB(READ16(sag_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)
/* 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
/***************************************************************************
Entex Galaxian 2 (manufactured in Japan)
@ -4145,6 +4287,27 @@ ROM_START( cmspacmn )
ROM_END
ROM_START( sag_si2 )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, BAD_DUMP CRC(29c8c100) SHA1(41cd413065659c6d7d5b2408de2ca6d51c49629a) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( sag_bb4 )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "b-b5_hd38800a37", 0x0000, 0x1000, CRC(64852bd5) SHA1(fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( sag_pb )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "pinb_hd38800a38", 0x0000, 0x1000, CRC(6e53a56b) SHA1(13f057eab2e4cfbb3ef1247a041abff15ae727c9) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_END
ROM_START( egalaxn2 )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a13", 0x0000, 0x1000, CRC(112b721b) SHA1(4a185bc57ea03fe64f61f7db4da37b16eeb0cb54) )
@ -4304,6 +4467,9 @@ CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Colec
CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, sag_si2, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Space Invader 2", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) // suspect bad dump
CONS( 1981, sag_bb4, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Baseball 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1981, sag_pb, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE )

View File

@ -14042,6 +14042,9 @@ mwcbaseb // Mattel
packmon // Bandai
pairmtch // Bandai
pbqbert // Parker Brothers
sag_si2 // Entex
sag_bb4 // Entex
sag_pb // Entex
tmtron // Tomy
vinvader // VTech
zackman // Bandai