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>
556 lines
8.5 KiB
Plaintext
556 lines
8.5 KiB
Plaintext
[LAB_ONLY] // this file has not been approved for release
|
|
|
|
[DamageZones] // call MakeEntryList with 'dz_'
|
|
dz_ltorso=0
|
|
dz_rtorso=1
|
|
dz_searchlight=2
|
|
dz_utorso=3
|
|
|
|
[ROOT]
|
|
JointCount=20
|
|
DZoneCount=4
|
|
Former Segment=segroot
|
|
tranx=0
|
|
trany=0
|
|
tranz=-0.2
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlocal
|
|
|
|
joint=jointshadow
|
|
|
|
[jointlocal]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segem3
|
|
tranx=0
|
|
trany=6.20884
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointhip
|
|
joint=jointlthigh
|
|
joint=jointrthigh
|
|
|
|
[jointhip]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=seghip
|
|
tranx=1.52588e-05
|
|
trany=0.21202
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointtorso
|
|
site=siteedz_hip
|
|
|
|
[jointtorso]
|
|
parent=jointhip
|
|
Type=hingey
|
|
Object=snx_cop.bgf
|
|
dzone=dz_utorso
|
|
Former Segment=segtor
|
|
tranx=-1.44946e-05
|
|
trany=0.278824
|
|
tranz=0
|
|
pitch=-5.82076e-11
|
|
yaw=-3.02591e-15
|
|
roll=0
|
|
joint=jointshakey
|
|
|
|
joint=jointeye
|
|
[jointshakey]
|
|
parent=jointtorso
|
|
Type=ball
|
|
Object=snx_tor.bgf
|
|
dzone=dz_ltorso
|
|
dzone=dz_rtorso
|
|
dzone=dz_searchlight
|
|
Former Segment=segshake
|
|
tranx=-4.54291e-07
|
|
trany=0.102316
|
|
tranz=0
|
|
pitch=5.76107e-11
|
|
yaw=2.84961e-15
|
|
roll=2.32936e-26
|
|
joint=jointrshoulder
|
|
joint=jointlshoulder
|
|
site=sitelight
|
|
site=siteltorsoport
|
|
site=sitertorsoport
|
|
site=siteedz_ltorso
|
|
site=siteedz_rtorso
|
|
site=siteedz_dtorso
|
|
site=siteedz_utorso
|
|
site=siteedz_searchlight
|
|
site=siteedz_rearrtorso
|
|
site=siteedz_rearltorso
|
|
site=siteedz_reardtorso
|
|
site=siteedz_rearutorso
|
|
joint=jointmissledoor
|
|
site=sitemissleport
|
|
|
|
[jointrshoulder]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=segrarm
|
|
tranx=2.5562
|
|
trany=2.51921
|
|
tranz=0.934046
|
|
pitch=2.62699e-24
|
|
yaw=1.73978e-17
|
|
roll=3.01991e-07
|
|
joint=jointrgun
|
|
site=siteedz_rarm
|
|
|
|
[jointrgun]
|
|
parent=jointrshoulder
|
|
Type=hingex
|
|
Former Segment=segrgun
|
|
tranx=0.90226
|
|
trany=-0.0736504
|
|
tranz=-0.175426
|
|
pitch=3.38514e-10
|
|
yaw=4.5657e-10
|
|
roll=-3.96716e-09
|
|
site=siterugunport
|
|
site=siteedz_rgun
|
|
site=siterdgunport
|
|
|
|
[siterugunport]
|
|
parent=jointrgun
|
|
tranx=0.54767
|
|
trany=0.00339985
|
|
tranz=-2.71685
|
|
pitch=-2.38757e-07
|
|
yaw=3.34819e-07
|
|
roll=-6.25849e-07
|
|
|
|
[siteedz_rgun]
|
|
parent=jointrgun
|
|
tranx=0.78682
|
|
trany=-0.17119
|
|
tranz=-0.830993
|
|
pitch=-2.38757e-07
|
|
yaw=3.34819e-07
|
|
roll=-6.25849e-07
|
|
|
|
[siterdgunport]
|
|
parent=jointrgun
|
|
tranx=1.00298
|
|
trany=-0.406111
|
|
tranz=-3.69804
|
|
pitch=-2.08954e-07
|
|
yaw=4.31676e-07
|
|
roll=-6.25849e-07
|
|
|
|
[siteedz_rarm]
|
|
parent=jointrshoulder
|
|
tranx=0.46377
|
|
trany=0.36532
|
|
tranz=0
|
|
pitch=3.38514e-10
|
|
yaw=4.5657e-10
|
|
roll=-3.96716e-09
|
|
|
|
[jointlshoulder]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=seglarm
|
|
tranx=-2.53993
|
|
trany=2.98391
|
|
tranz=0.827469
|
|
pitch=2.68881e-41
|
|
yaw=-5.08938e-18
|
|
roll=-1.05662e-23
|
|
joint=jointlgun
|
|
site=siteedz_larm
|
|
|
|
[jointlgun]
|
|
parent=jointlshoulder
|
|
Type=hingex
|
|
Former Segment=seglgun
|
|
tranx=-1.06438
|
|
trany=-0.97388
|
|
tranz=-0.00197399
|
|
pitch=8.73111e-10
|
|
yaw=-5.03068e-16
|
|
roll=1.08806e-23
|
|
site=sitelgunport
|
|
site=siteedz_lgun
|
|
|
|
[sitelgunport]
|
|
parent=jointlgun
|
|
tranx=-0.35713
|
|
trany=-0.43919
|
|
tranz=-2.85113
|
|
pitch=-8.72515e-10
|
|
yaw=-1.49012e-08
|
|
roll=2.98024e-08
|
|
|
|
[siteedz_lgun]
|
|
parent=jointlgun
|
|
tranx=-0.35713
|
|
trany=-0.47223
|
|
tranz=-1.37149
|
|
pitch=-8.72515e-10
|
|
yaw=-1.49012e-08
|
|
roll=2.98024e-08
|
|
|
|
[siteedz_larm]
|
|
parent=jointlshoulder
|
|
tranx=-0.61169
|
|
trany=-0.41769
|
|
tranz=-0.00197399
|
|
pitch=8.73103e-10
|
|
yaw=-1.19696e-15
|
|
roll=1.08802e-23
|
|
|
|
[sitelight]
|
|
parent=jointshakey
|
|
tranx=1.37156
|
|
trany=2.61028
|
|
tranz=-0.776072
|
|
pitch=1.92707e-41
|
|
yaw=-5.08938e-18
|
|
roll=-7.57243e-24
|
|
|
|
[siteltorsoport]
|
|
parent=jointshakey
|
|
tranx=-0.5318
|
|
trany=0.82612
|
|
tranz=-2.47676
|
|
pitch=2.41976e-41
|
|
yaw=-5.08938e-18
|
|
roll=-9.50957e-24
|
|
|
|
[sitertorsoport]
|
|
parent=jointshakey
|
|
tranx=-0.112979
|
|
trany=0.82636
|
|
tranz=-2.47676
|
|
pitch=5.60155e-41
|
|
yaw=-5.08938e-18
|
|
roll=-2.2013e-23
|
|
|
|
[siteedz_ltorso]
|
|
parent=jointshakey
|
|
tranx=-1.69333
|
|
trany=2.50774
|
|
tranz=0.202731
|
|
pitch=1.83738e-41
|
|
yaw=-5.08938e-18
|
|
roll=-7.22024e-24
|
|
|
|
[siteedz_rtorso]
|
|
parent=jointshakey
|
|
tranx=1.69399
|
|
trany=2.50153
|
|
tranz=0.203
|
|
pitch=1.61317e-41
|
|
yaw=-5.08938e-18
|
|
roll=-6.33972e-24
|
|
|
|
[siteedz_dtorso]
|
|
parent=jointshakey
|
|
tranx=-3.09877e-07
|
|
trany=0.86361
|
|
tranz=-0.317355
|
|
pitch=0
|
|
yaw=-5.08938e-18
|
|
roll=-3.04723e-30
|
|
|
|
[siteedz_utorso]
|
|
parent=jointshakey
|
|
tranx=-3.09877e-07
|
|
trany=3.35662
|
|
tranz=0.021892
|
|
pitch=1.07564e-41
|
|
yaw=-5.08938e-18
|
|
roll=-4.22647e-24
|
|
|
|
[siteedz_searchlight]
|
|
parent=jointshakey
|
|
tranx=1.37156
|
|
trany=2.61028
|
|
tranz=-0.716965
|
|
pitch=2.59913e-41
|
|
yaw=-5.08938e-18
|
|
roll=-1.0214e-23
|
|
|
|
[siteedz_rearrtorso]
|
|
parent=jointshakey
|
|
tranx=1.4159
|
|
trany=1.74761
|
|
tranz=1.917
|
|
pitch=6.72063e-42
|
|
yaw=-5.08938e-18
|
|
roll=-2.64156e-24
|
|
|
|
[siteedz_rearltorso]
|
|
parent=jointshakey
|
|
tranx=-1.39029
|
|
trany=1.74761
|
|
tranz=1.91622
|
|
pitch=9.85954e-42
|
|
yaw=-5.08938e-18
|
|
roll=-3.87427e-24
|
|
|
|
[siteedz_reardtorso]
|
|
parent=jointshakey
|
|
tranx=-3.09877e-07
|
|
trany=1.37711
|
|
tranz=2.01824
|
|
pitch=3.22663e-41
|
|
yaw=-5.08938e-18
|
|
roll=-1.26794e-23
|
|
|
|
[siteedz_rearutorso]
|
|
parent=jointshakey
|
|
tranx=-3.09877e-07
|
|
trany=3.97094
|
|
tranz=2.04097
|
|
pitch=2.15099e-41
|
|
yaw=-5.08938e-18
|
|
roll=-8.45295e-24
|
|
|
|
[jointmissledoor]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Former Segment=segdoor
|
|
tranx=-0.00196702
|
|
trany=4.31817
|
|
tranz=0.021186
|
|
pitch=1.19371e-12
|
|
yaw=1.76403e-16
|
|
roll=3.01991e-07
|
|
site=siteedz_door
|
|
|
|
[siteedz_door]
|
|
parent=jointmissledoor
|
|
tranx=-1.70432e-07
|
|
trany=-0.56438
|
|
tranz=-0.727186
|
|
pitch=-1.40071e-06
|
|
yaw=-2.5615e-09
|
|
roll=-4.79721e-08
|
|
|
|
[sitemissleport]
|
|
parent=jointshakey
|
|
tranx=0.00018661
|
|
trany=3.29391
|
|
tranz=-0.716965
|
|
pitch=1.19371e-12
|
|
yaw=1.76403e-16
|
|
roll=3.01991e-07
|
|
|
|
[siteedz_hip]
|
|
parent=jointhip
|
|
tranx=-1.44946e-05
|
|
trany=-0.709867
|
|
tranz=0
|
|
pitch=-5.82076e-11
|
|
yaw=-3.02591e-15
|
|
roll=0
|
|
|
|
[jointlthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=segluleg
|
|
tranx=-1.70967
|
|
trany=0.21202
|
|
tranz=0.19766
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlknee
|
|
site=siteedz_luleg
|
|
|
|
[jointlknee]
|
|
parent=jointlthigh
|
|
Type=hingex
|
|
Former Segment=segldleg
|
|
tranx=0
|
|
trany=-3.32122
|
|
tranz=-0.786014
|
|
pitch=0
|
|
yaw=-1.16431e-10
|
|
roll=0
|
|
joint=jointlankle
|
|
site=siteedz_ldleg
|
|
|
|
[jointlankle]
|
|
parent=jointlknee
|
|
Type=hingex
|
|
Former Segment=segem1
|
|
tranx=0
|
|
trany=-1.99533
|
|
tranz=-0.205027
|
|
pitch=1.78814e-07
|
|
yaw=-5.82099e-11
|
|
roll=5.39975e-20
|
|
joint=jointltoe
|
|
|
|
[jointltoe]
|
|
parent=jointlankle
|
|
Type=static
|
|
Former Segment=seglfot
|
|
tranx=0
|
|
trany=-1.10281
|
|
tranz=-1.58674
|
|
pitch=1.69872e-06
|
|
yaw=-2.53381e-22
|
|
roll=2.98319e-16
|
|
site=siteedz_lfoot
|
|
|
|
[siteedz_lfoot]
|
|
parent=jointltoe
|
|
tranx=0
|
|
trany=0.510973
|
|
tranz=1.58758
|
|
pitch=5.21032e-21
|
|
yaw=6.04815e-13
|
|
roll=1.72295e-08
|
|
|
|
[siteedz_ldleg]
|
|
parent=jointlknee
|
|
tranx=0
|
|
trany=-1.20664
|
|
tranz=-0.121646
|
|
pitch=1.78814e-07
|
|
yaw=-5.81435e-11
|
|
roll=1.78872e-18
|
|
|
|
[siteedz_luleg]
|
|
parent=jointlthigh
|
|
tranx=-0.000330091
|
|
trany=-1.71286
|
|
tranz=-0.49866
|
|
pitch=0
|
|
yaw=-1.1636e-10
|
|
roll=0
|
|
|
|
[jointrthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=segruleg
|
|
tranx=1.70786
|
|
trany=0.21202
|
|
tranz=0.19766
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrknee
|
|
site=siteedz_ruleg
|
|
|
|
[jointrknee]
|
|
parent=jointrthigh
|
|
Type=hingex
|
|
Former Segment=segrdleg
|
|
tranx=0
|
|
trany=-3.32122
|
|
tranz=-0.786015
|
|
pitch=0
|
|
yaw=-2.32823e-10
|
|
roll=-5.53097e-10
|
|
joint=jointrankle
|
|
site=siteedz_rdleg
|
|
|
|
[jointrankle]
|
|
parent=jointrknee
|
|
Type=hingex
|
|
Former Segment=segem2
|
|
tranx=0
|
|
trany=-1.99533
|
|
tranz=-0.205027
|
|
pitch=4.24682e-07
|
|
yaw=2.94097e-18
|
|
roll=3.45608e-10
|
|
joint=jointrtoe
|
|
|
|
[jointrtoe]
|
|
parent=jointrankle
|
|
Type=static
|
|
Former Segment=segrfot
|
|
tranx=0
|
|
trany=-1.10281
|
|
tranz=-1.58674
|
|
pitch=2.23525e-08
|
|
yaw=-5.81902e-10
|
|
roll=-6.40019e-09
|
|
site=siteedz_rfoot
|
|
|
|
[siteedz_rfoot]
|
|
parent=jointrtoe
|
|
tranx=0.000139952
|
|
trany=0.5105
|
|
tranz=1.58712
|
|
pitch=2.18085e-20
|
|
yaw=4.93302e-10
|
|
roll=8.84185e-11
|
|
|
|
[siteedz_rdleg]
|
|
parent=jointrknee
|
|
tranx=0
|
|
trany=-1.2067
|
|
tranz=-0.121942
|
|
pitch=4.24682e-07
|
|
yaw=2.88983e-18
|
|
roll=3.45849e-10
|
|
|
|
[siteedz_ruleg]
|
|
parent=jointrthigh
|
|
tranx=0.000139952
|
|
trany=-1.7132
|
|
tranz=-0.498218
|
|
pitch=0
|
|
yaw=-2.32823e-10
|
|
roll=-5.53097e-10
|
|
|
|
[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=jointtorso
|
|
Type=balltranslate
|
|
Former Segment=segnone
|
|
tranx=-7.64168e-07
|
|
trany=3.14039
|
|
tranz=-0.277287
|
|
pitch=5.76107e-11
|
|
yaw=2.84961e-15
|
|
roll=-4.73275e-24
|
|
site=siteeyepoint
|
|
|
|
[siteeyepoint] // moved by AddEyeJoint
|
|
parent=jointeye
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|