[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