Techno NES

nes assembly game development music art

A psychedelic audio-visual program for the Nintendo Entertainment System (NES). Pure 6502 assembly generating evolving techno music and morphing visual patterns.

The source code can be found on GitHub.

Video Demo

Features

  • Procedural Techno Music: Kick, snare, hi-hat, bass, lead synth, and arpeggio - all generated in real-time
  • 7 Song Sections: Intro, acid, breakdown, drop, peak, buildup, minimal - cycling every ~4 bars
  • Beat-Reactive Visuals: Pattern morphs and colors pulse in sync with the music
  • ~18 Minute Cycle: Full mathematical repeat takes ~18 minutes at 60fps

Technical Details

  • Mapper: NROM (Mapper 0)
  • PRG ROM: 16KB
  • CHR ROM: 8KB
  • Audio: All 4 APU channels (2x Pulse, Triangle, Noise)
  • Visuals: Single parameterized renderer updating 16 tiles/frame

How It Works

Audio Generation

The program uses all four channels of the NES Audio Processing Unit (APU):

  • Pulse Channel 1: Lead synth and arpeggio patterns
  • Pulse Channel 2: Bass lines and harmonic support
  • Triangle Channel: Sub-bass and melodic elements
  • Noise Channel: Kick drums, snares, and hi-hats

Visual System

The graphics system generates procedural patterns that react to the music:

  • Beat-Synchronized: Visual changes align with drum patterns
  • Parameterized Rendering: Mathematical functions generate evolving tile patterns
  • Color Cycling: Palette shifts create psychedelic effects
  • Efficient Updates: Only 16 tiles updated per frame to maintain 60fps

Song Structure

The music follows a structured progression through 7 distinct sections:

  1. Intro: Minimal elements, building atmosphere
  2. Acid: Acidic bass lines and filtered leads
  3. Breakdown: Stripped-down elements, tension building
  4. Drop: Full energy release with all elements
  5. Peak: Maximum intensity and complexity
  6. Buildup: Rising tension and anticipation
  7. Minimal: Return to sparse, ambient textures

Each section lasts approximately 4 bars before transitioning, creating a dynamic 18-minute cycle.

Building

Requires ca65/ld65 from the cc65 suite:

make techno

Running

fceux techno.nes

Or download and run the ROM: techno.nes

Files

  • techno.s - Main audio-visual program
  • chaos.s - Simplified variant
  • nrom.cfg - Linker configuration for NROM mapper


Projects

Site

Games

Tags