[Scummvm-cvs-logs] SF.net SVN: scummvm:[46037] scummvm/trunk/tools/create_kyradat/ create_kyradat.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sat Nov 21 04:51:19 CET 2009


Revision: 46037
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46037&view=rev
Author:   lordhoto
Date:     2009-11-21 03:51:18 +0000 (Sat, 21 Nov 2009)

Log Message:
-----------
Speed up extraction by only adding matching providers to search list.

Modified Paths:
--------------
    scummvm/trunk/tools/create_kyradat/create_kyradat.cpp

Modified: scummvm/trunk/tools/create_kyradat/create_kyradat.cpp
===================================================================
--- scummvm/trunk/tools/create_kyradat/create_kyradat.cpp	2009-11-21 03:49:55 UTC (rev 46036)
+++ scummvm/trunk/tools/create_kyradat/create_kyradat.cpp	2009-11-21 03:51:18 UTC (rev 46037)
@@ -1231,6 +1231,9 @@
 	return true;
 }
 
+// Uncomment this to get various debug information about the detection table entries.
+//#define DEBUG_EXTRACTION_TABLES
+
 bool setupSearch(const Game *g, const int *needList, Search &search, SearchMap &searchData) {
 	for (const int *entry = needList; *entry != -1; ++entry) {
 		ExtractEntryList providers = getProvidersForId(*entry);
@@ -1240,9 +1243,16 @@
 			return false;
 		} else {
 			for (ExtractEntryList::const_iterator i = providers.begin(); i != providers.end(); ++i) {
-				// We'll add all providers here...
-				search.addData(i->hint);
-				searchData.insert(SearchMapEntry(*entry, *i));
+				// Only add generic or partly matching providers here.
+#ifndef DEBUG_EXTRACTION_TABLES
+				if ((i->lang == UNK_LANG || i->lang == g->lang[0] || i->lang == g->lang[1] || i->lang == g->lang[2]) &&
+				    (i->platform == kPlatformUnknown || (i->platform == g->platform))) {
+#endif
+					search.addData(i->hint);
+					searchData.insert(SearchMapEntry(*entry, *i));
+#ifndef DEBUG_EXTRACTION_TABLES
+				}
+#endif
 			}
 		}
 	}
@@ -1379,6 +1389,11 @@
 					continue;
 				}
 
+#ifdef DEBUG_EXTRACTION_TABLES
+				if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
+					printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
+#endif
+
 				map.insert(**bestMatch);
 			}
 		} else {
@@ -1390,6 +1405,11 @@
 				continue;
 			}
 
+#ifdef DEBUG_EXTRACTION_TABLES
+			if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
+				printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
+#endif
+
 			map.insert(**bestMatch);
 		}
 	}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list