[Scummvm-cvs-logs] scummvm master -> ac53915d01e69b90fc6bf64dbce2606c9d4044fd

bgK bastien.bouclet at gmail.com
Sat Aug 27 17:15:01 CEST 2011


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
3ca0b304cf MOHAWK: Implement fading for Myst Demo
01ddc5e140 NEWS: Mention the PS3 port
2d8457fceb MOHAWK: Implement channelwood var getter 31 (patch from P. Monnerat)
e0030a2aab MOHAWK: Fix incorrect cursor in D'ni (patch from P. Monnerat)
ac53915d01 MOHAWK: Stop the engine sound when Myst's generator voltage goes down to zero (patch from P. Monnerat)


Commit: 3ca0b304cf29f12d5fb3cadccb18689306d33ff8
    https://github.com/scummvm/scummvm/commit/3ca0b304cf29f12d5fb3cadccb18689306d33ff8
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-27T08:09:11-07:00

Commit Message:
MOHAWK: Implement fading for Myst Demo

Changed paths:
    engines/mohawk/graphics.cpp
    engines/mohawk/graphics.h
    engines/mohawk/myst_stacks/demo.cpp
    engines/mohawk/myst_stacks/preview.cpp
    engines/mohawk/myst_stacks/slides.cpp



diff --git a/engines/mohawk/graphics.cpp b/engines/mohawk/graphics.cpp
index 35c9d47..c4326d1 100644
--- a/engines/mohawk/graphics.cpp
+++ b/engines/mohawk/graphics.cpp
@@ -672,12 +672,50 @@ void MystGraphics::simulatePreviousDrawDelay(const Common::Rect &dest) {
 	_nextAllowedDrawTime = time + _constantDrawDelay + dest.height() * dest.width() / _proportionalDrawDelay;
 }
 
+void MystGraphics::copyBackBufferToScreenWithSaturation(int16 saturation) {
+	Graphics::Surface *screen = _vm->_system->lockScreen();
+
+	for (uint16 y = 0; y < _viewport.height(); y++)
+		for (uint16 x = 0; x < _viewport.width(); x++) {
+			uint32 color;
+			uint8 r, g, b;
+
+			if (_pixelFormat.bytesPerPixel == 2)
+				color = *(const uint16 *)_backBuffer->getBasePtr(x, y);
+			else
+				color = *(const uint32 *)_backBuffer->getBasePtr(x, y);
+
+			_pixelFormat.colorToRGB(color, r, g, b);
+
+			r = CLIP<int16>((int16)r - saturation, 0, 255);
+			g = CLIP<int16>((int16)g - saturation, 0, 255);
+			b = CLIP<int16>((int16)b - saturation, 0, 255);
+
+			color = _pixelFormat.RGBToColor(r, g, b);
+
+			if (_pixelFormat.bytesPerPixel == 2) {
+				uint16 *dst = (uint16 *)screen->getBasePtr(x, y);
+				*dst = color;
+			} else {
+				uint32 *dst = (uint32 *)screen->getBasePtr(x, y);
+				*dst = color;
+			}
+		}
+
+	_vm->_system->unlockScreen();
+	_vm->_system->updateScreen();
+}
+
 void MystGraphics::fadeToBlack() {
-	// TODO: Implement
+	for (int16 i = 0; i < 256; i += 32) {
+		copyBackBufferToScreenWithSaturation(i);
+	}
 }
 
 void MystGraphics::fadeFromBlack() {
-	// TODO: Implement
+	for (int16 i = 256; i >= 0; i -= 32) {
+		copyBackBufferToScreenWithSaturation(i);
+	}
 }
 
 #endif // ENABLE_MYST
diff --git a/engines/mohawk/graphics.h b/engines/mohawk/graphics.h
index 96357bb..463608a 100644
--- a/engines/mohawk/graphics.h
+++ b/engines/mohawk/graphics.h
@@ -136,6 +136,7 @@ protected:
 	MohawkSurface *decodeImage(uint16 id);
 	MohawkEngine *getVM() { return (MohawkEngine *)_vm; }
 	void simulatePreviousDrawDelay(const Common::Rect &dest);
+	void copyBackBufferToScreenWithSaturation(int16 saturation);
 
 private:
 	MohawkEngine_Myst *_vm;
diff --git a/engines/mohawk/myst_stacks/demo.cpp b/engines/mohawk/myst_stacks/demo.cpp
index c9e8066..fbad7dc 100644
--- a/engines/mohawk/myst_stacks/demo.cpp
+++ b/engines/mohawk/myst_stacks/demo.cpp
@@ -84,7 +84,10 @@ void Demo::o_stopIntro(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 
 void Demo::o_fadeFromBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Fade from black", op);
-	_vm->_gfx->fadeFromBlack();
+
+	// FIXME: This glitches when enabled. The backbuffer is drawn to screen,
+	// and then the fading occurs, causing the background to appear for one frame.
+	// _vm->_gfx->fadeFromBlack();
 }
 
 void Demo::o_fadeToBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
@@ -101,14 +104,14 @@ void Demo::returnToMenu_run() {
 	switch (_returnToMenuStep){
 	case 0:
 		_vm->_gfx->fadeToBlack();
-		_vm->changeToCard(2003, true);
+		_vm->changeToCard(2003, false);
 		_vm->_gfx->fadeFromBlack();
 
 		_returnToMenuStep++;
 		break;
 	case 1:
 		_vm->_gfx->fadeToBlack();
-		_vm->changeToCard(2001, true);
+		_vm->changeToCard(2001, false);
 		_vm->_gfx->fadeFromBlack();
 		_vm->_cursor->showCursor();
 
diff --git a/engines/mohawk/myst_stacks/preview.cpp b/engines/mohawk/myst_stacks/preview.cpp
index 1b72c85..31e22bb 100644
--- a/engines/mohawk/myst_stacks/preview.cpp
+++ b/engines/mohawk/myst_stacks/preview.cpp
@@ -85,7 +85,10 @@ void Preview::o_fadeToBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 
 void Preview::o_fadeFromBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Fade from black", op);
-	_vm->_gfx->fadeFromBlack();
+
+	// FIXME: This glitches when enabled. The backbuffer is drawn to screen,
+	// and then the fading occurs, causing the background to appear for one frame.
+	// _vm->_gfx->fadeFromBlack();
 }
 
 void Preview::o_stayHere(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
@@ -99,6 +102,7 @@ void Preview::o_stayHere(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 void Preview::o_speechStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Speech stop", op);
 
+	_vm->_sound->stopSound(3001);
 	_speechRunning = false;
 	_globals.currentAge = 2;
 }
@@ -143,7 +147,7 @@ void Preview::speech_run() {
 	case 2: // Go to Myst
 		if (_currentCue >= 2) {
 			_vm->_gfx->fadeToBlack();
-			_vm->changeToCard(3002, true);
+			_vm->changeToCard(3002, false);
 			_vm->_gfx->fadeFromBlack();
 
 			_speechStep++;
@@ -186,7 +190,7 @@ void Preview::speech_run() {
 			break;
 
 		_vm->_gfx->fadeToBlack();
-		_vm->changeToCard(3005, true);
+		_vm->changeToCard(3005, false);
 		_vm->_gfx->fadeFromBlack();
 		_speechNextTime = time + 1000;
 		_speechStep++;
diff --git a/engines/mohawk/myst_stacks/slides.cpp b/engines/mohawk/myst_stacks/slides.cpp
index 943cb90..794793e 100644
--- a/engines/mohawk/myst_stacks/slides.cpp
+++ b/engines/mohawk/myst_stacks/slides.cpp
@@ -63,7 +63,7 @@ void Slides::runPersistentScripts() {
 		// Used on Cards...
 		if (_vm->_system->getMillis() > _nextCardTime) {
 			_vm->_gfx->fadeToBlack();
-			_vm->changeToCard(_nextCardID, true);
+			_vm->changeToCard(_nextCardID, false);
 			_vm->_gfx->fadeFromBlack();
 		}
 	}


Commit: 01ddc5e140862b0cfaa28b697218d1903294fcd5
    https://github.com/scummvm/scummvm/commit/01ddc5e140862b0cfaa28b697218d1903294fcd5
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-27T08:09:11-07:00

Commit Message:
NEWS: Mention the PS3 port

Changed paths:
    NEWS



diff --git a/NEWS b/NEWS
index c132abf..016c637 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,9 @@ For a more comprehensive changelog of the latest experimental code, see:
    - Added support for Blue's Birthday Adventure
    - Added support for Ringworld: Revenge Of The Patriarch
 
+ New Ports:
+   - Added PlayStation 3 port.
+
  AGI:
    - Implemented sound support for the DOS version of Winnie the Pooh in the Hundred Acre Wood.
 


Commit: 2d8457fceb775bbbe5b49ea6038fac7aedb1a052
    https://github.com/scummvm/scummvm/commit/2d8457fceb775bbbe5b49ea6038fac7aedb1a052
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-27T08:09:12-07:00

Commit Message:
MOHAWK: Implement channelwood var getter 31 (patch from P. Monnerat)

Changed paths:
    engines/mohawk/myst_stacks/channelwood.cpp



diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp
index 0dd69a6..9ca47cc 100644
--- a/engines/mohawk/myst_stacks/channelwood.cpp
+++ b/engines/mohawk/myst_stacks/channelwood.cpp
@@ -159,6 +159,16 @@ uint16 Channelwood::getVar(uint16 var) {
 		return ((_state.waterValveStates & 0xe2) == 0x80) ? 1 : 0;
 	case 30: // Door State
 		return _doorOpened;
+	case 31: // Water flowing in pipe fork ?
+		// 0 -> keep sound.
+		// 1 -> not flowing.
+		// 2 --> flowing.
+		if ((_state.waterValveStates & 0xe2) == 0x82)	// From left.
+			return 2;
+		if ((_state.waterValveStates & 0xf4) == 0xa0)	// From right.
+			return 1;
+
+		return 0;
 	case 32: // Sound - Water Flowing in Pipe to Book Room Elevator
 		return ((_state.waterValveStates & 0xf8) == 0xb0 && _state.pipeState) ? 1 : 0;
 	case 33: // Channelwood Lower Walkway to Upper Walkway Spiral Stair Upper Door State


Commit: e0030a2aab4d78426e4250615b2c40b872f9bbb1
    https://github.com/scummvm/scummvm/commit/e0030a2aab4d78426e4250615b2c40b872f9bbb1
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-27T08:09:12-07:00

Commit Message:
MOHAWK: Fix incorrect cursor in D'ni (patch from P. Monnerat)

Changed paths:
    engines/mohawk/myst_stacks/dni.cpp



diff --git a/engines/mohawk/myst_stacks/dni.cpp b/engines/mohawk/myst_stacks/dni.cpp
index cf28945..2ced265 100644
--- a/engines/mohawk/myst_stacks/dni.cpp
+++ b/engines/mohawk/myst_stacks/dni.cpp
@@ -106,7 +106,7 @@ void Dni::o_handPage(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	if (_globals.ending == 1 && _vm->_video->getElapsedTime(atrus) > (uint)Audio::Timestamp(0, 6801, 600).msecs()) {
 		_globals.ending = 2;
 		_globals.heldPage = 0;
-		_vm->_cursor->setCursor(kDefaultMystCursor);
+		_vm->setMainCursor(kDefaultMystCursor);
 
 		// Play movie end (atrus leaving)
 		_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 14813, 600), Audio::Timestamp(0xFFFFFFFF));


Commit: ac53915d01e69b90fc6bf64dbce2606c9d4044fd
    https://github.com/scummvm/scummvm/commit/ac53915d01e69b90fc6bf64dbce2606c9d4044fd
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-27T08:09:13-07:00

Commit Message:
MOHAWK: Stop the engine sound when Myst's generator voltage goes down to zero (patch from P. Monnerat)

Changed paths:
    engines/mohawk/myst_stacks/myst.cpp



diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index 66492d1..b67b333 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -1350,8 +1350,10 @@ void Myst::o_generatorButtonPressed(uint16 op, uint16 var, uint16 argc, uint16 *
 
 		if (_state.generatorVoltage)
 			_vm->_sound->replaceSoundMyst(8297);
-		else
+		else {
 			_vm->_sound->replaceSoundMyst(9297);
+			_vm->_sound->stopBackgroundMyst();
+		}
 	} else {
 		if (_generatorVoltage)
 			_vm->_sound->replaceSoundMyst(6297);






More information about the Scummvm-git-logs mailing list