f you've ever tried dragging a .mcl map file from a newer client (EP36+) into an older EP35-and-below client, you probably know the drill:
- Client freezes/crashes the moment you try to enter the map
- TMap Converter throws an error and refuses to open the file
- If you force it through some hex-editing, you end up with scrambled doodads, missing water/terrain effects, and objects floating in the wrong place
I hit this wall while porting some newer maps into an older-generation client and ended up reverse engineering exactly what changes between the two .mcl generations. Turns out it's not one bug, it's two, stacked on top of each other:
1. Every doodad record from index 1 onward has an extra padding byte inserted before it (doodad[0] is untouched). If you don't strip it, every object after the first reads garbage — this is the "freeze on enter" bug.
2. There's a second, separate 1-byte insertion right between the unk0 array and the big 256x256 tile-flag block (unkuba0). This one is sneaky because it doesn't break the file's total length, so a naive fix (just correcting #1) still "works" but leaves your water/walkable-tile data silently misaligned — which is why some people report normal-looking maps with broken/glitched water even after doing the doodad fix.
I built a small local tool (Python + a browser UI, runs on your own PC, nothing uploaded anywhere) that:
- Scans two client folders (yours + the source you're porting from) and shows you, map by map, exactly what's wrong: byte-shift needed, version byte mismatch, missing Object\ models, missing World\worldN.enc
- Converts with one click — backs up your existing file first, patches both byte-shift bugs, fixes the header version byte, copies over any missing model files automatically
- Also has a drag-and-drop mode if you just want to fix one .mcl file on the spot, no client folders needed
- PT/EN interface, dark "frozen tundra" theme because why not
Verified byte-for-byte against known-good already-converted reference maps — not guesswork, the output matches exactly (aside from the intentional version byte patch).
Currently tested/confirmed working on several maps; a chunk of older maps use a third, still-undocumented header variant that the tool correctly detects and refuses to touch rather than risk corrupting your files — that part's still being reverse engineered.
Credits: Maxxor
Discord: xxmaxxorxx
Feedback and bug reports welcome — if you hit a map that fails to convert, send it my way and I'll add it to the investigation list.
- Client freezes/crashes the moment you try to enter the map
- TMap Converter throws an error and refuses to open the file
- If you force it through some hex-editing, you end up with scrambled doodads, missing water/terrain effects, and objects floating in the wrong place
I hit this wall while porting some newer maps into an older-generation client and ended up reverse engineering exactly what changes between the two .mcl generations. Turns out it's not one bug, it's two, stacked on top of each other:
1. Every doodad record from index 1 onward has an extra padding byte inserted before it (doodad[0] is untouched). If you don't strip it, every object after the first reads garbage — this is the "freeze on enter" bug.
2. There's a second, separate 1-byte insertion right between the unk0 array and the big 256x256 tile-flag block (unkuba0). This one is sneaky because it doesn't break the file's total length, so a naive fix (just correcting #1) still "works" but leaves your water/walkable-tile data silently misaligned — which is why some people report normal-looking maps with broken/glitched water even after doing the doodad fix.
I built a small local tool (Python + a browser UI, runs on your own PC, nothing uploaded anywhere) that:
- Scans two client folders (yours + the source you're porting from) and shows you, map by map, exactly what's wrong: byte-shift needed, version byte mismatch, missing Object\ models, missing World\worldN.enc
- Converts with one click — backs up your existing file first, patches both byte-shift bugs, fixes the header version byte, copies over any missing model files automatically
- Also has a drag-and-drop mode if you just want to fix one .mcl file on the spot, no client folders needed
- PT/EN interface, dark "frozen tundra" theme because why not
Verified byte-for-byte against known-good already-converted reference maps — not guesswork, the output matches exactly (aside from the intentional version byte patch).
Currently tested/confirmed working on several maps; a chunk of older maps use a third, still-undocumented header variant that the tool correctly detects and refuses to touch rather than risk corrupting your files — that part's still being reverse engineered.
Credits: Maxxor
Discord: xxmaxxorxx
Feedback and bug reports welcome — if you hit a map that fails to convert, send it my way and I'll add it to the investigation list.

