Blocked on #1, and may not be needed at all.
GrannyFile.Expand handles compression == None and, for anything else, records the codec on the section and marks it blocked rather than throwing — which is why d2rmv inspect and d2rmv scan can still report a file they cannot fully read. The plumbing exists; only the decompressor is missing.
Close this as not-planned if scan reports None across the board. That is a plausible outcome: CASC already compresses the container, so per-section compression buys little.
If it is needed
| Codec |
Status |
Oodle1 |
Public decompressor implementations exist |
BitKnit1 / BitKnit2 |
Public implementations exist |
Oodle0 |
No public implementation anywhere. Escalate before starting |
For Oodle0 the fallbacks, in order: check whether the D2R install ships an Oodle DLL that can be called on the user's own machine (no redistribution); otherwise write the adaptive-arithmetic decoder from the format description — unpleasant but bounded.
Done when
d2rmv scan over the install reports zero blocked sections, and models that previously failed now read.
Blocked on #1, and may not be needed at all.
GrannyFile.Expandhandlescompression == Noneand, for anything else, records the codec on the section and marks it blocked rather than throwing — which is whyd2rmv inspectandd2rmv scancan still report a file they cannot fully read. The plumbing exists; only the decompressor is missing.Close this as not-planned if
scanreportsNoneacross the board. That is a plausible outcome: CASC already compresses the container, so per-section compression buys little.If it is needed
Oodle1BitKnit1/BitKnit2Oodle0For Oodle0 the fallbacks, in order: check whether the D2R install ships an Oodle DLL that can be called on the user's own machine (no redistribution); otherwise write the adaptive-arithmetic decoder from the format description — unpleasant but bounded.
Done when
d2rmv scanover the install reports zero blocked sections, and models that previously failed now read.