예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }