Ruby source out of XP, VX and VX Ace archives — and MV and MZ assets decrypted.
The file's header decides which generation it is, so a renamed archive or a mislabelled asset still works.
An archive's obfuscation is undone and its whole tree extracted. A project or APK is searched for its encryption key.
Ruby scripts are uncompressed into one .rb each; MV and MZ media is restored to real .png and .ogg files.
"RPG Maker" covers two generations that have almost nothing in common once you open the files, so this page does two quite different things depending on what you upload.
XP, VX and VX Ace are Ruby, and recovering them is the real prize. The engine keeps everything you typed into its script editor inside Data/Scripts.rxdata, Scripts.rvdata or Scripts.rvdata2, serialised with Ruby's Marshal and compressed with zlib. Nothing was ever compiled, so what comes back is the original file — comments, blank lines, indentation and all. This is source recovery, not decompilation, and the difference is visible the moment you open the result.
MV and MZ are JavaScript, and there is nothing to decompile at all: the engine and every plugin ship as readable .js. What those versions do instead is obfuscate the media, and that is what gets undone here.
Game.rgssad, Game.rgss2a, Game.rgss3a — the whole game in one file. Everything inside is extracted and the Ruby is recovered into a Scripts/ folder.Scripts.rvdata2 on its own — if you already unpacked the archive with another tool, this is all you need..rpgmvp, .rpgmvo, .png_, .ogg_ or .m4a_ — decrypted back to real media..apk — the usual Java, resources and smali output, with the game itself added beside it.MV and MZ "encryption" prepends a 16-byte header and XORs only the first 16 bytes of the real file against a key. Everything past that is the untouched original. The key sits in cleartext in the game's own www/data/System.json under encryptionKey, so uploading a project or an APK finds it automatically.
A single asset with no project around it looks like a dead end, and for images it is not. Every PNG begins with the same 16 bytes — the 8-byte signature, then the length and type of the IHDR chunk — and those are precisely the bytes the key was applied to. The key is therefore not guessed, it is read back out of the file. One image from a game is enough to decrypt that game's audio too.
Audio has no fixed prefix of its own, so a lone .rpgmvo with an unknown key falls back to the empty-password default and, failing that, says so rather than writing a corrupt file. A decrypted file is only kept when it really carries the signature its name promises.
From an XP, VX or VX Ace archive:
Scripts/ — one .rb per entry, numbered in the order the engine loads them, because that order is what makes the game run.Data/, Graphics/, Audio/ — the archive's own tree, exactly as it was packed.From an MV or MZ project or APK:
js/ — the engine and the game's plugins, already readable.data/ — maps, actors, events and the rest of the database as JSON.decrypted/ — the obfuscated media, restored to ordinary .png, .ogg and .m4a under its original paths.Scripts.* is deserialised. The other .rxdata and .rvdata files are maps and database records built from the engine's own Ruby classes. They are extracted as they were packed but never rebuilt into objects, because doing that means letting an uploaded file name a class to instantiate..png that opens to nothing is worse than an honest note.There never was one. An RPG Maker VX archive is named Game.rgss2a but declares version 1 in its header and uses XP's obfuscation scheme unchanged. Only VX Ace, at version 3, is genuinely different.
Yes. The stock VX Ace project ships section headers like ▼ 素材 in its script list, and those names are kept.
Those are the separator rows in the script editor: a name and no code. A stock project has around fifteen of them, and they are kept so the numbering matches the list you would see in the editor.
Different engine, similar situation. Ren'Py compiles .rpy scripts to .rpyc and packs assets into .rpa archives; both are handled on the Python and Ren'Py decompiler page.
No. Nothing from the uploaded file is executed at any point — the archive is read as bytes and the assets are decrypted arithmetically.
2000 and 2003 predate the RGSSAD format and store their events in .lmu and .ldb files, which are not handled here. Unite is a Unity project — use the Unity decompiler for those.