I remember playing on an early game console as a child that included several riveting games such as “squash” (one
player pong), “tennis” (pong against the CPU), “tennis for two” (pong against a human) and duck hunt
(shoot the pong
ball square) now that’s art reuse!
It wasn’t until our first computer, the Acorn Electron, that a game really hooked me. That game was the revolutionary Elite.
Not only did it bring with it 3d graphics but thousands of stars and space ports to trade at and the choice to be a lawful space citizen or a pirate blasting apart anyone you could find and scooping up their cargo, just not too close to a space port that frowned upon piracy, the police didn’t take kindly to that and their guns hurt….
The game was a quite impressive accomplishment considering the hardware constraints of the time although I didn’t really appreciate that until I was older.
There are newer versions of Elite and the original is playable via emulators, in a browser, or on the original hardware if you don’t mind e-bay and the cassette loading, but I bought the FPGA Replay to get closer to the real thing without having to own all the real things again.
The FPGA replay is however lacking an Acorn Electron core at the moment and whilst a few people1 have made cores for other boards that could be ported over, I felt this was a golden opportunity to work on a Core myself (NIH Syndrome or educational opportunity?).
The Electron’s hardware didn’t look overly complex (famous last words?) and will serve as a way to ease into Core development as well as to once more play Elite, Repton and a handful of other games I remember from my childhood.
If you’re scratching you’re head and wondering what the Electron is, it was made by the British company Acorn Computers Ltd as a budget version of the BBC Micro (an educational computer built for the BBC in the early 80’s).
It shipped with 32kB of RAM, 32kB of ROM (split between the OS and the Basic language) with a maximum graphics resolution of 640x256 (2 colour) down to 160x256 (16 colour) and the ability to load and save data from/to cassette tape along with an expansion port for various add-ons.
Wikipedia has a good summary of the specs and a link to more historical information on Acorn Computers which makes for quite a fascinating read as well as the subject of the 2009 BBC Docudrama “Micro Men”
Internally the hardware has a handful of ICs for RAM, ROM, CPU, a custom ULA and additional glue logic for the 16MHz clock, cassette interface and composite/RGB video signal generation.
Thankfully, the 6502 processor has been the focus of a lot of reverse engineering over the years and is quite well documented now with several implementations in VHDL available. RAM/ROM is relatively simple to implement with the main concern being the only other logic chip on the board, IC1, the Ferranti ULA (uncommitted logic array).
The ULA has not yet being fully reverse engineered and little official information exists about its inner workings. Apparently this was partly to prevent 3rd party clones of the hardware. The closest to an official resource is the original user manual and the Advanced User Guide both of which provide hints as to how the ULA may function. Between that and the dedicated work of several others2, I have a reasonable grasp as to what the ULA needs to do, just not exactly how the original did it.
I have also been provided with close-up images of the complete ULA die taken through a microscope so may in the future look into reverse engineering the real ULA and seeing how close my final implementation holds up to the logic of the real thing.
I’ll be discussing the hardware in a little more detail in upcoming blog posts along with issues and quirks I ran into during my VHDL implementation of it.
As a sneak peek however, there are early signs that I’m not biting off more than I can chew.
Reaching this point has been anything but easy and there is still a quite a bit more to do before Elite will be playable.