Yesterday, on the 25th anniversary of the first Commander Keen release, id Software co-founder John Romero revealed a video of the studio’s Super Mario Bros. 3 demo. Created in a single week back in 1990, the year of Commander Keen, the demo was presented to Nintendo to show the viability of a PC port of the game. The second level has been redesigned to ask the important question: “Like it?”
Whether or not Nintendo did like the demo, history doesn’t make clear. What we do know is that they were concentrating all of their energies on games for their own hardware. How different the PC landscape might be if that hadn’t been the case.
Rather than falling into the rabbit hole of speculation (WHAT IF id HAD BEEN THE OFFICIAL NINTENDO LICENSE HANDLERS FOR PC), it’s worth examining why the demo was so impressive. Scrolling levels were tricky to implement for reasons that I’m not quite knowledgeable enough to understand. Essentially, redrawing the entire screen as soon as the edge moved even slightly was far too much of a drain on the humble home computers of the time and Carmack’s solution was to refresh only those parts that had actually changed. Static backgrounds were implemented wherever possible.
If my understanding of the timeline is correct, John Carmack had been trying to implement side-scrolling for use in a platformer based on a Romero design. The eventual demo of that game drew so heavily from Super Mario Bros, copying entire levels and simply replacing sprites, that the team referred to it as Dangerous Dave In Copyright Infringement. It was at that point that they decided to pitch an actual Mario port to Nintendo. When they were rebuffed, Apogee Software picked up the pieces and a version of the engine used in the demo became the foundation for Commander Keen.
I don’t have a copy of Masters of Doom at hand but that splendid book about the founding and history of id contains some details about the creation of this demo and the Commander Keen games. I did find a (supposed) quote from Romero about the details of the Keen engines and how they dealt with scrolling:
“Each Keen engine was different. The Keen 1-3 engine worked as you described: using the EGA panning register to get pixel-smooth scrolling and when it was about to hit a tile boundary it refreshed only those tiles on the screen that needed to change (thus “smart tile refresh”).
“Keen 4-6’s engine was different in that it not only used the EGA panning register for pixel-smooth horizontal scrolling but it also used the CRTC ADDRESS register to change the start of screen memory as the screen scrolled. This means that the entire 64k area of EGA RAM was used for the 2 page-flipped screens. As the player moved around, the start address of screen RAM changed and tiles were drawn off the edges so when it scrolled to that area of memory the tiles were already there.
“For example, if the player started falling down a hole the CRTC ADDR start would be moving down through memory as the engine drew tiles off the bottom of the visible screen area. Eventually you would be wrapping around the EGA screen segment (0xa000) – it didn’t take too long because both screens (for page-flipping) were in the same segment and ate twice the RAM.”
That’s taken from this thread, which explores the differences between the NES hardware and PCs of the time. And, yes, I’m unreasonably irritated by the typo in the thread title.
I shared some memories of Keen in a supporter post yesterday. If you have memories of your own about the boy wonder, share them below. And if you understand all of this platform engine business, please do discuss that as well. I might learn something.