openMSX
|
Rasterizer using SDL. More...
#include <V9990SDLRasterizer.hh>
Public Member Functions | |
V9990SDLRasterizer (V9990 &vdp, Display &display, VisibleSurface &screen, std::unique_ptr< PostProcessor > postProcessor) | |
~V9990SDLRasterizer () override | |
PostProcessor * | getPostProcessor () const override |
See V9990::getPostProcessor(). More... | |
bool | isActive () override |
Will the output of this Rasterizer be displayed? There is no point in producing a frame that will not be displayed. More... | |
void | reset () override |
Resynchronize with VDP - flush caches etc. More... | |
void | frameStart () override |
Indicates the start of a new frame. More... | |
void | frameEnd (EmuTime::param time) override |
Indicates the end of the current frame. More... | |
void | setDisplayMode (V9990DisplayMode displayMode) override |
The display mode determines the screens geometry and how V9990 pixels are mapped to pixels on screen. More... | |
void | setColorMode (V9990ColorMode colorMode) override |
The color mode determines how the V9990 VRAM data gets converted to pixel colors. More... | |
void | setPalette (int index, byte r, byte g, byte b, bool ys) override |
Set RGB values for a palette entry. More... | |
void | setSuperimpose (bool enabled) override |
Is superimpose enabled? More... | |
void | drawBorder (int fromX, int fromY, int limitX, int limitY) override |
Render a rectangle of border pixels on the host screen. More... | |
void | drawDisplay (int fromX, int fromY, int toX, int toY, int displayX, int displayY, int displayYA, int displayYB) override |
Render a rectangle of display pixels on the host screen. More... | |
bool | isRecording () const override |
Is video recording active? More... | |
![]() | |
virtual | ~V9990Rasterizer ()=default |
Rasterizer using SDL.
Definition at line 25 of file V9990SDLRasterizer.hh.
openmsx::V9990SDLRasterizer< Pixel >::V9990SDLRasterizer | ( | V9990 & | vdp, |
Display & | display, | ||
VisibleSurface & | screen, | ||
std::unique_ptr< PostProcessor > | postProcessor | ||
) |
|
override |
|
overridevirtual |
Render a rectangle of border pixels on the host screen.
The units are absolute lines (Y) and V9990 UC ticks (X).
fromX | X coordinate of render start (inclusive). |
fromY | Y coordinate of render start (inclusive). |
limitX | X coordinate of render end (exclusive). |
limitY | Y coordinate of render end (exclusive). |
Implements openmsx::V9990Rasterizer.
Definition at line 120 of file V9990SDLRasterizer.cc.
References openmsx::V9990::getBackDropColor(), openmsx::V9990::getLineWidth(), openmsx::V9990::isOverScan(), gl::max(), gl::min(), openmsx::V9990DisplayTiming::UC_TICKS_PER_LINE, and openmsx::V9990::UCtoX().
|
overridevirtual |
Render a rectangle of display pixels on the host screen.
fromX | X coordinate of render start in V9990 UC ticks. |
fromY | Y coordinate of render start in absolute lines. |
toX | X coordinate of render stop in V9990 UC ticks (exclusive). |
toY | Y coordinate of render stop in absolute lines (exclusive). |
displayX | display coordinate of render start: [0..640). |
displayY | display coordinate of render start: [0..480). |
displayYA | similar to displayY but specific for plane A |
displayYB | similar to displayY but specific for plane B Note: Usually displayY, displayYA and displayYB will all be the same. Only in case the vertical scroll register is updated in the middle of a frame they can differ, see V9990PixelRenderer::updateScrollAYLow() |
Implements openmsx::V9990Rasterizer.
Definition at line 156 of file V9990SDLRasterizer.cc.
References g, openmsx::V9990::getCursorYOffset(), openmsx::RenderSettings::getDisableSprites(), openmsx::V9990::getEvenOdd(), openmsx::V9990::getLineWidth(), openmsx::V9990::getRollMask(), openmsx::V9990::getScrollAX(), openmsx::V9990::getScrollAY(), openmsx::RenderSettings::isColorMatrixIdentity(), openmsx::V9990::isEvenOddEnabled(), openmsx::OutputSurface::mapKeyedRGB255(), openmsx::OutputSurface::mapRGB(), openmsx::P1, openmsx::P2, openmsx::V9990::spritesEnabled(), openmsx::RenderSettings::transformComponent(), openmsx::RenderSettings::transformRGB(), openmsx::V9990::UCtoX(), and openmsx::x.
|
overridevirtual |
Indicates the end of the current frame.
Implements openmsx::V9990Rasterizer.
Definition at line 96 of file V9990SDLRasterizer.cc.
References openmsx::FrameSource::FIELD_EVEN, openmsx::FrameSource::FIELD_NONINTERLACED, openmsx::FrameSource::FIELD_ODD, openmsx::V9990::getEvenOdd(), and openmsx::V9990::isInterlaced().
|
overridevirtual |
Indicates the start of a new frame.
Implements openmsx::V9990Rasterizer.
Definition at line 76 of file V9990SDLRasterizer.cc.
References openmsx::V9990DisplayPeriod::blank, openmsx::V9990DisplayPeriod::border1, openmsx::V9990DisplayPeriod::display, openmsx::V9990::getHorizontalTiming(), and openmsx::V9990::getVerticalTiming().
|
overridevirtual |
See V9990::getPostProcessor().
Implements openmsx::V9990Rasterizer.
Definition at line 54 of file V9990SDLRasterizer.cc.
|
overridevirtual |
Will the output of this Rasterizer be displayed? There is no point in producing a frame that will not be displayed.
TODO: Is querying the next pipeline step the best way to solve this, or is it better to explicitly disable the first step in the pipeline?
Implements openmsx::V9990Rasterizer.
Definition at line 60 of file V9990SDLRasterizer.cc.
References openmsx::MSXDevice::getMotherBoard(), openmsx::MSXMotherBoard::isActive(), and openmsx::MSXMotherBoard::isFastForwarding().
|
overridevirtual |
Is video recording active?
Implements openmsx::V9990Rasterizer.
Definition at line 369 of file V9990SDLRasterizer.cc.
References openmsx::RenderSettings::getBrightnessSetting(), openmsx::RenderSettings::getColorMatrixSetting(), openmsx::RenderSettings::getContrastSetting(), and openmsx::RenderSettings::getGammaSetting().
|
overridevirtual |
Resynchronize with VDP - flush caches etc.
Implements openmsx::V9990Rasterizer.
Definition at line 68 of file V9990SDLRasterizer.cc.
References openmsx::V9990::getColorMode(), openmsx::V9990::getDisplayMode(), openmsx::V9990SDLRasterizer< Pixel >::setColorMode(), and openmsx::V9990SDLRasterizer< Pixel >::setDisplayMode().
|
overridevirtual |
The color mode determines how the V9990 VRAM data gets converted to pixel colors.
colorMode | The new color mode. |
Implements openmsx::V9990Rasterizer.
Definition at line 113 of file V9990SDLRasterizer.cc.
Referenced by openmsx::V9990SDLRasterizer< Pixel >::reset().
|
overridevirtual |
The display mode determines the screens geometry and how V9990 pixels are mapped to pixels on screen.
displayMode | The new display mode. |
Implements openmsx::V9990Rasterizer.
Definition at line 106 of file V9990SDLRasterizer.cc.
Referenced by openmsx::V9990SDLRasterizer< Pixel >::reset().
|
overridevirtual |
Set RGB values for a palette entry.
index | Index in palette |
r | Red component intensity (5 bits) |
g | Green component intensity (5 bits) |
b | Blue component intensity (5 bits) |
ys | Is this entry transparent |
Implements openmsx::V9990Rasterizer.
Definition at line 338 of file V9990SDLRasterizer.cc.
References g, openmsx::OutputSurface::getKeyColor(), openmsx::V9990::getPalette(), and openmsx::V9990::isSuperimposing().
|
overridevirtual |
Is superimpose enabled?
Implements openmsx::V9990Rasterizer.
Definition at line 363 of file V9990SDLRasterizer.cc.