Are you surprised by that title? It isn’t obvious that there even is one, but Youtuber 2CPhoenix makes a strong case that there is, that’s (mostly) consistent across the game’s signage! Here’s their video on it (9 1/2 minutes):
These kinds of ciphers aren’t to common in games, but they’re not unheard-of either. The Legend of Zelda: The Wind Waker uses one for the Hylian language, which it even translates for you if you play through the game a second time, and there’s at least one other such language that’s used in Breath of the Wild for Shiekah artifacts. And of course, working out a cipher that’s used in many locations is a major late-game puzzle in Fez.
The “language” of what are possibly the Noki in Sunshine Mario Sunshine is one of those things where, like Bubble Bobble’s Bubble Alphabet, the letters are actually heavily stylized versions of our familiar Latin alphabet, meaning, if you kind of take your brain off the hook slightly and just try to read the glyphs like they were words, you can get a bit of a sense of what they’re saying. Or at least I can. A little.
It’s enough to make one want to take a second look at the fakey-letters in some other Nintendo games, such as the Splatoon and Pokemon series….
Codes are largely a forgotten element of video gaming. They started out as debug features that didn’t get removed before release, then they became easter eggs to reveal to favored players, ways to dispense unlockables, ways to provide extra difficulty balancing, and even publicity tools, before the age of DLC gave developers a way to profit off of bonus features. Why have players enter up-up-down-down-left-right-left-right when you could just sell them play advantages outright. I’m simplifying the situation a bit, sure, but I’m not simplifying by much.
Codes still exist, once in a while, but it seems like they’ve gone back to being development aids. One of them crept into New Super Mario Bros. Wii, but only becomes usable if the game crashes. The code is: Home, Minus, Plus, Minus, Plus, 1, 2, 1, 2, A. It brings up a scrollable register dump and stack trace, and other assorted information. It doesn’t let you continue playing. For players, it’s just a curiosity, but it’s a thing that is interesting.
Here’s another of those deep-dive NES internal videos from Behind the Code, possibly the most complex one they’ve done to date. Most game engines, when you examine their basic logic, are basically physics simulations, with some AI included to determine how actors behave.
Not so with the Punch-Out!! games. They are essentially entirely different kinds of games from that. You have certain things you can do moment to moment, and opposing boxers do too. Each of those opponents basically runs a big script, made out of byte code, that determines their behavior throughout each round of each fight. I am struck both by the simplicity (no need to simulate gravity) and the complexity (boxers take all kinds of things into account) of the system.
One of the interesting things shown is that the engine can affect more than just the boxers, but can also subtly affect the crowd, which is how the previously-revealed fact that a specific camera person in the crowd uses his flash right at the moment the player must counter Bald Bull’s charge move. It turns out that this isn’t the only instance of this happening in the game!
You don’t need to know 6502 assembly code to get what the narrator is talking about, but a lot of code is shown, so those of you who understand it may get a bit more out of it. Here are a few basics to help you follow along.
The 6502 has only three registers (bits of memory internal to the CPU that can be accessed quickly), the Accumulator (sometimes called just A), the X register, and the Y register. Each is only one byte long. The Accumulator is by far the most flexible, but all three are general-purpose registers. The most common instructions are Loads (LDA, LDX, LDY), Stores (STA, STX, STY), Transfers between registers (TAX, TAY), Incrementing and Decrementing (INX, INY, DEX, DEY), Adding (ADC), Subtracting (SBC), Comparing (CMP), Branches (some of them, Branch Not-Equal to Zero: BNE, Branch Equal to Zero: BEQ, Branch of Carry Set: BCS, Branch on Carry Clear: BCC), Jump (JMP), Jump to Subroutine (JSR), and Return from Subroutine (RTS). While some instructions are just one byte long, the longest any 6502 instruction can be is three bytes, and the opcode (the command itself) is always just one.
(I wrote all of that from memory. I figured, I have all of this in my head from my coding youth, I might as well use some of it.)
The 6502 can only address 64K of memory, so often systems will use bank switching to connect various memories to it within that space. The great majority of NES/Famicom games had to do this. Punch-Out!! was unique on the NES in that it was the only game to use Nintendo’s MMC2 chip. (I wonder if the chip was designed ahead of time, and they made this game as an excuse to use it?) Punch-Out!! uses MMC2 to bank in each boxer’s large data script as needed.
The news about this broke some time ago, but Set Side B is only a few months old at the moment and we weren’t around then. It’s still worth mentioning though!
Ed Boon put secret codes in a number of his games to allow him to check on individual machines while out in the public. He revealed his code for Mortal Kombat II some time back, which is listed on The Cutting Room Floor. The code is entered entirely with the 1P and 2P Block buttons: P1 Block 5 times, P2 Block 10 times, P1 Block 2 times, P2 Block 8 times, and P1 Block 2 times. The timing is tight, so keep trying.
One way to remember part of the code is in the menu’s name, the EJB Menu. The E and B of that stand for Ed Boon. E is the 5th letter of the alphabet, J is the 10th, and B is the second, and those are the number of button pressed needed for the first three parts of the code.. The whole code would thus be EJBHB. Using initials as part of a code seems to have been part of the culture at Bally and Williams at the time. A number of pinball games have hidden displays that can be called up from attract mode if you press buttons as if you were entering a developer’s initials in the high score screen.
The EJB menu offers a lot of information on how a machine has been performing on location! It’s much like the operator’s menu, but with even more options! You can even call up the ending for any character, would certainly would have made any kid who knew that code back then the star of the arcade.
Of particular note is, a couple of the items in the menus are red herrings. The developers loved taunting kids by putting fake hidden features in the operator menus. “Shawn Attacks” is one of them (there is no character called Shawn in the game); “Kano Transformations” is another (Kano is not playable in MKII).
Other EJB menu codes:
Mortal Kombat 1, it’s 1PB x 5, 2PB x`10, 1PB x 2, 2PB once, 1PB x 2, 2 PB x 3, then 1 PB x 4. The page notes that, converted to letters, this code would be EJBABCD.
In Mortal Kombat 3, it’s 1PB x 5, 2PB x 10, 1PB x 3 (it’s EJC this time!), then 2PB once, 1PB x 2, 2PB x 2, 1PB x 3, and 2PB x 3. EJCABBCC. This code also works in Mortal Kombat 3 Ultimate.
The Cutting Room Floor does not list a EJB code for Mortal Kombat 4. Smash T.V. does have a code for a developer’s menu.
(Note, for clarity, you have to say the SNES game Super Punch-Out!!, because Nintendo made a different arcade game that they also called Super Punch-Out!! Also, the exclamation points are part of the name. I’m not just really excited.)
To do it, Y+R must be held on controller 2, and Start pressed on controller 1. This loads a screen where any opponent may be selected
Then, on the character info screen, hold B+Y, again on controller 2, and press Start on controller 1 to allow player 2 to control the opposing boxer.
The code even works on the version of the game on Nintendo Switch Online, so if you have an account there you can try it out without setting up an emulator or digging up an old cartridge.
It’s interesting to note the times that the big gaming sites reported on this. As of this writing (yesterday) and according to Google, Ars Technica reported on it 18 hours ago, followed by IGN (16 hours), Kotaku (15 hours), and then Eurogamer. Reddit says the post went up there 19 hours ago, and Unlisted Cheats posted it 20 hours ago. News travels fast in the videoscape.
The phenomenon of the cheat code has gone kind of out of fashion these days. They still exist, but tend to be more for debugging than anything, especially since interesting features can conceivably locked behind paid DLC gates and bring in more lucre to the mothership. I know of a particularly interesting code that news broke about some time back, but let’s give that its own moment in the sun, tomorrow….
“We scour the Earth web for indie, retro, and niche gaming news so you don’t have to, drebnar!” – your faithful reporter
Kenneth Seward Jr. at Kotaku tells us about things he wished he knew before starting Multiversus, the Space Jam: A New Legacy of fighting games. Besides that Steven and Garnet are best characters? Not due to gameplay properties, just because.
And Wes Fenlon at PC Gamer tells us about changes made to the upcoming remake of Tactics Ogre, many of which undo changes made to the previous remake of Tactics Ogre. I wish someone would remake my old Tactics Ogre Disk 2 on PS1, which snapped clean in half when I sat on it. I cried for fifteen minutes.