Posts tagged vcs

The Three-Stream Versatile Kernel

In my previous article on the Versatile Playfield Kernel, we explored how to draw complex backgrounds by choosing which register to update on each scanline. But this version didn’t address sprites in particular.

Becuase the playfield logic only took up to nine cycles per scanline, there was plenty of time left over to draw sprites using one of the typical routines. (You know the one – subtract position and height, test for boundaries, load bitmap and color, store in registers. Boring.)

Now we’re taking this concept further: what if we could control not just the playfield, but also two sprites using the same versatile approach?

Read more ...


The Versatile Playfield Kernel

In Atari 2600 programming, we struggle to draw two sprites and the playfield (background) within the 76-cycle budget of each scanline. For maximum-resolution single-line updates where we change parameters every scanline, we’d need to look up and write:

2 registers per sprite (color, bitmap) × 2 sprites = 4 registers

5 playfield registers (PF0, PF1, PF2, COLUPF, COLUBK)

Read more ...


Tiny Atari 2600 ROMs

On the Atari 2600, a kernel is the term for the highly-optimized assembly code that draws the display, i.e. “races the beam”.

I was pondering a question: What’s the smallest Atari 2600 kernel you can write?

I found this AtariAge thread which packs entire ROMs into 32 bytes. Can we do better?

Read more ...


VCSLib, A C Library for the Atari 2600

The previous blog post, “Your 8-bit System is a Weird PDP-11”, discussed several challenges faced when developing in C, especially for the Atari 2600/VCS.

We’ve overcome those challenges as best we can, and now we can introduce VCSLib, a support library for programming the Atari 2600/VCS with CC65.

Let’s take a tour.

Read more ...