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

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

Member Function Documentation

void openmsx::PixelRenderer::frameEnd ( EmuTime::param  time)
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.

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)
virtual
PostProcessor * openmsx::PixelRenderer::getPostProcessor ( ) const
virtual

See VDP::getPostProcessor.

Implements openmsx::Renderer.

Definition at line 139 of file PixelRenderer.cc.

void openmsx::PixelRenderer::reInit ( )
virtual

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 
)
virtual

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 
)
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.

Implements openmsx::Renderer.

Definition at line 298 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateBlinkForegroundColor ( int  color,
EmuTime::param  time 
)
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.

Implements openmsx::Renderer.

Definition at line 292 of file PixelRenderer.cc.

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

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 
)
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.

Implements openmsx::Renderer.

Definition at line 252 of file PixelRenderer.cc.

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

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 
)
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.

Implements openmsx::Renderer.

Definition at line 155 of file PixelRenderer.cc.

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

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 
)
virtual

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 
)
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.

Implements openmsx::Renderer.

Definition at line 342 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateHorizontalScrollHigh ( byte  scroll,
EmuTime::param  time 
)
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.

Implements openmsx::Renderer.

Definition at line 246 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateHorizontalScrollLow ( byte  scroll,
EmuTime::param  time 
)
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.

Implements openmsx::Renderer.

Definition at line 239 of file PixelRenderer.cc.

void openmsx::PixelRenderer::updateMultiPage ( bool  multiPage,
EmuTime::param  time 
)
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.

Implements openmsx::Renderer.

Definition at line 259 of file PixelRenderer.cc.

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

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 
)
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.

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 
)
virtual

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 
)
virtual

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 
)
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.

Implements openmsx::Renderer.

Definition at line 272 of file PixelRenderer.cc.

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

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 
)
virtual

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 
)
virtual

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 
)
virtual

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: