Code:
Stream dataStream = new Stream(compressedContainer.getFileData(s + ".dat"));
Stream indexStream = new Stream(compressedContainer.getFileData("index.dat"));
indexStream.currentOffset = dataStream.getUnsignedShort();
anInt1444 = indexStream.getUnsignedShort();
anInt1445 = indexStream.getUnsignedShort();
int paletteSize = indexStream.getUnsignedByte();
int buffer[] = new int[paletteSize];
for (int palettePtr = 0; palettePtr < paletteSize - 1; palettePtr++) {
buffer[palettePtr + 1] = indexStream.get24BitInt();
if (buffer[palettePtr + 1] == 0)
buffer[palettePtr + 1] = 1;
}
for (int l = 0; l < i; l++) {
indexStream.currentOffset += 2;
dataStream.currentOffset += indexStream.getUnsignedShort() * indexStream.getUnsignedShort();
indexStream.currentOffset++;
}
anInt1442 = indexStream.getUnsignedByte();
anInt1443 = indexStream.getUnsignedByte();
myWidth = indexStream.getUnsignedShort();
myHeight = indexStream.getUnsignedShort();
int imgType = indexStream.getUnsignedByte();
int pixelSize = myWidth * myHeight;
myPixels = new int[pixelSize];
if (imgType == 0) { //use individual pixel values
for (int pixelsPtr = 0; pixelsPtr < pixelSize; pixelsPtr++)
myPixels[pixelsPtr] = buffer[dataStream.getUnsignedByte()];
return;
}
if (imgType == 1) { //use palette indexes
for (int pixelX = 0; pixelX < myWidth; pixelX++) {
for (int pixelY = 0; pixelY < myHeight; pixelY++)
myPixels[pixelX + pixelY * myWidth] = buffer[dataStream.getUnsignedByte()];
}
}