Rename ByteIO to ByteReader

Fix ImageBank writing
Fix ObjectCommon reading
master
REDxEYE 5 years ago
parent fce070d9d8
commit 3bd7bca7c6

@ -186,7 +186,7 @@
<Compile Include="MMFParser\Data\PackData.cs" /> <Compile Include="MMFParser\Data\PackData.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils\ByteIO.cs" /> <Compile Include="Utils\ByteReader.cs" />
<Compile Include="Utils\Decompressor.cs" /> <Compile Include="Utils\Decompressor.cs" />
<Compile Include="Utils\Decryption.cs" /> <Compile Include="Utils\Decryption.cs" />
<Compile Include="Utils\ImageDumper.cs" /> <Compile Include="Utils\ImageDumper.cs" />

@ -434,45 +434,31 @@ namespace NetMFAPatcher.GUI
this.PerformLayout(); this.PerformLayout();
} }
private System.Windows.Forms.Button packDataBtn; private System.Windows.Forms.Button button1;
private System.Windows.Forms.CheckBox ChunkBox;
private System.Windows.Forms.ToolStripMenuItem saveChunkBtn;
private System.Windows.Forms.ToolStripMenuItem viewHexBtn;
private System.Windows.Forms.ContextMenuStrip ChunkCombo; private System.Windows.Forms.ContextMenuStrip ChunkCombo;
private System.Windows.Forms.Button dumpSortedBtn;
private System.Windows.Forms.Button showHexBtn;
private System.Windows.Forms.Button cryptKeyBtn; private System.Windows.Forms.Button cryptKeyBtn;
private System.Windows.Forms.Button dumpSortedBtn;
private System.Windows.Forms.Label loadingLabel;
private System.Windows.Forms.Button ImagesButton;
private System.Windows.Forms.Button SoundsButton;
private System.Windows.Forms.Button FolderBTN; private System.Windows.Forms.Button FolderBTN;
private System.Windows.Forms.Button MFABtn;
private System.Windows.Forms.ProgressBar SoundBar;
private System.Windows.Forms.Label SoundsLabel;
private System.Windows.Forms.Label ImagesLabel;
private System.Windows.Forms.ProgressBar ImagesBar;
private System.Windows.Forms.CheckBox ChunkBox;
private System.Windows.Forms.CheckBox ImageBox;
private System.Windows.Forms.CheckBox SoundBox;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label GameInfo; private System.Windows.Forms.Label GameInfo;
private System.Windows.Forms.CheckBox ImageBox;
private System.Windows.Forms.ProgressBar ImagesBar;
private System.Windows.Forms.Button ImagesButton;
private System.Windows.Forms.Label ImagesLabel;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListBox listBox1; private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Label loadingLabel;
private System.Windows.Forms.Button MFABtn;
private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Button packDataBtn;
private System.Windows.Forms.ToolStripMenuItem saveChunkBtn;
private System.Windows.Forms.Button showHexBtn;
private System.Windows.Forms.ProgressBar SoundBar;
private System.Windows.Forms.CheckBox SoundBox;
private System.Windows.Forms.Button SoundsButton;
private System.Windows.Forms.Label SoundsLabel;
private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ToolStripMenuItem viewHexBtn;
#endregion #endregion
} }

@ -20,39 +20,39 @@ namespace NetMFAPatcher.GUI
public static bool BreakImages; public static bool BreakImages;
public static bool BreakSounds; public static bool BreakSounds;
public Thread LoaderThread; public Thread LoaderThread;
public Color colorTheme = Color.FromArgb(223,114,38); public Color ColorTheme = Color.FromArgb(223,114,38);
public PackDataForm PackForm; public PackDataForm PackForm;
public MainForm() public MainForm()
{ {
//Buttons //Buttons
InitializeComponent(); InitializeComponent();
cryptKeyBtn.ForeColor = colorTheme; cryptKeyBtn.ForeColor = ColorTheme;
dumpSortedBtn.ForeColor = colorTheme; dumpSortedBtn.ForeColor = ColorTheme;
showHexBtn.ForeColor = colorTheme; showHexBtn.ForeColor = ColorTheme;
FolderBTN.ForeColor = colorTheme; FolderBTN.ForeColor = ColorTheme;
MFABtn.ForeColor = colorTheme; MFABtn.ForeColor = ColorTheme;
ImagesButton.ForeColor = colorTheme; ImagesButton.ForeColor = ColorTheme;
SoundsButton.ForeColor = colorTheme; SoundsButton.ForeColor = ColorTheme;
packDataBtn.ForeColor = colorTheme; packDataBtn.ForeColor = ColorTheme;
//Menu //Menu
saveChunkBtn.ForeColor = colorTheme; saveChunkBtn.ForeColor = ColorTheme;
saveChunkBtn.BackColor=Color.Black; saveChunkBtn.BackColor=Color.Black;
viewHexBtn.ForeColor = colorTheme; viewHexBtn.ForeColor = ColorTheme;
viewHexBtn.BackColor=Color.Black; viewHexBtn.BackColor=Color.Black;
//Labels //Labels
label1.ForeColor = colorTheme; label1.ForeColor = ColorTheme;
label1.Text = Settings.DumperVersion; label1.Text = Settings.DumperVersion;
button1.ForeColor = colorTheme; button1.ForeColor = ColorTheme;
GameInfo.ForeColor = colorTheme; GameInfo.ForeColor = ColorTheme;
loadingLabel.ForeColor = colorTheme; loadingLabel.ForeColor = ColorTheme;
ImagesLabel.ForeColor = colorTheme; ImagesLabel.ForeColor = ColorTheme;
SoundsLabel.ForeColor=colorTheme; SoundsLabel.ForeColor=ColorTheme;
//Other //Other
treeView1.ForeColor = colorTheme; treeView1.ForeColor = ColorTheme;
listBox1.ForeColor = colorTheme; listBox1.ForeColor = ColorTheme;
ImagesBar.ForeColor = colorTheme; ImagesBar.ForeColor = ColorTheme;
SoundBar.ForeColor = colorTheme; SoundBar.ForeColor = ColorTheme;
} }
@ -386,7 +386,7 @@ namespace NetMFAPatcher.GUI
rawData += Settings.Copyright; rawData += Settings.Copyright;
} }
var KeyForm = new CryptoKeyForm(rawData,colorTheme); var KeyForm = new CryptoKeyForm(rawData,ColorTheme);
KeyForm.Show(); KeyForm.Show();
} }
@ -403,7 +403,7 @@ namespace NetMFAPatcher.GUI
var node = ((ChunkNode) treeView1.SelectedNode); var node = ((ChunkNode) treeView1.SelectedNode);
HexViewForm hexform = null; HexViewForm hexform = null;
hexform = new HexViewForm(node.chunk.ChunkData,node.chunk.RawData,colorTheme,$"Hew View: {node.chunk.Name}"); hexform = new HexViewForm(node.chunk.ChunkData,node.chunk.RawData,ColorTheme,$"Hew View: {node.chunk.Name}");
hexform.Show(); hexform.Show();
} }
@ -439,7 +439,7 @@ namespace NetMFAPatcher.GUI
private void packDataBtn_Click(object sender, EventArgs e) private void packDataBtn_Click(object sender, EventArgs e)
{ {
if(PackForm==null)PackForm = new PackDataForm(Exe.LatestInst.PackData,colorTheme); if(PackForm==null)PackForm = new PackDataForm(Exe.LatestInst.PackData,ColorTheme);
PackForm.Show(); PackForm.Show();
} }
} }

@ -87,7 +87,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events
List<int> _objects = new List<int>(); List<int> _objects = new List<int>();
public Quailifer(Chunk chunk) : base(chunk) { } public Quailifer(Chunk chunk) : base(chunk) { }
public Quailifer(ByteIO reader) : base(reader) { } public Quailifer(ByteReader reader) : base(reader) { }
public override void Print(bool ext) public override void Print(bool ext)
{ {
@ -120,7 +120,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events
public List<Action> Actions = new List<Action>(); public List<Action> Actions = new List<Action>();
public EventGroup(Chunk chunk) : base(chunk) { } public EventGroup(Chunk chunk) : base(chunk) { }
public EventGroup(ByteIO reader) : base(reader) { } public EventGroup(ByteReader reader) : base(reader) { }
public override void Print(bool ext) public override void Print(bool ext)
{ {

@ -21,7 +21,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events
public int Identifier; public int Identifier;
public int ObjectInfoList; public int ObjectInfoList;
public List<Parameter> Items = new List<Parameter>(); public List<Parameter> Items = new List<Parameter>();
public Condition(ByteIO reader) : base(reader) { } public Condition(ByteReader reader) : base(reader) { }
public override void Print() public override void Print()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
@ -68,7 +68,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events
public int ObjectInfo; public int ObjectInfo;
public int ObjectInfoList; public int ObjectInfoList;
public List<Parameter> Items = new List<Parameter>(); public List<Parameter> Items = new List<Parameter>();
public Action(ByteIO reader) : base(reader) { } public Action(ByteReader reader) : base(reader) { }
public override void Print( ) public override void Print( )
{ {
throw new NotImplementedException(); throw new NotImplementedException();
@ -108,7 +108,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events
public int Code; public int Code;
public DataLoader Loader; public DataLoader Loader;
public Parameter(ByteIO reader) : base(reader) { } public Parameter(ByteReader reader) : base(reader) { }
public override void Print() public override void Print()
{ {

@ -10,7 +10,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Expressions
public int Num; public int Num;
public int ObjectInfo; public int ObjectInfo;
public int ObjectInfoList; public int ObjectInfoList;
public Expression(ByteIO reader) : base(reader) { } public Expression(ByteReader reader) : base(reader) { }
public override void Print() public override void Print()
{ {
throw new NotImplementedException(); throw new NotImplementedException();

@ -10,7 +10,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
class AlterableValue : Short class AlterableValue : Short
{ {
public AlterableValue(ByteIO reader) : base(reader) { } public AlterableValue(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
base.Read(); base.Read();

@ -7,7 +7,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public Color Value; public Color Value;
public Colour(ByteIO reader) : base(reader) { } public Colour(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
var bytes = Reader.ReadBytes(4); var bytes = Reader.ReadBytes(4);

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public int ObjectInfo; public int ObjectInfo;
public Position Position; public Position Position;
public Create(ByteIO reader) : base(reader) { } public Create(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Position = new Position(Reader); Position = new Position(Reader);

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public int Compteur; public int Compteur;
public Every(ByteIO reader) : base(reader) { } public Every(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Delay = Reader.ReadInt32(); Delay = Reader.ReadInt32();

@ -6,7 +6,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public float Value; public float Value;
public Float(ByteIO reader) : base(reader) { } public Float(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Value = Reader.ReadSingle(); Value = Reader.ReadSingle();

@ -7,7 +7,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public GlobalValue(ByteIO reader) : base(reader) { } public GlobalValue(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
base.Read(); base.Read();

@ -6,7 +6,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public Int(ByteIO reader) : base(reader) { } public Int(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Value = (short)Reader.ReadInt32(); Value = (short)Reader.ReadInt32();

@ -7,7 +7,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public int ObjectInfoList; public int ObjectInfoList;
public int ObjectInfo; public int ObjectInfo;
public int ObjectType; public int ObjectType;
public ParamObject(ByteIO reader) : base(reader) { } public ParamObject(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
ObjectInfoList = Reader.ReadInt16(); ObjectInfoList = Reader.ReadInt16();

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public ParameterCommon(ByteIO reader) : base(reader) { } public ParameterCommon(ByteReader reader) : base(reader) { }
public override void Print() public override void Print()
{ {
throw new NotImplementedException(); throw new NotImplementedException();

@ -15,7 +15,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public int ObjectInfoList; public int ObjectInfoList;
public int Layer; public int Layer;
public Position(ByteIO reader) : base(reader) { } public Position(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
ObjectInfoParent = Reader.ReadInt16(); ObjectInfoParent = Reader.ReadInt16();

@ -6,7 +6,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public Remark(ByteIO reader) : base(reader) { } public Remark(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
//TODO //TODO

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public string Name; public string Name;
public int Flags; public int Flags;
public Sample(ByteIO reader) : base(reader) { } public Sample(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Handle = Reader.ReadInt16(); Handle = Reader.ReadInt16();

@ -6,7 +6,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
{ {
public short Value; public short Value;
public Short(ByteIO reader) : base(reader) { } public Short(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Value = Reader.ReadInt16(); Value = Reader.ReadInt16();

@ -7,7 +7,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Events.Parameters
public int Timer; public int Timer;
public int Loops; public int Loops;
public Time(ByteIO reader) : base(reader) { } public Time(ByteReader reader) : base(reader) { }
public override void Read() public override void Read()
{ {
Timer = Reader.ReadInt32(); Timer = Reader.ReadInt32();

@ -25,10 +25,10 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public override void Read() public override void Read()
{ {
var numberOfItems = Reader.ReadUInt16(); var numberOfItems = Reader.ReadUInt16();
var templist = new List<ByteIO>(); var templist = new List<ByteReader>();
for (int i = 0; i < numberOfItems; i++) for (int i = 0; i < numberOfItems; i++)
{ {
templist.Add(new ByteIO(Reader.ReadBytes(4))); templist.Add(new ByteReader(Reader.ReadBytes(4)));
} }
foreach (var item in templist) foreach (var item in templist)
{ {

@ -33,7 +33,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
} }
} }
public ObjectNames(ByteIO reader) : base(reader) { } public ObjectNames(ByteReader reader) : base(reader) { }
public ObjectNames(Chunk chunk) : base(chunk) { } public ObjectNames(Chunk chunk) : base(chunk) { }
} }
} }

@ -9,7 +9,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
{ {
public Dictionary<int, Animation> AnimationDict; public Dictionary<int, Animation> AnimationDict;
public Animations(ByteIO reader) : base(reader) public Animations(ByteReader reader) : base(reader)
{ {
} }
@ -63,7 +63,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
{ {
public Dictionary<int, AnimationDirection> DirectionDict; public Dictionary<int, AnimationDirection> DirectionDict;
public Animation(ByteIO reader) : base(reader) public Animation(ByteReader reader) : base(reader)
{ {
} }
@ -113,7 +113,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
public int Repeat; public int Repeat;
public int BackTo; public int BackTo;
public List<int> Frames = new List<int>(); public List<int> Frames = new List<int>();
public AnimationDirection(ByteIO reader) : base(reader) public AnimationDirection(ByteReader reader) : base(reader)
{ {
} }

@ -1,14 +1,17 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using NetMFAPatcher.MMFParser.Data; using NetMFAPatcher.MMFParser.Data;
using NetMFAPatcher.Utils; using NetMFAPatcher.Utils;
namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
{ {
public class ObjectCommon:ChunkLoader public class ObjectCommon : ChunkLoader
{ {
private short _valuesOffset; private short _valuesOffset;
private short _stringsOffset; private short _stringsOffset;
private byte[] Identifier;
private int _fadeinOffset; private int _fadeinOffset;
private int _fadeoutOffset; private int _fadeoutOffset;
private ushort _movementsOffset; private ushort _movementsOffset;
@ -19,8 +22,62 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
public Animations Animations; public Animations Animations;
private long _end; private long _end;
private BitDict preferences = new BitDict(new string[]
{
"Backsave",
"ScrollingIndependant",
"QuickDisplay",
"Sleep",
"LoadOnCall",
"Global",
"BackEffects",
"Kill",
"InkEffects",
"Transitions",
"FineCollisions",
"AppletProblems"
}
);
private BitDict flags = new BitDict(new string[]
{
"DisplayInFront",
"Background",
"Backsave",
"RunBeforeFadeIn",
"Movements",
"Animations",
"TabStop",
"WindowProc",
"Values",
"Sprites",
"InternalBacksave",
"ScrollingIndependant",
"QuickDisplay",
"NeverKill",
"NeverSleep",
"ManualSleep",
"Text",
"DoNotCreateAtStart",
"FakeSprite",
"FakeCollisions"
}
);
private BitDict new_flags = new BitDict(new string[]
{
"DoNotSaveBackground",
"SolidBackground",
"CollisionBox",
"VisibleAtStart",
"ObstacleSolid",
"ObstaclePlatform",
"AutomaticRotation"
}
);
public ObjectCommon(ByteIO reader) : base(reader) public ObjectCommon(ByteReader reader) : base(reader)
{ {
} }
@ -30,57 +87,56 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
public override void Read() public override void Read()
{ {
long currentPosition = Reader.Tell();
var currentPosition = Reader.Tell(); int size = Reader.ReadInt32();
var size = Reader.ReadInt32(); bool newobj = Settings.Build > 284;
var newobj = Settings.Build > 284; if (newobj && true)
var newobj2 = true;
if (newobj&&newobj2)
{ {
_animationsOffset = (short) Reader.ReadUInt16(); _animationsOffset = (short) Reader.ReadUInt16();
_movementsOffset = Reader.ReadUInt16(); _movementsOffset = Reader.ReadUInt16();
var Version = Reader.ReadInt16(); short version = Reader.ReadInt16();
Reader.ReadBytes(2); Reader.ReadBytes(2);
var extensionOffset = Reader.ReadUInt16(); ushort extensionOffset = Reader.ReadUInt16();
var counterOffset = Reader.ReadUInt16(); ushort counterOffset = Reader.ReadUInt16();
var flags = Reader.ReadUInt32(); flags.flag = Reader.ReadUInt32();
var end = Reader.Tell() + 16; long end = Reader.Tell() + 16;
var qualifiers = new List<short>(); List<short> qualifiers = new List<short>();
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
var qualifier = Reader.ReadInt16(); short qualifier = Reader.ReadInt16();
if (qualifier == -1) break; if (qualifier == -1) break;
qualifiers.Add(qualifier); qualifiers.Add(qualifier);
} }
Reader.Seek(end); Reader.Seek(end);
var systemObjectOffset = Reader.ReadInt16(); short systemObjectOffset = Reader.ReadInt16();
_valuesOffset = Reader.ReadInt16(); _valuesOffset = Reader.ReadInt16();
_stringsOffset = Reader.ReadInt16(); _stringsOffset = Reader.ReadInt16();
var newFlags = Reader.ReadUInt16(); new_flags.flag = Reader.ReadUInt16();
var preferences = Reader.ReadFourCc(); preferences.flag = Reader.ReadUInt16();
var backColor = Reader.ReadColor(); Identifier = Reader.ReadFourCc();
var fadeinOffset = Reader.ReadInt32(); Color backColor = Reader.ReadColor();
var fadeoutOffset = Reader.ReadInt32(); int fadeinOffset = Reader.ReadInt32();
int fadeoutOffset = Reader.ReadInt32();
} }
else if (newobj) else if (newobj)
{ {
_counterOffset = Reader.ReadInt16(); _counterOffset = Reader.ReadInt16();
var version = Reader.ReadInt16(); short version = Reader.ReadInt16();
Reader.ReadBytes(2); Reader.ReadBytes(2);
_movementsOffset = (ushort) Reader.ReadInt16(); _movementsOffset = (ushort) Reader.ReadInt16();
_extensionOffset = Reader.ReadInt16(); _extensionOffset = Reader.ReadInt16();
_animationsOffset = Reader.ReadInt16(); _animationsOffset = Reader.ReadInt16();
var flags = Reader.ReadUInt32(); uint flags = Reader.ReadUInt32();
var end = Reader.Tell() + 16; long end = Reader.Tell() + 16;
var qualifiers = new List<short>(); List<short> qualifiers = new List<short>();
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
var qualifier = Reader.ReadInt16(); short qualifier = Reader.ReadInt16();
if (qualifier == -1) break; if (qualifier == -1) break;
qualifiers.Add(qualifier); qualifiers.Add(qualifier);
} }
@ -89,9 +145,9 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
_valuesOffset = Reader.ReadInt16(); _valuesOffset = Reader.ReadInt16();
_stringsOffset = Reader.ReadInt16(); _stringsOffset = Reader.ReadInt16();
var newFlags = Reader.ReadUInt16(); ushort newFlags = Reader.ReadUInt16();
var preferences = Reader.ReadFourCc(); byte[] preferences = Reader.ReadFourCc();
var backColor = Reader.ReadColor(); Color backColor = Reader.ReadColor();
_fadeinOffset = Reader.ReadInt32(); _fadeinOffset = Reader.ReadInt32();
_fadeoutOffset = Reader.ReadInt32(); _fadeoutOffset = Reader.ReadInt32();
} }
@ -99,18 +155,18 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
{ {
_movementsOffset = Reader.ReadUInt16(); _movementsOffset = Reader.ReadUInt16();
_animationsOffset = Reader.ReadInt16(); _animationsOffset = Reader.ReadInt16();
var version = Reader.ReadInt16(); short version = Reader.ReadInt16();
_counterOffset = Reader.ReadInt16(); _counterOffset = Reader.ReadInt16();
_systemObjectOffset = Reader.ReadInt16(); _systemObjectOffset = Reader.ReadInt16();
Reader.ReadBytes(2); Reader.ReadBytes(2);
var flags = Reader.ReadUInt32(); flags.flag = Reader.ReadUInt32();
_end = Reader.Tell() + 16; _end = Reader.Tell() + 16;
var qualifiers = new List<short>(); List<short> qualifiers = new List<short>();
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
var qualifier = Reader.ReadInt16(); short qualifier = Reader.ReadInt16();
if (qualifier == -1) break; if (qualifier == -1) break;
qualifiers.Add(qualifier); qualifiers.Add(qualifier);
} }
@ -121,10 +177,10 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
_valuesOffset = Reader.ReadInt16(); _valuesOffset = Reader.ReadInt16();
_stringsOffset = Reader.ReadInt16(); _stringsOffset = Reader.ReadInt16();
var newFlags = Reader.ReadUInt16(); new_flags.flag = Reader.ReadUInt16();
var preferences = Reader.ReadUInt16(); preferences.flag = Reader.ReadUInt16();
var identifier = Reader.ReadFourCc(); byte[] identifier = Reader.ReadFourCc();
var backColor = Reader.ReadColor(); Color backColor = Reader.ReadColor();
_fadeinOffset = Reader.ReadInt32(); _fadeinOffset = Reader.ReadInt32();
_fadeoutOffset = Reader.ReadInt32(); _fadeoutOffset = Reader.ReadInt32();
} }
@ -135,38 +191,35 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
//var movements = new Movements(Reader); //var movements = new Movements(Reader);
//movements.Read(); //movements.Read();
} }
Console.WriteLine("Movements done"); Console.WriteLine("Movements done");
if (_valuesOffset != 0) if (_valuesOffset != 0)
{ {
Reader.Seek(currentPosition+_valuesOffset); Reader.Seek(currentPosition + _valuesOffset);
var values = new AlterableValues(Reader); AlterableValues values = new AlterableValues(Reader);
values.Read(); values.Read();
} }
Console.WriteLine("Values done"); Console.WriteLine("Values done");
if (_stringsOffset != 0) if (_stringsOffset != 0)
{ {
Reader.Seek(currentPosition+_stringsOffset); Reader.Seek(currentPosition + _stringsOffset);
var strings = new AlterableStrings(Reader); AlterableStrings strings = new AlterableStrings(Reader);
strings.Read(); strings.Read();
} }
Console.WriteLine("Strings done"); Console.WriteLine("Strings done");
if (_animationsOffset != 0) if (_animationsOffset != 0)
{ {
Reader.Seek(currentPosition+_stringsOffset); Reader.Seek(currentPosition + _stringsOffset);
Animations = new Animations(Reader); Animations = new Animations(Reader);
Animations.Read(); Animations.Read();
} }
Console.WriteLine("Animations done");
Console.WriteLine("SysObjOff: "+_systemObjectOffset);
Console.WriteLine("ExtOff: "+_extensionOffset);
Console.WriteLine("Animations done");
Console.WriteLine("SysObjOff: " + _systemObjectOffset);
Console.WriteLine("ExtOff: " + _extensionOffset);
} }
public override void Print(bool ext) public override void Print(bool ext)

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
{ {
public class AlterableValues:ChunkLoader public class AlterableValues:ChunkLoader
{ {
public AlterableValues(ByteIO reader) : base(reader) public AlterableValues(ByteReader reader) : base(reader)
{ {
} }
@ -44,7 +44,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Objects
} }
public class AlterableStrings:ChunkLoader public class AlterableStrings:ChunkLoader
{ {
public AlterableStrings(ByteIO reader) : base(reader) public AlterableStrings(ByteReader reader) : base(reader)
{ {
} }

@ -15,7 +15,7 @@ namespace NetMFAPatcher.MMFParser.Data
public bool Verbose = false; public bool Verbose = false;
public List<Frame> Frames = new List<Frame>(); public List<Frame> Frames = new List<Frame>();
public void Read(ByteIO exeReader) public void Read(ByteReader exeReader)
{ {
Chunks.Clear(); Chunks.Clear();
while (true) while (true)
@ -77,12 +77,12 @@ namespace NetMFAPatcher.MMFParser.Data
_chunkList = actualChunkList; _chunkList = actualChunkList;
} }
public ByteIO get_reader() public ByteReader get_reader()
{ {
return new ByteIO(ChunkData); return new ByteReader(ChunkData);
} }
public void Read(ByteIO exeReader) public void Read(ByteReader exeReader)
{ {
Id = exeReader.ReadInt16(); Id = exeReader.ReadInt16();
Name = this.ActualName(); Name = this.ActualName();

@ -6,10 +6,10 @@ namespace NetMFAPatcher.MMFParser.Data
public abstract class DataLoader public abstract class DataLoader
{ {
private Chunk _chunk; private Chunk _chunk;
public ByteIO Reader; public ByteReader Reader;
public bool Verbose = true; public bool Verbose = true;
protected DataLoader(ByteIO reader) protected DataLoader(ByteReader reader)
{ {
this.Reader = reader; this.Reader = reader;
} }

@ -13,7 +13,7 @@ namespace NetMFAPatcher.MMFParser.Data
public PackData PackData; public PackData PackData;
public GameData GameData; public GameData GameData;
public static Exe LatestInst; public static Exe LatestInst;
public void ParseExe(ByteIO exeReader) public void ParseExe(ByteReader exeReader)
{ {
Exe.LatestInst = this; Exe.LatestInst = this;
Logger.Log($"Executable: {Settings.GameName}\n", true, ConsoleColor.DarkRed); Logger.Log($"Executable: {Settings.GameName}\n", true, ConsoleColor.DarkRed);

@ -53,7 +53,7 @@ namespace NetMFAPatcher.MMFParser.Data
public List<Frame> Frames = new List<Frame>(); public List<Frame> Frames = new List<Frame>();
public void Read(ByteIO exeReader) public void Read(ByteReader exeReader)
{ {
string magic = exeReader.ReadAscii(4); //Reading header string magic = exeReader.ReadAscii(4); //Reading header

@ -383,7 +383,7 @@ namespace NetMFAPatcher.MMFParser.Data
} }
public MFA(ByteIO reader) : base(reader) public MFA(ByteReader reader) : base(reader)
{ {
} }

@ -17,7 +17,7 @@ namespace NetMFAPatcher.MMFParser.Data
{ {
} }
public void Read(ByteIO exeReader) public void Read(ByteReader exeReader)
{ {
long start = exeReader.Tell(); long start = exeReader.Tell();
byte[] header = exeReader.ReadBytes(8); byte[] header = exeReader.ReadBytes(8);
@ -70,7 +70,7 @@ namespace NetMFAPatcher.MMFParser.Data
int _bingo = 0; int _bingo = 0;
public byte[] Data; public byte[] Data;
public void Read(ByteIO exeReader) public void Read(ByteReader exeReader)
{ {
UInt16 len = exeReader.ReadUInt16(); UInt16 len = exeReader.ReadUInt16();
PackFilename = exeReader.ReadWideString(len); PackFilename = exeReader.ReadWideString(len);

@ -11,7 +11,7 @@ namespace NetMFAPatcher.MMFParser.Decompiling
public static void BuildMFA() public static void BuildMFA()
{ {
Settings.DoMFA = true; Settings.DoMFA = true;
var mfaReader = new ByteIO(TemplatePath, FileMode.Open); var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
var template = new MFA(mfaReader); var template = new MFA(mfaReader);
template.Read(); //Loading template template.Read(); //Loading template
@ -27,7 +27,7 @@ namespace NetMFAPatcher.MMFParser.Decompiling
public static void ReadTestMFA() public static void ReadTestMFA()
{ {
var mfaReader = new ByteIO(TemplatePath, FileMode.Open); var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
var template = new MFA(mfaReader); var template = new MFA(mfaReader);
template.Read(); template.Read();
var mfaWriter = new ByteWriter("outTest.mfa", FileMode.Create); var mfaWriter = new ByteWriter("outTest.mfa", FileMode.Create);

@ -79,7 +79,7 @@ namespace NetMFAPatcher
{ {
Settings.DoMFA = false; Settings.DoMFA = false;
var exeReader = new ByteIO(path, FileMode.OpenOrCreate); var exeReader = new ByteReader(path, FileMode.OpenOrCreate);
var currentExe = new Exe(); var currentExe = new Exe();
currentExe.ParseExe(exeReader); currentExe.ParseExe(exeReader);
Logger.Log("Finished!", true, ConsoleColor.Yellow); Logger.Log("Finished!", true, ConsoleColor.Yellow);

@ -17,6 +17,7 @@ namespace NetMFAPatcher.Utils
public bool this[String key] public bool this[String key]
{ {
get => GetFlag(key); get => GetFlag(key);
// set => SetFlag(key,value);
} }
public bool GetFlag(String key) public bool GetFlag(String key)

@ -5,25 +5,25 @@ using System.Text;
namespace NetMFAPatcher.Utils namespace NetMFAPatcher.Utils
{ {
public class ByteIO : BinaryReader public class ByteReader : BinaryReader
{ {
public ByteIO(Stream input) : base(input) public ByteReader(Stream input) : base(input)
{ {
} }
public ByteIO(Stream input, Encoding encoding) : base(input, encoding) public ByteReader(Stream input, Encoding encoding) : base(input, encoding)
{ {
} }
public ByteIO(Stream input, Encoding encoding, bool leaveOpen) : base(input, encoding, leaveOpen) public ByteReader(Stream input, Encoding encoding, bool leaveOpen) : base(input, encoding, leaveOpen)
{ {
} }
public ByteIO(byte[] data) : base(new MemoryStream(data)) public ByteReader(byte[] data) : base(new MemoryStream(data))
{ {
} }
public ByteIO(string path, FileMode fileMode) : base(new FileStream(path, fileMode)) public ByteReader(string path, FileMode fileMode) : base(new FileStream(path, fileMode))
{ {
} }

@ -6,7 +6,7 @@ namespace NetMFAPatcher.Utils
{ {
public static class Decompressor public static class Decompressor
{ {
public static byte[] Decompress(ByteIO exeReader, out int decompressed) public static byte[] Decompress(ByteReader exeReader, out int decompressed)
{ {
Int32 decompSize = exeReader.ReadInt32(); Int32 decompSize = exeReader.ReadInt32();
Int32 compSize = exeReader.ReadInt32(); Int32 compSize = exeReader.ReadInt32();
@ -14,7 +14,7 @@ namespace NetMFAPatcher.Utils
return decompress_block(exeReader, compSize, decompSize); return decompress_block(exeReader, compSize, decompSize);
} }
public static ByteIO DecompressAsReader(ByteIO exeReader, out int decompressed) public static ByteReader DecompressAsReader(ByteReader exeReader, out int decompressed)
{ {
Int32 decompSize = exeReader.ReadInt32(); Int32 decompSize = exeReader.ReadInt32();
Int32 compSize = exeReader.ReadInt32(); Int32 compSize = exeReader.ReadInt32();
@ -22,19 +22,19 @@ namespace NetMFAPatcher.Utils
byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData); byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData);
Debug.Assert(actualData.Length == decompSize); Debug.Assert(actualData.Length == decompSize);
decompressed = decompSize; decompressed = decompSize;
return new ByteIO(actualData); return new ByteReader(actualData);
} }
public static byte[] decompress_block(ByteIO reader, int size, int decompSize) public static byte[] decompress_block(ByteReader reader, int size, int decompSize)
{ {
byte[] compressedData = reader.ReadBytes(size); byte[] compressedData = reader.ReadBytes(size);
byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData); byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData);
return actualData; return actualData;
} }
public static ByteIO decompress_asReader(ByteIO imageData, int v, int decompressedSize) public static ByteReader decompress_asReader(ByteReader imageData, int v, int decompressedSize)
{ {
return new ByteIO(decompress_block(imageData, v, decompressedSize)); return new ByteReader(decompress_block(imageData, v, decompressedSize));
} }

@ -51,7 +51,7 @@ namespace NetMFAPatcher.Utils
public static byte[] DecodeMode3(byte[] chunkData, int chunkSize, int chunkId, out int decompressed) public static byte[] DecodeMode3(byte[] chunkData, int chunkSize, int chunkId, out int decompressed)
{ {
var reader = new ByteIO(chunkData); var reader = new ByteReader(chunkData);
var decompressedSize = reader.ReadUInt32(); var decompressedSize = reader.ReadUInt32();
var rawData = reader.ReadBytes((int) reader.Size()); var rawData = reader.ReadBytes((int) reader.Size());
@ -61,7 +61,7 @@ namespace NetMFAPatcher.Utils
} }
rawData = DecodeChunk(rawData, chunkSize); rawData = DecodeChunk(rawData, chunkSize);
using (var data = new ByteIO(rawData)) using (var data = new ByteReader(rawData))
{ {
var compressedSize = data.ReadUInt32(); var compressedSize = data.ReadUInt32();
decompressed = (int) decompressedSize; decompressed = (int) decompressedSize;

@ -15,13 +15,12 @@ namespace NetMFAPatcher.Utils
{ {
static class Helper static class Helper
{ {
public static string CleanInput(string strIn) public static string CleanInput(string strIn)
{ {
try try
{ {
return Regex.Replace(strIn, @"[^\w\.@-]", "", return Regex.Replace(strIn, @"[^\w\.@-]", "",
RegexOptions.None, TimeSpan.FromSeconds(1.5)); RegexOptions.None, TimeSpan.FromSeconds(1.5));
} }
catch (RegexMatchTimeoutException) catch (RegexMatchTimeoutException)
@ -39,55 +38,58 @@ namespace NetMFAPatcher.Utils
if (i > 0) if (i > 0)
{ {
temp += " " + item.ToString(format); temp += " " + item.ToString(format);
} }
else else
{ {
temp += item.ToString(format); temp += item.ToString(format);
} }
} }
if (log) if (log)
{ {
Console.WriteLine(temp); Console.WriteLine(temp);
} }
return temp;
return temp;
} }
public static string AutoReadUnicode(ByteIO reader)
public static string AutoReadUnicode(ByteReader reader)
{ {
var len = reader.ReadInt16(); var len = reader.ReadInt16();
reader.Skip(2); reader.Skip(2);
return reader.ReadWideString(len); return reader.ReadWideString(len);
} }
public static void AutoWriteUnicode(this ByteWriter writer,string value)
public static void AutoWriteUnicode(this ByteWriter writer, string value)
{ {
writer.WriteInt16((short)value.Length); writer.WriteInt16((short) value.Length);
writer.Skip(2); writer.Skip(2);
writer.WriteUnicode(value); writer.WriteUnicode(value);
} }
public static DataLoader LoadParameter(int code, ByteIO reader)
public static DataLoader LoadParameter(int code, ByteReader reader)
{ {
DataLoader item = null; DataLoader item = null;
if (code == 1) if (code == 1)
{ {
item = new ParamObject(reader); item = new ParamObject(reader);
} }
if (code == 2) if (code == 2)
{ {
item = new Time(reader); item = new Time(reader);
} }
if (code==3|| code == 10|| code == 11 || code == 12 || code == 17 || code == 26 || code == 31 || code == 43 || code == 57 || code == 58 || code == 60 || code == 61)
if (code == 3 || code == 10 || code == 11 || code == 12 || code == 17 || code == 26 || code == 31 ||
code == 43 || code == 57 || code == 58 || code == 60 || code == 61)
{ {
item = new Short(reader); item = new Short(reader);
} }
return item;
return item;
} }
public static string GetHex(this byte[] data, int count=-1,int position=0)
public static string GetHex(this byte[] data, int count = -1, int position = 0)
{ {
var actualCount = count; var actualCount = count;
if (actualCount == -1) actualCount = data.Length; if (actualCount == -1) actualCount = data.Length;
@ -97,6 +99,7 @@ namespace NetMFAPatcher.Utils
temp += data[i].ToString("X2"); temp += data[i].ToString("X2");
temp += " "; temp += " ";
} }
return temp; return temp;
} }
@ -112,13 +115,10 @@ namespace NetMFAPatcher.Utils
if (b < 128 && b > 32) charAcc += Convert.ToChar(b); if (b < 128 && b > 32) charAcc += Convert.ToChar(b);
else charAcc += '.'; else charAcc += '.';
} }
var bLen = block.Count(); var bLen = block.Count();
//var accLen= //var accLen=
} }
} }
public static byte[] GetContents(this ByteWriter wrt) public static byte[] GetContents(this ByteWriter wrt)
@ -126,12 +126,12 @@ namespace NetMFAPatcher.Utils
var buff = new byte[wrt.BaseStream.Length]; var buff = new byte[wrt.BaseStream.Length];
for (int i = 0; i < wrt.BaseStream.Length; i++) for (int i = 0; i < wrt.BaseStream.Length; i++)
{ {
buff.Append<byte>((byte)wrt.BaseStream.ReadByte()); buff.Append<byte>((byte) wrt.BaseStream.ReadByte());
} }
return buff; return buff;
} }
/// <summary> /// <summary>
/// Splits an array into several smaller arrays. /// Splits an array into several smaller arrays.
/// </summary> /// </summary>
@ -141,7 +141,7 @@ namespace NetMFAPatcher.Utils
/// <returns>An array containing smaller arrays.</returns> /// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size) public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{ {
for (var i = 0; i < (float)array.Length / size; i++) for (var i = 0; i < (float) array.Length / size; i++)
{ {
yield return array.Skip(i * size).Take(size); yield return array.Skip(i * size).Take(size);
} }
@ -150,7 +150,7 @@ namespace NetMFAPatcher.Utils
public static List<Color> GetColors(this byte[] bytes) public static List<Color> GetColors(this byte[] bytes)
{ {
List<Color> colors = new List<Color>(); List<Color> colors = new List<Color>();
for (int i = 0; i < bytes.Length; i+=4) for (int i = 0; i < bytes.Length; i += 4)
{ {
var color = Color.FromArgb(bytes[i], bytes[i + 1], bytes[i + 2], bytes[i + 3]); var color = Color.FromArgb(bytes[i], bytes[i + 1], bytes[i + 2], bytes[i + 3]);
colors.Add(color); colors.Add(color);
@ -161,10 +161,11 @@ namespace NetMFAPatcher.Utils
public static void CheckPattern(object source, object pattern) public static void CheckPattern(object source, object pattern)
{ {
if (source.GetType() != pattern.GetType()) throw new InvalidDataException("Data is not valid: types are different"); if (source.GetType() != pattern.GetType())
throw new InvalidDataException("Data is not valid: types are different");
if (source is string) if (source is string)
{ {
if ((string)source != (string)pattern) if ((string) source != (string) pattern)
{ {
throw new InvalidDataException($"Data is not valid: {source} != {pattern}"); throw new InvalidDataException($"Data is not valid: {source} != {pattern}");
} }
@ -178,13 +179,14 @@ namespace NetMFAPatcher.Utils
} }
} }
public static void OnImageSaved(int index,int all) public static void OnImageSaved(int index, int all)
{ {
Program.MyForm.UpdateImageBar(index,all); Program.MyForm.UpdateImageBar(index, all);
} }
public static void OnSoundSaved(int index,int all)
public static void OnSoundSaved(int index, int all)
{ {
Program.MyForm.UpdateSoundBar(index,all); Program.MyForm.UpdateSoundBar(index, all);
} }
private const long OneKb = 1024; private const long OneKb = 1024;
@ -194,65 +196,65 @@ namespace NetMFAPatcher.Utils
public static string ToPrettySize(this int value, int decimalPlaces = 0) public static string ToPrettySize(this int value, int decimalPlaces = 0)
{ {
return ((long)value).ToPrettySize(decimalPlaces); return ((long) value).ToPrettySize(decimalPlaces);
} }
public static string ToPrettySize(this long value, int decimalPlaces = 0) public static string ToPrettySize(this long value, int decimalPlaces = 0)
{ {
var asTb = Math.Round((double)value / OneTb, decimalPlaces); var asTb = Math.Round((double) value / OneTb, decimalPlaces);
var asGb = Math.Round((double)value / OneGb, decimalPlaces); var asGb = Math.Round((double) value / OneGb, decimalPlaces);
var asMb = Math.Round((double)value / OneMb, decimalPlaces); var asMb = Math.Round((double) value / OneMb, decimalPlaces);
var asKb = Math.Round((double)value / OneKb, decimalPlaces); var asKb = Math.Round((double) value / OneKb, decimalPlaces);
string chosenValue = asTb > 1 ? string.Format("{0} TB",asTb) string chosenValue = asTb > 1 ? string.Format("{0} TB", asTb)
: asGb > 1 ? string.Format("{0} GB",asGb) : asGb > 1 ? string.Format("{0} GB", asGb)
: asMb > 1 ? string.Format("{0} MB",asMb) : asMb > 1 ? string.Format("{0} MB", asMb)
: asKb > 1 ? string.Format("{0} KB",asKb) : asKb > 1 ? string.Format("{0} KB", asKb)
: string.Format("{0} B", Math.Round((double)value, decimalPlaces)); : string.Format("{0} B", Math.Round((double) value, decimalPlaces));
return chosenValue; return chosenValue;
} }
public static string ActualName(this ChunkList.Chunk chunk) public static string ActualName(this ChunkList.Chunk chunk)
{ {
var constName = ((Constants.ChunkNames)chunk.Id).ToString(); var constName = ((Constants.ChunkNames) chunk.Id).ToString();
int tempId = 0; int tempId = 0;
int.TryParse(constName,out tempId); int.TryParse(constName, out tempId);
if (tempId != chunk.Id) return constName; if (tempId != chunk.Id) return constName;
else return $"Unknown-{chunk.Id}"; else return $"Unknown-{chunk.Id}";
} }
public static ChunkNode GetChunkNode(ChunkList.Chunk chunk,string customName = "[DEFAULT-NAME]") public static ChunkNode GetChunkNode(ChunkList.Chunk chunk, string customName = "[DEFAULT-NAME]")
{ {
ChunkNode node = null; ChunkNode node = null;
if (chunk.Loader != null) if (chunk.Loader != null)
{ {
node = new ChunkNode(chunk.Name,chunk.Loader); node = new ChunkNode(chunk.Name, chunk.Loader);
} }
else else
{ {
node = new ChunkNode(chunk.Name,chunk); node = new ChunkNode(chunk.Name, chunk);
} }
if (customName != "[DEFAULT-NAME]") if (customName != "[DEFAULT-NAME]")
{ {
node.Text = customName; node.Text = customName;
} }
return node; return node;
} }
public static Animation GetClosestAnimation(int index, Dictionary<int,Animation> animDict,int count) public static Animation GetClosestAnimation(int index, Dictionary<int, Animation> animDict, int count)
{ {
try try
{ {
return animDict[index]; return animDict[index];
} }
catch {} catch
{
}
return null; return null;
} }
[DllImport("kernel32.dll")] [DllImport("kernel32.dll")]
public static extern IntPtr GetConsoleWindow(); public static extern IntPtr GetConsoleWindow();
@ -263,7 +265,24 @@ namespace NetMFAPatcher.Utils
public const int SW_SHOW = 5; public const int SW_SHOW = 5;
public static T[] To1DArray<T>(T[,] input)
{
// Step 1: get total size of 2D array, and allocate 1D array.
int size = input.Length;
T[] result = new T[size];
// Step 2: copy 2D array elements into a 1D array.
int write = 0;
for (int i = 0; i <= input.GetUpperBound(0); i++)
{
for (int z = 0; z <= input.GetUpperBound(1); z++)
{
result[write++] = input[i, z];
}
}
// Step 3: return the new array.
return result;
}
} }
} }

@ -64,7 +64,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public override void Read() public override void Read()
{ {
Reader = new ByteIO(Chunk.ChunkData); Reader = new ByteReader(Chunk.ChunkData);
Size = Reader.ReadInt32(); Size = Reader.ReadInt32();
Flags.flag=(uint) Reader.ReadInt16();//I finally got my balls back Flags.flag=(uint) Reader.ReadInt16();//I finally got my balls back
@ -105,7 +105,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
} }
public AppHeader(ByteIO reader) : base(reader) public AppHeader(ByteReader reader) : base(reader)
{ {
} }
@ -119,7 +119,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
{ {
public List<PlayerControl> Items; public List<PlayerControl> Items;
public Controls(ByteIO reader) : base(reader) public Controls(ByteReader reader) : base(reader)
{ {
this.Reader = reader; this.Reader = reader;
} }
@ -155,10 +155,10 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public class PlayerControl public class PlayerControl
{ {
int _controlType = 0; int _controlType = 0;
ByteIO _reader; ByteReader _reader;
Keys _keys; Keys _keys;
public PlayerControl(ByteIO reader) public PlayerControl(ByteReader reader)
{ {
this._reader = reader; this._reader = reader;
} }
@ -188,9 +188,9 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
int _button2; int _button2;
int _button3; int _button3;
int _button4; int _button4;
ByteIO _reader; ByteReader _reader;
public Keys(ByteIO reader) public Keys(ByteReader reader)
{ {
this._reader = reader; this._reader = reader;
} }

@ -16,7 +16,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public List<short> AccelKey; public List<short> AccelKey;
public List<short> AccelId; public List<short> AccelId;
public AppMenu(ByteIO reader) : base(reader) public AppMenu(ByteReader reader) : base(reader)
{ {
} }
@ -62,7 +62,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
} }
} }
public void Load(ByteIO reader) public void Load(ByteReader reader)
{ {
while(true) while(true)
{ {
@ -94,7 +94,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public int Flags = 0; public int Flags = 0;
public int Id = 0; public int Id = 0;
public string Mnemonic = ""; public string Mnemonic = "";
public AppMenuItem(ByteIO reader) : base(reader) public AppMenuItem(ByteReader reader) : base(reader)
{ {
} }

@ -6,10 +6,10 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public abstract class ChunkLoader//:DataLoader public abstract class ChunkLoader//:DataLoader
{ {
public Chunk Chunk; public Chunk Chunk;
public ByteIO Reader; public ByteReader Reader;
public bool Verbose = false; public bool Verbose = false;
protected ChunkLoader(ByteIO reader) protected ChunkLoader(ByteReader reader)
{ {
this.Reader = reader; this.Reader = reader;
} }

@ -16,7 +16,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
{ {
class FrameName : StringChunk class FrameName : StringChunk
{ {
public FrameName(ByteIO reader) : base(reader) public FrameName(ByteReader reader) : base(reader)
{ {
} }
@ -27,7 +27,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class FramePassword : StringChunk class FramePassword : StringChunk
{ {
public FramePassword(ByteIO reader) : base(reader) public FramePassword(ByteReader reader) : base(reader)
{ {
} }
@ -76,7 +76,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public override void Read() public override void Read()
{ {
var frameReader = new ByteIO(Chunk.ChunkData); var frameReader = new ByteReader(Chunk.ChunkData);
Chunks = new ChunkList(); Chunks = new ChunkList();
Chunks.Verbose = false; Chunks.Verbose = false;
@ -122,7 +122,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
} }
public Frame(ByteIO reader) : base(reader) public Frame(ByteReader reader) : base(reader)
{ {
} }
@ -150,7 +150,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
}); });
public byte[] Background; public byte[] Background;
public FrameHeader(ByteIO reader) : base(reader) public FrameHeader(ByteReader reader) : base(reader)
{ {
} }
@ -191,7 +191,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public int CountOfObjects=0; public int CountOfObjects=0;
public List<ObjectInstance> Items = new List<ObjectInstance>(); public List<ObjectInstance> Items = new List<ObjectInstance>();
public ObjectInstances(ByteIO reader) : base(reader) public ObjectInstances(ByteReader reader) : base(reader)
{ {
} }
@ -237,7 +237,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public string Name; public string Name;
public short ParentHandle; public short ParentHandle;
public ObjectInstance(ByteIO reader) : base(reader) public ObjectInstance(ByteReader reader) : base(reader)
{ {
} }
@ -292,7 +292,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class Layer : ChunkLoader class Layer : ChunkLoader
{ {
public Layer(ByteIO reader) : base(reader) public Layer(ByteReader reader) : base(reader)
{ {
} }

@ -17,7 +17,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public List<string> Names = new List<string>(); public List<string> Names = new List<string>();
public int NumberOfItems; public int NumberOfItems;
public FrameItems(Chunk chunk) : base(chunk) { } public FrameItems(Chunk chunk) : base(chunk) { }
public FrameItems(ByteIO reader) : base(reader) { } public FrameItems(ByteReader reader) : base(reader) { }
public override void Print(bool ext) public override void Print(bool ext)
{ {

@ -28,7 +28,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
{ {
} }
public ObjectInfo(ByteIO reader) : base(reader) public ObjectInfo(ByteReader reader) : base(reader)
{ {
} }
@ -91,7 +91,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public class ObjectName : StringChunk public class ObjectName : StringChunk
{ {
public ObjectName(ByteIO reader) : base(reader) public ObjectName(ByteReader reader) : base(reader)
{ {
} }
@ -105,7 +105,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public bool IsCommon; public bool IsCommon;
public ObjectCommon Loader; public ObjectCommon Loader;
public ObjectProperties(ByteIO reader) : base(reader) public ObjectProperties(ByteReader reader) : base(reader)
{ {
} }
@ -151,7 +151,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public UInt32 InkEffect; public UInt32 InkEffect;
public UInt32 InkEffectParameter; public UInt32 InkEffectParameter;
public ObjectHeader(ByteIO reader) : base(reader) public ObjectHeader(ByteReader reader) : base(reader)
{ {
} }

@ -17,7 +17,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
public override void Read() public override void Read()
{ {
Reader = new ByteIO(Chunk.ChunkData); Reader = new ByteReader(Chunk.ChunkData);
Value = Reader.ReadWideString(); Value = Reader.ReadWideString();
} }
@ -36,7 +36,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
} }
public StringChunk(ByteIO reader) : base(reader) public StringChunk(ByteReader reader) : base(reader)
{ {
} }
@ -47,7 +47,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class AppName : StringChunk class AppName : StringChunk
{ {
public AppName(ByteIO reader) : base(reader) public AppName(ByteReader reader) : base(reader)
{ {
} }
@ -58,7 +58,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class AppAuthor : StringChunk class AppAuthor : StringChunk
{ {
public AppAuthor(ByteIO reader) : base(reader) public AppAuthor(ByteReader reader) : base(reader)
{ {
} }
@ -69,7 +69,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class ExtPath : StringChunk class ExtPath : StringChunk
{ {
public ExtPath(ByteIO reader) : base(reader) public ExtPath(ByteReader reader) : base(reader)
{ {
} }
@ -80,7 +80,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class EditorFilename : StringChunk class EditorFilename : StringChunk
{ {
public EditorFilename(ByteIO reader) : base(reader) public EditorFilename(ByteReader reader) : base(reader)
{ {
} }
@ -91,7 +91,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class TargetFilename : StringChunk class TargetFilename : StringChunk
{ {
public TargetFilename(ByteIO reader) : base(reader) public TargetFilename(ByteReader reader) : base(reader)
{ {
} }
@ -102,7 +102,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class AppDoc : StringChunk class AppDoc : StringChunk
{ {
public AppDoc(ByteIO reader) : base(reader) public AppDoc(ByteReader reader) : base(reader)
{ {
} }
@ -113,7 +113,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class AboutText : StringChunk class AboutText : StringChunk
{ {
public AboutText(ByteIO reader) : base(reader) public AboutText(ByteReader reader) : base(reader)
{ {
} }
@ -124,7 +124,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class Copyright : StringChunk class Copyright : StringChunk
{ {
public Copyright(ByteIO reader) : base(reader) public Copyright(ByteReader reader) : base(reader)
{ {
} }
@ -135,7 +135,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
class DemoFilePath : StringChunk class DemoFilePath : StringChunk
{ {
public DemoFilePath(ByteIO reader) : base(reader) public DemoFilePath(ByteReader reader) : base(reader)
{ {
} }

@ -26,7 +26,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
//i am testing with no fonts suck pinus haha //i am testing with no fonts suck pinus haha
} }
public FontBank(ByteIO reader) : base(reader) public FontBank(ByteReader reader) : base(reader)
{ {
} }

@ -5,11 +5,11 @@ using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Windows.Forms; using System.Windows.Forms;
using NetMFAPatcher.GUI; using NetMFAPatcher.GUI;
using NetMFAPatcher.MMFParser.Data; using NetMFAPatcher.MMFParser.Data;
using NetMFAPatcher.Utils; using NetMFAPatcher.Utils;
using static NetMFAPatcher.MMFParser.Data.ChunkList; using static NetMFAPatcher.MMFParser.Data.ChunkList;
namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
@ -19,7 +19,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
public Dictionary<int, ImageItem> Images = new Dictionary<int, ImageItem>(); public Dictionary<int, ImageItem> Images = new Dictionary<int, ImageItem>();
public uint NumberOfItems; public uint NumberOfItems;
public ImageBank(ByteIO reader) : base(reader) public ImageBank(ByteReader reader) : base(reader)
{ {
} }
@ -41,8 +41,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
public override void Read() public override void Read()
{ {
Reader.Seek(0); //Reset the reader to avoid bugs when dumping more than once
Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
NumberOfItems = Reader.ReadUInt32(); NumberOfItems = Reader.ReadUInt32();
@ -56,15 +55,15 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
MainForm.BreakImages = false; MainForm.BreakImages = false;
break; break;
} }
var item = new ImageItem(Reader); var item = new ImageItem(Reader);
item.Read(); item.Read();
Images.Add(item.Handle,item); Images.Add(item.Handle, item);
if (Settings.DumpImages) if (Settings.DumpImages)
{ {
item.Save($"{Settings.ImagePath}\\" + item.Handle.ToString() + ".png"); item.Save($"{Settings.ImagePath}\\" + item.Handle.ToString() + ".png");
Console.ReadKey(); Console.ReadKey();
Helper.OnImageSaved(i,(int) NumberOfItems); Helper.OnImageSaved(i, (int) NumberOfItems);
} }
if (Exe.LatestInst.GameData.ProductBuild >= 284) if (Exe.LatestInst.GameData.ProductBuild >= 284)
@ -108,6 +107,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
int _indexed; int _indexed;
public byte[] rawImg; public byte[] rawImg;
public byte[] rawAlpha;
public bool Debug = false; public bool Debug = false;
@ -122,7 +122,6 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
public override void Print(bool ext) public override void Print(bool ext)
{ {
} }
public override string[] GetReadableData() public override string[] GetReadableData()
@ -133,7 +132,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
public void Load() public void Load()
{ {
Reader.Seek(Position); Reader.Seek(Position);
ByteIO imageReader; ByteReader imageReader;
imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a); imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
@ -145,7 +144,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
if (Debug) if (Debug)
{ {
imageReader = new ByteIO(imageReader.ReadBytes(Size + 20)); imageReader = new ByteReader(imageReader.ReadBytes(Size + 20));
} }
_width = imageReader.ReadInt16(); _width = imageReader.ReadInt16();
@ -160,25 +159,12 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
_actionY = imageReader.ReadInt16(); _actionY = imageReader.ReadInt16();
_transparent = imageReader.ReadBytes(4); _transparent = imageReader.ReadBytes(4);
Logger.Log($"Loading image {Handle.ToString(),4} Size: {_width,4}x{_height,4}"); Logger.Log($"Loading image {Handle.ToString(),4} Size: {_width,4}x{_height,4}");
byte[] imageData = new byte[1]; byte[] imageData;
if (Debug2 == 1)
{
var imgLen = imageReader.Size() - imageReader.Tell();
var data = imageReader.ReadBytes((int) imgLen);
imageReader.BaseStream.Position -= imgLen;
File.WriteAllBytes("CumImage.bin", Ionic.Zlib.DeflateStream.CompressBuffer(data));
}
if (Debug2 == 2)
{
imageData = File.ReadAllBytes("CumImage.bin");
}
if (Flags["LZX"]) if (Flags["LZX"])
{ {
var DecompressedSize = imageReader.ReadUInt32(); uint decompressedSize = imageReader.ReadUInt32();
imageData = Decompressor.decompress_block(imageReader, (int) (imageReader.Size() - imageReader.Tell()), imageData = Decompressor.decompress_block(imageReader, (int) (imageReader.Size() - imageReader.Tell()),
(int) DecompressedSize); (int) decompressedSize);
} }
else else
{ {
@ -186,18 +172,13 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
} }
int bytesRead = 0;
int bytesRead = 0;
rawImg = imageData; rawImg = imageData;
if (Flags["RLE"] || Flags["RLEW"] || Flags["RLET"]) if (Flags["RLE"] || Flags["RLEW"] || Flags["RLET"])
{ {
} }
else else
{ {
switch (_graphicMode) switch (_graphicMode)
{ {
case 4: case 4:
@ -222,6 +203,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
if (Flags["Alpha"]) if (Flags["Alpha"])
{ {
byte[,] alpha = ImageHelper.ReadAlpha(imageData, _width, _height, Size - alphaSize); byte[,] alpha = ImageHelper.ReadAlpha(imageData, _width, _height, Size - alphaSize);
rawAlpha = Helper.To1DArray(alpha);
int stride = _width * 4; int stride = _width * 4;
for (int y = 0; y < _height; y++) for (int y = 0; y < _height; y++)
{ {
@ -256,44 +238,41 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
public void Write(ByteWriter writer) public void Write(ByteWriter writer)
{ {
writer.WriteInt32(_checksum); ByteWriter chunk = new ByteWriter(new MemoryStream());
writer.WriteInt32(_references); chunk.WriteInt32(_checksum);
writer.WriteInt32(_colorArray.Length); chunk.WriteInt32(_references);
writer.WriteInt16((short) _width); chunk.WriteInt32(_colorArray.Length);
writer.WriteInt16((short) _height); chunk.WriteInt16((short) _width);
writer.WriteInt8(4); chunk.WriteInt16((short) _height);
chunk.WriteInt8((byte) _graphicMode);
if (Flags["Alpha"]) if (Flags["Alpha"])
{ {
writer.WriteInt8(16); chunk.WriteInt8(16);
} }
else else
{ {
writer.WriteInt8(0); chunk.WriteInt8(0);
} }
writer.Skip(2);
writer.WriteInt16((short) _xHotspot);
writer.WriteInt16((short) _yHotspot);
writer.WriteInt16((short) _actionX);
writer.WriteInt16((short) _actionY);
writer.WriteBytes(_transparent);
writer.Skip(1);
writer.WriteBytes(rawImg);
chunk.Skip(2);
chunk.WriteInt16((short) _xHotspot);
chunk.WriteInt16((short) _yHotspot);
chunk.WriteInt16((short) _actionX);
chunk.WriteInt16((short) _actionY);
chunk.WriteBytes(_transparent);
chunk.WriteBytes(rawImg);
chunk.WriteBytes(rawAlpha);
writer.WriteInt32(Handle);
chunk.Seek(0);
MemoryStream ms = (MemoryStream) chunk.BaseStream;
writer.WriteBytes(ms.GetBuffer());
} }
public ImageItem(ByteReader reader) : base(reader)
public ImageItem(ByteIO reader) : base(reader)
{ {
} }

@ -34,7 +34,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
} }
} }
public MusicBank(ByteIO reader) : base(reader) public MusicBank(ByteReader reader) : base(reader)
{ {
} }
@ -62,7 +62,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
{ {
} }
public MusicFile(ByteIO reader) : base(reader) public MusicFile(ByteReader reader) : base(reader)
{ {
} }

@ -62,7 +62,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
} }
} }
public SoundBank(ByteIO reader) : base(reader) public SoundBank(ByteReader reader) : base(reader)
{ {
} }
@ -90,7 +90,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
{ {
} }
public SoundBase(ByteIO reader) : base(reader) public SoundBase(ByteReader reader) : base(reader)
{ {
} }
@ -118,15 +118,15 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
Flags = (int)Reader.ReadUInt32(); //flags Flags = (int)Reader.ReadUInt32(); //flags
var reserved = Reader.ReadInt32(); var reserved = Reader.ReadInt32();
var nameLenght = Reader.ReadInt32(); var nameLenght = Reader.ReadInt32();
ByteIO soundData; ByteReader soundData;
if (IsCompressed) //compressed if (IsCompressed) //compressed
{ {
var size = Reader.ReadInt32(); var size = Reader.ReadInt32();
soundData = new ByteIO(Decompressor.decompress_block(Reader, size, decompressedSize)); soundData = new ByteReader(Decompressor.decompress_block(Reader, size, decompressedSize));
} }
else else
{ {
soundData = new ByteIO(Reader.ReadBytes(decompressedSize)); soundData = new ByteReader(Reader.ReadBytes(decompressedSize));
} }
if (IsCompressed) if (IsCompressed)
{ {
@ -171,7 +171,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders.Banks
} }
public SoundItem(ByteIO reader) : base(reader) public SoundItem(ByteReader reader) : base(reader)
{ {
} }

@ -18,7 +18,7 @@ namespace NetMFAPatcher.MMFParser.ChunkLoaders
List<byte> _points; List<byte> _points;
public AppIcon(ByteIO reader) : base(reader) public AppIcon(ByteReader reader) : base(reader)
{ {
} }

@ -30,6 +30,6 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
} }
public ChunkList(ByteIO reader) : base(reader) { } public ChunkList(ByteReader reader) : base(reader) { }
} }
} }

@ -10,7 +10,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
{ {
public List<PlayerControl> Items; public List<PlayerControl> Items;
public Controls(ByteIO reader) : base(reader) public Controls(ByteReader reader) : base(reader)
{ {
} }
@ -57,7 +57,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
public int Button4; public int Button4;
public PlayerControl(ByteIO reader) : base(reader) public PlayerControl(ByteReader reader) : base(reader)
{ {
} }

@ -14,7 +14,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
public Color Background; public Color Background;
public int MaxObjects; public int MaxObjects;
public Frame(ByteIO reader) : base(reader) public Frame(ByteReader reader) : base(reader)
{ {
} }

@ -63,7 +63,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
} }
public FrameItem(ByteIO reader):base(reader) public FrameItem(ByteReader reader):base(reader)
{ } { }
} }
} }

@ -71,7 +71,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
Items[key].Write(writer); Items[key].Write(writer);
} }
} }
public AgmiBank(ByteIO reader) : base(reader) public AgmiBank(ByteReader reader) : base(reader)
{ {
} }

@ -27,7 +27,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
} }
public Layer(ByteIO reader):base(reader) public Layer(ByteReader reader):base(reader)
{ {
} }
} }

@ -8,7 +8,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
public class ValueList : DataLoader public class ValueList : DataLoader
{ {
public List<ValueItem> Items = new List<ValueItem>(); public List<ValueItem> Items = new List<ValueItem>();
public ValueList(ByteIO reader) : base(reader) public ValueList(ByteReader reader) : base(reader)
{ {
} }
@ -44,7 +44,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders
public object Value; public object Value;
public string Name; public string Name;
public ValueItem(ByteIO reader) : base(reader) public ValueItem(ByteReader reader) : base(reader)
{ {
} }

@ -14,6 +14,6 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
{ {
base.Read(); base.Read();
} }
public Active(ByteIO reader) : base(reader) { } public Active(ByteReader reader) : base(reader) { }
} }
} }

@ -24,7 +24,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
} }
public AnimationObject(ByteIO reader) : base(reader) { } public AnimationObject(ByteReader reader) : base(reader) { }
} }
class Animation : DataLoader class Animation : DataLoader
{ {
@ -49,7 +49,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
} }
public Animation(ByteIO reader) : base(reader) { } public Animation(ByteReader reader) : base(reader) { }
} }
class AnimationDirection : DataLoader class AnimationDirection : DataLoader
{ {
@ -69,7 +69,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
var frames = new List<int>(); var frames = new List<int>();
} }
public AnimationDirection(ByteIO reader) : base(reader) { } public AnimationDirection(ByteReader reader) : base(reader) { }
} }
} }

@ -23,12 +23,12 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
_items.Add(item); _items.Add(item);
} }
} }
public Behaviours(ByteIO reader) : base(reader) { } public Behaviours(ByteReader reader) : base(reader) { }
} }
class Behaviour : DataLoader class Behaviour : DataLoader
{ {
public string Name = "ERROR"; public string Name = "ERROR";
public ByteIO Data; public ByteReader Data;
public override void Print() public override void Print()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
@ -37,9 +37,9 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
public override void Read() public override void Read()
{ {
Name = Reader.ReadAscii(Reader.ReadInt32()); Name = Reader.ReadAscii(Reader.ReadInt32());
Data = new ByteIO(Reader.ReadBytes(Reader.ReadInt32())); Data = new ByteReader(Reader.ReadBytes(Reader.ReadInt32()));
} }
public Behaviour(ByteIO reader) : base(reader) { } public Behaviour(ByteReader reader) : base(reader) { }
} }
} }

@ -26,7 +26,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
} }
public Movements(ByteIO reader) : base(reader) { } public Movements(ByteReader reader) : base(reader) { }
} }
class Movement : DataLoader class Movement : DataLoader
{ {
@ -45,7 +45,7 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
var dataSize = Reader.ReadInt32(); var dataSize = Reader.ReadInt32();
if(extension.Length>0) if(extension.Length>0)
{ {
var newReader = new ByteIO(Reader.ReadBytes(dataSize)); var newReader = new ByteReader(Reader.ReadBytes(dataSize));
} }
@ -60,6 +60,6 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
} }
} }
public Movement(ByteIO reader) : base(reader) { } public Movement(ByteReader reader) : base(reader) { }
} }
} }

@ -68,6 +68,6 @@ namespace NetMFAPatcher.MMFParser.MFALoaders.mfachunks
} }
public ObjectLoader(ByteIO reader) : base(reader) { } public ObjectLoader(ByteReader reader) : base(reader) { }
} }
} }

Loading…
Cancel
Save