processes the full wire boot incl. the downloaded PAZ/sfx module ISA fixes, all derived from the toolchain's own .S<->.O pairs (AS860.ZIP: OPTFLOAT/TRISTRIP/ZBUF32, plus DNC.O) and the firmware's linked COFF header: - DATA_BASE = 0x1000 DEFINITIVE: VREND.MNG carries its original COFF header in the file tail (.data vaddr 0x1000, .bss 0x1f940, entry 0xf0400000). - Integer loads: even opcodes are register-indexed (EA = src2 + src1); op 4/5 size flag = instr bit0 (0 = ld.s 16-bit, 1 = ld.l 32-bit); ld.b/ld.s sign-extend. - Integer stores: st.s/st.l selected by offset bit0, same split-offset rule. - FP loads/stores: FP register lives in the DEST field for both fld and fst (fst does NOT use the integer split-store encoding); flag bits: bit0 = auto-increment (base <- EA), bit1 1=.l/0=.d, bit2 = .q; .d/.q span register pairs/quads. ~450 fld.d + ~300 fst.d were previously read/written 32-bit. - bla (op 0x2d, was misdecoded as shrd): branch-on-LCC-and-add with the sign-dependent LCC rule (src1<0 -> signed sum >= 0), so spent countdown loops terminate. 335 bla instructions in the firmware. - CORE ESCAPE (op 0x13): sub-op 1 = lock, 2 = calli, 7 = unlock. Previously everything decoded as calli, so every spinlock acquire jumped to address 0 -- this was the phantom "exit stub" behind most earlier derails. - f2b: IEEE overflow -> +/-inf instead of raising. emu_main.py (new): runs the firmware's OWN main() (0xf0403f10) and feeds real wire captures through a hooked dN_receive, so init/do_init/dispatch/handlers all execute authentically. Provides the transputer-monitor environment (processor id, DRAM region descriptors in the shared control block, sbrk/ shared-block seed slots) and hooks only the link primitives (bla busy-wait, dN_mynode/dN_nodes/dN_receive/dN_send, putchar path, spinlocks, page allocator + virt->phys translator pending Tier-2 VRENDMON). KEY DISCOVERY: the capture's args860/code860/data860/bss860 preamble is the host DOWNLOADING an additional i860 module (the PAZ/sfx renderer layer, banner "i860 50MHz") which installs the runtime handler tables and system objects. Feeding it through the firmware's own handlers, the module loads and makes the first IGC board-register writes. State: 834+ wire commands processed (module download + init + create); first draw_scene sits at command 1568. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tesla Release 4.10 — Tesla:BattleTech & Tesla:Red Planet
Source code and game content for Tesla:BattleTech and Tesla:Red Planet, the two games that ran on the Tesla-generation simulator cockpits built by Virtual World Entertainment, Inc. (VWE). Source file headers are dated 1994–1996; this tree corresponds to release 4.10 of the Tesla software.
This repository is an archival snapshot. The tree is preserved byte-for-byte as
found (see .gitattributes — no line-ending conversion is applied).
See emulator/PLAN.md for the implementation plan to run these games on the surviving cockpits' Windows 10 computers via a VPX-board HLE device in DOSBox-X, with the cockpit RIO (COM1) and plasma display (COM2) passed through to the game's original drivers.
See HISTORY.md for findings from a recovered VWE developer hard drive that accompanies this tree (excluded from the repo), including Division renderer source, runnable game builds, unreleased prototypes (Star Trek, Hull Pressure, Renegade Legion, and the Starship Troopers pitch that became DisneyQuest's "Invasion!"), and an analysis of whether these games can be rebuilt from the sources in this repository (summary: the engine can, the games cannot — most game-logic sources are absent from this cut).
Target hardware
Each Tesla cockpit was driven by a server-class Pentium Pro machine running Novell DOS. Graphics were split across two adapters:
- The main (out-the-window) display was rendered by one of the first
pixel-pipeline 3D accelerator cards ever made, driven through Division Ltd.'s
dVS/DPL libraries (
libDPL— DPL, dsys, dvs, and the VPX headers; Division copyright 1995). - An S3 video adapter drove the other six cockpit displays (instrument
and gauge screens — see the
GAUGEcontent directories and thePCPIC.INC/L4GAU*gauge code).
Other hardware/OS interfaces:
- Audio: HMI SOS (Sound Operating System) —
sos/libraries, with variants for Borland (bc4) and Watcom (wc). - Networking: pods were networked over Ethernet using WATTCP (DOS TCP/IP, with BOOTP) via VWE's NetNub layer.
- Input: joystick/pedal/panel I/O in assembly (
JOYSTICK.ASM) and theL4CTRL*control modules.
Toolchain
- Borland C++ 5.0 (
BCC) with TASM32 for assembly — see the.MAKmakefiles (original build tree lived atD:\TESLA_RP\andD:\BC5\). - Precompiled-header discipline throughout (
.CSMheaders,#pragma hdrstop). VSSVER.SCC/MSSCCPRJ.SCCfiles are remnants of the original Visual SourceSafe source control.- File extensions:
.CPP/.HPPC++ source/headers,.TCP/.THPC++ template source/headers,.MAKBorland makefiles.
Repository layout
ARTTOOLS/ (empty placeholder — art tools were not included in this snapshot)
BORLAND/ (empty placeholder — compiler was not included in this snapshot)
CODE/ Game and engine source (~200k lines of C++/asm)
CONTENT/ Game data: models, animations, audio, maps, textures, gauges
HEADOFF/ Head/camera offset calibration configs for the cockpit displays
CODE/
Both games share the same architecture: a portable simulation engine (MUNGA, VWE's in-house engine) plus a hardware layer (MUNGA_L4, the "L4" Tesla pod platform layer), with game-specific code and a game-specific L4 layer on top.
CODE/BT/ Tesla:BattleTech
BT/ Game logic: mechs, weapons (PPC, Gauss, missiles),
damage tables, teams, missions, scenario rules
BT_L4/ BattleTech pod application layer (app modes, arena,
radar, playback, version)
MUNGA/ Engine bricks: math (matrices, angles, splines),
containers, file streams, audio manager, events
MUNGA_L4/ Pod hardware layer: video renderer manager, keyboard,
mouse, audio hardware, warehouse (resource loading)
LIBDPL/ Division Ltd. dVS/DPL graphics library (headers +
LIBDPL.LIB + VREND*.BTL renderer modules)
NETNUB/ WATTCP-based pod networking (headers + WATTCPLG.LIB)
SOS/ HMI Sound Operating System libraries + drivers
CODE/RP/ Tesla:Red Planet (same structure)
RP/ Game logic: VTV (hover racer) power/subsystems,
pickups (booster, blocker, crusher, thruster)
RP_L4/ Red Planet pod application layer
MUNGA/ Engine (fullest copy — 351 files incl. all .CPP)
MUNGA_L4/ Pod hardware layer (fullest copy, incl. JOYSTICK.ASM)
libDPL/, NetNub/, sos/ as above
*/opt/ Compiled Borland C++ 5.0 object files from the
original build (preserved as found)
Note: the BT copies of MUNGA/MUNGA_L4 are partial (69/68 files) while the RP copies are complete (351/231 files) — the BT tree appears to hold only the files that diverged from the shared engine.
CONTENT/
CONTENT/BT/ Tesla:BattleTech content
CONTENT/BT3025/ Parallel BattleTech content set (3025-era variant;
mostly identical to BT/ with a different mech roster)
CONTENT/RP/ Tesla:Red Planet content
Per-game content directories:
| Dir | Contents |
|---|---|
MODELS |
.MOD/.SUB/.DMG/.TBL — vehicle/mech models, subsystems, damage tables |
ANIMS |
.ANI — animations (BT only) |
AUDIO |
.MID MIDI music, .SCP audio scripts, .BNK/.BLD banks |
GAUGE |
.GIM — gauge images for the six S3-driven cockpit displays |
MAPS |
.MAP/.ZNE — arena/terrain maps and zones |
SOLIDS |
.SLD — collision solids |
VIDEO |
Division renderer data: GEO/ geometry, MAT/ materials, and TEX/ textures per environment (ARENA, DAY, NIGHT, DESERT, POLAR, CAVERN, …), .DZM skins, .BMF/.BGF binary geometry, BUILD/ sources |
SCENES |
Scene definitions (RP only) |
BTCAM |
Camera batch setups (BT only) |
DIVISION.SAV subdirectories inside VIDEO/ are backup saves written by
Division's tools. MTMCDAI.SYS (Mitsumi) and TAISATAP.SYS are DOS CD-ROM
device drivers used on the pod machines.
HEADOFF/
INI-style calibration files (.XST/.CAM/.BAK) defining viewing extents and
camera offsets ("head offset") for the cockpit's main display, including a
[LAB_ONLY] configuration.
Provenance
- Copyright (C) 1994–1996 Virtual World Entertainment, Inc. All rights reserved worldwide. Original headers mark the source as proprietary and confidential.
- Third-party components retain their own copyrights: Division Ltd. (dVS/DPL), Human Machine Interfaces (SOS), Erick Engelke / University of Waterloo (WATTCP).