Release 2.6.6 - Sega Dreamcast
Finally Sega Dreamcast has arrived to RetroX!! This is one of the most requested system and we put it at the top of the list in our 2017 roadmap, so a lot of people were waiting for it.
I will divide this post on two aspects of this release: Users and Developers.
Consider this an initial release. I left some parts to later updates because they required more days and I prefer to release as soon as I can.
The following will be added in future releases:
- Multidisc support
- VMU swap support
Settings – Full screen support
- Settings – Region support (US, Japan, etc)
- Settings – Performance options (frame skipping, specific fixes/optimizations)
- BIOS boot
Get rid of the required clock set up
Most of these are options available in the original emulator, but not exposed in this port.
Note that this emulator doesn’t support save states, only saving progress through the original Dreamcast VMU “memory cards”. As you may expect, those saves are stored with your RetroX account in our cloud.
Honestly I was a bit reluctant to work on this system, because it is always a challenge to port a complete new emulator to RetroX. There is always a little detail that require several iterations and testing, all emulator are written different! Although this was not the exception, I didn’t think it would take the few time that it took to make the port (scattered hours among three days). Sometimes this kind of work can take at least one week.
The code base which is the Reicast emulator is very clean and fortunately most changes could be done only in the Java part. Also, the fact that this emulator doesn’t support saving states reduced the complexity of the port a lot.
This port was made in this new era of RetroX where the code is committed in public, so anyone interested can follow the track of how the changes were made. If anybody is interested in porting a new emulator, this will be an excellent example case.
The problem that took most of the time was something that didn’t happen before. Once the options menu was displayed, the GL surface went blank. I had to do several tests to know exactly what was the problem, and my conclusion is that for some reason, part of the GL surface was altered in a way that it was not visible anymore. Finally I came to a workaround, which is to add the view and remove it after use (not hide/gone it), this forced to GL surface to reset completely. The code ended to be more dirty but it worked.
In comparison, the Mupen64 emulator also used a GL surface but it doesn’t have this problem. Looking at the root cause would require a lot of iterations, so I just went with the workaround.
Finally, here is the video I recorded the day before the release. Some people have asked me about the music that I was listening to – which is awesome – it is the backing track of the song Impossible Things by Nick Johnston. This guy is an incredible musician and guitar player, I totally recommend you to check his work, he have published his albums in YouTube and you can support him by buying the physical media, his transcriptions and backing tracks, which I happily did of course!