v2.02.0
-
Breaking change: The clone list format has changed. Update to 2.02.0 to avoid issues.
-
Feature: You can now output a DAT using the local name of a title in unicode, if it's available in the metadata scraped from Redump and No-Intro, or included in a clone list. For example, instead of
Shining Force II - Inishie no Fuuin (Japan), you can outputシャイニング●フォースII 『古の封印』 (Japan). Tags like(Japan)and(Disc 1)remain in English.Open the Local names tab to choose which languages to enable local names for, and to set language priorities for titles with multiple local names.
This is very much a work in progress. Both No-Intro and Redump aren't consistent about recording local names, so there are plenty missing. Retool community contributions are needed to fill the gaps. Find something you think should have a local name? Create an issue or pull request, provide the correct name, and post a screenshot of the title screen or box image for validation.
-
Feature: You can now add
filtersto a title entry in clone lists. Think of thefiltersparameter as an easy way to isolate specific titles in a search result, and apply changes to them based on conditions.For example:
{ "group": "Bomberman GB 2", "titles": [ { "searchTerm": "Bomberman GB 2", "filters": [ { "conditions": {"matchRegions": ["Japan"]}, "results": {"group": "Bomberman GB"} } ] } ] }In the previous example the
searchTermofBomberman GB2finds all titles with the short nameBomberman GB2, and gathers them in theBomberman GB2group. If the region of a title happens to includeJapan, then that title is moved to the groupBomberman GBinstead.Conditions include:
-
matchRegions:array[string]. Regions a title must have for the condition to be true. -
matchLanguages:array[string]. Languages a title must have for the condition to be true. -
matchString:regex string. A regex string that must find a match in a title's full name for the condition to be true. -
regionOrder:object[string, array[string]]. The user region order that must be fulfilled for the condition to be true.
All conditions in a filter must be true for the
resultto be executed.Results include:
-
categories:array[string]. A list of categories to assign to the title. -
englishFriendly:bool: Whether a title is English friendly. -
group:string. The group to assign the title to. -
localNames:object[string, string]: Local names to assign to the title. -
priority:integer. The clone list priority to assign to the title. -
superset:bool. Elevate the title to a superset.
-
-
Feature: You can now mark titles as "English friendly" in clone lists. For example, the Japanese version of Enduro Racer on the Sega Master System has twice as many levels as the USA version. Of what little text there is, it's in English, but the No-Intro database lists its language as Japanese. To make sure the Japanese version is selected even when USA is higher in the region order, we can construct a clone list entry as follows:
{ "group": "Enduro Racer", "titles": [ { "searchTerm": "Enduro Racer", "filters": [ { "conditions": { "matchRegions": ["Japan"] }, "results": { "englishFriendly": true, "superset": true } } ] } ] }You don't always need a filter to apply the
englishFriendlytag — it's available at thesearchTermlevel as well. -
Change: To better support regional language variants, the following languages have been split:
-
Chinese is now available as Chinese (Simplified) and Chinese (Traditional). They detect
Zh-HansandZh-Hantrespectively, but also the generic Chinese code ofZh. When faced with justZh, Retool attempts to infer which written language is used based on region. This won't be perfect — if a mismatch is found in No-Intro, get them to use the more accurate language code. If a mismatch is found in Redump, all you can do is request that they adopt the more accurate language codes in the first place. -
Portuguese is now available as Portuguese and Portuguese (Brazilian). Brazilian titles with no language set are now set to
Pt-BRinstead ofPt. -
Spanish is now available as Spanish, Spanish (Latin American), and Spanish (Mexican). Mexican titles with no language set are now set to
Es-MXinstead ofEs.Latin American titles with no languages set are now set toEs-XL. -
French is now available as French and French (Canadian).
-
-
Change: The
Asiaregion no longer has an implied language of English. At the time this was implemented, the majority ofAsiatitles supported English, but those days are definitely gone and there's no way to tell language support for a title programmatically. If you find anAsiatitle with no languages listed, get No-Intro or Redump to fix it. -
Change: There's now a check if a DAT file starts a filename with
.. In these circumstances, it's replaced with the fixed-width version,.. -
Change: Clone lists have been refactored for greater flexibility and to make contributing easier.
-
Group names in clone lists are now used verbatim, instead of being converted to a sanitized equivalent. This means you can include parentheses and version-like strings such as "v2" and they won't get stripped, reducing potential confusion for contributors.
-
The
overridesarray is no longer supported in clone lists. Instead, use thefiltersparameter in the same object as asearchTermin thevariantsarray.For example, take the King's Field problem.
Japanese title Equivalent USA title King's Field None King's Field II King's Field King's Field III King's Field II How do we deal with King's Field (Japan) not getting mixed up with King's Field (USA), or King's Field II (Japan) getting mixed up with King's Field II (USA)?
This is how you'd do it with old school overrides:
"overrides": [ { "searchTerm": "King's Field II (Japan)", "newGroup": "King's Field" }, { "searchTerm": "King's Field (Japan)", "newGroup": "King's Field Japan" } ]
Now it's all done with
filtersin thevariantsarray:"variants": [ { "group": "King's Field", "titles": [ { "searchTerm": "King's Field", "filters": [ { "conditions": {"matchRegions": ["Japan"]}, "results": {"group": "King's Field (Japan)"} } ] } ] }, { "group": "King's Field II", "titles": [ { "searchTerm": "King's Field II", "filters": [ { "conditions": {"matchRegions": ["Japan"]}, "results": {"group": "King's Field"} } ] } ] } ]
In the previous example:
-
The group
King's Fieldcollects all titles that match the short nameKing's Field. When Retool finds aKing's Fieldtitle with a region ofJapan, it's moved to the groupKing's Field (Japan). -
The group
King's Field IIcollects all titles that match the short nameKing's Field II. When Retool finds aKing's Field IItitle with a region ofJapan, it's moved to the groupKing's Field.
It's ultimately more code, but it allows greater flexibility when combined with the rest of the
filtersoptions, not to mention everything now lives in thevariantsarray so you don't have to look in two places. Additionally, Retool should be a bit more performant as a result of this change. -
-
The
categoriesarray is no longer supported in clone lists. Instead, add acategorieskey in the same object as asearchTermin thevariantsarray:{"searchTerm": "Cite des Enfants Perdus, La", "categories": ["Games", "Demos"]}You can also set
categoriesat the top level to apply categories to every title in the group (unless categories have been set at the individual title orfilterslevel). In the following example, everything in thetitlesarray now has the categories ofGamesandDemos:{ "group": "City of Lost Children, The", "categories": ["Games", "Demos"], "titles": [ {"searchTerm": "Cite des Enfants Perdus, La"}, {"searchTerm": "City of Lost Children, The"}, {"searchTerm": "Ciudad de los Ninos Perdidos, La"}, {"searchTerm": "Lost Children - The City of Lost Children"}, {"searchTerm": "Stadt der verlorenen Kinder, Die"} ] } -
The
removesarray is no longer supported in clone lists. Instead, set a property of"ignore": truein the same object as asearchTermin thevariantsarray:{"searchTerm": "Cite des Enfants Perdus, La", "ignore": true}You can also set an
ignoreat the top level to ignore every title in the group. In the following example, everything in thetitlesarray is now ignored by Retool:{ "group": "City of Lost Children, The", "ignore": true, "titles": [ {"searchTerm": "Cite des Enfants Perdus, La"}, {"searchTerm": "City of Lost Children, The"}, {"searchTerm": "Ciudad de los Ninos Perdidos, La"}, {"searchTerm": "Lost Children - The City of Lost Children"}, {"searchTerm": "Stadt der verlorenen Kinder, Die"} ] }As with the
removesarray, anignorecompletely removes a title from Retool's consideration. You should only useignoreif you can't achieve what you want using other clone list methods. -
The
tagFreename type is no longer supported in clone lists. Clone list capability has been improved enough that it's no longer required.
-
-
Change: DAT filename tags have been externalized into
internal-config.jsonso the Retool application doesn't have to be updated when No-Intro makes a change. -
Change: Closing the main Retool GUI now force closes the title tool if it's open, so the app quits as expected.
-
Change: Shifted some search terms from regex to strings for a small speed boost.
-
Fix: Depending on region settings, sometimes a superset could be assigned as both a parent and clone. Retool used to remove clone relationships in this instance to resolve conflicts, but this resulted in unwanted supersets being in the output DAT. It now assigns titles with the superset as a parent to the superset's parent instead.
-
Fix: Windows: Fixed checkboxes flickering on hover on 4k monitors.
-
Fix: Ubuntu: link colors are now more readable in dark mode, and title tool fields are no longer white text on a white background.