コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
    }
コード例 #4
0
        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;
            }
        }