This is a fully functional demo of my first NES game, Birthday Blast! I made this for a class in University - it was actually a class on web development (with a focus on learning JavaScript programming), and every student is required to build a website. So I decided to build a website on ASM6502 programming (the assembly language used to code for the NES). The end result was a few demo programs (all available on my github), and this game in particular.
"Why did you learn an entire programming language (and a difficult one, at that) just to make a website? Are you crazy?
Probably not. But I wanted to learn how to program for the NES anyway, so I thought I'd "hack" my time and kill two birds with one stone, so to speak. Yes, it was more work, but it was ultimately more rewarding, too.
If you're fairly new to programming NES/ASM 6502, you may want to start with my other demo programs:- https://github.com/thomaslantern/nes-hello-world
- https://github.com/thomaslantern/nes-basic-graphics
- https://github.com/thomaslantern/nes-basic-sound
- https://github.com/thomaslantern/nes-basic-controls
If you've gone through those tutorials (welcome back!), you're now ready for the epicness of Birthday Blast. So what now? Is there more to learn from this series? You bet! While Birthday Blast does build from its predecessors above, it combines their code and adds a few new subroutines. Here's a brief list of new additions that can't be found in the other tutorials:
- Falling Bombs
- Colourful Explosions (ooh!)
- Score, Lives, and the Thrill of a Virtual Near-Death Experience (awesome!)
- Code that probably isn't optimized, cleverly disguised as a challenge to the reader (that's you!)
To be frank, there's a lot of new material in this tutorial. And if you understood the other four tutorials, there shouldn't be anything here that's too difficult to understand. The challenge is taking the time to walk through the code step by step and seeing if you can see the logic of the program. If you can't see it right away, don't panic! You'll get it with practice. Just make sure that your fundamentals are strong. Do you really understand the different 6502 commands and how they work? Do you understand (and are you good at computing) hex, binary, and decimal, converting from one to another?