My fourth program for Atari 2600 - Sprites
Posted by rvertulo on August 29 2024 14:02:50
Now things have started to get more interesting in my journey of learning Assembly language for the 6507 microprocessor, which powers the Atari 2600 line of consoles. At this point, I started working with the Player elements. These elements, when used correctly, can function like the sprites traditionally used in game development with more modern programming languages. In the case of the Atari 2600, it's possible to have two Players on the same scanline at a time: Player0 and Player1. In the exercise I set out to do, I decided to work only with Player0.


The idea now was to draw a little character in the center of the screen, on top of a green lawn, with a blue sky in the background. Basically, I set the background color (COLUBK) to blue until about the middle of the screen, and from the middle down, I changed COLUBK to green. I created a counter for the number of scanlines displayed, and when the counter reached the center of the screen, I changed the background color and started drawing Player0. This drawing is done line by line, by placing an 8-bit binary value in the GRP0 register for each line. The 1s in the binary value indicate where there will be a drawing, and the 0s where nothing will be drawn. The color of Player0 is defined with the COLUP0 register, and that of Player1 with COLUP1.


Again, controlling the timing for the tracing proved to be very important to ensure that things didn't get out of line along the way.


At this stage, the main lessons learned were the use of the comparison instructions CPX and CPY, which compare the values of the X and Y registers with the parameter indicated for them. If the values are equal, the Zero status bit is set, allowing the BEQ operation to be used right afterward to make a conditional jump if that status bit is set. I used these instructions to identify the exact moment when the sprite should be drawn. Additionally, the knowledge acquired for manipulating the registers involved in drawing the Players will be very useful later on.


player0.png
Result for the fourth program using Assembly Language for Atari 2600.


If you enjoyed this article, be sure to read the previous one, which talks a bit more about my journey learning Assembly language for the Atari 2600's 6507 microprocessor.


If you want to read the next article from this serie, click here!