[Scummvm-cvs-logs] SF.net SVN: scummvm:[41850] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Thu Jun 25 04:38:19 CEST 2009


Revision: 41850
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41850&view=rev
Author:   lordhoto
Date:     2009-06-25 02:38:19 +0000 (Thu, 25 Jun 2009)

Log Message:
-----------
Readd PC98 palette loading for LoL 16 color.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/screen.cpp
    scummvm/trunk/engines/kyra/screen.h
    scummvm/trunk/engines/kyra/sequences_lol.cpp

Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp	2009-06-25 01:31:04 UTC (rev 41849)
+++ scummvm/trunk/engines/kyra/screen.cpp	2009-06-25 02:38:19 UTC (rev 41850)
@@ -2831,6 +2831,8 @@
 
 	if (_vm->gameFlags().platform == Common::kPlatformAmiga)
 		pal.loadAmigaPalette(*stream, stream->size() / Palette::kAmigaBytesPerColor);
+	else if (_vm->gameFlags().platform == Common::kPlatformPC98 && _use16ColorMode)
+		pal.loadPC98Palette(*stream, stream->size() / Palette::kPC98BytesPerColor);
 	else
 		pal.loadVGAPalette(*stream, stream->size() / Palette::kVGABytesPerColor);
 
@@ -2870,9 +2872,11 @@
 	Common::MemoryReadStream stream(data, bytes, false);
 
 	if (_vm->gameFlags().platform == Common::kPlatformAmiga)
-		pal.loadAmigaPalette(stream, stream.size() / 2);
+		pal.loadAmigaPalette(stream, stream.size() / Palette::kAmigaBytesPerColor);
+	else if (_vm->gameFlags().platform == Common::kPlatformPC98 && _use16ColorMode)
+		pal.loadPC98Palette(stream, stream.size() / Palette::kPC98BytesPerColor);
 	else
-		pal.loadVGAPalette(stream, stream.size() / 3);
+		pal.loadVGAPalette(stream, stream.size() / Palette::kVGABytesPerColor);
 }
 
 // dirty rect handling
@@ -3280,6 +3284,23 @@
 	memset(_palData + colors * 3, 0, (_numColors - colors) * 3);
 }
 
+void Palette::loadPC98Palette(Common::ReadStream &stream, int colors) {
+	if (colors == -1)
+		colors = _numColors;
+
+	assert(colors <= _numColors);
+
+	for (int i = 0; i < colors; ++i) {
+		const byte g = stream.readByte(), r = stream.readByte(), b = stream.readByte();
+
+		_palData[i * 3 + 0] = ((r & 0x0F) * 0x3F) / 0x0F;
+		_palData[i * 3 + 1] = ((g & 0x0F) * 0x3F) / 0x0F;
+		_palData[i * 3 + 2] = ((b & 0x0F) * 0x3F) / 0x0F;
+	}
+
+	memset(_palData + colors * 3, 0, (_numColors - colors) * 3);
+}
+
 void Palette::clear() {
 	memset(_palData, 0, _numColors * 3);
 }

Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h	2009-06-25 01:31:04 UTC (rev 41849)
+++ scummvm/trunk/engines/kyra/screen.h	2009-06-25 02:38:19 UTC (rev 41850)
@@ -74,20 +74,26 @@
 
 	enum {
 		kVGABytesPerColor = 3,
+		kPC98BytesPerColor = 3,
 		kAmigaBytesPerColor = 2
 	};
 
 	/**
 	 * Load a VGA palette from the given stream.
 	 */
-	void loadVGAPalette(Common::ReadStream &stream, const int colors = -1);
+	void loadVGAPalette(Common::ReadStream &stream, int colors = -1);
 
 	/**
 	 * Load a AMIGA palette from the given stream.
 	 */
-	void loadAmigaPalette(Common::ReadStream &stream, const int colors = -1);
+	void loadAmigaPalette(Common::ReadStream &stream, int colors = -1);
 
 	/**
+	 * Load a PC98 16 color palette from the given stream.
+	 */
+	void loadPC98Palette(Common::ReadStream &stream, int colors = -1);
+
+	/**
 	 * Return the number of colors this palette manages.
 	 */
 	int getNumColors() const { return _numColors; }

Modified: scummvm/trunk/engines/kyra/sequences_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sequences_lol.cpp	2009-06-25 01:31:04 UTC (rev 41849)
+++ scummvm/trunk/engines/kyra/sequences_lol.cpp	2009-06-25 02:38:19 UTC (rev 41850)
@@ -135,7 +135,6 @@
 	const char * const *fileList = _flags.isTalkie ? fileListCD :
 		(_flags.useInstallerPackage ? fileListFloppy : fileListFloppyExtracted);
 
-
 	char filename[32];
 	for (uint i = 0; fileList[i]; ++i) {
 		filename[0] = '\0';


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