Monorepo for Aesthetic.Computer aesthetic.computer

Game Boy Development Progress#

Recent Achievements (November 2025)#

🎯 KidLisp Compiler - Complete with Splash Screen ✅#

Date: November 18, 2025

Built a complete KidLisp → Game Boy ROM compiler with custom splash screens!

Syntax:

wipe black
ink white
line 50 50 100 100
box 10 10 70 70
circle 80 80 30
melody "ceg"

Features:

  • Simple command-per-line format (no s-expressions)
  • Graphics commands: wipe, ink, line, box, circle
  • Custom splash screen for every ROM with:
    • AESTHETIC.COMPUTER branding
    • ROM name display
    • Source code listing (auto-truncated)
    • 1px progress bar animation (160 frames)
    • Auto-start (no button press needed)
  • Music: melody "notes" with direct sound register control
  • Full pipeline: .lisp → C → GBDK → .gb ROM
  • Integrated build system
  • Browser testing: ac gameboy~romname

Technical:

  • Compiler: Node.js (kidlisp-to-gb.mjs)
  • Graphics: GBDK drawing.h (line, box, circle primitives)
  • Color inversion mapping: KidLisp black → GB WHITE (0), KidLisp white → GB BLACK (3)
  • Scene transition: Background tile map clearing critical for text→graphics mode
  • Music: Direct GB sound registers (NR10-NR14, Channel 1 square wave)
  • Output: 32KB DMG ROM

Critical Bug Fix:

  • Problem: White screen after splash instead of KidLisp graphics
  • Cause: gprintf() uses background tile map, conflicts with drawing.h functions
  • Solution: Clear BG tile map with fill_bkg_rect(0, 0, 20, 18, 0) after splash
  • Pattern learned from: GBDK examples (hblank_copy, dscan, galaxy)

Files:

  • compiler/kidlisp-to-gb.mjs - Main compiler
  • examples/linetest.lisp - Simple line test
  • examples/boxtest.lisp - Box drawing test
  • examples/shapes.lisp - Combined shapes demo
  • examples/lines.lisp - Grid pattern demo
  • KIDLISP-COMPILER.md - Documentation

Dependencies:

  • GBDK with drawing.h (line, box, circle)
  • RGBDS (already in Dockerfile)
  • Replaced hUGEDriver with custom sound system

🎵 Melody ROM Development ✅#

  • Status: COMPLETE - Fully functional Game Boy ROM
  • Features:
    • Hardware-accurate 4-channel audio system
    • Real-time animation synchronized to music
    • Custom sprite graphics (melody notes, staff lines)
    • Interactive melody visualization
    • Works on real hardware and emulators

🛠️ Build System & Tooling ✅#

  • Auto-launch integration: ROMs automatically trigger ac gameboy~melody after build
  • Cross-platform builds: Fish and Bash scripts for Linux/macOS/Windows
  • GBDK integration: Full C development workflow
  • Sprite generation: Automated sprite compilation pipeline

🎯 VSCode Extension Integration ✅#

  • Implemented Option E: Extension now connects as WebSocket client to session server
  • Published v1.194.0: Live on VS Code Marketplace
  • Eliminates initialization delays: Panel loads directly with piece URL
  • Robust ac command: Shows connection status, works in all environments

🎨 Graphics & Animation System ✅#

  • Sprite management: Efficient tile loading and animation
  • VBlank synchronization: Smooth 60 FPS animation
  • Hardware optimization: Uses Game Boy's native capabilities
  • Visual feedback: Real-time response to audio channels

Current Status#

✅ Completed#

  1. Melody ROM - Full interactive music visualization
  2. Build toolchain - Automated compilation and testing
  3. VSCode integration - Seamless development workflow
  4. Audio system - 4-channel Game Boy sound
  5. Graphics pipeline - Sprite rendering and animation
  6. ac command robustness - WebSocket-based architecture

🔄 Active Development#

  • KidLisp compiler fully functional with splash screens
  • All graphics primitives working (line, box, circle)
  • Custom sound system operational
  • Scene transition bugs resolved

🎯 Next Phase: Advanced KidLisp Features#

  • More graphics primitives (filled shapes, pixels, text)
  • Input handling (buttons, movement)
  • Sprite support
  • Background scrolling
  • Advanced sound (multiple channels, effects)

Architecture Insights#

Audio-Visual Synchronization#

The melody ROM demonstrates perfect sync between Game Boy's 4-channel audio and visual animation through:

  • VBlank interrupt handling
  • Hardware register monitoring
  • Efficient sprite management
  • Real-time channel visualization

Development Workflow#

Edit C code → Build (build.sh) → Auto-launch (ac gameboy~melody) → VSCode panel opens → Test on hardware

This creates a seamless edit-compile-test cycle for Game Boy development.

Files Structure#

kidlisp-gameboy/
├── src/melody_main.c           # Main ROM logic
├── src/melody_sprites.c        # Sprite definitions  
├── src/melody_audio.c          # Audio system
├── build.sh                    # Build automation
├── melody.gb                   # Final ROM output
└── PROGRESS.md                 # This file

Key Learnings#

  1. Hardware constraints drive optimization - Game Boy's limitations force elegant solutions
  2. VBlank is critical - All graphics updates must respect 60 FPS timing
  3. WebSocket architecture - Direct extension communication is superior to CLI workarounds
  4. Build automation - Seamless tooling makes iteration fast and enjoyable

Future Roadmap#

Short Term#

  • KidLisp parser implementation
  • Basic graphics primitives compiler
  • Live coding integration

Long Term#

  • Advanced Game Boy features (scrolling, sprites, etc.)
  • Multi-ROM project support
  • Hardware debugging tools
  • Community ROM sharing platform

Last Updated: November 18, 2025
Status: KidLisp compiler complete with splash screens, all core features working