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 */ /* 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( 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. D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) 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 // 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) (SciSys renamed themselves to Saitek in 1987)
- Stratos - 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 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. 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: TODO:
- emulate LCD at lower level, probably an MCU with embedded LCDC - 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 - tking different internal artwork
- irq timing is derived from the main XTAL, but result should be similar with 5MHz and 5.67MHz, - 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) 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++) for (int j = 0; j < 4; j++)
m_out_lcd[i >> 4][i & 0xf][j] = BIT(m_lcd_data[i], 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) // upper digits (colon is at 0x00)
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
@ -565,9 +568,9 @@ ROM_END
******************************************************************************/ ******************************************************************************/
/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ /* 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( 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( 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, 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( 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 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // oldest? 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 (set 3)", 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> <bezel name="lcd1.0.0" element="ldot"><bounds x="28.69" y="11.65" width="0.6" height="0.6" /></bezel>
</group> </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 --> <!-- build screen -->
@ -527,7 +587,8 @@
<group ref="sb_ui"><bounds x="-1.5" y="10" width="10" height="80" /></group> <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> <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 --> <!-- button panel -->
<element ref="black"><bounds x="92.5" y="40.5" width="9" height="0.25" /></element> <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> <bezel name="lcd1.0.0" element="ldot"><bounds x="28.69" y="11.65" width="0.6" height="0.6" /></bezel>
</group> </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 --> <!-- build screen -->
@ -506,7 +566,8 @@
<group ref="sb_ui"><bounds x="-3" y="10" width="10" height="80" /></group> <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> <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 --> <!-- chessboard leds -->
<element ref="ledo"><bounds x="8.6" y="14.15" width="0.7" height="1.8" /></element> <element ref="ledo"><bounds x="8.6" y="14.15" width="0.7" height="1.8" /></element>