Files
yaze/docs/infrastructure.md
2024-08-10 21:06:44 -04:00

3.2 KiB

Infrastructure Overview

For developers to reference.

The goal of yaze is to build a cross platform editor for the Legend of Zelda: A Link to the Past. The project is built using C++20, SDL2, and ImGui. The project is built using CMake and is designed to be modular and extensible. The project is designed to be built on Windows, macOS, iOS, and Linux.

Targets

  • yaze: Desktop application for Windows/macOS/Linux
  • z3ed: Command Line Interface
  • yaze_c: C Library
  • yaze_py: Python Module
  • yaze_ext: Extensions library
  • yaze_test: Unit test executable
  • yaze_ios: iOS application

Directory Structure

  • assets: Hosts assets like fonts, icons, assembly source, etc.
  • cmake: Contains CMake configurations.
  • docs: Contains documentation for users and developers.
  • src: Contains source files.
    • app: Contains the GUI editor yaze
    • base: Contains the base data headers for yaze_c
    • cli: Contains the command line interface z3ed
    • ext: Contains the extensions library yaze_ext
    • ios: Contains the iOS application yaze_ios
    • lib: Contains the dependencies as git submodules
    • py: Contains the Python module yaze_py
    • test: Contains testing interface yaze_test

Dependencies

See build-instructions.md for more information.

  • SDL2: Graphics library
  • ImGui: GUI library
  • Abseil: C++ library
  • libpng: Image library
  • Boost: Python library

Flow of Control

Rom

The Rom class provides methods to manipulate and access data from a ROM.

Bitmap

This class is responsible for creating, managing, and manipulating bitmap data, which can be displayed on the screen using SDL2 Textures and the ImGui draw list. It also provides functions for exporting these bitmaps to the clipboard in PNG format using libpng.