1#ifndef PIXELRENDERER_HH
2#define PIXELRENDERER_HH
13class EventDistributor;
24class VideoSourceSetting;
39 void frameEnd(EmuTime::param time)
override;
51 void updatePalette(
unsigned index,
int grb, EmuTime::param time)
override;
60 void updateVRAM(
unsigned offset, EmuTime::param time)
override;
61 void updateWindow(
bool enabled, EmuTime::param time)
override;
65 enum DrawType { DRAW_BORDER, DRAW_DISPLAY };
74 int startX,
int startY,
int endX,
int endY, DrawType drawType,
85 int startX,
int startY,
int endX,
int endY,
86 int clipL,
int clipR, DrawType drawType);
88 [[nodiscard]]
bool checkSync(
unsigned offset, EmuTime::param time)
const;
95 void sync(EmuTime::param time,
bool force =
false);
103 void renderUntil(EmuTime::param time);
125 const std::unique_ptr<Rasterizer> rasterizer;
127 float finishFrameDuration = 0.0f;
128 float frameSkipCounter = 999.0f;
156 bool prevRenderFrame =
false;
168 uint64_t lastPaintTime = 0;
Represents a VDP display mode.
Represents the output window/screen of openMSX.
Generic Gang-of-Four Observer class, templatized edition.
Generic implementation of a pixel-based Renderer.
void updateSuperimposing(const RawFrame *videoSource, EmuTime::param time) override
Informs the renderer of a VDP superimposing change.
void updateWindow(bool enabled, EmuTime::param time) override
Informs the observer that the entire VRAM window will change.
PostProcessor * getPostProcessor() const override
See VDP::getPostProcessor.
void updateColorBase(unsigned addr, EmuTime::param time) override
Informs the renderer of a color table base address change.
void updateBorderMask(bool masked, EmuTime::param time) override
Informs the renderer of a horizontal scroll change: the border mask has been enabled/disabled.
void updateVerticalScroll(int scroll, EmuTime::param time) override
Informs the renderer of a vertical scroll change.
void updateBlinkState(bool enabled, EmuTime::param time) override
Informs the renderer of a VDP blinking state change.
void updateTransparency(bool enabled, EmuTime::param time) override
Informs the renderer of a VDP transparency enable/disable change.
void updateDisplayMode(DisplayMode mode, EmuTime::param time) override
Informs the renderer of a VDP display mode change.
void updateHorizontalAdjust(int adjust, EmuTime::param time) override
Informs the renderer of a horizontal adjust change.
void updateVRAM(unsigned offset, EmuTime::param time) override
Informs the observer of a change in VRAM contents.
void frameEnd(EmuTime::param time) override
Signals the end of a frame.
void updateSpritesEnabled(bool enabled, EmuTime::param time) override
Informs the renderer of a VDP sprites enabled change.
void updateHorizontalScrollHigh(byte scroll, EmuTime::param time) override
Informs the renderer of a horizontal scroll change: the higher scroll value has changed.
void frameStart(EmuTime::param time) override
Signals the start of a new frame.
void updateBackgroundColor(byte color, EmuTime::param time) override
Informs the renderer of a VDP background color change.
void updateHorizontalScrollLow(byte scroll, EmuTime::param time) override
Informs the renderer of a horizontal scroll change: the lower scroll value has changed.
void updatePatternBase(unsigned addr, EmuTime::param time) override
Informs the renderer of a pattern table base address change.
~PixelRenderer() override
void updateMultiPage(bool multiPage, EmuTime::param time) override
Informs the renderer of a horizontal scroll change: the multi page setting has changed.
void reInit() override
Reinitialize Renderer state.
void updateNameBase(unsigned addr, EmuTime::param time) override
Informs the renderer of a name table base address change.
void updatePalette(unsigned index, int grb, EmuTime::param time) override
Informs the renderer of a VDP palette change.
void updateBlinkBackgroundColor(byte color, EmuTime::param time) override
Informs the renderer of a VDP blink background color change.
void updateForegroundColor(byte color, EmuTime::param time) override
Informs the renderer of a VDP foreground color change.
void updateDisplayEnabled(bool enabled, EmuTime::param time) override
Informs the renderer of a VDP display enabled change.
void updateBlinkForegroundColor(byte color, EmuTime::param time) override
Informs the renderer of a VDP blink foreground color change.
A post processor builds the frame that is displayed from the MSX frame, while applying effects such a...
A video frame as output by the VDP scanline conversion unit, before any postprocessing filters are ap...
Class containing all settings for renderers.
Accuracy
Render accuracy: granularity of the rendered area.
Abstract base class for Renderers.
Manages the desired ratio between EmuTime and real time.
Manages the throttle state of openMSX.
Manages VRAM contents and synchronizes the various users of the VRAM.
Unified implementation of MSX Video Display Processors (VDPs).
This file implemented 3 utility functions: