Skip to main content

rhdndat finds rhdndat.ver files to check for romhacking.net updates

A version file is named rhdndat.ver and has a version number line followed by a romhacking.net url line, repeated. These correspond to each hack or translation. To check for needed updates to version file, if any patch version in the file does not match the version on the romhacking.net patch page, it presents a warning.

rhdndat-rn renames files and patches to new .DAT [1] [2] rom names if it can find the rom checksum in those .DAT files and memorizes the checksum of the ‘original rom’ as a extended attribute user.rhdndat.rom_sha1 to speed up renaming in subsequent executions (in unix, not windows).

To find the checksum of the original file for hardpatched roms, rhdndat-rn can support a custom convention for ‘revert patches’. Revert patches are a patch that you apply to a hardpatched file to get the original. These have the same name as the file and extension ‘.rxdelta’ and are done with xdelta3. I keep them for patch updates for cd images (since delta chd support is rare).

rhdndat-rn will read a xml dat file or every dat file from a directory given, and ask for renaming for every match where the rom filename is not equal to the dat name proposed. It will skip the question if all the names proposed already exist in the rom directory, and not allow a rename to a existing file in the rom directory.

Besides bare rom files, files affected by renames are compressed wii/gamecube .rvz files, .cue/.toc/.gdi (treated especially to not ask for every track), the softpatch types .ips, .bps, .ups, including the new retroarch multiple softpatch convention (a number after the softpatch extension), .rxdelta, .pal NES color palettes, and sbi subchannel data files.

No-intro recently changed its mind and all roms checksums in its dats no longer skip headers (regardless if they carry a headered and unheadered dat). To softpatch mismatching headers hacks, you can track down the right rom, hardpatch it, and create a softpatch from the current no-intro rom to the older patched rom. For sfc and pce ips hacks that target a headered rom I recommend ipsbehead³ to change the patch to target the no-header rom if possible.

When you update a no-intro set, all romhacks roms should not be also updated because otherwise the hacks stop working and yet users are encouraged go keep the same directory platforms roms in the same base directory, including hacks (for for example, have a single canonical retroarch playlist) which makes rhdndat-rn scans complain about the massive mismatching roms from older sets to the new set. I dont really encourage keeping a single combined hacks and nointro same directory set, but I do have a solution to make rhdndat-rn stop complaining: create a .rxdelta patch from each affected rom, to the new nointro rom, which allows you to update names for translations at least, if you keep the original name for those.

Requires xdelta3 (to process rxdelta) and dolphin-tool (to operate on rvz files) on path or the same directory.

To check for updates if you have the version files:

rhdndat romdir

check if there are any updates

To rename files if you have the dat files:

rhdndat-rn [--force] [--ext a78 --ext nes ...] romdir xmlpath

the rom extensions should be all file extensions on the files you want to rename (see below for default)

rhdndat [OPTIONS] ROMDIR
ROMDIR:

Directory to search for versions to check. [required]

--show

Show link to each checked directory.

--install-completion

Install completion for the current shell.

--show-completion

Show completion for the current shell, to copy it or customize the installation.

--help

Show this message and exit.

rhdndat-rn [OPTIONS] ROMDIR XMLPATH
ROMDIR:

Directory to search for roms to rename. [required]

XMLPATH:

Xml dat file or directory to search for xml dat files to use as source of new names. [required]

--skip DIRECTORY

Directory to skip, can be repeated.

--ext TEXT

ROM extensions to find names of, can be repeated. Note that you can ommit this argument to get the predefined list. [default: a78, hdi, fdi, ngc, ws, wsc, pce, gb, gba, gbc, n64, v64, z64, 3ds, nds, nes, lnx, fds, sfc, smc, bs, nsp, 32x, gg, sms, md, iso, dim, adf, ipf, dsi, wad, cue, gdi, toc, rvz]

--force

Force a recalculation and store of checksum (on windows the calculation always happens).

--no-rename

Check and store checksums only.

--verbose

Print more information about skipped roms.

--install-completion

Install completion for the current shell.

--show-completion

Show completion for the current shell, to copy it or customize the installation.

--help

Show this message and exit.

Install

rhdndat requires python 3.8 or later.

rhdndat may fail to execute in linux if the dir ~/.local/bin to is not in the $PATH.

In windows, you’ll want to check the option to “Add Python to PATH” when installing python.

The project can be installed with pip but you’ll have to provide your own xdelta3 and dolphin-tool executables in the path (or current dir) for supporting rvz and rxdelta.

In linux just installing xdelta3 from the repositories is enough, in windows, placing a executable for xdelta3 named xdelta3.exe in the python install Scripts directory if you installed with the path option selected is enough.

In linux you’ll have to build dolphin-tool (it’s not built by dolphin-emu packages) and place it in ~/.local/bin, and in windows you can copy it from the dolphin install directory, rename it to dolphin-tool.exe and place it in the python install Scripts directory.

Latest release

pip install --force-reinstall rhdndat

Current code

pip install --force-reinstall https://github.com/i30817/rhdndat/archive/master.zip

Release files for rhdndat 2.8.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rhdndat 2.8.4
File Size Uploaded
rhdndat-2.8.4.tar.gz 29.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rhdndat 2.8.4
File Interpreter ABI Platform
rhdndat-2.8.4-py3-none-any.whl Python 3 none any Details

Total release size: 58.6 kB

Release files / rhdndat-2.8.4.tar.gz

Download URL rhdndat-2.8.4.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c36ad3b69b95ee5d9b1b957b106eab10a34fe36bf3bafd9f99201cb60a4b3988
BLAKE2b-256 checksum
How to use checksums
89065f20ebb04b82ddcfb5d0ff56765f5751751815e20bdfabd6767175636b1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 3, 2026.

Transparency log

Release files / rhdndat-2.8.4-py3-none-any.whl

Download URL rhdndat-2.8.4-py3-none-any.whl
Size 29.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e70e6ee426d56913c29fa78c308ecfe61132b90b49b168efc22a478867d9494e
BLAKE2b-256 checksum
How to use checksums
cadccc46080b8556a7c35d5b29063a5c9e42d37c88679af9a486b31a582e4717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.8.4 This release

2 release files

2.8.3

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.9

2 release files

2.7.8

2 release files

2.7.7

2 release files

2.7.6

2 release files

2.7.5

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.9

2 release files

2.6.8

2 release files

2.6.7

2 release files

2.6.6

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.9

2 release files

2.5.8

2 release files

2.5.7

2 release files

2.5.6

2 release files

2.5.5

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.15

2 release files

1.4.14

2 release files

1.4.13

2 release files

1.4.12

2 release files

1.4.10

2 release files

1.4.9

2 release files

1.4.8

2 release files

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page