BMTuneSource/frmBinTool.cs

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;
}
}