ParaJVE : Parabellum's Java Vectrex Emulator   

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

Tuesday, October 24, 2006  

Version 0.3.1 - Sound fix release

Although the sound emulation is still broken on Linux, the annoying sound bug that emitted High-Frequency garbage on the channels in some games has just been corrected, thus a new minor release has been built.

John Dondzila allowed me to include his games in the packaging, so I've added a whole bunch of new excellent entries to the list of available roms.

This version also comes with two additional display features that could come in handy if ParaJVE was to be used in arcade cabinets like environments :

  • Full-screen mode support

    In the game selector dialog, you can select a checkbox to make ParaJVE run in full-screen mode. Of course, pressing F1 (by default) still hides the menu-bar, so it's the way to go if you want each pixel of your screen to be dedicated to the vectrex graphics rendering! :)

    I've made a few tests on a Linux box, and it seems that full-screen mode is not supported by the 1.5 JRE on such platforms (in such a case, the full-screen checkbox will be disabled). From what I've read here and there, it should work with a 1.6 JRE, though...

  • Display rotation

    I've added a menu to select the current orientation of the rendering. By default it's still 0° (standard display), but you can also select 90° (left rotated), 270° (right rotated), or even 180° (top-down). I'm not sure it will of any use, but as it cost virtually nothing to implement, there it is...

As for the near future of ParaJVE's development, I'd now like to focus on the graphics rendering for a month or two. Especially, I'm currently in the process of learning GLSL (OpengGL Shading Language), in order to experiment how fragment shaders could help the emulation to become more visually attractive.

That's why, unless I find some nasty bug to fix, I do not foresee any new release anytime soon (that is, until I'm satisfied with the graphics results).

But until then, I'll keep this blog updated with the experiments :)

Labels: , , ,

Wednesday, October 18, 2006  

Version 0.3.0 released

Finally, the third public release of ParaJVE is now available for download.

This release comes with additional homebrew game roms, and now embeds an HTML documentation for each game ; but it does not include any new (brighter) overlay yet, since I did not have the time to work on that.

Anyway, as said previously, the big feature of this version is the sound emulation. Although I've just noticed a slight bug today (some kind of high-frequency parasite in Scramble), the emulation is still good enough.

As it stands, the audio rendering is hooked on the emulation's framerate (that's why it plays too fast). This explains why the sound will sometime appear distorted on slow machines, or when performing simultaneous tasks (navigating through the emulator's menu, for instance). Clearly, any background process using a fair part of the CPU is likely to completely ruin the sound effects. Other than that, for the average gaming session, the audio experience should be alright.

At the time, there are only three packaging available : one for Windows, and two for Linux (i586 generic & AMD64 specific). I'll try to build one for the Mac platform in the next few days.
Speaking of this OS, I'd really like to thank "GrandGibus" on the forums for his invaluable help and tests regarding Mac OS X packaging. Cheers Fred! :)

I hope you enjoy this release, and as usual, feel free to drop a line if you have any suggestion and/or bug report!

Breaking News :
It appears that the sound does not work as expected on some linux platforms.
My bad, I had not checked the audio on my linux box yet... I'll investigate this problem as soon as possible.


Wednesday, October 11, 2006  

Dolby Surround Pro Logic ... -not-

Better late than never, ParaJVE now comes with a proper sound emulation!

Since I finally managed to get rid of the off-putting bug in the PSG code, the sound now seems to work quite accurately in the emulator. If there are any residual bugs they're not that obvious to spot (at least, nothing that can be heard easily).

Sound routines debugging proves to be especially tedious (IMO), and as I rapidly got tired of crawling through huge arrays of numbers -- Sampling 3 channels at 44kHz brings quite a lot ;) -- I had to implement some kind of visual tool to try and comprehend them in a more intuitive way.

Once coded, the new "samples monitor" immediately pointed out the problem, as you can see in this screenshot :

    The yellow/white lines reflect the samples average, while the blue ones are the current maximum. The top channel (yellow) is the overall mixing of the 3 PSG channels (white)
Quite obviously, the problem came from some kind of saturation in the channel's output at some point... After looking for the probable root causes in the code, it turned out to be a pathetic sign mistake, buried somewhere in the periods computing... With this single line fixed, the sound output for the same "soundtrack" magically became :

Which clearly makes me happy ... oh well ... call me geek if you want ;)

Right, there's still some work to do on the audio : adding user options (enable switch, sampling rate, overall volume, ...) ; fixing the timing problems (the sound plays at the game's speed, which is too fast - see the previous post) ; the speech in Spike is not implemented (not planed yet) ; etc...

But all in all, with this part working, I feel that the next significant milestone has been reached. And as I'm quite satisfied with the current emulator status, a release should not be too far now...

Labels: ,