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_0 = new Collection(); private List InputsListLocations = new List(); private List InputsListDesc = new List(); private List OutputsListLocations = new List(); private List OutputsListDesc = new List(); 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(); InputsListDesc = new List(); 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(); OutputsListDesc = new List(); 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 GetInputsListLocations() { return InputsListLocations; } public List GetInputsListDesc() { return InputsListDesc; } public List GetOutputsListLocations() { return OutputsListLocations; } public List 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 InjectorPossibleMatch = new List(); List InjectorPossibleMatchDiffSize = new List(); 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); }