From 5aca2139f6391d021523abee6f6273cbcda559c0 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 21 Jan 2024 22:10:28 +0100 Subject: [PATCH] smchess/chesstrvi: add svg screen for lcd --- src/mame/hegenerglaser/academy.cpp | 1 - src/mame/layout/omar2.lay | 2 +- src/mame/layout/saitek_chesstrvi.lay | 38 +++++--------------- src/mame/layout/saitek_minichess.lay | 53 +++------------------------- src/mame/saitek/chesstrv.cpp | 33 ++++++++++++----- src/mame/saitek/minichess.cpp | 14 ++++++-- src/mame/tryom/omar.cpp | 8 ++--- 7 files changed, 56 insertions(+), 93 deletions(-) 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); }