This could be considered a part of the ‘Little Changes’ series of updates, except the SSV driver is quite a large one so more worthy of a separate update.
The SSV driver has been in MAME for a long time, over 15 years, with some additions being more recent than others (although nothing has been added to it for a long time now)
The driver is starting to show its age now, with a number of effects known to be missing, one of the most notable being the rowscroll effect which is used by a number of games, or at least, was known to be used by Dyna Gear and Eagle Shot Golf.
We had a feeling Dyna Gear was missing an effect because a Korean copy of the game (on completely different hardware, reprogrammed with Software rendering to a framebuffer) utilized such an effect before the title screen, and there was very little reason to think the people making the clone would add such an effect if it wasn’t also present on the original hardware.
We also knew that Eagle Shot Golf should use an effect on the Sammy logo as video evidence showed that it should look like the Sammy logo on the NeoGeo game Viewpoint.
I decided that it was about time to start looking into emulating these effects myself. I figured that since the NeoGeo does the effect on ViewPoint with a scanline interrupt, and SSV is primarily a sprite based system with ‘floating tile strips’ that it was most likely that SSV used a scanline interrupt. Poking around the V60 code and IRQ enable registers quickly disproved this as there was only a single interrupt level enabled and no code for any others.
That meant I had to look around in video RAM for scroll tables, there’s a lot of video RAM, so finding a reasonable looking table took a while, but eventually I located one in each game at points where the effect was thought to be active. In each case it was in a different location, but that wasn’t too surprising, Seta video hardware tends to have lots of pointers to data structures etc. A bit of register tracing and I found a base register, and enable flags for the effects.
The other challenge with this was that the SSV driver code was very ‘old MAME’ style, optimized for speed over maintainability, trying to reuse variables all the time in functions rather than simply declaring new ones, generally difficult to follow, and even more difficult to modify / add missing features to. It required some substantial refactoring of the code to turn the main rendering code into a per-line renderer, instead of a per-tile renderer before I could even attempt to add the effect. There’s certainly something to be said for how much better and easier the code in newer versions of MAME is to work with, and having worked with the driver a bit I’m less surprised nobody tackled this earlier. It’s understandable why it was as it was, because CPU power and memory was more limited back then, but it was refreshing to turn it into something easier to work with.
With that done, hooking up the effect was relatively easy, it actually worked first time. The effect appeared on the Dyna Gear title screen, slowly revealing the logo.
In addition, there is an effect when you get hit by an enemy, it distorts the background momentarily to show that you’ve been hit (it looks better in motion)
New, Eagle Shot Golf
Where the Sammy logo now appears complete with wavy effect
However, when searching for the enable registers I also observed that a number of games we didn’t expect to be using the effect were actually enabling the registers, and also clearly had a line table being populated, so the effect was used in places that prior to emulation I wasn’t even aware of. Ultra X Weapons uses it before the title screen
and also ingame to animate the water (more obvious in motion)
Survival Arts is another game using it
The use is more subtle (probably the only thing about the game that is subtle!) but they use it for animating the background on the Desert stage, the water on the Aquarium stage, and the floor on the 3rd stage shown in these shots.
Dramatic Adventure Quiz Keith & Lucy also uses the effect, for a parallax scroll on the background for the first round or two, again not very obvious in screenshots
Anyway, as many of those aren’t easy to see in screenshots I made some videos for all of them (maybe I should have just posted the videos)
https://youtu.be/bvEvRUzgeVw Dyna Gear
https://youtu.be/8qpbefa8BG4 Eagle Shot
https://youtu.be/8okjwGPjci0 Ultra X Weapons
https://youtu.be/A8XBtCAaGjY Survival Arts
https://youtu.be/dT-saAbeO18 Dramatic Adventure Quiz Keith & Lucy
So yeah, this is just another example of where MAME is improving all the time.
There are other improvements I still want to make to this driver, so you may see another update about it later if I feel they make a big enough difference.
Note, this won’t make 0.204 as I missed the code freeze, so should be in 0.205, which will be released around Christmas.
I also ended up spending £120 of my own money on some more e-kara and related stuff, just because I find it fascinating and it’s been fun to emulate, so hopefully there will be even more things to show on the XaviX side of things soon too (I could put up some shots of Excite Fishing, but it still requires a hack to boot so isn’t too interesting yet) It seems these TV games, especially the Japanese ones was quite the rabbit hole of unemulated material.