ParaJVE : Parabellum's Java Vectrex Emulator   

Official Home of ParaJVE ... A travel through the programming of a freeware Vectrex emulator in java!

Tuesday, December 15, 2009  

WIP : version 0.7.0 beta testing advancement

First, please note that the application for beta testing is closed from now on, as there is a complete enough panel of users testing the beta at this time. Thanks a lot for the quality of the feedback received so far, it has been of invaluable help for getting things right on most systems.

Since the start of the beta cycle, many things have changed in the graphics settings, and several old bugs have been identified and fixed.

  • Fixed a couple of problems that made the emulation performing too fast compared to the original games (further information on this can be found in issues #25 and #26). These bugs have been there since day one, and plagued many games that could not be played correctly so far.

    Today it's all history... but the counterpart is that the timing emulation is now so accurate that it will also emulate the original games slowdowns and low FPS.

  • Another old problem that has been addressed is the mismatch in the native libraries 'bitness' : so far, only the 32 bits version of all the required native libraries were included in the packaging. But, as more and more systems tend to use a 64-bits Java Virtual Machine (JVM) rather than a 32-bits one, this has started to grow problematic (because a 32 bits library cannot be loaded by a 64 bits JVM, and vice versa).

    The emulator now comes bundled with both the 32 and 64 bits libraries; it automatically deploys the right ones during its first execution on the target system (be it Windows, Linux or Mac OS X). This, plus the native executable launcher introduced for the Windows platforms and several other system dependant adjustments, make ParaJVE feel more integrated into the OS (and less of a hassle to install on 64 bits machines).

  • Added some protection code to handle any crashes that would occur in the game engine. This was not that useful so far, because the OpenGL code used in the previous versions was rather simple (it used only very common OpenGL features) and did not require your 3D card OpenGL drivers to be up to date. But with the addition of the new 3D shaders in the rendering engine, some crash are a bit more likely to occur in your card's native driver if it's too old.

    If this was to happen (which is very very infrequent, don't worry too much!), ParaJVE will detect the crash on the next launch, and will run in "safe" mode (with all shaders turned off), hence allowing to play on older or outdated systems without errors.

  • As said earlier, the graphics settings have gone through a redesign, merging scattered options in several centric dialogs.The "Vectors Settings" DialogIn addition to the already existing glow shader parameters, more options have also been added (points and lines thickness, luminosity and gamma correction, ...) to better let the user configure the rendering to its own preferences.

I have done quite a lot of changes over the different betas already, and although the current version is now very stable, I don't want to release it until I have fixed a very last problem that has been reported by several testers : the overlays rendering over dark areas being too bright.

In fact, the new overlays are way nicer than the previous versions, but it appears that their transparent areas are too bright (or opaque) when placed against a black background. Put simply, my problem is that I have to render transparent colors that are barely visible over a black area, but that, in the same time, should color the white vectors as much as possible.

As I could not find any acceptable way to implement this behaviour with standard OpenGL commands, I've started to write yet another shader to handle this rendering feature. The current prototype works well when run within the RenderMonkey shaders development environment and is fully parametrable (darkening factors and thresholds), but I have trouble adding it into the emulator, where it won't work as expected for some unknown reason.

without overlay shader
(in RenderMonkey)

with overlay shader
(in RenderMonkey)

As soon as this overlay rendering problem is corrected, the release will follow in the next few days ; but for the moment I really can't tell whether the official release will be ready for the end of the year (as initially planed), or not...

Keep fingers crossed! :-)

Labels: ,