openMSX
Public Member Functions | List of all members
openmsx::V9990SDLRasterizer< Pixel > Class Template Referencefinal

Rasterizer using SDL. More...

#include <V9990SDLRasterizer.hh>

Inheritance diagram for openmsx::V9990SDLRasterizer< Pixel >:
Inheritance graph
[legend]
Collaboration diagram for openmsx::V9990SDLRasterizer< Pixel >:
Collaboration graph
[legend]

Public Member Functions

 V9990SDLRasterizer (V9990 &vdp, Display &display, OutputSurface &screen, std::unique_ptr< PostProcessor > postProcessor)
 
 ~V9990SDLRasterizer () override
 
 V9990SDLRasterizer (const V9990SDLRasterizer &)=delete
 
V9990SDLRasterizeroperator= (const V9990SDLRasterizer &)=delete
 
PostProcessorgetPostProcessor () 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
 
- Public Member Functions inherited from openmsx::V9990Rasterizer
virtual ~V9990Rasterizer ()=default
 
virtual PostProcessorgetPostProcessor () 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...
 

Detailed Description

template<std::unsigned_integral Pixel>
class openmsx::V9990SDLRasterizer< Pixel >

Rasterizer using SDL.

Definition at line 26 of file V9990SDLRasterizer.hh.

Constructor & Destructor Documentation

◆ V9990SDLRasterizer() [1/2]

template<std::unsigned_integral Pixel>
openmsx::V9990SDLRasterizer< Pixel >::V9990SDLRasterizer ( V9990 vdp,
Display display,
OutputSurface screen,
std::unique_ptr< PostProcessor postProcessor 
)

◆ ~V9990SDLRasterizer()

template<std::unsigned_integral Pixel>
openmsx::V9990SDLRasterizer< Pixel >::~V9990SDLRasterizer
override

Definition at line 45 of file V9990SDLRasterizer.cc.

◆ V9990SDLRasterizer() [2/2]

template<std::unsigned_integral Pixel>
openmsx::V9990SDLRasterizer< Pixel >::V9990SDLRasterizer ( const V9990SDLRasterizer< Pixel > &  )
delete

Member Function Documentation

◆ drawBorder()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::drawBorder ( int  fromX,
int  fromY,
int  limitX,
int  limitY 
)
overridevirtual

Render a rectangle of border pixels on the host screen.

The units are absolute lines (Y) and V9990 UC ticks (X).

Parameters
fromXX coordinate of render start (inclusive).
fromYY coordinate of render start (inclusive).
limitXX coordinate of render end (exclusive).
limitYY 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().

◆ drawBxMode()

template<std::unsigned_integral Pixel>
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().

◆ drawDisplay()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::drawDisplay ( int  fromX,
int  fromY,
int  toX,
int  toY,
int  displayX,
int  displayY,
int  displayYA,
int  displayYB 
)
overridevirtual

Render a rectangle of display pixels on the host screen.

Parameters
fromXX coordinate of render start in V9990 UC ticks.
fromYY coordinate of render start in absolute lines.
toXX coordinate of render stop in V9990 UC ticks (exclusive).
toYY coordinate of render stop in absolute lines (exclusive).
displayXdisplay coordinate of render start: [0..640).
displayYdisplay coordinate of render start: [0..480).
displayYAsimilar to displayY but specific for plane A
displayYBsimilar 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().

◆ drawP1Mode()

template<std::unsigned_integral Pixel>
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().

◆ drawP2Mode()

template<std::unsigned_integral Pixel>
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().

◆ frameEnd()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::frameEnd ( EmuTime::param  time)
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.

◆ frameStart()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::frameStart ( )
overridevirtual

◆ getPostProcessor()

template<std::unsigned_integral Pixel>
PostProcessor * openmsx::V9990SDLRasterizer< Pixel >::getPostProcessor ( ) const
overridevirtual

See V9990::getPostProcessor().

Implements openmsx::V9990Rasterizer.

Definition at line 54 of file V9990SDLRasterizer.cc.

◆ isActive()

template<std::unsigned_integral Pixel>
bool openmsx::V9990SDLRasterizer< Pixel >::isActive ( )
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.

◆ isRecording()

template<std::unsigned_integral Pixel>
bool openmsx::V9990SDLRasterizer< Pixel >::isRecording ( ) const
overridevirtual

Is video recording active?

Implements openmsx::V9990Rasterizer.

Definition at line 366 of file V9990SDLRasterizer.cc.

◆ operator=()

template<std::unsigned_integral Pixel>
V9990SDLRasterizer & openmsx::V9990SDLRasterizer< Pixel >::operator= ( const V9990SDLRasterizer< Pixel > &  )
delete

◆ preCalcPalettes()

template<std::unsigned_integral Pixel>
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().

◆ reset()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::reset ( )
overridevirtual

Resynchronize with VDP - flush caches etc.

Implements openmsx::V9990Rasterizer.

Definition at line 68 of file V9990SDLRasterizer.cc.

◆ resetPalette()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::resetPalette

Definition at line 347 of file V9990SDLRasterizer.cc.

References g, and xrange().

◆ setColorMode()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::setColorMode ( V9990ColorMode  colorMode)
overridevirtual

The color mode determines how the V9990 VRAM data gets converted to pixel colors.

Parameters
colorModeThe new color mode.

Implements openmsx::V9990Rasterizer.

Definition at line 113 of file V9990SDLRasterizer.cc.

◆ setDisplayMode()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::setDisplayMode ( V9990DisplayMode  displayMode)
overridevirtual

The display mode determines the screens geometry and how V9990 pixels are mapped to pixels on screen.

Parameters
displayModeThe new display mode.

Implements openmsx::V9990Rasterizer.

Definition at line 106 of file V9990SDLRasterizer.cc.

◆ setPalette()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::setPalette ( int  index,
byte  r,
byte  g,
byte  b,
bool  ys 
)
overridevirtual

Set RGB values for a palette entry.

Parameters
indexIndex in palette
rRed component intensity (5 bits)
gGreen component intensity (5 bits)
bBlue component intensity (5 bits)
ysIs this entry transparent

Implements openmsx::V9990Rasterizer.

Definition at line 337 of file V9990SDLRasterizer.cc.

References g.

◆ setSuperimpose()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::setSuperimpose ( bool  enabled)
overridevirtual

Is superimpose enabled?

Implements openmsx::V9990Rasterizer.

Definition at line 360 of file V9990SDLRasterizer.cc.

◆ update()

template<std::unsigned_integral Pixel>
void openmsx::V9990SDLRasterizer< Pixel >::update ( const Setting setting)
overridevirtualnoexcept

Implements openmsx::Observer< Setting >.

Definition at line 372 of file V9990SDLRasterizer.cc.

References setting.


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