openMSX
Public Member Functions | List of all members
openmsx::PixelRenderer Class Referencefinal

Generic implementation of a pixel-based Renderer. More...

#include <PixelRenderer.hh>

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

Public Member Functions

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

Additional Inherited Members

- Static Public Attributes inherited from openmsx::Renderer
static const uint8_t TMS99X8A_PALETTE [16][3]
 NTSC version of the MSX1 palette. More...
 
static const uint8_t TOSHIBA_PALETTE [16][3]
 The MSX1 palette of the Toshiba T6950 and T7937A. More...
 
static const uint16_t GRAPHIC7_SPRITE_PALETTE [16]
 Sprite palette in Graphic 7 mode. More...
 
- Protected Member Functions inherited from openmsx::Renderer
 Renderer ()
 
- Protected Member Functions inherited from openmsx::VRAMObserver
 ~VRAMObserver ()
 

Detailed Description

Generic implementation of a pixel-based Renderer.

Uses a Rasterizer to plot actual pixels for a specific video system.

Definition at line 27 of file PixelRenderer.hh.

Constructor & Destructor Documentation

openmsx::PixelRenderer::PixelRenderer ( VDP vdp,
Display display 
)
openmsx::PixelRenderer::~PixelRenderer ( )

Member Function Documentation

void openmsx::PixelRenderer::frameEnd ( EmuTime::param  time)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 208 of file PixelRenderer.cc.

References openmsx::EventDistributor::distributeEvent(), openmsx::BooleanSetting::getBoolean(), openmsx::RenderSettings::getDeinterlace(), openmsx::VideoSourceSetting::getSource(), openmsx::Timer::getTime(), openmsx::VDP::isEvenOddEnabled(), and openmsx::VDP::isInterlaced().

void openmsx::PixelRenderer::frameStart ( EmuTime::param  time)
overridevirtual
PostProcessor * openmsx::PixelRenderer::getPostProcessor ( ) const
overridevirtual

See VDP::getPostProcessor.

Implements openmsx::Renderer.

Definition at line 139 of file PixelRenderer.cc.

void openmsx::PixelRenderer::reInit ( )
overridevirtual

Reinitialise Renderer state.

Implements openmsx::Renderer.

Definition at line 144 of file PixelRenderer.cc.

References openmsx::VDP::isDisplayEnabled().

Referenced by PixelRenderer().

void openmsx::PixelRenderer::updateBackgroundColor ( int  color,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP background color change.

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

Implements openmsx::Renderer.

Definition at line 285 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateBlinkBackgroundColor ( int  color,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP blink background color change.

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

Implements openmsx::Renderer.

Definition at line 298 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateBlinkForegroundColor ( int  color,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP blink foreground color change.

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

Implements openmsx::Renderer.

Definition at line 292 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateBlinkState ( bool  enabled,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP blinking state change.

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

Implements openmsx::Renderer.

Definition at line 304 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateBorderMask ( bool  masked,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 252 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateColorBase ( int  addr,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a color table base address change.

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

Implements openmsx::Renderer.

Definition at line 376 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateDisplayEnabled ( bool  enabled,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 155 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateDisplayMode ( DisplayMode  mode,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP display mode change.

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

Implements openmsx::Renderer.

Definition at line 349 of file PixelRenderer.cc.

References openmsx::DisplayMode::getByte(), openmsx::VDP::getDisplayMode(), openmsx::DisplayMode::GRAPHIC5, and openmsx::DisplayMode::GRAPHIC7.

void openmsx::PixelRenderer::updateForegroundColor ( int  color,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP foreground color change.

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

Implements openmsx::Renderer.

Definition at line 279 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateHorizontalAdjust ( int  adjust,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 342 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateHorizontalScrollHigh ( byte  scroll,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 246 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateHorizontalScrollLow ( byte  scroll,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 239 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateMultiPage ( bool  multiPage,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 259 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateNameBase ( int  addr,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a name table base address change.

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

Implements openmsx::Renderer.

Definition at line 364 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updatePalette ( int  index,
int  grb,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 314 of file PixelRenderer.cc.

References openmsx::VDP::getBackgroundColor(), openmsx::DisplayMode::getBase(), openmsx::DisplayMode::getByte(), openmsx::VDP::getDisplayMode(), openmsx::DisplayMode::GRAPHIC5, and openmsx::DisplayMode::GRAPHIC7.

void openmsx::PixelRenderer::updatePatternBase ( int  addr,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a pattern table base address change.

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

Implements openmsx::Renderer.

Definition at line 370 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateSpritesEnabled ( bool  enabled,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a VDP sprites enabled change.

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

Implements openmsx::Renderer.

Definition at line 382 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateSuperimposing ( const RawFrame videoSource,
EmuTime::param  time 
)
overridevirtual

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.

Implements openmsx::Renderer.

Definition at line 272 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateTransparency ( bool  enabled,
EmuTime::param  time 
)
overridevirtual

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

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

Implements openmsx::Renderer.

Definition at line 265 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateVerticalScroll ( int  scroll,
EmuTime::param  time 
)
overridevirtual

Informs the renderer of a vertical scroll change.

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

Implements openmsx::Renderer.

Definition at line 336 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateVRAM ( unsigned  offset,
EmuTime::param  time 
)
overridevirtual

Informs the observer of a change in VRAM contents.

This update is sent just before the change, so the subcomponent can update itself to the given time based on the old contents.

Parameters
offsetOffset of byte that will change, relative to window base address.
timeThe moment in emulated time this change occurs.

Implements openmsx::VRAMObserver.

Definition at line 492 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateWindow ( bool  enabled,
EmuTime::param  time 
)
overridevirtual

Informs the observer that the entire VRAM window will change.

This update is sent just before the change, so the subcomponent can update itself to the given time based on the old contents. This happens if the base/index masks are changed, or if the window becomes disabled. TODO: Separate enable/disable from window move?

Parameters
enabledWill the window be enabled after the change? If the observer keeps a cache which is based on VRAM contents, it is only necessary to flush the cache if the new window is enabled, because no reads are allowed from disabled windows.
timeThe moment in emulated time this change occurs.

Implements openmsx::VRAMObserver.

Definition at line 503 of file PixelRenderer.cc.


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