C64 Soft Scrolling Lessons

245

In his latest video, Highlander71 tackles C64 soft scrolling, explaining why scrolling an entire screen smoothly is far trickier than it looks. The video opens with an example from Lasse Öörni’s Escape from New York, a simple yet efficient side-scrolling game built without double buffering. Using this as a foundation, Highlander71 walks through the techniques and trade-offs needed to make the Commodore 64’s VIC-II chip cooperate with complex scrolling effects.

Timing, Color RAM, and the Cost of Work

Soft scrolling might appear seamless, but under the hood, it’s a battle of bytes. The VIC-II’s fine scroll register allows movement of up to eight pixels per step, but the real challenge comes when the entire screen must shift while updating both character and color RAM. Highlander71 demonstrates this in real time, showing how copying 840 bytes per frame pushes the limits of the CPU. When color RAM joins the mix, the workload nearly doubles, creating visible glitches unless carefully timed to the raster beam.

Lessons from Lasse Öörni’s Approach

Drawing on Öörni’s style, Highlander71 discusses loop unrolling, avoiding indirect indexed addressing, and spreading heavy work across multiple frames. He highlights the importance of synchronization—delaying CPU work until the raster reaches a safe zone—to prevent flicker and tearing. The video makes it clear why some developers skip color RAM scrolling entirely or rely on double buffering to offload processing between frames.

Encouraging Experimentation

Highlander71 closes by encouraging coders to try C64 soft scrolling themselves. His GitHub codebase offers a starting point for experimentation, illustrating both successful and failed attempts. The takeaway is simple: understanding scrolling on the C64 isn’t about reading theory—it’s about watching, testing, and learning directly from the hardware.

For deeper insights, see Lasse Öörni’s dissection of “Escape from New York” on the Covert BitOps site.

Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments