This commit is contained in:
couriersud 2015-05-05 21:43:45 +02:00
commit 9f157b47c4
20 changed files with 566 additions and 37 deletions

View File

@ -359,6 +359,22 @@ if (CPUS["ESRIP"]~=null or _OPTIONS["with-tools"]) then
table.insert(disasm_files , MAME_DIR .. "src/emu/cpu/esrip/esripdsm.c") table.insert(disasm_files , MAME_DIR .. "src/emu/cpu/esrip/esripdsm.c")
end end
--------------------------------------------------
-- Seiko Epson E0C6200 series
---@src/emu/cpu/e0c6200/e0c6200.h,CPUS += E0C6200
--------------------------------------------------
if (CPUS["E0C6200"]~=null) then
files {
MAME_DIR .. "src/emu/cpu/e0c6200/e0c6200.c",
MAME_DIR .. "src/emu/cpu/e0c6200/e0c6200.h",
}
end
if (CPUS["E0C6200"]~=null or _OPTIONS["with-tools"]) then
table.insert(disasm_files , MAME_DIR .. "src/emu/cpu/e0c6200/e0c6200d.c")
end
-------------------------------------------------- --------------------------------------------------
-- RCA COSMAC -- RCA COSMAC
---@src/emu/cpu/cosmac/cosmac.h,CPUS += COSMAC ---@src/emu/cpu/cosmac/cosmac.h,CPUS += COSMAC

View File

@ -100,7 +100,7 @@ CPUS["SM8500"] = true
CPUS["MINX"] = true CPUS["MINX"] = true
CPUS["SSEM"] = true CPUS["SSEM"] = true
CPUS["AVR8"] = true CPUS["AVR8"] = true
CPUS["TMS0980"] = true --CPUS["TMS0980"] = true
CPUS["I4004"] = true CPUS["I4004"] = true
CPUS["SUPERFX"] = true CPUS["SUPERFX"] = true
CPUS["Z8"] = true CPUS["Z8"] = true
@ -123,9 +123,10 @@ CPUS["ALTO2"] = true
--CPUS["W65816"] = true --CPUS["W65816"] = true
CPUS["ARC"] = true CPUS["ARC"] = true
CPUS["ARCOMPACT"] = true CPUS["ARCOMPACT"] = true
CPUS["AMIS2000"] = true --CPUS["AMIS2000"] = true
CPUS["UCOM4"] = true --CPUS["UCOM4"] = true
CPUS["HMCS40"] = true CPUS["HMCS40"] = true
--CPUS["E0C6200"] = true
-------------------------------------------------- --------------------------------------------------
-- specify available sound cores -- specify available sound cores

View File

@ -103,7 +103,7 @@ CPUS["SUPERFX"] = true
CPUS["Z8"] = true CPUS["Z8"] = true
CPUS["I8008"] = true CPUS["I8008"] = true
CPUS["SCMP"] = true CPUS["SCMP"] = true
CPUS["MN10200"] = true --CPUS["MN10200"] = true
CPUS["COSMAC"] = true CPUS["COSMAC"] = true
CPUS["UNSP"] = true CPUS["UNSP"] = true
CPUS["HCD62121"] = true CPUS["HCD62121"] = true
@ -123,6 +123,7 @@ CPUS["ARCOMPACT"] = true
CPUS["AMIS2000"] = true CPUS["AMIS2000"] = true
CPUS["UCOM4"] = true CPUS["UCOM4"] = true
CPUS["HMCS40"] = true CPUS["HMCS40"] = true
CPUS["E0C6200"] = true
-------------------------------------------------- --------------------------------------------------
-- specify available sound cores; some of these are -- specify available sound cores; some of these are

View File

@ -83,7 +83,7 @@ protected:
virtual void execute_run(); virtual void execute_run();
// device_memory_interface overrides // device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config :((spacenum == AS_DATA) ? &m_data_config : NULL); } virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL); }
// device_disasm_interface overrides // device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 1; } virtual UINT32 disasm_min_opcode_bytes() const { return 1; }

View File

@ -0,0 +1,104 @@
// license:BSD-3-Clause
// copyright-holders:hap
/*
Seiko Epson E0C6200 CPU core and E0C62 MCU family
References:
- 1998 MF297-06a E0C6200/E0C6200A Core CPU Manual
- 1998 MF1049-01a E0C6S46 Technical Manual
TODO:
- niks
*/
#include "e0c6200.h"
#include "debugger.h"
#include "e0c6200op.inc"
const device_type EPSON_E0C6S46 = &device_creator<e0c6s46_device>;
// internal memory maps
static ADDRESS_MAP_START(program_1k, AS_PROGRAM, 16, e0c6200_cpu_device)
AM_RANGE(0x0000, 0x03ff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START(data_64x4, AS_DATA, 8, e0c6200_cpu_device)
AM_RANGE(0x00, 0x3f) AM_RAM
ADDRESS_MAP_END
// device definitions
e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: e0c6200_cpu_device(mconfig, EPSON_E0C6S46, "E0C6S46", tag, owner, clock, 10, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4), "e0c6s46", __FILE__)
{ }
// disasm
void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
{
switch (entry.index())
{
case STATE_GENFLAGS:
break;
default: break;
}
}
offs_t e0c6200_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
{
extern CPU_DISASSEMBLE(e0c6200);
return CPU_DISASSEMBLE_NAME(e0c6200)(this, buffer, pc, oprom, opram, options);
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void e0c6200_cpu_device::device_start()
{
m_program = &space(AS_PROGRAM);
m_data = &space(AS_DATA);
m_prgmask = (1 << m_prgwidth) - 1;
m_datamask = (1 << m_datawidth) - 1;
// zerofill
// register for savestates
// register state for debugger
m_icountptr = &m_icount;
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void e0c6200_cpu_device::device_reset()
{
}
//-------------------------------------------------
// execute
//-------------------------------------------------
void e0c6200_cpu_device::execute_run()
{
while (m_icount > 0)
{
m_icount--;
}
}

View File

@ -0,0 +1,73 @@
// license:BSD-3-Clause
// copyright-holders:hap
/*
Seiko Epson E0C6200 CPU core and E0C62 MCU family
*/
#ifndef _E06200_H_
#define _E06200_H_
#include "emu.h"
class e0c6200_cpu_device : public cpu_device
{
public:
// construction/destruction
e0c6200_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
, m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, 0, program)
, m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
, m_prgwidth(prgwidth)
, m_datawidth(datawidth)
{ }
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
// device_execute_interface overrides
virtual UINT32 execute_min_cycles() const { return 5; }
virtual UINT32 execute_max_cycles() const { return 12; }
virtual UINT32 execute_input_lines() const { return 1; }
virtual void execute_run();
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL); }
// device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 2; }
virtual UINT32 disasm_max_opcode_bytes() const { return 2; }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
void state_string_export(const device_state_entry &entry, std::string &str);
address_space_config m_program_config;
address_space_config m_data_config;
address_space *m_program;
address_space *m_data;
int m_prgwidth;
int m_datawidth;
int m_prgmask;
int m_datamask;
int m_icount;
};
class e0c6s46_device : public e0c6200_cpu_device
{
public:
e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
extern const device_type EPSON_E0C6S46;
#endif /* _E06200_H_ */

View File

@ -0,0 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:hap
/*
Seiko Epson E0C6200 disassembler
*/
#include "emu.h"
#include "debugger.h"
#include "e0c6200.h"
CPU_DISASSEMBLE(e0c6200)
{
return 2;
}

View File

@ -0,0 +1 @@
// E0C6200 opcode handlers

View File

@ -153,7 +153,7 @@ protected:
virtual void execute_run(); virtual void execute_run();
// device_memory_interface overrides // device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config :((spacenum == AS_DATA) ? &m_data_config : NULL); } virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL); }
// device_disasm_interface overrides // device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 2; } virtual UINT32 disasm_min_opcode_bytes() const { return 2; }

View File

@ -90,7 +90,7 @@ protected:
virtual void execute_run(); virtual void execute_run();
// device_memory_interface overrides // device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config :((spacenum == AS_DATA) ? &m_data_config : NULL); } virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL); }
// device_disasm_interface overrides // device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 1; } virtual UINT32 disasm_min_opcode_bytes() const { return 1; }

View File

@ -35,7 +35,7 @@ tms340x0_device::tms340x0_device(const machine_config &mconfig, device_type type
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__) : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
, device_video_interface(mconfig, *this) , device_video_interface(mconfig, *this)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 32, 3) , m_program_config("program", ENDIANNESS_LITTLE, 16, 32, 3)
, m_reset_deferred(FALSE) , m_halt_on_reset(FALSE)
, m_pixclock(0) , m_pixclock(0)
, m_pixperclock(0) , m_pixperclock(0)
, m_output_int_cb(*this) , m_output_int_cb(*this)
@ -648,6 +648,8 @@ void tms340x0_device::device_reset()
/* HALT the CPU if requested, and remember to re-read the starting PC */ /* HALT the CPU if requested, and remember to re-read the starting PC */
/* the first time we are run */ /* the first time we are run */
m_reset_deferred = m_halt_on_reset;
if (m_reset_deferred) if (m_reset_deferred)
{ {
io_register_w(*m_program, REG_HSTCTLH, 0x8000, 0xffff); io_register_w(*m_program, REG_HSTCTLH, 0x8000, 0xffff);
@ -714,11 +716,10 @@ void tms340x0_device::execute_run()
m_icount = 0; m_icount = 0;
return; return;
} }
/* if the CPU's reset was deferred, do it now */ /* if the CPU's reset was deferred, do it now */
if (m_reset_deferred) if (m_reset_deferred)
{ {
m_reset_deferred = 0; m_reset_deferred = FALSE;
m_pc = RLONG(0xffffffe0); m_pc = RLONG(0xffffffe0);
} }

View File

@ -240,7 +240,7 @@ public:
// construction/destruction // construction/destruction
tms340x0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname); tms340x0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname);
static void set_halt_on_reset(device_t &device, bool reset_deferred) { downcast<tms340x0_device &>(device).m_reset_deferred = reset_deferred; } static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; }
static void set_pixel_clock(device_t &device, UINT32 pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; } static void set_pixel_clock(device_t &device, UINT32 pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; }
static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; } static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; }
static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; } static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; }
@ -327,7 +327,8 @@ protected:
INT32 m_gfxcycles; INT32 m_gfxcycles;
UINT8 m_pixelshift; UINT8 m_pixelshift;
UINT8 m_is_34020; UINT8 m_is_34020;
bool m_reset_deferred; /* /HCS pin, which determines HALT state after reset */ bool m_reset_deferred;
bool m_halt_on_reset; /* /HCS pin, which determines HALT state after reset */
UINT8 m_hblank_stable; UINT8 m_hblank_stable;
UINT8 m_external_host_access; UINT8 m_external_host_access;
UINT8 m_executing; UINT8 m_executing;

View File

@ -144,7 +144,7 @@ protected:
virtual void execute_run(); virtual void execute_run();
// device_memory_interface overrides // device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config :((spacenum == AS_DATA) ? &m_data_config : NULL); } virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL); }
// device_disasm_interface overrides // device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 1; } virtual UINT32 disasm_min_opcode_bytes() const { return 1; }

View File

@ -20,7 +20,7 @@
typelist.append(*global_alloc(input_type_entry(IPT_##_type, IPG_##_group, (_player == 0) ? _player : (_player) - 1, (_player == 0) ? #_type : ("P" #_player "_" #_type), _name, _seq, _decseq, _incseq))); typelist.append(*global_alloc(input_type_entry(IPT_##_type, IPG_##_group, (_player == 0) ? _player : (_player) - 1, (_player == 0) ? #_type : ("P" #_player "_" #_type), _name, _seq, _decseq, _incseq)));
/* These input port macros expand to a great deal of code and break compilers */ /* These input port macros expand to a great deal of code and break compilers */
#if defined(__GNUC__) && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ >= 4) #if defined(__GNUC__) && __GNUC__ == 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ >= 4)
#pragma GCC optimize ("O1") #pragma GCC optimize ("O1")
#endif #endif
#ifdef _MSC_VER #ifdef _MSC_VER

View File

@ -5289,7 +5289,7 @@ GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, driver_device,
GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 ) GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 )
GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 ) GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 )
GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, driver_device, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING, layout_racedrivpan ) // picking roadster crashes the side monitors? GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, driver_device, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", 0, layout_racedrivpan )
GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 ) GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 ) GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )

View File

@ -9,7 +9,7 @@
Deluxe Baseball (1975/06) YES 550188 Deluxe Baseball (1975/06) YES 550188
Hockey (1973/11) YES 500699 500629 Hockey (1973/11) YES 500699 500629
Horoscope (1976) UNKNOWN Horoscope (1976) UNKNOWN
Knock Out (1974/09)? UNKNOWN Knock Out (1974/09) YES 550300
Lie Detector (1976) UNKNOWN Unreleased Unreleased Lie Detector (1976) UNKNOWN Unreleased Unreleased
Sea Battle (1976/04) UNKNOWN Sea Battle (1976/04) UNKNOWN
Soccer (1973/11) YES 500880 500889 Soccer (1973/11) YES 500880 500889
@ -22,10 +22,10 @@
Game Name Clone Of Game Name Clone Of
--------------------------------------------------------------------------------- ---------------------------------------------------------------------------------
Batter Up (1974/??) Deluxe Baseball (Ramtek, 1975/06) Batter Up (1974/??) Baseball (1974/10)
Crossfire (1974/01) (registered trademark?) Knock Out (Ramtek, 1974/09)? Crossfire (1974/01) (registered trademark?) Knock Out (Ramtek, 1974/09)?
Countdown (1974/02) Wipe Out (Ramtek, 1974/01) Countdown (1974/02) Wipe Out (Ramtek, 1974/01)
Elimination (1973/12?) (registered trademark?) unknown Elimination (1973/12?) (registered trademark?) unused name for Countdown (1974/02)
Flip-Out (1974/05?) Clean Sweep (Ramtek, 1974/06) Flip-Out (1974/05?) Clean Sweep (Ramtek, 1974/06)
Hockey (1973/??) Hockey (Ramtek, 1973/11) Hockey (1973/??) Hockey (Ramtek, 1973/11)
Hockey (Cocktail) (1973/??) Soccer (Ramtek, 1973/11) Hockey (Cocktail) (1973/??) Soccer (Ramtek, 1973/11)
@ -162,6 +162,13 @@ ROM_START( cleanswp )
ROM_LOAD( "501074.k3", 0x0000, 0x0020, CRC(515a34ba) SHA1(471ca9d99851591ff11a87d18b88871edd7fd268) ) // number character generation ROM_LOAD( "501074.k3", 0x0000, 0x0020, CRC(515a34ba) SHA1(471ca9d99851591ff11a87d18b88871edd7fd268) ) // number character generation
ROM_END ROM_END
// Knockout - believed to be Knockout - XTAL is 10.733 MHz
/* contains 4 proms (soldered in) labelled :
5H - 55030604
9C - 500399
4B - 550306-02
3B - 550306-03
2B - 550306-01 */
ROM_START( ramtek3 ) // maybe Hockey? ROM_START( ramtek3 ) // maybe Hockey?
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )

View File

@ -494,8 +494,8 @@ int vertex_program_simulator::step()
{ {
int p1, p2; int p1, p2;
float tmp[3 * 4]; float tmp[3 * 4];
float tmpv[4]; float tmpv[4] = { 0, 0, 0, 0};
float tmps[4]; float tmps[4] = { 0, 0, 0, 0};
instruction::decoded *d; instruction::decoded *d;
#if 0 // useful while debugging to see what instrucion is being executed #if 0 // useful while debugging to see what instrucion is being executed

View File

@ -40,8 +40,8 @@
@29 HD38820A 1981, Coleco Pac-Man (ver 2) @29 HD38820A 1981, Coleco Pac-Man (ver 2)
*32 HD38820A 198?, Gakken Super Cobra *32 HD38820A 198?, Gakken Super Cobra
*38 HD38820A 1982, Entex Crazy Climber *38 HD38820A 1982, Entex Crazy Climber
*42 HD38820A 1982, Entex Stargate (have dump, +COP411 for audio) @42 HD38820A 1982, Entex Stargate
*43 HD38820A 1982, Entex Turtles (have dump, +COP411 for audio) @43 HD38820A 1982, Entex Turtles
@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,6 +69,7 @@
#include "emu.h" #include "emu.h"
#include "cpu/hmcs40/hmcs40.h" #include "cpu/hmcs40/hmcs40.h"
#include "cpu/cop400/cop400.h"
#include "sound/speaker.h" #include "sound/speaker.h"
#include "hh_hmcs40_test.lh" // common test-layout - use external artwork #include "hh_hmcs40_test.lh" // common test-layout - use external artwork
@ -1875,7 +1876,7 @@ WRITE16_MEMBER(egalaxn2_state::grid_w)
m_inp_mux = data >> 1 & 0xf; m_inp_mux = data >> 1 & 0xf;
// D1-D15: vfd matrix grid // D1-D15: vfd matrix grid
m_grid = data >> 1; m_grid = data >> 1 & 0x7fff;
prepare_display(); prepare_display();
} }
@ -1967,7 +1968,7 @@ MACHINE_CONFIG_END
NOTE!: MESS external artwork is recommended NOTE!: MESS external artwork is recommended
***************************************************************************/ ***************************************************************************/
#if 0
class epacman2_state : public egalaxn2_state class epacman2_state : public egalaxn2_state
{ {
public: public:
@ -1975,7 +1976,7 @@ public:
: egalaxn2_state(mconfig, type, tag) : egalaxn2_state(mconfig, type, tag)
{ } { }
}; };
#endif
// handlers are identical to Galaxian 2, so we can use those // handlers are identical to Galaxian 2, so we can use those
// config // config
@ -2010,18 +2011,295 @@ static INPUT_PORTS_START( epacman2 )
PORT_CONFSETTING( 0x00, "2" ) PORT_CONFSETTING( 0x00, "2" )
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( epacman2, epacman2_state )
/***************************************************************************
Entex Turtles (manufactured in Japan)
* PCB label 560359
* Hitachi QFP HD38820A43 MCU
* COP411L sub MCU, labeled COP411L-KED/N
* cyan/red/green VFD display NEC FIP15BM32T
NOTE!: MESS external artwork is recommended
***************************************************************************/
class eturtles_state : public hh_hmcs40_state
{
public:
eturtles_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_hmcs40_state(mconfig, type, tag),
m_cop_irq(0)
{ }
virtual void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
UINT8 m_cop_irq;
DECLARE_WRITE_LINE_MEMBER(speaker_w);
DECLARE_WRITE8_MEMBER(cop_irq_w);
DECLARE_READ8_MEMBER(cop_latch_r);
DECLARE_READ8_MEMBER(cop_ack_r);
void update_int();
DECLARE_INPUT_CHANGED_MEMBER(input_changed);
protected:
virtual void machine_start();
};
// handlers (maincpu side first)
void eturtles_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,1,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
UINT32 plate = BITSWAP32(m_plate,31,30,11,12,18,19,16,17,22,15,20,21,27,26,23,25,24,2,3,1,0,6,4,5,10,9,2,8,7,14,1,13);
display_matrix(30, 15, plate | (grid >> 5 & 8), grid); // grid 8 also forces plate 3 high
}
WRITE8_MEMBER(eturtles_state::plate_w)
{
m_r[offset] = data;
// R0x-R6x: vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE16_MEMBER(eturtles_state::grid_w)
{
m_d = data;
// D1-D6: input mux
UINT8 inp_mux = data >> 1 & 0x3f;
if (inp_mux != m_inp_mux)
{
m_inp_mux = inp_mux;
update_int();
}
// D1-D15: vfd matrix grid
m_grid = data >> 1 & 0x7fff;
prepare_display();
}
void eturtles_state::update_int()
{
// INT0/1 on multiplexed inputs, and from COP D0
UINT8 inp = read_inputs(6);
set_interrupt(0, (inp & 1) | m_cop_irq);
set_interrupt(1, inp & 2);
}
// COP side
WRITE_LINE_MEMBER(eturtles_state::speaker_w)
{
// SK: speaker out
m_speaker->level_w(!state);
}
WRITE8_MEMBER(eturtles_state::cop_irq_w)
{
// D0: maincpu INT0 (active low)
m_cop_irq = ~data & 1;
update_int();
}
READ8_MEMBER(eturtles_state::cop_latch_r)
{
// L0-L3: soundlatch from maincpu R0x
return m_r[0];
}
READ8_MEMBER(eturtles_state::cop_ack_r)
{
// G0: ack from maincpu D0
return m_d & 1;
}
// config
static INPUT_PORTS_START( eturtles )
PORT_START("IN.0") // D1 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.1") // D2 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.2") // D3 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.3") // D4 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.4") // D5 INT0/1
PORT_CONFNAME( 0x01, 0x01, "Skill Level" ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_CONFSETTING( 0x01, "1" )
PORT_CONFSETTING( 0x00, "2" )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.5") // D6 INT0/1
PORT_CONFNAME( 0x03, 0x00, "Players" ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_CONFSETTING( 0x02, "0 (Demo)" )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x01, "2" )
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(eturtles_state::input_changed)
{
update_int();
}
void eturtles_state::machine_start()
{
hh_hmcs40_state::machine_start();
// register for savestates
save_item(NAME(m_cop_irq));
}
static MACHINE_CONFIG_START( eturtles, eturtles_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r)) MCFG_HMCS40_WRITE_R_CB(0, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(3, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(4, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(4, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(5, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(6, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(egalaxn2_state, grid_w)) MCFG_HMCS40_WRITE_D_CB(WRITE16(eturtles_state, grid_w))
MCFG_CPU_ADD("audiocpu", COP411, 215000) // approximation
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_OSCILLATOR_OUTPUT, COP400_MICROBUS_DISABLED) // guessed
MCFG_COP400_WRITE_SK_CB(WRITELINE(eturtles_state, speaker_w))
MCFG_COP400_WRITE_D_CB(WRITE8(eturtles_state, cop_irq_w))
MCFG_COP400_READ_L_CB(READ8(eturtles_state, cop_latch_r))
MCFG_COP400_READ_G_CB(READ8(eturtles_state, cop_ack_r))
MCFG_QUANTUM_PERFECT_CPU("maincpu")
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
/***************************************************************************
Entex Stargate (manufactured in Japan)
* PCB label 5603521/31
* Hitachi QFP HD38820A42 MCU
* COP411L sub MCU, labeled ~/B8236 COP411L-KEC/N
* cyan/red/green VFD display NEC FIP15AM32T (EL628-003) no. 2-421, with partial color overlay
NOTE!: MESS external artwork is recommended
***************************************************************************/
class estargte_state : public eturtles_state
{
public:
estargte_state(const machine_config &mconfig, device_type type, const char *tag)
: eturtles_state(mconfig, type, tag)
{ }
virtual void prepare_display();
DECLARE_READ8_MEMBER(cop_data_r);
};
// handlers (most of it is handled in eturtles_state above)
void estargte_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,0,14,13,12,11,10,9,8,7,6,5,4,3,2,1);
UINT32 plate = BITSWAP32(m_plate,31,30,29,15,17,19,21,23,25,27,26,24,3,22,20,18,16,14,12,10,8,6,4,2,0,1,3,5,7,9,11,13);
display_matrix(29, 14, plate, grid);
}
READ8_MEMBER(estargte_state::cop_data_r)
{
// L0-L3: soundlatch from maincpu R0x
// L7: ack from maincpu D0
return m_r[0] | (m_d << 7 & 0x80);
}
// config
static INPUT_PORTS_START( estargte )
PORT_START("IN.0") // D1 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL) PORT_NAME("Inviso")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL) PORT_NAME("Smart Bomb")
PORT_START("IN.1") // D2 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL) PORT_NAME("Fire")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL) PORT_NAME("Change Direction")
PORT_START("IN.2") // D3 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_START("IN.3") // D4 INT0/1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL) PORT_NAME("Thrust")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // D5 INT0/1
PORT_CONFNAME( 0x01, 0x00, "Players" ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_CONFSETTING( 0x00, "0 (Demo)" ) // yes, same value as 1-player, hold the Inviso button at boot to enter demo mode
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x01, "2" )
PORT_CONFNAME( 0x02, 0x02, "Skill Level" ) PORT_CHANGED_MEMBER(DEVICE_SELF, eturtles_state, input_changed, NULL)
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_START("IN.5") // D6 INT0/1
PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static MACHINE_CONFIG_START( estargte, estargte_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
MCFG_HMCS40_WRITE_R_CB(0, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(4, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(eturtles_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(eturtles_state, grid_w))
MCFG_CPU_ADD("audiocpu", COP411, 190000) // approximation
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_OSCILLATOR_OUTPUT, COP400_MICROBUS_DISABLED) // guessed
MCFG_COP400_WRITE_SK_CB(WRITELINE(eturtles_state, speaker_w))
MCFG_COP400_WRITE_D_CB(WRITE8(eturtles_state, cop_irq_w))
MCFG_COP400_READ_L_CB(READ8(estargte_state, cop_data_r))
MCFG_QUANTUM_PERFECT_CPU("maincpu")
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))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
@ -3104,6 +3382,26 @@ ROM_START( epacman2 )
ROM_END ROM_END
ROM_START( estargte )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a42", 0x0000, 0x1000, CRC(5f6d55a6) SHA1(0da32149790fa5f16097338fc80536b462169e0c) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 0x0200, "audiocpu", 0 )
ROM_LOAD( "cop411l-kec_n", 0x0000, 0x0200, CRC(fbd3c2d3) SHA1(65b8b24d38678c3fa970bfd639e9449a75a28927) )
ROM_END
ROM_START( eturtles )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a43", 0x0000, 0x1000, CRC(446aa4e2) SHA1(d1c0fb14ea7081def53b1174964b39eed1e5d5e6) )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 0x0200, "audiocpu", 0 )
ROM_LOAD( "cop411l-ked_n", 0x0000, 0x0200, CRC(503d26e9) SHA1(a53d24d62195bfbceff2e4a43199846e0950aef6) )
ROM_END
ROM_START( ghalien ) ROM_START( ghalien )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) ) ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
@ -3180,7 +3478,9 @@ CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Colec
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 )
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, egalaxn2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, estargte, 0, 0, estargte, estargte, driver_device, 0, "Entex", "Stargate (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1982, eturtles, 0, 0, eturtles, eturtles, driver_device, 0, "Entex", "Turtles (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( 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( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )

View File

@ -24,6 +24,7 @@
*MP1296 TMS1100? 1982, Entex Black Knight *MP1296 TMS1100? 1982, Entex Black Knight
*MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer *MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
@MP1525 TMS1170 1980, Coleco Head to Head Baseball @MP1525 TMS1170 1980, Coleco Head to Head Baseball
*MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000
@MP2105 TMS1370 1979, Gakken Poker @MP2105 TMS1370 1979, Gakken Poker
*MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000 *MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000
*MP2788 ? 1980, Bandai Flight Time (? note: VFD-capable) *MP2788 ? 1980, Bandai Flight Time (? note: VFD-capable)
@ -31,6 +32,7 @@
@MP3226 TMS1000 1978, Milton Bradley Simon (model 4850) @MP3226 TMS1000 1978, Milton Bradley Simon (model 4850)
@MP3301A TMS1000 1979, Milton Bradley Big Trak @MP3301A TMS1000 1979, Milton Bradley Big Trak
*MP3320A TMS1000 1979, Coleco Head to Head Basketball *MP3320A TMS1000 1979, Coleco Head to Head Basketball
*M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?)
MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c
@MP3404 TMS1100 1978, Parker Brothers Merlin @MP3404 TMS1100 1978, Parker Brothers Merlin
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron @MP3405 TMS1100 1979, Coleco Amaze-A-Tron
@ -45,10 +47,12 @@
@MP3476 TMS1100 1979, Milton Bradley Super Simon @MP3476 TMS1100 1979, Milton Bradley Super Simon
MP3479 TMS1100 1980, MicroVision cartridge: Baseball MP3479 TMS1100 1980, MicroVision cartridge: Baseball
MP3481 TMS1100 1979, MicroVision cartridge: Connect Four MP3481 TMS1100 1979, MicroVision cartridge: Connect Four
*MP3491 TMS1100 1980, Mattel Horserace Analyzer
MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel
M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M34000, ..) M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M3400x..)
M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
*M34078A TMS1100 1983, Milton Bradley Arcade Mania
@MP6100A TMS0980 1979, Ideal Electronic Detective @MP6100A TMS0980 1979, Ideal Electronic Detective
@MP6101B TMS0980 1979, Parker Brothers Stop Thief @MP6101B TMS0980 1979, Parker Brothers Stop Thief
*MP6361 ? 1983, Defender Strikes (? note: VFD-capable) *MP6361 ? 1983, Defender Strikes (? note: VFD-capable)
@ -894,7 +898,7 @@ MACHINE_CONFIG_END
This is a head to head electronic tabletop LED-display sports console. This is a head to head electronic tabletop LED-display sports console.
One cartridge(Football) was included with the console, the other three were One cartridge(Football) was included with the console, the other three were
sold separately. Gameplay has emphasis on strategy, read the official manual sold in a pack. Gameplay has emphasis on strategy, read the official manual
on how to play. Remember that you can rotate the view in MESS: rotate left on how to play. Remember that you can rotate the view in MESS: rotate left
for Home(P1) orientation, rotate right for Visitor(P2) orientation. for Home(P1) orientation, rotate right for Visitor(P2) orientation.

View File

@ -2203,6 +2203,8 @@ cpacmanr1 // Coleco (rev 1)
cmspacmn // Coleco cmspacmn // Coleco
egalaxn2 // Entex egalaxn2 // Entex
epacman2 // Entex epacman2 // Entex
estargte // Entex
eturtles // Entex
ghalien // Gakken ghalien // Gakken
gckong // Gakken gckong // Gakken
gdigdug // Gakken gdigdug // Gakken