Hey guys, Ernie here with another great piece from David Buck, who we last saw talking about Oingo Boingo. Tonight, he’s got something else brewin’.
Today in Tedium: Growing up in the era of the Nintendo Entertainment System, I always wanted to create my own NES game. I scribbled ideas in notebooks, mapped out levels on graph paper and spent countless hours composing my own MIDI-based soundtracks to games that didn’t exist. These ideas were lost to time until 2018, until I watched Joe Granato’s documentary, The New 8-bit Heroes, about his quest to create the game of his childhood dreams. Now, with the successfully funded Kickstarter for his NESMaker software, the project may help to simplify the creation of homebrew NES games. Joe isn’t the first one to do this, however, as homebrew has a long and storied history. Today’s Tedium seeks to explore this corner of NES history and the creation of NES games over 20 years after the end of the system’s commercial life. — David @ Tedium
Tonight’s GIF comes from the homebrew game Lizard.
The amount the winner of “Invent the Ultimate Video Game,” a contest put on by Nintendo, won in savings bond form. The finals of the contest were held in the Russell Senate Office Building, just steps away from the U.S. Capitol. The result, announced in the sixth issue of Nintendo Power in 1988 showed off the skills of then-15-year-old J. Scott Campbell (of Marvel, GEN13 and Danger Girl fame). His winning entry was called Lockarm, an adventure game revolving around a prince named Derrick and his quest to find and restore power to the titular sword. The game was never made, but the idea of making one’s own NES games lives on today.
Lockarm, the ultimate video game, probably inspired a whole lot of kids to dream big. (Nintendo Power/Internet Archive)
Brand new NES games are still being made today…
If you base your Nintendo history on official releases, the final game for the system—Wario’s Woods—arrived in late 1994. Throughout the system’s life, numerous classic games helped shape the minds and hearts of an entire generation, in addition to cementing the legacy of certain character and franchises like Mario, Zelda, Kirby and Metroid—all of which have recently received new entries into their respective series.
As publishers moved over to other consoles like the Super Nintendo and Sega Genesis, games stopped being made for the old gray box, Nintendo Power Magazine stopped covering the system and stores began clearing out their stock. A few years passed. Websites covering the NES like Roger Barr’s i-Mockey (which later gave us the flash-based Abobo’s Big Adventure: the Ultimate Tribute to the NES) TSR’s NES Archive and NES World sprang up to keep the memory alive and as Nintendo gave up on the system, a new class of programmers worked to keep its ideas and mission alive.
…and these are the reasons why
It says something about the legacy of the NES that most homebrewers continue to make games for the system for reasons other than nostalgia. It’s mostly because they love the NES.
“I’ve always wanted to create NES games, ever since I was a kid. I remember sitting around drawing maps on paper, daydreaming of what my designs would be like to play,” explained Nathan Tolbert, a relatively new figure to the NES homebrew scene who’s already built a couple of titles for the annual NESDEV competition.
One creator, Antione Fantys, wants to bring back some of the elements from retro games that don’t seem to exist in the modern generation. Because the NES is the most iconic of these systems, he enjoys programming with it, citing the limitations of the system as a means to creating the most accurate representation of a retro game as possible.
For modern homebrewers, there is vast appeal in the technical aspect of programming. Bradley Bateman, an artist who worked on a port of Leisure Suit Larry for KHAN games, feels like programming games for the NES is becoming more accessible.
“We have gotten to a point in the community where we have ALMOST everything figured out,” he told us. Many emulators have become accurate enough to test ROMs and it’s easier to go through the troubleshooting and fine tuning process without the actual hardware.
Derek Andrews of Gradual Games got into it partly because of nostalgia, but predominantly because the NES encourages the programmer to limit the scope of a project, by its very nature, not to mention the ability to have a hard copy of the game on an NES cartridge by the end of the process. An artist and NintendoAge user, M-Tee, echoes this sentiment.
Many of the homebrewers we spoke with pointed to an increase in popularity of retro-style independent games like Shovel Knight, the challenge of programming for an older system, the appeal of playing a high-quality game on their favorite system, a challenging side project or even composing NES music.
After talking with a few of the heavy hitters in the NES homebrew scene, one thing is clear—nostalgia has very little to do with the scene at all.
The core upon which the CPU (Central Processing Unit) that powers the NES is based. The processor runs at 1.79 MHz in the American NES and is encased in an RP2A03 chip. This handy chip also contains the sound processor—the APU—in the American version of the system. The PAL (Europe) version of the NES runs at 1.66 MHz and uses a different version of the chip—the RP2A07. This cutting edge technology (at the time) could address up to 64 kilobytes worth of memory at one time.
A chip off the old block.
On the assembly line: The unique, complex challenges of programming in assembly code
Because of its slow, 8-bit processor, games for the Nintendo Entertainment System are programmed using the 6502 version of Assembly programming language. Assembly, for the uninitiated, is a low-level programming language that requires code to be placed into an assembler and executed into usable machine code. It comes in several unique flavors—6502, x86, ARM, MIPS, 68000, Z80 and do on, depending on the machine.
“There is nothing like the NES architecture out there … and that is pretty amazing,” exclaimed Kevin Hanley of KHAN Games, in an episode of his NES homebrew podcast, The Assembly Line.
Assembly isn’t the simplest of languages to use, simply because it’s time-consuming and tricky. In an interview with Tedium, Frank Westphal, the creator of the NES homebrew Armed for Battle, summed it up this way: “Assembly coding can be fun, and very tedious. It takes a lot of lines of code to make things happen. The biggest challenge I had in the coding of Armed for Battle was having to reuse a portion of the RAM (random access memory) when the game got huge.”
He had to reorganize RAM, sort out different sections of code and keep track of a great deal of code, so it didn’t behave erratically during the battle sequences. This is just part of the daily operations of an NES programmer.
These types of challenges are part of the appeal of the programming language for Derek Andrews. His games, Nomolos: Storm the CATsle and Legends of Owlia are loosely based on games he once attempted to create in QBasic (but never finished due to being a “lazy teenager,” as he puts it), but was successful in creating with assembly. The process itself can be a satisfying experience.
“Coding for the NES is very time consuming, but what I do is resign myself to the reality that it is hard and time consuming and cultivate enjoying every slow, plodding step of the process,” he said, but he enjoyed every bit of it. “The payoff in satisfaction at the end of a project like this is enormous, and quite emotional.”
“Every person learns differently, and everyone has a different aptitude for programming. I would say ‘anyone can do it’, which I think is more or less true at face value, but a more apt thing to say might be that ‘not everyone would want to.’”
— Homebrewer Brad Smith, on the tedious and frustrating nature of programming. Smith is a musician and professional programmer who makes NES music—and puts it onto a cart—in his spare time. His recent homebrew game release, Lizard, is available at its official website.
Wanna get started making your own games? Well, hope you like hexadecimal tables
Websites like NESDEV and Nintendo Age are a boon to potential homebrewers. With their assembly programming guide and yearly homebrew competition help bring potential homebrewers into the world of creating new NES games. You can learn assembly by following any number of 6502 tutorials, this assembly starter document or check Brian Parker’s (of RetroUSB) NintendoAge Nerdy Nights Programming thread. Just remember to bring your copy of Notepad ++ and be prepared to stare at a mountain of hexadecimal tables as you work.
There is another option for programming an NES game today, however. Per KHAN Games’ Kevin Hanley—known for his NES port of the first Leisure Suit Larry game and his original Study Hall—the C programming language shows some promise, although he prefers assembly.
YouTuber John Riggs gets totally psyched about the Leisure Suit Larry homebrew.
“Originally in the NES’s heyday, the games were strictly made with 6502 assembly language,” Hanley told us, “Many people, myself included, continue to make games with this language. Within the past few years, with the advent of a C library that Shiru (a brilliant Russian NES programmer) made available to the public, a lot of people have been making games in C. There was some debate over whether a worthwhile game could be made this way, but some of my favorite homebrews, including Quest Forge, were written in C.”
Lizard creator Brad Smith confirms that some homebrewers have been using C to homebrew NES games, but notes that it can be difficult to make higher level languages work with older processors. Brad is a fountain of NES technical knowledge at his website, thoroughly detailing the creation of Lizard from sprite rendering, to scrolling backgrounds, to the creation of an NES soundtrack.
By the end of 2018, NESMaker will seek to streamline the process by providing a point-and-click GUI (graphical user interface) for creating NES games, with no coding required.
“It’s the difference between a custom paint job on a car, and building a car from scratch with a pile of bolts and some sheet metal. Both are impressive and fun to play, but they are very different under the hood. “
— Doug Fraker, creator of the NES homebrew titles Vigilante Ninja 1 & 2. Along with his games, he’s written a tutorial on programming NES games in the C programming language, rather than the standard Assembly language the system typically uses.
The Legend of Zelda: Outlands.
Why ROM hacking shouldn’t be considered the same as homebrew programming
In the early days of NES emulation, it wasn’t unlikely to find something called a ROM hack. Games like Super Dragon Bros., The Legend of Zelda: Outlands and Mario Adventure are all ROM hacks, not homebrew titles. This distinction is important, per Bradley Bateman.
“There is a very big difference between a ROM hack and homebrew,” he said, jokingly adding, “and don’t confuse them, because the homebrewers will rip your head off.”
In a ROM hack, the game’s assets are altered, augmenting or changing aspects of the game itself. These changes create the experience of playing a “new” game. The changes are saved in a patch—a list of changes made to the game— and applied to the game. The patch tells the program to constantly change the coding on the fly.
A ROM hack typically requires an existing ROM that is then patched with an .ips file containing the altered code. There are other formats used for patches, but .ips is probably the most popular.
Every homebrewer with which we spoke made different analogies about the difference, but they were all clear on a single point—homebrew games are built from the ground up, while ROM hacks are built upon an existing framework.
Ever the musician, Brad Smith put it this way—ROM hacks are cover tunes, while homebrews are brand new albums.
The year Joe Granato and his friend came up with the idea that would grow into Mystic Searches. The following year, they “designed” the game. The idea would continue to live in Joe’s creative life—through written works—until he finally made it a reality, with a little help from his friends. The game follows a troubadour on a world-spanning adventure.
Tedium’s top five favorite NES homebrew titles
Some of the biggest names in NES homebrew can be found at RetroUSB, where you can also get the best NES system on the market today, the AVS. Another great source for homebrew games is Sly Dog Studios—online home of NES homebrewer extraordinaire Rob Bryant, is a treasure trove of NES homebrew titles and Infinite NES Lives is a one-stop destination for all your homebrew needs.
1. Battle Kid. Based on incredibly difficult one-hit-and-your-dead platforming games like I Wanna be the Guy, NES developer Sivak created this gem in 2010. It’s Metroidvania layout, incredible music, superb graphics and fun, albeit punishing game play make it worth the cost of admission. The game can be purchased—in cart form, no less—at RetroUSB.
2. Lizard. This massive, open-world game follows a boy in a lizard suit as he collects coins and explores the ruins of an ancient civilization. Fun, play-at-your-own-pace and incredibly well-done, this game is more than worth checking out. The game can be purchased as a program or a cart at its official site.
3. Eskimo Bob. Based on the rather bizarre Newgrounds show from the early 2000s, this game is a blast to play. The titular character roams the arctic, collecting fish and avoiding hilarious obstacles. In some stages, you can switch between Bob and another character, Alfonzo, who attacks with a stick. The game is available at its official website.
4. Study Hall. In this Donkey Kong Jr.-meets-Glider game by KHAN Games, you play as a stick figure who must solve a variety of puzzles over 16 stages. Available from RetroUSB.
5. Nomolos Storming the CATsle. This fun side-scroller from Gradual Games you play a cat, wearing armor and wielding a sword, storming a castle. Oh, and it’s free. Need we say more? Get it here.
“Nostalgia is just a prologue.”
— Joe Granato, introducing his documentary, The New 8-bit Heroes. The film follows Joe’s quest to create the game from his childhood, featuring, discussing the modern challenges of creating an NES game and includes brief interviews with several prominent NES homebrewers along the way. His team created NESMaker as a set of WYSIYWG tools intended to streamline the process. The documentary offers a brief but fascinating glimpse into the scene.
Tools like NESMaker have the potential to make homebrewing more accessible to less tech-savvy NES programmers, but aren’t the only thing out there. The software can potentially have an impact on the homebrew scene, may also be beneficial to artists, people who don’t have the aptitude or patience for coding and can act as the perfect portal into assembly programming from scratch.
NintendoAge and NESDev have already shown us the way. Meanwhile, YouTubers like John Riggs, The Immortal John Hancock (where I first heard about Lizard) and Metal Jesus Rocks are keeping the scene in the public eye via their respective YouTube channels.
The Nintendo Entertainment System isn’t a ghost, a long-dead console cast to the ever shifting sands of time. No, the system is very much alive and has a future so bright, we’ll have to wear shades.
Kevin Hanley leaves us with some parting words on that subject: “I appreciate being part of this community, and I appreciate your time. The best NES homebrew games are still to come, so stick around. There are things coming out that are still going to be mind-blowing, even by today’s standards. So stay tuned.”