Logo
News
Menu News Editorials Reviews Best of Saturn Resources Magazine Netplay Friends
 
 
 

New Test Reveals Possible Source of SAROO Problems

A new test shows the SAROO cartridge, a low-cost Saturn optical drive emulator, loads data inconsistently, possibly revealing the source of audio bugs, crashes and other glitches that users have reported for years.

The test, which can be downloaded here , simulates a basic file-loading procedure from a storage medium and checks whether it was successful. It’s a 32-bit cyclic redundancy check written using the Sega Basic Library that loads three files into the Saturn’s low work RAM, then runs a checksum to make sure those files were loaded fully and accurately. It logs whether the checksum passes or fails, clears RAM, then loads the three files again — it does this over and over in an unending loop.

The results of the checksum test running on a variety of devices and emulators.

The test found that the SAROO sometimes fails checksums. And while it’s not very often — a 3½-hour test looped 3,259 times and failed just 12 times — even one failed file load can cause a glitch or a crash in a game. It never should happen.

The test can be run on anything, from the SAROO to other ODEs like the Fenrir and Satiator to a burned disc on a modchipped Saturn to software emulators or the MiSTer FPGA. When it’s been run on any other device besides the SAROO or on emulators, the test hasn’t failed a checksum at all.

The test was devised and written by TrekkiesUnite118, who had a hunch the glitches SAROO users report might be related to file data getting corrupted.

“This situation should NEVER happen,” Trekkies said in the SHIRO! Discord server . “The [CD block] should be checking the sectors and verifying them with their [error correcting code] data before it even presents that data as ready to be copied to the rest of the system. So the fact it’s happening at all on SAROO means there’s a fundamental failure in the device.”

Trekkies has been a frequent critic of the SAROO for its problems and the perceived lack of emphasis by its developers to fix them.

“People think I hate the SAROO but I really don’t,” Trekkies said. “What irritates me is that it’s like you’re not allowed to point out the problems to try and get them fixed.”

He submitted an issue Wednesday to the SAROO’s GitHub to bring his findings to the attention of the ODE’s creator, TPUnix. That prompted other users to run the test and report similar results.

One interesting result seemed to show that the SAROO fared better with increased sector delay. A person named nullpointer-br got 33 checksum failures over the course of 10 hours, then set the device’s sector delay to a value of 10,000 and ran the test again, finding no checksum failures at all.

On the left is nullpointer-br’s test without a sector delay, showing checksum failures. On the right is nullpointer-br’s test with a sector delay of 10,000, showing no checksum failures.

A sector delay causes the SAROO to pause for a certain amount of time after reading each sector in a game’s data before reading the next sector’s data. It’s sometimes recommended to users to fix glitches they encounter in specific games, but according to SAROO tester YZB , it’s not recommended to add a sector delay higher than 6,500 because it can cause stuttering with streaming data like full motion videos.

“That really makes me lean towards there being a race condition in their [CD block] implementation,” Trekkies said of nullpointer-br’s findings.

A race condition is a bug in which data arrives in a different order than a program expects, perhaps because multiple paths of code are running at the same time and one or more of them have incorrect timing.

A SAROO cartridge from JT Studios.

“A naive way to fix a race condition is adding a delay but all it takes is something to slip up and you’ll get out of sync again, which would explain the reports where a delay fixed it for some people but not all,” Trekkies said.

The problem has caught the attention of TPUnix, who this morning responded to the GitHub issue, saying, “It’s looks like the FPGA firm[ware] has some problem. I’ll debug it later.”

TPUnix released a new firmware for the SAROO last weekend for the first time in a year to add CD+G functionality and support for player two’s controller in the SAROO menu and to fix bugs.

The SAROO is a work-in-progress homebrew cartridge that aims to emulate the Saturn’s CD block, allowing game images to boot from an SD card. It’s also offers 1M/4M expanded RAM and backup save memory, two things that traditionally are offered by separate official cartridges or by unofficial Action Replay cartridges.

The SAROO project  was revived  in February 2023 when TPUnix started updating  the project’s Github  after it was thought to be dead in the eight years since its inception.

Since that Github is open to anyone to see, the cartridge’s design can be built and sold by anyone, too. That’s just what Chinese sellers have done on AliExpress, despite the design and its firmware being an unfinished work in progress. SHIRO! often recommends JT Studios’ version of the SAROO for its reliable build quality relative to AliExpress sellers.


Danthrax
 

Danthrax is a member of the SHIRO! Media Group, writing stories for the website when Saturn news breaks and helping to manage the group's social media accounts. While he was a Sega Genesis kid in the '90s, he didn't get a Saturn until 2018. It didn't take him long to fall in love with the console's library as well as the fan translation and homebrew scene. He contributed heavily to the Bulk Slash and Stellar Assault SS fan localizations, and he's helped as an editor on several other Saturn and Dreamcast fan projects such as Cotton 2, Rainbow Cotton and Sakura Wars Columns 2.

 
 
Next Prev Go to top