edafa79dea90883547a9176f02a166cec48b89b5
- Introduced a new app icon file (yaze.icns) for the macOS bundle. - Updated CMake configuration to set macOS bundle properties, including icon file, bundle name, executable name, and versioning information. - Removed outdated macOS bundle settings to streamline the configuration process.
YAZE - Yet Another Zelda3 Editor
A modern, cross-platform editor for The Legend of Zelda: A Link to the Past ROM hacking, built with C++23 and featuring complete Asar 65816 assembler integration.
🚀 Version 0.3.0 - Major Release
Complete Asar Integration • Modern Build System • Enhanced CLI Tools • Professional CI/CD
✨ Key Features
Asar 65816 Assembler Integration
- Cross-platform ROM patching with assembly code support
- Symbol extraction with addresses and opcodes from assembly files
- Assembly validation with comprehensive error reporting
- Modern C++ API with safe memory management
ZSCustomOverworld v3
- Enhanced overworld editing capabilities
- Advanced map properties and metadata support
- Custom graphics support and tile management
- Improved compatibility with existing projects
Advanced Features
- Message Editing: Enhanced text editing interface with real-time preview
- GUI Docking: Flexible workspace management with customizable layouts
- Modern CLI: Enhanced z3ed tool with interactive TUI and subcommands
- Cross-Platform: Full support for Windows, macOS, and Linux
🛠️ Technical Improvements
- Modern CMake 3.16+: Target-based configuration and build system
- CMakePresets: Development workflow presets for better productivity
- Cross-platform CI/CD: Automated builds and testing for all platforms
- Professional packaging: NSIS, DMG, and DEB/RPM installers
- Enhanced testing: ROM-dependent test separation for CI compatibility
🏗️ Quick Start
Prerequisites
- CMake 3.16+
- C++23 Compiler (GCC 13+, Clang 16+, MSVC 2022 17.8+)
- Git with submodule support
Build
# Clone with submodules
git clone --recursive https://github.com/scawful/yaze.git
cd yaze
# Build with presets
cmake --preset dev
cmake --build --preset dev
# Run tests
ctest --preset stable
Targets
- yaze: GUI Editor Application with docking system
- z3ed: Enhanced CLI Tool with Asar integration and TUI
- yaze_c: C Library for extensions and custom tools
- yaze_test: Comprehensive test suite executable
- yaze_emu: Standalone SNES emulator application
💻 Usage Examples
Asar Assembly Patching
# Apply assembly patch to ROM
z3ed asar my_patch.asm --rom=zelda3.sfc
✅ Asar patch applied successfully!
📁 Output: zelda3_patched.sfc
🏷️ Extracted 6 symbols:
main_routine @ $008000
data_table @ $008020
# Extract symbols without patching
z3ed extract my_patch.asm
# Validate assembly syntax
z3ed validate my_patch.asm
✅ Assembly file is valid
# Launch interactive TUI
z3ed --tui
C++ API Usage
#include "app/core/asar_wrapper.h"
yaze::app::core::AsarWrapper wrapper;
wrapper.Initialize();
// Apply patch to ROM
auto result = wrapper.ApplyPatch("patch.asm", rom_data);
if (result.ok() && result->success) {
for (const auto& symbol : result->symbols) {
std::cout << symbol.name << " @ $"
<< std::hex << symbol.address << std::endl;
}
}
📚 Documentation
Core Documentation
- Getting Started - Basic setup and usage
- Build Instructions - Detailed build guide
- Asar Integration - Complete 65816 assembler guide
- API Reference - C/C++ API documentation
Development
- Testing Guide - Comprehensive testing framework
- Contributing - Development guidelines and standards
- Changelog - Version history and changes
- Roadmap - Development plans and timeline
Technical Documentation
- Assembly Style Guide - 65816 assembly coding standards
- Dungeon Editor Guide - Complete dungeon editing guide
- Overworld Loading - ZSCustomOverworld v3 implementation
🔧 Supported Platforms
- Windows: Full support with MSVC and MinGW compilers
- macOS: Universal binaries supporting Intel and Apple Silicon
- Linux: GCC and Clang support with package management
- Professional Packaging: Native installers for all platforms
🎮 ROM Compatibility
- Vanilla ROMs: Original Zelda 3 ROMs (US/JP)
- ZSCustomOverworld v2/v3: Enhanced overworld features and compatibility
- Custom Modifications: Support for community ROM hacks and modifications
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for:
- Code style and C++23 standards
- Testing requirements and ROM handling
- Pull request process and review guidelines
- Development setup with CMake presets
Community
- Discord: Oracle of Secrets Discord
- GitHub Issues: Report bugs and request features
- Discussions: Community discussions and support
📄 License
YAZE is distributed under the GNU GPL v3 license.
Third-party libraries (SDL2, ImGui, Abseil) are subject to their respective licenses.
🙏 Acknowledgments
Takes inspiration from:
- Hyrule Magic - Original Zelda 3 editor
- ZScream - Dungeon editing capabilities
- Asar - 65816 assembler integration
📸 Screenshots
Ready to hack Zelda 3? Get started now!
Description
Languages
C++
85.8%
JavaScript
3.7%
Assembly
2.3%
CMake
2%
Shell
1.6%
Other
4.6%