mirror of
https://github.com/holub/mame
synced 2025-06-19 02:38:56 +03:00
stratos: add endgame rom, partially add lcd (nw)
This commit is contained in:
parent
c968f79282
commit
5f19e51bc5
31
hash/saitek_egr.xml
Normal file
31
hash/saitek_egr.xml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
|
|
||||||
|
<softwarelist name="saitek_egr" description="Saitek Endgame ROM">
|
||||||
|
|
||||||
|
<!-- Extension ROM, sold separately, placed in ROM socket through hatch on the back -->
|
||||||
|
<!-- Used in: Stratos, Turbo King, Corona, Simultano chess computers, Maestro and Analyst modules -->
|
||||||
|
|
||||||
|
<software name="egr">
|
||||||
|
<description>Endgame ROM (ver. 1)</description>
|
||||||
|
<year>1988</year>
|
||||||
|
<publisher>Saitek</publisher>
|
||||||
|
<part name="extrom" interface="saitek_egr">
|
||||||
|
<dataarea name="rom" size="0x8000">
|
||||||
|
<rom name="egr.bin" size="0x8000" crc="1f9800c8" sha1="6147ad3de65b897fa5f6ab06b2f8597403d6e32e" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
<software name="egr2" cloneof="egr">
|
||||||
|
<description>Endgame ROM (ver. 2)</description>
|
||||||
|
<year>1988</year>
|
||||||
|
<publisher>Saitek</publisher>
|
||||||
|
<part name="extrom" interface="saitek_egr">
|
||||||
|
<dataarea name="rom" size="0x8000">
|
||||||
|
<rom name="egr2.bin" size="0x8000" crc="9f751516" sha1="c46053b0af55856f2a6871d4aa65b3bd0e7d865f" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
</softwarelist>
|
@ -5,11 +5,14 @@
|
|||||||
Scisys Kasparov Stratos Chess Computer
|
Scisys Kasparov Stratos Chess Computer
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- add LCD (188:88, 88:88, and 7*7 DMD bottom-left)
|
- 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
|
||||||
- corona: different addressmap, 64 leds
|
- corona: different addressmap, 64 leds
|
||||||
- add endgame rom (softwarelist?)
|
- tking different internal artwork
|
||||||
|
- interrupt 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)
|
||||||
|
- does nvram.u7 work? it's cleared during boot, but not used after
|
||||||
- clean up driver
|
- clean up driver
|
||||||
- does nvram.u7 work?
|
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -20,8 +23,14 @@ TODO:
|
|||||||
#include "machine/timer.h"
|
#include "machine/timer.h"
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "sound/volt_reg.h"
|
#include "sound/volt_reg.h"
|
||||||
#include "speaker.h"
|
|
||||||
#include "video/pwm.h"
|
#include "video/pwm.h"
|
||||||
|
#include "bus/generic/slot.h"
|
||||||
|
#include "bus/generic/carts.h"
|
||||||
|
|
||||||
|
#include "softlist.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
// internal artwork
|
// internal artwork
|
||||||
#include "saitek_stratos.lh" // clickable
|
#include "saitek_stratos.lh" // clickable
|
||||||
@ -34,13 +43,14 @@ public:
|
|||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_nvram(*this, "nvram.u7"),
|
m_nvram(*this, "nvram.u7"),
|
||||||
m_rombank(*this, "rombank"),
|
m_rombank(*this, "rombank"),
|
||||||
m_extbank(*this, "extbank"),
|
|
||||||
m_nvrambank(*this, "nvrambank"),
|
m_nvrambank(*this, "nvrambank"),
|
||||||
m_irqtimer(*this, "irqtimer"),
|
|
||||||
m_lcd_busy(*this, "lcd_busy"),
|
m_lcd_busy(*this, "lcd_busy"),
|
||||||
m_board(*this, "board"),
|
m_board(*this, "board"),
|
||||||
m_display(*this, "display"),
|
m_display(*this, "display"),
|
||||||
m_dac(*this, "dac"),
|
m_dac(*this, "dac"),
|
||||||
|
m_extrom(*this, "extrom"),
|
||||||
|
m_out_digit(*this, "digit%u", 0U),
|
||||||
|
m_out_lcd(*this, "lcd%u.%u.%u", 0U, 0U, 0U),
|
||||||
m_inputs(*this, "IN.%u", 0)
|
m_inputs(*this, "IN.%u", 0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -49,6 +59,7 @@ public:
|
|||||||
void tking2(machine_config &config);
|
void tking2(machine_config &config);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(cpu_freq) { set_cpu_freq(); }
|
DECLARE_INPUT_CHANGED_MEMBER(cpu_freq) { set_cpu_freq(); }
|
||||||
|
DECLARE_INPUT_CHANGED_MEMBER(acl_button) { if (newval) power_off(); }
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(go_button);
|
DECLARE_INPUT_CHANGED_MEMBER(go_button);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -61,98 +72,122 @@ private:
|
|||||||
DECLARE_READ8_MEMBER(lcd_r);
|
DECLARE_READ8_MEMBER(lcd_r);
|
||||||
DECLARE_WRITE8_MEMBER(lcd_w);
|
DECLARE_WRITE8_MEMBER(lcd_w);
|
||||||
|
|
||||||
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(extrom_load);
|
||||||
|
DECLARE_READ8_MEMBER(extrom_r);
|
||||||
|
|
||||||
void main_map(address_map &map);
|
void main_map(address_map &map);
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
|
|
||||||
void set_cpu_freq();
|
void set_cpu_freq();
|
||||||
|
|
||||||
std::unique_ptr<uint8_t[]> m_nvram_data;
|
std::unique_ptr<uint8_t[]> m_nvram_data;
|
||||||
u8 m_select;
|
u8 m_select;
|
||||||
u8 m_control;
|
u8 m_control;
|
||||||
u8 m_led_data;
|
u8 m_led_data;
|
||||||
bool m_lcd_written;
|
bool m_power;
|
||||||
|
|
||||||
//u8 m_lcd_address;
|
u8 m_lcd_address;
|
||||||
//u8 m_lcd_ram[0x100];
|
u8 m_lcd_count;
|
||||||
//u8 m_lcd_latch;
|
u8 m_lcd_data[0x40];
|
||||||
|
|
||||||
u8 m_lcd_data;
|
void update_leds();
|
||||||
void show_leds();
|
void update_lcd();
|
||||||
|
void power_off();
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
|
|
||||||
required_device<m65c02_device> m_maincpu;
|
required_device<m65c02_device> m_maincpu;
|
||||||
required_device<nvram_device> m_nvram;
|
required_device<nvram_device> m_nvram;
|
||||||
required_memory_bank m_rombank;
|
required_memory_bank m_rombank;
|
||||||
required_memory_bank m_extbank;
|
|
||||||
required_memory_bank m_nvrambank;
|
required_memory_bank m_nvrambank;
|
||||||
required_device<timer_device> m_irqtimer;
|
|
||||||
required_device<timer_device> m_lcd_busy;
|
required_device<timer_device> m_lcd_busy;
|
||||||
required_device<sensorboard_device> m_board;
|
required_device<sensorboard_device> m_board;
|
||||||
required_device<pwm_display_device> m_display;
|
required_device<pwm_display_device> m_display;
|
||||||
required_device<dac_bit_interface> m_dac;
|
required_device<dac_bit_interface> m_dac;
|
||||||
required_ioport_array<8> m_inputs;
|
required_device<generic_slot_device> m_extrom;
|
||||||
|
output_finder<8+1> m_out_digit;
|
||||||
|
output_finder<4, 16, 4> m_out_lcd;
|
||||||
|
required_ioport_array<8+1> m_inputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void stratos_state::machine_start()
|
void stratos_state::machine_start()
|
||||||
{
|
{
|
||||||
|
// resolve handlers
|
||||||
|
m_out_digit.resolve();
|
||||||
|
m_out_lcd.resolve();
|
||||||
|
|
||||||
m_nvram_data = std::make_unique<uint8_t[]>(0x2000);
|
m_nvram_data = std::make_unique<uint8_t[]>(0x2000);
|
||||||
m_nvram->set_base(m_nvram_data.get(), 0x2000);
|
m_nvram->set_base(m_nvram_data.get(), 0x2000);
|
||||||
|
|
||||||
m_rombank->configure_entries(0, 2, memregion("maincpu")->base(), 0x8000);
|
m_rombank->configure_entries(0, 2, memregion("maincpu")->base(), 0x8000);
|
||||||
m_extbank->configure_entries(0, 2, memregion("ext")->base(), 0x4000);
|
|
||||||
m_nvrambank->configure_entries(0, 2, m_nvram_data.get(), 0x1000);
|
m_nvrambank->configure_entries(0, 2, m_nvram_data.get(), 0x1000);
|
||||||
|
|
||||||
m_control = 0x40;
|
m_control = 0x00;
|
||||||
|
m_select = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
void stratos_state::machine_reset()
|
void stratos_state::machine_reset()
|
||||||
{
|
{
|
||||||
|
m_power = true;
|
||||||
set_cpu_freq();
|
set_cpu_freq();
|
||||||
m_control = 0x40;
|
|
||||||
m_select = 0x00;
|
|
||||||
m_rombank->set_entry(0);
|
m_rombank->set_entry(0);
|
||||||
m_extbank->set_entry(0);
|
|
||||||
m_nvrambank->set_entry(0);
|
m_nvrambank->set_entry(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stratos_state::set_cpu_freq()
|
void stratos_state::set_cpu_freq()
|
||||||
{
|
{
|
||||||
m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? 5.67_MHz_XTAL : 5_MHz_XTAL);
|
m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? 5.67_MHz_XTAL : 5_MHz_XTAL);
|
||||||
|
|
||||||
attotime period = attotime::from_hz(m_maincpu->unscaled_clock() / 0x10000);
|
|
||||||
m_irqtimer->adjust(period, 0, period);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void stratos_state::show_leds()
|
void stratos_state::update_leds()
|
||||||
{
|
{
|
||||||
m_display->matrix_partial(0, 2, 1 << (m_control >> 5 & 1), (~m_led_data & 0xff) | (~m_control << 6 & 0x100));
|
m_display->matrix_partial(0, 2, 1 << (m_control >> 5 & 1), (~m_led_data & 0xff) | (~m_control << 6 & 0x100));
|
||||||
}
|
}
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(stratos_state::interrupt)
|
|
||||||
{
|
|
||||||
m_maincpu->set_input_line(M65C02_IRQ_LINE, HOLD_LINE);
|
|
||||||
}
|
|
||||||
|
|
||||||
INPUT_CHANGED_MEMBER(stratos_state::go_button)
|
INPUT_CHANGED_MEMBER(stratos_state::go_button)
|
||||||
{
|
{
|
||||||
if (newval && ~m_control & 0x40)
|
if (newval && !m_power)
|
||||||
{
|
{
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
|
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
|
||||||
machine_reset();
|
machine_reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEVICE_IMAGE_LOAD_MEMBER(stratos_state::extrom_load)
|
||||||
|
{
|
||||||
|
u32 size = m_extrom->common_get_size("rom");
|
||||||
|
|
||||||
|
// 32KB ROM only?
|
||||||
|
if (size != 0x8000)
|
||||||
|
{
|
||||||
|
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
|
||||||
|
return image_init_result::FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_extrom->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||||
|
m_extrom->common_load_rom(m_extrom->get_rom_base(), size, "rom");
|
||||||
|
|
||||||
|
return image_init_result::PASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
READ8_MEMBER(stratos_state::extrom_r)
|
||||||
|
{
|
||||||
|
u16 bank = BIT(m_control, 1) * 0x4000;
|
||||||
|
return (m_extrom->exists()) ? m_extrom->read_rom(offset | bank) : 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(stratos_state::p2000_w)
|
WRITE8_MEMBER(stratos_state::p2000_w)
|
||||||
{
|
{
|
||||||
|
// d0-d3: input/led mux
|
||||||
|
// d4-d7: chessboard led data
|
||||||
m_select = data;
|
m_select = data;
|
||||||
|
|
||||||
m_display->matrix_partial(2, 4, ~m_select >> 4 & 0xf, 1 << (m_select & 0xf));
|
m_display->matrix_partial(2, 4, ~m_select >> 4 & 0xf, 1 << (m_select & 0xf));
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(stratos_state::p2200_r)
|
READ8_MEMBER(stratos_state::p2200_r)
|
||||||
{
|
{
|
||||||
|
// d0-d7: chessboard sensors
|
||||||
return ~m_board->read_file(m_select & 0xf);
|
return ~m_board->read_file(m_select & 0xf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,11 +198,11 @@ WRITE8_MEMBER(stratos_state::p2200_w)
|
|||||||
|
|
||||||
WRITE8_MEMBER(stratos_state::p2400_w)
|
WRITE8_MEMBER(stratos_state::p2400_w)
|
||||||
{
|
{
|
||||||
m_dac->write(0); // guessed
|
// d0-d7: button leds data
|
||||||
|
|
||||||
m_led_data = data;
|
m_led_data = data;
|
||||||
|
update_leds();
|
||||||
|
|
||||||
show_leds();
|
m_dac->write(0); // guessed
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(stratos_state::control_r)
|
READ8_MEMBER(stratos_state::control_r)
|
||||||
@ -181,47 +216,97 @@ READ8_MEMBER(stratos_state::control_r)
|
|||||||
if (m_lcd_busy->enabled())
|
if (m_lcd_busy->enabled())
|
||||||
data |= 0x20;
|
data |= 0x20;
|
||||||
|
|
||||||
// battery low?
|
// battery low
|
||||||
data |= 0x80;
|
data |= m_inputs[8]->read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read button panel
|
||||||
if (sel < 8)
|
if (sel < 8)
|
||||||
data |= m_inputs[sel]->read() << 5;
|
data |= m_inputs[sel]->read() << 5;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(stratos_state::control_w)
|
void stratos_state::power_off()
|
||||||
{
|
{
|
||||||
u8 prev = m_control;
|
m_power = false;
|
||||||
|
|
||||||
m_control = data;
|
|
||||||
m_rombank->set_entry(data >> 0 & 1);
|
|
||||||
m_extbank->set_entry(data >> 1 & 1); // ?
|
|
||||||
m_nvrambank->set_entry((data >> 1) & 1);
|
|
||||||
|
|
||||||
show_leds();
|
|
||||||
|
|
||||||
// d6 falling edge: power-off request
|
|
||||||
if (~data & prev & 0x40)
|
|
||||||
{
|
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
|
|
||||||
// clear display
|
// clear display
|
||||||
m_display->matrix(0, 0);
|
m_display->matrix(0, 0);
|
||||||
}
|
|
||||||
|
std::fill_n(m_lcd_data, ARRAY_LENGTH(m_lcd_data), 0);
|
||||||
|
update_lcd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(stratos_state::control_w)
|
||||||
|
{
|
||||||
|
u8 prev = m_control;
|
||||||
|
m_control = data;
|
||||||
|
|
||||||
|
// d0: main rom bank
|
||||||
|
// d1: ext rom bank
|
||||||
|
// d1: nvram bank?
|
||||||
|
m_rombank->set_entry(data >> 0 & 1);
|
||||||
|
m_nvrambank->set_entry((data >> 1) & 1);
|
||||||
|
|
||||||
|
// d2: mode led state
|
||||||
|
// d5: button leds select
|
||||||
|
update_leds();
|
||||||
|
|
||||||
|
// d6 falling edge: power-off request
|
||||||
|
if (~data & prev & 0x40)
|
||||||
|
power_off();
|
||||||
|
}
|
||||||
|
|
||||||
|
void stratos_state::update_lcd()
|
||||||
|
{
|
||||||
|
// output individual segments
|
||||||
|
for (int i = 0; i < 0x40; i++)
|
||||||
|
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?
|
||||||
|
|
||||||
|
// upper digits
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
m_out_digit[i + 1] = (m_lcd_data[0x01 + i * 2] << 4 | m_lcd_data[0x01 + i * 2 + 1]) & 0x7f;
|
||||||
|
|
||||||
|
// lower digits
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
m_out_digit[i + 5] = (m_lcd_data[0x11 + i * 2] << 4 | m_lcd_data[0x11 + i * 2 + 1]) & 0x7f;
|
||||||
|
}
|
||||||
|
|
||||||
READ8_MEMBER(stratos_state::lcd_r)
|
READ8_MEMBER(stratos_state::lcd_r)
|
||||||
{
|
{
|
||||||
|
// unknown, maybe resets lcd controller
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(stratos_state::lcd_w)
|
WRITE8_MEMBER(stratos_state::lcd_w)
|
||||||
{
|
{
|
||||||
m_lcd_data = data;
|
// d0-d3: lcd data
|
||||||
m_lcd_written = true;
|
// d4-d7: unused?
|
||||||
|
data &= 0xf;
|
||||||
|
|
||||||
|
if (m_lcd_count == 0)
|
||||||
|
m_lcd_address = data;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// write to lcd row
|
||||||
|
if (m_lcd_address > 0 && m_lcd_address <= 4)
|
||||||
|
m_lcd_data[(((m_lcd_address - 1) << 4) + (m_lcd_count - 1)) & 0x3f] = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// it expects a specific number of writes for each row
|
||||||
|
const u8 maxcount[5] = { 1, 9, 9, 1, 12 };
|
||||||
|
if (m_lcd_address > 4 || m_lcd_count == maxcount[m_lcd_address])
|
||||||
|
{
|
||||||
|
m_lcd_count = 0;
|
||||||
|
update_lcd();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_lcd_count++;
|
||||||
|
|
||||||
m_lcd_busy->adjust(attotime::from_usec(50)); // ?
|
m_lcd_busy->adjust(attotime::from_usec(50)); // ?
|
||||||
}
|
}
|
||||||
@ -235,7 +320,7 @@ void stratos_state::main_map(address_map &map)
|
|||||||
map(0x2600, 0x2600).rw(FUNC(stratos_state::control_r), FUNC(stratos_state::control_w));
|
map(0x2600, 0x2600).rw(FUNC(stratos_state::control_r), FUNC(stratos_state::control_w));
|
||||||
map(0x2800, 0x37ff).bankrw("nvrambank");
|
map(0x2800, 0x37ff).bankrw("nvrambank");
|
||||||
map(0x3800, 0x3800).rw(FUNC(stratos_state::lcd_r), FUNC(stratos_state::lcd_w));
|
map(0x3800, 0x3800).rw(FUNC(stratos_state::lcd_r), FUNC(stratos_state::lcd_w));
|
||||||
map(0x4000, 0x7fff).bankr("extbank");
|
map(0x4000, 0x7fff).r(FUNC(stratos_state::extrom_r));
|
||||||
map(0x8000, 0xffff).bankr("rombank");
|
map(0x8000, 0xffff).bankr("rombank");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,8 +365,14 @@ static INPUT_PORTS_START( stratos )
|
|||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Analysis")
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Analysis")
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Normal")
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Normal")
|
||||||
|
|
||||||
|
PORT_START("IN.8")
|
||||||
|
PORT_CONFNAME( 0x80, 0x80, "Battery Status" )
|
||||||
|
PORT_CONFSETTING( 0x00, "Low" )
|
||||||
|
PORT_CONFSETTING( 0x80, DEF_STR( Normal ) )
|
||||||
|
|
||||||
PORT_START("RESET")
|
PORT_START("RESET")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_state, go_button, nullptr) PORT_NAME("Go")
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_state, go_button, nullptr) PORT_NAME("Go")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_state, acl_button, nullptr) PORT_NAME("ACL")
|
||||||
|
|
||||||
PORT_START("FAKE")
|
PORT_START("FAKE")
|
||||||
PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_state, cpu_freq, nullptr) // factory set
|
PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, stratos_state, cpu_freq, nullptr) // factory set
|
||||||
@ -301,6 +392,7 @@ void stratos_state::stratos(machine_config &config)
|
|||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M65C02(config, m_maincpu, 5_MHz_XTAL); // see set_cpu_freq
|
M65C02(config, m_maincpu, 5_MHz_XTAL); // see set_cpu_freq
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &stratos_state::main_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &stratos_state::main_map);
|
||||||
|
m_maincpu->set_periodic_int(FUNC(stratos_state::irq0_line_hold), attotime::from_hz(75));
|
||||||
|
|
||||||
NVRAM(config, "nvram.u6", nvram_device::DEFAULT_ALL_0);
|
NVRAM(config, "nvram.u6", nvram_device::DEFAULT_ALL_0);
|
||||||
NVRAM(config, "nvram.u7", nvram_device::DEFAULT_ALL_0);
|
NVRAM(config, "nvram.u7", nvram_device::DEFAULT_ALL_0);
|
||||||
@ -309,7 +401,6 @@ void stratos_state::stratos(machine_config &config)
|
|||||||
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
|
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
|
||||||
m_board->set_delay(attotime::from_msec(350));
|
m_board->set_delay(attotime::from_msec(350));
|
||||||
|
|
||||||
TIMER(config, "irqtimer").configure_generic(FUNC(stratos_state::interrupt));
|
|
||||||
TIMER(config, "lcd_busy").configure_generic(timer_device::expired_delegate());
|
TIMER(config, "lcd_busy").configure_generic(timer_device::expired_delegate());
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -320,6 +411,12 @@ void stratos_state::stratos(machine_config &config)
|
|||||||
SPEAKER(config, "speaker").front_center();
|
SPEAKER(config, "speaker").front_center();
|
||||||
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||||
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
||||||
|
|
||||||
|
/* extension rom */
|
||||||
|
GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr", "bin");
|
||||||
|
m_extrom->set_device_load(FUNC(stratos_state::extrom_load), this);
|
||||||
|
|
||||||
|
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr");
|
||||||
}
|
}
|
||||||
|
|
||||||
void stratos_state::corona(machine_config &config)
|
void stratos_state::corona(machine_config &config)
|
||||||
@ -342,63 +439,52 @@ ROM_START( stratos )
|
|||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("w1y01f_728m_u3.u3", 0x0000, 0x8000, CRC(b58a7256) SHA1(75b3a3a65f4ca8d52aa5b17a06319bff59d9014f) )
|
ROM_LOAD("w1y01f_728m_u3.u3", 0x0000, 0x8000, CRC(b58a7256) SHA1(75b3a3a65f4ca8d52aa5b17a06319bff59d9014f) )
|
||||||
ROM_LOAD("bw1_819n_u4.u4", 0x8000, 0x8000, CRC(cb0de631) SHA1(f78d40213be21775966cbc832d64acd9b73de632) )
|
ROM_LOAD("bw1_819n_u4.u4", 0x8000, 0x8000, CRC(cb0de631) SHA1(f78d40213be21775966cbc832d64acd9b73de632) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( stratosl )
|
ROM_START( stratosa )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("w1y01f_728l_u3.u3", 0x0000, 0x8000, CRC(19a22058) SHA1(a5ca54d870c70b7ce9c7be2951800bf49cc57527) )
|
ROM_LOAD("w1y01f_728l_u3.u3", 0x0000, 0x8000, CRC(19a22058) SHA1(a5ca54d870c70b7ce9c7be2951800bf49cc57527) )
|
||||||
ROM_LOAD("bw1_819n_u4.u4", 0x8000, 0x8000, CRC(cb0de631) SHA1(f78d40213be21775966cbc832d64acd9b73de632) )
|
ROM_LOAD("bw1_819n_u4.u4", 0x8000, 0x8000, CRC(cb0de631) SHA1(f78d40213be21775966cbc832d64acd9b73de632) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( tking )
|
ROM_START( tking ) // PCB rev. 10
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("y01f_713d_u3.u3", 0x0000, 0x8000, CRC(b8c6d853) SHA1(98923f44bbbd2ea17c269850971d3df229e6057e) )
|
ROM_LOAD("y01f_713d_u3.u3", 0x0000, 0x8000, CRC(b8c6d853) SHA1(98923f44bbbd2ea17c269850971d3df229e6057e) )
|
||||||
ROM_LOAD("y01f_712a_u4.u4", 0x8000, 0x8000, CRC(7d3f8f7b) SHA1(8be5d8d988ff0577ccfec0a773bfd94599f2534f) )
|
ROM_LOAD("y01f_712a_u4.u4", 0x8000, 0x8000, CRC(7d3f8f7b) SHA1(8be5d8d988ff0577ccfec0a773bfd94599f2534f) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( tkingl )
|
ROM_START( tkinga ) // PCB rev. 3, also PCB rev. 5
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("w1y01f_728l_u3.u3", 0x0000, 0x8000, CRC(19a22058) SHA1(a5ca54d870c70b7ce9c7be2951800bf49cc57527) )
|
ROM_LOAD("w1y01f_728l_u3.u3", 0x0000, 0x8000, CRC(19a22058) SHA1(a5ca54d870c70b7ce9c7be2951800bf49cc57527) )
|
||||||
ROM_LOAD("y01f-b_819o_u4.u4", 0x8000, 0x8000, CRC(336040d4) SHA1(aca662b8cc4d6bafd61ca158c768ba8896117169) )
|
ROM_LOAD("y01f-b_819o_u4.u4", 0x8000, 0x8000, CRC(336040d4) SHA1(aca662b8cc4d6bafd61ca158c768ba8896117169) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( tkingp )
|
ROM_START( tkingb ) // PCB rev. 7
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("w1y01f_728p_u3.u3", 0x0000, 0x8000, CRC(ad77f83e) SHA1(598fdb1e40267d9d43a3d8f287723070b9afa349) )
|
ROM_LOAD("w1y01f_728p_u3.u3", 0x0000, 0x8000, CRC(ad77f83e) SHA1(598fdb1e40267d9d43a3d8f287723070b9afa349) )
|
||||||
ROM_LOAD("y01f-b_819o_u4.u4", 0x8000, 0x8000, CRC(336040d4) SHA1(aca662b8cc4d6bafd61ca158c768ba8896117169) )
|
ROM_LOAD("y01f-b_819o_u4.u4", 0x8000, 0x8000, CRC(336040d4) SHA1(aca662b8cc4d6bafd61ca158c768ba8896117169) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( corona )
|
ROM_START( corona )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("w2_708g_u2-a.u2", 0x0000, 0x8000, CRC(52568bb4) SHA1(83fe91787e17bbefc2b3ec651ddb11c88990060d) )
|
ROM_LOAD("w2_708g_u2.u2", 0x0000, 0x8000, CRC(52568bb4) SHA1(83fe91787e17bbefc2b3ec651ddb11c88990060d) )
|
||||||
ROM_LOAD("bw2_708a_u3-b.u3", 0x8000, 0x8000, CRC(32848f73) SHA1(a447543e3eb4757f9afed26fde77b66985eb96a7) )
|
ROM_LOAD("bw2_708a_u3.u3", 0x8000, 0x8000, CRC(32848f73) SHA1(a447543e3eb4757f9afed26fde77b66985eb96a7) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "ext", 0 )
|
ROM_START( coronaa )
|
||||||
ROM_FILL( 0x0000, 0x8000, 0xff )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("w2_a14c_u2.u2", 0x0000, 0x8000, CRC(be82e199) SHA1(cfcc573774b6907ed137dca01fa7f3fce493a89f) )
|
||||||
|
ROM_LOAD("bw2_a14_u3.u3", 0x8000, 0x8000, CRC(abe87285) SHA1(b15f7ddeac78d252cf413ba4085523e44c6d15df) )
|
||||||
ROM_END
|
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 (rev. M)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1986, stratos, 0, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1986, stratosl, stratos, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (rev. L)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1986, stratosa, stratos, 0, stratos, stratos, stratos_state, empty_init, "SciSys", "Kasparov Stratos (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
|
||||||
CONS( 1990, tking, 0, 0, tking2, tking2, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (rev. D)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) // aka Turbo King II
|
CONS( 1990, tking, 0, 0, tking2, tking2, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 1, ver. D)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Turbo King II
|
||||||
CONS( 1988, tkingl, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (rev. L)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1988, tkinga, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // oldest?
|
||||||
CONS( 1988, tkingp, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (rev. P)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1988, tkingb, tking, 0, stratos, stratos, stratos_state, empty_init, "Saitek", "Kasparov Turbo King (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
|
||||||
CONS( 1988, corona, 0, 0, corona, stratos, stratos_state, empty_init, "Saitek", "Kasparov Corona (rev. G)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1988, corona, 0, 0, corona, stratos, stratos_state, empty_init, "Saitek", "Kasparov Corona (ver. D+)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK ) // aka Corona II
|
||||||
|
CONS( 1988, coronaa, corona, 0, corona, stratos, stratos_state, empty_init, "Saitek", "Kasparov Corona (ver. D)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</element>
|
</element>
|
||||||
<element name="ldot" defstate="0">
|
<element name="ldot" defstate="0">
|
||||||
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
<rect state="0"><color red="0.1" green="0.1" blue="0.1" /></rect>
|
<rect state="0"><color red="0.12157" green="0.12157" blue="0.12157" /></rect>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="led" defstate="0">
|
<element name="led" defstate="0">
|
||||||
@ -606,8 +606,8 @@
|
|||||||
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.9" y="92.8" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.91" y="92.8" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.7" y="94.65" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.69" y="94.65" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</mamelayout>
|
</mamelayout>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</element>
|
</element>
|
||||||
<element name="ldot" defstate="0">
|
<element name="ldot" defstate="0">
|
||||||
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
<rect state="0"><color red="0.1" green="0.1" blue="0.1" /></rect>
|
<rect state="0"><color red="0.12157" green="0.12157" blue="0.12157" /></rect>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="led" defstate="0">
|
<element name="led" defstate="0">
|
||||||
@ -609,8 +609,8 @@
|
|||||||
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.9" y="92.8" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.91" y="92.8" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.7" y="94.65" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.69" y="94.65" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</mamelayout>
|
</mamelayout>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
</element>
|
</element>
|
||||||
<element name="ldot" defstate="0">
|
<element name="ldot" defstate="0">
|
||||||
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
<rect state="0"><color red="0.1" green="0.1" blue="0.1" /></rect>
|
<rect state="0"><color red="0.12157" green="0.12157" blue="0.12157" /></rect>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="led" defstate="0">
|
<element name="led" defstate="0">
|
||||||
@ -604,8 +604,8 @@
|
|||||||
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
<bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.9" y="92.8" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.91" y="92.8" width="0.6" height="0.6" /></bezel>
|
||||||
<bezel name="5.7" element="ldot"><bounds x="42.7" y="94.65" width="0.6" height="0.6" /></bezel>
|
<bezel name="5.7" element="ldot"><bounds x="42.69" y="94.65" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</mamelayout>
|
</mamelayout>
|
||||||
|
@ -4,8 +4,19 @@
|
|||||||
<!-- define elements -->
|
<!-- define elements -->
|
||||||
|
|
||||||
<element name="black"><rect><color red="0.21" green="0.2" blue="0.2" /></rect></element>
|
<element name="black"><rect><color red="0.21" green="0.2" blue="0.2" /></rect></element>
|
||||||
|
<element name="whitew"><rect><color red="1" green="1" blue="1" /></rect></element>
|
||||||
<element name="text_mode"><text string="Mode" align="1"><color red="0.36" green="0.35" blue="0.35" /></text></element>
|
<element name="text_mode"><text string="Mode" align="1"><color red="0.36" green="0.35" blue="0.35" /></text></element>
|
||||||
|
|
||||||
|
<!-- our digit element is bright-on-dark, this means the lcd panel is the wrong colour here -->
|
||||||
|
|
||||||
|
<element name="digit" defstate="0">
|
||||||
|
<led7seg><color red="1.0" green="1.0" blue="1.0" /></led7seg>
|
||||||
|
</element>
|
||||||
|
<element name="ldot" defstate="0">
|
||||||
|
<rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><color red="0.12157" green="0.12157" blue="0.12157" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
<element name="ledo">
|
<element name="ledo">
|
||||||
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
|
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||||
</element>
|
</element>
|
||||||
@ -462,6 +473,30 @@
|
|||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- lcd panel -->
|
||||||
|
|
||||||
|
<group name="lcd1">
|
||||||
|
<bounds x="15.5" y="0" width="22.5" height="14" />
|
||||||
|
|
||||||
|
<bezel name="digit0" element="digit"><bounds x="15.5" y="0" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit1" element="digit"><bounds x="20" y="0" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit2" element="digit"><bounds x="24" y="0" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit3" element="digit"><bounds x="30" y="0" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit4" element="digit"><bounds x="34" y="0" width="4" height="6" /></bezel>
|
||||||
|
|
||||||
|
<bezel name="lcd0.0.0" element="ldot"><bounds x="28.91" y="1.8" width="0.6" height="0.6" /></bezel>
|
||||||
|
<bezel name="lcd0.0.0" element="ldot"><bounds x="28.69" y="3.65" width="0.6" height="0.6" /></bezel>
|
||||||
|
|
||||||
|
<bezel name="digit5" element="digit"><bounds x="20" y="8" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit6" element="digit"><bounds x="24" y="8" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit7" element="digit"><bounds x="30" y="8" width="4" height="6" /></bezel>
|
||||||
|
<bezel name="digit8" element="digit"><bounds x="34" y="8" width="4" height="6" /></bezel>
|
||||||
|
|
||||||
|
<bezel name="lcd1.0.0" element="ldot"><bounds x="28.91" y="9.8" 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>
|
||||||
|
|
||||||
|
|
||||||
<!-- build screen -->
|
<!-- build screen -->
|
||||||
|
|
||||||
<view name="Internal Layout">
|
<view name="Internal Layout">
|
||||||
@ -470,6 +505,9 @@
|
|||||||
<group ref="sb_board"><bounds x="10" y="10" width="80" height="80" /></group>
|
<group ref="sb_board"><bounds x="10" y="10" width="80" height="80" /></group>
|
||||||
<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>
|
||||||
|
<bezel element="whitew"><bounds x="25.14" y="92.5" width="14.86" height="9" /><color alpha="0.125" /></bezel>
|
||||||
|
|
||||||
<!-- chessboard leds -->
|
<!-- chessboard leds -->
|
||||||
<element ref="ledo"><bounds x="8.6" y="14.2" width="0.6" height="1.6" /></element>
|
<element ref="ledo"><bounds x="8.6" y="14.2" width="0.6" height="1.6" /></element>
|
||||||
<element ref="ledo"><bounds x="8.6" y="24.2" width="0.6" height="1.6" /></element>
|
<element ref="ledo"><bounds x="8.6" y="24.2" width="0.6" height="1.6" /></element>
|
||||||
|
@ -34123,11 +34123,12 @@ montreux //
|
|||||||
|
|
||||||
@source:saitek_stratos.cpp
|
@source:saitek_stratos.cpp
|
||||||
corona
|
corona
|
||||||
|
coronaa
|
||||||
stratos
|
stratos
|
||||||
stratosl
|
stratosa
|
||||||
tking
|
tking
|
||||||
tkingl
|
tkinga
|
||||||
tkingp
|
tkingb
|
||||||
|
|
||||||
@source:sam.cpp
|
@source:sam.cpp
|
||||||
24_130 //
|
24_130 //
|
||||||
|
Loading…
Reference in New Issue
Block a user