Repository navigation
Releases: tremwil/param_field_mapper
Releases · tremwil/param_field_mapper
Release list
1.2.0-pre - Access detection strategy & type deduction overhaul
Beware
- Due to the new type deduction strategy, I have not decided how field conflict resolution for existing defs should work yet. Hence dumped defs will completely overwrite previous ones! Make sure to copy your generated defs over after a session.
Changes
- New access tracking strategy: Hooked instructions now OR bitflags in a shifted, initially zeroed copy of the param file, which is then scanned to process said bits and deduce field types at each possible offset. This pulls information from every param access instead of only the first one, at the cost of losing information about the address of the accessing instruction.
Bugs Fixed
- Swapping param file pointers too early led to accesses being missed
Basic API and ME2 support
- DLL should now be able to use the ModEngine2 extension features to bootstrap itself early when loaded using ME2's
external_dllsconfig option - Simple public C API
void* adjust_param_ptr(void*)exported, which can be used to safely access or modify param data while the DLL is active. Simply pass a pointer to (potential) param data to this function once before accessing it to make sure it is correctly adjusted. If using C++, a light wrapper around it can be found here.
1.1.0 - Config file & auto-merging
- Added a configuration file
- Loads defs that were already generated and use them as a base. To do so, it adds a new attribute
TypeConfidenceto the XMLFieldnodes, but this can be disabled in the config. Be aware that disabling it may lead to a weaker guess being chosen if a conflict occurs. - Will now dump accessing instructions in an XML comment above the paramdef field (configurable)
- Once their purpose is understood, deduced fields can be renamed in the XML paramdef to "finalize" them. A different type can also be assigned. This is a full paramdef parser, so it'll also support types like
fixstr, arrays, splitting deducedu8fields as bitfields, and the child nodes of your customFieldnodes will not be deleted. - Dumps accessing instructions that were discarded due to being SIMD loads (and thus likely part of a copy operation), in case manual inspection of the code is useful.
- If the accessing instruction is using SIB addressing, marks the field as a one-element array. This is because such instructions are usually emitted when accessing contiguous elements sequentially in a loop, so it indicates that untyped fields after it may be part of an array-like structure (e.g.
spEffect0, spEffect1, spEffect2, etc.)
1.0.1 hotfix
- Now hooks
SoloParamRepositoryResCaplookups to know when to perform param remapping, instead of simply waiting for a (not always appropriate) amount of time. Should fix crashes on boot.
First release
First release
pfm.zip is an -O3 is an -O3, stripped release build. This is what you will probably want to use.
pfm_debug is a RelWithDebInfo build. It includes a PDB for debugging if you need to.