← Work

PhotoModeOutfit—Songbird

A released Cyberpunk 2077 Photo Mode outfit mod with a small WolvenKit/Python build workflow and validation for ArchiveXL and TweakXL patches.

Released 2026 PythonArchiveXLTweakXLWolvenKit

The debugging lesson

The initial assumption was that Songbird’s Photo Mode outfit picker would read the appearances attached to the Photo Mode entity. It does not. The visible picker is driven by a separate TweakDB outfit array, so changing only the entity resources can produce perfectly valid files and no visible result.

That changed the implementation from “patch an appearance and hope” into a small, explicit resource pipeline: ArchiveXL handles the relevant resource patching, TweakXL registers the picker entries in the required order, and WolvenKit is used where the binary appearance data needs a tool that can preserve it.

Tooling around the mod

  • WolvenKit for the custom appearance. The workflow avoids relying on a cp77tools round-trip for changes that are not preserved correctly in compiled appearance package data.
  • Python for repeatable cleanup and checks. The build tooling trims the authored appearance resource and keeps the release inputs small and inspectable.
  • Validation before packaging. The repository’s validator checks picker order, expected meshAppearance mappings, and stale dependencies in the entity patch so common silent-failure cases are caught before a release archive is made.

The result is still a small game mod, but the useful engineering story is broader: trace the actual data source, document the toolchain limitation, then automate the checks that would otherwise fail silently.