The Enhanced Asset-Version Wall Is Narrower Than You Think
"Asset version mismatch" on FiveM Enhanced only hits textures, models and VFX. Your .ymap, .ybn, .ytyp and meta files stream fine. The version fingerprint, read off paired Legacy and gen9 files, and how to vet a pack offline.
The first thing Enhanced did on launch day, after the first client joined, was reject a streamed pack with Asset version mismatch. Fair enough — gen9 changed the file formats and we all knew the Legacy assets would need re-exporting. What I got wrong for the next two weeks was how much of them.
I treated the wall as if it covered everything that streams. It doesn't. It's textures, models and VFX. Map data walks straight through. I've got the version numbers to show it, read off real files, and I'd rather you didn't spend a fortnight hedging every map job the way I did.
The fingerprint
Every RAGE resource file starts with an RSC7 header: the magic RSC7 in bytes 0–3, then the resource version in bytes 4–7. I had the same assets in both forms on disk — the Legacy copy in a sidelined folder, the gen9 copy live — so the comparison is direct:
| Format | Legacy | gen9 |
|---|---|---|
.ytd (textures) |
13 | 5 |
.ydr (drawables) |
165 | 159 |
.ydd (drawable dicts) |
165 | 159 |
.yft (fragments) |
162 | 171 |
.ybn (collision) |
43 | 43 |
.ymap (placement) |
2 | 2 |
.ytyp (archetypes) |
2 | 2 |
Only the graphics formats moved. Collision, placement and archetype definitions are byte-for-byte the same version on both branches, which is why a Legacy MLO's .ymap / .ybn / .ytyp load fine on Enhanced while its .ytd and .ydr get bounced.
Enhanced still ships RPF7 containers — the magic bytes on common.rpf, x64a.rpf and update.rpf are all 7FPR. gen9 differs in the asset versions inside the container. That's the same fact as the server's rejection, seen from the other end.
Cfx said as much themselves in the 23 July hotfix note: "Default resources like Qbox no longer fail to start because of asset version mismatch errors on streamed files." The check is on streamed files; the formats it bites are the ones above.
Animations — settled later
The one format I couldn't settle in August was .ycd. An emote pack I had was streaming 562 clips at RSC7 version 46 and I had no gen9 clip dictionary to compare against, so "does Enhanced accept Legacy anims" sat as an open question.
Settled on 30 September, reading the Enhanced archives with CodeWalker as a library: all 25,961 .ycd files in the Enhanced game are RSC7 version 46 — identical to Legacy. Animations are not part of the gen9 change at all.
Vet a pack before it touches the server
Because the version lives in the header, you can check a whole pack offline in a couple of seconds and never find out the hard way at a scheduled restart:
Get-ChildItem -Recurse -Include *.ytd,*.ydr,*.ydd,*.yft,*.ybn,*.ymap,*.ytyp,*.ycd | ForEach-Object {
$b = [byte[]]::new(8); $s = $_.OpenRead(); [void]$s.Read($b, 0, 8); $s.Close()
[pscustomobject]@{
File = $_.Name
Magic = [Text.Encoding]::ASCII.GetString($b[0..3])
Version = [BitConverter]::ToUInt32($b, 4)
}
}
A .ytd reporting 13 is Legacy and will be rejected; 5 is gen9. A .ydr at 165 needs re-exporting; 159 is fine. I caught a vehicle pack this way on 29 July — textures at 0x0D where the known-good ones on the box were 0x05 — before it ever went near a restart.
What to actually do with Legacy assets
- Re-export the graphics formats, not the pack. Sollumz 2.8+ exports gen9 from Blender, and CodeWalker 30 dev48 reads gen9 natively. The
.ymap/.ybn/.ytypyou already have can be left exactly as they are. If you've never done the Blender side, my Enhanced MLO guide walks the whole Sollumz 2.9 export end to end — it's in the FiveM Creator Bundle alongside the scripting guide, the QBCore resource builder and ServerMaster. - Sideline, don't delete. I rename the Legacy
streamfolder tostream_LEGACY_DISABLEDso the manifest still describes what the resource should ship and nothing is lost while the re-export happens. - Don't "probe" map data. I've seen people (and been the person) propose streaming one
.ymapto see if the server rejects it. It won't. The question is answered; spend the time on the textures.
One more texture trap while you're in there
A .ytd's dictionary name is stored inside the file — minimap_0_0.ytd literally contains the string minimap_0_0. Renaming or copying a streamed .ytd therefore does nothing; the texture has to be re-imported into a container that already carries the right internal name. And a +hi dictionary is what renders up close, so a corrected taxi.ytd next to a stock taxi+hi.ytd looks like the override "isn't working" the moment you walk up to the car.
FAQ
What causes "Asset version mismatch" on FiveM Enhanced?
Streaming a Legacy-format texture, model or fragment file. Enhanced (gen9) uses new RSC7 versions for .ytd, .ydr, .ydd and .yft, and the server rejects the old ones. Map data is unaffected.
Do Legacy .ymap, .ybn and .ytyp files work on FiveM Enhanced?
Yes. Collision (.ybn version 43), placement (.ymap version 2) and archetype (.ytyp version 2) files carry the same RSC7 version on Legacy and gen9, so a Legacy MLO's map data streams fine. Only its textures and models need re-exporting.
What are the gen9 asset versions for FiveM Enhanced?
.ytd 5 (Legacy 13), .ydr 159 (Legacy 165), .ydd 159 (Legacy 165), .yft 171 (Legacy 162). .ybn 43, .ymap 2, .ytyp 2 and .ycd 46 are unchanged from Legacy.
Do Legacy animations (.ycd) work on FiveM Enhanced?
Yes. All 25,961 .ycd files in the Enhanced game archives are RSC7 version 46, the same as Legacy. Animation dictionaries are not part of the gen9 format change.
How do I check an asset's version before streaming it?
Read bytes 4–7 of the file as a little-endian 32-bit integer; bytes 0–3 are the RSC7 magic. A .ytd reporting 13 is Legacy and will be rejected; 5 is gen9.
How do I convert Legacy FiveM assets to gen9 / Enhanced?
Re-export the textures, drawables and fragments with Sollumz 2.8 or later in Blender, which exports gen9 directly. CodeWalker 30 dev48 reads gen9 files. Leave .ymap, .ybn and .ytyp as they are.
If you've got a Legacy MLO or pack you're not sure about, run the header check and send me the output on Discord. I can usually tell you in a minute what needs re-exporting and what you can ship tonight.
More posts.
FiveM Enhanced Has No Asset Escrow — Every FXAP Resource Is Dead on Arrival
The Enhanced server hands encrypted files to the Lua compiler as raw bytes. How to spot an escrowed file in four bytes, why half-encrypted resources freeze clients instead of failing, and what I did about it.
How to Create FiveM Assets with Sollumz 2.8.0: Complete Beginner's Guide
Learn how to create buildings, vehicles, and props for FiveM using Sollumz 2.8.0 and Blender. Free beginner's guide covering setup, basic building creation, and native binary format support.
Your FiveM Enhanced NUI Is Running Chromium 103 (And It Fails Silently)
Enhanced pins NUI at CEF 103 from June 2022. :has(), CSS nesting, color-mix() and .toSorted() don't error in game — they're silently discarded. How I found out, and the probe that proves it.