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>
532 lines
8.2 KiB
Plaintext
532 lines
8.2 KiB
Plaintext
[LAB_ONLY] // this file has not been approved for release
|
|
|
|
[DamageZones] // call MakeEntryList with 'dz_'
|
|
dz_ldleg=0
|
|
dz_lfoot=1
|
|
dz_luleg=2
|
|
dz_rdleg=3
|
|
dz_rfoot=4
|
|
dz_ruleg=5
|
|
dz_utorso=6
|
|
|
|
[ROOT]
|
|
JointCount=20
|
|
DZoneCount=7
|
|
Former Segment=segroot
|
|
tranx=0
|
|
trany=0
|
|
tranz=-0.8
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlocal
|
|
|
|
joint=jointshadow
|
|
|
|
[jointlocal]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segem1
|
|
tranx=0
|
|
trany=5.72442
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointhip
|
|
joint=jointlthigh
|
|
joint=jointrthigh
|
|
|
|
[jointhip]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=owx_cop.bgf
|
|
dzone=dz_utorso
|
|
Former Segment=segtor
|
|
tranx=0
|
|
trany=1.69992
|
|
tranz=0.799999
|
|
pitch=1.72853e-06
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointshakey
|
|
|
|
joint=jointeye
|
|
[jointshakey]
|
|
parent=jointhip
|
|
Type=ball
|
|
Former Segment=segshake
|
|
tranx=-0.000412777
|
|
trany=0.110331
|
|
tranz=1.88354e-06
|
|
pitch=-8.52211e-07
|
|
yaw=5.31863e-13
|
|
roll=3.01991e-07
|
|
joint=jointturret
|
|
joint=jointrantenna
|
|
joint=jointlantenna
|
|
joint=jointlmissle
|
|
joint=jointrmissle
|
|
site=siteedz_dtorso
|
|
site=siteedz_utorso
|
|
site=siteedz_rtorso
|
|
site=siteedz_ltorso
|
|
site=siteedz_reardtorso
|
|
site=siteedz_rearrtorso
|
|
site=siteedz_rearutorso
|
|
site=siteedz_rearltorso
|
|
|
|
[jointturret]
|
|
parent=jointshakey
|
|
Type=hingey
|
|
Former Segment=segtur
|
|
tranx=0.192413
|
|
trany=0.464669
|
|
tranz=-0.655001
|
|
pitch=-8.5221e-07
|
|
yaw=-3.55894e-13
|
|
roll=-4.26106e-07
|
|
joint=jointcamera
|
|
|
|
[jointcamera]
|
|
parent=jointturret
|
|
Type=static
|
|
Former Segment=segcam
|
|
tranx=-0.524997
|
|
trany=0.717003
|
|
tranz=0.105
|
|
pitch=-1.76069e-09
|
|
yaw=-2.75139e-14
|
|
roll=-5.80461e-09
|
|
site=sitelight
|
|
site=siteedz_searchlight
|
|
|
|
[sitelight]
|
|
parent=jointcamera
|
|
tranx=-0.220394
|
|
trany=0.20743
|
|
tranz=-0.61822
|
|
pitch=-2.23517e-08
|
|
yaw=2.39392e-16
|
|
roll=1.07102e-08
|
|
|
|
[siteedz_searchlight]
|
|
parent=jointcamera
|
|
tranx=-0.220392
|
|
trany=-0.0387402
|
|
tranz=0.027748
|
|
pitch=9.68576e-08
|
|
yaw=2.90393e-15
|
|
roll=1.2992e-07
|
|
|
|
[jointrantenna]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=segrant
|
|
tranx=0.669412
|
|
trany=0.17767
|
|
tranz=0.538998
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[jointlantenna]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=seglant
|
|
tranx=-0.672586
|
|
trany=0.17767
|
|
tranz=0.539
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[jointlmissle]
|
|
parent=jointshakey
|
|
Type=static
|
|
Former Segment=seglmsl
|
|
tranx=-2.44159
|
|
trany=-0.10733
|
|
tranz=0.000538362
|
|
pitch=0.00044298
|
|
yaw=1.33403e-10
|
|
roll=-4.26106e-07
|
|
site=sitelfgunport
|
|
site=sitelmissleport
|
|
site=sitelbgunport
|
|
site=siteedz_lmissle
|
|
|
|
[sitelfgunport]
|
|
parent=jointlmissle
|
|
tranx=-0.384
|
|
trany=-0.402455
|
|
tranz=-1.02536
|
|
pitch=-1.77533e-09
|
|
yaw=-1.73704e-11
|
|
roll=3.85488e-15
|
|
|
|
[sitelmissleport]
|
|
parent=jointlmissle
|
|
tranx=-0.699
|
|
trany=0.584545
|
|
tranz=-1.0258
|
|
pitch=-3.52156e-09
|
|
yaw=-1.73704e-11
|
|
roll=3.85478e-15
|
|
|
|
[sitelbgunport]
|
|
parent=jointlmissle
|
|
tranx=-0.384
|
|
trany=-0.401645
|
|
tranz=0.799639
|
|
pitch=-6.98492e-09
|
|
yaw=3.14159
|
|
roll=1.66392e-12
|
|
|
|
[siteedz_lmissle]
|
|
parent=jointlmissle
|
|
tranx=-0.828
|
|
trany=0.215949
|
|
tranz=-0.122635
|
|
pitch=-3.52156e-09
|
|
yaw=-2.21097e-10
|
|
roll=4.61183e-13
|
|
|
|
[jointrmissle]
|
|
parent=jointshakey
|
|
Type=static
|
|
Former Segment=segrmsl
|
|
tranx=2.44241
|
|
trany=-0.10733
|
|
tranz=0.000531928
|
|
pitch=0.00044298
|
|
yaw=1.33403e-10
|
|
roll=-4.26106e-07
|
|
site=siterbgunport
|
|
site=sitermissleport
|
|
site=siterfgunport
|
|
site=siteedz_rmissle
|
|
|
|
[siterbgunport]
|
|
parent=jointrmissle
|
|
tranx=0.384
|
|
trany=-0.401646
|
|
tranz=0.799646
|
|
pitch=-1.52765e-26
|
|
yaw=3.14159
|
|
roll=-2.60396e-15
|
|
|
|
[sitermissleport]
|
|
parent=jointrmissle
|
|
tranx=0.699
|
|
trany=0.584545
|
|
tranz=-1.02579
|
|
pitch=-1.52765e-26
|
|
yaw=1.17333e-11
|
|
roll=-2.60396e-15
|
|
|
|
[siterfgunport]
|
|
parent=jointrmissle
|
|
tranx=0.384
|
|
trany=-0.402455
|
|
tranz=-1.02535
|
|
pitch=-1.52765e-26
|
|
yaw=1.17333e-11
|
|
roll=-2.60396e-15
|
|
|
|
[siteedz_rmissle]
|
|
parent=jointrmissle
|
|
tranx=0.82801
|
|
trany=0.215606
|
|
tranz=-0.122616
|
|
pitch=-1.52765e-26
|
|
yaw=1.17333e-11
|
|
roll=-2.60396e-15
|
|
|
|
[siteedz_dtorso]
|
|
parent=jointshakey
|
|
tranx=0.000412384
|
|
trany=-1.30032
|
|
tranz=-1.35208
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_utorso]
|
|
parent=jointshakey
|
|
tranx=0.000413367
|
|
trany=0.374937
|
|
tranz=-1.26338
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_rtorso]
|
|
parent=jointshakey
|
|
tranx=1.21508
|
|
trany=-0.532687
|
|
tranz=-1.26338
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_ltorso]
|
|
parent=jointshakey
|
|
tranx=-1.21459
|
|
trany=-0.532686
|
|
tranz=-1.26338
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_reardtorso]
|
|
parent=jointshakey
|
|
tranx=0.000412549
|
|
trany=-1.05052
|
|
tranz=0.799454
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_rearrtorso]
|
|
parent=jointshakey
|
|
tranx=1.18557
|
|
trany=-0.57297
|
|
tranz=0.8
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_rearutorso]
|
|
parent=jointshakey
|
|
tranx=0.000413225
|
|
trany=0.30049
|
|
tranz=0.229772
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[siteedz_rearltorso]
|
|
parent=jointshakey
|
|
tranx=-1.21459
|
|
trany=-0.572969
|
|
tranz=0.8
|
|
pitch=-8.52211e-07
|
|
yaw=1.49483e-06
|
|
roll=-4.26107e-07
|
|
|
|
[jointlthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=owx_lule.bgf
|
|
dzone=dz_luleg
|
|
Former Segment=segluleg
|
|
tranx=-1.75247
|
|
trany=1.70245
|
|
tranz=0.799998
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlknee
|
|
site=siteedz_luleg
|
|
|
|
[jointlknee]
|
|
parent=jointlthigh
|
|
Type=hingex
|
|
Object=owx_ldle.bgf
|
|
dzone=dz_ldleg
|
|
Former Segment=segldleg
|
|
tranx=0
|
|
trany=-2.46711
|
|
tranz=0.838288
|
|
pitch=0
|
|
yaw=-1.51337e-09
|
|
roll=0
|
|
joint=jointlbacktoe
|
|
joint=jointlfronttoe
|
|
site=siteedz_lfoot
|
|
site=siteedz_ldleg
|
|
|
|
[jointlbacktoe]
|
|
parent=jointlknee
|
|
Type=hingex
|
|
Object=owx_lbto.bgf
|
|
dzone=dz_lfoot
|
|
Former Segment=seglbto
|
|
tranx=0
|
|
trany=-4.67861
|
|
tranz=-1.43829
|
|
pitch=-2.61618e-17
|
|
yaw=3.44169e-15
|
|
roll=-1.72871e-08
|
|
|
|
[jointlfronttoe]
|
|
parent=jointlknee
|
|
Type=hingex
|
|
Object=owx_lfto.bgf
|
|
dzone=dz_lfoot
|
|
Former Segment=seglfto
|
|
tranx=0.000239968
|
|
trany=-4.67819
|
|
tranz=-2.03742
|
|
pitch=-1.69873e-06
|
|
yaw=2.79495e-14
|
|
roll=-1.72871e-08
|
|
|
|
[siteedz_lfoot]
|
|
parent=jointlknee
|
|
tranx=0.000239968
|
|
trany=-4.74142
|
|
tranz=-1.75329
|
|
pitch=-1.81793e-06
|
|
yaw=3.31363e-14
|
|
roll=-1.72872e-08
|
|
|
|
[siteedz_ldleg]
|
|
parent=jointlknee
|
|
tranx=0.000239968
|
|
trany=-1.66542
|
|
tranz=-0.583286
|
|
pitch=-1.81793e-06
|
|
yaw=3.31363e-14
|
|
roll=-1.72873e-08
|
|
|
|
[siteedz_luleg]
|
|
parent=jointlthigh
|
|
tranx=-0.10119
|
|
trany=-0.793845
|
|
tranz=-0.217364
|
|
pitch=0
|
|
yaw=-1.51338e-09
|
|
roll=2.77556e-17
|
|
|
|
[jointrthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=owx_rule.bgf
|
|
dzone=dz_ruleg
|
|
Former Segment=segruleg
|
|
tranx=1.75289
|
|
trany=1.70245
|
|
tranz=0.799998
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrknee
|
|
site=siteedz_ruleg
|
|
|
|
[jointrknee]
|
|
parent=jointrthigh
|
|
Type=hingex
|
|
Object=owx_rdle.bgf
|
|
dzone=dz_rdleg
|
|
Former Segment=segrdleg
|
|
tranx=0
|
|
trany=-2.46721
|
|
tranz=0.83829
|
|
pitch=0
|
|
yaw=-0
|
|
roll=2.56113e-09
|
|
joint=jointrbacktoe
|
|
joint=jointrfronttoe
|
|
site=siteedz_rfoot
|
|
site=siteedz_rdleg
|
|
|
|
[jointrbacktoe]
|
|
parent=jointrknee
|
|
Type=hingex
|
|
Object=owx_rbto.bgf
|
|
dzone=dz_rfoot
|
|
Former Segment=segrbto
|
|
tranx=0
|
|
trany=-4.6785
|
|
tranz=-1.43829
|
|
pitch=0
|
|
yaw=6.93889e-18
|
|
roll=-2.15349e-09
|
|
|
|
[jointrfronttoe]
|
|
parent=jointrknee
|
|
Type=hingex
|
|
Object=owx_rfto.bgf
|
|
dzone=dz_rfoot
|
|
Former Segment=segrfto
|
|
tranx=0.000329971
|
|
trany=-4.67823
|
|
tranz=-2.03762
|
|
pitch=-7.70372e-34
|
|
yaw=6.93889e-18
|
|
roll=-2.15428e-09
|
|
|
|
[siteedz_rfoot]
|
|
parent=jointrknee
|
|
tranx=0.000329971
|
|
trany=-4.74175
|
|
tranz=-1.75352
|
|
pitch=0
|
|
yaw=2.0331e-15
|
|
roll=-2.15429e-09
|
|
|
|
[siteedz_rdleg]
|
|
parent=jointrknee
|
|
tranx=0.000329971
|
|
trany=-1.66532
|
|
tranz=-0.583578
|
|
pitch=3.9443e-31
|
|
yaw=3.64985e-15
|
|
roll=-2.1543e-09
|
|
|
|
[siteedz_ruleg]
|
|
parent=jointrthigh
|
|
tranx=0.10211
|
|
trany=-0.793535
|
|
tranz=-0.216998
|
|
pitch=0
|
|
yaw=-1.11022e-16
|
|
roll=2.56113e-09
|
|
|
|
[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
|
|
Object=own_tshd.bgf
|
|
Former Segment=segtshd
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointeye]
|
|
parent=jointhip
|
|
Type=balltranslate
|
|
Former Segment=segnone
|
|
tranx=0.192
|
|
trany=0.575002
|
|
tranz=-1.253
|
|
pitch=-8.52211e-07
|
|
yaw=5.22001e-13
|
|
roll=3.01991e-07
|
|
site=siteeyepoint
|
|
|
|
[siteeyepoint] // moved by AddEyeJoint
|
|
parent=jointeye
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|