예제 #1
0
    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();
    }
예제 #2
0
 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();
     }
 }