A Sega Model 3 Arcade Emulator
I've been getting a bit worn out from having to attend endless late night cocktail parties at lingerie models' condos. Being an emulator developer is a tough life! I decided to take a little break from mingling with the gliteratti and whipped up something shiny and sparkly for Supermodel. The diffuse and ambient lighting model has been tweaked resulting in improved colors. Shadows in Daytona USA 2 that were previously barely visible are now very prominent.

Daytona USA 2 before (left) and after (right) the most recent changes to the lighting model.
Taking inspiration from my friend Kim's shiny dress, I figured out how to implement very preliminary specular lighting, which makes vehicles and metallic background objects appear shinier (as on the real Model 3 hardware). Below are three Youtube videos demonstrating the new lighting effects. Specular highlights are particularly prominent in Scud Race and the Daytona USA 2 car selection screen. Also note that the 3D Sega Saturn logo on Scud Race's daytime beginner course now appears with a prominent specular highlight and glint as the sign rotates. The lighting is far from being correct but it's a positive start!
Scud Race daytime (top) and nighttime (bottom) beginner courses, demonstrating specular lighting effects.
Our devoted fan nuexzz.. discovered the missing selection screen graphics in Daytona 2 by disabling the 3D graphics. I've partly re-worked the 2D rendering engine to support layer priorities. Not all possible settings are known yet but I was able to get it working for most of the games I've looked at so far. The code currently in SVN needs to be optimized and cleaned up.
Daytona USA 2 Power Edition with the new lighting model and correct 2D layer priorities.
Among other things, the HUD in Star Wars Trilogy no longer disappears behind 3D objects, the small Sega logo is now positioned correctly on Scud Race's attract mode sequence, and layers that are supposed to obscure the 3D graphics in Virtua Fighter 3 now correctly do so.

The Virtua Fighter 3 title screen is now visible and transition effects look correct.

Text is no longer obscured during the intro sequences in Daytona 2 Power Edition and Le Mans 24.

The HUD is correctly displayed in Star Wars Trilogy.
Just today, I discovered the source of the missing AI vehicle textures in Daytona 2. It turns out that those polygons disable texturing. By forcing them to render with textures enabled -- and breaking flat-shaded polygons in the process -- the textures become visible. They are encoded using interleaved formats that are not fully understood yet. Multiple patterns occupy the same texture and additional bits in the polygon header determine which is to be displayed. Unfortunately, Supermodel's rendering engine presently cannot support accurate emulation of these features but we can at least hope to figure out the proper way to interpret these texture formats. When the engine eventually gets its much-needed rewrite, it will be designed with them in mind.
The missing textures of Daytona 2 revealed. This video was made by forcing the renderer to draw all polygons with texture mapping enabled.
Last but not least, Nik has managed to squeeze a little more performance out of the rendering engine (a 5-10% increase in the frame rate) when running in multi-threaded mode.
Happy New Year, fellow emulationistas! Here's to a great new year filled with emulation goodies!
Mac users will be pleased to hear that the SDL 1.2.15 pre-release fixes full screen mode (-fullscreen). R. Belmont has posted instructions at the Forum. Linux users running Ubuntu 11.10 who are still experiencing problems building v0.2a should re-download the source code from the Download page. A tiny fix to the Linux Makefile has been made. I didn't think it warranted a new release.
Over the holidays, Nik and I had a chance to do a little bit of work on Supermodel. I looked into the 3D graphics problems that plague many of the Step 2.x games (namely Harley Davidson, The Ocean Hunter, and Emergency Call Ambulance) but was unable to make any headway. I did manage to fix the missing geometry when playing mirrored tracks in Daytona 2 and Scud Race Plus. For those who were unaware of this neat Easter egg, holding down the Start button during the course select screen allows races to be run on horizontally-mirrored tracks. As it turns out, AM2's programmers cleverly reversed the X axis without needing to modify much else. Only a single transformation matrix is changed to flip the graphics. Because of the differences between how OpenGL and Model 3 perform back-face culling, flipping a single axis reverses the orientation of most polygons, causing them to be discarded by OpenGL. Now, Supermodel performs some extra calculations to determine which side of a polygon is the front side and the mirrored graphics seem to work fine.
Mirrored tracks in Daytona USA 2 and Scud Race Plus before (left) and after (right) back-face culling was fixed.
This also fixes the wheels in Dirt Devils but is not related to any of the other problems that occur in Step 2.x games, which are caused by their unusual scene graph layout.
Nik optimized how model look-up tables are cleared in the 3D engine, which is one reason for the infamous slow-downs in Daytona 2. He also added the optional ability to run all rendering in a separate thread, further enhancing performance on multi-core systems and eliminating the slow-downs on fast systems. I have not yet tested the performance in Spikeout, which suffers from a related problem, but I would expect it to have an effect there as well. Nik committed these changes to SVN today. For those running their own up-to-date builds, multi-threaded graphics are enabled by default and can currently only be disabled by setting GPUMultiThreaded to 0 in Supermodel.ini (recommended on slower systems or for those with fewer cores).
A lot of people have been curious about what's going on with Supermodel. Neither Nik nor I have had much time to work on it since the last release. We both lead very busy lives. If there are any updates, they will appear here. Right now, I'm on vacation visiting my family for the holidays. Nik has been doing some profiling and experimenting with parallelizing the graphics renderer in the past couple of days. By putting the renderer in its own thread (in addition to some other small optimizations), he has been able to realize a modest speed improvement. He reports that Daytona USA 2 no longer stutters as severely on the advanced course.
In other news, a very clever user going by the name of DaytonaFan has figured out how to get Virtua Fighter 3 Team Battle to start up! You can read his post here or consult this FAQ item for a more detailed explanation.

The game runs much slower than the original Virtua Fighter 3 due to some sort of a timing problem. I'm guessing it is IRQ-related but have not confirmed it. Curiously, although it is plagued by the same geometry and texture problems as VF3, the player models do not come apart at the joints, meaning that this version looks noticeable better.
Some folks have expressed interest in donating to the Supermodel project. If you feel like helping a poor graduate student out, you can now do so by contributing to The Bart Fund. Proceeds will be used to upgrade my computer from a 2008 Toshiba laptop that runs Supermodel at 10-15 FPS to something less awkward to develop with. Thank you :)
A few input and sound bugs have been identified in v0.2a. We're hoping to have a minor update, v0.21a, within a week or two. Nik and I have been quite busy with our respective real lives lately.
Wow, Nik and I are honored by the positive response we've gotten to Version 0.2a! It's nice to hear that people are enjoying themselves despite the still preliminary condition of the project.
R. Belmont has posted an experimental Mac OS X binary at his blog. I've also put it up on the official Download page. It requires the SDL framework and should work on at least Snow Leopard and Lion (Intel only). There is no GUI, so familiarity with using the terminal is necessary.
Supermodel Version 0.2a is out! You can grab it from the Download page. The big new features are:
This is a substantial update. Be sure to read the bundled README.txt in its entirety. The Help pages also provide a basic overview of various features and functions. We encourage you to visit the new forum to discuss and receive support.
A hearty "thank you" is owed to Nik Henson, now an official co-author, for his incredible work developing the new input system and reverse engineering the drive board, and to world-famous emulation supermodels R. Belmont and ElSemi, for giving me access to their Digital Sound Board and SCSP code, respectively. Last but not least, I'd like to thank our new host, Jeremy Rhoten for generously donating this web space and helping me get settled in.
Have fun!
[ Archived News ]