Glossary: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
No edit summary
(→‎S: Changes 'sprite zero' to 'sprite 0' for consistency and thus searchability. Improves the definition.)
 
(32 intermediate revisions by 8 users not shown)
Line 1: Line 1:
These terms are commonly used in technical discussions about the Nintendo Entertainment System and Nintendo Family Computer.
These terms are commonly used in technical discussions about the Nintendo Entertainment System and Nintendo Family Computer.
Additional well-known computer science terms are listed at [[Before the basics]], and terms specific to integrated circuits are at [[Visual circuit tutorial#Terms]].


== 0 ==
== 0 ==
;10NES
;10NES
:The program running on the CIC.
:The program running on the [[CIC lockout chip|CIC]].
;60-pin
;60-pin
:Referring to Famicom cassettes. The Famicom and most famiclones for the Asian market use 60-pin cassettes, which have audio passthrough and no lockout chip.
:Referring to Famicom cassettes. The Famicom and most famiclones for the Asian market use 60-pin cassettes, which have audio passthrough and no lockout chip.
Line 18: Line 19:
;Attribute table
;Attribute table
:The 64-byte table of background tile attributes at the end of each of the four nametables.
:The 64-byte table of background tile attributes at the end of each of the four nametables.
;Audio Processing Unit ([[APU]])
:The hardware on the NES/Famicom that generates audio output.


== B ==
== B ==
;Background
;Background
:A grid of tiles (programmed using [[nametable]]s).
:A grid of tiles (programmed using [[nametable]]s).
;Backdrop
:Pixels which do not contain either an opaque background or opaque sprite pixel, which display either the color in entry 0 of palette RAM or the palette index inputted on the PPU's EXT pins (normally 0).
;Bank switching
;Bank switching
:The primary function of a mapper. Because the CPU and PPU don't have enough address space to see the entire ROM at once, the ROM is conceptually divided into "pages" or "banks", where the most significant bits of the ROM address are treated as a page number. The CPU writes a page number to the mapper's port, and the mapper puts this number on the most significant bits of the ROM address to make the selected page visible to the rest of the system. More advanced mappers have "fine-grained bank switching", which makes separate banks available in separate parts of the address space.
:The primary function of a mapper. Because the CPU and PPU don't have enough address space to see the entire ROM at once, the ROM is conceptually divided into "pages" or "banks", where the most significant bits of the ROM address are treated as a page number. The CPU writes a page number to the mapper's port, and the mapper puts this number on the most significant bits of the ROM address to make the selected page visible to the rest of the system. More advanced mappers have "fine-grained bank switching", which makes separate banks available in separate windows of the address space.
;Battery RAM
;Battery RAM
:RAM made nonvolatile by the addition of a battery backup circuit. This is used to let the player save progress in games with more than one chapter. Almost all battery RAM in NES games is PRG RAM; a couple games on very uncommon mappers have battery-backed CHR RAM.
:RAM made nonvolatile by the addition of a battery backup circuit. This is used to let the player save progress in games with more than one chapter. Almost all battery RAM in NES games is PRG RAM; a couple games on very uncommon mappers have battery-backed CHR RAM.
;BFT
:"BFT" in [[IRC|#nesdev]] does not stand for Big Fake/Fat/Freaking anyThing, Blunt Force Trauma, or aBout Freaking Time. It originated from what amounted to a [[wikipedia:Drinking_game#Arts|drinking game]] around the Broken Film Transition commonly used in the TV series ''[[wikipedia:MythBusters|MythBusters]]''. Its use might be politely explained as Break For subsTance.


== C ==
== C ==
Line 36: Line 39:
:#Japanese term corresponding to the term "Game Pak" used in other markets.
:#Japanese term corresponding to the term "Game Pak" used in other markets.
:#Philips [[wikipedia:Compact Cassette|Compact Cassette]], the magnetic tape storage medium for the [[wikipedia:Famicom Data Recorder|Famicom Data Recorder]] and for homemade mix tapes of NES game background music.
:#Philips [[wikipedia:Compact Cassette|Compact Cassette]], the magnetic tape storage medium for the [[wikipedia:Famicom Data Recorder|Famicom Data Recorder]] and for homemade mix tapes of NES game background music.
;CHR
;cel
:a frame of animation
;CGRAM (Color Generator RAM)
:Used by Nintendo to mean Palette RAM.
;CHR (character)
:Another word for pattern tables, after the traditional name [[wikipedia:character generator|character generator]] for a tiled background plane.
:Another word for pattern tables, after the traditional name [[wikipedia:character generator|character generator]] for a tiled background plane.
;CHR RAM
;CHR RAM
Line 42: Line 49:
;CHR ROM
;CHR ROM
:ROM in the cartridge which is connected to the PPU, normally mapped at $0000-$1FFF and holding pattern tables.
:ROM in the cartridge which is connected to the PPU, normally mapped at $0000-$1FFF and holding pattern tables.
;Checking Integrated Circuit (CIC)
;CIC (Checking Integrated Circuit)
:Nintendo's term for what the public knows better as the lockout chip.
:Nintendo's term for what the public knows better as the lockout chip.
;CIC clone
;CIC clone
Line 48: Line 55:
;CIC stun
;CIC stun
:Freezing the CIC by using a charge pump to pulse negative voltage on the data pins.
:Freezing the CIC by using a charge pump to pulse negative voltage on the data pins.
;CIRAM
;CIRAM (Console-Internal RAM)
:A 2048-byte SRAM in the NES, normally mapped at $2000-$2FFF on the PPU bus (subject to mirroring controlled by the Game Pak). Holds nametables and attribute tables.
:A 2 KiB SRAM in the NES, normally mapped at $2000-$3FFF on the PPU bus and used to hold nametables and attribute tables. The cartridge controls where and even if this is mapped. CIRAM may have originally stood for Character-Internal RAM, but this is rarely mapped in the pattern table region.
;Color Generator RAM (CGRAM)
;CL
:A 28-entry RAM inside the PPU, holding the palette.
:Used on PCBs to refer to solder jumpers that are connected by default and must be cut to disconnect them.
;Collision
:The coincidence or overlapping of two "objects" which may be made of background tiles, one or more sprites, or a combination of these.  Collision detection is done by the software since the Famicom/NES hardware has no collision detection circuitry.
;Control Deck
;Control Deck
:The console itself, into which the Game Pak is inserted and to which the controllers and outputs are connected.
:The console itself, into which the Game Pak is inserted and to which the controllers and outputs are connected.
Line 60: Line 69:
;Discrete logic
;Discrete logic
:Mapper logic involving standard digital logic ICs such as 74xx series.
:Mapper logic involving standard digital logic ICs such as 74xx series.
;Display list
:A set of data to be copied to video memory. On the NES, it is usual to prepare display lists for sprites and the background during draw time and copy them to video memory during vertical blank.
;DRAM
;DRAM
:Dynamic random access memory, or memory that needs to be periodically refreshed.
:Dynamic random access memory, or memory that needs to be periodically refreshed.
;Draw time
:Time outside vertical blanking, when the PPU is busy drawing the picture.
;Duty cycle
;Duty cycle
:The fraction of a cycle a signal stays high. For example, most input clock signals have a duty cycle of 50%. The [[APU_Pulse|pulse channels]] in the APU have a variable duty cycle.
:The fraction of a cycle a signal stays high. For example, most input clock signals have a duty cycle of 50%. The [[APU_Pulse|pulse channels]] in the APU have a variable duty cycle.
Line 75: Line 88:
:The Japanese version of the NTSC NES, with a few minor hardware differences.
:The Japanese version of the NTSC NES, with a few minor hardware differences.
;Fixed bank
;Fixed bank
:A part of address space that points to ROM and is unaffected by bank switching. Often used to store interrupt handlers, code that accesses large amounts of data spread across several banks, or anything else that must always be available. Several mappers put a fixed bank at $C000-$FFFF or $E000-$FFFF. Mappers that use outer bank switching will have a separate fixed bank for each outer bank.
:A window of address space that always points to the same bank, or the bank that appears in this window. Because a fixed bank is unaffected by bank switching. Often used to store interrupt handlers, code that accesses large amounts of data spread across several banks, or anything else that must always be available. Several mappers fix the last bank of the PRG ROM at $C000-$FFFF or $E000-$FFFF. Mappers that use outer bank switching will have a separate fixed bank for each outer bank.
;Flip
;Flip
:Reflection of an image. For example, a "vertical flip" turns an M into a W as the pixels move vertically across a horizontal axis.
:Reflection of an image. For example, a "vertical flip" turns an M into a W as the pixels move vertically across a horizontal axis.
;Forced blanking
;Forced blanking
:Turning off the rendering circuitry by writing zero to [[PPU registers|$2001]], giving the CPU the same access to VRAM through the PPU ports that the CPU normally has during vertical blanking.
:Turning off the rendering circuitry by writing zero to [[PPU registers|$2001]]. When bits 4 and 3 of this port are both clear (<code>xxx00xxx</code>), the CPU can access VRAM through the PPU ports outside the vertical blanking period.
;Front-loader
;Front-loader
:NES-001, the original version of the 72-pin NES. It uses a pseudo-ZIF socket for Game Paks.
:NES-001, the original version of the 72-pin NES. It uses a pseudo-ZIF socket for Game Paks.
;Four screen
:A mapping of cartridge memory to the PPU bus that expands the memory available for nametables to 4K, thus allowing four distinct nametables.


== G ==
== G ==
;Game Genie
;[[Game Genie]]
:A lock-on unit developed by Codemasters and distributed by Galoob that patches NES games with user-entered single-byte changes.
:A lock-on unit developed by Codemasters and distributed by Galoob that patches NES games with user-entered single-byte changes.
;Game Pak
;Game Pak
Line 90: Line 105:
;[[wikipedia:Code golf|Golf]]
;[[wikipedia:Code golf|Golf]]
:Aggressive micro-optimization of a program for speed or size, often as a friendly competition to produce the fastest or smallest version of a particular routine. Compare the concept of "frame wars" in the tool-assisted speedrun community. In practice, [[wikipedia:Premature optimization|golf is far less necessary]] on the NES than on the Atari 2600 except in a few cases. These include squeezing 17K of code into 16K for an [[NROM]]-128 release, squeezing a routine into a ROM hack of an already tightly packed game such as ''Super Mario Bros.'', getting a routine to finish in one frame or one vertical blank, or producing a code library used by other programs that have a similar reason to be space or time efficient.
:Aggressive micro-optimization of a program for speed or size, often as a friendly competition to produce the fastest or smallest version of a particular routine. Compare the concept of "frame wars" in the tool-assisted speedrun community. In practice, [[wikipedia:Premature optimization|golf is far less necessary]] on the NES than on the Atari 2600 except in a few cases. These include squeezing 17K of code into 16K for an [[NROM]]-128 release, squeezing a routine into a ROM hack of an already tightly packed game such as ''Super Mario Bros.'', getting a routine to finish in one frame or one vertical blank, or producing a code library used by other programs that have a similar reason to be space or time efficient.
== I ==
;IRQ (Interrupt Request)
:A maskable hardware interrupt. Used most often by external hardware to do split-screen scrolling or to trigger events (like disk-loading on the Famicom Disk System or ending a game on the NES-EVENT boards).


== L ==
== L ==
Line 111: Line 130:
:A block of tile numbers written to the background as a unit. These blocks, often 2x2 tiles (16x16 pixels) in size, are common building blocks for area maps in NES games.
:A block of tile numbers written to the background as a unit. These blocks, often 2x2 tiles (16x16 pixels) in size, are common building blocks for area maps in NES games.
;[[Mirroring]]
;[[Mirroring]]
:Presence of one memory area at more than one place in the memory map.
:Presence of one memory area at more than one place in the memory map.  In the PPU memory, mirroring is used in the nametables to repeat the screen horizontally or vertically, thus the distinguishing terms "horizontal mirroring" and "vertical mirroring" are used.
;[[Multicart]]
:A cartridge containing several otherwise unrelated programs.


== N ==
== N ==
Line 117: Line 138:
:Any of four areas in VRAM (PPU addresses $2000-$23FF, $2400-$27FF, $2800-$2BFF, $2C00-$2FFF) specifying which tiles to display at which places in the background. Each is 32 by 30 tiles and ends with an attribute table.
:Any of four areas in VRAM (PPU addresses $2000-$23FF, $2400-$27FF, $2800-$2BFF, $2C00-$2FFF) specifying which tiles to display at which places in the background. Each is 32 by 30 tiles and ends with an attribute table.
;NMI
;NMI
:Non maskable interrupt. Used in NES/Famicom for vertical blank.
:Non-maskable interrupt. Used in NES/Famicom for vertical blank.


== O ==
== O ==
;Object Attribute Memory (OAM)
;[[PPU OAM|Object Attribute Memory (OAM)]]
:A 256-byte DRAM inside the PPU holding the sprite display list.
:A 256-byte DRAM inside the PPU holding the sprite display list.
;[[Open bus]]
:A data bus that repeats the last read value when no memory or I/O circuit responds to a particular address.
;Outer bank
:A large bank that encompasses a complete set of smaller banks. A mapper supporting an outer bank has one set of ports for "normal" bank switching and a second set of ports that switches higher address lines to make completely separate programs appear. It usually even switches otherwise fixed banks. Used most commonly in multicarts.


== P ==
== P ==
;Palette
;Palette
:A color lookup table.
:A color lookup table.
;Palette RAM
:A 28-entry RAM inside the PPU specifying the colors used by the eight 4-color palettes.
;Pattern table
;Pattern table
:Two 4096 byte areas of video memory, mapped at PPU $0000-$0FFF and $1000-$1FFF. Each contains 256 tiles.
:Two 4096 byte areas of video memory, mapped at PPU $0000-$0FFF and $1000-$1FFF. Each contains 256 tiles.
Line 134: Line 161:
;Port
;Port
:An address mapped to input or output instead of ROM or RAM.
:An address mapped to input or output instead of ROM or RAM.
;PRG
;PRG (program)
:Memory on the CPU's bus. Short for "program".
:Memory in the cartridge on the CPU bus.
;PRG RAM
;PRG RAM
:RAM on the CPU's bus.
:RAM in the cartridge on the CPU bus, in contrast to the internal RAM at $0000-$07FF which is usually called main RAM, system RAM, or just RAM. With few exceptions, PRG RAM is located at $6000-$7FFF and decoded with the equivalent of [[PRG RAM circuit|a circuit like this]] inside the mapper.
;PRG ROM
;PRG ROM
:ROM on the CPU's bus, containing a program to be executed and data for the program to use. In games using CHR RAM, it may also contain data to be copied to CHR RAM.
:ROM on the CPU's bus, containing a program to be executed and data for the program to use. In games using CHR RAM, it may also contain data to be copied to CHR RAM.
;Priority
;Priority
:Which graphics appear in front of other graphics. In general, sprites earlier in OAM appear in front of later sprites, and a sprite may appear in front of or behind the background.
:Which graphics appear in front of other graphics. In general, sprites earlier in OAM appear in front of later sprites, and a sprite may appear in front of or behind the background.
;Proportional font
:A font whose glyphs (character pictures) have different widths. These can fit more text onto the screen than the more common monospace (fixed-width) fonts but are rarely used on NES because of the processing overhead involved with drawing each line of text.


== R ==
== R ==
;Raster
:A horizontal line of the output picture. (Also: scanline)
;Ratchet scrolling
:Scrolling that is only allowed by the game engine to occur in one direction. ''Super Mario Bros.'' is a famous example of this.
;Rendering
:The video memory access and processing done by the PPU to produce a video signal. Rendering is enabled through bits 3 and 4 of $2001; disabling it is called forced blanking. Rendering is in progress if it is enabled and the PPU is not in vertical blanking.
;Right pattern table
;Right pattern table
:The pattern table at PPU $1000-$1FFF. So-called due to display conventions in debugging emulators.
:The pattern table at PPU $1000-$1FFF. So-called due to display conventions in debugging emulators.


== S ==
== S ==
;Scanline
:A horizontal line of the output picture. (Also: raster)
;[[PPU scrolling|Scrolling]]
;[[PPU scrolling|Scrolling]]
:Movement of the visible portion of a background.
:Movement of the visible portion of a background.
;SL
:Used on PCBs to refer to solder jumpers that are not connected by default and must be soldered to connect them.
;Sliver
:An 8x1-pixel section of a tile. The PPU operates by fetching 2-byte slivers from pattern tables and passing them through shift registers.
;[[wikipedia:Busy waiting|Spin]]
;[[wikipedia:Busy waiting|Spin]]
:To repeatedly read a particular address in a loop until its value changes. A program can spin on an input port or on a RAM address that is modified by an interrupt handler.
:To repeatedly read a particular address in a loop until its value changes. A program can spin on an input port or on a RAM address that is modified by an interrupt handler.
;Sprite
;Sprite
:An entry of 4 bytes in OAM, controlling a small block of 8x8 pixels that can be moved around on the screen. It has X and Y coordinates, a tile index into one of the pattern tables, vertical and horizontal flip switches, and priority.
:An entry of 4 bytes in OAM, controlling a small block of 8x8 pixels that can be moved around on the screen. It has X and Y coordinates, a tile index into one of the pattern tables, vertical and horizontal flip switches, and priority.
;Sprite 0 hit
:A PPU feature that performs pixel-perfect collision detection between sprite 0 and the background. When a non-transparent pixel of the first sprite in OAM overlaps a non-transparent pixel of the background, bit 6 ($40) of PPU register $2002 is set to 1. This is commonly used to provide timing for split-screen scrolling when the cartridge doesn't have some kind of IRQ.
;Sprite limit
;Sprite limit
:The room size in secondary OAM, holding a maximum of 8 sprites, or 32 bytes.
:The PPU cannot render more than eight sprite slivers on one scanline. Sprites beyond the eighth will drop out.
;Sprite zero hit
:A non-transparent sprite (pixel) at OAM[0] overlaps a non-transparent background pixel, setting up bit $40 of PPU register $2002.
;SRAM
;SRAM
:[[wikipedia:Static random access memory|Static random access memory]] is memory made with latches, which does not need to be refreshed but takes four to six times as much die space as DRAM. PRG RAM and CHR RAM are generally SRAM. Occasionally, it stands for "save RAM", which means the same as battery RAM.
:[[wikipedia:Static random access memory|Static random access memory]] is memory made with latches, which does not need to be refreshed but takes four to six times as much die space as DRAM. PRG RAM and CHR RAM are generally SRAM. Occasionally, it stands for "save RAM", which means the same as battery RAM.
Line 180: Line 221:


== V ==
== V ==
;Variable-width font (VWF)
:Synonym for proportional font.
;Vector
;Vector
:One of three addresses at the end of the [[CPU memory map]], telling the CPU where to start executing instructions after an [[CPU interrupts|interrupt]] is asserted.
:One of three addresses at the end of the [[CPU memory map]], telling the CPU where to start executing instructions after an [[CPU interrupts|interrupt]] is asserted.
Line 185: Line 228:
:The interval between video frames.
:The interval between video frames.
;VRAM
;VRAM
:Video RAM. This is a generic term which encompasses CHR-RAM and memory for Name Table and Palettes.
:Video RAM. This is a generic term for the PPU bus which encompasses memory for pattern tables, nametables, attributes tables, and palettes.


== W ==
== W ==
;Window
:A set of contiguous CPU or PPU addresses mapped to a particular bank of memory.
;Work RAM, WRAM
;Work RAM, WRAM
:See PRG RAM.
:See PRG RAM.

Latest revision as of 06:29, 13 April 2023

These terms are commonly used in technical discussions about the Nintendo Entertainment System and Nintendo Family Computer. Additional well-known computer science terms are listed at Before the basics, and terms specific to integrated circuits are at Visual circuit tutorial#Terms.

0

10NES
The program running on the CIC.
60-pin
Referring to Famicom cassettes. The Famicom and most famiclones for the Asian market use 60-pin cassettes, which have audio passthrough and no lockout chip.
72-pin
Referring to NES Game Paks. The NES and most famiclones for the North American and European markets use 72-pin Game Paks, which have expansion port passthrough and a different lockout chip for each market.

A

Address decoding
Translation of addresses on the console's address buses into chip enables and addresses for the various ROMs and RAMs in the cartridge. In most cartridges, this involves some form of bank switching.
ASIC
Application specific integrated circuit. Used with mappers involving complicated logic that the IC chip is made specific to this purpose.
Attribute
A part of video memory that selects which part of the palette is used for a given sprite or area of the background.
Attribute table
The 64-byte table of background tile attributes at the end of each of the four nametables.
Audio Processing Unit (APU)
The hardware on the NES/Famicom that generates audio output.

B

Background
A grid of tiles (programmed using nametables).
Backdrop
Pixels which do not contain either an opaque background or opaque sprite pixel, which display either the color in entry 0 of palette RAM or the palette index inputted on the PPU's EXT pins (normally 0).
Bank switching
The primary function of a mapper. Because the CPU and PPU don't have enough address space to see the entire ROM at once, the ROM is conceptually divided into "pages" or "banks", where the most significant bits of the ROM address are treated as a page number. The CPU writes a page number to the mapper's port, and the mapper puts this number on the most significant bits of the ROM address to make the selected page visible to the rest of the system. More advanced mappers have "fine-grained bank switching", which makes separate banks available in separate windows of the address space.
Battery RAM
RAM made nonvolatile by the addition of a battery backup circuit. This is used to let the player save progress in games with more than one chapter. Almost all battery RAM in NES games is PRG RAM; a couple games on very uncommon mappers have battery-backed CHR RAM.

C

Camera
Abstraction for the part of a world that is displayed on the screen. The illusion of a moving camera is created by scrolling the background and moving all the sprites at once.
Cassette
  1. Japanese term corresponding to the term "Game Pak" used in other markets.
  2. Philips Compact Cassette, the magnetic tape storage medium for the Famicom Data Recorder and for homemade mix tapes of NES game background music.
cel
a frame of animation
CGRAM (Color Generator RAM)
Used by Nintendo to mean Palette RAM.
CHR (character)
Another word for pattern tables, after the traditional name character generator for a tiled background plane.
CHR RAM
An SRAM on the cartridge, usually 8192 bytes, normally mapped at $0000-$1FFF and holding pattern tables.
CHR ROM
ROM in the cartridge which is connected to the PPU, normally mapped at $0000-$1FFF and holding pattern tables.
CIC (Checking Integrated Circuit)
Nintendo's term for what the public knows better as the lockout chip.
CIC clone
A microcontroller generating the same pseudorandom stream as the authentic CIC. Examples include Tengen's Rabbit and Kevin Horton's CIClone.
CIC stun
Freezing the CIC by using a charge pump to pulse negative voltage on the data pins.
CIRAM (Console-Internal RAM)
A 2 KiB SRAM in the NES, normally mapped at $2000-$3FFF on the PPU bus and used to hold nametables and attribute tables. The cartridge controls where and even if this is mapped. CIRAM may have originally stood for Character-Internal RAM, but this is rarely mapped in the pattern table region.
CL
Used on PCBs to refer to solder jumpers that are connected by default and must be cut to disconnect them.
Collision
The coincidence or overlapping of two "objects" which may be made of background tiles, one or more sprites, or a combination of these. Collision detection is done by the software since the Famicom/NES hardware has no collision detection circuitry.
Control Deck
The console itself, into which the Game Pak is inserted and to which the controllers and outputs are connected.

D

Dendy
Russian clone of Famicom using PAL signals but using timings to allow NTSC games to run.
Discrete logic
Mapper logic involving standard digital logic ICs such as 74xx series.
Display list
A set of data to be copied to video memory. On the NES, it is usual to prepare display lists for sprites and the background during draw time and copy them to video memory during vertical blank.
DRAM
Dynamic random access memory, or memory that needs to be periodically refreshed.
Draw time
Time outside vertical blanking, when the PPU is busy drawing the picture.
Duty cycle
The fraction of a cycle a signal stays high. For example, most input clock signals have a duty cycle of 50%. The pulse channels in the APU have a variable duty cycle.

E

Expansion audio
Extra audio in the cartridge in a few games, used in Famicom only, not in NES.

F

Famiclone
A third-party clone of the NES or Famicom hardware. A few units have swapped APU duty cycles, as 12.5, 50, 25 and 25 negated instead.
Family Computer, Famicom, FC
The Japanese version of the NTSC NES, with a few minor hardware differences.
Fixed bank
A window of address space that always points to the same bank, or the bank that appears in this window. Because a fixed bank is unaffected by bank switching. Often used to store interrupt handlers, code that accesses large amounts of data spread across several banks, or anything else that must always be available. Several mappers fix the last bank of the PRG ROM at $C000-$FFFF or $E000-$FFFF. Mappers that use outer bank switching will have a separate fixed bank for each outer bank.
Flip
Reflection of an image. For example, a "vertical flip" turns an M into a W as the pixels move vertically across a horizontal axis.
Forced blanking
Turning off the rendering circuitry by writing zero to $2001. When bits 4 and 3 of this port are both clear (xxx00xxx), the CPU can access VRAM through the PPU ports outside the vertical blanking period.
Front-loader
NES-001, the original version of the 72-pin NES. It uses a pseudo-ZIF socket for Game Paks.
Four screen
A mapping of cartridge memory to the PPU bus that expands the memory available for nametables to 4K, thus allowing four distinct nametables.

G

Game Genie
A lock-on unit developed by Codemasters and distributed by Galoob that patches NES games with user-entered single-byte changes.
Game Pak
A cartridge for a Nintendo console. It contains ROMs, mappers, and possibly other circuitry.
Golf
Aggressive micro-optimization of a program for speed or size, often as a friendly competition to produce the fastest or smallest version of a particular routine. Compare the concept of "frame wars" in the tool-assisted speedrun community. In practice, golf is far less necessary on the NES than on the Atari 2600 except in a few cases. These include squeezing 17K of code into 16K for an NROM-128 release, squeezing a routine into a ROM hack of an already tightly packed game such as Super Mario Bros., getting a routine to finish in one frame or one vertical blank, or producing a code library used by other programs that have a similar reason to be space or time efficient.

I

IRQ (Interrupt Request)
A maskable hardware interrupt. Used most often by external hardware to do split-screen scrolling or to trigger events (like disk-loading on the Famicom Disk System or ending a game on the NES-EVENT boards).

L

Left pattern table
The pattern table at PPU $0000-$0FFF. So-called due to display conventions in debugging emulators.
Lock-on
Referring to a cartridge with two connectors: one to connect to the console and another to connect to another cartridge to use its CIC and/or to modify its program.
Lockout chip
Nintendo's scheme used in the front-loading NES to block the use of infringing copies of its games and to reassure retailers that the NES wouldn't have the flood of low-quality games seen on second-generation consoles. Nintendo was successfully sued in antitrust court over this and other practices. It consists of two 4-bit CIC microcontrollers, one in the Control Deck and one in each Game Pak, passing a stream of pseudorandom numbers back and forth.
Lockout defeat
Various ways of getting a program to run without an authentic CIC. These include CIC clone and CIC stun.

M

Mapper
Circuitry on the Game Pak to perform address decoding and counting.
Mapper hack
A patch to a ROM that uses one mapper to make it work with a different kind of mapper.
Memory Management Controller (MMC)
Name for ASIC mappers made by Nintendo.
Metatile
A block of tile numbers written to the background as a unit. These blocks, often 2x2 tiles (16x16 pixels) in size, are common building blocks for area maps in NES games.
Mirroring
Presence of one memory area at more than one place in the memory map. In the PPU memory, mirroring is used in the nametables to repeat the screen horizontally or vertically, thus the distinguishing terms "horizontal mirroring" and "vertical mirroring" are used.
Multicart
A cartridge containing several otherwise unrelated programs.

N

Nametable
Any of four areas in VRAM (PPU addresses $2000-$23FF, $2400-$27FF, $2800-$2BFF, $2C00-$2FFF) specifying which tiles to display at which places in the background. Each is 32 by 30 tiles and ends with an attribute table.
NMI
Non-maskable interrupt. Used in NES/Famicom for vertical blank.

O

Object Attribute Memory (OAM)
A 256-byte DRAM inside the PPU holding the sprite display list.
Open bus
A data bus that repeats the last read value when no memory or I/O circuit responds to a particular address.
Outer bank
A large bank that encompasses a complete set of smaller banks. A mapper supporting an outer bank has one set of ports for "normal" bank switching and a second set of ports that switches higher address lines to make completely separate programs appear. It usually even switches otherwise fixed banks. Used most commonly in multicarts.

P

Palette
A color lookup table.
Palette RAM
A 28-entry RAM inside the PPU specifying the colors used by the eight 4-color palettes.
Pattern table
Two 4096 byte areas of video memory, mapped at PPU $0000-$0FFF and $1000-$1FFF. Each contains 256 tiles.
Picture Processing Unit (PPU)
It generates the video signal.
Piggyback
Synonym for lock-on used by Home Entertainment Suppliers (HES).
Port
An address mapped to input or output instead of ROM or RAM.
PRG (program)
Memory in the cartridge on the CPU bus.
PRG RAM
RAM in the cartridge on the CPU bus, in contrast to the internal RAM at $0000-$07FF which is usually called main RAM, system RAM, or just RAM. With few exceptions, PRG RAM is located at $6000-$7FFF and decoded with the equivalent of a circuit like this inside the mapper.
PRG ROM
ROM on the CPU's bus, containing a program to be executed and data for the program to use. In games using CHR RAM, it may also contain data to be copied to CHR RAM.
Priority
Which graphics appear in front of other graphics. In general, sprites earlier in OAM appear in front of later sprites, and a sprite may appear in front of or behind the background.
Proportional font
A font whose glyphs (character pictures) have different widths. These can fit more text onto the screen than the more common monospace (fixed-width) fonts but are rarely used on NES because of the processing overhead involved with drawing each line of text.

R

Raster
A horizontal line of the output picture. (Also: scanline)
Ratchet scrolling
Scrolling that is only allowed by the game engine to occur in one direction. Super Mario Bros. is a famous example of this.
Rendering
The video memory access and processing done by the PPU to produce a video signal. Rendering is enabled through bits 3 and 4 of $2001; disabling it is called forced blanking. Rendering is in progress if it is enabled and the PPU is not in vertical blanking.
Right pattern table
The pattern table at PPU $1000-$1FFF. So-called due to display conventions in debugging emulators.

S

Scanline
A horizontal line of the output picture. (Also: raster)
Scrolling
Movement of the visible portion of a background.
SL
Used on PCBs to refer to solder jumpers that are not connected by default and must be soldered to connect them.
Sliver
An 8x1-pixel section of a tile. The PPU operates by fetching 2-byte slivers from pattern tables and passing them through shift registers.
Spin
To repeatedly read a particular address in a loop until its value changes. A program can spin on an input port or on a RAM address that is modified by an interrupt handler.
Sprite
An entry of 4 bytes in OAM, controlling a small block of 8x8 pixels that can be moved around on the screen. It has X and Y coordinates, a tile index into one of the pattern tables, vertical and horizontal flip switches, and priority.
Sprite 0 hit
A PPU feature that performs pixel-perfect collision detection between sprite 0 and the background. When a non-transparent pixel of the first sprite in OAM overlaps a non-transparent pixel of the background, bit 6 ($40) of PPU register $2002 is set to 1. This is commonly used to provide timing for split-screen scrolling when the cartridge doesn't have some kind of IRQ.
Sprite limit
The PPU cannot render more than eight sprite slivers on one scanline. Sprites beyond the eighth will drop out.
SRAM
Static random access memory is memory made with latches, which does not need to be refreshed but takes four to six times as much die space as DRAM. PRG RAM and CHR RAM are generally SRAM. Occasionally, it stands for "save RAM", which means the same as battery RAM.
Stack
An area of memory used to store values in last-in, first-out (LIFO) manner, especially the area at $0100-$01FF used to store return addresses when a subroutine is called.
Strobe
A signal that defines sampling points for another signal. Think of a strobe light that captures the state of whatever it's shining on when it's on to get the analogy.

T

Tile
An 8x8 pixel piece of graphics. Tile data on the NES has 2 bits per pixel, and each pixel in a tile can have one of three colors or transparency.
Top-loader
NES-101, a 72-pin console released during the end of the NES's commercial era that takes cartridges in the top, like most other consoles. It has no lockout chip.
Trainer
In video games, a trainer is a patch to add a cheat menu. In iNES, a "trainer" is an extra 512-byte segment of PRG ROM that can be used by a ROM image that has had a trainer added but is more commonly used by support routines used by mapper hacks for obsolete floppy-disk-based copiers.
Transparent
In the case of overlapping graphics, a transparent pixel means that pixels from the graphics behind this graphic show through.

U

Unlicensed
Referring to video games for the NES published outside of a contract with Nintendo. Most of these use a lockout defeat; a few use lock-on.

V

Variable-width font (VWF)
Synonym for proportional font.
Vector
One of three addresses at the end of the CPU memory map, telling the CPU where to start executing instructions after an interrupt is asserted.
Vertical blank
The interval between video frames.
VRAM
Video RAM. This is a generic term for the PPU bus which encompasses memory for pattern tables, nametables, attributes tables, and palettes.

W

Window
A set of contiguous CPU or PPU addresses mapped to a particular bank of memory.
Work RAM, WRAM
See PRG RAM.

Z

Zapper
The light gun for NES.