//イベント用のワールドマップを描画する
        public static Bitmap DrawWorldMapEvent(
            uint image
            , uint palette //通常パレット
            , uint tsa     //TSA
            )
        {
            image   = U.toOffset(image);
            palette = U.toOffset(palette);
            tsa     = U.toOffset(tsa);
            if (!U.isSafetyOffset(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isSafetyOffset(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isSafetyOffset(tsa))
            {
                return(ImageUtil.BlankDummy());
            }
            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, image);
            byte[] tsaUZ   = LZ77.decompress(Program.ROM.Data, tsa);

            return(ImageUtil.ByteToImage16TileHeaderTSA(256, 160
                                                        , imageUZ, 0
                                                        , Program.ROM.Data, (int)palette
                                                        , tsaUZ, 0
                                                        ));
        }
Exemple #2
0
        public static Bitmap DrawImage(uint table, uint tsa, uint palette)
        {
            if (!U.isPointer(table))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }

            table = U.toOffset(table);

            List <byte> imageUZList = new List <byte>();

            for (int i = 0; i < 10; i++)
            {
                uint image = Program.ROM.u32((uint)(table + (i * 4)));
                if (!U.isPointer(image))
                {
                    return(ImageUtil.BlankDummy());
                }
                byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
                imageUZList.AddRange(imageUZ);
            }
            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8, imageUZList.ToArray(), 0, Program.ROM.Data, (int)U.toOffset(palette), Program.ROM.Data, (int)U.toOffset(tsa)));
        }
        public static Bitmap DrawImage(uint image, uint tsa)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }
            uint palette =
                Program.ROM.p32(Program.ROM.RomInfo.ed_staffroll_palette_pointer);

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            byte[] tsaUZ   = LZ77.decompress(Program.ROM.Data, U.toOffset(tsa));
            if (imageUZ.Length <= 0)
            {
                return(ImageUtil.BlankDummy());
            }
            if (tsaUZ.Length <= 0)
            {
                return(ImageUtil.BlankDummy());
            }

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 32 * 8, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), tsaUZ, 0));
        }
        static Bitmap DrawOneImage(uint image, uint tsa, uint palette)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), Program.ROM.Data, (int)U.toOffset(tsa)));
        }
Exemple #5
0
        static Bitmap DrawTSAAnime2(uint image, uint palette, uint tsa)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            int    height  = (int)ImageUtil.CalcByteLengthForHeaderTSAData(Program.ROM.Data, (int)U.toOffset(tsa));

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, height, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), Program.ROM.Data, (int)U.toOffset(tsa)));
        }
        //FE7のワールドマップを描画する
        //詳細は、呼び出し元のメソッドを見てね.
        public static Bitmap DrawWorldMapFE7(uint imagemap, uint palette, uint tsamap)
        {
            Bitmap map = ImageUtil.Blank(1024, 688);

            map.Palette = ImageUtil.ByteToPalette(map.Palette, Program.ROM.Data, (int)palette);

            for (int y = 0; y < 2; y++)
            {
                for (int x = 0; x < 4; x++)
                {
                    uint image = Program.ROM.p32(imagemap);
                    uint tsa   = Program.ROM.p32(tsamap);

                    Bitmap piece = ImageUtil.ByteToImage16TileHeaderTSA(256, 256, Program.ROM.Data, (int)image, Program.ROM.Data, (int)palette, Program.ROM.Data, (int)tsa);
                    ImageUtil.BitBlt(map, x * 256, y * 256, 256, 256, piece, 0, 0);

                    imagemap += 4;
                    tsamap   += 4;
                }
            }
            //最後のラインだけheightが違う.
            {
                int y = 2;
                for (int x = 0; x < 4; x++)
                {
                    uint image = Program.ROM.p32(imagemap);
                    uint tsa   = Program.ROM.p32(tsamap);

                    Bitmap piece = ImageUtil.ByteToImage16TileHeaderTSA(256, 256, Program.ROM.Data, (int)image, Program.ROM.Data, (int)palette, Program.ROM.Data, (int)tsa);
                    ImageUtil.BitBlt(map, x * 256, y * 256, 256, 176, piece, 0, 0);

                    imagemap += 4;
                    tsamap   += 4;
                }
            }

            return(map);
        }
Exemple #7
0
        public static Bitmap DrawTSAAnime(uint image, uint palette, uint tsa)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            byte[] tsaUZ   = LZ77.decompress(Program.ROM.Data, U.toOffset(tsa));
            int    height  = ImageUtil.CalcHeightbyTSA(32 * 8, tsaUZ.Length);

            Debug.Assert(height >= 20 * 8);

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, height, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), tsaUZ, 0));
        }
Exemple #8
0
        public static Bitmap DrawImage(uint table, uint tsa, uint palette)
        {
            if (!ROM.isPointer(table))
            {
                return(ImageUtil.Blank(8, 8));
            }
            if (!ROM.isPointer(tsa))
            {
                return(ImageUtil.Blank(8, 8));
            }
            if (!ROM.isPointer(palette))
            {
                return(ImageUtil.Blank(8, 8));
            }

            table = ROM.toOffset(table);

            List <byte> imageUZList = new List <byte>();

            for (int i = 0; i < 10; i++)
            {
                uint image = Program.ROM.u32((uint)(table + (i * 4)));
                if (!ROM.isPointer(image))
                {
                    return(ImageUtil.Blank(8, 8));
                }
                byte[] imageUZ = LZ77.decompress(Program.ROM.Data, ROM.toOffset(image));
                imageUZList.AddRange(imageUZ);
            }
            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8
                                                        , imageUZList.ToArray(), 0
                                                        , Program.ROM.Data, (int)ROM.toOffset(palette)
                                                        , Program.ROM.Data, (int)ROM.toOffset(tsa)
                                                        , 0x8000 //TSAに謎の係数を足しながら、最下層のラインから格納するらしい
                                                        , -0x80  //パレット番号が0x80シフトされるらしい
                                                        ));
        }
Exemple #9
0
        private void Draw()
        {
            byte[] image;
            int    image_pos;

            if (ImageOption.SelectedIndex == 0 || ImageOption.SelectedIndex == 3)
            {//圧縮画像
                image = LZ77.decompress(Program.ROM.Data
                                        , U.toOffset((uint)Image.Value));
                image_pos = 0;
                if (image.Length <= 2)
                {
                    X_BG_PIC.Image = null;
                    this.USE_PALETTE_NUMBER.Text = "1";
                    this.DrawBimap = null;
                    return;
                }
            }
            else if (ImageOption.SelectedIndex == 2)
            {//第2圧縮画像
                image = LZ77.decompress(Program.ROM.Data, U.toOffset((uint)Image.Value));
                byte[] image2 = LZ77.decompress(Program.ROM.Data, U.toOffset((uint)Image2.Value));
                image_pos = 0;
                if (image.Length <= 2)
                {
                    X_BG_PIC.Image = null;
                    this.USE_PALETTE_NUMBER.Text = "1";
                    this.DrawBimap = null;
                    return;
                }
                if (image2.Length > 2)
                {
                    List <byte> imageUZList = new List <byte>();
                    imageUZList.AddRange(image);
                    imageUZList.AddRange(image2);

                    image = imageUZList.ToArray();
                }
            }
            else
            {//無圧縮画像
                image     = Program.ROM.Data;
                image_pos = (int)U.toOffset((uint)Image.Value);
            }

            byte[] tsa;
            int    tsa_pos;

            if (TSAOption.SelectedIndex == 0)
            {//TSAを利用しない
                tsa     = null;
                tsa_pos = 0;

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8
                                                          , (int)PicHeight.Value * 8
                                                          , image
                                                          , image_pos
                                                          , Program.ROM.Data
                                                          , (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value)
                                                          );
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8
                                                         , (int)PicHeight.Value * 8
                                                         , image
                                                         , image_pos
                                                         , Program.ROM.Data
                                                         , (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value)
                                                         , 0
                                                         );
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16Count(bitmap).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 1)
            {//圧縮TSAを利用する
                tsa     = LZ77.decompress(Program.ROM.Data, U.toOffset((uint)TSA.Value));
                tsa_pos = 0;

                if (tsa.Length <= 2)
                {
                    X_BG_PIC.Image = ImageUtil.BlankDummy();
                    return;
                }
                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8
                                                          , (int)PicHeight.Value * 8
                                                          , image
                                                          , image_pos
                                                          , Program.ROM.Data
                                                          , (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value)
                                                          , tsa
                                                          , tsa_pos
                                                          );
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8
                                                         , (int)PicHeight.Value * 8
                                                         , image
                                                         , image_pos
                                                         , Program.ROM.Data
                                                         , (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value)
                                                         , tsa
                                                         , tsa_pos
                                                         , 0
                                                         );
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 2)
            {//圧縮ヘッダ付きTSAを利用する
                tsa     = LZ77.decompress(Program.ROM.Data, U.toOffset((uint)TSA.Value));
                tsa_pos = 0;
                if (tsa.Length <= 2)
                {
                    X_BG_PIC.Image = ImageUtil.BlankDummy();
                    return;
                }

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos + 2, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 3)
            {//無圧縮ヘッダ付きTSAを利用する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset((uint)TSA.Value);

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos + 2, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 4)
            {//無圧縮TSAを利用する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset((uint)TSA.Value);

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, Program.ROM.Data, (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value), tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 5)
            {//パレットマップとして解釈する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset((uint)TSA.Value);

                Bitmap bitmap = ImageUtil.ByteToImage16TilePaletteMap((int)PicWidth.Value * 8
                                                                      , (int)PicHeight.Value * 8
                                                                      , image
                                                                      , image_pos
                                                                      , Program.ROM.Data
                                                                      , (int)ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value)
                                                                      , tsa
                                                                      , tsa_pos
                                                                      );
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.USE_PALETTE_NUMBER.Text = "4";
                this.DrawBimap = bitmap;
            }
            else
            {
                this.DrawBimap = null;
            }
        }
        private void Draw()
        {
            byte[] image;
            int    image_pos;

            if (ImageOption.SelectedIndex == 0 || ImageOption.SelectedIndex == 3)
            {//圧縮画像
                image = LZ77.decompress(Program.ROM.Data
                                        , U.toOffset(Image.Value));
                image_pos = 0;
                if (image.Length <= 2)
                {
                    X_BG_PIC.Image = null;
                    this.USE_PALETTE_NUMBER.Text = "1";
                    this.DrawBimap = null;
                    return;
                }
            }
            else if (ImageOption.SelectedIndex == 2)
            {//第2圧縮画像
                image = LZ77.decompress(Program.ROM.Data, U.toOffset(Image.Value));
                byte[] image2 = LZ77.decompress(Program.ROM.Data, U.toOffset(Image2.Value));
                image_pos = 0;
                if (image.Length <= 2)
                {
                    X_BG_PIC.Image = null;
                    this.USE_PALETTE_NUMBER.Text = "1";
                    this.DrawBimap = null;
                    return;
                }
                if (image2.Length > 2)
                {
                    List <byte> imageUZList = new List <byte>();
                    imageUZList.AddRange(image);
                    imageUZList.AddRange(image2);

                    image = imageUZList.ToArray();
                }
            }
            else
            {//無圧縮画像
                image     = Program.ROM.Data;
                image_pos = (int)U.toOffset(Image.Value);
            }
            byte[] palette;
            if (PaletteOption.SelectedIndex == 1)
            {//lz77 palette
                palette = LZ77.decompress(Program.ROM.Data, U.toOffset(PALETTE.Value));
                uint palette_offset = ToPaletteOffset(0, (uint)PALETTENO.Value);
                palette = U.subrange(palette, palette_offset, palette_offset + (0x20 * 16));
            }
            else
            {//通常のパレット
                uint palette_addr = ToPaletteOffset((uint)PALETTE.Value, (uint)PALETTENO.Value);
                palette = Program.ROM.getBinaryData(palette_addr, 0x20 * 16);
            }

            byte[] tsa;
            int    tsa_pos;

            if (TSAOption.SelectedIndex == 0)
            {//TSAを利用しない
                tsa     = null;
                tsa_pos = 0;

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8
                                                          , (int)PicHeight.Value * 8
                                                          , image
                                                          , image_pos
                                                          , palette
                                                          , 0
                                                          );
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8
                                                         , (int)PicHeight.Value * 8
                                                         , image
                                                         , image_pos
                                                         , palette
                                                         , 0
                                                         , 0
                                                         );
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16Count(bitmap).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 1)
            {//圧縮TSAを利用する
                tsa     = LZ77.decompress(Program.ROM.Data, U.toOffset(TSA.Value));
                tsa_pos = 0;

                if (tsa.Length <= 2)
                {
                    X_BG_PIC.Image = ImageUtil.BlankDummy();
                    return;
                }
                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8
                                                          , (int)PicHeight.Value * 8
                                                          , image
                                                          , image_pos
                                                          , palette
                                                          , 0
                                                          , tsa
                                                          , tsa_pos
                                                          );
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8
                                                         , (int)PicHeight.Value * 8
                                                         , image
                                                         , image_pos
                                                         , palette
                                                         , 0
                                                         , tsa
                                                         , tsa_pos
                                                         , 0
                                                         );
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 2)
            {//圧縮ヘッダ付きTSAを利用する
                tsa     = LZ77.decompress(Program.ROM.Data, U.toOffset(TSA.Value));
                tsa_pos = 0;
                if (tsa.Length <= 2)
                {
                    X_BG_PIC.Image = ImageUtil.BlankDummy();
                    return;
                }

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos + 2, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 3)
            {//無圧縮ヘッダ付きTSAを利用する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset(TSA.Value);

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16TileHeaderTSA((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos + 2, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 4)
            {//無圧縮TSAを利用する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset(TSA.Value);

                Bitmap bitmap;
                if (ImageOption.SelectedIndex == 3)
                {///256
                    bitmap = ImageUtil.ByteToImage256Tile((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = "16";
                }
                else
                {
                    bitmap = ImageUtil.ByteToImage16Tile((int)PicWidth.Value * 8, (int)PicHeight.Value * 8, image, image_pos, palette, 0, tsa, tsa_pos);
                    this.USE_PALETTE_NUMBER.Text = ImageUtil.GetPalette16CountForTSA(tsa, (uint)tsa_pos, (uint)(PicWidth.Value * PicHeight.Value)).ToString();
                }
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.DrawBimap = bitmap;
            }
            else if (TSAOption.SelectedIndex == 5)
            {//パレットマップとして解釈する
                tsa     = Program.ROM.Data;
                tsa_pos = (int)U.toOffset(TSA.Value);

                Bitmap bitmap = ImageUtil.ByteToImage16TilePaletteMap((int)PicWidth.Value * 8
                                                                      , (int)PicHeight.Value * 8
                                                                      , image
                                                                      , image_pos
                                                                      , palette
                                                                      , 0
                                                                      , tsa
                                                                      , tsa_pos
                                                                      );
                X_BG_PIC.Image = U.Zoom(bitmap, ZoomComboBox.SelectedIndex);
                this.USE_PALETTE_NUMBER.Text = "4";
                this.DrawBimap = bitmap;
            }
            else
            {
                this.DrawBimap = null;
            }

            bool tsaeditorVisible = false;

            if (ImageOption.SelectedIndex != 1)
            {     //無圧縮ではない
                if (TSAOption.SelectedIndex >= 1)
                { //TSAを利用する
                    tsaeditorVisible = true;
                }
            }
            TSAEditorButton.Visible = tsaeditorVisible;
        }