The BBC Tetris Companion
Tags: console homemade-software homemade-hardware bbc bbc-bridge-companion reversing magic-smoke repair
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, without having written an assembly program larger than “hello world” since TI-83 Plus programming in high school;
- Write the blog entry about it. I’m doing that part right now. Hello!
Easy!
Tricking Your Companions
On some systems, making it accept a game ROM is just a matter of putting the ROM somewhere that the CPU will jump into when it starts up. That’s the case with the Sega SG-1000, which is easy to program for. As long as your game shows up at $0000 , it will automatically get run when the Z80 CPU comes out of reset.
However, like the ColecoVision, the BBC Bridge Companion contains a somewhat complex BIOS on an internal ROM. When the Bridge Companion starts up, it’s that BIOS that mounts at $0000 . If the BIOS isn’t satisfied that a cartridge is attached, it will lecture you to turn the system off and insert a cartridge.

So how do we convince the BIOS that we’re a legitimate cartridge? By reverse-engineering the BIOS. I opened it up in the MAME debugger, stepping through instruction-by-instruction to figure out just what the BBC Bridge Companion was looking for from the ROM on the cartridge.
After a few evenings of comparing a legitimate cartridge to my nascent homebrew one, I eventually succeeded in building a header that would convince the Companion to run a piece of code that I had written.

And from there… there was nothing the BBC could do to stop me.
Writing The Game
Even though I’d written the previous game in Rust, there’s a large gulf between a high-level language like Rust and writing something in very low-level assembly language. Assembly is extremely pedantic: you describe each and every small step that the computer needs to undertake, in exacting detail.
This is great, because it means the computer won’t take any steps you don’t want it to, but it means that you can turn a simple thought in your head (“maybe I should make the blocks animate”) into 500-plus lines of code very quickly.
Plus, I didn’t really know Z80 assembly language. I had to learn it and all of its fun quirks while also making a game at the same time. Nobody would recommend you live life this way, but it worked surprisingly well. Please don’t look at my code, though. It is a spaghetti mess and about as unoptimized as you can make it.
As I went through it, I made bugs.
Lots, and lots, and lots of bugs.
So many bugs.

It turns out that assembly language is actually pretty simple and fun! You do have a slight overhead of thinking about things. After I abandoned some of the “rigour” that I expect from working in a higher-level language, and just started doing whatever I wanted, the code started flowing. That’s the real game development lesson, kids.
Bonus: Fixing the Bridge Companion I bought
Somewhere out there is a country where Bridge Companions grow on trees. Sonic the Hedgehog music plays too slowly, and everything is in black and white there, because of PAL. In times long past, I would have to board a rickety airplane and fly across the world to sup of this bounty.

Instead, I just hopped on eBay and spent way too much for a (boxed!) Bridge Companion of my very own.

When it got here, I was disappointed to find out the cartridge slot was mangled, with its pins bent out of shape. Even with a dental pick and some precisely-chosen profanity, I was unable to get a cartridge to read or even insert smoothly, and had to replace the slot. After a few weeks of searching, I managed to bodge an AliExpress substitute into the spot.
I was finally able to play real games on my real Bridge Companion. Real games, like the one I was writing.
Discovering the real developers
Although there’s definitely more to be written on this subject, I found out from the packaging that a company named Heber put this hardware together. Imagine my surprise when I was watching an RMC Retro video to find out that they were filming in the old Heber headquarters!

I quickly reached out, and got ahold of some documents from Richard Horne, who was involved in engineering the thing. In the future, I think it would be worth interviewing him in order to get some more primary source information about the system, but this series of articles is already too late as it is.
Super Bonus: Making my own cartridge PCB
Software for the Bridge Companion comes on cartridges, like pretty much any other game system of the 80s. I only had a couple Bridge Companion cartridges lying around, and didn’t want to tear them apart in order to debug my game.

Most cartridges are simply a ROM chip that holds the program. Because the Bridge Companion cartridges used a common UV EPROM, I already knew the pinout. With my trusty multimeter’s continuity test, I could figure out which pins went to that ROM, and make a working copy of the original cartridge PCB.

I went a little bit further than that, too, but that’s a story for another time.
Hyper Bonus: Figuring out a composite mod
Being an artifact of its time, the Bridge Companion only outputs RF video from an Astec RF modulator. If I lived in the UK in the 80s, this would be really easy: connect the sucker to a switch box, run the forks to the back of my TV’s antenna input, and toggle it on when it’s time for bridge.
Things are not so easy today: sure, I can plug it into a TV, but there’s a few problems with that. Canada doesn’t have the same channel frequencies, and also the world has changed a lot since terrestrial television ruled the roost in this country. RF did not look great on the Bridge Companion, especially through an adapter:

A better option is to use composite video. Even though the yellow plug is also quickly evaporating from new televisions, it’s still the best option to quickly improve the video quality of the Bridge Companion2.

I spent a lot of time poring over scans of schematics – which were provided by the aforementioned Richard Horne at Heber, thank you Richard! – and working out the various levels with an oscilloscope, in the pursuit of the highest-quality mod possible. In the end, though, I just ended up doing something very simple, similar to my earlier Nintendo Famicom composite mod series.

I think it looks pretty good!
What’s Coming Up?
Thanks for reading this far on what is basically a glorified executive summary of the project. If you want to come back in the next few weeks to delve into the gory detail of each sub-project, I’d love to have you back.
The next few chapters are:
- August 4th, 2026: Fixing a broken Bridge Companion and making that cartridge PCB for it.
- August 11th, 2026: Building a composite mod for that Bridge Companion, so I can see it on my TV.
- August 18th, 2026: The final chapter! Actually sitting down and programming a Tetris-like game.
Once all the entries are completed, I’ll be releasing the ROM and source code as well. I hope you enjoy reading along with this big project as much as I did working on it.
-
Yes, I know that in many Tetris games, rotating into a wall forces you to be pushed out, a phenomenon known as “wall kicking.” That’s not part of the ruleset of this game, please come back for Bridgetris The BBC Master. ↩
-
Being a TMS9129, the Bridge Companion actually generates YCbCr (conventionally “component,” but the levels are different here) video internally, and converts it to single-channel composite before handing it to the RF modulator to be turned into “television.” An RGB mod of a Bridge Companion is not infeasible, nor would it be especially hard, modders! ↩