Tooling built to recover editable source for six 'Mech chassis that exist
in the parallel FS_Build_V4H build but not in this repo. Reverse-engineers
every compiled record type in the .mw4 package format back to the .data /
.instance / .subsystems / .damage / .contents / .torso / .engine /
.armature sources the content pipeline consumes.
Nothing here is wired into the game build. It is a standalone analysis
harness run from Linux.
Package format
--------------
"#VBD" container. Directory records are [len][name][FILETIME][origSize]
[storedSize][offset], payload base at dword 0x0C. A record is stored raw
when storedSize == origSize, otherwise LZW (9->12-bit LSB-first codes,
256=clear, 257=EOF, dict from 258), per Database.cpp:451.
GameModel records are flat /Zp4 structs following the C++ inheritance
chain Entity(0) -> Mover(28) -> MWObject(80) -> Vehicle(664) -> Mech(756),
1636 bytes total. CreateMessage records follow Replicator -> Entity ->
Mover -> MWMover -> MWObject -> Vehicle -> Mech from start=16 (the
undeclared Connection__Message header), ending at 341 and padded to 344.
tools/decompile/
----------------
datamap.py header-driven layout engine; CHAIN + ANCHORS
{Vehicle:664, Mech:756} assert the struct offsets
mw4msg.py CreateMessage reader/walker
data.py .data constants.py define/table symbol resolution
damage.py .damage contents.py .contents
smallmodel.py .torso + .engine instance.py .instance
armature.py / armature_parts.py .armature + armaturedata/armaturevideo
assembly.py joint hierarchy renderer
make_generic_doll.py builds generic MFD/Radar damage dolls
verify_*.py per-type round-trip verifiers
Verified round-trip across all 64 shared chassis:
.armature 2938/2976 pages .subsystems 7579/7585 keys
.data map 6071/6071 values .data trip 8291/8306 keys
.damage 6605/6605 keys .contents 7480/7480 keys
.torso+.engine 1280/1280 keys .instance 896/896 keys, 64/64 pages
armature_parts 1202/1202 .data, 1149/1202 .video
Layout-discovery lessons (documented in DECOMPILING.md)
-------------------------------------------------------
- Never let a field map be discovered by the values that verify it. A
value-matching pass reported 4288/4288 while mis-assigning 34 keys. The
map was rebuilt from header declaration order, anchored on uniquely
resolved fields.
- Read the factory, not the data. 12 .data fields and 5 Torso fields are
declared plain Stuff::Scalar but multiplied by Radians_Per_Degree in
Mech_Tool.cpp:889 / Torso_Tool.cpp.
- Strip typedefs before walking a header. A stray `typedef int AttributeID;`
masked a missing ClassID - two 4-byte errors cancelling out, caught only
by the ANCHORS assertion.
- A verifier that silently narrows its own input reports success. Braced
blocks must be hidden before splitting pages, replacing both CR and LF,
because a `Shadow={...}` block contains a line reading `[shadow]` and
splitlines() also splits on bare CR.
- NSWIZZLE is undefined, so the #else branch is live and orders members
differently. bool is 1 byte; char x[MaxStringLength] is 256.
- V4H carries stale Mech IDs (their Atlas is 5, ours 6), so 64 of 65 shared
chassis are off by one; --retarget-ids emits $(M_<Chassis>)/$(IDS_<Chassis>).
reports/ holds generated diffs. The two ~5 MB manifest-*.tsv intermediates
are gitignored; regenerate everything with run-comparison.sh.
Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
118 lines
6.5 KiB
Plaintext
118 lines
6.5 KiB
Plaintext
|
|
Firestorm Battletech SMT Build Four(v4h).
|
|
|
|
This is a more secure release build and has been tested with about 80 variants on the extra models.
|
|
|
|
Controls defaults reset. Menu updated again. Skins amended and should be duplicate free.
|
|
|
|
The six hard to kill mechs are added and stable.The base/stock variant will not have and advanced
|
|
gyro as a starting addition. All weapons sites are based on mech design and are fixed as displayed.
|
|
The ammo limit continues to be set at three tons per weapon maximum. This ensures balance and resolves conflicts.
|
|
|
|
Restrictions on the new mechs are fixed and if the model can't accomodate a function it will no be
|
|
added.
|
|
|
|
Updated maps within Solaris will contain the occasional drop out of voice sounds.Live with it!. Some of the mech generic sounds overide additional voices in the pods. Live with it.
|
|
Any music will only play in the Server pod. All additinal audio will continue to work as normal.
|
|
|
|
Tested in the stock build with up to Six Pilots with no issues.
|
|
|
|
|
|
|
|
|
|
Firestorm Battletech SMT Build Four(v4f).
|
|
|
|
Important.
|
|
All spinning mechs displayed on the Secondary screen pre mission are accurate. The main details below the mech are correct except class and type. If the spinning model is not the same model as chosen from the console the build has been corrupted. This can happen when variants are saved and during game crashes.
|
|
|
|
When adding new variants you must test each new variant as a corrupted variant can corrupt the build.
|
|
Do create new variants on the new build but you must check they do not corrupt the build when added.
|
|
You are advised to create new variants for the new mechs on the newest build only. Test as you go.
|
|
Save the new variants seperately once tested so you can add again if you get a corrupted build.
|
|
|
|
one additional five level mech added. This a std chassis and does not include Jumpjets options for this model.No animation for Jump jets applicable for this model.
|
|
Mech lab is still as issue for crashes when saving use scroll lock to break out.Watch for corrupt variants
|
|
The hsh folder has been archived as hshold.
|
|
The new hsh folder is a compromise for the new mechs to standardise the block hud display.
|
|
Huds are not amended use the bar chart huds for models which are accurate.
|
|
All printouts are accurate for mechs including new versions.
|
|
|
|
Amended Hud and new Mech tested on Eighty plus test runs.Stock and Variants with no problems.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Firestorm Battletech SMT Build Four(v4e).
|
|
|
|
one additional five level mech added.
|
|
Mech lab is still as issue for crashes when saving use scroll lock to break out.
|
|
This is still the best way to exit a crash and will help protect against gpu/cpu failures.
|
|
Additional stock mechs are limited to 1990 basic technical stats as standard.
|
|
Huds are not amended use the bar chart huds for models which are accurate.
|
|
All new mechs use low level block display.
|
|
All printouts are accurate for new mechs.
|
|
Main view display will show all new mechs as Unclassified.
|
|
So you can ignore technical info on the Main view screen pre game launch.
|
|
Game lag limited for additional models.
|
|
Actual lag in each pod will be dependent on the pea sized cpu/gpu running on your pod.
|
|
New mechs should have better starting groups for weapons pre set.
|
|
Any new mech will not have rear facing weapons.
|
|
|
|
|
|
|
|
Firestorm Battletech SMT Build Four(v4d).
|
|
|
|
one additional high level mech added.
|
|
Subsystems error amended to limit crashes in game with high level LOD.
|
|
Mech lab is still an issue for crashes when saving use scroll lock to break out.
|
|
Huds are not amended use the bar chart huds for models.
|
|
All printouts are accurate.
|
|
Main view display correct model but will show parent mech details.So ignore technical info on the Main view screen pre game launch.
|
|
|
|
|
|
|
|
Firestorm Battletech SMT Build Four(v4c)
|
|
|
|
one additional mech added . Huds and displays will still not match correct mech visuals. This is an index link issue . The additional mech is the only point of this update to test the high level lod on the erf in the pod to see how much lag there is in the pods.
|
|
|
|
It is best to simply amend your huds to the bar chart hud in this build as it always shows the correct damage.
|
|
|
|
Still be aware of the mech lab crash always use scroll lock to exit when this crashes/freezes this will help minimise any problems with your gpu caused by this type of crash.
|
|
|
|
|
|
|
|
|
|
Firestorm Battletech SMT Build Four(v4)
|
|
|
|
|
|
MechLab.
|
|
|
|
|
|
Weapon box sizes set to minimum size to show more of the background mech being edited. Special Weapon boxes locations have been clearly indicated on the chassis weapon tab and not simply mixed with other weapon boxes. If they don't have a special displayed in the mech lab the
|
|
model does not have one. Weapon ammo is limited to no more than three tons for every individual weapon. Example Ac10 cannot mount more than three tons of ammo . All mechs can be created from the new mech button and the subsequent drop down box. These will all show in the main mech lab
|
|
after they have been created and can be edited from here. The Battlemaster and Behmoth will only display in the mechlab list once created but both versions will show in that drop down. So behemoth,behemothII and all there variants can be edited from the parent mech.
|
|
|
|
All mechs are playable in both Dragon Multiplayer and Console Multiplayer. There are also no conflicts with printed reports on mission with the correct mech represented with each report. This has been tested heavily. The hooks for additional mechs are in place.
|
|
|
|
There is a specific crash within the build while working within the mech lab . This crash occurs most often when you try to save a mech when in the group tab. When editing a mech, less crashes occur when saving from the chassis tab and not the weapon tab. Should there be a crash the scroll lockkey will exit the crash. Best way to exit a crash in this GOS build.
|
|
|
|
Callsigns.
|
|
|
|
Callsigns within the Dragon multiplayer can be amended within the firestorm.h file. The length of the Player name needs to be shorter than twelve characters to not interfere with scoring. Callsigns within the console cannot be edited from this file. they can only be edited in the code
|
|
or when built from source. There are a number of changes in the callsigns for console multiplayer. e g Blackthorn, Sipstrassi and names with all Capital letters removed.
|
|
|
|
|
|
Hud displays in Dragon multiplayer will not reflect the mech actually being used on all occasions. But reflect the chassis used for this.Its a compromise based on the HSH limits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|