Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


GameMaker Studio decompiler in F#

Subscribe to updates I use GMSD

Statistics on GMSD

Number of watchers on Github 26
Number of open issues 3
Average time to close an issue 17 days
Main language F#
Open pull requests 1+
Closed pull requests 0+
Last commit almost 4 years ago
Repo Created over 4 years ago
Repo Last Updated over 2 years ago
Size 18 KB
Organization / Authorlynn
Page Updated
Do you use GMSD? Leave a review!
View open issues (3)
View GMSD activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating GMSD for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


This decompiler doesnt work with the latest GMS version. The project is on hiatus check out Altar.NET instead.

A (non-YYC) GameMaker Studio decompiler in F#.

Installation and Usage

Retrieve the data.win file from your game's .exe. Compile this project with Visual Studio 2013 or later, and run it as GMSD.exe [-f] data.win. If you pass the -f flag, each script will be written to a text file in a new directory called ./src; if you don't, you'll see it all in your console.

Example output

To show off what the program currently can and can't do: disassembly and decompilation work fine, but are limited. Expression folding is very powerful, but branch instructions lack structure, and some names get lost.

Original nonsense code:

x += 1
if (x == 10)
    show_debug_message("Hi, world!")
instance_create(0, 0, foo)


=================== gml_Object_foo_Create_0 ===================
00000a48 Self.x = Self.x + 1s
00000a60 push Self.x == 10s
00000a70 IfFalse goto 00000a8c
00000a74 show_debug_message[]("Hi, world!")
00000a8c instance_create[](0s, 0s, 0s)

Miscellaneous stuff

This is currently still being worked on, slowly. Right now, the output is readable if you squint, but it's still spaghetti code, and looks nothing like GML... Expect more cool results soon.

I based this program on these two documents: (1) (2) Countless thanks to Mirrawrs for helping me out with some details.

This project is MIT-licensed. Read LICENSE.md for more info.

GMSD open issues Ask a question     (View All Issues)
  • over 4 years Doesn't work with Undertale 1.001 Beta
GMSD open pull requests (View All Pulls)
  • A message for linn
GMSD list of languages used
Other projects in F#