Skip to content

Releases: unexpectedpanda/retool

v2.4.8

02 Jan 00:50

Choose a tag to compare

  • Fix: Added yet another No-Intro date format: (MM-DD). This should help auto-detect versions in the Satellaview DAT file.

  • Fix: If you prefer RetroAchievements titles, and a compilation is the only variant of a RetroAchievements title, then that compilation is now selected in all scenarios.

  • Change: Retool used to append (Demo) to the short names of demos it found that were missing a demo tag -- it did this to prevent demos from getting confused with full versions of titles during title comparison. Unfortunately, it also made adding these titles to clone lists confusing for contributors, as you had to know what Retool was doing behind the scenes, and when to add the (Demo) string to a title in the clone list to match that behavior.

    Retool now handles demo/full version comparison behind the scenes without adding a (Demo) tag to short names, meaning you also don't need to know when to add it in clone lists.

v2.4.7

21 Dec 02:37

Choose a tag to compare

  • Feature: Retool now reports the uncompressed space you've saved after filtering (issue #361). Thanks for getting things started on this one, steven-sheehy!

  • Fix: Retool's icon is now shown on the macOS dock instead of the Python Launcher icon when running Retool GUI. Unfortunately it doesn't seem possible to change the name of the app in the dock or menu without providing an app bundle.

v2.4.6

18 Dec 10:22
530763f

Choose a tag to compare

  • Change: Excluding Add-ons now also excludes titles with (DLC), (Addon), and (Addon for XBLA) tags (issue #359). Thanks steven-sheehy!

  • Fix: Running tests through Hatch doesn't rely on there being a .dev file in Retool's root folder any more.

  • Fix: Fixed missing grip handle graphic between the DAT files list and the rest of the app.

  • Fix: If a user cancels out of adding DAT files, and there's no DAT files in the list, Retool now returns the placeholder text to "No DAT files added yet".

  • Fix: If you select Override global settings in the system Options tab, but nothing else in the options tab, Retool no longer outputs an empty options string ((-)) in the filename.

  • Fix: I bought myself a Mac, and so the following things have been fixed in the GUI on macOS:

    • The Settings and About options are now in the proper menus, and not moved by macOS heuristics into different places.

    • The delete key now works for removing items from list boxes.

    • The minimum width and height of the Retool GUI has been increased to accommodate better widget rendering on macOS.

    • Fonts are no longer statically set in the QT design file. Instead they're assigned on an OS-basis in Python, which avoids font loading miss penalties and wrong font sizes being assigned.

    • Many buttons now have a fixed size with explicitly set minimum and maximum sizes to prevent deformation into odd aspect ratios.

    • Custom checkboxes have been replaced with native checkboxes.

    • An outline has been removed from the status bar.

    • Tab contents have had their layouts reworked for consistent item placement.

    • Tabs labels now elide to the right to overcome tab width issues.

v2.4.5

16 Nov 02:02

Choose a tag to compare

  • Feature: Added some Nintendo mastering codes.
  • Change: Category matching is no longer case-sensitive (issue #357).

v2.4.4

26 Oct 04:33

Choose a tag to compare

  • Fix: Prevents stacking of RetroAchievements tags if a DAT file is processed more than once.

  • Fix: Fixed a type warning when dragging and dropping files using Retool with PySide6 6.10.0.0.

v2.4.3

20 Oct 09:24

Choose a tag to compare

  • Change: Titles with the (Video) tag are now categorized as Videos.

  • Fix: Updated QT version bundled with the compiled Windows version to correct issue #354.

v2.4.2

05 Oct 23:41

Choose a tag to compare

  • Change: The <rom> elements in output DAT files are now listed in alphabetical order based on file name. This makes it easier to find problems when analyzing DAT files.

  • Fix: Removed video regular expressions from the tags Retool ignores when grouping titles together. These were added accidentally in 2.4.0.

  • Fix: Original header output now works again for custom No-Intro DAT files (for example, RVZ and WUX versions of Redump DAT files). Turns out reading the file in as bytes required extra work to deal with LF line endings.

  • Fix: The data source that provided RetroAchievements hashes has switched from providing ISO, BIN, and CHD hashes to CHD and RVZ hashes. As such, Retool can now add RetroAchievements labels to MAME Redump DAT files.

v2.4.1

13 Aug 08:17

Choose a tag to compare

  • Fix: Turns out pathing in QT is case sensitive, and a path rename broke wherever there were arrow icons on buttons. This has now been fixed.
  • Fix: The <retool> element is now added to output DAT file headers again in all circumstances. This enables the skipping of files that have already been processed.
  • Fix: Added a Benesse ID regex to version detection.

v2.4.0

11 Aug 10:51

Choose a tag to compare

Consider this update a bonus, as I wanted to correct a few things. It isn't a sign of future updates to come.

Redump clone lists have been updated. No-Intro clone lists... maybe, maybe not. Pulling No-Intro data is just as arduous as it's ever been, its bot protection and missing downloads frustrating automating the process.

The primary focus of this update is fixing coding sins of the past, while making memory and speed improvements.

Benchmarking platform:

  • CPU: Intel Core i7 14700K (28 threads across 8 P-Cores and 12 E-cores)
  • RAM: 64GB DDR DD5-6400
  • Disk: Samsung SSD 990 Pro 2TB

Windows 10, Python 3.13.3 results:

DAT file Number of titles Options

DAT processing time

(seconds, averaged over five runs)

Peak memory usage

(Resident size, MB)

Measured by memory-profiler

v2.3.9 v2.4.0 Improvement v2.3.9 v2.4.0 Improvement
Commodore - Amiga CD 567 Default 1.45 0.35 4.14x 54.70 47.60 1.15x
Nintendo - Nintendo 3DS (Digital) (CDN) 10,152 Default 66.51 4.67 14.24x 298.10 197.80 1.51x
Nintendo - Nintendo Entertainment System 6,965 Default 3.71 2.68 1.38x 143.00 120.20 1.19x
Sony - PlayStation 10,776 Default 4.88 2.83 1.72x 286.50 207.70 1.38x
Sony - PlayStation 10,776 Exclude aABcdDefmMopPruv 10.58 3.04 3.48x 271.20 192.50 1.41x

Ubuntu 24.04.2 LTS on WSL, Python 3.12.3 results:

DAT file Number of titles Options

DAT processing time

(seconds, averaged over five runs)

Peak memory usage

(Heap size, MB)

Measured by Memray

Peak memory usage

(Resident size, MB)

Measured by Memray

v2.3.9 v2.4.0 Improvement v2.3.9 v2.4.0 Improvement v2.3.9 v2.4.0 Improvement
Commodore - Amiga CD 567 Default 0.35 0.34 1.03x 15.47 12.64 1.22x 67.13 62.92 1.07x
Nintendo - Nintendo 3DS (Digital) (CDN) 10,152 Default 63.75 3.70 17.23x 235.40 70.96 3.32x 336.40 126.10 2.67x
Nintendo - Nintendo Entertainment System 6,965 Default 5.93 1.56 3.80x 52.50 28.01 1.87x 113.30 79.79 1.42x
Sony - PlayStation 10,776 Default 3.63 2.24 1.62x 181.20 65.76 2.76x 255.80 118.10 2.17x
Sony - PlayStation 10,776 Exclude aABcdDefmMopPruv 8.27 2.31 3.58x 182.10 66.83 2.72x 257.60 118.80 2.17x

While I've done my best to equalize performance between Windows and Linux, the Python interpreter on Linux is much better than on Windows for multiprocessing, even when Linux is running under Windows. Mostly this is because of the different ways Python starts a process on different operating systems. Perhaps by the time the thread-free model becomes the default in Python and has been optimized things will change a little — but that's not going to happen for at least another year or more.

For curiosity, I ran the same Sony - PlayStation DAT file on Retool 0.53, which dates back to 2020. It took 2m, 10.51s to complete. Now it's down to 2.83s, a 46x speed improvement in five years. Knowledge is a crazy thing. At this point in time there probably isn't many big performance wins left to squeeze out, just a collection of infinite tiny tweaks of diminishing returns that are likely not worth making.

Here are the changes for 2.4.0:

  • Feature: Retool can now assign titles as RetroAchievements compatible by adding a retroachievements="yes" attribute on game or machine tags. You can also set your 1G1R title selection to prefer RetroAchievement titles. RetroAchievements data is retrieved from an external source. If the source stops updating or becomes unavailable, using RetroAchievements features won't be effective.

  • Feature: Unrecognized attributes in game and machine elements are now passed through to the output DAT file.

  • Feature: Unrecognized child elements in the game and machine elements are now passed through to the output DAT file.

  • Change: There's now a versionIgnore array in internal-config.json, which details the titles that shouldn't be picked up by automatic version detection. Retool's version detection originally caused confusion in creating clone lists, where you'd have to get tricky with workarounds for titles like Pokemon - Black Version 2, as Retool would see it as version 2.0 of Pokemon - Black — not its own game.

    Now, so long as those problem titles are in the versionIgnore ...

Read more

v2.3.9

08 Mar 23:22

Choose a tag to compare

  • Fix: Retool now handles empty description fields.

Setting expectations: this is not a comeback. It's just a minor fix to deal with a specific scenario.

Note

Update: Looks like PyInstaller packed things wrong the first time, including a large EXE file and a lot of unneeded dependencies. After upgrading PyInstaller, version 2.3.9 has been repacked, and is back down to the expected size. The updated file is attached here, and is also available to download from Retool's website.