[Scummvm-git-logs] scummvm master -> df9fc52c05df68464c642202aade68f37bd56eed
sev-
noreply at scummvm.org
Sun Dec 3 20:04:06 UTC 2023
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
bd22763cdc SCUMM: MACGUI: Implement correct video size for Mac v3 games
078bbe94bb SCUMM: Adjust Mac dialog coordinates for 640x480 pixels
a0da4e12c6 SCUMM: Adjust Mac Loom practice box coordinates and dragging
826fe9661f SCUMM: MACGUI: Fix pause banner position
f7e98ec889 SCUMM: DETECTION: Add GUIO_NOASPECT to Mac versions of Indy3 and Loom
2768e8d551 SCUMM: Really fix Mac dialog position
df9fc52c05 SCUMM: Simplify Mac Indy 3 verb button and inventory initialization
Commit: bd22763cdcf3e7c7e575483b63860976b1b44de2
https://github.com/scummvm/scummvm/commit/bd22763cdcf3e7c7e575483b63860976b1b44de2
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: MACGUI: Implement correct video size for Mac v3 games
This commit brings games to 640x480 (from 640x400).
All old savegames are compatible and are brought up to date in
real time.
Changed paths:
engines/scumm/charset.cpp
engines/scumm/gfx.cpp
engines/scumm/gfx_mac.cpp
engines/scumm/saveload.cpp
engines/scumm/script_v5.cpp
engines/scumm/scumm.cpp
engines/scumm/scumm.h
engines/scumm/string.cpp
diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp
index 71983b69184..b4f117e8ec1 100644
--- a/engines/scumm/charset.cpp
+++ b/engines/scumm/charset.cpp
@@ -1220,7 +1220,7 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr,
dstPtr = vs->getPixels(_left, drawTop);
} else {
dstSurface = _vm->_textSurface;
- dstPtr = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, (_top - _vm->_screenTop) * _vm->_textSurfaceMultiplier);
+ dstPtr = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, (_top - _vm->_screenTop - _vm->_screenDrawOffset) * _vm->_textSurfaceMultiplier);
}
if (_blitAlso && vs->hasTwoBuffers) {
@@ -1231,7 +1231,7 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr,
}
if (!ignoreCharsetMask && vs->hasTwoBuffers) {
- drawTop = _top - _vm->_screenTop;
+ drawTop = _top - _vm->_screenTop - _vm->_screenDrawOffset;
}
if (is2byte && _vm->_game.platform != Common::kPlatformFMTowns)
@@ -1691,7 +1691,7 @@ void CharsetRendererMac::printChar(int chr, bool ignoreCharsetMask) {
// If this is the beginning of a line, assume the position will be
// correct without any padding.
- if (_firstChar || _top != _lastTop) {
+ if (_firstChar || (_top - _vm->_screenDrawOffset) != _lastTop) {
_pad = false;
}
@@ -1709,7 +1709,6 @@ void CharsetRendererMac::printChar(int chr, bool ignoreCharsetMask) {
int macLeft = 2 * _left;
int macTop = 2 * _top;
-
// The last character ended on an odd X coordinate. This information
// was lost in the rounding, so we compensate for it here.
@@ -1749,7 +1748,7 @@ void CharsetRendererMac::printChar(int chr, bool ignoreCharsetMask) {
bool drawToTextBox = (vs->number == kTextVirtScreen && _vm->_game.id == GID_INDY3);
if (drawToTextBox)
- _vm->_macGui->printCharToTextArea(chr, macLeft, macTop, color);
+ _vm->_macGui->printCharToTextArea(chr, macLeft, macTop - 2 * (_vm->_screenDrawOffset), color);
else
printCharInternal(chr, color, enableShadow, macLeft, macTop);
@@ -1829,7 +1828,7 @@ void CharsetRendererMac::printChar(int chr, bool ignoreCharsetMask) {
_pad = true;
_left = macLeft / 2;
- _lastTop = _top;
+ _lastTop = _top - _vm->_screenDrawOffset;
}
byte CharsetRendererMac::getTextColor() {
diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp
index 48e15d759c7..7ed5a3fd845 100644
--- a/engines/scumm/gfx.cpp
+++ b/engines/scumm/gfx.cpp
@@ -1229,7 +1229,7 @@ void ScummEngine::restoreBackground(Common::Rect rect, byte backColor) {
} else
#endif
{
- byte *mask = (byte *)_textSurface.getBasePtr(rect.left, rect.top - _screenTop);
+ byte *mask = (byte *)_textSurface.getBasePtr(rect.left, rect.top - _screenTop - _screenDrawOffset);
fill(mask, _textSurface.pitch, CHARSET_MASK_TRANSPARENCY, width * _textSurfaceMultiplier, height * _textSurfaceMultiplier, _textSurface.format.bytesPerPixel);
}
}
@@ -1256,7 +1256,7 @@ void ScummEngine::restoreBackground(Common::Rect rect, byte backColor) {
void ScummEngine::restoreCharsetBg() {
_nextLeft = _string[0].xpos;
- _nextTop = _string[0].ypos + _screenTop;
+ _nextTop = _string[0].ypos + _screenTop + _screenDrawOffset;
if (_charset->_hasMask || _postGUICharMask) {
_postGUICharMask = false;
@@ -1426,7 +1426,7 @@ void ScummEngine::drawBox(int x, int y, int x2, int y2, int color) {
VirtScreen *vs;
byte *backbuff, *bgbuff;
- if ((vs = findVirtScreen(y)) == nullptr)
+ if ((vs = findVirtScreen(y + _screenDrawOffset)) == nullptr)
return;
if (_game.version == 8) {
@@ -1468,8 +1468,8 @@ void ScummEngine::drawBox(int x, int y, int x2, int y2, int color) {
y2++;
// Adjust for the topline of the VirtScreen
- y -= vs->topline;
- y2 -= vs->topline;
+ y -= vs->topline - _screenDrawOffset;
+ y2 -= vs->topline - _screenDrawOffset;
// Clip the coordinates
if (x < 0)
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index c9b6c14047f..c5d2d9a0562 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -142,7 +142,7 @@ void ScummEngine::mac_drawIndy3TextBox() {
// They are not drawn to the screen.
int x = 96;
- int y = 32;
+ int y = 32 + _screenDrawOffset * 2;
int w = s->w;
int h = s->h - 2;
@@ -163,7 +163,7 @@ void ScummEngine::mac_undrawIndy3TextBox() {
Graphics::Surface *s = _macGui->textArea();
int x = 96;
- int y = 32;
+ int y = 32 + _screenDrawOffset * 2;
int w = s->w;
int h = s->h - 2;
@@ -2573,7 +2573,7 @@ void MacGui::initialize() {
_windowManager = new Graphics::MacWindowManager(menuMode);
_windowManager->setEngine(_vm);
- _windowManager->setScreen(640, 400);
+ _windowManager->setScreen(640, _vm->_useMacScreenCorrectHeight ? 480 : 400);
if (_vm->isUsingOriginalGUI()) {
_windowManager->setMenuHotzone(Common::Rect(640, 23));
@@ -5099,35 +5099,35 @@ MacIndy3Gui::MacIndy3Gui(ScummEngine *vm, Common::String resourceFile) :
Widget::_surface = _surface;
Widget::_gui = this;
- _widgets[ 1] = new Button(137, 312, 68, 18); // Open
- _widgets[ 2] = new Button(137, 332, 68, 18); // Close
- _widgets[ 3] = new Button( 67, 352, 68, 18); // Give
- _widgets[ 4] = new Button(277, 332, 68, 18); // Turn on
- _widgets[ 5] = new Button(277, 352, 68, 18); // Turn off
- _widgets[ 6] = new Button( 67, 312, 68, 18); // Push
- _widgets[ 7] = new Button( 67, 332, 68, 18); // Pull
- _widgets[ 8] = new Button(277, 312, 68, 18); // Use
- _widgets[ 9] = new Button(137, 352, 68, 18); // Look at
- _widgets[ 10] = new Button(207, 312, 68, 18); // Walk to
- _widgets[ 11] = new Button(207, 332, 68, 18); // Pick up
- _widgets[ 12] = new Button(207, 352, 68, 18); // What is
- _widgets[ 13] = new Button(347, 312, 68, 18); // Talk
- _widgets[ 14] = new Button( 97, 312, 121, 18); // Never mind.
- _widgets[ 32] = new Button(347, 332, 68, 18); // Travel
- _widgets[ 33] = new Button(347, 352, 68, 18); // To Indy
- _widgets[ 34] = new Button(347, 352, 68, 18); // To Henry
- _widgets[ 90] = new Button( 67, 292, 507, 18); // Travel 1
- _widgets[ 91] = new Button( 67, 312, 507, 18); // Travel 2
- _widgets[ 92] = new Button( 67, 332, 507, 18); // Travel 3
- _widgets[100] = new Button( 67, 292, 348, 18); // Sentence
- _widgets[101] = new Inventory(417, 292, 157, 78);
- _widgets[119] = new Button(324, 312, 91, 18); // Take this:
- _widgets[120] = new Button( 67, 292, 507, 18); // Converse 1
- _widgets[121] = new Button( 67, 312, 507, 18); // Converse 2
- _widgets[122] = new Button( 67, 332, 507, 18); // Converse 3
- _widgets[123] = new Button( 67, 352, 507, 18); // Converse 4
- _widgets[124] = new Button( 67, 352, 151, 18); // Converse 5
- _widgets[125] = new Button(423, 352, 151, 18); // Converse 6
+ _widgets[ 1] = new Button(137, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Open
+ _widgets[ 2] = new Button(137, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Close
+ _widgets[ 3] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Give
+ _widgets[ 4] = new Button(277, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Turn on
+ _widgets[ 5] = new Button(277, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Turn off
+ _widgets[ 6] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Push
+ _widgets[ 7] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Pull
+ _widgets[ 8] = new Button(277, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Use
+ _widgets[ 9] = new Button(137, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Look at
+ _widgets[ 10] = new Button(207, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Walk to
+ _widgets[ 11] = new Button(207, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Pick up
+ _widgets[ 12] = new Button(207, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // What is
+ _widgets[ 13] = new Button(347, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Talk
+ _widgets[ 14] = new Button( 97, 312 + 2 * (_vm->_screenDrawOffset), 121, 18); // Never mind.
+ _widgets[ 32] = new Button(347, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Travel
+ _widgets[ 33] = new Button(347, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // To Indy
+ _widgets[ 34] = new Button(347, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // To Henry
+ _widgets[ 90] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 1
+ _widgets[ 91] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 2
+ _widgets[ 92] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 3
+ _widgets[100] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 348, 18); // Sentence
+ _widgets[101] = new Inventory(417, 292 + 2 * (_vm->_screenDrawOffset), 157, 78);
+ _widgets[119] = new Button(324, 312 + 2 * (_vm->_screenDrawOffset), 91, 18); // Take this:
+ _widgets[120] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 1
+ _widgets[121] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 2
+ _widgets[122] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 3
+ _widgets[123] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 4
+ _widgets[124] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 151, 18); // Converse 5
+ _widgets[125] = new Button(423, 352 + 2 * (_vm->_screenDrawOffset), 151, 18); // Converse 6
for (auto &it: _widgets)
it._value->setVerbid(it._key);
@@ -5810,7 +5810,7 @@ bool MacIndy3Gui::isVerbGuiAllowed() const {
// really seems to be all that's needed.
VirtScreen *vs = &_vm->_virtscr[kVerbVirtScreen];
- if (vs->topline != 144 || vs->h != 56)
+ if (vs->topline != 144 + _vm->_screenDrawOffset || vs->h != 56 + _vm->_screenDrawOffset)
return false;
// HACK: Don't allow the GUI during fist fights. Usually this is not a
@@ -6006,22 +6006,22 @@ void MacIndy3Gui::show() {
_visible = true;
- _surface->fillRect(Common::Rect(0, 288, 640, 289), kBlack);
- _surface->fillRect(Common::Rect(0, 373, 640, 400), kBlack);
+ _surface->fillRect(Common::Rect(0, 288 + 2 * (_vm->_screenDrawOffset), 640, 289 + 2 * (_vm->_screenDrawOffset)), kBlack);
+ _surface->fillRect(Common::Rect(0, 373 + 2 * (_vm->_screenDrawOffset), 640, _vm->_useMacScreenCorrectHeight ? 480 : 400), kBlack);
- fill(Common::Rect(0, 290, 640, 373));
+ fill(Common::Rect(0, 290 + 2 * (_vm->_screenDrawOffset), 640, 373 + 2 * (_vm->_screenDrawOffset)));
const uint16 ulCorner[] = { 0xF000, 0xC000, 0x8000, 0x8000 };
const uint16 urCorner[] = { 0xF000, 0x3000, 0x1000, 0x1000 };
const uint16 llCorner[] = { 0x8000, 0x8000, 0xC000, 0xF000 };
const uint16 lrCorner[] = { 0x1000, 0x1000, 0x3000, 0xF000 };
- drawBitmap(Common::Rect( 0, 290, 4, 294), ulCorner, kBlack);
- drawBitmap(Common::Rect(636, 290, 640, 294), urCorner, kBlack);
- drawBitmap(Common::Rect( 0, 369, 4, 373), llCorner, kBlack);
- drawBitmap(Common::Rect(636, 369, 640, 373), lrCorner, kBlack);
+ drawBitmap(Common::Rect( 0, 290 + 2 * (_vm->_screenDrawOffset), 4, 294 + 2 * (_vm->_screenDrawOffset)), ulCorner, kBlack);
+ drawBitmap(Common::Rect(636, 290 + 2 * (_vm->_screenDrawOffset), 640, 294 + 2 * (_vm->_screenDrawOffset)), urCorner, kBlack);
+ drawBitmap(Common::Rect( 0, 369 + 2 * (_vm->_screenDrawOffset), 4, 373 + 2 * (_vm->_screenDrawOffset)), llCorner, kBlack);
+ drawBitmap(Common::Rect(636, 369 + 2 * (_vm->_screenDrawOffset), 640, 373 + 2 * (_vm->_screenDrawOffset)), lrCorner, kBlack);
- markScreenAsDirty(Common::Rect(0, 288, 640, 400));
+ markScreenAsDirty(Common::Rect(0, 288 + 2 * (_vm->_screenDrawOffset), 640, _vm->_useMacScreenCorrectHeight ? 480 : 400));
}
void MacIndy3Gui::hide() {
@@ -6036,8 +6036,8 @@ void MacIndy3Gui::hide() {
reset();
if (isVerbGuiAllowed()) {
- _surface->fillRect(Common::Rect(0, 288, 640, 400), kBlack);
- markScreenAsDirty(Common::Rect(0, 288, 640, 400));
+ _surface->fillRect(Common::Rect(0, 288 + 2 * (_vm->_screenDrawOffset), 640, _vm->_useMacScreenCorrectHeight ? 480 : 400), kBlack);
+ markScreenAsDirty(Common::Rect(0, 288 + 2 * (_vm->_screenDrawOffset), 640, _vm->_useMacScreenCorrectHeight ? 480 : 400));
}
}
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 55bde2e202d..10634f415e2 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -68,7 +68,7 @@ struct SaveInfoSection {
#define SaveInfoSectionSize (4+4+4 + 4+4 + 4+2)
-#define CURRENT_VER 111
+#define CURRENT_VER 112
#define INFOSECTION_VERSION 2
#pragma mark -
@@ -744,6 +744,9 @@ bool ScummEngine::loadState(int slot, bool compat, Common::String &filename) {
if (_game.features & GF_OLD_BUNDLE)
loadCharset(0); // FIXME - HACK ?
+ // Save this for later
+ bool currentSessionUsesCorrection = _useMacScreenCorrectHeight;
+
//
// Now do the actual loading
//
@@ -862,8 +865,18 @@ bool ScummEngine::loadState(int slot, bool compat, Common::String &filename) {
vs->setDirtyRange(0, vs->h);
updateDirtyScreen(kMainVirtScreen);
updatePalette();
+
+ if (!currentSessionUsesCorrection && _useMacScreenCorrectHeight) {
+ sb -= 20 * 2;
+ sh -= 20 * 2;
+ } else if (currentSessionUsesCorrection && !_useMacScreenCorrectHeight) {
+ sb += 20 * 2;
+ sh += 20 * 2;
+ }
+
initScreens(sb, sh);
+ _useMacScreenCorrectHeight = currentSessionUsesCorrection;
_completeScreenRedraw = true;
// Reset charset mask
@@ -1396,6 +1409,7 @@ void ScummEngine::saveLoadWithSerializer(Common::Serializer &s) {
// WORKAROUND: FM-TOWNS original _screenHeight is 240. if we use trim_fmtowns_to_200_pixels, it's reduced to 200
// camera's y is always half of the screen. in order to share save games between the two modes, we need to update the y
camera._cur.y = _screenHeight / 2;
+
s.syncAsSint16LE(camera._last.x, VER(8));
s.syncAsSint16LE(camera._last.y, VER(8));
s.syncAsSint16LE(camera._accel.x, VER(8));
@@ -1409,6 +1423,30 @@ void ScummEngine::saveLoadWithSerializer(Common::Serializer &s) {
s.syncAsUint16LE(camera._movingToActor, VER(8));
s.syncAsByte(_cameraIsFrozen, VER(108));
+ // For Mac versions...
+ bool currentSessionUsesCorrection = _useMacScreenCorrectHeight;
+
+ s.syncAsUint16LE(_screenDrawOffset, VER(112));
+ s.syncAsByte(_useMacScreenCorrectHeight, VER(112));
+
+ // If this is an older version without Mac screen
+ // offset correction, bring it up to date...
+ if (s.isLoading()) {
+ if (s.getVersion() < VER(112)) {
+ // We assume _useMacScreenCorrectHeight == false
+ camera._cur.y += _screenDrawOffset;
+ camera._last.y += _screenDrawOffset;
+ } else {
+ if (!currentSessionUsesCorrection && _useMacScreenCorrectHeight) {
+ camera._cur.y -= _screenDrawOffset;
+ camera._last.y -= _screenDrawOffset;
+ } else if (currentSessionUsesCorrection && !_useMacScreenCorrectHeight) {
+ camera._cur.y += _screenDrawOffset;
+ camera._last.y += _screenDrawOffset;
+ }
+ }
+ }
+
s.syncAsByte(_actorToPrintStrFor, VER(8));
s.syncAsByte(_charsetColor, VER(8));
@@ -1555,6 +1593,22 @@ void ScummEngine::saveLoadWithSerializer(Common::Serializer &s) {
s.syncAsUint16LE(_screenB, VER(8));
s.syncAsUint16LE(_screenH, VER(8));
+ // Other screen offset corrections for Mac games savestates...
+ if (s.isLoading()) {
+ if (s.getVersion() < VER(112)) {
+ _screenB += _screenDrawOffset;
+ _screenH += _screenDrawOffset;
+ } else {
+ if (currentSessionUsesCorrection && !_useMacScreenCorrectHeight) {
+ _screenB -= _screenDrawOffset;
+ _screenH -= _screenDrawOffset;
+ } else if (!currentSessionUsesCorrection && _useMacScreenCorrectHeight) {
+ _screenB += _screenDrawOffset;
+ _screenH += _screenDrawOffset;
+ }
+ }
+ }
+
s.syncAsUint16LE(_NESCostumeSet, VER(47));
s.skip(2, VER(9), VER(9)); // _cd_track
diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index 1fecd6ea930..a26e8762d6d 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -2223,6 +2223,13 @@ void ScummEngine_v5::o5_roomOps() {
a = getVarOrDirectWord(PARAM_1);
b = getVarOrDirectWord(PARAM_2);
}
+
+ // Mac version, draw the screens 20 pixels lower to account for the extra 40 pixels
+ if (_game.platform == Common::kPlatformMacintosh && _game.version == 3 && _useMacScreenCorrectHeight) {
+ a += _screenDrawOffset;
+ b += _screenDrawOffset;
+ }
+
initScreens(a, b);
break;
case 4: // SO_ROOM_PALETTE
@@ -2928,7 +2935,7 @@ void ScummEngine_v5::o5_verbOps() {
break;
case 5: // SO_VERB_AT
vs->curRect.left = getVarOrDirectWord(PARAM_1);
- vs->curRect.top = getVarOrDirectWord(PARAM_2);
+ vs->curRect.top = getVarOrDirectWord(PARAM_2) + _screenDrawOffset;
if (_game.platform == Common::kPlatformFMTowns && ConfMan.getBool("trim_fmtowns_to_200_pixels")) {
if (_game.id == GID_ZAK && verb == 116)
// WORKAROUND: FM-TOWNS Zak used the extra 40 pixels at the bottom to increase the inventory to 10 items
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 3cdf1742007..628fb0ba1ff 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -354,6 +354,10 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)
} else if (_game.platform == Common::kPlatformNES) {
_screenWidth = 256;
_screenHeight = 240;
+ } else if (_useMacScreenCorrectHeight && _game.platform == Common::kPlatformMacintosh && _game.version == 3) {
+ _screenWidth = 320;
+ _screenHeight = 240;
+ _screenDrawOffset = 20;
} else {
_screenWidth = 320;
_screenHeight = 200;
@@ -1163,7 +1167,7 @@ Common::Error ScummEngine::init() {
_textSurfaceMultiplier = 2;
_macScreen = new Graphics::Surface();
- _macScreen->create(640, 400, Graphics::PixelFormat::createFormatCLUT8());
+ _macScreen->create(640, _useMacScreenCorrectHeight ? 480 : 400, Graphics::PixelFormat::createFormatCLUT8());
_macGui = new MacIndy3Gui(this, macResourceFile);
break;
@@ -1189,7 +1193,7 @@ Common::Error ScummEngine::init() {
_textSurfaceMultiplier = 2;
_macScreen = new Graphics::Surface();
- _macScreen->create(640, 400, Graphics::PixelFormat::createFormatCLUT8());
+ _macScreen->create(640, _useMacScreenCorrectHeight ? 480 : 400, Graphics::PixelFormat::createFormatCLUT8());
_macGui = new MacLoomGui(this, macResourceFile);
break;
}
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index 2d55001d0cb..bfb30fa4dcf 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -1277,6 +1277,18 @@ public:
int _screenStartStrip = 0, _screenEndStrip = 0;
int _screenTop = 0;
+ // For Mac versions of 320x200 games:
+ // these versions rendered at 640x480 without any aspect ratio correction;
+ // in order to correctly display the games as they should be, we perform some
+ // offset corrections within the various rendering pipelines.
+ //
+ // The only reason I've made _useMacScreenCorrectHeight toggleable is because
+ // maybe someday the screen correction can be activated or deactivated from the
+ // ScummVM GUI; but currently I'm not taking that responsibility, after all the
+ // work done on ensuring that old savegames translate correctly to the new setting... :-P
+ bool _useMacScreenCorrectHeight = true;
+ int _screenDrawOffset = 0;
+
Common::RenderMode _renderMode;
uint8 _bytesPerPixel = 1;
Graphics::PixelFormat _outputPixelFormat;
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index f3e684f2716..9f0103a0a52 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -848,7 +848,7 @@ void ScummEngine::CHARSET_1() {
int s;
_string[0].xpos = a->getPos().x - _virtscr[kMainVirtScreen].xstart;
- _string[0].ypos = a->getPos().y - a->getElevation() - _screenTop;
+ _string[0].ypos = a->getPos().y - a->getElevation() - _screenTop - _screenDrawOffset;
if (_game.version <= 5) {
if (VAR(VAR_V5_TALK_STRING_Y) < 0) {
@@ -882,7 +882,7 @@ void ScummEngine::CHARSET_1() {
_string[0].xpos = _screenWidth - 80;
}
- _charset->_top = _string[0].ypos + _screenTop;
+ _charset->_top = _string[0].ypos + _screenTop + _screenDrawOffset;
_charset->_startLeft = _charset->_left = _string[0].xpos;
_charset->_right = _string[0].right;
_charset->_center = _string[0].center;
@@ -1220,7 +1220,7 @@ void ScummEngine::drawString(int a, const byte *msg) {
if (_isRTL)
fakeBidiString(buf, false, sizeof(buf));
- _charset->_top = _string[a].ypos + _screenTop;
+ _charset->_top = _string[a].ypos + _screenTop + _screenDrawOffset;
_charset->_startLeft = _charset->_left = _string[a].xpos;
_charset->_right = _string[a].right;
_charset->_center = _string[a].center;
Commit: 078bbe94bb60e991588ab1cc70f4a98fb3583474
https://github.com/scummvm/scummvm/commit/078bbe94bb60e991588ab1cc70f4a98fb3583474
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: Adjust Mac dialog coordinates for 640x480 pixels
I do realize that it's a bit silly that we also adjust the coordinates
for 640x400 pixels earlier on, but if we want to keep support for that
resolution later that may not be a bad thing.
Changed paths:
engines/scumm/gfx_mac.cpp
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index c5d2d9a0562..1666e8dc857 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -3080,6 +3080,13 @@ MacGui::MacDialogWindow *MacGui::createWindow(Common::Rect bounds, MacDialogWind
bounds.moveTo((640 - bounds.width()) / 2, 27);
}
+ // Adjust the dialog to the actual screen size. This is slightly
+ // wasteful since we've already adjusted the dialog coordinates for
+ // 640x400 pixels, but that may not be a bad thing if we want to keep
+ // support for that resolution later.
+
+ bounds.translate(0, 2 * _vm->_screenDrawOffset);
+
return new MacDialogWindow(this, _system, _surface, bounds, style);
}
Commit: a0da4e12c6a1f8c4691fd743f89536ee90eb01ce
https://github.com/scummvm/scummvm/commit/a0da4e12c6a1f8c4691fd743f89536ee90eb01ce
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: Adjust Mac Loom practice box coordinates and dragging
A rare regression from the 640x400 -> 640x480 transition.
Changed paths:
engines/scumm/gfx_mac.cpp
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index 1666e8dc857..4986d7d8b8d 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -3087,6 +3087,8 @@ MacGui::MacDialogWindow *MacGui::createWindow(Common::Rect bounds, MacDialogWind
bounds.translate(0, 2 * _vm->_screenDrawOffset);
+ bounds.translate(0, 2 * _vm->_screenDrawOffset);
+
return new MacDialogWindow(this, _system, _surface, bounds, style);
}
@@ -3342,7 +3344,7 @@ MacLoomGui::MacLoomGui(ScummEngine *vm, Common::String resourceFile) : MacGui(vm
// The practice box can be moved, but this is its default position on
// a large screen, and it's not saved.
- _practiceBoxPos = Common::Point(215, 376);
+ _practiceBoxPos = Common::Point(215, 376 + 2 * _vm->_screenDrawOffset);
}
MacLoomGui::~MacLoomGui() {
@@ -4225,8 +4227,14 @@ bool MacLoomGui::handleEvent(Common::Event &event) {
// Also, things get weird if you move the box into the
// menu hotzone, so don't allow that.
+ int maxY = _surface->h - _practiceBox->h - 2 * _vm->_screenDrawOffset;
+ int minY = 2 * _vm->_screenDrawOffset;
+
+ if (_vm->isUsingOriginalGUI() && minY < 23)
+ minY = 23;
+
newX = CLIP(newX, 0, _surface->w - _practiceBox->w);
- newY = CLIP(newY, _vm->isUsingOriginalGUI() ? 23 : 0, _surface->h - _practiceBox->h);
+ newY = CLIP(newY, minY, maxY);
// For some reason, X coordinates can only change in
// increments of 16 pixels. As an enhancement, we allow
Commit: 826fe9661f1d0b73584ceb7eb8551eaf682d9632
https://github.com/scummvm/scummvm/commit/826fe9661f1d0b73584ceb7eb8551eaf682d9632
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: MACGUI: Fix pause banner position
Changed paths:
engines/scumm/gfx_mac.cpp
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index 4986d7d8b8d..87ed92c81cd 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -3309,7 +3309,9 @@ bool MacGui::runRestartDialog() {
}
MacGui::MacDialogWindow *MacGui::drawBanner(char *message) {
- MacGui::MacDialogWindow *window = createWindow(Common::Rect(70, 189, 570, 211), kStyleRounded);
+ MacGui::MacDialogWindow *window = createWindow(
+ Common::Rect(70, 189 - 2 * _vm->_screenDrawOffset, 570, 211 - 2 * _vm->_screenDrawOffset),
+ kStyleRounded);
const Graphics::Font *font = getFont(_vm->_game.id == GID_INDY3 ? kIndy3FontMedium : kLoomFontMedium);
Graphics::Surface *s = window->innerSurface();
Commit: f7e98ec88963f0dbce271b31f0500c482158a21a
https://github.com/scummvm/scummvm/commit/f7e98ec88963f0dbce271b31f0500c482158a21a
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: DETECTION: Add GUIO_NOASPECT to Mac versions of Indy3 and Loom
Changed paths:
engines/scumm/detection_tables.h
diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h
index 5110b228d96..ee771db1976 100644
--- a/engines/scumm/detection_tables.h
+++ b/engines/scumm/detection_tables.h
@@ -170,14 +170,14 @@ static const GameSettings gameVariantsTable[] = {
{"indyzak", "FM-TOWNS", 0, GID_ZAK, 3, 0, MDT_TOWNS, GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ORIGINALGUI)},
{"indy3", "EGA", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
- {"indy3", "Mac", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformMacintosh, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERMACINTOSHBW, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
+ {"indy3", "Mac", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformMacintosh, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERMACINTOSHBW, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_NOASPECT)},
{"indy3", "No AdLib", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"indy3", "VGA", "vga", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, Common::kPlatformDOS, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"indy3", "Steam", "steam", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, UNK, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"indy3", "FM-TOWNS", 0, GID_INDY3, 3, 0, MDT_TOWNS, GF_OLD256 | GF_FEW_LOCALS | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"loom", "EGA", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
- {"loom", "Mac", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_RENDERMACINTOSHBW, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
+ {"loom", "Mac", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO6(GUIO_NOSPEECH, GUIO_RENDERMACINTOSHBW, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_NOASPECT)},
{"loom", "No AdLib", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"loom", "PC-Engine", 0, GID_LOOM, 3, 0, MDT_NONE, GF_AUDIOTRACKS | GF_OLD256 | GF_16BIT_COLOR, Common::kPlatformPCEngine, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS)},
{"loom", "FM-TOWNS", 0, GID_LOOM, 3, 0, MDT_TOWNS, GF_AUDIOTRACKS | GF_OLD256, Common::kPlatformFMTowns, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_NOASPECT, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
Commit: 2768e8d551938f0919a7efd060df93bdc72825cf
https://github.com/scummvm/scummvm/commit/2768e8d551938f0919a7efd060df93bdc72825cf
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: Really fix Mac dialog position
In an attempt to split up my previous commits, I accidentally applied
the position correction twice. Now it's only done once, and that means
that the banner window doesn't need a special case after all.
Changed paths:
engines/scumm/gfx_mac.cpp
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index 87ed92c81cd..148f9eb56fd 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -3087,8 +3087,6 @@ MacGui::MacDialogWindow *MacGui::createWindow(Common::Rect bounds, MacDialogWind
bounds.translate(0, 2 * _vm->_screenDrawOffset);
- bounds.translate(0, 2 * _vm->_screenDrawOffset);
-
return new MacDialogWindow(this, _system, _surface, bounds, style);
}
@@ -3310,7 +3308,7 @@ bool MacGui::runRestartDialog() {
MacGui::MacDialogWindow *MacGui::drawBanner(char *message) {
MacGui::MacDialogWindow *window = createWindow(
- Common::Rect(70, 189 - 2 * _vm->_screenDrawOffset, 570, 211 - 2 * _vm->_screenDrawOffset),
+ Common::Rect(70, 189, 570, 211),
kStyleRounded);
const Graphics::Font *font = getFont(_vm->_game.id == GID_INDY3 ? kIndy3FontMedium : kLoomFontMedium);
Commit: df9fc52c05df68464c642202aade68f37bd56eed
https://github.com/scummvm/scummvm/commit/df9fc52c05df68464c642202aade68f37bd56eed
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2023-12-03T21:03:59+01:00
Commit Message:
SCUMM: Simplify Mac Indy 3 verb button and inventory initialization
Now the _screenDrawOffset is added in the two constructors instead.
Changed paths:
engines/scumm/gfx_mac.cpp
engines/scumm/gfx_mac.h
diff --git a/engines/scumm/gfx_mac.cpp b/engines/scumm/gfx_mac.cpp
index 148f9eb56fd..806f650dd42 100644
--- a/engines/scumm/gfx_mac.cpp
+++ b/engines/scumm/gfx_mac.cpp
@@ -4430,6 +4430,9 @@ void MacIndy3Gui::VerbWidget::undraw() {
// and conversation options.
// ---------------------------------------------------------------------------
+MacIndy3Gui::Button::Button(int x, int y, int width, int height) : VerbWidget(x, y + 2 * Widget::_vm->_screenDrawOffset, width, height) {
+}
+
void MacIndy3Gui::Button::reset() {
MacIndy3Gui::VerbWidget::reset();
_text.clear();
@@ -4569,7 +4572,7 @@ void MacIndy3Gui::Button::draw() {
// the scrollbar.
// ---------------------------------------------------------------------------
-MacIndy3Gui::Inventory::Inventory(int x, int y, int width, int height) : MacIndy3Gui::VerbWidget(x, y, width, height) {
+MacIndy3Gui::Inventory::Inventory(int x, int y, int width, int height) : MacIndy3Gui::VerbWidget(x, y + 2 * Widget::_vm->_screenDrawOffset, width, height) {
x = _bounds.left + 6;
y = _bounds.top + 6;
@@ -5114,35 +5117,35 @@ MacIndy3Gui::MacIndy3Gui(ScummEngine *vm, Common::String resourceFile) :
Widget::_surface = _surface;
Widget::_gui = this;
- _widgets[ 1] = new Button(137, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Open
- _widgets[ 2] = new Button(137, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Close
- _widgets[ 3] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Give
- _widgets[ 4] = new Button(277, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Turn on
- _widgets[ 5] = new Button(277, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Turn off
- _widgets[ 6] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Push
- _widgets[ 7] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Pull
- _widgets[ 8] = new Button(277, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Use
- _widgets[ 9] = new Button(137, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // Look at
- _widgets[ 10] = new Button(207, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Walk to
- _widgets[ 11] = new Button(207, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Pick up
- _widgets[ 12] = new Button(207, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // What is
- _widgets[ 13] = new Button(347, 312 + 2 * (_vm->_screenDrawOffset), 68, 18); // Talk
- _widgets[ 14] = new Button( 97, 312 + 2 * (_vm->_screenDrawOffset), 121, 18); // Never mind.
- _widgets[ 32] = new Button(347, 332 + 2 * (_vm->_screenDrawOffset), 68, 18); // Travel
- _widgets[ 33] = new Button(347, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // To Indy
- _widgets[ 34] = new Button(347, 352 + 2 * (_vm->_screenDrawOffset), 68, 18); // To Henry
- _widgets[ 90] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 1
- _widgets[ 91] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 2
- _widgets[ 92] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 507, 18); // Travel 3
- _widgets[100] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 348, 18); // Sentence
- _widgets[101] = new Inventory(417, 292 + 2 * (_vm->_screenDrawOffset), 157, 78);
- _widgets[119] = new Button(324, 312 + 2 * (_vm->_screenDrawOffset), 91, 18); // Take this:
- _widgets[120] = new Button( 67, 292 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 1
- _widgets[121] = new Button( 67, 312 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 2
- _widgets[122] = new Button( 67, 332 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 3
- _widgets[123] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 507, 18); // Converse 4
- _widgets[124] = new Button( 67, 352 + 2 * (_vm->_screenDrawOffset), 151, 18); // Converse 5
- _widgets[125] = new Button(423, 352 + 2 * (_vm->_screenDrawOffset), 151, 18); // Converse 6
+ _widgets[ 1] = new Button(137, 312, 68, 18); // Open
+ _widgets[ 2] = new Button(137, 332, 68, 18); // Close
+ _widgets[ 3] = new Button( 67, 352, 68, 18); // Give
+ _widgets[ 4] = new Button(277, 332, 68, 18); // Turn on
+ _widgets[ 5] = new Button(277, 352, 68, 18); // Turn off
+ _widgets[ 6] = new Button( 67, 312, 68, 18); // Push
+ _widgets[ 7] = new Button( 67, 332, 68, 18); // Pull
+ _widgets[ 8] = new Button(277, 312, 68, 18); // Use
+ _widgets[ 9] = new Button(137, 352, 68, 18); // Look at
+ _widgets[ 10] = new Button(207, 312, 68, 18); // Walk to
+ _widgets[ 11] = new Button(207, 332, 68, 18); // Pick up
+ _widgets[ 12] = new Button(207, 352, 68, 18); // What is
+ _widgets[ 13] = new Button(347, 312, 68, 18); // Talk
+ _widgets[ 14] = new Button( 97, 312, 121, 18); // Never mind.
+ _widgets[ 32] = new Button(347, 332, 68, 18); // Travel
+ _widgets[ 33] = new Button(347, 352, 68, 18); // To Indy
+ _widgets[ 34] = new Button(347, 352, 68, 18); // To Henry
+ _widgets[ 90] = new Button( 67, 292, 507, 18); // Travel 1
+ _widgets[ 91] = new Button( 67, 312, 507, 18); // Travel 2
+ _widgets[ 92] = new Button( 67, 332, 507, 18); // Travel 3
+ _widgets[100] = new Button( 67, 292, 348, 18); // Sentence
+ _widgets[101] = new Inventory(417, 292, 157, 78);
+ _widgets[119] = new Button(324, 312, 91, 18); // Take this:
+ _widgets[120] = new Button( 67, 292, 507, 18); // Converse 1
+ _widgets[121] = new Button( 67, 312, 507, 18); // Converse 2
+ _widgets[122] = new Button( 67, 332, 507, 18); // Converse 3
+ _widgets[123] = new Button( 67, 352, 507, 18); // Converse 4
+ _widgets[124] = new Button( 67, 352, 151, 18); // Converse 5
+ _widgets[125] = new Button(423, 352, 151, 18); // Converse 6
for (auto &it: _widgets)
it._value->setVerbid(it._key);
diff --git a/engines/scumm/gfx_mac.h b/engines/scumm/gfx_mac.h
index c80797b939e..cc1151df8ec 100644
--- a/engines/scumm/gfx_mac.h
+++ b/engines/scumm/gfx_mac.h
@@ -795,8 +795,7 @@ private:
Common::String _text;
public:
-
- Button(int x, int y, int width, int height) : VerbWidget(x, y, width, height) {}
+ Button(int x, int y, int width, int height);
bool handleEvent(Common::Event &event);
More information about the Scummvm-git-logs
mailing list