ParaJVE : Parabellum's Java Vectrex Emulator

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

Thursday, November 06, 2008

Linux release uploaded

ParaJVE 0.6.0 Linux packaging has been uploaded.

I must say that I'm not that happy with the Linux version as it seems to be the OS where ParaJVE has the most problems (on my system at least). I've tested it with a standard Ubuntu 8.04.1 (freshly installed), and the problems I've noticed so far are :

  • Chopped sound output. I had to turn sound emulation off.

  • Major graphical problems when using the sun-java5-jre (empty or black windows and so on...). After installing the sun-java6-jre package and selecting it, most of these bugs vanished.

  • The GUI (the default that comes with ubuntu - I think it's Gnome) is sometimes acting weird, and I get many unexpected warnings in the console, unless I run ParaJVE with root privileges (which is not acceptable)

  • Fullscreen still doesn't seem to be supported by the JRE (java 6)
Needless to say, I'm quite puzzled at the amount of issues I'm having when using not so "advanced" java on a linux platform (unless you consider OpenGL and Sound an advanced java feature, that is). Switching from Windows to Mac OS X is nearly as painless as it could be, but switching to Linux is such an hassle!

Now, I don't pretend to be a Linux guru, so of course, my box was maybe not properly configured... But what the heck, I just installed Ubuntu, downloaded all the available upgrades, installed the java runtime engine. With that you would expect java to work as expected ... And you would be wrong!

So well, I've uploaded the Linux build as is ; I hope it will work correctly for most Linux boxes. If it doesn't run on yours then I'm truly sorry, but I can't loose time to fight these compatibility issues.

<end-of-rant>  ;o) 

Labels:

Tuesday, November 04, 2008

Mac OS X release uploaded

I have just built, tested, and uploaded the Mac OS X build for ParaJVE 0.6.0.

It was the very first time I had the opportunity to test it on a Mac platform, and I've just noticed a small problem right out of the box : the emulator loose the keyboard focus whenever you use its menu. So, after using the menu, you'll have to click once in the emulation window to give back the focus (otherwise ParaJVE won't intercept any keypress anymore!).

Also, on the MacBook I tested on, I had to disable the persistence option because it was preventing the emulation (both display and sound) to run smoothly. I'm not sure if it's because the Mac drivers weren't up to date or something... So if any Mac user has any idea, feel free to enlighten me! ;)

Other than that, everything went well ; the physical gamepad mapping behaved as expected, the sound and display rendering seem right... So all in all I'm quite pleased with the outcome! :)

So, enjoy! 

Labels:

Saturday, November 01, 2008

Release 0.6.0 is available

The announced release is finally ready, and can be downloaded on the official download site - try to clear your browser's cache if you cannot see this latest version... ;)

Please note that I hadn't had the time to build the Linux, nor Mac OS X packages yet ; only the Windows package is available at the time being. I'll make my best to upload the builds for the missing platforms in the next few days.

The major changes since version 0.5.0 have already been described in the previous posts, but here is an extract of the release notes history section:

  • Added several command line switches & parameters to ease offline invocation & integration in third-party launchers.

  • Fixed some errors in the 6809 CPU emulation core (flag V incorrectly computed by INC/DEC instructions)

  • Added VecVoice emulation, as well as a vecvoice aware game (Verzerk).

  • Added Lightpen emulation, and included the Lightpen enabled games (Animaction, Art Master, Melory Master, Engine Analyzer).

  • Implemented support for cartridge's onboard RAM (For Animaction).

  • Introduced automatic peripheral selection for games that have special requirements (lightpen, vecvoice).

  • Fixed a major frame timing problem when T2 was used by the program for something else than the standard use (frame timing).

  • Tweaked the rendering algorithm to reduce flicker in special cases (when frames are not T2-driven, like when Spike speaks for instance).

  • Updated the third-party native libraries (JOGL and JInput).

  • Written a basic User Guide documentation.

As you can see, this release also includes for the first time a basic User Guide (you can also access it online). It's a first draft of the guide ; if there are topics you'd like to see covered in a next version, feel free to tell me about it!

Have fun! :)
 

Labels:

Saturday, October 18, 2008

Light at the end of the tunnel...


Some new devices emulation made their way into the current version :

The Lightpen (applicable in both gameports), as well as the VecVoice (only available for the second gameport).


VecVoice

The VecVoice emulation code has been ready for more than a year ; I simply did not want to include it before because I did not like its sound output.

The problem does not lie within the code, but it's rather attributable to the samples used to render the sound. So Richard Hutchinson (creator of the VecVoice hardware) kindly lent me his device in order to let me capture some cleaner samples. This is unfortunately a task I put on hold, and that I don't have the time to carry on anymore...

So, I finally decided to include the sampling as is - after all it's better than nothing at all :) - and to return back his VecVoice to Richard (many thanks and sorry for this lengthy borrowing!).


Lightpen

The lightpen emulation is finally completed, as it now works in an acceptable way for the four games I have tested so far:


  • Art Master (gameport #2)


  • Animaction (gameport #2)


  • Melody Master (gameport #2)


  • Engine Analyzer (gameport #1)



Animaction
The Engine Analyzer ROM is not really a game per se (and not entertaining in anyway), but is nonetheless interesting as it is the only binary I know of that makes use of a lightpen plugged in the first game port.

Technical digression...
When plugged in the second gameport, the lightpen's pin 4 is connected to the 6522's CA1 input pin, so the application just polls the state of the 6522's CA1 interrupt flag to know if the pen detects the line that is just being drawn. Also, the application will sometime setup the 6522 interrupt enable register so that it propagates a real IRQ to the CPU when CA1 is set.

When connected in the first gameport, the lightpen may be used through the CPU's FIRQ (rather than IRQ), as the pin 4 of the first gameport is connected to the CPU's FIRQ line. This is how the Engine Analyzer program reads the lightpen inputs.

Within ParaJVE, when the lightpen is enabled (this is done automatically for the 4 games that require it to be plugged), the Mouse Pointer is replaced with a Cross that figures the position of the lightpen on the screen.

By default, the lightpen is considered inactive (it cannot detect light hit) as long as no mouse button is pressed. It becomes active when either (or both) the Left or Right mouse button(s) is(are) pressed.

If the Right mouse button is pressed, the lightpen operates in accurate mode (that means that its precision is greater than normal, but also that it is likely to loose track of the light more easily if you move the mouse too fast).


What next ?

With these devices done, the next release is finally approaching. The code is now frozen, all I have to do is updating the documentations and third party libraries, then building the different packages.

All in all, I wouldn't be surprised to see the 0.6.0 release pop up sometime this month ... So it might be an appropriate time to give a try to the "Check for new versions" feature of the Help menu...

Labels:

Thursday, March 13, 2008

Hey, is it 2008 already ???

Ok, it's been almost one year since the last release. Although it's been a busy year for me (all for the good), it was rather quiet on ParaJVE's side.

Whatever ... So what has been done ?

  • I've added several parameters to the command line, so that ParaJVE can be more easily tweaked when invoked through a thrid-party front end, for instance. There are new parameters to specify a path to an external binary to be executed, to force the fullscreen, and to hide the menubar, etc...

  • There has been a couple of fixes in the CPU core : the V flag was not set correctly by the DEC and INC instructions ; also the CLR instruction did not execute a read cycle before performing the write access (thanks to Martijn for this tip!)

  • Fixed a major frame timing problem when the T2 timer was used by the program for something else than the standard use (frame timing). For instance, in MoonLander, the intro code sets it to $A0 (the 4-3-2-1 countdown in this intro now plays at the expected speed).

  • I changed the way Ticks Driven frames are displayed ("ticks driven" is a special mode, set off by the emulator when the program does not make use of the T2 timer for frames synchronization) : In this mode, ParaJVE now repaints the current AND the last frame at full bright (to avoid flicker - visible in the "Spike" game, for instance).

  • Added support for cartridge's onboard RAM (RAM embedded within the Cartridges). To my knowledge, the only game embedding some RAM that is directly accessible is ANIMACTION: its cartridge contains 8K ROM ($0000-$1FFF) followed by 2K RAM ($2000-$27FF).

    This extra RAM feature can be triggered simply by adding a <memory> tag in the target game's section of the configuration file :
    <ram address="$xxxx" size="$xxxx">

  • The memory manager now also theoretically supports banked memory (ie. image files that are larger than 32K) ; but since I cannot seem to work out when to switch the banks exactly, I have had to disable this feature for the time being.
    So at the moment, banked ROMS are loaded correctly, but will always stay locked on the first bank since the bank switching will never occur.

  • Lightpen emulation : I've started to emulate this device, used by the Animaction, Art-Master and Melody-Master games. The result is somewhat mitigated, but all in all the device can be used within ParaJVE already. More on that later, in a following post...

Now, what about a surprise ?

    Most of my coding effort this year went into creating a proper debugging framework for ParaJVE. It really starts to take shape and it has now become a side project, called ParaJVD (short for Parabellum's Java Vectrex Debugger).

    I've created another development blog for this project, so if you're interested (or just curious), you can follow the link and have a look :
So, any forthcoming release planned yet ?

    Unfortunately, no.

    It's far too early to release ParaJVD yet (although I will send preview builds for vectrex developers who would like to test it - feel free to contact me by usual means).

    As for ParaJVE, I won't release anything until I have the lightpen emulation fully working. At the actual pace, I have no idea when it could be. But I'll keep you informed whenever possible, watch this space!

Labels:

Friday, April 13, 2007

Version 0.5.0 is out!

As promised, the latest release is now available for download. Since its content and changes have already been described in the previous posts, I won't bother writing some release notes here...

Just grab the build of your choice, and have fun with your preferred gamepad! :o)

If you're a Linux or MacOS-X user, please feel free to report any problem, it will help me to make better builds for these platforms in the future.

Labels: