8.4 KiB
Initiative: YAZE v0.4.0 - SDL3 Modernization & Emulator Accuracy
Created: 2025-11-23 Owner: Multi-agent coordination Status: ACTIVE Target Release: Q1 2026
Executive Summary
YAZE v0.4.0 represents a major release focusing on two pillars:
- Emulator Accuracy - Implementing cycle-accurate PPU rendering and AI integration
- SDL3 Modernization - Migrating from SDL2 to SDL3 with backend abstractions
This initiative coordinates 7 specialized agents across 5 parallel workstreams.
Background
Current State (v0.3.8-hotfix1)
- AI agent infrastructure complete (z3ed CLI)
- Card-based UI system functional
- Emulator debugging framework established
- CI/CD pipeline stabilized with nightly testing
- Known issues: Tile16 palette, overworld sprite movement, emulator audio
Uncommitted Work Ready for Integration
- PPU JIT catch-up system (
ppu.cc- 29 lines added) - Dungeon room sprite encoding/saving (
room.cc- 82 lines added) - Dungeon editor system improvements (133 lines added)
- Test suite configuration updates
Milestones
Milestone 1: Emulator Accuracy (Weeks 1-6)
1.1 PPU JIT Catch-up Completion
Agent: snes-emulator-expert
Status: IN_PROGRESS (uncommitted work exists)
Files: src/app/emu/video/ppu.cc, src/app/emu/video/ppu.h
Tasks:
- Add
last_rendered_x_tracking - Implement
StartLine()method - Implement
CatchUp(h_pos)method - Integrate
CatchUp()calls intoSnes::WriteBBus - Add unit tests for mid-scanline register writes
- Verify with raster-effect test ROMs
Success Criteria: Games with H-IRQ effects (Tales of Phantasia, Star Ocean) render correctly
1.2 Semantic Inspection API
Agent: ai-infra-architect
Status: PLANNED
Files: New src/app/emu/debug/semantic_introspection.h/cc
Tasks:
- Create
SemanticIntrospectionEngineclass - Connect to
MemoryandSymbolProvider - Implement
GetPlayerState()using ALTTP RAM offsets - Implement
GetSpriteState()for sprite tracking - Add JSON export for AI consumption
- Create debug overlay rendering for vision models
Success Criteria: AI agents can query game state semantically via JSON API
1.3 State Injection API
Agent: snes-emulator-expert
Status: PLANNED
Files: src/app/emu/emulator.h/cc, new src/app/emu/state_patch.h
Tasks:
- Define
GameStatePatchstructure - Implement
Emulator::InjectState(patch) - Add fast-boot capability (skip intro sequences)
- Create ALTTP-specific presets (Dungeon Test, Overworld Test)
- Integrate with z3ed CLI for "test sprite" workflow
Success Criteria: Editors can teleport emulator to any game state programmatically
1.4 Audio System Fix
Agent: snes-emulator-expert
Status: PLANNED
Files: src/app/emu/audio/, src/app/emu/apu/
Tasks:
- Diagnose SDL2 audio device initialization
- Fix SPC700 → SDL2 format conversion
- Verify APU handshake timing
- Add audio debugging tools to UI
- Test with music playback in ALTTP
Success Criteria: Audio plays correctly during emulation
Milestone 2: SDL3 Migration (Weeks 3-8)
2.1 Directory Restructure
Agent: backend-infra-engineer
Status: PLANNED
Scope: Move src/lib/ + third_party/ → external/
Tasks:
- Create
external/directory structure - Move SDL2 (to be replaced), imgui, etc.
- Update CMakeLists.txt references
- Update submodule paths
- Validate builds on all platforms
2.2 SDL3 Core Integration
Agent: imgui-frontend-engineer
Status: PLANNED
Files: src/app/platform/, CMakeLists.txt
Tasks:
- Add SDL3 as dependency
- Create
GraphicsBackendabstraction interface - Implement SDL3 backend for window/rendering
- Update ImGui to SDL3 backend
- Port window creation and event handling
2.3 SDL3 Audio Backend
Agent: snes-emulator-expert
Status: PLANNED (after audio fix)
Files: src/app/emu/audio/sdl3_audio_backend.h/cc
Tasks:
- Implement
IAudioBackendfor SDL3 - Migrate audio initialization code
- Verify audio quality matches SDL2
2.4 SDL3 Input Backend
Agent: imgui-frontend-engineer
Status: PLANNED
Files: src/app/emu/ui/input_handler.cc
Tasks:
- Implement SDL3 input backend
- Add gamepad support improvements
- Verify continuous key polling works
Milestone 3: Editor Fixes (Weeks 2-4)
3.1 Tile16 Palette System Fix
Agent: zelda3-hacking-expert
Status: PLANNED
Files: src/app/editor/graphics/tile16_editor.cc
Tasks:
- Fix Tile8 source canvas palette application
- Fix palette button 0-7 switching logic
- Ensure color alignment across canvases
- Add unit tests for palette operations
Success Criteria: Tile editing workflow fully functional
3.2 Overworld Sprite Movement
Agent: zelda3-hacking-expert
Status: PLANNED
Files: src/app/editor/overworld/overworld_editor.cc
Tasks:
- Debug canvas interaction system
- Fix drag operation handling for sprites
- Test sprite placement workflow
Success Criteria: Sprites respond to drag operations
3.3 Dungeon Sprite Save Integration
Agent: zelda3-hacking-expert
Status: IN_PROGRESS (uncommitted)
Files: src/zelda3/dungeon/room.cc/h
Tasks:
- Implement
EncodeSprites()method - Implement
SaveSprites()method - Integrate with dungeon editor UI
- Add unit tests
- Commit and verify CI
Agent Assignments
| Agent | Primary Responsibilities | Workstream |
|---|---|---|
snes-emulator-expert |
PPU catch-up, audio fix, state injection, SDL3 audio | Stream 1 |
imgui-frontend-engineer |
SDL3 core, SDL3 input, UI updates | Stream 2 |
zelda3-hacking-expert |
Tile16 fix, sprite movement, dungeon save | Stream 3 |
ai-infra-architect |
Semantic API, multimodal context | Stream 4 |
backend-infra-engineer |
Directory restructure, CI updates | Stream 2 |
test-infrastructure-expert |
Test suite for new features | Support |
docs-janitor |
Documentation updates | Support |
Parallel Workstreams
Week 1-2:
├── Stream 1: snes-emulator-expert → Complete PPU catch-up
├── Stream 3: zelda3-hacking-expert → Tile16 palette fix
└── Stream 4: ai-infra-architect → Semantic API design
Week 3-4:
├── Stream 1: snes-emulator-expert → Audio system fix
├── Stream 2: backend-infra-engineer → Directory restructure
├── Stream 3: zelda3-hacking-expert → Sprite movement fix
└── Stream 4: ai-infra-architect → Semantic API implementation
Week 5-6:
├── Stream 1: snes-emulator-expert → State injection API
├── Stream 2: imgui-frontend-engineer → SDL3 core integration
└── Stream 3: zelda3-hacking-expert → Dungeon sprite integration
Week 7-8:
├── Stream 1: snes-emulator-expert → SDL3 audio backend
├── Stream 2: imgui-frontend-engineer → SDL3 input backend
└── All: Integration testing and stabilization
Success Criteria
v0.4.0 Release Readiness
- PPU catch-up renders raster effects correctly
- Semantic API provides structured game state
- State injection enables "test sprite" workflow
- Audio system functional
- SDL3 builds pass on Windows, macOS, Linux
- No performance regression vs v0.3.x
- All known editor bugs fixed
- Documentation updated for new APIs
Risk Mitigation
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| SDL3 breaking changes | Medium | High | Maintain SDL2 fallback branch |
| Audio system complexity | High | Medium | Prioritize diagnosis before migration |
| Cross-platform issues | Medium | Medium | CI validation on all platforms |
| Agent coordination conflicts | Low | Medium | Strict coordination board protocol |
Communication
- Daily: Coordination board updates
- Weekly: Progress sync via initiative status
- Blockers: Post
BLOCKERtag on coordination board immediately - Handoffs: Use
REQUEST →format for task transitions