public override void Read(string file) { BinaryReader br = new BinaryReader(File.OpenRead(file)); uint file_size = (uint)br.BaseStream.Length; // Read header values ushort depth = br.ReadUInt16(); ushort width = br.ReadUInt16(); ushort height = br.ReadUInt16(); ushort unknown = br.ReadUInt16(); ColorFormat format = (depth == 0x01) ? ColorFormat.colors256 : ColorFormat.colors16; // Palette int palette_length = (depth == 0x01) ? 0x200 : 0x20; Color[][] colors = new Color[1][]; colors[0] = Actions.BGR555ToColor(br.ReadBytes(palette_length)); palette = new RawPalette(colors, false, format); // Tiles int tiles_length = width * height; if (depth == 0) tiles_length /= 2; Byte[] tiles = br.ReadBytes(tiles_length); br.Close(); Set_Tiles(tiles, width, height, format, TileForm.Lineal, true); }
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { Update_Struct(); BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); // Common header bw.Write(nscr.header.id); bw.Write(nscr.header.endianess); bw.Write(nscr.header.constant); bw.Write(nscr.header.file_size); bw.Write(nscr.header.header_size); bw.Write(nscr.header.nSection); // SCRN section bw.Write(nscr.nrcs.id); bw.Write(nscr.nrcs.section_size); bw.Write(nscr.nrcs.width); bw.Write(nscr.nrcs.height); bw.Write(nscr.nrcs.padding); bw.Write(nscr.nrcs.data_size); for (int i = 0; i < nscr.nrcs.mapData.Length; i++) { int npalette = nscr.nrcs.mapData[i].nPalette << 12; int yFlip = nscr.nrcs.mapData[i].yFlip << 11; int xFlip = nscr.nrcs.mapData[i].xFlip << 10; int data = npalette + yFlip + xFlip + nscr.nrcs.mapData[i].nTile; bw.Write((ushort)data); } bw.Flush(); bw.Close(); }
public Image Get_Image(ImageBase image, PaletteBase palette) { if (image.FormTile == TileForm.Lineal) { image.FormTile = TileForm.Horizontal; } Byte[] tiles, tile_pal; NTFS[] currMap = (NTFS[])map.Clone(); tiles = Actions.Apply_Map(currMap, image.Tiles, out tile_pal, image.BPP, image.TileSize); ImageBase newImage = new TestImage(); newImage.Set_Tiles(tiles, image.Width, image.Height, image.FormatColor, image.FormTile, image.CanEdit, image.TileSize); newImage.TilesPalette = tile_pal; newImage.Zoom = image.Zoom; if (height != 0) { newImage.Height = height; } if (width != 0) { newImage.Width = width; } return(newImage.Get_Image(palette)); }
public override void Write(string fileOut, PaletteBase palette) { // MetLob edition 25/12/2015 int dataSize = (post_data.Length == 0) ? Tiles.Length : Math.Min(Tiles.Length, ori_data.Length - StartByte); if (dataSize < Tiles.Length) { MessageBox.Show( "Tiles data size exceeds the allowable length and will be trimmed.", "Image import processing"); } BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < StartByte; i++) { bw.Write(ori_data[i]); } bw.Write(Tiles, 0, dataSize); for (int i = Tiles.Length + StartByte; i < ori_data.Length; i++) { bw.Write(ori_data[i]); } bw.Write(post_data); bw.Flush(); bw.Close(); }
public PaletteControl(IPluginHost pluginHost, PaletteBase palette) { InitializeComponent(); this.pluginHost = pluginHost; this.palette = palette; btnImport.Enabled = palette.CanEdit; ReadLanguage(); Update_Info(); }
public SpriteControl(IPluginHost pluginHost) { InitializeComponent(); this.pluginHost = pluginHost; this.sprite = pluginHost.Get_Sprite(); this.image = pluginHost.Get_Image(); this.palette = pluginHost.Get_Palette(); Read_Language(); Update_Info(); }
public SpriteControl(IPluginHost pluginHost, SpriteBase sprite, ImageBase image, PaletteBase palette) { InitializeComponent(); this.sprite = sprite; this.image = image; this.palette = palette; this.pluginHost = pluginHost; Read_Language(); Update_Info(); }
public SpriteControl(XElement lang, SpriteBase sprite, ImageBase image, PaletteBase palette) { InitializeComponent(); this.sprite = sprite; this.image = image; this.palette = palette; this.lang = lang; Read_Language(lang); Update_Info(); }
public override void Write(string fileout, ImageBase image, PaletteBase palette) { BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileout)); bw.Write((ushort)(Width / 0x08)); bw.Write((ushort)(Height / 0x08)); for (int i = 0; i < Map.Length; i++) bw.Write(Actions.MapInfo(Map[i])); bw.Flush(); bw.Close(); }
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < Map.Length; i++) { bw.Write(Actions.MapInfo(Map[i])); } bw.Write(next_data); bw.Flush(); bw.Close(); }
public void Set_Palette(PaletteBase new_pal) { this.palette = new_pal.Palette; this.depth = new_pal.Depth; loaded = true; // Convert the palette to bytes, to store the original palette List <Color> colors = new List <Color>(); for (int i = 0; i < palette.Length; i++) { colors.AddRange(palette[i]); } original = Actions.ColorToBGR555(colors.ToArray()); startByte = 0; }
public ImageControl(IPluginHost pluginHost, ImageBase image, PaletteBase palette) { InitializeComponent(); isMap = false; this.image = image; this.palette = palette; this.pluginHost = pluginHost; Update_Info(); this.comboDepth.SelectedIndexChanged += new EventHandler(comboDepth_SelectedIndexChanged); this.numericWidth.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericHeight.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericStart.ValueChanged += new EventHandler(numericStart_ValueChanged); ReadLanguage(); Update_Image(); }
public ImageControl(XElement lang, ImageBase image, PaletteBase palette) { InitializeComponent(); isMap = false; this.image = image; this.palette = palette; Update_Info(); btnImport.Enabled = false; groupBox2.Enabled = false; this.comboDepth.SelectedIndexChanged += new EventHandler(comboDepth_SelectedIndexChanged); this.numericWidth.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericHeight.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericStart.ValueChanged += new EventHandler(numericStart_ValueChanged); ReadLanguage(lang); Update_Image(); }
public override void Write(string fileOut, PaletteBase palette) { int image_size = Width * Height * BPP / 8; BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < StartByte; i++) { bw.Write(ori_data[i]); } bw.Write(Tiles); for (int i = image_size + StartByte; i < ori_data.Length; i++) { bw.Write(ori_data[i]); } bw.Write(post_data); bw.Flush(); bw.Close(); }
public override void Read(string fileIn) { BinaryReader br = new BinaryReader(File.OpenRead(fileIn)); // Header uint paletaOffset = br.ReadUInt32() * 4; uint tileOffset = br.ReadUInt32() * 4; uint mapOffset = br.ReadUInt32() * 4; // Paleta br.BaseStream.Position = paletaOffset; uint pCabeceraSize = br.ReadUInt32() * 4; uint pSize = br.ReadUInt32() * 4; Color[][] colors = new Color[1][]; colors[0] = Actions.BGR555ToColor(br.ReadBytes((int)(pSize - 0x08))); palette = new RawPalette(colors, false, ColorFormat.colors256); // Image data br.BaseStream.Position = tileOffset; uint tCabeceraSize = br.ReadUInt32() * 4; uint tSize = br.ReadUInt32() * 4; byte[] tiles = br.ReadBytes((int)(tSize - 0x08)); image = new RawImage(tiles, TileForm.Horizontal, ColorFormat.colors256, 256, 192, false); // Map br.BaseStream.Position = mapOffset; uint mCabeceraSize = br.ReadUInt32() * 4; uint mSize = br.ReadUInt32() * 4; ushort width = br.ReadUInt16(); ushort height = br.ReadUInt16(); NTFS[] map = new NTFS[(mSize - 0x08) / 2]; for (int i = 0; i < map.Length; i++) map[i] = Actions.MapInfo(br.ReadUInt16()); br.Close(); Set_Map(map, false, width * 8, height * 8); }
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(scx.type); bw.Write(scx.unknown1); bw.Write(scx.unknown2); bw.Write(scx.unknown3); bw.Write(scx.unknown4); bw.Write((ushort)Width); bw.Write((ushort)Height); bw.Write(Map.Length * 2); bw.Write(Map.Length * 2); for (int i = 0; i < Map.Length; i++) bw.Write(Actions.MapInfo(Map[i])); bw.Flush(); bw.Close(); }
public ImageControl(IPluginHost pluginHost, bool isMap) { InitializeComponent(); this.pluginHost = pluginHost; this.isMap = isMap; this.palette = pluginHost.Get_Palette(); this.image = pluginHost.Get_Image(); if (isMap) this.map = pluginHost.Get_Map(); Update_Info(); this.comboDepth.SelectedIndexChanged += new EventHandler(comboDepth_SelectedIndexChanged); this.numericWidth.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericHeight.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericStart.ValueChanged += new EventHandler(numericStart_ValueChanged); ReadLanguage(); Update_Image(); }
public Image Get_Image(PaletteBase palette) { palette.Depth = format; Color[][] pal_colors = palette.Palette; Byte[] img_tiles; if (tileForm == Images.TileForm.Horizontal) { if (height < tile_size) { height = tile_size; } img_tiles = Actions.LinealToHorizontal(tiles, width, height, bpp, tile_size); tilePal = Actions.LinealToHorizontal(tilePal, width, height, 8, tile_size); } else { img_tiles = tiles; } return(Actions.Get_Image(img_tiles, tilePal, pal_colors, format, width, height)); }
public ImageControl(IPluginHost pluginHost, bool isMap) { InitializeComponent(); this.pluginHost = pluginHost; this.isMap = isMap; this.palette = pluginHost.Get_Palette(); this.image = pluginHost.Get_Image(); if (isMap) { this.map = pluginHost.Get_Map(); } Update_Info(); this.comboDepth.SelectedIndexChanged += new EventHandler(comboDepth_SelectedIndexChanged); this.numericWidth.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericHeight.ValueChanged += new EventHandler(numericSize_ValueChanged); this.numericStart.ValueChanged += new EventHandler(numericStart_ValueChanged); ReadLanguage(); Update_Image(); }
public Image Get_Image(ImageBase image, PaletteBase pal, Bank bank, int width, int height, bool grid, bool cell, bool number, bool trans, bool img, int currOAM) { return(Actions.Get_Image(bank, block_size, image, pal, width, height, grid, cell, number, trans, img, currOAM)); }
public Image Get_Image(ImageBase image, PaletteBase pal, Bank bank, int width, int height, bool grid, bool cell, bool number, bool trans, bool img, int currOAM) { return Actions.Get_Image(bank, block_size, image, pal, width, height, grid, cell, number, trans, img, currOAM); }
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { throw new NotImplementedException(); }
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < Map.Length; i++) bw.Write(Actions.MapInfo(Map[i])); bw.Write(next_data); bw.Flush(); bw.Close(); }
public override void Write(string fileOut, PaletteBase palette) { throw new NotImplementedException(); }
public AnimationControl(IPluginHost pluginHost, NANR ani) { InitializeComponent(); Read_Language(); this.pluginHost = pluginHost; this.palette = pluginHost.Get_Palette(); this.image = pluginHost.Get_Image(); this.sprite = pluginHost.Get_Sprite(); this.ani = ani; isAni = true; if (ani.Struct.abnk.nBanks == 0) { MessageBox.Show("No animations."); isAni = false; tempo.Enabled = false; comboAni.Enabled = false; btnNext.Enabled = false; btnPlay.Enabled = false; btnPrevious.Enabled = false; btnSave.Enabled = false; btnStop.Enabled = false; txtTime.Enabled = false; checkCeldas.Enabled = false; checkEntorno.Enabled = false; checkImage.Enabled = false; checkNumeros.Enabled = false; checkTransparencia.Enabled = false; } for (int i = 0; i < ani.Names.Length; i++) comboAni.Items.Add(ani.Names[i]); if (isAni) comboAni.SelectedIndex = 0; ShowInfo(); Get_Ani(); tempo.Stop(); tempo.Interval = Convert.ToInt32(txtTime.Text); if (isAni) aniBox.Image = bitAni[0]; }
public Image Get_Image(PaletteBase palette) { palette.Depth = format; Color[][] pal_colors = palette.Palette; Byte[] img_tiles; if (tileForm == Images.TileForm.Horizontal) { if (height < tile_size) height = tile_size; img_tiles = Actions.LinealToHorizontal(tiles, width, height, bpp, tile_size); tilePal = Actions.LinealToHorizontal(tilePal, width, height, 8, tile_size); } else img_tiles = tiles; return Actions.Get_Image(img_tiles, tilePal, pal_colors, format, width, height); }
public Image Get_Image(ImageBase image, PaletteBase palette) { if (image.FormTile == TileForm.Lineal) image.FormTile = TileForm.Horizontal; Byte[] tiles, tile_pal; NTFS[] currMap = (NTFS[])map.Clone(); tiles = Actions.Apply_Map(currMap, image.Tiles, out tile_pal, image.BPP, image.TileSize); ImageBase newImage = new TestImage(); newImage.Set_Tiles(tiles, image.Width, image.Height, image.FormatColor, image.FormTile, image.CanEdit, image.TileSize); newImage.TilesPalette = tile_pal; newImage.Zoom = image.Zoom; if (height != 0) newImage.Height = height; if (width != 0) newImage.Width = width; return newImage.Get_Image(palette); }
public override void Write(string fileOut, PaletteBase palette) { // MetLob edition 25/12/2015 int dataSize = (post_data.Length == 0) ? Tiles.Length : Math.Min(Tiles.Length, ori_data.Length - StartByte); if (dataSize < Tiles.Length) MessageBox.Show( "Tiles data size exceeds the allowable length and will be trimmed.", "Image import processing"); BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < StartByte; i++) bw.Write(ori_data[i]); bw.Write(Tiles, 0, dataSize); for (int i = Tiles.Length + StartByte; i < ori_data.Length; i++) bw.Write(ori_data[i]); bw.Write(post_data); bw.Flush(); bw.Close(); }
public abstract void Write(string fileOut, PaletteBase palette);
public override void Write(string fileOut, ImageBase image, PaletteBase palette) { }
public override void Write(string fileout, PaletteBase palette) { BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileout)); ushort num_tiles = (ushort)(Tiles.Length / 0x20); if (FormatColor == ColorFormat.colors256) num_tiles /= 2; bw.Write(num_tiles); bw.Write((ushort)(FormatColor == Ekona.Images.ColorFormat.colors16 ? 0x00 : 0x01)); bw.Write(Tiles); bw.Flush(); bw.Close(); }
public Image Get_Image(ImageBase image, PaletteBase pal, int index, int width, int height, bool grid, bool cell, bool number, bool trans, bool img, int currOAM, int[] draw_index) { return(Actions.Get_Image(banks[index], block_size, image, pal, width, height, grid, cell, number, trans, img, currOAM, 1, draw_index)); }
public override void Write(string fileOut, PaletteBase palette) { int image_size = Width * Height * BPP / 8; BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(prev_data); for (int i = 0; i < StartByte; i++) bw.Write(ori_data[i]); bw.Write(Tiles); for (int i = image_size + StartByte; i < ori_data.Length; i++) bw.Write(ori_data[i]); bw.Write(post_data); bw.Flush(); bw.Close(); }
public static Bitmap Get_Image(Bank bank, uint blockSize, ImageBase img, PaletteBase pal, int max_width, int max_height, bool draw_grid, bool draw_cells, bool draw_numbers, bool trans, bool image, int currOAM = -1, int zoom = 1, int[] index = null) { Size size = new Size(max_width * zoom, max_height * zoom); Bitmap bank_img = new Bitmap(size.Width, size.Height); Graphics graphic = Graphics.FromImage(bank_img); if (bank.oams.Length == 0) { graphic.DrawString("No OAM", SystemFonts.CaptionFont, Brushes.Black, new PointF(max_width / 2, max_height / 2)); return bank_img; } if (draw_grid) { for (int i = (0 - size.Width); i < size.Width; i += 8) { graphic.DrawLine(Pens.LightBlue, (i + size.Width / 2) * zoom, 0, (i + size.Width / 2) * zoom, size.Height * zoom); graphic.DrawLine(Pens.LightBlue, 0, (i + size.Height / 2) * zoom, size.Width * zoom, (i + size.Height / 2) * zoom); } graphic.DrawLine(Pens.Blue, (max_width / 2) * zoom, 0, (max_width / 2) * zoom, max_height * zoom); graphic.DrawLine(Pens.Blue, 0, (max_height / 2) * zoom, max_width * zoom, (max_height / 2) * zoom); } Image cell; for (int i = 0; i < bank.oams.Length; i++) { bool draw = false; if (index == null) draw = true; else for (int k = 0; k < index.Length; k++) if (index[k] == i) draw = true; if (!draw) continue; if (bank.oams[i].width == 0x00 || bank.oams[i].height == 0x00) continue; uint tileOffset = bank.oams[i].obj2.tileOffset; tileOffset = (uint)(tileOffset << (byte)blockSize); if (image) { ImageBase cell_img = new TestImage(); cell_img.Set_Tiles((byte[])img.Tiles.Clone(), bank.oams[i].width, bank.oams[i].height, img.FormatColor, img.FormTile, false); cell_img.StartByte = (int)(tileOffset * 0x20 + bank.data_offset); byte num_pal = bank.oams[i].obj2.index_palette; if (num_pal >= pal.NumberOfPalettes) num_pal = 0; for (int j = 0; j < cell_img.TilesPalette.Length; j++) cell_img.TilesPalette[j] = num_pal; cell = cell_img.Get_Image(pal); //else //{ // tileOffset /= (blockSize / 2); // int imageWidth = img.Width; // int imageHeight = img.Height; // int posX = (int)(tileOffset % imageWidth); // int posY = (int)(tileOffset / imageWidth); // if (img.ColorFormat == ColorFormat.colors16) // posY *= (int)blockSize * 2; // else // posY *= (int)blockSize; // if (posY >= imageHeight) // posY = posY % imageHeight; // cells[i] = ((Bitmap)img.Get_Image(pal)).Clone(new Rectangle(posX * zoom, posY * zoom, bank.oams[i].width * zoom, bank.oams[i].height * zoom), // System.Drawing.Imaging.PixelFormat.DontCare); //} #region Flip if (bank.oams[i].obj1.flipX == 1 && bank.oams[i].obj1.flipY == 1) cell.RotateFlip(RotateFlipType.RotateNoneFlipXY); else if (bank.oams[i].obj1.flipX == 1) cell.RotateFlip(RotateFlipType.RotateNoneFlipX); else if (bank.oams[i].obj1.flipY == 1) cell.RotateFlip(RotateFlipType.RotateNoneFlipY); #endregion if (trans) ((Bitmap)cell).MakeTransparent(pal.Palette[num_pal][0]); graphic.DrawImageUnscaled(cell, size.Width / 2 + bank.oams[i].obj1.xOffset * zoom, size.Height / 2 + bank.oams[i].obj0.yOffset * zoom); } if (draw_cells) graphic.DrawRectangle(Pens.Black, size.Width / 2 + bank.oams[i].obj1.xOffset * zoom, size.Height / 2 + bank.oams[i].obj0.yOffset * zoom, bank.oams[i].width * zoom, bank.oams[i].height * zoom); if (i == currOAM) graphic.DrawRectangle(new Pen(Color.Red, 3), size.Width / 2 + bank.oams[i].obj1.xOffset * zoom, size.Height / 2 + bank.oams[i].obj0.yOffset * zoom, bank.oams[i].width * zoom, bank.oams[i].height * zoom); if (draw_numbers) graphic.DrawString(bank.oams[i].num_cell.ToString(), SystemFonts.CaptionFont, Brushes.Black, size.Width / 2 + bank.oams[i].obj1.xOffset * zoom, size.Height / 2 + bank.oams[i].obj0.yOffset * zoom); } return bank_img; }
public override void Read(string file) { BinaryReader br = new BinaryReader(File.OpenRead(file)); char[] id = br.ReadChars(4); uint unknown1 = br.ReadUInt32(); // Usually is 0x00 uint unknown2 = br.ReadUInt32(); // Usually is 0x00 uint unknown3 = br.ReadUInt32(); // Usually is 0x00 uint format = br.ReadUInt32(); uint tile_size = br.ReadUInt32(); uint header_size = br.ReadUInt32(); uint palette_size = br.ReadUInt32(); uint palette_offset = br.ReadUInt32(); uint unknown4 = br.ReadUInt32(); uint unknown_offset = br.ReadUInt32(); uint unknown5 = br.ReadUInt32(); transparency = (br.ReadUInt32() == 0x00 ? false : true); transparency = false; int width = (int)Math.Pow(2, (double)(br.ReadUInt16() + 3)); int height = (int)Math.Pow(2, (double)(br.ReadUInt16() + 3)); uint unknown6 = br.ReadUInt32(); byte[] data = br.ReadBytes((int)tile_size); br.BaseStream.Position = palette_offset; Color[][] palette = new Color[1][]; palette[0] = Actions.BGR555ToColor(br.ReadBytes((int)palette_size)); br.Close(); Set_Tiles(data, width, height, (ColorFormat)format, TileForm.Lineal, false); pb = new RawPalette(palette, false, ColorFormat.colors256); }
public void Read(string file) { BinaryReader br = new BinaryReader(File.OpenRead(file)); // Header uint paletaOffset = br.ReadUInt32() * 4; uint tileOffset = br.ReadUInt32() * 4; uint mapOffset = br.ReadUInt32() * 4; ColorFormat depth; br.BaseStream.Position = mapOffset; if (br.ReadUInt32() == 0x01) depth = ColorFormat.colors256; else depth = ColorFormat.colors16; // Palette Color[][] colors; if (paletaOffset == 0x00) // No palette { depth = ColorFormat.colors16; colors = new Color[defaultPaletteData.Length / 0x20][]; for (int i = 0; i < colors.Length; i++) { Byte[] data = new Byte[0x20]; Array.Copy(defaultPaletteData, i * 0x20, data, 0, 0x20); colors[i] = Actions.BGR555ToColor(data); } goto Tile; } br.BaseStream.Position = paletaOffset; uint pCabeceraSize = br.ReadUInt32() * 4; uint pSize = br.ReadUInt32() * 4; if (pSize - 0x08 == 0x0200) depth = ColorFormat.colors256; else if (pSize - 0x08 == 0x20) depth = ColorFormat.colors16; colors = new Color[depth == ColorFormat.colors16 ? (pSize - 0x08) / 0x20 : 1][]; uint pal_length = (depth == ColorFormat.colors16) ? 0x20 : pSize - 0x08; for (int i = 0; i < colors.Length; i++) colors[i] = Actions.BGR555ToColor(br.ReadBytes((int)pal_length)); // Tile data Tile: br.BaseStream.Position = tileOffset; uint tCabeceraSize = br.ReadUInt32() * 4; uint tSize = br.ReadUInt32() * 4; byte[] tiles = br.ReadBytes((int)(tSize - 0x08)); image = new RawImage(tiles, TileForm.Horizontal, depth, 0x40, tiles.Length / 0x40, false, fileName); // Map if (mapOffset == 0x00) { hasMap = false; goto End; } hasMap = true; br.BaseStream.Position = mapOffset; uint mCabeceraSize = br.ReadUInt32() * 4; uint[] mSize = new uint[(int)mCabeceraSize / 4]; for (int i = 0; i < mSize.Length; i++) mSize[i] = (br.ReadUInt32() * 4) - mCabeceraSize - 4; maps = new MapBase[mSize.Length]; for (int i = 0; i < maps.Length; i++) { ushort width = (ushort)(br.ReadUInt16() * 8); ushort height = (ushort)(br.ReadUInt16() * 8); NTFS[] map; if (i != 0) map = new NTFS[((mSize[i] - mSize[i - 1]) - 4) / 2]; else map = new NTFS[(mSize[i] - 4) / 2]; for (int j = 0; j < map.Length; j++) map[j] = Actions.MapInfo(br.ReadUInt16()); maps[i] = new RawMap(map, width, height, false, fileName); } End: br.Close(); palette = new RawPalette(colors, false, depth, fileName); }
public override void Write(string fileOut, PaletteBase palette) { if (depth != FormatColor) throw new NotImplementedException("The current file doesn't support this depth"); // Update the struct cgx.size_tiles = (uint)Tiles.Length; if (depth == Ekona.Images.ColorFormat.colors16) cgx.num_tiles = cgx.size_tiles / 0x20; else cgx.num_tiles = cgx.size_tiles / 0x40; cgx.palColors = (uint)palette.NumberOfColors; cgx.palOffset = 0x30 + cgx.size_tiles; cgx.unknonwnOffset = cgx.palOffset + cgx.palColors * 2; BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut)); bw.Write(cgx.type); bw.Write(cgx.unknown1); bw.Write(cgx.unknown2); bw.Write(cgx.unknown3); bw.Write(cgx.unknown4); bw.Write(cgx.size_tiles); bw.Write(cgx.unknown5); bw.Write(cgx.num_tiles); bw.Write(cgx.palColors); bw.Write(cgx.tileOffset); bw.Write(cgx.palOffset); bw.Write(cgx.unknonwnOffset); bw.Write(Tiles); for (int i = 0; i < palette.NumberOfPalettes; i++) bw.Write(Actions.ColorToBGR555(palette.Palette[i])); bw.Flush(); bw.Close(); }
public void Set_Palette(PaletteBase palette) { this.palette = palette; }
public Image Get_Image(ImageBase image, PaletteBase pal, int index, int width, int height, bool grid, bool cell, bool number, bool trans, bool img, int currOAM, int[] draw_index) { return Actions.Get_Image(banks[index], block_size, image, pal, width, height, grid, cell, number, trans, img, currOAM, 1, draw_index); }
public override void Write(string fileout, PaletteBase palette) { this.palette = palette; BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileout)); // Header bw.Write((ushort)(FormatColor == ColorFormat.colors256 ? 0x01 : 0x00)); bw.Write((ushort)Width); bw.Write((ushort)Height); bw.Write((ushort)0x00); // Palette section bw.Write(Actions.ColorToBGR555(palette.Palette[0])); // Tile section if (FormatColor == ColorFormat.colors16) bw.Write(Ekona.Helper.BitsConverter.BytesToBit4(Tiles)); else bw.Write(Tiles); bw.Flush(); bw.Close(); }