The Nintendo Entertainment System Gets Commodore 64 Compatibility in the NES 64 Port Project
Pseudonymous retrocomputing enthusiast "MrCalcwatch" has blended two vintage gaming fandoms by porting ROMs from the Commodore 64 to the Nintendo Entertainment System (NES) — creating a "(mostly) working" hybrid.
"A few years ago, I got the crazy idea to try porting the Commodore 64 KERNAL and BASIC ROMs to the NES, since their CPUs are mostly the same," MrCalcwatch explains. "But I gave up when things got complicated with the PPU [Picture Processing Unit]. Then a couple weeks ago, I saw that someone ported it to the Atari 1200XL, so I decided I'd give it another shot. This time, I was able to make a (mostly) working system."
MrCalcwatch's burst of inspiration came courtesy of earlier work to port the Commodore 64's KERNAL — a historical misspelling of "kernel" that stuck — and BASIC ROM to rival Atari's contemporaneous hardware. Nick Bensema's efforts at porting the pair to the Atari 800XL were successful — and now so is MrCalcwatch's NES port.
"I can't test it on hardware," MrCalcwatch admits, "but it seems fine in emulation. The KERNAL and BASIC ROM are 8kB each, so I put them in the last two banks ($C000-$FFFF), and filled the other banks with PRG RAM ($6000-$BFFF). The first byte of OS RAM is reserved, and the rest is available to BASIC. Hence the '24,575 bytes free' in the splash screen."
To prove the port, MrCalcwatch has released several videos: The first shows the system booting up and running BASIC; the second runs a simple maze generator in BASIC; the third calls a machine-language subroutine; and the final demonstration writes to the NES' audio processor to play a simple musical scale.
More details on the project are available on the nesdev.com forum.