Skip to content

lartech2000/c64-matrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Matrix Digital Rain (C64)

This project recreates the Matrix "digital rain" effect for the Commodore 64, written primarily in 6502 assembly. It was built as an experiment in pairing traditional C64 development with modern LLM-based code generation workflows targeting legacy hardware.

Overview

  • Binary target: Commodore 64 (matrix.prg loads at $C000)
  • Core language: 6502 assembly assembled with ACME
  • Effect: Multiple independent rain streams with head, bright tail, and fade-out behavior reminiscent of the Matrix films

Key Concepts

Although each stream uses familiar raster-scan mechanics, a few implementation details may be helpful if you are comfortable with 8-bit development but not deep into assembly:

  • Character set management: The VIC-II is re-pointed to RAM (CHARSET=$2000). At startup a kanji-inspired 8x8 tile set is copied into RAM and mirrored horizontally to produce the desired glyph look. Unused portions of the 2 KB charset slot are cleared.
  • Stream bookkeeping: Forty concurrent drops are tracked in zero page arrays (drop_cols, drop_curr, drop_state, etc.). A column allocation bitmap (used_cols) prevents overlapping streams.
  • Drawing passes: Each active stream updates once per frame. The head glyph is bright white, the immediate tail is light green, deeper positions are dark green, and a delayed fade wipes residual characters.
  • Mutation pass: When all drops are processed, a batch of random tail positions is perturbed (mutate_char) to give the falling code a shimmering quality.
  • Timing: Start delays and linger times are randomized per drop to stagger the motion.

Files

  • matrix.asm – Main assembly source, assembled to matrix.prg

Building

Requirements:

  • Windows (tested) or any platform with ACME assembler available
  • charset_kanji.bin glyph binary in the project root

Typical build command:

acme -f cbm -o matrix.prg matrix.asm

The resulting PRG can be loaded with VICE (x64sc), a real C64 via disk/tape transfer, or other compatible emulators.

Running

  1. LOAD"MATRIX",8,1
  2. SYS 49152 (entry point at $C000)

The program clears the screen, installs the custom character set, seeds its pseudo-random generator, and begins animating the rain effect. Pressing any key restores the original VIC-II screen/state, prints a farewell message, and returns to the BASIC prompt.

Kanji Character Set Credit

The kanji binary (charset_kanji.bin) was sourced from Mirko Caserta’s C64 Playground repository. The build script copies the asset into RAM and mirrors the bits so the glyphs suit the Matrix aesthetic.

LLM-Driven Development Notes

This codebase was intentionally shaped as a testbed for using large language models to assist with legacy platforms. Iterations included:

  • Generating and refining assembly routines (e.g., stream management, mutation logic)
  • Identifying high-level bugs via natural-language review (e.g., missing delay state handoff)
  • Modernizing documentation comments and reducing dead code through conversational feedback

The project is also a personal return to roots: I was an avid C64 programmer throughout the 1980s with plenty of 65xx experience, but this is the first time in many years that I've written substantial assembly for the platform. Working alongside LLM tooling provided a fresh way to revisit familiar hardware with modern assistance.

While the final program is hand-reviewed, the process highlights how LLMs can accelerate exploration of low-level systems, even when targeting decades-old hardware.

About

Matrix Digital Rain (C64) recreates the film’s code rain entirely in 6502 assembly: 40 independent streams with random timing, glowing tails, and smooth fades, produced as an LLM-assisted return to classic C64 development.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors