scawful edafa79dea Add macOS app icon and bundle properties; remove deprecated settings
- 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.
2025-09-26 10:04:29 -04:00
2024-12-31 15:04:05 -05:00

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.

Build Status License: GPL v3

🚀 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

Development

Technical Documentation

Complete Documentation Index

🔧 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:

📸 Screenshots

YAZE GUI Editor

Dungeon Editor

Overworld Editor


Ready to hack Zelda 3? Get started now!

Description
Yet Another Zelda3 Editor
Readme 34 MiB
Languages
C++ 85.8%
JavaScript 3.7%
Assembly 2.3%
CMake 2%
Shell 1.6%
Other 4.6%