Read Game ID 1.2 Released

Submitted by jbreland on Wed, 08/15/2018 - 23:02

I've released a couple new versions of Read Game ID, adding support for more systems and formats and fixing a couple of bugs.  Changes:

1.1 (08/12/2018):
    Add support for PS3, Vita, and PS4 PSN packages
    Add support for PSP ISOs and CSOs
    Add support for Vita NoNpDrm zip packages
    Fix bug with PS4 attribute 2 metadata

1.2 (08/15/2018):
    Add -d option to specify temp directory
    Add support for PS4 discs with multiple game packages, such as Life Is Strange: Before the Storm

Download from the Read Game ID page.

New Utility: Read Game ID Released

Submitted by jbreland on Sat, 08/11/2018 - 14:00

Read Game ID ( is a Linux-native script to read the game ID from rips of PlayStation game backups.  It provides an easy way to get the ID if your particular ISO or BIN/CUE image.  Note that most end users will not need this, but if you are in a situation where you need to know the game ID, this will be of use.

Please see the Read Game ID page for details and the download link.

Website Update

Submitted by jbreland on Thu, 08/09/2018 - 23:03

General FYI - I modified the PHP configuration on my webserver, converting over to FPM from the old mod_php mode.  This was done to address some compatibility issues, but this change itself can cause other compatibility issues.  Did a spot check of the various components and things *seem* to be good, but if you notice anything broken, please let me know.


Verify Game 3.2 Released

Submitted by jbreland on Sun, 08/05/2018 - 01:34

This is a relatively minor update with a couple useful changes:

  • The new -t option can be used to specify the max number of threads.  As noted in the Technical Details, the default behavior of using all available threads can be problematic in certain situations.
  • I've worked on this script over a few years, and Redump has changed their DAT file naming scheme since I initially started.  I updated all of the DAT filenames in the script to match the current standard, which should make getting started easier for new users.


The two additional changes are pretty minor:

  • Add support fpr pc-fx, vita-psn[-dec]
  • Include support for both encrypted and decrypted PSN files


You can grab the latest version for the Verify Game page.

New Utility: Verify Game Released

Submitted by jbreland on Wed, 08/01/2018 - 01:28

Verify Game ( is a Linux-native script to check and verify your video game backups (ROMs/ISOs/etc.) against trusted sources.  It's meant to fill the gap for this kind of utility under Linux.  It's intended to just verify games, so there are no additional ROM management features included such as renaming, but it does include a few handy features such as transparent decompression and parallel verification.

Please see the Verify Game page for details and the download link.

This is one of the many scripts I mentioned in my general update that I've been tinkering with for the last few years, hence the immediate jump to version 3.1.  :-)  Expect more to follow.

How to Strip and Inject XCI (Nintendo Switch ROM) Certificates under Linux

Submitted by jbreland on Tue, 07/31/2018 - 22:02

Note: I previously posted this to Reddit, but posting here as well for permanence.  This post is of a technical nature and focuses on messing with dumped Nintendo Switch game cartridges, so for most people reading this site it'll be of little interest.  For anyone else interested in the subject, by all means continue reading...

This won't be of much use to people running Windows, but it may be helpful for fellow Linux users (and potentially OSX users as well). This will show to to strip a certificate out of a dumped XCI ROM, as well as restore it to return the ROM back to its original state. XCI Explorer provides an easier way to do this from within Windows, I just don't run Windows. :-)

So here is a Cave Story+ ROM that I dumped with gcdumptool:

$ md5sum Cave\ Story+.xci
a311902acb6813bf61f9cde9e0139913  Cave Story+.xci

If I try to verify the ROM (using a home-grown scripts that checks against no-intro DAT files), we'll see it doesn't match because the certificate field is stripped in the No-Intro dumps:

$ -p xci Cave\ Story+.xci
Warning: No match found for XCI game 'Cave Story+.xci'

Using the following dd and printf commands I can strip the certificate and copy it to a separate file. Note that the checksum of the new XCI is different from the original and, this time, matches against No-Intro:

# First, backup the certificate to a separate file
$ dd bs=1 skip=28672 count=512 if=Cave\ Story+.xci >Cave\ Story+.cert
512+0 records in
512+0 records out
512 bytes copied, 0.0010961 s, 467 kB/s

$ ls -l Cave\ Story+.cert
-rw-r--r-- 1 user user 512 2018-07-30 19:01 Cave Story+.cert

# Next, strip the certificate from a copy of the ROM file
$ cp Cave\ Story+.xci test.xci
$ printf '\xff%.0s' {1..512} | dd bs=1 seek=28672 count=512 conv=notrunc of=test.xci
512+0 records in
512+0 records out
512 bytes copied, 0.00115365 s, 444 kB/s

$ md5sum Cave\ Story+.xci test.xci
a311902acb6813bf61f9cde9e0139913  Cave Story+.xci
af8ac186efd0fa1a02d0c63c40dd2fd4  test.xci

$ test.xci
Verified XCI game: Cave Story+ (USA).xci

So far, so good. Now, let's say something happened to my original dump of Cave Story+ and I wanted to inject my certificate back into the stripped copy to re-create the original. The following dd command will write the certificate back to the ROM. Note that the test.xci file then has the same checksum as the original.

$ cat Cave\ Story+.cert | dd bs=1 seek=28672 count=512 conv=notrunc of=test.xci
512+0 records in
512+0 records out
512 bytes copied, 0.000806952 s, 634 kB/s

$ md5sum Cave\ Story+.xci test.xci
a311902acb6813bf61f9cde9e0139913  Cave Story+.xci
a311902acb6813bf61f9cde9e0139913  test.xci

Hope someone finds this helpful.

Legroom General Update

Submitted by jbreland on Tue, 07/31/2018 - 17:47

Wanted to put out a short general update. I clearly haven't been putting much time into the website in recent years. It honestly just hasn't been enough of a priority compared to other stuff going on. Heck, it's been over a year since my last post, about a major upgrade mentioning a few remaining issues that I still need to resolve... and those issues are still unresolved. Sigh

However, while I haven't posted much to the website, I've still been tinkering around with stuff, writing new scripts and whatnot that would be of interest to at least some people out there. I'm going to make an effort over the next few days to start publishing this stuff on the site so it's publicly available. To be clear, nothing here will be earth-shattering, but it'll include a few posts, scripts, tips & tricks and whatnot that some my find useful. So, you'll see a flurry of activity while I'm working on this, and then afterward I'll try to get back into the habit of posting new stuff here to share with the world.

In the process I'll likely clean up some other content on the site. Much of the content is dated and I've left it on here solely for archival reasons, but I mean really - how useful is my Installing Gentoo Linux page originally written in 2003 for a Pentium III-based system really going to be today? I'm not sure yet what will go and what will stay, but just a heads up that changes are coming. That's it for now. If anyone's still reading this site after being idle so long, well, buckle up. Going to get (comparatively) busy soon!

Major Website Upgrade

Submitted by jbreland on Sun, 04/09/2017 - 16:04

I've recently upgraded the website, as the new look of the site probably gave awway.. This was a major upgrade, with some significant changes:

  • I've upgraded from Drupal 6 to Drupal 8. I got most of the old content migrated over, but it's still a work in progress.  Currently:
    • Most visibly, I've switched to the default Drupal 8 theme, bartik.  It's not ideal, but it'll take quite some time to port over my old theme, so I'm not sure what I'm going to do about it yet.  At the very least I plan on tweaking bartik to better meet my needs, but I'm not sure how much of the old look and feel I'll be able to pull over.
    • Forum content is completely missing.  This appears to be due to a bug in the migration scripts.  I'll see if I can write a script to cover that myself, but honestly don't know if it's going to be worth the trouble considering they've been read-only for several years now.
    • Navigation/links/permissions may not be 100% correct at this point, though most things should work.  I need to tweak a few things to work with the new/different permissions available in this version of Drupal.
    • There are known rendering issues on several pages, especially wherever dates are shown.  I haven't had time to rewrite them to use the new Drupal API yet.
  • I've upgraded from PHP 5 to PHP 7.  This has affected a number of support scripts on the website, but I believe the user-facing scripts should be working as expected now.  Finding and fixing all issues in all scripts will likely be an ongoing process for some time.
  • I've switched to Let's Encrypt for TLS certificates instead of my own LegRoom CA.  This has two important implications:
    • From now on, the secure (HTTPS) version of my website should be trusted by any browser.
    • As a result, I'm forcing encryption on by default for all visitors.

I'll be tweaking the site much more and working out the kinks over the next few days.  In the meantime you see anything obviously wrong or missing, please let me know so I can add it to the list.

Convert to FLAC 2.1.4 Released

Submitted by jbreland on Sat, 09/03/2016 - 23:08

I just uploaded a minor update to Convert to FLAC. It adds support for converting Windows Media Audio (WMA) Lossless and Meridian Lossless Packing (MLP). MLP is a format commonly used on DVD-Audio and Blu-ray audio discs; note that you'll need some way to decrypt and rip the MLP files from the disc - they can't be copied directly.

For more information:
Convert to FLAC home page and downloads
Convert to FLAC ChangeLog

New Tutorial: How to Hack and Take Full Advantage of Your Wii

Submitted by jbreland on Wed, 12/03/2014 - 00:45

I picked up a Wii earlier this year and decided to hack it to see what benefits that would provide. The results were, to be honest, quite spectacular. After spending quite some time digging through various HOWTOs scattered across the internet with often conflicting or out of date information, testing different configurations and applications, and running through quite a bit of trial-and-error, I finally have a solid and extremely functional Wii that lets me do pretty much anything I want with it. Some of the highlights include:

* Boot directly to WiiFlow (a slick homebrew launcher application), bypassing the health and safety screen and main Wii menu
* Rip any Wii or GameCube game to an attached 500 GB USB drive
* Browse, select, and launch any previously ripped Wii game from the USB drive
* Browse, select, and launch any previously ripped GameCube game from the USB drive (note: this requires a GameCube-compatible Wii)
* Play older games via emulators (though, honestly, PC emulators provide a better experience)
* Run various and miscellaneous utilities such Wii and GameCube memory card management utilities, allowing me to copy/backup saved games from the Wii or GameCube memory card to my computer

The end result is that I have every one of my 27 Wii games and and 25 GameCube games ripped and stored on the USB drive, and I can play any one of them now by simply powering on the Wii, browsing to the desired game in WiiFlow, and pressing A on the controller. No more disc swapping, and no more worrying about where to even store all of the games so they're accessible (they're now all boxed up in a closet, along with my GameCube). It's a wonderful thing. :-)

For details on how to hack your own Wii, if you're interested in that sort of thing, please continue reading:

How to Hack and Take Full Advantage of Your Wii