From 200d0b75cd25d20997a5654ea2dc242705df2180 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 20 May 2021 16:06:40 +0200 Subject: saitek_osa: add embedded screen --- src/devices/bus/saitek_osa/expansion.cpp | 19 +++++++++++++++++++ src/devices/bus/saitek_osa/expansion.h | 7 +++++++ src/mame/drivers/saitek_leonardo.cpp | 2 +- src/mame/drivers/saitek_renaissance.cpp | 4 ++-- src/mame/layout/saitek_leonardo.lay | 3 +++ src/mame/layout/saitek_renaissance.lay | 3 +++ 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/devices/bus/saitek_osa/expansion.cpp b/src/devices/bus/saitek_osa/expansion.cpp index b984d4b937c..afae7b15a56 100644 --- a/src/devices/bus/saitek_osa/expansion.cpp +++ b/src/devices/bus/saitek_osa/expansion.cpp @@ -62,6 +62,20 @@ void saitekosa_expansion_device::device_start() save_item(NAME(m_ack)); } +//------------------------------------------------- +// device_add_mconfig - add device configuration +//------------------------------------------------- + +void saitekosa_expansion_device::device_add_mconfig(machine_config &config) +{ + // optional embedded screen + auto &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(60); + screen.set_size(100, 100); + screen.set_visarea_full(); + screen.set_screen_update(FUNC(saitekosa_expansion_device::screen_update)); +} + //------------------------------------------------- // host to module interface //------------------------------------------------- @@ -102,6 +116,11 @@ void saitekosa_expansion_device::ack_w(int state) m_ack = state; } +u32 saitekosa_expansion_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return (m_module) ? m_module->screen_update(screen, bitmap, cliprect) : UPDATE_HAS_NOT_CHANGED; +} + //************************************************************************** // MODULE INTERFACE diff --git a/src/devices/bus/saitek_osa/expansion.h b/src/devices/bus/saitek_osa/expansion.h index 2e6727d3f1b..35449118b84 100644 --- a/src/devices/bus/saitek_osa/expansion.h +++ b/src/devices/bus/saitek_osa/expansion.h @@ -29,6 +29,8 @@ #pragma once +#include "screen.h" + //************************************************************************** // TYPE DEFINITIONS @@ -76,11 +78,14 @@ public: protected: // device-level overrides virtual void device_start() override; + virtual void device_add_mconfig(machine_config &config) override; private: devcb_write_line m_stb_handler; devcb_write_line m_rts_handler; + u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + // input pins state u8 m_data = 0; int m_nmi = 0; @@ -102,6 +107,8 @@ public: virtual void nmi_w(int state) { } virtual void ack_w(int state) { } + virtual u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return UPDATE_HAS_NOT_CHANGED; } + protected: device_saitekosa_expansion_interface(const machine_config &mconfig, device_t &device); diff --git a/src/mame/drivers/saitek_leonardo.cpp b/src/mame/drivers/saitek_leonardo.cpp index 4b8bebda759..e985306a4de 100644 --- a/src/mame/drivers/saitek_leonardo.cpp +++ b/src/mame/drivers/saitek_leonardo.cpp @@ -173,7 +173,7 @@ void leo_state::exp_stb_w(int state) void leo_state::exp_rts_w(int state) { - // ? + // NAND with ACK-P? (not used by module) machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); } diff --git a/src/mame/drivers/saitek_renaissance.cpp b/src/mame/drivers/saitek_renaissance.cpp index 396fc2e3db0..7bda77e4416 100644 --- a/src/mame/drivers/saitek_renaissance.cpp +++ b/src/mame/drivers/saitek_renaissance.cpp @@ -184,7 +184,7 @@ void ren_state::exp_stb_w(int state) void ren_state::exp_rts_w(int state) { - // ? + // NAND with ACK-P? (not used by module) machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); } @@ -342,7 +342,7 @@ void ren_state::ren(machine_config &config) m_lcd_pwm->set_refresh(attotime::from_hz(30)); m_lcd_pwm->output_x().set(FUNC(ren_state::lcd_pwm_w)); - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + auto &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_refresh_hz(60); screen.set_size(873/2, 1080/2); screen.set_visarea_full(); diff --git a/src/mame/layout/saitek_leonardo.lay b/src/mame/layout/saitek_leonardo.lay index 088c8de124a..d63bfd10283 100644 --- a/src/mame/layout/saitek_leonardo.lay +++ b/src/mame/layout/saitek_leonardo.lay @@ -502,5 +502,8 @@ license:CC0 + + + diff --git a/src/mame/layout/saitek_renaissance.lay b/src/mame/layout/saitek_renaissance.lay index 3e457dbc001..f84f21f42db 100644 --- a/src/mame/layout/saitek_renaissance.lay +++ b/src/mame/layout/saitek_renaissance.lay @@ -486,5 +486,8 @@ license:CC0 + + + -- cgit v1.2.3