7186 lines
264 KiB
C#
7186 lines
264 KiB
C#
using Data;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Collections.ObjectModel;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
|
|
internal class Class18
|
|
{
|
|
private BackgroundWorker backgroundWorker1 = new BackgroundWorker();
|
|
private bool bool_0;
|
|
private bool bool_1;
|
|
private bool bool_2;
|
|
private bool CalcTime = false;
|
|
private double LastAccelTime = 99.9;
|
|
Stopwatch watch;
|
|
|
|
//private bool KBinLoaded = false;
|
|
private bool VWBinLoaded = false;
|
|
public bool BinLoadedForSaving = false;
|
|
|
|
private byte[] byte_0_X1;
|
|
private byte[] byte_0_X2;
|
|
|
|
private long long_3 = 0xaa00L;
|
|
private long long_4 = 0x1418L;
|
|
private long long_28 = 0x80L;
|
|
|
|
private byte byte_2;
|
|
public Class10_settings class10_settings_0;
|
|
internal Class11_u class11_u_0;
|
|
internal Class12_afrT class12_afrT_0;
|
|
public Class13_u class13_u_0 = new Class13_u();
|
|
internal Class15 class15_0;
|
|
internal Class17 class17_0;
|
|
private Class21_snap class21_snap_0;
|
|
internal Class25 class25_0;
|
|
private Class32_Locations class32_Locations_0;
|
|
|
|
public Collection<Class24_u> class24_u_0 = new Collection<Class24_u>();
|
|
private List<long> InputsListLocations = new List<long>();
|
|
private List<string> InputsListDesc = new List<string>();
|
|
|
|
private List<long> OutputsListLocations = new List<long>();
|
|
private List<string> OutputsListDesc = new List<string>();
|
|
|
|
internal Binary_Files Binary_Files_0;
|
|
private int Stable_Version_LAST = 0; //Ex: 1.03 last stable in list // THIS IS THE LAST VERSION AVAILABLE IN THE STABLE LIST 0 = 1.0.0 ### 1 = 1.0.1 ### 2 = 1.0.2 ### ETC
|
|
private int CurrentVersion = 100;
|
|
public int RomVersion = 100;
|
|
internal bool ConvertedToStable = false;
|
|
|
|
public int LastLocationLoaded = 0;
|
|
|
|
private frmPassword frmPassword_0;
|
|
private Class18 Class18_0;
|
|
private double[] double_0 = new double[] {
|
|
140.961, 138.694, 136.479, 134.314, 132.198, 130.129, 128.108, 126.132, 124.2, 122.312, 120.467, 118.663, 116.9, 115.176, 113.491, 111.843,
|
|
110.232, 108.657, 107.117, 105.611, 104.139, 102.699, 101.29, 99.9123, 98.5646, 97.2463, 95.9564, 94.6944, 93.4595, 92.251, 91.0682, 89.9104,
|
|
88.7771, 87.6674, 86.5809, 85.5169, 84.4749, 83.4541, 82.454, 81.4742, 80.5139, 79.5728, 78.6502, 77.7457, 76.8587, 75.9887, 75.1354, 74.2982,
|
|
73.4766, 72.6702, 71.8787, 71.1014, 70.3382, 69.5884, 68.8518, 68.1279, 67.4164, 66.717, 66.0292, 65.3527, 64.6871, 64.0322, 63.3876, 62.753,
|
|
62.1281, 61.5126, 60.9062, 60.3086, 59.7195, 59.1388, 58.566, 58.001, 57.4435, 56.8932, 56.35, 55.8136, 55.2838, 54.7603, 54.243, 53.7316,
|
|
53.226, 52.7259, 52.2312, 51.7417, 51.2571, 50.7774, 50.3024, 49.8318, 49.3656, 48.9035, 48.4455, 47.9913, 47.5409, 47.094, 46.6507, 46.2106,
|
|
45.7738, 45.34, 44.9092, 44.4812, 44.0559, 43.6333, 43.2131, 42.7953, 42.3799, 41.9666, 41.5554, 41.1461, 40.7388, 40.3333, 39.9295, 39.5274,
|
|
39.1268, 38.7276, 38.3299, 37.9335, 37.5382, 37.1442, 36.7512, 36.3592, 35.9682, 35.578, 35.1886, 34.8, 34.412, 34.0247, 33.6378, 33.2515,
|
|
32.8655, 32.4799, 32.0946, 31.7096, 31.3247, 30.9399, 30.5552, 30.1706, 29.7858, 29.401, 29.016, 28.6308, 28.2454, 27.8596, 27.4735, 27.087,
|
|
26.7, 26.3124, 25.9244, 25.5357, 25.1463, 24.7562, 24.3654, 23.9737, 23.5812, 23.1878, 22.7934, 22.398, 22.0016, 21.6041, 21.2054, 20.8056,
|
|
20.4045, 20.0022, 19.5985, 19.1934, 18.787, 18.3791, 17.9697, 17.5587, 17.1462, 16.732, 16.3162, 15.8986, 15.4793, 15.0582, 14.6353, 14.2105,
|
|
13.7838, 13.3552, 12.9246, 12.4919, 12.0572, 11.6205, 11.1816, 10.7405, 10.2973, 9.85183, 9.40413, 8.95416, 8.5019, 8.04731, 7.59037, 7.13106,
|
|
6.66936, 6.20526, 5.73872, 5.26973, 4.79829, 4.32437, 3.84797, 3.36908, 2.88769, 2.40381, 1.91741, 1.42851, 0.93711, 0.443211, -0.0531673, -0.552034,
|
|
-1.05337, -1.55713, -2.06334, -2.57195, -3.08295, -3.5963, -4.11196, -4.62992, -5.15012, -5.67251, -6.19708, -6.72373, -7.25245, -7.78316, -8.31578, -8.85028,
|
|
-9.38656, -9.92454, -10.4642, -11.0053, -11.5479, -12.0919, -12.6371, -13.1835, -13.7308, -14.2791, -14.8282, -15.3779, -15.9282, -16.4788, -17.0296, -17.5805,
|
|
-18.1313, -18.6818, -19.2319, -19.7814, -20.33, -20.8776, -21.4239, -21.9688, -22.5121, -23.0534, -23.5926, -24.1294, -24.6635, -25.1947, -25.7227, -26.2472
|
|
};
|
|
private FuelDisplayMode fuelDisplayMode_0;
|
|
private SelectedTable selectedTable_0;
|
|
public string string_1;
|
|
public int int_0 = 333;
|
|
private string string_4;
|
|
private string string_5;
|
|
private string string_7;
|
|
private TableOverlay tableOverlay_0;
|
|
//private DASM_Bytes DASM_Bytes_0;
|
|
|
|
public event Delegate57 delegate57_0;
|
|
public event Delegate61 delegate61_0;
|
|
public event Delegate58 delegate58_0; //delegate occuring once when loading file
|
|
public event Delegate60 delegate60_0;
|
|
public event Delegate55 delegate55_0;
|
|
public event Delegate55 delegate55_1;
|
|
|
|
public bool OpenSilentBRom = false;
|
|
private byte[] LastGlitchedByte = new byte[] { };
|
|
public bool Converting = false;
|
|
public bool Glitched = false;
|
|
private bool GlitchTesting = false;
|
|
private int GlitchTestingTimer = 0;
|
|
|
|
internal Class18(ref Class10_settings cfg, ref Class15 RmChk) //This is class13 in HTS 1.92
|
|
{
|
|
this.class10_settings_0 = cfg;
|
|
this.class15_0 = RmChk;
|
|
this.Class18_0 = this;
|
|
|
|
//DASM_Bytes_0 = new DASM_Bytes();
|
|
|
|
string_1 = "3.3.3";
|
|
|
|
LoadBinaryFiles();
|
|
Stable_Version_LAST = Binary_Files_0.GetLastStable();
|
|
//CloseBinaryFiles();
|
|
|
|
//Get Version
|
|
CurrentVersion = Stable_Version_LAST + 100;
|
|
RomVersion = Stable_Version_LAST + 100;
|
|
|
|
if (this.class10_settings_0.GlitchedBaseromTestInterval < 5000) this.class10_settings_0.GlitchedBaseromTestInterval = 15000;
|
|
GlitchTestingTimer = this.class10_settings_0.GlitchedBaseromTestInterval;
|
|
|
|
class32_Locations_0 = new Class32_Locations();
|
|
class32_Locations_0.LoadReference(ref Class18_0);
|
|
|
|
InjectorsLoading InjectorsLoading_0 = new InjectorsLoading(ref this.Class18_0);
|
|
InjectorsLoading_0 = null;
|
|
|
|
this.backgroundWorker1.WorkerSupportsCancellation = true;
|
|
this.backgroundWorker1.DoWork += new DoWorkEventHandler(this.backgroundWorker1_DoWork);
|
|
this.backgroundWorker1.RunWorkerAsync();
|
|
}
|
|
|
|
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
BackgroundWorker worker = (BackgroundWorker)sender;
|
|
while (!worker.CancellationPending)
|
|
{
|
|
if (GlitchTestingTimer <= 0)
|
|
{
|
|
GlitchTestingTimer = this.class10_settings_0.GlitchedBaseromTestInterval;
|
|
|
|
if (method_30_HasFileLoadedInBMTune())
|
|
{
|
|
IsBaseromGlitched();
|
|
}
|
|
}
|
|
|
|
Thread.Sleep(1);
|
|
GlitchTestingTimer--;
|
|
}
|
|
}
|
|
|
|
public void Dissspose()
|
|
{
|
|
if (this.backgroundWorker1 != null)
|
|
{
|
|
if (this.backgroundWorker1.IsBusy) this.backgroundWorker1.CancelAsync();
|
|
this.backgroundWorker1.Dispose();
|
|
this.backgroundWorker1 = null;
|
|
}
|
|
}
|
|
|
|
private void IsBaseromGlitched()
|
|
{
|
|
//if (!Converting && !Glitched && !GlitchTesting && !KBinLoaded && !VWBinLoaded && !this.class17_0.frmMain_0.CustomMenuLoaded)
|
|
if (!Converting && !Glitched && !GlitchTesting && !VWBinLoaded && !this.class17_0.frmMain_0.CustomMenuLoaded)
|
|
{
|
|
bool CanCheckB = true;
|
|
/*if (this.class17_0.frmMain_0.ktable_0 != null)
|
|
{
|
|
if (this.class17_0.frmMain_0.ktable_0.Class39_0 != null)
|
|
{
|
|
if (this.class17_0.frmMain_0.ktable_0.Class39_0.bool_1) CanCheckB = false;
|
|
}
|
|
}*/
|
|
if (CanCheckB)
|
|
{
|
|
GlitchTesting = true;
|
|
|
|
byte[] AllByte = GetAllByte();
|
|
if (AllByte != LastGlitchedByte)
|
|
{
|
|
LastGlitchedByte = AllByte;
|
|
|
|
if (AllByte.Length == 32768)
|
|
{
|
|
//#######
|
|
//Zipping
|
|
string Filename = "dasm662.exe";
|
|
string ZipFolder = "ASM";
|
|
string WholePath = Application.StartupPath + @"\" + ZipFolder + @"\" + Filename;
|
|
if (!File.Exists(WholePath)) this.class17_0.frmMain_0.Class34_Zip_0.UnZipFile(Application.StartupPath, ZipFolder);
|
|
//#######
|
|
|
|
for (int i = 0; i < AllByte.Length; i++)
|
|
{
|
|
if (AllByte[i] == 0x92 && AllByte[i + 1] == 0x22 && AllByte[i + 2] == 0x03)
|
|
{
|
|
AllByte[i - 3] = 0x03;
|
|
AllByte[i] = 0xff;
|
|
AllByte[i + 1] = 0xff;
|
|
}
|
|
}
|
|
|
|
File.Create(Application.StartupPath + @"\" + ZipFolder + @"\GlitchTest.bin").Dispose();
|
|
File.WriteAllBytes(Application.StartupPath + @"\" + ZipFolder + @"\GlitchTest.bin", AllByte);
|
|
|
|
//Create DASM.bat
|
|
/*if (!File.Exists(Application.StartupPath + @"\" + ZipFolder + @"\DASM.bat"))
|
|
{
|
|
string BatTxt = "dasm662.exe GlitchTest.bin GlitchTest.asm";
|
|
StreamWriter writer = new StreamWriter(Application.StartupPath + @"\" + ZipFolder + @"\DASM.bat", false);
|
|
writer.Write(BatTxt);
|
|
writer.Close();
|
|
writer.Dispose();
|
|
writer = null;
|
|
}*/
|
|
|
|
//Load DASM.bat
|
|
Process p = new Process();
|
|
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
|
|
|
p.StartInfo.WorkingDirectory = Application.StartupPath + @"\" + ZipFolder;
|
|
//p.StartInfo.FileName = "DASM.bat";
|
|
//p.StartInfo.FileName = Application.StartupPath + @"\" + ZipFolder + @"\dasm662.exe";
|
|
p.StartInfo.FileName = "dasm662.exe";
|
|
p.StartInfo.Arguments = "GlitchTest.bin GlitchTest.asm";
|
|
p.StartInfo.CreateNoWindow = true;
|
|
p.StartInfo.Verb = "runas";
|
|
p.Start();
|
|
|
|
//#################
|
|
int SleepingCount = 0;
|
|
while (SleepingCount < 200)
|
|
{
|
|
Thread.Sleep(1);
|
|
SleepingCount++;
|
|
}
|
|
SleepingCount = 0;
|
|
//#################
|
|
|
|
Process[] pname = Process.GetProcessesByName("dasm662.exe");
|
|
//Process[] pname = Process.GetProcessesByName("DASM.bat");
|
|
while (pname.Length > 1)
|
|
{
|
|
Thread.Sleep(1);
|
|
pname = Process.GetProcessesByName("dasm662.exe");
|
|
//pname = Process.GetProcessesByName("DASM.bat");
|
|
}
|
|
|
|
//#################
|
|
while (SleepingCount < 200)
|
|
{
|
|
Thread.Sleep(1);
|
|
SleepingCount++;
|
|
}
|
|
SleepingCount = 0;
|
|
//#################
|
|
|
|
FileInfo info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\GlitchTest.asm");
|
|
if (info.Exists)
|
|
{
|
|
if (info.Length < 1024000 && info.Length > 2)
|
|
{
|
|
Glitched = true;
|
|
this.class17_0.frmMain_0.LogThis("We detected that the baserom is glitched!" + Environment.NewLine + "This can cause a permanent CEL and run in Limp Mode. We recommand to restore the baserom using the Baserom Converter!");
|
|
MessageBox.Show(Form.ActiveForm, "We detected that the baserom is glitched!" + Environment.NewLine + Environment.NewLine + "This can cause a permanent CEL and run in Limp Mode. We recommand to" + Environment.NewLine + "restore the baserom using the Baserom Converter!", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Can't disassemble binary to check if the baserom is glitched!");
|
|
}
|
|
|
|
RemoveFile();
|
|
info = null;
|
|
GlitchTesting = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void RemoveFile()
|
|
{
|
|
try
|
|
{
|
|
//Remove DASM
|
|
string ZipFolder = "ASM";
|
|
|
|
FileInfo info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\GlitchTest.bin");
|
|
if (info.Exists) info.Delete();
|
|
info = null;
|
|
|
|
info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\GlitchTest.asm");
|
|
if (info.Exists) info.Delete();
|
|
info = null;
|
|
|
|
info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\FileName.bin");
|
|
if (info.Exists) info.Delete();
|
|
info = null;
|
|
|
|
info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\FileName.asm");
|
|
if (info.Exists) info.Delete();
|
|
info = null;
|
|
|
|
//info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\dasm662.exe");
|
|
//if (info.Exists) info.Delete();
|
|
//info = null;
|
|
|
|
//info = new FileInfo(Application.StartupPath + @"\" + ZipFolder + @"\DASM.bat");
|
|
//if (info.Exists) info.Delete();
|
|
//info = null;
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
internal void method_0(ref Class11_u class11_u_1, ref Class17 class17_1, ref Class21_snap class21_1)
|
|
{
|
|
this.class11_u_0 = class11_u_1;
|
|
this.class11_u_0.delegate33_0 += new Class11_u.Delegate33(this.method_3);
|
|
this.class17_0 = class17_1;
|
|
this.class21_snap_0 = class21_1;
|
|
}
|
|
|
|
internal void method_1(ref Class12_afrT class12_1)
|
|
{
|
|
this.class12_afrT_0 = class12_1;
|
|
}
|
|
|
|
public void SetByteNull()
|
|
{
|
|
byte_0_X1 = null;
|
|
byte_0_X2 = null;
|
|
//Console.WriteLine("Set null");
|
|
}
|
|
|
|
public void SetByteSize(int Size)
|
|
{
|
|
int MidSize = Size / 2;
|
|
byte_0_X1 = new byte[MidSize];
|
|
byte_0_X2 = new byte[Size - MidSize];
|
|
//Console.WriteLine("Set size");
|
|
}
|
|
|
|
public void SetAllByte(byte[] TByte)
|
|
{
|
|
int MidSize = TByte.Length / 2;
|
|
byte_0_X1 = new byte[MidSize];
|
|
byte_0_X2 = new byte[TByte.Length - MidSize];
|
|
|
|
for (int i = 0; i < MidSize; i++) byte_0_X1[i] = TByte[i];
|
|
for (int i = 0; i < (TByte.Length - MidSize); i++) byte_0_X2[i] = TByte[i + MidSize];
|
|
|
|
//Console.WriteLine("Set bytes");
|
|
}
|
|
|
|
public byte[] GetAllByte()
|
|
{
|
|
byte[] Returning = new byte[GetByteLenght()];
|
|
for (int i = 0; i < byte_0_X1.Length; i++) Returning[i] = byte_0_X1[i];
|
|
for (int i = 0; i < byte_0_X2.Length; i++) Returning[i + byte_0_X1.Length] = byte_0_X2[i];
|
|
return Returning;
|
|
}
|
|
|
|
public int GetByteLenght()
|
|
{
|
|
if (byte_0_X1 != null && byte_0_X2 != null)
|
|
{
|
|
return byte_0_X1.Length + byte_0_X2.Length;
|
|
}
|
|
else
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("CAN'T get rom lenght due to Byte Array not declared (null)!");
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public void SetByteAt(long Location, byte TByte)
|
|
{
|
|
if (byte_0_X1 != null && byte_0_X2 != null)
|
|
{
|
|
//Upload Byte to RTP only if it has changed!
|
|
if (GetByteAt(Location) != TByte)
|
|
{
|
|
this.class25_0.method_18(Location, TByte); //RTP Upload this Byte
|
|
}
|
|
|
|
if (this.class10_settings_0.LogAdvancedDatas) this.class17_0.frmMain_0.LogThis("ByteSet: 0x" + TByte.ToString("X2") + " At: 0x" + Location.ToString("X"));
|
|
if (Location < byte_0_X1.Length) byte_0_X1[Location] = TByte;
|
|
else byte_0_X2[Location - byte_0_X1.Length] = TByte;
|
|
}
|
|
else
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("CAN'T set rom byte due to Byte Array not declared (null)!");
|
|
}
|
|
}
|
|
|
|
public byte GetByteAt(long Location)
|
|
{
|
|
if (Location <= 0x7fff)
|
|
{
|
|
if (byte_0_X1 != null && byte_0_X2 != null)
|
|
{
|
|
if (this.class10_settings_0.LogAdvancedDatas) this.class17_0.frmMain_0.LogThis("ByteGet At: 0x" + Location.ToString("X"));
|
|
if (Location < byte_0_X1.Length) return byte_0_X1[Location];
|
|
else return byte_0_X2[Location - byte_0_X1.Length];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("CAN'T get rom byte due to invalid location!" + Environment.NewLine + "Location: 0x" + Location.ToString("x4"));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
|
|
public ushort method_146(byte byte_3, byte byte_4)
|
|
{
|
|
return (ushort)((byte_4 * 0x100) + byte_3);
|
|
}
|
|
|
|
public byte method_147(long long_0_X)
|
|
{
|
|
return (byte)(long_0_X & 0xffL);
|
|
}
|
|
|
|
public byte method_148(long long_0_X)
|
|
{
|
|
return (byte)((long_0_X & 0xff00L) / 0x100L);
|
|
}
|
|
|
|
public void method_149_SetByte(long long_0_X, byte byte_3)
|
|
{
|
|
//if (long_0_X != 0 && long_0_X <= 0x7fff)
|
|
if (long_0_X > 80 && long_0_X <= 0x7fff)
|
|
{
|
|
if (GetByteAt((int)((IntPtr)long_0_X)) != byte_3)
|
|
{
|
|
if (!this.class11_u_0.method_3() && this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
this.class11_u_0.method_0(long_0_X, GetByteAt((int)((IntPtr)long_0_X)), byte_3);
|
|
}
|
|
SetByteAt((int)((IntPtr)long_0_X), byte_3);
|
|
//this.class25_0.method_18(long_0_X, byte_3); //RTP Upload this Byte
|
|
}
|
|
}
|
|
}
|
|
|
|
public void method_151(long long_0_X, long long_1_X)
|
|
{
|
|
this.method_149_SetByte(long_0_X, this.method_147(long_1_X));
|
|
this.method_149_SetByte(long_0_X + 1L, this.method_148(long_1_X));
|
|
}
|
|
|
|
public long method_152(long long_0_X)
|
|
{
|
|
return (long)((this.GetByteAt(long_0_X + 1L) * 0x100) + this.GetByteAt(long_0_X));
|
|
}
|
|
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
//#########################################################################################################################
|
|
|
|
public void method_145()
|
|
{
|
|
Class13_u class13_u_1 = new Class13_u
|
|
{
|
|
long_0 = 0x60fdL, //manual edit 1.11
|
|
long_1 = 0x60ffL, //manual edit 1.11
|
|
long_2 = 0x60fcL, //manual edit 1.11
|
|
long_6 = 0x6e59L,
|
|
long_8 = 0x6e71L,
|
|
long_9 = 0x6e85L,
|
|
|
|
long_10 = 0x6eadL,
|
|
long_11 = 0x70a5L,
|
|
long_12 = 0x729dL,
|
|
long_13 = 0x747dL,
|
|
long_18 = 0x6e17L, //can also relate to export table start location (same location)
|
|
long_16 = 0x6e2fL,
|
|
long_17 = 0x6e43L,
|
|
|
|
long_20 = 0x765fL,
|
|
long_21 = 0x7857L,
|
|
long_22 = 0x7a4fL,
|
|
long_23 = 0x7c2fL,
|
|
long_24 = 0x61a6L,
|
|
long_25 = 0x61a8L, //this lcoation +1 refer to injectors index
|
|
long_27 = 0x7e0fL,
|
|
long_29 = 0x6e99L,
|
|
|
|
long_31 = 0x610fL,
|
|
long_32 = 0x6110L,
|
|
long_33 = 0x6101L,
|
|
long_34 = 0x610dL,
|
|
long_35 = 0x6103L,
|
|
long_36 = 0x6105L,
|
|
long_37 = 0x6107L,
|
|
long_38 = 0x6109L,
|
|
long_39 = 0x610bL, //injector overall fuel trim
|
|
|
|
long_41 = 0x628eL,
|
|
long_43 = 0x5f4eL,
|
|
long_44 = 0x5f4aL,
|
|
long_45 = 0x61fcL,
|
|
long_46 = 0x5ffdL,
|
|
long_47 = 0x61f3L,
|
|
long_48 = 0x620eL,
|
|
long_49 = 0x61f4L,
|
|
|
|
long_50 = 0x61f5L,
|
|
long_51 = 0x61f9L,
|
|
long_52 = 0x6591L,
|
|
long_53 = 0x61f6L,
|
|
long_54 = 0x5f4dL,
|
|
long_55 = 0x5f49L,
|
|
long_56 = 0x61f7L,
|
|
long_58 = 0x5ffeL, //Fcut delay (overrun fcut)
|
|
long_59 = 0x5f46L,
|
|
|
|
long_61 = 0x5f41L, //Fcut Leak
|
|
long_60 = 0x5f42L, //FCut Leak
|
|
long_62 = 0x5f43L, //FCut Leak
|
|
long_63 = 0x664fL,
|
|
long_64 = 0x6213L,
|
|
long_66 = 0x620bL,
|
|
long_65 = 0x61f8L,
|
|
long_67 = 0x620aL,
|
|
long_68 = 0x7ff7L, //datalog file ending bytes (3bytes, exemple: BMT)
|
|
|
|
long_71 = 0x6125L,
|
|
long_72 = 0x6126L,
|
|
long_75 = 0x61fbL, //column number
|
|
long_76 = 0x616fL,
|
|
long_77 = 0x619aL,
|
|
long_78 = 0x61a7L,
|
|
long_79 = 0x5ffcL,
|
|
|
|
long_80 = 0x61ceL,
|
|
long_81 = 0x6210L,
|
|
long_82 = 0x5f90L, //gear based rev limiter
|
|
long_83 = 0x5f8fL, //rev limiter ect threshold (cold/hot)
|
|
long_84 = 0x5f8eL,
|
|
long_85 = 0x5f9cL,
|
|
long_88 = 0x5f4fL, //kill injector
|
|
long_89 = 0x5f03L, //Calibration Area (previous: 0x5f28L, ectune: 0x5f44L)
|
|
|
|
long_90 = 0x7ff5L,
|
|
long_94 = 0x7fefL, //export table (table end location)
|
|
long_95 = 0x61d8L,
|
|
|
|
long_100 = 0x61fdL,
|
|
long_101 = 0x6202L, //ignition sync value
|
|
long_102 = 0x6208L,
|
|
long_103 = 0x616bL,
|
|
long_104 = 0x616cL,
|
|
long_105 = 0x616dL,
|
|
long_106 = 0x616eL, //Fan control enabled
|
|
|
|
long_110 = 0x616fL,
|
|
long_111 = 0x61bfL,
|
|
long_112 = 0x6200L,
|
|
long_113 = 0x6203L,
|
|
long_114 = 0x6138L,
|
|
long_115 = 0x6139L,
|
|
long_116 = 0x5f50L, //ign sync on/off
|
|
long_117 = 0x6142L, //mil shiftlight enable
|
|
long_118 = 0x6143L,
|
|
long_119 = 0x6144L,
|
|
|
|
long_120 = 0x6146L,
|
|
long_121 = 0x613eL,
|
|
long_122 = 0x6140L,
|
|
long_123 = 0x613aL,
|
|
long_124 = 0x613bL,
|
|
long_125 = 0x613dL,
|
|
long_126 = 0x6150L, //Boost cut enabled
|
|
long_127 = 0x6151L, //Boost cut Cold Load value
|
|
long_128 = 0x615eL, //Boost cut Hot Load value
|
|
long_129 = 0x615fL, //Boost cut ect threshold
|
|
|
|
long_130 = 0x615dL, //Boost cut activate boost cut if DTC
|
|
long_131 = 0x619bL, //Boost cut limit rpm type (1200rpm or set at current rpm)
|
|
long_132 = 0x5ffbL, //ect protect, above ect
|
|
long_133 = 0x5ffaL, //ect protect enabled
|
|
long_135 = 0x5f77L, //ect protect limit to rpm
|
|
long_136 = 0x5fa5L,
|
|
long_137 = 0x6152L,
|
|
long_138 = 0x6153L,
|
|
long_139 = 0x6155L,
|
|
|
|
long_140 = 0x6156L, //launch-FTL minimum RPM
|
|
long_141 = 0x6158L,
|
|
long_142 = 0x61cfL,
|
|
long_143 = 0x6165L,
|
|
long_144 = 0x6154L,
|
|
long_147 = 0x6159L,
|
|
long_148 = 0x615aL,
|
|
long_149 = 0x615bL,
|
|
|
|
long_150 = 0x5f80L, //fts rpm
|
|
long_151 = 0x5f7eL, //fts above tps
|
|
long_152 = 0x5f7fL, //fts gear based rpm enable
|
|
long_153 = 0x5f59L, //fts type (fixed or adjustable rpm)
|
|
long_154 = 0x5f58L, //fts antilag enabled
|
|
long_155 = 0x5f56L, //fts fuel
|
|
long_156 = 0x5f55L, //fts ign retard
|
|
long_157 = 0x6164L, //fts enabled
|
|
long_158 = 0x6160L, //FTL antilag above tps
|
|
long_159 = 0x6161L, //FTL fuel
|
|
|
|
long_160 = 0x6163L, //FTL Retard
|
|
long_162 = 0x5f8dL, //FTL Antilag ign mode (static, by retard)
|
|
long_163 = 0x5f8cL, //FTL retard static
|
|
|
|
long_171 = 0x5f54L, //Burnout Control Rpm
|
|
long_172 = 0x5f53L, //Burnout Control Input
|
|
long_173 = 0x5f51L, //Burnout Control
|
|
long_174 = 0x62a2L, //IAT Corr Table #1
|
|
long_175 = 0x6ab6L, //IAT Corr Table #3
|
|
long_176 = 0x622eL, //IAT Corr Table #2
|
|
long_177 = 0x6a96L, //ECT Corr Table #2
|
|
long_178 = 0x630bL, //ECT Corr Table #1
|
|
long_179 = 0x6518L, //Crank Corr Table
|
|
|
|
long_180 = 0x611bL, //Enabled Ign Corr
|
|
long_181 = 0x611cL, //disable ign corr above Load
|
|
long_183 = 0x6426L, //Individual Cyl Corr Table #1
|
|
long_184 = 0x6134L, //Individual Cyl Corr Table #2
|
|
long_185 = 0x6442L, //Injector Table
|
|
long_186 = 0x6128L, //Gear Corr Table #1
|
|
long_188 = 0x6127L, //Gear Corr Above VSS
|
|
long_187 = 0x612eL, //Gear Corr Table #2
|
|
long_189 = 0x5f44L, //Gear Corr Above Load
|
|
|
|
long_190 = 0x63b2L, //Closeloop Table
|
|
long_191 = 0x6aecL, //Idle Ign Corr Table
|
|
long_192 = 0x5f9dL, //Idle Ign Corr Enabled
|
|
long_193 = 0x5f9eL, //Idle Ign Corr Above ect
|
|
//long_194 = 0x649cL, //#### NOT USED ### missing baro fuel BUT IT IS NEVER USED
|
|
long_195 = 0x5fa3L,
|
|
long_196 = 0x5fa1L,
|
|
long_197 = 0x5fa2L,
|
|
long_198 = 0x5f9fL,
|
|
long_199 = 0x5fa0L,
|
|
|
|
long_200 = 0x5fa4L,
|
|
long_201 = 0x6b7dL,
|
|
long_202 = 0x6b77L,
|
|
long_203 = 0x6ba7L,
|
|
long_204 = 0x6b6aL,
|
|
long_205 = 0x6b5cL,
|
|
long_206 = 0x6111L,
|
|
long_207 = 0x6112L,
|
|
long_208 = 0x6113L,
|
|
long_209 = 0x63caL,
|
|
|
|
long_210 = 0x63beL,
|
|
long_211 = 0x6167L,
|
|
long_212 = 0x6169L,
|
|
long_213 = 0x61d5L,
|
|
long_215 = 0x61d7L,
|
|
long_216 = 0x61d4L,
|
|
long_217 = 0x5f5aL,
|
|
long_218 = 0x61f2L,
|
|
long_219 = 0x6209L,
|
|
|
|
long_220 = 0x611fL,
|
|
long_221 = 0x6657L,
|
|
long_223 = 0x611eL,
|
|
long_224 = 0x6123L,
|
|
long_225 = 0x6124L,
|
|
long_227 = 0x6121L,
|
|
long_228 = 0x6120L,
|
|
long_229 = 0x6122L,
|
|
|
|
long_230 = 0x611dL,
|
|
long_231 = 0x5f7bL,
|
|
long_232 = 0x5f7cL,
|
|
long_233 = 0x5f7dL,
|
|
long_234 = 0x6215L,
|
|
long_235 = 0x6119L,
|
|
long_236 = 0x6201L,
|
|
long_237 = 0x5fc9L,
|
|
long_239 = 0x5f73L,
|
|
|
|
long_240 = 0x5f74L,
|
|
long_241 = 0x6114L,
|
|
long_242 = 0x5f4bL,
|
|
long_243 = 0x6116L,
|
|
long_244 = 0x6117L,
|
|
long_245 = 0x6738L,
|
|
long_246 = 0x6170L,
|
|
long_247 = 0x6171L,
|
|
long_248 = 0x6172L,
|
|
long_249 = 0x6173L,
|
|
|
|
long_251 = 0x6178L,
|
|
long_253 = 0x6175L,
|
|
long_254 = 0x6177L,
|
|
long_255 = 0x6176L,
|
|
long_256 = 0x5fffL,
|
|
long_257 = 0x618bL,
|
|
long_258 = 0x617fL,
|
|
long_259 = 0x6185L,
|
|
|
|
long_260 = 0x6037L,
|
|
long_261 = 0x6021L,
|
|
long_262 = 0x600bL,
|
|
long_263 = 0x604dL,
|
|
long_264 = 0x5fb3L,
|
|
long_265 = 0x5f6bL,
|
|
long_266 = 0x5fa7L,
|
|
long_267 = 0x6199L,
|
|
long_268 = 0x5f75L,
|
|
long_269 = 0x5fafL,
|
|
|
|
long_270 = 0x5f63L,
|
|
long_271 = 0x619bL,
|
|
long_272 = 0x617cL,
|
|
long_273 = 0x617bL,
|
|
long_274 = 0x617aL,
|
|
long_275 = 0x617dL,
|
|
long_276 = 0x617eL,
|
|
long_277 = 0x6198L,
|
|
long_279 = 0x6197L,
|
|
|
|
long_280 = 0x615bL,
|
|
long_281 = 0x615cL,
|
|
long_282 = 0x619cL,
|
|
long_283 = 0x619dL,
|
|
long_284 = 0x619eL,
|
|
long_285 = 0x61a0L,
|
|
long_286 = 0x619fL,
|
|
long_287 = 0x61a5L,
|
|
long_288 = 0x61a4L,
|
|
long_289 = 0x61a3L,
|
|
|
|
long_290 = 0x61a2L,
|
|
long_291 = 0x61aaL,
|
|
long_292 = 0x61adL,
|
|
long_293 = 0x61aeL,
|
|
long_294 = 0x61abL,
|
|
long_295 = 0x61acL,
|
|
long_296 = 0x61b0L,
|
|
long_297 = 0x61afL,
|
|
long_298 = 0x61b1L,
|
|
long_299 = 0x61b2L,
|
|
|
|
long_300 = 0x61b4L,
|
|
long_301 = 0x61b6L,
|
|
long_302 = 0x61b7L,
|
|
long_303 = 0x61b8L,
|
|
long_304 = 0x61b9L,
|
|
long_305 = 0x61baL,
|
|
long_306 = 0x61bbL,
|
|
long_307 = 0x61bcL,
|
|
long_308 = 0x61beL,
|
|
long_309 = 0x61bdL,
|
|
|
|
long_310 = 0x6057L,
|
|
long_311 = 0x606dL,
|
|
long_313 = 0x5fcdL,
|
|
long_314 = 0x5fd0L,
|
|
long_315 = 0x5fd1L,
|
|
long_316 = 0x5fceL,
|
|
long_317 = 0x5fcfL,
|
|
long_318 = 0x5fd3L,
|
|
long_319 = 0x5fd2L,
|
|
|
|
long_320 = 0x5fd4L,
|
|
long_321 = 0x5fd5L,
|
|
long_322 = 0x5fd7L,
|
|
long_323 = 0x5fd9L,
|
|
long_324 = 0x5fdaL,
|
|
long_325 = 0x5fdbL,
|
|
long_326 = 0x5fdcL,
|
|
long_327 = 0x5fddL,
|
|
long_328 = 0x5fdeL,
|
|
long_329 = 0x5fdfL,
|
|
|
|
long_330 = 0x5fe1L,
|
|
long_331 = 0x5fe0L,
|
|
long_332 = 0x608eL,
|
|
long_333 = 0x60a4L,
|
|
long_335 = 0x5fe2L,
|
|
long_336 = 0x5fe5L,
|
|
long_337 = 0x5fe6L,
|
|
long_338 = 0x5fe3L,
|
|
long_339 = 0x5fe4L,
|
|
|
|
long_340 = 0x5fe8L,
|
|
long_341 = 0x5fe7L,
|
|
long_342 = 0x5fe9L,
|
|
long_343 = 0x5feaL,
|
|
long_344 = 0x5fecL,
|
|
long_345 = 0x5feeL,
|
|
long_346 = 0x5fefL,
|
|
long_347 = 0x5ff0L,
|
|
long_348 = 0x5ff1L,
|
|
long_349 = 0x5ff2L,
|
|
|
|
long_350 = 0x5ff3L,
|
|
long_351 = 0x5ff4L,
|
|
long_352 = 0x5ff6L,
|
|
long_353 = 0x5ff5L,
|
|
long_354 = 0x60c5L,
|
|
long_355 = 0x60dbL,
|
|
long_357 = 0x61c0L,
|
|
long_358 = 0x61c1L,
|
|
long_359 = 0x61c2L,
|
|
|
|
long_360 = 0x61c3L,
|
|
long_361 = 0x61c4L,
|
|
long_362 = 0x61c6L,
|
|
long_363 = 0x61c7L,
|
|
long_364 = 0x61c8L,
|
|
long_365 = 0x61cbL,
|
|
long_366 = 0x61c9L,
|
|
long_367 = 0x61ccL,
|
|
long_368 = 0x61caL,
|
|
long_369 = 0x61cdL,
|
|
|
|
long_370 = 0x5facL,
|
|
long_371 = 0x5fadL,
|
|
long_372 = 0x5faeL,
|
|
long_373 = 0x5fa8L,
|
|
long_374 = 0x6a7aL,
|
|
long_375 = 0x6a56L,
|
|
long_376 = 0x6a66L,
|
|
long_377 = 0x5f5bL, //lean protect min rpm
|
|
long_378 = 0x5f5dL, //lean protect min tps
|
|
long_379 = 0x5f5fL, //lean protect
|
|
|
|
long_380 = 0x5f5eL, //lean protect
|
|
long_381 = 0x5f60L, //lean protect
|
|
long_382 = 0x5f61L, //lean protect
|
|
long_383 = 0x5fb0L, //lean protect
|
|
long_384 = 0x5f62L, //lean protect
|
|
long_385 = 0x5fb1L, //lean protect
|
|
long_386 = 0x5fb2L, //lean protect
|
|
|
|
long_390 = 0x633eL, //closeloop rate of change
|
|
long_391 = 0x6216L, //injector phase
|
|
|
|
//THOSE ADDRESE CAN VARY WHEN CHANGING BASEROM
|
|
long_402 = 0x5f2fL, //FTS Speed
|
|
|
|
long_420 = 0x61d8L, //ignition cut delay
|
|
long_421 = 0x61e4L, //Ignition Cut Delay (FTL - Launch)
|
|
long_422 = 0x61e5L, //Ignition Cut Delay (FTS)
|
|
long_423 = 0x61e6L, //Ignition Cut Fuel Adding
|
|
long_424 = 0x61e8L, //Ignition Cut Ign retarding
|
|
|
|
//Antitheft
|
|
long_430 = 0x61d9L, //acs input
|
|
long_431 = 0x61daL, //psp input
|
|
long_432 = 0x61dbL, //scs input
|
|
long_433 = 0x61dcL, //bkws input
|
|
long_434 = 0x61ddL, //vtp input
|
|
//long_435 = 0x61deL, //tps require
|
|
//long_436 = 0x61dfL, //tps min
|
|
//long_437 = 0x61e0L, //tps min
|
|
long_438 = 0x61e1L, //locking rpm
|
|
long_439 = 0x61e3L, //antitheft enabled
|
|
|
|
long_440 = 0x61e4L, //FTS strain cut active
|
|
|
|
long_450 = 0x62f3L, //injector rate of decay1
|
|
long_451 = 0x62fbL, //injector rate of decay2
|
|
long_452 = 0x6303L, //injector rate of decay3
|
|
long_453 = 0x6533L, //crank fuel RPM Compensation
|
|
long_454 = 0x6537L, //crank fuel MAP Compensation
|
|
|
|
long_460 = 0x5f18L, //FlexFuel Ethanol Content
|
|
long_461 = 0x5f06L, //FlexFuel Fuel - Closeloop
|
|
long_463 = 0xf0ffL, //FlexFuel Fuel - Cranking
|
|
long_464 = 0x5f20L, //FlexFuel Ignition - Closeloop
|
|
/*long_460 = 0x5f18L, //FlexFuel Ethanol Content
|
|
long_461 = 0x5ef4L, //FlexFuel Fuel - Closeloop
|
|
long_463 = 0x5f06L, //FlexFuel Fuel - Cranking
|
|
long_464 = 0x5f20L, //FlexFuel Ignition - Closeloop*/
|
|
|
|
long_466 = 0x61deL, //FlexFuel Input
|
|
|
|
//long_471 = 0x61e8L, //FTS Ign (Not used)
|
|
long_472 = 0x61eaL, //FTS Ign Mode (Static or vise versa)
|
|
long_473 = 0x61e9L, //FTS Static Ignition Value
|
|
long_474 = 0x61ebL, //Fan Cutout Speed
|
|
long_475 = 0x61ecL, //AC Cutout Speed
|
|
|
|
long_480 = 0x6afcL, //Ignition Controlled Idle Low Table hondata 53a8
|
|
long_481 = 0x6aecL, //Ignition Controlled Idle High Table hondata 5398
|
|
long_482 = 0x653bL, //Overrun Fuel resume (initial) hondata 4f4b
|
|
long_483 = 0x6549L, //Overrun Fuel resume (normal) hondata 4f59
|
|
long_484 = 0x646cL, //Tip-In Fuel (initial) hondata 4ea6
|
|
long_485 = 0x645aL, //Tip-In Fuel (normal) hondata 4e94
|
|
|
|
long_492 = 0xf000L, //TPS Error
|
|
long_405 = 0xf001L, //IAT Error
|
|
long_406 = 0xf002L, //IAT Temp
|
|
long_493 = 0xf003L, //Ign Cut Mod (Soft/Hard)
|
|
//long_494 = 0xf004L, //Ign Cut Mod (With fuel/ign mod or not)
|
|
//long_494 = 0x5ef3L, //Ign Cut Mod (With fuel/ign mod or not)
|
|
long_494 = 0x5f05L, //Ign Cut Mod (With fuel/ign mod or not)
|
|
|
|
long_403 = 0xf005L, //ECT Error
|
|
long_401 = 0xf006L, //VSS Error
|
|
long_400 = 0xf007L, //VSS Corr
|
|
long_407 = 0xf008L, //TPS Error
|
|
long_408 = 0xf009L, //CYP Error
|
|
//long_408 = 0x61dfL, //CYP Error Code9
|
|
//long_409 = 0x61fcL, //CKP Error Code8
|
|
//long_408 = 0x61faL, //CYP Error Code9
|
|
//long_409 = 0x61ffL, //CKP Error Code8
|
|
//long_410 = 0xf00bL, //TDC Error
|
|
|
|
long_413 = 0xf00eL, //Traction Control Error
|
|
long_414 = 0xf00fL, //Automatic Transmission B Signal Error
|
|
|
|
long_4Inj = 0x61a9L,
|
|
//long_4PASS = 0x5ea6L
|
|
|
|
long_510 = 0x5f9cL, //long_324 in HTS used in knock
|
|
long_511 = 0x5f8aL, //long_325 in HTS used in knock
|
|
long_512 = 0x61dfL, //long_326 in HTS used in knock
|
|
long_513 = 0x5f8aL, //long_327 in HTS used in knock
|
|
long_514 = 0x5fa4L, //long_328 in HTS ** Used in flex Fuel !!!!! **
|
|
|
|
//long_515 = 0x61e0L, //used to know the wideband sensor
|
|
|
|
long_520 = 0xf009L, ///rev limiter cutting type
|
|
long_521 = 0xf00aL, //enable CPR on ALTC
|
|
long_522 = 0xf00bL, //CPR fully sync when cranking
|
|
long_523 = 0xf00cL, //CPR dont fire before sync
|
|
|
|
long_525 = 0xf00dL, //enable MIL on Ignition Cut
|
|
|
|
long_530_vts = 0xf00dL, //test output
|
|
long_531_fpump = 0xf00dL, //test output
|
|
long_532_a10 = 0xf00dL, //test output
|
|
long_533_ac = 0xf00dL, //test output
|
|
long_534_pcs = 0xf00dL, //test output
|
|
long_535_iab = 0xf00dL, //test output
|
|
long_536_fanc = 0xf00dL, //test output
|
|
long_537_altc = 0xf00dL, //test output
|
|
};
|
|
this.class13_u_0 = class13_u_1;
|
|
class13_u_1 = null;
|
|
//GetInputsOutputsLocations();
|
|
//Get_Area();
|
|
//GetECT_IAT_Temp_Area();
|
|
}
|
|
|
|
public void GetInputsOutputsLocations()
|
|
{
|
|
if (InputsListLocations != null) InputsListLocations = null;
|
|
InputsListLocations = new List<long>();
|
|
InputsListDesc = new List<string>();
|
|
InputsListLocations.Add(this.class13_u_0.long_357); InputsListDesc.Add("Manual Boost Controller");
|
|
InputsListLocations.Add(this.class13_u_0.long_172); InputsListDesc.Add("Burnout Control");
|
|
InputsListLocations.Add(this.class13_u_0.long_283); InputsListDesc.Add("Dual Map Switching (Primary/Sec)");
|
|
InputsListLocations.Add(this.class13_u_0.long_246); InputsListDesc.Add("Electronic Boost Controller (EBC) PWM");
|
|
InputsListLocations.Add(this.class13_u_0.long_248); InputsListDesc.Add("Electronic Boost Controller (EBC) PWM Hi/Lo");
|
|
InputsListLocations.Add(this.class13_u_0.long_137); InputsListDesc.Add("Launch Control");
|
|
InputsListLocations.Add(this.class13_u_0.long_147); InputsListDesc.Add("Full Throttle Shift");
|
|
InputsListLocations.Add(this.class13_u_0.long_292); InputsListDesc.Add("General Outputs (GPO) #1");
|
|
InputsListLocations.Add(this.class13_u_0.long_314); InputsListDesc.Add("General Outputs (GPO) #2");
|
|
InputsListLocations.Add(this.class13_u_0.long_336); InputsListDesc.Add("General Outputs (GPO) #3");
|
|
InputsListLocations.Add(this.class13_u_0.long_114); InputsListDesc.Add("Extras (SCC Input)");
|
|
|
|
if (OutputsListLocations != null) OutputsListLocations = null;
|
|
OutputsListLocations = new List<long>();
|
|
OutputsListDesc = new List<string>();
|
|
OutputsListLocations.Add(this.class13_u_0.long_364); OutputsListDesc.Add("Manual Boost Controller Stage2");
|
|
OutputsListLocations.Add(this.class13_u_0.long_366); OutputsListDesc.Add("Manual Boost Controller Stage3");
|
|
OutputsListLocations.Add(this.class13_u_0.long_368); OutputsListDesc.Add("Manual Boost Controller Stage4");
|
|
OutputsListLocations.Add(this.class13_u_0.long_110); OutputsListDesc.Add("Fan Control");
|
|
OutputsListLocations.Add(this.class13_u_0.long_294); OutputsListDesc.Add("General Outputs (GPO) #1");
|
|
OutputsListLocations.Add(this.class13_u_0.long_316); OutputsListDesc.Add("General Outputs (GPO) #2");
|
|
OutputsListLocations.Add(this.class13_u_0.long_338); OutputsListDesc.Add("General Outputs (GPO) #3");
|
|
OutputsListLocations.Add(this.class13_u_0.long_239); OutputsListDesc.Add("IAB");
|
|
OutputsListLocations.Add(this.class13_u_0.long_232); OutputsListDesc.Add("Vtec");
|
|
}
|
|
|
|
public void GetECT_IAT_Temp_Area()
|
|
{
|
|
//GetRomVersion();
|
|
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
//ECT Temp D5 D9 A3 1C CB
|
|
if (GetByteAt(i) == 0xD5 && GetByteAt(i + 1) == 0xD9 && GetByteAt(i + 2) == 0xA3 && GetByteAt(i + 3) == 0x1C && GetByteAt(i + 4) == 0xCB)
|
|
{
|
|
this.class13_u_0.long_404 = i + 9;
|
|
}
|
|
//Closeloop Long Term DA 16 05 C5 B8
|
|
if (GetByteAt(i) == 0xDA && GetByteAt(i + 1) == 0x16 && GetByteAt(i + 2) == 0x05 && GetByteAt(i + 3) == 0xC5 && GetByteAt(i + 4) == 0xB8)
|
|
{
|
|
this.class13_u_0.long_415 = i + 10;
|
|
this.class13_u_0.long_416 = i + 16;
|
|
}
|
|
//###############################################################################
|
|
//THIS IS ANOTHER ROM LOCATION THAT SHARE SENSORS DEFAULT VALUE IF SENSORS FAIL
|
|
//ECT/IAT Temp #2 D5 DA 62 D1 03
|
|
if (GetByteAt(i) == 0xD5 && GetByteAt(i + 1) == 0xDA && GetByteAt(i + 2) == 0x62 && GetByteAt(i + 3) == 0xD1 && GetByteAt(i + 4) == 0x03)
|
|
{
|
|
this.class13_u_0.long_490 = i + 15;
|
|
this.class13_u_0.long_491 = i + 11;
|
|
}
|
|
//###############################################################################
|
|
//ECT Disable C4 30 1D C5 B0
|
|
if (GetByteAt(i) == 0xC4 && GetByteAt(i + 1) == 0x30 && GetByteAt(i + 2) == 0x1D && GetByteAt(i + 3) == 0xC5 && GetByteAt(i + 4) == 0xB0)
|
|
{
|
|
this.class13_u_0.long_403 = i + 7; //ECT Disable
|
|
}
|
|
//IAT ERROR C4 19 2E C5 B0
|
|
if (GetByteAt(i) == 0xC4 && GetByteAt(i + 1) == 0x19 && GetByteAt(i + 2) == 0x2E && GetByteAt(i + 3) == 0xC5 && GetByteAt(i + 4) == 0xB0)
|
|
{
|
|
this.class13_u_0.long_405 = i + 7; //IAT Disable
|
|
this.class13_u_0.long_406 = i + 16; //IAT Temp
|
|
}
|
|
//VSS ERROR C4 1C 2C C5 B1
|
|
if (GetByteAt(i) == 0xC4 && GetByteAt(i + 1) == 0x1C && GetByteAt(i + 2) == 0x2C && GetByteAt(i + 3) == 0xC5 && GetByteAt(i + 4) == 0xB1)
|
|
{
|
|
this.class13_u_0.long_401 = i + 8; //VSS Disable
|
|
this.class13_u_0.long_400 = i + 12; //VSS Correction
|
|
}
|
|
//TPS ERROR 11 44 15 89 77
|
|
if (GetByteAt(i) == 0x11 && GetByteAt(i + 1) == 0x44 && GetByteAt(i + 2) == 0x15 && GetByteAt(i + 3) == 0x89 && GetByteAt(i + 4) == 0x77)
|
|
{
|
|
this.class13_u_0.long_407 = i + 5; //TPS Disable
|
|
}
|
|
//CYP ERROR C5 B5 19 B4 34
|
|
if (GetByteAt(i) == 0xc5 && GetByteAt(i + 1) == 0xb5 && GetByteAt(i + 2) == 0x19 && GetByteAt(i + 3) == 180 && GetByteAt(i + 4) == 0x34)
|
|
{
|
|
this.class13_u_0.long_408 = i + 12;
|
|
}
|
|
//TDC ERROR C5 B5 19 B4 34
|
|
/*if (GetByteAt(i) == 0xC5 && GetByteAt(i + 1) == 0xB5 && GetByteAt(i + 2) == 0x19 && GetByteAt(i + 3) == 0xB5 && GetByteAt(i + 4) == 0xA2)
|
|
{
|
|
//this.class13_0.long_410 = i + 6; //TDC Disable
|
|
}*/
|
|
//Traction Control ERROR EF 33 03 C4 32
|
|
if (GetByteAt(i) == 0xEF && GetByteAt(i + 1) == 0x33 && GetByteAt(i + 2) == 0x03 && GetByteAt(i + 3) == 0xC4 && GetByteAt(i + 4) == 0x32)
|
|
{
|
|
this.class13_u_0.long_413 = i + 9; //Traction Control Disable
|
|
}
|
|
//Automatic Transmission B Signal ERROR CB 01 95 C5 B3
|
|
if (GetByteAt(i) == 0xCB && GetByteAt(i + 1) == 0x01 && GetByteAt(i + 2) == 0x95 && GetByteAt(i + 3) == 0xC5 && GetByteAt(i + 4) == 0xB3)
|
|
{
|
|
this.class13_u_0.long_414 = i + 6; //Automatic Transmission B Signal Disable
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Get_TestOutputs_Area()
|
|
{
|
|
if (RomVersion >= 116)
|
|
{
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
//5714009299 = CPR fully sync when cranking
|
|
if (GetByteAt(i) == 0x57 && GetByteAt(i + 1) == 0x14 && GetByteAt(i + 2) == 0x00 && GetByteAt(i + 3) == 0x92 && GetByteAt(i + 4) == 0x99)
|
|
{
|
|
this.class13_u_0.long_522 = i + 21;
|
|
}
|
|
//62B803D2 = CPR dont fire before sync
|
|
if (GetByteAt(i) == 0x62 && GetByteAt(i + 1) == 0xb8 && GetByteAt(i + 2) == 0x03 && GetByteAt(i + 3) == 0xd2)
|
|
{
|
|
this.class13_u_0.long_523 = i + 17;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (RomVersion >= 120)
|
|
{
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
//79D4A477 = vts
|
|
if (GetByteAt(i) == 0x79 && GetByteAt(i + 1) == 0xd4 && GetByteAt(i + 2) == 0xa4 && GetByteAt(i + 3) == 0x77)
|
|
{
|
|
this.class13_u_0.long_530_vts = i + 4;
|
|
}
|
|
//EE190777 = fpump
|
|
if (GetByteAt(i) == 0xee && GetByteAt(i + 1) == 0x19 && GetByteAt(i + 2) == 0x07 && GetByteAt(i + 3) == 0x77)
|
|
{
|
|
this.class13_u_0.long_531_fpump = i + 4;
|
|
}
|
|
//85C5203877 = ac
|
|
if (GetByteAt(i) == 0x85 && GetByteAt(i + 1) == 0xc5 && GetByteAt(i + 2) == 0x20 && GetByteAt(i + 3) == 0x38 && GetByteAt(i + 4) == 0x77)
|
|
{
|
|
this.class13_u_0.long_533_ac = i + 5;
|
|
this.class13_u_0.long_532_a10 = i + 13;
|
|
}
|
|
//C4ED3D77 = pcs
|
|
if (GetByteAt(i) == 0xc4 && GetByteAt(i + 1) == 0xed && GetByteAt(i + 2) == 0x3d && GetByteAt(i + 3) == 0x77)
|
|
{
|
|
this.class13_u_0.long_534_pcs = i + 4;
|
|
}
|
|
//C5203977 = iab
|
|
if (GetByteAt(i) == 0xc5 && GetByteAt(i + 1) == 0x20 && GetByteAt(i + 2) == 0x39 && GetByteAt(i + 3) == 0x77)
|
|
{
|
|
this.class13_u_0.long_535_iab = i + 4;
|
|
}
|
|
//C499C01E = fanc
|
|
if (GetByteAt(i) == 0xc4 && GetByteAt(i + 1) == 0x99 && GetByteAt(i + 2) == 0xc0 && GetByteAt(i + 3) == 0x1e)
|
|
{
|
|
this.class13_u_0.long_536_fanc = i + 9;
|
|
}
|
|
//72C22FA2 = altc
|
|
if (GetByteAt(i) == 0x72 && GetByteAt(i + 1) == 0xC2 && GetByteAt(i + 2) == 0x2F && GetByteAt(i + 3) == 0xA2)
|
|
{
|
|
this.class13_u_0.long_537_altc = i + 12;
|
|
}
|
|
}
|
|
}
|
|
|
|
this.class17_0.frmMain_0.SetTestOutputsInfos();
|
|
}
|
|
|
|
public bool GetIgnitionCutMODInstalled()
|
|
{
|
|
//GetRomVersion();
|
|
bool Installed = false;
|
|
|
|
if (RomVersion >= 102 && RomVersion < 109)
|
|
{
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
//62 09 04 C2 29
|
|
if (GetByteAt(i) == 0x62 && GetByteAt(i + 1) == 0x09 && GetByteAt(i + 2) == 0x04 && GetByteAt(i + 3) == 0xC2 && GetByteAt(i + 4) == 0x29)
|
|
{
|
|
if (GetByteAt(i - 5) == 0xe6 && GetByteAt(i - 4) == 0x00)
|
|
{
|
|
Installed = true;
|
|
i = GetByteLenght();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return Installed;
|
|
}
|
|
|
|
public void InstallCYPMod()
|
|
{
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
//53 + C4273F
|
|
//off(00212h).3 //Code4 CKP
|
|
//off(00212h).7 //Code8 TDC
|
|
//off(00213h).0 //Code9 CYL
|
|
//off(00213h).5 //Code14 IACV
|
|
|
|
//90 9D FA 61 53
|
|
/*if (GetByteAt(i) == 0x90 && GetByteAt(i + 1) == 0x9D && GetByteAt(i + 2) == 0xFA && GetByteAt(i + 3) == 0x61 && GetByteAt(i + 4) == 0x53)
|
|
{
|
|
//CYP - Code9
|
|
SetByteAt(i + 5, 0xc4);
|
|
SetByteAt(i + 6, 0x13);
|
|
SetByteAt(i + 7, 0x38);
|
|
|
|
SetByteAt(0x61fa, 0x00);
|
|
|
|
//CKP - Code8
|
|
//SetByteAt(i + 21, 0xc4);
|
|
//SetByteAt(i + 22, 0x12);
|
|
//SetByteAt(i + 23, 0x3b);
|
|
|
|
i = GetByteLenght();
|
|
}*/
|
|
|
|
//90 9D 0E 62 53
|
|
/*if (GetByteAt(i) == 0x90 && GetByteAt(i + 1) == 0x9D && GetByteAt(i + 2) == 0x0E && GetByteAt(i + 3) == 0x62 && GetByteAt(i + 4) == 0x53)
|
|
{
|
|
i += 8;
|
|
int StartIndex = i;
|
|
while (GetByteAt(StartIndex) != 0xff && GetByteAt(StartIndex + 1) != 0xff && GetByteAt(StartIndex + 2) != 0xff && GetByteAt(StartIndex + 3) != 0xff)
|
|
{
|
|
StartIndex++;
|
|
}
|
|
|
|
for (int i2 = StartIndex + 16; i2 > i; i2--) SetByteAt(i2, GetByteAt(i2 - 16));
|
|
|
|
//90 9D FB 61 53 C4 13 38
|
|
//90 9D FC 61 53 C4 12 3B
|
|
//CYP - Code9
|
|
SetByteAt(i, 0x90);
|
|
SetByteAt(i + 1, 0x9d);
|
|
SetByteAt(i + 2, 0xfb);
|
|
SetByteAt(i + 3, 0x61);
|
|
SetByteAt(i + 4, 0x53);
|
|
SetByteAt(i + 5, 0xc4);
|
|
SetByteAt(i + 6, 0x13);
|
|
SetByteAt(i + 7, 0x38);
|
|
|
|
//CKP - Code8
|
|
SetByteAt(i + 8, 0x90);
|
|
SetByteAt(i + 9, 0x9d);
|
|
SetByteAt(i + 10, 0xfc);
|
|
SetByteAt(i + 11, 0x61);
|
|
SetByteAt(i + 12, 0x53);
|
|
SetByteAt(i + 13, 0xc4);
|
|
SetByteAt(i + 14, 0x12);
|
|
SetByteAt(i + 15, 0x3b);
|
|
|
|
i = GetByteLenght();
|
|
}*/
|
|
}
|
|
}
|
|
|
|
public List<long> GetInputsListLocations()
|
|
{
|
|
return InputsListLocations;
|
|
}
|
|
|
|
public List<string> GetInputsListDesc()
|
|
{
|
|
return InputsListDesc;
|
|
}
|
|
|
|
public List<long> GetOutputsListLocations()
|
|
{
|
|
return OutputsListLocations;
|
|
}
|
|
|
|
public List<string> GetOutputsListDesc()
|
|
{
|
|
return OutputsListDesc;
|
|
}
|
|
|
|
public int GetStable_Version_LAST()
|
|
{
|
|
return Stable_Version_LAST;
|
|
}
|
|
|
|
public void method_149_Bytes_String(long long_0_X, string TheseBytes)
|
|
{
|
|
//if (long_0_X != 0)
|
|
if (long_0_X > 80)
|
|
{
|
|
int NumberChars = TheseBytes.Length;
|
|
byte[] byte_3 = new byte[NumberChars / 2];
|
|
for (int i = 0; i < NumberChars; i += 2) byte_3[i / 2] = Convert.ToByte(TheseBytes.Substring(i, 2), 16);
|
|
|
|
bool Same = true;
|
|
for (int i = 0; i < byte_3.Length; i++) if (GetByteAt((int)((IntPtr)long_0_X) + i) != byte_3[i]) Same = false;
|
|
|
|
if (!Same)
|
|
{
|
|
if (!this.class11_u_0.method_3() && this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
for (int i = 0; i < byte_3.Length; i++)
|
|
{
|
|
this.class11_u_0.method_0(long_0_X + i, GetByteAt((int)((IntPtr)long_0_X)), byte_3[i]);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < byte_3.Length; i++)
|
|
{
|
|
SetByteAt((int)((IntPtr)long_0_X + i), byte_3[i]);
|
|
//this.class25_0.method_18(long_0_X + i, byte_3[i]); //RTP Upload this Byte
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void method_153()
|
|
{
|
|
this.class11_u_0.method_10(false, null, false, false);
|
|
}
|
|
|
|
public void method_154()
|
|
{
|
|
this.class11_u_0.method_10(false, null, false, true);
|
|
}
|
|
|
|
public void method_155(string string_8)
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Settings - " + string_8);
|
|
this.class11_u_0.method_10(true, string_8, false, false);
|
|
}
|
|
|
|
public void method_156(string string_8, bool bool_3)
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Settings - " + string_8);
|
|
this.class11_u_0.method_10(true, string_8, bool_3, false);
|
|
}
|
|
|
|
public bool method_157()
|
|
{
|
|
return this.class11_u_0.method_1();
|
|
}
|
|
|
|
public bool method_158()
|
|
{
|
|
return this.class11_u_0.method_2();
|
|
}
|
|
|
|
public int method_159(byte byte_3)
|
|
{
|
|
int num = 0;
|
|
long num2 = 0L;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num2 = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
}
|
|
num = this.GetByteAt(num2 + byte_3);
|
|
if ((num <= 0) && (byte_3 > 0))
|
|
{
|
|
num += 0x100;
|
|
}
|
|
if (this.method_35())
|
|
{
|
|
return this.method_186(num);
|
|
}
|
|
if (!this.method_36())
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
}
|
|
return this.method_187(num);
|
|
}
|
|
|
|
public int method_160(byte byte_3, SelectedTable selectedTable_1)
|
|
{
|
|
int num = 0;
|
|
long num2 = 0L;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num2 = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
}
|
|
num = this.GetByteAt(num2 + byte_3);
|
|
if ((num <= 0) && (byte_3 > 0))
|
|
{
|
|
num += 0x100;
|
|
}
|
|
if (this.method_35_Selectable(selectedTable_1))
|
|
{
|
|
return this.method_186(num);
|
|
}
|
|
if (!this.method_36_Selectable(selectedTable_1))
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
}
|
|
return this.method_187(num);
|
|
}
|
|
|
|
|
|
public int method_162(byte byte_3, SelectedTable selectedTable_1)
|
|
{
|
|
long num = 0L;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Get RpmScalar Error");
|
|
return 0;
|
|
//throw new Exception("Get RpmScalar Error");
|
|
}
|
|
return this.GetByteAt(num + byte_3);
|
|
}
|
|
|
|
public int method_163(byte byte_3)
|
|
{
|
|
int num = 0;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.undefined:
|
|
break;
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("GetMapScalarMbar error");
|
|
return 0;
|
|
//throw new Exception("GetMapScalarMbar error");
|
|
}
|
|
if ((num <= 0) && (byte_3 > 0))
|
|
{
|
|
num += 0x100;
|
|
}
|
|
return this.method_206(num);
|
|
}
|
|
|
|
public int method_164(byte byte_3, SelectedTable selectedTable_1)
|
|
{
|
|
int num = 0;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
break;
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("GetMapScalarMbar error");
|
|
return 0;
|
|
//throw new Exception("GetMapScalarMbar error");
|
|
}
|
|
if ((num <= 0) && (byte_3 > 0))
|
|
{
|
|
num += 0x100;
|
|
}
|
|
return this.method_206(num);
|
|
}
|
|
|
|
public int method_165(byte byte_3)
|
|
{
|
|
int num = 0;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.undefined:
|
|
return num;
|
|
|
|
case SelectedTable.ign1_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("GetMapScalarRaw error");
|
|
return 0;
|
|
//throw new Exception("GetMapScalarRaw error");
|
|
}
|
|
|
|
public int method_166(byte byte_3, SelectedTable selectedTable_1)
|
|
{
|
|
int num = 0;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
return num;
|
|
|
|
case SelectedTable.ign1_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("GetMapScalarRaw error");
|
|
return 0;
|
|
//throw new Exception("GetMapScalarRaw error");
|
|
}
|
|
|
|
public string method_167(byte byte_3)
|
|
{
|
|
int num = 0;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.undefined:
|
|
break;
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_6 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_18 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.GetByteAt(this.class13_u_0.long_30 + byte_3);
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("GetMapScalarDisplay error");
|
|
return "";
|
|
//throw new Exception("GetMapScalarDisplay error");
|
|
}
|
|
if ((num <= 0) && (byte_3 > 0))
|
|
{
|
|
num += 0x100;
|
|
}
|
|
return this.method_195(num);
|
|
}
|
|
|
|
public void method_168(byte byte_3, int int_3)
|
|
{
|
|
byte num = 0;
|
|
long num2 = 0L;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num2 = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
}
|
|
if (this.method_35())
|
|
{
|
|
num = this.method_216(int_3);
|
|
if ((num == 0xff) && (byte_3 > 0))
|
|
{
|
|
num = 0;
|
|
}
|
|
this.method_149_SetByte(num2 + byte_3, num);
|
|
if (this.delegate55_0 != null)
|
|
{
|
|
this.delegate55_0();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!this.method_36())
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
}
|
|
num = this.method_217(int_3);
|
|
if ((num == 0xff) && (byte_3 > 0))
|
|
{
|
|
num = 0;
|
|
}
|
|
this.method_149_SetByte(num2 + byte_3, num);
|
|
if (this.delegate55_0 != null)
|
|
{
|
|
this.delegate55_0();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void method_169(byte byte_3, int int_3, SelectedTable selectedTable_1)
|
|
{
|
|
byte num = 0;
|
|
long num2 = 0L;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num2 = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num2 = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num2 = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num2 = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num2 = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
}
|
|
if (((selectedTable_1 == SelectedTable.fuel1_lo) || (selectedTable_1 == SelectedTable.fuel2_lo)) || ((selectedTable_1 == SelectedTable.ign1_lo) || (selectedTable_1 == SelectedTable.ign2_lo)))
|
|
{
|
|
num = this.method_216(int_3);
|
|
if ((num == 0xff) && (byte_3 > 0))
|
|
{
|
|
num = 0;
|
|
}
|
|
this.method_149_SetByte(num2 + byte_3, num);
|
|
if (this.delegate55_0 != null)
|
|
{
|
|
this.delegate55_0();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (((selectedTable_1 != SelectedTable.fuel1_hi) && (selectedTable_1 != SelectedTable.fuel2_hi)) && ((selectedTable_1 != SelectedTable.ign1_hi) && (selectedTable_1 != SelectedTable.ign2_hi)))
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
}
|
|
num = this.method_217(int_3);
|
|
if ((num == 0xff) && (byte_3 > 0))
|
|
{
|
|
num = 0;
|
|
}
|
|
this.method_149_SetByte(num2 + byte_3, num);
|
|
if (this.delegate55_0 != null)
|
|
{
|
|
this.delegate55_0();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void method_170(byte byte_3, byte byte_4, SelectedTable selectedTable_1)
|
|
{
|
|
long num = 0L;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.undefined:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ign1_lo:
|
|
num = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.class13_u_0.long_8;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.class13_u_0.long_9;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.class13_u_0.long_16;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.class13_u_0.long_17;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.class13_u_0.long_29;
|
|
break;
|
|
|
|
default:
|
|
this.class17_0.frmMain_0.LogThis("Set RpmScalar Error");
|
|
return;
|
|
//throw new Exception("Set RpmScalar Error");
|
|
}
|
|
this.method_149_SetByte(num + byte_3, byte_4);
|
|
}
|
|
|
|
public void method_171(byte byte_3, byte byte_4, SelectedTable selectedTable_1)
|
|
{
|
|
long num = 0L;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
num = this.class13_u_0.long_30 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.class13_u_0.long_30 + byte_3;
|
|
break;
|
|
}
|
|
this.method_149_SetByte(num, byte_4);
|
|
}
|
|
|
|
public void method_172(byte byte_3, float float_0, int int_3)
|
|
{
|
|
int num = 0;
|
|
if (int_3 < this.method_226(this.class10_settings_0.int_6))
|
|
{
|
|
if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.mBar)
|
|
{
|
|
num = (int) float_0;
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.Bar)
|
|
{
|
|
num = (int) (float_0 * 1000f);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.inHg)
|
|
{
|
|
num = this.method_247(float_0);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.inHgG)
|
|
{
|
|
num = this.method_247(this.method_246(this.class10_settings_0.int_6) - (float_0 * -1f));
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.psi)
|
|
{
|
|
num = this.method_250(float_0);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.kPa)
|
|
{
|
|
num = this.method_249(float_0);
|
|
}
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_1 == MapSensorUnits.mBar)
|
|
{
|
|
num = (int) float_0;
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_1 == MapSensorUnits.Bar)
|
|
{
|
|
num = (int) (float_0 * 1000f);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_0 == MapSensorUnits.inHg)
|
|
{
|
|
num = this.method_247(float_0);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_1 == MapSensorUnits.psi)
|
|
{
|
|
num = this.method_250(float_0);
|
|
}
|
|
else if (this.class10_settings_0.mapSensorUnits_1 == MapSensorUnits.kPa)
|
|
{
|
|
num = this.method_249(float_0);
|
|
}
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
if (byte_3 != 0)
|
|
{
|
|
num2 = this.method_163((byte) (byte_3 - 1));
|
|
if (num < num2)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "Value is lower then the column to the left" + Environment.NewLine + "Continue?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.method_173(byte_3, num);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (byte_3 != this.method_33())
|
|
{
|
|
num3 = this.method_163((byte) (byte_3 + 1));
|
|
if (num > num3)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "Value is higher then the column to the right" + Environment.NewLine + "Continue?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.method_173(byte_3, num);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (byte_3 == this.method_33())
|
|
{
|
|
num2 = this.method_163((byte) (byte_3 - 1));
|
|
if (num < num2)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "Value is lower then the column to the left" + Environment.NewLine + "Continue?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.method_173(byte_3, num);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (byte_3 == 0)
|
|
{
|
|
num3 = this.method_163((byte) (byte_3 + 1));
|
|
if (num > num3)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "Value is higher then the column to the right" + Environment.NewLine + "Continue?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.method_173(byte_3, num);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
this.method_173(byte_3, num);
|
|
}
|
|
|
|
public void method_173(byte byte_3, int int_3)
|
|
{
|
|
long num = 0L;
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.class13_u_0.long_6 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.class13_u_0.long_18 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ve_lo:
|
|
num = this.class13_u_0.long_30 + byte_3;
|
|
break;
|
|
|
|
case SelectedTable.ve_hi:
|
|
num = this.class13_u_0.long_30 + byte_3;
|
|
break;
|
|
}
|
|
this.method_149_SetByte(num, this.method_226(int_3));
|
|
}
|
|
|
|
public float method_174(byte byte_3, byte byte_4)
|
|
{
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return this.method_188(this.method_178(byte_3, byte_4));
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.method_188(this.method_178(byte_3, byte_4));
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return ((this.method_178(byte_3, byte_4) * this.method_182(byte_3)) / 4f);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return ((this.method_178(byte_3, byte_4) * this.method_182(byte_3)) / 4f);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.method_188(this.method_178(byte_3, byte_4));
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.method_188(this.method_178(byte_3, byte_4));
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return ((this.method_178(byte_3, byte_4) * this.method_182(byte_3)) / 4f);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return ((this.method_178(byte_3, byte_4) * this.method_182(byte_3)) / 4f);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return (float) Math.Round((double) (((((double) this.method_178(byte_3, byte_4)) / ((double) this.long_28)) * 100.0) - 100.0), 0);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return (float) Math.Round((double) (((((double) this.method_178(byte_3, byte_4)) / ((double) this.long_28)) * 100.0) - 100.0), 0);
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
public float method_175(byte byte_3, byte byte_4, SelectedTable selectedTable_1)
|
|
{
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return this.method_188(this.method_179(byte_3, byte_4, selectedTable_1));
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.method_188(this.method_179(byte_3, byte_4, selectedTable_1));
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return ((this.method_179(byte_3, byte_4, selectedTable_1) * this.method_183(byte_3, selectedTable_1)) / 4f);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return ((this.method_179(byte_3, byte_4, selectedTable_1) * this.method_183(byte_3, selectedTable_1)) / 4f);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.method_188(this.method_179(byte_3, byte_4, selectedTable_1));
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.method_188(this.method_179(byte_3, byte_4, selectedTable_1));
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return ((this.method_179(byte_3, byte_4, selectedTable_1) * this.method_183(byte_3, selectedTable_1)) / 4f);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return ((this.method_179(byte_3, byte_4, selectedTable_1) * this.method_183(byte_3, selectedTable_1)) / 4f);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return (float) Math.Round((double) (((((double) this.method_179(byte_3, byte_4, selectedTable_1)) / ((double) this.long_28)) * 100.0) - 100.0), 0);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return (float) Math.Round((double) (((((double) this.method_179(byte_3, byte_4, selectedTable_1)) / ((double) this.long_28)) * 100.0) - 100.0), 0);
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
public void method_176(byte byte_3, byte byte_4, float float_0)
|
|
{
|
|
byte num;
|
|
byte num2;
|
|
float num3;
|
|
float num4;
|
|
float num5;
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
this.method_180(byte_3, byte_4, this.method_220(float_0));
|
|
return;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
this.method_180(byte_3, byte_4, this.method_220(float_0));
|
|
return;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.method_182(byte_3);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
while ((num3 > 255f) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
}
|
|
this.method_180(byte_3, byte_4, (byte) num3);
|
|
this.method_178(byte_3, byte_4);
|
|
if (num != num2)
|
|
{
|
|
this.method_184(byte_3, num);
|
|
for (int i = 0; i < this.method_32_GetRPM_RowsNumber(); i++)
|
|
{
|
|
if (i != byte_4)
|
|
{
|
|
num3 = (int) (this.method_178(byte_3, (byte) i) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_178(byte_3, (byte) i) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4f; num4 > num5; num5 = (num3 * num) / 4f)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_180(byte_3, (byte) i, (byte) num3);
|
|
}
|
|
}
|
|
if (this.delegate60_0 == null)
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.method_182(byte_3);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
while ((num3 > 255f) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = (float_0 * 4f) / ((float) num);
|
|
}
|
|
num5 = (num3 * num) / 4f;
|
|
this.method_180(byte_3, byte_4, (byte) num3);
|
|
if (num != num2)
|
|
{
|
|
this.method_184(byte_3, num);
|
|
for (int j = 0; j < this.method_32_GetRPM_RowsNumber(); j++)
|
|
{
|
|
if (j != byte_4)
|
|
{
|
|
num3 = (int) (this.method_178(byte_3, (byte) j) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_178(byte_3, (byte) j) * num2) / 4;
|
|
num5 = (num3 * num) / 4f;
|
|
while (num4 > num5)
|
|
{
|
|
num3++;
|
|
num5 = (num3 * num) / 4f;
|
|
}
|
|
this.method_180(byte_3, (byte) j, (byte) num3);
|
|
}
|
|
}
|
|
if (this.delegate60_0 == null)
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
this.method_180(byte_3, byte_4, this.method_220(float_0));
|
|
return;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
this.method_180(byte_3, byte_4, this.method_220(float_0));
|
|
return;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.method_182(byte_3);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
while ((num3 > 255f) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
}
|
|
this.method_180(byte_3, byte_4, (byte) num3);
|
|
if (num != num2)
|
|
{
|
|
this.method_184(byte_3, num);
|
|
for (int k = 0; k < this.method_32_GetRPM_RowsNumber(); k++)
|
|
{
|
|
if (k != byte_4)
|
|
{
|
|
num3 = this.method_178(byte_3, (byte) k) * (((float) num2) / ((float) num));
|
|
num4 = (this.method_178(byte_3, (byte) k) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4f; num4 > num5; num5 = (num3 * num) / 4f)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_180(byte_3, (byte) k, (byte) num3);
|
|
}
|
|
}
|
|
if (this.delegate60_0 == null)
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.method_182(byte_3);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
while ((num3 > 255f) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = (float) Math.Round((double) ((float_0 * 4f) / ((float) num)), 0);
|
|
}
|
|
num5 = (num3 * num) / 4f;
|
|
this.method_180(byte_3, byte_4, (byte) num3);
|
|
if (num != num2)
|
|
{
|
|
this.method_184(byte_3, num);
|
|
for (int m = 0; m < this.method_32_GetRPM_RowsNumber(); m++)
|
|
{
|
|
if (m != byte_4)
|
|
{
|
|
num3 = this.method_178(byte_3, (byte) m) * (((float) num2) / ((float) num));
|
|
num4 = (this.method_178(byte_3, (byte) m) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4f; num4 > num5; num5 = (num3 * num) / 4f)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_180(byte_3, (byte) m, (byte) num3);
|
|
}
|
|
}
|
|
if (this.delegate60_0 == null)
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.ve_lo:
|
|
float_0 = ((float_0 + 100f) * this.long_28) / 100f;
|
|
if (float_0 > 255f)
|
|
{
|
|
float_0 = 255f;
|
|
}
|
|
if (float_0 < 0f)
|
|
{
|
|
float_0 = 0f;
|
|
}
|
|
this.method_180(byte_3, byte_4, (byte) float_0);
|
|
return;
|
|
|
|
case SelectedTable.ve_hi:
|
|
float_0 = ((float_0 + 100f) * this.long_28) / 100f;
|
|
if (float_0 > 255f)
|
|
{
|
|
float_0 = 255f;
|
|
}
|
|
if (float_0 < 0f)
|
|
{
|
|
float_0 = 0f;
|
|
}
|
|
this.method_180(byte_3, byte_4, (byte) float_0);
|
|
return;
|
|
}
|
|
}
|
|
|
|
public void method_177(byte byte_3, byte byte_4, float float_0, SelectedTable selectedTable_1)
|
|
{
|
|
byte num;
|
|
byte num2;
|
|
int num3;
|
|
float num4;
|
|
float num5;
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
this.method_181(byte_3, byte_4, this.method_220(float_0), selectedTable_1);
|
|
return;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
this.method_181(byte_3, byte_4, this.method_220(float_0), selectedTable_1);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
num = this.method_183(byte_3, selectedTable_1);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
while ((num3 > 0xff) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
}
|
|
this.method_181(byte_3, byte_4, (byte) num3, selectedTable_1);
|
|
if (num != num2)
|
|
{
|
|
this.method_185(byte_3, num, selectedTable_1);
|
|
for (int i = 0; i < this.method_32_GetRPM_RowsNumber(); i++)
|
|
{
|
|
if (i != byte_4)
|
|
{
|
|
num3 = (int) (this.method_179(byte_3, (byte) i, selectedTable_1) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_179(byte_3, (byte) i, selectedTable_1) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4; num4 > num5; num5 = (num3 * num) / 4)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_181(byte_3, (byte) i, (byte) num3, selectedTable_1);
|
|
}
|
|
}
|
|
if ((this.delegate60_0 == null) || (byte_3 >= (this.class10_settings_0.method_11_GetMAP_ColumnsNumber() - 1)))
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
num = this.method_183(byte_3, selectedTable_1);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
while ((num3 > 0xff) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
}
|
|
num5 = (num3 * num) / 4;
|
|
this.method_181(byte_3, byte_4, (byte) num3, selectedTable_1);
|
|
if (num != num2)
|
|
{
|
|
this.method_185(byte_3, num, selectedTable_1);
|
|
for (int j = 0; j < this.method_32_GetRPM_RowsNumber(); j++)
|
|
{
|
|
if (j != byte_4)
|
|
{
|
|
num3 = (int) (this.method_179(byte_3, (byte) j, selectedTable_1) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_179(byte_3, (byte) j, selectedTable_1) * num2) / 4;
|
|
num5 = (num3 * num) / 4;
|
|
while (num4 > num5)
|
|
{
|
|
num3++;
|
|
num5 = (num3 * num) / 4;
|
|
}
|
|
this.method_181(byte_3, (byte) j, (byte) num3, selectedTable_1);
|
|
}
|
|
}
|
|
if ((this.delegate60_0 == null) || (byte_3 >= (this.class10_settings_0.method_11_GetMAP_ColumnsNumber() - 1)))
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
this.method_181(byte_3, byte_4, this.method_220(float_0), selectedTable_1);
|
|
return;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
this.method_181(byte_3, byte_4, this.method_220(float_0), selectedTable_1);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
num = this.method_183(byte_3, selectedTable_1);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
while ((num3 > 0xff) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
}
|
|
this.method_181(byte_3, byte_4, (byte) num3, selectedTable_1);
|
|
if (num != num2)
|
|
{
|
|
this.method_185(byte_3, num, selectedTable_1);
|
|
for (int k = 0; k < this.method_32_GetRPM_RowsNumber(); k++)
|
|
{
|
|
if (k != byte_4)
|
|
{
|
|
num3 = (int) (this.method_179(byte_3, (byte) k, selectedTable_1) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_179(byte_3, (byte) k, selectedTable_1) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4; num4 > num5; num5 = (num3 * num) / 4)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_181(byte_3, (byte) k, (byte) num3, selectedTable_1);
|
|
}
|
|
}
|
|
if ((this.delegate60_0 == null) || (byte_3 >= (this.class10_settings_0.method_11_GetMAP_ColumnsNumber() - 1)))
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
num = this.method_183(byte_3, selectedTable_1);
|
|
if (num < 0)
|
|
{
|
|
num = (byte) (num + 0xff);
|
|
}
|
|
num2 = num;
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
while ((num3 > 0xff) && (num <= 0xff))
|
|
{
|
|
num = (byte) (num + 1);
|
|
num3 = ((int) (float_0 * 4f)) / num;
|
|
}
|
|
num5 = (num3 * num) / 4;
|
|
this.method_181(byte_3, byte_4, (byte) num3, selectedTable_1);
|
|
if (num != num2)
|
|
{
|
|
this.method_185(byte_3, num, selectedTable_1);
|
|
for (int m = 0; m < this.method_32_GetRPM_RowsNumber(); m++)
|
|
{
|
|
if (m != byte_4)
|
|
{
|
|
num3 = (int) (this.method_179(byte_3, (byte) m, selectedTable_1) * (((float) num2) / ((float) num)));
|
|
num4 = (this.method_179(byte_3, (byte) m, selectedTable_1) * num2) / 4;
|
|
for (num5 = (num3 * num) / 4; num4 > num5; num5 = (num3 * num) / 4)
|
|
{
|
|
num3++;
|
|
}
|
|
this.method_181(byte_3, (byte) m, (byte) num3, selectedTable_1);
|
|
}
|
|
}
|
|
if ((this.delegate60_0 == null) || (byte_3 >= (this.class10_settings_0.method_11_GetMAP_ColumnsNumber() - 1)))
|
|
{
|
|
return;
|
|
}
|
|
this.delegate60_0(byte_3);
|
|
}
|
|
return;
|
|
|
|
case SelectedTable.ve_lo:
|
|
float_0 = ((float_0 + 100f) * this.long_28) / 100f;
|
|
if (float_0 > 255f)
|
|
{
|
|
float_0 = 255f;
|
|
}
|
|
if (float_0 < 0f)
|
|
{
|
|
float_0 = 0f;
|
|
}
|
|
this.method_181(byte_3, byte_4, (byte) float_0, selectedTable_1);
|
|
return;
|
|
|
|
case SelectedTable.ve_hi:
|
|
float_0 = ((float_0 + 100f) * this.long_28) / 100f;
|
|
if (float_0 > 255f)
|
|
{
|
|
float_0 = 255f;
|
|
}
|
|
if (float_0 < 0f)
|
|
{
|
|
float_0 = 0f;
|
|
}
|
|
this.method_181(byte_3, byte_4, (byte) float_0, selectedTable_1);
|
|
return;
|
|
}
|
|
}
|
|
|
|
public byte method_178(byte byte_3, byte byte_4)
|
|
{
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_12 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_13 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_10 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_11 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_22 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_23 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_20 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_21 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_26 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_27 + (byte_4 * this.method_33())) + byte_3);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public byte method_179(byte byte_3, byte byte_4, SelectedTable selectedTable_1)
|
|
{
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_12 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_13 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_10 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_11 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_22 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_23 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_20 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_21 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ve_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_26 + (byte_4 * this.method_33())) + byte_3);
|
|
|
|
case SelectedTable.ve_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_27 + (byte_4 * this.method_33())) + byte_3);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public void method_180(byte byte_3, byte byte_4, byte byte_5)
|
|
{
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_12 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_13 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_10 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_11 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_22 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_23 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_20 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_21 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_26 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ve_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_27 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
}
|
|
}
|
|
|
|
public void method_181(byte byte_3, byte byte_4, byte byte_5, SelectedTable selectedTable_1)
|
|
{
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_12 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_13 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_10 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_11 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_22 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_23 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_20 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_21 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ve_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_26 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
|
|
case SelectedTable.ve_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_27 + (byte_4 * this.method_33())) + byte_3, byte_5);
|
|
return;
|
|
}
|
|
}
|
|
|
|
public byte method_182(byte byte_3)
|
|
{
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_10 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_11 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_20 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_21 + this.method_34()) + byte_3);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public byte method_183(byte byte_3, SelectedTable selectedTable_1)
|
|
{
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.fuel1_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_10 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_11 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return this.GetByteAt((this.class13_u_0.long_20 + this.method_34()) + byte_3);
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return this.GetByteAt((this.class13_u_0.long_21 + this.method_34()) + byte_3);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public void method_184(byte byte_3, byte byte_4)
|
|
{
|
|
switch (this.selectedTable_0)
|
|
{
|
|
case SelectedTable.fuel1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_10 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_11 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
case SelectedTable.ign2_hi:
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_20 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_21 + this.method_34()) + byte_3, byte_4);
|
|
break;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
}
|
|
|
|
public void method_185(byte byte_3, byte byte_4, SelectedTable selectedTable_1)
|
|
{
|
|
switch (selectedTable_1)
|
|
{
|
|
case SelectedTable.fuel1_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_10 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_11 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
case SelectedTable.ign2_hi:
|
|
break;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
this.method_149_SetByte((this.class13_u_0.long_20 + this.method_34()) + byte_3, byte_4);
|
|
return;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
this.method_149_SetByte((this.class13_u_0.long_21 + this.method_34()) + byte_3, byte_4);
|
|
break;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
}
|
|
|
|
public int method_186(int int_3)
|
|
{
|
|
int num = int_3;
|
|
if (num == 0xff)
|
|
{
|
|
num = 0x100;
|
|
}
|
|
float num2 = 7.8125f;
|
|
if (num < 0)
|
|
{
|
|
num += 0x100;
|
|
}
|
|
int num3 = num / 0x40;
|
|
int num4 = num % 0x40;
|
|
num2 *= num4;
|
|
num2 += 500f;
|
|
num2 = ((float) Math.Round((double) ((Math.Pow(2.0, (double) num3) * num2) / 25.0), 0)) * 25f;
|
|
return (int) num2;
|
|
}
|
|
|
|
public int method_187(int int_3)
|
|
{
|
|
int num = int_3;
|
|
double num2 = (1875000f * num) / ((float) this.long_3);
|
|
num2 = Math.Round((double) (num2 / 50.0), 0) * 50.0;
|
|
return (int) num2;
|
|
}
|
|
|
|
public float method_188(byte byte_3)
|
|
{
|
|
byte num = this.GetByteAt(this.class13_u_0.long_102);
|
|
float num2 = (float) ((byte_3 * 0.25) - 6.0);
|
|
if (((num != 0) && (num != 0xff)) && (this.class13_u_0.long_102 != 0L))
|
|
{
|
|
return (float) Math.Round((num2 - (16f - ((num * 0.25f) - 6f))), 2);
|
|
}
|
|
return (float)Math.Round(num2, 2);
|
|
}
|
|
|
|
public float method_189(byte byte_3)
|
|
{
|
|
if (byte_3 == 0x80)
|
|
{
|
|
return 0f;
|
|
}
|
|
if (byte_3 < 0x80)
|
|
{
|
|
return (float)Math.Round((0x80 - byte_3) * -0.25f, 2);
|
|
}
|
|
if (byte_3 <= 0x80)
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("byteToIgnCorrection Error");
|
|
return 0f;
|
|
//throw new Exception("byteToIgnCorrection Error");
|
|
}
|
|
return (float)Math.Round((byte_3 - 0x80) * 0.25f, 2);
|
|
}
|
|
|
|
public float method_189_Voltage(byte byte_3)
|
|
{
|
|
return (float)Math.Round((double) (((double) byte_3 * 5.0) / 255.0), 2);
|
|
}
|
|
public byte method_189_VoltageByte(double Percent)
|
|
{
|
|
return (byte)((Percent * 255) / 5);
|
|
}
|
|
|
|
public int method_189_Ethanol(byte byte_3)
|
|
{
|
|
return (int) Math.Round((double)(((double)byte_3 * 100) / 255.0), 0);
|
|
}
|
|
|
|
public byte method_189_EthanolByte(double Percent)
|
|
{
|
|
return (byte) ((Percent * 255) / 100);
|
|
}
|
|
|
|
public double method_190(byte byte_3)
|
|
{
|
|
double num = 0.0;
|
|
num = 0.5;
|
|
if (byte_3 == 0x80)
|
|
{
|
|
return 0.0;
|
|
}
|
|
if (byte_3 < 0x80)
|
|
{
|
|
return Math.Round((double) (((128.0 - byte_3) * -1.0) * num), 1);
|
|
}
|
|
if (byte_3 <= 0x80)
|
|
{
|
|
this.class17_0.frmMain_0.LogThis("byteToIgnCorrection Error");
|
|
return 0.0;
|
|
//throw new Exception("byteToIgnCorrection Error");
|
|
}
|
|
return Math.Round((double) ((byte_3 - 128.0) * num), 1);
|
|
}
|
|
|
|
public double method_191(byte byte_3)
|
|
{
|
|
if (this.class10_settings_0.temperatureUnits_0 == TemperatureUnits.C)
|
|
{
|
|
return Math.Round(this.double_0[byte_3], 0);
|
|
}
|
|
return Math.Round(this.method_242(this.double_0[byte_3]), 0);
|
|
}
|
|
|
|
public double method_191_GetTempInC(byte byte_3)
|
|
{
|
|
return Math.Round(this.double_0[byte_3], 0);
|
|
}
|
|
|
|
private float method_192(float float_0, float float_1, float float_2, float float_3, float float_4)
|
|
{
|
|
return (float_3 + (((float_0 - float_1) * (float_4 - float_3)) / (float_2 - float_1)));
|
|
}
|
|
|
|
public float method_193(int int_3)
|
|
{
|
|
int num = this.method_206(int_3);
|
|
if (num <= this.class10_settings_0.int_6)
|
|
{
|
|
switch (this.class10_settings_0.mapSensorUnits_0)
|
|
{
|
|
case MapSensorUnits.mBar:
|
|
return (float) num;
|
|
|
|
case MapSensorUnits.Bar:
|
|
return (float)(num / 0x3e8);
|
|
|
|
case MapSensorUnits.inHgG:
|
|
return (float) Math.Round((double) (-this.method_246(this.class10_settings_0.int_6) + this.method_246(num)), 1);
|
|
|
|
case MapSensorUnits.inHg:
|
|
return this.method_246(num);
|
|
|
|
case MapSensorUnits.psi:
|
|
return this.method_245(num);
|
|
|
|
case MapSensorUnits.kPa:
|
|
return this.method_248(num);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (this.class10_settings_0.mapSensorUnits_1)
|
|
{
|
|
case MapSensorUnits.mBar:
|
|
return (float) num;
|
|
|
|
case MapSensorUnits.Bar:
|
|
return (float) (num / 0x3e8);
|
|
|
|
case MapSensorUnits.inHg:
|
|
return this.method_246(num);
|
|
|
|
case MapSensorUnits.psi:
|
|
return this.method_245(num);
|
|
|
|
case MapSensorUnits.kPa:
|
|
return this.method_248(num);
|
|
}
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("byteToMapDisplay error");
|
|
return 0;
|
|
//throw new Exception("byteToMapDisplay error");
|
|
}
|
|
|
|
public string method_195(int int_3)
|
|
{
|
|
int num = this.method_206(int_3);
|
|
if (this.method_37() || this.method_40())
|
|
{
|
|
if (this.method_41())
|
|
{
|
|
int num2 = this.method_206(this.GetByteAt(this.class13_u_0.long_371));
|
|
if (num >= num2)
|
|
{
|
|
float num3 = int_3;
|
|
float num4 = this.GetByteAt(this.class13_u_0.long_373 + 3L);
|
|
float num5 = this.GetByteAt(this.class13_u_0.long_373 + 1L);
|
|
float num6 = this.GetByteAt(this.class13_u_0.long_373 + 2L);
|
|
float num7 = this.GetByteAt(this.class13_u_0.long_373);
|
|
byte num8 = (byte) this.method_192(num3, num4, num5, num6, num7);
|
|
return (this.method_198(num8).ToString() + "%");
|
|
}
|
|
}
|
|
else if (this.method_42())
|
|
{
|
|
return (this.method_198((byte) int_3).ToString() + "%");
|
|
}
|
|
}
|
|
if (num <= this.class10_settings_0.int_6)
|
|
{
|
|
switch (this.class10_settings_0.mapSensorUnits_0)
|
|
{
|
|
case MapSensorUnits.mBar:
|
|
return num.ToString();
|
|
|
|
case MapSensorUnits.Bar:
|
|
{
|
|
int num15 = num / 0x3e8;
|
|
return num15.ToString();
|
|
}
|
|
|
|
case MapSensorUnits.inHgG:
|
|
return Math.Round((double) (-this.method_246(this.class10_settings_0.int_6) + this.method_246(num)), 1).ToString();
|
|
|
|
case MapSensorUnits.inHg:
|
|
return this.method_246(num).ToString();
|
|
|
|
case MapSensorUnits.psi:
|
|
return this.method_245(num).ToString();
|
|
|
|
case MapSensorUnits.kPa:
|
|
return this.method_248(num).ToString();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (this.class10_settings_0.mapSensorUnits_1)
|
|
{
|
|
case MapSensorUnits.mBar:
|
|
return num.ToString();
|
|
|
|
case MapSensorUnits.Bar:
|
|
{
|
|
int num15 = num / 0x3e8;
|
|
return num15.ToString();
|
|
}
|
|
case MapSensorUnits.inHg:
|
|
return this.method_246(num).ToString();
|
|
|
|
case MapSensorUnits.psi:
|
|
return this.method_245(num).ToString();
|
|
|
|
case MapSensorUnits.kPa:
|
|
return this.method_248(num).ToString();
|
|
}
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("byteToMapDisplay error");
|
|
return "0";
|
|
//throw new Exception("byteToMapDisplay error");
|
|
}
|
|
|
|
public double method_196(byte byte_3)
|
|
{
|
|
return Math.Round((double) (byte_3 * 0.01960784f), 2);
|
|
}
|
|
|
|
public int method_197(byte byte_3)
|
|
{
|
|
if (this.class10_settings_0.vssUnits_0 == VssUnits.kmh)
|
|
{
|
|
return byte_3;
|
|
}
|
|
return (int) Math.Round((double) (((double) byte_3) / 1.6), 0);
|
|
}
|
|
|
|
public int method_198(byte byte_3)
|
|
{
|
|
return (int) Math.Round((double) ((byte_3 - 25.0) / 2.04), 0);
|
|
}
|
|
|
|
internal void method_2(ref Class25 class25_1)
|
|
{
|
|
this.class25_0 = class25_1;
|
|
}
|
|
|
|
public int method_20()
|
|
{
|
|
if (this.string_7 == null)
|
|
{
|
|
return 0;
|
|
}
|
|
return int.Parse(this.string_7.Substring(1).Replace(".", ""));
|
|
}
|
|
|
|
public double method_200(byte byte_3)
|
|
{
|
|
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.lambda)
|
|
{
|
|
return Math.Round((double) (this.method_264(this.class10_settings_0.double_0, this.method_196(byte_3)) + this.class10_settings_0.double_2), 2);
|
|
}
|
|
return Math.Round(this.method_241(this.method_264(this.class10_settings_0.double_0, this.method_196(byte_3)) + this.class10_settings_0.double_2), 2);
|
|
}
|
|
|
|
public float method_201(AnalogInputs analogInputs_0, byte byte_3)
|
|
{
|
|
if (analogInputs_0 == AnalogInputs.analog1)
|
|
{
|
|
return (float) Math.Round(this.method_264(this.class10_settings_0.double_4, this.method_196(byte_3)), this.class10_settings_0.int_22);
|
|
}
|
|
if (analogInputs_0 == AnalogInputs.analog2)
|
|
{
|
|
return (float) Math.Round(this.method_264(this.class10_settings_0.double_5, this.method_196(byte_3)), this.class10_settings_0.int_23);
|
|
}
|
|
if (analogInputs_0 == AnalogInputs.analog3)
|
|
{
|
|
return (float) Math.Round(this.method_264(this.class10_settings_0.double_6, this.method_196(byte_3)), this.class10_settings_0.int_24);
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
public double method_202(long long_0_X)
|
|
{
|
|
return (((double) long_0_X) / 32768.0);
|
|
}
|
|
|
|
public double method_203(long long_0_X, Enum6 enum6_0)
|
|
{
|
|
double num = 0.0;
|
|
num = ((double) long_0_X) / ((double) enum6_0);
|
|
if (this.class10_settings_0.correctionUnits_0 == CorrectionUnits.multi)
|
|
{
|
|
return Math.Round(num, 2);
|
|
}
|
|
return Math.Round((double) ((num * 100.0) - 100.0), 0);
|
|
}
|
|
|
|
public double method_204(long long_0_X, Enum6 enum6_0, bool bool_3)
|
|
{
|
|
double num = 0.0;
|
|
num = ((double) long_0_X) / ((double) enum6_0);
|
|
return Math.Round((double) ((num * 100.0) - 100.0), 0);
|
|
}
|
|
|
|
public double method_205(byte byte_3, Enum6 enum6_0)
|
|
{
|
|
double num = 0.0;
|
|
num = ((double) byte_3) / ((double) enum6_0);
|
|
if (this.class10_settings_0.correctionUnits_0 == CorrectionUnits.multi)
|
|
{
|
|
return Math.Round(num, 2);
|
|
}
|
|
return Math.Round((double) ((num * 100.0) - 100.0), 0);
|
|
}
|
|
|
|
public int method_206(int int_3)
|
|
{
|
|
byte num = this.GetByteAt(this.class13_u_0.long_2);
|
|
if (num == 0)
|
|
{
|
|
return (int) Math.Round((double) ((((int_3 / 2) + this.GetByteAt(this.class13_u_0.long_53)) * 7.221) - 59.0), 0);
|
|
}
|
|
if (num == 1)
|
|
{
|
|
return (int) Math.Round((double) ((int_3 * 7.221) - 59.0), 0);
|
|
}
|
|
return (int) Math.Round((double) ((((int_3 * (this.method_152(this.class13_u_0.long_1) - this.method_152(this.class13_u_0.long_0))) / 255.0) + this.method_152(this.class13_u_0.long_0)) - 32768.0), 0);
|
|
}
|
|
|
|
public double method_207(byte byte_3)
|
|
{
|
|
double num = 0.0;
|
|
num = ((double) byte_3) / 2.0;
|
|
if (num > 100.0)
|
|
{
|
|
num = 100.0;
|
|
}
|
|
return Math.Round(num, 1);
|
|
}
|
|
|
|
public double method_208(byte byte_3)
|
|
{
|
|
return Math.Round((double) ((26.0 * byte_3) / 270.0), 2);
|
|
}
|
|
|
|
public byte method_209(float float_0)
|
|
{
|
|
return (byte) ((270f * float_0) / 26f);
|
|
}
|
|
|
|
public byte method_210(float float_0)
|
|
{
|
|
float num2 = this.method_245(this.class10_settings_0.int_6) + float_0;
|
|
return (byte)(this.method_226(this.method_250(num2)) - this.method_226(this.class10_settings_0.int_6));
|
|
}
|
|
|
|
public byte method_211(double double_1)
|
|
{
|
|
if (double_1 > 100.0)
|
|
{
|
|
double_1 = 100.0;
|
|
}
|
|
return (byte) (double_1 * 2.0);
|
|
}
|
|
|
|
public byte method_213(double double_1)
|
|
{
|
|
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
|
|
{
|
|
return this.method_227((float) this.method_264(this.class10_settings_0.double_1, this.method_240(double_1)));
|
|
}
|
|
return this.method_227((float) this.method_264(this.class10_settings_0.double_1, double_1));
|
|
}
|
|
|
|
public byte method_214(double double_1)
|
|
{
|
|
bool flag = false;
|
|
string str = string.Empty;
|
|
switch (this.class10_settings_0.int_8)
|
|
{
|
|
case 0:
|
|
str = "Custom";
|
|
break;
|
|
|
|
case 1:
|
|
str = "Stock";
|
|
flag = true;
|
|
break;
|
|
|
|
case 2:
|
|
str = "Aem";
|
|
break;
|
|
|
|
case 3:
|
|
str = "Plx";
|
|
break;
|
|
|
|
case 4:
|
|
str = "FJO";
|
|
break;
|
|
|
|
case 5:
|
|
str = "Innovate lc-1/lm-1";
|
|
break;
|
|
|
|
case 6:
|
|
str = "Techedge";
|
|
break;
|
|
|
|
case 7:
|
|
str = "Zeitrox";
|
|
break;
|
|
|
|
case 8:
|
|
str = "Motec";
|
|
break;
|
|
|
|
case 9:
|
|
str = "JAW";
|
|
break;
|
|
}
|
|
if (flag)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "You can't lookup with narrowband." + Environment.NewLine + "Select your wideband in Settings", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
throw new Exception();
|
|
}
|
|
if (this.class10_settings_0.bool_25)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "You can't lookup with serial wideband.", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
throw new Exception();
|
|
}
|
|
if (MessageBox.Show(Form.ActiveForm, "Do you want to use the " + str + " wideband?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
|
{
|
|
throw new Exception();
|
|
}
|
|
return this.method_213(double_1);
|
|
}
|
|
|
|
public byte method_215(byte byte_3, long long_0_X)
|
|
{
|
|
if (byte_3 == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
long num = ((byte_3 * 0x100) * long_0_X) / 0xffffL;
|
|
byte num3 = 0;
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
int num2 = i * 2;
|
|
if (num < this.method_152(this.class13_u_0.long_63 + num2))
|
|
{
|
|
return (byte) (i + 1);
|
|
}
|
|
num3 = 5;
|
|
}
|
|
return num3;
|
|
}
|
|
|
|
public byte method_216(int int_3)
|
|
{
|
|
for (byte i = 0; i < 0x80; i = (byte) (i + 1))
|
|
{
|
|
if (this.method_186(i) >= int_3)
|
|
{
|
|
return i;
|
|
}
|
|
if (this.method_186((byte) (0xff - i)) <= int_3)
|
|
{
|
|
return (byte) (0xff - i);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public byte method_217(int int_3)
|
|
{
|
|
long num = (long) ((((float) (int_3 + 0x19)) / 1875000f) * this.long_3);
|
|
if (num >= 0xffL)
|
|
{
|
|
num = 0xffL;
|
|
}
|
|
return (byte) num;
|
|
}
|
|
|
|
public int method_218(long long_0_X)
|
|
{
|
|
if (long_0_X == 0L)
|
|
{
|
|
return 0;
|
|
}
|
|
return (0x1c9c38 / ((int) long_0_X));
|
|
}
|
|
|
|
public double AccelTime(int Speed) //###################################
|
|
{
|
|
if (this.watch == null) this.watch = new Stopwatch();
|
|
|
|
if (this.class10_settings_0.vssUnits_0 == VssUnits.mph) Speed = (int) ((float) Speed * 1.6);
|
|
if (Speed <= this.class10_settings_0.AccelTimerSpeedStart)
|
|
{
|
|
if (this.watch.IsRunning) watch.Stop();
|
|
LastAccelTime = 99.9;
|
|
CalcTime = false;
|
|
}
|
|
else if (Speed > this.class10_settings_0.AccelTimerSpeedStart && Speed < this.class10_settings_0.AccelTimerSpeedEnd && !CalcTime)
|
|
{
|
|
if (!this.watch.IsRunning) this.watch = Stopwatch.StartNew();
|
|
LastAccelTime = ((double)watch.ElapsedMilliseconds / 1000.0);
|
|
//LastAccelTime = Math.Round((double)(watch.ElapsedMilliseconds / 1000), 2);
|
|
|
|
//Generally calc only for 20sec
|
|
if (LastAccelTime > 99.9)
|
|
{
|
|
if (this.watch.IsRunning) watch.Stop();
|
|
LastAccelTime = 99.9;
|
|
CalcTime = true;
|
|
}
|
|
}
|
|
else if (Speed >= this.class10_settings_0.AccelTimerSpeedEnd && !CalcTime)
|
|
{
|
|
watch.Stop();
|
|
LastAccelTime = ((double)watch.ElapsedMilliseconds / 1000.0);
|
|
//LastAccelTime = Math.Round((double)(watch.ElapsedMilliseconds / 1000), 2);
|
|
CalcTime = true;
|
|
}
|
|
|
|
return LastAccelTime;
|
|
}
|
|
|
|
public double GetInstantConsumption(int Speed, int RPM, int int_3) //#######################################
|
|
{
|
|
double Dreturn = 0;
|
|
if (Speed != 0)
|
|
{
|
|
double InjSize = (((double)this.method_50_GetOLDInjectorSize()) / this.method_49());
|
|
//double hundredkm = ((60 / Speed) * 100) / 60;
|
|
double hundredkm = 6000 / Speed;
|
|
double fuelc = (hundredkm * ((InjSize / 100) * GetDuty(RPM, int_3))) / 1000;
|
|
Dreturn = Math.Round(fuelc * 4, 2);
|
|
}
|
|
return Dreturn;
|
|
}
|
|
double GetDuty(int RPM, int int_3)
|
|
{
|
|
return ((RPM * this.method_224(int_3)) / 1200f);
|
|
}
|
|
|
|
public long method_219(int int_3)
|
|
{
|
|
if (int_3 > 0x2ee0)
|
|
{
|
|
int_3 = 0x2ee0;
|
|
}
|
|
else if (int_3 <= 0)
|
|
{
|
|
int_3 = 300;
|
|
}
|
|
return (long) (0x1c9c38 / int_3);
|
|
}
|
|
|
|
public byte method_220(float float_0)
|
|
{
|
|
byte num = this.GetByteAt(this.class13_u_0.long_102);
|
|
if (((num != 0) && (num != 0xff)) && (this.class13_u_0.long_102 != 0L))
|
|
{
|
|
float_0 += 16f - ((num * 0.25f) - 6f);
|
|
if (float_0 < -6f)
|
|
{
|
|
return 0;
|
|
}
|
|
return (byte) ((float_0 + 6f) * 4f);
|
|
}
|
|
if (float_0 < -6f)
|
|
{
|
|
return 0;
|
|
}
|
|
return (byte) ((float_0 + 6f) * 4f);
|
|
}
|
|
|
|
public byte method_221(float float_0)
|
|
{
|
|
if (float_0 != 0f)
|
|
{
|
|
if (float_0 < 0f)
|
|
{
|
|
return (byte) (128f - (float_0 * -4f));
|
|
}
|
|
if (float_0 > 0f)
|
|
{
|
|
return (byte) (128f + (float_0 * 4f));
|
|
}
|
|
}
|
|
return 0x80;
|
|
}
|
|
|
|
public byte method_222(float float_0)
|
|
{
|
|
float num = 0f;
|
|
num = 2f;
|
|
if (float_0 != 0f)
|
|
{
|
|
if (float_0 < 0f)
|
|
{
|
|
return (byte) (128f - ((float_0 * -1f) * num));
|
|
}
|
|
if (float_0 > 0f)
|
|
{
|
|
return (byte) (128f + (float_0 * num));
|
|
}
|
|
}
|
|
return 0x80;
|
|
}
|
|
|
|
public double method_223(int int_3)
|
|
{
|
|
return Math.Round((double) (((double) int_3) / 4.0), 2);
|
|
}
|
|
|
|
public float method_224(int int_3) //inj duration
|
|
{
|
|
return (float)Math.Round(((int_3 * 3.2f) / 1000f), 2);
|
|
}
|
|
|
|
public float method_225(int int_3, int int_4, byte byte_3) //inj duty
|
|
{
|
|
if (int_4 == 0)
|
|
{
|
|
int_4 = this.method_159(byte_3);
|
|
}
|
|
return (float) Math.Round(((int_4 * this.method_224(int_3)) / 1200f), 0);
|
|
}
|
|
|
|
public byte method_226(int int_3)
|
|
{
|
|
double num = 0.0;
|
|
if (int_3 < (this.method_152(this.class13_u_0.long_0) - 0x8000L))
|
|
{
|
|
return 0;
|
|
}
|
|
num = Math.Round((double) ((255.0 / (this.method_152(this.class13_u_0.long_1) - this.method_152(this.class13_u_0.long_0))) * (int_3 - (this.method_152(this.class13_u_0.long_0) - 32768.0))), 0);
|
|
if (num > 255.0)
|
|
{
|
|
return 0xff;
|
|
}
|
|
return (byte) num;
|
|
}
|
|
|
|
public byte method_227(float float_0)
|
|
{
|
|
return (byte) Math.Round((double) ((float_0 / 5f) * 255f), 0);
|
|
}
|
|
|
|
public byte method_228(int int_3)
|
|
{
|
|
return (byte) ((int_3 * 2.04) + 25.0);
|
|
}
|
|
|
|
public long method_229(double double_1)
|
|
{
|
|
return (long) (32768.0 * double_1);
|
|
}
|
|
|
|
public string method_23()
|
|
{
|
|
return this.string_5;
|
|
}
|
|
|
|
public byte method_230(double double_1)
|
|
{
|
|
if (this.class10_settings_0.temperatureUnits_0 == TemperatureUnits.F)
|
|
{
|
|
double_1 = this.method_243(double_1);
|
|
}
|
|
for (byte i = 0; i < 0x80; i = (byte) (i + 1))
|
|
{
|
|
if (Math.Round(double_1, 0) >= Math.Round(this.double_0[i], 0))
|
|
{
|
|
return i;
|
|
}
|
|
if (Math.Round(double_1, 0) <= Math.Round(this.double_0[0xff - i], 0))
|
|
{
|
|
return (byte) (0xff - i);
|
|
}
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("temperature value not found");
|
|
return 0x00;
|
|
//throw new Exception("temperature value not found");
|
|
}
|
|
|
|
public long method_231(double double_1, Enum6 enum6_0)
|
|
{
|
|
if (this.class10_settings_0.correctionUnits_0 == CorrectionUnits.multi)
|
|
{
|
|
return (long) (double_1 * ((double) enum6_0));
|
|
}
|
|
return (long) (((double_1 + 100.0) / 100.0) * ((double) enum6_0));
|
|
}
|
|
|
|
public long method_232(double double_1, Enum6 enum6_0, bool bool_3)
|
|
{
|
|
return (long) (((double_1 + 100.0) / 100.0) * ((double) enum6_0));
|
|
}
|
|
|
|
public byte method_233(int int_3)
|
|
{
|
|
if (this.class10_settings_0.vssUnits_0 == VssUnits.mph)
|
|
{
|
|
int_3 = (int) (int_3 * 1.6);
|
|
}
|
|
return (byte) int_3;
|
|
}
|
|
|
|
public Color method_234(double double_1, double double_2, double double_3)
|
|
{
|
|
int num;
|
|
if ((double_2 == 0.0) && (double_3 == 0.0))
|
|
{
|
|
return Color.White;
|
|
}
|
|
if (((int) double_1) < double_2)
|
|
{
|
|
return Color.White;
|
|
}
|
|
if (((int) double_1) >= double_3)
|
|
{
|
|
double_1 = double_3;
|
|
num = 0x7f;
|
|
return Color.FromArgb(0xff, 0x7f - num, 0x7f - num);
|
|
}
|
|
double num2 = (double_3 - double_2) / 127.0;
|
|
num = (int) Math.Floor((double) (double_1 - (double_2 / num2)));
|
|
if ((num > 0x7f) || (num < 0))
|
|
{
|
|
num = 0;
|
|
}
|
|
return Color.FromArgb(0xff, 0x7f - num, 0x7f - num);
|
|
}
|
|
|
|
public Color method_235(double double_1, double double_2, double double_3)
|
|
{
|
|
if ((double_2 == 0.0) && (double_3 == 0.0))
|
|
{
|
|
return this.class10_settings_0.color_4;
|
|
}
|
|
if (((int) double_1) < double_2)
|
|
{
|
|
return this.class10_settings_0.color_4;
|
|
}
|
|
return this.class10_settings_0.color_Off;
|
|
}
|
|
|
|
public Color Mix(Color from, Color to, float percent)
|
|
{
|
|
float amountFrom = 1.0f - percent;
|
|
int RCol = (int)(from.R * amountFrom + to.R * percent);
|
|
int GCol = (int)(from.G * amountFrom + to.G * percent);
|
|
int BCol = (int)(from.B * amountFrom + to.B * percent);
|
|
if (RCol < 0) RCol = 0;
|
|
if (GCol < 0) GCol = 0;
|
|
if (BCol < 0) BCol = 0;
|
|
if (RCol > 255) RCol = 255;
|
|
if (GCol > 255) GCol = 255;
|
|
if (BCol > 255) BCol = 255;
|
|
|
|
return Color.FromArgb(255, RCol, GCol, BCol);
|
|
}
|
|
|
|
public Color method_236(double double_1)
|
|
{
|
|
//Coloring Fuel Value
|
|
if (this.method_37())
|
|
{
|
|
double_1 *= this.method_49();
|
|
|
|
int Percent = (int) ((double_1 * 100) / 1200.0);
|
|
|
|
if (Percent < this.class10_settings_0.PercentColor1)
|
|
{
|
|
int InternalPercent = (Percent * 100) / this.class10_settings_0.PercentColor1;
|
|
return Mix(this.class10_settings_0.color_20, this.class10_settings_0.color_21, ((float) InternalPercent / 100));
|
|
}
|
|
if (Percent < this.class10_settings_0.PercentColor2)
|
|
{
|
|
int InternalPercent = ((Percent - this.class10_settings_0.PercentColor1) * 100) / (this.class10_settings_0.PercentColor2 - this.class10_settings_0.PercentColor1);
|
|
return Mix(this.class10_settings_0.color_21, this.class10_settings_0.color_22, ((float)InternalPercent / 100));
|
|
}
|
|
if (Percent < 100)
|
|
{
|
|
int InternalPercent = ((Percent - this.class10_settings_0.PercentColor2) * 100) / (100 - this.class10_settings_0.PercentColor2);
|
|
return Mix(this.class10_settings_0.color_22, this.class10_settings_0.color_23, ((float)InternalPercent / 100));
|
|
}
|
|
return this.class10_settings_0.color_23;
|
|
}
|
|
|
|
//Coloring Ignition Value
|
|
if (this.method_40())
|
|
{
|
|
int Percent = (int)(((double_1 + 6) * 100) / 66);
|
|
|
|
if (Percent <= 9)
|
|
{
|
|
int InternalPercent = (Percent * 100) / 9;
|
|
return Mix(this.class10_settings_0.color_30, this.class10_settings_0.color_31, ((float)InternalPercent / 100));
|
|
}
|
|
if (Percent < this.class10_settings_0.PercentColorIgn)
|
|
{
|
|
int InternalPercent = ((Percent - 9) * 100) / (this.class10_settings_0.PercentColorIgn - 9);
|
|
return Mix(this.class10_settings_0.color_31, this.class10_settings_0.color_32, ((float)InternalPercent / 100));
|
|
}
|
|
if (Percent < 100)
|
|
{
|
|
int InternalPercent = ((Percent - this.class10_settings_0.PercentColorIgn) * 100) / (100 - this.class10_settings_0.PercentColorIgn);
|
|
return Mix(this.class10_settings_0.color_32, this.class10_settings_0.color_33, ((float)InternalPercent / 100));
|
|
}
|
|
return this.class10_settings_0.color_33;
|
|
}
|
|
|
|
//Coloring VE Tables
|
|
if (this.method_38())
|
|
{
|
|
int Percent = (int)((double_1 * 100) / 300.0);
|
|
Percent *= 9;
|
|
|
|
if (Percent < 0)
|
|
{
|
|
int InternalPercent = -Percent;
|
|
return Mix(this.class10_settings_0.color_40, this.class10_settings_0.color_41, ((float)InternalPercent / 100));
|
|
}
|
|
if (Percent < 100)
|
|
{
|
|
int InternalPercent = Percent;
|
|
return Mix(this.class10_settings_0.color_41, this.class10_settings_0.color_40, ((float)InternalPercent / 100));
|
|
}
|
|
return this.class10_settings_0.color_40;
|
|
}
|
|
return Color.White;
|
|
}
|
|
|
|
public Color method_237_Analog(TableOverlay TableOverlay_0, double double_1)
|
|
{
|
|
double double_Min = 0;
|
|
double double_Max = 0;
|
|
if (TableOverlay_0 == TableOverlay.analog1Reading)
|
|
{
|
|
double_Min = this.class10_settings_0.double_4[1];
|
|
double_Max = this.class10_settings_0.double_4[this.class10_settings_0.double_4.Length - 1];
|
|
}
|
|
else if (TableOverlay_0 == TableOverlay.analog2Reading)
|
|
{
|
|
double_Min = this.class10_settings_0.double_5[1];
|
|
double_Max = this.class10_settings_0.double_5[this.class10_settings_0.double_5.Length - 1];
|
|
}
|
|
else if (TableOverlay_0 == TableOverlay.analog3Reading)
|
|
{
|
|
double_Min = this.class10_settings_0.double_6[1];
|
|
double_Max = this.class10_settings_0.double_6[this.class10_settings_0.double_6.Length - 1];
|
|
}
|
|
|
|
int Percent = (int) (((double_1 - double_Min) * 100) / (double_Max - double_Min));
|
|
|
|
Color ReturnColor = Color.White;
|
|
if (double_1 != 0) ReturnColor = Mix(this.class10_settings_0.color_21, this.class10_settings_0.color_22, ((float) Percent / 100));
|
|
return ReturnColor;
|
|
}
|
|
|
|
public Color method_237(double double_1)
|
|
{
|
|
int num;
|
|
int num2;
|
|
int num3;
|
|
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.lambda)
|
|
{
|
|
double_1 = this.method_241(double_1);
|
|
}
|
|
if (this.method_8() == TableOverlay.afDiff)
|
|
{
|
|
if (double_1 < 0.0)
|
|
{
|
|
if (double_1 <= -15.0)
|
|
{
|
|
double_1 = -15.0;
|
|
}
|
|
num = (int) Math.Floor((double) (double_1 / -0.0588));
|
|
num3 = (int) Math.Floor((double) (double_1 / -0.166));
|
|
return Color.FromArgb(num, 0xff - num3, 0);
|
|
}
|
|
if (double_1 >= 0.0)
|
|
{
|
|
if (double_1 >= 15.0)
|
|
{
|
|
double_1 = 15.0;
|
|
}
|
|
num3 = (int) Math.Floor((double) (double_1 / 0.4545));
|
|
num2 = (int) Math.Floor((double) (double_1 / 0.0717));
|
|
return Color.FromArgb(0, 0xff - num3, num2);
|
|
}
|
|
}
|
|
else if ((this.method_8() == TableOverlay.afReading) || (this.method_8() == TableOverlay.afTarget))
|
|
{
|
|
if (double_1 < 14.0)
|
|
{
|
|
if (double_1 < 10.0)
|
|
{
|
|
double_1 = 10.0;
|
|
}
|
|
num = (int) Math.Floor((double) ((14.0 - double_1) / 0.0166));
|
|
num3 = (int) Math.Floor((double) ((14.0 - double_1) / 0.16));
|
|
num2 = (int) Math.Floor((double) ((14.0 - double_1) / 0.0314));
|
|
return Color.FromArgb(240 - num, 230 + num3, num2);
|
|
}
|
|
if ((double_1 >= 14.0) && (double_1 < 15.0))
|
|
{
|
|
return Color.FromArgb(0xff, 0xd7, 0);
|
|
}
|
|
if (double_1 >= 15.0)
|
|
{
|
|
if (double_1 > 17.5)
|
|
{
|
|
double_1 = 17.5;
|
|
}
|
|
num3 = (int) Math.Floor((double) ((double_1 - 15.0) / 0.01162));
|
|
return Color.FromArgb(0xff, 0xd7 - num3, 0);
|
|
}
|
|
}
|
|
return Color.White;
|
|
}
|
|
|
|
public Color method_238(double double_1, TableOverlay tableOverlay_1)
|
|
{
|
|
int num;
|
|
int num2;
|
|
int num3;
|
|
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.lambda)
|
|
{
|
|
double_1 = this.method_241(double_1);
|
|
}
|
|
if (this.method_8() == TableOverlay.afDiff)
|
|
{
|
|
if (double_1 < 0.0)
|
|
{
|
|
if (double_1 <= -15.0)
|
|
{
|
|
double_1 = -15.0;
|
|
}
|
|
num = (int) Math.Floor((double) (double_1 / -0.0588));
|
|
num3 = (int) Math.Floor((double) (double_1 / -0.166));
|
|
return Color.FromArgb(num, 0xff - num3, 0);
|
|
}
|
|
if (double_1 >= 0.0)
|
|
{
|
|
if (double_1 >= 15.0)
|
|
{
|
|
double_1 = 15.0;
|
|
}
|
|
num3 = (int) Math.Floor((double) (double_1 / 0.4545));
|
|
num2 = (int) Math.Floor((double) (double_1 / 0.0717));
|
|
return Color.FromArgb(0, 0xff - num3, num2);
|
|
}
|
|
}
|
|
else if ((this.method_8() == TableOverlay.afReading) || (this.method_8() == TableOverlay.afTarget))
|
|
{
|
|
if (double_1 < 14.0)
|
|
{
|
|
if (double_1 < 10.0)
|
|
{
|
|
double_1 = 10.0;
|
|
}
|
|
num = (int) Math.Floor((double) ((14.0 - double_1) / 0.0166));
|
|
num3 = (int) Math.Floor((double) ((14.0 - double_1) / 0.16));
|
|
num2 = (int) Math.Floor((double) ((14.0 - double_1) / 0.0314));
|
|
return Color.FromArgb(240 - num, 230 + num3, num2);
|
|
}
|
|
if ((double_1 >= 14.0) && (double_1 < 15.0))
|
|
{
|
|
return Color.FromArgb(0xff, 0xd7, 0);
|
|
}
|
|
if (double_1 >= 15.0)
|
|
{
|
|
if (double_1 > 17.5)
|
|
{
|
|
double_1 = 17.5;
|
|
}
|
|
num3 = (int) Math.Floor((double) ((double_1 - 15.0) / 0.01162));
|
|
return Color.FromArgb(0xff, 0xd7 - num3, 0);
|
|
}
|
|
}
|
|
return Color.White;
|
|
}
|
|
|
|
public Color method_239(double double_1)
|
|
{
|
|
int num3;
|
|
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.lambda)
|
|
{
|
|
double_1 = this.method_241(double_1);
|
|
}
|
|
if (double_1 < 14.0)
|
|
{
|
|
if (double_1 < 10.0)
|
|
{
|
|
double_1 = 10.0;
|
|
}
|
|
int num = (int) Math.Floor((double) ((14.0 - double_1) / 0.0166));
|
|
num3 = (int) Math.Floor((double) ((14.0 - double_1) / 0.16));
|
|
int blue = (int) Math.Floor((double) ((14.0 - double_1) / 0.0314));
|
|
return Color.FromArgb(240 - num, 230 + num3, blue);
|
|
}
|
|
if ((double_1 >= 14.0) && (double_1 < 15.0))
|
|
{
|
|
return Color.FromArgb(0xff, 0xd7, 0);
|
|
}
|
|
if (double_1 < 15.0)
|
|
{
|
|
return Color.Black;
|
|
}
|
|
if (double_1 > 17.5)
|
|
{
|
|
double_1 = 17.5;
|
|
}
|
|
num3 = (int) Math.Floor((double) ((double_1 - 15.0) / 0.01162));
|
|
return Color.FromArgb(0xff, 0xd7 - num3, 0);
|
|
}
|
|
|
|
public void method_24(string string_8)
|
|
{
|
|
this.string_5 = string_8;
|
|
}
|
|
|
|
public double method_240(double double_1)
|
|
{
|
|
return (double_1 / this.class10_settings_0.double_3);
|
|
}
|
|
|
|
public double method_241(double double_1)
|
|
{
|
|
return Math.Round((double) (double_1 * this.class10_settings_0.double_3), 2);
|
|
}
|
|
|
|
public double method_242(double double_1)
|
|
{
|
|
return ((double_1 * 1.8) + 32.0);
|
|
}
|
|
|
|
public double method_243(double double_1)
|
|
{
|
|
return ((double_1 - 32.0) / 1.8);
|
|
}
|
|
|
|
public float method_244(byte byte_3)
|
|
{
|
|
byte num = this.method_226(this.class10_settings_0.int_6);
|
|
float num2 = this.method_245(this.class10_settings_0.int_6);
|
|
byte num3 = (byte) (num + byte_3);
|
|
int num4 = this.method_206(num3);
|
|
return (float) Math.Round((double) (this.method_245(num4) - num2), 1);
|
|
}
|
|
|
|
public float method_245(int int_3)
|
|
{
|
|
return (float) Math.Round((double) ((int_3 - this.class10_settings_0.int_6) * 0.01450377f), 2);
|
|
}
|
|
|
|
public float method_246(int int_3)
|
|
{
|
|
return (float) Math.Round((double) (int_3 * 0.02952999), 1);
|
|
}
|
|
|
|
public byte[] method_246_HTSCrypter(byte[] byte_3)
|
|
{
|
|
byte[] buffer1 = this.method_248_HTSCrypter(byte_3);
|
|
byte_3 = buffer1;
|
|
byte num = byte_3[byte_3.Length - 1];
|
|
byte[] buffer = new byte[byte_3.Length - 1];
|
|
for (int i = 0; i < buffer.Length; i++)
|
|
{
|
|
if ((i % 2) == 0)
|
|
{
|
|
int num3 = byte_3[i] - num;
|
|
if (num3 < 0)
|
|
{
|
|
num3 += 0x100;
|
|
}
|
|
buffer[i] = (byte)num3;
|
|
}
|
|
else
|
|
{
|
|
int num4 = byte_3[i] + num;
|
|
if (num4 > 0xff)
|
|
{
|
|
num4 -= 0x100;
|
|
}
|
|
buffer[i] = (byte)num4;
|
|
}
|
|
}
|
|
byte_3 = null;
|
|
return buffer;
|
|
}
|
|
|
|
public byte[] method_248_HTSCrypter(byte[] byte_3)
|
|
{
|
|
byte num = byte_3[0x10];
|
|
byte num2 = byte_3[0x21];
|
|
byte num3 = byte_3[50];
|
|
byte num4 = byte_3[0x43];
|
|
byte num5 = byte_3[0x54];
|
|
byte num6 = byte_3[0x65];
|
|
byte num7 = byte_3[0x76];
|
|
byte num8 = byte_3[0x87];
|
|
byte num9 = byte_3[byte_3.Length - 1];
|
|
byte num10 = 0;
|
|
byte[] buffer = new byte[byte_3.Length - 9];
|
|
int index = 0;
|
|
for (int i = 0; i < buffer.Length; i++)
|
|
{
|
|
if (i < 0x80)
|
|
{
|
|
num10 = num8;
|
|
}
|
|
if (i < 0x70)
|
|
{
|
|
num10 = num7;
|
|
}
|
|
if (i < 0x60)
|
|
{
|
|
num10 = num6;
|
|
}
|
|
if (i < 80)
|
|
{
|
|
num10 = num5;
|
|
}
|
|
if (i < 0x40)
|
|
{
|
|
num10 = num4;
|
|
}
|
|
if (i < 0x30)
|
|
{
|
|
num10 = num3;
|
|
}
|
|
if (i < 0x20)
|
|
{
|
|
num10 = num2;
|
|
}
|
|
if (i < 0x10)
|
|
{
|
|
num10 = num;
|
|
}
|
|
if (i >= 0x80)
|
|
{
|
|
num10 = num9;
|
|
}
|
|
if (((i == 0x10) || ((i == 0x20) || ((i == 0x30) || ((i == 0x40) || ((i == 80) || ((i == 0x60) || (i == 0x70))))))) || (i == 0x80))
|
|
{
|
|
index++;
|
|
}
|
|
int num13 = byte_3[index] + num10;
|
|
if (num13 > 0xff)
|
|
{
|
|
num13 -= 0x100;
|
|
}
|
|
buffer[i] = (byte)num13;
|
|
index++;
|
|
}
|
|
byte_3 = null;
|
|
return buffer;
|
|
}
|
|
|
|
public int method_247(float float_0)
|
|
{
|
|
return (int) Math.Round((double) (float_0 * 33.86388), 0);
|
|
}
|
|
|
|
public float method_248(int int_3)
|
|
{
|
|
return (float) Math.Round((double) (int_3 * 0.1), 0);
|
|
}
|
|
|
|
public int method_249(float float_0)
|
|
{
|
|
return (int) Math.Round((double) (float_0 * 10f), 0);
|
|
}
|
|
|
|
public string method_25_GetFilename()
|
|
{
|
|
return this.string_4;
|
|
}
|
|
|
|
public int method_250(float float_0)
|
|
{
|
|
return (int) Math.Round((double) ((float_0 * 68.94757) + this.class10_settings_0.int_6));
|
|
}
|
|
|
|
public string method_251(MapSensorUnits mapSensorUnits_0)
|
|
{
|
|
switch (mapSensorUnits_0)
|
|
{
|
|
case MapSensorUnits.mBar:
|
|
return "mbar";
|
|
|
|
case MapSensorUnits.inHgG:
|
|
return "inHg";
|
|
|
|
case MapSensorUnits.inHg:
|
|
return "inHg";
|
|
|
|
case MapSensorUnits.psi:
|
|
return "psi";
|
|
|
|
case MapSensorUnits.kPa:
|
|
return "kpa";
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public bool method_252(string string_8)
|
|
{
|
|
double num;
|
|
return double.TryParse(Convert.ToString(string_8), NumberStyles.Any, (IFormatProvider) NumberFormatInfo.CurrentInfo, out num);
|
|
}
|
|
|
|
public bool method_253(string string_8)
|
|
{
|
|
double num;
|
|
bool flag = double.TryParse(Convert.ToString(string_8), NumberStyles.Any, (IFormatProvider) NumberFormatInfo.CurrentInfo, out num);
|
|
if (num > 0.0)
|
|
{
|
|
return false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public bool method_254(string string_8)
|
|
{
|
|
double num;
|
|
bool flag = double.TryParse(Convert.ToString(string_8), NumberStyles.Any, (IFormatProvider) NumberFormatInfo.CurrentInfo, out num);
|
|
if (num < 0.0)
|
|
{
|
|
return false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public bool method_255(string string_8)
|
|
{
|
|
int num;
|
|
return int.TryParse(Convert.ToString(string_8), NumberStyles.Any, NumberFormatInfo.CurrentInfo, out num);
|
|
}
|
|
|
|
public bool method_256(string string_8)
|
|
{
|
|
int num;
|
|
bool flag = int.TryParse(Convert.ToString(string_8), NumberStyles.Any, NumberFormatInfo.CurrentInfo, out num);
|
|
if (num < 0)
|
|
{
|
|
return false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public bool method_257(string string_8)
|
|
{
|
|
int num;
|
|
bool flag = int.TryParse(Convert.ToString(string_8), NumberStyles.Any, NumberFormatInfo.CurrentInfo, out num);
|
|
if (num <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public bool method_258(byte byte_3, int int_3)
|
|
{
|
|
byte[] bytes_4 = new byte[] { byte_3 };
|
|
BitArray array_0 = new BitArray(bytes_4);
|
|
return array_0.Get(int_3);
|
|
}
|
|
|
|
public bool method_259(byte byte_3, int int_3, bool bool_3)
|
|
{
|
|
byte[] bytes_4 = new byte[] { byte_3 };
|
|
BitArray array_0 = new BitArray(bytes_4);
|
|
if (bool_3)
|
|
{
|
|
return !array_0.Get(int_3);
|
|
}
|
|
return array_0.Get(int_3);
|
|
}
|
|
|
|
public void method_26_SetFilename(string string_8)
|
|
{
|
|
this.string_4 = string_8;
|
|
}
|
|
|
|
public byte method_260(byte byte_3, int int_3, bool bool_3)
|
|
{
|
|
byte[] bytes_4 = new byte[] { byte_3 };
|
|
BitArray array_0 = new BitArray(bytes_4);
|
|
if (bool_3)
|
|
{
|
|
if (array_0.Get(int_3))
|
|
{
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
if (array_0.Get(int_3))
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public byte method_261(byte byte_3, int int_3, bool bool_3)
|
|
{
|
|
bool[] flagArray = this.method_262(byte_3);
|
|
flagArray[int_3] = bool_3;
|
|
return this.method_263(flagArray);
|
|
}
|
|
|
|
private bool[] method_262(int int_3)
|
|
{
|
|
bool[] flagArray = new bool[8];
|
|
if ((int_3 - 0x80) >= 0)
|
|
{
|
|
flagArray[7] = true;
|
|
int_3 -= 0x80;
|
|
}
|
|
if ((int_3 - 0x40) >= 0)
|
|
{
|
|
flagArray[6] = true;
|
|
int_3 -= 0x40;
|
|
}
|
|
if ((int_3 - 0x20) >= 0)
|
|
{
|
|
flagArray[5] = true;
|
|
int_3 -= 0x20;
|
|
}
|
|
if ((int_3 - 0x10) >= 0)
|
|
{
|
|
flagArray[4] = true;
|
|
int_3 -= 0x10;
|
|
}
|
|
if ((int_3 - 8) >= 0)
|
|
{
|
|
flagArray[3] = true;
|
|
int_3 -= 8;
|
|
}
|
|
if ((int_3 - 4) >= 0)
|
|
{
|
|
flagArray[2] = true;
|
|
int_3 -= 4;
|
|
}
|
|
if ((int_3 - 2) >= 0)
|
|
{
|
|
flagArray[1] = true;
|
|
int_3 -= 2;
|
|
}
|
|
if ((int_3 - 1) >= 0)
|
|
{
|
|
flagArray[0] = true;
|
|
int_3--;
|
|
}
|
|
return flagArray;
|
|
}
|
|
|
|
private byte method_263(bool[] bool_3)
|
|
{
|
|
byte num = 0;
|
|
if (bool_3[7])
|
|
{
|
|
num = (byte) (num + 0x80);
|
|
}
|
|
if (bool_3[6])
|
|
{
|
|
num = (byte) (num + 0x40);
|
|
}
|
|
if (bool_3[5])
|
|
{
|
|
num = (byte) (num + 0x20);
|
|
}
|
|
if (bool_3[4])
|
|
{
|
|
num = (byte) (num + 0x10);
|
|
}
|
|
if (bool_3[3])
|
|
{
|
|
num = (byte) (num + 8);
|
|
}
|
|
if (bool_3[2])
|
|
{
|
|
num = (byte) (num + 4);
|
|
}
|
|
if (bool_3[1])
|
|
{
|
|
num = (byte) (num + 2);
|
|
}
|
|
if (bool_3[0])
|
|
{
|
|
num = (byte) (num + 1);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
private double method_264(double[] double_1, double double_2)
|
|
{
|
|
int index = double_1.Length - 1;
|
|
if (double_2 < double_1[0])
|
|
{
|
|
return double_1[1];
|
|
}
|
|
if (double_2 > double_1[index - 1])
|
|
{
|
|
return double_1[index];
|
|
}
|
|
for (int i = 0; i < (double_1.Length / 2); i++)
|
|
{
|
|
index = 2 * i;
|
|
if ((double_2 >= double_1[index]) && (double_2 <= double_1[index + 2]))
|
|
{
|
|
return (double_1[index + 1] + (((double_2 - double_1[index]) * (double_1[index + 3] - double_1[index + 1])) / (double_1[index + 2] - double_1[index])));
|
|
}
|
|
}
|
|
|
|
this.class17_0.frmMain_0.LogThis("Error with interpolation");
|
|
return 0.0;
|
|
//throw new Exception("Error with interpolation");
|
|
}
|
|
|
|
public bool method_265(long[] long_0_X)
|
|
{
|
|
for (int i = 0; i < long_0_X.Length; i++)
|
|
{
|
|
if (long_0_X[i] == 0L)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void method_266(bool bool_3, bool bool_4)
|
|
{
|
|
this.method_155("Copy Primary Maps To Secondary Maps");
|
|
int num = (this.method_32_GetRPM_RowsNumber() * this.method_33()) + this.method_33();
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
this.method_149_SetByte(this.class13_u_0.long_20 + i, this.GetByteAt(this.class13_u_0.long_10 + i));
|
|
this.method_149_SetByte(this.class13_u_0.long_21 + i, this.GetByteAt(this.class13_u_0.long_11 + i));
|
|
}
|
|
for (int j = 0; j < (num - this.method_33()); j++)
|
|
{
|
|
this.method_149_SetByte(this.class13_u_0.long_22 + j, this.GetByteAt(this.class13_u_0.long_12 + j));
|
|
this.method_149_SetByte(this.class13_u_0.long_23 + j, this.GetByteAt(this.class13_u_0.long_13 + j));
|
|
}
|
|
if (bool_3)
|
|
{
|
|
for (byte k = 0; k < this.method_33(); k = (byte) (k + 1))
|
|
{
|
|
byte num5 = (byte) this.method_166(k, SelectedTable.fuel1_hi);
|
|
this.method_171(k, num5, SelectedTable.fuel2_hi);
|
|
}
|
|
}
|
|
if (bool_4)
|
|
{
|
|
for (byte m = 0; m < this.method_32_GetRPM_RowsNumber(); m = (byte) (m + 1))
|
|
{
|
|
byte num7 = (byte) this.method_162(m, SelectedTable.fuel1_lo);
|
|
this.method_170(m, num7, SelectedTable.fuel2_lo);
|
|
byte num8 = (byte) this.method_162(m, SelectedTable.fuel1_hi);
|
|
this.method_170(m, num8, SelectedTable.fuel2_hi);
|
|
}
|
|
}
|
|
this.method_153();
|
|
this.method_53();
|
|
this.method_153();
|
|
}
|
|
|
|
public void method_267(bool bool_3, bool bool_4)
|
|
{
|
|
this.method_155("Copy Secondary Maps To Primary Maps");
|
|
int num = (this.method_32_GetRPM_RowsNumber() * this.method_33()) + this.method_33();
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
this.method_149_SetByte(this.class13_u_0.long_10 + i, this.GetByteAt(this.class13_u_0.long_20 + i));
|
|
this.method_149_SetByte(this.class13_u_0.long_11 + i, this.GetByteAt(this.class13_u_0.long_21 + i));
|
|
}
|
|
for (int j = 0; j < (num - this.method_33()); j++)
|
|
{
|
|
this.method_149_SetByte(this.class13_u_0.long_12 + j, this.GetByteAt(this.class13_u_0.long_22 + j));
|
|
this.method_149_SetByte(this.class13_u_0.long_13 + j, this.GetByteAt(this.class13_u_0.long_23 + j));
|
|
}
|
|
if (bool_3)
|
|
{
|
|
for (byte k = 0; k < this.method_33(); k = (byte) (k + 1))
|
|
{
|
|
byte num5 = (byte) this.method_166(k, SelectedTable.fuel2_hi);
|
|
this.method_171(k, num5, SelectedTable.fuel1_hi);
|
|
}
|
|
}
|
|
if (bool_4)
|
|
{
|
|
for (byte m = 0; m < this.method_32_GetRPM_RowsNumber(); m = (byte) (m + 1))
|
|
{
|
|
byte num7 = (byte) this.method_162(m, SelectedTable.fuel2_lo);
|
|
this.method_170(m, num7, SelectedTable.fuel1_lo);
|
|
byte num8 = (byte) this.method_162(m, SelectedTable.fuel2_hi);
|
|
this.method_170(m, num8, SelectedTable.fuel1_hi);
|
|
}
|
|
}
|
|
this.method_153();
|
|
this.method_53();
|
|
this.method_153();
|
|
}
|
|
|
|
public string method_27()
|
|
{
|
|
if (string.IsNullOrEmpty(this.method_25_GetFilename()))
|
|
{
|
|
return string.Empty;
|
|
}
|
|
FileInfo info = new FileInfo(this.method_25_GetFilename());
|
|
string directoryName = info.DirectoryName;
|
|
info = null;
|
|
return directoryName;
|
|
}
|
|
|
|
public bool method_28()
|
|
{
|
|
return this.bool_2;
|
|
}
|
|
|
|
public void method_29(bool bool_3)
|
|
{
|
|
this.bool_2 = bool_3;
|
|
}
|
|
|
|
public void method_3()
|
|
{
|
|
if (this.delegate55_1 != null)
|
|
{
|
|
this.delegate55_1();
|
|
}
|
|
}
|
|
|
|
public bool method_30_HasFileLoadedInBMTune()
|
|
{
|
|
return this.bool_1;
|
|
}
|
|
|
|
public void SetFileLoaded(bool bool_3)
|
|
{
|
|
this.bool_1 = bool_3;
|
|
if (!this.method_28())
|
|
{
|
|
if (this.delegate58_0 != null)
|
|
{
|
|
this.delegate58_0();
|
|
}
|
|
if (this.delegate55_1 != null)
|
|
{
|
|
this.delegate55_1();
|
|
}
|
|
}
|
|
}
|
|
|
|
public byte method_32_GetRPM_RowsNumber()
|
|
{
|
|
return this.method_148(this.long_4);
|
|
}
|
|
|
|
public byte method_33()
|
|
{
|
|
return this.method_147(this.long_4);
|
|
}
|
|
|
|
public long method_34()
|
|
{
|
|
return (long) (this.method_32_GetRPM_RowsNumber() * this.method_33());
|
|
}
|
|
|
|
public bool method_35()
|
|
{
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ve_lo:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_35_Selectable(SelectedTable SelectedTable_0)
|
|
{
|
|
switch (SelectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ve_lo:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_36()
|
|
{
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.ign1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return true;
|
|
|
|
case SelectedTable.ve_hi:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_36_Selectable(SelectedTable SelectedTable_0)
|
|
{
|
|
switch (SelectedTable_0)
|
|
{
|
|
case SelectedTable.ign1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return true;
|
|
|
|
case SelectedTable.ve_hi:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_37()
|
|
{
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.fuel1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.fuel2_hi:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_38()
|
|
{
|
|
if (this.method_4() != SelectedTable.ve_lo)
|
|
{
|
|
return (this.method_4() == SelectedTable.ve_hi);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public bool method_39()
|
|
{
|
|
int num = (int) this.method_4();
|
|
return ((num >= 5) && (num <= 8));
|
|
}
|
|
|
|
public SelectedTable method_4()
|
|
{
|
|
return this.selectedTable_0;
|
|
}
|
|
|
|
public bool method_40()
|
|
{
|
|
switch (this.method_4())
|
|
{
|
|
case SelectedTable.ign1_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ign1_hi:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_lo:
|
|
return true;
|
|
|
|
case SelectedTable.ign2_hi:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_41()
|
|
{
|
|
if ((this.class13_u_0.long_372 == 0L) || !this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
return false;
|
|
}
|
|
if (!this.method_39())
|
|
{
|
|
return this.method_258(this.GetByteAt(this.class13_u_0.long_372), 0);
|
|
}
|
|
return this.method_258(this.GetByteAt(this.class13_u_0.long_372), 2);
|
|
}
|
|
|
|
public bool method_42()
|
|
{
|
|
if ((this.class13_u_0.long_372 == 0L) || !this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
return false;
|
|
}
|
|
if (!this.method_39())
|
|
{
|
|
return this.method_258(this.GetByteAt(this.class13_u_0.long_372), 1);
|
|
}
|
|
return this.method_258(this.GetByteAt(this.class13_u_0.long_372), 3);
|
|
}
|
|
|
|
public bool method_43(int int_3)
|
|
{
|
|
if ((this.class13_u_0.long_371 != 0L) && (this.method_37() || this.method_40()))
|
|
{
|
|
if (this.method_41())
|
|
{
|
|
int num = this.method_206(this.GetByteAt(this.class13_u_0.long_371));
|
|
if (int_3 >= num)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
else if (this.method_42())
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool method_44()
|
|
{
|
|
return (this.method_8() != TableOverlay.none);
|
|
}
|
|
|
|
public bool method_45()
|
|
{
|
|
if (this.class11_u_0 == null)
|
|
{
|
|
return false;
|
|
}
|
|
return this.class11_u_0.method_1();
|
|
}
|
|
|
|
public bool method_46()
|
|
{
|
|
if (this.method_48() || (this.method_25_GetFilename() == null))
|
|
{
|
|
return true;
|
|
}
|
|
FileInfo info = new FileInfo(this.method_25_GetFilename());
|
|
bool flag = false;
|
|
if (info.Extension == ".bmc")
|
|
{
|
|
flag = true;
|
|
}
|
|
info = null;
|
|
return flag;
|
|
}
|
|
|
|
public bool method_47()
|
|
{
|
|
return (this.method_25_GetFilename() == "Emulator Rom");
|
|
}
|
|
|
|
public bool method_48()
|
|
{
|
|
if (!(this.method_25_GetFilename() == "Emulator Rom"))
|
|
{
|
|
return (this.method_25_GetFilename() == "New Calibration");
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public double method_49()
|
|
{
|
|
return (((double) this.method_152(this.class13_u_0.long_33)) / 32768.0);
|
|
}
|
|
|
|
public void method_5_SetSelectedTable(SelectedTable selectedTable_1)
|
|
{
|
|
this.class17_0.frmMain_0.SpawnWaitingwindows();
|
|
this.selectedTable_0 = selectedTable_1;
|
|
if (this.delegate57_0 != null) this.delegate57_0(selectedTable_1);
|
|
this.class17_0.frmMain_0.CloseWaitingwindows();
|
|
}
|
|
|
|
public int method_50_GetOLDInjectorSize()
|
|
{
|
|
if (this.method_152(this.class13_u_0.long_41) != 0L)
|
|
{
|
|
return (int) this.method_152(this.class13_u_0.long_41);
|
|
}
|
|
return 240;
|
|
}
|
|
|
|
public void method_51_SetOLDInjectorSize(int int_3)
|
|
{
|
|
this.method_151(this.class13_u_0.long_41, (long) int_3);
|
|
}
|
|
|
|
public void method_52()
|
|
{
|
|
if (this.delegate58_0 != null) this.delegate58_0();
|
|
}
|
|
|
|
public void method_53()
|
|
{
|
|
if (this.delegate55_0 != null) this.delegate55_0();
|
|
}
|
|
|
|
public void method_54()
|
|
{
|
|
if (!this.method_48() && !this.method_47())
|
|
{
|
|
this.method_69();
|
|
}
|
|
}
|
|
|
|
public FuelDisplayMode method_6()
|
|
{
|
|
return this.fuelDisplayMode_0;
|
|
}
|
|
|
|
public void method_60()
|
|
{
|
|
if (this.class17_0 != null)
|
|
{
|
|
if (this.class17_0.method_34_GetConnected())
|
|
{
|
|
this.class17_0.method_36();
|
|
this.class17_0.method_20();
|
|
}
|
|
if (this.class17_0.method_63_HasLogsFileOpen())
|
|
{
|
|
this.class17_0.method_75();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Open file (when clicking the button 'open file' in the main menu
|
|
public void method_61()
|
|
{
|
|
this.class21_snap_0.method_8();
|
|
this.method_60();
|
|
OpenFileDialog dialog = new OpenFileDialog();
|
|
if (this.class10_settings_0.romFilePath != string.Empty)
|
|
{
|
|
if (this.class10_settings_0.romFilePath == Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\")
|
|
this.class10_settings_0.romFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
}
|
|
else
|
|
{
|
|
this.class10_settings_0.romFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
}
|
|
dialog.InitialDirectory = this.class10_settings_0.romFilePath;
|
|
|
|
|
|
//########################################
|
|
//1. BMTune and HTS DEV ROM |*.asm
|
|
//2. ECU Binary|*.bin
|
|
//3. Kseries Calibration|*.khts
|
|
//4. Honda Tune File|*.bin;*.khts
|
|
//5. Universal ECU Bin File|*.bin
|
|
//dialog.Filter = "BMTune and HTS DEV ROM |*.asm|ECU Binary|*.bin|Kseries Calibration|*.khts|Honda Tune File|*.bin;*.khts|Universal ECU Bin File|*.bin";
|
|
//########################################
|
|
|
|
//########################################
|
|
//1. BMTune Devlopment Baserom |*.asm
|
|
//2. Honda Tune File|*.bin
|
|
//3. Universal ECU Bin File|*.bin
|
|
dialog.Filter = "BMTune Devlopment Baserom|*.asm|ECU Binary|*.bin|Honda Tune File|*.bin";
|
|
//dialog.Filter = "BMTune Devlopment Baserom|*.asm|ECU Binary|*.bin|Honda Tune File|*.bin|Universal ECU Bin File|*.bin";
|
|
//########################################
|
|
|
|
dialog.CheckFileExists = true;
|
|
dialog.CheckPathExists = true;
|
|
//dialog.FilterIndex = !false ? 4 : 3;
|
|
dialog.FilterIndex = 2;
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
//KBinLoaded = false;
|
|
|
|
FileInfo info = new FileInfo(dialog.FileName);
|
|
this.class10_settings_0.romFilePath = info.DirectoryName;
|
|
this.method_26_SetFilename(dialog.FileName);
|
|
this.method_24(info.Name);
|
|
string str = Path.GetExtension(dialog.FileName).ToLower();
|
|
|
|
//if (dialog.FilterIndex == 5)
|
|
/*if (dialog.FilterIndex == 3)
|
|
{
|
|
this.method_LoadVWTune(dialog.FileName);
|
|
}
|
|
else
|
|
{*/
|
|
//if (str == ".khts") dialog.FilterIndex = 3;
|
|
//else if (str == ".bin") dialog.FilterIndex = 2;
|
|
|
|
/*if (dialog.FilterIndex == 3)
|
|
{
|
|
this.method_LoadKTune(dialog.FileName);
|
|
}
|
|
else
|
|
{*/
|
|
|
|
//Reload Normal Menu
|
|
if (this.class17_0.frmMain_0.CustomMenuLoaded)
|
|
{
|
|
this.class17_0.frmMain_0.LoadKTable(false, false);
|
|
this.class17_0.frmMain_0.LoadPages();
|
|
}
|
|
|
|
this.method_5_SetSelectedTable(SelectedTable.fuel1_lo);
|
|
this.method_9(TableOverlay.none);
|
|
if (dialog.FilterIndex == 2)
|
|
{
|
|
try
|
|
{
|
|
int length;
|
|
FileStream stream = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read);
|
|
if (stream.CanRead)
|
|
{
|
|
length = (int)stream.Length;
|
|
byte[] byte_XX = new byte[length];
|
|
stream.Read(byte_XX, 0, length);
|
|
SetAllByte(byte_XX);
|
|
}
|
|
stream.Dispose();
|
|
stream = null;
|
|
length = 0;
|
|
|
|
this.method_90();
|
|
GlitchTestingTimer = 0;
|
|
//if (this.method_30_HasFileLoadedInBMTune()) this.method_54();
|
|
}
|
|
catch (Exception mess)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, mess.Message, "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
}
|
|
}
|
|
else if (dialog.FilterIndex == 1)
|
|
{
|
|
if (this.class10_settings_0.frmMain_0.ConvertASMtoBIN(dialog.FileName))
|
|
{
|
|
SetAllByte(File.ReadAllBytes(dialog.FileName + ".bin"));
|
|
this.method_90();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Failed to compile ASM into BIN!", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
//this.method_66(dialog.FileName); //loading calibrations
|
|
}
|
|
//}
|
|
this.class10_settings_0.method_28(dialog.FileName);
|
|
}
|
|
dialog.Dispose();
|
|
dialog = null;
|
|
GC.Collect(3, GCCollectionMode.Forced);
|
|
}
|
|
|
|
/*public void method_LoadKTune(string string_7)
|
|
{
|
|
this.class10_settings_0.frmMain_0.ktable_0.string_8 = string_7;
|
|
this.class10_settings_0.frmMain_0.LoadKTable(true, false);
|
|
KBinLoaded = true;
|
|
}*/
|
|
|
|
/*public void method_LoadOBD0(string string_7)
|
|
{
|
|
this.class10_settings_0.frmMain_0.ktable_0.string_8 = string_7;
|
|
this.class10_settings_0.frmMain_0.LoadKTable(false, true);
|
|
KBinLoaded = true;
|
|
}*/
|
|
|
|
//Load Last File
|
|
public void method_62(string string_8)
|
|
{
|
|
//load asm into .bin
|
|
if (string_8.Substring(string_8.Length - 4).Contains(".asm"))
|
|
{
|
|
if (!this.class17_0.frmMain_0.ConvertASMtoBIN(string_8))
|
|
{
|
|
MessageBox.Show("Failed to compile ASM into BIN.");
|
|
return;
|
|
}
|
|
string text1 = string_8 + ".bin";
|
|
string_8 = text1;
|
|
}
|
|
|
|
this.class21_snap_0.method_8();
|
|
this.method_60();
|
|
FileInfo info = new FileInfo(string_8);
|
|
if (!info.Exists)
|
|
{
|
|
this.class10_settings_0.method_29(string_8);
|
|
}
|
|
else
|
|
{
|
|
string str = Path.GetExtension(string_8).ToLower();
|
|
/*if ((str == ".KHTS") || (str == "khts"))
|
|
{
|
|
if (MessageBox.Show("Last opened file was K series calibration." + Environment.NewLine + "Do you want to open this again?", "K-Series", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
this.method_LoadKTune(string_8);
|
|
}
|
|
}
|
|
else
|
|
{*/
|
|
this.method_5_SetSelectedTable(SelectedTable.fuel1_lo);
|
|
this.method_9(TableOverlay.none);
|
|
if (!this.method_30_HasFileLoadedInBMTune() || this.method_68())
|
|
{
|
|
this.method_26_SetFilename(string_8);
|
|
this.method_24(info.Name);
|
|
FileInfo info2 = new FileInfo(this.method_25_GetFilename());
|
|
if (info2.Extension == ".bin")
|
|
{
|
|
try
|
|
{
|
|
int length;
|
|
FileStream stream = new FileStream(string_8, FileMode.Open, FileAccess.Read);
|
|
if (stream.CanRead)
|
|
{
|
|
length = (int)stream.Length;
|
|
//byte[] byte_XX = null;
|
|
byte[] byte_XX = new byte[length];
|
|
stream.Read(byte_XX, 0, length);
|
|
|
|
SetByteNull();
|
|
SetAllByte(byte_XX);
|
|
}
|
|
stream.Dispose();
|
|
stream = null;
|
|
length = 0;
|
|
this.method_90();
|
|
GlitchTestingTimer = 0;
|
|
//if (!this.method_30_HasFileLoadedInBMTune()) this.method_54(); //save file
|
|
}
|
|
catch (Exception mess)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, mess.Message, "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.method_66(string_8);
|
|
}
|
|
if (this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
this.class10_settings_0.method_28(string_8);
|
|
}
|
|
else
|
|
{
|
|
this.method_68();
|
|
}
|
|
GC.Collect(3, GCCollectionMode.Forced);
|
|
}
|
|
//}
|
|
}
|
|
}
|
|
|
|
public void method_63(bool bool_3, int Version, string Filename)
|
|
{
|
|
byte[] buffer = new byte[] { };
|
|
|
|
//Select New and Last Version
|
|
RomVersion = Version;
|
|
//LoadBinaryFiles();
|
|
buffer = Binary_Files_0.ThisBytesL[Version - 100];
|
|
RomVersion = Version;
|
|
//CloseBinaryFiles();
|
|
|
|
if (bool_3)
|
|
{
|
|
this.method_67(buffer, true);
|
|
buffer = null;
|
|
GC.Collect(1, GCCollectionMode.Forced);
|
|
}
|
|
else
|
|
{
|
|
//here for loading premade, new baserom, etc
|
|
if (Filename == "") Filename = "New Baserom";
|
|
if (Path.GetDirectoryName(Filename) == "" && this.class10_settings_0.romFilePath != "") Filename = this.class10_settings_0.romFilePath + @"\" + Filename;
|
|
|
|
this.class21_snap_0.method_8();
|
|
this.method_68();
|
|
this.method_60();
|
|
this.method_26_SetFilename(Filename);
|
|
this.method_24(Filename);
|
|
this.method_67(buffer, true);
|
|
buffer = null;
|
|
GC.Collect(1, GCCollectionMode.Forced);
|
|
//this.method_54(); //save file
|
|
}
|
|
}
|
|
|
|
public void method_65()
|
|
{
|
|
this.class11_u_0.method_12();
|
|
}
|
|
|
|
public void method_66(string string_8)
|
|
{
|
|
this.method_29(true);
|
|
this.class21_snap_0.method_8();
|
|
this.method_63(true, Stable_Version_LAST + 100, "");
|
|
this.method_26_SetFilename(string_8);
|
|
FileInfo info = new FileInfo(string_8);
|
|
if (info.Exists)
|
|
{
|
|
this.method_24(info.Name);
|
|
info = null;
|
|
|
|
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\" + Path.GetFileName(string_8);
|
|
byte[] byte_99_0 = method_93(File.ReadAllBytes(string_8));
|
|
File.WriteAllBytes(path, byte_99_0);
|
|
|
|
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
|
|
//FileStream stream = new FileStream(string_8, FileMode.Open, FileAccess.Read);
|
|
byte[] buffer = new byte[stream.Length];
|
|
stream.Read(buffer, 0, (int) stream.Length);
|
|
stream.Dispose();
|
|
stream = null;
|
|
this.method_29(false);
|
|
this.method_76(buffer, true);
|
|
buffer = null;
|
|
if (File.Exists(path)) File.Delete(path);
|
|
this.method_54();
|
|
GC.Collect(1, GCCollectionMode.Forced);
|
|
}
|
|
}
|
|
|
|
//Loading Full File (32kb .bin)
|
|
public void method_67(byte[] byte_3, bool bool_3)
|
|
{
|
|
SetAllByte(byte_3);
|
|
//this.byte_0 = byte_3;
|
|
if (!bool_3)
|
|
{
|
|
this.method_26_SetFilename("Emulator Rom");
|
|
this.method_24("Emulator Rom");
|
|
}
|
|
this.method_90();
|
|
this.class11_u_0.method_12();
|
|
GC.Collect(3, GCCollectionMode.Forced);
|
|
}
|
|
|
|
public bool method_68()
|
|
{
|
|
this.class21_snap_0.method_8();
|
|
this.method_60();
|
|
if (this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
if (this.method_45())
|
|
{
|
|
switch (MessageBox.Show(Form.ActiveForm, "Unsaved modifications!" + Environment.NewLine + "Do you want to save modifications?", "BMTune", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
|
|
{
|
|
case DialogResult.Yes:
|
|
this.method_69();
|
|
break;
|
|
|
|
case DialogResult.Cancel:
|
|
return false;
|
|
}
|
|
}
|
|
else if (this.method_48() || this.method_47())
|
|
{
|
|
switch (MessageBox.Show(Form.ActiveForm, "Unsaved modifications!" + Environment.NewLine + "Do you want to save modifications?", "BMTune", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
|
|
{
|
|
case DialogResult.Yes:
|
|
this.method_70();
|
|
break;
|
|
|
|
case DialogResult.Cancel:
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
this.method_26_SetFilename(null);
|
|
this.method_24(null);
|
|
this.class11_u_0.method_12();
|
|
this.SetFileLoaded(false);
|
|
GC.Collect(3, GCCollectionMode.Forced);
|
|
return true;
|
|
}
|
|
|
|
//This method refer to 'File/Save'
|
|
public void method_69()
|
|
{
|
|
if (this.method_48() || this.method_47())
|
|
{
|
|
this.method_70();
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
FileInfo info = new FileInfo(this.method_25_GetFilename());
|
|
if (info.Exists) info.Delete();
|
|
if (info.Extension == ".bin")
|
|
{
|
|
FileStream stream = new FileStream(this.method_25_GetFilename(), FileMode.OpenOrCreate, FileAccess.Write);
|
|
stream.Write(GetAllByte(), 0, GetByteLenght());
|
|
stream.Close();
|
|
stream.Dispose();
|
|
stream = null;
|
|
info = null;
|
|
}
|
|
else
|
|
{
|
|
this.method_73(this.method_25_GetFilename());
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, exception.Message, "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
}
|
|
this.class11_u_0.method_12();
|
|
}
|
|
}
|
|
|
|
public void method_7(FuelDisplayMode fuelDisplayMode_1)
|
|
{
|
|
this.fuelDisplayMode_0 = fuelDisplayMode_1;
|
|
if (this.delegate61_0 != null)
|
|
{
|
|
this.delegate61_0(fuelDisplayMode_1);
|
|
}
|
|
}
|
|
|
|
//This method refer to 'Save As'
|
|
public void method_70()
|
|
{
|
|
SaveFileDialog dialog = new SaveFileDialog();
|
|
|
|
if (this.class10_settings_0.romFilePath == string.Empty
|
|
|| this.class10_settings_0.romFilePath == Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\")
|
|
{
|
|
this.class10_settings_0.romFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
}
|
|
dialog.InitialDirectory = this.class10_settings_0.romFilePath;
|
|
dialog.OverwritePrompt = true;
|
|
/*dialog.Filter = "BMTune Binary|*.bin";
|
|
dialog.FilterIndex = 1;
|
|
if (this.class15_0.method_5(Enum4.const_12))
|
|
{*/
|
|
dialog.Filter = "BMTune Calibration|*.bmc|BMTune Binary|*.bin";
|
|
dialog.FilterIndex = 2;
|
|
//}
|
|
|
|
dialog.FileName = this.string_5;
|
|
if (dialog.FileName.LastIndexOf('.') != -1) dialog.FileName = dialog.FileName.Substring(0, dialog.FileName.Length - 4);
|
|
if (dialog.FilterIndex == 1) dialog.DefaultExt = ".bmc";
|
|
else if (dialog.FilterIndex == 2) dialog.DefaultExt = ".bin";
|
|
/*if (dialog.FilterIndex == 1 && this.class15_0.method_5(Enum4.const_12)) dialog.DefaultExt = ".bmc";
|
|
else if (dialog.FilterIndex == 1 && !this.class15_0.method_5(Enum4.const_12)) dialog.DefaultExt = ".bin";
|
|
else if (dialog.FilterIndex == 2 && this.class15_0.method_5(Enum4.const_12)) dialog.DefaultExt = ".bin";*/
|
|
dialog.AddExtension = true;
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(dialog.FileName)) File.Delete(dialog.FileName);
|
|
|
|
//Open .bin File
|
|
//if ((dialog.FilterIndex == 1 && !this.class15_0.method_5(Enum4.const_12)) || (dialog.FilterIndex == 2 && this.class15_0.method_5(Enum4.const_12)))
|
|
if (dialog.FilterIndex == 2)
|
|
{
|
|
FileStream stream = new FileStream(dialog.FileName, FileMode.OpenOrCreate, FileAccess.Write);
|
|
stream.Write(GetAllByte(), 0, GetByteLenght());
|
|
stream.Close();
|
|
stream.Dispose();
|
|
stream = null;
|
|
}
|
|
//Open .bmc File
|
|
//else if (dialog.FilterIndex == 1 && this.class15_0.method_5(Enum4.const_12))
|
|
else if (dialog.FilterIndex == 1)
|
|
{
|
|
this.method_73(dialog.FileName); //load cal (.bmc) only for developper
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, exception.Message, "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
return;
|
|
}
|
|
FileInfo info2 = new FileInfo(dialog.FileName);
|
|
this.class10_settings_0.romFilePath = info2.DirectoryName;
|
|
this.method_26_SetFilename(dialog.FileName);
|
|
this.method_24(info2.Name);
|
|
info2 = null;
|
|
this.class11_u_0.method_12();
|
|
this.method_52();
|
|
this.class10_settings_0.method_28(this.method_25_GetFilename());
|
|
}
|
|
}
|
|
|
|
//export calibration clic from Frm_Main
|
|
public void method_72()
|
|
{
|
|
SaveFileDialog dialog = new SaveFileDialog();
|
|
if (this.class10_settings_0.calFilePath != string.Empty) dialog.InitialDirectory = this.class10_settings_0.calFilePath;
|
|
dialog.DefaultExt = "*.bmc";
|
|
dialog.Filter = "BMTune Calibration|*.bmc";
|
|
dialog.DefaultExt = ".bmc";
|
|
dialog.AddExtension = true;
|
|
dialog.OverwritePrompt = true;
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
FileInfo info = new FileInfo(dialog.FileName);
|
|
if (info.Exists) info.Delete();
|
|
this.class10_settings_0.calFilePath = info.Directory.ToString();
|
|
info = null;
|
|
|
|
method_73(dialog.FileName);
|
|
}
|
|
dialog.Dispose();
|
|
dialog = null;
|
|
}
|
|
|
|
public void method_73(string string_8)
|
|
{
|
|
FileInfo info = new FileInfo(string_8);
|
|
if (info.Exists)
|
|
{
|
|
info.Delete();
|
|
}
|
|
if (!info.Directory.Exists)
|
|
{
|
|
info.Directory.Create();
|
|
}
|
|
info = null;
|
|
|
|
FileStream stream = new FileStream(string_8, FileMode.CreateNew, FileAccess.Write);
|
|
this.byte_2 = 0;
|
|
stream.WriteByte(this.method_147(this.class13_u_0.long_89));
|
|
stream.WriteByte(this.method_148(this.class13_u_0.long_89));
|
|
stream.WriteByte(this.method_147(this.class13_u_0.long_90));
|
|
stream.WriteByte(this.method_148(this.class13_u_0.long_90));
|
|
for (int k = 0; k < 4; k++)
|
|
{
|
|
stream.WriteByte(this.GetByteAt((long) (0x7ffa + k)));
|
|
}
|
|
for (long i = this.class13_u_0.long_89; i <= this.class13_u_0.long_90; i += 1L)
|
|
{
|
|
stream.WriteByte(this.GetByteAt(i));
|
|
this.method_86(this.GetByteAt(i));
|
|
}
|
|
for (long j = 0L; j < 3L; j += 1L)
|
|
{
|
|
stream.WriteByte(this.GetByteAt(this.class13_u_0.long_68 + j));
|
|
this.method_86(this.GetByteAt(this.class13_u_0.long_68 + j));
|
|
}
|
|
stream.WriteByte(this.method_85());
|
|
//Set Calibration comment
|
|
//byte[] bytes = Encoding.UTF8.GetBytes(this.method_88_GetComments());
|
|
//stream.Write(bytes, 0, bytes.Length);
|
|
stream.Dispose();
|
|
stream = null;
|
|
|
|
byte[] byte_99_0 = method_92(File.ReadAllBytes(string_8));
|
|
File.WriteAllBytes(string_8, byte_99_0);
|
|
}
|
|
|
|
//calibration import button clic from Frm_Main
|
|
public void method_74()
|
|
{
|
|
FileStream stream = null;
|
|
OpenFileDialog dialog = new OpenFileDialog();
|
|
if (this.class10_settings_0.calFilePath != string.Empty) dialog.InitialDirectory = this.class10_settings_0.calFilePath;
|
|
dialog.DefaultExt = "*.bmc";
|
|
dialog.Filter = "BMTune Calibration|*.bmc|eCtune Calibration|*.cal|HTS Calibration|*.bmc";
|
|
dialog.CheckFileExists = true;
|
|
dialog.CheckPathExists = true;
|
|
string path = "";
|
|
try
|
|
{
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\" + Path.GetFileName(dialog.FileName);
|
|
FileInfo info = new FileInfo(path);
|
|
this.class10_settings_0.calFilePath = info.Directory.ToString();
|
|
info = null;
|
|
|
|
method_75(dialog.FileName, false, dialog.FilterIndex);
|
|
}
|
|
dialog.Dispose();
|
|
dialog = null;
|
|
}
|
|
catch
|
|
{
|
|
if (stream != null)
|
|
{
|
|
stream.Dispose();
|
|
stream = null;
|
|
}
|
|
if (dialog != null)
|
|
{
|
|
dialog.Dispose();
|
|
dialog = null;
|
|
}
|
|
if (File.Exists(path)) File.Delete(path);
|
|
}
|
|
}
|
|
|
|
public void method_75(string string_8, bool bool_3, int FilterIndex)
|
|
{
|
|
FileStream stream = null;
|
|
long num = this.class13_u_0.long_89;
|
|
long num2 = this.class13_u_0.long_90;
|
|
long num3 = 0L;
|
|
long num4 = 0L;
|
|
byte num5 = 0;
|
|
byte[] buffer = null;
|
|
byte[] buffer2 = new byte[3];
|
|
string path = "";
|
|
try
|
|
{
|
|
this.byte_2 = 0;
|
|
if (FilterIndex == 1)
|
|
{
|
|
path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\" + Path.GetFileName(string_8);
|
|
byte[] byte_99_0 = method_93(File.ReadAllBytes(string_8));
|
|
File.WriteAllBytes(path, byte_99_0);
|
|
}
|
|
if (FilterIndex == 2)
|
|
{
|
|
path = string_8;
|
|
}
|
|
if (FilterIndex == 3)
|
|
{
|
|
path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\" + Path.GetFileName(string_8);
|
|
byte[] byte_99_0 = method_246_HTSCrypter(File.ReadAllBytes(string_8));
|
|
File.WriteAllBytes(path, byte_99_0);
|
|
}
|
|
stream = new FileStream(path, FileMode.Open, FileAccess.Read);
|
|
num = this.method_146((byte) stream.ReadByte(), (byte) stream.ReadByte());
|
|
num2 = this.method_146((byte) stream.ReadByte(), (byte) stream.ReadByte());
|
|
num3 = this.method_146((byte) stream.ReadByte(), (byte) stream.ReadByte());
|
|
num4 = this.method_146((byte) stream.ReadByte(), (byte) stream.ReadByte());
|
|
buffer = new byte[(num2 - num) + 1L];
|
|
for (long i = 0L; i < buffer.Length; i += 1L)
|
|
{
|
|
buffer[(int) ((IntPtr) i)] = (byte) stream.ReadByte();
|
|
this.method_86(buffer[(int) ((IntPtr) i)]);
|
|
}
|
|
for (long j = 0L; j < 3L; j += 1L)
|
|
{
|
|
buffer2[(int) ((IntPtr) j)] = (byte) stream.ReadByte();
|
|
this.method_86(buffer2[(int) ((IntPtr) j)]);
|
|
}
|
|
num5 = (byte) stream.ReadByte();
|
|
string s = buffer2[0].ToString() + buffer2[1].ToString() + buffer2[2].ToString();
|
|
this.string_7 = s;
|
|
int num8 = int.Parse(s);
|
|
//Get Calibration comment
|
|
/*if (stream.Length > ((buffer.Length + buffer2.Length) + 9))
|
|
{
|
|
bytes = new byte[stream.Length - ((buffer.Length + buffer2.Length) + 5)];
|
|
for (int k = 0; k < (stream.Length - ((buffer.Length + buffer2.Length) + 5)); k++)
|
|
{
|
|
bytes[k] = (byte) stream.ReadByte();
|
|
}
|
|
}*/
|
|
if (num5 == this.method_85())
|
|
{
|
|
bool flag = this.class10_settings_0.bool_32;
|
|
this.class10_settings_0.bool_32 = false;
|
|
|
|
this.method_155("Import Calibration");
|
|
int index = 0;
|
|
for (long m = num; m <= num2; m += 1L)
|
|
{
|
|
if (((num3 != 0L) && (num3 != 0xffffL)) && ((num4 != 0L) && (num4 != 0xffffL)))
|
|
{
|
|
if ((m >= num3) && (m <= num4))
|
|
{
|
|
this.method_149_SetByte(m, buffer[index]);
|
|
}
|
|
if (m >= 0x61f1L)
|
|
{
|
|
this.method_149_SetByte(m, buffer[index]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.method_149_SetByte(m, buffer[index]);
|
|
}
|
|
index++;
|
|
}
|
|
//Set Calibration comment
|
|
/*if (bytes != null)
|
|
{
|
|
string str2 = Encoding.UTF8.GetString(bytes);
|
|
this.method_87_SetComments(str2);
|
|
}*/
|
|
this.method_153();
|
|
this.method_52();
|
|
this.method_77();
|
|
if (this.class25_0.GetConnected())
|
|
{
|
|
if (bool_3) this.class25_0.method_17();
|
|
else this.class25_0.method_19();
|
|
}
|
|
this.class10_settings_0.bool_32 = flag;
|
|
}
|
|
stream.Dispose();
|
|
stream = null;
|
|
if (File.Exists(path)) File.Delete(path);
|
|
}
|
|
catch
|
|
{
|
|
if (stream != null)
|
|
{
|
|
stream.Dispose();
|
|
stream = null;
|
|
}
|
|
if (File.Exists(path)) File.Delete(path);
|
|
}
|
|
}
|
|
|
|
public void method_76(byte[] byte_3, bool bool_3)
|
|
{
|
|
long num = this.class13_u_0.long_89;
|
|
long num2 = this.class13_u_0.long_90;
|
|
long num3 = 0L;
|
|
long num4 = 0L;
|
|
byte num5 = 0;
|
|
byte[] buffer = null;
|
|
byte[] buffer2 = new byte[3];
|
|
int num6 = 0;
|
|
try
|
|
{
|
|
this.byte_2 = 0;
|
|
num = this.method_146(byte_3[0], byte_3[1]);
|
|
num2 = this.method_146(byte_3[2], byte_3[3]);
|
|
num3 = this.method_146(byte_3[4], byte_3[5]);
|
|
num4 = this.method_146(byte_3[6], byte_3[7]);
|
|
buffer = new byte[(num2 - num) + 1L];
|
|
for (long i = 0L; i < buffer.Length; i += 1L)
|
|
{
|
|
buffer[(int) ((IntPtr) i)] = byte_3[(int) ((IntPtr) (8L + i))];
|
|
this.method_86(buffer[(int) ((IntPtr) i)]);
|
|
num6++;
|
|
}
|
|
for (long j = 0L; j < 3L; j += 1L)
|
|
{
|
|
buffer2[(int) ((IntPtr) j)] = byte_3[(int) ((IntPtr) ((8 + buffer.Length) + j))];
|
|
this.method_86(buffer2[(int) ((IntPtr) j)]);
|
|
}
|
|
string s = buffer2[0].ToString() + buffer2[1].ToString() + buffer2[2].ToString();
|
|
this.string_7 = s;
|
|
int num9 = int.Parse(s);
|
|
num5 = byte_3[11 + buffer.Length];
|
|
//Get Calibration comment
|
|
/*if (byte_3.Length > ((buffer.Length + buffer2.Length) + 9))
|
|
{
|
|
bytes = new byte[byte_3.Length - ((buffer.Length + buffer2.Length) + 9)];
|
|
for (int k = 0; k < (byte_3.Length - ((buffer.Length + buffer2.Length) + 9)); k++)
|
|
{
|
|
bytes[k] = byte_3[((buffer.Length + buffer2.Length) + 9) + k];
|
|
}
|
|
}*/
|
|
if (num5 == this.method_85())
|
|
{
|
|
int index = 0;
|
|
bool flag = this.class10_settings_0.bool_32;
|
|
this.class10_settings_0.bool_32 = false;
|
|
|
|
for (long m = num; m <= num2; m += 1L)
|
|
{
|
|
if (((num3 != 0L) && (num3 != 0xffffL)) && ((num4 != 0L) && (num4 != 0xffffL)))
|
|
{
|
|
if ((m >= num3) && (m <= num4)) SetByteAt(m, buffer[index]);
|
|
if (m >= 0x61f1L) SetByteAt(m, buffer[index]);
|
|
}
|
|
else
|
|
{
|
|
SetByteAt(m, buffer[index]);
|
|
}
|
|
index++;
|
|
}
|
|
//Set Calibration comment
|
|
/*if (bytes != null)
|
|
{
|
|
string str2 = Encoding.UTF8.GetString(bytes);
|
|
this.method_87_SetComments(str2);
|
|
}*/
|
|
this.method_52();
|
|
if (this.class25_0.GetConnected())
|
|
{
|
|
if (bool_3) this.class25_0.method_17();
|
|
else this.class25_0.method_19();
|
|
}
|
|
this.class10_settings_0.bool_32 = flag;
|
|
|
|
this.method_77();
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, exception.ToString());
|
|
}
|
|
}
|
|
|
|
private void method_77()
|
|
{
|
|
this.method_155("init new values");
|
|
|
|
if (this.GetByteAt(this.class13_u_0.long_114) == 0x80) this.method_149_SetByte(this.class13_u_0.long_114, 0);
|
|
if (this.GetByteAt(this.class13_u_0.long_373 + 1L) == 0xff) this.method_149_SetByte(this.class13_u_0.long_373 + 1L, 0xfd);
|
|
|
|
this.method_153();
|
|
}
|
|
|
|
public TableOverlay method_8()
|
|
{
|
|
return this.tableOverlay_0;
|
|
}
|
|
|
|
public void method_80()
|
|
{
|
|
if (this.class25_0.GetConnected())
|
|
{
|
|
this.class25_0.method_17();
|
|
}
|
|
}
|
|
|
|
public void method_82()
|
|
{
|
|
SaveFileDialog dialog = new SaveFileDialog {
|
|
Filter = "BMTune Table Export|*.bmt",
|
|
DefaultExt = ".bmt",
|
|
AddExtension = true,
|
|
OverwritePrompt = true
|
|
};
|
|
int[] numArray = new int[0x18];
|
|
int[] numArray2 = new int[0x18];
|
|
int[] numArray3 = new int[0x18];
|
|
long num1 = this.class13_u_0.long_94;
|
|
long num7 = this.class13_u_0.long_18;
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
FileStream stream;
|
|
this.byte_2 = 0;
|
|
FileInfo info = new FileInfo(dialog.FileName);
|
|
if (info.Exists)
|
|
{
|
|
stream = new FileStream(dialog.FileName, FileMode.Truncate, FileAccess.Write);
|
|
}
|
|
else
|
|
{
|
|
stream = new FileStream(dialog.FileName, FileMode.CreateNew, FileAccess.Write);
|
|
}
|
|
BinaryWriter writer = new BinaryWriter(stream);
|
|
for (int i = 0; i < this.method_33(); i++)
|
|
{
|
|
numArray[i] = this.method_164((byte) i, SelectedTable.fuel1_lo);
|
|
numArray2[i] = this.method_164((byte) i, SelectedTable.fuel2_lo);
|
|
numArray3[i] = this.method_164((byte) i, SelectedTable.fuel1_lo);
|
|
}
|
|
for (int j = 0; j < this.method_33(); j++)
|
|
{
|
|
writer.Write((short) numArray[j]);
|
|
}
|
|
for (int k = 0; k < this.method_33(); k++)
|
|
{
|
|
writer.Write((short) numArray2[k]);
|
|
}
|
|
for (int m = 0; m < this.method_33(); m++)
|
|
{
|
|
writer.Write((short) numArray3[m]);
|
|
}
|
|
writer.Close();
|
|
writer = null;
|
|
stream.Close();
|
|
stream.Dispose();
|
|
stream = null;
|
|
stream = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read) {
|
|
Position = 0L
|
|
};
|
|
for (int n = 0; n < this.method_33(); n++)
|
|
{
|
|
this.method_86((byte) stream.ReadByte());
|
|
}
|
|
stream.Close();
|
|
stream.Dispose();
|
|
stream = null;
|
|
stream = new FileStream(dialog.FileName, FileMode.Append, FileAccess.Write);
|
|
writer = new BinaryWriter(stream);
|
|
for (long num6 = this.class13_u_0.long_18; num6 <= this.class13_u_0.long_94; num6 += 1L)
|
|
{
|
|
writer.Write(this.GetByteAt(num6));
|
|
this.method_86(this.GetByteAt(num6));
|
|
}
|
|
writer.Write(this.method_85());
|
|
writer.Close();
|
|
writer = null;
|
|
stream.Close();
|
|
stream.Dispose();
|
|
stream = null;
|
|
|
|
//Remove this to add more binary in bmtune
|
|
byte[] byte_99_0 = method_92(File.ReadAllBytes(dialog.FileName));
|
|
File.WriteAllBytes(dialog.FileName, byte_99_0);
|
|
}
|
|
}
|
|
|
|
//Import Tables button clic
|
|
public void method_83()
|
|
{
|
|
OpenFileDialog dialog = new OpenFileDialog {
|
|
DefaultExt = "*.bmt",
|
|
//Filter = "BMTune Table Import|*.bmt",
|
|
Filter = "BMTune Table|*.bmt|eCtune Table|*.eex|HTS Table|*.table",
|
|
CheckFileExists = true,
|
|
CheckPathExists = true
|
|
};
|
|
byte[] buffer = null;
|
|
try
|
|
{
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.method_155("Import Tables");
|
|
this.byte_2 = 0;
|
|
|
|
if (dialog.FilterIndex == 1)
|
|
{
|
|
buffer = method_93(File.ReadAllBytes(dialog.FileName));
|
|
}
|
|
if (dialog.FilterIndex == 2)
|
|
{
|
|
buffer = File.ReadAllBytes(dialog.FileName);
|
|
}
|
|
if (dialog.FilterIndex == 3)
|
|
{
|
|
buffer = method_246_HTSCrypter(File.ReadAllBytes(dialog.FileName));
|
|
}
|
|
this.ImportTableBytes(buffer);
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Error when importing tables!" + Environment.NewLine + "Error: " + exception.Message);
|
|
}
|
|
finally
|
|
{
|
|
dialog.Dispose();
|
|
dialog = null;
|
|
}
|
|
}
|
|
|
|
public void ImportTableBytes(byte[] byte_3)
|
|
{
|
|
int[] numArray = new int[0x18];
|
|
int[] numArray2 = new int[0x18];
|
|
int[] numArray3 = new int[0x18];
|
|
try
|
|
{
|
|
this.method_155("Import Tables");
|
|
this.byte_2 = 0;
|
|
byte num = 0;
|
|
int length = byte_3.Length;
|
|
for (int i = 0; i < (byte_3.Length - 1); i++)
|
|
{
|
|
this.method_86(byte_3[i]);
|
|
}
|
|
num = byte_3[length - 1];
|
|
//if (num == this.method_85())
|
|
//{
|
|
int num4 = 0;
|
|
for (long j = this.class13_u_0.long_18; j <= this.class13_u_0.long_94; j += 1L)
|
|
{
|
|
this.method_149_SetByte(j, byte_3[0x90 + num4]);
|
|
num4++;
|
|
}
|
|
int num6 = 0;
|
|
for (int k = 0; k < 0x18; k++)
|
|
{
|
|
numArray[k] = BitConverter.ToInt16(byte_3, num6 + (k * 2));
|
|
}
|
|
num6 = 0x30;
|
|
for (int m = 0; m < 0x18; m++)
|
|
{
|
|
numArray2[m] = BitConverter.ToInt16(byte_3, num6 + (m * 2));
|
|
}
|
|
num6 = 0x60;
|
|
for (int n = 0; n < 0x18; n++)
|
|
{
|
|
numArray3[n] = BitConverter.ToInt16(byte_3, num6 + (n * 2));
|
|
}
|
|
for (int num10 = 0; num10 < 0x18; num10++)
|
|
{
|
|
this.method_171((byte) num10, this.method_226(numArray[num10]), SelectedTable.fuel1_lo);
|
|
this.method_171((byte) num10, this.method_226(numArray2[num10]), SelectedTable.fuel2_lo);
|
|
}
|
|
this.method_53();
|
|
this.method_153();
|
|
//}
|
|
//else
|
|
//{
|
|
// MessageBox.Show(new Form {TopMost = true}, "Error when importing tables!");
|
|
//}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Error when importing tables!" + Environment.NewLine + "Error: " + exception.Message);
|
|
}
|
|
}
|
|
|
|
public byte method_85()
|
|
{
|
|
return this.byte_2;
|
|
}
|
|
|
|
public void method_86(byte byte_3)
|
|
{
|
|
this.byte_2 = (byte) (this.byte_2 + byte_3);
|
|
}
|
|
|
|
public void method_87_SetComments(string string_8)
|
|
{
|
|
string Newpath = Path.GetDirectoryName(this.method_25_GetFilename()) + @"\" + Path.GetFileName(this.method_25_GetFilename()).Substring(0, Path.GetFileName(this.method_25_GetFilename()).Length - 4) + ".comment";
|
|
File.Create(Newpath).Dispose();
|
|
File.WriteAllText(Newpath, string_8);
|
|
|
|
/*byte[] bytes = Encoding.UTF8.GetBytes(string_8);
|
|
long num = 0x8000L;
|
|
byte[] buffer2 = new byte[num + bytes.Length];
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
buffer2[i] = GetByteAt(i);
|
|
}
|
|
if (bytes.Length == 0)
|
|
{
|
|
//this.byte_0 = new byte[0x8000];
|
|
SetByteSize(0x8000);
|
|
for (int j = 0; j < buffer2.Length; j++) SetByteAt(j, buffer2[j]);
|
|
buffer2 = null;
|
|
}
|
|
else
|
|
{
|
|
for (int k = 0; k < bytes.Length; k++)
|
|
{
|
|
buffer2[(int) ((IntPtr) (num + k))] = bytes[k];
|
|
}
|
|
//this.byte_0 = new byte[buffer2.Length];
|
|
SetByteSize(buffer2.Length);
|
|
for (int m = 0; m < buffer2.Length; m++) SetByteAt(m, buffer2[m]);
|
|
buffer2 = null;
|
|
}*/
|
|
}
|
|
|
|
public string method_88_GetComments()
|
|
{
|
|
UTF8Encoding encoding = new UTF8Encoding();
|
|
if ((GetByteLenght() - 0x8000) <= 0)
|
|
{
|
|
string Newpath = Path.GetDirectoryName(this.method_25_GetFilename()) + @"\" + Path.GetFileName(this.method_25_GetFilename()).Substring(0, Path.GetFileName(this.method_25_GetFilename()).Length - 4) + ".comment";
|
|
if (File.Exists(Newpath))
|
|
{
|
|
return File.ReadAllText(Newpath);
|
|
}
|
|
else
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
byte[] bytes = new byte[GetByteLenght() - 0x8000];
|
|
for (int i = 0; i < bytes.Length; i++)
|
|
{
|
|
bytes[i] = GetByteAt(0x8000 + i);
|
|
}
|
|
return encoding.GetString(bytes);
|
|
}
|
|
|
|
public void method_9(TableOverlay tableOverlay_1)
|
|
{
|
|
this.tableOverlay_0 = tableOverlay_1;
|
|
}
|
|
|
|
private void ShowConvert(string Type)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "This is a " + Type + " file" + Environment.NewLine + "Do you want to convert it into BMtune?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Hand) == DialogResult.Yes)
|
|
{
|
|
frmConvert ConvertX = new frmConvert(ref this.Class18_0, Type);
|
|
DialogResult Result = ConvertX.ShowDialog();
|
|
ConvertX.Dispose();
|
|
ConvertX = null;
|
|
if (Result == DialogResult.OK)
|
|
{
|
|
//if (Type == "eCtune") ConvertBaserom("3.3.3");
|
|
if (Type == "eCtune") ConvertBaserom("eCtune");
|
|
LoadBMtune();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.SetFileLoaded(false);
|
|
//this.byte_0 = null;
|
|
SetByteNull();
|
|
this.method_24(null);
|
|
}
|
|
}
|
|
|
|
private bool TryPass()
|
|
{
|
|
bool Protected = true;
|
|
bool Locked = true;
|
|
if (Protected) MessageBox.Show(Form.ActiveForm, "File are protected" + Environment.NewLine + "Requesting Password", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
while (Protected && Locked)
|
|
{
|
|
//Try with setting password first
|
|
if (class10_settings_0.Password != "" && PasswordMatch())
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Password found in Settings are Matching the file Password!", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
Protected = false;
|
|
}
|
|
|
|
//If still protected, then perform manually password (password settings doesnt match)
|
|
if (Protected)
|
|
{
|
|
|
|
this.frmPassword_0 = new frmPassword();
|
|
this.frmPassword_0.method_0(ref this.Class18_0);
|
|
this.frmPassword_0.ShowDialog();
|
|
if (this.frmPassword_0 != null)
|
|
{
|
|
this.frmPassword_0.Dispose();
|
|
this.frmPassword_0 = null;
|
|
}
|
|
|
|
if (PasswordMatch())
|
|
{
|
|
this.class10_settings_0.Protect = true;
|
|
Protected = false;
|
|
}
|
|
else
|
|
{
|
|
this.class10_settings_0.Password = "";
|
|
if (MessageBox.Show(Form.ActiveForm, "Bad Password!" + Environment.NewLine + "Do you want to retry?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Hand) == DialogResult.No)
|
|
Locked = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return Protected;
|
|
}
|
|
|
|
public void method_90()
|
|
{
|
|
ConvertedToStable = false;
|
|
|
|
this.method_65();
|
|
|
|
//Convert 64kb file to 32kb
|
|
if (GetByteLenght() < 1048576)
|
|
{
|
|
if (GetByteLenght() == 65535 || GetByteLenght() == 65536)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "This is a 64kb file!" + Environment.NewLine + "Do you want to open the 32kb zone in the .bin?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
|
|
{
|
|
bool DataFound = false;
|
|
if (this.GetByteAt(0x0L) != 0xff)
|
|
{
|
|
DataFound = true;
|
|
|
|
byte[] BufferBinn = new byte[32768];
|
|
for (int i = 0; i < BufferBinn.Length; i++) BufferBinn[i] = this.GetByteAt(i);
|
|
this.SetByteNull();
|
|
this.SetAllByte(BufferBinn);
|
|
}
|
|
else if (this.GetByteAt(0x8000L) != 0xff)
|
|
{
|
|
DataFound = true;
|
|
|
|
byte[] BufferBinn = new byte[32768];
|
|
for (int i = 0; i < BufferBinn.Length; i++) BufferBinn[i] = this.GetByteAt(i + 0x8000L);
|
|
this.SetByteNull();
|
|
this.SetAllByte(BufferBinn);
|
|
}
|
|
|
|
if (!DataFound)
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "Cannot convert to 32kb .bin!" + Environment.NewLine + "No Data found at 0x0000 or 0x8000", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Load eCt Files
|
|
if ((this.method_152(0x7fefL) == 0x4365L) && (this.method_152(0x7ff1L) == 0xa974L) && (this.GetByteAt(0x7ff7L) == 0) && (this.GetByteAt(0x7ff8L) == 0))
|
|
{
|
|
ShowConvert("eCtune");
|
|
}
|
|
// Load Crome Gold Files
|
|
else if (this.GetByteAt(528) == 137 && this.GetByteAt(529) == 0xc6 && this.GetByteAt(530) == 0xab)
|
|
{
|
|
ShowConvert("Crome Gold");
|
|
}
|
|
// Load Crome P28 Files
|
|
else if (this.GetByteAt(528) == 212 && this.GetByteAt(529) == 0x1a && this.GetByteAt(530) == 0x02)
|
|
{
|
|
ShowConvert("Crome P28");
|
|
}
|
|
// Load Crome P30 Files
|
|
else if (this.GetByteAt(528) == 0x2e && this.GetByteAt(529) == 0xf9 && this.GetByteAt(530) == 0x7d)
|
|
{
|
|
ShowConvert("Crome P30");
|
|
}
|
|
// Load Crome P72 Files
|
|
else if (this.GetByteAt(528) == 228 && this.GetByteAt(529) == 0xf8 && this.GetByteAt(530) == 0xa2)
|
|
{
|
|
ShowConvert("Crome P72");
|
|
}
|
|
// Load Crome P13 Files
|
|
else if ((this.GetByteAt(528) == 0x29 && this.GetByteAt(529) == 0x0f && this.GetByteAt(530) == 0xc9) ||
|
|
(this.GetByteAt(528) == 0xc4 && this.GetByteAt(529) == 0xaa && this.GetByteAt(530) == 0x98))
|
|
{
|
|
ShowConvert("Crome P13");
|
|
}
|
|
//Load Neptune Files
|
|
else if (this.GetByteAt(528) == 16 && this.GetByteAt(529) == 0x8a && this.GetByteAt(530) == 0xc4)
|
|
{
|
|
ShowConvert("Neptune");
|
|
}
|
|
|
|
//####################################################
|
|
//Load HTS Files (tie, tiE, ple)
|
|
/*if (((this.GetByteAt(0x7fffL) != 0x65) && (((this.GetByteAt(0x7ffdL) != 0x49) || (this.GetByteAt(0x7ffeL) != 0x54)) || (this.GetByteAt(0x7fffL) != 0x45)))
|
|
&& (((this.GetByteAt(0x7ffdL) != 0x70) || (this.GetByteAt(0x7ffeL) != 0x6c)) || (this.GetByteAt(0x7fffL) != 0x65)))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
this.method_238();
|
|
this.method_226();
|
|
this.method_239();
|
|
this.method_239();
|
|
}*/
|
|
|
|
//####################################################
|
|
//Load BMTune Files
|
|
//48 4F 4E 44 41 54 55 4E 45 53 55 49 54 45 --> HONDATUNESUITE
|
|
//28 43 29 32 30 32 30 20 42 4D 54 75 6E 65 --> (C)2020 BMTune
|
|
|
|
if ((this.GetByteAt(0x7ffaL) == 0x42 && this.GetByteAt(0x7ffbL) == 0x4d && this.GetByteAt(0x7ffcL) == 0x54 && this.GetByteAt(0x7ffdL) == 0x75 && this.GetByteAt(0x7ffeL) == 0x6e && this.GetByteAt(0x7fffL) == 0x65) ||
|
|
(this.GetByteAt(0x7ffaL) == 0x45 && this.GetByteAt(0x7ffbL) == 0x53 && this.GetByteAt(0x7ffcL) == 0x55 && this.GetByteAt(0x7ffdL) == 0x49 && this.GetByteAt(0x7ffeL) == 0x54 && this.GetByteAt(0x7fffL) == 0x45))
|
|
{
|
|
Converting = true;
|
|
|
|
if (this.GetByteAt(0x7ff1L) != 0xff)
|
|
{
|
|
GetRomVersion();
|
|
|
|
if (this.GetByteAt(0x7ffaL) == 0x45 && this.GetByteAt(0x7ffbL) == 0x53 && this.GetByteAt(0x7ffcL) == 0x55 && this.GetByteAt(0x7ffdL) == 0x49 && this.GetByteAt(0x7ffeL) == 0x54 && this.GetByteAt(0x7fffL) == 0x45)
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "This is an HTS File!" + Environment.NewLine + "HTS are made from the stolen source code of BMTune 1.72" + Environment.NewLine + "Thank you for converting this file back to BMTune!", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
|
|
{
|
|
this.SetByteAt(0x61dfL, this.GetByteAt(0x5f74L));
|
|
|
|
this.SetByteAt(this.class13_u_0.long_4PASS, 0xff);
|
|
this.SetByteAt(this.class13_u_0.long_4PASS + 1, 0xff);
|
|
|
|
SetBMTuneCopyrightEnding();
|
|
}
|
|
}
|
|
|
|
//Update Rom
|
|
if (!OpenSilentBRom)
|
|
{
|
|
if (RomVersion < CurrentVersion)
|
|
{
|
|
string FVersion = RomVersion.ToString().Substring(0, 1) + "." + RomVersion.ToString().Substring(1, 1) + RomVersion.ToString().Substring(2, 1);
|
|
string BMVersion = CurrentVersion.ToString().Substring(0, 1) + "." + CurrentVersion.ToString().Substring(1, 1) + CurrentVersion.ToString().Substring(2, 1);
|
|
|
|
if (MessageBox.Show(Form.ActiveForm, "Old baserom version detected!" + Environment.NewLine + "Baserom opened is version " + FVersion + Environment.NewLine + "Current baserom version " + BMVersion + Environment.NewLine + "Do you want to upgrade to v1." + Stable_Version_LAST.ToString("00") + "?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
|
|
ConvertBaseromToLastStable();
|
|
}
|
|
|
|
//unstable baserom
|
|
//LoadBinaryFiles();
|
|
if (!Binary_Files_0.IsStable(RomVersion - 100))
|
|
{
|
|
if (MessageBox.Show(Form.ActiveForm, "This baserom version can be UNSTABLE!" + Environment.NewLine + Environment.NewLine + "Do you want to convert to the last stable baserom(" + "v1." + Stable_Version_LAST.ToString("00") + ")?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
|
|
ConvertBaseromToLastStable();
|
|
}
|
|
//CloseBinaryFiles();
|
|
}
|
|
|
|
//Get Protection
|
|
bool Protected = false;
|
|
GetPWLocation(RomVersion);
|
|
int PWLen = GetPWLenght(RomVersion);
|
|
if (PWLen > 0)
|
|
{
|
|
//###############
|
|
//Reset Bad PW for ROM 1.15
|
|
ResetBadPW();
|
|
//###############
|
|
|
|
for (int i = 0; i < PWLen; i++)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_4PASS + i) != 0xff && this.GetByteAt(this.class13_u_0.long_4PASS + i) != 0x00) Protected = true;
|
|
}
|
|
}
|
|
if (Protected) Protected = TryPass();
|
|
if (!Protected) LoadBMtune();
|
|
}
|
|
else if (this.GetByteAt(0x7ff1L) == 0xff)
|
|
{
|
|
//convert free binary to registered
|
|
if (MessageBox.Show(Form.ActiveForm, "Free baserom version detected!" + Environment.NewLine + "Do you want to upgrade to v1." + Stable_Version_LAST.ToString("00") + "?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
|
|
ConvertBaseromToLastStable();
|
|
|
|
LoadBMtune();
|
|
}
|
|
|
|
Converting = false;
|
|
}
|
|
else
|
|
{
|
|
this.method_68();
|
|
}
|
|
|
|
//Is Loaded ?
|
|
if (!this.method_30_HasFileLoadedInBMTune())
|
|
{
|
|
/*DialogResult result = MessageBox.Show(Form.ActiveForm, "Do you want to open with the OBD0 File Editor?", "BMTune", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
this.method_LoadOBD0(this.method_25_GetFilename());
|
|
}
|
|
else
|
|
{*/
|
|
BinLoadedForSaving = false;
|
|
DialogResult result = MessageBox.Show(Form.ActiveForm, "Unale to open file" + Environment.NewLine + "Do you want to open the file only for saving accessibility?", "BMTune", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
BinLoadedForSaving = true;
|
|
}
|
|
else
|
|
{
|
|
string ThisError = GetFileType();
|
|
MessageBox.Show(Form.ActiveForm, ThisError, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
|
|
this.method_24(null);
|
|
}
|
|
|
|
this.SetFileLoaded(false);
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
if (this.bool_0)
|
|
{
|
|
string fileName = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\tmp.bmc";
|
|
FileInfo info = new FileInfo(fileName);
|
|
if (info.Exists)
|
|
{
|
|
this.method_75(fileName, true, 1);
|
|
}
|
|
info = new FileInfo("");
|
|
this.method_24(info.Name);
|
|
this.method_26_SetFilename("");
|
|
this.method_52();
|
|
this.bool_0 = false;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "This file is too big to open with BMTune", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
/*if (!VWBinLoaded)
|
|
{
|
|
//DialogResult result = MessageBox.Show(Form.ActiveForm, "Do you want to open with the Universal bin file Editor?" + Environment.NewLine + "Clic on No to open as Kserie File", "BMTune", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
|
DialogResult result = MessageBox.Show(Form.ActiveForm, "Do you want to open the file with the Universal bin file Editor?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
this.method_LoadVWTune(this.method_25_GetFilename());
|
|
}
|
|
//if (result == DialogResult.No)
|
|
//{
|
|
// //Open K-Serie file
|
|
// KBinLoaded = true;
|
|
// Bin2KHTS Bin2KHTS_0 = new Bin2KHTS();
|
|
// Bin2KHTS_0.string_0 = this.method_25_GetFilename();
|
|
// Bin2KHTS_0.ShowDialog();
|
|
//}
|
|
}*/
|
|
}
|
|
}
|
|
|
|
private void ResetBadPW()
|
|
{
|
|
GetPWLocation(RomVersion);
|
|
int PWLen = GetPWLenght(RomVersion);
|
|
if (PWLen > 0)
|
|
{
|
|
//###############
|
|
//Reset Bad PW for ROM 1.15
|
|
if (RomVersion == 115)
|
|
{
|
|
bool SameData = true;
|
|
for (int i = 0; i < PWLen; i++)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_4PASS + i) != this.GetByteAt(0x5F88 + i)) SameData = false;
|
|
}
|
|
//Reset Password Data is Same
|
|
if (SameData)
|
|
{
|
|
for (int i = 0; i < PWLen; i++) this.SetByteAt(this.class13_u_0.long_4PASS + i, 0xff);
|
|
}
|
|
}
|
|
//###############
|
|
}
|
|
}
|
|
|
|
public void LoadBinaryFiles()
|
|
{
|
|
/*if (Binary_Files_0 == null)
|
|
{
|
|
Binary_Files_0 = new Binary_Files();
|
|
Binary_Files_0.Load(ref this.Class18_0);
|
|
}
|
|
else
|
|
{
|
|
Binary_Files_0.ReloadRoms();
|
|
}*/
|
|
|
|
if (Binary_Files_0 != null) Binary_Files_0 = null;
|
|
Binary_Files_0 = new Binary_Files();
|
|
Binary_Files_0.Load(ref this.Class18_0);
|
|
}
|
|
|
|
/*public void method_238()
|
|
{
|
|
try
|
|
{
|
|
string s = ((int)this.GetByteAt(0x7fefL)).ToString() + ((int)this.GetByteAt(0x7ff0L)).ToString() + ((int)this.GetByteAt(0x7ff1L)).ToString();
|
|
this.RomVersion = int.Parse(s);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
string text1;
|
|
if (exception != null)
|
|
{
|
|
text1 = exception.ToString();
|
|
}
|
|
else
|
|
{
|
|
Exception local1 = exception;
|
|
text1 = null;
|
|
}
|
|
this.class17_0.frmMain_0.LogThis("Baserom Error Getting Version :\n" + text1);
|
|
}
|
|
//this.method_226();
|
|
if (this.RomVersion < 100)
|
|
{
|
|
this.RomVersion = 100;
|
|
}
|
|
//this.method_227();
|
|
}
|
|
|
|
public void method_239()
|
|
{
|
|
this.method_238();
|
|
Class14 class2 = new Class14();
|
|
class2.method_0(ref this.class13_0);
|
|
class2.method_1(this.RomVersion);
|
|
class2 = null;
|
|
if (this.RomVersion >= 0x6f)
|
|
{
|
|
this.method_236_HTSRomLoading();
|
|
}
|
|
this.SetFileLoaded(true);
|
|
}*/
|
|
|
|
public void method_236_HTSRomLoading()
|
|
{
|
|
/*this.method_235();
|
|
Class14 class2 = new Class14();
|
|
class2.method_0(ref this.class13_0);
|
|
class2.method_1(this.RomVersion);
|
|
class2 = null;
|
|
this.method_241();
|
|
this.SetByteAt(0x7ff2L, 0x48);
|
|
this.SetByteAt(0x7ff3L, 0x4f);
|
|
this.SetByteAt(0x7ff4L, 0x4e);
|
|
this.SetByteAt(0x7ff5L, 0x44);
|
|
this.SetByteAt(0x7ff6L, 0x41);
|
|
this.SetByteAt(0x7ff7L, 0x54);
|
|
this.SetByteAt(0x7ff8L, 0x55);
|
|
this.SetByteAt(0x7ff9L, 0x4e);
|
|
this.SetByteAt(0x7ffaL, 0x45);
|
|
this.SetByteAt(0x7ffbL, 0x53);
|
|
this.SetByteAt(0x7ffcL, 0x55);
|
|
this.SetByteAt(0x7ffdL, 0x49);
|
|
this.SetByteAt(0x7ffeL, 0x54);
|
|
this.SetByteAt(0x7fffL, 0x45);
|
|
if (this.RomVersion == 0x73)
|
|
{
|
|
this.method_237();
|
|
}*/
|
|
/*else if (this.RomVersion != 110)
|
|
{
|
|
if ((this.RomVersion == 0x71) || (this.RomVersion == 0x72))
|
|
{
|
|
MessageBox.Show("There are issues with this rom please export your settings/tables and import them into either 1.00/1.01/1.10/1.15 Rom");
|
|
}
|
|
else if ((this.RomVersion == 100) || (this.RomVersion == 0x65))
|
|
{
|
|
this.method_9();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("There are issues with this rom please export your settings/tables and import them into either 1.00/1.01/1.10/1.15 Rom");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.method_26(this.class13_u_0.long_306) >= 100) this.method_23(this.class13_u_0.long_306, 5);
|
|
if (this.method_26(this.class13_u_0.long_307) >= 100) this.method_23(this.class13_u_0.long_307, 20);
|
|
if (this.method_26(this.class13_u_0.long_308) >= 100) this.method_23(this.class13_u_0.long_308, 0x20);
|
|
if (this.method_105(this.method_26(this.class13_u_0.long_309)) >= 241.0) this.method_27(this.class13_u_0.long_309, 0L);
|
|
if (this.method_26(this.class13_u_0.long_310) >= 0xf1) this.method_23(this.class13_u_0.long_310, 0);
|
|
}*/
|
|
}
|
|
|
|
public void CloseBinaryFiles()
|
|
{
|
|
if (Binary_Files_0 != null) Binary_Files_0 = null;
|
|
}
|
|
|
|
public void ConvertBaseromToLastStable()
|
|
{
|
|
ConvertedToStable = true;
|
|
ConvertBaseromVersionToVersion(Stable_Version_LAST + 100);
|
|
}
|
|
|
|
public void ConvertBaserom(string Type)
|
|
{
|
|
//LoadBinaryFiles();
|
|
Converting = true;
|
|
if (Type == "3.3.3")
|
|
{
|
|
int CurrentI = 0;
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
if (i == 0) i = 0x5D10;
|
|
if (i >= 0x5D10 && i < (0x5D10 + 128))
|
|
{
|
|
SetByteAt(0x5ea6L + CurrentI, this.GetByteAt(0x5D10L + CurrentI));
|
|
SetByteAt(0x5D10L + CurrentI, Binary_Files_0.ThisBytesL[Stable_Version_LAST][0x5D10L + CurrentI]);
|
|
CurrentI++;
|
|
if (CurrentI >= 127) i += 350;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (Type == "eCtune")
|
|
{
|
|
GetRomVersion();
|
|
int PWLen = GetPWLenght(RomVersion);
|
|
GetPWLocation(RomVersion);
|
|
if (PWLen > 0)
|
|
{
|
|
for (int i = 0; i < PWLen; i++)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_4PASS + i) != 0xff) SetByteAt(this.class13_u_0.long_4PASS + i, 0xff);
|
|
}
|
|
}
|
|
}
|
|
|
|
ConvertBaseromToLastStable();
|
|
//CloseBinaryFiles();
|
|
}
|
|
|
|
public void GetPWLocation(int TVersion)
|
|
{
|
|
long ReturningLocation = 0x5ea6L;
|
|
if (TVersion <= 109) ReturningLocation = 0x5ea6L;
|
|
if (TVersion == 110) ReturningLocation = 0x5f01L;
|
|
if (TVersion >= 111 && TVersion < 113) ReturningLocation = 0x5ed1L;
|
|
if (TVersion == 113) ReturningLocation = 0x5f04L;
|
|
if (TVersion >= 114) ReturningLocation = 0x5f74L;
|
|
if (TVersion >= 116) ReturningLocation = 0x6066L;
|
|
|
|
this.class13_u_0.long_4PASS = ReturningLocation;
|
|
//if (LoadToC10) this.class13_u_0.long_4PASS = ReturningLocation;
|
|
//return ReturningLocation;
|
|
}
|
|
|
|
public int GetPWLenght(int TVersion)
|
|
{
|
|
if (TVersion <= 109) return 64;
|
|
if (TVersion == 110) return 16;
|
|
if (TVersion >= 111 && TVersion < 113) return 16;
|
|
if (TVersion == 113) return 0;
|
|
if (TVersion >= 114) return 16;
|
|
|
|
return 0;
|
|
}
|
|
|
|
private byte[] GetPWBuffer(int fromlong)
|
|
{
|
|
GetPWLocation(fromlong);
|
|
int PLenght = 16;
|
|
byte[] bufferPass = new byte[PLenght];
|
|
for (int i = 0; i < bufferPass.Length; i++) bufferPass[i] = GetByteAt(this.class13_u_0.long_4PASS + i);
|
|
|
|
return bufferPass;
|
|
}
|
|
|
|
public void ConvertBaseromVersionToVersion(int TVersion)
|
|
{
|
|
LoadBinaryFiles();
|
|
int OldVersion = RomVersion;
|
|
|
|
//#################################################
|
|
if (OldVersion >= 116 && TVersion <= 115)
|
|
{
|
|
string FromV = "V1." + (OldVersion - 100);
|
|
string ToV = "V1." + (TVersion - 100);
|
|
if (MessageBox.Show(Form.ActiveForm, "We can't convert baserom " + FromV + " to " + ToV + "!" + Environment.NewLine + "You should create a new baserom " + ToV + " and manually copy parameters", "BMTune", MessageBoxButtons.OK, MessageBoxIcon.Hand) == DialogResult.OK)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
if (Path.GetFileName(this.method_25_GetFilename()) != "New Baserom")
|
|
{
|
|
if (OldVersion <= 115 && TVersion >= 116)
|
|
{
|
|
//string FromV = "V1." + (OldVersion - 100);
|
|
string ToV = "V1." + (TVersion - 100);
|
|
if (MessageBox.Show(Form.ActiveForm, "If you convert to baserom " + ToV + ", you won't be able to convert" + Environment.NewLine + "back to baserom 1.15 or an older version." + Environment.NewLine + "Are you sure you want to continue?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Hand) == DialogResult.No)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
//#################################################
|
|
|
|
//Converting 1.13 and less to 1.15 before 1.16
|
|
if (OldVersion < 114 && TVersion >= 116) ConvertBrmVToV(115); //Convert to 1.15 before any greater version
|
|
if (OldVersion < 115 && TVersion >= 117) ConvertBrmVToV(116); //Convert to 1.16 before any greater version
|
|
if (OldVersion < 116 && TVersion >= 118) ConvertBrmVToV(117); //Convert to 1.17 before any greater version
|
|
if (OldVersion < 117 && TVersion >= 119) ConvertBrmVToV(118); //Convert to 1.18 before any greater version
|
|
if (OldVersion < 118 && TVersion >= 120) ConvertBrmVToV(119); //Convert to 1.19 before any greater version
|
|
if (OldVersion < 119 && TVersion >= 120) ConvertBrmVToV(120); //Convert to 1.20 before any greater version
|
|
|
|
//Converting 1.16 and more to 1.15 before 1.13 or less
|
|
if (OldVersion >= 116 && TVersion < 114) ConvertBrmVToV(115);
|
|
|
|
//Convert to Actual Version
|
|
ConvertBrmVToV(TVersion);
|
|
|
|
|
|
//###############
|
|
//Reset Bad PW for ROM 1.13 to 1.15
|
|
if (OldVersion == 113 && TVersion >= 116)
|
|
{
|
|
GetPWLocation(TVersion);
|
|
for (int i = 0; i < 16; i++)
|
|
{
|
|
SetByteAt(this.class13_u_0.long_4PASS + i, 0xff);
|
|
}
|
|
}
|
|
//###############
|
|
//Reset Bad PW for ROM 1.15
|
|
ResetBadPW();
|
|
//###############
|
|
//Reset Possible Corrupted Bytes when converting to rom 1.16
|
|
if (TVersion == 116)
|
|
{
|
|
byte[] CorrectedBytesArray1 = new byte[] {0xF5, 0x7A, 0xD6, 0x7B, 0xC6, 0x7A, 0xF5, 0x59, 0xD6, 0x5F };
|
|
int CurrentByteDoing1 = 0;
|
|
for (int i = 0x3647; i < 0x3647 + 10; i++)
|
|
{
|
|
SetByteAt(i, CorrectedBytesArray1[CurrentByteDoing1]);
|
|
CurrentByteDoing1++;
|
|
}
|
|
|
|
SetByteAt(0x3918, 0xDD);
|
|
SetByteAt(0x3919, 0x16);
|
|
SetByteAt(0x391A, 0x1C);
|
|
|
|
SetByteAt(0x393B, 0xDD);
|
|
SetByteAt(0x393C, 0x16);
|
|
SetByteAt(0x393D, 0x14);
|
|
|
|
byte[] CorrectedBytesArray2 = new byte[] {0xF0, 0x39, 0x04, 0x60, 0xC1, 0x60, 0x32, 0x81, 0x49, 0x90, 0x15, 0xD0, 0x3C, 0x04, 0x01, 0x62,
|
|
0xE6, 0x00, 0xE2, 0xCE, 0x04, 0x32, 0xC7, 0x5B, 0x01, 0x32, 0xC7, 0x5B, 0x42, 0x01, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
|
|
|
int CurrentByteDoing2 = 0;
|
|
for (int i = 0x5f87; i < 0x5f87 + 41; i++)
|
|
{
|
|
SetByteAt(i, CorrectedBytesArray2[CurrentByteDoing2]);
|
|
CurrentByteDoing2++;
|
|
}
|
|
}
|
|
//###############
|
|
|
|
GlitchTestingTimer = 0;
|
|
}
|
|
|
|
|
|
private void ConvertBrmVToV(int TVersion)
|
|
{
|
|
Converting = true;
|
|
|
|
int OldVersion = RomVersion;
|
|
int MaxVersion = 100 + (Binary_Files_0.ThisBytesL.Count - 1);
|
|
|
|
int PLenght = 16;
|
|
byte[] bufferPass = new byte[PLenght];
|
|
for (int i = 0; i < bufferPass.Length; i++) bufferPass[i] = 0xff;
|
|
bufferPass = GetPWBuffer(OldVersion);
|
|
|
|
string VersionStr = TVersion.ToString();
|
|
this.class17_0.frmMain_0.LogThis("Converting Baserom to version:" + VersionStr.Substring(0, 1) + "." + VersionStr.Substring(1));
|
|
|
|
//Only convert if new and old version are greater than 100 and lower than max version number
|
|
if ((TVersion >= 100 && TVersion <= MaxVersion)
|
|
&& (OldVersion >= 100 && OldVersion <= MaxVersion))
|
|
{
|
|
byte[] buffer = new byte[] { };
|
|
if (TVersion >= 102 && TVersion < 108)
|
|
{
|
|
//Load Ignition Cut Mod for Rom 1.02 to 1.08
|
|
if (this.class10_settings_0.ICutModInstall == "")
|
|
{
|
|
frmIgnCutModWarning frmIgnCutModWarning_0 = new frmIgnCutModWarning(ref this.Class18_0);
|
|
DialogResult result = frmIgnCutModWarning_0.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
if (frmIgnCutModWarning_0.InstallMod) buffer = Binary_Files_0.ThisBytesL[TVersion - 100];
|
|
else buffer = Binary_Files_0.ThisBytesL_NOMOD[TVersion - 100];
|
|
}
|
|
}
|
|
else if (this.class10_settings_0.ICutModInstall == "false") buffer = Binary_Files_0.ThisBytesL_NOMOD[TVersion - 100];
|
|
else if (this.class10_settings_0.ICutModInstall == "true") buffer = Binary_Files_0.ThisBytesL[TVersion - 100];
|
|
}
|
|
else
|
|
{
|
|
//Load Current ROM Binaries
|
|
buffer = Binary_Files_0.ThisBytesL[TVersion - 100];
|
|
}
|
|
|
|
if (OldVersion < 114 && (TVersion == 114 || TVersion == 115))
|
|
{
|
|
//for (int i = 0x5f05; i < 0x5f87; i++) buffer[i] = Binary_Files_0.ThisBytesL[TVersion - 100][i];
|
|
|
|
for (int i = 0x5f05; i < GetByteLenght(); i++)
|
|
{
|
|
if (i < 0x5fb3) buffer[i + 132] = GetByteAt(i); //from old 0x5f05++ calibration to 0x5f89++
|
|
if (i >= 0x5fc9 && i < 0x6057) buffer[i + 110] = GetByteAt(i); //from old 0x5fc9++ calibration to 0x6037++
|
|
if (i >= 0x60c5) i = GetByteLenght() + 1; //return break
|
|
}
|
|
}
|
|
|
|
if ((OldVersion == 114 || OldVersion == 115) && TVersion < 114)
|
|
{
|
|
for (int i = 0x5f05; i < GetByteLenght(); i++)
|
|
{
|
|
if (i < 0x5fb3) buffer[i] = GetByteAt(i + 132);
|
|
if (i >= 0x5fc9 && i < 0x6057) buffer[i] = GetByteAt(i + 110);
|
|
if (i >= 0x60c5) i = GetByteLenght() + 1;
|
|
}
|
|
}
|
|
//########################################################
|
|
if ((OldVersion == 114 || OldVersion == 115) && TVersion >= 116)
|
|
{
|
|
//606e = new calibration area
|
|
//for (int i = 0x5f05; i < 0x606e - 1; i++) buffer[i] = Binary_Files_0.ThisBytesL[TVersion - 100][i]; //edit this location
|
|
|
|
for (int i = 0x5f88; i < GetByteLenght(); i++)
|
|
{
|
|
if (i < 0x636e) buffer[i + 48 + 12 + 28 + 108 + 11 + 78] = GetByteAt(i);
|
|
if (i >= 0x639e && i < 0x647d) buffer[i + 12 + 28 + 108 + 11 + 78] = GetByteAt(i);
|
|
if (i >= 0x648a && i < 0x6557) buffer[i + 28 + 108 + 11 + 78] = GetByteAt(i);
|
|
if (i >= 0x6573 && i < 0x6607) buffer[i + 108 + 11 + 78] = GetByteAt(i);
|
|
if (i >= 0x664f && i < 0x67cf) buffer[i + 11 + 78] = GetByteAt(i);
|
|
if (i >= 0x67da && i < 0x687d) buffer[i + 78] = GetByteAt(i);
|
|
//if (i >= 0x6895 && i < 0x68cb) buffer[i + 36] = GetByteAt(i);
|
|
if (i >= 0x68cb) i = GetByteLenght() + 1; //return break
|
|
}
|
|
}
|
|
if (OldVersion >= 116 && (TVersion == 114 || TVersion == 115))
|
|
{
|
|
for (int i = 0x5f88; i < GetByteLenght(); i++)
|
|
{
|
|
if (i < 0x636e) buffer[i] = GetByteAt(i + 48 + 12 + 28 + 108 + 11 + 78);
|
|
if (i >= 0x639e && i < 0x647d) buffer[i] = GetByteAt(i + 12 + 28 + 108 + 11 + 78);
|
|
if (i >= 0x648a && i < 0x6557) buffer[i] = GetByteAt(i + 28 + 108 + 11 + 78);
|
|
if (i >= 0x6573 && i < 0x6607) buffer[i] = GetByteAt(i + 108 + 11 + 78);
|
|
if (i >= 0x664f && i < 0x67cf) buffer[i] = GetByteAt(i + 11 + 78);
|
|
if (i >= 0x67da && i < 0x687d) buffer[i] = GetByteAt(i + 78);
|
|
//if (i >= 0x6895 && i < 0x68cb) buffer[i] = GetByteAt(i + 36);
|
|
if (i >= 0x68cb) i = GetByteLenght() + 1; //return break
|
|
}
|
|
}
|
|
|
|
//#############################
|
|
//set all bytes from new baserom
|
|
long MostLastestTableLocation = 0x5f05L;
|
|
if ((OldVersion < 114 && TVersion >= 114) || (OldVersion >= 114 && TVersion < 114)) MostLastestTableLocation = 0x60c5L;
|
|
if (OldVersion >= 114 && TVersion >= 114) MostLastestTableLocation = 0x5f80L;
|
|
if ((OldVersion == 114 || OldVersion == 115) && TVersion >= 116) MostLastestTableLocation = 0x68cbL;
|
|
if (OldVersion >= 116 && (TVersion == 114 || TVersion == 115)) MostLastestTableLocation = 0x5f80L;
|
|
if (OldVersion >= 116 && TVersion >= 116) MostLastestTableLocation = 0x606eL;
|
|
for (int i = 0; i < GetByteLenght(); i++)
|
|
{
|
|
if (i < MostLastestTableLocation) SetByteAt(i, buffer[i]);
|
|
else i = GetByteLenght() + 1;
|
|
}
|
|
//#############################
|
|
RomVersion = TVersion;
|
|
|
|
ResetBaseromParameters();
|
|
|
|
//Rev Limiter Extra Mod and Time Mod
|
|
/*if (OldVersion <= 114 && RomVersion >= 114)
|
|
{
|
|
//this.method_151(this.class13_u_0.long_423, (long)(60f * 4f)); //60FV
|
|
if (this.GetByteAt(this.class13_u_0.long_424) == 0xff) this.SetByteAt(this.class13_u_0.long_424, (byte)((-6 + 6) * 4f)); //-6 ign retard
|
|
|
|
if (this.GetByteAt(this.class13_u_0.long_420) == 0xff) this.SetByteAt(this.class13_u_0.long_420, (byte)(70 / 10)); //70ms
|
|
if (this.GetByteAt(this.class13_u_0.long_421) == 0xff) this.SetByteAt(this.class13_u_0.long_421, (byte)(70 / 10)); //70ms
|
|
if (this.GetByteAt(this.class13_u_0.long_422) == 0xff) this.SetByteAt(this.class13_u_0.long_422, (byte)(70 / 10)); //70ms
|
|
}*/
|
|
|
|
|
|
//flex fuel cranking compasation
|
|
if (OldVersion <= 115 && RomVersion >= 116)
|
|
{
|
|
for (int i = 0; i < Binary_Files_0.ThisBytes116_Reload.Length; i++) SetByteAt(this.class13_u_0.long_463 + i, Binary_Files_0.ThisBytes116_Reload[i]);
|
|
|
|
//CPR Enable SYNC on ALT-Control
|
|
this.method_149_SetByte(this.class13_u_0.long_521, 0);
|
|
}
|
|
|
|
//rev limiter cutting type input (rom 1.18)
|
|
if (OldVersion < 118 && RomVersion >= 118)
|
|
{
|
|
SetByteAt(this.class13_u_0.long_520, 0x03);
|
|
SetByteAt(this.class13_u_0.long_71, 0x00); //Rev Limiter input... set to 0x80 for 'Always On'
|
|
SetByteAt(this.class13_u_0.long_72, 0x00); //Invert Input ... set to 0xff for inverted
|
|
}
|
|
//rev limiter cutting type (rom 1.18)
|
|
if (OldVersion >= 118 && RomVersion < 118)
|
|
{
|
|
SetByteAt(this.class13_u_0.long_71, 0x00); //fuelcut enabled
|
|
SetByteAt(this.class13_u_0.long_72, 0x00); //igncut disabled
|
|
}
|
|
|
|
//CEL Fix rom 1.20, 1.21++
|
|
if (OldVersion < 119 && (RomVersion == 120 || RomVersion == 121))
|
|
{
|
|
SetByteAt(0x5E97L, 0xCA);
|
|
}
|
|
|
|
//corrupted reference fix
|
|
if (OldVersion < 120 && RomVersion >= 121)
|
|
{
|
|
SetByteAt(0x608fL, 0x00);
|
|
SetByteAt(0x608fL+1, 0x5a);
|
|
}
|
|
|
|
//recheck pass if its same as before
|
|
byte[] bufferPass2 = new byte[PLenght];
|
|
bufferPass2 = GetPWBuffer(TVersion);
|
|
|
|
bool SamePassAsBefore = true;
|
|
for (int i = 0; i < bufferPass.Length; i++)
|
|
{
|
|
if (bufferPass[i] != bufferPass2[i]) SamePassAsBefore = false;
|
|
}
|
|
|
|
if (!SamePassAsBefore)
|
|
{
|
|
for (int i = 0; i < bufferPass.Length; i++) SetByteAt(this.class13_u_0.long_4PASS + i, bufferPass[i]);
|
|
}
|
|
}
|
|
|
|
Converting = false;
|
|
//CloseBinaryFiles();
|
|
}
|
|
|
|
public void ReloadAntitheft()
|
|
{
|
|
this.method_149_SetByte(this.class13_u_0.long_430, 0);
|
|
this.method_149_SetByte(this.class13_u_0.long_431, 0);
|
|
this.method_149_SetByte(this.class13_u_0.long_432, 0);
|
|
this.method_149_SetByte(this.class13_u_0.long_433, 0);
|
|
this.method_149_SetByte(this.class13_u_0.long_434, 0);
|
|
|
|
//this.method_149(this.class13_0.long_435, 0);
|
|
//this.method_149(this.class13_0.long_436, 0x4a);
|
|
//this.method_149(this.class13_0.long_437, 0x7d);
|
|
|
|
this.method_151(this.class13_u_0.long_438, this.method_219(2500));
|
|
this.method_149_SetByte(this.class13_u_0.long_439, 0);
|
|
}
|
|
|
|
private void SetBMTuneCopyrightEnding()
|
|
{
|
|
//Set '(C)2021 BMTune'
|
|
SetByteAt(0x7ff2L, 0x28); SetByteAt(0x7ff3L, 0x43); SetByteAt(0x7ff4L, 0x29); //(C)
|
|
SetByteAt(0x7ff5L, 0x32); SetByteAt(0x7ff6L, 0x30); SetByteAt(0x7ff7L, 0x32); SetByteAt(0x7ff8L, 0x31); //2021
|
|
SetByteAt(0x7ff9L, 0x20); //
|
|
SetByteAt(0x7ffaL, 0x42); //B
|
|
SetByteAt(0x7ffbL, 0x4D); //M
|
|
SetByteAt(0x7ffcL, 0x54); //T
|
|
SetByteAt(0x7ffdL, 0x75); //u
|
|
SetByteAt(0x7ffeL, 0x6E); //n
|
|
SetByteAt(0x7fffL, 0x65); //e
|
|
}
|
|
|
|
public void ResetBaseromParameters()
|
|
{
|
|
//Set Version
|
|
SetByteAt(0x7fefL, (byte)int.Parse(RomVersion.ToString().Substring(0, 1)));
|
|
SetByteAt(0x7ff0L, (byte)int.Parse(RomVersion.ToString().Substring(1, 1)));
|
|
SetByteAt(0x7ff1L, (byte)int.Parse(RomVersion.ToString().Substring(2, 1)));
|
|
SetBMTuneCopyrightEnding();
|
|
|
|
//Load parameters Long (area) locations
|
|
//method_145();
|
|
this.LastLocationLoaded = -1;
|
|
class32_Locations_0.ResetAddresseForVersion(RomVersion);
|
|
|
|
ResetInjector();
|
|
//InstallCYPMod();
|
|
|
|
//Reload Ign Cut Delay
|
|
if (RomVersion >= 103 && GetByteAt(this.class13_u_0.long_420) >= 100) SetByteAt(this.class13_u_0.long_420, 0x07);
|
|
|
|
//Reload Antitheft
|
|
if (RomVersion >= 104)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_430) == 0xff) this.ReloadAntitheft();
|
|
if (this.GetByteAt(this.class13_u_0.long_431) == 0xff) this.ReloadAntitheft();
|
|
if (this.GetByteAt(this.class13_u_0.long_432) == 0xff) this.ReloadAntitheft();
|
|
if (this.GetByteAt(this.class13_u_0.long_433) == 0xff) this.ReloadAntitheft();
|
|
if (this.GetByteAt(this.class13_u_0.long_434) == 0xff) this.ReloadAntitheft();
|
|
//if (this.method_150(this.class13_0.long_436) == 0xff && this.method_150(this.class13_0.long_437) == 0xff) this.ReloadAntitheft();
|
|
}
|
|
|
|
if (RomVersion >= 109)
|
|
{
|
|
//if (GetByteAt(this.class13_u_0.long_420) >= 100) this.method_149_SetByte(this.class13_u_0.long_420, 0x07); //ign cut delay
|
|
if (GetByteAt(this.class13_u_0.long_421) >= 100) this.method_149_SetByte(this.class13_u_0.long_421, 0x07); //ign cut ftl delay
|
|
if (GetByteAt(this.class13_u_0.long_422) >= 100) this.method_149_SetByte(this.class13_u_0.long_422, 0x07); //ign cut fts delay
|
|
if (this.method_223((int)this.method_152(this.class13_u_0.long_423)) >= 241) this.method_151(this.class13_u_0.long_423, (long)(60f * 4f)); //ign cut Enrichment 100FV
|
|
if (GetByteAt(this.class13_u_0.long_424) >= 241) this.method_149_SetByte(this.class13_u_0.long_424, 0x00); //ign cut Retard
|
|
}
|
|
if (RomVersion >= 111)
|
|
{
|
|
if (GetByteAt(this.class13_u_0.long_461) == 0xff && GetByteAt(this.class13_u_0.long_461 + 1) == 0xff && GetByteAt(this.class13_u_0.long_461 + 2) == 0xff)
|
|
{
|
|
//reload flex fuel tables
|
|
//LoadBinaryFiles();
|
|
for (int i = 0; i < Binary_Files_0.ThisBytes109_Reload.Length; i++) SetByteAt(this.class13_u_0.long_461 + i, Binary_Files_0.ThisBytes109_Reload[i]);
|
|
//CloseBinaryFiles();
|
|
|
|
//flex fuel input
|
|
this.method_149_SetByte(this.class13_u_0.long_466, 0);
|
|
|
|
//flex fuel table
|
|
if (this.class13_u_0.long_461 != 0L) for (int i = 0; i < 6; i++) this.method_151(this.class13_u_0.long_461 + (i * 3) + 1L, (long)0f);
|
|
//if (this.class13_u_0.long_463 != 0L) for (int i = 0; i < 6; i++) this.method_151(this.class13_u_0.long_463 + (i * 3) + 1L, (long)0f);
|
|
if (this.class13_u_0.long_464 != 0L) for (int i = 0; i < 6; i++) this.method_149_SetByte(this.class13_u_0.long_464 + (i * 2) + 1L, (byte)0f);
|
|
}
|
|
}
|
|
if (RomVersion >= 116)
|
|
{
|
|
//COP / CPR Coil on Plugs Retrofit options disabled
|
|
if (GetByteAt(this.class13_u_0.long_521) != 0xff && GetByteAt(this.class13_u_0.long_521) != 0x00) this.method_149_SetByte(this.class13_u_0.long_521, 0);
|
|
if (GetByteAt(this.class13_u_0.long_522) != 0xff && GetByteAt(this.class13_u_0.long_522) != 0x00) this.method_149_SetByte(this.class13_u_0.long_522, 0);
|
|
if (GetByteAt(this.class13_u_0.long_523) != 0xff && GetByteAt(this.class13_u_0.long_523) != 0x00) this.method_149_SetByte(this.class13_u_0.long_523, 0);
|
|
|
|
//Ign Cut on decel Disabled
|
|
//if (GetByteAt(this.class13_u_0.long_520) != 0xff && GetByteAt(this.class13_u_0.long_520) != 0x00) this.method_149_SetByte(this.class13_u_0.long_520, 0);
|
|
}
|
|
if (RomVersion == 120 || RomVersion == 121)
|
|
{
|
|
if (GetByteAt(0x1508L) == 0x00) this.method_149_SetByte(0x1508L, 0x0f); //CPR fix for rom 1.20
|
|
this.method_149_SetByte(0x5E97L, 0xCA); //CEL Light Fix
|
|
}
|
|
|
|
//this.method_149_SetByte(this.class13_u_0.long_404, this.method_230(65)); //65 degree ECT
|
|
//this.method_149_SetByte(this.class13_u_0.long_406, this.method_230(25)); //25 degree IAT
|
|
//this.method_149_SetByte(this.class13_u_0.long_400, this.method_233(15)); //15 km/h VSS
|
|
|
|
TryFixECTBug();
|
|
}
|
|
|
|
private void TryFixECTBug()
|
|
{
|
|
//0x77 or 0xa3 (0xa3 has NOT ECT Disable function) equal 0x0c
|
|
//0x77 or 0xd9 (0xa3 has NOT IAT Disable function) equal 0x13
|
|
//0xce or 0xdb (0xdb has NOT VSS Disable function) equal 0x1f **VSS check at +1**
|
|
|
|
if (this.class13_u_0.long_403 != 0xf005L)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_403 - 1) == 0x77 && this.GetByteAt(this.class13_u_0.long_403) != 0x00 && this.GetByteAt(this.class13_u_0.long_403) != 0xff) this.method_149_SetByte(this.class13_u_0.long_403, 0x00);
|
|
if (this.GetByteAt(this.class13_u_0.long_403 - 1) == 0xa3 && this.GetByteAt(this.class13_u_0.long_403) != 0x0c) this.method_149_SetByte(this.class13_u_0.long_403, 0x0c);
|
|
}
|
|
|
|
if (this.class13_u_0.long_405 != 0xf001L)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_405 - 1) == 0x77 && this.GetByteAt(this.class13_u_0.long_405) != 0x00 && this.GetByteAt(this.class13_u_0.long_405) != 0xff) this.method_149_SetByte(this.class13_u_0.long_405, 0x00);
|
|
if (this.GetByteAt(this.class13_u_0.long_405 - 1) == 0xd9 && this.GetByteAt(this.class13_u_0.long_405) != 0x13) this.method_149_SetByte(this.class13_u_0.long_405, 0x13);
|
|
|
|
}
|
|
|
|
if (this.class13_u_0.long_401 != 0xf006L)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_401 + 1) == 0xce && this.GetByteAt(this.class13_u_0.long_401) != 0x00 && this.GetByteAt(this.class13_u_0.long_401) != 0xff) this.method_149_SetByte(this.class13_u_0.long_401, 0x00);
|
|
if (this.GetByteAt(this.class13_u_0.long_401 + 1) == 0xdb && this.GetByteAt(this.class13_u_0.long_401) != 0x1f) this.method_149_SetByte(this.class13_u_0.long_401, 0x1f);
|
|
}
|
|
}
|
|
|
|
public void GetRomVersion()
|
|
{
|
|
if (this.GetByteAt(0x7ff1L) != 0xff)
|
|
{
|
|
try
|
|
{
|
|
string VStr = ((int)(this.GetByteAt(0x7fefL))).ToString() + ((int)(this.GetByteAt(0x7ff0L))).ToString() + ((int)(this.GetByteAt(0x7ff1L))).ToString();
|
|
RomVersion = int.Parse(VStr);
|
|
}
|
|
catch (Exception message) {
|
|
this.class17_0.frmMain_0.LogThis("Baserom Error Getting Version :" + Environment.NewLine + "" + message);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
RomVersion = 100;
|
|
}
|
|
|
|
//LoadBinaryFiles();
|
|
if (RomVersion < 100) RomVersion = 100;
|
|
if (RomVersion > Binary_Files_0.ThisBytesL.Count + 100 - 1) RomVersion = Binary_Files_0.ThisBytesL.Count + 100 - 1;
|
|
//CloseBinaryFiles();
|
|
}
|
|
|
|
public void LoadBMtune()
|
|
{
|
|
Glitched = false;
|
|
|
|
GetRomVersion();
|
|
class32_Locations_0.ResetAddresseForVersion(RomVersion);
|
|
|
|
//SetBMTune_Baserom();
|
|
if (RomVersion < 111) ConvertBaseromVersionToVersion(RomVersion);
|
|
else ResetBaseromParameters();
|
|
|
|
GlitchTestingTimer = 0;
|
|
|
|
//this.method_26(this.string_5);
|
|
this.SetFileLoaded(true);
|
|
}
|
|
|
|
private string GetFileType()
|
|
{
|
|
//0x0210 = 528 ... eCtune=196, P30=71, Gold=137, P72=228, Neptune=16, P28=212
|
|
//Get Other Softwares
|
|
string Error_Str = "";
|
|
if (this.GetByteAt(528) == 0x2e && this.GetByteAt(529) == 0xf9 && this.GetByteAt(530) == 0x7d) Error_Str = "This is a Crome P30 file" + Environment.NewLine + "Open this file with Crome";
|
|
else if (this.GetByteAt(528) == 228 && this.GetByteAt(529) == 0xf8 && this.GetByteAt(530) == 0xa2) Error_Str = "This is a Crome P72 file" + Environment.NewLine + "Open this file with Crome";
|
|
else if (this.GetByteAt(528) == 212 && this.GetByteAt(529) == 0x1a && this.GetByteAt(530) == 0x02) Error_Str = "This is a Crome P28 file" + Environment.NewLine + "Open this file with Crome";
|
|
else if ((this.GetByteAt(528) == 0x29 && this.GetByteAt(529) == 0x0f && this.GetByteAt(530) == 0xc9) ||
|
|
(this.GetByteAt(528) == 0xc4 && this.GetByteAt(529) == 0xaa && this.GetByteAt(530) == 0x98)) Error_Str = "This is a Crome P13 file" + Environment.NewLine + "Open this file with Crome";
|
|
else if (this.GetByteAt(528) == 137 && this.GetByteAt(529) == 0xc6 && this.GetByteAt(530) == 0xab) Error_Str = "This is a Crome Gold file" + Environment.NewLine + "Open this file with Crome" + Environment.NewLine + "OR BUY BMTUNE TO IMPORT IT";
|
|
else if (this.GetByteAt(528) == 19) Error_Str = "This is possibly a Hondata S200 file" + Environment.NewLine + "Open this file with Hondata";
|
|
else if (this.GetByteAt(528) == 16 && this.GetByteAt(529) == 0x8a && this.GetByteAt(530) == 0xc4) Error_Str = "This is a Neptune file" + Environment.NewLine + "Open this file with Neptune" + Environment.NewLine + "OR BUY BMTUNE TO IMPORT IT";
|
|
if ((this.method_152(0x7fefL) == 0x4365L) && (this.method_152(0x7ff1L) == 0xa974L)) Error_Str = "This is a eCtune file" + Environment.NewLine + "Open this file with eCtune" + Environment.NewLine + "OR BUY BMTUNE TO IMPORT IT";
|
|
if (Error_Str == "") Error_Str = "Can't load the file!";
|
|
return Error_Str;
|
|
}
|
|
|
|
private void ResetInjector()
|
|
{
|
|
int ThisI = GetInjIndex();
|
|
if (this.GetByteAt(this.class13_u_0.long_81) != ThisI) SetByteAt(this.class13_u_0.long_81, (byte)ThisI);
|
|
}
|
|
|
|
private int GetInjIndex()
|
|
{
|
|
int ThatI = this.class24_u_0.Count - 1; //set to custom injector automatically if not found
|
|
|
|
byte[] Vdouble_byte = new byte[7];
|
|
byte[] Vdouble_byte2 = new byte[7];
|
|
long[] Tdouble_byte = new long[7];
|
|
long[] Tdouble_byte2 = new long[7];
|
|
for (int i = 0; i < 7; i++) Vdouble_byte[i] = this.GetByteAt(this.class13_u_0.long_185 + (i * 3));
|
|
for (int i = 0; i < 7; i++) Tdouble_byte[i] = this.method_152(this.class13_u_0.long_185 + (i * 3) + 1L);
|
|
|
|
List<int> InjectorPossibleMatch = new List<int>();
|
|
List<int> InjectorPossibleMatchDiffSize = new List<int>();
|
|
|
|
for (int i = 0; i < this.class24_u_0.Count; i++)
|
|
{
|
|
bool Same = true;
|
|
int Differences = 0;
|
|
for (int i2 = 0; i2 < 7; i2++)
|
|
{
|
|
Vdouble_byte2[i2] = method_209((float)this.class24_u_0[i].double_0[i2]);
|
|
Tdouble_byte2[i2] = (long)((this.class24_u_0[i].double_1[i2] * 1000.0) / 3.2);
|
|
|
|
if (Vdouble_byte[i2] != Vdouble_byte2[i2] && Vdouble_byte[i2] != Vdouble_byte2[i2] - 1 && Vdouble_byte[i2] != Vdouble_byte2[i2] + 1) Same = false;
|
|
if (Tdouble_byte[i2] != Tdouble_byte2[i2] && Tdouble_byte[i2] != Tdouble_byte2[i2] - 1 && Tdouble_byte[i2] != Tdouble_byte2[i2] + 1) Same = false;
|
|
|
|
//Get diff size
|
|
if (Same)
|
|
{
|
|
if (Vdouble_byte[i2] != Vdouble_byte2[i2]) Differences++;
|
|
if (Tdouble_byte[i2] != Tdouble_byte2[i2]) Differences++;
|
|
}
|
|
}
|
|
|
|
if (Same)
|
|
{
|
|
InjectorPossibleMatch.Add(i);
|
|
InjectorPossibleMatchDiffSize.Add(Differences);
|
|
}
|
|
}
|
|
|
|
if (InjectorPossibleMatchDiffSize.Count > 0)
|
|
{
|
|
int IndexWithLeastDifference = 0;
|
|
int LeastDifference = 9999;
|
|
|
|
//Get the injector that has least differences
|
|
for (int i = 0; i < InjectorPossibleMatchDiffSize.Count; i++)
|
|
{
|
|
if (InjectorPossibleMatchDiffSize[i] < LeastDifference)
|
|
{
|
|
LeastDifference = InjectorPossibleMatchDiffSize[i];
|
|
IndexWithLeastDifference = InjectorPossibleMatch[i];
|
|
}
|
|
}
|
|
|
|
//Set Injector that has least differences
|
|
ThatI = IndexWithLeastDifference;
|
|
}
|
|
|
|
Vdouble_byte = null;
|
|
Vdouble_byte2 = null;
|
|
Tdouble_byte = null;
|
|
Tdouble_byte2 = null;
|
|
InjectorPossibleMatch = null;
|
|
InjectorPossibleMatchDiffSize = null;
|
|
|
|
return ThatI;
|
|
}
|
|
|
|
private bool PasswordMatch()
|
|
{
|
|
GetPWLocation(RomVersion);
|
|
|
|
byte[] PasswordByte = new byte[class10_settings_0.Password.Length];
|
|
for (int i = 0; i < class10_settings_0.Password.Length; i++) PasswordByte[i] = Convert.ToByte(class10_settings_0.Password[i]);
|
|
byte[] PasswordByte2 = method_92(PasswordByte);
|
|
|
|
bool Match = true;
|
|
for (int i = 0; i < PasswordByte2.Length; i++)
|
|
{
|
|
if (this.GetByteAt(this.class13_u_0.long_4PASS + i) != PasswordByte2[i]) Match = false;
|
|
}
|
|
|
|
PasswordByte = null;
|
|
PasswordByte2 = null;
|
|
return Match;
|
|
}
|
|
|
|
private byte method_92_c(byte[] byte_01)
|
|
{
|
|
int int_92_0 = 0;
|
|
for (int i = 0; i < byte_01.Length; i++)
|
|
{
|
|
int_92_0 = int_92_0 + (int)byte_01[i];
|
|
if (int_92_0 > 255) int_92_0 = int_92_0 - 256;
|
|
}
|
|
byte_01 = null;
|
|
return (byte)int_92_0;
|
|
}
|
|
|
|
public byte[] method_92(byte[] byte_01)
|
|
{
|
|
byte byte92 = method_92_c(byte_01);
|
|
byte[] byte_02 = new byte[byte_01.Length + 1];
|
|
for (int i = 0; i < byte_01.Length; i++)
|
|
{
|
|
if ((i % 2) == 0)
|
|
{
|
|
int int_01 = (int) byte_01[i] + byte92;
|
|
if (int_01 > 255) int_01 -= 256;
|
|
byte_02[i] = (byte)int_01;
|
|
}
|
|
else {
|
|
int int_01 = (int) byte_01[i] - byte92;
|
|
if (int_01 < 0) int_01 += 256;
|
|
byte_02[i] = (byte) int_01;
|
|
}
|
|
}
|
|
byte_02[byte_01.Length] = byte92;
|
|
|
|
byte_02 = method_94(byte_02);
|
|
byte_01 = null;
|
|
return byte_02;
|
|
}
|
|
|
|
public byte[] method_93(byte[] byte_01)
|
|
{
|
|
byte_01 = method_95(byte_01);
|
|
|
|
byte byte92 = byte_01[byte_01.Length - 1];
|
|
byte[] byte_02 = new byte[byte_01.Length - 1];
|
|
for (int i = 0; i < byte_02.Length; i++)
|
|
{
|
|
if ((i % 2) == 0)
|
|
{
|
|
int int_01 = (int)byte_01[i] - byte92;
|
|
if (int_01 < 0) int_01 += 256;
|
|
byte_02[i] = (byte)int_01;
|
|
}
|
|
else
|
|
{
|
|
int int_01 = (int)byte_01[i] + byte92;
|
|
if (int_01 > 255) int_01 -= 256;
|
|
byte_02[i] = (byte)int_01;
|
|
}
|
|
}
|
|
byte_01 = null;
|
|
return byte_02;
|
|
}
|
|
|
|
public byte[] method_94(byte[] byte_01)
|
|
{
|
|
byte byte92 = method_92_c(byte_01);
|
|
byte[] byte_02 = new byte[byte_01.Length + 9];
|
|
int int_99 = 0;
|
|
for (int i = 0; i < byte_01.Length; i++)
|
|
{
|
|
int int_01 = (int)byte_01[i] - byte92;
|
|
if (int_01 < 0) int_01 += 256;
|
|
byte_02[int_99] = (byte)int_01;
|
|
|
|
int int_02 = i + 1;
|
|
if (int_02 == 16 || int_02 == 32 || int_02 == 48 || int_02 == 64 || int_02 == 80 || int_02 == 96 || int_02 == 112 || int_02 == 128)
|
|
{
|
|
int_99++;
|
|
byte_02[int_99] = byte92;
|
|
byte Old = byte92;
|
|
byte92 = method_92_c(byte_02);
|
|
}
|
|
int_99++;
|
|
}
|
|
byte_02[byte_02.Length - 1] = byte92;
|
|
byte_01 = null;
|
|
return byte_02;
|
|
}
|
|
|
|
public byte[] method_95(byte[] byte_01)
|
|
{
|
|
byte byte92_1 = byte_01[16];
|
|
byte byte92_2 = byte_01[32+1];
|
|
byte byte92_3 = byte_01[48+2];
|
|
byte byte92_4 = byte_01[64+3];
|
|
byte byte92_5 = byte_01[80+4];
|
|
byte byte92_6 = byte_01[96+5];
|
|
byte byte92_7 = byte_01[112+6];
|
|
byte byte92_8 = byte_01[128+7];
|
|
byte byte92_9 = byte_01[byte_01.Length - 1];
|
|
byte byte92 = 0;
|
|
byte[] byte_02 = new byte[byte_01.Length - 9];
|
|
int int_99 = 0;
|
|
for (int i = 0; i < byte_02.Length; i++)
|
|
{
|
|
if (i < 128) byte92 = byte92_8;
|
|
if (i < 112) byte92 = byte92_7;
|
|
if (i < 96) byte92 = byte92_6;
|
|
if (i < 80) byte92 = byte92_5;
|
|
if (i < 64) byte92 = byte92_4;
|
|
if (i < 48) byte92 = byte92_3;
|
|
if (i < 32) byte92 = byte92_2;
|
|
if (i < 16) byte92 = byte92_1;
|
|
if (i >= 128) byte92 = byte92_9;
|
|
if (i == 16 || i == 32 || i == 48 || i == 64 || i == 80 || i == 96 || i == 112 || i == 128) int_99++;
|
|
|
|
int int_01 = (int)byte_01[int_99] + byte92;
|
|
if (int_01 > 255) int_01 -= 256;
|
|
byte_02[i] = (byte)int_01;
|
|
|
|
int_99++;
|
|
}
|
|
byte_01 = null;
|
|
return byte_02;
|
|
}
|
|
|
|
public delegate void Delegate55();
|
|
|
|
public delegate void Delegate56(string string_0, string string_1, string string_2);
|
|
|
|
public delegate void Delegate57(SelectedTable selectedTable_0);
|
|
|
|
public delegate void Delegate58();
|
|
|
|
public delegate void Delegate59();
|
|
|
|
public delegate void Delegate60(int int_0);
|
|
|
|
public delegate void Delegate61(FuelDisplayMode fuelDisplayMode_0);
|
|
|
|
public delegate void Delegate62(string string_0, string string_1);
|
|
}
|
|
|