Skip to content

v1.2.5 - HOD 1.0 Classic Parsing Fixes

Choose a tag to compare

@GuillermoOM GuillermoOM released this 06 Oct 19:11
· 31 commits to master since this release

What's Changed

Classic HW2 (HOD 1.0) Parsing Fixes

  • Generic STAT Shader Parameters: Materials in classic HW2 HODs now parse arbitrary param_type / value_size / value records with optional names. Texture slots are bound from every param_type == 5 record, and material parameters round-trip through save. This fixes crashes on files like bullet_splash.hod and dropped material maps on asteroid4.hod.
  • Texture Name Collision Fix: Layer selectors like fth_export.psd[1] now keep their [N] suffix (fth_export[1]DXT5) instead of colliding with the base name. Previously the DIFF and GLOW maps of a material could collapse into one texture slot, making models render blue with the glow map bound as the diffuse.

Developer Experience

  • Parser modularized: the monolithic hod.rs is now 16 focused modules (types, math, texture_codec, animation, model_methods, engine_nozzles, parse, serialize, ...) with the public API unchanged. Parser unit tests grew from 14 to 28.
  • Machine-local configuration: verify_lossless now resolves its fixture paths from an untracked local-environment file (docs/local-environment.md explains the convention), so a fresh clone works with cargo test out of the box.
  • Repository cleanup: one-off scratch scripts removed, testing fixtures documented instead of tracked, and docs updated for generic (non-machine-specific) development.