Пример #1
0
        private void WritePalette(BinaryWriter writer)
        {
            Color[][] outPaletteEntries = null;

            int paletteWH = PS2PixelFormatHelper.GetPaletteDimension(PaletteFormat);

            if (PaletteColorCount == 256)
            {
                outPaletteEntries = new Color[PaletteCount][];

                // Tile the palette
                for (int i = 0; i < PaletteCount; i++)
                {
                    PS2PixelFormatHelper.TilePalette(Palettes[i], out outPaletteEntries[i]);
                }
            }
            else
            {
                outPaletteEntries = Palettes;
            }

            for (int i = 0; i < PaletteCount; i++)
            {
                PS2PixelFormatHelper.WritePixelData(PaletteFormat, writer, paletteWH, paletteWH, outPaletteEntries[i]);
            }
        }
Пример #2
0
        /// <summary>
        /// Read the palette from the stream using given pixel format, untile it, and set the data as the palette member value.
        /// </summary>
        private void ReadPalette(BinaryReader reader)
        {
            int paletteWH = PS2PixelFormatHelper.GetPaletteDimension(RasterInfoStructNode.Tex0Register.TexturePixelFormat);

            PS2PixelFormatHelper.ReadPixelData(RasterInfoStructNode.Tex0Register.ClutPixelFormat, reader, paletteWH, paletteWH, out mPalette);

            if (paletteWH == 16)
            {
                PS2PixelFormatHelper.TilePalette(mPalette, out mPalette);
            }
        }
Пример #3
0
        /// <summary>
        /// Make a copy of the palette, tile it, and write the palette to the stream using set pixel format.
        /// </summary>
        private void WritePalette(BinaryWriter writer)
        {
            int paletteWH = PS2PixelFormatHelper.GetPaletteDimension(RasterInfoStructNode.Tex0Register.TexturePixelFormat);

            Color[] outPalette;

            if (paletteWH == 16)
            {
                PS2PixelFormatHelper.TilePalette(mPalette, out outPalette);
            }
            else
            {
                outPalette = mPalette;
            }

            switch (RasterInfoStructNode.Tex0Register.ClutPixelFormat)
            {
            case PS2PixelFormat.PSMZ32:
            case PS2PixelFormat.PSMTC32:
                PS2PixelFormatHelper.WritePSMCT32(writer, paletteWH, paletteWH, outPalette);
                break;

            case PS2PixelFormat.PSMZ24:
            case PS2PixelFormat.PSMTC24:
                PS2PixelFormatHelper.WritePSMCT24(writer, paletteWH, paletteWH, outPalette);
                break;

            case PS2PixelFormat.PSMZ16:
            case PS2PixelFormat.PSMTC16:
                PS2PixelFormatHelper.WritePSMCT16(writer, paletteWH, paletteWH, outPalette);
                break;

            case PS2PixelFormat.PSMZ16S:
            case PS2PixelFormat.PSMTC16S:
                PS2PixelFormatHelper.WritePSMCT16S(writer, paletteWH, paletteWH, outPalette);
                break;

            default:
                throw new NotImplementedException();
            }
        }