The VDB is the ISA card that fans the PC's Cirrus Logic framebuffer to the six secondary cockpit displays (5 mono + 1 color), dividing the pixel clock. From the driver (CODE/RP/MUNGA_L4/L4SVGA16.ASM, L4VB16.CPP; "Adam's port decoder design" -- Adam G., VWE hardware): 0x300/0x308/0x310 three VGA-DAC-style palette groups 0x31A / 0x319 splitter high-color clock divider ON / OFF New emulated VDB device in vpxlog.cpp at I/O 0x300-0x31A (active when logging, disable with VDB=0): decodes palette write-address/data/mask/read-address and the clock strobes, recording palette contents + splitter state so the six- display encoding can be decoded later. Validated: with gauges enabled (gauge.conf, setenv arg4=g) the game issues "splitter clock ON (0x31A)" -> captured. The board is write-only (game never reads it, per driver + owner), so its absence is not the crash. Crash diagnosis (BTL4OPT.EXE CODE+0x123B): the faulting routine is a heap free() with boundary-tag coalescing; it was handed a garbage block pointer (value 2). Symptom of upstream corruption, reached only when the RIO is in sync and the sim advances. HISTORY.md gains a "Cockpit display hardware -- the VDB" section with the attribution. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
186 lines
9.8 KiB
Markdown
186 lines
9.8 KiB
Markdown
# Historical Notes — the "Glaze" Developer Drive (sda4)
|
||
|
||
Alongside this release tree, a dump of a developer's hard drive was recovered
|
||
(kept locally as `sda4/`, excluded from this repository by `.gitignore` due to
|
||
size and mixed provenance — ~20,000 files, ~403 MB). This document records
|
||
what was found on it, because it fills in most of the story around the code
|
||
in this repository.
|
||
|
||
## The machine
|
||
|
||
The drive is the boot disk of a workstation named **Glaze** belonging to
|
||
**Dave**, a Virtual World Entertainment developer (his working directories are
|
||
`BTDAVE`, `RPDAVE`, `STDAVE`, `HPDAVE`). File dates show the machine in active
|
||
use from mid-1994 to at least September 1999.
|
||
|
||
- **OS:** Novell DOS 7 (the same OS the pod machines ran), with a boot menu
|
||
selecting Windows NT client networking, Personal NetWare, none, or a
|
||
minimal configuration.
|
||
- **Editor:** Brief, with a heavily customized macro setup.
|
||
- **Source control:** PVCS tools are installed (`PVCS/`), but no version
|
||
archives are on the drive — the repository lived on a server.
|
||
- **Tools:** Deluxe Paint, PKZip, Norton utilities, KA9Q NOS and NCSA
|
||
Telnet for TCP/IP, LightWave and SGI image files in transit through
|
||
`TEMP/` and `CONVERT/` (the art conversion pipeline workspace).
|
||
|
||
## Pod lab infrastructure (VGL_LABS)
|
||
|
||
`VGL_LABS/` holds the office pod lab's deployment system ("VGL" = Virtual
|
||
Geographic League, VWE's fiction). Pods booted via `BOOTPOD.BAT`, pulled
|
||
game builds from the server share **`\\vgl_code\podbay`**, and each developer
|
||
had a named update script: Chris, Gabe, Edo, Joanna, Jordan, Milo, Kiwi,
|
||
Shroom, Splotch, Bernoulli, and Golden (the golden/release build, default
|
||
game BT). The boot configuration documents the pod peripherals: Thrustmaster
|
||
controls, a 640x480x16 gauge display, a plasma display on COM2, intercom,
|
||
and SVGA-or-NTSC main video output.
|
||
|
||
Dave's machine could itself boot as a pod — its `AUTOEXEC.BAT` ends by
|
||
calling `c:\vgl_labs\thispod\bootpod.bat`.
|
||
|
||
## Division Ltd. material
|
||
|
||
The drive contains far more from **Division Ltd.** (the UK VR company that
|
||
supplied the main-display graphics hardware and the dVS/DPL libraries) than
|
||
the compiled SDK in this repository:
|
||
|
||
- **`DPL3/` and `DPL3RLS/`** — the DPL library in C source form, and under
|
||
`DPL3/VRENDER/` the **renderer source itself**: C and Intel **i860
|
||
assembly**, with a `PXPL5SUP/` directory (Pixel-Planes 5 support — the
|
||
UNC research architecture Division's pixel-pipeline hardware descended
|
||
from), scan-converter/DMA-engine/texture-engine code, and design notes
|
||
(`DMA.TXT` describes the tile-based frame rendering loop).
|
||
- **`VREND/`** — dated renderer drops from October 1995 through June 1996,
|
||
showing Division shipping VWE renderer updates roughly monthly.
|
||
- **`DVSTOOLS/`** — the full BGF geometry tool suite (`BGF*.EXE`, `GLOMM`,
|
||
`IMG2VTX`, …).
|
||
- **`BIN/PHILS/`** — a Division engineer's personal toolkit that came along
|
||
with the SDK/support drops: i860 cross-tools (`ASMPP5`, `NM860`,
|
||
`RUN860.BAT`, `ISERVER`), Division format converters (PAZ/VIZ/BIZ/SVT/MAZ),
|
||
Pegasus Mail, Division office admin docs, and internal Division email from
|
||
June 1993 (via `division.demon.co.uk`, discussing SIGGRAPH datasheets).
|
||
The `dave@division.com` appearing in that email is a different,
|
||
coincidental Dave.
|
||
- **`PROBLEMS/FLICKER/`** — a minimal repro case for a rendering bug, with
|
||
the conclusion: *"The problem disappeared when the same geometry was built
|
||
without smoothing."*
|
||
|
||
## Cockpit display hardware — the VDB (VWE video splitter board)
|
||
|
||
Each cockpit drives **seven displays**. The **main** out-the-window view comes
|
||
straight off the Division VPX card's VGA output. The other six — **five
|
||
monochrome + one color** instrument/secondary displays — are fanned out by a
|
||
VWE-designed ISA card, the **VDB (Video Distribution Board)**, also called the
|
||
**"LBE4 video splitter board"** in the driver source.
|
||
|
||
The VDB taps the PC's basic (Cirrus Logic) VGA output off the **feature
|
||
connector** via ribbon cable and divides that single 640×480×16 framebuffer to
|
||
the six monitors by dividing the pixel clock. The driver
|
||
(`CODE/RP/MUNGA_L4/L4SVGA16.ASM` and `L4VB16.CPP`, class `SVGA16`) shows its
|
||
ISA register map, credited in a source comment to **"Adam's port decoder
|
||
design"** — **Adam G.**, a VWE hardware engineer:
|
||
|
||
- `0x300 / 0x308 / 0x310` — three palette register groups (VGA-DAC-style:
|
||
write-address / data / pixel-mask / read-address), one per display group so
|
||
the mono and color displays get their own color maps.
|
||
- `0x31A` — write enables the splitter's high-color clock divider
|
||
(`VWE_HC_ON`); `0x319` — write disables it (`VWE_HC_OFF`).
|
||
|
||
The board is **write-only** — the game never reads it; it loads palettes and
|
||
flips the clock divider on with a single `out`, then renders the combined
|
||
framebuffer normally and the VDB splits it passively in hardware. An emulated
|
||
VDB device (I/O 0x300–0x31A) in the DOSBox-X fork records the palette contents
|
||
and clock state so this six-display encoding can be decoded later; see
|
||
`emulator/` and `emulator/RIO-NOTES.md`.
|
||
|
||
## The shipped games, in runnable form
|
||
|
||
`BTLIVE/`, `BTRAVINE/`, `RPLIVE/`, and `RPDAVE/` are complete, runnable game
|
||
installs — including the compiled executables this repository lacks:
|
||
`NETNUB.EXE`, `BTL4TOOL.EXE`, `BTL4OPT.EXE`, `MECHBLD.EXE`, the 32-bit DOS
|
||
runtime (`32RTM`/`DOS4GW`), and HMI audio drivers, alongside all resources.
|
||
|
||
`BTRAVINE/` is late-era work on the Ravine arena (present in this repo as the
|
||
`RAV`/`RAV1` environments), and its build log names the mech roster being
|
||
compiled — Avatar, Black Hawk, Loki — confirming that this repo's `BT` vs
|
||
`BT3025` content split is a Clan-era vs 3025-era roster split.
|
||
|
||
## Unreleased projects
|
||
|
||
The most historically significant material on the drive:
|
||
|
||
### Star Trek prototype (`STDAVE/`)
|
||
A working Division scene (`TREK.SCN`) running on the Tesla renderer: layered
|
||
starfield splines, an **Enterprise-D model** (`EPRISED.VGF`), and **Klingon
|
||
ship models and textures** (`KLNGN*.VGF`, `KLNG1–6.TGA`). A VWE Star Trek pod
|
||
experience that never shipped. These scenes have been restored and can be
|
||
viewed in a browser — see [restoration/](restoration/).
|
||
|
||
### Hull Pressure (`HPDAVE/`, August 1995)
|
||
A **submarine game** prototype: sharks, submarines, Atlantis geometry, fish
|
||
schools, and sea-movement splines, preserved both loose and in `HPDAVE.ZIP`.
|
||
|
||
### Renegade Legion (`RL/`)
|
||
Models for a pod adaptation of **FASA's Renegade Legion** space-combat
|
||
property (a natural companion license to BattleTech): the Cheetah, Penetrator,
|
||
Spiculum, and Cingulum ship classes, plus space stations, shield generators,
|
||
and cargo/medic/gunboat transports.
|
||
|
||
### Starship Troopers → DisneyQuest "Invasion!" (`TEMP/STARSH~1.DOC`, January 1997)
|
||
A complete design document for a 4-player location-based **Starship Troopers**
|
||
attraction, written by **FASA Interactive** for **WDI (Walt Disney
|
||
Imagineering)** — "Optics system and IG are as specified by WDI." Players are
|
||
colonists driving a 4-legged converted mining crawler (one driver with a
|
||
force-feedback yoke, three gunners with force-feedback joysticks, hull
|
||
electrification device) into a bug nest to kill the brain bug, escorted by
|
||
computer-controlled power-armored troopers. This pitch evolved — with the
|
||
licensed bugs replaced by original aliens — into **"Invasion! An
|
||
ExtraTERRORestrial Alien Encounter" at DisneyQuest**, which kept the same
|
||
driver-plus-three-gunners walker-vehicle design.
|
||
|
||
### Early Division demos (August 1994)
|
||
Batch files at the drive root fly Division demo scenes — `RAPTOR`, `THOR`,
|
||
`ROCKY`, `MULES`, an F-15, a jeep-tank — using Division's `FLYK.EXE` scene
|
||
flyer. These predate the Tesla games' completion and show the DPL evaluation
|
||
period.
|
||
|
||
## Can the games be rebuilt from this repository?
|
||
|
||
Short answer: **not as it stands.** Cross-referencing the makefiles against
|
||
the surviving sources:
|
||
|
||
- **BattleTech:** 33 of the 49 objects `BT.MAK`/`BTL4.MAK` build have **no
|
||
source file** in the tree — including the core of the game: `MECH.CPP`
|
||
through `MECH4.CPP`, `MECHSUB`, `MECHDMG`, `DMGTABLE`, `BTPLAYER`, `HUD`,
|
||
`TORSO`, `GYRO`, `MYOMERS`, `SENSOR`, and nearly the whole BT_L4 pod app
|
||
layer. Only the weapons (PPC, Gauss, missiles), teams, missions, and
|
||
console survive.
|
||
- **Red Planet:** 22 of 29 objects are missing sources — including `VTV.CPP`
|
||
(the player vehicle), `RPPLAYER`, `WEAPSYS`, all pickups, and the RPL4 app
|
||
layer.
|
||
- For every missing module the **header** survives, but not the
|
||
implementation. No compiled `.obj` substitutes exist anywhere (repo or
|
||
drive), and the drive's ZIP archives contain no source.
|
||
- Also missing: `make.cfg` (included by every makefile) and the makefiles
|
||
for the MUNGA/MUNGA_L4 libraries themselves — both reconstructable from
|
||
the surviving `OPT.MAK`/`D0`–`D3S.MAK` configuration makefiles.
|
||
|
||
What **could** plausibly be rebuilt: the **MUNGA engine library** (the RP
|
||
tree's copy is complete — 351 files, all sources present, with compiled
|
||
objects in `RP/MUNGA/opt/` to verify against), MUNGA_L4, and NetNub. All
|
||
third-party dependencies are present as binaries (`LIBDPL.LIB`,
|
||
`WATTCPLG.LIB`, SOS libraries, `C0X32.OBJ`). The toolchain (Borland C++ 5.0
|
||
+ TASM32) is not included but is obtainable, and builds would run under
|
||
DOSBox or a VM. A rebuilt game would still need Division VPX hardware (or a
|
||
shim for the `VREND*.BTL` renderer module interface) to display anything.
|
||
|
||
This release tree appears to be a deliberately partial cut; the full source
|
||
lived on the `\\vgl_code` server and in PVCS. The realistic preservation
|
||
paths are:
|
||
|
||
1. **Find more media** — anything from the `vgl_code` server, PVCS archive
|
||
directories, or other developers' drives.
|
||
2. **Preserve the compiled builds** — `BTLIVE/`/`RPLIVE/` on the Glaze drive
|
||
are complete installs and need no compilation.
|
||
3. **Reimplement the missing modules** against the surviving headers — every
|
||
interface is documented, but this is a rewrite project, not a build.
|