MP3 Player DOOM

Thu 02 Nov 2023

A few months ago I was digging through some old drawers, looking for some of my old game console accessories, when I stumbled across a pair of Sandisk Sansa c250 MP3 players.

Most people don't have a lot of use for MP3 players nowadays, what with the whole pocket supercomputer fad. But I figured that they might be fun to tinker with. And to my surprise, they both worked and managed to hold a decent charge.

I spent a good few nights trying to reverse engineer one, hoping to be able to modify the firmware. I didn't get very far with that for various reasons which I may elaborate on in another post. But in the process I was reminded of an old project called Rockbox.

Enter Rockbox

Rockbox is a set of free software (GPLv2) replacement firmware for various MP3 players. It's old enough to drink in most countries and is still maintained. And yes, as the title implies, It does have a DOOM port. It's other features include:

I didn't even realise it ran quake until writing this. That should be interesting.

I have known of Rockbox for years, but if I had known just quite how impressive it was I would have tried it out much sooner. Just the lua interpreter would have been enough to impress me.

Not only is it very featureful, it's also well documented and easy to install. Each supported player has its own manual with specific installation instructions. And if you don't want to get into the weeds then there's also an automated installer. I chose to install it manually.

Installation

The manual installation process for my c250 consists of two stages:

Actually the manual instructs you to install the firmware and then the bootloader, but I did it the other way around.

The Bootloader

This is the only step of the process I had any issue with. Installing the bootloader just consists of running a utility called sansapatcher, which contains the replacement bootloader. But the issue is that it requires that my device be in UMS mode. Ordinarily there is an option in the settings to swap between MTP and UMS mode. Unfortunately that option is not present in the firmware version I have (01.01.05p), so I spent a few hours tracking down the arcane procedure required to force it into UMS mode.

UMS Rain-dance

To enable UMS mode on the Sansa c250:

  1. Turn on the device.
  2. Engage the HOLD switch.
  3. Hold the rewind/left button for approximately 5 seconds.
  4. Plug in the device.
  5. Continue holding the left button for a few more seconds.

With any luck, sansapatcher will now run properly.

The Firmware

No rain-dance needed this time. Just extract download and extract the firmware to the root of your MP3 player. But don't don't unmount just yet. There's some extra files we'll need to play doom.

Doom

This port requires a custom wad called rockdoom, in addition to whatever wad you want to load. And it expects both files to be in /.rockbox/doom/. Once you put those files unmount you can restart your player. With any luck Rockbox will be installed. From there you can find doom in Plugins/games/. Once you open it you should see a menu where you can select which wad to load. You might want to consider enabling sound via the settings also.

It runs surprising well.

If you want to see it in action, then install it yourself. It's probably not hard to scrounge up a player that Rockbox supports. And it's probably even easier to install if you use the automated installer.

Closing Thoughts

Rockbox is pretty cool. I'm looking forward to messing around with it some more. I would of liked to show off a few more things I found like the lua hex editor, but I have already spent way too long writing this. Next post should be shorter.

https://www.rockbox.org/download/byhand.cgi

https://www.rockbox.org/wiki/PluginDoom.html

https://www.rockbox.org/realwiki/pub/Main/PluginDoom/rockdoom.wad