public void Export(string _outfilename) { Debug.Log("Exporting sprite to " + _outfilename); int numFrames = m_imageConfig.GetNumFrames(); int flags = 0x00; flags |= m_imageConfig.m_importAsBSprite ? 0x01 : 0x00; int outsize = 6 + numFrames; // 1 extra byte per frame, for the frame time byte[] outBytes = new byte[outsize]; Halp.Write8(outBytes, 0, m_imageConfig.GetSpriteWidth()); Halp.Write8(outBytes, 1, m_imageConfig.GetSpriteHeight()); Halp.Write8(outBytes, 2, numFrames); Halp.Write8(outBytes, 3, flags); Halp.Write16(outBytes, 4, 0xdead); // Put file handle here! int iFrame; for (iFrame = 0; iFrame < numFrames; iFrame++) { Halp.Write8(outBytes, 6 + iFrame, m_imageConfig.GetFrameTime(iFrame)); } System.IO.File.WriteAllBytes(_outfilename, outBytes); }
private byte[] ChunkyToPlanarSpriteFrames(byte[] chunkyImage) { int chunkyStepPerRow = m_imageWidth; int planarStepPerRow = 4; int planarStepPerPlane = 2; int dataSizePerFrame = 16 + (m_imageHeight * 2 * 4); // 2 bytes per row per bitplane, 4 bitplanes int planarDataSize = m_numberOfFrames * dataSizePerFrame; // byte[] spriteData = new byte[planarDataSize]; ChunkyToPlanar c2p1 = new ChunkyToPlanar(0, 1, chunkyStepPerRow, planarStepPerRow, planarStepPerPlane); ChunkyToPlanar c2p2 = new ChunkyToPlanar(2, 3, chunkyStepPerRow, planarStepPerRow, planarStepPerPlane); for (int frame = 0; frame < m_numberOfFrames; frame++) { for (int x = 0; x < m_spriteWidth; x += 8) { for (int y = 0; y < m_imageHeight; y++) { { c2p1.ChunkyToPlanar8Pixels(chunkyImage, x + (frame * m_spriteWidth), y, spriteData, x, (frame * 2 * (m_imageHeight + 2)) + 1 + y); c2p2.ChunkyToPlanar8Pixels(chunkyImage, x + (frame * m_spriteWidth), y, spriteData, x, (frame * 2 * (m_imageHeight + 2)) + 3 + m_imageHeight + y); } } } int baseGrej = frame * dataSizePerFrame; Halp.Write16(spriteData, baseGrej + 0, 0x2c40); Halp.Write16(spriteData, baseGrej + 2, 0x3c00); Halp.Write16(spriteData, baseGrej - 4 + (dataSizePerFrame / 2), 0x0000); Halp.Write16(spriteData, baseGrej - 2 + (dataSizePerFrame / 2), 0x0000); Halp.Write16(spriteData, baseGrej + 0 + (dataSizePerFrame / 2), 0x2c40); Halp.Write16(spriteData, baseGrej + 2 + (dataSizePerFrame / 2), 0x3c80); Halp.Write16(spriteData, baseGrej - 4 + dataSizePerFrame, 0x0000); Halp.Write16(spriteData, baseGrej - 2 + dataSizePerFrame, 0x0000); } return(spriteData); }
public void ExportMegaDrive(string _outfilename) { Debug.Log("Exporting tile bank (Mega Drive) to " + _outfilename); int headersize = 2; int numTiles = m_tiles.Count; // Export size = number of tiles * 64 pixels / 2 (because there are 2 bytes per pixel) int outsize = headersize + (numTiles * 32); byte[] outBytes = new byte[outsize]; Debug.Log("exporting " + numTiles + " tiles"); Halp.Write16(outBytes, 0, numTiles); int iTile; for (iTile = 0; iTile < numTiles; iTile++) { int x, y; for (y = 0; y < Tile.Height; y++) { for (x = 0; x < Tile.Width / 2; x++) { int value = 0; Tile t = m_tiles[iTile]; int ofs = (y * Tile.Width) + (x * 2); value += (t.m_pixels[ofs + 0] & 0xf) << 4; value += (t.m_pixels[ofs + 1] & 0xf) << 0; int outOffset = (iTile * 32) + (y * Tile.Width / 2) + x; outBytes[headersize + outOffset] = (byte)value; } } } System.IO.File.WriteAllBytes(_outfilename, outBytes); }
private void ChangePage(Pages options) { switch (options) { case Pages.Difficulty: var difficulty = new DifficultyPage(); difficulty.CheckClick += value => { ChangePage(value); }; difficulty.DataContext = this.DataContext; this.frameToHoldThePages.Navigate(difficulty); break; case Pages.Halp: Halp halp = new Halp(); halp.DataContext = this.DataContext; this.frameToHoldThePages.Navigate(halp); break; case Pages.Settings: var settings = new Settings(); settings.DataContext = this.DataContext; this.frameToHoldThePages.Navigate(settings); break; case Pages.Game: var game = new GamePage(); game.DataContext = this.DataContext; game.CheckClick += value => { ChangePage(value); }; this.frameToHoldThePages.Navigate(game); break; case Pages.MainMenu: MainMenu mainMenu = new MainMenu(); mainMenu.CheckClick += value => { ChangePage(value); }; mainMenu.DataContext = this.DataContext; this.frameToHoldThePages.Navigate(mainMenu); break; case Pages.GameOver: var gameOver = new GameOver(); gameOver.CheckClick += value => { ChangePage(value); }; gameOver.DataContext = this.DataContext; this.frameToHoldThePages.Navigate(gameOver); break; default: break; } }