[Scummvm-cvs-logs] SF.net SVN: scummvm: [30114] scummvm/trunk/engines/lure/palette.cpp

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Tue Jan 1 13:58:51 CET 2008


Revision: 30114
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30114&view=rev
Author:   dreammaster
Date:     2008-01-01 04:58:50 -0800 (Tue, 01 Jan 2008)

Log Message:
-----------
Extended PaletteCollection class to handle EGA palettes

Modified Paths:
--------------
    scummvm/trunk/engines/lure/palette.cpp

Modified: scummvm/trunk/engines/lure/palette.cpp
===================================================================
--- scummvm/trunk/engines/lure/palette.cpp	2008-01-01 12:58:04 UTC (rev 30113)
+++ scummvm/trunk/engines/lure/palette.cpp	2008-01-01 12:58:50 UTC (rev 30114)
@@ -152,19 +152,32 @@
 PaletteCollection::PaletteCollection(uint16 resourceId) {
 	Disk &d = Disk::getReference();
 	MemoryBlock *resource = d.getEntry(resourceId);
+	bool isEGA = LureEngine::getReference().isEGA();
 	uint32 palSize;
 	uint8 *data = resource->data();
 
-	if (resource->size() % (SUB_PALETTE_SIZE * 3) != 0)
-		error("Resource #%d is not a valid palette set", resourceId);
+	if (isEGA) {
+		// EGA Palette collection - only has 1 sub-palette
+		if ((resource->size() != 16) && (resource->size() != 17))
+			error("Resource #%d is not a valid palette set", resourceId);
 
-	palSize = SUB_PALETTE_SIZE * 3;
-	_numPalettes = resource->size() / palSize;
+		_numPalettes = 1;
+		_palettes = (Palette **) Memory::alloc(1 * sizeof(Palette *));
+		_palettes[0] = new Palette(16, data, EGA);
 
-	_palettes = (Palette **) Memory::alloc(_numPalettes * sizeof(Palette *));
-	for (uint8 paletteCtr = 0; paletteCtr < _numPalettes; ++paletteCtr, data += palSize)
-		_palettes[paletteCtr] = new Palette(SUB_PALETTE_SIZE, data, RGB64);
+	} else {
+		// VGA Palette collection
+		if (resource->size() % (SUB_PALETTE_SIZE * 3) != 0)
+			error("Resource #%d is not a valid palette set", resourceId);
 
+		palSize = SUB_PALETTE_SIZE * 3;
+		_numPalettes = resource->size() / palSize;
+
+		_palettes = (Palette **) Memory::alloc(_numPalettes * sizeof(Palette *));
+		for (uint8 paletteCtr = 0; paletteCtr < _numPalettes; ++paletteCtr, data += palSize)
+			_palettes[paletteCtr] = new Palette(SUB_PALETTE_SIZE, data, RGB64);
+	}
+
 	delete resource;
 }
 


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