/// <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(); } }