Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
Image: Damien McFerran / Time Extension

Once upon a time, save data was immovable and untouchable; when you sold your game cartridge or its internal battery died, your precious progress was lost forever. However, in the modern era, save data is saved in the cloud, always accessible, even if you change consoles.

With emulation increasingly becoming one of the most convenient ways of playing classic games, many of us are grappling with the issue of managing and migrating our save data across multiple platforms, such as emulation handhelds, PCs and even smartphones. The problem is that this data isn't a one-and-done deal; different emulators create different save files, and managing them as you upgrade your equipment can be something of a nightmare.

Euan Forrester has made it his mission to tackle this onerous issue. He's the brains behind the indispensable Save File Converter, an online tool which allows you to effortlessly convert save data for a wide range of consoles so it can be used with platforms such as the Retron 5, flash carts, MiSTer FPGA and more.

Keen to learn more about this amazing project, we sat down with Forrester for a chat.


Time Extension: What inspired you to create the Save File Converter tool?

Euan Forrester: I didn’t set out to do any of this. I just wanted to copy the save files from my cartridges before the batteries died.

I started by writing a simple command-line tool to convert save files from the Retron 5. I had seen My Life in Gaming’s first video about preserving save files from old cartridges and in it they mentioned that the Retron5 was the cheapest way to begin. So I bought one and started copying the saves off my carts.

The Retron5 has a bit of a reputation for corrupting saves, so I wanted to test my saves in an emulator. I wrote my own little converter for Retron 5 save files because the existing one was Windows-only, and I have a Mac. Like most programmers I made it as a simple command-line tool. The problem was when I bought some new games and came back to my tool a few months later, I had completely forgotten how to use it. It had seemed so simple when I wrote it, but coming back again later, it felt unintuitive and clunky.

I needed to make a better user interface. I did some Googling and found that I could read a file, process it, and write it out again using a web browser. That seemed simpler than figuring out how to write a Mac application. I rewrote my little tool as a website, registered a domain, and put it online.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
Forrester's save data project began with the Retron 5, an emulation console from 2010 — Image: Damien McFerran / Time Extension

As time went on, I wanted other converters. In Zelda Four Swords on the GBA, I wanted to play the new single-player dungeon on my cart without having to do the multiplayer part. There are saves on GameFAQs that unlock it, but they’re in a different format. I wanted to be able to take my Suikoden save from my PS1 and load it into Suikoden 2 on my PSP because I couldn’t afford to buy a physical copy of the second game on PS1.

These conversions were surprisingly hard to do at the time. To convert the Zelda save, I would have had to download an entire GBA emulator, and I had to use 2 or 3 tools to get the PS1 save converted. So instead, I did some poking around to figure out these file formats. I read the code from the GBA emulator and the PS1 converters and used those to write my own simpler converters and put them on the site.

It occurred to me around then that this would be a great project to do as a stay-at-home dad. I could work on a small project, a tool for one specific format, and then release it. Not investing much time but still accomplishing something. I don’t have time to work on a big project because I’m always being interrupted, and this gives me a taste of my former life as a game programmer.

Over time, these small projects have become a big one I guess.

What's been the most significant technical challenge when it came to putting the tool together?

The biggest technical challenge has probably been the Sega CD save format, which has also been one of the least-used tools on the site! I feel particularly proud of that one, though, because it was the first time someone reached out to me with code they’d written.

His username on github is superctr and he had just recently reverse-engineered the Sega CD save format. That format is very hard to read because the data is (optionally) interleaved with error correction information, so in a hex editor, it all just looks like garbage. Previously, I had reached out to the author of one of the most prominent Genesis emulators asking about the Sega CD save format, and even he didn’t know how it worked, saying that the BIOS just handles it all for the emulator. So superctr’s work was very impressive.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
MiSTer is one of the platforms which benefits most from Forrester's work — Image: Damien McFerran / Time Extension

Superctr’s repo is reverse-engineered from the Sega CD BIOS, so the code is quite complex and I found it hard to see “through” the code to understand the underlying format. And although the error correction was based on common algorithms they had custom implementations that changed their output from the standard that one would expect. I spent quite a bit of time trying to find standard libraries for those algorithms that would produce the same output before having to give up and write my own based on superctr’s implementations.

The funniest challenge, though, has been the treasure hunt. The research phase of each format is definitely my favourite part. For example, for the Sega Saturn tools that I recently released, I had to read a 15-year-old forum post, some 30-year-old Sega technical documentation, code in several GitHub repositories, and a machine-translated Reddit post. I enjoy assembling this information that no one was really intended to know.

The difficulty of doing this has also become one of my main motivations for the site: to be a single, open-source place where people can find plain English descriptions of all of these formats alongside working code and tests. It shouldn’t be so hard to find information about save file formats, so I’m trying to make it a bit easier.

In addition to preserving information about the formats, preserving old save files themselves has become a big motivation for me. They might be archived on places like GameFAQs, or childhood saves found on individual people’s hardware. Many of these files were unreadable without a lot of digging for various tools, some of which can be hard to get running on modern hardware, and it’s nice to help make these files useful again.

What's the feedback been like from the community?

Feedback from the community has completely changed the direction of the site. For the first year or two of the project, my goal was to make a converter for every format on GameFAQs. But then one day a member of the MiSTer community, birdybro, reached out on github. He said that it was difficult for users to convert Sega Genesis save files to and from the MiSTer and asked if I would consider adding a converter for them to the site.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
Support for the Saturn flash cart Saroo is also included on Save File Converter — Image: Damien McFerran / Time Extension

There’s a quote from Steve Jobs that I really like: “People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things.”

So, initially, I said no. It was a good idea but it didn’t fit the focus that I had for the site.

But then I thought about it more. I realized that part of my rejection was that I didn’t see how it would fit into the UI for the site: Sega Genesis on the MiSTer just seemed too specific compared to everything else on there. I thought more about that and realized that I could make a page on the site for all of the platforms on the MiSTer, similar to the page I had for all of the platforms for the Wii Virtual Console (one of the formats found all over GameFAQs).

I realized that my other objection was that the work didn’t sound very interesting. The Sega Genesis has a bit of a hardware quirk where it’s reading an 8-bit SRAM chip from the cartridge over a 16-bit bus. So, every 8-bit byte that’s read gets “expanded” into 16 bits, with the extra bits just getting filled in with 1s. The author of the MiSTer core decided to have this quirk be reflected in the save files, whereas the authors of most software emulators have decided to not have this reflected in their save files. Neither approach is more “correct” than the other, but they’re different, and so the files aren’t compatible.

Writing a converter for this transformation is pretty trivial and honestly I just wasn’t very interested in doing it. But birdybro agreed to give me save files for all of the retro console MiSTer cores, and so the “treasure hunt” aspect of looking through them all to find other quirks was more interesting. I’m glad he did. The MiSTer page quickly became the most-used page on the site, and today it accounts for almost half of the site’s total monthly users.

I realized from the MiSTer experience that most people didn’t want what I had been building and instead they wanted to be able to transfer their own save files between their own devices. I completely changed direction and focused on other places people might have save files they’d want to transfer, such as flash cartridges and online emulators. But none of these have had nearly as much impact as adding support for the MiSTer.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
Smartphones are increasingly becoming the emulation platform of choice for many retro gamers, so being able to move save data around is of paramount importance — Image: Damien McFerran / Time Extension

But then, on the topic of saying “no”, one thing I haven’t added support for is the Analogue Pocket. Not because I don’t like it, but because of the proliferation of cores: there doesn’t seem to be one “main” Sega Genesis core, for example. So, it seemed like a UI nightmare. I also haven’t gotten much feedback that people would like it added, as the MiSTer page seems to do a good job for the Pocket for most people.

So I’m trying to keep my stance of saying no to some things to maintain focus, but also trying to be a bit more open-minded. It’s a difficult balance to strike and sometimes I get it wrong.

Is there any aspect of the tool you're keen to improve or change?

I constantly struggle with the UI for the site. It’s important to me that non-technical people be able to use the site. From talking with people who use the site, the vast majority of them are non-technical and that’s something I’m really proud of. I find it very interesting and challenging to take this super technical thing of rearranging bytes in a file, which could be in any number of formats, each with its own exceptions, gotchas, needs for extra data, and general weirdness, and making it accessible to anyone.

Something that I’ve seen come up regularly is someone who says “I have this file and I want to play it” and they don’t know what format the file is and sometimes they don’t know where it’s from or really anything about it at all. And a related problem is that the interface on the site has grown pretty complex with like a billion formats listed along the top of the screen.

I’ve had some ideas bouncing around to change the interface to just be a single box, not unlike the Google interface, where the user just puts a file and then the site tells them all the things they could do with that file and then they can select one.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
When not coding, Forrester likes spending time with his family (he's the one on the right, in case you were wondering) — Image: Euan Forrester

I’ll have to carefully think about what is technically feasible or not with this approach, and what the limitations are. Certainly, there are plenty of files, like the raw saves from most cartridges, where you can hardly tell anything about them just by looking at them, and you need more context. So I keep putting this off until the site is “done”, and I know all the formats the site is going to support so I can better make that assessment.

Or maybe it’s just procrastination. I can’t tell.

Save File Converter now covers a wide range of platforms and devices. What's next for the project?

My own personal goals for the project are to finish support for up to the PlayStation 2 era of consoles, so adding support for the PS2, GameCube, Xbox, and Dreamcast. Later consoles, in the PS3/X360 era and onward, I have less personal interest and also I think there’s less need for tools there as well. The consoles are just more modern with things like USB ports. So there are ways of getting save files onto and off of them that don’t involve esoteric devices like the GameShark that impose their own formats on the files.

The biggest thing I’ve gotten out of this project has been the collaborations and friendships, and so something I would like more of is to meet more people who are doing stuff with retro game save files.

I worked for a while with JanErikGunnar from github who wrote some code that I based much of my conversion from Wii Virtual Console on. But he was missing one console: the TurboGrafx-16. So I asked him to take another look, and maybe pushed his curiosity a bit, and he came up with a solution that I had not been able to find. But then I was able to make his solution better, and after that, he, in turn, was able to make my code better. That kind of back-and-forth collaboration, where each person improves the other, has been very rare in my career and I really treasured it here with him.

Similarly, I recently started talking to dparrino on github when I noticed him working on some Sega Saturn save stuff just after I finished up my work on it. And again, being able to talk about this stuff with someone who’s curious, motivated, smart, and who also approaches problems differently than I do is extremely rewarding. I hope that we’re able to make each other’s work better, too.

For the site itself, I was so surprised by the request to add support for the MiSTer and by the community response to adding those features that I’m eager to be surprised again.

Meet The Man Who's Taking The Pain Out Of Managing Retro Game Save Data 1
Save File Converter's UI is simple and easy to use — Image: savefileconverter.com

How can people support this project?

My absolute favourite thing is to receive a bug report. It means someone was using the site and what they were doing on it was important enough to them to take some time and write to me. It also makes the site better for everyone: it’s easy enough to write code to convert the basics of a format, but only when a few thousand people have tried it out do you find all the strange exceptions and edge cases you need to really write some solid code. The easiest way to do that is to join the Discord.

The Discord also helps me keep up to date with how people are using the site and what’s going on in the retro games world. And asking questions helps me fill in the FAQ that I maintain there, which in turn makes the FAQ more useful for others. It’s a great place to ask for new features, too.

Most people find the site from Google, so sharing the link helps to improve the site’s Google rank which in turn makes it more likely that it’ll help someone.

Lastly, people can donate to the site. I made the little PayPal button one day when a user emailed me asking how to donate to the site, and since then, I’ve honestly been surprised by how much it absolutely makes my day when someone clicks it. I used to scoff when I’d hear athletes or musicians say that they “did it for the fans”. But now I see the loneliness of grinding away at something by yourself, not sure if anyone will ever care about it much less use it. When someone takes the time to donate even a few dollars, I’m absolutely walking on air, and I rush to tell my wife and kid. Then the kid says, “That’s nice, Dad”, and goes back to doing kid things, and I come back down to Earth a bit.

But yeah, it’s nice to work on something that people actually use. I don’t think I’d be nearly as motivated to work on something just for myself.