diff options
author | athrxx | 2019-11-20 23:56:41 +0100 |
---|---|---|
committer | athrxx | 2019-12-18 20:50:42 +0100 |
commit | a0828a000b5ecff36e987db283436fc7b574232d (patch) | |
tree | b0cfc4338e0acdf07a5af90a0767283821b24ea4 /engines/kyra/graphics/screen_eob.cpp | |
parent | 1db3ec1f712ba75e04911e0a936f873998f9d1c9 (diff) | |
download | scummvm-rg350-a0828a000b5ecff36e987db283436fc7b574232d.tar.gz scummvm-rg350-a0828a000b5ecff36e987db283436fc7b574232d.tar.bz2 scummvm-rg350-a0828a000b5ecff36e987db283436fc7b574232d.zip |
KYRA: (EOB/PC98) - fix intro and main menu screen
Diffstat (limited to 'engines/kyra/graphics/screen_eob.cpp')
-rw-r--r-- | engines/kyra/graphics/screen_eob.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/engines/kyra/graphics/screen_eob.cpp b/engines/kyra/graphics/screen_eob.cpp index 882c45c5d0..ad967fe5ed 100644 --- a/engines/kyra/graphics/screen_eob.cpp +++ b/engines/kyra/graphics/screen_eob.cpp @@ -65,6 +65,8 @@ Screen_EoB::Screen_EoB(EoBCoreEngine *vm, OSystem *system) : Screen(vm, system, _useHiResEGADithering = _dualPaletteMode = false; _cpsFileExt = 0; _decodeTempBuffer = 0; + _curPalID = 0; + _curPal = 0; for (int i = 0; i < 10; ++i) _palette16c[i] = 0; } @@ -258,7 +260,7 @@ void Screen_EoB::loadShapeSetBitmap(const char *file, int tempPage, int destPage } void Screen_EoB::loadBitmap(const char *filename, int tempPage, int dstPage, Palette *pal, bool skip) { - if (_use16ColorMode) { + if (!scumm_stricmp(filename + strlen(filename) - 3, "BIN")) { Common::SeekableReadStream *str = _vm->resource()->createReadStream(filename); if (!str) error("Screen_EoB::loadBitmap(): Failed to load file '%s'", filename); @@ -1568,11 +1570,25 @@ void Screen_EoB::shadeRect(int x1, int y1, int x2, int y2, int shadingLevel) { } void Screen_EoB::loadPC98Palette(int palID, Palette &dest) { - if (!_palette16c[palID]) + if (palID < 0 || palID > 9) return; + if (!_use16ColorMode || !_palette16c[palID]) + return; + _curPalID = palID; + _curPal = &dest; loadPalette(_palette16c[palID], dest, 48); } +void Screen_EoB::setPC98PaletteBrightness(int modifier) { + if (!_use16ColorMode || !_palette16c[_curPalID]) + return; + uint8 pal[48]; + for (int i = 0; i < 48; ++i) + pal[i] = CLIP<int>(_palette16c[_curPalID][i] + modifier, 0, 15); + loadPalette(pal, *_curPal, 48); + setScreenPalette(*_curPal); +} + void Screen_EoB::decodeBIN(const uint8 *src, uint8 *dst, uint16 inSize) { const uint8 *end = src + inSize; memset(_decodeTempBuffer, 0, 2048); |