Skip to content

v2.2.0-pre1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Feb 21:34
· 957 commits to main since this release

What's New

NIF Sprite Rendering

New sprite-gen CLI command for rendering 3D item models from BSA archives into PNG sprites.

  • Extracts NIF meshes from BSA, converts Xbox 360 big-endian to little-endian, and renders textured sprites
  • DDS texture decoding with automatic BSA texture resolution
  • Gore cap filtering (BSDismemberSkinInstance body part ranges 100-299)
  • Isometric view mode (--iso) for body armor and larger items
  • Fixed endian bulk-swap bug that cross-contaminated multi-byte sub-fields in 4-byte structs (BodyPartList, HalfTexCoord, HavokFilter)

NPC Head Rendering

New render npc command for generating NPC head sprites with full FaceGen support.

  • Base head mesh loading from RACE records via BSA
  • FaceGen NIF override (per-NPC mesh from FaceGen directory)
  • EGM mesh morphs: 50 symmetric + 30 asymmetric morph targets applied via FGGS/FGGA coefficients
  • EGT texture morphs: 256x256 RGB deltas upscaled with bilinear interpolation to DDS resolution
  • Hair, eyes, and head parts (eyebrows, beards) from HAIR/EYES/HDPT records
  • NPC appearance resolution merging NPC_ and RACE coefficients

Unified CLI Commands

New format-agnostic commands that auto-detect file type (ESM, DMP, ESP):

  • search text/hex — text or hex byte pattern search across any binary file
  • stats — categorized record type statistics
  • list — browse reconstructed records with type and filter options
  • show — inspect record detail by FormID or EditorID
  • diff — compare records between any two files

Code Quality

  • Massive refactoring: 5 batches of file splitting enforcing ~500-line limit across ~50 files
  • New unit tests for extracted helper classes (EsmEditorIdValidator, RecordValidator, SemdiffRecordParser)
  • Test suite refactored with shared helpers and ~35 parameterized theories
  • All SonarQube and Roslyn analyzer warnings resolved (~336 warnings)
  • CLI commands migrated from EsmAnalyzer to main project

Full Changelog: v2.1.0-pre.1...v2.2.0-pre1