public ImageRGB(Archive archive, String string, int archiveIndex) { Buffer dataBuffer = new Buffer(archive.getFile(string + ".dat")); Buffer indexBuffer = new Buffer(archive.getFile("index.dat")); indexBuffer.offset = dataBuffer.getUnsignedLEShort(); maxWidth = indexBuffer.getUnsignedLEShort(); maxHeight = indexBuffer.getUnsignedLEShort(); int length = indexBuffer.getUnsignedByte(); int[] pixels = new int[length]; for (int pixel = 0; pixel < (length - 1); pixel++) { pixels[pixel + 1] = indexBuffer.get24BitInt(); if (pixels[pixel + 1] == 0) { pixels[pixel + 1] = 1; } } for (int index = 0; index < archiveIndex; index++) { indexBuffer.offset += 2; dataBuffer.offset += indexBuffer.getUnsignedLEShort() * indexBuffer.getUnsignedLEShort(); indexBuffer.offset++; } offsetX = indexBuffer.getUnsignedByte(); offsetY = indexBuffer.getUnsignedByte(); width = indexBuffer.getUnsignedLEShort(); height = indexBuffer.getUnsignedLEShort(); int type = indexBuffer.getUnsignedByte(); int pixelCount = width * height; this.pixels = new int[pixelCount]; if (type == 0) { for (int pixel = 0; pixel < pixelCount; pixel++) { this.pixels[pixel] = pixels[dataBuffer.getUnsignedByte()]; } } else if (type == 1) { for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { this.pixels[x + (y * width)] = pixels[dataBuffer.getUnsignedByte()]; } } } }