fidelity*: swap feag2100/feag2100a, rename fexcelpb to fexcelpa, rename fexcel12 to fexcel12a, rename fexcel124 to fexcel12,

remove fdes2000/fdes2100 and add a cpu freq config instead

granits: fix error beeps problem and update internal artwork
This commit is contained in:
hap 2024-08-15 12:24:01 +02:00
parent f943b25a02
commit f9abb4e805
20 changed files with 393 additions and 330 deletions

View File

@ -98,7 +98,6 @@ DECLARE_DEVICE_TYPE(N7751, n7751_device) // 8048 clone
DECLARE_DEVICE_TYPE(M58715, m58715_device) // 8049 clone
class mcs48_cpu_device : public cpu_device
{
public:
@ -127,9 +126,6 @@ public:
uint8_t p1_r() { return m_p1; }
uint8_t p2_r() { return m_p2; }
void data_map(address_map &map);
void program_map(address_map &map);
template <typename... T> void set_t0_clk_cb(T &&... args) { m_t0_clk_func.set(std::forward<T>(args)...); }
u32 get_ale_clock() { return m_clock / 3 / 5; }
@ -167,7 +163,6 @@ protected:
// device_disasm_interface overrides
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
protected:
address_space_config m_program_config;
address_space_config m_data_config;
address_space_config m_io_config;
@ -232,6 +227,9 @@ protected:
static const mcs48_ophandler s_i8022_opcodes[256];
const mcs48_ophandler *const m_opcode_table;
void program_map(address_map &map);
void data_map(address_map &map);
// ROM is mapped to AS_PROGRAM
uint8_t program_r(offs_t a) { return m_program.read_byte(a); }

View File

@ -27,7 +27,7 @@ TODO:
- the VFD scrolls around 30% too slow compared to the real one, probably depends
on how many T1 clock edges the 8041 can detect (see mcu_t1_r)
********************************************************************************
================================================================================
Voice Bridge Challenger (Model VBRC, later reissued as Model 7002/BV2)
and Bridge Challenger 3 (Model 7014)
@ -120,7 +120,7 @@ P7.1 - goes through inverter, to pads that are not used
P7.2 - segment C
P7.3 - segment H
button matrix:
Button matrix:
--------------
the matrix is composed of 8 columns by 4 rows.

View File

@ -34,7 +34,7 @@ similar to it. Ron C. Nelson must have ported the algorithms to 8080 when he wro
his Altair 8800 chess program, and this is what made it into CC1.
CC1 hardware overview:
- PCB label PC-P-86, P179 C-2 7.77
- PCB label: PC-P-86, P179 C-2 7.77
- NEC 8080AF @ 2MHz(18MHz XTAL through a 8224)
- Everything goes via a NEC B8228, its special features are unused.
- NEC 2316A ROM(2KB), 4*2101AL RAM(0.5KB total)

View File

@ -9,10 +9,10 @@ TODO:
- What is cc10 8255 PB.7 for? When set, maximum levels is 3, like in CC3. But
there is no CC3 with 16 buttons, and things get glitchy in this mode.
********************************************************************************
================================================================================
Fidelity Chess Challenger 10 (CCX)
-------------------
----------------------------------
3 versions are known to exist: A,B,C. Strangely, version C(UCC10) has an 8080
instead of Z80 and no beeper, it's on CC1-based hardware (see cc1.cpp).

View File

@ -4,7 +4,7 @@
/*******************************************************************************
Fidelity Chess Challenger 7 (BCC)
------------------------
---------------------------------
It was Fidelity's most sold chess computer. The first version was released in
1979, and a newer PCB revision was produced in 1980.
@ -31,7 +31,7 @@ Memory map:
4000-FFFF: Z80 A14/A15 not connected
Port map (Write):
---------
-----------------
D0-D3: digit select and keypad mux
D4: CHECK led
D5: LOSE led
@ -41,7 +41,7 @@ NE591 Q0-Q6: digit segments A-G
NE591 Q7: buzzer
Port map (Read):
---------
----------------
D0-D3: keypad row
*******************************************************************************/

View File

@ -10,16 +10,16 @@ These were made after Hegener + Glaser became the parent company of Fidelity
Fidelity and Mephisto brands. Fidelity changed from Fidelity International,
Inc. to Fidelity Electronics International, Inc. after becoming a subsidiary.
********************************************************************************
================================================================================
Fidelity Chesster (model 6120)
There is also a German version titled Kishon Chesster (model 6120G, or 6127)
----------------
8*(8+1) buttons, 8+8+1 LEDs
8KB RAM(UM6264-12), 32KB ROM(M27C256B)
PCB label: 510.1141C01
Ricoh RP65C02G CPU, 5MHz XTAL
8KB RAM(UM6264-12), 32KB ROM(M27C256B)
8-bit DAC (8L513 02 resistor array) timed via IRQ, 128KB ROM(AMI custom label)
PCB label 510.1141C01
8*(8+1) buttons, 8+8+1 LEDs
I/O is via TTL, memory map is similar to Designer Display

View File

@ -15,7 +15,7 @@ TODO:
- hook up csce I/O properly, it doesn't have PIAs
- verify super9cc maskrom dump
********************************************************************************
================================================================================
Champion Sensory Chess Challenger (CSC)
---------------------------------------
@ -158,7 +158,7 @@ The lone LED is connected to digit 1 common
All three of the above are called "segment H".
********************************************************************************
================================================================================
Elite Champion Challenger (ELITE)
This is a limited-release chess computer based on the CSC. They removed the PIAs
@ -172,7 +172,7 @@ The "Fidelity X" that won the 1981 Travemünde contest is also on this hardware,
a 5MHz CPU and 32KB total ROM size. In the 90s, Wilfried Bucke provided an upgrade
kit for csce to make it similar to this version, CPU was changed to a R65C02P4.
********************************************************************************
================================================================================
Super 9 Sensory Chess Challenger (SU9/DS9)
This is basically the Fidelity Elite A/S program on CSC hardware.
@ -188,7 +188,7 @@ See CSC description above for more information.
Like with EAS, the new game command for SU9 is: RE -> D6 (or D8) -> CL.
********************************************************************************
================================================================================
Reversi Sensory Challenger (RSC)
The 1st version came out in 1980, a program revision was released in 1981.

View File

@ -4,33 +4,33 @@
/*******************************************************************************
Fidelity Designer Display series, 6502 and 68000
(6502-based displayless Designer is in excel.cpp)
(6502-based displayless Designer is the same as Par Excellence, see excel.cpp)
********************************************************************************
================================================================================
Designer 2100 Display (model 6106) overview:
- 8KB RAM(MS6264L-10), 2*32KB ROM(27C256)
- PCB label: 510.1130A01
- WDC W65C02P-6 CPU, 6MHz XTAL
- 8KB RAM(MS6264L-10), 2*32KB ROM(27C256)
- 4-digit LCD panel
- PCB label 510.1130A01
Designer 2000 Display (model 6105): same hardware, no bookrom, 3MHz
********************************************************************************
================================================================================
Designer Mach III Master 2265 (model 6113) overview:
- 80KB RAM(2*KM6264AL-10, 2*KM62256AP-10), 64KB ROM(2*WSI 27C256L-12)
- PCB label: 510.1134A02
- MC68HC000P12F CPU, 16MHz XTAL
- 80KB RAM(2*KM6264AL-10, 2*KM62256AP-10), 64KB ROM(2*WSI 27C256L-12)
- IRQ(IPL2) from 555 timer, 1.67ms low, 6us high
- PCB label 510.1134A02
ROM address/data lines are scrambled, presumed for easy placement on PCB and not
for obfuscation. I/O is nearly the same as Designer Display on 6502 hardware.
Designer Mach IV Master 2325 (model 6129) overview:
- 32KB(4*P5164-70) + 512KB(TC518512PL-80) RAM, 64KB ROM(TMS 27C512-120JL)
- PCB label: 510.1149A01
- MC68EC020RP25 CPU, 20MHz XTAL
- PCB label 510.1149A01
- 32KB(4*P5164-70) + 512KB(TC518512PL-80) RAM, 64KB ROM(TMS 27C512-120JL)
- It has a green "Shift" led instead of red, and ROM is not scrambled.
*******************************************************************************/

View File

@ -26,7 +26,7 @@ actual speed, overclock V10 and V11 to 230%. This can be done by starting MAME
with the -cheat option and going to the Slider Controls menu, hold Ctrl and press
Right to overclock maincpu.
********************************************************************************
================================================================================
Excel 68000 (model 6094) overview:
- 16KB RAM(2*SRM2264C-10 @ U8/U9), 64KB ROM(2*AT27C256-15DC @ U6/U7)
@ -47,7 +47,7 @@ display a ROM checksum.
fex68km4 continuously tests RAM at boot and displays "512", this is normal.
To start, hold New Game or Clear.
********************************************************************************
================================================================================
Elite Avant Garde 2265 (EAG, model 6114)
----------------------------------------
@ -110,7 +110,7 @@ Memory map: (of what is known)
700002-700003 R lo d7: 74251: keypad row 8
604000-607FFF: 16KB EEPROM
********************************************************************************
================================================================================
Elite Avant Garde 2325 (EAG, model 6117)
----------------------------------------
@ -181,7 +181,7 @@ V1x Memory map:
280000-37FFFF: hashtable SRAM
B0000x-xxxxxx: see V7, -800000
********************************************************************************
================================================================================
Elite Premiere (model 6131)
---------------------------

View File

@ -6,7 +6,7 @@
Fidelity Eldorado Chess Challenger (model 6119)
Hardware notes:
- PCB label CXG262-600-001, CXG262-600-101
- PCB label: CXG262-600-001, CXG262-600-101
- TMP80C49AP6-6744 MCU, 2KB internal ROM, 6MHz XTAL
- buzzer, 16 leds, 8*8 chessboard buttons

View File

@ -6,12 +6,12 @@
Fidelity Elegance Chess Challenger (AS12/6085)
Hardware notes (AS12):
- PCB label 510-1084B01
- PCB label: 510-1084B01
- R65C02P3 @ 3/3.57MHz (apparently the first few had a 3MHz CPU)
- 2*8KB ROM + 1*4KB ROM, 2*2KB RAM(HM6116+TMM2016)
Hardware notes (6085):
- PCB label 510-1084B01
- PCB label: 510-1084B01
- R65C02P4 @ 4MHz
- 3*8KB ROM(TMM2764), 2*2KB RAM(HM6116+TMM2016)

View File

@ -14,10 +14,10 @@ BTANB:
To resolve this, hold the Game Control button while booting to clear nvram.
The ROM dump was verified from 2 chesscomputers.
********************************************************************************
================================================================================
Elite A/S Challenger (EAS)
---------------------------------
--------------------------
This came out in 1983. 2 program updates were released in 1983 and 1984,
named Budapest and Glasgow, places where Fidelity competed in chess computer
matches (they won it in 1983). A/S stands for Auto Sensory, it's the 1st
@ -1039,13 +1039,13 @@ ROM_START( feag ) // model 6081, aka "Mobile Master" - checksum BE41 9B27 E959 4
ROMX_LOAD("101-64106.ic16", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
ROM_END
ROM_START( feag2100 ) // checksum F234 9D4A 2373 B2F1
ROM_START( feag2100 ) // model 6088 - checksum F361 9D5E 1D31 ADF0
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("el2100_2.ic5", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
ROM_LOAD("el2100_3.ic4", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
ROM_LOAD("2100_c_black.ic5", 0xc000, 0x2000, CRC(454eb839) SHA1(83d206464c194b022d43913b5f4092a8201f36b9) )
ROM_LOAD("2100_c_green.ic4", 0xe000, 0x2000, CRC(f1f76a63) SHA1(337b4572b743d383c6a12c360875d37682de3647) )
ROM_REGION( 0x8000, "rombank", 0 )
ROM_LOAD("el2100_1.ic9", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
ROM_LOAD("2100_c_orange.ic9", 0x0000, 0x8000, CRC(feeff71c) SHA1(87614ca850848581d946193efa317181ef9c7a09) )
// speech ROM
ROM_DEFAULT_BIOS("en")
@ -1068,13 +1068,13 @@ ROM_START( feag2100 ) // checksum F234 9D4A 2373 B2F1
ROMX_LOAD("101-64106.ic16", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
ROM_END
ROM_START( feag2100a ) // model 6088 - checksum F361 9D5E 1D31 ADF0
ROM_START( feag2100a ) // checksum F234 9D4A 2373 B2F1
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("2100_c_black.ic5", 0xc000, 0x2000, CRC(454eb839) SHA1(83d206464c194b022d43913b5f4092a8201f36b9) )
ROM_LOAD("2100_c_green.ic4", 0xe000, 0x2000, CRC(f1f76a63) SHA1(337b4572b743d383c6a12c360875d37682de3647) )
ROM_LOAD("el2100_2.ic5", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
ROM_LOAD("el2100_3.ic4", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
ROM_REGION( 0x8000, "rombank", 0 )
ROM_LOAD("2100_c_orange.ic9", 0x0000, 0x8000, CRC(feeff71c) SHA1(87614ca850848581d946193efa317181ef9c7a09) )
ROM_LOAD("el2100_1.ic9", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
// speech ROM
ROM_DEFAULT_BIOS("en")

View File

@ -7,24 +7,100 @@ Fidelity Excellence series hardware
(for Excel 68000, see eag68k.cpp)
TODO:
- granits gives error beeps at start, need to press clear to play.
Note that this also happens on a real 6080 PCB with this ROM, granits is a modified SC12 PCB though.
The problem goes away if RAM stays powered-on, but PCB has no indication of NVRAM.
- granits chessboard buttons seem too sensitive (detects input on falling edge if held too long)
- granits has a module slot, is it usable?
- granits overlock + dynamic /2 cpu divider? (like SC12) instead of static /2 divider
- verify if Designer 2100 CPU is 5MHz or 6MHz
- granits chessboard buttons seem too sensitive (detects input on falling edge if
held too long), probably BTANB?
--------------------------------------------------------------------------------
================================================================================
The Excellence (model EP12)
---------------------------
Hardware notes:
- PCB label: 510-1099A01
- GTE G65SC102P-3 @ 3MHz (12MHz XTAL)
- 16KB ROM, 2KB RAM
- piezo, 16 LEDs, 8*8 chessboard buttons
One interesting clone of The Excellence is the Computerchess Playmate-2. It was
produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
ROM is identical to Excellence EP12 (the 101-1072A01 one). All internal circuitry
is the same, the only difference is the capacitor driving the 555 for IRQ is 10nf
instead of 22nf.
What makes it unique is the addition of a chess clock.
connector pinout from main pcb:
1) 5V
2) GND
3) 74HC259.pin9 (Q4) = Row LED driving
4) 74HC259.pin10 (Q5) = Column LED driving
5) 74HC259.pin12 (Q7) = Bat. Low signal
6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit VFD,
and some buttons for controlling the clock. IRQ frequency is doubled presumedly
for using the blinking led as seconds counter. It only tracks player time, not
of the opponent. And it obviously doesn't show chessmove coordinates either.
================================================================================
Par Excellence family
---------------------
Hardware notes:
The Par Excellence:
- PCB label: 510-1099A01
- Rockwell R65C02P4, 5MHz XTAL
- 8KB RAM(HM6264AP-10), 32KB ROM(AMI 101.1077A01)
- piezo, 16 LEDs, 8*8 chessboard buttons
Designer 2000 (model 6102):
- PCB label 510.1129A01
- Ricoh RP65C02G, 3MHz XTAL
- rest is same as Par Excellence
Designer 2000 is basically same as (Par) Excellence hardware, reskinned board.
They removed low-voltage detection from the PCB, but low battery signal still
works in software. Designer 2100 (model 6103) is almost the same, with a faster
CPU (5MHz WDC 65C02, same frequency as Par Excellence).
(Designer 1500 is on 80C50 hardware, same ROM as The Classic, see sc6.cpp)
RCS Granit S:
- PCB label: 510-1084B01 (SC12B PCB)
- Rockwell R65C02P4, 8MHz XTAL, ~6.4V overvoltage
- SC12B module slot is not functional
- rest is same as Par Excellence
Granit S is a heavily modified SC12B (see sc12.cpp) by Peter Reckwitz. The CPU
is overclocked a lot, the dynamic clock divider was removed, and wire mods were
added to make the hardware similar to Par Excellence. The program is based on
Par Excellence.
The SC12B labels don't make much sense here, like the ones on the bottom left,
or the check and illegal status LEDs. The PB button is Verify, and the PV button
is for Options. A strip was added at the bottom for the status LED labels.
================================================================================
Voice Excellence (model 6092)
----------------
PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
2 rows of LEDs on the side: 1*8 green, 1*8 red
-----------------------------
PCB 2: 510.1117A01
Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
DIP Switches set ROM A13 and ROM A14, on the side of the board
Hardware notes:
Main PCB:
- PCB label: 510.1117A02, appears to be identical to The Excellence 6080B PCB
- GTE G65SC102P-3 @ 3MHz (12MHz XTAL)
- 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
- speaker, 16 LEDs, 8*8 chessboard buttons
Voice PCB:
- PCB label: 510.1117A01
- 32 KB ROM: AMI 101-1081A01(IC2)
- TSI S14001A
- DIP Switches set ROM A13 and ROM A14, on the side of the board
ROM A12 is tied to S14001A's A11 (yuck)
ROM A11 is however tied to the CPU's XYZ
@ -94,40 +170,6 @@ CPU D6 to W: (model 6092, tied to VCC otherwise)
- D2-D6: VCC
- D7: TSI BUSY
------------------
One interesting clone of The Excellence is the Computerchess Playmate-2. It was
produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
ROM is identical to Excellence EP12. All internal circuitry is the same, the only
difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
What makes it unique is the addition of a chess clock.
connector pinout from main pcb:
1) 5V
2) GND
3) 74HC259.pin9 (Q4) = Row LED driving
4) 74HC259.pin10 (Q5) = Column LED driving
5) 74HC259.pin12 (Q7) = Bat. Low signal
6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
presumedly for using the blinking led as seconds counter. It only tracks player time,
not of the opponent. And it obviously doesn't show chessmove coordinates either.
--------------------------------------------------------------------------------
Designer 2000 (model 6102)
----------------
8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01)
Ricoh RP65C02G CPU, 3MHz XTAL
PCB label 510.1129A01
basically same as (Par) Excellence hardware, reskinned board
Designer 2100 (model 6103): exactly same, but running at 5MHz
(Designer 1500 is on 80C50 hardware, same ROM as The Classic, see sc6.cpp)
*******************************************************************************/
#include "emu.h"
@ -143,11 +185,11 @@ Designer 2100 (model 6103): exactly same, but running at 5MHz
#include "speaker.h"
// internal artwork
#include "fidel_des.lh"
#include "fidel_ex.lh"
#include "fidel_exb.lh"
#include "fidel_exd.lh"
#include "fidel_exv.lh"
#include "granits.lh"
namespace {
@ -166,6 +208,7 @@ public:
{ }
void init_fexcelv();
void init_granits() { m_invert = 0xff; }
// machine configs
void fexcel(machine_config &config);
@ -175,10 +218,9 @@ public:
void fexcelv(machine_config &config);
void fexcelp(machine_config &config);
void granits(machine_config &config);
void fdes2100(machine_config &config);
void fdes2000(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(speech_bankswitch);
DECLARE_INPUT_CHANGED_MEMBER(fexcelp_change_cpu_freq);
protected:
virtual void machine_start() override;
@ -192,6 +234,7 @@ private:
optional_device<s14001a_device> m_speech;
optional_ioport_array<3> m_inputs;
u8 m_invert = 0;
u8 m_select = 0;
u8 m_7seg_data = 0;
u8 m_speech_data = 0;
@ -216,50 +259,17 @@ void excel_state::machine_start()
save_item(NAME(m_speech_bank));
}
INPUT_CHANGED_MEMBER(excel_state::fexcelp_change_cpu_freq)
{
m_maincpu->set_unscaled_clock((newval & 1) ? 5_MHz_XTAL : 3_MHz_XTAL);
}
/*******************************************************************************
I/O
*******************************************************************************/
// speech (fexcelv)
void excel_state::init_fexcelv()
{
u8 *rom = memregion("speech")->base();
const u32 len = memregion("speech")->bytes();
assert(len == 0x8000);
// program controls A11, user controls A13,A14(language switches)
std::vector<u8> buf(len);
memcpy(&buf[0], rom, len);
for (int i = 0; i < len; i++)
rom[i] = buf[((i & 0x67ff) | bitswap<2>(i,11,12) << 11) ^ 0x6000];
}
INPUT_CHANGED_MEMBER(excel_state::speech_bankswitch)
{
// tied to speech ROM highest bits
m_speech_bank = (m_speech_bank & 1) | (newval << 1 & 6);
m_speech->set_rom_bank(m_speech_bank);
}
void excel_state::speech_w(u8 data, u8 mask)
{
// a0-a2,d2 (from ttl_w): 74259(2) to speech board
m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
// 74259 Q6: speech ROM A11
m_speech_bank = (m_speech_bank & ~1) | BIT(m_speech_data, 6);
m_speech->set_rom_bank(m_speech_bank);
// Q0-Q5: S14001A C0-C5
// Q7: S14001A start pin
m_speech->data_w(m_speech_data & 0x3f);
m_speech->start_w(BIT(m_speech_data, 7));
}
// TTL
void excel_state::ttl_w(offs_t offset, u8 data)
@ -308,7 +318,7 @@ u8 excel_state::ttl_r(offs_t offset)
// a0-a2,d7: multiplexed inputs (active low)
// read chessboard sensors
if (sel < 8)
data = m_board->read_file(sel);
data = m_board->read_file(sel) ^ m_invert;
// read button panel
else if (sel == 8)
@ -318,6 +328,44 @@ u8 excel_state::ttl_r(offs_t offset)
}
// speech (fexcelv)
void excel_state::init_fexcelv()
{
u8 *rom = memregion("speech")->base();
const u32 len = memregion("speech")->bytes();
assert(len == 0x8000);
// program controls A11, user controls A13,A14(language switches)
std::vector<u8> buf(len);
memcpy(&buf[0], rom, len);
for (int i = 0; i < len; i++)
rom[i] = buf[((i & 0x67ff) | bitswap<2>(i,11,12) << 11) ^ 0x6000];
}
INPUT_CHANGED_MEMBER(excel_state::speech_bankswitch)
{
// tied to speech ROM highest bits
m_speech_bank = (m_speech_bank & 1) | (newval << 1 & 6);
m_speech->set_rom_bank(m_speech_bank);
}
void excel_state::speech_w(u8 data, u8 mask)
{
// a0-a2,d2 (from ttl_w): 74259(2) to speech board
m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
// 74259 Q6: speech ROM A11
m_speech_bank = (m_speech_bank & ~1) | BIT(m_speech_data, 6);
m_speech->set_rom_bank(m_speech_bank);
// Q0-Q5: S14001A C0-C5
// Q7: S14001A start pin
m_speech->data_w(m_speech_data & 0x3f);
m_speech->start_w(BIT(m_speech_data, 7));
}
/*******************************************************************************
Address Maps
@ -378,11 +426,25 @@ static INPUT_PORTS_START( fexcel )
PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
INPUT_PORTS_END
static INPUT_PORTS_START( fdes )
static INPUT_PORTS_START( fexcelp )
PORT_INCLUDE( fexcel )
PORT_MODIFY("IN.2")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // no low-voltage detection circuit (still works in software though)
PORT_START("CPU")
PORT_CONFNAME( 0x01, 0x01, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, excel_state, fexcelp_change_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz (Designer 2000)" )
PORT_CONFSETTING( 0x01, "5MHz (Par Excellence, Designer 2100)" )
INPUT_PORTS_END
static INPUT_PORTS_START( granits )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen") // options
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King") // verify
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("RE")
INPUT_PORTS_END
@ -433,6 +495,24 @@ void excel_state::fexcelb(machine_config &config)
config.set_default_layout(layout_fidel_exb);
}
void excel_state::fexceld(machine_config &config)
{
fexcelb(config);
config.set_default_layout(layout_fidel_exd);
}
void excel_state::fexcelv(machine_config &config)
{
fexcelb(config);
config.set_default_layout(layout_fidel_exv);
// sound hardware
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
void excel_state::fexcelp(machine_config &config)
{
fexcel(config);
@ -447,43 +527,8 @@ void excel_state::granits(machine_config &config)
fexcelp(config);
// basic machine hardware
m_maincpu->set_clock(8_MHz_XTAL/2); // R65C02P4
}
void excel_state::fdes2100(machine_config &config)
{
fexcel(config);
// basic machine hardware
M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
config.set_default_layout(layout_fidel_des);
}
void excel_state::fdes2000(machine_config &config)
{
fdes2100(config);
// basic machine hardware
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
}
void excel_state::fexcelv(machine_config &config)
{
fexcelb(config);
config.set_default_layout(layout_fidel_exv);
// sound hardware
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
void excel_state::fexceld(machine_config &config)
{
fexcelb(config);
config.set_default_layout(layout_fidel_exd);
m_maincpu->set_clock(8_MHz_XTAL); // R65C02P4
config.set_default_layout(layout_granits);
}
@ -512,12 +557,12 @@ ROM_END
ROM_START( fexcel12 ) // model EP12, PCB label 510-1099A01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
ROM_END
ROM_START( fexcel124 ) // model EP12, PCB label 510-1099A01
ROM_START( fexcel12a ) // model EP12, PCB label 510-1099A01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
ROM_END
ROM_START( fexcela ) // model 6080, PCB label 510-1099A01(manuf.1985) or 510-1099B01(manuf.1986)
@ -528,27 +573,18 @@ ROM_END
ROM_START( fexcelp ) // model 6083, PCB label 510-1099A01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) )
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // only 1 byte difference, assume bugfix in bookrom
ROM_END
ROM_START( fexcelpb ) // model 6083, PCB label 510-1099B01
ROM_START( fexcelpa ) // model 6083, PCB label 510-1099B01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label, only 1 byte difference, assume bugfix in bookrom
ROM_LOAD("white.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label
ROM_END
ROM_START( granits ) // modified SC12 board, Par Excellence program
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("granit_s-4", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
ROM_END
ROM_START( fdes2000 ) // model 6102, PCB label 510.1129A01
ROM_START( granits ) // modified SC12 board
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI, same label as fexcelp
ROM_END
ROM_START( fdes2100 ) // model 6103, PCB label 510.1129A01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // same as fdes2000
ROM_LOAD("granit_s-4.ic15", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
ROM_END
} // anonymous namespace
@ -561,14 +597,13 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1987, fexcel, 0, 0, fexcelb, fexcelb, excel_state, empty_init, "Fidelity International", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE )
SYST( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, excel_state, init_fexcelv, "Fidelity International", "Voice Excellence", MACHINE_SUPPORTS_SAVE )
SYST( 1987, fexceld, fexcel, 0, fexceld, fexcelb, excel_state, empty_init, "Fidelity International", "Excel Display", MACHINE_SUPPORTS_SAVE )
SYST( 1985, fexcel12, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity International", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE ) // 1st version of The Excellence
SYST( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, excel_state, empty_init, "Fidelity International", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE )
SYST( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, excel_state, init_fexcelv, "Fidelity International", "Voice Excellence", MACHINE_SUPPORTS_SAVE )
SYST( 1985, fexcel12, fexcel, 0, fexcel4, fexcel, excel_state, empty_init, "Fidelity International", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE )
SYST( 1985, fexcel12a, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity International", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE ) // 1st version of The Excellence
SYST( 1985, fexcela, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity International", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, fexcelp, 0, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity International", "The Par Excellence", MACHINE_SUPPORTS_SAVE )
SYST( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity International", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (Remote Control Systems)", "Granit S", MACHINE_SUPPORTS_SAVE )
SYST( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, excel_state, empty_init, "Fidelity International", "Designer 2000", MACHINE_SUPPORTS_SAVE )
SYST( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, excel_state, empty_init, "Fidelity International", "Designer 2100", MACHINE_SUPPORTS_SAVE )
SYST( 1986, fexcelp, 0, 0, fexcelp, fexcelp, excel_state, empty_init, "Fidelity International", "The Par Excellence (set 1)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, fexcelpa, fexcelp, 0, fexcelp, fexcelp, excel_state, empty_init, "Fidelity International", "The Par Excellence (set 2)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, granits, fscc12, 0, granits, granits, excel_state, init_granits, "hack (Remote Control Systems)", "Granit S", MACHINE_SUPPORTS_SAVE )

View File

@ -20,7 +20,7 @@ spawn block and place it anywhere on a free spot at the designated box at the
edge of the chessboard.
Hardware notes:
- PCB label 510.1128A01
- PCB label: 510.1128A01
- R65C02P4, XTAL marked 4.915200
- 2*32KB ROM 27C256-15, 8KB RAM MS6264L-10
- LCD driver, display panel for digits

View File

@ -24,7 +24,7 @@ Known MCU ROM serials:
TODO:
- is The Classic model CC8 a different ROM? and what about model 6079D?
--------------------------------------------------------------------------------
================================================================================
SC6 hardware notes:
- PCB label: 510-1045B01
@ -39,7 +39,7 @@ SC6 released modules, * denotes not dumped yet:
SC6 program is contained in BO6 and CG6.
--------------------------------------------------------------------------------
================================================================================
MSC hardware notes:
- PCB label: 510-1044B01
@ -56,7 +56,7 @@ Silver Bullet hardware notes:
- TMP80C50AP-6-9311 MCU, 4KB internal ROM, 6MHz XTAL
- buzzer, 16 leds, 8*8 chessboard buttons, module slot (takes MSC modules)
--------------------------------------------------------------------------------
================================================================================
The Classic (model CC8) hardware notes:
- PCB label: 510-1095A01
@ -79,7 +79,7 @@ Designer 1500 hardware notes:
Peri Beta has the same PCB/ROM as Designer 1500, only the housing differs.
--------------------------------------------------------------------------------
================================================================================
Gambit Voice hardware notes:
- TMP80C50AP-6-9337 MCU, 4KB internal ROM, 6MHz XTAL

View File

@ -27,7 +27,7 @@ I/O is via TTL, not further documented here
The Playmatic S was only released in Germany, it's basically a 'deluxe' version of SC9
with magnet sensors and came with CB9 and CB16.
--------------------------------------------------------------------------------
================================================================================
Starting with SC9, Fidelity added a cartridge slot to their chess computers, meant for
extra book opening databases and recorded games.

View File

@ -12,7 +12,7 @@ Grandmaster and FCC are verified to be the same PCB + ROMs as UVC. So even thoug
they have a large wooden chessboard attached instead of a small plastic one, from
MAME's perspective there's nothing to emulate on top of UVC.
********************************************************************************
================================================================================
RE notes by Kevin Horton

View File

@ -7,7 +7,9 @@ authors:hap
<!-- define elements -->
<element name="blackl"><rect><color red="0.01" green="0.01" blue="0.01" /></rect></element>
<element name="black"><rect><color red="0.15" green="0.15" blue="0.15" /></rect></element>
<element name="blackm"><rect><color red="0.2" green="0.2" blue="0.2" /></rect></element>
<element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
<element name="disk_black"><disk><color red="0.15" green="0.15" blue="0.15" /></disk></element>
<element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
@ -28,19 +30,25 @@ authors:hap
</disk>
</element>
<element name="text_1"><text string="1" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_2"><text string="2" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_3"><text string="3" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_4"><text string="4" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_5"><text string="5" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_6"><text string="6" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_7"><text string="7" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_8"><text string="8" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_1"><text string="1"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_2"><text string="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_3"><text string="3"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_4"><text string="4"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_5"><text string="5"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_6"><text string="6"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_7"><text string="7"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_8"><text string="8"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_9"><text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_10"><text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_11"><text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_12"><text string="12" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l1"><text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l2"><text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l3"><text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l4"><text string="12" align="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l5"><text string="NO MATE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l61"><text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l62"><text string="ACCEPTED"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l71"><text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_l72"><text string="DECLINED"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_a"><text string="A"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_b"><text string="B"><color red="0.01" green="0.01" blue="0.01" /></text></element>
@ -51,31 +59,32 @@ authors:hap
<element name="text_g"><text string="G"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_h"><text string="H"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lb"><text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lc"><text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_ld"><text string="WHITE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_le"><text string="BLACK"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lf"><text string="STALEMATE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lg"><text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lh"><text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_lb"><text string="CHECK"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_lc"><text string="MATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_ld"><text string="WHITE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_le"><text string="BLACK"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_lf"><text string="STALEMATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_lg"><text string="DRAW"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_lh"><text string="I LOSE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_t81"><text string="NEW"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t82"><text string="GAME"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t7"><text string="VERIFY"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t6"><text string=" OPTIONS"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t5"><text string="LEVEL"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t41"><text string="TAKE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t42"><text string="BACK"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t3"><text string="HINT"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t2"><text string="MOVE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_t1"><text string="CLEAR"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_illegal"><text string="ILLEGAL"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_check"><text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_p1"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/bk.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p2"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/bq.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p3"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/br.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p4"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/bb.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p5"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/bn.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p6"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/bp.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_re"><text string="RE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_cl"><text string="CL"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_pb"><text string="PB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_pv"><text string="PV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_lv"><text string="LV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_tb"><text string="TB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_dm"><text string="DM"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_rv"><text string="RV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
<element name="text_p1"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wk.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p2"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wq.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p3"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wr.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p4"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wb.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p5"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wn.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<element name="text_p6"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wp.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
<!-- sb board -->
@ -340,112 +349,133 @@ authors:hap
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-18.5" right="96" top="-1.5" bottom="93" />
<bounds left="-18" right="97.5" top="-1.5" bottom="92.5" />
<element ref="white"><bounds x="-6.5" y="-1.5" width="102.5" height="94.5" /></element>
<element ref="white"><bounds x="-6" y="-1.5" width="103.5" height="94" /></element>
<element ref="black"><bounds x="3" y="2.5" width="81" height="81" /></element>
<group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-17.5" y="3.5" width="10" height="80" /></group>
<group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-17" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
<element ref="text_8"><bounds x="0.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="0.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="0.2" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="0.2" y="37" width="2" height="2" /></element>
<element ref="text_4"><bounds x="0.2" y="47" width="2" height="2" /></element>
<element ref="text_3"><bounds x="0.2" y="57" width="2" height="2" /></element>
<element ref="text_2"><bounds x="0.2" y="67" width="2" height="2" /></element>
<element ref="text_1"><bounds x="0.2" y="77" width="2" height="2" /></element>
<element ref="text_8"><bounds x="0.2" y="9" width="2" height="2" /></element>
<element ref="text_7"><bounds x="0.2" y="19" width="2" height="2" /></element>
<element ref="text_6"><bounds x="0.2" y="29" width="2" height="2" /></element>
<element ref="text_5"><bounds x="0.2" y="39" width="2" height="2" /></element>
<element ref="text_4"><bounds x="0.2" y="49" width="2" height="2" /></element>
<element ref="text_3"><bounds x="0.2" y="59" width="2" height="2" /></element>
<element ref="text_2"><bounds x="0.2" y="69" width="2" height="2" /></element>
<element ref="text_1"><bounds x="0.2" y="79" width="2" height="2" /></element>
<element ref="text_a"><bounds x="7.5" y="84.5" width="2" height="2" /></element>
<element ref="text_b"><bounds x="17.5" y="84.5" width="2" height="2" /></element>
<element ref="text_c"><bounds x="27.5" y="84.5" width="2" height="2" /></element>
<element ref="text_d"><bounds x="37.5" y="84.5" width="2" height="2" /></element>
<element ref="text_e"><bounds x="47.5" y="84.5" width="2" height="2" /></element>
<element ref="text_f"><bounds x="57.5" y="84.5" width="2" height="2" /></element>
<element ref="text_g"><bounds x="67.5" y="84.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></element>
<element ref="text_a"><bounds x="5.5" y="84.5" width="2" height="2" /></element>
<element ref="text_b"><bounds x="15.5" y="84.5" width="2" height="2" /></element>
<element ref="text_c"><bounds x="25.5" y="84.5" width="2" height="2" /></element>
<element ref="text_d"><bounds x="35.5" y="84.5" width="2" height="2" /></element>
<element ref="text_e"><bounds x="45.5" y="84.5" width="2" height="2" /></element>
<element ref="text_f"><bounds x="55.5" y="84.5" width="2" height="2" /></element>
<element ref="text_g"><bounds x="65.5" y="84.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="75.5" y="84.5" width="2" height="2" /></element>
<!-- left side labels -->
<element ref="text_9"><bounds x="-6.3" y="12" width="3" height="2" /></element>
<element ref="text_10"><bounds x="-6.3" y="22" width="3" height="2" /></element>
<element ref="text_11"><bounds x="-6.3" y="32" width="3" height="2" /></element>
<element ref="text_12"><bounds x="-6.3" y="42" width="3" height="2" /></element>
<element ref="text_l1"><bounds x="-5.8" y="12" width="5" height="2" /></element>
<element ref="text_l2"><bounds x="-5.8" y="22" width="5" height="2" /></element>
<element ref="text_l3"><bounds x="-5.8" y="32" width="5" height="2" /></element>
<element ref="text_l4"><bounds x="-5.8" y="42" width="5" height="2" /></element>
<element ref="text_l5"><bounds x="-2.8" y="47.25" width="2" height="11.5" /><orientation rotate="90" /></element>
<element ref="text_l61"><bounds x="-2.8" y="58.75" width="2" height="8.5" /><orientation rotate="90" /></element>
<element ref="text_l62"><bounds x="-4.81" y="58.0" width="2" height="10" /><orientation rotate="90" /></element>
<element ref="text_l71"><bounds x="-2.8" y="68.75" width="2" height="8.5" /><orientation rotate="90" /></element>
<element ref="text_l72"><bounds x="-4.81" y="68.0" width="2" height="10" /><orientation rotate="90" /></element>
<element ref="blackl"><bounds x="-0.3" y="8.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="18.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="28.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="38.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="48.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="58.75" width="0.3" height="8.5" /></element>
<element ref="blackl"><bounds x="-0.3" y="68.75" width="0.3" height="8.5" /></element>
<!-- bottom side labels -->
<element ref="text_lb"><bounds x="13.5" y="89.9" width="10" height="2" /></element>
<element ref="text_lc"><bounds x="23.5" y="89.9" width="10" height="2" /></element>
<element ref="text_ld"><bounds x="33.5" y="89.9" width="10" height="2" /></element>
<element ref="text_le"><bounds x="43.5" y="89.9" width="10" height="2" /></element>
<element ref="text_lh"><bounds x="73.5" y="89.9" width="10" height="2" /></element>
<element ref="text_lg"><bounds x="62.5" y="89.9" width="12" height="2" /></element>
<element ref="text_lf"><bounds x="53.5" y="89.9" width="10" height="2" /></element>
<element ref="blackm" blend="multiply"><bounds x="-6" y="88" width="110" height="10" /></element>
<element ref="text_lb"><bounds x="13.5" y="89.2" width="10" height="2" /></element>
<element ref="text_lc"><bounds x="23.5" y="89.2" width="10" height="2" /></element>
<element ref="text_ld"><bounds x="33.5" y="89.2" width="10" height="2" /></element>
<element ref="text_le"><bounds x="43.5" y="89.2" width="10" height="2" /></element>
<element ref="text_lh"><bounds x="73.5" y="89.2" width="10" height="2" /></element>
<element ref="text_lg"><bounds x="62.5" y="89.2" width="12" height="2" /></element>
<element ref="text_lf"><bounds x="53.5" y="89.2" width="10" height="2" /></element>
<!-- chessboard leds -->
<element name="0.7" ref="led"><bounds x="-1.8" y="7.25" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led"><bounds x="-1.8" y="17.25" width="1.5" height="1.5" /></element>
<element name="0.5" ref="led"><bounds x="-1.8" y="27.25" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led"><bounds x="-1.8" y="37.25" width="1.5" height="1.5" /></element>
<element name="0.3" ref="led"><bounds x="-1.8" y="47.25" width="1.5" height="1.5" /></element>
<element name="0.2" ref="led"><bounds x="-1.8" y="57.25" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led"><bounds x="-1.8" y="67.25" width="1.5" height="1.5" /></element>
<element name="0.0" ref="led"><bounds x="-1.8" y="77.25" width="1.5" height="1.5" /></element>
<element name="0.7" ref="led"><bounds x="0" y="7.25" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led"><bounds x="0" y="17.25" width="1.5" height="1.5" /></element>
<element name="0.5" ref="led"><bounds x="0" y="27.25" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led"><bounds x="0" y="37.25" width="1.5" height="1.5" /></element>
<element name="0.3" ref="led"><bounds x="0" y="47.25" width="1.5" height="1.5" /></element>
<element name="0.2" ref="led"><bounds x="0" y="57.25" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led"><bounds x="0" y="67.25" width="1.5" height="1.5" /></element>
<element name="0.0" ref="led"><bounds x="0" y="77.25" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="7.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.1" ref="led"><bounds x="17.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.2" ref="led"><bounds x="27.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.3" ref="led"><bounds x="37.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.4" ref="led"><bounds x="47.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.5" ref="led"><bounds x="57.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.6" ref="led"><bounds x="67.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.7" ref="led"><bounds x="77.75" y="87.5" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="7.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.1" ref="led"><bounds x="17.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.2" ref="led"><bounds x="27.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.3" ref="led"><bounds x="37.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.4" ref="led"><bounds x="47.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.5" ref="led"><bounds x="57.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.6" ref="led"><bounds x="67.75" y="85" width="1.5" height="1.5" /></element>
<element name="1.7" ref="led"><bounds x="77.75" y="85" width="1.5" height="1.5" /></element>
<!-- these 2 status leds are unconnected -->
<element ref="text_illegal"><bounds x="85" y="79" width="11.4" height="2" /></element>
<element ref="text_check"><bounds x="85" y="83" width="11.4" height="2" /></element>
<element ref="led"><bounds x="89.95" y="81" width="1.5" height="1.5" /></element>
<element ref="led"><bounds x="89.95" y="85" width="1.5" height="1.5" /></element>
<!-- right side -->
<element ref="disk_black"><bounds x="87" y="5" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="15" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="25" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="35" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="45" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="55" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="65" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="75" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="3.1" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="12.4" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="24.3" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="33.6" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="42.9" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="52.2" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="61.5" width="6" height="6" /></element>
<element ref="disk_black"><bounds x="87" y="70.8" width="6" height="6" /></element>
<element ref="disk_white"><bounds x="87.7" y="5.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="15.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="25.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="35.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="45.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="55.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="65.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="75.7" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="3.8" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="13.1" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="25.0" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="34.3" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="43.6" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="52.9" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="62.2" width="4.6" height="4.6" /></element>
<element ref="disk_white"><bounds x="87.7" y="71.5" width="4.6" height="4.6" /></element>
<element ref="text_t81"><bounds x="87" y="6.7" width="6" height="1.25" /></element>
<element ref="text_t82"><bounds x="87" y="7.95" width="6" height="1.25" /></element>
<element ref="text_t7"><bounds x="87" y="17.325" width="6" height="1.25" /></element>
<element ref="text_t6"><bounds x="87" y="27.325" width="6" height="1.25" /></element>
<element ref="text_t5"><bounds x="87" y="37.325" width="6" height="1.25" /></element>
<element ref="text_t41"><bounds x="87" y="46.7" width="6" height="1.25" /></element>
<element ref="text_t42"><bounds x="87" y="47.95" width="6" height="1.25" /></element>
<element ref="text_t3"><bounds x="87" y="57.325" width="6" height="1.25" /></element>
<element ref="text_t2"><bounds x="87" y="67.325" width="6" height="1.25" /></element>
<element ref="text_t1"><bounds x="87" y="77.325" width="6" height="1.25" /></element>
<element ref="text_re"><bounds x="87.7" y="4.9" width="4.6" height="2.4" /></element>
<element ref="text_cl"><bounds x="87.7" y="14.2" width="4.6" height="2.4" /></element>
<element ref="text_pb"><bounds x="87.7" y="26.1" width="4.6" height="2.4" /></element>
<element ref="text_pv"><bounds x="87.7" y="35.4" width="4.6" height="2.4" /></element>
<element ref="text_lv"><bounds x="87.7" y="44.7" width="4.6" height="2.4" /></element>
<element ref="text_tb"><bounds x="87.7" y="54.0" width="4.6" height="2.4" /></element>
<element ref="text_dm"><bounds x="87.7" y="63.3" width="4.6" height="2.4" /></element>
<element ref="text_rv"><bounds x="87.7" y="72.6" width="4.6" height="2.4" /></element>
<repeat count="6">
<param name="y" start="12" increment="10" />
<param name="y" start="21.4" increment="9.3" />
<param name="i" start="1" increment="1" />
<element ref="text_p~i~" blend="multiply"><bounds x="88.5" y="~y~" width="3.0" height="3.0" /></element>
</repeat>
<element ref="hlb" inputtag="IN.0" inputmask="0x80"><bounds x="87" y="5" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x40"><bounds x="87" y="15" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x20"><bounds x="87" y="25" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x10"><bounds x="87" y="35" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x08"><bounds x="87" y="45" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x04"><bounds x="87" y="55" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x02"><bounds x="87" y="65" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x01"><bounds x="87" y="75" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x80"><bounds x="87" y="3.1" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x01"><bounds x="87" y="12.4" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x40"><bounds x="87" y="24.3" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x20"><bounds x="87" y="33.6" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x10"><bounds x="87" y="42.9" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x08"><bounds x="87" y="52.2" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x04"><bounds x="87" y="61.5" width="6" height="6" /><color alpha="0.3" /></element>
<element ref="hlb" inputtag="IN.0" inputmask="0x02"><bounds x="87" y="70.8" width="6" height="6" /><color alpha="0.3" /></element>
</view>
</mamelayout>

View File

@ -18084,15 +18084,13 @@ fpresbu //
fpresgla //
@source:fidelity/excel.cpp
fdes2000 //
fdes2100 //
fexcel //
fexcel12 //
fexcel124 //
fexcel12a //
fexcela //
fexceld //
fexcelp //
fexcelpb //
fexcelpa //
fexcelv //
granits // RCS

View File

@ -23,6 +23,7 @@ BTANB:
================================================================================
Saitek GK 2000 family
---------------------
Hardware notes:
@ -47,6 +48,7 @@ Travel Champion 2080 and Tandy Mega 2050X are 14MHz instead of 20MHz.
================================================================================
Saitek Centurion family
-----------------------
This is the program with the infamous H8 bug, not named after the MCU, but after
the H8 square. The piece on H8 is moved immediately, regardless of playing level,