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

Cube Matrix Rain

I made a demo with PICO-8’s new web version! Here’s the link if you’d like to run it.

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

Smooth 2D Random Movement

I just found a cool, really simple way to do smooth random movement. I’ve spent hours working on other, way more complicated ways to do this. Here’s how it works: the object has two angles which are rotated a random amount each frame. The object is pulled in the direction of each angle the same…

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