openMSX
|
Represents a VDP display mode. More...
#include <DisplayMode.hh>
Public Member Functions | |
constexpr | DisplayMode ()=default |
Create the initial display mode. | |
constexpr | DisplayMode (byte reg0, byte reg1, byte reg25) |
Create a specific display mode. | |
constexpr DisplayMode | updateReg25 (byte reg25) const |
constexpr void | reset () |
Bring the display mode to its initial state. | |
constexpr bool | operator== (const DisplayMode &) const =default |
Equals operator. | |
constexpr byte | getByte () const |
Get the display mode as a byte: YAE YJK M5..M1 combined. | |
constexpr void | setByte (byte mode_) |
Used for de-serialization. | |
constexpr byte | getBase () const |
Get the base display mode as an integer: M5..M1 combined. | |
constexpr bool | isV9938Mode () const |
Was this mode introduced by the V9938? | |
constexpr bool | isTextMode () const |
Is the current mode a text mode? Text1 and Text2 are text modes. | |
constexpr bool | isBitmapMode () const |
Is the current mode a bitmap mode? Graphic4 and higher are bitmap modes. | |
constexpr bool | isPlanar () const |
Is VRAM "planar" in the current display mode? Graphic 6 and 7 spread their bytes over two VRAM ICs, such that the even bytes go to the first half of the address space and the odd bytes to the second half. | |
constexpr bool | isSpriteNarrow () const |
Are sprite pixels narrow? | |
constexpr int | getSpriteMode (bool isMSX1) const |
Get the sprite mode of this display mode. | |
constexpr unsigned | getLineWidth () const |
Get number of pixels on a display line in this mode. | |
Static Public Attributes | |
static constexpr uint8_t | GRAPHIC1 = 0x00 |
static constexpr uint8_t | TEXT1 = 0x01 |
static constexpr uint8_t | MULTICOLOR = 0x02 |
static constexpr uint8_t | GRAPHIC2 = 0x04 |
static constexpr uint8_t | TEXT1Q = 0x05 |
static constexpr uint8_t | MULTIQ = 0x06 |
static constexpr uint8_t | GRAPHIC3 = 0x08 |
static constexpr uint8_t | TEXT2 = 0x09 |
static constexpr uint8_t | GRAPHIC4 = 0x0C |
static constexpr uint8_t | GRAPHIC5 = 0x10 |
static constexpr uint8_t | GRAPHIC6 = 0x14 |
static constexpr uint8_t | GRAPHIC7 = 0x1C |
static constexpr byte | REG0_MASK = 0x0E |
Bits of VDP register 0 that encode part of the display mode. | |
static constexpr byte | REG1_MASK = 0x18 |
Bits of VDP register 1 that encode part of the display mode. | |
static constexpr byte | REG25_MASK = 0x18 |
Bits of VDP register 25 that encode part of the display mode. | |
static constexpr byte | YJK = 0x20 |
Encoding of YJK flag. | |
static constexpr byte | YAE = 0x40 |
Encoding of YAE flag. | |
Represents a VDP display mode.
A display mode determines how bytes in the VRAM are converted to pixel colors. A display mode consists of a base mode with YJK filters on top. Only the V9958 supports YJK filters.
Definition at line 15 of file DisplayMode.hh.
|
constexprdefault |
Create the initial display mode.
Referenced by reset(), and updateReg25().
Create a specific display mode.
reg0 | The contents of VDP register 0. |
reg1 | The contents of VDP register 1. |
reg25 | The contents of VDP register 25; on non-V9958 chips, pass 0. |
Definition at line 64 of file DisplayMode.hh.
|
inlineconstexpr |
Get the base display mode as an integer: M5..M1 combined.
If YJK is active, the base mode is the underlying display mode.
Definition at line 106 of file DisplayMode.hh.
Referenced by getSpriteMode(), isBitmapMode(), isTextMode(), openmsx::CharacterConverter::setDisplayMode(), openmsx::VDPCmdEngine::updateDisplayMode(), openmsx::PixelRenderer::updatePalette(), and updateReg25().
|
inlineconstexpr |
Get the display mode as a byte: YAE YJK M5..M1 combined.
Definition at line 92 of file DisplayMode.hh.
Referenced by openmsx::VDP::changeRegister(), openmsx::BitmapConverter::convertLine(), openmsx::BitmapConverter::convertLinePlanar(), openmsx::SDLRasterizer::drawSprites(), openmsx::VDP::getBackgroundColor(), openmsx::VDP::serialize(), openmsx::SDLRasterizer::setBackgroundColor(), openmsx::SDLRasterizer::setDisplayMode(), openmsx::PixelRenderer::updateDisplayMode(), and openmsx::PixelRenderer::updatePalette().
|
inlineconstexpr |
Get number of pixels on a display line in this mode.
Definition at line 179 of file DisplayMode.hh.
References GRAPHIC5, GRAPHIC6, and TEXT2.
Referenced by openmsx::SDLRasterizer::drawBorder(), openmsx::SDLRasterizer::drawDisplay(), and openmsx::SDLRasterizer::drawSprites().
|
inlineconstexpr |
Get the sprite mode of this display mode.
Definition at line 157 of file DisplayMode.hh.
References getBase(), GRAPHIC1, GRAPHIC2, GRAPHIC3, GRAPHIC4, GRAPHIC5, GRAPHIC6, GRAPHIC7, MULTICOLOR, MULTIQ, TEXT1, TEXT1Q, and TEXT2.
Referenced by openmsx::SDLRasterizer::drawSprites(), openmsx::VDP::spritesEnabled(), and openmsx::VDP::spritesEnabledFast().
|
inlineconstexpr |
Is the current mode a bitmap mode? Graphic4 and higher are bitmap modes.
Definition at line 129 of file DisplayMode.hh.
References getBase().
Referenced by openmsx::SDLRasterizer::drawDisplay(), and openmsx::SDLRasterizer::setDisplayMode().
|
inlineconstexpr |
Is VRAM "planar" in the current display mode? Graphic 6 and 7 spread their bytes over two VRAM ICs, such that the even bytes go to the first half of the address space and the odd bytes to the second half.
Definition at line 139 of file DisplayMode.hh.
Referenced by openmsx::SDLRasterizer::drawDisplay().
|
inlineconstexpr |
|
inlineconstexpr |
Is the current mode a text mode? Text1 and Text2 are text modes.
Definition at line 121 of file DisplayMode.hh.
References getBase(), TEXT1, TEXT1Q, and TEXT2.
Referenced by openmsx::SDLRasterizer::drawDisplay(), openmsx::VDP::getLeftSprites(), openmsx::VDP::getRightBorder(), and openmsx::VDP::peekStatusReg().
|
inlineconstexpr |
Was this mode introduced by the V9938?
Definition at line 113 of file DisplayMode.hh.
|
constexprdefault |
Equals operator.
|
inlineconstexpr |
Bring the display mode to its initial state.
Definition at line 80 of file DisplayMode.hh.
References DisplayMode().
|
inlineconstexpr |
Used for de-serialization.
Definition at line 97 of file DisplayMode.hh.
Referenced by openmsx::VDP::serialize().
|
inlineconstexpr |
Definition at line 73 of file DisplayMode.hh.
References DisplayMode(), and getBase().
|
staticconstexpr |
Definition at line 26 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), and getSpriteMode().
|
staticconstexpr |
Definition at line 29 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), and getSpriteMode().
|
staticconstexpr |
Definition at line 32 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), and getSpriteMode().
|
staticconstexpr |
Definition at line 34 of file DisplayMode.hh.
Referenced by openmsx::BitmapConverter::convertLine(), openmsx::BitmapConverter::convertLinePlanar(), getSpriteMode(), and openmsx::VDPCmdEngine::updateDisplayMode().
|
staticconstexpr |
Definition at line 35 of file DisplayMode.hh.
Referenced by openmsx::BitmapConverter::convertLine(), openmsx::BitmapConverter::convertLinePlanar(), openmsx::SpriteConverter::drawMode2(), openmsx::SDLRasterizer::drawSprites(), getLineWidth(), getSpriteMode(), isSpriteNarrow(), openmsx::VDPCmdEngine::updateDisplayMode(), openmsx::PixelRenderer::updateDisplayMode(), and openmsx::PixelRenderer::updatePalette().
|
staticconstexpr |
Definition at line 36 of file DisplayMode.hh.
Referenced by openmsx::BitmapConverter::convertLine(), openmsx::BitmapConverter::convertLinePlanar(), openmsx::SpriteConverter::drawMode2(), openmsx::SDLRasterizer::drawSprites(), getLineWidth(), getSpriteMode(), and openmsx::VDPCmdEngine::updateDisplayMode().
|
staticconstexpr |
Definition at line 37 of file DisplayMode.hh.
Referenced by openmsx::VDP::changeRegister(), openmsx::BitmapConverter::convertLine(), openmsx::BitmapConverter::convertLinePlanar(), openmsx::VDP::getBackgroundColor(), getSpriteMode(), openmsx::SDLRasterizer::setBackgroundColor(), openmsx::SDLRasterizer::setDisplayMode(), openmsx::VDPCmdEngine::updateDisplayMode(), openmsx::PixelRenderer::updateDisplayMode(), and openmsx::PixelRenderer::updatePalette().
|
staticconstexpr |
Definition at line 28 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), and getSpriteMode().
|
staticconstexpr |
Definition at line 31 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), and getSpriteMode().
|
staticconstexpr |
Bits of VDP register 0 that encode part of the display mode.
Definition at line 40 of file DisplayMode.hh.
Referenced by openmsx::VDP::changeRegister().
|
staticconstexpr |
Bits of VDP register 1 that encode part of the display mode.
Definition at line 43 of file DisplayMode.hh.
Referenced by openmsx::VDP::changeRegister().
|
staticconstexpr |
Bits of VDP register 25 that encode part of the display mode.
Definition at line 46 of file DisplayMode.hh.
Referenced by openmsx::VDP::changeRegister().
|
staticconstexpr |
Definition at line 27 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), getSpriteMode(), and isTextMode().
|
staticconstexpr |
Definition at line 30 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), getSpriteMode(), and isTextMode().
|
staticconstexpr |
Definition at line 33 of file DisplayMode.hh.
Referenced by openmsx::CharacterConverter::convertLine(), getLineWidth(), getSpriteMode(), and isTextMode().
|
staticconstexpr |
Encoding of YAE flag.
Definition at line 52 of file DisplayMode.hh.
Referenced by openmsx::BitmapConverter::convertLine(), and openmsx::BitmapConverter::convertLinePlanar().
|
staticconstexpr |
Encoding of YJK flag.
Definition at line 49 of file DisplayMode.hh.
Referenced by openmsx::BitmapConverter::convertLine(), and openmsx::BitmapConverter::convertLinePlanar().