Built DOSBox-X from source with a custom VPX link-adapter logging device (vpx-device/vpxlog.cpp) and captured the game's outbound boot sequence. Findings: - Register map confirmed against LINKIO.C: outputData 0x151, outputStatus 0x153 (polled bit0), resetRoot 0x160, analyseRoot 0x161. - Reset preamble captured exactly (analyse=0, reset 0->1->0 + status inits). - The game streams 85298 bytes to outputData that are BYTE-FOR-BYTE identical to VRENDMON.BTL; first byte 0xF0 = transputer boot-from-link primary-bootstrap length. Protocol stage 1 (reset + monitor download) fully characterized; no hidden bulk/interrupt path. - Production cockpit dump ALPHA_1 added (git-ignored): its BT is v1.1.0.6 with a VRENDMON.BTL byte-identical to the captured stream, so this result reflects the exact cockpit software. ALPHA_1 is the reference image going forward (carries RP + production pod/network boot chain). Adds analyze_capture.py, capture.conf, PHASE1-RESULTS.md. DOSBox-X source tree and capture artifacts are git-ignored. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
# 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 base `0x150`, 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 separate `vpx.cpp`.)
|
|
|
|
## Applying to a DOSBox-X source checkout
|
|
|
|
Tested against DOSBox-X `v2026.06.02`, MSYS2 mingw64.
|
|
|
|
1. Copy the device in:
|
|
```
|
|
cp emulator/vpx-device/vpxlog.cpp emulator/src/src/hardware/vpxlog.cpp
|
|
```
|
|
2. Add it to the hardware build — in `src/src/hardware/Makefile.am`, append
|
|
`vpxlog.cpp` to `libhardware_a_SOURCES` (we inserted it after `glide.cpp`).
|
|
3. Call the init — in `src/src/gui/sdlmain.cpp`, declare `void VPXLOG_Init();`
|
|
next to the other `*_Init()` prototypes and call `VPXLOG_Init();` right after
|
|
`GLIDE_Init();` in the machine bring-up sequence.
|
|
4. Build:
|
|
```
|
|
cd emulator/src
|
|
./build-mingw-sdl2 --enable-debug=heavy
|
|
```
|
|
Output: `src/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.
|