It’s been some time again that I manage to find time and energy in the later evening hours to write here on the blog about one of my little projects. Over the past few years, I’ve gotten into the habit of listening to podcasts during car rides and at night. These primarily include podcasts on technical topics. Among them is a podcast called “Retrokompott” which is about home computers and technology from our youth. Their tagline is:
Retrokompott, eine Zeitreise in die Vergangenheit alter Homecomputer, Spielekonsolen und Games
In one of the contributions of Retrokompott one discussed for some episodes (172-177) about the Vectrex, the home – vector game machine of MBE. Among other things, homebrew projects, i.e. software developments of the users, were presented. “Vectorblade” is a game title, which was developed by Malban [http://vide.malban.de/]. The project was created with the Vectrexcompiler (vide), also developed by Malban. The sources are publicly available on the website. In the “compote” article, people were so enthusiastic about Vectorblade that my interest was piqued. The game module was also available for purchase through Malban for a while. However, I have not found a source through which I can easily purchase the module. So I thought, I’ll just rebuild it for myself. The special thing about this gamerom is the size of the game. It has 192 kB. To address this memory, Malban used bank switching technology. He uses a flash memory from SST, the SST39SF020, in his design. The bank switching is controlled by a quad 2-input NAND Schmitt trigger (74AC132). Malban has published on git the layout. There he uses the memory in the DIL package and also the AC132. Detailed instructions can be found here.
Since I still have some boards left over from my old homebuilt Rom module project, I was able to quickly put together a test setup. I didn’t have any flash memory available – but a sufficiently large EPROM. The video compiler and the source files are also published on Malban’s GIT. After a short study of his vide-compiler I managed to compile the project and create a ROM – file. With my “Far East Programmer” I could then “burn” the EPROM. With a few wire bridges and an AC132, my old ROM board project then became the Vectorblade experimental setup.
With the exception that no settings can be saved, the test setup works and the game can be played :). The next step of the rebuild was to draw the PCB. Here I wanted to build in the Schmitt-Trigger device in SMD design and the SST still in DIL. I also realized this design and tested it successfully. But there is a little catch – none of my suppliers has the SST39SF020 flash memory in DIL design in stock. I have now some boards with DIL – layout but no chips… So once again to the PC and redraw the design on PLCC socket. Thought – done and ordered a set of boards from the Far East producer.
A suitable case can be created with the 3D printer itself. To be more precise, I found what I was looking for on Thingiverse and was able to choose from a variety of suitable designs.
The overlay is missing, but the game is fun even without it. Malban has managed to create a great game here.
edit Nov. 2024: I keep receiving requests to make the Gerber files for the circuit boards available for reproduction. The download is now possible with this link:
For the Vectrex game console a home arcade machine from 1982, there were, or there are a very limited number of game titles available. I will present the Vectrex itself, or the restoration of this darling, in a separate article.
The games were available in the form of ROM modules and had to be inserted into the side of the console. Today, like the console itself, they are pretty rare and difficult to find. In terms of price, they are usually not bargains either. There are also replicas, multiroms and some DIY projects that keep the game program or even several games saved on the basis of the old EPROMS and were thus playable via a “module”. Since I also have all sorts of Eproms with different sizes in the component store and also got a couple of 27C512 Eproms sponsored by a colleague (thank you Jürgen), I just had to try to tinker with a ROM module.
So quickly thought about what I would need for this. Here is a small list:
old EPROMS (I use Eproms that can be erased with UV light)
an Eprom programmer (in the back corner of a box I found a ChipLab programmer with a parallel interface)
an old computer with a parallel interface and an older operating system (Windows XP). Fortunately, I once again did without disposal and brought an old laptop back to life.
software for the programmer (here I use “ChipLab” which can run on WindowsXP with the help of “porttalk22”)
the binary data or HEX files of the original ROM modules (you can use the internet search for this)
a layout tool (Autodesk Eagle)
a craft shop where you can etch circuit boards, or an account with
a Far Eastern PCB manufacturer
Soldering tools and small parts
and of course a Vectrex – otherwise none of this makes any sense
In order to determine the memory requirements of the Eproms, I first have to know the size of the games. Here is the list of titles and their size:
Games with a size of 4 kB (4 kilo bytes). This corresponds to an address range from hex 0000 to 0FFF
Armor Attack
Art Master
Bedlam
Berzerk
Clean-Sweep
Cosmic Chasm
Engine Analyzer
Hyperchase
Minestorm 2
Rip Off
Scramble
Solar Quest
Space Wars
Star Castle
Star Hawk
Star Trek
Games with a size of 8 kB (8 kilo bytes). This corresponds to an address range from hex 0000 to 1FFF
Animaction
Blitz
Fortess of Narzod
Heads Up
Melody Master
Pitchers Duel
Pole Position
Spike
Spinball
Tour de France
Web Wars
Games with a size of 12 kB (12 kilo bytes). This corresponds to an address range from hex 0000 to 2FFF
Dark Tower
Next, I’ll take a look at the Eproms for pinout and size. I have two sizes available for the number of pins. Eproms with 28pin and 32pin in DIL housing. The following types belong to those in the 28-pin housing:
27c64 8k x 8 bit so 64 kb (kilo Bit)
27c128 16k x 8 bit so 128 kb (kilo Bit)
27c256 32k x 8 bit so 256 kb (kilo Bit)
27c512 64k x 8 bit so 512 kb (kilo Bit)
The pinout is identical except for the different number of address lines. However, the 1Mbit variant 27C1001 (27C010) has a different pinout.
The next step is to look at the pinout of the Vectrex module bay. The pin numbers of the module are marked in the picture below.
The signals associated with the pin numbers can be found in the Vectrex circuit diagram of the mainboard. The picture below shows an extract from the circuit diagram with the area of the 36-pin cartridge connector. (Source: console5.com)
All the information you need to start with a circuit diagram and layout has now been collected. I looked for an eagle layout for the circuit board connector on the web. But nothing could be found straight away. So an original ROM module had to be used as a reference for the dimensions and spacing of the contact pads. With the dimensions removed in this way, it was quickly done and I had drawn a new Eagle component and saved it in the library.
I drew two variants of the module circuits. One for the EPROMs with 28 pins and one for the 1Mbit ROMs with 32 connection pins. (Since there is also space for more games here) In order to be able to distribute all possible sizes of games differently on the EPROM, I have made address bits 12, 13 and 14 switchable. In such a way that these three address lines can either be controlled by the Vectrex or selected externally by the operator using DIP switches (L / H). Bits 15 and 16 (can also be selected via DIP switches).
The following table shows a few examples of how the start addresses of the games can be selected.
bit
16
bit
15
bit
14
bit
13
bit
12
bit11-bit0
game adresses
adresses
start – end (hex)
L
L
L
L
L
at 8k game
0000 – 1FFF
L
L
L
H
L
at 8k game
2000 – 3FFF
L
L
H
L
L
at 8k game
4000 – 5FFF
L
L
H
H
L
at 8k game
6000 – 7FFF
L
H
L
L
L
at 8k game
8000 – 9FFF
L
H
L
H
L
at 8k game
A000 – BFFF
L
H
H
L
L
at 8k game
C000 – DFFF
L
H
H
H
L
at 8k game
E000 – FFFF
H
L
L
L
L
at 4k game
10000-10FFF
…
…
…
…
…
and so on…
…
Provided, of course, that the game data was written to the EPROM in this way. To do this, I use one of the many freeware hex editors (HxD) and assemble a binary file from the individual game images. This “file” is then imported into the ChipLab software, the correct EPROM is selected from the database, then the chip is inserted into the programmer and off you go … (First, check again whether the chip is empty. Otherwise it has to ” topless “in the sun, or under the UV lamp (for about 15-20min)
Once the chip has been filled with bits and a layout has been made from the circuit diagram, a prototype can be etched. To do this, I was able to use our company’s etching system in a short lunch break and remove the unnecessary copper from the board using etching technology.
After exposing a double-sided board coated with photopositive lacquer and then developing it, the excess copper can be removed with EisenDreiChlorid. What remains is the desired structure.
Sometimes a selfie in between. It takes about 57 seconds to expose the circuit board to UV light. Enough time to take stupid photos with the phone: D
The next step is to drill the holes in the board. The vias (VIAs) from the top to the bottom layer are not implemented in the prototype by galvanic application of copper in the holes, but by hand by pushing a piece of silver wire through the hole and then soldering it on both sides.
Now all that’s missing is the assembly. But it is done very quickly. Because apart from the IC socket, a couple of pull-up resistors and the DIP switches, there isn’t much on the board. So solder the few parts, put the chip in the socket – and the ROM module is ready.
What the finished module looks like on the Vectrex and, above all, how it works, I’ll show you in a short video. I also embellished the board a bit and commissioned it as an industrially manufactured circuit board from a Far Eastern printed circuit board manufacturer …
(small update on October 20, 2020)
The circuit boards made in far east have come and, in my opinion, look quite acceptable. A board is quickly assembled … here is the result: