Custom SAROO Firmware w/ Playlists, Game Picker, Auto Boot

Hello!

At home I use the SAROO heavily when I play. It's resistant to accidental wipes and it lets me easily backup my saved games. The other major draw is that my whole library is on a single card and I can play a bunch of games back to back without powering off the console ( A + B + C + START twice to exit most games to the Saturn system menu, then Start to get back to the SAROO. ). Some games crash when booted back to back like this, but most of the time I can sit on the couch and play a whole bunch of games without ever getting up to power cycle the Saturn.

I created a new version of the SAROO firmware with some features that I've been wanting for a long time and want to share it with the community in case others have wanted the same thing. I'm not 100% sure this belongs in this forum so I apologize if it's in the wrong place.

-------------------------------------------------------------------------------
CHANGE LOG
-------------------------------------------------------------------------------

Every change in this release versus tpunix's official v0.9 firmware:
  • New:
    • Game Chooser
      • Random game picker from the library or a playlist.
    • Playlists
      • Text file based game lists in /SAROO/LISTS/.
    • Auto Boot
      • An inserted disc boots automatically from the SD card or from the disc itself (configurable).
    • Diagnostic log
      • Auto boot diagnostic messages stored in /SAROO/diag.log.
  • Changed:
    • B goes back on every screen, A confirms.
      • Original back behavior was C button.
    • Every screen shows its button hints in the bottom status bar.
    • LT/RT and DPAD left/right page all lists, wrapping at the ends.
    • Cover art defaults to displaying behind the game text.
      • X toggles cover display.
      • Original defaulted cover art in front.

Playlists

One of the biggest issues I wanted to solve was adding a playlist feature where a game could show up in multiple lists without me having to create a new category and copy the game image into multiple folders. So I added the Playlists feature where now I can set up individal playlists with the folder names I want to appear in those lists. This cut the memory usage on my SD card in a huge way. My library used to need a 1TB SD card and now it fits on a 512GB card.

Game Chooser

I have a ton of games on my SD card ( backups of course ). I wanted more ways to choose a game to sit down and play when I have free time without a particular game in mind.

At first I implemented the "Game Chooser" which just rolls a random game from every game on the SD card, regardless of what playlist or folder it's in. Then I added a reroll option, and the option to roll a random game from within a playlist. This way if I was in the mood for a Shmup or something I could roll just from shmups. I set up playlists for NA, JP, EU, Translations, Shmups, 3D Control Pad Games, all kinds of different flavors and now I can roll a random game from any of them.

I want to improve this in the future to mark how many times a game has been played and auto generate a list of only unplayed games, or maybe most played games. I also want to dump release data and ranking data and store it on a file on the SD card so I could sort games by release date or rank.

Auto-Boot

I added a feature that will automatically read the disc in the drive when the SAROO boots and then depending on config settings either automatically launch a matching image from the SD card, automatically launch the physical disc, or ignore it and flow through to the SAROO menu as per normal.

If the SAROO detects there are multiple game images of the same game it will prompt the user to choose which one to launch. The user can either launch once or save the preference so that next time it will just auto boot the image the user chose. This was especially important for playing translated Japanese games as I can place the Japanese game in the drive, auto boot will run and find the non-patched original JP image as well as the patched JP image and give me a prompt, then I choose to remember the patched image. Then every time in the future I put the JP disc in it boots the translated image!

I also allow a different auto boot behavior depending on whether the disc matches the region of the console or not. This is because if I put in a NA game disc I typically just want to play off the disc and not off the SD Card, but I want to use the SAROO as my memory backup cartridge. So in my setup non region matching discs will auto boot from SD card and region matching discs will auto boot from the physical disc.

I would really love in an ideal world to intercept read calls from the SAROO and actually spin the drive to make the search and then discard it. That way the Saturn would act as thought it was actually playing the disc, even though the data was coming off the SAROO. I tried to implement this, but unfortunately I'd have to change the MCU firmware or add a new piece of hardware so this one is a future wishlist item.

Debug Log

I added a debug log that can have information emitted to it. Right now if the debug log is enabled only the auto boot feature writes any information to it.

SAROO Usability Improvements

There were a number of polish items I wanted as a user from SAROO that I implemented.

Back Button

I didn't like how C was the default back button when most games use B as the "back" button so I changed all the menus to use B as the default back/exit button.

Button Hints

I added button hints to the text bar on the bottom for each screen to expose hidden inputs.

Pagination

I didn't like how I had to press L/R to page inside lists of games so I added left/right on the DPAD as paginators as well.

Cover Art

I disliked that the cover art displayed over the folder names by default as most my folder names are far too wide to be seen under the cover art so I flipped this so that cover art displays behind folder names by default. I also changed the button to swap the cover art render mode to X.

How It Was Made

I used a Claude code project offshoot from my Saturn Translator project. I downloaded the SAROO source as well as the YMIR emulator source. Then I had Claude make a SAROO peripheral emulator for YMIR so that I could have the Claude agent write code and run unit tests against the emulated Saturn and SAROO hardware. I made some other customizations to YMIR to be able to inject realistic hardware latency in order to catch some bugs we had on the real Saturn hardware that didn't show up in the emulator. I tested this release on my NA Model 2 Saturn as well as another NA Model 2 Saturn with a Phantom Mod Chip and Region Free BIOS chip installed.

Here's some screenshots:

New Boot Menu:

01-main-menu.png


Playlist Menu
06-playlists-page-2.png


Selecting From A Playlist
08-playlist-contents.png


Game Chooser
04-game-chooser.png



Auto Boot Disc Check
09-disc-check.png


Auto Boot w/ Cover Display
12-boxart-preview.png





Important:

Use at your own risk. Please back up your SD card and original firmware before copying over this new firmware so that you can recover if you need.

In order to enable auto boot you'll have to add this line to your saroocfg.txt:

auto_disc_boot = 1

The other settings to customize how things boot and enable the log are detailed in the zip file. Playlist creation instructions are in the zip as well.

I have a ton of images on my SD Card and it takes ~20 minutes for the SAROO to create its initial index when the auto boot feature is turned on for the first time without an existing index file. Every boot after the initial index is created will be much quicker. When the SAROO is indexing games it will display them onscreen as is goes through the folders.
 

Attachments

Last edited:
Back
Top