Example #1
0
        public void SetPrograms(IEnumerable <Program> programs, IEnumerable <Game> games)
        {
            // Clean file. INI files support only UTF16-little endian format.
            System.IO.File.WriteAllText(InitialFile.FullName, "", Encoding.Unicode);
            var ini = new Ini(InitialFile.FullName);
            // Get unique section names.
            var names     = programs.Select(x => x.FileName.ToLower()).ToList();
            var gameNames = games.Select(x => x.FileName.ToLower()).ToList();

            names.AddRange(gameNames);
            names = names.Distinct().OrderBy(x => x).ToList();
            // Write INI
            foreach (var name in names)
            {
                string section     = "";
                string productName = "";
                string hookMask    = "";
                var    program     = programs.FirstOrDefault(x => x.FileName.ToLower() == name);
                if (program != null)
                {
                    section     = program.FileName;
                    productName = program.FileProductName;
                    hookMask    = string.Format("0x{0:X8}", program.HookMask);
                }
                var game = games.FirstOrDefault(x => x.FileName.ToLower() == name);
                if (game != null)
                {
                    section     = game.FileName;
                    productName = game.FileProductName;
                    hookMask    = string.Format("0x{0:X8}", game.HookMask);
                }
                ini.SetValue(section, "Name", productName);
                ini.SetValue(section, "HookMask", hookMask);
            }
            Refresh();
            var md5name = System.IO.Path.GetFileNameWithoutExtension(InitialFile.Name);
            var md5file = System.IO.Path.Combine(InitialFile.Directory.FullName, md5name + ".md5");
            var hash    = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2")));
            var md5line = string.Format("{0} *{1}", hash, InitialFile.Name);

            System.IO.File.WriteAllText(md5file, md5line);
        }
Example #2
0
        public void SetPrograms(IEnumerable <Program> programs, IEnumerable <Game> games)
        {
            // Clean file. INI files support only UTF16-little endian format.
            var file = new System.IO.FileInfo(GdbFile.FullName);

            if (!file.Directory.Exists)
            {
                file.Directory.Create();
            }
            System.IO.File.WriteAllText(GdbFile.FullName, "", Encoding.Unicode);
            var ini = new Ini(GdbFile.FullName);
            // Get unique section names.
            var names     = programs.Select(x => x.FileName.ToLower()).ToList();
            var gameNames = games.Select(x => x.FileName.ToLower()).ToList();

            names.AddRange(gameNames);
            names = names.Distinct().OrderBy(x => x).ToList();
            // Write INI
            foreach (var name in names)
            {
                string section     = "";
                string productName = "";
                string hookMask    = "";
                string fakeVid     = null;
                string fakePid     = null;
                string dinputMask  = null;
                string dinputFile  = null;
                string timeout     = null;
                var    program     = programs.FirstOrDefault(x => x.FileName.ToLower() == name);
                var    game        = games.FirstOrDefault(x => x.FileName.ToLower() == name);
                if (game != null)
                {
                    section     = game.FileName;
                    productName = game.FileProductName;
                    hookMask    = string.Format("0x{0:X8}", game.HookMask);
                    if (game.DInputMask > 0)
                    {
                        dinputMask = string.Format("0x{0:X8}", game.DInputMask);
                    }
                    if (!string.IsNullOrEmpty(game.DInputFile))
                    {
                        dinputFile = game.DInputFile;
                    }
                    if (game.FakeVID > 0)
                    {
                        fakeVid = string.Format("0x{0:X4}", game.FakeVID);
                    }
                    if (game.FakePID > 0)
                    {
                        fakePid = string.Format("0x{0:X4}", game.FakePID);
                    }
                    if (game.Timeout >= 0)
                    {
                        timeout = game.Timeout.ToString();
                    }
                }
                // Use default settings as an alternative.
                else if (program != null)
                {
                    section     = program.FileName;
                    productName = program.FileProductName;
                    hookMask    = string.Format("0x{0:X8}", program.HookMask);
                    if (program.DInputMask > 0)
                    {
                        dinputMask = string.Format("0x{0:X8}", program.DInputMask);
                    }
                    if (!string.IsNullOrEmpty(program.DInputFile))
                    {
                        dinputFile = program.DInputFile;
                    }
                    if (program.FakeVID > 0)
                    {
                        fakeVid = string.Format("0x{0:X4}", program.FakeVID);
                    }
                    if (program.FakePID > 0)
                    {
                        fakePid = string.Format("0x{0:X4}", program.FakePID);
                    }
                    if (program.Timeout >= 0)
                    {
                        timeout = program.Timeout.ToString();
                    }
                }
                ini.SetValue(section, "Name", productName);
                ini.SetValue(section, "HookMask", hookMask);
                ini.SetValue(section, "DinputMask", dinputMask);
                ini.SetValue(section, "DinputFile", dinputFile);
                ini.SetValue(section, "FakeVID", fakeVid);
                ini.SetValue(section, "FakePID", fakePid);
                ini.SetValue(section, "Timeout", timeout);
            }
            Refresh();
            var hash    = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2")));
            var md5line = string.Format("{0} *{1}", hash, GdbFile.Name);

            System.IO.File.WriteAllText(Md5File.FullName, md5line);
        }
Example #3
0
		public void SetPrograms(IEnumerable<Program> programs, IEnumerable<Game> games)
		{
			// Clean file. INI files support only UTF16-little endian format.
			var file = new System.IO.FileInfo(GdbFile.FullName);
			if (!file.Directory.Exists) file.Directory.Create();
			System.IO.File.WriteAllText(GdbFile.FullName, "", Encoding.Unicode);
			var ini = new Ini(GdbFile.FullName);
			// Get unique section names.
			var names = programs.Select(x => x.FileName.ToLower()).ToList();
			var gameNames = games.Select(x => x.FileName.ToLower()).ToList();
			names.AddRange(gameNames);
			names = names.Distinct().OrderBy(x => x).ToList();
			// Write INI
			foreach (var name in names)
			{
				string section = "";
				string productName = "";
				string hookMask = "";
				string fakeVid = null;
				string fakePid = null;
				string dinputMask = null;
				string dinputFile = null;
				string timeout = null;
				var program = programs.FirstOrDefault(x => x.FileName.ToLower() == name);
				var game = games.FirstOrDefault(x => x.FileName.ToLower() == name);
				if (game != null)
				{
					section = game.FileName;
					productName = game.FileProductName;
					hookMask = string.Format("0x{0:X8}", game.HookMask);
					if (game.DInputMask > 0) dinputMask = string.Format("0x{0:X8}", game.DInputMask);
					if (!string.IsNullOrEmpty(game.DInputFile)) dinputFile = game.DInputFile;
					if (game.FakeVID > 0) fakeVid = string.Format("0x{0:X4}", game.FakeVID);
					if (game.FakePID > 0) fakePid = string.Format("0x{0:X4}", game.FakePID);
					if (game.Timeout >= 0) timeout = game.Timeout.ToString();
				}
				// Use default settings as an alternative.
				else if (program != null)
				{
					section = program.FileName;
					productName = program.FileProductName;
					hookMask = string.Format("0x{0:X8}", program.HookMask);
					if (program.DInputMask > 0) dinputMask = string.Format("0x{0:X8}", program.DInputMask);
					if (!string.IsNullOrEmpty(program.DInputFile)) dinputFile = program.DInputFile;
					if (program.FakeVID > 0) fakeVid = string.Format("0x{0:X4}", program.FakeVID);
					if (program.FakePID > 0) fakePid = string.Format("0x{0:X4}", program.FakePID);
					if (program.Timeout >= 0) timeout = program.Timeout.ToString();
				}
				ini.SetValue(section, "Name", productName);
				ini.SetValue(section, "HookMask", hookMask);
				ini.SetValue(section, "DinputMask", dinputMask);
				ini.SetValue(section, "DinputFile", dinputFile);
				ini.SetValue(section, "FakeVID", fakeVid);
				ini.SetValue(section, "FakePID", fakePid);
				ini.SetValue(section, "Timeout", timeout);
			}
			Refresh();
			var hash = string.Join("", Checksum.ToByteArray().Select(x => x.ToString("X2")));
			var md5line = string.Format("{0} *{1}", hash, GdbFile.Name);
			System.IO.File.WriteAllText(Md5File.FullName, md5line);
		}