openMSX
Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
openmsx::Renderer Class Referenceabstract

Abstract base class for Renderers. More...

#include <Renderer.hh>

Inheritance diagram for openmsx::Renderer:
Inheritance graph
[legend]
Collaboration diagram for openmsx::Renderer:
Collaboration graph
[legend]

Public Member Functions

virtual ~Renderer ()=default
 
virtual PostProcessorgetPostProcessor () const =0
 See VDP::getPostProcessor.
 
virtual void reInit ()=0
 Reinitialize Renderer state.
 
virtual void frameStart (EmuTime::param time)=0
 Signals the start of a new frame.
 
virtual void frameEnd (EmuTime::param time)=0
 Signals the end of a frame.
 
virtual void updateTransparency (bool enabled, EmuTime::param time)=0
 Informs the renderer of a VDP transparency enable/disable change.
 
virtual void updateSuperimposing (const RawFrame *videoSource, EmuTime::param time)=0
 Informs the renderer of a VDP superimposing change.
 
virtual void updateForegroundColor (byte color, EmuTime::param time)=0
 Informs the renderer of a VDP foreground color change.
 
virtual void updateBackgroundColor (byte color, EmuTime::param time)=0
 Informs the renderer of a VDP background color change.
 
virtual void updateBlinkForegroundColor (byte color, EmuTime::param time)=0
 Informs the renderer of a VDP blink foreground color change.
 
virtual void updateBlinkBackgroundColor (byte color, EmuTime::param time)=0
 Informs the renderer of a VDP blink background color change.
 
virtual void updateBlinkState (bool enabled, EmuTime::param time)=0
 Informs the renderer of a VDP blinking state change.
 
virtual void updatePalette (unsigned index, int grb, EmuTime::param time)=0
 Informs the renderer of a VDP palette change.
 
virtual void updateVerticalScroll (int scroll, EmuTime::param time)=0
 Informs the renderer of a vertical scroll change.
 
virtual void updateHorizontalScrollLow (byte scroll, EmuTime::param time)=0
 Informs the renderer of a horizontal scroll change: the lower scroll value has changed.
 
virtual void updateHorizontalScrollHigh (byte scroll, EmuTime::param time)=0
 Informs the renderer of a horizontal scroll change: the higher scroll value has changed.
 
virtual void updateBorderMask (bool masked, EmuTime::param time)=0
 Informs the renderer of a horizontal scroll change: the border mask has been enabled/disabled.
 
virtual void updateMultiPage (bool multiPage, EmuTime::param time)=0
 Informs the renderer of a horizontal scroll change: the multi page setting has changed.
 
virtual void updateHorizontalAdjust (int adjust, EmuTime::param time)=0
 Informs the renderer of a horizontal adjust change.
 
virtual void updateDisplayEnabled (bool enabled, EmuTime::param time)=0
 Informs the renderer of a VDP display enabled change.
 
virtual void updateDisplayMode (DisplayMode mode, EmuTime::param time)=0
 Informs the renderer of a VDP display mode change.
 
virtual void updateNameBase (unsigned addr, EmuTime::param time)=0
 Informs the renderer of a name table base address change.
 
virtual void updatePatternBase (unsigned addr, EmuTime::param time)=0
 Informs the renderer of a pattern table base address change.
 
virtual void updateColorBase (unsigned addr, EmuTime::param time)=0
 Informs the renderer of a color table base address change.
 
virtual void updateSpritesEnabled (bool enabled, EmuTime::param time)=0
 Informs the renderer of a VDP sprites enabled change.
 
- Public Member Functions inherited from openmsx::VRAMObserver
virtual void updateVRAM (unsigned offset, EmuTime::param time)=0
 Informs the observer of a change in VRAM contents.
 
virtual void updateWindow (bool enabled, EmuTime::param time)=0
 Informs the observer that the entire VRAM window will change.
 

Static Public Attributes

static constexpr std::array< uint16_t, 16 > GRAPHIC7_SPRITE_PALETTE
 Sprite palette in Graphic 7 mode.
 

Protected Member Functions

 Renderer ()=default
 
- Protected Member Functions inherited from openmsx::VRAMObserver
 ~VRAMObserver ()=default
 

Detailed Description

Abstract base class for Renderers.

A Renderer is a class that converts VDP state to visual information (for example, pixels on a screen).

The update methods are called exactly before the change occurs in the VDP, so that the renderer can update itself to the specified time using the old settings.

Definition at line 23 of file Renderer.hh.

Constructor & Destructor Documentation

◆ ~Renderer()

virtual openmsx::Renderer::~Renderer ( )
virtualdefault

◆ Renderer()

openmsx::Renderer::Renderer ( )
protecteddefault

Member Function Documentation

◆ frameEnd()

virtual void openmsx::Renderer::frameEnd ( EmuTime::param  time)
pure virtual

Signals the end of a frame.

Parameters
timeThe moment in emulated time the frame ends. Note: this is the same time stamp as the start of the next frame.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ frameStart()

virtual void openmsx::Renderer::frameStart ( EmuTime::param  time)
pure virtual

Signals the start of a new frame.

The Renderer can use this to get fixed-per-frame settings from the VDP, such as PAL/NTSC timing.

Parameters
timeThe moment in emulated time the frame starts.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ getPostProcessor()

virtual PostProcessor * openmsx::Renderer::getPostProcessor ( ) const
pure virtual

◆ reInit()

virtual void openmsx::Renderer::reInit ( )
pure virtual

Reinitialize Renderer state.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateBackgroundColor()

virtual void openmsx::Renderer::updateBackgroundColor ( byte  color,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP background color change.

Parameters
colorThe new background color.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateBlinkBackgroundColor()

virtual void openmsx::Renderer::updateBlinkBackgroundColor ( byte  color,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP blink background color change.

Parameters
colorThe new blink background color.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateBlinkForegroundColor()

virtual void openmsx::Renderer::updateBlinkForegroundColor ( byte  color,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP blink foreground color change.

Parameters
colorThe new blink foreground color.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateBlinkState()

virtual void openmsx::Renderer::updateBlinkState ( bool  enabled,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP blinking state change.

Parameters
enabledThe new blink state.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateBorderMask()

virtual void openmsx::Renderer::updateBorderMask ( bool  masked,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a horizontal scroll change: the border mask has been enabled/disabled.

Parameters
maskedtrue iff enabled.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateColorBase()

virtual void openmsx::Renderer::updateColorBase ( unsigned  addr,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a color table base address change.

Parameters
addrThe new base address.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateDisplayEnabled()

virtual void openmsx::Renderer::updateDisplayEnabled ( bool  enabled,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP display enabled change.

Both the regular border start/end and forced blanking by clearing the display enable bit are considered display enabled changes.

Parameters
enabledThe new display enabled state.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

Referenced by openmsx::VDPVRAM::updateDisplayEnabled().

◆ updateDisplayMode()

virtual void openmsx::Renderer::updateDisplayMode ( DisplayMode  mode,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP display mode change.

Parameters
modeThe new display mode.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

Referenced by openmsx::VDPVRAM::updateDisplayMode().

◆ updateForegroundColor()

virtual void openmsx::Renderer::updateForegroundColor ( byte  color,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP foreground color change.

Parameters
colorThe new foreground color.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateHorizontalAdjust()

virtual void openmsx::Renderer::updateHorizontalAdjust ( int  adjust,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a horizontal adjust change.

Note that there is no similar method for vertical adjust updates, because vertical adjust is calculated at start of frame and then fixed.

Parameters
adjustThe new adjust value.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateHorizontalScrollHigh()

virtual void openmsx::Renderer::updateHorizontalScrollHigh ( byte  scroll,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a horizontal scroll change: the higher scroll value has changed.

Parameters
scrollThe new scroll value.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateHorizontalScrollLow()

virtual void openmsx::Renderer::updateHorizontalScrollLow ( byte  scroll,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a horizontal scroll change: the lower scroll value has changed.

Parameters
scrollThe new scroll value.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateMultiPage()

virtual void openmsx::Renderer::updateMultiPage ( bool  multiPage,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a horizontal scroll change: the multi page setting has changed.

Parameters
multiPageThe new multi page flag.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateNameBase()

virtual void openmsx::Renderer::updateNameBase ( unsigned  addr,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a name table base address change.

Parameters
addrThe new base address.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updatePalette()

virtual void openmsx::Renderer::updatePalette ( unsigned  index,
int  grb,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP palette change.

Parameters
indexThe index [0..15] in the palette that changes.
grbThe new definition for the changed palette index: bit 10..8 is green, bit 6..4 is red and bit 2..0 is blue; all other bits are zero.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updatePatternBase()

virtual void openmsx::Renderer::updatePatternBase ( unsigned  addr,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a pattern table base address change.

Parameters
addrThe new base address.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateSpritesEnabled()

virtual void openmsx::Renderer::updateSpritesEnabled ( bool  enabled,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP sprites enabled change.

Parameters
enabledThe new sprites enabled state.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

Referenced by openmsx::VDPVRAM::updateSpritesEnabled().

◆ updateSuperimposing()

virtual void openmsx::Renderer::updateSuperimposing ( const RawFrame videoSource,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP superimposing change.

Parameters
videoSourceVideo that should be superimposed, nullptr if none.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateTransparency()

virtual void openmsx::Renderer::updateTransparency ( bool  enabled,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a VDP transparency enable/disable change.

Parameters
enabledThe new transparency state.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

◆ updateVerticalScroll()

virtual void openmsx::Renderer::updateVerticalScroll ( int  scroll,
EmuTime::param  time 
)
pure virtual

Informs the renderer of a vertical scroll change.

Parameters
scrollThe new scroll value.
timeThe moment in emulated time this change occurs.

Implemented in openmsx::DummyRenderer, and openmsx::PixelRenderer.

Member Data Documentation

◆ GRAPHIC7_SPRITE_PALETTE

constexpr std::array<uint16_t, 16> openmsx::Renderer::GRAPHIC7_SPRITE_PALETTE
staticconstexpr
Initial value:
= {
0x000, 0x002, 0x030, 0x032, 0x300, 0x302, 0x330, 0x332,
0x472, 0x007, 0x070, 0x077, 0x700, 0x707, 0x770, 0x777,
}

Sprite palette in Graphic 7 mode.

See page 98 of the V9938 data book. Each palette entry is a word in GRB format: bit 10..8 is green, bit 6..4 is red and bit 2..0 is blue.

Definition at line 186 of file Renderer.hh.


The documentation for this class was generated from the following file: