Since the v2 firmware was also specifically developed for arcade environments and/or new vectrex repro. pcbs lately I have started also developing standalone emulators for a few Vectrex cartridges. Besides being able to play them in landscape mode, say in an Asteroids cabinet, the aim here is in contrast to arcade emulators not to take over the entire input/output and keep the identical frame rate as the original game: these original Vectrex games most of the time try to use a stable refresh rate using a hardware timer via the exec bios’ wait_recal function but frequently (or in some cases always) fail to reach it, resulting in varying game speeds and esp. slowdowns (e.g. Berzerk with ‘too many’ robots).
The Vectrex emulators however do not slow down the gameplay but let the game run at the envisaged, stable speed.
Since this was the desired outcome right from the start they internally do not only not need to be cycle accurate – even the entire Vectrex ROM does not need to be emulated: it is simply substituted by a version sitting on top of the VF library. So all these emulators as usual inherit the global options and calibration settings: e.g. they support other monitor orientations, can be localized since the string functionality is taken over and this bitmapped output also changeable for different vector output hardware. Almost as a side-effect -but really nice to have- this also calibrates the vector output for the vintage overlays for the normal, upright orientation of a Vectrex (which btw. was also done for BattleZone using the StramashZone overlay).
So what does the result look like ? In most cases pretty much like the original game except without slowdowns. Vectrexagon plays identical to the original cart., except now also in landscape mode and/or outputs texts in French or German, stores the high scores and, at the behest of the French master player, fixes the score display (the original fails >999 secs). Another example: an eagle-eyed and perceptive Vectrex gamer mentioned that Scramble is running ‘too well’ since the background sound is not slowing down a bit sometimes. Absolutely correct – the game runs not only at a stable rate but I had to add quite a few additional, identical frames to slow the output down to the original game speed (and keep a stable frame rate for arcade monitors). However for the most challenging difficulty setting I chose to not add these additional frames but switched to the max. speed in Scramble to be able to play the more challenging setup (which I personally prefer). Which gives you an example of the stance I am taking here: to be able to play the games in a fun incarnation, not emulating them as close as possible to the original. This is however quite different from all the arcade games – there the goal is to play the games as original as possible so these all aim to be cycle accurate – which is why I am writing this blog entry..
This approach works best for Vectrex games which profit the most of it: the ones using the Vectrex ROMs to draw -read: flickering and slow ones. So almost all vintage cart. but also quite a few home-brew ones. A few use small setup or drawing macros to increase the performance which also can be handled this way but the approach breaks down once the game actually needs cycle accuracy. One vintage example here being Spike: this 8K ROM is using a 4K game ROM with a separate, custom video/audio player in the upper 4K for the animation with digitized sound. This custom player is both cycle dependent and a bit more hw dependent – it uniquely (for vintage games) uses the digital output bypassing the AY8912 sound chip – and does also not wait for any frame timer. The graphics animation can be taken over easily but the digitized audio output is near impossible, it sounds a lot worse when the timing changes – and this timing just has to change for an abstracted audio/video layer.