Example #1
0
        private void toolStripButton6_Click(object sender, EventArgs e)
        {
            Bitmap b = new Bitmap(80, 88);

            using (Graphics graphics = Graphics.FromImage((Image)b))
            {
                graphics.SmoothingMode      = SmoothingMode.HighQuality;
                graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                graphics.PixelOffsetMode    = PixelOffsetMode.HighQuality;
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.DrawImage(Image.FromFile(this.openFileDialog1.FileName), new Rectangle(4, 0, 70, 88), new Rectangle(0, 0, 70, 88), GraphicsUnit.Pixel);
            }
            Graphic.Tiles8x8 tiles8x8  = new Graphic.Tiles8x8(b, false);
            List <Color>     colorList = new List <Color>();

            foreach (Graphic.Tile8x8 allTile in tiles8x8.AllTiles)
            {
                colorList.Add(Graphic.GeneratePalette(allTile.ToBitmap(), 1, false, false)[0]);
            }
            Color[] palette = Graphic.GeneratePalette(colorList.ToArray(), 7, false);
            int     num     = 0;

            foreach (Color a in colorList)
            {
                this.selectedpalettes[num % 10, num / 10] = (byte)Graphic.NearestColor(a, palette);
                ++num;
            }
            this.pictureBox2.Invalidate();
        }
Example #2
0
        public void Generate()
        {
            Bitmap b1 = new Bitmap(80, 88);

            using (Graphics graphics = Graphics.FromImage((Image)b1))
            {
                graphics.SmoothingMode      = SmoothingMode.HighQuality;
                graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                graphics.PixelOffsetMode    = PixelOffsetMode.HighQuality;
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.DrawImage(Image.FromFile(this.openFileDialog1.FileName), new Rectangle(4, 0, 70, 88), new Rectangle(0, 0, 70, 88), GraphicsUnit.Pixel);
            }
            Graphic.Tiles8x8         tiles8x8         = new Graphic.Tiles8x8(b1, false);
            List <Graphic.Tile8x8>[] tile8x8ListArray = new List <Graphic.Tile8x8>[7]
            {
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>(),
                new List <Graphic.Tile8x8>()
            };
            for (int index1 = 0; index1 < 11; ++index1)
            {
                for (int index2 = 0; index2 < 10; ++index2)
                {
                    tile8x8ListArray[(int)this.selectedpalettes[index2, index1]].Add(tiles8x8.AllTiles[index1 * 10 + index2]);
                }
            }
            Color[][]   colorArray = new Color[16][];
            List <byte> byteList1  = new List <byte>();

            for (int index1 = 0; index1 < 7; ++index1)
            {
                if (tile8x8ListArray[index1].Count != 0)
                {
                    Bitmap b2 = new Bitmap(8 * tile8x8ListArray[index1].Count, 8);
                    using (Graphics graphics = Graphics.FromImage((Image)b2))
                    {
                        int num = 0;
                        foreach (Graphic.Tile8x8 tile8x8 in tile8x8ListArray[index1])
                        {
                            graphics.DrawImage((Image)tile8x8.ToBitmap(), num * 8, 0);
                            ++num;
                        }
                    }
                    Color[] palette = Graphic.GeneratePalette(b2, 16, true, true);
                    palette[0]         = Color.FromArgb(240, 152, 192);
                    colorArray[index1] = palette;
                }
                else
                {
                    colorArray[index1]    = new Color[16];
                    colorArray[index1][0] = Color.FromArgb(240, 152, 192);
                    for (int index2 = 1; index2 < 16; ++index2)
                    {
                        colorArray[index1][index2] = Color.Black;
                    }
                }
            }
            for (int index1 = 0; index1 < 9; ++index1)
            {
                colorArray[index1 + 7] = new Color[16];
                for (int index2 = 0; index2 < 16; ++index2)
                {
                    colorArray[index1 + 7][index2] = Color.Black;
                }
            }
            for (int index1 = 0; index1 < 11; ++index1)
            {
                for (int index2 = 0; index2 < 10; ++index2)
                {
                    byteList1.AddRange((IEnumerable <byte>)tiles8x8.AllTiles[index1 * 10 + index2].GetData(colorArray[(int)this.selectedpalettes[index2, index1]], Graphic.GXTexFmt.GX_TEXFMT_PLTT16, true));
                }
            }
            List <Color> colorList = new List <Color>();

            for (int index = 0; index < 16; ++index)
            {
                colorList.AddRange((IEnumerable <Color>)colorArray[index]);
            }
            this.PaletteData = Graphic.ToABGR1555(colorList.ToArray());
            this.ImageData   = byteList1.ToArray();
            MemoryStream       memoryStream       = new MemoryStream();
            EndianBinaryWriter endianBinaryWriter = new EndianBinaryWriter((Stream)memoryStream, Endianness.LittleEndian);

            for (int index = 0; index < 278; ++index)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            int index3 = 0;
            int index4 = 0;

            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index3, index4] & 15) << 12) + 0 + 0 + (index4 * 10 + index3 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index3;
            }
            int index5 = 0;
            int index6 = index4 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index5, index6] & 15) << 12) + 0 + 0 + (index6 * 10 + index5 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index5;
            }
            int index7 = 0;
            int index8 = index6 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index7, index8] & 15) << 12) + 0 + 0 + (index8 * 10 + index7 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index7;
            }
            int index9  = 0;
            int index10 = index8 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index9, index10] & 15) << 12) + 0 + 0 + (index10 * 10 + index9 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index9;
            }
            int index11 = 0;
            int index12 = index10 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index11, index12] & 15) << 12) + 0 + 0 + (index12 * 10 + index11 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index11;
            }
            int index13 = 0;
            int index14 = index12 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index13, index14] & 15) << 12) + 0 + 0 + (index14 * 10 + index13 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index13;
            }
            int index15 = 0;
            int index16 = index14 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index15, index16] & 15) << 12) + 0 + 0 + (index16 * 10 + index15 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index15;
            }
            int index17 = 0;
            int index18 = index16 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index17, index18] & 15) << 12) + 0 + 0 + (index18 * 10 + index17 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index17;
            }
            int index19 = 0;
            int index20 = index18 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index19, index20] & 15) << 12) + 0 + 0 + (index20 * 10 + index19 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index19;
            }
            int index21 = 0;
            int index22 = index20 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index21, index22] & 15) << 12) + 0 + 0 + (index22 * 10 + index21 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index21;
            }
            int index23 = 0;
            int index24 = index22 + 1;

            for (int index1 = 0; index1 < 22; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            for (int index1 = 0; index1 < 10; ++index1)
            {
                int num = (((int)this.selectedpalettes[index23, index24] & 15) << 12) + 0 + 0 + (index24 * 10 + index23 + 1 & 1023);
                endianBinaryWriter.Write((ushort)num);
                ++index23;
            }
            for (int index1 = 0; index1 < 416; ++index1)
            {
                int num = 0 + 0 + 0;
                endianBinaryWriter.Write((ushort)num);
            }
            this.ScreenData = memoryStream.ToArray();
            endianBinaryWriter.Close();
            List <byte> byteList2 = new List <byte>();

            byteList2.AddRange((IEnumerable <byte>) new byte[32]);
            byteList2.AddRange((IEnumerable <byte>) this.ImageData);
            this.pictureBox1.Image = (Image)Graphic.ConvertData(byteList2.ToArray(), 80, 88, this.PaletteData, this.ScreenData, 256, 256, Graphic.GXTexFmt.GX_TEXFMT_PLTT16, Graphic.NNSG2dCharacterFmt.NNS_G2D_CHARACTER_FMT_CHAR);
        }