ParaJVE : Parabellum's Java Vectrex Emulator   

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

Wednesday, March 09, 2011  

One more defect added !

A new feature has just been added to ParaJVE : the emulation of the famous Vectrex buzz noise.

The happy few having the chance to own a real system will know what I'm talking about. This buzz noise is a very typical sound pattern produced by the machine when it is operating. It is caused by a design flaw (the sound line lies too close from the board, and gets plagued by interferences due to its nearby activity).

Well, the very first implementation is now completed, and it is quite straightforward at the moment (a mere noise sample looping). The buzz sound can be turned on/off (independently of the vectrex "normal" sound), and its volume can also be adjusted independently.

Below is a small video whose goal is to let you enjoy the audio result - the framerate is capped 10 FPS, so don't really expect a smooth video ;-)

video

As you can hear, the result is quite acceptable already. However, a more interesting implementation would be to dynamically modulate the PCM wave, depending on the current program activity. This would require quite a lot of investigations on a real vectrex, in order to define which hardware parameters are significant, and how they can be integrated into the final noise generation algorithm.

I'm not sure I can bide enough time to tackle this task ; still, this is very tantalizing...

Labels: ,

Wednesday, December 29, 2010  

Release 0.7.0 available

As promised earlier, the latest release is now officialy available for download for the 3 supported platforms : Linux, MacOS-X, as well as Windows (XP, Vista or 7), be it 32 or 64 bits.

Please note that the download site URL has changed, and is now http://www.vectrex.fr/ParaJVE.

I hope you'll like the new features, and that you'll find the emulation gets a bit closer to the real thing since the old release! 

Labels:

Tuesday, December 28, 2010  

2010 is nearly over

Yup, 2011 is rearing its ugly head...

Therefore, I hereby promise that the 0.7.0 version will be released by the end of 2010 -- no matter how and when I will manage to do this! :o)

It got stuck for too long on my hard disk now, it's time to share. Of course, the user-guide, various documentations as well as some minor other stuff won't be completed as I wanted them to be ; but in the end, I guess you won't care too much about that -- Heck, I don't even know if you will notice it at all, indeed. ;)

I'm currently reworking the download page, since so many people seem to encounter problems while unpacking the old ZIP archives with the newer windows OS - be it Vista or Win7, then it's ready.
By the way, here's a quick tip if you have this issue : instead of using the windows "integrated" unpacking facilities, just use a third party unpacker (like winzip, winrar or 7Zip) to unpack the ParaJVE builds ; it often solves the problem...

So stay tuned for a really really near release!

In the meantime, to let you wait it out, here is a snapshot of ParaJVE running George Pelonis' War Of The Robots game (with a 100% original overlay I have designed for this game) :

Labels:

Monday, September 27, 2010  

0.7.0 still not released? WTF !!!

All right, it's been 8 months since the last post has been published, and still no release showing up... So what's up, you might wonder?

Right, I haven't worked that much on the emulator these last months. Some kind of coding break. I even forgot about it at some point, to be honest ;-)
Only lately did I come back again to ParaJVE development, so the release is now back on tracks.

Bank-switching, the last feature I wanted to add to this release is now nearly completed.

The ParaJVE memory model has been modified to fully support cartridges with a ROM bigger than 32Kb. It basically means that the emulator can now load and execute dual-banked cartridge (64K rom images), but also emulates multi-banked cartridges (Richard Hutchinson's VecFlash and VecMulti cartridges, for a start).

As a proof of concept, here is a picture of ParaJVE running the awesome Lineart demo (a demo made of 4 different banks, stored on a VecFlash cartridge) :


As for the games packaging, Protector + YASI (by Alex Herbert), as well as some other homebrews, have been added to the list of embedded games. For YASI to be properly displayed, a special "interlaced" mode has been added to the emulator's rendering engine. This mode suits well to these "raster" games, that often display half of the lines per frame (odd lines, then even ones).

I also created an original overlay for YASI (heavily based on the original Space Invaders overlay). Here is the result :


Ok, so what now? Well, I'm currently in the process of updating the configuration file loader, to make it support multi-banked games definitions, as well as zipped ROM files. Testing & fixing regressions here and there also keep me somewhat busy...

And as usual, no release date planned yet ;) 

Labels:

Friday, January 29, 2010  

Beta 4 : some more coating...

After a break of one month without any coding, the 4th beta build has just been uploaded to the Beta Download site. The registered testers can get it right now, using their private key file.

This beta comes with a new graphic feature that should push the immersion a step further : the Vectrex chassis can now be drawn around the emulated screen.

This great idea came from Heiko L., a friendly beta-tester, who already helped a lot when it came to fix the problem with 64 bits native library deployment under Linux. Not only did he had the idea, he also kindly provided me with all the graphics needed to implement it (hand-made, using the Gimp) !

Thanks a lot for your hard work on this, Heiko! :)

If you don't like this new feature, it can of course be turned off in the options: there's a dedicated settings panel that lets you zoom in/out, and specify which parts you want to see drawn (chassis, screen refraction, cartridge, joystick cables, ...).

Chassis Zoom Level
 
Screen Zoom Level

As you can see, the result is quite eye-pleasing ; it's even better when you see it live. Well, I hope you'll enjoy it as much as I do.

There's still no official release data planned though, as I still need to integrate the darkening shader described in the previous post.
Let's hope it won't take too long! 

Labels: ,

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: ,