openMSX
|
Rasterizer using SDL. More...
#include <V9990SDLRasterizer.hh>
Public Member Functions | |
V9990SDLRasterizer (V9990 &vdp, Display &display, OutputSurface &screen, std::unique_ptr< PostProcessor > postProcessor) | |
~V9990SDLRasterizer () override | |
V9990SDLRasterizer (const V9990SDLRasterizer &)=delete | |
V9990SDLRasterizer & | operator= (const V9990SDLRasterizer &)=delete |
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... | |
void | preCalcPalettes () |
Fill the palettes. More... | |
void | resetPalette () |
void | drawP1Mode (int fromX, int fromY, int displayX, int displayY, int displayYA, int displayYB, int displayWidth, int displayHeight, bool drawSprites) |
void | drawP2Mode (int fromX, int fromY, int displayX, int displayY, int displayYA, int displayWidth, int displayHeight, bool drawSprites) |
void | drawBxMode (int fromX, int fromY, int displayX, int displayY, int displayYA, int displayWidth, int displayHeight, bool drawSprites) |
void | update (const Setting &setting) noexcept override |
![]() | |
virtual | ~V9990Rasterizer ()=default |
virtual PostProcessor * | getPostProcessor () const =0 |
See V9990::getPostProcessor(). More... | |
virtual bool | isActive ()=0 |
Will the output of this Rasterizer be displayed? There is no point in producing a frame that will not be displayed. More... | |
virtual void | reset ()=0 |
Resynchronize with VDP - flush caches etc. More... | |
virtual void | frameStart ()=0 |
Indicates the start of a new frame. More... | |
virtual void | frameEnd (EmuTime::param time)=0 |
Indicates the end of the current frame. More... | |
virtual void | setDisplayMode (enum V9990DisplayMode displayMode)=0 |
The display mode determines the screens geometry and how V9990 pixels are mapped to pixels on screen. More... | |
virtual void | setColorMode (enum V9990ColorMode colorMode)=0 |
The color mode determines how the V9990 VRAM data gets converted to pixel colors. More... | |
virtual void | setPalette (int index, byte r, byte g, byte b, bool ys)=0 |
Set RGB values for a palette entry. More... | |
virtual void | setSuperimpose (bool enabled)=0 |
Is superimpose enabled? More... | |
virtual void | drawBorder (int fromX, int fromY, int limitX, int limitY)=0 |
Render a rectangle of border pixels on the host screen. More... | |
virtual void | drawDisplay (int fromX, int fromY, int toX, int toY, int displayX, int displayY, int displayYA, int displayYB)=0 |
Render a rectangle of display pixels on the host screen. More... | |
virtual bool | isRecording () const =0 |
Is video recording active? More... | |
Rasterizer using SDL.
Definition at line 26 of file V9990SDLRasterizer.hh.
openmsx::V9990SDLRasterizer< Pixel >::V9990SDLRasterizer | ( | V9990 & | vdp, |
Display & | display, | ||
OutputSurface & | screen, | ||
std::unique_ptr< PostProcessor > | postProcessor | ||
) |
Definition at line 23 of file V9990SDLRasterizer.cc.
References openmsx::Subject< T >::attach(), openmsx::RenderSettings::getBrightnessSetting(), openmsx::RenderSettings::getColorMatrixSetting(), openmsx::RenderSettings::getContrastSetting(), openmsx::RenderSettings::getGammaSetting(), and openmsx::V9990SDLRasterizer< Pixel >::preCalcPalettes().
|
override |
Definition at line 45 of file V9990SDLRasterizer.cc.
|
delete |
|
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 gl::max(), gl::min(), openmsx::V9990DisplayTiming::UC_TICKS_PER_LINE, openmsx::V9990::UCtoX(), and xrange().
void openmsx::V9990SDLRasterizer< Pixel >::drawBxMode | ( | int | fromX, |
int | fromY, | ||
int | displayX, | ||
int | displayY, | ||
int | displayYA, | ||
int | displayWidth, | ||
int | displayHeight, | ||
bool | drawSprites | ||
) |
Definition at line 250 of file V9990SDLRasterizer.cc.
References subspan().
|
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 openmsx::P1, openmsx::P2, and openmsx::V9990::UCtoX().
void openmsx::V9990SDLRasterizer< Pixel >::drawP1Mode | ( | int | fromX, |
int | fromY, | ||
int | displayX, | ||
int | displayY, | ||
int | displayYA, | ||
int | displayYB, | ||
int | displayWidth, | ||
int | displayHeight, | ||
bool | drawSprites | ||
) |
Definition at line 217 of file V9990SDLRasterizer.cc.
References subspan().
void openmsx::V9990SDLRasterizer< Pixel >::drawP2Mode | ( | int | fromX, |
int | fromY, | ||
int | displayX, | ||
int | displayY, | ||
int | displayYA, | ||
int | displayWidth, | ||
int | displayHeight, | ||
bool | drawSprites | ||
) |
Definition at line 235 of file V9990SDLRasterizer.cc.
References subspan().
|
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, and openmsx::FrameSource::FIELD_ODD.
|
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, and openmsx::V9990DisplayPeriod::display.
|
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.
|
overridevirtual |
Is video recording active?
Implements openmsx::V9990Rasterizer.
Definition at line 366 of file V9990SDLRasterizer.cc.
|
delete |
void openmsx::V9990SDLRasterizer< Pixel >::preCalcPalettes |
Fill the palettes.
Definition at line 289 of file V9990SDLRasterizer.cc.
References enumerate(), g, and xrange().
Referenced by openmsx::V9990SDLRasterizer< Pixel >::V9990SDLRasterizer().
|
overridevirtual |
Resynchronize with VDP - flush caches etc.
Implements openmsx::V9990Rasterizer.
Definition at line 68 of file V9990SDLRasterizer.cc.
void openmsx::V9990SDLRasterizer< Pixel >::resetPalette |
Definition at line 347 of file V9990SDLRasterizer.cc.
|
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.
|
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.
|
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 337 of file V9990SDLRasterizer.cc.
References g.
|
overridevirtual |
Is superimpose enabled?
Implements openmsx::V9990Rasterizer.
Definition at line 360 of file V9990SDLRasterizer.cc.
|
overridevirtualnoexcept |
Implements openmsx::Observer< Setting >.
Definition at line 372 of file V9990SDLRasterizer.cc.
References setting.