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>
550 lines
7.1 KiB
Plaintext
550 lines
7.1 KiB
Plaintext
[LAB_ONLY]
|
|
|
|
[DamageZones]
|
|
// call MakeEntryList with 'dz_'
|
|
dz_lgun=0
|
|
dz_rgun=1
|
|
|
|
[ROOT]
|
|
JointCount=23
|
|
DZoneCount=2
|
|
Former Segment=segroot
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
joint=jointlocal
|
|
joint=jointshadow
|
|
|
|
[jointlocal]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segem1
|
|
tranx=-0.00153483
|
|
trany=3.99778
|
|
tranz=0.000152588
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0
|
|
joint=jointturret
|
|
joint=jointrthigh
|
|
joint=jointlthigh
|
|
|
|
|
|
[jointturret]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Former Segment=segtor
|
|
tranx=-0.00647922
|
|
trany=0.662515
|
|
tranz=-3.2495e-05
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointshakey
|
|
joint=jointtorso
|
|
joint=jointeye
|
|
|
|
|
|
[jointtorso]
|
|
parent=jointturret
|
|
Type=hingey
|
|
Former Segment=segtur
|
|
Object=stidtur.bgf
|
|
dzone=dz_searchlight
|
|
tranx=1.81003e-06
|
|
trany=0.147047
|
|
tranz=1.52476
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
site=sitelasrport
|
|
site=siteeyepoint
|
|
site=siteedz_searchlight
|
|
site=sitelight
|
|
|
|
[sitelasrport]
|
|
parent=jointtorso
|
|
tranx=0.204941
|
|
trany=-0.309401
|
|
tranz=1.07525
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0
|
|
|
|
[jointshakey]
|
|
parent=jointturret
|
|
Type=ball
|
|
dzone=dz_btorso
|
|
dzone=dz_dtorso
|
|
dzone=dz_ftorso
|
|
dzone=dz_ltorso
|
|
dzone=dz_reardtorso
|
|
dzone=dz_rearutorso
|
|
dzone=dz_rtorso
|
|
dzone=dz_utorso
|
|
Former Segment=segshake
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
joint=jointrgun
|
|
joint=jointlgun
|
|
site=siteedz_btorso
|
|
site=siteedz_dtorso
|
|
site=siteedz_ftorso
|
|
site=siteedz_ltorso
|
|
site=siteedz_reardtorso
|
|
site=siteedz_rearutorso
|
|
site=siteedz_rtorso
|
|
site=siteedz_utorso
|
|
|
|
[sitelight]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=3.141593
|
|
roll=0
|
|
|
|
[siteedz_btorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_dtorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_ftorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_ltorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_reardtorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_rearutorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_rtorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_searchlight]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[siteedz_utorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointrgun]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Object=stidrgun.bgf
|
|
dzone=dz_rgun
|
|
Former Segment=segrgun
|
|
tranx=-1.19414
|
|
trany=1.12406
|
|
tranz=0.853299
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
site=sitergunport
|
|
site=siteedz_rgun
|
|
|
|
[sitergunport]
|
|
parent=jointrgun
|
|
tranx=-0.21166
|
|
trany=1.00136e-05
|
|
tranz=0.870326
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0
|
|
|
|
[siteedz_rgun]
|
|
parent=jointrgun
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointlgun]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Object=stidlgun.bgf
|
|
dzone=dz_lgun
|
|
Former Segment=seglgun
|
|
tranx=1.20167
|
|
trany=1.12404
|
|
tranz=0.853298
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
site=sitelgunport
|
|
site=siteedz_lgun
|
|
|
|
[sitelgunport]
|
|
parent=jointlgun
|
|
tranx=0.21382
|
|
trany=0
|
|
tranz=0.870337
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0
|
|
|
|
[siteedz_lgun]
|
|
parent=jointlgun
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointrthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
dzone=dz_ruleg
|
|
Former Segment=segruleg
|
|
tranx=-0.952786
|
|
trany=0.481929
|
|
tranz=0.0387254
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrknee
|
|
site=siteedz_ruleg
|
|
|
|
[siteedz_ruleg]
|
|
parent=jointrthigh
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointrknee]
|
|
parent=jointrthigh
|
|
Type=hingex
|
|
dzone=dz_rdleg
|
|
Former Segment=segrmleg
|
|
tranx=-7.03335e-06
|
|
trany=-0.84526
|
|
tranz=-0.770445
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrshin
|
|
site=siteedz_rdleg
|
|
|
|
[siteedz_rdleg]
|
|
parent=jointrknee
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointrshin]
|
|
parent=jointrknee
|
|
Type=hingex
|
|
dzone=dz_rdleg
|
|
Former Segment=segrdleg
|
|
tranx=-1.5974e-05
|
|
trany=-2.00154
|
|
tranz=0.143022
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrankle
|
|
|
|
[jointrankle]
|
|
parent=jointrshin
|
|
Type=hingex
|
|
Former Segment=segem2
|
|
tranx=-1.10269e-05
|
|
trany=-1.33788
|
|
tranz=1.14477
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrspacer
|
|
|
|
[jointrspacer]
|
|
parent=jointrankle
|
|
Type=static
|
|
dzone=dz_rfoot
|
|
Former Segment=segrfot
|
|
tranx=-1.96695e-06
|
|
trany=-0.22476
|
|
tranz=0.443925
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrinnertoe
|
|
joint=jointroutertoe
|
|
site=siteedz_rfoot
|
|
|
|
[siteedz_rfoot]
|
|
parent=jointrspacer
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointrinnertoe]
|
|
parent=jointrspacer
|
|
Type=hingez
|
|
dzone=dz_rfoot
|
|
Former Segment=segrito
|
|
tranx=0.271571
|
|
trany=0.12661
|
|
tranz=0.199687
|
|
pitch=-0.000243824
|
|
yaw=-0.00259528
|
|
roll=-0.000243824
|
|
|
|
[jointroutertoe]
|
|
parent=jointrspacer
|
|
Type=hingez
|
|
dzone=dz_rfoot
|
|
Former Segment=segroto
|
|
tranx=-0.328763
|
|
trany=0.12661
|
|
tranz=0.199687
|
|
pitch=-0.000243824
|
|
yaw=-0.00259528
|
|
roll=-0.000243824
|
|
|
|
[jointlthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
dzone=dz_luleg
|
|
Former Segment=segluleg
|
|
tranx=0.947335
|
|
trany=0.481914
|
|
tranz=0.0387254
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlknee
|
|
site=siteedz_luleg
|
|
|
|
[siteedz_luleg]
|
|
parent=jointlthigh
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointlknee]
|
|
parent=jointlthigh
|
|
Type=hingex
|
|
dzone=dz_ldleg
|
|
Former Segment=seglmleg
|
|
tranx=-6.97374e-06
|
|
trany=-0.845261
|
|
tranz=-0.770473
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlshin
|
|
site=siteedz_ldleg
|
|
|
|
[siteedz_ldleg]
|
|
parent=jointlknee
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointlshin]
|
|
parent=jointlknee
|
|
Type=hingex
|
|
dzone=dz_ldleg
|
|
Former Segment=segldleg
|
|
tranx=-1.60336e-05
|
|
trany=-2.00231
|
|
tranz=0.143042
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlankle
|
|
|
|
[jointlankle]
|
|
parent=jointlshin
|
|
Type=hingex
|
|
Former Segment=segem3
|
|
tranx=-1.09673e-05
|
|
trany=-1.33715
|
|
tranz=1.14475
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlspacer
|
|
|
|
[jointlspacer]
|
|
parent=jointlankle
|
|
Type=static
|
|
dzone=dz_lfoot
|
|
Former Segment=seglfot
|
|
tranx=-2.02656e-06
|
|
trany=-0.22498
|
|
tranz=0.443878
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointloutertoe
|
|
joint=jointlinnertoe
|
|
site=siteedz_lfoot
|
|
|
|
[siteedz_lfoot]
|
|
parent=jointlspacer
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointloutertoe]
|
|
parent=jointlspacer
|
|
Type=hingez
|
|
dzone=dz_lfoot
|
|
Former Segment=segloto
|
|
tranx=0.330316
|
|
trany=0.12684
|
|
tranz=0.199701
|
|
pitch=-0.000243824
|
|
yaw=-0.00259528
|
|
roll=-0.000243824
|
|
|
|
[jointlinnertoe]
|
|
parent=jointlspacer
|
|
Type=hingez
|
|
dzone=dz_lfoot
|
|
Former Segment=seglito
|
|
tranx=-0.268407
|
|
trany=0.12698
|
|
tranz=0.199711
|
|
pitch=-0.000243824
|
|
yaw=-0.00259528
|
|
roll=-0.000243824
|
|
|
|
[jointshadow]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segshd
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
joint=jointtshadow
|
|
|
|
[jointtshadow]
|
|
parent=jointshadow
|
|
Type=hingey
|
|
Former Segment=segtshd
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=0
|
|
roll=0
|
|
|
|
[jointeye]
|
|
parent=jointturret
|
|
Type=balltranslate
|
|
Former Segment=segnone
|
|
tranx=1.13
|
|
trany=-1.56
|
|
tranz=1.59
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0
|
|
|
|
//[siteeyepoint]
|
|
//parent=jointeye
|
|
//tranx=1.36201e-05
|
|
//trany=1.06051
|
|
//tranz=2.14197
|
|
//pitch=0
|
|
//yaw=-0
|
|
//roll=0
|
|
|
|
[siteeyepoint]
|
|
parent=jointtorso
|
|
tranx=0
|
|
trany=1.45
|
|
tranz=0
|
|
pitch=0
|
|
yaw=3.14159
|
|
roll=0 |