Distinguish between green and amber hercules. Now specify it via hercGreen
and hercAmber. Updated documentation accordingly. svn-id: r16975
This commit is contained in:
parent
7a2a4f34dc
commit
50f6eb740c
9 changed files with 22 additions and 15 deletions
|
@ -223,7 +223,8 @@ const char *getPlatformDescription(Platform id) {
|
||||||
|
|
||||||
|
|
||||||
const RenderModeDescription g_renderModes[] = {
|
const RenderModeDescription g_renderModes[] = {
|
||||||
{"hercules", "Hercules", kRenderHerc},
|
{"hercGreen", "Hercules Green", kRenderHercG},
|
||||||
|
{"hercAmber", "Hercules Amber", kRenderHercA},
|
||||||
{"cga", "CGA", kRenderCGA},
|
{"cga", "CGA", kRenderCGA},
|
||||||
{"ega", "EGA", kRenderEGA},
|
{"ega", "EGA", kRenderEGA},
|
||||||
{0, 0, kRenderDefault}
|
{0, 0, kRenderDefault}
|
||||||
|
|
|
@ -159,10 +159,11 @@ extern const char *getPlatformDescription(Platform id);
|
||||||
* such low-level adapters as CGA or Hercules.
|
* such low-level adapters as CGA or Hercules.
|
||||||
*/
|
*/
|
||||||
enum RenderMode {
|
enum RenderMode {
|
||||||
kRenderDefault = -1,
|
kRenderDefault = 0,
|
||||||
kRenderEGA = 1,
|
kRenderEGA = 1,
|
||||||
kRenderCGA = 2,
|
kRenderCGA = 2,
|
||||||
kRenderHerc = 3
|
kRenderHercG = 3,
|
||||||
|
kRenderHercA = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HerculesDimesnions {
|
enum HerculesDimesnions {
|
||||||
|
|
|
@ -182,7 +182,7 @@ void OptionsDialog::close() {
|
||||||
ConfMan.set("gfx_mode", _gfxPopUp->getSelectedString(), _domain);
|
ConfMan.set("gfx_mode", _gfxPopUp->getSelectedString(), _domain);
|
||||||
|
|
||||||
if ((int32)_renderModePopUp->getSelectedTag() >= 0)
|
if ((int32)_renderModePopUp->getSelectedTag() >= 0)
|
||||||
ConfMan.set("render_mode", _renderModePopUp->getSelectedString(), _domain);
|
ConfMan.set("render_mode", Common::getRenderModeCode((Common::RenderMode)_renderModePopUp->getSelectedTag()), _domain);
|
||||||
} else {
|
} else {
|
||||||
ConfMan.removeKey("fullscreen", _domain);
|
ConfMan.removeKey("fullscreen", _domain);
|
||||||
ConfMan.removeKey("aspect_ratio", _domain);
|
ConfMan.removeKey("aspect_ratio", _domain);
|
||||||
|
@ -303,7 +303,7 @@ int OptionsDialog::addGraphicControls(GuiObject *boss, int yoffset) {
|
||||||
// RenderMode popup
|
// RenderMode popup
|
||||||
_renderModePopUp = new PopUpWidget(boss, x-5, yoffset, w+5, kLineHeight, "Render mode: ", 100);
|
_renderModePopUp = new PopUpWidget(boss, x-5, yoffset, w+5, kLineHeight, "Render mode: ", 100);
|
||||||
yoffset += 16;
|
yoffset += 16;
|
||||||
_renderModePopUp->appendEntry("<default>");
|
_renderModePopUp->appendEntry("<default>", Common::kRenderDefault);
|
||||||
_renderModePopUp->appendEntry("");
|
_renderModePopUp->appendEntry("");
|
||||||
const Common::RenderModeDescription *rm = Common::g_renderModes;
|
const Common::RenderModeDescription *rm = Common::g_renderModes;
|
||||||
for (; rm->code; ++rm) {
|
for (; rm->code; ++rm) {
|
||||||
|
|
|
@ -1263,7 +1263,7 @@ void CharsetRenderer::translateColor() {
|
||||||
_color = CGAtextColorMap[_color & 0x0f];
|
_color = CGAtextColorMap[_color & 0x0f];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vm->_renderMode == Common::kRenderHerc) {
|
if (_vm->_renderMode == Common::kRenderHercA || _vm->_renderMode == Common::kRenderHercG) {
|
||||||
static byte HercTextColorMap[16] = {0, 15, 2, 15, 15, 5, 15, 15,
|
static byte HercTextColorMap[16] = {0, 15, 2, 15, 15, 5, 15, 15,
|
||||||
8, 15, 15, 15, 15, 15, 15, 15};
|
8, 15, 15, 15, 15, 15, 15, 15};
|
||||||
_color = HercTextColorMap[_color & 0x0f];
|
_color = HercTextColorMap[_color & 0x0f];
|
||||||
|
|
|
@ -232,7 +232,7 @@ void Gdi::init() {
|
||||||
memset(_compositeBuf, CHARSET_MASK_TRANSPARENCY, size);
|
memset(_compositeBuf, CHARSET_MASK_TRANSPARENCY, size);
|
||||||
memset(_textSurface.pixels, CHARSET_MASK_TRANSPARENCY, size);
|
memset(_textSurface.pixels, CHARSET_MASK_TRANSPARENCY, size);
|
||||||
|
|
||||||
if (_vm->_renderMode == Common::kRenderHerc) {
|
if (_vm->_renderMode == Common::kRenderHercA || _vm->_renderMode == Common::kRenderHercG) {
|
||||||
_herculesBuf = (byte *)malloc(Common::kHercW * Common::kHercH);
|
_herculesBuf = (byte *)malloc(Common::kHercW * Common::kHercH);
|
||||||
memset(_herculesBuf, CHARSET_MASK_TRANSPARENCY, Common::kHercW * Common::kHercH);
|
memset(_herculesBuf, CHARSET_MASK_TRANSPARENCY, Common::kHercW * Common::kHercH);
|
||||||
}
|
}
|
||||||
|
@ -519,7 +519,7 @@ void Gdi::drawStripToScreen(VirtScreen *vs, int x, int width, int top, int botto
|
||||||
if (_vm->_renderMode == Common::kRenderCGA)
|
if (_vm->_renderMode == Common::kRenderCGA)
|
||||||
ditherCGA(_compositeBuf + x + y * _vm->_screenWidth, _vm->_screenWidth, x, y, width, height);
|
ditherCGA(_compositeBuf + x + y * _vm->_screenWidth, _vm->_screenWidth, x, y, width, height);
|
||||||
|
|
||||||
if (_vm->_renderMode == Common::kRenderHerc) {
|
if (_vm->_renderMode == Common::kRenderHercA || _vm->_renderMode == Common::kRenderHercG) {
|
||||||
ditherHerc(_compositeBuf + x + y * _vm->_screenWidth, _herculesBuf, _vm->_screenWidth, &x, &y, &width, &height);
|
ditherHerc(_compositeBuf + x + y * _vm->_screenWidth, _herculesBuf, _vm->_screenWidth, &x, &y, &width, &height);
|
||||||
// center image on the screen
|
// center image on the screen
|
||||||
_vm->_system->copyRectToScreen(_herculesBuf + x + y * Common::kHercW,
|
_vm->_system->copyRectToScreen(_herculesBuf + x + y * Common::kHercW,
|
||||||
|
|
|
@ -131,7 +131,7 @@ void ScummEngine::parseEvents() {
|
||||||
_mouse.x = event.mouse.x;
|
_mouse.x = event.mouse.x;
|
||||||
_mouse.y = event.mouse.y;
|
_mouse.y = event.mouse.y;
|
||||||
|
|
||||||
if (_renderMode == Common::kRenderHerc) {
|
if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
|
||||||
_mouse.x -= (Common::kHercW - _screenWidth * 2) / 2;
|
_mouse.x -= (Common::kHercW - _screenWidth * 2) / 2;
|
||||||
_mouse.x /= 2;
|
_mouse.x /= 2;
|
||||||
_mouse.y = _mouse.y * 4 / 7;
|
_mouse.y = _mouse.y * 4 / 7;
|
||||||
|
|
|
@ -50,7 +50,11 @@ void ScummEngine::setupAmigaPalette() {
|
||||||
|
|
||||||
void ScummEngine::setupHercPalette() {
|
void ScummEngine::setupHercPalette() {
|
||||||
setPalColor( 0, 0, 0, 0);
|
setPalColor( 0, 0, 0, 0);
|
||||||
setPalColor( 1, 0xAE, 0x69, 0x38);
|
|
||||||
|
if (_renderMode == Common::kRenderHercA)
|
||||||
|
setPalColor( 1, 0xAE, 0x69, 0x38);
|
||||||
|
else
|
||||||
|
setPalColor( 1, 0x00, 0xFF, 0x00);
|
||||||
|
|
||||||
// Setup cursor palette
|
// Setup cursor palette
|
||||||
setPalColor( 7, 170, 170, 170);
|
setPalColor( 7, 170, 170, 170);
|
||||||
|
|
|
@ -1022,7 +1022,8 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
|
||||||
_renderMode = Common::kRenderDefault;
|
_renderMode = Common::kRenderDefault;
|
||||||
|
|
||||||
switch (_renderMode) {
|
switch (_renderMode) {
|
||||||
case Common::kRenderHerc:
|
case Common::kRenderHercA:
|
||||||
|
case Common::kRenderHercG:
|
||||||
if (_version > 2 && _gameId != GID_MONKEY_EGA)
|
if (_version > 2 && _gameId != GID_MONKEY_EGA)
|
||||||
_renderMode = Common::kRenderDefault;
|
_renderMode = Common::kRenderDefault;
|
||||||
break;
|
break;
|
||||||
|
@ -1058,7 +1059,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
|
||||||
} else if (_features & GF_NES) {
|
} else if (_features & GF_NES) {
|
||||||
_screenWidth = 256;
|
_screenWidth = 256;
|
||||||
_screenHeight = 240;
|
_screenHeight = 240;
|
||||||
} else if (_renderMode == Common::kRenderHerc) {
|
} else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
|
||||||
_features |= GF_DEFAULT_TO_1X_SCALER;
|
_features |= GF_DEFAULT_TO_1X_SCALER;
|
||||||
_screenWidth = 320;
|
_screenWidth = 320;
|
||||||
_screenHeight = 200;
|
_screenHeight = 200;
|
||||||
|
@ -1152,7 +1153,7 @@ int ScummEngine::init(GameDetector &detector) {
|
||||||
// Initialize backend
|
// Initialize backend
|
||||||
_system->beginGFXTransaction();
|
_system->beginGFXTransaction();
|
||||||
initCommonGFX(detector);
|
initCommonGFX(detector);
|
||||||
if (_renderMode == Common::kRenderHerc) {
|
if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
|
||||||
_system->initSize(Common::kHercW, Common::kHercH);
|
_system->initSize(Common::kHercW, Common::kHercH);
|
||||||
_features |= GF_DEFAULT_TO_1X_SCALER;
|
_features |= GF_DEFAULT_TO_1X_SCALER;
|
||||||
_system->setGraphicsMode("1x");
|
_system->setGraphicsMode("1x");
|
||||||
|
@ -1317,7 +1318,7 @@ void ScummEngine::scummInit() {
|
||||||
_shadowPalette[i] = i;
|
_shadowPalette[i] = i;
|
||||||
if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST))
|
if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST))
|
||||||
setupAmigaPalette();
|
setupAmigaPalette();
|
||||||
else if (_renderMode == Common::kRenderHerc)
|
else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG)
|
||||||
setupHercPalette();
|
setupHercPalette();
|
||||||
else if (_renderMode == Common::kRenderCGA)
|
else if (_renderMode == Common::kRenderCGA)
|
||||||
setupCGAPalette();
|
setupCGAPalette();
|
||||||
|
|
|
@ -560,7 +560,7 @@ void ScummEngine::initScummVars() {
|
||||||
VAR(VAR_VIDEOMODE) = 82;
|
VAR(VAR_VIDEOMODE) = 82;
|
||||||
else if (_renderMode == Common::kRenderCGA)
|
else if (_renderMode == Common::kRenderCGA)
|
||||||
VAR(VAR_VIDEOMODE) = 4;
|
VAR(VAR_VIDEOMODE) = 4;
|
||||||
else if (_renderMode == Common::kRenderHerc)
|
else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG)
|
||||||
VAR(VAR_VIDEOMODE) = 30;
|
VAR(VAR_VIDEOMODE) = 30;
|
||||||
else if (_renderMode == Common::kRenderEGA)
|
else if (_renderMode == Common::kRenderEGA)
|
||||||
VAR(VAR_VIDEOMODE) = 13;
|
VAR(VAR_VIDEOMODE) = 13;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue