Highlights
This release migrates the entire solution to .NET 8.0, adds ADF serialization (import) support, and introduces two new command-line tools for modding workflows.
What's New
.NET 8.0 Migration
- All projects now target
net8.0, replacing the legacy .NET Framework 4.8 / multi-target builds. - Removed legacy
AssemblyInfo.csfiles andapp.configfiles in favor of SDK-style project conventions. - Added
Directory.Build.propsfor unified output path configuration. - Solution file cleaned up and modernized.
ADF Serializer (Import Support)
AdfFile.Serialize()is now fully implemented — ADF files can be written back to binary, enabling round-trip editing workflows.ConvertAdfimport mode is no longer a stub — XML-to-ADF conversion is fully functional.- Type definitions are now exported to and imported from XML (
<typedefs>section). - Instance metadata (
nameHash,typeHash) is preserved in XML output for lossless round-trips. RuntimeTypeLibrarygainedGetTypeDefinitionByName()for type lookups during import.
New Tool: Gibbed.MadMax.BinarySearch
- Search for byte patterns across game archive files with support for little-endian, big-endian, or both.
- Multi-threaded search with configurable patterns.
New Tool: Gibbed.MadMax.ResolveHashes
- Resolve hash values in XML files using project hash lists.
- Supports in-place replacement with optional comment annotations showing original hashes.
Bug Fixes
BytesVariant.Parse(): Fixed off-by-one iteration bug (i += 2→i++) that skipped every other byte when parsing comma-separated byte values.BytesVariant.Parse(): Added null/empty string handling to avoid crashes on empty byte arrays.SmallUnpack: Replaced deprecatedAssembly.CodeBasewithAssembly.Locationfor .NET 8.0 compatibility.ProjectData: AddedPlatformNotSupportedExceptionhandling for cross-platform compatibility.ConvertAdfexport: Output path now appends.xmlinstead of replacing the extension, preserving original filenames likefile.adf.xml.