No matter your age or background, there’s an excellent chance you’ll recognize the Nintendo Entertainment System (NES) at first glance. The iconic 8-bit system not only revitalized the gaming industry, but helped to establish the “blueprint” of console gaming for decades to come. It’s a machine so legendary and transformative that even today, it enjoys a considerable following. Some appreciate the more austere approach to gaming from a bygone era, while others are fascinated with the functional aspects of console.
The NesHacker YouTube channel is an excellent example of that latter group. Host [Ryan] explores the ins and outs of the NES as a platform, with a leaning towards the software techniques used to push the system’s 6502 processor to the limits. Even if you aren’t terribly interested in gaming, the videos on assembly programming and optimization are well worth a watch for anyone writing code for vintage hardware.
When it comes to the six original Mega Man games there is a clear dividing line between the first three and the last. Mega Man 4 introduced the charging shot mechanic that allowed players to hold down the fire button in order to power-up a single blast from Mega Man’s arm cannon. The aptly named, “Mega Man 4: Free of Charge” ROM hack by [Peter] seeks to bring cohesion with the first trilogy of Mega Man games by removing the charge shot mechanic completely. To compensate for the change, enemy health bars were also adjusted so that enemies aren’t as bullet-spongy.
The Mega Man 4: Free of Charge download comes as an IPS patch file. There are free utilities out there like Floating IPS that can apply the patch file to a clean dump of a NES cartridge. This ROM hack is playable on original Nintendo Entertainment System hardware via a flashcart device, or it can be played by any common NES emulator like FCEUX or Nestopia.
One of the most annoying parts of Mega Man 4 (minus the difficulty) was the constant whir of the charge shot drowning out the brilliant soundtrack. With a patch like [Peter]’s this is no longer a going concern, and players are able to give their thumbs a bit of a break by not needing to continually hold down fire throughout a run. All welcomed changes aside, it still won’t change the fact that the Japanese TV commercial for the game is cooler than the print ads in the US.
These days, if you want to code a game for the original Nintendo Entertainment System, it’s about as easy as downloading an assembler, firing up Notepad, and running the ROMs you cook up in any one of a variety of emulators. In the 1980s none of those things existed, and the process was a little more complicated – as demonstrated by [Tyler Barnes] in the video embedded below.
[Tyler] has put together a 40-minute guide on what it takes to get to “Hello World” – or more accurately, a simple pink screen – on the NES, using period-correct hardware. He starts the process by formatting some floppy disks and whipping up some basic assembly code on an Apple IIe, which gets run through the Merlin assembler for the 6502. It’s particularly convenient as the Apple II line and the NES both run the same CPU. From there it’s a case of using a standalone EPROM programmer to verify some appropriately-datecoded chips are empty, before programming them in a special add-on card for the Apple II. From there, the EPROMs are loaded into a cart custom modified with chip sockets, where it can be inserted into a NES for testing.
It’s a tedious process, with just the programming side of things taking on the order of ten to twenty minutes with a few fiddly steps along the way. While there are likely some efficiency gains to be had that were used by studios back in the day, it remains clear that development in this era was a much slower process.
Rather than work with an original NES, [kevtris] chose to instead work with the NT Mini, an FPGA-based clone of his own design. Having picked up an EL640.480-AA1 screen, formerly from a DEK 265LT pick-and-place machine, he hunted down a data sheet and got to work. With the document outlining the required video input specifications, it was a simple matter of whipping up some Verilog and an adapter cable to get things working.
Mario, Kirby and friends can now run around, looking resplendent in the 9 colors of the red/green EL display. [kevtris] notes that the screen performs well with fast motion, and estimates the refresh rate to be in the vicinity of 60Hz. For those of you playing along at home, such screens are available online, though they’re not exactly cheap.
The Zelda series of games are known for their exciting gameplay, compelling story, but also their soundtracks. From fast-paced boss battles, to scenes of emotional turmoil, these tunes have been pumped out millions of Nintendo consoles over the years. [Tyler Barnes] has been a fan for a long time, and decided to produce a compilation of some of these tracks – delivering it on cartridge, of course.
The music was created using the Music Macro Language, and encoded into the NSF format ready to play on the Nintendo Entertainment System. [Tyler] has coded a menu system that allows the user to pick which tracks they wish to listen to. There’s some pretty parallax animations as well, along with an easter egg for those who know the games well enough to unlock it.
[Tyler] hopes to burn a few EEPROMs and send out some custom carts, either using donor carts or fresh builds. If you’re a fan of NES music but need your C64 fix as well, there’s a solution for that too. Video after the break.
The build uses a Spartan 6 from Xilinx, which [Jon] uses in the form of his own development board design. The NES core is courtesy of code by [Brian Bennett], sourced from Github. Games are loaded from an SD card by a Parallax Propeller, which passes the data to the FPGA over a serial connection. Display is on a sharp 800×480 LCD, with the 4:3 video output of the NES being displayed in a pillarboxed fashion.
The project is assembled on perfboard, with a pleasing handheld formfactor. Control is via tactile pushbuttons in the classic NES layout. Current draw is approximately 400 mA, giving a runtime of around 5 hours when running off four AA batteries.
Wheel of Fortune is a television game show, born in the distant year of 1975. Like many popular television properties of the era, it spawned a series of videogames on various platforms. Like many a hacker, [Chris] had been loading up the retro NES title on his Raspberry Pi when he realized that, due to the limitations of the cartridge format, he was playing the same puzzles over and over again. There was nothing for it, but to load a hex editor and get to work.
[Chris’s] initial investigation involved loading up the ROM in a hex editor and simply searching for ASCII strings of common puzzles in the game. Initial results were positive, turning up several scraps of plaintext. Eventually, it became apparent that the puzzles were stored in ASCII, but with certain most-significant-bits changed in order to mark the line breaks and ends of puzzles. [Chris] termed the format wheelscii, and developed an encoder that could turn new puzzles into the same format.
After some preliminary experimentation involving corrupting the puzzles and testing various edge cases, [Chris] decided to implement a complete fix. Puzzles were sourced from the Wheel of Fortune Puzzle Compendium, which should have plenty of fresh content for all but the most addicted viewers. A script was then created that would stuff 1000 fresh puzzles into the ROM at load time to minimize the chances of seeing duplicate puzzles.