Skip to content

cursey/regenny

Repository files navigation

ReGenny

GitHub Build Action

Usage & Scripting Documentation

ReGenny is a reverse engineering tool to interactively reconstruct structures and generate usable C++ header files. Header file generation is done by the sister project SdkGenny.

Early build preview

Status

ReGenny is still early in development but is usable. Things may change unexpectedly. Existing projects may break and need to be updated. Many more features are planned. There will be bugs.

Download

ReGenny is under active development. Any published builds (or lack thereof) may be out of date. It is advised that if you want to use ReGenny in its current form that you build ReGenny yourself. However, you may be able to grab the latest artifact from GitHub actions here.

Building

ReGenny uses CMake via the help of cmkr.

From the command line:

cmake -B build
cmake --build build

Design decisions

  • ReGenny uses plaintext project files instead of binary ones (.genny and .json). Plaintext formats are much better for inclusion in git repositories and makes collaborating with others on ReGenny projects easier since you can diff/merge project files.
  • Tree based display (like ReClass.NET) but you build the tree using .genny files.
  • ReGenny uses SdkGenny for output. One of SdkGenny's primary goals is to generate good output and ReGenny reaps all the benefits from that. Instead of a single monolithic header file, ReGenny uses SdkGenny to generate a proper header file hierarchy for inclusion into your project. If your project is already using SdkGenny then you don't even need to generate header files since you can just use the .genny file directly.
  • Since ReGenny uses SdkGenny, it supports everything .genny files do:
    • Namespaces
    • Enums
    • Structs
    • Classes
    • Function prototypes
    • Static function prototypes
    • Bitfields
    • Arrays
    • Multi-dimensional arrays
    • Pointers
    • Namespaces can be nested within each other
    • Structs, enums and classes can be nested within other structs/classes
    • Bring your own external types
  • The .genny format is flexible enough to parse simple C/C++ structures directly with zero (or minimal) modification making importing existing structures into ReGenny easy.