339 lines
14 KiB
C#
339 lines
14 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
|
|
public class frmBinTool : Form
|
|
{
|
|
public FileStream fs;
|
|
private Class10_settings class10_settings_0;
|
|
private Class18 class18_0;
|
|
private IContainer components;
|
|
private Label label2;
|
|
private Label label3;
|
|
private TextBox textBox2;
|
|
private TextBox textBox3;
|
|
private Button button2;
|
|
private Button button3;
|
|
private Button button5;
|
|
private OpenFileDialog openFileDialog1;
|
|
private Button button1;
|
|
private Label label1;
|
|
|
|
internal frmBinTool(ref Class10_settings cfg, ref Class18 class18_1)
|
|
{
|
|
this.class10_settings_0 = cfg;
|
|
this.class18_0 = class18_1;
|
|
this.InitializeComponent();
|
|
|
|
/*foreach (Control control in base.Controls)
|
|
{
|
|
float emSize = control.Font.Size * (class18_0.class10_settings_0.scaleRate / 100f);
|
|
control.Font = new Font(control.Font.Name, emSize, control.Font.Style, control.Font.Unit);
|
|
}*/
|
|
}
|
|
|
|
private void Button1_Click(object sender, EventArgs e)
|
|
{
|
|
this.textBox2.Text = "BLANK";
|
|
}
|
|
|
|
private void Button2_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if ((this.openFileDialog1.ShowDialog() == DialogResult.OK) && ((this.openFileDialog1.FileName != "openFileDialog1") || (this.openFileDialog1.FileName != "")))
|
|
{
|
|
this.textBox3.Text = this.openFileDialog1.FileName;
|
|
this.fs = new FileStream(this.textBox3.Text, FileMode.Open, FileAccess.Read);
|
|
if (((int) this.fs.Length) == 0x8000)
|
|
{
|
|
string fileName = Path.GetFileName(this.textBox3.Text);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "invalid file size");
|
|
this.textBox3.Text = "";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "EXCEPTION:" + exception);
|
|
}
|
|
}
|
|
|
|
private void Button3_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if ((this.openFileDialog1.ShowDialog() == DialogResult.OK) && ((this.openFileDialog1.FileName != "openFileDialog1") || (this.openFileDialog1.FileName != "")))
|
|
{
|
|
this.textBox2.Text = this.openFileDialog1.FileName;
|
|
this.fs = new FileStream(this.textBox2.Text, FileMode.Open, FileAccess.Read);
|
|
if (((int) this.fs.Length) == 0x8000)
|
|
{
|
|
string fileName = Path.GetFileName(this.textBox2.Text);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "invalid file size");
|
|
this.textBox2.Text = "";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "EXCEPTION:" + exception);
|
|
}
|
|
}
|
|
|
|
private void Button5_Click(object sender, EventArgs e)
|
|
{
|
|
if ((this.textBox2.Text == "") || (this.textBox3.Text == ""))
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Select MAP 1 and MAP 2 to fill the bin file.", "Error");
|
|
}
|
|
else
|
|
{
|
|
string[] tmpfiles = new string[] { this.textBox2.Text, this.textBox3.Text };
|
|
if (this.MergeFile(tmpfiles))
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "File Saved!", "Warning");
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Error Saving File!", "Error");
|
|
}
|
|
}
|
|
}
|
|
|
|
public static byte[] Combine(byte[] first, byte[] second)
|
|
{
|
|
byte[] dst = new byte[first.Length + second.Length];
|
|
Buffer.BlockCopy(first, 0, dst, 0, first.Length);
|
|
Buffer.BlockCopy(second, 0, dst, first.Length, second.Length);
|
|
return dst;
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing && (this.components != null))
|
|
{
|
|
this.components.Dispose();
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void FrmBinTool_Load(object sender, EventArgs e)
|
|
{
|
|
if (this.class18_0.method_25_GetFilename() != null)
|
|
{
|
|
this.textBox3.Text = this.class10_settings_0.romFilePath + @"\" + Path.GetFileName(this.class18_0.method_25_GetFilename());
|
|
}
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmBinTool));
|
|
this.label2 = new System.Windows.Forms.Label();
|
|
this.label3 = new System.Windows.Forms.Label();
|
|
this.textBox2 = new System.Windows.Forms.TextBox();
|
|
this.textBox3 = new System.Windows.Forms.TextBox();
|
|
this.button2 = new System.Windows.Forms.Button();
|
|
this.button3 = new System.Windows.Forms.Button();
|
|
this.button5 = new System.Windows.Forms.Button();
|
|
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
|
this.button1 = new System.Windows.Forms.Button();
|
|
this.label1 = new System.Windows.Forms.Label();
|
|
this.SuspendLayout();
|
|
//
|
|
// label2
|
|
//
|
|
this.label2.AutoSize = true;
|
|
this.label2.Location = new System.Drawing.Point(33, 9);
|
|
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
this.label2.Name = "label2";
|
|
this.label2.Size = new System.Drawing.Size(105, 13);
|
|
this.label2.TabIndex = 2;
|
|
this.label2.Text = "MAP 1: 0000-7FFFF:";
|
|
//
|
|
// label3
|
|
//
|
|
this.label3.AutoSize = true;
|
|
this.label3.Location = new System.Drawing.Point(182, 9);
|
|
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
this.label3.Name = "label3";
|
|
this.label3.Size = new System.Drawing.Size(111, 13);
|
|
this.label3.TabIndex = 3;
|
|
this.label3.Text = "MAP 2: 80000-FFFFF:";
|
|
//
|
|
// textBox2
|
|
//
|
|
this.textBox2.Location = new System.Drawing.Point(33, 29);
|
|
this.textBox2.Margin = new System.Windows.Forms.Padding(2);
|
|
this.textBox2.Name = "textBox2";
|
|
this.textBox2.ReadOnly = true;
|
|
this.textBox2.Size = new System.Drawing.Size(146, 20);
|
|
this.textBox2.TabIndex = 4;
|
|
//
|
|
// textBox3
|
|
//
|
|
this.textBox3.Location = new System.Drawing.Point(184, 29);
|
|
this.textBox3.Margin = new System.Windows.Forms.Padding(2);
|
|
this.textBox3.Name = "textBox3";
|
|
this.textBox3.ReadOnly = true;
|
|
this.textBox3.Size = new System.Drawing.Size(146, 20);
|
|
this.textBox3.TabIndex = 5;
|
|
//
|
|
// button2
|
|
//
|
|
this.button2.Location = new System.Drawing.Point(184, 53);
|
|
this.button2.Margin = new System.Windows.Forms.Padding(2);
|
|
this.button2.Name = "button2";
|
|
this.button2.Size = new System.Drawing.Size(146, 22);
|
|
this.button2.TabIndex = 7;
|
|
this.button2.Text = "Select File";
|
|
this.button2.UseVisualStyleBackColor = true;
|
|
this.button2.Click += new System.EventHandler(this.Button2_Click);
|
|
//
|
|
// button3
|
|
//
|
|
this.button3.Location = new System.Drawing.Point(33, 53);
|
|
this.button3.Margin = new System.Windows.Forms.Padding(2);
|
|
this.button3.Name = "button3";
|
|
this.button3.Size = new System.Drawing.Size(146, 22);
|
|
this.button3.TabIndex = 8;
|
|
this.button3.Text = "Select File";
|
|
this.button3.UseVisualStyleBackColor = true;
|
|
this.button3.Click += new System.EventHandler(this.Button3_Click);
|
|
//
|
|
// button5
|
|
//
|
|
this.button5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
this.button5.Location = new System.Drawing.Point(33, 105);
|
|
this.button5.Margin = new System.Windows.Forms.Padding(2);
|
|
this.button5.Name = "button5";
|
|
this.button5.Size = new System.Drawing.Size(296, 47);
|
|
this.button5.TabIndex = 10;
|
|
this.button5.Text = "Save/Create Bin File";
|
|
this.button5.UseVisualStyleBackColor = true;
|
|
this.button5.Click += new System.EventHandler(this.Button5_Click);
|
|
//
|
|
// openFileDialog1
|
|
//
|
|
this.openFileDialog1.FileName = "openFileDialog1";
|
|
//
|
|
// button1
|
|
//
|
|
this.button1.ForeColor = System.Drawing.Color.Red;
|
|
this.button1.Location = new System.Drawing.Point(106, 79);
|
|
this.button1.Margin = new System.Windows.Forms.Padding(2);
|
|
this.button1.Name = "button1";
|
|
this.button1.Size = new System.Drawing.Size(149, 22);
|
|
this.button1.TabIndex = 11;
|
|
this.button1.Text = "Unload Files";
|
|
this.button1.UseVisualStyleBackColor = true;
|
|
this.button1.Click += new System.EventHandler(this.Button1_Click);
|
|
//
|
|
// label1
|
|
//
|
|
this.label1.AutoSize = true;
|
|
this.label1.Location = new System.Drawing.Point(11, 161);
|
|
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
this.label1.Name = "label1";
|
|
this.label1.Size = new System.Drawing.Size(313, 39);
|
|
this.label1.TabIndex = 12;
|
|
this.label1.Text = "Note:\nBy default the ecu will read a 512k bin from the 8000-FFFF Zone.\nUsing a ma" +
|
|
"p switcher device you can read 0000-7FFFF Zone.";
|
|
//
|
|
// frmBinTool
|
|
//
|
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
this.ClientSize = new System.Drawing.Size(350, 211);
|
|
this.Controls.Add(this.label1);
|
|
this.Controls.Add(this.button1);
|
|
this.Controls.Add(this.button5);
|
|
this.Controls.Add(this.button3);
|
|
this.Controls.Add(this.button2);
|
|
this.Controls.Add(this.textBox3);
|
|
this.Controls.Add(this.textBox2);
|
|
this.Controls.Add(this.label3);
|
|
this.Controls.Add(this.label2);
|
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
|
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
|
this.Margin = new System.Windows.Forms.Padding(2);
|
|
this.MaximizeBox = false;
|
|
this.MinimizeBox = false;
|
|
this.Name = "frmBinTool";
|
|
this.Text = "Create 2Timer Bin (512kb file)";
|
|
this.Load += new System.EventHandler(this.FrmBinTool_Load);
|
|
this.ResumeLayout(false);
|
|
this.PerformLayout();
|
|
|
|
}
|
|
|
|
public bool MergeFile(string[] tmpfiles)
|
|
{
|
|
bool flag = false;
|
|
try
|
|
{
|
|
if (tmpfiles[0] == "BLANK")
|
|
{
|
|
tmpfiles[0] = "tempblank.bin";
|
|
File.WriteAllBytes(tmpfiles[0], new byte[0x8000]);
|
|
}
|
|
FileStream stream = new FileStream(tmpfiles[0], FileMode.Open, FileAccess.Read);
|
|
if (!stream.CanRead)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Couldnt open Section 0000-7fff.");
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
int length = (int) stream.Length;
|
|
byte[] buffer = new byte[length];
|
|
stream.Read(buffer, 0, length);
|
|
FileStream stream2 = new FileStream(tmpfiles[1], FileMode.Open, FileAccess.Read);
|
|
if (!stream2.CanRead)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Couldnt open Section 8000-ffff.");
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
int count = (int) stream2.Length;
|
|
byte[] buffer2 = new byte[count];
|
|
stream2.Read(buffer2, 0, count);
|
|
SaveFileDialog dialog = new SaveFileDialog {
|
|
Filter = "Bin|*.bin",
|
|
Title = "Save an 512K Bin File"
|
|
};
|
|
dialog.ShowDialog();
|
|
if ((dialog.FileName != "") && ((length + count) == 0x10000))
|
|
{
|
|
using (FileStream stream3 = new FileStream(dialog.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
|
|
{
|
|
using (BinaryWriter writer = new BinaryWriter(stream3))
|
|
{
|
|
writer.Write(Combine(buffer, buffer2));
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
MessageBox.Show(Form.ActiveForm, "Something went wrong, Resulting file wouldn't of been 65536 bytes!", "Error");
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
flag = false;
|
|
}
|
|
return flag;
|
|
}
|
|
}
|
|
|