public static void Write(NCGR_s tile, string fileout) { BinaryWriter writer = new BinaryWriter(File.OpenWrite(fileout)); writer.Write(tile.header.id); writer.Write(tile.header.endianess); writer.Write(tile.header.constant); writer.Write(tile.header.file_size); writer.Write(tile.header.header_size); writer.Write(tile.header.nSection); writer.Write(tile.rahc.id); writer.Write(tile.rahc.size_section); if (tile.order == TileOrder.Horizontal) { writer.Write(tile.rahc.nTilesY); writer.Write(tile.rahc.nTilesX); } else { writer.Write((ushort)(tile.rahc.nTilesY / 8)); writer.Write((ushort)(tile.rahc.nTilesX / 8)); } writer.Write((tile.rahc.depth == ColorDepth.Depth4Bit) ? 3 : 4); writer.Write(tile.rahc.unknown1); writer.Write(tile.rahc.unknown2); writer.Write(tile.rahc.tiledFlag); writer.Write((tile.rahc.depth == ColorDepth.Depth4Bit) ? (tile.rahc.size_tiledata / 2) : tile.rahc.size_tiledata); writer.Write(tile.rahc.unknown3); for (int i = 0; i < tile.rahc.tileData.tiles.Length; i++) { if (tile.rahc.depth == ColorDepth.Depth4Bit) { writer.Write(Convertir.Bit4ToBit8(tile.rahc.tileData.tiles[i])); } else { writer.Write(tile.rahc.tileData.tiles[i]); } } if (tile.header.nSection == 2) { writer.Write(tile.sopc.id); writer.Write(tile.sopc.size_section); writer.Write(tile.sopc.unknown1); writer.Write(tile.sopc.charSize); writer.Write(tile.sopc.nChar); } writer.Flush(); writer.Close(); }
private void comboDepth_SelectedIndexChanged(object sender, EventArgs e) { if ((this.comboDepth.Text != this.oldDepth) && !this.stopUpdating) { byte[] buffer; this.oldDepth = this.comboDepth.Text; this.tile.rahc.depth = (this.comboDepth.Text == "4 bpp") ? ColorDepth.Depth4Bit : ColorDepth.Depth8Bit; if (this.comboDepth.Text == "4 bpp") { buffer = Convertir.Bit8ToBit4(Convertir.TilesToBytes(this.tile.rahc.tileData.tiles, 0)); if (this.tile.order != NCGR.TileOrder.NoTiled) { this.tile.rahc.tileData.nPalette = new byte[this.tile.rahc.tileData.tiles.Length]; } else { this.tile.rahc.tileData.tiles = new byte[][] { buffer }; this.tile.rahc.tileData.nPalette = new byte[this.tile.rahc.tileData.tiles[0].Length]; } } else { buffer = Convertir.Bit4ToBit8(Convertir.TilesToBytes(this.tile.rahc.tileData.tiles, 0)); if (this.tile.order != NCGR.TileOrder.NoTiled) { this.tile.rahc.tileData.nPalette = new byte[this.tile.rahc.tileData.tiles.Length]; } else { this.tile.rahc.tileData.tiles = new byte[][] { buffer }; this.tile.rahc.tileData.nPalette = new byte[this.tile.rahc.tileData.tiles[0].Length]; } } this.UpdateImage(); } }