Welcome to a nightmare realm infested with evil and consumed by darkness...where the line between the living and the dead is rotting away...
Necrosis was named a Top Ten Haunted House (2021, 2022, 2023, 2024) by HauntedIllinois.com. We enter our seventh season of fear in 2025 and invite you to experience our best show yet.
Necrosis will continue utilizing timed ticketing for the 2025 season to reduce wait times and improve the customer experience. Please see our ticketing page for more details.







[ LZ77-compressed binary blob ] ↓ decompress [ UTF-8 string (JSON with __class metadata) ] ↓ JsonEx.parse [ JavaScript object (save contents) ] Unlike older .rvdata2 (which started with a Marshal header), .rmmzsave has no fixed magic signature because the first few bytes are LZ77-compressed data. However, the very first byte often indicates the compression method (e.g., 0x78 for zlib’s deflate). Tools like binwalk often detect it as zlib compressed data . Decompressed Sample Snippet (Anonymized) After decompression, you’ll see a JSON-like string such as:
"__class": "Object", "system": "__class": "Game_System", ... , "actors": [ "__class": "Game_Actor", "_actorId": 1, "_level": 5, "_hp": 234, ... ], "party": "__class": "Game_Party", "_gold": 1250, "_items": ... , "map": "__class": "Game_Map", "_mapId": 2, "_displayX": 0, ... , "switches": "__class": "Game_Switches", "_data": [...] , "variables": "__class": "Game_Variables", "_data": [...] , "selfSwitches": "__class": "Game_SelfSwitches", "_data": ... rmmzsave
const contents = JsonEx.parse(StorageManager.load(savefileId)); DataManager.extractSaveContents(contents); The critical detail: . It injects metadata (e.g., "__class": "Game_Actor" ) so that JsonEx.parse can reconstruct full objects with their prototypes. 3. Binary Structure of an .rmmzsave File Despite being generated from JSON, an .rmmzsave file is not human-readable in a text editor. That’s because the engine compresses it using LZ77 compression (specifically a variant of pako ’s raw deflate) after serialization and before writing to disk. [ LZ77-compressed binary blob ] ↓ decompress [
All game state data (except graphics/sounds) is included. The file size typically ranges from , growing with variables, switch usage, and event states. 4. Key Differences from Older Save Formats | Engine | Extension | Serialization | Compression | Custom class support | |--------|-----------|---------------|-------------|----------------------| | XP | .rxdata | Ruby Marshal (binary) | None | Native Ruby | | VX / VX Ace | .rvdata2 | Ruby Marshal | None | Native Ruby | | MV | .rpgsave | JSON + JsonEx | LZ77 (pako) | Via __class | | MZ | .rmmzsave | JSON + JsonEx | LZ77 (pako) | Via __class | , "map": "__class": "Game_Map", "_mapId": 2, "_displayX": 0,
StorageManager.save(savefileId, JsonEx.stringify(DataManager.makeSaveContents())); When loading:
Introduction For over two decades, RPG Maker has empowered hobbyists and indie developers to craft narrative-driven role-playing games. Each major version of the engine has iterated not only on its visual capabilities and scripting language but also on its fundamental data structures. With RPG Maker MZ, introduced in late 2020, the engine adopted a new, more robust save file extension: .rmmzsave .
The structure is layered: