[Scummvm-cvs-logs] SF.net SVN: scummvm: [28433] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Fri Aug 3 17:18:00 CEST 2007


Revision: 28433
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28433&view=rev
Author:   drmccoy
Date:     2007-08-03 08:18:00 -0700 (Fri, 03 Aug 2007)

Log Message:
-----------
Lost in Time now (kind of) shows the title and the wobble-effect is drawn

Modified Paths:
--------------
    scummvm/trunk/engines/gob/draw.cpp
    scummvm/trunk/engines/gob/draw.h
    scummvm/trunk/engines/gob/gob.cpp
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_v1.cpp
    scummvm/trunk/engines/gob/inter_v2.cpp
    scummvm/trunk/engines/gob/inter_v3.cpp

Modified: scummvm/trunk/engines/gob/draw.cpp
===================================================================
--- scummvm/trunk/engines/gob/draw.cpp	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/draw.cpp	2007-08-03 15:18:00 UTC (rev 28433)
@@ -33,6 +33,7 @@
 #include "gob/game.h"
 #include "gob/inter.h"
 #include "gob/video.h"
+#include "gob/palanim.h"
 
 namespace Gob {
 
@@ -411,4 +412,88 @@
 				0, 0, 0);
 }
 
+const int16 Draw::_wobbleTable[360] = {
+	 0x0000,  0x011D,  0x023B,  0x0359,  0x0476,  0x0593,  0x06B0,  0x07CC,  0x08E8,
+	 0x0A03,  0x0B1D,  0x0C36,  0x0D4E,  0x0E65,  0x0F7B,  0x1090,  0x11A4,  0x12B6,
+	 0x13C6,  0x14D6,  0x15E3,  0x16EF,  0x17F9,  0x1901,  0x1A07,  0x1B0C,  0x1C0E,
+	 0x1D0E,  0x1E0B,  0x1F07,  0x2000,  0x20F6,  0x21EA,  0x22DB,  0x23C9,  0x24B5,
+	 0x259E,  0x2684,  0x2766,  0x2846,  0x2923,  0x29FC,  0x2AD3,  0x2BA5,  0x2C75,
+	 0x2D41,  0x2E09,  0x2ECE,  0x2F8F,  0x304D,  0x3106,  0x31BC,  0x326E,  0x331C,
+	 0x33C6,  0x346C,  0x350E,  0x35AC,  0x3646,  0x36DB,  0x376C,  0x37F9,  0x3882,
+	 0x3906,  0x3985,  0x3A00,  0x3A77,  0x3AE9,  0x3B56,  0x3BBF,  0x3C23,  0x3C83,
+	 0x3CDE,  0x3D34,  0x3D85,  0x3DD1,  0x3E19,  0x3E5C,  0x3E99,  0x3ED2,  0x3F07,
+	 0x3F36,  0x3F60,  0x3F85,  0x3FA6,  0x3FC1,  0x3FD8,  0x3FE9,  0x3FF6,  0x3FFD,
+	 0x4000,  0x3FFD,  0x3FF6,  0x3FE9,  0x3FD8,  0x3FC1,  0x3FA6,  0x3F85,  0x3F60,
+	 0x3F36,  0x3F07,  0x3ED2,  0x3E99,  0x3E5C,  0x3E19,  0x3DD1,  0x3D85,  0x3D34,
+	 0x3CDE,  0x3C83,  0x3C23,  0x3BBF,  0x3B56,  0x3AE9,  0x3A77,  0x3A00,  0x3985,
+	 0x3906,  0x3882,  0x37F9,  0x376C,  0x36DB,  0x3646,  0x35AC,  0x350E,  0x346C,
+	 0x33C6,  0x331C,  0x326E,  0x31BC,  0x3106,  0x304D,  0x2F8F,  0x2ECE,  0x2E09,
+	 0x2D41,  0x2C75,  0x2BA5,  0x2AD3,  0x29FC,  0x2923,  0x2846,  0x2766,  0x2684,
+	 0x259E,  0x24B5,  0x23C9,  0x22DB,  0x21EA,  0x20F6,  0x1FFF,  0x1F07,  0x1E0B,
+	 0x1D0E,  0x1C0E,  0x1B0C,  0x1A07,  0x1901,  0x17F9,  0x16EF,  0x15E3,  0x14D6,
+	 0x13C6,  0x12B6,  0x11A4,  0x1090,  0x0F7B,  0x0E65,  0x0D4E,  0x0C36,  0x0B1D,
+	 0x0A03,  0x08E8,  0x07CC,  0x06B0,  0x0593,  0x0476,  0x0359,  0x023B,  0x011D
+	-0x0000, -0x011D, -0x023B, -0x0359, -0x0476, -0x0593, -0x06B0, -0x07CC, -0x08E8,
+	-0x0A03, -0x0B1D, -0x0C36, -0x0D4E, -0x0E65, -0x0F7B, -0x1090, -0x11A4, -0x12B6,
+	-0x13C6, -0x14D6, -0x15E3, -0x16EF, -0x17F9, -0x1901, -0x1A07, -0x1B0C, -0x1C0E,
+	-0x1D0E, -0x1E0B, -0x1F07, -0x2000, -0x20F6, -0x21EA, -0x22DB, -0x23C9, -0x24B5,
+	-0x259E, -0x2684, -0x2766, -0x2846, -0x2923, -0x29FC, -0x2AD3, -0x2BA5, -0x2C75,
+	-0x2D41, -0x2E09, -0x2ECE, -0x2F8F, -0x304D, -0x3106, -0x31BC, -0x326E, -0x331C,
+	-0x33C6, -0x346C, -0x350E, -0x35AC, -0x3646, -0x36DB, -0x376C, -0x37F9, -0x3882,
+	-0x3906, -0x3985, -0x3A00, -0x3A77, -0x3AE9, -0x3B56, -0x3BBF, -0x3C23, -0x3C83,
+	-0x3CDE, -0x3D34, -0x3D85, -0x3DD1, -0x3E19, -0x3E5C, -0x3E99, -0x3ED2, -0x3F07,
+	-0x3F36, -0x3F60, -0x3F85, -0x3FA6, -0x3FC1, -0x3FD8, -0x3FE9, -0x3FF6, -0x3FFD,
+	-0x4000, -0x3FFD, -0x3FF6, -0x3FE9, -0x3FD8, -0x3FC1, -0x3FA6, -0x3F85, -0x3F60,
+	-0x3F36, -0x3F07, -0x3ED2, -0x3E99, -0x3E5C, -0x3E19, -0x3DD1, -0x3D85, -0x3D34,
+	-0x3CDE, -0x3C83, -0x3C23, -0x3BBF, -0x3B56, -0x3AE9, -0x3A77, -0x3A00, -0x3985,
+	-0x3906, -0x3882, -0x37F9, -0x376C, -0x36DB, -0x3646, -0x35AC, -0x350E, -0x346C,
+	-0x33C6, -0x331C, -0x326E, -0x31BC, -0x3106, -0x304D, -0x2F8F, -0x2ECE, -0x2E09,
+	-0x2D41, -0x2C75, -0x2BA5, -0x2AD3, -0x29FC, -0x2923, -0x2846, -0x2766, -0x2684,
+	-0x259E, -0x24B5, -0x23C9, -0x22DB, -0x21EA, -0x20F6, -0x1FFF, -0x1F07, -0x1E0B,
+	-0x1D0E, -0x1C0E, -0x1B0C, -0x1A07, -0x1901, -0x17F9, -0x16EF, -0x15E3, -0x14D6,
+	-0x13C6, -0x12B6, -0x11A4, -0x1090, -0x0F7B, -0x0E65, -0x0D4E, -0x0C36, -0x0B1D,
+	-0x0A03, -0x08E8, -0x07CC, -0x06B0, -0x0593, -0x0476, -0x0359, -0x023B, -0x011D
+};
+
+void Draw::wobble(SurfaceDesc *surfDesc) {
+	int16 amplitude = 32;
+	uint16 curFrame = 0;
+	uint16 frameWobble = 0;
+	uint16 rowWobble = 0;
+	int8 *offsets = new int8[_vm->_height];
+
+	_vm->_palAnim->fade(_vm->_global->_pPaletteDesc, 0, -1);
+
+	while (amplitude > 0) {
+		rowWobble = frameWobble;
+		frameWobble = (frameWobble + 20) % 360;
+
+		for (uint16 y = 0; y < _vm->_height; y++) {
+			offsets[y] = amplitude +
+				((_wobbleTable[rowWobble] * amplitude) / 0x4000);
+
+			rowWobble = (rowWobble + 20) % 360;
+		}
+
+		if (curFrame++ & 16)
+			amplitude--;
+
+		for (uint16 y = 0; y < _vm->_height; y++)
+			_vm->_video->drawSprite(surfDesc, _frontSurface,
+					0, y, _vm->_width - 1, y, offsets[y], y, 0);
+
+		_vm->_palAnim->fadeStep(0);
+		_vm->_video->waitRetrace();
+	}
+
+	_vm->_video->drawSprite(surfDesc, _frontSurface,
+			0, 0, _vm->_width - 1, _vm->_height - 1, 0, 0, 0);
+
+	_applyPal = false;
+	_invalidatedCount = 0;
+	_noInvalidated = true;
+
+	delete[] offsets;
+}
+
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/draw.h
===================================================================
--- scummvm/trunk/engines/gob/draw.h	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/draw.h	2007-08-03 15:18:00 UTC (rev 28433)
@@ -153,6 +153,9 @@
 	int32 getSpriteRectSize(int16 index);
 	void forceBlit(bool backwards = false);
 
+	static const int16 _wobbleTable[360];
+	void wobble(SurfaceDesc *surfDesc);
+
 	virtual void initScreen() = 0;
 	virtual void closeScreen() = 0;
 	virtual void blitCursor() = 0;

Modified: scummvm/trunk/engines/gob/gob.cpp
===================================================================
--- scummvm/trunk/engines/gob/gob.cpp	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/gob.cpp	2007-08-03 15:18:00 UTC (rev 28433)
@@ -136,7 +136,8 @@
 }
 
 void GobEngine::validateVideoMode(int16 videoMode) {
-	if ((videoMode != 0x13) && (videoMode != 0x14) && (videoMode != 0x18))
+	if ((videoMode != 0x10) && (videoMode != 0x13) &&
+		  (videoMode != 0x14) && (videoMode != 0x18))
 		error("Video mode 0x%X is not supported!", videoMode);
 }
 

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/inter.h	2007-08-03 15:18:00 UTC (rev 28433)
@@ -481,6 +481,8 @@
 	bool o3_checkData(OpFuncParams &params);
 	bool o3_readData(OpFuncParams &params);
 	bool o3_writeData(OpFuncParams &params);
+
+	void o3_wobble(OpGobParams &params);
 };
 
 class Inter_v4 : public Inter_v3 {

Modified: scummvm/trunk/engines/gob/inter_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v1.cpp	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/inter_v1.cpp	2007-08-03 15:18:00 UTC (rev 28433)
@@ -1617,7 +1617,7 @@
 		_vm->_global->_pPaletteDesc->unused1 = _vm->_draw->_unusedPalette1;
 
 		if (_vm->_global->_videoMode < 0x13) {
-			_vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaSmallPalette;
+			_vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaPalette;
 			_vm->_palAnim->fade(_vm->_global->_pPaletteDesc, 0, 0);
 			return false;
 		}

Modified: scummvm/trunk/engines/gob/inter_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v2.cpp	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/inter_v2.cpp	2007-08-03 15:18:00 UTC (rev 28433)
@@ -1375,10 +1375,12 @@
 	width = _vm->_parse->parseValExpr();
 	height = _vm->_parse->parseValExpr();
 
+	_vm->_global->_colorCount = (videoMode == 0x10) ? 16 : 256;
+
 	_vm->_global->_fakeVideoMode = videoMode;
 
 	// Some versions require this
-	if ((videoMode == 0xD) || (videoMode == 0x10))
+	if ((videoMode == 0xD))// || (videoMode == 0x10))
 		videoMode = _vm->_mode;
 
 	if ((videoMode == _vm->_global->_videoMode) && (width == -1))

Modified: scummvm/trunk/engines/gob/inter_v3.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v3.cpp	2007-08-03 14:22:20 UTC (rev 28432)
+++ scummvm/trunk/engines/gob/inter_v3.cpp	2007-08-03 15:18:00 UTC (rev 28433)
@@ -594,7 +594,7 @@
 		{NULL, ""},
 		{NULL, ""},
 		{NULL, ""},
-		{NULL, ""},
+		OPCODE(o3_wobble),
 		/* 28 */
 		{NULL, ""},
 		{NULL, ""},
@@ -894,4 +894,8 @@
 	return false;
 }
 
+void Inter_v3::o3_wobble(OpGobParams &params) {
+	_vm->_draw->wobble(_vm->_draw->_backSurface);
+}
+
 } // End of namespace Gob


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list