stratos: add glitchy lcd dmd (nw)

This commit is contained in:
hap 2019-07-22 03:17:32 +02:00
parent f9a36acad2
commit 5d179088fb
4 changed files with 137 additions and 12 deletions

View File

@ -316,5 +316,5 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
CONS( 1988, corona, 0, 0, corona, corona, corona_state, empty_init, "Saitek", "Kasparov Corona (ver. D+)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Corona II
CONS( 1988, coronaa, corona, 0, corona, corona, corona_state, empty_init, "Saitek", "Kasparov Corona (ver. D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, corona, 0, 0, corona, corona, corona_state, empty_init, "Saitek", "Kasparov Corona (ver. D+)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Corona II
CONS( 1988, coronaa, corona, 0, corona, corona, corona_state, empty_init, "Saitek", "Kasparov Corona (ver. C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )

View File

@ -2,7 +2,7 @@
// copyright-holders:Olivier Galibert, hap
/***************************************************************************
SciSys/Saitek Stratos chesscomputer family (1986-1990)
SciSys/Saitek Stratos chesscomputer family (1987-1990)
(SciSys renamed themselves to Saitek in 1987)
- Stratos
@ -36,9 +36,12 @@ they're the same chess engine as later Saitek modules, such as the Analyst modul
Likewise, officially there isn't a "Turbo King II" or "Corona II", these 'sequels' are titled
as such by the chesscomputer community. Saitek simply advertised them as an improved program.
The initial Stratos/Turbo King (PRG ROM labels known: M,K,L,P) are probably engine version B,
very few bytes difference between revisions. The first Corona is engine version C.
TODO:
- emulate LCD at lower level, probably an MCU with embedded LCDC
- add LCD 7*7 DMD, it's in m_lcd_data[0x30 to 0x3b] but scrambled
- fix LCD 7*7 DMD, it's in m_lcd_data[0x30 to 0x3b] but scrambled
- tking different internal artwork
- irq timing is derived from the main XTAL, but result should be similar with 5MHz and 5.67MHz,
there are a couple of "FREQ. SEL" nodes on the PCB, maybe related (not the ones in input ports)
@ -251,7 +254,7 @@ void saitek_stratos_state::update_lcd()
for (int j = 0; j < 4; j++)
m_out_lcd[i >> 4][i & 0xf][j] = BIT(m_lcd_data[i], j);
m_out_digit[0] = 0; // where?
m_out_digit[0] = (m_lcd_data[0] & 4) ? 6 : 0; // "1"
// upper digits (colon is at 0x00)
for (int i = 0; i < 4; i++)
@ -565,9 +568,9 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
CONS( 1986, stratos, 0, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, stratosa, stratos, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, stratos, 0, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, stratosa, stratos, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, tking, 0, 0, tking2, tking2, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 1, ver. D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Turbo King II
CONS( 1988, tkinga, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // oldest?
CONS( 1988, tkingb, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, tking, 0, 0, tking2, tking2, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (ver. D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Turbo King II
CONS( 1988, tkinga, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (ver. B, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, tkingb, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (ver. B, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )

View File

@ -517,6 +517,66 @@
<bezel name="lcd1.0.0" element="ldot"><bounds x="28.69" y="11.65" width="0.6" height="0.6" /></bezel>
</group>
<group name="lcd2">
<bounds x="0" y="0" width="6.6" height="6.6" />
<bezel name="lcd3.11.2" element="ldot"><bounds x="0" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.3" element="ldot"><bounds x="1" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.1" element="ldot"><bounds x="2" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.3" element="ldot"><bounds x="3" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.0" element="ldot"><bounds x="4" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.1" element="ldot"><bounds x="5" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.2" element="ldot"><bounds x="6" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.2" element="ldot"><bounds x="0" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.3" element="ldot"><bounds x="1" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.1" element="ldot"><bounds x="2" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.3" element="ldot"><bounds x="3" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.0" element="ldot"><bounds x="4" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.1" element="ldot"><bounds x="5" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.2" element="ldot"><bounds x="6" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.2" element="ldot"><bounds x="0" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.3" element="ldot"><bounds x="1" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.1" element="ldot"><bounds x="2" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.3" element="ldot"><bounds x="3" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.3" element="ldot"><bounds x="4" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.3" element="ldot"><bounds x="5" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.3" element="ldot"><bounds x="6" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.2" element="ldot"><bounds x="0" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.3" element="ldot"><bounds x="1" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.1" element="ldot"><bounds x="2" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.0" element="ldot"><bounds x="3" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.0" element="ldot"><bounds x="4" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.0" element="ldot"><bounds x="5" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.0" element="ldot"><bounds x="6" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.2" element="ldot"><bounds x="0" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.3" element="ldot"><bounds x="1" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.1" element="ldot"><bounds x="2" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.1" element="ldot"><bounds x="3" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.1" element="ldot"><bounds x="4" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.1" element="ldot"><bounds x="5" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.1" element="ldot"><bounds x="6" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.2" element="ldot"><bounds x="0" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.3" element="ldot"><bounds x="1" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.1" element="ldot"><bounds x="2" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.2" element="ldot"><bounds x="3" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.2" element="ldot"><bounds x="4" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.2" element="ldot"><bounds x="5" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.2" element="ldot"><bounds x="6" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.0" element="ldot"><bounds x="0" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.0" element="ldot"><bounds x="1" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.0" element="ldot"><bounds x="2" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.0" element="ldot"><bounds x="3" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.0" element="ldot"><bounds x="4" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.0" element="ldot"><bounds x="5" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd?.?.?" element="ldot"><bounds x="6" y="6" width="0.6" height="0.6" /></bezel>
</group>
<!-- build screen -->
@ -527,7 +587,8 @@
<group ref="sb_ui"><bounds x="-1.5" y="10" width="10" height="80" /></group>
<group ref="lcd1"><bounds x="26.64" y="92" width="12.86" height="8" /></group>
<bezel element="whitew"><bounds x="25.14" y="91.5" width="14.86" height="9" /><color alpha="0.125" /></bezel>
<group ref="lcd2"><bounds x="25.14" y="96.5714" width="3.42857" height="3.42857" /></group>
<bezel element="whitew"><bounds x="24.64" y="91.5" width="15.36" height="9" /><color alpha="0.125" /></bezel>
<!-- button panel -->
<element ref="black"><bounds x="92.5" y="40.5" width="9" height="0.25" /></element>

View File

@ -496,6 +496,66 @@
<bezel name="lcd1.0.0" element="ldot"><bounds x="28.69" y="11.65" width="0.6" height="0.6" /></bezel>
</group>
<group name="lcd2">
<bounds x="0" y="0" width="6.6" height="6.6" />
<bezel name="lcd3.11.2" element="ldot"><bounds x="0" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.3" element="ldot"><bounds x="1" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.1" element="ldot"><bounds x="2" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.3" element="ldot"><bounds x="3" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.0" element="ldot"><bounds x="4" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.1" element="ldot"><bounds x="5" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.0.2" element="ldot"><bounds x="6" y="0" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.2" element="ldot"><bounds x="0" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.3" element="ldot"><bounds x="1" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.1" element="ldot"><bounds x="2" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.3" element="ldot"><bounds x="3" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.0" element="ldot"><bounds x="4" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.1" element="ldot"><bounds x="5" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.1.2" element="ldot"><bounds x="6" y="1" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.2" element="ldot"><bounds x="0" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.3" element="ldot"><bounds x="1" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.1" element="ldot"><bounds x="2" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.3" element="ldot"><bounds x="3" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.3" element="ldot"><bounds x="4" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.3" element="ldot"><bounds x="5" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.3" element="ldot"><bounds x="6" y="2" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.2" element="ldot"><bounds x="0" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.3" element="ldot"><bounds x="1" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.1" element="ldot"><bounds x="2" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.0" element="ldot"><bounds x="3" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.0" element="ldot"><bounds x="4" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.0" element="ldot"><bounds x="5" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.0" element="ldot"><bounds x="6" y="3" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.2" element="ldot"><bounds x="0" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.3" element="ldot"><bounds x="1" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.1" element="ldot"><bounds x="2" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.1" element="ldot"><bounds x="3" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.1" element="ldot"><bounds x="4" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.1" element="ldot"><bounds x="5" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.1" element="ldot"><bounds x="6" y="4" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.2" element="ldot"><bounds x="0" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.3" element="ldot"><bounds x="1" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.1" element="ldot"><bounds x="2" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.2.2" element="ldot"><bounds x="3" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.5.2" element="ldot"><bounds x="4" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.4.2" element="ldot"><bounds x="5" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.3.2" element="ldot"><bounds x="6" y="5" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.11.0" element="ldot"><bounds x="0" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.10.0" element="ldot"><bounds x="1" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.9.0" element="ldot"><bounds x="2" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.8.0" element="ldot"><bounds x="3" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.7.0" element="ldot"><bounds x="4" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd3.6.0" element="ldot"><bounds x="5" y="6" width="0.6" height="0.6" /></bezel>
<bezel name="lcd?.?.?" element="ldot"><bounds x="6" y="6" width="0.6" height="0.6" /></bezel>
</group>
<!-- build screen -->
@ -506,7 +566,8 @@
<group ref="sb_ui"><bounds x="-3" y="10" width="10" height="80" /></group>
<group ref="lcd1"><bounds x="26.64" y="93" width="12.86" height="8" /></group>
<bezel element="whitew"><bounds x="25.14" y="92.5" width="14.86" height="9" /><color alpha="0.125" /></bezel>
<group ref="lcd2"><bounds x="25.14" y="97.5714" width="3.42857" height="3.42857" /></group>
<bezel element="whitew"><bounds x="24.64" y="92.5" width="15.36" height="9" /><color alpha="0.125" /></bezel>
<!-- chessboard leds -->
<element ref="ledo"><bounds x="8.6" y="14.15" width="0.7" height="1.8" /></element>