ParaJVE : Parabellum's Java Vectrex Emulator   

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

Wednesday, March 28, 2007  

Joysticks & Gamepads calibration

The panel dealing with the controller tests and calibration settings is now nearly completed, so here is a brief description... This dialog is made of 3 main parts :

  • The Tests component (the joystick picture at the top).

    It lets you check your settings in real-time. Pressing a button on your physical controller will highlight the associated button in the picture. Also, the joystick axis marker will follow the movements of your stick.

  • The Analog Response Tab

    Here you can tweak the response of your joystick's analog position, by editing the mapped axes curve.

    It is embodied using a Catmull-Rom curve (a kind of cubic spline) whose control points can be dragged around with the mouse.
    The X coordinate is the raw value (as polled from the physical device), whereas the Y coordinate represents the mapped value (the final value used by the emulator).

    Also, two grids display both values, in real time.

  • The Sensitivity Tab

    This part is not implemented yet (this will be a rather trivial & fast job). It will eventually let you adjust the sensitivity of the mapped axes (through 2 sliders), ONLY if they work in relative mode.

    Relative mode components, unlike absolute analog components, provide an input that represents a distance from its previous position (If the device never moves, it will always return 0). For instance, a mouse or a trackball are relative devices, while gamepads have absolute axes.
Well, excepting for the sensitivity bit, everything else is fully functional : calibration settings loading/saving, connected devices selection, as well as controllers menus and configuration dialogs...

It all means the release date gets even closer now! :D 


Monday, March 19, 2007  


All right, it's been nearly two months without any update to this development log, so it's time to keep you informed...

I've worked on three major axes in the last few months : the startup code, the Mac-OS X packaging, and the integration of the controllers physically connected to the computer.

Startup Code

    I've had several reports of people experiencing an emulator freezing upon startup. Although I failed to reproduce this behaviour on any of the computers I could perform tests on, this bug is likely to be related to race conditions between the threads during initialisation ; hence I've rewritten the launching code.

    It is now much more synchronized (which means a tad slower), thus robust. Also, you'll be greeted with a (*ahem*) nice loading screen while te overlay texture is being read and initialised.

    As I cannot check whether it fixes the hangs or not, I can only hope that it will do the trick!
Mac-OS X Packaging

    Thanks to RayXambeR's feedback and support, I've finally managed to come up with a proper Mac-OS X packaging.

    The previous releases for Mac were merely made of a ZIP archive (much like the other platforms distributions), that wasn't very Mac-friendly, and that usually needed the user to be confident with the terminal console to be launched successfully.

    From now on, the Mac version will be distributed as a TGZ archive holding a true Mac-OS X application ; thus it can be run by simply clicking its icon!
Controllers Mapping

    Due to popular request ("popular" meaning at least 3 different person ;o) I'm adding support for the physical controllers within ParaJVE.

    Any controller supported/recognized by the computer should appear in the list of devices that can be (virtually) plugged into the two emulated game ports. This will let you use your favorite joystick or gamepad to play with ParaJVE (as if it was a real Vectrex joystick).

    At the time being, the code that handles the controller mapping is completed and fully functional. I'm currently working on some kind of calibration dialog that would let the user tweak the response of the analog controllers (I'm not sure if it will make it into the final release).
This is it, the next release is not too far away now ; more information and snapshot should be posted soon anyway.

Labels: ,