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
Is this course for you?
What you'll learn
Course overview and structure
Course Content
-
2
Hardware and Architecture
- Hardware and Specs FREE PREVIEW
- What was your first video game console?
- Digital Binary System
- Counting in Base 10 and Base 2
- Hexadecimal Representation
- 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
- Stella Debugger Warning Messages
- 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
- A Discussion on Registers and Variables
- Quiz: Screen Objects
-
6
Vertical and Horizontal Positioning
- Vertical Positioning
- Implementing Vertical Position
- Quiz: Vertical Positioning
- Horizontal Positioning
- Smooth Horizontal Position
- Implementing Horizontal Position
- Exercise: Limiting Horizontal Movement
- Limiting Horizontal Movement
- Horizontal Position & Time Keeping
- Understanding the EOR #7 Instruction
-
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
- Examples of Commented Code
- Moving Forward
Reviews
-
Excellent course, well presented in a logical sequence
Kevin Yeo
I've been going through this course and the material is very well presented and delivered in a sensible and logical order. There are times when I have strugg...
Read MoreI've been going through this course and the material is very well presented and delivered in a sensible and logical order. There are times when I have struggled and this is down to the devil being in the detail. Assembly language and assemblers appear to be very picky, so sometimes things like spaces matter and make the difference between disaster and success. However, when I've scrutinised the problem it's been remedied by carefully analysing everything and being very exact. This shouldn't put you off, I've been meaning to learn some form of assembly language programming and the Atari and the 6502/6507 is the perfect platform, you don't even need a console.
Read Less -
Atari 2600: 6502 Assembly Language Programming
Samuel Ward
I think that Gustavo does a very good job of explaining the concepts, opcodes, syntax, etc. The video graphics are a superb addition. My only concern is th...
Read MoreI think that Gustavo does a very good job of explaining the concepts, opcodes, syntax, etc. The video graphics are a superb addition. My only concern is this: I have a good bit of experience with Assembly language programming, so I am comfortable with the lessons and material; however, I wonder how someone with zero Assembly language programming experience will handle such a quick crash course. I am also a little skeptical that with the remaining 7 or 8 hours of instruction videos, Gustavo will cover enough material to give a new 6502/6507 programmer (like me) enough instruction to make that person comfortable / competent enough to actually write code for an Atari video game. I'm skeptical yet hopeful! So far I am pleased with the course.
Read Less -
So much fun
Ajay Khanna
As a long-time programmer, this course felt like a going on a great short vacation with an excellent guide. GP informs everything with a delight in what can ...
Read MoreAs a long-time programmer, this course felt like a going on a great short vacation with an excellent guide. GP informs everything with a delight in what can be achieved by clever hacking with limited means, and can be very subtle with depth (for example, I first thought the scoreboard was an odd choice for a long video, but it turns out that it involves some sweet bit-masking and opens the door to asymmetric playfield rendering). In this era when assembly programming on current platforms (x86 etc) has fewer applications (I think), I wonder if this is the right way to teach it: through constrained systems and games.
Read Less -
Great course!
Nicole Durrant
I've just about come to the end of the course and I have to say it's been a deeply enjoyable experience from beginning to end. The course covers most key po...
Read MoreI've just about come to the end of the course and I have to say it's been a deeply enjoyable experience from beginning to end. The course covers most key points necessary to program games on the Atari 2600, even closing with creating an entire game on the system. If you are interested in learning about the Atari 2600 this is easily the most accessible and beginner friendly way to go about it. I would also recommend trying this course if you are simply interested in Assembly programming or learning about the fundamentals of computing.
Read Less -
Makes assembly very accessible
Eren Fraser
I really gotta thank Gustavo for making this course, definitely allows people to get their feet into assembly and shake their fears, hopefully I plan to get ...
Read MoreI really gotta thank Gustavo for making this course, definitely allows people to get their feet into assembly and shake their fears, hopefully I plan to get involved more into 2600 homebrew development and maybe C64 or NES as well. Great to have someone making retro development more accessible by making comprehensive courses, would love to see more platforms as well (Teach MIPS ASM via N64/PSX development? :) ) Again, very accessible and fairly comprehensive, highly recommended
Read Less -
Great Introduction
Antonio Herrera Martin
I has all the basic ingredients to start practicing and playing with the development of games for the Atari 2600, but it also can help to gain an insight in ...
Read MoreI has all the basic ingredients to start practicing and playing with the development of games for the Atari 2600, but it also can help to gain an insight in other similar consoles which possess similar characteristics.
Read Less
Instructor
-
Senior Lecturer
Gustavo Pezzi
Gustavo teaches computer science and mathematics at BPP University, London. He studies how teaching game programming can help enhance awareness and understanding of basic 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, systems, databases, and data analysis. His academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.