If you have reasons to complain about Vide,
please use the issue tracker on the github site:Β GitHub new Vide issue.

If you want to tell me how great Vide is – please do just leave a comment!

If you want to send me gifts (preferable in the form of vectrex cartridges you developed with Vide πŸ™‚ ), you can leave me a message and we will work something out:contact



82 thoughts on “Contact

  1. ArugulaZ

    Hey, I was just wondering if your emulator has support for spinner games, like Spike’s Water Balloons and the games reprogrammed to use spinners (Bedlam for instance). If your emulator supports computer mouses for input that would be an important first step. Thanks.

    1. Malban Post author

      Edit september 2016:
      Input devices ARE supported now, one must configure the devices available under the Configuration menu.

      Controllers are not really well supported yet.
      I started adding code with JInput library, but haven’t finished coding yet.
      My goal is to support different types of controllers (vectrex wise and input devices to the emulator as well) eventually.

      But there is as yet no definite date.

      As of now only the “original” vectrex joypad is supported (and lightpen).


  2. Chris Parsons


    Just started using VIDE and watching your videos… already I can tell it will speed up my development, thanks for your efforts on this!

    Couple of bits of feedback and requests for the future:

    – It would be great to be able to have the drawing window in Vecci about 4 times the current size… it’s making my old eyes hurt to look at it πŸ™‚

    – Would it be possible to output the vecci coordinates in this format:
    fcb -1, -10, 30
    fcb -1, 10, 30
    fcb -1, -120, 0
    I like to tweak and play with the coordinates after and the HEX values aren’t as readable.
    Also I did export as Draw_VL_mode and I couldn’t get it to scale in my program, it just appeared very big whatever value I used for scaling.

    – Being able to enable save on compile would be helpful; I went over to another project to check some old code, came back to my new project and had lost my latest changes as I hadn’t clicked save… the code reverted back to last save.

    – I have a problem where I get an error on trying to compile code with some existing macros I had written and that do work, honest! Vedi reports an error “unterminated macro”. I have endm at the end of each macro… does Vedi expect something else? Example:

    Intensity_a macro
    STA <$D001 ;Store intensity in D/A
    STA $C827 ;Save intensity in $C827
    LDD #$0504 ;mux disabled channel 2
    STA <$D000
    STB <$D000 ;mux enabled channel 2
    STB <$D000 ;do it again just because
    LDB #$01
    STB <$D000 ;turn off mux

    1. Malban Post author

      Gee :-).
      Im at work right now – so only a few lines.
      1) Vecci – its done, next version uploaded will have a bigger window.
      2) Will do, its only a flag and doing hex or no hex shouldn’t be a problem – as you see I find hex better readable than dec πŸ˜‰
      3) Draw_VL_mode
      Here you need to elaborate more. Scaling is not set in the “Draw_VL_mode” list. Scaling in general is done using scalefactor (which is timer 1), you probably know.
      What I “introduced” if the checkbox is set, is a “FACTOR” a multiplicator, that you can use if the vector coordinates are small. The factor should always be chosen that the maximum result is below 127.
      If you are refering to the generated code, the scalefactor (timer 1) is set in line 43.
      4) On compile files ARE saved. If you are in a project all project files are saved. If you are editing a “single” file (that is, when not in a “project”) than upon compile the currently edited active file (not all files) is saved.
      5) I copied your code and it works.
      I only changed indentations.
      – Make sure, that the name of the macro starts in column 0 (no space or whitespace before).
      – Make sure that pseudo opcodes (like “macro” or “endm”) are not at the beginning of a line, that means some kind of whitespace must be before them.
      – My guess “seeing your error message” is, that the “endm” starts at column 0, place a space befor that and it should work.

      Overall I personally am not comfortable naming macros exactly the same as possibly BIOS routines. But I tried it – and it worked.


      Keep the questions/suggestions coming :-)…


  3. vtk

    hey Malban,

    i had another little play with Vide 1.06 today, do u think it would be useful to add a new button: ‘toggle overlay’ in vecxi (because otherwise u have to keep going into the
    Tools–>Configuration to toggle the overlays on/off)

    perhaps also the added feature (or perhaps have it as an option in settings) of allowing the emulation in vecxi to be paused/un-paused by a left mouse click anywhere in the vecxi emulation window

    1. Malban Post author

      in principal those things are easy to add – but if you don’t mind asking – why?
      I mean – you can leave the configuration window open and put it somewhere where it doesn’t hurt – than switching on/off is also only one click away.
      Also there is a pause button right at the top of the emulation window, what is the additional usecase for pause upon clicking anywhere for pause?

      Don’t think I am objecting adding these features – but I am curious what additional use they actually serve.


      1. vtk

        ah ok was just a couple of suggestions really, no big deal really. for the overlay toggle suggestion, it’s just a habit that i dont tend to leave config windows open if i dont have to, so just seemed convenient to have the option to toggle the overlay on/off as a button in the vecxi window itself (i noticed there was room available for some more buttons in vecxi πŸ™‚

        and the second suggestion to click anywhere in the vecxi emulation window to pause/un-pause, i figured that would speed up pausing/un-pausing because the emulation window is bigger than the small button :p

        1. Malban Post author

          Room for buttons.
          Actually – I always thought the buttons which are available now – use already to much space.
          When I develope using Vide (or debugging) I usually have a very small vecxi window and large dissi and dissi related windows. Since I am usually more interested in “numeric” output than “visual” output (and there is only so much space available on a desktop). So I tried to diminish the number of buttons, I even thought about removing the button bar entirely.

          I never really thought of Vide as an “emulator” to run vectrex games, since ParaJVE is so much prettier. And – I must admit – the usecase of switching overlays on and off often enough to warrant a special button was not one considered by me.

          About the pause/unpause. Might it not even be better if I assign a keyboard shortcut for pause/unpause?
          If you actually use vide mostly you do not use the mouse to play anyway, if you want to pause – you must leave your other input device, grab the mouse, focus the vecxi window and click.

          Just hitting (e.g.) “P” might even be better still?



          5 Minutes later, I implemented Hotkey buttons “P” for pause/unpause, and “O” for Overlay toggle in vecxi.

  4. vtk

    i spent some more time on Vide 1.06 today, i recently got hold of a laptop which has windows 7 64bit and has an intel i5-4200M cpu (2.50GHz, turbo boost up to 3.10GHz … 2 cores, 4 threads)

    Vide runs well so that’s good news, but im confused about something (don’t know if it’s just a windows problem, a setup problem, or maybe it’s just ‘normal’)..

    see this pic:

    if i go to Developer mode in the Vide config, im no longer quite reaching 100% speed performance

    i figured that maybe my cpu is not quite good enough to run Vide at full speed in developer mode. but one thing i noticed is that looking at windows task manager, that javaw.exe is (only?) using 25% of the cpu … and you can see at the bottom of the task manager window that my cpu usage is only about 25%. does that seem normal? that low number just kind of seemed odd to me, considering that Vide in developer mode was not running at 100%

    im using the latest java environments (i installed both the regular and 64bit java downloads as recommended)

    im tempted to try an older java install; dont know if that would help .. can’t really think of any other ideas at the moment (if anyone has any suggestions or ideas please let me know, thanks)

    1. vtk

      i decided to do a test using a program called ‘heavyload’ to stress my cpu (heavyload allows you to choose to stress just one of the cores of the cpu. so that’s what i did)

      here’s the screenshot:

      that seemed to behave more as i expected; it shows in task manager that my cpu usage is 50% (because the other core is not being stressed at all)

      i would have thought (..well, hoped) javaw.exe would allow a single core of my cpu to be pushed up to 50% if necessary, instead of only reaching 25%.. so i’m not sure what is going on there. i will continue to investigate

      1. Malban Post author

        Since Vide runs very good on my System(s) I actually never had the need to investigate speed/performance and thread issues myself. So I can not really give good advice here.

        Only thing that I can tell – which might shed some light is, that the gui (as usually) “runs” in the EDT (Event Dispatch Thread), and each emulated vectrex instance (vecx) runs in its own thread and only tells the edt when to update the visuals. The difference between developers mode and normals mode is (mostly), that the state information is saved. The saving of the state information, while not really BIG in itself, is causing some CPU load, since it is done every single emulated cycle. For your experiments you might want to try running more than one Vecx and look if the “hardware” threads are used and to what extend. I don’t know off hand how the java system does thread instantiation in relation to the underlying CPU architecture.

    2. Malban Post author

      Hm – again – ,
      How is CPU usage calculated in the task manager?
      If (for whatever reason – see other reply), the java environment is not able to use more than one thread, than (only) one (of the four) Threads is used – and that to 100%, that would amount to 25%. But I am just guessing here.

      Hehe – an easy solution would be to switch off developers mode – you only really need that if you want to debug your own creations (and step forward and backword thru the execution of your programs). In that case the speed of emulation is highly irrelevant anyways, since you are single stepping.

      Sorry for not being able to provide more smart answers.

      Thanks for your time and investigations. If you discover interesting things or have tips to make Vide more performant you are more than welcome.

  5. vtk

    hey, thanks Malban for adding the hotkeys πŸ™‚

    I didnt have a chance to play with Vide today but will try to have another go again soon.. i was planning on getting into some vectrex coding so figured i would need that developer mode always set. i wonder if i could use the developer mode but turn off a few features i prob wont need (for a beginner coder) .. (or instead perhaps as you say, if im using the single stepping then it doesnt matter about hitting 100% speed anyway)

    1. Malban Post author

      All options can be switched on/off arbitrary from each other.

      You can use the editor and compile with any combination of options, there is no development mode – per se. The Developer “mode” is only a set of options I switched together I deemed sensible for my own needs – I might also have named them “Malban options”.

      You can develope and use everything also in e.g. performance settings. You can also switch on/off options in the middle of running a cart (although stepping forth and back in the code will only be available for steppings done after you switched it on).

  6. vtk

    How is CPU usage calculated in the task manager? If the java environment is not able to use more than one thread, than (only) one (of the four) threads is used – and that to 100%, that would amount to 25%. But I am just guessing here.

    hey, just to confirm, yes that was right, java is only using one of the 4 CPU threads so that explains the performance issue

  7. Phillip Eaton

    Hi Malban,

    I tried out the debugger, it appears to break at the start of the a user program, skipping all of the OS boot-up code. Apart from putting in a jump into the user program to go to the OS somewhere in $Fxxx, can I make the debugger start at $FFFE instead of the user code? I’d like to debug the boot-up sequence.


    1. Malban Post author

      this is trickier than I thought. As a matter of fact you can, but not straight foward. Here your choices:
      a) if you run your own program, than you can start it of with:

      org $f004
      ; hey dissi “break”
      org 0

      Than debugging starts at $f004 – you can’t start debugging $fffe, since this is not an executable location. The first emulated instruction is the one at $f000 – and internally (in the emulator) breakpoint checking is done AFTER an instruction was handled. The first after you will ever receive is after executing $f000.

      b) start the emulator, go to dissi, set a breakpoint at $f000 (mark the row and press space), enter the command line command “sr” (softreset).
      Doing softreset does not clear breakpoints per default but does a “softreset” (starting the emulation with the current cartridge with the boot up sequence) – than you can break exactly at $f000.

      With those two choices I think you will be fine…


      1. Phillip Eaton

        Danke schΓΆn Malban, ich probiere dies, mehr sauber dann meine idee!

        For some reason I thought that your website would email me if anyone responded…but it doesn’t…luckily I came back to look πŸ™‚


        1. Malban Post author

          Hm, I use the default settings of the WordPress blog… didn’t change anything.
          I haven’t go a clue what the email is for, that you must provide for a comment – perhaps some sort of additional spam protection :-).

          I guess if you login as a “user” – than you’d get a message :-)…

  8. Eric Barwell (Hurray Banana)

    Hi Malban,

    I’ve just started to have a play with VIDE and it’s an awesome bit of kit. I’m gonna do some 6809 assembler with my students at College and have tested that it works. The only problem I have is when trying to download the samples/demo/games. I think our proxy must be blocking the domain where the files are stored. Could you let me know what domains are accessed so I can get them white listed on our proxy server?

    Thanks in advance and this is a great development environment.

    1. Malban Post author

      Vide comes with all original games in the package. Also under “tool” codi – many examples are listed, that can be compiled out of the box (directory “codelib” if accessed from outside of vide).

      The programs that need internet access are roms that in general are not “totally” free – and thus can only be downloaded from the authors (or some other) site. There is no single domain that Vide uses.

      If you open the Cartridge Information (Menu Tools->Utilities->Cartridge Information), and open the game your are interested in (combobox at the top) you can access the complete information of any configured cartridge.

      Fourth item from top “binary link” – if you press the button after the textfield, another dialog opens – within this dialog all download information is gathered, also the link to the binary (URL).

      If you want to extract that information programmatically – all information is kept as data in an XML file, in the Vide directory: Vide/xml/Downloader.xml

      Tags are fairly self explanatory…


  9. Phillip Eaton

    Hi Malban,

    On the latest VIDE, 2.0 RC17 I think, can the emulator run a binary file that was not assembled by VIDE and has no associated assembler output files? I tried running a ROM I created with an external cross compiler that produces nothing but the binary file. I created a simple VIDE hello world project & binary that works fine, then dropped my other binary into the same directory and loaded it directly into the emulator, but it doesn’t run, it switches to Mine Storm. The start of my alternative ROM has the same code as the hello world example (plus a load more also), but a different name. My alternative hello world ROM runs fine in ParaJVE. Maybe I just need to change or remove the non-binary assembler output files?

    1. Malban Post author

      You don’t need to build a project to run an external ROM. Just open a “vecxi” window. On top there is an icon with a folder and green arrow for loading a ROM.
      Select the bin file you want to run – and press the start button afterwards.
      (If another ROM is already running you have to press stop before).

  10. Phillip Eaton

    Thanks for the reply. Hmm, that’s what I did. Maybe it’s because the ROM I tried was a full 64k binary, full of 00’s with non-Vectrex reset vectors. I didn’t think of that at the time, it was late at night and I have a really bad cold. I’ll chop it down to 8k and have another go later on. This is the reality of hobby development when you have a two-young children family, grab an hour occasionally if you’re lucky when everyone’s gone to bed and try to not forget what you were doing the time before as you were half asleep!

    1. Malban Post author

      OK. What exactly do you classify as ROM file?
      If you mean a “normal” cartridge ROM that should be max 32k. It can be 64K if it is a bankswitched Rom – than the “usual” bankswitching is applied.

      Using Vecxi you can load (as described) such a ROM – must have the appropriate cartridge header etc.

      If we are talking about a BIOS replacement ROM, than I beg to differ :-).

      You can also do that but not from a project – and also not from vecxi. To load a different BIOS you have to go to “configuration”- there on the first page the first entry reads “boot rom” – here you have to insert your own ROM (8k is expected, from $e000 onward).

      To enter “own” BIOS click the little “gear” icon – and fill in all fields (like file, name etc) – the resulting “named” BIOS will selectable on the first config page.

      This is a bit hassle – but Vide was not built to build new BIOSes…:-)

      1. Phillip Eaton

        OK, so I tweaked my compiler to produce an 8k binary and now my hello world program works fine. All the binary is, is a standard hello world example exactly the same as VIDE creates, but with a full replacement BIOS in the binary afterwards. I’ve skipped the idea of replacing the GCE BIOS because the multicard I’m using might use code from it and I need multicard for the serial port otherwise I’d need to hookup a 6850 UART or similar. Retaining the GCE BIOS was always the target anyway because I can’t really expect people to swap out their physical ROMs, so I’m just skipping the intermediate step. Next steps are to incorporate the serial port drivers and bootstrap my code in place of hello world (including the cart header of course). Tiny step by step I’m getting there… BTW, what’s your preferred forum for discussing this topic? Private E-Mail works, but I think it’s good to discuss in public as it promotes VIDE the dev process generally. Proboard? AA? Here?

    1. Malban Post author

      Pretty sure I used the latest “MAME” compatible version.
      Sure you placed in the “/MAME_ROMS” directory? (That is new in the latest FW version).

  11. Sprazzi

    Thanks. Yes I assume the Path is correct as asteroids plays Just fine…
    And whats about Battle zone i keep on Reading about running in vecfever? It Is not released yet, tight?!?
    Thanks again, youre very kind.

    1. Malban Post author

      Battle Zone was release a couple of days ago – see VecFever -> Downloads.

      I cannot offer roms for download – that would be illegal – however if you somehow get the (current) MAME Roms – they should work.

  12. sprazzi

    Wow just wow tempest is amazing!

    I can add no more than thanks for this treats!

    PS: red baron rom and lunar lander rom still elude me…
    so… if somebody wants to discuss with me how to dump the rom from original hardware I’ll just leave my email here ;))
    Thanks to anyone who will replay πŸ™‚

  13. Fabrizio Caruso

    I would like to use GCC6809 for the Vectrex and other 6809-based systems without the full VIDE infrastructure, i.e., I would just like to invoke the compiler though commands in a Makefile but I cannot find examples on how to do this.
    GCC6809 is not as user-friendly as CMOC… So I wonder if you could give some hints and a simple hello world examples that I could compile and link with command lines and have a usable binary for an emulator.

    1. Malban Post author

      Actually i partly built Vide so it ist easy to program and create vectrex things.
      What you are asking is the reverse – how do you make it “more complicated”.

      That said – if you look at:
      a) The documentation of Vide
      b) and/or the project settings for any of the C programs
      c) or just look at the log window/file after a compile

      You can see exactly what is invoked.

      Example: demo5.c

      This is the output when you press the “>” button (compile):

      INFO: Compiling: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/demo5.c
      GCC: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/cc1 -Os -quiet -fverbose-asm -W -Wall -Wextra -Wconversion -Werror -fomit-frame-pointer -mint8 -msoft-reg-count=0 -std=gnu99 -fno-time-report -I/Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/include -D__INLINE_RUM=1 -DOMMIT_FRAMEPOINTER=1 -I/Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/include /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/cartridge.c -o /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.s
      INFO: Compiling: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/cartridge.c
      GCC: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/cc1 -Os -quiet -fverbose-asm -W -Wall -Wextra -Wconversion -Werror -fomit-frame-pointer -mint8 -msoft-reg-count=0 -std=gnu99 -fno-time-report -I/Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/include -D__INLINE_RUM=1 -DOMMIT_FRAMEPOINTER=1 -I/Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/include /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/demo5.enr.c -o /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/demo5.s
      INFO: Compiling: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/demo5.enr.c
      GCC: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/cc1 -Os -quiet -fverbose-asm -W -Wall -Wextra -Wconversion -Werror -fomit-frame-pointer -mint8 -msoft-reg-count=0 -std=gnu99 -fno-time-report -I/Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/include -D__INLINE_RUM=1 -DOMMIT_FRAMEPOINTER=1 -I/Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/include /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/cartridge.enr.c -o /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.s
      INFO: Compiling: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/source/cartridge.enr.c
      ASM: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/as6809 -x -p -l -o -y -g /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/demo5.rel /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/demo5.s
      INFO: Assemble: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/demo5.s
      ASM: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/as6809 -x -p -l -o -y -g /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.rel /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.s
      INFO: Assemble: /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.s
      LINK: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/aslink -n -m -u -w -s -k /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/lib/ -l libgcov.a -l as-libgcc.a /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/Demo5.s19 /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/crt0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xea.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xe7.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf9.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf8.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dped_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xed_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xc8_2.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/gcc.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xd0_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xfe_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xc8_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xc8_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xfe_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xd0_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dpfc_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpc8_2.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpd0_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xfc_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpc8_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dpfe_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dpfe_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpc8_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpd0_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpcb_2.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xfd_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xe9.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf5.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf4.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpcb_3.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpcb_1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf6.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf7.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_dpcb_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_0xff_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xcb_3.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf3.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dpfd_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf2.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xcb_2.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xcb_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rom_dpff_0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf0.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_rum_0xf1.rel /Users/chrissalo/NetBeansProjects/Vide/C/PeerC/vectrex/lib/vec_ram_0xcb_1.rel /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/cartridge.rel /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/lib/demo5.rel
      INFO: Link ...
      SREC: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/srec2bin -q /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/Demo5_rom.s19 /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/Demo5_rom.bin
      INFO: SREC2BIN: build/Demo5_rom.s19->build/Demo5_rom.bin
      SREC: /Users/chrissalo/NetBeansProjects/Vide/C/Mac/bin/srec2bin -q -o -0xc880 /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/Demo5_ram.s19 /Users/chrissalo/NetBeansProjects/Vide/projects/Demo5/build/Demo5_ram.bin
      INFO: SREC2BIN: build/Demo5_ram.s19->build/Demo5_ram.bin

      Now you can remove the “comments” from the above lines and you will be able to execute all the
      lines from the command line.

      If you want a different directory structure… you must “sort it out”.
      Above example is done on my iMac, on Windows, you can do the same….

  14. Timmy2905

    Hey Malban!
    I just built Vectorblade and was really hyped to play it πŸ˜‰ I even reproduced the overlay! But now that I tried it, I’m facing a problem… I tried to play it using my Vextreme Flashcart, which is really modern and supports up to 12mb! bankswitching. I tried the VecFever and Normal Version and both just instantly crashed. I tried these two versions also on my pc on Vectrexy and even the VIDE Emulator and both time it didn’t work. It only worked in the Vide emulator after compiling. I only copied the mainBank0_256k.bin. Do I need anything else, or does it only work on the VecFever and original cartridge?

    Thanks in advance! πŸ˜€

    – Tim

    1. Malban Post author

      Only VecFever with the IRQ mod, Vide – or a special Vectorblade cartridge.

      You can either build your own,instructions come with Vectorblade or try contacting Brett Wallach (US).

      1. Timmy2905

        Ok, thank you! πŸ˜€ I’ll probably build my own then, but that’s also something I could ask Brett about! The vextreme is still a heavy wip, so it would be cool, if it could be playable in the future πŸ˜‰

  15. Geoff Burt

    I just want to say thank you for the work with the Pitrek image, I had spent days trying to get it working.
    I’m also enjoying the challenge of Vectorblade.

  16. Peter Davis

    I would just like to take the time to say a big thank you for all the work you put into the Pitrex baremetal image.
    I have really enjoyed using your work, finally coaxing life into my Pitrex and enjoying the games running on it.

    And, while I am here, Vectorblade has been a constant delight since I got it, I’ve never come away from the game feeling anything other than happy.

    Thanks again

  17. Alan Leverett

    Thank you for an excellent suite of tools and emulator. I have just used it to create an info screen for my upcoming DIY Cart+8 (8KB images) and DIY Cart+32 (32KB images).

    Is there any way to toggle the port b6 input on the emulator as i would like to check my reset routine , or do i have to wait for my prototype board to arrive and try it for real?

    Do you have any games that i could have permission to include on the cartridges?

    The idea of the cartridge is that most people could make one and i will give full instruction on how to make your own collections – all for free , the only thing i would make is 50cents per order of boards from PCBWay.

    1. Malban Post author

      No. As of 5 minutes ago that was not possible.
      But that is a really small change. Pls download:,
      Rename the file to Vide.jar and replace your “own” Vide.jar.

      Pls note:
      I have not uploaded a new Vide in quite some time, there were defenitly changes – which I can’t remember all.
      With my current system the above file works ok, if there are some errors with the “environment” -let me know, than I must generate a “full” install.

      Go to dissi, while your cart is running.
      In the command line enter “carti”, than the usual cartridge window opens. At the top, there is a new checkbox “PB6 from extern”.
      The state of the checkbox represents the PB6 line state as input from the cartridge to the vectrex.
      (can also be verified using the VIA debug window)

      Let me know if this works for you!

      You can include everything I did on your cart.

    1. Malban Post author

      The software (BIOS) handles that, it depends on some RAM locations value that is setup within the BIOS, can’t remember “what” by heart though.
      If you want to reset “manually” you can do that from dissi – either a hard or softwareset.

  18. Alan Leverett

    I think i did not press the ‘post comment’ button last time i replied.

    Thank you for the permission and prompt response.

    I will send you a prototype to evaluate if you give me your address!

    Have tried and it seems to work just not sure if in correct mode . check box=1?

    1. Malban Post author

      My understanding was, that you needed to emulate whether the PB6 pin on the cartridge port
      was set from the cartridge side. Either 1 or 0 -> that is the checkbox πŸ™‚

    1. Malban Post author

      Yeah, you have to look at the VIA debug window.

      The “value beside it” is the “outgoing value” from the vectrex side to the cartridge.
      The actual “real” value depends on whether the port is INPUT or OUTPUT (DDRB setting).

      Also if “OUTPUT” is configured, you can still read the port… can’t remember that behaviour by heart,I had written it down somewhere….

  19. Alan Leverett

    Initially it is set to input , and that suits me fine!

    I was surprised how easy it was to do a list , especially after not doing machine code since the 90’s ( good old c64 ). Your suite makes the programming very very easy , once again thank you for the gift that is VIDE.

  20. Alan Leverett

    Could i pick your brains??

    I am trying to read the PB6 line on the edge connector and do a cold boot when high.

    My arduino sets this high before setting the high bits of the rom address and the software should detect this and then cold boot.

    the cold boot routine is simple:-

    DEC Vec_Cold_Flag
    jmp $f000

    and this works but it is reading the pb6 that is giving me trouble.

    i have tried

    LDA #01000000
    ANDA $d000
    BEQ Cold

    LDA $d000
    ANDA #010000000
    BEQ Cold

    as well as afew other things , but it does not seem to quite work?

    1. Malban Post author

      Two things come to mind.

      a) What assembler are you using?

      With β€žmyβ€œ assembler: LDA #01000000
      Would be a HUGE number – if you want β€žbitsβ€œ, than write:

      LDA #%01000000
      LDA #$40

      I can’t remember by heart whether PB6 is configured per default as INPUT, but I think it is, if not
      you must check the DDRB register and perhaps set it to input.

  21. Alan Leverett

    No it still does not seem to work.

    The port is initially set to input and i have not changed it.

    I have used the LDA #$40 option and if i do ‘BNE cold’ it just keeps resetting and if i do ‘BEQ cold’ it won’t reset at all.

    1. Malban Post author

      Just as a demo – below code works.

      In my latest Vide install (not available to download), I can trigger external PB6
      with a button press and at least in the emulator the below code is working.
      I have not built/burned it to a cart though.

      Hm, sorry in the comment function, the preformat is lost… πŸ™

      ; load vectrex bios routine definitions
      INCLUDE "VECTREX.I" ; vectrex function includes
      ; Variable / RAM SECTION
      ; insert your variables (RAM usage) in the BSS section
      ; user RAM starts at $c880
      ORG $c880 ; start of our ram space
      ; The cartridge ROM starts at address 0
      ORG 0
      ; the first few bytes are mandatory, otherwise the BIOS will not load
      ; the ROM file, and will start MineStorm instead
      DB "g GCE 1998", $80 ; 'g' is copyright sign
      DW music1 ; music from the rom
      DB $F8, $50, $20, -$80 ; hight, width, rel y, rel x (from 0,0)
      DB "NEW PROG", $80 ; some game information, ending with $80
      DB 0 ; end of game header
      ; here the cartridge program starts off
      JSR Wait_Recal ; Vectrex BIOS recalibration
      JSR Intensity_5F ; Sets the intensity of the
      ; vector beam to $5f
      LDU #ACTIVE ; address of string
      lda #$40
      bita VIA_port_b
      bne isActive
      ldu #NOT_ACTIVE
      LDA #$10 ; Text position relative Y
      LDB #-$50 ; Text position relative X
      JSR Print_Str_d ; Vectrex BIOS print routine
      BRA main ; and repeat forever

      DB "PB6 ACTIVE" ; only capital letters
      DB $80 ; $80 is end of string
      DB "PB6 NOTACTIVE" ; only capital letters
      DB $80 ; $80 is end of string

    1. Malban Post author

      At some stage I plan to support the PiZero2 with my baremetal implemenation.
      (But as of now – I have not released anything that works on a PiZero2, GPIO ports are mapped to different memory locations, amongst other things)

      I can’t say anything about the Raspbian side though.

      The “only” benefit will be, that things that run too slow now – will be faster, or with original speed.

      But keep in mind, that the vectrex is not capable (regardless of the speed of the Raspbian) of displaying more than a few hundreds vectors within 50Hz.
      This will not change.
      But the plan (final stage) is to use 1 core for emulation and 1 core for vectrex output… so that we will be close to an optimium of vector display on a vectrex.

  22. pkerga

    hello, could you help me ?
    I have had a vectrex for 1 month, a gift for my 43 years. Difficult to find in my corner of France. I had been looking for several months.
    I bought a Pitrex in September. Everything works well.
    I bought and received yesterday the fabulous Vextror Patrol from the fabulous Kristof Tuts …
    My concern is here: the game freezes, after a few seconds of playing, always in the same place, after the arrival of the first 2 flying saucers
    The demo (when you leave the game running without doing anything) also freeze, not always in the same place.
    The settings work well.
    The game is very, very beautiful, the packaging incredible.
    I am in contact with Kristof Tuts who has been helping me since yesterday.
    I don’t have another Vectrex to try but the game was tested before going, unlikely to come from there.
    I reset all the saved settings, it doesn’t change anything.
    Kristof sent me the file. bin of the game (custom :-)) so that I try to launch it on his my Pitrex: failure.
    Several questions :
    – Is there another way to add Vector Patrol to the Pitrex than to put the .bin in the Vectrex folder? I saw .img files with game names like vectorblade.img

    Here is Kristof answer :
    OK, this binary should work properly at least on the level of starting up (startup screen) with the pitrex. I have sent a similar binary to another pitrex user and he confirmed me that it works.
    For your info, the patrol game is 64KBytes big, divided in 2 banks of 32KBytes. They are called Bank0 and Bank1.
    Normally, the game should startup in Bank1. In this bank1 the normal startup-screen is located stating “vector patrol” and “MB 2016”.
    However, for several reasons, there is also another mini startup screen located in bank0 which contains only “MB 1984”.
    First conclusion: How it seems on your video is that the game starts up in bank0 and not in bank1.
    I don’t have a pitrex, but do you have to specify to pitrex somewhere how big the binary of the game is? For example if the game is bigger than 32KBytes or that you have to specify the number of memory banks that the game uses?

    Is there somewhere i can specify it ?

    Thanks a lot



    1. Malban Post author

      Kristof correctly identified this as a Bug in Pitrex Vectrex emulation.
      I just fixed that, if you download again the latest package (, the bug is fixed now and it should run (I have Vector Patrol running on the Pitrex) – it will not remember settings or highscores – but it is playable.

      1. Pkerga

        Thanks a lot
        It works great now !
        I can save high scores and calibration by “saving option” pushing 1+2+3+4 together. Great
        Others questions :
        – why is Vectorblade in Pitrex in Version 1.10 and not 1.13. ? Do i just have to change the file Vectorblade.nib by the 1.13 version found on your Github ?
        (By the way, Vectorblade is… incredible !)
        – how hard it is to create a .IMG for a specific game ?
        – an impovement possible : it’s slow to scroll through the names of the Exact Vectrex gales : go by 10 with the push of a button? Create 2 folders, one for the original games, one for the Homebrews?

        The Pitrex Project is great. You have all my admiration and support.

        1. Malban Post author

          – Vectorblade – because I never updated it πŸ™‚ – If I remember correctly the latest updates are not really needed for the PiTrex version
          no, you can not simply swap the files, that PiTrex emulation specifically watches some ROM addresses for bankswitching, these might have changed.
          – I am not sure what you mean my “hard”. The games that I support simply require a “make” in the command line with the right setup (see my pages and instructions)
          new games must be ported – that obviously takes some time, and some learning – but I can help with that
          – yeah, the scrolling an ever returning “problem” – I think what I’ll do is implement an analog scrolling – the further you push/pull the joystick, the faster the scrolling will be.
          I just have to get arround to implement that- but it’ll probably be 10 minutes well spent πŸ™‚

  23. pkerga

    – ok, i keep my Vectorblade 1.10 who works great πŸ™‚
    – the idear of analog scroling is perfect, it would use a such a modern ability of the Vectrex. And i know, sometimes, 10 minutes is hard to find !
    – and… i’ve tried to use my first “make” command line. No so easy. I’ve downloaded your “Ubuntu”. I’m playing with it ! I keep you in touch (i’m a total beginner, don’t expect any help !!!)

      1. Malban Post author

        Did you install any updates, or was that the original downloaded image?

        I was under the impression, that the original image as is should have been compilable like you did.

        1. pkerga

          indeed, i have reinstalled the ubuntu distribution and i left it as is t i can use “make”.
          I start with the “hello_world” file.

          Moreover, as an exercise, I will try to use the “Test (Demo) menu” of the Pitrex/Loader/loaderMain.c file (for which I cannot find a “test.img” file) to launch Vector Patrol with the command
          IMG_FILE_PREFIX ” vectrexexact.img “, // no start image
          “vectorpatrol.bin”, // no parameter

          – My concern is that after modifying the loadermain.c file, I cannot find the place to retrieve the data to put in the SD card. Where can I configure the output folder?
          – By modifying the Pitrex/Loader/loaderMain.c file, which final file is modified? Loader.pit ?
          – What’s the differnce between Pitrex/Loader/loaderMain.c and PiTrexBoot/LoaderBoot.c ?

          I’m still on holiday, far from my Vectrex…

          Thank you

          1. Malban Post author

            It is probably best to get the latest sources from github. They also should after copying them over work out of the box – and you are up to date!

            I don’t know if the sources (of the ubuntu image) include the complete menu.

            I don’t think I provided a “test.img”, I probably only fooled around with that occasionally – I wonder that it is still in there πŸ™‚


            Easiest is probably if you have a path to your SD card and have it configured in the emulator, and enable the copy after build, than you don’t have to worry about placing it :-).

            Yes “loader.pit”.

            I think you are mixing to source versions.
            As said, try to get the current source from github, delete the old “src” directory and replace it with the once from github.
            Then there should only be a loaderMain.c.

  24. Ian

    Hi Malban and thx for your amazing work!
    As a kid, i always wanted to do animation and Vecci is totally doing the job.
    I was wondering if you were planning an easy “animation to rom”, for non-code-fluent people, to just be able to display any animations in a few clicks from VIDE. Or even a simple project allowing this ?
    That would help a lot people like me to experiment some animation techniques on the real stuff, and maybe have more users implied in pure graphic design to make use of the wonderful Vectrex thing.
    Thanks a lot for your hard work, that i would love to support financially if you would have offered a donation button πŸ˜‰

    1. Malban Post author

      This is “sort” of implemented.
      Look at the “export” options in the help (
      a) you can build “runable” versions of any drawing you do in vecci. This is built to the tmp directory… so for a simple drawing you could copy that generated “bin” file.
      b) for “animations” – the same can be done

      And there is the “Storyboard” – pls check help at:

  25. Andy


    I can not get the vecfever to work with vide.

    Is there something to switch on to get the CART.BIN file sent over to the vecfever?

    In the miscellaneous folder of the vide configurations I can only find 2 things related to the vecfever:
    1. automatically eject attached vecfever on compile success
    ..and below of that
    2. a folder where the vecfever ram folder goes

    ..but this does not send the CART.BIN file to the vecfever

    What am I missing?


  26. Stefan Scandizzo

    Hey there, thanks for so many hints and tips about using vector rendering. One aspect I have not found a good description of is occlusion culling. Other than the Pitrex splash screen, I have never seen anyone else accomplish it in real-time. Could you give a brief explanation of the process you used, especially for partially occluded edges?


    1. Malban Post author

      PiTrex intro is simple “clipping” – no culling.
      I have no really good algorythm at hand – most of them have todo with Z-buffer …

      Not really efficient doing with the vectrex.
      Clipping is realizable more or less good with the vectrex – I have done so in the past – even with tile map displays… Look for videos of mine containing something with “Major Havoc” and “Vectorblade” …

  27. Ingo Heilmann

    Dear Malban,
    I would like to say thanks for the great Vide tool and for the PiTrex baremetal project! It keeps the Vectrex so interesting, and that after more than 30 years. : )
    I would like to mention a glitch (?) I see in Elite TNK on my Vectrex proper: it always crashes after a few minutes. It’s the only game doing it, and other games do run with the keyboard connected, so I don’t think it’s that. Maybe there is a fix?
    In any case, my appreciation as a vectrex enthusiast and keep up the great work!

    1. Malban Post author

      Can you tell me anything more specific about the crash? I played Elite quite a while and never experienced it.
      Did you do anything special – or … what exactly did you do? Is it reproducable – other than “it crashes after a while” – a certain order of actions?

  28. Ingo Heilmann

    Hi Malban,
    there is no obvious correlation of the crashes with any particular in-game action. After leaving the station, it doesn’t matter if I move or not, if I shoot or not, it will crash every time to a black screen and no other way than switch off. It’s not always taking the same time though. Sometimes I can jump to the next system and play for a while and sometimes I won’t get that far before the crash. Now, I have an illuminated small keyboard on the Pitrex USB; could it be that this draws too much power and the hardware gets hot and shuts down? It doesn’t feel very warm, but just a little. (But other games play with the same keyboard attached…)
    Thanks for replying. Elite TNK would be great to have running.

    1. Malban Post author

      Kevin warned about a too much power using USB device.
      I never experienced any troubles on my own though. But I guess it could be possible. If you have another “standard” keyboard lying around (without to much electronic in it…) I suggest to try that yes.

      I always used the PiTrex with a very cheap not lit keyboard I had lying around :-).

  29. AuburnRDM


    I’m having trouble getting your homebrew copy of Release working properly with RetroArch via the vecx libretro core. Here’s an example of how the text renders on the main menu: Here’s another during gameplay: The enemies are rendering as the double dot formations and any other numbers are completely unreadable outside of the score.

    I was wondering if you knew of some way to correct this display as I’m hoping to add some achievements to the game and hopefully get some more people playing it. I figured this might be a bit of a longshot, but I might as well try reaching out. I appreciate your time!


    1. Malban Post author

      There is an easy answer. The current libretro vectrex core is not emulating good enough.
      Coincidently I have built an own core that emulates much better, but seemingly the retrolib staff is not very interested in it (I informed about this 6 months ago).
      See (fourth topic):
      and the source to “my” core at:

      You are welcome to include this in the official retrolib – but I myself will not fight against windmills on this.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.