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

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Fri Dec 12 03:44:34 CET 2008


Revision: 35310
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35310&view=rev
Author:   drmccoy
Date:     2008-12-12 02:44:34 +0000 (Fri, 12 Dec 2008)

Log Message:
-----------
Working (minus text) menu in Urban Runner

Modified Paths:
--------------
    scummvm/trunk/engines/gob/draw_v2.cpp
    scummvm/trunk/engines/gob/gob.cpp
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_v1.cpp
    scummvm/trunk/engines/gob/inter_v6.cpp
    scummvm/trunk/engines/gob/video.cpp
    scummvm/trunk/engines/gob/video.h
    scummvm/trunk/engines/gob/video_v6.cpp

Modified: scummvm/trunk/engines/gob/draw_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/draw_v2.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/draw_v2.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -756,7 +756,6 @@
 	case DRAW_LOADSPRITE:
 		id = _spriteLeft;
 
-		warning("Loadsprite %d to %d", id, _destSurface);
 		if ((id >= 30000) || (_vm->_game->_lomHandle >= 0)) {
 			dataBuf = 0;
 

Modified: scummvm/trunk/engines/gob/gob.cpp
===================================================================
--- scummvm/trunk/engines/gob/gob.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/gob.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -184,6 +184,7 @@
 	}
 
 	_video->setSize(is640());
+	_video->init();
 
 	// On some systems it's not safe to run CD audio games from the CD.
 	if (isCD())

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/inter.h	2008-12-12 02:44:34 UTC (rev 35310)
@@ -614,6 +614,8 @@
 	const OpcodeGoblinEntryV6 *_opcodesGoblinV6;
 	static const int _goblinFuncLookUp[][2];
 
+	bool _gotFirstPalette;
+
 	virtual void setupOpcodes();
 	virtual void executeDrawOpcode(byte i);
 	virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams &params);

Modified: scummvm/trunk/engines/gob/inter_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v1.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/inter_v1.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -1858,6 +1858,7 @@
 	_vm->_draw->_transparency = load16();
 	_vm->_draw->_destSpriteX = 0;
 	_vm->_draw->_destSpriteY = 0;
+
 	_vm->_draw->spriteOperation(DRAW_LOADSPRITE);
 	return false;
 }

Modified: scummvm/trunk/engines/gob/inter_v6.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v6.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/inter_v6.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -43,6 +43,8 @@
 };
 
 Inter_v6::Inter_v6(GobEngine *vm) : Inter_v5(vm) {
+	_gotFirstPalette = false;
+
 	setupOpcodes();
 }
 
@@ -783,8 +785,12 @@
 
 bool Inter_v6::o6_palLoad(OpFuncParams &params) {
 	o1_palLoad(params);
-	_vm->_video->_palLUT->setPalette((const byte *) _vm->_global->_pPaletteDesc->vgaPal,
-			PaletteLUT::kPaletteRGB, 6);
+
+	if (_gotFirstPalette)
+		_vm->_video->_palLUT->setPalette((const byte *) _vm->_global->_pPaletteDesc->vgaPal,
+				PaletteLUT::kPaletteRGB, 6);
+
+	_gotFirstPalette = true;
 	return false;
 }
 

Modified: scummvm/trunk/engines/gob/video.cpp
===================================================================
--- scummvm/trunk/engines/gob/video.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/video.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -25,6 +25,8 @@
 
 #include "common/endian.h"
 #include "graphics/cursorman.h"
+#include "graphics/fontman.h"
+#include "graphics/surface.h"
 
 #include "gob/gob.h"
 #include "gob/video.h"
@@ -533,4 +535,36 @@
 	}
 }
 
+void Video::initOSD() {
+	const byte palOSD[] = {
+		0, 0, 0, 0,
+		0, 0, 171, 0,
+		0, 171, 0, 0,
+		0, 171, 171, 0,
+		171, 0, 0, 0
+	};
+
+  g_system->setPalette(palOSD, 0, 5);
+}
+
+void Video::drawOSDText(const char *text) {
+	const Graphics::Font &font(*FontMan.getFontByUsage(Graphics::FontManager::kOSDFont));
+	uint32 color = 0x2;
+	Graphics::Surface surf;
+
+	surf.w = g_system->getWidth();
+	surf.h = font.getFontHeight();
+	surf.pitch = surf.w;
+	surf.bytesPerPixel = 1;
+	surf.pixels = calloc(surf.w, surf.h);
+
+	font.drawString(&surf, text, 0, 0, surf.w, color, Graphics::kTextAlignCenter);
+
+	int y = g_system->getHeight() / 2 - font.getFontHeight() / 2;
+	g_system->copyRectToScreen((byte *)surf.pixels, surf.pitch, 0, y, surf.w, surf.h);
+	g_system->updateScreen();
+
+	free(surf.pixels);
+}
+
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/video.h
===================================================================
--- scummvm/trunk/engines/gob/video.h	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/video.h	2008-12-12 02:44:34 UTC (rev 35310)
@@ -174,6 +174,8 @@
 			int16 srcHeight, int16 x, int16 y, int16 transp,
 			SurfaceDesc *destDesc) = 0;
 
+	virtual void init() { }
+
 	Video(class GobEngine *vm);
 	virtual ~Video() {}
 
@@ -189,6 +191,9 @@
 	GobEngine *_vm;
 
 	char initDriver(int16 vidMode);
+
+	void initOSD();
+	void drawOSDText(const char *text);
 };
 
 class Video_v1 : public Video {
@@ -214,10 +219,14 @@
 	virtual char spriteUncompressor(byte *sprBuf, int16 srcWidth, int16 srcHeight,
 			int16 x, int16 y, int16 transp, SurfaceDesc *destDesc);
 
+	virtual void init();
+
 	Video_v6(GobEngine *vm);
 	virtual ~Video_v6() {}
 
 private:
+	static const byte _ditherPalette[768];
+
 	void drawPacked(const byte *sprBuf, int16 x, int16 y, SurfaceDesc *surfDesc);
 	void drawYUVData(const byte *srcData, SurfaceDesc *destDesc,
 			int16 width, int16 height, int16 x, int16 y);

Modified: scummvm/trunk/engines/gob/video_v6.cpp
===================================================================
--- scummvm/trunk/engines/gob/video_v6.cpp	2008-12-12 00:10:39 UTC (rev 35309)
+++ scummvm/trunk/engines/gob/video_v6.cpp	2008-12-12 02:44:34 UTC (rev 35310)
@@ -34,6 +34,19 @@
 Video_v6::Video_v6(GobEngine *vm) : Video_v2(vm) {
 }
 
+void Video_v6::init() {
+	_palLUT->setPalette(_ditherPalette, PaletteLUT::kPaletteYUV, 8);
+
+	initOSD();
+
+	char text[30];
+	for (int i = 0; i < 64; i++) {
+		sprintf(text, "Building palette table: %02d/63", i);
+		drawOSDText(text);
+		_palLUT->buildNext();
+	}
+}
+
 char Video_v6::spriteUncompressor(byte *sprBuf, int16 srcWidth, int16 srcHeight,
 	    int16 x, int16 y, int16 transp, SurfaceDesc *destDesc) {
 	if (!destDesc)
@@ -58,8 +71,6 @@
 	int16 height = READ_LE_UINT16(data + 2);
 	data += 4;
 
-	warning("drawPacked: %d, %d, %d, %d", x, y, width, height);
-
 	const byte *srcData = data;
 	byte *uncBuf = 0;
 
@@ -90,8 +101,6 @@
 	if (dataHeight & 0xF)
 		dataHeight = (dataHeight & 0xFFF0) + 16;
 
-	warning("drawYUVData: %d, %d, %d, %d, %d, %d", x, y, width, height, dataWidth, dataHeight);
-
 	const byte *dataY = srcData;
 	const byte *dataU = dataY +  (dataWidth * dataHeight);
 	const byte *dataV = dataU + ((dataWidth * dataHeight) >> 4);
@@ -118,9 +127,6 @@
 		int16 dataWidth, int16 dataHeight, int16 width, int16 height,
 		const byte *dataY, const byte *dataU, const byte *dataV) {
 
-	warning("drawYUV: %dx%d->%d+%d (%dx%d) (%dx%d)", width, height, x, y, dataWidth, dataHeight,
-			destDesc->getWidth(), destDesc->getHeight());
-
 	byte *vidMem = destDesc->getVidMem() + y * destDesc->getWidth() + x;
 
 	if ((x + width - 1) >= destDesc->getWidth())
@@ -149,4 +155,71 @@
 	}
 }	
 
+const byte Video_v6::_ditherPalette[768] = {
+	0x00,0x80,0x80,0x26,0x6B,0xC0,0x4B,0x56,0x4B,0x71,0x41,0x8B,
+	0x0E,0xC0,0x76,0x34,0xAB,0xB6,0x59,0x96,0x41,0xBE,0x81,0x81,
+	0xCF,0x77,0x75,0xC1,0x9B,0x6C,0x7F,0x81,0x81,0x7F,0x81,0x81,
+	0x0A,0x8C,0x8A,0x0A,0xB0,0x79,0x0E,0x9D,0x76,0x0E,0x79,0x76,
+	0x10,0x77,0x75,0x09,0x7B,0x8B,0x16,0x74,0xA6,0x16,0x74,0xA6,
+	0x12,0x91,0x93,0x13,0xB5,0x72,0x1B,0x9E,0x6D,0x1A,0x7A,0x6D,
+	0x1C,0x71,0x6C,0x1B,0x72,0x8C,0x1B,0x71,0xAE,0x1B,0x71,0xAE,
+	0x21,0x93,0x93,0x21,0xB8,0x6F,0x27,0xA3,0x64,0x27,0x7F,0x65,
+	0x29,0x69,0x68,0x28,0x69,0x8E,0x23,0x6F,0xB7,0x2A,0x69,0xB2,
+	0x36,0x94,0x92,0x35,0xB9,0x6E,0x35,0xA6,0x5D,0x34,0x80,0x5D,
+	0x39,0x61,0x6B,0x3A,0x60,0x8F,0x34,0x6E,0xB9,0x39,0x60,0xB5,
+	0x46,0x93,0x95,0x48,0xB6,0x6F,0x45,0xA6,0x5C,0x47,0x80,0x5C,
+	0x4B,0x56,0x6D,0x4B,0x56,0x91,0x47,0x6F,0xB7,0x4A,0x57,0xB5,
+	0x5A,0x94,0x92,0x59,0xB9,0x6E,0x59,0xA6,0x5D,0x59,0x82,0x5D,
+	0x5B,0x4D,0x6D,0x5A,0x4E,0x92,0x5B,0x6F,0xB7,0x5C,0x4D,0xB6,
+	0x6D,0x94,0x93,0x6D,0xB8,0x6F,0x6D,0xA5,0x5D,0x6C,0x7F,0x5E,
+	0x6C,0x4A,0x70,0x6D,0x4A,0x94,0x6C,0x6E,0xB9,0x6C,0x4A,0xBA,
+	0x7E,0x94,0x93,0x80,0xB6,0x6F,0x7D,0xA6,0x5D,0x7F,0x81,0x5B,
+	0x7F,0x4A,0x6F,0x7F,0x4A,0x92,0x7E,0x6F,0xB7,0x7E,0x4B,0xB7,
+	0x92,0x94,0x93,0x90,0xB8,0x6F,0x91,0xA5,0x5C,0x90,0x81,0x5D,
+	0x91,0x4B,0x6D,0x91,0x4C,0x93,0x93,0x6F,0xB7,0x92,0x4B,0xB7,
+	0xA5,0x91,0x93,0xA2,0xB2,0x6F,0xA5,0xA6,0x5D,0xA4,0x80,0x5D,
+	0xA3,0x4A,0x6F,0xA4,0x49,0x93,0xA4,0x6F,0xB9,0xA3,0x4B,0xB9,
+	0xB6,0x94,0x93,0xB4,0xA9,0x71,0xB6,0xA5,0x5C,0xB8,0x80,0x5C,
+	0xB7,0x4B,0x6F,0xB6,0x4C,0x93,0xB5,0x70,0xB3,0xB5,0x4C,0xB3,
+	0xC9,0x93,0x92,0xC3,0xA0,0x72,0xC7,0x9E,0x5E,0xC9,0x82,0x5D,
+	0xCA,0x4B,0x6E,0xCA,0x4B,0x93,0xC2,0x73,0xA9,0xC2,0x4F,0xA9,
+	0xDD,0x92,0x93,0xD4,0x97,0x74,0xD9,0x94,0x60,0xDD,0x80,0x5E,
+	0xDB,0x4B,0x6F,0xDD,0x4A,0x93,0xCE,0x76,0xA1,0xCE,0x52,0xA1,
+	0xE8,0x8B,0x8E,0xE6,0x8C,0x76,0xE7,0x8C,0x61,0xE6,0x86,0x62,
+	0xE3,0x51,0x78,0xEA,0x4D,0x8D,0xDC,0x79,0x97,0xDC,0x55,0x97,
+	0xFA,0x81,0x81,0xF8,0x82,0x83,0xF4,0x85,0x77,0xF2,0x79,0x79,
+	0xF4,0x65,0x86,0xF8,0x75,0x83,0xEF,0x87,0x89,0xF0,0x67,0x89,
+	0xEE,0x81,0x81,0xE8,0x8B,0x85,0xED,0x88,0x71,0xEA,0x71,0x73,
+	0xEE,0x5D,0x81,0xEA,0x71,0x8D,0xE4,0x87,0x91,0xE4,0x63,0x91,
+	0xDB,0x81,0x81,0xD7,0x95,0x83,0xDB,0x93,0x6F,0xDB,0x6F,0x6F,
+	0xDC,0x5C,0x80,0xDD,0x6E,0x93,0xD7,0x83,0x9B,0xD6,0x5F,0x9B,
+	0xCA,0x81,0x81,0xC8,0x9D,0x82,0xC8,0x94,0x6E,0xCA,0x6F,0x6E,
+	0xC9,0x5D,0x81,0xCA,0x6F,0x93,0xC9,0x82,0xA5,0xC8,0x5E,0xA5,
+	0xB6,0x81,0x81,0xB6,0xA5,0x80,0xB7,0x93,0x6F,0xB7,0x6F,0x6F,
+	0xB6,0x5D,0x81,0xB6,0x70,0x93,0xB8,0x80,0xA5,0xB7,0x5C,0xA5,
+	0xA3,0x81,0x81,0xA4,0xA7,0x81,0xA3,0x92,0x6F,0xA3,0x6E,0x6F,
+	0xA5,0x5C,0x7F,0xA5,0x6D,0x93,0xA4,0x80,0xA5,0xA4,0x5C,0xA5,
+	0x92,0x81,0x81,0x93,0xA5,0x81,0x90,0x94,0x6F,0x92,0x6F,0x6D,
+	0x92,0x5D,0x81,0x92,0x70,0x93,0x91,0x82,0xA7,0x91,0x5E,0xA7,
+	0x7F,0x81,0x81,0x7F,0xA5,0x81,0x80,0x92,0x70,0x7F,0x6E,0x6F,
+	0x7F,0x5D,0x81,0x7D,0x70,0x93,0x80,0x80,0xA5,0x80,0x5C,0xA5,
+	0x6B,0x81,0x81,0x6C,0xA7,0x80,0x6D,0x94,0x6F,0x6C,0x6E,0x6F,
+	0x6D,0x5B,0x80,0x6D,0x6E,0x93,0x6C,0x81,0xA5,0x6C,0x5D,0xA5,
+	0x5A,0x81,0x81,0x5A,0xA5,0x81,0x59,0x95,0x6E,0x5A,0x6F,0x6E,
+	0x5B,0x5D,0x81,0x59,0x70,0x93,0x5A,0x81,0xA7,0x5A,0x5D,0xA7,
+	0x47,0x81,0x81,0x47,0xA5,0x80,0x47,0x92,0x6F,0x47,0x6E,0x6F,
+	0x46,0x5D,0x81,0x46,0x6F,0x95,0x49,0x81,0xA5,0x48,0x5D,0xA5,
+	0x32,0x81,0x81,0x33,0xA7,0x81,0x35,0x95,0x6E,0x34,0x6F,0x6F,
+	0x36,0x62,0x7E,0x35,0x6E,0x93,0x34,0x80,0xA5,0x36,0x62,0xA4,
+	0x23,0x81,0x81,0x23,0xA5,0x80,0x20,0x94,0x6F,0x22,0x6F,0x6D,
+	0x26,0x6B,0x7E,0x21,0x6F,0x93,0x22,0x82,0xA7,0x25,0x6C,0xA4,
+	0x0E,0x81,0x81,0x0F,0xA5,0x81,0x13,0x91,0x73,0x15,0x75,0x71,
+	0x14,0x75,0x7D,0x11,0x77,0x93,0x15,0x7D,0xA1,0x16,0x74,0xA1,
+	0x00,0x80,0x80,0x07,0xA0,0x7B,0x05,0x8F,0x7D,0x09,0x7B,0x7A,
+	0x07,0x7D,0x7B,0x07,0x7C,0x8C,0x0E,0x78,0x98,0x0E,0x78,0x98,
+	0x7F,0x81,0x81,0x80,0x83,0x81,0xF7,0x7C,0x84,0x9E,0x83,0x80,
+	0x7F,0x81,0x81,0x4B,0x56,0xFE,0x93,0x2D,0x17,0xDE,0x03,0x95,
+	0x1C,0xFE,0x6C,0x67,0xD4,0xEA,0xAF,0xAB,0x03,0xFA,0x81,0x81
+};
+
 } // 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