yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
Changelog

0.7.0 (February 2026)

iOS Remote Control & Review

  • Added Bonjour discovery (_yaze._tcp.) for automatic LAN desktop detection from iPad.
  • Added Remote Room Viewer: browse all 296 dungeon rooms with overlay toggles, scale control, and metadata inspection.
  • Added Remote Command Runner: execute z3ed CLI commands from iPad with autocomplete catalog, command history, and --write safety confirmation.
  • Added Annotation Review Mode: browse rooms with annotation overlays, create/edit/delete annotations with REST-based desktop sync.
  • Added Desktop Connection view with discovered hosts, manual IP entry, and persistent connection status pill in overlay bar.

Desktop HTTP API

  • Added POST /api/v1/command/execute for remote command execution via CommandRegistry.
  • Added GET /api/v1/command/list exposing the full z3ed command catalog with metadata.
  • Added GET/POST/PUT/DELETE /api/v1/annotations for annotation CRUD against project annotations.json.
  • Added BonjourPublisher for macOS dns_sd.h service advertisement with TXT metadata.

Themed Widget System

  • Added BeginThemedTabBar/EndThemedTabBar for consistent styled tab bars.
  • Adopted themed widget APIs across dungeon workbench, status bar, pixel editor, and screen editor.

0.6.2 (February 2026)

Release Consistency

  • Updated current-release metadata and docs markers to align all surfaces on 0.6.2.
  • Kept build/version source-of-truth flow pinned to the VERSION file.

Project Bundles (.yazeproj)

  • Improved unpack failure cleanup behavior and dry-run structural validation checks.
  • Expanded bundle verification paths and hash compatibility handling.

Oracle Tooling & Validation

  • Continued smoke/preflight flow hardening for Oracle development and CI workflows.

Editor UX

  • Continued polish on dungeon placement feedback and tile selector interaction UX.

0.6.1 (February 2026)

Oracle Tooling & Validation

  • Added Oracle workflow command surfaces for smoke/preflight-style validation in z3ed.
  • Added D6 minecart structural regression gating via --min-d6-track-rooms.
  • Improved Oracle validation reporting with clearer structural/readiness status fields.

Project Bundles (.yazeproj)

  • Added project bundle verify command with structured checks and report output.
  • Added project bundle pack/unpack commands with zip archive support.
  • Hardened unpack behavior:
    • path traversal protection,
    • default cleanup on invalid bundle extraction failure,
    • --keep-partial-output for debugging extraction failures,
    • --dry-run structural validation mode.
  • Added bundle help/registry examples for faster CLI discovery.

Hashing & Integrity

  • Replaced platform-conditional SHA1 behavior with portable SHA1 generation.
  • Added ROM-hash verification path (--check-rom-hash) for bundle validation.
  • Normalized hash comparisons (whitespace/case tolerant) for manifest compatibility.

Editor UX

  • Added limit-aware placement feedback for dungeon object/sprite/door workflows.
  • Added custom object overlay controls and D6 quick-navigation affordances in the dungeon workbench.
  • Improved tile selector usability:
    • hover preview tooltip,
    • jump-to-tile/filter bar,
    • range validation feedback,
    • explicit decimal input mode (d:<id>) while preserving hex-default behavior.

0.6.0 (February 2026)

Undo/Redo

  • Unified UndoManager embedded in Editor base class.
  • Per-editor migrations: overworld, dungeon, graphics, music, message.
  • Custom collision and water fill undo actions in dungeon editor.

Dungeon Editor

  • SNES priority compositing with coverage masks for transparent overwrites.
  • Entity drag-drop with rich selection inspector.
  • Mutation tagging by domain (tile objects, custom collision, water fill).
  • Custom collision editor with JSON import/export.
  • Water fill zone authoring with brush radius support.
  • Object Drawing Parity: 100% vanilla object routine coverage (448/448 objects across subtypes 1/2/3).
    • Filled mapping gaps for objects 0xF8, 0xFE, 0xFF.
    • Room effects expanded: ApplyRoomEffect() handles Moving_Water, Moving_Floor, Torch_Show_Floor, Red_Flashes, Ganon_Room with appropriate layer blend modes.
    • SNES color math translucent blending in CompositeToOutput(): palette lookup, (bg1_rgb + bg2_rgb) / 2, nearest-color-in-bank for palette-indexed output.
    • 19 parity validation tests covering: routine coverage, palette offsets, pit/mask object identification, BothBG flag correctness, water object layer semantics, room effect blend modes, layer merge types, and drawer fallback behavior.

UI

  • Semantic color system replacing hardcoded ImGui style pushes.
  • EventBus migration replacing legacy callback-based navigation.
  • Right panel manager and sidebar simplification.
  • Viewport-relative sizing helpers (DialogSize, ConstrainToViewport, ScaledSize).
  • Warning button colors and status color standardization.

ROM Safety

  • Write fence stack rejecting negative/out-of-bounds writes.
  • Dirty custom collision save without full room reload.
  • Expanded message and service writes are fence-aware.

Cleanup

  • Removed SessionObserver and observer pattern from SessionCoordinator.
  • Removed deprecated PanelManager callback setters (~79 lines).
  • Removed legacy editor navigation APIs (JumpTo*, HideCurrentEditorPanels).
  • Removed deprecated SetMutationHook alias.
  • Migrated sidebar/session actions to EventBus.

0.5.6 (February 2026)

Dungeon & Minecart Tooling

  • Add configurable minecart collision/track IDs via project [dungeon_overlay].
  • Add track collision overlay with per-tile direction arrows + legend.
  • Add minecart sprite overlay to flag carts off stop tiles.
  • Expand Minecart Track Editor audit (32 slots, filler warnings, room coverage reporting).
  • Add camera quadrant overlay for dungeon layout planning.

Object Editing UX

  • Custom object previews keyed by subtype; selection bounds use custom extents.
  • Hover/selection respects active layer filters.

Testing & Stability

  • Harden headless ImGui initialization for editor tests.

0.5.5 (January 2026)

Editor & Architecture

  • EditorManager Refactor: Modernized EditorManager for better testability and isolation; introduced yaze_core_lib to separate core logic from the app shell.
  • Improved Testing: Added AsarCompilerTest and EditorManagerTest suites.
  • Robust Graphics Loading: Added fallback to grayscale palette for graphics sheets missing a palette, preventing crashes.
  • Build System: Cleaned up CMake entry points and presets; unified main entry point logic.

0.5.4 (January 2026)

Debugging & Mesen2

  • Add Mesen2 debug panel in the Agent editor (socket picker, overlay controls, save/load state, screenshot capture).
  • Add Mesen2 ↔ Yaze bridge endpoints + updated Lua bridge (symbol sync, PC navigation, breakpoint notifications, state telemetry).
  • Add z3ed mesen-* CLI tools for live Mesen2 inspection (state, sprites, CPU, memory, trace, breakpoints).
  • Add Mesen2 debug shortcut (Ctrl+Shift+M) and auto-refresh socket list on panel open.
  • Harden socket client response handling + JSON escaping.

AI, HTTP API & CLI

  • Add ModelRegistry caching + refresh query support for /api/v1/models.
  • Normalize OpenAI base URLs and auto-detect local OpenAI-compatible endpoints.
  • Add CORS/error handling for HTTP API endpoints and /symbols format validation.
  • Add rom and debug CLI routing plus sandbox flag for safe ROM edits.

Emulator & gRPC Stability

  • Use SNES Read/Write for gRPC memory operations to avoid crashes.
  • Auto-initialize emulator on SaveState/LoadState when a ROM is loaded.
  • Fall back to Null audio backend for headless init failures.

Desktop & UX

  • Fix message editor preview and font atlas palette sync on load.
  • Sync panel/editor context on category switches to avoid blank ImGui windows (e.g., Emulator ↔ Overworld).

Nightly & Packaging

  • Normalize macOS nightly bundle layout so launchers find yaze.app.
  • Align version strings across builds and docs.
  • Move public headers to inc/ and update build/install include paths.

0.5.3 (January 2026)

Build & Release

  • Fix release validation scripts for DMG packaging.
  • Create VERSION file as canonical source of truth.
  • Improve DMG validation diagnostics.

AI & CLI

  • Add LMStudio support with configurable --openai_base_url flag.
  • Allow empty API key for local OpenAI-compatible servers.

WASM/Web

  • Add persistent directories for agent, proposals, themes, logs, etc.
  • Merge PWA caching with COI service worker for unified root-scope caching.
  • Add WASM stubs for build tools (return clear unavailable status).

0.5.2 (January 2026)

Build

  • Fix build when YAZE_AI_RUNTIME is disabled.
  • Add proper guards around AI runtime-dependent code paths.

0.5.1 (January 2026)

UX & Guidance

  • Help panel now reflects configured shortcuts and adds shortcut search.
  • Supported Features popup lists platform status + persistence details.
  • User-facing warnings added for unimplemented collaboration and E2E menus.

Storage & Paths

  • App data consolidated under ~/.yaze across desktop/CLI with legacy migration.
  • Web build storage consolidated under /.yaze for ROMs/saves/projects.
  • Agent chat, profiles, and sessions now persist under .yaze/agent.

Project Management

  • Storage locations and version mismatch warnings surfaced in the project panel.

Versioning

  • Added VERSION file as the build source of truth.
  • Web version badge syncs to runtime WASM version.

0.5.0 (January 2026)

Graphics & Palette Reliability

  • Fixed palette conversion and Tile16 tint regressions.
  • Corrected palette slicing for graphics sheets and indexed → SNES planar conversion.
  • Stabilized overworld palette/tilemap saves and render service GameData loading.

Editor UX & Tools

  • Refined dashboard/editor selection layouts and card text rendering.
  • Moved layout designer into a lab target for safer experimentation.
  • Hardened CLI/API room loading and Asar patch handling.
  • Refreshed welcome screen and help text across desktop/CLI/web to highlight multi-provider AI workflows.

Automation & AI

  • Added agent control server support and stabilized gRPC automation hooks.
  • Expanded z3ed CLI test commands (test-list, test-run, test-status) and tool metadata.
  • Improved agent command routing and help/schema surfacing for AI clients.
  • Added OpenAI/Anthropic provider support in z3ed and refreshed AI provider docs/help.
  • Introduced vision refiner/verification hooks for AI-assisted validation.

Web/WASM Preview

  • Reduced filesystem initialization overhead and fixed /projects directory handling.
  • Hardened browser terminal integration and storage error reporting.

Platform, Build, and Tests

  • Added iOS platform scaffolding (experimental) plus build helper scripts.
  • Simplified nightly workflow, refreshed toolchain/dependency wiring, and standardized build dirs.
  • Added role-based ROM selection/availability gating and stabilized rendering/benchmark tests.
  • Hardened Windows gRPC builds by forcing Win32 macro-compat includes for gRPC targets.
  • Added AgentChat history/telemetry and agent metrics unit coverage; expanded WASM debug API checks.
  • Fixed Linux static link order for test suites and tightened Abseil linkage.
  • Release artifacts now include a release README and omit internal test helper utilities.
  • Windows ships as a portable zip (no installer) with trimmed runtime DLLs.

0.4.1 (December 2025)

Overworld Editor Fixes

Vanilla ROM Corruption Fix:

  • Fixed critical bug where save functions wrote to custom ASM address space (0x140000+) for ALL ROMs without version checking
  • SaveAreaSpecificBGColors(), SaveCustomOverworldASM(), and SaveDiggableTiles() now properly check ROM version before writing
  • Vanilla and v1 ROMs are no longer corrupted by writes to ZSCustomOverworld address space
  • Added OverworldVersionHelper with SupportsCustomBGColors() and SupportsAreaEnum() methods

Toolbar UI Improvements:

  • Increased button widths from 30px to 40px for comfortable touch targets
  • Added version badge showing "Vanilla", "v2", or "v3" ROM version with color coding
  • Added "Upgrade" button for applying ZSCustomOverworld ASM patch to vanilla ROMs
  • Improved panel toggle button spacing and column layout

Testing Infrastructure

ROM Auto-Discovery:

  • Tests now automatically discover ROMs in common locations (roms/, ../roms/, etc.)
  • Searches for common vanilla filenames: alttp_vanilla.sfc, Legend of Zelda, The - A Link to the Past (USA).sfc
  • Legacy environment variable YAZE_TEST_ROM_PATH is still supported as a fallback

Overworld Regression Tests:

  • Added 9 new regression tests for save function version checks
  • Tests verify vanilla/v1/v2/v3 ROM handling for all version-gated save functions
  • Version feature matrix validation tests added

Logging & Diagnostics

  • Added CLI controls for log level/categories and console mirroring (--log_level, --log_categories, --log_to_console); --debug now force-enables console logging at debug level.
  • Startup logging now reports the resolved level, categories, and log file destination for easier reproducibility.

Editor & Panel Launch Controls

  • --open_panels matching is case-insensitive and accepts both display names and stable panel IDs (e.g., dungeon.room_list, Room 105, welcome, dashboard).
  • New startup visibility overrides (--startup_welcome, --startup_dashboard, --startup_sidebar) let you force panels to show/hide on launch for automation or demos.
  • Welcome and dashboard behavior is coordinated through the UI layer so CLI overrides and in-app toggles stay in sync.

Documentation & Testing

  • Debugging guides refreshed with the new logging filters and startup panel controls.
  • Startup flag reference and dungeon editor guide now use panel terminology and up-to-date CLI examples for automation setups.

0.3.9 (November 2025)

AI Agent Infrastructure

Semantic Inspection API:

  • New SemanticIntrospectionEngine class providing structured game state access for AI agents
  • JSON output format optimized for LLM consumption: player state, sprites, location, game mode
  • Comprehensive name lookup tables: 243+ ALTTP sprite types, 128+ overworld areas, 27 game modes
  • Methods: GetSemanticState(), GetStateAsJson(), GetPlayerState(), GetSpriteStates()
  • Ready for multimodal AI integration with visual grounding support

Emulator Accuracy

PPU JIT Catch-up System:

  • Implemented mid-scanline raster effect support via progressive rendering
  • StartLine() and CatchUp() methods enable cycle-accurate PPU emulation
  • Integrated into WriteBBus for immediate register change rendering
  • Enables proper display of H-IRQ effects (Tales of Phantasia, Star Ocean)
  • 19 comprehensive unit tests covering all edge cases

Dungeon Sprite Encoding:

  • Complete sprite save functionality for dungeon rooms
  • Proper ROM format encoding with layer and subtype support
  • Handles sprite table pointer lookups correctly

Editor Fixes

Tile16 Palette System:

  • Fixed Tile8 source canvas showing incorrect colors
  • Fixed palette buttons 0-7 not switching palettes correctly
  • Fixed color alignment inconsistency across canvases
  • Added GetPaletteBaseForSheet() for correct palette region mapping
  • Palettes now properly use SetPaletteWithTransparent() with sheet-based offsets

Documentation

SDL3 Migration Plan:

  • Comprehensive migration plan document (58-62 hour estimate)
  • Complete audit of SDL2 usage across all subsystems
  • Identified existing abstraction layers (IAudioBackend, IInputBackend, IRenderer)
  • 5-phase migration strategy for v0.4.0

v0.4.0 Initiative Documentation:

  • Created initiative tracking document for SDL3 modernization
  • Defined milestones, agent assignments, and success criteria
  • Parallel workstream coordination protocol

0.3.2 (October 2025)

AI Agent Infrastructure

z3ed CLI Agent System:

  • Conversational Agent Service: Full chat integration with learned knowledge, TODO management, and context injection
  • Emulator Debugging Service: 20/24 gRPC debugging methods for AI-driven emulator debugging
    • Breakpoint management (execute, read, write, access)
    • Step execution (single-step, run to breakpoint)
    • Memory inspection (read/write WRAM and hardware registers)
    • CPU state capture (full 65816 registers + flags)
    • Performance metrics (FPS, cycles, audio queue)
  • Command Registry: Unified command architecture eliminating duplication across CLI/agent systems
  • Learned Knowledge Service: Persistent preferences, ROM patterns, project context, and conversation memory
  • TODO Manager: Task tracking with dependencies, execution plan generation, and priority-based scheduling
  • Advanced Router: Response synthesis and enhancement with data type inference
  • Agent Pretraining: ROM structure knowledge injection and tool usage examples

Impact Metrics:

  • Debugging Time: 3+ hours → 15 minutes (92% faster)
  • Code Iterations: 15+ rebuilds → 1-2 tool calls (93% fewer)
  • AI Autonomy: 30% → 85% (2.8x better)
  • Session Continuity: None → Full memory (∞% better)

Documentation: 2,000+ lines of comprehensive guides and real-world examples

CI/CD & Release Improvements

Release Workflow Fixes:

  • Fixed build matrix artifact upload issues (platform-specific uploads for Windows/Linux/macOS)
  • Corrected macOS universal binary merge process with proper artifact paths
  • Enhanced release to only include final artifacts (no intermediate build slices)
  • Improved build diagnostics and error reporting across all platforms

CI/CD Pipeline Enhancements:

  • Added manual workflow trigger with configurable build types and options
  • Implemented vcpkg caching for faster Windows builds
  • Enhanced Windows diagnostics (vcpkg status, Visual Studio info, disk space monitoring)
  • Added Windows-specific build failure analysis (linker errors, missing dependencies)
  • Conditional artifact uploads for CI builds with configurable retention
  • Comprehensive job summaries with platform-specific information

Rendering Pipeline Fixes

Graphics Editor White Sheets Fixed:

  • Graphics sheets now receive appropriate default palettes during ROM loading
  • Sheets 0-112: Dungeon main palettes, Sheets 113-127: Sprite palettes, Sheets 128-222: HUD/menu palettes
  • Eliminated white/blank graphics on initial load

Message Editor Preview Updates:

  • Fixed static message preview issue where changes weren't visible
  • Corrected mutable_data() usage to set_data() for proper SDL surface synchronization
  • Message preview now updates in real-time when selecting or editing messages

Cross-Editor Graphics Synchronization:

  • Added Arena::NotifySheetModified() for centralized texture management
  • Graphics changes in one editor now propagate to all other editors
  • Replaced raw printf() calls with structured LOG_* macros throughout graphics pipeline

Card-Based UI System

EditorCardManager:

  • Centralized card registration and visibility management
  • Context-sensitive card controls in main menu bar
  • Category-based keyboard shortcuts (Ctrl+Shift+D for Dungeon, Ctrl+Shift+B for browser)
  • Card browser for visual card management

Editor Integration:

  • All major editors (Dungeon, Graphics, Screen, Sprite, Overworld, Assembly, Message, Emulator) now use card system
  • Cards can be closed with X button, proper docking behavior across all editors
  • Cards hidden by default to prevent crashes on ROM load

Tile16 Editor & Graphics System

Palette System Enhancements:

  • Comprehensive palette coordination with overworld palette system
  • Sheet-based palette mapping (Sheets 0,3-6: AUX; Sheets 1-2: MAIN; Sheet 7: ANIMATED)
  • Enhanced scrollable UI layout with right-click tile picking
  • Save/discard workflow preventing ROM changes until explicit user action

Performance & Stability:

  • Fixed segmentation faults caused by tile cache std::move() operations invalidating Bitmap surface pointers
  • Disabled problematic tile cache, implemented direct SDL texture updates
  • Added comprehensive bounds checking to prevent palette crashes
  • Implemented surface/texture pooling and performance profiling

Windows Platform Stability

Build System Fixes:

  • Increased Windows stack size from 1MB to 8MB (matches macOS/Linux defaults)
  • Fixed linker errors in development utilities (extract_vanilla_values, rom_patch_utility)
  • Implemented Windows COM-based file dialog fallback for minimal builds
  • Consistent cross-platform behavior and stack resources

Emulator: Audio System Infrastructure

Audio Backend Abstraction:

  • IAudioBackend Interface: Clean abstraction layer for audio implementations, enabling easy migration between SDL2, SDL3, and custom backends
  • SDL2AudioBackend: Complete implementation with volume control, status queries, and smart buffer management (2-6 frames)
  • AudioBackendFactory: Factory pattern for creating backends with minimal coupling
  • Benefits: Future-proof audio system, easy to add platform-native backends (CoreAudio, WASAPI, PulseAudio)

APU Debugging System:

  • ApuHandshakeTracker: Monitors CPU-SPC700 communication in real-time
  • Phase Tracking: Tracks handshake progression (RESET → IPL_BOOT → WAITING_BBAA → HANDSHAKE_CC → TRANSFER_ACTIVE → RUNNING)
  • Port Activity Monitor: Records last 1000 port write events with PC addresses
  • Visual Debugger UI: Real-time phase display, port activity log, transfer progress bars, force handshake testing
  • Integration: Connected to both CPU (Snes::WriteBBus) and SPC700 (Apu::Write) port operations

Music Editor Integration:

  • Live Playback: PlaySong(int song_id) triggers songs via $7E012C memory write
  • Volume Control: SetVolume(float) controls backend volume at abstraction layer
  • Playback Controls: Stop/pause/resume functionality ready for UI integration

Documentation:

  • Created comprehensive audio system guides covering IPL ROM protocol, handshake debugging, and testing procedures

Emulator: Critical Performance Fixes

Console Logging Performance Killer Fixed:

  • Issue: Console logging code was executing on EVERY instruction even when disabled, causing severe performance degradation (< 1 FPS)
  • Impact: ~1,791,000 console writes per second with mutex locks and buffer flushes
  • Fix: Removed 73 lines of console output from CPU instruction execution hot path
  • Result: Emulator now runs at full 60 FPS

Instruction Logging Default Changed:

  • Changed: kLogInstructions flag default from true to false
  • Reason: Even without console spam, logging every instruction to DisassemblyViewer caused significant slowdown
  • Impact: No logging overhead unless explicitly enabled by user

Instruction Log Unbounded Growth Fixed:

  • Issue: Legacy instruction_log_ vector growing to 60+ million entries after 10 minutes, consuming 6GB+ RAM
  • Fix: Added automatic trimming to 10,000 most recent instructions
  • Result: Memory usage stays bounded at ~50MB

Audio Buffer Allocation Bug Fixed:

  • Issue: Audio buffer allocated as single int16_t instead of array, causing immediate buffer overflow
  • Fix: Properly allocate as array using new int16_t[size] with custom deleter
  • Result: Audio system can now queue samples without corruption

Emulator: UI Organization & Input System

New UI Architecture:

  • Created src/app/emu/ui/ directory for separation of concerns
  • EmulatorUI Layer: Separated all ImGui rendering code from emulator logic
  • Input Abstraction: IInputBackend interface with SDL2 implementation for future SDL3 migration
  • InputHandler: Continuous polling system using SDL_GetKeyboardState() instead of event-based ImGui keys

Keyboard Input Fixed:

  • Issue: Event-based ImGui::IsKeyPressed() only fires once per press, doesn't work for held buttons
  • Fix: New InputHandler uses continuous SDL keyboard state polling every frame
  • Result: Proper game controls with held button detection

DisassemblyViewer Enhancement:

  • Sparse Address Map: Mesen-style storage of unique addresses only, not every execution
  • Execution Counter: Increments on re-execution for hotspot analysis
  • Performance: Tracks millions of instructions with ~5MB RAM vs 6GB+ with old system
  • Always Active: No need for toggle flag, efficiently active by default

Feature Flags Cleanup:

  • Removed deprecated kLogInstructions flag entirely
  • DisassemblyViewer now always active with zero performance cost

Debugger: Breakpoint & Watchpoint Systems

BreakpointManager:

  • CRUD Operations: Add/Remove/Enable/Disable breakpoints with unique IDs
  • Breakpoint Types: Execute, Read, Write, Access, and Conditional breakpoints
  • Dual CPU Support: Separate tracking for 65816 CPU and SPC700
  • Hit Counting: Tracks how many times each breakpoint is triggered
  • CPU Integration: Connected to CPU execution via callback system

WatchpointManager:

  • Memory Access Tracking: Monitor reads/writes to memory ranges
  • Range-Based: Watch single addresses or memory regions ($7E0000-$7E00FF)
  • Access History: Deque-based storage of last 1000 memory accesses
  • Break-on-Access: Optional execution pause when watchpoint triggered
  • Export: CSV export of access history for analysis

CPU Debugger UI Enhancements:

  • Integrated Controls: Play/Pause/Step/Reset buttons directly in debugger window
  • Breakpoint UI: Address input (hex), add/remove buttons, enable/disable checkboxes, hit count display
  • Live Disassembly: DisassemblyViewer showing real-time execution
  • Register Display: Real-time CPU state (A, X, Y, D, SP, PC, PB, DB, flags)

Build System Simplifications

Eliminated Conditional Compilation:

  • Before: Optional flags for JSON (YAZE_WITH_JSON), gRPC (YAZE_WITH_GRPC), AI (Z3ED_AI)
  • After: All features always enabled, no configuration required
  • Benefits: Simpler development, easier onboarding, fewer ifdef-related bugs, consistent builds across all platforms
  • Build Command: Just cmake -B build && cmake --build build - no flags needed!

DisassemblyViewer Performance Limits:

  • Max 10,000 instructions stored (prevents memory bloat)
  • Auto-trim to 8,000 when limit reached (keeps hottest code paths)
  • Toggle recording on/off for performance testing
  • Clear button to free memory

Build System: Windows Platform Improvements

gRPC v1.67.1 Upgrade:

  • Issue: v1.62.0 had template instantiation errors on MSVC
  • Fix: Upgraded to v1.67.1 with MSVC template fixes and better C++17/20 compatibility
  • Result: Builds successfully on Visual Studio 2022

MSVC-Specific Compiler Flags:

  • /bigobj - Allow large object files (gRPC generates many)
  • /permissive- - Standards conformance mode
  • /wd4267 /wd4244 - Suppress harmless conversion warnings
  • /constexpr:depth2048 - Handle deep template instantiations

Cross-Platform Validation:

  • All new audio and input code uses cross-platform SDL2 APIs
  • No platform-specific code in audio backend or input abstraction
  • Ready for SDL3 migration with minimal changes

GUI & UX Modernization

  • Theme System: Implemented comprehensive theme system (AgentUITheme) centralizing all UI colors
  • UI Helper Library: Created 30+ reusable UI helper functions reducing boilerplate code by over 50%
  • Visual Polish: Enhanced UI panels with theme-aware colors, status badges, connection indicators

Overworld Editor Refactoring

  • Modular Architecture: Refactored 3,400-line OverworldEditor into smaller focused modules
  • Progressive Loading: Implemented priority-based progressive loading in gfx::Arena to prevent UI freezes
  • Critical Graphics Fixes: Resolved bugs with graphics refresh, multi-quadrant map updates, and feature visibility
  • Multi-Area Map Configuration: Robust ConfigureMultiAreaMap() handling all area sizes

Build System & Stability

  • Build Fixes: Resolved 7 critical build errors including linker issues and filesystem crashes
  • C API Separation: Decoupled C API library from main application for improved modularity

Future Optimizations (Planned)

Graphics System:

  • Lazy loading of graphics sheets (load on-demand rather than all at once)
  • Heap-based allocation for large data structures instead of stack
  • Streaming/chunked loading for large ROM assets
  • Consider if all 223 sheets need to be in memory simultaneously

Build System:

  • Further reduce CI build times
  • Enhanced dependency caching strategies
  • Improved vcpkg integration reliability

Technical Notes

Breaking Changes:

  • None - this is a patch release focused on stability and fixes

Deprecations:

  • None

Migration Guide:

  • No migration required - this release is fully backward compatible with 0.3.1

0.3.1 (September 2025)

Major Features

  • Complete Tile16 Editor Overhaul: Professional-grade tile editing with modern UI and advanced capabilities
  • Advanced Palette Management: Full access to all SNES palette groups with configurable normalization
  • Comprehensive Undo/Redo System: 50-state history with intelligent time-based throttling
  • ZSCustomOverworld v3 Full Support: Complete implementation of ZScream Save.cs functionality with complex transition calculations
  • ZEML System Removal: Converted overworld editor from markup to pure ImGui for better performance and maintainability
  • OverworldEditorManager: New management system to handle complex v3 overworld features

Tile16 Editor Enhancements

  • Modern UI Layout: Fully resizable 3-column interface (Tile8 Source, Editor, Preview & Controls)
  • Multi-Palette Group Support: Access to Overworld Main/Aux1/Aux2, Dungeon Main, Global Sprites, Armors, and Swords palettes
  • Advanced Transform Operations: Flip horizontal/vertical, rotate 90°, fill with tile8, clear operations
  • Professional Workflow: Copy/paste, 4-slot scratch space, live preview with auto-commit
  • Pixel Normalization Settings: Configurable pixel value masks (0x01-0xFF) for handling corrupted graphics sheets

ZSCustomOverworld v3 Implementation

  • SaveLargeMapsExpanded(): Complex neighbor-aware transition calculations for all area sizes (Small, Large, Wide, Tall)
  • Interactive Overlay System: Full SaveMapOverlays() with ASM code generation for revealing holes and changing map elements
  • SaveCustomOverworldASM(): Complete custom overworld ASM application with feature toggles and data tables
  • Expanded Memory Support: Automatic detection and use of v3 expanded memory locations (0x140xxx)
  • Area-Specific Features: Background colors, main palettes, mosaic transitions, GFX groups, subscreen overlays, animated tiles
  • Transition Logic: Sophisticated camera transition calculations based on neighboring area types and quadrants
  • Version Compatibility: Maintains vanilla/v2 compatibility while adding full v3+ feature support

Technical Improvements

  • SNES Data Accuracy: Proper 4-bit palette index handling with configurable normalization
  • Bitmap Pipeline Fixes: Corrected tile16 extraction using GetTilemapData() with manual fallback
  • Real-time Updates: Immediate visual feedback for all editing operations
  • Memory Safety: Enhanced bounds checking and error handling throughout
  • ASM Version Detection: Automatic detection of custom overworld ASM version for feature availability
  • Conditional Save Logic: Different save paths for vanilla, v2, and v3+ ROMs

User Interface

  • Keyboard Shortcuts: Comprehensive shortcuts for all operations (H/V/R for transforms, Q/E for palette cycling, 1-8 for direct palette selection)
  • Visual Feedback: Hover preview restoration, current palette highlighting, texture status indicators
  • Compact Controls: Streamlined property panel with essential tools easily accessible
  • Settings Dialog: Advanced palette normalization controls with real-time application
  • Pure ImGui Layout: Removed ZEML markup system in favor of native ImGui tabs and tables for better performance
  • v3 Settings Panel: Dedicated UI for ZSCustomOverworld v3 features with ASM version detection and feature toggles

Bug Fixes

  • Tile16 Bitmap Display: Fixed blank/white tile issue caused by unnormalized pixel values
  • Hover Preview: Restored tile8 preview when hovering over tile16 canvas
  • Canvas Scaling: Corrected coordinate scaling for 8x magnification factor
  • Palette Corruption: Fixed high-bit contamination in graphics sheets
  • UI Layout: Proper column sizing and resizing behavior
  • Linux CI/CD Build: Fixed undefined reference errors for ShowSaveFileDialog method
  • ZSCustomOverworld v3: Fixed complex area transition calculations and neighbor-aware tilemap adjustments
  • ZEML Performance: Eliminated markup parsing overhead by converting to native ImGui components

ZScream Compatibility Improvements

  • Complete Save.cs Implementation: All major methods from ZScream's Save.cs now implemented in YAZE
  • Area Size Support: Full support for Small, Large, Wide, and Tall area types with proper transitions
  • Interactive Overlays: Complete overlay save system matching ZScream's functionality
  • Custom ASM Integration: Proper handling of ZSCustomOverworld ASM versions 1-3+
  • Memory Layout: Correct usage of expanded vs vanilla memory locations based on ROM type

0.3.0 (September 2025)

Major Features

  • Complete Theme Management System: 5+ built-in themes with custom theme creation and editing
  • Multi-Session Workspace: Work with multiple ROMs simultaneously in enhanced docked interface
  • Enhanced Welcome Screen: Themed interface with quick access to all editors and features
  • Asar 65816 Assembler Integration: Complete cross-platform ROM patching with assembly code
  • ZSCustomOverworld v3: Full integration with enhanced overworld editing capabilities
  • Advanced Message Editing: Enhanced text editing interface with improved parsing and real-time preview
  • GUI Docking System: Improved docking and workspace management for better user workflow
  • Symbol Extraction: Extract symbol names and opcodes from assembly files
  • Modernized Build System: Upgraded to CMake 3.16+ with target-based configuration

User Interface & Theming

  • Built-in Themes: Classic YAZE, YAZE Tre, Cyberpunk, Sunset, Forest, and Midnight themes
  • Theme Editor: Complete custom theme creation with save-to-file functionality
  • Animated Background Grid: Optional moving grid with color breathing effects
  • Theme Import/Export: Share custom themes with the community
  • Responsive UI: All UI elements properly adapt to selected themes

Enhancements

  • Enhanced CLI Tools: Improved z3ed with modern command line interface and TUI
  • CMakePresets: Added development workflow presets for better productivity
  • Cross-Platform CI/CD: Multi-platform automated builds and testing with lenient code quality checks
  • Professional Packaging: NSIS, DMG, and DEB/RPM installers
  • ROM-Dependent Testing: Separated testing infrastructure for CI compatibility with 46+ core tests
  • Comprehensive Documentation: Updated guides, help menus, and API documentation

Technical Improvements

  • Modern C++23: Latest language features for performance and safety
  • Memory Safety: Enhanced memory management with RAII and smart pointers
  • Error Handling: Improved error handling using absl::Status throughout
  • Cross-Platform: Consistent experience across Windows, macOS, and Linux
  • Performance: Optimized rendering and data processing

Bug Fixes

  • Graphics Arena Crash: Fixed double-free error during Arena singleton destruction
  • SNES Tile Format: Corrected tile unpacking algorithm based on SnesLab documentation
  • Palette System: Fixed color conversion functions (ImVec4 float to uint8_t conversion)
  • CI/CD: Fixed missing cstring include for Ubuntu compilation
  • ROM Loading: Fixed file path issues in tests

0.2.2 (December 2024)

Core Features

  • DungeonMap editing improvements
  • ZSCustomOverworld support
  • Cross platform file handling

0.2.1 (August 2024)

  • Improved MessageEditor parsing
  • Added integration test window
  • Bitmap bug fixes

0.2.0 (July 2024)

  • iOS app support
  • Graphics Sheet Browser
  • Project Files

0.1.0 (May 2024)

  • Bitmap bug fixes
  • Error handling improvements

0.0.9 (April 2024)

  • Documentation updates
  • Entrance tile types
  • Emulator subsystem overhaul

0.0.8 (February 2024)

  • Hyrule Magic Compression
  • Dungeon Room Entrances
  • PNG Export

0.0.7 (January 2024)

  • OverworldEntities
    • Entrances
    • Exits
    • Items
    • Sprites

0.0.6 (November 2023)

  • ScreenEditor DungeonMap
  • Tile16 Editor
  • Canvas updates

0.0.5 (November 2023)

  • DungeonEditor
  • DungeonObjectRenderer

0.0.4 (November 2023)

  • Tile16Editor
  • GfxGroupEditor
  • Add GfxGroups functions to Rom
  • Add Tile16Editor and GfxGroupEditor to OverworldEditor

0.0.3 (October 2023)

  • Emulator subsystem
    • SNES PPU and PPURegisters