diff --git a/NetMFAPatcher/DotNetCTFDumper.csproj b/NetMFAPatcher/DotNetCTFDumper.csproj
index 24959ec..79be9d8 100644
--- a/NetMFAPatcher/DotNetCTFDumper.csproj
+++ b/NetMFAPatcher/DotNetCTFDumper.csproj
@@ -217,6 +217,8 @@
+
+
diff --git a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index fa1af50..283210f 100644
--- a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -226,9 +226,15 @@ namespace DotNetCTFDumper.MMFParser.EXE
case 13108:
loader = new FrameHeader(chunk);
break;
+ case 13111:
+ loader = new FramePalette(chunk);
+ break;
case 13112:
loader = new ObjectInstances(chunk);
break;
+ case 13121:
+ loader = new Layers(chunk);
+ break;
case 26214:
loader = new ImageBank(chunk);
break;
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
index bab1ff2..500967b 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
@@ -201,8 +201,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events
public void Write(ByteWriter Writer)
{
ByteWriter newWriter = new ByteWriter(new MemoryStream());
- newWriter.WriteInt8((byte) Conditions.Count);
- newWriter.WriteInt8((byte) Actions.Count);
+ newWriter.WriteUInt8( (sbyte) Conditions.Count);
+ newWriter.WriteUInt8((sbyte) Actions.Count);
newWriter.WriteUInt16(Flags);
if (Settings.Build >= 284)
{
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
index 2771409..8cfe83a 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
+using System.Drawing.Imaging;
using DotNetCTFDumper.Utils;
namespace DotNetCTFDumper.MMFParser.EXE.Loaders
@@ -43,6 +44,9 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
public ChunkList Chunks;
public FrameHeader Header;
public ObjectInstances Objects;
+ public Layers Layers;
+ public Events.Events Events;
+ public FramePalette Palette;
public override void Print(bool ext)
@@ -85,8 +89,22 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
{
this.Password = password.Value;
}
-
-
+
+ var layers = Chunks.GetChunk();
+ if (layers != null)
+ {
+ Layers = layers;
+ }
+ var events = Chunks.GetChunk();
+ if (events != null)
+ {
+ Events = events;
+ }
+ var palette = Chunks.GetChunk();
+ if (palette != null)
+ {
+ Palette = palette;
+ }
Header = Chunks.GetChunk();
Width = Header.Width;
Height = Header.Height;
@@ -98,6 +116,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
CountOfObjs = Objects.CountOfObjects;
}
+
+
@@ -283,8 +303,51 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
}
}
- class Layer : ChunkLoader
+ public class Layers : ChunkLoader
{
+ public List Items;
+
+ public Layers(ByteReader reader) : base(reader)
+ {
+ }
+
+ public Layers(ChunkList.Chunk chunk) : base(chunk)
+ {
+ }
+
+ public override void Read()
+ {
+ Items = new List();
+ var count = Reader.ReadUInt32();
+ for (int i = 0; i < count; i++)
+ {
+ Layer item = new Layer(Reader);
+ item.Read();
+ Items.Add(item);
+ }
+
+ }
+
+ public override void Print(bool ext)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override string[] GetReadableData()
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class Layer : ChunkLoader
+ {
+ public string Name;
+ public uint Flags;
+ public float XCoeff;
+ public float YCoeff;
+ public int NumberOfBackgrounds;
+ public int BackgroudIndex;
+
public Layer(ByteReader reader) : base(reader)
{
}
@@ -295,7 +358,45 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
public override void Read()
{
-
+ Flags = Reader.ReadUInt32();
+ XCoeff = Reader.ReadSingle();
+ YCoeff = Reader.ReadSingle();
+ NumberOfBackgrounds = Reader.ReadInt32();
+ BackgroudIndex = Reader.ReadInt32();
+ Name = Reader.ReadWideString();
+ Console.WriteLine(Name);
+ }
+
+ public override void Print(bool ext)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override string[] GetReadableData()
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class FramePalette : ChunkLoader
+ {
+ public List Items;
+
+ public FramePalette(ByteReader reader) : base(reader)
+ {
+ }
+
+ public FramePalette(ChunkList.Chunk chunk) : base(chunk)
+ {
+ }
+
+ public override void Read()
+ {
+ Items = new List();
+ for (int i = 0; i < 256; i++)
+ {
+ Items.Add(Reader.ReadColor());
+ }
}
public override void Print(bool ext)
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
index 52dd6d8..e6a3a16 100644
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
@@ -38,6 +38,7 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
//Add modifications
+
var mfaWriter = new ByteWriter("outTest.mfa", FileMode.Create);
template.Write(mfaWriter);
}
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
index 65558ba..b412d87 100644
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
@@ -1,5 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.MFA.Loaders;
+using DotNetCTFDumper.Utils;
+using Frame = DotNetCTFDumper.MMFParser.EXE.Loaders.Frame;
+using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
namespace DotNetCTFDumper.MMFParser.Decompiling
{
@@ -10,13 +17,14 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
//mfa.MfaBuild = 4;
//mfa.Product = (int) game.ProductVersion;
- mfa.BuildVersion = 283;
+ //mfa.BuildVersion = 283;
mfa.Name = game.Name;
+ mfa.LangId = 0;
mfa.Description = $"Decompiled with {Settings.DumperVersion}";
mfa.Path = game.EditorFilename;
- return;
+
//mfa.Stamp = wtf;
- if (game.Fonts != null) mfa.Fonts = game.Fonts;
+ /*if (game.Fonts != null) mfa.Fonts = game.Fonts;
mfa.Sounds = game.Sounds;
foreach (var item in mfa.Sounds.Items)
@@ -29,8 +37,8 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
{
mfa.Images.Items[key].Debug = true;
}
-
- mfa.Author = game.Author;
+ */
+ mfa.Author = game.Author!=null? game.Author:"Kostya";
mfa.Copyright = game.Copyright;
mfa.Company = "CTFAN Team";
mfa.Version = "";
@@ -54,7 +62,44 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
mfa.Aboutbox = game.AboutText?.Length > 0
? game?.AboutText
: "This game was decompiled with " + Settings.DumperVersion;
-
+ mfa.Frames.Clear();
+ foreach (Frame gameFrame in game.Frames)
+ {
+ MFA.Loaders.Frame mfaFrame = new MFA.Loaders.Frame(null);
+ mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
+ mfaFrame.Name = gameFrame.Name;
+ mfaFrame.SizeX = gameFrame.Width;
+ mfaFrame.SizeY = gameFrame.Height;
+ mfaFrame.Background = gameFrame.Background;
+ //TODO: Transitions
+ //TODO: Flags
+ mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 1337;
+ mfaFrame.Password = gameFrame?.Password ?? "";
+ mfaFrame.LastViewedX = 320;
+ mfaFrame.LastViewedY = 240;
+ mfaFrame.Palette = gameFrame.Palette.Items;
+ mfaFrame.StampHandle = 12;
+ mfaFrame.ActiveLayer = 0;
+ mfaFrame.Layers = new List();
+ mfaFrame.Layers.Add(new Layer(null){Name = "New Layer"});
+
+ /*foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
+ {
+ Layer mfaLayer = new Layer(null);
+ mfaLayer.Name = gameLayer.Name;
+ mfaLayer.Flags = (int) gameLayer.Flags;
+ //TODO: Flags
+ mfaLayer.XCoefficient = gameLayer.XCoeff;
+ mfaLayer.YCoefficient = gameLayer.YCoeff;
+ mfaFrame.Layers.Add(mfaLayer);
+ }*/
+ mfaFrame.Events = MFA.MFA.emptyEvents;
+ mfaFrame.Chunks = MFA.MFA.emptyFrameChunks;
+
+ mfa.Frames.Add(mfaFrame);
+
+ }
+
}
}
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
index bf0480c..bb37b44 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
+using System.Security.AccessControl;
using System.Text;
using DotNetCTFDumper.MMFParser.EXE;
using DotNetCTFDumper.MMFParser.EXE.Loaders.Events;
@@ -41,6 +42,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public uint EventLine;
public uint EventLineY;
public byte[] Saved;
+ public int EditorDataUnk;
public Events(ByteReader reader) : base(reader)
{
@@ -52,8 +54,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public override void Read()
{
- Saved = Reader.ReadBytes(92);
- return;
+
Version = Reader.ReadUInt16();
FrameType = Reader.ReadUInt16();
Items = new List();
@@ -109,7 +110,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
}
else if (name == EventEditorData)
{
- Reader.Skip(4);
+ EditorDataUnk = Reader.ReadInt32();
ConditionWidth = Reader.ReadUInt16();
ObjectHeight = Reader.ReadUInt16();
Reader.Skip(12);
@@ -178,91 +179,130 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public override void Write(ByteWriter Writer)
{
- Writer.WriteBytes(Saved);
- return;
- Writer.WriteUInt16(Version);
- Writer.WriteInt16((short) FrameType);
- Writer.WriteBytes(new byte[]{0x04,0x04,0x00,0x00});
- if (Items != null)
- {
- Writer.WriteAscii(EventData);
-
- ByteWriter newWriter = new ByteWriter(new MemoryStream());
- foreach (EventGroup eventGroup in Items)
- {
- eventGroup.Write(newWriter);
- }
- Writer.WriteWriter(newWriter);
- }
-
- if (Comments != null)
+ //Writer.WriteBytes(Saved);
+ //return;
+ using (ByteWriter debug = new ByteWriter(new MemoryStream()))
{
- Writer.WriteAscii(CommentData);
- foreach (Comment comment in Comments)
- {
- comment.Write(Writer);
- }
- }
- if (Objects != null)
- {
- Writer.WriteAscii(ObjectData);
- Writer.WriteUInt32((uint) Objects.Count);
- foreach (EventObject eventObject in Objects)
+ //Writer = new ByteWriter(new MemoryStream());
+ Writer.WriteUInt16(Version);
+ Writer.WriteInt16((short) FrameType);
+
+ //Writer.WriteBytes(new byte[] {0x04, 0x04, 0x00, 0x00});
+ // if (Items != null)
+ // {
+ // Console.WriteLine("Writing EventData");
+ // Writer.WriteAscii(EventData);
+ //
+ // ByteWriter newWriter = new ByteWriter(new MemoryStream());
+ // foreach (EventGroup eventGroup in Items)
+ // {
+ // eventGroup.Write(newWriter);
+ // }
+ //
+ // Writer.WriteWriter(newWriter);
+ // }
+ // if (Objects != null)
+ // {
+ // Console.WriteLine("Writing EventObjects");
+ // Writer.WriteAscii(ObjectData);
+ // Writer.WriteUInt32((uint) Objects.Count);
+ // foreach (EventObject eventObject in Objects)
+ // {
+ // eventObject.Write(Writer);
+ // }
+ // }
+ if (ObjectTypes != null)
{
- eventObject.Write(Writer);
- }
- }
- Writer.WriteAscii(EventEditorData);
- Writer.Skip(4+2*2+4*3);
- if (ObjectTypes != null)
- {
- Writer.WriteAscii(ObjectListData);
- Writer.WriteInt16(-1);
- Writer.WriteInt16((short) ObjectTypes.Count);
- foreach (ushort objectType in ObjectTypes)
- {
- Writer.WriteUInt16(objectType);
- }
- foreach (ushort objectHandle in ObjectHandles)
- {
- Writer.WriteUInt16(objectHandle);
+ Console.WriteLine("Writing ObjectTypes");
+ Writer.WriteAscii(ObjectListData);
+ Writer.WriteInt16(-1);
+ Writer.WriteInt16((short) ObjectTypes.Count);
+ foreach (ushort objectType in ObjectTypes)
+ {
+ Writer.WriteUInt16(objectType);
+ }
+
+ foreach (ushort objectHandle in ObjectHandles)
+ {
+ Writer.WriteUInt16(objectHandle);
+ }
+
+ foreach (ushort objectFlag in ObjectFlags)
+ {
+ Writer.WriteUInt16(objectFlag);
+ }
+
+ Writer.WriteUInt16((ushort) Folders.Count);
+ foreach (string folder in Folders)
+ {
+ Writer.AutoWriteUnicode(folder);
+ }
}
- foreach (ushort objectFlag in ObjectFlags)
+ if (X != 0)
{
- Writer.WriteUInt16(objectFlag);
+ Console.WriteLine("Writing X");
+ Writer.WriteAscii(EditorPositionData);
+ Writer.WriteInt16(1);
+ Writer.WriteInt32((int) X);
+ Writer.WriteInt32((int) Y);
+ Writer.WriteUInt32(CaretType);
+ Writer.WriteUInt32(CaretX);
+ Writer.WriteUInt32(CaretY);
}
- Writer.WriteUInt16((ushort) Folders.Count);
- foreach (string folder in Folders)
+ if (LineY != 0)
{
- Writer.AutoWriteUnicode(folder);
+ Console.WriteLine("Writing LineY");
+ Writer.WriteAscii(EditorLineData);
+ Writer.WriteInt16(1);
+ Writer.WriteUInt32(LineY);
+ Writer.WriteUInt32(LineItemType);
+ Writer.WriteUInt32(EventLine);
+ Writer.WriteUInt32(EventLineY);
}
+ Console.WriteLine("Writing EventEditorData");
+ Writer.WriteAscii(EventEditorData);
+ Writer.WriteInt32(EditorDataUnk);
+ Writer.WriteInt16((short) ConditionWidth);
+ Writer.WriteInt16((short) ObjectHeight);
+ Writer.Skip(12);
- }
+
+ //Writer.Skip((4 + 2 * 2 + 4 * 3)-4);
+
+ Writer.WriteAscii(EventEnd);
+
+
+ //TODO: Fix commented part
+ //
+
+ //
+ // if (Comments != null)
+ // {
+ // Console.WriteLine("Writing Comments");
+ // Writer.WriteAscii(CommentData);
+ // foreach (Comment comment in Comments)
+ // {
+ // comment.Write(Writer);
+ // }
+ // }
- if (X != 0)
- {
- Writer.WriteAscii(EditorPositionData);
- Writer.WriteInt16(1);
- Writer.WriteInt32((int) X);
- Writer.WriteInt32((int) Y);
- Writer.WriteUInt32(CaretType);
- Writer.WriteUInt32(CaretX);
- Writer.WriteUInt32(CaretY);
- }
+
- if (LineY != 0)
- {
- Writer.WriteAscii(EditorLineData);
- Writer.WriteInt16(1);
- Writer.WriteUInt32(LineY);
- Writer.WriteUInt32(LineItemType);
- Writer.WriteUInt32(EventLine);
- Writer.WriteUInt32(EventLineY);
+
+
+
+
+
+
+
+
+ var data = ((MemoryStream) Writer.BaseStream).GetBuffer();
+ Array.Resize(ref data,(int) Writer.Size());
+ File.WriteAllBytes("MyEvents.bin",data);
}
- Writer.WriteAscii(EventEnd);
-
-
+
+
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
index 7d48227..57fa654 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
@@ -13,12 +13,12 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public int SizeY;
public Color Background;
public int MaxObjects;
- public List Items;
+ public List Items=new List();
public int Handle;
public int LastViewedX;
public int LastViewedY;
- public List Folders;
- public List Instances;
+ public List Folders=new List();
+ public List Instances=new List();
public uint Flags;
public string Password;
public List Palette;
@@ -32,6 +32,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
{
}
+
+
public override void Write(ByteWriter Writer)
{
@@ -74,14 +76,17 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
{
item.Write(Writer);
}
- Writer.WriteInt32(Instances.Count);
- foreach (var item in Instances)
+
+ if (Instances != null)
{
- item.Write(Writer);
+ Writer.WriteInt32(Instances.Count);
+ foreach (var item in Instances)
+ {
+ item.Write(Writer);
+ }
}
- Console.WriteLine("BeforeEventsPos: "+Writer.Tell());
+
Events.Write(Writer);
- Console.WriteLine("AfterEventsPos: "+Writer.Tell());
Chunks.Write(Writer);
@@ -151,21 +156,25 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
}
Instances = new List();
- var instancesCount = 0;//Reader.ReadInt32();
+ var instancesCount = Reader.ReadInt32();
for (int i = 0; i < instancesCount; i++)
{
var inst = new FrameInstance(Reader);
- //inst.Read();
+ inst.Read();
Instances.Add(inst);
}
Events = new Events(Reader);
+ Console.WriteLine("BeforeEventsPos: "+Reader.Tell());
Events.Read();
+ Console.WriteLine("AfterEventsPos: "+Reader.Tell());
Chunks = new ChunkList(Reader);
Chunks.Read();
-
+ MFA.emptyEvents = Events;
+ MFA.emptyFrameChunks = Chunks;
+
+
-
}
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
index c7ce198..31c2b7c 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
@@ -14,7 +14,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
private int PaletteVersion;
private int PaletteEntries;
public Dictionary Items = new Dictionary();
- private List Palette;
+ public List Palette;
public override void Print()
{
diff --git a/NetMFAPatcher/MMFParser/MFA/MFA.cs b/NetMFAPatcher/MMFParser/MFA/MFA.cs
index 5a35a9d..87bfdd6 100644
--- a/NetMFAPatcher/MMFParser/MFA/MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/MFA.cs
@@ -115,6 +115,9 @@ namespace DotNetCTFDumper.MMFParser.MFA
public List Frames;
public ChunkList Chunks;
+ public static Events emptyEvents;
+ public static ChunkList emptyFrameChunks;
+
public override void Print()
{
@@ -162,7 +165,7 @@ namespace DotNetCTFDumper.MMFParser.MFA
Writer.AutoWriteUnicode(Version);
Writer.WriteInt32(WindowX);
Writer.WriteInt32(WindowY);
- Writer.WriteColor(Color.White);
+ Writer.WriteColor(Color.FromArgb(0,255,255,255));
Writer.WriteInt32((int) DisplayFlags.flag);
Writer.WriteInt32((int) GraphicFlags.flag);
Writer.AutoWriteUnicode(HelpFile);
diff --git a/NetMFAPatcher/PluginAPI/IPlugin.cs b/NetMFAPatcher/PluginAPI/IPlugin.cs
new file mode 100644
index 0000000..788089b
--- /dev/null
+++ b/NetMFAPatcher/PluginAPI/IPlugin.cs
@@ -0,0 +1,8 @@
+namespace DotNetCTFDumper.PluginAPI
+{
+ public interface IPlugin
+ {
+
+
+ }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/PluginAPI/PluginAPI.cs b/NetMFAPatcher/PluginAPI/PluginAPI.cs
new file mode 100644
index 0000000..36baa70
--- /dev/null
+++ b/NetMFAPatcher/PluginAPI/PluginAPI.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.MFA;
+using DotNetCTFDumper.MMFParser.MFA.Loaders;
+using Frame = DotNetCTFDumper.MMFParser.MFA.Loaders.Frame;
+using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
+
+namespace DotNetCTFDumper.PluginAPI
+{
+ public class PluginAPI
+ {
+ public static Frame GetEmptyFrame(List palette,int handle=0,int x=640,int y=480,string name="New Frame")
+ {
+ var frame = new Frame(null)
+ {
+ Handle = 0,
+ Name = name,
+ Password = "",
+ SizeX = x,
+ SizeY = y,
+ Background = Color.Green,
+ Flags = 260,
+ Palette = palette,
+ Layers = new List(),
+ Folders = new List(),
+ Items = new List(),
+ Events = MFA.emptyEvents,
+ Chunks = MFA.emptyFrameChunks
+
+ };
+ //frame.Instances = template.Frames[0].Instances;
+ var testLayer = new Layer(null) {Name = "New Super Layer"};
+ frame.Layers.Add(testLayer);
+
+
+
+
+ return frame;
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/Program.cs b/NetMFAPatcher/Program.cs
index 791063b..b1b7608 100644
--- a/NetMFAPatcher/Program.cs
+++ b/NetMFAPatcher/Program.cs
@@ -24,8 +24,8 @@ namespace DotNetCTFDumper
var handle = Helper.GetConsoleWindow();
Helper.ShowWindow(handle, Helper.SW_HIDE);
InitNativeLibrary();
- MFAGenerator.ReadTestMFA();
- Environment.Exit(0);
+ //MFAGenerator.ReadTestMFA();
+ //Environment.Exit(0);
var path = "";
var verbose = false;
diff --git a/NetMFAPatcher/Utils/BitDict.cs b/NetMFAPatcher/Utils/BitDict.cs
index a458e91..fc091ff 100644
--- a/NetMFAPatcher/Utils/BitDict.cs
+++ b/NetMFAPatcher/Utils/BitDict.cs
@@ -30,6 +30,7 @@ namespace DotNetCTFDumper.Utils
return false;
}
+
public static string ToDebugString(IDictionary dictionary)
{
diff --git a/NetMFAPatcher/Utils/ByteReader.cs b/NetMFAPatcher/Utils/ByteReader.cs
index 02d4e78..dd9724e 100644
--- a/NetMFAPatcher/Utils/ByteReader.cs
+++ b/NetMFAPatcher/Utils/ByteReader.cs
@@ -129,9 +129,9 @@ namespace DotNetCTFDumper.Utils
var r = ReadByte();
var g = ReadByte();
var b = ReadByte();
- Skip(1);
+ var a = ReadByte();
- return Color.FromArgb(r, g, b);
+ return Color.FromArgb(a,r, g, b);
}
diff --git a/NetMFAPatcher/Utils/ByteWriter.cs b/NetMFAPatcher/Utils/ByteWriter.cs
index 3f94043..27d4d08 100644
--- a/NetMFAPatcher/Utils/ByteWriter.cs
+++ b/NetMFAPatcher/Utils/ByteWriter.cs
@@ -98,7 +98,7 @@ namespace DotNetCTFDumper.Utils
WriteInt8(color.R);
WriteInt8(color.G);
WriteInt8(color.B);
- WriteInt8(0);
+ WriteInt8(color.A);
}
public void WriteWriter(ByteWriter toWrite)