mirror of
https://github.com/R-YaTian/TinkeDSi.git
synced 2025-06-18 16:45:43 -04:00
* Added RawImage, RawPalette and RawMap classes in plugin "Images"
* Fixed problem packing NARC files * Added first four bytes as extension in unpacked files from some NARC files (ie: pokemon) * Added pack method to PAC files in SFF * Added new windows dialog: CallPlugin in menu "Open as->" to force a plugin to load a file. * Fixed problem of cell priority in NCER files * Fixed problem opening external files. * Support some images from dwc.bin / utility.bin pack file (wifi settings)
This commit is contained in:
parent
a4951ad0b7
commit
7ecfa9ab0c
@ -24,6 +24,7 @@ using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
@ -65,7 +66,7 @@ namespace Images
|
||||
{
|
||||
this.pluginHost = pluginHost;
|
||||
this.id = id;
|
||||
this.fileName = System.IO.Path.GetFileName(file);
|
||||
this.fileName = Path.GetFileName(file);
|
||||
|
||||
Read(file);
|
||||
}
|
||||
@ -113,7 +114,7 @@ namespace Images
|
||||
public abstract void Write_Tiles(string fileOut);
|
||||
|
||||
public void Change_TileDepth(ColorDepth newDepth)
|
||||
{
|
||||
{
|
||||
if (newDepth == depth)
|
||||
return;
|
||||
|
||||
@ -214,10 +215,10 @@ namespace Images
|
||||
TileOrder tileOrder, bool editable)
|
||||
{
|
||||
this.tiles = tiles;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.depth = depth;
|
||||
this.tileOrder = tileOrder;
|
||||
Width = width;
|
||||
Height = height;
|
||||
this.canEdit = editable;
|
||||
if (tileOrder == TileOrder.Horizontal)
|
||||
tilePal = new byte[tiles.Length];
|
||||
@ -274,7 +275,7 @@ namespace Images
|
||||
}
|
||||
public int Height
|
||||
{
|
||||
get { return height; }
|
||||
get { return height * 8; }
|
||||
set
|
||||
{
|
||||
height = value;
|
||||
@ -286,7 +287,7 @@ namespace Images
|
||||
}
|
||||
public int Width
|
||||
{
|
||||
get { return width; }
|
||||
get { return width * 8; }
|
||||
set
|
||||
{
|
||||
width = value;
|
||||
@ -344,4 +345,97 @@ namespace Images
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public class RawImage : ImageBase
|
||||
{
|
||||
// Unknown data - Needed to write the file
|
||||
byte[] prev_data;
|
||||
byte[] next_data;
|
||||
|
||||
public RawImage(IPluginHost pluginHost, String file, int id,
|
||||
TileOrder tileOrder, ColorDepth depth, bool editable,
|
||||
int offset, int size)
|
||||
: base(pluginHost)
|
||||
{
|
||||
this.pluginHost = pluginHost;
|
||||
this.id = id;
|
||||
this.fileName = Path.GetFileName(file);
|
||||
|
||||
Read(file, tileOrder, depth, editable, offset, size);
|
||||
}
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
Read(fileIn, TileOrder.Horizontal, ColorDepth.Depth4Bit, false, 0, -1);
|
||||
}
|
||||
public void Read(string fileIn, TileOrder tileOrder, ColorDepth depth, bool editable,
|
||||
int offset, int fileSize)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
prev_data = br.ReadBytes(offset); // Save the previous data to write them then.
|
||||
|
||||
if (fileSize <= 0)
|
||||
fileSize = (int)br.BaseStream.Length;
|
||||
|
||||
// Read the tiles
|
||||
Byte[][] tiles = new byte[0][];
|
||||
|
||||
if (tileOrder == TileOrder.NoTiled)
|
||||
{
|
||||
tiles = new byte[1][];
|
||||
|
||||
if (depth == ColorDepth.Depth4Bit)
|
||||
tiles[0] = pluginHost.Bit8ToBit4(br.ReadBytes(fileSize));
|
||||
else if (depth == ColorDepth.Depth8Bit)
|
||||
tiles[0] = br.ReadBytes(fileSize);
|
||||
else if (depth == ColorDepth.Depth32Bit) // 1 bpp
|
||||
tiles[0] = pluginHost.BytesToBits(br.ReadBytes(fileSize));
|
||||
}
|
||||
else if (tileOrder == TileOrder.Horizontal)
|
||||
{
|
||||
if (depth == ColorDepth.Depth4Bit)
|
||||
{
|
||||
tiles = new byte[fileSize / 0x20][];
|
||||
for (int i = 0; i < tiles.Length; i++)
|
||||
tiles[i] = pluginHost.Bit8ToBit4(br.ReadBytes(0x20));
|
||||
}
|
||||
else if (depth == ColorDepth.Depth8Bit)
|
||||
{
|
||||
tiles = new byte[fileSize / 0x40][];
|
||||
for (int i = 0; i < tiles.Length; i++)
|
||||
tiles[i] = br.ReadBytes(0x40);
|
||||
}
|
||||
else if (depth == ColorDepth.Depth32Bit) // 1 bpp
|
||||
{
|
||||
tiles = new byte[fileSize / 0x08][];
|
||||
for (int i = 0; i < tiles.Length; i++)
|
||||
tiles[i] = pluginHost.BytesToBits(br.ReadBytes(0x08));
|
||||
}
|
||||
}
|
||||
|
||||
next_data = br.ReadBytes((int)(br.BaseStream.Length - fileSize)); // Save the next data to write them then
|
||||
|
||||
#region Calculate the image size
|
||||
int width = (fileSize < 0x100 ? fileSize : 0x0100);
|
||||
int height = fileSize / width;
|
||||
|
||||
if (height == 0)
|
||||
height = 1;
|
||||
|
||||
if (fileSize == 512)
|
||||
width = height = 32;
|
||||
#endregion
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Tiles(tiles, width, height, depth, tileOrder, editable);
|
||||
|
||||
}
|
||||
|
||||
public override void Write_Tiles(string fileOut)
|
||||
{
|
||||
// TODO: Write raw images
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,15 +112,17 @@
|
||||
<Compile Include="ImageControl.designer.cs">
|
||||
<DependentUpon>ImageControl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="iNCER.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="iNCER.designer.cs">
|
||||
<DependentUpon>iNCER.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MapBase.cs" />
|
||||
<Compile Include="nbfc.cs" />
|
||||
<Compile Include="nbfp.cs" />
|
||||
<Compile Include="nbfs.cs" />
|
||||
<Compile Include="NCCG.cs" />
|
||||
<Compile Include="NCCL.cs" />
|
||||
<Compile Include="NCE.cs" />
|
||||
<Compile Include="NCSC.cs" />
|
||||
<Compile Include="ntfp.cs" />
|
||||
<Compile Include="ntft.cs" />
|
||||
<Compile Include="PaletteBase.cs" />
|
||||
<Compile Include="PaletteControl.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
@ -140,6 +142,9 @@
|
||||
<EmbeddedResource Include="ImageControl.resx">
|
||||
<DependentUpon>ImageControl.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="iNCER.resx">
|
||||
<DependentUpon>iNCER.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PaletteControl.resx">
|
||||
<DependentUpon>PaletteControl.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -35,6 +35,7 @@ namespace Images
|
||||
PaletteBase palette;
|
||||
ImageBase image;
|
||||
MapBase map;
|
||||
NCER ncer; // TEMPORALY
|
||||
|
||||
public void Initialize(IPluginHost pluginHost)
|
||||
{
|
||||
@ -56,6 +57,8 @@ namespace Images
|
||||
return Format.Palette;
|
||||
if (name.EndsWith(".NBFP"))
|
||||
return Format.Palette;
|
||||
if (name.EndsWith(".NCL.L") && magic[0] != 0x10)
|
||||
return Format.Palette;
|
||||
|
||||
// Tiles
|
||||
if (ext == "NCCG")
|
||||
@ -64,13 +67,21 @@ namespace Images
|
||||
return Format.Tile;
|
||||
if (name.EndsWith(".NBFC"))
|
||||
return Format.Tile;
|
||||
if (name.EndsWith(".NCG.L") && magic[0] != 0x10)
|
||||
return Format.Tile;
|
||||
|
||||
// Map
|
||||
if (ext == "NCSC")
|
||||
return Format.Map;
|
||||
if (name.EndsWith(".NBFS"))
|
||||
return Format.Map;
|
||||
|
||||
if (name.EndsWith(".NSC.L") && magic[0] != 0x10)
|
||||
return Format.Map;
|
||||
|
||||
// Cells
|
||||
if (name.EndsWith(".NCE.L") && magic[0] != 0x10)
|
||||
return Format.Cell;
|
||||
|
||||
return Format.Unknown;
|
||||
}
|
||||
|
||||
@ -87,6 +98,10 @@ namespace Images
|
||||
if (format == Format.Map && palette.Loaded && image.Loaded)
|
||||
return new ImageControl(pluginHost, image, palette, map);
|
||||
|
||||
// TEMPORALY
|
||||
if (format == Format.Cell && palette.Loaded && image.Loaded)
|
||||
return new iNCER(ncer, image.Get_NCGR(), palette.Get_NCLR(), pluginHost);
|
||||
|
||||
return new Control();
|
||||
}
|
||||
public void Read(string file, int id)
|
||||
@ -113,12 +128,17 @@ namespace Images
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NTFP") || file.ToUpper().EndsWith(".PLT"))
|
||||
{
|
||||
palette = new ntfp(pluginHost, file, id);
|
||||
palette = new RawPalette(pluginHost, file, id, false, 0, -1);
|
||||
return Format.Palette;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NBFP"))
|
||||
{
|
||||
palette = new nbfp(pluginHost, file, id);
|
||||
palette = new RawPalette(pluginHost, file, id, false, 0, -1);
|
||||
return Format.Palette;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NCL.L") && ext[0] != '\x10')
|
||||
{
|
||||
palette = new RawPalette(pluginHost, file, id, false, 0, -1);
|
||||
return Format.Palette;
|
||||
}
|
||||
|
||||
@ -128,17 +148,28 @@ namespace Images
|
||||
image = new NCCG(pluginHost, file, id);
|
||||
return Format.Tile;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NTFT") || file.ToUpper().EndsWith(".CHAR"))
|
||||
else if (file.ToUpper().EndsWith(".NTFT"))
|
||||
{
|
||||
image = new ntft(pluginHost, file, id);
|
||||
image = new RawImage(pluginHost, file, id, TileOrder.NoTiled, ColorDepth.Depth8Bit, false,
|
||||
0, -1);
|
||||
if (palette.Depth == ColorDepth.Depth4Bit)
|
||||
image.Depth = ColorDepth.Depth4Bit;
|
||||
|
||||
return Format.Tile;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NBFC"))
|
||||
else if (file.ToUpper().EndsWith(".NBFC") || file.ToUpper().EndsWith(".CHAR"))
|
||||
{
|
||||
image = new nbfc(pluginHost, file, id);
|
||||
image = new RawImage(pluginHost, file, id, TileOrder.Horizontal, ColorDepth.Depth8Bit, false,
|
||||
0, -1);
|
||||
if (palette.Depth == ColorDepth.Depth4Bit)
|
||||
image.Depth = ColorDepth.Depth4Bit;
|
||||
|
||||
return Format.Tile;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NCG.L") && ext[0] != '\x10')
|
||||
{
|
||||
image = new RawImage(pluginHost, file, id, TileOrder.Horizontal, ColorDepth.Depth8Bit, false,
|
||||
0, -1);
|
||||
if (palette.Depth == ColorDepth.Depth4Bit)
|
||||
image.Depth = ColorDepth.Depth4Bit;
|
||||
|
||||
@ -158,7 +189,8 @@ namespace Images
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NBFS"))
|
||||
{
|
||||
map = new nbfs(pluginHost, file, id);
|
||||
map = new RawMap(pluginHost, file, id,
|
||||
0, -1, false);
|
||||
if (map.Width != 0)
|
||||
image.Width = map.Width;
|
||||
if (map.Height != 0)
|
||||
@ -166,6 +198,23 @@ namespace Images
|
||||
|
||||
return Format.Map;
|
||||
}
|
||||
else if (file.ToUpper().EndsWith(".NSC.L") && ext[0] != '\x10')
|
||||
{
|
||||
map = new RawMap(pluginHost, file, id, 0, -1, false);
|
||||
if (map.Width != 0)
|
||||
image.Width = map.Width;
|
||||
if (map.Height != 0)
|
||||
image.Height = map.Height;
|
||||
|
||||
return Format.Map;
|
||||
}
|
||||
|
||||
// Cell
|
||||
if (file.ToUpper().EndsWith(".NCE.L") && ext[0] != '\x10')
|
||||
{
|
||||
ncer = NCE.Read(file, pluginHost);
|
||||
return Format.Cell;
|
||||
}
|
||||
|
||||
return Format.Unknown;
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using PluginInterface;
|
||||
using System.Drawing;
|
||||
|
||||
@ -183,4 +184,56 @@ namespace Images
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
public class RawMap : MapBase
|
||||
{
|
||||
// Unknown data
|
||||
byte[] prev_data;
|
||||
byte[] next_data;
|
||||
|
||||
public RawMap(IPluginHost pluginHost, string file, int id,
|
||||
int offset, int size, bool editable)
|
||||
: base(pluginHost)
|
||||
{
|
||||
this.pluginHost = pluginHost;
|
||||
this.id = id;
|
||||
this.fileName = System.IO.Path.GetFileName(file);
|
||||
|
||||
Read(file, offset, size, editable);
|
||||
}
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
Read(fileIn, 0, -1, false);
|
||||
}
|
||||
public void Read(string fileIn, int offset, int size, bool editable)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
prev_data = br.ReadBytes(offset);
|
||||
|
||||
int file_size;
|
||||
if (size <= 0)
|
||||
file_size = (int)br.BaseStream.Length;
|
||||
else
|
||||
file_size = size;
|
||||
|
||||
NTFS[] map = new NTFS[file_size / 2];
|
||||
for (int i = 0; i < map.Length; i++)
|
||||
map[i] = pluginHost.MapInfo(br.ReadUInt16());
|
||||
|
||||
next_data = br.ReadBytes((int)(br.BaseStream.Length - file_size));
|
||||
|
||||
int width = (map.Length * 8 >= 0x100 ? 0x100 : map.Length * 8);
|
||||
int height = (map.Length / (width / 8)) * 8;
|
||||
|
||||
br.Close();
|
||||
Set_Map(map, editable, width, height);
|
||||
}
|
||||
|
||||
public override void Write_Map(string fileOut)
|
||||
{
|
||||
// TODO: write raw map
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ namespace Images
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Tiles(tiles, (int)nccg.charS.width, (int)nccg.charS.height,
|
||||
Set_Tiles(tiles, (int)nccg.charS.width * 8, (int)nccg.charS.height * 8,
|
||||
(nccg.charS.depth == 0 ? ColorDepth.Depth4Bit : ColorDepth.Depth8Bit),
|
||||
TileOrder.Horizontal, false);
|
||||
}
|
||||
|
64
Plugins/Images/Images/NCE.cs
Normal file
64
Plugins/Images/Images/NCE.cs
Normal file
@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public static class NCE
|
||||
{
|
||||
public static NCER Read(string file, IPluginHost pluginHost)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(file));
|
||||
NCER nce = new NCER();
|
||||
|
||||
br.BaseStream.Position += 4;
|
||||
uint num_banks = br.ReadUInt32() / 0x08;
|
||||
br.BaseStream.Position = 0;
|
||||
|
||||
nce.cebk.block_size = 0;
|
||||
nce.cebk.nBanks = (ushort)num_banks;
|
||||
nce.labl.names = new string[nce.cebk.nBanks];
|
||||
nce.cebk.banks = new Bank[num_banks];
|
||||
for (int i = 0; i < num_banks; i++)
|
||||
{
|
||||
nce.cebk.banks[i] = new Bank();
|
||||
nce.cebk.banks[i].nCells = br.ReadUInt16();
|
||||
nce.cebk.banks[i].unknown1 = br.ReadUInt16();
|
||||
nce.cebk.banks[i].cell_offset = br.ReadUInt32();
|
||||
|
||||
long nextBank_pos = br.BaseStream.Position;
|
||||
br.BaseStream.Position = nce.cebk.banks[i].cell_offset;
|
||||
|
||||
nce.cebk.banks[i].cells = new Cell[nce.cebk.banks[i].nCells];
|
||||
for (int c = 0; c < nce.cebk.banks[i].nCells; c++)
|
||||
{
|
||||
nce.cebk.banks[i].cells[c] = new Cell();
|
||||
nce.cebk.banks[i].cells[c].obj0.yOffset = br.ReadByte();
|
||||
nce.cebk.banks[i].cells[c].obj0.shape = (byte)(br.ReadByte() >> 6);
|
||||
nce.cebk.banks[i].cells[c].obj1.xOffset = br.ReadByte();
|
||||
nce.cebk.banks[i].cells[c].obj1.size = (byte)(br.ReadByte() >> 6);
|
||||
nce.cebk.banks[i].cells[c].obj2.tileOffset = br.ReadByte();
|
||||
nce.cebk.banks[i].cells[c].obj2.index_palette = (byte)(br.ReadByte() >> 4);
|
||||
|
||||
Size size = pluginHost.Size_NCER(
|
||||
nce.cebk.banks[i].cells[c].obj0.shape,
|
||||
nce.cebk.banks[i].cells[c].obj1.size);
|
||||
nce.cebk.banks[i].cells[c].height = (ushort)size.Height;
|
||||
nce.cebk.banks[i].cells[c].width = (ushort)size.Width;
|
||||
}
|
||||
|
||||
br.BaseStream.Position = nextBank_pos;
|
||||
|
||||
nce.labl.names[i] = "Bank " + i.ToString();
|
||||
}
|
||||
|
||||
|
||||
br.Close();
|
||||
return nce;
|
||||
}
|
||||
}
|
||||
}
|
@ -65,7 +65,7 @@ namespace Images
|
||||
Read(fileIn);
|
||||
}
|
||||
|
||||
public abstract void Read(string fileInt);
|
||||
public abstract void Read(string fileIn);
|
||||
public abstract void Write_Palette(string fileOut);
|
||||
|
||||
public NCLR Get_NCLR()
|
||||
@ -231,4 +231,92 @@ namespace Images
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class RawPalette : PaletteBase
|
||||
{
|
||||
// Unknown data
|
||||
byte[] prev_data;
|
||||
byte[] next_data;
|
||||
|
||||
public RawPalette(IPluginHost pluginHost, string file, int id,
|
||||
bool editable, ColorDepth depth, int offset, int size)
|
||||
: base(pluginHost)
|
||||
{
|
||||
this.pluginHost = pluginHost;
|
||||
this.fileName = System.IO.Path.GetFileName(file);
|
||||
this.id = id;
|
||||
|
||||
Read(file, editable, depth, offset, size);
|
||||
}
|
||||
public RawPalette(IPluginHost pluginHost, string file, int id,
|
||||
bool editable, int offset, int size) : base(pluginHost)
|
||||
{
|
||||
this.pluginHost = pluginHost;
|
||||
this.fileName = System.IO.Path.GetFileName(file);
|
||||
this.id = id;
|
||||
|
||||
Read(file, editable, offset, size);
|
||||
}
|
||||
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
Read(fileIn, false, 0, -1);
|
||||
}
|
||||
public void Read(string fileIn, bool editable, ColorDepth depth, int offset, int fileSize)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
prev_data = br.ReadBytes(offset);
|
||||
|
||||
if (fileSize <= 0)
|
||||
fileSize = (int)br.BaseStream.Length;
|
||||
|
||||
// Color data
|
||||
Color[][] palette = new Color[0][];
|
||||
if (depth == ColorDepth.Depth8Bit)
|
||||
{
|
||||
palette = new Color[1][];
|
||||
palette[0] = pluginHost.BGR555ToColor(br.ReadBytes(fileSize));
|
||||
}
|
||||
else if (depth == ColorDepth.Depth4Bit)
|
||||
{
|
||||
palette = new Color[fileSize / 0x20][];
|
||||
for (int i = 0; i < palette.Length; i++)
|
||||
palette[i] = pluginHost.BGR555ToColor(br.ReadBytes(0x20));
|
||||
}
|
||||
|
||||
next_data = br.ReadBytes((int)(br.BaseStream.Length - fileSize));
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Palette(palette, depth, editable);
|
||||
}
|
||||
public void Read(string fileIn, bool editable, int offset, int fileSize)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
prev_data = br.ReadBytes(offset);
|
||||
|
||||
if (fileSize <= 0)
|
||||
fileSize = (int)br.BaseStream.Length;
|
||||
|
||||
// Color data
|
||||
Color[][] palette = new Color[1][];
|
||||
palette[0] = pluginHost.BGR555ToColor(br.ReadBytes(fileSize));
|
||||
|
||||
if (palette[0].Length < 0x100)
|
||||
palette = pluginHost.Palette_8bppTo4bpp(palette);
|
||||
|
||||
next_data = br.ReadBytes((int)(br.BaseStream.Length - fileSize));
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Palette(palette, editable);
|
||||
}
|
||||
|
||||
public override void Write_Palette(string fileOut)
|
||||
{
|
||||
// TODO: write raw palette.
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
4
Plugins/Images/Images/PaletteControl.designer.cs
generated
4
Plugins/Images/Images/PaletteControl.designer.cs
generated
@ -57,7 +57,7 @@
|
||||
//
|
||||
// numericPalette
|
||||
//
|
||||
this.numericPalette.Location = new System.Drawing.Point(94, 182);
|
||||
this.numericPalette.Location = new System.Drawing.Point(101, 182);
|
||||
this.numericPalette.Name = "numericPalette";
|
||||
this.numericPalette.Size = new System.Drawing.Size(37, 20);
|
||||
this.numericPalette.TabIndex = 2;
|
||||
@ -139,7 +139,7 @@
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(135, 184);
|
||||
this.label3.Location = new System.Drawing.Point(142, 184);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(26, 13);
|
||||
this.label3.TabIndex = 9;
|
||||
|
@ -28,5 +28,5 @@ using System.Runtime.InteropServices;
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("2.0.0.0")]
|
||||
[assembly: AssemblyFileVersionAttribute("2.0.0.0")]
|
||||
[assembly: AssemblyVersion("2.1.0.0")]
|
||||
[assembly: AssemblyFileVersionAttribute("2.1.0.0")]
|
||||
|
276
Plugins/Images/Images/iNCER.cs
Normal file
276
Plugins/Images/Images/iNCER.cs
Normal file
@ -0,0 +1,276 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public partial class iNCER : UserControl
|
||||
{
|
||||
NCER ncer;
|
||||
NCGR tile;
|
||||
NCLR paleta;
|
||||
|
||||
IPluginHost pluginHost;
|
||||
bool selectColor;
|
||||
|
||||
public iNCER()
|
||||
{
|
||||
InitializeComponent();
|
||||
LeerIdioma();
|
||||
}
|
||||
public iNCER(NCER ncer, NCGR tile, NCLR paleta, IPluginHost pluginHost)
|
||||
{
|
||||
InitializeComponent();
|
||||
LeerIdioma();
|
||||
this.ncer = ncer;
|
||||
this.tile = tile;
|
||||
this.paleta = paleta;
|
||||
this.pluginHost = pluginHost;
|
||||
|
||||
|
||||
for (ushort i = 0; i < ncer.cebk.nBanks; i++)
|
||||
comboCelda.Items.Add(ncer.labl.names[i]);
|
||||
comboCelda.SelectedIndex = 0;
|
||||
|
||||
ActualizarImagen();
|
||||
|
||||
if (new String(paleta.header.id) != "NCLR" && new String(paleta.header.id) != "RLCN") // Not NCLR file
|
||||
btnSetTrans.Enabled = false;
|
||||
}
|
||||
|
||||
private void LeerIdioma()
|
||||
{
|
||||
try
|
||||
{
|
||||
//System.Xml.Linq.XElement xml = Tools.Helper.GetTranslation("NCER");
|
||||
|
||||
//label1.Text = xml.Element("S01").Value;
|
||||
//btnTodos.Text = xml.Element("S02").Value;
|
||||
//btnSave.Text = xml.Element("S03").Value;
|
||||
//checkEntorno.Text = xml.Element("S0F").Value;
|
||||
//checkCelda.Text = xml.Element("S10").Value;
|
||||
//checkImagen.Text = xml.Element("S11").Value;
|
||||
//checkTransparencia.Text = xml.Element("S12").Value;
|
||||
//checkNumber.Text = xml.Element("S13").Value;
|
||||
//label2.Text = xml.Element("S15").Value;
|
||||
//lblZoom.Text = xml.Element("S16").Value;
|
||||
//btnBgd.Text = xml.Element("S17").Value;
|
||||
//btnBgdTrans.Text = xml.Element("S18").Value;
|
||||
//btnImport.Text = xml.Element("S24").Value;
|
||||
//btnSetTrans.Text = xml.Element("S25").Value;
|
||||
}
|
||||
catch { throw new Exception("There was an error reading the XML language file."); }
|
||||
}
|
||||
|
||||
private void comboCelda_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ActualizarImagen();
|
||||
}
|
||||
private void check_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ActualizarImagen();
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog o = new SaveFileDialog();
|
||||
o.AddExtension = true;
|
||||
o.CheckPathExists = true;
|
||||
o.DefaultExt = ".bmp";
|
||||
o.Filter = "BitMaP (*.bmp)|*.bmp|" +
|
||||
"Portable Network Graphic (*.png)|*.png|" +
|
||||
"JPEG (*.jpg)|*.jpg;*.jpeg|" +
|
||||
"Tagged Image File Format (*.tiff)|*.tiff;*.tif|" +
|
||||
"Graphic Interchange Format (*.gif)|*.gif|" +
|
||||
"Icon (*.ico)|*.ico;*.icon";
|
||||
o.OverwritePrompt = true;
|
||||
|
||||
if (o.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (o.FilterIndex == 1)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
|
||||
else if (o.FilterIndex == 2)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
else if (o.FilterIndex == 3)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
else if (o.FilterIndex == 4)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Tiff);
|
||||
else if (o.FilterIndex == 5)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Gif);
|
||||
else if (o.FilterIndex == 6)
|
||||
ActualizarFullImagen().Save(o.FileName, System.Drawing.Imaging.ImageFormat.Icon);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnTodos_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form ven = new Form();
|
||||
int xMax = 4 * 260;
|
||||
int x = 0;
|
||||
int y = 15;
|
||||
|
||||
for (int i = 0; i < ncer.cebk.nBanks; i++)
|
||||
{
|
||||
PictureBox pic = new PictureBox();
|
||||
pic.Size = new Size(256, 256);
|
||||
pic.Location = new Point(x, y);
|
||||
pic.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
pic.Image = pluginHost.Bitmap_NCER(ncer.cebk.banks[i], ncer.cebk.block_size, tile, paleta,
|
||||
checkEntorno.Checked, checkCelda.Checked, checkNumber.Checked,
|
||||
checkTransparencia.Checked, checkImagen.Checked);
|
||||
Label lbl = new Label();
|
||||
lbl.Text = ncer.labl.names[i];
|
||||
lbl.Location = new Point(x, y - 15);
|
||||
|
||||
ven.Controls.Add(pic);
|
||||
ven.Controls.Add(lbl);
|
||||
|
||||
x += 260;
|
||||
if (x >= xMax)
|
||||
{
|
||||
x = 0;
|
||||
y += 275;
|
||||
}
|
||||
}
|
||||
|
||||
//ven.Text = Tools.Helper.GetTranslation("NCER", "S14");
|
||||
ven.BackColor = SystemColors.GradientInactiveCaption;
|
||||
ven.AutoScroll = true;
|
||||
ven.AutoSize = true;
|
||||
ven.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
ven.ShowIcon = false;
|
||||
ven.MaximizeBox = false;
|
||||
ven.MaximumSize = new System.Drawing.Size(1024, 700);
|
||||
ven.Location = new Point(20, 20);
|
||||
ven.Show();
|
||||
}
|
||||
|
||||
private void imgBox_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
Form ventana = new Form();
|
||||
PictureBox pic = new PictureBox();
|
||||
|
||||
pic.Location = new Point(0, 0);
|
||||
pic.SizeMode = PictureBoxSizeMode.AutoSize;
|
||||
pic.BackColor = pictureBgd.BackColor;
|
||||
ventana.AutoSize = true;
|
||||
ventana.BackColor = SystemColors.GradientInactiveCaption;
|
||||
ventana.AutoScroll = true;
|
||||
ventana.MaximumSize = new Size(1024, 700);
|
||||
ventana.ShowIcon = false;
|
||||
//ventana.Text = Tools.Helper.GetTranslation("NCER", "S14");
|
||||
ventana.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
ventana.MaximizeBox = false;
|
||||
|
||||
pic.Image = ActualizarFullImagen();
|
||||
|
||||
ventana.Controls.Add(pic);
|
||||
ventana.Show();
|
||||
}
|
||||
|
||||
private void btnBgdTrans_Click(object sender, EventArgs e)
|
||||
{
|
||||
btnBgdTrans.Enabled = false;
|
||||
|
||||
pictureBgd.BackColor = Color.Transparent;
|
||||
imgBox.BackColor = Color.Transparent;
|
||||
}
|
||||
private void btnBgd_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog o = new ColorDialog();
|
||||
o.AllowFullOpen = true;
|
||||
o.AnyColor = true;
|
||||
|
||||
if (o.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
pictureBgd.BackColor = o.Color;
|
||||
imgBox.BackColor = o.Color;
|
||||
btnBgdTrans.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void trackZoom_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
ActualizarImagen();
|
||||
}
|
||||
|
||||
private Image ActualizarImagen()
|
||||
{
|
||||
imgBox.Image = pluginHost.Bitmap_NCER(ncer.cebk.banks[comboCelda.SelectedIndex], ncer.cebk.block_size,
|
||||
tile, paleta, checkEntorno.Checked, checkCelda.Checked, checkNumber.Checked, checkTransparencia.Checked,
|
||||
checkImagen.Checked, trackZoom.Value);
|
||||
|
||||
return imgBox.Image;
|
||||
}
|
||||
private Image ActualizarFullImagen()
|
||||
{
|
||||
// Devolvemos la imagen a su estado inicial
|
||||
Image original = pluginHost.Bitmap_NCER(ncer.cebk.banks[comboCelda.SelectedIndex], ncer.cebk.block_size,
|
||||
tile, paleta, checkEntorno.Checked, checkCelda.Checked, checkNumber.Checked, checkTransparencia.Checked,
|
||||
checkImagen.Checked, 512, 512, trackZoom.Value);
|
||||
|
||||
return original;
|
||||
}
|
||||
|
||||
private void btnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog o = new OpenFileDialog();
|
||||
o.CheckFileExists = true;
|
||||
o.DefaultExt = "bmp";
|
||||
o.Filter = "Supported images |*.png;*.bmp;*.jpg;*.jpeg;*.tif;*.tiff;*.gif;*.ico;*.icon|" +
|
||||
"BitMaP (*.bmp)|*.bmp|" +
|
||||
"Portable Network Graphic (*.png)|*.png|" +
|
||||
"JPEG (*.jpg)|*.jpg;*.jpeg|" +
|
||||
"Tagged Image File Format (*.tiff)|*.tiff;*.tif|" +
|
||||
"Graphic Interchange Format (*.gif)|*.gif|" +
|
||||
"Icon (*.ico)|*.ico;*.icon";
|
||||
o.Multiselect = false;
|
||||
if (o.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
}
|
||||
}
|
||||
private void btnSetTrans_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void imgBox_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (selectColor && imgBox.Image is Image)
|
||||
{
|
||||
Color color = ((Bitmap)imgBox.Image).GetPixel(e.X, e.Y);
|
||||
Change_TransparencyColor(color);
|
||||
}
|
||||
}
|
||||
private void Change_TransparencyColor(Color color)
|
||||
{
|
||||
}
|
||||
private void Add_TransparencyColor()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
341
Plugins/Images/Images/iNCER.designer.cs
generated
Normal file
341
Plugins/Images/Images/iNCER.designer.cs
generated
Normal file
@ -0,0 +1,341 @@
|
||||
namespace Images
|
||||
{
|
||||
partial class iNCER
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.imgBox = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.comboCelda = new System.Windows.Forms.ComboBox();
|
||||
this.btnTodos = new System.Windows.Forms.Button();
|
||||
this.btnSave = new System.Windows.Forms.Button();
|
||||
this.checkEntorno = new System.Windows.Forms.CheckBox();
|
||||
this.checkNumber = new System.Windows.Forms.CheckBox();
|
||||
this.checkCelda = new System.Windows.Forms.CheckBox();
|
||||
this.checkTransparencia = new System.Windows.Forms.CheckBox();
|
||||
this.checkImagen = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.btnBgdTrans = new System.Windows.Forms.Button();
|
||||
this.pictureBgd = new System.Windows.Forms.PictureBox();
|
||||
this.btnBgd = new System.Windows.Forms.Button();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.lblZoom = new System.Windows.Forms.Label();
|
||||
this.trackZoom = new System.Windows.Forms.TrackBar();
|
||||
this.btnImport = new System.Windows.Forms.Button();
|
||||
this.btnSetTrans = new System.Windows.Forms.Button();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgBox)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBgd)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackZoom)).BeginInit();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// imgBox
|
||||
//
|
||||
this.imgBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.imgBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.imgBox.Name = "imgBox";
|
||||
this.imgBox.Size = new System.Drawing.Size(256, 256);
|
||||
this.imgBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.imgBox.TabIndex = 0;
|
||||
this.imgBox.TabStop = false;
|
||||
this.imgBox.DoubleClick += new System.EventHandler(this.imgBox_DoubleClick);
|
||||
this.imgBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.imgBox_MouseClick);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(3, 266);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(26, 13);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "S01";
|
||||
//
|
||||
// comboCelda
|
||||
//
|
||||
this.comboCelda.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboCelda.FormattingEnabled = true;
|
||||
this.comboCelda.Location = new System.Drawing.Point(73, 263);
|
||||
this.comboCelda.Name = "comboCelda";
|
||||
this.comboCelda.Size = new System.Drawing.Size(183, 21);
|
||||
this.comboCelda.TabIndex = 3;
|
||||
this.comboCelda.SelectedIndexChanged += new System.EventHandler(this.comboCelda_SelectedIndexChanged);
|
||||
//
|
||||
// btnTodos
|
||||
//
|
||||
this.btnTodos.Location = new System.Drawing.Point(73, 290);
|
||||
this.btnTodos.Name = "btnTodos";
|
||||
this.btnTodos.Size = new System.Drawing.Size(183, 23);
|
||||
this.btnTodos.TabIndex = 4;
|
||||
this.btnTodos.Text = "S02";
|
||||
this.btnTodos.UseVisualStyleBackColor = true;
|
||||
this.btnTodos.Click += new System.EventHandler(this.btnTodos_Click);
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Image = global::Images.Properties.Resources.picture_save;
|
||||
this.btnSave.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnSave.Location = new System.Drawing.Point(6, 483);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(86, 26);
|
||||
this.btnSave.TabIndex = 5;
|
||||
this.btnSave.Text = "S03";
|
||||
this.btnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||
this.btnSave.UseVisualStyleBackColor = true;
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// checkEntorno
|
||||
//
|
||||
this.checkEntorno.AutoSize = true;
|
||||
this.checkEntorno.Location = new System.Drawing.Point(265, 259);
|
||||
this.checkEntorno.Name = "checkEntorno";
|
||||
this.checkEntorno.Size = new System.Drawing.Size(45, 17);
|
||||
this.checkEntorno.TabIndex = 6;
|
||||
this.checkEntorno.Text = "S0F";
|
||||
this.checkEntorno.UseVisualStyleBackColor = true;
|
||||
this.checkEntorno.CheckedChanged += new System.EventHandler(this.check_CheckedChanged);
|
||||
//
|
||||
// checkNumber
|
||||
//
|
||||
this.checkNumber.AutoSize = true;
|
||||
this.checkNumber.Location = new System.Drawing.Point(405, 282);
|
||||
this.checkNumber.Name = "checkNumber";
|
||||
this.checkNumber.Size = new System.Drawing.Size(45, 17);
|
||||
this.checkNumber.TabIndex = 7;
|
||||
this.checkNumber.Text = "S13";
|
||||
this.checkNumber.UseVisualStyleBackColor = true;
|
||||
this.checkNumber.CheckedChanged += new System.EventHandler(this.check_CheckedChanged);
|
||||
//
|
||||
// checkCelda
|
||||
//
|
||||
this.checkCelda.AutoSize = true;
|
||||
this.checkCelda.Location = new System.Drawing.Point(265, 282);
|
||||
this.checkCelda.Name = "checkCelda";
|
||||
this.checkCelda.Size = new System.Drawing.Size(45, 17);
|
||||
this.checkCelda.TabIndex = 8;
|
||||
this.checkCelda.Text = "S10";
|
||||
this.checkCelda.UseVisualStyleBackColor = true;
|
||||
this.checkCelda.CheckedChanged += new System.EventHandler(this.check_CheckedChanged);
|
||||
//
|
||||
// checkTransparencia
|
||||
//
|
||||
this.checkTransparencia.AutoSize = true;
|
||||
this.checkTransparencia.Location = new System.Drawing.Point(405, 259);
|
||||
this.checkTransparencia.Name = "checkTransparencia";
|
||||
this.checkTransparencia.Size = new System.Drawing.Size(45, 17);
|
||||
this.checkTransparencia.TabIndex = 9;
|
||||
this.checkTransparencia.Text = "S12";
|
||||
this.checkTransparencia.UseVisualStyleBackColor = true;
|
||||
this.checkTransparencia.CheckedChanged += new System.EventHandler(this.check_CheckedChanged);
|
||||
//
|
||||
// checkImagen
|
||||
//
|
||||
this.checkImagen.AutoSize = true;
|
||||
this.checkImagen.Checked = true;
|
||||
this.checkImagen.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkImagen.Location = new System.Drawing.Point(265, 306);
|
||||
this.checkImagen.Name = "checkImagen";
|
||||
this.checkImagen.Size = new System.Drawing.Size(45, 17);
|
||||
this.checkImagen.TabIndex = 10;
|
||||
this.checkImagen.Text = "S11";
|
||||
this.checkImagen.UseVisualStyleBackColor = true;
|
||||
this.checkImagen.CheckedChanged += new System.EventHandler(this.check_CheckedChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(98, 477);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(26, 13);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "S15";
|
||||
//
|
||||
// btnBgdTrans
|
||||
//
|
||||
this.btnBgdTrans.Enabled = false;
|
||||
this.btnBgdTrans.Location = new System.Drawing.Point(176, 321);
|
||||
this.btnBgdTrans.Name = "btnBgdTrans";
|
||||
this.btnBgdTrans.Size = new System.Drawing.Size(80, 35);
|
||||
this.btnBgdTrans.TabIndex = 29;
|
||||
this.btnBgdTrans.Text = "S18";
|
||||
this.btnBgdTrans.UseVisualStyleBackColor = true;
|
||||
this.btnBgdTrans.Click += new System.EventHandler(this.btnBgdTrans_Click);
|
||||
//
|
||||
// pictureBgd
|
||||
//
|
||||
this.pictureBgd.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.pictureBgd.Location = new System.Drawing.Point(135, 322);
|
||||
this.pictureBgd.Name = "pictureBgd";
|
||||
this.pictureBgd.Size = new System.Drawing.Size(35, 35);
|
||||
this.pictureBgd.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBgd.TabIndex = 28;
|
||||
this.pictureBgd.TabStop = false;
|
||||
//
|
||||
// btnBgd
|
||||
//
|
||||
this.btnBgd.Location = new System.Drawing.Point(6, 322);
|
||||
this.btnBgd.Name = "btnBgd";
|
||||
this.btnBgd.Size = new System.Drawing.Size(118, 35);
|
||||
this.btnBgd.TabIndex = 27;
|
||||
this.btnBgd.Text = "S17";
|
||||
this.btnBgd.UseVisualStyleBackColor = true;
|
||||
this.btnBgd.Click += new System.EventHandler(this.btnBgd_Click);
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(466, 342);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(19, 13);
|
||||
this.label8.TabIndex = 26;
|
||||
this.label8.Text = "20";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(262, 343);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(13, 13);
|
||||
this.label7.TabIndex = 25;
|
||||
this.label7.Text = "1";
|
||||
//
|
||||
// lblZoom
|
||||
//
|
||||
this.lblZoom.AutoSize = true;
|
||||
this.lblZoom.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblZoom.Location = new System.Drawing.Point(348, 331);
|
||||
this.lblZoom.Name = "lblZoom";
|
||||
this.lblZoom.Size = new System.Drawing.Size(33, 17);
|
||||
this.lblZoom.TabIndex = 24;
|
||||
this.lblZoom.Text = "S16";
|
||||
//
|
||||
// trackZoom
|
||||
//
|
||||
this.trackZoom.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.trackZoom.LargeChange = 2;
|
||||
this.trackZoom.Location = new System.Drawing.Point(265, 358);
|
||||
this.trackZoom.Maximum = 20;
|
||||
this.trackZoom.Minimum = 1;
|
||||
this.trackZoom.Name = "trackZoom";
|
||||
this.trackZoom.Size = new System.Drawing.Size(226, 45);
|
||||
this.trackZoom.TabIndex = 23;
|
||||
this.trackZoom.Value = 1;
|
||||
this.trackZoom.Scroll += new System.EventHandler(this.trackZoom_Scroll);
|
||||
//
|
||||
// btnImport
|
||||
//
|
||||
this.btnImport.Location = new System.Drawing.Point(416, 463);
|
||||
this.btnImport.Name = "btnImport";
|
||||
this.btnImport.Size = new System.Drawing.Size(90, 40);
|
||||
this.btnImport.TabIndex = 30;
|
||||
this.btnImport.Text = "S24";
|
||||
this.btnImport.UseVisualStyleBackColor = true;
|
||||
this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
|
||||
//
|
||||
// btnSetTrans
|
||||
//
|
||||
this.btnSetTrans.Location = new System.Drawing.Point(6, 371);
|
||||
this.btnSetTrans.Name = "btnSetTrans";
|
||||
this.btnSetTrans.Size = new System.Drawing.Size(208, 32);
|
||||
this.btnSetTrans.TabIndex = 31;
|
||||
this.btnSetTrans.Text = "S25";
|
||||
this.btnSetTrans.UseVisualStyleBackColor = true;
|
||||
this.btnSetTrans.Click += new System.EventHandler(this.btnSetTrans_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.AutoScroll = true;
|
||||
this.panel1.Controls.Add(this.imgBox);
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(258, 258);
|
||||
this.panel1.TabIndex = 32;
|
||||
//
|
||||
// iNCER
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Transparent;
|
||||
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.btnSetTrans);
|
||||
this.Controls.Add(this.btnImport);
|
||||
this.Controls.Add(this.btnBgdTrans);
|
||||
this.Controls.Add(this.pictureBgd);
|
||||
this.Controls.Add(this.btnBgd);
|
||||
this.Controls.Add(this.label8);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.lblZoom);
|
||||
this.Controls.Add(this.trackZoom);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.checkImagen);
|
||||
this.Controls.Add(this.checkTransparencia);
|
||||
this.Controls.Add(this.checkCelda);
|
||||
this.Controls.Add(this.checkNumber);
|
||||
this.Controls.Add(this.checkEntorno);
|
||||
this.Controls.Add(this.btnSave);
|
||||
this.Controls.Add(this.btnTodos);
|
||||
this.Controls.Add(this.comboCelda);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "iNCER";
|
||||
this.Size = new System.Drawing.Size(512, 512);
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgBox)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBgd)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackZoom)).EndInit();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox imgBox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox comboCelda;
|
||||
private System.Windows.Forms.Button btnTodos;
|
||||
private System.Windows.Forms.Button btnSave;
|
||||
private System.Windows.Forms.CheckBox checkEntorno;
|
||||
private System.Windows.Forms.CheckBox checkNumber;
|
||||
private System.Windows.Forms.CheckBox checkCelda;
|
||||
private System.Windows.Forms.CheckBox checkTransparencia;
|
||||
private System.Windows.Forms.CheckBox checkImagen;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button btnBgdTrans;
|
||||
private System.Windows.Forms.PictureBox pictureBgd;
|
||||
private System.Windows.Forms.Button btnBgd;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label lblZoom;
|
||||
private System.Windows.Forms.TrackBar trackZoom;
|
||||
private System.Windows.Forms.Button btnImport;
|
||||
private System.Windows.Forms.Button btnSetTrans;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
}
|
||||
}
|
120
Plugins/Images/Images/iNCER.resx
Normal file
120
Plugins/Images/Images/iNCER.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -1,57 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public class nbfc : ImageBase
|
||||
{
|
||||
public nbfc(IPluginHost pluginHost, string file, int id) : base(pluginHost, file, id) { }
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
int fileSize = (int)br.BaseStream.Length;
|
||||
|
||||
Byte[][] tiles = new byte[fileSize / 0x40][];
|
||||
for (int i = 0; i < tiles.Length; i++)
|
||||
tiles[i] = br.ReadBytes(0x40);
|
||||
|
||||
int width = (tiles.Length < 0x20 ? 0x04 : 0x20);
|
||||
int height = tiles.Length / width;
|
||||
if (height == 0)
|
||||
height = 8;
|
||||
|
||||
if (fileSize == 0x200)
|
||||
width = height = 0x04;
|
||||
|
||||
br.Close();
|
||||
Set_Tiles(tiles, width, height, System.Windows.Forms.ColorDepth.Depth8Bit, TileOrder.Horizontal, false);
|
||||
}
|
||||
|
||||
public override void Write_Tiles(string fileOut)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public class nbfp : PaletteBase
|
||||
{
|
||||
public nbfp(IPluginHost pluginHost, string file, int id) : base(pluginHost, file, id) { }
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
uint file_size = (uint)new FileInfo(fileIn).Length;
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
|
||||
// Color data
|
||||
Color[][] palette = new Color[1][];
|
||||
palette[0] = pluginHost.BGR555ToColor(br.ReadBytes((int)br.BaseStream.Length));
|
||||
|
||||
br.Close();
|
||||
Set_Palette(palette, false);
|
||||
}
|
||||
|
||||
public override void Write_Palette(string fileOut)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public class nbfs : MapBase
|
||||
{
|
||||
|
||||
public nbfs(IPluginHost pluginHost, string file, int id) : base(pluginHost, file, id) { }
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
uint file_size = (uint)br.BaseStream.Length;
|
||||
|
||||
NTFS[] map = new NTFS[file_size / 2];
|
||||
for (int i = 0; i < map.Length; i++)
|
||||
map[i] = pluginHost.MapInfo(br.ReadUInt16());
|
||||
|
||||
int width = (map.Length * 8 >= 0x100 ? 0x100 : map.Length * 8);
|
||||
int height = (map.Length / (width / 8)) * 8;
|
||||
|
||||
br.Close();
|
||||
Set_Map(map, false, width, height);
|
||||
}
|
||||
|
||||
public override void Write_Map(string fileOut)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public class ntfp : PaletteBase
|
||||
{
|
||||
public ntfp(IPluginHost pluginHost, string file, int id) : base(pluginHost, file, id) { }
|
||||
|
||||
public override void Read(string file)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(file));
|
||||
|
||||
// Color data
|
||||
Color[][] palette = new Color[1][];
|
||||
palette[0] = pluginHost.BGR555ToColor(br.ReadBytes((int)br.BaseStream.Length));
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Palette(palette, false);
|
||||
}
|
||||
|
||||
public override void Write_Palette(string fileOut)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using PluginInterface;
|
||||
|
||||
namespace Images
|
||||
{
|
||||
public class ntft : ImageBase
|
||||
{
|
||||
public ntft(IPluginHost pluginHost, string archivo, int id) : base(pluginHost, archivo, id)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Read(string fileIn)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(fileIn));
|
||||
int fileSize = (int)br.BaseStream.Length;
|
||||
|
||||
Byte[][] tiles = new byte[1][];
|
||||
tiles[0] = br.ReadBytes(fileSize);
|
||||
|
||||
int width = (fileSize < 0x100 ? fileSize : 0x0100);
|
||||
int height = fileSize / width;
|
||||
if (height == 0)
|
||||
height = 1;
|
||||
|
||||
if (fileSize == 512)
|
||||
width = height = 32;
|
||||
|
||||
br.Close();
|
||||
|
||||
Set_Tiles(tiles, width, height, System.Windows.Forms.ColorDepth.Depth8Bit, TileOrder.NoTiled, false);
|
||||
}
|
||||
|
||||
public override void Write_Tiles(string fileOut)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -43,6 +43,7 @@ namespace Pack
|
||||
{
|
||||
ARC arc = new ARC();
|
||||
narcFile = pluginHost.Get_TempFolder() + Path.DirectorySeparatorChar + "narc_" + Path.GetRandomFileName();
|
||||
arc.file = narcFile;
|
||||
File.Copy(file, narcFile, true);
|
||||
BinaryReader br = new BinaryReader(System.IO.File.OpenRead(file));
|
||||
|
||||
@ -95,13 +96,29 @@ namespace Pack
|
||||
{
|
||||
sFile currFile = new sFile();
|
||||
currFile.id = (ushort)idFile++;
|
||||
currFile.name = "File" + idFile.ToString() + ".bin";
|
||||
currFile.name = "File" + idFile.ToString();
|
||||
|
||||
// FAT data
|
||||
currFile.path = narcFile;
|
||||
currFile.offset = arc.btaf.entries[currFile.id].start_offset + gmif_offset;
|
||||
currFile.size = (arc.btaf.entries[currFile.id].end_offset - arc.btaf.entries[currFile.id].start_offset);
|
||||
|
||||
// Get the extension
|
||||
long currPos = br.BaseStream.Position;
|
||||
br.BaseStream.Position = currFile.offset;
|
||||
char[] ext = Encoding.ASCII.GetChars(br.ReadBytes(4));
|
||||
String extS = ".";
|
||||
for (int s = 0; s < 4; s++)
|
||||
if (Char.IsLetterOrDigit(ext[s]) || ext[s] == 0x20)
|
||||
extS += ext[s];
|
||||
|
||||
if (extS != "." && extS.Length == 5 && currFile.size >= 4)
|
||||
currFile.name += extS;
|
||||
else
|
||||
currFile.name += ".bin";
|
||||
br.BaseStream.Position = currPos;
|
||||
|
||||
|
||||
if (!(main.files is List<sFile>))
|
||||
main.files = new List<sFile>();
|
||||
main.files.Add(currFile);
|
||||
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("5.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.0.0.0")]
|
||||
[assembly: AssemblyVersion("5.1.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.1.0.0")]
|
||||
|
@ -52,6 +52,8 @@ namespace SF_FEATHER
|
||||
return Format.FullImage;
|
||||
else if (ext == "SC4 " || ext == "SC8 ")
|
||||
return Format.Map;
|
||||
else if (ext == "PSI3")
|
||||
return Format.Script;
|
||||
|
||||
return Format.Unknown;
|
||||
}
|
||||
@ -59,7 +61,11 @@ namespace SF_FEATHER
|
||||
|
||||
public string Pack(ref sFolder unpacked, string file, int id)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
string fileOut = pluginHost.Get_TempFolder() + System.IO.Path.DirectorySeparatorChar +
|
||||
System.IO.Path.GetRandomFileName();
|
||||
PAC.Pack(file, fileOut, ref unpacked);
|
||||
|
||||
return fileOut;
|
||||
}
|
||||
public sFolder Unpack(string file, int id)
|
||||
{
|
||||
|
@ -101,5 +101,82 @@ namespace SF_FEATHER
|
||||
br.Close();
|
||||
return unpacked;
|
||||
}
|
||||
|
||||
public static void Pack(string file_original, string fileOut, ref sFolder unpacked)
|
||||
{
|
||||
BinaryReader br = new BinaryReader(File.OpenRead(file_original));
|
||||
BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut));
|
||||
List<byte> buffer = new List<byte>();
|
||||
|
||||
|
||||
ushort num_element = br.ReadUInt16();
|
||||
bw.Write(num_element);
|
||||
bw.Write(br.ReadUInt16()); // Unknown
|
||||
bw.Write(br.ReadUInt32()); // Type of element
|
||||
|
||||
uint offset = (uint)num_element * 8 + 8;
|
||||
uint size;
|
||||
int f = 0; // Pointer to the unpacked.files array
|
||||
|
||||
// Write the final padding of the FAT section
|
||||
if (offset % 0x10 != 0)
|
||||
{
|
||||
for (int r = 0; r < 0x10 - (offset % 0x10); r++)
|
||||
buffer.Add(0x00);
|
||||
|
||||
offset += 0x10 - (offset % 0x10);
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < num_element; i++)
|
||||
{
|
||||
uint older_offset = br.ReadUInt32();
|
||||
size = br.ReadUInt32();
|
||||
|
||||
// If it's a null file
|
||||
if (size == 0)
|
||||
{
|
||||
bw.Write(older_offset);
|
||||
bw.Write(size);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get a normalized size
|
||||
size = unpacked.files[f].size;
|
||||
if (size % 0x10 != 0)
|
||||
size += 0x10 - (size % 0x10);
|
||||
|
||||
// Write the FAT section
|
||||
bw.Write((uint)(offset / 0x10));
|
||||
bw.Write((uint)(size / 0x10));
|
||||
|
||||
// Write file
|
||||
BinaryReader fileRead = new BinaryReader(File.OpenRead(unpacked.files[f].path));
|
||||
fileRead.BaseStream.Position = unpacked.files[f].offset;
|
||||
buffer.AddRange(fileRead.ReadBytes((int)unpacked.files[f].size));
|
||||
fileRead.Close();
|
||||
|
||||
// Write the padding
|
||||
for (int r = 0; r < (size - unpacked.files[f].size); r++)
|
||||
buffer.Add(0x00);
|
||||
|
||||
// Set the new offset
|
||||
sFile newFile = unpacked.files[f];
|
||||
newFile.offset = offset;
|
||||
newFile.path = fileOut;
|
||||
unpacked.files[f] = newFile;
|
||||
|
||||
// Set new offset
|
||||
offset += size;
|
||||
f++;
|
||||
}
|
||||
bw.Flush();
|
||||
|
||||
bw.Write(buffer.ToArray());
|
||||
|
||||
br.Close();
|
||||
bw.Flush();
|
||||
bw.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// Puede especificar todos los valores o establecer como predeterminados los números de versión de compilación y de revisión
|
||||
// mediante el asterisco ('*'), como se muestra a continuación:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("1.1.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.0")]
|
||||
|
@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Programador: pleoNeX
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
@ -122,6 +122,115 @@ namespace Tinke
|
||||
} // end foreach
|
||||
|
||||
}
|
||||
public String[] Get_PluginsList()
|
||||
{
|
||||
List<String> list = new List<String>();
|
||||
|
||||
for (int i = 0; i < formatList.Count; i++)
|
||||
list.Add(formatList[i].ToString());
|
||||
if (gamePlugin is IGamePlugin)
|
||||
list.Add(gamePlugin.ToString());
|
||||
|
||||
return list.ToArray();
|
||||
}
|
||||
public Object Call_Plugin(sFile file, string name, string ext, int id, string header, int action)
|
||||
{
|
||||
string tempFile = pluginHost.Get_TempFolder() + Path.DirectorySeparatorChar + file.id + file.name;
|
||||
Save_File(file, tempFile);
|
||||
|
||||
if (gamePlugin is IGamePlugin)
|
||||
{
|
||||
if (gamePlugin.ToString() == name)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case 0:
|
||||
gamePlugin.Read(tempFile, id);
|
||||
return null;
|
||||
|
||||
case 1:
|
||||
return gamePlugin.Show_Info(tempFile, id);
|
||||
|
||||
case 2:
|
||||
sFolder unpacked = gamePlugin.Unpack(tempFile, id);
|
||||
Add_Files(ref unpacked, id);
|
||||
return unpacked;
|
||||
|
||||
case 3:
|
||||
sFolder unpack = pluginHost_event_GetDecompressedFiles(id);
|
||||
String packFile = gamePlugin.Pack(ref unpack, tempFile, id);
|
||||
|
||||
if (!(packFile is String) || packFile == "")
|
||||
{
|
||||
MessageBox.Show(Tools.Helper.GetTranslation("Messages", "S23"));
|
||||
Console.WriteLine(Tools.Helper.GetTranslation("Messages", "S25"));
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
pluginHost_ChangeFile_Event(id, packFile);
|
||||
Change_Files(unpack);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageBox.Show(Tools.Helper.GetTranslation("Messages", "S25"));
|
||||
Console.WriteLine(e.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (IPlugin plugin in formatList)
|
||||
{
|
||||
if (plugin.ToString() != name)
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case 0:
|
||||
plugin.Read(tempFile, id);
|
||||
return null;
|
||||
|
||||
case 1:
|
||||
return plugin.Show_Info(tempFile, id);
|
||||
|
||||
case 2: // Unpack
|
||||
sFolder unpacked = plugin.Unpack(tempFile);
|
||||
Add_Files(ref unpacked, id);
|
||||
return unpacked;
|
||||
|
||||
case 3: // Pack
|
||||
sFolder unpack = pluginHost_event_GetDecompressedFiles(id);
|
||||
String packFile = plugin.Pack(ref unpack, tempFile);
|
||||
|
||||
if (!(packFile is String) || packFile == "")
|
||||
{
|
||||
MessageBox.Show(Tools.Helper.GetTranslation("Messages", "S23"));
|
||||
Console.WriteLine(Tools.Helper.GetTranslation("Messages", "S25"));
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
pluginHost_ChangeFile_Event(id, packFile);
|
||||
Change_Files(unpack);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageBox.Show(Tools.Helper.GetTranslation("Messages", "S25"));
|
||||
Console.WriteLine(e.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine("Plugin not found");
|
||||
return null;
|
||||
}
|
||||
|
||||
#region Properties
|
||||
public sFolder Root
|
||||
@ -1201,7 +1310,7 @@ namespace Tinke
|
||||
|
||||
if (currFile.name == "FNT.BIN" || currFile.name == "FAT.BIN" || currFile.name.StartsWith("OVERLAY9_") || currFile.name.StartsWith("OVERLAY7_") ||
|
||||
currFile.name == "ARM9.BIN" || currFile.name == "ARM7.BIN" || currFile.name == "Y9.BIN" || currFile.name == "Y7.BIN")
|
||||
return Format.System;
|
||||
return Format.System;
|
||||
|
||||
|
||||
return Format.Unknown;
|
||||
@ -1249,7 +1358,7 @@ namespace Tinke
|
||||
else if (new String(Encoding.ASCII.GetChars(ext)) == "NANR" || new String(Encoding.ASCII.GetChars(ext)) == "RNAN")
|
||||
return Format.Animation;
|
||||
else if (name == "FNT.BIN" || name == "FAT.BIN" || name.StartsWith("OVERLAY9_") || name.StartsWith("OVERLAY7_") ||
|
||||
name == "ARM9.BIN" || name == "ARM7.BIN" || name == "Y9.BIN" || name == "Y7.BIN"|| name.EndsWith(".SRL") ||
|
||||
name == "ARM9.BIN" || name == "ARM7.BIN" || name == "Y9.BIN" || name == "Y7.BIN" || name.EndsWith(".SRL") ||
|
||||
name.EndsWith(".NDS"))
|
||||
return Format.System;
|
||||
|
||||
@ -1329,8 +1438,8 @@ namespace Tinke
|
||||
return Format.Compressed;
|
||||
|
||||
if (name == "FNT.BIN" || name == "FAT.BIN" || name.StartsWith("OVERLAY9_") || name.StartsWith("OVERLAY7_") ||
|
||||
name == "ARM9.BIN" || name == "ARM7.BIN" || name == "Y9.BIN" || name == "Y7.BIN" )
|
||||
return Format.System;
|
||||
name == "ARM9.BIN" || name == "ARM7.BIN" || name == "Y9.BIN" || name == "Y7.BIN")
|
||||
return Format.System;
|
||||
|
||||
return Format.Unknown;
|
||||
}
|
||||
@ -1580,7 +1689,7 @@ namespace Tinke
|
||||
currDecompressed.id = subFolder.id;
|
||||
currDecompressed.name = subFolder.name;
|
||||
|
||||
if ((String)subFolder.tag != "" && subFolder.tag is String) // Decompressed file
|
||||
if ((String)subFolder.tag != "" && subFolder.tag is String) // Decompressed file
|
||||
{
|
||||
sFile file = Search_File(subFolder.id);
|
||||
decompressedFiles.files.Add(file);
|
||||
@ -1609,7 +1718,7 @@ namespace Tinke
|
||||
foreach (sFolder subFolder in currFolder.folders)
|
||||
Get_LowestID(subFolder, ref id);
|
||||
}
|
||||
|
||||
|
||||
public void Pack()
|
||||
{
|
||||
Pack(idSelect);
|
||||
@ -1712,7 +1821,7 @@ namespace Tinke
|
||||
}
|
||||
|
||||
pluginHost_ChangeFile_Event(id, packFile);
|
||||
|
||||
|
||||
Change_Files(unpacked);
|
||||
}
|
||||
#endregion
|
||||
@ -2014,7 +2123,7 @@ namespace Tinke
|
||||
Console.WriteLine(Tools.Helper.GetTranslation("Messages", "S25"));
|
||||
return new Control();
|
||||
}
|
||||
|
||||
|
||||
public void Read_File()
|
||||
{
|
||||
sFile selectFile = Selected_File();
|
||||
|
241
Tinke/Dialog/CallPlugin.Designer.cs
generated
Normal file
241
Tinke/Dialog/CallPlugin.Designer.cs
generated
Normal file
@ -0,0 +1,241 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
namespace Tinke.Dialog
|
||||
{
|
||||
partial class CallPlugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CallPlugin));
|
||||
this.comboPlugin = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtExt = new System.Windows.Forms.TextBox();
|
||||
this.txtHeader = new System.Windows.Forms.TextBox();
|
||||
this.btnAccept = new System.Windows.Forms.Button();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.comboAction = new System.Windows.Forms.ComboBox();
|
||||
this.txtHeaderHex = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.numericID = new System.Windows.Forms.NumericUpDown();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericID)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// comboPlugin
|
||||
//
|
||||
this.comboPlugin.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboPlugin.FormattingEnabled = true;
|
||||
this.comboPlugin.Location = new System.Drawing.Point(78, 15);
|
||||
this.comboPlugin.Name = "comboPlugin";
|
||||
this.comboPlugin.Size = new System.Drawing.Size(121, 21);
|
||||
this.comboPlugin.TabIndex = 0;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 18);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(39, 13);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Plugin:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(12, 61);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(56, 13);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "Extension:";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(12, 87);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(45, 13);
|
||||
this.label3.TabIndex = 3;
|
||||
this.label3.Text = "Header:";
|
||||
//
|
||||
// txtExt
|
||||
//
|
||||
this.txtExt.Location = new System.Drawing.Point(99, 58);
|
||||
this.txtExt.Name = "txtExt";
|
||||
this.txtExt.Size = new System.Drawing.Size(100, 20);
|
||||
this.txtExt.TabIndex = 4;
|
||||
//
|
||||
// txtHeader
|
||||
//
|
||||
this.txtHeader.Location = new System.Drawing.Point(99, 84);
|
||||
this.txtHeader.MaxLength = 4;
|
||||
this.txtHeader.Name = "txtHeader";
|
||||
this.txtHeader.Size = new System.Drawing.Size(100, 20);
|
||||
this.txtHeader.TabIndex = 5;
|
||||
this.txtHeader.TextChanged += new System.EventHandler(this.txtHeader_TextChanged);
|
||||
//
|
||||
// btnAccept
|
||||
//
|
||||
this.btnAccept.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnAccept.Image = global::Tinke.Properties.Resources.accept;
|
||||
this.btnAccept.Location = new System.Drawing.Point(272, 110);
|
||||
this.btnAccept.Name = "btnAccept";
|
||||
this.btnAccept.Size = new System.Drawing.Size(100, 23);
|
||||
this.btnAccept.TabIndex = 6;
|
||||
this.btnAccept.Text = "Accept";
|
||||
this.btnAccept.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||
this.btnAccept.UseVisualStyleBackColor = true;
|
||||
this.btnAccept.Click += new System.EventHandler(this.btnAccept_Click);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(205, 18);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(40, 13);
|
||||
this.label4.TabIndex = 7;
|
||||
this.label4.Text = "Action:";
|
||||
//
|
||||
// comboAction
|
||||
//
|
||||
this.comboAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboAction.FormattingEnabled = true;
|
||||
this.comboAction.Items.AddRange(new object[] {
|
||||
"Read (double click)",
|
||||
"View",
|
||||
"Unpack",
|
||||
"Pack"});
|
||||
this.comboAction.Location = new System.Drawing.Point(251, 15);
|
||||
this.comboAction.Name = "comboAction";
|
||||
this.comboAction.Size = new System.Drawing.Size(121, 21);
|
||||
this.comboAction.TabIndex = 8;
|
||||
//
|
||||
// txtHeaderHex
|
||||
//
|
||||
this.txtHeaderHex.Location = new System.Drawing.Point(272, 84);
|
||||
this.txtHeaderHex.Name = "txtHeaderHex";
|
||||
this.txtHeaderHex.Size = new System.Drawing.Size(100, 20);
|
||||
this.txtHeaderHex.TabIndex = 9;
|
||||
this.txtHeaderHex.TextChanged += new System.EventHandler(this.txtHeaderHex_TextChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(205, 87);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(68, 13);
|
||||
this.label5.TabIndex = 10;
|
||||
this.label5.Text = "hex 0x";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(205, 61);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(21, 13);
|
||||
this.label6.TabIndex = 11;
|
||||
this.label6.Text = "ID:";
|
||||
//
|
||||
// numericID
|
||||
//
|
||||
this.numericID.Hexadecimal = true;
|
||||
this.numericID.Location = new System.Drawing.Point(272, 58);
|
||||
this.numericID.Maximum = new decimal(new int[] {
|
||||
4095,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericID.Name = "numericID";
|
||||
this.numericID.Size = new System.Drawing.Size(100, 20);
|
||||
this.numericID.TabIndex = 12;
|
||||
//
|
||||
// CallPlugin
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||
this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.ClientSize = new System.Drawing.Size(379, 139);
|
||||
this.Controls.Add(this.numericID);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.txtHeaderHex);
|
||||
this.Controls.Add(this.comboAction);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.btnAccept);
|
||||
this.Controls.Add(this.txtHeader);
|
||||
this.Controls.Add(this.txtExt);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.comboPlugin);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "CallPlugin";
|
||||
this.ShowInTaskbar = false;
|
||||
this.Text = "Call plugin";
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericID)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox comboPlugin;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtExt;
|
||||
private System.Windows.Forms.TextBox txtHeader;
|
||||
private System.Windows.Forms.Button btnAccept;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.ComboBox comboAction;
|
||||
private System.Windows.Forms.TextBox txtHeaderHex;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.NumericUpDown numericID;
|
||||
}
|
||||
}
|
88
Tinke/Dialog/CallPlugin.cs
Normal file
88
Tinke/Dialog/CallPlugin.cs
Normal file
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright (C) 2011 pleoNeX
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* By: pleoNeX
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Tinke.Dialog
|
||||
{
|
||||
public partial class CallPlugin : Form
|
||||
{
|
||||
public CallPlugin()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public CallPlugin(string[] list)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
comboPlugin.Items.AddRange(list);
|
||||
}
|
||||
|
||||
private void btnAccept_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
public String Extension
|
||||
{
|
||||
get { return txtExt.Text; }
|
||||
set
|
||||
{
|
||||
txtExt.Text = value;
|
||||
txtHeaderHex.Text = BitConverter.ToString(Encoding.ASCII.GetBytes(txtHeader.Text.ToCharArray()));
|
||||
}
|
||||
}
|
||||
public String Header
|
||||
{
|
||||
get { return txtHeader.Text; }
|
||||
set { txtHeader.Text = value; }
|
||||
}
|
||||
public String Plugin
|
||||
{
|
||||
get { return comboPlugin.Text; }
|
||||
}
|
||||
public int Action
|
||||
{
|
||||
get { return comboAction.SelectedIndex; }
|
||||
}
|
||||
public int ID
|
||||
{
|
||||
get { return (int)numericID.Value; }
|
||||
set { numericID.Value = value; }
|
||||
}
|
||||
|
||||
private void txtHeader_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (txtHeader.Focused)
|
||||
txtHeaderHex.Text = BitConverter.ToString(Encoding.ASCII.GetBytes(txtHeader.Text.ToCharArray()));
|
||||
}
|
||||
private void txtHeaderHex_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (txtHeaderHex.Focused)
|
||||
txtHeader.Text = new String(Encoding.ASCII.GetChars(Tools.Helper.StringToBytes(txtHeaderHex.Text, 4)));
|
||||
}
|
||||
}
|
||||
}
|
408
Tinke/Dialog/CallPlugin.resx
Normal file
408
Tinke/Dialog/CallPlugin.resx
Normal file
@ -0,0 +1,408 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAQEAAAAAAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8Av97HAH++kAA/nVgAAH0h9QB8IPUBfB/1Anse9QN7
|
||||
Hv8Cehv/AXoZ/wB5F/8AeRUhP5pPIX+8iiG/3cQh////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////APT59ADp9OoA3+/gANTq1gDU6dYA1OnWANTp1QDT6dUA0+jVANPo
|
||||
1QDT6NQA0+jUANLo1ADS59QA0ufTANLn0wDR59MA0ebTANHm0gDR5tIA3OzdAOjy6ADz+PMA////AP//
|
||||
/wD///8A////AP///wDy+PMA5vHnANrq2wDO49AAzuPPAM7jzwDO488AzuPPAJrJpABnsHkANJdOAAB+
|
||||
I/UFgCb1CYEp9Q6DK/UThC7/DoEo/wl/Iv8EfB3/AHkXIS+SQyFfq24hj8SaIb/dxQDP5dMA3+7iAO/2
|
||||
8AD///8A////AP///wD///8A////AP///wD///8A////AP///wDp9OoA1OrWAL/fwgCq1a4AqtStAKnU
|
||||
rQCp06wAqNOsAKjSqwCn0qsAp9GqAKfRqgCm0akAptCpAKXQqAClz6gApM+nAKTOpwCjzqYAo82mALrZ
|
||||
vADR5tIA6PLoAP///wD///8A////AP///wD///8A5vHnAM7j0AC21rgAnsihAJ7IoACdx6AAncefAJ3H
|
||||
nwB2tYEAT6NjACiRRAABgCb1CYMs9RKHMvUaijj1I44+/xqJNf8RhCz/CH8j/wB6GiEfijYhP5tTIV+r
|
||||
byF/vIwAn8yoAL/dxQDf7uIA////AP///wD///8A////AP///wD///8A////AP///wD///8A3+/gAL/f
|
||||
wgCfz6MAgMCFAH+/hAB+voQAfr2DAH29ggB8vIEAfLuBAHu7gAB7un8Aerp+AHm5fgB4uH0AeLd8AHe3
|
||||
ewB2tnsAdrV6AHW0eQCYx5oAutm8ANzs3QD///8A////AP///wD///8A////ANrq2wC21rgAksGVAG6t
|
||||
cgBtrHEAbaxwAGyrcABsq28AUaBeADeWTAAcizoAAoEp9Q6HMvUajDz1JpJF9TOXTv8mkEL/GYk1/wyB
|
||||
Kf8AehwhD4IqIR+KNyEvkkUhP5pSAG+zfQCfzKgAz+XTAP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////ANTq1gCq1a4AgMCFAFarXf9Vqlz/VKlb/1OoWv9Sp1n/UaZY/1ClV/9PpFb/T6RV/06j
|
||||
VP9NolP/TKFS/0ugUf9Kn1D/SZ5P/0idTv9InE33dbR596PNpvfR5tL3////AP///wD///8A////AP//
|
||||
/wDO49AAnsihAG6tcgA+kkP9PZFC/TyQQf07j0D9O49A/S2MO/0fiTb9EYYx/QODLP8Tijj/I5JF/zOZ
|
||||
Uv9DoV//MpdP/yGOP/8QhC//AHsf5AB6HeQAehzkAHka5AB5GSc/mlInf7yMJ7/dxSf///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wDV6tYAq9WuAIHAhgBXrF7/Wa1g/1uuYv9dr2T/X7Bm/16v
|
||||
Zf9dr2T/XK5j/1yuYv9brWH/Wqxg/1mrX/9Zql//Vada/1GjVv9NoFL/SZ1O92ivb/eIwZD3p9Oy98fl
|
||||
0wDH5NMAxuTSAMbj0gDG49EAoc6tAHy6igBYpWYAM5FD/TKQQf0xj0D9MI4//TCOPv0ojT39IIw7/RiL
|
||||
Ov0Qijj/IZFF/zGZUv9BoV//Uqls/0KgXf8xl07/IY4//xGFL+QNgirkCH8l5AR8H+QAehonL5JFJ1+r
|
||||
cCePxJonv93FAM/l0wDf7uIA7/bwAP///wD///8A////AP///wD///8A1erXAKvWrwCBwYcAWK1f/12w
|
||||
ZP9is2n/Z7Zu/2y6c/9ruXL/arly/2q4cf9puHD/aLdv/2i2bv9ntW3/Z7Vt/1+vZf9YqV7/UaRW/0qe
|
||||
T/dbqWX3bbR7936/kfeQy6gAj8qnAI7JpgCNyKUAjcikAHS6iwBbrHMAQp5bACmQQ/0oj0H9J45A/SaN
|
||||
Pv0ljT39I44//SGPQf0gkEP9HpFF/y+ZUv9AoV//UKlt/2Gxev9RqGz/QqBd/zKXT/8jj0DkGoo35BGF
|
||||
LuQIgCXkAHscJx+LOCc/m1QnX6twJ3+8jACfzKgAv93FAN/u4gD///8A////AP///wD///8A////ANXq
|
||||
1wCs1q8AgsKHAFmuYP9hs2j/abhw/3G+eP95w4D/eMOA/3fCf/93wn7/dsJ+/3bBff91wHz/dcB7/3W/
|
||||
e/9qt3D/YK9l/1WnW/9Ln1D3TqRb91GoZvdVrHH3WLF8AFevewBWrnkAVa14AFSsdgBGpWkAOZ5cACyW
|
||||
TwAfj0P9HY5B/RyNP/0bjD39Gow8/R6PQf0jkkb9J5VM/SyYUf89oF//Tqhs/1+wev9wuYj/YbF6/1Kp
|
||||
bP9DoV//NJlR5CeRROQaijfkDYMq5AB8HScPgyonH4s4Jy+SRSc/mlIAb7N9AJ/MqADP5dMA////AP//
|
||||
/wD///8A////AP///wDV69cArNewAIPDiABar2H/ZbZs/3C+d/97xYL/hs2O/4XMjf+FzI3/hMyM/4TM
|
||||
jP+Dy4v/g8uK/4PKif+Dyon/db97/2e1bf9Zq1//TKFS/0GeUf82nFH/K5lR/yGXUf4flU/+HpRN/hyS
|
||||
S/4bkUn+GZBH/hiQRv4Wj0T+FY9D/xOOQf8SjT//EIw9/w+LO/8ZkEP/JJVM/y+aVf86n17/S6ds/12w
|
||||
ev9uuIj/gMGW/3G5if9jsnz/VKpv/0ajYv80mVH/I5BA/xGGL/8AfR/nAHwd5wB7HOcAehrnAHkZKj+a
|
||||
Uip/vIwqv93FKv///wD///8A////AP///wD///8A1uvXAK3XsACEw4kAW7Bi/2W3bf9wvnj/e8aD/4bN
|
||||
jv+Dy4v/f8qI/3zIhP94x4H/e8iD/37Jhf+AyYf/g8qK/3fBff9quHH/Xq9k/1KmWP9Golf/Op9W/y6b
|
||||
VP8jmFP+KJlW/i2bWv4ynV3+OJ9h/jaeX/41nl7+NJ1c/jOdW/8xnFn/MJtY/y+aVv8tmVT/NZ1a/z2h
|
||||
Yf9FpGf/Tahu/1itdv9ks3//b7iI/3q+kf9xuYn/Z7SA/16vd/9Vqm//RKFf/zOYUP8ij0D/Eocw5w2D
|
||||
K+cJgCXnBH0g5wB6GyovkkUqX6twKo/Emyq/3cYAv93GAL/dxgC/3cYA////ANbr2ACt2LEAhMSKAFyx
|
||||
Y/9muG7/cb95/3zGhP+Hzo//gMuJ/3rIg/9zxXz/bcJ2/3LEe/94x4D/fsmF/4TLi/95w4D/brt1/2Oz
|
||||
av9Yq1//S6Zc/z6iWv8xnVj/JZlW/jGeXv49o2f+Sahw/lWtef5UrXf+U6x2/lKsdf5Rq3T/T6py/06q
|
||||
cf9NqW//TKhu/1Gqcv9WrXb/W696/2Gyfv9mtIH/a7aF/3C5if91u43/cLmJ/2y3hf9otID/ZLJ8/1Sq
|
||||
bv9EoV//NJlR/ySRQucbiznnEoYv5wmAJucAex0qH4s5Kj+bVSpfq3Eqf7yNAH+8jQB/vI0Af7yNAP//
|
||||
/wDW69gArtixAIXFigBdsmT/Z7lv/3LAev98x4X/h86Q/37Kh/90xn7/a8F0/2G9a/9qwXP/c8V7/3vI
|
||||
g/+EzIz/e8WC/3G+eP9ot2//XrBl/1CqYv9CpV//NJ9b/yeaWP45omb+TKp0/l+zgv5yu5H+cbuP/nC6
|
||||
jv5vuo3+b7mM/265i/9tuIr/bLeI/2u3h/9tuIn/b7mK/3K6jP90u47/c7qM/3K6i/9wuYr/b7iJ/3C5
|
||||
if9xuYn/crmJ/3O6if9jsnz/VKpv/0WiYf82m1TnKJNG5xuLOecNgyznAHwfKg+DLCofizkqL5JGKj+a
|
||||
VAA/mlQAP5pUAD+aVAD///8A1uzYAK7ZsgCGxosAXrRl/2i6cP9zwXv/fciG/4jPkf97yYX/b8R5/2K+
|
||||
bf9WuWH/Yb5s/23Dd/95yIL/hc2N/33HhP91wXz/bbt0/2W1bP9Wrmf/R6hj/zihX/8pm1v/QqZu/1yy
|
||||
gv92vpX/kMqp/4/JqP+Oyaf/jcim/43Ipf+Mx6T/i8ej/4rGov+KxqH/icWg/4nFn/+IxZ7/iMWe/4DB
|
||||
l/95vZH/cbmL/2q2hf9wuYn/dryO/3y/kv+Cwpf/c7qK/2Wzfv9WrHL/SKVm/zabVP8kkUP/Eocy/wB9
|
||||
IeoAfB/qAHse6gB6HOoAeRswAHkbMAB5GzAAeRsw////ANfs2ACv2rIAh8eMAF+1Zv9pu3H/c8J8/37I
|
||||
h/+Iz5L/f8qI/3XGf/9swnb/Y75t/2nBc/9wxHn/d8eA/37Khv95xoH/dcJ9/3G+eP9tu3T/XLNu/0yr
|
||||
aP87o2L/K5xd/0SncP9es4P/d7+W/5HKqv+Oyaf/i8ek/4jGof+FxJ//hMSe/4PDnf+Dw5z/gsKb/4HC
|
||||
mv+AwZn/gMGY/3/Bl/95vpL/c7uN/224iP9ntYP/bLeH/3G6iv92vI7/e76R/3K6if9ptYL/X7B6/1as
|
||||
cv9EomH/MplR/yCPQP8PhS/qC4Ir6geAJuoDfSLqAHodMAB6HTAAeh0wAHodMP///wDX7NkAr9qzAIfI
|
||||
jQBgtmf/arxy/3TCff9/yIj/ic+T/4PMjP98yYb/dsZ//3DEef9xxHv/c8V8/3XGfv93x3//dsV+/3bE
|
||||
fv91wn3/dcF9/2O4df9Rr27/P6Zm/y2dX/9GqHL/X7SF/3i/mP+Sy6v/jcim/4jGov+Dw53/fsGZ/33A
|
||||
mP98wJf/e7+W/3q/lf95vpT/eL6T/3e9kv93vZH/cruN/265iv9ptob/ZbSC/2m2hf9tuIf/cLmK/3S7
|
||||
jP9wuYn/bbeF/2m1gv9ls3//U6pu/0GhXv8vl07/Ho4+6haJNuoPhS/qB4An6gB8IDAAfCAwAHwgMAB8
|
||||
IDD///8A1+3ZALDbswCIyY4AYbdo/2u9c/91w37/f8mJ/4rPlP+GzZD/g8yM/4DKif99yYX/eciC/3bG
|
||||
f/9zxXz/cMR4/3PEe/92xX//esaC/33Hhf9qvHz/VrJz/0Koav8vnmH/SKlz/2G1hv96wJn/k8ys/4vI
|
||||
pf+ExJ//fcGZ/3a9k/91vZL/dLyR/3O8kP9yu4//cbuO/3C6jf9vuoz/brmL/2u4iP9otob/ZrWD/2Oz
|
||||
gf9ltIL/aLaE/2u3hf9tuIf/b7iI/3G5if9yuor/dLqL/2Kxe/9QqWz/PqBc/y2XTeohkELqFoo36guD
|
||||
LeoAfSIwAH0iMAB9IjAAfSIw////ANft2QCw27QAicmPAGK4av9svXT/dsN//4DJiv+Lz5X/is+U/4rP
|
||||
k/+Kz5L/is+S/4HLiv95yIL/ccR6/2nBcv9wxHn/d8eA/37Kh/+GzY7/cMGD/1u2eP9Gqm3/MZ9j/0mq
|
||||
df9itoj/e8Ga/5TNrf+KyKX/gcOd/3i+lf9vuo7/brmM/225i/9suIr/a7iJ/2m3iP9ot4f/Z7aG/2a2
|
||||
hf9ktYP/Y7SC/2Kzgf9hs4D/YrOA/2S0gf9ltIH/Z7WC/264h/91u43/fL6S/4PCmP9xuYn/X7F6/02o
|
||||
a/88oFz/LZdO/x6PQP8PhzL/AH8l/AB/JfwAfyX8AH8l/P///wDX7doAsNy1AInKkABiuWv/ar1y/3HB
|
||||
ev95xYL/gMmK/4HJiv+Cyov/g8qL/4TLjP9/yYf/eseD/3bGfv9xxHr/c8V8/3bGfv94x4H/esiD/2i+
|
||||
e/9WtHT/RKps/zKgZf9Lq3f/Y7aJ/3zBm/+Uza3/jcmn/4bGof9/wpv/eL6V/3e+lP92vZP/db2S/3S8
|
||||
kf9zvJD/cryP/3G7jv9wu43/bbmL/2u4iP9otob/ZbWE/2i2hf9qt4b/bbiI/2+5if9wuYr/cbqK/3K6
|
||||
i/9zuoz/YrJ9/1Gqb/9AomD/LplS/yOTR/8XjDz/C4Yx/wCAJ/wAgCf8AIAn/ACAJ/z///8A2O3aALHc
|
||||
tQCKy5AAY7ps/2i8cP9tvnX/ccF6/3bDf/94xIH/esWC/3zGhP9+x4b/fceF/3zHhP97x4P/esiC/3fH
|
||||
gP90xn3/ccV7/2/Eef9gu3T/UbJw/0Kpa/80oWf/TKx4/2S3iv98wpz/lc2u/5DLqv+LyKb/hsah/4HD
|
||||
nf+Aw5z/f8Kb/37Cmv9+wZn/fcGY/3zBmP97wJf/e8CW/3a+kv9yvI//brmL/2q3iP9uuYr/cbqM/3W8
|
||||
j/94vpH/c7uN/264iP9ptoT/ZLOA/1Orcv9Do2T/MptW/yGTSP8ZjkD/EYo4/wiFMP8AgSn8AIEp/ACB
|
||||
KfwAgSn8////ANju2gCx3bYAisyRAGS7bf9mu27/aLxw/2q9cv9svXT/b793/3LAev91wn3/eMOA/3rF
|
||||
gv99x4X/f8mI/4LLiv96yIP/c8V8/2vCdf9jv27/WLht/0ywa/9BqWr/NaJp/02sev9lt4z/fcKd/5XN
|
||||
r/+SzKz/kMuq/43Jp/+KyKX/icek/4nHo/+IxqL/h8ah/4fGof+GxqD/hsWf/4XFn/9/wpr/er+V/3S8
|
||||
kP9vuYz/c7uP/3i+kv98wJX/gcKZ/3a8j/9rt4b/YLF9/1WsdP9FpGb/NJxZ/ySVTP8UjT7/D4o5/wqH
|
||||
NP8FhC//AIIr/ACCK/wAgiv8AIIr/P///wDY7toAst22AIvMkgBlvG7/ZLtt/2O6bP9iuWv/Yrhq/2a6
|
||||
bv9qvHL/br52/3LAev94w4D/fseG/4TLjP+Lz5P/fsqH/3HFe/9kwG//WLtk/0+1Zf9Hr2f/P6lp/zej
|
||||
a/9OrXz/ZriN/37Dnv+WzrD/lc2v/5XNrv+Uza3/lM2t/5PMrP+SzKv/kcuq/5HLqv+Qy6n/kMup/5DL
|
||||
qP+Qy6j/icei/4LDnP97v5b/dLyQ/3m+lP9/wZj/hMSc/4rHof95vpL/aLaE/1etdv9GpWj/Np1b/yaW
|
||||
Tv8WjkH/B4c1/wWGM/8EhTH/AoQv/wGDLQ8Bgy0PAYMtDwGDLQ////8A4vLjAMXlyACo2a0Ai8yS/4rM
|
||||
kf+Ky5D/icqQ/4nJj/+Cxon/e8SC/3XBfP9uvnb/dcJ9/3zGhf+Ey4z/i8+T/37KiP9yxXz/ZcBw/1m7
|
||||
Zf9RtWb/SK9o/0Cpav84o2z/Sat4/1uzhf9su5L/fsOf/33Cnv99wp3/fMKc/3vCm/96wZr/esCZ/3nA
|
||||
mP94v5f/esCZ/3zBmv9/wpv/gcSd/3/Cm/9+wZn/fMCY/3u/lv97v5b/e7+W/3u/lf97wJX/a7eI/1qv
|
||||
ev9Kp2z/Op9f/zCaVf8nlEv/HY9C/xSJOP8fj0L/KpVM/zWbV/9AomEPQKJhD0CiYQ9AomEP////AOv2
|
||||
7ADY7toAxeXIALLdtv+x3bb/sdy1/7Dctf+w27T/n9Ok/43Mk/98xIP/arxy/3LBe/97xoP/g8uM/4zQ
|
||||
lP9/yon/c8V9/2bAcv9au2b/UrVo/0qvaf9CqWv/OqRt/0Wpdf9Qrn3/W7OG/2a4jv9luI3/ZbeM/2S3
|
||||
i/9jt4r/YraI/2G1h/9gtIb/YLSF/2S2iP9puIv/bbqO/3K9kv92vpT/esCX/37Bmv+Cw53/fcCY/3e+
|
||||
k/9yu4//bLmK/12xff9NqXD/PqFj/y+aVv8rlk//KJNJ/ySPQv8hjDv/OZlS/1CmaP9os3//gMGWD4DB
|
||||
lg+AwZYPgMGWD////wD1+vUA6/bsAOLy4wDY7tr/2O7a/9jt2v/X7dr/1+3Z/7vgv/+f1KT/g8eJ/2a6
|
||||
bv9wwHj/ecWC/4PLi/+M0JX/gMuJ/3TGfv9nwHP/W7tn/1O1af9LsGr/Q6ps/zukbv9ApnH/Ral1/0mr
|
||||
ef9OrX3/Ta18/02se/9MrHn/S6x4/0qrd/9JqnX/SKl0/0eoc/9Oq3j/Va99/1yygv9jtof/bbqO/3a+
|
||||
lf+Awpz/icej/37Bmv9zvJH/aLeI/12yf/9PqnL/QKNm/zKbWv8jlE3/JpNK/ymRRv8rkEL/Lo8+/1Kj
|
||||
Yf93t4T/m8un/7/gyg+/4MoPv+DKD7/gyg////8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wDY7doAsdy1AIrKkABjuWv/bb91/3jFgP+Cy4v/jdGW/4HLiv91xn//acF0/128af9Vtmr/TbBs/0Wq
|
||||
bf89pW//O6Ru/zqkbv84o23/N6Nt/zaia/81omr/NKFo/zOhZ/8yoGX/MZ9k/zCeYv8vnWH/OKFn/0Km
|
||||
bv9LqnX/Va98/2S2h/9zvZP/gsSe/5HLqv+Aw5z/cLuP/1+zgf9Pq3T/QaRo/zOdXP8lllD/GI9F/yGP
|
||||
RP8qkEP/M5FC/zySQv9srXH/ncig/87jz/////8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A2O3aALHctQCKy5AAY7ps/26/dv94xYH/g8uM/43Rlv+BzIv/dceA/2nB
|
||||
df9dvGr/V7hq/1Gza/9Lr2z/Ratt/0Oqbf9Cqmz/Qals/0Cpa/8/qGr/Pqhp/z2nZ/88p2b/O6Zk/zql
|
||||
Y/85pWL/OKRh/z2mZv9Cp2v/R6lw/0yrdf9asYD/Z7iK/3W+lf+DxZ//c72T/2S1hv9UrXn/RaZs/0Ck
|
||||
Zv87oWH/Np9b/zGdVf80mlD/N5hM/zqVR/89k0P/ba5y/57Jof/O5ND/////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////ANju2gCx3bYAi8yRAGS7bf9vwHf/ecaC/4TL
|
||||
jP+O0Zf/gsyM/3bHgf9qwnb/Xr1r/1q6a/9Wt2v/UbRs/02xbP9MsGz/S7Br/0qva/9Jr2r/SK9p/0eu
|
||||
aP9Grmb/Rq5l/0WtZP9ErGP/Q6xi/0KrYf9CqmT/Q6lo/0Ooa/9Ep2//UK15/1yzgv9puYz/db+V/2e3
|
||||
if9YsH3/Sqhx/zuhZf8/pGX/Q6Zl/0apZf9Kq2X/R6Vd/0SfVP9BmUz/PpRE/26ucv+eyaH/zuTQ////
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wDY7toAst22AIvM
|
||||
kgBlvG7/b8F4/3rGg/+EzI3/j9GY/4PMjf93yIL/a8N3/1++bP9cvGv/Wrpr/1i4a/9Vt2v/VLZq/1O2
|
||||
av9Stmn/UrVp/1G1aP9QtWf/ULRl/0+0ZP9OtGP/TbNi/02zYf9MsmH/SK9j/0OrZf8/p2f/O6Np/0ap
|
||||
cf9Rrnr/XLOC/2e5i/9asYD/TKp0/z+jaf8xnF7/PqRk/0qrav9Xsm//Y7l1/1qwaf9Rp13/SJ5R/z+V
|
||||
Rf9vr3P/n8qi/8/k0P////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A2O7bALLetwCMzZMAZr1v/3DCef97x4T/hcyO/5DSmf+EzY7/eMiD/2zDeP9gv23/X75s/1++
|
||||
a/9evWr/Xr1q/128af9cvGn/W7xo/1u8aP9au2f/Wrtm/1m7Zf9Zu2T/WLpj/1e6Yv9WumH/Vrph/02z
|
||||
Yf9ErWL/O6Zi/zOgY/88pGr/Rqly/1Cuef9as4H/Tax2/0GlbP80nmH/KJhX/z2kYv9SsG7/Z7x6/33I
|
||||
hv9uu3b/X69m/1CiVv9Blkb/cLB0/6DKov/P5ND/////AP///wD///8A////AP///wD2+/YA7fjuAOT0
|
||||
5gDb8d0A2/DdANrw3QDa8N0A2vDdAL7kwgCj2KgAh8yOAGvAdP90xH3/fsmH/4fNkP+Q0pn/hM2O/3nJ
|
||||
hP9txHn/Yb9u/2C/bf9gvmz/X75s/1+9a/9evWr/Xb1q/1y8af9cvGn/W7xo/1u8Z/9au2b/Wrtl/1m7
|
||||
ZP9YumP/V7pj/1e6Yv9OtGP/Ra1j/z2nZP80oWX/O6Rq/0Knb/9JqnT/T656/0ipcP9ApGf/OJ9e/zCa
|
||||
Vf9Ao17/UKtm/2C0b/9vvXj/ZLNr/1iqX/9NoFP/QpZH/3Gwdf+gyqP/z+TR/////wD///8A////AP//
|
||||
/wD///8A7fjuANvx3QDJ6s0At+O8ALfivAC24rsAtuG7ALbhuwCk2aoAk9KaAILKigBxw3r/eceC/4HL
|
||||
iv+Jz5L/kdOa/4XOj/96yYX/bsR6/2LAb/9hv27/Yb9u/2C+bf9gvmz/X75r/169a/9dvWr/Xb1q/1y8
|
||||
af9cvGj/W7xn/1u8Zv9au2X/Wbtl/1i6ZP9YumP/T7Rk/0euZf8+qGb/NqJn/zqkav8+pW3/Qadw/0Wp
|
||||
c/9CpWv/P6Jj/zyfXP85nFT/Q6JZ/06nX/9YrWT/YrJq/1qrYf9SpVn/Sp5Q/0OXSP9ysXX/ocuj/9Dl
|
||||
0f////8A////AP///wD///8A////AOT05gDJ6s0Art+0AJPVmwCT1JoAktOaAJLTmQCR0pkAis+SAITM
|
||||
jAB9yYUAdsZ//33Jhv+EzI3/i9CU/5LTm/+GzpD/e8qG/2/Fe/9jwHD/Y8Bw/2K/b/9hv27/Yb9t/2C+
|
||||
bf9fvmz/Xr1r/169a/9dvWr/Xb1p/1y8aP9cvGf/W7xn/1q7Zv9Zu2X/Wbpk/1C1Zv9Ir2f/QKlo/zij
|
||||
af85o2r/OaNq/zqja/87pGz/PaJl/z6hX/9AoFn/Qp5T/0ehVf9Lo1f/UKVZ/1WnXP9Qo1f/TKBS/0ic
|
||||
Tf9EmEn/crF2/6HLpP/Q5dH/////AP///wD///8A////AP///wDb8d0At+O8AJPVmwBwx3r/b8Z5/27F
|
||||
eP9txHf/bcR3/3DFev90xn7/eMeB/3zJhf+By4r/h86Q/43Rlv+T1Jz/h8+R/3zKh/9wxXz/ZcFy/2TA
|
||||
cf9jwHD/YsBv/2LAb/9hv27/YL9t/1++bP9fvmz/Xr1r/169av9dvWn/Xb1p/1y8aP9bvGf/Wrtm/1q7
|
||||
Zv9StWf/SrBp/0Kqav86pWz/N6Nq/zWiaP8zoGb/MZ9l/zefYP8+oFv/RKBW/0uhUv9KoFH/SZ9Q/0ie
|
||||
T/9InU7/R5xN/0abTP9Fmkv/RZlK/3Oyd/+izKT/0OXR/////wD///8A////AP///wD///8A2/HdALfj
|
||||
vACU1ZsAcMh6/3LIfP90yH7/dsiA/3jJgv96yYT/fcqH/4DLif+CzIz/hc2O/4fPkf+K0JT/jNGW/4LN
|
||||
jf95yYX/b8V8/2bBc/9lwXL/ZMFx/2PAcP9iwHD/YsBv/2G/bv9gv23/YL5t/2C+bP9fvmz/X75r/1++
|
||||
a/9evWr/Xr1q/128af9dvGj/Wbls/1W1b/9RsnL/Tq92/0mscf9DqGz/PqVn/zmhYv9Jp2n/WK1v/2iy
|
||||
dv94uH3/d7d8/3a3e/92tnv/dbV6/3W0ef90tHj/dLN4/3Oyd/+WxZn/udi7/9zr3f////8A////AP//
|
||||
/wD///8A////ANvx3gC45L0AlNacAHHJe/91yn//esuE/37MiP+Dzo3/hM6O/4bPkP+Hz5H/idCT/4jP
|
||||
kv+Hz5L/hs+R/4bPkf9+zIr/dsiD/27Fe/9nwnT/ZsFz/2XBcv9kwXH/Y8Fx/2PAcP9iwG//Yr9v/2G/
|
||||
bv9hv27/Yb9u/2G/bv9iv27/Yb9t/2G+bP9gvmz/YL1r/2C8cP9hu3X/Ybp6/2K6gP9atHf/Uq9v/0qp
|
||||
Z/9CpF//Wq9x/3O6hP+MxZb/pdCo/6TPqP+kz6f/o86n/6POpv+jzab/os2l/6LMpf+izKT/udi7/9Dl
|
||||
0f/n8uj/////AP///wD///8A////AP///wDb8d4AuOS9AJXXnAByynz/ecyD/4DOiv+H0JH/jtOY/47T
|
||||
mP+P05n/j9OZ/5DTmv+M0Zb/h9CT/4POj/9/zYz/ecqG/3PHgf9txXv/aMJ1/2fCdP9mwnP/ZcFy/2TB
|
||||
cv9jwXH/Y8Bw/2PAcP9iwG//Y8Bv/2PAcP9kwHD/ZMBw/2TAb/9jv2//Y79u/2O+bv9nwHX/bMF8/3HD
|
||||
g/92xIr/a71+/2C1c/9Vrmj/SqZc/2y2ev+Ox5j/sNe2/9Ln0//R59P/0efT/9Hm0//R5tL/0ebS/9Dm
|
||||
0v/Q5dL/0OXR/9zr3f/n8uj/8/jz/////wD///8A////AP///wD///8A3PLeALnlvgCW2J0Ac8t9/3zO
|
||||
hv+G0ZD/j9SZ/5nYo/+Y16L/mNei/5fXof+X16H/j9Sa/4jRlP+Azo3/ecuH/3XJg/9xx3//bcV7/2nD
|
||||
d/9ownb/Z8J1/2bCdP9lwnP/ZMFy/2TBcv9kwXH/ZMFx/2TBcf9lwXL/ZsFy/2fCc/9mwXL/ZsFy/2bA
|
||||
cf9mwHH/b8N5/3jHgv+By4v/i8+U/33Fhf9vvHf/YbJo/1OpWv9+voP/qdSs/9Tp1f////8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANzy
|
||||
3gC55b4AltieAHPLff99zof/htKQ/5DVmv+Z2KP/mdij/5jXov+Y16L/l9eh/5HUnP+M0pf/htCS/4DO
|
||||
jf99zIr/esuH/3fJhP90yIH/c8eA/3LHf/9xx37/ccZ9/3DGff9wxnz/cMZ8/2/Fe/9wxXv/cMV8/3DF
|
||||
fP9xxXz/cMV7/3DEe/9vxHr/b8R6/3bGgP99yYf/g8yN/4rPlP99xYX/b7x3/2Gzaf9Uqlv/fr+E/6nU
|
||||
rf/U6db/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wDc8t4AueW+AJfZngB0zH7/fc+I/4fSkf+Q1Zv/mtik/5nYpP+Z2KP/mNej/5jX
|
||||
ov+U1Z//kNSb/4zSmP+I0ZT/htCS/4TPkP+Bzo7/f82M/37Mi/9+zIr/fcuJ/33LiP98y4j/fMuH/3vK
|
||||
h/97yob/e8qG/3vKhv97yYX/e8mF/3rJhP96yIT/eciD/3nIg/99yYf/gcuL/4bNj/+Kz5T/fcaG/2+9
|
||||
eP9itGr/Vatc/3/AhP+q1a3/1OrW/////wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A3PLfALrmvwCX2Z8Adc1//37QiP+H05L/kdWb/5rY
|
||||
pf+a2KT/mdik/5nYo/+Y16P/ltah/5TVn/+S1J3/kNSb/47Tmv+N05j/jNKX/4rSlv+K0ZX/idGU/4nQ
|
||||
lP+J0JP/iNCS/4jPkv+Hz5H/h8+R/4bOkP+GzpD/hc2P/4XNjv+EzI7/g8yN/4PMjP+CzIz/hMyO/4bN
|
||||
kP+IzpL/is+U/33Ghv9wvXj/Y7Rq/1asXf+AwIX/qtWu/9Tq1v////8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANzy3wC65r8AmNqfAHbO
|
||||
gP9/0In/iNOT/5HWnP+b2ab/mtil/5rYpf+Z2KT/mdik/5jXo/+Y16P/mNei/5jXov+X16H/l9eh/5bX
|
||||
of+W16H/ldag/5XWn/+V1Z7/ldWe/5TUnf+U1J3/k9Sc/5PUnP+S05v/kdKa/5DRmf+P0Zj/jtCX/43Q
|
||||
lv+M0JX/jNCV/4vPlP+Lz5T/is+U/4rPlP99xob/cL55/2O1a/9XrV7/gcGG/6vWrv/V6tb/////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wDc8t8Auua/AJjaoAB2zoD/fdCH/4TSjv+L1JX/kdac/5HVnP+Q1Zv/kNWb/4/Umv+P1Jn/j9SZ/47T
|
||||
mP+O05j/jdOX/43Tl/+M0pf/jNKW/47TmP+Q1Jr/k9Sc/5XVnv+U1Z7/lNSd/5PUnP+T1Jz/j9KY/4vQ
|
||||
lP+IzZH/hMuN/4PLjP+Dyov/gsqL/4HKiv+AyYn/gMmJ/3/Iif9/yIj/dcF+/2u7dP9htGn/WK5f/4HC
|
||||
h/+r1q//1erX/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A3fPfALvnwACZ26AAd8+B/3vQhv+A0Yr/hNKP/4jTk/+I05L/h9KS/4fS
|
||||
kf+G0ZH/htGQ/4XQj/+F0I//hNCO/4TPjv+Dz43/g86N/4LOjP+H0JH/jNKW/5HUmv+W1p//ldWe/5TV
|
||||
nv+T1J3/k9Sc/4zRlv+GzY//gMqJ/3rGg/95xYL/eMWB/3fEgP93xH//dsN//3XDfv91wn7/dMJ9/229
|
||||
dv9muG//X7Nn/1mvYP+Cw4j/rNev/9Xr1/////8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AN3z3wC758AAmduhAHjPgv96z4T/e9CG/33Q
|
||||
iP9/0Ir/ftCJ/37PiP99zoj/fc6H/3zNhv98zYb/e8yF/3rMhP96y4T/ecuD/3nKgv94yoL/gM2J/4fQ
|
||||
kf+P05j/ltag/5XWn/+U1Z7/k9Wd/5PUnP+Kz5P/gcuK/3jGgf9vwXj/bsB3/26/dv9tvnX/bL50/2u9
|
||||
dP9rvHP/arxy/2m7cv9luG7/YbVq/12yZf9asGH/g8OJ/6zXsP/V69f/////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wDd8+AAvOfBAJrb
|
||||
ogB50IP/eM+C/3fPgv92zoH/ds6B/3XNgP91zH//dMt+/3TLfv9zyn3/csp8/3HJe/9xyXv/cMh6/3DH
|
||||
ef9vxnj/b8Z4/nnKgv6Dzoz+jdKW/pfXof+W1qD/ldaf/5TVnv+T1Z3/h86R/3zIhf9wwnn/Zbxu8GS7
|
||||
bfBjumzwYrlr8GK4au1ht2ntYLZo7V+1Z+1ftWfvXrRm712zZe9csmTvW7Fj74TEiu+t2LHv1uvY7///
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A5fbnAMzt0ACz5LkAmtui/5nbof+Z26H/mNqg/5jaoP+X2Z//l9mf/5fYnv+W2J7/lted/5XX
|
||||
nf+V1pz/lNac/4vSk/+Czor/eMqB/2/Gef55yoP+g8+N/o3Tl/6X16H/ldaf/5TVnv+S1Zz/kdSb/4bO
|
||||
kP97yIX/cMJ6/2a9b/BuwHfwd8N/8IDGh/CJyY/tiMmO7YjIju2HyI3th8eN74bGjO+FxovvhMWK74TE
|
||||
iu+i06fvweHE7+Dw4e////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AO757wDd8+AAzO3QALznwf+758D/u+fA/7rmwP+65sD/uua//7rl
|
||||
v/+55b7/ueW+/7nkvv+45L3/uOS9/7jkvf+m3Kz/lNWb/4LOiv9wx3r+esuD/oPPjf6N05f+l9eh/5XW
|
||||
n/+T1Z3/kdSb/5DTmv+Fzo//e8iF/3HDev9nvnDwecWB8IvMkvCe1KPwsNu07bDbtO2v2rPtr9qz7a/a
|
||||
s++u2bLvrtmy763Yse+t2LHvweHE79br2O/q9evv////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD2/PcA7vnvAOX25wDd8+D/3fPf/93z
|
||||
3//c8t//3PLf/9zy3//c8t//3PLe/9zy3v/c8d7/2/He/9vx3v/b8d7/wOfF/6bcrP+L0pP/cch7/nrM
|
||||
hP6E0I7+jdOY/pfXof+U1p//ktWd/5DUmv+O0pj/hM2O/3vIhP9xw3r/aL9x8IPKi/Cf1qXwu+G/8Nft
|
||||
2e3X7dnt1+zZ7dfs2e3X7Nnv1uzY79bs2O/W69jv1uvY7+Dw4e/q9evv9Pr17////wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANvx
|
||||
3gC45L0AldacAHLJfPR7zIX0hNCP9I3UmPSX2KL/lNaf/5LVnP+P05n/jdKX/4TNjf97yYT/csR7/2nA
|
||||
cr6Oz5W+tN+4vtnv277///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////APb8
|
||||
9wDu+e8A5fbnAN3z3wDC6McAqN6uAI3UlgBzyn30fM2G9IXRkPSP1Jn0mNij/5bXoP+U1Z7/kdSc/4/T
|
||||
mf+GzpD/fMqG/3PFfP9qwXO+j9CWvrTgub7Z79y+////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wDu+e8A3fPfAMzt0AC758AAqeCwAJjZnwCG0o8Adct/9H7OiPSH0ZH0kNWb9JnY
|
||||
pP+X16L/ltag/5TVnv+S1Zz/iNCS/37LiP90xn7/a8J0vpDRlr614Lm+2u/cvv///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A5fbnAMzt0ACy5LgAmduhAJDXmQCH05AAf8+IAHbM
|
||||
gPR/z4n0iNKT9JHVnPSa2KX/mdik/5jXov+W16D/ldaf/4rRlP+AzIr/dsd//2zDdb6Q0pe+teG6vtrw
|
||||
3L7///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AN3z3wC758AAmduhAHfP
|
||||
ghJ3zoISd86CEnfNghJ4zYL/gdCL/4rTlP+T1p3/nNmn/5vYpf+a2KT/mdij/5jYov+N05f/gs6M/3fJ
|
||||
gf9txHbskdKY7Lbhuuza8Nzs////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wDl9ucAzO3QALLkuACZ26ESkNeZEojUkRKA0IkSeM2C/37PiP+F0Y//i9OW/5LWnf+R1Zz/kNWb/4/U
|
||||
mf+O1Jj/htCQ/37Mh/92yH//bcR37JLTmey24bvs2vDd7P///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A7vnvAN3z3wDM7dAAu+fAEqrgsBKZ2qESiNSREnjOgv98z4b/gNCK/4TR
|
||||
j/+I05P/h9KS/4fSkf+G0ZD/hdGP/3/Oif96y4P/dMh9/27FeOyS05nstuK77Nrw3ez///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////APb89wDu+e8A5fbnAN3z3xLD6cgSquCwEpHX
|
||||
mRJ4zoL/ec6D/3vPhf99z4f/ftCJ/37PiP99zoj/fM6H/3zNhv95y4L/dcl//3LIfP9vxnnsk9Sa7Lfi
|
||||
vOzb8N3s////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A3fPfALvnwACZ26EAeM+C1HfOgdR2zoHUdc2A1HXNgP90zH//dMt+/3PKff9zyn3+csl8/nHI
|
||||
e/5wx3r+cMd6tJPVm7S347y02/HdtP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AOX25wDM7dAAs+S4AJnbodSZ2qDUmNqg1JjZoNSX2Z//l9if/5bY
|
||||
nv+W157/lted/pXWnP6U1pz+lNWb/pPVm7Su37S0yerNtOT05rT///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wDu+e8A3fPfAMzt0AC758DUu+bA1Lrm
|
||||
wNS65r/Uuua//7nlv/+55b7/ueS+/7nkvv645L3+uOO9/rfjvP6347y0yerNtNvx3bTt+O60////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A9vz3AO75
|
||||
7wDl9ucA3fPf1N3y39Tc8t/U3PLf1Nzy3//c8t//3PLe/9zx3v/c8d7+2/He/tvx3v7b8d3+2/HdtOT0
|
||||
5rTt+O609vv2tP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A//////8AD////////wAP////////AA////////8AD//wAAD/AAAA//AAAP8AAAD/8AAA/wAA
|
||||
AP/wAAD/AAAA//AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAADwAAAAAAAAAPAA
|
||||
AAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAA
|
||||
AADwAAAAAAAAAPAAAAAAAAAA//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//w
|
||||
AAAAAAAP//AAAAAAAA//8AAAAAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAA
|
||||
///wAAAAAAD///AAAAAAAP//8AAAAAAA///wAAAAAAD///AAAAAAAP//8AAAAAAA///wAAAAAAD///AA
|
||||
AAAAAP//8AAAAAAA///wAAAAAAD///AAAAAAAP/////wAA////////AAD///////8AAP///////wAA//
|
||||
/////wAAD///////AAAP//////8AAA///////wAAD///////8AAP///////wAA////////AAD///////
|
||||
8AAP//////////////////////////////////////////////8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
@ -150,17 +150,17 @@ namespace Tinke
|
||||
// Control events
|
||||
private void txtBanReserved_Leave(object sender, EventArgs e)
|
||||
{
|
||||
banner.reserved = StringToBytes(txtBanReserved.Text, 28);
|
||||
banner.reserved = Tools.Helper.StringToBytes(txtBanReserved.Text, 28);
|
||||
txtBanReserved.Text = BitConverter.ToString(banner.reserved);
|
||||
}
|
||||
private void txtReserved_Leave(object sender, EventArgs e)
|
||||
{
|
||||
header.reserved = StringToBytes(txtReserved.Text, 9);
|
||||
header.reserved = Tools.Helper.StringToBytes(txtReserved.Text, 9);
|
||||
txtReserved.Text = BitConverter.ToString(header.reserved);
|
||||
}
|
||||
private void txtReserved2_Leave(object sender, EventArgs e)
|
||||
{
|
||||
header.reserved2 = StringToBytes(txtReserved2.Text, 56);
|
||||
header.reserved2 = Tools.Helper.StringToBytes(txtReserved2.Text, 56);
|
||||
txtReserved2.Text = BitConverter.ToString(header.reserved2);
|
||||
}
|
||||
|
||||
@ -337,18 +337,6 @@ namespace Tinke
|
||||
}
|
||||
|
||||
|
||||
// Helper methods
|
||||
private byte[] StringToBytes(string text, int num_bytes)
|
||||
{
|
||||
string hexText = text.Replace("-", "");
|
||||
hexText = hexText.PadRight(num_bytes * 2, '0');
|
||||
|
||||
List<Byte> hex = new List<byte>();
|
||||
for (int i = 0; i < hexText.Length; i += 2)
|
||||
hex.Add(Convert.ToByte(hexText.Substring(i, 2), 16));
|
||||
|
||||
return hex.ToArray();
|
||||
}
|
||||
byte[] nintendoLogo = {
|
||||
0x24, 0xFF, 0xAE, 0x51, 0x69, 0x9A, 0xA2, 0x21, 0x3D, 0x84, 0x82, 0x0A,
|
||||
0x84, 0xE4, 0x09, 0xAD, 0x11, 0x24, 0x8B, 0x98, 0xC0, 0x81, 0x7F, 0x21,
|
||||
|
@ -153,6 +153,7 @@ namespace Tinke
|
||||
Console.WriteLine(" " + xml.Element("S21").Value + ": {0}", ncer.cebk.banks[i].cells[j].obj2.index_palette.ToString());
|
||||
Console.WriteLine(" " + xml.Element("S22").Value + ": {0}", (obj2 & 0x03FF).ToString());
|
||||
Console.WriteLine(" " + xml.Element("S23").Value + ": {0}", ncer.cebk.banks[i].cells[j].obj2.tileOffset.ToString());
|
||||
Console.WriteLine(" " + "Object priority" + ": {0}", ncer.cebk.banks[i].cells[j].obj2.priority.ToString());
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -506,8 +507,15 @@ namespace Tinke
|
||||
return 1;
|
||||
else if (c1.obj2.priority > c2.obj2.priority)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
else // Same priority
|
||||
{
|
||||
if (c1.num_cell < c2.num_cell)
|
||||
return 1;
|
||||
else if (c1.num_cell > c2.num_cell)
|
||||
return -1;
|
||||
else // Same cell
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
private static Cell Get_LastCell(Bank bank)
|
||||
{
|
||||
|
@ -385,6 +385,7 @@ namespace Tinke.Nitro
|
||||
|
||||
diccionario.Add("13", "Electronic Arts Japan");
|
||||
diccionario.Add("18", "Hudson Entertainment");
|
||||
diccionario.Add("20", "Destination Software");
|
||||
diccionario.Add("36", "Codemasters");
|
||||
diccionario.Add("41", "Ubisoft");
|
||||
diccionario.Add("4F", "Eidos");
|
||||
@ -396,20 +397,25 @@ namespace Tinke.Nitro
|
||||
diccionario.Add("5G", "Majesco Entertainment");
|
||||
diccionario.Add("64", "LucasArts Entertainment");
|
||||
diccionario.Add("69", "Electronic Arts Inc.");
|
||||
diccionario.Add("6K", "UFO Interactive");
|
||||
diccionario.Add("6V", "JoWooD Entertainment");
|
||||
diccionario.Add("70", "Atari");
|
||||
diccionario.Add("78", "THQ");
|
||||
diccionario.Add("7D", "Vivendi Universal Games");
|
||||
diccionario.Add("7J", "Zoo Digital Publishing Ltd");
|
||||
diccionario.Add("7N", "Empire Interactive");
|
||||
diccionario.Add("7U", "Ignition Entertainment");
|
||||
diccionario.Add("7V", "Summitsoft Entertainment");
|
||||
diccionario.Add("8J", "General Entertainment");
|
||||
diccionario.Add("8P", "SEGA");
|
||||
diccionario.Add("99", "Rising Star Games");
|
||||
diccionario.Add("A4", "Konami Digital Entertainment");
|
||||
diccionario.Add("AF", "Namco");
|
||||
diccionario.Add("EB", "Atlus USA");
|
||||
diccionario.Add("B2", "Bandai");
|
||||
diccionario.Add("EB", "Atlus");
|
||||
diccionario.Add("FH", "Foreign Media Games");
|
||||
diccionario.Add("FK", "The Game Factory");
|
||||
diccionario.Add("FP", "Mastiff");
|
||||
diccionario.Add("FR", "dtp young");
|
||||
diccionario.Add("G9", "D3Publisher of America");
|
||||
diccionario.Add("GD", "SQUARE ENIX");
|
||||
|
9
Tinke/Properties/Resources.Designer.cs
generated
9
Tinke/Properties/Resources.Designer.cs
generated
@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Este código fue generado por una herramienta.
|
||||
// Versión de runtime:4.0.30319.237
|
||||
// Versión de runtime:4.0.30319.239
|
||||
//
|
||||
// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
|
||||
// se vuelve a generar el código.
|
||||
@ -137,6 +137,13 @@ namespace Tinke.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap plugin_go {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("plugin_go", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap zoom {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("zoom", resourceCulture);
|
||||
|
@ -118,8 +118,11 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="picture_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\picture_edit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="compress" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\compress.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="accept" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\accept.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@ -139,8 +142,8 @@
|
||||
<data name="calculator" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\calculator.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="picture_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\picture_edit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="picture_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\picture_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@ -152,7 +155,7 @@
|
||||
<value>..\Resources\zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="compress" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\compress.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="plugin_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\plugin_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
BIN
Tinke/Resources/plugin_go.png
Normal file
BIN
Tinke/Resources/plugin_go.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 694 B |
27
Tinke/Sistema.Designer.cs
generated
27
Tinke/Sistema.Designer.cs
generated
@ -101,6 +101,7 @@ namespace Tinke
|
||||
this.btnImport = new System.Windows.Forms.Button();
|
||||
this.btnSaveROM = new System.Windows.Forms.Button();
|
||||
this.btnPack = new System.Windows.Forms.Button();
|
||||
this.callPluginToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.toolStrip2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
@ -337,7 +338,7 @@ namespace Tinke
|
||||
this.toolStrip2.Name = "toolStrip2";
|
||||
this.toolStrip2.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||
this.toolStrip2.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.toolStrip2.Size = new System.Drawing.Size(55, 46);
|
||||
this.toolStrip2.Size = new System.Drawing.Size(55, 65);
|
||||
this.toolStrip2.TabIndex = 11;
|
||||
this.toolStrip2.Text = "toolStrip2";
|
||||
//
|
||||
@ -415,7 +416,8 @@ namespace Tinke
|
||||
this.toolStripMenuItem3,
|
||||
this.toolStripMenuComprimido,
|
||||
this.toolStripAbrirFat,
|
||||
this.toolStripAbrirTexto});
|
||||
this.toolStripAbrirTexto,
|
||||
this.callPluginToolStripMenuItem});
|
||||
this.toolStripOpenAs.Image = global::Tinke.Properties.Resources.zoom;
|
||||
this.toolStripOpenAs.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripOpenAs.Name = "toolStripOpenAs";
|
||||
@ -426,7 +428,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem1.Image")));
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripMenuItem1.Text = "S17";
|
||||
this.toolStripMenuItem1.Click += new System.EventHandler(this.toolAbrirComoItemPaleta_Click);
|
||||
//
|
||||
@ -434,7 +436,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripMenuItem2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem2.Image")));
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripMenuItem2.Text = "S18";
|
||||
this.toolStripMenuItem2.Click += new System.EventHandler(this.toolAbrirComoItemTile_Click);
|
||||
//
|
||||
@ -442,7 +444,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripMenuItem3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem3.Image")));
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripMenuItem3.Text = "S19";
|
||||
this.toolStripMenuItem3.Click += new System.EventHandler(this.toolAbrirComoItemScreen_Click);
|
||||
//
|
||||
@ -450,7 +452,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripMenuComprimido.Image = global::Tinke.Properties.Resources.compress;
|
||||
this.toolStripMenuComprimido.Name = "toolStripMenuComprimido";
|
||||
this.toolStripMenuComprimido.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripMenuComprimido.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripMenuComprimido.Text = "S2A";
|
||||
this.toolStripMenuComprimido.Click += new System.EventHandler(this.s2AToolStripMenuItem_Click);
|
||||
//
|
||||
@ -458,7 +460,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripAbrirFat.Image = global::Tinke.Properties.Resources.package;
|
||||
this.toolStripAbrirFat.Name = "toolStripAbrirFat";
|
||||
this.toolStripAbrirFat.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripAbrirFat.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripAbrirFat.Text = "S3D";
|
||||
this.toolStripAbrirFat.Click += new System.EventHandler(this.toolStripAbrirFat_Click);
|
||||
//
|
||||
@ -466,7 +468,7 @@ namespace Tinke
|
||||
//
|
||||
this.toolStripAbrirTexto.Image = global::Tinke.Properties.Resources.page_white_text;
|
||||
this.toolStripAbrirTexto.Name = "toolStripAbrirTexto";
|
||||
this.toolStripAbrirTexto.Size = new System.Drawing.Size(94, 22);
|
||||
this.toolStripAbrirTexto.Size = new System.Drawing.Size(152, 22);
|
||||
this.toolStripAbrirTexto.Text = "S26";
|
||||
this.toolStripAbrirTexto.Click += new System.EventHandler(this.toolStripAbrirTexto_Click);
|
||||
//
|
||||
@ -571,6 +573,14 @@ namespace Tinke
|
||||
this.btnPack.UseVisualStyleBackColor = true;
|
||||
this.btnPack.Click += new System.EventHandler(this.btnPack_Click);
|
||||
//
|
||||
// callPluginToolStripMenuItem
|
||||
//
|
||||
this.callPluginToolStripMenuItem.Image = global::Tinke.Properties.Resources.plugin_go;
|
||||
this.callPluginToolStripMenuItem.Name = "callPluginToolStripMenuItem";
|
||||
this.callPluginToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.callPluginToolStripMenuItem.Text = "Call plugin";
|
||||
this.callPluginToolStripMenuItem.Click += new System.EventHandler(this.callPluginToolStripMenuItem_Click);
|
||||
//
|
||||
// Sistema
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||
@ -656,6 +666,7 @@ namespace Tinke
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripAbrirTexto;
|
||||
private System.Windows.Forms.Button btnPack;
|
||||
private System.Windows.Forms.ToolStripButton stripRefreshMsg;
|
||||
private System.Windows.Forms.ToolStripMenuItem callPluginToolStripMenuItem;
|
||||
|
||||
}
|
||||
}
|
||||
|
140
Tinke/Sistema.cs
140
Tinke/Sistema.cs
@ -356,6 +356,9 @@ namespace Tinke
|
||||
accion = new Acciones("", "NO GAME");
|
||||
DateTime t1 = DateTime.Now;
|
||||
|
||||
accion.LastFileID = files.Length;
|
||||
accion.LastFolderID = 0xF000;
|
||||
|
||||
// Obtenemos el sistema de archivos
|
||||
sFolder root = new sFolder();
|
||||
root.name = "root";
|
||||
@ -408,6 +411,9 @@ namespace Tinke
|
||||
accion = new Acciones("", "NO GAME");
|
||||
DateTime t1 = DateTime.Now;
|
||||
|
||||
accion.LastFileID = 0;
|
||||
accion.LastFolderID = 0xF000;
|
||||
|
||||
// Obtenemos el sistema de archivos
|
||||
sFolder root = new sFolder();
|
||||
root.name = "root";
|
||||
@ -606,7 +612,7 @@ namespace Tinke
|
||||
{
|
||||
int nImage = accion.ImageFormatFile(archivo.format);
|
||||
string ext = "";
|
||||
|
||||
|
||||
if (archivo.format == Format.Unknown)
|
||||
{
|
||||
stream.Position = archivo.offset;
|
||||
@ -988,8 +994,9 @@ namespace Tinke
|
||||
for (int i = 0; i < panelObj.Controls.Count; i++)
|
||||
panelObj.Controls[i].Dispose();
|
||||
panelObj.Controls.Clear();
|
||||
|
||||
Control control = accion.See_File();
|
||||
if (control.Size.Height != 0 && control.Size.Width != 0) // Si no sería nulo
|
||||
if (control.Size.Height != 0 && control.Size.Width != 0)
|
||||
{
|
||||
panelObj.Controls.Add(control);
|
||||
if (btnDesplazar.Text == ">>>>>")
|
||||
@ -1053,11 +1060,19 @@ namespace Tinke
|
||||
btnPack.Enabled = true;
|
||||
|
||||
Get_SupportedFiles();
|
||||
Add_TreeNodes(uncompress);
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
private void Add_TreeNodes(sFolder unpacked)
|
||||
{
|
||||
// Add new files to the main tree
|
||||
TreeNode selected = treeSystem.SelectedNode;
|
||||
selected.Nodes.Clear();
|
||||
FolderToNode(uncompress, ref selected);
|
||||
FolderToNode(unpacked, ref selected);
|
||||
selected.ImageIndex = accion.ImageFormatFile(accion.Selected_File().format);
|
||||
selected.SelectedImageIndex = selected.ImageIndex;
|
||||
|
||||
@ -1069,22 +1084,6 @@ namespace Tinke
|
||||
treeSystem.SelectedNode.Nodes.AddRange((TreeNode[])nodos);
|
||||
treeSystem.SelectedNode.Expand();
|
||||
treeSystem.Focus();
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
private void btnPack_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
|
||||
accion.Pack();
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
private void UnpackFolder()
|
||||
{
|
||||
@ -1130,6 +1129,18 @@ namespace Tinke
|
||||
accion.Unpack(archivo.id);
|
||||
}
|
||||
}
|
||||
private void btnPack_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
|
||||
accion.Pack();
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
|
||||
private void btnExtraer_Click(object sender, EventArgs e)
|
||||
{
|
||||
@ -1561,7 +1572,7 @@ namespace Tinke
|
||||
private void stripRefreshMsg_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
}
|
||||
private void toolStripInfoRom_Click(object sender, EventArgs e)
|
||||
@ -1640,7 +1651,7 @@ namespace Tinke
|
||||
#endregion
|
||||
|
||||
#region Menu-> Open as...
|
||||
private void AbrirComo(Format formato)
|
||||
private void OpenAs(Format formato)
|
||||
{
|
||||
sFile selectedFile = accion.Selected_File();
|
||||
string savedFile = "";
|
||||
@ -1685,20 +1696,20 @@ namespace Tinke
|
||||
}
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
}
|
||||
private void toolAbrirComoItemPaleta_Click(object sender, EventArgs e)
|
||||
{
|
||||
AbrirComo(Format.Palette);
|
||||
OpenAs(Format.Palette);
|
||||
}
|
||||
private void toolAbrirComoItemTile_Click(object sender, EventArgs e)
|
||||
{
|
||||
AbrirComo(Format.Tile);
|
||||
OpenAs(Format.Tile);
|
||||
}
|
||||
private void toolAbrirComoItemScreen_Click(object sender, EventArgs e)
|
||||
{
|
||||
AbrirComo(Format.Map);
|
||||
OpenAs(Format.Map);
|
||||
}
|
||||
private void s2AToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
@ -1744,12 +1755,12 @@ namespace Tinke
|
||||
treeSystem.Focus();
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
}
|
||||
private void toolStripAbrirTexto_Click(object sender, EventArgs e)
|
||||
{
|
||||
AbrirComo(Format.Text);
|
||||
OpenAs(Format.Text);
|
||||
}
|
||||
private void toolStripAbrirFat_Click(object sender, EventArgs e)
|
||||
{
|
||||
@ -1806,6 +1817,80 @@ namespace Tinke
|
||||
}
|
||||
sb.Length = 0;
|
||||
}
|
||||
private void callPluginToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
sFile opFile = accion.Selected_File();
|
||||
|
||||
Dialog.CallPlugin win = new Dialog.CallPlugin(accion.Get_PluginsList());
|
||||
if (opFile.name.Contains('.'))
|
||||
win.Extension = opFile.name.Substring(opFile.name.IndexOf('.') + 1);
|
||||
win.ID = opFile.id;
|
||||
win.Header = accion.Get_MagicIDS(opFile);
|
||||
|
||||
if (win.ShowDialog() != System.Windows.Forms.DialogResult.OK)
|
||||
return;
|
||||
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Object action = accion.Call_Plugin(opFile, win.Plugin, win.Extension, win.ID, win.Header, win.Action);
|
||||
|
||||
if (!isMono)
|
||||
debug.Add_Text(sb.ToString());
|
||||
sb.Length = 0;
|
||||
|
||||
|
||||
switch (win.Action)
|
||||
{
|
||||
case 1: // Show_Info
|
||||
if (action == null)
|
||||
break;
|
||||
|
||||
if (toolStripVentana.Checked)
|
||||
{
|
||||
Visor visor = new Visor();
|
||||
visor.Controls.Add((Control)action);
|
||||
visor.Text += " - " + opFile.name;
|
||||
visor.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < panelObj.Controls.Count; i++)
|
||||
panelObj.Controls[i].Dispose();
|
||||
panelObj.Controls.Clear();
|
||||
|
||||
Control control = (Control)action;
|
||||
if (control.Size.Height != 0 && control.Size.Width != 0)
|
||||
{
|
||||
panelObj.Controls.Add(control);
|
||||
if (btnDesplazar.Text == ">>>>>")
|
||||
btnDesplazar.PerformClick();
|
||||
}
|
||||
else
|
||||
if (btnDesplazar.Text == "<<<<<")
|
||||
btnDesplazar.PerformClick();
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // Unpack
|
||||
if (action == null)
|
||||
break;
|
||||
|
||||
sFolder unpacked = (sFolder)action;
|
||||
if (!(unpacked.files is List<sFile>) && !(unpacked.folders is List<sFolder>))
|
||||
{
|
||||
MessageBox.Show(Tools.Helper.GetTranslation("Sistema", "S36"));
|
||||
break;
|
||||
}
|
||||
|
||||
toolStripOpenAs.Enabled = false;
|
||||
|
||||
Get_SupportedFiles();
|
||||
Add_TreeNodes(unpacked);
|
||||
break;
|
||||
}
|
||||
|
||||
this.Cursor = Cursors.Default;
|
||||
win.Dispose();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Search
|
||||
@ -1943,5 +2028,6 @@ namespace Tinke
|
||||
btnDesplazar.Text = ">>>>>";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA6
|
||||
JwAAAk1TRnQBSQFMAgEBGQEAAXgBAwF4AQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
JwAAAk1TRnQBSQFMAgEBGQEAAYABAwGAAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAAXADAAEBAQABCAYAARwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
@ -386,17 +386,17 @@
|
||||
<data name="stripRefreshMsg.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJfSURBVDhPlZPbT5JhHMfZ/DvI2UvWjLWFLns9ZGyoA8HD
|
||||
ENo0kUfE0fDAcplK4uH1ReUNRQXUNElz2TxsLLewk6UymHYwWVvX3jk3b5t33+C9EmSNntvn93x+h8/z
|
||||
EwhSOPdelndqVjRpKYQmD1F6SyLycencPwEPt/VC8/t6S+ObmsD9de1JzatKqOfLoPIWw/Raj4bFWuT1
|
||||
ZLuSQswfGmjTO52f2e3CxP4I5n66MX/owcyBC+6vTzG2N4ShYB+qPeUQN2cOxkEebOqFxre1/tE9Fku/
|
||||
ZjH9YwzPDibg+eaEa38YXIgBG7Shd7sLSmcpKGOGIw7QuFFrsX1+hIXINOYO3HCG7TAu63DXTiPPloPs
|
||||
jhuocMmh4IohIumTF1qoW1UHRnb7+IyOIAMpV3hUOHDLeT5QZKAilP6SL2n/6heK44oZ2VnJuPRPkT3/
|
||||
tKAvh0kMzKgXWgUaQZpupZpoF8tJ1aycKCelRMYVEIHSIyMlziJSZKcJbcshNzvEJOa8bcdgTQRpFlSM
|
||||
ylt6yidjb58V9EqOk1bV+sXgM23WRc5fqp8rnCp38dFoyB61MoyOjbbofMSBC4CWLTLJhq3o33kM3Wo1
|
||||
or8Q0ZJhXjOA22V4pSOhAWinKnG9JdMSBzB/1DuYYBeWf8/zSn2RqTilAzvdvFLDUh2yzFf8lJ4SJiit
|
||||
GXzyqR2+Qy+v1Pt9DOP7DnBhFv1b3WheN6JqogzXTCI/1ZBOJ+1fu6B0tfqbYFohkHGFuMPkItcqgaQ9
|
||||
60TcfDWQ2XTZciFzIim2OFI2P26I/7WJMY10T3ZnKo/+AuBRMystdw6GAAAAAElFTkSuQmCC
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVDhPlZPbS9phGMeF/g4X7dfaaDIoZWFnWQcstcJ0
|
||||
oGS+meGwgyzWKpeZv7TyN9PyUK2Wq8UatUAKZju1pVLUDi0Z7Lq7CLod3X2nXuWB0d7b93k/z+HzPizW
|
||||
Fc79l5J+2Zos6wqhmUNEvpqocEqw8E/Aw101W/++1dC+qQgqN+RnileNkC7WQ+yrhu61Gm3LShQPcV0Z
|
||||
IfoPbXzdO1WADg9g+nACCz89WDz2Yu7IBc/Xp3AejGEsYkazVwJOZ95oEuTBtpqtfasMTB5YsfJrHrM/
|
||||
nHh2NA3vNwdch+Ng9mhYIyYM7w5A5KgFpc2xJwHat5QG0+dHWIrOYuHIA8e+DdpVFSptfBSbeOD23UGD
|
||||
S4g6phq5JNud1kLLujQ4ETYnMtojNCqZspMyy13H5cBcDRWl1Nf8GfuXvhCeNszdu6iZEvypsJWcl5p5
|
||||
dGpgTivbyJKxslRrzUS+LCFN80IicgtIFVNKWCJvFalxVJAKG5/wTTxS0Mchcec9IY0xFSRbEtNib+15
|
||||
PFn5aNFF6XDBacaqur9o/LrtlujlS+nzOofYU30yuWeLWRlH31ZPbD6cYBqga4e4rftGjIQeQ7XejNgv
|
||||
RKxk6N9owITphNKJPQvkM4243ZVnSALoP6rtdGQAq78XE0r90ZkkpZbQYEKpZqUF+fobAUpNsVOUKkaf
|
||||
fOqF/9iXUOr77sTUoR3MvhUjO4Po3NCiaboet3S5Aaotm5+xf/mSyNUd6IBujaCKKUM5XYQiYyEKe/PP
|
||||
OJ03g3kd1w1pmVNJ8cURWEuShvhfmxjXyB/i9l/l0V/MzjMiMkQcCwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
@ -512,19 +512,19 @@
|
||||
<data name="toolStripDeleteChain.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKwSURBVDhPjZLdT5JxFMdJ9A9o3dhWa95601VXXahJN62X
|
||||
zZraRbqmztJeVpkQZuDLfEwCESwVRCJLeXHSRBRFrGCkpI9JbjabWk7zJV94QBS3jG/Pw5JpOuts3+38
|
||||
tt/5nO/v/A5LbRoSqw3kvNRAUhLNvyXVk5SylaxkbUV924cFrU4XXPX74V8L7Kul1QAWPD7UNPd5wgCm
|
||||
s2/Vj6ft0xC3D0No1kEzKIfeXYqm4WJU20W43qDAPZUDXNUoFn0BSA0fqTCgkrbNdK4xT4PotEAzIIf2
|
||||
Ux6UA9mo6c9ArSsHImsJcupega/+jAVqD4CPBtR1zkDY0YhmumutKwtV769AZL8M4l0qJPY7SJc9QeGL
|
||||
McxT67SDoZ0OKBqgtHyHwKTBc7IQUmcaiLfJKOpNwqOeJBC2G0iTPkbRyy+Y86ztBnj8Aai6ZkGYOiC3
|
||||
l6PSmQFh70Xwuy9AYEvFw9c85DxrRGnzOOZW9nCwQk9XbZ2DvMMNnl4Nou02KmxZIKxXUWDIRaa8irbv
|
||||
RLluYjeA+ftlerIa23wIIjMNI784DWUSDghRAoQlyShu6oOk9RtELZOY/dsBA1jyBsDXnwdXexZ5TWeg
|
||||
KDiBEfUluGkZy+KQrYiHjH8c5uRD6EmMgjku+peFE8ELfaVYM0gt0wD7+JuwnCNGuPrr4TbegmOsG46G
|
||||
PLjvn0TALEZw1II17V0M5MZuWhMjb7IkIcD6DsB2GJN3px7BOl0M2TmAexAoi8FiRTzMCexJVrWBnFr2
|
||||
eOGlB+n1b4AKKQCKPnv+iLEdJFuxPTyCaAhORQZZSiNZoWgZcjDLIdXvLebNflUGQBdt5LOwQmvqGhuW
|
||||
0+yZ8ErvlzhSDgtd6cd+znJj8ONBFCYyD8AWG7nZyYng/xeAueRIOcrrSmR/ZWx3cdjTW8W/AYH9fo4C
|
||||
Wwe0AAAAAElFTkSuQmCC
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKvSURBVDhPjZLdT5JxFMdJ9A9o3dhWa95601VXXahJN62X
|
||||
zZraRbqmztJeVpkQZuDLfEwCESwVRCJLEJw0EUURKxgp6WOSm82mltN8yRceEMUt49vzsGSazjrbdzu/
|
||||
7Xc+5/s7v8NSm4bEagM5LzWQlETzb0n1JKVsJStZW1Hf9mFBq9MFV/1++NcC+2ppNYAFjw812j5PGMB0
|
||||
9q368bR9GuL2YQjNzdAMyqF3l6JpuBjVdhGuNyhwT+UAVzWKRV8AUsNHKgyopG0znWvM0yA6LdAMyKH7
|
||||
lAflQDZq+jNQ68qByFqCnLpX4Ks/Y4HaA+CjAXWdMxB2NEJLd611ZaHq/RWI7JdBvEuFxH4H6bInKHwx
|
||||
hnlqnXYwtNMBRQOUlu8QmDR4ThZC6kwD8TYZRb1JeNSTBMJ2A2nSxyh6+QVznrXdAI8/AFXXLAhTB+T2
|
||||
clQ6MyDsvQh+9wUIbKl4+JqHnGeNKNWOY25lDwcr9HTV1jnIO9zg6dUg2m6jwpYFwnoVBYZcZMqraPtO
|
||||
lDdP7AYwf79MT1Zjmw9BZKZh5BenoUzCASFKgLAkGcVNfZC0foOoZRKzfztgAEveAPj68+DqziKv6QwU
|
||||
BScwor4ENy1jWRyyFfGQ8Y/DnHwIPYlRMMdF/7JwInihrxRrBqllGmAffxOWc8QIV3893MZbcIx1w9GQ
|
||||
B/f9kwiYxQiOWrCmu4uB3NhNa2LkTZYkBFjfAdgOY/Lu1CNYp4shOwdwDwJlMVisiIc5gT3JqjaQU8se
|
||||
L7z0IL3+DVAhBUDRZ88fMbaDZCu2h0cQDcGpyCBLaSQrFC1DDmY5pPq9xbzZr8oA6KKNfBZWaE1dY8Ny
|
||||
mj0TXun9EkfKYaEr/djPWW4MfjyIwkTmAdhiIzc7ORH8/wIwlxwpR3ldieyvjO0uDnt6q/g3dqJ+izZA
|
||||
CDcAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
@ -151,6 +151,12 @@
|
||||
<Compile Include="Debug.Designer.cs">
|
||||
<DependentUpon>Debug.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Dialog\CallPlugin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Dialog\CallPlugin.Designer.cs">
|
||||
<DependentUpon>CallPlugin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Dialog\FATExtract.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@ -264,6 +270,9 @@
|
||||
<EmbeddedResource Include="Debug.resx">
|
||||
<DependentUpon>Debug.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Dialog\CallPlugin.resx">
|
||||
<DependentUpon>CallPlugin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Dialog\FATExtract.resx">
|
||||
<DependentUpon>FATExtract.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -149,5 +149,16 @@ namespace Tinke.Tools
|
||||
return message;
|
||||
}
|
||||
|
||||
public static byte[] StringToBytes(string text, int num_bytes)
|
||||
{
|
||||
string hexText = text.Replace("-", "");
|
||||
hexText = hexText.PadRight(num_bytes * 2, '0');
|
||||
|
||||
List<Byte> hex = new List<byte>();
|
||||
for (int i = 0; i < hexText.Length; i += 2)
|
||||
hex.Add(Convert.ToByte(hexText.Substring(i, 2), 16));
|
||||
|
||||
return hex.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user