NES programming: a metanode

(Metanodes should not be namespaced and don't have to be lists. Your radical ideas about metanodes have already occurred to others.)

In 1985, Nintendo released the Nintendo Entertainment System (NES), an 8-bit game console. It was a slight revision of the Famicom console Nintendo had previously released in Japan. It had a 2A03 CPU that used 6502 instructions familiar to Apple II and Commodore 64 asm coders with 22 extra registers for sound and I/O. A custom PPU could display up to 25 simultaneous colors (or more). It only had 4 KB of RAM and could only see 32 KB of program ROM and 8 KB of graphics tile ROM at once, but mapper hardware such as 74LS161 chips on CNROM and UNROM boards and the MMC1 and MMC3 ASICs could "turn the pages" of the ROM and expand the capabilities of the system.

The system wasn't without its limitations, but developers found clever ways to push them. Because the 2A03 had no multiply instruction, you had to use a lookup table to multiply numbers. Unless you were careful, your sprites would flicker or (worse) drop out completely. You had to split one sound channel between two instruments or vice-versa to get your music to sound good. It was too easy to fall into a cliché design flaw.

But because by now you've read the linked writeups and are an NES developer, you're not subject to the special copyright on ROM chips that keeps casual users from backing up their game software. So go forth and make games like Sokoban and GNOME vs KDE, but PLEASE do not test them on NESticle; use FCE Ultra instead.

These noders think NES coding is cool: --OutpostMir--, anotherone, dg, JayBonci, mcc, sabby, tftv256, WonkoDSane, WWWWolf

Log in or registerto write something here or to contact authors.