mirror of
https://github.com/holub/mame
synced 2025-06-08 13:53:52 +03:00
New working machines
-------------------- Mini Chess [hap, Sean Riddle]
This commit is contained in:
parent
e30ab9be9a
commit
516f80e31d
@ -3350,6 +3350,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/drivers/saitek_exchess.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_exchess.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/saitek_leonardo.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_leonardo.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/saitek_minichess.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/saitek_prschess.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_prschess.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/saitek_renaissance.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_renaissance.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
|
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
|
||||||
|
@ -406,7 +406,8 @@ ROM_END
|
|||||||
|
|
||||||
ROM_START( chessmstdm )
|
ROM_START( chessmstdm )
|
||||||
ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
|
ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
|
||||||
ROM_LOAD("cmd_bm002_bm201.bin", 0x0000, 0x4000, CRC(47858079) SHA1(eeae1126b514e4853d056690e72e7f5c6dfb3008))
|
ROM_LOAD("002", 0x0000, 0x2000, CRC(bed56fef) SHA1(dad0f8ddbd9b10013a5bdcc09ee6db39cfb26b78) ) // U2364D45
|
||||||
|
ROM_LOAD("201", 0x2000, 0x2000, CRC(c9dc7f29) SHA1(a3e1b66d0e15ffe83a9165d15c4a83013852c2fe) ) // "
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,13 +19,13 @@ Hardware notes:
|
|||||||
|
|
||||||
Sensor Computachess:
|
Sensor Computachess:
|
||||||
- PCB label WA 001 600 002
|
- PCB label WA 001 600 002
|
||||||
- 44801A50 MCU @ ~400kHz
|
- Hitachi 44801A50 MCU @ ~400kHz
|
||||||
- buzzer, 16 leds, button sensors chessboard
|
- buzzer, 16 leds, button sensors chessboard
|
||||||
|
|
||||||
Portachess II:
|
Portachess II:
|
||||||
- PCB label CXG223-600-001 (main pcb), CXG 211 600 101 (led pcb taken from
|
- PCB label CXG223-600-001 (main pcb), CXG 211 600 101 (led pcb taken from
|
||||||
Advanced Star Chess, extra led row unused here)
|
Advanced Star Chess, extra led row unused here)
|
||||||
- HD44801C89 MCU @ ~400kHz (serial 202: from Portachess 1985 version)
|
- Hitachi HD44801C89 MCU @ ~400kHz (serial 202: from Portachess 1985 version)
|
||||||
- rest same as above
|
- rest same as above
|
||||||
|
|
||||||
HD44801A50 used in:
|
HD44801A50 used in:
|
||||||
|
@ -83,9 +83,9 @@ private:
|
|||||||
DECLARE_WRITE8_MEMBER(control_w);
|
DECLARE_WRITE8_MEMBER(control_w);
|
||||||
DECLARE_READ8_MEMBER(input_r);
|
DECLARE_READ8_MEMBER(input_r);
|
||||||
|
|
||||||
int m_numbanks;
|
int m_numbanks = 0;
|
||||||
u8 m_speech_bank;
|
u8 m_speech_bank = 0;
|
||||||
u8 m_select;
|
u8 m_select = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
void chesster_state::init_chesster()
|
void chesster_state::init_chesster()
|
||||||
@ -96,10 +96,6 @@ void chesster_state::init_chesster()
|
|||||||
|
|
||||||
void chesster_state::machine_start()
|
void chesster_state::machine_start()
|
||||||
{
|
{
|
||||||
// zerofill
|
|
||||||
m_speech_bank = 0;
|
|
||||||
m_select = 0;
|
|
||||||
|
|
||||||
// register for savestates
|
// register for savestates
|
||||||
save_item(NAME(m_speech_bank));
|
save_item(NAME(m_speech_bank));
|
||||||
save_item(NAME(m_select));
|
save_item(NAME(m_select));
|
||||||
|
@ -65,15 +65,16 @@
|
|||||||
@A88 HD38820 1984, Bandai Pair Match (PT-460) (1/2)
|
@A88 HD38820 1984, Bandai Pair Match (PT-460) (1/2)
|
||||||
@A89 HD38820 1984, Bandai Pair Match (PT-460) (2/2)
|
@A89 HD38820 1984, Bandai Pair Match (PT-460) (2/2)
|
||||||
|
|
||||||
*A34 HD44801 1981, Scisys Mini Chess / Graduate Chess / Chesspartner 3000/4000
|
A34 HD44801 1981, SciSys Mini Chess -> saitek_minichess.cpp
|
||||||
A50 HD44801 1981, CXG Sensor Computachess -> cxg_scptchess.cpp
|
A50 HD44801 1981, CXG Sensor Computachess -> cxg_scptchess.cpp
|
||||||
A75 HD44801 1982, Alpha 8201 protection MCU -> machine/alpha8201.*
|
A75 HD44801 1982, Alpha 8201 protection MCU -> machine/alpha8201.*
|
||||||
*A85 HD44801 1982, Scisys Travel Sensor / Travel Mate / Chesspartner 5000/6000
|
*A85 HD44801 1982, SciSys Travel Sensor / Travel Mate / Chesspartner 5000/6000
|
||||||
|
*A92 HD44801 1982, SciSys Play Bridge Computer
|
||||||
B35 HD44801 1983, Alpha 8302 protection MCU (see 8201)
|
B35 HD44801 1983, Alpha 8302 protection MCU (see 8201)
|
||||||
B42 HD44801 1983, Alpha 8303 protection MCU (see 8201)
|
B42 HD44801 1983, Alpha 8303 protection MCU (see 8201)
|
||||||
*B43 HD44801 1983, Alpha 8304 protection MCU (see 8201)
|
*B43 HD44801 1983, Alpha 8304 protection MCU (see 8201)
|
||||||
C57 HD44801 1985, Alpha 8505 protection MCU (see 8201)
|
C57 HD44801 1985, Alpha 8505 protection MCU (see 8201)
|
||||||
C89 HD44801 1985, CXG Portachess II / Computachess IV -> cxg_scptchess.cpp
|
C89 HD44801 1985, CXG Portachess (1985 version) -> cxg_scptchess.cpp
|
||||||
|
|
||||||
*A86 HD44820 1983, Chess King Pocket Micro
|
*A86 HD44820 1983, Chess King Pocket Micro
|
||||||
*B63 HD44820 1985, CXG Pocket Chess (12 buttons)
|
*B63 HD44820 1985, CXG Pocket Chess (12 buttons)
|
||||||
|
@ -128,9 +128,11 @@ INPUT_PORTS_END
|
|||||||
void berlin_state::berlin(machine_config &config)
|
void berlin_state::berlin(machine_config &config)
|
||||||
{
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M68000(config, m_maincpu, 12_MHz_XTAL);
|
M68000(config, m_maincpu, 12.288_MHz_XTAL);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &berlin_state::berlin_mem);
|
m_maincpu->set_addrmap(AS_PROGRAM, &berlin_state::berlin_mem);
|
||||||
m_maincpu->set_periodic_int(FUNC(berlin_state::irq2_line_hold), attotime::from_hz(750));
|
|
||||||
|
const attotime irq_period = attotime::from_hz(12.288_MHz_XTAL / 0x4000); // 750Hz
|
||||||
|
m_maincpu->set_periodic_int(FUNC(berlin_state::irq2_line_hold), irq_period);
|
||||||
|
|
||||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||||
ADDRESS_MAP_BANK(config, "nvram_map").set_map(&berlin_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13);
|
ADDRESS_MAP_BANK(config, "nvram_map").set_map(&berlin_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13);
|
||||||
|
@ -8,43 +8,54 @@ Hegener + Glaser Mephisto chesscomputers with plugin modules
|
|||||||
After Roma, H+G started naming the different versions 16 Bit/32 Bit instead of 68000/68020.
|
After Roma, H+G started naming the different versions 16 Bit/32 Bit instead of 68000/68020.
|
||||||
With Genius and the TM versions, they still applied "68030".
|
With Genius and the TM versions, they still applied "68030".
|
||||||
|
|
||||||
Almeria 16 Bit 12MHz
|
|
||||||
Almeria 32 Bit 12MHz
|
|
||||||
Portorose 16 Bit 12MHz
|
|
||||||
Portorose 32 Bit 12MHz
|
|
||||||
Lyon 16 Bit 12MHz
|
|
||||||
Lyon 32 Bit 12MHz
|
|
||||||
Vancouver 16 Bit 12MHz
|
|
||||||
Vancouver 32 Bit 12MHz
|
|
||||||
Genius 68030 33.3330MHz
|
|
||||||
|
|
||||||
The London program (1994 competition) is not a dedicated module, but an EPROM upgrade
|
The London program (1994 competition) is not a dedicated module, but an EPROM upgrade
|
||||||
released by Richard Lang for Almeria, Lyon, Portorose and Vancouver modules, and also
|
released by Richard Lang for Almeria, Lyon, Portorose and Vancouver modules, and also
|
||||||
available as upgrades for Berlin/Berlin Pro and Genius.
|
available as upgrades for Berlin/Berlin Pro and Genius. The engine is the same as
|
||||||
No Mephisto modules were released anymore after Saitek took over H+G, engine is the
|
Saitek's 1996 Mephisto London 68030 (limited release TM version).
|
||||||
same as Saitek's 1996 Mephisto London 68030 (limited release TM version).
|
|
||||||
|
Hardware notes:
|
||||||
|
|
||||||
|
Almeria 16 Bit, Lyon 16 Bit:
|
||||||
|
- MC68HC000FN12, 12.288MHz XTAL
|
||||||
|
- 128KB ROM (2*27C512)
|
||||||
|
- 512KB RAM (4*TC514256AP-10, or equivalent)
|
||||||
|
|
||||||
|
Portorose 32 Bit:
|
||||||
|
- MC68020RC12E, 12.288MHz XTAL
|
||||||
|
- 128KB ROM (TC5710000-20)
|
||||||
|
- 1MB RAM (8*TC514256AP-70)
|
||||||
|
|
||||||
|
Genius 68030:
|
||||||
|
- M68EC030RP40B, 33.3330MHz XTAL, 6.144MHz XTAL
|
||||||
|
- 256KB ROM (M27C2001)
|
||||||
|
- 512+256 KB RAM (TC518512PL-10, 8*TC55465P-20)
|
||||||
|
|
||||||
|
Display Modul:
|
||||||
|
- HD44780, 2-line LCD display
|
||||||
|
- 8KB RAM (TC5565APL-15L), battery
|
||||||
|
- piezo speaker
|
||||||
|
|
||||||
For the dedicated tournament machines, see mephisto_modular_tm.cpp
|
For the dedicated tournament machines, see mephisto_modular_tm.cpp
|
||||||
|
|
||||||
TODO:
|
|
||||||
- match I/S= diag speed test with real hardware (good test for proper waitstates),
|
|
||||||
especially gen32 is way too fast when comparing sound pitch
|
|
||||||
|
|
||||||
Undocumented buttons:
|
Undocumented buttons:
|
||||||
- holding ENTER and LEFT cursor on boot runs diagnostics
|
- holding ENTER and LEFT cursor on boot runs diagnostics
|
||||||
- holding CLEAR on boot will clear the battery backed RAM
|
- holding CLEAR on boot will clear the battery backed RAM
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- match I/S= diag speed test with real hardware (good test for proper waitstates),
|
||||||
|
especially gen32 is way too fast when comparing sound pitch
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
||||||
Bavaria piece recognition board:
|
Bavaria piece recognition board:
|
||||||
-------------------------------------------------
|
_______________________________________________
|
||||||
| |
|
| |
|
||||||
| 74HC21 74HC74 74HC238 |
|
| 74HC21 74HC74 74HC238 |
|
||||||
| 74HC4040 74HC574 74HC173 74HC374 |
|
| 74HC4040 74HC574 74HC173 74HC374 |
|
||||||
| ROM XTAL 74HC368 74HC374 |
|
| ROM XTAL 74HC368 74HC374 |
|
||||||
| 74HC4024 74HC32 74HC139 74HC374 |
|
| 74HC4024 74HC32 74HC139 74HC374 |
|
||||||
| |
|
|_______________________________________________|
|
||||||
-------------------------------------------------
|
|
||||||
XTAL = 7.37280MHz
|
XTAL = 7.37280MHz
|
||||||
ROM = TC57256AD-12, sine table (not used in MAME)
|
ROM = TC57256AD-12, sine table (not used in MAME)
|
||||||
|
|
||||||
@ -391,7 +402,7 @@ INPUT_PORTS_END
|
|||||||
void mmodular_state::alm16(machine_config &config)
|
void mmodular_state::alm16(machine_config &config)
|
||||||
{
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M68000(config, m_maincpu, 12_MHz_XTAL);
|
M68000(config, m_maincpu, 12.288_MHz_XTAL);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::alm16_mem);
|
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::alm16_mem);
|
||||||
m_maincpu->set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(600));
|
m_maincpu->set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(600));
|
||||||
|
|
||||||
@ -426,9 +437,11 @@ void mmodular_state::alm32(machine_config &config)
|
|||||||
alm16(config);
|
alm16(config);
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M68020(config.replace(), m_maincpu, 12_MHz_XTAL);
|
M68020(config.replace(), m_maincpu, 12.288_MHz_XTAL);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::alm32_mem);
|
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::alm32_mem);
|
||||||
m_maincpu->set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(750));
|
|
||||||
|
const attotime irq_period = attotime::from_hz(12.288_MHz_XTAL / 0x4000); // 750Hz
|
||||||
|
m_maincpu->set_periodic_int(FUNC(mmodular_state::irq2_line_hold), irq_period);
|
||||||
|
|
||||||
config.set_default_layout(layout_mephisto_alm32);
|
config.set_default_layout(layout_mephisto_alm32);
|
||||||
}
|
}
|
||||||
@ -450,7 +463,7 @@ void mmodular_state::gen32(machine_config &config)
|
|||||||
van32(config);
|
van32(config);
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M68EC030(config.replace(), m_maincpu, 33.333_MHz_XTAL); // M68EC030RP40B
|
M68EC030(config.replace(), m_maincpu, 33.333_MHz_XTAL);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::gen32_mem);
|
m_maincpu->set_addrmap(AS_PROGRAM, &mmodular_state::gen32_mem);
|
||||||
|
|
||||||
const attotime irq_period = attotime::from_hz(6.144_MHz_XTAL / 0x4000); // through 4060, 375Hz
|
const attotime irq_period = attotime::from_hz(6.144_MHz_XTAL / 0x4000); // through 4060, 375Hz
|
||||||
@ -473,8 +486,8 @@ ROM_END
|
|||||||
|
|
||||||
ROM_START( alm16 ) // U013 65CE 2FCE
|
ROM_START( alm16 ) // U013 65CE 2FCE
|
||||||
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||||
ROM_LOAD16_BYTE("alm16eve.bin", 0x00000, 0x10000, CRC(ee5b6ec4) SHA1(30920c1b9e16ffae576da5afa0b56da59ada3dbb) )
|
ROM_LOAD16_BYTE("almeria_16bit_v013_even", 0x00000, 0x10000, CRC(ee5b6ec4) SHA1(30920c1b9e16ffae576da5afa0b56da59ada3dbb) )
|
||||||
ROM_LOAD16_BYTE("alm16odd.bin", 0x00001, 0x10000, CRC(d0be4ee4) SHA1(d36c074802d2c9099cd44e75f9de3fc7d1fd9908) )
|
ROM_LOAD16_BYTE("almeria_16bit_v013_odd", 0x00001, 0x10000, CRC(d0be4ee4) SHA1(d36c074802d2c9099cd44e75f9de3fc7d1fd9908) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( port32 ) // V103 C734 1CD7
|
ROM_START( port32 ) // V103 C734 1CD7
|
||||||
@ -512,8 +525,8 @@ ROM_END
|
|||||||
|
|
||||||
ROM_START( lyon16 ) // V207 EC82 5805
|
ROM_START( lyon16 ) // V207 EC82 5805
|
||||||
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||||
ROM_LOAD16_BYTE("lyon16ev.bin", 0x00000, 0x10000, CRC(497bd41a) SHA1(3ffefeeac694f49997c10d248ec6a7aa932898a4) )
|
ROM_LOAD16_BYTE("lyon_16bit_even_v207", 0x00000, 0x10000, CRC(497bd41a) SHA1(3ffefeeac694f49997c10d248ec6a7aa932898a4) )
|
||||||
ROM_LOAD16_BYTE("lyon16od.bin", 0x00001, 0x10000, CRC(f9de3f54) SHA1(4060e29566d2f40122ccde3c1f84c94a9c1ed54f) )
|
ROM_LOAD16_BYTE("lyon_16bit_odd_v207", 0x00001, 0x10000, CRC(f9de3f54) SHA1(4060e29566d2f40122ccde3c1f84c94a9c1ed54f) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "bavaria", 0 )
|
ROM_REGION( 0x8000, "bavaria", 0 )
|
||||||
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
||||||
@ -529,8 +542,8 @@ ROM_END
|
|||||||
|
|
||||||
ROM_START( van16 ) // V309 C8F3 18D3
|
ROM_START( van16 ) // V309 C8F3 18D3
|
||||||
ROM_REGION16_BE( 0x40000, "maincpu", 0 )
|
ROM_REGION16_BE( 0x40000, "maincpu", 0 )
|
||||||
ROM_LOAD16_BYTE("va16even.bin", 0x00000, 0x20000, CRC(e87602d5) SHA1(90cb2767b4ae9e1b265951eb2569b9956b9f7f44) )
|
ROM_LOAD16_BYTE("vancouver_16_even_v309", 0x00000, 0x20000, CRC(e87602d5) SHA1(90cb2767b4ae9e1b265951eb2569b9956b9f7f44) )
|
||||||
ROM_LOAD16_BYTE("va16odd.bin", 0x00001, 0x20000, CRC(585f3bdd) SHA1(90bb94a12d3153a91e3760020e1ea2a9eaa7ec0a) )
|
ROM_LOAD16_BYTE("vancouver_16_odd_v309", 0x00001, 0x20000, CRC(585f3bdd) SHA1(90bb94a12d3153a91e3760020e1ea2a9eaa7ec0a) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "bavaria", 0 )
|
ROM_REGION( 0x8000, "bavaria", 0 )
|
||||||
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
||||||
|
@ -42,10 +42,12 @@ Expansion modules released:
|
|||||||
- Sparc (SPARClite, Spracklen's)
|
- Sparc (SPARClite, Spracklen's)
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- game locks up when you get checkmated
|
- It locks up a short time after you make an input error (eg. on computer's
|
||||||
- 1.4 version: It locks up a short time after you make an input error (eg. on
|
turn, enter the wrong move so it will give a low pitch error beep, then hold
|
||||||
computer's turn, enter the wrong move so it will give a low pitch error beep,
|
INS to fast-forward and it will lock up) - happens with leonardoa too, but
|
||||||
then hold INS to fast forward and it will lock up)
|
after a longer delay. At first glance, it looks like it's caused by inaccurate
|
||||||
|
6801 timer emulation. It also locks up when you get checkmated, seems to be
|
||||||
|
the same problem as above.
|
||||||
- OSA module support (softwarelist, devices/bus)
|
- OSA module support (softwarelist, devices/bus)
|
||||||
- OSA PC link (probably uses MCU serial interface)
|
- OSA PC link (probably uses MCU serial interface)
|
||||||
- unsure about white/black/check/end/module/comm leds
|
- unsure about white/black/check/end/module/comm leds
|
||||||
@ -192,7 +194,7 @@ void leo_state::p2_w(u8 data)
|
|||||||
u8 leo_state::p5_r()
|
u8 leo_state::p5_r()
|
||||||
{
|
{
|
||||||
// ?
|
// ?
|
||||||
return 0xff;
|
return 0xff ^ 0x10;
|
||||||
}
|
}
|
||||||
|
|
||||||
void leo_state::p5_w(u8 data)
|
void leo_state::p5_w(u8 data)
|
||||||
|
217
src/mame/drivers/saitek_minichess.cpp
Normal file
217
src/mame/drivers/saitek_minichess.cpp
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
// thanks-to:Sean Riddle
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
SciSys Mini Chess, pocket calculator style chesscomputer
|
||||||
|
It's the first chess program on HMCS40, the engine was written by Mark Taylor.
|
||||||
|
|
||||||
|
Hardware notes:
|
||||||
|
- Hitachi 44801A34 MCU @ ~400kHz
|
||||||
|
- 4-digit LCD screen
|
||||||
|
|
||||||
|
Excluding resellers with same title, this MCU was used in:
|
||||||
|
- SciSys Mini Chess - 1st use
|
||||||
|
- SciSys Junior Chess
|
||||||
|
- SciSys Graduate Chess
|
||||||
|
- SciSys Chess Partner 3000
|
||||||
|
- SciSys Chess Partner 4000
|
||||||
|
|
||||||
|
On CP3000/4000 they added a level slider. This will oscillate the level switch
|
||||||
|
input pin, so the highest level setting is the same as level 2 on Mini Chess.
|
||||||
|
It works on the old A34 MCU because the game keeps reading D0 while computing.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/hmcs40/hmcs40.h"
|
||||||
|
#include "machine/timer.h"
|
||||||
|
#include "sound/dac.h"
|
||||||
|
#include "sound/volt_reg.h"
|
||||||
|
#include "video/pwm.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
|
// internal artwork
|
||||||
|
#include "saitek_minichess.lh" // clickable
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class mini_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mini_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
driver_device(mconfig, type, tag),
|
||||||
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_display(*this, "display"),
|
||||||
|
m_comp_timer(*this, "comp_timer"),
|
||||||
|
m_computing(*this, "computing"),
|
||||||
|
m_inputs(*this, "IN.%u", 0)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void smchess(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// devices/pointers
|
||||||
|
required_device<hmcs40_cpu_device> m_maincpu;
|
||||||
|
required_device<pwm_display_device> m_display;
|
||||||
|
required_device<timer_device> m_comp_timer;
|
||||||
|
output_finder<> m_computing;
|
||||||
|
required_ioport_array<5> m_inputs;
|
||||||
|
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(computing) { m_computing = 1; }
|
||||||
|
|
||||||
|
void update_display();
|
||||||
|
template<int N> void seg_w(u8 data);
|
||||||
|
void mux_w(u16 data);
|
||||||
|
u16 input_r(offs_t offset);
|
||||||
|
|
||||||
|
u8 m_inp_mux = 0;
|
||||||
|
u8 m_lcd_select = 0;
|
||||||
|
u8 m_lcd_data = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
void mini_state::machine_start()
|
||||||
|
{
|
||||||
|
m_computing.resolve();
|
||||||
|
|
||||||
|
// register for savestates
|
||||||
|
save_item(NAME(m_inp_mux));
|
||||||
|
save_item(NAME(m_lcd_select));
|
||||||
|
save_item(NAME(m_lcd_data));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
I/O
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void mini_state::update_display()
|
||||||
|
{
|
||||||
|
u8 data = (m_lcd_select & 1) ? (m_lcd_data ^ 0xff) : m_lcd_data;
|
||||||
|
data = bitswap<8>(data,2,4,6,7,5,1,0,3);
|
||||||
|
m_display->matrix(m_lcd_select >> 2, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<int N>
|
||||||
|
void mini_state::seg_w(u8 data)
|
||||||
|
{
|
||||||
|
// R2x,R3x: lcd segment data
|
||||||
|
m_lcd_data = (m_lcd_data & ~(0xf << (N*4))) | (data << (N*4));
|
||||||
|
update_display();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mini_state::mux_w(u16 data)
|
||||||
|
{
|
||||||
|
// D9-D12: input mux
|
||||||
|
m_inp_mux = ~data >> 9 & 0xf;
|
||||||
|
|
||||||
|
// D3,D5-D8: CD4066 to LCD
|
||||||
|
u8 sel = data >> 3 & 0x3f;
|
||||||
|
|
||||||
|
// "computing" segment goes on when LCD isn't driven
|
||||||
|
if (~m_lcd_select & sel & 1)
|
||||||
|
{
|
||||||
|
m_computing = 0;
|
||||||
|
m_comp_timer->adjust(attotime::from_msec(100));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_lcd_select = sel;
|
||||||
|
update_display();
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 mini_state::input_r(offs_t offset)
|
||||||
|
{
|
||||||
|
// D0,D2: switches
|
||||||
|
u16 data = m_inputs[4]->read() & 5;
|
||||||
|
|
||||||
|
// D13-D15: multiplexed inputs
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
if (BIT(m_inp_mux, i))
|
||||||
|
data |= m_inputs[i]->read() << 13;
|
||||||
|
|
||||||
|
return ~data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Input Ports
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( smchess )
|
||||||
|
PORT_START("IN.0")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A 1 / Pawn")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B 2 / Knight")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C 3 / Bishop")
|
||||||
|
|
||||||
|
PORT_START("IN.1")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D 4 / Rook")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E 5 / Queen")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F 6 / King")
|
||||||
|
|
||||||
|
PORT_START("IN.2")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G 7 / White")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H 8 / Black")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("FP") // find position
|
||||||
|
|
||||||
|
PORT_START("IN.3")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") // clear entry
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
|
||||||
|
|
||||||
|
PORT_START("IN.4")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_TOGGLE PORT_CODE(KEYCODE_L) PORT_NAME("Level")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_TOGGLE PORT_CODE(KEYCODE_M) PORT_NAME("MM") // multi move
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Machine Configs
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void mini_state::smchess(machine_config &config)
|
||||||
|
{
|
||||||
|
/* basic machine hardware */
|
||||||
|
HD44801(config, m_maincpu, 400000);
|
||||||
|
m_maincpu->write_r<2>().set(FUNC(mini_state::seg_w<0>));
|
||||||
|
m_maincpu->write_r<3>().set(FUNC(mini_state::seg_w<1>));
|
||||||
|
m_maincpu->write_d().set(FUNC(mini_state::mux_w));
|
||||||
|
m_maincpu->read_d().set(FUNC(mini_state::input_r));
|
||||||
|
|
||||||
|
/* video hardware */
|
||||||
|
PWM_DISPLAY(config, m_display).set_size(4, 8);
|
||||||
|
m_display->set_segmask(0xf, 0x7f);
|
||||||
|
m_display->set_refresh(attotime::from_hz(30));
|
||||||
|
|
||||||
|
TIMER(config, m_comp_timer).configure_generic(FUNC(mini_state::computing));
|
||||||
|
|
||||||
|
config.set_default_layout(layout_saitek_minichess);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
ROM Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
ROM_START( smchess )
|
||||||
|
ROM_REGION( 0x2000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("44801a34_proj_t", 0x0000, 0x2000, CRC(be71f1c0) SHA1(6b4d5c8f8491c82bdec1938bd83c14e826ff3e30) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Drivers
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||||
|
CONS( 1981, smchess, 0, 0, smchess, smchess, mini_state, empty_init, "SciSys", "Mini Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
@ -12,7 +12,7 @@ Hardware notes:
|
|||||||
- 6301Y0(mode 1) or HD6303YP MCU @ 10MHz
|
- 6301Y0(mode 1) or HD6303YP MCU @ 10MHz
|
||||||
- 8KB RAM, 32KB ROM
|
- 8KB RAM, 32KB ROM
|
||||||
- "HELIOS" I/O (NEC gate array)
|
- "HELIOS" I/O (NEC gate array)
|
||||||
- LCD screen
|
- Seiko Epson SED1502F, LCD screen
|
||||||
- magnet sensors chessboard with 81 leds
|
- magnet sensors chessboard with 81 leds
|
||||||
|
|
||||||
The 6301Y0 seen on one of them, was a SX8A 6301Y0G84P, this is in fact the
|
The 6301Y0 seen on one of them, was a SX8A 6301Y0G84P, this is in fact the
|
||||||
@ -22,7 +22,6 @@ The LCD screen is fairly large, it's the same one as in Saitek Simultano,
|
|||||||
so a chessboard display + 7seg info.
|
so a chessboard display + 7seg info.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- unknown LCD hardware, possibly MCU?
|
|
||||||
- WIP
|
- WIP
|
||||||
|
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -20,22 +20,16 @@ license:CC0
|
|||||||
|
|
||||||
<element name="text_l01a"><text string="A" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l01a"><text string="A" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l01b"><text string="1" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l01b"><text string="1" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l01c"><text string="[P]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l02a"><text string="B" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l02a"><text string="B" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l02b"><text string="2" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l02b"><text string="2" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l02c"><text string="[N]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l03a"><text string="C" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l03a"><text string="C" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l03b"><text string="3" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l03b"><text string="3" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l03c"><text string="[B]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l04a"><text string="D" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l04a"><text string="D" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l04b"><text string="4" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l04b"><text string="4" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l04c"><text string="[R]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l05a"><text string="E" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l05a"><text string="E" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l05b"><text string="5" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l05b"><text string="5" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l05c"><text string="[Q]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l06a"><text string="F" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l06a"><text string="F" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l06b"><text string="6" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l06b"><text string="6" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l06c"><text string="[K]"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
|
||||||
<element name="text_l07a"><text string="G" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l07a"><text string="G" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l07b"><text string="7" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l07b"><text string="7" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l08a"><text string="H" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l08a"><text string="H" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
@ -49,6 +43,13 @@ license:CC0
|
|||||||
<element name="text_l14"><text string="CE"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l14"><text string="CE"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
<element name="text_l15"><text string="ENTER"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
<element name="text_l15"><text string="ENTER"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
|
||||||
|
<element name="text_p1"><image file="chess/wk.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p2"><image file="chess/wq.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p3"><image file="chess/wr.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p4"><image file="chess/wb.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p5"><image file="chess/wn.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p6"><image file="chess/wp.png"><color alpha="0.87" /></image></element>
|
||||||
|
|
||||||
<element name="text_cl00">
|
<element name="text_cl00">
|
||||||
<rect><color red="0.7" green="0.8" blue="0.8" /></rect>
|
<rect><color red="0.7" green="0.8" blue="0.8" /></rect>
|
||||||
<text string="A" align="1"><color red="0.17" green="0.15" blue="0.15" /></text>
|
<text string="A" align="1"><color red="0.17" green="0.15" blue="0.15" /></text>
|
||||||
@ -505,6 +506,14 @@ license:CC0
|
|||||||
|
|
||||||
<group name="buttons">
|
<group name="buttons">
|
||||||
<bounds x="-1" y="28.5" width="32" height="10.1" />
|
<bounds x="-1" y="28.5" width="32" height="10.1" />
|
||||||
|
|
||||||
|
<bezel element="text_p6"><bounds x="0.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
<bezel element="text_p5"><bounds x="4.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
<bezel element="text_p4"><bounds x="8.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
<bezel element="text_p3"><bounds x="12.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
<bezel element="text_p2"><bounds x="16.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
<bezel element="text_p1"><bounds x="20.7" y="32.18" width="1.6" height="1.6" /></bezel>
|
||||||
|
|
||||||
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="0" y="30" width="3" height="2.2" /></bezel>
|
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="0" y="30" width="3" height="2.2" /></bezel>
|
||||||
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="4" y="30" width="3" height="2.2" /></bezel>
|
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="4" y="30" width="3" height="2.2" /></bezel>
|
||||||
<bezel element="button" inputtag="IN.0" inputmask="0x04"><bounds x="8" y="30" width="3" height="2.2" /></bezel>
|
<bezel element="button" inputtag="IN.0" inputmask="0x04"><bounds x="8" y="30" width="3" height="2.2" /></bezel>
|
||||||
@ -539,13 +548,6 @@ license:CC0
|
|||||||
<bezel element="text_l08a"><bounds x="28.3" y="28.5" width="2.4" height="1.3" /></bezel>
|
<bezel element="text_l08a"><bounds x="28.3" y="28.5" width="2.4" height="1.3" /></bezel>
|
||||||
<bezel element="text_l08b"><bounds x="28.3" y="28.5" width="2.4" height="1.3" /></bezel>
|
<bezel element="text_l08b"><bounds x="28.3" y="28.5" width="2.4" height="1.3" /></bezel>
|
||||||
|
|
||||||
<bezel element="text_l01c"><bounds x="0" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
<bezel element="text_l02c"><bounds x="4" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
<bezel element="text_l03c"><bounds x="8" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
<bezel element="text_l04c"><bounds x="12" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
<bezel element="text_l05c"><bounds x="16" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
<bezel element="text_l06c"><bounds x="20" y="32.3" width="3" height="1.3" /></bezel>
|
|
||||||
|
|
||||||
<bezel element="white"><bounds x="25" y="32.55" width="1" height="1" /></bezel>
|
<bezel element="white"><bounds x="25" y="32.55" width="1" height="1" /></bezel>
|
||||||
<bezel element="white"><bounds x="29" y="32.55" width="1" height="1" /></bezel>
|
<bezel element="white"><bounds x="29" y="32.55" width="1" height="1" /></bezel>
|
||||||
<bezel element="blackb"><bounds x="29.15" y="32.7" width="0.7" height="0.7" /></bezel>
|
<bezel element="blackb"><bounds x="29.15" y="32.7" width="0.7" height="0.7" /></bezel>
|
||||||
@ -578,7 +580,7 @@ license:CC0
|
|||||||
|
|
||||||
<group ref="digits"><bounds x="8" y="21" width="15" height="5" /></group>
|
<group ref="digits"><bounds x="8" y="21" width="15" height="5" /></group>
|
||||||
<group ref="buttons"><bounds x="-1" y="28.5" width="32" height="10.1" /></group>
|
<group ref="buttons"><bounds x="-1" y="28.5" width="32" height="10.1" /></group>
|
||||||
<bezel element="white"><bounds x="-0.775" y="27.1875" width="32.55" height="0.3875" /></bezel>
|
<bezel element="cblack"><bounds x="-0.775" y="27.1875" width="32.55" height="0.3875" /></bezel>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</mamelayout>
|
</mamelayout>
|
||||||
|
182
src/mame/layout/saitek_minichess.lay
Normal file
182
src/mame/layout/saitek_minichess.lay
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
license:CC0
|
||||||
|
-->
|
||||||
|
<mamelayout version="2">
|
||||||
|
|
||||||
|
<!-- define elements -->
|
||||||
|
|
||||||
|
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
|
||||||
|
<element name="white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
|
||||||
|
|
||||||
|
<element name="button" defstate="0">
|
||||||
|
<rect state="0"><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||||
|
<rect state="1"><color red="0.6" green="0.6" blue="0.6" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="text_l01a"><text string="A" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l01b"><text string="1" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l02a"><text string="B" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l02b"><text string="2" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l03a"><text string="C" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l03b"><text string="3" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l04a"><text string="D" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l04b"><text string="4" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l05a"><text string="E" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l05b"><text string="5" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l06a"><text string="F" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l06b"><text string="6" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l07a"><text string="G" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l07b"><text string="7" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l08a"><text string="H" align="1"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l08b"><text string="8" align="2"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
|
||||||
|
<element name="text_l09"><text string="FP"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l10a"><text string="NEW"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l10b"><text string="GAME"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l11"><text string="CE"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l12"><text string="ENTER"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l13"><text string="LEVEL"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
<element name="text_l14"><text string="MM"><color red="0.8" green="0.8" blue="0.8" /></text></element>
|
||||||
|
|
||||||
|
<element name="text_sw" defstate="0">
|
||||||
|
<text state="0" string="►" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
<text state="1" string="►" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="text_sw1" defstate="0">
|
||||||
|
<text state="0" string="1" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
<text state="1" string="2" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="text_sw2" defstate="0">
|
||||||
|
<text state="0" string="OFF" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
<text state="1" string="ON" align="1"><color red="0.8" green="0.8" blue="0.8" /></text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="text_p1"><image file="chess/wk.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p2"><image file="chess/wq.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p3"><image file="chess/wr.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p4"><image file="chess/wb.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p5"><image file="chess/wn.png"><color alpha="0.87" /></image></element>
|
||||||
|
<element name="text_p6"><image file="chess/wp.png"><color alpha="0.87" /></image></element>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- lcd -->
|
||||||
|
|
||||||
|
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
|
||||||
|
|
||||||
|
<element name="digit" defstate="0">
|
||||||
|
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
|
||||||
|
</element>
|
||||||
|
<element name="seg0" defstate="0">
|
||||||
|
<rect><color red="0.54" green="0.57" blue="0.58" /></rect>
|
||||||
|
<text state="1" string="COMPUTING"><color red="0.2" green="0.16" blue="0.16" /></text>
|
||||||
|
<text state="0" string="COMPUTING"><color red="0.49412" green="0.51765" blue="0.51765" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="seg1" defstate="0">
|
||||||
|
<rect><color red="0.54" green="0.57" blue="0.58" /></rect>
|
||||||
|
<text state="1" string="FIND POSITION" align="2"><color red="0.2" green="0.16" blue="0.16" /></text>
|
||||||
|
<text state="0" string="FIND POSITION" align="2"><color red="0.49412" green="0.51765" blue="0.51765" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="seg2" defstate="0">
|
||||||
|
<rect><color red="0.54" green="0.57" blue="0.58" /></rect>
|
||||||
|
<text state="1" string="x"><color red="0.2" green="0.16" blue="0.16" /></text>
|
||||||
|
<text state="0" string="x"><color red="0.49412" green="0.51765" blue="0.51765" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="seg3" defstate="0">
|
||||||
|
<rect><color red="0.54" green="0.57" blue="0.58" /></rect>
|
||||||
|
<text state="1" string="+"><color red="0.2" green="0.16" blue="0.16" /></text>
|
||||||
|
<text state="0" string="+"><color red="0.49412" green="0.51765" blue="0.51765" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="seg4" defstate="0">
|
||||||
|
<rect><color red="0.54" green="0.57" blue="0.58" /></rect>
|
||||||
|
<text state="1" string="I LOSE" align="1"><color red="0.2" green="0.16" blue="0.16" /></text>
|
||||||
|
<text state="0" string="I LOSE" align="1"><color red="0.49412" green="0.51765" blue="0.51765" /></text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<group name="lcd">
|
||||||
|
<bounds x="18" y="23.5" width="74" height="27.5" />
|
||||||
|
<bezel element="lcd_bg"><bounds x="18" y="23.5" width="74" height="27.5" /></bezel>
|
||||||
|
|
||||||
|
<!-- note: it also has a lightning symbol for low-battery at the left, but is unused -->
|
||||||
|
<bezel name="1.7" element="seg2"><bounds x="50.1" y="31.4" width="10" height="15" /></bezel>
|
||||||
|
<bezel name="3.7" element="seg3"><bounds x="81.1" y="28.1" width="10" height="16" /></bezel>
|
||||||
|
<bezel name="0.7" element="seg1"><bounds x="22" y="44.3" width="28" height="4" /></bezel>
|
||||||
|
<bezel name="2.7" element="seg4"><bounds x="71" y="44.3" width="13" height="4" /></bezel>
|
||||||
|
<bezel name="computing" element="seg0"><bounds x="40" y="25.7" width="30" height="4" /></bezel>
|
||||||
|
|
||||||
|
<bezel name="digit0" element="digit"><bounds x="29.5" y="30" width="10" height="14" /></bezel>
|
||||||
|
<bezel name="digit1" element="digit"><bounds x="40" y="30" width="10" height="14" /></bezel>
|
||||||
|
<bezel name="digit2" element="digit"><bounds x="60" y="30" width="10" height="14" /></bezel>
|
||||||
|
<bezel name="digit3" element="digit"><bounds x="70.5" y="30" width="10" height="14" /></bezel>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- build screen -->
|
||||||
|
|
||||||
|
<view name="Internal Layout">
|
||||||
|
<bounds left="8" right="27.6" top="15.5" bottom="46.9" />
|
||||||
|
<group ref="lcd"><bounds x="8" y="15.5" width="19.6" height="7.28378" /></group>
|
||||||
|
|
||||||
|
<!-- buttons -->
|
||||||
|
<bezel element="text_sw" inputtag="IN.4" inputmask="0x01"><bounds x="11.2" y="26.1" width="1.5" height="1.9" /></bezel>
|
||||||
|
<bezel element="text_sw1" inputtag="IN.4" inputmask="0x01"><bounds x="12.8" y="26.4" width="1" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l13"><bounds x="10" y="25" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_sw" inputtag="IN.4" inputmask="0x04"><bounds x="17.2" y="26.1" width="1.5" height="1.9" /></bezel>
|
||||||
|
<bezel element="text_sw2" inputtag="IN.4" inputmask="0x04"><bounds x="18.8" y="26.4" width="2" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l14"><bounds x="16" y="25" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_p6"><bounds x="10.925" y="31.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
<bezel element="text_p5"><bounds x="16.925" y="31.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
<bezel element="text_p4"><bounds x="22.925" y="31.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
<bezel element="text_p3"><bounds x="10.925" y="35.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
<bezel element="text_p2"><bounds x="16.925" y="35.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
<bezel element="text_p1"><bounds x="22.925" y="35.85" width="1.75" height="1.75" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="10" y="30" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="16" y="30" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.0" inputmask="0x04"><bounds x="22" y="30" width="3.6" height="1.9" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="button" inputtag="IN.1" inputmask="0x01"><bounds x="10" y="34" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.1" inputmask="0x02"><bounds x="16" y="34" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.1" inputmask="0x04"><bounds x="22" y="34" width="3.6" height="1.9" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="button" inputtag="IN.2" inputmask="0x01"><bounds x="10" y="38" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.2" inputmask="0x02"><bounds x="16" y="38" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.2" inputmask="0x04"><bounds x="22" y="38" width="3.6" height="1.9" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="button" inputtag="IN.3" inputmask="0x01"><bounds x="10" y="42" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.3" inputmask="0x02"><bounds x="16" y="42" width="3.6" height="1.9" /></bezel>
|
||||||
|
<bezel element="button" inputtag="IN.3" inputmask="0x04"><bounds x="22" y="42" width="3.6" height="1.9" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_l01a"><bounds x="10" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l01b"><bounds x="10" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l02a"><bounds x="16" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l02b"><bounds x="16" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l03a"><bounds x="22" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l03b"><bounds x="22" y="32" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_l04a"><bounds x="10" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l04b"><bounds x="10" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l05a"><bounds x="16" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l05b"><bounds x="16" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l06a"><bounds x="22" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l06b"><bounds x="22" y="36" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_l07a"><bounds x="10" y="40" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l07b"><bounds x="10" y="40" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l08a"><bounds x="16" y="40" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l08b"><bounds x="16" y="40" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l09"><bounds x="22" y="40" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="text_l10a"><bounds x="10" y="44" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l10b"><bounds x="10" y="45.2" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l11"><bounds x="16" y="44" width="3.6" height="1.3" /></bezel>
|
||||||
|
<bezel element="text_l12"><bounds x="22" y="44" width="3.6" height="1.3" /></bezel>
|
||||||
|
|
||||||
|
<bezel element="white"><bounds x="11.35" y="40.25" width="0.9" height="0.9" /></bezel>
|
||||||
|
<bezel element="white"><bounds x="17.35" y="40.25" width="0.9" height="0.9" /></bezel>
|
||||||
|
<bezel element="blackb"><bounds x="17.5" y="40.4" width="0.6" height="0.6" /></bezel>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</mamelayout>
|
@ -35156,6 +35156,9 @@ leonardoa
|
|||||||
ccmk5
|
ccmk5
|
||||||
ccmk6
|
ccmk6
|
||||||
|
|
||||||
|
@source:saitek_minichess.cpp
|
||||||
|
smchess
|
||||||
|
|
||||||
@source:saitek_prschess.cpp
|
@source:saitek_prschess.cpp
|
||||||
prschess
|
prschess
|
||||||
|
|
||||||
|
@ -796,6 +796,7 @@ saitek_delta1.cpp
|
|||||||
saitek_exchess.cpp
|
saitek_exchess.cpp
|
||||||
saitek_leonardo.cpp
|
saitek_leonardo.cpp
|
||||||
saitek_mark5.cpp
|
saitek_mark5.cpp
|
||||||
|
saitek_minichess.cpp
|
||||||
saitek_prschess.cpp
|
saitek_prschess.cpp
|
||||||
saitek_renaissance.cpp
|
saitek_renaissance.cpp
|
||||||
saitek_risc2500.cpp
|
saitek_risc2500.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user