Skip to content

packing/unreal: read short v8 paks and v1 shader archives - #2652

Open
bf39l wants to merge 3 commits into
seedds:mainfrom
bf39l:fix/unreal-pak-v8
Open

bf39l wants to merge 3 commits into
seedds:mainfrom
bf39l:fix/unreal-pak-v8

Conversation

@bf39l

@bf39l bf39l commented Nov 14, 2026

Copy link
Copy Markdown

What and why

Bloodstained: Ritual of the Night uses a short Unreal PAK v8 footer with four compression method slots and a one-byte compression method field in each entry. The reader missed that footer and assumed legacy PAKs stored their shaders inline.

Recognize the short footer, account for the smaller entry header, and route PAKs that contain a shader archive through archive preparation. Decode the v1 archive’s Zlib-compressed LSLG records into the existing v2 format.

Checked

  • All 56 Unreal parser tests passed, including a synthetic short v8 PAK with stored and compressed entries, a v1 shader archive, and truncated input.
  • The normal archive preparation path decoded 33,767 shader records across two Bloodstained archives and produced zero Oodle jobs.
  • git diff --check passed. Gameplay and broader game regressions were not run.

Docs

  • No game files, keys or data extracted from a game in the change or the attachments.

@github-actions github-actions Bot added the tools Tools and scripts (dm/tools, scripts) label Nov 14, 2026
@bf39l
bf39l marked this pull request as ready for review November 14, 2026 08:34
@bf39l
bf39l marked this pull request as draft November 14, 2026 08:35
@bf39l
bf39l marked this pull request as ready for review November 14, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tools Tools and scripts (dm/tools, scripts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants