Gustavo Pezzi – NES Programming with 6502 Assembly
Description Of NES Programming with 6502 Assembly
Learn the basics of Assembly 6502 and computer architecture programming games for the Nintendo Entertainment System
The tools you’ll need
We’ll use a simple code editor, an assembler called CA65, and a NES emulator called FCEUX. All these tools are cross-platform, so you’ll be able to follow along on either Windows, macOS, or Linux!
What you’ll learn in NES Programming with 6502 Assembly
This course is a complete immersion into the world of the Nintendo Entertainment System. We will learn how to program games for the NES using 6502 assembly while exploring the building blocks of computer architecture. The rudimentary hardware of the NES is a perfect sandbox for us to learn important concepts of low-level programming.
At the end of the course, you’ll have a working knowledge of 6502 assembly language, a comprehensive understanding of the NES hardware, and a toy homebrew game project that we’ll code together from scratch. We’ll start with small examples and proceed to glue everything together in a final project that demonstrates how a simple NES game works.
Course content
1. Introduction
- Motivations & Learning Outcomes
- How to Take This Course
2. NES History & Early Years
- The NES in the History of Game Consoles
- The Early Years of Nintendo
3. NES Hardware Overview
- NES Hardware (Console)
- NES Hardware (Cartridge)
- Opening the NES Cabinet
- Quiz: NES Hardware
4. Review of Binary & Hexadecimal
- Binary Numbers
- Hexadecimal Numbers
- Quiz: Binary & Hexadecimal
5. The 6502 Processor
- 6502 Pinout
- 6502 Registers
- 6502 Status Flags
- Quiz: 6502 CPU
6. Assembler
- The Assembler Flow
- Popular 6502 Instructions
- The CA65 Assembler
- Installing CA65 on Windows
- Installing CA65 on macOS
- Installing CA65 on Linux
- Quiz: Assembler
7. Intro to 6502 Assembly
- iNES Header
- Our First Assembly Code
- Assembler & Linker
- The FCEUX Emulator
- Exercise: Our First Assembly Bug
- Addressing Modes
- Instruction Set
- Exercise: 6502 Warmup Exercises
- CPU Memory Map
- Clearing RAM Addresses
8. NES Graphics
- NES Graphics & the PPU
- NTSC, PAL, & VBlank
- PPU Memory Map
- Color Palette
- NES Initialization Code
- Include Files
- PPU Address Latch
- Unnamed Labels & Subroutines
- Quiz: Picture Frame & VBlank
9. Background Graphics
- CHR-ROM Tiles
- Loading Nametable Tiles
- Loading Attributes
- Dynamic CA65 Macros
- RAM Variables
- Pointers
- Loading Full Nametables
- Quiz: Pattern Tables & Nametables
- Displaying Text
10. Sprites
- NES Sprites
- Hello Mario
- OAM Decay
- Hiding Sprites
- Sprite Flickering
- Exercise: Hello Goomba
11. Controller Input
- NES Controller Architecture
- Joypad Input Routine
- Checking Button Presses
- Moving Sprites using the Joypad
- Quiz: Controller Input
12. Subpixel Movement
- Integer & Fractional Position
- Velocity & Acceleration
- Signed Velocity
- Animation Frames
- Quiz: Subpixel Movement
13. Random Numbers
- Generating Random Values
- Bitshift Operations
- Random Enemy Position
- Exercise: Random Values
14. Scrolling Background
- Nametable Mirroring
- Horizontal & Vertical Scrolling
- Swapping Nametables
- Loading Background Dynamically
- Dynamic Scrolling
- Drawing Column of Tiles Off-Screen
- Loading Attributes Off-Screen
- Quiz: Background Scrolling
15. Split Screen
- Scroll Split Screen
- Different Split Screen Techniques
- Sprite-0 Hit
- Separating Game Logic & NMI
- Saving Registers in the Stack
- Buffering
- Quiz: Split Screen
16. Game Objects (Actors)
- Array of Actors
- Adding & Removing Actors
- A Routine to Add Actors
- Looping Array of Actors
- Rendering Actors
- Updating Actor Position
- One Missile Per Button Press
- Removing Actors
- Relative vs. Absolute Jumps
- Spawning Submarines
- Spawning Airplanes
- Quiz: Managing Game Objects
17. Generating Random Numbers
- Random Numbers & LFSR
- 8-bit LFSR Example
- Random Airplane Position
- Random Submarine Position
- Quiz: Random Numbers
18. Collision Detection
- Sprite Collision Check
- Missile-Airplane Collision
- Point Inside Bounding Box
19. Incrementing Score Values
- Simulating BCD Increment
- A Routine to Increment Score
- Buffering Background Changes
- Incrementing Score on Enemy Hit
20. Title Screen
- CHR Bank Switching
- Game State Enumeration
- Adding a Title Screen
- Displaying Menu Items
- Quiz: CHR Bank Switching
21. Compressing Level Data
- Encoding & Compression
- LRE Compression
- Block Encoding
- Quiz: Data Encoding & Compression
22. Audio
- The APU
- NES Audio
- FamiStudio Tracker
- NES Sound Engines
- FamiStudio Sound Engine
- Writing a Custom Sound Engine
- Evolution of Famicom Audio
- Quiz: NES Audio & the APU
23. Conclusion & Next Steps
Is this course for you?
This is a self-contained course with no formal prerequisites. However, you will probably get the most out of it if you already know the basics of coding (if-else, loops, functions).
If you like retro game development and want to learn more about computer architecture and low-level programming, then this course is definitely for you!
About Gustavo Pezzi
Gustavo Pezzi is a university lecturer in London, UK. He has won multiple education awards as a teacher and is also the founder of pikuma.com.
Gustavo Pezzi teaches fundamentals of computer science and mathematics; his academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.
More courses from the same author: Gustavo Pezzi
Share Tool - Group Buy Tools and Premium WordPress From $1DELIVERY POLICY:
When will I receive my course?
You will receive a link to download your course immediately or within 1 to 21 days. It depends on the product you buy, so please read the short description of the product carefully before making a purchase.
How is my course delivered?
We share courses through Google Drive, so once your order is complete, you’ll receive an invitation to view the course in your email.
To avoid any delay in delivery, please provide an Gmail and enter your email address correctly in the Checkout Page.
In case you submit a wrong email address, please contact us to resend the course to the correct email.
How do I check status of my order?
Please log in to CourseAMZ account then go to Order Page. You will find all your orders includes number, date, status and total price.
If the status is Processing: Your course is being uploaded. Please be patient and wait for us to complete your order. If your order has multiple courses and one of them has not been updated with the download link, the status of the order is also Processing.
If the status is Completed: Your course is ready for immediate download. Click “VIEW” to view details and download the course.
Where can I find my course?
Once your order is complete, a link to download the course will automatically be sent to your email.
You can also get the download link by logging into your CourseAMZ account then going to Downloads Page.
You may also like:
- See more Meditation courses
- See more Fitness courses
- See more Trauma Healing courses
- See more Self Hypnosis courses
- See more Behavioral Health courses
- See more Mindvalley courses
- See more TheShiftNetwork courses
- See more PESI courses
- See more Yoga courses
- See more Massage courses
- See more Weight Loss courses
- See more Qigong courses
- See more Gym courses
- See more Detox courses
- See more Athlean X courses
- See more Beachbody courses
- See more Cognitive Behavioral courses
- See more Positive Psychology courses
- See more Neuro-linguistic programming courses
- See more Ericksonian Hypnotherapy courses
- See more Self Hypnosis courses
- See more Talmadge Harper courses
- See more NICABM courses
- See more Seduction courses
- See more Sex Tips courses
- See more Dirty Talk courses
- See more Body Language courses
- See more Gabrielle Moore courses
- See more 2 Girls Teach Sex courses
Reviews
There are no reviews yet.