diff options
Diffstat (limited to 'src/emu/screen.h')
-rw-r--r-- | src/emu/screen.h | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/src/emu/screen.h b/src/emu/screen.h index b909c25cecc..a2d9e7f7f2e 100644 --- a/src/emu/screen.h +++ b/src/emu/screen.h @@ -13,6 +13,8 @@ #pragma once +#include "rendertypes.h" + #include <type_traits> #include <utility> @@ -31,16 +33,6 @@ enum screen_type_enum SCREEN_TYPE_SVG }; -// texture formats -enum texture_format -{ - TEXFORMAT_UNDEFINED = 0, // require a format to be specified - TEXFORMAT_PALETTE16, // 16bpp palettized, no alpha - TEXFORMAT_RGB32, // 32bpp 8-8-8 RGB - TEXFORMAT_ARGB32, // 32bpp 8-8-8-8 ARGB - TEXFORMAT_YUY16 // 16bpp 8-8 Y/Cb, Y/Cr in sequence -}; - // screen_update callback flags constexpr u32 UPDATE_HAS_NOT_CHANGED = 0x0001; // the video has not changed @@ -233,7 +225,7 @@ public: screen_device &set_raw(u32 pixclock, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) { assert(pixclock != 0); - m_clock = pixclock; + set_clock(pixclock); m_refresh = HZ_TO_ATTOSECONDS(pixclock) * htotal * vtotal; m_vblank = m_refresh / vtotal * (vtotal - (vbstart - vbend)); m_width = htotal; @@ -246,6 +238,10 @@ public: xtal.validate(std::string("Configuring screen ") + tag()); return set_raw(xtal.value(), htotal, hbend, hbstart, vtotal, vbend, vbstart); } + screen_device &set_raw(const XTAL &xtal, u16 htotal, u16 vtotal, rectangle visarea) + { + return set_raw(xtal, htotal, visarea.left(), visarea.right() + 1, vtotal, visarea.top(), visarea.bottom() + 1); + } void set_refresh(attoseconds_t rate) { m_refresh = rate; } /// \brief Set refresh rate in Hertz @@ -389,8 +385,8 @@ public: // beam positioning and state int vpos() const; int hpos() const; - DECLARE_READ_LINE_MEMBER(vblank) const { return (machine().time() < m_vblank_end_time) ? 1 : 0; } - DECLARE_READ_LINE_MEMBER(hblank) const { int const curpos = hpos(); return (curpos < m_visarea.left() || curpos > m_visarea.right()) ? 1 : 0; } + int vblank() const { return (machine().time() < m_vblank_end_time) ? 1 : 0; } + int hblank() const { int const curpos = hpos(); return (curpos < m_visarea.left() || curpos > m_visarea.right()) ? 1 : 0; } // timing attotime time_until_pos(int vpos, int hpos = 0) const; @@ -428,15 +424,6 @@ public: private: class svg_renderer; - // timer IDs - enum - { - TID_VBLANK_START, - TID_VBLANK_END, - TID_SCANLINE0, - TID_SCANLINE - }; - // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; virtual void device_config_complete() override; @@ -445,13 +432,14 @@ private: virtual void device_reset() override; virtual void device_stop() override; virtual void device_post_load() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // internal helpers void set_container(render_container &container) { m_container = &container; } void realloc_screen_bitmaps(); - void vblank_begin(); - void vblank_end(); + TIMER_CALLBACK_MEMBER(vblank_begin); + TIMER_CALLBACK_MEMBER(vblank_end); + TIMER_CALLBACK_MEMBER(first_scanline_tick); + TIMER_CALLBACK_MEMBER(scanline_tick); void finalize_burnin(); void load_effect_overlay(const char *filename); void update_scan_bitmap_size(int y); |