mirror of
https://github.com/holub/mame
synced 2025-06-06 04:43:45 +03:00
New working machines
-------------------- Super Space Invader 2 (Entex, black version) [hap]
This commit is contained in:
parent
e73753d2dc
commit
dcd6560b3e
@ -22,7 +22,7 @@
|
||||
*A20 HD38800 1981, Entex Super Space Invader 2
|
||||
@A25 HD38800 1981, Coleco Alien Attack
|
||||
@A27 HD38800 1981, Bandai Packri Monster
|
||||
A31 HD38800 1981, Entex Select-A-Game cartridge: Space Invader 2 -> sag.cpp - also used in 2nd version of Super Space Invader 2!
|
||||
@A31 HD38800 1981, Entex Select-A-Game cartridge: Space Invader 2 -> sag.cpp - also used in 2nd version of Super Space Invader 2!
|
||||
A37 HD38800 1981, Entex Select-A-Game cartridge: Baseball 4 -> "
|
||||
A38 HD38800 1981, Entex Select-A-Game cartridge: Pinball -> "
|
||||
*A41 HD38800 1982, Gakken Puck Monster
|
||||
@ -2677,6 +2677,131 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Entex Super Space Invader 2 (black version)
|
||||
* Hitachi HD38800A31 MCU
|
||||
* cyan/red VFD display
|
||||
|
||||
This version has the same MCU as the Select-A-Game cartridge. Maybe from
|
||||
surplus inventory after that console was discontinued?. It was also sold
|
||||
as "Super Alien Invader 2".
|
||||
|
||||
Hold down the fire button at boot for demo mode to work.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class einvader2_state : public hh_hmcs40_state
|
||||
{
|
||||
public:
|
||||
einvader2_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
hh_hmcs40_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void update_display();
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
DECLARE_WRITE16_MEMBER(grid_w);
|
||||
DECLARE_READ16_MEMBER(input_r);
|
||||
void einvader2(machine_config &config);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void einvader2_state::update_display()
|
||||
{
|
||||
m_display->matrix(m_grid, m_plate);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(einvader2_state::plate_w)
|
||||
{
|
||||
// R0x-R3x: vfd plate
|
||||
int shift = offset * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
update_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(einvader2_state::grid_w)
|
||||
{
|
||||
// D0: speaker out
|
||||
m_speaker->level_w(data & 1);
|
||||
|
||||
// D3,D5,D6: input mux
|
||||
m_inp_mux = (data >> 3 & 1) | (data >> 4 & 6);
|
||||
|
||||
// D1-D12: vfd grid
|
||||
m_grid = data >> 1 & 0xfff;
|
||||
update_display();
|
||||
}
|
||||
|
||||
READ16_MEMBER(einvader2_state::input_r)
|
||||
{
|
||||
// D13-D15: multiplexed inputs
|
||||
return read_inputs(6) << 13;
|
||||
}
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( einvader2 )
|
||||
PORT_START("IN.0") // D3
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x04, 0x04, IPT_CUSTOM ) PORT_CONDITION("FAKE", 0x03, EQUALS, 0x01) // 1 player
|
||||
|
||||
PORT_START("IN.1") // D5
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x04, 0x04, IPT_CUSTOM ) PORT_CONDITION("FAKE", 0x03, EQUALS, 0x00) // demo
|
||||
|
||||
PORT_START("IN.2") // D6
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
|
||||
|
||||
PORT_START("FAKE") // shared D3/D5
|
||||
PORT_CONFNAME( 0x03, 0x01, DEF_STR( Players ) )
|
||||
PORT_CONFSETTING( 0x00, "Demo" )
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void einvader2_state::einvader2(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
HD38800(config, m_maincpu, 450000); // approximation
|
||||
m_maincpu->write_r<0>().set(FUNC(einvader2_state::plate_w));
|
||||
m_maincpu->write_r<1>().set(FUNC(einvader2_state::plate_w));
|
||||
m_maincpu->write_r<2>().set(FUNC(einvader2_state::plate_w));
|
||||
m_maincpu->write_r<3>().set(FUNC(einvader2_state::plate_w));
|
||||
m_maincpu->write_d().set(FUNC(einvader2_state::grid_w));
|
||||
m_maincpu->read_d().set(FUNC(einvader2_state::input_r));
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
|
||||
screen.set_refresh_hz(60);
|
||||
screen.set_size(469, 1080);
|
||||
screen.set_visarea_full();
|
||||
|
||||
PWM_DISPLAY(config, m_display).set_size(12, 14);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
// roms
|
||||
|
||||
ROM_START( einvader2 )
|
||||
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, CRC(10e39521) SHA1(41d86696e518ea071e75ed37d5dc63c0408c262e) )
|
||||
ROM_CONTINUE( 0x1e80, 0x0100 )
|
||||
|
||||
ROM_REGION( 217430, "screen", 0)
|
||||
ROM_LOAD( "einvader2.svg", 0, 217430, CRC(b082d9a3) SHA1(67f7e0314c69ba146751ea12cf490805b8660489) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Entex Turtles (manufactured in Japan)
|
||||
@ -4185,6 +4310,7 @@ CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, cmspacmn_state, empty_in
|
||||
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, egalaxn2_state, empty_init, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1982, einvader2, 0, 0, einvader2,einvader2,einvader2_state,empty_init, "Entex", "Super Space Invader 2 (Entex, black version)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, empty_init, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1982, estargte, 0, 0, estargte, estargte, estargte_state, empty_init, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
@ -5333,8 +5333,8 @@ ROM_START( ginv1000 )
|
||||
ROM_REGION( 365, "maincpu:opla", 0 )
|
||||
ROM_LOAD( "tms1100_ginv1000_output.pla", 0, 365, CRC(b0a5dc41) SHA1(d94746ec48661998173e7f60ccc7c96e56b3484e) )
|
||||
|
||||
ROM_REGION( 226185, "screen", 0)
|
||||
ROM_LOAD( "ginv1000.svg", 0, 226185, CRC(1e1bafd1) SHA1(15868ef0c9dadbf537fed0e2d846451ba99fab7b) )
|
||||
ROM_REGION( 227224, "screen", 0)
|
||||
ROM_LOAD( "ginv1000.svg", 0, 227224, CRC(f220711a) SHA1(729ad85fb9d9853a77c45b5ed072f10ede7649c4) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -15732,6 +15732,7 @@ cmspacmn // Coleco
|
||||
cpacman // Coleco
|
||||
cpacmanr1 // Coleco (rev 1)
|
||||
egalaxn2 // Entex
|
||||
einvader2 // Entex
|
||||
epacman2 // Entex
|
||||
epacman2r // Entex
|
||||
estargte // Entex
|
||||
|
Loading…
Reference in New Issue
Block a user