diff --git a/CTFAK/MMFParser/EXE/Loaders/AppHeader.cs b/CTFAK/MMFParser/EXE/Loaders/AppHeader.cs index 2339086..a205b19 100644 --- a/CTFAK/MMFParser/EXE/Loaders/AppHeader.cs +++ b/CTFAK/MMFParser/EXE/Loaders/AppHeader.cs @@ -41,7 +41,7 @@ namespace CTFAK.MMFParser.EXE.Loaders "SamplesWhenNotFocused", "NoMinimizeBox", "NoMaximizeBox", - "NoThiccFrame", + "NoThickFrame", "DoNotCenterFrame", "ScreensaverAutostop", "DisableClose", diff --git a/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs b/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs index 1e46ebf..d199265 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs @@ -18,6 +18,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks public Dictionary Images = new Dictionary(); public uint NumberOfItems; public bool PreloadOnly = false; + public static bool Load = true; public ImageBank(ByteReader reader) : base(reader) { @@ -87,15 +88,11 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks { if (MainForm.BreakImages) break; { - - var item = new ImageItem(Reader); - item.Read(!PreloadOnly); tempImages.Add(item.Handle, item); if (SaveImages) item.Save($"{Settings.ImagePath}\\" + item.Handle.ToString() + ".png"); OnImageSaved?.Invoke(i, (int) NumberOfItems); - } } @@ -146,8 +143,8 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks Handle = Reader.ReadInt32(); if (!Debug) { - // if (Settings.Build>=287) Handle -= 1; - if (Program.CleanData.ProductVersion != Constants.Products.MMF15&&Settings.Build>=284) Handle -= 1; + if (Settings.Build>=284) Handle -= 1; + // if (Program.CleanData.ProductVersion != Constants.Products.MMF15&&Settings.Build>=284) Handle -= 1; } Position = (int) Reader.Tell(); @@ -157,11 +154,13 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks } public override void Read() { + // if (Settings.Build>=284) Handle -= 1; Handle = Reader.ReadInt32(); + if (!Debug) { - // if (Settings.Build>=287) Handle -= 1; - if (Exe.Instance.GameData.ProductVersion != Constants.Products.MMF15&&Settings.Build>=284) Handle -= 1; + if (Settings.Build>=284) Handle -= 1; + // if (Exe.Instance.GameData.ProductVersion != Constants.Products.MMF15&&Settings.Build>=284) Handle -= 1; } Position = (int) Reader.Tell(); @@ -281,10 +280,11 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks int bytesRead = 0; rawImg = imageData; - + if(!ImageBank.Load)return; + // Reader.Seek((_width*3)*_height+(ImageHelper.GetPadding(_width,3)*3*_height)); if (Flags["RLE"] || Flags["RLEW"] || Flags["RLET"]) { - Reader.Seek(start+Size); + // Reader.Seek(start+Size); return; } else diff --git a/CTFAK/MMFParser/EXE/Loaders/Banks/SoundBank.cs b/CTFAK/MMFParser/EXE/Loaders/Banks/SoundBank.cs index 5dfd86e..6230823 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Banks/SoundBank.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Banks/SoundBank.cs @@ -127,7 +127,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks Checksum = Reader.ReadInt32(); References = Reader.ReadInt32(); var decompressedSize = Reader.ReadInt32(); - Flags = (int)Reader.ReadUInt32(); + Flags = (int)Reader.ReadUInt32(); var reserved = Reader.ReadInt32(); var nameLenght = Reader.ReadInt32(); ByteReader soundData; @@ -141,15 +141,13 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks soundData = new ByteReader(Reader.ReadBytes(decompressedSize)); } Name = soundData.ReadWideString(nameLenght); - + Name = Name.Replace(" ", ""); Data = soundData.ReadBytes((int) soundData.Size()); if (Settings.DumpSounds) { Name = Helper.CleanInput(Name); File.WriteAllBytes($"{Settings.SoundPath}\\{Name}.wav", Data); } - - } diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs index c733932..2067c1c 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs @@ -10,6 +10,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters public ushort Id; public string Name; public int Password; + private short _unk; public Group(ByteReader reader) : base(reader) { @@ -21,8 +22,9 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters Flags = Reader.ReadUInt16(); Id = Reader.ReadUInt16(); Name = Reader.ReadWideString(); + Reader.Skip(178); Password = Reader.ReadInt32(); - Password = Checksum.MakeGroupChecksum("pass", Name); + _unk = Reader.ReadInt16(); } public override void Write(ByteWriter Writer) @@ -30,7 +32,10 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters Writer.WriteUInt16(Flags); Writer.WriteUInt16(Id); Writer.WriteUnicode(Name,true); + Writer.Skip(178); Writer.WriteInt32(Password); + Writer.WriteInt16(_unk); + } public override string ToString() diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs index 130bab5..67cde53 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs @@ -20,6 +20,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters { Writer.WriteInt16((short) Handle); Writer.WriteUInt16((ushort) Flags); + Name = Name.Replace(" ", ""); Writer.WriteUnicode(Name); Writer.Skip(120); Writer.WriteInt16(0); diff --git a/CTFAK/MMFParser/EXE/Loaders/Frame.cs b/CTFAK/MMFParser/EXE/Loaders/Frame.cs index a1367f2..bcf31a4 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Frame.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Frame.cs @@ -119,6 +119,8 @@ namespace CTFAK.MMFParser.EXE.Loaders public List Objects => _objects?.Items ?? null; public List Palette => _palette?.Items ?? new Color[256].ToList(); public Events.Events Events => _events; + public Transition FadeIn => _fadeIn; + public Transition FadeOut => _fadeOut; public List Layers => _layers?.Items ?? null; diff --git a/CTFAK/MMFParser/EXE/Loaders/ObjectInfo.cs b/CTFAK/MMFParser/EXE/Loaders/ObjectInfo.cs index 27de02c..2ae7e05 100644 --- a/CTFAK/MMFParser/EXE/Loaders/ObjectInfo.cs +++ b/CTFAK/MMFParser/EXE/Loaders/ObjectInfo.cs @@ -38,19 +38,21 @@ namespace CTFAK.MMFParser.EXE.Loaders _header = infoChunks.GetChunk(); _name = infoChunks.GetChunk(); _properties = infoChunks.GetChunk(); - _properties.ReadNew((int) ObjectType,this); + _properties.ReadNew((int) ObjectType,this); + + Logger.Log($"{Name}: {InkEffect}-{InkEffectValue}"); } public int Handle => _header.Handle; - public string Name => _name.Value; + public string Name => _name?.Value ?? "Unnamed Object - "+Handle; public ObjectProperties Properties => _properties; public Constants.ObjectType ObjectType => (Constants.ObjectType) _header.ObjectType; public int Flags => (int) _header.Flags; public int Reserved => (int) _header.Reserved; - public int InkEffect => (int) _header.InkEffect; + public int InkEffect => (int) _header.InkEffect&0xffff; public int InkEffectValue => (int) _header.InkEffectParameter; - public bool Transparent => ByteFlag.GetFlag((uint) InkEffect, 28); - public bool Antialias => ByteFlag.GetFlag((uint) InkEffect, 29); + public bool Transparent => ByteFlag.GetFlag((uint) _header.InkEffect, 28); + public bool Antialias => ByteFlag.GetFlag((uint) _header.InkEffect, 29); public ImageItem GetPreview() @@ -144,8 +146,8 @@ namespace CTFAK.MMFParser.EXE.Loaders public Int16 ObjectType; public UInt32 Flags; public UInt32 InkEffect; - public UInt32 InkEffectParameter; - public short Reserved; + public Int32 InkEffectParameter; + public Int16 Reserved; public ObjectHeader(ByteReader reader) : base(reader){} public ObjectHeader(Chunk chunk) : base(chunk){} @@ -158,8 +160,14 @@ namespace CTFAK.MMFParser.EXE.Loaders ObjectType = Reader.ReadInt16(); Flags = Reader.ReadUInt16(); Reserved = Reader.ReadInt16(); - InkEffect = Reader.ReadByte(); - InkEffectParameter = Reader.ReadByte(); + InkEffect = (uint) Reader.ReadInt32(); + Reader.Skip(3); + InkEffectParameter = Reader.ReadByte(); + + // if (InkEffect != 0) InkEffectParameter = 255; + + + } } } \ No newline at end of file diff --git a/CTFAK/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs b/CTFAK/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs index 9922032..f51d99f 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs @@ -134,104 +134,106 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects else { var currentPosition = Reader.Tell(); - var size = Reader.ReadInt32(); - if (Settings.Build >= 284) - { - _animationsOffset = Reader.ReadUInt16(); - _movementsOffset = Reader.ReadUInt16(); - } - else - { - _movementsOffset = Reader.ReadUInt16(); - _animationsOffset = Reader.ReadUInt16(); - } - _zeroUnk = Reader.ReadUInt16(); - - if(_zeroUnk!=0) throw new NotImplementedException("Unknown value is not zero"); - var version = Reader.ReadUInt16(); - - _extensionOffset = Reader.ReadUInt16(); - _counterOffset = Reader.ReadUInt16(); - Flags.flag = Reader.ReadUInt16(); - var end = Reader.Tell()+(8+1)*2; - Reader.Skip(2); - for (int i = 0; i < 8; i++) - { - var value = Reader.ReadInt16(); - _qualifiers[i]=value; - } - - Reader.Seek(end); - _systemObjectOffset = Reader.ReadUInt16(); - - _valuesOffset = Reader.ReadUInt16(); - _stringsOffset = Reader.ReadUInt16(); - NewFlags.flag = Reader.ReadUInt16(); - Preferences.flag = Reader.ReadUInt16(); - Identifier = Reader.ReadInt32(); - BackColor = Reader.ReadColor(); - _fadeinOffset = Reader.ReadUInt32(); - _fadeoutOffset = Reader.ReadUInt32(); - if (_animationsOffset > 0) - { - Reader.Seek(currentPosition+_animationsOffset); - Animations=new Animations(Reader); - Animations.Read(); - } - - if (_movementsOffset > 0) - { - Reader.Seek(currentPosition+_movementsOffset); - Movements=new Movements(Reader); - Movements.Read(); - } + var size = Reader.ReadInt32(); + if (Settings.Build >= 284) + { + _animationsOffset = Reader.ReadUInt16(); + _movementsOffset = Reader.ReadUInt16(); + } + else + { + _movementsOffset = Reader.ReadUInt16(); + _animationsOffset = Reader.ReadUInt16(); + } - if (_systemObjectOffset > 0) - { - Reader.Seek(currentPosition + _systemObjectOffset); - switch (Parent.ObjectType) + _zeroUnk = Reader.ReadUInt16(); + + if (_zeroUnk != 0) throw new NotImplementedException("Unknown value is not zero"); + var version = Reader.ReadUInt16(); + + _extensionOffset = Reader.ReadUInt16(); + _counterOffset = Reader.ReadUInt16(); + Flags.flag = Reader.ReadUInt16(); + var end = Reader.Tell() + (8 + 1) * 2; + Reader.Skip(2); + for (int i = 0; i < 8; i++) { - //Text - case Constants.ObjectType.Text: - Text = new Text(Reader); - Text.Read(); - break; - //Counter - case Constants.ObjectType.Counter: - Counters = new Counters(Reader); - Counters.Read(); - break; + var value = Reader.ReadInt16(); + _qualifiers[i] = value; + } + + Reader.Seek(end); + _systemObjectOffset = Reader.ReadUInt16(); + _valuesOffset = Reader.ReadUInt16(); + _stringsOffset = Reader.ReadUInt16(); + NewFlags.flag = Reader.ReadUInt16(); + Preferences.flag = Reader.ReadUInt16(); + Identifier = Reader.ReadInt32(); + BackColor = Reader.ReadColor(); + _fadeinOffset = Reader.ReadUInt32(); + _fadeoutOffset = Reader.ReadUInt32(); + if (_animationsOffset > 0) + { + Reader.Seek(currentPosition + _animationsOffset); + Animations = new Animations(Reader); + Animations.Read(); } - } - if (_extensionOffset > 0) - { - Reader.Seek(currentPosition + _extensionOffset); - - var dataSize = Reader.ReadInt32() - 20; - Reader.Skip(4); //maxSize; - ExtensionVersion = Reader.ReadInt32(); - ExtensionId = Reader.ReadInt32(); - ExtensionPrivate = Reader.ReadInt32(); - if (dataSize != 0) + if (_movementsOffset > 0) { - ExtensionData = Reader.ReadBytes(dataSize); + Reader.Seek(currentPosition + _movementsOffset); + Movements = new Movements(Reader); + Movements.Read(); + } + + if (_systemObjectOffset > 0) + { + Reader.Seek(currentPosition + _systemObjectOffset); + switch (Parent.ObjectType) + { + //Text + case Constants.ObjectType.Text: + Text = new Text(Reader); + Text.Read(); + break; + //Counter + case Constants.ObjectType.Counter: + Counters = new Counters(Reader); + Counters.Read(); + break; + + } + } + + if (_extensionOffset > 0) + { + Reader.Seek(currentPosition + _extensionOffset); + + var dataSize = Reader.ReadInt32() - 20; + Reader.Skip(4); //maxSize; + ExtensionVersion = Reader.ReadInt32(); + ExtensionId = Reader.ReadInt32(); + ExtensionPrivate = Reader.ReadInt32(); + if (dataSize != 0) + { + ExtensionData = Reader.ReadBytes(dataSize); + } + else ExtensionData = new byte[0]; + + Logger.Log($"{Parent.Name} - {ExtensionId}"); + } + + if (_counterOffset > 0) + { + Reader.Seek(currentPosition + _counterOffset); + Counter = new Counter(Reader); + Counter.Read(); } - else ExtensionData=new byte[0]; - Logger.Log($"{Parent.Name} - {ExtensionId}"); - } - if (_counterOffset > 0) - { - Reader.Seek(currentPosition+_counterOffset); - Counter = new Counter(Reader); - Counter.Read(); - } - } - + // Logger.Log("anims: "+_animationsOffset); // Logger.Log("fadeIn: "+_fadeinOffset); // Logger.Log("fadeOut: "+_fadeoutOffset); diff --git a/CTFAK/MMFParser/EXE/Loaders/Transition.cs b/CTFAK/MMFParser/EXE/Loaders/Transition.cs index 68967cd..f2c824c 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Transition.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Transition.cs @@ -36,6 +36,7 @@ namespace CTFAK.MMFParser.EXE.Loaders ModuleFile = Reader.ReadAscii(); Reader.Seek(currentPos+parameterOffset); ParameterData = Reader.ReadBytes(parameterSize); + } diff --git a/CTFAK/MMFParser/EXE/Loaders/yves.cs b/CTFAK/MMFParser/EXE/Loaders/yves.cs index 5bc66e0..5392b4d 100644 --- a/CTFAK/MMFParser/EXE/Loaders/yves.cs +++ b/CTFAK/MMFParser/EXE/Loaders/yves.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; +using System.Web.UI.WebControls; using CTFAK.Utils; using static CTFAK.MMFParser.EXE.ChunkList; @@ -10,7 +11,7 @@ namespace CTFAK.MMFParser.EXE.Loaders { public class AppIcon : ChunkLoader { - List _points; + byte[] _points; public AppIcon(ByteReader reader) : base(reader) @@ -23,53 +24,54 @@ namespace CTFAK.MMFParser.EXE.Loaders public override void Read() { + return; Reader.ReadBytes(Reader.ReadInt32() - 4); List colorIndexes = new List(); for (int i = 0; i < 16 * 16; i++) { - var r = Reader.ReadSByte(); - var g = Reader.ReadSByte(); var b = Reader.ReadSByte(); + var g = Reader.ReadSByte(); + var r = Reader.ReadSByte(); Reader.ReadByte(); colorIndexes.Add((byte) r); colorIndexes.Add((byte) g); colorIndexes.Add((byte) b); } - _points = new List(); + var bitmap = new Bitmap(16, 16); for (int y = 0; y < 16; y++) { var xList = new List(); for (int x = 0; x < 16; x++) { - xList.Add(colorIndexes[Reader.ReadByte()]); + var value = Reader.ReadByte(); + bitmap.SetPixel(x, (16 - 1) - y,Color.Brown); } - - xList.AddRange(_points); - _points = xList; } + bitmap.Save("penis.png"); + List alpha = new List(); for (int i = 0; i < 16*16/8; i++) { - - } - using (var bmp = new Bitmap(16, 16, PixelFormat.Format32bppArgb)) - { - BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, - bmp.Width, - bmp.Height), - ImageLockMode.WriteOnly, - bmp.PixelFormat); - - IntPtr pNative = bmpData.Scan0; - Marshal.Copy(_points.ToArray(), 0, pNative, _points.Count); - - bmp.UnlockBits(bmpData); + List newAlphas = new List(); + var val = Reader.ReadByte(); + for (int j = 0; j < 8; j++) + { + + newAlphas.Add(ByteFlag.GetFlag(val,i)); + } - bmp.Save("icon.png"); + foreach (bool b in newAlphas) + { + if (b) _points[i + 3] = 0; + else _points[i + 3] = 255; + } } + + + } diff --git a/CTFAK/MMFParser/MFA/Loaders/ChunkList.cs b/CTFAK/MMFParser/MFA/Loaders/ChunkList.cs index 5f7f42c..8cf33a4 100644 --- a/CTFAK/MMFParser/MFA/Loaders/ChunkList.cs +++ b/CTFAK/MMFParser/MFA/Loaders/ChunkList.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.IO; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; @@ -14,7 +15,7 @@ namespace CTFAK.MMFParser.MFA.Loaders public List Items = new List(); public bool Log=false; - public T GetChunk() where T : MFAChunkLoader + public T GetOrCreateChunk() where T : MFAChunkLoader, new() { foreach (MFAChunk chunk in Items) { @@ -23,7 +24,11 @@ namespace CTFAK.MMFParser.MFA.Loaders return (T) chunk.Loader; } } - return null; + var newChunk = new MFAChunk(null); + newChunk.Id=45; + newChunk.Loader = new T(); + Items.Add(newChunk); + return (T) newChunk.Loader; } public bool ContainsChunk() where T : MFAChunkLoader @@ -104,15 +109,13 @@ namespace CTFAK.MMFParser.MFA.Loaders var size = Reader.ReadInt32(); Data = Reader.ReadBytes(size); var dataReader = new ByteReader(Data); - /*switch (Id) + switch (Id) { case 33: Loader = new FrameVirtualRect(dataReader); break; - case 56: - Loader=new GlobalObject(dataReader); - break; - case 72: + + case 45: Loader = new Opacity(dataReader); break; default: @@ -120,7 +123,7 @@ namespace CTFAK.MMFParser.MFA.Loaders // Logger.Log($"{Id} - {Data.GetHex()}"); break; - }*/ + } Loader?.Read(); @@ -151,19 +154,35 @@ namespace CTFAK.MMFParser.MFA.Loaders public class Opacity : MFAChunkLoader { - public int Value; + public Color RGBCoeff; + public byte Blend; public Opacity(ByteReader dataReader) : base(dataReader){} - + + public Opacity() : base() + { + + } + public override void Read() { - Value = Reader.ReadInt32(); + var b = Reader.ReadByte(); + var g = Reader.ReadByte(); + var r = Reader.ReadByte(); + Blend = Reader.ReadByte(); + RGBCoeff = Color.FromArgb(Blend,r,g,b); + var unk = Reader.ReadInt32(); + } public override void Write(ByteWriter Writer) { - Writer.WriteInt32(Value); + Writer.WriteInt8(RGBCoeff.B); + Writer.WriteInt8(RGBCoeff.G); + Writer.WriteInt8(RGBCoeff.R); + Writer.WriteInt8(Blend); + Writer.WriteInt32(0); } } @@ -191,30 +210,6 @@ namespace CTFAK.MMFParser.MFA.Loaders Writer.WriteInt32(Bottom); } } - public class GlobalObject:MFAChunkLoader - { - public byte[] Value; - - public GlobalObject(ByteReader reader) : base(reader) - { - } - - public override void Read() - { - Value = Reader.ReadBytes(12); - for(int i=0;i().Blend = (byte) item.InkEffectValue; + newItem.Chunks.GetOrCreateChunk().RGBCoeff = Color.White; newItem.IconHandle = 12; - newItem.Chunks = MFA.MFA.defaultObjChunks; + if (item.ObjectType == 0) { @@ -376,9 +398,9 @@ namespace CTFAK.MMFParser.Translation Logger.Log(("Translating Object: " + itemLoader.Parent.Name),false,ConsoleColor.Blue,false); //CommonSection var newObject = new ObjectLoader(null); - newObject.ObjectFlags = (int) (itemLoader.Flags.flag); + newObject.ObjectFlags = (int) (itemLoader.Flags.flag); newObject.NewObjectFlags = (int) (itemLoader.NewFlags.flag); - + newObject.BackgroundColor = itemLoader.BackColor; newObject.Qualifiers = itemLoader._qualifiers; @@ -431,10 +453,11 @@ namespace CTFAK.MMFParser.Translation var newDirections = new List(); EXE.Loaders.Objects.Animation animation = null; if (animHeader.AnimationDict.ContainsKey(origAnim.Key)) - { - animation = animHeader?.AnimationDict[origAnim.Key]; - } - else break; + { + animation = animHeader?.AnimationDict[origAnim.Key]; + } + else break; + if (animation != null) { if (animation.DirectionDict != null) diff --git a/CTFAK/Program.cs b/CTFAK/Program.cs index 08d58b0..c47ea6b 100644 --- a/CTFAK/Program.cs +++ b/CTFAK/Program.cs @@ -9,6 +9,7 @@ using System.Web.Caching; using System.Windows.Forms; using CTFAK.GUI; using CTFAK.MMFParser.EXE; +using CTFAK.MMFParser.EXE.Loaders.Banks; using CTFAK.MMFParser.Translation; using CTFAK.Utils; using Joveler.Compression.ZLib; @@ -52,6 +53,7 @@ namespace CTFAK if (args.Length > 0) { + ImageBank.Load = false; if (args[0].EndsWith(".exe")) { ReadFile(args[0],true,false,true); diff --git a/CTFAK/Utils/ImageHelper.cs b/CTFAK/Utils/ImageHelper.cs index 942bd86..b6486ac 100644 --- a/CTFAK/Utils/ImageHelper.cs +++ b/CTFAK/Utils/ImageHelper.cs @@ -18,7 +18,7 @@ namespace CTFAK.Utils colorArray[(y * stride) + (x * 4) + 1] = data[position + 1]; colorArray[(y * stride) + (x * 4) + 2] = data[position + 2]; colorArray[(y * stride) + (x * 4) + 3] = 255; - position += 3; + position += 3; } position += pad * 3;