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>
VPX device — DOSBox-X integration
Our original source for the emulated Division VPX link adapter. Kept here under
version control because the DOSBox-X source tree itself
(emulator/src/, ~490 MB) is git-ignored.
vpxlog.cpp— Phase 1 logging device. Impersonates the INMOS C012 link adapter at I/O base0x150, answers status reads so the game keeps transmitting, and logs every access to$VPXLOG. (Phase 2 will grow this into a responding transputer-monitor + i860-loader + frame-stream renderer, or fork into a separatevpx.cpp.)
Applying to a DOSBox-X source checkout
Tested against DOSBox-X v2026.06.02, MSYS2 mingw64.
- Copy the device in:
cp emulator/vpx-device/vpxlog.cpp emulator/src/src/hardware/vpxlog.cpp - Add it to the hardware build — in
src/src/hardware/Makefile.am, appendvpxlog.cpptolibhardware_a_SOURCES(we inserted it afterglide.cpp). - Call the init — in
src/src/gui/sdlmain.cpp, declarevoid VPXLOG_Init();next to the other*_Init()prototypes and callVPXLOG_Init();right afterGLIDE_Init();in the machine bring-up sequence. - Build:
Output:
cd emulator/src ./build-mingw-sdl2 --enable-debug=heavysrc/src/dosbox-x.exe.
Running
set VPXLOG=C:\VWE\TeslaRel410\emulator\vpxlog.txt
emulator\src\src\dosbox-x.exe -conf emulator\capture.conf
python emulator\analyze_capture.py
With VPXLOG unset the device is inert and the build behaves like stock
DOSBox-X.