200 lines
7.2 KiB
Markdown
200 lines
7.2 KiB
Markdown
# YAZE v0.4.0 Roadmap: Editor Stability & OOS Support
|
|
|
|
**Version:** 2.0.0
|
|
**Date:** November 23, 2025
|
|
**Status:** Active
|
|
**Current:** v0.3.9 release fix in progress
|
|
**Next:** v0.4.0 (first feature release after CI/CD stabilization)
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
**v0.3.3-v0.3.9** was consumed by CI/CD and release workflow fixes (~90% of development time). v0.4.0 marks the return to feature development, focusing on unblocking Oracle of Secrets (OOS) workflows.
|
|
|
|
---
|
|
|
|
## Priority Tiers
|
|
|
|
### Tier 1: Critical (Blocks OOS Development)
|
|
|
|
#### 1. Dungeon Editor - Full Workflow Verification
|
|
|
|
**Problem:** `SaveDungeon()` is a **STUB** that returns OkStatus() without saving anything.
|
|
|
|
| Task | File | Status |
|
|
|------|------|--------|
|
|
| Implement `SaveDungeon()` | `src/zelda3/dungeon/dungeon_editor_system.cc:44-50` | STUB |
|
|
| Implement `SaveRoom()` properly | `src/zelda3/dungeon/dungeon_editor_system.cc:905-934` | Partial |
|
|
| Free space validation | `src/zelda3/dungeon/room.cc:957` | Missing |
|
|
| Load room from ROM | `src/zelda3/dungeon/dungeon_editor_system.cc:86` | TODO |
|
|
| Room create/delete/duplicate | `src/zelda3/dungeon/dungeon_editor_system.cc:92-105` | TODO |
|
|
| Undo/redo system | `src/app/editor/dungeon/dungeon_editor_v2.h:60-62` | Stubbed |
|
|
| Validation system | `src/zelda3/dungeon/dungeon_editor_system.cc:683-717` | TODO |
|
|
|
|
**Success Criteria:** Load dungeon room → Edit objects/sprites/tiles → Save to ROM → Test in emulator → Changes persist
|
|
|
|
---
|
|
|
|
#### 2. Message Editor - Expanded Messages Support
|
|
|
|
**Problem:** OOS uses expanded dialogue. BIN file saving is broken, no JSON export for version control.
|
|
|
|
| Task | File | Priority |
|
|
|------|------|----------|
|
|
| Fix BIN file saving | `src/app/editor/message/message_editor.cc:497-508` | P0 |
|
|
| Add file save dialog for expanded | `src/app/editor/message/message_editor.cc:317-352` | P0 |
|
|
| JSON export/import | `src/app/editor/message/message_data.h/cc` (new) | P0 |
|
|
| Visual vanilla vs expanded separation | `src/app/editor/message/message_editor.cc:205-252` | P1 |
|
|
| Address management for new messages | `src/app/editor/message/message_data.cc:435-451` | P1 |
|
|
| Complete search & replace | `src/app/editor/message/message_editor.cc:574-600` (TODO line 590) | P2 |
|
|
|
|
**Existing Plans:** `docs/internal/plans/message_editor_implementation_roadmap.md` (773 lines)
|
|
|
|
**Success Criteria:** Load ROM → Edit expanded messages → Export BIN file → Import JSON → Changes work in OOS
|
|
|
|
---
|
|
|
|
#### 3. ZSCOW Full Audit
|
|
|
|
**Problem:** Code lifted from ZScream, works for most cases but needs audit for vanilla + OOS workflows.
|
|
|
|
| Component | Status | File | Action |
|
|
|-----------|--------|------|--------|
|
|
| Version detection | Working (0x00 edge case) | `src/zelda3/overworld/overworld_version_helper.h:51-71` | Clarify 0x00 |
|
|
| Area sizing | Working | `src/zelda3/overworld/overworld.cc:267-422` | Integration tests |
|
|
| Map rendering | Working (2 TODOs) | `src/zelda3/overworld/overworld_map.cc:590,422` | Death Mountain GFX |
|
|
| Custom palettes v3 | Working | `src/zelda3/overworld/overworld_map.cc:806-826` | UI feedback |
|
|
|
|
**Success Criteria:** Vanilla ROM, ZSCustom v1/v2/v3 ROMs all load and render correctly with full feature support
|
|
|
|
---
|
|
|
|
### Tier 2: High Priority (Development Quality)
|
|
|
|
#### 4. Testing Infrastructure
|
|
|
|
**Goal:** E2E GUI tests + ROM validation for automated verification
|
|
|
|
| Test Suite | Description | Status |
|
|
|------------|-------------|--------|
|
|
| Dungeon E2E workflow | Load → Edit → Save → Validate ROM | New |
|
|
| Message editor E2E | Load → Edit expanded → Export BIN | New |
|
|
| ROM validation suite | Verify saved ROMs boot in emulator | New |
|
|
| ZSCOW regression tests | Test vanilla, v1, v2, v3 ROMs | Partial |
|
|
|
|
**Framework:** ImGui Test Engine (`test/e2e/`)
|
|
|
|
---
|
|
|
|
#### 5. AI Integration - Agent Inspection
|
|
|
|
**Goal:** AI agents can query ROM/editor state with real data (not stubs)
|
|
|
|
| Task | File | Status |
|
|
|------|------|--------|
|
|
| Semantic Inspection API | `src/app/emu/debug/semantic_introspection.cc` | Complete |
|
|
| FileSystemTool | `src/cli/service/agent/tools/filesystem_tool.cc` | Complete |
|
|
| Overworld inspection | `src/cli/handlers/game/overworld_commands.cc:10-97` | Stub outputs |
|
|
| Dungeon inspection | `src/cli/handlers/game/dungeon_commands.cc` | Stub outputs |
|
|
|
|
**Success Criteria:** `z3ed overworld describe-map 0` returns real map data, not placeholder text
|
|
|
|
---
|
|
|
|
### Tier 3: Medium Priority (Polish)
|
|
|
|
#### 6. Editor Bug Fixes
|
|
|
|
| Issue | File | Status |
|
|
|-------|------|--------|
|
|
| Tile16 palette | `src/app/editor/overworld/tile16_editor.cc` | Uncommitted fixes |
|
|
| Sprite movement | `src/app/editor/overworld/entity.cc` | Uncommitted fixes |
|
|
| Entity colors | `src/app/editor/overworld/overworld_entity_renderer.cc:21-32` | Not per CLAUDE.md |
|
|
| Item deletion | `src/app/editor/overworld/entity.cc:352` | Hides, doesn't delete |
|
|
|
|
**CLAUDE.md Standards:**
|
|
- Entrances: Yellow-gold, 0.85f alpha
|
|
- Exits: Cyan-white (currently white), 0.85f alpha
|
|
- Items: Bright red, 0.85f alpha
|
|
- Sprites: Bright magenta, 0.85f alpha
|
|
|
|
---
|
|
|
|
#### 7. Uncommitted Work Review
|
|
|
|
Working tree changes need review and commit:
|
|
|
|
| File | Changes |
|
|
|------|---------|
|
|
| `tile16_editor.cc` | Texture queueing improvements |
|
|
| `entity.cc/h` | Sprite movement fixes, popup bugs |
|
|
| `overworld_editor.cc` | Entity rendering changes |
|
|
| `overworld_map.cc` | Map rendering updates |
|
|
| `object_drawer.cc/h` | Dungeon object drawing |
|
|
|
|
---
|
|
|
|
### Tier 4: Lower Priority (Future)
|
|
|
|
#### 8. Web Port (v0.5.0+)
|
|
|
|
**Strategy:** `docs/internal/plans/web_port_strategy.md`
|
|
|
|
- `wasm-release` CMake preset with Emscripten
|
|
- `#ifdef __EMSCRIPTEN__` guards (no codebase fork)
|
|
- MEMFS `/roms`, IDBFS `/saves`
|
|
- HTML shell with Upload/Download ROM
|
|
- Opt-in nightly CI job
|
|
- Position: "try-in-browser", desktop primary
|
|
|
|
---
|
|
|
|
#### 9. SDL3 Migration (v0.5.0)
|
|
|
|
**Status:** Infrastructure complete (commit a5dc884612)
|
|
|
|
| Component | Status |
|
|
|-----------|--------|
|
|
| IRenderer interface | Complete |
|
|
| SDL3Renderer | 50% done |
|
|
| SDL3 audio backend | Skeleton |
|
|
| SDL3 input backend | 80% done |
|
|
| CMake presets | Ready (mac-sdl3, win-sdl3, lin-sdl3) |
|
|
|
|
Defer full migration until editor stability achieved.
|
|
|
|
---
|
|
|
|
#### 10. Asar Assembler Restoration (v0.5.0+)
|
|
|
|
| Task | File | Status |
|
|
|------|------|--------|
|
|
| `AsarWrapper::Initialize()` | `src/core/asar_wrapper.cc` | Stub |
|
|
| `AsarWrapper::ApplyPatch()` | `src/core/asar_wrapper.cc` | Stub |
|
|
| Symbol extraction | `src/core/asar_wrapper.cc:103` | Stub |
|
|
| CLI command | `src/cli/handlers/tools/` (new) | Not started |
|
|
|
|
---
|
|
|
|
## v0.4.0 Success Criteria
|
|
|
|
- [ ] **Dungeon workflow**: Load → Edit → Save → Test in emulator works
|
|
- [ ] **Message editor**: Export/import expanded BIN files for OOS
|
|
- [ ] **ZSCOW audit**: All versions load and render correctly
|
|
- [ ] **E2E tests**: Automated verification of critical workflows
|
|
- [ ] **Agent inspection**: Returns real data, not stubs
|
|
- [ ] **Editor fixes**: Uncommitted changes reviewed and committed
|
|
|
|
---
|
|
|
|
## Version Timeline
|
|
|
|
| Version | Focus | Status |
|
|
|---------|-------|--------|
|
|
| v0.3.9 | Release workflow fix | In progress |
|
|
| **v0.4.0** | **Editor Stability & OOS Support** | **Next** |
|
|
| v0.5.0 | Web port + SDL3 migration | Future |
|
|
| v0.6.0 | Asar restoration + Agent editing | Future |
|
|
| v1.0.0 | GA - Documentation, plugins, parity | Future |
|