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>
626 lines
8.1 KiB
Plaintext
626 lines
8.1 KiB
Plaintext
[LAB_ONLY]
|
|
|
|
[DamageZones]
|
|
// call MakeEntryList with 'dz_'
|
|
dz_dtorso=0
|
|
dz_hip=1
|
|
dz_ldleg=2
|
|
dz_lfoot=3
|
|
dz_lgun=4
|
|
dz_ltorso=5
|
|
dz_luleg=6
|
|
dz_rdleg=7
|
|
dz_reardtorso=8
|
|
dz_rearltorso=9
|
|
dz_rearrtorso=10
|
|
dz_rearutorso=11
|
|
dz_rfoot=12
|
|
dz_rgun=13
|
|
dz_rtorso=14
|
|
dz_ruleg=15
|
|
dz_utorso=16
|
|
dz_searchlight=17
|
|
dz_ftorso=18
|
|
dz_btorso=19
|
|
|
|
[ROOT]
|
|
JointCount=19
|
|
DZoneCount=20
|
|
Former Segment=segroot
|
|
tranx=0.0226791
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlocal
|
|
joint=jointshadow
|
|
|
|
[jointlocal]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segem1
|
|
tranx=0
|
|
trany=5.86612
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointhip
|
|
joint=jointlthigh
|
|
joint=jointrthigh
|
|
|
|
[jointhip]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=jakhip.bgf
|
|
dzone=dz_hip
|
|
Former Segment=seghip
|
|
tranx=0
|
|
trany=0.400002
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointtorso
|
|
site=siteedz_hip
|
|
|
|
[siteedz_hip]
|
|
parent=jointhip
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointtorso]
|
|
parent=jointhip
|
|
Type=hingey
|
|
Former Segment=segtor
|
|
tranx=0
|
|
trany=1.78612
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointshakey
|
|
|
|
[jointshakey]
|
|
parent=jointtorso
|
|
Type=ball
|
|
Object=jaktor.bgf
|
|
Former Segment=segshake
|
|
dzone=dz_dtorso
|
|
dzone=dz_ltorso
|
|
dzone=dz_reardtorso
|
|
dzone=dz_rearltorso
|
|
dzone=dz_rearrtorso
|
|
dzone=dz_rearutorso
|
|
dzone=dz_rtorso
|
|
dzone=dz_utorso
|
|
dzone=dz_searchlight
|
|
dzone=dz_ftorso
|
|
dzone=dz_btorso
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlgun
|
|
joint=jointrgun
|
|
joint=jointeye
|
|
site=sitelight
|
|
site=sitelmissleport
|
|
site=sitermissleport
|
|
site=siteltorsoport
|
|
site=sitertorsoport
|
|
site=sitemtorsoport
|
|
site=siteedz_dtorso
|
|
site=siteedz_ltorso
|
|
site=siteedz_reardtorso
|
|
site=siteedz_rearltorso
|
|
site=siteedz_rearrtorso
|
|
site=siteedz_rearutorso
|
|
site=siteedz_rtorso
|
|
site=siteedz_utorso
|
|
site=siteedz_ftorso
|
|
site=siteedz_btorso
|
|
site=siteedz_searchlight
|
|
|
|
[sitelight]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitermissleport]
|
|
parent=jointshakey
|
|
tranx=1.5
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitelmissleport]
|
|
parent=jointshakey
|
|
tranx=-1.5
|
|
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_btorso]
|
|
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_rearltorso]
|
|
parent=jointshakey
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[siteedz_rearrtorso]
|
|
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_utorso]
|
|
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
|
|
|
|
[jointlgun]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Object=jaklgun.bgf
|
|
dzone=dz_lgun
|
|
Former Segment=seglgun
|
|
tranx=-1.97284
|
|
trany=1.48295
|
|
tranz=0.501266
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlspacer
|
|
site=siteedz_lgun
|
|
|
|
[siteedz_lgun]
|
|
parent=jointlgun
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointlspacer]
|
|
parent=jointlgun
|
|
Type=static
|
|
Former Segment=segem3
|
|
tranx=-0.58818
|
|
trany=-0.09899
|
|
tranz=-0.301266
|
|
pitch=-3.05474e-07
|
|
yaw=1.72853e-06
|
|
roll=-2.1495e-06
|
|
site=sitelugunport
|
|
site=sitelmgunport
|
|
site=siteldgunport
|
|
|
|
[sitelugunport]
|
|
parent=jointlspacer
|
|
tranx=6.91414e-06
|
|
trany=1.19209e-06
|
|
tranz=-4
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitelmgunport]
|
|
parent=jointlspacer
|
|
tranx=-0.519474
|
|
trany=-0.545001
|
|
tranz=-2.6759
|
|
pitch=-8.41496e-07
|
|
yaw=7.67452e-11
|
|
roll=4.21019e-07
|
|
|
|
[siteldgunport]
|
|
parent=jointlspacer
|
|
tranx=-0.519474
|
|
trany=-0.9585
|
|
tranz=-2.6759
|
|
pitch=-9.45753e-07
|
|
yaw=8.71373e-11
|
|
roll=4.73182e-07
|
|
|
|
[jointrgun]
|
|
parent=jointshakey
|
|
Type=hingex
|
|
Object=jakrgun.bgf
|
|
dzone=dz_rgun
|
|
Former Segment=segrgun
|
|
tranx=1.96679
|
|
trany=1.48295
|
|
tranz=0.501266
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointrspacer
|
|
site=siteedz_rgun
|
|
|
|
[siteedz_rgun]
|
|
parent=jointrgun
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointrspacer]
|
|
parent=jointrgun
|
|
Type=static
|
|
Former Segment=segem2
|
|
tranx=0.5874
|
|
trany=-0.09899
|
|
tranz=-0.301268
|
|
pitch=1.19209e-07
|
|
yaw=-0
|
|
roll=-1.49012e-08
|
|
site=siterugunport
|
|
site=sitermgunport
|
|
site=siterdgunport
|
|
|
|
[siterugunport]
|
|
parent=jointrspacer
|
|
tranx=0
|
|
trany=-4.76837e-07
|
|
tranz=-4.00002
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitermgunport]
|
|
parent=jointrspacer
|
|
tranx=0.48543
|
|
trany=-0.54498
|
|
tranz=-2.67631
|
|
pitch=-7.97207e-07
|
|
yaw=-6.37762e-06
|
|
roll=1.19581e-06
|
|
|
|
[siterdgunport]
|
|
parent=jointrspacer
|
|
tranx=0.48543
|
|
trany=-0.95914
|
|
tranz=-2.67631
|
|
pitch=-1.07287e-06
|
|
yaw=-8.58292e-06
|
|
roll=1.60931e-06
|
|
|
|
[siteltorsoport]
|
|
parent=jointtorso
|
|
tranx=-1.4766
|
|
trany=1.84179
|
|
tranz=-0.301049
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitertorsoport]
|
|
parent=jointtorso
|
|
tranx=1.43876
|
|
trany=1.84179
|
|
tranz=-0.301049
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[sitemtorsoport]
|
|
parent=jointtorso
|
|
tranx=0.151753
|
|
trany=0.40917
|
|
tranz=-1.83812
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointlthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=jakluleg.bgf
|
|
dzone=dz_luleg
|
|
Former Segment=segluleg
|
|
tranx=-1.09773
|
|
trany=0.400002
|
|
tranz=0.10069
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointlknee
|
|
site=siteedz_ldleg
|
|
site=siteedz_luleg
|
|
|
|
[siteedz_luleg]
|
|
parent=jointlthigh
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointlknee]
|
|
parent=jointlthigh
|
|
Type=hingex
|
|
Object=jakldleg.bgf
|
|
dzone=dz_ldleg
|
|
Former Segment=segldleg
|
|
tranx=0
|
|
trany=-2.3275
|
|
tranz=9.98378e-07
|
|
pitch=0
|
|
yaw=-1.66382e-14
|
|
roll=0
|
|
joint=jointlankle
|
|
site=siteedz_ldleg
|
|
|
|
[siteedz_ldleg]
|
|
parent=jointlknee
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointlankle]
|
|
parent=jointlknee
|
|
Type=hingex
|
|
Former Segment=segem5
|
|
tranx=0
|
|
trany=-2.64555
|
|
tranz=0.054912
|
|
pitch=5.50511e-38
|
|
yaw=1.42109e-14
|
|
roll=3.30873e-24
|
|
joint=jointltoe
|
|
|
|
[jointltoe]
|
|
parent=jointlankle
|
|
Type=static
|
|
Object=jaklfot.bgf
|
|
dzone=dz_lfoot
|
|
Former Segment=seglfot
|
|
tranx=0
|
|
trany=-1.24144
|
|
tranz=-2.23742
|
|
pitch=8.67747e-30
|
|
yaw=2.02319e-09
|
|
roll=3.55272e-15
|
|
site=siteedz_lfoot
|
|
|
|
[siteedz_lfoot]
|
|
parent=jointltoe
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointrthigh]
|
|
parent=jointlocal
|
|
Type=hingex
|
|
Object=jakruleg.bgf
|
|
dzone=dz_ruleg
|
|
Former Segment=segruleg
|
|
tranx=1.0893
|
|
trany=0.400002
|
|
tranz=0.10069
|
|
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
|
|
Object=jakrdleg.bgf
|
|
dzone=dz_rdleg
|
|
Former Segment=segrdleg
|
|
tranx=-3.99351e-05
|
|
trany=-2.3275
|
|
tranz=9.98378e-07
|
|
pitch=-3.06304e-09
|
|
yaw=1.27898e-12
|
|
roll=-6.68494e-20
|
|
joint=jointrankle
|
|
site=siteedz_rdleg
|
|
|
|
[siteedz_rdleg]
|
|
parent=jointrknee
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointrankle]
|
|
parent=jointrknee
|
|
Type=hingex
|
|
Former Segment=segem4
|
|
tranx=3.99351e-05
|
|
trany=-2.64557
|
|
tranz=0.054912
|
|
pitch=-6.62248e-10
|
|
yaw=-1.73468e-18
|
|
roll=1.4122e-13
|
|
joint=jointrtoe
|
|
|
|
[jointrtoe]
|
|
parent=jointrankle
|
|
Type=static
|
|
Object=jakrfot.bgf
|
|
dzone=dz_rfoot
|
|
Former Segment=segrfot
|
|
tranx=-1.9908e-05
|
|
trany=-1.24143
|
|
tranz=-2.23743
|
|
pitch=3.72528e-09
|
|
yaw=5.40005e-13
|
|
roll=3.53291e-11
|
|
site=siteedz_rfoot
|
|
|
|
[siteedz_rfoot]
|
|
parent=jointrtoe
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointshadow]
|
|
parent=ROOT
|
|
Type=balltranslate
|
|
Former Segment=segshd
|
|
tranx=0
|
|
trany=0.05
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
joint=jointtshadow
|
|
|
|
[jointtshadow]
|
|
parent=jointshadow
|
|
Type=hingey
|
|
Object=jak_tshd.bgf
|
|
Former Segment=segtshd
|
|
tranx=0
|
|
trany=0
|
|
tranz=0
|
|
pitch=0
|
|
yaw=-0
|
|
roll=0
|
|
|
|
[jointeye]
|
|
parent=jointshakey
|
|
Type=balltranslate
|
|
Former Segment=segnone
|
|
tranx=0.05
|
|
trany=5.1
|
|
tranz=-0.5
|
|
pitch=0
|
|
yaw=-0
|
|
roll=3.141593
|
|
site=siteeyepoint
|
|
|
|
[siteeyepoint]
|
|
parent=jointeye
|
|
tranx=0
|
|
trany=3.23
|
|
tranz=-1.4
|
|
pitch=0
|
|
yaw=-0
|
|
roll=3.141593
|