aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorathrxx2012-02-23 21:36:14 +0100
committerathrxx2012-02-24 18:09:37 +0100
commitecd1a9f9435c5fc5d502d75dd256394b5f3283f3 (patch)
tree273d3539e296960e617380c0648826e5332e77ca /engines
parent14e6a5f8f7c7e3ac0d70ca4d59032954353fc823 (diff)
downloadscummvm-rg350-ecd1a9f9435c5fc5d502d75dd256394b5f3283f3.tar.gz
scummvm-rg350-ecd1a9f9435c5fc5d502d75dd256394b5f3283f3.tar.bz2
scummvm-rg350-ecd1a9f9435c5fc5d502d75dd256394b5f3283f3.zip
KYRA: (EOB) - cleanup CGA/EGA code a bit
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/chargen.cpp10
-rw-r--r--engines/kyra/detection.cpp2
-rw-r--r--engines/kyra/eobcommon.cpp18
-rw-r--r--engines/kyra/eobcommon.h2
-rw-r--r--engines/kyra/gui_eob.cpp10
-rw-r--r--engines/kyra/kyra_hof.cpp2
-rw-r--r--engines/kyra/kyra_lok.cpp6
-rw-r--r--engines/kyra/kyra_mr.cpp2
-rw-r--r--engines/kyra/kyra_rpg.cpp6
-rw-r--r--engines/kyra/kyra_v1.cpp15
-rw-r--r--engines/kyra/kyra_v1.h2
-rw-r--r--engines/kyra/lol.cpp2
-rw-r--r--engines/kyra/magic_eob.cpp2
-rw-r--r--engines/kyra/saveload_eob.cpp2
-rw-r--r--engines/kyra/screen.cpp23
-rw-r--r--engines/kyra/screen.h7
-rw-r--r--engines/kyra/screen_eob.cpp22
-rw-r--r--engines/kyra/screen_eob.h2
18 files changed, 64 insertions, 71 deletions
diff --git a/engines/kyra/chargen.cpp b/engines/kyra/chargen.cpp
index 73f5fccb92..54e1abcc2c 100644
--- a/engines/kyra/chargen.cpp
+++ b/engines/kyra/chargen.cpp
@@ -1496,7 +1496,7 @@ TransferPartyWiz::~TransferPartyWiz() {
}
bool TransferPartyWiz::start() {
- _screen->copyPage(0, (_screen->getPageScaleFactor(0) == 2) ? 1 : 12);
+ _screen->copyPage(0, _vm->_useHiResDithering ? 1 : 12);
if (!selectAndLoadTransferFile())
return false;
@@ -1536,7 +1536,7 @@ bool TransferPartyWiz::start() {
bool TransferPartyWiz::selectAndLoadTransferFile() {
do {
- _screen->copyPage((_screen->getPageScaleFactor(0) == 2) ? 1 : 12, 0);
+ _screen->copyPage(_vm->_useHiResDithering ? 1 : 12, 0);
if (transferFileDialogue(_vm->_savegameFilename))
break;
} while (_vm->_gui->confirmDialogue2(15, 68, 1));
@@ -1566,7 +1566,7 @@ bool TransferPartyWiz::selectAndLoadTransferFile() {
return false;
Common::String target = _vm->_gui->transferTargetMenu(eobTargets);
- _screen->copyPage((_screen->getPageScaleFactor(0) == 2) ? 1 : 12, 0);
+ _screen->copyPage(_vm->_useHiResDithering ? 1 : 12, 0);
if (target.empty())
return true;
@@ -1579,10 +1579,10 @@ bool TransferPartyWiz::selectAndLoadTransferFile() {
return true;
}
- _screen->copyPage((_screen->getPageScaleFactor(0) == 2) ? 1 : 12, 0);
+ _screen->copyPage(_vm->_useHiResDithering ? 1 : 12, 0);
bool result = _vm->_gui->transferFileMenu(target, dest);
- _screen->copyPage((_screen->getPageScaleFactor(0) == 2) ? 1 : 12, 0);
+ _screen->copyPage(_vm->_useHiResDithering ? 1 : 12, 0);
return result;
}
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp
index 1a4fd3bd9d..46dfec84ff 100644
--- a/engines/kyra/detection.cpp
+++ b/engines/kyra/detection.cpp
@@ -140,6 +140,8 @@ bool KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGame
*engine = new Kyra::EoBEngine(syst, flags);
break;
case Kyra::GI_EOB2:
+ if (Common::parseRenderMode(ConfMan.get("render_mode")) == Common::kRenderEGA)
+ flags.useHiRes = true;
*engine = new Kyra::DarkMoonEngine(syst, flags);
break;
#endif // ENABLE_EOB
diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp
index ff53ba8b0a..1489e4f1f5 100644
--- a/engines/kyra/eobcommon.cpp
+++ b/engines/kyra/eobcommon.cpp
@@ -57,6 +57,8 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
_configMouse = true;
_loading = false;
+ _useHiResDithering = false;
+
_envAudioTimer = 0;
_flashShapeTimer = 0;
_drawSceneTimer = 0;
@@ -369,9 +371,11 @@ Common::Error EoBCoreEngine::init() {
if (ConfMan.hasKey("render_mode"))
_configRenderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
+ _useHiResDithering = (_configRenderMode == Common::kRenderEGA && _flags.useHiRes);
+
_screen = new Screen_EoB(this, _system);
assert(_screen);
- _screen->setResolution(_flags.useHiResOverlay || (_flags.gameID == GI_EOB2 && _configRenderMode == Common::kRenderEGA));
+ _screen->setResolution();
//MidiDriverType midiDriver = MidiDriver::detectDevice(MDT_PCSPK | MDT_ADLIB);
_sound = new SoundAdLibPC(this, _mixer);
@@ -390,7 +394,7 @@ Common::Error EoBCoreEngine::init() {
if (!_staticres->init())
error("_staticres->init() failed");
- if (!_screen->init(_flags.gameID == GI_EOB2 && _configRenderMode == Common::kRenderEGA))
+ if (!_screen->init())
error("screen()->init() failed");
if (ConfMan.hasKey("save_slot")) {
@@ -413,6 +417,12 @@ Common::Error EoBCoreEngine::init() {
_screen->loadFont(Screen::FID_6_FNT, "FONT6.FNT");
_screen->loadFont(Screen::FID_8_FNT, "FONT8.FNT");
+ if (_useHiResDithering) {
+ _vcnBlockWidth <<= 1;
+ _vcnBlockHeight <<= 1;
+ SWAP(_vcnFlip0, _vcnFlip1);
+ }
+
Common::Error err = KyraRpgEngine::init();
if (err.getCode() != Common::kNoError)
return err;
@@ -1738,7 +1748,7 @@ void EoBCoreEngine::seq_portal() {
bool EoBCoreEngine::checkPassword() {
char answ[20];
Screen::FontId of = _screen->setFont(Screen::FID_8_FNT);
- _screen->copyPage(0, (_screen->getPageScaleFactor(0) == 2) ? 4 : 10);
+ _screen->copyPage(0, _useHiResDithering ? 4 : 10);
_screen->setScreenDim(13);
gui_drawBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, guiSettings()->colors.frame1, guiSettings()->colors.frame2, -1);
@@ -1765,7 +1775,7 @@ bool EoBCoreEngine::checkPassword() {
_screen->modifyScreenDim(13, _screen->_curDim->sx - 1, _screen->_curDim->sy - 2, _screen->_curDim->w + 2, _screen->_curDim->h + 16);
_screen->setFont(of);
- _screen->copyPage((_screen->getPageScaleFactor(0) == 2) ? 4 : 10, 0);
+ _screen->copyPage(_useHiResDithering ? 4 : 10, 0);
return true;
}
diff --git a/engines/kyra/eobcommon.h b/engines/kyra/eobcommon.h
index 38be2a64e8..050fe2b794 100644
--- a/engines/kyra/eobcommon.h
+++ b/engines/kyra/eobcommon.h
@@ -845,6 +845,8 @@ protected:
const uint8 *_cgaMappingLevel[5];
const uint8 *_cgaLevelMappingIndex;
+ bool _useHiResDithering;
+
// Default parameters will import all present original save files and push them to the top of the save dialog.
bool importOriginalSaveFile(int destSlot, const char *sourceFile = 0);
Common::String readOriginalSaveFile(Common::String &file);
diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp
index eadfd10d1e..ec9b674885 100644
--- a/engines/kyra/gui_eob.cpp
+++ b/engines/kyra/gui_eob.cpp
@@ -777,11 +777,11 @@ int EoBCoreEngine::clickedCamp(Button *button) {
}
_screen->copyPage(0, 7);
- _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, (_screen->getPageScaleFactor(0) == 2) ? 1 : 12, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, _useHiResDithering ? 1 : 12, Screen::CR_NO_P_CHECK);
_gui->runCampMenu();
- _screen->copyRegion(0, 0, 0, 120, 176, 24, (_screen->getPageScaleFactor(0) == 2) ? 1 : 12, 2, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(0, 0, 0, 120, 176, 24, _useHiResDithering ? 1 : 12, 2, Screen::CR_NO_P_CHECK);
_screen->setScreenDim(cd);
drawScene(0);
@@ -1170,7 +1170,7 @@ int EoBCoreEngine::clickedSceneSpecial(Button *button) {
int EoBCoreEngine::clickedSpellbookAbort(Button *button) {
_updateFlags = 0;
- _screen->copyRegion(0, 0, 64, 121, 112, 56, (_screen->getPageScaleFactor(0) == 2) ? 4 : 10, 0, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(0, 0, 64, 121, 112, 56, _useHiResDithering ? 4 : 10, 0, Screen::CR_NO_P_CHECK);
_screen->updateScreen();
gui_drawCompass(true);
gui_toggleButtons();
@@ -2172,7 +2172,7 @@ void GUI_EoB::runCampMenu() {
if (cnt > 4) {
_vm->dropCharacter(selectCharacterDialogue(53));
_vm->gui_drawPlayField(false);
- _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, (_screen->getPageScaleFactor(0) == 2) ? 1 : 12, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, _vm->_useHiResDithering ? 1 : 12, Screen::CR_NO_P_CHECK);
_screen->setFont(Screen::FID_6_FNT);
_vm->gui_drawAllCharPortraitsWithStats();
_screen->setFont(Screen::FID_8_FNT);
@@ -2607,7 +2607,7 @@ Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &target
break;
} while (_saveSlotIdTemp[slot] == -1);
- _screen->copyRegion(72, 14, 72, 14, 176, 144, (_screen->getPageScaleFactor(0) == 2) ? 7 : 12, 0, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(72, 14, 72, 14, 176, 144, _vm->_useHiResDithering ? 7 : 12, 0, Screen::CR_NO_P_CHECK);
_screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
return (slot < 6) ? _savegameList[_savegameOffset + slot] : Common::String();
diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp
index b07e3a4965..0ba173d9d0 100644
--- a/engines/kyra/kyra_hof.cpp
+++ b/engines/kyra/kyra_hof.cpp
@@ -221,7 +221,7 @@ void KyraEngine_HoF::pauseEngineIntern(bool pause) {
Common::Error KyraEngine_HoF::init() {
_screen = new Screen_HoF(this, _system);
assert(_screen);
- _screen->setResolution(_flags.useHiResOverlay);
+ _screen->setResolution();
_debugger = new Debugger_HoF(this);
assert(_debugger);
diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp
index e8a2c02e6e..1dd53901e8 100644
--- a/engines/kyra/kyra_lok.cpp
+++ b/engines/kyra/kyra_lok.cpp
@@ -167,12 +167,12 @@ KyraEngine_LoK::~KyraEngine_LoK() {
}
Common::Error KyraEngine_LoK::init() {
- if (_flags.platform == Common::kPlatformPC98 && _flags.useHiResOverlay && ConfMan.getBool("16_color"))
+ if (_flags.platform == Common::kPlatformPC98 && _flags.useHiRes && ConfMan.getBool("16_color"))
_screen = new Screen_LoK_16(this, _system);
else
_screen = new Screen_LoK(this, _system);
assert(_screen);
- _screen->setResolution(_flags.useHiResOverlay);
+ _screen->setResolution();
_debugger = new Debugger_LoK(this);
assert(_debugger);
@@ -961,7 +961,7 @@ void KyraEngine_LoK::registerDefaultSettings() {
// specific to the Kyra engine.
ConfMan.registerDefault("walkspeed", 2);
- if (_flags.platform == Common::kPlatformPC98 && _flags.useHiResOverlay)
+ if (_flags.platform == Common::kPlatformPC98 && _flags.useHiRes)
ConfMan.registerDefault("16_color", false);
}
diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp
index 38f473a619..39ed0d038a 100644
--- a/engines/kyra/kyra_mr.cpp
+++ b/engines/kyra/kyra_mr.cpp
@@ -203,7 +203,7 @@ KyraEngine_MR::~KyraEngine_MR() {
Common::Error KyraEngine_MR::init() {
_screen = new Screen_MR(this, _system);
assert(_screen);
- _screen->setResolution(_flags.useHiResOverlay);
+ _screen->setResolution();
_debugger = new Debugger_v2(this);
assert(_debugger);
diff --git a/engines/kyra/kyra_rpg.cpp b/engines/kyra/kyra_rpg.cpp
index 121731e394..8857f64f7e 100644
--- a/engines/kyra/kyra_rpg.cpp
+++ b/engines/kyra/kyra_rpg.cpp
@@ -171,12 +171,6 @@ Common::Error KyraRpgEngine::init() {
_wllWallFlags = new uint8[256];
memset(_wllWallFlags, 0, 256);
- if (_flags.gameID == GI_EOB2 && _configRenderMode == Common::kRenderEGA) {
- _vcnBlockWidth <<= 1;
- _vcnBlockHeight <<= 1;
- SWAP(_vcnFlip0, _vcnFlip1);
- }
-
_blockDrawingBuffer = new uint16[1320];
memset(_blockDrawingBuffer, 0, 1320 * sizeof(uint16));
uint32 swbSize = 22 * _vcnBlockWidth * 2 * 15 * _vcnBlockHeight;
diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp
index 7c67af2f13..2672618c67 100644
--- a/engines/kyra/kyra_v1.cpp
+++ b/engines/kyra/kyra_v1.cpp
@@ -233,19 +233,16 @@ KyraEngine_v1::~KyraEngine_v1() {
Common::Point KyraEngine_v1::getMousePos() {
Common::Point mouse = _eventMan->getMousePos();
- if (_flags.useHiResOverlay) {
+ if (_flags.useHiRes) {
mouse.x >>= 1;
mouse.y >>= 1;
}
- mouse.x /= screen()->getPageScaleFactor(0);
- mouse.y /= screen()->getPageScaleFactor(0);
-
return mouse;
}
void KyraEngine_v1::setMousePos(int x, int y) {
- if (_flags.useHiResOverlay) {
+ if (_flags.useHiRes) {
x <<= 1;
y <<= 1;
}
@@ -312,12 +309,10 @@ int KyraEngine_v1::checkInput(Button *buttonList, bool mainLoop, int eventFlag)
case Common::EVENT_LBUTTONUP: {
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- if (_flags.useHiResOverlay) {
+ if (_flags.useHiRes) {
_mouseX >>= 1;
_mouseY >>= 1;
}
- _mouseX /= screen()->getPageScaleFactor(0);
- _mouseY /= screen()->getPageScaleFactor(0);
keys = (event.type == Common::EVENT_LBUTTONDOWN ? 199 : (200 | 0x800));
breakLoop = true;
} break;
@@ -326,12 +321,10 @@ int KyraEngine_v1::checkInput(Button *buttonList, bool mainLoop, int eventFlag)
case Common::EVENT_RBUTTONUP: {
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
- if (_flags.useHiResOverlay) {
+ if (_flags.useHiRes) {
_mouseX >>= 1;
_mouseY >>= 1;
}
- _mouseX /= screen()->getPageScaleFactor(0);
- _mouseY /= screen()->getPageScaleFactor(0);
keys = (event.type == Common::EVENT_RBUTTONDOWN ? 201 : (202 | 0x800));
breakLoop = true;
} break;
diff --git a/engines/kyra/kyra_v1.h b/engines/kyra/kyra_v1.h
index 95d58d4ab2..499f575a0c 100644
--- a/engines/kyra/kyra_v1.h
+++ b/engines/kyra/kyra_v1.h
@@ -118,7 +118,7 @@ struct GameFlags {
bool useAltShapeHeader : 1; // alternative shape header (uses 2 bytes more, those are unused though)
bool isTalkie : 1;
bool isOldFloppy : 1;
- bool useHiResOverlay : 1;
+ bool useHiRes : 1;
bool use16ColorMode : 1;
bool useDigSound : 1;
bool useInstallerPackage : 1;
diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp
index 022a878e0a..38e9d33259 100644
--- a/engines/kyra/lol.cpp
+++ b/engines/kyra/lol.cpp
@@ -364,7 +364,7 @@ GUI *LoLEngine::gui() const {
Common::Error LoLEngine::init() {
_screen = new Screen_LoL(this, _system);
assert(_screen);
- _screen->setResolution(_flags.useHiResOverlay);
+ _screen->setResolution();
_debugger = new Debugger_LoL(this);
assert(_debugger);
diff --git a/engines/kyra/magic_eob.cpp b/engines/kyra/magic_eob.cpp
index b2949ce1d5..985286854b 100644
--- a/engines/kyra/magic_eob.cpp
+++ b/engines/kyra/magic_eob.cpp
@@ -60,7 +60,7 @@ void EoBCoreEngine::useMagicBookOrSymbol(int charIndex, int type) {
}
if (!_updateFlags)
- _screen->copyRegion(64, 121, 0, 0, 112, 56, 0, (_screen->getPageScaleFactor(0) == 2) ? 4 : 10, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(64, 121, 0, 0, 112, 56, 0, _useHiResDithering ? 4 : 10, Screen::CR_NO_P_CHECK);
_updateFlags = 1;
gui_setPlayFieldButtons();
gui_drawSpellbook();
diff --git a/engines/kyra/saveload_eob.cpp b/engines/kyra/saveload_eob.cpp
index 4a446aa3f3..f7d7d95b57 100644
--- a/engines/kyra/saveload_eob.cpp
+++ b/engines/kyra/saveload_eob.cpp
@@ -298,7 +298,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
useMagicBookOrSymbol(_openBookChar, _openBookType);
}
- _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, (_screen->getPageScaleFactor(0) == 2) ? 1 : 12, Screen::CR_NO_P_CHECK);
+ _screen->copyRegion(0, 120, 0, 0, 176, 24, 0, _useHiResDithering ? 1 : 12, Screen::CR_NO_P_CHECK);
gui_toggleButtons();
setHandItem(_itemInHand);
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp
index ef6333b350..d3b4d6f943 100644
--- a/engines/kyra/screen.cpp
+++ b/engines/kyra/screen.cpp
@@ -106,8 +106,9 @@ bool Screen::init() {
memset(_fonts, 0, sizeof(_fonts));
- if (_vm->gameFlags().useHiResOverlay) {
- _useOverlays = true;
+ _useOverlays = (_vm->gameFlags().useHiRes && _renderMode != Common::kRenderEGA);
+
+ if (_useOverlays) {
_useSJIS = (_vm->gameFlags().lang == Common::JA_JPN);
_sjisInvisibleColor = (_vm->game() == GI_KYRA1) ? 0x80 : 0xF6;
@@ -226,7 +227,7 @@ bool Screen::enableScreenDebug(bool enable) {
if (_debugEnabled != enable) {
_debugEnabled = enable;
- setResolution(_vm->gameFlags().useHiResOverlay);
+ setResolution();
_forceFullUpdate = true;
updateScreen();
}
@@ -234,14 +235,14 @@ bool Screen::enableScreenDebug(bool enable) {
return temp;
}
-void Screen::setResolution(bool hiRes) {
+void Screen::setResolution() {
byte palette[3*256];
_system->getPaletteManager()->grabPalette(palette, 0, 256);
int width = 320, height = 200;
bool defaultTo1xScaler = false;
- if (hiRes) {
+ if (_vm->gameFlags().useHiRes) {
defaultTo1xScaler = true;
height = 400;
@@ -466,11 +467,6 @@ const uint8 *Screen::getCPagePtr(int pageNum) const {
return _pagePtrs[pageNum];
}
-int Screen::getPageScaleFactor(int pageNum) {
- assert(pageNum < SCREEN_PAGE_NUM);
- return _pageScaleFactor[pageNum];
-}
-
uint8 *Screen::getPageRect(int pageNum, int x, int y, int w, int h) {
assert(pageNum < SCREEN_PAGE_NUM);
if (pageNum == 0 || pageNum == 1)
@@ -1226,7 +1222,7 @@ bool Screen::loadFont(FontId fontId, const char *filename) {
fnt = new AMIGAFont();
#ifdef ENABLE_EOB
else if (_vm->game() == GI_EOB1 || _vm->game() == GI_EOB2)
- fnt = new OldDOSFont(_renderMode, (_vm->game() == GI_EOB2) && (_renderMode == Common::kRenderEGA));
+ fnt = new OldDOSFont(_renderMode, _vm->gameFlags().useHiRes);
#endif // ENABLE_EOB
else
fnt = new DOSFont();
@@ -2896,21 +2892,20 @@ void Screen::setMouseCursor(int x, int y, const byte *shape) {
if (_vm->gameFlags().useAltShapeHeader)
shape -= 2;
- if (_vm->gameFlags().useHiResOverlay) {
+ if (_vm->gameFlags().useHiRes) {
x <<= 1;
y <<= 1;
mouseWidth <<= 1;
mouseHeight <<= 1;
}
-
uint8 *cursor = new uint8[mouseHeight * mouseWidth];
fillRect(0, 0, mouseWidth, mouseHeight, _cursorColorKey, 8);
drawShape(8, shape, 0, 0, 0, 0);
int xOffset = 0;
- if (_vm->gameFlags().useHiResOverlay) {
+ if (_vm->gameFlags().useHiRes) {
xOffset = mouseWidth;
scale2x(getPagePtr(8) + mouseWidth, SCREEN_W, getPagePtr(8), SCREEN_W, mouseWidth, mouseHeight);
postProcessCursor(getPagePtr(8) + mouseWidth, mouseWidth, mouseHeight, SCREEN_W);
diff --git a/engines/kyra/screen.h b/engines/kyra/screen.h
index 18c0aa90f7..4f7f6d49ed 100644
--- a/engines/kyra/screen.h
+++ b/engines/kyra/screen.h
@@ -168,6 +168,7 @@ private:
Common::RenderMode _renderMode;
bool _useHiResEGADithering;
+ bool _useLoResEGA;
static uint16 *_cgaDitheringTable;
static int _numRef;
@@ -398,7 +399,7 @@ public:
// init
virtual bool init();
- virtual void setResolution(bool hiRes = false);
+ virtual void setResolution();
void updateScreen();
@@ -433,8 +434,6 @@ public:
virtual void setPagePixel(int pageNum, int x, int y, uint8 color);
const uint8 *getCPagePtr(int pageNum) const;
- int getPageScaleFactor(int pageNum);
-
uint8 *getPageRect(int pageNum, int x, int y, int w, int h);
// palette handling
@@ -580,6 +579,8 @@ protected:
bool _useOverlays;
bool _useSJIS;
bool _use16ColorMode;
+ bool _useHiResEGADithering;
+ bool _useLoResEGA;
bool _isAmiga;
Common::RenderMode _renderMode;
diff --git a/engines/kyra/screen_eob.cpp b/engines/kyra/screen_eob.cpp
index 38521d757c..dc53e8aca5 100644
--- a/engines/kyra/screen_eob.cpp
+++ b/engines/kyra/screen_eob.cpp
@@ -55,7 +55,7 @@ Screen_EoB::Screen_EoB(EoBCoreEngine *vm, OSystem *system) : Screen(vm, system,
_egaPixelValueTable = 0;
_cgaMappingDefault = 0;
_cgaDitheringTables[0] = _cgaDitheringTables[1] = 0;
- _useHiResEGADithering = false;
+ _useLoResEGA = _useHiResEGADithering = false;
}
Screen_EoB::~Screen_EoB() {
@@ -69,12 +69,8 @@ Screen_EoB::~Screen_EoB() {
}
bool Screen_EoB::init() {
- return init(false);
-}
-
-bool Screen_EoB::init(bool useHiResEGADithering) {
// Define hi-res pages for EGA mode in EOB II
- if (useHiResEGADithering) {
+ if (_vm->gameFlags().useHiRes) {
for (int i = 0; i < 8; i++)
_pageScaleFactor[i] = 2;
}
@@ -99,15 +95,16 @@ bool Screen_EoB::init(bool useHiResEGADithering) {
_dsTempPage = new uint8[12000];
- if (_renderMode == Common::kRenderEGA) {
- _useHiResEGADithering = useHiResEGADithering;
+ if (_vm->gameFlags().useHiRes && _renderMode == Common::kRenderEGA) {
+ _useHiResEGADithering = true;
_egaDitheringTable = new uint8[256];
_egaPixelValueTable = new uint8[256];
for (int i = 0; i < 256; i++) {
_egaDitheringTable[i] = i & 0x0f;
_egaPixelValueTable[i] = i & 0x0f;
}
-
+ } else if (_renderMode == Common::kRenderEGA) {
+ _useLoResEGA = true;
} else if (_renderMode == Common::kRenderCGA) {
_cgaMappingDefault = _vm->staticres()->loadRawData(kEoB1CgaMappingDefault, temp);
_cgaDitheringTables[0] = new uint16[256];
@@ -432,7 +429,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
uint8 *srcLineStart = getPagePtr(_curPage | 1) + y * 320 + (x << 3);
uint8 *src = srcLineStart;
- if (_renderMode == Common::kRenderEGA && !_useHiResEGADithering)
+ if (_useLoResEGA)
encode8bit = false;
if (_renderMode == Common::kRenderCGA) {
@@ -556,7 +553,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
*dst++ = (w & 0xff);
*dst++ = (h & 0xff);
- if (_renderMode == Common::kRenderEGA && !_useHiResEGADithering) {
+ if (_useLoResEGA) {
for (int i = 0; i < 16; i++)
dst[i] = i;
} else {
@@ -1538,6 +1535,7 @@ OldDOSFont::OldDOSFont(Common::RenderMode mode, bool useHiResEGADithering) : _re
_data = 0;
_width = _height = _numGlyphs = 0;
_bitmapOffsets = 0;
+ _useLoResEGA = (_renderMode == Common::kRenderEGA && !_useHiResEGADithering);
_numRef++;
if (!_cgaDitheringTable && _numRef == 1) {
@@ -1664,7 +1662,7 @@ void OldDOSFont::drawChar(uint16 c, byte *dst, int pitch) const {
uint16 cgaMask1 = cgaColorMask[color1 & 3];
uint16 cgaMask2 = cgaColorMask[color2 & 3];
- if (_renderMode == Common::kRenderCGA || (_renderMode == Common::kRenderEGA && !_useHiResEGADithering)) {
+ if (_renderMode == Common::kRenderCGA || _useLoResEGA) {
color1 &= 0x0f;
color2 &= 0x0f;
}
diff --git a/engines/kyra/screen_eob.h b/engines/kyra/screen_eob.h
index 2bcfbd8f60..92de5c8b38 100644
--- a/engines/kyra/screen_eob.h
+++ b/engines/kyra/screen_eob.h
@@ -36,7 +36,6 @@ public:
virtual ~Screen_EoB();
bool init();
- bool init(bool useHiResEGADithering);
void setClearScreenDim(int dim);
void clearCurDim();
@@ -116,7 +115,6 @@ private:
uint8 *_egaDitheringTable;
uint8 *_egaPixelValueTable;
- bool _useHiResEGADithering;
static const uint8 _egaMatchTable[];
static const ScreenDim _screenDimTable[];