The State of Sega Saturn Homebrew
The Sega Saturn has been out of retail channels for about ten years now, but that hasn’t stopped a handful of dedicated individuals from creating their own software and games for the vintage machine. The Rockin-B is not only one of my long-time online contacts from my days on Sega Xtreme, but he is also one of the leading Saturn devs and the organizer of C4, the annual Sega Saturn Coding Contest.
Instead of simply sharing the results of this year’s contest, I wanted discuss his thoughts on the Saturn Homebrew scene in addition to some technical tidbits about the Saturn itself. What follows is the inteview he was kind enough to participate in…
Racket: First of all, since you just recently completed judging the newest crop of Saturn homebrew projects, would you mind giving us a run-down of the five finalists in the contest and what you personally like about each from both a gamer perspective and also a developer’s perspective?
Rockin-B: Sure — are some comments on the contestants and their strengths (see the results page for videos and downloads):
Racket: I noticed you left yourself out of that list, but I do want to personally thank you for your contributions to the scene as well. 🙂 As you know, I’m also a big Sega Saturn fan, but I’d love to hear your take on what drew you to the Saturn and what keeps you devoted to the machine?
Rockin-B: So far, the Japanese SEGA Saturn I secretly bought for myself in early 1995 is the most expensive videogame console that I’ve ever acquired. Apart from its monetary value, I admired it for its design and its beautiful graphics. I did enjoy it a lot back in the day, but then I suddenly forgot about it. It wasn’t until I visited an electronic market some years later that I sort of woke up, seeing a Saturn offered for a cheap price. Unfortunately, the console war between Sega Saturn and Playstation had already been fought out and I missed it! This can be considered one of the main reasons why I express my Saturn devotion in doing homebrew Saturn development.
In some ways, I’m still fighting at the front lines of the console war, fighting to unveil the hidden treasures that are still buried under the surface of the Saturn. The goal to create homebrew Saturn stuff that can compete with commercial Saturn games, maybe even PS1 games, kept always being the same. Of course, I was in doubt if it could ever be reached. After all, how should a few amateur programmers be able to outperform a team of professionals that once needed a year or so to create games like Sega Rally?
However as time passes, I worry less about those doubts. Though the Saturn hardware stays the same, we can take advantage from many of technical developments that were not available to the devvers of commercial Saturn games. They were required to have a dozen of computers, half Windows and half Macintosh-based, plus expensive CD emulator, CD writer and a Saturn development system. We just need a standard, low cost PC. The C compiler that we use is far more advanced than what they had to stick with. New sophisticated algorithms and software has been developed in the last 10 years, we can easily benefit from that by just picking it up and porting it to Saturn.
Some examples: The compression we use in Police Officer Smith is an order of magnitude faster than what is used in the SEGA tools. The buffer memory allocator used in a couple of my projects is way more sophisticated than the one in the SEGA tools. The script language that Police Officer Smith is written in allows for much shorter development times, compared to using C or assembler.
Racket: Homebrew and emulation projects for consoles and handhelds are quickly becoming commonplace. What do you think drives you and your peers to keep developing for the Saturn as opposed to a machine like the Dreamcast or XBox?
Rockin-B: From what I can tell, homebrew communities of today’s size were given birth by the Dreamcast homebrew scene, which was very fast growing from Y2K on and remained vital for quite a long time. That actually inspired me to do my first steps in homebrew development – on the Dreamcast VMU! In the beginning, I gave quite some consoles a visit, including SEGA Saturn, SEGA Dreamcast and later GP32.
Why I haven’t concentrated on other consoles? Well, on Saturn, you and your work don’t get lost in the mass. We don’t reinvent the wheel ten times, but only two times, if you know what I mean. On Saturn, there’s a place for everyone and every favour.
The Saturn is stuffed with lot’s of different CPUs, RAMs and GPUs, it’s architecture is distributed, manifold, always interesting and a challenge to develop for. If you feel overwhelmed by the mass of knowledge one can have about the inner functions of the Saturn, you always find a small place to hide and rule. The SCU DSP for example, its documentation fit’s on two pages and you don’t need anything Saturn dev related but two command line tools plus a text editor. Easy to learn and hard to master. Though in the past the first term didn’t count for the Saturn as a whole, but the Saturn keeps getting easier to develop for, year by year.
Racket: Obviously, the Dreamcast is much more powerful than the Saturn as a whole, but are there any technical advantages that the Saturn has over the Dreamcast?
Rockin-B: Being designed as a distributed system consisting of independent pieces of hardware, the Saturn has the advantage of employing high quality MPEG movie playback, without affecting the performance. With the external VCD cartridge, the Saturn is best prepared to run games like Space Channel 5, were polygon-characters are dancing in front of a pre-rendered video scene.
The Saturn is also better suited for hardware add-ons than the Dreamcast. For example the 32X used a cartridge port and the video out signal to be plugged with the Genesis. On top of that, the Saturn additionally offers a direct high speed link to the video buffer via the MPEG cartridge port. A skilled homebrew hardware devver could make a hardware extension that turns the Saturn into a beast.
Racket: Has there been any devvers that have explored the add-on capabilities at all?
Rockin-B: Though the add-on capabilities of the Saturn haven’t yet been used for means of hardware acceleration, but they were used for homebrew created peripherals. For the cartridge port, there exist about three homebrew solutions to connect the Saturn to the PC. Two of them feature custom created PCBs that plug into the cartridge port and offer a USB connector. The other one is the USB DataLink device, which plugs into Gameshark and Action Replay carts. This way, existing tools and Saturn homebrew that uses these type of cart can be easily made compatible with the USB DataLink. The controler port was used for homebrew joypad adapters, such that the PSX analog pad can be used as a 3D analog pad on Saturn.
An extension port that I forgot to mention previously is the internal 20/21 pin port to the CD board. There exists an experimental homebrew modchip which plugs between the CD board and the main board of the Saturn. This is a very interesting field of research. It is to expect that in the next few years, CD-Rs will become rare. Also, the CD drive is one of the first things that gets worn out, having to be replaced. Wouldn’t it be cool if the Saturn would read ISO-images from SD-carts, instead of CD-Rs? Loading times could be improved both for homebrew and commercial games. Such a thing would have a lot of benefits.
Racket: Wow — that’s crazy 🙂 CD-Rs will probably remain for quite a while IMO (longer than floppy drives), but the idea of an SD card booting ISOs is quite compelling! I’ve also heard that certain commercial Saturn developers used some of the different processors for functions that they weren’t intended. (For example: using the sound chip from graphics processing). Have you or any of your peers played around with any of those ideas?
Rockin-B: Even a lot of non-devers have played around with that idea. While it’s quite common to use the slave CPU, there isn’t much beyond that. The SH1 processor on the CD board can unfortunately not be programmed, as it’s code is located in an internal flash rom that can’t be overwritten. The motorola 68k sound cpu is not suited for executing genesis code directly, like it has been discussed for genesis emulation on Saturn. But there exists a debugger for the 68k and possibly some example code, that’s it.
A few people have written code for the SCU DSP, but none has been released or used in homebrew. Stuff like floating point operations, geometry transformations and voxel rendering acceleration has been created. A big problem here might be some difficulties in invoking the DSP from the main CPU. Once started, special treatment is needed to prevent the DSP to enter a deadloop.
An example of using a feature for something it wasn’t intended for: The VDP1 sprite display processor can apply gouraud shading to RGB format textures. However, the gouraud shading feature can be used on paletted sprites as well, interpolating palette indices instead of RGB color values. The CHROME demo that comes with the SGL uses a gradient palette, red gouraud shading on paletted textures and a light source. This way, depending on the angle between the viewpoint, the 3d object and the light source, a bump effect is applied to the surface of the object. Very impressive!
Racket: What is typically the biggest limitation or bottleneck with the Saturn’s hardware when it comes to homebrew development?
Rockin-B: Although the Saturn has a lot of RAM, especially when using the external 4MB RAM cart, it suffers from it being cut into small pieces and scattered all over the system. Applications like emulators need to have a certain amount of continuous RAM available to place a ROM file in it. Of what use is a 1MB external RAM cart, when it is divided into two different chunks of 512kB each? Also, it must have been for cost reasons that SEGA split the main work RAM into two halves of 1MB, one being fast and the other one being slow. It would have meant a great performance impact if it were a single chuck of fast 2MB RAM.
I expect the fill rate of the VDP1 sprite display processor to be the main bottleneck when it comes to compete with the Playstation. However, there are software techniques available to compensate that, which can take advantage of both, the VDP2 scroll screen display processor, as well as a hypothetical external hardware accelerator. These techniques haven’t been applied yet.
The third thing to mention is not a bottleneck by definition, but a nice little thing that could have been a real afterburner instead of being practically unused. I’m speaking about the SCU DSP, which can be used for fast coordinate transformations and lightning computations. It only lacks instruction RAM, clock speed and division instructions. Because of that, it’s so difficult to find the right application for this coprocessor.
Racket: Have you seen any growth in the Saturn homebrew scene over the years?
Rockin-B: One cannot expect a growth in a community that is by nature dying year by year, since the sale of the console was stopped. We have watched the great Dreamcast homebrew community to rise and fall. I would have never expected this to happen, but it seems like the Saturn scene will outperform the Dreamcast scene in terms of releases, sometime soon. We just have more stamina 🙂
The Saturn homebrew scene at least is staying at a constant level, if not even growing a little bit from time to time. It requires significant effort to reach just that. The annual C4 Saturn Coding Contest inspired fresh new people to join the Saturn dev community. Thanks to that, we could compensate for those who left the scene. Also, it did inspire some people who paused their work to give a comeback on Saturndev.
Racket: Well, hopefully we can help bring some more exposure to your efforts! Have there been any techniques or accomplishments that you see has a landmark in Saturn homebrew? If so, what projects have utilized them?
Rockin-B: Quite characteristic and unique to the Saturn is a library of mutliplayer games, suited to be played by up to 12 players at once. Noteworthy is the top-down viewed tank battle game Charette a bestiaux (http://vieille.merde.free.fr/charette.html). Some other examples are addicting variations of games like slime-volleyball, pong, snake or karate.
A great landmark most certainly is the use of hardware acceleration for the SMS Plus port of VBT. He uses both graphic processors to establish full speed emulation on Saturn. If that would be used in the SNES emulator…whooo I have to stop thinking because excitement is wandering through my veins.
As for 3D, there are a couple of sophisticated developments that haven’t yet shown their full potential. There exists a real-time texture mapping library that adds features to the Saturn sprite display processor, which can be used for environment reflections on cars, for example. Another thing is a tool-chain that for the first time enables us to bring huge textured 3D scenery to SEGA Saturn rather easily. It is used for the 3D racing game project and the 3D flying demo I entered to the Saturn contest 2006. I expect that the to-be-released Lua player for SEGA Saturn will mark a turning point
Racket: What homebrew project do you most look forward to seeing on the Saturn?
Rockin-B: I’d love to see Aleph One ported to Sega Saturn, but who knows if that’ll ever happen. It might sound strange, but I most look forward to the release of Police Officer Smith. Arnold and I have been working on it since 2006 and we will take care that when it’s released. It will shine bright above anything else released for Saturn so far.
Racket: Obviously, ambitious projects are going to take longer that one year to develop — especially if you have a day job / life. Are there any long-term Saturn homebrew projects out there?
Rockin-B: Yes, there are. The SMS Plus port by VBT has gone through a couple of significant updates over the last years. Police Officer Smith can be considered a long term project, too, taking possibly two to four years in total to be finished. Piratero, Zaksund and I are each working on various programming libraries since quite a long time. Personally, I’m not a guy for long-term projects. I like it quick — to work very intensively on a topic for a limited amount of time. However, a couple of my projects are being updated even years after their first release, turning them into long-term projects, too.
Racket: Thanks so much, Rockin-B! I learned a lot from this discussion and I hope everyone that reads it gets a little something from it as well.
Additional Saturn Homebrew Links