mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
Merge branch 'master' of https://github.com/mamedev/mame.git
This commit is contained in:
commit
9f157b47c4
@ -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")
|
||||
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
|
||||
---@src/emu/cpu/cosmac/cosmac.h,CPUS += COSMAC
|
||||
|
@ -100,7 +100,7 @@ CPUS["SM8500"] = true
|
||||
CPUS["MINX"] = true
|
||||
CPUS["SSEM"] = true
|
||||
CPUS["AVR8"] = true
|
||||
CPUS["TMS0980"] = true
|
||||
--CPUS["TMS0980"] = true
|
||||
CPUS["I4004"] = true
|
||||
CPUS["SUPERFX"] = true
|
||||
CPUS["Z8"] = true
|
||||
@ -123,9 +123,10 @@ CPUS["ALTO2"] = true
|
||||
--CPUS["W65816"] = true
|
||||
CPUS["ARC"] = true
|
||||
CPUS["ARCOMPACT"] = true
|
||||
CPUS["AMIS2000"] = true
|
||||
CPUS["UCOM4"] = true
|
||||
--CPUS["AMIS2000"] = true
|
||||
--CPUS["UCOM4"] = true
|
||||
CPUS["HMCS40"] = true
|
||||
--CPUS["E0C6200"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available sound cores
|
||||
|
@ -103,7 +103,7 @@ CPUS["SUPERFX"] = true
|
||||
CPUS["Z8"] = true
|
||||
CPUS["I8008"] = true
|
||||
CPUS["SCMP"] = true
|
||||
CPUS["MN10200"] = true
|
||||
--CPUS["MN10200"] = true
|
||||
CPUS["COSMAC"] = true
|
||||
CPUS["UNSP"] = true
|
||||
CPUS["HCD62121"] = true
|
||||
@ -123,6 +123,7 @@ CPUS["ARCOMPACT"] = true
|
||||
CPUS["AMIS2000"] = true
|
||||
CPUS["UCOM4"] = true
|
||||
CPUS["HMCS40"] = true
|
||||
CPUS["E0C6200"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available sound cores; some of these are
|
||||
|
@ -83,7 +83,7 @@ protected:
|
||||
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); }
|
||||
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 1; }
|
||||
|
104
src/emu/cpu/e0c6200/e0c6200.c
Normal file
104
src/emu/cpu/e0c6200/e0c6200.c
Normal 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--;
|
||||
}
|
||||
}
|
73
src/emu/cpu/e0c6200/e0c6200.h
Normal file
73
src/emu/cpu/e0c6200/e0c6200.h
Normal 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_ */
|
18
src/emu/cpu/e0c6200/e0c6200d.c
Normal file
18
src/emu/cpu/e0c6200/e0c6200d.c
Normal 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;
|
||||
}
|
1
src/emu/cpu/e0c6200/e0c6200op.inc
Normal file
1
src/emu/cpu/e0c6200/e0c6200op.inc
Normal file
@ -0,0 +1 @@
|
||||
// E0C6200 opcode handlers
|
@ -153,7 +153,7 @@ protected:
|
||||
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); }
|
||||
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; }
|
||||
|
@ -90,7 +90,7 @@ protected:
|
||||
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); }
|
||||
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 1; }
|
||||
|
@ -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__)
|
||||
, device_video_interface(mconfig, *this)
|
||||
, m_program_config("program", ENDIANNESS_LITTLE, 16, 32, 3)
|
||||
, m_reset_deferred(FALSE)
|
||||
, m_halt_on_reset(FALSE)
|
||||
, m_pixclock(0)
|
||||
, m_pixperclock(0)
|
||||
, 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 */
|
||||
/* the first time we are run */
|
||||
m_reset_deferred = m_halt_on_reset;
|
||||
|
||||
if (m_reset_deferred)
|
||||
{
|
||||
io_register_w(*m_program, REG_HSTCTLH, 0x8000, 0xffff);
|
||||
@ -714,11 +716,10 @@ void tms340x0_device::execute_run()
|
||||
m_icount = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* if the CPU's reset was deferred, do it now */
|
||||
if (m_reset_deferred)
|
||||
{
|
||||
m_reset_deferred = 0;
|
||||
m_reset_deferred = FALSE;
|
||||
m_pc = RLONG(0xffffffe0);
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ public:
|
||||
// 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);
|
||||
|
||||
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_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; }
|
||||
@ -327,7 +327,8 @@ protected:
|
||||
INT32 m_gfxcycles;
|
||||
UINT8 m_pixelshift;
|
||||
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_external_host_access;
|
||||
UINT8 m_executing;
|
||||
|
@ -144,7 +144,7 @@ protected:
|
||||
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); }
|
||||
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 1; }
|
||||
|
@ -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)));
|
||||
|
||||
/* 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")
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
|
@ -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, 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, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
|
||||
|
@ -9,7 +9,7 @@
|
||||
Deluxe Baseball (1975/06) YES 550188
|
||||
Hockey (1973/11) YES 500699 500629
|
||||
Horoscope (1976) UNKNOWN
|
||||
Knock Out (1974/09)? UNKNOWN
|
||||
Knock Out (1974/09) YES 550300
|
||||
Lie Detector (1976) UNKNOWN Unreleased Unreleased
|
||||
Sea Battle (1976/04) UNKNOWN
|
||||
Soccer (1973/11) YES 500880 500889
|
||||
@ -22,10 +22,10 @@
|
||||
|
||||
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)?
|
||||
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)
|
||||
Hockey (1973/??) Hockey (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_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_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
|
||||
|
@ -494,8 +494,8 @@ int vertex_program_simulator::step()
|
||||
{
|
||||
int p1, p2;
|
||||
float tmp[3 * 4];
|
||||
float tmpv[4];
|
||||
float tmps[4];
|
||||
float tmpv[4] = { 0, 0, 0, 0};
|
||||
float tmps[4] = { 0, 0, 0, 0};
|
||||
instruction::decoded *d;
|
||||
|
||||
#if 0 // useful while debugging to see what instrucion is being executed
|
||||
|
@ -40,8 +40,8 @@
|
||||
@29 HD38820A 1981, Coleco Pac-Man (ver 2)
|
||||
*32 HD38820A 198?, Gakken Super Cobra
|
||||
*38 HD38820A 1982, Entex Crazy Climber
|
||||
*42 HD38820A 1982, Entex Stargate (have dump, +COP411 for audio)
|
||||
*43 HD38820A 1982, Entex Turtles (have dump, +COP411 for audio)
|
||||
@42 HD38820A 1982, Entex Stargate
|
||||
@43 HD38820A 1982, Entex Turtles
|
||||
@45 HD38820A 1982, Coleco Donkey Kong
|
||||
@49 HD38820A 1983, Bandai Zackman
|
||||
@61 HD38820A 1983, Coleco Ms. Pac-Man
|
||||
@ -69,6 +69,7 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/hmcs40/hmcs40.h"
|
||||
#include "cpu/cop400/cop400.h"
|
||||
#include "sound/speaker.h"
|
||||
|
||||
#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;
|
||||
|
||||
// D1-D15: vfd matrix grid
|
||||
m_grid = data >> 1;
|
||||
m_grid = data >> 1 & 0x7fff;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
@ -1967,7 +1968,7 @@ MACHINE_CONFIG_END
|
||||
NOTE!: MESS external artwork is recommended
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#if 0
|
||||
class epacman2_state : public egalaxn2_state
|
||||
{
|
||||
public:
|
||||
@ -1975,7 +1976,7 @@ public:
|
||||
: egalaxn2_state(mconfig, type, tag)
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
// handlers are identical to Galaxian 2, so we can use those
|
||||
|
||||
// config
|
||||
@ -2010,18 +2011,295 @@ static INPUT_PORTS_START( epacman2 )
|
||||
PORT_CONFSETTING( 0x00, "2" )
|
||||
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 */
|
||||
MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
|
||||
MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r))
|
||||
MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(4, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(egalaxn2_state, plate_w))
|
||||
MCFG_HMCS40_WRITE_D_CB(WRITE16(egalaxn2_state, grid_w))
|
||||
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, 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_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
|
||||
@ -3104,6 +3382,26 @@ ROM_START( epacman2 )
|
||||
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_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
|
||||
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( 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( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
|
||||
|
@ -24,6 +24,7 @@
|
||||
*MP1296 TMS1100? 1982, Entex Black Knight
|
||||
*MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
|
||||
@MP1525 TMS1170 1980, Coleco Head to Head Baseball
|
||||
*MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000
|
||||
@MP2105 TMS1370 1979, Gakken Poker
|
||||
*MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000
|
||||
*MP2788 ? 1980, Bandai Flight Time (? note: VFD-capable)
|
||||
@ -31,6 +32,7 @@
|
||||
@MP3226 TMS1000 1978, Milton Bradley Simon (model 4850)
|
||||
@MP3301A TMS1000 1979, Milton Bradley Big Trak
|
||||
*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
|
||||
@MP3404 TMS1100 1978, Parker Brothers Merlin
|
||||
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
|
||||
@ -45,10 +47,12 @@
|
||||
@MP3476 TMS1100 1979, Milton Bradley Super Simon
|
||||
MP3479 TMS1100 1980, MicroVision cartridge: Baseball
|
||||
MP3481 TMS1100 1979, MicroVision cartridge: Connect Four
|
||||
*MP3491 TMS1100 1980, Mattel Horserace Analyzer
|
||||
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
|
||||
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
|
||||
*M34078A TMS1100 1983, Milton Bradley Arcade Mania
|
||||
@MP6100A TMS0980 1979, Ideal Electronic Detective
|
||||
@MP6101B TMS0980 1979, Parker Brothers Stop Thief
|
||||
*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.
|
||||
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
|
||||
for Home(P1) orientation, rotate right for Visitor(P2) orientation.
|
||||
|
||||
|
@ -2203,6 +2203,8 @@ cpacmanr1 // Coleco (rev 1)
|
||||
cmspacmn // Coleco
|
||||
egalaxn2 // Entex
|
||||
epacman2 // Entex
|
||||
estargte // Entex
|
||||
eturtles // Entex
|
||||
ghalien // Gakken
|
||||
gckong // Gakken
|
||||
gdigdug // Gakken
|
||||
|
Loading…
Reference in New Issue
Block a user