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>
489 lines
8.0 KiB
Plaintext
489 lines
8.0 KiB
Plaintext
DIV-VIZ2
|
|
HEADER
|
|
(
|
|
VERSION=2:08;
|
|
DATE=19:5:96;
|
|
TIME=18:46;
|
|
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.02 0.01 \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.02 0.02 \0x00")
|
|
{
|
|
MAP {"bintA"}
|
|
MAGNIFY {BILINEAR}
|
|
}
|
|
|
|
TEXTURE(NAME="dsky_scr_tex";SPECIAL=" SCROLL 0 0 0.02 0.02 \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.2, 0.2, 0.8, 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"}
|
|
DIFFUSE {1, 0.054832, 0}
|
|
EMISSIVE {0.7, 0.4, 0.2}
|
|
}
|
|
|
|
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 {"softer"}
|
|
}
|
|
|
|
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.7, 0.7, 0.9}
|
|
RAMP {"sky"}
|
|
}
|
|
|
|
MATERIAL(NAME="dsky_mtl")
|
|
{
|
|
TEXTURE {"arsky_scr_tex"}
|
|
DIFFUSE {0, 0, .2}
|
|
AMBIENT {0.0, 0.0, 0.2}
|
|
RAMP {"sky"}
|
|
}
|
|
|
|
MATERIAL(NAME="litered_mtl";SPECIAL=" IMMUNE 0 \0x00")
|
|
{
|
|
DIFFUSE {1, 0, 0}
|
|
EMISSIVE {1, 0, 0}
|
|
}
|
|
|
|
MATERIAL(NAME="liteyel_mtl";SPECIAL=" IMMUNE 0 \0x00")
|
|
{
|
|
DIFFUSE {1, 0.568746, 0}
|
|
EMISSIVE {1, 1, 0}
|
|
}
|
|
|
|
MATERIAL(NAME="liteblu_mtl";SPECIAL=" IMMUNE 0 \0x00")
|
|
{
|
|
DIFFUSE {0, 0.157982, 1}
|
|
EMISSIVE {0, 0, 1}
|
|
}
|
|
|
|
MATERIAL(NAME="litegrn_mtl";SPECIAL=" IMMUNE 0 \0x00")
|
|
{
|
|
DIFFUSE {0.0262, 0.573328, 0}
|
|
EMISSIVE {0, 1, 0}
|
|
}
|
|
|
|
MATERIAL(NAME="britelite_mtl";SPECIAL=" IMMUNE 0 \0x00")
|
|
{
|
|
EMISSIVE {1, 1, 1}
|
|
}
|
|
|
|
|