Techno NES
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:
- Intro: Minimal elements, building atmosphere
- Acid: Acidic bass lines and filtered leads
- Breakdown: Stripped-down elements, tension building
- Drop: Full energy release with all elements
- Peak: Maximum intensity and complexity
- Buildup: Rising tension and anticipation
- 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 programchaos.s- Simplified variantnrom.cfg- Linker configuration for NROM mapper
Arrived
Ninja Turdle