Files
TeslaRel410/emulator/vpx-device
CydandClaude Fable 5 f236d15d51 Phase 2 progress: boot handshake + i860 download solved; FIFO path mapped
The VPX responder device now drives production BattleTech v4.10
through the full transputer/i860 boot, far past the Phase 1 wall:

- iserver boot handshake solved: feeds 3 well-formed 'version' (tag 42)
  iserver requests, satisfying startup_handshake()'s 3 transactions.
- i860 download solved: parses the outbound framed renderer messages
  (vr_860args/code/data/bss) and absorbs them, staying byte-aligned.
- echo-action reply model validated against board source
  (VRENDER/VR_REMOT.C reply() echoes the received action); device
  tracks and echoes the last outbound action generally.

Remaining sub-protocol identified and characterized: after i860 boot
the host switches to a FIFO fast path (OUTSW.ASM: 0x40 tag + REP OUTSW
16-bit words to FIFO port 0x154/0x155, gated by ok_to_fifo at 0x160).
The current build stops at velocirender_sync because the device only
implements the slow byte path. PHASE2-PROGRESS.md documents the exact
next steps (FIFO transport + render loop -> Phase 3 OpenGL backend).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:18:45 -05:00
..

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.