Files
CydandClaude Opus 4.8 47fe174c6e Add VDB (VWE LBE4 video splitter) device + fault disassembly findings
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>
2026-07-03 15:55:00 -05:00

186 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 0x3000x31A) 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`, `KLNG16.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.