What you will learn in Classic Game Programming on the NES: Make your own retro video game
Make your own retro video game
Chapter by chapter
Concepts explained in this book
- absolute addressingAn addressing mode that identifies an instruction operand by its full memory address.
- absolute indexed addressing modeAbsolute indexed addressing mode forms an operand address by adding an X or Y register value to a full memory address.
- zero-page indexed addressing modeZero-page indexed addressing mode forms an operand address by adding an X or Y register value to a zero-page address.
- zero-page indirect-X addressing modeZero-page indirect-X addressing mode adds the X register to a zero-page offset before reading the resulting 16-bit indirect address.
- zero-page indirect-Y addressing modeZero-page indirect-Y addressing mode reads a 16-bit base address from zero-page memory and adds the Y register to obtain the final operand address.
- zero-page memoryZero-page memory is the first 256 bytes of 6502 address space, whose locations can be specified with a one-byte address.
- pattern tableGraphical data describing the pixels or appearance of a movable game object.
- memory modeAn addressing mode is an assembly-language rule that determines how an instruction identifies its operand or memory location.
- animationAnimation is the presentation of changing visual states over time to create motion or visual activity in a game.
- collision detectionCollision detection is the technique of determining when game entities occupy intersecting or otherwise interacting spatial regions.
- Nintendo Entertainment SystemThe Nintendo Entertainment System (NES) is an 8-bit home video game console released by Nintendo in North America in 1985.
- accumulator registerThe accumulator register, or A register, is the 6502 CPU register used as a primary operand for arithmetic, logical, comparison, and data-transfer instructions.
- zero-page addressing modeZero-page addressing mode identifies an operand in the first 256 bytes of memory using a one-byte address.
- lifeA life is one remaining opportunity for the player to continue a game session after failure or destruction.
- spriteA movable or independently displayed game graphic that appears in front of or behind background tiles.
- sound effectA sound effect is a short audio event played to represent an action, event, or response in a game.
- nmi handlerA program segment that executes in response to a processor interrupt.
- color paletteA graphics palette is a set of color values available for rendering graphical content.
- gpu video memoryVideo memory (VRAM) is memory accessed by graphics hardware to store data needed to generate a display.
- immediate valueAn immediate value is a constant operand encoded directly in an assembly instruction rather than read from a memory address.
- lda instructionThe LDA instruction loads an operand into the 6502 accumulator register.
- ldx instructionThe LDX instruction loads an operand into the 6502 X register.
- ldy instructionThe LDY instruction loads an operand into the 6502 Y register.
- palette tableA palette table is an NES graphics-data structure containing sets of colors for background tiles or sprites.
- sprite OAM tableOAM is NES memory containing the attributes of objects rendered as sprites, including their positions and appearance.
- enemy data tableAn enemy data table is a game data structure containing attributes or state fields for enemy objects.
- ROM imagePRG ROM is read-only cartridge memory containing executable game program code.
- labelA label is a symbolic identifier assigned to a code location so assembly instructions can refer to that location without specifying its numeric address.
- bitA bit is a binary digit that holds either zero or one.
- PPU control registerThe PPU control register is an NES hardware register whose bits configure graphics operation and interrupt generation.
- attribute tableAn attribute table is the 64-byte NES data structure that specifies palette selection for each 16 × 16 screen block.
- intro screenThe introductory screen that presents a game's title and may wait for the player to begin.
- store instructionA store instruction copies a value from a processor register to a specified memory location.
- non-maskable interruptA non-maskable interrupt is a processor interrupt that cannot be disabled by the ordinary interrupt-mask mechanism.
- musical noteA musical note is an event with a pitch and duration that can be sequenced for playback.
- bne instructionThe 6502 BNE instruction branches when the zero flag is clear.
- branch on plusThe BPL instruction branches when the 6502 negative flag is clear.
- subtractionSubtraction is an arithmetic operation that determines the difference between values by removing one value from another.
- bytesA byte is a unit of digital information consisting of eight bits and commonly used to represent a small integer or character.
- RTIA 6502 assembly instruction that returns execution from an interrupt-handling routine and restores interrupt state.
- scoreA numerical measure of a player's progress or performance in a game.
- FamiStudioFamiStudio is a cross-platform music tracker and audio development tool for creating NES music and sound effects.
- .byte directiveAn assembler directive that emits specified literal byte values into program data.
- memory mapperHardware or logic in an NES cartridge that controls memory mapping and access to cartridge data.
- enemy typeA classification identifying an enemy variant whose behavior can differ from other enemy variants.
- level progressionLevel progression is the advancement of a game through stages whose challenges or state change as the player proceeds.
- 6502 assemblerA program that translates assembly-language source code into machine code or relocatable object code.
- low byteA low byte is the less significant eight-bit portion of a multi-byte numeric value.
- cld instructionThe CLD instruction clears the 6502 decimal-mode flag.
- decimal modeDecimal mode is a 6502 arithmetic mode in which binary-coded decimal operations interpret nibbles as decimal digits.
- direct memory accessA hardware-supported transfer mechanism that moves data between memory regions without requiring the CPU to copy each byte.
- PPU mask registerThe PPU mask register is an NES hardware register whose control bits configure rendering behavior, including whether rendering is enabled.
- PPU status registerThe PPU status register is an NES hardware register containing display and rendering status bits.
- PPU VRAM address registerAn NES PPU register used to set the VRAM address for subsequent video-memory accesses.
- PPU VRAM I/O registerAn NES PPU data-port register used to read or write data at the current VRAM address.
- sei instructionThe SEI instruction sets the 6502 interrupt-disable flag to disable maskable interrupts.
- sprite DMA registerAn NES PPU register whose value selects the CPU memory page containing sprite OAM for a hardware DMA transfer.
- stack pointerA stack pointer is a processor state value identifying the current top position of the processor stack.
- txs instructionThe TXS instruction transfers the value in the 6502 X register to the stack pointer.
- vblank flagA vBlank flag is a status bit indicating whether the NES display is in or has reached a vertical blanking interval.
- hardware registerA processor register is a small, directly accessible storage location holding an instruction operand, address, or processor state value.
- counterA counter is a stored value that is repeatedly updated to track occurrences or elapsed steps, including remaining player lives.
- slide noteA slide note is a musical sequencing feature that changes a note's pitch gradually toward a target pitch.
- music patternA tracker data block containing a sequence of timed notes or events for an audio channel or instrument.
- PPUThe NES Picture Processing Unit, the dedicated hardware responsible for generating the console's video display.
- game cartridgeA game cartridge is a removable NES game medium containing program data, graphics data, and optional memory hardware.
- ADCADC is a 6502 instruction that adds a value and the current carry flag to the accumulator register.
- CLCCLC is a 6502 instruction that clears the processor's carry flag.
- immediate addressing modeImmediate addressing mode supplies a constant operand directly in an instruction, conventionally marked with a number sign.
- enemy movementEnemy movement is a game technique that updates enemy positions over time according to movement rules.
- SEC instructionThe SEC instruction is a 6502 processor instruction that sets the carry flag.
- enemyAn opposing game entity that threatens or obstructs the player or playable characters.
- name tableA name table is NES video memory containing tile references that specify the arrangement of a background screen.
- velocityVelocity is a signed positional change applied along a spatial axis to determine an object's movement.
- pha instructionThe PHA instruction pushes the current value of the 6502 accumulator onto the processor stack.
- Online 6502 Assembler SimulatorThe Online 6502 Assembler Simulator is a browser-based tool that assembles and executes 6502 assembly code while exposing processor registers and memory for inspection.
- animate_starsanimate_stars is a Megablast function that alternates the graphical patterns displayed at stored star locations.
- star patternA star pattern is graphical data defining one of the alternating appearances used to render a star character.
- RAM tableA RAM table is a table stored in random-access memory containing state and control information for game entities.
- player shipA player ship is a player-controlled spacecraft represented in a game and moved through the play area.
- sound effect channelA sound effect channel is an independent audio playback slot through which an NES sound effect can play without necessarily interrupting another effect.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
