A lot of your less tech-savvy people look upon computer chips as some kind of magic, at least judging by how Hollywood movies depict hacking. And aliens can take control of computer systems just by inserting part of themselves into some console and sort of glowing while ominous music plays on the soundtrack.
But everything that happens in a processor is the result of simple logical operations: ANDs, ORs, NOTs, XORs and memory, all connected in different ways. And there’s some redundancy in that list: some of those logic gates can be constructed out of the others. The whole point of computers is you can perform billions of simple operations in a second, and complex operations are made out of lots of simple ones. When you’re working with binary numbers, all you need are simple operations.
Because of this, computers can actually be built out of physical parts, without even electricty, they’ll just be much bigger, and slower, and less durable, and may need some motor attached to them. Mechanical calculators have existed since the 1700s, and in the 50s-70s were common sights in offices. Arguably the first general-purpose computers, Charles Babbage’s Difference Engines (Wikipedia), were made from mechanical parts, but they had the disadvantage of not being made out of colorful pieces of plastic.
Shadowman39, an artiste who works in the medium of K’nex, has made a number of devices out of those construction toys, but an ALU, an Arithmetic Logic Unit that can increment, add, AND and XOR two binary numbers, is probably his most “practical” creation. He shows it off in this 15 minute Youtube video:
I want to see an alien that can nebulously control that monstrosity.
This ALU is one part of a larger processor project that’s still being built. I hesitate to call it a “microprocessor,” maybe we should call it a macroprocessor. We wish Shadowman39 the best, and hope he has enough time, energy and parts to realize his wondrous, ludicrous dream.
Some time ago on Game Developer I did an interview with the creator of the classic Mac, Apple II and C64 programming game Chipwits, who were working on a modernized version. Well their efforts have been released to the public now: Chipwits 1.0 is now out on Steam!
You devise programs using a graphic interface to get a robot character through a maze-like grid world to do various things. The original Chipwits was written for the original Mac, in Forth, with ports for different machines of the time. The new game has a nice tutorial as well as new scenarios, in addition to the scenarios that came with the original game.
The thing I like about Chipwits is, it isn’t always about solving specific puzzles. Many of the maps are open-ended. The robots have a limited amount of fuel, which translates into machine cycles to run your programs. Additional fuel can be replenished by objects found in their exploration, as well as objects worth score, but the objects are frequently randomly placed. These scenarios aren’t about tailoring a program to a specific placement objects, but devising a more generalized exploration routine that can adapt to a variety of placements. There are online leaderboards so you can see how your coding skill compares with that of other players.
Chipwits usually goes for $15, but for launch is currently 10% off on Steam. (Disclaimer: I interviewed the Chipwits people for Game Developer previously, and did a little beta testing, but I bought my own copy of the game for these screenshots. They deserve the money!)
There is a whole developing competitive scene around Masahiro Sakurai’s hugely underrated racing/combat game starring colored blob-monsters, Kirby’s Air Ride. (Previously: about City Trial, Sakurai talks KAR, stats explainer video). It’s like F-Zero, but cuter, but also meaner. Its standout mode, City Trial, is possibly Sakurai’s greatest creation, yes more than Smash Bros., yes more than Kirby themself. If you’ve never tried it, it’ll be hard to picture. I linked to my previous explanation, but here’s a quick summary.
Up to four Kirbys (including possible computer Kirbys) roam around an open world map that’s not too big, but not too small either. They start out with weak star vehicles, but there are better/weirder/different replacement vehicles randomly scattered around the map. There’s also “patches,” each of which is a small but significant improvement to one stat, randomly placed too. For 3-7 minutes, everyone tries to get the vehicle most suited to their play style, and as many powerup patches as they can. But they can also attack each other, using powerups that are also, yes, randomly scattered around. There’s also random events that occur. And Legendary Machine parts to collect. After time runs out, all the players are thrown into a random contest. Surprise! You were collecting Glide powerups the whole time, but you’re in a race event! Or you got Top Speed powerups, but you’re in a battle event! You don’t know which event will happen. Everyone’s often given a strong clue, but it isn’t always accurate!
City Trial is a great spectator game. It’s fun watching human players zoom around building their machine’s power, and sometimes savagely tearing at each other with all the ferocity a cute blobular creature can muster. Each Trial is a little story to itself, its participants struggling to increase their power in the limited time. Which a single patch isn’t much, really good players can scoop up over 100 of them in the short period allowed, and machines rapidly advance from merely fast to pure manifestations of bewildering, near-uncontrollable speed. Then the contest is chosen, it’s over in less than a minute, and the next round begins, everyone back at square one. It’s so intense.
Kirby Air Ride was one of a very small number of games to use the Gamecube’s Network Adapter, meaning it supports LAN play, and through that function rabidly enthusiastic players have turned it into an internet-capable game. KAR, as it is amusingly called, has been further hacked to make it more suitable for competitive play.
The community has a homepage with details on how to get involved and downloads for their customized version and emulator, a Youtube channel with loads of great matchups, and a Discord. Here are a few matches to show you what I mean.
I post two complete matches below, here’s some things to watch for:
The star each Kirby starts with is the Compact Star, which has good default turning and acceleration but little else. Particularly, its Defense is the absolute worst, and no number of Defense patches will improve it!
Each stat except HP can get up to 18; HP tops out at 16.
Stats from patches are multiplied by the stats of the vehicle the player is riding. A high vehicle stat means each patch will make the effect even greater!
Players can hop off their star at any time. While not on a vehicle will point out the location of other stars within the field of view.
When a player is attacked, they usually drop a patch, which the attacking player may be able to snatch away.
If a player’s star gets destroyed, they drop a lot (although not all) of their patches onto the ground. Players can’t collect patches while not on a vehicle, so the attacker can scoop many of them up unchallenged!
If time runs out when a Kirby isn’t on a star, they’ll be given a Compact Star for the event, which usually means they’ll lose.
The Shadow Star (the purple glowing one) has the highest attack but low defense. The Wagon Star (like a pink cube) has very high health and defense, but can’t boost, so isn’t great for racing. Both tend to be strong choices.
Patches can generate out in the open, but blue boxes can drop from one to four of them when broken open.
Gray patches are power-downs.
Scattered around the map in some matches are Legendary Machine parts. If one player collects all three parts of a Legendary Machine, they get it immediately, and it replaces the machine they had before. There are two of these, the Hydra, a big green monster with extremely high attack but that needs charge boost power to even move, and the Dragoon, a red/white wing with very high maneuverability, flight and speed. Completing either one usually, but not always, spells victory in a match; Hydra particularly can be stunlocked before it can move during the end-of-game contest, and worn down before it has a chance to react. There are rules to how Legendary Machine parts can appear: they always generate from Red boxes, and appear in certain parts of the map, at certain times.
The patches also have patterns to how they appear. The probability of finding different patch types is a subtle clue for which contest will occur.
While a few of the references in this 1 hour, 25 minute video by torkirby may seem half-baked, they’re greatly out numbered by the ones that seem dead on. A lot of Kirby’s staff, especially in the area of music, have been with the series a long time. People try to leave Kirby’s presence, but they keep suckin’ them back in: even Masahiro Sakurai is returning to direct another Kirby game, with Kirby Air Riders slated for the Switch 2!
Speaking of which, I have a post in the works about the rising netplay esports scene around City Trial in the original Air Ride. That looks really interesting!
We love it when we find weird and unique indie games to tell you all about! Our alien friends to the left herald these occasions.
Writing about Nintendo fangames is fraught. Not that something might happen to me, the insidious grasp of their legal team doesn’t stretch that far yet, but for the games being written about. Remember AM2R, a fan remake of Metroid II that many believe was superior to Nintendo’s own revision? Then some big sites mentioned it, Nintendo heard about it, and they sent the creator a nastygram demanding they take it down. Set aside the fact that the game can still be readily obtained from numerous other sources; it still dumped a big bucket of freezing cold water on the hard work of its maker, which is hardly a way to treat fans, especially since the company’s prosperity depends on their good will. Nintendo must be really certain those enthusiasts won’t reject them.
About our own blog, I don’t think anyone at Nintendo personally reads Set Side B. I’m sure their well-paid legal staff has plenty better things to do than read an obscure little daily retro/niche/indie blog, even if it’s one that posts articles on their products really often. But it does seem possible that someone at Nintendo might run a spider, an automated program that scans the internet for derivative works related to their products.
Not romhacks, mind you. For some reason Nintendo doesn’t take a lot of interest in romhacks of their work in most cases. But fanwork that uses their IP in one way or other has been known to attract the attention of the legal Warios. That is why AM2R got stomped upon by the Kuribo’s Shoe of Civil Law, and it’s why Zelda Online had to retitle to Graal Online (a project that continues to this day under that name).
I tell you this so you’ll know why I don’t give the full name of the project I’m going to refer solely by the second half of its title: Dungeons of Infinity. Any person looking at the screenshots will be able to easily tell what game it’s referring to, and uses assets from, but web crawlers won’t, or at least I won’t make it any easier for them than the Youtube videos that contain footage of its play. If you figure you want to try it, which I hope you will, if you search for it you’ll probably find it. I’ll help you out by telling you it’s not the board game Dungeons of Infinity, which had a Kickstarter in 2024. Many of the top hits for that phrase will be about that, but not all of them. I trust you’ll be able to tell them apart.
(mumble) is gray here because he’s been cursed! Curses rarely and randomly spring from chests that are opened, and impose some restriction upon play, like making shops sell things for higher prices, or making hearts hurt you instead of heal. Each curse has a randomized lifting requirement.
Most of the things I like about (mumble mumble): Dungeons of Infinity are not related to the game from which it borrows. If they could find some helpful people to make similar graphics in the same style, and changed the name, they might be able to escape danger entirely, but that might require time and effort the creator doesn’t have. Whatever be its trappings, it’s a pretty cool random dungeon exploration game in its own right. It has a pretty active Discord. Its creator mentions there that they’ve recently lost interest in working on the game so its current version, 1.2.1, will probably be its last. It’s still pretty cool as it stands.
So the idea is, like in the other games in the series of, um, The Saga of Fitzgerald’s Wife, is to pilot a green-suited elf kid through dangerous and tricky dungeons and caverns full of monsters and traps, collecting items and uncovering secrets. What’s different is that the game is much more linear than those other games (much like the Four Swords Adventures titles), and the rooms and their arrangements are randomly determined. So… also like the Four Swords Adventures games, although this one is purely for solo play.
The Armos Knights, from The Saga of Fitzgerald’s Wife: A Connection to Previous Times, are much harder than in the original, without their former weaknesses. Arrows don’t seem to even harm them. (EDIT: DoI’s creator reached out and said they are vulnerable to arrows, it’s just the last phase of the fight, when there’s just one left,that it becomes immune.)
If you explore throughly enough you’ll always find a way forward, the game isn’t designed to give you unsolvable situations. But what can change, and quite a lot at that, is the items that you find. Weapons like the Bow, the Hookshot or the Boomerang have to be found, or sometimes bought, if you want to use them. None of these items are required to win, but without certain items, like Sword and Tunic upgrades, or extra Heart Containers, you’ll find the going much more difficult.
There are some pretty tricky secrets in this game. Try to remember all the different ways things could be hidden in the previous game.
In fact, probably the game’s biggest drawback is that it falls prey, a bit, to fangame difficuly malaise. Bosses that in the original game aren’t hugely difficult here are tenacious damage sponges. Everything in the game has been tuned to be that little bit more difficult: you have less health, sources of healing are less common, and enemies take more damage. Due to the nature of difficulty, all of these individual sources of peril multiply together and become much harder than the sum of its parts. And (mumble mumble): Dungeons of Infinity is a permadeath game: if you take too much damage and run out of hearts, the adventure ends, so to keep going you have to start over from the beginning, fighting all the early enemies once again, and building a whole new collection of random items. If you’re not up for a challenge, well, you probably shouldn’t bother downloading it.
Here’s some details that it might be useful to know:
To be frank, the many dark rooms in (mumble mumble) Dungeons of Infinity are probably my least favorite part of it. You don’t get the helpful cone of vision in dark areas here, and lit torches only light up a small area around them. There is an item that can give you a bit more visibility.
You have a very limited inventory space. You can only hold five items by default. The bow & its arrows count as separate items too, as do your bombs and any healing items you find. You can find, or (more likely) buy inventory expansions, and there are items that help keep other items from taking up inventory spaces, but you’ll frequently have to make difficult choices for what to keep.
On the other hand, items you drop, or don’t have room to collect, don’t disappear. They’ll remain on the ground in the room they were dropped or found in until you come back for them, or else take the downstairs (you don’t get to backtrack to previous floors). If you hold off on collecting hearts when you’re at full health, then when you do take damage, you can come back to pick them up later.
Aiding in this, enemies that you defeat never return. It’s possible to clear whole dungeon floors of monsters, making them much safer to explore.
In the bottom-right corner of the HUD, there’s a vertical map of all the dungeon levels, which gives you the low-down on where the bosses are. It also marks the location of save points. In the true spirit of permadeath these points are only for taking breaks, not for continually restoring from, but seeing as how the game is fairly long it’s good to take advantage of them, and refresh the mental batteries for a bit before tackling the next leg of the quest.
It’s a shame that it’s pretty far into the game, but in the rebel village area on the 6th floor there’s an arcade with a pretty decent remake of arcade classic Berzerk in it, as well as an endless runner version of Pitfall with a recreation of the music from Pitfall II: Lost Caverns! If you get a few rooms into the Berzerk remake, you’ll find another mini-game, within that mini-game. I don’t know how deep this recursive ouroboros of gaming goes, but it’s a very nice touch.
This is a screenshot of the Berzerk remake in the village arcade. I wish this and the Pitfall-inspired endless runner could be played stand-alone!
After a year in the works, ZoomZike’s epic in-depth series examining each game in the Mario Party series has reached the Nintendo DS version, and as always it’s very long (4½ hours this time!) and extremely detailed. The title makes it sound like it’s got a very narrow focus, but the Identifying Luck in Mario Party series is more like a comprehensive review of nearly every aspect of the Mario Party series. They’re among the best game breakdowns you can find on Youtube!
ZoomZike doesn’t just cover Mario Party games on his channel, and we linked to his video on Sonic Adventure 2’s Final Rush level, but the Mario Party series is probably his greatest achievement, and are like a complete strategy guide and a course on game design all in themselves.
“What should tomorrow’s post be? On the ancient C64 GEOS operating system? On weird finds in Mario Kart World? More on Kirby Air Ride? Wait, what was it that starts on the 6th again?”
Kirby Air Ride appears set to be finally remembered, with the announcement that a sequel is in the works for the Switch 2, with Masashiro Sakurai again at the helm.
Air Ride, possibly the most atypical game in a franchise with maybe 50% or more atypical games in it, is a sadly-neglected title that is, no lie, one of the truest underrated classics of the Gamecube, and it’s mostly because of the amazing City Trial mode, which I’ve mentioned here before.
In play terms, City Trial is what turns Air Ride from a severely diminished F-Zero clone to a game for the ages. Multiple colored Kirbys (Kirbies?) explore a sizable map, not huge but not tiny either. Scattered around it are a variety of randomly-generated vehicles and items. Of the items, the most important is probably the upgrades, or “patches,” which improve the stats of whatever vehicle a Kirby may pilot. They are Boost, Top Speed, Turn, Charge, Glide, Weight, Offense, Defense and HP. Each has a definite effect on your vehicle’s performance; the more you have, the stronger the vehicle gets.
People who haven’t played Kirby Air Ride, but have played Super Smash Bros. for 3DS, may recognize this idea as the basis of its exclusive Smash Run mode, but in Smash Run you each had your own map to explore; it only became a true multiplayer game at the very end. But in both Air Ride and Smash Run, after the players build their vehicle or character, they’re all thrown into a competitive event. It might be fighting, but it might also be something different. Their success at collecting stats helps determine how well they do in the event, but while there may be clues, there is no definite indication of what the event will be.
So collecting the stats is very important to success. But the game doesn’t explain what they do very well, and in fact some of their effects are quite complex and difficult to communicate briefly. The video above goes into detail, but here’s a few quick takeaways:
The “Boost” stat, as it turns out, is more like Acceleration.
The Glide stat works partly by reducing weight, so it and the Weight stat counteract each other a bit.
All of the stats work by multiplying the vehicle’s base stat, so a vehicle with a 1.3 base gets more effect if it collects that kind of powerup than if it were at the usual 1.0.
However, the default vehicle, the Compact Star you begin each City Trial game with, has a Defense stat of zero. Since any number times zero is zero, you get no benefit from Defense patches if you stick with the Compact Star vehicle.
Watch the video if you want to know more. And if you’ve never played Kirby Air Ride but have a Switch 2 keep a look out, because it seems very likely that Nintendo will give it a rerelease for Switch Online Expansion Pack eventually!
I’m helping out with Roguelike Celebration 2025, the now ten-year-running conference-like thing about all things roguelike, roguelite, and roguelike-adjacent. Yes, I’ve presented there three times so far, and figured it was time to give back!
While RC got its start as an in-person conference, when the pandemic hit they switched over to being entirely virtual, presented through video feed. All of their talks end up posted online, so anyone can see them for years after. But if you can attend during the conference you can participate in chat, ask questions of the speakers, and explore a very clever MUD-like chat interface!
I’ve tried to spread the word about Roguelike Celebration where I can, through social media and this very blog here. Every year they have several very interesting talks that, if you read Set Side B, I know you’d be interested in seeing. They’ve hosted Tarn Adams, co-creator of Dwarf Fortress, the creators of the original Rogue, and many other thoughtful speakers.
This year Roguelike Celebration takes place October 25-26. They sell tickets, but they also let people who are strapped for cash apply for a free ticket. (If you can pay for admission though, please do, as it takes money to run an event like this.)
And if you have a roguelike, or even vaguely-related project, please please please answer their Call For Proposals, to apply to present your work to their devoted audience of extremely thoughtful attendees! The CFP site is here, and their deadline has been extended to July 20th, so you have about three weeks to get in your proposal!
Give it a shot, it’s a great way to spread the word about roguelike work, or about a procedurally-generated game you’re interested in, or just something you think the world should know about.
By volume most game players, let’s be frank, are interested in the big AAA productions. But there are lots of people out there who are willing to give indies a chance, which roguelike games often are, and we have to stick together. Not only to talk with each other and build those connections, but to do it in public, non-corporate venues. Reddit largely is a sham these days, more interested in monetizing their userbase, and Discord isn’t web-searchable, and requires navigating a maze of requests that you upgrade to “Nitro.”
I do not lie: little volunteer-run organizations like Roguelike Celebration are a lot closer to the true spirit of the internet, and the World Wide Web, than those are. So please keep them in your thoughts, if you can buy a ticket, and if you have something to present, answer their CFP! You won’t regret any of those things.
July 6th is the first day this year of the week-long SGDQ speedrunning marathon! I try to mention it, and its companion marathon AGDQ in January, some time in advance each year. I’m not always successful, but I managed to get the reminder out this time, with around a week and a half to spare. Here is its schedule.
This year SGDQ benefits Doctors Without Borders. Of course it’s a terrible time for the economy this year so giving hurts a bit more, but wouldn’t it be nice to support an organization that’s trying to do actual good in the world, instead of just observing the manifest awfulness that surrounds us?
I’ll give you just a few selected highlights this time. The first first run is an hour-long all-Emeralds run of Sonic 2. Some others are a kaizo showcase of Mega Man Maker levels, a bonus incentive run of Gamecube Donkey Kong Jungle Beat (which is played using the Bongo Drum controller), Blue Prince, We Love Katamari REROLL, Castlevania Rondo of Blood, a Tetris 99 Battle Royale showcase, An Airport For Aliens Currently Run By Dogs, a Spelunky triathalon, a 100% run of Metroid Zero Mission, a Super Mario Maker 2 relay race, and at the very end Deltarune chapters 1 and 2. Everyone loves Spamton!
We’ve mentioned this before, but not only are all of Namco’s science fiction arcade games, which include Galaxian, Galaga, Baraduke, Bosconian, Starblade, Cybersled and many others, considered to be on a single timeline, but they even have a website dedicated to sorting and explaining it, ugsf-series.com! And it includes games you might not have pegged for it, like Dig Dug and Mr. Driller!
This even includes their upcoming “Shadow Labyrinth,” which I derisively describe as grimdark Pac-Man. Well, at least they’re serious about it!
Is that hyperbolic? It probably is. But the heart wants what it wants, and what mine wants is CP/M for the MOS 6502 processor. Set Side B is a blog about computer entertainment, in all its many forms, and this qualifies in my mind, because it’s not like anyone’s going to be using it do real work. Right?
I found out about it through the (mostly) wonderful blog The Oasis BBS. It’s called CP/M 65, and it was made possible when CP/M’s source was opened in 2022. Wait, maybe I should explain what CP/M is. Sure, it has a Wikipedia page, but I like explaining it.
Output of the DIR command on the C64 with the system disk in the drive.
Gary Kildall created CP/M, “Control Program for Microcomputers,” for the Z80 microprocessor, and it became the first widely-used standard OS for home computing. Its importance and influence cannot possibly be overstated: PC-DOS (later known as MS-DOS) was created as a clone of CP/M for the 8086 processor, meaning, the reason .COM files are still technically considered executables, and why we still have drive letters in Windows 11, are both directly because of CP/M.
A case could be made that, if IBM hadn’t made the IBM PC out of standard parts, making possible the huge market for clone machines, it’d still be a CP/M world today, in some way. It was the first standard OS, one where it ran on machines made by more than one manufacturer. Many of the CP/M machines companies, the Kaypros and Osbournes, are gone now, but they had quite a large niche at one time.
Conway’s Game of Life, for CP/M 65. Because it’s not really a computer until someone’s run Life on it.
Commodore released a CP/M cartridge for the Commdore 64, an amazingly ridiculous and rare package because the C64 used a 6502 processor. The cartridge worked only because it contained a Z80 processor inside itself, and put the 6502 in the system to sleep to do work. It ran much more slowly than other CP/M systems, and on top of that it still had to use Commodore’s 1541 disk drive, a fatal flaw, because it meant that while it could run CP/M software, it couldn’t read the disks that had them, because CP/M’s native disk format couldn’t be read by the 1541’s read heads. (The C128 had a built-in Z80, and the 1571 disk drive that was made for it could read CP/M disks natively, but by that time CP/M was already dying, pushed out by the PC standard and all those clones I mentioned.)
This thing I’m posting about, CP/M 65, has no relationship to that woeful product. It’s a port of CP/M to the 6502 processor. It can’t run Z80 CP/M software. But in all other senses, it is CP/M. What that means is that it has its own BIOS.
CP/M’s BIOS is what allowed its software to run machines made by different manufacturers. The BIOS acted as a translation layer between the hardware and the software. Programs wouldn’t interact with the hardware directly, but instead make calls through the BIOS whenever they needed to use some part of the hardware, like when it needed to access the disk or output characters to the screen. The result was that unless the software was written specifically to take advantage of a computer’s specialized hardware anything extra it had would go unused, but it also meant that a software developer could write one program and, so long as it restricted itself to interacting with the system through that BIOS, it could run on any CP/M machine that could read the disk.
DIR is the built-in CP/M command to report disk contents, but this release contains LS for those with that muscle memory.
CP/M 65 provides such a BIOS for all of its supported platforms, and as a result, while using it will give you a plane-jane, character-mode program, it’ll let you write a program that will run on any of them. Indeed, since this version of CP/M supports relocating executables, its programs can run on a much wider variety of hardware than original CP/M could. You can write a single program that can run on a Commodore 64, VIC-20, BBC Micro, Atari 8-bit, Apple II, KIM-1(!) and, if you can find the incredibly obscure keyboard and disk drive hardware for it or else emulate them, the Super Nintendo Entertainment System(!!).
But on a C64 it shines slightly more than the others, because it has integrated fastload routines, meaning that it gets around the C64’s greatest flaw, its horribly slow disk drive.
So this basically means now 6502s have their own cross-platform version of DOS, or something a lot like it. It has little software, but it does have an assembler, and a version of BASIC, and if you don’t mind writing it on a (pah!) modern computer, you can also write programs for it in other languages.
Behold the PETSCII Mandelbrot set!
If you want to try this wonderfully misbegotten thing, something like Frankenstein’s Monster wearing a ribbon, its GitHub is here, and you can find binary release disk images here. The one with the extension .d64 is the C64 version, and it loads right up in the Commodore computer emulator VICE, although I found out it’ll fail to boot unless you turn on “True Disk Emulation” for Drive 8. But it works! It comes with an assembler and BASIC, and a vi-like text editor, an implementation of Conway’s Life, and even a Mandelbrot set plotter. I kind of want to write software for it!
CORRECTION: Silly me, here I was assuming that CP/M 65 itself was a fairly recent thing, but as it turns out it’s been around for around 30 years!
CORRECTION FOR THE CORRECTION: Well the guy working in this very long Youtube playlist (maybe 31 hours?) created it in 2022, which isn’t 30 years ago. Ah well!