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 →.gbROM - 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 compilerexamples/linetest.lisp- Simple line testexamples/boxtest.lisp- Box drawing testexamples/shapes.lisp- Combined shapes demoexamples/lines.lisp- Grid pattern demoKIDLISP-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~melodyafter 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#
- Melody ROM - Full interactive music visualization
- Build toolchain - Automated compilation and testing
- VSCode integration - Seamless development workflow
- Audio system - 4-channel Game Boy sound
- Graphics pipeline - Sprite rendering and animation
- 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#
- Hardware constraints drive optimization - Game Boy's limitations force elegant solutions
- VBlank is critical - All graphics updates must respect 60 FPS timing
- WebSocket architecture - Direct extension communication is superior to CLI workarounds
- 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