Alongside the Commodores, Ataris, Nintendos, and all the other game systems of the 80s, there was a single unique video game system that stood out from the pack. This was the Vectrex, a console with a built-in CRT meant to display vector graphics and only vector graphics. The video game crash of 1983 wasn’t kind to the Vectrex, but it still lives on with a reasonably popular homebrew scene. Still, these homebrew games are limited by the hardware itself. After thirty years, the Vectrex has an upgrade. The Vectrex32 is a coprocessor, designed for the Vectrex cartridge slot, that gives this ancient console better graphics and 32-bit capabilities.
There’s a whole site dedicated to this Vectrex add-on, and the hardware is pretty much what you would expect. There’s a fast PIC32 microcontroller on this cartridge, a USB port, and a dual-port memory chip that’s connected to the Vectrix’s native processor.
Since this add-on cartridge is effectively a computer itself, the Vectrex32 can operate as a BASIC interpreter for the Vectrex. That’s something the original hardware couldn’t have done, and makes homebrew development much easier.
You can check out a few videos describing the functionality of the Vectrex32 below, along with a few gameplay videos of new homebrew games written specifically for the Vectrex.
Didn’t Sprite_tm do something like this a while back with an STM32?
That was less ambitious. His STM32 just serves up Vectrex cartridge images with 6809 code. There’s no dual-port RAM; the STM32 acts as a ROM chip, seeing the address that the 6809 is fetching and providing the correct data value.
The Vectrex32, by contrast, runs a BASIC interpreter and basically turns the Vectrex into an input/output device.
I’m doing something similar for my old Gameboy Color. I actually copied some of the code from Sprite’s cart but I had to use dual port RAM because the STM32 was too slow for direct ROM emulation and I wanted to use the ARM for other tasks (emulation uses 100% of CPU time).
Some guy called Dhole did cartridge emulation with an STM32F407, but that’s a beefy chip that uses a lot of power and would drain the Gameboy’s battery in a few hours. So I settled on using external RAM.
http://dhole.github.io/post/gameboy_cartridge_emu_1
Sprite_tm’s Vectrex cart did support local processing. One of his demos was a 3D FPS style game with the Doom level data that ran on his cart CPU. The Vectrex was just there to send joystick inputs and receive vectors to display.
One other thing to point out this is the first commercial cart that does something like this for the vectrex
Ouch! 150 bucks that’s quite a bit of a markup for this
I worked on the hardware design, code (1 MB compiled), and debugging for this for 2 years. I went through 4 iterations of the hardware. I wrote and proofread 150 pages of documentation. The market is small so there are no economies of scale. How much do you think I should charge for it?
It’s a neat project Bob, and yours is a conundrum that HaD ought to cover in one of their “maker” articles. So many people are used to buying super-inexpensive kit from China and they don’t understand the realities of someone who is trying to make available a gadget in low volumes they may have designed but a) isn’t afforded the luxuries of being part of the Chinese supply/manufacturing/distribution chains or b) is more complex than just reading an app-note and throwing a chip and a few passives on a board. People expect pricing based on the model of selling large quantities and that just isn’t realistic for specialty projects like this one. I’ve also noticed that people often value their own time for very little. They’ll save $10 not buying some device they think is too expensive but spend many, many hours trying to reproduce its function.
Sadly, at the end of the day, I think you have to look for the few customers who understand the value in what you did and also understand that you did this for the love of the idea. It would be nice if places like this would try to extend the maker ethos to helping people understand that value.
Thank you, Dan. I did, indeed, do it for the love of it. I will never sell enough of these to pay me for the time I’ve spent on it. So it’s a good thing it was fun (most of the time).
And despite the high price, peterkoz might be surprised at how little markup I’m adding. Some of the components are expensive, and I’m having the boards assembled in China (when I try to assemble them myself, my failure rate is about 66%).
“They’ll save $10 not buying some device they think is too expensive but spend many, many hours trying to reproduce its function”: I must admit, I’ve fallen prey to that myself sometimes.
This is really nice Bob. The vectrex is one of the only consoles I lusted after as a child, and this work really is amazing.
$150 is more than a fair price for what looks to be a very polished product, especially since it’s a very niche market.
Alas I’m not your market, but if I was, I’d be snapping one up!
Or stick some on ebay and see what people will pay? I was interested in one but the price put me off. It’s at a price that makes me want to have a go at rolling my own instead.
I cobbled up a DUE to my vectrex to directly drive the screen and there’s a nice 6809 emulator running the original BattleZone eproms on an ST discovery board too. I’m not 100% sure of the benefits of still having the Vectrex 6809 in the loop, other than not having to open the case.
Super Duper A Awesome! This is very impressive. Makes me want to go out and get a Vectrex just to play with this cartridge.
Have you looked at what they cost these days?
This is very cool, I’m not very technical minded it but it seems like it could produce some pretty cool games. Ive owned a Vectrex since I received it for Christmas in 1983 and still to this day play the let down game Star Trek it would be so awesome to see it true arcade perfect version of this game on the mighty vectrex.
Who wants to try to port over Word War VI? (http://smcameron.github.io/wordwarvi/)
I kick myself when I see these articles. Some years ago in Stedman’s, before it burnt down, in the village of Petitcodiac, NB, Canada there was a Vectrex on sale in the basement, where the real bargains were, for $19.99, marked down many times from the original MSRP. I was in the process of moving out of province and didn’t want more stuff to bring so I left it. But I had an inkling at the time that decision would haunt me forever!
To the OP, what’s the reason it won’t work on the newer no-buzz Vectrex models? Just a different memory mapping or something deeper?
Also, can anyone point to the display specs, in particular how many line segments it can display at each scan? For example could it do a screen of 40 characters × 25 lines of the alphabet?
Hi Buddy. The reason it doesn’t work on the newer “no-buzz” Vectrexes is that those models eliminated the -CE (Chip Enable) signal from the cartridge slot.
The Vectrex32 does not increase the maximum number of vectors a Vectrex can draw. It does, however, allow the 6809 in the Vectrex to devote more of its time to drawing vectors, since it no longer needs to do any of the game logic.
Still, a screen full of text is beyond the Vectrex’s abilities.
“After thirty years, the Vectrex has an upgrade.” : as usual with Benchoff and his informercials, this dispensable ad-style punchline (some HaD reporter even confessed that the skill of finding them are one of the main requirement to get the job…) totally neglects many prior, even published, similar works.
Now, as another take on this sort of “modern-brain transplant to old popular electronics”, Bob’s cartridge, with its full-featured BASIC interpreter (that’s the original stuff, and the article don’t even mention the language used..) for Vectrex’s vector-screen and peripherals is nicely done, but besides the “cart’s dual port memory shared with a modern, fast MCU” aspect briefly mentionned in the video, there is nothing to be seen behind the curtain because this is not open source software or hardware.
While that’s perfectly understandable from its developper’s point of view (getting some money for his hard work, and avoiding that some lazy moron’s steals it and get undeserved interest that could easily make it to HackaDay!), nothing is said about the inner workings that we like being explained and discussed here. And as an excuse to the price, now the comments are getting awkward regarding all these people who don’t value their time in money and yet, are responsible for so many great hacks, articles, even big software libraries offered to the community and most often praised here…
So, there is no PIC or 6809/Vectrex code to review , or a least a technical article about the interesting mechanisms involved in this “black box” (unlike http://hackaday.com/2015/04/24/extreme-vectrex-multicart-plays-bad-apple/ for example, more experimental but with source code and much more to inspire some other DIY stuff).
This cartridge is intended to people who want to develop Vectrex software in BASIC, are ready to pay 150$ for it and own a (specific model) of Vectrex console valued about the same price these days, to write games which require this same hardware’s combination to be played. Obviously, this community is quite sparse, but still there is some funny conversation on product’s forum, about the anti-piracy protection that could be implemented in the firmware soon, so this will no longer prevent great BASIC games to be developped and sold for this cart :D
“the article don’t even mention the language used”: I wrote the Vectrex32 code in C++ (and if you look at the HaD article from a few days ago about C++ on microcontrollers, you’ll see me vigorously defending C++ in the comments :-) ).
“nothing is said about the inner workings that we like being explained and discussed here”: My video, which is embedded in this article, gives an overview of V32 architecture. I’ve also written extensive documentation, freely available on Vectrex32.com, that includes discussions of the V32’s inner workings. I don’t know how much detail you’re looking for though.
“the anti-piracy protection that could be implemented in the firmware soon”: Yeah, a few people asked me if I could add copy-protection to the V32. I don’t think any of those people were actually planning to write BASIC programs for the Vectrex/Vectrex32. No one has told me “I’m not writing BASIC programs because they wouldn’t be copy-protected”. So I haven’t added any protection.
“Bob’s cartridge, with its full-featured BASIC interpreter (that’s the original stuff, and the article don’t even mention the language used..)” : you see, I’m talking about your BASIC, so not about the language that what used to program the firmware.
Sorry, I could’nt know that you were the same Bob who made comments in the previous “C++ on MCU” topic, and it was a more interesting discussion that this product description that could have been a lot better with some technical insights about the way the Vectrex’s CPU (6809) executes your code, the timings involved to access shared memory concurently with it, and so on…
Your documentation is great as a “Vectrex32 BASIC user’s manual”, but say almost nothing (and that’s not its purpose) about the underlying process your firmware is based on, only “the PIC32 copies 6809 code into the dual-port memory and sends a signal telling the 6809 to run the code” (altough chapter 6 provides good generic information and some guidance about Vectrex’s display system). That’s fine, you propose a compelling and well finished solution, with a nicely explained and extensively documented BASIC interpreter for those who will purchase your cartridge, but I was just telling that I find it of poor interest compared to projects that enlighten about some low level stuff, that we love to read on HaD, like it or not.
About “the anti-piracy protection that could be implemented in the firmware soon”, please notice that I was using the conditional tense, just saying you started a lengthy discussion about implementing it or not (and how it could be practically done) if at some point it were to be a requirement by some developper to write a game for your (perfectly fine piece of) hardware, that’s it ( http://forums.vectrex32.com/index.php/topic,11.0.html ).