diff --git a/src/mame/hegenerglaser/academy.cpp b/src/mame/hegenerglaser/academy.cpp
index afcb5cff306..4747486222e 100644
--- a/src/mame/hegenerglaser/academy.cpp
+++ b/src/mame/hegenerglaser/academy.cpp
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco, hap
-// thanks-to:yoyo_chessboard
/*******************************************************************************
Mephisto Academy
diff --git a/src/mame/layout/omar2.lay b/src/mame/layout/omar2.lay
index 2db01f15f5d..8cff01814ff 100644
--- a/src/mame/layout/omar2.lay
+++ b/src/mame/layout/omar2.lay
@@ -8,7 +8,7 @@ license:CC0-1.0
-
+
diff --git a/src/mame/layout/saitek_chesstrvi.lay b/src/mame/layout/saitek_chesstrvi.lay
index 1a0562a6fd2..fa898cfb83e 100644
--- a/src/mame/layout/saitek_chesstrvi.lay
+++ b/src/mame/layout/saitek_chesstrvi.lay
@@ -9,9 +9,10 @@ license:CC0-1.0
-
+
+
@@ -56,29 +57,6 @@ license:CC0-1.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -147,12 +125,14 @@ license:CC0-1.0
-
+
-
-
-
-
+
+
+
+
+
+
diff --git a/src/mame/layout/saitek_minichess.lay b/src/mame/layout/saitek_minichess.lay
index 81d55c7ad14..be896102744 100644
--- a/src/mame/layout/saitek_minichess.lay
+++ b/src/mame/layout/saitek_minichess.lay
@@ -11,6 +11,7 @@ license:CC0-1.0
+
@@ -64,57 +65,13 @@ license:CC0-1.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/src/mame/saitek/chesstrv.cpp b/src/mame/saitek/chesstrv.cpp
index b5f64a0aae3..ebbd883449d 100644
--- a/src/mame/saitek/chesstrv.cpp
+++ b/src/mame/saitek/chesstrv.cpp
@@ -41,17 +41,17 @@ closer to 6MHz. This was confirmed by hooking up a 6MHz XTAL, taking around
Both chesscomputers have a cheap RC circuit for the MCU clock, it seems that
electronically measuring them affected the frequency.
-TODO:
-- add low-battery indicator? useless since it's not software-controlled
-
*******************************************************************************/
#include "emu.h"
+
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
#include "machine/timer.h"
#include "video/pwm.h"
+#include "screen.h"
+
// internal artwork
#include "saitek_chesstrv.lh"
#include "saitek_chesstrvi.lh"
@@ -74,6 +74,9 @@ public:
void chesstrv(machine_config &config);
void chesstrvi(machine_config &config);
+ // battery status indicator is not software controlled
+ DECLARE_INPUT_CHANGED_MEMBER(battery) { update_display(); }
+
protected:
virtual void machine_start() override;
@@ -83,7 +86,7 @@ private:
required_device m_display;
optional_device m_comp_timer;
output_finder<> m_computing;
- required_ioport_array<4> m_inputs;
+ required_ioport_array<5> m_inputs;
std::unique_ptr m_ram;
u8 m_ram_address = 0;
@@ -125,11 +128,10 @@ void chesstrv_state::machine_start()
I/O
*******************************************************************************/
-// F3870 ports
-
void chesstrv_state::update_display()
{
- m_display->matrix(~m_inp_mux, m_7seg_data);
+ u8 battery = m_inputs[4]->read() << 7 & 0x80;
+ m_display->matrix(~m_inp_mux, m_7seg_data | battery);
}
void chesstrv_state::digit_w(u8 data)
@@ -219,6 +221,11 @@ static INPUT_PORTS_START( chesstrv )
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("MM") // multi move
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.4")
+ PORT_CONFNAME( 0x01, 0x00, "Battery Status" ) PORT_CHANGED_MEMBER(DEVICE_SELF, chesstrv_state, battery, 0)
+ PORT_CONFSETTING( 0x01, "Low" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
INPUT_PORTS_END
static INPUT_PORTS_START( chesstrvi )
@@ -254,8 +261,9 @@ void chesstrv_state::chesstrv(machine_config &config)
psu.write_b().set(FUNC(chesstrv_state::matrix_w));
// video hardware
- PWM_DISPLAY(config, m_display).set_size(4, 7);
+ PWM_DISPLAY(config, m_display).set_size(4, 8);
m_display->set_segmask(0xf, 0x7f);
+ m_display->set_segmask(0x1, 0xff); // DP for low battery
config.set_default_layout(layout_saitek_chesstrv);
}
@@ -269,6 +277,12 @@ void chesstrv_state::chesstrvi(machine_config &config)
TIMER(config, m_comp_timer).configure_generic(FUNC(chesstrv_state::computing));
config.set_default_layout(layout_saitek_chesstrvi);
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(60);
+ screen.set_size(1920/2, 567/2);
+ screen.set_visarea_full();
}
@@ -285,6 +299,9 @@ ROM_END
ROM_START( chesstrvi )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD("sl90594.u3", 0x0000, 0x0800, CRC(9162e89a) SHA1(c3f71365b73b0112aae09f11722bd78186c78408) )
+
+ ROM_REGION( 48655, "screen", 0 )
+ ROM_LOAD("chesstrvi.svg", 0, 48655, CRC(13aa3a99) SHA1(6ea2c55dc8c617532455c4754da9bcc5cad170e2) )
ROM_END
} // anonymous namespace
diff --git a/src/mame/saitek/minichess.cpp b/src/mame/saitek/minichess.cpp
index 7fe5827bfad..3018503cecf 100644
--- a/src/mame/saitek/minichess.cpp
+++ b/src/mame/saitek/minichess.cpp
@@ -26,10 +26,13 @@ It works on the old A34 MCU because the game keeps reading D0 while computing.
*******************************************************************************/
#include "emu.h"
+
#include "cpu/hmcs40/hmcs40.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "video/pwm.h"
+
+#include "screen.h"
#include "speaker.h"
// internal artwork
@@ -189,10 +192,14 @@ void mini_state::smchess(machine_config &config)
PWM_DISPLAY(config, m_display).set_size(4, 8);
m_display->set_segmask(0xf, 0x7f);
m_display->set_refresh(attotime::from_hz(30));
+ config.set_default_layout(layout_saitek_minichess);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_refresh_hz(60);
+ screen.set_size(1920/2.5, 567/2.5);
+ screen.set_visarea_full();
TIMER(config, m_comp_timer).configure_generic(FUNC(mini_state::computing));
-
- config.set_default_layout(layout_saitek_minichess);
}
@@ -204,6 +211,9 @@ void mini_state::smchess(machine_config &config)
ROM_START( smchess )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD("44801a34_proj_t", 0x0000, 0x2000, CRC(be71f1c0) SHA1(6b4d5c8f8491c82bdec1938bd83c14e826ff3e30) )
+
+ ROM_REGION( 48645, "screen", 0 )
+ ROM_LOAD("smchess.svg", 0, 48645, CRC(19beaa99) SHA1(2d738bd6953dfd7a2c8c37814badd0aac2960c8c) )
ROM_END
} // anonymous namespace
diff --git a/src/mame/tryom/omar.cpp b/src/mame/tryom/omar.cpp
index 2f13db9e090..1170818731b 100644
--- a/src/mame/tryom/omar.cpp
+++ b/src/mame/tryom/omar.cpp
@@ -339,14 +339,14 @@ void omar2_state::omar2(machine_config &config)
m_psu->write_b().append(FUNC(omar2_state::display4_w));
// video hardware
+ PWM_DISPLAY(config.replace(), m_display).set_size(1, 32);
+ m_display->set_bri_levels(0.25);
+ config.set_default_layout(layout_omar2);
+
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_refresh_hz(60);
screen.set_size(1920/2.5, 412/2.5);
screen.set_visarea_full();
-
- PWM_DISPLAY(config.replace(), m_display).set_size(1, 32);
- m_display->set_bri_levels(0.25);
- config.set_default_layout(layout_omar2);
}