BGNG
New member
Oh, what the hey? There's a Chip8 and Game Boy topic, why not NES?
Let's see... A few good resources (I've attatched them to this post) for NES emulator programming would be YOSHi's NES TECH document and Firebug's Mappers document (for the expansion modules). Also in that ZIP is documentation on the NMOS 6502 Assembly.
The NES runs on, as just mentioned, a custom NMOS 6502 microprocessor modified for use on the NES by integrating sound generation and assorted I/O registers, which was manufactured by Ricoh and is called RP2A03G. It's approx. 1.773MHz for PAL and 1.790MHz for NTSC.
The NES has a couple of memory modules inaccessible directly by the processor. These would include the PPU memory and Sprite memory, which must be indirectly written to and read from by using registers $2003 & $2004, and $2006 & $2007, which is described in the tech document.
The video system itself is a 256×240-pixel display and is composed of two major parts: the background and the sprites. Both of these use image data from the same place in PPU memory called the Pattern Table. The Pattern Table consists of 8×8-pixel tile data, two bits per pixel. The background has a confusing structure. The lower two bits of the background color is its pattern map, called the Name Table. The upper two bits of the background come from the Attribute Table, which describes the colors for a 4×4-tile square on the screen in a method I will not describe in this post.
By default, mirroring is applied to the Name Tables to allow for wrapping when memory is read from them, but expansion modules can be used to give the NES up to 4 Name/Attribute tables.
The Sprites have a few functions to them which allow them to be flipped horizonally and vertically, and the upper two color bits of the sprites are stored in sprite memory themselves.
The NES has two color palets of 16 colors each; one for Background and one for Sprites. There are 52 different colors these can be, the exact values of which are predefined in the NES (and varry for NTSC and PAL slightly)
__________
Meh. I'll stop there for now. If there's any interest, I'll say more.
Let's see... A few good resources (I've attatched them to this post) for NES emulator programming would be YOSHi's NES TECH document and Firebug's Mappers document (for the expansion modules). Also in that ZIP is documentation on the NMOS 6502 Assembly.
The NES runs on, as just mentioned, a custom NMOS 6502 microprocessor modified for use on the NES by integrating sound generation and assorted I/O registers, which was manufactured by Ricoh and is called RP2A03G. It's approx. 1.773MHz for PAL and 1.790MHz for NTSC.
The NES has a couple of memory modules inaccessible directly by the processor. These would include the PPU memory and Sprite memory, which must be indirectly written to and read from by using registers $2003 & $2004, and $2006 & $2007, which is described in the tech document.
The video system itself is a 256×240-pixel display and is composed of two major parts: the background and the sprites. Both of these use image data from the same place in PPU memory called the Pattern Table. The Pattern Table consists of 8×8-pixel tile data, two bits per pixel. The background has a confusing structure. The lower two bits of the background color is its pattern map, called the Name Table. The upper two bits of the background come from the Attribute Table, which describes the colors for a 4×4-tile square on the screen in a method I will not describe in this post.
By default, mirroring is applied to the Name Tables to allow for wrapping when memory is read from them, but expansion modules can be used to give the NES up to 4 Name/Attribute tables.
The Sprites have a few functions to them which allow them to be flipped horizonally and vertically, and the upper two color bits of the sprites are stored in sprite memory themselves.
The NES has two color palets of 16 colors each; one for Background and one for Sprites. There are 52 different colors these can be, the exact values of which are predefined in the NES (and varry for NTSC and PAL slightly)
__________
Meh. I'll stop there for now. If there's any interest, I'll say more.