NES information
The system stats come from rec.games.video.misc:
|Bits (CPU)| 8
|Bits (Gx) | 8
|CPU | 6502
|MHz | 1.8
|Graphics | 256 x 240
|Planes | 1
|Colors | 16/52
|Sprites | 8
| - size | 8 x 8
|Audio | mono
|RAM | 2K+ 2Kgx
The CPU ROM area holds 32K at a time, starting at $8000. The data itself, however, is divided into 16K pages. Also, the NES Genie's codes begin at $0000. (Every other system's Genie uses the direct CPU address)
The NES has three main registers: A (accumulator), X (index), and Y (index). All are 8 bit. There are also a number of lesser registers (program counter, status bits, etc.) and a 256 byte stack. Finally, there is a large number of "registers" (actually protected locations in memory) used to communicate with hardware.
Yoshi's NES documentation (available in the file section) reveals this amusing factoid:
The 6502 has a bug in opcode $6C (jump absolute indirect). The CPU does not correctly calculate the effective address if the low-byte is $FF.
Example:
C100: 4F
C1FF: 00
C200: 23
..
D000: 6C FF C1 - JMP ($C1FF)
Logically, this will jump to address $2300. However, due to the fact that the high-byte of the calculate address is *NOT* increased on a page-wrap, this will actually jump to $4F00. It should be noted that page wrapping does *NOT* occur in indexed-indirect addressing modes. Due to limitations of zero-page, all indexed-indirect read/writes should apply a logical AND #$FF to the effective address after calculation. Example:
C000: LDX #3 ; Reads indirect address from $0002+$0003,
C002: LDA ($FF,X) ; not $0102+$0103.
In other words, look before you leap.