Skip to content

Commit

Permalink
Add extract me from bios
Browse files Browse the repository at this point in the history
  • Loading branch information
kolyandex committed Jul 8, 2017
1 parent 547d291 commit 8b12c33
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 21 deletions.
10 changes: 10 additions & 0 deletions MEInject/MEInject/MainForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

53 changes: 47 additions & 6 deletions MEInject/MEInject/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
// ReSharper disable InconsistentNaming
Expand Down Expand Up @@ -301,7 +302,40 @@ private void LoadBIOS(string path)
BIOSfile = null;
throw new Exception("Invalid input file " + path.SafeFileName());
}
private void ExtractButton_Click(object sender, EventArgs e)
{
if (BIOSfile == null)
{
Log("Nothing to save :(", LogLevel.Warning);
return;
}
var sfd = new SaveFileDialog
{
AddExtension = true,
DefaultExt = "bin",
FileName = _mode + " from bios " + BIOSfilename
};

if (sfd.ShowDialog() != DialogResult.OK) return;

try
{
var me = new byte[BIOS_ME_end_offset - BIOS_ME_start_offset];
Array.Copy(BIOSfile, BIOS_ME_start_offset, me, 0, BIOS_ME_end_offset - BIOS_ME_start_offset);
var _me = new List<byte>(me);
for (int i = _me.Count - 1; i >= 0; i--)
{
if (_me[i] == 0xFF) _me.RemoveAt(i);
else break;
}
File.WriteAllBytes(sfd.FileName, _me.ToArray());
Log("Saved to " + sfd.FileName, LogLevel.Info);
}
catch (Exception exception)
{
Log(exception.Message, LogLevel.Error);
}
}
void UpdateComboBox()
{
MEsComboBox.Items.Clear();
Expand Down Expand Up @@ -341,15 +375,21 @@ private void SaveButton_Click(object sender, EventArgs e)
return;
}
MEfile = File.ReadAllBytes(_validMEfiles[MEsComboBox.SelectedIndex]);


for (var i = 0; i < MEfile.Length; i++) BIOSfile[i + BIOS_ME_start_offset] = MEfile[i];


for (var i = 0; i < BIOS_ME_end_offset - BIOS_ME_start_offset; i++)
{
if (i < MEfile.Length)
{
BIOSfile[i + BIOS_ME_start_offset] = MEfile[i];
continue;
}
BIOSfile[i + BIOS_ME_start_offset] = (byte)0xFF;
}
var sfd = new SaveFileDialog
{
AddExtension = true,
DefaultExt = "bin",
FileName = $@"{BIOSfilename.Replace(".bin", string.Empty)} + {_mode} {MEsComboBox.Text}"
FileName = $@"{Regex.Replace(BIOSfilename, ".bin", string.Empty, RegexOptions.IgnoreCase)} + {_mode} {MEsComboBox.Text}" // $@"{BIOSfilename.Replace(".bin", string.Empty)} + {_mode} {MEsComboBox.Text}"
};

if (sfd.ShowDialog() != DialogResult.OK) return;
Expand Down Expand Up @@ -430,7 +470,6 @@ private void Log(string message, LogLevel level)
color = Color.Green;
break;
case LogLevel.Warning:
return;
color = Color.DarkOrange;
break;
case LogLevel.Error:
Expand Down Expand Up @@ -474,5 +513,7 @@ private void MinorVer_checkBox_CheckedChanged(object sender, EventArgs e)
{
UpdateComboBox();
}


}
}
57 changes: 42 additions & 15 deletions MEInject/MEInject/MainForm.resx
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;OpenBIOSButton.ZOrder" xml:space="preserve">
<value>13</value>
<value>14</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>932, 28</value>
Expand All @@ -165,7 +165,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>12</value>
<value>13</value>
</data>
<data name="DebugTextBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Courier New, 9.75pt, style=Bold</value>
Expand All @@ -192,7 +192,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;DebugTextBox.ZOrder" xml:space="preserve">
<value>11</value>
<value>12</value>
</data>
<data name="OpenMEButton.Location" type="System.Drawing.Point, System.Drawing">
<value>268, 12</value>
Expand All @@ -216,7 +216,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;OpenMEButton.ZOrder" xml:space="preserve">
<value>10</value>
<value>11</value>
</data>
<data name="MEoffsetLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -246,7 +246,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MEoffsetLabel.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="SaveButton.Location" type="System.Drawing.Point, System.Drawing">
<value>524, 12</value>
Expand All @@ -270,7 +270,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;SaveButton.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="MEsizeInBIOSLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -300,7 +300,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MEsizeInBIOSLabel.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="MEinBIOS_ver_label.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -330,7 +330,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MEinBIOS_ver_label.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="SuitableMEs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -364,7 +364,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;SuitableMEs.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="MEsComboBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Courier New, 9.75pt, style=Bold</value>
Expand All @@ -388,16 +388,16 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MEsComboBox.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="UpdateDB_Button.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="UpdateDB_Button.Location" type="System.Drawing.Point, System.Drawing">
<value>268, 45</value>
<value>398, 45</value>
</data>
<data name="UpdateDB_Button.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 27</value>
<value>120, 27</value>
</data>
<data name="UpdateDB_Button.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
Expand All @@ -415,7 +415,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;UpdateDB_Button.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="MinorVer_checkBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -445,7 +445,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MinorVer_checkBox.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
Expand Down Expand Up @@ -478,7 +478,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="WinKeyTextBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Courier New, 9.75pt, style=Bold</value>
Expand All @@ -505,6 +505,33 @@
<value>$this</value>
</data>
<data name="&gt;&gt;WinKeyTextBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="ExtractButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ExtractButton.Location" type="System.Drawing.Point, System.Drawing">
<value>268, 45</value>
</data>
<data name="ExtractButton.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 27</value>
</data>
<data name="ExtractButton.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="ExtractButton.Text" xml:space="preserve">
<value>Extract region</value>
</data>
<data name="&gt;&gt;ExtractButton.Name" xml:space="preserve">
<value>ExtractButton</value>
</data>
<data name="&gt;&gt;ExtractButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ExtractButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ExtractButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Expand Down

0 comments on commit 8b12c33

Please sign in to comment.