Distinguish between green and amber hercules. Now specify it via hercGreen

and hercAmber. Updated documentation accordingly.

svn-id: r16975
This commit is contained in:
Eugene Sandulenko 2005-03-02 21:46:51 +00:00
parent 7a2a4f34dc
commit 50f6eb740c
9 changed files with 22 additions and 15 deletions

View file

@ -223,7 +223,8 @@ const char *getPlatformDescription(Platform id) {
const RenderModeDescription g_renderModes[] = {
{"hercules", "Hercules", kRenderHerc},
{"hercGreen", "Hercules Green", kRenderHercG},
{"hercAmber", "Hercules Amber", kRenderHercA},
{"cga", "CGA", kRenderCGA},
{"ega", "EGA", kRenderEGA},
{0, 0, kRenderDefault}

View file

@ -159,10 +159,11 @@ extern const char *getPlatformDescription(Platform id);
* such low-level adapters as CGA or Hercules.
*/
enum RenderMode {
kRenderDefault = -1,
kRenderDefault = 0,
kRenderEGA = 1,
kRenderCGA = 2,
kRenderHerc = 3
kRenderHercG = 3,
kRenderHercA = 4
};
enum HerculesDimesnions {

View file

@ -182,7 +182,7 @@ void OptionsDialog::close() {
ConfMan.set("gfx_mode", _gfxPopUp->getSelectedString(), _domain);
if ((int32)_renderModePopUp->getSelectedTag() >= 0)
ConfMan.set("render_mode", _renderModePopUp->getSelectedString(), _domain);
ConfMan.set("render_mode", Common::getRenderModeCode((Common::RenderMode)_renderModePopUp->getSelectedTag()), _domain);
} else {
ConfMan.removeKey("fullscreen", _domain);
ConfMan.removeKey("aspect_ratio", _domain);
@ -303,7 +303,7 @@ int OptionsDialog::addGraphicControls(GuiObject *boss, int yoffset) {
// RenderMode popup
_renderModePopUp = new PopUpWidget(boss, x-5, yoffset, w+5, kLineHeight, "Render mode: ", 100);
yoffset += 16;
_renderModePopUp->appendEntry("<default>");
_renderModePopUp->appendEntry("<default>", Common::kRenderDefault);
_renderModePopUp->appendEntry("");
const Common::RenderModeDescription *rm = Common::g_renderModes;
for (; rm->code; ++rm) {

View file

@ -1263,7 +1263,7 @@ void CharsetRenderer::translateColor() {
_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,
8, 15, 15, 15, 15, 15, 15, 15};
_color = HercTextColorMap[_color & 0x0f];

View file

@ -232,7 +232,7 @@ void Gdi::init() {
memset(_compositeBuf, 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);
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)
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);
// center image on the screen
_vm->_system->copyRectToScreen(_herculesBuf + x + y * Common::kHercW,

View file

@ -131,7 +131,7 @@ void ScummEngine::parseEvents() {
_mouse.x = event.mouse.x;
_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 /= 2;
_mouse.y = _mouse.y * 4 / 7;

View file

@ -50,7 +50,11 @@ void ScummEngine::setupAmigaPalette() {
void ScummEngine::setupHercPalette() {
setPalColor( 0, 0, 0, 0);
if (_renderMode == Common::kRenderHercA)
setPalColor( 1, 0xAE, 0x69, 0x38);
else
setPalColor( 1, 0x00, 0xFF, 0x00);
// Setup cursor palette
setPalColor( 7, 170, 170, 170);

View file

@ -1022,7 +1022,8 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
_renderMode = Common::kRenderDefault;
switch (_renderMode) {
case Common::kRenderHerc:
case Common::kRenderHercA:
case Common::kRenderHercG:
if (_version > 2 && _gameId != GID_MONKEY_EGA)
_renderMode = Common::kRenderDefault;
break;
@ -1058,7 +1059,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
} else if (_features & GF_NES) {
_screenWidth = 256;
_screenHeight = 240;
} else if (_renderMode == Common::kRenderHerc) {
} else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
_features |= GF_DEFAULT_TO_1X_SCALER;
_screenWidth = 320;
_screenHeight = 200;
@ -1152,7 +1153,7 @@ int ScummEngine::init(GameDetector &detector) {
// Initialize backend
_system->beginGFXTransaction();
initCommonGFX(detector);
if (_renderMode == Common::kRenderHerc) {
if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) {
_system->initSize(Common::kHercW, Common::kHercH);
_features |= GF_DEFAULT_TO_1X_SCALER;
_system->setGraphicsMode("1x");
@ -1317,7 +1318,7 @@ void ScummEngine::scummInit() {
_shadowPalette[i] = i;
if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST))
setupAmigaPalette();
else if (_renderMode == Common::kRenderHerc)
else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG)
setupHercPalette();
else if (_renderMode == Common::kRenderCGA)
setupCGAPalette();

View file

@ -560,7 +560,7 @@ void ScummEngine::initScummVars() {
VAR(VAR_VIDEOMODE) = 82;
else if (_renderMode == Common::kRenderCGA)
VAR(VAR_VIDEOMODE) = 4;
else if (_renderMode == Common::kRenderHerc)
else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG)
VAR(VAR_VIDEOMODE) = 30;
else if (_renderMode == Common::kRenderEGA)
VAR(VAR_VIDEOMODE) = 13;