Spent a week tweaking Spy Hunter to perfection.
Just getting spyhunter emulated wasn't enough, there were some issues that needed to be addressed:
x The game has lights to show which special items you have
x The emulated engine noise sounds like a "whine" than a rumble, as it does on the arcade machine.
x The emulated sound is chock-full of horrible clicks and pop-sounds, especially when the music starts or stops
The first one was easy, I didn't like the idea of having a line of text at the bottom of the screen - and thought, there has to be a better way. After some conspiring with iq_132, he cooked up a nice little secondary-"hud" using icons from the game to represent the powerup items.
Regarding the engine sound:
The game designers were smart, instead of mixing the engine noise in there with every other sound, they had it output on one of the ay8910's channels. I split this output from the others, ran it into a double resonant lowpass filter w/high q, and now it sounds almost exactly like how it does in the real sit-down Spy Hunter cabinet.
Lastly, the bane of the entire project - the Cheap Squeak Deluxe board. This is the board that plays the "Peter Gunn" theme song. Why was it so bad....? It had no status of when songs started/stopped, and outputs -dc to the dac when the song isn't playing. This simply resulted in nasty clicks/pops at bootup, whenever a song started or stopped - even though it has a status register, it's always 0 (unused). Even worse, when the dac is left in a dc state, the value was always different, so we couldn't just filter it out. A dc blocking filter helped a little, getting rid of the steady dc offset, but the spike to dc at the end of song still resulted in the horrible pops and clicks. Even double-worse, there isn't even a status bit/byte in the ram of the emulated soundboard. In order to reliably start/end "dirty" dac sounds without clicks, we need a reliable start and stop point to ramp the signal back to the 0-point.
So what now? I wasn't going to leave my second-favorite game of all time in a headache-inducing clickfest like it has been in other emulation for the past 20-some years. And buying a cab is out of the question...
After much poking around memory of this beast, I found a counter that only counts down when the music is playing, once per sample - which ended up being the thing I needed to actually know when the song starts/stops. Yay! a simple mute logic was hooked up to this counter, and, for the first time - the clicks & pops were gone. I ended up taking it a bit further, using a technique once used for some clicky Konami games *mystwarr hw*, played the game for a few hours, and after a long week and 1/2, I'm finally happy with the results.
Oh, and now FBAlpha finally emulates all of the classics I played in the 80's. Maybe we should celebrate or something
best regards,
- dink