summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/screen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/screen.h')
-rw-r--r--src/emu/screen.h49
1 files changed, 14 insertions, 35 deletions
diff --git a/src/emu/screen.h b/src/emu/screen.h
index d3f4ce418b1..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,12 +225,12 @@ 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;
m_height = vtotal;
- m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1);
+ m_visarea.set(hbend, hbstart ? hbstart - 1 : htotal - 1, vbend, vbstart - 1);
return *this;
}
screen_device &set_raw(const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart)
@@ -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);
@@ -552,13 +540,4 @@ DECLARE_DEVICE_TYPE(SCREEN, screen_device)
// iterator helper
typedef device_type_enumerator<screen_device> screen_device_enumerator;
-/*!
- @defgroup Screen device configuration functions
- @{
- @def set_type
- Modify the screen device type
- @see screen_type_enum
- @}
- */
-
#endif // MAME_EMU_SCREEN_H