Learn how to program games for the NES! You'll learn how to draw text, scroll the screen, animate sprites, create a status bar, decompress title screens, play background music and sound effects and more. While using the book, take advantage of our Web-based IDE to see your code run instantly in the browser. We'll also talk about different "mappers" which add extra ROM and additional features to cartridges. Most of the examples use the CC65 C compiler using the NESLib library. We'll also write 6502 assembly language, programming the PPU and APU directly, and carefully timing our code to produce advanced psuedo-3D raster effects. Create your own graphics and sound, and share your games with friends!