Parabellum's Java Vectrex Emulator, version 0.7.0
ParaJVE is an advanced emulator for the GCE Vectrex game console (created in 1982 by General Consumer Electric), written in Java 1.5. Its development started in early 2006, and the emulation is now mature enough to deliver a rendering close to the real machine, for you to enjoy most of the original games set (as well as some extra homebrew roms).
The emulator packaging is self-sufficient : it contains all the files needed to run the whole set of original vectrex games (this includes roms and hi-quality color overlays), and some additional homebrew games. Also included are the native libraries needed to use the JOGL and JInput APIs (JOGL is an OpenGL binding for java, JInput is a library to access connected joysticks). Unlike other java archives, these libraries are specific to the execution platform ; that's why you'll have to choose carefully when picking the packaging for download.
- An installed Java Runtime Environment, with a version greater or equal than 1.5 (it has been successfully tested with both 1.5 and 1.6 runtimes).
- A Windows Operating System (tested on Windows XP only), or a Linux Operating System (tested on Ubuntu only), or a Mac OS X 10.4 or greater (still needs some more tests, please contact me if you can help on that matter)
- Although not strictly necessary, a processor running at 1GHz or more is strongly advised ; a fast/recent Graphics Card could also help with the newer rendering features (image post-processing).
IS IT 100% LEGAL?
ParaJVE comes packed with a number of Original and Homebrew ROMs, so you could wonder about the legality of it all.
It is perfectly legal for anybody to download, install and run this software, since the embedded ROMs are either public domain (some homebrew games, as well as all the original 80's cartridges) or either Homebrews whose authors gave me the written permission to include in the ParaJVE package.
DOWNLOADING & INSTALLATION
Select and download the archive corresponding to your target system, and decompress it on your hard drive (your Operating System will usually do this part automatically).
To run the emulator, depending on the downloaded packaging, just double-click "ParaJVE.exe" (for windows), double-click the ParaJVE icon (for Mac OS X), or just run the "ParaJVE" shell (for linux).
SO HOW MUCH DOES THIS THING COST?
ParaJVE is freeware for personal use.
The only thing I'm asking for are comments about this program (bug reports, ideas, constructive criticism, ...). Even if you don't have anything special to say, just send me an email or post a comment over at ParaJVE's development blog to tell me whether you like the emulator or not! ;)
Please note that it is not public domain software and may not be sold or used for commercial purposes without the express written permission of the author.
The following bugs have been identified :
- The timing method using nanoseconds resolution may not work well on the systems run by a multi-core CPU. This is a known java bug and there's no way to resolve it AFAIK. If you have this bug, just open the "Framerate" dialog through the menu, and switch to "Milliseconds" granularity.
- The new glow shader has been reported to fail with some older 3D cards (due to a card driver fault). If this was to happen, restart ParaJVE, and just disable the "Vectors Glow" option.
- Every text displayed in the emulator seem to be shifted a bit to the right. It's apparently due to the fact that ParaJVE does not implement any RAMP delay code yet. Many thanks to Chris Salomon for the tip!
- Clean Sweep cartridge : The graphics rendering of this game is a complete mess. Again, it's likely to be caused by the problem above. Will work on this later...
Should you find any additional bugs, please let me know, and I will add them to this (ever growing) list.
29/12/2010 - Version 0.7.0
- Added several command line parameters (described in the User Guide).
- Added a "Welcome Dialog" that pops up when the emulator is launched for the first time. It sums up the basic settings information, so that users don't have to go through the documentation (or configuration dialog) to discover the default key mappings.
- Implemented a mechanism to perform an automatic deployment of the native libraries, depending on the execution environment (32 or 64 bits JVM).
- Created two native executable launchers for Windows : One to launch the emulator in a console, the second to start it as a "windows" application.
- Better Mac OS X integration : added some callbacks to handle the About/Preference/Quit "system" menu items.
- Implemented a fallback method used when the fullscreen mode is reported not to be supported by the system (eg. Ubuntu 8.x with sun JRE).
- Added support for game saves (Standard Save and Quick-Saves).
- Upgraded the emulator memory model in order to support dual-banked and multi-banked games.
- Improved the configuration file handler so that it can fetch binaries from zipped files, and support multi-banked games (either as a big raw file, or as a list of 32K files) as well as crypted files (games that are theoretically not intended to be made publicly copyable).
- Included the freeware version of the games "War of the Robots" and "Vector 21" by Fury Unlimited, and created two original overlays for both games.
- Included the freeware version of the games Protector and Y.A.S.I by Alex Herbert, and created one original overlay for YASI.
- Included the 64K (dual-banked) versions of John Dondzila's cartridges "VecMania" and "VecTopia".
- Implemented a special "interlaced" rendering mode, targeted at the so-called bitmap-vectors oriented games (eg. YASI).
- Corrected the emulation speed issues for all games ... hopefully :-).
- Fixed a bug that caused the shots sound in Solar-Quest to be silenced.
- Fixed another bug that caused the sound output in Star-Hawk to be totally inaudible.
- Fixed a crash that occurred when two different memory areas were accessed at the same time (by reading a 16 bits number at the end boundary of one memory area). For instance, Polar Rescue attempting to read 2 bytes at $FFFF with an "LDD 0,Y" instruction.
- The main window position/size is now persistent (including its maximized state) + added a window size optimisation feature.
- The vectors are now sorted by brightness, and the darkest ones are drawn first (to avoid that a dull vector darkens brighter ones).
- Created all the overlays pictures from scratch, and packed them in a single resource file.
- Better Overlay rendering : the transparent colors are now more visible (giving true colors to the vectors), and you can now select the overlay rendering method (8 choices) that best fits your monitor.
- The overlays are now loaded only when they are first displayed. If you play the games with the overlays disabled, the emulator starts much faster.
- Added an option to display a special overlay simulating a part of the Vectrex front frame (and its rounded screen, with a bit of refraction).
- Implemented an OpenGL glow Shader for a better simulation of the Vectrex screen properties (available only if your 3D card is not too old). A settings editor is also included so that you can create/save/load your own shader profiles.
- Added several user-editable settings for tweaking the monitor gamma correction, as well as the vectors brightness factor and thickness...
- Added two display options to simulate some common Vectrex defects (Vectors Wobbling and Brightness Flickering).
- A full core dump is now saved into a file when the engine raises a fatal error, thus allowing post-mortem diagnostics if you send me the file.
- Added an experimental debug menu called "Inject RAM in cartridge". It generates a binary derived from the original cartridge, that embeds the current RAM & CPU registers. These values are restored whenever a button is pressed on the 2nd joystick. This works on a real Vectrex, too.
- Changed default keymaping for joystick #1 buttons (AZER for French/Belgium keyboards, or QWER for other countries). The mapping settings dialog now also detects and handles the duplicate keys correctly.
- Created a public bug tracker for ParaJVE & ParaJVD.
01/11/2008 - Version 0.6.0
- 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.
13/04/2007 - Version 0.5.0
- Rewritten and cleaned up the startup code, to reduce the odds of having the emulator hanging during initialisation.
- Now supports the mapping (in analog mode) of the connected physical control devices (joysticks, gamepads, trackballs...).
- Added a hot key for the ScreenShot feature (default is PRINTSCREEN).
- Changed the way ParaJVE is packaged for Mac OS X (now appears as a standard Mac application) and Linux.
11/01/2007 - Version 0.4.0
- Updated the embedded JOGL library, to make ParaJVE work with the latest 1.5 java runtime (update 10).
- Included the game Star Sling 4K (Turbo Edition), by Vectorzoa.
- Changed the way the game ports are handled. Now you can plug/unplug different peripherals into both ports through a special menu.
- Added peripheral emulation : PS/2 Keyboard Adapter.
- Implemented direct DAC write to Sound Resistive Network. Now you can hear the CPU generated sounds (in "Spike", for instance).
- Implemented VIA6522 SR Mode 101 (Shift Out Under T2 control).
- Fixed a regression introduced in 0.3.2 where the command line argument -GAME=xxx was not handled correctly.
08/11/2006 - Version 0.3.2
- Implemented the analog mode built in Vectrex joysticks,
- Parasite dots removal : tweaked the heuristics to remove even more dots,
- Added a feature to automatically build any ROM from its assembler sources (using AS09 by Frank A. Kingswood), before loading them. When the sources or binary are modified, the ROM can be rebuilt/reloaded without having to restart ParaJVE. Feature not available under Linux yet.
24/10/2006 - Version 0.3.1
- Included more homebrew game roms,
- Added a "display rotation" settings in the gfx menu (0°/90°/180°/270°),
- Implemented fullscreen support, selectable at startup (it looks like it won't be available under Linux, unless you use a 1.6 JRE),
- Fixed the annoying High-Frequency sound bug that could be heard in some games (Scramble, Pole Position and other homebrews).
18/10/2006 - Version 0.3.0
- Added sound emulation,
- Added HTML documentation for included games,
- Embedded some extra homebrew game roms.
- Changed the game selector to display more information about the selected ROM,
- Coded debugging tools (execution backtracing, sound monitoring, rom reloading, ...)
- Also fixed several bugs (invalid memory accesses, keyboard focus, ...)
10/09/2006 - Version 0.2.0
- Added overlays, rewritten GUI, added persistent configuration. Now embeds the game roms for easier installation.
18/07/2006 - Version 0.1.0
- INITIAL PREVIEW RELEASE of ParaJVE
LICENSE & DISCLAIMER
ParaJVE is Copyright ©2006-2011 by Franck Chevassu.
Permission to use and copy this software for any non-commercial personal purpose, without fee, and without a written agreement is hereby granted, provided that this document appear in all copies, unmodified.
You are allowed to provide a direct link (or host a mirror) of any of this software's packages, as long as the download access remains free, AND ONLY IF you also exhibit a clear reference to ParaJVE's Development Blog URL (http://vectrex-emu.blogspot.com) somewhere on your pages.
Any commercial use or distribution of this software (on any media such as CD or DVD, or in software bundles, for instance) is explicitly forbidden without first getting the express written permission of the author (contact me).
IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.