In 2002, for the second time in my career, I again found myself working on a product about King Arthur.
A fantastic spec and prototype game arrived, designed by the brilliant Reiner Knizia. The team sat down with Reiner and played the game.
It is a very engaging game.
The game play specifications were complex and large, and the brand new tag/board reading technology also needed developing.
I worked with the hardware team on the core design and component/chip selection, leading to the decision to use a completely new and low cost microprocessor that I felt could handle all the requirements. And this time I could develop the product in 'C' (a favorite language of mine), not just in assembly language, unlike like some other products (for example this one)
The product had many systems to be developed on this one chip. It therefore effectively required me to develop, once again, my own embedded operating system. An example was the board interface and player recognition system. This was a combination of extra digital hardware for the board reading, and a combined minimal analogue hardware / DSP (written in assembly language, mostly running on interrupts) system for identifying the different players.
On the same chip also implemented the game play software system, with some help from other software engineers implementing my specs. To accommodate the limited ROM space I developed it as a virtual machine that was written in 'C'. Large parts of the game play was contained within data - this helped compress the game play to fit within the limited ROM space available.
I was able to develop and have others bug test the game software by cross compiling and generating a PC version.
I also supervised the development of a Pseudo Random Number generator that was quantified in order to meet Reiner's specification requirements.
Along the way I also I developed a testing methodology I called "Monkey Testing". This emulated game play in the same way as the "Shakespeare project", except I used pseudo random numbers to press random keys, ran this on the PC and target hardware, and had each generate logs files that I could compare. Found a few bugs this way...
There is more to the story...