Unlocking Advanced C64 Graphics: How the VIC-II $D011 Register Enables Stretching, Squeezing, and Zooming Effects

FairLight - Home of the Real Crackers

Summary:

This episode of FairLight TV explores four fundamental graphics programming tricks on the Commodore 64, primarily leveraging the VIC-II chip's $D011 (Y-scroll) register, along with D018 and D000. These techniques allow for impressive stretching, squeezing, and zooming effects previously thought impossible on the 42-year-old hardware, showcasing how new insights continue to push the boundaries of C64 demoscene graphics.

A C64 demo showcasing advanced graphics capabilities.
A C64 demo showcasing advanced graphics capabilities. [ 00:03:45 ]

The video covers:

  • Trick 1: Repeated Character Lines: Manipulating the VIC-II's internal counters to create bad line-free screens, enabling effects like full-screen wobblers and pseudo fisheye by changing fonts.
  • Trick 2: Triggering Bad Lines Every Nth Line: Forcing bad lines early to control pixel line height, crucial for the Y-direction of the Graham Zoomer, and combining with pixel-shifted graphic versions for X-direction effects.
  • Trick 3: Bad Lines for N Rows, Then Relax for 7: Extending the first pixel line of a character, famously used in the Bitbuster stretcher to simulate full bitmap stretching by selecting shifted font/bitmap copies.
  • Trick 4: Bad Line Every Nth Line – But Not Always: A newer technique that selectively allows the VIC-II to update its internal counters, leading to advanced squishing effects like the Pernod Squeezer and full bitmap squishers with independent X and Y control.
    An overview of the four fundamental graphics tricks discussed in the video.
    An overview of the four fundamental graphics tricks discussed in the video. [ 00:05:10 ]

Introduction to VIC-II Graphics [00:00:00]

C64 Screen Basics and VIC-II Drawing [00:05:42]

Trick 1: Repeated Character Lines (Graphics without Bad Lines) [00:09:19]

Trick 2: Trigger Bad Line Every Nth Line (N ∈ [1, 7]) [00:22:01]

Trick 3: Bad Lines for N Rows, then Relax for 7 [00:42:45]

Trick 4: Bad Line Every Nth Line - But Not Always [01:02:30]

Conclusion [01:11:32]