Update...
a few topics:
I do not intend to make VIDE an "emulator of choice" - I don't think it can get much "prettier" than ParaJVE... sad that there wasn't an update in the last 5 years or so.
As stated, I would like to make a development environment. It will not be as pretty as ParaJVE, it will not be as fast as VecX and it won't be as "elegant" as the MAME/MESS emulation.
I am a programmer who does get things to work, I am a pragmatic guy not one for beauty or aesthetics.
There are different steps which untill recently I all tried at once... but due to that parallelism non of that is finished and there are many lose ends.
Cornerstones:
a) emulation as good as I would like it
b) debugging capapilities
c) editing of vectrex "projects"
d) compiling and running in emulator on the fly
e) compiling and running on a "somehow" connected vectrex
f) building vectorlists/sounds/raster images
g) collecting data and fill a database with all known stuff vectrex
All of these points have already been addressed!
Here a status to each:
a) emulationAfter some false starts in the direction of analog emulation I think I am finally getting somewhere... This really took time away.
Some troublesome roms:
Spinball/Cleansweep
(etc. -offsets of vectors)
This seems (as I guessed 18 years ago) to be an issue of the analog hardware reacting on changes not immediatly but rather with a timed offset. Introducing timed offsets to XSH/YSH and RAMP resolved most of these vector misplacements.
One interesting thing is, that it appears that the "RAMP" reacts with different timing offsets if it is switched on or off.
[Notice:
- analog hardware does not give a damn about cycles or Mhz]
Moonlander text
One very "clever" homebrew developer invented his own text display routines which confuses most emulators.
The BIOS routine displays text like a "typewriter":
- draw a line "carriage return" "newline"
- draw a line "carriage return" "newline"
- draw a line "carriage return" "newline"
- draw a line "carriage return" "newline"
...
The moonlander routines are optimized in the way that text is written like
- draw a line "newline"
- draw a line backwards "newline"
- draw a line "newline"
- draw a line backwards "newline"
...
Meaning it saves all "carriage returns" and in vectrex terminology that means time (because there is no need
to draw a blank vector all the way back) - the new routine is nearly twice as fast as the original!
Ok, alright, you got me, I was the bad guy here - that routine was done by me.
Half done emulation:
- Lightpen, since it was so easy and could be done in between. Lightpen Port 2 is done. Lightpen Port 1 not yet (I am not in a hurry here)
- Bankswitching one implementation for Johns Vectopia
Not done emulation- VecRAM
- VecFlash
- VecVoice
- Multicard support
- RAA Spectrum
- Animation extra RAM
- analog Joystick
- second Joystick
- 3d Imager
Some of these probably would only take a few minutes (extra ram) to implement, but none of the items listed is on my
priority list right now.
Emulation wise I will take a break and look at other things of VIDE now.
b) debugging capapilities
Currently available:
- on the fly disassembler which reads *.CNT or *.LST files if found.
- r
egister window
- analog window
- 6522 window
- vector window
- memory dump window
- variable (RAM) window
- label window
- timing tracker window
(all of these can be "updated" on the fly, which really slows emulation down!)
Within these windows different kinds of information can be overseen (tooltips in general give aditional information).
If there is an address left click usually goes to disassembler window, right click to memory dump.
Debugging can be done in above mentioned disassembler window, there you can
- step, multi step, step out, overstep
- set breakpoints (pc = address)
- take steps back/forth
Half done:
- Breakpoints
This is the next thing I will do, breakpoints for all kinds of occasions:
- access variable - read, write, certain value etc
- changes of via/analog, certain values
- cycles - run x cyclesc) editing of vectrex "projects"
There is an empty class VectrexProject. Nothing else done!d) compiling and running in emulator on the fly
Implemented:
- There is an editor.
- There is syntax highlighting.
- There is a button "assemble & emulate" which works.
- There are rudimentary editor functions (like undo/redo, linecounting etc...)
Todo:
Nearly everthing else.
- the syntax highlighting is not 100% correct (more like 70%)
- the syntax of the assembler and disassembler are not the same yet, there is really some work to do here.
This is second next on the list of todos.
e) compiling and running on a "somehow" connected vectrex
Years ago Richard was kind enough to present me a VecFlash. I must get it connected to my Mac (ordered a USB->serial connector, waiting for it now...), than this will be my first device of choice to play around with that task.
f) building vectorlists/sounds/raster images
The vector list
- thing is nearly done. Although the main thing that will make it usefull (actually SAVING vector lists) is not done.Sound
I started porting VecSound to java on a lonely boring afternoon, but that is not finished and far down
my list of priorities. But a "final" goal non the less.
I might also add something along the line of "samples" but not sure yet.
Raster
I never really looked at "raster" images or how others implemented them, but they do seem to be rather en vogue right now.
Vectrex nows raster image from its earliest ages. Look at the font of vectrex these are raster fonts.
I think it would be quite easy to convert bitmaps to shiftable binary collections of data. Have to spend an afternoon or two looking into that. [Raster display for vectrex is even mentioned in the original vectrex patents: look e.g. at: Vectrex2.pdf]
g) collecting data and fill a database with all known stuff vectrex
I thought about it :-)!
And I have some code done to access and create a derby database - but haven't even done a database layout.
But I probably will do...
Regards
Malban