NOTE: I MOVED TO GITLAB, THE NEW REPO CAN BE FOUND HERE.
GameMaker: Studio data.win
unpacker and decompiler (non-YYC, specifically made for Undertale), based on libaltar and Mirrawrs' data site (followed by my corrections/completions here and here).
Contains a lot of pointer-littered spaghetti code, because it's basically a continuation of libaltar, but in C#.
I'm not sure if this counts as 'redistribution of modified [libaltar] source', but including their notice just in case.
altar <verb>? [--help|-h]
altar [--version|-v]
altar <verb> <options...>
(NOTE: use ./altar
if it is not added to your %PATH%
yet, but resides in the current dir. Not applicable to CMD
(but you shouldn't be using that).)
(NOTE: use mono altar.exe <args...>
on mono (should be obvious).)
Verbs:
export
: export parts from adata.win
file. Options:-[gonsbpiformtacduwh]* --absolute --project --file --out
file
: Path to thedata.win
file to export.out
: The output directory.project
: Emit a project file that can be recompiled by Altar.NET (In a later version, this is currently not implemented or anything.).gonsbpiformtacduwh
: Select which parts of thedata.win
should be exported. Runaltar export --help
for more info.absolute
: Display absolute instruction offsets in decompiled/disassembled code, instead of relative to the first instruction.
To read a data.win
file:
using Altar;
// [...]
using (var f = GMFile.GetFile(path_to_file)) // NOTE: the file's content (as a byte array) can be passed instead
{
// using 'f' should be straightforward enough with IntelliSense/...
// disassemble code:
Disassembler.DisplayInstructions(f, 0); // disassembles the code with ID=0
// decompile code:
Decompiler.DecompileCode(f, 0);
}