feat: Implement ROM version management and proposal approval system

- Introduced `RomVersionManager` for managing ROM snapshots, including automatic backups, manual checkpoints, and corruption detection.
- Added `ProposalApprovalManager` to facilitate collaborative proposal submissions and voting, enhancing team workflows.
- Updated `CollaborationPanel` to integrate version management features, allowing users to track changes and manage proposals effectively.
- Enhanced documentation to reflect new functionalities and usage instructions for version management and collaboration features.
This commit is contained in:
scawful
2025-10-04 22:33:06 -04:00
parent 253f36542f
commit 3b406ab671
15 changed files with 1183 additions and 78 deletions

View File

@@ -1,56 +1,65 @@
# Getting Started
This software allows you to modify "The Legend of Zelda: A Link to the Past" (US or JP) ROMs. Built for compatibility with ZScream projects and designed to be cross-platform.
This software allows you to modify "The Legend of Zelda: A Link to the Past" (US or JP) ROMs. It is built for compatibility with ZScream projects and designed to be cross-platform.
## Quick Start
1. **Download** the latest release for your platform
2. **Load ROM** via File > Open ROM
3. **Select Editor** from the toolbar (Overworld, Dungeon, Graphics, etc.)
4. **Make Changes** and save your project
1. **Download** the latest release for your platform from the [releases page](https://github.com/scawful/yaze/releases).
2. **Load ROM** via `File > Open ROM`.
3. **Select an Editor** from the main toolbar (e.g., Overworld, Dungeon, Graphics).
4. **Make Changes** and save your project.
## General Tips
- **Experiment Flags**: Enable/disable features in File > Options > Experiment Flags
- **Backup Files**: Enabled by default - each save creates a timestamped backup
- **Extensions**: Load custom tools via the Extensions menu (C library and Python module support)
- **Experiment Flags**: Enable or disable new features in `File > Options > Experiment Flags`.
- **Backup Files**: Enabled by default. Each save creates a timestamped backup of your ROM.
- **Extensions**: Load custom tools via the `Extensions` menu (C library and Python module support is planned).
## Supported Features
## Feature Status
| Feature | Status | Details |
|---------|--------|---------|
| Overworld Maps | ✅ Complete | Edit and save tile32 data |
| OW Map Properties | ✅ Complete | Edit and save map properties |
| OW Entrances | ✅ Complete | Edit and save entrance data |
| OW Exits | ✅ Complete | Edit and save exit data |
| OW Sprites | 🔄 In Progress | Edit sprite positions, add/remove sprites |
| Dungeon Editor | 🔄 In Progress | View room metadata and edit room data |
| Palette Editor | 🔄 In Progress | Edit and save palettes, palette groups |
| Graphics Sheets | 🔄 In Progress | Edit and save graphics sheets |
| Graphics Groups | ✅ Complete | Edit and save graphics groups |
| Hex Editor | ✅ Complete | View and edit ROM data in hex |
| Asar Patching | ✅ Complete | Apply Asar 65816 assembly patches to ROM |
|---|---|---|
| Overworld Editor | ✅ Complete | Full support for vanilla and ZSCustomOverworld v2/v3. |
| Dungeon Editor | ✅ Complete | Stable, component-based editor for rooms, objects, and sprites. |
| Tile16 Editor | ✅ Complete | Professional-grade tile editor with advanced palette management. |
| Palette Editor | ✅ Complete | Edit and save all SNES palette groups. |
| Graphics Editor | ✅ Complete | View and edit graphics sheets and groups. |
| Sprite Editor | ✅ Complete | Edit sprite properties and attributes. |
| Message Editor | ✅ Complete | Edit in-game text and dialogue. |
| Hex Editor | ✅ Complete | View and edit raw ROM data. |
| Asar Patching | ✅ Complete | Apply Asar 65816 assembly patches to the ROM. |
## Command Line Interface
## Command-Line Interface (`z3ed`)
The `z3ed` CLI tool provides ROM operations:
`z3ed` is a powerful, AI-driven CLI for inspecting and editing ROMs.
### AI Agent Chat
Chat with an AI to perform edits using natural language.
```bash
# Apply Asar assembly patch
z3ed asar patch.asm --rom=zelda3.sfc
# Start an interactive chat session with the AI agent
z3ed agent chat --rom zelda3.sfc
```
> **Prompt:** "What sprites are in dungeon 2?"
# Extract symbols from assembly
z3ed extract patch.asm
### Resource Inspection
Directly query ROM data.
# Validate assembly syntax
z3ed validate patch.asm
```bash
# List all sprites in the Eastern Palace (dungeon 2)
z3ed dungeon list-sprites --rom zelda3.sfc --dungeon 2
# Launch interactive TUI
z3ed --tui
# Get information about a specific overworld map area
z3ed overworld describe-map --rom zelda3.sfc --map 80
```
### Patching
Apply assembly patches using the integrated Asar assembler.
```bash
# Apply an assembly patch to the ROM
z3ed asar patch.asm --rom zelda3.sfc
```
## Extending Functionality
YAZE provides a pure C library interface and Python module for building extensions and custom sprites without assembly. Load these under the Extensions menu.
This feature is still in development and not fully documented yet.
YAZE is designed to be extensible. Future versions will support a full plugin architecture, allowing developers to create custom tools and editors. The C API, while available, is still under development.

View File

@@ -1,42 +1,29 @@
# yaze Documentation
Yet Another Zelda3 Editor - A comprehensive ROM editor for The Legend of Zelda: A Link to the Past.
Welcome to the official documentation for yaze, a comprehensive ROM editor for The Legend of Zelda: A Link to the Past.
## Quick Start
## Core Guides
- [Getting Started](01-getting-started.md) - Basic setup and usage
- [Build Instructions](02-build-instructions.md) - Cross-platform build guide
- [API Reference](04-api-reference.md) - C/C++ API documentation
- [Getting Started](01-getting-started.md) - Basic setup and usage.
- [Build Instructions](02-build-instructions.md) - How to build yaze on Windows, macOS, and Linux.
- [z3ed CLI Guide](z3ed/README.md) - The AI-powered command-line interface.
## Development
## Development & API
- [Testing Guide](A1-testing-guide.md) - Testing framework and best practices
- [Platform Compatibility](B2-platform-compatibility.md) - Cross-platform support details
- [Build Presets](B3-build-presets.md) - CMake preset usage guide
- [Release Workflows](B4-release-workflows.md) - GitHub Actions release pipeline documentation
- [Stability Improvements](B5-stability-improvements.md) - Performance optimizations and reliability enhancements
- [API Reference](04-api-reference.md) - C/C++ API documentation for extensions.
- [Testing Guide](A1-testing-guide.md) - The testing framework and best practices.
- [Assembly Style Guide](E1-asm-style-guide.md) - 65816 assembly coding standards.
- [Build Presets](B3-build-presets.md) - A guide to the CMake preset system.
- [Release Workflows](B4-release-workflows.md) - GitHub Actions release pipeline documentation.
## Technical Documentation
### Assembly & Code
- [Assembly Style Guide](E1-asm-style-guide.md) - 65816 assembly coding standards
### Editor Systems
- [Dungeon Editor Master Guide](dungeon_editor_master_guide.md) - Complete dungeon editing guide
### Overworld System
- [Overworld Loading](F1-overworld-loading.md) - ZSCustomOverworld v3 implementation
## Key Features
- Complete GUI editor for all aspects of Zelda 3 ROM hacking
- Integrated Asar 65816 assembler for custom code patches
- ZSCustomOverworld v3 support for enhanced overworld editing
- Cross-platform support (Windows, macOS, Linux)
- Modern C++23 codebase with comprehensive testing
- **Windows Development**: Automated setup scripts, Visual Studio integration, vcpkg package management
- **CMake Compatibility**: Automatic handling of submodule compatibility issues (abseil-cpp, SDL)
- [Dungeon Editor Guide](D2-dungeon-editor-guide.md) - A master guide to the dungeon editing system.
- [Canvas Guide](G2-canvas-guide.md) - The core GUI drawing and interaction system.
- [Overworld Loading](F1-overworld-loading.md) - How vanilla and ZSCustomOverworld maps are loaded.
- [Platform Compatibility](B2-platform-compatibility.md) - Cross-platform support details.
- [Tile16 Editor Palette System](E7-tile16-editor-palette-system.md) - Design of the palette system.
---
*Last updated: December 2025 - Version 0.3.2*
*Last updated: October 2025 - Version 0.3.2*

View File

@@ -895,7 +895,9 @@ The AI response appears in your chat history and can reference specific details
- **Multimodal Vision Testing**: Comprehensive test suite for Gemini vision capabilities with screenshot integration
- **AI-Controlled GUI Automation**: Natural language parsing (`AIActionParser`) and test script generation (`GuiActionGenerator`) for automated tile placement
- **gRPC Windows Build Optimization**: vcpkg integration for 10-20x faster Windows builds, removed abseil-cpp submodule
- **Collaboration UI Panel**: New `CollaborationPanel` widget with ROM sync history, snapshot gallery, and proposal management
- **ROM Version Management System**: `RomVersionManager` with automatic snapshots, safe points, corruption detection, and rollback capabilities
- **Proposal Approval Framework**: `ProposalApprovalManager` with host/majority/unanimous voting modes to protect ROM from unwanted changes
- **Collaboration UI Panel**: `CollaborationPanel` widget with version history, ROM sync tracking, snapshot gallery, and approval workflow
- **Improved Documentation**: Consolidated architecture, enhancement plans, and build instructions with JSON-first approach
## 12. Troubleshooting