private void LoadRomFromDat(DatDir parentDir, XmlNode romNode) { if (romNode.Attributes == null) { return; } XmlNode name = romNode.Attributes.GetNamedItem("name"); string loadflag = VarFix.String(romNode.Attributes.GetNamedItem("loadflag")); if (name != null) { DatFile dRom = new DatFile(DatFileType.UnSet) { Name = VarFix.String(name), Size = VarFix.ULong(romNode.Attributes.GetNamedItem("size")), CRC = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("crc"), 8), SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40), Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")) }; _indexContinue = parentDir.ChildAdd(dRom); } else if (loadflag.ToLower() == "continue") { DatFile tRom = (DatFile)parentDir.Child(_indexContinue); tRom.Size += VarFix.ULong(romNode.Attributes.GetNamedItem("size")); } }
private static void LoadRomFromDat(RvGame rvGame, XmlNode romNode) { if (romNode.Attributes == null) { return; } XmlNode name = romNode.Attributes.GetNamedItem("name"); string loadflag = VarFix.String(romNode.Attributes.GetNamedItem("loadflag")); if (name != null) { RvRom rvRom = new RvRom(); rvRom.Name = VarFix.CleanFullFileName(name); rvRom.Size = VarFix.ULong(romNode.Attributes.GetNamedItem("size")); rvRom.CRC = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("crc"), 8); rvRom.SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40); rvRom.Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")); _indexContinue = rvGame.AddRom(rvRom); } else if (loadflag.ToLower() == "continue") { RvRom tROM = rvGame.Roms[_indexContinue]; tROM.Size += VarFix.ULong(romNode.Attributes.GetNamedItem("size")); } else if (loadflag.ToLower() == "ignore") { RvRom tROM = rvGame.Roms[_indexContinue]; tROM.Size += VarFix.ULong(romNode.Attributes.GetNamedItem("size")); } }
private static bool LoadHeaderFromDat(XmlDocument doc, RvDat rvDat, string filename) { XmlNodeList head = doc.SelectNodes("softwarelist"); if (head == null) { return(false); } if (head.Count == 0) { return(false); } if (head[0].Attributes == null) { return(false); } rvDat.Filename = filename; rvDat.Name = VarFix.CleanFileName(head[0].Attributes.GetNamedItem("name")); rvDat.Description = VarFix.String(head[0].Attributes.GetNamedItem("description")); return(true); }
private bool LoadHeaderFromDat(XmlDocument doc, DatHeader datHeader) { XmlNodeList head = doc.SelectNodes("softwarelist"); if (head == null) { return(false); } if (head.Count == 0) { return(false); } if (head[0].Attributes == null) { return(false); } datHeader.Filename = _filename; datHeader.Name = VarFix.String(head[0].Attributes.GetNamedItem("name")); datHeader.Description = VarFix.String(head[0].Attributes.GetNamedItem("description")); return(true); }
private static bool LoadHeaderFromDat(XmlDocument doc, RvDat rvDat, string filename, long fileTimeStamp) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.DocumentElement.SelectSingleNode("header"); rvDat.Filename = filename; rvDat.DatTimeStamp = fileTimeStamp; if (head == null) { return(false); } rvDat.Name = VarFix.CleanFileName(head.SelectSingleNode("name")); rvDat.RootDir = VarFix.CleanFileName(head.SelectSingleNode("rootdir")); rvDat.Description = VarFix.String(head.SelectSingleNode("description")); rvDat.Category = VarFix.String(head.SelectSingleNode("category")); rvDat.Version = VarFix.String(head.SelectSingleNode("version")); rvDat.Date = VarFix.String(head.SelectSingleNode("date")); rvDat.Author = VarFix.String(head.SelectSingleNode("author")); rvDat.Email = VarFix.String(head.SelectSingleNode("email")); rvDat.Homepage = VarFix.String(head.SelectSingleNode("homepage")); rvDat.URL = VarFix.String(head.SelectSingleNode("url")); rvDat.Comment = VarFix.String(head.SelectSingleNode("comment")); return(true); }
private static void LoadSlot(DatGame dGame, XmlNode slot) { XmlNodeList slotList = slot.SelectNodes("slotoption"); if (slotList == null) { return; } for (int i = 0; i < slotList.Count; i++) { if (slotList[i].Attributes == null) { continue; } string name = VarFix.String(slotList[i].Attributes.GetNamedItem("devname")); if (dGame.slot == null) { dGame.slot = new List <string>(); } dGame.slot.Add(name); } }
private bool LoadHeaderFromDat(XmlDocument doc, DatHeader datHeader) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.DocumentElement.SelectSingleNode("header"); datHeader.Filename = _filename; if (head == null) { return(false); } datHeader.Name = VarFix.String(head.SelectSingleNode("name")); datHeader.Type = VarFix.String(head.SelectSingleNode("type")); datHeader.RootDir = VarFix.String(head.SelectSingleNode("rootdir")); datHeader.Description = VarFix.String(head.SelectSingleNode("description")); datHeader.Category = VarFix.String(head.SelectSingleNode("category")); datHeader.Version = VarFix.String(head.SelectSingleNode("version")); datHeader.Date = VarFix.String(head.SelectSingleNode("date")); datHeader.Author = VarFix.String(head.SelectSingleNode("author")); datHeader.Email = VarFix.String(head.SelectSingleNode("email")); datHeader.Homepage = VarFix.String(head.SelectSingleNode("homepage")); datHeader.URL = VarFix.String(head.SelectSingleNode("url")); datHeader.Comment = VarFix.String(head.SelectSingleNode("comment")); datHeader.IsSuperDat = (datHeader.Type.ToLower() == "superdat") || (datHeader.Type.ToLower() == "gigadat"); XmlNode packingNode = head.SelectSingleNode("romvault") ?? head.SelectSingleNode("clrmamepro"); if (packingNode?.Attributes != null) { // dat Header XML filename datHeader.Header = VarFix.String(packingNode.Attributes.GetNamedItem("header")); // zip, unzip, file datHeader.Compression = VarFix.String(packingNode.Attributes.GetNamedItem("forcepacking")).ToLower(); // split, full datHeader.MergeType = VarFix.String(packingNode.Attributes.GetNamedItem("forcemerging")).ToLower(); // noautodir, nogame datHeader.Dir = VarFix.String(packingNode.Attributes.GetNamedItem("dir")).ToLower(); } // Look for: <notzipped>true</notzipped> string notzipped = VarFix.String(head.SelectSingleNode("notzipped")); datHeader.NotZipped = ((notzipped.ToLower() == "true") || (notzipped.ToLower() == "yes")); return(true); }
private static bool LoadHeaderFromDat(ref RvDir tDir, ref XmlDocument doc) { XmlNodeList head = doc.SelectNodes("softwarelist"); if (head == null) { return(false); } if (head.Count == 0) { return(false); } if (head[0].Attributes == null) { return(false); } RvDat tDat = new RvDat(); tDat.AddData(RvDat.DatData.DatName, VarFix.CleanFileName(head[0].Attributes.GetNamedItem("name"))); tDat.AddData(RvDat.DatData.Description, VarFix.String(head[0].Attributes.GetNamedItem("description"))); string val = VarFix.String(head[0].Attributes.GetNamedItem("forcemerging")).ToLower(); switch (val.ToLower()) { case "split": tDat.AddData(RvDat.DatData.MergeType, "split"); break; case "full": tDat.AddData(RvDat.DatData.MergeType, "full"); break; default: tDat.AddData(RvDat.DatData.MergeType, "split"); break; } tDir.Dat = tDat; return(true); }
private void LoadDiskFromDat(DatDir parentDir, XmlNode romNode) { if (romNode.Attributes == null) { return; } DatFile dRom = new DatFile(DatFileType.UnSet) { Name = VarFix.String(romNode.Attributes.GetNamedItem("name")) + ".chd", SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40), Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")), isDisk = true }; parentDir.ChildAdd(dRom); }
private static void LoadRomFromDat(ref RvDir tGame, XmlNode romNode, FileType thisFileType) { if (romNode.Attributes == null) { return; } XmlNode name = romNode.Attributes.GetNamedItem("name"); string loadflag = VarFix.String(romNode.Attributes.GetNamedItem("loadflag")); if (name != null) { RvFile tRom = new RvFile(thisFileType) // changed { Name = VarFix.CleanFullFileName(name), Size = VarFix.ULong(romNode.Attributes.GetNamedItem("size")), CRC = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("crc"), 8), SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40), Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")), Dat = tGame.Dat }; if (tRom.Size != null) { tRom.FileStatusSet(FileStatus.SizeFromDAT); } if (tRom.CRC != null) { tRom.FileStatusSet(FileStatus.CRCFromDAT); } if (tRom.SHA1 != null) { tRom.FileStatusSet(FileStatus.SHA1FromDAT); } _indexContinue = tGame.ChildAdd(tRom); } else if (loadflag.ToLower() == "continue") { RvFile tZippedFile = (RvFile)tGame.Child(_indexContinue); tZippedFile.Size += VarFix.ULong(romNode.Attributes.GetNamedItem("size")); } }
private bool LoadMameHeaderFromDat(XmlDocument doc, DatHeader datHeader) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.SelectSingleNode("mame"); if (head?.Attributes == null) { return(false); } datHeader.Filename = _filename; datHeader.Name = VarFix.String(head.Attributes.GetNamedItem("build")); datHeader.Description = VarFix.String(head.Attributes.GetNamedItem("build")); return(true); }
private static bool LoadMameHeaderFromDat(XmlDocument doc, RvDat rvDat, string filename) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.SelectSingleNode("mame"); if (head?.Attributes == null) { return(false); } rvDat.Filename = filename; rvDat.Name = VarFix.CleanFileName(head.Attributes.GetNamedItem("build")); // ?? is this correct should it be Name & Descripition?? rvDat.Description = VarFix.String(head.Attributes.GetNamedItem("build")); return(true); }
private static bool LoadMameHeaderFromDat(XmlDocument doc, RvDat rvDat, string filename, long fileTimeStamp) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.SelectSingleNode("mame"); if (head == null || head.Attributes == null) { return(false); } rvDat.Filename = filename; rvDat.Name = VarFix.CleanFileName(head.Attributes.GetNamedItem("build")); rvDat.Description = VarFix.String(head.Attributes.GetNamedItem("build")); rvDat.DatTimeStamp = fileTimeStamp; return(true); }
private static bool LoadHeaderFromDat(XmlDocument doc, RvDat rvDat, string filename, out HeaderFileType datFileType) { datFileType = HeaderFileType.Nothing; if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.DocumentElement.SelectSingleNode("header"); rvDat.Filename = filename; if (head == null) { return(false); } rvDat.Name = VarFix.CleanFileName(head.SelectSingleNode("name")); rvDat.RootDir = VarFix.CleanFileName(head.SelectSingleNode("rootdir")); rvDat.Description = VarFix.String(head.SelectSingleNode("description")); rvDat.Category = VarFix.String(head.SelectSingleNode("category")); rvDat.Version = VarFix.String(head.SelectSingleNode("version")); rvDat.Date = VarFix.String(head.SelectSingleNode("date")); rvDat.Author = VarFix.String(head.SelectSingleNode("author")); rvDat.Email = VarFix.String(head.SelectSingleNode("email")); rvDat.Homepage = VarFix.String(head.SelectSingleNode("homepage")); rvDat.URL = VarFix.String(head.SelectSingleNode("url")); rvDat.Comment = VarFix.String(head.SelectSingleNode("comment")); XmlNode packingNode = head.SelectSingleNode("romvault") ?? head.SelectSingleNode("clrmamepro"); if (packingNode?.Attributes != null) { // dat Header XML filename datFileType = FileHeaderReader.FileHeaderReader.GetFileTypeFromHeader(VarFix.String(packingNode.Attributes.GetNamedItem("header"))); rvDat.MergeType = VarFix.String(packingNode.Attributes.GetNamedItem("forcemerging")).ToLower(); } return(true); }
private static void LoadDeviceRef(DatGame dGame, XmlNode deviceNode) { if (deviceNode.Attributes == null) { return; } string name = VarFix.String(deviceNode.Attributes.GetNamedItem("name")); if (string.IsNullOrWhiteSpace(name)) { return; } if (dGame.device_ref == null) { dGame.device_ref = new List <string>(); } dGame.device_ref.Add(name); }
private static void LoadRomFromDat(DatDir parentDir, XmlNode romNode) { if (romNode.Attributes == null) { return; } DatFile rvRom = new DatFile(DatFileType.UnSet) { Name = VarFix.String(romNode.Attributes.GetNamedItem("name")), Size = VarFix.ULong(romNode.Attributes.GetNamedItem("size")), CRC = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("crc"), 8), SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40), MD5 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("md5"), 32), Merge = VarFix.String(romNode.Attributes.GetNamedItem("merge")), Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")), Region = VarFix.ToLower(romNode.Attributes.GetNamedItem("region")) }; parentDir.ChildAdd(rvRom); }
private static bool LoadMameHeaderFromDat(ref RvDir tDir, ref XmlDocument doc, ref FileType thisFileType) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.SelectSingleNode("mame"); if (head == null || head.Attributes == null) { return(false); } RvDat tDat = new RvDat(); tDat.AddData(RvDat.DatData.DatName, VarFix.CleanFileName(head.Attributes.GetNamedItem("build"))); tDat.AddData(RvDat.DatData.Description, VarFix.String(head.Attributes.GetNamedItem("build"))); thisFileType = FileType.ZipFile; tDir.Dat = tDat; return(true); }
private static void LoadDiskFromDat(DatDir parentDir, XmlNode romNode) { if (romNode.Attributes == null) { return; } DatFile rvRom = new DatFile(DatFileType.UnSet) { Name = VarFix.String(romNode.Attributes.GetNamedItem("name")) + ".chd", SHA1 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("sha1"), 40), MD5 = VarFix.CleanMD5SHA1(romNode.Attributes.GetNamedItem("md5"), 32), Merge = VarFix.String(romNode.Attributes.GetNamedItem("merge")), Status = VarFix.ToLower(romNode.Attributes.GetNamedItem("status")), isDisk = true }; if (!string.IsNullOrWhiteSpace(rvRom.Merge)) { rvRom.Merge += ".chd"; } parentDir.ChildAdd(rvRom); }
private static void LoadDirFromDat(DatDir parentDir, XmlNode dirNode) { if (dirNode.Attributes == null) { return; } string name = VarFix.String(dirNode.Attributes.GetNamedItem("name")); DatDir dir = new DatDir(DatFileType.UnSet) { Name = name }; parentDir.ChildAdd(dir); XmlNodeList dirNodeList = dirNode.SelectNodes("dir"); if (dirNodeList != null) { for (int i = 0; i < dirNodeList.Count; i++) { LoadDirFromDat(dir, dirNodeList[i]); } } XmlNodeList gameNodeList = dirNode.SelectNodes("game"); if (gameNodeList != null) { for (int i = 0; i < gameNodeList.Count; i++) { LoadGameFromDat(dir, gameNodeList[i]); } } }
private static bool LoadRomFromDat(DatFileLoader dfl, DatDir parentDir, ReportError errorReport) { dfl.Gn(); if (dfl.Next != "(") { errorReport?.Invoke(dfl.Filename, "( not found after rom, on line " + dfl.LineNumber); return(false); } dfl.Gn(); if (dfl.Next.ToLower() != "name") { errorReport?.Invoke(dfl.Filename, "Name not found as first object in ( ), on line " + dfl.LineNumber); return(false); } DatFile dRom = new DatFile(DatFileType.UnSet) { Name = dfl.Gn() }; dfl.Gn(); while (dfl.Next != ")") { switch (dfl.Next.ToLower()) { case "size": dRom.Size = VarFix.ULong(dfl.Gn()); break; case "hash": dfl.Gn(); break; case "crc": case "crc32": dRom.CRC = VarFix.CleanMD5SHA1(dfl.Gn(), 8); break; case "sha1": dRom.SHA1 = VarFix.CleanMD5SHA1(dfl.Gn(), 40); break; case "md5": dRom.MD5 = VarFix.CleanMD5SHA1(dfl.Gn(), 32); break; case "merge": dRom.Merge = VarFix.String(dfl.Gn()); break; case "flags": string flags = VarFix.ToLower(dfl.Gn()); if (string.IsNullOrWhiteSpace(dRom.Status)) { dRom.Status = flags; } break; case "date": dfl.Gn(); break; case "bios": dfl.Gn(); break; case "region": dfl.Gn(); break; case "regiona": case "regionb": while (dfl.Next != ")") { dfl.Gn(); } continue; case "offs": dfl.Gn(); break; case "nodump": dRom.Status = "nodump"; break; case "baddump": dRom.Status = "baddump"; break; default: errorReport?.Invoke(dfl.Filename, "Error: key word '" + dfl.Next + "' not known in rom, on line " + dfl.LineNumber); break; } dfl.Gn(); } parentDir.ChildAdd(dRom); return(true); }
private void LoadGameFromDat(DatDir parentDir, XmlNode gameNode) { if (gameNode.Attributes == null) { return; } DatDir dDir = new DatDir(DatFileType.UnSet) { Name = VarFix.String(gameNode.Attributes.GetNamedItem("name")), DGame = new DatGame() }; DatGame dGame = dDir.DGame; dGame.Description = VarFix.String(gameNode.SelectSingleNode("description")); dGame.RomOf = VarFix.String(gameNode.Attributes?.GetNamedItem("romof")); dGame.CloneOf = VarFix.String(gameNode.Attributes?.GetNamedItem("cloneof")); dGame.Year = VarFix.String(gameNode.SelectSingleNode("year")); dGame.Manufacturer = VarFix.String(gameNode.SelectSingleNode("publisher")); XmlNodeList partNodeList = gameNode.SelectNodes("part"); if (partNodeList == null) { return; } for (int iP = 0; iP < partNodeList.Count; iP++) { _indexContinue = -1; XmlNodeList dataAreaNodeList = partNodeList[iP].SelectNodes("dataarea"); if (dataAreaNodeList == null) { continue; } for (int iD = 0; iD < dataAreaNodeList.Count; iD++) { XmlNodeList romNodeList = dataAreaNodeList[iD].SelectNodes("rom"); if (romNodeList == null) { continue; } for (int iR = 0; iR < romNodeList.Count; iR++) { LoadRomFromDat(dDir, romNodeList[iR]); } } } /* * for (int iP = 0; iP < partNodeList.Count; iP++) * { * XmlNodeList diskAreaNodeList = partNodeList[iP].SelectNodes("diskarea"); * if (diskAreaNodeList != null) * for (int iD = 0; iD < diskAreaNodeList.Count; iD++) * { * XmlNodeList romNodeList = diskAreaNodeList[iD].SelectNodes("disk"); * if (romNodeList != null) * for (int iR = 0; iR < romNodeList.Count; iR++) * { * LoadDiskFromDat(dDirCHD, romNodeList[iR]); * } * } * } */ if (dDir.ChildCount > 0) { parentDir.ChildAdd(dDir); } /* * if (tDirCHD.ChildCount > 0) * parentDir.ChildAdd(rvGameCHD, index1); */ }
private bool LoadDiskFromDat(DatFileLoader dfl, DatDir parentDir) { dfl.Gn(); if (dfl.Next != "(") { _errorReport?.Invoke(dfl.Filename, "( not found after rom, on line " + dfl.LineNumber); return(false); } dfl.Gn(); if (dfl.Next.ToLower() != "name") { _errorReport?.Invoke(dfl.Filename, "Name not found as first object in ( ), on line " + dfl.LineNumber); return(false); } DatFile dRom = new DatFile(DatFileType.UnSet) { Name = VarFix.String(dfl.Gn()) + ".chd", isDisk = true }; dfl.Gn(); while (dfl.Next != ")") { switch (dfl.Next.ToLower()) { case "sha1": dRom.SHA1 = VarFix.CleanMD5SHA1(dfl.Gn(), 40); break; case "md5": dRom.MD5 = VarFix.CleanMD5SHA1(dfl.Gn(), 32); break; case "region": dRom.Region = VarFix.String(dfl.Gn()); break; case "merge": dRom.Merge = VarFix.String(dfl.Gn()); break; case "index": dfl.Gn(); break; case "flags": dRom.Status = VarFix.ToLower(dfl.Gn()); break; case "nodump": dRom.Status = "nodump"; break; default: _errorReport?.Invoke(dfl.Filename, "Error: key word '" + dfl.Next + "' not known in rom, on line " + dfl.LineNumber); break; } dfl.Gn(); } parentDir.ChildAdd(dRom); return(true); }
private static void LoadGameFromDat(RvDat rvDat, XmlNode gameNode, string rootDir, HeaderFileType datFileType) { if (gameNode.Attributes == null) { return; } RvGame rvGame = new RvGame { Name = VarFix.CleanFullFileName(gameNode.Attributes.GetNamedItem("name")), RomOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("romof")), CloneOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof")), SampleOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("sampleof")), Description = VarFix.String(gameNode.SelectSingleNode("description")), SourceFile = VarFix.String(gameNode.Attributes.GetNamedItem("sourcefile")), IsBios = VarFix.String(gameNode.Attributes.GetNamedItem("isbios")), Board = VarFix.String(gameNode.Attributes.GetNamedItem("board")), Year = VarFix.String(gameNode.SelectSingleNode("year")), Manufacturer = VarFix.String(gameNode.SelectSingleNode("manufacturer")) }; XmlNode trurip = gameNode.SelectSingleNode("trurip"); if (trurip != null) { rvGame.IsTrurip = true; rvGame.Publisher = VarFix.String(trurip.SelectSingleNode("publisher")); rvGame.Developer = VarFix.String(trurip.SelectSingleNode("developer")); rvGame.Edition = VarFix.String(trurip.SelectSingleNode("edition")); rvGame.Version = VarFix.String(trurip.SelectSingleNode("version")); rvGame.Type = VarFix.String(trurip.SelectSingleNode("type")); rvGame.Media = VarFix.String(trurip.SelectSingleNode("media")); rvGame.Language = VarFix.String(trurip.SelectSingleNode("language")); rvGame.Players = VarFix.String(trurip.SelectSingleNode("players")); rvGame.Ratings = VarFix.String(trurip.SelectSingleNode("ratings")); rvGame.Peripheral = VarFix.String(trurip.SelectSingleNode("peripheral")); rvGame.Genre = VarFix.String(trurip.SelectSingleNode("genre")); rvGame.MediaCatalogNumber = VarFix.String(trurip.SelectSingleNode("mediacatalognumber")); rvGame.BarCode = VarFix.String(trurip.SelectSingleNode("barcode")); } rvGame.Name = Path.Combine(rootDir, rvGame.Name); rvDat.AddGame(rvGame); XmlNodeList romNodeList = gameNode.SelectNodes("rom"); if (romNodeList != null) { for (int i = 0; i < romNodeList.Count; i++) { LoadRomFromDat(rvGame, romNodeList[i], datFileType); } } XmlNodeList diskNodeList = gameNode.SelectNodes("disk"); if (diskNodeList != null) { for (int i = 0; i < diskNodeList.Count; i++) { LoadDiskFromDat(rvGame, diskNodeList[i]); } } }
private static bool LoadHeaderFromDat(ref RvDir tDir, ref XmlDocument doc, ref FileType thisFileType) { if (doc.DocumentElement == null) { return(false); } XmlNode head = doc.DocumentElement.SelectSingleNode("header"); if (head == null) { return(false); } RvDat tDat = new RvDat(); tDat.AddData(RvDat.DatData.DatName, VarFix.CleanFileName(head.SelectSingleNode("name"))); tDat.AddData(RvDat.DatData.RootDir, VarFix.CleanFileName(head.SelectSingleNode("rootdir"))); tDat.AddData(RvDat.DatData.Description, VarFix.String(head.SelectSingleNode("description"))); tDat.AddData(RvDat.DatData.Category, VarFix.String(head.SelectSingleNode("category"))); tDat.AddData(RvDat.DatData.Version, VarFix.String(head.SelectSingleNode("version"))); tDat.AddData(RvDat.DatData.Date, VarFix.String(head.SelectSingleNode("date"))); tDat.AddData(RvDat.DatData.Author, VarFix.String(head.SelectSingleNode("author"))); tDat.AddData(RvDat.DatData.Email, VarFix.String(head.SelectSingleNode("email"))); tDat.AddData(RvDat.DatData.HomePage, VarFix.String(head.SelectSingleNode("homepage"))); tDat.AddData(RvDat.DatData.URL, VarFix.String(head.SelectSingleNode("url"))); string superDAT = VarFix.String(head.SelectSingleNode("type")); _cleanFileNames = superDAT.ToLower() != "superdat" && superDAT.ToLower() != "gigadat"; if (!_cleanFileNames) { tDat.AddData(RvDat.DatData.SuperDat, "superdat"); } thisFileType = FileType.ZipFile; // Look for: <romvault forcepacking="unzip"/> XmlNode packingNode = head.SelectSingleNode("romvault"); if (packingNode == null) { // Look for: <clrmamepro forcepacking="unzip"/> packingNode = head.SelectSingleNode("clrmamepro"); } if (packingNode != null) { if (packingNode.Attributes != null) { string val = VarFix.String(packingNode.Attributes.GetNamedItem("forcepacking")).ToLower(); switch (val.ToLower()) { case "zip": tDat.AddData(RvDat.DatData.FileType, "zip"); thisFileType = FileType.ZipFile; break; case "unzip": case "file": tDat.AddData(RvDat.DatData.FileType, "file"); thisFileType = FileType.File; break; default: thisFileType = FileType.ZipFile; break; } val = VarFix.String(packingNode.Attributes.GetNamedItem("forcemerging")).ToLower(); switch (val.ToLower()) { case "split": tDat.AddData(RvDat.DatData.MergeType, "split"); break; case "full": tDat.AddData(RvDat.DatData.MergeType, "full"); break; default: tDat.AddData(RvDat.DatData.MergeType, "split"); break; } val = VarFix.String(packingNode.Attributes.GetNamedItem("dir")).ToLower(); // noautodir , nogame if (!String.IsNullOrEmpty(val)) { tDat.AddData(RvDat.DatData.DirSetup, val); } } } // Look for: <notzipped>true</notzipped> string notzipped = VarFix.String(head.SelectSingleNode("notzipped")); if (notzipped.ToLower() == "true" || notzipped.ToLower() == "yes") { thisFileType = FileType.File; } tDir.Dat = tDat; return(true); }
private static void LoadGameFromDat(ref RvDir tDat, XmlNode gameNode, FileType thisFileType) { if (gameNode.Attributes == null) { return; } RvDir parent = tDat; RvDir tDir = new RvDir(DBTypeGet.DirFromFile(thisFileType)) { Name = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("name")), Game = new RvGame(), Dat = tDat.Dat, DatStatus = DatStatus.InDatCollect }; tDir.Game.AddData(RvGame.GameData.Description, VarFix.String(gameNode.SelectSingleNode("description"))); tDir.Game.AddData(RvGame.GameData.RomOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof"))); tDir.Game.AddData(RvGame.GameData.CloneOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof"))); tDir.Game.AddData(RvGame.GameData.Year, VarFix.CleanFileName(gameNode.SelectSingleNode("year"))); tDir.Game.AddData(RvGame.GameData.Manufacturer, VarFix.CleanFileName(gameNode.SelectSingleNode("publisher"))); RvDir tDirCHD = new RvDir(FileType.Dir) { Name = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("name")), Game = new RvGame(), Dat = tDat.Dat, DatStatus = DatStatus.InDatCollect }; tDirCHD.Game.AddData(RvGame.GameData.Description, VarFix.String(gameNode.SelectSingleNode("description"))); tDirCHD.Game.AddData(RvGame.GameData.RomOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof"))); tDirCHD.Game.AddData(RvGame.GameData.CloneOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof"))); tDirCHD.Game.AddData(RvGame.GameData.Year, VarFix.CleanFileName(gameNode.SelectSingleNode("year"))); tDirCHD.Game.AddData(RvGame.GameData.Manufacturer, VarFix.CleanFileName(gameNode.SelectSingleNode("publisher"))); int index1; string testName = tDir.Name; int nameCount = 0; while (parent.ChildNameSearch(tDir, out index1) == 0) { tDir.Name = testName + "_" + nameCount; nameCount++; } tDirCHD.Name = tDir.Name; XmlNodeList partNodeList = gameNode.SelectNodes("part"); if (partNodeList == null) { return; } for (int iP = 0; iP < partNodeList.Count; iP++) { _indexContinue = -1; XmlNodeList dataAreaNodeList = partNodeList[iP].SelectNodes("dataarea"); if (dataAreaNodeList != null) { for (int iD = 0; iD < dataAreaNodeList.Count; iD++) { XmlNodeList romNodeList = dataAreaNodeList[iD].SelectNodes("rom"); if (romNodeList != null) { for (int iR = 0; iR < romNodeList.Count; iR++) { LoadRomFromDat(ref tDir, romNodeList[iR], thisFileType); } } } } } for (int iP = 0; iP < partNodeList.Count; iP++) { XmlNodeList diskAreaNodeList = partNodeList[iP].SelectNodes("diskarea"); if (diskAreaNodeList != null) { for (int iD = 0; iD < diskAreaNodeList.Count; iD++) { XmlNodeList romNodeList = diskAreaNodeList[iD].SelectNodes("disk"); if (romNodeList != null) { for (int iR = 0; iR < romNodeList.Count; iR++) { LoadDiskFromDat(ref tDirCHD, romNodeList[iR]); } } } } } if (tDir.ChildCount > 0) { parent.ChildAdd(tDir, index1); } if (tDirCHD.ChildCount > 0) { parent.ChildAdd(tDirCHD, index1); } }
private static void LoadGameFromDat(RvDat rvDat, XmlNode gameNode) { if (gameNode.Attributes == null) { return; } RvGame rvGame = new RvGame { Name = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("name")), Description = VarFix.String(gameNode.SelectSingleNode("description")), RomOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof")), CloneOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof")), Year = VarFix.CleanFileName(gameNode.SelectSingleNode("year")), Manufacturer = VarFix.CleanFileName(gameNode.SelectSingleNode("publisher")) }; XmlNodeList partNodeList = gameNode.SelectNodes("part"); if (partNodeList == null) { return; } for (int iP = 0; iP < partNodeList.Count; iP++) { _indexContinue = -1; XmlNodeList dataAreaNodeList = partNodeList[iP].SelectNodes("dataarea"); if (dataAreaNodeList == null) { continue; } for (int iD = 0; iD < dataAreaNodeList.Count; iD++) { XmlNodeList romNodeList = dataAreaNodeList[iD].SelectNodes("rom"); if (romNodeList == null) { continue; } for (int iR = 0; iR < romNodeList.Count; iR++) { LoadRomFromDat(rvGame, romNodeList[iR]); } } } /* * for (int iP = 0; iP < partNodeList.Count; iP++) * { * XmlNodeList diskAreaNodeList = partNodeList[iP].SelectNodes("diskarea"); * if (diskAreaNodeList != null) * for (int iD = 0; iD < diskAreaNodeList.Count; iD++) * { * XmlNodeList romNodeList = diskAreaNodeList[iD].SelectNodes("disk"); * if (romNodeList != null) * for (int iR = 0; iR < romNodeList.Count; iR++) * { * LoadDiskFromDat(rvGameCHD, romNodeList[iR]); * } * } * } */ if (rvGame.RomCount > 0) { rvDat.AddGame(rvGame); } /* * if (tDirCHD.ChildCount > 0) * rvDat.AddGame(rvGameCHD, index1); */ }
private static void LoadGameFromDat(ref RvDir tDat, XmlNode gameNode, FileType thisFileType) { if (gameNode.Attributes == null) { return; } RvDir parent = tDat; RvDir tDir; int index1 = 0; string fullname = VarFix.CleanFullFileName(gameNode.Attributes.GetNamedItem("name")); if (_cleanFileNames) { fullname = fullname.Replace("/", "-"); } else { while (fullname.Contains("/")) { int firstSlash = fullname.IndexOf("/", StringComparison.Ordinal); string dir = fullname.Substring(0, firstSlash); dir = VarFix.CleanFileName(dir); fullname = fullname.Substring(firstSlash + 1); int index; if (parent.ChildNameSearch(new RvDir(FileType.Dir) { Name = dir }, out index) == 0) { parent = (RvDir)parent.Child(index); } else { RvDir tpDir = new RvDir(FileType.Dir) { Name = dir, DatStatus = DatStatus.InDatCollect, Dat = tDat.Dat, Tree = new RvTreeRow() }; parent.ChildAdd(tpDir, index); parent = tpDir; } } } tDir = new RvDir(DBTypeGet.DirFromFile(thisFileType)) { Name = fullname, DatStatus = DatStatus.InDatCollect, Dat = tDat.Dat }; string testName = tDir.Name; int nameCount = 0; while (parent.ChildNameSearch(tDir, out index1) == 0) { tDir.Name = testName + "_" + nameCount; nameCount++; } tDir.Game = new RvGame(); tDir.Game.AddData(RvGame.GameData.RomOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("romof"))); tDir.Game.AddData(RvGame.GameData.Description, VarFix.String(gameNode.SelectSingleNode("description"))); tDir.Game.AddData(RvGame.GameData.Sourcefile, VarFix.String(gameNode.Attributes.GetNamedItem("sourcefile"))); tDir.Game.AddData(RvGame.GameData.IsBios, VarFix.String(gameNode.Attributes.GetNamedItem("isbios"))); tDir.Game.AddData(RvGame.GameData.CloneOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof"))); tDir.Game.AddData(RvGame.GameData.SampleOf, VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("sampleof"))); tDir.Game.AddData(RvGame.GameData.Board, VarFix.String(gameNode.Attributes.GetNamedItem("board"))); tDir.Game.AddData(RvGame.GameData.Year, VarFix.String(gameNode.SelectSingleNode("year"))); tDir.Game.AddData(RvGame.GameData.Manufacturer, VarFix.String(gameNode.SelectSingleNode("manufacturer"))); XmlNode trurip = gameNode.SelectSingleNode("trurip"); if (trurip != null) { tDir.Game.AddData(RvGame.GameData.Trurip, "yes"); tDir.Game.AddData(RvGame.GameData.Year, VarFix.String(trurip.SelectSingleNode("year"))); tDir.Game.AddData(RvGame.GameData.Publisher, VarFix.String(trurip.SelectSingleNode("publisher"))); tDir.Game.AddData(RvGame.GameData.Developer, VarFix.String(trurip.SelectSingleNode("developer"))); tDir.Game.AddData(RvGame.GameData.Edition, VarFix.String(trurip.SelectSingleNode("edition"))); tDir.Game.AddData(RvGame.GameData.Version, VarFix.String(trurip.SelectSingleNode("version"))); tDir.Game.AddData(RvGame.GameData.Type, VarFix.String(trurip.SelectSingleNode("type"))); tDir.Game.AddData(RvGame.GameData.Media, VarFix.String(trurip.SelectSingleNode("media"))); tDir.Game.AddData(RvGame.GameData.Language, VarFix.String(trurip.SelectSingleNode("language"))); tDir.Game.AddData(RvGame.GameData.Players, VarFix.String(trurip.SelectSingleNode("players"))); tDir.Game.AddData(RvGame.GameData.Ratings, VarFix.String(trurip.SelectSingleNode("ratings"))); tDir.Game.AddData(RvGame.GameData.Peripheral, VarFix.String(trurip.SelectSingleNode("peripheral"))); tDir.Game.AddData(RvGame.GameData.Genre, VarFix.String(trurip.SelectSingleNode("genre"))); tDir.Game.AddData(RvGame.GameData.MediaCatalogNumber, VarFix.String(trurip.SelectSingleNode("mediacatalognumber"))); tDir.Game.AddData(RvGame.GameData.BarCode, VarFix.String(trurip.SelectSingleNode("barcode"))); } RvDir tDirCHD = new RvDir(FileType.Dir) { Name = tDir.Name, DatStatus = tDir.DatStatus, Dat = tDir.Dat, Game = tDir.Game }; XmlNodeList romNodeList = gameNode.SelectNodes("rom"); if (romNodeList != null) { for (int i = 0; i < romNodeList.Count; i++) { LoadRomFromDat(ref tDir, romNodeList[i], thisFileType); } } XmlNodeList diskNodeList = gameNode.SelectNodes("disk"); if (diskNodeList != null) { for (int i = 0; i < diskNodeList.Count; i++) { LoadDiskFromDat(ref tDirCHD, diskNodeList[i]); } } if (tDir.ChildCount > 0) { parent.ChildAdd(tDir, index1); } if (tDirCHD.ChildCount > 0) { parent.ChildAdd(tDirCHD); } }
private static void LoadGameFromDat(DatDir parentDir, XmlNode gameNode) { if (gameNode.Attributes == null) { return; } DatGame dGame = new DatGame(); DatDir dDir = new DatDir(DatFileType.UnSet) { Name = VarFix.String(gameNode.Attributes.GetNamedItem("name")), DGame = dGame }; dGame.RomOf = VarFix.String(gameNode.Attributes.GetNamedItem("romof")); dGame.CloneOf = VarFix.String(gameNode.Attributes.GetNamedItem("cloneof")); dGame.SampleOf = VarFix.String(gameNode.Attributes.GetNamedItem("sampleof")); dGame.Description = VarFix.String(gameNode.SelectSingleNode("description")); dGame.SourceFile = VarFix.String(gameNode.Attributes?.GetNamedItem("sourcefile")); dGame.IsBios = VarFix.String(gameNode.Attributes?.GetNamedItem("isbios")); dGame.IsDevice = VarFix.String(gameNode.Attributes?.GetNamedItem("isdevice")); dGame.Board = VarFix.String(gameNode.Attributes?.GetNamedItem("board")); dGame.Year = VarFix.String(gameNode.SelectSingleNode("year")); dGame.Manufacturer = VarFix.String(gameNode.SelectSingleNode("manufacturer")); dGame.Runnable = VarFix.String(gameNode.Attributes?.GetNamedItem("runnable")); XmlNode tea = gameNode.SelectSingleNode("tea") ?? gameNode.SelectSingleNode("trurip"); if (tea != null) { dGame.IsTea = true; dGame.TitleId = VarFix.String(tea.SelectSingleNode("titleid")); dGame.Publisher = VarFix.String(tea.SelectSingleNode("publisher")); dGame.Developer = VarFix.String(tea.SelectSingleNode("developer")); dGame.Year = VarFix.String(gameNode.SelectSingleNode("year")); dGame.Genre = VarFix.String(tea.SelectSingleNode("genre")); dGame.SubGenre = VarFix.String(tea.SelectSingleNode("subgenre")); dGame.Ratings = VarFix.String(tea.SelectSingleNode("ratings")); dGame.Score = VarFix.String(tea.SelectSingleNode("score")); dGame.Players = VarFix.String(tea.SelectSingleNode("players")); dGame.Enabled = VarFix.String(tea.SelectSingleNode("enabled")); dGame.CRC = VarFix.String(tea.SelectSingleNode("crc")); dGame.CloneOf = VarFix.String(tea.SelectSingleNode("cloneof")); dGame.RelatedTo = VarFix.String(tea.SelectSingleNode("relatedto")); dGame.Source = VarFix.String(tea.SelectSingleNode("source")); } parentDir.ChildAdd(dDir); XmlNodeList romNodeList = gameNode.SelectNodes("rom"); if (romNodeList != null) { for (int i = 0; i < romNodeList.Count; i++) { LoadRomFromDat(dDir, romNodeList[i]); } } XmlNodeList diskNodeList = gameNode.SelectNodes("disk"); if (diskNodeList != null) { for (int i = 0; i < diskNodeList.Count; i++) { LoadDiskFromDat(dDir, diskNodeList[i]); } } XmlNodeList deviceRef = gameNode.SelectNodes("device_ref"); if (deviceRef != null) { for (int i = 0; i < deviceRef.Count; i++) { LoadDeviceRef(dGame, deviceRef[i]); } } XmlNodeList slotList = gameNode.SelectNodes("slot"); if (slotList != null) { for (int i = 0; i < slotList.Count; i++) { LoadSlot(dGame, slotList[i]); } } }