public static PalEntry[] readPalette(byte[] fileData, int startOffset, int palw, int palh) { var numEntries = palw * palh; var palette = new PalEntry[numEntries]; for (var i = 0; i < numEntries; ++i) { var pe = new PalEntry { r = fileData[startOffset + i * 4], g = fileData[startOffset + i * 4 + 1], b = fileData[startOffset + i * 4 + 2], a = fileData[startOffset + i * 4 + 3] }; palette[i] = pe; } return(palette); }
public static PalEntry[] unswizzlePalette(PalEntry[] palette) { if (palette.Length == 256) { var unswizzled = new PalEntry[palette.Length]; var j = 0; for (var i = 0; i < 256; i += 32, j += 32) { copy(unswizzled, i, palette, j, 8); copy(unswizzled, i + 16, palette, j + 8, 8); copy(unswizzled, i + 8, palette, j + 16, 8); copy(unswizzled, i + 24, palette, j + 24, 8); } return(unswizzled); } else { return(palette); } }