Party Like It's 1985: Making NES Games in Assembly


Kevin Zurawel

The Nintendo Entertainment System (NES) defined the look, sound, and feel of video games in the late 80's and early 90's. In this workshop, we will explore assembly development for the NES using a modern toolkit, building playable games the same way commercial developers did in the 80's.

We'll start the workshop with a look at the history of the NES: what it is, where it came from, and why it is still relevant today. Then we'll talk about how processors work and learn some assembly before working through five projects, each one building on the previous one. I'll walk through what's new in each project, teaching you a bit more about how the NES works each time, and then I'll ask you to make some modifications and give you time to explore.

Some experience writing code in any programming language (i.e. you've used variables, functions, and loops). The workshop assumes you have never seen an NES, programmed a game, or worked with assembly before.

Required software:
1. An assembler (ca65):  
    - Windows: Download the latest "Windows Snapshot" from, and unzip it to C:\cc65.
    - Mac: Install Homebrew if you don't already have it ( for details), then type "brew install cc65" in a terminal window
    - Linux: Use your distribution's package manager (e.g. "sudo apt-get install cc65")
2. NES Screen Tool
    - Windows: Download from and unzip
    - Mac: Download from, unzip and move to your Applications folder
    - Linux: Install Wine using your distribution's package manager, then download the Windows version above
3. Nintaco
    - All platforms: Download from and unzip
    - You will need Java installed to use it - if you double-click "Nintaco.jar" and it won't open, download and install Java from
4. Workshop source code
    - All of the workshop's source code is stored in a GitHub repository at - you can either "git clone" the repo or download a zip file of the code.

If you have issues installing any of the software, don't panic! We'll have time during the workshop to make sure everyone is set up with everything they need, and I'll have all of the software on a USB flash drive just in case.