mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +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_leonardo.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_renaissance.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
|
||||
|
@ -386,27 +386,28 @@ void chessmst_state::chessmstdm(machine_config &config)
|
||||
/* ROM definition */
|
||||
ROM_START( chessmst )
|
||||
ROM_REGION( 0x2800, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "056.bin", 0x0000, 0x0400, CRC(2b90e5d3) SHA1(c47445964b2e6cb11bd1f27e395cf980c97af196) )
|
||||
ROM_LOAD( "057.bin", 0x0400, 0x0400, CRC(e666fc56) SHA1(3fa75b82cead81973bea94191a5c35f0acaaa0e6) )
|
||||
ROM_LOAD( "058.bin", 0x0800, 0x0400, CRC(6a17fbec) SHA1(019051e93a5114477c50eaa87e1ff01b02eb404d) )
|
||||
ROM_LOAD( "059.bin", 0x0c00, 0x0400, CRC(e96e3d07) SHA1(20fab75f206f842231f0414ebc473ce2a7371e7f) )
|
||||
ROM_LOAD( "060.bin", 0x1000, 0x0400, CRC(0e31f000) SHA1(daac924b79957a71a4b276bf2cef44badcbe37d3) )
|
||||
ROM_LOAD( "061.bin", 0x1400, 0x0400, CRC(69ad896d) SHA1(25d999b59d4cc74bd339032c26889af00e64df60) )
|
||||
ROM_LOAD( "062.bin", 0x1800, 0x0400, CRC(c42925fe) SHA1(c42d8d7c30a9b6d91ac994cec0cc2723f41324e9) )
|
||||
ROM_LOAD( "063.bin", 0x1c00, 0x0400, CRC(86be4cdb) SHA1(741f984c15c6841e227a8722ba30cf9e6b86d878) )
|
||||
ROM_LOAD( "064.bin", 0x2000, 0x0400, CRC(e82f5480) SHA1(38a939158052f5e6484ee3725b86e522541fe4aa) )
|
||||
ROM_LOAD( "065.bin", 0x2400, 0x0400, CRC(4ec0e92c) SHA1(0b748231a50777391b04c1778750fbb46c21bee8) )
|
||||
ROM_LOAD("056.bin", 0x0000, 0x0400, CRC(2b90e5d3) SHA1(c47445964b2e6cb11bd1f27e395cf980c97af196) )
|
||||
ROM_LOAD("057.bin", 0x0400, 0x0400, CRC(e666fc56) SHA1(3fa75b82cead81973bea94191a5c35f0acaaa0e6) )
|
||||
ROM_LOAD("058.bin", 0x0800, 0x0400, CRC(6a17fbec) SHA1(019051e93a5114477c50eaa87e1ff01b02eb404d) )
|
||||
ROM_LOAD("059.bin", 0x0c00, 0x0400, CRC(e96e3d07) SHA1(20fab75f206f842231f0414ebc473ce2a7371e7f) )
|
||||
ROM_LOAD("060.bin", 0x1000, 0x0400, CRC(0e31f000) SHA1(daac924b79957a71a4b276bf2cef44badcbe37d3) )
|
||||
ROM_LOAD("061.bin", 0x1400, 0x0400, CRC(69ad896d) SHA1(25d999b59d4cc74bd339032c26889af00e64df60) )
|
||||
ROM_LOAD("062.bin", 0x1800, 0x0400, CRC(c42925fe) SHA1(c42d8d7c30a9b6d91ac994cec0cc2723f41324e9) )
|
||||
ROM_LOAD("063.bin", 0x1c00, 0x0400, CRC(86be4cdb) SHA1(741f984c15c6841e227a8722ba30cf9e6b86d878) )
|
||||
ROM_LOAD("064.bin", 0x2000, 0x0400, CRC(e82f5480) SHA1(38a939158052f5e6484ee3725b86e522541fe4aa) )
|
||||
ROM_LOAD("065.bin", 0x2400, 0x0400, CRC(4ec0e92c) SHA1(0b748231a50777391b04c1778750fbb46c21bee8) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( chessmsta )
|
||||
ROM_REGION( 0x2800, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "2764.bin", 0x0000, 0x2000, CRC(6be28876) SHA1(fd7d77b471e7792aef3b2b3f7ff1de4cdafc94c9) )
|
||||
ROM_LOAD( "u2616bm108.bin", 0x2000, 0x0800, BAD_DUMP CRC(6e69ace3) SHA1(e099b6b6cc505092f64b8d51ab9c70aa64f58f70) )
|
||||
ROM_LOAD("2764.bin", 0x0000, 0x2000, CRC(6be28876) SHA1(fd7d77b471e7792aef3b2b3f7ff1de4cdafc94c9) )
|
||||
ROM_LOAD("u2616bm108.bin", 0x2000, 0x0800, BAD_DUMP CRC(6e69ace3) SHA1(e099b6b6cc505092f64b8d51ab9c70aa64f58f70) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( chessmstdm )
|
||||
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
|
||||
|
||||
|
||||
|
@ -19,13 +19,13 @@ Hardware notes:
|
||||
|
||||
Sensor Computachess:
|
||||
- PCB label WA 001 600 002
|
||||
- 44801A50 MCU @ ~400kHz
|
||||
- Hitachi 44801A50 MCU @ ~400kHz
|
||||
- buzzer, 16 leds, button sensors chessboard
|
||||
|
||||
Portachess II:
|
||||
- PCB label CXG223-600-001 (main pcb), CXG 211 600 101 (led pcb taken from
|
||||
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
|
||||
|
||||
HD44801A50 used in:
|
||||
|
@ -83,9 +83,9 @@ private:
|
||||
DECLARE_WRITE8_MEMBER(control_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
|
||||
int m_numbanks;
|
||||
u8 m_speech_bank;
|
||||
u8 m_select;
|
||||
int m_numbanks = 0;
|
||||
u8 m_speech_bank = 0;
|
||||
u8 m_select = 0;
|
||||
};
|
||||
|
||||
void chesster_state::init_chesster()
|
||||
@ -96,10 +96,6 @@ void chesster_state::init_chesster()
|
||||
|
||||
void chesster_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
m_speech_bank = 0;
|
||||
m_select = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_speech_bank));
|
||||
save_item(NAME(m_select));
|
||||
|
@ -65,15 +65,16 @@
|
||||
@A88 HD38820 1984, Bandai Pair Match (PT-460) (1/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
|
||||
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)
|
||||
B42 HD44801 1983, Alpha 8303 protection MCU (see 8201)
|
||||
*B43 HD44801 1983, Alpha 8304 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
|
||||
*B63 HD44820 1985, CXG Pocket Chess (12 buttons)
|
||||
|
@ -128,9 +128,11 @@ INPUT_PORTS_END
|
||||
void berlin_state::berlin(machine_config &config)
|
||||
{
|
||||
/* 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_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);
|
||||
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.
|
||||
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
|
||||
released by Richard Lang for Almeria, Lyon, Portorose and Vancouver modules, and also
|
||||
available as upgrades for Berlin/Berlin Pro and Genius.
|
||||
No Mephisto modules were released anymore after Saitek took over H+G, engine is the
|
||||
same as Saitek's 1996 Mephisto London 68030 (limited release TM version).
|
||||
available as upgrades for Berlin/Berlin Pro and Genius. The engine is the 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
|
||||
|
||||
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:
|
||||
- holding ENTER and LEFT cursor on boot runs diagnostics
|
||||
- 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:
|
||||
-------------------------------------------------
|
||||
_______________________________________________
|
||||
| |
|
||||
| 74HC21 74HC74 74HC238 |
|
||||
| 74HC4040 74HC574 74HC173 74HC374 |
|
||||
| ROM XTAL 74HC368 74HC374 |
|
||||
| 74HC4024 74HC32 74HC139 74HC374 |
|
||||
| |
|
||||
-------------------------------------------------
|
||||
|_______________________________________________|
|
||||
|
||||
XTAL = 7.37280MHz
|
||||
ROM = TC57256AD-12, sine table (not used in MAME)
|
||||
|
||||
@ -391,7 +402,7 @@ INPUT_PORTS_END
|
||||
void mmodular_state::alm16(machine_config &config)
|
||||
{
|
||||
/* 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_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);
|
||||
|
||||
/* 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_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);
|
||||
}
|
||||
@ -450,7 +463,7 @@ void mmodular_state::gen32(machine_config &config)
|
||||
van32(config);
|
||||
|
||||
/* 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);
|
||||
|
||||
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_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE("alm16eve.bin", 0x00000, 0x10000, CRC(ee5b6ec4) SHA1(30920c1b9e16ffae576da5afa0b56da59ada3dbb) )
|
||||
ROM_LOAD16_BYTE("alm16odd.bin", 0x00001, 0x10000, CRC(d0be4ee4) SHA1(d36c074802d2c9099cd44e75f9de3fc7d1fd9908) )
|
||||
ROM_LOAD16_BYTE("almeria_16bit_v013_even", 0x00000, 0x10000, CRC(ee5b6ec4) SHA1(30920c1b9e16ffae576da5afa0b56da59ada3dbb) )
|
||||
ROM_LOAD16_BYTE("almeria_16bit_v013_odd", 0x00001, 0x10000, CRC(d0be4ee4) SHA1(d36c074802d2c9099cd44e75f9de3fc7d1fd9908) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( port32 ) // V103 C734 1CD7
|
||||
@ -512,8 +525,8 @@ ROM_END
|
||||
|
||||
ROM_START( lyon16 ) // V207 EC82 5805
|
||||
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE("lyon16ev.bin", 0x00000, 0x10000, CRC(497bd41a) SHA1(3ffefeeac694f49997c10d248ec6a7aa932898a4) )
|
||||
ROM_LOAD16_BYTE("lyon16od.bin", 0x00001, 0x10000, CRC(f9de3f54) SHA1(4060e29566d2f40122ccde3c1f84c94a9c1ed54f) )
|
||||
ROM_LOAD16_BYTE("lyon_16bit_even_v207", 0x00000, 0x10000, CRC(497bd41a) SHA1(3ffefeeac694f49997c10d248ec6a7aa932898a4) )
|
||||
ROM_LOAD16_BYTE("lyon_16bit_odd_v207", 0x00001, 0x10000, CRC(f9de3f54) SHA1(4060e29566d2f40122ccde3c1f84c94a9c1ed54f) )
|
||||
|
||||
ROM_REGION( 0x8000, "bavaria", 0 )
|
||||
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
||||
@ -529,8 +542,8 @@ ROM_END
|
||||
|
||||
ROM_START( van16 ) // V309 C8F3 18D3
|
||||
ROM_REGION16_BE( 0x40000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE("va16even.bin", 0x00000, 0x20000, CRC(e87602d5) SHA1(90cb2767b4ae9e1b265951eb2569b9956b9f7f44) )
|
||||
ROM_LOAD16_BYTE("va16odd.bin", 0x00001, 0x20000, CRC(585f3bdd) SHA1(90bb94a12d3153a91e3760020e1ea2a9eaa7ec0a) )
|
||||
ROM_LOAD16_BYTE("vancouver_16_even_v309", 0x00000, 0x20000, CRC(e87602d5) SHA1(90cb2767b4ae9e1b265951eb2569b9956b9f7f44) )
|
||||
ROM_LOAD16_BYTE("vancouver_16_odd_v309", 0x00001, 0x20000, CRC(585f3bdd) SHA1(90bb94a12d3153a91e3760020e1ea2a9eaa7ec0a) )
|
||||
|
||||
ROM_REGION( 0x8000, "bavaria", 0 )
|
||||
ROM_LOAD("sinus_15_bavaria", 0x0000, 0x8000, CRC(84421306) SHA1(5aab13bf38d80a4233c11f6eb5657f2749c14547) )
|
||||
|
@ -42,10 +42,12 @@ Expansion modules released:
|
||||
- Sparc (SPARClite, Spracklen's)
|
||||
|
||||
TODO:
|
||||
- game locks up when you get checkmated
|
||||
- 1.4 version: It locks up a short time after you make an input error (eg. on
|
||||
computer's turn, enter the wrong move so it will give a low pitch error beep,
|
||||
then hold INS to fast forward and it will lock up)
|
||||
- It locks up a short time after you make an input error (eg. on computer's
|
||||
turn, enter the wrong move so it will give a low pitch error beep, then hold
|
||||
INS to fast-forward and it will lock up) - happens with leonardoa too, but
|
||||
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 PC link (probably uses MCU serial interface)
|
||||
- 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()
|
||||
{
|
||||
// ?
|
||||
return 0xff;
|
||||
return 0xff ^ 0x10;
|
||||
}
|
||||
|
||||
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
|
||||
- 8KB RAM, 32KB ROM
|
||||
- "HELIOS" I/O (NEC gate array)
|
||||
- LCD screen
|
||||
- Seiko Epson SED1502F, LCD screen
|
||||
- magnet sensors chessboard with 81 leds
|
||||
|
||||
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.
|
||||
|
||||
TODO:
|
||||
- unknown LCD hardware, possibly MCU?
|
||||
- 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_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_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_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_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_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_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_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>
|
||||
@ -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_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">
|
||||
<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>
|
||||
@ -505,6 +506,14 @@ license:CC0
|
||||
|
||||
<group name="buttons">
|
||||
<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="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>
|
||||
@ -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_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="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>
|
||||
@ -578,7 +580,7 @@ license:CC0
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
||||
</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
|
||||
ccmk6
|
||||
|
||||
@source:saitek_minichess.cpp
|
||||
smchess
|
||||
|
||||
@source:saitek_prschess.cpp
|
||||
prschess
|
||||
|
||||
|
@ -796,6 +796,7 @@ saitek_delta1.cpp
|
||||
saitek_exchess.cpp
|
||||
saitek_leonardo.cpp
|
||||
saitek_mark5.cpp
|
||||
saitek_minichess.cpp
|
||||
saitek_prschess.cpp
|
||||
saitek_renaissance.cpp
|
||||
saitek_risc2500.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user