mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
New working clones
------------------ Kasparov GK 2000 (H8/3212 version) [hap, Sean Riddle]
This commit is contained in:
parent
5b29b8d237
commit
f046326005
3 changed files with 82 additions and 26 deletions
|
@ -39052,6 +39052,7 @@ exechess
|
|||
centurion
|
||||
cougar
|
||||
gk2000
|
||||
gk2000a
|
||||
gk2100
|
||||
|
||||
@source:saitek/intchess.cpp
|
||||
|
|
|
@ -1327,15 +1327,15 @@ namespace
|
|||
#define C352CLOCK (25401600)
|
||||
#define C352DIV (288)
|
||||
|
||||
#define PIXEL_CLOCK (51.2_MHz_XTAL/4*2)
|
||||
|
||||
#define HTOTAL (814)
|
||||
#define HBEND (0)
|
||||
#define HBSTART (640)
|
||||
|
||||
#define VTOTAL (525)
|
||||
#define VBEND (0)
|
||||
#define VBSTART (480)
|
||||
#define PIXEL_CLOCK (51.2_MHz_XTAL/4*2)
|
||||
|
||||
#define HTOTAL (814)
|
||||
#define HBEND (0)
|
||||
#define HBSTART (640)
|
||||
|
||||
#define VTOTAL (525)
|
||||
#define VBEND (0)
|
||||
#define VBSTART (480)
|
||||
|
||||
#define MAIN_VBLANK_IRQ 0x01
|
||||
#define MAIN_C361_IRQ 0x02
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
// thanks-to:Sean Riddle, Berger
|
||||
/*******************************************************************************
|
||||
|
||||
Saitek GK 2000 / Centurion
|
||||
Saitek GK 2000 / GK 2100 / Centurion
|
||||
|
||||
These chess computers all have the same I/O and fit in the same driver. The chess
|
||||
engine is by Frans Morsch.
|
||||
|
||||
TODO:
|
||||
- is the H8/3212 V03 version on the same hardware?
|
||||
- is the H8/3212 V04 ROM the same as V03, just a different package?
|
||||
- versions with the A20 ROM that don't officially support the extra options on
|
||||
the 2nd row, can still access them when turning the computer on by simultaneously
|
||||
pressing the Go/Stop button with the Option button. This doesn't work on MAME,
|
||||
|
@ -33,11 +33,13 @@ GK 2000 (H8/323 version):
|
|||
- LCD with 5 7segs and custom segments
|
||||
- piezo, 16 LEDs, button sensors chessboard
|
||||
|
||||
Saitek GK 2100 is on the same hardware, but has a H8/325 instead of H8/323.
|
||||
Travel Champion 2100 has the same MCU as GK 2100.
|
||||
Radio Shack Chess Master:
|
||||
- PCB label: same as Centurion / Cougar (see below)
|
||||
- Hitachi H8/3212 MCU, 10MHz XTAL
|
||||
- rest is same as GK 2000
|
||||
|
||||
H8/323 A13 MCU is used in:
|
||||
- Saitek GK 2000 (86071220X12)
|
||||
- Saitek GK 2000 (1992 version, 86071220X12)
|
||||
- Saitek Travel Champion 2080 (86071220X12)
|
||||
- Saitek Mephisto Mythos (86142221X34)
|
||||
- Tandy (Radio Shack) Mega 2050X (86071221X12)
|
||||
|
@ -45,6 +47,35 @@ H8/323 A13 MCU is used in:
|
|||
|
||||
Travel Champion 2080 and Tandy Mega 2050X are 14MHz instead of 20MHz.
|
||||
|
||||
H8/3212 V03 MCU (DIP) is used in:
|
||||
- Saitek GK 2000 (1997 version, suspected)
|
||||
- Saitek Barracuda (suspected)
|
||||
- Saitek Mephisto Montana
|
||||
- Tandy (Radio Shack) Chess Master (aka Master Chess Computer)
|
||||
|
||||
GK 2000 was still sold in 1997. Just like the latest version of Turbo Advanced
|
||||
Trainer was fitted with a H8/3212 (see tatrain.cpp), it is assumed Saitek did
|
||||
the same with GK 2000.
|
||||
|
||||
H8/3212 V04 MCU (QFP) is used in:
|
||||
- Saitek Mephisto Miami
|
||||
- Saitek Mephisto Diplomat Advanced Travel Chess (suspected)
|
||||
- Saitek Mephisto Explorer
|
||||
|
||||
================================================================================
|
||||
|
||||
Saitek GK 2100
|
||||
--------------
|
||||
|
||||
Hardware notes:
|
||||
- PCB label: ST12-PE-009 REV1 (same as GK 2000)
|
||||
- Hitachi H8/325 MCU, 20MHz XTAL
|
||||
- rest is same as GK 2000
|
||||
|
||||
H8/325 B40 MCU is used in:
|
||||
- Saitek GK 2100
|
||||
- Saitek Travel Champion 2100
|
||||
|
||||
================================================================================
|
||||
|
||||
Saitek Centurion family
|
||||
|
@ -128,12 +159,13 @@ public:
|
|||
template <typename T> void cpu_config(T &maincpu);
|
||||
void shared(machine_config &config);
|
||||
void gk2000(machine_config &config);
|
||||
void gk2000a(machine_config &config);
|
||||
void gk2100(machine_config &config);
|
||||
void centurion(machine_config &config);
|
||||
void cougar(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(go_button);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(gk2000_change_cpu_freq);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(gk2000a_change_cpu_freq);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(centurion_change_cpu_freq);
|
||||
|
||||
protected:
|
||||
|
@ -182,7 +214,7 @@ void gk2000_state::machine_start()
|
|||
save_item(NAME(m_lcd_com));
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(gk2000_state::gk2000_change_cpu_freq)
|
||||
INPUT_CHANGED_MEMBER(gk2000_state::gk2000a_change_cpu_freq)
|
||||
{
|
||||
// only 20MHz and 14MHz versions are known to exist, but the software supports others
|
||||
static const int xm[9] = { 8, 20, 24, 28, 32, -1, -1, -1, 14 }; // XTAL in MHz (-1 is invalid)
|
||||
|
@ -325,22 +357,29 @@ static INPUT_PORTS_START( gk2000 )
|
|||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Black / Right")
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_CONFNAME( 0xff, 0x02, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(gk2000_state::gk2000_change_cpu_freq), 0) // factory set
|
||||
PORT_CONFSETTING( 0x01, "8MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x00, "14MHz (Travel Champion 2080)" )
|
||||
PORT_CONFSETTING( 0x02, "20MHz (GK 2000, GK 2100)" )
|
||||
PORT_CONFSETTING( 0x04, "24MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x08, "28MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x10, "32MHz (unofficial)" )
|
||||
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("IN.3")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(gk2000_state::go_button), 0) PORT_NAME("Go / Stop")
|
||||
PORT_BIT(0xef, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( gk2100 )
|
||||
static INPUT_PORTS_START( gk2000a )
|
||||
PORT_INCLUDE( gk2000 )
|
||||
|
||||
PORT_MODIFY("IN.2")
|
||||
PORT_CONFNAME( 0xff, 0x02, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(gk2000_state::gk2000a_change_cpu_freq), 0) // factory set
|
||||
PORT_CONFSETTING( 0x01, "8MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x00, "14MHz (Travel Champion 2080)" )
|
||||
PORT_CONFSETTING( 0x02, "20MHz (GK 2000, GK 2100)" )
|
||||
PORT_CONFSETTING( 0x04, "24MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x08, "28MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x10, "32MHz (unofficial)" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( gk2100 )
|
||||
PORT_INCLUDE( gk2000a )
|
||||
|
||||
PORT_MODIFY("IN.1")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_CODE(KEYCODE_MINUS) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("White / -")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_EQUALS) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("Black / +")
|
||||
|
@ -356,7 +395,6 @@ static INPUT_PORTS_START( cougar )
|
|||
PORT_CONFSETTING( 0x00, "12MHz (Mephisto Mystery)" )
|
||||
PORT_CONFSETTING( 0x10, "14MHz (unofficial)" )
|
||||
PORT_CONFSETTING( 0x08, "16MHz (Cougar, Mephisto Explorer Pro)" )
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( centurion )
|
||||
|
@ -425,6 +463,14 @@ void gk2000_state::shared(machine_config &config)
|
|||
}
|
||||
|
||||
void gk2000_state::gk2000(machine_config &config)
|
||||
{
|
||||
H83212(config, m_maincpu, 10_MHz_XTAL);
|
||||
cpu_config<h83212_device>(downcast<h83212_device &>(*m_maincpu));
|
||||
|
||||
shared(config);
|
||||
}
|
||||
|
||||
void gk2000_state::gk2000a(machine_config &config)
|
||||
{
|
||||
H8323(config, m_maincpu, 20_MHz_XTAL);
|
||||
cpu_config<h8323_device>(downcast<h8323_device &>(*m_maincpu));
|
||||
|
@ -467,6 +513,14 @@ void gk2000_state::cougar(machine_config &config)
|
|||
*******************************************************************************/
|
||||
|
||||
ROM_START( gk2000 )
|
||||
ROM_REGION( 0x4000, "maincpu", 0 )
|
||||
ROM_LOAD("97_saitek_86164430826_hd6433212v03p.u1", 0x0000, 0x4000, CRC(220c80d4) SHA1(f1df2d04afeffec0a0a66036dfa2c4dcb85ae8f2) )
|
||||
|
||||
ROM_REGION( 68501, "screen", 0 )
|
||||
ROM_LOAD("gk2000.svg", 0, 68501, CRC(80554c49) SHA1(88f06ec8f403eaaf7cbce4cc84807b5742ce7108) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( gk2000a )
|
||||
ROM_REGION( 0x4000, "maincpu", 0 )
|
||||
ROM_LOAD("92_saitek_86071220x12_3238a13p.u1", 0x0000, 0x4000, CRC(2059399c) SHA1(d99d5f86b80565e6017b19ef3f330112ac1ce685) )
|
||||
|
||||
|
@ -501,7 +555,8 @@ ROM_END
|
|||
*******************************************************************************/
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1992, gk2000, 0, 0, gk2000, gk2000, gk2000_state, empty_init, "Saitek", "Kasparov GK 2000", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1997, gk2000, 0, 0, gk2000, gk2000, gk2000_state, empty_init, "Saitek", "Kasparov GK 2000 (H8/3212 version)", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1992, gk2000a, gk2000, 0, gk2000a, gk2000a, gk2000_state, empty_init, "Saitek", "Kasparov GK 2000 (H8/323 version)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
SYST( 1994, gk2100, 0, 0, gk2100, gk2100, gk2000_state, empty_init, "Saitek", "Kasparov GK 2100", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
|
Loading…
Reference in a new issue