Files
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

490 lines
7.9 KiB
Plaintext

DIV-VIZ2
HEADER
(
VERSION=2:08;
DATE=30:5:96;
TIME=3:18;
FILETYPE=MATERIAL
)
{
}
TEXTURE(NAME="firesmoke1_scr_tex";SPECIAL=" SCROLL 0 0 0.05 -0.331 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="fireref_tex")
{
MAP {"fireref"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="fire2_tex")
{
MAP {"fire"}
BITSLICE { 1 }
}
TEXTURE(NAME="sky_scr_tex";SPECIAL=" SCROLL 0 0 0.01 0.005 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="tsphere_scr_tex";SPECIAL=" SCROLL 0.0 0.0 0.1 0.5 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="beamwhite_scr_tex";SPECIAL=" SCROLL 0.0 0.0 0.10 9.5 \0x00")
{
MAP {"bexp"}
}
TEXTURE(NAME="beamgreen_scr_tex";SPECIAL=" SCROLL 0.0 0.0 0.10 -1.3 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="bexp1_tex")
{
MAP {"bexp"}
}
TEXTURE(NAME="bgenA5_tex")
{
MAP {"bgenA"}
BITSLICE { 4 }
}
TEXTURE(NAME="missmoke_scr_tex";SPECIAL=" SCROLL 0.0 0.0 1.5 0.05 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="misfire_scr_tex";SPECIAL=" SCROLL 0.0 0.0 2.5 0.1 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="muzinner_scr_tex";SPECIAL=" SCROLL 0.0 0.0 2.5 0.1 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="muzouter_scr_tex";SPECIAL=" SCROLL 0.0 0.0 1.5 0.05 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="beamyellow_scr_tex";SPECIAL=" SCROLL 0.0 0.0 0.10 -5.3 \0x00")
{
MAP {"bexp"}
}
TEXTURE(NAME="bexp9_tex")
{
MAP {"bexp"}
BITSLICE { 8 }
}
TEXTURE(NAME="smoke1_scr_tex";SPECIAL=" SCROLL 0 0 0.05 -0.131 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="firesmoke2_scr_tex";SPECIAL=" SCROLL 0 0 0 0.131 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="firesmoke3_scr_tex";SPECIAL=" SCROLL 0 0 0.05 -1.731 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="planet_scr_tex";SPECIAL=" SCROLL 0 0 0.02 0.02 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="bdam3_tex")
{
MAP {"bdam"}
BITSLICE { 2 }
}
TEXTURE(NAME="bdam8_tex")
{
MAP {"bdam"}
BITSLICE { 7 }
}
TEXTURE(NAME="whiteopaque_tex")
{
MAP {"whiteopaque"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="firesmoke4_scr_tex";SPECIAL=" SCROLL 0 0 0.05 -0.131 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="arsky_scr_tex";SPECIAL=" SCROLL 0 0 0.005 0.01 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
TEXTURE(NAME="dsky_scr_tex";SPECIAL=" SCROLL 0 0 0.005 0.01 \0x00")
{
MAP {"bintA"}
MAGNIFY {BILINEAR}
}
RAMP(NAME="softer")
{
DATA {0.25, 0.25, 0.25, 0.99, 0.99, 0.99}
}
RAMP(NAME="fiery")
{
DATA {0.3, 0.1, 0.1, 0.9, 0.7, 0.3}
}
RAMP(NAME="sky")
{
DATA {0, 0, 0.6, 0.99, 0.99, 0.99}
}
MATERIAL(NAME="firesmoke1_mtl")
{
TEXTURE {"firesmoke1_scr_tex"}
RAMP {"fiery"}
}
MATERIAL(NAME="fireref_mtl")
{
TEXTURE {"fireref_tex"}
}
MATERIAL(NAME="fire2_mtl")
{
TEXTURE {"fire2_tex"}
}
MATERIAL(NAME="sky_mtl")
{
TEXTURE {"sky_scr_tex"}
AMBIENT {0, 0.035168, 1}
DIFFUSE {0, 0.027973, 1}
EMISSIVE {0.7, 0.7, 0.9}
RAMP {"sky"}
}
MATERIAL(NAME="ch1_mtl")
{
}
MATERIAL(NAME="ch2_mtl")
{
DIFFUSE {1, 0, 0}
}
MATERIAL(NAME="tsphere_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
TEXTURE {"tsphere_scr_tex"}
EMISSIVE {0.7, 0.5, 1}
RAMP {"sky"}
}
MATERIAL(NAME="beamwhite_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
TEXTURE {"beamwhite_scr_tex"}
EMISSIVE {1, 1, 1}
OPACITY {0.5, 0.5, 0.5}
RAMP {"softer"}
}
MATERIAL(NAME="beamred_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
DIFFUSE {1, 0, 0}
EMISSIVE {1, 0.2, 0.2}
OPACITY {0.5, 0.5, 0.5}
RAMP {"fiery"}
}
MATERIAL(NAME="beamgreen_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
TEXTURE {"beamgreen_scr_tex"}
DIFFUSE {0, 1, 0.13}
EMISSIVE {0.2, 1, 0.2}
OPACITY {0.5, 0.5, 0.5}
RAMP {"softer"}
}
MATERIAL(NAME="beamblue_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
TEXTURE {"bexp1_tex"}
AMBIENT {0.1018, 0.338001, 1}
DIFFUSE {0.1015, 0.31374, 1}
EMISSIVE {0.5, 0.5, 1}
OPACITY {0.5, 0.5, 0.5}
RAMP {"sky"}
}
MATERIAL(NAME="miswhite_mtl")
{
TEXTURE {"bgenA5_tex"}
}
MATERIAL(NAME="sparkred_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
AMBIENT {0, 0, 0}
DIFFUSE {0.7224, 0.310176, 0.0059}
EMISSIVE {1, 0.2, 0.2}
}
MATERIAL(NAME="miseng_mtl")
{
AMBIENT {0.8, 0.536923, 0}
DIFFUSE {0.8, 0.51457, 0}
}
MATERIAL(NAME="missmoke_mtl")
{
TEXTURE {"missmoke_scr_tex"}
EMISSIVE {1, 1, 1}
RAMP {"fiery"}
}
MATERIAL(NAME="misfire_mtl";SPECIAL=" IMMUNE 2 \0x00")
{
TEXTURE {"misfire_scr_tex"}
AMBIENT {0, 0, 0}
DIFFUSE {1, 0.928403, 0.5959}
EMISSIVE {0.9, 0.9, 0.5}
}
MATERIAL(NAME="muzinner_mtl";SPECIAL=" IMMUNE 2 \0x00")
{
TEXTURE {"muzinner_scr_tex"}
AMBIENT {0, 0, 0}
EMISSIVE {0.9, 0.9, 0.9}
}
MATERIAL(NAME="muzouter_mtl")
{
TEXTURE {"muzouter_scr_tex"}
AMBIENT {0, 0, 0}
DIFFUSE {1, 0.435533, 0}
EMISSIVE {0.9, 0.4, 0.2}
}
MATERIAL(NAME="brighten.25_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
DIFFUSE {0.25, 0, 0}
EMISSIVE {2, 2, 2}
}
MATERIAL(NAME="brighten.5_mtl")
{
DIFFUSE {0.5, 0, 0}
}
MATERIAL(NAME="brighten.75_mtl")
{
DIFFUSE {0.75, 0, 0}
}
MATERIAL(NAME="beamyellow_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
TEXTURE {"beamyellow_scr_tex"}
DIFFUSE {1, 0.556157, 0.1878}
EMISSIVE {1, 0.8, 0.3}
OPACITY {0.5, 0.5, 0.5}
RAMP {"fiery"}
}
MATERIAL(NAME="bexp_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
TEXTURE {"bexp9_tex"}
EMISSIVE {1, 1, 1}
}
MATERIAL(NAME="smoke1_mtl")
{
TEXTURE {"smoke1_scr_tex"}
DIFFUSE {0.3714, 0.289936, 0.3714}
EMISSIVE {0.7, 0.4, 0.4}
OPACITY {0.7, 0.99, 0}
RAMP {"softer"}
}
MATERIAL(NAME="firesmoke2_mtl")
{
TEXTURE {"firesmoke2_scr_tex"}
RAMP {"fiery"}
}
MATERIAL(NAME="firesmoke3_mtl")
{
TEXTURE {"firesmoke3_scr_tex"}
RAMP {"fiery"}
}
MATERIAL(NAME="brite_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
EMISSIVE {1, 1, 1}
}
MATERIAL(NAME="planet_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
TEXTURE {"planet_scr_tex"}
AMBIENT {1, 0.510935, 0}
DIFFUSE {0, 0.577805, 1}
EMISSIVE {0.2, 0.2, 0.3}
}
MATERIAL(NAME="stars1_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
DIFFUSE {0.2, 0.222025, 0.4}
EMISSIVE {1, 0.99, 0.99}
}
MATERIAL(NAME="stars2_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
DIFFUSE {0.2, 0.318108, 0.5}
EMISSIVE {1, 0.99, 0.99}
}
MATERIAL(NAME="stars3_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
DIFFUSE {0.25, 0.222025, 0.55}
EMISSIVE {1, 0.99, 0.99}
}
MATERIAL(NAME="boomstuffwht_mtl")
{
TEXTURE {"bdam3_tex"}
}
MATERIAL(NAME="boomstuffgry_mtl")
{
TEXTURE {"bdam3_tex"}
AMBIENT {0.4204, 0.362815, 0.4204}
DIFFUSE {0.4653, 0.384296, 0.4653}
}
MATERIAL(NAME="boomstuff2gry_mtl")
{
TEXTURE {"bdam8_tex"}
AMBIENT {0.4204, 0.362815, 0.4204}
DIFFUSE {0.4653, 0.384296, 0.4653}
}
MATERIAL(NAME="boomstuff2wht_mtl")
{
TEXTURE {"bdam8_tex"}
}
MATERIAL(NAME="boomstuff2drk_mtl")
{
TEXTURE {"bdam8_tex"}
AMBIENT {0.2571, 0.204089, 0.2571}
DIFFUSE {0.2571, 0.183074, 0.2571}
}
MATERIAL(NAME="boomstuffdrk_mtl")
{
TEXTURE {"bdam3_tex"}
AMBIENT {0.2571, 0.204089, 0.2571}
DIFFUSE {0.2571, 0.183074, 0.2571}
}
MATERIAL(NAME="whiteopaque_mtl")
{
TEXTURE {"whiteopaque_tex"}
}
MATERIAL(NAME="horizon_mtl";SPECIAL=" IMMUNE 0 \0x00")
{
}
MATERIAL(NAME="jetblack_mtl")
{
AMBIENT {0, 0, 0}
DIFFUSE {0, 0, 0}
}
MATERIAL(NAME="hudgreen_mtl")
{
DIFFUSE {0.1388, 1, 0}
}
MATERIAL(NAME="firesmoke4_mtl")
{
TEXTURE {"firesmoke4_scr_tex"}
RAMP {"fiery"}
}
MATERIAL(NAME="arsky_mtl")
{
TEXTURE {"arsky_scr_tex"}
EMISSIVE {0.8, 0.8, 0.9}
RAMP {"sky"}
}
MATERIAL(NAME="dsky_mtl")
{
TEXTURE {"dsky_scr_tex"}
AMBIENT {0.3, 0.5, 1}
DIFFUSE {0.3, 0.5, 1}
RAMP {"sky"}
}
MATERIAL(NAME="litered_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
DIFFUSE {1, 0, 0}
EMISSIVE {1, 0, 0}
}
MATERIAL(NAME="liteyel_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
DIFFUSE {1, 0.568746, 0}
EMISSIVE {1, 1, 0}
}
MATERIAL(NAME="liteblu_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
DIFFUSE {0, 0.157982, 1}
EMISSIVE {0, 0, 1}
}
MATERIAL(NAME="litegrn_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
DIFFUSE {0.0262, 0.573328, 0}
EMISSIVE {0, 1, 0}
}
MATERIAL(NAME="britelite_mtl";SPECIAL=" IMMUNE 1 \0x00")
{
EMISSIVE {1, 1, 1}
}