public static void SaveData(int body, string path) { for (int i = 0; i <= 21; i++) { for (int j = 0; j <= 4; j++) { byte[] data = AnimationsXNA.GetData(body, i, j, 0, false); if (data != null) { FileStream stream = new FileStream(string.Format(path + "\\{0}-{1}-{2}", body, i, j), FileMode.Create); BinaryWriter w = new BinaryWriter(stream); w.Write(data); w.Close(); } } } }
private static void transform(BinaryReader bin) { FrameXNA[] frames = AnimationsXNA.GetAnimation(bin); BitStream CellMatrixStream = new BitStream(); BitStream CellDeltaEncodingStream = new BitStream(); BitStream CellDataStream = new BitStream(); int width, height, xoffset, yoffset; getWidthHeight(frames, out width, out height, out xoffset, out yoffset); uint[][] pixeldata = new uint[frames.Length][]; for (int i = 0; i < frames.Length; i++) { pixeldata[i] = getPixelData(frames[i], width, height, xoffset - frames[i].Center.X, (height + (yoffset - frames[i].Center.Y)) - frames[i].Texture.Height); } uint[] palette = new uint[0x100]; uint[] palettesortvalues = new uint[0x100]; uint[] paletteSimilars = new uint[0x100]; for (int i = 0; i < frames.Length; i++) { getPalette(pixeldata[i], palette, palettesortvalues); } palettesortvalues[0] = int.MaxValue; sortPalette(palette, palettesortvalues); // findSimilarShadesInPalette(palette, ref paletteSimilars); // combinePalette(palette, paletteSimilars, palettesortvalues); // sortPalette(palette, palettesortvalues, paletteSimilars); // debug = count num of pixels using top 16 colors. int topsixteen = 0; int others = 0; for (int i = 1; i < 17; i++) { topsixteen += (int)palettesortvalues[i]; } for (int i = 17; i < 256; i++) { others += (int)palettesortvalues[i]; } byte[][] framedata = new byte[frames.Length][]; for (int i = 0; i < frames.Length; i++) { framedata[i] = palettedFrame(pixeldata[i], palette, paletteSimilars); } for (int i = 0; i < frames.Length; i++) { byte[][] framecells = getCells(framedata[i], width); byte[][] lastFrameCells; if (i > 0) { lastFrameCells = getCells(buildFrame(width, height, CellMatrixStream, CellDeltaEncodingStream, CellDataStream), width); } else { lastFrameCells = new byte[0][]; } getStreams(framecells, lastFrameCells, i, width, palette, CellMatrixStream, CellDeltaEncodingStream, CellDataStream); byte[] newframedata = buildFrame(width, height, CellMatrixStream, CellDeltaEncodingStream, CellDataStream); FrameXNA frame = new FrameXNA(AnimationsXNA.DEBUG_GFX, palette, newframedata, width, height, 0, 0); frame.Texture.Save("test.bmp", Microsoft.Xna.Framework.Graphics.ImageFileFormat.Bmp); } int size = (int)(CellMatrixStream.Length >> 3) + (int)(CellDeltaEncodingStream.Length >> 3) + (int)(CellDataStream.Length >> 3); }