public static void SaveAPImages(string filename, uint image_addr, uint ap_addr, int x, int y)
        {
            image_addr = U.toOffset(image_addr);
            Bitmap parts = DrawBorderBitmap(image_addr);

            ap_addr = U.toOffset(ap_addr);
            ImageUtilAP ap = new ImageUtilAP();
            bool        r  = ap.Parse(ap_addr);

            if (!r)
            {
                return;
            }

            Bitmap borderimg = ImageUtil.Blank(256, 160, parts);

            ap.DrawFrame(borderimg, 0, x, y, parts);
            string export_filename = ImageFormRef.ExportImage(null, borderimg, filename);

            string name_filename = MakeBorderNameImageFileName(export_filename);

            borderimg = ImageUtil.Blank(256, 160, parts);
            ap.DrawFrame(borderimg, 1, x, y, parts);
            ImageUtil.BlackOutUnnecessaryColors(borderimg, 1);
            borderimg.Save(name_filename);
        }
Exemplo n.º 2
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap        = DrawBG((uint)this.AddressList.SelectedIndex + 1);
            int    palette_count = ImageUtil.GetPalette16Count(bitmap);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(), palette_count);
        }
Exemplo n.º 3
0
 private void ExportButton_Click(object sender, EventArgs e)
 {
     if (this.DrawBitmap == null)
     {
         return;
     }
     ImageFormRef.ExportImage(this, this.DrawBitmap, InputFormRef.MakeSaveImageFilename(), 1);
 }
Exemplo n.º 4
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            if (this.DrawBitmap == null)
            {
                return;
            }

            ImageFormRef.ExportImage(this
                                     , this.DrawBitmap
                                     , InputFormRef.MakeSaveImageFilename(this, U.ToHexString(this.PALETTE_ADDRESS.Value))
                                     , this.MaxPaletteCount);
        }
Exemplo n.º 5
0
 private void ExportButton_Click(object sender, EventArgs e)
 {
     if (this.DrawBimap == null)
     {
         return;
     }
     ImageFormRef.ExportImage(this
                              , this.DrawBimap
                              , InputFormRef.MakeSaveImageFilename(this, U.ToHexString((uint)Image.Value))
                              , (int)U.atoi(this.USE_PALETTE_NUMBER.Text)
                              );
 }
Exemplo n.º 6
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap   = DrawImageByID((uint)this.AddressList.SelectedIndex);
            uint   typeFlag = (uint)B0.Value;

            if (typeFlag == 0x00)
            {//単体
                ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(), 8);
            }
            else
            {//10分割
                ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(), 8);
            }
        }
Exemplo n.º 7
0
        //顔シートの出力
        private void ExportButton_Click(object sender, EventArgs e)
        {
            uint unit_face = (uint)this.D0.Value;

            if (unit_face != 0)
            {
                Bitmap seetbitmap = DrawPortraitSeetFE6((uint)this.AddressList.SelectedIndex);
                ImageFormRef.ExportImage(this, seetbitmap, InputFormRef.MakeSaveImageFilename());
            }
            else
            {
                Bitmap classbitmap = ImagePortraitForm.DrawPortraitClass((uint)this.AddressList.SelectedIndex);
                ImageFormRef.ExportImage(this, classbitmap, InputFormRef.MakeSaveImageFilename());
            }
        }
Exemplo n.º 8
0
        private void AutoGenbutton_Click(object sender, EventArgs e)
        {//フォントの自動生成.
            string mojiText = SearchChar.Text;

            mojiText = mojiText.Trim();
            if (mojiText.Length <= 0)
            {
                return;
            }

            bool   isItemFont   = this.FontType.SelectedIndex == 0;
            bool   isSquareFont = true;
            int    font_width;
            Bitmap autogen = ImageUtil.AutoGenerateFont(mojiText, UseFontNameTextEdit.Font, isItemFont, isSquareFont, out font_width);

            if (autogen == null)
            {
                R.ShowStopError("フォントの自動生成に失敗しました。対応する日本語フォントがありません。");
                return;
            }

            DialogResult dr = R.ShowQ("フォントを自動生成しました。\r\nROMに書き込みますか?\r\n\r\n「はい」ならば、ROMに書き込みます。\r\n「いいえ」ならば、画像ファイルとして保存します。\r\n");

            if (dr == System.Windows.Forms.DialogResult.Yes)
            {
                //画像
                this.SelectFontBitmapByte = ImageUtil.Image4ToByteZH(autogen, font_width);
                U.ForceUpdate(this.FontWidth, font_width);

                //画像等データの書き込み
                WriteButton.PerformClick();
                //即検索
                SearchButton.PerformClick();
            }
            else if (dr == System.Windows.Forms.DialogResult.No)
            {
                if (this.FontType.SelectedIndex == 0)
                {
                    //アイテム
                    ImageFormRef.ExportImage(this, autogen, InputFormRef.MakeSaveImageFilename(this, "Item_" + mojiText), font_width);
                }
                else
                {
                    //セリフ
                    ImageFormRef.ExportImage(this, autogen, InputFormRef.MakeSaveImageFilename(this, "Serif_" + mojiText), font_width);
                }
            }
        }
Exemplo n.º 9
0
        private void ObjExportButton_Click(object sender, EventArgs e)
        {
            uint palIndex = CalcPatelleIndex();

            if (palIndex == 0 || palIndex == U.NOT_FOUND)
            {//パレットは正しい順場
                Bitmap newbitmap = this.MapObjImage;
                ImageFormRef.ExportImage(this, newbitmap, InputFormRef.MakeSaveImageFilename(this, MapStyle), MAX_MAP_PALETTE_COUNT);
            }
            else
            {//現在選択しているパレット
                Bitmap newbitmap = ImageUtil.SwapPalette(this.MapObjImage, (int)palIndex);
                string name      = MapStyle.Text + "_swap_" + palIndex;
                ImageFormRef.ExportImage(this, newbitmap, InputFormRef.MakeSaveImageFilename(this, name), MAX_MAP_PALETTE_COUNT);
            }
        }
Exemplo n.º 10
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            uint addr = InputFormRef.SelectToAddr(this.AddressList);

            if (addr == U.NOT_FOUND)
            {
                return;
            }

            uint img = Program.ROM.u32(addr);
            uint pal = Program.ROM.u32(addr + (8 * 4));

            Bitmap bitmap = Draw(img, pal);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename());
        }
Exemplo n.º 11
0
 private void ExportButton_Click(object sender, EventArgs e)
 {
     if (this.SearchChar.Text.Length <= 0)
     {
         return;
     }
     PatchUtil.PRIORITY_CODE priorityCode = PatchUtil.SearchPriorityCode();
     if (this.FontType.SelectedIndex == 0)
     {
         //アイテム
         Bitmap bitmap = FontForm.DrawFont(this.SearchChar.Text, true, priorityCode);
         ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "Item_" + this.SearchChar.Text), 8);
     }
     else
     {
         //セリフ
         Bitmap bitmap = FontForm.DrawFont(this.SearchChar.Text, false, priorityCode);
         ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "Serif_" + this.SearchChar.Text), 8);
     }
 }
Exemplo n.º 12
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            if (this.SearchChar.Text.Length <= 0)
            {
                return;
            }
            int width;

            if (this.FontType.SelectedIndex == 0)
            {
                //アイテム
                Bitmap bitmap = FontZHForm.DrawFont(this.SearchChar.Text, true, out width);
                ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "Item_" + this.SearchChar.Text), 8);
            }
            else
            {
                //セリフ
                Bitmap bitmap = FontZHForm.DrawFont(this.SearchChar.Text, false, out width);
                ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "Serif_" + this.SearchChar.Text), 8);
            }
        }
Exemplo n.º 13
0
        private void unit_icon_sepia_Export_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawUnits(6);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "unit_icon_sepia"));
        }
Exemplo n.º 14
0
        private void icon_palette_Export_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawItemIcons();

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "item_icon"));
        }
Exemplo n.º 15
0
 private void ExportButton_Click(object sender, EventArgs e)
 {
     MakeBattleScreen(); //TSA描画
     ImageFormRef.ExportImage(this, this.DrawBitmap, InputFormRef.MakeSaveImageFilename(this, R._("戦闘画面")), 4);
 }
Exemplo n.º 16
0
        private void ExportButton3_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawPic((uint)P8.Value, 8 * 18);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename());
        }
Exemplo n.º 17
0
        private void PaletteExportButton_Click(object sender, EventArgs e)
        {
            Bitmap newbitmap = this.MapObjImage;

            ImageFormRef.ExportImage(this, newbitmap, InputFormRef.MakeSaveImageFilename(this, MapStyle), MAX_MAP_PALETTE_COUNT);
        }
Exemplo n.º 18
0
        private void DataDumpButton_Click(object sender, EventArgs e)
        {
            if (this.DrawBimap == null)
            {
                return;
            }
            string savefilename =
                ImageFormRef.ExportImage(this
                                         , this.DrawBimap
                                         , InputFormRef.MakeSaveImageFilename(this, U.ToHexString((uint)Image.Value))
                                         , (int)U.atoi(this.USE_PALETTE_NUMBER.Text)
                                         );

            if (savefilename == "")
            {
                return;
            }

            if (ImageOption.SelectedIndex == 0 || ImageOption.SelectedIndex == 3)
            {//圧縮画像
                byte[] image = LZ77.GetCompressDataLow(Program.ROM.Data
                                                       , U.toOffset(Image.Value));
                if (image.Length > 0)
                {
                    U.WriteAllBytes(savefilename + ".dmp", image);
                }
            }
            else if (ImageOption.SelectedIndex == 2)
            {//第2圧縮画像
                byte[] image = LZ77.GetCompressDataLow(Program.ROM.Data
                                                       , U.toOffset(Image.Value));
                if (image.Length > 0)
                {
                    U.WriteAllBytes(savefilename + ".dmp", image);
                }

                byte[] image2 = LZ77.GetCompressDataLow(Program.ROM.Data
                                                        , U.toOffset(Image2.Value));
                if (image.Length > 0)
                {
                    U.WriteAllBytes(savefilename + ".img2.dmp", image2);
                }
            }
            else
            {//無圧縮画像
                uint   image_size = ((uint)PicWidth.Value * 8 / 2) * ((uint)PicHeight.Value * 8);
                byte[] image      = U.getBinaryData(Program.ROM.Data, U.toOffset(Image.Value), image_size);
                U.WriteAllBytes(savefilename + ".dmp", image);
            }

            if (PaletteOption.SelectedIndex == 1)
            {//lz77 palette
                byte[] palette = LZ77.GetCompressDataLow(Program.ROM.Data
                                                         , U.toOffset(PALETTE.Value));
                if (palette.Length > 0)
                {
                    U.WriteAllBytes(savefilename + ".pal.dmp", palette);
                }
            }
            else
            {//通常のパレット
                uint palette_addr = ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value);

                uint palette_count = U.atoi(this.USE_PALETTE_NUMBER.Text);
                if (palette_count < 0)
                {//パレットがないのはありえないので.
                    palette_count = 1;
                }
                if (ImageOption.SelectedIndex == 3)
                {//256色
                    palette_count = 16;
                }

                byte[] palette = Program.ROM.getBinaryData(palette_addr, 0x20 * palette_count);
                U.WriteAllBytes(savefilename + ".pal.dmp", palette);
            }

            if (TSAOption.SelectedIndex == 0)
            {//TSAを利用しない
            }
            else if (TSAOption.SelectedIndex == 1 || TSAOption.SelectedIndex == 2)
            {//圧縮TSAを利用する , or 圧縮ヘッダ付きTSAを利用する
                byte[] tsa = LZ77.GetCompressDataLow(Program.ROM.Data
                                                     , U.toOffset(TSA.Value));
                if (tsa.Length > 0)
                {
                    U.WriteAllBytes(savefilename + ".tsa.dmp", tsa);
                }
            }
            else if (TSAOption.SelectedIndex == 3)
            {//無圧縮ヘッダ付きTSAを利用する
                uint tsa_addr = U.toOffset(TSA.Value);
                uint tsa_size = ImageUtil.CalcByteLengthForHeaderTSAData(Program.ROM.Data, (int)tsa_addr);
                if (tsa_size > 0)
                {
                    byte[] tsa = Program.ROM.getBinaryData(tsa_addr, tsa_size);
                    U.WriteAllBytes(savefilename + ".tsa.dmp", tsa);
                }
            }
            else if (TSAOption.SelectedIndex == 4)
            {//無圧縮TSAを利用する
                uint width  = (uint)PicWidth.Value * 8;
                uint height = (uint)PicHeight.Value * 8;

                uint tsa_addr = U.toOffset(TSA.Value);
                uint tsa_size = width * height / 32;
                if (tsa_size > 0)
                {
                    byte[] tsa = Program.ROM.getBinaryData(tsa_addr, tsa_size);
                    U.WriteAllBytes(savefilename + ".tsa.dmp", tsa);
                }
            }
            else if (TSAOption.SelectedIndex == 5)
            {//パレットマップとして解釈する
                uint width  = (uint)PicWidth.Value * 8;
                uint height = (uint)PicHeight.Value * 8;

                uint tsa_addr = U.toOffset(TSA.Value);
                uint tsa_size = width * height / 2;
                if (tsa_size > 0)
                {
                    byte[] tsa = Program.ROM.getBinaryData(tsa_addr, tsa_size);
                    U.WriteAllBytes(savefilename + ".tsa.dmp", tsa);
                }
            }
        }
Exemplo n.º 19
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = Draw((uint)D12.Value, (uint)D16.Value);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename());
        }
Exemplo n.º 20
0
        private void BORDER_ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawBorderBitmap((uint)BORDER_P0.Value);

            ImageFormRef.ExportImage(this, bitmap, Border_InputFormRef.MakeSaveImageFilename());
        }
Exemplo n.º 21
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawTSAAnime((uint)P0.Value, (uint)P4.Value, (uint)P8.Value);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(), 8);
        }
Exemplo n.º 22
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawWorldMap();

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(this, "WorldMap"), 4);
        }
Exemplo n.º 23
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawImageByID((uint)this.AddressList.SelectedIndex);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename(), 1);
        }
Exemplo n.º 24
0
 private void ExportButton_Click(object sender, EventArgs e)
 {
     ImageFormRef.ExportImage(this, this.ChangePaletteBitmap, InputFormRef.MakeSaveImageFilename(), 5);
 }
Exemplo n.º 25
0
        private void ExportButton_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = DrawIcon((uint)AddressList.SelectedIndex, this.IconBaseAddress);

            ImageFormRef.ExportImage(this, bitmap, InputFormRef.MakeSaveImageFilename());
        }
Exemplo n.º 26
0
        private void MakeButton_Click(object sender, EventArgs e)
        {
            if (BustshotBitmap == null || FaceBitmap == null)
            {
                return;
            }
            int wakuWidth  = MakeWakuWidth();
            int wakuHeight = MakeWakuHeight();
            int tileWidth  = wakuWidth / 3;
            int tileHeight = wakuHeight / 5;
            {
                string errorMessage = CheckPartsRange(tileWidth, tileHeight);
                if (errorMessage != "")
                {
                    R.ShowStopError(errorMessage);
                    return;
                }
            }

            Bitmap CanvasBitmap = DrawBitmap(0, CATEGORY.PLAIN);

            Bitmap   PortraitBitmap = new Bitmap(128, 112);
            Graphics gg             = Graphics.FromImage(PortraitBitmap);

            GraphicsSetting(gg);

            //切り取る部分の範囲を決定する
            Rectangle srcRect  = new Rectangle((int)this.ClipX.Value, (int)this.ClipY.Value, wakuWidth, wakuHeight);
            Rectangle destRect = new Rectangle(0, 0, 96, 80);

            //ベースを切り抜く
            gg.DrawImage(CanvasBitmap, destRect, srcRect, GraphicsUnit.Pixel);

            //MAP顔
            destRect = new Rectangle(96, 16, 32, 16 * 2);
            gg.DrawImage(CanvasBitmap, destRect, srcRect, GraphicsUnit.Pixel);

            int       eyeX         = (((int)this.EyeX.Value - (int)this.ClipX.Value) / tileWidth) * tileWidth + (int)this.ClipX.Value;
            int       eyeY         = (((int)this.EyeY.Value - (int)this.ClipY.Value) / tileHeight) * tileHeight + (int)this.ClipY.Value;
            int       mouthX       = (((int)this.MouthX.Value - (int)this.ClipX.Value) / tileWidth) * tileWidth + (int)this.ClipX.Value;
            int       mouthY       = (((int)this.MouthY.Value - (int)this.ClipY.Value) / tileHeight) * tileHeight + (int)this.ClipY.Value;
            Rectangle eycSrcRect   = new Rectangle(eyeX, eyeY, tileWidth, tileHeight);
            Rectangle mouthSrcRect = new Rectangle(mouthX, mouthY, tileWidth, tileHeight);

            //目の位置枠 とろん目
            CanvasBitmap = DrawBitmap(2, CATEGORY.TYPE_EYE);
            destRect     = new Rectangle(96, 16 * 3, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, eycSrcRect, GraphicsUnit.Pixel);
            //とろん目の口
            CanvasBitmap = DrawBitmap(2, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 2, 16 * 5, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            //目の位置枠 閉じ目
            CanvasBitmap = DrawBitmap(7, CATEGORY.TYPE_EYE);
            destRect     = new Rectangle(96, 16 * 4, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, eycSrcRect, GraphicsUnit.Pixel);
            //閉じ目の口は通常の口を利用しにないとダメ. ステータス画面に使われる.
            CanvasBitmap = DrawBitmap(0, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(96, 16 * 5, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            //笑い目の口
            CanvasBitmap = DrawBitmap(6, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 2, 16 * 6, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            //大開の口
            CanvasBitmap = DrawBitmap(1, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 0, 16 * 5, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            CanvasBitmap = DrawBitmap(1, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 0, 16 * 6, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            //驚き顔の口
            CanvasBitmap = DrawBitmap(4, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 1, 16 * 5, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);

            //戸惑い顔の口
            CanvasBitmap = DrawBitmap(5, CATEGORY.TYPE_MOUTH);
            destRect     = new Rectangle(32 * 1, 16 * 6, 32, 16);
            gg.DrawImage(CanvasBitmap, destRect, mouthSrcRect, GraphicsUnit.Pixel);


            if (DecreaseColorCheckBox.Checked == true)
            {
                Bitmap PortraitBitmap16 = DecreaseColor16(PortraitBitmap, tileWidth, tileHeight);
                ImageFormRef.ExportImage(this, PortraitBitmap16, "Portrait", 1);
                //エクスプローラで選択は自動的にやってくれる.
                //U.SelectFileByExplorer(savefilename);
            }
            else
            {   //そのまま保存.
                string savefilename = ImageFormRef.ExportImageLow(this, PortraitBitmap, "Portrait");
                //エクスプローラで選択
                U.SelectFileByExplorer(savefilename);
            }

            gg.Dispose();
        }