Files
BT412/content/VIDEO/FIR.SKL
T
arcattackandClaude Opus 4.8 7b7d465e5e Initial commit: bt411 -- standalone Windows BattleTech (Tesla 4.10 port)
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>
2026-07-05 21:03:40 -05:00

669 lines
8.5 KiB
Plaintext

[LAB_ONLY]
[DamageZones]
// call MakeEntryList with 'dz_'
dz_btorso=0
dz_dtorso=1
dz_ftorso=2
dz_hip=3
dz_larm=4
dz_ldleg=5
dz_lfoot=6
dz_lgun=7
dz_ltorso=8
dz_luleg=9
dz_rarm=10
dz_rdleg=11
dz_reardtorso=12
dz_rearltorso=13
dz_rearrtorso=14
dz_rearutorso=15
dz_rfoot=16
dz_rgun=17
dz_rtorso=18
dz_ruleg=19
dz_utorso=20
dz_searchlight=21
[ROOT]
JointCount=20
DZoneCount=22
Former Segment=segroot
tranx=0
trany=0
tranz=-0.185811
pitch=0
yaw=-0
roll=0
joint=jointlocal
joint=jointshadow
[jointlocal]
parent=ROOT
Type=balltranslate
Former Segment=segem1
tranx=0
trany=5
tranz=0
pitch=0
yaw=-0
roll=0
joint=jointhip
joint=jointlthigh
joint=jointrthigh
[jointhip]
parent=jointlocal
Type=hingex
Object=firhip.bgf
dzone=dz_hip
Former Segment=seghip
tranx=0
trany=0.6
tranz=0.081881
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.05087
tranz=0.0893458
pitch=0
yaw=-0
roll=0
joint=jointshakey
[jointshakey]
parent=jointtorso
Type=ball
Object=firtor.bgf
dzone=dz_btorso
dzone=dz_dtorso
dzone=dz_ftorso
dzone=dz_ltorso
dzone=dz_reardtorso
dzone=dz_rearltorso
dzone=dz_rearrtorso
dzone=dz_rearutorso
dzone=dz_rtorso
dzone=dz_utorso
dzone=dz_searchlight
Former Segment=segshake
tranx=0
trany=0
tranz=0
pitch=0
yaw=0
roll=0
joint=jointneck
joint=jointlshoulder
joint=jointrshoulder
site=sitebtorsoport
site=siteftorsoport
site=sitelite
site=siteltorsoport
site=sitertorsoport
site=sitemissleport
site=siteedz_btorso
site=siteedz_dtorso
site=siteedz_ftorso
site=siteedz_ltorso
site=siteedz_reardtorso
site=siteedz_rearltorso
site=siteedz_rearrtorso
site=siteedz_rearutorso
site=siteedz_rtorso
site=siteedz_utorso
site=siteedz_searchlight
[siteltorsoport]
parent=jointshakey
tranx=-0.000382751
trany=0.78578
tranz=-0.688296
pitch=0
yaw=-0
roll=0
[sitertorsoport]
parent=jointshakey
tranx=-0.000382751
trany=0.78578
tranz=-0.688296
pitch=0
yaw=-0
roll=0
[sitemissleport]
parent=jointshakey
tranx=-0.000382751
trany=0.78578
tranz=-0.688296
pitch=0
yaw=-0
roll=0
[sitebtorsoport]
parent=jointshakey
tranx=-0.000382751
trany=0.78578
tranz=0.977056
pitch=0
yaw=-0
roll=0
[siteftorsoport]
parent=jointshakey
tranx=-0.000382751
trany=0.78578
tranz=-0.688296
pitch=0
yaw=-0
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_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
[sitelight]
parent=jointshakey
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointneck]
parent=jointshakey
Type=hingey
Object=firhed.bgf
dzone=dz_rearutorso
dzone=dz_utorso
Former Segment=seghed
tranx=0
trany=2.64982
tranz=0.124527
pitch=0
yaw=-0
roll=0
joint=jointeye
site=siteedz_rearutorso
site=siteedz_utorso
[siteedz_rearutorso]
parent=jointneck
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[siteedz_utorso]
parent=jointneck
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointlshoulder]
parent=jointshakey
Type=hingex
Object=firlarm.bgf
dzone=dz_larm
Former Segment=seglarm
tranx=-1.22383
trany=1.74914
tranz=0.375339
pitch=0
yaw=-0
roll=0
joint=jointlgun
site=siteedz_larm
[siteedz_larm]
parent=jointlshoulder
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointlgun]
parent=jointlshoulder
Type=hingey
Object=firlgun.bgf
dzone=dz_lgun
Former Segment=seglgun
tranx=-0.5222
trany=-0.88237
tranz=-9.83477e-07
pitch=-1.11759e-08
yaw=6.51929e-09
roll=-2.98025e-08
site=sitelgunport
site=sitellaserport
site=siteedz_lgun
[sitelgunport]
parent=jointlgun
tranx=0.12046
trany=-0.35095
tranz=-2.99349
pitch=-1.86265e-08
yaw=4.936e-08
roll=1.77391e-13
[sitellaserport]
parent=jointlgun
tranx=-0.52608
trany=-0.51124
tranz=-2.80856
pitch=-1.86265e-08
yaw=4.936e-08
roll=1.77391e-13
[siteedz_lgun]
parent=jointlgun
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointrshoulder]
parent=jointshakey
Type=hingex
Object=firrarm.bgf
dzone=dz_rarm
Former Segment=segrarm
tranx=1.22552
trany=1.74914
tranz=0.37534
pitch=0
yaw=-0
roll=0
joint=jointrgun
site=siteedz_rarm
[siteedz_rarm]
parent=jointrshoulder
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointrgun]
parent=jointrshoulder
Type=hingey
Object=firrgun.bgf
dzone=dz_rgun
Former Segment=segrgun
tranx=0.5236
trany=-0.88237
tranz=-1.01328e-06
pitch=-2.29872e-08
yaw=-1.36407e-08
roll=4.92136e-13
site=sitergunport
site=siterlaserport
site=siteedz_rgun
[sitergunport]
parent=jointrgun
tranx=-0.1224
trany=-0.35101
tranz=-2.9934
pitch=6.35474e-10
yaw=-4.98585e-09
roll=2.98019e-08
[siterlaserport]
parent=jointrgun
tranx=0.51971
trany=-0.51114
tranz=-2.80848
pitch=6.35474e-10
yaw=-4.98585e-09
roll=2.98019e-08
[siteedz_rgun]
parent=jointrgun
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointlthigh]
parent=jointlocal
Type=hingex
Object=firluleg.bgf
dzone=dz_luleg
Former Segment=segluleg
tranx=-0.8
trany=0.6
tranz=0.081881
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
Object=firldleg.bgf
dzone=dz_ldleg
Former Segment=segldleg
tranx=0
trany=-2.40001
tranz=-0.038617
pitch=0
yaw=-0
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=segem3
tranx=0
trany=-2.40001
tranz=0.0538427
pitch=0
yaw=-0
roll=0
joint=jointltoe
[jointltoe]
parent=jointlankle
Type=static
Object=firlfot.bgf
dzone=dz_lfoot
Former Segment=seglfot
tranx=0
trany=-0.74735
tranz=-1.7848
pitch=1.66893e-06
yaw=-0
roll=0
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=firruleg.bgf
dzone=dz_ruleg
Former Segment=segruleg
tranx=0.8
trany=0.6
tranz=0.081881
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=firrdleg.bgf
dzone=dz_rdleg
Former Segment=segrdleg
tranx=0
trany=-2.40001
tranz=-0.038617
pitch=0
yaw=-0
roll=0
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=segem2
tranx=0
trany=-2.40001
tranz=0.0538427
pitch=0
yaw=-0
roll=0
joint=jointrtoe
[jointrtoe]
parent=jointrankle
Type=static
Object=firrfot.bgf
dzone=dz_rfoot
Former Segment=segrfot
tranx=0
trany=-0.74735
tranz=-1.7848
pitch=1.66893e-06
yaw=-0
roll=0
site=siteedz_rfoot
[siteedz_rfoot]
parent=jointrtoe
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[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=fir_tshd.bgf
Former Segment=segtshd
tranx=0
trany=0
tranz=0
pitch=0
yaw=-0
roll=0
[jointeye]
parent=jointneck
Type=balltranslate
Former Segment=segnone
tranx=-0.2
trany=0.6
tranz=2
pitch=0
yaw=-0
roll=0
site=siteeyepoint
[siteeyepoint]
parent=jointeye
tranx=0.2
trany=0.55
tranz=-1.3
pitch=0
yaw=-0
roll=0