ParaJVE : Parabellum's Java Vectrex Emulator   

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

Wednesday, September 27, 2006  

Here and there

What have I been up to recently, concerning ParaJVE?
Well, lots of small things have been done, that may not necessarily shows right now, but that will come in handy in the future. Most notably:

  • Fixed a couple of bugs in the emulator's memory mapping :

    • Before, if the emulated program accessed an area of memory that does not exist on the real Vectrex, the emulator's VM would terminate execution - with a self explanatory "invalid memory access" exception, mind you ;)
      It appears that the Vectrex is quite relaxed regarding these accesses, so I finally redirected all the nonexistent memory address space to a NullMemory handler that returns 0 on reads, and discards writes.

    • Fixed a stupid bug where the emulated program could write into a read-only address space (ROM and CARTRIDGE areas) - Yes, there are ROMs around that have bugs causing this kind of behaviour ;) ... Needless to say, this was fixed in 2 minutes once the problem has been diagnosed.

    • Which leads us to the next point...
  • As I needed some kind of tool that would allow an easier diagnosis of crashes in the emulated program, I implemented a back-trace feature, along with its GUI.

    When back-trace recording is enabled (slows down the emulation a bit on "not-so-fast" computers), any crash in the VM immediately opens the back-trace window, that shows the history of executed instructions, along with the registers/stack content.

    In the end this module will also make a neat debugging addition (coupled with other stuff like breakpoints) when I'll start to implement a vectrex developer debug toolbox in ParaJVE.

  • Since the overlays rendering obviously appears way too dark, I started to try and make my own versions (Starting from an opaque picture of the overlay, I'm creating a picture made of several layers with different transparency).

    The few ones I completed look much better, so it sounds like I'll finally have to make them all (which is very time consuming, as I'm not that proficient in using GIMP) - Thus this task has been postponed...

  • The next version will include the games documentations, whose browsing will be triggered by a menu in the emulator... Thus I had to convert all the text docs into HTML. After having converted one by hand, I figured out rather quickly that it would be much more easy if this was performed by an automated program instead ;)

    Hence the conversion tool was coded in a rush, and all the HMTL documentations are now ready for inclusion. Maybe I will add them as standalone download package as well, since some people may be interested in grabbing these HTML docs alone.

  • I've started to ask several homebrew authors if I could include their games in the next version, and they kindly agreed -- so expect Thrust from Ville Krumlinde, Nebula Commander and Revector from Craig Aker to be embedded in the next packaging.

    As a consequence, I made a few modifications to the configuration file to support new information about the available games (release date and version, author's name and homepage URL, documentation path, and so on). Of course, the game selection dialog will display these pieces of information, but it's not implemented yet.

  • Last but not least, I lately started to work seriously on the sound emulation (based on a C source form MESS/MAME).

    I now have something that is roughly working, outside of ParaJVE (The sound "commands" & time stamps were previously recorded within ParaJVE, so that they can be played back later by the offline sound emulation routines).

    But for unknown reasons, the sound routines stop to work correctly as soon as they are embedded in the emulator. It seems that I'm having timing/threads problems again, but it needs more investigations.
And to finish, just an additional remark :

  I am well aware of the FPS problem that plagues the current version (eg. The FPS counter displays 60, but the games runs like it's 80 or even more). Although I don't consider it to be a top priority task at the moment, I'll eventually try and fix that sooner or later. :)



  • Hey Parabellum, I see what you've been up to now. Sorry to go snooping! But I am really impressed.

    I knew you liked the vectrex from before when you were doing the minestorm conversion in Yabasic, this really looks cool.

    I wonder how a gfx demo on the vectrex might look? Probably that isn't your intention for it but top draw stuff.


    By Anonymous Anonymous, at 10/05/2006 8:36 PM  

  • Thanks Shockwave! :)

    I may have a go at coding some sort of demo later on, when I'm working on a debug toolbox for homebrew developers.

    I'm not sure how much wireframed 3D could be packed within about 30k cycles, but it should be interesting / challenging to have a try...

    By Blogger Parabellum, at 10/06/2006 1:22 PM  

Post a Comment

<< Home