Last Saturday, I completed the Udemy course "Learn Assembly Language by Making Games for Atari 2600". This was an excellent resource for beginners and I enjoyed it quite a lot. Much of what I covered in my programming books was reiterated and explained in a way the stuck with me better. Since finishing the course, I resumed work in Oscar's programming book and have come back to it with a better perspective and understanding. It's not that Oscar does not explain things well, this has to do with my learning process of having to hear/read new things more than once and in different ways to retain it usually. Sunday night, I started to work on the "Invaders" game and today (Friday), I finished it.
This week, I have decided to take a break from working from my book. The overall goal remains the same, so it's not really a "detour". A couple weeks ago, I happened upon a Udemy course on 6502 Assembly Language while searching for books and tutorials and decided to give it a try. The course is called "Learn Assembly Language by Making Games for the Atari 2600" and Gustavo Pezzi is the instructor.
https://www.udemy.com/share/101EUW/
The course includes over 16 hours of instructional videos, 23 articles, 34 downloadable resources, quizzes and a certificate of completion once you make it through everything. I'm currently 50% through the course and I've found it to be a great supplement to the books I have been reading. Sometimes certain things "click" better for me with alternative sources or having various media. Much of the material, I have already covered in the book, but hearing and seeing it again, and presented in a different way, has been helpful. I highly recommend it for anyone who is just beginning to learn about 6502 Assembly Language. I plan to continue with this Udemy course for the next couple of weeks before resuming work in the book.
This course is $99 on Udemy, but I got it on sale for $19.99.
If you don't want to use Udemy, the same course is available for $29.99 on Gustavo's website here: Learn Assembly Language Programming Games for the Atari 2600 (pikuma.com)
Today, I completed the second example game found in "Programming Games for Atari 2600". I was almost finished last night, but as usual, there were a few errors that crept in that resulted in the game functioning incorrectly. I examined the code more closely and fixed the errors (mostly typos on my part) and today the game plays as it should. I really enjoyed making this game and look forward to the next one...."Invaders"!
Earlier this week, I worked through the sound and music demos and, on Friday night, I started work on the first example game in the book, "Game of Ball". I finished this Saturday evening. There's a glitch sometimes where the ball gets stuck at the bottom of the playfield, maybe I messed up something in the collision codes, I'm not sure. I've included the .bin. Other than typing the code myself, this is obviously NOT my work, but that of the original author, Oscar Toledo G!
On another note, I've ordered some more books on programming Atari 2600 games. I'm not aware of any others dealing specifically with this subject, but if anyone has some recommendations (printed materials only thanks), let me know! Hopefully somewhere in all this, I'll actually learn something.
On Sunday evening, I worked through the NUSIZx and Missile demos and finally the playfield on Tuesday before moving on to Chapter 3: Movement.
I didn't have too much difficulty with the last demos in the graphics chapter and only had a few errors to correct each time before the program compiled correctly. In Chapter 3, however, I am having some issues. The ship sprite is not positioned correctly and, when it moves, it messes up the screen. I've compared my code to the original several times, but still haven't pinpointed the exact problem.
UPDATE+++
After having another look at the code, I discovered that, ONCE AGAIN, I had typed "LDA" where an "LDX" should have been! Here's what the fixed code looks like and where the problem was:
LDA XPOS
LDX #0
JSR x_position
LDA XPOS2
LDX #1
JSR x_position
I'll have to pay more attention to this. After making the changes, the program compiled and ran properly and smoothly on the emulator without issue. Chapter 3 is complete, but I'm going to re-read it before moving onto Chapter 4: The Sound of Fun.
After displaying the ball, the next section of the book covers player sprites, but no movement yet. Since each demo builds upon the previous one, typing the code has become easier and some of the instruction sets are starting to make sense to me instead of just appearing to be a random set of three letters. I'd recommend that anyone doing this for the first time type up each program from beginning to end instead of just copy/pasting work from the previous one. This has helped me quite a bit.
After finishing the program, I compiled it, then ran it in Stella and got this:
Well, that wasn't quite what I wanted as the top part of the screen was supposed to be blue and the bottom half a sand color...and equally divided. For about 10 minutes, I meticulously compared my code to the example in the book and couldn't figure out what I had done incorrectly. After a few more times of looking things over, I noticed that I typed "LDX #$91" instead of "LDX #91" near the end of the program. After correcting this, it displayed properly.
My older brother gave me his Atari 2600 in 1996 when I was 8 years old, and it was my first gaming console. A Sega Genesis soon followed and a couple years later, I got a PlayStation. I still played my 2600 though, and within a few years, I had amassed quite a collection of games for it. Anytime my mother and I would visit a flea market or Good Will store, I'd pick up a few cartridges for about $0.25 a piece! I maintained a (mostly) casual interest in my Atari into adulthood. Sometime in 2010, I saw the Tinkernut video and learned about bAtari Basic. I installed the program and soon put together a demo that bore a striking resemblance to the one Tinkernut had made. I didn't make much progress beyond that initial demo and eventually lost interest in programming although I still continued to collect Atari cartridges.
Fast forward to 2023 and I'm not much into gaming anymore, but my kids are playing Nintendo Switch and PS4. They also like watching gameplay videos on YouTube and my son discovers a series of videos by 8bitsinthebasement about making Atari 2600 games and an old interest is rekindled.
I downloaded bAtari Basic again and resumed a 13-year-old project of mine. Within a few weeks, I had thrown together various demos and completed a hack/clone of another game using someone else's program and filling it with my own "guts", replacing the sprites and playfields with ones I had created then changing the sounds, win, and game over screens, then finally adding a title screen. While this was somewhat of a personal accomplishment and I learned quite a bit from this elaborate hack, I wasn't entirely satisfied and wanted to learn more and try something different.
I purchased the book "Programming Games for the Atari 2600" Programming Games for Atari 2600: Toledo Gutierrez, Oscar: 9781387809967: Amazon.com: Books and decided to give 6502 Assembly a shot despite all of the warnings out there about this language. I installed Visual Code Studio with the Atari Dev Studio extension and started from the beginning with the simple example demos. From the start, I had several issues and was discouraged. I finally decided to reach out to the members of atariage forums and received help and advice immediately. I've never really participated in forums, but instead have always been a "lurker". I was surprised by the quick response and assistance without any condescendence whatsoever. After correcting my mistakes, I finished the first demo, which was simply displaying a blue screen. Later in the morning, I finished the second demo, displaying a split color screen, then the third, adding a ball.