Learning Assembly, Part 2 #13

Today I spent some more time on the Atari course. I don’t want to totally lose track xD I configured dasm to output symbol files so that I get address names in the Stella debugger. Then I started learning about NTSC frame synchronization and I’m wondering about the electron beam. So in a CRT display,…

Published

Learning Assembly, Part 2 #12

I got back on track, but then I downloaded a header file of memory addresses and, guess what, there are four more audio addresses! $15 and $19 are only two of them. There are actually two of each: control, pitch, and volume. So I can output two different sounds at once, although they don’t seem…

Published

Learning Assembly, Part 2 #11

I did some more poking around the memory and it’s time for some proper answers: the lower four bits of $19 control volume and the lower four bits of $15 control tone. Writing $F0 is silent because it sets the volume to 0. Although, I’m not exactly sure how the bits of $15 work or…

Published

Learning Assembly, Part 2 #10

Today I continued investigating how sound output works. It seems that memory addresses $15 and $19 produce sound, but only when both are non-zero.

Published

Learning Assembly, Part 2 #9

Today I reviewed the 2600’s memory map. I want to make a program that finds the addresses which control audio output. I know I could just look it up, but I like the mystery.

Published

Learning Assembly, Part 2 #8

Today I practiced addressing modes with some simple instructions. One thing I noticed is that there are no instructions to increment or decrement the accumulator. It seems weird, like why not?

Published

Learning Assembly, Part 2 #7

Today I reviewed addressing modes. Then I got sidetracked. In part 1 #7, I discovered that I got a buzzing sound when I wrote #$FF into all the memory addresses. I decided to investigate by trying other numbers. Here’s my results so far: #$FF Buzzing #$FE Clicking #$FD Square wave #$FC Higher pitch square wave…

Published

Learning Assembly, Part 2 #6

The memory cleaning program is working! Last time around I exclusively used Dasm and Stella to assemble and run the code, but maybe this time I’ll use 8-bit workshop. I wish I could get a real Atari 2600. It’d be so cool to see my code running on real hardware.

Published

Learning Assembly, Part 2 #5

Alright, I’m coding! I wrote a program which clears the memory. For code editors, I’m just going with Vim and Comic Sans. Maybe I’ll eventually get around to trying something else.

Published

Learning Assembly, Part 2 #2

Today I completed an overview of the Atari 2600 hardware and a review of binary numbers. I could probably skip to where I left off and review as needed, but I don’t want to miss anything obvious and waste hours trying to find the figurative semicolon. Also, everything makes more sense this time around. (Sidenote:…

Published

Learning Assembly, Part 2 #1

It’s time to continue learning assembly! I’m going back to the beginning of the course, although I may skip ahead. I’ve just rewatched the introduction and I’m so hyped to be back!

Published

Learning Assembly, #28

Today I started implementing controller input. This feels familiar, checking each button and doing stuff depending on which is pressed. One thing which I find odd is checking multiple buttons at once. How do I check if two or more buttons are pressed? I can change the bitfield I’m using to include both buttons, but…

Published

Learning Assembly, #27

Today I learned about getting player input on the Atari. It’s kind of weird that the memory address bits are reversed, 0 means the input is pressed and 1 means not pressed. I want to finish this course by the end of the year. I have about 10 hours left to watch, but it’ll probably…

Published

Learning Assembly, #26

Today I learned more about clock cycles! They’re weird. Every instruction in the Atari processor has a number of clock cycles it consumes and there’s a limit to how many clock cycles I can use per scanline. To me, clock cycles feel like grains of sand I can spend to push and pull the little…

Published

Learning Assembly, #25

Today I figured out how to limit the sprite’s horizontal position!
Here’s the code snippet: () There’s probably a much better way to do this, but it works!

Published

Learning Assembly, #24

Today I finally finished implementing sprite horizontal positioning! I still need to spend more time to fully understand it, but it’s great to see it working!

Published

Learning Assembly, #23

Today I continued implementing sprite horizontal positioning. I’m realizing that this course is taking me much longer to complete than the 3D graphics course. Maybe I’m losing interest or maybe I just have other things I want to do at the same time. I’m liking this pace, though. It feels less rushed and like I…

Published

Learning Assembly, #22

Today I started implementing sprite horizontal positioning. It’s not quite done yet, but I think it will be straight forward. I wonder if it’s possible to move things in circles with sine and cosine, like in PICO-8, or if those kinds of operations are at odds with assembly.

Published