Files
BT412/content/VIDEO/MAD.ORG
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

11 KiB

[LAB_ONLY] // this file has not been approved for release

[DamageZones] // call MakeEntryList with 'dz_' dz_dtorso=0 dz_hip=1 dz_larm=2 dz_ldleg=3 dz_ldoor=4 dz_lfoot=5 dz_lgun=6 dz_ltorso=7 dz_luleg=8 dz_rarm=9 dz_rdleg=10 dz_rdoor=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_searchlight=20 dz_utorso=21

[ROOT] JointCount=25 DZoneCount=22 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 trany=5.29 tranz=0 pitch=0 yaw=-0.00261799 roll=0 joint=jointhip joint=jointlthigh joint=jointrthigh

[jointhip] parent=jointlocal Type=hingex Object=mad_hip.bgf dzone=dz_hip Former Segment=seghip tranx=-4.93114e-07 trany=0.373967 tranz=-0.000188355 pitch=0 yaw=-0 roll=0 joint=jointtorso site=siteedz_hip

[jointtorso] parent=jointhip Type=hingey Former Segment=segtor tranx=5.88841e-07 trany=0.30755 tranz=0.000188448 pitch=-5.82075e-11 yaw=3.22776e-24 roll=1.10905e-13 joint=jointshakey

joint=jointeye [jointshakey] parent=jointtorso Type=ball Object=mad_tor.bgf dzone=dz_dtorso dzone=dz_ltorso dzone=dz_reardtorso dzone=dz_rearltorso dzone=dz_rearrtorso dzone=dz_rearutorso dzone=dz_rtorso dzone=dz_searchlight dzone=dz_utorso Former Segment=segshake tranx=-1.47042e-07 trany=0.100963 tranz=-9.42898e-08 pitch=5.49888e-16 yaw=0.00261798 roll=1.52387e-13 joint=jointrshoulder joint=jointlshoulder site=sitelmissleport site=sitermissleport site=sitelight site=siterutorsoport site=siterdtorsoport site=sitelutorsoport site=siteldtorsoport joint=jointlmissledoor joint=jointrmissledoor site=siteedz_rtorso site=siteedz_ltorso site=siteedz_utorso site=siteedz_dtorso site=siteedz_rearutorso site=siteedz_reardtorso site=siteedz_rearrtorso site=siteedz_rearltorso site=siteedz_searchlight

[jointrshoulder] parent=jointshakey Type=hingex Object=mad_rarm.bgf dzone=dz_rarm Former Segment=segrarm tranx=1.746 trany=1.35502 tranz=0.988 pitch=-2.12633e-09 yaw=-2.85749e-26 roll=-2.68771e-17 joint=jointrgun site=siteedz_rarm

[jointrgun] parent=jointrshoulder Type=hingex Object=mad_rgun.bgf dzone=dz_rgun Former Segment=segrgun tranx=1.056 trany=-0.959001 tranz=-5.96046e-08 pitch=2.85992e-08 yaw=3.07336e-08 roll=-1.01557e-13 site=siterugunport site=siterdgunport site=siteedz_rgun

[siterugunport] parent=jointrgun tranx=0.17 trany=0.0179999 tranz=-3.819 pitch=1.27931e-10 yaw=4.65826e-10 roll=-9.26676e-15

[siterdgunport] parent=jointrgun tranx=0.53 trany=-0.366999 tranz=-3.819 pitch=1.27931e-10 yaw=4.65826e-10 roll=-9.26676e-15

[siteedz_rgun] parent=jointrgun tranx=0.32896 trany=-0.186245 tranz=-0.345314 pitch=-3.57279e-08 yaw=-3.25957e-09 roll=-2.12342e-06

[siteedz_rarm] parent=jointrshoulder tranx=0.526 trany=-0.35102 tranz=7.03335e-06 pitch=2.96466e-08 yaw=2.65423e-08 roll=-1.01683e-13

[jointlshoulder] parent=jointshakey Type=hingex Object=mad_larm.bgf dzone=dz_larm Former Segment=seglarm tranx=-1.743 trany=1.35502 tranz=0.988 pitch=-3.27953e-09 yaw=-6.78302e-26 roll=-4.13659e-17 joint=jointlgun site=siteedz_larm

[jointlgun] parent=jointlshoulder Type=hingex Object=mad_lgun.bgf dzone=dz_lgun Former Segment=seglgun tranx=-1.06 trany=-0.958 tranz=5.96046e-08 pitch=8.20184e-08 yaw=7.4126e-08 roll=-1.75833e-06 site=sitelugunport site=siteldgunport site=siteedz_lgun

[sitelugunport] parent=jointlgun tranx=-0.165 trany=0.0170004 tranz=-3.819 pitch=-8.93909e-08 yaw=1.29528e-08 roll=-3.83964e-15

[siteldgunport] parent=jointlgun tranx=-0.523999 trany=-0.368001 tranz=-3.819 pitch=-1.06155e-07 yaw=1.6678e-08 roll=-4.80842e-15

[siteedz_lgun] parent=jointlgun tranx=-0.328 trany=-0.187021 tranz=-0.345319 pitch=-4.42217e-08 yaw=9.22739e-09 roll=-1.92803e-15

[siteedz_larm] parent=jointlshoulder tranx=-0.52937 trany=-0.3509 tranz=7.09295e-06 pitch=8.38229e-08 yaw=6.69089e-08 roll=-1.75833e-06

[sitelmissleport] parent=jointshakey tranx=-2.318 trany=2.64102 tranz=0.245 pitch=-1.57161e-09 yaw=-1.56389e-26 roll=-1.99018e-17

[sitermissleport] parent=jointshakey tranx=2.315 trany=2.64102 tranz=0.245 pitch=-1.10594e-09 yaw=-7.72272e-27 roll=-1.39658e-17

[sitelight] parent=jointshakey tranx=5.85843e-08 trany=0.10002 tranz=-2.044 pitch=-6.98497e-10 yaw=-3.10969e-27 roll=-8.90395e-18

[siterutorsoport] parent=jointshakey tranx=0.764 trany=0.86902 tranz=-2.761 pitch=-4.07446e-10 yaw=-1.06712e-27 roll=-5.23808e-18

[siterdtorsoport] parent=jointshakey tranx=0.774 trany=0.57602 tranz=-2.349 pitch=-2.91033e-10 yaw=-5.33461e-28 roll=-3.66598e-18

[sitelutorsoport] parent=jointshakey tranx=-0.766 trany=0.86902 tranz=-2.761 pitch=4.07464e-10 yaw=-1.03125e-27 roll=5.06179e-18

[siteldtorsoport] parent=jointshakey tranx=-0.779 trany=0.57602 tranz=-2.349 pitch=1.7462e-10 yaw=-1.82816e-28 roll=2.09388e-18

[jointlmissledoor] parent=jointshakey Type=hingex dzone=dz_ldoor Former Segment=segldoor tranx=-2.114 trany=3.795 tranz=0.263498 pitch=-3.27953e-09 yaw=5.35516e-09 roll=-4.10601e-17 site=siteedz_ldoor

[siteedz_ldoor] parent=jointlmissledoor tranx=0 trany=-0.983 tranz=-0.078498 pitch=-4.11285e-09 yaw=5.3556e-09 roll=1.31602e-17

[jointrmissledoor] parent=jointshakey Type=hingex dzone=dz_rdoor Former Segment=segrdoor tranx=2.114 trany=3.79453 tranz=0.263498 pitch=-3.0467e-09 yaw=1.39701e-09 roll=-3.83169e-17 site=siteedz_rdoor

[siteedz_rdoor] parent=jointrmissledoor tranx=-0.000169992 trany=-0.98231 tranz=-0.078138 pitch=3.10491e-09 yaw=8.02223e-10 roll=1.09168e-11

[siteedz_rtorso] parent=jointshakey tranx=2.114 trany=2.79299 tranz=1.15422 pitch=1.74622e-09 yaw=-1.9045e-26 roll=2.18128e-17

[siteedz_ltorso] parent=jointshakey tranx=-2.114 trany=2.793 tranz=1.154 pitch=1.16413e-10 yaw=-8.08573e-29 roll=1.38914e-18

[siteedz_utorso] parent=jointshakey tranx=4.57201e-08 trany=2.03599 tranz=-0.363648 pitch=5.82074e-09 yaw=-2.12814e-25 roll=7.31226e-17

[siteedz_dtorso] parent=jointshakey tranx=1.76362e-08 trany=0.36167 tranz=-1.16012 pitch=1.10594e-08 yaw=-7.68186e-25 roll=1.3892e-16

[siteedz_rearutorso] parent=jointshakey tranx=8.41722e-08 trany=2.03599 tranz=2.17676 pitch=6.92669e-09 yaw=-3.01617e-25 roll=8.70884e-17

[siteedz_reardtorso] parent=jointshakey tranx=7.06844e-08 trany=0.57603 tranz=1.43517 pitch=1.37952e-08 yaw=-1.19542e-24 roll=1.7331e-16

[siteedz_rearrtorso] parent=jointshakey tranx=2.114 trany=2.793 tranz=2.17676 pitch=3.31782e-09 yaw=-6.92008e-26 roll=4.17147e-17

[siteedz_rearltorso] parent=jointshakey tranx=-2.114 trany=2.79301 tranz=2.177 pitch=1.10594e-09 yaw=-7.62155e-27 roll=1.37829e-17

[siteedz_searchlight] parent=jointshakey tranx=5.32242e-08 trany=0.10002 tranz=-1.87191 pitch=2.91034e-10 yaw=-5.32476e-28 roll=3.6592e-18

[siteedz_hip] parent=jointhip tranx=-0.000890357 trany=-0.0815088 tranz=-0.34009 pitch=-5.82027e-11 yaw=5.61625e-23 roll=1.92989e-12

[jointlthigh] parent=jointlocal Type=hingex Object=mad_lule.bgf dzone=dz_luleg Former Segment=segluleg tranx=-1.69818 trany=0.235867 tranz=0.00425748 pitch=0 yaw=-0 roll=0 joint=jointlknee site=siteedz_luleg

[jointlknee] parent=jointlthigh Type=hingex Object=mad_ldle.bgf dzone=dz_ldleg Former Segment=segldleg tranx=0.00376296 trany=-1.96938 tranz=1.43734 pitch=2.96845e-08 yaw=0.002618 roll=-4.50033e-08 joint=jointlankle site=siteedz_ldleg

[jointlankle] parent=jointlknee Type=hingex Object=mad_lfot.bgf dzone=dz_lfoot Former Segment=seglfot tranx=1.19209e-07 trany=-2.38752 tranz=-1.43651 pitch=2.02656e-06 yaw=-1.04583e-13 roll=-1.73066e-13 joint=jointlbacktoe joint=jointloutertoe joint=jointlinnertoe site=siteedz_lfoot

[jointlbacktoe] parent=jointlankle Type=hingex Object=mad_lbto.bgf dzone=dz_lfoot Former Segment=seglbto tranx=-2.00272e-05 trany=-0.514369 tranz=0.689937 pitch=5.83996e-06 yaw=-4.11746e-08 roll=5.37255e-09

[jointloutertoe] parent=jointlankle Type=hingex Object=mad_loto.bgf dzone=dz_lfoot Former Segment=segloto tranx=-0.51023 trany=-0.514372 tranz=-1.04087 pitch=-2.85103e-06 yaw=0.785398 roll=-2.01072e-06

[jointlinnertoe] parent=jointlankle Type=hingex Object=mad_lito.bgf dzone=dz_lfoot Former Segment=seglito tranx=0.4988 trany=-0.514362 tranz=-1.04083 pitch=-2.94107e-06 yaw=-0.785398 roll=2.10201e-06

[siteedz_lfoot] parent=jointlankle tranx=0.00019002 trany=-0.756791 tranz=-0.341029 pitch=5.83996e-06 yaw=-3.95577e-08 roll=3.95133e-09

[siteedz_ldleg] parent=jointlknee tranx=0.00019002 trany=-1.27301 tranz=-0.68516 pitch=2.02656e-06 yaw=4.28164e-10 roll=-1.72638e-13

[siteedz_luleg] parent=jointlthigh tranx=0.271583 trany=-1.09312 tranz=0.527891 pitch=2.96816e-08 yaw=0.002618 roll=-4.61203e-08

[jointrthigh] parent=jointlocal Type=hingex Object=mad_rule.bgf dzone=dz_ruleg Former Segment=segruleg tranx=1.70076 trany=0.237486 tranz=-0.0044526 pitch=0 yaw=-0 roll=0 joint=jointrknee site=siteedz_ruleg

[jointrknee] parent=jointrthigh Type=hingex Object=mad_rdle.bgf dzone=dz_rdleg Former Segment=segrdleg tranx=0.00376308 trany=-1.97125 tranz=1.43737 pitch=1.78845e-06 yaw=0.00261799 roll=1.18749e-07 joint=jointrankle site=siteedz_rdleg

[jointrankle] parent=jointrknee Type=hingex Object=mad_rfot.bgf dzone=dz_rfoot Former Segment=segrfot tranx=-2.38419e-07 trany=-2.38756 tranz=-1.43738 pitch=-4.76157e-27 yaw=5.58442e-14 roll=-1.7053e-13 joint=jointrbacktoe joint=jointrinnertoe joint=jointroutertoe site=siteedz_rfoot

[jointrbacktoe] parent=jointrankle Type=hingex Object=mad_rbto.bgf dzone=dz_rfoot Former Segment=segrbto tranx=-1.19209e-07 trany=-0.514069 tranz=0.689989 pitch=6.34684e-06 yaw=7.48792e-13 roll=3.93519e-09

[jointrinnertoe] parent=jointrankle Type=hingex Object=mad_rito.bgf dzone=dz_rfoot Former Segment=segrito tranx=-0.50311 trany=-0.514062 tranz=-1.04019 pitch=-2.09713e-06 yaw=0.785398 roll=-1.74167e-06

[jointroutertoe] parent=jointrankle Type=hingex Object=mad_roto.bgf dzone=dz_rfoot Former Segment=segroto tranx=0.50682 trany=-0.514072 tranz=-1.04024 pitch=-2.71565e-06 yaw=-0.785398 roll=1.83461e-06

[siteedz_rfoot] parent=jointrankle tranx=-0.000170112 trany=-0.7562 tranz=-0.339987 pitch=6.34684e-06 yaw=4.42963e-09 roll=5.71235e-10

[siteedz_rdleg] parent=jointrknee tranx=0.000229836 trany=-1.27285 tranz=-0.685479 pitch=-1.75964e-21 yaw=1.75578e-08 roll=-2.00439e-13

[siteedz_ruleg] parent=jointrthigh tranx=-0.271387 trany=-1.09474 tranz=0.528712 pitch=1.78844e-06 yaw=0.002618 roll=1.14403e-07

[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=mad_tshd.bgf Former Segment=segtshd tranx=0 trany=0 tranz=0 pitch=0 yaw=0 roll=0

[jointeye] parent=jointtorso Type=balltranslate Former Segment=segnone tranx=-0.00345132 trany=1.68696 tranz=-1.31825 pitch=9.31331e-10 yaw=-1.74623e-07 roll=6.64025e-13 site=siteeyepoint

[siteeyepoint] // moved by AddEyeJoint parent=jointeye tranx=0 trany=0 tranz=0 pitch=0 yaw=0 roll=0