Clean, self-contained extraction of the BattleTech-specific work from the
reverse-engineering workspace -- engine + game + content + build, with nothing
from Red Planet or the raw archive dumps. Builds green (Win32) and runs the
single-player drive->animate->target->fire->damage->destroy loop out of the box.
Layout:
engine/ MUNGA + MUNGA_L4 shared 2007 engine, carrying our BT render/loader
work (bgfload/L4D3D/L4VIDEO: BSL bit-slice decode, LOD/ground/shadow
models) + image codec; the minimal rp/ headers the audio HAL needs
game/ reconstructed BT logic + surviving-original BT source + fwd shims
+ WinMain launcher
content/ full runtime tree (BTL4.RES, VIDEO/, GAUGE/, AUDIO/, eggs, BTDPL.INI)
docs/ format specs + reconstruction ledgers
reference/ raw Ghidra pseudocode (recon source-of-truth) + decomp exporter
tools/ MP console emulator + map/resource scanners
One top-level CMake builds munga_engine lib + bt410_l4 game lib + btl4.exe.
All paths relativized (186 fwd shims + ~437 CMake abs paths -> repo-relative);
DXSDK is the one external, overridable via -DDXSDK. Verified: builds to a
byte-identical 2.27MB exe and runs combat (TARGET DESTROYED, 0 crashes) against
the bundled content.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
561 lines
8.8 KiB
Plaintext
561 lines
8.8 KiB
Plaintext
[LAB_ONLY] // this file has not been approved for release
|
|
|
|
[DamageZones] // call MakeEntryList with 'dz_'
|
|
dz_ltorso=0
|
|
dz_rtorso=1
|
|
dz_utorso=2
|
|
|
|
[ROOT]
|
|
JointCount=19
|
|
DZoneCount=3
|
|
Former Segment=segroot
|
|
tranx=0
|
|
trany=0
|
|
tranz=-0.6
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlocal
|
|
|
|
joint=jointshadow
|
|
|
|
[jointlocal]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segem1
|
|
tranx=0
|
|
trany=4.6
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-1.72689e-07
|
|
roll=0
|
|
joint=jointshakey
|
|
joint=jointlthigh
|
|
joint=jointrthigh
|
|
joint=jointhip
|
|
|
|
[jointshakey]
|
|
parent=jointlocal
|
|
Type=ball
|
|
Former Segment=segem2
|
|
tranx=-2.13163e-14
|
|
trany=1.38342
|
|
tranz=0.939751
|
|
pitch=8.36312e-15
|
|
yaw=-2.02508e-22
|
|
roll=4.84287e-08
|
|
joint=jointlshoulder
|
|
joint=jointrshoulder
|
|
site=siteedz_rearrtorso
|
|
site=siteedz_rearltorso
|
|
|
|
[jointlshoulder]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=seglarm
|
|
tranx=-2.09031
|
|
trany=-0.204988
|
|
tranz=-0.325038
|
|
pitch=0
|
|
yaw=-3.11267e-08
|
|
roll=0
|
|
joint=jointlgun
|
|
site=sitellight
|
|
site=siteedz_larm
|
|
site=siteedz_lsearchlight
|
|
|
|
[jointlgun]
|
|
parent=jointlshoulder
|
|
Type=hingex
|
|
Former Segment=seglgun
|
|
tranx=-0.47935
|
|
trany=-1.28344
|
|
tranz=0.4013
|
|
pitch=2.98027e-08
|
|
yaw=-4.79966e-09
|
|
roll=1.72854e-06
|
|
site=sitelugunport
|
|
site=siteldgunport
|
|
site=sitelbgunport
|
|
site=siteedz_lgun
|
|
|
|
[sitelugunport]
|
|
parent=jointlgun
|
|
tranx=-0.4208
|
|
trany=8.08239e-05
|
|
tranz=-2.66042
|
|
pitch=-1.38389e-08
|
|
yaw=9.9883e-24
|
|
roll=1.44351e-15
|
|
|
|
[siteldgunport]
|
|
parent=jointlgun
|
|
tranx=-0.992111
|
|
trany=-0.144898
|
|
tranz=-2.66043
|
|
pitch=-1.72148e-06
|
|
yaw=5.30854e-14
|
|
roll=1.70442e-06
|
|
|
|
[sitelbgunport]
|
|
parent=jointlgun
|
|
tranx=-0.65834
|
|
trany=-0.391229
|
|
tranz=0.853988
|
|
pitch=-2.57369e-06
|
|
yaw=3.14159
|
|
roll=3.40884e-06
|
|
|
|
[siteedz_lgun]
|
|
parent=jointlgun
|
|
tranx=-0.56934
|
|
trany=-0.280229
|
|
tranz=-0.967231
|
|
pitch=-3.4259e-06
|
|
yaw=9.79794e-14
|
|
roll=3.40884e-06
|
|
|
|
[sitellight]
|
|
parent=jointlshoulder
|
|
tranx=-0.23769
|
|
trany=-0.21867
|
|
tranz=-0.93334
|
|
pitch=2.98027e-08
|
|
yaw=-2.71521e-08
|
|
roll=1.72854e-06
|
|
|
|
[siteedz_larm]
|
|
parent=jointlshoulder
|
|
tranx=-0.23769
|
|
trany=-0.318319
|
|
tranz=0.0552882
|
|
pitch=2.98027e-08
|
|
yaw=-3.46029e-08
|
|
roll=1.7602e-06
|
|
|
|
[siteedz_lsearchlight]
|
|
parent=jointlshoulder
|
|
tranx=-0.23769
|
|
trany=-0.21867
|
|
tranz=-0.812104
|
|
pitch=2.98027e-08
|
|
yaw=-3.46029e-08
|
|
roll=1.7602e-06
|
|
|
|
[jointrshoulder]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=segrarm
|
|
tranx=2.08685
|
|
trany=-0.204986
|
|
tranz=-0.325146
|
|
pitch=0
|
|
yaw=-3.11267e-08
|
|
roll=0
|
|
joint=jointrgun
|
|
site=siterlight
|
|
site=siteedz_rarm
|
|
site=siteedz_rsearchlight
|
|
|
|
[jointrgun]
|
|
parent=jointrshoulder
|
|
Type=hingex
|
|
Former Segment=segrgun
|
|
tranx=0.47929
|
|
trany=-1.28347
|
|
tranz=0.40127
|
|
pitch=-2.9802e-08
|
|
yaw=-4.79966e-09
|
|
roll=1.76205e-06
|
|
site=siterugunport
|
|
site=siterdgunport
|
|
site=siterbgunport
|
|
site=siteedz_rgun
|
|
|
|
[siterugunport]
|
|
parent=jointrgun
|
|
tranx=0.43138
|
|
trany=-7.15256e-07
|
|
tranz=-2.66017
|
|
pitch=-4.55909e-07
|
|
yaw=5.20075e-14
|
|
roll=-1.70441e-06
|
|
|
|
[siterdgunport]
|
|
parent=jointrgun
|
|
tranx=0.997169
|
|
trany=-0.144962
|
|
tranz=-2.66018
|
|
pitch=9.74624e-07
|
|
yaw=6.3195e-14
|
|
roll=-1.70441e-06
|
|
|
|
[siterbgunport]
|
|
parent=jointrgun
|
|
tranx=0.66157
|
|
trany=-0.391001
|
|
tranz=0.854125
|
|
pitch=3.74629e-06
|
|
yaw=3.14159
|
|
roll=-1.70441e-06
|
|
|
|
[siteedz_rgun]
|
|
parent=jointrgun
|
|
tranx=0.573009
|
|
trany=-0.280201
|
|
tranz=-0.966875
|
|
pitch=5.65365e-06
|
|
yaw=5.74441e-14
|
|
roll=-1.70441e-06
|
|
|
|
[siterlight]
|
|
parent=jointrshoulder
|
|
tranx=0.24114
|
|
trany=-0.218511
|
|
tranz=-0.933232
|
|
pitch=-2.9802e-08
|
|
yaw=-2.71521e-08
|
|
roll=1.76205e-06
|
|
|
|
[siteedz_rarm]
|
|
parent=jointrshoulder
|
|
tranx=0.24114
|
|
trany=-0.318672
|
|
tranz=0.0555969
|
|
pitch=1.78814e-06
|
|
yaw=1.74014e-07
|
|
roll=3.40678e-06
|
|
|
|
[siteedz_rsearchlight]
|
|
parent=jointrshoulder
|
|
tranx=0.24114
|
|
trany=-0.218511
|
|
tranz=-0.811604
|
|
pitch=-2.9802e-08
|
|
yaw=-3.46029e-08
|
|
roll=1.76205e-06
|
|
|
|
[siteedz_rearrtorso]
|
|
parent=jointshakey
|
|
tranx=1.93156
|
|
trany=-0.0314791
|
|
tranz=-0.206831
|
|
pitch=0
|
|
yaw=-3.11267e-08
|
|
roll=0
|
|
|
|
[siteedz_rearltorso]
|
|
parent=jointshakey
|
|
tranx=-1.932
|
|
trany=-0.0316578
|
|
tranz=-0.206751
|
|
pitch=0
|
|
yaw=-3.11267e-08
|
|
roll=0
|
|
|
|
[jointlthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=segluleg
|
|
tranx=-1.37124
|
|
trany=1.38342
|
|
tranz=0.939951
|
|
pitch=-7.35837e-14
|
|
yaw=-1.56772e-20
|
|
roll=-4.26105e-07
|
|
joint=jointlknee
|
|
site=siteedz_luleg
|
|
|
|
[jointlknee]
|
|
parent=jointlthigh
|
|
Type=hingex
|
|
Former Segment=segldleg
|
|
tranx=9.53674e-07
|
|
trany=-1.40167
|
|
tranz=1.437
|
|
pitch=1.65791e-13
|
|
yaw=-7.95844e-20
|
|
roll=9.60055e-07
|
|
joint=jointlshin
|
|
site=siteedz_ldleg
|
|
|
|
[jointlshin]
|
|
parent=jointlknee
|
|
Type=static
|
|
Former Segment=segem4
|
|
tranx=-1.3113e-06
|
|
trany=-1.98396
|
|
tranz=-1.35137
|
|
pitch=2.98024e-08
|
|
yaw=-7.10543e-15
|
|
roll=-2.57328e-15
|
|
joint=jointlankle
|
|
|
|
[jointlankle]
|
|
parent=jointlshin
|
|
Type=hingex
|
|
Former Segment=seglfot
|
|
tranx=-1.54972e-06
|
|
trany=-2.31063
|
|
tranz=-2.05255
|
|
pitch=-1.66893e-06
|
|
yaw=-2.0949e-09
|
|
roll=-2.46477e-14
|
|
site=siteedz_lfoot
|
|
|
|
[siteedz_lfoot]
|
|
parent=jointlankle
|
|
tranx=-1.19209e-07
|
|
trany=0.134601
|
|
tranz=-0.73303
|
|
pitch=-1.71363e-06
|
|
yaw=8.9283e-16
|
|
roll=1.04203e-09
|
|
|
|
[siteedz_ldleg]
|
|
parent=jointlknee
|
|
tranx=-1.54972e-06
|
|
trany=-2.06299
|
|
tranz=-1.52595
|
|
pitch=2.98024e-08
|
|
yaw=-7.10543e-15
|
|
roll=-2.57328e-15
|
|
|
|
[siteedz_luleg]
|
|
parent=jointlthigh
|
|
tranx=2.38419e-07
|
|
trany=-0.282659
|
|
tranz=0.368049
|
|
pitch=1.65791e-13
|
|
yaw=-7.95844e-20
|
|
roll=9.60055e-07
|
|
|
|
[jointrthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=segruleg
|
|
tranx=1.36642
|
|
trany=1.38342
|
|
tranz=0.939952
|
|
pitch=5.21506e-14
|
|
yaw=1.84741e-13
|
|
roll=3.01991e-07
|
|
joint=jointrknee
|
|
site=siteedz_ruleg
|
|
|
|
[jointrknee]
|
|
parent=jointrthigh
|
|
Type=hingex
|
|
Former Segment=segrdleg
|
|
tranx=-1.19209e-07
|
|
trany=-1.40167
|
|
tranz=1.43703
|
|
pitch=2.53321e-06
|
|
yaw=-1.0516e-12
|
|
roll=8.64377e-15
|
|
joint=jointrshin
|
|
site=siteedz_rdleg
|
|
|
|
[jointrshin]
|
|
parent=jointrknee
|
|
Type=static
|
|
Former Segment=segem3
|
|
tranx=-8.34465e-07
|
|
trany=-1.98398
|
|
tranz=-1.35131
|
|
pitch=1.13687e-13
|
|
yaw=1.08002e-12
|
|
roll=4.26105e-07
|
|
joint=jointrankle
|
|
|
|
[jointrankle]
|
|
parent=jointrshin
|
|
Type=hingex
|
|
Former Segment=segrfot
|
|
tranx=-2.02656e-06
|
|
trany=-2.31062
|
|
tranz=-2.05276
|
|
pitch=-1.37527e-25
|
|
yaw=4.66002e-10
|
|
roll=-5.9024e-16
|
|
site=siteedz_rfoot
|
|
|
|
[siteedz_rfoot]
|
|
parent=jointrankle
|
|
tranx=0
|
|
trany=0.134628
|
|
tranz=-0.73295
|
|
pitch=-7.4524e-09
|
|
yaw=5.06617e-12
|
|
roll=6.3531e-16
|
|
|
|
[siteedz_rdleg]
|
|
parent=jointrknee
|
|
tranx=-9.53674e-07
|
|
trany=-2.06278
|
|
tranz=-1.5258
|
|
pitch=1.13688e-13
|
|
yaw=6.32383e-12
|
|
roll=4.26115e-07
|
|
|
|
[siteedz_ruleg]
|
|
parent=jointrthigh
|
|
tranx=0
|
|
trany=-0.28309
|
|
tranz=0.368026
|
|
pitch=2.53321e-06
|
|
yaw=6.96332e-13
|
|
roll=8.64598e-15
|
|
|
|
[jointhip]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=blx_cop.bgf
|
|
dzone=dz_ltorso
|
|
dzone=dz_rtorso
|
|
dzone=dz_utorso
|
|
Former Segment=segtor
|
|
tranx=-5.03823e-08
|
|
trany=1.34776
|
|
tranz=0.648
|
|
pitch=-2.45406e-21
|
|
yaw=1.72688e-07
|
|
roll=-1.42109e-14
|
|
joint=jointshakey2
|
|
|
|
joint=jointeye
|
|
[jointshakey2]
|
|
parent=jointhip
|
|
Type=ball
|
|
Former Segment=segshake
|
|
tranx=1.62285e-07
|
|
trany=0.036
|
|
tranz=0.144679
|
|
pitch=4.09976e-20
|
|
yaw=5.82608e-34
|
|
roll=-2.84216e-14
|
|
site=sitertorsoport
|
|
site=siteltorsoport
|
|
site=siteedz_dtorso
|
|
site=siteedz_reardtorso
|
|
site=siteedz_rearutorso
|
|
site=siteedz_ltorso
|
|
site=siteedz_utorso
|
|
site=siteedz_rtorso
|
|
|
|
[sitertorsoport]
|
|
parent=jointshakey2
|
|
tranx=0.718
|
|
trany=-1.618
|
|
tranz=-2.59868
|
|
pitch=3.23117e-27
|
|
yaw=1.77634e-13
|
|
roll=-3.64129e-33
|
|
|
|
[siteltorsoport]
|
|
parent=jointshakey2
|
|
tranx=-0.723
|
|
trany=-1.618
|
|
tranz=-2.59868
|
|
pitch=3.23117e-27
|
|
yaw=1.77634e-13
|
|
roll=-3.64129e-33
|
|
|
|
[siteedz_dtorso]
|
|
parent=jointshakey2
|
|
tranx=-3.53842e-12
|
|
trany=-1.2091
|
|
tranz=-2.99139
|
|
pitch=1.58418e-24
|
|
yaw=1.22213e-12
|
|
roll=1.21503e-12
|
|
|
|
[siteedz_reardtorso]
|
|
parent=jointshakey2
|
|
tranx=-8.73425e-13
|
|
trany=-1.1658
|
|
tranz=-0.661365
|
|
pitch=2.06179e-24
|
|
yaw=1.57385e-12
|
|
roll=1.42108e-12
|
|
|
|
[siteedz_rearutorso]
|
|
parent=jointshakey2
|
|
tranx=4.37093e-13
|
|
trany=0.093752
|
|
tranz=0.67195
|
|
pitch=2.53765e-24
|
|
yaw=1.92202e-12
|
|
roll=1.74793e-12
|
|
|
|
[siteedz_ltorso]
|
|
parent=jointshakey2
|
|
tranx=-0.398309
|
|
trany=-0.554515
|
|
tranz=-1.96668
|
|
pitch=3.08843e-24
|
|
yaw=2.27018e-12
|
|
roll=2.13162e-12
|
|
|
|
[siteedz_utorso]
|
|
parent=jointshakey2
|
|
tranx=-1.60562e-12
|
|
trany=0.301155
|
|
tranz=-1.83414
|
|
pitch=2.24457e-24
|
|
yaw=1.57385e-12
|
|
roll=1.66977e-12
|
|
|
|
[siteedz_rtorso]
|
|
parent=jointshakey2
|
|
tranx=0.394998
|
|
trany=-0.554515
|
|
tranz=-1.96668
|
|
pitch=3.36008e-24
|
|
yaw=2.44782e-12
|
|
roll=2.31636e-12
|
|
|
|
[jointshadow] // apply terrain angle to pitch and roll
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segshd
|
|
tranx=0
|
|
trany=0.05
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
joint=jointtshadow
|
|
|
|
[jointtshadow] // apply torso twist to yaw
|
|
parent=jointshadow
|
|
Type=hingey
|
|
Former Segment=segtshd
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointeye]
|
|
parent=jointhip
|
|
Type=balltranslate
|
|
Former Segment=segnone
|
|
tranx=1.28311e-07
|
|
trany=0.283
|
|
tranz=-1.99446
|
|
pitch=7.73962e-25
|
|
yaw=4.26315e-14
|
|
roll=5.32904e-13
|
|
site=siteeyepoint
|
|
|
|
[siteeyepoint] // moved by AddEyeJoint
|
|
parent=jointeye
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|