This course includes

  • 15 hours on-demand video

  • Downloadable resources and exercises

  • Full lifetime access

  • Access on mobile and desktop

  • 14 day money back guarantee

  • Secure checkout through PayPal

Watch Intro Video

Motivations & Learning Outcomes

Is this course for you?

If you want to learn how to code using Assembly language and understand the fundamental building blocks that make computers tick, then this course is definitely for you. We use the simple Atari 2600 architecture to investigate how to build games by poking bits and turning simple electrical signals into moving objects in your screen.
Buy $11.99
Is this course for you?

What you'll learn

Course overview and structure

This course is a gentle introduction to computer architecture and 6502 assembly language. You'll learn how the 6502/6507 processor communicates with the RAM memory, how the TIA chip controls the display and the sound, and how everything comes together to create simple games for the Atari platform. We'll start with the fundamentals of assembly language, and evolve to create a fully working game. You'll learn how to poke and set game objects in the screen, move them around, manage input events, sound, and collisions. Learning a small architecture like the one inside the Atari 2600 has proven to help students understand more complex machines and become better programmers. Join us, and discover the beauty that resides inside computer systems.
Buy $11.99
What you'll learn
  • 1000+ students

    Join a community of 1000+ students that have taken this course and rated it 5 stars

  • Direct instructor contact

    Have direct contact with your instructor at any given time during and after you complete your course

  • Money back guarantee

    We offer a 14 day money back guarantee for all our courses. No questions asked.

Reviews

by Nicole Durrant

★★★★★

by Nicole Durrant

I would recommend this course if you are simply interested in learning Assembly or learning about the fundamentals of computing. This is easily the most accessible and beginner-friendly way to go about it.
by Bård Baadstø Ildgruben

★★★★★

by Bård Baadstø Ildgruben

I actually wanted to learn assembly for the Commodore 64, but since both C64 and Atari2600 use the 6502 processor, I thought I would give this course a try. And I'm glad that I did. Immediately I felt that my fear of assembly disappeared, and I'm ready and motivated to learn more.
by Matt Gallagher

★★★★★

by Matt Gallagher

This course was great. All concepts presented were very well explained. I wanted to know for some time about programming games, I believe this was the correct place to start. I only hope you makes more courses in the future. You can count me in.
by Joseph Girgis

★★★★★

by Joseph Girgis

Everything is explained so well and you can tell the instructor is very knowledgeable in this subject matter.
by Gunnar Karlsson

★★★★★

by Gunnar Karlsson

One of the best courses I've bought. Very to-the-point and concise. All concepts are explained in great detail. A great way to start learning about 6502 Assembly for the Atari 2600.
by Henry Llerena

★★★★★

by Henry Llerena

This is amazing! I love the course! The explanations are super great! and it's very educational for me! keep up the good work.

Course Content

  • 2
    Hardware and Architecture
    • Hardware and Specs FREE PREVIEW
    • What was your first video game console?
    • Review of Binary and Hexadecimal
    • Quiz: Binary and Hexadecimal
    • The 6502 Processor
    • Processor Carry and Overflow Flags
    • Quiz: 6502 Processor
  • 3
    6502 Assembly Programming
    • The Assembler
    • Assembly Language(s)?
    • Popular 6502 Assembly Instructions
    • List of 6502 Opcodes
    • Installation and Tools
    • Picking a Code Editor
    • Our First Assembly Code
    • 6502 Assembly Syntax Highlight Links
    • The DASM Assembler
    • The Stella Emulator
    • The Javatari Emulator
    • Installing DASM under Windows
    • Our First Assembly Bug
    • Addressing Modes
  • 4
    VCS Memory Map and the TIA
    • VCS Memory Map
    • Memory Map and Page Zero
    • Setting the Background Color
    • NTSC Frame Synchronization
    • Painting the CRT in a Controlled Way
    • Quiz: Painting the CRT
  • 5
    Screen Objects
    • TIA Screen Objects
    • Players, Missiles, and Balls
    • Playfield Graphics
    • Exercise: Playfield Pattern
    • Player Bitmap and Scoreboard
    • Playfield Color
    • Defining RAM Variables
    • Quiz: Screen Objects
  • 6
    Vertical and Horizontal Positioning
    • Vertical Positioning
    • Implementing Vertical Position
    • Quiz: Vertical Positioning
    • Horizontal Positioning
    • Implementing Horizontal Position
    • Exercise: Limiting Horizontal Movement
    • Limiting Horizontal Movement
    • A Deeper Look at Fine Horizontal Positioning
  • 7
    Processor Instructions and Clock Cycles
    • Counting Clock Cycles
    • The NOP Instruction
  • 8
    Controller Input
    • Joystick Input
    • Joystick Player Movement
    • Quiz: Joystick Input
    • Bitwise Operations
    • Example of Bitwise Application
  • 9
    Subroutines, Stack, and Pointers
    • Subroutines
    • The Stack
    • Pointers
  • 10
    Defining our Final Project
    • The "Bomber" Project
    • Creating Sprites with PlayerPal
    • Defining the Project Playfield Graphics
    • Defining the Project Player Graphics
    • Drawing Player Sprites
    • Temporarily Ignoring Clock Cycles
  • 11
    Controlling Position and Movement
    • Player Horizontal Position Subroutine
    • Quiz: Subroutines
    • Handling Joystick Movement
    • Changing Sprite Frame
    • Enemy Vertical Movement
  • 12
    Random Numbers
    • Generating Random Values
    • Bitshift Operations
    • Random Enemy Position
    • Exercise: Random Values
  • 13
    Object Collision
    • Collision Registers
    • Checking Object Collision
  • 14
    Digits and Scoreboard
    • Score Digits
    • Configuring Scoreboard Graphics
    • Performing Tasks Inside Vertical Blank
    • Implementing Asymmetrical Playfield
    • Extra Material on Asymmetrical Playfield
    • Scoreboard Background Color
    • Game Over Color Effect
    • Exercise: Incrementing the Score
    • Implementing the Score Increment
    • Exercise: Limiting Player Movement
    • Implementing Player Movement Limits
    • Using BCD Decimal Mode
    • Quiz: Bit Masking
  • 15
    Missiles
    • Drawing Missiles
    • Missile Collision
    • Addressing Mode Mistakes
  • 16
    Audio
    • Sound Registers
    • Generating Sound
  • 17
    Scanline Analysis and Debugging Tools
    • Scanline Analysis
    • Gopher 2600 Emulator and Debugger
  • 18
    Conclusion and Next Steps
    • Next Steps
    • Moving Forward

Instructor

  • Gustavo Pezzi

    Senior Lecturer

    Gustavo Pezzi

    Gustavo teaches computer science and mathematics at BPP University, London. He researches how teaching game programming can help enhance awareness and understanding of mathematics and physics. He is also a professional software engineer with more than 10 years of experience, with an industry background in 3D systems, games, web systems, databases, and data science. His academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.