The BBC Tetris Companion | Leaded Solder
Ever done dumb stunts for your friends on a dare? I was hanging out with a bunch of fellow old-computer ne’er-do-wells when the topic of the BBC Bridge Companion came up. It was a useless thing to own, they said, although many of the assembled group had already owned one at some time or another. If you don’t know how to play bridge, then why even bother? Well, I know how to play Tetris, and I know how to write Z80 assembly, or at least I thought I did.
Over the course of the next few weeks, I’ll be publishing more in-depth articles about the details of the Bridgetris project. This post is a shorter overview of the entire project, to give a rough idea of the overall tasks and progress.
A Bridge to the Past
First, a bit of history. What is the BBC Bridge Companion, and why did this thing consume my attention and free hours for a frankly ridiculous and unjustifiable amount of time? Put simply, the BBC Bridge Companion was a game console that the British Broadcasting Corporation put out to teach you how to play the card game bridge on your television set. It’s BBC-branded, because at the time they had a popular bridge-instruction television show, BBC Bridge Club, with some top-flight players looking for a new way to introduce newbies to the game.
However, I doubt they sold many, because according to Wikipedia, it cost £200 when new in 1985! You could have bought a 48k ZX Spectrum for £175 (in 1982; probably for much less by 1985) and still had plenty of money left over to buy bridge games for that. I have to assume that it was severely discounted later, or at least never actually sold at that price.
Software was distributed on ROM cartridges, and as far as I can tell there were only ever nine releases made for it:
Advanced Bidding
Advanced Defence
Bridge Builder
Club Play 1
Club Play 2
Club Play 3
Conventions 1
Duplicate 1
Master Play 1
I was unable to find any records for how much the cartridges cost, but it couldn’t have been cheap. Each one appears to have come in a huge moulded-plastic shock box with a thick coil-bound handbook containing most of the lesson material. Bridge Builder was a pack-in with the system.
Gimme the specs
The hardware is what interested me. This thing is put together with a Z80 and our old friend, the TI TMS VDP. Specifically, it’s a TMS9129 - the PAL variant of the TMS9128, which is itself the RGB variant of the TMS9118 that you previously saw me exorcising from the Casio PV-7 MSX. It even has the “full” 16kB of VRAM!
Even as late as 1985, that’s a lot of 8-bit horsepower to throw around; practically a ColecoVision. Although I haven’t tried all of the cartridges yet, it’s not like the Bridge Companion games are really taking advantage of that beefy VDP and CPU:
Robert Maxwell Not Required
I figured it would be a pity not to at least try making the console a little happier. Besides, I haven’t done a really dumb Coleco-adjacent homebrew project since the last one. Worst case, I can always port my game to said ColecoVision, so at least one other person on planet Earth could try it.
I don’t think I’m the first one to have tried this: it looks like cdoty on AtariAge already started tinkering with their BBCBC.
What game would be a good candidate to make for the Bridge Companion? Ideally, it should be something that everyone loves, with timeless rules, and a decent amount of challenge. Also, you should be able to play it with the super awkward ATM-like buttons on top of the console. The only answer is Tetris. Or, to be more specific, a Tetris-like game.
Is this a true Tetris? The Tetris Company would say no: it doesn’t follow the entire ruleset, nor am I paying them any licensing fees. That’s why my game is actually called Bridgetris, which I think everyone can agree is not at all the same sequence of letters as the one that will get me in legal trouble.
Now, I must confess. Although I have had a lot of experience programming games, and a lot more programming software in general, I had only very recently made a Tetris-like game. Like many other projects that I’ve put off forever, it usually comes down to one mental block that turns out not to be a big issue when I actually try to work the problem. For some reason, I had it stuck in my head for decades that the piece rotation code is actually very complex and involves a lot of fiddling.
While programming a Tetris-like game in Rust as part of a pandemic boredom relief exercise, I discovered that, in fact, “piece rotation” in most Tetris games is simply hardcoded. You define a single pivot point and just crank it over. Doesn’t fit? Don’t rotate1.
This is that Rust Tetris-like game, with a screenshot proving it looks somewhat like a dropping-blocks puzzler:
So, this was going to be easy. All I have to do now is:
Figure out how to get a game console I’ve never seen and don’t actually physically have to run my own code;
Write an entire Tetris game in Z80 assembly language,...