GoodMerge Icon
GoodMerge
PHP Powered Icon
PHP Powered
MySQL Icon
MySQL Powered
jEdit Icon
Written in jEdit
XHTML 1.1 Icon
Valid XHTML 1.1
CSS 2.1 Icon
Valid CSS 2.1
Title Bar IconGoodMergeTitle Bar Buttons

Current Status

  • GoodMerge Source/Binary - 3.1.2199.25374
  • GoodXMDBs Pack - 2006/11/23
  • Languages - Deutsch, English, Español, Français, Português, Svenska, Türkçe, 繁體中文, 简体中文

What is GoodMerge?

GoodMerge is the ultimate space-saving companion tool to Cowering's Good ROM Renamer suite. It takes a ROM image collection (raw or compressed) and a “*Have.txt” file and produces a number of 7Z, RAR, Ace, or Zip archives with all the files associated with a particular game stored in one file.

Merging your ROM sets has two immediate benefits: excellent compression (often better than storing all the images in one archive) and easily navigable organization (only one file per game).

Details and Theory

Typically, there are two major methods for storage of ROM images: one ROM image per zip file, and one solid archive for the entire collection. Let's compare these methods to GoodMerge:

Storage MethodOrganizationUsabilityCompression
One File per ArchiveLowHighLow
Single Solid ArchiveLowLowHigh
GoodMerge ArchivesHighHighHigh

Organization should be obvious. To find a game in a merged collection, a user need only search for the game name instead of wading through lots of files with different flags.

Zip files score high in usability because they are directly supported by many popular emulators. However, most emulators also support launching a specified game from the command line. That means that the ROM extension can be associated with the emulator and playing a game becomes as simple as double-clicking the file. For this reason, GoodMerge archives have high usability as well. A single solid archive has very low usability, sometimes decompressing several gigabytes of data just to retrieve one particular image.

As for compression, simply put, solid archiving saves space. However, it can also be optimized. The single most important technique for obtaining a good compression ratio with solid archives is the grouping of similar items together. This turns out to be great for ROM images because there are many files that differ by only a few bytes.

Thus, GoodMerge arranges files by first stripping the flags from GoodTool renamed images, then grouping the games that have different names in different regions. Consider, for example, the game Castlevania. While it may be obvious that “Castlevania (U)” and “Castlevania (U) [b1]” should be grouped together, it is not so obvious that “Akumajou Dracula (J)” (the Japanese name) and “Schoolvania” (a hacked version) should also belong in this group.

Note that for vastly different files, solid archive compression actually has very little advantage. Since this is generally the case with different games, having a separate archive for each game does not generally result in much wasted space.

Also, for very small sets, a single solid archive will nearly always achieve better compression because the sliding dictionary is able to encompass the entirety of the data. However, for sets with larger ROM sizes or lots of name changes (Nintendo and Sega), there is often a gain in this area.

Finally, when using 7-zip, GoodMerge automatically maximizes the dictionary when necessary, based on your available RAM. RAR and ACE archives currently support only a 4M dictionary, and thus will perform only marginally better than zip when individual ROMs are any larger than 2M. Zip, of course, does not support solid archives at all, and GoodMerge will provide no benefit besides organization.